Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ricardo99

Matriz não funciona

Recommended Posts

Bom tenho de multiplicar o valor de uma matriz por um escalar a minha escolha, ate ai tudo certo só que usando função void não funciona.

#include<stdio.h>
#define maxl 3
#define maxc 3
void criar_matriz(){
   int matriz[maxl][maxc];
   int i=0,j=0;
   for(i=0;i<maxl;i++){
       for(j=0;j<maxc;j++){
           matriz[i][j]=i+j;
       }
   }
}
void multiplicar_matriz(){
   int matriz[maxl][maxc];
   int i=0,j=0;
   for(i=0;i<maxl;i++){
       for(j=0;j<maxc;j++){
           matriz[i][j]=matriz[i][j]*2;
       }
   }
}
void imprimir_matriz(){
   int i=0,j=0;
   for(i=0;i<maxl;i++){
       for(j=0;j<maxc;j++){
           printf("%i  ",matriz[i][j]);
       }
       printf("\n");
   }
}
int main(){
   criar_matriz();
   multiplicar_matriz();
   imprimir_matriz();
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você percebeu que declarou as mesmas variáveis em todas as funções?

Posso estar errado (sou iniciante), mas você declarando uma variável dentro de uma função, ela será LOCAL e só usada naquela função e não no programa todo. O erro que estava retornando era "que a variável matriz dentro da função imprimir_matriz não havia sido declarada", porém ela foi, dentro de outra função.

 

É recomendável declará-las logo abaixo das bibliotecas, tornando-as variáveis globais (usadas no programa inteiro).

 

#include<stdio.h>
#define maxl 3
#define maxc 3

int matriz[maxl][maxc], i, j;

 

E, todas essas funções vão retornar algo para ser usada na função seguinte. Com o void, você está dizendo que aquela função não irá retornar nenhum valor.

 

#include <stdio.h>
#include <stdlib.h>

#define maxl 3
#define maxc 3

int matriz[maxl][maxc], i, j;

int criar_matriz(){
   for(i=0;i<maxl;i++){
       for(j=0;j<maxc;j++){
           matriz[i][j]=i+j;
       }
   }
}
int multiplicar_matriz(){
   for(i=0;i<maxl;i++){
       for(j=0;j<maxc;j++){
           matriz[i][j]=matriz[i][j]*2;
       }
   }
}

int imprimir_matriz(){
   for(i=0;i<maxl;i++){
       for(j=0;j<maxc;j++){
           printf("%i  ", matriz[i][j]);
       }
       printf("\n");
   }
}
int main(){
   criar_matriz();
   multiplicar_matriz();
   imprimir_matriz();
   system("PAUSE");
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por me ajudar mas uma das restrições na construção deste código é que não poderia se criar variáveis globais(o que tornaria bem mas fácil) mesmo assim obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então você vai precisar trabalhar com ponteiros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.