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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: ayuda con estructuras en: 16 Agosto 2010, 04:19 am
gracias por los aportes, y pues lo que uso es lo que conozco.. = ) gracias por sus consejos, seguire trabajando, muy buenas ideas me han aportado
2  Sistemas Operativos / GNU/Linux / Re: Ayuda urgente, grub no aparece! en: 11 Agosto 2010, 23:03 pm
oye una pregunta nada mas, una vez instalado fedora o cualkier otra distro que tenias, de casualidad instalaste windows despues, por que asi es, he ahi tu problema, windows borra el arrancador para linux, por lo tanto la solucion es que tienes que instalar de nuevo el grub
3  Programación / Programación C/C++ / ayuda con estructuras en: 11 Agosto 2010, 22:58 pm
Hola amigos, tengo un pequeño problema, tengo como proyecto hacer una base de datos de calificaciones de alumnos, lo estoy haciendo con estructuras y uso listas enlazadas para las notas, el proceso de ingresar el nombre del alumno, el codigo, las notas y sacar promedio me va rebien, el problema es el siguiente, ademas de eso tengo que ordenar los promedios ascendente y descendente, bueno esto tambien lo hago pero por lo mismo que lo ordena de esa manera los datos pierden integridad, ademas tengo que ordenar por nombre y pues se me esta haciendo bastante dificil esta ultima parte.
El programa hace mas o menos esto
Juan                          90
Carlos                       60
Luis                           85
Cuando lo ordena queda asi
Juan                         60
carlos                       85
luis                           90
Dejo codigo a ver quien de ustedes me ilumina un poco!!
Saludetes..

Código
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. using namespace std;
  5. #include <windows.h>
  6. #define c 40
  7. #define MAX 30
  8.  
  9.  
  10. struct notas {
  11. float nota1;
  12. float nota2;
  13. float nota3;
  14. float promedio;
  15. };
  16.  
  17. struct alumno
  18. {
  19. char nombre[c];
  20. notas nota;
  21. int numcuenta;
  22. alumno();
  23. void mostrar();
  24. void comparar(int);
  25. void ordenar_cadenas();
  26.  
  27. };
  28.  
  29. alumno::alumno()
  30. {
  31. nota.nota3=0;
  32. }
  33. void alumno::ordenar_cadenas()
  34. { alumno a[c];
  35.  
  36. int total=2;
  37. char temp[100];
  38.   int i, j;
  39.  
  40.   for(i=0; i < total-1; i++)
  41.   {
  42.  for(j=i+1; j < total; j++)
  43.  if(strcmp(a[i].nombre, a[j].nombre) > 0)
  44.  {
  45. // Copia en variable temporal datos actuales
  46. strcpy(temp, a[i].nombre);
  47.  
  48. // Intercambia informacion
  49. strcpy(a[i].nombre, a[j].nombre);
  50.  
  51. strcpy(a[j].nombre, temp);
  52.  }
  53.   }
  54.   for(i=0;i<total;i++)
  55. {
  56. cout<<a[i].nombre<<endl;
  57. }
  58.  
  59.  
  60. }
  61.  
  62. void alumno::comparar(int cod)
  63. {
  64. if(cod!=numcuenta)
  65. {
  66. cout<<"\tContacto no existe"<<endl;
  67. cout<<"\tEjecute el programa de nuevo"<<endl;
  68.  
  69. }
  70.  
  71.  
  72.  
  73. }
  74.  
  75.  
  76. void alumno::mostrar()
  77. {
  78. cout<<endl;
  79. cout<<"Num Cuenta \t"<<"Nombre\t"<<"Notas"<<"Promedio"<<endl;
  80. cout<<numcuenta<<"\t\t"<<nombre<<"\t\t"<<nota.nota1<<" "<<nota.nota2<<" "<<nota.nota3<<"\t"<<fixed<<setprecision(2)<<nota.promedio<<endl;
  81. }
  82.  
  83.  
  84.  
  85.  
  86. int main()
  87. {
  88.  
  89. char resp;
  90. int cantidad, accion,cod, i;
  91. alumno a[c];
  92. alumno* ptr;
  93. do{
  94. system("CLS");
  95. system("COLOR 97");
  96. cout<<"PROGRAMA BASE DATOS TEMPORAL CALIFICACIONES"<<endl;
  97. cout<<"QUE ACCION DESEA REALIZAR"<<endl;
  98. cout<<"1.Consulta\n2. Ingreso Datos\n3. Actualizacion Datos\n4. Ordenar por Promedio Ascendete\n5. Ordenar por Promedio Descendente\n6. Ordenar nombre\n8. Salir"<<endl;
  99. cin>>accion;
  100. while( accion <1 || accion >8 )
  101. {
  102. system("CLS");
  103. cout << "\n\tIngrese accion correcta\n\tElija entre 1 y 5: ";
  104. cout<<"QUE ACCION DESEA REALIZAR"<<endl;
  105. cout<<"1.Consulta\n2. Ingreso Datos\n3. Actualizacion Datos\n4. Ordenar por Promedio Ascendete\n5. Ordenar por Promedio Descendente\n6.Ordenar por Nombres\n8. Salir"<<endl;
  106. cin >> accion;
  107. }
  108. switch(accion)
  109. {
  110.  
  111. case 1:
  112. cout<<"Contactos"<<endl;
  113. if(a[0].nota.nota3!=0)
  114. {
  115. for (ptr=a; ptr->nota.nota3;ptr++)
  116. {
  117. ptr->mostrar();
  118. }
  119. }
  120. else
  121. cout<<"NO EXISTEN DATOS"<<endl;
  122.  
  123. break;//sale del case
  124. case 2:
  125. cout<<"Numero de contactos que desea ingresar ";
  126. cin>>cantidad;
  127. for(i=0;i<cantidad;i++)
  128. {
  129. cout<<"Numero de Cuenta";cin>>a[i].numcuenta;
  130. cout<<"\nNombre ";fflush(stdin); gets(a[i].nombre);
  131. cout<<"Nota 1 ";cin>>a[i].nota.nota1;
  132. while(a[i].nota.nota1<0||a[i].nota.nota1>100)
  133. {
  134. cout<<"Error!!\nIngrese Calificacion entre 0 y 100"<<endl;
  135. cout<<"Nota 1 ";cin>>a[i].nota.nota1;
  136. }
  137. cout<<"Nota 2 ";cin>>a[i].nota.nota2;
  138. while(a[i].nota.nota2<0||a[i].nota.nota2>100)
  139. {
  140. cout<<"Error!!\nIngrese Calificacion entre 0 y 100"<<endl;
  141. cout<<"Nota 3 ";cin>>a[i].nota.nota3;
  142. }
  143. cout<<"Nota 3 ";cin>>a[i].nota.nota3;
  144.  
  145. while(a[i].nota.nota3<0||a[i].nota.nota3>100)
  146. {
  147. cout<<"Error!!\nIngrese Calificacion entre 0 y 100"<<endl;
  148. cout<<"Nota 3 ";cin>>a[i].nota.nota3;
  149. }
  150. a[i].nota.promedio=(a[i].nota.nota1+a[i].nota.nota2+a[i].nota.nota3)/3;
  151. cout<<"Promedio"<<fixed<<setprecision(2)<<a[i].nota.promedio;
  152.  
  153.  
  154. }
  155. cout<<"\n\tINGRESO EXITOSO"<<endl;
  156. break;
  157. case 3:
  158. if(a[0].nota.nota3!=0)
  159. {
  160. cout<<"Lista de contactos"<<endl;
  161. for (ptr=a; ptr->nota.nota3;ptr++)
  162. {
  163. ptr->mostrar();
  164. }
  165. cout<<"\n\n\tElija contacto a modificar"<<endl;
  166. cout<<"\n\n\tIngrese codigo del contacto que desea modificar ";cin>>cod;
  167.  
  168. ptr->comparar(cod);
  169.  
  170.  
  171. for (ptr=a; ptr->numcuenta;ptr++)
  172. {
  173. if(ptr->numcuenta==cod)
  174. {
  175. cout<<"Modifique Su contacto"<<endl;
  176. cout<<"Codigo"<<cod<<endl;
  177. cout<<"Nombre "; cin>>ptr->nombre;
  178. cout<<"Nota 1 ";cin>>ptr->nota.nota1;
  179. while(ptr->nota.nota1<0||ptr->nota.nota1>100)
  180. {
  181. cout<<"Error!!\nIngrese Calificacion entre 0 y 100"<<endl;
  182. cout<<"Nota 1 ";cin>>ptr->nota.nota1;
  183. }
  184. cout<<"Nota 2 ";cin>>ptr->nota.nota2;
  185. while(ptr->nota.nota2<0||ptr->nota.nota2>100)
  186. {
  187. cout<<"Error!!\nIngrese Calificacion entre 0 y 100"<<endl;
  188. cout<<"Nota 2 ";cin>>ptr->nota.nota2;
  189. }
  190. cout<<"Nota 3 ";cin>>ptr->nota.nota3;
  191. while(ptr->nota.nota3<0||ptr->nota.nota3>100)
  192. {
  193. cout<<"Error!!\nIngrese Calificacion entre 0 y 100"<<endl;
  194. cout<<"Nota 3 ";cin>>ptr->nota.nota3;
  195. }
  196.  
  197. a[i].nota.promedio=(a[i].nota.nota1+a[i].nota.nota2+a[i].nota.nota3)/3;
  198. cout<<"\nCONTACTO MODIFICADO"<<endl;
  199. ptr->mostrar();
  200. }//fin if
  201.  
  202. }//fin for
  203.  
  204.  
  205. }
  206. else
  207. cout<<"NO EXISTEN DATOS"<<endl;
  208.  
  209.  
  210. break;
  211. case 4:
  212. if(a[0].nota.nota3!=0)
  213. {
  214.  
  215. int j,temp,temp2,temp3,temp4,temp5;
  216. //compara las posiciones
  217. for (ptr=a; ptr->nota.nota3;ptr++)
  218. {
  219. ptr->mostrar();
  220. }
  221. for(i=1;i<cantidad;i++)//ayuda a recorrer el vector
  222. {
  223. for(j=0;j<cantidad-1;j++)//compara elementos del vector por posiciones y busca la posicion anterior, por el -1
  224. {
  225. if(a[j].nota.promedio>a[j+1].nota.promedio)//Compara la primera posicion con la siguiente
  226. {
  227. //a[i].numcuenta=a[i].numcuenta;
  228. temp=a[j].nota.promedio; //variable auxiliar que almacena la primera posicion
  229. a[j].nota.promedio=a[j+1].nota.promedio;
  230. a[j+1].nota.promedio=temp;
  231. }
  232. }
  233. }
  234.  
  235. for (ptr=a; ptr->nota.nota3;ptr++)
  236. {
  237. ptr->mostrar();
  238. }
  239. }
  240. else
  241. cout<<"NO EXISTEN DATOS"<<endl;
  242.  
  243. break;
  244. case 5:
  245. if(a[0].nota.nota3!=0)
  246. {
  247.  
  248. int j,temp;
  249. //compara las posiciones
  250. for(i=0;i<cantidad;i++)
  251. {
  252. cout<<a[i].nota.promedio<<endl;
  253. }
  254. for(i=1;i<cantidad;i++)//ayuda a recorrer el vector
  255. {
  256. for(j=0;j<cantidad-1;j++)//compara elementos del vector por posiciones y busca la posicion anterior, por el -1
  257. {
  258. if(a[j].nota.promedio<a[j+1].nota.promedio)//Compara la primera posicion con la siguiente
  259. {
  260. temp=a[j].nota.promedio; //variable auxiliar que almacena la primera posicion
  261. a[j].nota.promedio=a[j+1].nota.promedio;
  262. a[j+1].nota.promedio=temp;
  263. }
  264. }
  265. }
  266. cout<<"Vector ordenado"<<endl;//muestra las posiciones ordenadas
  267. for(i=0;i<cantidad;i++)
  268. {
  269. cout<<a[i].nota.promedio<<endl;
  270. }
  271. }
  272. else
  273. cout<<"NO EXISTEN DATOS"<<endl;
  274.  
  275. break;
  276. case 6:
  277.  
  278. for (ptr=a; ptr->nota.nota3;ptr++)
  279. {
  280. ptr->ordenar_cadenas();
  281. }
  282.  
  283.  
  284.  
  285.  
  286. break;
  287. case 8:
  288. system("PAUSE");
  289. cout<<"Adios"<<endl;
  290. return 0;
  291. break;
  292.  
  293. }
  294. cout<<"\n\n\tIR AL MENU PRINCIPAL [S/N]"<<endl;
  295. cin>>resp;
  296. }while(resp=='s' || resp=='S');
  297. return 0;
  298. }
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines