[C con Clase] Dudas de principiante
Luis Pedro Méndez
elinv.elinv en gmail.com
Sab Abr 2 01:57:43 CEST 2011
Pruebe esto muy posiblemente sea lo que esta buscando..
Elinv
--------------------------------------------------------------------
/*
* Este código ha sido desarrollado integramente por Elinv.
* Foro de programación de Elinv.
* http://www.bragadomas.com/forodeprogramacion/index.php
*/
#include <iostream>
using namespace std;
int main()
{
cout << "Presione enter para salir\n";
char numeros[1];
for(;;)
{
fflush(stdin);
cout << "\nIngrese su n£mero: \t";
if ((numeros[0] = cin.get()) == '\n')
{
cout << "Ha presionado enter y sale del programa.\n";
return 0;
}
else
{
cout << "El n£mero escrito es:\t" << numeros[0] << endl;
}
}
return 0;
}
----------------------------------------------------------------------------
El 1 de abril de 2011 14:29, aJ <maxell1001 en gmail.com> escribió:
> El pasado 2011-04-01 11:22:11, unpocolocos escribió:
>
> u> Estoy comenzando a con el curso y estoy tratando de resolver los
> problemas propuestos con alguna que otra variante.
> u> Concretamente, estoy intentando (sin conseguirlo) detener la
> introducción de caracteres (cuando se pulse la tecla "INTRO" sin haber
> introducido un número o letra) en un array dinámico de caracteres. Es decir:
> u> char *numero; // Puntero "numero" a tipo char
> u> int i = 0, j;
> u> // Declaración de prototipos
> u> bool Incrementa (char);
> u> int main()
> u> {
> u> // Reservamos en memoria dinámica una cadena de caracteres
> u> // a la que apunta "numero"
> u> numero = new char [10];
> u> // Inicializamos la cadena dinámica con caracteres '0'
> u> for (j = 0; j < 10; j++) numero [j] = '0'; numero [9] = '\0';
> u> // Introducción del número de dígitos
> u> cout << "Introduce los digitos de un numero HASTA UN MAXIMO DE 8"
> << endl;
> u> cout << "Para salir pulsar directamente [INTRO]" << endl;
> u> // Introducción de los caracteres de "numero"
> u> while (i < 8) {
> u> cout << " Introduce digito " << j-9 << ": "; j++;
> u> cin >> numero [i];
> u> if (numero [i] == '\n') break;
> u> i++;
> u> }
> u> ¿Qué es lo que estoy haciendo mal?
> u> _______________________________________________
> u> Lista de correo Cconclase Cconclase en listas.conclase.net
> u>
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> u> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
> He revisado tu código y faltan algunas cosas.. como el 'delete[] numero'
> siempre que asignes memoria dinámica debes liberarla al finalizar el
> programa, en tu caso que lo asignaste en forma de arreglo para liberarlo
> usas 'delete[] puntero' y para finalizar una introducción de datos sin haber
> introducido algo puedes usar esto → 'cin.get(numero,9,'\n');' donde número
> es el puntero, 9 la cantidad que caracteres que va leer a la final solo va
> tomar 8 como tu indicas, el carácter 9 es nulo y '\n' el carácter
> delimitador que sería el "INTRO".. puedes conseguir info relacionada en el
> mismo curso → http://bit.ly/ij0tjd y 'bool Incrementa (char);' lo elimine
> por que no esta haciendo nada..
>
> Todo quedaría así :
>
> #include <iostream>
> using namespace std;
> char *numero; // Puntero "numero" a tipo char
> int i = 0, j;
> int main()
> {
> // Reservamos en memoria dinámica una cadena de caracteres
> // a la que apunta "numero"
> numero = new char [10];
> // Inicializamos la cadena dinámica con caracteres '0'
> for (j = 0; j < 10; j++) numero [j] = '0'; numero [9] = '\0';
> // Introducción del número de dígitos
> cout << "Introduce los digitos de un numero HASTA UN MAXIMO DE 8" <<
> endl;
> cout << "Para salir pulsar directamente [INTRO]" << endl;
> // Introducción de los caracteres de "numero"
> cout << ">> ";
> cin.get(numero,9,'\n');
> // Imprimir "numero"
> cout << endl << "*numero : " << numero;
> delete[] numero;
> return 0;
> }
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110401/c53de430/attachment.html>
Más información sobre la lista de distribución Cconclase