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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 [3] 4
21  Programación / Programación C/C++ / Problema con registro y funciones en: 19 Octubre 2016, 23:51 pm
Buenas amigos, estoy trabajando con estructuras pero la verdad estoy un poco confundido,  ya que quiero llevar mi estructuras a arrays, pero no consigo pasarla por referencia aqui esta el codigo sencillo donde almancena una sola persona y una sola nota:

Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct lista_estudiantes{
  6. string nombres;
  7. int notas;
  8.  
  9. };
  10.  
  11. void llenar (lista_estudiantes& lista){
  12. cout<<"DAME EL NOMBRE: "<<endl;
  13. cin>>lista.nombres;
  14. cout<<"DAME LA NOTA DEL ESTUDIANTE"<<endl;
  15. cin>>lista.notas;
  16. }
  17.  
  18.  
  19.  
  20. void imprimir(lista_estudiantes lista){
  21. cout<<"\nNombre del estudiante: "<<lista.nombres<<endl;
  22. cout<<"NOTA: "<<lista.notas<<endl<<endl;
  23. }
  24.  
  25. int menu (){
  26. int opc;
  27. cout<<"1.LLENAR\n2.IMPRIMIR\n3.SALIR"<<endl;
  28. cin>>opc;
  29. return opc;
  30. }
  31.  
  32. int main(){
  33. struct lista_estudiantes lista;
  34. int opc;
  35.  
  36.  
  37.  
  38.  
  39. do{
  40. opc=menu();
  41. switch (opc){
  42. case 1:
  43. llenar(lista);
  44. break;
  45.  
  46. case 2:
  47. imprimir(lista);
  48. break;
  49.  
  50. case 3:
  51. cout<<"GRACIAS POR ENTRAR AL PROGRAMA "<<endl;
  52. break;
  53. }
  54. }
  55. while(opc !=3);
  56. system ("pause");
  57.  
  58. }
  59.  

Bien ese ejercicio quiere que haga lo siguiente:

1.Almacene N cantidad de estudiante
2. Con 5 notas
3. Y lo imprima

 pero no comprendo como pasar por referencia, lo intente hacer de esta manera

Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int num;
  5.  
  6. struct lista_estudiantes{
  7. string nombres;
  8. int notas;
  9.  
  10. };
  11.  
  12. void llenar (lista_estudiantes& lista){
  13. cout<<"Dame la cantidad de estudiante a insertar"<<endl;
  14. cin>>num;
  15. for(int i=0; i<num; i++){
  16. cout<<"DAME EL NOMBRE: "<<endl;
  17. cin>>lista[i].nombres;
  18. for (int x=0; x<6; x++){
  19. cout<<"DAME LA NOTA DEL ESTUDIANTE"<<endl;
  20. cin>>lista[x].notas;
  21. }
  22. }
  23. }
  24.  
  25.  
  26. void imprimir(lista_estudiantes lista){
  27. for(int i=0;i<num;i++){
  28. cout<<"\nNombre del estudiante: "<<lista[i].nombres<<endl;
  29. for(int x=0;x<6;i++){
  30. cout<<"NOTA: "<<lista[x].notas<<endl<<endl<<endl;
  31. }
  32. }
  33. }
  34. int menu (){
  35. int opc;
  36. cout<<"1.LLENAR\n2.IMPRIMIR\n3.SALIR"<<endl;
  37. cin>>opc;
  38. return opc;
  39. }
  40.  
  41. int main(){
  42. struct lista_estudiantes lista[1000];
  43. int opc;
  44.  
  45.  
  46. do{
  47. opc=menu();
  48. switch (opc){
  49. case 1:
  50. llenar(lista);
  51. break;
  52.  
  53. case 2:
  54. imprimir(lista);
  55. break;
  56.  
  57. case 3:
  58. cout<<"GRACIAS POR ENTRAR AL PROGRAMA "<<endl;
  59. break;
  60. }
  61. }
  62. while(opc !=3);
  63. system ("pause");
  64.  
  65. }

la verdad estoy muy confundido les agradecería su ayuda. :(
22  Programación / Programación C/C++ / Re: Problema con el metodo BubbleSort en: 13 Octubre 2016, 01:56 am

Podemos crear arrays cuyo tamaño sea determinado cuando se ejecuta el programa, pero no cambiarlo ni hacer que el array almacene otra ubicacion para no perder de vista donde estaba. Por tanto, no se puede crear un array que cambie de tamaño a medida que vaya necesitando mas(En realidad si, creando los arrays de forma dinamica pero uff, que cansado estoy de escribir. Ya cuando seas mayor veras como se hace eso xDD).

Ahora es cuando tu vienes y me dices: "Pero bueno, ¿Por que no has empezado diciendome directamente que no se puede y asi no me tengo que matar leyendo todo ese tocho de texto?"  :xD



Pero mira, una cosa que si puedes hacer es, en el metodo llenar cuando te dice "INDIQUE EL NUMERO DE ESTUDIANTES A UTILIZAR EN EL PROGRAMA: " Puedes con una variable crear el array con el tamaño justito y despues mientras que vas introduciendo nombres decir algo como "Dame el primer nombre del estudiante o escribe \"salir\" para dejar de seguir introduciendo datos". El numero que le indicas cuando pide numero seria el total del alumnos que van a estar. Algo es algo.Solo es una sugerencia.



[MOD] NO se debe hacer triple post.

Mucha gracias por tu respuesta y disculpame por lo tarde de mi respuesta, pero me parece de mucha utilidad tu informacion, es una verdad que lo he leido 2 veces ya y no entiendo NADA jajaja, entiendo tan solo una porción de toda la información pero estamos para eso para aprender y poco a poco tengo que ir agarrando el hilo a la cuestión. y pues iré estudiando punteros porque como bien dices es bastante difícil de entender, agarrare tu sugerencia y probare de esa manera, la cuestión es practicar pues nuevamente gracias estare publicando avances sobre este ejercicios, me han sido de mucha ayuda todos ustedes, son unos pro jaja.
23  Programación / Programación C/C++ / Re: Problema con el metodo BubbleSort en: 3 Octubre 2016, 19:43 pm
Voy a probar el código en windows, y por ello, pregunto, cual es el IDE y el compilador que estan usando para este código??

Hasta los momento me hace todas las operaciones que exijo correctamente el programa, en windows, yo paso la variable string como un arreglo string nombres[almacen] y le indico que almacen se incremente almacen++ para que aumente la longitud del vector y por ende me almacene todos los nombres.

El compilador es Dev C++ 5.11
24  Programación / Programación C/C++ / Re: Problema con el metodo BubbleSort en: 2 Octubre 2016, 22:59 pm

Estoy intentado correr el código correctamente para un solo estudiante en linux, ya que se presentan inconsistencias, una vez las tenga las voy a publicar, puede que ayude un poco.

Gracias por tus respuesta, me parece de utilidad comentar el codigo especificando las funciones de operaciones que puedan llegar a confundir, y si solventas el problema de linux te lo agradecería así aprendemos tanto yo como muchos cosas nuevas nuevamente gracias tu explicación me parece cierta desde el punto de vista que explicaste.
25  Programación / Programación C/C++ / Re: Problema con el metodo BubbleSort en: 2 Octubre 2016, 21:14 pm

La forma de solucionarlo es muy sencilla. Solo tienes que cambiar el numero de iteraciones del bucle de la variable j. En lugar de
Código
  1. for(j=0;j<5;j++)
pon
Código
  1. for(j=0;j<4;j++){

Muchisimas gracias 4dr14n31t0r Tienes razon y me has dando una gran ayuda has entendido mi problema y yo tu explicacion mejor imposible de verdad gracias, capte perfectamente la idea y como funciona, tiene que ser j<5 porque estoy comparando notas[j] con notas[j+1] ese pequeño detalle no lo capte me falta por desarrollar mas la lógica.

Tengo una duda con respecto a la funcion principal al darle limites al vector notas
yo lo tengo asi para que me reconozca sin ningun error todo:
Código
  1. int main(){
  2.  
  3. int estudiantes[num];
  4. int notas[500];

pero no quiero darle un valor como limite a mi vector notas ya que en un futuro podria crecer o decrecer, quisiera establecerlo con una variable, y lo he intentado de esta manera:

Código
  1. int notas[num*asignatura];
  2.  
me captura todos los estudiante y las notas, pero a la hora de imprimir me salta un error y deja de funcionar el programa. 

El otro que intente fue dejarlo vació  así

Código
  1. int notas[]={};
  2.  


Lo reconoce perfecto todos los estudiante y sus notas pero mayormente el estudiante 1 nota 1 le quita un digito o lo cambia  o varias notas a varios estudiantes el punto es que no da la informacion correctapor ejemplo
Estudiante 1 Nota 1= 20. La imprime como Estudiante 1 Nota 1= 2.
Hay una forma de que el vector vaya creciendo a medida de que vayan aumentando los estudiantes?
26  Programación / Programación C/C++ / Re: Problema con el metodo BubbleSort en: 2 Octubre 2016, 19:15 pm
Y lo de notas[5*i+x]; no lo termino de entender, porque tiene que ser una posición 5, que pasa si el estudiante es 0 y luego uno, se desperdiciarian 3 posiciones del arreglo y practicamente quedaria en limbo en el ordenamiento de burbuja, pues este solo compara con las posiciones inmedatamente siguientes.

un ejemplo:

estudiante 1: camilo
notas[5*i+x] ---> i=0; x=0;  == notas[0]
notas[5*i+x] ---> i=0; x=1;  == notas[0]
notas[5*i+x] ---> i=1; x=0;  == notas[0]
notas[5*i+x] ---> i=0; x=1;  == notas[5]


No entiendo esa parte, ya que planteas que el estudiante camilo saltaría a otro estudiante cuando dices notas[5*i+x] ---> i=1; x=0;  == notas[0]
ya que i representa los estudiantes, y x el desplazamiento de notas o las vueltas que hará, y 5 el numero de notas que tiene el estudiante. En este caso de la forma que planteo el programa es que por estudiante tendrá 5 notas y ya. Ahora mi problema y mi duda es que si es posible que en un vector que almacena todas las notas puedo ordenar cierta cantidad de notas. algo así [ 10 9 8 7 6 5 4 3 2 1 ] ordenado_ciertacantidad [6 7 8 9 10 5 4 3 2 1] no se si me explico lo suficientemente claro  :-(.
27  Programación / Programación C/C++ / Re: Problema con el metodo BubbleSort en: 2 Octubre 2016, 16:59 pm
Citar
4dr14n31t0r

Pues entendi en su mayoría tu respuesta, pero lo mas importante no lo entendí en realidad, osea la parte del método burbuja. Pues bien ya modifique mi código para que el arreglo string intervenga en todas las funciones y no ocasiones ningún problema a la hora de imprimir, insertar etc, al igual que la variable asignatura. eso lo entendí perfecto. Pero ahora en el método burbuja entiendo que quieres decir con que si la ultima nota del estudiante 1 es mayor a la primera nota del estudiante dos, cambiaría y por ende me alteraría el orden que quiero asignar en mi programa. Pero para eso no seria la operación de desplazamiento:
asignatura*pos+losnumerosdevueltas. osea que me recorra 5 veces la notas de dicha posición que no se salga de esas 5 vueltas, es lo que no logro entender porque altera ciertos valores de las notas si le estoy suministrando la posición desde donde debe de arrancar el ordenamiento burbuja y indicándole que son 5 elementos a ordenar.
28  Programación / Programación C/C++ / Re: Problema con el metodo BubbleSort en: 1 Octubre 2016, 20:29 pm
Este es el código completo, no hallo el error

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void llenar (int notas [], string nombres[]);
  5. void imprimir (int notas [], string nombres[]);
  6. int insertar(int notas[]);
  7. int buscar(int b,int notas[]);
  8. int borrar(int pos,int notas[]);
  9. int metodoburbuja (int notas[],int pos);
  10. int menu ();
  11.  
  12. int num;
  13. int asignatura=5;
  14. string nombres[100];
  15. int posicionesEstudiante=0;
  16. //Funcion que indica la n cantidad de estudiantes y sus notas ----------------------------
  17.  
  18. void llenar (int notas [], string nombres[]){
  19. system("cls");
  20. cout<<"INDIQUE EL NUMERO DE ESTUDIANTES A UTILIZAR EN EL PROGRAMA: "<<endl<<endl;
  21. cin>>num;
  22. cout<<endl;
  23. for(int i=0; i<=num-1; i++){
  24. cout<<"\nDame el primer nombre del estudiante "<<i+1<<endl;
  25. cin>>nombres[posicionesEstudiante];
  26. cout<<"ESTUDIANTE "<<i+1<<endl;
  27. for (int x=0; x<asignatura; x++){
  28. cout<<"\nNOTA "<<x+1<<": ";
  29. cin>>notas[5*i+x];
  30. }
  31. posicionesEstudiante++;
  32. cout<<endl<<endl;
  33. }
  34. system ("pause");
  35. }
  36.  
  37. //Funcion para imprimir la n cantidad de estudiantes junto a sus notas ----------------------------
  38. void imprimir (int notas [], string nombres[]){
  39. system("cls");
  40. cout<<"LOS ESTUDIANTES Y SUS NOTAS\n"<<endl;
  41. for(int i=0; i<=num-1; i++){
  42. cout<<nombres[i]<<" EL ESTUDIANTE "<<i+1<<endl<<endl;
  43. // cout<<estudiantes[i]<<endl<<endl;
  44.  
  45. for (int x=0; x<asignatura; x++){
  46. cout<<"NOTA "<<x+1<<" = "<<notas[5*i+x]<<endl;
  47. }
  48. cout<<endl;
  49. }
  50. system ("pause");
  51. }
  52.  
  53. //Funcion para insertar mas estudiantes-------------------------------------------------
  54. int insertar(int notas[]){
  55.      system("cls");
  56. cout<<"INGRESE LAS NOTAS DEL NUEVO ESTUDIANTE: \n";
  57.        for (int i=0; i<asignatura; i++){
  58.  
  59.        cout<<"\nNOTA "<<i+1<<" : ";
  60.        cin>> notas[5*num+i];
  61.     }
  62.     cout<<endl<<endl;
  63. num++;
  64.        }    
  65.  
  66. //Funcion de Buscar un estudiante con sus 5 notas-----------------------------------------------    
  67. int buscar(int b,int notas[]){
  68. system("cls");
  69.        int i=0, encontrado=0;
  70.        while(i < num && encontrado == 0){
  71.                if(b == i+1){
  72.                     encontrado = 1;
  73.                     }
  74.                     else{
  75.                          i++;
  76.                          }
  77.                }
  78.                if(encontrado == 1){
  79.                     cout<<"EL ESTUDIANTE " << b << " TIENE LAS SIGUIENTES NOTAS: " <<endl<<endl;
  80.                     for (int x=0; x<asignatura; x++){
  81. cout<<"NOTA "<<x+1<<"  =  "<<notas[5*i+x]<<endl;
  82. }
  83. cout<<endl;
  84. }
  85.                     else{
  86.                          cout<<"EL ESTUDIANTE [" << b <<"] NO FUE ENCONTRADO\n\nINTENTE DE NUEVO...\n"<<endl;
  87.                          }
  88.    system("pause");
  89.        }
  90.  
  91. int borrar(int pos,int notas[]){
  92. system("cls");
  93.        int i = pos -1;
  94.  
  95.  
  96.              for (int x=0; x<asignatura; x++){
  97.               notas[5*i+x]=0/* Nota vacia */;
  98.  
  99.  
  100.  
  101.  }
  102. }
  103.  
  104. //------------------METODO DE ORDENAMIENTO----------------------
  105.  
  106. int metodoburbuja (int notas[],int pos){
  107.  
  108. int i,j,aux;
  109. pos=pos-1;
  110. for(int x=0;x<5;x++){
  111. for(j=0;j<5;j++){
  112. if(notas[5*pos+j]>notas[5*pos+j+1]){
  113. aux=notas[5*pos+j];
  114. notas[5*pos+j]=notas[5*pos+j+1];
  115. notas[5*pos+j+1]=aux;
  116. }
  117. }
  118. }
  119. cout<<"El estudiante "<<pos<<" tiene sus notas ordenadas de esta manera"<<endl;
  120. for(int x=0;x<5;x++){
  121. cout<<"NOTA "<<x+1<<" : "<<notas[5*pos+x]<<endl;
  122. }
  123. system("pause");
  124. }
  125.  
  126.  
  127.  
  128. //Menu -------------------------------------------------------------
  129. int menu (){
  130. system("cls");
  131. int opc;
  132. cout<<"MENU DEL PROGRAMA\n-----------------------------------------------\n\n[1] INGRESAR EL NUMERO DE ESTUDIANTES\n\n[2] VISUALIZAR LOS ESTUDIANTES JUNTO A SUS NOTAS\n\n[3] INSERTAR UN NUEVO ESTUDIANTE\n\n[4] BUSCAR LAS NOTAS DE UN ESTUDIANTE\n\n[5] BORRAR O VACIAR LAS NOTAS DE UN ESTUDIANTE\n\n[6] SALIR DEL PROGRAMA\n"<<endl;
  133. cin>>opc;
  134. cout<<"\n";
  135. if(opc>7){
  136. cout<<"LA OPCION ["<<opc<<"] NO EXISTE\n\n"<<endl;
  137. system ("pause");
  138. }
  139.  
  140. return opc;
  141. }
  142.  
  143. int main(){
  144.  
  145. int estudiantes[100];
  146. int notas[500];
  147. int opc,buscado, posicion;
  148. do{
  149. opc=menu();
  150. switch (opc){
  151. case 1:
  152. llenar(notas,nombres);
  153. break;
  154.  
  155. case 2:
  156. imprimir(notas, nombres);
  157. break;
  158.  
  159. case 3:
  160. insertar(notas);
  161. break;
  162.  
  163. case 4:
  164. system("cls");
  165. cout<<"INDICA EL ESTUDIANTE QUE DESEAS BUSCAR: "<<endl<<endl;
  166. cin>>buscado;
  167. buscar(buscado, notas);
  168. break;
  169.  
  170. case 5:
  171. system("cls");
  172. cout<<"INDIQUE EL ESTUDIANTE QUE DESEA BORRAR/VACIAR SUS NOTAS: ";
  173. cin>>posicion;
  174. cout<<endl;
  175. borrar(posicion,notas);
  176. break;
  177.  
  178. case 6:
  179. cout<<"Que estudiante deseas que sus notas sean ordenadas: "<<endl;
  180. cin>>posicion;
  181. metodoburbuja (notas, posicion);
  182. break;
  183.  
  184. case 7:
  185. system("cls");
  186. cout<<"\n\nGRACIAS POR USAR NUESTRO PROGRAMA :)\n"<<endl;
  187. break;
  188. }
  189. }
  190. while (opc !=7);
  191. system ("pause");
  192. }
  193.  
  194.  
  195.  
  196.  
  197.  
29  Programación / Programación C/C++ / Problema con el metodo BubbleSort en: 1 Octubre 2016, 18:18 pm
Buenas amigos, tengo un ligero pero tedioso problema con esta función, me compila el programa pero añade valores que no están en el vector que quiero ordenar. Me ordena ciertos valores e introduce valores que no coloque, de manera ordenada pero no son los valores verdaderos. espero haberme explicado lo suficiente, espero su ayuda gracias.

aqui el codigo que estoy usando, tengo la sospecha que el problema tiene que ser en la operacion de desplazamiento 5*posicion+elciclo.

 :-(

Código
  1. int metodoburbuja (int notas[],int pos){
  2.  
  3. int i,j,aux;
  4. pos=pos-1;
  5. for(int x=0;x<5;x++){
  6. for(j=0;j<5;j++){
  7. if(notas[5*pos+j]>notas[5*pos+j+1]){
  8. aux=notas[5*pos+j];
  9. notas[5*pos+j]=notas[5*pos+j+1];
  10. notas[5*pos+j+1]=aux;
  11. }
  12. }
  13. }
  14. cout<<"El estudiante "<<pos<<" tiene sus notas ordenadas de esta manera"<<endl;
  15. for(int x=0;x<5;x++){
  16. cout<<"NOTA "<<x+1<<" : "<<notas[5*pos+x]<<endl;
  17. }
  18. system("pause");
  19. }
  20.  
30  Informática / Hardware / Re: Ayuda con la tarjeta madre Pegatron IPM41-D3 en: 30 Julio 2016, 06:08 am
Esta bien, mañana comento si me funciono, gracias de todas manera por tomarte la molestia de atenderme

Saludos
Páginas: 1 2 [3] 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines