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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 21:07   #1
kochet-kov
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 19
Печаль работа с последовательностями и масивами (С++)

помогите пожалуйста хоть чем-нибудь,в понедельник сдавать, а я даже не знаю как подступиться к задаче...

Размерности массивов вводить с клавиатуры. Элементы массивов по желанию пользователя вводить с клавиатуры или генерировать случайным образом в заданных пределах. Исходные данные и результаты выводить на экран дисплея в табличном виде.
Удалить в заданном массиве «лишние» элементы так, чтобы оставшиеся образовали возрастающую последовательность наибольшей длины
kochet-kov вне форума Ответить с цитированием
Старый 17.12.2010, 21:20   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

1. Тебе надо найти максимальную последовательность , то есть посчитать количество элементов , которые могут образовать эту последовательность . Как это сделать :

Тоже самое , как ты делаешь сортировку пузырьком , тебе надо будет 2 for оператора . Потом ты выбираешь элемент , запоминаешь его положение и начинаешь считать , сколько элементов стоящих за ним , больше него или меньше . Потом переходишь к следующему элементу и опять считаешь , если у тебя получилось число больше , то запомни с какого элемента началась последовательность и так проверь все элементы , в конце у тебя будем место начало последовательности . Теперь надо еще раз пройти по твоему массиву и до сохраненного элемента , удалить все элементы , а начиная с него удалять все элементы которые не идут по возрастанию .
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 17.12.2010, 21:27   #3
kochet-kov
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 19
По умолчанию

О, спасибо огромное, вроде суть уловил, теперь попробую реализовать это в программе
kochet-kov вне форума Ответить с цитированием
Старый 17.12.2010, 21:38   #4
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от kochet-kov Посмотреть сообщение
О, спасибо огромное, вроде суть уловил, теперь попробую реализовать это в программе
Если будут запарки , то выкладывай код и пиши что не получается , попробую помочь
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 18.12.2010, 16:14   #5
kochet-kov
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 19
По умолчанию

в общем...вот что я пока сделал...
проблемы с нахождением количества элементов, больших данного
Код:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include <stdlib.h>
#include "time.h"


int _tmain(int argc, _TCHAR* argv[])
{
int i,n=0,m=0,  answ=0, *kolvo_elementov_bolshih_dannogo ;
while (n<=0)
	{
		printf("Vvedite kol-vo elenentov v massive :" );
		scanf("%d",&n);
}
   
    kolvo_elementov_bolshih_dannogo = new int [n];
    int* arr = new int [n];

	while (!((answ==1) || (answ==2)))
	{
		printf("Zadat elementi sluchaino?(1/2) ");
		scanf("%d",&answ);
	}
	for (i=0; i<n; i++)
	{
		if (answ==1)
		{
		printf("Vvedite %d elenenti = ",i+1);
		scanf("%d", &arr[i]);
		}
          else
		{
			arr[i]=rand();
			printf("%d : %d\n", i+1,arr[i]);
		}
	
	}
	
			for (int i=0; i<n;i++)
		{
			int k=0, v=0;
			if (arr[k]<arr[i]) {
				++v; 
				kolvo_elementov_bolshih_dannogo[i]=v;
				++k;
			}
                printf(" kolvo_elementov_bolshih_dannogo[%i]=&i\n ",i+1,kolvo_elementov_bolshih_dannogo[i]); 
				}
	
getch();
return 0;
}

Последний раз редактировалось Stilet; 18.12.2010 в 20:13.
kochet-kov вне форума Ответить с цитированием
Старый 18.12.2010, 16:30   #6
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Вот это :

Код:
for (int i=0; i<n;i++)
{
int k=0, v=0;
if (arr[k]<arr[i]) {
++v; 
kolvo_elementov_bolshih_dannogo[i]=v;
++k;
}
printf(" kolvo_elementov_bolshih_dannogo[%i]=&i\n ",i+1,kolvo_elementov_bolshih_danno go[i]); 
}
Замени на это :

Код:

for (int i=0; i<n;i++)
{
   int k=i, v=0;
   for (int j=i; j< n ; j++ )
    if (arr[k]<arr[j]) 
   {
      ++v; 
      kolvo_elementov_bolshih_dannogo[i]=v;
      k=j;
    }
    printf(" kolvo_elementov_bolshih_dannogo[%i]=&i\n ",i+1,kolvo_elementov_bolshih_dannogo[i]);
}
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 18.12.2010, 16:36   #7
kochet-kov
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 19
По умолчанию

получается вот это
Цитата:
Vvedite kol-vo elenentov v massive :5
Zadat elementi sluchaino?(1/2) 2
1 : 41
2 : 18467
3 : 6334
4 : 26500
5 : 19169
kolvo_elementov_bolshih_dannogo[1]=&i
kolvo_elementov_bolshih_dannogo[2]=&i
kolvo_elementov_bolshih_dannogo[3]=&i
kolvo_elementov_bolshih_dannogo[4]=&i
kolvo_elementov_bolshih_dannogo[5]=&i
сделал набросок дальнейших операций,но без решения этой проблему не могу продвинуться дальше((((

Последний раз редактировалось Stilet; 18.12.2010 в 20:13.
kochet-kov вне форума Ответить с цитированием
Старый 18.12.2010, 18:39   #8
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от kochet-kov Посмотреть сообщение
сделал набросок дальнейших операций,но без решения этой проблему не могу продвинуться дальше((((
Код:
printf(" kolvo_elementov_bolshih_dannogo[%i]=%i\n ",i,kolvo_elementov_bolshih_dannogo[i]);
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 18.12.2010, 18:53   #9
kochet-kov
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 19
По умолчанию

спасибо большое)...буду решать дальше

в общем получился у меня вот такой бред...
Код:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include <stdlib.h>
#include "time.h"


int _tmain(int argc, _TCHAR* argv[])
{
int i,g,n=0,m=0,  answ=0, *kolvo_elementov_bolshih_dannogo ;
while (n<=0)
	{
		printf("Vvedite kol-vo elenentov v massive :" );
		scanf("%d",&n);
}
   
    kolvo_elementov_bolshih_dannogo = new int [n];
    int* arr = new int [n];

	while (!((answ==1) || (answ==2)))
	{
		printf("Zadat elementi sluchaino?(1/2) ");
		scanf("%d",&answ);
	}
	for (i=0; i<n; i++)
	{
		if (answ==1)
		{
		printf("Vvedite %d elenenti = ",i+1);
		scanf("%d", &arr[i]);
		}
          else
		{
			arr[i]=rand();
			printf("%d : %d\n", i+1,arr[i]);
		}
	
	}
	
			for (int i=0; i<n;i++)
       {
   int k=i, v=0;
   for (int j=i; j< n ; j++ )
    if (arr[k]<arr[j]) 
   {
       ++v; 
      kolvo_elementov_bolshih_dannogo[i]=v; 
    }
	else  kolvo_elementov_bolshih_dannogo[i]=0;

	printf(" kolvo_elementov_bolshih_dannogo[%i]=%i\n ",i+1,kolvo_elementov_bolshih_dannogo[i]);


}

      int index_pervogo_elementa_posledovatelnosti, maxim;
       
		   for (int i=0; i<n;i++)
         for( maxim =  kolvo_elementov_bolshih_dannogo[i],i=1; i<n; ++i)
		 {if(maxim < kolvo_elementov_bolshih_dannogo[i]){
           
	                      maxim = kolvo_elementov_bolshih_dannogo[g];
	                     index_pervogo_elementa_posledovatelnosti=i;
		 }
		 }   printf("Max of elements = %lf\n", maxim);
		    printf("index_pervogo_elementa_posledovatelnosti= %d\n", index_pervogo_elementa_posledovatelnosti);
          
	


int *iskomaya_posledovatelnost;
         for (int i=0; i<n;i++)
	 {
               int p,o,e, w = index_pervogo_elementa_posledovatelnosti;
               p=n-w;
               o=w+1;
               for (int e =w; e< p ; e++ )


              iskomaya_posledovatelnost = new int [p];
  
              if (arr[e]<arr[o]) 
              {   iskomaya_posledovatelnost[e]=arr[w];
               ++e; 
	           ++o;
			   printf("iskomaya_posledovatelnost=%d\n ", e);
    
    }

		 }
	
getch();
return 0;
}

Последний раз редактировалось Stilet; 19.12.2010 в 14:44.
kochet-kov вне форума Ответить с цитированием
Старый 19.12.2010, 12:52   #10
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от kochet-kov Посмотреть сообщение
в общем получился у меня вот такой бред...
Программа делает то , что ты хотел ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с масивами. Dukem Помощь студентам 3 25.09.2010 21:43
Работа с последовательностями kostyan142 Помощь студентам 2 07.07.2010 10:58
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
работа с последовательностями (С++) JIyHaTuK Помощь студентам 0 06.10.2009 17:13