Суббота, 23 Ноября 2024, 02:45

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите сделать программу на Си
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
частый гость
Сейчас нет на сайте
Вот скрин задания
Прикрепления: 2298760.png (42.3 Kb)


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
MatouДата: Среда, 20 Октября 2010, 17:41 | Сообщение # 18
Исходный коТ
Сейчас нет на сайте
SlavyanOOs, пхах, спасибо biggrin Видеть не выспался сегодня...


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг