Título: necesito ayuda en este rpograma, quiero que pregunte si quiero hacer otro correo Publicado por: LARANARENElol en 21 Noviembre 2018, 06:22 am quiero que pregunte si quierte hacer otro correo pero no puedo
esta es la syntaxis del problema para que le entiendan: Se desea elaborar un programa que permita al usuario crear su correo electrónico de la siguiente manera: le solicitara al usuario una palabra o nombre (podría ser su apellido, este no deberá exceder de 10 caracteres en caso de ser así enviara un mensaje de error y lo solicitara nuevamente). Se le presentaran las siguientes opciones con el tipo de correo que desea: a.- hotmail b.- gmail Posteriormente se concatenara la palabra proporcionada por el usuario + @ + hotmail o gmail (según la opción elegida). Ejemplo: el usuario proporciono lopez y eligió del menú la opción ‘a’ el correo final concatenado será: lopez@hotmail.com Una vez obtenido el correo se deberá mostrar completo (concatenado) El programa permitirá obtener otro correo preguntando al usuario si desea formar otro (respuesta “si”/”no”, se pide validar esta respuesta), de tal manera que obtendrán más correos mientras lo desee. y esto es lo que e echo: Código
Título: Re: necesito ayuda en este rpograma, quiero que pregunte si quiero hacer otro correo Publicado por: K-YreX en 21 Noviembre 2018, 07:15 am Primero decir que C no es mi fuerte, ya que programo más en C++ pero te comento:
- Por lo que he leído ahora mismo por ahí, las funciones de entrada de datos que usas son para especificar el tamaño máximo de la entrada, cosa que no haces. Por ejemplo <gets_s> debería recibir la variable donde quieres guardas el dato y el tamaño máximo. En ese caso te recomiendo usar <fgets> y sería tan simple como <fgets(cadena1, 10, stdin);> es decir guardar en cadena1 los 10 primeros caracteres cogidos de la entrada estándar. - Segundo... Pero este trozo de código que sentido tiene?? :huh: Código Traduzco por si las moscas: si el caracter guardado en cadena1[11] es mayor que 10 (supongo que comparará en Ascii lo que tampoco tiene mucho sentido creo yo), mostramos por pantalla que no se puede exceder de 10 caracteres; sino (osea si cadena1[11] no es mayor que 10) mientras cadena1[11] sea mayor que 10 que haga el resto del código... Te das cuenta que es un sin sentido? :-\ PD: El while va sin ";". El do while sí va con ";". Aunque siga estando mal para futuros programas. - Tercero: no repitas código (lo que se conoce como principio de una única vez). Si en ambos casos del switch acabas haciendo lo mismo, hazlo una vez hayas salido del switch y así sólo lo pones una vez. - Cuarto: quieres repetir el programa? Aquí tienes un ejemplo para que lo adaptes. Código PD: Los caracteres entre comillas simples, las cadenas de caracteres entre comillas dobles. Edit: He estado probando a ver cómo podría hacer el programa y aunque he conseguido avanzar algo, no consigo que quede del todo correcto. El código que he implementado es el siguiente: Código
Lo que no consigo arreglar es que si introduces un correo y deseas escribir otro, si el segundo nombre es más corto que el primero se repite el primer nombre. Además si el segundo nombre no es más corto se añade el correo anterior y se concatena la nueva opción. Os pongo un ejemplo para que veáis a lo que me refiero: nombre1: aaaaaa opcion1: 1 email1: "aaaaaa@hotmail.com" Hasta aquí todo bien pero ahora introducimos "y" para crear otro correo: nombre2: bb opcion2: 2 email2: "bbaaaa@hotmail.com@gmail.com" No sé muy bien como solucionar esto. Si alguien puede echar un vistazo al código anterior y corregirme si me he equivocado en algo... Dentro del propio código hay algunos comentarios sobre el porqué de algunas partes del código (he averiguado la línea en la que sucede ese error que he explicado antes y está señalado en el código). Y por último me gustaría que el código quedase bien, es decir, si se pudiese arreglar el código sin añadir un montón de cálculos incomprensibles (no sé si me explico). PD: Por este tipo de cosas me quedo con C++. Pero me gustaría conseguir resolver este programa :rolleyes: |