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;
}
Suscribirse a:
Enviar comentarios (Atom)
1 comentario:
podi expicar la ultima aprte del ejercicio ; lo de la funcion
Publicar un comentario