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

Podobne dokumenty
Spis treści JĘZYK C - TABLICE DWU- I WIELOWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 2. 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 PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

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 JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. 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 - ŚLEDZENIE WYKONANIA PROGRAMU, DEBUGGER. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

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

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. Metodyki i techniki programowania

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

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 - FUNKCJE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia MITP10

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 - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, ZAGNIEŻDŻANIE IF-ELSE.

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 PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

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 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 - INSTRUKCJA SWITCH, OPERATORY BITOWE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu

Politechnika Białostocka

Podstawy Programowania C++

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

tablica: dane_liczbowe

Język C, tablice i funkcje (laboratorium)

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

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

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

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

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

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

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

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

dr inż. Jarosław Forenc

BADANIE ROZKŁADU TEMPERATURY W PIECU PLANITERM

1 Podstawy c++ w pigułce.

METROLOGIA EZ1C

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

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

dr inż. Jarosław Forenc

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

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

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

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

POMIARY PARAMETRÓW PRZEPŁYWU POWIETRZA

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

POLITECHNIKA BIAŁOSTOCKA

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

Warsztaty dla nauczycieli

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

dr inż. Jarosław Forenc

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

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

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

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

1 Podstawy c++ w pigułce.

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

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

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

Część 4 życie programu

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

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

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

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

Podstawy Programowania

POLITECHNIKA BIAŁOSTOCKA

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: KLASY I OBIEKTY, DANE I FUNKCJE SKŁADOWE, PRAWA DOSTĘPU, KONSTRUKTORY I DESTRUKTORY.

Lab 9 Podstawy Programowania

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

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Ćwiczenie 1. Wprowadzenie do programu Octave

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:

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

Ćwiczenie 1. Wprowadzenie do programu Octave

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

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

Programowanie obiektowe W3

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

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

Przetwarzanie sygnałów

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

Spis treści. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF03Z. Autor: dr inż.

ELEMENTY RLC W OBWODACH PRĄDU SINUSOIDALNIE ZMIENNEGO

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

dr inż. Jarosław Forenc

lekcja 8a Gry komputerowe MasterMind

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Transkrypt:

Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 1 Kod przedmiotu: ES1C200 009 (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. Przekazywanie tablicy dwuwymiarowej do funkcji... 12 3. Przebieg ćwiczenia... 14 4. Literatura... 16 JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH 5. Zagadnienia na zaliczenie... 17 6. Wymagania BHP... 17 Numer ćwiczenia INF09 Autor: dr inż. Jarosław Forenc Białystok 2016 Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB. Wydział Elektryczny, Politechnika Białostocka, 2016 (wersja 2.0) 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 1 2 z 18 Instrukcja INF09

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/Vista/7). 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ę 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: 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ść jej elementów jest nieokreślona. 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 1 3 z 18 Instrukcja INF09 Informatyka 1 4 z 18 Instrukcja INF09

0 1 0 1 2 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. 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; Druga postać inicjalizacji pokazuje sposób w jaki przechowywane są tablice dwuwymiarowe 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; 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 */ srand((unsigned int) time(null)); tab[i][j] = rand() % 10; /* wyswietlenie elementow macierzy */ Rys. 3. Tablica z elementami domyślnie zainicjalizowanymi wartością 0 Domyślna inicjalizacja pominiętych elementów tablicy wartością zero 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 także przypisana taka sama wartość. int b[2][3] = 0; printf("%3d",tab[i][j]); /* 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); Informatyka 1 5 z 18 Instrukcja INF09 Informatyka 1 6 z 18 Instrukcja INF09

/* 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 w poszczegolnych wierszach */ printf("suma wiersza %d = %d\n",i,suma); /* sumy elementow w poszczegolnych kolumnach */ printf("suma kolumny %d = %d\n",j,suma); /* sumy elementow nad, na i ponizej przekatnej */ suma = suma1 = suma2 = 0; if (i < j) suma1+=tab[i][j]; /* nad */ if (i > j) suma2+=tab[i][j]; /* pod */ if (i == j) suma+=tab[i][j]; /* na */ printf("suma nad przekatna: %d\n",suma1); printf("suma na przekatnej: %d\n",suma); printf("suma pod przekatna: %d\n",suma2); return 0; 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 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; Informatyka 1 7 z 18 Instrukcja INF09 Informatyka 1 8 z 18 Instrukcja INF09

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ć wypełniana także 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]); - 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): - 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: printf("suma wiersza %d = %d\n",i,suma); Informatyka 1 9 z 18 Instrukcja INF09 Informatyka 1 10 z 18 Instrukcja INF09

- 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); - 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: suma = suma1 = suma2 = 0; if (i < j) suma1+=tab[i][j]; /* nad */ if (i > j) suma2+=tab[i][j]; /* pod */ if (i == j) suma+=tab[i][j]; /* na */ printf("suma nad przekatna: %d\n",suma1); printf("suma na przekatnej: %d\n",suma); printf("suma pod przekatna: %d\n",suma2); 2.4. Przekazywanie tablicy dwuwymiarowej do funkcji Tablica dwuwymiarowa przekazywana jest do funkcji przez wskaźnik. W nagłówku funkcji należy podać typ elementów tablicy, jej nazwę oraz w nawiasach kwadratowych liczbę wierszy i kolumn lub tylko liczbę kolumn. void foo(int tab[2][3])... lub void foo(int tab[][3])... W wywołaniu funkcji podaje się tylko nazwę tablicy (bez nawiasów kwadratowych). foo(tab); W poniższym programie znajdują się trzy funkcje, do których przekazywana jest dwuwymiarowa tablica o nazwie tab zawierająca liczby typu int. Funkcja drukuj() wyświetla na ekranie elementy tablicy, funkcja zeruj() zapisuje wartość 0 do każdego jej elementu, zaś funkcja srednia() oblicza i zwraca średnią arytmetyczną liczb znajdujących się w tablicy. Przekazywanie do funkcji tablicy dwuwymiarowej. #include <stdio.h> void drukuj(int tab[2][3]) for (int i=0; i<2; i++) for (int j=0; j<3; j++) printf("%3d",tab[i][j]); Informatyka 1 11 z 18 Instrukcja INF09 Informatyka 1 12 z 18 Instrukcja INF09

void zeruj(int tab[][3]) for (int i=0; i<2; i++) for (int j=0; j<3; j++) tab[i][j] = 0; float srednia(int tab[2][3]) float sr = 0; int for (int i=0; i<2; i++) for (int j=0; j<3; j++) sr = (float)suma / (2*3); return sr; int main(void) int tab[2][3] = 1,2,3,4,5,6; float sred; drukuj(tab); sred = srednia(tab); printf("srednia elementow: %g\n\n", sred); zeruj(tab); drukuj(tab); return 0; Wynik działania powyższego programu: 1 2 3 4 5 6 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 zeru, - 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. Srednia elementow: 3.5 0 0 0 0 0 0 Informatyka 1 13 z 18 Instrukcja INF09 Informatyka 1 14 z 18 Instrukcja INF09

3. Napisz program zawierający funkcję wykonującą operację mnożenie macierzy N M - elementowej przez macierz M K - elementową. Elementy macierzy wygeneruj pseudolosowo. Wyświetl elementy wszystkich macierzy z podziałem na wiersze i kolumny. 4. Napisz program zawierający funkcję, do której przekazywana jest N M - elementowa tablica liczb całkowitych. Funkcja powinna odwrócić kolejność elementów w poszczególnych wierszach tablicy. 5. Napisz program, który dla N M - elementowej tablicy liczb całkowitych wygeneruje losowo 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, - 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 N - elementowej tablicy liczb całkowitych wygeneruje pseudolosowo elementy tablicy z zakresu 0, 10, a następnie obliczy sumę elementów znajdujących się na brzegach tablicy i na jej głównych przekątnych (elementy zaznaczone na rysunku szarym kolorem). 4. Literatura [1] Kernighan B.W., Ritchie D.M.: Język ANSI C. Programowanie. Wydanie II. Helion, Gliwice, 2010. Informatyka 1 15 z 18 Instrukcja INF09 Informatyka 1 16 z 18 Instrukcja INF09

[2] Prata S.: Język C. Szkoła programowania. Wydanie V. Helion, Gliwice, 2006. [3] King K.N.: Język C. Nowoczesne programowanie. Wydanie II. Helion, Gliwice, 2011. [4] Kochan S.G.: Język C. Kompendium wiedzy. Wydanie IV. Helion, Gliwice, 2015. [5] Summit S.: Programowanie w języku C. FAQ. Helion, Gliwice, 2003. [6] Wileczek R.: Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows. Helion, Gliwice, 2009. 5. Zagadnienia na zaliczenie 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. Wyjaśnij w jaki sposób przekazuje się do funkcji tablice dwuwymiarowe. 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 1 17 z 18 Instrukcja INF09 Informatyka 1 18 z 18 Instrukcja INF09