Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 515
#1

условие - C++

27.09.2011, 11:08. Просмотров 351. Ответов 6
Метки нет (Все метки)

Ответ скорее всего прост,но не могу придумать никак

Код
#include <stdio.h>
#include <conio.h>
#include <locale.h>
int fact(int n)//в цикле со счётчиком умножают переменную на счетчик, который уменьшается на 1 со значения  = число факториал которого находят до 1

{
    int result=1;
    for(int i=n; i>=1; i--)
    {
        result*=i;
    }
    return result;
}
int main()
{
    setlocale(LC_ALL,"Rus");//русский язык
    int n;//переменная
    printf("Найдем значение выражения 1/0!+1/1!+...+1/n!\n\n");
    float sum;//переменная суммы
    printf("Введите n: ");
    scanf("%i",&n);
    for(int i=0; i<=n; i++)
    {
        sum+=1/(double)fact(i);//формула для вычисления
    }
    if (n>=0)
    printf("\nСумма = %.4f",sum);
    else
    printf("\nЧисло не может быть меньше нуля");
    getch();
}

Мне нужно условие,защита от дроби,тоесть если в консоли вводить дробное число писало "Ощибка.Введите целое неотрицательное число" Срочно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2011, 11:08     условие
Посмотрите здесь:

C++ условие в if
C++ Условие
Условие в while C++
условие C++
C++ Условие переменной
C++ Условие if
C++ исправить условие!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
3031 / 2352 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.09.2011, 11:19     условие #2
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
C++
1
sum+=1/(double)fact(i);//формула для вычисления
для такого присваивания нужно sum инициализировать начальным значением.

Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
Мне нужно условие,защита от дроби,тоесть если в консоли вводить дробное число писало
Для этого нужно читать строку, потом если все нормально преобразовывать в число.
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 515
27.09.2011, 11:22  [ТС]     условие #3
конкретно условие if() можете написать?что если n не целое то ошибка
kazak
3031 / 2352 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.09.2011, 11:28     условие #4
Для scanf("%i",&n); в n по определению не может попасть дробное число, так как задан тип переменной, куда производиться считывание, как целое число. При вводе вся нечисловая информация будет осавлена в буфере. Т.е. если будет введено, допустим "1234.53", в n попадет 1234, а ".53" останется в буфере.
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 515
27.09.2011, 11:32  [ТС]     условие #5
Выходит никак не сделать условие от неверного заполнения?просто нужно чтоб при вводе со знаком писал ошибку
kazak
3031 / 2352 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.09.2011, 11:53     условие #6
Я же писал, тогда используй строки. Считываешь строку, пробегаешь посимвольно, если очередной символ не цифра, то выдаем обшибку, если строка нормальная, то преобразуем в число.
C
1
2
3
4
5
6
7
8
9
10
char num;
int n;
scanf("%s", str);
for (int i = 0; i < strlen(num); i++)
   if (num[i] < '0' || num[i] > '9')
   {
      /*обрабатываем ошибку*/
   }
/*Если все нормально, преобразуем строку в число*/
n = atoi(num);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2011, 12:33     условие
Еще ссылки по теме:

C++ условие задачи
Условие C++
Условие C++
Условие C++
C++ Придумать условие

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 515
27.09.2011, 12:33  [ТС]     условие #7
а if(условие) какое нить придумать?

Добавлено через 35 минут
Оказалась как всегда все намного проще,мысля все таки пришл добавил еще переменную float t и модифицировал маленько код

Код
  
printf("Vvedite n: ");
    scanf("%f",&t);
    while(t<=0 ||t!=(int)t)
	{
    printf("\nNekorektnoe chislo\n");
    printf("\nVvedite n: ");
    scanf("%f",&t);
    }
    n = t;
Тему удалите
Yandex
Объявления
27.09.2011, 12:33     условие
Ответ Создать тему
Опции темы

Текущее время: 03:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru