Stefan Sokołowski, Podstawy programowania
LABORATORIUM 7


Zadanie 0:

Tablica o deklaracji

   T  tab[n];

zawiera n komórek, do których można wpisywać elementy typu T — to może być int, albo double, albo char, albo...   są jeszcze inne możliwości. W takiej tablicy Do pojedynczego elementu tablicy można sięgnąć przez podanie nazwy tablicy oraz indeksu (w nawiasie prostokątnym). Np. taka pętla

   for (i=0; i<20; i++)
   a[i] = 0.0;

powoduje wypełnienie całej tablicy o deklaracji

   double a[20];

zerami; a pętla

   for (i=0; i<100; i++)
   b[i] = a[i];

powoduje skopiowanie zawartości tablicy  a  do tablicy  b ; to działa na przykład (nie wyłącznie!) dla tablic o takich deklaracjach:

   int  a[100], b[100];

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

W poniższym programie
  
  #include<stdio.h>

  int main() {
    int  n, i;
    printf("\n  ODWRACANIE CIAGU LICZB:");
    printf("\n  ile liczb? -- ");  scanf("%i", &n);
    double  w[n];
    printf("  podaj %i liczb rzeczywistych:\n    ", n);
    for (i=0; i<n; i++)  scanf("%lf", &w[i]);
    printf(" ten sam ciag od konca:\n");
              ?   ?   ?   ?   ?   ?   ?   ?   ?
    return 0;
  }
proszę zastąpić znaki zapytania takimi komendami języka C, żeby ten program


Zadanie 1:

Napisać i uruchomić program na dodawanie wektorów dowolnej długości. To znaczy ten program powinien


Zadanie 2:

Napisać i uruchomić program, który wczyta do tablicy n liczb rzeczywistych  a0,a1,a2,...,an−1 ; następnie wyświetli te z nich, które stoją na pozycjach parzystych:  a0,a2,... ; a dopiero dalej te z nich, które stoją na pozycjach nieparzystych:  a1,a3,... .


Zadanie 3:

Napisać i uruchomić program, który wczyta do tablicy n liczb całkowitych, a następnie wyświetli kolejno:


Zadanie 4:

Poniższy program ma ,,rysować'' gwiazdkami wykres danych (oś  x  jest skierowana w dół, a oś  y  w prawo):
  #include<stdio.h>
  #define n 10  // ilosc danych, mozna tutaj zmienic
  
  int main() {
    double dane[n];
    int i,j;
    printf("\nWYKRES %i DANYCH (os  x  wskazuje w dol)\n", n);
    for(i=0; i<n; i++) {
      printf("dane[%i] == ", i);  scanf("%lf", &dane[i]);
    }
    // rysunek:
              ?   ?   ?   ?   ?   ?   ?   ?   ?
    printf("\n");
  
    return 0;
  }
Na przykład dla kolejnych wartości funkcji kwadratowej  f(x) = (x−5)2/2  wykres powinien wyglądać tak:
  WYKRES DANYCH (os  x  wskazuje w dol)
  prosze o 10 liczb rzeczywistych:
    12.5  8.0  4.5  2.0  0.5  0.0  0.5  2.0  4.5  8.0
  
  |            *
  |       *
  |    *
  | *
  |*
  *
  |*
  | *
  |    *
  |       *
Proszę zastąpić znaki zapytania odpowiednim fragmentem kodu w C tak, żeby program istotnie to robił. Oczywiście ma dobrze działać nie tylko dla funkcji kwadratowej, ale dla dowolnego ciągu danych rzeczywistych nieujemnych podanego przez użytkownika.


Zadanie 5:

W programie, stanowiącym rozwiązanie Zad.4, proszę usunąć wczytywanie liczb i zastąpić je fragmentem powodującym, żeby program sam napełniał tablicę  dane  wartościami jakiejś funkcji, której wykres chcemy narysować.

Mnie ten program wyświetlił coś takiego:
  WYKRES DANYCH (os  x  wskazuje w dol)
  |                                      *
  |                                       *
  |                                       *
  |                                      *
  |                                   *
  |                               *
  |                           *
  |                      *
  |                 *
  |            *
  |        *
  |    *
  |  *
  |*
  |*
  |*
  |  *
  |     *
  |         *
  |              *
  |                   *
  |                        *
  |                             *
  |                                 *
  |                                    *
  |                                      *
  |                                       *
  |                                       *
  |                                      *
  |                                   *
  |                                *
Jakiej funkcji użyłem? Proszę wpisać jakiś inny wzór, żeby otrzymać inny rysunek, równie piękny.


Zadanie 6 domowe:

Gdyby można było indeksować tablicę literami zamiast liczbami całkowitymi, łatwo byłoby dla każdego tekstu zrobić badanie częstości występowania w nim liter. Mianowicie gdyby  czest[...]  było tablicą taką jak obok (na rysunku po prawej), to należałoby W C nie można indeksować tablicy wprost literami, ale przeliczenie liter na liczby i odwrotnie jest stosunkowo proste: Ale przed zastosowaniem powyższego wzoru na przeliczenie indeksów z liter na liczby, koniecznie należy sprawdzić, czy wczytany znak na pewno jest literą; dla innych znaków indeks wyjdzie poza tablicą.

Proszę skonstruować program, który będzie wczytywał tekst pisany małymi literami, bez polskich liter z ogonkami, ale za to z literami q, v, i x (czyli niesłusznie nazywanym ,,alfabetem łacińskim'') i wyświetlał zestawienie, ile razy która litera w nim wystąpiła. Tak więc program powinien wyświetlać coś w rodzaju:

wpisane przez użytkownika  →
  TEKST Z MALYCH LITER ZAKONCZONY NIELITERA:
    we shall overcome some day.

  WYSTAPIENIA LITER W POWYZSZYM TEKSCIE:
    a -- 2
    b -- 0
    c -- 1
    d -- 1
    e -- 4
    f -- 0
    g -- 0
    h -- 1
    i -- 0
    j -- 0
    k -- 0
    l -- 2
    m -- 2
    n -- 0
    o -- 3
    p -- 0
    q -- 0
    r -- 1
    s -- 2
    t -- 0
    u -- 0
    v -- 1
    w -- 1
    x -- 0
    y -- 1
    z -- 0


Wskazówka:
Litery i inne znaki należy deklarować przez Ich wczytywanie i wyświetlanie odbywa się przez Wczytywanie znaku z pominięciem spacji i inych ,,znaków białych'' można zorganizować pętlą
  
  do {
    scanf("%c", &znak);
  } while (isspace(znak));
  


Do mojej głównej witrynki

Ostatnia modyfikacja: 13 listopada 2024