como se haría para intercambiar filas? no entiendo..
CitarGenerar una matriz de 10x10 numérica entera , a continuación pedir dos números de fila, que se deben filtrar entre 1 y 10 e intercambiar ambas filas. Presentar las matrices antes y después del cambio.
Cita de: howaboutno en 9 Noviembre 2012, 10:58 AM
como se haría para intercambiar filas? no entiendo..
CitarPor ejemplo, si quisieras cambiar la primera fila por la última sería:
puts ("cambio fila primera ultima\n");
for (j=0;j<TAM;j++)
{
temp1=b[0][j];
temp2=b[TAM-1][j];
b[TAM-1][j]= temp1;
b[0][j]= temp2;
}
CitarTodo es jugar con los subídices cero y TAM-1; para cabiar la 3ª fila por la 5ª serían esos valores 2 y 4 en lugar de cero y TAM-1.
Saludos!.
Cita de: leosansan en 9 Noviembre 2012, 12:16 PM
puts ("cambio fila primera ultima\n");
for (j=0;j<TAM;j++)
{
temp1=b[0][j];
temp2=b[TAM-1][j];
b[TAM-1][j]= temp1;
b[0][j]= temp2;
}
Saludos!.
sigo sin entenderlo...
Te dejo tambien aqui el codigo, espero que te sirva:
#include <stdio.h>
int main(void)
{
int matriz[11][11],fil1,fil2,c1,c2,aux;
for(c1=1;c1<=10;c1++) for(c2=1;c2<=10;c2++){
printf("Termino (%d,%d): ",c1,c2); scanf("%d",&matriz[c1][c2]);
}
printf("\n\nMatriz introducida:\n\n");
for(c1=1;c1<=10;c1++){ for(c2=1;c2<=10;c2++){
printf("%6d",matriz[c1][c2]);
}printf("\n");}
printf("Introduce primera fila:"); scanf("%d",&fil1);
printf("Introduce segunda fila:"); scanf("%d",&fil2);
for(c1=1;c1<=10;c1++)
{
aux=matriz[fil1][c1];
matriz[fil1][c1]=matriz[fil2][c1];
matriz[fil2][c1]=aux;
}
printf("\n\nMatriz cambiada:\n\n");
for(c1=1;c1<=10;c1++){ for(c2=1;c2<=10;c2++){
printf("6%d",matriz[c1][c2]);
}printf("\n");}
return(0);
}
Salu10
Cita de: howaboutno en 9 Noviembre 2012, 15:13 PM
sigo sin entenderlo...
CitarLo que hago es crear una nueva matriz con el intercambio de las filas, así no pierdo la matriz inicial. Eso es porque presupongo que se va a "hacer" otras cosas con la matriz inicial, como cambiar diagonales, obtener la simétrica sumar o restar, etc. Por ejemplo:
#include <stdio.h>
#define TAM 4
#include <time.h>
int i,j;
int main()
{
int fila1,fila2,temp1,temp2,a[TAM][TAM],b[TAM][TAM],c[TAM][TAM],d[TAM][TAM],e[TAM][TAM];
srand(time(0));
generar_matriz (a);
imprimir (a);
/********** cambio fila primera ultima **********/
copia_matriz (a,b);
puts ("cambio fila primera ultima\n");
for (j=0;j<TAM;j++)
{
temp1=b[0][j];
temp2=b[TAM-1][j];
b[TAM-1][j]= temp1;
b[0][j]= temp2;
}
imprimir (b);
/**************** cambio filas ***************/
copia_matriz (a,e);
puts ("cambio filas\n");
printf ("Numero de fila1: ");
scanf ("%d",&fila1);
printf ("Numero de fila2: ");
scanf ("%d",&fila2);
puts ("\n");
for (j=0;j<TAM;j++)
{
temp1=e[fila1-1][j];
temp2=e[fila2-1][j];
e[fila2-1][j]= temp1;
e[fila1-1][j]= temp2;
}
imprimir (e);
/************* cambio diagonales *****************/
copia_matriz (a,c);
puts ("cambio diagonales\n");
for (i=0;i<TAM;i++)
{
temp1=c[i][i];
temp2=c[i][TAM-1-i];
c[i][TAM-1-i]= temp1;
c[i][i]= temp2;
}
imprimir (c);
/************* matriz simetrica *****************/
copia_matriz (a,d);
puts ("matriz simetrica\n");
for (i=0;i<TAM;i++)
for (j=0;j<TAM && j<i;j++)
{
temp1=d[i][j];
temp2=d[j][i];
d[j][i]= temp1;
d[i][j]= temp2;
}
imprimir (d);
return 0;
}
/**************************************************/
int generar_matriz (int a[][TAM])
{
for (i=0;i<TAM;i++)
{
for (j=0;j<TAM;j++)
{
/* printf("a[%d][%d]= ",i,j);
scanf("%d",&a[i][j]);*/
a[i][j]=rand() % 10 ;
}
}
}
/**************************************************/
int imprimir (int a[][TAM])
{
int i,j;
for (i=0;i<TAM;i++)
{
for (j=0;j<TAM;j++)
{
printf("%d ",a[i][j]);
}puts("\n");
}puts("\n");
}
/**************************************************/
int copia_matriz (int matriz1[][TAM],int matriz2[][TAM])
{
int i,j;
for (i=0;i<TAM;i++)
{
for (j=0;j<TAM;j++)
{
matriz2[i][j]=matriz1[i][j];
}
}
}
/**************************************************/
CitarSi sólo quieres cambiar las filas y punto el código de cypascal te vale.
Saludos!.