po uruchomieniu pierwsza wylosowana liczba jest zerem

0

Witam jestem tu nowy! Dopiero od niedawna uczę się C++. Mam problem z moim programem totolotek. Otóż program się kompiluje bez błędów, ale po uruchomieniu pierwsza wylosowana liczba jest zerem. Po uruchomieniu odpluskwiacza program działa poprawnie i nie pokazuje żadnych błędów.

#include<iostream>
#include<conio.h>
#include<ctime>
#include<stdlib.h>
using namespace std;
int main()
{
    int losowe[6],typowane[6];
    int j,tasama,licznik,schowek,zaklady;
    
    cout<<"Witaj w programie: 'Szczesliwe liczby totolotka!'"<<endl;
    cout<<"Ile zakladow chcesz wprowadzic: ";
    cin>>zaklady;
    cout<<"Wytypuj swoje liczby(kazda liczbe zatwierdz enterem):"<<endl;
    
    //wprowadzenie typowanych liczb
    for(int z=1;z<=zaklady;z++)
    {
    	cout<<"Zaklad "<<z<<":"<<endl;
	    for(int i=0;i<6;i++)
	    {
	    	do
	    	{
	    		cin>>typowane[i];
	    		tasama=0;
	    		j=i;
	    		while (j>0)
	    		{
	    			j-=1;
	    			if(typowane[i]==typowane[j])
	    			tasama+=1;
	    		}
	    		if(tasama>0)
	    		cout<<"Nie mozesz wprowadzac tych samych liczb"<<endl;
	    	}
	    	while (tasama!=0);
		}
	}
	
    cout<<"Wcisnij enter, aby rozpoczac losowanie szczesliwych liczb..."<<endl;
    getch();
    srand(time(NULL));
    
    //losowanie liczb
    for(int i=0;i<6;i++)
    do
    {
    	tasama=0;
    	j=i;
    	losowe[i]=rand() %49+1;
    	while (j>0)
    	{
    		j-=1;
    		if(losowe[i]==losowe[j])
    		tasama+=1;
		}
	}
    while (tasama!=0);
    
    //sortowanie liczb
    do
    {
    	licznik=0;
    	for(int i=0;i<6;i++)
    		if(losowe[i]>losowe[i+1])
			{
				schowek=losowe[i];
				losowe[i]=losowe[i+1];
				losowe[i+1]=schowek;
				licznik+=1;
			}	
	}
	while (licznik!=0);
	
    //wyswietlenie liczb
    cout<<"Twoje szczesliwe liczby to:\n";
    for(int i=0;i<6;i++)
    	cout<<losowe[i]<<" ";
    	cout<<endl;
    	
    //sprawdzenie trafien
    licznik=0;
    for(int i=0;i<6;i++)
    	for(int j=0;j<6;j++)
    		if(typowane[i]==losowe[j])
    			licznik+=1;
    
    switch(licznik)
    {
    	case 1:
    		cout<<"Trafiles jedna liczbe.";
    	break;
    	
    	case 2:
    		cout<<"Trafiles 2 liczby.";
    	break;
    	
    	case 3:
    		cout<<"Trafiles trojke.";
    	break;
    	
    	case 4:
    		cout<<"Trafiles czworke.";
    	break;
    	
    	case 5:
    		cout<<"Trafiles 5.";
    	break;
    	
    	case 6:
    		cout<<"Brawo trafiles 6. Jestes milionerem!!!";
    }
    	
    getch();
    return 0;
}
1
  1. Bez sensu. Zapamiętujesz tylko 6 liczb które ktoś wytypował, a jak ktoś chce zrobić 10 zakładów to powinieneś pamiętać 10*6 liczb.
  2. Podziel ten kod na funkcje! Na przykład sprawdzanie czy liczba już była wylosowana powinno być osobną funkcją. Samo losowanie też. Wtedy kodu będzie 2 razy mniej.
  3. Polecam użyc takich cudów jak na przykład set<> dzięki czemu nie będziesz musiał kombinowac ze sprawdzaniem czy liczby sie nie powtarzają ;)
0

No tak dzięki wielkie! Idiota ze mnie ;p. Już poprawiam.

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