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

Посимвольно считать текст из файла и распределить сколько каких символов в тексте - C++

Восстановить пароль Регистрация
 
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
15.02.2014, 15:38     Посимвольно считать текст из файла и распределить сколько каких символов в тексте #1
Решал задачу. Суть в том, что нужно взять текст из .txt файла. посимвольно считать и распределить сколько каких символов в тексте(по таблице ascii, но столкнулся с проблемкой: объявил два массива(один просто последовательный набор чисел 1...255, а второй массив счетчик символов). проблема в том, что при заполнении первого массива первый символ второго массива такой же как и последний первого) а если при объявлении меняю местами их то тогда наоборот. как так вообще? как они в памяти распределяются?(если последовательно, то почему первый и последние элементы налаживаются друг на друга.
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
#include <iostream>
#include <fstream>
#include <conio.h>
#include <locale>
#include <string>
 
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
 
    int a=0,b=0,i=0,l=0,g;
    unsigned char h;
    string str;
    int mass1[255],mass[255];
 
    ifstream myfile("text03.txt");
 
    for(int i=0;i<256;i++)
        mass[i]=0;
 
    i=0;
 
        while( !(myfile.eof()) )
        {
            h=myfile.get();
            a=int(h);
            i++;
            mass[a]+=1;
        }
 
        cout<<i<<endl;
 
    for(int i=0;i<256;i++)
            mass1[i]=i+1;
 
    for(i=0;i<256;i++)
            {
                cout<<(mass1[i])<<"   ";
                g=mass1[i]-1;
                cout<<char(g)<<"   ";
                cout<<mass[i]<<endl;
            }
 
    getch();
    return 0;
}
Посимвольно считать текст из файла и распределить сколько каких символов в текстеПосимвольно считать текст из файла и распределить сколько каких символов в текстев данном случае "256" совпадает. а третьем столбце должно быть "0"
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2014, 15:38     Посимвольно считать текст из файла и распределить сколько каких символов в тексте
Посмотрите здесь:

C++ написать программу, которая считывает текст из файла, находит самое длинное слово и определяет сколько раз оно встретилось в тексте
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? C++
C++ Считать посимвольно текст из файла
C++ Как правильно считать текст из файла? Весь текст, со всеми знаками, пробелами
Посимвольно считать из переменной строку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Eldies
89 / 80 / 28
Регистрация: 06.02.2014
Сообщений: 119
15.02.2014, 15:48     Посимвольно считать текст из файла и распределить сколько каких символов в тексте #2
C++
1
    int mass1[255],mass[255];
Элементы нумеруются с нуля. Всего их - 255. Последний имеет номер 254.

При попытке обращения к элементу номер 255, происходит выход за пределы области, выделенной под этот массив.

Если mass и mass1 расположены в памяти последовательно, то при попытке доступа к 255-му элементу одного, происходит доступ к 0-му элементу второго.
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
15.02.2014, 16:03  [ТС]     Посимвольно считать текст из файла и распределить сколько каких символов в тексте #3
эм..ну понятно что с нуля. и это значит что в массиве mass[255] не 254 символа, а 256! вот! или я не правило понимаю?
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
15.02.2014, 16:11     Посимвольно считать текст из файла и распределить сколько каких символов в тексте #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от tim289 Посмотреть сообщение
объявил два массива(один просто последовательный набор чисел 1...255, а второй массив счетчик символов). проблема в том, что при заполнении первого массива первый символ второго массива такой же как и последний первого)
а зачем два массива?
одного достаточно
C++
1
2
3
4
5
6
7
8
9
int mass[256]={0};
unsigned char h;
.................................
 
 while( !(myfile.eof()) )
        {
            h=myfile.get();
            mass[h]++;
        }
смысл в том что считанный символ и есть индекс массива
потом можно вывести например так
C++
1
2
for(int i=0;i<256;i++)
  printf("%c - %d",(char)i,mass[i];
Добавлено через 1 минуту
Цитата Сообщение от tim289 Посмотреть сообщение
и это значит что в массиве mass[255] не 254 символа, а 256!
нет в нем 255 ячеек
0 1 2 ......... 253 254
например массив arr[2] имеет две ячейки
с индексами 0 и 1
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
15.02.2014, 16:27  [ТС]     Посимвольно считать текст из файла и распределить сколько каких символов в тексте #5
два массива для того, что есть вторая часть задачки) там нужно сортировать и при этом и индексы должны остаться совпадать)
а за все остальное огромное спасибо) я понял. это моя ошибка) нужно массив объявлять так mass[256] - это будет массив из 256 ячеек)(может кому то пригодится)
спасибо еще раз)
Yandex
Объявления
15.02.2014, 16:27     Посимвольно считать текст из файла и распределить сколько каких символов в тексте
Ответ Создать тему
Опции темы

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