Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
#1

Выполнил задачу. Укажите на недочеты - C++

09.11.2012, 16:41. Просмотров 915. Ответов 19
Метки нет (Все метки)

Здравствуйте уважаемые форумчане хотелось бы что-бы вы помогли найти недочеты или поизящнее решить программу(задачу можно увидеть во вложении):

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
#include "std_lib_facilities.h"
int main()
{
    setlocale( LC_ALL,"Russian" );
    int m1, m2, m3, m4, m5, m6;
    double summa;
    cout << "Введите количество 1-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m1;
    cout << "Введите количество 5-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m2;
    cout << "Введите количество 10-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m3;
    cout << "Введите количество 25-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m4;
    cout << "Введите количество 50-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m5;
    cout << "Введите количество доллоровых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m6;
    if(m1 == 1)
        cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
    else
        cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
    if(m2 == 1)
        cout << "У вас" << " " << m2 << " " << "пятицентовая монета\n";
    else
        cout << "У вас" << " " << m2 << " " << "пятицентовых монет\n";
    if(m3 == 1)
        cout << "У вас" << " " << m3 << " " << "десятицентовая монета\n";
    else
        cout << "У вас" << " " << m3 << " " << "десятицентовых монет\n";
    if(m4 == 1)
        cout << "У вас" << " " << m4 << " " << "25-центовая монета\n";
    else
        cout << "У вас" << " " << m4 << " " << "25-центовых монет\n";
    if(m5 == 1)
        cout << "У вас" << " " << m5 << " " << "50-центовая монета\n";
    else
        cout << "У вас" << " " << m5 << " " << "50-центовых монет\n";
    if(m5 == 1)
        cout << "У вас" << " " << m5 << " " << "доллар\n";
    else
        cout << "У вас" << " " << m6 << " " << "долларов\n";
    summa = m1 * 0.01 + m2 * 0.05 + m3 * 0.1 + m4 * 0.25 + m5 * 0.5 + m6;
    cout << "Общая стоимость монет равна" << " " << summa << " " << "доллара\n";
    system("pause");
    return 0;
}
Задачу можно поделить на несколько условий:
  • Предложить пользователю ввести определенное 1-,5-,10-,25-,50-центовых и долларовых монет.(сделал)
  • Пользователь должен по отдельности ввести количество монет каждого достоинства.(сделал)
  • Результат должен выглядеть следующим образом.(каким образом должен выглядеть результат можно увидеть во вложении)(сделал)
  • Попробуйте вывести числа, выровняв их по правому краю(какие числа я не понял но выровнял те которые вводит пользователь)
  • Усовершенствуйте программу: если у пользователя только одна монета, выведите ответ в грамматическим правильной форме. Например, "14 десятицентовых монет" и "1 одноцентовая монета"(а не "1 одноцентовых монет").(сделал но только с одной монетой как сказано в задаче)
  • Выведите результат в долларах и центах, т,е. 5,73 доллара, а не 573 цента.(сделал)

Напомню что 1 доллар == 0,01 центов
0
Миниатюры
Выполнил задачу. Укажите на недочеты  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2012, 16:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выполнил задачу. Укажите на недочеты (C++):

правильно ли я выполнил задание? - C++
меня терзают жудкие сомнения насчёт правильности выполнения Исходный код программы на С++ обычно содержит много пар круглых, ...

Компилятор не выполнил квинтиллион+ операций) - C++
Так уж получилось, что при написание программы пришлось использовать двадцатизначное число. И пересчитывать его. По единичке. Программа...

Исправить недочеты в программе (лаба №4) - C++
Вот прога работы с деком. Там есть меню с некоторыми операциями над деком. Она работает. Но есть кое-какие баги. Например, когда удаляешь...

Проверьте решение на ошибки и недочеты - C++
Сейчас просто без Студии сижу, а на завтра нужно сдать всё. Вот написал по примерам код. Суть задания: Описать структуру с именем...

Разработка двоичного калькулятора (небольшие недочеты) - C++
Добрый вечер форумчане! Прошу помощи в описании некоторой части кода. Исходное задание: Необходимо создать двоичный калькулятор,...

Открытие файла, найти недочеты в коде - C++
Добрый вечер. Не получается запустить одну программу, думаю проблемы с файлами. буду очень благодраен за любую помощь #include...

19
BumerangSP
09.11.2012, 16:50
  #2

Не по теме:

Цитата Сообщение от ProProger Посмотреть сообщение
Напомню что 1 доллар == 0,01 центов
? Я всегда думал, что 1 цент = 0.01 доллара.

1
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
09.11.2012, 16:57  [ТС] #3
Цитата Сообщение от BumerangSP Посмотреть сообщение

Не по теме:


? Я всегда думал, что 1 цент = 0.01 доллара.

ой да точно(спасибо) 1 цент США = 0.01 доллара США
Так че насчет задачи скажите правильно все да?
Как поизящнее решить не подскажите?
0
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
09.11.2012, 17:06 #4
Здравствуйте. По моему было бы не плохо ввести структуру switch. Ещё один вариант задать ету програму через функции то есть чтобы каждый оператор вызывал отдельную функцию и она обрабатывала какое либо действие, ну и еще если хотите можно попробовать ету програму сделать через класы. Вооще по моему ету прогу можна очень сильно модифицыроваь.
Если нужна помощь спрашывайте.
1
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
09.11.2012, 17:08  [ТС] #5
Цитата Сообщение от Джек Посмотреть сообщение
Здравствуйте. По моему было бы не плохо ввести структуру switch. Ещё один вариант задать ету програму через функции то есть чтобы каждый оператор вызывал отдельную функцию и она обрабатывала какое либо действие, ну и еще если хотите можно попробовать ету програму сделать через класы. вооще по моему ету прогу можна очень сильно модифицыроваь.
Если нужна помощь спрашывайте.
Ну я пока до классов не дошел так что потом попробую
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,212
09.11.2012, 17:13 #6
Цитата Сообщение от ProProger Посмотреть сообщение
if(m1 == 1)
cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
else
cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
вот здесь он напишет у вас 21(31 41) одноцентовых монет
у вас 2(3 4 ) одноцентовых монет
поищи на форуме задача про правильное написание недавно решалась
надо что то типа

C++
1
2
3
4
5
6
7
8
if(10<=m && m<=20)
  cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
  else if(m%10==1)
        cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
    else if(1< m%10 && m%10 <5)
               cout << "У вас" << " " << m1 << " " << "одноцентовые монеты\n";
            else
              cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
Добавлено через 1 минуту
Цитата Сообщение от Джек Посмотреть сообщение
По моему было бы не плохо ввести структуру switch.
стесняюсь спросить что это за структура такая?
1
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
09.11.2012, 17:16  [ТС] #7
Цитата Сообщение от ValeryS Посмотреть сообщение
вот здесь он напишет у вас 21(31 41) одноцентовых монет
у вас 2(3 4 ) одноцентовых монет
поищи на форуме задача про правильное написание недавно решалась
надо что то типа

C++
1
2
3
4
5
6
7
8
if(10<=m && m<=20)
  cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
  else if(m%10==1)
        cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
    else if(1< m%10 && m%10 <5)
               cout << "У вас" << " " << m1 << " " << "одноцентовые монеты\n";
            else
              cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
Добавлено через 1 минуту

стесняюсь спросить что это за структура такая?
Спасибо
0
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
09.11.2012, 17:28 #8
По сути ето структура (елемент) который просто заменяет кучу if и else. Лично я щитаю что если много if и else можно запутаться. Если нужен пример то предоставлю.
1
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,212
09.11.2012, 17:34 #9
Цитата Сообщение от Джек Посмотреть сообщение
По сути ето структура (елемент)
если ты считаешь что вот это
C++
1
2
3
4
switch()
 {
 case:
...................
структура то я дико извиняюсь
Цитата Сообщение от Джек Посмотреть сообщение
Если нужен пример то предоставлю.
напиши пожалуйста более читаемый свитч(хотя бы для центов) если учесть что в C(++) не поддерживаются диапазоны
1
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
09.11.2012, 17:39 #10
Могу предложить такой вариант:
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
#include <iostream>
using namespace std;
int main()
{
setlocale( LC_ALL,"Russian" );
int m[6];
double advmulti[6]={0.01,0.05,0.1,0.25,0.5,1};
char *pStr[6]={"одноцентов","пятицентов","десятицентов","25-центов","50-центов","доллар"};
double summa=0;
for(int i=0;i<6;i++){
    if(i==5)
        cout<<"Введите количество доллоровых монет\n\t\t\t\t\t\t\t\t\t";
    else
        cout << "Введите количество "<<advmulti[i]*100<<"-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m[i];
}
 
for(int i=0;i<6;i++){
    if (i==5){
        cout << "У вас" << " " << m[i] << " " <<pStr[i]<<((m[i]==1)?"":(m[i]>1 && m[i]<5)?"а":"ов\n");
    }
    else{
        cout << "У вас" << " " << m[i] << " " <<pStr[i]<<((m[i]==1)?"ая":(m[i]>1 && m[i]<5)?"ые":"ых");
        cout<<" монет"<<((m[i]==1)?"а":(m[i]>1 && m[i]<5)?"ы":"")<<"\n";
    }
}
    for(int i=0;i<6;i++)
        summa+=m[i]*advmulti[i];
    cout << "\nОбщая стоимость монет равна" << " " << summa << " " << "доллара\n";
    system("pause");
    return 0;
}
Скриншот со старого варианта, там с 0 баг =)
Выполнил задачу. Укажите на недочеты
1
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
09.11.2012, 18:10 #11
ValeryS Пока придумал так:

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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{  setlocale( LC_ALL,"Russian" );
    int m1, m2, m3, m4, m5, m6;
    double summa;
    cout << "Введите количество 1-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m1;
    cout << "Введите количество 5-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m2;
    cout << "Введите количество 10-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m3;
    cout << "Введите количество 25-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m4;
    cout << "Введите количество 50-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m5;
    cout << "Введите количество доллоровых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m6;
    switch(m1 )
    {case 1:
    //if
    cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
     break;
     
 
 
    }  //else
     cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
    switch(m2)
    {//if
    case 1:
    cout << "У вас" << " " << m2 << " " << "пятицентовая монета\n";
    break;
    
 
    }  //else
    cout << "У вас" << " " << m2 << " " << "пятицентовых монет\n";
    switch (m3)
    {case 1:
    cout << "У вас" << " " << m3 << " " << "десятицентовая монета\n";
    break;
    
 
    }   //else
    cout << "У вас" << " " << m3 << " " << "десятицентовых монет\n";
    switch(m4)
    {//if
    case 1:
    cout << "У вас" << " " << m4 << " " << "25-центовая монета\n";
    break;
    
 
 
    } //else
     cout << "У вас" << " " << m4 << " " << "25-центовых монет\n";
     switch(m5)
     {//if
       case 1:
     cout << "У вас" << " " << m5 << " " << "50-центовая монета\n";
     break;
 
     }
     //else
      cout << "У вас" << " " << m5 << " " << "50-центовых монет\n";
      cout << "У вас" << " " << m6 << " " << "долларов\n";
    summa = m1 * 0.01 + m2 * 0.05 + m3 * 0.1 + m4 * 0.25 + m5 * 0.5 + m6;
    cout << "Общая стоимость монет равна" << " " << summa << " " << "доллара\n";
    system("pause");
     getch();
    return 0;
 
 
}
//---------------------------------------------------------------------------
(взял первый код просто вставил свитчи)
Пока я так решил
По моему пример удался.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,212
09.11.2012, 18:18 #12
Цитата Сообщение от Джек Посмотреть сообщение
По моему пример удался.
ага если учесть что
Цитата Сообщение от Джек Посмотреть сообщение
C++
1
2
3
4
5
6
7
switch(m1 )
 {case 1:
 //if
 cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
 break;
} //else
 cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
при одной монете он напишет
"У вас 1 одноцентовая монета"
и в следующей строчке
"У вас 1 одноцентовых монет"
тогда уж так
C++
1
2
3
4
5
6
7
8
9
switch(m1 )
 {
case 1:
 cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
 break;
 default:
  cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
 break;
}
но это не снимает вопрос 21 31 41.....
2 3 4 (22 23 24)
не может он написать
"У вас 2 одноцентовые монеты"


PS
пользуйся тегами выделения кода
0
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
09.11.2012, 18:37 #13
ValeryS вот представляю вам код с свитчами пока придумал ето. Интересует ваше мнение.
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
void main()
{
 
    int m1, m2, m3, m4, m5, m6;
    double summa;
    cout << "Введите количество 1-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m1;
    cout << "Введите количество 5-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m2;
    cout << "Введите количество 10-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m3;
    cout << "Введите количество 25-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m4;
    cout << "Введите количество 50-центовых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m5;
    cout << "Введите количество доллоровых монет\n\t\t\t\t\t\t\t\t\t";
    cin >> m6;
    switch(m1)
    {case 1:
    cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
    break;
 
    }
      cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
    switch(m2)
   { case 1:
        cout << "У вас" << " " << m2 << " " << "пятицентовая монета\n";
    }
        cout << "У вас" << " " << m2 << " " << "пятицентовых монет\n";
    switch (m3)
    {case 1:
        cout << "У вас" << " " << m3 << " " << "десятицентовая монета\n";
    }
        cout << "У вас" << " " << m3 << " " << "десятицентовых монет\n";
    switch(m4)
    {case 1:
        cout << "У вас" << " " << m4 << " " << "25-центовая монета\n";
    }
        cout << "У вас" << " " << m4 << " " << "25-центовых монет\n";
    switch(m5)
    {
    case 1:
        cout << "У вас" << " " << m5 << " " << "50-центовая монета\n";
        cout << "У вас" << " " << m5 << " " << "доллар\n";
 
    }
        cout << "У вас" << " " << m5 << " " << "50-центовых монет\n";
        cout << "У вас" << " " << m6 << " " << "долларов\n";
 
    summa = m1 * 0.01 + m2 * 0.05 + m3 * 0.1 + m4 * 0.25 + m5 * 0.5 + m6;
    cout << "Общая стоимость монет равна" << " " << summa << " " << "доллара\n";
                getch();
 
}
0
kertio
26 / 26 / 1
Регистрация: 20.09.2011
Сообщений: 68
09.11.2012, 18:39 #14
я где-то буквально позавчера писал функцию обработки окончаний. А по твоему заданию вот кусок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main()
{
    const int SIZE = 5;
    int coinssum[5] = { 0 };
    const char *coins[SIZE] = {
            "1-центовых монет\0",
            "5-центовых монет\0",
            "10-центовых монет\0",
            "25-центовых монет\0",
            "50-центовых монет\0"
            };
 
    for(int i = 0; i < SIZE; i++) {
        std::cout << "Введите количество " << coins[i] << ": ";
        std::cin >> coinssum[i];
    }
 
    for (int i = 0; i < SIZE; i++) {
        std::cout << "У вас " << coinssum[i] << " " << coins[i] << std::endl;
    }
}
остальное подправишь. сумму не сложно подсчитать. Найдешь ту функцию, про которую я говорил и задание готово.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,212
09.11.2012, 18:43 #15
та же ошибка
Цитата Сообщение от Джек Посмотреть сообщение
C++
1
2
3
4
5
6
switch(m1)
 {case 1:
 cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
 break;
}
 cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
вот это
C++
1
cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
выполнится всегда
я же тебе показал как правильно
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
switch(m1 )
 {
case 1:
 cout << "У вас" << " " << m1 << " " << "одноцентовая монета\n";
 break;
 default:
 cout << "У вас" << " " << m1 << " " << "одноцентовых монет\n";
 break;
}
при m1==1
выполнится ветка case 1:
во всех остальных случаях
ветка default:
0
09.11.2012, 18:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2012, 18:43
Привет! Вот еще темы с ответами:

Разность множеств: найти недочеты в коде - C++
Помогите разобраться с ошибкой в коде. Требуется сделать разность двух множеств: множество1 - множество2. Придумала два алгоритма,но не...

Конструктор копирования, найти недочеты в программном коде - C++
Здравствуйте, посмотрите пожалуйста, тут у меня конструктор копирования. Я нашел какой-то пример, попробовал все переделать под свою...

Замена слов в цикле. Найти недочеты в коде - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; using namespace std; int main(){ char temp; cout &lt;&lt; &quot;vvedite...

Программа из учебника Прата. Структуры в многофайловом приложении. Исправить недочеты в коде - C++
Посмотрите, пожалуйста, что где исправить. int fill()-для заполнения массива all-для вывода суммы продаж за 4 квартала первый: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru