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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Programa C estructura switch. en: 17 Junio 2014, 18:39 pm
El programa en cuestión es este:
http://gyazo.com/9100e1eabb55b59b4d50adfc6f436e7e


Tengo la estructura en general aunque ando bastante perdido en como hacer que el programa me cambie la fecha de la recolección y la ultima cantidad recolectada la cambie y la sume a la cantidad recolectada desde la plantación.

Os voy a dejar el problema entero,rodeando las partes en las que no se como hacerlas funcionar con ??????.Espero que podáis arrojarme algo de luz.

Código:
#include <stdio.h>
#include <stdlib.h>

typedef char texto10[10];
typedef char texto20[20];

typedef struct{
        int dia;
        int mes;
        int anno;
        } fecha;

typedef struct{
        texto10 codigo;
        texto20 nombre;
        fecha plant_fecha;
        fecha rec_fecha;
        float cantidadrec;
        float cantidadacc;
        } cultivo;





char menu (void);
void datos_cultivo(cultivo *cult);
int leer_num(int c);
void modif_nombre(texto20 nom);
/*??????????????????????????????????????????????????*/
void recolectar (int recfecha,float cantidadr);
/*??????????????????????????????????????????????????*/
void imprime (cultivo *cult);


int main (void)

{
    cultivo catalogo[14];
    char opcion;
    int numero, control = -1;
   
    do
    {
        opcion=menu();
        switch (opcion)
        {
               case 'a':if (control < 14){
                    control++;
                    datos_cultivo(&catalogo[control]);
                    }
                    else
                    printf("Catalogo completo no se pueden introducir más datos\n");
                    break;
               case 'b':if (control != -1){
                    numero=leer_num(control);
                    modif_nombre(catalogo[numero].nombre);
                    }
                    else
                    printf("No se puede modificar pues no se han introducido datos\n");
                    break;
                    /*??????????????????????????????????????????????????*/
               case 'c':if (control != -1){
                    numero=leer_num(control);
                    recolectar(catalogo[numero].rec_fecha);
                    }
                    else
                    printf("No se puede modificar la fecha pues no se han introducido datos\n");
                    break;
                    /*??????????????????????????????????????????????????*/
               case 'e':if (control != -1){
                    numero=leer_num(control);
                    imprime(catalogo[numero]);
                    }
                    else
                    prinft("No se pueden mostrar los datos pues no se han introducido\n");
                    break;
               case 'f': printf ("Fin del programa\n");
                         system("PAUSE");
                         break;
               default: printf("Opcion incorrecta\n");
        };
       
}while (opcion != 'f');

return (0);

}




char menu (void)
{
     char op;
     
     printf("Pulsa a para leer los datos del cultivo\n");
     printf("Pulsa b para modificar el nombre al cultivo\n");
     printf("Pulsa c para modificar la fecha de la ultima recoleccion\n");
     printf("Pulsa d para modificar la cantidad de kilos recogidos en la ultima recoleccion\n");
     printf("Pulsa e para mostrar los datos del cultivo\n");
     printf("Pulsa f para terminar\n");
     scanf("%c",&op);
     fflush(stdin);
     return (op);
     }
     
     void datos_cultivo(cultivo *cult)
     
     {
          printf("Dame el codigo: ");
          gets((*cult).codigo);
          fflush(stdin);
          printf("Dame el nombre: ");
          gets((*cult).nombre);
          fflush(stdin);
          printf("Dame los kilos recogidos en la ultima recoleccion: ");
          scanf("%f", &((*cult).cantidadrec));
          fflush(stdin);
          printf("Dame los kilos recogidos desde la plantacion: ");
          scanf("%f", &((*cult).cantidadacc));
          fflush(stdin);
          printf("Dame el año de plantacion: ");
          scanf("%d", &((*cult).plant_fecha));
          fflush(stdin);
          printf("Dame el año de recolecion: ");
          scanf("%d", &((*cult).rec_fecha));
          fflush(stdin);
         
         
     }
     
     int leer_num(int c)
     
     {
         int num;
         do {
             printf("Dame el numero de finca entre 0 y %d: ",c);
             scanf("%d", &num);
             fflush(stdin);
             }
         while ((num<0)||(num>c));
         
         return(num);
         
     }
         
     void modif_nombre(texto20 nom)
     
     {
          printf("La finca %s va a cambiar de nombre.\n", nom);
          printf("Dame el nuevo nombre: ");
          gets(nom);
          fflush(stdin);
         
     }
     /*??????????????????????????????????????????????????*/
     void recolectar (int recfecha,float cantidadr)
     
     {
         printf("La fecha antigua de recolecion es: %d\n", recfecha);
         printf("Dame la nueva fecha: ");
         scanf("%d", &recfecha);
         fflush(stdin);
         printf("La cantidad de kilos recogidad en la ultima recolecion es: %f\n", cantidadr);
         scanf("%f", &cantidadr);
         fflush(stdin);
         
         
     }
     /*??????????????????????????????????????????????????*/
   
     
     void imprime (cultivo *cult)
     
     {
          printf("El codigo del invernadero es: %s\n",cult.codigo);
          printf("El nombre del cultivo es: %s\n",cult.nombre);
          printf("La cantidad de kilos recogidos en la ultima recolecion es: %f\n",cult.cantidadrec);
          printf("La cantidad de kilos recogidos desde la plantacion es: %f\n",cult.cantidadacc);
          printf("La fecha de recolecion es: %d\n",cult.rec_fecha);
          printf("La fecha de plantacion es: %d\n",cult.plant_fecha);
          system("PAUSE");
         
     }

He intentado cambiar el void recolectar.Pero en la estructura switch me salta error cuando intento insertar un caso con el modif_recfecha.

Código:
char menu (void);
void datos_cultivo(cultivo *cult);
int leer_num(int c);
void modif_nombre(texto20 nom);
int modif_recfecha(int fechare);
float modif_cantidadr(float cantidadrecol);
void imprime (cultivo *cult);

Pero en la estructura switch me salta error cuando intento insertar un caso con el modif_recfecha.


Código:
 case 'c':if (control != -1){
                    numero=leer_num(control);
                    modif_recfecha(catalogo[numero].rec_fecha);
                    }
                    else
                    printf("No se puede modificar la fecha pues no se han introducido datos\n");
                    break;



Gracias de antemano por las molestias.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines