22. juli 2003 - 12:08Der er
49 kommentarer og 1 løsning
Problemer med while løkke til lommeregner
#include <iostream> #include <string> #include <windows.h> using namespace std; //Starter scriptet int main() { int tal; // Lige noget tekst så folk fatter hvad de skal vælge ;)! cout << "Skriv disse tal for diverse funktioner\n"; cout << "1. For at plusse\n"; cout << "2. For at minusse\n"; cout << "3. for at gange\n"; cout << "4. for at dividerer\n\n"; do { cout << "Skriv saa det tal for hvilken funktion du vil bruge: "; cin >> tal; } while( strcmp(tal) <=4) // Her starter min swticher switch(tal) { // Case 1 som er plus ;) case 1: // Variablerne // Og hvor koden skal have inputsne // Og som den så regner ud // Det er her der skal være en while løkke // Så man kan skifte til næste case // Og enten dividerer, gange eller trække fra // Eller prøve igen float forstetal, andettal; cout << "Skriv forste tal: "; cin >> forstetal; cout << "Skriv andet tal: "; cin >> andettal; cout << "\n";
default: cout << "ugyldig vaerdi"; } } return 0; } // Programmeret af Mikael // Alle rettigheder tilhører overstående ejer - må ikke kopieres, benyttes, gives videre // uden tilladelse fra mig. Kontakt muligheder kan ses nedenunder // Spørgsmål og kommentarer kan stilles på #TBA.CS på Quakenet // Eller på min e-mailadresse: mom33@hotmail.com // ttN`
Altså mit problem er at jeg gerne vil have en do while løkke(eller en anden while løkke), så man skal skrive et tal igen hvis man skriver et tal der er større end 4, og hvis man skriver 0
en der kan hjælpe med det?!
Det skal lige siges jeg har prøvet at lave en, så det kan man vidst se i koden ;)!
cout << "Skriv disse tal for diverse funktioner\n"; cout << "1. For at plusse\n"; cout << "2. For at minusse\n"; cout << "3. for at gange\n"; cout << "4. for at dividerer\n\n"; do { cout << "Skriv saa det tal for hvilken funktion du vil bruge: "; cin >> tal; } while( tal<1 || tal>4)
aaah, lige mig der ikke var vågen der! Det script er delvist det jeg leder efter - men hvergang man har plusset osv, vil jeg gerne have at man kan blive ved med at plusse hvis det er det... og skift hurtigt til en anden case
helt uden for løkkerne og så kun indtaste et tal inde i løkkerne.
og inde i switchen så
case 1: // her havde jeg nok valg at brug char, fx. '+', istedet. cout << "Indtast tal der skal adderes"; cin >> operant; resultat += operant; // pas på når du kommer til divider cout << "resultat = " << resultat << endl; break;
ttn-> Tak for info. Jeg *troede* at når man brugte cin så læste man bytes fra stdin. Jeg kan godt se, at tal er defineret som int, men hvad sker der, hvis man taster 'A'? Bliver int så ikke 65? ... eller fejler programmet?
men vil lige sige at jeg føler jeg er blevet stærkere på det med do... while løkker, fandme nice at få sådan nogle ting at vide... stærker ens viden :D
char funk; cout << "Vælg funktion\n"; cout << "+ For at plusse\n"; cout << "- For at minusse\n"; cout << "* for at gange\n"; cout << "/ for at dividerer\n\n";
// Include files #include <iostream> #include <string> #include <windows.h> // Så jeg ikke behøver at skrive std::: using namespace std; //Starter scriptet int main() { // Sætter variablen cont // Og do gør sådan at brugeren har valget // Mellem at kunne fortsætte // Eller lade programmet afslutte char cont; do { // indsæt hele indmaden inkl. løkke og switch char tegn; // Lige noget tekst så folk fatter hvad de skal vælge ;)! cout << "Skriv disse tal for diverse funktioner\n"; cout << "+ For at plusse\n"; cout << "- For at minusse\n"; cout << "* for at gange\n"; cout << "/ for at dividerer\n\n"; // Gør lige sådan at man ikke kan vælge et tal der er højere end 4 // eller mindre end 1 do { cout << "Skriv saa det tal for hvilken funktion du vil bruge: "; cin >>tegn; // Tjekker om tallene er rigtige // Hvis man skriver 0, eller et tal over 4 // Vil koden tage det forfra // Indtil brugeren skriver et gyldigt tal } while(tegn!='+' && funk!='-' && funk!='*' && funk!='/'); // Variablerne til alle de tal man kan få // ved alle muligheder(pluse, minusse osv.) float forstetal1, andettal1; float forstetal2, andettal2; // Her starter min swticher switch(tegn) { // Case 1 som er plus ;) case +: // Gør så man kan blive ved med at plusse do { // Programmet skal lige have de tal brugeren skal regne ud cout << "Skriv forste tal: "; cin >> forstetal1; cout << "Skriv andet tal: "; cin >> andettal1; cout << "\n"; // Her regner programmet ud hvad de to tal bliver cout << forstetal1 << "+" << andettal1 << " er " << forstetal1+andettal1; // Mulighed for at fortsætte med at plusse cout << "\n\nVil du fortsaette med at plusse?(Y/N): "; cin >> cont; // Gør at man både kan skrive y og Y som svar ;)! } while(cont=='Y' || cont=='y'); // Hvis N, så kommer breaket, og man ryger ud af casen og switchen) break; // Case 2 som er minusse case -: // Gør så man kan blive ved med at plusse do { // Programmet skal lige have de tal brugeren skal regne ud cout << "Skriv forste tal: "; cin >> forstetal2; cout << "Skriv andet tal: "; cin >> andettal2; cout << "\n"; // Her regner programmet ud hvad de to tal bliver cout << forstetal2 << "-" << andettal2 << " er " << forstetal2-andettal2; // Mulighed for at fortsætte med at plusse cout << "\n\nVil du fortsaette med at minusse?(Y/N): "; cin >> cont; // Gør at man både kan skrive y og Y som svar ;)! } while(cont=='Y' || cont=='y'); // Hvis N, så kommer breaket, og man ryger ud af casen og switchen) break; } // Spørger om brugeren vil fortsætte med at regne i en cout << "\n\nVil du vaelge paa ny om du vil plusse, minusse osv?(Y/N): "; cin >> cont; cout << "\n\n"; // Gør sådan at man både kan skrive y og Y som svar ;)! } while(cont=='Y' || cont=='y'); // Afslutningshilsen cout << "Ok, vi ses maaske igen!!!"; return 0; } // Programmeret af Mikael // Alle rettigheder tilhører overstående ejer - må ikke kopieres, benyttes, gives videre // uden tilladelse fra mig. Kontakt muligheder kan ses nedenunder // Spørgsmål og kommentarer kan stilles på #TBA.CS på Quakenet // Eller på min e-mailadresse: mom33@hotmail.com // ttN`
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.