Informatyka dla klas II

Język C++: ćwiczenia

Instrukcja do ćwiczenia

  1. Utwórz w środowisku Code::Blocks projekt konsoli.
  2. Na samym początku programu zapisz w komentarzu imiona i nazwiska uczestników grupy, klasę oraz numer ćwiczenia.
  3. Napisz i uruchom odpowiedni program zgodny z tematem ćwiczenia.
  4. Tekst programu zapisz pod nazwą main.cpp w katalogu /mnt/uczen

Tematy ćwiczeń

  1. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    .X......X.
    X........X
    X..XXXX..X
    X.XXXXXX.X
    X.XXXXXX.X
    X.XXXXXX.X
    X.XXXXXX.X
    X..XXXX..X
    X........X
    .X......X.

    Na końcu program ma podać liczbę znaków X w figurze.

  2. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    .XXXXXXXX.
    X........X
    X..XXXX..X
    X.X....X.X
    X.X....X.X
    X.X....X.X
    X.X....X.X
    X..XXXX..X
    X........X
    .XXXXXXXX.

    Na końcu program ma podać liczbę znaków kropki w figurze.
     
  3. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    XXXXXXXXXX
    X........X
    X..XXXX..X
    X.XX..XX.X
    X.X.XX.X.X
    X.X.XX.X.X
    X.XX..XX.X
    X..XXXX..X
    X........X
    XXXXXXXXXX

    Na końcu program ma podać liczbę znaków X w figurze.
     
  4. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    .XXXXXXXX.
    X........X
    X......X.X
    X.....XX.X
    X....X.X.X
    X...X..X.X
    X..X...X.X
    X.XXXXXX.X
    X........X
    .XXXXXXXX.

    Na końcu program ma podać liczbę znaków kropki w figurze.
     
  5. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    .XXXXXXXX.
    X........X
    X.X.X.X..X
    X..X.X.X.X
    X.X.X.X..X
    X..X.X.X.X
    X.X.X.X..X
    X..X.X.X.X
    X........X
    .XXXXXXXX.

    Na końcu program ma podać liczbę znaków X w figurze.
     
  6. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    .XXXXXXXX.
    X........X
    X...XX...X
    X...XX...X
    X.XXXXXX.X
    X.XXXXXX.X
    X...XX...X
    X...XX...X
    X........X
    .XXXXXXXX.

    Na końcu program ma podać liczbę znaków kropki w figurze.
     
  7. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    XXXXXXXXXX
    X...XX...X
    X...X.X..X
    X...X..X.X
    XXXXX...XX
    XX...XXXXX
    X.X..X...X
    X..X.X...X
    X...XX...X
    XXXXXXXXXX

    Na końcu program ma podać liczbę znaków X w figurze.
     
  8. Napisz program w języku C++, który odczyta z klawiatury liczbę n, a następnie wyświetli w oknie konsoli prostokąt o wymiarach n x n z literek X oraz znaku kropki o następującym kształcie (dla n = 10):

    XXXXXXXXXX
    X.X.X...XX
    XX.X...X.X
    X.X.X.X..X
    XX.X.X...X
    X...X.X.XX
    X..X.X.X.X
    X.X...X.XX
    XX...X.X.X
    XXXXXXXXXX

    Na końcu program ma podać liczbę znaków kropki w figurze.

 

Przykładowe rozwiązanie

Figury mogą wyglądać skomplikowanie na pierwszy rzut oka, jednak sposób rozwiązania zadań jest prosty. Należy daną figurę rozłożyć na najprostsze elementy składowe, napisać dla nich warunki logiczne, po czym połączyć te warunki operatorem ||.

Rozwiążmy dla przykładu zadanie nr 8:

XXXXXXXXXX
X.X.X...XX
XX.X...X.X
X.X.X.X..X
XX.X.X...X
X...X.X.XX
X..X.X.X.X
X.X...X.XX
XX...X.X.X
XXXXXXXXXX

 

Figurę rozkładamy:

j i0123456789
0  XXXXXXXXXX
1  X.X.X...XX
2  XX.X...X.X
3  X.X.X.X..X
4  XX.X.X...X
5  X...X.X.XX
6  X..X.X.X.X
7  X.X...X.XX
8  XX...X.X.X
9  XXXXXXXXXX

   

j i0123456789
0  XXXXXXXXXX
1  ..........
2  ..........
3  ..........
4  ..........
5  ..........
6  ..........
7  ..........
8  ..........
9  XXXXXXXXXX

  ((j == 0) || (j == n - 1))

j i0123456789
0  X........X
1  X........X
2  X........X
3  X........X
4  X........X
5  X........X
6  X........X
7  X........X
8  X........X
9  X........X

  ((i == 0) || (i == n - 1))

j i0123456789
0  .........X
1  ........X.
2  .......X..
3  ......X...
4  .....X....
5  ....X.....
6  ...X......
7  ..X.......
8  .X........
9  X.........

  (i == n - 1 - j)

j i0123456789
0  .X.X......
1  X.X.X.....
2  .X.X......
3  X.X.X.....
4  .X.X......
5  ..........
6  ..........
7  ..........
8  ..........
9  ..........

  ((i < n/2) && (j < n/2) && ((i+j) % 2))

j i0123456789
0  ..........
1  ..........
2  ..........
3  ..........
4  ..........
5  ......X.X.
6  .....X.X.X
7  ......X.X.
8  .....X.X.X
9  ......X.X.

  ((i >= n/2) && (j >= n/2) && ((i+j) % 2))

Mając cząstkowe wyrażenia, tworzymy program:

// Ćwiczenie nr 8
//---------------

#include <iostream>

using namespace std;

int main()
{
    int n, i, j, lk = 0;
    cout << "n = "; cin >> n;
    for(j = 0; j < n; j++)
    {
        for(i = 0; i < n; i++)
        if(((j == 0) || (j == n - 1))||
           ((i == 0) || (i == n - 1))||
            (i == n - 1 - j)||
           ((i < n/2)  && (j < n/2)  && ((i+j) % 2))||
           ((i >= n/2) && (j >= n/2) && ((i+j) % 2)))
            cout << "X";
        else
        {
            cout << ".";
            lk++;
        }
        cout << endl;
    }
    cout << "Liczba kropek = " << lk << endl;
    return 0;
}

i otrzymujemy następujący wynik:

n = 30
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X.X.X.X.X.X.X.X.............XX
XX.X.X.X.X.X.X.............X.X
X.X.X.X.X.X.X.X...........X..X
XX.X.X.X.X.X.X...........X...X
X.X.X.X.X.X.X.X.........X....X
XX.X.X.X.X.X.X.........X.....X
X.X.X.X.X.X.X.X.......X......X
XX.X.X.X.X.X.X.......X.......X
X.X.X.X.X.X.X.X.....X........X
XX.X.X.X.X.X.X.....X.........X
X.X.X.X.X.X.X.X...X..........X
XX.X.X.X.X.X.X...X...........X
X.X.X.X.X.X.X.X.X............X
XX.X.X.X.X.X.X.X.............X
X.............X.X.X.X.X.X.X.XX
X............X.X.X.X.X.X.X.X.X
X...........X...X.X.X.X.X.X.XX
X..........X...X.X.X.X.X.X.X.X
X.........X.....X.X.X.X.X.X.XX
X........X.....X.X.X.X.X.X.X.X
X.......X.......X.X.X.X.X.X.XX
X......X.......X.X.X.X.X.X.X.X
X.....X.........X.X.X.X.X.X.XX
X....X.........X.X.X.X.X.X.X.X
X...X...........X.X.X.X.X.X.XX
X..X...........X.X.X.X.X.X.X.X
X.X.............X.X.X.X.X.X.XX
XX.............X.X.X.X.X.X.X.X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Liczba kropek = 560

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2023 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe