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

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

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

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

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

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

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

کد:
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؟ تفاوت‌ها چیه؟
 
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

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

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

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

:دی !

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

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

این سوال رو ببینید٬
من با چیزی که از سوال فهمیدم یه کد بسیار پر شرط و شروط نوشتم٬ مشکل اینه که وقتی تعداد 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)!
 
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از هامـون :
این سوال رو ببینید٬
من با چیزی که از سوال فهمیدم یه کد بسیار پر شرط و شروط نوشتم٬ مشکل اینه که وقتی تعداد 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 رو تعریف کن ;;) :‌))
 
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

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

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

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

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


پ ن: اومدم امتحان کنم ببینم چیه کف و خون قاطی کردم :|
yn6iewlk31qycpquyhtc.png
 
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

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

به نقل از مجیـــــد :
پایتون ؟! ( با لفظ اون بنفشه خونده بشه :دی )
با PHP اگه خواستی در خدمتم ! :|
به خاطر کار مجبورم پایتون یاد بگیرم و فعلا فریوم ورک scrapy نظرمو جلب کرده. چیز خوبیه مث این که :-"
 
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

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

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

نه باو خیلی بچه خوبیه :D چیزای جالبی داره :-? من الان 2-3 هفتس دارم میخونم احساس می کنم هیچی بلد نیستم :))
 
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

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

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

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

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

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