ein program, das die ziffer der zahlen ausgibt

Keisha

Grünschnabel
hi,

ich brauche dringend hilfe für ein program, ich soll:
zwei zahlen einlesen m und n. jetzt kommt der punkt:
n-te ziffer der m-zahl soll das program ausgeben, d.h. m=2541 n=2
ausgabe: 4
ich weiss, dass es um char (' ') geht aber ich kann nichts zusammenbringen.

es wäre urtoll, mir einen weg zu erwähnen.

danke :confused:
 
Du liest erste Zahl gleich als string ein, die 2. als int. Dann bestimmst Du die Länge des strings, nimmst den string-Operator[] und bekommst mit Länge - n den Index der gesuchten Ziffer (= m[Länge - n] mit m vom Typ string und n und Länge vom Typ int).
 
moin


Oder du wandelst dein int mit z.B. wsprintf in einen String um und greifst dann wie von jokey2 beschrieben auf die einzelnen Elemente zu.


mfg
umbrasaxum
 
also ich kann mal probieren sowas zu programmieren ( übernehm keine garantie , dass des stimmt )

#include <iostream.h>

int main ()
{
char m[20];
int n;
cout << " geben sie m ein " << endl;
cin >> m;
cout << " geben sie n ein " << endl;
cin >> n;

// saugeben d. zahl :
cout << " das ergebnis ist : " << endl;
switch(n)
{
case '1' : cout << m[0];
break;

case '2' : cout << m[1];
break;

// so des musste jetzt noch weiterfürhren bis 20 *gg*.
//...................
}
system ("pause");
return 0;

}
MFG
 
moin


Naja, ein Anfang isses schonmal, aber so wäre es richtig:
Code:
#include <iostream>

using namespace std;

int main ()
{
     char m[20];
     int n;
     cout << " geben sie m ein " << endl;
     cin >> m;
     cout << " geben sie n ein " << endl;
     cin >> n;

     cout << " das ergebnis ist : " << m[n];

     cin.get();
     return 0;
}

@DerSensenmann und Keisha
Bitte haltet euch an die Groß und Kleinschreibung!


mfg
umbrasaxum
 
moin


Oder per wsprintf:
Code:
#include <iostream>

using namespace std;

int main ()
{
     char m[20];
     int zahl;
     int n;

     cout << " geben sie m ein " << endl;
     cin >> zahl;
     cout << " geben sie n ein " << endl;
     cin >> n;

     wsprintf(m, "%s", zahl);

     cout << " das ergebnis ist : " << m[n];

     cin.get();
     return 0;
}

mfg
umbrasaxum
 
Also Du hast ja schon zwei mögliche Lösungen bekommen. Ich hätte noch etwas, was Dir auch das gewünschte liefern könnte. Ich glaube man sollte in C++ versuchen, sich etwas von den char Arrays zu lösen und stattdessen gleich konsequent std::string und die dafür vorhandenen Funktionen zu nutzen. Man kann einen string auch direkt indizieren:
Code:
#include <iostream>
#include <string>

int main() {
        std::string zahlenString;
        unsigned int index;
        std::cout << "Geben Sie eine Zahl ein: ";
        if(!(std::cin >> zahlenString)) {
                // Eingabefehler: Programmabbruch mit Fehlerstatus
                std::cerr << "Fehler bei der Eingabe der Zahl" << std::endl;
                std::exit(EXIT_FAILURE);
        }
        std::cout << "Geben Sie den Index ein: ";
        if(!(std::cin >> index)) {
                // Eingabefehler: Programmabbruch mit Fehlerstatus
                std::cerr << "Fehler bei Eingabe des Index" << std::endl;
                std::exit(EXIT_FAILURE);
        }
        if(zahlenString.length() < index) {
                std::cerr << "Zu großer Index!" << std::endl;
                std::exit(EXIT_FAILURE);
        }
        std::cout << "Die " << index << "te Ziffer lautet: "
                  << zahlenString[index - 1] << std::endl;

        return 0;
}

Eine rudimentäre Absicherung gegen Fehlerfälle schadet nie, könnte auch noch weiter ausgebaut werden, indem man für einen ungültigen Index eine Exception wirft oder wenigstens mittels einer Schleife dem Benutzer eine neue Wahl ermöglicht.
Ich habe hier den Index mittels zahlenString[index - 1] nicht von 0 starten lassen, was vielleicht für einen nicht-Programmierer intuitiver wäre.
 
Zuletzt bearbeitet:
Jo , dass ich es mir immer so umständlich mache:
BIn net auf so eine Einfachkeit gekommen *gg*.
MFG

PS,:
Was bedeutet 'using namespace std;'
bzw. was bewirkt es.
 
moin


Das bedeutet das der Namespace namens "Standart" benutzt werden soll.
Goggle oder ein gutes Buch lässt grüßen...


mfg
umbrasaxum
 
Zurück