Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2016, 19:47   #1
70velebi
 
Регистрация: 03.11.2016
Сообщений: 6
По умолчанию Срочно!! Нужна помощь с заданием на С++

Пока учу только одномерные массивы, но задание нужно сдать преподу на двумерные, может кто-то помочь и написать код? Буду ОЧЕНЬ благодарен.
Задание:
среди элементов матрицы, которые находятся выше главной диагонали, найти произведение парных элементов.
70velebi вне форума Ответить с цитированием
Старый 03.11.2016, 19:52   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А ну, для начала нарисуй на картинке: "как решать задачу".

16.jpg


Сколько столбцов/строк в матрице? Где главная диагональ? Какие пары искать? Что с ними делать?

Последний раз редактировалось ura_111; 03.11.2016 в 19:55.
ura_111 вне форума Ответить с цитированием
Старый 03.11.2016, 20:52   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Способа оптимальней не придумал...

спасибо=весы

Код:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{

    cout<< "INPUT RAZMERNOST MATRIX: ";
    int razmer=0;
    long long proizved=1;// объявление переменной производения и размерности
  
    cin>>razmer;// ввод размера
    cout<<endl;// пустая строчка


    int matrix[razmer][razmer]; // объявление матрицы введенной размерности


    for (int i=0;i<razmer;i++)  //рандомное формирование элементов матрицы, вывод элемента
    {
        for (int j=0;j<razmer;j++)
        {
            matrix[i][j]=rand()%150-100;
            cout <<matrix[i][j]<<"\t";// вывод и табуляция
        }
        cout<<endl<<endl;
    }


    // объявление одномерного массива размерности
    // (не стал заморачиваться с массивом, где длину можно не указывать)

    int array[(razmer*razmer)],k=0;

    cout<<endl<<"Elements, vishe glavn doagon: "<<endl;

    for (int i=0;i<razmer;i++)
        for (int j=0;j<razmer;j++)
            if (i<j)
            {
                array[k]=matrix[i][j];// заполняем одномерный массив элементами
                // выше главной диагонали
                k++;
            }

    for (int i=0;i<k;i++) cout<<i+1<<". "<<array[i]<<endl; // выводим элементы
    //выводим общее количество выше главной диагонали

    cout<<endl<<"Vsego elementov: "<<k<<endl;

    bool ok=false;

    for (int i=1;i<k;i++)
        if (array[i]==array[i-1])
        {
            ok=true;
            proizved*=array[i]*array[i-1];
        }

    ok?
    (cout<<"Proizved: "<<proizved):    (cout<<"Parn is not search...");

    cout<<endl<<"DONE!";


    return 1;
}
Матрица размерностью 500 на 500 заполнялась и рассчитывалось все долго...в течении минут 3-х, но работать - работает, может у кого есть способы лучше?
from dark to light)

Последний раз редактировалось Алексей_2012; 03.11.2016 в 21:01.
Алексей_2012 вне форума Ответить с цитированием
Старый 03.11.2016, 21:12   #4
70velebi
 
Регистрация: 03.11.2016
Сообщений: 6
По умолчанию

Это и весь текст задание, нужно по-идее вбивать размер матрицы и программа считает произведение парных членов выше главной диагонали
70velebi вне форума Ответить с цитированием
Старый 03.11.2016, 22:38   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Слово "парный" с украинского переводится как "чётный". такие образом, искать надо произведение чётных элементов.
Вадим Мошев вне форума Ответить с цитированием
Старый 04.11.2016, 01:35   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Автор не указал формулировку парных элементов. Вдруг на китайском - парные - это делящиеся на 3 без остатка...мыжнетелепаты
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 04.11.2016, 11:25   #7
70velebi
 
Регистрация: 03.11.2016
Сообщений: 6
По умолчанию

Парные - чётные
70velebi вне форума Ответить с цитированием
Старый 06.11.2016, 01:51   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
#include <iostream>
#include <math.h>

using namespace std;

int main()
{

    cout<< "INPUT RAZMERNOST MATRIX: ";
    int razmer=0;  
    cin>>razmer;// ввод размера
    cout<<endl;// пустая строчка

    int matrix[razmer][razmer]; // объявление матрицы введенной размерности

    for (int i=0;i<razmer;i++)  //рандомное формирование элементов матрицы, вывод элемента
    {
        for (int j=0;j<razmer;j++)
        {
            matrix[i][j]=rand()%1500-750;
            cout <<matrix[i][j]<<"\t";// вывод и табуляция
        }
        cout<<endl<<endl;
    }

    long long proizved=1;// объявление переменной производения и размерности
    int count_chet=0;

    cout<<"Chetnie elements (spisok): "<<endl;

     for (int i=0;i<razmer;i++)
        for (int j=0;j<razmer;j++)
            if ((i<j)&&matrix[i][j]%2==0) //если элемент выше главной диагонали
                // и при делении на 2 в остатке 0, то
            {               
                count_chet++; // увеличиваем на 1 количество четных элементов
                proizved*=matrix[i][j];//умножаем на содержимое элемента
                cout<<count_chet<<". "<<matrix[i][j]<<endl;
            }


    cout<<endl<<"Vsego elementov: "<<count_chet<<endl<<"Proizvedenie: "<<proizved;
    cout<<endl<<"DONE!";


    return 1;
}
спасибо==весы)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 06.11.2016, 01:54   #9
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Если произведение больше чем long long, то используйте длинную арифметику для вывода.
from dark to light)

Последний раз редактировалось Алексей_2012; 06.11.2016 в 01:57.
Алексей_2012 вне форума Ответить с цитированием
Старый 07.11.2016, 15:09   #10
70velebi
 
Регистрация: 03.11.2016
Сообщений: 6
По умолчанию

Спасибо большое))
70velebi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с заданием на рекурсию. Не получается выполнить. kipairs Паскаль, Turbo Pascal, PascalABC.NET 1 08.12.2015 18:22
Нужна помощь с заданием по выводу Постраничной навигации Svyatoslav359 PHP 1 19.11.2015 15:39
Нужна помощь с заданием по выводу Постраничной навигации Svyatoslav359 Помощь студентам 0 19.11.2015 13:02
HTML, Javascript нужна помощь с заданием nastjamihneva JavaScript, Ajax 1 04.04.2014 20:51
несколько вопросов к тексту прогаммы. нужна помощь с заданием Evgenii Помощь студентам 1 23.12.2008 20:02