कोड के विषय में दो सवाल नीचे तैनात हैं बनाना:
1) जब मैं codeblocks पर इस कोड को चलाने के लिए, कोड कभी कभी सफलतापूर्वक चलता (0 लौटने) लेकिन आम तौर पर में जो परिणाम इसके बाद एक त्रुटि सभी परिणामों को दिखाती है (वापसी -1073741819)। यह एक केस क्यों है?
2) मान सरणी के अंतिम तत्व को छोड़कर सभी सही हैं जहां मान 1 होना चाहिए (pTriangle [20] = 1)। हालांकि, मुझे अंत में कुछ कचरा संख्या मिल रही है, मैं गलत क्या कर रहा हूं?
मुझे एहसास हुआ है कि मैं द्विपक्षीय गुणांक के साथ उसी परिणाम पर पहुंच सकता हूं लेकिन मुझे अभी भी पता नहीं है कि मुझे त्रुटि क्यों मिल रही है और अगर मेरी गलती मिल सकती है तो यह सबसे अच्छा होगा।
अद्यतन 1:
pTriangle[i] = temp[i % 2 ? 0 : 1] + pTriangle[i];
समस्या प्रतीत होती है। जब मैंने इस कोड पर टिप्पणी की है, तो कार्यक्रम क्रैश नहीं हुआ था। मैं पता लगाने के लिए क्यों यह क्रैश हो रहा है और एक समाधान खोजने के लिए चारों ओर यह :)पास्कल त्रिभुज (अस्थिर कोड)
#include <stdio.h>
#include <stdlib.h>
#define LEVEL 20
int main()
{
int *pTriangle = (int*)malloc(sizeof(int)*(LEVEL+1));
int i;
for (i = 0; i < LEVEL; i++)
pTriangle[i] = 0;
createPascalTriangle(pTriangle, LEVEL);
for(i = 0; i < LEVEL+1; i++)
printf("pTriangle[%d]: %d\n", i, pTriangle[i]);
free(pTriangle);
return 0;
}
int createPascalTriangle(int *pTriangle, int level){
if (level <= 0)
return 0;
pTriangle[0] = 1;
pTriangle[1] = 1;
int i;
for (i = 2; i <= level; i++)
increasePascalTriangleOneLevel(pTriangle);
return 1;
}
int increasePascalTriangleOneLevel(int *pTriangle){
int i = 1;
int temp[2] = {0};
temp[0] = pTriangle[0];
while (pTriangle[i] != 0){
temp[i % 2] = pTriangle[i];
pTriangle[i] = temp[i % 2 ? 0 : 1] + pTriangle[i];
i++;
}
pTriangle[i] = 1;
return 1;
}
वाह। यह इंडेंट है! –
आह। धन्यवाद :) – kpark