Автор: Darkmaximus 2.12.2004 1:49
помогите пожалуйста просто горю пора сдавать а у мне не получается написатьна 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.