User Tools

Site Tools


dydaktyka:cprog:2016:arrays-adv-solutions

This is an old revision of the document!


~~NOTRANS~~

Tablice (zaawansowane) – rozwiązania

Laboratorium: klik

Zadanie SUM2D-1

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;
}

Zadanie SUM2D-2

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;
}

Zadanie IDL

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;
}

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.)

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;
}
dydaktyka/cprog/2016/arrays-adv-solutions.1483341393.txt.gz · Last modified: 2020/03/25 11:46 (external edit)