läsa in ett värde med cin, därefter enter och göra en ny inläsning
hej jag undrar hur man i C++ får till att sitt program ska läsa in ett (1) värde, göra databehandling, läsa nästa värde, databehandla osv. Det ska alltså bara finnas ett (1) inläst värde i taget i programmet, det ska inte läsa in alla i en klump.
just nu kan jag bara klump läsa in värden eller att det bara blir en massa enter och när jag trycker ctrl D körs hela programmet klart inte bara inläsningen. detta är hur mitt program ser ut just nu. jag kommer alltså inte till "ange ett nytt tal om du vill"
#include <iostream> //hämtar biblioteket för input output stream
int main()
{
std::cout<<"Ange talet:"<<std::endl; //ber användare skriva in nummer
int nummer; //skapar en heltals-variabel som heter nummer, har inget värde ännu
int summa=0; //skapar en heltalsvariabel summa som börjar på 0
int raknare=0; //skapar en heltalsvariabel i som börjar på 0, detta är "talräknaren"
int stor; //skapar en heltalsvariabel för att lagra maxvärdet
int liten; //skapar en heltalsvariabel för att lagra minvärdet
float medel; //skapar en decimaltalvariabel för att lagra medelvärdet
while(std::cin>>nummer) //kör while satsen så länge det matas in tal av användare
{
std::cin>>nummer;
std::cout<<"Ange ett nytt tal om du vill:"<<std::endl;
if(raknare==0) //om det är första nummret
{
stor=nummer;
liten=nummer;
}
if(nummer>=stor) //om nummret är större än förra stor är nu det nya nummret stor stor=nummer;
if(nummer<=liten) //om nummret är mindre än förra liten är nu det nya nummret liten liten=nummer;
summa=summa+nummer; //totala summan av alla nummer
raknare=raknare+1; //"talräknaren"
}
medel=static_cast<float>(summa)/raknare; //medelvärdet
//utskrifter:
std::cout<<"Medelvärdet är:"<<medel<<std::endl;
std::cout<<"Maxvärdet är:"<<stor<<std::endl;
std::cout<<"Minvärdet är:"<<liten<<std::endl;
return 0;
}
Använd {;}-knappen för att posta formatterad kod. Mycket lättare att läsa.
#include <iostream> //hämtar biblioteket för input output stream
int main()
{
std::cout << "Ange talet:" << std::endl; //ber användare skriva in nummer
int nummer; //skapar en heltals-variabel som heter nummer, har inget värde ännu
int summa = 0; //skapar en heltalsvariabel summa som börjar på 0
int raknare = 0; //skapar en heltalsvariabel i som börjar på 0, detta är "talräknaren"
int stor; //skapar en heltalsvariabel för att lagra maxvärdet
int liten; //skapar en heltalsvariabel för att lagra minvärdet
float medel; //skapar en decimaltalvariabel för att lagra medelvärdet
while (std::cin >> nummer) //kör while satsen så länge det matas in tal av användare
{
std::cin >> nummer;
std::cout << "Ange ett nytt tal om du vill:" << std::endl;
if (raknare == 0) //om det är första nummret
{
stor = nummer;
liten = nummer;
}
if (nummer >= stor) //om nummret är större än förra stor är nu det nya nummret stor stor=nummer;
if (nummer <= liten) //om nummret är mindre än förra liten är nu det nya nummret liten liten=nummer;
summa = summa + nummer; //totala summan av alla nummer
raknare = raknare + 1; //"talräknaren"
}
medel = static_cast < float > (summa) / raknare; //medelvärdet
//utskrifter:
std::cout << "Medelvärdet är:" << medel << std::endl;
std::cout << "Maxvärdet är:" << stor << std::endl;
std::cout << "Minvärdet är:" << liten << std::endl;
return 0;
}
En while-loop fungerar som så att den körs så länge kravet uppfylls:
while (något == true) {
// Utför instruktioner
}
En hel del språk har syntactic sugar här, alltså att man inte uttryckligen behöver skriva == true, utan det räcker med:
while (något) {
// Utför instruktioner
}
Här har vi tydligen fallet att std::cin>>nummer kan utvärderas till en boolean (true/false). Jag antar att det representerar "användarens input kunde lagras i nummer", vilket är varför loopen tar slut om man anger en bokstav.
Första halvan av din kod fungerar ungefär så här:

Du kanske tänkte dig att villkoret för din while-loop skulle vara den inläsning som görs inne i loopen, men som du märker så blir det två separata inläsningar av det. Även om den faktiskt låter dig avbryta loopen med att skriva en bokstav vid vilken som helst av inläsningarna.
ohhh!! tack så mycket! flödesschemat gjorde det tydligt! jag trodde att man behövde en cin i while instruktionerna (alltså i {}) men det räcker med min cin i (). nu funkar min kod som jag vill! tack så hemskt mycket!!!