Господа! помогите в написании программы ( array of string )

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Господа! помогите в написании программы ( array of string )

Сообщение *13* » 19.12.2006 20:55:30

написать программу, в которой элементам одномерного массива А присваиваются строки из файла T. Вывести на экран массив А. Подсчитать кол-во строк, заканчивающихся на "!"

собсно, не понимаю , как нужно заполнять массив строк. не заполняется он , и всё :( напротив строки, где останавливается выполнение програмы, я поставил восклицательные знаки.
Код: Выделить всё
program bot;

{$mode objfpc}{$H+}

uses
   Classes,
   crt;
var
  a:array of string;
  T:text;
  m,g,j,name:string;
  c,d,i,k:byte;

begin
writeln('Vvedi imja faila');
readln(name);
assign(t,name);
reset(t);
k:=0;
  while not eof(t) do
  begin
  readln(t,g);
  k:=k+1;
  end;
close(T);
setlength(a,k);
reset(t);
  for i :=0 to k Do
  begin
  readln(t,j);
  a[i]:=j;              !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  m:=a[i];
  c:=length(m);
    if m[c]='!' then
    d:=d+1;
  end;
writeln('Na vosklizatelnij znak zakanchivautsa ',d,' strok');
  for i:=1 to k Do
  writeln(a[i]);
end.     

п.с. огромная просьба тем, кто знает в чём ошибка и имеет пару минуток свободного времени, не просто расказать в чем она заключаетсЯ, но и показать на практике как правильно :roll: ато мозг от этих программ уже скоро расплавиться окончательно =)
п.с.с. заранее спасибо.
*13*
новенький
 
Сообщения: 28
Зарегистрирован: 14.12.2006 16:29:57

Сообщение Alexander » 20.12.2006 02:31:45

Я думаю, for i :=0 to k - 1
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 703
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение LAutour » 20.12.2006 08:01:52

А за оптмальностью кода преподы разве не следят?

Код: Выделить всё
program bot;

{$mode objfpc}

var
  a:array of string;
  name: string;
  t:text;
  i,k,d:integer;

begin
writeln('Vvedi imja faila');
readln(name);
{I-}
assign(t,name);
reset(t);
{I+}
  if ioresult <> 0 then
  begin
  writeln('nelza otkrit fail: ',name);
  exit;
  end;
k:=-1;
  while not eof(t) do
  begin
  readln(t);
  inc(k);
  end;
setlength(a,k + 1);
close(t);
reset(t);
d := 0;
  for i :=0 to k Do
  begin
  readln(t,a[i]);
    if a[i][length(a[i])]='!' then
    inc(d);
  end;
close(t);
writeln('Na vosklizatelnij znak zakanchivautsa ',d,' strok');
  for i:=0 to k Do
  writeln(a[i]);
setlength(a,0);
end.
LAutour
новенький
 
Сообщения: 34
Зарегистрирован: 13.06.2006 10:30:34

Сообщение *13* » 20.12.2006 16:20:07

спасибо большое :roll: че это я не догалася в память тут же вносить а не потом черзе переменную- не знаю :wink:
а что значит коментарий {I-} и {I+} ?
*13*
новенький
 
Сообщения: 28
Зарегистрирован: 14.12.2006 16:29:57

Сообщение LAutour » 21.12.2006 07:42:19

сорри, забыл $ добавить: {$I-} {$I+} - директива отменяет или задает генерацию кода, проверяющего результат обращения к процедуре ввода-вывода.

Вообще-то, если бы книги по Паскалю или Делфи бы почитал (раздел по работе с файлами) сам бы мог исправить.
LAutour
новенький
 
Сообщения: 34
Зарегистрирован: 13.06.2006 10:30:34


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 83

Рейтинг@Mail.ru