Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
10 / 10 / 1
Регистрация: 24.03.2013
Сообщений: 38

Подсчитать количество вхождений в файл каждой из букв а, b, c

21.04.2013, 20:32. Показов 2405. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано символьный файл. Подсчитать количество вхождений в файл каждой из букв а, b, c, d, e, f и вывести результат отдельными строками.
Заранее спасибо!!!!

Добавлено через 3 часа 11 минут
Вот написал код в котором выводит на екран буквы a,b,c,d,e,f. Но мне нужно Подсчитать количество вхождений в файл каждой из букв а, b, c, d, e, f и вывести результат отдельными строками. Я понял ,что сдесь нужно ставить счётчик ,только не могу понять как?Помогите пожалуйста.
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
#include "stdafx.h"
#include <stdio.h> 
#include "stdlib.h"
#define yourfile "yourfilename.txt"
 
int main(void) 
{
FILE *fp;
fp=fopen(yourfile,"r"); 
if(!fp)
   {printf("ERROR FILE NOT OPEN!");
      exit(1);
        }
    while (!feof(fp))                 
    { char ch;
       
        ch=getc(fp);                      
        if (ch - 'a' <= 'f'-'a' )
        {     
          printf(" %c",ch); 
}
    } 
    
fclose(fp);
return 0;
}
Заранее спасибо!!!

Добавлено через 2 часа 14 минут
Что никто не может помочь?

Добавлено через 1 час 59 минут
А как сделать в программе , что б мне выводило только например а-3 ,е-7 ?
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
#include "stdafx.h"
#include <stdio.h> 
#include "stdlib.h"
#define yourfile "yourfilename.txt"
 
int main(void) 
{int i;
FILE *fp;
fp=fopen(yourfile,"r"); 
int count [6];
for( i=0;i<6;i++)
    count[i]=0;
if(!fp)
   {printf("ERROR FILE NOT OPEN!");
      exit(1);
        }
    while (!feof(fp))          // Пока не конец файла       
    { char ch;
       
        ch=getc(fp);               // Чтение символа ch из файла pf       
       { if (ch - 'a' <= 'f'-'a' )//Принадлежит ли ch отрезку a-f
          count[ch-'a']++ ;
    printf("%c %d\n",ch,count[ch - 'a']);
 
 
}
    } 
 
fclose(fp);
return 0;
}
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2013, 20:32
Ответы с готовыми решениями:

Бинарные файлы: Подсчитать количество вхождений в файл каждой из букв а, b, c, d, e, f
Здарствуйте уважаемые форумчани!! Помогите , как сделать с текстового файла -бинарный. Условие задачи:Дано символьный файл. Подсчитать...

Подсчитать число вхождений в файл каждой из букв
// Даны файлы чисел F и G . Записать в файл H сначала компоненты файла F, затем файла G с сохранением порядка следования. // Данные в...

Подсчитать и вывести количество вхождений каждой из букв алфавита в файл
Помогите. Подсчитайте количество вхождений каждой из букв алфавита в файл. Выведите таблицу на экран. Благодарю заранее.

11
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.04.2013, 20:41
Я так понял, буквы A-Z не учитывать?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <ctype.h>
#define SIZE 26
 
int main(void) 
{
    FILE *fp = fopen("text.txt", "r");
    char c;
    int i, all[SIZE] = {0};    
    if (!fp) return 1;
    
    while ((c = fgetc(fp)) != EOF)
        if (islower(c))
            all[c - '0' - 49]++;
    
    for (i=0; i < SIZE; i++)
        printf("%c-%d\n", i + 49 + '0', all[i]);
    return 0;
}
0
10 / 10 / 1
Регистрация: 24.03.2013
Сообщений: 38
21.04.2013, 21:06  [ТС]
Идея правильная да ,но мне нужно ,что б в моем коде выводило ,не все подряд буквы ,а только заданые и количество их....а на данный момент мне в строчку выдает все и количество их повторений.
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
#include "stdafx.h"
#include <stdio.h> 
#include "stdlib.h"
#define yourfile "yourfilename.txt"
 
int main(void) 
{int i;
FILE *fp;
fp=fopen(yourfile,"r"); 
int count [6];
for( i=0;i<6;i++)
    count[i]=0;
if(!fp)
   {printf("ERROR FILE NOT OPEN!");
      exit(1);
        }
    while (!feof(fp))          // Пока не конец файла       
    { char ch;
       
        ch=getc(fp);               // Чтение символа ch из файла pf       
       { if (ch - 'a' <= 'f'-'a' )//Принадлежит ли ch отрезку a-f
          count[ch-'a']++ ;
    printf("%c %d\n",ch,count[ch - 'a']);
 
 
}
    } 
 
fclose(fp);
return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.04.2013, 21:21
majuw, ну в чем проблема написать собственную функцию проверки заместо islower и собственное условие заполнения массива?
0
10 / 10 / 1
Регистрация: 24.03.2013
Сообщений: 38
21.04.2013, 21:32  [ТС]
да пытаюсь что-то не получаеться, не могли б помочь дописать к моей программе....
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.04.2013, 21:45
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#define SIZE 6
 
int main(void) 
{
    FILE *fp = fopen("text.txt", "r");
    char c;
    int i, all[SIZE] = {0};    
    if (!fp) return 1;
    
    while ((c = fgetc(fp)) != EOF)
        if (c >= 'a' && c <= 'f')
            all[c - '0' - 49]++;
    
    for (i=0; i < SIZE; i++)
        printf("%c-%d\n", i + 49 + '0', all[i]);
    return 0;
}
0
10 / 10 / 1
Регистрация: 24.03.2013
Сообщений: 38
21.04.2013, 21:59  [ТС]
Вот запускаю ваш код , и что-то на екран нечего не выводиться....
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <stdio.h>
#define SIZE 6
 
int main(void) 
{
    FILE *fp = fopen("text.txt", "r");
    char c;
    int i, all[SIZE] = {0};    
    {if (!fp) 
        return 1;
    }
    
    while ((c = fgetc(fp)) != EOF)
        {if (c >= 'a' && c <= 'f')
            all[c - '0' - 49]++;
    }
   { for (i=0; i < SIZE; i++)
        printf("%c-%d\n", i + 49 + '0', all[i]);
   }
    fclose(fp);
    return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.04.2013, 22:13
majuw, во-первых, это не мой код уже, вы непонятно зачем скобок добавили и эту ненужную поделку stdafx.h
А во-вторых, почитайте про паузу.

C
1
#include <stdlib.h>
и
C
1
system("pause");
перед return 0;
0
10 / 10 / 1
Регистрация: 24.03.2013
Сообщений: 38
21.04.2013, 23:10  [ТС]
Вот я сделал все ,как в вашем коде. И всеравно нечего не выводит на екран...Подскажите в чём ошибка?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdlib.h>
#include <stdio.h>
#define SIZE 6
 
int main(void) 
{
    FILE *fp = fopen("text.txt", "r");
    char c;
    int i, all[SIZE] = {0};    
    if (!fp) return 1;
    
    while ((c = fgetc(fp)) != EOF)
        if (c >= 'a' && c <= 'f')
            all[c - '0' - 49]++;
    
    for (i=0; i < SIZE; i++)
        printf("%c-%d\n", i + 49 + '0', all[i]);
    system("pause");
    return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.04.2013, 23:17
majuw, мне кристаллический шар нагадал, что у вас файл не открывает (должен лежать в той же папке, что и бинарник), на студии вроде в папке проекта, но точно как не знаю, с ней не работаю.
0
10 / 10 / 1
Регистрация: 24.03.2013
Сообщений: 38
21.04.2013, 23:42  [ТС]
Так я знаю что нужно создавать , я создал файл в папке с проектом, все открывает , но не выводит на экран результат.

Добавлено через 5 минут
Всё огромное вам спасибо.. наканецто заработало , это у меня проблемы с вижуалом , а не могли б вы написать коментарии к коду .
C
1
2
3
4
5
6
while ((c = fgetc(fp)) != EOF)
        if (c >= 'a' && c <= 'f')
            all[c - '0' - 49]++;
    
    for (i=0; i < SIZE; i++)
        printf("%c-%d\n", i + 49 + '0', all[i]);
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.04.2013, 23:53
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
while ((c = fgetc(fp)) != EOF) // пока считали символ в переменную с и он оказался не символом конца файла
* * * * if (c >= 'a' && c <= 'f') // если символ лежит в диапазоне [a, f]
* * * * * * all[c - '0' - 49]++; // в массиве all с индексом, равным значению этой переменной в коде ASCII - 49 (начиная с 49 символа идут малые латинские буквы)
for (i=0; i < SIZE; i++) // от начала до конца массива
* * * * printf("%c-%d\n", i + 49 + '0', all[i]); // выводим содержимое на экран. i + 49 - номер символа по таблице ASCII. Добавление '0' преобразует int в char
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2013, 23:53
Помогаю со студенческими работами здесь

Подсчитать количество вхождений в текст каждой из букв: A, B, C, D и E
Друзья, срочно нужна помощь. На лекциях совсем ничего не объяснили по поводу выполнения этого задания, а у меня самого нет соображений, как...

Подсчитать число вхождений в файл каждой из букв
Подскажите пожалуйста. Дан символьный файл f, подсчитать число вхождений в файл каждой из букв 'a', 'b', 'c', 'd' и вывести результат в...

Подсчитать число вхождений в символьный файл каждой из букв a,b,c,d
помогите пожалуйста! Дан символьный файл f. Подсчитать число вхождений в файл каждой из букв a,b,c,d.

Подсчитать количество вхождений букв
здравствуйте, помогите с задачей: Дана символьная строка. Подсчитать в ней количество вхождений букв r, k, t желательно с подробными...

Посчитать количество всех букв и количество вхождений каждой буквы
Есть файл из нескольких строк. нужно: 1 посчитать количество всех букв 2 посчитать количество каждой из букв (abcd) Проблема:...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru