mboost-dp1

Problem i C++ program


Gå til bund
Gravatar #1 - Petrovic
3. jan. 2005 09:33
Jeg har programmeret en lommeregner i C++. Mit problem er, at hvis man skriver et bogstav i stedet for et tal, går den helt amok. Programmet virker perfekt, bortset fra denne irriterende "fejl".

Jeg mener, at man skal bruge if-else sætninger. Jeg har prøvet nedenstående eksempel, men det virker ikke :-(

if (x = char)
cout <<"Tallet er godkendt. Du kan fortsætte!";
else
Exit;

Jeg håber i kan hjælpe mig
På forhånd tak for hjælpen!

mvh Petrovic
Gravatar #2 - Mort
3. jan. 2005 09:34
Uha (X = char) er en tildelings operator. For at sammenligne om X er lig med char skal du bruge (X == char).
Gravatar #3 - Petrovic
3. jan. 2005 09:59
Mange tak. Så for jeg kun 2 fejl når jeg kompiler :-D

Den vil ikke acceptere, at jeg skriver

else
exit;

Men hvad for en kommando bruger C++ så til at lukke et program??
Gravatar #4 - Mort
3. jan. 2005 12:08
Prøv "exit(0);". Funktionen exit returnerer en fejlkode, hvor 0 betyder at alting gik fint.

Alt efter hvilken compiler du bruger kan det være du også skal inkludere "#include <stdlib.h>" eller "#include <process.h>" øverst i din kode.
Gravatar #5 - Petrovic
3. jan. 2005 12:38
Det har jeg prøvet. Nu ser min kode således ud:

if (x == char)
Exit(0);

Min Borland compiler skriver så 2 fejl:

i første linie skriver den: "expression syntax" efter den sluttede parentes

i anden linie skriver den: "If statement missing" efter nullet inde i parentesen.

Det kan godt være det er mig der er lidt langsom i opfattelsen, men de fejlbeskeder den kommer med, forstår jeg ikke så meget af :-(
Gravatar #6 - Mort
3. jan. 2005 12:40
Du må lige huske at der er forskel på sToRE oG SMå bOGStaVer i C og C++. "exit(0);" skal staves med små bogstaver.
Gravatar #7 - Petrovic
3. jan. 2005 12:43
Det har jeg også skrevet, men den kommer med de 2 ovennævnte fejl.
Gravatar #8 - Mort
3. jan. 2005 12:45
Hehe og så har jeg da lige gennemskuet at char ikke er en variabel du har erklæret (Det troede jeg det var), men typen char (Som er en værdi mellem -127 og 127) og den kan du ikke sammenligne med.

Det du i stedet kan gøre er at bruge sætningen:
if(x <'0' || x>'9')
exit(0);

Det den sætning gør at at checke om ascii karakteren er mindre end 48 (Tegnet "0") eller om det er større end 57 (Tegnet "9").
Gravatar #9 - Petrovic
3. jan. 2005 12:46
Hvis det er til nogen hjælp, får du her hele min programkode:

#include <iostream>
#include <stdlib.h>
#include <process.h>

int main()
{

double x, y;
char tegn, ny;

do
{
cout << "Indtast det foerste tal der skal beregnes: ";
cin >> x;

cout << "Indtast om tallene skal +,-,*,/: ";
cin >> tegn;

cout << "Indtast det andet tal der skal beregnes: ";
cin >> y;

if (x == char)
exit(0);

switch (tegn)
{
case '+':
cout << "De to tal adderet giver: " << (x + y) << endl;
break;

case '-':
cout << "De to tal substraheret giver: " << (x - y) << endl;
break;

case '*':
cout << "De to tal miltipliceret giver: " << (x * y) << endl;
break;

case '/':
if(y != 0)
cout << "De to tal divideret giver: " << (x / y) << endl;
else
cout << "Det andet tal kan ikke vaere 0!" << endl;
break;
}

cout << "Vil du proeve igen (j/n): ";
cin >> ny;

} while (ny != 'n');

"PAUSE";
return 0;

}
Gravatar #10 - Petrovic
3. jan. 2005 12:54
Mange tusind tak for hjælpen. Nu virker lommeregneren efter hensigten. Fortsat god dag!
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login