Funktion ''bool intTest(int n, char c)'' ohne schleifen berechnen
-
Häh? Wo habe ich einmal das Wort Pointer oder gar bloß einen Stern benutzt? Mir scheint, du hast eine ganz andere Antwort aus einem anderen Thread gelesen

-
weil du das geschrieben hast
istream& operator>> (istream& is, char& ch );hast du mit & nicht adresse gemeint?
was bedeutet das was du geschrieben hast für eine ungeschickte programmierin?
-
Das ist der
operator>>(rechter Shift operator, wird gern für die Eingabe verwendet), der hier so überladen wird, dass du ihn für einzelne Zeichen benutzen kannst.
Dafür wird dem Operator einistream-Objekt (in deinem Fallecin) übergeben und eine Referenz (wird durch das&verdeutlicht) auf das Zeichen, in welches das eingelesene geschrieben werden soll.
Das&hat in diesem Falle nichts mit Zeigern zu tun, sondern zeigt an, dass der Übergabeparameter eine Referenz ist bzw. bei der Übergabe eine Referenz auf den übergebenen Wert erstellt wird.
Die Überladung des Operators sorgt dafür, dass du ihn eben für Eingaben verwenden kannst.Aber da sollte ein gutes Anfängerbuch wohl mehr nützen als Sepp oder ich oder sonstwer hier.
-
Das ist die Signatur der Funktion, die du in Zeile 25 benutzt hast. Das ist eine Funktion aus der Standardbibliothek, die hat eben diese Signatur. Das & ist in diesem Zusammenhang auch nicht der Adressoperator, sondern das Zeichen für eine Referenz.
Um das mal auf allerniedrigstem Niveau noch einmal zu sagen:
char wert; std::cin >> wert;und
int wert; std::cin >> wert;Beide Male tippst du "2" ein. Dann ist der Wert von
wertin beiden Fällen ein ganz anderer, denn es wurden völlig verschiedene Funktionen benutzt. Im ersten Fall ist der Wert '2' (das Zeichen für die Ziffer), im zweiten Fall ist der Wert 2 (die Zahl, zum Beispiel die Anzahl der I's hier: II ). Es gilt auf fast allen Systemen '2' != 2.
-
khati schrieb:
warum bekomme ich immer die ausgabe 0 ?
Wahrscheinlich deswegen, weil du es nicht geschafft hast, andere Werte einzugeben, so dass keine 0 rauskommt.
Viel praktischer wäre jetzt die Information deinerseits gewesen, was du bei bestimmten Eingaben für Ausgaben erwartest.
Auch praktisch wär jetzt gewesen, zu verraten, was intTest eigentlich machen soll, also welches Problem du mit intTest zu lösen versuchst.
khati schrieb:
int n ; char c; cout << "Bitte geben Sie die 2 Zahle ein\n"; cin >> n >> c;Das sieht komisch aus. Ich kann mir denken, dass hier nicht das passiert, was du willst. Bist du dir im Klaren darüber, dass der Wert von c nicht der eingegebenen Zahl sondern dem Code für das Zeichen der eingegebenen Zahl entspricht? Wenn du nicht gerade auf einer exoktischen Platform arbeitest, dann hat das Zeichen '0' beispielsweise den Wert 48, siehe ASCII-Tabelle; denn mit "cin>>c" wird ein Zeichen nur gelesen, nicht als Ganzzahl interpretiert und konvertiert. "cin>>n" hingegen liest mehrere Zeichen ein, interpretiert das als Ganzzahltext und schreibt den interpretierten Wert in die Variable n rein.
-
khati schrieb:
warum bekomme ich immer die ausgabe 0 ?
weil in Zeile 8
if(n%10 ==c){steht und nicht
if(n%10 == c-'0'){probier's aus
-
Schreiben Sie eine Funktion ''bool intTest(int n, char c)'', die prüft, ob die Ziffer c in der Zahl n vorkommt. Verwenden Sie in der Funktionsdefinition keine Schleifen.
damitint n ; char c; cout << "Bitte geben Sie die 2 Zahle ein\n"; cin >> n >> c;habe ich int und char eingelesen und mit diese werte intTest(n, c) aufgerufen
wenn ich manuel in intTest(1234,2) schreibe oder intTest(1234,8) bekomme ich erwünschte ausgabe 1 bzw 0
aber wenn ich von komandozeile einlese diese werte bekomme ich immer die ausgabe 0
was kann ich in meine Logik ändern?
-
@Werner_logoff
so hat es geklapptif(n%10 == c-'0')jetzt werde ich googeln was das genau macht und höffe dass ich in langzeitgedächtniss seichern werde
-
khati schrieb:
jetzt werde ich googeln was das genau macht
genau das haben SeppJ, Der Tobi und Krümelkacker bereits versucht Dir zu erklären - wie man hier liest, ohne Erfolg.
'google' mal nach Dingen, die Du in Ihren Antworten nicht verstehst, oder frage einfach konkret nach.
-
auf jedenfall danke für die hilfe