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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 12:36   #1
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
Вопрос [Pascal] Считать текстовый файл

Всем привет! подскажите пожалуйста как правильно считать текстовый файл?
вот тут я написал программку которая создает и записывает файл который нужно будет считать в другой программе(нужно написать отдельную программу которая считывает этот файл).
я вот написал но эта неправильно...пожалуйста подскажите!


Которая записывает этот файл:
Код:
program pr_4;
uses crt;
var a:array[1..4,1..8] of integer;
    i,j:integer;
    f:text;
begin
clrscr;
assign(f,'c:\bp\bin\ramik\praktika\massiv.txt');
writeln('vvedite elementi massiva(celie chisla): ');
for i:=1 to 4 do
    for j:=1 to 8 do
    readln(a[i,j]);
rewrite(f);
for i:=1 to 4 do begin
    for j:=1 to 8 do begin
    write(f,a[i,j]);
    if j=8 then writeln(f,a[i,j]);
    end;
    end;
close(f);
end.

Пытался сделать которая считывает...но неправильно...=(
Код:
program pr_4;
uses crt;
var a:array[1..4,1..8] of integer;
    i,j:integer;
    f:text;
begin
clrscr;
assign(f,'c:\bp\bin\ramik\praktika\massiv.txt');
reset(f);
for i:=1 to 4 do begin
    for j:=1 to 8 do begin
    While not(eof(f)) do begin
    read(f,a[i,j]);
    end;
    write(f,a[i,j]);
    if j=8 then writeln(f,a[i,j]); 
    end;
    end;
close(f);
end.

Последний раз редактировалось Рамик; 27.05.2009 в 13:46.
Рамик вне форума Ответить с цитированием
Старый 27.05.2009, 12:41   #2
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

не понятно, почему при записи в файл оный не открыт для записи, не ужели тут не выдается ошибка???

ьежду ассигн и врителн надо вставить
Rewrite(f);
что создаст новый файл или перезапишет уже существующий...

И поясни, что такое "неправильно"... оно не работает, выдает ошибку или что? не те методы?
RusArtm вне форума Ответить с цитированием
Старый 27.05.2009, 12:46   #3
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от RusArtm Посмотреть сообщение
не понятно, почему при записи в файл оный не открыт для записи, не ужели тут не выдается ошибка???

ьежду ассигн и врителн надо вставить
Rewrite(f);
что создаст новый файл или перезапишет уже существующий...

И поясни, что такое "неправильно"... оно не работает, выдает ошибку или что? не те методы?

Rewrite(f); у меня стоит перед записью в файл...
а там где ты говоришь нету это сначала элементы заносятся в массив...

неправильно это то что он не может считать этот файл...
выдает нули:
00000000
00000000
00000000
00000000


так как текстовый файл вроде как считывается по строчно...а у меня он посимвольно...
Рамик вне форума Ответить с цитированием
Старый 27.05.2009, 12:54   #4
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Код:
program pr_4;
uses crt;
var a:array[1..4,1..8] of integer;
    i,j:integer;
    f:text;
begin
clrscr;
assign(f,'c:\bp\bin\ramik\praktika\massiv.txt');
reset(f);
for i:=1 to 4 do begin
    for j:=1 to 8 do begin
    While not(eof(f)) do begin
    end;
    write(f,a[i,j]); // здесь у вас a[i,j] типа string, а в var просисано что a:array[1..4,1..8] of integer;
    if j=8 then writeln(f,a[i,j]); 
    end;
    end;
close(f);
end.
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 27.05.2009, 13:27   #5
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Про открытие не доглядел, может я опять не вижу, но где происходит считываниеиз файла в офтором фрагменте? (read)?
Ну и считывать посимвольно можно только в символьную переменную, если читешь в интегер, то он считает число, отделенное либо пробелом, либо переводом на новую строку...
RusArtm вне форума Ответить с цитированием
Старый 27.05.2009, 13:45   #6
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Chudo4258 Посмотреть сообщение
Код:
program pr_4;
uses crt;
var a:array[1..4,1..8] of integer;
    i,j:integer;
    f:text;
begin
clrscr;
assign(f,'c:\bp\bin\ramik\praktika\massiv.txt');
reset(f);
for i:=1 to 4 do begin
    for j:=1 to 8 do begin
    While not(eof(f)) do begin
    end;
    write(f,a[i,j]); // здесь у вас a[i,j] типа string, а в var просисано что a:array[1..4,1..8] of integer;
    if j=8 then writeln(f,a[i,j]); 
    end;
    end;
close(f);
end.


так вводим то целые числа...
я попробывал в варе тип на стринг поменять тогда вообще ниче не выдает...
или я вас не понял ....
Рамик вне форума Ответить с цитированием
Старый 27.05.2009, 13:47   #7
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от RusArtm Посмотреть сообщение
Про открытие не доглядел, может я опять не вижу, но где происходит считываниеиз файла в офтором фрагменте? (read)?
...исправил...
но в программе это было...я тут забыл написать...
Рамик вне форума Ответить с цитированием
Старый 27.05.2009, 13:57   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

В первой программе:
У вас матрица чисел, а в файл пишете все сплошняком.
fixed
Код:
program pr_4;
uses crt;
var a:array[1..4,1..8] of integer;
    i,j:integer;
    f:text;
begin
clrscr;
assign(f,'massiv.txt');
writeln('vvedite elementi massiva(celie chisla): ');
for i:=1 to 4 do
    for j:=1 to 8 do
      readln(a[i,j]);
rewrite(f);
for i:=1 to 4 do
 begin
 for j:=1 to 8 do
  write(f,a[i,j],' ');
 if i<4 then writeln(f);
 end;
close(f);
end.
Во второй вообще бред. Уж извините.
Код:
program pr_4;
uses crt;
var a:array[1..4,1..8] of integer;
    i,j:integer;
    f:text;
begin
clrscr;
assign(f,'massiv.txt');
reset(f);
i := 1;
j := 1;
While not(eof(f)) do
 begin
 read(f,a[i,j]);
 write(a[i,j]:4);
 inc(j);
 if j>8 then
  begin
  inc(i);
  j := 1;
  writeln;
  readln(f);
  end;
 end;
close(f);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.05.2009, 14:00   #9
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

что такое inc(j); ?
Рамик вне форума Ответить с цитированием
Старый 27.05.2009, 14:06   #10
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Sazary,
Код:
if i<4 then writeln(f);
Код:
 inc(j);
 if j>8 then
  begin
  inc(i);
  j := 1;
  writeln;
  readln(f);
  end;
поясни пожалуйста
Рамик вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текстовый файл.Pascal. xartion Помощь студентам 2 26.05.2009 22:31
pascal.Текстовый файл Mashul'ka Помощь студентам 1 14.05.2009 19:45
Считать wav-файл С++ Skido Помощь студентам 4 30.01.2009 03:06
[Pascal] Создать текстовый файл Катуха Помощь студентам 1 23.12.2008 21:11
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55