Autor Tema: String a Int o Float en C++ ejemplo cout y cin mostrar y pedir datos cplusplus  (Leído 14441 veces)

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Buenas noches, llevo esto de mi código

Código: [Seleccionar]
#include <iostream>
#include <string>

using namespace std;

int main() {
    string codigo("");
    string nombre("");
    string apellido("");
    string telefono("");
    string celular("");
    string correo("");
    string ciudad("");
    string pais("");

    int unos(0);
    int ceros(0);
    bool codigoCorrecto(false);

    cout << "Ingrese el codigo de seguridad:\ncodigo = ";
    cin >> codigo;
    const bool sonOchoCifras(codigo.size() == 8);
    const bool esNumBinario((codigo.at(0) == '1' || codigo.at(0) == '0') &&
                            (codigo.at(1) == '1' || codigo.at(1) == '0') &&
                            (codigo.at(2) == '1' || codigo.at(2) == '0') &&
                            (codigo.at(3) == '1' || codigo.at(3) == '0') &&
                            (codigo.at(4) == '1' || codigo.at(4) == '0') &&
                            (codigo.at(5) == '1' || codigo.at(5) == '0') &&
                            (codigo.at(6) == '1' || codigo.at(6) == '0') &&
                            (codigo.at(7) == '1' || codigo.at(7) == '0'));
    if (sonOchoCifras && esNumBinario) {
        if (codigo.at(0) == '1') unos++;
        if (codigo.at(1) == '1') unos++;
        if (codigo.at(2) == '1') unos++;
        if (codigo.at(3) == '1') unos++;

        if (codigo.at(4) == '0') ceros++;
        if (codigo.at(5) == '0') ceros++;
        if (codigo.at(6) == '0') ceros++;
        if (codigo.at(7) == '0') ceros++;

        if (unos == ceros) codigoCorrecto = true;
    }

    if (codigoCorrecto) {
        cout << "\nIngrese los datos del contacto:\n";
        cout << "Nombre   = ";
        cin >> nombre;
        cout << "Apellido = ";
        cin >> apellido;
        cout << "Telefono = ";
        cin >> telefono;
        cout << "Celular  = ";
        cin >> celular;
        cout << "Correo   = ";
        cin >> correo;
        cout << "Ciudad   = ";
        cin >> ciudad;
        cout << "Pais     = ";
        cin >> pais;
        if (pais != "Venezuela") {
            cout << "\nSolo se admiten contactos de Venezuela";
        }
    } else {
        cout << "\nEl codigo de verificacion es incorrecto";
    }
}


Pero ahora me dijeron que no puedo usar string en el código, alguien sabe como puedo modificar el código de string a INt o a Float sin modificar mucho el código? soy nivel principiante en c++
« Última modificación: 11 de Mayo 2015, 19:00 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Aquí te dejo un código con una forma de resolverlo basada en usar arrays (arreglos)

Sólo lo he hecho con codigo, pero podrías hacerlo con los demás Strings que tienes

Código: [Seleccionar]
#include <iostream>
#include <string>
using namespace std;

int main() {
    char codigo [50];
    int largoCodigo =0;
    string nombre("");
    string apellido("");
    string telefono("");
    string celular("");
    string correo("");
    string ciudad("");
    string pais("");

    int unos(0);
    int ceros(0);
    bool codigoCorrecto(false);

    for (int i=0; i<sizeof(codigo); i++){
        codigo[i]='-';
    }

    cout << "Ingrese el codigo de seguridad:\ncodigo = ";
    cin >> codigo;

    for (int i=0; i<sizeof(codigo); i++){
        if (codigo[i]=='-') {largoCodigo=i-1; cout<<"largocodigo vale = "<<largoCodigo; break;}

    }

    const bool sonOchoCifras(largoCodigo == 8);
    const bool esNumBinario((codigo[0] == '1' || codigo[0] == '0') &&
                            (codigo[1] == '1' || codigo[1] == '0') &&
                            (codigo[2] == '1' || codigo[2] == '0') &&
                            (codigo[3] == '1' || codigo[3] == '0') &&
                            (codigo[4] == '1' || codigo[4] == '0') &&
                            (codigo[5] == '1' || codigo[5] == '0') &&
                            (codigo[6] == '1' || codigo[6] == '0') &&
                            (codigo[7] == '1' || codigo[7] == '0'));
    if (sonOchoCifras && esNumBinario) {
        if (codigo[0] == '1') unos++;
        if (codigo[1] == '1') unos++;
        if (codigo[2] == '1') unos++;
        if (codigo[3] == '1') unos++;

        if (codigo[4] == '0') ceros++;
        if (codigo[5] == '0') ceros++;
        if (codigo[6] == '0') ceros++;
        if (codigo[7] == '0') ceros++;

        if (unos == ceros) codigoCorrecto = true;
    }

    if (codigoCorrecto) {
        cout << "\nIngrese los datos del contacto:\n";
        cout << "Nombre   = ";
        cin >> nombre;
        cout << "Apellido = ";
        cin >> apellido;
        cout << "Telefono = ";
        cin >> telefono;
        cout << "Celular  = ";
        cin >> celular;
        cout << "Correo   = ";
        cin >> correo;
        cout << "Ciudad   = ";
        cin >> ciudad;
        cout << "Pais     = ";
        cin >> pais;
        if (pais != "Venezuela") {
            cout << "\nSolo se admiten contactos de Venezuela";
        }
    } else {
        cout << "\nEl codigo de verificacion es incorrecto";
    }
}


Escribe el código completo cuando lo tengas resuelto para ver cómo quedó

Saludos

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
El problema es ese no puedo utilizar for, ni while, solo permitido, if, else, switch

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Si en vez de char codigo [50]; usas char codigo [8]; ya no necesitarías for ni while... tendrías el tamaño exacto

 ::)

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Bueno,  pero me informaron que el código de seguridad no puede estar contenido en string,  con el código tengo que validar que sea 8 digitos binario y  Se considerará válido el código binario si la suma de los unos (1) de las primeras 4 cifras más significativas es igual a la suma de ceros (0) de las 4 cifras menos significativas del código, entonces me quede varado ahí, me dijeron que también puedo hacer esa validación a través de div y mod, pero como dije estoy varado

« Última modificación: 06 de Enero 2015, 14:01 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, para pegar código usa el botón # del editor del foro. ¿Me has puesto el mismo código que ya habías puesto antes? ¿No puedes usar char codigo [8]; como te comentaba antes?

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Hola, si lo volví a poner quería saber si como lo llevaba estaba bien, entonces me dices que reemplace por char? entonces llevaría lo mismo el código, lo que tengo que hacer es validar que el código sea binario (1) y (0) y que  la suma de los unos (1) de las primeras 4 cifras más significativas es igual a la suma de ceros (0) de las 4 cifras menos significativas del código pero me dijeron que como lo llevaba no era, entonces no sé si este bien o no

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Usando char puedes evitar el uso de string... y tal y como lo tenías puedes hacerlo, sin usar for ni while, pero si tienes que hacer más cosas no lo sé. ¿Cuál es el enunciado o especificación del trabajo que tienes que hacer? Eso es algo que debes tener delante (y poner aquí también si quieres que intentemos ayudarte)

Saludos

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
el enunciado dice así;
La empresa de desarrollo de software GDAyP ha recibido un proyecto de parte de uno de sus clientes, el cual ha solicitado el desarrollo de una agenda digital. Dado que será una aplicación con muchas opciones, ésta se irá desarrollando por fases.
La primera fase consiste en el Módulo de Carga de Contactos. El programa a desarrollar recibirá una serie de valores los cuales son:
- Código de seguridad (binario de 8 dígitos)
- Nombre
- Apellido
- Número de teléfono
- Número celular
- Correo electrónico
- Ciudad
- País (en esta fase, sólo se considera como país válido Venezuela)
El cliente ha solicitado de nosotros que incluyamos en la agenda digital como método de seguridad la verificación de un código binario antes de poder utilizar este módulo. Se considerará válido el código binario si la suma de los unos (1) de las primeras 4 cifras más significativas es igual a la suma de ceros (0) de las 4 cifras menos significativas del código.
NOTA: tomar en cuenta que para aquellos códigos binarios cuya cifra más significativa sea cero (0), C++ la obviará, por ejemplo:
Valor introducido por el usuario: 01101101 Valor almacenado por el programa: 1101101
Una vez verificado el código de seguridad se procederá a la carga de los datos de un contacto, se recibirán los datos uno por uno y de ellos es importante validar:
- El código de área del número de teléfono.
- El código de área del número celular.
- La ciudad.
Los códigos de área de las ciudades válidos son: 0212 para Caracas, 0243 para Maracay, 0241 para valencia, 0251 para Barquisimeto, 0261 para Maracaibo.
Para el número celular los códigos válidos son: 0412, 0414, 0424, 0416 y 0426. Las ciudades válidas son: Caracas, Maracay, Valencia, Barquisimeto y Maracaibo. Se debe


verificar además que el código de área del número de teléfono corresponda con la
ciudad introducida.
Por último se debe verificar que el país sea Venezuela

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
No veo que diga que no se pueden usar bucler for ni while... De todas formas si no lo vas a usar pienso que lo puedes hacer con char, hazlo y consúltalo a ver qué te dicen...

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #10 en: 06 de Enero 2015, 18:28 »
entre las restricciones está;
- Se debe usar lectura y escritura estándar. Se permite usar tipos de datos básicos, operaciones aritméticas y sólo condicionales de las estructuras de control propias de C++.
- Esta permitida la biblioteca para desarrollar esta herramienta iostream y string

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #11 en: 06 de Enero 2015, 19:53 »
¿Cuáles son todas las restricciones? Además, si se indica "Esta permitida la biblioteca para desarrollar esta herramienta iostream y string" ¿Por qué dices que no se puede usar string?

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #12 en: 06 de Enero 2015, 23:44 »
Buenas también tenía esa duda y por eso lo empece hacer como lo puse al principio pero la duda fue aclarada http://prntscr.com/5pcmjk se puede utilizar string pero no con el código de seguridad.

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #13 en: 07 de Enero 2015, 20:48 »
Por cuál puedo cambiar for, para seguir con el código?

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #14 en: 07 de Enero 2015, 21:47 »
En el enlace que has puesto sólo se lee una parte del texto, aparecer cortado.

La idea era usar char:

Código: [Seleccionar]
#include <iostream>
#include <string>
using namespace std;

int main() {
    char codigo [8];
    int largoCodigo =0;
    string nombre("");
    string apellido("");
    string telefono("");
    string celular("");
    string correo("");
    string ciudad("");
    string pais("");

    int unos(0);
    int ceros(0);
    bool codigoCorrecto(false);

    cout << "Ingrese el codigo de seguridad:\ncodigo = ";
    cin >> codigo;

largoCodigo = 8;

    const bool sonOchoCifras(largoCodigo == 8);
    const bool esNumBinario((codigo[0] == '1' || codigo[0] == '0') &&
                            (codigo[1] == '1' || codigo[1] == '0') &&
                            (codigo[2] == '1' || codigo[2] == '0') &&
                            (codigo[3] == '1' || codigo[3] == '0') &&
                            (codigo[4] == '1' || codigo[4] == '0') &&
                            (codigo[5] == '1' || codigo[5] == '0') &&
                            (codigo[6] == '1' || codigo[6] == '0') &&
                            (codigo[7] == '1' || codigo[7] == '0'));
    if (sonOchoCifras && esNumBinario) {
        if (codigo[0] == '1') unos++;
        if (codigo[1] == '1') unos++;
        if (codigo[2] == '1') unos++;
        if (codigo[3] == '1') unos++;

        if (codigo[4] == '0') ceros++;
        if (codigo[5] == '0') ceros++;
        if (codigo[6] == '0') ceros++;
        if (codigo[7] == '0') ceros++;

        if (unos == ceros) codigoCorrecto = true;
    }

    if (codigoCorrecto) {
        cout << "\nIngrese los datos del contacto:\n";
        cout << "Nombre   = ";
        cin >> nombre;
        cout << "Apellido = ";
        cin >> apellido;
        cout << "Telefono = ";
        cin >> telefono;
        cout << "Celular  = ";
        cin >> celular;
        cout << "Correo   = ";
        cin >> correo;
        cout << "Ciudad   = ";
        cin >> ciudad;
        cout << "Pais     = ";
        cin >> pais;
        if (pais != "Venezuela") {
            cout << "\nSolo se admiten contactos de Venezuela";
        }
    } else {
        cout << "\nEl codigo de verificacion es incorrecto";
    }
}

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #15 en: 07 de Enero 2015, 23:10 »
Y no hay otra forma de hacerlo ? lo del código de seguridad, me refiero

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #16 en: 09 de Enero 2015, 17:30 »
 otra manera de hacerlo sería, es que quiero ver la diferentes manera de hacerlo y no quedarme con una sola, asignándole al código una variable int y poniéndole valores a,b,c,d,e,f,g,h, pero me quede trancado en como validar que el código tenga las misma cifras significativas de 1 y 0, disculpa la molestia pero en verdad quiero aprender las diferentes formas de hacerlo

Código: [Seleccionar]
#include <iostream>
#include <string>

using namespace std;

int main ()

int codigo
string nombre ("" "");
string apellido ("" "");
string telefono ("" "");
string celular ("" "");
string correo ("" "");
string ciudad ("" "");
string pais ("" "");

cout<<"introduzca el codigo"<<endl;
cin>>codigo

if {

( (a==b && c==d ) && ( e==f  && g== h) )

then

cout<<"Codigo correcto"<<

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #17 en: 09 de Enero 2015, 22:01 »
Hola, ¿se te cortó el código o lo pusiste cortado (no he podido ejecutarlo)? Tal y como interpreto yo el enunciado serían códigos de seguridad válidos:

11001100, porque en las cuatro primeras cifras hay dos unos y en las cuatro últimas cifras hay dos ceros

11110000, porque en las cuatro primeras cifras hay cuatro unos, y en las cuatro últimas cifras hay cuatro ceros

00001111, porque en las cuatro primeras cifras hay ningún uno y en las cuatro últimas cifras hay ningún cero

01111000, porque en las cuatro primeras cifras hay tres unos y en las cuatro últimas cifras hay tres ceros

¿Es así, es decir, los códigos anteriores serían válidos? Si es así tendrías que fijarte en cómo se construyen los códigos de seguridad válidos para determinar la lógica que se debe aplicar.

Saludos.

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #18 en: 09 de Enero 2015, 22:35 »
Sí, exactamente como lo dices, el primero no se si este bueno, aunque yo creo que si porque tiene cuatro, unos y cuatro ceros

el código sería más o menos así, pero no me compila, creo que no lo estoy haciendo bien en alguna parte
Código: [Seleccionar]
#include <iostream>
#include<string>
using namespace std;

int main ()
int codigo;
string nombre ("" "");
string apellido("" "");
strinf telefono ("" "");
string celular ("" "");
string correo ("" "");
string ciudad ("" "");
string pais ("" "");

int a,b,c,d,e,f,g,h;
cout<<"ingrese el codigo de seguridad"<<endl;
cin>>codigo;

if {
(a==b && c==d) || (e==f && g==h)
}
cout<<"codigo correcto"<<endl;

if (codigo correcto) {

cout<<"ingrese los datos del contacto"<<endl;
cout<<"ingrese el nombre"<<endl;
cin>>nombre;
cout<<"ingrese el apellido"<<endl;
cin>>apellido;
cout<<"ingrese el telefono"<<endl;
cin>>telefono;
cout<<"ingrese el celular"<<endl;
cin>>celular;
cout<<"ingrese el correo"<<endl;
cin>>correo;
cout<<"ingrese la ciudad"<<endl;
cin>>ciudad;
cout<<"ingrese el pais"<<endl;
cin>>pais;
if  ( pais !=venezuela) {
cout<<"solo se admiten contactos de Venezuela"<<endl;
}

else {
cout<<"el codigo de seguridad es incorrecto"<<endl;
}
  ¿crees falta algo?

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:String a Int o Float en C++ con ejemplo cout y cin mostrar y pedir datos
« Respuesta #19 en: 11 de Enero 2015, 19:06 »
Hola, he revisado lo de los códigos de seguridad y tal y como está en https://www.aprenderaprogramar.com/foros/index.php?topic=1795.msg9208#msg9208 lo veo perfectamente: comprueba si se introducen sólo unos y ceros, y comprueba si el número de unos entre las cuatro primeras cifras es igual al número de ceros entre las cuatro últimas cifras ¿no es correcto?

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".