Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2010, 07:59   #1
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание С++ Массивы

Здравствуйте дамы и господа!
Помогите пожалуйста найти ошибку в программе!
И скажите как пошагово проверить программу?

Написать программу нахождения самой длинной не убывающей подпоследовательности в последовательности. Брать лишь подряд расположенные элементы.
Код:
void two(){
	int a[]={5,1,2,1,3,4,5,6,7,9};
	int i;
	int n=sizeof(a)/sizeof(int); 
	for (i=0;i<n;i++){printf("\na[%d]=%d",i,a[i]);}  //распечатка массива

	int konec=0, nachalo=0,Mkonec=0,Mnachalo=0,dlina=0,max=0;
	for (i=0;i<n-1;i++){
		if (a[i]<a[i+1]){konec=i+1;printf("\n %i",i);
		if (i=n-2){
			dlina=konec-nachalo+1;
			if (dlina>max){
			Mnachalo=nachalo;
			Mkonec=konec;
			max=Mkonec-Mnachalo+1;
			}
			else{Mkonec=konec;
			     max=Mkonec-Mnachalo+1;
			}
		}
		}
		else {dlina=konec-nachalo+1;printf("\n *%i",i);
		      if (dlina>max){
				  Mnachalo=nachalo;
				  Mkonec=konec;
				  max=Mkonec-Mnachalo+1;
				  nachalo=i+1; konec=i+1;
			  }
		}
	}
printf("\nMn=%d Mk=%d",Mnachalo,Mkonec);
    printf("\nmax=%d",max);
	for (i=Mnachalo;i<=Mkonec;i++){printf("\na[%d]=%d",i,a[i]);}
}

Последний раз редактировалось sir.andrey; 02.10.2010 в 08:43.
sir.andrey вне форума Ответить с цитированием
Старый 02.10.2010, 09:14   #2
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание

почему то в цикл for заходит только 2 раза...
не могу понять почему
-----------------------------------------------------
Вот я переписал, но тщетно (((
Все равно в цикл заходит два раза(((

Код:
    for (i=0;i<n-1;i++){printf("\nfakfjasfjlkl");
        if (a[i]<a[i+1]){
            konec=i+1;
            if(i=n-2){
                dlina=konec-nachalo+1;
                if(dlina>max){
                    Mnachalo=nachalo;
                    Mkonec=konec;
                    max=Mkonec-Mnachalo+1;
                }
            }
        }
        else{printf("\n)))))((((((((((");
            dlina=konec-nachalo+1;
            if(dlina>max){
                Mnachalo=nachalo;
                Mkonec=konec;
                max=Mkonec-Mnachalo+1;
                nachalo=i+1; konec=i+1;
            }
        }
    }
    

printf("\nMn=%d Mk=%d",Mnachalo,Mkonec);
    printf("\nmax=%d",max);
    for (i=Mnachalo;i<=Mkonec;i++){printf("\na[%d]=%d",i,a[i]);}
}

Последний раз редактировалось sir.andrey; 02.10.2010 в 09:29.
sir.andrey вне форума Ответить с цитированием
Старый 02.10.2010, 10:05   #3
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость !!!!!!!!!!!!!!!!!!

Все разобрался, помощь не требуется!!!!
sir.andrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
Массивы Andrey_j07 Помощь студентам 4 02.05.2010 21:12
С++, Массивы, динамические массивы. -Sunshine- Помощь студентам 1 19.04.2010 02:17
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12