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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2019, 16:53   #1
pavelmorash12
 
Регистрация: 17.04.2017
Сообщений: 6
По умолчанию вставить значение перед каждым отрицательным элементом

Задан одномерный массив F(N). В данном массиве удалить все элементы, кратные 7. Массив распечатать. Во вновь образованной последовательности вычислить количество нечётных элементов и вставить это значение перед каждым отрицательным элементом. Значение количества и вновь образованный массив распечатать.
Подскажите, почему не выводится последний элемент массива?
Код:
const n=10;
Var 
   A: array [1..n] of integer;
   B: array [1..2*n] of integer;
   i, k, m, j, d: integer;
Begin 
For i:=1 to n do 
A [i]:= random (200)-100;
write('Исходный массив:');
for i := 1 to n do write(A[i]:4);
 writeln;
 j:=1;
 k:=0;
 Write('Массив без элементов, кратных 7: ');
For i:=1 to n do begin
 If (a[i] mod 7 <> 0) then begin b[j]:=a[i];
  Write(b[j]:5);
   j:=j+1;
   k:=k+1;
    end;
     end;
WRITELN;
d:=0;
m:=0;
For i:=1 to n do begin
  if (b[i] mod 2 <> 0) then m := m + 1;
  end; 
writeln('количество нечетных элементов: ', m);
For j:=k downto 1 do begin
 If (b[j] < 0) then 
 begin
 for i := k+d downto j+1 do
        b[i]:= b[i-1];
    b[j] := m;
 inc(d); 
    end;   
end;
write('Новый массив: ');
    for i := 1 to k+d do
        write(b[i]:4);
    writeln;
end.
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 02.06.2019 в 18:33.
pavelmorash12 вне форума Ответить с цитированием
Старый 02.06.2019, 18:01   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Над полем редактирования находится кнопка [CODE].
Пиши текст программы, выделяй его и жми на кнопку. В том виде, как представлен твой код, читать сложно.

1. В одном цикле можно а) удалить элементы, кратные 7, b) подсчитать число нечётных элементов.
2. Поскольку из массива удаляются элементы, то массив можно оставить в исходном месте.
3. Поскольку есть второй массив с размерностью в два раза больше исходного (так понимаю, на случай не удаления элементов и все элементы отрицательные), то в него можно перенести все элементы последнего массива соблюдая правило. Без изысков - downto.
4. В программе есть переменная d. Она используется при инициализации переменной цикла for. Исходное значение для d - ноль. Инициализация переменной цикла выполняется один раз - в начале. Так что это:
Код:
for i := k+d downto j+1 do
неверное решение.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перед каждым минимальным элементом вставить новый элемент(стек) ggjgj Общие вопросы C/C++ 0 21.04.2017 20:31
Перед каждым столбцом матрицы вставить его порядковый номер Лераа Паскаль, Turbo Pascal, PascalABC.NET 5 26.12.2012 00:11
1. Вставить нулевой элемент перед максимальным элементом в одномерном массиве Proskurina Помощь студентам 6 22.09.2012 06:48
1. Вставить нулевой элемент перед максимальным элементом в одномерном массиве Proskurina Паскаль, Turbo Pascal, PascalABC.NET 4 21.09.2012 20:21
вставить по одному элементу перед отрицательным элементом массива (паскаль) lexflax Паскаль, Turbo Pascal, PascalABC.NET 1 13.04.2011 09:09