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

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

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

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

19.11.2011, 20:54. Просмотров 1496. Ответов 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 гектаров средняя...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 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;
0
Thinker
Эксперт C++
4226 / 2200 / 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 Посмотреть сообщение
преподаватель орет

Не по теме:

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

1
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
19.11.2011, 21:22 #4
Цитата Сообщение от Thinker Посмотреть сообщение
for (; i <= e1; i++)
*if(mas < A && mas < min)
* min = mas;
я так тоже хотел сделать но
VladSharikov, просил чтоб в цикле условия не было
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 21:25 #5
Цитата Сообщение от Van111 Посмотреть сообщение
я так тоже хотел сделать но
VladSharikov, просил чтоб в цикле условия не было
Да я так и понял, что вы это знаете и хотели написать, просто либо сформулирован не так вопрос, либо преподаватель не знает сам чего хочет.
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.11.2011, 21:35 #6
VladSharikov, зачем вам i ?
0
Thinker
Эксперт C++
4226 / 2200 / 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];
0
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++;
}
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 22:18 #9
VladSharikov, вы лучше полностью сформулируйте задачу, а уж алгоритм потом посмотрим как преобразовать
0
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(цикл с предусловием) и тут же после него писать условие. это в корне неправильно! это же не оптимально! нужно их объеденить!".
Посидел, подумал, посЕдел, решил обратиться к вам.
Собственно вопрос. Как превратить мой второй вариант, в то, что хочет она.
0
alkagolik
Заблокирован
19.11.2011, 22:37 #11
Цитата Сообщение от VladSharikov Посмотреть сообщение
найти минимальный элемент массива, меньший числа A и до первого элемента большего B
Поиск элемента В это условие задачи или ваша инициатива, если второе, то лишняя работа.
Скорее всего она хочет цикл с постусловием, чтобы было "оптимально" по ее мировоззрению.
0
Thinker
Эксперт C++
4226 / 2200 / 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++;
}
Может ей не нравится, что вы два раза бегаете по массиву, когда можно объединить оба условия и составить один цикл
0
alkagolik
Заблокирован
19.11.2011, 22:43 #13
Thinker, да, поддерживаю. но не вяжется с этим
Цитата Сообщение от дикий препод
зачем же писать while(цикл с предусловием) и тут же после него писать условие. это в корне неправильно! это же не оптимально! нужно их объеденить!
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.11.2011, 22:46 #14
alkagolik. ну никак проверка на минимум не лезет в условие цикла, речь наверняка о другом.
0
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 должны быть объединены.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 22:46
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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