Gå til innhold

Ny til C++, trenger litt hjelp.


Anbefalte innlegg

Hjelp, resultat vises ikke :(

Det bare kommer et flash og vinduet forsvinner, kan tenke meg jeg har gjort noe galt siden jeg er helt ny til C++. Jeg følger en bok.

 

#include <iostream>

int main()
{
int number1;
int number2;
int sum;

std::cout << "Skriv inn et tall: ";
std::cin >> number1;

std::cout << "Skriv inn et nytt tall: ";
std::cin >> number2;

sum = number1 * number2;

std::cout << "Sum: " << sum << std::endl;

system("pause");

return 0;

}

Endret av pcbygger91
Lenke til kommentar
Videoannonse
Annonse

Fra denne tråden:

6. Når jeg kjører programmet kommer det en svart boks på skjermen i et lite sekund, og det skjer ikke noe mer. Hva er galt?

Når programmet er ferdig med å kjøre, med andre ord nesten med én gang, lukker det seg igjen (programmet returnerer). Problemet er at terminalen/konsollet programmet kjører i også lukkes igjen når programmet er ferdig. Det er flere måter å løse dette på:

- Kjør programmet direkte fra en terminal, fremfor å dobbeltklikke på ikonet. Da vil ikke terminalen lukke seg igjen etterpå.

- Sørg for at programmet venter på inndata før det lukker seg igjen. Du kan lese i denne tråden for en ekstensiv diskusjon om hva man kan gjøre og hva man bør gjøre.

 

Edit: Bare sleng inn kode for å lese et tall, evt system("pause"); rett før return 0;

Endret av jurg
Lenke til kommentar

Takk jurg! Det løste problemet.

Merkelig at noe slik ikke ikke stod forklart i boken.

 

Edit: Nytt spørsmål.

Hvordan kan jeg lage valg så jeg kan bestemme om jeg vil dele/gange/multiplisere osv?

Endret av pcbygger91
Lenke til kommentar
Takk jurg! Det løste problemet.

Merkelig at noe slik ikke ikke stod forklart i boken.

 

Edit: Nytt spørsmål.

Hvordan kan jeg lage valg så jeg kan bestemme om jeg vil dele/gange/multiplisere osv?

8301289[/snapback]

 

Tja, du kan jo bruke en switch med + / - * som caser.

Lenke til kommentar
Takk jurg! Det løste problemet.

Merkelig at noe slik ikke ikke stod forklart i boken.

 

Edit: Nytt spørsmål.

Hvordan kan jeg lage valg så jeg kan bestemme om jeg vil dele/gange/multiplisere osv?

8301289[/snapback]

 

Tja, du kan jo bruke en switch med + / - * som caser.

8302568[/snapback]

Har du et eksempel? :whistle:

Lenke til kommentar

Les inn verdi til en char-variabel, også gjør du switchen slik:

char valg;
// ....

switch(valg) {
case '+': svar = number1 + number2;
                break;
case '-':   svar = number1 - number2;
                break;
case '*':  svar = number1 * number2;
                break;
case '/':   svar = number1 / number2;
                break;
default:   std::cout << "Error blablabla\n";
}

Lenke til kommentar

Takk staalezh!

 

Edit:

#include <iostream>

int main()
{

int nr1;
int nr2;
int svar;

std::cout << "\nVelkommen.\n";

std::cout << "\nAngi tall 1: ";
std::cin >> nr1;

std::cout << "\nSkriv inn tall 2: ";
std::cin >> nr2;

char valg;

switch(valg) {
case '+': svar = nr1 + nr2;
               break;
case '-':   svar = nr1 - nr2;
               break;
case '*':  svar = nr1 * nr2;
               break;
case '/':   svar = nr1 / nr2;
               break;
default:   std::cout << "Error\n";
}

std::cout "\nHva vil du gjøre: ";
std::cin >> valg;

std::cout << "= " << svar << std::endl;

system("Pause");

return 0;

}

 

syntax error : missing ';' before 'string'

Jeg prøvde meg frem men jeg fikk en error

jeg ikke skjønte hvorfor jeg fikk, hva har jeg

gjort galt? :hmm:

Endret av pcbygger91
Lenke til kommentar

Har du sjekket om du mangler ein ';' noe sted? Dersom du poster linje-nummeret hvor feilen oppstod, så hjelper det.

 

Uansett så trur eg du må flytte switch-caset ditt lengre ned, til etter at du har hentet verdien til "valg"-variabelen din. Koden kjøres jo fra topp til bunn, og valg-variabelen din vil da vere udefinert når switch-caset kjøres.

 

Prøv det, og se om det hjelper.

Lenke til kommentar

Det fikser ikke kompileringsfeilen. Hvis du derimot husker å kalle operator<< ("<<" mellom std::cout og "\nHva vil du gjøre?"), burde det gjøre susen. :)

 

Forøvrig vil du - som Quijote også nevner - få merkelige resultater hvis du ikke leser inn input til valg før switch-setningen.

Lenke til kommentar
Hvis du derimot husker å kalle operator<< ("<<" mellom std::cout og "\nHva vil du gjøre?"), burde det gjøre susen.

At jeg ikke så den feilen :!: :blush:

#include <iostream>

int main()
{

system("title Kalkulator v0.1");

int nr1;
int nr2;
int svar;

std::cout << "\nVelkommen.\n";

std::cout << "\nAngi tall 1: ";
std::cin >> nr1;

std::cout << "\nSkriv inn tall 2: ";
std::cin >> nr2;

char valg;

std::cout << "\nHer kan du velge om du vil: ";
std::cout << "\nMultiplisere, *. Dividere, /. Substrahere, -. Addere, +.";

std::cout << "\nHva vil du gjore?: ";
std::cin >> valg;

switch(valg) {
case '+': svar = nr1 + nr2;
               break;
case '-':   svar = nr1 - nr2;
               break;
case '*':  svar = nr1 * nr2;
               break;
case '/':   svar = nr1 / nr2;
               break;
default:   std::cout << "\nError.\n";
}

std::cout << "= " << svar << std::endl;

system("Pause");

return 0;

}

Endret av pcbygger91
Lenke til kommentar

Du kan feks. lese inn sånn før switchen:

cin >> tall1 >> valg >> tall2;

 

Mens du driver på kan du jo også legge inn en if-sjekk på at man ikke kan dele på null. Og hva med å gjøre programmet litt mer robust ved å sikre at man ikke kan lese inn noe annet enn tall der det skal være tall?

 

Mye morsomt man kan gjøre :)

Lenke til kommentar

Skal se på det i morgen!

 

Edit:

#include <iostream>

 

int main()

{

 

system("title Kalkulator v0.2"); //Tittel

system("Color 0A"); //Tekst farge

 

int nr1;

int nr2;

int svar;

 

char valg;

 

std::cout << "\n >: ";

std::cin >> nr1 >> valg >> nr2;

 

switch(valg) {

case '+': svar = nr1 + nr2;

                break;

case '-':   svar = nr1 - nr2;

                break;

case '*':  svar = nr1 * nr2;

                break;

case '/':   svar = nr1 / nr2;

                break;

default:   std::cout << "Error";

}

 

system("Cls"); //Tøm skjermen

 

std::cout << "\n";

std::cout << " >: " << nr1 << " " << valg << " " << nr2 << " = " << svar << std::endl;

 

std::cout << "\n";

 

system("Pause"); //Pause

 

return 0;

 

}

 

Da var den oppdatert, men har en del andre spørsmål.

* Hvordan jeg kan jeg få til en såkalt "if" i c++?

* Er det også mulig å få programmet til å vente i et par sekunder og dermed gå videre?

* Går det an å starte fra begynnelsen av i koden og ta et nytt stykke ved hjelp av en "if" f.eks. "vil du ta et nytt stykke? (ja/nei)" ?

* Hvordan kan jeg få desimaler i svaret?

Endret av pcbygger91
Lenke til kommentar

If-sjekk så man ikke kan dele på null:

case '/':  if (nr2 != 0)
               svar = nr1 / nr2; 
            else 
              cout << "Du kan ikke dele paa null!\n"; 

 

Hvis du vil ha desimaltall kan du bruke float'er istedet for int'er.

 

Spørsmålet om å "vente" noen sekunder skjønte jeg ikke. Hvis du vil ha muligheten for å taste inn flere ganger kan du feks. sette opp en do while loop. google it :)

Lenke til kommentar

Har gjort det til nå, det er en bra måte å jobbe på.

Forresten, takk Mondain. Ligner litt på hvordan man gjør det i batch, noe som jeg drev med før C++.

 

Edit: Hvordan kan man få desimaler i svaret?

Endret av pcbygger91
Lenke til kommentar
Har gjort det til nå, det er en bra måte å jobbe på.

Forresten, takk Mondain. Ligner litt på hvordan man gjør det i batch, noe som jeg drev med før C++.

 

Edit: Hvordan kan man få desimaler i svaret?

8329536[/snapback]

 

Hei, vil sterkt anbefale boken Accelerated C++ av Koenig og Moo. Den tar for seg alt det meste grunnleggende.

Lenke til kommentar
Har gjort det til nå, det er en bra måte å jobbe på.

Forresten, takk Mondain. Ligner litt på hvordan man gjør det i batch, noe som jeg drev med før C++.

 

Edit: Hvordan kan man få desimaler i svaret?

8329536[/snapback]

 

Hei, vil sterkt anbefale boken Accelerated C++ av Koenig og Moo. Den tar for seg alt det meste grunnleggende.

8331875[/snapback]

Takk, skal se på det! :)

Lenke til kommentar
Har gjort det til nå, det er en bra måte å jobbe på.

Forresten, takk Mondain. Ligner litt på hvordan man gjør det i batch, noe som jeg drev med før C++.

 

Edit: Hvordan kan man få desimaler i svaret?

8329536[/snapback]

Hvilken bok leser du nå da? Saken er den at hvis du leser en bok, så lærer du ting som kontroll-setninger og datastrukturer (hvordan du får desimaler i svaret skjønner du f.eks. hvis du kan datastrukturer) . Dette er et sted for diskusjon rundt språket og evt. konkrete spørsmål rundt problemer o.l. -- ikke en opplæringssentral. Derfor vil du få bedre utbytte av å gjøre ting i "rekkefølge", altså "by the book". Klart det er jo lov å spørre, men når du får svar på disse spørsmålene, vil du lure på mer, osv., osv.

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å
×
×
  • Opprett ny...