• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Найдите ошибку

Sekmegalife

Ученик
Регистрация
22 Ноя 2009
Сообщения
4
Реакции
0
Баллы
0
Найдите ошибку

Дана последовательность a1,...,an (n<=100) действительных чисел. выделить из нее знакопостоянную подпоследовательность наибольшей длины и упорядочить ее по убыванию.
#include <stdio.h>
#include <conio.h>
void main()
{
int q,p,a,b,i,j,N,c,Cmax,mas[100],mas1[50]={0};
clrscr();
printf("N=");
scanf("%d",&N);

for(i=0;i<N;i++)
scanf("%d",&mas);
a=0;b=0;c=0;Cmax=0;
for(i=0;i<N;i++)
if(mas*mas[i+1]<=0)
{
if(c==0)
a=i;

c=c+1;
if (c>Cmax)
{
b=i;
Cmax=c;
}
}
else
c=0;


for(i=0,j=a;j<=b;i++,j++)
{
mas1=mas[j];

}
for(i=0; i<Cmax-1;i++)
for(j=0;j<Cmax;j++)
if (mas1[j]<mas1[j+1])
{
p=mas1;
mas1=mas1[i+1];
mas1[i+1]=p;
}
for(i=0;i<Cmax;i++)
printf("%d\t",mas1);
getch();
}

В общем неверно сохраняется конец подпоследовательности, точнее ошибка где-то в a=i и b=i, помогите найти...
 
Назад
Сверху