Госэкзамен. кто может, помогите с задачей на паскале. очень прошу!

Ответить
Upfort
Сообщения: 4
Зарегистрирован: 03 апр 2008, 21:43

05 апр 2008, 13:13

Списо состоит из слкдующей структуры:

- вещественное число
- строка из 20 символов
- указатель на следующий элемент списка (в последнем элементе это поле равно NIL ).
Элементы списка хранятся в динамически распределяемой памяти. (То есть, место для них выделяется процедурой new). Составить процедуру вычисления суммы числовых полей всех элементов списка. Процедуре должен передоваться адрес начала списка.

очень прошу вас помочь, 8-го госы
drummer
Сообщения: 57
Зарегистрирован: 13 янв 2008, 18:43

05 апр 2008, 17:03

Код: Выделить всё

procedure summ(p:Ptvoi_tip);
    begin
        sum:=0;
        while p<>nil do
            begin
                sum:=sum+p^.number;
                p:=p^.next;
            end;
    end;
Upfort
Сообщения: 4
Зарегистрирован: 03 апр 2008, 21:43

05 апр 2008, 17:43

это и вся задача?
просто я вообще не шарю(
Upfort
Сообщения: 4
Зарегистрирован: 03 апр 2008, 21:43

05 апр 2008, 17:50

восьмого госы( я с этим пока разберусь...
я в этом дуб-дубом((
тут столько всего еще надо успеть, пожалуйста помогите с задачей. очень надо!
MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

05 апр 2008, 22:55

Upfort писал(а):это и вся задача?
просто я вообще не шарю(
В принципе, приведенная процедура полностью соответствует поставленной задаче, но возможно потребуется описать тип данных:
[syntax='Delphi']
type
PListItem=^TListItem;
TListItem=record
Number:real;
sData:string[20];
Next:PListItem;
end;
[/syntax]

Тогда заголовок процедуры примет вид:
procedure summ(P:PListItem);

А вообще, советую описать эту подпрограмму как функцию:
[syntax='Delphi']
function summ(p:PListItem):real;
var
sum:real;
begin
sum:=0;
while p<>nil do
begin
sum:=sum+p^.number;
p:=p^.next;
end;
summ:=sum;
end;
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
drummer
Сообщения: 57
Зарегистрирован: 13 янв 2008, 18:43

06 апр 2008, 02:02

Я бы тоже делал функцию, но в условии было сказано
процедуру
Upfort
Сообщения: 4
Зарегистрирован: 03 апр 2008, 21:43

06 апр 2008, 11:27

спасибо вам большое, за помощь! )
вы мне очень помогли.
Serge_Bliznykov
Сообщения: 366
Зарегистрирован: 31 авг 2007, 03:06

06 апр 2008, 12:31

drummer,
&quot писал(а):Я бы тоже делал функцию, но в условии было сказано
Цитата:
процедуру
ну я бы результат процедуры всё таки вернул через параметер - использование глобальных переменных - некузявно!

Код: Выделить всё

procedure summ(p:PListItem, var Sum:real);
begin 
  sum:=0; 
  while p<>nil do 
  begin  
    sum:=sum+p^.number;  
    p:=p^.next; 
  end; 
end;
drummer
Сообщения: 57
Зарегистрирован: 13 янв 2008, 18:43

07 апр 2008, 01:57

зато будет чуточку быстрей работать
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

07 апр 2008, 11:41

Не думаю, что в учебных задачах критична скорость работы
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить