lrik64
@lrik64
Начинающий программист

Как переделать код без функции на код с функцией?

Здравствуйте ,сделал программу по заданию "Функция принимает строку (как массив символов) и набор символов. Необходимо вернуть информацию о том, сколько раз символы из набора встречались в строке.", но сделал не через функцию помогите сделать с функцией пожалуйста.
Вот сам код:
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    char S[128]; cout << "Введите предложение    => "; cin.getline(S, 128);
    char C[128]; cout << "Введите набор символов => "; cin.getline(C, 128);
 
    int result = 0;
    for (int i = 0; i < strlen(S); i++)
    {
        for (int j = 0; j < strlen(C); j++)
        {
            if (S[i] == C[j])
                result++;
        }
    }
    cout << "Количество символов => " << result;
}
  • Вопрос задан
  • 154 просмотра
Решения вопроса 3
pluffie
@pluffie
Стыдно за старые вопросы
Не благодари.
void str_func(char S[128], char C[128])
{
  int result = 0;
      for (int i = 0; i < strlen(S); i++)
      {
          for (int j = 0; j < strlen(C); j++)
          {
              if (S[i] == C[j])
                  result++;
          }
      }
      cout << "Количество символов => " << result;
}

Синтаксис вызова функции:str_func("предложение", "набор символов");
Ответ написан
Комментировать
@olkhovich
#include <iostream>
#include <cstring>
using namespace std;

int str(char S[128], char C[128]) {
	int result = 0;
	for (int i = 0; i < strlen(S); i++)
	{
		for (int j = 0; j < strlen(C); j++)
		{
			if (S[i] == C[j])
				result++;
		}
	}
	return result;
}

int main()
{
	setlocale(LC_ALL, "rus");
	char S[128]; cout << "Введите предложение    => "; cin.getline(S, 128);
	char C[128]; cout << "Введите набор символов => "; cin.getline(C, 128);
	cout << str(S, C);
}
Ответ написан
myjcom
@myjcom Куратор тега C++
Еще так можно

#include <iostream>
#include <map>
#include <string>

using namespace std;

map<char, int> freq(const string& src, const string& pat)
{
  map<char, int> freq_dict;
  for(char c : pat)
  {
    if(freq_dict.count(c) == 0)
    {
      freq_dict[c] = 0;
    }
  }

  for(char c : src)
  {
    if(freq_dict.find(c) != freq_dict.end())
    {
      freq_dict[c]++;
    }
  }

  return freq_dict;
}

int main()
{
  string words, pat;
  cout << "Введите предложение    => "; getline(cin, words);
  cout << "Введите набор символов => "; getline(cin, pat);

  for(const auto& p : freq(words, pat))
  {
    cout << p.first << " : " << p.second << "\n";
  }
}

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы