Gå til innhold

Ny til C++, trenger litt hjelp.


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet (endret)

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
Skrevet (endret)

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
Skrevet
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.

Skrevet
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:

Skrevet

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";
}

Skrevet (endret)

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
Skrevet

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.

Skrevet

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.

Skrevet (endret)
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
Skrevet

Neste utfordring nå kan jo være at du skriver inn alt på en linje, og får et svar med engang. Litt tungvindt det du har nå :)

 

Altså, input vil bare være:

 

2 + 2

 

Output:

 

= 4.

Skrevet

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 :)

Skrevet (endret)

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
Skrevet

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 :)

Skrevet

Jeg tror du burde ta en ting om gangen. Hvis du leser en bok (noe du burde), så følg den. Da lærer du ting når du burde lære det, og ikke minst på en god måte, og ofte i en sammenheng også.

Skrevet (endret)

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
Skrevet
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.

Skrevet
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! :)

Skrevet
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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...