Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/39: Рейтинг темы: голосов - 39, средняя оценка - 4.87
Pluger
0 / 0 / 0
Регистрация: 24.10.2008
Сообщений: 7
1

Подсчитать количество слов в тексте, которые содержат одинаковое количество букв

24.10.2008, 20:00. Просмотров 7087. Ответов 10
Метки нет (Все метки)

помогите плз....если не сложно то с пояснениеями.


Подсчитать количество слов в тексте, которые содержат одинаковое количество
букв. Слова в тексте разделяются символом ' '-пробел.
'.'-признак конца строки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2008, 20:00
Ответы с готовыми решениями:

Подсчитать количество слов, которые содержат пары соседних одинаковых букв
Задание: Задана строка, что состоит из слов, разделенная одним или...

Подсчитать количество букв и количество слов в предложении
Надо написать программу, которая считает количество букв и количество слов в...

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

Количество слов из 4 букв в тексте
нужно написать программу, подсчитывающую количество слов из 4 букв в тексте....

Найти количество слов, которые содержат ровно три буквы «А»
Дана строка, состоящая из русских слов, набранных заглавными буквами и...

10
Puporev
Модератор
55066 / 42330 / 29233
Регистрация: 18.05.2008
Сообщений: 100,027
24.10.2008, 21:15 2
Подсчитать количество слов в тексте, которые содержат одинаковое количество букв.
Не понятно, что считать, приведите какой нибудь пример. Если в предложении 2 слова по 4 буквы, 2 слова по 3 буквы и три слова по 5 букв, то какие слова считать?
0
Arriba
255 / 171 / 27
Регистрация: 17.10.2008
Сообщений: 770
24.10.2008, 21:21 3
Маленький такой вопросик есть, а так сказать набор слов надо брать из файла? или пользователь сам вводить должен? хи-хи или же пользователь вначале должен заполнить текстовый фаил, а потом по всему текстовому файлу смотреть нуно?

Добавлено через 2 минуты 12 секунд
Puporev, а как я понимаю, нужно считать все слова и вывести ввиде:
число слов с 1 буквой=
число слов с 2 буквами=
число слов с 3 буквами=
0
Pluger
0 / 0 / 0
Регистрация: 24.10.2008
Сообщений: 7
24.10.2008, 21:25  [ТС] 4
да именно в таком виде, ну, мне сказали что нужно в самой программе текст вводить, использовать латиницу , маленькие буквы вот
0
Arriba
255 / 171 / 27
Регистрация: 17.10.2008
Сообщений: 770
25.10.2008, 00:10 5
Pluger

вот написал я програмку, и добавил комментарии ко всем строчкам,
надеюсь не будет перебора с ними, и не запутаю ими тебя.хи-хи
Если запутаю спрашивай, что непонятно.

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
37
38
39
40
41
program pr1;
 
var    s,l:string; {определяем строковые переменные}
   i,k,n,m:integer;{определяем целочисленные переменные}
 
begin
   Write('vvedi predlojenie s=');{просим ввести строчку}
   Readln(s);{записываем строчку в переменную s}
   m:=1;
     for i:=1 to length(s) do {цикл для определения числа пробелов}
       if s[i]=' ' then       {нужен чтоб узнать кол-во слов}
         m:=m+1;
   n:=1;   {задаём длинну слова для поиска}
   repeat  {ищем слово длинной n, цикл идёт до кол-ва слов (m) }
      k:=0;  {начальные значения переменных для поиска длинны слов}
      i:=1;  {}
      l:=''; {}
        while i<>length(s)+1 do {цикл для поиска длинны каждого слова в S}
           begin
              if s[i]<>'.'then
                  begin          {если i-тый элемент из строчки S <> точке}
                     if (s[i]<>' ') then {узнаём равен ли i-тый элемент из S пробелу}
                        l:=l+s[i]    {собираем по элементам слово}
                     else
                       begin   {если найден пробел, тогда у нас есть одно слово L из S}
                          if n=length(l) then {узнаём равна ли длинна слова длинне, которую мы ищем}
                            k:=k+1;   {если равна то добавляем к колличеству найденных слов ещё одно}
                          l:='';     {опустошаем L для записания в него другого слова из строки S}
                     end;
                  end
              else  {если i-тый элемент = точке}{то узнаём длинну слова без точки}
                  if n=length(l) then {узнаём равна ли длинна слова длинне, которую мы ищем}
                   k:=k+1; {если равна то добавляем к колличеству найденных слов ещё одно}
                i:=i+1; {следующий элемент в строчке S}
           end;
        if k<>0 then {если найдено хоть одно слово нужной длинны, выводим колличество найдённых}
         Writeln('n=',n,' k=',k);
      n:=n+1; {ищем слово большей длинны}
   until n>m;  {прошлись по всем словам в строке S}
   Readln; {задержка перед выходом}
end.


Удачи в разборке программы.
2
Arriba
255 / 171 / 27
Регистрация: 17.10.2008
Сообщений: 770
25.10.2008, 00:10 6
Pluger

вот написал я програмку, и добавил комментарии ко всем строчкам,
надеюсь не будет перебора с ними, и не запутаю ими тебя.хи-хи
Если запутаю спрашивай, что непонятно.

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
37
38
39
40
41
program pr1;
 
var    s,l:string; {определяем строковые переменные}
   i,k,n,m:integer;{определяем целочисленные переменные}
 
begin
   Write('vvedi predlojenie s=');{просим ввести строчку}
   Readln(s);{записываем строчку в переменную s}
   m:=1;
     for i:=1 to length(s) do {цикл для определения числа пробелов}
       if s[i]=' ' then       {нужен чтоб узнать кол-во слов}
         m:=m+1;
   n:=1;   {задаём длинну слова для поиска}
   repeat  {ищем слово длинной n, цикл идёт до кол-ва слов (m) }
      k:=0;  {начальные значения переменных для поиска длинны слов}
      i:=1;  {}
      l:=''; {}
        while i<>length(s)+1 do {цикл для поиска длинны каждого слова в S}
           begin
              if s[i]<>'.'then
                  begin          {если i-тый элемент из строчки S <> точке}
                     if (s[i]<>' ') then {узнаём равен ли i-тый элемент из S пробелу}
                        l:=l+s[i]    {собираем по элементам слово}
                     else
                       begin   {если найден пробел, тогда у нас есть одно слово L из S}
                          if n=length(l) then {узнаём равна ли длинна слова длинне, которую мы ищем}
                            k:=k+1;   {если равна то добавляем к колличеству найденных слов ещё одно}
                          l:='';     {опустошаем L для записания в него другого слова из строки S}
                     end;
                  end
              else  {если i-тый элемент = точке}{то узнаём длинну слова без точки}
                  if n=length(l) then {узнаём равна ли длинна слова длинне, которую мы ищем}
                   k:=k+1; {если равна то добавляем к колличеству найденных слов ещё одно}
                i:=i+1; {следующий элемент в строчке S}
           end;
        if k<>0 then {если найдено хоть одно слово нужной длинны, выводим колличество найдённых}
         Writeln('n=',n,' k=',k);
      n:=n+1; {ищем слово большей длинны}
   until n>m;  {прошлись по всем словам в строке S}
   Readln; {задержка перед выходом}
end.

Удачи в разборке программы.
2
Arriba
255 / 171 / 27
Регистрация: 17.10.2008
Сообщений: 770
25.10.2008, 00:10 7
Pluger

вот написал я програмку, и добавил комментарии ко всем строчкам,
надеюсь не будет перебора с ними, и не запутаю ими тебя.хи-хи
Если запутаю спрашивай, что непонятно.

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
37
38
39
40
41
program pr1;
 
var    s,l:string; {определяем строковые переменные}
   i,k,n,m:integer;{определяем целочисленные переменные}
 
begin
   Write('vvedi predlojenie s=');{просим ввести строчку}
   Readln(s);{записываем строчку в переменную s}
   m:=1;
     for i:=1 to length(s) do {цикл для определения числа пробелов}
       if s[i]=' ' then       {нужен чтоб узнать кол-во слов}
         m:=m+1;
   n:=1;   {задаём длинну слова для поиска}
   repeat  {ищем слово длинной n, цикл идёт до кол-ва слов (m) }
      k:=0;  {начальные значения переменных для поиска длинны слов}
      i:=1;  {}
      l:=''; {}
        while i<>length(s)+1 do {цикл для поиска длинны каждого слова в S}
           begin
              if s[i]<>'.'then
                  begin          {если i-тый элемент из строчки S <> точке}
                     if (s[i]<>' ') then {узнаём равен ли i-тый элемент из S пробелу}
                        l:=l+s[i]    {собираем по элементам слово}
                     else
                       begin   {если найден пробел, тогда у нас есть одно слово L из S}
                          if n=length(l) then {узнаём равна ли длинна слова длинне, которую мы ищем}
                            k:=k+1;   {если равна то добавляем к колличеству найденных слов ещё одно}
                          l:='';     {опустошаем L для записания в него другого слова из строки S}
                     end;
                  end
              else  {если i-тый элемент = точке}{то узнаём длинну слова без точки}
                  if n=length(l) then {узнаём равна ли длинна слова длинне, которую мы ищем}
                   k:=k+1; {если равна то добавляем к колличеству найденных слов ещё одно}
                i:=i+1; {следующий элемент в строчке S}
           end;
        if k<>0 then {если найдено хоть одно слово нужной длинны, выводим колличество найдённых}
         Writeln('n=',n,' k=',k);
      n:=n+1; {ищем слово большей длинны}
   until n>m;  {прошлись по всем словам в строке S}
   Readln; {задержка перед выходом}
end.


Удачи в разборке программы.
1
Puporev
Модератор
55066 / 42330 / 29233
Регистрация: 18.05.2008
Сообщений: 100,027
25.10.2008, 10:04 8
Программа нормально работает, но предложу пару изменений, оптимизирующих код.
1. Чтобы не возиться с точкой, вставим перед ней пробел.
2. Можно не собирать буквы в слова, а потом применять функцию Length, а сразу считать количество букв в слове, сами то слова нам не нужны.
Привожу слегка измененный код.

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
uses crt;
var    s:string;
        i,k,n,m,l:integer;
begin
   clrscr;
   Write('vvedi predlojenie s=');
   Readln(s);
   insert(' ',s,pos('.',s));
   m:=1;
   for i:=1 to length(s) do  {цикл для определения числа пробелов}
   if s[i]=' ' then m:=m+1;  {нужен чтоб узнать кол-во слов}
   n:=1;   {задаём длину слова для поиска}
   repeat  {ищем слово длиной n, цикл идёт до кол-ва слов (m) }
    k:=0;i:=1; l:=0;{начальные значения переменных для поиска длины слов}
    while i<>length(s)+1 do {цикл для поиска длины каждого слова в S}
        begin
          if s[i]<>'.'then
             begin          {если i-тый элемент из строчки S <> точке}
               if (s[i]<>' ') then {узнаём равен ли i-тый элемент из S пробелу}
               l:=l+1    {считаем количество букв в слове}
               else
                  begin   {если найден пробел, тогда у нас есть одно слово длины L из S}
                    if n=l then {узнаём равна ли длина слова длине, которую мы ищем}
                    k:=k+1;   {если равна то добавляем к колличеству найденных слов ещё одно}
                     l:=0;     {обнудяем счетчик L для подсчета в очередном слове}
                 end;
             end;
          i:=i+1; {следующий элемент в строчке S}
      end;
    if k<>0 then {если найдено хоть одно слово нужной длины, выводим колличество найденных}
    Writeln('Слово из ',n,' букв встречается ',k,' раз');
    n:=n+1; {ищем слово большей длины}
   until n>m;  {прошлись по всем словам в строке S}
   Readln; {задержка перед выходом}
end.
1
Pluger
0 / 0 / 0
Регистрация: 24.10.2008
Сообщений: 7
25.10.2008, 18:30  [ТС] 9
спасибо огромное... в школе паскаль вообще не изучали , а в институте азы не объясняют, так что приходится туго...
0
Arriba
255 / 171 / 27
Регистрация: 17.10.2008
Сообщений: 770
25.10.2008, 20:57 10
Puporev, Молодец, я не стал использовать вставленный пробел, потому что если допустим у нас после слова стоит не точка а допустим пробел и точка, тогда у нас цикл пробежится ещё разок, вот и решил оставить. Kласно что написал insert; узнал новенького.

Добавлено через 3 минуты 17 секунд
Pluger, мы в школе байсик мучали вообще, досовский который и только 2 последних года, а в универ пришёл, там сразу дельфи,хорошо познакомился с девушкой, помогла на начальном этапе, и мило и учёба. удачки,главное чтоб нравилось!
0
Puporev
Модератор
55066 / 42330 / 29233
Регистрация: 18.05.2008
Сообщений: 100,027
25.10.2008, 21:09 11
если допустим у нас после слова стоит не точка а допустим пробел и точка
Если по уму, то после вставки пробела нужно пройтись по всей строке и удалить лишние пробелы и знаки препинания, вдруг пользователь между словами ввел три пробела, или запятую где поставил. Просто в условии задачи это не говорится, не стал усложнять код, а то автор темы совсем запутается.
1
25.10.2008, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2008, 21:09

Подсчитать количество гласных букв в тексте
1. Вводится строка произвольного текста. Подсчитать количество гласных букв....

Подсчитать количество гласных букв в тексте
дан текст,ХРАНЯШИЙСЯ В ТЕКСТОВОМ ФАЙЛЕ.Подсчитать количество гласных букв в...

Как подсчитать количество слов в тексте?
Программа у меня практически сделана, но подсчитывает слова только в первой...


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

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

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