User Tools

Site Tools


dydaktyka:cprog:2016:arrays-solutions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dydaktyka:cprog:2016:arrays-solutions [2017/01/02 07:56]
pkleczek
— (current)
Line 1: Line 1:
-====== Tablice – rozwiązania ====== 
  
-Laboratorium:​ **[[dydaktyka:​cprog:​2016:​arrays|klik]]** 
- 
-===== Zadanie SUM1D ===== 
- 
-<code c sum1d.c> 
-#include <​stdio.h>​ 
-#include <​stdlib.h>​ 
- 
-int main() { 
-    double tab[4] = {0.3, 0.5, 1.0, 3}; 
-    double suma = 0;    /* zwroc uwage na typ zmiennej `suma`! */ 
-    int i; 
- 
-    for(i = 0; i < 4; 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 pojawia się wtedy, gdy za największą dotychczasową znalezioną wartość przyjmiemy wartość większą od wartości największego elementu tablicy (np. gdybyśmy przyjęli początkowo ''​max = 0'',​ a w tablicy mieli wartości ''​{-1,​ -7, -2}''​). 
- 
-<code c max1d.c> 
-#include <​stdio.h>​ 
-#include <​stdlib.h>​ 
- 
-int main() { 
-    int tab[5] = {1, 5, 0, 9, 3}; 
-    int max; /* wartosc najwiekszego elementu tablicy */ 
-    int i; 
- 
-    max = tab[0]; 
-    for(i = 0; i < 5; i++) { 
-        if (tab[i] > max) { 
-            max = tab[i]; 
-        } 
-    } 
- 
-    printf("​Maksymalna wartosc: %d\n", max); 
- 
-    return 0; 
-} 
-</​code>​ 
- 
-===== Zadanie RAND-ARR ===== 
- 
-<code c rand-arr.c>​ 
-#include <​stdio.h>​ 
-#include <​stdlib.h>​ 
- 
-int main() { 
-    int tab[10]; 
-    /* Użyj elastycznego określania rozmiaru tablicy. */ 
-    int n = sizeof(tab) / sizeof(tab[0]);​ 
-    int i; 
- 
-    for(i = 0; i < n; i++) { 
-        tab[i] = rand() % 100; 
-    } 
- 
-    for(i = 0; i < n; i++) { 
-        printf("​%d ", tab[i]); 
-    } 
-    printf("​\n"​);​ 
- 
-    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>​ 
- 
-===== Zadanie IDL ===== 
- 
-<code 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 REV ===== 
- 
-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. \\ 
-{{:​dydaktyka:​cprog:​2015:​rev_3.png?​nolink|}} \\ 
-{{:​dydaktyka:​cprog:​2015:​rev_4.png?​nolink|}} 
- 
-<code c> 
-#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; 
-} 
-</​code>​ 
dydaktyka/cprog/2016/arrays-solutions.1483340213.txt.gz · Last modified: 2020/03/25 11:46 (external edit)