C/C++
Язык си. Подскажите, как это реализовать
С клавиатуры вводится строка, которая заканчивается точкой. Нужно с помощью рекурсивной функции посчитать количество букв 's' в строке.
#include <stdlib.h>
#include <stdio.h>
int letters(const char* str, const char last, const char ch, int index) {
static int count = 0;
if (str[index] && str[index] != last) {
if (str[index] == ch) ++count;
} else {
int result = count;
count = 0;
return result;
}
++index;
return letters(str, last, ch, index);
}
int main(void) {
const char* str = "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.";
puts(str);
int count = letters(str, '.', 's', 0);
printf("Count: %i\n", count);
system("pause > nul");
return 0;
}
#include <stdio.h>
int letters(const char* str, const char last, const char ch, int index) {
static int count = 0;
if (str[index] && str[index] != last) {
if (str[index] == ch) ++count;
} else {
int result = count;
count = 0;
return result;
}
++index;
return letters(str, last, ch, index);
}
int main(void) {
const char* str = "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.";
puts(str);
int count = letters(str, '.', 's', 0);
printf("Count: %i\n", count);
system("pause > nul");
return 0;
}
Какое-то больное мышление, можно ведь просто по циклу пробежаться
Владислав Зорин
Точно больное! Причём здесь рекурсия?
Владимир Дробыш
Ну такое задание
/* Здравствуйте, вот ответ на Ваш вопрос */
using namespace std;
void func(string s, int &a, int &b) {
if (s[a] == '.') return;
if (s[a] == 's') b++;
a++; func(s, a, b);
}
void main(){
int a = 0, b = 0;
std::string s;
std::getline(std::cin, s);
func(s, a, b);
cout << b << endl;
_getch();
}
using namespace std;
void func(string s, int &a, int &b) {
if (s[a] == '.') return;
if (s[a] == 's') b++;
a++; func(s, a, b);
}
void main(){
int a = 0, b = 0;
std::string s;
std::getline(std::cin, s);
func(s, a, b);
cout << b << endl;
_getch();
}
#include
#include
using namespace std;
int main() {
string a;
cin >> a;
int b = a.length();
int c;
for(int i = 0;i < b;i++) {
if(a[i] == 's') {
c = c + 1;
}
if(a[i] == '.') {
i = b;
}
cout << c;
return 0;
}
#include
using namespace std;
int main() {
string a;
cin >> a;
int b = a.length();
int c;
for(int i = 0;i < b;i++) {
if(a[i] == 's') {
c = c + 1;
}
if(a[i] == '.') {
i = b;
}
cout << c;
return 0;
}
Владимир Дробыш
Спасибо, но это нужно сделать с помощью рекурсивной функции
Похожие вопросы
- Решить задачу на языке СИ
- Написать код на языке си
- Написать программу на языке Си
- Помогите с решением задачи на языке СИ
- Си!!! БЕЗ УКАЗАТЕЛЕЙ, ЯЗЫК СИ
- Упорядочить элементы массива по возрастанию на языке Си
- Создать файл ABONENT.dat, содержащий записи следующей структуры: ФИО абонента; его номер телефона. на языке си++
- Помогите с задачей на языке СИ
- Написать код на языке Си
- Написать программу на языке Си, которая решит эту задачу: