Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. #include <iostream>
  2. #include "Marathon.h"
  3. #include <fstream>
  4. #include <string.h>
  5. #include <cstdlib>
  6.  
  7. using namespace std;
  8.  
  9. Maraton::Maraton(char FicheroOrigen[], char FicheroDestino[])
  10. {
  11. numAtletas = 0; // Iniciamos el numero de Atletas a 0
  12. fich.open(FicheroOrigen, ios::in | ios::out | ios::binary); // Abrimos el fichero de ENTRADA DE DATOS
  13.  
  14. if(fich.fail()) // Si el fichero no existe, debo crearlo
  15. {
  16. fich.close();
  17. fich.clear(); // Borramos el error
  18. fich.open(FicheroDestino, ios::out | ios::binary); // Creacion del fichero
  19. fichero.write((char *)&numAtletas, sizeof(int)); // Escribimos el numAtletas=0
  20. }
  21. else // Si el fichero existe, continuamos...
  22. {
  23. fichero.open(FicheroDestino, ios::in | ios::out | ios::binary); // Creamos el fichero de SALIDA DE DATOS
  24. fichero.seekg(sizeof(int), ios::beg); // Con esto dejamos un hueco del tamaño de un entero, al principio del fichero
  25. Atleta Temp;
  26.  
  27. while(!fich.eof()) // Mientras no lleguemos al final del fichero
  28. {
  29. int numAtletasPais=0;
  30. fich.read((char *)&numAtletasPais, sizeof(int));
  31. // Leemos el numero de Atletas de un País, y repetimos tantas veces como diga
  32.  
  33. for(int i=0; i<numAtletasPais; i++)
  34. {
  35. fich.read((char *)&Temp, sizeof(Atleta)); // Leemos
  36. fichero.write((char *)&Temp, sizeof(Atleta)); // Escribimos
  37. numAtletas++; // Incrementamos
  38. }
  39. }
  40. fichero.seekp(0, ios::beg); // Nos colocamos al principio del fichero
  41. fichero.write((char *)&numAtletas, sizeof(int));
  42. // Escribimos el numero de Atletas que hemos contabilizado
  43. }
  44. }
  45.  
  46. void Maraton::consultar(cadena pais)
  47. {
  48. system("cls");
  49. int i=0;
  50. Atleta Atleta_Temp;
  51. cadena Pais_Temp;
  52.  
  53. fichero.seekg(sizeof(int), ios::beg); // Me posiciono después del Numero de Atletas
  54.  
  55. if(strcmp(pais,"*")!=0)
  56. {
  57. for(i=0; i<numAtletas; i++)
  58. {
  59. fichero.read((char *)&Atleta_Temp, sizeof(Atleta));
  60. strcpy(Pais_Temp, Atleta_Temp.pais);
  61.  
  62. if(strcmp(strupr(Pais_Temp),strupr(pais))==0)
  63. {
  64. cout << "Dorsal: " << Atleta_Temp.dorsal << endl;
  65. cout << "Pais: " << Atleta_Temp.pais << endl;
  66. cout << "Nombre: " << Atleta_Temp.nombre << endl;
  67. cout << "Apellidos: " << Atleta_Temp.apellidos << endl;
  68. cout << "Marca: " << Atleta_Temp.marca << endl;
  69. cout << "Posicion: " << Atleta_Temp.posicion << endl;
  70. cout << endl;
  71. }
  72. }
  73. }
  74. else
  75. {
  76. for(i=0; i<numAtletas; i++)
  77. {
  78. fichero.read((char *)&Atleta_Temp, sizeof(Atleta));
  79.  
  80. cout << "Dorsal: " << Atleta_Temp.dorsal << endl;
  81. cout << "Pais: " << Atleta_Temp.pais << endl;
  82. cout << "Nombre: " << Atleta_Temp.nombre << endl;
  83. cout << "Apellidos: " << Atleta_Temp.apellidos << endl;
  84. cout << "Marca: " << Atleta_Temp.marca << endl;
  85. cout << "Posicion: " << Atleta_Temp.posicion << endl;
  86. cout << endl;
  87. }
  88. }
  89. }
  90.  
  91. void Maraton::insertar(Atleta s)
  92. {
  93. fichero.seekg(sizeof(int), ios::beg); // Nos colocamos despues del numero de Atletas
  94. int i=0;
  95. bool encontrado=false;
  96. Atleta Atleta_Temp, Atleta_Temp2;
  97.  
  98. while(i<numAtletas && !encontrado)
  99. {
  100. fichero.read((char *)&Atleta_Temp, sizeof(Atleta));
  101.  
  102. if(Atleta_Temp.dorsal == s.dorsal)
  103. encontrado = true;
  104. else
  105. i++;
  106. }
  107.  
  108. if(!encontrado)
  109. {
  110. bool introducido=false;
  111. int j=numAtletas+1;
  112. Atleta V_Atleta[numAtletas+1];
  113. fichero.seekg(sizeof(int), ios::beg);
  114.  
  115. for(i=0; i<numAtletas; i++) // i=9
  116. fichero.read((char *)&V_Atleta[i], sizeof(Atleta));
  117. ///////////////////////////////////////////////////////////////////////
  118. while(!introducido)
  119. {
  120. if(strcmp(strupr(V_Atleta[i].pais), strupr(s.pais))==0)
  121. {
  122. for( ; j>=i; j--)
  123. {
  124. cout << "HOla" << endl;
  125. Atleta_Temp2 = V_Atleta[j-1];
  126. V_Atleta[j] = Atleta_Temp2;
  127. }
  128.  
  129. V_Atleta[i] = s;
  130. numAtletas++;
  131. introducido=true;
  132. }
  133. else
  134. i--;
  135. }
  136.  
  137. for(i=0; i<numAtletas; i++)
  138. cout << V_Atleta[i].dorsal << endl;
  139.  
  140. /*fichero.seekg(0, ios::beg);
  141. fichero.write((char *)&numAtletas, sizeof(int));
  142. for (int k=0; k<numAtletas; k++)
  143. fichero.write((char *)&numAtletas, sizeof(int));
  144. */
  145. }
  146. }
  147.  
  148. void Maraton::modificar(int dor)
  149. {
  150.  
  151. }
  152.  
  153. void Maraton::eliminar(int dor)
  154. {
  155.  
  156. }
  157.  
  158. void Maraton::mostrarClasificacion()
  159. {
  160.  
  161. }
  162.  
  163. Maraton::~Maraton()
  164. {
  165. fich.close(); // Cerramos el fichero de ENTRADA DE DATOS
  166. fichero.close(); // Cerramos el fichero de SALIDA DE DATOS
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement