En si las fallas que no consigo corregir son de que si por ejemplo en principio lleno 2 datos struct, y después quiero volver al menú para agregar el tercero, me conserve los anteriores sin borrarlos, y que cuando seleccione la opción de imprimir en pantalla, me aparezcan los 2 primeros + el tercero que se agrego después.
El otro problema es que si quiero realizar una búsqueda ya sea por Marca o N. de Registro me haga la búsqueda en todos los struct que solo la busca en el primero.
Espero que me puedan ayudar, gracias de antemano y buenas noches.
Código
Código:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 3
#define p printf
#define s scanf
struct x
{
int serie, exi;
char mod[20], marca[20], color[50];
float precio;
}coche[MAX];
void imprimir(int);
void imprimir_cod(int, int);
void imprimir_marc(int, char);
void agregar(int);
/*coche[0].precio=200000;*/
/*busqueda por n. de serie o marca*/
void agregar(int exi)
{
int i=0,j, z;
while(i<exi)
{
p("Inserta los siguientes datos que se te pidan\n");
for(i=0;i<exi;i++)
{
p("Datos de Producto %d\n", i+1);
p("Modelo\n");
s("%s", & coche[i].mod);
p("\n");
p("Marca\n");
s("%s", & coche[i].marca);
p("\n");
p("N. de Serie\n");
s("%d", & coche[i].serie);
p("\n");
p("Precio\n");
s("%f", & coche[i].precio);
p("\n");
p("Color\n");
s("%s", & coche[i].color);
p("\n");
p("Inventario\n");
s("%d", & coche[i].exi);
system("cls");
}
i++;
system("cls");
}
}
void imprimir(int exi)
{
int i;
for(i=0;i<exi;i++)
{
p("Modelo %s\n",coche[i].mod);
p("Marca %s\n", coche[i].marca);
p("N. de Serie %d\n", coche[i].serie);
p("Precio %.2f\n", coche[i].precio);
p("Color %s\n", coche[i].color);
p("Inventario %d\n", coche[i].exi);
p("\n");
}
i++;
}
void imprimir_cod(int exi, int serie)
{
int i;
for(i=0;i<exi;i++)
{
p("Modelo %s\n",coche[i].mod);
p("Marca %s\n", coche[i].marca);
p("N. de Serie %d\n", coche[i].serie);
p("Precio %.2f\n", coche[i].precio);
p("Color %s\n", coche[i].color);
p("Inventario %d\n", coche[i].exi);
p("\n");
}
i++;
}
void imprimir_marc(int exi, char marca)
{
int i;
for(i=0;i<exi;i++)
{
p("Modelo %s\n",coche[i].mod);
p("Marca %s\n", coche[i].marca);
p("N. de Serie %d\n", coche[i].serie);
p("Precio %.2f\n", coche[i].precio);
p("Color %s\n", coche[i].color);
p("Inventario %d\n", coche[i].exi);
p("\n");
}
i++;
}
int main()
{
int exi, opc, r, q=0,i=0, serie, cont;
char marca[20];
do{
p("Que funcion deseas realizar\n");
p("1.Agregar Datos\n");
p("2.Imprimir Datos\n");
p("3.Buscar Datos por N. de Serie\n");
p("4.Buscar Datos por Marca\n");
s("%d", & opc);
system("cls");
switch(opc)
{
case 1:
q++;
p("Cuanto elementos agregaras\n");
p("No mas de 3 lementos\n");
p("Puedes agregar elementos en el orden que desees\n");
s("%d", & exi);
/*cont=exi*/
system("cls");
while(exi>MAX)
{
p("NO puedes tener mas de 3 elementos\n");
p("Cuanto elementos agregaras\n");
s("%d", & exi);
system("cls");
}
agregar(exi);
do{
p("Para regresar al menu principal y agregar mas datos presione 1\n");
s("%d", & r);
system("cls");
}while(r!=1);
break;
case 2:
while(q==0)
{
p("No hay datos que imprimir\nRegresando a menu principal\n");
main();
q++;
}
imprimir(exi);
do{
p("Para regresar al menu principal y agregar mas datos presione 1\n");
s("%d", & r);
system("cls");
}while(r!=1);
break;
case 3:
while(q==0)
{
p("No hay datos que buscar\nRegresando a menu principal\n");
main();
q++;
}
p("Que numero de Serie buscas\n");
s("%d", & serie);
if(serie==coche[i].serie)
{
p("Se encontro el modelo de vehiculo\n");
imprimir_cod(1,serie);
}
else p("No se encontro el modelo de vehiculo\n");
do{
p("Para regresar al menu principal y hacer otros movimientos 1\n");
s("%d", & r);
system("cls");
}while(r!=1);
break;
case 4:
while(q==0)
{
p("No hay datos que buscar\nRegresando a menu principal\n");
main();
q++;
}
p("Que marca de Vehiculo buscas\n");
s("%s", & marca);
if (strcmp(marca, coche[i].marca) == 0)
{
p("Se encontro la Marca del vehiculo\n");
imprimir_marc(1,*marca);
}
else p("No se encontro la Marca del vehiculo\n");
do{
p("Para regresar al menu principal y hacer otros movimientos 1\n");
s("%d", & r);
system("cls");
}while(r!=1);
}
}while(r==1);
}