Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Для забавы =) 
:(
    Опции темы
FTK
Дата 12.12.2005, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 11.6.2005

Репутация: нет
Всего: нет



Hello world
Написал ф-цию факториала, получил забавный результат
Код

#include <iostream>

using namespace std;

int fac(int a)
{
    //if (a==0) return 1;
    switch (a)
    {
        case '0': return 1;
        case '1': return 1;    
        default:  int fac=1; for (int i=a; i!=1; --i) fac*=i; return fac;
    }
}

int main()
{
    int x;
Z: cout<<"input x"<<endl;
   cin>>x; if(x<0) {cout<<"x must be >=0"<<endl; goto Z;}
    cout<<"factorial x ="<<fac(x)<<endl;
    goto Z;
    return 0;
}

Попробуйте ввести --1.
Почему такое получается?
PM MAIL   Вверх
pablo
Дата 12.12.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



получается что ?
Добавлено @ 14:48
нормальное сообщение что число должно быть >= 0


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
FTK
Дата 12.12.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 11.6.2005

Репутация: нет
Всего: нет



Может у меня с++ какой-то тупой???
У меня в консоли появляется бесконечное количество сообщений, и не останавливается....
PM MAIL   Вверх
Aleksandor
Дата 12.12.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: 0
Всего: 12



А как же иначе если там бесконечный цикл??


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Neitron
Дата 12.12.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



О боже=)))))))))))))) goto
А ELSE уже не рулит и while

Это сообщение отредактировал(а) Neitron - 12.12.2005, 15:29


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
sergejzr
Дата 12.12.2005, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
FTK
Дата 12.12.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 11.6.2005

Репутация: нет
Всего: нет



Aleksandor
Нет, там выскакивает сообщение о том, что х д.б. >0
И все это не останавливается при вводе цифры, начинающейся с "--"
PM MAIL   Вверх
sergejzr
Дата 12.12.2005, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Цитата(FTK @ 12.12.2005, 13:44)
Почему такое получается?

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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Neitron
Дата 12.12.2005, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Мммм, невольно не хочу вмешиваться... но=))))
Отрицательные числа, они тоже целые.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
FTK
Дата 12.12.2005, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 11.6.2005

Репутация: нет
Всего: нет



sergej.z\
А для отрицательных чисел работает...
А для -- нет. Если поставить "--" число станет не целым?
PM MAIL   Вверх
sergejzr
Дата 12.12.2005, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



-1 это число.
--1 это не число, а действие
Добавлено @ 20:00
Парсер cin понимает только один знак перед цифрой, потому что он так определён. Иначе он должен был бы понимать извращения типа -(-1) и -(+(+1)) итд. Из за чего он бы тормозил на простых действиях. Поэтому если хотите извращений - перекладывайте оператор >> для них smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
FTK
Дата 12.12.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 11.6.2005

Репутация: нет
Всего: нет



sergej.z
круто! теперь вопрос снят
PM MAIL   Вверх
sergejzr
Дата 12.12.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



А Для проги - читай строку и делай atoi() потом.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
FTK
Дата 12.12.2005, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 11.6.2005

Репутация: нет
Всего: нет



sergej.z
Извиняюсь, но не в курсе, про atoi()...
PM MAIL   Вверх
sergejzr
Дата 12.12.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Код

#include <stdlib.h>

char[256] stroka;
cin>>stroka;
int result=atoi(stroka);


правда 0 будет и если строка числом не являлась.

ещё лучше исgользовать
Код

char * hlp=&(stroka[0]);
int result = strtol (stroka, &hlp, 10);
if(*hlp!=0) return -1;//введено не число

cout<<result;



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.