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

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

Форум «Всё о Паскале» _ Задачи _ Записи и файлы

Автор: gryzlik 12.12.2006 21:34

Ребят, помогите.
Плохо понимаю тему, но что-то постаралась сделать. Не работает. Исправьте, пожалуйста!

Задача:В таблице хранятся следующие данные об учениках: фамилия, имя, отчество, рост, масса. Вычислить средний рост учеников, рост самого высокого и самого низкого ученика. Сколько учеников могут заниматься а баскетбольной секции, если рост баскетболиста должен быть больше 170 см?


Type Uchenik=record
fam: string[15];
name: string[15];
otch: string[20];
rost:140..250;
massa:40..100;
end;
var a:array[1..100] of Uchenik;
fin,fout:text;
i,j:integer;
procedure Rost(a[i].rost:integer;var n:integer;i,min,max,Sr,k:integer);
begin
S:=0;max:=0;min:=250;k:=0;
for i:=1 to n do begin
S:=S+a[i].rost;
Sr:=S/n;
if a[i].rost>170 then k:=k+1;
if a[i].rost>max then max:=a[i].rost;
if a[i].rost<min then min:=a[i].rost;
writeln('Srednii rost=',Sr);
writeln('Samyi vysokii rost=',max,'u uchenika',a[i].fam,a[i].name,a[i].otch);
writeln('Samyi nizkii rost=',min,'u uchenika',a[i].fam,a[i].name,a[i].otch);
writeln('Basketbolom mogut zanimatsa',k,'chelovek);
end;
BEGIN
assign(fin, 'stud.pas');
resert(fin);
i:=0;
repeat i:=i+1:
with a[i] do
readln(fin,fam,name,otch,rost,massa);
until eof(fin);
close(fin);
Rost;
END.




Программа вообще не работает. Кроме того, предварительно, я полагаю, нужен файл stud.pas в той же папке. Как его создать?(хотя бы одну строку!). Я не понимаю. Нужно же ,чтобы имя, фамилия, рост и т.п. стояли как бы под одним i.

Автор: volvo 12.12.2006 22:17

Цитата
нужен файл stud.pas в той же папке. Как его создать?
Обычно в подобных задачах не работают с текстовыми файлами, а нужно работать с типизированными... Для этого опиши процедуру InputData:

Type rec_file = file of Uchenik;

Procedure InputData(var f: rec_file);
var Rec: Uchenik;
begin
repeat
write('Фамилия (пустая строка - для окончания ввода данных) : '); readln(rec.fam);
if rec.fam <> '' then begin
write('Имя : '); readln(rec.name;
write('Отчество : '); readln(rec.otch);
write('Рост [ 140 .. 250] см : '); readln(rec.rost);
write('Вес [40 .. 100] кг : '); readln(rec.massa);
write(f, rec);
end;
until rec.fam = '';
reset(f); { Переоткрываем файл для чтения, чтобы все записи в него записались }
end;


и вызывай так:
...
Assign(my_file, 'uchenik.dat'); Rewrite(my_file); { <--- Создаем новый файл }
InputData(my_file); { <--- и заполняем его ... }
...


У тебя в программе довольно много синтаксических ошибок, она не будет компилироваться. Попробуй исправить эти ошибки сам, если не получится, говори, поможем smile.gif

Автор: gryzlik 12.12.2006 22:25

К сожалению, программы нужно писать именно по моему типу, так как InputData мы еще не проходили. У меня есть одна задача и по ней мне нужно составить свою. Изначально данная задача тожен не работает. Не могли бы вы отредактировать все-таки мою задачу с созданием того файла? А насчет синтаксических ошибок, я не могу их найти. Проблема в обозначениях?

Автор: volvo 12.12.2006 22:33

Цитата
InputData мы еще не проходили
А Rost уже проходили? Что значит "не проходили InputData"? Это процедура, вообще-то... Ее нельзя проходить или нет, ты использовала в своей программе процедуру, значит, это НЕ запрещено...

А чужие программы (да еще с недостаточно точным условием, например, какой файл надо использовать, текстовый или типизированный) я не переделываю... Легче написать заново...