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

Вопрос по циклам и условиям - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
19.11.2011, 20:54     Вопрос по циклам и условиям #1
C++
1
2
3
4
5
while(i <= el) {
 if(mas < A && mas < min)
  min = mas;
 i++;
}
есть такой цикл.

поиск минимального при определенном условии. преподователь орет, что надо объеденить условие цикла и условие внутри него. считаю что это бред полный конечно, но как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 20:54     Вопрос по циклам и условиям
Посмотрите здесь:

Программа С++ по циклам (циклические структуры) C++
C++ Вопрос по циклам
C++ Вопрос по циклам
C++ задача по циклам в с++
Лабораторная работа по циклам. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
19.11.2011, 21:14     Вопрос по циклам и условиям #2
VladSharikov, да не особо бред странно что тебе ещё не кто не помог
for(;i <= el && mas < A && mas < min;i++)
min = mas;

Добавлено через 12 секунд
VladSharikov, да не особо бред странно что тебе ещё не кто не помог
for(;i <= el && mas < A && mas < min;i++)
min = mas;
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 21:20     Вопрос по циклам и условиям #3
Цитата Сообщение от Van111 Посмотреть сообщение
VladSharikov, да не особо бред странно что тебе ещё не кто не помог
for(;i <= el && mas < A && mas < min;i++)
Это в корне не верно, при определенных условиях ваш цикл совсем не будет работать, то есть сразу остановится. А вот это

C++
1
2
3
4
5
while(i <= el) {
 if(mas < A && mas < min)
  min = mas;
 i++;
}
и это
C++
1
2
3
for (; i <= e1; i++)
 if(mas < A && mas < min)
  min = mas;
эквивалентно

Цитата Сообщение от VladSharikov Посмотреть сообщение
преподаватель орет

Не по теме:

или он тупит, или другое от вас просит

Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
19.11.2011, 21:22     Вопрос по циклам и условиям #4
Цитата Сообщение от Thinker Посмотреть сообщение
for (; i <= e1; i++)
*if(mas < A && mas < min)
* min = mas;
я так тоже хотел сделать но
VladSharikov, просил чтоб в цикле условия не было
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 21:25     Вопрос по циклам и условиям #5
Цитата Сообщение от Van111 Посмотреть сообщение
я так тоже хотел сделать но
VladSharikov, просил чтоб в цикле условия не было
Да я так и понял, что вы это знаете и хотели написать, просто либо сформулирован не так вопрос, либо преподаватель не знает сам чего хочет.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.11.2011, 21:35     Вопрос по циклам и условиям #6
VladSharikov, зачем вам i ?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 21:51     Вопрос по циклам и условиям #7
Цитата Сообщение от go Посмотреть сообщение
VladSharikov, зачем вам i ?
Точно, там же массива нет, вот невнимательность... Спасибо, что увидели) Тогда там что-то типа
C++
1
2
3
for (; i <= e1; i++)
 if(mas[i] < A && mas[i] < min)
  min = mas[i];
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
19.11.2011, 22:10  [ТС]     Вопрос по циклам и условиям #8

Не по теме:

Тупит преподователь, я думаю
она например доказывает, что:
int mas[3]
имеет элементы mas[0], mas[1], mas[2], mas[3];
Не в том суть.



Я видимо не до конца расписал свою задачу.

Нужно сделать цикл с ПРЕДУСЛОВИЕМ(то есть цикл while) или цикл с ПОСТУСЛОВИЕМ, то есть цикл do {...} while;. я сделал просто while, а внутри этого цикла еще одно условие. Она долго кричала, что это не оптимально. Собственно вопрос. Как запихать условие if в while. А также, цикл for не рассматривается(опять же прихоть препода).

Уважаемые форумчане, я правда понимаю, что звучит как бред. Но сессию надо закрывать) Самое интересное, что "незнающим" меня никто никогда не считал. Но здесь я просто не представляю как выйти из этой ситуации =)

Thinker,
go,

странно, ощущение, что или я напортачил, или то что было в квадратных скобках - скрыто. у меня именно массив.
C++
1
2
3
4
5
while(i <= el) {
 if(mas[i] < A && mas[i] < min)
  min = mas[i];
 i++;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 22:18     Вопрос по циклам и условиям #9
VladSharikov, вы лучше полностью сформулируйте задачу, а уж алгоритм потом посмотрим как преобразовать
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
19.11.2011, 22:30  [ТС]     Вопрос по циклам и условиям #10
Специально пишу отдельное сообщение, чтобы получше сформулировать задачу.

Итак... Я написал программу(не важно какую и т.п. и т.д.), одна из подзадач этой программы найти минимальный элемент массива, меньший числа A и до первого элемента большего B.
А и B вводим с клавиатуры.
Имеется подпрограмма которая содержит в себе 2 цикла:
1) цикл для поиска элемента, большего B(в этом цикле мы ищем переменную el, которая пригодиться для второго цикла)
2) цикл для поиска минимального, меньшего А. поиск осуществить до элемента B.

пока ясно?

значит. после выхода из первого цикла у нас есть переменная "el", содержащая в себе индекс первого элемента большего B.

1-ая попытка сдать ей эту программу. Цикл поиска минимального выглядел так:
C++
1
2
3
4
5
int min = mas[0];
for(int i = 1; i < el; i++) {
 if(mas[i] < A && mas[i] < min)
  min = mas[i];
}
Не зачет. Шум, крик и гам по поводу цикла FOR. Сказала переделай под цикл while. Посидел, подумал, выдал ей такое.
C++
1
2
3
4
5
6
7
min = mas[0];
int i = 1;
while(i<el) {
 if(mas[i] < A && mas[i] < min)
  min = mas[i];
 i++;
}
Этот вариант тоже ее не устроил. Сказала это, цитата: "зачем же писать while(цикл с предусловием) и тут же после него писать условие. это в корне неправильно! это же не оптимально! нужно их объеденить!".
Посидел, подумал, посЕдел, решил обратиться к вам.
Собственно вопрос. Как превратить мой второй вариант, в то, что хочет она.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
19.11.2011, 22:37     Вопрос по циклам и условиям #11
Цитата Сообщение от VladSharikov Посмотреть сообщение
найти минимальный элемент массива, меньший числа A и до первого элемента большего B
Поиск элемента В это условие задачи или ваша инициатива, если второе, то лишняя работа.
Скорее всего она хочет цикл с постусловием, чтобы было "оптимально" по ее мировоззрению.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 22:38     Вопрос по циклам и условиям #12
Цитата Сообщение от VladSharikov Посмотреть сообщение
одна из подзадач этой программы найти минимальный элемент массива, меньший числа A и до первого элемента большего B.
Так с этого и надо было начинать:

C++
1
2
3
4
5
6
7
8
9
int a[N], A, B, min;
min = INT_MAX;
i = 0;
while(i < N && a[i] <= B)
{
   if (a[i] < A && a[i] < min)
      min = a[i];
   i++;
}
Может ей не нравится, что вы два раза бегаете по массиву, когда можно объединить оба условия и составить один цикл
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
19.11.2011, 22:43     Вопрос по циклам и условиям #13
Thinker, да, поддерживаю. но не вяжется с этим
Цитата Сообщение от дикий препод
зачем же писать while(цикл с предусловием) и тут же после него писать условие. это в корне неправильно! это же не оптимально! нужно их объеденить!
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 22:46     Вопрос по циклам и условиям #14
alkagolik. ну никак проверка на минимум не лезет в условие цикла, речь наверняка о другом.
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
19.11.2011, 22:46  [ТС]     Вопрос по циклам и условиям #15
alkagolik, скорее ее условие, а не условие задачи.
Она вообще требует 4 цикла тут сделать(хотя я не понимаю, где тут найти хотя бы 3).

Thinker,
C++
1
2
3
4
while(i < N && a[i] <= B) // - разница тут. я прохожу массив до el(предварительно найденного), а вы это делаете "по ходу дела"
{
//тоже самое, что и у меня
 }
все тоже самое, что и у меня. единственное отличие это, то как мы отслеживаем элемент, больший B.

У вас один вариант, у меня другой вариант. Все остальное - тоже самое, прочитайте сообщение выше. while и if должны быть объединены.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
19.11.2011, 23:00     Вопрос по циклам и условиям #16
Цитата Сообщение от VladSharikov Посмотреть сообщение
while и if должны быть объединены.
никак. это проверка разных предметов. то же самое что сравнивать на предмет текучести воду и воздух. И речь либо о том чтобы проверять элемент В одновременно с поиском минимума, как показал товарищ Thinker, либо о том же только с постусловием.
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
19.11.2011, 23:07  [ТС]     Вопрос по циклам и условиям #17
Нужно найти минимальный элемент, как будет выглядеть цикл с постусловием?

C++
1
2
3
do {
....
} while(i <= el && mas[i] < A && mas[i] < min);
так?

Исходный массив, например такой:
74 55 13 85 38 5 19 94 25 24
A = 50, B = 80. работает. Минимальное 13.
A = 50, B = 90. не работает. Минимальное так же 13, должно быть 5.

Что я не так сделал?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
19.11.2011, 23:16     Вопрос по циклам и условиям #18
Цитата Сообщение от VladSharikov Посмотреть сообщение
так?
нет. так
поиск минимума и проверка на "меньше числа А" не может быть условием выхода из цикла. Однозначно и безоговорочно.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
20.11.2011, 10:55     Вопрос по циклам и условиям #19
Цитата Сообщение от VladSharikov Посмотреть сообщение
"зачем же писать while(цикл с предусловием) и тут же после него писать условие. это в корне неправильно! это же не оптимально! нужно их объеденить!"
да препод по ходу тупит тем более женчина! какая нафиг оптимальность все автора книг с++ и даже бьян страустап говорят с++ язык который любит простые команды то есть дискретность
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 14:37     Вопрос по циклам и условиям
Еще ссылки по теме:

C++ Задача по вложенным циклам
Задачка по циклам C++
Лабораторная по циклам C++

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.11.2011, 14:37     Вопрос по циклам и условиям #20
Цитата Сообщение от VladSharikov Посмотреть сообщение
считаю что это бред полный
Цитата Сообщение от Van111 Посмотреть сообщение
да не особо бред
Всё зависит от того, что ищешь. Если искать конец убывающей последовательности, или минимум массива, о котором известно, что он может быть или отсортирован по убыванию, или иметь распределение "седло", то оба условия надо прописать в заголовке цикла, одно будет отвечать за контроль размерности, а второе за поиск минимума, иначе же так нельзя. И каждое из условий надо заключать в скобки. Есть языки, которые этого не требуют, например, бейсик, а есть языки, на которых это будет синтаксической ошибкой и не даст откомпилить, например, паскаль. Зависит от приоритетов: если выше приоритет сравнения, то скобки не нужны, а если логического оператора, то
Pascal
1
if a<b and c<d then
означает
Pascal
1
if a<(b and c)<d then
, а эта запись не допустима. Так вот, чтоб не копаться в таких подробностях стандартов, надо приоритеты всегда ставить самостоятельно с помощью скобок. Да и обращаться здесь надо не к массиву, а к элементу.

Добавлено через 11 минут
Цитата Сообщение от Van111 Посмотреть сообщение
да препод по ходу тупит тем более женчина! какая нафиг оптимальность все автора книг с++ и даже бьян страустап говорят с++ язык который любит простые команды то есть дискретность
Дискретность не противоречит оптимальности и не является отличительным свойством какого либо языка. c/c++ как раз предназначены для разработки оптимальных программ, а континуальных языков нет, все дискретны.

Добавлено через 3 минуты
Цитата Сообщение от VladSharikov Посмотреть сообщение
зачем же писать while(цикл с предусловием) и тут же после него писать условие. это в корне неправильно! это же не оптимально!
А при чём здесь оптимальность? Условия цикла с условием по синтаксису должно быть в заголовке/завершающем операторе самого цикла. Но ведь могут же быть два условия для разных целей! И не надо путать оптимальность с задачей, а тёплое с кислым.

Добавлено через 4 минуты
Цитата Сообщение от VladSharikov Посмотреть сообщение
Как превратить мой второй вариант, в то, что хочет она.
Элементарно:
C++
1
2
3
4
5
6
7
min = mas[0];
int i = 1;
while ((i<el)&&(mas[i]< A)&&(mas[i]<min))
{
 min = mas[i];
 i++;
}
. Только не факт, что это соответствует задаче. Так что задачу в студию.
Yandex
Объявления
20.11.2011, 14:37     Вопрос по циклам и условиям
Ответ Создать тему
Опции темы

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