Определить количество букв “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
в последнем слове текста.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д