Проблемы для проверки цикла for в C ++ - PullRequest
0 голосов
/ 03 ноября 2019

Я сделал эту программу, которая начинает печатать маленький прямоугольник, а затем печатает другие большие прямоугольники, пока не будет достигнута определенная точка, но предполагается, что, когда первый цикл заканчивается, последний for программы должен будет сделать противоположноеПри печати прямоугольника большего размера и печати прямоугольников меньшего размера проблема заключается в том, что программа выполняет только первое, игнорируя второе. Я не знаю, пропустила ли я добавление чего-либо, кто-нибудь знает, какую ошибку я могу иметь? Я все еще новичок в программировании, извините.

#include <iostream>                                                       
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>  
#include <windows.h> 
#include <time.h>

using namespace std;

void pos(int x,int y){  
      HANDLE hcon;  
      hcon = GetStdHandle(STD_OUTPUT_HANDLE);  
      COORD dwPos;  
      dwPos.X = x;  
      dwPos.Y= y;  
      SetConsoleCursorPosition(hcon,dwPos);  
}  

void square(int col1, int col2, int row1, int row2) //The square function is the one I use to print all the squares, just by changing the positions
{
    pos(col1,row1);
    cout << char(201);
    pos(col1,row2);
    cout << char(200);
    pos(col2,row1);
    cout << char(187);
    pos(col2,row2);
    cout << char(188);  

    for (int x = col1 + 1; x < col2; x++)
    {
        pos(x, row1);
        cout << char(205);

        pos(x, row2);
        cout << char(205);
    }
    for (int y = row1 + 1; y < row2; y++)
    {
        pos(col1,y);
        cout << char(186);

        pos(col2,y);
        cout << char(186);
    }
}

int main(){
    system("color 2E");

    int N = 22, N2 = 23;
    int x1 = 32, x2 = 33, y1 = 100, y2 = 105;
    int x3 = 4, x4 = 49, y3 = 4, y4 = 215;

    pos(30,30);
    cout << "Put the program in full screen so it can be better appreciated";
    Sleep(4000);
    system("cls");

    for (int i; i < N; i++){ //This for is responsible for printing the squares from minor to major

        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | BACKGROUND_GREEN);

        Sleep(200);
        square (y1, y2, x1, x2);

        y1 = y1 - 5;
        y2 = y2 + 5;
        x1 = x1 - 1;
        x2 = x2 + 1;

        cout << "\n\n\n";
    }

    system("cls");

    for (int j; j < N2; j++){ //When the screen is clean, this for would have to start printing squares from major to minor

        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | BACKGROUND_GREEN);

        Sleep(200);
        square (y3, y4, x3, x4);

        y3 = y3 + 4;
        y4 = y4 - 4;
        x3 = x3 + 1;
        x4 = x4 - 1;

        cout << "\n\n\n";

        system("cls");
    }

    system("pause");
    return 0;
}

1 Ответ

0 голосов
/ 07 ноября 2019

Предыдущий комментарий правильный. Просто удивитесь, почему вы не увидели ошибок при компиляции вашей программы? Вы также можете удалить system ("cls") в конце второго цикла for для улучшения визуального восприятия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...