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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 19:42   #1
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию Вставка элементов в одномерный массив

Помогите пожалуйста с задачкой.
Дана последовательность вещественных чисел. После всех чётных элементов вставить число X.
Выглядит примерно так, но почему-то вставляет число перед чётным элементом
Код:
uses crt;
const n=10;
var a:array[1..n+1] of integer;
    i,x,k:integer;
begin
     clrscr;
     writeln ('Исходный массив:');
     for i:=1 to n do
     begin
          write ('a[',i,']=');
          readln (a[i]);
     end;
     writeln;
     writeln ('Введите число для вставки:');
     readln(x);
     for i:=n downto 1 do
     begin
          if a[i] mod 2=0 then
          k:=i;
          a[i+1]:=a[i];
          a[k]:=x;
     end;
     writeln;
     writeln ('Полученый массив:');
     for i:=1 to n+1 do
     writeln ('a[',i,']=',a[i]);
     readln;
end.
Если где-то это уже решалось дайте ссылку пожалуйста))

Последний раз редактировалось Stilet; 01.12.2010 в 14:02.
DarkDeidara вне форума Ответить с цитированием
Старый 01.12.2010, 10:56   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Код:
if a[i] mod 2=0 and a[i+1] mod 2=1 then
a[i+1]:=x;
end;
Попробуй так , если я правильно понял , что тебе надо
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 01.12.2010, 12:05   #3
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

Спасибо. Написал так как посоветовали, теперь число Х вставляется после четных, НО оно заменяет нечётные)) Как сделать чтоб и Х вставлялось и нечётные на местах оставались??
DarkDeidara вне форума Ответить с цитированием
Старый 01.12.2010, 12:28   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

сдвигать вправо увеличивая размер массива!
Код:
if a[i] mod 2=0 and a[i+1] mod 2=1 then
begin 
n:=n+1;
for j:=n downto i+2 do
a[j]:=a[j-1];
a[i+1]:=x;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 01.12.2010, 13:08   #5
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

или я что-то не так написал или что. Выдаёт массив как есть без изменений.....
я сделал так:
Код:
uses crt;
const n=10;
var a:array[1..n+1] of integer;
    i,x,k,j,kol:integer;
begin
     clrscr;
     writeln ('Исходный массив:');
     for i:=1 to n do
     begin
          write ('a[',i,']=');
          readln (a[i]);
     end;
     writeln;
     writeln ('Введите число для вставки:');
     readln(x);
     for i:=n downto 1 do
     kol:=0;
     if (a[i] mod 2=0) and (a[i+1] mod 2=1) then
     begin
          kol:=kol+1;
          for i:=n downto i+2 do
          a[i]:=a[i-1];
          a[i+1]:=x;
     end;
     writeln;
     writeln ('Полученый массив:');
     for i:=1 to n+kol do
     writeln ('a[',i,']=',a[i]);
     readln;
end.
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 09:48   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

1
Цитата:
Код:
var a:array[1..n+1] of integer;
Вы застолбили размерность массива (max = n+1)
2
добавте begin...end
kol:=0 вынесли за for
второй for должон быть для j
3
Мой вариант
Код:
var
  a: array [1..100] of Integer;
  n, i, x, k, j, kol: integer;
begin
  n := 10;
  writeln ('Vvedite massiv:');
  for i := 1 to n do begin
    write ('a[', i, ']=');
    readln (a[i]);
  end;
  for i := n+1 to 100 do begin
    a[i] := 1;
  end;

  writeln;
  write ('Vvedite X: ');
  readln(x);

  kol:=0;
  for i := n downto 1 do begin
    if (a[i] mod 2=0) and (a[i+1] mod 2=1) then begin
      kol:=kol+1;
      for j := n+kol downto i+2 do
        a[j] := a[j-1];
      a[i+1]:=x;
    end;
  end;

  writeln;
  writeln ('Result:');
  for i := 1 to n+kol do
    writeln ('a[', i, ']=', a[i]);
  readln;
end.

Последний раз редактировалось Sibedir; 02.12.2010 в 10:23.
Sibedir вне форума Ответить с цитированием
Старый 02.12.2010, 12:42   #7
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

Спасибо Большое!! работает)) НО!! только если в массив ввести числа от 1 до 10 и они обязательно расположены чётный за нечётным)) а если в массиве все чётные он не вставляет Х ))
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 12:54   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
если в массиве все чётные он не вставляет Х ))
Меня вставляет X)

было: 2 2 2 2 2 2 2 2 2 2
вставляю: 11
получаю: 2 2 2 2 2 2 2 2 2 2 11
Sibedir вне форума Ответить с цитированием
Старый 02.12.2010, 12:54   #9
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Для чего это условие:
Код:
(a[i+1] mod 2=1)?
Serebro вне форума Ответить с цитированием
Старый 02.12.2010, 12:56   #10
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

а доложно быть так 2 11 2 11 2 11 2 11 и т.д.
DarkDeidara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Paskal вставка элементов в массив TuuuZ Помощь студентам 5 16.01.2010 12:26
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
С++ одномерный массив и сумма элементов Blondy Помощь студентам 1 19.11.2009 17:09
Вставка элементов в массив (помогите с алгоритмом) Mclaren Помощь студентам 1 10.11.2009 17:21
одномерный массив n-элементов serj-07 Помощь студентам 1 24.03.2009 23:36