//void recorte(int *pOrig, int M, int fx, int fy, int m, int n, int l, int k); //Protótipo da função recorte.
int main(int argc, char *argv[])
{
int LINmtzORIG, COLmtzORIG;
int LINmtzREC, COLmtzREC;
int x, y;
LINmtzORIG = atoi(argv[1]);
COLmtzORIG = atoi(argv[2]);
x = atoi(argv[3]);
y = atoi(argv[4]);
LINmtzREC = atoi(argv[5]);
COLmtzREC = atoi(argv[6]);
int matrizORIG[LINmtzORIG][COLmtzORIG], *pMtzOrig = NULL;
int matrizREC[LINmtzREC][COLmtzREC], *pMtzRec = NULL;
int i, j, z;
if (LINmtzORIG < x+LINmtzREC || COLmtzORIG < y+COLmtzREC) //Teste para saber se a matriz recorte cabe dentro da matriz original.
{
printf("\nMatriz recorte não cabe dentro da matriz original!\n");
exit(1);
}
if ((!pMtzOrig)) //Teste para saber se há memória para alocar a matriz original.
{
printf("Sem memória!\n");
exit(1);
}
if ((!pMtzRec)) //Teste para saber se há memória para alocar a matriz recorte.
{
printf("Sem memória!\n");
exit(1);
}
srand(time(NULL)); //Semente para gerar a matriz de números aleatórios.
for (i = 0; i < LINmtzORIG * COLmtzORIG; i++) //Preenchimento da matriz original.
{
*(pMtzOrig + i) = rand() % RANDMAX;
}
printf("\nMATRIZ ORIGINAL:\n\n");
for (i = 0; i < LINmtzORIG; i++) //Impressão da matriz original.
{
for (j = 0; j < COLmtzORIG; j++)
{
printf("%d\t", *(pMtzOrig + i*COLmtzORIG + j));
}
printf("\n");
}
for (i = 0; i < LINmtzREC; i++) //impressão da matriz recorte. *
{
for (j = 0; j < COLmtzREC; j++)
{
printf("%d\t", *(pMtzRec + i*(COLmtzREC) + j));
}
printf("\n");
}
return 0;
}
/*void recorte(int *pOrig, int M, int fx, int fy, int m, int n, int l, int k) //Função para impressão da matriz recorte.
{
for (k = fx; k < fx+m; k++)
{
for (l = fy; l < fy+n; l++)
{
printf("%d\t", *(pOrig + k*(M) + l));//*(pRecorte + (k-fx) + (l-fy) + (k-fx)) = *(pOrig + k*(M) + l);
}
printf("\n");
}
}*/
PS.: Meu programa tem que gerar uma matriz aleatoria e fazer um "recorte" nessa matriz, os parametros da matriz recorte são dados através de argv e argc.
5. comentários
thiagovasconcelousa Ubuntu
Post recolhido
Enviado em 26/10/2014 - 17:18h
é só ter um pouquinho de atenção, pois tem uma boa parte dele comentado, foram alguns teste que fiz.
6. Re: duvida em linguagem c [RESOLVIDO]
removidousa Nenhuma
Post recolhido
Enviado em 26/10/2014 - 17:25h
Tenta primeiro pegar os valores i e j da matriz, aí sim você percorre as linhas e colunas dela (com dois for já dá pra fazer isso);
Exemplo:
A11 A12 A13 A14
A21 A22 A23 A24
A31 A32 A33 A34
A matriz acima é 3x4 (ou seja, i=3; j=4); a partir disso, você percorre ela usando o for;