VegasColt 0 Denunciar post Postado Outubro 29, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 29, 2009 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
VegasColt 0 Denunciar post Postado Outubro 29, 2009 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
quitZAUMMM 18 Denunciar post Postado Outubro 30, 2009 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
VegasColt 0 Denunciar post Postado Outubro 30, 2009 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
VictorCacciari 42 Denunciar post Postado Outubro 31, 2009 Pesquise sobre alocação dinâmica e ponteiros. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 31, 2009 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
VegasColt 0 Denunciar post Postado Outubro 31, 2009 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