Rastgele işlevi ayarlanmış parametrelerde çalışmıyor ve nedenini bilmiyorum. Biri yardım edebilir mi? 18 ile 38 arasında rastgele sayılara ihtiyacım var ve bunu anlayamıyorum ve nedenini bilmiyorum.Rasgele işlevimi nasıl çalıştıracağım?
İşte benim kod
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct tires
{
char Manufacturer[40];
int tire_pressure[2];
int pressure_change;
}typedef tires;
void getTireInformation(tires*, int);
void tirePressure(tires*, int);
int main()
{
tires tire[4];
tires* ptire = &tire[0];
getTireInformation(ptire, 4);
tirePressure(ptire, 4);
return 0;
}
void getTireInformation(tires* ptire, int size)
{
int i = 0;
for (i = 0; i < size; i++)
{
printf("please enter Make for the tire: \n");
scanf("%s", &(ptire + i) ->Manufacturer);
}
printf("all tire make you entered ...just for verification:\n");
for(i = 0; i < size; i++)
printf("%s\n",(ptire +i) ->Manufacturer);
}
void tirePressure(tires* ptire, int size)
{
int i = 0;
int min = 18;
int max = 38;
for (i = 0; i < size; i++)
{
srand(time(NULL));
ptire = rand()%(max - min)-min;
printf("%d\n", (ptire + i) -> tire_pressure);
}
}
var
Düzenleme: Burada önerilen düzeltmeleri
void tirePressure(tires* ptire, int size)
{
int i = 0;
int min = 18;
int max = 38;
for (i = 0; i < size; i++)
{
ptire = rand()%(max - min + 1) + min;
printf("%d\n", (ptire + i) -> tire_pressure);
}
}
'srand' bir kez çağrılmalı ve yalnızca bir kez. Bu çizgiyi "ana" nin başına koyun. Ayrıca, + min '' -min' istemiyorum. Ve ptire [i] .tire_pressure 've ....... – user3386109
'a atamanız gerektiğinde sonucu' ptire 'olarak atayacaksınız. Ayrıca' (max - min) 'olmalıdır (max - min + 1) '. Öyleyse rand()% (max - min + 1) + min; “Bu size min. Ve bahsettiğimiz gibi, sadece “srand” ı, muhtemelen “main” dan bir kez çağırmalısınız. –
Ben bu şeyleri yaptım ve hala 18 ila 38 arasında değil – Charlie