Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Секция спортивного ориентирования МИФИ _ Общий _ Паскаль, проги

Автор: Al-Alex June 1 2011, 22:33

надо срочно решить 2 задачки на паскале
кто может?

 

Автор: Al-Alex June 1 2011, 22:52

если кто решит - пришлите плиз на fillerm93@mail.ru

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

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

Кстати если кто знает ответ на теор вопрос - тоже пришлите...

Автор: Al-Alex June 1 2011, 23:08

Забыл - вот еще одна x)

 

Автор: BLL June 1 2011, 23:24

Цитата(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 June 1 2011, 23:25

Дай Филе, пусть попробует переписать на Паскаль...

Автор: BLL June 1 2011, 23:32

А лучше так:

Код
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 June 1 2011, 23:43

да ты сбрендил что-ли? Он если на паскале написать и то не поймет и не сможет объяснить, а ты перепиши...

Автор: ~~HellHounD~~ June 2 2011, 06:44

Списки:

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 June 2 2011, 11:55

Задача 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 June 2 2011, 22:18

Всем, кто откликнулся, огромное спасибо!
... если бы это еще помогло ....

Автор: Fillerm June 4 2011, 11:10

Спасибо всем огромное за помощь, зачёт я в итоге сдал. Спасибо!!! wacko.gif

Форум Invision Power Board (http://nulled.ws)
© Invision Power Services (http://nulled.ws)