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

Найти наиболее часто встречающуюся букву и также вывести на экран в отдельной строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Tantal73
0 / 0 / 0
Регистрация: 08.06.2011
Сообщений: 4
08.06.2011, 16:47     Найти наиболее часто встречающуюся букву и также вывести на экран в отдельной строке #1
Помогите с прогой. :
В произвольном тексте (взятом из файла), содержащем не более 10 строк, в каждой строке не более 80 символов, найти и вывести на экран слова, в которых нет повторяющихся букв. Найти наиболее часто встречающуюся букву и также вывести на экран в отдельной строке.

Никак не могу составить цикл для поиска слов, в которых нет повторяющихся букв
Получилось это:

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
36
37
38
39
40
#include <fstream>
#include <iostream>
using namespace std;
 
void func(ifstream &fin)
{
    int kol=0;
    char slovo[10];
    
    while (!fin.eof())
    {
        int i,j,kol=0;
        fin>>slovo;
        for(i=0;slovo[i]!=0;i++)
            kol++;
        for(i=0;i<kol;i++)
        {
            for(j=i+1;j<kol;j++)
                if(slovo[i]==slovo[j])
                    break;
            cout<<slovo[i];
        }
        cout<<endl;
        fin.unget();
    }
    
}
int main(void)
{
    
    ifstream fin;
    fin.open("f.txt", ios::_Nocreate);
        if(fin==0)
        { cout<<"Net faila"<<endl;
            return -1;
    }
        func(fin);
        system("Pause");
        return 0;
}
Не могу понять в чём ошибка.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2011, 16:47     Найти наиболее часто встречающуюся букву и также вывести на экран в отдельной строке
Посмотрите здесь:

C++ Найти в массиве и вывести значение наиболее часто встречающегося элемента.
Найти в массиве и вывести значение наиболее часто встречающегося элемента C++
C++ Найти в строке string наиболее часто встречающуюся пару символов и заменить на один новый символ
C++ Дан непустой массив из цифр. Вывести на экран цифру наиболее часто встречающихся в этом массиве.
C++ Поиск наиболее часто встречающейся подстроки в строке
Вывести 10 наиболее часто встречающихся чисел C++
C++ Определить цифру, наиболее часто встречающуюся в числе
Определить во вновь полученной строке букву, встречающуюся большее число раз C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kjahert
48 / 48 / 5
Регистрация: 08.04.2011
Сообщений: 124
08.06.2011, 16:58     Найти наиболее часто встречающуюся букву и также вывести на экран в отдельной строке #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
const int SIZE =80;
void form (char*, char*);
 
void main()
{
        char buf[SIZE], outbuf[SIZE]={' '};
 
        while(cout<<"Vvedite stroky: ",
        cin.getline(buf, SIZE))
        {       
                form (buf, outbuf);
 
                cout<<"Rez: ";
                cout<<outbuf;
                cout<<endl<<endl;
        }
}
void form (char *a,char *out)
{       
        char *first=a, *end=a; 
        *out='\0';
        int k=0, flag=false, flag2=true;
        
 
        while (*first!='\0')
        {
                flag=true;
 
                while (*first==' '&&*first!='\0')
                        first++;
                end=first;
 
                while (*end!=' '&&*end)
                        end++;
 
                char *p=first;
                char *t=first;
//проверка на повторяющиеся буквы
                while (t!=end)
                {
                        flag2=true;
                        char *w=first;
                        while (w!=t)
                        {
                                if (*w==*t)
                                {
                                        flag2=false;
                                        break;
                                }
                                w++;
                        }
                        if (flag2==false)
                                break;
                        t++;
                }
//проверка на сортировку по алфавиту
                while (first!=(end-1)&&*first)
                {
                        if (*first>*(first+1))
                        {
                                flag=false;
                                break;
                        }
                        first++;
                }
                if (flag==true&&flag2==true) //если оба условия были выполнены
                {
                        while (p!=end) //в результирующий массив копируется слово
                                *out++=*p++;
                        *out++=' ';
                        *out='\0';
                        first++;
                }
                else first=end;
                        
        }
}
Yandex
Объявления
08.06.2011, 16:58     Найти наиболее часто встречающуюся букву и также вывести на экран в отдельной строке
Ответ Создать тему
Опции темы

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