Посимвольное считывание строки, нужны комментарии - C (СИ)
Формулировка задачи:
Кто-нибудь может пожалуйста объяснить построчно,что делает эта программа?
#include <stdio.h>
int isLatin(char c) {
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
int countWords(char* buffer) {
int isLastLatin = 0;
int count = 0;
for(int i = 0; i < 256 ; i++) {
if (buffer[i] == 'a' && isLastLatin != 1) {
count++;
}
isLastLatin = isLatin(buffer[i]);
}
return count;
}
int main() {
char buffer[256];
printf("vvedite stroku \n");
gets(buffer);
int count = countWords(buffer);
printf("Words with a = %d\n", count);
return 0;
}Решение задачи: «Посимвольное считывание строки, нужны комментарии»
textual
Листинг программы
#include <stdio.h>
int isLatin(char c) //функция определяет является ли символ латинской буквой
{
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');//если является,возвращает 1
} //если нет то 0
int countWords(char* buffer)//функция подсчитывает слова
{
int isLastLatin = 0;
int count = 0;
for(int i = 0; i < 256 ; i++) {//для чего условие цикла до 256 я не знаю, я бы поставил buffer[i] != \0;
if (buffer[i] == 'a' && isLastLatin != 1)//если текущий символ есть латинская буква 'a' и
count++; //предыдущий символ не является латинской буквой,то счетчик увеличивается на 1
isLastLatin = isLatin(buffer[i]);//если текущий символ buffer[i] является латинской буквой
} //то переменной isLastLatin присваивается значение 1,если нет то 0
return count;//функция возвращает значение счетчика count
}
int main() {
char buffer[256];//выделена память под строку на 255 символов плюс завершающий нуль
printf("vvedite stroku \n");
gets(buffer);//пользователь вводит строку
int count = countWords(buffer);//переменной count присваивается возвращаемое значение функции countWords
printf("Words with a = %d\n", count);//и оно выводится на экран
return 0; //программа сообщает в ОС что ее работа завершена корректно
}
Объяснение кода листинга программы
- В данном коде реализована функция
isLatin, которая принимает символ в качестве аргумента и возвращает 1, если символ является латинской буквой (заглавной или строчной), и 0 в противном случае. - Функция
countWordsпринимает указатель на строку в качестве аргумента и подсчитывает количество слов, начинающихся с латинской буквы 'a'. Для этого она проходит по каждому символу строки и увеличивает счетчик, если текущий символ является латинской буквой 'a' и предыдущий символ не является латинской буквой. - В функции
mainсоздается массив символовbufferразмером 256 для хранения введенной пользователем строки. - Пользователю предлагается ввести строку с помощью функции
gets, а затем эта строка передается в функциюcountWords, которая возвращает количество слов, начинающихся с латинской буквы 'a'. - Результат работы функции
countWordsвыводится на экран с помощью функцииprintf. - Программа завершает свою работу без ошибок (возвращает 0), сообщая в операционную систему о своем завершении.