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.
He intentado cambiar el void recolectar.Pero en la estructura switch me salta error cuando intento insertar un caso con el modif_recfecha.
Pero en la estructura switch me salta error cuando intento insertar un caso con el modif_recfecha.
Gracias de antemano por las molestias.
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 [Seleccionar]
#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 [Seleccionar]
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 [Seleccionar]
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.