eingegebene Zahl auf Ganzzahligkeit testen....HILFE



  • Hallo,

    ich stehe noch ganz am Anfang der C++ -rogrammierung und habe ein Problem.

    Ich möchte eine eingegebene Zahl testen ob es eine Ganzzahl ist und das es kein Buchstabe oder Sonderzeichen sondern wirklich eine Zahl ist....aber ich hab einfach gar keine Idee wie es gehen könnte.

    Kann mir da jemand einen Tip geben bitte?

    mfg
    catche 😕



  • #include <iostream>
    using namespace std;
    
    int main()
    {
    	double zahl1 = 5;
    	int zahl2;
    
    	zahl2 = zahl1;
    
    	if (zahl1 == zahl2)
    	{
    		//Hier schreiben was passieren soll, wenn die Zahl eine Ganzzahl ist
    		cout << zahl1;
    	}
    	else
    	{
    		//Hier was passierten soll, wenn sie nicht ganzzahlig war...
    	}
    
    	return 0;
    }
    

    Aber das solltest du selbst als Anfänger können, mit ein bisschen überlegen.....
    Das nächste Mal streng dich bitte etwas an 😉

    Also viel Spass noch

    Gruß eXitus



  • Hi,

    ich würde mal es mit dem Ascii-Code versuchen...

    Am besten du benutzt ne do-while schleife und setzt darin als Bedingung das der Ascii-Code der eingebenen Zahl/Zeichen den Ascii-Code der Zahlen 0-9 entspricht.....
    Ich glaub das wären dann 48-57...

    Die Lösung würde aber so einfach nur für die Zahlen 0-9 gelten....hihhi 😃



  • Ohh da war einer schneller als ich und die Lösung ist auch einfacher.....

    ICH HABE WIEDERMAL ZU KOMPLIZIERT GEDACHT !!!!!!!!!



  • eXitus schrieb:

    Gruß eXitus

    Vollständigerweise solltest du schreiben:

    int zahl2 = (int)zahl1;
    


  • Gast221212 schrieb:

    eXitus schrieb:

    Gruß eXitus

    Vollständigerweise solltest du schreiben:

    int zahl2 = (int)zahl1;
    

    Sicher nicht.



  • lol
    Danke nochmal und irgendwie schön ein wenig peinlich
    an so ne einfache Möglichkeit hab ich nicht mal geadcht,
    irgendwie hab ich nach was ziemlich umständlichen gesucht

    gruss 😃
    catche



  • habe ein ähnliches problem nur etwas komplexer. Ich verfüge auch nur über ein wenig Schulinformatik Wissen zu c++ 😃

    also:
    Ich soll für Vektoren (die mathe-profis sind gefragt) deren komponenten im Bereich von -10 bis +10 liegen, diejenigen rausfischen, deren Betrag ganzzahlig ist. Ich hab zwar schon eine Lösung aber die is recht kompliziert und gefällt mir nich so richtig 😃

    falls ihrs nicht wisst:
    ein vektor im raum besitzt 3 Komponenten (z.b. x,y ,z). Der Betrag eines Vektors ist sqrt(x²+y²+z²)

    ich hatte erst so gedacht:
    sqrt(x*x+y*y+z*z)%1==0 aber das geht ja nich weil sqrt ja double zahlen braucht

    außerdem würde mich noch interressieren, wie man doppelte ergebnisse streicht!?
    (also z.b.: I) -10; 5 ; -10 und II) -10; -10; 5 sind zwei Vektoren mit dem selben ganzzahligem Vektorbetrag (15) und gleichen Komponenten nur in unterschiedlicher anordnung)

    Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt und ihr könnt mir helfen 😞



  • Hm, mir erscheint im wesentlichen hast du dasselbe Problem wie der Eröffner dieses Themas ursprünglich - es geht nur darum, für jeden Vektor zu prüfen, ob sein Betrag ganzzahlig ist. Wie das geht, ist weiter oben erklärt. (Das Programm mit zahl1 und zahl2)
    Ich würde dann ein Feld definieren, dessen Länge der Anzahl deiner Vektoren entspricht, etwa

    int v[n];
    

    So ist das Ergebnis gesichert und du kannst weiter darauf zugreifen.

    Ich denke mal, um eine doppelte Prüfung von Vektoren mit identischen Beträgen wirst du nicht herumkommen, denn der PC weiß erst, dass die Vektoren gleiche Beträge haben, nachdem er sie ausgerechnet hat, bzw. entsprechende Algorithmen, um das vorher schon sagen zu können, würden wohl länger benötigen als die Berechnung des Betrages.

    Hoffe ich hab ungefähr das beantwortet, was du wissen wolltest.

    mfG,
    Matthias



  • also das mit den ganzzahligen wurzeln hab ich jetzt so raus:

    #include <iostream.h>
    #include <iomanip.h>
    #include <math.h>
    void main()
    {
    	for (int a=0; a<=10; a++)
    	{
    		for (int b=0; b<=10; b++)
    		{
    			for (int c=0; c<=10; c++)
    			{
    
    				int quadratsumme=a*a+b*b+c*c;
    				double vektorbetrag=sqrt(quadratsumme);
    
    				if (vektorbetrag==(int)vektorbetrag)
    				{
    					cout<<setw(5) <<a <<setw(5) <<b <<setw(5) <<c <<setw(5) <<char(179)
    						<<" " <<vektorbetrag <<endl;
    				}
    			}
    		}
    	}
    }
    

    nach anfängerkenntnissen; ihr profis könntet das bestimmt hübscher :p

    aber es muss doch eine möglichkeit geben, die doppelten ergebnisse rauszustreichen!?!


Anmelden zum Antworten