у вас есть несколько ошибок в вашем scanf, приводящих к вашей ошибке сегментации, они указываются компилятором:
c.c:38:1: warning: ‘volumeGood’ is used uninitialized in this function [-Wuninitialized]
scanf("%f", volumeGood);
^~~~~~~~~~~~~~~~~~~~~~~
и
c.c:38:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double’ [-Wformat=]
scanf("%f", volumeGood);
, поскольку неопределенное значение volumeGood используется в качестве адреса, где scanf попытается написать
, который вы, вероятно, хотели
scanf("%f", &volumeGood);
а также все эти:
c.c:46:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double’ [-Wformat=]
scanf("%f", train[0]);
^
c.c:48:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double’ [-Wformat=]
scanf("%f", train[1]);
^
c.c:50:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double’ [-Wformat=]
scanf("%f", train[2]);
^
c.c:52:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double’ [-Wformat=]
scanf("%f", train[3]);
^
c.c:54:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double’ [-Wformat=]
scanf("%f", train[4]);
, потому что записи в train используются так, как если бы они содержали адреса, которые вы хотели
scanf("%f", &train[0]);
scanf("%f", &train[1]);
scanf("%f", &train[2]);
scanf("%f", &train[3]);
scanf("%f", &train[4]);
когда вы используете scanf и эквивалентный вам, вы должны указать адреса, где будут сохранены значения
Также в
c.c:84:29: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("The Good id is %d", &idGood);
^
c.c:85:38: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("The number of wagons is %d", &nWagons);
^
c.c:86:40: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘float *’ [-Wformat=]
printf("The price for the good is %f", &price);
в это времянаоборот, вы даете адрес, в то время как вы должны дать значения, должно быть
printf("The Good id is %d", idGood);
printf("The number of wagons is %d", nWagons);
printf("The price for the good is %f", price);