Форум программистов, компьютерный форум CyberForum.ru

Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Aleksashka
 Аватар для Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
10.07.2012, 21:53     Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++) #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
37
38
39
program prog;
uses crt;
var min,len, i, j,k : integer;
    s,slovo, str, n: string;
   min_str : array [1..100] of string;
begin
clrscr;
writeln ('Введите текст:');
readln(s);
s:=s+' ';
min := length(s);
len := 0;
min_str[1] := '';
str := '';
j := 1;
for i:=1 to length(s) do
        if s[i]<>' ' then
                       begin
                            inc(len);
                            str := str + s[i];
                       end
                else
                   begin
                     if len<min then begin
                                       min := len;
                                       min_str[j] := str;
                                       slovo:=str;
                                       inc(j);
                                      end;
                      len := 0;
                      str := '';
                    end;
writeln(j);
for i := 1 to j-1 do
writeln('Самое короткое слово: ', min_str[i]);
for i:=1 to length(s) do
if pos(slovo,s[i])<>0 then inc (k);
writeln('Слово',' ',slovo,' ','встречалось',' ',k,' ','раз');
end.
Помогите пожалуйста, очень нужно!!!!
Я Си пока плохо разбираюсь, а прога уже на завтра нужна
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 21:53     Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++)
Посмотрите здесь:

C++ Определить сколько раз в строке встречается заданное слово
Определить сколько раз данное слово встречается в тексте C++
Определить сколько раз встречается в строке самое длинное слово C++
Строки. Определить , сколько раз встречается в ней самое длинное слово C++
Определить, сколько раз встречается заданное слово в предложении C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alekola
 Аватар для alekola
21 / 21 / 1
Регистрация: 04.08.2011
Сообщений: 103
12.07.2012, 03:05     Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++) #2
Я тоже плохо разбираюсь, попробывал тебе помочь, ошибку пока найти не могу, кто исправит буду благодарен.
C++ (Qt)
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
42
43
#include <iostream>
#include <string>
 
class word /* Класс слово. */
{
    public:
    std::string text;  //текст слова
    int count;   // количество букв
    int wcount;  //количество слов
    word (std::string set_text, int set_count) //
        :text(set_text), count(set_count) {wcount=0;}
    void show() { std::cout << "Слово "<< text << " встречается " << wcount <<" раз"; }
};
word get_word();
 
int main() {
word res("",0);
res=get_word(); 
res.show();
return 0;
}
 
word  get_word()
{
word min("",100); // храним минимальное найденное
word tmp("",0); //инициализируем которое будем сравнивать с минимальным
std::string str; //строка пользователя
getline(std::cin,str);  
for(int i=0; i < str.size(); i++) // цикл по длине строки
 
if (str[i]!=' '){  //если не пробел
        tmp.text+=str[i]; //записываем буквы в слово
        tmp.count++;         //увеличиваем счетчик
                }
else {  /* поимали пробел*/         
 
if (tmp.count < min.count) { min.text = tmp.text; min.count=tmp.count;} 
//if (tmp.text == min.text) {min.wcount++;}
tmp.text="";
tmp.count=0;
}
 
return min; }
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
12.07.2012, 05:37     Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++) #3
гарантировано, что все слова строки с наименьшим количеством букв лексикографически равны?

Добавлено через 12 минут
если гарантировано, то можно так сделать...

C++
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
#include <map>
#include <string>
#include <iostream>
using namespace std;
 
int get_words(string& s)
{
    int repeat;
    int min_length = 2000000000;
    for(int i=0; i < s.length(); i++)
        if(s[i] != ' ')
        {
            int start_index = i;
            while(i != s.size() && s[i] != ' ')
                i++;
            if(i-start_index == min_length)
                repeat++;
            if(i-start_index < min_length)
            {
                repeat = 1;
                min_length = i-start_index;
                string str = s.substr(start_index, i-start_index);
            }
        }
    return repeat;
}
 
int main()
{
    string str;
    getline(cin, str);
    cout << get_words(str) << endl;
    system("pause");
    return 0;
}
Сфня
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 49
16.12.2013, 16:06     Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++) #4
[QUOTE=salam;3260164]гарантировано, что все слова строки с наименьшим количеством букв лексикографически равны?

Добавлено через 12 минут
если гарантировано, то можно так сделать.


А если не гарантированно, тогда как?

Добавлено через 3 минуты
salam, Ответьте)
Yandex
Объявления
16.12.2013, 16:06     Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++)
Ответ Создать тему
Опции темы

Текущее время: 02:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru