Zeichen schreiben
-
Hallo zusammen.
Ich habe folgendes problem, ich möchte in der Konsole einen bestimmten Beriech
per Zufallszahl nach und nach komplett ausfüllen.
Doch so richtig funktioniert das noch nicht.
Es wird einfach nie alles ausgefüllt.Hat da jemand ne idee?
#include<iostream> #include<windows.h> #include<conio.h> using namespace std; int main() { int x[400],y[400],x1=0,y1=0; randomize(); for(int i=0;i<400;i++) { x[i] = random(20); y[i] = random(20); for(int n=0;n<i;n++) { if(x[i] == x[n] && y[i] == y[n]) { x[i] = random(20); y[i] = random(20); } } Sleep(5); gotoxy(x[i],y[i]); cout << "#"; } }
-
Du überprüfst bei jedem Koordinatenpaar einmal, ob es schon vorhanden ist. Wenn ja, berechnest du es nochmal neu - aber danach kontrollierst du nicht mehr, ob die neuen Werte schon vorkommen. Die primitivste Lösung wäre es, diese Überprüfung in eine Schleife zu setzen:
bool correct=true; do { x[i] = random(20); y[i] = random(20); for(int n=0;n<i;n++) { if(x[i] == x[n] && y[i] == y[n]) correct=false; } while(!correct);Eleganter wäre es möglicherweise, nur ein Array (mit pair<>s) zu verwenden und mit random_shuffle() durchzumischen:
pair<int,int> coord[400]; for(int i=0;i<400;++i) coord[i]=make_pair(i%20,i/20); random_shuffle(coord,coord+400); for(int i=0;i<400;++i) { Sleep(5); gotoxy(coord[i].first,coord[i].second); cout<<'#'; }