deco86 0 Denunciar post Postado Junho 13, 2008 olá pessoal tenho q fazer uma lista de exercicos mais nao sei por onde começar!!! se vcs puderem me ajudar fazendo esse pra eu ter um ideia FAÇA UMA FUNÇAO QUE RECEBA POR PARAMETRO ,DUAS MATRIZES A(4,6) E B(6,4) E RETORNAR UMA MATRIZ C, TAMBÉM POR PARAMETRO QUE SEJA A DIFERENÇA DE M E N . DESDE JA AGRADEÇO A FORÇA!!! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 13, 2008 bom retornar a matriz por parametro naum sei como é naum + pra passar da pra fazer assim: int mat(int mat1[][], int mat2[][]){ . . []'s Compartilhar este post Link para o post Compartilhar em outros sites
Myho 2 Denunciar post Postado Junho 16, 2008 Na verdade qualquer valor q se passe para uma funcao eh um parametro, entao toda passagem eh "por parametro", q entao pode ser por valor ou por referencia. E ateh onde eu sei nao eh possivel retornar um vetor, nem matriz diretamente. De forma indireta soh retornando um ponteiro, ou entao uma estrutura contendo a matriz. Compartilhar este post Link para o post Compartilhar em outros sites
deco86 0 Denunciar post Postado Junho 16, 2008 eu tentei mais nao ta rodando olha ai o q eu fiz... #include<stdio.h> #include<stdlib.h> void funcaosomadevetores (int v1[4],int v2[4],int *p); main() { int vetor[4],vetor2[4],vetortotal[4],cont; printf("\n\n\tDigite os dados do primeiro vetor: "); printf("\n\n\t----------------------------------- "); for(cont=0;cont<4;cont++) { printf("\n\n\tvetor[%d]= ",cont+1); scanf("%d",&vetor[cont]); } printf("\n\n\tDigite os dados do segundo vetor: "); printf("\n\n\t----------------------------------- "); for(cont=0;cont<4;cont++) { printf("\n\n\tvetor2[%d]= ",cont+1); scanf("%d",&vetor2[cont]); } funcaosomadevetores(vetor,vetor2,&vetortotal[0]); printf("\n\n\t\tvetor soma resultado eh "); for(cont=0;cont<4;cont++) { printf("vetortotal[%d]=%d",cont+1,vetortotal[cont]); } printf("\n\n\n\n"); system("pause"); } void funcaosomadevetores ( int v1[4], int v2[4], int *p) { int i; for(i=0;i,4;i++) { *(p+i)=v1[i]+v2[i]; } } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 16, 2008 naum tenho como compilar agora + pq passow o terceiro parametro assim: ...,&vetortotal[0]); []'s Compartilhar este post Link para o post Compartilhar em outros sites
deco86 0 Denunciar post Postado Junho 16, 2008 me deculpa é q eu passei o programa errado!!! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 16, 2008 !oK! []'s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 16, 2008 E ateh onde eu sei nao eh possivel retornar um vetor, nem matriz diretamente. De forma indireta soh retornando um ponteiro, ou entao uma estrutura contendo a matriz. Jogue fora a palavra vetor. O caso de int * é um pouco mais complicado porque não se tem delimitador, mas na memória tudo é uma seqüência e você só precisa saber o endereço de início e o tamanho. char * vet(){ static char V[] = "teste array"; return V; } int main(void) { char *T; T = vet(); printf("%s\n",T); } Breakpoint 1, vet () at vet.c:6 6 return V; (gdb) display &V 1: &V = (char (*)[12]) 0x8049628 (gdb) display V 2: V = "teste array" (gdb) display &V[0] 3: &V[0] = 0x8049628 "teste array" Breakpoint 2, main () at vet.c:14 14 printf("%s\n",T); 3: &V[0] = 0x8049628 "teste array" 2: V = "teste array" 1: &V = (char (*)[12]) 0x8049628 (gdb) display T 4: T = 0x8049628 "teste array" você continua trabalhando com array mesmo sem a sintaxe da linguagem permitir char []. O problema todo nessa história é que quando se ensina array não se diferencia a sintaxe que mexe na memória do dado em si. Na declaração já se reserva um endereço de memória. O tipo e o que vem entre colchetes serve só pra dimensionar (eg: char v[1] = char v). Compartilhar este post Link para o post Compartilhar em outros sites