Указатель на указатель C++ Классы в С++ Дополнительный сборник задач с решениями



Download 193,71 Kb.
bet7/12
Sana12.03.2020
Hajmi193,71 Kb.
#42219
TuriУказатель
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
Задачи и решение-Bustanov

Задачи: Одномерные массивы C++


Приступая к решению задач, ознакомьтесь со статьями Массивы в C++  и Генератор случайных чисел rand(), если еще не читали их.   Постарайтесь решать предложенные задачи самостоятельно и смотреть наши решения только в крайнем случае.

      1. Создать массив типа int на 10 элементов и заполнить его случайными числами от 7 до 14. После заполнения перезаписать все числа, которые больше  десяти:  от хранимого значение отнять 10.  Например  в  ячейке хранится число 12: 12 – 10 = 2. Записать в эту ячейку 2 Записывая новое значение, используйте составные (комбинированные) операторы.

  1. #include

  2. #include

  3. #include

  4. using namespace std;

  5.  

  6. int main()

  7. {

  8. int ourArr[10] = {};

  9. const int lowerLimit = 7;

  10. const int upperLimit = 14;

  11.  

  12. srand(time(NULL));

  13. for(int i = 0; i < 10; i++) // заполняем и показываем

  14. {

  15. ourArr[i] = lowerLimit + rand() % (upperLimit - lowerLimit + 1);

  16. cout << ourArr[i] << " | ";

  17. }

  18.  

  19. cout << endl << endl;

  20.  

  21. for(int i = 0; i < 10; i++)

  22. {

  23. if(ourArr[i] >= 10)

  24. {

  25. ourArr[i] -= 10;

  26. }

  27. cout << ourArr[i] << " | ";

  28. }

  29. cout << endl << endl;

  30.  

  31. return 0;

  32. }

Посмотреть код

2. Заполнить массив из 50-ти элементов нечётными числами от 1 до 99. (используйте операцию остаток от деления, чтобы проверить число на чётность)

#include

#include

#include

using namespace std;

 

int main()



{

setlocale(LC_ALL, "rus");

 

const int SIZE = 50;



 

int ourArr[SIZE] = {};


srand(time(NULL));
for(int i = 0; i < SIZE; )

{

ourArr[i] = 1 + rand() % 100;



if(ourArr[i] % 2 != 0)

{

cout << ourArr[i] << " | ";



i++;

}

}



cout << endl << endl;

 

return 0;



}

Посмотреть код

3. Объявить три массива. Первые два заполнить случайными значениями  от 10 до 30. В элементы третьего массива записать сумму соответствующих элементов первых двух массивов. (в нулевую ячейку третьего – сумму нулевых ячеек первого и второго массивов и так далее). Затем найти среднее арифметическое элементов третьего массива, максимальное значение и минимальное значение, которые он хранит.

#include

#include

#include

using namespace std;

 

int main()



{

setlocale(LC_ALL, "rus");

 

const int SIZE = 10;



 

int ourArr[SIZE] = {};

int ourArr2[SIZE] = {};

int ourArr3[SIZE] = {};


srand(time(NULL));

// заполняем первые два массива

cout << "Массив ourArr:  ";

for(int i = 0; i < SIZE; i++)

{

ourArr[i] = 10 + rand() % 21;



cout << ourArr[i] << " | ";

}

cout << endl << endl;



 

cout << "Массив ourArr2: ";

for(int i = 0; i < SIZE; i++)

{

ourArr2[i] = 10 + rand() % 21;



cout << ourArr2[i] << " | ";

}

cout << endl << endl;



 

// заполняем третий массив

cout << "Массив ourArr3: ";

for(int i = 0; i < SIZE; i++)

{

ourArr3[i] = ourArr[i] + ourArr2[i];



cout << ourArr3[i] << " | ";

}

cout << endl << endl;



 

// ищем среднее арифм., минимум и максимум

int averageValue = 0;

int sum = 0;

int minValue = ourArr3[0];

int maxValue = ourArr3[0];

 

for(int i = 0; i < SIZE; i++)



{

sum += ourArr3[i];

 

if(ourArr3[i] < minValue)



{

minValue = ourArr3[i];

}

 

if(ourArr3[i] > maxValue)



{

maxValue = ourArr3[i];

}

}

 



averageValue = sum / SIZE;

 

cout << "Среднеe арифметическое = " << averageValue << endl;



cout << "Минимальное значение   = " << minValue << endl;

cout << "Максимальное значение  = " << maxValue << endl;

cout << endl << endl;

 

return 0;



}

Посмотреть код

Задачи: Функции C++


Продолжая знакомить вас с функциями в C++ предлагаем самостоятельно  решить несколько задач. Расположены они по уровню сложности.

    1. Объявить два целочисленных массива  с разными размерами и написать функцию, которая заполняет их элементы значениями и показывает на экран. Функция должна принимать два параметра – массив и его размер.

  1. #include

  2. using namespace std;

  3.  

  4. void fillAndShowArray(int arrayForFilling[], int size);

  5.  

  6. int main()

  7. {

  8. const int SIZE1 = 8;

  9. const int SIZE2 = 14;

  10.  

  11. int arrayForFilling1 [SIZE1] = {};

  12. int arrayForFilling2 [SIZE2] = {};

  13.  

  14. fillAndShowArray(arrayForFilling1, SIZE1);

  15. fillAndShowArray(arrayForFilling2, SIZE2);



  16. return 0;

  17. }

  18.  

  19. void fillAndShowArray(int arrayForFilling[], int size)

  20. {

  21. for (int i = 0; i < size; i++)

  22. {

  23. arrayForFilling[i] = i + 1;

  24. cout << arrayForFilling[i] << "  ";

  25. }

  26. cout << endl;

  27. }

Показать код

2. Необходимо создать двумерный массив 5 х 5. Далее написать функцию, которая заполнит его случайными числами от  30 до 60. Создать еще две функции, которые находят максимальный и минимальный элементы этого двумерного массива. (О генерации случайных чисел есть отдельная статья)

#include

#include

#include

 

using namespace std;



 

const int  SIZE = 5;

 

void fillAndShowArray(int[][SIZE], const int size);



int findMinElement(int[][SIZE], const int size);

int findMaxElement(int[][SIZE], const int size);

 

int main()



{

setlocale(LC_ALL, "rus");

 

int matrix[SIZE][SIZE] = {};



 

fillAndShowArray(matrix, SIZE); //заполняем и показываем массив

 

cout << endl;



cout << "Минимум: " << findMinElement(matrix, SIZE) << endl;

cout << "Максимум: " << findMaxElement(matrix, SIZE) << endl;

 

return 0;



}

 

void fillAndShowArray(int arr[][SIZE], const int size)



{

for (int i = 0; i < size; i++)

{

cout << "| ";



for (int j = 0; j < size; j++)

{

arr[i][j] = 30 + rand() % 31;



 

cout << arr[i][j] << " ";

}

cout << " |" << endl;



}

}

 



int findMinElement(int arr[][SIZE], const int size)

{

int min = arr[0][0];



for (int i = 0; i < size; i++)

{

for (int j = 0; j < size; j++)



{

if (arr[i][j] < min)

min = arr[i][j];

}

}



return min;

}

 



int findMaxElement(int arr[][SIZE], const int  size)

{

int max = arr[0][0];



for (int i = 0; i < size; i++)

{

for (int j = 0; j < size; j++)



{

if (arr[i][j] > max)

max = arr[i][j];

}

}



return max;

}

Показать код



3. Написать игру в которой имитируется бросание кубиков компьютером и пользователем. В игре 2 кубика и на каждом из них может выпасть от 1 до 6 очков. Реализовать определение программой первого ходящего. Каждый делает по четыре броска.  После бросков показать, нарисованные символами кубики и количество очков, выпавших на них. После  пары бросков (бросок компьютера + бросок пользователя) выводить на экран промежуточный результат  – количество набранных очков игроком и компьютером.  В конце сообщить о том, кто выиграл по итогам всех бросков. 

#include

#include

#include

 

using namespace std;



 

bool calcFirstMove();

void drowCube(int res);

int computerOrPlayerThrow();

void showIntermediateResult(int pointsOfComputer, int pointsOfUser, int numberThrow);

 

int main()



{

setlocale(LC_ALL, "rus");

srand(time(NULL));

 

int playerScore = 0; // для накопления очков



int computerScore = 0;

int whoMove = 0;

char userName[16] = {};

 

cout << "Ваше имя (латиницей): ";



cin >> userName;
whoMove = calcFirstMove(); // если будет 0 - ходит игрок, 1 - ходит компьютер

 

for (int i = 0; i < 4; ++i)



{

for (int j = 0; j < 2; j++)

{

if (whoMove)



{

cout << "\nХодишь ты. ";

playerScore += computerOrPlayerThrow();

}

else



{

cout << "\nХодит компьютер. ";

computerScore += computerOrPlayerThrow();

}

whoMove = !whoMove; // инверсия



}
showIntermediateResult(computerScore, playerScore, i);

}


 

if (computerScore > playerScore)

{

cout << "\n\nПобедитель этой игры - КОМПЬЮТЕР\n!";



cout << "Желаем успехов в следующий раз.\a\a\a\a\a\n\n";

}

else if (computerScore < playerScore)



{

cout << "\n\nПобедитель этой игры - " << userName << "!!! ";

cout << "Поздравляем!!!\a\a\a\a\a\n\n";

}

else



{

cout << "\n\nВ этой игре НИЧЬЯ\a\a\a\a\a\n\n";

}
return 0;

}

 



bool calcFirstMove() // генерирует и возвращает случайное число 0 или 1

{

return rand() % 2;



}

 

void showIntermediateResult(int computerScore, int playerScore, int numberThrow) {



cout << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";

cout << "Комп: " << computerScore << "  |||  Ты:" << playerScore << endl;

cout << "После " << numberThrow + 1 << "-го броска ";

if (computerScore > playerScore)

cout << " выигрывает компьютер!!!\n";

else if (computerScore < playerScore)

cout << " выигрываете Вы!!!\n";

else cout << " ничья!!!\n";

cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";

}

 



// вызывается в функции computerOrPlayerThrow()

void drowCube(int res)

{

switch (res)



{

case 1:


cout << "@@@@@@@\n";

cout << "@@@@@@@\n";

cout << "@@@ @@@\n";

cout << "@@@@@@@\n";

cout << "@@@@@@@\n";

break;


case 2:

cout << "@@@@@@@\n";

cout << "@ @@@@@\n";

cout << "@@@@@@@\n";

cout << "@@@@@ @\n";

cout << "@@@@@@@\n";

break;

case 3:


cout << "@@@@@@@\n";

cout << "@ @@@@@\n";

cout << "@@@ @@@\n";

cout << "@@@@@ @\n";

cout << "@@@@@@@\n";

break;


case 4:

cout << "@@@@@@@\n";

cout << "@ @@@ @\n";

cout << "@@@@@@@\n";

cout << "@ @@@ @\n";

cout << "@@@@@@@\n";

break;

case 5:


cout << "@@@@@@@\n";

cout << "@ @@@ @\n";

cout << "@@@ @@@\n";

cout << "@ @@@ @\n";

cout << "@@@@@@@\n";

break;


case 6:

cout << "@@@@@@@\n";

cout << "@ @ @ @\n";

cout << "@@@@@@@\n";

cout << "@ @ @ @\n";

cout << "@@@@@@@\n\n";

break;

}

}



 

int computerOrPlayerThrow() // реализация броска пары кубиков и возврат полученных очков

{

int result = 0;



char c = 0;
cout << "Нажми Y и Enter, чтобы бросить кубики: ";

do

{



cin.sync(); // очистка буфера

cin >> c;

} while (c != 'y' && c != 'Y');
int tmp = 0; // для накопления очков пары брошенных кубиков

for (int i = 0; i < 2; ++i) {

tmp = 1 + rand() % 6;

drowCube(tmp);

result += tmp;

cout << endl;

}

 

cout << "Всего на кубиках " << result << " очков";



return result;

}

Показать код



4.7

Download 193,71 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish