[C++] Aufgabe mit Hex/Oktal/Dezimal komme nicht weiter...

byte_head

Captain
Registriert
Jan. 2005
Beiträge
3.674
Hi,

ich beschäftige mich seit gestern mit C++,
nun bin ich im Tut zu meinem ersten Tut angekommen,
ich komme einfach nicht weiter. :freak:

hier mal die Aufgabe:

Tut schrieb:
Verwenden Sie in dieser Übung keine using-Anweisung und auch keine using-Directive!

Definieren und initialisieren Sie das Datum dblVar wie folgt:

double dblVal = 100.0/3.0;

Geben Sie das Datum dblVar dann mit 10 Stellen aus, wobei die nicht belegten Stellen mit dem Zeichen '*' aufzufüllen sind.

Definieren Sie ein zweites Datum number:
int number = 10;

Geben Sie das Datum number als Hexadezimal-, Oktal- und Dezimalzahl aus. Bei der Ausgabe soll die Kennung für die aktuelle Zahlenbasis mit ausgegeben werden.

So habe ich angefangen:

Code:
// include
#include <iostream>
#include <iomanip>
//prog

int main ( )
{
    //auszugebende daten
    double var1 = 100.0/3.0;
    int number = 10;
    //ausgabe
    std::cout << setprecision(10); << std::setfill('*') << var1;

}

Wenn ich das komplilieren will, gibt es schon Fehler, aber ich finde den Fehler nicht. :(
So soll es am Ende aussehen:

100/3 = ***33.3333
10 im 16er, 8er und 10er System:
Hex: 0xa, Okt: 012, Dez: 10


Ich kapiers nicht... -.-

Danke schonmal. :)
 
Wenn Du die Fehlermeldung anhängen würdest, vereinfacht das die Sache deutlich :-).
Was mir auffällt ist das int main() keinen Rückgabewert hat.

Für die Ausgabe von Zahlen in hex und dez gibt es stream operatoren (<< hex << oder << dec <<).

MfG

Arnd
 
int main()':
setprecision' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
expected primary-expression before '<<' token

Dank Dev-C++ kann man das nicht so toll copy & paste style machen... :(
 
#include <iomanip>

und std::setprecision sollte dann richtig sein. ADL sollte an der Stelle nicht funktionieren.

und std::setw solltest du dir auch noch anschauen.

@Arnd: main braucht kein Return, return 0; wird dann angenommen.
 
Code:
// include
#include <iostream>
#include <iomanip>
//prog

int main ( )
{
    //auszugebende daten
    double var1 = 100.0/3.0;
    int number = 10;
    //ausgabe
    std::cout << std::setprecision(6) << std::setw(10) << std::setfill('*') << var1;
    //ausgabe zeile 2
    std::cout << "\n10 im 16er, 8er und 10er System:\n";
    std::cout << "Hex: " << std::setbase(16) << number << ",";
    std::cout << " Okt: " << std::setbase(8) << number << ",";
    std::cout << " Dez: " << std::setbase(10) << number;
    getchar();
}

Alles stimmt bis auf die letzte Ausgabe:

bei Hex steht nur "a" und bei Okt steht "12" statt "012"...

Hätte nicht gedacht das ichs soweit schaffe, danke schonmal. :D
 
Du kannst auch einfach die Manipulatoren std::hex, std::oct und std::dec nehmen.

Und std::showbase zeigt die 0x bei hex an und die 0 bei oktal.

Gruß
 
Zuletzt bearbeitet: (smileys ausgeschaltet)

Ähnliche Themen

Antworten
20
Aufrufe
1.997
Antworten
12
Aufrufe
2.205
Zurück
Oben