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

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

Войти
Регистрация
Восстановить пароль
 
irsman
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 5
#1

подсчет символов - C++

24.11.2009, 15:25. Просмотров 709. Ответов 9
Метки нет (Все метки)

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

Подсчет символов UTF-8. Считывание пробельных символов - C++
Написал программу считывания файла с кодировкой UTF-8. Но она не считывает пробельные символы. Программа получает на вход файл из...

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

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

Подсчет символов в файле - C++
Нужно найти сколько в файле букв (а,б,в...) алфавита. Не могу понять как делать. Начал с самого простого char alphabet = { 'А',...

Подсчет символов и замена - C++
Помогите, программа должна заменить слово с максимальным количеством символов на слово с минимальным количество символов. Нашел только...

Подсчет символов в массиве - C++
Я только начал изучать С++, в терминах еще плаваю, прошу помочь с решением задачки. Подсчет символов в массиве. Ввожу строку, программа...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
24.11.2009, 15:34 #2
"выводит на экран какие буквы встречаются в этом файле"

Это как "а - 21 раз, б - 7 раз"
или просто вывод буквы, которая встретилась в файле?
irsman
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 5
24.11.2009, 15:36  [ТС] #3
Это как "а - 21 раз, б - 7 раз"
да, именно так.
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
24.11.2009, 15:40 #4
Программа которая читает символ файла
C++
1
2
3
4
5
6
7
8
#include < stdio.h >
using namespace std;
long a;
int main()
{
  freopen("input.txt","r",stdin);
  scanf("%ld",&a);
}
Давайте, давайте, я то так и останетесь
я полный нуб в с++
irsman
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 5
24.11.2009, 16:20  [ТС] #5
спасибо. Если выложишь программу целиком буду очень благодарен.
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
24.11.2009, 16:27 #6
Цитата Сообщение от irsman Посмотреть сообщение
Написать программу, которая считывает текстовый файл и выводит на экран какие буквы встречаются в этом файле, а также какое их количество.
Вот на С и для английских букв.
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
#include <stdio.h>
#include <limits.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
 
int main(void){
    char *default_name = "simple.txt";
    FILE *fin;
    char *fin_name;
    char prompt[BUFSIZ];
    char symbols[UCHAR_MAX + 1] = { 0 };
    size_t i;
    int c;
    
    printf("Input file [%s]: ", default_name);
    fgets(prompt, BUFSIZ, stdin);
    if ( !prompt ){
        printf("Shit happens!\n");
        exit(1);
    }
    if ( *prompt == '\n' ){
        fin_name = default_name;
    }
    else{
        i = strlen(prompt) - 1;
        prompt[i] = ( prompt[i] == '\n' ) ? '\0' : prompt[i];
        fin_name = prompt;
    }
    
    if ( (fin = fopen(fin_name, "r")) == NULL ){
        printf("Can't open file %\n", fin_name);
        exit(1);
    }
    
    while ( (c = fgetc(fin)) != EOF )
        (symbols[ c ])++;
    
    fclose(fin);
    
    for ( i = 0; i < UCHAR_MAX + 1; i++ )
        if ( isprint(i) && symbols[i] > 0 )
            printf("'%c' meet %d times\n", (unsigned char)i, symbols[i]);
    
    return 0;
}
irsman
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 5
24.11.2009, 16:31  [ТС] #7
easybudda, спасибо.

а что скажете если так сделать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
#include <cstdio> 
using namespace std ; 
 
int cnt[2][26] ; 
int main () 
{ 
   freopen ("input.txt","r",stdin) ; 
   int c = getchar() ; 
   while (c != EOF) 
   { 
      if (c >= 'a' && c <= 'z') cnt[0][c - 'a']++ ; 
      if (c >= 'A' && c <= 'Z') cnt[1][c - 'A']++ ; 
      c = getchar() ; 
   } 
   for (char c = 'a'; c <= 'z'; c++) 
      if (cnt[0][c - 'a'] > 0) printf ("%c has been found in the text %d time(s)\n", c, cnt[0][c - 'a']) ; 
   for (char c = 'A'; c <= 'Z'; c++) 
      if (cnt[1][c - 'A'] > 0) printf ("%c has been found in the text %d time(s)\n", c , cnt[1][c - 'A']) ; 
   return 0 ; 
}
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
24.11.2009, 16:33 #8
Цитата Сообщение от irsman Посмотреть сообщение
а что скажете если так сделать?
Если работает, то можно и так...

Скомпилировал, сравнил вывод со своим - то же самое.
irsman
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 5
24.11.2009, 20:15  [ТС] #9
помогите ещё поажалуйста. препод говорит надо в начале программы ( той что я писал вышел) в начале принудительно обнулить массив, как это сделать?
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
24.11.2009, 20:33 #10
Цитата Сообщение от irsman Посмотреть сообщение
помогите ещё поажалуйста. препод говорит надо в начале программы ( той что я писал вышел) в начале принудительно обнулить массив, как это сделать?
Либо по-тупому
C++
1
2
3
4
int cnt[2][26];
for ( int i = 0; i < 2; i++ )
    for ( int j = 0; j < 26; j++ )
        cnt[i][j] = 0;
либо по-хитрому
C++
1
2
3
4
#include <cstring>
...
int cnt[2][26];
memset(cnt, 0, sizeof(cnt));
либо по-простому
C++
1
int cnt[2][26] = { 0 };
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2009, 20:33
Привет! Вот еще темы с ответами:

Подсчет символов в числе. - C++
Нужно ввести с клавиатуры число и подсчетать в нем кол-во символов. Как это сделать?

Подсчет символов в файле - C++
Дан текстовый файл, где в первой строке введено некоторое число N. Во второй строке находятся N элементов(чисел), введенных через пробелы....

Подсчет количества символов - C++
написать программу какая с позиционной системы счисления выводит как число в десятичной системе счисления. То есть когда вводишь символы...

Подсчет символов в строке - C++
Помогите написать программу подсчета символов в строке. Спасибо.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.11.2009, 20:33
Ответ Создать тему
Опции темы

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