PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie progamm von neuem starten lassen



akz
31.05.2013, 10:45
Hallo,
ich soll ein programm für das studium programmieren dass mir wenn ich einen betrag eingebe die möglichst kleine anzahl an Geldscheinen ausgibt die möglich ist ( 50 , 20 10 5) und das ganz dann wiederholt bis man null eingibt und somit beendet .
Hier ist mein Quellcode ich schaffe die aufteilung . Nur mein problem ist dass ich jetzt wenn ich einen wert eingebe komischer weise wieder aufgefordert werde den wert einzugeben ohne die Anzeige.


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int B, A50, A20, A10, A5;
do
/*Einlesefunktion*/
{
printf("Geben Sie einen Betrag ein :");
scanf("%d",&B);
}
while ( B > 0);
/*Ausgabefunktion*/
{
A50 = B / 50;
printf(" Anzahl 50er : %d\n ",A50);
A20 = ( B%50 ) / 20;
printf(" Anzahl 20er : %d\n",A20);
A10 = (B%50%20) /10;
printf(" Anzahl 10er : %d\n",A10);
A5 = (B%50%20%10) / 5;
printf("Anzahl 5er:%d\n",A5);
}
{
return(0);
}
}

danke schon im vorraus

-schumi-
31.05.2013, 13:25
So hast du es ja auch dem Computer angeschafft:


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int B, A50, A20, A10, A5;
do
/*Einlesefunktion*/
{
printf("Geben Sie einen Betrag ein :");
scanf("%d",&B);
}
while ( B > 0); // Solange der eingegebene Betrag größer 0 ist, soll die Eingabe wiederholt werden (springt zum Befehl nach "do")

/*Ausgabefunktion*/
{
A50 = B / 50;
printf(" Anzahl 50er : %d\n ",A50);
A20 = ( B%50 ) / 20;
printf(" Anzahl 20er : %d\n",A20);
A10 = (B%50%20) /10;
printf(" Anzahl 10er : %d\n",A10);
A5 = (B%50%20%10) / 5;
printf("Anzahl 5er:%d\n",A5);
}

{
return(0);
}
}

Änder das mal in


while( B <= 0 );


Und wenn du den Code nicht als Kommentar einfügst, sondern als Code

{CODE} code {/CODE} (die {} durch [] ersetzen, oder alternativ den Code-Button (das Schweinegatter) am oberen Fensterrand drücken)
kann mans auch besser lesen :wink:

akz
31.05.2013, 13:42
danke shcon mal für ide hilfe aber das problem ist immernoch vorhanden. Weil er dann zwar es ausgibt wie er soll aber mir nicht anbietet nochmal eine eingabe zu machen sondern nur beenden indem ich enter drücke . Jedoch soll er die ausgabe machen und dann mir anbieten nochmals einen anderen wert einzugeben solange bis ich 0 eingebe

BMS
31.05.2013, 14:19
Hallo,
das musst du etwas anders verschachteln, möglich wäre z.B.


while(1)
{
//hier die Eingabe
...

if(B<=0){break;} //verlässt die Schleife falls B<=0 war
else
{
//hier Auftrennung in Scheine
...
}
}
Grüße, Bernhard

-schumi-
31.05.2013, 14:28
oder:


B = 1;
while(B)
{
// Eingabe und Ausgabe
}
return 0;

Wenn du dann 0 eingibst, zeigt er dir immer noch die Scheine-Kombination, aber is ja ned so tragisch. Und wenn doch, kann man die auch mit einem if überspringen (Dann wäre die Lösung von BMS aber eigentlich eleganter, auch wenn sie komplizierter aussieht)

radbruch
31.05.2013, 16:09
Hallo

Man könnte es auch so machen:


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
int B, A50, A20, A10, A5;
do
{
/*Einlesefunktion*/
printf("Geben Sie einen Betrag ein :");
scanf("%d",&B);

/*Ausgabefunktion*/
if(B > 0)
{
A50 = B / 50;
printf(" Anzahl 50er : %d\n ",A50);
A20 = ( B%50 ) / 20;
printf(" Anzahl 20er : %d\n",A20);
A10 = (B%50%20) /10;
printf(" Anzahl 10er : %d\n",A10);
A5 = (B%50%20%10) / 5;
printf("Anzahl 5er:%d\n",A5);
}
}while ( B > 0);

while(1); // Ein AVR-Programm darf nie beendet werden!
return(0);
}(ungetestet)


ich soll ein programm für das studium programmieren...Das Programm ist ja von dir, ich habe es nur etwas "umgeformt".

Gruß

mic