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

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

Войти
Регистрация
Восстановить пароль
 
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
#1

Обрезается число - C++

11.03.2013, 12:57. Просмотров 377. Ответов 0
Метки нет (Все метки)

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
#include <cmath>
#include <conio.h>
 
using namespace std;
 
class Chislo
{
private:
        double value;  
    public:
        Chislo() 
        {
            value = 0;
        }
        void set(double _value)                 //инициализируем поле
        {
            value = _value;
        }
        double getNumber()                      //получить значение
        {
            return value;
        }
        int tselN()                             //Количество цифр в целой части числа
        {
            int chislo = (int)value, i = 1;
            while(chislo / 10 != 0)
            {
                ++i;
                chislo /= 10;
            }
 
            return i;
        }
        int drobN()                             //количество чисел в дробной части числа
        {
            double fractpart, intpart;
            fractpart = modf (value , &intpart);
 
            char buff [100];
            int kol = 0, size = 0, i = 0, kol1;
            bool flag = false;
            if(fractpart != 0)                  //если после запятой есть цифры
            {
                sprintf(buff, "%f", fractpart);     //double -> char
                size = strlen(buff);
                for(i = 0; i < size; i++)       //считаем от конца до первой
                {                               //цифры отличной от нуля
                    if(buff[i] == ',')
                    {
                        for(int j = size - 2; j > i; --j)       //считаем от цифры до запятой
                        {
                            if(buff[j] == '0')
                                ++kol;
                            else
                            {
                                flag = true;
                                break;
                            }
                        }
                    }
                    if(flag == true)
                    {
                        ++i;
                        break;
                    }
                }
                kol1 = size - 1 - i - kol;          //кол-во эл-ов после запятой
                kol = kol1; 
            }
            else                                //иначе после запятой только нули
                kol = 0;
            return kol;                     //возвращаем кол-во цифр после запятой
        }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    int Kol_el;
    cout << "Введите размер массива: ";
        cin >> Kol_el;
    double value;
    Chislo Universal;
    Chislo *pChislo = new Chislo[Kol_el];           //выделяем память
    //инициализация массива
    for (int i = 0; i < Kol_el; i++)
    {
        cout << "Введите элемент массива [" << i << "]: ";
            cin >> value;
            pChislo[i].set(value);
    }
    cout << "\n";
    //Вывод на экран
    for(int i = 0; i < Kol_el; i++)
    {
        cout << "Число x[" << i << "]: " << pChislo[i].getNumber() 
            << "\nКоличество чисел в целой части числа: " << pChislo[i].tselN()
            <<"\nКоличество цифр в дробной части числа: " << pChislo[i].drobN() << "\n";
        cout << "\n";
    }
    delete []pChislo;           //освобождаем память
    _getch();
    return 0;
}
Условие задачи:
Кликните здесь для просмотра всего текста

Описать класс, включающий заданные поля и функции. Разработать программу, которая создает массив объектов (размерность массива n вводится с клавиатуры) и выполняет требуемые действия.
Класс - вещественное число, записанное с точкой. Параметры - его значение (вещественный тип) и запись (строковое представление числа). Статус доступа всех полей private. Класс включает: конструктор и функции, определяющие количество цифр в дробной и целой частях числа. Определить сумму введенных чисел и отношение количества цифр в целой и дробной частях всех чисел.


Я допустим ввожу число 101.1001 , а выводит 101.1 . В чем у меня проблема? С числами без нуля в дробной части все нормально

Добавлено через 5 минут
Очистка буфера flushall() не помогает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 12:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обрезается число (C++):

Запись в реестр обрезается - C++
Всем привет. Пишу программку, которая записывает в реестр указанные пути к файлам. Код такой. struct vec { ... int length;//длина...

Обрезается файл после экстренного выключения ПК - C++
Доброго времени суток! Есть программа которая сохраняет результаты в .txt файл к примеру, через каждые 10 секунд (как автосейв). Все бы...

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. - C++
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. ...

Дано 2-ух-значное число. Сделать так, чтоб программа преобразовала это число в новое число кол-во десятков - C++
Тоесть, для примера, мы вводим число 23, а программа выводит нам 32 (числа наоборот).

Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить на первое место, то число удвоится. Найти это число - C++
Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить на первое место, то число удвоится. Найти это число.

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 12:57
Привет! Вот еще темы с ответами:

Дано действитёльное число х. Получить целую часть *) числа х; затем — число х, округленное до ближайшего целого; затем — число х без дробных цифр. - C++
Здравствуйте помогите написать программу. Дано действитёльное число х. Получить целую часть *) числа х; затем — число х, округленное до...

Не получается исправить ошибку (Вводится диапазон, где 1-ое число-начало диапазона, 2-ое число приращени, 3-е число конец диапазона) - C++
Здравствуйте. Не могу исправить ошибку. Задание: Вводится диапазон, (например 5,1,10) где 1-ое число-начало диапазона, 2-ое число...

Введенное число делить на второе введенное число пока первое число не станет равным нулю - C++
Введенное число делить на второе введенное число пока первое число не станет равным int number=0; int secondNum=0; int...

Дано натуральное четырехзначное число n. Определить, является ли это число перевертышем - C++
Дано натуральное четырехзначное число n. Определить, является ли это число перевертышем. Например, числа 2222, 6116, 0440 и т.д.


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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