مشکل در ++c

netbia

New Member
سلام میشه بگید کجای برنامه من مشکل داره؟ من تازه کار با ++C رو شروع کردم ممنون میشم
کد:
#include <iostream.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>

int rnd(int l,int u,int count)
{int res=0;
 for(int c=1;c<=count;c++)
 {randomize();
 res=l+random(u-l);//generate [count] number between [L] and [U]
 return res;
 }
}


void main()
{
    int L,U,count,res;
    cout<<"Please enter Low bound,Upper bound and count:";
    cin>>L>>U>>count;
   res=rnd(L,U,count);
   cout<<res<<endl;
   getch();
}
وظیفه این برنامه تولید مثلا بیست عدد تصادفی بین مغتیرهای L وU هست و کار هم میکنه اما فقط یه عدد میده من میخوام مثلا بیست تا عدد تصادفی بهمون بده که این هم توسط متغییر Count تعیین میشه
ممنون
:-?
 

the_king

مدیرکل انجمن
سلام میشه بگید کجای برنامه من مشکل داره؟ من تازه کار با ++C رو شروع کردم ممنون میشم
وظیفه این برنامه تولید مثلا بیست عدد تصادفی بین مغتیرهای L وU هست و کار هم میکنه اما فقط یه عدد میده من میخوام مثلا بیست تا عدد تصادفی بهمون بده که این هم توسط متغییر Count تعیین میشه
ممنون
:-?

هر تابعی یک مقدار بر می گردونه (return می کنه)، فقط یک مقدار. اگر return را داخل یک حلقه قرار دهید،
به محض اینکه اولین return اجرا شد از تابع خارج می شود. اگر بخواهید چند مقدار را برگردانید نمی توانید بیش
از یک return را اجرا کنید و عملا دو راه حل بیشتر ندارید :

1) بجای اینکه مقادیر را به عنوان خروجی تابع return کنید، یک پارامتر از نوع آرایه به تابع اضافه کنید و مقادیر خانه های
آن آرایه را تغییر دهید :
کد:
void rnd(int l, int u, int count, int r[])
{
    randomize();
    for (int i = 0; i < count; i++)
    {
        r[i] = l + random(u - l);[COLOR="Gray"]//generate [count] number between [L] and [U][/COLOR]
    }
}

void main()
{
    int L, U, count;
    int r[100];
    cout << "Please enter Low bound,Upper bound and count:";
    cin >> L >> U >> count;
    rnd(L, U, count, r);
    for (int i = 0; i < count; i++)
        cout << r[i] << " ";
    cout << endl;
    getch();
}

2) در تابع بجای یک مقدار res یک آرایه را برگردانید :
کد:
int* rnd(int l, int u, int count)
{
    int* r = new int[count];
    randomize();
    for (int i = 0; i < count; i++)
    {
        r[i] = l + random(u - l);[COLOR="Gray"]//generate [count] number between [L] and [U][/COLOR]
    }
    return r;
}

void main()
{
    int L, U, count;
    cout << "Please enter Low bound,Upper bound and count:";
    cin >> L >> U >> count;
    int* r = rnd(L, U, count);
    for (int i = 0; i < count; i++)
        cout << r[i] << " ";
    cout << endl;
    getch();
}

در ضمن random و randomize استاندارد زبان نیستند، از rand و srand استفاده میشه :
کد:
void randomize()
{
     srand(time(NULL));
}

int random(int v)
{
    return rand() % (v + 1);
}

randomize را هم یکبار بیشتر اجرا نکنید، اجرا های بیشتر بجای آنکه اعداد را بیشتر تصادفی کند، احتمال
تکراری شدنشان را افزایش می دهد.
 

جدیدترین ارسال ها

بالا