Форум Gatchina OnLine  

Вернуться   Форум Gatchina OnLine > Hard&Soft > Программирование и разработка

Программирование и разработка Обсуждение вопросов программирования

Ответ
 
Опции темы Опции просмотра
Старый 01.04.2007, 15:20   #1
Insya
online();
 
Аватар для Insya
 
Регистрация: 24.01.2006
Адрес: Гатчина

Нарушения:[Посмотреть]
а че-то вообще не поняла в чем проблема, особенно во второй задаче.. в чем конкретно у тебя загвоздка?
Insya вне форума   Ответить с цитированием
Старый 01.04.2007, 15:37   #2
Mr_Anderson
[Alternative] Rock Member
 
Аватар для Mr_Anderson
 
Регистрация: 23.01.2006
Адрес: Linkin Park
Jabber: mishka_anderson@jabber.ru
p2p: воистину p2p

Нарушения:[Посмотреть]
Цитата:
Сообщение от Insya Посмотреть сообщение
а че-то вообще не поняла в чем проблема, особенно во второй задаче.. в чем конкретно у тебя загвоздка?
В первой ясно как задать программе определять нули, но как сделать так, чтобы она считала именно последовательности и выводила количество нулей в ней. У меня получалось так, что программа считала все нули в общей последовательности чисел. Вроде ясно изъяснился.
Во второй понятно, что с использованием цикла WHILE, но хоть ты тресни, не получалось.
__________________
Fire Walk With Me
И если завтра проснёшься - попробуй влюбиться! Как звезда рок-н-ролла...
Mr_Anderson вне форума   Ответить с цитированием
Старый 01.04.2007, 18:32   #3
Apo
Местный
 
Аватар для Apo
 
Регистрация: 24.01.2006

Нарушения:[Посмотреть]
Насчёт первой задачи. Как реализовать это на ТП, я не знаю, так как его не изучал, но идея такая: Создаёшь переменную, которая будет выполнять роль счётчика, допустим A. Приравниваешь её к 0. Создаёшь другую переменную, в которой будет сохраняться максимальный результат, допустим B. Её тоже приравниваешь к 0. Создаёшь цикл, который прокручивает все числа на предмет 0 - не 0. Допустим число равно 0. Тогда прибавляешь к переменной А единицу. Если число - не 0, то присваиваешь переменной B значение переменной A, тем самым сохраняя результат, при условии, что предыдущее B < A, и опять приравниваешь А к нулю. В итоге после прокрутки всех чисел в переменной B должно сохраниться максимальное число нулей, идущих подряд. Оно там не сохранится в одном случае - если максимальное число нулей шло в конце, и после него уже не было ненулевого числа. Так что после выполнения цикла ещё раз сравниваешь A и B и переписываешь B, если А больше. Выводишь B.

Последний раз редактировалось Apo. 01.04.2007 в 18:38.
Apo вне форума   Ответить с цитированием
Старый 01.04.2007, 19:11   #4
M@GIC
Местный
 
Аватар для M@GIC
 
Регистрация: 23.01.2006

Нарушения:[Посмотреть]
Синтаксис Паскаля не помню. Предлагаю решение на С++ Самое лёгкое и очень неэффективное. Пишу с коментами. Думаю не составит труда все перевести нс интаксис Паскаля.
PHP код:

int main
()
{
    
int mas1[25],mas2[25],i,max=0,maximum=0;// 
    
cout<<"Enter..."<<endl;
    for(
i=0;i<10;i++)
        
cin>>mas1[i]; вводим элементы массива

    
for(i=0;i<10;i++)
    {
        if (
mas1[i]==0если нуль
        
{
            
max++; то инкремируем на еденицу
                   mas2
[i]=0суём в другой массив 0.
        
}
        else
        {
            
mas2[i]=maxесли не нуль то скидываем во второй массив макс
            max
=0обнуляем
        
}
    }
          
//выполним поиск по 2 рому массиву наибольшег числа
    
maximum=mas2[0]; 
    for(
i=0;i<10;i++)
    {
        if (
mas2[i]>maximum)
        {
                   
maximum=mas2[i];

        }
    }
    
cout<<maximum<<endl//выведем максимальный элемент
    
getch();
    return 
0;

M@GIC вне форума   Ответить с цитированием
Старый 02.04.2007, 01:23   #5
Apo
Местный
 
Аватар для Apo
 
Регистрация: 24.01.2006

Нарушения:[Посмотреть]
Решение неплохое, но зачем вводить второй массив и выполнять поиск по нему максимального элемента, если можно обойтись одной переменной и условием в цикле, которое будет её менять? И что эта программа будет делать в вышеописанном случае, когда самое большое число нулей будет в конце массива? Слегка модифицированный код:

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.
Apo вне форума   Ответить с цитированием
Старый 02.04.2007, 17:39   #6
kainen
lsd made me a prostitute
 
Аватар для kainen
 
Регистрация: 24.01.2006

Нарушения:[Посмотреть]
Решение неплохое, но зачем вводить второй цикл и выполнять поиск в нем максимального элемента, если можно обойтись одним циклом и условием в цикле, которое будет находить максимум? Слегка модифицированный код:

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;
}

По-моему гораздо короче получилось...
kainen вне форума   Ответить с цитированием
Старый 02.04.2007, 17:47   #7
kainen
lsd made me a prostitute
 
Аватар для kainen
 
Регистрация: 24.01.2006

Нарушения:[Посмотреть]
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;
}

По-моему гораздо оптимальнее получилось...
kainen вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загадки и задачки shibzdik Юмор 390 03.10.2015 07:54
Задачки на С++ M@GIC Программирование и разработка 23 04.08.2009 15:35


Текущее время: 15:35. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot