Probleme bei typedef
-
hi, hab eine hausaufgabe bekommen, kann mir da vllt jemand helfen?
Aufgabe lautet:
Schaffen Sie ein Programm, mit dem eine sichere Eingabe von Werten für die Datentypen:
my_int8
my_int32
my_ f loat64
möglich ist. Numerische Werte ausserhalb des zulässigen Bereiches sollen zurückgewiesen werden.habe als ansatz das hier probiert:
#include <iostream> using namespace::std; typedef signed char my_int8; typedef int my_int32; typedef long long my_float64; int main(int argc,char *argv[]) { char *b_char = " Bit"; //32 Bit System //Deklaration und Initialisierung der Typdef my_int8 bit8_int =0; my_int32 bit32_int =0; my_float64 bit64_float =0; eins:; cout<<"Eingabe fuer <my_int8>: ";cin>>bit8_int; if(bit8_int*8 < -128 || bit8_int*8 > 127){ cout<<"\nEingabe nicht im Bereich..."<<endl;; goto eins;} else goto zwei; zwei:; cout<<"Eingabe fuer <my_int32>: ";cin>>bit32_int; if(bit32_int*8 < -2147483648 || bit32_int*8 > 2147483647){ cout<<"\nEingabe nicht im Bereich..."<<endl; goto zwei;} else goto drei; drei:; cout<<"Eingabe fuer <my_float64>: ";cin>>bit64_float; if(bit64_float*8 < -2147484648 || bit64_float*8 > 2147484647){ cout<<"\nEingabe nicht im Bereich..."<<endl; goto drei;} else goto outp; // Ausgaben outp:; cout<<"Groesse: <my_int8> = "<<sizeof(my_int8)*8<<b_char<<endl; cout<<"Groesse: <my_int32> = "<<sizeof(my_int32)*8<<b_char<<endl; cout<<"Groesse: <my_float64> = "<<sizeof(my_float64)*8<<b_char<<endl; system("pause"); return 0; }aber leider klappt es nicht :<
-
Du sollst das sicher nicht via typedef machen, sondern durch Erstellen von Klassen für diese Typen.
-
Bei deinen Abfragen prüfst du, ob die Werte ausserhalb des Gültigkeitsbereichs deiner Typen sind (und wieso die Multiplikation mit 8?). Das funktioniert so nicht, da die Typen ja nur gültige Werte halten können. Besser, du fragst die Streams auf Fehler ab.
Zudem ist
long longkein Fliesskommatyp (eigentlich ist er gar nicht im C++-Standard enthalten). Und benutze keinegotos, die Hälfte deiner Sprünge sind sowieso unsinnig, da auch der normale Programmfluss zum gleichen Ergebnis führen würde. Die anderengotos sind durch Schleifen zu ersetzen.yadinho schrieb:
aber leider klappt es nicht :<
Wieder eine äusserst umfangreiche Fehlerbeschreibung, sehr gut.
-
@ Belli wie meinst du du das? haben grade typedef drangenommen unso.. naja wäre denn typedef sonst falsch?
@ Nexus ahh sry . also fehler is eig nur da sich nicht weiss wie ich eine sichere eingabe schaffen soll un den wertebereich richtig abfragen soll. also bei der momentan abfrage gibt er mir egal wa sich eingebe einen fehler aus, dass es icht im breich ist.
ich laufe grade bei dem thema etwa sauf dem holzweg
-
Naja, da wir bei C++ sind (und nicht bei C), ist mir als erstes, nachdem ich die Aufgabe gelesen hatte, die Erstellung entsprechender Klassen eingefallen.
Wenn Ihr noch keine Klassen durchgenommen habt, wird das aber wohl nicht richtig sein ...