Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 22:38   #1
Dmitrij
 
Регистрация: 19.11.2008
Сообщений: 7
Вопрос Паскаль. Файлы

Написал прогу по заданию
Описать функцию getInt(Name,k) целого типа, возвращающую k-й элемент файла целых чисел с именем Name (элементы нумеруются от 0). Если файл не существует или не содержит k-го элемента, то функция возвращает 0. С помощью этой функции вывести пять элементов данного файла с указанными номерами.
var
f:text;
k, d:byte;
s, filename:string;
function getInt (filename:string;k:byte):integer;
var f:text;
begin
assign (f, filename);
{$I-}
reset (f);
{$I+}
if IOresult<>0 then
begin
writeln ('FauJIa ',filename,' HeT!');
readln;
getInt:=0;
exit;
end;
if IOresult=0 then
begin
while not eof (f) do
begin
readln (f, s);
repeat
writeln ('BBeguTe k');
readln (k);
inc(d);
writeln ('eJIeMeHT c HoMepoM ',k,' = ',s[k+1]);
if k+1 > length (s) then
writeln ('0');
until (d=5);
end;
end;
end;
BEGIN
writeln ('BBeguTe uM9 FauJIa');
readln (filename);
getInt (filename, k);
END.
помогите решить проблемы во-первых она почему то зацикливается, а во-вторых подскажите как сделать чтобы при вводе имени файла не вводить расширение txt а тока имя файла спасибо!
Dmitrij вне форума Ответить с цитированием
Старый 30.03.2009, 23:41   #2
Костя КС
Пользователь
 
Аватар для Костя КС
 
Регистрация: 22.01.2008
Сообщений: 78
По умолчанию

1) чтобы не вводить '.txt' можно поменять строку
getInt (filename, k)
на
getInt (filename + '.txt', k)

2) зацикливается из-за лишнего begin
Код:
 begin
writeln ('FauJIa ',filename,' HeT!');
readln;
getInt:=0;
exit;
end;
if IOresult=0 then
begin
while not eof (f) do
begin
readln (f, s);
repeat
writeln ('BBeguTe k');
readln (k);
inc(d);
writeln ('eJIeMeHT c HoMepoM ',k,' = ',s[k+1]);
if k+1 > length (s) then
writeln ('0');
until (d=5);
end;
end;
end;
Если убрать выделенное красным, то должно работать нормально

Последний раз редактировалось Костя КС; 31.03.2009 в 00:01.
Костя КС вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Файлы playboy Помощь студентам 9 24.03.2009 13:42
Файлы!Паскаль ТРОЯН=) Помощь студентам 1 23.03.2009 10:08
Задача на файлы (Паскаль) Pihan Помощь студентам 6 17.03.2009 13:15
Типизированные файлы.Паскаль.help! ромка) Паскаль, Turbo Pascal, PascalABC.NET 1 17.05.2008 07:59