Programm läuft nicht
-
Hi Leute,
wer kann mir sagen warum das Folgende Programm nicht läuft:
#include <iostream.h>
#include <iomanip.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <time.h>#define DIM (20)
void f_finden (char feld [][], int &i, int &k);
int main ()
{
char feld [DIM][DIM];
int i, k;srand (time(NULL));
for (i=0;i<DIM;i++) //Feld Füllen
{
for (k=0;k<DIM;k++)
feld [i][k] = rand()%26+int('A');
}
f_finden (feld, i, k); //Finden der Kombi
cout << feld [i][k] << feld [i][k+1] << feld [i][k+2];getch ();
return 0;
}void f_finden (char feld [][], int &i, int &k)
{
bool kombination_gefunden = false;i=0;
k=0;
do
{
do
{
if (feld [i][k] == 'F' && feld [i][k+1] == 'H' && feld [i][k+2] == 'W')
{
kombination_gefunden = true;
}
k++;
}
while (!kombination_gefunden || k<=DIM-2);
i++;
k= 0;
}
while(!kombination_gefunden || i<=DIM);
i -= 1;
k -= 1;return;
}Der Compiler (Borland) meldet immer: SIZE OT TYPE CHAR IS UNKNOWN OR ZERO bei der Funktionsvereinbahrung.
Sezte ich dann dei Konstante DIM in die eckigen Klammern ein (was ich lt. meinem Buch gar nicht muß), so bricht der Compiler beim IF(.....) in der Funktion mit der Windowsfehlermeldung ACCES VIOLATION IN ADRESS ... ab.
Gruß Eddie
-
Abgesehen davon das
- es das falsche Forum ist
- es #include <iostream> heissen muss (nicht #include <iostream.h>)
- man codetags verwenden könnte
- Die Fehlermeldung einen Bezug auf eine Quellcodezeile haben könntewird Dein Comiler folgendes Übersetzen:
void f_finden (char feld [][], int &i, int &k); int main () { char feld [(20)][(20)]; [...] while (!kombination_gefunden || k<=(20)-2); [...] while(!kombination_gefunden || i<=(20)); [...] }char feld [(20)][(20)];
Schaut nicht wirklich richtig aus.
Das was Du hinter dem DIM angibst wird exakt so für DIM eingesetzt.
Ein const int DIM = 20; wäre hilfreicher wenn es C++ ist.
-
Hat leider nix genutzt,
hab die Konstante geändert, bringt aber nix.Gruß Eddie
-
Dann zeig an welcher Stelle des Codes exakt welche Compilermeldung kommt (und benutz bitte Codetags)
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
void f_finden (char feld [][], int &i, int &k);hier kommt die Fehlermeldung :
SIZE OT TYPE CHAR IS UNKNOWN OR ZEROwenn ich jetzt DIM in die eckigen Klammern einsetze, sowohl dort als auch hier:
void f_finden (char feld [][], int &i, int &k)erscheint das Windowsfenster mit der Meldung:
ACCES VIOLATION IN ADRESS ...
und die Zeile:
if (feld [i][k] == 'F' && feld [i][k+1] == 'H' && feld [i][k+2] == 'W')ist blau markiert.
-
Achja,
übrigens schmiert wenn dieses Windowsfenster erscheint dabei der ganze Compiler ab in der Form, das ich das Projekt weder neu starten noch schließen kann. Auch der ganze Compiler lässt sich nicht mehr beenden.
Jedes mal erscheint das Fenster:DEBUG SESSION IN PROGRESS. CANCEL?
wenn ich dann OK drücke kommt die Meldung:
X UABLE TO TERMINATE
Die einzigen Möglichkeiten sind:
1. den Compiler per Taskmanager abwürgen
2. den Code ändern und dann lässt sich das Programm merkwürdigerweise zwar neu Compilieren aber immer noch nicht schließen.
-
Hab mittlerweile ein weiteres Programm geschrieben, dass das selbe Windowsfenster hervorruft, mit denselben merkwürdigen Symptomen:
#include <iostream.h> #include <iomanip.h> #include <stdio.h> #include <math.h> #include <conio.h> #include <string.h> #include <time.h> int main () { char passwoerter [9][20]; int i, k; srand(time(NULL)); for (i=0;i<20;i++) // Passwörter generieren for (k=0;k<8;k++) passwoerter [i][k] = rand()%26+int ('A'); for (i=0;i<20;i++) // Passwörter ausgeben { for (k=0;k<8;k++) cout <<passwoerter [i][k]; cout << endl; } getch (); return 0; }Diesmal ist folgende Zeile blau markiert:
passwoerter [i][k] = rand()%26+int ('A');
-
Schau Dir die Werte von i und k an wenn es knallt und schau mal ob die Werte mit der deklaration passen können.
-
UUUUPS - Zahlendreher.

Okay damit läuft das zweite Programm, aber was ist mit dem ersten?
-
void foo(char feld [][])...ist Blödsinn. Das ist soweit ich weiss nichtmal standard-C++.
Kinder, gewöhnt euch ab array-Syntax für Parameter zu verwenden.