HomeArtikelDownloadsForum
PCFreunde.deForumEntwicklungC++, C
Besucher online: 556
Schnellsuche

Anzeigen

Community

Foren
C++, C Seite 1/1
Rest (Modulo) rechnung mir float geht net
AntwortenNeues ThemaZur Themenliste
Seiten:
1
Nachricht
MadBonsaiJr
Titel: Rest (Modulo) rechnung mir float geht net 25.01.2011 19:28
1.522 Punkte (?)
Anmeldungsdatum: 26.08.2009
Beiträge: 791
Tutorial Autor (?)
HEy, ich bin immernoch bei meinem Taschenrechner und jetzt (wollte) ich Mal und Geteil dazu tun. Leider habe ich ein Problem bei Mal. Ich möchte, dass der PC als Ergebniss ausgibt: Ergebniss : XYZ, Rest: ABC

Hier der Code (Habe der Übersicht zu gute Plus,Minus u. Mal weggelassen): http://pastebin.com/aQKCyNRT

Ich wollte das später auch in ne Funktion tun, aber das klappt ja auch schon ohne nicht. Als Fehlermeldung zeigt mir mein Compiler (immernoch Code::Blocks)
Zitat:
invalid operands of types flopat and float to binary operator%
an!

Von Delphi her weiß ich , dass i-was nicht mit den Variablen-typen in Ordnung ist, aber was?

[Zuletzt bearbeitet: 25.01.2011 19:29]

________________________________________
Pc: http://www.sysprofile.de/id146539
Phobie vor langen Wörtern: Hippopotomonstrosesquippedaliophobie
Private Nachricht senden  
 
L3oop
Titel: Rest (Modulo) rechnung mir float geht net 25.01.2011 19:38
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Zumindest ein Fehler liegt wohl hier:

double Geteilt(float z1, float z2)
{
return (z1 / z1);
}

Du teilst z1 durch sich selbst, somit kommt immer 1 heraus.

Ansonsten kann der Modulo-Operator nur mit zwei Int-Operanden verwendet werden. Ändere dazu die Datentypen bei der Funktionsdefinition auf int.

Damit Ergebnis und Rest richtig angezeigt wird, musst du zum einen den Fehler oben beheben, zum anderen (z1 % z2) von z1 abziehen, so dass du den rest-freien Betrag erhältst.

[Zuletzt bearbeitet: 25.01.2011 19:39]

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
MadBonsaiJr
Titel: Rest (Modulo) rechnung mir float geht net 26.01.2011 00:01
1.522 Punkte (?)
Anmeldungsdatum: 26.08.2009
Beiträge: 791
Tutorial Autor (?)
okee, werde ich morgen ausprobieren, das mit z1 7 z2 war nur ein schreibfehler

________________________________________
Pc: http://www.sysprofile.de/id146539
Phobie vor langen Wörtern: Hippopotomonstrosesquippedaliophobie
Private Nachricht senden  
 
xero
Titel: Rest (Modulo) rechnung mir float geht net 26.01.2011 09:00
1.953 Punkte (?)
Anmeldungsdatum: 04.09.2006
Beiträge: 450
Tutorial Autor (?)
Kleiner Mathematischer Trick:
Zitat:
result = (int)z1/z2;
rest= z1-(float)result*z2;


Geht aber sicher auch noch besser. Google mal.
mfg
Private Nachricht senden  
 
Nvidia Freak
Titel: Rest (Modulo) rechnung mir float geht net 26.01.2011 12:35
888 Punkte (?)
Anmeldungsdatum: 02.05.2010
Beiträge: 399
Darf ich fragen, wozu du einen Rechner haben willst, der dir einen Rest anzeigt?

[Zuletzt bearbeitet: 26.01.2011 12:39]

________________________________________
Rechtschreibfehler vehrleihen Beiträägen eine persönliche Nothe
Recycling Tower
Private Nachricht senden  
 
MadBonsaiJr
Titel: Rest (Modulo) rechnung mir float geht net 26.01.2011 15:46
1.522 Punkte (?)
Anmeldungsdatum: 26.08.2009
Beiträge: 791
Tutorial Autor (?)
Weil ich der Reihe nach abarbeiten soll:
Plus
Minus
Mal
Geteilt mit Rest
Geteilt mit Dezimalzahlen


________________________________________
Pc: http://www.sysprofile.de/id146539
Phobie vor langen Wörtern: Hippopotomonstrosesquippedaliophobie
Private Nachricht senden  
 
MadBonsaiJr
Titel: Rest (Modulo) rechnung mir float geht net 26.01.2011 15:59
1.522 Punkte (?)
Anmeldungsdatum: 26.08.2009
Beiträge: 791
Tutorial Autor (?)
diesen "mathematischen trick" verstehe ich irgendwie nicht. Ich habs in mein Programm mal eingefügt, aber ich bekomme bei 5 / 2 nicht 2 Rest 1 sondern: 5 / 2 = 1 Rest 0

?!?!

Habe das mit ner Funktion gemacht, Code(mit Funktion):http://pastebin.com/ZRjhYx0Q

________________________________________
Pc: http://www.sysprofile.de/id146539
Phobie vor langen Wörtern: Hippopotomonstrosesquippedaliophobie
Private Nachricht senden  
 
xero
Titel: Rest (Modulo) rechnung mir float geht net 26.01.2011 17:09
1.953 Punkte (?)
Anmeldungsdatum: 04.09.2006
Beiträge: 450
Tutorial Autor (?)
Warum so kompliziert?

Beispiel:
5/2:
result = (int)z1/z2;
rest= z1-(float)result*z2;

result = (int)5/2; // = 2
rest = 5- (float)2*2; //= 5-*4 = 1

5/2 = 2 und 1 Rest.

Im Code kann das - auswendig runter geschrieben und nicht geprüft so aussehen:

Zitat:
float Geteilt(float z1, float z2)
{
return (z1 / z1);
}

(...)

int ergebnis = (int)Geteilt(z1,z2);
int rest = z1-(float)Geteilt(z1,z2)*z2;

ergebnis und rest können natürlich auch float sein. den Cast auf float bei "rest =" kann man eigentlich weglassen, da die methode float zurück gibt.

So oder so ähnlich sollte es funktionieren.
Zur Erklärung: Der Cast auf Int schneidet die Nachkommastellen ab.

mfg
Private Nachricht senden  
 
AntwortenNeues ThemaZur Themenliste
Seiten:
1
Community Login
eMail:
Passwort:
Auto-Login