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

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

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

> Четные - нечетные последовательности
Ivs
сообщение 17.11.2002 12:13
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 209

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


Входной файл: INPUT.TXT
Выходной файл: OUTPUT.TXT
[Задание:
Пусть задана последовательность из n (n Ј 100) целых чисел {a1, a2, ..., an} (1 Ј ai Ј 100), которая содержит m четных чисел и l - нечетных (m + l = n). Требуется получить последовательность из k пар (k = min(m, l)) {(x1, y1), (x2, y2), ..., (xk, yk)}, где x1, x2, ..., xk - взятые в порядке следования первые k четных членов последовательности {a1, a2, ..., an}, а y1, y2, ..., yk - взятые в порядке следования первые k нечетных членов последовательности {a1, a2, ..., an}.
Формат входных данных:
Входной файл INPUT.TXT состоит из двух строк. В первой строке содержится натуральное число n - длина последовательности. Во второй - идут целые числа a1, a2, ..., an, разделенные пробелами. Пример:
10
98 56 33 73 41 8 48 93 52 80
Формат выходных данных:
Выходной файл OUTPUT.TXT должен содержать последовательность {(x1, y1), (x2, y2), ..., (xk, yk)}, расположенную в одной строке файла, числа должны быть разделены пробелами. Если исходная последовательность не содержит ни одного четного или ни одного нечетного члена, т.е. k = 0, то в файл необходимо вывести цифру 0 (нуль).
Пример:
98 33 56 73 8 41 48 93


--------------------
Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Dogmatic
сообщение 29.11.2002 21:57
Сообщение #2





Группа: Пользователи
Сообщений: 9

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


1 вариант, по условию:

Program Posled2;
Var
  l, m, n, i : byte;
  FIn, FOut  : text;
  Num        : array[1..100] of byte;
Begin
  assign(FIn,'input.txt');
  assign(FOut,'output.txt');
  reset(FIn);
  rewrite(FOut);
  l := 0;  {chet}
  m := 0;  {nechet}
  readln(FIn,n);
  for i := 1 to n   do begin
    read(FIn,Num[i]);
    if Num[i] mod 2 = 0 then
      inc(l)
    else
      inc(m);
  end;
  if (l=0) or (m=0) then
    write(FOut,0)
  else
    if l > m then
      for l := 1 to m   do begin
        i := 1;
        while (Num[i] mod 2 <> 0) or (Num[i]=100)   do
          inc(i);
        write(FOut,Num[i], ' ');
        Num[i] := 100;
        i := 1;
        while Num[i] mod 2 <> 1   do
          inc(i);
        write(FOut,Num[i], ' ');
        Num[i] := 100;
      end else
      for i := m to l   do begin
        i := 1;
        while (Num[i] mod 2 <> 0) or (Num[i]=100)   do
          inc(i);
        write(FOut,Num[i], ' ');
        Num[i] := 100;
        i := 1;
        while Num[i] mod 2 <> 1   do
          inc(i);
        write(FOut,Num[i], ' ');
        Num[i] := 100;
      end;
  close(FIn);
  close(FOut);
End.



2 вариант: n может быть больше, оно не указывается.

Program Posled1;
Var
  FIn, FOut, Fl, Fm : text;
  l, m              : longint;
  Num               : integer;
Begin
  assign(FIn,'input.txt');
  assign(FOut,'output.txt');
  assign(Fl,'l.txt');
  assign(Fm,'m.txt');
  reset(FIn);
  rewrite(FOut);
  rewrite(Fl);
  rewrite(Fm);
  readln(FIn,m);
  l := 0;  {chet}
  m := 0;  {nechet}
  while not(Eof(FIn))   do begin
    read(FIn,Num);
    if Num mod 2 = 0   then begin
      inc(l);
      write(Fl,Num, ' ');
    end else
    begin
      inc(m);
      write(Fm,Num, ' ');
    end;
  end;
  close(Fl);
  close(Fm);
  reset(Fl);
  reset(Fm);
  if (l=0) or (m=0) then
    write(FOut,0)
  else
    if l > m then
      for l := 1 to m   do begin
        read(Fl,Num);
        write(FOut,Num, ' ');
        read(Fm,Num);
        write(FOut,Num, ' ');
      end else
      for m := 1 to l   do begin
        read(Fl,Num);
        write(FOut,Num, ' ');
        read(Fm,Num);
        write(FOut,Num, ' ');
      end;
  close(Fl);
  close(Fm);
  close(FIn);
  close(FOut);
End.



--------------------
"Разум есть оружее лени, лишь умный человек может позволить себе быть ленивым" (Я)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 

- Текстовая версия 28.07.2025 19:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"