Symulacja Mistrzostwa Świata

0

Znam tylko podstawy C++ (zmienne, tablice, pętle, if, itd.). To co chcę uzyskać mógłbym rozpisać na kartce w kilkanaście minut, ale wolałbym rezultat uzyskać za pomocą programowania.

Do rzeczy: aktualnie tak wygląda nasza grupa "H" na MŚ 2018:

  • Japonia - 3pkt
  • Senegal - 3pkt
  • Kolumbia - 0pkt
  • Polska - 0pkt

Pozostają jeszcze cztery mecze:

  • Senegal vs. Japonia
  • Senegal vs. Kolumbia
  • Polska vs. Kolumbia
  • Polska vs. Japonia

Każdy mecz może skończyć się remisem, wygraną dużyny A lub wygraną drużyny B. Remis: obie drużyny dostają 1 punkt. Wygrana: drużyna dostaje 3 punkty, przegrana dostaje 0.

Chciałbym napisać program, który wiedząc jak aktualnie wygląda tabela (ile każda drużyna ma punktów), oraz że będą grane jeszcze tylko owe cztery mecze, zrobi symulację wszystkich możliwych kombinacji owych meczów, doliczy punkty do odpowiedniej drużyny, oraz wypisze rezultat wraz z tabelami.

Czyli, przykładowa symulacja wyglądała by np. tak:

****Kombinacja nr 12:
Senegal vs. Japonia (Japonia wygrywa)
Polska vs. Kolumbia (remis)
Senegal vs. Kolumbia (Kolumbia wygrywa)
Polska vs. Japonia (Japonia wygrywa)

Tabela:
Japonia (9pkt)
Kolumbia (4pkt)
Senegal (3pkt)
Polska (1pkt)

Kombinacja nr 13:
[...]****

Problem w tym, że nie wiem jak się za to złapać. Nie wiem o czym poczytać, co googlować. Jak zrobić takie symulacje/kombinacje? Jakieś wskazówki? Nie szukam sposobu na najwydajniejszy lub najładniejszy kod, bo to już kompletnie nie mój poziom; szukam sposoby jakiegoś "w ogóle" żeby działał.

Dzięki.

0

Twój program powinien wypisać wszystkie możliwe kombinacje wyników ,ale co najważniejsze bez powtórzeń
Losowanie bez powtórzeń: https://stackoverflow.com/questions/20734774/random-array-generation-with-no-duplicates

0

Do każdego meczu możesz przydzielać liczbę od 1 do 3 (1 - wygrana gospodarzy, 2 - remis, 3 - wygrana gości) i użyć Rand, żeby wylosować któryś numer. Później sprawdzasz jaka była to cyfra i dopisujesz odpowiednią liczbę punktów.

0

Nie jestem doświadczonym programistą, ale w celach edukacyjnych spróbowałem napisać kod w języku C++ na temat tego problemu wymienionego powyżej. Nie użyłem tutaj żadnych liczb losowych.

Oto kod:

#include <iostream>
#include <string>

using namespace std;
string Druzyny[4];
int Punkty[4];
int r = 1;
int i = 0;
int j = 0;
int k = 0;
int l = 0;
string t;



void Zresetowanie_Tabeli()


{
	
	Druzyny[0] = "Polska";
	Druzyny[1] = "Senegal";
	Druzyny[2] = "Japonia";
	Druzyny[3] = "Kolumbia";
	
	
	
	Punkty[0] = 0;
 	Punkty[1] = 3;
 	Punkty[2] = 3;
 	Punkty[3] = 0;
	
}

void Sortowanie_Tabeli()

{
	
	
	
		for ( int ii = 0; ii<3; ii++)
 	
 	{
 		
 		
 		
 		for (int jj = 0; jj<3; jj++)
 		
 		{
 			
 			if (Punkty[jj] < Punkty[jj+1])
 			
 			{
 				
 				swap(Punkty[jj], Punkty[jj+1]);
 				swap(Druzyny[jj], Druzyny[jj+1]);
			 }
 			
		 }
	 }
	
	
}


void Wyswietlenie_Tabeli()


{
	
		cout << "Aktualna tabela:\n\n";
 	
 	for ( int ii = 0; ii< 4; ii++)
 	
 	{
 		
 		
 		cout << ii + 1 << ". " << Druzyny[ii] << " " << Punkty[ii] << "\n";
 		
 		
 		
 		
 		
 		
 		
 		
 		
	 }
	
}


void Wyswietlenie_1()

{
	
	cout <<  Druzyny[0] << " - " << Druzyny[2] << " ";
	
	
	
 } 
 
 void Wyswietlenie_2()

{
	
	
	
	
	cout <<  Druzyny[0] << " - " << Druzyny[3] << " ";
 } 
 
 void Wyswietlenie_3()

{
	cout <<  Druzyny[1] << " - " << Druzyny[3] << " ";
	
	
	
	
 } 
 
 void Wyswietlenie_4()

{
	
	cout <<  Druzyny[1] << " - " << Druzyny[2] << " ";
	
	
	
 } 

void Kombinacje()

{

 	Zresetowanie_Tabeli();
 	
 	
 	cout << "\nKombinacja nr: " << r << " - ";
 	
	
	if ( l==0) 
	
	{
		
		Punkty[0] = Punkty[0] + 3;
		Wyswietlenie_1();
		cout << "1, ";
		
		
		
		
	} else if (l==1)
	
	{
		Punkty[0]++;
		Punkty[2]++;
		Wyswietlenie_1();
		cout << "x, ";
		
	} else if (l==2)
	
	{
		
		Punkty[2] = Punkty[2] + 3;
		Wyswietlenie_1();
		cout << "2, ";
	}
	
	if ( k==0) 
	
	{
		
		Punkty[0] = Punkty[0] + 3;
		Wyswietlenie_2();
		cout << "1, ";
		
		
		
		
	} else if (k==1)
	
	{
		Punkty[0]++;
		Punkty[3]++;
		Wyswietlenie_2();
		cout << "x, ";
		
	} else if (k==2)
	
	{
		
		Punkty[3] = Punkty[3] + 3;
		Wyswietlenie_2();
		cout << "2, ";
	}
	
	if ( j==0) 
	
	{
		
		Punkty[1] = Punkty[1] + 3;
		Wyswietlenie_3();
		cout << "1, ";
		
		
		
		
	} else if (j==1)
	
	{
		Punkty[1]++;
		Punkty[3]++;
		Wyswietlenie_3();
		cout << "x, ";
		
	} else if (j==2)
	
	{
		
		Punkty[3] = Punkty[3] + 3;
		Wyswietlenie_3();
		cout << "2, ";
	}
	
	
	if ( i==0) 
	
	{
		
		Punkty[1] = Punkty[1] + 3;
		Wyswietlenie_4();
		cout << "1, ";
		
		
		
		
	} else if (i==1)
	
	{
		Punkty[1]++;
		Punkty[2]++;
		Wyswietlenie_4();
		cout << "x, ";
		
	} else if (i==2)
	
	{
		
		Punkty[2] = Punkty[2] + 3;
		Wyswietlenie_4();
		cout << "2, ";
	}
	
	Sortowanie_Tabeli();
 	
 	
 Wyswietlenie_Tabeli();
 
  if (r == 10 or r == 20 or r==30 or r ==40 or r==50 or r==60 or r==70)
  
  
  {
  	
  	cout << "\nWcisnij, by kontynuowac...";
  	cin >> t;
  	
  	
  }
}
 


int main(int argc, char** argv) 

 

{
	

	
	Zresetowanie_Tabeli();
 	
 	
  Sortowanie_Tabeli();
 	
 	
 Wyswietlenie_Tabeli();
 	
 	
 	cout << "\nWyniki:\n";
 	
 
 	
 	for ( i = 0; i < 3; i++)
 	
 	
 	{
 		
 		
 		for ( j = 0; j < 3; j++)
 		
 		{
 			
 			for (k = 0; k < 3; k++)
 			
 			{
 				for ( l = 0; l < 3; l++)
 				
 				{
 					
 					Kombinacje();
 					
 					r++;
				 }
 				
 				
			 }
		 }
 		
 		
 		
	 }
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
	 
}


Powinno działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1