elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda ejercicio principiante
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda ejercicio principiante  (Leído 2,501 veces)
daniloops

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Ayuda ejercicio principiante
« en: 29 Abril 2014, 19:52 pm »

Hola soy primerizo en esto y  me piden ingresar la edad y estado civil de 10 personas pero al poner mi codigo solo me lee la edad y no puedo ingresar el estado civil(c=casado s=soltero) que tengo mal??
debo definir otro conrador para la variablee estado? o que :c saludos

#include <stdio.h>
#include <stdlib.h>

main()
{
      int edad,conta=0;
      char estado;
     
      while(conta<5)
      {
      printf("ingrese edad \n");
      scanf("%d",&edad);
     
      printf("ingrese estado civil \n");
      scanf("%c",&estado);
     
      conta=conta+1;
      } // fin while
     
      system("pause");
     
      }


En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Ayuda ejercicio principiante
« Respuesta #1 en: 29 Abril 2014, 21:02 pm »

Estás mal en la línea:

Código
  1. scanf("%c",&estado);

Hasta donde yo sé eso no se hace. Cambialo por:

Código
  1. estado = getche();


En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Ayuda ejercicio principiante
« Respuesta #2 en: 29 Abril 2014, 21:13 pm »

Para estos casos deberias implementar una estructura donde puedes guardar los datos de las distintas personas una tal como

Código
  1. struct datos{
  2.    char estado_civil[12];
  3.    int edad;
  4.  }persona[10];
  5.  
  6. int main(void)
  7. {
  8.    int i;
  9.  
  10.    for (i = 0; i < cant; i++){
  11.        scanf("%d", &persona[i].edad);
  12.        scanf("%s", persona[i].estado_civil);
  13.    }
  14.  
  15.    return 0;
  16. }

Saludos...
« Última modificación: 29 Abril 2014, 21:15 pm por Blaster » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Ayuda ejercicio principiante
« Respuesta #3 en: 29 Abril 2014, 21:25 pm »

Solo quería añadir que usar system no es demasiado recomendado, y que como más o menos ya indico Blaster, si necesitas hacer un bucle con un indice es mejor usar for que while, entonces la cosa quedaría
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. main()
  5. {
  6.      int edad;
  7.      char estado;
  8.  
  9.      for(int conta=0;conta<5;conta++) /* conta++ es equivalente a conta=conta+1 ,puedes usar ++conta, que es similar que no igual a conta++*/
  10.      {
  11.      printf("ingrese edad \n");
  12.      scanf("%d",&edad);
  13.  
  14.      printf("ingrese estado civil \n");
  15.      scanf("%c",&estado);
  16.      } // fin for
  17.  
  18.      system("pause");
  19.  
  20.      }
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda ejercicio principiante
« Respuesta #4 en: 29 Abril 2014, 23:18 pm »

me piden ingresar la edad y estado civil de 10 personas pero al poner mi codigo solo me lee la edad y no puedo ingresar el estado civil(c=casado s=soltero) que tengo mal?
El problema se debe que la función scanf cuando se utiliza con el especificador "%c" (también ocurre con "%[]") no descarta el espacio blanco. Supongamos que al pedir la edad introduces:
Código:
18{ENTER}
Los caracteres '1' y '8' se procesan por scanf para obtener el entero 18 y se almacena en la variable "edad". El avance de linea se queda en el bufer de la entrada estándar.

Cuando pides el estado scanf lee el avance de linea y lo almacena en la variable "estado", para que esto no ocurra debes utilizar:
Código
  1. printf("ingrese edad \n");
  2. scanf("%d",&edad);
  3.  
  4. printf("ingrese estado civil \n");
  5. scanf(" %c" /* <== */,&estado);
Con " %c" el espacio indica que se debe descartar primero el espacio blanco (el '\n' de la linea anterior) y solo entonces tomar el carácter que sera almacenado en "estado".

Si te interesa el tema puedes utilizar el motor de búsqueda para revisar los temas relacionados con el bufer de la entrada estándar, hay por lo menos media docena.

----

Aparte de eso el programa tiene varias deficiencias, las dos mas importantes: 1) te piden obtener la información de diez personas pero tu pides solo cinco y 2) esa información se pierde ya que utilizas las mismas variables (edad y estado) para todas las personas.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
daniloops

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Ayuda ejercicio principiante
« Respuesta #5 en: 30 Abril 2014, 01:08 am »

uuf gracias por todas las respuestas la verdad es que como estoy recien comenzando no entiendo mucho algunos codigos como el "for" y demases, el profe solo nos ha enseñado la estructura while, los if-else y uso de contadores nada mas, aun que deben ser parecidas, pero encontre bastante info buena en el foro asi q de hoy me pongo a intrusear muchsa gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda soy principiante! « 1 2 3 »
Programación Visual Basic
xDie 28 8,914 Último mensaje 18 Enero 2007, 20:39 pm
por xDie
Ayuda con ejercicio principiante
Programación C/C++
JuanPio 9 3,871 Último mensaje 5 Noviembre 2012, 13:23 pm
por leosansan
Ejercicio #1 Java(Principiante)
Java
ToxicSmoke 1 2,403 Último mensaje 23 Marzo 2014, 06:06 am
por ToxicSmoke
Duda para ejercicio en C (principiante)
Programación C/C++
santibarquero98 2 1,904 Último mensaje 19 Mayo 2015, 21:59 pm
por Seyro97
[Ayuda]Ejercicio de principiante
Programación C/C++
bestfriend 2 1,563 Último mensaje 20 Mayo 2015, 22:02 pm
por bestfriend
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines