000
25.11.2004, 12:47 Uhr
~klfischer
Gast
|
Hallo,
Folgendes Problem:
Wir befuellen einen String zeichenweise mit dem Ergebniss einer long Rechenoperation. Das funktioniert soweit wunderbar, im Debugger werden auch die richtigen Ergebnisse im Array angezeigt.
Nur bei der Ausgabe des Strings mit einer for Schleife, kriegen wir nicht das gewünschste Ergebniss sondern nur kryptische Zeichen (Smiles,Pik,Herz,Karos etc....). Ein Cast Operation hat daran auch nichts geändert (long->char).
Leider muessen wir uns an diese Vorgehensweise halten, da sie Bestandteil unsere r Aufgabenstellung ist.
Vielen Dank schonmal für evt. Hilfe hierzu...
C++: |
// ZS_Umrechner.cpp
#include <iostream.h> #include <string.h> #include <windows.h> #include <stdlib.h> #include <stdio.h> #include "ZS_Umrechner.h"
int main() { long basisNeu, dezZahl; int nochmal=0;
ZS_Umrechner myZScalc;
while(nochmal == 0) // Schleife für mehrere Durchlaeufe { system("CLS"); // vor jedem durchlauf Konsole leeren int wtrue1=0; while(wtrue1 == 0) { cout <<"\n Bitte neue Basis eingeben (Wertebereich 2-36): "; cin >> basisNeu;
if(basisNeu<2 || basisNeu>36) // ueberprüfen ob Basis in Wertebereich passt { cout <<"\n Die Basis kann nur die Werte 2 bis 36 annehmen..." <<endl; Sleep(3000); // 3 sec warten system("CLS"); } else { myZScalc.ein_Basis(basisNeu); wtrue1=1; } }; //while(wtrue1 == 0)
cout <<" Bitte umzurechnende Zahl eingeben (nur ganze Zahlen): "; cin >> dezZahl; myZScalc.ein_DezWert(dezZahl);
cout << "\n\n Noch ne Zahl umrechnen [0] oder Abbruch [1] ? "; cin >> nochmal; } return 0; } //main()
// ZS_Umrechner.h
class ZS_Umrechner { protected:
long DezWert; char ErgWert[100]; long Basis; long wertAlt; int zTmp1; int buffer;
public:
// void umrechnen() // DezWert in ErgWert umrechnen long umrechnen() // DezWert in ErgWert umrechnen { wertAlt=DezWert; // DezWert soll fuer aus_DezWert() erhalten bleiben
if(Basis<=9) // bei Basis 2 -> 9 {
zTmp1=0; buffer=0; while(wertAlt!=0) { buffer=wertAlt%Basis; ErgWert[zTmp1]=static_cast<char>(buffer); wertAlt/=Basis; zTmp1++; }
ErgWert[zTmp1]='\0'; } else // Basis > 9 => fuer Zahlen > 9 muessen Buchstaben a->z genutzt werden { //Platzhalter } // kucken
for (zTmp1;zTmp1>=0;zTmp1--) { cout<<ErgWert[zTmp1]<<endl; // kommt komischer ascii code raus. } return 0;
}; //umrechnen()
void ein_Basis(long fBasis) // Basis eingeben { Basis=fBasis; }; //ein_Basis(long)
void ein_DezWert(long fDezWert) // DezWert eingeben { DezWert=fDezWert; }; //ein_DezWert(long)
long aus_DezWert() // DezWert ausgeben { return DezWert; }; //aus_DezWert() long aus_Basis() // Basis ausgeben { return Basis; }; //aus_Basis()
};
|
|