Форум программистов, компьютерный форум, киберфорум
Наши страницы
Kostja678
Войти
Регистрация
Восстановить пароль
Рейтинг: 2.33. Голосов: 3.

Ребята , помогите с задачей по циклам в с++.

Запись от Kostja678 размещена 11.01.2020 в 22:36

Дана матрица А размерностью 8 на 7. Необходимо разделить каждый элемент столбца на элемент этого же столбца, который находится на главной диагонали. Только следует сделать ещё проверку , что элемент главной диагонали не равен нулю.
Пытался , но что-то плохо выходит.
Размещено в Без категории
Просмотров 209 Комментарии 6
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Аватар для Hyppoprogramm
    Прекрасный блог! Читать очень интересно!
    Запись от Hyppoprogramm размещена 12.01.2020 в 20:04 Hyppoprogramm вне форума
  2. Старый комментарий
    Если у кого-то будет такая задача то держите. Сам думал что-то долго. Самого кода там почти ничего, но я , к сожалению, не топ программист, чтобы любую задачу решать по щелчку пальцев , поэтому потратил часа 1.5.
    Кода можете вставить и проверить в компиляторе онлайн. На свой компилятор можете перекинуть и изменить только несколько строчек.
    Только для самых умных, кто заметил ошибку - шоколадка. В матрице можно найти все элементы главной диагонали только если она квадратная. А если не квадратная, то последнего элемента при прохождении цикла просто не существует. Поэтому из начальной матрицы 8 на 7. Может получится правильная матрица 7 на 7.
    #include <cstdlib>
    #include <iomanip>
    #include <ctime>
    #include <iostream>
    using namespace std;
    int main()
    {
    srand(time(NULL));
    double A[8][7], Q[7]; int i=0, j=0;
    cout<<"Вывожу матрицу "<<endl;
    for (i=0; i<8; i++)
    {
    for (j=0; j<7; j++)
    {
    A[i][j]=rand() % 5;
    cout<<A[i][j]<<" ";
    }
    Q[i]=A[i][i];
    cout<<endl;
    }
    cout<<"Вывожу главную диагональ"<<endl;
    for (i=0; i<7; i++) {cout<<Q[i]<<" "<<endl;}
    cout<<"Вывожу новую матрицу "<<endl;
    for (int j=0; j<8; j++)
    {
    for (i=0; i<7; i++)
    {
    if (Q[i]!=0)
    {
    A[j][i]=A[j][i]/Q[i];
    }
    cout << fixed << setprecision(2) << A[j][i] <<" ";
    }
    cout<<endl;
    }
    system("pause");
    return 0;
    }

    Вывожу матрицу
    2 0 0 2 3 0 2
    1 4 1 1 2 1 4
    1 3 1 1 1 2 0
    1 0 1 0 3 1 0
    2 4 1 1 1 2 0
    0 2 2 3 1 3 2
    1 1 1 2 4 2 3
    2 1 1 1 3 2 1
    Вывожу главную диагональ
    2
    4
    1
    0
    1
    3
    3
    Вывожу новую матрицу
    1.00 0.00 0.00 2.00 3.00 0.00 0.67
    0.50 1.00 1.00 1.00 2.00 0.33 1.33
    0.50 0.75 1.00 1.00 1.00 0.67 0.00
    0.50 0.00 1.00 0.00 3.00 0.33 0.00
    1.00 1.00 1.00 1.00 1.00 0.67 0.00
    0.00 0.50 2.00 3.00 1.00 1.00 0.67
    0.50 0.25 1.00 2.00 4.00 0.67 1.00
    1.00 0.25 1.00 1.00 3.00 0.67 0.33
    Запись от Kostja678 размещена 12.01.2020 в 20:27 Kostja678 вне форума
  3. Старый комментарий
    Условие вашей задачи не полно.
    1. если элемент на "главной" диагонали равен 0, то деление естественно не возможно.
    2. но в условии не сказано, что делать дальше. Возможны несколько вариантов
    2.1 деление не производить
    2.2 выдать текст "задача не имеет решения". В самом деле, ведь в условии требуется поделить КАЖДЫЙ элемент. А при нулевой элементе это означает, что задача Не разрешима.
    3. главную диагональ имеет только квадратная матрица. То есть условие задачи как минимум некорректно.
    Запись от wer1 размещена 13.01.2020 в 11:53 wer1 вне форума
  4. Старый комментарий
    Аватар для Croessmah
    Цитата:
    Сообщение от wer1 Просмотреть комментарий
    3. главную диагональ имеет только квадратная матрица.
    Прямоугольная матрица также имеет главную и побочную диагонали.
    Код:
    1 2 3
    4 5 6
    главная диагональ - 1, 5
    побочная диагональ - 4, 2
    Запись от Croessmah размещена 13.01.2020 в 20:17 Croessmah на форуме
  5. Старый комментарий
    Croessmah,
    возможно вы и правы. Мне встречались в основном только квадратные матрицы. Несомненно понятие главной диагонали можно обобщить и на прямоугольную матрицу. А вот что касается побочной диагонали, то тут могут быть два варианта...
    Запись от wer1 размещена 14.01.2020 в 09:24 wer1 вне форума
  6. Старый комментарий
    Аватар для Croessmah
    Цитата:
    Сообщение от wer1 Просмотреть комментарий
    А вот что касается побочной диагонали, то тут могут быть два варианта...
    Вроде бы, только один - из левого нижнего угла.
    Запись от Croessmah размещена 17.01.2020 в 15:24 Croessmah на форуме
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.