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

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

24.11.2014, 17:31. Показов 1235. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Новый 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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru