Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define N 6
- #define MAX 40
- struct Wpis
- {
- char nazwisko [MAX];
- char imie [MAX];
- char numertl [MAX];
- char adres [MAX];
- };
- void pokaz (struct Wpis Ksiazka[], int, int id[]);
- void dodaj (struct Wpis Ksiazka[], int *, int id[]);
- void sortuj (struct Wpis Ksiazka[], int lzap, int id[]);
- void zamiana (struct Wpis Ksiazka[], int);
- void usuwanie (struct Wpis Ksiazka[], int *, int id[]);
- void edycja (struct Wpis Ksiazka[], int , int id[], int);
- int main()
- {
- int p = 0 , lzap = 6, id[N] ={0,1,2,3,4,5/*,6/*,7,8,9,10,11,12,13,14,15,16,17,18,19*/};
- struct Wpis Ksiazka[N] = {{"Kowalski", "Jan", "555555555", "ul. n 3"},
- {"Nowak", "Maciek", "444444444", "ul. d 8"},
- {"Tntczak", "Szymon Antek", "456456456", "ul. e 4"},
- {"Keselski", "Tymon", "456456456", "ul. w 4"},
- {"Arabowski", "Szymon", "456456456", "ul. k 4"},
- {"Borzym", "Ania", "456456456", "ul. c 4"}/*,
- {"Graba", "Alan", "456456456", "ul. t 4"} */
- };
- while(p!=1)
- {
- sortuj (Ksiazka, lzap, id);
- int w,l;
- printf("\n\n\nProgram zawiera ksiazke adresowa, ktora mozna edytowac\n");
- printf("Wybierz co chcesz zrobic:\n");
- printf("1.Dodac nowy adres\n");
- printf("2.Usunac adres\n");
- printf("3.Wyswietlic zapisane adresy\n");
- printf("4.Aby wyjsc z programu\n");
- scanf("%d",&w);
- l=getc(stdin);
- if (l != 10) printf("blad danych\n");
- else
- switch(w)
- {
- case 1: dodaj(Ksiazka, &lzap, id) ; /* Menu programu */
- break;
- case 2: usuwanie(Ksiazka, &lzap, id) ;
- break;
- case 3: pokaz(Ksiazka, lzap, id) ;
- break;
- case 4: p=1 ;
- break;
- }
- }
- return 0;
- }
- void dodaj (struct Wpis Ksiazka[],int *lzap, int id[])
- {
- int porownanien, porownaniei, i;
- if (*lzap < N)
- {
- printf("Podaj nazwisko\n");
- gets(Ksiazka[*lzap].nazwisko);
- if (strlen(Ksiazka[*lzap].nazwisko)> MAX) { printf("Za duzo znakow"); return (0); }
- printf("Podaj imie\n");
- gets(Ksiazka[*lzap].imie);
- if (strlen(Ksiazka[*lzap].imie)> MAX) { printf("Za duzo znakow"); return(0); }
- printf("Podaj numer telefonu\n");
- gets(Ksiazka[*lzap].numertl);
- if (strlen(Ksiazka[*lzap].numertl)> MAX) { printf("Za duzo znakow"); return(0); }
- printf("Podaj adres\n");
- gets(Ksiazka[*lzap].adres);
- if (strlen(Ksiazka[*lzap].adres)> MAX) { printf("Za duzo znakow"); return (0); }
- zamiana(Ksiazka, *lzap);
- for (i=0; i<(*lzap-1); i++)
- {
- porownanien= strcmp(Ksiazka[id[i]].nazwisko, Ksiazka[*lzap].nazwisko);
- porownaniei= strcmp(Ksiazka[id[i]].imie, Ksiazka[*lzap].imie);
- if (porownanien==0 && porownaniei==0) { edycja(Ksiazka, *lzap, id, i); (*lzap)--; }
- }
- (*lzap)++;
- }
- else printf("Ksiazka adresowa jest juz pelna \n\n");
- }
- void pokaz(struct Wpis Ksiazka[], int lzap, int id[])
- {
- int i;
- for (i=0; i<lzap; i++)
- {
- printf("%s \n", Ksiazka[i].nazwisko);
- printf("%s \n", Ksiazka[i].imie);
- printf("%s \n", Ksiazka[i].numertl);
- printf("%s \n\n", Ksiazka[i].adres);
- }
- printf("---------------------\n");
- for (i=0; i<lzap; i++)
- {
- printf("ID: %d ",id[i]);
- printf("%s \n", Ksiazka[id[i]].nazwisko);
- printf("%s \n", Ksiazka[id[i]].imie);
- printf("%s \n", Ksiazka[id[i]].numertl);
- printf("%s \n\n", Ksiazka[id[i]].adres);
- }
- }
- void sortuj (struct Wpis Ksiazka[], int lzap, int id[])
- {
- int i,sort,pomoc,licznikpetli=1;
- while (licznikpetli!=0)
- {
- licznikpetli=0;
- for (i=0; i<(lzap-1); i++)
- {
- sort= strcmp(Ksiazka[id[i]].nazwisko, Ksiazka[id[i+1]].nazwisko);
- if (sort>0)
- {
- pomoc=id[i];
- id[i]=id[i+1]; /* sortowanie babelkowe */
- id[i+1]=pomoc;
- licznikpetli++;
- }
- if (sort==0)
- {
- sort=strcmp(Ksiazka[id[i]].imie, Ksiazka[id[i+1]].imie);
- if (sort>0)
- {
- pomoc=id[i];
- id[i]=id[i+1];
- id[i+1]=pomoc;
- licznikpetli++;
- }
- }
- }
- }
- }
- void zamiana (struct Wpis Ksiazka[], int lzap)
- {
- int dlnaz,i;
- if (((Ksiazka[lzap].nazwisko[0])>='a') && ((Ksiazka[lzap].nazwisko[0])<= 'z')) Ksiazka[lzap].nazwisko[0]-=32;
- dlnaz=strlen(Ksiazka[lzap].nazwisko);
- for (i=1; i<dlnaz;i++)
- {
- if (((Ksiazka[lzap].nazwisko[i])>= 'A') && ((Ksiazka[lzap].nazwisko[i])<= 'Z')) Ksiazka[lzap].nazwisko[i]+=32;
- }
- if (((Ksiazka[lzap].imie[0])>='a') && ((Ksiazka[lzap].imie[0])<= 'z')) Ksiazka[lzap].imie[0]-=32;
- dlnaz=strlen(Ksiazka[lzap].imie);
- for (i=1; i<dlnaz;i++)
- {
- if (((Ksiazka[lzap].imie[i])>= 'A') && ((Ksiazka[lzap].imie[i])<= 'Z')) Ksiazka[lzap].imie[i]+=32;
- }
- }
- void usuwanie (struct Wpis Ksiazka[],int *lzap, int id[])
- {
- int idusuwania, i, pomoc;
- printf("Podaj ID wpisu, ktory chcesz usunac. \n");
- scanf("%d", &idusuwania);
- if (id[idusuwania]>(*lzap-1)) {printf("Nie ma takiego id\n\n"); return(0); }
- /* for(i=0; i<*lzap; i++)
- {
- if (id[i]==idusuwania) break;
- }
- int j;
- printf("i= %d idusuw= %d ", i, idusuwania);
- for (j=idusuwania; j<(*lzap-1); j++)
- {
- printf("%s %s -", Ksiazka[j].nazwisko, Ksiazka[j+1].nazwisko);
- strcpy (Ksiazka[j].nazwisko, Ksiazka[j+1].nazwisko);
- strcpy (Ksiazka[j].imie, Ksiazka[j+1].imie);
- strcpy (Ksiazka[j].numertl, Ksiazka[j+1].numertl);
- strcpy (Ksiazka[j].adres, Ksiazka[j+1].adres);
- } */
- for(i=0; i<*lzap; i++)
- {
- if (id[i]==idusuwania) {pomoc=i; break;}
- }
- for (i=pomoc ; i< (*lzap-1);i++ )
- {
- // Ksiazka[id[pomoc]]=Ksiazka[id[pomoc+1]];
- id[pomoc]=id[pomoc+1];
- pomoc++;
- }
- // printf("%s %s", Ksiazka[id[j]].nazwisko, Ksiazka[id[j+1]].nazwisko);
- /* strcpy( Ksiazka[idusuwania].nazwisko, Ksiazka[*lzap-1].nazwisko);*/
- /* strcpy(Ksiazka[id[i]].nazwisko, Ksiazka[*lzap-1].nazwisko);
- pomoc=id[i];
- id[i]=id[*lzap-1];
- id[i+1]=pomoc;
- */
- (*lzap)--;
- printf("----------------------\n\n");
- }
- void edycja(struct Wpis Ksiazka[], int lzap, int id[], int i)
- {
- strcpy(Ksiazka[id[i]].numertl, Ksiazka[id[lzap]].numertl);
- strcpy(Ksiazka[id[i]].adres, Ksiazka[id[lzap]].adres);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement