Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - Fyllio

#1
Buenas tengo algunos problemas con este programa y quisiera ver si me pueden ayudar.

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
#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);
   }