Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2014
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. #include "diccionario.h"
  2. #include <fstream>
  3. #include <cstdlib>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. void load(diccionario & d, const string & s){
  10.  
  11. diccionario::entrada e;
  12. string cadena;
  13. string nombre;
  14. string code;
  15. string num;
  16. string f;
  17. double mas;
  18. bool fall;
  19. string year;
  20. double lat;
  21. double lon;
  22. ifstream fi;
  23.  
  24. fi.open(s.c_str());
  25.  
  26. //Leemos la primera linea de name, reclass...
  27. getline(fi, cadena);
  28.  
  29. while(!fi.eof()){
  30.  
  31. int pos_inicio = 0;
  32. int pos_final;
  33.  
  34. getline(fi, cadena); //Vamos leyendo el fichero s.
  35.  
  36. //Buscamos el nombre
  37. pos_final = cadena.find_first_of(";",pos_inicio);
  38.  
  39. //nombre.assign(cadena, pos_inicio, (pos_final-pos_inicio-1));
  40. nombre = cadena.substr(pos_inicio, pos_final-pos_inicio);
  41.  
  42. e.first = nombre;
  43.  
  44. pos_inicio = pos_final+1;
  45.  
  46. //Buscamos los códicos
  47. pos_final = cadena.find_first_of(";", pos_inicio);
  48.  
  49. code = cadena.substr(pos_inicio, pos_final-pos_inicio);
  50.  
  51. //Si hay más de un código
  52. if(code.find(",") != -1){
  53.  
  54. while(pos_inicio < pos_final){
  55.  
  56. int p;
  57. string aux;
  58.  
  59. p = code.find_first_of(",",pos_inicio);
  60.  
  61. aux = code.substr(pos_inicio, p-pos_inicio);
  62.  
  63. e.second.setCode(aux);
  64.  
  65. pos_inicio = p+1;
  66.  
  67. }
  68. }
  69.  
  70. //Si sólo hay un código
  71. else{
  72.  
  73. e.second.setCode(code);
  74. }
  75.  
  76. pos_inicio = pos_final+1;
  77.  
  78. //Buscamos la masa
  79. pos_final = cadena.find_first_of(";",pos_inicio);
  80.  
  81. num = cadena.substr(pos_inicio, pos_final-pos_inicio);
  82.  
  83. mas = atof(num.c_str()); //Convertimos la cadena a doble
  84.  
  85. e.second.setMas(mas);
  86.  
  87. pos_inicio = pos_final+1;
  88.  
  89.  
  90. //Buscamos si ha sido encontrado
  91. pos_final = cadena.find_first_of(";",pos_inicio);
  92.  
  93. f = cadena.substr(pos_inicio, pos_final-pos_inicio);
  94.  
  95. if(f == "Fell"){
  96.  
  97. e.second.setFall(false);
  98. }
  99.  
  100. else if (f == "Found"){
  101.  
  102. e.second.setFall(true);
  103. }
  104.  
  105. pos_inicio = pos_final+1;
  106.  
  107. //Buscamos el año
  108. pos_final = cadena.find_first_of(";",pos_inicio);
  109.  
  110. year = cadena.substr(pos_inicio, pos_final-pos_inicio);
  111.  
  112. e.second.setYear(year);
  113.  
  114. pos_inicio = pos_final+1;
  115.  
  116. //Buscamos la latitud
  117. pos_final = cadena.find_first_of(";",pos_inicio);
  118.  
  119. num = cadena.substr(pos_inicio, pos_final-pos_inicio);
  120.  
  121. lat = atof(num.c_str()); //Convertimos la cadena a doble
  122.  
  123. e.second.setLat(lat);
  124.  
  125. pos_inicio = pos_final+1;
  126.  
  127. //Buscamos la longitud
  128. num = cadena.substr(pos_inicio);
  129.  
  130. lon = atof(num.c_str()); //Convertimos la cadena a doble
  131.  
  132. e.second.setLong(lon);
  133.  
  134. //Insertamos la entrada en el diccionario
  135. d.insert(e);
  136. }
  137.  
  138. fi.close();
  139.  
  140. }
  141.  
  142. int main()
  143. {
  144. diccionario D;
  145. meteorito m;
  146. defM x;
  147.  
  148. cout << m << endl;
  149.  
  150. D.insert(m);
  151. pair<diccionario::entrada,bool> p;
  152. p = D.find("aaaa");
  153. if (p.second==true) cout << p.first << endl;
  154. else cout << "No existe aaaa" << endl;
  155.  
  156.  
  157. cout << D["Barcelona"] << endl;
  158.  
  159. D["Valencia"] = x;
  160. cout<< D["Valencia"] << endl;
  161.  
  162.  
  163. //diccionario Meteoritos;
  164. //load(Meteoritos, "meteorites_all.csv");
  165.  
  166. return 0;
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement