Autor
|
Tema: cual es la diferencia [?] (Leído 3,971 veces)
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
Wenas  ... Andaba viendo unos codes y vi algo, que me llamo la atencion... Puesto que no le veo el ¿por que?... Aca les dejo parte del code, que me imagino con eso basta: BasePoint **objs = new BasePoint*[5]; // allocate space for 10 BasePoint pointers, // they may be used to store derived classes // creating objects objs[0] = new Circle(7, 6, 55); objs[1] = new Rectangle(12, 54, 21, 14); objs[2] = new Square(19, 32, 10); objs[3] = new Oval(43, 10, 4, 3); objs[4] = new Square(3, 41, 3); bool flag=false; do { cout << endl << "We have 5 objects with numbers 0..4" << endl; cout << "Enter object number to view information about it " << endl; cout << "Enter any other number to quit " << endl; char onum; // in fact, this is a character, not a number // this allows user to enter letter and quit... (1) cin >> onum; // flag -- user have entered number 0..4 flag = ((onum >= '0')&&(onum <= '4')); if (flag) objs[onum-'0']->info();//(2) } while(flag); // freeing memory for(int i=0;i<5;i++) delete objs[i]; delete [] objs; cin.get(); return 0; }
Ok... En (1) lo que no capto es, para que un char, segun mi ingles  "permite ingresar un entero y salir" 0o? y que? igual flag no se va a hacer true si declaras onum como int... porq por ejemplo 'A' o 97 (o su valor en ascii) no es menor que 4  Y en (2) pes para que el " -'0' "? Saludos, esas 2 dudas na mas y pes de antemano gracias...
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja  
|
|
|
biribau
Desconectado
Mensajes: 181
|
'0' - '0' = 0 '1' - '0' = 1 ... onum lee un carácter luego si metes un carácter del 0 al 4 llamará al info de ese objeto en el array, si es mayor que '4' o menor que '1' o sea no está en el rango, acaba el bucle y el programa Recuerda 'A' - 'A' = 0 siempre, y una carcterística y común en los sistemas de codificación de caracteres es que las letras vayan consecutivas, y las cifras, luego si '0' = x numero ascii, '1' = x + 1, y N(caracter cifra) = x + N(numero), por tanto N(numero) = N(caracter cifra) - x = N(caracter cifra) - '0', sólo hay que restarle el primero.
|
|
|
En línea
|
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
Pero '0' en ascii es 0... Asi que para que le quiero restar 0 a un caracter?... No es mejor algo asi: int onum; cin >> onum; // flag -- user have entered number 0..4 flag = ((onum >= 0)&&(onum <= 4)); if (flag) objs[onum]->info(); } while(flag);
Lo que me extraña es que dice que con char "permite" salir si se ingresa una letra... y con int tambien deberia  porq el valor por ejemplo, de 'A', 97 creop, sigue siendo mayor que 4 asi que flag no se hace true, y por eso se saldria del bucle... Pero no es asi yo lo probe y si ingresas una letra se sale... pero si ingresas el numero 4, por ejemplo te muestra square.. y luego al presionar una letra se vuelve loco el programa xD como un bucle infinito... debe ser algo con respecto al buffer... Saludos gracias por responder...
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja  
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
Me equivoque bien feo  elñ valor de '0' ne ascii no es 0 es 48, asi que ya entendi el porq... estan haciendo como un cast... Superada esa parte  Pero igual no veo el porq de que la forma en que yo lo hago no funciona... O weno funciona si ingresas una letra en la primera vuelta, y se sale del bucle como deberia ser. Pero si en la primera vuelta introduces un entero, se cumple la condicion del bucle, y en la segunda llegas a introducir una letra se vuelve loco... Saludos...
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja  
|
|
|
biribau
Desconectado
Mensajes: 181
|
El problema es que lees un entero y tu le metes una letra, supongo que entonces no "come" caracteres del buffer, y este no mengua, y siempre tiene que leer, que es lo mismo lo perpetúa.
|
|
|
En línea
|
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
Mmmm yo crei que se hacia un cast con algo asi... int x; cin>>x;//Si ingresas una letra, segun yo xD se hace un cast (int)... Pero pes al parecer no es asi cout<<x<<endl;
Weno muchas gracias por el dato... Saludos...
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja  
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Cual es la diferencia? Duda con punteros y typedef
Programación C/C++
|
freecom4ever
|
6
|
7,976
|
16 Febrero 2012, 17:27 pm
por rir3760
|
|
|
para que sirve LEA y cual es la diferencia con MOV?
ASM
|
Belial & Grimoire
|
3
|
6,287
|
19 Junio 2012, 07:30 am
por Belial & Grimoire
|
|
|
cual es la diferencia?
Programación General
|
General Dmitry Vergadoski
|
3
|
2,512
|
4 Enero 2015, 19:29 pm
por engel lex
|
|
|
cual es la diferencia?
Redes
|
General Dmitry Vergadoski
|
1
|
2,666
|
7 Febrero 2015, 01:58 am
por engel lex
|
|
|
¿Donde puedo escribir mi codigo C++ Y cual la diferencia con C?
Programación C/C++
|
bacanzito
|
1
|
2,122
|
12 Febrero 2015, 01:38 am
por engel lex
|
|