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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
#1

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

19.11.2011, 20:54. Просмотров 1524. Ответов 31
Метки нет (Все метки)

C++
1
2
3
4
5
while(i <= el) {
 if(mas < A && mas < min)
  min = mas;
 i++;
}
есть такой цикл.

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

Вопрос по циклам - C++
Условие: Вводятся натуральное число n, целые числа а1, ..., an. Вычислить сумму: а1 + а2(2)+ ... + an(n) без хранения...

Вопрос по циклам - C++
1)Даны действительные числа x1, …., x8. Получить действительную квадратную матрицу порядка 8: 1 1 .. 1 x1 x2 .. x8 .. .. ...

Задачка по циклам - C++
При помощи цикла for изобразите на экране пирамиду из символов 'X'. Верхняя часть пирамиды должна выглядеть следующим образом: х ххх ...

задача по циклам в с++ - C++
Доброго времени суток! Есть задачка, никак не выходит ее решить. Сразу скажу, что я новичок, изучаю с++ только неделю :) Собственно...

Лабораторная по циклам - C++
Помогите сделать лабораторную работу! Заранее благодарен!

Лабораторная работа по циклам. - C++
Лаба по С++ напишите решение с помощью циклов В некотором году, назовем его условно первым, на участке в 100 гектаров средняя...

31
alkagolik
Заблокирован
19.11.2011, 23:00 #16
Цитата Сообщение от VladSharikov Посмотреть сообщение
while и if должны быть объединены.
никак. это проверка разных предметов. то же самое что сравнивать на предмет текучести воду и воздух. И речь либо о том чтобы проверять элемент В одновременно с поиском минимума, как показал товарищ Thinker, либо о том же только с постусловием.
0
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.

Что я не так сделал?
0
alkagolik
Заблокирован
19.11.2011, 23:16 #18
Цитата Сообщение от VladSharikov Посмотреть сообщение
так?
нет. так
поиск минимума и проверка на "меньше числа А" не может быть условием выхода из цикла. Однозначно и безоговорочно.
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,598
Записей в блоге: 12
20.11.2011, 10:55 #19
Цитата Сообщение от VladSharikov Посмотреть сообщение
"зачем же писать while(цикл с предусловием) и тут же после него писать условие. это в корне неправильно! это же не оптимально! нужно их объеденить!"
да препод по ходу тупит тем более женчина! какая нафиг оптимальность все автора книг с++ и даже бьян страустап говорят с++ язык который любит простые команды то есть дискретность
0
taras atavin
3570 / 1753 / 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++;
}
. Только не факт, что это соответствует задаче. Так что задачу в студию.
0
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
20.11.2011, 15:38  [ТС] #21
taras atavin, ваш вариант пробовал, он не работает.

Задание:
7. Заменить каждый 5-ый элемент массива максимальным элементом(сделано).
Найти номер последнего минимального элемента среди элементов, меньших А и расположенных до первого элемента, большего В.
Упорядочить массив по невозрастанию(сделано).

Добавлено через 5 минут
Честно говоря я понимаю, что вы мне говорите =) Еще читая первую страницу понял. Вопрос в том как ЕЙ это объяснить? =)
0
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
21.11.2011, 20:16  [ТС] #22
C++
1
2
3
4
5
6
7
int min = mas[0], i = 1;
 
while(i<size && mas[i] <= B) {
 if(mas[i] < A && mas[i] < min) 
  min = mas[i];
 i++;
}
Блок-схема этого кода выглядит так?
блок-схема
0
alkagolik
Заблокирован
21.11.2011, 20:24 #23
цикл выглядит так, вниз - тело цикла, слева вход на следующую итерацию, справа выход из цикла.
0
Миниатюры
Вопрос по циклам и условиям  
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
21.11.2011, 20:39  [ТС] #24
допустим, в остальном правильно?
0
Сыроежка
Заблокирован
21.11.2011, 21:36 #25
Цитата Сообщение от VladSharikov Посмотреть сообщение
C++
1
2
3
4
5
while(i <= el) {
 if(mas < A && mas < min)
  min = mas;
 i++;
}
есть такой цикл.

поиск минимального при определенном условии. преподователь орет, что надо объеденить условие цикла и условие внутри него. считаю что это бред полный конечно, но как это сделать?
Прочитав написанное, мне предсатвляется !) что вы не поняли преподавателя; 2) вы неправильно решаете задачу.

Начнем со второго пункта. Во-первых, в последовательности может вообще не быть чисел меньших A. А это означает, что минимума с заданным условием в последовательности нет Во-вторых, в последовательности может не быть элемента большего B.
Поэтому, я думаю, вам нужно объединить циклы поиска элемента большего B с поиском минимального элемента меньшего A

Условие общего такого цикла будет выглядеть так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int i = 0;
int min = size;
while ( i < size && mas[i] <= B )
{
   if ( mas[i] < A )
   {
      if ( min == size || mas[i] < mas[min] ) min = i;
   }
   i++;
}
 
if ( min == size ) std::cout << "minimum has not been found\n";
else std::cout << "minimum = " << mas[min] << std::endl;
Возможно, что-то такое требуется.
0
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
21.11.2011, 21:57  [ТС] #26
Я дал конкретный кусок задания, дал конкретный кусок кода.

А и B всегда будут верными, в массиве всегда найдутся элементы меньше А и найдется элемент больший B, они проверяются при вводе(не нужно их в этом цикле проверять).

Я вам процитировал преподавателя, оставив свои мысли при себе.
Вопрос в силе. Не нужно навязывать свое мнение, пожалуйста. Сколько программистов, столько и мнений.
0
Liebe
...
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
21.11.2011, 22:10 #27
Цитата Сообщение от alkagolik Посмотреть сообщение
цикл выглядит так, вниз - тело цикла, слева вход на следующую итерацию, справа выход из цикла.
это для цикла for, я для цикла while правильно у ТС (хотя если придираться, то по госту уже вообще не так http://ru.wikipedia.org/wiki/%C1%EB%EE%EA-%F1%F5%E5%EC%E0).

Добавлено через 1 минуту
Цитата Сообщение от VladSharikov Посмотреть сообщение
допустим, в остальном правильно?
да, ваш код соответствует приведенной вами блок-схеме
0
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
21.11.2011, 22:20  [ТС] #28
liebe, спасибо, второй толковый ответ за все существование темы.
0
Liebe
...
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
22.11.2011, 00:05 #29
Цитата Сообщение от VladSharikov Посмотреть сообщение
Задание:
7. Заменить каждый 5-ый элемент массива максимальным элементом(сделано).
Найти номер последнего минимального элемента среди элементов, меньших А и расположенных до первого элемента, большего В.
Упорядочить массив по невозрастанию(сделано).
Если нужно найти последний минимальный элемент, то в условии надо писать не "mas[i] < min", а "mas[i] <= min".

На счет объединения всего в одно условие - преподаватель не права...Условие окончания цикла - это одно, а условие в теле цикла для обработки данных - это другое, и на оптимальность это не влияет.
И не мудрено, что у вас код выдавал неправильный результат в посте #17 (Вопрос по циклам и условиям) - выполните пошагово этот кусок кода, отслеживая значения каждой переменной, и вы поймете почему.
Честно говоря, в данной задаче даже не представляю как объединить...
0
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
22.11.2011, 00:10  [ТС] #30
liebe, то что было в 17 посте уже давно опровергли =) и я давно это уяснил.

Вопрос по циклам и условиям блок-схема верна? код оставлю такой, как в посте по ссылке
0
22.11.2011, 00:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 00:10
Привет! Вот еще темы с ответами:

Задача по вложенным циклам - C++
Здравствуйте! Помогите растолковать код, не могу понять какой цикл к чему относится. Вот задача: Напишите программу, использующую...

Программа по простейшим циклам - C++
Даны натуральное число n и действительное число x. Составить программу для вычисления значения выражения Sin X+...

задание по итерационным циклам в с++ - C++
вычислить скорость сходимости (число слагаемых для достижения заданной точности e) итерационного процесса при разложении числа пи пи...

Программа С++ по циклам (циклические структуры) - C++
Мне нужен исходник вот такой программы, если не сложно напишите :) Найти наименьший номер последовательности, для которого...


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

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

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