Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
#1

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

27.04.2013, 11:50. Просмотров 267. Ответов 6
Метки нет (Все метки)

Есть следующий код программы:
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;
}
Суть задачи в следующем: написать программу, которая будет извлекать из текстового файла текст написанный на английском языке(последний символ в тексте это точка "."; других символов в тексте нет).
Из этого текста он ищет ту букву которая встречается чаще всего и выводит количество раз сколько она встречается.

Вот только программа нифига не то выводит (
Подскажите люди добрые где ошибка???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 11:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в программе (поиск и вывод символов) (C++):

Строки, поиск вхождений символов и вывод - C++
Здравствуйте, помогите пожалуйста с программой: Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение...

Как настроить ввод русских символов и в дальнейшем вывод этих символов - C++
Подскажите как в этом коде настроить ввод русских символов и в дальнейшем вывод этих символов. Данный код выводит лишь всякую ерунду место...

Поиск символа не могу переделать под поиск сочетания символов - C++
Есть код программы на поиск и замену по одному символу.Не могу понять, как сделать код на поиск сочетания символов. Чтобы найдя в введённой...

Ошибка ввода символов строки, при количестве символов кратных 8 - C++
Здравствуйте, уважаемые форумчане! Разбираясь с механизмом ввода и динамическим выделением памяти для строк решил написать такой...

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод - C++
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Вывод символов из таблицы символов - C++
Здравствуйте. хочу распечатать символы из кодовой страницы и... Подскажите, пожалуйста, почему не печатаются символы и как их вообще...

6
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
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;
}
1
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;
}
что это?
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
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;
}
1
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
27.04.2013, 12:29  [ТС] #5
Olivеr
а в чем ошибка вы можете разъяснить, пожалуйста?
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
27.04.2013, 12:35 #6
ensaid, в том, что у Вас в файле только строчные английские буквы, а в программе идёт подсчет прописных...
Я поправил цикл в конце потому, что он не считал букву А.

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

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) - C++
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

Как добавить стирание символов в программе - C++
Как добавить стирание символов в программе(после запуска ctrl+F5) в visual c++ ? То есть,чтобы я мог писать и стирать символы при запуске...

Как в программе запретить ввод символов и букв! - C++
Всем доброго времени) Только вот начал изучать С++. Ребят, если не сложно помогите прописать в мой программе запрет ввода букв и...

Не могу найти ошибку в программе рисующей линию из символов - C++
Попытался написать консольную программу, рисующую линию из символов. Число символов вводится пользователем. Вот код программы: /**...


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

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

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