Inlägg
Detta funkade. // Tack.
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
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;
}
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)
- Vad lyssnar du på just nu?16k
- Ny teknik spårar individer via Wifi21
- Hur investerar ni?12k
- Vilken är den bästa mus du ägt?105
- Bilder på ditt senaste inköp (2025) [inga produktbilder]1,5k
- Söker ny färdigbyggd gaming PC6
- Bredband2 märklig prishöjning?25
- WMR, Reverb G25
- Vilken film såg du senast?15k
- Asus ROG Xbox Ally X med Bazzite – Sänkt blodtryck och höjd prestanda28
- Köpes Sökes Cooler Master NR200P
- Säljes Komplett speldator, RX6800, i5 10600k osv
- Säljes Ryzen 9 9900X3D - ny & oöppnad
- Säljes LG C2 42"
- Säljes Datorskärm + kringutrustning
- Säljes RTX 3080, Ryzen 9 3900x, DDR4, x570 am4, h440
- Säljes Ubiquiti EdgeRouter PoE
- Säljes Gamingdator 3070ti/5700x/32gb ram
- Säljes AMD Ryzen 3900x AM4
- Säljes Äldre stationär med GTX 1070, Intel i7-4770K, 32 GB, 1 TB HDD
Tester av grafikkort, processorer m.m.
- Asus ROG Xbox Ally X med Bazzite – Sänkt blodtryck och höjd prestanda28
- Snabbtest: Steelseries Nova Elite – prissatt för eliten69
- Asus ROG Xbox Ally X - Väl presterande, väl frustrerande49
- Battlefield 6 - En riktigt väloljad krigsmaskin118
- HAVN BF 360 Flow – små detaljer gör stor skillnad52
- Asus BTF 2.5 – för dig som har något att dölja27
- Snabbtest: Geforce Now RTX 5080 – dags att dumpa din speldator?109
- Cooler Master Masterhub – som Stream Deck fast dyrare och sämre10
- Asus Geforce RTX 5080 Noctua OC Edition - Ich bin ein believer!65
- AMD Ryzen Threadripper 9980X & 9970X – bäst i klassen31
Externa nyheter
Spelnyheter från FZ