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

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

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

 
 Ответить  Открыть новую тему 
> Файл заметок, Запись и удаление из файла
сообщение
Сообщение #1


Новичок
*

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

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


Всем привет. smile.gif
Вот запутался в одной задаче.
А условие такое:
Написать программу, которая считывает текстовый файл с записями (заметками), записывает это в массив. Потом мы добавляем заметку или удаляем. В файле изменения тоже происходят.
Тут у меня при считывании файла и записи его в массив выводится почему-то всегда последняя строка файла, может кто-нибудь подскажет в чем дело.

Пример файла:
Сегодня нужно купить хлеб
Позвонить Наташе
27 октября зайти к Саше


Код

program oboloch;
uses crt;
var i,j: integer; a: text; Mas: array [1..200] of string;
begin clrscr; textcolor(lightgreen);
{n:=0;}
assign(a,'c:\base.txt');
reset(a);
i:=0;
while not eof(a) do
begin
i:=i+1;
readln(a,Mas[i]);
end;
close(a);
for j:=1 to i do writeln(Mas[i]);
{writeln(a);}
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Прогрессор
****

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

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


for j:=1 to i do writeln(Mas[i]);  
Надо Mas[j] ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Atos: спасибо smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


Вот ребята доделываю прогу, опять баг случился, не могу добавить в массив строку. Может поможете? smile.gif
Код

program oboloch;
uses crt;
var i,j,n,d: integer; a: text;
st,k: string;
Mas: array [1..200] of string;
begin clrscr; textcolor(lightgreen);
assign(a,'C:\base.txt');
reset(a);
i:=0;
while not eof(a) do
begin
i:=i+1;
readln(a,Mas[i]);
end;
close(a);
for j:=1 to i do writeln(Mas[j]);
writeln;
write(' Delete - 1, Dobavit - 2, Escape - 3 >>> ');
readln(d);
case d of
1: begin
      write(' Input number strig massiva for delete> ');
      readln(n);
      for j:=n to i do
      mas[j]:=mas[j+1];
    end;
2:  
{Вот здесь ребята что-то не так...}
{Не обращайте внимание на хлам....}
begin
      write(' Input string> ');
      readln(st);
      k:=j+st;
      for j:=1 to i do
      begin
      {write(' ');}
      readln(mas[j]);
      end;
   end;
{Конец чего-то не так}

else
halt(1);
end;
writeln;
for j:=1 to i do writeln(Mas[j]);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Попробуй тот кусок, котрый ты выделил, переписать вот так:
begin
write(' Input string> ');
readln(st); { Прочел строку }
inc(i); { увеличил счетчик строк в массиве на 1 }
mas[i] := st; { и записал ЗА всеми существующими строками новую... }
end;

И все, ничего никуда переносить не нужно...
Единственное, что еще осталось сделать - при удалении строки из массива уменьшать индекс:
1: begin
write(' Input number strig massiva for delete> ');
readln(n);
for j:=n to i do
mas[j]:=mas[j+1];

dec(i); { <-- Вот это !!! }
end;

Тогда у тебя в I в каждый момент будет храниться количество строк в массиве...
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 7.05.2024 13:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name