Endher
02/12/2008, 21:39
Buenas a todos.
A ver, tengo una práctica que hacer para la universidad. La hice hace un par de semanas y funciona y tal. Pero hoy en clase nos han dado cosillas nuevas, y he decidido hacer otra versión incluyendo eso. Digamos que la versión que funciona es la chabacana, y esta un poco más presentable. Total, que se lo he puesto, compilo, y 0 errores y 0 warnings, pero al linkar da un fallo que no entiendo :S a ver si alguien me puede echar un cable...
El código es este:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct fecha
{
int anio;
int mes;
int dia;
};
struct empresa
{
char nombre[20];
char ubicacion[20];
struct fecha inauguracion;
};
typedef struct
{
char cod_clien [5];
char nombre[20];
char direccion[30];
char CIF[10];
}CLIENTES;
typedef struct
{
int cod_prod;
int coste_unitario;
}PRODUCTO;
void cargardatos (struct empresa *p);
void presentardatos (struct empresa up);
void leerclientes (CLIENTES *tab[], int n);
void escribirclientes (CLIENTES *tab[], int n);
void leerproductos (PRODUCTO *tabla[], int n);
void escribirproductos (PRODUCTO *tabla[], int n);
void buscarcodigo (CLIENTES *tab[], int n);
void presupuesto (PRODUCTO *tabla[], int n);
void main ()
{
int opcion;
char nada[1];
struct empresa p;
CLIENTES *tab[5];
PRODUCTO *tabla[5];
do
{
printf ("\n************************************************ *");
printf ("\n**** Seleccione la opcion que desea realizar ****");
printf ("\n\n1. DATOS EMPRESA FACTURACION");
printf ("\n2. VER DATOS EMPRESA FACTURACION");
printf ("\n3. DAR ALTAS DE CLIENTES");
printf ("\n4. VISUALIZAR DATOS DE CLIENTES");
printf ("\n5. DAR DE ALTA PRODUCTOS");
printf ("\n6. VISUALIZAR PRODUCTOS");
printf ("\n7. BUSCAR CLIENTE");
printf ("\n8. REALIZAR PRESUPUESTO");
printf ("\n9. FINALIZAR");
printf ("\n\n********************************************** ***");
printf ("\n\nQue opcion desea?... ");
do
{
scanf ("%i", &opcion);
if (opcion>9 || opcion==0)
printf ("\nIntroduzca una opcion valida:\n");
}while (opcion>9 || opcion==0);
switch (opcion)
{
case 1:
gets(nada);
cargardatos (&p);
break;
case 2:
gets(nada);
presentardatos (p);
break;
case 3:
gets (nada);
leerclientes (tab, 5);
break;
case 4:
escribirclientes (tab, 5);
break;
case 5:
gets(nada);
leerproductos (tabla, 5);
break;
case 6:
gets(nada);
escribirproductos (tabla, 5);
break;
case 7:
buscarcodigo (tab, 5);
break;
case 8:
presupuesto (tabla, 5);
break;
}
}while (opcion!=9);
getch();
}
void cargardatos (struct empresa *p)
{
printf ("\nIntroduzca los datos que se pediran a continuacion");
printf ("\nNombre de la empresa:\n");
gets(p->nombre);
printf ("\nUbicacion:\n");
gets(p->ubicacion);
printf ("\nFecha de inauguracion");
printf("\nDia: ");
scanf ("%i", &p->inauguracion.dia);
printf("\nMes: ");
scanf ("%i", &p->inauguracion.mes);
printf("\nAÒo: ");
scanf ("%i", &p->inauguracion.anio);
}
void presentardatos (struct empresa up)
{
printf ("\nEmpresa: %s", up.nombre);
printf ("\nUbicacion: %s", up.ubicacion);
printf ("\nFecha: %i/%i/%i", up.inauguracion.dia, up.inauguracion.mes, up.inauguracion.anio);
}
void leerclientes (CLIENTES *tab[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf ("\nCodigo Cliente %i: ", i+1);
gets(tab[i]->cod_clien);
printf ("\nNombre Cliente %i: ", i+1);
gets(tab[i]->nombre);
printf ("\nDireccion Cliente %i: ", i+1);
gets(tab[i]->direccion);
printf ("\n CIF Cliente %i: ", i+1);
gets(tab[i]->CIF);
}
}
void escribirclientes (CLIENTES *tab[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf ("\nCodigo Cliente %i: %s", i+1, tab[i]->cod_clien);
printf ("\nNombre Cliente %i: %s", i+1, tab[i]->nombre);
printf ("\nDireccion Cliente %i: %s", i+1, tab[i]->direccion);
printf ("\nCIF Cliente %i: %s", i+1, tab[i]->CIF);
}
}
void leerproductos (PRODUCTO *tabla[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("\nNumero del producto %i: ", i+1);
scanf("%i", &tabla[i]->cod_prod);
printf("\nCoste unitario del producto %i: ", i+1);
scanf("%i", &tabla[i]->coste_unitario);
}
}
void escribirproductos (PRODUCTO *tabla[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf ("\nNumero del producto %i: %i", i+1, tabla[i]->cod_prod);
printf ("\nCoste unitario del producto %i: %i", i+1, tabla[i]->coste_unitario);
}
}
void buscarcodigo (CLIENTES *tab[])
{
char codigo[5];
int i;
printf ("\nIntroduzca el codigo que desea encontrar:\n");
gets(codigo);
for (i=0; i<5; i++)
{
if (strcmp(codigo, tab[i]->cod_clien)==0)
printf ("\nEl nombre del cliente es: %s", tab[i]->nombre);
}
}
void presupuesto (PRODUCTO *tabla[], int n)
{
int total, codigo_prod, cantidad, i;
printf ("\nIntroduzca el codigo del producto: ");
scanf ("%i", &codigo_prod);
printf ("\nIntroduzca la cantidad: ");
scanf ("%i", &cantidad);
for (i=0; i<n; i++)
{
if (codigo_prod==tabla[i]->cod_prod)
{
total=cantidad*tabla[i]->coste_unitario;
printf ("\nEl precio total es %i", total);
}
}
}
Si me echaseis un cable os lo agradecería eternamente.
Gracias de antemano :brindis:
A ver, tengo una práctica que hacer para la universidad. La hice hace un par de semanas y funciona y tal. Pero hoy en clase nos han dado cosillas nuevas, y he decidido hacer otra versión incluyendo eso. Digamos que la versión que funciona es la chabacana, y esta un poco más presentable. Total, que se lo he puesto, compilo, y 0 errores y 0 warnings, pero al linkar da un fallo que no entiendo :S a ver si alguien me puede echar un cable...
El código es este:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct fecha
{
int anio;
int mes;
int dia;
};
struct empresa
{
char nombre[20];
char ubicacion[20];
struct fecha inauguracion;
};
typedef struct
{
char cod_clien [5];
char nombre[20];
char direccion[30];
char CIF[10];
}CLIENTES;
typedef struct
{
int cod_prod;
int coste_unitario;
}PRODUCTO;
void cargardatos (struct empresa *p);
void presentardatos (struct empresa up);
void leerclientes (CLIENTES *tab[], int n);
void escribirclientes (CLIENTES *tab[], int n);
void leerproductos (PRODUCTO *tabla[], int n);
void escribirproductos (PRODUCTO *tabla[], int n);
void buscarcodigo (CLIENTES *tab[], int n);
void presupuesto (PRODUCTO *tabla[], int n);
void main ()
{
int opcion;
char nada[1];
struct empresa p;
CLIENTES *tab[5];
PRODUCTO *tabla[5];
do
{
printf ("\n************************************************ *");
printf ("\n**** Seleccione la opcion que desea realizar ****");
printf ("\n\n1. DATOS EMPRESA FACTURACION");
printf ("\n2. VER DATOS EMPRESA FACTURACION");
printf ("\n3. DAR ALTAS DE CLIENTES");
printf ("\n4. VISUALIZAR DATOS DE CLIENTES");
printf ("\n5. DAR DE ALTA PRODUCTOS");
printf ("\n6. VISUALIZAR PRODUCTOS");
printf ("\n7. BUSCAR CLIENTE");
printf ("\n8. REALIZAR PRESUPUESTO");
printf ("\n9. FINALIZAR");
printf ("\n\n********************************************** ***");
printf ("\n\nQue opcion desea?... ");
do
{
scanf ("%i", &opcion);
if (opcion>9 || opcion==0)
printf ("\nIntroduzca una opcion valida:\n");
}while (opcion>9 || opcion==0);
switch (opcion)
{
case 1:
gets(nada);
cargardatos (&p);
break;
case 2:
gets(nada);
presentardatos (p);
break;
case 3:
gets (nada);
leerclientes (tab, 5);
break;
case 4:
escribirclientes (tab, 5);
break;
case 5:
gets(nada);
leerproductos (tabla, 5);
break;
case 6:
gets(nada);
escribirproductos (tabla, 5);
break;
case 7:
buscarcodigo (tab, 5);
break;
case 8:
presupuesto (tabla, 5);
break;
}
}while (opcion!=9);
getch();
}
void cargardatos (struct empresa *p)
{
printf ("\nIntroduzca los datos que se pediran a continuacion");
printf ("\nNombre de la empresa:\n");
gets(p->nombre);
printf ("\nUbicacion:\n");
gets(p->ubicacion);
printf ("\nFecha de inauguracion");
printf("\nDia: ");
scanf ("%i", &p->inauguracion.dia);
printf("\nMes: ");
scanf ("%i", &p->inauguracion.mes);
printf("\nAÒo: ");
scanf ("%i", &p->inauguracion.anio);
}
void presentardatos (struct empresa up)
{
printf ("\nEmpresa: %s", up.nombre);
printf ("\nUbicacion: %s", up.ubicacion);
printf ("\nFecha: %i/%i/%i", up.inauguracion.dia, up.inauguracion.mes, up.inauguracion.anio);
}
void leerclientes (CLIENTES *tab[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf ("\nCodigo Cliente %i: ", i+1);
gets(tab[i]->cod_clien);
printf ("\nNombre Cliente %i: ", i+1);
gets(tab[i]->nombre);
printf ("\nDireccion Cliente %i: ", i+1);
gets(tab[i]->direccion);
printf ("\n CIF Cliente %i: ", i+1);
gets(tab[i]->CIF);
}
}
void escribirclientes (CLIENTES *tab[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf ("\nCodigo Cliente %i: %s", i+1, tab[i]->cod_clien);
printf ("\nNombre Cliente %i: %s", i+1, tab[i]->nombre);
printf ("\nDireccion Cliente %i: %s", i+1, tab[i]->direccion);
printf ("\nCIF Cliente %i: %s", i+1, tab[i]->CIF);
}
}
void leerproductos (PRODUCTO *tabla[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("\nNumero del producto %i: ", i+1);
scanf("%i", &tabla[i]->cod_prod);
printf("\nCoste unitario del producto %i: ", i+1);
scanf("%i", &tabla[i]->coste_unitario);
}
}
void escribirproductos (PRODUCTO *tabla[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf ("\nNumero del producto %i: %i", i+1, tabla[i]->cod_prod);
printf ("\nCoste unitario del producto %i: %i", i+1, tabla[i]->coste_unitario);
}
}
void buscarcodigo (CLIENTES *tab[])
{
char codigo[5];
int i;
printf ("\nIntroduzca el codigo que desea encontrar:\n");
gets(codigo);
for (i=0; i<5; i++)
{
if (strcmp(codigo, tab[i]->cod_clien)==0)
printf ("\nEl nombre del cliente es: %s", tab[i]->nombre);
}
}
void presupuesto (PRODUCTO *tabla[], int n)
{
int total, codigo_prod, cantidad, i;
printf ("\nIntroduzca el codigo del producto: ");
scanf ("%i", &codigo_prod);
printf ("\nIntroduzca la cantidad: ");
scanf ("%i", &cantidad);
for (i=0; i<n; i++)
{
if (codigo_prod==tabla[i]->cod_prod)
{
total=cantidad*tabla[i]->coste_unitario;
printf ("\nEl precio total es %i", total);
}
}
}
Si me echaseis un cable os lo agradecería eternamente.
Gracias de antemano :brindis: