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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2009, 20:22   #1
ТРОЯН=)
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 58
По умолчанию И снова файл

Всем привет,вот две задачки помогите довести до ума...

1.Находит среднее арихметическое несколько раз по три числа-надо теперь это всё в файл записать(неполучается)!
Код:
program srednie;
uses crt;
var
f : text;
a,b,c : integer;
s : real;

begin
clrscr;
assign(f,'test.txt');
reset(f);
s := 0;
read(f,b,c);
while not eof(f) do
 begin
 a := b;
 b := c;
 readln(f,c);
 s := (a+b+c)/3;
 writeln(f,s); 
 end;

close(f);
readln;
end.
2.Выравнивание по центру или правому краю-неровно блин строки выравнивает(((
Код:
Program file14;
uses crt;
 var
 f,f1:text;
 ch:char;
 fn:string;
 s,m,subs,m1:string;
cline, k,i,e:integer;
procedure notleft;
 begin
while not eof(f) do
 begin
  readln(f,m);
  cline:=(180-length(m)) div 2;
 for i:= 1 to cline do
insert(' ',m,pos(' ',m));
   writeln(f1,m);
  end;
end;

procedure centre;
 begin
 while not eoln(f) do
 begin
  readln(f,m);
   k:=(80-length(m)) div 2;
  for i:= 1 to k do
   insert(' ',m,pos(' ',m));
   writeln(f1,m);

  end;
 end;
begin
clrscr;
 writeln('‚ўҐ¤ЁвҐ Ё¬п д*©«*');
 readln(fn);
 fn:=fn+'.txt';
 assign(f,fn);
 {$I-}
 reset(f);
 {$I+}
 if IoResult<>0 then exit;
 assign(f1,'ff');
 rewrite(f1);
 writeln('e');
 ch:=readkey;
if ch='1' then centre;
if ch='2'then  notleft;
 close(f);
 close(f1);
 erase(f);
 rename(f1,fn);
 end.
ТРОЯН=) вне форума Ответить с цитированием
Старый 23.04.2009, 20:43   #2
krypton
Пользователь
 
Аватар для krypton
 
Регистрация: 26.06.2007
Сообщений: 22
По умолчанию

насколько я помню для записи в файл надо использовать rewrite а не reset
Дорогу одолеет идущий.
http://www.krypton.ucoz.net
"Кто владеет информацией - тот владеет миром!"
Уинстон Черчиль (Натан Ротшильд, Френсис Бекон)
krypton вне форума Ответить с цитированием
Старый 23.04.2009, 21:30   #3
ТРОЯН=)
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 58
По умолчанию

не rewrite это новый файл создать)
ТРОЯН=) вне форума Ответить с цитированием
Старый 23.04.2009, 21:48   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Во-первых, не
Код:
 readln(f,c);
а
Код:
 read(f,c);
Это важно.
Во-вторых, вы в цикле пытаетесь записать в файл из которого и производите чтение. Как вы себе это представляете?
Или сначала читайте числа в массив, либо пишите в другой файл.

По второй:
Все это выравнивание напрямую зависит от размера окна редактора.

ps Да, и забыл сказать, что reset открывает только для чтения.
Для добавления используйте append.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 23.04.2009 в 21:54.
Sazary вне форума Ответить с цитированием
Старый 23.04.2009, 21:50   #5
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Процедура ReWrite открывает файл, указанный в FileHandle для записи.
Если файл не существует, то он будет создан.
Если файл уже существует, содержание будет потеряно, и новые данные добавятся в начало.

Вот примерчик с нета (писать лень самому =) ):
Код:
var
  myFile : TextFile;
  text   : string;

begin
  // Попытка открыть файл Test.txt для записи
  AssignFile(myFile, 'Test.txt');
  ReWrite(myFile);

  // Запись нескольких известных слов в этот файл
  WriteLn(myFile, 'Hello');
  WriteLn(myFile, 'World');

  // Закрытие файла
  CloseFile(myFile);

  // Переооткрытие файла в режиме только для чтения
  Reset(myFile);

  // Показ содержимого файла
  while not Eof(myFile) do
  begin
    ReadLn(myFile, text);
    ShowMessage(text);
  end;

  // Закрытие файла в последний раз
  CloseFile(myFile);
end;
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И снова Паскаль!! NitriNKa Помощь студентам 8 01.04.2009 19:57
И снова Chart SunKnight Общие вопросы Delphi 5 08.02.2008 11:58
Снова BassPlayer Viteef Компоненты Delphi 1 17.05.2007 08:10
(Это снова я) Как записать в файл? Air Общие вопросы Delphi 5 03.05.2007 20:36