programm gibt komische zeichen als ausgabe
-
# include <iostream.h> void main () { char A[6]; char B[5]; int t=0; char C[11]; int counter=0; for (int i=0;i<6;i++) cin>>A[i]; for (i=0;i<5;i++) cin>>B[i]; for (i=0;i<5;i++) { for (int j=0;j<6;j++) { if (B[i]==A[j]) counter++;} if (counter==0) {C[t]=B[i]; t++; } } for (i=0;i<6;i++) cout << A[i]; for (i=0;i<t;i++) // wenn ich hier aber das = weggmache, wird diese schleife ignoriert cout <<C[i]; }
-
In Zeile 24 solltest du das Rücksetzen des counters außerhalb des if-Blocks ziehen, nicht komplett entfernen. In Zeile 28 solltest du aus dem <= ein < machen, nicht das = entfernen. Antworten bitte genau lesen.
-
tut mir leid. hab zu schnell gelesen
ist das jetzt so richtig?
# include <iostream.h> void main () { char A[6]; char B[5]; int t=0; char C[11]; int counter=0; for (int i=0;i<6;i++) cin>>A[i]; for (i=0;i<5;i++) cin>>B[i]; for (i=0;i<5;i++) { for (int j=0;j<6;j++) { if (B[i]==A[j]) counter++;} if (counter==0) {C[t]=B[i]; t++; } counter=0; } for (i=0;i<6;i++) cout << A[i]; for (i=0;i<t;i++) cout<<C[i]; }das problem ist aber immer noch da
-
Du hast da was nicht mit dem GÜLTIGKEITSBEREICH einer Variablen verstanden.
Es fehlt in jeder Schleife eine DEFINITION einer neuen Variablen, da die Variable in der ersten Schleife seinen Gültigkeitsbereich verlässt(dies ist die einzige Variable "i", die du DEFINIERST.
Abhilfe: Organisier deinen Code besser, indem du IMMER Klammern setzt und diese auch SINNVOLL setzt und deine EINRÜCKUNG immer gleich machst.
gruß
syntax
-
Es sieht auf den ersten Blick richtig (im Sinne deines Uraltcompilers) aus, ist bei deiner Einrückung schwer zu sehen. Funktioniert es denn?
-
Ich weiß nicht inwiefern du Gültigkeitsbereiche gelernt hast, aber sie sind durchaus wichtig für die Organisation eines Codes.
Beispiel:void foo() { int i=10; //lokale Variable { int i=20; //lokalere Variable std::cout<<i; //hier wird 20 ausgegeben }//hier verlässt das lokalere i den güligkeitsbereich std::cout<<i; //hier wird 10 ausgegeben }//ab hier existiert kein i mehr std::cout<<i; //Autsch!Dein Code:
for (int i=0;i<6;i++) // neue Schleifenvar. i cin>>A[i]; for (i=0;i<5;i++) // hier fehlt das int cin>>B[i];Vielleicht klarer warum Klammern wichtig für den Anfang sind?

gruß
syntax
-
vom Gültigkeitsbereiche habe ich noch nie was gehört und um ehrlich zu sein, habe ich es nicht so ganz verstanden.
mir ist dieses problem noch nie vorgekommen obwohl ich mal ein programm geschrieben habe, wo ich eine (5x5 matrix die summe jeder reihe und jeden block ausrechnen muss) da habe ich 3 for schleifen die nur int i und int j beinhalten.aber es hatte ohne probleme geklappt. werde es in meinem nächsten post zeigen.hab das jetzt so gemacht sieht zwar voll dumm aus aber es funktioniert endlich.
# include <iostream.h> void main () { char A[6]; char B[5]; int t=0; char C[11]; int counter=0; for (int i=0;i<6;i++) cin>>A[i]; for (int k=0;k<5;k++) cin>>B[k]; for (int h=0;h<5;h++) { for (int l=0;l<6;l++) { if (B[h]==A[l]) counter++;} if (counter==0) {C[t]=B[h]; t++; } counter=0; } for (int p=0;p<6;p++) cout << A[p]; for (int w=0;w<t;w++) cout<<C[w]; }vielen dank für eure hilfe
-
hier das 5x5 matrix das ich gerade erwähnt habe
( falss es jemanden interessiert ^^)# include <iostream.h> void main () { int A[5][5]; int sum=0; for (int i=0;i<5;i++) for (int j=0;j<5;j++) cin>> A[i][j]; for ( i=0;i<5;i++) // warum bekomme ich hier den fehler error C2374: 'i' : redefinition; multiple initialization { for (int j=0;j<5;j++) // aber hier nicht sum=sum+A[i][j]; cout<<sum; sum=0;} for (int j=0;j<5;j++) // genauso hier auch nicht { for (int i=0;i<5;i++) // in zeile 11 habe ich den fehler bekommen aber hier nicht. kann mir das jemand erklären? sum=sum+A[i][j]; cout<<sum; sum=0;} }
-
Ich behaupte mal: Compilerfehler. Ist, wie du hoffentlich gemerkt hast, nicht der einzige

Dein Matrizenprogramm ist übrigens ein Musterbeispiel für sinnentstellende Einrückung. Hast du keinen Editor der für dich automatisch einrückt? Ach nein! Du benutzt ja die Technik von vorvorvorgestern.
-
peter16 schrieb:
warum bekomme ich hier den fehler error C2374
Nach Zeile neun sind
iundjGeschichte, in Zeile elf willst Du aber trotzdem einibenutzen.Wenn hier Leute auf deiner Einrückung herumreiten ist das keine Pedanterie, sondern ein wirklich guter Rat.
Wenn Du deinen Code ordentlich einrückst (und auch auf deine Klammern achtest) dann springen einem solche Fehler geradezu ins Gesicht.
-
// Main.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include <iostream> using namespace std; int main(int argc, char* argv[]) { char A[6]; char B[5]; char C[5]; int counter=0; // doppelt in A & B ( wenn counter > 0) int t=0; int i, j; // Laufvariablen for (i=0;i<6;i++) cin >> A[i]; for (i=0;i<5;i++) cin >> B[i]; for (i=0;i<5;i++) { for (j=0;j<6;j++) { if (B[i]==A[j]) counter++; } if (counter==0) { C[t]=B[i]; t++; } counter=0; } for (i=0;i<6;i++) cout << A[i]; for (i=0;i<t;i++) cout << C[i]; cout << endl; }Du könntest noch in Zeile 27, nach counter ein break einfügen - da dich die Anzahl der Doppelten in B[] nicht wirklich interessiert.
Ansonsten sollte deine Version funktionieren, wenn du die Sichbarkeit der Variablen beachtest.
Gruss