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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


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

Desconectado Desconectado

Mensajes: 38


Copartícipe del conocimiento


Ver Perfil
Problema con Arrays para almacenar [C++]
« en: 22 Julio 2016, 20:21 pm »

Buenas amigos, un cordial saludos soy nuevo en el foro y espero ser copartícipe de los conocimientos que provee este grandioso foro.


Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int llenar (int estudiantes[], int notas[]);
  6. int imprimir(int estudiantes[], int notas[]);
  7. int menu ();
  8.  
  9. int num;
  10. int asignatura=5;
  11.  
  12. int llenar (int estudiantes[], int notas []){
  13.  
  14. cout<<"Deme el numero de estudiante a insertar: "<<endl<<endl;
  15. cin>>num;
  16.  
  17. for(int i=0; i<=num-1; i++){
  18. cout<<"\nDame el estudiante "<<i+1<<endl;
  19. cin>>estudiantes[i];
  20. for (int x=0; x<asignatura; x++){
  21. cout<<"\nNota "<<x+1<<" del estudiante "<<i+1<<" :";
  22. cin>>notas[x];
  23. }
  24.  
  25. }
  26.  
  27. }
  28.  
  29. int imprimir (int estudiantes [], int notas []){
  30. for(int i=0; i<=num-1; i++){
  31. cout<<"\nESTUDIANTE "<<i+1<<endl<<endl;
  32. cout<<estudiantes[i]<<endl<<endl;
  33. for (int x=0; x<asignatura; x++){
  34. cout<<notas[x]<<endl;
  35. }
  36.  
  37. }
  38.  
  39. }
  40.  
  41. int menu (){
  42. int opc;
  43. cout<<"1.LLENAR\n2.IMPRIMIR\n3.SALIR"<<endl;
  44. cin>>opc;
  45. return opc;
  46. }
  47.  
  48. int main(){
  49.  
  50. int estudiantes[100];
  51. int notas[100];
  52. int opc;
  53.  
  54. do{
  55. opc=menu();
  56. switch (opc){
  57. case 1:
  58. llenar(estudiantes, notas);
  59. break;
  60. case 2:
  61. imprimir(estudiantes, notas);
  62. break;
  63. case 3:
  64. cout<<"\nADIOS"<<endl;
  65. break;
  66. }
  67. }
  68. while (opc !=3);
  69. system ("pause");
  70. }
  71.  


 



¿Algo esta mal planteado? le he dado bastante vuelta al problema y no consigo la solución, de antemano les agradezco por leer mi problema.

Un saludo compañeros.


« Última modificación: 23 Julio 2016, 03:39 am por Jesusinfo » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.697


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Problema con un Arrays unidimensional para almacenar n cantidad de notas [C++]
« Respuesta #1 en: 22 Julio 2016, 20:39 pm »

El contador i siempre inicia en 0 y hasta menor que  5

Saludos!


En línea

Jesusinfo

Desconectado Desconectado

Mensajes: 38


Copartícipe del conocimiento


Ver Perfil
Re: Problema con un Arrays unidimensional para almacenar n cantidad de notas [C++]
« Respuesta #2 en: 22 Julio 2016, 20:52 pm »

Gracias por su pronta respuesta amigo. En este caso estoy diciendo que "i" recorrerá las n cantidad de estudiante y "x"recorrerá las 5 notas de cada estudiante, me captura las n cantidad de estudiante pero no las 5 notas diferentes de cada estudiante, me captura solo la 5 notas del ultimo estudiante y las coloca en todos los estudiante, como se visualiza en la imagen.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.697


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Problema con un Arrays unidimensional para almacenar n cantidad de notas [C++]
« Respuesta #3 en: 22 Julio 2016, 21:15 pm »

En el X haces eso siempre escribes en los mismos 5 lugares.

Necesitas algo como un desplazamiento seria como

Código
  1. 5* i +x

Te dejo este video


En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Problema con un Arrays unidimensional para almacenar n cantidad de notas [C++]
« Respuesta #4 en: 22 Julio 2016, 21:56 pm »

Hola tienes varios problemas de entrada los nombres de las personas los estas manejando como enteros tienes dos opciones o manejarlos como string o un arreglo de char al ver que estas en C++ aconsejo los strings  otra cosa es que no estabas guardando correctamente las notas ya que las estabas  sobrescribiendo.

Al imprimir no recorrias correctamente los arreglos de notas y nombres de los estudiantes y por eso los datos no eran los correctos, bueno me di a la tarea de modificar tu programa y ya funciona pero tiene detalles.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void llenar (string  estudiantes[], int notas[]);
  6. void imprimir(string estudiantes[], int notas[]);
  7. int menu ();
  8.  
  9. //variables
  10. int num=0;
  11. int asignatura=5;
  12.  
  13. string estudiantes[100];
  14. int posicionesEstudiante=0;
  15.  
  16. int notas[100];
  17. int posicionNotas=0;
  18.  
  19. int main()
  20. {
  21.  
  22.    int opc;
  23.  
  24.    do
  25.    {
  26.        opc=menu();
  27.        switch (opc)
  28.        {
  29.        case 1:
  30.            llenar(estudiantes, notas);
  31.            break;
  32.        case 2:
  33.            imprimir(estudiantes, notas);
  34.            break;
  35.        case 3:
  36.            cout<<"\nADIOS"<<endl;
  37.            break;
  38.        }
  39.    }
  40.    while (opc !=3);
  41.    cin.get();
  42. }
  43.  
  44. void llenar (string estudiantes[], int notas [])
  45. {
  46.  
  47.    cout<<"Deme el numero de estudiante a insertar: "<<endl<<endl;
  48.    cin>>num;
  49.  
  50.    for(int i=0; i<=num-1; i++)
  51.    {
  52.        cout<<"\nDame el estudiante "<<i+1<<endl;
  53.        cin>>estudiantes[posicionesEstudiante];
  54.        for (int x=0; x<asignatura; x++)
  55.        {
  56.            cout<<"\nNota "<<x+1<<" del estudiante "<<i+1<<" :";
  57.            cin>>notas[posicionNotas];
  58.            posicionNotas++;
  59.  
  60.        }
  61.        posicionesEstudiante++;
  62.  
  63.    }
  64.  
  65. }
  66.  
  67. void imprimir (string estudiantes [], int notas [])
  68. {
  69.    int contador=0;
  70.    for(int i=0; i<=posicionesEstudiante-1; i++)
  71.    {
  72.        cout<<"\nESTUDIANTE "<<i+1<<endl<<endl;
  73.        cout<<estudiantes[i]<<endl<<endl;
  74.        for (int x=0; x<asignatura; x++)
  75.        {
  76.            cout<<notas[contador]<<endl;
  77.            contador++;
  78.        }
  79.  
  80.    }
  81.  
  82. }
  83.  
  84. int menu ()
  85. {
  86.    int opc;
  87.    cout<<"1.LLENAR\n2.IMPRIMIR\n3.SALIR"<<endl;
  88.    cin>>opc;
  89.    return opc;
  90. }
  91.  

Si quieres puedes reformular tu  programa y usar structs para poder tener una mejor abstraccion.
Ejemplo:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int NUMERO_ASIGNTURAS=5;
  6.  
  7. struct Estudiante
  8. {
  9.    string nombre;
  10.    int asignaturas[NUMERO_ASIGNTURAS];
  11. };
  12.  
  13. int main(){
  14.  Estudiantes estudiantes[100];
  15.  
  16.  return 0;
  17. }
  18.  

Si sabes usar vector o listas enlazadas puedes sustuir los arreglos.
Si tienes dudas avisanos saludos...

« Última modificación: 22 Julio 2016, 21:59 pm por crack81 » En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Jesusinfo

Desconectado Desconectado

Mensajes: 38


Copartícipe del conocimiento


Ver Perfil
Re: Problema con un Arrays unidimensional para almacenar n cantidad de notas [C++]
« Respuesta #5 en: 22 Julio 2016, 22:48 pm »

En el X haces eso siempre escribes en los mismos 5 lugares.

Necesitas algo como un desplazamiento seria como

Código
  1. 5* i +x

Te dejo este video




Muchisimas gracias amigo me resolviste el problema tarde un poco en comprender el desplazamiento que debo de hacer para no sobrescribir las notas en el arreglo



Hola tienes varios problemas de entrada los nombres de las personas los estas manejando como enteros tienes dos opciones o manejarlos como string o un arreglo de char al ver que estas en C++ aconsejo los strings  otra cosa es que no estabas guardando correctamente las notas ya que las estabas  sobrescribiendo.

Al imprimir no recorrias correctamente los arreglos de notas y nombres de los estudiantes y por eso los datos no eran los correctos, bueno me di a la tarea de modificar tu programa y ya funciona pero tiene detalles.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void llenar (string  estudiantes[], int notas[]);
  6. void imprimir(string estudiantes[], int notas[]);
  7. int menu ();
  8.  
  9. //variables
  10. int num=0;
  11. int asignatura=5;
  12.  
  13. string estudiantes[100];
  14. int posicionesEstudiante=0;
  15.  
  16. int notas[100];
  17. int posicionNotas=0;
  18.  
  19. int main()
  20. {
  21.  
  22.    int opc;
  23.  
  24.    do
  25.    {
  26.        opc=menu();
  27.        switch (opc)
  28.        {
  29.        case 1:
  30.            llenar(estudiantes, notas);
  31.            break;
  32.        case 2:
  33.            imprimir(estudiantes, notas);
  34.            break;
  35.        case 3:
  36.            cout<<"\nADIOS"<<endl;
  37.            break;
  38.        }
  39.    }
  40.    while (opc !=3);
  41.    cin.get();
  42. }
  43.  
  44. void llenar (string estudiantes[], int notas [])
  45. {
  46.  
  47.    cout<<"Deme el numero de estudiante a insertar: "<<endl<<endl;
  48.    cin>>num;
  49.  
  50.    for(int i=0; i<=num-1; i++)
  51.    {
  52.        cout<<"\nDame el estudiante "<<i+1<<endl;
  53.        cin>>estudiantes[posicionesEstudiante];
  54.        for (int x=0; x<asignatura; x++)
  55.        {
  56.            cout<<"\nNota "<<x+1<<" del estudiante "<<i+1<<" :";
  57.            cin>>notas[posicionNotas];
  58.            posicionNotas++;
  59.  
  60.        }
  61.        posicionesEstudiante++;
  62.  
  63.    }
  64.  
  65. }
  66.  
  67. void imprimir (string estudiantes [], int notas [])
  68. {
  69.    int contador=0;
  70.    for(int i=0; i<=posicionesEstudiante-1; i++)
  71.    {
  72.        cout<<"\nESTUDIANTE "<<i+1<<endl<<endl;
  73.        cout<<estudiantes[i]<<endl<<endl;
  74.        for (int x=0; x<asignatura; x++)
  75.        {
  76.            cout<<notas[contador]<<endl;
  77.            contador++;
  78.        }
  79.  
  80.    }
  81.  
  82. }
  83.  
  84. int menu ()
  85. {
  86.    int opc;
  87.    cout<<"1.LLENAR\n2.IMPRIMIR\n3.SALIR"<<endl;
  88.    cin>>opc;
  89.    return opc;
  90. }
  91.  

Si quieres puedes reformular tu  programa y usar structs para poder tener una mejor abstraccion.
Ejemplo:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int NUMERO_ASIGNTURAS=5;
  6.  
  7. struct Estudiante
  8. {
  9.    string nombre;
  10.    int asignaturas[NUMERO_ASIGNTURAS];
  11. };
  12.  
  13. int main(){
  14.  Estudiantes estudiantes[100];
  15.  
  16.  return 0;
  17. }
  18.  

Si sabes usar vector o listas enlazadas puedes sustuir los arreglos.
Si tienes dudas avisanos saludos...



Crack a ti tambien muchisimas gracias por tomarte la molesta de editar mi codigo para optimizarlo, maneje a los estudiantes como enteros porque todavia no he visto string, pero gracias a tu codigo lo voy analizar y aprendere su uso para adelantarme a los contenidos y estar preparado, corri tu codigo y funciono excelente aplicado desde otra logica con el mismo objetivo.

Muchas gracias a los dos por su buena atencion y su excelente explicacion aprendi bastante, a ese mismo codigo tengo que añardirle la funcion "INSERTAR, BUSCAR y BORRAR" estare publicando mis avances si tengo alguna duda o problema en otro tema mas adelante. ya que este tema me lo resolvieron.
« Última modificación: 23 Julio 2016, 03:35 am por Jesusinfo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con arrays en C#
.NET (C#, VB.NET, ASP)
Edu 4 4,322 Último mensaje 23 Noviembre 2010, 16:08 pm
por Edu
como almacenar correctamente unsigned *char a MSQL (Almacenar una imagen)
Programación C/C++
pedromigl010 1 2,431 Último mensaje 15 Octubre 2014, 12:17 pm
por eferion
Problema al almacenar valor de Checkbox
Programación Visual Basic
rapbyone 2 3,324 Último mensaje 6 Enero 2015, 13:12 pm
por leomoon45
Problema al almacenar un enum en array
Java
JonaLamper 0 1,454 Último mensaje 8 Enero 2015, 21:45 pm
por JonaLamper
Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)
Java
elenfatico 2 2,727 Último mensaje 7 Abril 2016, 00:44 am
por 50ShadesOfKenyi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines