Stefan Sokołowski, Podstawy programowania
LABORATORIUM 10


Na wczytanie tablicy 2-wymiarowej składa się Przez wektor rozumie się tablicę 1-wymiarową liczb rzeczywistych.
Przez macierz rozumie się tablicę 2-wymiarową liczb rzeczywistych.


Zadanie 1:

Napisać program, który
        przykładowa macierz   jej transpozycja
  ---            ---
  |  12.33   11.24 |  
  |  -0.01  210.10 |
  | -42.78  987.65 |
  ---            ---
  ---                    ---
  |  12.33   -0.01  -42.78 |  
  |  11.24  210.10  987.65 |
  ---                    ---


Zadanie 2(a):

Napisać program, który

Zadanie 2(b):

Napisać program, który


Zadanie 3:

Napisać program, który


Zadanie 4:

Napisać program, który Przypomnienie z algebry:
Iloczyn  I = M×W  to wektor długości takiej jak wysokość macierzy, wypełniony iloczynami skalarnymi wierszy  M  przez  W :


#include<stdio.h>
#include<math.h>

#define zakres_x 70
#define zakres_y 30

int main() {
  char rysunek[zakres_x][zakres_y];

  // osie wspolrzednych:
  for (int x=0; x<zakres_x; x++)
    for (int y=0; y<zakres_y; y++)
      if (x==0 && y==0)  rysunek[x][y] = '+';
      else  if (x==0)  rysunek[x][y] = '|';
      else  if (y==0)  rysunek[x][y] = '-';
      else  rysunek[x][y] = ' ';

  // rysunek -- cwiartka kola:
  for (int x=1; x<zakres_x; x++)
    for (int y=1; y<zakres_y; y++) {
      double xx = (double)x/zakres_x,
             yy = (double)y/zakres_y;
      if (xx*xx + yy*yy < 1)  rysunek[x][y] = '*';
  }

  // wydruk:
  printf("\n");
  for (int y=zakres_y-1; y>=0; y--) {
    for (int x=0; x<zakres_x; x++)
      printf("%c", rysunek[x][y]);
    printf("\n");
  }
  printf("\n");

  return 0;
}
 

Zadanie 5:

Program obok tworzy zadany obrazek. Czyni to w ten sposób, że Część programu po komentarzu ,,osie wspolrzednych'' inicjalizuje rysunek, czyli umieszcza na lewym i dolnym skraju osie współrzędnych, a resztę tablicy wypełnia spacjami. Część programu po komentarzu ,,wydruk'' służy do wyświetlenia rysunku na monitorze.

Najważniejsza jest część po komentarzu ,,rysunek'' -- to ona tworzy właściwy obrazek. Składa się z podwójnej pętli, przeglądającej cały rysunek i dla każdej pozycji   (x,y)   (x rośnie w prawo, y rośnie w górę) decyduje, czy trzeba w niej postawić jakiś znak. Kod wpisany tam obecnie zawiera komendę warunkową stawiającą gwiazdkę na pozycjach spełniających nierówność   x2+y2 < 1 , czyli dla należących do koła o środku w początku układu współrzędnych.

Proszę wymienić tą środkową część programu na taką, która będzie tworzyła:

|                                                                    *
|                                                                   * 
|                                                                  *  
|                                                                 *   
|                                                               **    
|                                                              *      
|                                                             *       
|                                                           **        
|                                                          *          
|                                                         *           
|                                                       **            
|                                                      *              
|                                                    **               
|                                                   *                 
|                                                 **                  
|                                               **                    
|                                              *                      
|                                            **                       
|                                          **                         
|                                        **                           
|                                      **                             
|                                    **                               
|                                 ***                                 
|                               **                                    
|                            ***                                      
|                         ***                                         
|                      ***                                            
|                  ****                                               
|            ******                                                   
*************---------------------------------------------------------
A. wykres dodatniej gałęzi paraboli
    
|                                                                     
|                                                                     
|                                  c                                  
|                             ccccccccccc                             
|                            ccccccccccccc                            
|                           ccccccccccccccc                           
|                            ccccccccccccc                            
|                             ccccccccccc                             
|                                  b                                  
|                            bbbbbbbbbbbbb                            
|                          bbbbbbbbbbbbbbbbb                          
|                         bbbbbbbbbbbbbbbbbbb                         
|                        bbbbbbbbbbbbbbbbbbbbb                        
|                        bbbbbbbbbbbbbbbbbbbbb                        
|                         bbbbbbbbbbbbbbbbbbb                         
|                          bbbbbbbbbbbbbbbbb                          
|                            bbbbbbbbbbbbb                            
|                                                                     
|                           aaaaaaaaaaaaaaa                           
|                        aaaaaaaaaaaaaaaaaaaaa                        
|                      aaaaaaaaaaaaaaaaaaaaaaaaa                      
|                     aaaaaaaaaaaaaaaaaaaaaaaaaaa                     
|                     aaaaaaaaaaaaaaaaaaaaaaaaaaa                     
|                     aaaaaaaaaaaaaaaaaaaaaaaaaaaa                    
|                     aaaaaaaaaaaaaaaaaaaaaaaaaaa                     
|                     aaaaaaaaaaaaaaaaaaaaaaaaaaa                     
|                      aaaaaaaaaaaaaaaaaaaaaaaaa                      
|                        aaaaaaaaaaaaaaaaaaaaa                        
|                           aaaaaaaaaaaaaaa                           
+---------------------------------------------------------------------
B. rysunek ,,bałwanka'' złożony z trzech kół o różnych
promieniach i rysowanych każde inną literą


Zadanie 6 domowe:

Proszę napisać i uruchomić program ustalający, które pola szachownicy są pod biciem ze strony ustawionych na niej figur.

Program powinien wyświetlać menu jakiejś takiej postaci:
Co robic?
  0. zakonczyc
  1. dostawic skoczka
  2. dostawic gonca
  3. dostawic wieze
  4. dostawic hetmana

Jeśli użytkownik wybierze opcję
   0. zakonczyc
to program powinien wydrukować szachownicę z dotychczas ustawionymi figurami oraz zaznaczonymi polami pod biciem od którejkolwiek z nich, a następnie zakończyć działanie.

Jeśli wybierze jakąś figurę, to program powinien dodatkowo zapytać o pozycję tej figury na szachownicy, zapamiętać jej położenie i ponownie wydrukować menu. Pozycja to numer wiersza i kolumny -- jak na rysunku powyżej -- a nie litera z cyfrą, jak to jest przyjęte w szachach. Oczywiście próba postawienia figury tam, gdzie stoi już inna figura, albo poza szachownicą, powinna powodować sygnalizację błędu.

Tak więc na przykład, jeśli ustawimy to program powinien wydrukować coś w rodzaju:
    0   1   2   3   4   5   6   7
  +---+---+---+---+---+---+---+---+
0 | H | * | * | * | * | * | * | * |
  +---+---+---+---+---+---+---+---+
1 | * | * |   | * |   | * | * |   |
  +---+---+---+---+---+---+---+---+
2 | * | * | * | * |   | * |   | S |
  +---+---+---+---+---+---+---+---+
3 | * |   | * | * | * | * |   |   |
  +---+---+---+---+---+---+---+---+
4 | * | * | * | H | * | * | * | * |
  +---+---+---+---+---+---+---+---+
5 | * |   | * | * | * | * |   |   |
  +---+---+---+---+---+---+---+---+
6 | * | * |   | * |   | * | * |   |
  +---+---+---+---+---+---+---+---+
7 | * |   |   | * |   |   | * | * |
  +---+---+---+---+---+---+---+---+
Tutaj pola pod biciem zostały oznaczone gwiazdkami. Pola wielokrotnie bite powinny być oznaczone tak samo, jak pojedynczo bite. Jeśli figura stoi na polu bitym, to ma być na nim napisane oznaczenie figury (S, G, W, H), a pola za nim mają być nadal oznaczone jako bite (nie ma ,,zasłaniania'' od bicia).


Do mojej głównej witrynki

Ostatnia modyfikacja: 18 grudnia 2023