Другие языки программирования и технологии

Помогите пожалуйста оптимизировать C++ код

#include
using namespace std;
int main()
{
setlocale(0,"");
int one, five, ten, twfive, fifty;
cout<<"Сколько у вас одноцентовых монет? ";
cin>>one;
if (one<0) {
cout<<"Введите правильное значение.";
return 0;
}
cout<<"А сколько пятицентовых? ";
cin>>five;
if (five<0) {
cout<<"Введите правильное значение.";
return 0;
}
cout<<"Скажете сколько десятицентовых? ";
cin>>ten;
if (ten<0) {
cout<<"Введите правильное значение.";
return 0;
}
cout<<"Хорошо, теперь 25-центовых: ";
cin>>twfive;
if (twfive<0) {
cout<<"Введите правильное значение.";
return 0;
}
cout<<"И напоследок, сколько же 50-центовых? ";
cin>>fifty;
if (fifty<0) {
cout<<"Введите правильное значение.";
return 0;
}
if (one==0){
cout<<"\n\nУ вас нет одноцентовых монет. \n";
} else if(one==1){
cout<<"\n\nУ вас одна одноцентовая монета. \n";
} else cout<<"\n\nУ вас "<<one<<" одноцентовых монет. \n";
if (five==0){
cout<<"У вас нет пятицентовых монет. \n";
} else if(five==1){
cout<<"У вас одна пятицентовая монета. \n";
} else cout<<"У вас "<<five<<" пятицентовых монет. \n";
if (ten==0){
cout<<"У вас нет десятицентовых монет. \n";
} else if(ten==1){
cout<<"У вас одна десятицентовая монета. \n";
} else cout<<"У вас "<<ten<<" десятицентовых монет. \n";
if (twfive==0){
cout<<"У вас нет 25-центовых монет. \n";
} else if(twfive==1){
cout<<"У вас одна 25-центовая монета. \n";
} else cout<<"У вас "<<twfive<<" 25-центовых монет. \n";
if (fifty==0){
cout<<"У вас нет 50-центовых монет. \n";
} else if(fifty==1){
cout<<"У вас одна 50-центовая монета. \n";
} else cout<<"У вас "<<fifty<<" 50-центовых монет. \n";
int global;
global=1*one+5*five+10*ten+25*twfive+50*fifty;
double glob=global;
double dollar;
dollar=glob/100;
cout<<"Общая стоимость ваших монет равна "<<global<<" центам, или "<<dollar<<" долларам";
return 0;
}
0
#include <iostream>
#include <string>
using namespace std;
class Coinbox {
public:
using coin_t = unsigned;
Coinbox(coin_t o, coin_t f, coin_t t, coin_t tf, coin_t ff)
: one_(o), five_(f), ten_(t), twenty_five_(tf), fifty_(ff) {}
string sum()const {
auto sum = one_ + five_ * 5 + ten_ * 10 + twenty_five_ * 25 + fifty_ * 50;
return to_string(sum / 100) + "." + to_string(sum % 100);
}
void total()const {
for (auto x = 0; x < 5; ++x) {
switch (x) {
case 0: show(x, one_); break;
case 1: show(x, five_); break;
case 2: show(x, ten_); break;
case 3: show(x, twenty_five_); break;
case 4: show(x, fifty_); break;
}
cout.put('\n');
}
cout << "Сумма наличными: " << sum() << '\n';
}
private:
coin_t one_, five_, ten_, twenty_five_, fifty_;
void show(int x, coin_t coin)const {
const char* coins[] = { " одно", " пяти", " десяти", " двадцатипяти", " пятидесяти" };
const char* tails[] = { "ых монет", "ая монета", "ые монеты" };
const char* cents = "центов";
cout << "У вас ";
if (!coin) cout << "нет" << coins[x] << cents << tails[0];
else if (coin % 100 < 20 && coin % 100 > 10) cout << coin << coins[x] << cents << tails[0];
else if (coin % 10 == 1) cout << coin << coins[x] << cents << tails[1];
else if (coin % 10 > 1 && coin % 10 < 5) cout << coin << coins[x] << cents << tails[2];
else cout << coin << coins[x] << cents << tails[0];
}
};
Coinbox::coin_t coin(const char* msg) {
int c = 0;
do {
cout << "Сколько у вас " << msg << "центовых монет?.. ";
cin >> c;
} while (c < 0);
return c;
}
int main() {
setlocale(LC_CTYPE, "Russian");
auto one = coin("одно");
auto five = coin("пяти");
auto ten = coin("десяти");
auto twenty_five = coin("двадцатипяти");
auto fifty = coin("пятидесяти");
Coinbox box(one, five, ten, twenty_five, fifty);
box.total();
system("pause");
}
Леночка Субботина
Леночка Субботина
96 476
Лучший ответ
Хз что ты собираешься оптимизировать в этой примитивной программе, но сократить код явно не помешает:

int coins[5];
string questions[5] = { "Сколько у вас одноцентовых монет?", "А сколько пятицентовых?",
"Скажете сколько десятицентовых?", "Хорошо, теперь 25-центовых:", "И напоследок, сколько же 50-центовых?" };
for (int i = 0; i < 5; i++) {
cout << questions[i] << endl;
do { cin >> coins[i]; if (coins[i] < 0) cout << "Введите правильное значение." << endl;
} while (coins[i] < 0);
}
string num[5] = { "одно", "пяти", "десяти", "25-", "50-" };
for (int i = 0; i < 5; i++) {
switch (coins[i]) {
case 0: cout << "У вас нет " << num[i] << "центовых монет." << endl; break;
case 1: cout << "У вас одна " << num[i] << "центовая монета." << endl; break;
default: cout << "У вас " << coins[i] << " " << num[i] << "центовых монет." << endl;
}
}
double global = coins[0] + 5 * coins[1] + 10 * coins[2] + 25 * coins[3] + 50 * coins[4];
cout << "Общая стоимость ваших монет равна " << global << " центам, или " << global / 100.0 << " долларам";
Комил Аслонов
Комил Аслонов
24 295
Саян Толеуханов а зачем double в результате? Деление ЦЕЛОЧИСЛЕННОЕ
Саян Толеуханов Ай вру! одноцентовые могут быть))))) прощения прошу
вы не могли бы хотя бы минимум комментариев написать? Рассказать, что делает ваша программа? Копаться в чужом коде удовольствие ниже среднего
Зухуриддин Кабиров Я понимаю что удовольствие ниже среднего. Дело в том что не я код писал и в программировании я мягко говоря чайник.
Вадим Сорин ладно, сейчас