Найти количество отдельных букв в каждой строке - C (СИ)

  1. Помогите пожалуйста дописать код, я имею первую и вторую строчку, но не знаю как дописать третию Вот что мне нужно... Написать программу, которая находит количество отдельных букв в каждой строке файла. Заходя на программу одна линия содержит имя файла. На выходе получается гистограмма письма, написанном в таблице, где первая строка будет содержать все буквы алфавита аккуратно разделены. Каждая строка будет содержать номер строки и всегда под буквами выровнены количество вхождений букв в каждом файле строки. Цифры указывают на возникновение так как большинство двузначное число предшествует единое пространство. Все линии производства будут завершены в конце строки. Вот что должно выйтии... ВВОД: SUBOR.TXT Текстовый документ SUBOR.TXT: Toto je ukazkovy subor. V subore su pismena. ВЫВОД: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 1 1 0 0 1 0 0 0 0 1 2 0 0 0 4 0 0 1 1 2 2 1 0 0 1 1 2 1 1 0 0 2 0 0 0 1 0 0 0 1 1 1 1 0 1 3 0 2 1 0 0 0 0\ Это то что у меня есть...C1 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 <stdio.h> #include<stdlib.h> #include<ctype.h> #define SUBOR "SUBOR.TXT" #define N 'Z' - 'A' + 1   int main() {   FILE *fr;   int c,hist[N],i;   for (c='A';c<='Z';c++)   printf("%c ",c);   printf("\n");       if ((fr = fopen("SUBOR.TXT", "r")) == NULL) {     printf("SUBOR.TXT sa nepodarilo otvorit\n");     return 1; }         //for(j=1;j<=26;j++){   for(i=0;i<=N;i++){     hist[i] = 0;}   while ((c = toupper(getc(fr))) !='\n')   {           if(c >= 'A' && c <= 'Z')         hist[c - 'A']++;   }     for (i=0; i<N; i++) {               printf("%d ",hist[i]);       }     //while (getchar() != '\n')         if (fclose(fr) == EOF) {     printf("SUBOR.TXT sa nepodarilo uzavriet\n");     return 1;       }       return 0; }Помогите кто чем сможет... Заранее спасибо!!!


textual

Код к задаче: «Найти количество отдельных букв в каждой строке - C (СИ)»

#include <stdio.h>
#include <ctype.h>
#include <assert.h>
 
int main() {
    FILE* f;
    unsigned alph['z' - 'a' + 1] = { 0 };
    unsigned i, cnt = 0;
    int ch;
 
    assert((f = fopen("SUBOR.TXT", "r")) != NULL);
 
    printf("  ");
    for (i = 'A'; i <= 'Z'; ++i) {
        printf("%c ", i);
    }
    printf("\n");
 
    while ((ch = fgetc(f)) != EOF) {
        if (ch == '\n') {
            printf("%u ", ++cnt);
            for (i = 'a'; i <= 'z'; ++i) {
                printf("%d ", alph[i - 'a']);
                alph[i - 'a'] = 0;
            }
            printf("\n");
        }
        else if (isalpha(ch)) {
            alph[tolower(ch) - 'a']++;
        }
    }
 
    return 0;
}

СДЕЛАЙТЕ РЕПОСТ

10   голосов, оценка 4.000 из 5



Похожие ответы
  1. Нужно что бы он считал количество заглавных буквC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include #include #include void main() {     char s[250];     int i, kol = 0, kol1 = 0, j;     puts("Enter string");     fgets(s, 250, stdin); ("%s", s);     i = 0;     j = 0;     for (i = 0; i

  1. Решить эту задачу используя простейшие структуры данных Определить количество слов, у которых первый и последний симво-лы совпадают между собой.

  1. Я написала программу с двумя элементами ввода массивов, но результат выводит не неверный и после выбора ручного ввода программа вылетает. Помогите пожалуйстаC1 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 58 59 60 61 62 63 64 65 66 #include #include #include #include #include #include #define N 500 #define MIN 80 int main(void) { setlocale (0, "rus"); int a[N],n,i, min=a[0], nummin=0, sum=0, nol=0, k; srand((unsigned)time(NULL)); printf ( " Определите характер заполнения: 1- автоматическое, 2- вручную"); printf("\n"); scanf("%d",&k);   switch(k) { case 1: { printf("vvedite n - "); scanf("%d",&n); for (i=0; ia[i])           {               printf("\n");               min=a[i];              nummin=i;}         for (i=nummin+1; i

  1. как обявить масим если заранее не известно сколько там будет значений?? СПС!

  1. Помогите, пожалуйста, только начал изучать язык, нашел в сборнике задач для паскаля такое задание : Во введенной пользователем строке посчитать количество букв «а» и «о» вывести их число на экран. Как его правильно выполнить?

  1. Запись имеет вид: фамилия спортсмена, его номер, количество набранных очков. Удалить из списка информацию о спортсмене с наименьшим количеством очков. C1 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 #define _CRT_SECURE_NO_WARNINGS #include * #include struct sportsmen{     char FirstName[32];     int number[10], points[128]; }; void read(struct sportsmen *sportsmen, int i) {     for (int j = 0; j < i; j++){         printf("enter FirstName \n");         scanf("%s", &sportsmen[j].FirstName);         printf("enter number \n");         scanf("%i", &sportsmen[j].number);         printf("enter points \n");         scanf("%i", &sportsmen[j].points);     } } int main() {     setlocale(LC_ALL, "ukr");     struct sportsmen sportsmen[5];     read(sportsmen, 5);     FILE *f, *fdell;     if ((f = fopen("f.txt ", "wb")) == NULL)     {         printf("Помилка при відкритті файлу");         return 1;     }     } Нашел в интернете код 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 #define _CRT_SECURE_NO_WARNINGS   #include #include #include #include   char c; struct sports { char fam[20]; int number, score; } spr; void inputdata(FILE *); void updatedata(FILE *); void printdata(FILE *); void deletedata(FILE *);   void inputdata(FILE *st) {     char ch;     st = fopen("file1.dat", "wb");     do     {         printf("\nВведите данные спортсмена через пробел - фамилия, номер, количество набранных очков.\n");         scanf("%s%d%d", spr.fam, &spr.number, &spr.score);         fwrite(&spr, sizeof(spr), 1, st);         printf("\nЗакончить ввод данных?\n");         ch = getch();     } while (ch != 'y');     fclose(st);     system("cls");     printf("Данные о спортсменах записаны!\n"); }   void printdata(FILE *st) {     system("cls");     int i;     st = fopen("file1.dat", "rb");     i = 1;     fread(&spr, sizeof(spr), 1, st);     while (!feof(st))     {         printf("\n%d. Фамилия спортсмена: %s, номер: %d, количество очков: %d", i, spr.fam, spr.number, spr.score);         fread(&spr, sizeof(spr), 1, st);         i++;     }     printf("\n\nНажмите любую клавишу для выхода в меню.\n");     getch();     system("cls"); }   void updatedata(FILE *st) {     char ch;     st = fopen("file1.dat", "ab");     do     {         printf("\nВведите данные о спортсмене через пробел - фамилия, номер, количество набранных очков.\n");         scanf("%s%d%d", spr.fam, &spr.number, &spr.score);         fwrite(&spr, sizeof(spr), 1, st);         printf("\nЗакончить добавление данных? y/n\n");         ch = getch();     } while (ch != 'y');     fclose(st);     system("cls"); }   void deletedata(FILE *st) {     system("cls");     char ch;     int i, n, min;     sports *p, temp;     st = fopen("file1.dat", "rb");     n = 0;     fseek(st, 0, 2);     n = ftell(st) / sizeof(sports);     fseek(st, 0, 0);     p = (sports *)malloc(n*sizeof(sports));     for (i = 0; i

  1. Всем привет, помогите посчитать количество рекурсий в программе.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include #include #include unsigned long long Fib(unsigned long long N) {         if (N<=1)     return (N);     else     return Fib(N-1)+Fib(N-2);       } int main () {     setlocale(LC_ALL, "Rus");     unsigned long long N;     printf ("Введите число N");     scanf("%d",&N);     for(int i;i<=N;i++)     printf ("%d\n",Fib(i));     printf("runtime=%d\n",clock()/1000);      }

  1. Здрасьте. Плевое задание в пару строк упрямо не хочет функционировать, выдавая Run-Time Check failure #2 - Stack around the variable 's' was corrupted и ноль как результат. C1 2 3 4 5 6 7 8 9 10 11 12 13 #include void main(void) {     char s[20];     int count = 0;     gets(s);     for (int i = 0; s[i] = '\0'; i++)     {         if (s[i] >= '0' || s[i] <= '9')             count++;     }     printf_s("%d", count); }Что я делаю не так?