Totolotek w c++

0

witam
Mam napisany program który podaje liczby z dużego lotka i multilotka, chce dodac jeszcze funkcje małego lotka (opcji która losuje 5 liczb) proszę o pomoc. oto kod:

#include <iostream>
#include <cstdlib>/
#include <ctime>

using namespace std;
void losojMulti();
void losojDuzy();

int main()
{
srand((unsigned)time(0));

int chceWyjsc = 0;
while(!chceWyjsc){
cout<<"d - duzy lotek\nm - multi\ne - wyjscie\nwybor :"<<endl;
char wybor;
cin>>wybor;

    switch(wybor){
     case 'm':
     losojMulti();
     break;
     case 'd':
     losojDuzy();
    break;
    default:
            chceWyjsc = 1;
    }

}
system("pause");
system("cls");
return 0;
}

void losojDuzy()
{
int wylosowanaTeraz;
int wylosowane[6];
for(int i=0; i<6; )
{
wylosowanaTeraz = (rand() % 49) + 1;

int juzByla=0;
for(int j=0; j<i; j++)
if(wylosowane[j]==wylosowanaTeraz)
juzByla=1;
if(juzByla)
i--;

else{
wylosowane[i] = wylosowanaTeraz;
i++;
}
}
cout<<"wylosowano:"<<endl;
for(int i=0; i<6; i++){
cout<<"\t"<<wylosowane[i]<<endl;
}
}

void losojMulti(){
{
int wylosowanaTeraz;
int wylosowane[20];
for(int i=0; i<20; )
{
wylosowanaTeraz = (rand() % 49) + 1;

int juzByla=0;
for(int j=0; j<i; j++)
if(wylosowane[j]==wylosowanaTeraz)
juzByla=1;
if(juzByla)
i--;

else{
wylosowane[i] = wylosowanaTeraz;
i++;
}
}
cout<<"wylosowano:"<<endl;
for(int i=0; i<20; i++){
cout<<"\t"<<wylosowane[i]<<endl;
}

}
}

0

Ojojoj, zrobiłeś dużego i multi, ale małego już nie umiesz :(

0

Dostałem ten kod miałem go tylko poprawić, błędy udało mi się zniwelować, tylko teraz potrzebuje jeszcze jedną funkcję, o której pisałem.

3
  1. Nie ma to jak zrobić 2 funkcje, które robią prawie to samo.
  2. "losoj"cośTam :/
  3. Umiesz poprawiać kod, co czasami jest trudniejsze od jego napisania, ale nie potrafisz dopisać nic własnego i liczysz na gotowca? Dział praca jest trochę niżej.
0

Skoro chcesz małego lotka na 5 liczb, to zrób sobie uniwersalną funkcję, która za parametr przyjmuje liczbę i tyle liczb losuj ile wynosi parametr; wywołanie dla dużego będzie takie: losuj(6);, a dla małego losuj(5);.

0
#include <cstdio>
#include <ctime>
#include <cstdlib>

void los(int ilosc, int zakres);

int main()
{
	int w = 0;
	
	while(w != 4)
	{
		printf("1 - Duzy lotek\n2 - Maly lotek\n3 - multi lotek\n4 - wyjscie\n");
		scanf("%d", &w);
		
		switch(w)
		{
			case 1:
				los(6, 49);
				break;
				
			case 2:
				los(5, 75);
				break;
				
			case 3:
				los(10, 80);
				break;
	
			default:
				break;
		}
	}
					
	return 0;
}

void los(int ilosc, int zakres)
{
	int *liczby = new int[ilosc];
	
	srand(time(0));
	
	for(int i = 0; i < ilosc; i++)
	{
		liczby[i] = (rand() % zakres) + 1;
		
		for(int j = 0; j < i; j++)
		{
			if(liczby[i] == liczby[j])
			{
				--i;
				break;
			}
		}
	}
	
	for(int i = 0; i < ilosc; i++)
		printf("%d ", liczby[i]);
		
	printf("\n");
		
	delete [] liczby;
}

0

Zakres dla małego troszku nie taki. :P

0

Zrobiłem program, który spełnia tą funkcję. Dziękuję za pomoc

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