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

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

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

Можно ли написать более оптимальный код, используя цикл while? - C++

27.07.2015, 23:16. Просмотров 693. Ответов 29
Метки нет (Все метки)

собственно сабж.
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()
{
    int x, y, s, step = 1;
 
    cout << "Vvedite x" << endl;
    cin >> x;
    cout << "Vvedite y" << endl;
    cin >> y;
 
    if (y == 0)
    {
        cout << "S ravno 0" << endl;
    }
 
 
    if (y >= 1)
    {
        s = x;
        while (step < y )
        {
        s *= x;
        step ++;
        }
    cout << "x v stepeni y = " << s;
    }
 
    return 0;
}
если есть более простые варианты, хотелось бы их увидеть
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2015, 23:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли написать более оптимальный код, используя цикл while? (C++):

Можно ли написать более оптимальный или простой код, используя цикл for? - C++
собственно сабж. #include &lt;iostream&gt; using namespace std; int main() { int sum, count, ost; for (count = 0;...

Можно ли написать этот код более компактно? - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; void main() { int x, y; cout &lt;&lt; &quot;input x = &quot;; cin &gt;&gt; x; cout...

как можно более просто написать эту программку(более понятным языком для начинающего) - C++
7. Установить, четным или нечетным является число цифр в записи данного натурального числа. Если число цифр нечетно, вывести среднюю цифру....

Изменить код, используя цикл - C++
Помогите разобраться с циклом, Есть код, его надо изменить под циклический, как сделать х3, помогите пожалуйста. #include &quot;stdafx.h&quot; ...

Можно ли инициализировать динамический массив не используя цикл? - C++
Когда создавали статический массив, можно было сделать так: int array={1,5,14,23,32,45,67}; Можно ли такое же сделать с динамическим...

Можно ли сделать бесконечный цикл с while, используя тип bool? - C++
... bool f; f=false; while(f=false) { ... ... ... if(....)//какое-то условие f=true;//цикл прерывается

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rep plz
Заблокирован
28.07.2015, 07:25  [ТС] #16
Цитата Сообщение от taras atavin Посмотреть сообщение
Именно с вайлом лучше уже не сделаешь, потому что здесь лучше подойдёт for
это самые приятные слова, которые мне говорили за последние 15 минут
0
Байт
Эксперт C
16051 / 10320 / 1540
Регистрация: 24.12.2010
Сообщений: 19,438
28.07.2015, 22:56 #17

Не по теме:

Цитата Сообщение от _Ivana Посмотреть сообщение
Потому что нейтральный элемент требуемого моноида
До чего приятно услышать умные слова! Я, правда, грешным делом, считал множество положительных целых чисел полугруппой с единицей по умножению, но ни дела, ни удовольствия, это не меняет

Цитата Сообщение от Renji Посмотреть сообщение
если гоняться именно за оптимальностью

Однако, имхо, можно и еще оптимальнее, воспользовавшись чем-то вроде дихотомической рекурсии. Соответствующие коды приводились уже на форуме неоднократно, в том числе и вашим покорным слугой.
0
_Ivana
28.07.2015, 23:00
  #18

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Я, правда, грешным делом, считал множество положительных целых чисел полугруппой с единицей по умножению
Вы просто используете другие слова
https://ru.wikipedia.org/wiki/%D0%9F...BF%D0%BF%D0%B0
https://ru.wikipedia.org/wiki/%D0%9C...BE%D0%B8%D0%B4

0
Байт
Эксперт C
16051 / 10320 / 1540
Регистрация: 24.12.2010
Сообщений: 19,438
28.07.2015, 23:03 #19
А если кому рекурсия не по вкусу, то опять же любой рекурсивный алгоритм можно реализовать в виде итерационного и наоборот. Правда, это упражнение уже посложнее чем for - while. И, конечно, интереснее.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от _Ivana Посмотреть сообщение
Вы просто используете другие слова
Слов много, истина - одна. Не правда ли?

0
_Ivana
28.07.2015, 23:09
  #20

Не по теме:

Байт, правда. Зря вы от хаскеля отвернулись - там подобная красота на каждом шагу, начиная с библиотечных абстракций Например, произведение элементов коллекции вычисляется через свертку по вышеупомянутому моноиду

0
Байт
28.07.2015, 23:27
  #21

Не по теме:

Цитата Сообщение от _Ivana Посмотреть сообщение
Зря вы от хаскеля отвернулись
Да ни от чего я не отворачивался! Просто у меня всего 4 лапы + 1 хвост + 1 пасть, которая жрать хочет.

0
Croessmah
28.07.2015, 23:35
  #22

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
+ 1 пасть, которая жрать хочет

0
rep plz
Заблокирован
29.07.2015, 16:52  [ТС] #23
Цитата Сообщение от Renji Посмотреть сообщение
Ну, если гоняться именно за оптимальностью (а не простотой):
а если за простотой?
0
Байт
Эксперт C
16051 / 10320 / 1540
Регистрация: 24.12.2010
Сообщений: 19,438
30.07.2015, 10:39 #24
Цитата Сообщение от rep plz Посмотреть сообщение
а если за простотой?
Пост 6 чем-то не устраивает?
0
rep plz
Заблокирован
30.07.2015, 12:26  [ТС] #25
Цитата Сообщение от Байт Посмотреть сообщение
Пост 6 чем-то не устраивает?
меня устраивает. но хочется вариантов просто я не исключаю возможности что опытные программисты могут упростить еще и его
0
Croessmah
Эксперт CЭксперт С++
13202 / 7473 / 839
Регистрация: 27.09.2012
Сообщений: 18,367
Записей в блоге: 3
Завершенные тесты: 1
30.07.2015, 17:29 #26
Цитата Сообщение от rep plz Посмотреть сообщение
просто я не исключаю возможности что опытные программисты могут упростить еще и его
скорее всего, это будет выглядеть так:
C++
1
s = std::pow ( x , y ) ;
2
Байт
Эксперт C
16051 / 10320 / 1540
Регистрация: 24.12.2010
Сообщений: 19,438
30.07.2015, 23:17 #27
Цитата Сообщение от rep plz Посмотреть сообщение
я не исключаю возможности что опытные программисты могут упростить еще и его
Странно искать упрощений в ситуации, когда некоторые естественные приемы (например, цикл for) по каким-то неведомым причинам запрещены.
И еще вопрос. А зачем оно вам?
И еще. Какие ваши критерии "простоты"?
0
_Ivana
30.07.2015, 23:27
  #28

Не по теме:

подпись особенно понравилась

0
rep plz
Заблокирован
31.07.2015, 07:36  [ТС] #29
Цитата Сообщение от Байт Посмотреть сообщение
Странно искать упрощений в ситуации, когда некоторые естественные приемы (например, цикл for) по каким-то неведомым причинам запрещены.
для вас может быть странно. для меня нет.
Цитата Сообщение от Байт Посмотреть сообщение
И еще вопрос. А зачем оно вам?
я учусь. и единственный кто может мне объяснить что я делаю так, а что нет, это вы. и если я не задам какого-либо вопроса, не спрошу о чем-то, возможно я никогда об этом не узнаю.
Цитата Сообщение от Байт Посмотреть сообщение
И еще. Какие ваши критерии "простоты"?
я не буду озвучивать свои критерии простоты. могу лишь повториться - я просто учусь

Добавлено через 4 минуты
Байт, спросите себя, как бы вы поступили на месте новичка, если бы хотели знать что программисты считают более простым способом, а что более сложным? а что более оптимальным?
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
31.07.2015, 07:55 #30
rep plz, while вместо for нужен на паскале из-за того, что там счётчик цикла может только увеличиваться/уменьшаться строго на 1. for на c/c++ - оператор цикла вообще не со счётчиком, а с величиной, произвольно изменяемой в заголовке цикла и управляющей циклом, его гибкость позволяет полностью заменить while, которому остаются ровно три роли:
1. Цикл с условием выхода в теле. Прерывается оператором break.
2. Цикл с условием, зависящим только от величин, меняющихся только вне самого цикла. Прерывается путём изменения неких величин в другом потоке (возможно даже принадлежащем другому процессу), или при обработке прерывания, или исключения.
3. Бесконечный цикл. Если и прерывается, то только при снятии процесса, или выключении всего компьютера.
На c/c++ for и в этих случаях может заменить while, но в этих случаях он проигрывает по удобству, да и просто лучше соответствует формулировке задачи. В остальных же случаях удобней for, даже в тех, когда условие выхода из цикла сложней, чем сравнение величины с ограничением, для чего вообще то тоже предназначен while, а не for, но на c/c++ for даже в этих случаях применяется вместо while удобнее, чем сам while. Не говоря уж об аддитивных счётчиках с не единичным шагом, аддитивных счётчиках с переменным шагом, или мультипликативных счётчиках.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2015, 07:55
Привет! Вот еще темы с ответами:

Написать, используя цикл for, ввод с клавиатуры 10 чисел - C++
Написать, используя цикл for, ввод с клавиатуры 10 чисел. Цикл может прерваться, если пользователь ввел любое отрицательное число.

Как можно записать код в более компактном виде? - C++
Вывести столбиком след. числа 3,2, 3,2, 3,3, 3,3,........3,9 у меня вышло довольно размазан: #include &quot;iostream&quot; #include &quot;conio.h&quot; ...

Какой вариант более оптимальный? - C++
Доброго времени суток. Пишу лабу - распознаватель числовых констант. Возник вопрос, как оптимальнее, с точки зрения выполнения кода...

Найти более оптимальный способ решения задачи - C++
Вот задача: Имеется две таблицы: 1) Items (Id identity(1,1) int, Name varchar(50)) в которой хранятся составляющие продукты и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.07.2015, 07:55
Ответ Создать тему
Опции темы

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