1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

C Programm in Unix

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von MoNchHiChii, 30.11.08.

  1. MoNchHiChii

    MoNchHiChii Holländischer Prinz

    Dabei seit:
    03.12.07
    Beiträge:
    1.862
    Hi,

    ich hoffe ich bin hier richtig, da ich ein C Proragmm in Unix über den Terminal geschrieben hab :p

    Code:
    #include <stdio.h>
    
    int  main()     {
    
            /* Variablen */
            int Jahr = 1;
            double Startkapital, Zinsen, Endkapital, Zinsen1;
    
                    /* Abfrage fuer Eingabe */
                    printf("Geben Sie ihr Startkapital ein: ", Startkapital);
                    scanf("%lf", &Startkapital);
                    printf("Geben sie nun den Zinsatz in Prozent ein: ", Zinsen);
                    scanf("%lf", &Zinsen);
                    printf("Zum Schluss geben Sie Bitte das erwünschte Endkapital ein: ", Endkapital);
                    scanf("%lf", &Endkapital);
    
                            /* Ausgabe */
                            printf("Jahr      Kapital am 01.01.    Zinsen       Kapital am 31.12.\n");
                            printf("-------------------------------------------------------------\n");
    
                                    /* Berrechnung + Schleifen */
                                    while (Endkapital > Startkapital)       {
    
                                    if (Startkapital <= Endkapital);
    
                                    Zinsen1 = Startkapital * Zinsen/100;
                                    printf("%2i", Jahr);
                                    printf("        ");
                                    printf("%.2lf", Startkapital);
                                    printf("              ");
                                    printf("%.2lf", Zinsen1);
                                    printf("        ");
                                    Startkapital = Zinsen1 + Startkapital;
                                    printf("%.2lf", Startkapital);
                                    printf("          \n");
                                    Jahr = Jahr + 1;
                                    }
    }
    
    das läuft soweit wie ich das will. also die ausgabe ist richtig (auch wenns vielleicht nicht super programmiert ist, bin ja anfänger) meine frage ist, wenn ich eine falsche angabe mache, gibt er mit den ersten print ausdruck raus, das ist verständlich, allerdings weiß ich nicht, wie ich es korekt änder, so das er mir eine falschmeldung anzeigt.

    zweite frage, wir sollen einbauen, das die "tabelle" nach 10zeilen ein leerezeile ausgibt, wie ist das möglich?!

    hat da für mich jmd einen tipp eine idee einen denkanstoß?!

    vielen dank schonmal
     
  2. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Du kannst doch eine Variable in der Ausgabe mitlaufen lassen die immer von 0 bis 9 zählt. Wenn diese 9 ist, gibst du einfach eine Leerzeile aus und setzt diese wieder auf 0.
    Du dem ersten Problem: Du musst die Eingabe überprüfen ob dies nur Zahlen sind (wie das genau in C nochmal war, müsste ich selber suchen). Dies kannst du in einer Schleife machen die nur x mal durchläuft.
     
    MoNchHiChii gefällt das.
  3. hooomieat

    hooomieat Erdapfel

    Dabei seit:
    30.11.08
    Beiträge:
    1
    Hallo!

    Es gibt da den Modulo-Operator. Dieser zeigt dir den Rest einer Division an.

    Beispiel:
    7%3 = 1
    5%3 = 2
    10%5 = 0

    Wenn du das weißt, dann kannst du das 10-Zeilen-Problem ganz einfach lösen.

    Die Ausgabe der ersten Zeile(n), bei fehlerhafter Eingabe, kannst mit einfachen Verzweigungen abfangen.


    Code:
    #include <stdio.h>
    
    int  main()     {
    
        /* Variablen */
        int Jahr = 1;
        int i = 0;
        double Startkapital, Zinsen, Endkapital, Zinsen1;
    
        /* Abfrage fuer Eingabe */
        printf("Geben Sie ihr Startkapital ein: ", Startkapital);
        scanf("%lf", &Startkapital);
        printf("Geben sie nun den Zinsatz in Prozent ein: ", Zinsen);
        scanf("%lf", &Zinsen);
        printf("Zum Schluss geben Sie Bitte das erwünschte Endkapital ein: ", Endkapital);
        scanf("%lf", &Endkapital);
    
        if (Startkapital > 0 && Endkapital > 0 && Zinsen > 1)
        {
            if (Startkapital < Endkapital)
            {
                /* Ausgabe */
                printf("Jahr      Kapital am 01.01.    Zinsen       Kapital am 31.12.\n");
                printf("-------------------------------------------------------------\n");
                
                /* Berrechnung + Schleifen */
                while (Endkapital > Startkapital)
                {
                    if (Startkapital <= Endkapital); //nutzlos
                    
                    Zinsen1 = Startkapital * Zinsen/100;
                    printf("%2i", Jahr);
                    printf("        ");
                    printf("%.2lf", Startkapital);
                    printf("              ");
                    printf("%.2lf", Zinsen1);
                    printf("        ");
                    Startkapital = Zinsen1 + Startkapital;
                    printf("%.2lf          \n", Startkapital);
                    
                    Jahr = Jahr + 1;
                    
                    if (Jahr%10 == 0)
                    {
                        printf ("\n");
                    }
                }
            }
            else
            {
                printf ("\nfalsche Kapital-Eingabe");
            }
        }
        else
        {
            printf ("\ndie Eingaben sollten nicht negativ sein und der Zinssatz muss >1 sein");
        }
    }
    Grüße!
     
    MoNchHiChii gefällt das.
  4. MoNchHiChii

    MoNchHiChii Holländischer Prinz

    Dabei seit:
    03.12.07
    Beiträge:
    1.862
    @drlecter
    thx, so habe ich es gemacht, nach deiner hilfe. klappt super.

    @hooomieat
    deins habe ich auch ausprobiert, klappt ebenfalls super. bei dir haben ich nur das mit den prozentsatz geändert, so das er nur größer 0 sein muss.

    ich hab nun auch, anstatt diese leerzeichen t eingebaut. danke für eure hilfe, ich hoffe das ich jemals auch helfen kann ;)
     
  5. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Also ich kann dir nur XCode ans Herz legen, das ist wesentlich komfortabler als per Terminal (vi?) zu erstellen.
    Einfach neues Projekt erstellen, dann unter "Command Line Utility" "Standart Tool" auswählen :)
     
  6. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Nicht böse sein, aber du hast die Fragestellung verstanden? Es ist glaube ich für dieses Problem vollkommen egal ob das mit vi/vim/nano/Eclipse/xCode geschrieben wurde wenn er einen Fehler in der Logik hat oder?
    Wie gesagt, nicht bös gemeint.
     
  7. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Richtig, aber da der TE schreibt, dass er über des Terminal c-Code erstellt, hatte ich da so meine bedenken. Ausserdem gehe ich bei einem Anfänger aus, dass er eventuell nicht alle Umgebungen zum coden kennt.


    OT war es, keine Frage ;)
     
  8. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Wobei, für sowas reicht das Terminal vollkommen aus. Ich tippe heute noch Code in vi. Wenn er an seine grenzen stoßen sollte, wird er sich schon melden. Klar war der Tipp gut gemeint, aber passte nicht ganz hier rein.
     
  9. MoNchHiChii

    MoNchHiChii Holländischer Prinz

    Dabei seit:
    03.12.07
    Beiträge:
    1.862
    ich schreibe über den terminal mit vi, weil wir in der uni diese umgebung nutzen. ich denke mir einfach, das es nicht verkehrt ist, das dann erstmal ein wenig zu nutzen bzw zu üben um in der uni selbst bescheid zu wissen, wenn ich dinge tun muss, bearbeiten muss. Ja ich bin anfänger ;)

    eclipse wird uns sonst von der uni empfohlen für zB java sachen.

    da hab ich jetzt ne frage zu :p eclipse oder xcode? oder kann man das nicht vergleichen?
     
  10. MoNchHiChii

    MoNchHiChii Holländischer Prinz

    Dabei seit:
    03.12.07
    Beiträge:
    1.862
    sry doppelpost

    Neue Aufgabe, neues Problem :p

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()      {
    
            srand(time(NULL));      /*Initialisiert Zufallszahl*/
            int Zufall=rand()%10+1; /*Zufallszahl*/
            int GRatezahl, Ratezahl, count=0, erraten=0; /*Variablen*/
    
            /*Ausgabe*/
            printf("Bitte geben Sie die groestmoegliche Ratezahl ein: ", GRatezahl);
            scanf("%i", &GRatezahl);
    
                    /*do while Schleife beginnt*/
                    do      {
                    printf("Geben Sie nun bitte Ihren Tipp ab: ", Ratezahl);
                    scanf("%i", &Ratezahl);
    
                    /*Wenn, Zahl richtig geraten*/
                    if(Ratezahl==Zufall)    {
                    erraten=1;
                    count++;
                    }
    
                    /*Wenn, Zahl falsch geraten*/
                    else    {
                    (Ratezahl>Zufall) ? printf("Die Zahl ist zu gross\n") : printf("Die Zahl ist zu klein\n");
                    count++;
                    }
            }
            while((erraten != 1) && (count != 0));
    
            if (erraten == 1)
            {
            printf("Mit %i Versuchen erraten!\n", count);
            }
    }
    
    dadurch das ich nun oben %10+1 gegeben hab, generiert er nur eine zufallszahl aus 1-10. das ist mir klar, mein problem ist, das ich die zu generierenden zahl, bzw maximalen wert eigentlich vorgeben soll. das mache ich mit meiner abfrage, aber wie ich es in rand() einbinde habe ich ka.

    da jmd ne idee oder nen tipp?!

    (ich brauch nicht immer ne lösung, denkanstöße oder nützliche links bin ich genauso dankbar für)
     
  11. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Jein, Eclipse ist durch die modulare Struktur sehr vielseitig. xCode ist besser in MacOS integriert. Auch die Bibliotheken werden halt alle mitgebracht. Für Eclipse musst du dir für C/C++ zusätzliche Pakete installieren. Am Ende ist beides nur ein Werkzeug.
     
  12. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    0 mod 10 = 0
    1 mod 10 = 1
    2 mod 10 = 2
    3 mod 10 = 3
    4 mod 10 = 4
    5 mod 10 = 5
    6 mod 10 = 6
    7 mod 10 = 7
    8 mod 10 = 8
    9 mod 10 = 9
    10 mod 10 = 0
    11 mod 10 = 1
    12 mod 10 = 2
    13 mod 10 = 3
    14 mod 10 = 4
    15 mod 10 = 5
    16 mod 10 = 6
    17 mod 10 = 7
    18 mod 10 = 8
    19 mod 10 = 9
    usw.

    jetzt überlege mal wie diese Liste mit Modulo 5,7,9, 15.... aussieht ;)
     
  13. MoNchHiChii

    MoNchHiChii Holländischer Prinz

    Dabei seit:
    03.12.07
    Beiträge:
    1.862
    @drlector
    also geht beides und ich als user muss entscheiden was ich besser finde.

    thx auch hierfür.

    @jamsven
    das verstehe ich gerade nicht :p
    ich verstehe nicht, wie das zu meinem problem passt. ich denke für meine zweite aufgabe gar kein Modulo benutzen zu müssen, oder täusche ich mich?
     
  14. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Jap alternativ gibt es noch NetBeans, welches ich zum Beispiel für Java Programme verwende.
    Ist ebenso modular und basiert auf Java, jedoch finde ich die "out of the box" Version besser, denn dieser hat direkt einen Interfacebuilder am Start. Hat ne gute Update und Modulverwaltung und bindet sich besser in Mac OS X ein als Eclipse. Aber das ist alles Geschmacksache im großen und ganzen tuen die zwei IDEs nicht viel.
     
  15. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    So wie ich das verstanden habe willst du dieses Spiel so verändern, dass du den Zahlenbereich, die die Random Funktion ausspuckt vom Benutzer selbst einstellen lassen willst. Die Random Funktion würde ich so lassen wie die ist, aber die Ausgabewerte würde ich mit modulo verändern.


    Wenn du irgendeine positive Zahl x modulo y nimmst, kannst du dir ziemlich sicher sein, dass das Ergebnis auf jeden Fall <y ist.
     
    #15 Jamsven, 01.12.08
    Zuletzt bearbeitet: 01.12.08
  16. MoNchHiChii

    MoNchHiChii Holländischer Prinz

    Dabei seit:
    03.12.07
    Beiträge:
    1.862
    ok ich schreib noch ein weiteres problem ^^

    also ich habe eine datei von der uni vorgegeben. zuf.c diese soll ich in meinen ordner kopieren und in meinem programm verwenden.

    meine frage, kann ich bezug auf die datei nehmen oder muss ich den inhalt in mein programm packen?!

    und ja, ansonsten hast du mein problem verstanden ich dich dafür nicht :D hihi

    sry, ich sitz schon so lang dran, das ich auch manchmal am schlauch steh. wenn ihr wüsstet wie der erste versuch aussah :D
     
  17. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Habt ihr nicht include Anweisungen gelernt? Damit kannst du am Anfang die Datei so zusagen während der compilierens einbinden.
     
  18. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Eine .c Datei nennt man auch Modul ;)
    Du müsstest die die Objekt Dateien linken, dass das funktioniert.
     
  19. MoNchHiChii

    MoNchHiChii Holländischer Prinz

    Dabei seit:
    03.12.07
    Beiträge:
    1.862
    @drlecter
    ich war jetzt gut 2wochen krank, wurde operiert. evtl habe ich es in dieser zeit vepasst. wäre natürlich doof.

    @jamsven
    danke, ich werde suchen wie es geht ;)

    ach was würd ich nur ohne euch machen :D hehe

    *edit*
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include "zuf.c"

    ich glaube das hat funktioniert :D aber das problem mit meinem vorgabewert bleibt. das habe ich auch noch nicht sorecht verstanden wie es geht.
     
  20. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Code:
    int Zufall=rand()%Gratezahl+1; /*Zufallszahl*/
    Wenn du irgendeine positive Zahl x modulo y nimmst, kannst du dir ziemlich sicher sein, dass das Ergebnis auf jeden Fall <y ist.
     

Diese Seite empfehlen