2012-12-01 30 views
11

प्रोग्राम: इसलिए मैंने एक प्रोग्राम बनाया है जो दो नंबर लेता है, एन और एल एन 2 डी सरणी का आकार है और एल 3 - 16 से एक नंबर है। प्रोग्राम सरणी बनाता है और शुरू होता है केंद्र में और काउंटर घड़ी के सर्पिल में अपना रास्ता काम करता है। मैं केंद्र का मूल्य है और जैसे ही आप सरणी (सर्पिल में) के माध्यम से जाते हैं, वैसे ही मूल्य बढ़ जाएगा। यह प्रमुख है, यह संख्या होगी उस स्थान को असाइन किया गया और यदि नहीं यह * बजाय अपनी जगह ले जाएगाफ़्लोटिंग पॉइंट अपवाद (कोर डंप

त्रुटि:। मैं एक "चल बिन्दु अपवाद" त्रुटि मिल रही है, मैं यह कैसे हल होगा

कोड:?

void Array_Loop(int *Array, int n, int L) ; 

int Is_Prime(int Number) ; 

int main(int argc, char *argv[]){ 

    int **Array ; 
    int n, L ; 

    n = atoi(argv[1]) ; 
    L = atoi(argv[2]) ; 

    Matrix_Build(&Array, n, n) ; 
    Array_Loop(Array, n, L) ; 


    return 0 ; 

} 

void Array_Loop(int *Array, int n, int L){ 

    int i, j, k, h ; 
    int lctn, move; 

    lctn = n/2 + 1 ; 
    i = lctn ; 
    j = lctn ; 
    move = 1 

    while(i != 0 && j != n){ 

    for(j = lctn ; j < lctn + move ; j++){ 

     if(L % 2 == 2) Array[i][j] = -1 ; 
     else Array[i][j] = Is_Prime(L) ; 
     L++ ; 
    } 

    move = move * -1 ; 

    for(i = i ; i > lctn - move ; i--){ 

     if(L % 2 == 2) Array[i][j] = -1 ; 
     else Array[i][j] = Is_Prime(L) ; 
     L++ ; 
    } 

    move-- ; 

    for(j = j ; j > lctn - move ; j--){ 

     if(L % 2 == 2) Array[i][j] = -1 ; 
     else Array[i][j] = Is_Prime(L) ; 
     L++ ; 
    } 

    move = move * -1 ; 

    for(i = i ; i < lctn - move ; i--){ 

     if(L % 2 == 2) Array[i][j] = -1 ; 
     else Array[i][j] = Is_Prime(L) ; 
     L++ ; 
    } 

    move++ ; 

    } 

} 


int Is_Prime(int Number){ 

    int i ; 

    for(i = 0 ; i < Number/2 ; i++){ 

    if(Number % i != 0) return -1 ; 

    } 

    return Number ; 

} 
+8

आप विभाजित कर रहे हैं/शून्य से modding। – Mysticial

+1

'संख्या% i' ... 'i = 0' पहले पुनरावृत्ति पर। – Mysticial

+0

साथ ही, जब 'move <0', 'lctn - move> lctn'। अपने संकेत देखें। –

उत्तर

22

आप चल बिन्दु अपवाद हो रही है क्योंकि संख्या% i, जब मैं है 0:

int Is_Prime(int Number){ 

    int i ; 

    for(i = 0 ; i < Number/2 ; i++){ 

    if(Number % i != 0) return -1 ; 

    } 

    return Number ; 

} 

बस पाश i = 2 पर शुरू के बाद से मैं = 1 संख्या% में मैं यह हमेशा बराबर होना शून्य तक, क्योंकि संख्या एक int है।

बीटीडब्ल्यू: रहस्यवादी ने टिप्पणियों पर पहले बताया।

+1

मेरा दिन बचाया धन्यवाद – kapil

+0

खुशी है कि यह मदद करें ... – dreamcrash

6

फ़्लोटिंग प्वाइंट अपवाद एक अप्रत्याशित अनंतता या NaN के कारण होता है। आप जीडीबी का उपयोग करके ट्रैक कर सकते हैं, जो आपको यह देखने की अनुमति देता है कि आपके सी प्रोग्राम के अंदर क्या चल रहा है। अधिक जानकारी के लिए: https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_gdb.php

संक्षेप में, इन आदेशों उपयोगी हो सकता है ...

gcc -g myprog.c

gdb a.out

gdb core a.out

ddd a.out

संबंधित मुद्दे