Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  Probleme bei der Umrechnung  
Gehen Sie zu Seite 1, 2, 3  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
chaosboy86
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.05.2012
Beiträge: 6
Beitrag chaosboy86 Mitglied 15:29:00 26.05.2012   Titel:   Probleme bei der Umrechnung            Zitieren

Hallo,

ich bin neu hier im Forum und mache ein Studium zum Informatiker. Dort behandel ich gerade C++. So weit verstehe ich alles nur habe ich ein Problem.

Ich soll ein Programm erstellen der Dualzahlen in ein Dezimalsystem umrechnet.

Habe schon ein Programm angefangen zu schreiben aber leider kommt nicht das raus was ich eigentlich haben muss.

der Quelltext sieht folgendermassen aus:

#include <iostream>

using namespace std;

int main()
{
cout << "Umrechnen von Dualsystem in Dezimalsystem" << endl;
cout << '\n';
int zahl, zahl1, zahl2, zahl3, zahl4, zahl5, zahl6, zahl7;

//den Wert einlesen
cout << "Geben Sie einen Dualwert ein: " << endl;
cin >> zahl; zahl1; zahl2; zahl3; zahl4; zahl5; zahl6; zahl7;

//die erste Berechnung

int zwischenergb, zwischenergb1, zwischenergb2, zwischenergb3, zwischenergb4, zwischenergb5, zwischenergb6, zwischenergb7;

zwischenergb = (zahl+(2*7));
zwischenergb1 = (zahl1+(2*6));
zwischenergb2 = (zahl2+(2*5));
zwischenergb3 = (zahl3+(2*4));
zwischenergb4 = (zahl4+(2*3));
zwischenergb5 = (zahl5+(2*2));
zwischenergb6 = (zahl6+(2*1));
zwischenergb7 = (zahl7+(2*0));

//die Ausgabe

int ergebnis = zwischenergb+zwischenergb1+zwischenergb2+zwischenergb3+zwischenergb4+zwischenergb5+zwischenergb6+zwischenergb7;

ergebnis = zwischenergb+zwischenergb1+zwischenergb2+zwischenergb3+zwischenergb4+zwischenergb5+zwischenergb6+zwischenergb7;

cout << ergebnis << endl;


return 0;
}


Ich weiß leider nicht wo direkt mein Fehler liegt.

Kann mir da jemand helfen?
Ich habe schon mit google gearbeitet aber nichts finden können.

danke
Unregistrierter





Beitrag Unregistrierter 15:40:01 26.05.2012   Titel:   Re: Probleme bei der Umrechnung            Zitieren

chaosboy86 schrieb:
Hallo,

ich bin neu hier im Forum und mache ein Studium zum Informatiker. Dort behandel ich gerade C++. So weit verstehe ich alles nur habe ich ein Problem.

Ich soll ein Programm erstellen der Dualzahlen in ein Dezimalsystem umrechnet.

Habe schon ein Programm angefangen zu schreiben aber leider kommt nicht das raus was ich eigentlich haben muss.

der Quelltext sieht folgendermassen aus:

#include <iostream>

using namespace std;

int main()
{
cout << "Umrechnen von Dualsystem in Dezimalsystem" << endl;
cout << '\n';
int zahl, zahl1, zahl2, zahl3, zahl4, zahl5, zahl6, zahl7;

//den Wert einlesen
cout << "Geben Sie einen Dualwert ein: " << endl;
cin >> zahl; zahl1; zahl2; zahl3; zahl4; zahl5; zahl6; zahl7;

//die erste Berechnung

int zwischenergb, zwischenergb1, zwischenergb2, zwischenergb3, zwischenergb4, zwischenergb5, zwischenergb6, zwischenergb7;

zwischenergb = (zahl+(2*7));
zwischenergb1 = (zahl1+(2*6));
zwischenergb2 = (zahl2+(2*5));
zwischenergb3 = (zahl3+(2*4));
zwischenergb4 = (zahl4+(2*3));
zwischenergb5 = (zahl5+(2*2));
zwischenergb6 = (zahl6+(2*1));
zwischenergb7 = (zahl7+(2*0));

//die Ausgabe

int ergebnis = zwischenergb+zwischenergb1+zwischenergb2+zwischenergb3+zwischenergb4+zwischenergb5+zwischenergb6+zwischenergb7;

ergebnis = zwischenergb+zwischenergb1+zwischenergb2+zwischenergb3+zwischenergb4+zwischenergb5+zwischenergb6+zwischenergb7;

cout << ergebnis << endl;


return 0;
}


Ich weiß leider nicht wo direkt mein Fehler liegt.

Kann mir da jemand helfen?
Ich habe schon mit google gearbeitet aber nichts finden können.

danke


Benutz doch einfach eine Schleife:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <complex>
 
int main()
{
      char const input[] = {"1001"};//Die Dual-Zahl (9)[t]2[/t]
      unsigned long long a(0);//Das Ergebnis
 
      for(size_t ct(0);ct < input.length();++ct)///Ein Zähler, der als Index des Strings dient
            a += (input[ct] - '0') * std::pow(2, ct); //Addiere die Zweier-Potenzen zum "Ergebnis"
 
      std::cout << a << '\n';
}


Geparst wird unter der Annahme, dass die (Edit:) Bit-Reihenfolge Links->Rechts ist.


Zuletzt bearbeitet von Unregistrierter am 15:46:37 26.05.2012, insgesamt 2-mal bearbeitet
chaosboy86
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.05.2012
Beiträge: 6
Beitrag chaosboy86 Mitglied 15:45:23 26.05.2012   Titel:              Zitieren

mh ok aber belasse ich dann mein quelltext und füge das mit ein oder wie muss ich das machen???

geht es nicht irgentwie einfacher da ich noch Anfänger bin....

Ich bedanke mich aber trotzdem bei dir....
Unregistrierter





Beitrag Unregistrierter 15:48:09 26.05.2012   Titel:              Zitieren

chaosboy86 schrieb:
mh ok aber belasse ich dann mein quelltext und füge das mit ein oder wie muss ich das machen???


:eek: Junge, bist du doof oder was? Verstehen was ich da gecodet habe, dass sollst du. Ich mach doch nicht deine Hausaufgaben. So lernste doch nix.
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25649
Beitrag volkard Moderator 15:48:59 26.05.2012   Titel:   Re: Probleme bei der Umrechnung            Zitieren

Oder sogar ohne pow
C++:
a = 2 * a + (input[ct] - '0');

_________________
ewr-dienstleister krankenversicherung
chaosboy86
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.05.2012
Beiträge: 6
Beitrag chaosboy86 Mitglied 15:49:24 26.05.2012   Titel:              Zitieren

schuldigung aber man muss nicht gleich unfreundlich werden....
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 15:51:45 26.05.2012   Titel:              Zitieren

@chaosboy86
Du musst zahl*27 rechnen ( mal und hoch, nicht plus und mal)
Der Button für Programmcode ist nicht B sondern C/C++

@Hacker
Du berechnest die Zahl falschrum. Das fällt bei der 9 aber nicht auf.
Auf das pow kann man auch verzichten.
Dann sieht die Schleife so aus:
C++:
  for(size_t ct(0);ct < input.length();++ct)
    a = (input[ct] - '0') + a * 2;
chaosboy86
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.05.2012
Beiträge: 6
Beitrag chaosboy86 Mitglied 15:56:42 26.05.2012   Titel:              Zitieren

@Dirk lasse ich dann die Klammern weg und wie schreibt man das hoch? z.b. so "^"?
Unregistrierter





Beitrag Unregistrierter 16:13:18 26.05.2012   Titel:              Zitieren

chaosboy86 schrieb:
@Dirk lasse ich dann die Klammern weg und wie schreibt man das hoch? z.b. so "^"?


Nein. Das ist der bitweise XOR-Operator.

DirkB schrieb:

@Hacker
Du berechnest die Zahl falschrum. Das fällt bei der 9 aber nicht auf.


Nein. Ich berechne mit einer anderen Bit-Reihenfolge.

chaosboy86 schrieb:
schuldigung aber man muss nicht gleich unfreundlich werden....


Tut mir Leid :D
Aber wenn du den Code so übernimmst und nix lernst, werd ich immer ganz böse ;)

@volkard: Der ist nice, den kannt' ich noch nicht.
Aber noch besser wäre doch shiften!! :D

C++:
      for(size_t ct(0);ct < input.length();++ct)
            a += (input[ct] - '0') * (1 << ct);


Zuletzt bearbeitet von Unregistrierter am 16:22:56 26.05.2012, insgesamt 3-mal bearbeitet
chaosboy86
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.05.2012
Beiträge: 6
Beitrag chaosboy86 Mitglied 16:15:58 26.05.2012   Titel:              Zitieren

@hacker aber wie gebe ich denn sonst bei c++ 2hoch7 ein?
c++.de :: C++ (auch C++0x und C++11) ::  Probleme bei der Umrechnung  
Gehen Sie zu Seite 1, 2, 3  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.