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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 ... 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 58 ... 64
421  Programación / Programación C/C++ / Duda sobre eliminar nodos de una lista doble en: 12 Diciembre 2018, 05:12 am
Código
  1. /Definicion de la estructura lista doble
  2. typedef struct tnodo *pnodo;
  3. typedef struct tnodo{
  4. int dato;
  5. pnodo sig;
  6. pnodo ant;
  7. };
  8. typedef struct tlista{
  9. pnodo inicio;
  10. pnodo final;
  11. };
  12. //Porque se libera asi la memoria
  13. void liberar_lista(tlista &lista)
  14. {
  15. pnodo borrado;
  16. while(lista.inicio!=NULL){
  17. borrado=lista.inicio;
  18. lista.inicio=borrado->sig;
  19. borrado->sig=NULL;
  20. borrado->ant=NULL;
  21. delete(borrado);
  22. }
  23. }
  24. //Y no asi??
  25. void liberar_lista(tlista &lista)
  26. {
  27. pnodo borrado;
  28. while(lista.inicio!=NULL){
  29. borrado=lista.inicio;
  30. lista.inicio=borrado->sig;
  31. lista.inicio->ant=NULL;
  32. borrado->sig=NULL;
  33. delete(borrado);
  34. }
  35. }
:huh:
422  Programación / Programación C/C++ / Dudas sobre el ordenamiento burbuja en listas simples en: 12 Diciembre 2018, 04:56 am
Código
  1. //Porque el codigo funciona asi en listas vacias o no?
  2. void ordenar(tlista &lista)
  3. {
  4. puntero i, j;
  5. estructura cambio;
  6. bool ordenado=true;
  7. if(lista.inicio!=NULL){
  8. while(ordenado){
  9. ordenado=false;
  10. for(i=lista.inicio;i->sig!=NULL;i=i->sig){
  11. j=i->sig;
  12. if(i->dato>j->dato){
  13. cambio=i->dato;
  14. i->dato=j->dato;
  15. j->dato=cambio;
  16. ordenado=true;
  17. }
  18. }
  19. }
  20. }
  21. }
  22. //y este codigo solo funciona en listas no vacias, me perdí
  23. void ordenar(tlista &lista)
  24. {
  25. puntero i, j;
  26. estructura cambio;
  27. bool ordenado=true;
  28. while(ordenado){
  29. ordenado=false;
  30. for(i=lista.inicio;i->sig!=NULL;i=i->sig){
  31. j=i->sig;
  32. if(i->dato>j->dato){
  33. cambio=i->dato;
  34. i->dato=j->dato;
  35. j->dato=cambio;
  36. ordenado=true;
  37. }
  38. }
  39. }
  40. }
423  Programación / Programación C/C++ / Re: restricción de fecha enc++ en: 12 Diciembre 2018, 04:26 am
Hola, perdon que venga a hacer spam pero queria saber si este TAD Fecha esta bien/se le puede mejorar las operaciones que tiene, me gusto la forma en la que AlbertoBSB validó  la fecha con esa función ;)
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. typedef struct tfecha{
  7. int dia;
  8. int mes;
  9. int anyo;
  10. };
  11.  
  12. void crear_fecha(tfecha &fecha);
  13. bool validar_fecha(tfecha fecha);
  14. void igualdad_fechas(tfecha a, tfecha b);
  15. void comparar_fechas(tfecha a, tfecha b);
  16. bool bisiesto(tfecha fecha);
  17. void dias(tfecha fecha);
  18. void mostrar_mes(tfecha fecha);
  19. void mostrar_fecha(tfecha fecha);
  20.  
  21. int main()
  22. {
  23. tfecha a, b;
  24. crear_fecha(a);
  25. crear_fecha(b);
  26. igualdad_fechas(a,b);
  27. comparar_fechas(a,b);
  28. if(bisiesto(a)==true)
  29. cout<<"Año bisiesto"<<endl;
  30. else
  31. cout<<"Año normal"<<endl;
  32. dias(a);
  33. mostrar_mes(a);
  34. system("pause");
  35. }
  36.  
  37. void crear_fecha(tfecha &fecha)
  38. {
  39. do{
  40. cout<<"Ingrese dia: ";
  41. cin>>fecha.dia;
  42. cout<<"Ingrese mes: ";
  43. cin>>fecha.mes;
  44. cout<<"Ingrese año: ";
  45. cin>>fecha.anyo;
  46. }while(validar_fecha(fecha)==false);
  47. mostrar_fecha(fecha);
  48. }
  49.  
  50. bool validar_fecha(tfecha fecha)
  51. {
  52. int dias_mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  53. bool valido=true;
  54. if(bisiesto(fecha)==true)
  55. dias_mes[1]=29;
  56. if(fecha.mes<1 || fecha.mes>12 || fecha.dia<1 || fecha.dia>dias_mes[fecha.mes-1])
  57. valido=false;
  58. return valido;
  59. }
  60.  
  61. void igualdad_fechas(tfecha a, tfecha b)
  62. {
  63. if(a.dia==b.dia && a.mes==b.mes && a.anyo==b.anyo)
  64. cout<<"Son iguales"<<endl;
  65. else
  66. cout<<"Son diferentes"<<endl;
  67. }
  68.  
  69. void comparar_fechas(tfecha a, tfecha b)
  70. {
  71. if(a.anyo>b.anyo)
  72. cout<<"Es mayor"<<endl;
  73. else{
  74. if(a.anyo<b.anyo)
  75. cout<<"Es menor"<<endl;
  76. else{
  77. if(a.mes>b.mes)
  78. cout<<"Es mayor"<<endl;
  79. else{
  80. if(a.mes<b.mes)
  81. cout<<"Es menor"<<endl;
  82. else{
  83. if(a.dia>b.dia)
  84. cout<<"Es mayor"<<endl;
  85. else
  86. cout<<"Son iguales"<<endl;
  87. }
  88. }
  89. }
  90. }
  91. }
  92.  
  93. bool bisiesto(tfecha fecha)
  94. {
  95. return (fecha.anyo%4==0 && (fecha.anyo%100!=0 || fecha.anyo%400==0));
  96. }
  97.  
  98. void dias(tfecha fecha)
  99. {
  100. //Tomar en cuenta que se toma los dias que pasaron desde el 1 de Enero.
  101. //suma_dias[11]={...]; es la suma de dias entre los meses anteriores al mismo.
  102. int cantidad_dias=-1, suma_dias[11]={31,59,90,120,151,181,212,243,273,304,334};//xd
  103. if(fecha.mes<2)
  104. cantidad_dias+=fecha.dia;
  105. else
  106. cantidad_dias+=fecha.dia+suma_dias[fecha.mes-2];
  107. if(fecha.mes>2 && bisiesto(fecha)==true)
  108. cantidad_dias++;
  109. cout<<"Cantidad de dias desde el 1 de Enero: "<<cantidad_dias<<endl;
  110. }
  111.  
  112. void mostrar_mes(tfecha fecha)
  113. {
  114. switch(fecha.mes){
  115. case 1: cout<<"Enero"<<endl;break;
  116. case 2: cout<<"Febrero"<<endl;break;
  117. case 3: cout<<"Marzo"<<endl;break;
  118. case 4: cout<<"Abril"<<endl;break;
  119. case 5: cout<<"Mayo"<<endl;break;
  120. case 6: cout<<"Junio"<<endl;break;
  121. case 7: cout<<"Julio"<<endl;break;
  122. case 8: cout<<"Agosto"<<endl;break;
  123. case 9: cout<<"Semptiembre"<<endl;break;
  124. case 10: cout<<"Octubre"<<endl;break;
  125. case 11: cout<<"Noviembre"<<endl;break;
  126. case 12: cout<<"Diciembre"<<endl;break;
  127. }
  128. }
  129.  
  130. void mostrar_fecha(tfecha fecha)
  131. {
  132. cout<<"Fecha: "<<fecha.dia<<"/"<<fecha.mes<<"/"<<fecha.anyo<<endl;
  133. }
  134.  
  135.  
424  Programación / Programación C/C++ / Re: restricción de fecha enc++ en: 10 Diciembre 2018, 17:53 pm
Hola muchacho, puedes usar esta funcion que acabo de hacer recien para ti  ;-)
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. typedef struct tfecha{
  5. int dia;
  6. int mes;
  7. int anyo;
  8. };
  9.  
  10. bool validar_fecha(tfecha fecha)
  11. {
  12. switch(fecha.mes){
  13. case 1: case 3: case 5: case 7: case 8: case 10: case 12:
  14. if(fecha.dia>0 && fecha.dia<32)
  15. return true;
  16. else
  17. return false;
  18. break;
  19. case 4: case 6: case 9: case 11:
  20. if(fecha.dia>0 && fecha.dia<31)
  21. return true;
  22. else
  23. return false;
  24. break;
  25. case 2: if(fecha.anyo%4==0){
  26. if(fecha.dia>0 && fecha.dia<30)
  27. return true;
  28. else
  29. return false;
  30. }
  31. else{
  32. if(fecha.dia>0 && fecha.dia<29)
  33. return true;
  34. else
  35. return false;
  36. }
  37. break;
  38. default: return false;
  39. }
  40. }
  41.  
  42. int main()
  43. {
  44. tfecha fecha;
  45. do{
  46. cout<<"Ingrese dia: ";
  47. cin>>fecha.dia;
  48. cout<<"Ingrese mes: ";
  49. cin>>fecha.mes;
  50. cout<<"Ingrese año: ";
  51. cin>>fecha.anyo;
  52. }while(validar_fecha(fecha)==false);
  53. cout<<"Fecha: "<<fecha.dia<<"/"<<fecha.mes<<"/"<<fecha.anyo<<endl;
  54. system("pause");
  55. }
PD: No se hacen tareas, esto es solo un mini ejemplo
425  Sistemas Operativos / GNU/Linux / Re: 6 kB de RAM? en: 8 Diciembre 2018, 06:32 am
Hola es con #free -h donde dice Swap:          2.0G
426  Programación / Java / IDE para programar en Java en: 7 Diciembre 2018, 22:33 pm
Hola a todos, que IDE me recomiendan para programar/desarrollar en Java que no sea NetBeans porque ya lo tengo y no me gusta, gracias.
427  Programación / Programación C/C++ / Re: modificar lectura de cadenas(Solucionado) en: 7 Diciembre 2018, 05:47 am
El cout no es para funciones?
No se que quisiste decir.
Algo así quise decir yo.
Código
  1. void pedir(char *mensaje) {
  2.   // Posiblemente algunas instrucciones antes
  3.   cout << mensaje;
  4.   // Otras instrucciones antes
  5. }

Instrucciones antes o después pueden ser los fflush, etc.
ahh procedimientos si, pero igual no va funcionar
428  Programación / Programación C/C++ / Re: modificar lectura de cadenas en: 7 Diciembre 2018, 02:55 am
crear una funcion que reciba el string a mostrar y que internamente haga el cout, el fgets o gets y el fflush.
Me gusta la idea pero el cout no es para funciones y no estaria bien ya que los mensajes que para pedir al usuario el dato son diferentes aplicare igual la "funcion", me quedo mejor y mas compacto, gracias  ;-)
Código
  1. void nueva_cadena(tcad &cadena)
  2. {
  3. fflush(stdin);
  4. gets(cadena);
  5. fflush(stdin);
  6. }
429  Programación / Programación C/C++ / modificar lectura de cadenas(Solucionado) en: 7 Diciembre 2018, 02:12 am
Hola a todos, miren estaba repasando un poco de lo que vi en Estructura de Datos y rehaciendo todo de nuevo y me encuentro que este modulo llamado crear_nodo(nodo nuevo); le pide al usuario ingresar enteros y cadenas y yo habia utilizado el gets(cadena); y la funcion fflush(stdin); para limpiar el buffer el punto es que no me gusto para nada colocar el fflush(stdin); antes y despues de leer una cadena con gets(cadena); si alguien sabe de alguna forma mas estetica me ayuda porfis?
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 tfecha{
  10. int dia;
  11. int mes;
  12. int anyo;
  13. };
  14. typedef struct tdomicilio{
  15. tcad calle;
  16. int numero;
  17. tcad barrio;
  18. tcad localidad;
  19. };
  20. typedef struct tvehiculo{
  21. tcad marca;
  22. tcad modelo;
  23. tcad patente;
  24. };
  25. typedef struct thorario{
  26. tcad entrada;
  27. tcad salida;
  28. };
  29. typedef struct tchofer{
  30. int legajo;
  31. tcad apellido;
  32. tcad nombre;
  33. int DNI;
  34. tfecha fecha_nacimiento;
  35. tdomicilio domicilio;
  36. tvehiculo vehiculo_asignado;
  37. thorario horario_trabajo;
  38. int horas_extras;
  39. };
  40. typedef struct tnodo *pnodo;
  41. typedef struct tnodo{
  42. tchofer dato;
  43. pnodo sig;
  44. };
  45.  
  46. void iniciar_lista(pnodo &lista);
  47. void crear_nodo(pnodo &nuevo);
  48. void agregar_final(pnodo &lista, pnodo nuevo);
  49. void listar_choferes(pnodo lista, tcad buscado);
  50. void listar_chofer_horas_extras(pnodo lista);
  51. void nueva_cadena(tcad &cadena);
  52.  
  53. int main()
  54. {
  55. int opcion;
  56. pnodo milista, nuevo;
  57. tcad buscado;
  58. iniciar_lista(milista);
  59. do{
  60. system("cls");
  61. cout<<"1. Agregar chofer"<<endl;
  62. cout<<"2. Listar choferes segun horario de entrada"<<endl;
  63. cout<<"3. Listar chofer con mayor cantidad de horas extras"<<endl;
  64. cout<<"4. Salir"<<endl;
  65. cin>>opcion;
  66. switch(opcion){
  67. case 1: crear_nodo(nuevo);
  68. if(nuevo!=NULL)
  69. agregar_final(milista,nuevo);
  70. break;
  71. case 2: cout<<"Ingrese hora: ";
  72. nueva_cadena(buscado);
  73. listar_choferes(milista,buscado);break;
  74. case 3: listar_chofer_horas_extras(milista);break;
  75. case 4: cout<<"FIN DEL PROGRAMA"<<endl;break;
  76. default: cout<<"Opcion incorrecta"<<endl;
  77. }
  78. system("pause");
  79. }while(opcion!=4);
  80. }
  81.  
  82. void iniciar_lista(pnodo &lista)
  83. {
  84. lista=NULL;
  85. }
  86.  
  87. void crear_nodo(pnodo &nuevo)
  88. {
  89. nuevo=new tnodo;
  90. if(nuevo!=NULL){
  91. cout<<"Ingrese datos personales"<<endl;
  92. cout<<"Legajo: ";
  93. cin>>nuevo->dato.legajo;
  94. cout<<"Apellido: ";
  95. nueva_cadena(nuevo->dato.apellido);
  96. cout<<"Nombre: ";
  97. nueva_cadena(nuevo->dato.nombre);
  98. cout<<"DNI: ";
  99. cin>>nuevo->dato.DNI;
  100. cout<<"Fecha de nacimiento"<<endl;
  101. cout<<"Dia: ";
  102. cin>>nuevo->dato.fecha_nacimiento.dia;
  103. cout<<"Mes: ";
  104. cin>>nuevo->dato.fecha_nacimiento.mes;
  105. cout<<"Año: ";
  106. cin>>nuevo->dato.fecha_nacimiento.anyo;
  107. cout<<"Domicilio"<<endl;
  108. cout<<"Calle: ";
  109. nueva_cadena(nuevo->dato.domicilio.calle);
  110. cout<<"Numero: ";
  111. cin>>nuevo->dato.domicilio.numero;
  112. cout<<"Barrio: ";
  113. nueva_cadena(nuevo->dato.domicilio.barrio);
  114. cout<<"Localidad: ";
  115. nueva_cadena(nuevo->dato.domicilio.localidad);
  116. cout<<"Vehiculo asignado"<<endl;
  117. cout<<"Marca: ";
  118. nueva_cadena(nuevo->dato.vehiculo_asignado.marca);
  119. cout<<"Modelo: ";
  120. nueva_cadena(nuevo->dato.vehiculo_asignado.modelo);
  121. cout<<"Patente: ";
  122. nueva_cadena(nuevo->dato.vehiculo_asignado.patente);
  123. cout<<"Horario entrada: ";
  124. nueva_cadena(nuevo->dato.horario_trabajo.entrada);
  125. cout<<"Horario salida: ";
  126. nueva_cadena(nuevo->dato.horario_trabajo.salida);
  127. cout<<"Horas extras: ";
  128. cin>>nuevo->dato.horas_extras;
  129. nuevo->sig=NULL;
  130. }
  131. else
  132. cout<<"MEMORIA INSUFICIENTE"<<endl;
  133. }
  134.  
  135. void agregar_final(pnodo &lista, pnodo nuevo)
  136. {
  137. pnodo i;
  138. if(lista==NULL)
  139. lista=nuevo;
  140. else{
  141. for(i=lista;i->sig!=NULL;i=i->sig);
  142. i->sig=nuevo;
  143. }
  144. }
  145.  
  146. void listar_choferes(pnodo lista, tcad buscado)
  147. {
  148. int cantidad=0;
  149. pnodo i;
  150. if(lista!=NULL){
  151. for(i=lista;i!=NULL;i=i->sig){
  152. if(strcmp(i->dato.horario_trabajo.entrada,buscado)==0){
  153. cout<<"Chofer"<<endl;
  154. cout<<"Nombre: "<<i->dato.nombre<<endl;
  155. cout<<"Apellido: "<<i->dato.apellido<<endl;
  156. cout<<"Patente de vehiculo asignado: "<<i->dato.vehiculo_asignado.patente<<endl<<endl;
  157. cantidad++;
  158. }
  159. }
  160. cout<<"Cantidad de choferes: "<<cantidad<<endl;
  161. }
  162. else
  163. cout<<"LISTA VACIA"<<endl;
  164. }
  165.  
  166. void listar_chofer_horas_extras(pnodo lista)
  167. {
  168. pnodo i, chofer;
  169. if(lista!=NULL){
  170. chofer=lista;
  171. for(i=lista;i!=NULL;i=i->sig){
  172. if(i->dato.horas_extras>chofer->dato.horas_extras)
  173. chofer=i;
  174. }
  175. cout<<"Chofer con mayor cantidad de horas extras"<<endl;
  176. cout<<"Nombre: "<<chofer->dato.nombre<<endl;
  177. cout<<"Apellido: "<<chofer->dato.apellido<<endl;
  178. cout<<"DNI: "<<chofer->dato.DNI<<endl;
  179. cout<<"Horas extras: "<<chofer->dato.horas_extras<<endl;
  180. }
  181. else
  182. cout<<"LISTA VACIA"<<endl;
  183. }
  184.  
  185. void nueva_cadena(tcad &cadena)
  186. {
  187. fflush(stdin);
  188. gets(cadena);
  189. fflush(stdin);
  190. }
430  Programación / Programación C/C++ / liberar memoria(Resuelto) en: 6 Diciembre 2018, 18:51 pm
Resuleto!
Código
  1. //Definicion de la estructura lista
  2. typedef struct tnodo *pnodo;
  3. typedef struct tnodo{
  4. char dato;
  5. pnodo sig;
  6. };
  7. typedef struct tlista{
  8. pnodo inicio;
  9. pnodo final;
  10. };
  11.  
  12. void liberar_memoria(tlista &lista)
  13. {
  14. pnodo eliminado;
  15. while(lista.inicio!=NULL){
  16. eliminado=lista.inicio;
  17. lista.inicio=eliminado->sig;
  18. eliminado->sig=NULL;
  19. delete(eliminado);
  20. }
  21. }
;-)
Páginas: 1 ... 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 58 ... 64
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines