main.cpp


//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

#include <stdio.h>

#include <conio.h>

#include <dstring.h>

#include "inferencie.h"

//---------------------------------------------------------------------------

 

#pragma argsused

 

 

 

 

 

int main(int argc, char* argv[])

{

 

    char menoZak[20];

    bool upgr;

 

    prDatab dat;

    inferenc infer;

 

 

    dat.citKompon();                  // nacita vsetky komponenty

    dat.citZostavu();                 // nacita vsetky dostupne predvolene zostavy

    dat.citZakazn();                  // nacita existujucich zakaznikov

    dat.DatZakaz = dat.DatZakazP;     // premiestni smernik na zaciatok zoznamu

 

 

    //          OBTAIN

 

    //          Zisti meno

    //

 

    printf("Napis priezvisko zakaznika: "); scanf("%s", menoZak);

 

 

    dat = infer.najdiZak(dat, menoZak );        // skukma ci novy alebo

                                                // existujuci zakaznik

 

    if ( dat.DatZakaz != NULL) {                // ak existujuci

 

                //

                // Prihlas

                //

 

        printf("zakaznik  =  %s",dat.DatZakaz->zakaznik.priezvisko);

        dat.citProfil(dat.DatZakaz->zakaznik.id);//nacita profil

        infer.vypisZakInf(dat);                 // prihlaseny zakaznik

 

      //

      // Vyber poslednu zostavu

      //

 

        String cesta = "databazy/Zakaznik/";            // nacita cestu k ulozenej

        cesta = cesta + dat.DatZakaz->zakaznik.zostava; // zostave...

 

        dat.citZakZost(cesta);                          // nacita poslednu

    }

 

    else {                                      // ak novy tak zaregistruje

 

 

        dat = infer.registrujZakaz(dat, menoZak);     // zaregistrje zakaznika

        printf ("Zakaznik uspesne registrovany!!!");

 

    }

       //ak uz registrovany zakaznik (stary) ponukne ponuku na upgrade...

 

       if(dat.DatZakaz->zakaznik.registr) upgr = infer.zaujUpgr(dat);

       else infer.zistiPoziad(dat);         //ak stary zisti si o nom info...

 

 

 

       //ak poziadavka o upgrade kladne  ide upgradovat...

 

       if(upgr) infer.upgrZost(dat);

 

 

 

 

       printf("Uloha skoncena");

 

        getchar();

        getchar();

 

 

        return 0;

}

//---------------------------------------------------------------------------


 

inferencie.cpp


 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "inferencie.h"

 

//---------------------------------------------------------------------------

 

#pragma package(smart_init)

 

 

 

 

void inferenc::vypisZakInf(prDatab dat){

  clrscr();

  printf("%i",dat.DatZakaz->zakaznik.id);

  printf("Priezvisko zakaznika: %s\n",dat.DatZakaz->zakaznik.priezvisko);

  printf("Bydlisko zakaznika: %s\n",dat.DatZakaz->zakaznik.mesto);

  if ( dat.DatZakaz->zakaznik.registr) printf("Stary zakaznik...\n\n");

  else printf("Novy zakaznik...\n\n");

}

 

 

 

 

prDatab inferenc::najdiZak(prDatab prDat, char *meno){

 

 

  for (int i = 0; i < prDat.DatZakazP->zakaznik.pocet; i++){

 

         if(strcmp(prDat.DatZakaz->zakaznik.priezvisko,meno) == 0) return prDat;

 

         prDat.DatZakaz = prDat.DatZakaz->next;

  }

  return prDat;

}

 

 

 

// na zaregistrovanie zakaznika

 

 

 

prDatab inferenc::registrujZakaz(prDatab prDat, char *priezvisko){

 

   char telCis[15];

   char mesto[20];

   String zost = "zost_";

   int id;

 

   prDat.DatZakaz = prDat.DatZakazP;

 

  while(prDat.DatZakaz != NULL){

 

         if(prDat.DatZakaz->next == NULL){

            prDat.DatZakaz->next = new DBZakaznik();

            break;

          }

         prDat.DatZakaz = prDat.DatZakaz->next;

  }

 

   prDat.DatZakaz = prDat.DatZakaz->next;

 

 

   clrscr();

 

   //

   //           OBTAIN

 

   //           Zisti udaje

 

   printf("Priezvisko zakaznika: %s\n",priezvisko);

   strcpy(prDat.DatZakaz->zakaznik.priezvisko, priezvisko);

   printf("telCis zakaznika: "); scanf("%s",prDat.DatZakaz->zakaznik.telCis);

   printf("Bydlisko (mesto): "); scanf("%s",prDat.DatZakaz->zakaznik.mesto);

 

   zost += priezvisko;

 

   //

   //           Registruj

   //

 

 

   strcpy(prDat.DatZakaz->zakaznik.zostava, zost.c_str());

   prDat.DatZakaz->zakaznik.id = prDat.DatZakazP->zakaznik.pocet += 1;

   prDat.DatZakaz->zakaznik.registr = false;

 

 return prDat;

}

 

//              OBTAIN

 

//              Zisti profil

//

 

 

prDatab inferenc::vytProfil(prDatab prDat,int id){

 

 int proc;

 int graf;

 int disk;

 int monit;

 int cena;

 int nove;

 

   printf(" Uprednostnit grafiku ATI(0)/NVIDIA(1)? :");scanf("%i",&graf);

   printf(" Uprednostnit disk WD(0)/Seagate(1)? :");scanf("%i",&disk);

   printf(" Uprednostnit monitor LCD(0)/CRT(1)? :");scanf("%i",&monit);

 

 

 

   if (graf == 0) strcpy(prDat.prof.grafika, "ATI");

   else strcpy(prDat.prof.grafika, "NVIDIA");

 

   if (disk == 0) strcpy(prDat.prof.disk, "WD");

   else strcpy(prDat.prof.disk, "Seagate");

 

   if (monit == 0) strcpy(prDat.prof.monitor, "LCD");

   else strcpy(prDat.prof.monitor, "CRT");

 

 

  return prDat;

}

 

 

//              OBTAIN

 

//              Zisti zaujem o upgrade

//

 

 

bool inferenc::zaujUpgr(prDatab dat){

 

 Info info;

 int proces;

 int ram;

 int graf;

 int hard;

 

   clrscr();

   vypisZakInf(dat);

   printf("\n Posledna zostava \n\n");

   dat.zobrazZost();

   printf("\n\n");

 

 

 

    printf("Zaujem o upgrade?? NIE(0)/ANO(1): "); scanf("%i",&info.zaujem);

 

    if( info.zaujem == 0) return false;

    else return true;

 

}

 

 

//              OBTAIN

 

//              Zisti poziadavky

//

 

 

void inferenc::zistiPoziad(prDatab dat){

 

  int tmp;

  poziad.hry = 0;

  poziad.kanc = 0;

  poziad.multim = 0;

 

  vypisZakInf(dat);

 

  printf("Pozadujete procesor?? INTEL(0)/AMD(1) : "); scanf("%i",&poziad.proces);

 

  printf("Pouzivat najma na hry?? NIE(0)/ANO(1): "); scanf("%i",&poziad.hry);

 

  if ( poziad.hry == 0){

          printf("Pouzivat na multimedia?? NIE(0)/ANO(1): "); scanf("%i",&poziad.multim);

 

 

        if ( poziad.multim == 0){

          printf("Pouzivat v kancelari??  NIE(0)/ANO(1):"); scanf("%i",&poziad.kanc);

        }

  }

 

 

 

  if(poziad.hry == 0)

    if(poziad.kanc == 0)

      if(poziad.multim == 0){

        printf(" Nedostatocne kriteria...\n");    // ked si nevybral ani jednu moznost

        return;                                   // tak program konci

      }

  vykon.max = false;

  vykon.mid = false;

  vykon.min = false;

 

  if (poziad.hry == 1) vykon.max = true;

  else if (poziad.multim == 1) vykon.mid = true;

  else if (poziad.kanc == 1) vykon.min = true;

 

  vyberZost(dat);

 

}

 

 

//

//              UPGRADE

//

 

 

void inferenc::upgrZost(prDatab dat){

 

 

   int i=0;

   int poc=0;

 

         updatKompon(dat);      //vybera komponenty na upgrade..

         prefKompon(dat);       //vyberie specificke podla profilu

 

  //

  //            Vytvor zostavu 1

  //

         dat.zakZost = tmpZost;  // vytvori novu upgradovanu zostavu..

 

 

  //zistenie ceny...

 

int cena = dat.zakZost->zostava.doska.cena + dat.zakZost->zostava.mechan.cena +

           dat.zakZost->zostava.hard.cena + dat.zakZost->zostava.monit.cena +

           dat.zakZost->zostava.pamat.cena + dat.zakZost->zostava.procesor.cena +

           dat.zakZost->zostava.grafika.cena;

 

         dat.zakZost->zostava.celkCena = cena;

 

         printf("\nUpgradovana zostava: \n\n");

         dat.zobrazZost();                     //zobrazi upgradovanu zostavu

 

         spokojnost(dat);                      //zistuje spokojnost

 

 

}

 

 

//

//              Vyber zostavu

//

 

 

void inferenc::vyberZost(prDatab dat){

 

vybZost = new DBZostavy();

vybZostP = new DBZostavy();

 

char typ[10];

char pr[10];

 

int vyber = 99;

 

        if (vykon.max) strcpy(typ,"GAME");

        else if (vykon.mid) strcpy(typ,"MULT");

        else if (vykon.min) strcpy(typ,"OFFICE");

        if ( poziad.proces == 0) strcpy(pr, "INTEL");

        else if ( poziad.proces == 1) strcpy(pr, "AMD");

 

 

        dat.vsetky = dat.vsetkyP;

        pocet = 0;

        i = 0;

        while (dat.vsetky != NULL){

                    //zistuje potrebne poziadavky na vyber...

         if ( (strcmp(dat.vsetky->zostava.typ, typ ) == 0) &&

               (strcmp(dat.vsetky->zostava.procesor.znacka, pr) == 0) ){

 

             vybr[pocet] = i;                  // vyberie indexy moznych zostav

             pocet ++;

          }

          i ++;

          dat.vsetky = dat.vsetky->next;

        }

 

       if(pocet > 1){

        randomize();

        vyber = random(pocet);

       }

       if (pocet == 1)

        vyber = 0;

 

       if(pocet != 0) {

            dat.vsetky = dat.vsetkyP;

            i = 0;

 

            while (dat.vsetky != NULL){

 

             if (i == vybr[vyber]){

 

                dat.zakZost = dat.vsetky; //vybrana zostava.....

             }

             i ++;

             dat.vsetky = dat.vsetky->next;

            }

 

                                        //nacita (vytvori sa profil) noveho uzivatela

          printf("\n");

          dat = vytProfil(dat, dat.DatZakaz->zakaznik.id);

 

                                      // vola sa metoda na modifikaciu zostavy na

                                      //zaklade profilu

          modifZost(dat);

 

                                      // ak neexistuje taka zostava

        }else {

          printf(" Nemame taku zostavu...");

          getchar();

          getchar();

          exit (0);

 

        }

 

 

}

 

 

//

//  Zisti kompatibilitu

//

 

void inferenc::updatKompon(prDatab dat){

 

int vyber = 99;

int prah[2];

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafikaP;

 

 

               if(strcmp(dat.zakZost->zostava.typ, "GAME") == 0) {

                   prah[0] = dat.zakZost->zostava.grafika.rank; prah[1] = 11;

                }

                else if(strcmp(dat.zakZost->zostava.typ, "MULT") == 0) {

                   prah[0] = dat.zakZost->zostava.grafika.rank; prah[1] = 7;

                     }

                else if(strcmp(dat.zakZost->zostava.typ, "OFFICE") == 0) {

                   prah[0] = dat.zakZost->zostava.grafika.rank; prah[1] = 5;

                     }

 

// vyberaju sa jednotlive kompatibilne a aj mozne komponenty na vymenu

 

 

              while(dat.DatKompon.kompon->grafika != NULL){

 

                 if(dat.DatKompon.kompon->grafika->rank >= prah[0] &&

                    dat.DatKompon.kompon->grafika->rank < prah[1] &&

                    strcmp(dat.DatKompon.kompon->grafika->slot, dat.zakZost->zostava.chipSet.vgaPort) == 0 ){

 

                   vybrG[pocet] = i;

                   pocet ++;

 

                 }

                 i++;

                 dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafika->next;

              }

 

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hardP;

              while(dat.DatKompon.kompon->hard != NULL){

                 if(strcmp(dat.DatKompon.kompon->hard->rozhr, dat.zakZost->zostava.chipSet.rozhranie) == 0 &&

                     dat.DatKompon.kompon->hard->rank > dat.zakZost->zostava.hard.rank){

 

                   printf("vyber: %i",i);

                   vybrH[pocet] = i;

                   pocet ++;

                 }

                 i++;

                 dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hard->next;

              }

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monitP;

              while(dat.DatKompon.kompon->monit != NULL){

                  if( dat.DatKompon.kompon->monit->rank >= dat.zakZost->zostava.monit.rank){

                   vybrM[pocet] = i;

                   pocet ++;

                  }

                 i++;

                 dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monit->next;

              }

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->procesor = dat.DatKompon.kompon->procesorP;

              while(dat.DatKompon.kompon->procesor != NULL){

                 if(strcmp(dat.DatKompon.kompon->procesor->socket, dat.zakZost->zostava.chipSet.socket) == 0 &&

                    dat.DatKompon.kompon->procesor->rank > dat.zakZost->zostava.pamat.rank &&

                    dat.DatKompon.kompon->procesor->rank < prah[1] ){

                   vybrP[pocet] = i;

                   pocet ++;

                 }

                 i++;

                 dat.DatKompon.kompon->procesor = dat.DatKompon.kompon->procesor->next;

              }

 

              pocet1 = 0;

              i = 0;

              dat.DatKompon.kompon->pamat = dat.DatKompon.kompon->pamatP;

              while(dat.DatKompon.kompon->pamat != NULL){

                 if ( dat.DatKompon.kompon->pamat->rank > dat.zakZost->zostava.pamat.rank &&

                      dat.DatKompon.kompon->pamat->rank < prah[1] ){

                   vybrR[pocet1] = i;

                   pocet1 ++;

                 }

                 i++;

                 dat.DatKompon.kompon->pamat = dat.DatKompon.kompon->pamat->next;

              }

 

}

 

 

//

//  Vyber komponenty ktore spolupracuju

//

 

 

void inferenc::vyberKompon(prDatab dat){

 

int vyber = 99;

int prah[2];

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafikaP;

 

 

                if(poziad.hry == 1) { prah[0] = 7; prah[1] = 11;  }

                else if(poziad.multim == 1) { prah[0] = 5; prah[1] = 7;}

                else if(poziad.kanc == 1) { prah[0] = 1; prah[1] = 5;  }

 

 

                if(strcmp(dat.zakZost->zostava.typ, "GAME") == 0) {

                   prah[0] = dat.zakZost->zostava.grafika.rank; prah[1] = 11;

                }

                else if(strcmp(dat.zakZost->zostava.typ, "MULT") == 0) {

                   prah[0] = dat.zakZost->zostava.grafika.rank; prah[1] = 7;

                     }

                else if(strcmp(dat.zakZost->zostava.typ, "OFFICE") == 0) {

                   prah[0] = dat.zakZost->zostava.grafika.rank; prah[1] = 5;

                     }

 

// vyberu sa kompatibilne komponenty

 

 

              while(dat.DatKompon.kompon->grafika != NULL){

 

                 if(dat.DatKompon.kompon->grafika->rank >= prah[0] &&

                    dat.DatKompon.kompon->grafika->rank < prah[1] &&

                    strcmp(dat.DatKompon.kompon->grafika->slot, dat.zakZost->zostava.chipSet.vgaPort) == 0 ){

 

                        printf("\n Peter %s--%s",dat.DatKompon.kompon->grafika->znacka,dat.DatKompon.kompon->grafika->chip);

 

                   vybrG[pocet] = i;

                   pocet ++;

 

                 }

                 i++;

                 dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafika->next;

              }

 

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hardP;

              while(dat.DatKompon.kompon->hard != NULL &&

                    dat.DatKompon.kompon->hard->rank > dat.zakZost->zostava.hard.rank ){

                 if(strcmp(dat.DatKompon.kompon->hard->rozhr, dat.zakZost->zostava.chipSet.rozhranie) == 0 ){

                   vybrH[pocet] = i;

                   pocet ++;

                 }

                 i++;

                 dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hard->next;

              }

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monitP;

              while(dat.DatKompon.kompon->monit != NULL){

                   if (dat.DatKompon.kompon->monit->rank > dat.zakZost->zostava.monit.rank) {

                     vybrM[pocet] = i;

                     pocet ++;

                   }

 

                 i++;

                 dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monit->next;

              }

 

              pocet = 0;

              i = 0;

              dat.DatKompon.kompon->procesor = dat.DatKompon.kompon->procesorP;

              while(dat.DatKompon.kompon->procesor != NULL){

                 if(strcmp(dat.DatKompon.kompon->procesor->socket, dat.zakZost->zostava.chipSet.socket) == 0 &&

                    dat.DatKompon.kompon->procesor->rank >= prah[0] &&

                    dat.DatKompon.kompon->procesor->rank < prah[1] ){

                   vybrP[pocet] = i;

                   pocet ++;

                 }

                 i++;

                 dat.DatKompon.kompon->procesor = dat.DatKompon.kompon->procesor->next;

              }

 

 

 

}

 

 

//

//        Prefiltruj

//

 

//

//        Vyber komponentov na vymenu

//

 

void inferenc::prefKompon(prDatab dat){

 

 int vyber[5];

 int vybrane;

 tmpZost = new DBZostavy();

 

 tmpZost = dat.zakZost;

 

    // zistuje ktore komponenty su zelane na zaklade profilu

 

          i = 0;

          tmp[0] = 0;

          vybrane = 0;

          dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafikaP;

           while(dat.DatKompon.kompon->grafika != NULL){

              if (i == vybrG[vybrane]){

               if(strcmp(dat.prof.grafika, dat.DatKompon.kompon->grafika->chip ) == 0){

 

                 vybrG[tmp[0]] = i;

                 tmp[0]++;

                }

               vybrane ++;

              }

            i++;

            dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafika->next;

 

          }

 

 

          i = 0;

          tmp[1] = 0;

          vybrane = 0;

          dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hardP;

           while(dat.DatKompon.kompon->hard != NULL){

              if (i == vybrH[vybrane]){

               if(strcmp(dat.prof.disk, dat.DatKompon.kompon->hard->znacka ) == 0){

                 vybrH[tmp[1]] = i;

                 tmp[1]++;

               }

               vybrane ++;

              }

            i++;

            dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hard->next;

          }

 

          i = 0;

          tmp[2] = 0;

          vybrane = 0;

          dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monitP;

           while(dat.DatKompon.kompon->monit != NULL){

              if (i == vybrM[vybrane]){

               if(strcmp(dat.prof.monitor, dat.DatKompon.kompon->monit->typ ) == 0){

                 vybrM[tmp[2]] = i;

                 tmp[2]++;

               }

               vybrane ++;

              }

            i++;

            dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monit->next;

          }

         tmp[3] = pocet;

         tmp[4] = pocet1;

 

 

      randomize();

 

      for(int i = 0; i < 5; i++){

       if(tmp[i] > 1){

        vyber[i] = random(tmp[i]);

       }

       if (tmp[i] == 1)

        vyber[i] = 0;

       }

 

      // vyber daneho komponentu

 

          if (tmp[0] != 0){

            dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafikaP;

            i = 0;

            while (dat.DatKompon.kompon->grafika != NULL){

 

             if (i == vybrG[vyber[0]]){

                //nastavi sa index na vybrany komponent

                //a nahradi sa

                nahradKomp(dat,0);

             }

             i ++;

             dat.DatKompon.kompon->grafika = dat.DatKompon.kompon->grafika->next;

            }

           }

         // vybera hard disk

 

         if (tmp[1] != 0){

            dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hardP;

            i = 0;

            while (dat.DatKompon.kompon->hard != NULL){

 

             if (i == vybrH[vyber[1]]){

                //nastavi sa index na vybrany komponent

                //a nahradi sa

                nahradKomp(dat,1);

             }

             i ++;

             dat.DatKompon.kompon->hard = dat.DatKompon.kompon->hard->next;

            }

         }

 

        if (tmp[2] != 0){

            dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monitP;

            i = 0;

            while (dat.DatKompon.kompon->monit != NULL){

 

             if (i == vybrM[vyber[2]]){

                //nastavi sa index na vybrany komponent

                //a nahradi sa

                nahradKomp(dat,2);

             }

             i ++;

             dat.DatKompon.kompon->monit = dat.DatKompon.kompon->monit->next;

            }

          }

 

        if (tmp[3] != 0){

            dat.DatKompon.kompon->procesor = dat.DatKompon.kompon->procesorP;

            i = 0;

            while (dat.DatKompon.kompon->procesor != NULL){

 

             if (i == vybrP[vyber[3]]){

                //nastavi sa index na vybrany komponent

                //a nahradi sa

                nahradKomp(dat,3);

             }

             i ++;

             dat.DatKompon.kompon->procesor = dat.DatKompon.kompon->procesor->next;

            }

          }

 

          if (tmp[4] != 0){

            dat.DatKompon.kompon->pamat = dat.DatKompon.kompon->pamatP;

            i = 0;

            while (dat.DatKompon.kompon->pamat != NULL){

 

             if (i == vybrR[vyber[3]]){

                //nastavi sa index na vybrany komponent

                //a nahradi sa

                nahradKomp(dat,4);

             }

             i ++;

             dat.DatKompon.kompon->pamat = dat.DatKompon.kompon->pamat->next;

            }

          }

 

 

}

 

//

//              Nahrad komponenty 1

//              Nahrad komponenty 2

 

 

void inferenc::nahradKomp(prDatab dat, int typ){

 

     if (typ == 0 && tmp[0] !=0) {

                  strcpy(tmpZost->zostava.grafika.znacka, dat.DatKompon.kompon->grafika->znacka);

                  strcpy(tmpZost->zostava.grafika.typ, dat.DatKompon.kompon->grafika->typ);

                  strcpy(tmpZost->zostava.grafika.slot, dat.DatKompon.kompon->grafika->slot);

                  strcpy(tmpZost->zostava.grafika.chip, dat.DatKompon.kompon->grafika->chip);

                  tmpZost->zostava.grafika.rank = dat.DatKompon.kompon->grafika->rank;

                  tmpZost->zostava.grafika.cena = dat.DatKompon.kompon->grafika->cena;

     }

     if(typ == 1 && tmp[1] != 0) {

                  strcpy(tmpZost->zostava.hard.znacka, dat.DatKompon.kompon->hard->znacka);

                  strcpy(tmpZost->zostava.hard.velkost, dat.DatKompon.kompon->hard->velkost);

                  strcpy(tmpZost->zostava.hard.rozhr, dat.DatKompon.kompon->hard->rozhr);

                  strcpy(tmpZost->zostava.hard.cache, dat.DatKompon.kompon->hard->cache);

                  tmpZost->zostava.hard.otacky = dat.DatKompon.kompon->hard->otacky;

                  tmpZost->zostava.hard.rank = dat.DatKompon.kompon->hard->rank;

                  tmpZost->zostava.hard.cena = dat.DatKompon.kompon->hard->cena;

     }

 

     if(typ == 2 && tmp[2] != 0) {

                 strcpy(tmpZost->zostava.monit.znacka, dat.DatKompon.kompon->monit->znacka);

                 strcpy(tmpZost->zostava.monit.popis, dat.DatKompon.kompon->monit->popis);

                 strcpy(tmpZost->zostava.monit.typ, dat.DatKompon.kompon->monit->typ);

                 tmpZost->zostava.monit.palce = dat.DatKompon.kompon->monit->palce;

                 tmpZost->zostava.monit.rank = dat.DatKompon.kompon->monit->rank;

                 tmpZost->zostava.monit.cena = dat.DatKompon.kompon->monit->cena;

     }

 

     if(typ == 3 && tmp[3] !=0) {

                 strcpy(tmpZost->zostava.procesor.znacka, dat.DatKompon.kompon->procesor->znacka);

                 strcpy(tmpZost->zostava.procesor.typ, dat.DatKompon.kompon->procesor->typ);

                 strcpy(tmpZost->zostava.procesor.oznac, dat.DatKompon.kompon->procesor->oznac);

                 strcpy(tmpZost->zostava.procesor.socket, dat.DatKompon.kompon->procesor->socket);

                 tmpZost->zostava.procesor.rank = dat.DatKompon.kompon->procesor->rank;

                 tmpZost->zostava.procesor.cena = dat.DatKompon.kompon->procesor->cena;

 

     }

 

     if(typ == 4 && tmp[4] !=0) {

                 strcpy(tmpZost->zostava.pamat.znacka, dat.DatKompon.kompon->pamat->znacka);

                 strcpy(tmpZost->zostava.pamat.velkost, dat.DatKompon.kompon->pamat->velkost);

                 strcpy(tmpZost->zostava.pamat.zbernica, dat.DatKompon.kompon->pamat->zbernica);

                 tmpZost->zostava.pamat.rank = dat.DatKompon.kompon->pamat->rank;

                 tmpZost->zostava.pamat.cena = dat.DatKompon.kompon->pamat->cena;

     }

 

}

 

//

//              MODIFIKUJ

//

 

 

void inferenc::modifZost(prDatab dat){

 

 

 char typ[10];

 

   int i=0;

   int poc=0;

 

         vyberKompon(dat);                       // vyber komponentov na vymenu

         prefKompon(dat);                        // vyber podla profilu

 

       //

       // Vytvor zostavu 2

       //

 

         dat.zakZost = tmpZost;

 

       //zisti sa cena

int cena = dat.zakZost->zostava.doska.cena + dat.zakZost->zostava.mechan.cena +

           dat.zakZost->zostava.hard.cena + dat.zakZost->zostava.monit.cena +

           dat.zakZost->zostava.pamat.cena + dat.zakZost->zostava.procesor.cena +

           dat.zakZost->zostava.grafika.cena;

 

           dat.zakZost->zostava.celkCena = cena;

 

         printf("\nZostava: \n\n");

         dat.zobrazZost();                       // zobrazi sa zostava

         printf("\n");

         spokojnost(dat);                        // zistuje spokojnost

 

}

 

//              OBTAIN

 

//              Zisti spokojnost 1

//              Zisti spokojnost 2

 

 

void inferenc::spokojnost(prDatab dat){

 

   Info info;

 

 

   printf(" Spokojny?? NIE(0)/ANO(1) :"); scanf("%i",&info.spokojnost);

 

    if( info.spokojnost == 1) {      //spokojny

          printf(" Sme radi, ze sme Vam mohli pomoct...\n\n");

          ulozZak(dat);

    }else {                     //nespokojny

          printf(" Skoda, ze Vam nemozme pomoct...\n\n");

    }

 

    getchar();

    getchar();

    exit (0);

 

}

 

 

// ulozi zakaznika do databazy

 

void inferenc::ulozZak(prDatab prDat){

 

 

    prDat.ulozZost();

    prDat.ulozZak();

    prDat.ulozProf();

 

 

}

 


 

INDEX