viernes, 5 de octubre de 2007

PROBLEMAS AYUDANTIA VIERNES

Hola les pongo los problemas que hicimos la ayudantia del dia viernes con sus soluciones, solo los que faltaron por realizar

Ejercicio 4: Girar 90º una matriz rectangular
PrevioSiguienteTop

Se trata de realizar un programa que gire una matriz rectangular (mxn) 90 grados en sentido antihorario. A continuación se ilustra con un ejemplo lo que se pretende realizar.

#include<stdio.h>

double **crear_matriz(int, int);

void main(void)

{

int numfil, numcol;

int i, j, num, giro;

double **a;



printf("\nIntroduzca el número de filas: ");

scanf("%d", &numfil);

printf("\nIntroduzca el número de columnas: ");

scanf("%d", &numcol);

a = crear_matriz(numfil, numcol);

for (i=0; i<numfil; i++)

for(j=0; j<numcol; j++){

printf("\nElemento (%d,%d): ", i+1, j+1);

scanf("%lf", &a[i][j]);

}

printf("\n\nLa matriz original es: ");

for (i=0; i<numfil; i++) {

printf("\n");

for (j=0; j<numcol; j++)

printf("%12.4lf ", a[i][j]);

}

printf("\n\n¿Cuántas veces desea girar la matriz?: ");

scanf("%d", &num);

giro = num%4;

if(giro == 1) {

printf("\n\nLa matriz girada %d veces es:\n", num);

for (j=numcol-1; j>=0; j--) {

printf("\n");

for(i=0; i<numfil; i++)

printf("%12.4lf ", a[i][j]);

}

}

else if(giro == 2) {

printf("\n\nLa matriz girada %d veces es:\n", num);

for(i=numfil-1; i>=0; i--) {

printf("\n");

for(j=numcol-1; j>=0; j--)

printf("%12.4lf ", a[i][j]);

}

}

else if(giro == 3) {

printf("\n\nLa matriz girada %d veces es:\n",num);

for(i=numcol-1; i>=0; i--) {

printf("\n");

for(j=numfil-1; j>=0; j--)

printf("%12.4lf ", a[j][i]);

}

}

else {

printf("\n\nLa matriz girada %d veces es:\n", num);

for(i=0; i<numfil; i++) {

printf("\n");

for (j=0; j<numcol; j++)

printf("%12.4lf ", a[i][j]);

}

}

}

double **crear_matriz(int m, int n)

{

double **matriz;

int i;

matriz = calloc(m, sizeof(double *));

matriz[0] = calloc(m*n, sizeof(double));

for(i=0; i<m; i++)

matriz[i] = matriz[0]+n*i;

return matriz;

}

1 comentario:

Anónimo dijo...

podi expicar la ultima aprte del ejercicio ; lo de la funcion