Lab 02 - Pętle o tablice
Pytania
- W jaki sposób definiujemy tablice?
- Jak odczytać wartość z tablicy?
- Jak zmodyfikować wartość tablicy?
- Czym są tablice wielowymiarowe?
- Jak zbudowana jest pętla for?
- Jak zbudowana jest pętla while/do while?
Przykłady
Defioniowanie tablic jedno i wielowymiarowych:
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
int main(int argc, char const *argv[])
{
int array[3]; // Deklaracja tablicy o wielkości 3
array[0] = 1; // Ustawienie kolejnych wartości w tablicy
array[1] = 2;
array[2] = 3;
array[3] = 4; // Zachowanie "Undefined" ponieważ wykraczamy poza zakres tablicy. Wartość może ulegać zmianie w czasie działania systemu ponieważ program nie zarezerwował tego miejsca w pamięci.
printf("Wielkość tablicy w bajtach: %i\n",sizeof(array));
printf("Ponieważ wielkość int - %i bajtów razy wielkość tablicy - 3\n", sizeof(int));
printf("array[0] = %i\n", array[0]);
printf("array[1] = %i\n", array[1]);
printf("array[2] = %i\n", array[2]);
printf("array[3] = %i\n", array[3]); // poza zakresem zadeklarowanej tablicy
printf("array[4] = %i\n", array[4]); // poza zakresem zadeklarowanej tablicy
return 0;
}
Poniższy literał pozwala na zdefiniowanie tablicy o danej wielkości i przypisnanie odrazu wartości do kolejnych pól tablicy.
int array[3] = {1,2,3};
Lub bez podawania wielkośći. Kompilator odczyta ją z literału deklarującego wartości.
int array[] = {1,2,3};
Definiowanie tablicy wielowymiarowej(tablica w tablicy):
[[1,2,3],
[4,5,6]]
int main(int argc, char const *argv[])
{
int array[2][3];
// w tablicy o indeksie 0 jest tablica przechowująca tablicę int 3 elementową
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
// w tablicy o indeksie 1 jest tablica przechowująca tablicę int 3 elementową
array[1][0] = 4;
array[1][1] = 5;
array[1][2] = 6;
return 0;
}
Definiowanie i przypisanie wartości tablicy wielowymiarowej.
char chararray[3][2] = { {'a','b'},
{ 'c','d' },
{ 'e','f' } };
printf("%c",chararray[1][1]);
Pętle
break
- przerywa działanie pętli.
#include <stdio.h>
int main(int argc, char const *argv[])
{
for(int i = 0; i<10;i++){
if (i == 5){
break;
}
printf("i = %i\n",i);
}
return 0;
}
W standardzie c99 nie można zadeklarować wartości w pętli jak w powyższym przykładzie.
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i;
for(i = 0; i<10;i++){
if (i == 5){
break;
}
printf("i = %i\n",i);
}
return 0;
}
continue
- przechodzi do następnej iteracji.
#include <stdio.h>
int main(int argc, char const *argv[])
{
for(int i = 0; i<10;i++){
if (i == 5){
continue;
}
printf("i = %i\n",i);
}
return 0;
}
Zadania
Zadanie 1 - task1.exe
Utwórz program który przechowa dane następującej tabeli: | 3.1 | 3.6 | |—–|—–| | 2.2 | 6.42| | 3.1 | 3.6 | | 3.5 | 32.6 |
Wypisz w konsoli zaznaczoną wartość używając indeksów. Zmodyfikuj program tak by użytkownik mógł wskazać który element tablicy chce odczytać.
Zadanie 2 - forexcercise.exe
Utwórz program który wypisuje liczby od 0 do 20.
Utwórz program który wypisuje liczby od 5 do 25.
Utwórz program który wypisuje liczby od 20 do 0.
Utwórz program który wypisuje począwszy od 1 co 3 kolejną liczbę do wartości 50.
Utwórz program który wypisuje 100 liczb podzielnych przez 5.
Zadanie 3 - printtable.exe
Utwórz program który wypisze w konsoli tablicę z poprzedniego zadania wykorzystując pętlę w formacie:
| 3.1 | 3.6 |
| 2.2 | 6.42 |
| 3.1 | 3.6 |
| 3.5 | 32.6 |
Zadanie 4 - task4.exe
Używając instrukcji break i continue napisz program który wypisze liczby od 0 do zadanej przez użytkownika wartości z pominięciem liczb podzielnych przez 3.
Zadanie 5 - otherloops.exe
Spróbuj wykonać poprzednie zadanie za pomocą innej pętli(jeśli używałeś for za pomocą pętli while
lub do-while
).
Zadanie 6 - primenumbers.exe
Utwórz program który wypisuje kolejne liczby pierwsze.*
Zadanie 7 - twodimensionarray.exe
Napisz program który przechowuje w tablicy 3x3 wartości podane przez użytkownika.
Dodaj do programu menu z następującymi opcjami:
- Średnia z wybranej kolumny
- Średnia z wybranego wiersza
- Modyfikacja wybranej komórki
- Wyjście z progrmau
Program ma działać dopóki użytkownik nie wybierze opcji 4. W przypadkach 1,2,3 ma umożliwiać użytkownikowi wybranie wiersza/koumny a następnie wykonywać odpowiednie obliczenia.
test sprawdzający wartość średniej