Informatyka dla klasy IIK

Język C++: pętla iteracyjna for

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. Plik main.cpp prześlij na komputer nauczyciela.

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):

    X........X
    XX......XX
    XXX....XXX
    XXXX..XXXX
    XXXXXXXXXX
    XXXXXXXXXX
    .XXXXXXXX.
    ..XXXXXX..
    ...XXXX...
    ....XX....

    Na końcu program ma podać liczbę znaków kropki w figurze.
     
  9. 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 9:

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

 

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



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

©2017 mgr Jerzy Wałaszek

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