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 ... 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 [112] 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 ... 161
1111  Programación / Programación C/C++ / Re: Hola necesito ayuda con este codigo porfavor en: 31 Octubre 2016, 02:20 am
Eso y el gets por fgets para prevenir desbordamiento de buffer. Aquí el código modificado:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct materiales{
  6.   int codart, stock, stockmin;
  7.   char desc[20];
  8.   float precio;
  9. };
  10. struct ventas{
  11.      int cod,cant;
  12. };
  13.  
  14.  
  15. //ACA YO CARGO EL ARCHIVO AMTERIALES
  16. int main() {
  17.    FILE *archivomateriales;
  18.    FILE *archivoventa;
  19.    int op;
  20.    struct materiales mat;
  21.    struct ventas ven;
  22.  
  23.    if((archivomateriales=fopen("materiales.dat","wb")) != NULL) {
  24.        do {
  25.            printf("\n\tIngrese el codigo del articulo");
  26.            scanf("%d", &mat.codart);
  27.            printf("\n\tIngrese un breve descripcion");
  28.            getchar();
  29.            fgets(mat.desc, 20, stdin);
  30.            printf("\n\tIngrese stock actual del articulo");
  31.            scanf("%d", &mat.stock);
  32.            printf("\n\tIngrese stock minimo");
  33.            scanf("%d", &mat.stockmin);
  34.            printf("\n\tPor utimo ingrese precio");
  35.            scanf("%f", &mat.precio);
  36.            fwrite(&mat, sizeof(mat), 1, archivomateriales);
  37.            printf("\n\t¿Desea ingresar otro articulo? [1]-Para SI // [0]-Para NO");
  38.            scanf("%d", &op);
  39.        } while(op != 0);
  40.   }
  41.   else {
  42.      printf("\n\nError de archivo");
  43.   }
  44.   fclose(archivomateriales);
  45.  
  46. //ACA YO CARGO EL ARCHIVO VENTAS
  47.  
  48.    int opc;
  49.  
  50.    if((archivoventa=fopen("ventas.dat","wb")) != NULL) {
  51.        do{
  52.            printf("\n\tIngrese codigo del articulo");
  53.            scanf("%d", &ven.cod);
  54.            printf("\n\tIngrese cantidad vendida del articulo");
  55.            scanf("%d", &ven.cant);
  56.            fwrite(&ven,sizeof(ven),1,archivoventa);
  57.            printf("\n\t¿Desea registrar otra venta? [1]-Para SI // [0]-Para NO");
  58.            scanf("%d", &opc);
  59.        } while(opc!=0);
  60.    }
  61.    else {
  62.      printf("\nError de archivo");
  63.    }
  64.    fclose(archivoventa);
  65.  
  66.    //ACA ES DONDE ESTA LA FALLA
  67.  
  68.    if((archivoventa=fopen("ventas.dat","rb")) != NULL) {
  69.        if((archivomateriales=fopen("materiales.dat","r+b")) != NULL) {
  70.            fread(&ven, sizeof(ven), 1, archivoventa);
  71.            while(!feof(archivoventa)) {  
  72.                fread(&mat, sizeof(mat), 1, archivomateriales);          
  73.                while(!feof(archivomateriales)) {  
  74.                    if(mat.codart == ven.cod) {
  75.                         mat.stock = mat.stock-ven.cant;
  76.                         printf("\n\nEl stock entonces quedo en %d", mat.stock);
  77.                         fseek(archivomateriales, -1*(sizeof(mat)),SEEK_CUR);
  78.                         fwrite(&mat,sizeof(mat), 1, archivomateriales);
  79.                    }                        
  80.                    fread(&mat, sizeof(mat), 1, archivomateriales);
  81.                    printf("\nHola");    
  82.                }
  83.                rewind(archivomateriales);
  84.                fread(&ven,sizeof(ven),1,archivoventa);
  85.                printf("\nHola2");  
  86.            }
  87.        }
  88.        else {
  89.            printf("\nError archivo");
  90.        }
  91.        fclose(archivomateriales);  
  92.    }
  93.    else {
  94.        printf("\nError archivo");
  95.    }  
  96.    fclose(archivoventa);  
  97.    printf("\n\t\tError3");
  98.  
  99.    if((archivomateriales=fopen("materiales.dat","rb")) != NULL){
  100.        fread(&mat, sizeof(mat), 1, archivomateriales);
  101.        while(!feof(archivomateriales)) {
  102.            printf("\n\nEl codigo de articulo es %d", mat.codart);
  103.            printf("\n\nEl stock actualizado quedo asi %d", mat.stock);
  104.            fread(&mat, sizeof(mat), 1, archivomateriales);
  105.        }
  106.    }
  107.    else {
  108.        printf("Error");
  109.    }
  110.    fclose(archivomateriales);
  111. }
1112  Programación / Programación C/C++ / Re: Progrmacion en C ¿Como hacer para que me imprima los caracteres!? en: 31 Octubre 2016, 01:40 am
C2 no hace falta que sea un array de 1 solo elemento, basta sea una variable.

En la línea 39 deberías hacer un strcpy para copiar el valor de C1[0].Nconductor a C2.Nconductor.
De igual forma deberías hacer en una nueva línea después de la 45.
1113  Programación / Programación C/C++ / Re: Hola necesito ayuda con este codigo porfavor en: 31 Octubre 2016, 00:54 am
He cambiado la variable tipo FILE* materiales por archivomateriales, para evitar un posible conflicto con el nombre del struct y esto es lo que he conseguido del programa:
   Ingrese el codigo del articulo1

   Ingrese un breve descripcionmesa

   Ingrese stock actual del articulo10

   Ingrese stock minimo5

   Por utimo ingrese precio10

   ¿Desea ingresar otro articulo? [1]-Para SI //
  • -Para NO0

   Ingrese codigo del articulo1

   Ingrese cantidad vendida del articulo6

   ¿Desea registrar otra venta? [1]-Para SI //
  • -Para NO0


El stock entonces quedo en 4
Hola
Hola2
      Error3

El codigo de articulo es 1

El stock actualizado quedo asi 4

1114  Programación / Programación C/C++ / Re: Como ordenar las notas de las Alumnas de M ayor a Menor en: 30 Octubre 2016, 22:27 pm
Como ves pides un dato que es el sexo del alumno. Ahora viene cuándo debes hacer uso de este dato para mostrar solo el resultado de las alumnas.
1115  Programación / Programación C/C++ / Re: Mejorar un programa con arreglos en: 27 Octubre 2016, 19:51 pm
Lo único que puede ocurrir si, el array queda ordenado al principio, es que el programa va a recorrerlo sin realizar muchas acciones más.

La cosa es que nadie sabe cuándo un array queda ordenado, y la máquina tampoco, por lo que tendrá que comprobarlo antes de decidir si lo está.
1116  Programación / Programación C/C++ / Re: Invertir una Lista en C - La funcion Pop no me da el ultimo elemento.? en: 27 Octubre 2016, 01:01 am
Tendrías que mirar si (*nodo)->sig->sig vale NULL para sacar el valor de (*nodo)->sig->valor. Después hacer un free sobre (*nodo)->sig para terminar llevando a NULL (*nodo)->sig. Como puedes ver es muy complicado.

Te sería mucho más fácil cambiar la función agregar para hacer de tu lista una pila. El último objeto que entres debe estar en cabeza. Tu función pop quedaría tal y como la tienes. Para tu función agregar (por conveniencia sería mejor que la llamaras push):
La función debe recibir un puntero a la lista y el valor a añadir.
Dentro: creas una variable auxiliar de tipo nodo. Como valor le das el valor que te han pasado a la función. Como siguiente elemento apuntas a la lista.
Haces que la raíz de la lista que te han pasado como argumento apunte al nodo auxiliar.
Listo, ya tienes tu programa funcional.
1117  Programación / Programación C/C++ / Re: (Code::Blocks) Los ficheros objetos compilan bien pero no se crean los archivos en: 26 Octubre 2016, 21:10 pm
Usa whereis y locate a ver si los encuentras.
1118  Programación / Programación C/C++ / Re: Invertir una Lista en C - La funcion Pop no me da el ultimo elemento.? en: 26 Octubre 2016, 19:44 pm
El problema es que tu lista crece por el final pero quitas por el principio.
1119  Programación / Programación C/C++ / Re: el programa dejó de funconar correctamente por un problema. en: 25 Octubre 2016, 18:18 pm
¿Tu archivo es un pcx de verdad o has pillado una imagen cualquiera y la has cambiado la extensión?

Si tu imagen era un bmp, y tal vez te iría mejor por esa parte, deberías haber hecho lo siguiente: [del manual online de allegro (deberías pasarte por allí)] http://liballeg.org/stabledocs/en/alleg010.html

Código
  1. PACKFILE *packfile;
  2. BITMAP *bmp;
  3.  
  4. packfile = pack_fopen("mybitmap.bmp", F_READ);
  5. if (!packfile)
  6.    abort_on_error("Couldn't open mybitmap.bmp");
  7.  
  8. bmp = load_bmp_pf(packfile, pal);
  9. if (!bmp)
  10.    abort_on_error("Error loading mybitmap.bmp");
1120  Programación / Programación C/C++ / Re: Asignar valores de Matriz con For en: 25 Octubre 2016, 15:26 pm
En el primer for i < 10 está mal, se sale del límite. Debe ser i < 9.
El segundo for sobra. Todos los miembros del array tendrán el número 10.
Páginas: 1 ... 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 [112] 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines