Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
1

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

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

Author24 — интернет-сервис помощи студентам
Есть следующий код программы:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2013, 11:50
Ответы с готовыми решениями:

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

Ошибка в программе по замене символов
Ребята, подскажите что не так начинающему. Изучаю язык самостоятельно, писал программу для задания...

Ошибка в программе (поиск в строке)
Есть функция: public bool IsUserInLocalGroup() { string userName =...

Ошибка в программе - поиск с хеш функцией
Вот сейчас есть рабочая программа которая создает в структуру данные. Но у нее поиск без...

6
415 / 411 / 95
Регистрация: 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
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
415 / 411 / 95
Регистрация: 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
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
27.04.2013, 12:29  [ТС] 5
Olivеr
а в чем ошибка вы можете разъяснить, пожалуйста?
0
415 / 411 / 95
Регистрация: 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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2013, 12:37
Помогаю со студенческими работами здесь

Ошибка в в программе. Поиск минимальной и максимальной цифры.
Вот задача: Дано натуральное число в котором все цифры различны. Определить какая цифра...

Ошибка в программе с файлами (вывод функций)
Почему в выводе появляется куча раз &quot;file of System.Byte &quot;. Что за ошибки тут? Как нормально...

Вывод в консольной программе: подскажите где ошибка
выдает ошибку в 8 строке, подскажите в чем проблема .686 .model flat .mmx .stack 100h .data...

Ошибка в программе, некорректный ввод/вывод. Работа со списками
Задание: прочитать из стандартного потока ввода список, который содержит разные элементы, в том...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru