نمایش نتایج 1 تا 2 از 2

نام تاپیک: کمک فوری:|

  1. #1

    کمک فوری:|

    سلام وقتتون بخیر
    یه سوالی دارم ک برای بعضی از قسمت هاش نیاز به راهنمایی دارم:
    برنامهای بنویسید که هر بار یک عدد مثبت و صحیح از ورودی بخواند و در متغیر n ذخیره نموده و موارد زیر را انجام دهد:
    ) تعداد داده ها 20 است(
     اگر n زوج بود مجموع فاکتوریل ارقام n را محاسبه و در متغیر �𝑗� دخیره نماید. سپس n و �𝑗� را به همراه پیام
    مناسب چاپ کند.
     اگر n فرد بود یک عدد جدید اعشاری در متغیر f بسازد بطوریکه بخش صحیح f از ارقام زوج n و بخش اعشار آن
    از ارقام فرد n ساخته شده باشد. سپس n و f را به همراه پیام مناسب چاپ نماید.
    به مثال زیر توجه کنید :
    اگر 3402=n باشد
    𝑗𝑓 = 2! + 0! + 4! + 3! = 2 + 1 + 24 + 6 = 33
    اگر 65273=n باشد عدد اعشاری f به صورت زیر است :
    𝑓 = 26.573
    دقیقا برای قسمت(( فرد)) هیچ ایده ای ندارم.
    تشکر میکنم ک وقت میزاری واسه خوندنش.

  2. #2

    نقل قول: کمک فوری:|

    دقیقا برای قسمت(( فرد)) هیچ ایده ای ندارم.
    ابتدا عدد را به رشته تبدیل کنید، بعد هر عدد که در یک بایت رشته ای هست را به عدد تبدیل کنید و مقایسه کنید که ببنید عدد زوج هست یا فرد بعد از این مرحله اعداد زوج و فرد را که اکستراکت کردید را مجددا در یک رشته دیگه به ترتیبی که گفتید ذخیره کنید و درانتها رشته را به یک عدد اعشاری تبدیل کنید
    البته برنامه ساده ای در زبان سی میشه نوشت، ولی اگر بخواهید با اسمبلی باشه یکم کارتون سختتره اگر نخواهید از ماکروها و api ها استفاده کنید باید خودتون عدد را به رشته تبدیل کنید و باقی سناریو

    مثلا یک همچنین کدی را میتونید در اسمبلی بنویسید برای تبدیل عدد به رشته (البته از حلقه و دستورات جدید استفاده نکردم برای اینکه بهتر متوجه بشید که چه کاری انجام شده)

    num dd 65273
    strnum db dup(0)


    lea ax , [data]
    mov ds , ax
    mov es , ax

    mov ax , [num]
    mov bx , 10000d
    div bx
    mov word ptr [strnum+0] , ax
    mul bx
    mov cx , ax

    mov bx , [num]
    sub bx , ax
    mov ax , bx
    mov bx , 1000d
    div bx
    mov word ptr [strnum+1] , ax
    mul bx

    add cx , ax

    mov bx , [num]
    sub bx , cx
    mov ax , bx
    mov bx , 100d
    div bx
    mov word ptr [strnum+2] , ax
    mul bx


    add cx , ax


    mov bx , [num]
    sub bx , cx
    mov ax , bx
    mov bx , 10d
    div bx
    mov word ptr [strnum+3] , ax
    mul bx


    add cx , ax


    mov bx , [num]
    sub bx , cx
    mov word ptr [strnum+4] , bx



    بنابراین اعداد در آرایه strnum اکستراکت شده، وبه راحتی بهشون دسترسی دارید فقط کافی که هر عضو آرایه را به عدد تبدیل کنید

    strnum={'6','5','2','7','3'}
    آخرین ویرایش به وسیله farhad_shiri_ex : چهارشنبه 24 اردیبهشت 1399 در 14:29 عصر


قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •