Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - magictheory

#1
Hola ahi subi las dos imagenes




Una es antes y otra es despues del bucle...
#2
Hola mafus, lo probe en linux con el geany anduvo. Porque sera que con el devc++ no anduvo?
#3
Hola mafus, lo copie tal cual en el devc++ y me sigue el bucle infinito.... Que sera que puede ser?
#4
Hola muchas gracias por tu respuesta!!!!
Hola vos decis que el dev c++ puede llegar a confundirse? Vos lo compilaste en linux?




Hola MAFUS acabo de probar cambiar el nombre del archivo pero me sigue provocando un bucle infinito, que solo me imprime la palabra "hola". Vos solo le cambiaste eso o alguna cosa mas? Desde ya te agradezco!!!
#5
Programación C/C++ / Problema con bucle infinito
30 Octubre 2016, 20:20 PM
Hola a toda la comunidad, les deseo prospero dia!!
Resulta que tengo un codio que me produce un bucle infinito y las verdad no se porque me  
produce eso. Lo que hago es algo simple. Cargo dos archivos y en uno de los archivos quiero modificar el stock, osea actualizarlo, nada mas. A continuacion les paso el codigo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct materiales{
int codart, stock, stockmin;
char desc[20];
float precio;
};
struct ventas{
int cod,cant;
};


//ACA YO CARGO EL ARCHIVO AMTERIALES
main(){
FILE *materiales;
FILE *archivoventa;
fpos_t pos;
int op;
struct materiales mat;
struct ventas ven;
if((materiales=fopen("materiales.dat","wb"))!=NULL){
do{
printf("\n\tIngrese el codigo del articulo");
scanf("%d", &mat.codart);
printf("\n\tIngrese un breve descripcion");
getchar();
gets(mat.desc);
printf("\n\tIngrese stock actual del articulo");
scanf("%d", &mat.stock);
printf("\n\tIngrese stock minimo");
scanf("%d", &mat.stockmin);
printf("\n\tPor utimo ingrese precio");
scanf("%f", &mat.precio);
fwrite(&mat,sizeof(mat),1,materiales);
printf("\n\t¿Desea ingresar otro articulo? [1]-para SI // [0]-Para NO");
scanf("%d", &op);
}while(op!=0);
}else{
printf("\n\nError de archivo");
}
fclose(materiales);








//ACA YO CARGO EL ARCHIVO VENTAS



   int opc;

   if((archivoventa=fopen("ventas.dat","wb"))!=NULL){
do{
   printf("\n\tIngrese codigo del articulo");
scanf("%d", &ven.cod);
printf("\n\tIngrese cantidad vendida del articulo");
scanf("%d", &ven.cant);
fwrite(&ven,sizeof(ven),1,archivoventa);
printf("\n\t¿Desea registrar otra venta? [1]-Para SI // [0]-Para NO");
scanf("%d", &opc);
}while(opc!=0);
   }else{
printf("\nError de archivo");
   }
   fclose(archivoventa);
   
   
   
   
   
   
   
   
   
   
   //ACA ES DONDE ESTA LA FALLA

       
   if((archivoventa=fopen("ventas.dat","rb"))!=NULL){
       if((materiales=fopen("materiales.dat","r+b"))!=NULL){
fread(&ven,sizeof(ven),1,archivoventa);
while(!feof(archivoventa)){
fread(&mat,sizeof(mat),1,materiales);      
while(!feof(materiales)){
if(mat.codart==ven.cod){
mat.stock=mat.stock-ven.cant;
printf("\n\nEl stock entonces quedo en %d", mat.stock);
fseek(materiales, -1*(sizeof(mat)),SEEK_CUR);
fwrite(&mat,sizeof(mat),1,materiales);
}
fread(&mat,sizeof(mat),1,materiales);
printf("\nHola");    
        }
        rewind(materiales);
fread(&ven,sizeof(ven),1,archivoventa);
printf("\nHola2");  
   }
   }else{
   printf("\nError archivo");
   }
   fclose(materiales);
}else{
     printf("\nError archivo");
   }  
fclose(archivoventa);  
printf("\n\t\tError3");

   
if((materiales=fopen("materiales.dat","rb"))!=NULL){
fread(&mat,sizeof(mat),1,materiales);
while(!feof(materiales)){
printf("\n\nEl codigo de articulo es %d",mat.codart);
printf("\n\nEl stock actualizado quedo asi %d",mat.stock);
fread(&mat,sizeof(mat),1,materiales);
}
   }else{
printf("Error");
   }
   fclose(materiales);
}





Les agradeceria si me pueden ayudar!!!!!


Mod: Los titulo deben ser descriptivos