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

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

Форум «Всё о Паскале» _ Задачи _ Два задания

Автор: Darkmaximus 2.12.2004 1:49

blink.gif помогите пожалуйста просто горю пора сдавать а у мне не получается написатьна TURBO PASCALE эти проги заранее благодарен:

1) Заданы два вектора X и Y и матрица А. Найти сумму двух векторов C и D
где С есть произведение вектора X на матрицу А , а вектор D произведения вектора Y на матрицу А. Вычислить произведение вектора на матрицу оформить в виде подпрограммы.

2) Оргонизовать фаид , содержащий информацию об ученой группе. Для каждог учащегося
указать фамилиююъ , имя , дату рождения , год поступления в ВУЗ , курс , группу , оценки
за каждый год обучения. Список упорядочить по дате поступления в ВУЗ.

<_< Сама вторая прога у меня есть а вот отсортировать не получается. Помогите если сможите. А если непонятно напишите новую.

Код

uses crt;
type pupil=record
name:string;
surname:string;
grup:string;
school:string;
kurs:string;
class:byte;
end;
var school:array[1..3]{кч}of pupil;
n: 1..3{кч};
b,c:byte;

procedure sort;
var w,x:integer;
begin
 for i:=1 to n-1 do
 begin
    x:=i;
    for j:=i+1 to n do
       if a[x]>a[j] then x:=j;
    w:=a[x];
    a[x]:=a[i];
    a[i]:=w;
 end;
end;

procedure input_data;
begin
writeln('введите данные №',n,' :');

write('фамилия ?'); readln(school[n].name);
write('дата рождения ?'); readln(school[n].surname);

write('год поступления ?'); readln(school[n].school);

write('оценка ?'); readln(school[n].class);
write('курс ?');   readln(school[n].kurs);
write('группа ?'); readln(school[n].grup);
writeln;
end;
procedure write_data;
begin
with school[n] do begin
writeln('оценка ',class,' фамилия ',name,' дата рожд ',surname,' год поступ ',school,' курс ',kurs,' группа ',grup);
end;
end;


Не забывайте теги [ CODE] и [ /CODE]

Автор: volvo 2.12.2004 1:58

Darkmaximus
http://forum.pascal.net.ru/index.php?showtopic=3156&hl=%E2%E5%EA%F2%EE%F0

Второй раз те же задания?

Автор: Darkmaximus 2.12.2004 5:45

Ну вообщето уме со второй задачей не получается а первая у меня на Делфи что-то не компелируется наверно Делфи глючный.

Автор: volvo 3.12.2004 17:45

Darkmaximus
Вот принцип сортировки записей:

Код

Uses Crt;

Type
 TStudent =
   Record
     name, surname: String;
     birthdate: String;
     year: Integer;
     Kurs: String;
     group: Byte;
     grade: Byte;
   End;
 TStudentFile = File Of TStudent;

Const
 maxStudent = 10;
Var
 TInfo: Array[1 .. maxStudent] Of TStudent;

Procedure sort(n: Integer);
 Var
   i, j: Integer;
   T: TStudent;
 Begin
   For i := 1 To n Do
     For j := n DownTo i+1 Do
       If TInfo[Pred(j)].year > TInfo[j].year Then { < }
         Begin
           T := TInfo[Pred(j)]; TInfo[Pred(j)] := TInfo[j]; TInfo[j] := T
         End
 End;

Procedure input_data(n: integer);
 Begin
   WriteLn('input data #', n,': ');
   With TInfo[n] do
     Begin
       Write('name > '); ReadLn(name);
       Write('surname > '); ReadLn(surname);

       Write('birth date > '); ReadLn(birthdate);
       Write('year > '); ReadLn(year);
       Write('course > '); ReadLn(kurs);
       Write('group > '); ReadLn(group);
       Write('grade > '); ReadLn(grade);
     End;
   WriteLn;
 End;

Procedure write_data(n: Integer);
 Begin
   With TInfo[n] Do
     WriteLn('grade ', grade, ' name ', name,
             ' surname ', surname, ' birthdate ', birthdate,
             ' year ', year, ' kurs ', kurs, ' group ',group);
 End;

Procedure write_file(Var f: TStudentFile;
         n: Integer);
 Begin
   With TInfo[n] Do
     WriteLn('grade ', grade, ' name ', name,
             ' surname ', surname, ' birthdate ', birthdate,
             ' year ', year, ' kurs ', kurs, ' group ',group);
 End;

Var
 f: TStudentFile;
 i: Integer;

Begin
 For i := 1 To maxStudent Do
   input_data(i);

 sort(maxStudent);

 For i := 1 To maxStudent Do
   write_data(i);

 Assign(f, 'STUD.DAT');
 Rewrite(f);
 For i := 1 To maxStudent Do
   write_file(f, i);
 Close(f)
End.