Составить функцию, которая в строке находит количество цифр и количество введённого символа.
Для простой работы со строками достаточно объявить её как массив символов, не используя в явном виде указатели и возможности работы с ними (см. 2–й семестр). Объявление и инициализация строк были показаны в § 6 гл. 1. Для ввода строк вместо cin лучше использовать функцию gets, так как cin вводит строку до первого пробела.
void STRDIGIT (char t[],char simbol, int &K1, int &K2);
int main()
{ char str[50]; // объявляем массив наибольшей длины 50
gets(str); // ввод строки
char c1; int KDig, KC; cout<<"Input the symbol ";
c1=getchar(); // ввод одного символа
STRDIGIT(str,c1,KDig,KC);
cout<<"In the string ";
puts(str); // вывод строки, или printf ( “%s\n”, str)
cout<< KDig<< " digits and "<<KC << " of simbol "<<c1;
getch(); return 0;
}
void STRDIGIT (char t[], char simbol, int &K1, int &K2)
{ K1=0; K2=0;
for (int i=0; i<strlen(t); i++) // strlen возвращает длину строки
{ if (t[i]>='0' && t[i]<='9') K1++;
if (t[i]==simbol) K2++;
} }
// или
for (int i=0; t[i] !=’\0’; i++)
/* Цикл продолжается, пока не встретится символ конца строки, которым заканчивается любая строка. Это же можно записать короче: for (int i=0; t[i]; i++) */
{ if (isdigit(t[i])) K1++; // является ли символ цифрой
if ( ! (t[i]-simbol ) ) K2++; }
// или
for (int i=0; t[i];)
{ if ( isdigit(t[i])) K1++;
if (t[i++]==simbol) K2++;
}
Кроме функции getchar для ввода одного символа можно использовать функции getch или getche. От их выбора зависит, во-первых, надо ли при вводе символа нажимать не только на клавишу вводимого символа, но и на клавишу ввода (да, нет, нет) и, во-вторых, будет ли отображаться введённый символ на экране (да, нет, да).
Кроме функции isdigit, есть другие функции, анализирующие один символ:
· islower — является ли аргумент символом нижнего регистра (маленькой буквой, например);
· isupper — является ли аргумент символом верхнего регистра (большой буквой, например);
· isalpha — является ли аргумент буквой алфавита (верхнего или нижнего регистра);
· isgraph— является ли аргумент печатным символом, отличным от пробела;
· isprint — является ли аргумент печатным символом, включая пробел. Эти и другие подобные функции, имена которых начинаются с is, возвращают true или false в зависимости от того, принадлежит ли символ соответствующей группе.