[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