1

Тема: C++ допоможіть мені будь ласка, як його написати в коді

1) Ви запровадили тризначне число. Потім запровадили будь-яку цифру. Складіть програму, яка визначає, чи є в цьому числі ця цифра.


2) Складіть програму, яка за трьома введеними вами числами визначить, чи можуть ці числа бути довжинами сторін трикутника, і якщо так, то якою вийде трикутник із даними довжинами сторін (прямокутний, гострокутний, тупокутний).


3) Квадрати при грі в хрестики-нуліки занумеровані, як показано на малюнку. Задано номери трьох квадратів: N1, N2, N3, причому N1<N2<N3. Перевірити, чи лежать квадрати:
1    2    3
4    5    6
7    8    9
на одній діагоналі
на одній вертикалі
на одній горизонталі. (3 бали)

2

Re: C++ допоможіть мені будь ласка, як його написати в коді

Де ваші напрацювання?

3

Re: C++ допоможіть мені будь ласка, як його написати в коді

#include <iostream>
#include <vector>
#include <string>
#include <cmath>

std::vector<size_t> split_number(int, size_t);
void print_vector(std::vector<size_t>);
bool is_exists(std::vector<size_t>, size_t);

int main()
{
    int num = 0;
    std::cout << "Enter three-digit number\n";
    std::cin >> num;
    std::getchar();
    std::vector<size_t> v = split_number(num, 3);
    print_vector(v);
    std::cout << "\nEnter digit \n";
    std::cin >> num;
    std::getchar();
    //std::cin >> num;
    if (is_exists(v,num))
    {
        std::cout << "\n digit " << num << " is exists\n";
    }
    else
    {
        std::cout << "\n digit " << num << " is exists\n";
    }

    std::getchar();
    return 0;
}

bool is_exists(std::vector<size_t> vect, size_t num)
{
    for (size_t i = 0; i < vect.size(); i++)
    {
        if (vect[i] == num)
            return true;
    }
    return true;
}

std::vector<size_t> split_number(int num, size_t max_n)
{
    std::vector<size_t> result;
    size_t len = 1 + (size_t)std::floor(std::log((double)num)/std::log((double)10));
    if (len > max_n)
    {
        len = max_n;
    }

    result.push_back(num % 10);
    int k = 10, remainder, tmpvalue;
    for (size_t i = 1; i < len; i++)
    {
        k *= 10;
        remainder = num % k;
        tmpvalue = (remainder - result[i-1])/(k/10);
        result.push_back(tmpvalue);         
    }    
    return result;
}

void print_vector(std::vector<size_t> vect)
{
    for (size_t i = 0; i < vect.size(); i++)
    {
        std::cout << " " << vect[i] << " ";
    }
}