Problem mit bool initializing
-
Code sollte funktionieren jedoch funktioniert bool nicht
#include <iostream> using namespace std; int main(int argc, char** argv) { int zahl,count = 0, rest[32] bool go = true; string run; while(go == true) { cout <<"Bitte geben Sie die Zahl ein\n"; cin >>zahl; for(int i= 0,i<32; i++) { rest[i] = zahl%2 zahl = zahl / 2; count++; if(zahl==0) { break; } } while(cound > 0) { cout << rest[count - 1]; count--; } cout <<"Neue Zahl? (y/n)"; cin <<run; if(run=="n") { break; } else if(run == "y") { go = true } else { cout<<"Fehlerhafte Eingabe. Bitte wiederholen Sie die Eingabe"; cout <<"Neue Zahl? (y/n)"; cin >> run; } if(run=="n") { break; } else if(run == "y") { go = true } else { break; } } cin.get(); }
-
In Zeile 5 fehlt ein Semikolon.
In Zeile 15 hast Du ein Semikolon mit einem Komma verwechselt.
In Zeile 17 fehlt ein Semikolon.
In Zeile 27 hast Ducount
undcound
verwechselt.
In Zeile 33 hast Du>>
mit<<
verwechselt.
#include <string>
fehlt.
In Zeile 40 fehlt ein Semikolon.
In Zeile 54 fehlt ein Semikolon.Möchtest Du deinen Code vielleicht auch vernünftig einrücken?
-
@Swordfish Bei richtigem Einrücken habe ich keine Ahnung, ist der erste "große" Code den ich schreibe
also bei zb if dann
if(.....)
{
}oder
if(.....)
_______ {
________}?
-
@HeavyStrike sagte in Problem mit bool initializing:
Bei richtigem Einrücken habe ich keine Ahnung
Indentation Style. Such dir einen aus und verwende ihn konsistent. Empfehlen würde ich Dir 1TBS - weniger Augenkrebs für andere.
Das:
@HeavyStrike sagte in Problem mit bool initializing:
cout << "Neue Zahl? (y/n)"; cin >> run; if (run == "n") { break; } else if (run == "y") { go = true; } else { cout << "Fehlerhafte Eingabe. Bitte wiederholen Sie die Eingabe"; cout << "Neue Zahl? (y/n)"; cin >> run; } if (run == "n") { break; } else if (run == "y") { go = true; } else { break; }
schreit nach einer Schleife die solange läuft, bis die Eingabe
"n"
oder"y"
ist.
-
@Swordfish Danke für deine Hilfe und ich werde es versuchen es in Zukunft besser zu Organisieren.
Könntest du mir auch noch hiermit helfen?
das Ergebnis kommt nich richtig raus und ich weiß nicht warum#include <iostream> #include <cstdlib> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { int i=0, s=0, laenge; //i und s für das Array int dezWerte=0; //um Falsche Ausgaben zu verhindern string HexEingabe; int HexArray[4]; //[4] für die 4 Eingaben/Zeichen int HexVorgabe [4] ={1, 16, 256, 4096}; // 16 hoch 0-3 Ergebnisse cout <<"Hex in Dez - Umrechnung" <<endl; cout <<"Geben Sie Ihre Hexadezimalzahl ein\n"; cin >> HexEingabe; laenge = HexEingabe.length(); //Analyse der Länge für spätere Verwendung cout <<"Laenge" << laenge << endl; for(i=laenge-1; i>=0; i--) //Beginn des Case { switch (HexEingabe[i]) { case'A': case'a': HexArray[s]=10; break; case'B': case'b': HexArray[s]=11; break; case'C': case'c': HexArray[s]=12; break; case'D': case'd': HexArray[s]=13; break; case'E': case'e': HexArray[s]=14; break; case'F': case'f': HexArray[s]=15; break; default : HexArray[s]= HexEingabe[i]-48; } } cout <<HexArray[s]<<endl; dezWerte = dezWerte+ HexVorgabe[s]*HexArray[s];s = s+1; cout << endl<< "Ergebnis:" << dezWerte; return 0; }
-
<cstdlib>
ist überflüssig, dafür fehlt<string>
.
Welchen Wert hats
? Wo ändert sich der Wert vons
.Sollte
dezWerte = dezWerte+ HexVorgabe[s]*HexArray[s];s = s+1;
vielleicht in eine Schleife?
-
@Swordfish ich komme mit arrays nicht klar , das ist vom Unterricht.
würde ein Schleife das Problem beheben?
und wenn ja weiß ich nicht wie ich dort eine schleife richtig anwendeDanke für die schnellen Antworten, du rettest mein Leben ^^
-
Nochmal: Welchen Wert hat
s
immer in Deinemswitch
-Konstrukt?
Im Prinzip braucht man für die Umrechning einer Hex-Zahl in einem String in eine Dezimalzahl keine Arrays.
-
@Swordfish Dann mache ich das ohne Array, ich habe jedoch keine Ahnung wie.
Ich weiß auch nicht welchen wert s hat , ich sehe auch keine verwendung dafür bis auf den fakt das es im Array sitzt.
-
@HeavyStrike sagte in Problem mit bool initializing:
s = s+1;
Du initialisierst
s
mit0
in Zeile 8. Bis zums = s+1;
in Zeile 39 ändert sichs
auch nicht. Dh. Du überschreibst in derfor
-Schleife imswitch
immer wiederHexArray[0]
. So wie Du es Dir gedacht hast wolltest Du wohl eherHexArray[0]
,HexArray[1]
,HexArray[2]
undHexArray[3]
mit den Zahlenwerten füllen, die dem jeweiligem Buchstaben entsprechen.@HeavyStrike sagte in Problem mit bool initializing:
Dann mache ich das ohne Array, ich habe jedoch keine Ahnung wie.
Eingabe: 1234abcd
also
HexEingabe[0] = '1'
, Stelle 7
HexEingabe[1] = '2'
, Stelle 6
HexEingabe[2] = '3'
, Stelle 5
HexEingabe[3] = '4'
, Stelle 4
HexEingabe[4] = 'a'
, Stelle 3
HexEingabe[5] = 'b'
, Stelle 2
HexEingabe[6] = 'c'
, Stelle 1
HexEingabe[7] = 'd'
, Stelle 0Für alle
i
vonHexEingabe.length()
bis1
:Wenn
HexEingabe[i - 1]
eine Ziffer ist1),'0'
davon abziehen:
HexEingabe[i - 1] -= '0';
Wenn
HexEingabe[i - 1]
ein Buchstabe zwischen'a'
und'f'
ist2),'a' - 10
abziehen:
HexEingabe[i - 1] -= 'a' - 10;
Wenn
HexEingabe[i - 1]
etwas anderes ist ~> Eingabefehler.Dann bloß Zusammenzählen mit dem entsprechenden Stellenwert gewichtet:
decimal += HexEingabe[i - 1] * pow(16, Stelle);
Stelle bekommst Du durch
HexEingabe.length() - i
.1) Dabei hilft
std::isdigit()
aus<cctype>
.
2) Eventuell vorherHexEingabe[i] = std::tolower(HexEingabe[i]);
damit Groß-/Kleinschreibung keine Rolle spielt.
-
@Swordfish um erlich zu sein muss ich das morgen abgeben mit 4 anderen Umrechnern, 1 klappt durch youtube , wäre es zuviel gefragt von mir wenn du das für mich machen könntest da ich grad kurz vorm Kollaps stehe.
es tut mir leid damit deine Zeit zu verschwenden......
ich mache gleich den structorizer dann gebe ich es auf....
-
@HeavyStrike sagte in Problem mit bool initializing:
um erlich zu sein muss ich das morgen abgeben
In dem Fall nimm bitte deinen zuletzt geposteten Code, tausche
<cstdlib>
gegen<string>
. Dann packst Du Zeilen 38 und 39 so wie sie sind unter dasswitch
in diefor
-Schleife. Ist zwar nicht perfekt aber funktioniert für viele Eingaben. Viel Glück.
-
@Swordfish Vielen Dank für deine Hilfe!
und ein Gute Nacht
-
@HeavyStrike sagte in Problem mit bool initializing:
Nicht den Kopf hängen lassen. Mach jetzt hinne und probiers aus. Wenns nicht tut Zeig nochmal deinen Code.
-
@Swordfish Die Ausgabe sieht so aus:
Sie haben den UmwandlerVon Hexadezimal zu Dezimal
ausgewaehlt
Hex in Dez - Umrechnung
Geben Sie Ihre Hexadezimalzahl ein
1b
Laenge2
11
1
67Ergebnis:17179
Process exited after 2.532 seconds with return value 0
Drücken Sie eine beliebige Taste . . .code ist derzeit (Empfehlung es ist in case 3, damit du nicht suchen musst):
#include <iostream> #include <cstdlib> #include <String> using namespace std; int main(int argc, char** argv) { char Antwort; int zahl; int count = 0, rest[32]; //---------Ausgabe der Vorinformationen------------------------------- cout <<"Dies ist der Multiumrechner."<<endl ; cout <<"Waehlen sie Ihre gewuenschte Umrechnungsart aus."; cout <<"\nVon Dezimal zu Hexadezimal : 1" << endl; cout <<"Von Dezimal zu Binaer : 2" << endl; cout <<"Von Hexadezimal zu Dezimal : 3" << endl; cout <<"Von Hexadezimal zu Binaer : 4" << endl; cout <<"Von Binaer zu Hexadezimal : 5" << endl; cout <<"Von Binaer zu Dezimal : 6\n \n \n" << endl; cout <<"Bitte geben sie Ihre Antwort ein"<< endl; //-------- EInelesen der Antwort--------------------------- cin >>Antwort; //----------------Switch zur Antwortsunterscheidung---------------------------- switch(Antwort) { //***********Von Dezimal zu Hexadezimal **************** case'1': { system("cls"); cout << "\nSie haben den Umwandler ``Von Dezimal zu Hexadezimal`` ausgewaehlt"; cout << "\n\n\nBitte geben Sie eine Dezimal Zahl ein: "; cin >> zahl; // Berechnung / Ausgabe Hexadezimal cout << "Umgerechnet in eine Hexadezimal Zahl lautet diese: "; cout << endl; while (zahl!=0) { cout << (zahl%16) <<endl; zahl = zahl / 16; } } break; //*********** Von Dezimal zu Binaer **************** case'2': { system("cls"); //Leeren der Bildschirmes cout <<"\nSie haben den Umwandler ``Von Dezimal zu Binaer`` ausgewaehlt"<< endl; //Titel der gewaehlten Option //--------Integer---------- -------------------------- bool go = true; string run; while(go == true) //Beginn der Schleife { cout <<"Bitte geben Sie eine Dezimalzahl ein\n"; cin >>zahl; //-----------Schleifenbeginn----------------- for(int i= 0;i<32; i++) //Bedingung der Berechnung { rest[i] = zahl%2; zahl = zahl / 2; count++; if(zahl==0) // Outbreak aus der Schleife { break; } } //-----------Schleifenbeginn fuer Berechnung----------------- while(count > 0) //Zaehler { cout << rest[count - 1]; count--; } cout <<"\nNeue Berechnung? (y/n)"; //abfrage cin >>run; if(run=="n") { break; } else if(run == "y") { go = true; } else { cout<<"Fehlerhafte Eingabe. Bitte wiederholen Sie die Eingabe"; // Bei Fehlerhaften Einagebe cout <<"\nNeue Berechnung? (y/n)"; cin >> run; } if(run=="n") { break; } else if(run == "y") { go = true; } else { break; } } cin.get(); } break; //*********** Von Hexadezimal zu Dezimal **************** case'3': { system("cls"); //Leeren der Bildschirmes cout <<"\nSie haben den Umwandler ``Von Hexadezimal zu Dezimal`` ausgewaehlt"<< endl; //Titel der gewaehlten Option int i=0, s=0, laenge; //i und s f¨¹r das Array int dezWerte=0; //um Falsche Ausgaben zu verhindern string HexEingabe; int HexArray[4]; //[4] f¨¹r die 4 Eingaben/Zeichen int HexVorgabe [4] ={1, 16, 256, 4096}; // 16 hoch 0-3 Ergebnisse cout <<"Hex in Dez - Umrechnung" <<endl; cout <<"Geben Sie Ihre Hexadezimalzahl ein\n"; cin >> HexEingabe; laenge = HexEingabe.length(); //Analyse der L?nge f¨¹r sp?tere Verwendung cout <<"Laenge" << laenge << endl; for(i=laenge-1; i>=0; i--) //Beginn des Case { switch (HexEingabe[i]) { case'A': case'a': HexArray[s]=10; break; case'B': case'b': HexArray[s]=11; break; case'C': case'c': HexArray[s]=12; break; case'D': case'd': HexArray[s]=13; break; case'E': case'e': HexArray[s]=14; break; case'F': case'f': HexArray[s]=15; break; default : HexArray[s]= HexEingabe[i]-48; } cout <<HexArray[s]<<endl; dezWerte = dezWerte+ HexVorgabe[s]*HexArray[s];s = s+1; } cout <<HexArray[s]<<endl; dezWerte = dezWerte+ HexVorgabe[s]*HexArray[s];s = s+1; cout << endl<< "Ergebnis:" << dezWerte; } break; //*********** Von Hexadezimal zu Binaer **************** case'4': { cout<<"Antwort"<<endl; } break; //*********** Von Binaer zu Hexadezimal **************** case'5': { cout<<"Antwort"<<endl; } break; //*********** Von Binaer zu Dezimal **************** case'6': { cout<<"Antwort"<<endl; } break; } }
-
@Swordfish sagte in Problem mit bool initializing:
Dann packst Du Zeilen 38 und 39 so wie sie sind unter das switch in die for-Schleife.
Damit war gemeint verschieben, nicht kopieren.
-
@Swordfish oops , habe die kopie von zeile 157 und 158 entfernt
jetzt die Ausgabe :
Sie haben den UmwandlerVon Hexadezimal zu Dezimal
ausgewaehlt
Hex in Dez - Umrechnung
Geben Sie Ihre Hexadezimalzahl ein
1b
Laenge2
11
1Ergebnis:27
-
-
@Swordfish Vielen Dank für deine Hilfe und deine Geduld
Mir Fehlen noch 3 Umrechner, jedoch schreibe ich morgen zeitgleich ne Klausur und brauche Schlaf (nach dem Structorizer)
also beende ich das Structogramm und gehe schlafen.Vielen Dank, mit Glück rettet das meine Note!
-
@Swordfish Oder haste zufälligerweise nen mit Grundkenntnissen geschriebennen Rechnern rumliegen:
Hex zu Binär
Binär zu Hex
Binär zu Dezimal