آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش های من

وحید گروسی  9 سال پیش  9 سال پیش
+5 0

سلام
با آموزش الگوریتم تبدیل عملگر توان به عملگر جمع در خدمت شما هستم. این تاپیک از نظر مدیران مناسب نبود حذف بشه مشکلی ندارم.
خب ما میخواهیم که عبارت زیر رو بدون استفاده از عملگر "توان" و فقط با استفاده از جمع محاسبه کنیم.

برای همین منظور ما نیاز داریم یه مرحله برگردیم به عقبتر از عملگر توان !  (عبارت رو به شکل ضرب بنویسیم).
یعنی ضرب. پس میشه عکس زیر

و باز به عملگر قبل ترش نگاه میکنیم یعنی جمع!( پرانتز بندی می کنیم و 4*4 اول رو تمرکز میکنیم روش تا جوابش رو بدست بیاریم تا بعد بگم چیکار کنیم.
عکس زیر رو ببینین:

خب حالا رسیدیم به عملگر جمع یکم که به 4*4*4 دقت کنین می بینین که عدد 4 سه بار در خودش ضرب شده.
پس ما دو تا متغیر داریم num1 و num2 .
میایم به این روش عمل می کنیم.

  public void compute(int num1, int num2) {
    int temp = num1; \\ مقدار نام1 رو  میریزیم تو تمپ
    int result = num1; \\ مقدار نام1 رو میریزیم تو ریزالت
    for (int i = 1; i < num2; i++) { \\ از یک تا خود عدد دومی میریم چون که باید به تعداد اون ضرب کنیم
      for (int j = 1; j < num1; j++) { \\ (باید عکس ها یادتون باشه ها)یه فور دیگه می سازیم برای این که از 1 بریم تا خود عدد اولی چون میخوایم عدد اول رو جمع کنیم.
        temp += result; // temp = temp + result => \\  اینجا هم تمپ رو با ریزالت با هم جمع میکنیم میریزیم تو تمپ
      }
      result = temp; // اینجا هم مقدار تمپ رو میریزیم تو ریزالت چون سری بعدی که آی یکی زیاد میشه و فور داخلی اجرا میشه اینبار 16 رو باخوش جمع کنه.
    }
    Log.i("Test", num1 + "^" + num2 + " is: " + result);
  }
}
+1 0
این آموزش ها میتونه به افرادی که تازه دارن کد نویسی رو شروع میکنن کمک کنه . دمت گرم همین طور ادامه بده (9 سال پیش)
+2 0
ممنونم از نظر لطفت دارم روی تبدیل عملگر تقسیم به تفریق و یا فکر میکنم هیچ سورسی رو نمی بینم تا خودم کشفش کنم اونم ردیف شد میزارم بالاخره زکات علم نشر آن است دیگه فردین جان (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
وحید گروسی  9 سال پیش
+2 0

 پاسخ صحیح

با سلام با یه الگوریتم ساده دیگه در خدمت شما هستم:
این الگوریتم برای تبدیل عدد به ( باینری ) 8 بیت معروف آی پی کاربرد دارد. هر آی پی هشت بیت دارد که به شکل
8بیت-8بیت-8بیت-8بیت  که جمعاً 32بیت می شوند اینجا اگر بخواهیم باینری عدد 128 را حساب کنیم می شود .
1 2 4 8 16 32 64 128
0 0 0  0 0    0   0 
برای عدد 137 میشود : 10001001

تصویری از محیط اپلیکیشن:

 
public class MainActivity extends AppCompatActivity {

    Button btn_compute;
    EditText edt_input;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edt_input = (EditText) findViewById(R.id.edt_input);
        btn_compute = (Button) findViewById(R.id.btn_compute);
        btn_compute.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String numStr = edt_input.getText().toString();
                if (numStr.equals("")) {

                    TextView[] txtResult = new TextView[8];
                    txtResult[0] = (TextView) findViewById(R.id.txt_128);
                    txtResult[1] = (TextView) findViewById(R.id.txt_64);
                    txtResult[2] = (TextView) findViewById(R.id.txt_32);
                    txtResult[3] = (TextView) findViewById(R.id.txt_16);
                    txtResult[4] = (TextView) findViewById(R.id.txt_8);
                    txtResult[5] = (TextView) findViewById(R.id.txt_4);
                    txtResult[6] = (TextView) findViewById(R.id.txt_2);
                    txtResult[7] = (TextView) findViewById(R.id.txt_1);
                    txtResult[0].setText("0");
                    txtResult[1].setText("0");
                    txtResult[2].setText("0");
                    txtResult[3].setText("0");
                    txtResult[4].setText("0");
                    txtResult[5].setText("0");
                    txtResult[6].setText("0");
                    txtResult[7].setText("0");
                    return;
                }
                int numInt = Integer.parseInt(numStr);
                if (numInt != 0) {
                    compute(numInt);
                }
            }
        });
    }

    public void compute(int number) {
        int[] array = new int[8];
        int numberForDisplay = number;
        TextView[] txtResult = new TextView[8];
        txtResult[0] = (TextView) findViewById(R.id.txt_128);
        txtResult[1] = (TextView) findViewById(R.id.txt_64);
        txtResult[2] = (TextView) findViewById(R.id.txt_32);
        txtResult[3] = (TextView) findViewById(R.id.txt_16);
        txtResult[4] = (TextView) findViewById(R.id.txt_8);
        txtResult[5] = (TextView) findViewById(R.id.txt_4);
        txtResult[6] = (TextView) findViewById(R.id.txt_2);
        txtResult[7] = (TextView) findViewById(R.id.txt_1);

        int[] newArray = new int[8];
        array[0] = 128;
        array[1] = 64;
        array[2] = 32;
        array[3] = 16;
        array[4] = 8;
        array[5] = 4;
        array[6] = 2;
        array[7] = 1;
        String answer = "";
        for (int i = 0; i < 8; i++) {
            if (number - array[i] >= 0) {
                number -= array[i];
                answer += "1";
                newArray[i] = 1;
                txtResult[i].setText("1");
            } else {
                answer += "0";
                newArray[i] = 0;
                txtResult[i].setText("0");
            }
        }

        for (int i = 0; i < 8; i++) {
            if (newArray[i] == 1) {
                Log.i("Test", "Binary of " + numberForDisplay + " is: " + newArray[i]);
            }
        }
    }
}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .