Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- typedef struct auta
- {
- char kategoria[52];
- char SPZ[9];
- char znacka[52];
- char predajca[102];
- int cena;
- int rok_vyroby;
- char stav_vozidla[202];
- struct auta *next;
- }AUTA;
- AUTA *prva(AUTA *first)
- {
- FILE *fr;
- int a = 0;
- char c;
- AUTA *new_s = NULL, *akt = NULL, *del;
- if (first != NULL)
- {
- akt = first;
- while (akt != NULL)
- {
- del = akt;
- akt = akt ->next;
- free(del);
- }
- }
- akt = first = NULL;
- fr = fopen("auta.txt", "r");
- if (fr == NULL)
- {
- printf("Zaznamy neboli nacitane\n");
- }
- else
- {
- while ((c = fgetc(fr)) == '*' )
- {
- fgetc(fr);
- (a)++;
- new_s = (AUTA *) malloc(sizeof(AUTA));
- fgets(new_s->kategoria,52,fr);
- fgets(new_s->SPZ,9,fr);
- fgets(new_s->znacka,52,fr);
- fgets(new_s->predajca,102,fr);
- fscanf(fr,"%d",&new_s->cena);
- fscanf(fr,"%d",&new_s->rok_vyroby);
- fgetc(fr);
- fgets(new_s->stav_vozidla,202,fr);
- new_s->next = NULL;
- if (first != NULL)
- {
- akt->next = new_s;
- akt = new_s;
- }
- else
- {
- first = akt = new_s;
- }
- }
- }
- printf("Nacitalo sa %d zaznamov\n", a);
- fclose(fr);
- return first;
- }
- AUTA * druha(AUTA *first)
- {
- int poradie = 0;
- AUTA *akt = first;
- while (akt != NULL)
- {
- printf("%d.\n", ++poradie);
- printf("kategoria: %s", akt->kategoria);
- printf("SPZ: %s", akt->SPZ);
- printf("znacka: %s", akt->znacka);
- printf("predajca: %s", akt->predajca);
- printf("cena: %d\n", akt->cena);
- printf("rok_vyroby: %d\n", akt->rok_vyroby);
- printf("stav_vozidla: %s", akt->stav_vozidla);
- akt=akt->next;
- }
- printf("\n");
- return first;
- }
- AUTA * tretia(AUTA *first)
- {
- AUTA *akt, *add = NULL, *next = NULL;
- int pozicia = 0, poradie = 1;
- printf("zadaj poziciu:");
- scanf("%d", &pozicia);
- // printf("%d", pozicia);
- add = (AUTA *) malloc(sizeof(AUTA));
- getchar();
- printf("zadaj kategoriu:");
- gets(add->kategoria);
- strcat(add->kategoria,"\n");
- // printf("%s",add->kategoria);
- printf("zadaj SPZ:");
- gets(add->SPZ);
- strcat(add->SPZ,"\n");
- // printf("%s",add->SPZ);
- printf("zadaj znacku:");
- gets(add->znacka);
- strcat(add->znacka,"\n");
- // printf("%s",add->znacka);
- printf("zadaj predajcu:");
- gets(add->predajca);
- strcat(add->predajca,"\n");
- // printf("%s\n",add->predajca);
- printf("zadaj cenu:");
- scanf("%d",&add->cena);
- // printf("%d\n",add->cena);
- printf("zadaj rok vyroby:");
- scanf("%d",&add->rok_vyroby);
- // printf("%d\n",add->rok_vyroby);
- printf("zadaj stav vozidla:");
- scanf("%s",&add->stav_vozidla);
- strcat(add->stav_vozidla,"\n");
- // printf("%s",add->stav_vozidla);
- add->next = NULL;
- // printf("HAHAHAHAHAHAH\n");
- akt = first;
- while (akt != NULL)
- {
- poradie++;
- //printf("%d\n",poradie);
- //printf("%d\n",pozicia);
- if (pozicia == 1)
- {
- //printf("na prve miesto");
- add->next = first;
- first = add;
- return first;
- }
- if (poradie == pozicia)
- {
- //printf("if");
- if (akt->next != NULL)
- {
- //printf("not NULL");
- add->next = akt->next;
- akt->next = add;
- return first;
- }
- else
- {
- //printf("NULL else");
- akt->next = add;
- return first;
- }
- }
- else
- {
- //printf("else");
- akt = akt->next;
- }
- }
- akt = first;
- while (akt != NULL)
- {
- //printf("%d\n", akt->cena);
- //printf("%d\n", akt->next);
- if (akt->next == NULL)
- {
- akt->next = add;
- return first;
- }
- akt = akt->next;
- }
- }
- AUTA * stvrta(AUTA *first)
- {
- AUTA *akt, *pred;
- char kategoria[52], kategoria_V[52], kategoria_V_f[52], kategoria_V_a[52];
- int poradie = 0, i, j, k;
- scanf("%s", kategoria);
- strlen(kategoria);
- strlen(akt->kategoria);
- strlen(first->kategoria);
- printf("%d\n", strlen(kategoria));
- printf("%d\n", strlen(akt->kategoria));
- printf("%d\n", strlen(first->kategoria));
- for (i = 0; i <= strlen(kategoria);i++)
- {
- kategoria_V[i] = toupper(kategoria[i]);
- }
- printf("%s\n", kategoria_V);
- for (j = 0; j <= strlen(first->kategoria);j++)
- {
- kategoria_V_f[j] = toupper(first->kategoria[j]);
- }
- printf("%s\n", kategoria_V_f);
- if (strstr(kategoria_V_f,kategoria_V) != NULL)
- {
- first->next=akt->next;
- akt = first;
- first = pred;
- free(akt);
- return first;
- }
- akt = first->next;
- pred = first;
- while(akt != NULL)
- {
- for (k = 0; k <= strlen(akt->kategoria);k++)
- {
- kategoria_V_a[k] = toupper(akt->kategoria[k]);
- }
- printf("%s\n", kategoria_V_a);
- if (strstr(kategoria_V_a,kategoria_V) != NULL)
- {
- poradie++;
- pred->next = akt->next;
- free(akt);
- return first;
- }
- akt = akt->next;
- pred = pred->next;
- }
- return first;
- }
- AUTA * piata(AUTA *first)
- {
- AUTA *akt = first;
- char spz[9];
- int cena = 0, poradie = 0;
- scanf("%d", &cena);
- // printf("%d\n", cena);
- scanf("%s", &spz);
- // printf ("%s\n", spz);
- while (akt != NULL)
- {
- //printf ("\n%s\n", akt->SPZ);
- //printf("%d\n", akt->cena);
- if (((akt->cena) <= cena) && ((akt->SPZ[0]) == spz[0]) && ((akt->SPZ[1]) == spz[1]))
- {
- printf("%d.\n", ++poradie);
- printf("kategoria: %s", akt->kategoria);
- printf("SPZ: %s", akt->SPZ);
- printf("znacka: %s", akt->znacka);
- printf("predajca: %s", akt->predajca);
- printf("cena: %d\n", akt->cena);
- printf("rok_vyroby: %d\n", akt->rok_vyroby);
- printf("stav_vozidla: %s", akt->stav_vozidla);
- }
- akt = akt->next;
- }
- return first;
- }
- AUTA * siesta(AUTA *first)
- {
- AUTA *akt, *novy, *pred;
- char SPZ[9];
- printf("zadaj SPZ: ");
- scanf("%s",&SPZ);
- printf("%s\n",SPZ);
- printf("\n");
- //getchar();
- novy = (AUTA *) malloc(sizeof(AUTA));
- /*scanf("%s\n",&novy->kategoria);
- scanf("%s\n",&novy->SPZ);
- scanf("%s\n",&novy->znacka);
- scanf("%s\n",&novy->predajca);
- scanf("%d\n",&novy->cena);
- scanf("%d\n",&novy->rok_vyroby);
- scanf("%s",&novy->stav_vozidla);
- novy->next = NULL;*/
- getchar();
- gets(novy->kategoria);
- strcat(novy->kategoria,"\n");
- gets(novy->SPZ);
- strcat(novy->SPZ,"\n");
- gets(novy->znacka);
- strcat(novy->znacka,"\n");
- gets(novy->predajca);
- strcat(novy->predajca,"\n");
- scanf("%d",&novy->cena);
- scanf("%d",&novy->rok_vyroby);
- scanf("%s",&novy->stav_vozidla);
- strcat(novy->stav_vozidla,"\n");
- novy->next = NULL;
- /*printf("kategoria: %s\n", novy->kategoria);
- printf("SPZ: %s\n", novy->SPZ);
- printf("znacka: %s\n", novy->znacka);
- printf("predajca: %s\n", novy->predajca);
- printf("cena: %d\n", novy->cena);
- printf("rok_vyroby: %d\n", novy->rok_vyroby);
- printf("stav_vozidla: %s\n", novy->stav_vozidla);*/
- if (strstr(first->SPZ,SPZ) != NULL)
- {
- novy->next=first->next;
- akt = first;
- first = novy;
- free(akt);
- printf("Zoznam sa aktualizoval\n");
- return first;
- }
- akt = first->next;
- pred = first;
- while(akt != NULL)
- {
- if (strstr(akt->SPZ,SPZ) != NULL)
- {
- printf("%s\n",akt->SPZ);
- printf("%d\n",akt->cena);
- pred->next = novy;
- novy->next = akt->next;
- free(akt);
- printf("Zoznam sa aktualizoval\n");
- return first;
- }
- akt = akt->next;
- pred = pred->next;
- }
- printf("Zoznam sa neaktualizoval");
- return first;
- }
- int main()
- {
- char c;
- AUTA *FIRST = NULL;
- int opakovat = 1;
- do
- {
- switch(c = getchar())
- {
- case 'c' : FIRST = prva(FIRST); break;
- case 'v' : FIRST = druha(FIRST); break;
- case 'p' : FIRST = tretia(FIRST); break;
- case 'z' : FIRST = stvrta(FIRST); break;
- case 'h' : FIRST = piata(FIRST); break;
- case 'a' : FIRST = siesta(FIRST); break;
- case 'k' : opakovat = 0; break;
- }
- } while (opakovat);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement