Основи програмування на С ++ для початківців

Завдання: Функции C

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

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

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

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

39 думки про "Завдання: Функции C

  1. За першої задачі.
    Одна функція повинна вирішувати одну проблему. У вас функція заповнює І виводить. правильніше написати 2 функции.

    За другою задачі теж саме, але ще… я б додав функцію порівняння елементів і передавав її як аргумент. У вас код функцій findmin b findmax майже збігається. Це погано.

    Типу того
    INT знайти(Const INT * обр, сопзЬ Int N, Const станд::functoin порівняти) const {
    INT результат = обр[0];
    for(int i = 1; i < n; ++i)
    Результат = порівняння(arr[i], result);
    return result;
    }

    ІНТ хв(int a, int b) { повертати b ? a : b; }

    // …
    int size = 5;
    INT * обр = новий INT[size];
    знайти(arr, size, min); // знайде мінімальний елемент

    Код накидав схемотічно.

    За третьою завданню… я б функцію main розбив на більш дрібні. Наприклад привітання юзера можна винести в окрему функцію. Чому ні?

  2. третє завдання класна! дала молодшому братові пограти в кубики з комп'ютером ;)

  3. Ось що вийшло в 3-му завданні.

    void DoPlayerWalketh(int &iFirstCubeValue, int &iSecondCubeValue, int &iPlayerScore);
    void DoComputerWalketh(int &iFirstCubeValue, int &iSecondCubeValue, int &iComputerScore);
    void ShowResults(int iPlayerScore, int iComputerScore);
    int iChooiseWalketh(int iArray);
    void KickTwoCubes(int &iFirstCube, int &iSecondCube);
    void cls();
    void pause();

    using namespace std;

    bool enable(true);

    int main()
    {
    setlocale(LC_ALL, "Russian");

    int iFirstCubeValue(0), iSecondCubeValue(0);
    int iPlayerScore(0), iComputerScore(0);
    int iWalketh(0);

    do
    {
    cls();

    iWalketh = iChooiseWalketh(iWalketh);

    if (iWalketh == 1)
    {
    DoPlayerWalketh(iFirstCubeValue, iSecondCubeValue, iPlayerScore);
    DoComputerWalketh(iFirstCubeValue, iSecondCubeValue, iComputerScore);
    ShowResults(iPlayerScore, iComputerScore);
    }
    else if (iWalketh == 0)
    {
    DoComputerWalketh(iFirstCubeValue, iSecondCubeValue, iComputerScore);
    DoPlayerWalketh(iFirstCubeValue, iSecondCubeValue, iPlayerScore);
    ShowResults(iPlayerScore, iComputerScore);
    }

    } while (enable);

    _getch();
    return 0;
    }

    void DoPlayerWalketh(int &iFirstCube, int &iSecondCube, int &iScore)
    {
    char chChooise('A');

    cls();

    cin.clear();
    cin.sync();

    cout << "Бросить кубик?" << endl;
    cout <> chChooise;

    switch (chChooise)
    {
    case 'y':
    case 'Y':
    KickTwoCubes(iFirstCube, iSecondCube);
    cls();
    cout << "Вы бросили кубик..." << endl;
    cout << "Вам выпало: " << iFirstCube << " и " << iSecondCube << endl;
    iScore += iFirstCube + iSecondCube;
    pause();
    break;
    case 'n':
    case 'N':
    enable = !enable;
    break;
    default:
    DoPlayerWalketh(iFirstCube, iSecondCube, iScore);
    break;
    }
    }

    void DoComputerWalketh(int &iFirstCube, int &iSecondCube, int &iScore)
    {
    if (enable)
    {
    cls();
    cout << "Ход компьютера." << endl;
    pause();
    cls();
    cout << "Компьютер бросил кубик..." << endl;
    KickTwoCubes(iFirstCube, iSecondCube);
    cout << "Ему выпало: " << iFirstCube << " и " << iSecondCube << endl;
    iScore += iFirstCube + iSecondCube;
    pause();
    }
    }

    void ShowResults(int iPlayerScore, int iComputerScore)
    {
    if (enable)
    {
    cls();
    cout <Результаты раунда<----------" << endl;
    cout << "| Всего очков у игрока: " << iPlayerScore << endl;
    cout << "| Всего очков у компьютера: " << iComputerScore << endl;
    pause();

    }
    else
    {
    cls();
    cout <>>Результаты и определение победителя<<<" < iComputerScore)
    cout << "*Победитель - человек с " << iPlayerScore << " очками*" < iPlayerScore)
    cout << "*Победитель - компьютер с " << iComputerScore << " очками*" << endl;
    cout << "Общие результаты: " << endl;
    cout << "Игрок: " << iPlayerScore << " очков." << endl;
    cout << "Компьютер: " << iComputerScore << " очков." << endl;
    pause();
    }
    }

    void KickTwoCubes(int &iFirstCube, int &iSecondCube)
    {
    srand(time(NULL));

    int iRandomize = rand() % 7;
    for (int i(0); i < iRandomize; i++)
    iFirstCube = 1 + rand() % (6 - 1 + 1);

    iRandomize = rand() % 7;
    for (int i(0); i < iRandomize; i++)
    iSecondCube = 1 + rand() % (6 - 1 + 1);
    }

    int iChooiseWalketh(int iArray)
    {
    if (iArray == 0)
    return 1;
    if (iArray == 1)
    return 0;
    else
    return 2;
    }

    void cls()
    {
    system("cls");
    }

    void pause()
    {
    system("pause");
    }

    Однак подивившись після код рішення, я зрозумів, що за таке виконання мені більше 2-ки не світить xD

  4. INT funcmass()
    {
    Const INT size1 = 10;
    Const INT size2 = 5;

    INT ms1[size1] = {};
    INT ms2[size2] = {};

    srand(time_t(NULL));

    for (int i = 0; i < size1; i )
    {
    ms1[i] = 1 + ранд()%10;
    cout<<"ms1= "<< ms1[i] << endl;;
    };

    cout <<"——————————————————————————-";
    for (int i = 0; i < size2; i )
    {
    MS2[i] = 1 + rand() % 5;
    cout << "ms2= " << MS2[i] << endl;;
    };

    return 0;
    }

    int main()
    {
    setlocale(LC_ALL, "rus");

    funcmass();

    system("PAUSE");
    return 0;
    }

  5. #include
    #include

    using namespace std;

    int brosok();
    void kubik(int player, int comp);
    void tabl(int player, int comp);

    int main()
    {

    srand(time(NULL));

    char name[15];
    int player = 0;
    int comp = 0;

    cout < < "Добро Пожаловать" << endl; cout << name; kubik(player, comp); return 0; } int brosok() { int s, a; char y = 0; cout << y; if (y == 'y') { a = 1 + rand() % 6; s = a; } else if (y != 'y') { cout << "Не шути со мной." << endl; } cout << endl; switch (a) { case 1: cout << "@@@@@@@\n"; cout << "@@@@@@@\n"; cout << "@@@ @@@\n"; cout << "@@@@@@@\n"; cout << "@@@@@@@\n"; cout << "\nОдно очко\n"; break; case 2: cout << "@@@@@@@\n"; cout << "@ @@@@@\n"; cout << "@@@@@@@\n"; cout << "@@@@@ @\n"; cout << "@@@@@@@\n"; cout << "\nДва очка\n"; break; case 3: cout << "@@@@@@@\n"; cout << "@ @@@@@\n"; cout << "@@@ @@@\n"; cout << "@@@@@ @\n"; cout << "@@@@@@@\n"; cout << "\nТри очка\n"; break; case 4: cout << "@@@@@@@\n"; cout << "@ @@@ @\n"; cout << "@@@@@@@\n"; cout << "@ @@@ @\n"; cout << "@@@@@@@\n"; cout << "\nЧетыре очка\n"; break; case 5: cout << "@@@@@@@\n"; cout << "@ @@@ @\n"; cout << "@@@ @@@\n"; cout << "@ @@@ @\n"; cout << "@@@@@@@\n"; cout << "\nПять очков\n"; break; case 6: cout << "@@@@@@@\n"; cout << "@ @ @ @\n"; cout << "@@@@@@@\n"; cout << "@ @ @ @\n"; cout << "@@@@@@@\n\n"; cout << "\nШесть очков\n"; break; } return s; } void kubik(int player, int comp) { for (int i = 0; i < 4; i++) { cout << "\nВаш бросок, "; player = brosok(); cout << comp; } tabl(player, comp); cout << "Вы победили, поздравляем!!!" << player; tabl(player, comp); cout << "Вы проиграли, не отчаивайтесь." << endl; } void tabl(int player, int comp) { cout << "Таблица Бросков" << endl; cout << "| Вы набрали: " << player << "||" << "Компьютер набрал: " << comp << " |" << endl; cout << endl; }

  6. перше завдання:

  7. Третє завдання можна написати і на Сі:

  8. int minValueArr(внутр. обр[][5], int SizeArr)
    {
    int minItem = Arr[0][0];
    for (int i = 0; i < SizeArr; i )
    {
    for (int j = 0; j Arr[i][j])
    {
    minItem = Arr[i][j];
    }
    }
    }
    cout << "Наименьшее значение элементов массива = " << minItem<<endl<<endl;
    return minItem;
    }

    Насколько критично использовать оператор “cout” в самой функции, или же более правилен вариант его в использования внутри функции “main”, как показано в ваших примерах. Спасибо.

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *