myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [C]Brauche Hilfe bei nem kleinen Programm (https://mygully.com/showthread.php?t=2478424)

PwN0GrPhy 09.11.11 18:26

[C]Brauche Hilfe bei nem kleinen Programm
 
Hi, ich würde etwas Hilfe für meine ProgrammierHausaufgabe brauchen. Hier ist die Angabe:
Code:

3. Geldbetrag
Einzugeben ist ein Geldbetrag in EUR. Anschließend ist auszugeben, wie viele Geldscheine
bzw. M¨unzen h¨ochstens notwendig sind, um den Betrag auszuzahlen.
Beispiel:
Betrag in EUR -> 845.77
1 mal 500 EUR
1 mal 200 EUR
1 mal 100 EUR
0 mal 50 EUR
2 mal 20 EUR
0 mal 10 EUR
1 mal 5 EUR
1 mal 50 Cent
1 mal 20 Cent
0 mal 10 Cent
1 mal 5 Cent
1 mal 2 Cent
0 mal 1 Cent

Hier ist der Code den ich schon selbst geschrieben habe:
Code:

#include <stdio.h>


int main (void) {

double b;
char e500;
char e200;
char e100;
char e50;
char e20;
char e10;
char e5;

char c50;
char c20;
char c10;
char c5;
char c2;
char c1;



    printf("Betrag in Euro -->");
    scanf("%lf*100", b);
    printf(" mal 500Euro \n");
    printf(" mal 200Euro \n");
    printf(" mal 100Euro \n");
    printf(" mal 50Euro \n");
    printf(" mal 20Euro \n");
    printf(" mal 10Euro \n");
    printf(" mal 5Euro \n");
    printf(" mal 50Cent \n");
    printf(" mal 20Cent \n");
    printf(" mal 10Cent \n");
    printf(" mal 5Cent \n");
    printf(" mal 2Cent \n");
    printf(" mal 1Cent \n");






return 0;
}

Wie ihr seht brauche ich noch Hilfe beim scanf und beim printf(man darf auch nur die beiden Befehle verwenden). Ich weiss leider nicht wie ich printf und scanf schreiben soll. Wäre echt sehr dankbar wenn mir da jemand helfen kann.

MfG

PS: Bitte NICHT den fertigen Code hier einfach so posten, sondern eine Erklärung(bei Bedarf aber mit einzelnen Codestücken). Danke

Your_Conscience 09.11.11 19:06

Da du keinen Code, sondern nur ein Beispiel möchtest hier:
Code:

double zahl = 0;
printf("Bitte Zahl eingeben: ");
scanf("%lf", &zahl);
printf("Du hast folgende Zahl eingegeben: %lf\n", zahl);


PwN0GrPhy 09.11.11 19:17

Ich hab dein Beispiel jetzt leicht umgeändert(den Betrag auf Cent umgerechnet), aber wie mache ich jetzt die Ausgabe? Also wie viel 500er Scheine, 200er Scheine usw.?



BTW: Hier ist der Code:
Code:

#include <stdio.h>

int main(void) {

double zahl = 0;



    printf("Betrag in Euro --> ");
    scanf("%lf*100", &zahl);
   


return 0;

}


Your_Conscience 09.11.11 19:21

Lass dir ersteinmal deine zahl ausgeben.
Wenn du "123,45" eingibst, wird in zahl trotsdem noch "123,45" stehen, du musst es also nach der Eingabe umrechnen (wenn ich mich jetzt nicht irre).

Hapert es an der Ausgabe oder am Algorithmus?
Wie man eine Zahl ausgibt habe ich oben ja schon gepostet.

PwN0GrPhy 09.11.11 19:25

Ich würd ma sagen es "hapert" an der Ausgabe und am Algorithmus. Ich hab keine Ahnung wie ich es ausrechnen lassen soll, wie viel man von welchem Wert braucht.

Your_Conscience 09.11.11 19:39

Das habe ich mir schon gedacht :)

Also als erstes möchtest du ja den Betrag in Cent haben.
Code:

printf("Betrag in Euro --> ");
scanf("%lf", &zahl); 
zahl *= 100;

Jetzt musst du abfragen, wieviele Geldscheine bzw. Münzen in diesen Betrag "passen".
Hier solltest du von dem 500€ runter nach 1Cent (in dieser Richtung gehen).

Abfrage für 500€
Code:

if (h = zahl / 50000 > 0) {
printf("%d 500 Euro-Schein(e)\n", h);
zahl -= (h * 50000);
}

Das musst du jetzt noch für die anderen Beträge machen.
Wenn du meinen Code nicht verstehst oder nicht weiter kommst, frag einfach :)

PwN0GrPhy 09.11.11 19:47

"if"-Funktionen haben wir noch nicht gelernt, wird wohl auffallen wenn ich das dann im Code hätte, oder?^^

Thelvan 09.11.11 19:53

Wie soll man das sonst lösen 0_o

Welche Befehle habt ihr denn sonst kennengelernt?

Das ganze kommt dem Rucksack problem nahe.

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Your_Conscience 09.11.11 19:54

OK, das habe ich nicht gewusst. :D
Hier nochmal ohne if
Code:

h = zahl / 50000;
printf("%d 500 Euro-Schein(e)\n", h);
zahl -= (h * 50000);


PwN0GrPhy 09.11.11 19:58

Bis jetzt haben wir nur printf und scanf gemacht. Also jetzt auch mit Variablen und so^^ Aber ich kann mal kurz im Skriptum nachschauen um sicher zu gehn.


Edit: Sry hab den Post nicht gelesen.
Btw: Bis jetzt haben wir nur printf und scanf gemacht, als nächstes würde putchar und getchar kommen.

Thelvan 09.11.11 20:01

Achso, Geldscheine die nicht benutzt werden, sollen trotzdem angezeigt werden okay.

Kannst dir ja mal if-Anweisungen gucken, ist nicht schwer zu verstehen, und noch eine Version damit machen, so dass nicht Scheine mit 0 angezeigt werden.

PwN0GrPhy 09.11.11 20:05

@Thelvan if-Befehle haben wir noch nicht gelernt. Also sollte ich es ja wohl auch nicht verwenden oder? O:

Your_Conscience 09.11.11 20:06

Ist meine zuletzt gepostete Lösung jetzt eigentlich zulässig oder auch wieder nicht?

PwN0GrPhy 09.11.11 20:11

@Your_Consciene Dazu hab ich noch eine Frage: Muss ich das jetzt immer wieder einfügen und nur von "500 Euro Schein(e)" auf 200 Euro Schein(e) umschreiben? Also so:
Code:

#include <stdio.h>

int main(void) {

double zahl = 0;



    printf("Betrag in Euro --> ");
    scanf("%lf", &zahl); 
    zahl *= 100;
   
    h = zahl / 50000;
    printf("%d 500 Euro-Schein(e)\n", h);
    zahl -= (h * 50000);

h = zahl / 50000;
    printf("%d 200 Euro-Schein(e)\n", h);
    zahl -= (h * 50000);

h = zahl / 50000;
    printf("%d 100 Euro-Schein(e)\n", h);
    zahl -= (h * 50000);


return 0;

}

Oder muss noch was umgeändert werden?

Your_Conscience 09.11.11 20:22

Nein, du musst noch die Beträge ändern :)
Code:

h = zahl / 50000;            //50000 Cent = 500€
printf("%d 500 Euro-Schein(e)\n", h);
zahl -= (h * 50000);

h = zahl / 20000;          //20000 Cent = 200€
printf("%d 200 Euro-Schein(e)\n", h);
zahl -= (h * 20000);

h = zahl / 10000;          //10000 Cent = 100€
printf("%d 100 Euro-Schein(e)\n", h);
zahl -= (h * 10000);


Your_Conscience 09.11.11 20:38

Mir fällt gerade auf, dass in dem Beispiel in deinem Startposting garkeine 2€ und 1€ existieren.
Hat das was zu bedeuten oder wurden die einfach nur vergessen?

PwN0GrPhy 09.11.11 20:40

K, also ich hab das jetzt mal eben so gemacht wie du es gesagt hast.
Hier ist der Code
Code:

#include <stdio.h>

int main(void) {

double zahl = 0;



    printf("Betrag in Euro --> ");
    scanf("%lf", &zahl);
    zahl *= 100;

    h = zahl / 50000;
    printf("%d 500 Euro-Schein(e)\n", h);
    zahl -= (h * 50000);

    h = zahl / 20000;
    printf("%d 200 Euro-Schein(e)\n", h);
    zahl -= (h * 20000);

    h = zahl / 10000;
    printf("%d 100 Euro-Schein(e)\n", h);
    zahl -= (h * 10000);

    h = zahl / 5000;
    printf("%d 50 Euro-Schein(e)\n", h);
    zahl -= (h * 5000);


    h = zahl / 2000;
    printf("%d 20 Euro-Schein(e)\n", h);
    zahl -= (h * 2000);

    h = zahl / 1000;
    printf("%d 10 Euro-Schein(e)\n", h);
    zahl -= (h * 1000);

    h = zahl / 500;
    printf("%d 5 Euro-Schein(e)\n", h);
    zahl -= (h * 500);

    h = zahl / 200;
    printf("%d 2 Euro-Muenze(n)\n", h);
    zahl -= (h * 200);

    h = zahl / 100;
    printf("%d 1 Euro-Muenze(n)\n", h);
    zahl -= (h * 100);


    h = zahl / 50;
    printf("%d 50 Cent-Muenze(n)\n", h);
    zahl -= (h * 50);

    h = zahl / 20;
    printf("%d 20 Cent-Muenze(n)\n", h);
    zahl -= (h * 20);


    h = zahl / 10;
    printf("%d 10 Cent-Muenze(n)\n", h);
    zahl -= (h * 10);

    h = zahl / 5;
    printf("%d 5 Cent-Muenze(n)\n", h);
    zahl -= (h * 5);

    h = zahl / 2;
    printf("%d 2 Cent-Muenze(n)\n", h);
    zahl -= (h * 2);

    h = zahl / 1;
    printf("%d 1 Cent-Muenze(n)\n", h);
    zahl -= (h * 1);



return 0;

}


Jetzt zeigt mir mein Codeblocks aber 3Errors an, alle in Zeile 3( h = zahl / 50000;)
Das sind die Errors:
1.) 'h' undeclared (first use in this function)
2.) Each undeclared identifiert is reported only once
3.) for each funtion it appears in

PwN0GrPhy 09.11.11 20:41

Zitat:

Zitat von Your_Conscience (Beitrag 22937974)
Mir fällt gerade auf, dass in dem Beispiel in deinem Startposting garkeine 2€ und 1€ existieren.
Hat das was zu bedeuten oder wurden die einfach nur vergessen?

Wurden wohl einfach nur vergessen xD Unsere Lehrer sind nicht grad soooo mega klug, was das angeht^^

Your_Conscience 09.11.11 20:45

Die Variable h ist bei dir noch nicht deklariert.
Du musst oben nach "double zahl = 0;" noch "int h = 0;" schreiben. (es ist wichtig, dass du hier int und nicht double verwendest)

Ansonsten sieht dein Code eigentlich richtig aus. :)

PwN0GrPhy 09.11.11 20:51

hui es geht :D Danke =)

PwN0GrPhy 10.11.11 07:14

Ich hab da noch ne Frage, ein Kumpel von mir braucht auch noch die Aufgabe, und er weiss nicht wies geht, ich natürlich auch nicht.
Er weiss nicht wie das gehn soll und auch nicht wie er es Programmieren soll.
Hier ist mal die Angabe:
Code:

4. Zinsen
Einzugeben sind Kapital, Zinssatz (in Prozent) und Laufzeit (in Jahren, Monaten und
Tagen). Das Programm soll die einfachen bankm¨aßigen Zinsen und das verzinste Gesamtkapital
berechnen (jedes Monat ist mit 30 Tagen und jedes volle Jahr mit 360
Tagen zu rechnen).
Beispiel:
Kapital (in Euro) --> 1234.56
Zinssatz (in %) --> 4.5
Verzinsungsdauer (im Format j-m-d) --> 3-7-12
---------------------------------------------------
Es ergeben sich Zinsen von 200.92 Euro.
Wert des einfach verzinsten Gesamtkapitals: 1435.48 Euro.

Ich wäre echt sehr dankbar wenn ihr ihn helfen könntet. =)

MfG

PS: Diesmal dürft ihr den fertigen Code schon posten^^
Natürlich auch nur mit printf und scanf Anweisungen.

Your_Conscience 10.11.11 14:06

Lösung:

Ich denke, der Code sollte eigentlich leicht verständlich sein.
Außerdem solltet ihr beide mal in eure Unterlagen gucken bzw. mal im Internet nach Ansätzen suchen.
Ich glaube nicht, dass ihr Aufgaben aufbekommt, die ihr eigentlich noch garnicht lösen könnt.

Und bitte macht euch das nächste mal auch selbst Gedanken darüber und postet hier dann eure bisherigen Lösungsansätze. :)

PwN0GrPhy 10.11.11 14:11

Werden wa :D Danke

Edit: Ich habs jetzt mal in Codeblocks reinkopiert. Und ich weiss jetzt nicht was "system("PAUSE");" bedeutet. Das haben wir auch noch nicht gelernt, wenn ich mich recht erinnere.

Your_Conscience 10.11.11 14:41

"system("PAUSE");" macht sozusagen eine Pause, wenn man Enter gedrückt hat, geht es weiter.
Ich bau das immer mit rein, damit sich das Konsolenfenster nicht gleich schließt.
Du kannst die Zeile einfach rauslöschen - das hat keine Auswirkungen auf das Programm.

PwN0GrPhy 10.11.11 15:01

Okay danke =)
Btw du hast in zeile 10 ein '%' vergessen, es muss doppelt sein sonst wird es nicht ausgegeben :D
Eines der Dinge die ich mir ausm unterricht gemerkt hab :p

Your_Conscience 10.11.11 15:06

Zeile 10 ist bei mir "scanf("%lf", &zinssatz);" und so wie ich das sehe, fehlt da nichts?! :D

PwN0GrPhy 10.11.11 15:07

Zeile 10 ist bei mir "printf("Zinssatz (in %%) --> ");" oO


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.