नमस्ते, मैं इसके लिए मूल्यों को मुद्रित करने की तुलना में एक विधि की एक सरणी को पारित करना चाहता हूं, लेकिन जब मैं कोशिश करता हूं कि यह केवल शून्य को प्रिंट करे, तो ध्यान दें कि मुख्य कार्य अच्छी तरह से समस्या अधिकतम विधि में है:

#include <stdio.h>
#include <stdlib.h>

struct rectangle {
    float length;
    float width;
};

void max (struct rectangle * a, int size){
  printf("the test %d \n", (*a).width);
  int i;
  for(i=0; i<size; i++){
    printf("the test %d \n", a[i].width);
  }
}    


void main()
{
   printf("enter the size of both arrays \n");
   int x ;
   scanf("%d",&x);

   struct rectangle* r ;
   r =  malloc(x*sizeof(struct rectangle));
   int j ;
   for (j = 0 ; j < x ; j++){
     printf("enter rectangle length \n");
     scanf("%f",&r[j].length);
     printf("enter rectangle width \n");
     scanf("%f",&r[j].width);
   }

   for (j = 0 ; j < x ; j++){
     printf("  %f\n",r[j].length);
     printf("  %f\n",r[j].width);
   }
   max(r,x)

}

लेकिन जब मैं इसे चलाने की कोशिश करता हूँ तो यह दुर्घटनाग्रस्त हो जाता है।

0
camelboy 2 पद 2015, 06:57

2 जवाब

सबसे बढ़िया उत्तर

वर्तमान में आप एक पॉइंटर से स्ट्रक्चर के लिए पॉइंटर पास कर रहे हैं, लेकिन आपके फ़ंक्शन max में, आप इसे स्ट्रक्चर पॉइंटर के रूप में एक्सेस करने का प्रयास कर रहे हैं।

max(&r,x) के बजाय max(r,x) का उपयोग करें।

संपादित करें:

इसके अलावा, max फ़ंक्शन में:

printf("the test %f \n", a[i].width); // use %f instead of %d

या यदि आप वास्तव में %d के रूप में प्रिंट करना चाहते हैं, तो निम्नलिखित तरीके का उपयोग करें:

printf("the test %d \n", (int)a[i].width); // use %d, and typecast float to int
1
Keshava GN 2 पद 2015, 06:09

max के अंदर आप %d प्रारूप विनिर्देशक के साथ float मान मुद्रित करने का प्रयास कर रहे हैं। यह ठीक से काम नहीं करेगा। printf float मानों के लिए प्रारूपित निर्दिष्ट है %f, float नहीं।

main के अंदर आपने %f का सही उपयोग किया है। आपने अचानक max %d पर स्विच क्यों किया?

0
AnT 2 पद 2015, 06:18