Inlägg

Inlägg som Stu123 har skrivit i forumet
Av Stu123

Tackar så mycket.

Tack så mycket allihop nu fungerar program som det skall. La till if kondition till de sista cout satsen och det fixade slut problemet med. 🙏🏼🙏🏼🙏🏼

Av Stu123

Detta funkade. // Tack.

Av Stu123

Tack så mycket, nu avslutas Loopet om man matar in värde mindre än noll och program fungerar som det är fler tävlande, men om man matar in värde mindre än noll som första tävlande räknar programmet ut vinnare ändå, trots att programet ska avslutas och inte gå igenom loop.

programkörning med -1 ger detta:

Startnummer? -1
Inga tävlande
Programmet avslutas
Vinnare är Startnr: 0 // Härifrån ska det inte finnas med.
Tim:24 Min: 0 Sek: 0
Antal tävlande:0
Programmet avslutas
Program ended with exit code: 0

Av Stu123

Ni får mer än gärna ändra i programmet.

Vet inte om jag företåt er rätt, men det la till else till do satsen, då blir det fortfarande fel. Retur 0 får vi endast använda på slutet av programmet.
PS! har just börjat med programmering så ursäkta om jag har svårt att hänga med era kommentarer.

#include <iostream> #include <math.h> using namespace std; int main () { int vinnandesek, vinnandenmin, vinnandetimme, start_min, start_tim, mal_sek, mal_min, mal_tim; int vinnarnummer = 0, startnummer, start_tid, start_sek, mal_tid, tid=0, minst=24*60*60, antal=0; const int dygn = 24*60*60; cout << "Startnummer? "; cin >> startnummer; if ( startnummer<=0) { cout << "Inga tävlande \n" << "Programmet avslutas " << endl; // Stoppar programmet direkt. } else if(startnummer>=0) { antal = antal + 1; // Program läser in antal tävlande, //startar på 0 för varje varv +1! cout << "Starttid? " << endl; cin >> start_tim>>start_min>>start_sek; // Räknar ut starttiden direkt. start_tid = start_tim*3600 + start_min*60 + start_sek; cout << "Måltiden? "<<endl; cin >> mal_tim>>mal_min>>mal_sek; // Program sparar måltiden direkt. mal_tid = (mal_tim*3600 + mal_min*60 + mal_sek); if (start_tid < mal_tid) { tid = mal_tid - start_tid; } else if (start_tid > mal_tid) { tid = mal_tid + (dygn - start_tid); // Om loppet passear midnatt måste program //ta dygnet minus starttiden. } if (tid < minst) // Program räknar jämför ny löpares tid med //tidigare löpares tid. { minst = tid; vinnarnummer = startnummer; } cout << "Startnummer? "; // Startar nästa tävlande. cin >> startnummer; } while (startnummer>0); vinnandetimme=minst/3600; vinnandenmin=minst/60 - vinnandetimme*60; vinnandesek=minst%60; cout << "Vinnare är Startnr: " << vinnarnummer << endl; cout << "Tid:" <<vinnandetimme<<"timmar "<<vinnandenmin<<"minuter "<<vinnandesek<<"sekunder "<<endl; cout << "Antal tävlande:" << antal << endl; cout << "Programmet avslutas" << endl; return 0; }

Av Stu123

Hjälp med C++ program

Hej!

ska skriva ett program som läser in de tävlandes startnummer, tider och räknar ut vinnare.
vi får inte använda break,retur etc, utan endast av logisk uttryck. Jag har lyckats med att skriva koden men fastnat i loop.

Program som läser in startnummer, starttid och måltid för en godtycklig följd av tävlande idrottstävlingen. Startnummer för en tävlande kan vara ett heltal större än noll (0). Start- och måltid anges som tre heltal: timme, minut och sekund. Om program får start nummer -1 ska den säga ifrån och avslutas och inte fortsätta loppet. i mitt fall fortsätter program till starttid vilket det inte ska göra.
Skulle uppskatta hjälp.

#include <iostream> #include <math.h> using namespace std; int main () { int vinnandesek, vinnandenmin, vinnandetimme, start_min, start_tim, mal_sek, mal_min, mal_tim; int vinnarnummer = 0, startnummer, start_tid, start_sek, mal_tid, tid=0, minst=24*60*60, antal=0; const int dygn = 24*60*60; cout << "Startnummer? "; cin >> startnummer; if ( startnummer<=0) { cout << "Inga tävlande \n" << "Programmet avslutas " << endl; // Stoppar programmet direkt. } do { antal = antal + 1; // Program läser in antal tävlande, //startar på 0 för varje varv +1! cout << "Starttid? " << endl; cin >> start_tim>>start_min>>start_sek; // Räknar ut starttiden direkt. start_tid = start_tim*3600 + start_min*60 + start_sek; cout << "Måltiden? "<<endl; cin >> mal_tim>>mal_min>>mal_sek; // Program sparar måltiden direkt. mal_tid = (mal_tim*3600 + mal_min*60 + mal_sek); if (start_tid < mal_tid) { tid = mal_tid - start_tid; } else if (start_tid > mal_tid) { tid = mal_tid + (dygn - start_tid); // Om loppet passear midnatt måste program //ta dygnet minus starttiden. } if (tid < minst) // Program räknar jämför ny löpares tid med //tidigare löpares tid. { minst = tid; vinnarnummer = startnummer; } cout << "Startnummer? "; // Startar nästa tävlande. cin >> startnummer; } while (startnummer>0); vinnandetimme=minst/3600; vinnandenmin=minst/60 - vinnandetimme*60; vinnandesek=minst%60; cout << "Vinnare är Startnr: " << vinnarnummer << endl; cout << "Tid:" <<vinnandetimme<<"timmar "<<vinnandenmin<<"minuter "<<vinnandesek<<"sekunder "<<endl; cout << "Antal tävlande:" << antal << endl; cout << "Programmet avslutas" << endl; return 0; }

Resultatet ser ut så här:

Startnummer? -1
Inga tävlande
Programmet avslutas
Starttid? (detta ska inte komma med, och vi får inte använda break, retur...etc)