Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 07.03.2009
Сообщений: 24
1

Работа с текстом.

07.05.2009, 19:40. Показов 3124. Ответов 9
Метки нет (Все метки)

Написать программу которая бы считала кол-во слов в блокноте .txt

За рание огромное спасибо!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2009, 19:40
Ответы с готовыми решениями:

работа с текстом
Помогите пожалуйста с заданием. вводится текстовый файл с n-ым количеством строк,если строка...

работа с текстом
распечатать все однокоренные слова в заданном тексте(корень задается)

Работа с текстом
Доброго времени суток! Нужно слова текста поместить в массив(элемент массива = слово). Есть такой...

Работа с текстом
Всем привет! Возник такой вопрос, как можно это реализовать. Есть папка project. В ней есть папка...

__________________
9
138 / 138 / 65
Регистрация: 20.03.2009
Сообщений: 235
07.05.2009, 19:55 2
предпологается, что между словами всего 1 пробел:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
uses crt;
var
f,g:Text;
i, KolSlov:integer;
s,ak:string;
begin
 KolSlov:=0;
 Assign(f,'c:/text.txt');
 Reset(f);
 Assign(g,'c:/slova.txt');
 Rewrite(g);
 while not (Eof(f)) do
 begin
   Readln(f,s);
   for i:=1 to Length(s)-1 do
     begin
       if (s[i]<>' ') then
       ak:=ak+s[i];
       if (s[i]=' ') and (s[i-1]<>' ') and (i>1) then
       begin
         KolSlov:=KolSlov+1;
         Writeln(g,ak);
         Writeln(ak);
         ak:='';
       end;
   end;
 end;
 KolSlov:=KolSlov+1;
 Writeln(g,ak);
 Writeln(ak);
 ak:='';
Close(g);
Writeln('Slov v file:',KolSlov);
Writeln('Zaversheno');
ReadLn;
end.
1
10 / 10 / 2
Регистрация: 07.05.2009
Сообщений: 22
08.05.2009, 00:04 3
Для любого кол-ва пробелов, пустых строк и т.д. и т.п.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
program prog1;
uses
    crt;
var
    txtFile : Text;
    wordsCount : integer;
    sim : Char;
    prevSim : Char;
begin
ClrScr;
Assign(txtFile, 'in.txt');
Reset(txtFile);
wordsCount := 0;
prevSim := ' ';
while not(Eof(txtFile)) do
    begin
    Read(txtFile, sim);
    if ((prevSim = ' ') or (prevSim = #10)) and (sim <> ' ') and (sim <> #13)
        then
            Inc(wordsCount);
    prevSim := sim;
  end;
Close(txtFile);
Writeln('Kol-vo slov = ', wordsCount);
Readln;
end.
1
1 / 1 / 0
Регистрация: 07.03.2009
Сообщений: 24
08.05.2009, 13:57  [ТС] 4
[QUOTE=dr.Bacardi;156416]Для любого кол-ва пробелов, пустых строк и т.д. и т.п.

[PASCAL]program prog1;
while not(Eof(txtFile)) do
begin
Read(txtFile, sim);
if ((prevSim = ' ') or (prevSim = #10)) and (sim <> ' ') and (sim <> #13)
then
Inc(wordsCount);
prevSim := sim;
end;


Спасибо друг, но не мог бы ты объяснить как работает этот фрагмент программы.
В частности что значит prevSim = #10? sim<>#13.
0
Модератор
63373 / 47069 / 32443
Регистрация: 18.05.2008
Сообщений: 114,085
08.05.2009, 14:17 5
Для любого кол-ва пробелов, пустых строк и т.д. и т.п.
Еще бы предусмотреть, если слова идут через знаки препинания без пробела, заменив их пробелами.

Добавлено через 2 минуты 28 секунд
В частности что значит prevSim = #10? sim <> #13.
#10 специальный символ, обозначающий конец строки, ну а уж не знать что такое #13, просто стыдно, это всего навсего переход на новую строку, код клавиши Enter.
0
10 / 10 / 2
Регистрация: 07.05.2009
Сообщений: 22
08.05.2009, 23:38 6
Подправленный вариант (учтены знаки препинания).

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
program prog1;
uses
      Crt;
var
      txtFile : Text;
      separators : Set of char;
      wordsCount : word;
      sim : char;
      prevSim : char;
begin
ClrScr;
Assign(txtFile, 'in.txt');
Reset(txtFile);
separators := [#13, #10, #27,  #9, ',', '.', '!', '?', ';'];    {*}
wordsCount := 0;
prevSim := #27;
while not(Eof(txtFile)) do
      begin
      Read(txtFile, sim);
      if (prevSim in separators) and not(sim in separators)      {**}
            then
                  Inc(wordsCount);
      prevSim := sim;
      end;
Close(txtFile);
Write('Kol-vo slov = ', wordsCount);
Readln;
end.
* Множество разделителей, т.е. множество символов, которые отделяют одно слово от другого (пробел, запятая, точка и т.д.)
#13#10 - переход на новую строку
#9 - табулянт
#27 - пробел
** Если предыдущий символ(prevSim) является разделителем, а текущий(sim) таковым не является => начало слова => увеличиваем wordsCount на 1 ))
0
Модератор
63373 / 47069 / 32443
Регистрация: 18.05.2008
Сообщений: 114,085
09.05.2009, 06:44 7
#27 - пробел
Извините, но это не пробел, это Esc, пробел #32.
0
1 / 1 / 0
Регистрация: 07.03.2009
Сообщений: 24
09.05.2009, 15:41  [ТС] 8
Цитата Сообщение от dr.Bacardi Посмотреть сообщение
Для любого кол-ва пробелов, пустых строк и т.д. и т.п.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
program prog1;  
uses
      Crt;
var
      txtFile : Text;
      separators : Set of char;
      wordsCount : word;
      sim : char;
      prevSim : char;
begin
ClrScr;
Assign(txtFile, 'in.txt');
Reset(txtFile);
separators := [#13, #10, #27,  #9, ',', '.', '!', '?', ';'];    {*}
wordsCount := 0;
prevSim := #27;
while not(Eof(txtFile)) do
      begin
      Read(txtFile, sim);
      if (prevSim in separators) and not(sim in separators)      {**}
            then
                  Inc(wordsCount);
      prevSim := sim;
      end;
Close(txtFile);
Write('Kol-vo slov = ', wordsCount);
Readln;
end.
end.
Эта программа считает строки а не слова

Добавлено через 1 минуту 30 секунд
Цитата Сообщение от Puporev Посмотреть сообщение
Извините, но это не пробел, это Esc, пробел #32.
Где можно посмотреть символы такие как:

#13 #32 и другие.
0
Модератор
63373 / 47069 / 32443
Регистрация: 18.05.2008
Сообщений: 114,085
09.05.2009, 15:42 9
Справочные материалы
0
10 / 10 / 2
Регистрация: 07.05.2009
Сообщений: 22
09.05.2009, 16:09 10
Цитата Сообщение от Puporev Посмотреть сообщение
Извините, но это не пробел, это Esc, пробел #32.
Согласен, извиняюсь

Цитата Сообщение от J0n1cK Посмотреть сообщение
Эта программа считает строки а не слова
Потому строки и считает, что в качестве разделителя не указан пробел
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2009, 16:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Работа с текстом
Помогите доделать) Вводится фраза, оканчивающаяся точкой, в которой слова разделены « »....

Работа с текстом
Привет всем, у меня есть текст выглядит так: Вода Сок Морс Как мне каждую строку взять как...

Работа с текстом
Всем привет! Помогите, пожалуйста, написать следующую программу: Программа с помощью прочитанного...

Работа с текстом
В переменной есть текст, нужно расставить абзацы, после знаков : .. ] и вывести в WebView уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.