Lottoprogramm Ausgabe formatieren

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Lottoprogramm Ausgabe formatieren

      Hey Community,

      ich muss derzeit für die Schule ein Lottoprogramm schreiben, es funktioniert alles aber ich habe noch etwas Probleme mit der Ausgabe.


      Hier der Quellcode:

      //Headerdateien
      #include <iostream>
      #include <time.h>
      #include <stdlib.h>
      #include <stdio.h>
      #include <conio.h>
      #include <windows.h>
      using namespace std;

      //**************************************************************************************************
      //Prototypen
      void tippen(int*);
      void ausgeben(int*);
      void ziehen(int*);
      void sortieren(int*);
      void auswerten(int*,int*);
      bool doppelt(int*,int);
      void gotoxy(int x, int y);

      //**************************************************************************************************




      //**************************************************************************************************
      //Hauptprogramm
      int main()
      {

      //Variablen und Arrays deklarieren
      int ar_tipp[6];
      int ar_ausgeben[6];
      int ar_lotto[6];
      char wiederholen;
      int zeichen;

      system("cls");



      //Funktionsaufruf "Tippen"

      for(int i=1;i<=8;i++)//Ecke Links oben
      {
      gotoxy(15,i);//position des Koersers
      zeichen= 201;
      cout<<zeichen<<"\n";
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
      gotoxy(15,1);
      cout<<"xxx xxxx xxxxxxxxx xxxxxxxxx xxxx " <<endl;
      gotoxy(15,2);
      cout<<"xxx xx xx xxxxxxxxx xxxxxxxxx xx xx "<<endl;
      gotoxy(15,3);
      cout<<"xxx xx xx xx xx xx xx"<<endl;
      gotoxy(15,4);
      cout<<"xxx xx xx xx xx xx xx"<<endl;
      gotoxy(15,5);
      cout<<"xxx xx xx xx xx xx xx " <<endl;
      gotoxy(15,6);
      cout<<"xxx xx xx xx xx xx xx"<<endl;
      gotoxy(15,7);
      cout<<"xxxxxxx xx xx xx xx xx xx " <<endl;
      gotoxy(15,8);
      cout<<"xxxxxxx xxxx xx xx xxxx "<<endl;
      }
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);
      gotoxy(30,11);
      cout<<"Willkommen zum Lottospiel."<<endl;
      gotoxy(25,13);
      cout<<"Bitte geben sie 6 von 49 Zahlen ein"<<endl;

      tippen (ar_tipp);


      ziehen (ar_lotto);

      auswerten (ar_tipp, ar_lotto);
      cout<<"\nMoechten sie nochmal spielen? -J/N"<<endl;
      cin>>wiederholen;
      if(wiederholen=='j')
      {

      main();
      }



      return 0;
      }


      //**************************************************************************************************
      //Unterprogramme

      //Unterprogramm "Tippen" usw.
      void tippen(int* ar_tipp)
      {





      for(int i=0; i<6; i++)
      { gotoxy(2, i+15);

      cout<<i+1<<". Tipp: ";
      cin>>ar_tipp;
      if(ar_tipp[i]<1 || ar_tipp[i]>49)
      {
      gotoxy(5,22);

      cout<<"Der gewuenschte Tipp ist nicht gueltig"<<endl;
      i--;

      }

      if(doppelt(ar_tipp,i))
      {
      gotoxy(5,22);

      cout<<"Die Zahl wurde bereits schon eingegeben! Bitte Eingabe wiederholen."<<endl;
      i--;

      }



      }



      system("cls");
      ausgeben(ar_tipp);



      }


      //**************************************************************************************************
      //Unterprogramm "Ausgeben" usw.

      void ausgeben(int* ar_ausgeben)
      {
      int temp1;
      int zeichen;

      for(int i=1;i<=8;i++)//Ecke Links oben
      {
      gotoxy(15,i);//position des Koersers
      zeichen= 201;
      cout<<zeichen<<"\n";
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
      gotoxy(15,1);
      cout<<"xxx xxxx xxxxxxxxx xxxxxxxxx xxxx " <<endl;
      gotoxy(15,2);
      cout<<"xxx xx xx xxxxxxxxx xxxxxxxxx xx xx "<<endl;
      gotoxy(15,3);
      cout<<"xxx xx xx xx xx xx xx"<<endl;
      gotoxy(15,4);
      cout<<"xxx xx xx xx xx xx xx"<<endl;
      gotoxy(15,5);
      cout<<"xxx xx xx xx xx xx xx " <<endl;
      gotoxy(15,6);
      cout<<"xxx xx xx xx xx xx xx"<<endl;
      gotoxy(15,7);
      cout<<"xxxxxxx xx xx xx xx xx xx " <<endl;
      gotoxy(15,8);
      cout<<"xxxxxxx xxxx xx xx xxxx "<<endl;
      }
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);
      gotoxy(30,11);
      cout<<"Willkommen zum Lottospiel."<<endl;
      gotoxy(25,13);
      cout<<"Bitte geben sie 6 von 49 Zahlen ein"<<endl;

      cout<<"\nIhr Tipp:"<<endl;

      for(int i=0; i<6; i++)
      {
      for(int j=0; j<6;j++)
      {
      if(ar_ausgeben[j]>ar_ausgeben[j+1])
      {
      temp1=ar_ausgeben[j];
      ar_ausgeben[j]=ar_ausgeben[j+1];
      ar_ausgeben[j+1]=temp1;
      }
      }
      }
      for(int k=0; k<6;k++)
      {
      cout<<k+1<<". Zahl= "<<ar_ausgeben[k]<<"\n"<<endl;
      }



      }


      //**************************************************************************************************
      //Unterprogramm "Ziehen" usw.
      void ziehen(int* ar_lotto)
      {


      srand((unsigned)time(NULL));//Zufallszahlengenerator starten.


      for(int i=0;i<6; i++)
      {
      ar_lotto[i]=rand()%49+1;



      if(doppelt(ar_lotto,i))
      {
      i--;
      }
      }
      sortieren(ar_lotto);

      }


      //**************************************************************************************************
      //Unterprogramm "Sortieren" usw.
      void sortieren(int* ar_lotto)
      {

      int temp;
      int zeichen;
      for(int l=0; l<1; l++)
      {




      cout<<"Lottozahlen:";
      {




      for(int i=0; i<6; i++)
      {
      for(int j=0; j<6;j++)
      {
      if(ar_lotto[j]>ar_lotto[j+1])
      {
      temp=ar_lotto[j];
      ar_lotto[j]=ar_lotto[j+1];
      ar_lotto[j+1]=temp;
      }
      }
      }
      }



      for(int k=0; k<6;k++)

      {


      cout<<"\n"<<k+1<<". Zahl= "<<ar_lotto[k]<<endl;


      }


      }
      }



      //**************************************************************************************************
      //Unterprogramm "Auswerten" usw.
      void auswerten(int* ar_tipp,int* ar_lotto)
      {

      int k=0;
      for(int i=0; i<6; i++)
      {

      for(int j=0; j<6; j++)
      {
      if(ar_tipp[i]==ar_lotto[j])
      {

      k++;
      }
      }
      }


      cout<<"\n Sie haben "<<k<<" richtige Zahlen";
      }



      //**************************************************************************************************
      //Unterprogramm "Doppelt" usw.
      bool doppelt(int* ar_zahlen ,int i)
      {
      if(i>0)
      {
      for(int j=0; j<=i-1; j++)
      {
      if(ar_zahlen[j]==ar_zahlen[i])
      {
      return(true);
      }
      }

      }
      return(false);

      }
      void gotoxy(int xpos, int ypos)
      {
      COORD scrn;
      HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
      scrn.X = xpos; scrn.Y = ypos;
      SetConsoleCursorPosition(hOuput,scrn);
      }



      //True oder false

      Es geht um diese Stelle:

      ********************
      //Unterprogramm "Sortieren" usw.
      void sortieren(int* ar_lotto)
      {

      int temp;
      int zeichen;
      for(int l=0; l<1; l++)
      {




      cout<<"Lottozahlen:";
      {




      for(int i=0; i<6; i++)
      {
      for(int j=0; j<6;j++)
      {
      if(ar_lotto[j]>ar_lotto[j+1])
      {
      temp=ar_lotto[j];
      ar_lotto[j]=ar_lotto[j+1];
      ar_lotto[j+1]=temp;
      }
      }
      }
      }



      for(int k=0; k<6;k++)

      {


      cout<<"\n"<<k+1<<". Zahl= "<<ar_lotto[k]<<endl;


      }


      }

      }

      Ich hätte gern die Lottozahlen Rechts neben den getippten Zahlen. Ich habe mir vorgestellt das dies mit gotoxy(); möglich wäre, jedoch klappt das nicht so wie ich es mir denke. Könnt ihr mir vielleicht helfen?

      Mit freundlichen Grüßen

      Manu/Explode
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Hab mir es jetzt nicht komplett angeschaut, da es ziemlich unübersichtlich ist, aber kannst du das nicht mit einer For-Schleife lösen?

      for(int i = 0; i<X; i++){
      cin >> deine_zahl; cout << lottozahl << endl;
      }

      Hoffe du hast es so gemeint.

      btw: Um zu pushen, sollten erst 24 Stunden vergehen. Ansonsten wirst du eine Verwarnung kriegen.
    • @Explode
      Lass mich dir noch nen Tipp geben: Mach deinen Code bitte in Codeboxen, verringert den Scrollaufwand.
      Ansonsten kann ich dir leider nicht helfen, ich bin C# Programmierer und kein C/C++ Programmierer und kenne mich leider nich genug mit printf aus. Allerdings kann dir das MSDN eigentlich ganz gut weiterhelfen, wenn es um so Dinge wie printf geht
    • Da mir dein Programm viel zu unübersichtlich war, die Formatierung nicht die beste war und einige unnötige Dinge drin waren, habe ich ein kleines Programm geschrieben, welches deinem ähnelt.
      Das Lottologo usw. habe ich dabei mal weggelassen.
      Die Funktion doppelt habe ich einfach mal von dir übernommen, hätte man auch direkt im Main lösen können.
      Den Vergleich, ob Zahlen sich gleichen (Eingabe == Zufallszahl) habe ich rausgelassen, sollte aber für dich kein Problem sein, dies einzubauen.

      C-Quellcode

      1. #include <iostream>
      2. #include <time.h>
      3. #include <conio.h>
      4. using namespace std;
      5. bool doppelt(int* ar_zahlen ,int i)
      6. {
      7. if(i>0)
      8. {
      9. for(int j=0; j<=i-1; j++)
      10. {
      11. if(ar_zahlen[j]==ar_zahlen[i])
      12. {
      13. return(true);
      14. }
      15. }
      16. }
      17. return(false);
      18. }
      19. int main(){
      20. int ar_tipp[6];
      21. int ar_lotto[6];
      22. srand((unsigned)time(NULL));
      23. for(int i=0;i<7; i++){
      24. ar_lotto[i]=rand()%49+1;
      25. if(doppelt(ar_lotto,i))
      26. {
      27. i--;
      28. }
      29. }
      30. for(int i=0; i<7;i++){
      31. cout << i+1 << ". Tipp eingeben: ";
      32. cin >> ar_tipp[i];
      33. while(ar_tipp[i] > 49){
      34. cout << endl << "Zahl war ungueltig: ";
      35. cin >> ar_tipp[i];
      36. }
      37. if(doppelt(ar_tipp,i))
      38. {
      39. cout << endl << "Die Zahl wurde bereits schon eingegeben!" << endl;
      40. i--;
      41. }
      42. }
      43. system("CLS");
      44. for(int i=0;i<7;i++){
      45. printf("%d. Tipp: %d | %d. Zahl: %d\n", i+1, ar_tipp[i], i+1, ar_lotto[i]);
      46. }
      47. system("PAUSE");
      48. }
      Alles anzeigen