Bom dia Galera do C PROGRESSIVO !!!
Galera, tô com a seguinte dúvida:
Vi em algumas publicações do C PROGRESSIVO que uma função que recebe como argumento uma matriz deverá ser escrita da seguinte forma, ex: int MudaMatriz(int mat[][tam], int i, int j){
//instrução
}
segue o código do C progressivo: #include <stdio.h>
#define DIM 3
// Curso C Progressivo:
// O melhor curso de C! Online e gratuito !
// Artigos, apostilas, tutoriais e vídeo-aulas sobre
// a linguagem de programação C !
void recebe(int original[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
for(coluna = 0 ; coluna < DIM ; coluna++)
{
printf("Digite o elemento [%d][%d]: ", linha+1, coluna+1);
scanf("%d", &original[linha][coluna]);
}
}
void copiar(int copiado[][DIM], int original[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
for(coluna = 0 ; coluna < DIM ; coluna++)
copiado[linha][coluna] = original[linha][coluna];
}
void dobrar(int dobrado[][DIM], int original[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
for(coluna = 0 ; coluna < DIM ; coluna++)
dobrado[linha][coluna] = 2 * original[linha][coluna];
}
void exibir(int matriz[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
{
for(coluna = 0 ; coluna < DIM ; coluna++)
printf("%3d ", matriz[linha][coluna]);
printf("\n");
}
}
int main(void)
{
int original[DIM][DIM],
copia[DIM][DIM],
dobrado[DIM][DIM];
recebe(original);
copiar(copia, original);
dobrar(dobrado, original);
printf("Vetor original: \n");
exibir(original);
printf("\nVetor copiado : \n");
exibir(copia);
printf("\nVetor dobrado : \n");
exibir(dobrado);
return 0;
}
Entendi perfeitamente o Código, porem surgiu a seguinte dúvida: No código do c progressivo, é criado uma constante "dim" que é "vista" pelas funções e pelo main. (acredito ser uma variavel global, não sei rs). Queria saber se há a possibilidade de passar uma matriz para uma função, de modo que não seja necessário criar uma const, ou um #include. Porque eu tô perguntando isso? Por exemplo eu crie um programa que seja solicitado o usuário a dimensionar a matriz, ai ele determina que a matriz tenha uma dimensão 3x3, a variavel que receberá as dimensões é uma variável local (vista apenas dentro do main), como que eu colocaria a dimensão dentro da função (void RecebeFunção (int mat[][???])) Entenderam?
Att Thiago
Desde já agradeço!!
aguardo!
Galera, tô com a seguinte dúvida:
Vi em algumas publicações do C PROGRESSIVO que uma função que recebe como argumento uma matriz deverá ser escrita da seguinte forma, ex: int MudaMatriz(int mat[][tam], int i, int j){
//instrução
}
segue o código do C progressivo: #include <stdio.h>
#define DIM 3
// Curso C Progressivo:
// O melhor curso de C! Online e gratuito !
// Artigos, apostilas, tutoriais e vídeo-aulas sobre
// a linguagem de programação C !
void recebe(int original[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
for(coluna = 0 ; coluna < DIM ; coluna++)
{
printf("Digite o elemento [%d][%d]: ", linha+1, coluna+1);
scanf("%d", &original[linha][coluna]);
}
}
void copiar(int copiado[][DIM], int original[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
for(coluna = 0 ; coluna < DIM ; coluna++)
copiado[linha][coluna] = original[linha][coluna];
}
void dobrar(int dobrado[][DIM], int original[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
for(coluna = 0 ; coluna < DIM ; coluna++)
dobrado[linha][coluna] = 2 * original[linha][coluna];
}
void exibir(int matriz[][DIM])
{
int linha,
coluna;
for(linha = 0 ; linha < DIM ; linha++)
{
for(coluna = 0 ; coluna < DIM ; coluna++)
printf("%3d ", matriz[linha][coluna]);
printf("\n");
}
}
int main(void)
{
int original[DIM][DIM],
copia[DIM][DIM],
dobrado[DIM][DIM];
recebe(original);
copiar(copia, original);
dobrar(dobrado, original);
printf("Vetor original: \n");
exibir(original);
printf("\nVetor copiado : \n");
exibir(copia);
printf("\nVetor dobrado : \n");
exibir(dobrado);
return 0;
}
Entendi perfeitamente o Código, porem surgiu a seguinte dúvida: No código do c progressivo, é criado uma constante "dim" que é "vista" pelas funções e pelo main. (acredito ser uma variavel global, não sei rs). Queria saber se há a possibilidade de passar uma matriz para uma função, de modo que não seja necessário criar uma const, ou um #include. Porque eu tô perguntando isso? Por exemplo eu crie um programa que seja solicitado o usuário a dimensionar a matriz, ai ele determina que a matriz tenha uma dimensão 3x3, a variavel que receberá as dimensões é uma variável local (vista apenas dentro do main), como que eu colocaria a dimensão dentro da função (void RecebeFunção (int mat[][???])) Entenderam?
Att Thiago
Desde já agradeço!!
aguardo!