اطلاعیه

Collapse
No announcement yet.

برگرداندن آرایه اعداد از تابع فرعی به main

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    برگرداندن آرایه اعداد از تابع فرعی به main

    دوستان من چجوری میتونم اعدادی که به صورت آرایه در تابع ذخیره کردم رو return کنم به تابع main و بریزم در داخل متغییری که تو تابع main تعریف شده؟
    کد:
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    int adadAval (int);
    // tabe main
    //////
    int main()
    {
    	int aval[200];
    	aval[200] = adadAval();
    	system ("pause");
    }
    int adadAval ()
    {
    	
    .
    .
    .
    	return zakhire[200];
    }

    الان من مثلا چجوری باید متغییر zakhire[200] l رو ببرم بریزم داخل متغییر aval[200] l ؟
    به این سبکی که نوشتم خطا میده.

    ممنون.
    به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
    (پیش به سوی هدف)

    #2
    پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

    این طوری نمیشه. باید یکی از ورودی های تابع رو یک پوینتر تعریف کنی که مقادیر نهایی رو در اون بریزه.
    پوینترها چون آدرس هستند دچار تحول نمیشن.مثلا کد زیر:
    کد:
    int aval[100];
    void adadAval (int *p);
    int main()
    {
    	 adadAval(aval);
    	system ("pause");
    }
    void adadAval (aval)
    {
    	
    .
    .
    .	aval=zakhire
    	return;
    }
    توی این کد aval با این که ارایه است اما c به چشم پوینتر بهش نگاه میکنه. شما این رو میدی به تابع و تابع خروجی در این پوینتر ذخیره میکنه و نیازی هم نیست چیزی برگشت داده بشه
    ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

    امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

      کد:
      void Calculate_PrimeNumbers(unsigned char * Returned_Array)
      {
      unsigned char Temp_AdadAval[100];
      .............................................................
      .............................................................
      ... Calculate Prime Numbers And Filling On Temp_AdadAval ....
      .............................................................
      .............................................................
      ........ Fill Returned_Array By Temp_AdadAval ...............
      .........For Example You Can Do With For Sequese ............
      .............................................................
      }
      //==============================================================================================
      void main(void)
      {
       unsigned int Prime_Number[100];
       Calculate_PrimeNumber(Prime_Number);  // Now Fill Prime_Number Array By Prime Numbers.
      }
      //==============================================================================================

      دیدگاه


        #4
        پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

        راستش همینکارارو کردم،ولی نشد
        ز دیشب تا الان درگیر این شدم که متغییر های آرایه از تابع رو بفرستم به تابع اصلی ، میخام a[50] l رو که در تابع مقادیر آرایه هاش رو عوض کردیم و بفرستم داخل b[50] l . چطور میتونم این کار رو انجام بدم؟ ممنون از راهنماییتون.
        کد:
        #include "stdafx.h"
        #include <iostream>
        using namespace std;
        int vorodi ( );
        ///
        int main()
        {
          int b[50];
          b[50] = vorodi ();
          cout <<"<><<><"<< b;
          system("pause");
        }
        ///////
        int vorodi ( )
        {
          int a[50];
          for (int i=0 ; i<50 ; i++)
          {
            a[i] = 22;
          }
          return a;
        }
        به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
        (پیش به سوی هدف)

        دیدگاه


          #5
          پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

          این برنامه خانه های a رو با مقادیر 0 تا 49 پر میکنه. بعدش همش رو میریزه توی b و بعدش b رو نمایش میده.
          کد:
          #include <iostream>
          
          void vorodi (int * );
           
          void main()
          {
            int b[50],i;
            vorodi (b);
          	for (i=0;i<50;i++){
            cout <<"<><<><"<< b[i]<<"\n";
          	}	
           while(1);
           
          }
          
          void vorodi (int *b )
          {	char i;
            int a[50];
            for ( i=0 ; i<50 ; i++)
            {
              a[i] = i;
            }
          	for (i=0;i<50;i++) {
          		b[i]=a[i];
          	}
            return ;
          }
          ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

          امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

          دیدگاه


            #6
            پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

            ممنون علیرضا.

            حالا سوال پیش اومد و اون اینکه ، چرا شما تو این کد
            کد:
            b[i]=a[i];
            قبل از b[i] l ستاره نزاشتید؟مگه b یه اشاره گر نیست؟

            ولی ما تو این کد باید حتما پشت saat o daqiqe ستاره بزاریم.
            کد:
            #include "stdafx.h"
            #include <iostream>
            void tabdil (int a , int b);
            void vorodi (int *saat , int *daqiqe);
            using namespace std;
            int main()
            {
            	int saat , daqiqe;
            	vorodi(&saat , &daqiqe );
            	cin.get();	
            	cin.get();
            }
            void vorodi (int *saat , int *daqiqe)
            {
            	int saat2 , daqiqe2;
            	cout << "saat o daqiqe ro dar qalebe 24 vared kon : ";
            	cin >> saat2 >> daqiqe2;
            	*saat = saat2;
            	*daqiqe = daqiqe2;
            }
            منظورم این کد هاست که مثل b[i] l عمل میکنه.
            کد:
            *saat = saat2;
            *daqiqe = daqiqe2;
            ممنون
            به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
            (پیش به سوی هدف)

            دیدگاه


              #7
              پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

              سوالت رو درست متوجه نشدم.
              اما این رو بگم آرایه ها هم یک مدل اشاره گر هستند که فقط براساس تعداد خانه هایی که دارند دارای بازه آدرسی مشخصی هستند. یک پوینتر فقط یک آدرس بهش تعلق میگیره اما آرایه بیشتر
              وقتی هم ورودی تابعی به عنوان اشاره گر معرفی بشه شما میتونید از آرایه ها استفاده کنید و نیازی نیست قبلش * ستاره بذارید. چون خود آرایه اشاره گر هست.یعنی []b با b* تفاوتی نداره.
              ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

              امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

              دیدگاه


                #8
                پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

                ولی من فکر میکنم که خود b یه آدرس هست،
                ولی آرایه های b مثل b[1] va b[2] va ... l هرکدوم به طور مجزا یه آرایه ، با یه مقداری هستند.
                با اجرای این کد میبینید که b یه آدرس و بقیه داخل خودشون مقدار دارند.
                اینطور نیست؟
                کد:
                #include "stdafx.h"
                #include <iostream>
                using namespace std;
                int main()
                {
                	int b[5];
                	for (int i=0 ; i<5 ; i++)
                		cout << b[i] << "   " << b;
                	system("pause");
                }
                به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                (پیش به سوی هدف)

                دیدگاه


                  #9
                  پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

                  خب همین دیگه. اصلا اشاره گرچیه؟؟؟ مثلا int *b ، یک متغیر رو تعریف میکنه که آدرسش توی b ریخته میشه. وقتی هم b نمایش داده بشه آدرس رو میده. آرایه هم اینطوریه.یعنی []b خودش آدرس اولین خونه رو داره و به هرخونه ای که اشاره بشه میره سراغ محتواش.کامپایلر هم طوری آرایه رو ترجمه میکنه که در بازه ی آدرسی آرایه متغیری تعریف نشه و تداخل آدرس پیش نیاد
                  ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

                  امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

                  دیدگاه


                    #10
                    پاسخ : برگرداندن آرایه اعداد از تابع فرعی به main

                    نوشته اصلی توسط hosseinam1370
                    مگه b یه اشاره گر نیست؟
                    نام آرایه، اشاره گر به اولین عضو آرایه است و عبارت

                    کد:
                    a[i]


                    با عبارت زیر معادل است:

                    کد:
                    *(a+i)
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه

                    لطفا صبر کنید...
                    X