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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2011, 02:43   #1
L.M.
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 16
Вопрос Одномерные массивы; на ЯП Си, среда – Borland C++5.02

Здравствуйте!
Помогите, пожалуйста, выполнить следующее задание:
Задать целочисленный массив размером N. Поменять местами серии с минимальной и максимальной длиной. Если таких серий несколько, то любые из них.
Серия – последовательность одинаковых элементов в массиве. Один элемент – серия с длиной равной 1.

Заранее спасибо всем кто откликнется!!!
L.M. вне форума Ответить с цитированием
Старый 28.06.2011, 11:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А у самого тебя что-нибудь получилось то?
Покажи хотя бы как вводишь массивы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.06.2011, 19:15   #3
L.M.
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 16
Лампочка

ну естественно массив я понимаю как ввести)))

Код:
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <alloc.h>
void main(void)
{

int *a;
int n,i;
   puts("\n Vvedite n:");  scanf("%d",&n);
   a =(int*)calloc(n,sizeof(int));
	clrscr();  randomize();
   	puts("\n Ishodnyj massiv:\n");
      for (i=0;i<n;i++)
      {
       a[i]=random(6)-3;
       printf("%d ",a[i]);
      }




      free(a);
      getch();
}
проблема в том,что я не понимаю как действовать чтобы найти максимальную и минимальную серии...отдельные массивы вводить или кто-то иначе..вобщем предположения есть,но реализовать их пока не получается...
да и как поменять местами эти серии пока толком не разобралАСЬ

Последний раз редактировалось Stilet; 28.06.2011 в 20:25.
L.M. вне форума Ответить с цитированием
Старый 28.06.2011, 19:51   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
    int maxcount = 1, maxindex = 0, count = 1, index = 0;
    for (int i = 0; i < n - 1; i++)
    {
        if (Array[i] == Array[i+1])
        {
            if (count++ == 1)
                index = i;
        }
        else
        {
            if (count > maxcount)
            {
                maxcount = count;
                maxindex = index;
            }
            count = 1;
        }
    }
Поиск максимальной серии. maxcount -- длина серии, maxindex -- номер первого элемента серии (начиная с 0, естественно), n -- размер массива.
Дальше самА -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 28.06.2011, 20:15   #5
L.M.
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 16
По умолчанию

ааа...как просто))
Спасибо)
буду домучивать=)
L.M. вне форума Ответить с цитированием
Старый 28.06.2011, 23:25   #6
L.M.
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 16
Радость

Осталось поменять серии местами)

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
void main(void)
{
int *a;
int n,i;
   puts("\n Vvedite n:");  scanf("%d",&n);
   a =(int*)calloc(n,sizeof(int));
	clrscr();
   randomize();
   	puts("\n Ishodnyj massiv:\n");
      for (i=0;i<n;i++)
      {
       a[i]=random(2)-0;
       printf("%d ",a[i]);
      }
int max_count=1, max_index=0, count=1, index=0;
int min_count=n, min_index=0;
    for (int i=0; i<n; i++)
    {
        if (a[i]==a[i+1])
       	   count++;
        else
        {
            if (count>max_count)
            {
            	max_count=count;
               max_index=index;
            }
             if (count<min_count)
            {
            	min_count=count;
               min_index=index;
            }
            count=1;
            index=i+1;
        }
    }
printf("\n\n max=%d,i=%d",max_count,max_index);
printf("\n\n min=%d,i=%d",min_count,min_index);
      free(a);
      getch();
}
может кто-нибудь ещё поможет добить задачу?
L.M. вне форума Ответить с цитированием
Старый 29.06.2011, 13:00   #7
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию

Для начала замените
Код:
randomize();
на
Код:
srand((unsigned)time(&t));
, переменная t типа time_t, то есть где то в начале должно быть
Код:
 time_t t;
Затем
Код:
a[i] = random(2)-0;
на
Код:
a[i] = rand() % 2;
добавьте
Код:
#include <time.h>
Для доступа к типу time_t и функции time.
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/

Последний раз редактировалось hardorsoft; 29.06.2011 в 13:04.
hardorsoft вне форума Ответить с цитированием
Старый 29.06.2011, 13:09   #8
L.M.
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 16
По умолчанию

не поняла проблемы...зачем менять? и зачем добавлять?...массив заполняется генератором случайных чисел...и зачем мне функция,если я не ошибаюсь,для измерении времени выполнения?
L.M. вне форума Ответить с цитированием
Старый 29.06.2011, 13:15   #9
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию

Код:
if(max_count >= min_count)
{
  for(i = 0; i < max_count; i++)
  {
    temp = a[max_index+i];
    a[max_index+i] = a[min_index+i];
    a[min_index+i] = temp;
  }
  else
  {
    тоже самое только наоборот :-);
  }
}
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/

Последний раз редактировалось hardorsoft; 29.06.2011 в 13:25.
hardorsoft вне форума Ответить с цитированием
Старый 29.06.2011, 13:15   #10
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию

if(max_count >= min_count)
{
for(i = 0; i < max_count; i++)
{
temp = a[max_index+i];
a[max_index+i] = a[min_index+i];
a[min_index+i] = temp;
}
else
{
тоже самое только наоборот :-);
}
}

Простите что два раза не могу найти как удалить сообщение.
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/

Последний раз редактировалось hardorsoft; 29.06.2011 в 13:27.
hardorsoft вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Borland Pascal одномерные массивы maksim-2804 Паскаль, Turbo Pascal, PascalABC.NET 1 20.06.2011 16:15
одномерные массивы в c++ LovingDaisy Общие вопросы C/C++ 4 25.03.2010 23:14
Одномерные массивы maloy-rom Общие вопросы C/C++ 11 23.12.2009 18:47
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Одномерные Массивы ТРОЯН=) Помощь студентам 4 03.02.2009 00:11