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

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

Войти
Регистрация
Восстановить пароль
 
KostyaKulakov
Заблокирован
#1

Написание программы расчета процента побед - C++

29.08.2012, 14:27. Просмотров 786. Ответов 7
Метки нет (Все метки)

Не по теме:

округление не правильное

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2012, 14:27     Написание программы расчета процента побед
Посмотрите здесь:

C++ Написание программы по массивам
Написание программы для работы с вэб-камерой. C++
C++ Написание программы под заказ с неразглашением ее кода
Написать две программы на языке С/С++ для расчета значений переменных y и z по заданным формулам C++
С++ Программа ,Функции , Варианты написание программы C++
C++ Ошибка при написание программы работы с файлами
С чего начать написание программы для 3D моделирования C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
29.08.2012, 16:01     Написание программы расчета процента побед #2
Вобщем решил написать программу, которая запрашивает кол-во боев, % побед в них и желаемый % побед. Нужно чтоб программа выдала сколько победных боев нужно для достижения результата. Написал код, но почему-то он зацикливается. Подскажите в чем может быть ошибка.
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
#include "stdafx.h"
#include "math.h"
#include "iostream"
#include "iomanip"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{int d,f=0;
 double a,b,c,e;
 
cout<<"vved a:";
cin>>a;
cout<<"vved b:";
cin>>b;
cout<<"vved d:";
cin>>d;
 
 
c=b*100/a;
cout<<fixed<<setprecision(0)<<c<<endl;
 
for (;;)
{a++;
b++;
f++;
e=b*100/a;
cout<<fixed<<setprecision(0)<<e<<endl;
 
if(e==d) break;
}
cout<<"kol-vo boev: "<<f<<"\n";
    return 0;
}
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
29.08.2012, 16:25     Написание программы расчета процента побед #3
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
#include <iostream>
#include <iomanip>
 
using std::cout;
using std::cin;
 
int main()
{
    int battleNum = 0;
    double currentPercent = 0;
    double targetPercent = 0;
    cout<<"Enter number of battles played: ";
    cin>>battleNum;
    cout<<"Enter current percent of wins: ";
    cin>>currentPercent;
    cout<<"Enter desired percent of wins: ";
    cin>>targetPercent;
    int initialWinNum = battleNum * currentPercent / 100.;
    int neededWinNum = 0;
    while (currentPercent < targetPercent)
    {
        ++neededWinNum;
        currentPercent = 
            (static_cast<double>((initialWinNum + neededWinNum)) / static_cast<double>((battleNum + neededWinNum))) * 100.;
    }
    cout<<"You need to win "<<neededWinNum
        <<" more battles to reach desired percent of wins\n";
    cout<<"After winning "<<neededWinNum
        <<" more battles your percent of wins will be "
        <<std::setprecision(2)<<currentPercent<<"%\n";
    system("pause");
    return 0;
}
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
29.08.2012, 16:38     Написание программы расчета процента побед #4
Цитата Сообщение от Andsteadur Посмотреть сообщение
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
#include <iostream>
#include <iomanip>
 
using std::cout;
using std::cin;
 
int main()
{
    int battleNum = 0;
    double currentPercent = 0;
    double targetPercent = 0;
    cout<<"Enter number of battles played: ";
    cin>>battleNum;
    cout<<"Enter current percent of wins: ";
    cin>>currentPercent;
    cout<<"Enter desired percent of wins: ";
    cin>>targetPercent;
    int initialWinNum = battleNum * currentPercent / 100.;
    int neededWinNum = 0;
    while (currentPercent < targetPercent)
    {
        ++neededWinNum;
        currentPercent = 
            (static_cast<double>((initialWinNum + neededWinNum)) / static_cast<double>((battleNum + neededWinNum))) * 100.;
    }
    cout<<"You need to win "<<neededWinNum
        <<" more battles to reach desired percent of wins\n";
    cout<<"After winning "<<neededWinNum
        <<" more battles your percent of wins will be "
        <<std::setprecision(2)<<currentPercent<<"%\n";
    system("pause");
    return 0;
}
неправильно выдает ответ
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
29.08.2012, 16:45     Написание программы расчета процента побед #5
Всмысле неправильно? какие входные данные и какой результат? Я тестировал и все было нормально.

И да лучше без цикла:
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
#include <iostream>
#include <iomanip>
#include <cmath>
 
using std::cout;
using std::cin;
 
int main()
{
    int battleNum = 0;
    double currentPercent = 0;
    double targetPercent = 0;
    cout<<"Enter number of battles played: ";
    cin>>battleNum;
    cout<<"Enter current percent of wins: ";
    cin>>currentPercent;
    cout<<"Enter desired percent of wins: ";
    cin>>targetPercent;
    int initialWinNum = battleNum * currentPercent / 100.;
    int neededWinNum = ceil((static_cast<double>(battleNum) * (targetPercent / 100.) - static_cast<double>(initialWinNum)) / (1. - targetPercent / 100.));
    cout<<"You need to win "<<neededWinNum
        <<" more battles to reach desired percent of wins\n";
    currentPercent = 
        (static_cast<double>((initialWinNum + neededWinNum)) / static_cast<double>((battleNum + neededWinNum))) * 100.;
    cout<<"After winning "<<neededWinNum
        <<" more battles your percent of wins will be "
        <<std::fixed<<std::setprecision(2)<<currentPercent<<"%\n";
    system("pause");
    return 0;
}
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
29.08.2012, 17:02     Написание программы расчета процента побед #6
Цитата Сообщение от Andsteadur Посмотреть сообщение
Всмысле неправильно? какие входные данные и какой результат? Я тестировал и все было нормально.

И да лучше без цикла:
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
#include <iostream>
#include <iomanip>
#include <cmath>
 
using std::cout;
using std::cin;
 
int main()
{
    int battleNum = 0;
    double currentPercent = 0;
    double targetPercent = 0;
    cout<<"Enter number of battles played: ";
    cin>>battleNum;
    cout<<"Enter current percent of wins: ";
    cin>>currentPercent;
    cout<<"Enter desired percent of wins: ";
    cin>>targetPercent;
    int initialWinNum = battleNum * currentPercent / 100.;
    int neededWinNum = ceil((static_cast<double>(battleNum) * (targetPercent / 100.) - static_cast<double>(initialWinNum)) / (1. - targetPercent / 100.));
    cout<<"You need to win "<<neededWinNum
        <<" more battles to reach desired percent of wins\n";
    currentPercent = 
        (static_cast<double>((initialWinNum + neededWinNum)) / static_cast<double>((battleNum + neededWinNum))) * 100.;
    cout<<"After winning "<<neededWinNum
        <<" more battles your percent of wins will be "
        <<std::fixed<<std::setprecision(2)<<currentPercent<<"%\n";
    system("pause");
    return 0;
}
вот скрин,ответ должен быть 1 бой
ты просто не использовал округление,ведь 50,5 это уже округляется до 51
Миниатюры
Написание программы расчета процента побед  
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
29.08.2012, 17:20     Написание программы расчета процента побед #7
Следовало указать в задании точность процентов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 21:54     Написание программы расчета процента побед
Еще ссылки по теме:

Написание программы вычисления функции. Ошибка C++
Разработка программы для расчета футбольных матчей C++
Написание программы реверса строки C++
Написание программы для перевода из pdf в txt C++
C++ Написание программы теста

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

Или воспользуйтесь поиском по форуму:
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
29.08.2012, 21:54     Написание программы расчета процента побед #8
Цитата Сообщение от Andsteadur Посмотреть сообщение
Следовало указать в задании точность процентов.
2 знака после запятой
Yandex
Объявления
29.08.2012, 21:54     Написание программы расчета процента побед
Ответ Создать тему
Опции темы

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