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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con Vectores (solucionado)
« en: 3 Octubre 2012, 20:07 pm »

Hola a todos soy nuevo en esto de C++ y la programacion, pero haciendo un ejercicio, encuentro que necesito ingresar nombre y apellidos en una sola linea, por lo que declaro un vector, mas me da un error, que no se como solucionar.
Deberia poder ingresar cuantos nombres voy a necesitar, luego al pedir el primer nombre  "Roman Ruiz" guardarlo en el primer espacio del vector y asi ir agregando. Creo que el problema pueda estar en la declaracion del vector o al capturar el nombre.
Si alguien puede guiarme lo agradeceria mucho.
Código
  1. ]#include<iostream>
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<string.h>
  5. #include<ctype.h>
  6.  
  7. int a, b, c, d, noma[5], edad[15], x, y;
  8. char nom[50];// esta[15], grup[15];
  9. char nom1[50];
  10. //char nom[15][25];
  11. //string nom;
  12.  
  13. using namespace std;
  14.  
  15. void ingresa_datos ()
  16. {
  17.    int cont = 0;
  18.    cout<<"     D A T O S  D E  A L U M N O S "<<endl;
  19.    cout<<" Cuantos datos quiere ingresar <15 maximo>: ";
  20.    cin>>a;
  21.    for (x=0;x<=a-1;x++)
  22.    {
  23.        cout<<" Nombre del Alumno "<<cont+1<<" :";
  24.        cin>>nom[x];
  25.        cont++;
  26.    }
  27.   getch();
  28.   clrscr();
  29. }//fin
  30.  
  31. main()
  32. {
  33.      ingresa_datos();
  34.     }        
  35.  


« Última modificación: 9 Octubre 2012, 20:30 pm por jadiaz » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con Vectores
« Respuesta #1 en: 4 Octubre 2012, 00:12 am »

Deberia poder ingresar cuantos nombres voy a necesitar, luego al pedir el primer nombre  "Roman Ruiz" guardarlo en el primer espacio del vector y asi ir agregando.
El código corregido, aunque con la tan denostada función fflush, hace exactamente lo que quieres: introducir nombre y apellido que se va guardando en el array bidimensional. Supongo que existen otras soluciones más óptimas, pero lo mío no es el C++:
Código
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<string.h>
  5. #include<ctype.h>
  6.  
  7. using namespace std;
  8.  
  9. void ingresa_datos ()
  10. {
  11.    int a, x,cont = 0;
  12.    cout<<"     D A T O S  D E  A L U M N O S "<<endl;
  13.    cout<<" Cuantos datos quiere ingresar <15 maximo>: ";
  14.    cin>>a;
  15.    char ch,nom[100],nomb [a][100];
  16.    for (x=0;x<=a-1;x++)
  17.        {
  18.            cout<<" Nombre del Alumno "<<x+1<<" :";
  19.            fflush (stdin);
  20.            fgets(nom,100,stdin);
  21.            strcpy (nomb [x],nom);
  22.        }
  23.   for (x=0;x<=a-1;x++) /*<===Imprime los nombres introducidos*/
  24.        cout<<nomb[x];
  25. }
  26.  
  27. main()
  28. {
  29.      ingresa_datos();
  30. }
  31.  


En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda con Vectores
« Respuesta #2 en: 4 Octubre 2012, 00:45 am »

Ya probe, funciona bien.

Ahora, |Lo que no hay que hacer en C/C++. Nivel basico|

Citar
2) fflush(stdin);

fflush(stdin) es un invitado casi diario. Pocas veces pasa un dia sin que alguien lo recomiende o lo mencione como la solucion! a los malos comportamientos de las pausas en los programas.

STDIN, como su nombre lo indica, significa 'Standard input'. Es decir, el ingreso por teclado.

Acorde al Standard, fflush espera solamente un stream de salida (STDOUT: 'Standard Output) por lo que el comportamiento con streams de entrada como STDIN es indefinido. Por mas que en algunas plataformas funcione, o que en algunos compiladores funcione, no deberia ser utilizado.

Por el otro lado, para evitar esas pausas fastidiosas es necesario evitar las funciones que dejan basura por doquier (como scanf();) y utilizar funciones como la ya mencionada fgets();

En resumen:

 para que el getchar funcione, limpia el buffer,antes de poner getchar/scanf/cin/gets o alguna orden tipo input usa fflush (stdin);

En línea


elkiy

Desconectado Desconectado

Mensajes: 129


Porque yo soy yo.. y usted es usted.


Ver Perfil WWW
Re: Ayuda con Vectores
« Respuesta #3 en: 4 Octubre 2012, 19:04 pm »

pues mira pone esto:

Código
  1. #include <string>
  2. using std::string;
  3. using std::getline;
  4.  
  5. #include <iostream>
  6. using std::cout;
  7. using std::endl;
  8. using std::cin;

crea una variable en el bloque que tu quieras:

Código
  1. string nombre; //crea variable

para que el usuario ingrese su nombre:

Código
  1. cout << "Ingrese su nombre: ";
  2. getline(cin, nombre);
  3. cout << endl;

ok, si queres que el usuario ingrese solamente un nombre con tantos caracteres especificos haz esto.

Código
  1. if (nombre.length() <= 15)
  2. {
  3. }
  4.  
  5. else
  6. {
  7. nombre = nombre.substr (0,15);
  8. cout << " se ha limitado tu nombre a los primeros 15 caracteres\n Bienvenido: ";
  9. cout << nombre;
  10. cout << endl;
  11. }
  12.  


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con Vectores
« Respuesta #4 en: 4 Octubre 2012, 19:12 pm »

Citar
Muy interesante, especialmente para mí que me muevo en C y apenas en C++. Muchas gracias por la aportación, repito :muy interesante.
Saludos!
En línea

jadiaz

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con Vectores (solucionado)
« Respuesta #5 en: 9 Octubre 2012, 20:29 pm »

Agradezco todas las respuestas quedo solucionado con la primera opcion. ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Vectores (Solucionado)
Programación C/C++
Angel Zero 2 2,248 Último mensaje 3 Junio 2011, 06:56 am
por Angel Zero
ayuda en vectores...!!!
Programación C/C++
Schiffer04 2 2,068 Último mensaje 13 Mayo 2012, 01:57 am
por utz
ayuda con vectores c++
Programación C/C++
indict 3 2,176 Último mensaje 15 Noviembre 2012, 09:23 am
por norris
Ayuda con vectores
Programación C/C++
norris 0 1,269 Último mensaje 17 Noviembre 2012, 21:11 pm
por norris
[Ayuda] Vectores
Programación C/C++
bemone 4 2,464 Último mensaje 23 Agosto 2013, 17:12 pm
por bemone
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines