• Viernes 8 de Noviembre de 2024, 12:47

Mostrar Mensajes

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


Mensajes - antiheroes

Páginas: [1]
1
C/C++ / Re: Algo Falla
« en: Viernes 15 de Junio de 2007, 13:22 »
Gracias por tu ayuda TRod.
Creo que al final he podido acabar el ejercicio, de una forma muy simple me parece pero me sale bien, almenos eso creo.
Este es el resultado final:

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

struct sstock  
{
        char codigo_producto [4];
        char descripcion_producto [20];
        int stock_actual;
        float valor;                                                                                                                  
};    

void entrar_stock(struct sstock astock[4])
{
    int i;
    for(i=0;i<4;i++)
    {
        printf("\n\nIntroduce el producto [%d]",i);
        printf("\nCodigo_producto:"); scanf("%s",astock.codigo_producto);
        printf("\nDescripcion_producto:"); scanf("%s",astock.descripcion_producto);
        printf("\nStock_actual:"); scanf("%d",&astock.stock_actual);
        printf("\nValor:"); scanf("%f",&astock.valor);
    }    
}

void buscar_stock(struct sstock astock[4], char *codigo_producto)
{
    int i;
    for(i=0;i<4;i++)
      if (strcmp(astock.codigo_producto,codigo_producto)==0)
            {
                printf("\n\nProducto: [%d]",i);
                printf("\nCodigo_producto: %s",astock.codigo_producto);
                printf("\nDescripcion_producto: %s",astock.descripcion_producto);
                printf("\nStock_actual: %d",astock.stock_actual);
                printf("\nValor: %f",astock.valor);
            }    
}

void mostrar_stock(struct sstock astock[4])      
{
    int i;
    for(i=0;i<4;i++)
    {
        printf("\n\nProducto: [%d]",i);
        printf("\nCodigo_producto: %s",astock.codigo_producto);
        printf("\nDescripcion_producto: %s",astock.descripcion_producto);
        printf("\nStock_actual: %d",astock.stock_actual);
        printf("\nValor: %f",astock.valor);
    }    
}

void ordenar_stock(struct sstock astock[4])
{
    int i,j;
    struct sstock tstock;
   
    for(i=0;i<=4-1;i++)
        for(j=4;j>=i+1;j--)
                if (strcmp(astock.codigo_producto,astock[j].codigo_producto)>0)

                {
                     strcpy(tstock.codigo_producto,astock.codigo_producto);
                     strcpy(tstock.descripcion_producto,astock.descripcion_producto);
                     tstock.stock_actual=astock.stock_actual;
                     tstock.valor=astock.valor;
                     
                     strcpy(astock.codigo_producto,astock[j].codigo_producto);
                     strcpy(astock.descripcion_producto,astock[j].descripcion_producto);
                     astock.stock_actual=astock[j].stock_actual;
                     astock.valor=astock[j].valor;
                     
                     strcpy(astock[j].codigo_producto,tstock.codigo_producto);
                     strcpy(astock[j].descripcion_producto,tstock.descripcion_producto);
                     astock[j].stock_actual=tstock.stock_actual;
                     astock[j].valor= tstock.valor;
             
                }    
         
}

void guardar_stock(struct sstock astock[4])
{
    FILE *fichero;
    int i;
    fichero=fopen("stock.txt","w");
   
    if(fichero == NULL)
    {
        printf("\nError..");
        return;
    }    
     for(i=0;i<4;i++)
    {
    fprintf(fichero,"\n\nProducto: [%d]",i);
    fprintf(fichero,"\nCodigo_producto: %s",astock.codigo_producto);
    fprintf(fichero,"\nDescripcion_producto: %s",astock.descripcion_producto);
    fprintf(fichero,"\nStock_actual: %d",astock.stock_actual);
    fprintf(fichero,"\nValor: %2.f",astock.valor);
    }    
    fclose(fichero);
}

main()
{
    struct sstock astock[4];
    int opcion;
    char codigo_producto[4];
   
                   
    do
    {
                do
                {
                        printf("\n 1- Entrar stock");
                        printf("\n 2- Buscar stock");
                        printf("\n 3- Listar stock");
                        printf("\n 4- Guardar en fichero");
                        printf("\n 5- Salir\n");
                        printf("Opcion:");
                        scanf("%d",&opcion);
                } while (opcion<1 || opcion>5);  
                 
                switch(opcion)
                {
                        case 1: entrar_stock(astock);
                            break;
                        case 2:
                                printf("Introduce el codigo_producto a buscar:");
                                scanf("%s",codigo_producto);
                                buscar_stock(astock,codigo_producto);
                                getche();
                             break;
                        case 3:
                             ordenar_stock(astock);  
                             mostrar_stock(astock);
                             break;
                       case 4:
                            guardar_stock(astock);
                            break;
                        case 5: exit(1);
                            break;
                 }    
                getch();
    } while (1);      
}

2
C/C++ / Re: Algo Falla
« en: Miércoles 13 de Junio de 2007, 22:35 »
Dejando de lado el tema del ordenado, creo que no importa mucho.
Para terminar el ejercicio me falta guardar la estructura en un fichero, ya te digo que no se muy bien como funcionan, por ahora he hecho esto, pero lo único que hace es crear el fichero, pero sin escribir nada en su interior.

void guardar_stock(struct sstock astock[4])
{
    FILE* fichero;
    struct sstock stock;
    fichero=fopen("stock.txt", "w");
      if(fichero==NULL)
      printf("ERROR: No se ha podido abrir el fichero");
    else
    {
    fwrite(&stock,sizeof(stock),1,fichero);    
    fclose(fichero);
    }    
}
Como ya os digo, no se me dan muy bien os ficheros.
Me podéis ayudar?

3
C/C++ / Re: Algo Falla
« en: Miércoles 13 de Junio de 2007, 02:18 »
El copy-paste lo hice para reducir tiempo, pero lo hice en el sitio equivocado, gracias a eso he encontrado el error, donde todo el rato me pedía que introdujese los datos, ahora eso ya esta solucionado.
Gracias.

En cuanto al orden me gustaría hacerlo mediante "codigo_producto" o "stock_actual", pero el único orden que me sale es en el que introduzco los datos.
Intento utilizar una función como la de "buscar_stock", pero me da error, no se como hacerlo.

4
C/C++ / Algo Falla
« en: Martes 12 de Junio de 2007, 20:23 »
Lo primero de todo pedir disculpas, por el otro tema que abrí, y segundo haber si ahora podeis ayudarme a encontrar donde he cometido los errores.

He empezado a hacer el ejercicio que os había comentado basándome en otro ejercicio similar que hice hacce tiempo, pero no acaba de funcionar.

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

struct sstock  
{
        char codigo_producto [4];
        char descripcion_producto [20];
        int stock_actual;
        float valor;                                                                                                                  
};    

void entrar_stock(struct sstock astock[4])
{
    int i;
    for(i=0;i<4;i++)
    {
        printf("\n\nIntroduce el producto [%d]",i);
        printf("\nCodigo_producto:"); scanf("%s",astock.codigo_producto);
        printf("\nDescripcion_producto:"); scanf("%s",astock.descripcion_producto);
        printf("\nStock_actual:"); scanf("%d",&astock.stock_actual);
        printf("\nValor:"); scanf("%f",&astock.valor);
    }    
}

void buscar_stock(struct sstock astock[4], char *codigo_producto)
{
    int i;
    for(i=0;i<4;i++)
      if (strcmp(astock.codigo_producto,codigo_producto)==0)
            {
                printf("\n\nProducto: [%d]",i);
                printf("\nCodigo_producto: %s",astock.codigo_producto);
                printf("\nDescripcion_producto: %s",astock.descripcion_producto);
                printf("\nStock_actual: %d",astock.stock_actual);
                printf("\nValor: %f",astock.valor);
            }    
}

void imp_stock(struct sstock astock[4])
{
    int i;
    for(i=0;i<4;i++)
    {
        printf("\n\nProducto: [%d]",i);
        printf("\nCodigo_producto: %s",astock.codigo_producto);
        printf("\nDescripcion_producto: %s",astock.descripcion_producto);
        printf("\nStock_actual: %d",astock.stock_actual);
        printf("\nValor: %f",astock.valor);
    }    
}

void ordenar_stock(struct sstock astock[4])
{
    int i,j;
    struct sstock tstock;
   
    for(i=0;i<4-1;i++)
        for(j=i+1;j<4;j++)
                if (strcmp(astock.codigo_producto,astock[j].codigo_producto)>0)
                {
                     strcpy(tstock.codigo_producto,astock.codigo_producto);
                     strcpy(tstock.descripcion_producto,astock.descripcion_producto);
                     tstock.stock_actual=astock.stock_actual;
                     tstock.valor=astock.valor;
                     
                     strcpy(astock.codigo_producto,astock[j].codigo_producto);
                     strcpy(astock.descripcion_producto,astock[j].descripcion_producto);
                     astock.stock_actual=astock[j].stock_actual;
                     astock.valor=astock[j].valor;
                     
                     strcpy(astock.codigo_producto,tstock.codigo_producto);
                     strcpy(astock.descripcion_producto,tstock.descripcion_producto);
                     astock.stock_actual=tstock.stock_actual;
                     astock.valor= tstock.valor;
             
                }    
         
}
main()
{
    struct sstock astock[4];
    int opcion;
    char codigo_producto[4];
   
    do
    {
                do
                {
                        printf("\n 1- Entrar stock");
                        printf("\n 2- Buscar stock");
                        printf("\n 3- Listar stock");
                        printf("\n 4- Salir\n");
                        printf("Opcion:");
                        scanf("%d",&opcion);
                } while (opcion<1 || opcion>4);  
                 
                switch(opcion)
                {
                        case 1: entrar_stock(astock);
                            break;
                        case 2:
                                printf("Introduce el codigo_producto a buscar:");
                                scanf("%s",codigo_producto);
                                buscar_stock(astock,codigo_producto);
                                getche();
                             break;
                        case 3:
                            imp_stock(astock);
                            ordenar_stock(astock);  
                            break;
                        case 4: exit(1);
                            break;
                 }    
                getch();
  } while (1);      
}

El fallo es que escoja la opción del menú que escoja siempre me pide que introduzca los datos.

Una pregunta, como puedo guardar los productos en un fichero?

5
C/C++ / Solución Para 2 Ejercicios En C
« en: Martes 12 de Junio de 2007, 17:34 »
Hola, soy nuevo en este foro y se que es mucho pedir, pero me gustaría si pudierais ayudarme a resolver este ejercicio que me salió en un examen, el cual suspendí, y tendré la posibilidad de recuperarlo dentro de muy poco y el profe me ha dicho que sería similar, así que si me lo resolvieseis me haríais un grandísimo favor.
Los ejercicios son estos (el que más cuenta es el primero, con lo que el segundo si quereis no hace falta ni que os lo miréis).

1).

Define una estructura de la siguiente forma:

struct stock
{
   char codigo_producto [4];  // identificador de 3 letras
   char descripcion_producto [20];
   int stock_actual;
   float valor;  // precio en euros
};

Define una matriz de 4 elementos de dicha estructura y realiza un programa con las siguientes opciones de menú:

a. Entrar stock
b. Listar stock ordenado por el campo stock_actual
c. Buscar stock actual de un determinado producto por el campo codigo_producto
d. Calcula el valor total de stock (la suma de todos los productos por su valor)
e. Guardar todos los productos en un fichero
f. Salir

Cada función del menú a de llamar a una función definida de forma conveniente y a la cual se pasa la array de estructuras.


2)
 Escribe un programa que pida el nombre de un fichero de texto, lo abra y cree un segundo fichero eliminando los espacios en blanco del primero. Si el fichero no existe tendrás que mostrar un mensaje de error en consecuencia.

Se que son el primero es un ejercicio grandísimo, pero como ya he dicho si pudiese hacermelo alguien le estaría muy agradecido.
Muchísimas gracias de antemano.

Páginas: [1]