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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Лафоре. Программирование в С++, помогите сделать упражнение 
:(
    Опции темы
Hawaii
  Дата 5.6.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Полное название книги "Объектно-ориентированное программирование в C++", автор Р. Лафоре
У кого есть сделаное упражнение 7 главы 7 этой книги, напишите его, а то я совсем не знаю как его делать. smile  smile  smile 
PM MAIL   Вверх
Greeen
Дата 5.6.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile  smile 


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
JackYF
Дата 5.6.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


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

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



Цитата(Hawaii @  5.6.2007,  18:18 Найти цитируемый пост)
У кого есть сделаное упражнение 7 главы 7 этой книги, напишите его, а то я совсем не знаю как его делать. smile  smile  smile  


Тебе в раздел Центр Помощи.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
korbian
Дата 6.6.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Насколько я помню, в этой книге есть ответы


--------------------
korbian ©
PM   Вверх
Hawaii
Дата 6.6.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Только на первые 3 упражнения каждой главы
PM MAIL   Вверх
betal
Дата 6.6.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ты бы хоть задание попробывал написать. Ведь не все имеют эту книгу
--------------------
101100010100001101100001110100101111011легкие деньги
PM WWW ICQ   Вверх
Hawaii
Дата 6.6.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Слово в слово....

Одним из недостатков С++ является отсутствие для бизнес-программ
встроенного типа для денежных значений, такого, как $173 698 001,32.
Такой денежный тип должен иметь возможность для хранения числа с 
фиксированной десятичной точкой точностью около 17 знаков, которого
было бы достаточно для хранения национального долга в долларах и цен-
тах. К счастью, встроенный тип С++ long double имеет точность 19 цифр,
поэтому мы можем использовать его как базисный для класса money, даже 
используя плавающую точку. Однако нам нужно будет добавить возмож- 
ность ввода и вывода денежных значений с предшествующим им знаком 
доллара и разделенными запятыми группы по три числа: так проще читать
большие числа. Первым делом при разработке такого класса напишем ме- 
тод mstold(), который принимает денежную строку, то есть строку, пред- 
ставляющую собой некоторое количество денег типа 

"$1,234,567,890,123.99"

в качестве аргумента и возвращает эквивалентное ее значению число типа 
long double.

Вам нужно будет обработать денежную строку как массив символов и, 
просматривая ее символ за символом, скопировать из нее только цифры 
(0 - 9) и десятичную точку в другую строку. Игнорируется все остальное, 
включая знак доллара и запятые. Затем вы можете использовать биб- 
лиотечную функцию _atold() (заметим, что здесь название функции на- 
чинается с символа подчеркивания - заголовочные файлы STDLIB.H или 
MATH.H) для преобразования новой строки к числу типа long double. Пред- 
полагаем, что денежное значение не может быть отрицательным. Напи- 
шите функцию main() для проверки метода mstold(), которая несколько 
раз получает денежную строку от пользователя и выводит соответству- 
ющее число типа long double.
PM MAIL   Вверх
BigHeart
Дата 7.6.2007, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



то есть тебе нужно во первых написать функцию, которая переводит строки в long double? я правильно понял?
PM MAIL   Вверх
DigitSphinx
Дата 7.6.2007, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#include<conio.h>
#include<stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
long double MyFunc(char * s);
int _tmain(int argc, _TCHAR* argv[])
{
    char s[1024];
    cin.getline(s, 1024, '\n');
    long double ll = MyFunc(s);
    cout << endl << ll << " Dollars";
    _getch();
}
long double MyFunc(char * s)
{
    long double Result = 0.0, e = 1.0;
    int i, j;
    if (s[0] == 36)// '$' = 36
    {
        for (i = 0; i < strlen(s); i++)
            s[i] = s[i + 1];
    }
    char buff[1024];
    memset(buff, 0, 1024);
    for (i = 0, j = 0; i <strlen(s); i++)
        if (s[i] > 47 && s[i] < 58) // Цифра
        {
            buff[j] = s[i];
            j++;
        }
        else if (s[i] == 46 || s[i] == 44)
            continue;
        else
            return 0.0;
    for(i = strlen(buff);i--;) 
        if (buff[i] != 46)
        {
           Result += (buff[i] - 48) * e;
           e *= 10.0;
        }
    Result /= 100;
    return Result;
}

Не пинайте, писал в 4:55 утра (что я только не делаю чтобы не готовится к экзамену по тер.вер.)

Это сообщение отредактировал(а) DigitSphinx - 8.6.2007, 23:53


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
EnergoHokum
Дата 7.6.2007, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Смотри классы iostream, там есть возможность распотрошить строку на предмет отделения цифр от остальных символов и ещё разное интересное. А придумывать что-то мне сейчас лень.
PM MAIL ICQ   Вверх
Damarus
Дата 7.6.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



BigHeartDigitSphinxEnergoHokum, вы читать умеете? Там класс надо написать.
PM MAIL ICQ Jabber   Вверх
betal
Дата 7.6.2007, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(DigitSphinx @  7.6.2007,  03:47 Найти цитируемый пост)
Не пинайте, писал в 4:55 утра (что я только не делаю чтобы не готовится к экзамену по тер.вер.)

 smile а я думал я такой один  smile 
--------------------
101100010100001101100001110100101111011легкие деньги
PM WWW ICQ   Вверх
EnergoHokum
Дата 7.6.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



To Damarus
Читать умею, прямого запрета на использование внутри проектируемого класса сторонних классов не обнаружил.
PM MAIL ICQ   Вверх
DigitSphinx
Дата 7.6.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



то 
Damarus
Цитата(Damarus @  7.6.2007,  10:49 Найти цитируемый пост)
BigHeartDigitSphinxEnergoHokum, вы читать умеете? Там класс надо написать.

А в чем проблема ? сядь и напиши Раз такой умный !


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
BigHeart
Дата 7.6.2007, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну как по мне, если есть готовый набор функций, то оформить их в виде класса не есть особая проблема
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0964 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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