Permalänk
Medlem

Göra en meny i C++

Hejsan har fått en liten övnings uppgift före prov där vi ska skriva ett program som gör en meny utav "*" tecken alltså typ såhär:
********
*............*
*............* (ska inte vara punkter men den blir fel om man gör mellanslag)
********

Man ska kunna välja antal kolumner och rader i denna meny och jag har kommit så här långt som koden nedan visar. (den spammar bara ut en massa ******) Skulle gärna uppskatta lite hjälp att hitta felen i den.

#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int counter2; int tempcounter; cout<< "hur många rader ?"<< endl; cin>>counter2; counter2=counter2-1; // kolla vad som händer om du inte har med denna rad tempcounter=counter2; while (counter2>=0) { if(counter2==tempcounter ||counter2==0) { cout<<"*****"<<endl; } else { int counter3; cout<<"hur månka kolumner * * vill du ha?"<<endl; cin >> counter3; counter3=counter3-1; //kolla vad som händer om du tar bort denna rad tempcounter=counter3; // tempcounter redan declarerad while (counter3>=0) { if(counter3==tempcounter||counter3==0) { cout<<"*"; } else { cout<<"*"; counter3--; } } cout<<"* *"<<endl; } counter2--; } system("PAUSE"); return EXIT_SUCCESS; }

Permalänk
Medlem

Den går in i en oändlig loop ifall if(counter3==tempcounter||counter3==0) är sant då du aldrig sänker counter3.
Lär dig for loopar så kan det bli lättare att lösa uppgiften och du slipper massa if satser.

#include <iostream> using namespace std; int main(){ int row; int col; cin >> row; cin >> col; for(int i = 0;i < col;++i){ cout << '*'; } cout << endl; for(int i = 3; i <= row;++i){ cout << '*'; for(int j = 3; j <= col;++j){ cout << ' '; } cout << '*' << endl; } for(int i = 0;i < col;++i){ cout << '*'; } return 0; }

Permalänk
Medlem
Skrivet av hawy:

Den går in i en oändlig loop ifall if(counter3==tempcounter||counter3==0) är sant då du aldrig sänker counter3.
Lär dig for loopar så kan det bli lättare att lösa uppgiften och du slipper massa if satser.

#include <iostream> using namespace std; int main(){ int row; int col; cin >> row; cin >> col; for(int i = 0;i < col;++i){ cout << '*'; } cout << endl; for(int i = 3; i <= row;++i){ cout << '*'; for(int j = 3; j <= col;++j){ cout << ' '; } cout << '*' << endl; } for(int i = 0;i < col;++i){ cout << '*'; } return 0; }

Förstår inte riktigt, jag är typ noob på programering haha. Jag har ju en counter3--.

Permalänk
Medlem

#include <iostream> using namespace std; int main(){ int row; // Rad int col; // Kolumn cin >> row; // Välj hur många '*' i bredd cin >> col; // Välj hur många '*' kolumner hög for(int i = 0;i < col;++i){ // Så länge i är mindre än col, öka i med ett för varje runda (fler *) högstupp cout << '*'; // Skriv ut '*' } cout << endl; // Ny rad for(int i = 3; i <= row;++i){ // i mindre eller lika med row. Skriv ut '*' vänsterkollumn cout << '*'; for(int j = 3; j <= col;++j){ cout << ' '; // // Utrymme mellan kanterna } cout << '*' << endl; // Högerkolumn } for(int i = 0;i < col;++i){ cout << '*'; // Längstner } return 0; }

Har inte själv kompilerat detta stycke kod men skulle gissa på att det är på ungefär. Mitt tips är att du leker med koden. Så att det ser ut så här t.ex., då vet du vilken del av koden som skriver ut vad..

Citat:

yyyyy
gxxxb
gxxxb
zzzzz

Visa signatur

i5 6600k 4 Ghz , 8 GB DDR4-RAM , Asus Strix GTX980 , 1 TB HDD + 256 GB SSD , Asus moderkort av modell jag ej minns namn på, Corsair C70 Svart

Permalänk
Hedersmedlem
Skrivet av Alex96:

Förstår inte riktigt, jag är typ noob på programering haha. Jag har ju en counter3--.

Jo men den ligger i en onåbar del av koden.
Först kör du
tempcounter=counter3;
och strax därefter
if(counter3==tempcounter||counter3==0)
Det första villkoret i if-satsen kommer ju då naturligt vis bli sann. Sen fortsätter det att loopa på samma vis oändligt.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Medlem
Skrivet av Aqualize:

Jo men den ligger i en onåbar del av koden.
Först kör du
tempcounter=counter3;
och strax därefter
if(counter3==tempcounter||counter3==0)
Det första villkoret i if-satsen kommer ju då naturligt vis bli sann. Sen fortsätter det att loopa på samma vis oändligt.

Skulle någon kunna rätta till det jag gjort fel i den då? Då kan jag kolla skillnaden och se vart felet ligger. Kan nog inte använda den koden som står ovan då vi inte kommit så lång med vilkoren än :/