С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 11.03.2018
Сообщений: 115

Оптимизация программы

08.10.2020, 10:35. Показов 333. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!Нужно написать программу,которая считает количество очков в боулинге.Программу я с горем пополам написал,хотя она легкая,но проблема в том,что она слишком долго выполняется(нужно 1сек,а у меня 2.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
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
#include <iostream>
using namespace std;
 
int main()
{
    int throws; // переменная,в которой будет храниться количество бросков
    int i;
    int sum = 0;// cумма очков
 
    cout << "Enter the number of throws: > ";
 
    while (!(cin >> throws) || (cin.peek() != '\n') || (throws < 1)) //цикл,отвечающий за проверку вводимых типов
 
    { 
        //cin.peek проверяет,закончен ли ввод символов
        cin.clear();//удаляем флаг ошибки,чтобы в дальнейшем можно было еще раз ввести количество бросков
 
        while (cin.get() != '\n');//заставляет систему ждать от пользователя ввода символа
        cout << "Error!\n" << "Enter number > ";
 
    }
 
    int* p_score = new int[throws];
 
 
    for (i = 0; i < throws; i++)
    {
        cout << "Enter o4ki v broske pod nomerom " << "[" << i+1 << "]" << " > ";
        while (!(cin >> p_score[i]) || (cin.peek() != '\n') || (p_score[i] < 0) || (p_score[i] > 10)) //цикл,отвечающий за проверку вводимых типов 
 
        { //cin.peek проверяет,закончен ли ввод символов
            cin.clear();//удаляем флаг ошибки,чтобы в дальнейшем можно было еще раз ввести количество сбитых кегль
 
            while (cin.get() != '\n');//заставляет систему ждать от пользователя ввода символа
            cout << "Error!\n" << "Enter number > ";
 
        }
    }
 
    // цикл ниже должен считать сумму очков после всех проведенных бросков
    //правила подсчета очков:
    //Strike: игрок сбивает 10 кеглей первым броском, очки в этом туре начисляются из расчета – 10 + сумма очков за два последующих броска.
    //Spare: игрок сбивает 10 кеглей двумя бросками, очки в этом туре начисляются из расчета – 10 + сумма очков за один последующий бросок.
    for (i = 0; i < throws; i++)
    {
            
                if (p_score[i] == 10)
                {
                    if ((((i + 1) < throws) && ((i + 2) < throws)) && (sum < 300))
                    {
                        sum = p_score[i] + p_score[i + 1] + p_score[i + 2] + sum;
                        cout << "\n" << sum << " " << i + 1 << endl;//сделано для сампопроверки
                    }
                    else if ((i == (throws - 2)) && (sum < 300))
                    {
                        sum = sum + p_score[i] + p_score[i + 1];
                        cout << "\n" << sum << " " << i + 1 << endl;//сделано для сампопроверки
                    }
                    else if ((i == (throws - 1)) && (sum < 300))
                    {
                        sum = sum + p_score[i];
                        cout << "\n" << sum << " " << i + 1 << endl;//сделано для сампопроверки
                    }
 
                }
 
                else if ((p_score[i] + p_score[i + 1] == 10) && (sum < 300))
                {
                    if (((i + 2) < throws) && (sum < 300))
                    {
                        if (p_score[i] != (p_score[i + 2]))
                        {
                            sum = sum + p_score[i] + p_score[i + 2];
                            cout << "\n" << sum << " " << i + 1 << endl;//сделано для сампопроверки
                        }
                        else
                        {
                            sum = sum + p_score[i];
                            cout << "\n" << sum << " " << i + 1 << endl;//сделано для сампопроверки
                        }
                    }
                    else if (sum < 300)
                    {
                        sum = sum + p_score[i];
                        cout << "\n" << sum << " " << i + 1 << endl;//сделано для сампопроверки
                    }
                }
                else if (((p_score[i] + p_score[i + 1]) != 10) && (p_score[i] != 10) && (sum < 300))
                { 
                        sum = sum + p_score[i];
                        cout << "\n" << sum << " " << i + 1 << endl;//сделано для сампопроверки
                }
            
    }
    
    delete p_score;
    
        cout << "\n" << sum;
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2020, 10:35
Ответы с готовыми решениями:

Оптимизация программы
Здравствуйте, есть программа, выводит матрицу и её элементы: #include&lt;stdio.h&gt; #include&lt;stdafx.h&gt; ...

Оптимизация программы
Как ещё можно оптимизировать нижеприведенный код? По условию задачи он выполняется дооолго. Собственно вот задача: В секретной...

Оптимизация программы на С++
Помогите оптимизировать программу на С++, я не представляю, что в ней можно изменить. Хотя бы намек на функцию, в которой нужна...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2020, 10:35
Помогаю со студенческими работами здесь

Оптимизация программы
Помогите оптимизировать программу, не могу сам. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() ...

Оптимизация программы
Условие : Даны две действительные квадратные матрицы порядка n. Получить новую матрицу прибавлением к элементам каждого столбца первой...

Оптимизация программы
Нужно, чтобы программа случайным образом придумывала число от 1 до 32767 и печатала его цифры через 2 пробела. (Например, 4236 печатает 4 ...

Оптимизация программы
#include&lt;std_lib_facilities.h&gt; #include&lt;conio.h&gt; void moveHorse(int &amp;, int , int , int, int &amp;, int &amp;, int &amp;);//переставляет коня ...

Оптимизация программы
Ув. обыватели, Вчера написал &quot;Калькулятор&quot;, но так как я ещё зеленый в программировании на С++, прошу вас показать как и где можно...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru