W
Die Aufgabe scheine nicht zu sein "eine Zahl in einer andern Zahl finden" (was soll das bedeuten? Ich die 2 viermal in der 8 drin?), sondern zu zählen, wie oft eine Ziffer in der Dezimaldarstellung einer Zahl vorhanden ist.
Die naive Methode ist, einfach die Zahl in einen String in Dezimaldarstellung umzuwandeln (scheint bei dir ja gegeben zu sein) und das Zeichen dort zu suchen.
#include <algorithm>
#include <string>
#include <iostream>
...
std::string eingabe = "1233";
char ziffer = '3'; // in single quotes
auto n_found = std::count(eingabe.begin(), eingabe.end(), ziffer);
std::cout << "Ziffer " << ziffer << " ist " << n_found << " mal vorhanden\n";
Die andere Methode ist, mit Zahlen (statt strings) zu arbeiten.
Hier musst du dann die Zahl in ihre Zehnerdarstellung umrechnen.
int count_digit(int eingabe, int search_digit, int base = 10) {
if (eingabe == 0 && search_digit == 0) return 1; // Spezialfall führende 0 erlaubt
int n_found = 0;
eingabe = std::abs(eingabe);
// Betrag nehmen, weil: keine Lust zu gucken, wie module mit negativen Zahlen sich verhält
// (ich glaube, das ist implementierungsabhängig), gut, -int_max geht dann nicht
while (eingabe) {
int digit = eingabe % base;
if (digit == search_digit) ++n_found;
eingabe = eingabe / base;
}
return n_found;
}