Gå til innhold

fungsjon for og begyne fra et annet pungt


Anbefalte innlegg

Skrevet

hei trenger en fungsjon for og gjøre slik at programmet aldrig tar slutt

eks:

cout << "hei. skriv et tall" <<endl;
cin >> nummer;
//dette skal skje igjen og igjen
if (nummer == 1){
cout << "ok" <<endl;
{
else << "ja vel" <<endl;
//det som er over skal skje igjen og igjen

hva må jeg sette inn?

Videoannonse
Annonse
Skrevet
hei trenger en fungsjon for og gjøre slik at programmet aldrig tar slutt

eks:

cout << "hei. skriv et tall" <<endl;
cin >> nummer;
//dette skal skje igjen og igjen
if (nummer == 1){
cout << "ok" <<endl;
{
else << "ja vel" <<endl;
//det som er over skal skje igjen og igjen

hva må jeg sette inn?

cout << "hei. skriv et tall" <<endl;
cin >> nummer;
bool done = 0;
while(!done)
{
if (nummer == 1){
cout << "ok" <<endl;
{
else << "ja vel" <<endl;
}

 

Skjønte ikke helt om du ville ha hele greia til å loope, eller bare if-setingen.

Skal du loope hele greia, flytter du

bool done = 0;

while(!done)

helt til toppen.

Skrevet (endret)

For å være litt mere spesifikk; det du trenger er en loop. (når jeg var i dine sko så satte jeg pris på veldig inngående forklaringer)

 

For dette programmet er det best å bruke en While setning, men undersøk For looper også.

 

For å få programmet til å gå i en endelig løkke bruker du While som en If test, dvs. at mens det som står i parantesene til While er sant vil den gå tilbake til den første { når den møter den } som lukker While setningen.

 

<BøNilzen> valgte å bruke en bool variabel, satt til 0. 0 er det samme som false, så du kunne ha skrevet

bool done = false;

og fått akkurat samme effekten. 1 er forresten true.

 

Her er mitt forslag til en evt. main funksjon til programmet ditt:

int main()
{
   bool ferdig = false;
   while (!ferdig) // betyr: mens IKKE ferdig. Utropstegn = ikke
   { 
   cout << "hei. skriv et tall" <<endl; 
   cin >> nummer;
   if (nummer == 1)
   {
       cout << "ok" <<endl;       
       ferdig = false; // kjør i endeløs løkke    
   }
   else 
   {  
       cout << "ja vel" <<endl;   
       ferdig = true;
   }
   } // avslutter while, når programmet kommer hit hopper det tilbake til while

}

 

Håper jeg ikke fornærmer deg ved å endre på koden, men jeg ville lært mest av kodesnutten overnfor. :yes:

 

Btw. følg med i norsktimene ;) Gode topics er en dyd

Endret av Vial
Skrevet

Hvorfor bruke noen ekstra variabler?

 

while(1) // samme som while(true)

{

if(noe_som_skal_avslutte_loopen) break; // "break" hopper ut av loopen!

}

Skrevet

For en nybegynner er det enklere med litt flere variabler enn litt færre. Ettersom man lærer seg å programmere vil man bruke færre og færre.

Skrevet
1 er forresten true.

 

Kan også nevne at alt annet enn 0(false), er true.

//Masse tull her...
int a = -8;
int b = 8;
int c = 0;

if(a)
    cout << "-8 er true" << endl;
else
    cout << "-8 er false" << endl;

if(b)
    cout << "8 er true" << endl;
else
    cout << "8 er false" << endl;

if(c)
    cout << "0 er true << endl;
else
    cout << "0 er false" << endl;

Vil skrive ut:

-8 er true
8 er true

Skrevet
hei trenger en fungsjon for og gjøre slik at programmet aldrig tar slutt

eks:

cout << "hei. skriv et tall" <<endl;
cin >> nummer;
//dette skal skje igjen og igjen
if (nummer == 1){
cout << "ok" <<endl;
{
else << "ja vel" <<endl;
//det som er over skal skje igjen og igjen

hva må jeg sette inn?

cout << "hei. skriv et tall" <<endl;
cin >> nummer;
bool done = 0;
while(!done)
{
if (nummer == 1){
cout << "ok" <<endl;
{
else << "ja vel" <<endl;
}

 

Skjønte ikke helt om du ville ha hele greia til å loope, eller bare if-setingen.

Skal du loope hele greia, flytter du

bool done = 0;

while(!done)

helt til toppen.

Det er ikke noe poeng å bruke egen variabel for å kjøre en uendelig løkke.

 


while(true) {

}

for(;;) {

}

Skrevet (endret)

Det er veldig god programmeringsskikk og bruke variabler. Dessuten er det veldig tydelig at personen som stiller spørsmålet er fresh i c/c++, da er det viktig og gi så grundig veiledning som mulig.

Endret av Vial
Skrevet

Det kan umulig være god programmeringsskikk å legge av plass i minnet til variabler som ikke er nødvendig.

 

Ved å ikke bruke en variabel, er det lettere å se at løkke er uendelig, koden skal også være lesbar.

Skrevet (endret)
Det kan umulig være god programmeringsskikk å legge av plass i minnet til variabler som ikke er nødvendig.

 

Ved å ikke bruke en variabel, er det lettere å se at løkke er uendelig, koden skal også være lesbar.

nja, kommer litt an på. å alltid være ute etter å bruke minst mulig variabler kan bli en hemsko. i kompliserte strukturer er det kjekt å ha boolske variabler man kan sjekke, da enten i metodekall, i debug eller av rene oversiktlige grunner...

men når det er sagt, så er ikke bloat noe en skal være ute etter, selv om det i dette tilfellet er flisespikkeri

 

forresten så tror jeg at kompilatoren vil ta seg av dette likevell, så det er mulig argumentet er dødt...begge veier.

Endret av Legion
Skrevet

Hvis kompilatoren optimerer skikkelig så bruker den ikke minneplass til en statisk variabel med mindre man bruker volatile-keywordet.

Uansett er det bare tull med en variabel for å sjekke om en uendelig løkke skal fortsette.

Ellers er jeg enig i at på enkelte steder er det kjekt med unødvendige variabler, men ikke i dette tilfellet.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...