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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2008, 19:11   #1
Rasa
Новичок
Джуниор
 
Регистрация: 10.03.2008
Сообщений: 1
Вопрос текстфайл

Здравствуйте. Пишет Вам совсем зеленая по-программированию Раса. Надеюсь получить объяснения и консультации. У меня много вопросов, но начну постепенно. Вот задачка: дан текстовый файл (нпр., стишок), сосчитать все слова и вывести в другой файл. Но у меня не считает. Вот что я тут нацарапала:

program kiek_zodziu;
var k : integer;
f, g : text;
s, ss : string;
begin
assign (f, 'd.txt');
reset (f);
readln (f, s);
k := 0;
while not eoln(f) do
begin
read (f, ss);
//writeln (s);
k := k + 1;
//writeln (k);
end;
//assign (g, 'r.txt');
//rewrite (g);
//WriteLn(g, k);
close (f);
//close (g);
writeln (ss);
writeln (k);
Readln;
end.
Rasa вне форума Ответить с цитированием
Старый 09.04.2008, 21:37   #2
Костя КС
Пользователь
 
Аватар для Костя КС
 
Регистрация: 22.01.2008
Сообщений: 78
По умолчанию

Код:
program qqq;
var
f1,f2 : text;
st,s : string;
i : integer;
b : boolean;

begin
b := false;
i := 0;
assign(f1, '1.txt');
assign(f2, '2.txt');
reset(f1);
rewrite(f2);
while not EOF(f1) do
begin
readln(f1,st);

 if pos(' ', st)=0 then
 begin
 writeln(f2,st);
 i := i +1;
 end else
begin
while b=false do
begin
i := i+1;
if pos(' ', st)=0  then b:= true;
if b=true then writeln(f2,st)
else begin
s := copy(st,1,pos(' ',st)-1);
writeln(f2,s);
delete(st,1,pos(' ',st));
end;
end;
end;
b := false;
end;
writeln(f2);
writeln(f2,i);
close(f1);
close(f2);
end.
Это трудно обьяснить, лучше задавай конкретные вопросы что непонятно

Последний раз редактировалось Костя КС; 09.04.2008 в 22:12.
Костя КС вне форума Ответить с цитированием
Старый 09.04.2008, 21:53   #3
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

eoln - конец строки. используют только в редких случаяХ!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 10.04.2008, 09:46   #4
Artificial
Пользователь
 
Аватар для Artificial
 
Регистрация: 03.11.2007
Сообщений: 91
По умолчанию

assign(f1, '1.txt');
assign(f2, '2.txt');
Reset(f1);
while not EOF(f1) do
readln(f1,peremennaja);
Close(f1);
Rewrite(f2);
write(f2,peremennaja);
Close(f2);
Чего париться..
Artificial вне форума Ответить с цитированием
Старый 10.04.2008, 17:15   #5
Костя КС
Пользователь
 
Аватар для Костя КС
 
Регистрация: 22.01.2008
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Artificial Посмотреть сообщение
Чего париться..
???
в результате твоей проги в 2.txt будет вся последняя строка 1.txt, а не слова.
Костя КС вне форума Ответить с цитированием
Старый 10.04.2008, 19:20   #6
Костя КС
Пользователь
 
Аватар для Костя КС
 
Регистрация: 22.01.2008
Сообщений: 78
По умолчанию

может так проще:

Код:
program qqq;
var
f1,f2 : text;
s1    : char;  
 i    : integer;
begin
i := 0;
assign(f1, '1.txt');
assign(f2, '2.txt');
reset(f1);
rewrite(f2);
  while not EOF(f1) do
  begin
  read(f1,s1);
  if s1<>(#13) then begin  //#13 - символ начала новой строки
  write(f2,s1);
     if (s1= ' ') then
     begin
     i := i+1;
     writeln(f2);
     end;
  if eoln(f1) then i:=i+1;
  end;
end;
close(f1);
writeln(f2);
writeln(f2,i);
close(f2);
end.
первая прога берет каждую строку и делит её на слова.
А эта берет по одной букве,если это пробел - значит началось следующее слово
Костя КС вне форума Ответить с цитированием
Старый 11.04.2008, 09:10   #7
Artificial
Пользователь
 
Аватар для Artificial
 
Регистрация: 03.11.2007
Сообщений: 91
По умолчанию

Да, я твое задание не правильно понял)
Artificial вне форума Ответить с цитированием
Ответ


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