Benutze bitte Code-Tags, um deinen Code lesbarer zu gestalten.
Google hätte dir innerhalb von 2 sec geholfen:
http://www2.hs-fulda.de/~klingebiel/c-stdlib/stdio.htm
http://www.rrzn.uni-hannover.de/file...10_DateiIO.pdf
Hallo,
ich brauche Hilfe für ein Kassenprogramm. Hier möchte ich den Gesamtpreis in einer Datei speichern, habe nur keine Lösung wie ich das hinbekommen kann. Währe nett wenn mir einer sagen kann wie das geht.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i,x=500,anzahl,wahl,groesse;
double preis=0,gesamt=0,betrag=0;
char j;
printf("\n (0)\tGesamtpreis");
printf("\n-------------------------------------------------");
printf("\n (1)\tPommes\t\t\t1.00 Euro");
printf("\n (2)\tKroketten\t\t1.20 Euro");
printf("\n (3)\tCurrywurst\t\t2.10 Euro");
printf("\n (4)\tSchaschlik\t\t3.50 Euro");
printf("\n (5)\tSchnitzel\t\t4.00 Euro");
printf("\n (6)\tHamburger\t\t2.20 Euro");
printf("\n (7)\tCheeseburger\t\t2.50 Euro");
printf("\n (8)\tFrikadelle\t\t1.80 Euro");
printf("\n (9)\tCola Fanta Wasser\t1.00 Euro");
printf("\n(10)\tSalate\t\t\t2.00 Euro");
printf("\n(11)\tKetchup Mayonaise \t0.30 Euro");
printf("\n(12)\tExtras");
printf("\nAuswahl bitte:");
for (i=0;i<x;i++)
{
anzahl=0;
scanf("%i",&wahl);
if (wahl==1)
{
printf("\nkleine (1)\tmittlere (2)\tgrosse (3) ");
scanf("%i",&groesse);
if (groesse==1)
{
preis=1;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tkl. Pommes\t%.2lf\tEuro",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (groesse==2)
{
preis=1.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tm. Pommes\t%.2lf\tEuro",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (groesse==3)
{
preis=2;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tgr. Pommes\t%.2lf\tEuro",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
}
if (wahl==2)
{
preis=1.20;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tKroketten\t%.2lf\tEuro",anzahl,preis *anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==3)
{
preis=2.10;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tCurrywurst\t%.2lf\tEuro",anzahl,prei s*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==4)
{
preis=3.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tSchaschlik\t%.2lf\tEuro",anzahl,prei s*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==5)
{
preis=4.0;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tSchnitzel\t%.2lf\tEuro",anzahl,preis *anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==6)
{
preis=2.20;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tHamburger\t%.2lf\tEuro",anzahl,preis *anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==7)
{
preis=2.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tCheeseburger\t%.2lf\tEuro",anzahl,pr eis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==8)
{
preis=1.80;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tFrikadelle\t%.2lf\tEuro",anzahl,prei s*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==9)
{
preis=1.0;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tGetraenk\t%.2lf\tEuro",anzahl,preis* anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==10)
{
preis=2.0;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tSalat\t%.2lf\tEuro",anzahl,preis*anz ahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==11)
{
preis=0.30;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tKetchup/Mayo\t%.2lf\tEuro",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (wahl==12)
{
printf("Betrag eingeben: ");
scanf("%lf",&preis);
printf("\n\tExtras\t%.2lf\tEuro",preis);
gesamt=gesamt+preis;
}
if (wahl==0)
{
i=500;
printf("\n-----------------------------------------------------------------");
printf("\nGesamtpreis\t%.2lf\tEuro\n",gesamt);
}
}
system("PAUSE");
return;
}
Benutze bitte Code-Tags, um deinen Code lesbarer zu gestalten.
Google hätte dir innerhalb von 2 sec geholfen:
http://www2.hs-fulda.de/~klingebiel/c-stdlib/stdio.htm
http://www.rrzn.uni-hannover.de/file...10_DateiIO.pdf
Habe natürlich vorher schon nachgelesen, hat mir aber nicht weitergeholfen.
Das ist doch mal eine Aussage mit "haufenweise" Informationen darin.Zitat von schorchi
Was genau erwartest du denn jetzt eigentlich vom Forum? Dass es dir die komplette Thematik in allen Einzelheiten und Details nochmal vorkaut? Das mindeste ist doch wohl, dass du uns erst mal wissen lässt, was genau du denn nicht verstanden hast, oder was genau denn nun nicht klappt.
Und so nebenbei: wo ist eigentlich der Bezug zu AVRs?
PS: Eines (was aber nichts mit deiner eigentlichen Frage zu tun hat) kann ich dir aber auch so schon sagen: Geldbeträge in Floats zu packen ist keine wirklich gute Idee. Das ist praktisch der klassische Anwendungsfall für Festkomma-Arithmetik.
MfG
Stefan
Hab mir deinen Code nochmal durchgeschaut und finde ihn SCHRECKLICH. Hast du noch nie etwas von swich & case gehört? Außerdem dürfte sich das gar nicht compilieren lassen, da du keinen Wert zurück gibst, von deinem sonstigen Programmierstil, wie Variablendefinitionen usw. will ich gar nicht reden.
Ich will dich nicht beleidigen, aber gerade als Anfänger ist es wichtig, sich einen guten Programmierstil anzugewöhnen.
@_R2D2, ich denke, sowas kann man auch vorschlagen oder empfehlen und nicht immer gleich rumhacken \/
@ sternst, mit AVRs hat es wohl nichts zu tun, aber ich dachte, dass ihr mir vielleicht doch helfen könnt.
@_R2D2
Habe deine Empfehlung gerne angenommen. Das Programm nochmal anders geschrieben.
Vielleicht ist es ja so etwas besser.
Das Programm lässt sich bei mir compilieren, aber es speichert einfach nicht in eine Datei und ich weiß nicht warum.
Wenn es euch nicht zu blöd ist, wäre es nett, wenn mir einer einen Rat geben kannn, was ich falsch mache.
Auch wenn der Quellcode nicht so prima ist, aber ich fange ja gerade erst an zu programmieren.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i,y=500,anzahl,groesse;
double preis=0,gesamt=0,betrag=0;
char eingabe,antwort='N';
FILE *stream;
char dateiname[67];
do
{
system("cls");
printf("\n (Z)\tGesamtpreis");
printf("\n-------------------------------------------------");
printf("\n (A)\tPommes\t\t\t1.00 Euro");
printf("\n (B)\tKroketten\t\t1.20 Euro");
printf("\n (C)\tCurrywurst\t\t2.10 Euro");
printf("\n (D)\tSchaschlik\t\t3.50 Euro");
printf("\n (E)\tSchnitzel\t\t4.00 Euro");
printf("\n (F)\tHamburger\t\t2.20 Euro");
printf("\n (G)\tCheeseburger\t\t2.50 Euro");
printf("\n (H)\tFrikadelle\t\t1.80 Euro");
printf("\n (I)\tCola Fanta Wasser\t1.00 Euro");
printf("\n (J)\tSalate\t\t\t2.00 Euro");
printf("\n (K)\tKetchup Mayonaise \t0.30 Euro");
printf("\n (L)\tExtras");
printf("\nAuswahl bitte:");
for (i=0;i<y;i++)
{
anzahl=0;
eingabe=getchar();
switch(toupper(eingabe))
{
case 'A':
do
{
printf("\nkleine (1)\tmittlere (2)\tgrosse (3)\tWahl:");
scanf("%i",&groesse);
}while(groesse!=1&&groesse!=3&&groesse!=2);
if (groesse==1)
{
preis=1;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tkl. Pommes\t%.2lf\tEuro\tWahl:",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (groesse==2)
{
preis=1.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tm. Pommes\t%.2lf\tEuro\tWahl:",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (groesse==3)
{
preis=2;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tgr. Pommes\t%.2lf\tEuro\tWahl:",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
break;
case 'B':
preis=1.20;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tKroketten\t%.2lf\tEuro\tWahl:",anzah l,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'C':
preis=2.0;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tCurrywurst\t%.2lf\tEuro\tWahl:",anza hl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'D':
preis=3.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tSchaschlik\t%.2lf\tEuro\tWahl:",anza hl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'E':
do
{
printf("\nWiener(1)\tJaeger (2)\tZigeuner (3)\tWahl:");
scanf("%i",&groesse);
}while(groesse!=1&&groesse!=3&&groesse!=2);
if (groesse==1)
{
preis=4.0;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tWienerschnitzel\t%.2lf\tEuro\tWahl:" ,anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (groesse==2)
{
preis=4.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tJaegerchnitzel\t%.2lf\tEuro\tWahl:", anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
if (groesse==3)
{
preis=4.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tZigeunerschnitzel\t%.2lf\tEuro\tWahl :",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
}
break;
case 'F':
preis=2.20;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tHamburger\t%.2lf\tEuro\tWahl:",anzah l,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'G':
preis=2.50;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tCheeseburger\t%.2lf\tEuro\tWahl:",an zahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'H':
preis=1.80;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tFrikadelle\t%.2lf\tEuro\tWahl:",anza hl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'I':
preis=1.0;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tGetraenk\t%.2lf\tEuro\tWahl:",anzahl ,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'J':
preis=2.0;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tSalat\t%.2lf\tEuro\tWahl:",anzahl,pr eis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'K':
preis=0.30;
printf("\nAnzahl: ");
scanf("%i",&anzahl);
printf("\n%i\tKetchup/Mayo\t%.2lf\tEuro\tWahl:",anzahl,preis*anzahl);
gesamt=gesamt+preis*anzahl;
break;
case 'L':
printf("Betrag eingeben: ");
scanf("%lf",&preis);
printf("\n\tExtras\t%.2lf\tEuro\tWahl:",preis);
gesamt=gesamt+preis;
break;
case 'Z':
i=500;
printf("\n-----------------------------------------------------------------");
printf("\nGesamtpreis\t\t%.2lf\tEuro\n",gesamt);
break;
printf("\n\t\tGesamtbetrag erfassen\n");
printf("\nSpeichern unter >");
gets (dateiname);
if ((stream = fopen(dateiname,"w")) == NULL)
{
printf("Fehler beim oeffnen!!");
exit(1);
}
fprintf(stream,"\nGesamtbetrag\t\t%.2lf\tEuro\n",g esamt);
fclose(stream);
}
}
printf("\nNeuer Kunde?\t(J) (N): ");
antwort=toupper(getch());
}while(antwort!='N');
getch();
}
Sry, war ein bisschen unglücklich formuliert, also das sollen Ratschläge sein@_R2D2, ich denke, sowas kann man auch vorschlagen oder empfehlen und nicht immer gleich rumhacken
Ich denke, dass das mit dem Dateinamen Probleme gibt. Probiere mal einen festen Dateinamen anzugeben. Außerdem kannst du mal fwrite() probieren. fprintf() habe ich noch nie benützt. Bist du sicher, dass die Codestelle überhaupt erreicht wird (ich kann das in deinem Code nicht so gut erkennen, da er immer noch unglücklich formatiert ist - packe ihn mal in [code ] //dein Code [/code ] Tags (ohne Leerzeichen), dann wird er gleich viel übersichtlicher dargestellt.
Also momentan wird der Codeteil zum Speichern gar nicht ausgeführt.Code:case 'Z': i=500; printf("\n-----------------------------------------------------------------"); printf("\nGesamtpreis\t\t%.2lf\tEuro\n",gesamt); break; printf("\n\t\tGesamtbetrag erfassen\n"); ,,,
MfG
Stefan
Kann an einer fehlerhaften Klammer der Fehler liegen? Ich hab es mal korrigiert:
Code:break; } // sollte hier nicht eine Klammer hin, um switch zu beenden? printf("\n\t\tGesamtbetrag erfassen\n"); printf("\nSpeichern unter >"); gets (dateiname); if ((stream = fopen(dateiname,"w")) == NULL) { printf("Fehler beim oeffnen!!"); exit(1); } fprintf(stream,"\nGesamtbetrag\t\t%.2lf\tEuro\n",gesamt); fclose(stream); //} hier an falscher Stelle? } printf("\nNeuer Kunde?\t(J) (N): "); antwort=toupper(getch()); }while(antwort!='N'); getch(); }
Lesezeichen