Programmier Tagebuch

Präsentation und Organisation von eigenen Projekten
Hallou
Beiträge: 25
Registriert: Mi Jan 09, 2013 3:20 pm

Re: Programmier Tagebuch

Beitrag von Hallou » Di Jan 15, 2013 6:09 pm

Lass das "\n" bei scanf weg
Weißt du, dass du mir gerade den Tag gerettet hast? Das eben Berechnete Ergebnis stimmt aufeinmal (werde es noch mit ein paar anderen Werten versuchen) und Problem 1. ist auch verschwunden.

Zum Zeilenabstand: Ich möchte ja, dass das berechnete Ergebnis etwas von der Rechnung selbst getrennt wird. Wenn ich \n bei scanf reinschreibe, kommt nur mist raus (hat man ja gesehen ^^). Wenn ich es aber beim Print Befehl 1 Zeile darüber einfüge, verschiebt sich nur der Eingabebereich für den "scanf Wert". Gibts noch irgentwelche Alternativen, wie man Zeilen frei lassen kann?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Programmier Tagebuch

Beitrag von Xin » Di Jan 15, 2013 6:16 pm

Hallou hat geschrieben:
Lass das "\n" bei scanf weg
Weißt du, dass du mir gerade den Tag gerettet hast? Das eben Berechnete Ergebnis stimmt aufeinmal (werde es noch mit ein paar anderen Werten versuchen) und Problem 1. ist auch verschwunden.

Zum Zeilenabstand: Ich möchte ja, dass das berechnete Ergebnis etwas von der Rechnung selbst getrennt wird. Wenn ich \n bei scanf reinschreibe, kommt nur mist raus (hat man ja gesehen ^^). Wenn ich es aber beim Print Befehl 1 Zeile darüber einfüge, verschiebt sich nur der Eingabebereich für den "scanf Wert". Gibts noch irgentwelche Alternativen, wie man Zeilen frei lassen kann?
Klospülung verwenden.

Code: Alles auswählen

printf( "Gehalt: " );
fflush( stdout );
scanf( "%f", &gehalt );
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Hallou
Beiträge: 25
Registriert: Mi Jan 09, 2013 3:20 pm

Re: Programmier Tagebuch

Beitrag von Hallou » Mi Jan 16, 2013 9:12 pm

So, hier mal der aktuelle Stand des Programms:

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>

int main()
{
    system("color 0A");
    int natuerlicheZahl = 1;
    float Kontostand= 1.11;
    float Bahnticket= 1.12;
    float Essensausgaben= 1.13;
    float AndereAusgaben= 1.14;
    float Gehalt= 1.15;
    float imBesitz= 1.16;
    float einmaligeExtrazahlungenges= 1.17;
    float einmaligeExtrazahlungen1= 1.18;
    float einmaligeExtrazahlungen2= 1.19;
    float Zielguthaben= 1.20;
    float Zeitraum = 1.21;
    //Variablen und deren Wert bekanntgegeben//
    printf("Geben Sie Ihr Gehalt an:");
    scanf("%f", &Gehalt);
    //Eingabe Wert für Gehalt, wird Angezeigt//
    printf("Geben Sie den Preis fuer monatliche Fahrtkosten:");
    scanf("%f", &Bahnticket);
    //Eingabe Wert Bahnticket//
    printf("Geben Sie die taeglichen Kosten fuer Essen an:");
    scanf("%f", &Essensausgaben);
    //Eingabe Wert Essensausgaben//
    Essensausgaben = Essensausgaben*30;
    //Berechnen monatlicher Essensausgaben//
    printf("Geben Sie zusaetzliche monatliche Ausgaben an:");
    scanf("%f", &AndereAusgaben);
    //Eingabe Wert anderer Ausgaben//
    Kontostand = Gehalt-Bahnticket-Essensausgaben-AndereAusgaben;
    printf("\n");
    //Freie Zeile//
    printf("Restgeld am Ende des Monates: %0.2f\n", Kontostand);
    //Berechnung und Anzeige des restlichen Geldes//
    if(Kontostand<= 250)
        //Wenn Geld am Ende des Monats wenigr oder gleich 250//
    {
        printf("Sie muessen mehr Geld sparen!\n\n\a");
    //Dann Zeige "Du musst mehr.." an und geb Wahnton//
    }
    else
    {
        printf("Ihre Ausgaben sind in Ordnung!\n\n");
        //Sonst zeige an "Deine..."//
    }
    printf("Geben Sie den gewuenschten Zeitraum in Monaten an:");
    //Eingabe des gewünschten Zeitraums//
    scanf("%f", &Zeitraum);
    Kontostand= Kontostand*Zeitraum;
    printf("Geld nach angegebenem Zeitraum: %0.2f\n",Kontostand);
    //Berechnung Geld nach einem Zeitraum//
    printf("Geben Sie ihren aktuellen Kontostand an:");
    scanf("%f", &imBesitz);
    //Eingabe Wert für imBesitz//
    printf("Geben Sie einmalige Extrazahlungen an:\n");
    printf("1. einmalige Extrazahlung:");
    scanf("%f", &einmaligeExtrazahlungen1);
    printf("2. einmalige Extrazahlungen:");
    scanf("%f", &einmaligeExtrazahlungen2);
    //Eingabe Werte Extrazahlungen//
    einmaligeExtrazahlungenges= einmaligeExtrazahlungen1+einmaligeExtrazahlungen2;
    //Berechnung einmalige Zahlungen Gesamt//
    printf("Einmalige  Zusatzkosten gesamt: %0.2f\n", einmaligeExtrazahlungenges);
    //Anzeige der einmaliger Zusatzkosten//
    printf("Geben Sie ihr Zielguthaben an:");
    scanf("%f", &Zielguthaben);
    //Eingabe Wert für Zielguthaben//
    Kontostand= Kontostand+imBesitz-einmaligeExtrazahlungenges;
     printf("\n");
    //Freie Zeile//
    printf("Ihr Gesamtvermoegen nach einem angegebenem Zeitraum: %0.2f\n", Kontostand);
    //Berechnung Gesamtvermögen nach einem Jahr//

    if(Kontostand<=Zielguthaben)
    {
        printf("Sie werden Ihr Sparziel nicht erreichen!\n\n\a");
        //Wenn reelleZahl kleiner als Zielguthaben, zeige an, mit Warnton//
    }
    else
    {
        printf("Sie werden Ihr Sparziel erreichen!\n\n");

    }
    system("PAUSE");
    //Lässt Programm nicht austomatisch schließen//


    return 0;
}
Die Klospülung hat bei mir leider nicht so funktioniert, wie ich es mir vorgestellt habe. Stattdessen habe ich an den Problemstellen einfach "printf("\n");" eingefügt. Im Programm wird nichts angezeigt, die Zeile wird aber trotzdem frei gelassen. Damit es leichter zu lesen ist, werden jetzt bei den Ausgegebenen Werten nurnoch 2 Stellen nach dem Komma angezeigt (Werte sind ja sowieso in Euro zu verstehen). Bei der Beschriftung wurde noch etwas nachgebessert und unten wurde ein system("PAUSE") von mir angebracht, damit man es nun auch als .exe ausführen kann, ohne dass es direkt nach der Anzeige des finalen Ergebnisses wieder beendet wird. Zum Schluss hab ich dann noch system("color 0A") eingebaut. Dadurch bleibt der Hintergrund zwar schwarz (0), die Schrift leuchtet aber grün (A). Der Einzige Grund dafür ist eigentlich, weils ein bisschen an die 70-80er PCs erinnert und bei Personen, mit noch weniger Erfahrung als ich sie habe xD, meiner Meinung nach etwas mehr Eindruck macht, als eine langweilige graue oder weiße Schrift (beide system... könnten eigentlich auch ins Tutorial aufgenommen werden, oder kommen die später noch dran?).

Dies ist wahrscheinlich erstmal die finale Version von meinem Budgetrechner. Ich finde, er ist soweit ganz ausgereift und langsam will ich auchmal mit den Schleifen weiter machen (für die es nicht ausgelegt ist). Vielleicht komme ich später nochmal auf den Rechner zurück, wenn ich es dann mit der grafischen Oberfläche probiere.
Eine Sache habe ich da zmd. schonmal dazugelernt (ausgenommen die Formeln): Projektplanung ist verdammt wichtig. Selbst bei einem recht kleinen Programm verliert man schnell den Überblick, wenn man es 15 mal umschreibt und überarbeitet :D

Hallou
Beiträge: 25
Registriert: Mi Jan 09, 2013 3:20 pm

Re: Programmier Tagebuch

Beitrag von Hallou » Fr Jan 18, 2013 9:19 pm

So, ich möchte ein neues Projekt starten, allerdings habe ich dazu noch einige Fragen. Hier erstmal ein Beispiels Quellcode von mir.
Funktioniert nicht, dient aber auch nur, um die Fragen verständlich zu machen:

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int was;
    int Volt;
    int Ampere;
    int Widrst;
    int backw;
    printf("Was möchtest du berechnen?\n");
    printf("Schreibe 1 fuer Widerstandberechnungen\n");
    printf("Schreibe 2 fuer Leistungsberechnungen\n");
    scanf("%d",&was);

    if(was=1)
    {
        printf("Du hast Widerstandsberechnungen gewaehlt\n");
        printf("Gebe U in V ein:");
        scanf("%d",&Volt);
        printf("Gebe I in A ein:");
        scanf("%d",&Ampere);
        Widrst=Volt/Ampere;
        printf("Der Widerstand betraegt: %d\n\n", Widrst);
        printf("Waehle 1, um zum Anfang zurueck zu gelangen oder 0 um das Programm zu beenden:\n");
        scanf("%d",&backw);
        if(backw=1)
        {
            printf("Wie komme ich jetzt zu Start zurueck?"); (geht nicht..)
        }
        else
        {
            return 0; (geht nicht...)
        }




    }
    if(was=2)
    {
        printf("du hast Leistungsberechnungen gewaehlt");
        system("PAUSE");
    }
    return 0;

}

Also gut, Frage 1: Gibt es die Möglichkeit, dass man oben statt beispielsweiße eine Zahl (1) auch ein Wort eingeben kann (Ohm) um das Programm zum gewünschten, nächsten Punkt weiter zu führen?
Frage 2: Was muss ich schreiben, damit ich am Ende bei Eingabe von 1 wieder an den Anfang des Programms zurück komme bzw. bei Eingabe von 0 das Programm sich beendet.
Frage 3: Wie man sieht, soll mein nächstes Programm sowas wie ein Formelberechner rund ums Thema Elektronik werden. Angefangen beim Ohmschen Gesetz und nach und nach würde ich noch die anderen Formeln hinzufügen. Was haltet ihr von der Idee? Es wird wohl etwas umfangreicher, aber dieses mal plane ich das schon so durch, dass man es im Nachhinein erweitern kann, ohne das vorher Geschriebene ändern zu müssen.

Ich merke gerade: war jetzt mehr oder weniger ein Doppelpost. Hoffentlich nicht so schlimm, oder?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Programmier Tagebuch

Beitrag von Xin » Fr Jan 18, 2013 9:30 pm

Hallou hat geschrieben:So, ich möchte ein neues Projekt starten, allerdings habe ich dazu noch einige Fragen.

Also gut, Frage 1: Gibt es die Möglichkeit, dass man oben statt beispielsweiße eine Zahl (1) auch ein Wort eingeben kann (Ohm) um das Programm zum gewünschten, nächsten Punkt weiter zu führen?
Du brauchst ein char-Array in dem Du den String speicherst. Dann kannst Du %s benutzen.

Code: Alles auswählen

char array[64];
scanf( "%s", array );
printf( "Eingegeben wurde: \"%s\"\n", array );
Hallou hat geschrieben: Frage 2: Was muss ich schreiben, damit ich am Ende bei Eingabe von 1 wieder an den Anfang des Programms zurück komme bzw. bei Eingabe von 0 das Programm sich beendet.
do { /* programm */ } while( backw )
Hallou hat geschrieben: Frage 3: Wie man sieht, soll mein nächstes Programm sowas wie ein Formelberechner rund ums Thema Elektronik werden. Angefangen beim Ohmschen Gesetz und nach und nach würde ich noch die anderen Formeln hinzufügen. Was haltet ihr von der Idee? Es wird wohl etwas umfangreicher, aber dieses mal plane ich das schon so durch, dass man es im Nachhinein erweitern kann, ohne das vorher Geschriebene ändern zu müssen.
Ich weiß nicht, wo Du dran bist, aber Expressions hast Du denke ich verstanden.
Wenn ich etwas lerne, merke ich auch, wie sich meine Möglichkeiten vergrößern und dann möchte ich damit natürlich spielen. Das möchte ich Dir auch nicht nehmen, also mach das ruhig. Du kannst Deine Möglichkeiten aber eben auch deutlich anders erweitern.
Hallou hat geschrieben:Ich merke gerade: war jetzt mehr oder weniger ein Doppelpost. Hoffentlich nicht so schlimm, oder?
Beide Postings sind ja zeitlich unterschiedlich - geht ja sonst nicht anders.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Hallou
Beiträge: 25
Registriert: Mi Jan 09, 2013 3:20 pm

Re: Programmier Tagebuch

Beitrag von Hallou » Fr Jan 18, 2013 9:41 pm

Du kannst Deine Möglichkeiten aber eben auch deutlich anders erweitern.
hmm, könntest du mir ein Beispiel geben? Außer der Umrechner ist mir bis jetzt noch nichts Besseres eingefallen :)

Zuletzt habe ich Kapitel "Wiederholungen" gemacht, welche ich schon mehr oder weniger verstanden habe, aber auch noch keine Ahnung habe, wo ich die mal in der Praxis einbauen könnte.
Als nächstes sind dann "Funktionen" dran.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Programmier Tagebuch

Beitrag von Xin » Sa Jan 19, 2013 12:01 pm

Hallou hat geschrieben:
Du kannst Deine Möglichkeiten aber eben auch deutlich anders erweitern.
hmm, könntest du mir ein Beispiel geben? Außer der Umrechner ist mir bis jetzt noch nichts Besseres eingefallen :)

Zuletzt habe ich Kapitel "Wiederholungen" gemacht, welche ich schon mehr oder weniger verstanden habe, aber auch noch keine Ahnung habe, wo ich die mal in der Praxis einbauen könnte.
Als nächstes sind dann "Funktionen" dran.
Es spricht nichts dagegen, die Schleife hier einzubauen. Ich meinte nur, dass Du Dich nicht beliebig lange Dich mit den Formeln austoben solltest, sondern eben auch mal weiterlesen solltest.

Wenn Du die Schleifen ausprobieren willst, nimm ein fang an zu zählen. ;-)
Dann lies weiter.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

anxls
Beiträge: 1
Registriert: Mi Nov 11, 2015 8:59 am

Re: Programmier Tagebuch

Beitrag von anxls » Mi Nov 11, 2015 9:01 am

sehr gut !

Antworten