Retroceder   Foros del Web > Temas generales de computación > Programación > C/C++

Respuesta
 
Herramientas Desplegado
Antiguo 13-may-2008, 20:00   #1 (permalink)
RoDaVi ha deshabilitado el karma
 
Avatar de RoDaVi
 
Fecha de Ingreso: mayo-2008
Mensajes: 15
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
RoDaVi está desconectado   Responder Citando
Antiguo 14-may-2008, 12:41   #2 (permalink)
Mephisto está en el buen camino
 
Avatar de Mephisto
 
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 181
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...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
Mephisto está desconectado   Responder Citando
Antiguo 14-may-2008, 12:45   #3 (permalink)
Mephisto está en el buen camino
 
Avatar de Mephisto
 
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 181
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...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
Mephisto está desconectado   Responder Citando
Antiguo 14-may-2008, 13:22   #4 (permalink)
RoDaVi ha deshabilitado el karma
 
Avatar de RoDaVi
 
Fecha de Ingreso: mayo-2008
Mensajes: 15
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
RoDaVi está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 00:16.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93