Ć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