Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jenniferpd en 28 Septiembre 2014, 00:23 am



Título: Duda con Array c++ 2 Dimensiones y vector de profundiad char nombre[X][Y]
Publicado por: jenniferpd en 28 Septiembre 2014, 00:23 am
estoy iniciando en el mundo de la programacion y un amigo me dijo que empezara con c++ primero para aprender a programar, horita estoy algo confundida con un array o arreglo
le explico este es mi code:

Código:

// LIBRERIAS
#include <iostream>
using namespace std;

// Variables Globales
const int  NR = 3;
int i,j;
char nombre[10][10],apellido[10][10];


// Funcion Madre
void main(){

//test 1

cout << "Ingrese 5 Nombres y apellidos" << endl;

for (i = 0; i < NR; i++ ){

for ( j = 0; j < NR; j++){

cout << "Nombre N[" << i << "][" << j << "]: ";
cin >> nombre[i][j];
cout << "apellido N[" << i << "][" << j << "]: ";
cin >> apellido[i][j];
}
}

system("pause");
}

el ciclo for me actua bien es decir asi:
primer ciclo de la i=0 y dentro se ejecuta la j hasta 3 veces
[0 ][0 ] Nombre:
[0 ][0 ] apellido:
[0 ][1 ] Nombre:
[0 ][1 ] apellido:
[0 ][ 2] Nombre:
[ 0][2 ] apellido:
[0 ][3 ] Nombre:
[0 ][3 ] apellido:
segundo ciclo de la i=1
[1][0] Nombre:
[1][0] apellido:
[1][1] Nombre:
[1][1] apellido:
[1][2] Nombre:
[1][2] apellido:
[1][3] Nombre:
[1][3] apellido:
i = etc...
por favor corrijan me si estoy errada es asi verdad?

1)bueno el problema es el siguiente:
cuando ingreso 1 sola letra el se ejecuta bien pero cuando ingreso un nombre como jennifer se vuelve loco no entiendo xq

2) no se supone que nombre [x ] [y ]
x= numero de filas
y= numero de columnas
hay yo tengo un arreglo
nombre: 3x3 = 9 nombres
apellidos: 3x3 = 9 apellidos?

3) char nombre [a ][b ] esto no es un vector de profundidad? xq solo me deja guarda 1 letra?
a = total de filas
b= tatal de caracteres que se guardan en cada casilla?


estoy enredada por favor aclaren mis dudas y gracias!


Título: Re: Duda con Array c++ 2 Dimensiones y vector de profundiad char nombre[X][Y]
Publicado por: milx86 en 28 Septiembre 2014, 01:16 am
Hola, yo lo hize asi
Código
  1. // LIBRERIAS
  2. #include <iostream>
  3. #include <stdio.h>
  4. using namespace std;
  5.  
  6. // Variables Globales
  7. const int  NR = 2;
  8. int i,j;
  9. char nombre[10][10];
  10. char apellido[10][10];
  11.  
  12. // Funcion Madre
  13. int main(void){
  14.  
  15.  
  16. cout << "Ingrese 5 Nombres y apellidos" << endl;
  17.  
  18. for (i = 0; i < NR; i++ ){
  19. cout << "Nombre [" << i << "]: ";
  20. cin >> nombre[i];
  21. fflush(stdin);
  22. cout << "apellido [" << i << "]: ";
  23. cin >> apellido[i];
  24. fflush(stdin);
  25. }
  26.  
  27. for (i = 0; i < NR; i++ ){
  28. cout << "Nombre [" << i << "]: ";
  29. cout << nombre[i] << endl;
  30. cout << "Apellido [" << i << "]: ";
  31. cout << apellido[i] << endl ;
  32.  
  33. }
  34. return 0;
  35. }
  36.  

Salida:
Código:
Ingrese 2 Nombres y apellidos
Nombre [0]: Perico
apellido [0]: Palo
Nombre [1]: Brujo
apellido [1]: Brujito
Nombre [0]: Perico
Apellido [0]: Palo
Nombre [1]: Brujo
Apellido [1]: Brujito

Estas creando un arreglo bidimensional de 10 filas por 10 columnas.
Por lo que te da para:
                           Pos Colum.
                           0123456789
Apellido [cero] ="dasd56789X"
Apellido [2] =    "huu456789X"
   .. ...
Apellido [9] =    "gvvb56789X"
Entonces no creo que debas manejar el indice de las columnas.

Ahora el problema que tambien tenia era acerca del buffer(creo xD).
AFcvGLEMgFU

Saludos  :D


Título: Re: Duda con Array c++ 2 Dimensiones y vector de profundiad char nombre[X][Y]
Publicado por: rir3760 en 28 Septiembre 2014, 04:07 am
Ahora el problema que tambien tenia era acerca del buffer(creo xD).
En C++ para descartar el resto de la linea (introducida vía la entrada estándar) se puede utilizar un bucle o bien las funciones sync o ignore, ejemplos de ellos existen en la base de datos de los foros, solo hay que utilizar el motor de búsqueda.

El uso de fflush(stdin) en C y C++ no se recomienda, las razones de ello se explican en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Un saludo