Spis treści JĘZYK C - TABLICE DWU- I WIELOWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Podobne dokumenty
Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Metodyki i techniki programowania

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Metodyki i techniki programowania

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05Z

Spis treści JĘZYK C - ŚLEDZENIE WYKONANIA PROGRAMU, DEBUGGER. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Informatyka 1

BHP JĘZYK C - INSTRUKCJE ITERACYJNE

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

Spis treści JĘZYK C - OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, INSTRUKCJA WARUNKOWA IF. Informatyka 1

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Metodyki i techniki programowania

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, ZAGNIEŻDŻANIE IF-ELSE.

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

JĘZYK C - TABLICE DWUWYMIAROWE,

Spis treści JĘZYK C - WSKAŹNIKI, DYNAMICZNY PRZYDZIAŁ PAMIĘCI. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

13 JĘZYK C - OPERATOR WARUNKOWY,

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - FUNKCJE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia MITP10

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

Politechnika Białostocka

Spis treści JĘZYK C - INSTRUKCJE ITERACYJNE FOR, WHILE I DO WHILE, ZAGNIEŻDŻANIE PĘTLI FOR, INSTRUKCJE CONTINUE, BREAK, I GOTO.

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF22

Podstawy Programowania C++

Spis treści JĘZYK C - STRUKTURY, POLA BITOWE, UNIE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Język C, tablice i funkcje (laboratorium, EE1-DI)

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

tablica: dane_liczbowe

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Język C, tablice i funkcje (laboratorium)

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO. Informatyka 2

dr inż. Jarosław Forenc

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

BADANIE ROZKŁADU TEMPERATURY W PIECU PLANITERM

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Stałe, tablice dynamiczne i wielowymiarowe

METROLOGIA EZ1C

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

POLITECHNIKA BIAŁOSTOCKA

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

POMIARY PARAMETRÓW PRZEPŁYWU POWIETRZA

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

dr inż. Jarosław Forenc

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE, ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

POLITECHNIKA BIAŁOSTOCKA

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Podstawy Programowania

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO, TWORZENIE INTERFEJSU UŻYTKOWNIKA.

Ćwiczenie 1. Wprowadzenie do programu Octave

Spis treści OPERACJE WEJŚCIA-WYJŚCIA W JĘZYKU C++. STEROWANIE FORMATEM, MANIPULATORY. Informatyka 2

Warsztaty dla nauczycieli

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

ARKUSZ KALKULACYJNY MICROSOFT EXCEL cz.1 Formuły, funkcje, typy adresowania komórek, proste obliczenia.

if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Ćwiczenie 1. Wprowadzenie do programu Octave

ELEMENTY RLC W OBWODACH PRĄDU SINUSOIDALNIE ZMIENNEGO

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

dr inż. Jarosław Forenc

1 Podstawy c++ w pigułce.

Lab 9 Podstawy Programowania

Spis treści MATLAB - ELEMENTY PROGRAMOWANIA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF09

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Struktury Struktura polami struct struct struct struct

dr inż. Jarosław Forenc

IX. Wskaźniki.(3 godz.)

lekcja 8a Gry komputerowe MasterMind

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Programowanie obiektowe W3

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

Podstawy algorytmiki i programowania - wykład 4 C-struktury

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

Przetwarzanie sygnałów

Scenariusz lekcji. rozpoznać prawidłową deklarację tablicy; podać odwołanie do określonego elementu tablicy.

Języki i metodyka programowania. Wprowadzenie do języka C

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Transkrypt:

Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1D300 017 (studia stacjonarne) Spis treści 1. Opis stanowiska... 3 1.1. Stosowana aparatura... 3 1.2. Oprogramowanie... 3 2. Wiadomości teoretyczne... 3 2.1. Deklaracja tablicy dwuwymiarowej... 3 2.2. Inicjalizacja elementów tablicy... 4 2.3. Podstawowe operacje na macierzach... 6 2.4. Tablice wielowymiarowe... 12 3. Przebieg ćwiczenia... 14 4. Literatura... 16 JĘZYK C - TABLICE DWU- I WIELOWYMIAROWE, OPERACJE NA TABLICACH 5. Pytania kontrolne... 17 6. Wymagania BHP... 17 Numer ćwiczenia INF21 Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB. Autor: dr inż. Jarosław Forenc Białystok 2017 Wydział Elektryczny, Politechnika Białostocka, 2017 (wersja 3.2) Wszelkie prawa zastrzeżone. Żadna część tej publikacji nie może być kopiowana i odtwarzana w jakiejkolwiek formie i przy użyciu jakichkolwiek środków bez zgody posiadacza praw autorskich. Informatyka 2 2 z 18 Instrukcja INF21

1. Opis stanowiska element (Rys. 1). Jako indeks może występować stała liczbowa, nazwa zmiennej przechowującej liczbę całkowitą lub wyrażenie dające w wyniku liczbę całkowitą. 1.1. Stosowana aparatura Podczas zajęć wykorzystywany jest komputer klasy PC z systemem operacyjnym Microsoft Windows (XP/7/10). 1.2. Oprogramowanie Na komputerach zainstalowane jest środowisko programistyczne Microsoft Visual Studio 2008 Standard Edition lub Microsoft Visual Studio 2008 Express Edition zawierające kompilator Microsoft Visual C++ 2008. 2. Wiadomości teoretyczne 2.1. Deklaracja tablicy dwuwymiarowej Deklaracja tablicy dwuwymiarowej (macierzy) wymaga podania liczby wierszy i liczby kolumn, z których będzie składała się ta tablica. float tab[3][4]; średnik liczba kolumn tablicy liczba wierszy tablicy nazwa tablicy typ elementów tablicy Powyższa deklaracja definiuje tablicę dwunastu elementów typu float, składającą się z trzech wierszy i czterech kolumn (Rys. 1). Oba wymiary (liczba wierszy i liczba kolumn) muszą być wartościami całkowitymi, dodatnimi i znanymi na etapie kompilacji programu. Odwołując się do elementów tablicy dwuwymiarowej należy podać dwa indeksy: numer wiersza i numer kolumny, na przecięciu których znajduje się dany Rys. 1. Tablica o rozmiarze 3 4 Zapisanie wartości 10 do elementu tab[1][2] oraz odczytanie tego elementu i przypisanie jego wartości zmiennej o nazwie x ma następującą postać: tab[1][2] = 10; x = tab[1][2]; Przy odwołaniach do elementów tablicy kompilator nie sprawdza, czy zapis i odczyt dotyczy obszaru pamięci przydzielonego na tablicę. 2.2. Inicjalizacja elementów tablicy Po zadeklarowaniu tablicy, wartości jej elementów są nieokreślone. Inicjalizacja polega na umieszczeniu w deklaracji po znaku równości, ujętej w nawiasy klamrowe, listy wartości kolejnych jej elementów. Poszczególne elementy tablicy oddzielane są od siebie przecinkami. Wiersze tablicy wyróżniane są dodatkowymi nawiasami klamrowymi. Deklaracja: int b[2][3] = 3,6,2,4,1,0; powoduje wypełnienie tablicy w sposób przedstawiony na Rys. 2. Informatyka 2 3 z 18 Instrukcja INF21 Informatyka 2 4 z 18 Instrukcja INF21

0 1 0 1 2 3 6 2 4 1 0 Jeśli deklaracja tablicy dwuwymiarowej powiązana jest z jej inicjalizacją, to można pominąć pierwszy wymiar tablicy (liczbę wierszy). Wymiar ten zostanie automatycznie określony przez kompilator na postawie inicjalizacji. Rys. 2. Tablica z zainicjalizowanymi wartościami Nawiasy klamrowe wyróżniające elementy kolejnych wierszy tablicy mogą być pominięte. int b[2][3] = 3,6,2,4,1,0; Powyższa postać inicjalizacji pokazuje sposób w jaki tablice dwuwymiarowe przechowywane są w pamięci komputera (wiersz za wierszem). Jeśli wartości podanych w trakcie inicjalizacji jest mniej niż wynosi rozmiar tablicy, to pozostałe elementy tablicy wypełniane są zerami (Rys. 3), np. int b[2][3] = 3,6,2,4; int b[][3] = 3,6,2,4,1,0; 2.3. Podstawowe operacje na macierzach W poniższym programie przedstawiono najczęściej wykonywane operacje na tablicy dwuwymiarowej (macierzy) przechowującej liczby całkowite. Program wykonujący wybrane operacje na macierzy liczb całkowitych. #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 3 /* liczba wierszy */ #define M 3 /* liczba kolumn */ int main(void) int tab[n][m]; int i, j, max, suma, suma1, suma2; float srednia; /* generowanie pseudolosowe elementow macierzy */ Rys. 3. Tablica z elementami domyślnie zainicjalizowanymi wartością 0 Domyślna inicjalizacja pominiętych elementów tablicy pozwala w bardzo prosty sposób wypełnić całą tablicy wartością zero. Należy podać wartość tylko pierwszego elementu tablicy (zero), zaś pozostałym elementom automatycznie zostanie przypisana wartość zero. int b[2][3] = 0; srand((unsigned int) time(null)); tab[i][j] = rand() % 10; /* wyswietlenie elementow macierzy */ printf("%3d",tab[i][j]); Informatyka 2 5 z 18 Instrukcja INF21 Informatyka 2 6 z 18 Instrukcja INF21

/* poszukiwanie elementu o wartosci maksymalnej */ max = tab[0][0]; if (tab[i][j] > max) max = tab[i][j]; printf("wartosc max: %d\n\n",max); /* suma i srednia arytmetyczna elementow */ srednia = (float) suma/(n*m); printf("suma elementow: %d\n",suma); printf("srednia arytmetyczna: %f\n\n",srednia); /* sumy elementow nad, na i ponizej przekatnej */ suma = suma1 = suma2 = 0; if (i < j) suma1+=tab[i][j]; /* nad */ if (i == j) suma+=tab[i][j]; /* na */ if (i > j) suma2+=tab[i][j]; /* pod */ printf("suma nad przekatna: %d\n",suma1); printf("suma na przekatnej: %d\n",suma); printf("suma pod przekatna: %d\n",suma2); return 0; /* sumy elementow w poszczegolnych wierszach */ printf("suma wiersza %d = %d\n",i,suma); /* sumy elementow w poszczegolnych kolumnach */ printf("suma kolumny %d = %d\n",j,suma); Przykładowy wynik działania programu: 1 7 6 3 5 2 4 8 4 Wartosc max: 8 Suma elementow: 40 Srednia arytmetyczna: 4.444445 Suma wiersza 0 = 14 Suma wiersza 1 = 10 Suma wiersza 2 = 16 Suma kolumny 0 = 8 Suma kolumny 1 = 20 Suma kolumny 2 = 12 Suma nad przekatna: 15 Suma na przekatnej: 10 Suma pod przekatna: 15 Informatyka 2 7 z 18 Instrukcja INF21 Informatyka 2 8 z 18 Instrukcja INF21

W programie wykonywane są następujące operacje na tablicy: - zapisanie wygenerowanych pseudolosowo liczb całkowitych z zakresu 0, 9 ; zewnętrzna pętla for określa indeks wiersza (i), zaś pętla wewnętrzna - indeks kolumny (j); macierz jest zatem wypełniana liczbami wiersz po wierszu (Rys. 4a): srand((unsigned int) time(null)); tab[i][j] = rand() % 10; - wyszukanie elementu o największej wartości - zakładamy, że element tab[0][0] jest największy; przeglądamy pozostałe elementy macierzy (wierszami); jeśli kolejny z elementów macierzy (tab[i][j]) jest większy od dotychczasowego największego (max), to element ten staje się największym (max = tab[i][j]); po zakończeniu obu pętli wyświetlamy na ekranie wartość elementu największego (max): max = tab[0][0]; if (tab[i][j] > max) max = tab[i][j]; printf("wartosc max: %d\n\n",max); Rys. 4. Przeglądanie macierzy: (a) wiersz po wierszu, (b) kolumna po kolumnie Macierz może być także wypełniana kolumnami (Rys. 4b). Wystarczy wtedy zamienić miejscami pętle for - pierwsza pętla powinna określać indeks kolumny (j), a druga pętla - indeks wiersza (i). - wyświetlenie elementów z podziałem na wiersze i kolumny; po wyświetleniu elementów jednego wiersza w pętli wewnętrznej, następuje przejście do nowego wiersza: printf("%3d",tab[i][j]); - obliczenie sumy i średniej arytmetycznej elementów macierzy - w dwóch pętlach for dodajemy kolejne elementy macierzy do zmiennej suma (przed pętlą zmienna ta musi być wyzerowana); następnie obliczamy średnią arytmetyczną dzieląc sumę przez liczbę elementów (N*M); ponieważ suma i liczba elementów są typu całkowitego, to w celu uniknięcia dzielenia liczby całkowitej przez liczbę całkowitą, wymuszamy zmianę typu zmiennej suma na float: (float) suma: srednia = (float) suma/(n*m); printf("suma elementow: %d\n",suma); printf("srednia arytmetyczna: %f\n\n",srednia); - obliczenie sum elementów w poszczególnych wierszach - pętla zewnętrzna określa numer wiersza (i); w pętli tej wykonywane są trzy operacje: wyzerowanie zmiennej suma, sumowanie elementów i-tego wiersza w wewnętrznej pętli for, wyświetlenie sumy i-tego wiersza: Informatyka 2 9 z 18 Instrukcja INF21 Informatyka 2 10 z 18 Instrukcja INF21

printf("suma wiersza %d = %d\n",i,suma); - obliczenie sum elementów w poszczególnych kolumnach - wykonywane jest w podobny sposób jak obliczanie sum wierszy; najważniejsza zmiana polega na zamianie miejscami pętli zewnętrznej i wewnętrznej; pętla zewnętrzna określa numer kolumny (j); w pętli tej wykonywane są trzy operacje: wyzerowanie zmiennej suma, sumowanie elementów j-tej kolumny w wewnętrznej pętli for, wyświetlenie sumy j-tej kolumny: printf("suma kolumny %d = %d\n",j,suma); suma = suma1 = suma2 = 0; if (i < j) suma1+=tab[i][j]; /* nad */ if (i == j) suma+=tab[i][j]; /* na */ if (i > j) suma2+=tab[i][j]; /* pod */ printf("suma nad przekatna: %d\n",suma1); printf("suma na przekatnej: %d\n",suma); printf("suma pod przekatna: %d\n",suma2); 2.4. Tablice wielowymiarowe Ogólna postać deklaracji tablicy wielowymiarowej jest następująca: typ nazwa[wymiar_1][wymiar_2] [wymiar_n] Sposób inicjalizacji i odwoływania się do elementów tablic wielowymiarowych jest analogiczny jak w przypadku tablic dwuwymiarowych. W poniższym przykładzie pokazano deklarację i inicjalizację tablicy mającej trzy wymiary (X Y Z 3 2 4). Interpretację graficzną tablicy przedstawia Rys. 5. - obliczenie sumy elementów nad, na i poniżej głównej przekątnej macierzy - do przechowywania poszczególnych sum stosowane są trzy zmienne (suma, suma1, suma2); w dwóch pętlach for przeglądane są wierszami wszystkie elementy macierzy; jeśli indeks wiersza (i) elementu macierzy jest mniejszy od indeksu kolumny (j), to element ten znajduje się nad główną przekątną macierzy; jeśli indeks wiersza (i) elementu macierzy jest większy od indeksu kolumny (j), to element ten znajduje się poniżej głównej przekątnej macierzy; jeśli indeksy są sobie równe (i == j), to element znajduje się na głównej przekątnej macierzy: Rys. 5. Tablica trójwymiarowa Deklaracja, inicjalizacja i wyświetlenie elementów tablicy trójwymiarowej. #include <stdio.h> Informatyka 2 11 z 18 Instrukcja INF21 Informatyka 2 12 z 18 Instrukcja INF21

#define X 3 #define Y 2 #define Z 4 int main(void) int tab[z][y][x] = 9,5,7,5,9,6, 0,1,3,7,4,3, 8,5,9,1,3,5, 6,0,1,8,2,5; int x, y, z; for(z=0; z<z; z++) for(y=0; y<y; y++) for(x=0; x<x; x++) printf("%3d",tab[z][y][x]); return 0; Wynik działania programu: 9 5 7 5 9 6 0 1 3 7 4 3 8 5 9 1 3 5 6 0 1 8 2 5 3. Przebieg ćwiczenia Na pracowni specjalistycznej należy wykonać wybrane zadania wskazane przez prowadzącego zajęcia. W różnych grupach mogą być wykonywane różne zadania. 1. Zadeklaruj N M - elementową tablicę liczba całkowitych typu int (N, M - stałe zadeklarowane dyrektywą preprocesora #define). Wykonaj następujące operacje: - zapisz do tablicy (wierszami) kolejne liczby całkowite 1, 2, 3, ; wyświetl elementy tablicy z podziałem na wiersze i kolumny; - zapisz do tablicy (kolumnami) kolejne liczby całkowite 1, 2, 3, ; wyświetl elementy tablicy z podziałem na wiersze i kolumny; - zapisz do tablicy wygenerowane pseudolosowo liczby całkowite z zakresu -9, 9 ; wyświetl elementy tablicy z podziałem na wiersze i kolumny; - oblicz i wyświetl liczbę elementów tablicy: dodatnich, ujemnych, równych zero; - oblicz i wyświetl liczbę elementów tablicy o parzystych i nieparzystych wartościach; - zastąp wszystkie ujemne elementy tablicy wartością zero; wyświetl elementy tablicy z podziałem na wiersze i kolumny; - oblicz i wyświetl średnią arytmetyczną tylko tych elementów tablicy, które są większe od zera. 2. Napisz program, który dla N M - elementowej tablicy liczb całkowitych wygeneruje pseudolosowo elementy tablicy z zakresu 0, 10. Następnie wyświetli zawartość tablicy z podziałem na wiersze i kolumny oraz obliczy ile razy każda liczba występuje w tablicy, wyświetlając tylko te liczby, których ilość jest różna od zera. 3. Napisz program wykonujący operację mnożenie macierzy N M - elementowej przez macierz M K - elementową. Elementy macierzy wygeneruj Informatyka 2 13 z 18 Instrukcja INF21 Informatyka 2 14 z 18 Instrukcja INF21

pseudolosowo. Wyświetl elementy wszystkich macierzy z podziałem na wiersze i kolumny. 4. Napisz program, który w N M - elementowej tablicy liczb całkowitych odwróci kolejność elementów w poszczególnych wierszach tablicy. Elementy tablicy wygeneruj pseudolosowo. Wyświetl elementy tablicy przed i po odwróceniu kolejności elementów. 5. Napisz program, który dla N M - elementowej tablicy liczb całkowitych wygeneruje pseudolosowo liczby z zakresu 0, 10, a następnie odnajdzie taki element tablicy, którego suma sąsiadów jest największa. Jako sąsiadów należy rozumieć elementy znajdujące się po lewej stronie, po prawej stronie, powyżej i poniżej danego elementu. Wyświetl zawartość tablicy z podziałem na wiersze i kolumny oraz indeksy odnalezionego elementu. 6. Tablica P przechowuje wyniki 100 pomiarów wartości chwilowych napięcia (pierwszy wiersz tablicy) i prądu (drugi wiersz tablicy) na pewnym dwójniku RLC. Napisz program, który: - zapisze do pierwszego wiersza tablicy wartości chwilowe napięcia zgodnie ze wzorem: 10.0*sin((i+10.0)/15.0) i = 0..99 (1) - zapisze do drugiego wiersza tablicy wartości chwilowe prądu zgodnie ze wzorem: 5.0*sin(i/15.0) i = 0..99 (2) - zapisze do trzeciego wiersza tablicy wartości chwilowe mocy (p = u i); - wypisze zawartość tablicy - wartości chwilowe napięcia, prądu i mocy; - obliczy i wypisze wartości średnie napięcia, prądu i mocy; - wypisze numer pomiaru, dla którego wartość napięcia była największa oraz numer pomiaru, w którym wartość prądu była największa; - wypisze liczbę pomiarów, dla których moc chwilowa była dodatnia i liczbę pomiarów, dla których moc chwilowa była ujemna. 7. Tablica REK przechowuje informacje dotyczące rekrutacji na studia wyższe. W tablicy znajduje się N wierszy i 4 kolumny. Każdy wiersz zawiera informacje o jednym kandydacie. W pierwszych trzech kolumnach umieszczone są oceny kandydatów. Na studia przyjmowane są osoby, których średnia arytmetyczna trzech ocen jest większa lub równa średniej arytmetycznej wszystkich ocen wszystkich kandydatów. Napisz program, który: - zapisze do tablicy wygenerowane losowo oceny wszystkich kandydatów (dopuszczalne oceny to: 2, 3, 4, 5, 6); - umieści w czwartej kolumnie średnie arytmetyczne ocen poszczególnych kandydatów; - wyświetli zawartość całej tablicy; - obliczy średnią arytmetyczną wszystkich ocen kandydatów; - wyświetli numery kandydatów przyjętych na studia (numer kandydata to numer wiersza w tablicy REK) oraz średnie arytmetyczne ich ocen. 8. Napisz program, który dla N M K - elementowej tablicy liczb całkowitych: - wygeneruje pseudolosowo liczby z zakresu 0, 99 ; - wyświetli na ekranie elementy tablicy; - znajdzie w tablicy element o największej wartości i poda indeksy tego elementu; - znajdzie w tablicy element o najmniejszej wartości i poda indeksy tego elementu. 4. Literatura [1] Prata S.: Język C. Szkoła programowania. Wydanie VI. Helion, Gliwice, 2016. [2] Kernighan B.W., Ritchie D.M.: Język ANSI C. Programowanie. Wydanie II. Helion, Gliwice, 2010. [3] Prinz P., Crawford T.: Język C w pigułce. APN Promise, Warszawa, 2016. Informatyka 2 15 z 18 Instrukcja INF21 Informatyka 2 16 z 18 Instrukcja INF21

[4] King K.N.: Język C. Nowoczesne programowanie. Wydanie II. Helion, Gliwice, 2011. [5] Kochan S.G.: Język C. Kompendium wiedzy. Wydanie IV. Helion, Gliwice, 2015. 5. Pytania kontrolne 1. Omów sposób deklarowania tablic dwuwymiarowych (macierzy) w języku C oraz odwoływania się do elementów tych tablic. 2. Opisz inicjalizację elementów tablicy dwuwymiarowej. 3. Opisz deklarację, inicjalizację i sposób odwoływania się do elementów tablic wielowymiarowych. 6. Wymagania BHP Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z instrukcją BHP i instrukcją przeciw pożarową oraz przestrzeganie zasad w nich zawartych. W trakcie zajęć laboratoryjnych należy przestrzegać następujących zasad. - Sprawdzić, czy urządzenia dostępne na stanowisku laboratoryjnym są w stanie kompletnym, nie wskazującym na fizyczne uszkodzenie. - Jeżeli istnieje taka możliwość, należy dostosować warunki stanowiska do własnych potrzeb, ze względu na ergonomię. Monitor komputera ustawić w sposób zapewniający stałą i wygodną obserwację dla wszystkich członków zespołu. - Sprawdzić prawidłowość połączeń urządzeń. - Załączenie komputera może nastąpić po wyrażeniu zgody przez prowadzącego. - W trakcie pracy z komputerem zabronione jest spożywanie posiłków i picie napojów. - W przypadku zakończenia pracy należy zakończyć sesję przez wydanie polecenia wylogowania. Zamknięcie systemu operacyjnego może się odbywać tylko na wyraźne polecenie prowadzącego. - Zabronione jest dokonywanie jakichkolwiek przełączeń oraz wymiana elementów składowych stanowiska. - Zabroniona jest zmiana konfiguracji komputera, w tym systemu operacyjnego i programów użytkowych, która nie wynika z programu zajęć i nie jest wykonywana w porozumieniu z prowadzącym zajęcia. - W przypadku zaniku napięcia zasilającego należy niezwłocznie wyłączyć wszystkie urządzenia. - Stwierdzone wszelkie braki w wyposażeniu stanowiska oraz nieprawidłowości w funkcjonowaniu sprzętu należy przekazywać prowadzącemu zajęcia. - Zabrania się samodzielnego włączania, manipulowania i korzystania z urządzeń nie należących do danego ćwiczenia. - W przypadku wystąpienia porażenia prądem elektrycznym należy niezwłocznie wyłączyć zasilanie stanowiska. Przed odłączeniem napięcia nie dotykać porażonego. Informatyka 2 17 z 18 Instrukcja INF21 Informatyka 2 18 z 18 Instrukcja INF21