Случайная функция не работает в параметрах, и я не знаю почему. Может ли кто-нибудь помочь? Мне нужны случайные числа от 18 до 38 лет, и я не могу этого понять, и я не знаю, почему.Как заставить мою случайную функцию работать?
Вот мой код
#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);
}
}
Edit: Вот мой обновленный функция после внесения предложенных Фиксирует
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' следует вызывать один раз и только один раз. Поместите эту строку в начало 'main'. Кроме того, вы хотите '+ min' не' -min'. И вы назначаете результат 'ptire', когда вы должны назначить' ptire [i] .tire_pressure' и ....... – user3386109
Также '(max - min)' должно быть '(max - min + 1) '. Таким образом, вы должны иметь «rand()% (max - min + 1) + min;' Это даст вам полный диапазон 'min' ...' max' включительно. И, как уже упоминалось, вы должны только называть 'srand' один раз, возможно, из' main'. –
Я сделал эти вещи, и это все еще не между 18 и 38. – Charlie