Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - UmbraNoche

#1
Buenas gente aquí les dejo un código de una de las muchas formas de cómo aplicar el ordenamiento burbuja a un arreglo de dos dimensiones.

Código (cpp) [Seleccionar]
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
     
    using namespace std;
     
    void rellenarArreglos(int a[10][10]);
    void desplegarArreglo(int a[10][10]);
    void ordenarArreglo(int a[10][10]);
     
    int main(){
     
        int arreglo1[10][10];
     
        cout << "Arreglo1\n\n";
        rellenarArreglos(arreglo1);
        ordenarArreglo(arreglo1);
        desplegarArreglo(arreglo1);
     
     
        system("pause");
        return 0;
    }
     
    void rellenarArreglos(int a[10][10]){
     
        srand(time(0));
     
        for(int i = 0; i < 10; i++){
            for(int j = 0; j < 10; j++)
                a[i][j] = (1 + rand() % 1000);
        }
     
    }
     
    void desplegarArreglo(int a[10][10]){
     
        for(int c = 0; c < 10; c++){
            for(int b = 0; b < 10; b++)
                cout << c[a][b] << "\t";
                cout << endl;
        }
     
    }
     
    void ordenarArreglo(int a[10][10]){
     
        int k = 0;
        int arreglo[100];
     
        //Convertir el arreglo de dos dimensiones en uno de una sola dimension.
        for(int fila = 0; fila < 10; fila++){
            for(int col = 0; col < 10; col++){
                arreglo[k] = a[fila][col];
                k++;
            }
        }
     
     
        //Aplicación del Ordenamiento Burbuja.
        for(int f = 1; f < 100; f++){
            for(int c = 0; c < 100; c++){
                if(arreglo[c] > arreglo[c+1]){
                    int temp = arreglo[c];
                    arreglo[c] = arreglo[c+1];
                    arreglo[c+1] = temp;
     
                }
            }
        }
     
        k = 0;
     
        //Convertir el arreglo de una dimensión en una de dos dimensiones
        //como anteriormente estaba.
        for(int f = 0; f < 10; f++){
            for(int c = 0; c < 10; c++){
                a[f][c] = arreglo[k];
                k++;
            }
        }
     
    }
     
#2
Buenas gente, les escribo para saber si me pueden dar una mano, en cómo ordenar un arreglo de 15x15 que contiene números aleatorios del 1 al 999 aplicando el ordenamiento burbuja. He estado quebrandome la cabeza pero no he tenido éxito. Aquí les dejo el código.

Gracias de antemano.

Código (cpp) [Seleccionar]
const int Fil = 15;
const int Col = 15;

srand(time(NULL));

        cout << setw(50) << "Matriz con numeros del 1 al 999\n\n";

        for(int fila = 0; fila < Fil; fila++){
            for(int columna = 0; columna < Col; columna++)
                matriz[fila][columna] = 1 + rand()% 999;
        }

        for(int f = 0; f < Fil; f++){
            for(int c = 0; c < Col; c++)
                cout << matriz[f][c] << " ";

                cout << endl;
        }

        cout << "Matriz Ordenada\n\n";

        int temp;

        for(int fila = 0; fila < Fil-1; fila ++){
            for(int columna = 0; columna < Col-1; columna++){
                for(int FilaAux = 0; FilaAux < Fil; FilaAux++){
                    for(int ColumnaAux = 0; ColumnaAux < Col; ColumnaAux++){
                            if(matriz[fila][columna] > matriz[FilaAux+1][ColumnaAux+1]){
                                temp = matriz[FilaAux][ColumnaAux];
                                matriz[fila][columna] = matriz[FilaAux+1][ColumnaAux+1];
                                matriz[FilaAux+1][ColumnaAux+1] = temp;
                            }
#3
Muchas gracias efrion por comentar de nuevo, sólo dejame decirte que yo no me estoy excusando de nada, si digo que el código no es mío es porque es verdad, yo no puedo atribuirme algo que no he hecho. Ahora que el código no este 100% depurado estoy de acuerdo. Mi idea es publicar código para ayudar o dar una idea a las personas en sus proyectos personales ya sea con código depurado o no. Si por cualquier motivo no le gusta el código a alguien pues que no lo vea y que busque otra solución.

Saludos...
#4
Cita de: eferion en  9 Febrero 2015, 14:51 PM
Deberías decorar el código con las etiquetas GeSHi para que se pueda leer sin dejarse uno la vista.

Y si me aceptas algunas críticas a tu código:


  • Estás mezclando cabeceras de C con cabeceras de C++
  • No se deberían usar variables globales
  • Si el código está correctamente tabulado, los comentarios tipo "fin del if..." no son necesarios. Además, para que estos comentario sean útiles es necesario actualizarlos cuando se modifica el código, lo cual supone un esfuerzo que no suele aportar nada. Además pueden dificultar la lectura del código... los comentarios se deberían poner justamente para lo contrario, facilitar la lectura del código
  • ¿Por qué mezclas nombres en español con nombres en inglés? en programación se agradece la coherencia... lo suyo es elegir un idioma y ceñirse a la elección.

Sobre la algoritmia no aporto nada porque es imposible leer el código si no está formateado correctamente.

PD.: esta crítica intenta ser constructiva. Si se dejan ejemplos sobre algo hay que cuidar todos los detalles. En caso contrario se corre el riesgo de que el ejemplo sea más destructivo que constructivo.

Un saludo.

Muchas gracias eferion por comentar y claro que acepto la critica para eso publico código para aprender de los que más saben. Solo dos aclaraciones yo trate de colocar el código en con las etiquetas de C++ pero el código es tan grande que las etiquetas no hacen efecto. Por eso deje el enlace para que puedan ver tanto el código fuente y como el ejecutable. Segundo yo no fui el desarrollador del código fue un colega mio como lo dije al principio de la publicación de dicho código, yo solamente compile el código y lo publique.

Saludos...
#5
Cita de: crack81 en  9 Febrero 2015, 05:14 AM
y cual es problema en concreto que quieres solucionar o solo querias mostrarlo?

saludos...


No hay ningún problema, sólo quiero mostrarles el código para que alguna persona que este iniciando en la programación o necesita hacer un ejercicio semejante pueda ayudarse. Mi idea es subir código poco a poco de proyectos de mi universidad para que la persona que este interesada pueda verlos y estudiarlos así pueda ayudarse en proyectos personales.

Saludos...
#6
Buenas gente, aquí les comporto el código de un juego, trate de publicarlo en el foro pero debido a que el código es demasiado grande las etiquetas de C++ no funcionan. Aquí está el enlace para que puedan acceder tanto al código fuente como a su ejecutable. https://mega.co.nz/#F!Pxk10KyY!LpkWTsS0mWd7K7huGbopjw

El código era parte de un proyecto del curso de C++, aclaro que no fui el desarrollador de dicho código fue un colega mío.

El juego se trata de encontrar objetos, el usuario tiene 50 intentos para poder encontrarlos todos. Donde C = candelabro, R = reloj, E = espejo, A = anteojos, N = nave
#7
Cita de: _Enko en  5 Febrero 2015, 22:31 PM
Hola, me parece que estas enfocando el tema distinto.

No creo que necesitas poner C1[][] en matriz[][]. Sino el contenido de c1[][] en la matriz[][].
De lo contrario matriz[][] en vez de ser de char, tendria que ser de punteros a c1[][];

Supongamos que matriz[][] contiene todo '0'; (10x10)
Luego tienes c1, que contiene todo A, pero con un tamaño de 5x5
Entonces si por ejemplo quieres colocar c1[][] en la esquina inferior derecha, harias
Código (cpp) [Seleccionar]

int pos_x = 5;
int pos_y = 5;
for(int i=0; i<=4; ++i)
  for(int j=0; j<=4; ++j)
         matriz[pos_x+i][pos_y+j] = c1[i][j];


Y te queda algo como

Saludos.


Muchas gracias _Enko, de verdad me haz iluminado, sólo una pregunta entonces para meter el contenido de los arreglo a la matriz 10x10 debo hacerlo mediante punteros? Gracias de antemano
#8
Gracias por el dato Orubatosu, tienes toda la razón. Aquí hice la corrección pero decidí hacer los arreglos string, para no liarme con los indices, pero igual al hacer eso no logro agregar los string a mi arreglo de 10x10. De antemano gracias

Código (cpp) [Seleccionar]
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>

using namespace std;

int main(){

    string matriz[10][10];

    string A1 = ("AAAA");
    string C1 = ("CCC");

    for(int fila = 0; fila < 10; fila++){
        for(int columna = 0; columna < 10; columna++)
            matriz[fila][columna] = A1;
    }

    for(int f = 0; f < 10; f++){
        for(int c = 0; c < 10; c++)
            cout << matriz[f][c];

        cout << endl;
    }

    for(int i = 0; i < 10; i++){
        for(int j = 0; j < 10; j++)
            matriz[i][j] = C1;
    }

    for(int x = 0; x < 10; x++){
        for(int y = 0; y < 10; y++)
            cout << matriz[x][y];
    }

    return 0;
}
#9
Buenas gente, soy nuevo en esto de la programación en C++. Les escribo para saber si me pueden ayudar con esta duda, he estado tratando por todos lados pero no lo consigo. Les doy las gracias de antemano

Mi duda es la siguiente cómo puedo hacer para agregar varios arreglos de tipo char a un arreglo char de 10x10. Mi idea es hacer que estos arreglos se agreguen al arreglo 10x10 para luego hacer que el contenido de los mismos aparezcan en posiciones aleatorias tanto en vertical como en horizontal.

Aquí les dejo mi código y les pido disculpas de antemano porque está malísimo lo que hice pero es lo que humildemente pude hacer hasta ahora

Código (cpp) [Seleccionar]
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>

using namespace std;

int main(){

    char matriz[10][10];

    char A1[][] = "AAAA";
    char C1[][] = "CC";

    for(int fila = 0; fila < 10; fila++){
        for(int columna = 0; columna < 10; columna++)
            matriz[fila][columna] = C1[];
    }

    for(int f = 0; f < 10; f++){
        for(int c = 0; c < 10; c++)
            cout << matriz[f][c];

        cout << endl;
    }

    for(int i = 0; i < 10; i++){
        for(int j = 0; j < 10; j++)
            matriz[i][j] = A1[];
    }

    for(int x = 0; x < 10; x++){
        for(int y = 0; y < 10; y++)
            cout << matriz[x][y];
    }

    return 0;
}
#10
Buenas gente aquí les dejo un programa que hice traveseando un poco el código para generar números aleatorios sin que se repitan. Si tienen sugerencias de cómo hacerlo más eficiente por favor no duden en comentar, soy nuevo en esto de la programación y cualquier sugerencia será bienvenida.


Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(){

    int arreglo[10];
    int aux = 0;

    srand(time(0));

    for(int i = 0; i < 10; i++){
        aux = (1 + rand() % 15);

        int aux2 = 0;

        while(aux2 < i){

            if(aux != arreglo[aux2])
                aux2++;

            else{
                    aux = (1 + rand() % 15);
                    aux2 = 0;

                }
        }

        arreglo[i] = aux;

        cout << arreglo[i] << "\n";
    }

    return 0;
}