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

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

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

> Формирование массива - чередование, Формируем один из двух специальным чередованием
сообщение
Сообщение #1


Новичок
*

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

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


Добрый вечер или как smile.gif
Вообщем у меня такое задание.
Пользователь задает 2 массива, причем количество индексов может быть различным, например у массива B - 10 а у массива C - 7.
Итак, и из этих 2 массивов требуется сформировать один - A.
Причем следующим образом:
первые два элемента берем из массива C, вторые 2 из массива B, третьи 2 из массива C и так далее,
по чередованию.
Если один из массивов заканчивается,
то другой прибиваем вниз главного.
Вот, что у меня получилось:
Код

program massive_2_6;
CONST
     start=1;
     end1=5;
     end2=5;
     mainend=end1+end2;
var
   b: ARRAY [start..end1] OF INTEGER;
   c: ARRAY [start..end2] OF INTEGER;
   a: ARRAY [start..mainend] OF INTEGER;
   i, yesb, yesc, cntb, cntc: byte;
   context: INTEGER;

begin
writeln('‚ўҐ¤ЁвҐ ', end1, ' §­ зҐ­Ё© ЇҐаў®Ј® ¬ ббЁў : ');

  for i:=start to end1 DO
    begin
      readln(context);
      b[i]:=context;
    end;
writeln;
writeln('‚ўҐ¤ЁвҐ ', end2, ' §­ зҐ­Ё© ўв®а®Ј® ¬ ббЁў : ');

  for i:=start to end2 DO
    begin
      readln(context);
      c[i]:=context;
    end;

  yesc:=1;
  yesb:=0;
  cntb:=1;
  cntc:=1;

  for i:=start to mainend DO
    begin
      if (yesc<>0) then
        begin
          if (yesc<3) then
            begin
              a[i]:=c[cntc];
              cntc:=cntc+1;
              yesc:=yesc+1;
            end
          else
            begin
             yesc:=0;
             yesb:=1;
            end;
      if (yesb<>0) then
        begin
          if (yesb<3) then
            begin
              a[i]:=b[cntb];
              cntb:=cntb+1;
              yesb:=yesb+1;
            end
          else
            begin
              yesc:=1;
              yesb:=0;
            end;
        end;
        end;

    end;

  for i:=start to mainend DO
    begin
    write(a[i], ' ');
    end;
readln;
end.

Понимаю, код большой и никто разбираться в нем не хочет.
Но хотел спросить - у меня правильно идут только первые 3 элемента нового массива A,
т.е. они формируются правилно, а остальные - все нули, к сожалению.
Может, кто подскажет другую технологию, более совершенную?
Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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