پرسش و پاسخ پیرامون برنامه‌نویسی

  • شروع کننده موضوع max
  • تاریخ شروع

atousa.a

کاربر فوق‌فعال
ارسال‌ها
153
امتیاز
3,063
نام مرکز سمپاد
فرزانگان ری
شهر
تهران
سال فارغ التحصیلی
93
دانشگاه
پلی تکنیک
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از هامـون :
سلام٬
اگه کسی متوجه شد مشکل این کد چیه ممنون می‌شم بگه٬ و اینکه؛
یک. آیا تعریف فانکشن Find درسته؟
دو. چه موقع داخل فانکشن از return استفاده کنم و چه موقع از printf یا cout؟ تفاوت‌ها چیه؟

+من متوجه نشدم دقیقن برنامه قراره چه کاری انجام بده :-?

+‌اول اینکه تعریف تابع مشکل داره. تابع نباید داخل مین تعریف بشه. باید خارج از مین باشه.
از طرفی چون در داخل تابع از ارایه ی A هم استفاده کردیم باید اونرو هم به تابع پاس بدیم تا بشه ازش استفاده کرد. امضای تابع به این شکل میشه :
کد:
char Find(int L, int R, int A[] )

+ مشکل بعدی اینه که چیزی که نابه برمیگردونه یک کاراکتره ولی شما یک استرینگ رو دارید برمیگردونید که باهاش مشکل داره!

+ بستگی به استفاده ای که از تابع میشه میتونید چیزی که میخواید رو چاپ کنید یا با ریترن برگردونید
الان تو این جا مستقیمن میشه چاپ کرد حاصل رو از خود تابع.
اما بعضی وقتا شما از یک تابع استفاده میکنید که حاصلش الزامن نتیجه ی نهایی شما نیست و شما فقط از این تابع استفاده کردید تا یه عدد ( مثلن)‌ به دست بیارید و ازش برای محاسبه ی یه سری چیزای دیگه استفاده کنید. در واقع زمانی که خروجی نهایی شما الزامن خروجی تابع نباشه و از خروجی تابع برای به دست اوردن خروجی نهایی استاده بشه باید این مقدار جایی نگه داری بشه که توسط ریترن این کار انجام میشه.
 

RezA19

کاربر فعال
ارسال‌ها
64
امتیاز
277
نام مرکز سمپاد
حقانی بندر
شهر
kermanshah
سال فارغ التحصیلی
98
دانشگاه
Razi university
رشته دانشگاه
Computer Engineering
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

کد:
char find(int A[] ,int L,int R) {
int sum=0;
for(int i=L;i<=R;i++)
sum=sum+abs(A[i])
if(sum%2==0)
return "even";
else
return "odd";
}


int main(){
int n , i , p , q;
cin >> n;
int a[n];
for ( int i ;i <n ;i++){
cin>>a[i] ;
cout<<a [i] <<"\t";
}
cin>>p>>q;
for(int i=p;i<=q;i++)
cout<<find(a,p,q)<<"\t";
return 0;
}

فک کنم منظورت این برنامه بوده :-? :)

اگه با سی برنامه نویسی میکردی از printf استفاده میکنیم اگه سی ++ باشه cout
به نقل از هامـون :
سلام٬
اگه کسی متوجه شد مشکل این کد چیه ممنون می‌شم بگه٬ و اینکه؛
یک. آیا تعریف فانکشن Find درسته؟
دو. چه موقع داخل فانکشن از return استفاده کنم و چه موقع از printf یا cout؟ تفاوت‌ها چیه؟
 

ArtmisSoR

کاربر حرفه‌ای
ارسال‌ها
292
امتیاز
3,448
نام مرکز سمپاد
فرزانگان‎امین
شهر
Isf
دانشگاه
پلی‌پیکنیک
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

مرسی٬ اون مشکل حل شد.

سوال دیگه‌م اینه که همه‌ی جایگشت‌های یک کلمه (یا عدد) با حروف(یا ارقام) تکراری رو چطور باید تولید کرد؟
مثلا همه‌ی جایگشت‌های عددی با دوتا ۴ ٬ دوتا ۵ و یکی ۶.
۴۴۵۵۶
۴۵۵۶۴
۵۵۶۴۴
۵۶۴۴۵
۶۴۴۵۵
۴۵۴۵۶
۵۴۵۴۶
۴۵۶۴۵
۵۴۶۵۴
...
 

Anita H

کاربر فوق‌حرفه‌ای
ارسال‌ها
571
امتیاز
2,987
نام مرکز سمپاد
حلّی ۲
شهر
تهران
سال فارغ التحصیلی
1396
مدال المپیاد
کامپیوتری بودم
دانشگاه
شریف
رشته دانشگاه
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از Mortez :
یه الگوریتم تو خود c++ داره که یه استرینگ میگیره و تمام جایگشتاشو میده بیرون !

:D !

الان یادم رفته !

میگم :....
+++++++++++++++++
next_permutation
دیگه نحوه استفادشو اینا رو یادم رفته فعلا :D
نحوه ی استفادش رو میتونید از اینجا یا اینجا و یا حتی اینجا و البته در کمال ناباروری اینجا ببینید ;;) ;;) ;;) ولی خب کلن این جوریه دیگه: دو تا آرگومان میگیره اولیش یه پوینتر به اول آرایه ای که میخاید جایگشت بعدیش رو به دست بیارید یکیش به یه خونه جلوتر از آخر آرایه تون. یعنی برای آرایه ی a که سایزش n هست این طوری مینویسید:
کد:
next_permutation(a, a + n);
و برای وکتور v این طوری مینویسید
کد:
next_permutation(v.begin(), v.end());
 

ArtmisSoR

کاربر حرفه‌ای
ارسال‌ها
292
امتیاز
3,448
نام مرکز سمپاد
فرزانگان‎امین
شهر
Isf
دانشگاه
پلی‌پیکنیک
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

این سوال رو ببینید٬
من با چیزی که از سوال فهمیدم یه کد بسیار پر شرط و شروط نوشتم٬ مشکل اینه که وقتی تعداد test case بیشتر از ۶ میشه٬ برنامه‌م فقط ۶تای اول رو خروجی میده! دوتا تست اول(که احتمالا کمتر از ۶تا test case داره) جواب درسته٬ تست سوم wrong answer و تست چهارم segmentation fault (احتمالاً تایم لیمیت)

کد من اینه:
کد:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    int t, n, m, posi[t];
    cin>>t;
    for(int i=0 ; i<t ; i++){
    	cin>>n>>m;
        if(n%2==1){ //N: fard 
          if(m%2==0 && (m%n)%2==1){
            posi[i]=(n-((m%n)+1)/2)+1;
          }
          else if(m%2==1 && (m%n)%2==1) {
            posi[i]=((m%n)+1)/2;
          }
          else if(m%2==0 && (m%n)%2==0 && m%n!=0){
            posi[i]=(n-((m%n)/2))+1;
          }
          else if(m%2==1 && (m%n)%2==0 && m%n!=0){
            posi[i]=(m%n)/2;
          }
          else {
            posi[i]=(n+1)/2;
          }
        }
        //***
        //**
        //*
        else if(n%2==0){ //N: zowj
            if(m%2==1){
            posi[i]=((m%n)+1)/2;
          }
           else if(m%2==0 && m%n!=0){
            posi[i]=n-((m%n)/2)+1;
          } 
          else {
            posi[i]=(n/2)+1;
          }

        }
        cout<<posi[i]<<" "<<(m-1)/n<<endl;
    }
   
    return 0;
}


و یه سوال کلّی ترم اینه که آیا این درسته که من توی همون حلقه‌ی for که باهاش ورودی میگیرم٬ خروجی چاپ کنم؟ به نظرم معقول نیومد٬ اما توی تست‌ها جواب داد (البته تست‌هایی با کمتر از ۶ test case)!
 

Anita H

کاربر فوق‌حرفه‌ای
ارسال‌ها
571
امتیاز
2,987
نام مرکز سمپاد
حلّی ۲
شهر
تهران
سال فارغ التحصیلی
1396
مدال المپیاد
کامپیوتری بودم
دانشگاه
شریف
رشته دانشگاه
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از هامـون :
این سوال رو ببینید٬
من با چیزی که از سوال فهمیدم یه کد بسیار پر شرط و شروط نوشتم٬ مشکل اینه که وقتی تعداد test case بیشتر از ۶ میشه٬ برنامه‌م فقط ۶تای اول رو خروجی میده! دوتا تست اول(که احتمالا کمتر از ۶تا test case داره) جواب درسته٬ تست سوم wrong answer و تست چهارم segmentation fault (احتمالاً تایم لیمیت)

کد من اینه:
کد:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    int t, n, m, posi[t];
    cin>>t;
    for(int i=0 ; i<t ; i++){
    	cin>>n>>m;
        if(n%2==1){ //N: fard 
          if(m%2==0 && (m%n)%2==1){
            posi[i]=(n-((m%n)+1)/2)+1;
          }
          else if(m%2==1 && (m%n)%2==1) {
            posi[i]=((m%n)+1)/2;
          }
          else if(m%2==0 && (m%n)%2==0 && m%n!=0){
            posi[i]=(n-((m%n)/2))+1;
          }
          else if(m%2==1 && (m%n)%2==0 && m%n!=0){
            posi[i]=(m%n)/2;
          }
          else {
            posi[i]=(n+1)/2;
          }
        }
        //***
        //**
        //*
        else if(n%2==0){ //N: zowj
            if(m%2==1){
            posi[i]=((m%n)+1)/2;
          }
           else if(m%2==0 && m%n!=0){
            posi[i]=n-((m%n)/2)+1;
          } 
          else {
            posi[i]=(n/2)+1;
          }

        }
        cout<<posi[i]<<" "<<(m-1)/n<<endl;
    }
   
    return 0;
}


و یه سوال کلّی ترم اینه که آیا این درسته که من توی همون حلقه‌ی for که باهاش ورودی میگیرم٬ خروجی چاپ کنم؟ به نظرم معقول نیومد٬ اما توی تست‌ها جواب داد (البته تست‌هایی با کمتر از ۶ test case)!
اول t رو از ورودی بگیر بعد آرایه posi رو تعریف کن ;;) :‌))
 

ArtmisSoR

کاربر حرفه‌ای
ارسال‌ها
292
امتیاز
3,448
نام مرکز سمپاد
فرزانگان‎امین
شهر
Isf
دانشگاه
پلی‌پیکنیک
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

بعله. اشتباه واقعاً شرم‌آوری بود:|
الآن سوال جدیدم اینه که پس چرا قبلش تا ۶تا تست‌کیس رو جواب میداد اصلاً؟!:))
 

mahsa.n

کاربر جدید
ارسال‌ها
1
امتیاز
212
نام مرکز سمپاد
فرزانگان 1
شهر
شیراز
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

سلام دوستان!!!
من كتاب چگونه با c++ برنامه نويسي كنيم دايتل ترجمه عليرضا انصاري رو گرفتم و خيلي هم راضي هستم!! :D
مي خواستم بپرسم كتاب خوب اين مدلي براي python و هم چنين html وcss چي سراغ دارين؟؟؟
(اگه منبع مورد نظرتون انگليسيه ميشه ترجمه خوبش رو هم بگيد؟؟ ممنون!!)
 

Anita H

کاربر فوق‌حرفه‌ای
ارسال‌ها
571
امتیاز
2,987
نام مرکز سمپاد
حلّی ۲
شهر
تهران
سال فارغ التحصیلی
1396
مدال المپیاد
کامپیوتری بودم
دانشگاه
شریف
رشته دانشگاه
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از mahsa.n :
سلام دوستان!!!
من كتاب چگونه با c++ برنامه نويسي كنيم دايتل ترجمه عليرضا انصاري رو گرفتم و خيلي هم راضي هستم!! :D
مي خواستم بپرسم كتاب خوب اين مدلي براي python و هم چنين html وcss چي سراغ دارين؟؟؟
(اگه منبع مورد نظرتون انگليسيه ميشه ترجمه خوبش رو هم بگيد؟؟ ممنون!!)
کتاب چگونه با python برنامه نویسی کنیم دایتل
کتاب چگونه برای وب برنامه نویسی کنیم دایتل
:D
ولی جدی شاید این کتابا خوب باشن با توجه به این که نویسنده های اولی دایتل و دایتل و دایتل هستن و نویسنده ی دومی دایتل هست:
Internet & World Wide Web How to Program / Deitel & Deitel & Deitel
Python How to Program / Deitel
 

Agent 47

کاربر حرفه‌ای
ارسال‌ها
318
امتیاز
1,190
نام مرکز سمپاد
شهید بهشتی
شهر
تهران
دانشگاه
شهید بهشتی
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

آقا کسی بلده با python وب کراولر ( crawler) بسازه؟ اگه آره یه پی ام بده :D


پ ن: اومدم امتحان کنم ببینم چیه کف و خون قاطی کردم :|
yn6iewlk31qycpquyhtc.png
 
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

پایتون ؟! ( با لفظ اون بنفشه خونده بشه :D )
با PHP اگه خواستی در خدمتم ! :|
 

Agent 47

کاربر حرفه‌ای
ارسال‌ها
318
امتیاز
1,190
نام مرکز سمپاد
شهید بهشتی
شهر
تهران
دانشگاه
شهید بهشتی
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از مجیـــــد :
پایتون ؟! ( با لفظ اون بنفشه خونده بشه :D )
با PHP اگه خواستی در خدمتم ! :|
به خاطر کار مجبورم پایتون یاد بگیرم و فعلا فریوم ورک scrapy نظرمو جلب کرده. چیز خوبیه مث این که :-"
 
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از Agent 47 :
به خاطر کار مجبورم پایتون یاد بگیرم و فعلا فریوم ورک scrapy نظرمو جلب کرده. چیز خوبیه مث این که :-"
من که به شخصه از اسمشم میترسم ... :D
ولی در هر صورت فک کنم از لحاظ الگوریتمیک یکسان باشن ؛ مگه اینکه پایتون محدودیت توابع http و اینا داشته باشه !
 

Agent 47

کاربر حرفه‌ای
ارسال‌ها
318
امتیاز
1,190
نام مرکز سمپاد
شهید بهشتی
شهر
تهران
دانشگاه
شهید بهشتی
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از مجیـــــد :
من که به شخصه از اسمشم میترسم ... :D
ولی در هر صورت فک کنم از لحاظ الگوریتمیک یکسان باشن ؛ مگه اینکه پایتون محدودیت توابع http و اینا داشته باشه !

نه باو خیلی بچه خوبیه :D چیزای جالبی داره :-? من الان 2-3 هفتس دارم میخونم احساس می کنم هیچی بلد نیستم :))
 
ارسال‌ها
2,126
امتیاز
23,690
نام مرکز سمپاد
فرزانگان
شهر
قم
سال فارغ التحصیلی
97
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

یه مرجعی برای آموزش پایتون معرفی می کنین؟ یکم،فقط یکم بالاتر از لول مبتدی :-" قبلا کسی یادم میداد الان نیستش...
 

-mina-

کاربر نیمه‌حرفه‌ای
ارسال‌ها
222
امتیاز
601
نام مرکز سمپاد
فرزانگان
شهر
میانه
دانشگاه
اهواز
رشته دانشگاه
دامپزشکی
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از ♥hastikhanoom♥ :
یه مرجعی برای آموزش پایتون معرفی می کنین؟ یکم،فقط یکم بالاتر از لول مبتدی :-" قبلا کسی یادم میداد الان نیستش...
کورس ارا ، یه کورس داشت بد نبود، ترافیک نتت چقدره ؟
 

Agent 47

کاربر حرفه‌ای
ارسال‌ها
318
امتیاز
1,190
نام مرکز سمپاد
شهید بهشتی
شهر
تهران
دانشگاه
شهید بهشتی
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از ♥hastikhanoom♥ :
یه مرجعی برای آموزش پایتون معرفی می کنین؟ یکم،فقط یکم بالاتر از لول مبتدی :-" قبلا کسی یادم میداد الان نیستش...
http://learnpythonthehardway.org/book/
http://www.learnpython.org/
https://www.codecademy.com/tracks/python
 

ArtmisSoR

کاربر حرفه‌ای
ارسال‌ها
292
امتیاز
3,448
نام مرکز سمپاد
فرزانگان‎امین
شهر
Isf
دانشگاه
پلی‌پیکنیک
رشته دانشگاه
علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

یه کد ساده‌ی بسط تیلور-مک‌لورن هست که نمی‌دونم چرا برای بیشتر از ۱۸ترم اول بسط جواب inf یا NaN می‌ده. متغیرهای اعشاری رو لانگ دابل تعریف کردم ولی نتیجه‌ی خاصی نگرفتم.
nLq5u.png
 

Anita H

کاربر فوق‌حرفه‌ای
ارسال‌ها
571
امتیاز
2,987
نام مرکز سمپاد
حلّی ۲
شهر
تهران
سال فارغ التحصیلی
1396
مدال المپیاد
کامپیوتری بودم
دانشگاه
شریف
رشته دانشگاه
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از هامـون :
یه کد ساده‌ی بسط تیلور-مک‌لورن هست که نمی‌دونم چرا برای بیشتر از ۱۸ترم اول بسط جواب inf یا NaN می‌ده. متغیرهای اعشاری رو لانگ دابل تعریف کردم ولی نتیجه‌ی خاصی نگرفتم.
nLq5u.png
با توجه به این که مقدار divisor از دو به توان سی و یک منهای دو بیشتر نمیشه، اورفلو میکنه. چون توش هیجده فاکتوریل رو هم ذخیره میکنید و این عدد بزرگیه!
احتمالن کار این طوری پیش میره که:
divisor از محدوده ی اینت که خارج میشه بعدش، به یه جایی میرسه که بیشتر از ۳۰ تا عامل ۲ داره و این یعنی که ۳۱ بیت سمت راست divisor صفر هستن، که اگه این طوری باشه، divisor صفر میشه و num / divisor میشه inf و توی مراحل بعدش هم nan!
 
بالا