0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 18

Оптимизировать и минимализировать код

24.11.2014, 17:31. Показов 1237. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Cделал легкую прогу. Понимаю логики 0 в коде. Можете помочь оптимизировать код? А заодно и сделать код более минималистичным.
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int a;
    int z = 33;
    int x = 0;
    cout << "Угадай число" << endl;
    while(x == 0) {
        cin >> a;
 
        if (a > z)
            cout << "Много" << endl;
 
        else if (a < z)
            cout << "Мало" << endl;
 
        else {
            cout << "Ты выиграл" << endl;
            x = 1;
    }
}
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2014, 17:31
Ответы с готовыми решениями:

Оптимизировать код
Первое число входного потока - количество чисел Дальше идут те самые числа Надо найти кол-во пар чисел, для которых выполняется nums...

Оптимизировать код
Для решения задачи : &quot;Note: Write a solution that only iterates over the string once and uses O(1) additional memory, since this is what...

Оптимизировать код
Доброго времени суток, как можно оптимизировать код что бы он быстрее работал ? Дана последовательность из n чисел a1, a2,..., an. C...

13
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
24.11.2014, 17:39
Цитата Сообщение от justgamermax Посмотреть сообщение
оптимизировать
Цитата Сообщение от justgamermax Посмотреть сообщение
минималистичным
Зачем?
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 18
24.11.2014, 17:49  [ТС]
Препод сказал. А сам я не вижу как это оптимизировать и сделать минималистичным.

Добавлено через 6 минут
Никто не поможет?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.11.2014, 18:00
C++
1
2
#include <iostream>
using namespace std;int main(){int a=0;int z=33;cout<<"Enter val:";while(a!=z){cin>>a;cout<<(a>z?"Less\n":a<z?"Greater\n":"You win\n");}}
0
Заблокирован
24.11.2014, 18:04
justgamermax,
C++
    int a;
    int z = 33;
    int x = 0;
Можно записать одной строкой:
C++
    int a, z = 33, x = 0;
Добавлено через 3 минуты
justgamermax, еще можете убрать строку:
C++
using namespace std;
Но тогда вам нужно писать std:: перед cout и endl
C++
std::cout << "Угадай число" << std::endl;
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.11.2014, 18:07
Цитата Сообщение от maritux Посмотреть сообщение
Можно записать одной строкой:
Точно!
C++
1
2
#include <iostream>
int main(){int a=0,z=33;printf("Enter val:");while(a!=z){std::cin>>a;printf(a>z?"Less\n":a<z?"Greater\n":"You win\n");}}
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 18
24.11.2014, 18:08  [ТС]
MrGluck, можете написать этот же код не в одну строчку?...Читать адски тяжело.
0
Заблокирован
24.11.2014, 18:22
Цитата Сообщение от justgamermax Посмотреть сообщение
SetConsoleCP(1251); SetConsoleOutputCP(1251);
На моей винде такие команды не поддерживаются, русский язык у меня включается так:
C++
// #include <windows.h> // не нужно!
 
setlocale(0, "Russian");
Минус один инклуде и минус одна команда.

Добавлено через 9 минут
justgamermax, еще можете убрать int a и int x в main() чтобы съэкономить немножко места в самом майне:
C++
int main(int a, int x) {
// ...
}
0
 Аватар для intern
15 / 15 / 8
Регистрация: 30.03.2014
Сообщений: 75
24.11.2014, 18:22
Удалить переменную х и изменить цикл
C++
1
2
3
4
while (cin >> a)
{
   ...
}
0
Заблокирован
24.11.2014, 18:27
justgamermax, функция int main() всегда должна возвращать целое число типа int, например:
C++
1
2
3
int main() {
    return 0;
}
justgamermax, и вообще, лучше не пользоваться STL, от него EXE распухает, а пользоваться старыми функциями:
C++
#include <stdio.h>
#include <locale.h>
 
int main(int a)
{
    setlocale(0, "Russian");
 
    int z = 33;
 
    printf( "Угадай число:\n" );
 
    while ( 1 ) {
        scanf("%d", &a);
        if      (a > z) { printf( "Много\n" ); }
        else if (a < z) { printf( "Мало\n" ); }
        else            { printf( "Ты выиграл\n" ); break; }
    }
    return 0;
}
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
24.11.2014, 18:35
Цитата Сообщение от maritux Посмотреть сообщение
функция int main() всегда должна возвращать целое число типа int, например:
Неизвестно знал ли ТС об этом или нет, но написание main в таком виде как у него является корректным с точки зрения спецификации языка. Специально для main существует отдельное правило, которое подразумевает return 0; при отсутствии оператора return в конце main, см. 3.6.1/5.
If control reaches the end of main without encountering a return statement, the effect is that of executing
return 0;
0
Заблокирован
24.11.2014, 18:45
justgamermax, чтобы еще сократить, можно заменить while на for, всеравно после цикла ваши переменные нигде не используются:
C++
#include <stdio.h>
#include <locale.h>
 
int main()
{
    setlocale(0, "Russian");
 
    printf( "Угадай число:\n" );
 
    for ( int z = 33, a = 0; a != z; ) {
        scanf("%d", &a);
        if      (a > z) { printf( "Много\n" ); }
        else if (a < z) { printf( "Мало\n" ); }
        else            { printf( "Ты выиграл\n" ); }
    }
    return 0;
}
Добавлено через 6 минут

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
If control reaches the end of main without encountering a return statement, the effect is that of executing
return 0;
Наверно это зависит от компилятора.

0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
24.11.2014, 19:23
Лучший ответ Сообщение было отмечено justgamermax как решение

Решение

Не по теме:

Цитата Сообщение от maritux Посмотреть сообщение
Наверно это зависит от компилятора.
Нет, это не зависит от компилятора. Это распространяется на все компиляторы, которые претендуют на поддержку С++.



Добавлено через 34 минуты
justgamermax,
Вот такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <clocale>
#include <iostream>
 
int main()
{
    int a;
    int z = 33;
    std::setlocale(LC_ALL, "Rus"); // или Russian, в зависимости от твоей среды
 
    std::cout << "Угадай число" << std::endl;
    while(std::cin >> a, a != z)
    {
        std::cout << (a > z ? "Много" : "Мало") << std::endl;
    }
    std::cout << "Ты выиграл" << std::endl;
}
Или такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstdio>
#include <clocale>
int main()
{
    int a;
    int z = 33;
    std::setlocale(LC_ALL, "Rus"); // или Russian, в зависимости от твоей среды
 
    std::printf("Угадай число\n");
    while(std::scanf("%d", &a), a != z)
    {
        std::printf("%s\n", a > z ? "Много" : "Мало");
    }
    std::printf("Ты выиграл\n");
}
В этом варианте на одну итерацию в худшем случае 2 сравнения, вместо трех в твоем коде.
В случая совпадения, будет одно сравнение. В твоем варианте 3 сравнения, если мы угадали.
Твой алгоритм лучше себя ведет только в случае, если мы всегда выбираем больше, чем нужно, однако всегда присутствует проверка в цикле, что снижает этот эффект до нуля.
Примерно в этом направлении (алгоритмической оптимизации) и надо двигаться в первую очередь.

PS. Экономить строчки, переносить переменные туда-сюда не нужно. Это ничего не даст в практическом смысле.
PS2. Скорее всего, нормальный компилятор даже первоначальный вариант смог бы оптимизировать в более быстрый.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.11.2014, 20:46
Цитата Сообщение от justgamermax Посмотреть сообщение
можете написать этот же код не в одну строчку?...Читать адски тяжело.
Максимально соответствует идиотскому требованию препода. У вас вполне нормальный код в шапке темы. Ваш препод объяснил как пользоваться инструментами для профилирования? Нет? Тогда о какой оптимизации может идти речь, если замерить время выполнения нечем? Вполне вероятно, что код в первом посте компилятор сможет легче оптимизировать чем тот, который у меня или авторов ниже.

Сокращать буквы - бессмысленно в вашем коде, вас учат не тому.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2014, 20:46
Помогаю со студенческими работами здесь

Оптимизировать код
Для решения задачи : &quot;Given an array a that contains only numbers in the range from 1 to a.length, find the first duplicate number for...

Как оптимизировать код?
Как оптимизировать код, чтобы работала программа быстрее #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; using...

Исправить и оптимизировать код
нужна помощь по исправлению ошибок Написал программу она работает все отлично но препод сказал что она не очень красивая Помогите...

Нужно оптимизировать код
Вобщем код не принемает сайт, немного нагружает и по времени не проходит задание Август и Беатриса играют в игру. Август загадал...

Как оптимизировать код?
мне нужно чтобы значения угла перебирались от начального до конечного в зависимости от времени, выдает ошибку, как сделать правильно...


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

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

Новые блоги и статьи
Модель микоризы: классовый агентный подход 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