Type TBusStop=record
name:string[16];
time:integer;// как со временем работать будешь, такой и тип
fromPreviousStop:real;
end;
var f:text;// Текстовый файл
a:array of TBusStop;
Pascal, задача на записи (record)
Указание(lol :))) : скорость, расстояние и время связаны формулой v=s/t, где v - это средняя скорость, s - расстояние, t - время.
Данные берутся из файла data2.txt, в котором содержатся:
на первой строке - 4 целочисленные цифры:
1-ая цифра - количество остановок (не больше 100),
2-ая - средняя скорость автобуса в км/ч,
3-ья - время отправления из начального пункта в часах,
4-ая - то же самое, но в минутах.
следующие строки предоставляют инфо об остановках:
название остановки (не больше 15 символов) и расстояние между пунктами в км в целочисленном формате.
Например:
3 70 10 15
Chicago 10.27
Detroit 30
Boston 12.24
Например, расстояние между начальным пунктом и Chicago - 10.27 км, между Chicago и Detroit - 30 км и так далее.
Результат программа должна записать в файл result.txt в таком виде:
Chicago 10 hr. 48 min.
Detroit 11 hr. 34 min.
Boston 12 hr. 02 min.
Требования к программе:
1) данные и результат хранить в массиве(массивах) с элементами записи (type=record...end)
2) создать и использовать процедуру, считывающую данные в массив с элементами записи
3) создать и использовать процедуру для подсчётов
4) создать и использовать процедуру для записи результатов в файл
5) в программе использовать функцию, подсчитывающую время (в минутах), за которое автобус проезжает указанное расстояние:
function time (s,v:real):integer;
begin
time:=trunc(s/v*60);
end;
где s - расстояние, проеханное автобусом в км, v - средняя скорость автобуса км/ч
Пока что ничего не получается... :(
Самое трудное - считать из файла данные и в массив записать, дальше я уже справился бы...
Код:
Как конкретно в Pascal читать не помню, но сводится к:
Код:
assign();
reset();
readln();
Разбиение строки на подстроки, задание размера массива и первого элемента(в первом хранится отправная точка, и его индекс 0)
for i:=1 to count do
begin
readln();
разбиение новой строки и запись в массив
end;
close();
reset();
readln();
Разбиение строки на подстроки, задание размера массива и первого элемента(в первом хранится отправная точка, и его индекс 0)
for i:=1 to count do
begin
readln();
разбиение новой строки и запись в массив
end;
close();
Цитата: Sania
Код:
Type TBusStop=record
name:string[16];
time:integer;// как со временем работать будешь, такой и тип
fromPreviousStop:real;
end;
var f:text;// Текстовый файл
a:array of TBusStop;
name:string[16];
time:integer;// как со временем работать будешь, такой и тип
fromPreviousStop:real;
end;
var f:text;// Текстовый файл
a:array of TBusStop;
Т.е. использовать файл с данными data2.txt как нетипизированный? Это, понятно, упрощает задачу считывания, но всё же не очень понятно, как присвоить название города из файла data2.txt полю NAME записи TBusStop , а расстояние из того же файла - полю fromPreviousBusStop?
:confused:
данных в массив с элементами записи(record)
Код:
program read;
uses crt;
type city=record
name:string[15];
rast:real;
end;
var ch:char;
rast2:real;
n:array [1..100] of city;
place:city;
f,f1:text;
ii,i,number:byte;
begin
clrscr;
assign(f,'data.txt');
reset(f);
readln(f,number);
for i:=1 to number do
begin
for ii:=1 to 15 do
begin
read(f,ch);
place.name[ii]:=ch;
write(ch);
end;
readln(f,q); {и вот на этом месте пишет "Invalid numeric format"}
place.rast:=rast2;
with n do
begin
name:=place.name;
pop:=place.pop;
writeln(name);
write(' ',rast);
writeln;
end;
end;
readln;
end.
uses crt;
type city=record
name:string[15];
rast:real;
end;
var ch:char;
rast2:real;
n:array [1..100] of city;
place:city;
f,f1:text;
ii,i,number:byte;
begin
clrscr;
assign(f,'data.txt');
reset(f);
readln(f,number);
for i:=1 to number do
begin
for ii:=1 to 15 do
begin
read(f,ch);
place.name[ii]:=ch;
write(ch);
end;
readln(f,q); {и вот на этом месте пишет "Invalid numeric format"}
place.rast:=rast2;
with n do
begin
name:=place.name;
pop:=place.pop;
writeln(name);
write(' ',rast);
writeln;
end;
end;
readln;
end.
И ещё одна проблема:
не выводит поле NAME в теле оператора
Код:
with n do
begin
writeln(name);
begin
writeln(name);
хотя считывает в операторе
Код:
for ii:=1 to 15 do
begin
read(f,ch);
place.name[ii]:=ch;
end;
begin
read(f,ch);
place.name[ii]:=ch;
end;
верно, проверял вставляя после place.name:=ch
write(ch);