Форум программистов, компьютерный форум CyberForum.ru

Рефлизация циклических действий - C++

Восстановить пароль Регистрация
 
Iterator
Сообщений: n/a
10.12.2010, 02:38     Рефлизация циклических действий #1
Формулировка. В массиве A(M) найдите максимальное подмножество
последовательных чисел, составленное из соседних элементов массива.

Тест. -7; 1; 3; 4; -2; 2; 5; 6. Результат. 3; 4 и 5; 6.

Формат входных данных. [M] [1-й элемент массива A] [2-й элемент массива A] и т.д. Элементы массива – целые числа в диапазоне ±1000. M - целое число в диапазоне [2, 20].

Формат выходных данных. [элемент массива A, входящий в первое подмножество] [пробел] другой элемент массива A, входящий в первое подмножество] и т.д. [перевод строки] [элемент mассива A, входящий во второе подмножество] [пробел] [другой элемент массива A, входящий вo второе подмножество] и т.д.

Рекомендуемое кол-во циклических операторов (без ввода данных): 3
Сделать на си
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.12.2010, 02:57     Рефлизация циклических действий #2
Цитата Сообщение от Iterator Посмотреть сообщение
В массиве A(M) найдите максимальное подмножество
По какому принципу? Не очень понятно.
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 403
Записей в блоге: 2
10.12.2010, 03:05     Рефлизация циклических действий #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <conio.h>
int main()
{
  int A[20];
  int L[20] = {0};
  int M;
  int i,j;
  int max;
  bool flag;
 
  scanf("%d",&M);
  if(M>20 || M<2)  printf("Invalid input data!!!");
  flag = true;  // 
///////////////////////////////////////////////////////////
  for (i=0;i<M;i++)
  {
    scanf("%d",&A[i]);
    flag = abs(A[i])<=1000;
  }
  if(!flag)
    printf("Invalid input data!!!");
  else
  {
    i=0;
    j=0;
    max=0;
//////////////////////////////////////////////////////////
    while(i<M-1)
    {
      if(A[j+1]==A[j]+1)
      {
        j++;
        L[i]=j-i+1;
        if (L[i]>max) 
          max=L[i];
      }
      else
      {
        j++;
        i=j;
      }
    }
    if(max!=0)
    {
      for(i=0;i<M;i++)
      {
        if(L[i]==max)
        {
          printf("\n");
          for(j=i;j<L[i];j++)
             printf("%d",A[j]);
        }
      }
    }
    else
       puts("no solution");
  }
  return 0;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.12.2010, 03:19     Рефлизация циклических действий #4
VASSUV, Что-то как-то не очень работает. Вы сами попробуйте ввести :

Цитата Сообщение от Iterator Посмотреть сообщение
Тест. -7; 1; 3; 4; -2; 2; 5; 6. Результат. 3; 4 и 5; 6.
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 403
Записей в блоге: 2
10.12.2010, 03:28     Рефлизация циклических действий #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
int main()
{
  int A[20];
  int L[20] = {0};
  int M;
  int i,j;
  int max;
  bool flag;
 
  scanf("%d",&M);
  if(M>20 || M<2)  printf("Invalid input data!!!");
  flag = true;  // 
///////////////////////////////////////////////////////////
  for (i=0;i<M;i++)
  {
    scanf("%d",&A[i]);
    flag = abs(A[i])<=1000;
  }
  if(!flag)
    printf("Invalid input data!!!");
  else
  {
    i=0;
    j=0;
    max=0;
//////////////////////////////////////////////////////////
    while(i<M-1)
    {
      if(A[j+1]==A[j]+1)
      {
        j++;
        L[i]=j-i+1;
        if (L[i]>max) 
          max=L[i];
      }
      else
      {
        j++;
        i=j;
      }
    }
    if(max!=0)
    {
      for(i=0;i<M;i++)
      {
        if(L[i]==max)
        {
          printf("\n");
          for(j=i;j<i+L[i];j++)
             printf("%d",A[j]);
        }
      }
    }
    else
       puts("no solution");
  }
  getch();
  return 0;
}
Yandex
Объявления
10.12.2010, 03:28     Рефлизация циклических действий
Ответ Создать тему
Опции темы

Текущее время: 08:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru