Una ayuda con registros porfavor

Iniciado por carlosabcs18, 1 Septiembre 2014, 00:06 AM

0 Miembros y 1 Visitante están viendo este tema.

carlosabcs18

Hola, me dejaron este ejercicio de registros y se que es solo el comienzo pero quiero que porfavor me ayuden a encontrar la forma de que el programa lea los espacios en blanco, algo asi como lo que hace gets(), pero al intentar con ese comando no funciona, tambien probe con cin.getline y de igual manera, falló.
Aca abajo les dejo el código:


//En una tienda se quiere registrar vendedores (dni, nombres, apellidos, dirección(calle, numero, urbanización) )
//Registrar "N" vendedores con sus respectivos productos
//Mostrar todos los vendedores con todos sus datos y sus respectivos productos
//Mostrar los datos de un vendedor específico (ingresando su número de orden)
//Mostrar los productos vendidos de un vendedor específico (ingresando su número de orden): producto, cantidad, precioventa, Subtotal. y finalmente el Total Subtotal=cantidad * precioventa Total = sumatoria de los subtotales
//Eliminar un vendedor específico (ingresando su número de orden)
//Búsqueda por dni: ingresa el dni de un vendedor y que muestre su dirección
#include<iostream>
#include<string>
using namespace std;

struct vendedor{
   int dni;
   struct nombres;
   char apellidos[25];
   struct direccion{
      char calle[20];
      int numero;
      char urbanizacion[14];
   } dir;
   
};
//EL PROBLEMA ES HACER QUE LEA LOS ESPACIOS EN BLANCO AL REGISTRAR LOS NOMBRES O LOS APELLIDOS, ya que estos son 2.
int main(){
   int n,i;
   cout<<"Cuantos vendedores desea registrar?"<<endl;
   cin>>n;
   vendedor vendedores[n];
   for(i=0;i<n;i++){
      cout<<"Ingrese DNI: "<<endl;   cin>>vendedores.dni;
      cout<<"Ingrese nombres del vendedor "<<i+1<<" :"<<endl;   
      cin>>vendedores.nombres;
      cout<<"Ingrese apellidos del vendedor "<<i+1<<": "<<endl;   
      cin>>vendedores.apellidos;
      cout<<"Ingrese direccion del vendedor"<<i+1<<" :"<<endl;
      cout<<"Calle: ";         cin>>vendedores.dir.calle,20; cout<<endl;   
      cout<<"Numero: ";      cin>>vendedores.dir.numero;      cout<<endl;
      cout<<"Urbanizacion: ";   cin>>vendedores.dir.urbanizacion;
   }
   return 0;
}


PD: Lo hice con "cin" por ahora pero necesito que de todas maneras lea los espacios, espero que me ayuden. Saludos :D

flony

#1
una opcion seria usar la cabecera string
#include <string>







#include <string>
#include<iostream>

struct vendedor{
...
...
char apellidos[25]; // aca deberia ser string apelido;
...
...
   } dir;
   
};
int main(){
...
...
cout<<"Ingrese nombres del vendedor "<<i+1<<" :"<<endl;
getline(cin, apellido);



esa era la idea :)
si un problema no tiene solucion entonces no es un problema...es algo inevitable