Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 1422
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1147
∙ повысить рейтинг »
Micren
Статус: Бакалавр
Рейтинг: 1051
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1424
Дата выхода:21.11.2009, 13:30
Администратор рассылки:Dr_Andrew, Старший модератор
Подписчиков / экспертов:676 / 182
Вопросов / ответов:1 / 2
IRC-канал по теме:#C

Вопрос № 174280: дана действительная матрица размера 18*n. Найти значение наибольшего по модулю елемента матрицы а также индексы какого-нибудь елемента с найденным значением модуля...



Вопрос № 174280:

дана действительная матрица размера 18*n. Найти значение наибольшего по модулю елемента матрицы а также индексы какого-нибудь елемента с найденным значением модуля

Отправлен: 16.11.2009, 13:03
Вопрос задал: Никита Жуйков Павлович, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Калеев Владимир Викторович, 6-й класс :
Здравствуйте, Никита Жуйков Павлович.
Решение на C.

Приложение:

Ответ отправил: Калеев Владимир Викторович, 6-й класс
Ответ отправлен: 16.11.2009, 14:40

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256595 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Micren, Бакалавр :
    Здравствуйте, Никита Жуйков Павлович.
    Программа. C++. Компилировалась для проверки gcc.

    Код:
    #include <iostream>
    #include <limits>
    #include <iomanip>
    #include <vector>
    #include <valarray>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    // Количество строк
    const size_t Rows=18;

    // Позиция в матрице
    class position
    {
    public:
    position(size_t row,size_t col)
    :_row(row)
    ,_col(col)
    {}
    size_t row() const {
    return _row;
    }
    size_t col() const {
    return _col;
    }
    private:
    size_t _row,_col;
    };

    // Используемые типы для матрицы и вектора позиций
    typedef valarray<valarray<double> > matrixType;
    typedef vector<position> positionsType;

    // Заполняет матрицу случайными числами
    void genMatrix(matrixType& matrix)
    {
    for(size_t i=0,iEnd=matrix.size();i<iEnd;++i)
    {
    for(size_t j=0,jEnd=matrix[i].size();j<jEnd;++j)
    {
    matrix[i][j]=rand()%51-25;
    cout<<setw(5)<<matrix[i][j]<<' ';
    }
    cout<<endl;
    }
    }

    // Ищет максимальный по модулю и позиции таковых
    double findMaxAbs(const matrixType& matrix,positionsType& positions)
    {
    positions.clear();
    double absMax=0.0;
    for(size_t i=0,iEnd=matrix.size();i<iEnd;++i)
    {
    for(size_t j=0,jEnd=matrix[i].size();j<jEnd;++j)
    {
    double item=abs(matrix[i][j]);
    if(item>absMax)
    {
    absMax=item;
    positions.clear();
    }
    if(item==absMax)
    {
    positions.push_back(position (i,j));
    }
    }
    }
    return absMax;
    }

    int main()
    {
    srand(static_cast<unsigned int>(time(0)));
    size_t Cols;
    // Вводим к-во столбцов
    while(true)
    {
    cout<<"Введите количество столбцов(n):";
    cin>>Cols;
    if(cin.fail())
    {
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
    cout<<"Ошибка ввода"<<endl;
    }
    else
    {
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
    if(Cols>0)
    {
    break;
    }
    else
    {
    cout<<"Ожидается целое положительное число"<<endl;
    }
    }
    }

    // Матрица
    matrixType matrix(valarray<double>(Cols),Rows);

    // Заполним матрицу
    genMatrix(matrix);

    positionsType positions;
    // Ищем согласно условия
    double absMax=findMaxAbs(matrix,positions);

    // Выводим результат
    cout<<"Максимальный по модулю элемент: "<<absMax<< ;endl
    <<"Позиции максимальных по модулю элементов:"<<endl
    <<setw(7)<<"Строка"<<' '<<setw(7)<<"Столбец"<<endl;
    for(positionsType::const_iterator it=positions.begin(),end=positions.end();it!=end;++it)
    {
    cout<<setw(7)<<it->row()<<' '<<setw(7)<<it->col()<<endl;
    }

    return 0;
    }

    Пример вывода:
    Код:
    ~/Projects/174280/Debug/src$ ./174280                                                                                                            
    Введите количество столбцов(n):5
    8 11 24 -4 -15
    7 14 22 17 0
    -7 -19 24 -5 -21
    16 12 -16 21 -5
    21 -8 -15 -17 1
    6 17 -7 -10 -18
    15 23 -7 13 19
    -23 19 7 24 -16
    -19 16 16 5 -14
    20 -5 -3 3 15
    17 -1 -18 -24 7
    -18 -18 23 25 -3
    4 14 20 -4 -25
    13 -2 20 19 -4
    3 25 -13 -7 -22
    23 13 23 -6 -10
    13 -15 14 -6 11
    20 -25 18 -9 25
    Максимальный по модулю элемент: 25
    Позиции максимальных по модулю элементов:
    Строка Столбец
    11 3
    12 4
    14 1
    17 1
    17 4

    Ответ отправил: Micren, Бакалавр
    Ответ отправлен: 16.11.2009, 23:17

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256606 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.11 от 17.11.2009

    В избранное