[C/C++] Programm zur "Pokalziehung"

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von MaTaPolo, 21. September 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 21. September 2006
    Programm zur "Pokalziehung"

    Hi Leute!

    Ich suche ein Programm, muss net ma unbedingt C++ sein, womit ich Namen eingebe und die dann wie beim "DFB Pokal" ausgelost werden.

    Hat von euch vlt jemand ein solches Programm parat?

    Bzw: Wie realisiere ich das am besten mit C++? Meine kenntnisse sind so gut wie weg, da ich seit ca. 2 Jahren nichts mehr mit C++ gemacht habe.

    Kleine Denkanstöße würden im Zweifelsfall schon reichen ;)

    MFG

    Mata

    P.S. Kommt mir nich mit der Hutmethode, hab ich einfach kein Bock drauf :D
     

  2. Anzeige
  3. #2 21. September 2006
    AW: Programm zur "Pokalziehung"

    Also ich würde jedem Verein eine Nummer zuweisen dann mit Random zufällige zahlen (damit die Vereine) ausgeben und dann haste deine Paarungen (ich wüsste wie ich das in Java machen müsste, aber dann weißte ja wie du es machen musst)
     
  4. #3 21. September 2006
    AW: Programm zur "Pokalziehung"

    Hi,

    ich mach hier mal mit C den Anfang ^^

    Hab das Programm in Eile gecoded, deshalb seids gnaedig mit mir :p

    Ist ziemlich minimal.

    Code:
    /* by Kolazomai */
    /* gcc in.c -o out -Wall -W -Werror */
    /* Don't think, this really works :p */
    
    #include <stdio.h>
    
    /* random */
    #include <stdlib.h>
    #include <time.h>
    
    /* strncpy */
    #include <string.h>
    
    #define ANZAHL_DER_FUSSBALLVEREINE_ 4
    #define ANZAHL_DER_FUSSBALLVEREINE ANZAHL_DER_FUSSBALLVEREINE_ - 1
    
    #define PAARUNGEN ANZAHL_DER_FUSSBALLVEREINE_ / 2
    
    #define MAX_LEN 1024
    
    int main() {
    
    /* Per Struct wird das ganze uebersichtlicher */
    struct verein {
     
     unsigned int ui_vereins_nr;
     char cha_name[MAX_LEN];
    
    };
    
    
    unsigned int ui_tmp;
    char buf[MAX_LEN];
    struct verein turnier[ANZAHL_DER_FUSSBALLVEREINE];
    
    /* Werte zuweisen */
    for (ui_tmp = 0; ui_tmp <= ANZAHL_DER_FUSSBALLVEREINE;
     ui_tmp++) {
     printf("Gib bitte Name des Vereins #%i ein\n> ",
     ui_tmp+1);
     fscanf(stdin,"%s",buf);
    
     turnier[ui_tmp].ui_vereins_nr = ui_tmp + 1;
    
     strncpy(turnier[ui_tmp].cha_name,buf,sizeof(buf) - 1);
     turnier[ui_tmp].cha_name[MAX_LEN] = '\0';
    
     }
    
    printf("\n*******************\n");
    printf("Paarungen werden errechnet\n");
    printf("---\n");
    
    unsigned int ui_ran,ui_who,ui_tmp2,ui_before;
    unsigned int ui_nrs_gone[ANZAHL_DER_FUSSBALLVEREINE];
    
    ui_who = 0;
    
    /* Random initalisieren */
    srand(time(0));
    
    for (ui_tmp = 0; ui_tmp <= ANZAHL_DER_FUSSBALLVEREINE; ui_tmp++) {
    
     /* Random Zahl zwischen ANZAHL_DER_FUSSBALLVEREINE und 0 */
     ui_ran = rand() % ANZAHL_DER_FUSSBALLVEREINE + 1;
    
     for (ui_tmp2 = 0; ui_tmp2 <= ANZAHL_DER_FUSSBALLVEREINE;ui_tmp2++) {
     if (ui_tmp2 > ui_who) {
     /* Schon weiter als Nummern eingetragen */
     break;
     }
     if (ui_nrs_gone[ui_tmp2] == ui_ran) {
     /* Nummer bereits verwendet */
     ui_tmp--;
     break;
     }
     else {
     /* Nummer ist nicht gleich die Nummer davor */
     if (ui_before != ui_ran) {
     if (ui_who % 2 == 0) {
     /* Gerade Zahl */
     printf("Paarung %i: %s:",
     ui_tmp / 2 + 1,
     turnier[ui_ran].cha_name);
     }
     else {
     printf("%s\n",
     turnier[ui_ran].cha_name);
     }
     ui_nrs_gone[ui_who] = ui_ran;
     ui_before = ui_ran;
     ui_who++;
     break;
     }
     }
     }
     }
    /* Edit: Requested */
    #ifdef _WIN32
    system("pause");
    #else
    system("read");
    #endif
    return 0;
    }
    Glaub nicht, dass das geht, aber bei 4 Vereinen sollte es gehn. Hab nicht so viel Zeit es zu testen gerade. Eigentlich muesst ihr nur noch das Ende aendern ...

    Mfg,

    Kolazomai
     
  5. #4 21. September 2006
    AW: Programm zur "Pokalziehung"

    thx funzt auch mit mehr teams ;)
     
  6. #5 21. September 2006
    AW: Programm zur "Pokalziehung"

    Ja so ähnlich muss das ;) hab keine ahnung in C aber vom sinn her ist es ja so, wie ich das gesagt hab ...
     
  7. #6 21. September 2006
    AW: Programm zur "Pokalziehung"

    Ok, freut mich ^^

    Ich wuerde jetzt eigentlich closen, aber ich find meinen Code nicht grad hitverdaechtig. Vielleicht erbarmt sich ja irgendwer und baut ihn noch etwas weiter aus, debugged ihn oder was weiss ich :p

    Wenn du aber anderer Meinung bist, kannst du gerne das Thema schliessen, MaTaPolo.

    Mfg,

    Kolazomai
     
  8. #7 21. September 2006
    AW: Programm zur "Pokalziehung"

    ach was, lass ich noch offen ;)

    Mir ist gerad was eingefallen, was bei dir net funzt.

    Und zwar beendet sich das Prog sofort nach Ausgabe der Paarungen.

    Ich habs mit
    Code:
    system("pause");
    vorm return 0 gelöst ;)

    EDIT: fällt mir jetzt erst auf:

    Funzt wohl doch nich mit mehr Teams, also zumindest mit 16 nicht. Da hat man dann einige Teams doppelt und 3 fach bei den Paarungen
     
  9. #8 21. September 2006
    AW: Programm zur "Pokalziehung"

    Hatte ich befuerchtet ^^.

    Wenn ich heut Abend noch Zeit finde, werd ichs ausbessern. Sollte kein grosses Problem sein.

    Mfg,

    Kolazomai
     
  10. #9 21. September 2006
    AW: Programm zur "Pokalziehung"

    Code:
    /* by Kolazomai */
    /* gcc in.c -o out -Wall -W -Werror */
    /* Don't think, this really works :p */
    
    #include <stdio.h>
    
    /* random */
    #include <stdlib.h>
    #include <time.h>
    
    /* strncpy */
    #include <string.h>
    
    #define ANZAHL_DER_FUSSBALLVEREINE_ 16
    #define ANZAHL_DER_FUSSBALLVEREINE ANZAHL_DER_FUSSBALLVEREINE_ - 1
    
    #define PAARUNGEN ANZAHL_DER_FUSSBALLVEREINE_ / 2
    
    #define MAX_LEN 1024
    
    int main() {
    
    /* Per Struct wird das ganze uebersichtlicher */
    struct verein {
     
     unsigned int ui_vereins_nr;
     char cha_name[MAX_LEN];
    
    };
    
    
    unsigned int ui_tmp;
    char buf[MAX_LEN];
    struct verein turnier[ANZAHL_DER_FUSSBALLVEREINE];
    
    /* Werte zuweisen */
    for (ui_tmp = 0; ui_tmp <= ANZAHL_DER_FUSSBALLVEREINE;
     ui_tmp++) {
     printf("Gib bitte Name des Vereins #%i ein\n> ",
     ui_tmp+1);
     fscanf(stdin,"%s",buf);
    
     turnier[ui_tmp].ui_vereins_nr = ui_tmp + 1;
    
     strncpy(turnier[ui_tmp].cha_name,buf,sizeof(buf) - 1);
     turnier[ui_tmp].cha_name[MAX_LEN] = '\0';
    
     }
    
    printf("\n*******************\n");
    printf("Paarungen werden errechnet\n");
    printf("---\n");
    
    unsigned int ui_ran,ui_who,ui_tmp2,ui_before;
    unsigned int ui_nrs_gone[ANZAHL_DER_FUSSBALLVEREINE];
    
    ui_who = 0;
    
    /* Random initalisieren */
    srand(time(0));
    
    for (ui_tmp = 0; ui_tmp <= ANZAHL_DER_FUSSBALLVEREINE; ui_tmp++) {
    
     /* Random Zahl zwischen ANZAHL_DER_FUSSBALLVEREINE und 0 */
     ui_ran = rand() % ANZAHL_DER_FUSSBALLVEREINE + 1;
    
     for (ui_tmp2 = 0; ui_tmp2 <= ANZAHL_DER_FUSSBALLVEREINE;ui_tmp2++) {
     if (ui_tmp2 > ui_who) {
     /* Schon weiter als Nummern eingetragen */
     break;
     }
     if (ui_nrs_gone[ui_tmp2] == ui_ran) {
     /* Nummer bereits verwendet */
     ui_tmp--;
     break;
     }
     else {
     /* Nummer ist nicht gleich die Nummer davor */
     if (ui_before != ui_ran) {
     if (turnier[ui_ran].ui_vereins_nr == 0) {
     continue;
     }
     if (ui_who % 2 == 0) {
     /* Gerade Zahl */
     printf("Paarung %i: %s:",
     ui_tmp / 2 + 1,
     turnier[ui_ran].cha_name);
     }
     else {
     printf("%s\n",
     turnier[ui_ran].cha_name);
     }
     turnier[ui_ran].ui_vereins_nr = 0; // als benutzt setzen
     ui_nrs_gone[ui_who] = ui_ran;
     ui_before = ui_ran;
     ui_who++;
     break;
     }
     }
     }
     }
    #ifdef _WIN32
    system("pause");
    #else
    system("read");
    #endif
    return 0;
    }
     
     
    
    Damit sollte es jetzt funktionieren :)
    Aber ... je mehr Teams, desto CPU-Aufwendiger.

    Edit: Hier noch schoen zum Cpy&Pasten.

    Mfg,

    Kolazomai
     
  11. #10 21. September 2006
    AW: Programm zur "Pokalziehung"

    sehr schön, jetzt funztes :D
     
  12. #11 23. September 2006
    AW: Programm zur "Pokalziehung"

    Freut mich :)

    ~closed~

    Mfg,

    Kolazomai
     

  13. Videos zum Thema
Die Seite wird geladen...
Similar Threads - C++ Programm zur
  1. Antworten:
    4
    Aufrufe:
    1.298
  2. Antworten:
    4
    Aufrufe:
    649
  3. Antworten:
    0
    Aufrufe:
    228
  4. Antworten:
    2
    Aufrufe:
    2.872
  5. Antworten:
    3
    Aufrufe:
    606