Задачи: Одномерные массивы C++
Приступая к решению задач, ознакомьтесь со статьями Массивы в C++ и Генератор случайных чисел rand(), если еще не читали их. Постарайтесь решать предложенные задачи самостоятельно и смотреть наши решения только в крайнем случае.
Создать массив типа int на 10 элементов и заполнить его случайными числами от 7 до 14. После заполнения перезаписать все числа, которые больше десяти: от хранимого значение отнять 10. Например в ячейке хранится число 12: 12 – 10 = 2. Записать в эту ячейку 2 Записывая новое значение, используйте составные (комбинированные) операторы.
#include
#include
#include
using namespace std;
int main()
{
int ourArr[10] = {};
const int lowerLimit = 7;
const int upperLimit = 14;
srand(time(NULL));
for(int i = 0; i < 10; i++) // заполняем и показываем
{
ourArr[i] = lowerLimit + rand() % (upperLimit - lowerLimit + 1);
cout << ourArr[i] << " | ";
}
cout << endl << endl;
for(int i = 0; i < 10; i++)
{
if(ourArr[i] >= 10)
{
ourArr[i] -= 10;
}
cout << ourArr[i] << " | ";
}
cout << endl << endl;
return 0;
}
Посмотреть код
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++ предлагаем самостоятельно решить несколько задач. Расположены они по уровню сложности.
Объявить два целочисленных массива с разными размерами и написать функцию, которая заполняет их элементы значениями и показывает на экран. Функция должна принимать два параметра – массив и его размер.
#include
using namespace std;
void fillAndShowArray(int arrayForFilling[], int size);
int main()
{
const int SIZE1 = 8;
const int SIZE2 = 14;
int arrayForFilling1 [SIZE1] = {};
int arrayForFilling2 [SIZE2] = {};
fillAndShowArray(arrayForFilling1, SIZE1);
fillAndShowArray(arrayForFilling2, SIZE2);
return 0;
}
void fillAndShowArray(int arrayForFilling[], int size)
{
for (int i = 0; i < size; i++)
{
arrayForFilling[i] = i + 1;
cout << arrayForFilling[i] << " ";
}
cout << endl;
}
Показать код
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
Do'stlaringiz bilan baham: |