Ćwiczenie 6 - Robert Arsoba
Transkrypt
Ćwiczenie 6 - Robert Arsoba
Podstawy programowania dr inż. Robert Arsoba Ćwiczenie 6 Tablice Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z zastosowaniem i wykorzystaniem tablic w programach tworzonych w języku C oraz wykształcenie umiejętności poprawnej obsługi tablic. Zakres ćwiczenia obejmuje tablice jedno- i dwuwymiarowe przechowujące dane liczbowe oraz mechanizm indeksowania tablic. Przygotowanie się do ćwiczenia • • • Zapoznać się z wykładem dotyczącym tablic. • Zwrócić uwagę na sposób deklarowania zmiennych tablicowych. • Przeanalizować przykłady użycia i obsługi tablic zamieszczone w materiałach do wykładu. • Utrwalić zasady indeksowania tablic w języku C. Zapoznać się z przykładowym programem zamieszczonym w opisie ćwiczenia (wyszukiwanie najmniejszej i największej liczby w tablicy jednowymiarowej). • Przeanalizować kod źródłowy programu. • Skompilować i uruchomić program, przetestować jego działanie. Zrealizować samodzielnie zadania ćwiczeniowe. • Opracować dla poszczególnych zadań algorytmy w postaci schematów blokowych. • Na podstawie algorytmów utworzyć kod źródłowy programów. Zadania do wykonania 1. Napisać program realizujący następujące czynności: • utworzenie 10-cioelementowej tablicy liczb całkowitych typu int, • wypełnienie tablicy liczbami losowymi z przedziału od 1 do 100, • wyświetlenie zawartości tablicy na ekranie, • obliczenie sumy elementów znajdujących się w tablicy, • obliczenie średniej arytmetycznej elementów tablicy, • obliczenie średniej geometrycznej elementów tablicy, • wyświetlenie na ekranie obliczonych wartości. 2. Napisać program wypełniający 10-cioelementową tablicę jednowymiarową całkowitymi liczbami losowymi z przedziału od –10 do 10, a następnie sortujący zawartość tablicy metodą bąbelkową. Program powinien wyświetlać na ekranie zawartość tablicy przed i po sortowaniu w sformatowanej i czytelnej postaci. 3. Napisać program, w którym tablica jednowymiarowa (maksymalny rozmiar tablicy 5) przechowuje współczynniki wielomianu (liczby rzeczywiste). Wczytać wartości współczynników z klawiatury, wyświetlić postać wielomianu, obliczyć i wyświetlić wartość wielomianu dla zadanej z klawiatury wartości x metodą Hornera, a Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 1 Podstawy programowania dr inż. Robert Arsoba następnie wyznaczyć i wyświetlić postać pierwszej pochodnej wielomianu. Przykład działania programu: Podaj stopień wielomianu (maks. 5): 2 Podaj współczynniki wielomianu: 1 –2 1 Wielomian ma postać: x^2 – 2x + 1 = 0 Podaj wartość x: 1 Wartość wielomianu wynosi: 0 Pierwsza pochodna ma postać: 2x – 2 = 0 4. Napisać program tworzący tablicę dwuwymiarową (macierz kwadratową 3x3) wypełnioną liczbami całkowitymi wczytanymi z klawiatury, wyświetlający na ekranie zawartość wprowadzonej macierzy w sformatowanej postaci z podziałem na wiersze i kolumny, a następnie obliczający i wyświetlający na ekranie wyznacznik macierzy obliczony metodą Sarrusa. a1 M = a2 b1 b2 c1 c2 a3 b3 c3 det M = a1b2 c3 + a 2 b3 c1 + a 3b1c 2 − (c1b2 a 3 + b1a 2 c3 + c 2 b3 a1 ) 5. Napisać program tworzący tablicę dwuwymiarową (macierz kwadratową 4x4) wypełnioną całkowitymi liczbami losowymi z przedziału od 0 do 10 i realizujący następujące czynności • wyświetlenie na ekranie zawartości macierzy w sformatowanej postaci z podziałem na wiersze i kolumny, • obliczenie i wyświetlenie na ekranie sumy elementów leżących na głównej przekątnej macierzy, • obliczenie i wyświetlenie na ekranie sumy elementów leżących nad główną przekątną macierzy, • obliczenie i wyświetlenie na ekranie sumy elementów leżących pod główną przekątną macierzy. Przykład działania programu: Zawartość macierzy: 3 5 8 2 10 1 6 8 3 0 2 9 4 1 8 5 Suma elementów: na głównej przekątnej: 11 nad główną przekątną : 38 pod główną przekątną : 26 Wymagana zawartość sprawozdania z ćwiczenia 1. Notatki ze schematami blokowymi algorytmów do zadań. 2. Pliki z kodem źródłowym utworzonych programów. Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 2 Podstawy programowania dr inż. Robert Arsoba Zalecane źródła wiedzy 1. B. Kernighan, D. Ritchie: „Język ANSI C”, WNT, Warszawa 2001. 2. I.N. Bronsztejn, K.A. Siemiendiajew: „Matematyka. Poradnik encyklopedyczny”, PWN, Warszawa 2000. 3. P. Wróblewski: „Algorytmy, struktury danych i techniki programowania”, Helion, Gliwice 2009. Przykładowy program /* * Poszukiwanie najmniejszej i największej liczby w tablicy * Robert Arsoba * 1.12.2009 * Wersja 1.0 */ #include <stdio.h> #include <stdlib.h> #include <time.h> /* funkcje printf */ /* funkcje rand, srand, system */ /* funkcja time */ #define MAXN 10 /* rozmiar tablicy */ int liczby[MAXN]; int i; int min, max; /* tablica liczb */ /* licznik w petli for */ /* wyniki obliczen */ int main() { system("cls"); printf("Szukanie najmniejszej i najwiekszej liczby\n"); printf(" w tablicy jednowymiarowej \n"); printf(" (wersja tablicowa) \n\n"); /* inicjalizacja generatora liczb pseudolosowych */ srand(time(NULL)); printf("Zawartosc tablicy po losowaniu:\n"); for (i = 0; i < MAXN; i++) { liczby[i] = rand()%100 + 1; /* losowanie liczb z przedzialu <1, 100> */ printf("%2d: %3d\n", i+1, liczby[i]); /* wyswietlenie na ekranie */ } min = max = liczby[0]; /* ustawienie zmiennych na pierwsza liczbe tablicy */ for (i = 1; i < MAXN; i++) /* sprawdzenie pozostalych liczb w tablicy */ { if (min > liczby[i]) /* napotkano liczbe mniejsza od biezacego minimum */ min = liczby[i]; /* nowe minimum */ else if (max < liczby[i]) /* napotkano liczbe wieksza od biezacego maks. */ max = liczby[i]; /* nowe maksimum */ } printf("Najmniejsza liczba to: %3d\n", min); /* wyswielenie wynikow */ printf("Najwieksza liczba to : %3d\n\n", max); system("pause"); return 0; } Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 3