Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Паскаль, проги
Секция спортивного ориентирования МИФИ > Общий раздел > Общий
Al-Alex
надо срочно решить 2 задачки на паскале
кто может?
Al-Alex
если кто решит - пришлите плиз на fillerm93@mail.ru

Если кто-то все же решится написать, то имейте в виду, что чем проще прога тем лучше. И в идеале с комментами с какими-нибудь.....

Всем кто поможет - от меня причитается.

Кстати если кто знает ответ на теор вопрос - тоже пришлите...
Al-Alex
Забыл - вот еще одна x)
BLL
Цитата(Al-Alex @ June 2 2011, 00:08) *
Забыл - вот еще одна x)

Как-то так (язык Си):

Код
structure element
{
element *left;
element *right;
datatype data;
}

element *first;
element *last;

...

void add_after(element **last, element *current, element *newelem)
{
newelem->left = current;
newelem->right = current->right;
if ((current->right)==null)
*last = newelem;
else
current->right->left = newelem;
current->right = newelem;
}
BLL
Дай Филе, пусть попробует переписать на Паскаль...
BLL
А лучше так:
Код
void add_after(element **last, element *current, datatype &newdata)
{
element *newelem = new element;
newelem->data = newdata;
newelem->left = current;
newelem->right = current->right;
if ((current->right)==null)
*last = newelem;
else
current->right->left = newelem;
current->right = newelem;
}
Al-Alex
да ты сбрендил что-ли? Он если на паскале написать и то не поймет и не сможет объяснить, а ты перепиши...
~~HellHounD~~
Списки:

program prog;



type
node_ptr = ^list_node;
list_node = record{Объявили запись элемента списка}
prev, next:node_ptr;{Указатели на предыдущий и последующий элементы}
data:integer;{Данные элемента списка}
end;

procedure add_node( var start: node_ptr; data: integer; position: integer);
var
node,ptr: node_ptr;
idx: integer;
begin
new(node);
node^.prev := nil;
node^.next := nil;
node^.data := data;
if(position > 0) then{проверяем, что номер узла существует}
begin
if(start = nil) then{если список пустой, то создаем его заново}
begin
start := node;
end
else if(position = 1) then
begin
node^.next := start;{ставим узел в начало списка}
start^.prev := node;
start := node;
end
else
begin
ptr := start;
idx := 2;
while (idx<position) and (ptr^.next <> nil) do{ищем узел с
заданным номером или последний узел}
begin
inc(idx);
ptr := ptr^.next;
end;
node^.next := ptr^.next;
ptr^.next := node;
node^.prev := ptr;{добавляем узел после заданного}
if( node^.next <> nil ) then
begin
node^.next^.prev := node;
end;
end;
end;
end;

procedure print_list( start: node_ptr);
begin
write( '[');
while( start <> nil ) do
begin
write( start^.data, ' ');
start := start^.next;
end;
writeln( ']');
end;

var
ptr: node_ptr;

begin
ptr := nil;
add_node( ptr, 1, 1);
print_list( ptr );
add_node( ptr, 7, 1);
add_node( ptr, 8, 2);
add_node( ptr, 13, 5);
print_list( ptr );
end.

Нужная процедура - add_node.
real
Задача 13.1
type



{определяем тип входного файла}

intype = record

sLastName:String;

iCourse:integer;

iaMarks: array[1..5]of integer;

end;



{определяем тип выходного файла}

outtype = record

sLastName:String;

iCourse:integer;

iEMark:integer;

end;

var

ts:String;

i:integer;



inElement:intype;

outElement:outtype;



outFile:file of outtype;

inFile:file of intype;



begin



{открываем и нициализируем для чтения входной файл}

assign(inFile,'inFile.bin');

reset(inFile);



{открываем и инициализируем для записи выходной файл}

assign(outFile,'outFile.bin');

rewrite(outFile);



while not EOF(inFile) do

begin

read(inFile,inElement);

Writeln('Считано:');

writeln('Фамилия: ',inElement.sLastName,', Курс: ',inElement.iCourse,

', Оценки: ',inElement.iaMArks[1],',',inElement.iaMArks[2],',',

inElement.iaMArks[3],',',inElement.iaMArks[4],',' ,

inElement.iaMArks[5]) ;



outElement.sLastName:=inElement.sLastName;

outElement.iCourse:=inElement.iCourse;

for i:=1 to 5 do

begin

outElement.iEMark:=outElement.iEMark+inElement.iaMArks[i];

end;

outElement.iEMark:=outElement.iEMark div 5;



Writeln('Записано:');

writeln('Фамилия: ',outElement.sLastName,', Курс: ',outElement.iCourse,

', Средняя оценка: ',outElement.iEMArk) ;



write(outFile,outElement);

end;



close (outFile);

close(inFile);



readln(ts);end.

Al-Alex
Всем, кто откликнулся, огромное спасибо!
... если бы это еще помогло ....
Fillerm
Спасибо всем огромное за помощь, зачёт я в итоге сдал. Спасибо!!! wacko.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.