Matriz

Iniciado por Principios en C, 25 Septiembre 2011, 20:46 PM

0 Miembros y 1 Visitante están viendo este tema.

Principios en C

Hola...

De nuevo me tienen aqui con otra duda...
Tenia que crear una matriz en donde se orden las filas de mayor a menor para una de 2x3 y este es mi codigo:
#include<stdio.h>
#include<conio.h>
int mat[3][4],i,j,vec1[4],vec2[4],temp,p,q;
main()
{
     printf("Trabajo practico 1, ejercicio 8\n");
     printf("\nDada una matriz 2x3 de elementos enteros, ordenar todos los");
     printf("\nelementos de la matriz(de mayor a menor), comenzando por la");
     printf(" primera fila\n\n\n");
     
     for(i=1;i<=2;i++){
                      for(j=1;j<=3;j++){
                                       printf("Elemento (%d,%d): ",i,j);
                                       scanf("%d",&mat[i][j]);
                                       }
                      }  
     
     

for(j=1;j<=3;j++){                                
                vec1[j]=mat[1][j];
                           }
                printf("\n\nElementos de la fila 1:   ");
     for(j=1;j<=3;j++){
                      printf("%d  ",vec1[j]);  
                          }
                     
                     
for(i=1;i<=3;i++){
                 for(j=i+1;j<=3;j++){
                                      if(vec1[i]<vec1[j]){
                                       temp=vec1[i];
                                        vec1[i]=vec1[j];
                                         vec1[j]=temp;
                                         }
                                        }    
                                        }

                     
                               
for(j=1;j<=3;j++){                                
                vec2[j]=mat[2][j];
                            }
                printf("\nElementos de la fila 2:   ");
     for(j=1;j<=3;j++){
                      printf("%d  ",vec2[j]);
                                  }  
printf("");
                     


for(i=1;i<=3;i++){
                 for(j=i+1;j<=3;j++){
                                      if(vec2[i]<vec2[j]){
                                       temp=vec2[i];
                                        vec2[i]=vec2[j];
                                         vec2[j]=temp;
                                         }
                                        }    
                                        }
       
printf("\n\n\n");
printf("Elementos ordenados da la fila 1:  ");
for(i=1;i<=3;i++){
                       
                 printf("%d  ",vec1[i]);
                            }
                  printf("\n");
printf("Elementos ordenados de la fila 2:  ");
for(i=1;i<=3;i++){
                       
                 printf("%d  ",vec2[i]);}

                 
                 
                                 
     
                     
    getch();
    return(0);
}


Pero ahora me pidieron que creara un matriz de nxm y que ordenara tanto sus filas como sus columnas de mayor a menor, supongo ue solo tengo que generalizar paro no se como.. ya que soy nuevo en esto y la verdad sacar el code anterior me costo mucho, ojala me ayuden

LearningSpanishProgrammer

#1
Por favor, guión correctamente. (indent correctly the code)
No se puede entender esto.

Ejemplo:

for (i=1; i <= 2; i++)
{
   for(j=1; j <= 3; j++)
  {
       printf("Elemento (%d,%d): ", i, j);
       scanf("%d", &mat[i][j]);
   }
}  


Cuando se esta empezando, es bueno hacer esto..
Estoy aprendiendo español, y tu estas aprendiendo programación

.mokk.

Bueno solo ya tienes los tamaños de la fila por columna ocupariamos otra matriz asi una igual a la otra organizarla una por filas y la otra por columnas, y es casi el mismo procedimiento solo Debes cambiar algunas partes al hacer los cambios.

Y tambien como te comentaron deberias tener un poco mejor organizado el codigo jeje

Aqui dejo como yo lo hice

Código (c++) [Seleccionar]

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   
    int fila, columna;
   
    //Preguntamos la cantidad de Filas & Columnas de la Matriz
    printf("Filas: ");
    scanf("%d", &fila);
    printf("Columnas: ");
    scanf("%d", &columna);
   
    //Creamos 2 matrices del mismo tamaño, 1 para organizarla mediante filas y la otra por columnas
    int matriz[fila][columna];
    int matriz0[fila][columna];
   
    for(int i = 0; i < fila; i++)
    {
            for(int j = 0; j < columna; j++)
            {
                    //Pedimos los datos y los ingresamos a ambas matrices
                    printf("Elemento (%d,%d): ", i, j);
                    scanf("%d", &matriz[i][j]);
                    matriz0[i][j] = matriz[i][j];
            }
    }

    //Mostramos los datos por Fila
    for(int i = 0; i < fila; i++)
    {
            printf("\nElemntos Fila %d: ", (i+1));
            for(int j = 0; j < columna; j++)
            {
                    printf("%d ", matriz[i][j]);
            }
    }
   
    //Recorremos la matriz para organizarla por filas
    int temp;
    for(int i = 0; i < fila; i++)
    {
            for(int j = 0; j < columna; j++)
            {
                    for(int x = 0; x < columna; x++)
                    {
                            if(matriz[i][j] < matriz[i][x])
                            {
                                            temp = matriz[i][j];
                                            matriz[i][j] = matriz[i][x];
                                            matriz[i][x] = temp;
                            }
                    }
            }
    }
   
    printf("\n\n");
   
    //Mostramos las filas ya organizadas
    for(int i = 0; i < fila; i++)
    {
            printf("\nElementos Fila %d: ", (i+1));
            for(int j = 0; j < columna; j++)
            {
                    printf("%d ", matriz[i][j]);
            }
    }
   
    //Mostramos los datos por columnas               
    for(int j = 0; j < columna; j++)
    {
            printf("\nColumna %d: ", (j+1));
            for(int i = 0; i < fila; i++)
            {
                    printf("%d ", matriz0[i][j]);
            }
    }
   
    //Organizamos los datos de las columnas
    for(int j = 0; j < columna; j++)
    {
            for(int i = 0; i < fila; i++)
            {
                    for(int x = 0; x < fila; x++)
                    {
                            if(matriz0[i][j] < matriz0[x][j])
                            {
                                             temp = matriz0[i][j];
                                             matriz0[i][j] = matriz0[x][j];
                                             matriz0[x][j] = temp;
                            }
                    }
            }
    }
   
    printf("\n\n");
    //Mostramos los datos por columnas ya organizadas
    for(int j = 0; j < columna; j++)
    {
            printf("\nColumna %d: ", (j+1));
            for(int i = 0; i < fila; i++)
            {
                    printf("%d ", matriz0[i][j]);
            }
    }
                   
   
    cin.get();cin.get();
}


Principios en C

#3
OK, ya lo probe, modifique pequeñas cositas para que me compilara... tal vez es por el IDE que uso... pero MUCHAS GRACIAS!!!

Me ayudaste bastante...

Imaginate si el anterior me costo trabajo... no imaginas como estaba sufriendo con esto...
jejeje...

Pero gracias de nuevo!!!