Lamborkiki Ответов: 1

Положительная, отрицательная, нейтральная, недопустимая целочисленная программа


Добрый день! Наш профессор поручил мне сделать упражнение на языке Си, которое я представлю перед классом, но у меня возникли проблемы. Я должен создать программу, которая принимает пользовательский ввод, который определяет, является ли вход положительным, отрицательным или нейтральным. Если пользователь вводит символ или строку, он должен вывести "недопустимый ввод". однако я не могу заставить последнее условие работать. Какие-нибудь советы? Я только начал, так что любая помощь будет оценена по достоинству. Большое вам спасибо!

Что я уже пробовал:

#include <stdio.h>
int main()
{
	int num;
	printf("Input a number: ");
	scanf("%i", &num);
	
	if (num>0.0) {
		printf("Positive");
	}	
	else if (num<0.0) {
		printf("Negative");
	}	
	else if (num==0.0) {
		printf("Neutral");
	}	
	else {
		printf("Invalid Input");
	}
	
	return 0; 
}


Я также попытался изменить операторы elif на операторы if, но они всегда включали недопустимые входные данные в каждый вывод.

Rick York

Во-первых, определите, что такое допустимые входные данные. Все остальное было бы недопустимым вводом. Вы должны быть в состоянии определить, какой тип входных данных вы получаете.

1 Ответов

Рейтинг:
6

Richard MacCutchan

Первая проблема заключается в том, что Вы читаете целочисленное значение, а затем сравниваете его с плавающей точкой. Поэтому используйте простое интегральное значение 0 для вашего сравнения. Вторая проблема заключается в том, что если вы вводите строку, а не число, то scanf не будет ничего возвращать num будет содержать все, что было там раньше. Вам нужно захватить возвращаемое значение из scanf чтобы проверить, правильно ли вы прочитали номер. Что-то вроде:

printf("Input a number: ");
int count = scanf("%i", &num);
if (count != 1)
{
    printf("Invalid Input");
}
else // ... now you can check the value of num


CPallini

5.