Habe ein Problem
-
So wir haben diese woche projekt woche in der schule und ich muss jetzt die programme alle zusammen führen und da der jenige der dieses programm geschrieben hat heute krank ist weiß ich nicht weiter kannst du mir denn villeciht weiter helfen das wäre sau nett.
-
Nimm die doubles raus und entfern den Kommentar bei int Ergebnis[Bit].
-
Kannst du mal dazuschreiben, auf welche Programmzeilen sich die beiden Fehlermeldungen beziehen? Weder in Zeile 102 noch in Zeile 127 steht etwas, was zu diesen Meldungen passt.
Ansonsten: Du hast 'Ergebnis' als double-Variable deklariert, die kannst du nicht über einen Index-Zugriff
Ergebnis[i]
manipulieren (das geht nur mit Arrays, Zeigern oder Klassen mit überladenem op[]).PS: Noch zwei Anmerkungen:
- Was für eine Funktion haben denn die ganzen 'const char' Variablen am Programmanfang?
j=j++;
ist Käse - entwederj++
oderj=j+1;
sind gültig, aber diese Mischung erzeugt undefiniertes Verhalten.- Der Abschnitt 'eWert=Wert1;...' kann vom Programm nicht erreicht werden.
-
Der Fehler ist hier irgendwo drin warte die Fehlermeldung kommt jetzt noch dabei
cout << Ergebnis[Bit-1-i] << " ";//Ausgabe des Ergebnis in ablaufender Folge der einelnen "Array-Speicherbelegungen"15-0
}cout << endl;
Fehlermeldung ist hier:
F:\Projektwoche\Programmentwicklungen\Umwandeln der Zahlensysteme.cpp(206) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp
-
kann mir bitte irgendjemand helfen
-
Ja - schau mal nach oben, dort wird der Fehler (in mehrfacher Ausführung) schon erklärt, inklusive einer möglichen Lösung.
-
/*PROJEKTWOCHE HBFPI(u) 22.01-29.01.2007 - PROGRAMM MULTI-UMWANDLER
Programmname: Multiumwandler von Zahlensystemen (von Hexadezimalsystemen,Dualsystemen,Dezimalsystemen und ASCII-Code)
Aufgabe des Programms: Umwandlen von verschiedenen Zahlensyste in andere Zahlensysteme
Erstellt von: Daniel Gnitecki, Denis Geist, Bernhard Hansen und Rainer Jahnke
Erstellt am: 22.01.2007
Letzte Änderung:25.01.2007
*/
//-------------------BEGINN: PROGRAMM----------------------------------------------------------------------------------------------------------------
//Einbinden der Bibliotheken
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
#include <stdlib.h>int main () //Einbinden der Hauptfunktion
{
//Deklaration und Initialisierung der Variablen und Konstanten////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
char dec = 'a', dual = 'b', hex = 'c', ascii = 'd';
const char ASCII =0,Dezimalsystem = 0, Dualwert = 0, Hexadezimalsystem =0, Dualsystem =0, Hexadezimalwert =0;
char Wert, Zahlensystem;
double Ergebnis = 0.0,
int Dezimalwert= 0.0;const int Bit = 16;
const int Begrenzung = 65535;int Wert1 = 0;
int eWert;//int Ergebnis[Bit];
int tempWert;
int i;
int j = 0;
int x;const int HexBit = 4;
//const int Begrenzung = 65535;//Später:Deklaration am Anfang des Hauptprogrammes!!
int HexWert1 = 0,Hex=0,Zahl=0;
char HexErgebnis[HexBit];
char Hextemp;
char iHex = 0;
char jHex = 0;
char HexZ[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//Hier würd der Benutzer des Programmes informiert und befragt und muss Daten einfügen////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
cout<<"Willkommen bei Multiumwandler!!!"<<endl;
cout<<"\nSuchen sie sich ihr Zahlensystem aus!"<<endl;
cout << "\n(a)/ fuer Dezimalsystem\n(b)/ fuer Dualsystem\n(c)/ fuer;Hexadezimalsystem\n(d)/ fuer ASCII - Zeichen"<< endl;
cout<< "\nGeben sie bitte das umzuwandelnde Zahlensystem an:"<<endl;
cin>>Zahlensystem;
switch(Zahlensystem)
{
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 'a':
{//Umrechnung von Dezimal nach Dual
cout << "Bitte geben Sie eine Dezimalzahl ein: ";
cin >> x;
Zahl = x;if (HexWert1 <= Begrenzung)
{
for (iHex = 0; iHex < HexBit; iHex++)
{
Hextemp = x % 16; //Zahl modulo 2 = Rest "R" bzw. Ergebnis[i]Hex = Hextemp;
HexErgebnis[iHex]=HexZ[Hex];
x = (x - Hextemp) / 16;//Ermitteln des "Zahlenrestes"
}cout << "\n" << Zahl << " entspricht der Hexdezimalzahl: ";
for (iHex = 0; iHex < HexBit; iHex++) //i=0 da von 0-3 = 4 Stellen
{
if (iHex == 0)
{
jHex = 1;
}else
{
jHex = jHex++;if (jHex == 2)
{
cout << ". ";
jHex = 1; //"Punktzuweisung" mithilfe von JHex(jede 2. Stelle ein Punkt)
}
}cout << HexErgebnis[HexBit-1-iHex] << " ";//Ausgabe des Ergebnis in ablaufender Folge der einelnen "Array-Speicherbelegungen"3-0
}cout << endl;
}else
{
cout << "Die Eingegebene Dezimalzahl ist zu gross,\num sie in eine " << HexBit << "Zeichen Hexdezimalzahl umzuwandeln." << endl;}
//Umwandlung von Dezimal nach ASCII-Zeichen////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (x <=127)
{cout <<"\nDas ASCII-Zeichen Ihrer angegebenen Zahl ist:\t"<< static_cast<char> (x) << endl;
}
else
{cout<<"Den von Ihnen eingegebenen Zahlenwert geheort nicht mehr in den Wertebereich!!!\n";
}
getch ();break;
eWert = Wert1;
if (Wert1 <= Begrenzung)
{
for (i = 0; i < Bit; i++)
{
tempWert = Wert1 % 2; //Zahl modulo 2 = Rest "R" bzw. Ergebnis[i]Ergebnis; i = tempWert;
Wert1 = (Wert1 - tempWert) / 2;//Ermitteln des "Zahlenrestes"
}cout << "\n" << eWert << " entspricht der Dualzahl: ";
for (i = 0; i < Bit; i++) //i=0 da von 0-15 = 16 Stellen
{
if (i == 0)
{
j = 1;
}else
{
j = j++;if (j == 5)
{
cout << ". ";
j = 1; //"Punktzuweisung" mithilfe von J(jede 5. Stelle ein Punkt)
}
}cout << Ergebnis[Bit-1-i] << " ";//Ausgabe des Ergebnis in ablaufender Folge der einelnen "Array-Speicherbelegungen"15-0
}cout << endl;
}else
{
cout << "Die Eingegebene Dezimalzahl ist zu gross,\num sie in eine " << Bit << "Bit Dualzahl umzuwandeln." << endl;}
getch ();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 'b':
{cout<<"\nGeben Sie nun ihren gewuenschten Hexadezimalwert an:";
cin>>Wert;break;
}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 'c':
{cout<<"\nGeben Sie nun Ihren gewuenschten Dualwert an:";
cin>>Wert;break;}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 'd':
{
cout <<"\nGeben Sie nun Ihr gewuenschtes ASCII - Code Zeichen an:";
cin>>Wert;break;}
default:cout<<"Es ist im Programm einen Fehler aufgetreten \a\a !!!PROGRAMM-ABBRUCH!!!\n";
}
/cout<<"\n[Esc] Zum Programm beenden!" <<endl;
cout<<"\n[Enter] Um Vorgang zu Wiederholen" <<endl;/getch ();
return 0;
}
ok ich weiß das sieht sehr durcheinander aus aber es muss einfach endlich funktionieren. ich weiß nicht wie ich mehrere rechnungen zusammen machen kann das wenn ich ein wert eingebe und das drei ergebnise gleichzeitig raus kommen
-
Schön, daß du das selbe Programm nochmal hierhin geschrieben hast, jetzt kann es wirklich niemand mehr übersehen
Mit dieser Denkweise ("hier ist mein Programm, warum funktioniert es nicht?") verschreckst du hier wohl jeden, der nach dem oberen Beitrag noch bereit gewesen wäre, dir zu helfen. Ganz davon abgesehen solltest du eventuell über die bisherigen Antworten nachdenken.
-
....und Codetags verwenden .... -.-
-
Also ich erbarme mich mal, hier sind ein paar Fehler die ich entdeckt habe
#include <iostream.h> #include <iomanip.h> #include <conio.h> #include <stdlib.h> int main () //Einbinden der Hauptfunktion { //Deklaration und Initialisierung der Variablen und Konstanten/ // Du musst nicht schreiben dass du es machen, sondern warum!! char dec = 'a', dual = 'b', hex = 'c', ascii = 'd'; // Völlig unnötig, da du mit Switch() Abfragen arbeitest const char ASCII =0,Dezimalsystem = 0, Dualwert = 0, Hexadezimalsystem =0, ... // Genauso unnötig, für was brauchst du 10 Konstante Variablen, die mit 0 declariert werden?? char Wert, Zahlensystem; double Ergebnis = 0.0, // benutz lieber float, aber machs wie du willst int Dezimalwert= 0.0; // oO, einer Ganzzahl willst du einen Kommawert zuweisen, GANZ SCHLIMM, geht nicht const int Bit = 16; const int Begrenzung = 65535; // mach des lieber mit #define MAX 65535, mein Compiler sagt sie sei zu lang int Wert1 = 0; int eWert; //int Ergebnis[Bit]; int tempWert; int i; int j = 0; int x; const int HexBit = 4; int HexWert1 = 0,Hex=0,Zahl=0; char HexErgebnis[HexBit]; char Hextemp; char iHex = 0; char jHex = 0; char HexZ[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //Hier würd der Benutzer des Programmes informiert und befragt und muss Daten einfügen//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// cout<<"Willkommen bei Multiumwandler!!!"<<endl; cout<<"\nSuchen sie sich ihr Zahlensystem aus!"<<endl; cout << "\n(a)/ fuer Dezimalsystem\n(b)/ fuer Dualsystem\n(c)/ fuer;Hexadezimalsystem\n(d)/ fuer ASCII - Zeichen"<< endl; cout<< "\nGeben sie bitte das umzuwandelnde Zahlensystem an:"<<endl; cin>>Zahlensystem; switch(Zahlensystem) { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 'a': { //Umrechnung von Dezimal nach Dual cout << "Bitte geben Sie eine Dezimalzahl ein: "; cin >> x; Zahl = x; if (HexWert1 <= Begrenzung) // int HexWert1 = 0, so steht es oben, also ähäm, diese Abfrage is echt unnötig { for (iHex = 0; iHex < HexBit; iHex++) { Hextemp = x % 16; //Zahl modulo 2 = Rest "R" bzw. Ergebnis[i] //////// OHA SOO VIELE FEHLER, ich mach morgen weiter
-
würd würd mit i geschrieben
-
kind1995 schrieb:
würd würd mit i geschrieben
muhhhaaaahaaa