Die Mathe-Redaktion - 27.01.2020 19:41 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktZur Award-Gala
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 750 Gäste und 19 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von Bilbo matph
Matroids Matheplanet Forum Index » Informatik » Kassenautomat - Berechnung (C-Programmierung)
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Kassenautomat - Berechnung (C-Programmierung)
Tankynator_11
Neu Letzter Besuch: im letzten Quartal
Dabei seit: 06.12.2019
Mitteilungen: 3
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-12-06


Hallo liebe Matheplanet-Nutzer, smile

habe momentan ein Problem bei einer Berechnung der Programmieraufgabe unseres Dozenten.
Wir sollten einen Kassenautomaten programmieren, sodass dieser die kleinst mögliche Stückelung (Scheine, Münzen, Cents) berechnet und ausgibt.
Kurz zu mir: Ich bin noch Programmieranfänger mit dem Umgang in C.

Hier mal meine Berechnung:
C
#include <stdio.h>
#include <stdlib.h>
 
 
int main()
{
    float n;                               //Eingabewert
    int i, anzahl, a;
    float geldeinheiten[15]={500,200,100,50,20,10,5,             //Scheine
                            2,1,                                                               //Münzen
                            0.50,0.20,0.10,0.05,0.02,0.01};                  //Cent
 
    //Eingabe der Summe
    printf("Eingabe Ihres Wunschbetrages: ");
    scanf("%f",&n);
    printf("\n");
 
 
    //Wenn eingegebene Geldsumme kleiner oder gleich 0
    if (n <=0){
    printf("Sie haben keinen Betrag eingegeben! \n");}
 
    //Berechnung der gestückelten Geldeinheiten
    else{
            for (i=0; i<15; i++)
            {
                if(n >= geldeinheiten[i])
                {
                    anzahl = 0;
                    n = n - geldeinheiten[i];           //Berechnung für eine 1-ner Stückelung
                    anzahl++;
                    for(a=0; a < 10000; a++)             // Maximale Stückelung von 10.000 Stk.
                        {if(n>=geldeinheiten[i])
                            {n = n - geldeinheiten[i];
                            anzahl++;
                            }
                        }
                    printf("%d mal %3.2f\n", anzahl, geldeinheiten[i]);
                }
                else{
                    printf("0 mal %3.2f\n", geldeinheiten[i]);
                    }
            }
        }
    return 0;
}
 

So sieht meine bisherige Berechnung aus.
Jedoch bin ich bei der Programmierung irgendwann an dem Punkt gestoßen, dass ich ohne eine max. Stückelung (in dem Fall auf 10.000 Stk. gestellt) nicht zum Ziel komme.

Daher bin ich mir sicher, dass man die Berechnung auch anders durchziehen könnte, aber wie?

Falls die Frage wegen den float Datentyp aufkommt...Wir sollten das so nach Aufgabenstellung versuchen zu lösen, um zu sehen, dass es irgendwann (Nachkommastellen)bei der Berechnung ungenau werden wird (Deshalb ein int besser.

Bedanke mich jetzt schonmal herzlich für eine Antwort! wink



  Profil  Quote  Link auf diesen Beitrag Link
haegar90
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 18.03.2019
Mitteilungen: 186
Aus: Danewerk
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-12-06


Hallo,
Du kannst eine While-Scheife verwenden um ohne Maximalwert auszukommen.


-----------------
Gruß haegar90



  Profil  Quote  Link auf diesen Beitrag Link
rlk
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.03.2007
Mitteilungen: 10644
Aus: Wien
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2019-12-06


Hallo Tankynator_11,
herzlich willkommen auf dem Matheplaneten!

Wenn Du die Anzahl der jeweiligen Banknoten oder Münzen mit einer Division statt mit vielen Subtraktionen ermittelst, erübrigt sich die Frage nach einer passenden Grenze für die innere Schleife.

Ich hoffe, das hilft Dir,
Roland

PS: Wenn Du im Startbeitrag "NameDerSprache" durch "C" ersetzt, wird das Programm besser lesbar. Du kannst auf das Symbol "Ändern" unterhalb des Beitrags klicken, um ihn zu verbessern.



  Profil  Quote  Link auf diesen Beitrag Link
Tankynator_11
Neu Letzter Besuch: im letzten Quartal
Dabei seit: 06.12.2019
Mitteilungen: 3
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2019-12-06


2019-12-06 20:20 - haegar90 in Beitrag No. 1 schreibt:
Hallo,
Du kannst eine While-Scheife verwenden um ohne Maximalwert auszukommen.

Danke dir!
Habs nun hinbekommen :)



  Profil  Quote  Link auf diesen Beitrag Link
Tankynator_11
Neu Letzter Besuch: im letzten Quartal
Dabei seit: 06.12.2019
Mitteilungen: 3
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2019-12-06


2019-12-06 20:42 - rlk in Beitrag No. 2 schreibt:
Hallo Tankynator_11,
herzlich willkommen auf dem Matheplaneten!

Wenn Du die Anzahl der jeweiligen Banknoten oder Münzen mit einer Division statt mit vielen Subtraktionen ermittelst, erübrigt sich die Frage nach einer passenden Grenze für die innere Schleife.

Ich hoffe, das hilft Dir,
Roland

PS: Wenn Du im Startbeitrag "NameDerSprache" durch "C" ersetzt, wird das Programm besser lesbar. Du kannst auf das Symbol "Ändern" unterhalb des Beitrags klicken, um ihn zu verbessern.

Auch bei dir möchte ich mich bedanken!
Vor allem für den Tipp zur besseren lesbaren Darstellung des Programms biggrin



  Profil  Quote  Link auf diesen Beitrag Link
Tankynator_11 hat die Antworten auf ihre/seine Frage gesehen.
Tankynator_11 wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]