Помогите сделать программу на Си
|
|
Assassin5 | Дата: Понедельник, 18 Октября 2010, 17:54 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Задача - Запросить с консоли целое число и проверить его на попадание в заданный диапазон значений. Результат такой проверки вывести на консоль. При выполнении задания не использовать условный оператор. Вот моя программа Code #include <stdio.h>
#define MIN_VALUE 21 #define MAX_VALUE 56
void main() { int x = 0; int result = MIN_VALUE <= x && x <= MAX_VALUE; printf("Input a number \n"); scanf("%d", &x);
printf("Number %d is inside range %d...%d : %s \n", x, MIN_VALUE, MAX_VALUE, result ? "yes":"no"); } Запускаю, ввожу число. При любом числе она пишет, что не принадлежит диапазону.
http://vkontakte.ru/id84076405
|
|
| |
evilCode | Дата: Понедельник, 18 Октября 2010, 18:04 | Сообщение # 2 |
The Metal
Сейчас нет на сайте
| попробуй так Code #include <stdio.h> #include <conio.h>
#define MIN_VALUE 21 #define MAX_VALUE 56
void main() { int x = 0; printf("Input a number \n"); scanf("%d", &x); int result = MIN_VALUE <= x && x <= MAX_VALUE; printf("Input a number \n");
printf("Number %d is inside range %d...%d : %s \n", x, MIN_VALUE, MAX_VALUE, result ? "yes":"no"); _getch(); }
evilCode aka sanyok31
Сообщение отредактировал evilCode - Понедельник, 18 Октября 2010, 18:10 |
|
| |
karuy | Дата: Понедельник, 18 Октября 2010, 18:09 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Жаль нет близко компа чтоб прогу набрать... У тебя result всегда равен нулю ибо х сначала тож равен нулю. Перенеси вторую строчку з резалтам после ввода х.
|
|
| |
lvovand | Дата: Понедельник, 18 Октября 2010, 18:09 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| у вас определась переменная result, int result = MIN_VALUE >= x && x <= MAX_VALUE; x тогда 0 был задан так как 0 не входит в диапазон 21..56, то в результате и пишет, что число не в диапазоне
Разработка и продвижение сайтов. Дизайн
|
|
| |
evilCode | Дата: Понедельник, 18 Октября 2010, 18:12 | Сообщение # 5 |
The Metal
Сейчас нет на сайте
| мой вариант рабочий
evilCode aka sanyok31
|
|
| |
Assassin5 | Дата: Понедельник, 18 Октября 2010, 18:17 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Вот, разобрался. Так правильно: Code #include <stdio.h>
#define MIN_VALUE 21 #define MAX_VALUE 56
void main() { int x; int result; printf("Input a number \n"); scanf("%d", &x); result = MIN_VALUE <= x && x <= MAX_VALUE;
printf("Number %d is inside range %d...%d : %s \n", x, MIN_VALUE, MAX_VALUE, result ? "yes":"no"); } Добавлено (18.10.2010, 18:17) --------------------------------------------- evilCode Я пробывал твой вариант. Он все время пишет "yes".
http://vkontakte.ru/id84076405
|
|
| |
evilCode | Дата: Понедельник, 18 Октября 2010, 18:22 | Сообщение # 7 |
The Metal
Сейчас нет на сайте
| там опечатка была... я исправил
evilCode aka sanyok31
|
|
| |
Assassin5 | Дата: Понедельник, 18 Октября 2010, 18:25 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| а, ну можно и так. Только у меня покороче вышло. Экономия ресурсов xD. Препод придирается.
http://vkontakte.ru/id84076405
|
|
| |
evilCode | Дата: Понедельник, 18 Октября 2010, 18:28 | Сообщение # 9 |
The Metal
Сейчас нет на сайте
| можно ещё короче ))
evilCode aka sanyok31
|
|
| |
ezhickovich | Дата: Понедельник, 18 Октября 2010, 19:20 | Сообщение # 10 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Assassin5, ты используешь тернарную операцию ?: - это тоже условный оператор... Вот решение без условий: Code #include <stdio.h>
#define MIN_VALUE 21 #define MAX_VALUE 56
int main () { int x = 0; scanf ("%d", &x); printf ("Number %d is inside range %d...%d : %d \n", x, MIN_VALUE, MAX_VALUE, MIN_VALUE <= x && x <= MAX_VALUE); return 0; } Это решение заметно короче твоего и не использует тернарных операций... Всё просто и понятно...
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
Сообщение отредактировал ezhickovich - Понедельник, 18 Октября 2010, 19:23 |
|
| |
Assassin5 | Дата: Понедельник, 18 Октября 2010, 19:27 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| ezhickovich Все не так просто. Чтоб применить твою конструкцию в моей задаче придется использовать вложенную функцию. Задача - проверить, входит ли число в диапазон, написать ответ. Плюс в этой же программе еще одно задание.
http://vkontakte.ru/id84076405
|
|
| |
ezhickovich | Дата: Понедельник, 18 Октября 2010, 19:28 | Сообщение # 12 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Quote (Assassin5) Чтоб применить твою конструкцию в моей задаче придется использовать вложенную функцию. Зачем? Quote (Assassin5) Плюс в этой же программе еще одно задание. Можно узнать какое?
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
|
|
| |
Assassin5 | Дата: Понедельник, 18 Октября 2010, 19:37 | Сообщение # 13 |
частый гость
Сейчас нет на сайте
| Вот скрин задания
http://vkontakte.ru/id84076405
|
|
| |
ezhickovich | Дата: Понедельник, 18 Октября 2010, 20:01 | Сообщение # 14 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Ну дык это вроде разные задания?
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
|
|
| |
Assassin5 | Дата: Понедельник, 18 Октября 2010, 20:06 | Сообщение # 15 |
частый гость
Сейчас нет на сайте
| Но они должны быть решены в одной программе.
http://vkontakte.ru/id84076405
|
|
| |
Matou | Дата: Среда, 20 Октября 2010, 16:58 | Сообщение # 16 |
Исходный коТ
Сейчас нет на сайте
| Обьясните мне что значит "Нельзя использовать условный оператор"? Мне просто кажется что во всех привденных листингах условный оператор таки присутствует.
|
|
| |
SlavyanOOs | Дата: Среда, 20 Октября 2010, 17:25 | Сообщение # 17 |
Problems, developer?
Сейчас нет на сайте
| Matou, if
|
|
| |
|