Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 1
Регистрация: 02.04.2015
Сообщений: 29
1

Из одномерного массива А удалить все элементы, правее которых расположены четные элементы

12.06.2017, 13:26. Просмотров 486. Ответов 3
Метки нет (Все метки)

Из одномерного массива А удалить все элементы, правее которых расположены четные элементы

Фрагмент кода, который я написал
Pascal
1
2
3
4
5
6
7
8
9
10
t:=11;
for i:=2 to n do
 if a[i] mod 2=0 then
  begin
   k:=i;
   for j:=k-1 to n-1 do
   a[j]:=a[j+1];
   t:=t-1;
   a[t]:=0;
  end;
Из изначального массива, сгенерированного из случайных чисел, выходит следующее
Изначальный массив:
4 8 17 5 12 13 22 6 7 1
Новый массив:
8 17 12 22 0 0 0 0 0 0
Но если я правильно понял задание, то должно быть вот так
Изначальный массив:
4 8 17 5 12 13 22 6 7 1
Новый массив:
8 17 12 6 7 1 0 0 0 0
Можете открыть глаза мне на этот вопрос?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2017, 13:26
Ответы с готовыми решениями:

Удалить из одномерного массива все чётные элементы
Написал программу, но она почему-то работает некорректно. Не могу понять, в чём ошибка. Подскажите,...

Удалить из одномерного массива все четные элементы без изменения порядка
Написать программу используя функции, но не использовать указатели 2. Удалить из одномерного...

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

Удалить из массива все четные элементы, у которых последняя цифра 2
Дан массив целых чисел из n элементов, заполненный случайным образом числами из за...

3
Эксперт Pascal/Delphi
6269 / 4227 / 4611
Регистрация: 05.06.2014
Сообщений: 20,806
12.06.2017, 14:56 2
Взято отсюда:
Удалить из одномерного массива все чётные элементы

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
  arr: array[1..100] of integer;
  i, j, n: integer;
 
begin
  randomize;
  n := 10; 
  for i := 1 to n do
  begin
    arr[i] := random(20);
    write(arr[i]:5);
  end;
  for i := 1 to n - 1 do
    if (arr[i + 1] mod 2 = 0) and (arr[i + 1] <> 0) then
    begin
      for j := i to n - 1 do
        arr[j] := arr[j + 1];
      n := n - 1;
    end;
  writeln;
  for i := 1 to n do
    write(arr[i]:5);
end.
0
0 / 0 / 1
Регистрация: 02.04.2015
Сообщений: 29
12.06.2017, 21:11  [ТС] 3
Это не та программа. Я описал принцип действия. Элементы должны именно превращаться в нули и смещаться в конец. Это так называемое "удаление" в моем задании. И должного удаления не происходит.
Выходит так:
Изначальный массив:
4 8 17 5 12 13 22 6 7 1
Новый массив:
8 17 12 22 0 0 0 0 0 0
А должно быть так:
Изначальный массив:
4 8 17 5 12 13 22 6 7 1
Новый массив:
8 17 12 6 7 1 0 0 0 0
Есть какие-то другие варианты решения такой задачи?
0
0 / 0 / 1
Регистрация: 02.04.2015
Сообщений: 29
14.06.2017, 16:30  [ТС] 4
Вот мой вариант решения моей задачи. Сначала элементы которые нужно "удалить" превращаются в нули, а после они смещаются поочередно в конец массива. Вроде работает. Запускал несколько раз, то что требуется выполняется.
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
program delete;
uses crt;
const n=10;
var a:array[1..n] of integer;
    i,j,s,:integer;
    t:boolean;
begin
clrscr;
randomize;
writeln('Massiv A:');
 for i:=1 to n do 
  begin
   a[i]:=random(99);
   write(a[i]:3);
  end;
writeln;
 for i:=2 to n do
  if a[i] mod 2=0 then
    a[i-1]:=0;
t:=true;
 while t do
  begin
   t:=false;
   for i:=1 to n-1 do
    if (a[i]=0) and (a[i+1]<>0) then
     begin
      s:=a[i];
      a[i]:=a[i+1];
      a[i+1]:=s;
      t:=true;
     end;
  end;
writeln('new massiv A:');
 for i:=1 to n do
  write(a[i]:3);
readln;
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2017, 16:30

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

Удалить из массива все четные элементы, у которых последняя цифра 2
Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....

Удалить из одномерного массива все элементы, в записи которых все цифры различны
В одномерном массиве, элементы которого являются целыми числами, произвести следующие действия:...

Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны
Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны. ...

Удалить из одномерного массива все элементы, в записи которых есть цифра 5
1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....

Из целочисленного массива Х все четные элементы записать в массив Y. Удалить в массивах максимальные элементы
Из целочисленного массива Х(N) все четные элементы записать в массив Y(k). Удалить в массивах...

Все элементы массива, правее которых стоит нечетное значение, заменить на 0
В массиве все элементы, правее которых стоит нечетное значение, заменить на 0 Пример: из массива...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.