This is an old revision of the document!
Laboratorium: klik
Zadanie można rozwiązać w następujący sposób:
Przejdź kolejno przez wszystkie elementy tablicy i dla każdego z nich sprawdź, czy jego wartość jest większa od dotychczas znalezionej wartości maksymalnej.
Jeśli tak, to przyjmij wartość tego elementu jako nową wartość maksymalną.
Jaką wartość przyjąć na samym początku jako maksymalną? Najprościej – dowolną taką, która występuje w tablicy! Nasz algorytm dokona ewentualnie niezbędnej korekty.
Problem pojawiłby się w sytuacji, gdybyśmy z początku wybrali wartość większą od wartości największego elementu tablicy (np. gdybyśmy przyjęli max = 10
, dla tablicy {1, 7, 2}
).
#include <stdio.h> #include <stdlib.h> #define N 5 int main() { int tab[N] = {1, 5, 0, 9, 3}; int max; /* wartosc najwiekszego elementu tablicy */ int i; max = tab[0]; for(i = 0; i < N; i++) { if (tab[i] > max) { max = tab[i]; } } printf("Maksymalna wartosc: %d\n", max); return 0; }
#include <stdio.h> #include <stdlib.h> #define N 5 #define M 8 int main() { int tab[N][M]; int suma = 0; int i, j; for(i = 0; i < N; i++) { for (j = 0; j < M; j++) { tab[i][j] = i + 2*j; } } for(i = 0; i < N; i+=2) { for (j = 0; j < M; j++) { suma += tab[i][j]; } } printf("Suma wynosi %d\n", suma); return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char imie[20]; char nazwisko[30]; printf("Podaj imie i nazwisko: "); scanf("%s %s", imie, nazwisko); printf("Imie : %s (%d)\n", imie, strlen(imie)); printf("Nazwisko : %s (%d)\n", nazwisko, strlen(nazwisko)); return 0; }
Poniższe rysunki pomogą Ci zrozumieć ideę rozwiązania (pary kolorowych strzałek wskazują, które elementy zamieniamy ze sobą miejscem). Zwróć uwagę na ilość dokonywanych zamian w zależności od ilości elementów.
#include <stdio.h> #include <stdlib.h> int main() { int tab[] = {1, 2, 3, 4}; int i; /* W elastyczny (!) sposob wyznacz ilosc elementow tablicy. */ int ilosc_elementow = sizeof(tab) / sizeof(int); /* [1] Odwroc tablice. */ /* i - indeks elementu "od poczatku" */ for(i = 0; i < ilosc_elementow / 2; i++) { /* Pamietaj, ze indeksowanie elementow tablicy zaczyna sie od 0... ...czyli konczy sie na `n-1`! */ int indeks_elementu_od_konca = (ilosc_elementow - 1) - i; int t = tab[indeks_elementu_od_konca]; tab[indeks_elementu_od_konca] = tab[i]; tab[i] = t; } /* [2] Wypisz tablice - element po elemencie. */ for (i = 0; i < ilosc_elementow; i++) { printf("%d ", tab[i]); } return 0; }