انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: learner:~$ در 27 بهمن 1402، 05:03 ب‌ظ

عنوان: فاکتوریل ( حل شد )
ارسال شده توسط: learner:~$ در 27 بهمن 1402، 05:03 ب‌ظ
درود

درحال تمرین بش هستم.یک برنامه نوشتم که با دریافت عدد فاکتوریل اون رو حساب میکنه.ولی مقادیر بزرگ رو یا صفر میکنه یا منفی!!
دلیلش چیه؟؟
کد برنامه :
#!/usr/bin/bash


fact=1
read -p "enter yout factor: " n
for ((i=1;i<=${n};i++))
do
    fact=$((fact * i))

done
echo -e "\nyour fact is ${fact}\n"

به عنوان مثال با دریافت عدد ۴۵ این خروجی رو میده:
-8797348664486920192

چرا ؟
عنوان: پاسخ : فاکتوریل
ارسال شده توسط: esmaeelE در 27 بهمن 1402، 05:26 ب‌ظ
ظرف نگه‌داری کوچیکه، متغیر خیلی بزرگه، سرریز کرده.

از bc برای محاسبات اینچنینی استفاده کنید.

https://stackoverflow.com/a/51885441/7508077

اینجا را برای آشنایی با سرریز عدد صحیح ببینید.

https://en.wikipedia.org/wiki/Integer_overflow

برای مسائلی به این شکل، آزمون و خطا و یادگیری مفاهیم، پایتون انتخاب بهتریه تا bash

عنوان: پاسخ : فاکتوریل
ارسال شده توسط: learner:~$ در 27 بهمن 1402، 05:47 ب‌ظ
ظرف نگه‌داری کوچیکه، متغیر خیلی بزرگه، سرریز کرده.

از bc برای محاسبات اینچنینی استفاده کنید.

https://stackoverflow.com/a/51885441/7508077

اینجا را برای آشنایی با سرریز عدد صحیح ببینید.

https://en.wikipedia.org/wiki/Integer_overflow

برای مسائلی به این شکل، آزمون و خطا و یادگیری مفاهیم، پایتون انتخاب بهتریه تا bash
درود مممنونم از لطف شما
من هیچ وقت با پایتون حال نکردم و همیشه از نحوش فراری بودم و زیاد از زبان های سطح بالا خوشم نمیاد جز بعضی ها
عنوان: پاسخ : فاکتوریل
ارسال شده توسط: thmkhtry در 27 بهمن 1402، 11:33 ب‌ظ
درود مممنونم از لطف شما
من هیچ وقت با پایتون حال نکردم و همیشه از نحوش فراری بودم و زیاد از زبان های سطح بالا خوشم نمیاد جز بعضی ها
پایتون سطح بالا نیست. بش هم زبان اسکریپت نویسیه.
عنوان: پاسخ : فاکتوریل ( حل شد )
ارسال شده توسط: nixoeen در 28 بهمن 1402، 03:22 ب‌ظ
پایتون سطح بالا نیست.
پایتون یک زبان برنامه‌نویسی سطح بالاست.
عنوان: پاسخ : فاکتوریل ( حل شد )
ارسال شده توسط: thmkhtry در 28 بهمن 1402، 04:22 ب‌ظ
پایتون سطح بالا نیست.
پایتون یک زبان برنامه‌نویسی سطح بالاست.
بله من اشتباه کردم درست ولی مثلا از C که سطح بالا نیست :)
عنوان: پاسخ : فاکتوریل
ارسال شده توسط: learner:~$ در 28 بهمن 1402، 07:31 ب‌ظ
درود مممنونم از لطف شما
من هیچ وقت با پایتون حال نکردم و همیشه از نحوش فراری بودم و زیاد از زبان های سطح بالا خوشم نمیاد جز بعضی ها
پایتون سطح بالا نیست. بش هم زبان اسکریپت نویسیه.
پایتون هم یک زبان اسکریپتی هست و درضمن سطح بالا
عنوان: پاسخ : فاکتوریل ( حل شد )
ارسال شده توسط: nixoeen در 28 بهمن 1402، 08:19 ب‌ظ
بله من اشتباه کردم درست ولی مثلا از C که سطح بالا نیست :)
پایتون از سی سطح‌بالاتره. احتمالا هنوز سطح‌بندی‌ها رو در برنامه‌نویسی متوجه نشدید: لینک (https://fa.wikipedia.org/wiki/%D8%B2%D8%A8%D8%A7%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B3%D8%B7%D8%AD_%D8%A8%D8%A7%D9%84%D8%A7)
عنوان: پاسخ : فاکتوریل ( حل شد )
ارسال شده توسط: thmkhtry در 28 بهمن 1402، 08:32 ب‌ظ
بله من اشتباه کردم درست ولی مثلا از C که سطح بالا نیست :)
پایتون از سی سطح‌بالاتره. احتمالا هنوز سطح‌بندی‌ها رو در برنامه‌نویسی متوجه نشدید: لینک (https://fa.wikipedia.org/wiki/%D8%B2%D8%A8%D8%A7%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B3%D8%B7%D8%AD_%D8%A8%D8%A7%D9%84%D8%A7)
آره بلعکس متوجه شدم.
درود مممنونم از لطف شما
من هیچ وقت با پایتون حال نکردم و همیشه از نحوش فراری بودم و زیاد از زبان های سطح بالا خوشم نمیاد جز بعضی ها
پایتون سطح بالا نیست. بش هم زبان اسکریپت نویسیه.
پایتون هم یک زبان اسکریپتی هست و درضمن سطح بالا
اسکریپت نویسی یکی از کاربرد هاشه.
عنوان: پاسخ : فاکتوریل ( حل شد )
ارسال شده توسط: learner:~$ در 28 بهمن 1402، 08:57 ب‌ظ
پایتون سطح بالا نیست.
پایتون یک زبان برنامه‌نویسی سطح بالاست.
بله من اشتباه کردم درست ولی مثلا از C که سطح بالا نیست :)
سی در مقایسه با اینها و از نظر خیلی ها سطح پایینه ولی زبان سی سطح میانی هست
عنوان: پاسخ : فاکتوریل ( حل شد )
ارسال شده توسط: aFard در 29 بهمن 1402، 02:02 ب‌ظ
در جواب به طاها ، برعکس نه بلعکس!
ببینید هرچی زبان برنامه نویسی به زبان ماشین نزدیک تر باشه سطحش پایین تره ، شما در یک ساختمان در نظر داشته باشید که زبان ماشین در طبقه ی همکفه و در هر طبقه یک مترجم هست که کد رو برای طبقه ی پایین به زبان اون ترجمه میکنه ، هرچی زبان طبقه ی بالاتری داشته باشه از زبان ماشین دورتره ، پایتون زبان سطح بالایی هستش