Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Miguel2097 en 12 Diciembre 2016, 07:23 am



Título: Duda con estructuras y punteros
Publicado por: Miguel2097 en 12 Diciembre 2016, 07:23 am
Hola tengo una duda respecto al almacenamiento de datos en estructuras y creo que esto también va ligado a punteros pero no sé mucho sobre este tema.

Resulta ser que ocupo capturar los datos mediante una estructura y luego almacenarlos en una matriz, creí que lo estaba haciendo bien pero cuando quiero imprimir no me imprime nada, espero que me puedan ayudar con esto gracias. :huh:

Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. struct strdatos {
  7.  
  8. string cedula;
  9. string nombre;
  10. string edad;
  11. string salario;
  12.  
  13. }Empleado;
  14.  
  15.  
  16. int main () {
  17.  
  18. string mat [3][4];
  19. int f = 0;
  20. int c = 0;
  21.  
  22. int opc;
  23.  
  24. do {
  25.  
  26. system("cls");
  27. cout << "***********  Menu ******************" << endl;
  28. cout << "1 . Ingresar Datos" << endl;
  29. cout << "2. Mostrar Planilla" << endl;
  30. cout << "3. Salir" << endl << endl;
  31. cin >> opc;
  32. cout << endl;
  33.  
  34.  
  35.  
  36. switch (opc) {
  37.  
  38. case 1:
  39.  
  40. system ("cls");
  41.  
  42. for (f = 0; f <= 2; f++) {
  43.  
  44.  
  45. cout << "Ingrese Cedula ";
  46. cin >> Empleado.cedula;
  47. Empleado.cedula = mat [f][0];
  48.  
  49. cout << "Ingrese Nombre ";
  50. cin >> Empleado.nombre;
  51. Empleado.nombre = mat [f][1];
  52.  
  53. cout<< "Ingrese Edad ";
  54. cin >> Empleado.edad;
  55. Empleado.edad = mat [f][2];
  56.  
  57. cout<< "Ingrese Salario ";
  58. cin >> Empleado.salario;
  59. Empleado.salario = mat [f][3];
  60.  
  61. cout << "Empleado Ingresado" << endl << endl;
  62.  
  63. for (c = 0; c <= 3; c++){
  64.  
  65. }
  66. }
  67. break;
  68.  
  69. case 2:
  70.  
  71. for (f = 0; f <= 2; f++) {
  72. for (c = 0; c <= 3; c++){
  73.  
  74. cout << mat [f][c] << " ";
  75.  
  76. }
  77. }
  78.  
  79. }// Switch
  80.  
  81.  
  82. }while (opc != 3);
  83.  
  84.  
  85. return 0;
  86. }
  87.  


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Duda con estructuras y punteros
Publicado por: engel lex en 12 Diciembre 2016, 07:36 am
Código
  1. cout << "Ingrese Cedula ";
  2. cin >> Empleado.cedula;
  3. Empleado.cedula = mat [f][0];

te traduzco tu código


Código:
imprimir "ingrese cedula"
Empleado.cedula ahora contendrá valor ingresado por el usuario
Empleado.cedula ahora contendrá valor ubicado en mat en la posición "f" sub indice 0

luego imprimes el contenido de mat... el problema es... nunca pusiste ningún valor en mat


Título: Re: Duda con estructuras y punteros
Publicado por: Miguel2097 en 12 Diciembre 2016, 07:42 am
Gracias a por tu respuesta!

Aún no entiendo bien, creí que al hacer el Empleado.cedula = mat [f][0] ya lo estaba guardando en la matriz  pero cuando lo imprimo no sale nada por pantalla que seria en el case 2


Título: Re: Duda con estructuras y punteros
Publicado por: engel lex en 12 Diciembre 2016, 07:46 am
te explico... el operador "=" solo funciona como en matemática, logica y cualquier ambito común... es decir funciona de derecha a izquierda.... el contenido a la derecha será copiado en la izquierda


Código
  1. int a = 1;
  2. int b = 2;
  3.  
  4. a = b;

en ese caso el contenido de b será copiado en a, nunca lo contrario... lo mismo pasa para la matriz...


Código
  1. Empleado.cedula = mat [f][0];

el contenido de la derecha será copiado en la izquierda, nunca lo contrario

para que el contenido se coloque en la matriz, tienes que colocarla a la izquierda

es decir

Código
  1. mat [f][0] = Empleado.cedula;


Título: Re: Duda con estructuras y punteros
Publicado por: Miguel2097 en 12 Diciembre 2016, 07:57 am
Genial amigo ya entendi!

Muchas Gracias por tu ayuda!!  ;D

Código
  1. cout << "Ingrese Cedula ";
  2. cin >> Empleado.cedula;
  3. Empleado.cedula = mat [f][0];

te traduzco tu código


Código:
imprimir "ingrese cedula"
Empleado.cedula ahora contendrá valor ingresado por el usuario
Empleado.cedula ahora contendrá valor ubicado en mat en la posición "f" sub indice 0

luego imprimes el contenido de mat... el problema es... nunca pusiste ningún valor en mat


Disculpa la molestia ahora tengo un pequeño problema con un calculo matemático, ocupo que todo salario mayor a 50.000 se le haga un aumento en el 7% , los demas calculos si me estan funcionando correctamente excepto el de mayor a 50.000.



   
               for (f = 0; f <= 2; f++) {
                  for (c = 0; c <= 3; c++){
                     
                     cout << mat [f][c] << " ";
                     
                  }
                  
                  cout << endl;
                  
                  stringstream (mat[f][3]) >> aumento;
                  
                  if (aumento < 50000 ) {
                     aumento = (aumento * 0.3) + aumento;
                     
                  }else if (aumento = 50000) {
                     aumento = (aumento * 0.15 ) + aumento;
                     
                  }else if (aumento > 50001 ) {
                     aumento = (aumento * 0.07) + aumento;
                     
                  }

Cabe destacar que todo valor mayor a 50.000 mil me imprime con el aumento 57.500  :huh:

MOD: No hacer triple post. Usa el botón modificar.