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

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

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

> списки. произведение чисел
Insomnia
сообщение 25.06.2011 11:49
Сообщение #1


Новичок
*

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

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


program proizv_4isel;

{$APPTYPE CONSOLE}

uses
SysUtils,
windows;

type
Tinfo= integer;
TList=^TElem;
TElem= record
info: Tinfo;
next: TList;
end;

procedure create_spisok (var p:TList; info:Tinfo); // создание списка
begin
if p<>nil then create_spisok (p^.next,info)
else begin
new(p);
p^.info:=info;
p^.next:=nil
end;

end;

procedure zap_spisok (var p:TList; n:integer); // заполнение списка
var e,i: integer;
begin
if n<0 then begin
writeln ('список создать нельзя');
readln;
exit
end
else
if n=0 then begin
writeln ('список пуст');
readln;
exit
end;
if n>0 then
begin
for i:=1 to n do
begin
writeln('введите числа');
readln(e);
create_spisok(p,e)
end;
end;
end;

//ищем произведение чисел
function Proiz (L,p: TList): Tinfo;

begin
p:=L;
result:=0;
while p<>nil do
begin
result:=result+p^.info;
p:=p^.next;
end;
end;

//печать
procedure Print_Proizv (r: Tinfo);
begin
writeln('произведение чисел= ');
writeln®;
end;

// печать списка
procedure printList (l: TList);
var
p: TList;
begin
p:=L;
while p<>nil do
begin
write(p^.info,' ');
p:=p^.next;
end;
writeln;
end;


var
p,L: TList;
r,n,info: Tinfo;
begin
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
writeln('введите кол-во чисел');
readln(n);
Create_spisok(L,info);
zap_spisok(L,n);
r:=proiz(L,p);
Print_proizv®;
writeln('введенный список');
printList(L);
readln
end.



не могу понять, пишет что p и info не могут быть инизиализированны. решил посмотреть какой список выводит, так он мне кроме вводимых чисел еще и 5 сначала выводит. откуда появилась, ума не приложу. и произведение считает не правильно. так вроде подумать, все элементарно, но не могу увидеть как исправить ошибки в алгоритмах..

Сообщение отредактировано: Insomnia - 25.06.2011 11:52
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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