IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Формирование массивов, Нужно из одного сформировать 2
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Здравствуйте.
У меня такое задание:
Дан одномерный массив A. Сформировать на его основе 2 одномерных массива B и C таким образом,
чтобы в B входили четные элементы с первой половины массива А, а в массив C - нечетные элементы со второй половины массива А.
Вроде задание то и не очень сложное,
вроде все написал... но почему-то ошибка,
помогите пожалуйста.
Код

program massive_2_5;
CONST
     from=1;
     exit=10;
     half=exit DIV 2;
var
   mass: ARRAY [from..exit] OF INTEGER; {Главный массив}
   b: ARRAY [from..half] OF INTEGER; {Массив B}
   c: ARRAY [half..exit] OF INTEGER; {массив C}
   i, context, fm, posb, posc: byte;

begin
fm:=1;
writeln('‚ўҐ¤ЁвҐ ', exit, ' §­ зҐ­Ё© ¬ ббЁў : '); {сообщение чтобы пользователь ввел значение главного массива}

  for i:=from TO exit DO
    begin
      readln(context);
      mass[i]:=context;
    end;
posb:=1;
  for i:=from TO (exit DIV 2) DO {Пробегаемся по первой половине главного массива}
    begin
      if (mass[i] MOD 2)=0 then {Если его элементы делятся на 2 без остатка}
        begin
          b[posb]:=mass[i]; {То сохраняем его в массив B}
          posb:=posb+1; {И добавляем индекс}
        end;
    end;

posc:=1;

  for i:=((exit DIV 2)+1) TO exit DO {Тоже самое и с C}
    begin
      if (mass[i] MOD 2)<>0 then
        begin
          c[posc]:=mass[i];
          posc:=posc+1;
        end;
    end;


   {Вывод результата, пока только B}
  writeln;
  writeln('Њ ббЁў B: ');
  for i:=from to half DO
    begin
      write(b[i], ' ');

    end;
  writeln;
  writeln(b[2]);
readln;

end.


Но е-мое smile.gif
Ведь массивы записываются неверно!
Ну, я в плане - когда берешься его показать - выдается правильно только перый элемент массива, а другие - беспоряждочно и не удовлетворяют условию.
Причем я проверил тока массив B smile.gif
Пробовал ставить, при проверке, что-то вроде writeln
в смысле "if (mass[i] MOD 2)=0 then" и писать просто результат - работает ведь!
Подскажите, в чем проблема,
буду признаетелен ))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Ладно ладно, зачем так нервничать то, я ж не хотел никого обидеть ))
Вот, полный код программы:
Код

program massive_2_5;
CONST
     from=1;
     exit=10;
     half=exit DIV 2;
var
   mass: ARRAY [from..exit] OF INTEGER;
   b: ARRAY [from..half] OF INTEGER;
   c: ARRAY [half..exit] OF INTEGER;
   i, context, fm, posb, posc: byte;

begin
fm:=1;
writeln('‚ўҐ¤ЁвҐ ', exit, ' §­ зҐ­Ё© ¬ ббЁў : ');

for i:=from TO exit DO
    begin
      readln(context);
      mass[i]:=context;
    end;

  posb := 0; posc := 0;

  for i := 1 to exit do begin
    if odd(mass[i]) and (i > half) then begin
      posc := posc + 1; c[posc] := mass[i];
    end
    else
      if not odd(mass[i]) and (i <= half) then begin
        posb := posb + 1; b[posb] := mass[i];
      end
  end;

  writeln;
  writeln('Array B: ');
  for i:=1 to posb DO
    write(b[i], ' ');
  writeln;
readln;

end.


Вот примеры ввхода данных для массива А:
4 8 12 3 9 1 7 3 10 2

Результат для массива B:
4 1 7
А по идее должно быть: 4 8 12

Видите, правильно только первая цифра.
Вот такой результат выдает мой паскаль
P.S. Скорее всего паскаль - сейчас проверил со скриншота -у меня другие результаты чем у тебя получаются sad.gif

Вот кстати тоже скриншот:

Сообщение отредактировано: Домовой -


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 3:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name