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

Класс: Вещественное число, записанное с точкой - C++

Восстановить пароль Регистрация
 
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
10.03.2013, 22:56     Класс: Вещественное число, записанное с точкой #1
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
#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
class Chislo
{
    double znach; //Значение
    char zapis[32]; //Запись числа
public:
    Chislo() // Конструктор без параметров создает "пустой" объект
    {
        znach=zapis[0]=0;
    }
    void set(double zn, char zp[]) // Функция для инициализации полей для созданного "пустого" объекта
    {
        znach=zn;
        strcpy(zapis, zp);
    }
    Chislo(double zn, char zp[]) //Конструктор для инициализации полей
    {
        znach=zn;
        strcpy(zapis, zp);
    }
    int tselN() //Количество цифр в целой части числа
    {
        int q=0;
        for (int i=0; i<32; i++)
        {
            if (zapis[i]!=',' || zapis[i]!='.') q++;
            else    return q;
        }
    }
    int drobN() //количество чисел в дробной части числа
    {
        int q=0,
        i=tselN()+1;    //индекс первой цифры после запятой
        while (zapis[i]==0)
            q++;
        return q;
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    double x;
    char Str[32];
    cout<<"Vvedite chislo: ";
    cin>>x;
    sprintf(Str, "%s", x);
    Chislo pChislo(x,Str);
    _getch();
    return 0;
}
Условие задачи:
Кликните здесь для просмотра всего текста

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

У меня программа написана для числа. Как в моем случае сделать для массива?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 22:56     Класс: Вещественное число, записанное с точкой
Посмотрите здесь:

В строке записано вещественное число в форме с фиксированной точкой. Преобразовать строку, записав в нее округленное до целых значение данного числа. C++
Создать класс "Вещественное число" C++
Задача число и число записанное в обратном направлении сумма целого числа C++
C++ Написать класс Binary, который инкрементирует число, записанное в 2-чном виде
Помогите разобраться с кодом. Класс, описывающий длинное вещественное число. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.03.2013, 23:02     Класс: Вещественное число, записанное с точкой #2
Так а класс то зачем менять? В мейне объявляешь массив типа Chislo и всё.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int _tmain(int argc, _TCHAR* argv[])
{
    double x;
    char Str[32];
    Chislo pChislo[10];
    for (int i=0; i<10; i++){
      cout<<"Vvedite chislo: ";
      cin>>x;
    sprintf(Str, "%s", x);
       pChislo[i]=Chislo(x,Str);
    }
    _getch();
    return 0;
}
А вообще это такой бред требовать передачи в конструктор И числа И его строки. Перевод в строку это задача твоего класса вообще-то.
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
10.03.2013, 23:11  [ТС]     Класс: Вещественное число, записанное с точкой #3
Kuzia domovenok, у меня пишет: неправильный указатель
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.03.2013, 23:23     Класс: Вещественное число, записанное с точкой #4
Цитата Сообщение от kukhtikov Посмотреть сообщение
sprintf(Str, "%s", x);
ты хотел сказать %lf
???
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
11.03.2013, 00:01  [ТС]     Класс: Вещественное число, записанное с точкой #5
Kuzia domovenok, я тут короче в накодил и у меня получается проблема в том, что на выводе пишет последнее введенное число, выводит почему-то не больше 3-х элементов массива, и при встрече в целой и дробной частях числа нуля, он в выводе пишет только количество чисел до 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
#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
 
using namespace std;
 
class Chislo
{
    double znach; //Значение
    char zapis[32]; //Запись числа
public:
    Chislo() // Конструктор без параметров создает "пустой" объект
    {
        znach=zapis[0]=0;
    }
    void set(double zn, char zp[]) // Функция для инициализации полей для созданного "пустого" объекта
    {
        znach=zn;
        strcpy(zapis, zp);
    }
    Chislo(double zn, char zp[]) //Конструктор для инициализации полей
    {
        znach=zn;
        strcpy(zapis, zp);
    }
    int tselN() //Количество цифр в целой части числа
    {
        int a=0, d=znach/10;
        while (1)
        {
            if (d!=0) 
            {
                a++;
                d/=10;
            }
            else 
            {
                a++;
                break;
            }
        }
        return a;
    }
    int drobN() //количество чисел в дробной части числа
    {
        int a=0;
        int k=10;
        double t=znach;
        while(true)
        {
             t*=10;
             if ((int)t%10==0) break;
             a++;
        }
        return a;
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    int n;
    cout << "Vvedite razmer massiva: n=";
    cin >> n;
    cout << '\n';
    double x;
    char Str[32];
    Chislo *pChislo;
    pChislo = new Chislo[n];
    for (int i=0; i<n; i++)
    {
      cout<<"Vvedite chislo x["<<i << "]: ";
      cin >> x;
      //sprintf(Str, "%s", x);
      pChislo[i]=Chislo(x,Str);
    }
    cout << '\n';
    //Вывод на экран
    for(int i=0;i<n;i++)
    {
        cout << "Число x[" << i << "]: " << x  << " . Количество чисел в целой части числа: " << pChislo[i].tselN() <<" . Количество цифр в дробной части числа: " << pChislo[i].drobN();
        cout << '\n';
    }
    _getch();
    return 0;
}
Yandex
Объявления
11.03.2013, 00:01     Класс: Вещественное число, записанное с точкой
Ответ Создать тему
Опции темы

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