![]() |
|
Программирование и разработка Обсуждение вопросов программирования |
![]() |
|
Опции темы | Опции просмотра |
|
![]() |
#1 |
online();
|
а че-то вообще не поняла в чем проблема, особенно во второй задаче.. в чем конкретно у тебя загвоздка?
|
![]() |
![]() |
![]() |
#2 | |
[Alternative] Rock Member
Регистрация: 23.01.2006
Адрес: Linkin Park
Jabber: mishka_anderson@jabber.ru
p2p: воистину p2p
Нарушения:[Посмотреть] |
Цитата:
Во второй понятно, что с использованием цикла WHILE, но хоть ты тресни, не получалось.
__________________
Fire Walk With Me И если завтра проснёшься - попробуй влюбиться! Как звезда рок-н-ролла...
|
|
![]() |
![]() |
![]() |
#3 |
Местный
|
Насчёт первой задачи. Как реализовать это на ТП, я не знаю, так как его не изучал, но идея такая: Создаёшь переменную, которая будет выполнять роль счётчика, допустим A. Приравниваешь её к 0. Создаёшь другую переменную, в которой будет сохраняться максимальный результат, допустим B. Её тоже приравниваешь к 0. Создаёшь цикл, который прокручивает все числа на предмет 0 - не 0. Допустим число равно 0. Тогда прибавляешь к переменной А единицу. Если число - не 0, то присваиваешь переменной B значение переменной A, тем самым сохраняя результат, при условии, что предыдущее B < A, и опять приравниваешь А к нулю. В итоге после прокрутки всех чисел в переменной B должно сохраниться максимальное число нулей, идущих подряд. Оно там не сохранится в одном случае - если максимальное число нулей шло в конце, и после него уже не было ненулевого числа. Так что после выполнения цикла ещё раз сравниваешь A и B и переписываешь B, если А больше. Выводишь B.
Последний раз редактировалось Apo. 01.04.2007 в 18:38. |
![]() |
![]() |
![]() |
#4 |
Местный
|
Синтаксис Паскаля не помню. Предлагаю решение на С++ Самое лёгкое и очень неэффективное. Пишу с коментами. Думаю не составит труда все перевести нс интаксис Паскаля.
PHP код:
|
![]() |
![]() |
![]() |
#5 |
Местный
|
Решение неплохое, но зачем вводить второй массив и выполнять поиск по нему максимального элемента, если можно обойтись одной переменной и условием в цикле, которое будет её менять? И что эта программа будет делать в вышеописанном случае, когда самое большое число нулей будет в конце массива? Слегка модифицированный код:
int main() { int mas1[25],i,max=0,maximum=0;// cout<<"Enter..."<<endl; for(i=0;i<25;i++) cin>>mas1[i]; for(i=0;i<25;i++) { if (mas1[i]==0) max++; else { if (max>=maximum) maximum=max; max=0; } } if (max>=maximum) maximum=max; cout<<maximum<<endl; getch(); return 0; } По-моему гораздо короче получилось... Последний раз редактировалось Apo. 02.04.2007 в 01:31. |
![]() |
![]() |
![]() |
#6 |
lsd made me a prostitute
|
Решение неплохое, но зачем вводить второй цикл и выполнять поиск в нем максимального элемента, если можно обойтись одним циклом и условием в цикле, которое будет находить максимум? Слегка модифицированный код:
const int max_num = 25; int main() { int number, i,max=0,maximum=0; cout<<"Enter..."<<endl; for(i=0;i<max_num;++i) { cin>>number; if (number==0) ++max; else { if (max>maximum) maximum=max; max = 0; } } if (max>=maximum) maximum=max; cout<<maximum<<endl; getch(); return 0; } По-моему гораздо короче получилось... |
![]() |
![]() |
![]() |
#7 |
lsd made me a prostitute
|
2kainen:Решение неплохое, но зачем такой длинный цикл? Слегка модифицированный код:
const int max_num = 25; int main() { int number, i,max=0,maximum=0; cout<<"Enter..."<<endl; for(i=0;i<max_num;++i) { cin>>number; if (number==0) ++max; else { if (max>maximum) maximum=max; max = 0; if (max_num - i <= maximum) break; } } if (max>=maximum) maximum=max; cout<<maximum<<endl; getch(); return 0; } По-моему гораздо оптимальнее получилось... |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загадки и задачки | shibzdik | Юмор | 390 | 03.10.2015 07:54 |
Задачки на С++ | M@GIC | Программирование и разработка | 23 | 04.08.2009 15:35 |