Основы программирования на С++ для начинающих

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

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

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

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

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

37 thoughts on “Задачи: Функции C++

  1. #include
    #include

    using namespace std;

    int who_first();
    int throw_cube(int cube1, int cube2);

    int main()
    {
    setlocale(LC_ALL, “ru”);

    bool var;

    int cube1 = 0;
    int cube2 = 0;

    int pc_points = 0;
    int player_points = 0;

    int pc_total = 0;
    int player_total = 0;

    cout <> name;
    cout << endl;

    var = who_first();

    for (int i = 0; i < 8; i++)
    {
    if (var)
    {
    player_points = throw_cube(cube1, cube2);

    player_total += player_points;

    cout << "Ходит " << name << endl;
    cout << "У " << name << " выпало " << player_points << " очков" << endl;
    cout << "Всего у " << name << " " << player_total << " очков" << endl;
    cout <<"===================================================="<< endl << endl;
    }

    else
    {
    int pc_points = throw_cube(cube1, cube2);

    pc_total += pc_points;

    cout << "Ходит компьютер" << endl;
    cout << "У компьютера выпало " << pc_points << " очков" << endl;
    cout << "Всего у компьютера " << pc_total << " очков" << endl<< endl;
    cout << "====================================================" << endl << endl;
    }

    var = !var;
    }

    if (pc_total == player_total) cout << "Победила дружба! " < player_total) cout << "Победа за компьютером :-( " << endl;
    else if (pc_total < player_total) cout << "Победил(а) " << name << "!" << endl;
    }

    int who_first()
    {
    srand(time(0));
    int result = rand() % 2 – 1;

    return result;
    }

    int throw_cube(int cube1, int cube2)
    {
    cube1 = rand() % 6 + 1;
    cube2 = rand() % 6 + 1;

    int result = cube1 + cube2;
    return result;
    }

  2. Без промежуточных итогов.
    #include
    #include
    #include
    #include
    using namespace std;
    int PCscore, manscore;
    int cube();
    int cubePC();

    int main() {
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    srand(time(NULL));

    string x;
    cout << "КУБИКИ – СЫГРАЕМ?" << endl;
    for (int i = 0; i < 3; i++) {
    cout << "Бросить кубики?" <> x;
    if (x == “да”)
    {
    cube();
    }
    else {
    cout << "Завершение работы…";
    return 0;
    }
    cout << "Ход компьютера:" << endl;
    cubePC();
    }
    cout << "Компьютер – " << PCscore << endl
    << "Игрок – " << manscore < manscore) cout << "Вы проиграли" << endl;
    else cout << "Вы выиграли" << endl;
    }

    int cube() {
    SetConsoleOutputCP(866);
    SetConsoleCP(1251);
    int man1 = 1 + rand() % 5, man2 = 1 + rand() % 5;
    cout << (char)201 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187
    << "\t" << (char)201 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187 << endl
    << (char)186 << " " << man1 << " " << char(186)
    << "\t" << (char)186 << " " << man2 << " " << char(186) << endl
    << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188
    << "\t" << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188 << endl;
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    return manscore += (man1 + man2);
    }
    int cubePC() {
    SetConsoleOutputCP(866);
    SetConsoleCP(1251);
    int PC1 = 1 + rand() % 5, PC2 = 1 + rand() % 5;
    cout << (char)201 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187
    << "\t" << (char)201 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187 << endl
    << (char)186 << " " << PC1 << " " << char(186)
    << "\t" << (char)186 << " " << PC2 << " " << char(186) << endl
    << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188
    << "\t" << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188 << endl;
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    return PCscore += (PC1 + PC2);
    }

  3. Задание № 3
    #include
    #include
    #include
    #include
    using namespace std;

    void ThrowCube(int &NumOnCube)
    {
    NumOnCube = rand() % 6 + 1;
    switch (NumOnCube)
    {
    case 1:
    cout << " _________" << endl;
    cout << "/ \\" << endl;
    cout << "| |" << endl;
    cout << "| * |" << endl;
    cout << "| |" << endl;
    cout << "\\_________/" << endl;
    break;
    case 2:
    cout << " _________" << endl;
    cout << "/ \\" << endl;
    cout << "| * |" << endl;
    cout << "| |" << endl;
    cout << "| * |" << endl;
    cout << "\\_________/" << endl;
    break;
    case 3:
    cout << " _________" << endl;
    cout << "/ \\" << endl;
    cout << "| * |" << endl;
    cout << "| * |" << endl;
    cout << "| * |" << endl;
    cout << "\\_________/" << endl;
    break;
    case 4:
    cout << " _________" << endl;
    cout << "/ \\" << endl;
    cout << "| * * |" << endl;
    cout << "| |" << endl;
    cout << "| * * |" << endl;
    cout << "\\_________/" << endl;
    break;
    case 5:
    cout << " _________" << endl;
    cout << "/ \\" << endl;
    cout << "| * |" << endl;
    cout << "| * * * |" << endl;
    cout << "| * |" << endl;
    cout << "\\_________/" << endl;
    break;
    case 6:
    cout << " _________" << endl;
    cout << "/ \\" << endl;
    cout << "| * * |" << endl;
    cout << "| * * |" << endl;
    cout << "| * * |" << endl;
    cout << "\\_________/" << endl;
    break;
    }
    }

    int main()
    {

    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    bool WhoTurn = rand() % 2;
    const int round = 4;
    int PlayerCube1 = 0;
    int PlayerCube2 = 0;
    int PlayerScore = 0;

    int BotCube1 = 0;
    int BotCube2 = 0;
    int BotScore = 0;
    int stats[2][round] = { };
    for (int i = 0; i < round * 2; i++)
    {
    if (WhoTurn == 1)
    {
    cout << "Ваш ход!" << endl;
    cout << "Бросить кубики(нажмите любую клавишу)" << endl;
    _getch();
    ThrowCube(PlayerCube1);
    ThrowCube(PlayerCube2);
    cout << "\nСумма цифр на кубиках: " << PlayerCube1 + PlayerCube2 << "\n" << endl;
    stats[0][i/2] = PlayerCube1 + PlayerCube2;
    PlayerScore += stats[0][i/2];
    WhoTurn = 0;
    }

    else
    {
    cout << "Ход компьютера!" << endl;
    cout << "Компьютер бросает кубики" << endl;
    Sleep(500);
    ThrowCube(BotCube1);
    ThrowCube(BotCube2);
    cout << "\nСумма цифр на кубиках: " << BotCube1 + BotCube2 <<"\n" << endl;
    stats[1][i/2] = BotCube1 + BotCube2;
    BotScore += stats[1][i/2];
    WhoTurn = 1;
    }
    if ((i+1) % 2 == 0 && i != round * 2 – 1)
    {
    cout << "\n=================================" << endl;
    cout << " Счёт игрока\tСчёт компьютера" << endl;
    cout << " " << PlayerScore << "\t " << BotScore << endl;
    cout << "=================================" < BotScore)
    {
    cout << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << endl;
    cout << "@ Вы победили!!! Поздравляю! @" << endl;
    cout << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" < PlayerScore)
    {
    cout << "#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#" << endl;
    cout << "# Компьютер победил!!! В следующий раз повезёт! #" << endl;
    cout << "#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#" << endl;
    }
    else
    {
    cout << " \t\tНичья!" << endl;
    }
    cout << "==================================" << endl;
    cout << " Счёт игрока | Счёт компьютера" << endl;
    cout << " " << PlayerScore << " |" << "\t " << BotScore << endl;
    cout << " |" << endl;
    for (int i = 0; i < round; i++)
    {
    cout << i+1 << " бросок: " << stats[0][i] << " | " << " " << stats[1][i] << endl;
    }
    cout << "==================================" << endl;
    return 0;
    }

  4. При написании программы № 3 заметил одну вещь: если по незнанию объявить srand(time(NULL)) в теле программы более одного раза, то результат броска между циклами меняться не будет. Выбросил 3 и 5 – так и будет до конца программы бросать 3 и 5, пока программа не будет перезапущена. И так раз за разом. Я на это попался. Ошибка при этом не отображается на экране отладки в Visual Studio.

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

    #include
    using namespace std;

    const int ARRSIZE_1 = 4;
    const int ARRSIZE_2 = 5;

    void FuncArr(int arr[], int b)
    {
    for (int i = 0; i < b; i++)
    {
    arr[i] = rand();
    }
    for (int i = 0; i < b; i++)
    {
    cout << arr[i]<< "\t";
    }
    cout << endl;
    }
    int main()
    {
    setlocale(LC_ALL, "RU");
    int arrOne[ARRSIZE_1], arrTwo[ARRSIZE_2];
    cout << "Элементы первого массива : " << endl;
    FuncArr(arrOne, ARRSIZE_1);
    cout << "Элементы второго массива : " << endl;
    FuncArr(arrTwo, ARRSIZE_2);
    }

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

    #include
    #include
    using namespace std;

    const int ROW = 5;
    const int COL = 5;
    int arrOne[ROW][COL];

    void FuncAddArrNumber()
    {
    srand(time(NULL));
    for (int i = 0; i < ROW; i++)
    {
    for (int j = 0; j < COL; j++)
    {
    arrOne[i][j] = rand()%30+30;
    }
    }
    for (int i = 0; i < ROW; i++)
    {
    for (int j = 0; j < COL; j++)
    {
    cout << arrOne[i][j] << "\t";
    }
    cout << endl;
    }
    }
    void FuncMaxMinElement()
    {
    int maxElement = arrOne[0][0];
    int minElement = arrOne[0][0];
    for (int i = 0; i < ROW; i++)
    {
    for (int j = 0; j < COL; j++)
    {
    if (maxElement arrOne[i][j])
    {
    minElement = arrOne[i][j];
    }
    }
    }
    cout << "Максимальный элемент массива : " << maxElement << endl << "Минимальный элемент массива : " << minElement << endl;
    }
    int main()
    {
    setlocale(LC_ALL, "RU");
    FuncAddArrNumber();
    FuncMaxMinElement();
    }

  7. Возле прилавка магазина стоит очередь с n покупателей. Время обслуживания продавцом і-го покупателя ti имеет нормальное распределение с математическим ожиданием 5 мин и средним квадратическим отклонением 2 мин.
    Разработать алгоритм и сделать программу моделирования для получения значений величин ti , величины ci-время ожидания обслуживания i-ым покупателем, время начала обслуживания, время окончания обслуживания каждого покупателя. Найти среднее время ожидания обслуживания.
    Результат работы программы подать в виде таблицы, что состоит из рассчитанных значений.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *