Hilfe wäre cool: speicher? programm wird nicht ausgeführt



  • Hallo,
    bin eher der C noob deswegen würde ich mich echt sehr über Hilfe freuen:
    habe das folgende Problem:
    ich möchte ein [n][m] array als struktur definieren und jeweils mit zufallszahlen füllen.
    klappt auch alles toll nur bricht windows ab einer bestimmten größe des arrays das programm ab.
    das versteht jetzt sicher niemand was ich will, vielleicht hilft der quellcode:
    Vielen Dank schonmal!
    gruß
    änz

    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    #include <stdio.h>
    //###########################################################################
    // Programm fuer Zufallszahlen: das is nichts problem:)
    double rand_normal(double mean, double stddev) {
    static double n2 = 0.0;
    static int n2_cached = 0;
    if (!n2_cached) {
    double x, y, r;
    do {
    x = 2.0rand()/RAND_MAX - 1;
    y = 2.0
    rand()/RAND_MAX - 1;

    r = x*x + y*y;
    } while (r == 0.0 || r > 1.0);

    {
    double d = sqrt(-2.0log(r)/r);
    double n1 = x
    d;
    n2 = y*d;

    double result = n1*stddev + mean;

    n2_cached = 1;
    return result;
    }
    } else {
    n2_cached = 0;
    return n2*stddev + mean;
    }
    }
    //###########################################################################
    //Hauptalgo
    int main(void)
    {
    int n=10; // n kann ich unendlich groß waehlen ohne probleme
    int m=3; //Sobald hier Werte größer als 3 eingetragen werden haengt das Prog

    typedef struct{
    int process;
    int capacity;
    int release;
    } job;
    job x[n][m];
    int sortiert;
    int i;
    int j,k;
    int o=0;
    int h;
    int s=0;
    int u;
    // fuellen mit Zufallszahlen
    srand(time(NULL));

    for(k=0; k<=n; k++) {
    for(j=0; j<=m; j++) {
    double val = rand_normal(20.0, 5.0);
    int i = (int)floor(val + 0.5);
    x[k][j].process=i;
    }
    }
    for(k=0; k<=n; k++) {
    for(j=0; j<=m; j++)
    {
    double val = rand_normal(10.0, 2.0);
    int i = (int)floor(val + 0.5);
    x[k][j].capacity=i;
    }
    }
    getchar();
    return 0;
    }



  • Hallo,
    ohne jetzt alles genau durchgesehen zu haben, du schreibst in deinen for Schleifen über Arraygrenzen hinaus:

    for(k=0; k<=n; k++) {
    for(j=0; j<=m; j++)

    Es muss also heißen
    for(k=0; k<n; k++) {
    for(j=0; j<m; j++)

    Benutze bitte CPP Tags (C/C++ Klickbutton), dann sieht das so aus:

    for(k=0; k<n; k++) { 
    for(j=0; j<m; j++)
    

    Gruß,
    B.B.



  • ey cool, daran scheints sogar zu liegen:)

    Danke!


Anmelden zum Antworten