Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Найти число е Найти тысячу знаков числа е используя разложение e = 1 +1/1!+1/2!+1/3!+... В с++ https://www.cyberforum.ru/ cpp-beginners/ thread1008814.html C++ Работа с пользовательскими функциями на языке С++
Здравствуйте! Написал несложную программу на С++. В данный момент времени попытался разбить ее на функции, но она неправильно работает - после разбивки на функции она выдает некорректный результат.Однако если все выражения описаны в одной главной функции main, то расчет правильный. Я думаю, что после разбивки на функции у меня неправильно организован вызов описанных в программе пользовательских...
C++ Измерение времени переключения контекста Кто может подсказать, какими способами это возможно реализовать в Windows? Есть ли способы, не прибегая к ассемблеру? Есть мысли на счет включения таймера, затем принудительной смены контекста ф-цией SwitchToThread() и завершения таймера. Но, думаю, это не самое умное, да и точное. Или хотя бы кого мне почитать?:) https://www.cyberforum.ru/ cpp-beginners/ thread1008800.html C++ задача про ip и классы https://www.cyberforum.ru/ cpp-beginners/ thread1008787.html
Описать класс IP-адрес. Для него перегрузить операции <,>, ==, !=(Подробно реализовать лишь <, остальные реализовать с её использованием), « , ». Операция сравнения должна работать так: один IP-адрес считается больше другого, если его подсеть первого больше подсети второго. Считать что маска подсети 255.255.255.0. В файле input.txt находятся IP-адреса(корректные). Считать их из файл и ...
Как назвать переменную зная её String C++
Например есть у нас массив из трех стрингов. {a b c}. Я такой считываю и хочу что бы первый символ "в данном случае а" обозвал новую переменную. т.е. string a="11". Т.е. я хочу в 'a' записать новые переменные. Пример" {axy} 1111/11+11= ax/x+y=>a/x=1y string a = "1111"; string x="11"; string y="11";
C++ Аналог функции window() из conio.h Нужен аналог этой функции для Win консоли. То есть нужна функция, которая устанавливает активное окно в консоли (ну тоесть часть экрана) для вывода текста. https://www.cyberforum.ru/ cpp-beginners/ thread1008776.html
C++ Дешифровка в алгоритме RC5-16/4/4 https://www.cyberforum.ru/ cpp-beginners/ thread1008773.html
В общем, алгоритм стандартный, сделан по книжке Рона Райвеста, проверял уже десять раз, но ошибку так и не нашел. Дешифрованный текст не совпадает с исходным (введенным). Собственно в этом и проблема. Ключ - 1477956085, открытый текст - 242336034. Надеюсь на вашу помощь. Заранее спасибо. #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <iostream> #include <stdlib.h>...
C++ a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b
даны произвольные числа a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b.
C++ Задача по сортировке массивов Используя метод сортировки выбором, переставить элементы так, чтобы непарные элементы оставались на своих местах, а парные стояли по возрастанию. https://www.cyberforum.ru/ cpp-beginners/ thread1008764.html C++ Дано натурально число. Определить количество цифр с наименьшим значением в цифровой записи данного числа Помогите сделать задание, пожалуйста!! Дано натурально число. Определить количество цифр с наименьшим значением в цифровой записи данного числа. https://www.cyberforum.ru/ cpp-beginners/ thread1008754.html
Функция sin.getline не вызывается во второй раз C++
Возникли проблемы с функцией sin.getline(). Имеется заголовочный файл: #ifndef GOLF #define GOLF const int Len = 40; struct golf { char fullname; int handicap; }; void setgolf (golf & g, const char * name, int hc);
C++ Сравнение тхт фаилов https://www.cyberforum.ru/ cpp-beginners/ thread1008735.html
type starray=array of string; var i:integer; m:char; a:starray; sl:text; {Алгоритм бинарного поиска} procedure b (s:starray); var
135 / 22 / 1
Регистрация: 19.10.2012
Сообщений: 42
15.11.2013, 21:00 0

Задача из Лафоре - C++ - Ответ 5341900

15.11.2013, 21:00. Показов 1287. Ответов 3
Метки (Все метки)

Ответ

делал я это упражнение изначально поняв что денежное значение должно быть в объекте класса string, но мне кажется что они понимают строку как массив char[].
Мой вариант для string, для char не делал.
Думаю, кто-то сделает попроще для string.
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <string>
#include <cmath>
#include <iomanip>
#include <sstream>
using namespace std;
class bMoney
{
   private:
      long double money;
      int kpt;          //колличество точек после запятой
   public:
      explicit bMoney()
       {money = 0.0; kpt = 0;}
      explicit bMoney(long double m, int k): money(m), kpt(k)
       {}
      bMoney operator+(bMoney m1) //метод для сложения 2-х объектов bMoney
           {
               bMoney temp;
               temp.money = money+m1.money;
               temp.kpt = (kpt>=m1.kpt)?kpt:m1.kpt;
               return temp;
           }
      void operator+(long double ld) 
           {
              cout<<"bad operation"<<endl;
           }     
      bMoney operator-(bMoney m1) //метод для вычитания 2-х объектов bMoney
           {
               bMoney temp;
               temp.money = money-m1.money;
               temp.kpt = (kpt>=m1.kpt)?kpt:m1.kpt;
               return temp;
           }
      bMoney operator*(long double ld) //метод для умножения объекта bMoney на величину типа long double
           {
               bMoney temp;
               temp.money = money*ld;
               temp.kpt = kpt;
               return temp;
           }
     void operator*(bMoney m1) 
           {
               cout<<"bad operation"<<endl;
           }
     long double operator/(bMoney bM) //метод для деления объекта bMoney на объект bMoney
           {
               return money/bM.money;
           }
     bMoney operator/(long double ld) //метод для деления объекта bMoney на величину типа long double
           {
               bMoney temp;
               temp.money = money/ld;
               temp.kpt = kpt;
               return temp;
           }
      void getmoney()//метод для ввода
        {
           string mstr;
           string sch;
           int j;
           int is;
           getline(cin,mstr);
           j=0;
           // Выделение символов цифр и символа точки
             for(int i=0;i<static_cast<int>(mstr.length());i++)
             {
                if((mstr[i]>='0') && (mstr[i]<='9') || mstr[i]=='.')
                 sch[j++]=mstr[i];
             }
            sch[j]='0';
            //Преобразование символов строки в число типа long double
            money = 0.0;
            is=0;
            for(int s=0; s < j; s++) //находим положение точки
              {
                if(sch[s]=='.')
                    is=s;
              }
 
              if (is!=0)
            {
              for(int n=0; n<j; n++)
               {
                 if(n>=is)
                    money+=static_cast<long double>(sch[n+1]-'0')*pow(10.0,is-1-n);
                 else
                    money+=static_cast<long double>(sch[n]-'0')*pow(10.0,is-1-n);
               }
            }
            else
            {
              is=j-1;
              for(int n=0; n<j; n++)
               {
                    money+=static_cast<long double>(sch[n]-'0')*pow(10.0,j-n-1);
               }
            }
              kpt= j-is-1;
        }
      void putmoney() const//метод для вывода 
        {
 
               string ustring;
               string outstring;   //строка на вывод
               stringstream ss;
               ss<<setiosflags(ios::fixed)         //преобразование long double в string
                 <<setiosflags(ios::showpoint)
                 <<setprecision(kpt)
                 <<money<<endl;
                 ustring=ss.str();
               int sz  = ustring.size();                  //размер строки суммы
               int dot = ustring.find(".");               //порядковый номер точки в строке
               int zp=3;                                  //колличество символов через которые ставится запятая
               outstring.insert(0,"$");                   //добавление символа '$' в начало выводимой строки
 
               outstring.insert(1,ustring,0,dot%zp);
               for(int i=0; i<(dot-dot%zp)/zp; i++)
               {
                if((dot%zp)==0)
                    {
                          outstring.insert(i*(1+zp)+1,  ustring,i*zp,zp);
                          if ((dot/zp-i)>1)
                          outstring.insert(i*(1+zp)+zp+1,",");
                    }
                else
                    {
                          outstring.insert(dot%zp+i*(1+zp)+1,",");
                          outstring.insert(dot%zp+i*(1+zp)+2,  ustring,dot%zp+i*zp,zp);
                    }
               }
               if(sz - dot== 2)
                  outstring.insert(outstring.size(),ustring,dot,sz-dot-2);
               else
                  outstring.insert(outstring.size(),ustring,dot,sz-dot-1);
               cout<<outstring<<endl;
        }
};
 
int main()
{
   bMoney mon1, mon2;
   bMoney mon;
   long double numb;
   long double outn;
 
   cout<<"1 (STRING): "; mon1.getmoney();
   cout<<"2 (STRING): "; mon2.getmoney();
   cout<<"(LONG DOUBLE): "; cin>>numb;
 
   mon = mon1 + mon2;   cout<<"s1 + s2 = ";     mon.putmoney();
   mon = mon1 - mon2;   cout<<"s1 - s2 = ";     mon.putmoney();
   mon = mon1 * numb;   cout<<"s1 * ld = ";     mon.putmoney();
   outn = mon1 / mon2;  cout<<"s1 / s2 = "<<outn<<endl;
   mon = mon1 / numb;   cout<<"s1 / ld = ";      mon.putmoney();
   cout<<"s1 * s2 = ";  mon1 * mon2;
   cout<<"s1 + ld = ";  mon1 + numb;
   return 0;
}


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

Задача из Лафоре
Для разъяснения действия наших доморощенных указателей мы смоделируем память компьютера с помощью...

Очередь (задача из Лафоре)
Задача 9 из Лафоре: Надо написать класс queue, имеющий два метода: put() для помещения элемента в...

Не компилируется задача из Лафоре
Помогите пожалуйста разбораться почему компилятор ругается: 1&gt;L.obj : error LNK2019: unresolved...

Лафоре. Глава 11. Задача 2
Решал задачку из учебника - Лафоре. Глава 11. Задача 2. Вот код #include &lt;iostream&gt; #include...

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

Лафоре задача по классам
Задача из книги лафоре по классам №7: нужно написать программу используя классы для ввода и вывода...

Лафоре,задача про денежный тип
Вот задачка: Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для...

Задача 7 главы 7 из книги Р. Лафоре. Строки
Добрый день! Недавно начал изучать С++ по, наверное, уже всем поднадоевшему, учебнику Роберта...

Правильное ли решение задачи? Лафоре. 3 глава 9 задача
Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за вашим столом могут...

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