Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Расстояние между двумя точками, double или int? https://www.cyberforum.ru/ cpp-beginners/ thread1306841.html
#include <iostream> #include <conio.h> #include <cmath> using namespace std; int distance(int, int, int, int); int main() { int x1 = 4;
Упорядочить заданную матрицу по возрастанию элементов в каждом столбце C++
Дана матрица С размером m*n. Упорядочить эту матрицу по возрастанию элементов в каждом столбце. помогите пожалуйста срочнооо!
C++ Получить матрицу С=(A+B*2)*В+A Даны матрицы: А размером m*k и В размером k*n.Получить матрицу С=(A+B*2)*В+A Добавлено через 54 секунды Точно https://www.cyberforum.ru/ cpp-beginners/ thread1306832.html C++ Перестановками заполнить главную диагональ двумерного массива наибольшими элементами Дана квадратная матрица. С помощью перестановок добиться того, чтобы её максимальный элемент находился в верхнем левом углу, следующий по величине в позиции (2.2) и т.д. Таким образом необходимо заполнить все главную диагональ. Подскажите, как рациональнее сделать это. https://www.cyberforum.ru/ cpp-beginners/ thread1306822.html
C++ Определить максимальную сумму соседних элементов в двумерной матрице
Определить максимальную сумму соседних элементов в двумерной матрице
C++ Адреса двух разных переменных одинаковы Добрый день! Пытаюсь вывести в Memo1 адреса переменных: int a=5555; int b=6156; Memo1->Lines->Add(IntToStr(&a)); Memo1->Lines->Add(IntToStr(&b)); Получаю в итоге: для "a" адрес равен 1, для "b" адрес равен 1. Разве они не должны быть разные? Переменные же разные. Спасибо заранее всем кто откликнется https://www.cyberforum.ru/ cpp-beginners/ thread1306814.html
C++ В заданной квадратной матрице указать индексы всех элементов с наибольшим значением (что исправить?) https://www.cyberforum.ru/ cpp-beginners/ thread1306803.html
В заданной квадратной целочисленной матрице указать индексы всех элементов с наибольшим значением #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main(){
C++ как организовать поиск данных
Нужно найти данные о туре по либо стране,либо по городу и тд.Есть код,но поиск не работает .Помогите пожалуйста исправить программу #include <stdio.h> #include <conio.h> #include <stdlib.h> void input_data(void); void output_data(void); void change_data();
C++ Является ли заданное число числом Фибоначчи? Здравствуйте написал программу но вот проверку сделать не могу помогите пожалуйста.Условия задачи внизу. Числа Фибоначчи строятся следующим образом: 1, 1, 2, 3, 5, …. В этой последовательности, начиная с третьего числа, каждый следующий член равен сумме двух предыдущих. Получаем, что, например, шестое число равно 8, а десятое - 55. Требуется написать программу, которая определяет, является... https://www.cyberforum.ru/ cpp-beginners/ thread1306768.html C++ Процедура цифровой сортировки списка (Digital Sort) Помогите, прошу! Разработать процедуру цифровой сортировки списка (DigitalSort). Для проверки правильности сортировки использовать сервисные процедуры для работы со списками, разработанные в лабораторной работе № 9. Лаба номер 9: #include <iostream> #include <time.h> #include <string.h> https://www.cyberforum.ru/ cpp-beginners/ thread1306750.html
C++ Структура "Человек": поиск в по критерию
Известны фамилии 25 человек, их семейное положение: женат (замужем) или нет, и сведения о наличии детей (есть или нет). Определить фамилии женатых (замужних) людей, имеющих детей.
C++ Функция, возвращающая указатель на структуру Помогите пожалуйста понять в чем ошибка! Функция create должна возвращать указатель на структуру Vector #include <iostream> using namespace std; struct Vector { int x; int y; int sum; https://www.cyberforum.ru/ cpp-beginners/ thread1306742.html
0 / 0 / 1
Регистрация: 20.12.2013
Сообщений: 9
0

Задача 7 главы 7 из книги Р. Лафоре. Строки - C++ - Ответ 6881587

21.11.2014, 14:00. Показов 2184. Ответов 2
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Недавно начал изучать С++ по, наверное, уже всем поднадоевшему, учебнику Роберта Лафоре. На данный момент изучаю главу с массивами и строками. Меня привела в тупик задача 7 главы 7:
Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для денежных значений, такого, как $173 698 001.32. Такой денежный тип должен иметь возможность для хранения числа с фиксированной десятичной точкой точностью около 17 знаков, которого было бы достаточно для хранения национального долга в долларах и центах. К счастью, встроенный тип C++ 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.

Вот, собственно, что у меня получилось

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
#include <windows.h>
#include <math.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
const int MAX = 22;
class money {
    private:
        long double sum;
 
    public:
        money(): sum(0.0)
        { }
        money(long double sm): sum(sm)
        { }
        void show() const {
            cout << setprecision(MAX) << sum << endl;
        }
        long double mstold(char []);
};
 
long double money::mstold(char numb[]) {
    long double mny;
    char num[MAX];
    int k = 0;
    for (int j = 0; j < strlen(numb); j++)
        for (int i = 0; i < 10; i++)
            if (numb[j] == (i + '0'))
                num[k++] = numb[j];
            else if (numb[j] == '.') {
                num[k++] = '.';
                break;
            }
    num[k] = '\0';
    mny = _atold(num);
    return mny;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    money mn, result;
    char number[MAX];
    char answer = 'a';
    do {
        cout << "Введите значение суммы: ";
        cin.get(number, MAX);
        result = mn.mstold(number);
        cout << "Вы ввели сумму: ";
        result.show();
        cout << "Вы хотите продолжить (y/n)? ";
        cin >> answer;
    } while (answer != 'n');
    return 0;
}
По условию задачи, пользователь несколько раз должен ввести строку и получить результат. Для этого я воспользовался циклом do. Первый раз я нормально ввожу строку, например, то значение, которое предложено в книге - $1 234 567 890 123.99 - и получаю нужный результат уже в числовом значении - 1234567890123.99. Дальше идет предложение о том, чтобы продолжить перевод чисел. Я ввожу любое значение, кроме 'n', но дальше программа просто уходит в бесконечный цикл, выводя сообщения о том, что уже введен 0. При этом в массиве number[0] = '\0'. Может кто-нибудь подскажет как я могу это исправить. Большое спасибо.

Вернуться к обсуждению:
Задача 7 главы 7 из книги Р. Лафоре. Строки C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2014, 14:00
Готовые ответы и решения:

Работа с Классами или разбираем 10 Упражнение 6 главы книги ООП в С++ Р.Лафоре
Доброго времени суток господа. Подскажите пожалуйста каким образом можно объединить классы? Почему...

Лафоре, код из 10 главы
Как не ломал голову, не могу понять, зачем тут префиксная запись инкремента на 16-ой строке кода :...

Задача из книги Р.Лафоре содержит ошибки, исправьте пожалуйста
#include &lt;iostream&gt; using namespace std; int main() { int age; for(int j=0;j&lt;4;j++) {...

Задача про взлом кода из книги Эрика Фримена про основы javascript в конце 5 главы.
читаю книгу Эрика Фримена про основы javascript.В конце 5 главы есть задачка про взлом кода.Никак...

2
21.11.2014, 14:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2014, 14:00
Помогаю со студенческими работами здесь

Проблема с калькулятором из 6 главы книги Страуструпа
После ввода выражения и нажатия клавиши enter, switch не попадает в default, а ждет ввода...

Пример из главы про репу из книги Марлоу
Simon Marlow -&gt; Parallel and Concurrent Programming in Haskell -&gt; Example: Computing Shortest Paths...

Программка из 4 главы книги Страуструпа принципы и практика - не работает
В общем в 4 главе в подпункте векторы на странице 152 имеется вот такой код: #include &lt;iostream&gt;...

Не получается сделать 6е задание 3й главы из книги Бьярне Страуструп
Здравствуйте, я совсем не давно начал изучать C++ и начал с книги Бьярна Страуструпа, и остановился...

Задания из книги Р. Лафоре
Добрый день, решаю задачу из книги Лафоре. Если в двух словах, то нужно перевести строку в long...

Задания из книги Р. Лафоре
Приветствую всех! Выполняю задание из книги Р. Лафоре &quot;ООП в С++&quot;. Задание главы 7. Одним из...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru