Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/11/2012, 12:01
antonio715
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 11 años, 8 meses
Puntos: 0
Mala ejecución de estructura

Código C++:
Ver original
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. struct clientes
  10.     {
  11.         char nombre [50];  
  12.         int numero_unidades;
  13.         float precio;
  14.         char estado; //p: pagado, m: moroso, a: atrasado
  15.     };
  16.    
  17. void leer_clientes (clientes *listado)
  18. {
  19.  
  20.  
  21.     cout<<"Introduzca el nombre del cliente: ";
  22.     cin.getline(listado->nombre, 50);
  23.     cout<<"Introduzca el numero de unidades: ";
  24.     cin>>listado->numero_unidades;
  25.     cout<<"Introduzca el precio: ";
  26.     cin>>listado->precio;
  27.     cout<<"Introduzca el estado (p: pagado, m: moroso, a: atrasado): ";
  28.     cin>>listado->estado;
  29.    
  30. }
  31. void escribe_clientes (clientes listado)
  32. {
  33.      cout <<"Nombre del cliente: "<<listado.nombre<<endl;
  34.      cout <<"Numero de unidades: "<<listado.numero_unidades<<endl;
  35.      cout <<"Precio: "<<listado.precio<<" €"<<endl;
  36.      cout <<"Estado: ";
  37.      switch (listado.estado)
  38.        {
  39.         case 'p': cout <<"pagado"; break;
  40.         case 'm': cout <<"moroso"; break;
  41.         case 'a': cout <<"atrasado"; break;
  42.         default: cout <<"Estado no válido"; break;                
  43.        }
  44.      cout<<endl;
  45.      
  46. }
  47.  
  48. int main()
  49. {  
  50.     clientes listado [3];
  51.     for (int i=0; i<3; i++)
  52.     {
  53.      leer_clientes (&listado[i]);
  54.      escribe_clientes (listado[i]);
  55.     }
  56.    
  57.     system("PAUSE");
  58.     return EXIT_SUCCESS;
  59.  
  60. }

Compila bien. Lo ejecuto, me pide los datos del primero cliente listado[0], le meto los datos, me los escribe y me empieza a pedir los datos del segundo...
Aquí me aparece:

Introduzca el nombre del cliente: Introduzca el numero de unidades:

No puedo introducir el nombre del cliente, se salta el espacio... no sé si es un problema con el cin.getline.. quizás no se puede usar dos veces no sé..

Alguna idea? gracias

Pd: por qué no aparecen las palabras tildadas en la ejecución en ms dos? como por ejemplo "Estado no válido" que aparece "Estado no vßlido"

Última edición por antonio715; 24/11/2012 a las 12:04 Razón: añadir postdata