Faça uma função que receba como parâmetro uma matriz
e multiplique cada linha pelo elemento da diagonal principal daquela linha. A função deverá retornar a matriz alterada, utilizando passagem por referência, e exibida pela função principal.
Passo 1
Resumindo: precisamos criar uma função em C que receba uma matriz 10×10 e, para cada linha i, multiplique todos os elementos dessa linha pelo elemento A[i][i], ou seja, o da diagonal principal. O tema aqui é passagem de matriz por referência (já que arrays em C são acessados via ponteiro), estruturas de repetição e funções.
Passo 2
A assinatura da função pode ser algo como:
void multiplicaLinhas(int A[10][10]);
Isso indica que A é uma matriz 10×10 de inteiros e será modificada dentro da função.
void multiplicaLinhas(int A[10][10]);
Isso indica que A é uma matriz 10×10 de inteiros e será modificada dentro da função.
Passo 3
Dentro de multiplicaLinhas, vamos usar dois loops for aninhados. No primeiro, i de 0 a 9, pegamos o valor da diagonal diag = A[i][i]. No segundo, j de 0 a 9, fazemos A[i][j] *= diag. Isso multiplica cada elemento da linha i pelo seu respectivo elemento diagonal.
Passo 4
Como em C o nome de um array passado a uma função é tratado como ponteiro, qualquer alteração em A dentro de multiplicaLinhas afeta a matriz original em main. Dessa forma não precisamos retornar nada: a modificação já é “por referência.”
Passo 5
Em main, declaramos a matriz A[10][10], preenchemos (por scanf ou atribuição), chamamos multiplicaLinhas(A) e depois exibimos A linha a linha com printf.
Resposta
#include <stdio.h>
#define N 10
#define N 10
void multiplicaLinhas(int A[N][N]) {
for (int i = 0; i < N; i++) {
int diag = A[i][i];
for (int j = 0; j < N; j++) {
A[i][j] *= diag;
}
}
}
for (int i = 0; i < N; i++) {
int diag = A[i][i];
for (int j = 0; j < N; j++) {
A[i][j] *= diag;
}
}
}
int main() {
int A[N][N];
printf(“Digite os elementos da matriz 10x10:\n”);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
scanf("%d", &A[i][j]);
}
}
int A[N][N];
printf(“Digite os elementos da matriz 10x10:\n”);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
scanf("%d", &A[i][j]);
}
}
multiplicaLinhas(A);
printf("Matriz após multiplicar cada linha pelo elemento da diagonal principal de cada linha:\n");
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", A[i][j]);
}
printf("\n");
}
return 0;
}