IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на файл, Помогите, что здесь не так?
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


 
{$N+}
program lab8;
uses crt;
type q=record
f:string [10];
p:string [10];
g:integer;
r:integer;end;
var w:file of q;
m:q;
i, r_max, s:integer;

Begin
assign(w,'t.txt');
rewrite(w);
for i:=1 to 10 do begin
writeln('familya');
readln (m.f);
writeln('pol');
readln (m.p);
writeln('god rojdeniya');
readln (m.g);
writeln('rost v cm');
readln (m.r);
write(w, m); end;
reset(w);
for i:=1 to 10 do begin
read(w,m);
write (m.f, m.p, m.g, m.r);
end;
s:=1;
seek(w,0);
for i:=1 to 10 do begin
if m.r>s then r_max:=m.r;
writeln(m.f, m.p, m.g, m.r);
writeln (r_max); end;
readln;
end.





Задача на файл, Помогите, что здесь не так?

Вот само задание: Запись имеет вид: фамилия, пол, год рождения, рост. Вывести данные о самом высоком спрорцмене.

Сообщение отредактировано: dae-woo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(dae-woo @ 24.10.2009 21:49) *
Ну поппробуй ее запустить она компилиться, но нехрена неправельно работает=((
Чисто дружеский совет: ты гораздо быстрее и надежнее получишь помощь, если будешь точнее указывать основные симптомы неправильной работы программы. Ты пойми: что большинство (кто даже смог бы помочь), просто поленится скачивать, компилировать и запускать (как я, например), если не будет иметь зацепки.

В нижнем куске у тебя ошибка на ошибке.
Ты перематываешь файл на начало (хотя, лучше писать просто Reset(w) вместо Search(w,0) ), но ты его не читаешь больше никогда. Читай заново каждую запись в цикле (хотя, это можно было сделать и в предыдущем цикле, в котором ты выврдишь записи на печать).

Ты запутался в переменных s и r_max. Я полагаю, s - номер нужной записи в файле. Тебе надо сравнивать рост и запоминать его, но еще тебе нужен номер записи спортмена с макс ростом, чтоб потом ее прочитать и вывести.

Короче, примерно так (не проверял).. Этот код заменяет ОБА последних цикла. Я заменил for на while для большей гибкости.
  i:=0;
r_max:=0;
Reset(w);
while not EoF(w) with m do begin
Read(w,m);
if r>r_max then begin
r_max:=r;
s=i
end;
Inc(i);
writeln(i:3,' : ',f:20, p:10, g:10, r:10)
end;
Search(w,s);
Read(w,m);
with m do writeln('Max hight sportsmen is ',f:20, p:10, g:10, r:10);

И закрывай файл в конце..
Если что неясно - спрашивай smile.gif

Добавлено через 17 мин.
И еще вопрос: если макмимальный рост имеют ДВА (или больше) спортсмена - выводить только перврго или всех? Если всех, то нужен второй цикл. Счетчик записей тогда становится не нужен, и тот кусок будет выглядеть приметно так:
  r_max:=0;
Reset(w);
while not EoF(w) with m do begin
Read(w,m);
if r>r_max then r_max:=r;
writeln(f:20, p:10, g:10, r:10)
end;
Reset(w);
while not EoF(w) with m do begin
Read(w,m);
if r=r_max then writeln('Max hight sportsmen is ',f:20, p:10, g:10, r:10);
end;



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.05.2024 15:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name