Посчитать сколько заглавных букв и маленьких находится в строке. Выводит ноль
Написал код , но почему-то постоянно возвращает ноль . Я не понимаю почему , помогите пожалуйста
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
void lilbig(char *s,int big, int small) {
for (int i = 0; s[i]; i++)
{
if (('A' <= s[i] && s[i] <= 'Z'))
{
big++;
}
if (('a' <= s[i] && s[i] <= 'z'))
{
small++;
}
}
}
int main()
{
setlocale(LC_ALL, "Russian");
char s[100];
int big = 0;
int small = 0;
cout << "Enter the string: ";
gets_s(s);
lilbig(s , big , small);
cout << "The number of capital letters per line: " << big << endl;
cout << "Number of lowercase letters per line: " << small << endl;
system("pause");
return 0;
}
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
Вы передаете параметры по значению. Надо - по ссылке.
void lilbig(char *s, int& big, int& small) {
Автор решения: AR Hovsepyan
→ Ссылка
Можно передать по ссыльке, чтобы работать именно с этими обьектами(переменными), но в общем, если работа функции заключается в получении какого то значеня, лучше вернуть из функции это значение(в данном случаи это пара значений):
std::pair<int, int> lilbig(const char* s) {
int small = 0, big = 0;
for (int i = 0; s[i]; i++) {
if (('a' <= s[i] && s[i] <= 'z'))
++small;
else if (('A' <= s[i] && s[i] <= 'Z'))
++big;
}
return { small, big };
}
//тогда программа будет болше защищена от ошибок
int main() {
char s[100];
cout << "Enter the string: ";
gets_s(s);
auto[s, b] = lilbig(s);
cout << "The number of capital letters per line: " << b << endl;
cout << "Number of lowercase letters per line: " << s << endl;
return 0;
}