This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
dydaktyka:cprog:2015:arrays-solutions [2015/12/07 16:55] pkleczek [Zadanie MAX1D] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Tablice – rozwiązania ====== | ||
- | Laboratorium: **[[dydaktyka:cprog:2015:arrays|klik]]** | ||
- | |||
- | ===== Zadanie SUM1D ===== | ||
- | |||
- | <code c> | ||
- | #include <stdio.h> | ||
- | #include <stdlib.h> | ||
- | |||
- | /* skorzystaj ze stalej symbolicznej do przechowywania rozmiaru tablicy */ | ||
- | #define N 4 | ||
- | |||
- | int main() | ||
- | { | ||
- | double tab[N] = {0.3, 0.5, 1.0, 3}; | ||
- | double suma = 0; /* zwroc uwage na typ zmiennej `suma`! */ | ||
- | int i; | ||
- | |||
- | for(i = 0; i < N; i++) { | ||
- | suma += tab[i]; | ||
- | } | ||
- | |||
- | printf("Suma wynosi %f\n", suma); | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie MAX1D ===== | ||
- | |||
- | 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}''). | ||
- | |||
- | <code c> | ||
- | #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; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie SUM2D ===== | ||
- | |||
- | <code c> | ||
- | #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; | ||
- | } | ||
- | </code> |