Gå til innhold

Reprogramert, men problemer med looping


Anbefalte innlegg

Reprogramert en tidligere publisert kode, med bruk av temp variabler for så å kopiere verdiene til 2 nye variabler.

 

koden ligger her..

 

jeg skulle gjerne hatt koden til å regne ut antall runder på feks. 10000meter (den er i boks), men når det kommer til passeringstider osv. så får jeg skrevet inn passering for 1 og 2 KUN en gang før den spør om jeg il avslutte.

 

Noen som kan hjelpe meg?

Lenke til kommentar
Videoannonse
Annonse

Greiere om du legger koden rett inn her vha "KODE" og "SKJUL" taggene.

 

Klikk for å se/fjerne innholdet nedenfor

// Program skrevet av Bjørn Idar Kristiansen 27.09.2007
// Funksjonalitet: Gjøre jobben for skøytekommentatorene enklere
// og raskere slik at de lett kan finne forrige passeringstid osv.

#include <iostream>

using namespace std;

struct loper {
 int nr, ant_passeringer, mm, ss, hh;
 float tid_hittil;

};

int main()
{
 int distanse,
  ttot,
  tloper,
  ant_runder;

 char svar;

 loper nr, nr1, nr2;

 nr.ant_passeringer = 0;
 nr.mm = 0;
 nr.ss = 0;
 nr.hh = 0;

 nr1.ant_passeringer = 0;
 nr1.mm = 0;
 nr1.ss = 0;
 nr1.hh = 0;

 nr2.ant_passeringer = 0;
 nr2.mm = 0;
 nr2.ss = 0;
 nr2.hh = 0; 

 loper temp;
 temp.mm = 0;
 temp.ss = 0;
 temp.hh = 0;
 temp.tid_hittil = 0;

 
 cout << "Tast inn distanse (500, 1000,";
 cout << " 1500, 3000, 5000, 10000) :";
 cin  >> distanse;

 while(distanse != 500 && distanse != 1000
       && distanse != 1500 && distanse != 3000
   && distanse != 5000 && distanse != 10000)
 {
   cout << "\nUlovlig distanse, pr0v igjen!\n";
   cout << "Tast inn distanse (500, 1000,";
   cout << " 1500, 3000, 5000, 10000) :";
   cin  >> distanse;
 }

 ant_runder = distanse / 400;        	// Regner ut antall runder
   if(distanse % 400 != 0 )      // Legger til én om svaret. 
  ant_runder ++;        // er et desimaltall
do
{
 do
{

ttot = 0;
tloper = 0;

nr = ((tloper == 1) ? nr1 : nr2);

cout << "Tast inn l0pernummer (1-2) :";
cin  >> tloper;

while(tloper < 1 || tloper > 2)
{
  cout << "Tast inn l0pernummer (1-2) :";
  cin  >> tloper;
}

for( tloper = 1; tloper <= 2; tloper++)
{
  int m = 0, s = 0, h = 0;        	// Lager en temp. variabel
               // for forkorting
  cout << "\nTast inn passeringstid (mm ss hh) for l0per" << tloper << ": ";
  cin  >> m >> s >> h;
  
  while(m < 0 || m > 20 || s < 0 || s > 59
 	|| h < 0 || h > 99)
  {
 cout << "\nUgyldig paseringstid\n";
 cout << "Tast inn passeringstid (mm ss hh): ";
 cin  >> m >> s >> h;
  }

  cout << "Passeringstid: \n";
  cout << m << ':' << s << ':' << h;
  ant_runder = nr.ant_passeringer;
  

  temp.tid_hittil = (m*60)+s+(h/100);
               // Kopierer over hjelpevar.
  temp.mm = m; temp.ss = s; temp.hh = h;    	// til temp 

 }//END OF FOR LOOP
  
  if (tloper == 1) 
  {
 nr = nr1; 
 nr1.ant_passeringer--;
 nr1.tid_hittil = temp.tid_hittil;
  }
     else 
  { 
  nr = nr2;
  nr2.ant_passeringer--;
  nr2.tid_hittil = temp.tid_hittil;
  }

  while(nr1.ant_passeringer > 0 && nr2.ant_passeringer > 0)
  {
 while(tloper < 1 || tloper > 2)
 {
  cout << "Tast inn l0pernummer (1-2) :";
  cin  >> tloper;
 }
  }

}while(nr1.ant_passeringer > 0 && nr2.ant_passeringer > 0);

  
 

cout << "\n\nFlere par? (j/N): ";
cin  >> svar;
svar = toupper(svar);

}while(svar == 'J');

 return 0;
}

 

Kan du legge inn flere kommentarer? F.eks //denne løkka gjentas til løperne er ferdige. leser inn rundetidene og skriver ut ... til slutt.

 

Det må være noe galt med betingelsen som får løkka til å avslutte.. eller så blir en betingelse aldri sann. Hakke satt meg inn i det. ... Du kan prøve en debugger og se hvordan koden gjennomløpes.

 

Lykke til :)

Endret av JAPCU
Lenke til kommentar

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...