پروژه برنامه مویسی

پروژه برنامه نویسی

پروژه برنامه مویسی

پروژه برنامه نویسی

4-36 چاپ یک ارایه

(چاپ یک ارایه) یک ارایه ی بازگشتی به نام printArray  بنویسید که یک ارایه و اندازه ی ارایه را به عنوان ارگومان دریافت کند و بدون ان که چیزی برگرداند ان را نمایش دهد. این تابع باید هنگام دریافت ارایه ای به اندازه ی صفر عملیاتش را متوقف کرده و به برنامه ی اصلی باز گردد.

 


 #include<iostream>

using std::cout;
using std::endl;
#include<iomanip>
using std::setw;
#include<cstdlib>
#include<ctime>
void printArray(const int [], int, int);
int main()
{
const int SIZE = 10, MAXNUMBER = 500;
int array[SIZE];
srand(time(0));
for(int loop = 0; loop < SIZE; ++loop)
array[loop] = 1 + rand() % MAXNUMBER;
cout << "Array values printed in main:\n";
for(int j = 0; j < SIZE; ++j)
cout << setw(5) << array[j];
cout << "\n\nArray values printed in printArray:\n";
printArray(array, 0, SIZE - 1);
cout << endl;
return 0;
}

void printArray(const int array[], int low, int high)
{
cout << setw(5) << array[low];
if(low == high)
return;
else
printArray(array, low + 1, high);
}

4-37 چاپ معکوس یک رشته

(چاپ معکوس یک رشته) یک تابع بازگشتی به نام stringReverse  بنویسید که یک ارایه ی کاراکتری شامل رشته ای را به عنوان ارگومان تابع گرفته و سپس ان رشته را به صورت معکوس نمایش دهد و چیزی را برنگرداند. این تابع باید هنگام رو به رو شدن با کاراکتر nullعملیات را متوقف کرده و برگردد.

  ادامه مطلب ...

4-38 یافتن کوچکترین مقدار در یک ارایه

(یافتن کوچکترین مقدار در یک ارایه) تابع بازگشتی به نام  recursiveMinimum  بنویسید که یک ارایه ی صحیح و اندازه ی ارایه را به عنوان ارگومان تابع دریافت کرده و کوچکترین عنصر ان را برگرداند. این تابع باید هنگام دریافت یک ارایه ی تک عنصری عملیات را متوقف کند.

  ادامه مطلب ...

4-19 برنامه ای بنویسید که بازی کراپز (craps) را 1000 بار اجرا کند.

برنامه ای به زبان C++  بنویسید که بازی کراپز(craps) را 1000 بار اجرا کرده و به پرسش های زیر پاسخ دهد:

الف) در چند بازی بازیکن در اولین پرتاپ دومین پرتاپ و ... در بیستمین پرتاپ و بعد از بیستمین پرتاپ تاس برنده می شود؟


ب) در چند بازی بازیکن در اولین پرتاپ دومین پرتاپ و... در بیستمین پرتاپ و بعد از بیستمین پرتاپ تاس بازنده می شود؟


ج) احتمال برنده شدن در بازی کراپز(craps) چقدر است؟ (توجه: در حل این بخش باید به این واقعیت برسید که کراپز (craps)  یکی از بازی های عادلانه است. به نظر شما این چه معنایی دارد.)


د) طول متوسط یک بازی کراپز (craps) چقدر است؟


ه) ایا با افزایش طول بازی شانس برنده شدن بیشتر می شود?

 


 #include<iostream>

#include<iomanip>
#include<ctime>
#include<cstdlib>
using std::cout;
using std::endl;
using std::ios;
using std::setw;
using std::setprecision;
using std::setiosflags;
int rollDice(void);
int main()
{
enum Outcome {CONTINUE, WIN, LOSE};
const int SIZE = 22, ROLLS = 1000;
int gameStatus, sum, myPoint, roll, length = 0, wins[SIZE] = {0},
losses[SIZE] = {0}, winSum = 0, loseSum = 0;
srand(time(0));
for(int i = 1; i <= ROLLS; ++i) {
sum = rollDice();
roll = 1;
switch(sum) {
case 7: case 11:
gameStatus = WIN;
break;
case 2: case 3: case 12:
gameStatus = LOSE;
break;
default:
gameStatus = CONTINUE;
myPoint = sum;
break;
}
while(gameStatus == CONTINUE) {
sum = rollDice();
++roll;
if(sum == myPoint)
gameStatus = WIN;
else if(sum == 7)
gameStatus = LOSE;
}
if(roll > 21)
roll = 21;
if(gameStatus == WIN) {
++wins[roll];
++winSum;
}
else {
++losses[roll];
++loseSum;
}
}
cout << "Games won or lost after the 20th roll"
<< "\nare displayed as the 21st roll.\n\n";
for(int z = 1; z <= 21; ++z)
cout << setw(3) << wins[z] << " games won and " << setw(3)
    << losses[z] << " game lost on roll " << z << '\n';
//calculate chances of wining
cout << setiosflags(ios::fixed | ios::showpoint)
<< "\nThe chances of winnig are " << winSum << " / "
<< winSum + loseSum << " = " << setprecision(2)
<< 100.0 * winSum / (winSum + loseSum) << "%\n";
//calculate averange length of game
for(int k = 1; k <= 21; ++k)
length += wins[k] * k + losses[k] * k;
cout << "The average game length is " << setprecision(2)
<< length / 100.0 << " rolls." << endl;
getch();
return 0;
}

int rollDice(void)
{
int die1, die2, workSum;
die1 = 1 + rand() % 6;
die2 = 1 + rand() % 6;
workSum = die1 + die2;
return workSum;
}

4-32 جناس قلب - رشته ای که از هر طرف خوانده شود یکسان است.

جناس قلب رشته ای است که اگر از هر طرف بنویسید یکسان می باشد.به عنوان مثال radar و (اگر فاصله ها را در نظر نگیریم) ((a man a plan a canal Panama)) یک تابع بازگشتی به نام testPalindrome بنویسید که در صورتی که رشته ذخیره شده در ارایه ی جناس قلب است true در غیر این صورت false  را برگرداند. این تابع بازگشتی باید فاصله های خالی و علائم نقطه گذاری را در نظر نگیرد.


 

ادامه مطلب ...