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

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

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

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


студент..
***

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

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


Дали след. задачу: дан файл с неизвестным кол-вом строк, нужно в начало каждой строки поставить кол-во символов, а в конец файла кол-во строк. Первую часть я вроде сделал, а вот со второй никак... Помогите найти ошибку!!! Заранее благодарен!!! smile.gif
uses crt;
var a:array [1..100] of string[105];
i,j,m,k:integer;
s:string;
f:text;
begin
assign (f,'chukcha.txt');
reset (f);
begin
repeat
readln (f, a[i]);
i:=i+1;
j:=j+1;
until eof(f);
end;
close(f);

for i:=1 to j do begin
m:=length(a[i]);
str(m, s);
insert (s, a[i], 1);
end;

rewrite (f);
for k:=1 to j do
begin
Writeln(f, a[k]);
end;
Write (f,j);

close (f);
end.


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата(Clerick @ 13.04.2006 18:39)
дан файл с неизвестным кол-вом строк

Так может лучше обойтись БЕЗ массива? Ведь количество строк может быть и больше размерности массива...
var
j: integer;
s: string;
f, f_out: text;

begin
assign(f,'f.txt'); reset (f);
assign(f_out, 'tmp.txt'); rewrite(f_out);

j := 0;
while not eof(f) do begin
readln(f, s); inc(j);
writeln(f_out, length(s), ' ' + s);
end;
writeln(f_out, j);

close(f); close(f_out);
erase(f); rename(f_out, 'f.txt');
end.

Будет работать, если в файле нет строк длиннее 255 символов...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


студент..
***

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

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


Цитата(volvo @ 13.04.2006 21:54) *

Так может лучше обойтись БЕЗ массива? Ведь количество строк может быть и больше размерности массива...

Спасибо большое за код!!! И все-таки, как исправить мой, что бы он работал(если в задаче ограниченное кол-во строк, скажем всего лишь 50)? blink.gif


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Так:
uses crt;
var
a:array [1..100] of string[105];
i,j,m,k:integer;
s:string;
f:text;

begin
assign (f,'f.txt');
reset (f);
i := 1; j := 0;
begin
repeat
readln (f, a[i]);
i:=i+1;
j:=j+1;
until eof(f);
end;
close(f);

for i:=1 to j do begin
// m:=length(a[i]);
str(length(a[i]), s);
insert (s + ' ', a[i], 1);
end;

rewrite (f);
for k:=1 to i do begin { <--- До I а не J }
Writeln(f, a[k]);
end;
Writeln(f, j);

close (f);
end.

?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


студент..
***

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

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


Хм... Неверно работает... Первая часть все круто, а вот вторая... Прога записывает в файл еще одну строчку(в ней "0"), соотвественно суммирует и ее. Итого получается ровно на одну строчку больше... blink.gif


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Не знаю. У меня работает как положено. Приведи свой входной файл...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


студент..
***

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

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


Цитата(volvo @ 13.04.2006 22:22) *

Не знаю. У меня работает как положено. Приведи свой входной файл...

Элементарный
f
fff
ff
fffff
ff
fffff
ff
------
А выводит
1 f
3 fff
2 ff
5 fffff
2 ff
5 fffff
2 ff
0
8

Сообщение отредактировано: Clerick -


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Perl. Just code it!
******

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

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


А ты уверен что в входном файле, в конце нету пустых строк ?

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


студент..
***

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

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


Уверен! Я же ее не создаю! Кстати, когда она есть, то выводит тоже самое! И в чем ошибка???

ЗЫ: Когда в конце кода меняю след.образом все норм. работает!

...
for k:=1 to i-1 do begin
Writeln(f, a[k]);
end;
Writeln(f, j-1);
...


??? blink.gif

Сообщение отредактировано: volvo -


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

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

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


Я думаю, что ты в своей проге исправил строку
 for i:=1 to j do begin
(кстати, не понял зачем),
а строку
 i := 1; j := 0;
забыл.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


студент..
***

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

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


Цитата(Malice @ 20.04.2006 21:14) *

Я думаю, что ты в своей проге исправил строку
 for i:=1 to j do begin
(кстати, не понял зачем)

Так сказал volvo...

Цитата
а строку
i := 1; j := 0;

забыл.

А где она должна быть?

Сообщение отредактировано: volvo -


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






А ты программу, которую я привел, внимательно изучил, ПРЕЖДЕ, чем говорить, что она не работает? (Hint: смотри строку №11)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

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

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


Цитата(Clerick @ 20.04.2006 19:14) *

Так сказал volvo...

Тогда, да. Volvo зря не скажет.

Цитата
А где она должна быть?

Сорри модераторам за оффтоп, но большое тебе спасибо, от души посмеялся lol.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


студент..
***

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

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


Цитата(Malice @ 20.04.2006 22:48) *

Тогда, да. Volvo зря не скажет.
Сорри модераторам за оффтоп, но большое тебе спасибо, от души посмеялся lol.gif


smile.gif Тоже долго смеялся! Сессия скоро, административные идут, голова еле соображает... mega_chok.gif

А насчет проги, работает нормально в конфигурации, приведенной volvo! Не знаю почему раньше не шла, мож глюк какой...

Пасибки всем за помощь!!! smile.gif


--------------------
После дождя обязательно выглянет солнце)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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