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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 20:50   #1
Иван46
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 1
По умолчанию Задача с одномерным массивом.

Помогите решить задачу. Проблемы с элементами отбора и замены ячеек массива.

В одномерном массиве A=(a1, а2, ..., аn) группу, содержащую наибольшее число равных элементов, заменить на максимальный элемент этого массива. После корректировки массив может содержать меньше элементов, чем прежде. Элементы массива вводить с клавиатуры.

Код:
program lab5_var8;
Uses crt;
type arr=array[1..15] of integer;
var a:arr;
i,j,n,z,k: integer;
i_max: byte;
max:integer;
begin

{$R+}
clrscr;
n:=15;
writeln(' ishodnii massiv ');
for i:=1 to n do
Readln (a[i]);
begin
 end;
 writeln;

 max:=a[1];
 i_max:=1;
 for i:=2 to n do
   if a[i]>max then
   begin
    max:=a[i];
    i_max:=a[i];
    end;


    i:=1;
    z:=0;
    for i:=1 to n do
        if a[i]=a[i+1] then
        begen
          z:=z+1;
         

      
      
         for j:=i to n-1 do
             a[j]:=a[j+1];
         n:=n-1;
      end
      else
       i:=i+1;
      end;
      writeln(' rezultat obrabotki ');
      for i:=1 to n do
       write(a[i]:4);
      readln;
      {$R-}
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 27.04.2012 в 14:38.
Иван46 вне форума Ответить с цитированием
Старый 25.04.2012, 22:11   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

оформляй код! (кнопка #)
Poma][a вне форума Ответить с цитированием
Старый 27.04.2012, 11:19   #3
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Паскаль не знаю. Попытаюсь помочь идеей. Думаю, что реализуете сами.
1. В части, где определяете значение мах,
Код:
begin
max:=a[i];
i_max:=i; {думаю, что д.б. так}
end;
далее, для нахождения группы, содержащих кол-во одинаковых элементов -z
zmax=0 - мах кол-во повтор элементов
nmax=0 - позиция первого повторяющегося элемента
в цикле от 1 до n
if a[i]=a[i+1]
для организации нового цикла - элемент k=i+2;
количество равных элементов=1
цикл до тех пор пока a[k] равно a[i]
количество равных элементов z+1
k+1
конец цикла пока
если количество равных элементов больше предыдущих if z>zmax
тогда
zmax=z
nmax=i
конец второго если
i=k
конец первого если
конец цикла for

Для замены меняете элемент a[nmax] на max
и организовываете цикл, в котором сдвигаете все элементы, с позиции
nmax+zmax на (nmax+1), nmax+zmax+1 на (nmax+2) и т.д.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с одномерным массивом. micr0 Помощь студентам 0 08.12.2011 11:46
Программа с одномерным массивом! swatsam Общие вопросы C/C++ 24 12.01.2011 19:47
Задача с одномерным массивом. Malyshka Помощь студентам 6 13.12.2010 00:23