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


Гость






Паскаль ни при чем...
var
b: ARRAY [from..half] OF INTEGER;
c: ARRAY [half..exit] OF INTEGER;
Замени на
var
b: ARRAY [from..half] OF INTEGER;
c: ARRAY [from..half] OF INTEGER;


(у тебя же в обоих случаях отсчет с 1 будет начинаться)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Уфф...
Да, моя оплошность ))
Благодарю за помощь ))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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