0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 5
1

Выручайте! В массиве A=(a1,a2,a3.an) все элементы, равные нулю, нужно поставить сразу после максимального элемента данного массива

29.11.2012, 17:24. Показов 4059. Ответов 3
Метки нет (Все метки)

Вот я набросал прогу, она переписывает элементы в порядке возрастания, мне нужно поставить все нули после максимального элемента:
Pascal
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
program lab5_var2;
Uses crt;
type arr=array[1..10] of integer;
var a:arr; {Массив}
  i_max: byte; {индекс максималтного элемента массива}
  max,I,j,n: integer; {максимальный элемент}
begin
  writeln;
  writeln(' Переместить все элементы, равные 0, после максимального элемента');
  writeln;
  {$R+} {Включение контроля значений индексов}
  clrscr; {Очистка экрана}
  n:=10;    
    for I:=1 to n do 
        begin
            write('Введите a[',I,']');
            read(a[I]);
            clrscr;
        end;
  writeln;
  max:=a[i];
  i_max:=1;
  for i:=2 to n do {Поиск максимального элемента массива}
    if a[i]>max then
    begin
      max:=a[i];
      i_max:=i;
    end;
  i:=i_max+1;
   writeln('max= ',max);
i:=i_max+1;
  while i<=n do {цикл для поверки элементов на знак}
  begin 
    if a[i]=0 then {если элемент равен 0 , то}
    begin
for I:=1 to n-1 do
      for j:=I+1 to n do
      if a[j]<a[I] then { a[I]  и a[j] меняются местами }
        begin
          i_max:=a[I];
          a[I]:=a[j];
          a[j]:=i_max;
   end;
    end
    else
      i:=i+1;  {иначе переход к следущему элементу}
  end; 
  writeln;
  writeln('Результат обработки:');
  for i:=1 to n do 
    write(a[i]:4);
      writeln;;
  readln;
    writeln;
{$R-} {Выключение контроля значения индексов}
end.
вот второй вариант (эта прога ставит на 1ое место макс. элемент а все нули на последнее):
Pascal
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
program Sort_Vybor1; 
 var A:array[1..100] of integer; 
 i_max: byte;
 max,N,i,m,k,x : integer; 
 
begin 
 write('количество элементов массива '); 
 read(N); 
 for i:=1 to n do read(A[i]); 
 for k:=n downto 2 do {k- количество элементов для поиска max } 
   begin 
    m:=1; { m - место max } 
    max:=a[i];
  i_max:=1;
  for i:=2 to n do {Поиск максимального элемента массива}
    if a[i]>max then
    begin2
      max:=a[i];
      i_max:=i;
    end;
  i:=i_max+1;
    for i:=2 to k do   
    if a[i]=0  then m:=i;
    {меняем местами элементы с номером m и номером k} 
    x:=A[m]; A[m]:=A[k]; A[k]:=x; 
   end; 
   writeln('Полученный массив');
        writeln('max= ',max);
 for i:=1 to n do write(A[i],' '); {упорядоченный массив} 
end.
как сделать перестановку нулей после максимального элемента, надеюсь мои набросы помогут
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2012, 17:24
Ответы с готовыми решениями:

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

Все элементы, равные нулю, поставить сразу после максимального элемента данного массива
нужно переделать данную задачу, с использованием указателей Условие: В массиве A=(a1, а2, ...,...

Все элементы массива, равные нулю, поставить сразу после максимального элемента данного массива
В массиве A=(a1, а2, ..., аn) все элементы, равные нулю, поставить сразу после максимального...

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

3
259 / 94 / 24
Регистрация: 18.04.2011
Сообщений: 719
Записей в блоге: 1
29.11.2012, 17:32 2
Вариант "хитрый":
Делаешь в массиве сортировку по убыванию (максимальный элемент спереди, нули в конце), считаешь сколько у тебя нулей. После этого от размера массива отнимаешь количество нулевых элементов и делаешь сортировку оставшихся элементов. Таким образом у тебя будет отсортированный по возрастанию массив и нули на конце этого массива.
0
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 5
29.11.2012, 18:22  [ТС] 3
Да, но кол-во нулевых элементов не постоянное, придется каждый раз переписывать кол-во отнимаемых элементов
0
259 / 94 / 24
Регистрация: 18.04.2011
Сообщений: 719
Записей в блоге: 1
29.11.2012, 20:56 4
Цитата Сообщение от Fgik Посмотреть сообщение
Да, но кол-во нулевых элементов не постоянное, придется каждый раз переписывать кол-во отнимаемых элементов
Либо один раз это проделать программно
Pascal
1
2
3
4
5
6
7
8
9
10
11
var {описываем переменные}
Mass : array [1..50] of integer;
null_count : integer;
i : byte;
{ниже представлен код, подсчитывающий количество нулевых элементов}
Begin
For i:= 1 to 50 do begin
if Mass[i]=0 then null_count:=null_count+1;
end;
{В переменной null_count хранится количество нулевых элементов}
End;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2012, 20:56
Помогаю со студенческими работами здесь

Все элементы заданного массива, равные нулю, поставить сразу после максимального элемента
В массиве A=(a1, а2, ..., аn) все элементы, равные нулю, поставить сразу после максимального...

В массиве С заменить все отрицательные элементы и равные нулю на 1. Посчитать произведение элементов нового массива.
Заданы массивы А и В действительных чисел. А:-48,7 -7,1 -24,9 2,18 10,6 -8,4 0 3,5 ...

Из одномерного массива А(20) удалить все элементы, равные 1/2 максимального элемента
Ребят, помогите написать программу пожалуйста: Из одномерного массива А(20) удалить все элементы,...

Выбросить из данного массива элементы, равные нулю
Задан целочисленный массив a (n). Выбросить из данного массива элементы, равные нулю. Оставшиеся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru