Erledigt Danke Vorgehensweise? zwei Zahlen m,n einlesen n-te Stelle von m ausgeben!
-
314159265358979 schrieb:
Die String-Methode ist mit sicherheit performanter :p
Meine Methode passt sich der Zahlenbasis an. Und wenn du jedoch noch prüfen willst, ob die Eingabe numeretisch ist, verlierst du auch Zeit. Und meine Version ist speicherschonender
.
-
EOutOfResources schrieb:
Meine Methode passt sich der Zahlenbasis an.
Overhead, der nicht gefordert war :p
EOutOfResources schrieb:
Und wenn du jedoch noch prüfen willst, ob die Eingabe numeretisch ist, verlierst du auch Zeit.
Du auch :p
EOutOfResources schrieb:
Und meine Version ist speicherschonender
.Nicht wesentlich :p
-
Ich vermute, der Lehrer erwartet sowas:
#include <iostream> int main() { int number; std::cin >> number; int index; std::cin >> index; for(int i=0;i<index;++i) number/=10; std::cout<<number%10<<'\n'; }
-
/*Aufgabe 2.1
Schreiben Sie ein Programm, das zwei Zahlen m und n einliest
und die n-te Ziffer der Zahl m ausgibt
z.B. m=1358 n=2 Ausgabe: 5
*/#include <iostream>
using namespace std;
int main()
{int m,n;
cout<<"Zahl eingeben";
cin>>m;
cout<<"Auszugebende Ziffer eingeben";
cin>>n;for(int i=0;i<n;++i)
{
m=m/10;
}cout<<"Die "<<n<<" Stelle von " <<
::m <<" ist gleich " << m%10 <<endl;
}Bei ::m schreit der Compiler, wie kann ich das eingelesene m ausgeben,
lg
markus
-
markuswenczel schrieb:
Bei ::m schreit der Compiler, wie kann ich das eingelesene m ausgeben,
Erklär lieber erst einmal, was du dir von ::m erhoffst und wo du diese Idee her hast.Und danach die eigentliche Lösung: Nimm eben eine dritte Variable, um dir das Ergebnis zu merken.
-
Indem Du statt ::m lieber (0+m+0) schreibst.
Aber m wurde schon kleingemacht, das wird so eh nichts.
-
314159265358979 schrieb:
#include <iostream> int main() { std::string number; std::cin >> number; int index; std::cin >> index; std::cout << number[index] << std::endl; }Der Lehrer zählt die Ziffern höchstwahrscheinlich ab 1 und rückwärts, weil es sich hier um "normale" Sprache handelt.
volkard schrieb:
Ich vermute, der Lehrer erwartet sowas:
#include <iostream> int main() { int number; std::cin >> number; int index; std::cin >> index; for(int i=0;i<index;++i) number/=10; std::cout<<number%10<<'\n'; }Die Initialisierung von i ist fehlerhaft. Bei der Eingabe 1358, 2 kommt "3" als Ergebnis.
EOutOfResources schrieb:
Ich würde es eher wiefolgt machen:
int Value; unsigned int DigitIndex; unsigned int Numberbase = 10; //Gibt's dafür ein spezielles Wort auf Englisch? //Alle drei befüllen unsigned int Digit = std::floor(static_cast<double>(Value) / std::pow(Numberbase, DigitIndex)) + Numberbase; while((Digit -= Numberbase) >= Numberbase);Das ist hoffentlich nur ein Witz. Unleserlich, unnötig kompliziert und man muss viel mehr überlegen, ob wieder mal wegen irgendwelcher Fließkommaeigenschaften nicht doch was schiefgehen könnte.
-
markuswenczel schrieb:
/*Aufgabe 2.1
Schreiben Sie ein Programm, das zwei Zahlen m und n einliest
und die n-te Ziffer der Zahl m ausgibt
z.B. m=1358 n=2 Ausgabe: 5
...Mein Vorschlag wäre:
int func(int m, int n) { int temp = 1; for (int i = 0; i < n; i++) temp *= 10; return (m%temp)/(temp/10); }
-
SeppJ schrieb:
markuswenczel schrieb:
Bei ::m schreit der Compiler, wie kann ich das eingelesene m ausgeben,
Erklär lieber erst einmal, was du dir von ::m erhoffst und wo du diese Idee her hast.Aus einme Buch Bereichsoperator für globale Variable ist aber nix
Und danach die eigentliche Lösung: Nimm eben eine dritte Variable, um dir das Ergebnis zu merken.
habe ich gemacht danke
Die Ausgabe stimmt leider nicht
es sollte 5 ausgeben gibt aber 3 aus
wird falsch durchlaufen die schleife schätze ich/*Aufgabe 2.1
Schreiben Sie ein Programm, das zwei Zahlen m und n einliest
und die n-te Ziffer der Zahl m ausgibt
z.B. m=1358 n=2 Ausgabe: 5
*/#include <iostream>
using namespace std;
int main()
{int m,n,help;
cout<<"Zahl eingeben=== ";
cin>>m;
help=m;
cout<<"Auszugebende Ziffer eingeben=== ";
cin>>n;for(int i=0;i<n;i++)
m/=10;
cout<<"Die "<<n<<" Stelle von " <<help <<" ist gleich " << m%10 <<endl;
cin>>m;
}eingabe 1358 + 2 Ausgabe 3 statt 5
hmmmmmmmmm
-
Darf keine Methoden verwenden sind noch nicht gegenstand der aufgaben
aber danke sieht gut aus,
lg
markusoldprogger schrieb:
markuswenczel schrieb:
/*Aufgabe 2.1
Schreiben Sie ein Programm, das zwei Zahlen m und n einliest
und die n-te Ziffer der Zahl m ausgibt
z.B. m=1358 n=2 Ausgabe: 5
...Mein Vorschlag wäre:
int func(int m, int n) { int temp = 1; for (int i = 0; i < n; i++) temp *= 10; return (m%temp)/(temp/10); }