Utilizando matrizes
Publicado por Marcos (última atualização em 28/08/2012)
[ Hits: 3.951 ]
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]);
}
}
Realizando exponenciação interativa
Parte 7 (Pesquisa) - Sessão de estudo sobre MATRIZES.
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como quebrar senha usando john the ripper
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Alguém já testou o novo COSMIC Desktop? O que achou? (2)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (0)
Não consigo instalar distro antiga no virtualbox nem direto no hd (15)









