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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 08:59   #1
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
Печаль C++. Массивы

Код:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define max 100
void gen( int k, int h, int j, int x[max]);
void out (int k, int x[max]);
void BubbleSortInd (int k, int x[max]);
void BubbleSort (int k, int x[max]);
void main()
{
int t[max],n,a,b;
do
{
printf ("\nВведите кол-во элементов массива n (n<=50): ");
scanf ("%d",&n);
}
while (n>max);
printf ("Введите a и b: ");
scanf ("%d%d",&a,&b);
gen(n,a,b,t);
printf ("Сгенерированн массив: \n");
out(n,t);
printf("\nПолученный: \n");
BubbleSortInd(n,t);
out(n,t);
}

void gen( int k, int a, int b, int x[max])
{
int i;
srand (time(NULL)*1000);
for (i=0;i<k;i++)
{

x[i]=(rand()*1.0/(RAND_MAX)*(a-b)+b);

}
}

void out (int k, int x[max])
{
int i;
for (i=0;i<k;i++)
printf ("%d ",x[i]);

}



void BubbleSortInd (int k, int x[max])
{
int i,tek,mx,el;
el = 0;
tek=mx=1;
for(i=1; i<=k+1; i++)
if(i==k || x[i]!=x[i-1])
{
if(tek>mx) { mx = tek; el = i-1; }
tek = 1;
}
else tek++;
++k;
for(i=k+1; i>=el+1; i--)
x[i] = x[i-1];
x[el+1] = x[el];
}

Здесь нужно увеличить каждую максимальную серию на один элемент!
Например:
Был массив==>
x[0]=4
x[1]=1
x[2]=9
x[3]=9
x[4]=9
x[5]=6
x[6]=6
x[7]=9
x[8]=9
x[9]=9
А надо:
x[0]=4
x[1]=1
x[2]=9
x[3]=9
x[4]=9
x[5]=9
x[6]=6
x[7]=6
x[8]=9
x[9]=9
x[10]=9
x[11]=9
Программист без пива, как спирт без пробки - выдохнется___________-

Последний раз редактировалось Stilet; 10.06.2009 в 09:39.
osichev вне форума Ответить с цитированием
Старый 10.06.2009, 09:26   #2
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

а вот я не понял задачи... да и как вообще можно увеличивать количество элементов? было вроде 9, стало - 11. Это как? Скажи само задание.
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума Ответить с цитированием
Старый 10.06.2009, 09:28   #3
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

Код:
void BubbleSortInd (int k, int x[max])
{
int i,tek,mx,el;
el = 0;
tek=mx=1; // tek - длина текущей серии
// mx - максимальная длина
for(i=1; i<=k+1; i++)  // идем до конца массива
 if(i==k || x[i]!=x[i-1])  // если достигли конца массива или
 // текущий элемент не равен предыдущему
     {
 
  if(tek>mx) // если текущая серия длиннее максимальной,
       {
    mx = tek;  // запоминаем длину
    el = i-1;
      }       // и позицию последнего элемента в серии
   
 tek = 1;  // сбрасываем длину текущей серии (т.к. уже  перешли к другой)
  
     }
 else tek++;
 
++k; // увеличиваем размер массива, т.к. сейчас
 // добавим еще один элемент 
  
    for(i=k+1 ; i>=el+1; i--) // идем от конца к последнему элементу самой длинной серии
 x[i] = x[i-1]; // текущий элемент = предыдущему (сдвигаем часть массива вправо)
 x[el+1] = x[el];  // теперь добавляем еще один элемент     
               
   }
Здесь у меня не получается увеличить массив и добавить к каждой серии элемент

У меня только добавляется к одной серии,а массив не увеличивается

Серия-это группа подряд идущих одинаковых элементов,а длина-это количество этих элементов(длина может быть равна 1 ).Увеличить все серии наибольшей длины на один элемент.
Программист без пива, как спирт без пробки - выдохнется___________-

Последний раз редактировалось Stilet; 10.06.2009 в 09:41.
osichev вне форума Ответить с цитированием
Старый 10.06.2009, 09:40   #4
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Объясни вот это:
Цитата:
x[0]=4
x[1]=1
x[2]=9
x[3]=9
x[4]=9
x[5]=6
x[6]=6
x[7]=9
x[8]=9
x[9]=9
А надо:
x[0]=4
x[1]=1
x[2]=9
x[3]=9
x[4]=9
x[5]=9
x[6]=6
x[7]=6
x[8]=9
x[9]=9
x[10]=9
x[11]=9
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума Ответить с цитированием
Старый 10.06.2009, 09:42   #5
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

В первом-это полученный массив после генерации
Второе-после подстановки элементов
Это я написал пример как будет работать программа
Программист без пива, как спирт без пробки - выдохнется___________-
osichev вне форума Ответить с цитированием
Старый 10.06.2009, 09:55   #6
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

?????????

?????????
?????????7
Программист без пива, как спирт без пробки - выдохнется___________-
osichev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Представить математическую запись (+описание решения) фрагмента программы и вычислить значение переменной (Kate) Помощь студентам 7 18.10.2011 16:52
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Массивы Seryoga Помощь студентам 9 08.12.2009 16:20
Массивы С++ Nina+ Помощь студентам 2 19.03.2009 11:44