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

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

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

> Задача на файл, Помогите, что здесь не так?
dae-woo
сообщение 24.10.2009 20:30
Сообщение #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 - 24.10.2009 20:35
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 9)
amega
сообщение 24.10.2009 20:45
Сообщение #2


?
***

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

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


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

с чего ты решил что здесь что то не так, можеш поведать свою мисль
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dae-woo
сообщение 24.10.2009 20:49
Сообщение #3





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

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


Ну поппробуй ее запустить она компилиться, но нехрена неправельно работает=((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 25.10.2009 5:06
Сообщение #4


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

Группа: Модераторы
Сообщений: 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 
 К началу страницы 
+ Ответить 
dae-woo
сообщение 25.10.2009 11:26
Сообщение #5





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

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


ой что-то я непонял=((( куда это все лепить
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.10.2009 11:36
Сообщение #6


Гость






Цитата
куда это все лепить
dry.gif Лепить никуда ничего не надо в программировании. Надо разобраться, как работает предложенный код, и исправить свою программу соответствующим образом... Что именно непонятно по коду?
 К началу страницы 
+ Ответить 
Lapp
сообщение 25.10.2009 11:39
Сообщение #7


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

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

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


Цитата(dae-woo @ 25.10.2009 11:26) *
ой что-то я непонял=((( куда это все лепить
Ну я же ясно выразился (см. выше): "Этот код заменяет ОБА последних цикла"!!
Читать умеешь? очки надень..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dae-woo
сообщение 25.10.2009 13:53
Сообщение #8





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

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


выдает ошибки на
этой строчки: while not EoF(w) with m do begin
и незнает команды Search или хрен его что он несет((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 25.10.2009 13:56
Сообщение #9


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

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

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


Цитата(dae-woo @ 25.10.2009 13:53) *
этой строчки: while not EoF(w) with m do begin
и незнает команды Search или хрен его что он несет((

1. я пропустил do
2. спутал, надо seek
извиняюсь. Что ж ты, такие простые ошибки не можешь сам исправить?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dae-woo
сообщение 25.10.2009 14:01
Сообщение #10





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

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


do вставил я тут загнал себя в угол=))

Добавлено через 8 мин.
спасиб народ!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 21.06.2025 15:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"