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

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

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

> списки, небольшая проблемка
Hunt666
сообщение 26.05.2007 21:05
Сообщение #1


Пионер
**

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

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


задача: требуется найти сумму последнего и предпоследнего элемента в списке

program spisok;
uses crt ;
type
point = ^item;
item = record
number: integer;
ch:integer;
next: point
end;

var k,y,x,n,j:integer;
first,r:point;

begin
clrscr;
First:= nil ;
writeln('vvedite n');
readln(n);
randomize;
while n>0 do
begin
if n=2 then
begin
j:=random(10);
NEW®;
r^.next:=first;
r^.ch:=j;
x:= j ;
r^.NUMBER:=n;

First:=r;
n:= n-1;
end;


k:=random(10);
NEW®;
r^.next:=first;
r^.ch:=k;
y:= k ;
r^.NUMBER:=n;
{ k:=r^.ch;}
First:=r;
n:= n-1

end;

begin
r:=first;
while r<>nil do
begin
write('number = ', r^.number);
writeln(' chislo = ', r^.ch);
r:=r^.next;
end;
readln;
k:=x+y;
writeln(' k = ', k);
readln;
end;
end.


собственно проблема в том , что при выводе 1 номеру в списке должен соответствовать 1 введенный элемент,
а почему то выводится последний, ну и так со всеми элементами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
volvo
сообщение 26.05.2007 21:25
Сообщение #2


Гость






Если тебе надо только правильно заполнить список и найти сумму предпоследнего и последнего его элементов (я имею в виду, что нет каких-то дополнительных условий), то ты очень сильно все усложнил... Достаточно сделать так:

program spisok;
uses crt ;
type
point = ^item;
item = record
number: integer;
ch:integer;
next: point
end;

var
k, n: integer;
first,r,p: point;

begin
clrscr;
first := nil;
write('vvedite n: '); readln(n);

randomize;
while n > 0 do begin

new®;

r^.ch := random(10);
r^.number := n;
r^.next := first;
first := r;

n := n - 1;
end;

r := first;
while r <> nil do begin
writeln('number = ', r^.number:4, ' chislo = ', r^.ch:4);

if (r^.next <> nil) and (r^.next^.next = nil) then p := r;
r := r^.next;
end;

k := p^.ch + p^.next^.ch;
readln;

writeln('k = ', k);
readln;
end.

 К началу страницы 
+ Ответить 
Hunt666
сообщение 26.05.2007 21:32
Сообщение #3


Пионер
**

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

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


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

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

 



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