Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Hilfe bei meinen Hausaufgaben!!

Anonym / 7 Antworten / Flachansicht Nickles

Hi,


habe folgende Aufgabe und habe als C Anfänger keine Ahnung.... folgendes Programm erzeugt nach Eingabe von "Bargeld" und "Samen" (keine Ahnung wieso das so heißt) Zufallszahlen... ist es eine gerade Zufallszahl wird das Bargeld erhöht-  ansonsten erniedrigt... die Aufgabe ist nach jeder Ausgabe des aktuellen Bargeld-Standes eine Reihe Sterne (*) auszugeben, die den Restbestand des Bargeldes anzeigt..(mit einer while-Schleife)..


Ich habe schon versucht die Schleife einzubauen und die Variable "counter" definiert... aber ich bekomme eine Endlos-Schleife die nur Sterne schreibt. Kann mir jemand helfen?


Hier ist der Quelltext:


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


int main( void )
{
      int bargeld, samen; int counter=1;


      printf("Bargeld = " ); scanf( "%d", &bargeld );
      printf("Samen = " ); scanf( "%d", &samen );


    /* Hier wird der Zufallszahlen-Generator mit
       einem Anfangswert initialisiert  */
      srand( samen );


      while ( bargeld > 0 )
      {
           bargeld = rand()%2? ++bargeld : --bargeld;
           printf ( "%d" , bargeld );
          
           while ( counter <= bargeld )
           {
                printf ("*"); 
                counter=counter++;
           }
           printf ("\n");
      }
      printf( "\n You are a great loser! \n\n" );


      return 0;
}

bei Antwort benachrichtigen
mr.escape Anonym „Hilfe bei meinen Hausaufgaben!!“
Optionen

Deine verwendung von "++" und "--" ist beängstigend.
Der ausdruck:
bargeld = rand()%2? ++bargeld : --bargeld;
Sollte lieber

if(rand()%2)
  bargeld++;
else
  bargeld--;

oder auch
bargeld += rand()%2 ? 1 : -1;

lauten und wie Andreas42 das auch schon schrieb, formulierungen wie:
counter=counter++;

sind pfui!

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen