программа пропускает условную конструкцию
В этом кусочке кода стоят условия для ввода чисел 0>, но программа пропускает отрицательные числа, хотя при вводе нуля выдает нужный принт. Есть предположение, что дело в типе переменных, но если изменить их на тот же int, то в оставшийся код работать не будет.
#include <stdio.h>
#include <string.h>
int main() {
size_t wdth, hght, lngth;
printf("Введите высоту табуретки: ");
scanf("%zu", &hght);
if(hght<=0){
printf("Высота должна быть больше 0.");
return 1;
}
printf("Введите ширину табуретки: ");
scanf("%zu", &wdth);
if(wdth<=0){
printf("Ширина должна быть больше 0.");
return 1;
}
printf("Введите длинну табуреки: ");
scanf("%zu", &lngth);
if(lngth<=0){
printf("Длинна должна быть больше 0.");
return 1;
}
int model[lngth][hght][wdth];
memset(model, 0, lngth * hght * wdth * sizeof(model[0][0][0]));
Ответы (2 шт):
Автор решения: citn
→ Ссылка
Как оказалось size_t - беззнаковый тип данных, и все же придется поменять все на int.
Автор решения: Andrei
→ Ссылка
Вам нужно заменить тип size_t. Тип size_t без знаковый, то-есть там нельзя хранить отрицательные числа. Он придуман для хранения размера который возвращает оператор sizeof. Он отрицательным не бывает. Вы можете заменить его на int, а после проверок введенных данных привести переменные к size_t. (size_t) width