Измерение массива с одним элементом в строке - бессмысленная мелочь. Обычно вы используете только измерения с более чем одним элементом в каждой строке.
Кроме того, вы никогда не назначаете массив travelint
- только чтение из него. Итак, поскольку он инициализируется для всех нулей, все, что вы когда-либо увидите при печати, это нули.
Вам, вероятно, просто нужно изменить это:
if ( (cont_num <= 7) && (cont_num > 0) && (type_num <= 5) && (type_num >=0) )
dest_code = travelint[i][0];
до:
if ( (cont_num <= 7) && (cont_num > 0) && (type_num <= 5) && (type_num >=0) )
travelint[i][0] = dest_code;
Это присваивает travelint
.
Чтобы распечатать полный 2D-массив, вы обычно используете:
for (int j = 0; j < TRIP; j++)
{
for (int k = 0; k < DEST; k++)
printf("Trip[%d][%d] = %d\n", j, k, travelint[j][k]);
}
Учитывая, что внутренний цикл будет выполняться только один раз за итерацию внешнего цикла (в вашем примере, где DEST равен 1), вы можете упростить это до:
for (int j = 0; j < TRIP; j++)
{
printf("Trip[%d][%d] = %d\n", j, 0, travelint[j][0]);
}
Вы должны проверить trip_num
после того, как пользователь введет его. Вам следует проверить, что scanf()
действительно преобразовало значение; если пользователь введет «A», то ваша программа будет быстро зацикливаться на выводе «Неверный код» каждый раз Всегда проверяйте, что входные данные успешны. Теоретически, вы также должны проверить, что результаты успешны, но это правило чаще игнорируется, чем соблюдается. Кроме того, если пользователь злой и набирает 200, то ваша программа не будет счастлива после того, как пользователь войдет в шестое место назначения поездки. Конечно, оно должно быть между 0 и TRIP (включительно). Конечно, вы должны правильно обращаться с вырожденным (0) случаем. И цикл печати становится:
for (int j = 0; j < trip_num; j++)
{
printf("Trip[%d][%d] = %d\n", j, 0, travelint[j][0]);
}