-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: In Datei speichern

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2010
    Ort
    Berlin
    Alter
    17
    Beiträge
    6

    In Datei speichern

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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;
    }

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    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
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2010
    Ort
    Berlin
    Alter
    17
    Beiträge
    6
    Habe natürlich vorher schon nachgelesen, hat mir aber nicht weitergeholfen.

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von schorchi
    Habe natürlich vorher schon nachgelesen, hat mir aber nicht weitergeholfen.
    Das ist doch mal eine Aussage mit "haufenweise" Informationen darin.

    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

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    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.
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von squelver
    Registriert seit
    20.07.2006
    Ort
    Hoykenkamp
    Alter
    37
    Beiträge
    2.474
    @_R2D2, ich denke, sowas kann man auch vorschlagen oder empfehlen und nicht immer gleich rumhacken \/
    * Da geht noch was *

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2010
    Ort
    Berlin
    Alter
    17
    Beiträge
    6
    @ 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();
    }

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    @_R2D2, ich denke, sowas kann man auch vorschlagen oder empfehlen und nicht immer gleich rumhacken
    Sry, war ein bisschen unglücklich formuliert, also das sollen Ratschläge sein

    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.
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Code:
    case 'Z':
    i=500;
    printf("\n-----------------------------------------------------------------");
    printf("\nGesamtpreis\t\t%.2lf\tEuro\n",gesamt);
    
    break;
    
    printf("\n\t\tGesamtbetrag erfassen\n");
    ,,,
    Also momentan wird der Codeteil zum Speichern gar nicht ausgeführt.
    MfG
    Stefan

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    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(); 
    }
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •