• XSS.stack #1 – первый литературный журнал от юзеров форума

Вопрос по операторам сравнения

WTF!!!

RAID-массив
Пользователь
Регистрация
29.12.2004
Сообщения
60
Реакции
0
Учу потихоньку С++, совсем недавно начал, а вопросы, естественно имеются. Очень хотелось бы получить ответ на них, потому что иногда ответов на вопросы нет в книгах, а человек его знает. Тем более я убедился, что здесь есть знающие люди.
Вот собственно, сам код:

Код:
#include <iostream>
#include <conio.h>

int main()
{
    std::cout << " Hello, enter any number, i wil do with it something\n";
    float number;
    std::cin >> number;
    if ( number == 0)
    {
         std::cout << number;
         std::cout << "\n You have entered that numberwhich is the same, as Zero\n";
         }
    if (number > 1)
    {
               std::cout << " NUmber is more than 1";
               }
    if ( number < 1)
    {
         std::cout << " NUmber you have entered is smaler than 1";
}
else
std::cout << " WTF!? You have entered something extraordinary!";

getch();
}


Текст полная чушь, что то ничего другого в голову не пришло, но суть не в этом. Почему он выполняет не то что я хочу?
Например, если ввиду число 0, то оп , как и надо по идее, напишет "You have entered that numberwhich is the same, as Zero", но после этого и "NUmber you have entered is smaler than 1", то есть третий if. Хотя, по идее, NUmber же равен 0, а не больше одного, тем более выводить два if-а одновременно.


Прошу ответить на мой вопрос, может и очень глупый, но все мы когда то учились:)
С уважением, WTF. :pioneer:
 
NUmber you have entered is smaler than 1

"Число меньше, чем 1" ;)
Добавлено в [time]1131233024[/time]
Если надо, чтобы ноль не считался "числом меньше 1", то вот так:

Код:
#include <iostream>
#include <conio.h>

int main()
{
   std::cout << " Hello, enter any number, i wil do with it something\n";
   float number;
   std::cin >> number;
   if ( number == 0)
   {
        std::cout << number;
        std::cout << "\n You have entered that numberwhich is the same, as Zero\n";
        }
   else{
   if (number > 1)
   {
              std::cout << " NUmber is more than 1";
              }
   if ( number < 1)
   {
        std::cout << " NUmber you have entered is smaler than 1";
}
else
std::cout << " WTF!? You have entered something extraordinary!";}

getch();
}
 
А у менявопрос по исходнику...
Я вот всегда считал что фукнции потока cout и cin находятся в библиотеке iostream.h. А он почему-то при выхове их говорит, что они находятся в std.... мне кажется это немного странным...
Да и если ты учишь обычный консольный Си, то пользуйся лучше каким-нибудь стареньким компилятором, на подобии BC3.1 :о) (Borland C++ 3.1)(кажется так полное название... :о) )
Добавлено в [time]1131267060[/time]
Да, кстати, east у тебя в послежнем else есть лишняя закрывающая скодка ;-)...
Да, и еще... если блок содержит одно действие, то мона не писать операторные скобки (или как их там называют...) ну типа если if содержит одно действие... и тому подобное
Я бы написал вот так вот -->
Код:
#include <iostream.h>
#include <conio.h>

void main(void){
	clrscr(); // Очистка экрана
	int number; /* объявление переменной. Да, для сравнения лучше использовать целочисленные переменные, т.к. в переменных с плавающей запятой как правило в 18 разряде существует "мусор" */
	cout << "Input number -->"; // Вывод сообщения
	cin >> number; // ввод сообщения
	clrscr(); // Очистка экрана
	if(number != 0){ // Если не равно нулю то входим в условие
  if(number < 1)cout << number << " -- Number less then 1\n"; // если true то выводим сообщения
  if(number > 1)cout << number << " -- Number more then 1\n"; // если true то выводим сообщения
	}
	else cout << number << " -- Number equal zero\n" // если в первом if fasle то выводим это сообщение
	cout << "Press any key\n"; // вывод сообщения
	getch(); // ожидание нажатия клавиши
	cout << "ThanX you for use our programm :o)"; // выводим благодарность
	for(double i = 0; i <= 10000000; i++); // и надоедаем пользователю, чтобы он прочитал его (пуской цикл :о))
}
Добавлено в [time]1131267160[/time]
Да, кстати, east у тебя в послежнем else есть лишняя закрывающая скодка ;-)...
Да, и еще... если блок содержит одно действие, то мона не писать операторные скобки (или как их там называют...) ну типа если if содержит одно действие... и тому подобное
Я бы написал вот так вот -->
Код:
#include <iostream.h>
#include <conio.h>

void main(void){
	clrscr(); // Очистка экрана
	int number; /* объявление переменной. Да, для сравнения лучше использовать целочисленные переменные, т.к. в переменных с плавающей запятой как правило в 18 разряде существует "мусор" */
	cout << "Input number -->"; // Вывод сообщения
	cin >> number; // ввод сообщения
	clrscr(); // Очистка экрана
	if(number != 0){ // Если не равно нулю то входим в условие
  if(number < 1)cout << number << " -- Number less then 1\n"; // если true то выводим сообщения
  if(number > 1)cout << number << " -- Number more then 1\n"; // если true то выводим сообщения
	}
	else cout << number << " -- Number equal zero\n" // если в первом if fasle то выводим это сообщение
	cout << "Press any key\n"; // вывод сообщения
	getch(); // ожидание нажатия клавиши
	cout << "ThanX you for use our programm :o)"; // выводим благодарность
	for(double i = 0; i <= 10000000; i++); // и надоедаем пользователю, чтобы он прочитал его (пуской цикл :о))
}
 
east
с твоим кодом работает, и полутше. Но не знаю как у тебя, но у меня опять фигня. Если ввдёшь число более одного, пишет
NUmber is more than 1

И потом после этого ещё и
WTF!? You have entered something extraordinary!

Lamer твой код не компилируется:( Компилирую в Dev-C++

Вероятно, я не так написал что я хотел.
Так.
Если введённая цифра равна нулю, выходит сообщение, что введённая циффра равна нулю.
Если введённая цифра меньше одного, то пишет что число меньше одного.

ААА, Ёшкин кот! Надо было поставить большше или меньше нуля, иначе области пересечения совпадают в некоторых местах.

Код:
#include <iostream>
#include <conio.h>

int main()
{
  std::cout << " Hello, enter any number, i wil do with it something\n";
  float number;
  std::cin >> number;
  if ( number == 0)
  {
       std::cout << number;
       std::cout << "\n You have entered that numberwhich is the same, as Zero\n";
       }
  else{
  if (number > 0)
  {
             std::cout << " NUmber is more than Zero";
             }
  if ( number < 0)
  {
       std::cout << " NUmber you have entered is smaler than Zero";
}
else
std::cout << " WTF!? You have entered something extraordinary!";}

getch();
}

Та же фигня:(
Всё пашет, кроме если число больше нуля. Он ещё и добавляят последнее сообщение.
Добавлено в [time]1131272241[/time]
Ой йо!
Там последнее сообщение вообще не надо.
С такими условиями оно ваще не разу не сможет быть выведено!
Но всё равно, он пишет несколько вариантов ответа сразу!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх