Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2008, 00:11   #1
LOVELY
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 10
По умолчанию программа с использованием подпрограмм, создаёт односвязный список и вычисляет сумму положительных чисел

Народ, нужна помощь в решении такой задачи...(сессия)

Даны следующие типы данных:

type AdresaCelula=^Celula;
Celula=record
Info:integer;
Urm:AdresaCelula; end;

Нужно написать программу с использованием подпрограмм, которая создаёт односвязный список и вычисляет сумму положительных значений из полей Info ячеек созданного списка.

Срочно нужно, помогите, плиз...
LOVELY вне форума Ответить с цитированием
Старый 13.12.2008, 00:32   #2
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

насколько срочно?
Викдон вне форума Ответить с цитированием
Старый 13.12.2008, 00:58   #3
LOVELY
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Викдон Посмотреть сообщение
насколько срочно?
на завтра...не позже...
LOVELY вне форума Ответить с цитированием
Старый 13.12.2008, 01:11   #4
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

Код:
type AdresaCelula=^Celula;
 Celula = record
 Info:integer;
 Urm:AdresaCelula;
 end;

var haid,tail,p:AdresaCelula;
    c:char;

Procedure InstallSpisok (var golova,hvost:AdresaCelula);
begin
 while true do
  begin
    if golova=nil then
     begin
      new(golova);
      hvost:=golova;
      golova^.Urm:=nil;
     end
    else
     begin
      new(hvost^.Urm);
      hvost:=hvost^.Urm;
      hvost^.Urm:=nil;
     end;
      write('Введите целое число: ');
      readln(hvost^.info);
      write('Продолжить ввод чисел? Y/N');
       readln(c);
        if (c='n') or (c='N') then
          break;
    end; {while}
end;

Procedure Summa (golova,hvost,p:AdresaCelula);
var summa:integer;
begin
summa:=0;
 p:=golova;

 if p=hvost then   {Если в списке один элемент}
  if p^.info>0 then
   begin
    summa:=p^.info;
    writeln('Сумма положительных элементов: ',summa);
   end;

  while p<>hvost do
   begin
     if (p^.info>0) then
      summa:=summa+p^.info;
     p:=p^.Urm;

     if p=hvost then
       begin
        if (p^.info>0) then
         summa:=summa+p^.info;
         write('Сумма положительных элементов = ',summa);
        end;
    end;{while}


end;


begin

InstallSpisok(haid,tail);
Summa(haid,tail,p);
readln;
end.
Не забудь про отзыв)))
Викдон вне форума Ответить с цитированием
Старый 13.12.2008, 01:25   #5
LOVELY
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Викдон Посмотреть сообщение
Код:
type AdresaCelula=^Celula;
 Celula = record
 Info:integer;
 Urm:AdresaCelula;
 end;

var haid,tail,p:AdresaCelula;
    c:char;

Procedure InstallSpisok (var golova,hvost:AdresaCelula);
begin
 while true do
  begin
    if golova=nil then
     begin
      new(golova);
      hvost:=golova;
      golova^.Urm:=nil;
     end
    else
     begin
      new(hvost^.Urm);
      hvost:=hvost^.Urm;
      hvost^.Urm:=nil;
     end;
      write('Введите целое число: ');
      readln(hvost^.info);
      write('Продолжить ввод чисел? Y/N');
       readln(c);
        if (c='n') or (c='N') then
          break;
    end; {while}
end;

Procedure Summa (golova,hvost,p:AdresaCelula);
var summa:integer;
begin
summa:=0;
 p:=golova;

 if p=hvost then   {Если в списке один элемент}
  if p^.info>0 then
   begin
    summa:=p^.info;
    writeln('Сумма положительных элементов: ',summa);
   end;

  while p<>hvost do
   begin
     if (p^.info>0) then
      summa:=summa+p^.info;
     p:=p^.Urm;

     if p=hvost then
       begin
        if (p^.info>0) then
         summa:=summa+p^.info;
         write('Сумма положительных элементов = ',summa);
        end;
    end;{while}


end;


begin

InstallSpisok(haid,tail);
Summa(haid,tail,p);
readln;
end.
Не забудь про отзыв)))
Спасибо))))))) вы меня спасли))) отзыв оставила))
LOVELY вне форума Ответить с цитированием
Старый 13.12.2008, 01:27   #6
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

обращайся если что 466-410-310!!
Викдон вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблонный односвязный список _ares_ Общие вопросы C/C++ 4 06.12.2008 21:35
КОЛЬЦЕВОЙ ОДНОСВЯЗНЫЙ СПИСОК __FIRST__ Помощь студентам 0 01.11.2008 17:16
C: односвязный список в файле getfear Помощь студентам 7 04.01.2008 19:26
Найти сумму положительных нечетных чисел меньше 50 мандаринка Паскаль, Turbo Pascal, PascalABC.NET 8 22.12.2007 21:45
Найти сумму последних L положительных элементов в массиве A={a[i]}. Assembler Kasim Помощь студентам 2 16.12.2007 16:12