Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   C/C++ (http://www.forosdelweb.com/f96/)
-   -   Dudas con la RAM y los código ASCII (http://www.forosdelweb.com/f96/dudas-con-ram-codigo-ascii-586179/)

RoDaVi 13/05/2008 20:00

Dudas con la RAM y los código ASCII
 
Un gran saludo a todos
De antemano les aclaro nuevamente que soy un autodidacta y un
recién iniciado en C++ por lo tanto lo que expongo como teoría
sobre la RAM y los código ASCII puede estar errados, por ello
recurro a vuestro conocimiento para disipar mis dudas.-
El código que les dejo a continuación lo estoy haciendo para
ordenar de forma alfabética los 5 productos ingresados, por
supuesto qué le falta muchos complemento, pero a los efectos
de aclarar mi duda por el momento es suficiente.-
Yo tengo entendido qué al ingresar por ej. "sal",en la RAM quedara
escrito "11597108" y si luego ingreso "sol" en la RAM aparecerá
"115111108" de allí deduzco qué si pongo sal > sol el compilador
me dirá que no.-
dos preguntas:
1): estoy en lo cierto o estoy delirando.-
2): Si esto fuera así, como puedo hacer para imprimir en pantalla
el ASCII de los productos ingresados....?

Código:

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
    string ordenar[6];
    cout << endl;
    cout << "------------- Alta de productos -------------" << endl;
    cout << endl;
    cout << " Ingrese producto.:";
    getline(cin,ordenar[0]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[1]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[2]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[3]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[4]);
    int orden = 0,orduno = 0,orddos = 1;

    for (int salir=0; salir<11; salir++)
    {
        orden = ordenar[orduno].compare(ordenar[orddos]);
        if (orden > 0)
            ordenar[orduno].swap(ordenar[orddos]);
        orduno++,orddos++;
        if(salir == 4 || salir == 7 || salir == 9)
            orduno = 0, orddos = 1;
    }     

    cout << endl;
    cout << " Productos ordenados" << endl;
    for (int fin=0; fin <6; fin++) cout << " " << ordenar[fin] << endl;

    system("pause");
    return EXIT_SUCCESS;
}

Desde ya muchas gracias por el tiempo que deseen dedicarles a este post.-

Un gran abrazo para todos
Daniel:-)

Mephisto 14/05/2008 12:41

Re: Dudas con la RAM y los código ASCII
 
Que tal Daniel,

Me tomo el atrevimiento tambien de realizarte algunos consejos que espero te sirvan

Código:

    cout << " Ingrese producto.:";
    getline(cin,ordenar[0]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[1]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[2]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[3]);
    cout << " Ingrese producto.:";
    getline(cin,ordenar[4]);

Esto de aca arriba lo puedes simplificar empleando un for y cambiando tu indice del arreglo para que no tengas que repetir las lineas de codigo...

Código:

for(int i=0;i<6;i++){
    cout << " Ingrese producto  "<<i<<":";
    getline(cin,ordenar[i]);
}

Para el caso del ordenamiento que deseas realizar no es necesario llegar a nivel ASCII, checa la funcion strcmp de la libreria string.

Código:

    for (int salir=0; salir<11; salir++)
    {
        orden = ordenar[orduno].compare(ordenar[orddos]);
        if (orden > 0)
            ordenar[orduno].swap(ordenar[orddos]);
        orduno++,orddos++;
        if(salir == 4 || salir == 7 || salir == 9)
            orduno = 0, orddos = 1;
    }

Otro consejo es que busques en internet los algoritmos de ordenamiento, encontraras maneras en las cuales optimizas tus ordenamientos sobre todo para cuando la cantidad de registros es grande...

Mephisto 14/05/2008 12:45

Re: Dudas con la RAM y los código ASCII
 
De todas maneras, aclarando tu duda del ASCII, efectivamente cuando almacenas sal en la RAM se almacena 115 97 108, pero en tres direcciones de memoria diferente

0001h 115
0002h 97
0003h 108

Por lo que no se toma como un solo numero, las funciones de comparacion de cadena realizan el proceso necesario para indicarte la relacion entre ambas...

RoDaVi 14/05/2008 13:22

Re: Dudas con la RAM y los código ASCII
 
Hola Mephisto
Muchisimas gracias por tu pronta respuesta, en cuanto al bucle for perfecto ya tengo algo mas aprendido, con respecto a la función strcmp() ya mismo me pongo a investigar y muchas gracias por la aclaración en cuanto a la RAM.-
Evidentemente esto de ser autodidacta y no tener alguien cercano para consultar se hace cuestas arriba, pero bueno mientras existan gente como vos con buena predisposición seguiré adelante.-

Un gran abrazo
Daniel:-)


La zona horaria es GMT -6. Ahora son las 03:19.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.