Problemer med en C++ lommeregner

Tags:    c++

<< < 12 > >>
Hej udviklere.

Jeg sidder og programmere en lommeregner i C++. Mit problem er, at når man skriver et bogstav loopeer den helt vildt, og kan kun stoppes bed ctrl+c.

Hvordan løser jeg dette problem?? Jeg har umiddelbart tænkt på noget med en if-sætning, men jeg er ikke så god til C++ endnu, så jeg håber i kan hjælpe??

Min kode er som følger:

//Lommeregner ver1.0
#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;

switch (tegn)
{
case '+':
cout << "Resultat: " << (x + y) << endl;
break;

case '-':
cout << "Resultat: " << (x - y) << endl;
break;

case '*':
cout << "Resultat: " << (x * y) << endl;
break;

case '/':
if(y != 0)
cout << "Resultat: " << (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;

}

Mvh Esben




12 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Det virker da fint hos mig:
Fold kodeboks ind/udKode 




Det er også kun hvis du f.eks. skriver

1
+
a

At den looper. det virker helt fint med kommatal. Jeg mangler bare den lille stump kode, der forbyder brugeren at skrive bogstaver.

vmh Esben







At den looper. det virker helt fint med kommatal. Jeg mangler bare den lille stump kode, der forbyder brugeren at skrive bogstaver.


Bertel Brander har skrevet om problemet her:
http://home20.inet.tele.dk/midgaard/tipc20050131.html


Jeg syntes iøvrigt at dette spørgsmål bliver stillet meget tit herinde. Kunne man ikke tilføje det til FAQ'en?



Jeg har prøvet at sætte den kode ind i mit program, men jeg kan ikke få det til at virke. Jeg er nybegynder inden for programmering, så hvis en af jer gider se på det, og evt. rette fejlene, ville jeg blive glad. min kode er som følger:

//Lommeregner ver1.0
#include <iostream>
#include <stdlib.h>
#include <process.h>
#include <sstream>

template <typename t>
bool Get(T &t, istream &is = cin)
{
string s;
getline(is, s);
stringstream ss(s);
return ss >> t;
}

int main()
{

double x, y;
char tegn, ny;


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

int x;
Get(x);

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

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

int y;
Get(y);

switch (tegn)
{
case '+':
cout << "Resultat: " << (x + y) << endl;
break;

case '-':
cout << "Resultat: " << (x - y) << endl;
break;

case '*':
cout << "Resultat: " << (x * y) << endl;
break;

case '/':
if(y != 0)
cout << "Resultat: " << (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;

}

Når jeg compiler koden, skriver den følgende fejl: unable to open includefile 'sstream.h'

En sweater er noget børn får på, når mor fryser.

Member of TAR

[Redigeret d. 07/06-05 09:56:14 af Esben Pedersen]

[Redigeret d. 07/06-05 10:09:51 af Esben Pedersen]



Du bliver nødt til at bruge Get hver gang du læser.
Du havde to versioner af x og y, en int og en double.

En version der virker:
Fold kodeboks ind/udKode 


Det er ikke mig der har bestemt at noget så simpelt som at læse fra tastaturet skal være så besværligt ;-)



Hej igen

Der er altså stadig problemer med den. Nu har jeg lagt din kode ind i min C++ compiler(Borland C++ v. 5.0.2). Herefter skriver den følgende fejl når jeg kompiler koden:

Unable to open include file 'CLHEP/config/CLHEP.h'
Unable to open include file 'CLHEP/config/StringStreram.h'

Jeg har så prøvet at hente CLHEP.h og StringStream.h på nettet og lagt dem ind i include-amppen. UDEN resultat.

Det kan vel ikke være rigtigt, at man selv skal lægge disse include koder ind i ens compiler eller hvad??

jeg takker mange gange for Jeres hjælp. Det irritere mig, at det ikke vil virke :-(

Mvh Esben


En sweater er noget børn får på, når mor fryser.

Member of TAR



Så vidt jeg kan se har du et alvorligt konfigurations problem.
Har du en CLHEP mappe? Hvor kommer den fra? Min Borland har ingen CLHEP mappe.
Hvem er det der inkluderer clhep.h?
Hvordan kompilerer du?
Er det kommando linie kompileren du bruger?



Så vidt jeg kan se har du et alvorligt konfigurations problem.
Har du en CLHEP mappe? Hvor kommer den fra? Min Borland har ingen CLHEP mappe.
Hvem er det der inkluderer clhep.h?
Hvordan kompilerer du?
Er det kommando linie kompileren du bruger?

En sweater er noget børn får på, når mor fryser.

Member of TAR

Jeg har ingen CLHEP mappe. Men når jeg compiler dit eksempel i min Borland C++ kompiler v. 5.0.2, skriver den følgende errors:

unable to open include file 'CLHEP/config/CLHEP.h
unable to open include file 'CLHEP/config/StringStream.h

Jeg bruger selve programmets kompiler knap. Derefter kører jeg programmet i cmd'en.

Hvilket program bruger du egentlig til at kompile dine C++ koder???

En sweater er noget børn får på, når mor fryser.
Member of TAR

[Redigeret d. 13/06-05 11:57:58 af Esben Pedersen]



Hvis jeg søger efter clhep på google får jeg at vide at det er:
"class library for high energy physics applications"???

Jeg bruger normalt Borlands gratis kommando-linie kompiler (5.5), den har ingen clhep headerfiler.



Hvis jeg søger efter clhep på google får jeg at vide at det er:
"class library for high energy physics applications"???

Jeg bruger normalt Borlands gratis kommando-linie kompiler (5.5), den har ingen clhep headerfiler.



Jeg prøvet at hente den. Tusind tak for hjælpen.

Mvh Esben



<< < 12 > >>
t