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

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

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

> Список
SeRGuSii
сообщение 1.06.2005 15:55
Сообщение #1


Новичок
*

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

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


Проверьте програмку. а то при выполнении вылетает из паскаля ;)
 
{Дано два однонаправленных списка целых чисел. Удалить во втором списке все
 элементы, больше среднеарифметического положительных элементов первого
 списка и продублировать все элементы второго списка, меньше среднего арифметического четных элементов первого списка}
type list=^elem;
     elem=record
                inf:integer;
                next:list;
                end;
var p,l,o,i,q,w:list;
    x,z,u:integer;
    a,s:real;
begin
 writeln('Введите первый список: ');
 new(p);
 l:=p;
 readln(x);
 p^.inf:=x;
 readln(x);
  while x<>0 do
   begin
    new(q);
    q^.inf:=x;
    p^.next:=q;
    p:=q;
    readln(x);
   end;
  p^.next:=nil;
  p:=l;
  writeln('Введите второй список: ');
  new(o);
  i:=o;
  readln(x);
  o^.inf:=x;
  readln(x);
   while x<>0 do
    begin
     new(w);
     w^.inf:=x;
     w^.next:=w;
     o:=w;
     readln(x);
    end;
  o^.next:=nil;
  o:=i;
   while p^.next<>nil do
    begin
     if p^.inf >= 0 then
      begin
       s:=s+p^.inf;
       inc(u);
       p:=p^.next;
      end;
     if p^.inf mod 2 <> 0 then
      begin
       a:=a+p^.inf;
       inc(z);
       p:=p^.next;
      end;
    end;
   a:=a/z;
   s:=s/u;
    while o^.next^.next<>nil do
     begin
      if o^.next^.inf>s then
       begin
        o^.next:=o^.next^.next;
        o:=o^.next;
       end;
      if o^.inf<a then
       begin
        new(i);
        i^.inf:=o^.inf;
        l:=o^.next;
        o^.next:=i;
        i^.next:=l;
        o:=o^.next;
       end;
     end;
  writeln('Вывод списка:');
  o:=i;
   while o<>nil do
    begin
     writeln(o^.inf);
      o:=o^.next;
    end;
  readln
end.

.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 

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