rand wychodzi poza zakres

0

Witam, co jest nie tak że rand() generuje int-y ponad przedzial,a enumy już nie...?

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

struct car
	{
		int waga;
		int cena;
		enum kolor{bialy=1,czarny=2,czerwony=3,niebieski=4};
		enum wyposazenie{podstawowe=1,standard=2,premium=3};
		int color;
		int equipment;
		
	};
	


void losuj_liczbe(car* wsk,const int ILE)
	{
	
		srand(time(NULL));
		
		for( int i=0;i<=(ILE-1);i++)
			{
			
			wsk->waga=500+rand()%1500;
			wsk->cena=20000+rand()%30000;
			wsk->color=car::bialy+rand()%car::niebieski;
			wsk->equipment=car::podstawowe+rand()%car::premium;
			wsk++;
	
			}


	}

void main()
	{
	
		const int ILE=10;
		car tab[ILE];
		
		losuj_liczbe(tab,ILE);
		int j=0;
			printf("%d\n",tab[j].waga);
			printf("%d\n",tab[j].cena);
			printf("%d\n",tab[j].color);
			printf("%d\n",tab[j].equipment);
			
		
	
	
		getchar();
	}
0

Bo tak zaprogramowałeś, proste :P
Obstawiam że za 'zakres' uważasz przykładowo 1500, a tak nie jest.
wsk->waga=500+rand()%1500; generuje liczbe z zakresu [0, 1499], plus 500.
Analogicznie w innych przypadkach.

0
Proxima napisał(a):

Bo tak zaprogramowałeś, proste :P
Obstawiam że za 'zakres' uważasz przykładowo 1500, a tak nie jest.
wsk->waga=500+rand()%1500; generuje liczbe z zakresu [0, 1499], plus 500.
Analogicznie w innych przypadkach.

enumy okreslajace przedzial dzialaja poprawnie.

0

Dzięki,już rozumiem tę funkcję.

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