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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [55] 56 57 58 59 60 61 62 63 64
541  Programación / Programación C/C++ / Archivos binarios en: 5 Octubre 2018, 11:49 am
Hola, miren no se que estoy haciendo mal a  la hora de agregar un nuevo registro, quiero que guardar registros de alumnos teniendo en cuenta que sus codigo de alumno no se deben repetir, no se que estoy haciendo mal  :(

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. typedef char tcad[50];
  8. typedef struct talumno{
  9. int libreta;
  10. tcad nombre;
  11. tcad carrera;
  12. };
  13. typedef FILE *parchivo;
  14.  
  15. void carga(talumno &a);
  16. void cargar_alumnos(parchivo alumnos);
  17. void mostrar(parchivo alumnos);
  18. void borrar(parchivo alumnos, int buscado);
  19. bool consulta(parchivo alumnos, int codigo);
  20.  
  21. main()
  22. {
  23. int codigoBuscado;
  24. parchivo estudiantes;
  25. cargar_alumnos(estudiantes);
  26. mostrar(estudiantes);
  27. cout<<"Buscar alumno, ingrese LU: ";cin>>codigoBuscado;
  28. borrar(estudiantes,codigoBuscado);
  29. system("pause");
  30. }
  31.  
  32. void carga(talumno &a)
  33. {
  34. fflush(stdin);
  35. cout<<"Ingrese LU: ";cin>>a.libreta;
  36. fflush(stdin);
  37. cout<<"Ingrese nombre: ";gets(a.nombre);
  38. fflush(stdin);
  39. cout<<"Ingrese carrera: ";gets(a.carrera);
  40. fflush(stdin);
  41. }
  42.  
  43. void cargar_alumnos(parchivo alumnos)
  44. {
  45. talumno a;
  46. int cantidad;
  47. alumnos=fopen("alumnos.txt","wb");//Modo escritura, se pierde el contenido, si no existe el archivo lo crea
  48. cout<<"Cuantos registros desea guardar?: ";cin>>cantidad;
  49. while(cantidad>0){
  50. carga(a);
  51. if(consulta(alumnos,a.libreta)==false){
  52. fwrite(&a,sizeof(a),1,alumnos);
  53. cantidad--;
  54. }
  55. else{
  56. cout<<"YA EXISTE UN USUARIO CON LA MISMA LIBRETA"<<endl;
  57. }
  58. }
  59. fclose(alumnos);
  60. }
  61.  
  62. void mostrar(parchivo alumnos)
  63. {
  64. talumno a;
  65. alumnos=fopen("alumnos.txt","rb");//Apertura solo modo escritura
  66. if(alumnos==NULL){
  67. cout<<"Archivo inexistente"<<endl;
  68. }
  69. else{
  70. while(!feof(alumnos)){
  71. fread(&a,sizeof(a),1,alumnos);
  72. if(!feof(alumnos)){
  73. cout<<a.libreta<<endl;
  74. cout<<a.nombre<<endl;
  75. cout<<a.carrera<<endl;
  76. }
  77. }
  78. }
  79. fclose(alumnos);
  80. }
  81.  
  82. void borrar(parchivo alumnos, int buscado)//Copia todos los alumnos excepto uno en especifico y lo guarda en otro archivo temporal
  83. {
  84. talumno a;
  85. parchivo aux;
  86. alumnos=fopen("alumnos.txt","rb");
  87. aux=fopen("temporal.txt","wb");
  88. if(alumnos!=NULL){
  89. while(!feof(alumnos)){
  90. fread(&a,sizeof(a),1,alumnos);
  91. if(a.libreta!=buscado && !feof(alumnos)){
  92. fwrite(&a,sizeof(a),1,aux);
  93. }
  94. }
  95. fclose(aux);
  96. fclose(alumnos);
  97. }
  98. if(remove("alumnos.txt")==0){//Desde aqui borra el archivo original y renombra el archivo temporal a "alumnos.txt"
  99. cout<<"ELIMINADO EXITOSAMENTE"<<endl;
  100. if(rename("temporal.txt","alumnos.txt")==0){
  101. cout<<"RENOMBRADO EXITOSAMENTE"<<endl;
  102. }
  103. else{
  104. cout<<"ERROR AL RENOMBRAR"<<endl;
  105. }
  106. }
  107. else{
  108. cout<<"ERROR AL ELIMINAR"<<endl;
  109. }
  110. }
  111.  
  112. bool consulta(parchivo alumnos, int codigo)
  113. {
  114. talumno a;
  115. bool existe=false;
  116. alumnos=fopen("alumnos.txt","rb");
  117. if(alumnos!=NULL){
  118. while(!feof(alumnos) && existe==false){
  119. fread(&a,sizeof(a),1,alumnos);
  120. if(a.libreta==codigo){
  121. existe=true;
  122. }
  123. }
  124. }
  125. fclose(alumnos);
  126. return existe;
  127. }
542  Programación / Programación C/C++ / Re: Archivos, traducir recorrido en: 5 Octubre 2018, 10:46 am
Emm si entiendo lo de !feof(archivo)  ahi en el codigo lo puse , no se porque me lo explicas una y otra vez , ahh con que era MIENTRAS NO LE CAMBIE EL VALOR A EXISTE, ahi estaba el chiste  ;-)
543  Programación / Programación C/C++ / Re: Archivos, traducir recorrido en: 5 Octubre 2018, 09:36 am
Te paso todo el codigo mejor, de esta forma no lo entiendo
Código
  1. bool existe(parchivo alumnos, int codigo)
  2. {
  3. talumno a;
  4. bool existe=false;
  5. alumnos=fopen("alumnos.txt","rb");
  6. if(alumnos!=NULL){
  7. while(!feof(alumnos) && !existe){
  8. fread(&a,sizeof(a),1,alumnos);
  9. if(a.libreta==codigo){
  10. existe=true;
  11. }
  12. }
  13. }
  14. fclose(alumnos);
  15. return existe;
  16. }
Pero de esta forma si
Código
  1. bool existe(parchivo alumnos, int codigo)
  2. {
  3. talumno a;
  4. bool existe=false;
  5. alumnos=fopen("alumnos.txt","rb");
  6. if(alumnos!=NULL){
  7. while(!feof(alumnos) && existe==false){
  8. fread(&a,sizeof(a),1,alumnos);
  9. if(a.libreta==codigo){
  10. existe=true;
  11. }
  12. }
  13. }
  14. fclose(alumnos);
  15. return existe;
  16. }
544  Programación / Programación C/C++ / Re: Archivos, traducir recorrido en: 5 Octubre 2018, 09:21 am
Pero bool existe estaba inicializado en false, no seria NO(false)? me siento confudidisima  :huh:
545  Programación / Programación C/C++ / Archivos, traducir recorrido en: 5 Octubre 2018, 07:57 am
El otro dia llegue a entenderlo pero hoy me olvide, se me hace algo confuso ese signo de exclamacion  :huh:
Código
  1. while consulta(file archivo, int codigo)
  2. {
  3. ...
  4. bool existe=false;
  5. if(archivo==NULL){
  6. ...
  7. }
  8. else{
  9. while(!feof(archivo) && !existe){// En castellano como seria este recorrido? Mientras no sea final del archivo y ...?
  10. ...
  11. }
  12. }
  13. }
  14.  
546  Programación / Programación C/C++ / Re: AYUDA Error: [Warning] multi-character character constant [-Wmultichar] en: 5 Octubre 2018, 07:20 am
El case esta limitado solo a enteros o caracteres que tambien son enteros en el codico ASCII

Código
  1. Ese switch a mi parecer, creo que solo esta limitado a enteros o caracteres, y aca tienes otro error
  2.   const int USD = 7.40;
  3.   const int EUR = 9.60;
  4.   const int MXN = 0.60;
  5.  
Esas constantes enteras te van a dar un error en tu calculo ya que no son flotantes
547  Programación / Programación C/C++ / Re: Codigo basico ayudaaaaaa en: 5 Octubre 2018, 03:17 am
Errores

Código
  1. if (numero>numero);{
  2. if else {
  3.  
548  Programación / Programación C/C++ / Re: Alguien sabe como poner BORRAR en este programa de DEV-C++ en: 4 Octubre 2018, 07:36 am
Quieres poner un borrar nodo dentro de tu codigo dices?

Aca tengo unas funciones para desligar un nodo de una lista y devolverlas al programa donde se invoco, si el elemento devuelvo no es nulo entonces simplemente hace un delete(nodo); y ya

Código
  1. pnodo quitar_inicio(pnodo &lista)
  2. {
  3. pnodo borrado;
  4. if(lista==NULL){
  5. borrado=NULL;
  6. }
  7. else{
  8. borrado=lista;
  9. lista=lista->sig;
  10. borrado->sig=NULL;
  11. }
  12. return borrado;
  13. }
  14.  
  15. pnodo quitar_final(pnodo &lista)
  16. {
  17. pnodo borrado, i;
  18. if(lista==NULL){
  19. borrado=NULL;
  20. }
  21. else{
  22. if(lista->sig==NULL){
  23. borrado=lista;
  24. lista=NULL;
  25. }
  26. else{
  27. for(i=lista;(i->sig)->sig!=NULL;i=i->sig);
  28. borrado=i->sig;
  29. i->sig=NULL;
  30. }
  31. }
  32. return borrado;
  33. }
  34.  
  35. pnodo quitar_nodo(pnodo &lista, int valor)
  36. {
  37. pnodo borrado, i;
  38. if(lista==NULL){
  39. borrado=NULL;
  40. }
  41. else{
  42. if(valor==lista->dato){
  43. borrado=lista;
  44. lista=borrado->sig;
  45. borrado->sig=NULL;
  46. }
  47. else{
  48. for(i=lista;i->sig!=NULL && valor!=(i->sig)->dato;i=i->sig);
  49. if(i->sig!=NULL){
  50. borrado=i->sig;
  51. i->sig=borrado->sig;
  52. borrado->sig=NULL;
  53. }
  54. else{
  55. borrado=NULL;
  56. }
  57. }
  58. }
  59. return borrado;
  60. }
549  Programación / Programación C/C++ / Re: ayuda con uso de fwrite actualizar fichero en c en: 4 Octubre 2018, 04:06 am
Es con w para archivos wb para archivos binarios sirve para agregar en modo escritura  y a+  para archivos y ab+ para archivos binarios este ultimo abre el archivo modo lectura/escritura y agrega al final
550  Programación / Programación C/C++ / Re: Alguien sabe como poner BORRAR en este programa de DEV-C++ en: 4 Octubre 2018, 04:03 am
Es con delete(nodo);
Páginas: 1 ... 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [55] 56 57 58 59 60 61 62 63 64
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines