Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Tramplin
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 6
1

В матрице поделить каждую строку на диагональный элемент

05.04.2015, 14:05. Просмотров 290. Ответов 1
Метки нет (Все метки)

Есть квадратная матрица, нужно в ней поделить каждую строку на диагональный элемент. Далее я приведу два куска кода, которые по сути должны делать одно и тоже, первый вариант кода обрабатывает все правильно, а второй нет, вот почему?

Первый вариант, тут мы диагональный элемент помещаем в переменную.
C
1
2
3
4
5
6
7
8
for (int i=0; i<N; i++)
    {   
        Temp=A[i][i];           
        for (int j=0; j<N; j++)
            {
                A[i][j] /= Temp;
            }
    }
Второй вариант, при прохождении k-ой строки, A[i][i] всегда будет один и тот же, смысла сохранять значение A[i][i] в какую-либо переменную нет, но, как странно, такой вариант не работает, не подскажете почему?
C
1
2
3
4
5
6
7
for (int i=0; i<N; i++)
    {               
        for (int j=0; j<N; j++)
            {
                A[i][j] /= A[i][i];
            }
    }
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdlib.h>
#include <stdio.h>
 
int main()
    {       
        float **A;
        int N=0;
        
        printf("Введите размер матрицы \n");
        scanf("%d", &N);   printf("\n");
        
        A = (float **) malloc (N*sizeof(float *));
        
        for (int i=0; i<N; i++)
            {
                A[i]=(float *) malloc (N*sizeof(float));
            }
        
        for (int i=0; i<N; i++)
            {
                for (int j=0; j<N; j++)
                    {
                        scanf("%f", &A[i][j]);
                    }
            }
        
        for (int i=0; i<N; i++)
            {               
                for (int j=0; j<N; j++)
                    {
                        A[i][j] /= A[i][i];
                    }
            }
        
        for (int i=0; i<N; i++)
            {
                for (int j=0; j<N; j++)
                    {
                        printf("%2.2f ", A[i][j]);
                    }
                printf("\n");
            }
        
        
        return EXIT_SUCCESS;
    }
Добавлено через 43 минуты
Все, я идиот, у меня же A[i][i] изменится в процессе деления, тред можно закрыть.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2015, 14:05
Ответы с готовыми решениями:

Поменять в матрице местами строку с максимальным элементом и строку, содержащую min элемент
// 1=Указатели. Поменять местами строки.cpp : Defines the entry point for the console application....

В матрице поменять местами строку, содержащую минимальный элемент, со строкой, содержащей максимальный элемент массива
Помогите пожалуйста поправить код... Задание:В двумерном N*K массиве целых чисел поменять местами...

Матрица. Поменять наибольший элемент и диагональный элемент.
Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его...

Разделить каждую строку квадратной матрицы на диагональный элемент этой строки
Разделить каждую строку квадратной матрицы на диагональный элемент этой строки.

Разделить каждую строку квадратной матрицы на диагональный элемент этой строки
Разделить каждую строку квадратной матрицы на диагональный элемент этой строки.

1
Байт
Эксперт C
20048 / 12669 / 2663
Регистрация: 24.12.2010
Сообщений: 26,385
05.04.2015, 14:50 2
Цитата Сообщение от Tramplin Посмотреть сообщение
но, как странно, такой вариант не работает, не подскажете почему?
Просто, на месте A[i][i], когда вы до нее дойдете, окажется 1. И все дальнейшие A[i][j] (j > i) будут делиться на эту единицу

Добавлено через 1 минуту
Цитата Сообщение от Tramplin Посмотреть сообщение
Все, я идиот, у меня же A[i][i] изменится в процессе деления, тред можно закрыть.
Ну вот и славно. Вы это поняли раньше, чем я успел написать.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2015, 14:50

двумерные массивы:В матрице X(m,m) найти максимальный диагональный элемент и вывести всю строку, в которой он расположен.
двумерные массивы:В матрице X(m,m) найти максимальный диагональный элемент и вывести всю строку,...

В матрице каждую строку разделить на минимальный элемент этой строки
В матрице a (mxn) каждую строку разделить натминимальный элемент этой строки

В матрице Z (n, n) каждый элемент разделить на диагональный
В матрице Z(n,n) каждый элемент разделить на диагональный,стоящий в том же столбце.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru