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[i];
    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

    [SIGPIC][/SIGPIC]League of Legends : Explode94

  • kannst du mir vllt ein beispiel schreiben wie ich das machen sollte? ich mein kann ich auch mit printf das in der höhe formatieren?

    [SIGPIC][/SIGPIC]League of Legends : Explode94

  • 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[i] << endl;
    }

    Hoffe du hast es so gemeint.

    btw: Um zu pushen, sollten erst 24 Stunden vergehen. Ansonsten wirst du eine Verwarnung kriegen.

    [SIGPIC][/SIGPIC]

  • xD schon passiert danke der vorwarnung ehm wie meinst du das mit der vorschleife? ich hab schon eine forschleife bei der Ausgabe von den Lottozahlen

    [SIGPIC][/SIGPIC]League of Legends : Explode94

  • 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

  • Explode: Dann entfern die Ausgabe bei den alten Schleifen/der alten Schleife und bau unter den Zuweisungen (Die wahrscheinlich in den For-Schleifen passieren) erneut eine For-Schleife und geb die Sachen dort aus.

    internetfreak: printf ist ein Befehl zur Textformation aus der Sprache C. Falls er printf verwenden will, kann ich ihm nur diese Seite empfehlen: C-Tutorial / Eingabe und Ausgabe (Kap. 3)

    [SIGPIC][/SIGPIC]

  • Lad mir mal deine .cpp-Datei auf mediafire oder so hoch. Wenn ich deinen obenstehenden Quellcode verwende, bekomme ich nur Fehler.

    Ich änder das fix für dich ab und du kannst es dir anschauen und dazulernen.

    [SIGPIC][/SIGPIC]

  • 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.

    [SIGPIC][/SIGPIC]

  • kannst du es nicht irgendwie in meinen code übertragen da wir arrays benützen müssen ..

    [SIGPIC][/SIGPIC]League of Legends : Explode94

  • Habe doch Arrays genutzt. ;)

    int ar_tipp[6];
    int ar_lotto[6];

    Mehr Arrays brauchte ich in meinem Beispiel nicht.

    [SIGPIC][/SIGPIC]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!