Katoneo Temat założony przez niniejszego użytkownika |
Symulacja rozgrywek ekstraklasy. Ustalenie terminarzu. » 2014-01-19 18:16:59 Witam, jestem nowy na forum i potrzebuję pomocy. Otóż mam do zrobienia projekt w C (najlepiej by był w całości w C). Tematem projektu jest symulacja rozgrywek ekstraklasy piłkarskiej i już na samym początku pojawiają się problemy. Mianowicie, nie potrafię napisać kodu, który ustalał by terminarz rundy jesiennej (15 kolejek po 8 meczów każda). Oto mój kod: #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; #define KOLEJKI 15 #define REWANZE 15
struct LIGA { string nazwa; int value; };
int main() { LIGA Druzyny[ 16 ] = { { "Legia Warszawa", 5 }, { "Gornik Zabrze", 4 }, { "Wisla Krakow", 4 }, { "Lech Poznan", 4 }, { "Ruch Chorzow", 3 }, { "Pogon Szczecin", 3 }, { "Slask Wroclaw", 3 }, { "Jagiellonia Bialystok", 2 }, { "Korona Kielce", 2 }, { "Lechia Gdansk", 2 }, { "Zaglebie Lublin", 2 }, { "Piast Gliwice", 2 }, { "Cracovia", 1 }, { "Zawisza Bydgoszcz", 1 }, { "Podbeskidzie Bielsko Biala", 1 }, { "Widzew Lodz", 1 }, }; int j = 0; int i = 0; for( int n = 0; n < KOLEJKI; n++ ) { printf( "\n\n" ); for( int i = n; i < n + 16; i = i + 2 ) { printf( "%26s\t %26s \n", Druzyny[ i % 16 ].nazwa.c_str(), Druzyny[( i + 1 ) % 16 ].nazwa.c_str() ); } } }
Chcę osiągnąć efekt przejścia o jeden bez powtórzeń. Np. Pierwsza drużyna gra z drugą, w następnej kolejce z 3, 2 z 4 itd. Próbowałem już wielu wersji z dzieleniem modulo, ale nigdy nie wychodzi tak jakbym chciał. Jest jakiś inny sposób? Ewentualnie mam jeszcze drugą wersję programu, w której drużyny z lewej strony grają z drużynami z prawej strony, ale to tylko połowa rundy i nie wiem jak sprawić by potem drużyny z lewej grały z lewymi, a z prawej z prawymi. for( int n = 0; n < 8; n++ ) { printf( "\n\n" ); for( int i = 0; i < 8; i++ ) { printf( "%26s\t %26s \n", Druzyny[ i ].nazwa.c_str(), Druzyny[( i + n ) % 8 + 8 ].nazwa.c_str() ); } }
Będę wdzięczny za wszelką pomoc |
|
Wiesiek |
» 2014-01-20 10:03:45 Kolejki rozgrywek należy umieścić w tablicy Terminarz[16][16]. Do komórek tablicy poza przekątną będziesz wstawiał numery meczów z kolejnych kolejek: pierwsza kolejka, to mecze o numerach od 0 do 7, druga - od 8 do 15,... Liczba Terminarz[w][k]==m oznacza, że mecz o numerze m będzie rozgrywany przez drużyny o numerach w oraz k.
Wypełniasz tablicę liczbami -1, a potem losujesz ustawienia liczb od 0 do 15*8-1 według zasad: - znajdujesz poza przekątną komórkę z Terminarz[w][k] z wartością -1 i taką, że w całym wierszu w i całej kolumnie k nie ma wstawionego numeru meczu z aktualnie uzupełnianej kolejki - wstawiasz numer kolejnego meczu w dwóch komórkach: Terminarz[w][k] oraz Terminarz[k][w].
Ta sama informacja będzie w tablicy poniżej oraz powyżej przekątnej - to po to, aby łatwiej było pisać pętle. Można oczywiście wszystko wpisać bez powtórzeń uzupełniając tylko tablicę poniżej przekątnej |
|
« 1 » |