Zufallszahlen aus dem Zahlenfeld werden nicht richtig verteilt.
-
Erledigt
-
z.bsp kann es daran liegen:
struct tGruppen *pTop = NULL;was willst du mit dem struct dort? Oo
und vll solltest du mal genau sagen, was der compiler dir sagt und was abstürzen bei dir heißt ^^
bb : )
eidt:
oder daran:void main(void)überhaupt: ich hab jz nur die ersten 5 beiträge oder so gelesen, aber du scheinst mehreres nicht berücksichtigt zu haben, was schon geschrieben wurde...
als weiteres bsp. der pointer auf die referenz (vll hast du das ja iwo begründet, warum das so sein muss, aber ich denks mal nicht ^^)
-
Also der Kompilert gibt garkeine Fehler aus. Mit VS 6.0 Lief es ohne Probleme. Jetzt läuft es bis zur Zeile 56. Und Bricht ab. Dann erscheint ein Fenster mit folgendem Fehler.
Run-Time Check Failure #2 - Stack around the variable 'zahl' was corrupted.und das struct
struct tGruppen *pTop = NULL;verwende ich weil der Compiler meckert das sonst pTop nicht richtig deklrariert ist.
Und das mit pointer vor der Referenz hat mir mal jm. bei nem anderen Prog so empfohlen, habe es jetzt mal ausprobiert es ändert sich nichts ob es da ist oder nicht.
Habe mal des eine Verbessert und oben rein editiert.
-
ChrisTucker schrieb:
#include <stdio.h> // nimm <cstdio> (wurde dir wohl erst 10 Mal gesagt...) const int anz=100; // Deklaration einer globalen konstanten Anzahl void zufallszahlen (tGruppen *&pTop) // Neue Funktion { const int anz=100; // wieso lokale Redeklaration? // konstanter integer genaue Gleitpunktzahl, z.B. 3.14 und 299793.0 --> eben nicht! Sondern konstante Ganzzahl (Integer) int zahl[anz]; for (int i=1; i<=anz; i++) { zahl[i] = rand()%1000; } }Du überschreitest die Arraygrenzen, weil du erst mit Index
1anfängst und dafür bisanzgehst. Bei einem Array mit der Dimensionnkann man die Elemente[0]bis[n-1]ansprechen.
-
Ist schon Krass was so ne kleinigkeit ausmacht jetzt läuft es wieder rund. Danke.
Eine Kleinigkeit muss ich aber noch Fragen bin mit dem VS garnicht vertraut.
Was bedeutetRun-Time Check Failure #2 - Stack around the variable 'zahl' was corrupted.Der Fehler sntsteht in Zeile 48.
Wenn ich ein weitere Projekt öffne steht da
Das Program C:\\Proggys?blabla.... konnte nicht geöffnet werden. Datei konnte nicht gefunden werden.Könnt ihr mir sagen was das bedeutet? Ich kann mit dem neuenm VS einfach noch nicht so gut umgehen.
-
wenn du den letzten fehler lösen konntest, kannst du diesen jetzt alleine lösen. ist exakt derselbe Fehler.
-
Ok Programm 1 geht wieder.
So nun wollte ich das Zweite Projekt aus dem Arbeitsbereich aufrufen, und siehe da jetzt geht des nicht mehr.Das Program C:\\Proggys?blabla.... konnte nicht geöffnet werden. Datei konnte nicht gefunden werden.
-
Lösch mal die Dateien, die der Compiler dir erstellt und dann neu kompilieren.
-
Erledigt
-
Könnte des mal vielleicht einer von euch in sein compiler werfen und mir sagen ob bei ihm die gleiche fehlermeldung kommt?
-
du musst alle dateien löschen die dein COMPILER dir erstellt. also alles ausser den c++ source dateien(und deiner projektdatei). manchmal verschluckt sich dein compiler an den dateien.
//ahh nicht 2 posts nebeneinander erstellen da tauschen sich die werben aus
-
Nein nicht mal dann geht es. Ich kann ein völlig neues Projekt öffnen anschliesend den Quelltext reinkopieren und es kommt immer noch die Fehlermeldung das eine Datei aus dem Debugordner nicht gefunden wurde. Wenn ich den Debugordner lösche passiert tdas geliche egal was ich mache. Falls wir aneinander vorbei reden. wäre es toll wenn einer von euch ein bischen genauer sein könnte.So war jetzt bis spät in der nacht noch wach, und habe den Fehler gefunden. Offenbar hat er mit den Funktionen Indexliste und Indexsuche ein Problem wenn ich aus denen ein Kommentar mache Mache kann ich wenigstens den Rest Verwenden kann mir vielleicht jemand sagen was ich falsch mache und mir Verbesserungen sagen für meinen Code um das wieder Lauffähig zu bekommen?
-
du hast irgendwie 2 listen und nutzt mal die eine, mal die andere - aber eigtl brauchst du doch so was, oder?
struct TOrt { unsigned int PLZ; //oder warum char[6] ? std::string Name; //oder solltest du char* nehmen? //wozu brauchst du hier noch next? TOrt (unsigned int _plz, const std::string &_name) : PLZ (_plz), Name (_name) {}; }; struct Treal_list { TOrt *entry; Treal_list *next; Treal_list (TOrt *_entry) : next (NULL), entry (_entry) {}; }; struct TList { private: Treal_list *first; Treal_list *last; public: Treal_list *GetFirst (void) const {return first;}; Treal_list *GetLast (void) const {return last;}; TList (void) : first (NULL), last (first) {}; };2. _WICHTIG_ (und hatte ich schon mal gesagt!)
int main () { /*bla*/ }3. sollte das nicht so heißen?
#include <string> //std::string"Deklaration der verschiedenen Funktionen"
warum nicht in das jeweilge struct? also so in etwa:
struct TList { //variablen siehe oben void einfuegen (const TOrt &entry); //hier brauchst du keinen pointer, weil NULL hier nicht möglich sein sollte?! }; //... void TList::einfuegen (const TOrt &entry) { last = new Treal_list (&entry); }while (1) { /*bla*/ }; //würde ich so machen: do { /* bla*/ } while (true);std::cout << "Bearbeitung wie folgt:\r\n" << "\t- Loeschen (d)\r\n" << "\t- fertige Liste ausgeben (c)\r\n" << "\t- Einfuegen (e)\r\n" << "\t- Suchen (s)\r\n" << "\t- Liste ausgeben (z)\r\n" << "\t- Liste sortiert" << << "" << std::endl; //TODO //falls das so nicht gehen sollte, dann nimm statt \r\n einfach immer std::endl - ist zwar "mehr zu tun", aber eh egal und ich denke, das machts übersichtlicher... char Verarbeitung = _getch(); // Zeichen von der Tastatur wird eingelesen std::cout << Verarbeitung << "\r\n" << std::endl;struct tOrtskennung *pElem = pTop;ist und bleibt falsch...
void index (tIndexListe *&referenz, tOrtskennung*pTop) { bool found = false; struct tOrtskennung *pElem = pTop;warum kopierst du den wert überhaupt und arbeitest nicht einfach mit dem?
struct tOrtskennung *pElem = new (tOrtskennung); //falsch... //--> TOrt *element = new TOrt;struct tOrtskennung *pElem = new (tOrtskennung); //printf("Zum Abruch einen Buchstaben bei den Postleitzahlen eingeben\n\n"); do{ pElem = new (tOrtskennung);merkst du was?
char delPlz[6] = ""; //ich würds so machen (falls ich char* nehmen würde): char delPlz[6]; delPlz[0] = 0;while (pElem->next != NULL) //ist zwar ok, aber ich würds so schreiben: while (pElem->next)strcpy (pNeu->Postleitzahl, "86890"); pNeu->Ortschaft = new char [8]; strcpy (pNeu->Ortschaft, "Itzehoe"); pNeu->next = pTop; pTop = pNeu; //schon hässlich, oder? hatte oben ja nen CTor hinzugefügt: TOrt *pNeu = new TOrt (86890, "Itzehoe");pElem->Ortschaft[100] = '\0'; //so viel platz hast du doch nie angefodert...will ja auch nich nur meckern, aber irgendwie hattest du anscheind nen eher-c-als-c++-buch?! ^^
solltest dir auch noch mal klassen / structs (is ja das gleiche) angucken - die funktionen sollten alle memberfunktionen werden!ich hoffe, du kommst damit bissl weiter - versuch es einfach dir anzunehmen und dann poste mal, was du dann hast...
bb
-
Erledigt
-
Na dann poste doch einfach ma den Code, so wie du ihn jetzt hast...
Oder geht jetzt alles perfekt?
-
unskilled schrieb:
Na dann poste doch einfach ma den Code, so wie du ihn jetzt hast...
Oder geht jetzt alles perfekt?jetzt geht es ohne prob danke