Определить количество букв “a” в последнем слове текста - C (СИ)
Формулировка задачи:
#include <conio.h> #include <stdio.h> #include <io.h> #include <locale.h> #include <windows.h> FILE* f_open; FILE* f; int kod; char puch[] = "c:\\file.dat"; FILE *Open_file(char*, char*); void fun_1(); void fun_2(); void main() { setlocale(LC_CTYPE, "Russian"); int menu; do { printf("Меню:"); printf("\n1-вывод текста из файла на экран"); printf("\n2-определение количества букв 'а' в последнем слове"); printf("\n3-выход"); printf("\nВаш выбор: "); scanf("%d", &menu); switch (menu) { case 1: {f_open = Open_file(puch, "r"); fun_1(); fclose(f_open); break; } case 2: { fun_2(); fclose(f_open); } case 3: exit(0); break; default: system("cls"); puts("выберите команду 1, 2 или 3"); } } while (1); _getch(); } FILE *Open_file(char*file, char* kod) { FILE* f;//Объявление файла if (!(f = fopen(file, kod))) { printf("Ошибка открытия файла"); exit(1); } return f; } void fun_1() { char *strbuff; strbuff = new char[71]; if (strbuff == NULL) { puts("Недостаточно памяти"); _getch(); return; } printf("\n\nТекст файла:\n\n"); while (fgets(strbuff, 70, f_open) != NULL) { printf("%s", strbuff); } printf("\n\n"); delete[]strbuff; _getch(); } void fun_2() { char *strbuff; strbuff = new char[71]; if (strbuff == NULL) { puts("Недостаточно памяти"); _getch(); return; } int a = 0; while (fgets(strbuff, 70, f_open) != NULL) { fscanf(f_open, "%", &strbuff); for (int i = 70; i >= 0; i--) { while (strbuff [i]!=' ') { if (strbuff[i] == 'а') a++; } }}; printf("\nКоличество букв 'а' в последнем слове: %d", a); delete[]strbuff; _getch(); }
Решение задачи: «Определить количество букв “a” в последнем слове текста»
int a = 0; *strbuff = '\0'; while (fgets(strbuff, 70, f_open) != NULL); for (int i = strlen(strbuff) - 1; i >= 0 && strbuff[i] != ' '; --i) if (strbuff[i] == 'a') ++a;
Объяснение кода листинга программы
В данном коде определен тип переменной a
как int (целое число), и инициализирован нулем. Далее, в переменную strbuff
записывается строка, которая заканчивается нулевым символом ('\0'). Затем, в цикле while считываются строки из файла, который открывается функцией f_open до тех пор, пока не будет достигнут конец файла (NULL).
Далее, в цикле for перебираются символы в строке strbuff
в обратном порядке (от последнего к первому). Если текущий символ равен 'a', то к переменной a
прибавляется единица. Переменная i
уменьшается на единицу на каждой итерации цикла, пока не достигнет нуля или не встретит символ ' ' (пробел).
Таким образом, в результате выполнения данного кода будет определено количество букв a
в последнем слове текста.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д