Ir para conteúdo

POWERED BY:

Arquivado

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

VegasColt

Matriz e Função

Recommended Posts

boa tarde a todos

 

eu tou com problema

 

eu tenho q pegar uma matriz 3x3, e multiplica-la seus valores por 3 e gerar a nova matriz eu programei assim

 

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

int calc(int matA)
{                    
int i,j;                      
int matB[3][3];                      
                    
for(i=0;i<3;i++)
  for(j=0;j<3;j++)
  {
    matB[i][j]=3*matA[i][j];
                    
  }
return(matB[i][j]);
}

int main()
{
printf("\t  _______________________________________\n");
printf("\t |      Programa Basico de Funcao        |\n");
printf("\t |_______________________________________|\n");    
    
  
  
  //declaração de valores
    int cont=0;
    int matA[3][3],matB[3][3],i,j;
    
    //leitura do primeiro vetor para função
    
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
        printf("Por Favor Digite o numero da %d linha %d coluna numero \t", i+1,j+1);
        scanf("%d",&matA[i][j]);
        }
        printf("\n");
        
          //Imprimindo
                                    printf("Matriz Digitada");
                                    printf("\n");
                                  for(i=0;i<3;i++)
                                     for(j=0;j<3;j++)
                                    {
                                    printf("%2d \t ",matA[i][j]);
                                    if(cont==2)
                                    {
                                    printf("\n");
                                    cont=0;
                                    continue;
                                    }
                                    cont++;
                                    }
                                    printf("\n");
                                    printf("\n");
        
     
        
        matB[i][j]=calc(matA[i][j]);


        //Imprimindo 
                                  printf("Matriz Resultado");
                                  printf("\n");
                                  for(i=0;i<3;i++)
                                     for(j=0;j<3;j++)
                                    {
                                    printf("%2d \t ",matB[i][j]);
                                    if(cont==2)
                                    {
                                    printf("\n");
                                    cont=0;
                                    continue;
                                    }
                                    cont++;
                                    }
                                     
printf("\n");                                                  
system("pause");
return(0);

}    
o codigo executa so q tipo na matriz resultado da um erro

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom sua função ta retornando um unico int..

 

Vamos fazer com uma variavel global, ficará simples:

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

int matB[3][3];

void calc(int matA[3][3]){
    int i,j;
    for(i=0;i<3;i++) for(j=0;j<3;j++) matB[i][j]=3*matA[i][j];
}

int main(){
.
.
    calc(matA);
.
.
}

ou

 

int** calc(int matA[3][3]){
    int i,j;
    int **matB = (int **)malloc(3*sizeof(int *));
    for (i=0;i<3;i++) matB[i] = (int *)malloc(3*sizeof(int));
    for(i=0;i<3;i++) for(j=0;j<3;j++) matB[i][j]=3*matA[i][j];
    return matB;
}

e na main fazer um **int receber a função!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom sua função ta retornando um unico int..

 

Vamos fazer com uma variavel global, ficará simples:

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

int matB[3][3];

void calc(int matA[3][3]){
    int i,j;
    for(i=0;i<3;i++) for(j=0;j<3;j++) matB[i][j]=3*matA[i][j];
}

int main(){
.
.
    calc(matA);
.
.
}

ou

 

int** calc(int matA[3][3]){
    int i,j;
    int **matB = (int **)malloc(3*sizeof(int *));
    for (i=0;i<3;i++) matB[i] = (int *)malloc(3*sizeof(int));
    for(i=0;i<3;i++) for(j=0;j<3;j++) matB[i][j]=3*matA[i][j];
    return matB;
}

e na main fazer um **int receber a função!

 

[]s

 

nao consegui entender?

 

tem como me explicar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oq n entendeu direito?

acho melhor você tentar implementar oq te disse, e ai sim vai ficar claro suas duvidas ok?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oq n entendeu direito?

acho melhor você tentar implementar oq te disse, e ai sim vai ficar claro suas duvidas ok?

 

[]s

 

tipo eu tentei aplicar as primeira forma

 

int matB[3][3];

void calc(int matA[3][3]){
    int i,j;
    for(i=0;i<3;i++) for(j=0;j<3;j++) matB[i][j]=3*matA[i][j];
}


int main()
{
printf("\t  _______________________________________\n");
printf("\t |      Programa Basico de Funcao        |\n");
printf("\t |_______________________________________|\n");    
    
  
  
  //declaração de valores
    int cont=0;
    int matA[3][3],matB[3][3],i,j;
    
    //leitura do primeiro vetor para função
    
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
        printf("Por Favor Digite o numero da %d linha %d coluna numero \t", i+1,j+1);
        scanf("%d",&matA[i][j]);
        }
        printf("\n");
        
          //Imprimindo Imagem da Função
                                    printf("Matriz Imagem");
                                    printf("\n");
                                  for(i=0;i<3;i++)
                                     for(j=0;j<3;j++)
                                    {
                                    printf("%2d \t ",matA[i][j]);
                                    if(cont==2)
                                    {
                                    printf("\n");
                                    cont=0;
                                    continue;
                                    }
                                    cont++;
                                    }
                                    printf("\n");
                                    printf("\n");
        
        //Transferindo valores do Dominio para Imagens
        
        calc(matA);


        //Imprimindo Dominio da Função
                                  printf("Matriz Dominio");
                                  printf("\n");
                                  for(i=0;i<3;i++)
                                     for(j=0;j<3;j++)
                                    {
                                    printf("%2d \t ",matB[i][j]);
                                    if(cont==2)
                                    {
                                    printf("\n");
                                    cont=0;
                                    continue;
                                    }
                                    cont++;
                                    }
                                     
printf("\n");                                                  
system("pause");
return(0);

}    

o programa continuou a mesma coisa apresentando o mesmo erro

 

e a segunda forma eu nao entendi isso de

 

int** calc(int matA[3][3]){

int i,j;

int **matB = (int **)malloc(3*sizeof(int *));

for (i=0;i<3;i++) matB = (int *)malloc(3*sizeof(int));

for(i=0;i<3;i++) for(j=0;j<3;j++) matB[j]=3*matA[j];

return matB;

}

 

isso q ta em negrito e q nao to entendendo o motivo disso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lógico q o resultado n vai ser o esperado, você declara uma variavel global, e depois dentro da main() você declara a variavel com o msm nome.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lógico q o resultado n vai ser o esperado, você declara uma variavel global, e depois dentro da main() você declara a variavel com o msm nome.

 

[]s

 

entendi....

 

vou resolver isso...

 

e vitor,ja to dando uma olhada nisso

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.