Utilizando matrizes
Publicado por Marcos (última atualização em 28/08/2012)
[ Hits: 3.906 ]
Este script tem a intenção de servir como material de apoio para iniciantes (assim com eu), tentei fazer da forma mais clara possível.
Uma matriz é vista como um vetor, a diferença é que fica "claro" que o compilador precisará fazer alguns "saltos" que é indicado pelo campo colunas na declaração ou na chamada da função. Neste código fica nítido que na implementação de todas as funções, na variável matriz eu omiti o valor do campo referente as linhas, visto que conforme explicado anteriormente este valor será simplesmente ignorado pelo compilador, uma vez que ele se preocupa apenas com a quantidade de saltos precisará fazer.
Espero que seja útil.
Sugestões são sempre bem-vindas!
/*programa carrega uma matriz de no máximo 15x18 e efetue a soma, multiplicação e impressão desses valores.
relembrando: matrizes e vetores são sempre passados por referencia*/
#include <stdlib.h>
#include <stdio.h>
//utilizando protótipos das funções
void carregaMatriz(int matriz[][18],int linhas, int colunas);//responsável por carregar a matriz
void somaMatriz(int matriz[][18],int matriz2[][18],int adicao[][18],int linhas,int colunas);//responsável pela soma entre matrizes
void multiplicaMatriz(int matriz[][18],int multiplica[][18],int x, int linhas, int colunas);//multiplica 1ª matriz por um fator informando pelo usuario
void imprimeMatriz(int matriz[][18],int linhas, int colunas);//mostra os resultados na tela
int main(){
int x,linhas,colunas,matriz[15][18],matriz2[15][18],adicao[15][18],multiplica[15][18];
printf("Informe a qtde de linhas da matriz: ");
scanf("%d",&linhas);
while(linhas>15){
printf("\nNumero de linhas invalido...");
printf("\n\nInforme a qtde de linhas da matriz: ");
scanf("%d",&linhas);
}
printf("Informe a qtde de colunas da matriz: ");
scanf("%d",&colunas);
while(colunas>18){
printf("\nNumero de colunas invalido...");
printf("\n\nInforme a qtde de colunas da matriz: ");
scanf("%d",&colunas);
}
printf("\n\nCarregando valores da primeira matriz: \n");
carregaMatriz(matriz,linhas,colunas);
printf("\n\nCarregando valores da segunda matriz: \n");
carregaMatriz(matriz2,linhas,colunas);
printf("\n\nInforme o fator de multiplicacao: ");
scanf("%d",&x);
somaMatriz(matriz,matriz2,adicao,linhas,colunas);
multiplicaMatriz(matriz,multiplica,x,linhas,colunas);
printf("\n\n\nResultado da soma: \n");
imprimeMatriz(adicao,linhas,colunas);
printf("\n\n\nResultado da multiplicacao: \n");
imprimeMatriz(multiplica,linhas,colunas);
printf("\n\n");
system("pause");
return 0;
}
void carregaMatriz(int matriz[][18],int linhas, int colunas){
for(int i=0;i<linhas;i++){
for(int j=0;j<colunas;j++){
printf("Informe um valor para linha: %d x coluna: %d = ",i,j);
scanf("%d",&matriz[i][j]);
}
}
}
void somaMatriz(int matriz[][18],int matriz2[][18],int adicao[][18],int linhas,int colunas){
for(int i=0;i<linhas;i++){
for(int j=0;j<colunas;j++)
adicao[i][j]=matriz[i][j]+matriz2[i][j];
}
}
void multiplicaMatriz(int matriz[][18],int multiplica[][18],int x, int linhas, int colunas){
for(int i=0;i<linhas;i++){
for(int j=0;j<colunas;j++)
multiplica[i][j]=x*matriz[i][j];
}
}
void imprimeMatriz(int matriz[][18],int linhas, int colunas){
for(int i=0;i<linhas;i++){
for(int j=0;j<colunas;j++)
printf("\nLinha: %d -- Coluna: %d = %d",i,j,matriz[i][j]);
}
}
Trabalhando com argumentos e ponteiros
Usando dois contadores em uma estrutura de repetição simples
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
VOL já não é mais como antes? (9)
É normal não gostar de KDE? (13)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









