деня1990
05.05.2021 18:52

Даны целые числа a, b, c, D. Найдите произведение чисел, не равное нулю. Если все цифры равны нулю, выведите данные на экран

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
ksyunik435
25.01.2023 08:26

#include <iostream>

#include <ctime>


using namespace std;


int** get_matrix(int rows,int columns) //Создание матрицы

{

int** matrix = new int*[rows];

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

{

matrix[i] = new int[columns];

}

return matrix;

}

void fill_matrix(int** matrix, int rows,int columns, int min = -100, int max = 200)//Заполнение матрицы случайными значениями в заданном диапазоне

{

srand(time(NULL));

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

{

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

{

matrix[i][j] = rand() % max + min;

}

}

}


int get_count_of_positive_numbers(int** matrix, int rows, int columns)

{

int count = 0;

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

{

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

{

if(i == j && matrix[i][j] > 0)

count++;

}

}

return count;

}


int *get_array_of_positive_numbers(int** matrix, int rows,int columns,int count)

{

int *array = new int[count];

int x = 0;

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

{

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

{

if(i == j && matrix[i][j] > 0)

array[x++] = matrix[i][j];

}

}

return array;

}


int main(int argc, char** argv) {

int rows = 5;

int columns = 5;

int** matrix = get_matrix(rows,columns);//Создаем матрицу

fill_matrix(matrix,rows,columns);//Заполняем ее случайными значениями

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

{

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

{

cout << matrix[i][j] << "\t";

}

cout<<endl;

}

int count_of_positive_numbers = get_count_of_positive_numbers(matrix,rows,columns); //Получаем количество положительных элементов в главной диагонали

int* positive_numbers = get_array_of_positive_numbers(matrix,rows,columns,count_of_positive_numbers);//Получаем массив с этими элементами

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

{

cout << positive_numbers[i] <<"\t";

}

//Очищение памяти

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

{

delete[]matrix[i];

}

delete[]matrix;

delete[]positive_numbers;

return 0;

}

0,0(0 оценок)
Ответ:
pornuxa1
31.12.2020 18:11
Одно из решений, возможно, не самое эффективное
#include <iostream>
#include <iomanip>
int main()
{
    using namespace std;

    //исходная последовательность
    const int N = 8;
    double Arr[N] = { 14.2, -3.4, 7.8, -3.1, 8.2, 98.22, -7, 12 };

    //вывод на экран исходной последовательности
    for (int i = 0; i < N; ++i)
        cout << Arr[i] << "  ";
    cout << endl;

    //подсчитаем количества отрицательных и неотрицательных элементов
    int kpos = 0;
    int kneg = 0;
    for (int i = 0; i < N; ++i)
        if (Arr[i] < 0)
            ++kneg;
        else
            ++kpos;

    //создадим массивы отрицательных и неотрицательных элементов
    double * ArrNeg = new double[kneg];
    double * ArrPos = new double[kpos];

    int kn = 0, kp = 0;
    for (int i = 0; i < N; i++)
        if (Arr[i] < 0)
            ArrNeg[kn++] = Arr[i];
        else
            ArrPos[kp++] = Arr[i];

    cout << "Enter a, b, c or d: ";
    char ch;
    cin >> ch;

    if (ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd')
    {
        switch (ch)
        {
            //пункт а)
            case 'a':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[i];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[i];
                break;

                //пункт б)
            case 'b':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[--kn];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[i];
                break;

                //пункт в)
            case 'c':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[i];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[--kp];
                break;

                //пункт г)
            case 'd':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[--kn];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[--kp];
                break;
        }
    }
    else
        cout << "You entered wrong symbol\n";

    for (int i = 0; i < N; ++i)
        cout << Arr[i] << "  ";
    cout << endl;
    delete[] ArrNeg;
    delete[] ArrPos;
    return 0;
}
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота