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

Ошибка в программе (поиск и вывод символов) - C++

Восстановить пароль Регистрация
 
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
27.04.2013, 11:50     Ошибка в программе (поиск и вывод символов) #1
Есть следующий код программы:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
int main()
{
std::ifstream engl("C:\\Игры\\sds.txt");
char a=0;
int n=0;
while (a!='.')
{ engl>>a;
n++; }
engl.close();
std::cout<<"kol-vo simv: "<<n-1;
int k=n-1;
char *simvoly=new char[k];
std::ifstream engl2("C:\\Игры\\sds.txt");
std::cout<<"\n text iz faila: ";
for (int i=0; i<k; i++)
{ engl2>>simvoly[i];
std::cout<<simvoly[i];}
std::cout<<engl;
char alfavit[26];
char s;
int i=0;
for (s='A'; s<='Z'; s++) 
alfavit[i++] = s;
std::cout<<"\n poisk simvolov: ";
 for (i=0; i<26; i++)
std::cout<<alfavit[i]<<' ';
int schet[26];
for (i=0; i<26; i++)
schet[i]=0;
for (int j=0; j<26; j++) {
while(i<n)
{if(simvoly[i]==alfavit[j]) schet[j]++;
i++; }
i=0;
}
for (i=0; i<26; i++)
std::cout<<"\n schet["<<alfavit[i]<<"]="<<schet[i]<<'\n';
int max=schet[0];
int z=0;
for (i=0; i<26; i++)
if (max<schet[i]) { max=schet[i]; z=i; }
std::cout<<"\n bukva: "<<alfavit[z]<<'\n'<<"vstrechaetsia "<<max<<" raz";
system("PAUSE");
return 0;
}
Суть задачи в следующем: написать программу, которая будет извлекать из текстового файла текст написанный на английском языке(последний символ в тексте это точка "."; других символов в тексте нет).
Из этого текста он ищет ту букву которая встречается чаще всего и выводит количество раз сколько она встречается.

Вот только программа нифига не то выводит (
Подскажите люди добрые где ошибка???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
27.04.2013, 12:13     Ошибка в программе (поиск и вывод символов) #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
#include <iostream>
#include <fstream>
#include <map>
 
using namespace std;
 
int main()
{
    ifstream file("file.txt", ios::in);
    char c;
    map<char, unsigned> letters;
 
    file.seekg (0, file.end);
    size_t len = file.tellg();
    file.seekg (0, file.beg);
 
    cout << "File length: " << len << endl;
 
    cout << "File contents:\n";
    while (file.good()) {
        c = file.get();
        cout << c;
        if ( isalpha(c) )
            ++letters[c];
    }
 
    cout << "\n\nLetters freq:\n";
 
    for (auto &a:letters)
        cout << a.first << " " << a.second << endl;
 
    file.close();
 
    return 0;
}
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
27.04.2013, 12:16  [ТС]     Ошибка в программе (поиск и вывод символов) #3
Цитата Сообщение от Olivеr Посмотреть сообщение
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
#include <iostream>
#include <fstream>
#include <map>
 
using namespace std;
 
int main()
{
    ifstream file("file.txt", ios::in);
    char c;
    map<char, unsigned> letters;
 
    cout << "File contents:\n";
    while (file.good()) {
        c = file.get();
        cout << c;
        if ( isalpha(c) )
            ++letters[c];
    }
 
    cout << "\n\nLetters freq:\n";
 
    for (auto &a:letters)
        cout << a.first << " " << a.second << endl;
 
    file.close();
 
    return 0;
}
что это?
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
27.04.2013, 12:27     Ошибка в программе (поиск и вывод символов) #4
Цитата Сообщение от ensaid Посмотреть сообщение
что это?
решение задачи

вот исправленный код, просто фарш...
запишите в файл несколько заглавных английских букв
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
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream engl("file.txt");
    char a=0;
    int n=0;
    while (a!='.')
    {
        engl>>a;
        n++;
    }
    engl.close();
    std::cout<<"kol-vo simv: "<<n-1;
    int k=n-1;
    char *simvoly=new char[k];
    std::ifstream engl2("file.txt");
    std::cout<<"\n text iz faila: ";
    for (int i=0; i<k; i++)
    {
        engl2>>simvoly[i];
        std::cout<<simvoly[i];
    }
    std::cout<<engl;
    char alfavit[26];
    char s;
    int i=0;
    for (s='A'; s<='Z'; s++)
        alfavit[i++] = s;
    std::cout<<"\n poisk simvolov: ";
    for (i=0; i<26; i++)
        std::cout<<alfavit[i]<<' ';
 
    int schet[26];
    for (i=0; i<26; i++)
        schet[i]=0;
 
    for (int j = 0; j != 26; j++)
        for (size_t i = 0; i != k; i++)
            if(simvoly[i] == alfavit[j]) schet[j]++;
 
    for (i=0; i<26; i++)
        std::cout<<"\n schet["<<alfavit[i]<<"]="<<schet[i]<<'\n';
 
    int max=schet[0];
    int z=0;
    for (i=0; i<26; i++)
        if (max<schet[i])
        {
            max=schet[i];
            z=i;
        }
    std::cout<<"\n bukva: "<<alfavit[z]<<'\n'<<"vstrechaetsia "<<max<<" raz";
 
    return 0;
}
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
27.04.2013, 12:29  [ТС]     Ошибка в программе (поиск и вывод символов) #5
Olivеr
а в чем ошибка вы можете разъяснить, пожалуйста?
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
27.04.2013, 12:35     Ошибка в программе (поиск и вывод символов) #6
ensaid, в том, что у Вас в файле только строчные английские буквы, а в программе идёт подсчет прописных...
Я поправил цикл в конце потому, что он не считал букву А.

Добавлено через 2 минуты
Хотя достаточно будет после
C++
1
2
    for (i=0; i<26; i++)
        schet[i]=0;
вставить
C++
1
i = 0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2013, 12:37     Ошибка в программе (поиск и вывод символов)
Еще ссылки по теме:

C++ Как добавить стирание символов в программе
C++ Поиск символа не могу переделать под поиск сочетания символов
Одновременный ввод/вывод в программе C++

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

Или воспользуйтесь поиском по форуму:
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
27.04.2013, 12:37  [ТС]     Ошибка в программе (поиск и вывод символов) #7
Цитата Сообщение от Olivеr Посмотреть сообщение
ensaid, в том, что у Вас в файле только строчные английские буквы, а в программе идёт подсчет прописных...
Я поправил цикл в конце потому, что он не считал букву А.

Добавлено через 2 минуты
Хотя достаточно будет после
C++
1
2
    for (i=0; i<26; i++)
        schet[i]=0;
вставить
C++
1
i = 0;
Премного благодарен)))
Yandex
Объявления
27.04.2013, 12:37     Ошибка в программе (поиск и вывод символов)
Ответ Создать тему
Опции темы

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