problem mit einer Programmzeile



  • Hi Leute,

    Ich brauche Hilfe,

    Das ist Teil meiner Methode:

    long range;
    freq->frequency =(int *)calloc(entries, sizeof(int));  
    freq->cum_frequency =(int *)calloc(entries, sizeof(int)); 
    
      range = (long) (ace->high - ace->low ) + 1;
    
    (1)ace->low = ace->low +
              (range * freq->cum_frequency[symbol])/freq->cum_frequency[0]-1;
    (2)ace->high = ace->low +
               ( range * freq->cum_frequency[symbol])/freq->cum_frequency[0];
    

    Bei komplieren geht alles OK, aber wenn Ich Debugger benutzte, kommt an der (1) und (2) Zeile folgende Meldung:

    Unbehandelte Ausnahme bei 0x004122bd in AC.exe.
    0xC0000094:Integer division bei zero.

    Ich teile aber nicht durch 0. Vieleich hängt es von Datentypen ab?

    Bitte hilft mir!!!!!!

    Viele Grüsse
    Lena



  • Kein Wunder - dein Array freq->cum_frequency ist nach dem calloc()-Aufruf mit 0 initialisiert, d.h. du rechnest low+=(range*0)/0-1 und high+=(range*0)/0.
    Eventuell solltest du zwischen den beiden calloc()-Aufrufen und Zeile (1) die arrays mit sinnvollen Werten füllen.



  • fanbjs schrieb:

    Ich teile aber nicht durch 0.

    😃 😃 😃



  • Vielen Dankfür deinen Antwort.

    Das hat mir sehr gehofen !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Anmelden zum Antworten