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ú

Temas - solid120

#1
Hola, buenas noches, o buenos días  :P

Espero y me puedan ayudar, estoy trabajando con archivos binarios, y en la modificación estoy que no puedo avanzar, en teoría yo diría que debería estar bien.
lo que hago es lo siguiente:
- creo otro archivo, pido la matricula que voy a modificar, entonces copio todo del archivo "original" al nuevo excepto el que quiero modificar, entonces pido los nuevo datos, los agrego, borro el original, cambio nombre del segundo archivo.

El error debe de estar en mi código (supongo), ya he pedido ayuda a compañeros pero nadie me dice nada mas de un "debería de funcionar así" y pues la verdad es que ya no encuentro que hacer, espero que me puedan ayudar, gracias.

Mi código de modificación es el siguiente:
public void modificarRegistro(BufferedReader entrada) throws IOException{
        archivo=new File("temp");
        grabar=new DataOutputStream(new FileOutputStream("texto.txt",true));
        leer=new DataInputStream(new FileInputStream("texto.txt"));
        grabar2 =new DataOutputStream(new FileOutputStream("temp",true));
        int matriculab;
        System.out.println("Matricula a buscar");
        matriculab=3;
        String nombre;
        try{
            while((nombre=leer.readUTF())!=null){
               
                int mat=leer.readInt();
                float c1=leer.readFloat();
                float c2=leer.readFloat();
                float prom=leer.readFloat();
                if(matriculab==mat){
                                   
                }
                else{
                   
                   obj.setNombre(entrada.readLine());                   
                   
                   obj.setMatricula(Integer.parseInt(entrada.readLine()));
                   
                   obj.setCalificacion1(Float.parseFloat(entrada.readLine()));
                   
                   obj.setCalificacion2(Float.parseFloat(entrada.readLine()));
                 
                   obj.setPromedio((obj.getCalificacion1()+obj.getCalificacion2())/2);
                   
                   grabar2.writeUTF(obj.getNombre());
                   grabar2.writeInt(obj.getMatricula());
                   grabar2.writeFloat(obj.getCalificacion1());
                   grabar2.writeFloat(obj.getCalificacion2());
                   grabar2.writeFloat(obj.getPromedio());
                }
               
               
               
            }
                System.out.println("Nuevo nombre del Alumno: ");
                obj.setNombre(entrada.readLine());
                System.out.println("Nueva Matricula: ");
                obj.setMatricula(Integer.parseInt(entrada.readLine()));
                System.out.println("Nueva Calificación 1: ");
                obj.setCalificacion1(Float.parseFloat(entrada.readLine()));
                System.out.println("Nueva Calificación 2: ");
                obj.setCalificacion2(Float.parseFloat(entrada.readLine()));
                obj.setPromedio((obj.getCalificacion1()*obj.getCalificacion2())/2);
                //escritura en archivo
                grabar2.writeUTF(obj.getNombre());
                grabar2.writeInt(obj.getMatricula());
                grabar2.writeFloat(obj.getCalificacion1());
                grabar2.writeFloat(obj.getCalificacion2());
                grabar2.writeFloat(obj.getPromedio());
               
                grabar2.close();
                archivo.delete();
                archivo2.renameTo(archivo);
               
                leer.close();
                leer2.close();
                grabar.close();
                grabar2.close();
        }catch(IOException err){
            System.out.println("Error");
        }
    }


Utilizando el ciclo while(true) me marca error en el NetBeans que solo logre resolver utilizando el ciclo "while((nombre=leer.readUTF())!=null)"
#2
Hola, espero que me puedan ayudar tengo un error que llevo ya casi 2 dias sin poder hacer nada
tengo que entregar un proyecto final en C,
el programa me compila y todo, pero al querer hacer las consultas me salta este me manda a "Error" directamente que es lo que me debe de imprimir si no tengo datos ya cheque consulta.c y veo todo bien, desde consulta.c mando a llamar ordenar.c que es la que ordena los datos, e igual lo miro bien, por eso pido de su ayuda a ver si encuentran un error.
archivos apenas vimos una clase y nos encargaron el proyecto asi, y por lo poco que vimos la verdad tengo muchas dudas.
bueno si mas le dejo los codigos:
consulta.c

#include<stdio.h>
#include"estructura.h"
void consultag()
{FILE *Art;
articulo A;
ordenar();
if((Art=fopen("Arti.dat","rb"))==NULL){
         printf("Error...");
exit(0);}
else
{write(fread(&A,sizeof(articulo),1,Art)>0);
        imprimir(A);
        fclose(Art);
}
}


ordenar.c

#include<stdio.h>
#include"estructura.h"
void ordenar()
{FILE *Art;
articulo A,A2,aux;
int x,y;
long int N;
if((Art=fopen("arti.dat","rb+"))==NULL)
{ printf("Error...\n");
         exit (0);}
else
{fseek(Art,0L,2);
         N=ftell(Art)/sizeof(articulo);
         rewind(Art);
         for(x=1;x<N;x++)
                 for(y=0;y<N-x;y++)
                 {fseek(Art,y*sizeof(articulo),0);
                  fread(&A,sizeof(articulo),1,Art);
                  fseek(Art,(y+1)*sizeof(articulo),0);
                  fread(&A2,sizeof(articulo),1,Art);
                  if(A.precio>A2.precio)
                  {aux=A;
                   A=A2;
                   A2=aux;
                   fseek(Art,y*sizeof(articulo),0);
                   fwrite(&A,sizeof(articulo),1,Art);
                   fseek(Art,(y+1)*sizeof(articulo),0);
                   fwrite(&A2,sizeof(articulo),1,Art);
                                  }
                 }
         fclose(Art);
}
}


El problema es que me imprime "error" y tambien he llege a pensar que podrian ser las altas
por si acaso les dejo el codigo de altas.c

#include<stdio.h>
#include<stdlib.h>
#include"estructura.h"
void  altas()
{FILE *Art;
        articulo A;
        char salir[5];
        float t;
        Art=fopen("arti.dat","ab");
        do{
        printf("Clave del articulo:\n");
         scanf("%s",&A.clave);
         system("clear");
         printf("Tipo:\nBlusa:\nVestido:\nZapato:\nAccesorio:\n");
         scanf("%s",&A.tipo);
         printf("Descripcion del articulo:\n");
         system("clear");
         printf("Color:\n");
         scanf("%s",&A.descrip.color);
         system("clear");
         printf("Medida\n");
         scanf("%s",&A.descrip.medida);
         system("clear");
         printf("Precio articulo:\n");
         scanf("%f",&t);
         A.precio=t;
         system("clear");
         printf("Codigo de barras:\n");
         scanf("%d",&A.codb);
         getc(stdin);
         system("clear");
         printf("Desea ingresar otro articulo?(S/N)\n");
         scanf("%s",salir);
         fwrite(&A,sizeof(articulo),1,Art);
        }while(strcmp(salir,"no"));
        fclose(Art);
}


Espero que me puedan ayudar por favor, seria de gran gran ayuda.
#3
Hola, estoy con mi proyecto final en programación en mi universidad, apenas estoy en 2do semestre
mi programa es en estructuras en archivos
pero al momento de querer copilar me marca errores que no conozco, espero que me puedan ayudar ya que estoy muy parado aqui y el proyecto ya es para mañana
me salen estos errores al querer copilar:


In file included from menu.c:11:
imprimir.h:3: error: expected ) before âAâ
In file included from menu.c:14:
imprimirf.h:3: error: expected ) before âFâ
menu.c: In function âmainâ:
menu.c:62: error: duplicate case value
menu.c:60: error: previously used here
menu.c:74: error: expected : before âprintfâ
make: *** [menu.o] Error 1

y este es el codigo del menu, si necesitan el codigo de otra cosa, se los doy, enserio ojala me puedan ayudar :c gracias:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"altas.h"
#include"consultag.h"
#include"consultap.h"
#include"bajas.h"
#include"ventas.h"
#include"modificaciones.h"
#include"consultafactura.h"
#include"imprimir.h"
#include"ordenar.h"
#include"buscar.h"
#include"imprimirf.h"
   typedef struct
{ char color[15];
  char medida[15];
}des;

  typedef struct
{ char nom[15];
  char Ap[15];
  char Am[15];
  char D[35];
  int tel;
} direccion;

  typedef struct
{ char clave[15];
  char tipo[15];
  float precio;
  des descrip;
  int codb;
} articulo;

typedef struct
{ direccion direc;
  float M;
  int nof;
}factura;

int main()
{ int opc;
        do
        {  printf("Que desea realizar?\n");
        printf("\n Altas de articulos...........................[1]\n");
        printf("\n Consulta ordenada por precio.................[2]\n");
        printf("\n Consulta particular por codigo de barras.....[3]\n");
        printf("\n Modificaciones por codigo de barras..........[4]\n");
        printf("\n Bajas........................................[5]\n");
        printf("\n Ventas.......................................[6]\n");
        printf("\n Consultar factura............................[7]\n");
        printf("\n Salir........................................[8]\n");
        printf("\n Opcion a elegir..............[ ]\b\b");
        scanf("%d",&opc);
        switch(opc)
        {
                case 1: altas();
                        break;
                case 3: consultag();
                        break;
                case 3: consultap();
                        break;
                case 4: modificaciones();
                        break;
                case 5: bajas();
                        break;
                case 6: ventas();
                        break;
                case 7: consultafactura();
                        break;
                case 8:
                        break;
        default printf("Error...");
        }
          }while(opc!=8);
          return 0;
        }