اطلاعیه

Collapse
No announcement yet.

c++ گروهی

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

    #91
    پاسخ : c++ گروهی

    نوشته اصلی توسط negin-bahadori
    سلام. کسیآ‌ میدونه چطوری میآ‌شه scale کرد با c++؟

    فرض کنید من یه vector دارم که اعدادش بین 200 تا 5000 هست..حالا میآ‌خوام اونا رو scale کنم به اعداد بین 0 تا 1 ... کسیآ‌ میآ‌دونه چطوری میآ‌شه این کار رو انجام داد؟
    سلام

    با c++ میشه دنیا را فتح کرد این کارا که سهله

    فرمول زیر را در برنامه تون به کار ببرید:
    کد:
    output=(input-200)/4800
    input همون ورودیه ( بین 200 تا 5000 )
    output همون خروجیه ( بین 0 تا 1)
    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

    دیدگاه


      #92
      پاسخ : c++ گروهی

      اگه ورودی pointer to float باشه چطوری باید بنویسمش؟

      دیدگاه


        #93
        پاسخ : c++ گروهی

        نوشته اصلی توسط negin-bahadori
        اگه ورودی pointer to float باشه چطوری باید بنویسمش؟
        یک * قبلش بزارید
        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

        دیدگاه


          #94
          پاسخ : c++ گروهی

          ببخشید من بازم مزاحم میشم...
          یه ماتریس دارم به اسم1. پوینتر p1 داره بهش اشاره میآ‌کنه

          یه ماتریس دارم به اسم 2. پوینتر p2 داره بهش اشاره میآ‌کنه

          میآ‌خوام با p1 توی ماتریس 1 دنبال یه عدد خاص بگردم و هروقت پیداش کردم برم با پوینتر p2 ماتریس 2 رو چک کنم و مقدار متناظر باهاشو پیدا کنم(با همون مقداری که توی ماتریس 1 به دست آوردم) و بعد مقدار به دست اومده در ماتریس 2 رو توی آدرس متناظرش در ماتریس3 ذخیره کنم!!!

          دیدگاه


            #95
            پاسخ : c++ گروهی

            نوشته اصلی توسط negin-bahadori
            ببخشید من بازم مزاحم میشم...
            یه ماتریس دارم به اسم1. پوینتر p1 داره بهش اشاره میآ‌کنه

            یه ماتریس دارم به اسم 2. پوینتر p2 داره بهش اشاره میآ‌کنه

            میآ‌خوام با p1 توی ماتریس 1 دنبال یه عدد خاص بگردم و هروقت پیداش کردم برم با پوینتر p2 ماتریس 2 رو چک کنم و مقدار متناظر باهاشو پیدا کنم(با همون مقداری که توی ماتریس 1 به دست آوردم) و بعد مقدار به دست اومده در ماتریس 2 رو توی آدرس متناظرش در ماتریس3 ذخیره کنم!!!
            کد زیر را تو notepad نوشتم و کامپایل نکردم . خودتون امتحان کنید :
            کد:
            #define LINES  100
            #define COLUMNS 150
            
            void f(const int x,const int m1[LINES][COLUMNS],const int m2[LINES][COLUMNS], int m3[LINES][COLUMNS])
            {
            	int i,j;
            	for(i=0;i<LINES;i++)
            		for(j=0;j<COLUMNS;j++)
            			if(m1[i][j]==x) break;	
            	m3[i][j]=m2[i][j];
            }
            اول اندازه ی ماتریس رو با دیفاینها مشخص کنید ، ( مثلا من اینجا 100 در 150 گرفتم)
            بعدم به تابع f به عنوان پارامتر ها اون عدد و سه تا اشاره گر به ماتریس ها را بدید و خلاص.
            اگه نگاه کنید سه تا پارامتر اولی را const تعریف کردم چون تغییری نمیکنند ( فقط خونده ( read ) میشند ) ولی پارامتر آخر که همون ماتریس سومیه هست را معمولی تعریف کردم چون توش نوشته میشه( write )
            ولی الان نگاه کردم: اگه مقدار عددی داده شده تو ماتریس اول نباشه ، باگ میشه. که راحت میشه با یه if برطرفش کرد.
            راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
            کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
            نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
            انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

            دیدگاه


              #96
              پاسخ : c++ گروهی

              ببخشید یه سوال دیگه :

              چطوری coordinate یه value توی 1D array رو توی یه 2D array پیدا کنم؟ (در صورتیآ‌ که بدونم آرایهٔ 2 بعدیم مثلا 3*3 است )

              دیدگاه


                #97
                پاسخ : c++ گروهی

                نوشته اصلی توسط negin-bahadori
                ببخشید یه سوال دیگه :

                چطوری coordinate یه value توی 1D array رو توی یه 2D array پیدا کنم؟ (در صورتیآ‌ که بدونم آرایهٔ 2 بعدیم مثلا 3*3 است )
                خواهش میکنم

                شما فکر کنم خیلی به ماتریس ها علاقه مندید! (جالبه کل سوالاتون بیشتر شبیه سوالات دانشگاهیه )

                ببنید شما الان یک آرایه یک بعدی دارید و میخواید یک مقدار توش را پیدا کنید و مختصاتش تو یک آرایه دو بعدی مورد نظرتون را در بیارید.

                مرحله اول : پیدا کردن اون مقدار در آرایه ی یک بعدی که خیلی راحته و فکر نکنم مشکلی داشته باشید.
                مرحله دوم:
                اولین نکته: نیاز نیست شما تعداد سطرها را بدونید و بدید یعنی مثلا اگه میگفتید آرایه دو بعدی من تعداد ستون هاش 3 تاست حل بود و سطر ها مهم نیست!! بنظرتون چرا اینطوره؟؟ در ادامه خودتون متوجه میشید:

                به عنوان مثال مقدار ما در آرایه یک بعدی در خانه ی با اندیس 5 موجود است( توجه کنید که اندیس ها از صفر شروع میشوند)

                حالا فقط کافیه شما تعداد ستون های ماتریس دوبعدیتون را بدونید که اینجا مثلا همون 3 باشه .
                حالا با دو حرکت میتونید بفهید تو چه سطر و ستونی قرار میگیره :
                1- پیدا کردن سطر با تقسیم صحیح 5 تقسیم بر 3 :
                جواب میشه 1 : پس درسطر 1 قرار میگیره ( یعنی سطر دومی( از 0 شماره ها را بگیرید پس یعنی اولین سطر نه دومی ))

                2- پیدا کردن ستون با مد گرفتن(باقیمانده گرفتن) : 3% 5
                جواب میشه 2 : پس در ستون 2 ( آخر ) قرار میگیره

                حالا بزارید یک مثال بهتر شکلی بگم:
                مثلا مقدار مورد نظر ما x باشد ( مقادیر دیگه که اینجا برامون بی اهمیت هستند را با - نشان میدهم(dont care ) )
                - - - - x - - - - - - - - -
                توجه کنید از چپ به راست با شروع ازاندیس 0 بشمارید:
                میشه اندیس : 9
                خوب حالا مثلا ماتریسمون را 5سطر در 4ستون فرض کنید:
                یعنی به شکل زیر:
                - - - -
                - - - -
                - - - -
                - - - -
                - - - -

                حالا بدون اهمیت دادن به تعداد سطر ها فقط تعداد ستون ها را مورد نظر قرار دهید: یعنی 4
                حالا برای پیدا کردن مختصات:
                سطر: 9 تقسیم بر 4 که میشه 2 پس در سطر 2 قرار میگیره ( یعنی سطر سوم)
                ستون: باقیمانده 9 بر 4 یعنی همون 9 مد 4 : میشه 1 پس در ستون 1 قرار میگیره ( یعنی ستون دوم)

                پس شکلش میشه :
                - - - -
                - - - -
                - - x -
                - - - -
                - - - -


                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                دیدگاه


                  #98
                  پاسخ : c++ گروهی

                  سلام به همه....

                  **Array **

                  ارایه 1 بعدی :

                  چیزهایی که باید در مورد 1d Array بدونیم :

                  ---اول باید بتونیم یه array رو تعریف کنیم و بهش مقدار بدیم!
                  کد:
                  int array[9]={6,5,3,7,2,8,1,0,1};
                  ---دومین کار شاید این باشه که بتونیم توی خروجی مقادیرش و چاپ کنیم !
                  کد:
                  for(int i=0; i<9 ; i++){
                   cout << array << endl;
                  	}
                  ---اگه بخوایم تمام خونه‌های ارایه رو با صفر مقدار دهی‌ کنیم کافیه که بنویسیم:
                  کد:
                  int array[9]={};
                  ---و اگه اینطوری بنویسیم...
                  کد:
                  int array[9]={6,5};
                  یعنی‌ اینکه فقط اندیس‌های 0 و 1 رو مقدار دهی‌ کردیم، بقیه با صفر مقدار دهی اولیه خواهند شد!


                  -- از اونجایی‌ که آرایه خودش مثل پوینتر عمل می‌کنه خوب که بدونیم اگه فقط اسم ارایه رو توی خروجی چاپ کنیم مثل این می‌مونه که یه پوینتر رو داریم به اولین عضو ارایه اشاره میدیم...در این حالت چیزی که توی خروجی چاپ می‌شه آدرس اولین عضو ارایه در حافظه است!
                  کد:
                  cout << array << endl;
                  --برای چاپ کردن مقدار یه اندیس خاص(مثلا اندیس 5) کافیه بنویسیم:
                  کد:
                  cout << array[5] << endl;

                  ---می‌خوایم با هم بریم بگردیم توی ارایه مون و اندیس مقدار 0 رو پیدا کنیم:
                  کد:
                  for(int i=0; i<9 ; i++){
                    if(array[i]==0){
                  	cout << i << endl;
                  	  }
                  	}
                  ---اگه بخوایم سایز ارایه رو به دست بیاریم:
                  کد:
                  cout << sizeof(array)/sizeof(array[0]) << endl;
                  دیگه چیزی به ذهنم نمیرسه در مورد آرایهٔ 1 بعدی! کسی‌ نظری داره؟ چیزی هست که بتونیم به اینا اضافه کنیم؟ اگه نه که بریم سراغ آرایهٔ 2 بعدی..[/code]

                  دیدگاه


                    #99
                    پاسخ : c++ گروهی

                    RubeuS:
                    یه دنیا ممنون از وقتیآ‌ که گذاشتید...


                    کد:
                    int array[]={6,5,3,7,2,8,1,0,1};
                    	int row,column;
                    	for(int i=0; i<9 ; i++){
                    	  if(array[i]==0){
                    		cout << i << endl;
                    		row=i/3;    //if row*column=3*3
                    		column=i%3;
                    		cout << row << column << endl;
                    
                    	  }
                    	}

                    دیدگاه


                      پاسخ : c++ گروهی

                      اتفاقی اومدم و دیدم بحث آرایه هاست گفتم چند تا نکته هم بگم...
                      توی c++ 11 یه جور دیگه هم میشه تعریف آرایه رو انجام داد:
                      کد:
                      array<int,0> first;

                      نحوه تعریف کردنش شبیه به لیست و وکتور شده و همون طور که از مثال بالا معلومه عنصر اول جنس آرایه رو تعریف میکنه و عنصر دوم اندازه ی آرایه رو. این جور تعریف کردن باعث میشه که بشه از یه سری توابعی مثل :
                      کد:
                      Iterators
                      
                      begin
                        Return iterator to beginning (public member function )
                      
                      end
                        Return iterator to end (public member function )
                      
                      rbegin
                        Return reverse iterator to reverse beginning (public member function )
                      
                      rend
                        Return reverse iterator to reverse end (public member function )
                      
                      cbegin
                        Return const_iterator to beginning (public member function )
                      
                      cend
                        Return const_iterator to end (public member function )
                      
                      crbegin
                        Return const_reverse_iterator to reverse beginning (public member function )
                      
                      crend
                        Return const_reverse_iterator to reverse end (public member function )
                      
                      
                      Capacity
                      
                      size
                        Return size (public member function )
                      
                      max_size
                        Return maximum size (public member function )
                      
                      empty
                        Test whether array is empty (public member function )
                      
                      
                      Element access
                      
                      operator[]
                        Access element (public member function )
                      
                      at
                        Access element (public member function )
                      
                      front
                        Access first element (public member function )
                      
                      back
                        Access last element (public member function )
                      
                      data
                        Get pointer to data (public member function )
                      
                      
                      Modifiers
                      
                      fill
                        Fill array with value (public member function )
                      
                      swap
                        Swap content (public member function )

                      اگر توضیح این توابع رو بخونید میبینید که خیلی کار با آرایه رو راحت میکنه و قابلیت انعطاف پذیری رو میده.بر خلاف container های داینامیک جاش بر روی حافظه ثابت هست و حافظه ی اضافی اشغال نمیکنه. یعنی اگر آرایه 12 بایت باشه روی حافظه همون 12 بایت اشغال میشه.
                      این کلاس مثل بقیه container ها تو فضای std هست و بعد از include کردن using کردن رو فراموش نکنید.
                      نکته دیگه اینکه اگر کامپایلر شما از c++ 11 پشتیبانی نمیکنه امکان تعریف به این شکل رو ندارید. این استاندارد تازه سال 2011 ارایه شد و واسه همین کامپایلر های قبل از این سال از همون c++ قدیمی (98 ) استفاده میکنند.
                      [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                      دیدگاه


                        پاسخ : c++ گروهی

                        سلام...من یه سوال دارم:


                        اگه توی ورودیهای یه فانکشن نوشته شده باشه مثلا float **ampMap متناظر با اون موقع call کردنِ فانکشن نوشته شده باشه &setMap

                        یعنیآ‌ چیآ‌?


                        کد:
                        *ampMap = new flot [width*height]; 
                        memset(*ampMap, 0, sizeof(float)*width*height);



                        اضافه شده در تاریخ :
                        جواب سوال دومم:

                        بله میآ‌شه :biggrin:

                        اینطوری اول declare ش میآ‌کنیم ..
                        کد:
                        std::vector< std::pair< std::vector<int>, std::vector<int> > > Ind;
                        و بعد ...

                        کد:
                        Ind.push_back(std::make_pair(row,col));

                        اضافه شده در تاریخ :
                        پس کوو سوالم؟!!! ... :surprised:

                        اضافه شده در تاریخ :
                        کسیآ‌ اینجا هست هنوز؟



                        میاید با هم پایتون (Python) و شروع کنیم؟ 1 ماه فشرده...اگه کسیآ‌ هست یه خبر بدید همینآ‌جا



                        ممنون

                        دیدگاه


                          پاسخ : c++ گروهی

                          پایتون که دیگه این حرفارو نداره.
                          شما از اینجا شروع کنید http://www.tutorialspoint.com/python/index.htm ، کمتر از 1 روز راه میوفتید. :agree:
                          زبون فوق العاده ساده ایه، از بیسیک هم آسون تره
                          ;()((void (*)(void))0x0000))

                          دیدگاه


                            پاسخ : c++ گروهی

                            من خیلی وقته نیومدم اینجا ولی فکر نمیکنم تو این مدت تونسته باشید C رو تموم کنید.
                            به نظرم C و C++ رو کامل یاد بگیرید بعد برید دنبال زبونهای دیگه.

                            دیدگاه


                              پاسخ : c++ گروهی

                              حق با شماست..اما خیلیآ‌ وقت بود که کسیآ‌ اینجا چیزی نگفته بود گفتم یه motivation بدم ...

                              من در مورد array چیزاییآ‌ که میدونستم و گفتم شما میتونید pointer و توی array توضیح بدید؟

                              اضافه شده در تاریخ :
                              ... میآ‌شه لطفا جواب سوالهای من و اگه میدونید بدید...


                              اگه یه آرای تعریف کرده باشم مثل این:

                              کد:
                              int distances[3][6]={{1,0,0,0,1,0},{1,1,0,0,1,1},{1,0,0,0,0,0}};

                              distances ----- آدرس اولین عضو آرایه
                              *distances------آدرس اولین عضو آرایه

                              distances+1 --------آدرس دومین عضو آرایه


                              حالا distances+1* آدرس کدوم عضو آرایه رو میده؟


                              اضافه شده در تاریخ :
                              یعنیآ‌ هیچکس اینجا نیست که pointer و توضیح بده؟ :NO:

                              دیدگاه


                                پاسخ : c++ گروهی

                                حالا distances+1* آدرس کدوم عضو آرایه رو میده؟
                                اصلا آدرسی برنمیگردونه! مقدار اولین خونه +1 رو میده.
                                [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                                دیدگاه

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