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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 ... 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [42] 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 ... 64
411  Programación / Programación C/C++ / validacion de puntos geograficos, grados, minutos, segundos y comparacion en: 13 Diciembre 2018, 04:43 am
Necesito algo de ayuda con los modulos de validacion de puntos geograficos, latitud, longitud y comparacion de dos puntos geograficos , me parece que algo estoy haciendo mal en el segundo y no quiero colocar todo en un solo if  :(
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. typedef struct coordenadas{
  8. int grados;
  9. int minutos;
  10. int segundos;
  11. char direccion;
  12. };
  13. typedef struct punto_geografico{
  14. coordenadas latitud;
  15. coordenadas longitud;
  16. };
  17.  
  18. void crear(coordenadas &c, bool latitud);
  19. bool validar(coordenadas p, bool latitud);
  20. bool iguales(punto_geografico p, punto_geografico q);
  21. void determinar_ubicacion(punto_geografico p);
  22.  
  23. int main()
  24. {
  25. punto_geografico p, q;
  26. cout<<"Crear primer punto geografico"<<endl;
  27. cout<<"Latitud"<<endl;
  28. crear(p.latitud,1);
  29. cout<<"Longitud"<<endl;
  30. crear(p.longitud,0);
  31. cout<<"Crear segundo punto geografico"<<endl;
  32. cout<<"Latitud"<<endl;
  33. crear(q.latitud,1);
  34. cout<<"Longitud"<<endl;
  35. crear(q.longitud,0);
  36. if(iguales(p,q)==true)
  37. cout<<"Son iguales"<<endl;
  38. else
  39. cout<<"Son diferentes"<<endl;
  40. determinar_ubicacion(p);
  41. system("pause");
  42. }
  43.  
  44. void crear(coordenadas &c, bool latitud)
  45. {
  46. do{
  47. cout<<"Ingrese grados   : ";
  48. cin>>c.grados;
  49. cout<<"Ingrese minutos  : ";
  50. cin>>c.minutos;
  51. cout<<"Ingrese segundos : ";
  52. cin>>c.segundos;
  53. cout<<"Ingrese direccion: ";
  54. cin>>c.direccion;
  55. }while(validar(c,latitud)==false);
  56. }
  57. //Aqui
  58. bool validar(coordenadas c, bool latitud)
  59. {
  60. if(latitud==true){
  61. if(c.direccion=='N' || c.direccion=='S'){
  62. if(c.grados==90 && c.minutos==0 && c.segundos==0)
  63. return true;
  64. else{
  65. if(c.grados<0 || c.grados>89 || c.minutos<0 || c.minutos>59 || c.segundos<0 || c.segundos>59)
  66. return false;
  67. else
  68. return true;
  69. }
  70. }
  71. else
  72. return false;
  73. }
  74. else{
  75. if(c.direccion=='E' || c.direccion=='O'){
  76. if(c.grados==180 && c.minutos==0 && c.segundos==0)
  77. return true;
  78. else{
  79. if(c.grados<0 || c.grados>179 || c.minutos<0 || c.minutos>59 || c.segundos<0 || c.segundos>59)
  80. return false;
  81. else
  82. return true;
  83. }
  84. }
  85. else
  86. return false;
  87. }
  88. }
  89. //Y aqui
  90. bool iguales(punto_geografico p, punto_geografico q)
  91. {
  92. if(p.latitud.direccion==q.latitud.direccion && p.longitud.direccion==q.longitud.direccion){
  93. if(p.latitud.grados==q.latitud.grados && p.longitud.grados==q.longitud.grados)
  94. if(p.latitud.minutos==q.latitud.minutos && p.longitud.minutos==q.longitud.minutos)
  95. if(p.latitud.segundos==q.latitud.segundos && p.longitud.segundos==q.longitud.segundos)
  96. return true;
  97. }
  98. else
  99. return false;
  100. }
  101.  
  102. void determinar_ubicacion(punto_geografico p)
  103. {
  104. cout<<"El punto geografico se ubica en";
  105. if(p.latitud.direccion=='N')
  106. cout<<" el hemisferio Norte ";
  107. else
  108. cout<<" el hemisferio Sur ";
  109. if(p.longitud.direccion=='E')
  110. cout<<"Oriental"<<endl;
  111. else
  112. cout<<"Occidentel"<<endl;
  113. }
412  Programación / Programación C/C++ / Re: Dudas acerca de cierres de llaves en if, limite de lineas etc en: 13 Diciembre 2018, 00:35 am
eres lo mas! esta superentendible, ya habia visto esta tecnica en otros posts pero no me gusta evaluar todo en un solo if por tema de que por ahi tengo muchas cosas que evaluar por ejemplo comparar 8 o mas condiciones en lugar de 6 , ni modo tendre que ceder  :laugh:
413  Programación / Programación C/C++ / Re: Dudas acerca de cierres de llaves en if, limite de lineas etc en: 12 Diciembre 2018, 21:11 pm
ahh masomenos voy entendiendo lo de los 2^n casos, y suponiendo que quiera validar una hora que va desde 0:00:00 a 23:59:59 esta funcion que devuelve true o false estaria bien o me faltan llaves en el segundo if?  :huh:

Código
  1. bool validar_hora(thora hora)
  2. {
  3. if(hora.hora>=0 && hora.hora<=23){
  4. if(hora.minuto>=0 && hora.minuto<=59)
  5. if(hora.segundo>=0 && hora.segundo<=59)
  6. return true;
  7. }
  8. else
  9. return false;
  10. }
414  Programación / Programación C/C++ / Re: Dudas acerca de cierres de llaves en if, limite de lineas etc en: 12 Diciembre 2018, 20:39 pm
Nop entendi  :xD
415  Programación / Programación C/C++ / Re: Duda sobre eliminar nodos de una lista doble en: 12 Diciembre 2018, 20:39 pm
No entendi pero creo suponer que no importa el puntero anterior de la lista.inicio y si importa que el puntero nodo a eliminar deben apuntar en ambas direcciones a NULL antes de ser eliminado  :xD
416  Programación / Programación C/C++ / Re: consulta asignar enteros a un valor logico en: 12 Diciembre 2018, 20:23 pm
Código
  1. typedef struct ambito{
  2. bool local;
  3. };
Eso porque la consigna pedia una estructura ambito(local,global) y bueno ... pero si tienes razon, y con lo de  validar que solo sea 1 o 0 el dato entero est bien queda mejor asi como lo hiciste, muchas gracias
Código
  1. do{
  2. cout<<"Ingrese ambito local(0)/global(1): ";
  3. cin>>auxiliar;
  4. if(auxiliar==0)
  5. nuevo->dato.global.local=false;
  6. else if(auxiliar==1)
  7.        nuevo->dato.global.local=true;
  8. }while(auxiliar!=0 && auxiliar!=1);
417  Programación / Programación C/C++ / consulta asignar enteros a un valor logico en: 12 Diciembre 2018, 19:11 pm
Queria saber si esta bien el modulo crear(nuevo) donde asigno enteros a una variable logica o hay otra forma mas "estetica"? gracias
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. const int MAX=32;
  8. typedef char tcad[MAX];
  9. typedef struct ambito{
  10. bool local;
  11. };
  12. typedef struct simbolo{
  13. tcad nombre;
  14. tcad tipo_dato;
  15. int tamanyo;
  16. int valor;
  17. ambito global;
  18. };
  19. typedef struct tnodo *pnodo;
  20. typedef struct tnodo{
  21. simbolo dato;
  22. pnodo sig;
  23. };
  24. typedef struct tlista{
  25. pnodo inicio;
  26. pnodo final;
  27. };
  28.  
  29. void iniciar(tlista &tabla);
  30. void crear(pnodo &nuevo);
  31. bool validar(tcad cadena);
  32. void agregar_final(tlista &tabla, pnodo nuevo);
  33. int cantidad(pnodo i);
  34. int total_bytes(pnodo i);
  35. void ordenar(tlista &tabla);
  36. void mostrar(tlista tabla);
  37. void nueva_cadena(tcad &cadena);
  38.  
  39. int main()
  40. {
  41. int opcion;
  42. tlista mitabla;
  43. pnodo nuevo;
  44. iniciar(mitabla);
  45. do{
  46. system("cls");
  47. cout<<"1. Agregar variable a la tabla"<<endl;
  48. cout<<"2. Mostrar cantidad de variables"<<endl;
  49. cout<<"3. Calcular bytes de la tabla"<<endl;
  50. cout<<"4. Ordenar tabla"<<endl;
  51. cout<<"5. Mostrar tabla"<<endl;
  52. cout<<"6. Salir"<<endl;
  53. cin>>opcion;
  54. switch(opcion){
  55. case 1: crear(nuevo);
  56. if(nuevo!=NULL)
  57. agregar_final(mitabla,nuevo);
  58. break;
  59. case 2: cout<<"Cantidad de variables: "<<cantidad(mitabla.inicio)<<endl;break;
  60. case 3: cout<<"Bytes totales de la tabla: "<<total_bytes(mitabla.inicio)<<endl;break;
  61. case 4: ordenar(mitabla);break;
  62. case 5: mostrar(mitabla);break;
  63. case 6: cout<<"FIN DEL PROGRAMA"<<endl;break;
  64. default: cout<<"Opcion incorrecta"<<endl;
  65. }
  66. system("Pause");
  67. }while(opcion!=6);
  68. }
  69.  
  70. void iniciar(tlista &tabla)
  71. {
  72. tabla.inicio=NULL;
  73. tabla.final=NULL;
  74. }
  75. //Aca es donde quiero que vean si esta bien lo de asignar valor entero  a esa variable logica nuevo->dato.global.local ya que ...
  76. void crear(pnodo &nuevo)
  77. {
  78.        int auxiliar;
  79. bool valido;
  80. nuevo=new tnodo;
  81. if(nuevo!=NULL){
  82. do{
  83. cout<<"Ingrese nombre variable: ";
  84. nueva_cadena(nuevo->dato.nombre);
  85. }while(validar(nuevo->dato.nombre)==false);
  86. cout<<"Ingrese tipo de dato: ";
  87. nueva_cadena(nuevo->dato.tipo_dato);
  88. cout<<"Ingrese  tamaño: ";
  89. cin>>nuevo->dato.tamanyo;
  90. cout<<"Ingrese valor: ";
  91. cin>>nuevo->dato.valor;
  92. do{
  93. cout<<"Ingrese ambito local(0)/global(1): ";
  94. cin>>auxiliar;
  95. if(auxiliar==0 || auxiliar==1){
  96. nuevo->dato.global.local=auxiliar;
  97. valido=true;
  98. }
  99. else
  100. valido=false;
  101. }while(valido==false);
  102. nuevo->sig=NULL;
  103. }
  104. else
  105. cout<<"MEMORIA INSUFICIENTE"<<endl;
  106. }
  107. //... de esta forma no me funciona :(
  108. void crear(pnodo &nuevo)
  109. {
  110. nuevo=new tnodo;
  111. if(nuevo!=NULL){
  112. do{
  113. cout<<"Ingrese nombre variable: ";
  114. nueva_cadena(nuevo->dato.nombre);
  115. }while(validar(nuevo->dato.nombre)==false);
  116. cout<<"Ingrese tipo de dato: ";
  117. nueva_cadena(nuevo->dato.tipo_dato);
  118. cout<<"Ingrese  tamaño: ";
  119. cin>>nuevo->dato.tamanyo;
  120. cout<<"Ingrese valor: ";
  121. cin>>nuevo->dato.valor;
  122. //JUSTO DESDE AQUI
  123. do{
  124. cout<<"Ingrese ambito local(0)/global(1): ";
  125. cin>>nuevo->dato.global.local;
  126. }while(nuevo->dato.global.local<0 || nuevo->dato.global.local>1);
  127. nuevo->sig=NULL;
  128. }
  129. else
  130. cout<<"MEMORIA INSUFICIENTE"<<endl;
  131. }
  132.  
  133. bool validar(tcad cadena)
  134. {
  135. int i;
  136. bool validado=true;
  137. if(islower(cadena[0]) || isupper(cadena[0])){
  138. for(i=1;i<strlen(cadena) && !validado;i++){
  139. if(isdigit(cadena[i]) || isupper(cadena[i]) || islower(cadena[i]) || cadena[i]=='_')
  140. validado=true;
  141. else
  142. validado=false;
  143. }
  144. }
  145. else
  146. validado=false;
  147. return validado;
  148. }
  149.  
  150. void agregar_final(tlista &tabla, pnodo nuevo)
  151. {
  152. if(tabla.inicio==NULL){
  153. tabla.inicio=nuevo;
  154. tabla.final=nuevo;
  155. }
  156. else{
  157. tabla.final->sig=nuevo;
  158. tabla.final=nuevo;
  159. }
  160. }
  161.  
  162. int cantidad(pnodo i)
  163. {
  164. if(i==NULL)
  165. return 0;
  166. else
  167. return cantidad(i->sig)+1;
  168. }
  169.  
  170. int total_bytes(pnodo i)
  171. {
  172. if(i==NULL)
  173. return 0;
  174. else
  175. return i->dato.tamanyo+total_bytes(i->sig);
  176. }
  177.  
  178. void ordenar(tlista &tabla)
  179. {
  180. pnodo i, j;
  181. simbolo cambio;
  182. bool ordenado=true;
  183. if(tabla.inicio!=NULL){
  184. while(ordenado){
  185. ordenado=false;
  186. for(i=tabla.inicio;i->sig!=NULL;i=i->sig){
  187. j=i->sig;
  188. if(i->dato.tamanyo>j->dato.tamanyo){
  189. cambio=i->dato;
  190. i->dato=j->dato;
  191. j->dato=cambio;
  192. ordenado=true;
  193. }
  194. }
  195. }
  196. }
  197. }
  198.  
  199. void mostrar(tlista tabla)
  200. {
  201. pnodo i;
  202. if(tabla.inicio!=NULL){
  203. for(i=tabla.inicio;i!=NULL;i=i->sig){
  204. cout<<"Nombre variable: "<<i->dato.nombre<<endl;
  205. cout<<"Tipo de dato: "<<i->dato.tipo_dato<<endl;
  206. cout<<"Tamaño: "<<i->dato.tamanyo<<" Bytes"<<endl;
  207. cout<<"Valor: "<<i->dato.valor<<" Bytes"<<endl;
  208. cout<<"Ambito: ";
  209. if(i->dato.global.local==true)
  210. cout<<"Global"<<endl;
  211. else
  212. cout<<"Local"<<endl;
  213. cout<<endl;
  214. }
  215. }
  216. else
  217. cout<<"Tabla vacia"<<endl;
  218. }
  219.  
  220. void nueva_cadena(tcad &cadena)
  221. {
  222. fflush(stdin);
  223. gets(cadena);
  224. fflush(stdin);
  225. }
418  Programación / Programación C/C++ / Re: modificar lectura de cadenas(Solucionado) en: 12 Diciembre 2018, 06:25 am
Dices sentencias pero no das argumentas.
Que es lo que "no va a funcionar" y por que dices que no va a funcionar?





Perdon, tienes razon me confundí, claro que si va funcionar pero no de la manera que yo quiero
419  Programación / Programación C/C++ / Re: Dudas sobre el ordenamiento burbuja en listas simples en: 12 Diciembre 2018, 05:52 am
Creo que el segundo código no funciona en una lista vacía porque si esta está vacía la inicialización del <for> sería <i = NULL> y en la condición del <for> (i->sig != NULL) te daría un problema ya que no existe un puntero a siguiente.
En cambio en el primer código con el <if> haces una excepción para cuando esto ocurra. :-X
Muchas gracias, tambien pensé lo mismo pero queria estar segura  ;-)
420  Programación / Programación C/C++ / Dudas acerca de cierres de llaves en if, limite de lineas etc en: 12 Diciembre 2018, 05:17 am
Código
  1. //Alguien me dice porque este codigo funciona asi y..
  2. bool alguna_funcion(estructura a, estructura b)
  3. {
  4. if(condiciones){
  5. if(condiciones)
  6. if(condiciones)
  7. if(condiciones)
  8. return true;
  9. }
  10. else
  11. return false;
  12. }
  13. // ... no asi? por favor :(
  14. bool alguna_funcion(estructura a, estructura b)
  15. {
  16. if(condiciones)
  17. if(condiciones)
  18. if(condiciones)
  19. if(condiciones)
  20. return true;
  21. else
  22. return false;
  23. }
  :huh:
Páginas: 1 ... 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [42] 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 ... 64
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines