background image

08 

Metodyka i techniki programowania 
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 wskaźniki 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.  

 

 

 

 

background image

 

 

Ć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.