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

Как данную программу реализовать при помощи классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти номер максимального элемента массива http://www.cyberforum.ru/cpp-beginners/thread578972.html
Помогите с программами 1. Найти номер максимального элемента массива. 2. Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами. 3. для заданной матрице размера 8 на 8 найти такие k, что к-я строка матрице совпадает с к-м столбцом. 4. Напишите программу которая считывает текст из файла и определяет сколько в этом слове. состоявших из не более чем 4-х...
C++ Написать функцию, которая возвращает максимальный элемент одномерного массива Написать функцию, которая возвращает максимальный элемент одномерного массива http://www.cyberforum.ru/cpp-beginners/thread578964.html
C++ структуры содержащие члены-данные и члены- функции
Помогите пожалуйста!!!:cry: На основе данного входного файла составить список сотрудников учреждения, включив следующие данные: ФИО, год принятия на работу, должность, зарплата, рабочий стаж. Вывести в новый файл список сотрудников учреждения, удалив из него информацию о сотрудниках, принятых на работу в текущем году.
Структуры C++
Помогите решить задачу (решить задачу, используя структуру point для хранения координат точки: (множество точек задано на плоскости) Найти такую точку, что окружность радиуса R с центром в этой точке содержит минимальное число точек заданного множества.
C++ Работа с текстовыми файлами: http://www.cyberforum.ru/cpp-beginners/thread578952.html
Помогите пожалуйста решить задачу Дан текстовый файл. Напечатать все нечётные строки.
C++ Заменить все минимальные элементы противоположными по значению Помогите пожалуйста!!! для работы с двумерными массивами арифметических типов данных разработать шаблоны ввода и вывода массива, а также шаблон для решения основной задачи: Заменить все минимальные элементы противоположными по значению. подробнее

Показать сообщение отдельно
feniks-igor@mai
Сообщений: n/a
18.05.2012, 19:33     Как данную программу реализовать при помощи классов
как данную программу реализовать при помощи классов
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
~cpp
 
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <iostream.h>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
// класс для вывода кириллицы в консоль
class Rus 
{
public:
Rus(const char* msg): data(new char [lstrlen(msg)+1]) {CharToOemA(msg, data);}
~Rus() {delete [] data;};
operator const char* () const {return data;}
private:
    char* data;
};
int DigitsCount(double num, int* out)
{
 if (num == 0.0f) return 0;
 *out = (int)((num * 100) + 0.5);
return 2;
}
int DigitsCount(long num)
{
 int count = 0;
 while (num)
 {
 num /= 10;
 ++count;
 }
 return count;
}
void IntToWords(long num, int cnt, char* result)
{
  //массив, для определения разряда, в котором находимся(сотни,десятки,еденицы...)   
 int osn[11]={0,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
 
  //массив оснований
    char *basis[11][10]={
{"","","","","","","","","",""},{"","один","два","три","четыре","пять","шесть","семь","восемь","девять"},{"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто"},{"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот"},{"","одна","две","три","четыре","пять","шесть","семь","восемь","девять"},{"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто"},{"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот"},{"","один","два","три","четыре","пять","шесть","семь","восемь","девять"},{"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто"},    {"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот"},  {"","один","два","три ","четыре","пять","шесть","семь","восемь","девять"}}; 
    
//массив окончаний
char *termination[10][10]={
 {"","","","тысяч","","","миллионов","","","миллиардов"}, {"","","","тысяча","","","миллион","","","миллиард"},
 {"","","","тысячи","","","миллиона","","","миллиарда"}, {"","","","тысячи","","","миллиона","","","миллиарда"},
 {"","","","тысячи","","","миллиона","","","миллиарда"}, {"","","","тысяч","","","миллионов","","","миллиардов"},
 {"","","","тысяч","","","миллионов","","","миллиардов"}, {"","","","тысяч","","","миллионов","","","миллиардов"},
 {"","","","тысяч","","","миллионов","","","миллиардов"}, {"","","","тысяч","","","миллионов","","","миллиардов"}};
 
char *dec[10]={"десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать",  "шестнадцать","семнадцать","восемнадцать","девятнадцать"};
 
 int celoe;
 
 while (num > 0)
 {
 // обрабатываем числа 10-19
 if ((cnt % 3) == 2 && ((num/osn[cnt]) == 1))
 {
 // отсекаем цифру 1, т.к. определили ее предыдущим условием
 num %= osn[cnt];
 --cnt;
 // число в текущем разряде (т.е. после 1)
 celoe = num/osn[cnt];
 // оставшееся число
 num %= osn[cnt];
 --cnt;
 // пополнение результата строковым представлением числа 10-19
 strcat(result, dec[celoe]);
 // пополнение результата классом чисел (тысячи, миллионы, ...)
 strcat(result, termination[0][cnt]);
 if (strcmp(termination[0][cnt], "") != 0)
 strcat(result, " ");
  }
  // иначе обрабатываем единицы или сотни
 else
 {
 // отсекаем следующую цифру
 celoe = num / osn[cnt];
 num %= osn[cnt];
 // пополняем результат строковым выражением этой цифры в зависимости от ее разряда
 strcat(result, basis[cnt][celoe]);
 --cnt;
 strcat(result, " ");
 // если осталось целое количество классов чисел, то...
 if ((cnt % 3) == 0)
 {
 // пополняем результат классом чисел (тысячи, миллионы, ...)
 strcat(result, termination[celoe][cnt]);
 if (strcmp(termination[celoe][cnt], "") != 0)
strcat(result, " ");
}
}
}
}
 
char *towords(double numb)
{
    char *dollars[10]={"долларов","доллар","доллара","доллара","доллара","долларов","долларов",  "долларов","долларов", "долларов"};
 
 char *cents[10]={"центов","цент","цента","цента","цента","центов","центов","центов","центов","центов"};
 
 // выделение целой и дробной части
 long    n1 = numb;
 double  n2 = numb - n1;
 
    // подсчет количества цифр...
    int     cntDollars = DigitsCount(n1);
    int     lastDigitDollar = n1 % 10;
 
    // ... и преобразование дробной части к целому числу центов
    int     cent;
    int     cntCents = DigitsCount(n2, &cent);
    int     lastDigitCent = cent % 10;
 
    if (cntDollars == 0 && cntCents == 0) return "ноль долларов ноль центов";
 
    char    result[512] = "";
    bool    dollarsExist = false;
 
    // конвертируем доллары (n1)
    if (cntDollars > 0)
    {
    dollarsExist = true;
 
    IntToWords(n1, cntDollars, result);
    strcat(result, dollars[lastDigitDollar]);
    }
 
    // конвертируем центы (n2)
    if (cntCents > 0)
    {
    if (dollarsExist)
    strcat(result, " ");
 
    IntToWords(cent, cntCents, result);
    strcat(result, cents[lastDigitCent]);
    }
 
    return result;
    }
 
    int main(int argc, char* argv[])
    {             
    char    str[100];
    char    ch;
    double  inputNumber;
 
    do
    {
    cout << Rus("Введите число") << endl;
    cin.getline(str, 128);
 
    inputNumber = atof(str);
 
    if (inputNumber < 0)
    cout << Rus("Вы ввели отрицательное число") << endl;
    else if (inputNumber > std::numeric_limits<long>::max())
    cout << Rus("Вы ввели число более максимального предела - ") << std::numeric_limits<long>::max() << endl;
    else
     {
    cout << Rus("Вы ввели: ") << Rus(towords(inputNumber)) << endl;
     }
 
     cout << Rus("Хотите продолжить? (Y = да)") << endl;
     ch = cin.get();
     cin.get();
     }
     while ((ch == 'y') || (ch == 'Y'));
 
    return 0;
    }
   /
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru