Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Kleines rechnprogramm rechnet nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.06.2005, 11:48 Uhr
~St Lucifer
Gast


Also, ich hab Praktikum in so nem Laden wo auch nen Hermes Paketshop drin ist, und deswegen muss ich jeden Tag den gesamtpreiß der Pakete ausrechnen und in so ein Formuar schreiben. Da dachte ich mir "warum schreibst dir nicht einfach nen Programm was dir den Preiß ausrechnet? "
Also wollte ich ein Prog schreiben wo man einfach nur in einer zeile mit leerzeichen getrennt hintereinader die anzahl der S pake, der M Pakete und L pakete hinschreiben muss, und das Prog soll dann den gesamtpreiß ausrechnen, geht aber irgendwie nicht.
der gibt einfach nach der eingabe der menge der Pakete ne riesen Float zahl aus.
(und wie geht das nochmal das er nur 2nachkommastellen einer floatzahl anzeigt?(wenn wir schon dabei sind^^))



C++:
#include <stdio.h>
#include <conio.h>

void main (void)
{
int s, m, l;
float ergebnis;

printf(" S   M   L\n");
scanf ("%d, %d, %d", &s, &m, &l);

ergebnis = (s*3.90)+(m*5.90)+(l*8.90);

printf("Gesamtpreiss: %f", ergebnis);

getch();
}




thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.06.2005, 11:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

und wie geht das nochmal das er nur 2nachkommastellen einer floatzahl anzeigt?(wenn wir schon dabei sind^^))



C++:
printf("Gesamtpreiss: %.2f\n", ergebnis);



Im Ansi-C Forum bitte int main verwenden und conio.h ist in deinem fall auch nicht nötig ein getchar tuts genauso...


An sonsten halte ich das Programm für nicht so den Renner... Wenn schon dann richtig mit in ner Datei speichern und Statistiken ausgeben usw. In der jetzigen Form ist es jeden Taschenrechner unterlegen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.06.2005, 12:03 Uhr
~st lucifer
Gast


ja das ist es^^, aber es soll mir ja auch nur den preiß der Pakete ausrechnen (was er bisher noch nicht tut^^).

und das geht damit schneller, und damit hats seinen einzigen zweck erfüllt.

und thx für das mit den nachkommastellen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.06.2005, 12:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
#include <stdio.h>

int main (void)
{
int s, m, l;
float ergebnis;

printf(" S   M   L\n");
scanf ("%d, %d, %d", &s, &m, &l);

ergebnis = (s*3.90)+(m*5.90)+(l*8.90);

printf("Gesamtpreis: %.2f", ergebnis);
}



funktioniert einwandfrei:


Code:
S  M  L
4, 3, 2
Gesamtpreis: 51.10




Code:

4* 3.90 = 15.60
3* 5.90 = 17.70
2* 8.90 = 17.80
---------------
          51.10


--
class God : public ChuckNorris { };

Dieser Post wurde am 01.06.2005 um 12:40 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.06.2005, 12:46 Uhr
ao

(Operator)


scanf ist böse, weil Eingabefehler sofort in die Programmlogik durchschlagen. Besser: Einlesen mit fgets in einen String, und diesen dann analysieren. Z.B. mit sscanf, da kannst du über den Rückgabewert zumindest die formale Richtigkeit der Eingabe kontrollieren. Oder über strtod.

Aber für einen ersten Test, ob der Rest klappt, versuch mal

C++:
scanf ("%d %d %d", &s, &m, &l);

ohne die Kommas im Formatstring.

Nochn Tipp: Wenn dein Programm offensichtlich unsinnige Daten hat, versuch es mit einem Debugger.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.06.2005, 12:50 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@ao
scanf liefert dir doch (wenn ich mich gerade nicht irre) die anzahl der erfolgreich eingelesenen argumente (auch wenn ich prinzipiell den von dir zitierten weg bevorzuge) so das ichs nciht gleich verteufeln würde...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.06.2005, 12:55 Uhr
~St Lucifer
Gast


aah ok thx, jetzt funktioniert es und ich kann mir das morgentliche rechnen jetzt immer sparen

thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.06.2005, 14:19 Uhr
ao

(Operator)



Zitat von Windalf:
scanf liefert dir doch die anzahl der erfolgreich eingelesenen argumente ...

Richtig, genau wie sscanf, aber wenn es unterwegs aussteigt, lässt es die bis dahin ungelesenen Zeichen im Eingabepuffer zurück, so dass man den vor dem nächsten Versuch erst leerräumen muss.

Darum bleib ich dabei: scanf ist nur dann wirklich brauchbar, wenn die Eingabe nur gültige Zeichen enthalten kann, z.B. weil sie von einer Spezial-Tastatur kommt, die nur Zifferntasten hat, oder von einem Balkencode-Leser.

ao

Dieser Post wurde am 01.06.2005 um 14:23 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: