This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
dydaktyka:cprog:2016:arrays-adv-solutions [2017/01/02 08:16] pkleczek [Zadanie SUM2D-1] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~NOTRANS~~ | ||
- | ====== Tablice (zaawansowane) – rozwiązania ====== | ||
- | |||
- | Laboratorium: **[[dydaktyka:cprog:2016:arrays-adv|klik]]** | ||
- | |||
- | ===== Zadanie SUM2D-1 ===== | ||
- | |||
- | <code c sum2d-1.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; | ||
- | |||
- | /* Zainicjalizuj tablicę */ | ||
- | for(i = 0; i < N; i++) { | ||
- | for (j = 0; j < M; j++) { | ||
- | tab[i][j] = i + 2*j; | ||
- | } | ||
- | } | ||
- | |||
- | /* Oblicz sumę elementów */ | ||
- | 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> | ||
- | |||
- | ===== Zadanie SUM2D-2 ===== | ||
- | |||
- | <code c sum2d-2.c> | ||
- | #include <stdio.h> | ||
- | #include <stdlib.h> | ||
- | |||
- | #define N 3 | ||
- | #define M 4 | ||
- | |||
- | 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] = rand() % 10; | ||
- | } | ||
- | } | ||
- | |||
- | /* Wyświetlanie tablicy 2D: | ||
- | - wiersz po wierszu | ||
- | - po kolei elementy w ramach danego wiersza | ||
- | - znak nowej linii po wyświetleniu każdego wiersza | ||
- | */ | ||
- | for(i = 0; i < N; i++) { | ||
- | for (j = 0; j < M; j++) { | ||
- | printf("%d ", tab[i][j]); | ||
- | } | ||
- | printf("\n"); | ||
- | } | ||
- | |||
- | printf("\n"); | ||
- | |||
- | /* Obliczanie sumy w wierszach */ | ||
- | for(i = 0; i < N; i++) { | ||
- | suma = 0; | ||
- | |||
- | for (j = 0; j < M; j++) { | ||
- | suma += tab[i][j]; | ||
- | } | ||
- | printf("Suma w wierszu #%d: %d\n", i, suma); | ||
- | } | ||
- | |||
- | printf("\n"); | ||
- | |||
- | /* Obliczanie sumy w kolumnach */ | ||
- | for(j = 0; j < M; j++) { | ||
- | suma = 0; | ||
- | |||
- | for (i = 0; i < N; i++) { | ||
- | suma += tab[i][j]; | ||
- | } | ||
- | printf("Suma w kolumnie #%d: %d\n", j, suma); | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie IDL ===== | ||
- | |||
- | <code c idl.c> | ||
- | #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; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie PAL ===== | ||
- | |||
- | W poniższym rozwiązaniu porównujemy paramy litery: pierwszą z ostatnią, drugą z przedostatnią itd. \\ | ||
- | Zgodnie z definicją wyraz uznamy za palindrom jeśli wszystkie pary liter są zgodne bądź -- równoważnie -- jeśli nie zawiera ani jednej pary różniących się od siebie liter. (W naszym przypadku prościej sprawdzić ilość różnych par.) | ||
- | |||
- | <code c pal.c> | ||
- | #include <stdio.h> | ||
- | #include <stdlib.h> | ||
- | #include <string.h> | ||
- | |||
- | int main() { | ||
- | char str[] = "kajak"; | ||
- | int rozne_pary = 0; | ||
- | int i; | ||
- | |||
- | for (i = 0; i < strlen(str)/2; i++) { | ||
- | if (str[i] != str[strlen(str) - 1 - i]) { | ||
- | rozne_pary++; | ||
- | } | ||
- | } | ||
- | |||
- | if (rozne_pary == 0) { | ||
- | printf("Wyraz \"%s\" jest palindromem.\n", str); | ||
- | } else { | ||
- | printf("Wyraz \"%s\" nie jest palindromem.\n", str); | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> |