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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2010, 12:57   #11
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
if (a[i] mod 2=0) and (a[i+1] mod 2=1) then begin
заменить на то, что было раньше
Код:
if a[i] mod 2=0 then
Sibedir вне форума Ответить с цитированием
Старый 02.12.2010, 13:15   #12
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Цитата:
Сообщение от DarkDeidara Посмотреть сообщение
а доложно быть так 2 11 2 11 2 11 2 11 и т.д.
Так тебе после каждого четного чсла надо вставлять элемент?
тогда надо сначала посчитать количество четных элементов в массиве,
Код:
 for i := 1 to n do begin
    if (a[i] mod 2=0) then begin
      kol:=kol+1;
    end;
  end;
потом создать новый массив размерностью n + кол-во четных эленентов
Код:
var Otvet:array[1..n+kol] of integer;
и уже в него записывать первоначальный массив добавляя элементы там где надо.
Код:
k:=0
 for i := 1 to n do begin
    Otvet[i+k]:=a[i]
    if (a[i] mod 2=0) then begin
      k:=k+1;
      Otvet[i+k]:=x
    end;
  end;
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 02.12.2010, 13:21   #13
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Вот это условие зачем???
Код:
(a[i+1] mod 2=1)
Цитата:
После всех чётных элементов вставить число X
Цитата:
потом создать новый массив размерностью n + кол-во четных эленентов
Задайте сразу массив 2*n

Так вроде
Код:
uses crt;
const n=10;
var i,j,kol,X:integer;
    a:array[1..2*n] of integer;

begin
randomize;
kol:=n;
readln(x);
clrscr;
for i:=1 to kol do
 begin
  a[i]:=random(50);
  write(a[i]:3);
 end;
writeln;
i:=1;
repeat
if (a[i] mod 2 =0)and(a[i]<>x) then
 begin
 inc(kol);
  for j:=kol downto i+1 do
   a[j]:=a[j-1];
  a[i+1]:=X;
 end;
 inc(i);
until i>=kol;
for i:=1 to kol do
 write(a[i]:3);
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось MaTBeu; 02.12.2010 в 14:11.
alex_fcsm вне форума Ответить с цитированием
Старый 02.12.2010, 14:44   #14
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

Спасибо теперь точно всё работает!! Просто прекрасно))
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 17:49   #15
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

2 alex_fcsm
Цитата:
Код:
if (a[i] mod 2 =0)and(a[i]<>x) then
Это не есть правильно. Ибо, если элемент массива = x и является четным, то вставки не произойдет, а должна.

Пусть дан массив:
7 0 2 6 7 0 5 1 2 9
Результат по вашей программе:
7 0 2 2 6 2 7 0 2 5 1 2 9
А должно быть:
7 0 2 2 2 6 2 7 0 2 5 1 2 2 9
Sibedir вне форума Ответить с цитированием
Старый 02.12.2010, 17:56   #16
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
2 alex_fcsm

Это не есть правильно. Ибо, если элемент массива = x и является четным, то вставки не произойдет, а должна.

Пусть дан массив:
7 0 2 6 7 0 5 1 2 9
Результат по вашей программе:
7 0 2 2 6 2 7 0 2 5 1 2 9
А должно быть:
7 0 2 2 2 6 2 7 0 2 5 1 2 2 9
Это не есть правильно , когда разобрались с условием задачи . Когда я это написал , то я понял , что надо было писать х , после последовательность четных чисел .
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 03.12.2010, 11:43   #17
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Исправления копеечные)
Код:
uses crt;
const n=10;
var i,j,kol,X:integer;
    a:array[1..2*n] of integer;

begin
clrscr;
randomize;
kol:=n;
readln(x);
clrscr;
for i:=1 to kol do
 begin
  a[i]:=random(50);
  write(a[i]:3);
 end;
writeln;
i:=1;
repeat
if (a[i] mod 2 =0) then
 begin
 inc(kol);
  for j:=kol downto i+1 do
   a[j]:=a[j-1];
  a[i+1]:=X;
  inc(i);
 end;
 inc(i);
until i>=kol;
for i:=1 to kol do
 write(a[i]:3);
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 03.12.2010, 12:13   #18
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

Всё тема закрыта. Всем спасибо!! я закончил практику на 5))
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