Lab 08 Tablice


Metodyka i techniki programowania
08 Tablice
Dr inż. Paweł Kułakowski
Ćwiczenie 1. Tablice - podstawy
1. Zaimplementuj poniższy kod, pozwalający obliczyć iloczyn skalarny dwóch wektorów:
int i ;
float wekt1[3], wekt2[3], skalar ;
printf ("Podaj wspolrzedne wektora wekt1:\n") ;
for (i=0; i<3; i++) scanf ("%f", &wekt1[i]) ;
printf ("oraz wspolrzedne wektora wekt2:\n") ;
for (i=0; i<3; i++) scanf ("%f", &wekt2[i]) ;
skalar = wekt1[0]*wekt2[0] + wekt1[1]*wekt2[1] + wekt1[2]*wekt2[2] ;
printf ("\nIloczyn skalarny wektorow wynosi: %f\n", skalar) ;
2. Linię programu, w której liczona jest zmienna skalar zmodyfikuj w taki sposób, aby to
obliczenie było wykonywane z użyciem pętli.
2. Zmień wywołania funkcji scanf w taki sposób, aby ich argumentami były wskazniki do
tablic wekt1 i wekt2.
3. Zmodyfikuj program tak, aby oprócz iloczynu skalarnego był liczony również iloczyn
wektorowy.
Ćwiczenie 2. Operacje na tablicach
Poniższy program ma na celu odwrócenie tablicy liczb: w efekcie pierwsza liczba ma się
znajdować na ostatnim miejscu, druga na przedostatnim, itd. Gdzie tkwi błąd w tym
programie? Napisz jego poprawną wersję.
int i, tablica[10] ;
srand (time (NULL)) ; /* inicjalizacja generatora liczb losowych */
/* losowanie liczby od 0 do 99 : */
for (i=0; i<10; i++) tablica[i] = rand()%100 ;
printf ("\nTablica po inicjalizacji:\n") ;
for (i=0; i<10; i++) printf ("%i ", tablica[i]) ;
/* odwracanie kolejnosci liczb w tablicy : */
for (i=0; i<10; i++) tablica[i] = tablica[9-i] ;
printf ("\n\nTablica po odwroceniu:\n") ;
for (i=0; i<10; i++) printf ("%i ", tablica[i]) ;
printf ("\n\n") ;
Zadanie
Napisz program, który uporządkuje liczby w 10-elementowej tablicy typu int. Wartości
początkowe niech będą generowane losowo z przedziału od 1 do 20.
Ćwiczenie 3. Tablice wielowymiarowe
1. Zaimplementuj poniższy kod, wyświetlający stan rozgrywki szachowej.
Na przedstawionej szachownicy, użyto oznaczeń: 'W'  wieża, 'S'  skoczek, 'G'  goniec,
'H'  hetman, 'K'  król, 'P'  pionek. Duże litery oznaczają czarne figury, a małe  białe.
'+' to puste pole.
int i, j ;
char chess[8][8] = {"W++HKGSW", /* wpisanie stanu szachownicy */
"PGPPPP+P", /* do dwuwymiarowej tablicy */
"SP++++P+",
"+g++s+++",
"++++++h+",
"++++p+++",
"pppp+ppp",
"wsg+k++w"} ;
printf ("\n") ;
for (i=0; i<8; i++) /* wyswietlenie na ekranie stanu gry */
{
printf (" ") ;
for (j=0; j<8; j++) printf ("%c", chess[i][j]) ;
printf ("\n") ;
}
2. Czy można obejść się bez wewnętrznej pętli? Popraw powyższy program.
3. Obecny ruch należy do czarnych. Wykonaj bicie białego pionka czarnym gońcem i
wyświetl na ekranie zaktualizowaną wersję szachownicy.
4. W ruchu białych, również zbij pionka gońcem, szachując czarnego króla.
5. W kolejnym ruchu czarnych nie masz już wyboru: zbij gońca hetmanem.
6. Ostatni ruch białych: Biały hetman bije czarnego i mat!
Po każdym ruchu aktualizuj szachownicę na ekranie.
Zadanie
Napisz program umożliwiający grę w Mastermind.
Podstawowe zasady gry:
1. Program losuje cztery cyfry z zakresu od 1 do 6 i ustawia je w określonej kolejności. Cyfry
mogą się powtarzać (np. 1365, 1442, 3623, 6525).
2. Gracz próbuje zgadnąć cyfry, podając komputerowi swoją propozycję.
3. W odpowiedzi, komputer podaje graczowi dwie informacje:
a. ile cyfr udało się odgadnąć i ustawić na właściwych pozycjach (za każdą
odgadniętą w ten sposób cyfrę komputer rysuje gwiazdkę - *),
b. ile cyfr udało się odgadnąć, ale ich pozycje nie są właściwe (za każdą odgadniętą w
ten sposób cyfrę komputer rysuje zero - 0).
Oczywiście suma gwiazdek i zer nigdy nie będzie większa od 4.
4. Gracz ponownie próbuje odgadnąć cyfry, podjąć swoja kolejną propozycję  gra się toczy
do odgadnięcia wszystkich czterech cyfr (oczywiście cyfry muszą się znajdować na
właściwych pozycjach)  na co komputer powinien odpowiedzieć czterema gwiazdkami i
komunikatem o wygranej.
Przykład: Odgadywane cyfry to: 6261. Gracz proponuje cyfry: 6312. Komputer odpowiada:
*00. Gracz nie wie, które z zaproponowanych przez niego cyfr udało mu się trafić, ale po
kolejnych próbach może już wyciągać pewne wnioski.


Wyszukiwarka