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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 5.00
pelele
7 / 2 / 1
Регистрация: 08.10.2009
Сообщений: 45
#1

Рассмотрение дробной части чисел - C++

19.11.2009, 20:47. Просмотров 3376. Ответов 10
Метки нет (Все метки)

Здравствуйте! Подскажите, пожалуйста, с решение одной задачки. Сама задача:Дана строка. Если строка содержит целое число – вывести 0, если вещественное число – вывести 1. В противном случае вывести – 2.
Как решать представление имею: чтобы узнать какое у нас число (целое или вещественное) нужно рассматривать их дробную часть, т.е. если у числа дробная часть равна нулю(все цифры после запятой равны 0), то это целое число, иначе - вещественное. Вопрос вот в чем! Как правильно записать формулу? Не могу никак представить синтаксис рассмотрения дробной части. Подскажите, пожалуйста, а то уже голова не варит Буду очень признательна Спасибки заранее
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2009, 20:47     Рассмотрение дробной части чисел
Посмотрите здесь:

Написать функцию для определения наличия в файле чисел, у которых сумма цифр целой и дробной части равны - C++
2)Дан текстовый файл с неизвестным количеством вещественных чисел. Написать функцию для определения есть ли среди них число у которого...

Округление дробной части - C++
Помогите пожалуйста!!! Как реализовать метод округления дробной части до 0,1 (0,36 -> 0,4; 0, 33333 ->0,3 и т.д.)????

Погрешность дробной части - C++
Сначала опишу задание, потом проблему. Задание: Дан первый элемент, остальную часть последовательности чисел надо вычислить по...

Отброс дробной части - C++
как можно отбросить дробную часть(не округлить) от переменной?

Вывод дробной части - C++
Всем привет. Проблема собственно такая, не получается вывести дробную часть стороны треугольника, т.е 4,5(выводит только 4) уже не выводит,...

Сумма цифр дробной части - C++
Всем привет! Весь день пытаюсь найти ошибку в своей программе. Задача вот такая: Найдите сумму первых трех цифр дробной части...

Вывод целой и дробной части - C++
"Вводятся числитель и знаменатель дроби. Вывести: знак, целую часть, сокращенные числитель и знаменатель." со знаком разобрался,а вот...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
escape
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 7
20.11.2009, 00:15     Рассмотрение дробной части чисел #2
может быть, взять остаток от деления на 1?
например,
if ((x%1)==0); // то число целое,
//выводим ноль
else
// выводим 2

что-то в таком роде

честно говоря, не совсем понятно условие "Если строка содержит целое число – вывести 0, если вещественное число – вывести 1. В противном случае вывести – 2. "
что имеется ввиду под противным случаем?
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
20.11.2009, 00:25     Рассмотрение дробной части чисел #3
escape, у double, если не ошибаюсь, компилятор не даст получить остаток.
допустим такая ситуация
есть наше число записанное в переменную типа double, но мы не знаем целое оно или нет, считаем просто разность
C++
1
2
double d = ...;
std::cout<<(d - (int)d == 0) ? '0' : '1';
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
20.11.2009, 02:56     Рассмотрение дробной части чисел #4
число может иметь иррациональную дробную часть - число иррациональное, выводить надо -2

Добавлено через 2 минуты
но записать иррациональное в строку полностью - не получится, так что вариант отпадает.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.11.2009, 05:20     Рассмотрение дробной части чисел #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <ctype.h>
 
int f(const char *l)
{
    const char *p;
    
    for (p = l;
         isdigit((unsigned char) *p);
         p++)
        ;
    if (p > l)
        if (*p == '.'
         && isdigit((unsigned char) *(p+1)))
            return 1;
        else
            return 0;
    return 2;        
}
пробелы в начале можно пропустить через isspace
0. - целое, 0.0 - дробное, .0 - неизвестное
timuragmk
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 6
20.11.2009, 08:07     Рассмотрение дробной части чисел #6
Често говоря, не понял, что Вы имели ввиду под словом "строка", но для определения типа переменной нашел вот это:

C++
1
2
3
4
5
6
7
8
9
10
#include <typeinfo.h>
 
int main(int argc, char* argv[])
{
    double i=0;
 
    cout << typeid(i).name();
 
    return 0;
}
Выводит: double
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.11.2009, 14:23     Рассмотрение дробной части чисел #7
2timuragmk: это совсем не то.

Нужно с помощью strtod() прочитать число.
Если не читается - значит это не число.
Если читается - тогда проверяем какая дробная часть.
Если дробная часть равно 0, тогда число целое.
Иначе - вещественное.
Дробную часть можно получить с помощью функции modf().
http://www.cplusplus.com/reference/clibrary/cmath/modf/

Подробнее чем этот алгоритм можно только написать программу
pelele
7 / 2 / 1
Регистрация: 08.10.2009
Сообщений: 45
20.11.2009, 21:38  [ТС]     Рассмотрение дробной части чисел #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
char str[16];
  printf("vvedi 4isl:");
  gets(str);
    int flag = 0;
    for(int i=0;str[i]!=0;i++){
        if(isdigit(str[i])) continue;
        if(((str[i]=='+')||(str[i]=='-'))&&(i==0)) continue;
        flag = 1;
        break;
    }
    if(flag == 0){
        printf("0\n");
        return 0;
    }
  flag = 0;
    int p = 0;
    for (int i=0; str[i]!=0; i++){
            if (isdigit (str[i])) continue;
      if (((str[i]=='+')||(str[i]=='-'))&&(i==0)) continue;
      if ((str[i]=='.') && (isdigit (str[i+1])) && (p==0)) {p=1; continue;}
         flag = 1;
          break;
}
  if(flag==0) {
        printf("1\n");
        return 0;
    }
    printf("2\n"); 
  return 0;
как-то так всем спасибо большое, что откликнулись
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.11.2009, 14:23     Рассмотрение дробной части чисел #9
А что такое по-твоему: "1.0e10" ?
Это вещественное число, а у тебя получается что это не число вовсе
pelele
7 / 2 / 1
Регистрация: 08.10.2009
Сообщений: 45
14.12.2009, 22:39  [ТС]     Рассмотрение дробной части чисел #10
Цитата Сообщение от odip Посмотреть сообщение
А что такое по-твоему: "1.0e10" ?
Это вещественное число, а у тебя получается что это не число вовсе
Ну это упрощенное решение Рассматривается только целая часть числа и остаток, а что дальше идет не знаю как решать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2009, 23:32     Рассмотрение дробной части чисел
Еще ссылки по теме:

Выделение дробной части из числа - C++
Дано число, например, х=124,556 нужно найти его целую и дробную части, чтобы получилось так: int a(целая),b(дробная) а=124 b=556 ...

Разделитель целой и дробной части - C++
Как получить текущий разделитель целой и дробной части ? visual studio 2013.

Отделение дробной части от числа - C++
у меня такое задание: Функци принимает в себя дробное число и возвращает только его дробную часть мне нужно вывести на экран только...

Вывод дробной и целой части - C++
Вывод дробной и целой части. Вводим число с = 1,5 ; Выводит целое: а = ; и дробное: в = ;

Деление без откидывания дробной части - C++
привет обитателям форума. у меня вот такая вот проблемка, задание простое но поделить не могу никак. ***** Задан массив из 10...


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

Или воспользуйтесь поиском по форуму:
Том Ардер
Модератор
Эксперт по математике/физике
3736 / 2349 / 293
Регистрация: 15.06.2009
Сообщений: 4,202
14.12.2009, 23:32     Рассмотрение дробной части чисел #11
Два признака, по которым вещественное число отличается от целого - это десятичная точка и (или) экспонента. Должен быть по крайней мере один из них. Напр. 20 - целое, а 20., 20.0, 2.е1 и 2е1 - вещественные.
Поэтому в строке нужно сначала искать точку или символ е (Е), чтобы определить возможный тип числа. А потом применять соответствующее преобразование строки в целое или вещественное (напр. atoi, atol, atof). Успешно преобразовалось - число, нет - что-то другое
Yandex
Объявления
14.12.2009, 23:32     Рассмотрение дробной части чисел
Ответ Создать тему
Опции темы

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