يك تابع با چند ورودي و چند خروجي

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • alisabet

    • 2011/09/08
    • 159
    • 45.00

    يك تابع با چند ورودي و چند خروجي

    سلام من احتياج به يك تابع دارم كه چند تا خروجي داشته باشد
    مثال فرض كنيد يك تابع داريم با وروديهاي متغير x=2000 و d= 500 c= 500 b= 500 a= 500 خروجي اين تابع بايد چهار تا عدد 500 500 500 و 500 باشد

    حال اگر متغير اول يعني 2000 به 1700 تغيير يابد خروجي هاي آن بايد 500 500 500 200 باشد

    و اگر همان متغير اول يعني 2000 به 600 تغيير كند خروجي هاي آن بايد 500 و 100 باشد

    و اگر متغير اول به 200 تغيير يابد خروجيهاي تابع فقط عدد 200 خواهد بود

    در ضمن الگوي 500 500 500 500 هم بتواند تغيير كند مثلا با ورودي x= 600 و a=200 و b= 100 و c 300 و d= 400 خروجي بايد خروجيها بايد 200 100 300 و 0 باشد

    در كل بايد متغير ورودي x باندازه چهار متغير بعدي توزيع شود و كسري آن در آخرين متغير كه ميتواند d يا c يا حتي a باشد اعمال شود يعني مجموع خروجيها همواره مساوي x خواهد بود منتها طبق الگوي چهار متغير بعدي يه كم بيشتر توضيح ميدم فرض كنيد ميخواهيم عدد 20 را 6 تا 6 تا تقسيم كنيم خروجيها عبارتند از 6 6 6 2 و اگر يخواهيم 7 تا 7تا تقسيم كنيم خروجيها خواهد شد 7 7 6 0 و اگر بخواهيم عدد 20 را مثلاً 25 تا 25 تا تقسيم كنيم خروجيها 20 0 0 0 خواهد بود
    در ضمن در شيت نميخواهم محاسبه و نشان داده شود بايد بصورت كد vba باشد اساتيد محترم اگر به روش حل مسئله هم اشاره كنند كافي خواهد بود
  • abootorab

    • 2014/10/17
    • 351

    #2
    نوشته اصلی توسط alisabet
    سلام من احتياج به يك تابع دارم كه چند تا خروجي داشته باشد
    مثال فرض كنيد يك تابع داريم با وروديهاي متغير x=2000 و d= 500 c= 500 b= 500 a= 500 خروجي اين تابع بايد چهار تا عدد 500 500 500 و 500 باشد

    حال اگر متغير اول يعني 2000 به 1700 تغيير يابد خروجي هاي آن بايد 500 500 500 200 باشد

    و اگر همان متغير اول يعني 2000 به 600 تغيير كند خروجي هاي آن بايد 500 و 100 باشد

    و اگر متغير اول به 200 تغيير يابد خروجيهاي تابع فقط عدد 200 خواهد بود

    در ضمن الگوي 500 500 500 500 هم بتواند تغيير كند مثلا با ورودي x= 600 و a=200 و b= 100 و c 300 و d= 400 خروجي بايد خروجيها بايد 200 100 300 و 0 باشد

    در كل بايد متغير ورودي x باندازه چهار متغير بعدي توزيع شود و كسري آن در آخرين متغير كه ميتواند d يا c يا حتي a باشد اعمال شود يعني مجموع خروجيها همواره مساوي x خواهد بود منتها طبق الگوي چهار متغير بعدي يه كم بيشتر توضيح ميدم فرض كنيد ميخواهيم عدد 20 را 6 تا 6 تا تقسيم كنيم خروجيها عبارتند از 6 6 6 2 و اگر يخواهيم 7 تا 7تا تقسيم كنيم خروجيها خواهد شد 7 7 6 0 و اگر بخواهيم عدد 20 را مثلاً 25 تا 25 تا تقسيم كنيم خروجيها 20 0 0 0 خواهد بود
    در ضمن در شيت نميخواهم محاسبه و نشان داده شود بايد بصورت كد vba باشد اساتيد محترم اگر به روش حل مسئله هم اشاره كنند كافي خواهد بود
    با درود
    دوست عزیز فکر کنم هنوز یه جای مسئله کنگه یا اینکه من متوجه نشدم، تمام مثالهایی که شما زدین عدد اصلی رو جوری بیان کردین که با اون تقسیمات به 4 عدد بعدی کفایت میکنن. به عبارت دیگه مثلا اگر عدد 5000 داشته باشیم و الگو 500 500 500 500 باشه بازهم مقدار عدد اصلی زیاد میاد یا بالعکس تعداد 500 تایی ها باید بیشتر بشن و یا اینکه مقدار الگو یعنی عدد 500 باید جوری افزایش پیدا کنه که هر عددی تنها با مجموع 4 قسمت به دست بیاد. در نهایت باید مشخص باشه اولویت واسه شما تعداد اعداد الگوست یا مقدار اعداد الگو؟؟
    میشه یه کم بیشتر توضیح بدین؟

    کامنت

    • alisabet

      • 2011/09/08
      • 159
      • 45.00

      #3
      نوشته اصلی توسط abootorab
      با درود
      دوست عزیز فکر کنم هنوز یه جای مسئله کنگه یا اینکه من متوجه نشدم، تمام مثالهایی که شما زدین عدد اصلی رو جوری بیان کردین که با اون تقسیمات به 4 عدد بعدی کفایت میکنن. به عبارت دیگه مثلا اگر عدد 5000 داشته باشیم و الگو 500 500 500 500 باشه بازهم مقدار عدد اصلی زیاد میاد یا بالعکس تعداد 500 تایی ها باید بیشتر بشن و یا اینکه مقدار الگو یعنی عدد 500 باید جوری افزایش پیدا کنه که هر عددی تنها با مجموع 4 قسمت به دست بیاد. در نهایت باید مشخص باشه اولویت واسه شما تعداد اعداد الگوست یا مقدار اعداد الگو؟؟
      میشه یه کم بیشتر توضیح بدین؟
      مثلاً عدد 20 که عدد اصلی است وقتی در ظرف 6 6 6 6 قرار میگیرد خروجیها عبارتند از 6 6 6 2
      یا مثال دیگر عدد 20 وقتی د ظروف 25 25 25 25 قرار بگیرد خروجیها عبارتند از 20 0 0 0
      یه مثال دیگه عدد 500 وقتی در ظرف 50 50 50 50 قرار بگیرد خروجیها عبارتند از 50 50 50 50 کاری هم به بقیه عدد اصلی نداریم
      یه مثال دیگه عدد 20 وقتی در ظروف 5 7 8 9 قرار بگیره خروجیها بابد 5 7 8 0 باشد
      یا وقتی عدد 26 در ظرف 5 7 8 9 قرار بگیره خروجیها عبارتند از 5 7 8 6
      یعنی مقدار پر شدن ظروف مهم است نه عدد اصلی
      فرض کنید 4 تا لیوان به ظرفیت مساوی یا غیر مساوی داریم که به ترتیب چیده شده اند و با یک پارچ که مهم نیست چقدر حجم دارد میخواهیم لیوانها را بگونه ای پر کنیم که تا لیوان اولی کاملا پر نشده بسراغ بعدی نمیرویم معیار ما 4 تا لیوان است نه پارچ اصلی
      Last edited by alisabet; 2014/12/29, 19:07.

      کامنت

      • abootorab

        • 2014/10/17
        • 351

        #4
        نوشته اصلی توسط alisabet
        مثلاً عدد 20 که عدد اصلی است وقتی در ظرف 6 6 6 6 قرار میگیرد خروجیها عبارتند از 6 6 6 2
        یا مثال دیگر عدد 20 وقتی د ظروف 25 25 25 25 قرار بگیرد خروجیها عبارتند از 20 0 0 0
        یه مثال دیگه عدد 500 وقتی در ظرف 50 50 50 50 قرار بگیرد خروجیها عبارتند از 50 50 50 50 کاری هم به بقیه عدد اصلی نداریم
        یه مثال دیگه عدد 20 وقتی در ظروف 5 7 8 9 قرار بگیره خروجیها بابد 5 7 8 0 باشد
        یا وقتی عدد 26 در ظرف 5 7 8 9 قرار بگیره خروجیها عبارتند از 5 7 8 6
        یعنی مقدار پر شدن ظروف مهم است نه عدد اصلی
        فرض کنید 4 تا لیوان به ظرفیت مساوی یا غیر مساوی داریم که به ترتیب چیده شده اند و با یک پارچ که مهم نیست چقدر حجم دارد میخواهیم لیوانها را بگونه ای پر کنیم که تا لیوان اولی کاملا پر نشده بسراغ بعدی نمیرویم معیار ما 4 تا لیوان است نه پارچ اصلی

        با درود مجدد
        این تابع خدمت شما، امیدوارم منظورتون همین باشه. البته چون تابع بیشتر از یک خروجی نمیتونه داشته باشه تمام اعداد رو کنار هم با علامت "-" به رشته تبدیل کردم و در کل یک خروجی گرفتم.
        کد PHP:

        Function DivNum(xabcd)
            
        Dim inum(4) As Integer
            Dim onum
        (4) As Integer
            
            inum
        (1) = ainum(2) = binum(3) = cinum(4) = d
            DivNum 
        x
            
            
        For 1 To 4
                mandeh 
        inum(c)
                If 
        mandeh >= 0 Then
                    onum
        (c) = inum(c)
                    
        mandeh
                
        ElseIf mandeh 0 Then
                    onum
        (c) = inum(c) + mandeh
                    
        Exit For
                
        End If
            
        Next c
            
            DivNum 
        DivNum ":" onum(1) & "-" onum(2) & "-" onum(3) & "-" onum(4)
        End Function 

        کامنت

        • alisabet

          • 2011/09/08
          • 159
          • 45.00

          #5
          دقیقاً همین بود لطف کردین خیلی ممنون

          کامنت

          چند لحظه..