PDA

View Full Version : کمک برای نوشتن یک برنامه



mamali24
جمعه 06 شهریور 1388, 01:58 صبح
سلام به همگی می خوام یه برنامه بنویسم که 40 تا عدد ورودی بگیره و یک عدد k بعد ببینه که توی این 40 تا عدد ، اعدادی هستند که مجموعشون بشه k ؟ کسی میتونه این برنامه رو بنویسه ؟

clover
جمعه 06 شهریور 1388, 02:14 صبح
اگه فقط دنبال تعداد حالاتی بگرده که مجموع 2 تا عدد بشه k کار ساده ایه اما اگر تعداد حالاتی که مجموع چند عدد می تونه برابر k بشه را محاسبه کنه باید راجع به الگوریتمش فکر کرد .
حالا کدومه ؟

emadfa
جمعه 06 شهریور 1388, 06:10 صبح
فکر می کنم که الگوریتم باید به شکلی باشه که در یک حلقه تکرار k از 1 شروع بشه تا 40 ( یا n ) بعد در هر کدام از k ها با استفاده از حلقه های تودرتو همه حالت ها تست شوند.

deopen
جمعه 06 شهریور 1388, 13:00 عصر
دوستان درست گفتند این هم کد, بابت ناخوانایی متاسفم چون میخواستم دو اصل حق حداقل دسترسی و کار با اشاره گر را تمرین کنم.


#include<iostream>
using std::cout;
using std::cin;
using std::endl;

#include<cstdlib>
using std::rand;
using std::srand;

#include<ctime>
using std::time;

#include<conio.h>

void rndSelect(int *,const int const *);
void print(const int const *,const int const *);
void find(const int const *,const int const *,const int const *);


int main() {
const int size=10;
int arr[size];
int entry;

rndSelect(arr,&size);

print(arr,&size);

cout<<"Enter : "; cin>>entry; cout<<endl;

cout<<"Your Entry is "<<entry<<endl;

find(arr,&size,&entry);

getch();

return 0;

}

void rndSelect(int *arr,const int const *size) {

srand(time(0));

for (int i=0;i<(*size);i++,arr++) {
*arr=rand()%100;
}

}

void print(const int const *arr,const int const *size) {

for (int i=0;i<(*size);i++) {
cout<<i<<"=>"<<*(arr+i)<<" ";
}
cout<<endl;
}

void find(const int const *arr,const int const *size,const int const *k) {

for (int i=0;i<(*size);i++) {
for (int j=0;j<(*size);j++) {
if ((*(arr+i)+*(arr+j))==*k && i!=j) {
cout<<"FIND THAT : "<<i<<"+"<<j<<endl;
}

}

}

}