Mam problem. Chciałem napisać program rysujący dowolny prostokąt. Udało mi się ale teraz chcę napisać zabezpieczenie przed wpisywaniem błędnych danych.
Zabezpieczenie działa ale po wpisaniu złej wartości potem nie pokazuje jednej lini kodu. Program z czytuje poprawnie ale wyświetla źle.
do
{
cout << "Podaj szerokosc: ";cin>>a;
while(!(cin>>a) || (a>100) || !(cin>>b) || (b>20))
{
cout << "Zle. ";
cout << "\nPodaj szerokosc: ";cin>>a;
if(cin.fail())
{
}
else
{
cout << "Podaj wysokosc: ";cin>>b;
}
cin.clear();
cin.sync();
}
if((a<0) || (b<0) || (a==0) || (b==0) || (a>100) || (b>20))
{
cout << "Podales zle wymiary. Wartosci musza byc dodatnie. Ale nie wiecej niz 100x20. Sproboj jeszcze raz." << endl;
}
else
{
}
} while((a<0) || (b<0) || (a==0) || (b==0) || (a>100) || (b>20));
Tutaj jest cały kod
#include <iostream>
#include <windows.h>
using namespace std;
int a,b,c,wolno,normalnie,szybko,x;
int main()
{
cout << "Witaj w programie rysujacym prostokat.(Maksymalnie 100x20)" << endl;
do
{ cout << "Podaj szerokosc: ";cin>>a;
while(!(cin>>a) || (a>100) || !(cin>>b) || (b>20))
{cout << "Zle. ";
cout << "\nPodaj szerokosc: ";cin>>a;
if(cin.fail())
{
}
else
{ cout << "Podaj wysokosc: ";cin>>b;
}
cin.clear();
cin.sync();
}
if((a<0) || (b<0) || (a==0) || (b==0) || (a>100) || (b>20))
{
cout << "Podales zle wymiary. Wartosci musza byc dodatnie. Ale nie wiecej niz 100x20. Sproboj jeszcze raz." << endl;
}
else
{
}
} while((a<0) || (b<0) || (a==0) || (b==0) || (a>100) || (b>20));
cout << "" << endl;
wolno = 100;
normalnie = 50;
szybko = 10;
for(int g=0;g<a;g++)
{
Sleep(50);
cout << "*";
}
cout << "" << endl;
for(int j=0;j<b-2;j++)
{
Sleep(50);
for(int i=0;i<1;i++)
{
cout <<"*";
Sleep(50);
for(int k=0;k<a-2;k++)
{
cout <<" ";
Sleep(50);
}
if(a>1)
{
cout <<"*";
Sleep(50);
}
else
{
}
}
cout << "" << endl;
}
if(b>1)
{
for(int g=0;g<a;g++)
{
Sleep(50);
cout << "*";
}
}
else
{
}
cout << "" << endl;
cin.sync();
cin.get();
return 0;
}