Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: DotarSojat en 05 de Enero 2015, 01:39
-
Buenas noches, llevo esto de mi código
#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++
-
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
#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
-
El problema es ese no puedo utilizar for, ni while, solo permitido, if, else, switch
-
Si en vez de char codigo [50]; usas char codigo [8]; ya no necesitarías for ni while... tendrías el tamaño exacto
::)
-
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
-
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?
-
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
-
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
-
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
-
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...
-
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
-
¿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?
-
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.
-
Por cuál puedo cambiar for, para seguir con el código?
-
En el enlace que has puesto sólo se lee una parte del texto, aparecer cortado.
La idea era usar char:
#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";
}
}
-
Y no hay otra forma de hacerlo ? lo del código de seguridad, me refiero
-
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
#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"<<
-
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.
-
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
#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?
-
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?
-
Sí, efectivamente así compila, pero me gustaría hacerlo de otro modo, peor no consigo que me compile si le agrego variables que contengan letras a,b,c,etc
-
Hola con int se podría hacer de forma similar:
#include <iostream>
#include <string>
using namespace std;
int main() {
//char codigo [8];
int a,b,c,d,e,f,g,h;
string codigo("");
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;
a=codigo[0]; b=codigo[1];c=codigo[2]; d=codigo[3]; e=codigo[4]; f=codigo[5]; g=codigo[6]; h=codigo[7];
const bool sonOchoCifras(largoCodigo == 8);
const bool esNumBinario((a == '1' || a == '0') &&
(b == '1' || b == '0') &&
(c == '1' || c == '0') &&
(d == '1' || d == '0') &&
(e == '1' || e == '0') &&
(f == '1' || f == '0') &&
(g == '1' || g == '0') &&
(h == '1' || h == '0'));
if (sonOchoCifras && esNumBinario) {
if (a == '1') unos++;
if (b == '1') unos++;
if (c == '1') unos++;
if (d == '1') unos++;
if (e == '0') ceros++;
if (f == '0') ceros++;
if (g == '0') ceros++;
if (h == '0') ceros++;
cout << "Unos = " << unos;
cout << "Ceros = " << 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";
}
}
Salu2