Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- struct osoba {
- int id;
- char imie[20];
- char drugie_imie[20];
- char nazwisko[20];
- char ulica [20];
- int nrlok;
- int nrzam;
- char miasto [20];
- char nrpocz [6];
- int nrtel;
- };
- //oczyszczanie bufora
- void usun_input (void){
- while (getchar () != '\n') {
- continue;
- }
- }
- void dodaj_nowy(int *i, struct osoba *tab){
- //dane potrzebne do ewentualnej aktualizacji istniejacego wpisu
- int d = *i+1;
- int c;
- if (*i>=20) {
- printf("Limit pozycji zostal osiagniety. Baza jest pelna. Nie mozna dodac nowych danych");
- }
- else {
- tab[*i].id = 100 + *i;
- printf("Podaj imie\n");
- scanf("%s", tab[*i].imie);
- usun_input ();
- printf("Podaj drugie imie. Jesli nie posiadasz napisz \"-\"\n");
- scanf("%s", tab[*i].drugie_imie);
- usun_input ();
- printf("Podaj nazwisko\n");
- scanf("%s", tab[*i].nazwisko);
- usun_input ();
- //aktualizowanie juz istniejacego wpisu
- for (c=0; c<*i; c++) {
- if (strcmp(tab[c].imie, tab[*i].imie) == 0 && strcmp(tab[c].drugie_imie, tab[*i].drugie_imie) == 0 && strcmp(tab[c].nazwisko, tab[*i].nazwisko) == 0) {
- printf("Ta osoba jest juz w bazie. Aktualizujesz teraz jej adres i nr telefonu\n");
- d=*i;
- *i=c;
- }
- }
- printf("Podaj ulice\n");
- fgets(tab[*i].ulica,20,stdin);
- printf("Podaj numer lokalu\n");
- while (!scanf("%d", &tab[*i].nrlok)) {
- usun_input ();
- printf ("Blad danych. Wpisz ponownie\n");
- };
- usun_input ();
- printf("Podaj numer mieszkania. Jesli nie dotyczy wpisz \"0\"\n");
- while (!scanf("%d", &tab[*i].nrzam)) {
- usun_input ();
- printf("Blad danych. Wpisz ponownie\n");
- };
- usun_input ();
- printf("Podaj miejscowosc\n");
- fgets(tab[*i].miasto,20,stdin);
- printf("Podaj kod pocztowy\n");
- scanf("%s", tab[*i].nrpocz);
- usun_input ();
- printf("Podaj numer telefonu\n");
- while (!scanf("%d", &tab[*i].nrtel)){
- usun_input ();
- printf("Blad danych. Wpisz ponownie\n");
- };
- usun_input ();
- printf("\nKontakt zostal dodany\n\n");
- *i=d;
- }
- }
- void pokaz_kontakty (int *i, struct osoba *tab){
- int l,k,j,m,h,n;
- //sortowanie
- for (l=1;l<*i;l++) {
- tab[*i] = tab[l];
- k=l;
- h=0;
- while (k>0) {
- while (tab[k-1].nazwisko[h]==tab[*i].nazwisko[h]) {
- h++;
- }
- n=h;
- if (tab[k-1].nazwisko[n]<tab[*i].nazwisko[n]) {
- break;
- }
- tab[k]=tab[k-1];
- k--;
- h=0;
- }
- tab[k]=tab[*i];
- }
- for (m=0;m<*i;m++) {
- tab[m].id = 100 + m;
- }
- //wyswietlanie wpisow
- printf("\nksiazka adresowa\n");
- for (j = 0; j < *i; j++)
- {
- printf("id: %d \n", tab[j].id);
- printf("%s", tab[j].imie);
- if (tab[j].drugie_imie[0] != 45) {
- printf(" %s", tab[j].drugie_imie);
- }
- printf(" %s\n",tab[j].nazwisko);
- printf("ul.%s %d", tab[j].ulica, tab[j].nrlok);
- if (tab[j].nrzam != 0) {
- printf("/%d", tab[j].nrzam);
- }
- printf("\n%s %s \n%d\n", tab[j].nrpocz, tab[j].miasto, tab[j].nrtel);
- printf("****************\n");
- }
- }
- void usun_kontakt (int *i, struct osoba *tab) {
- int b;
- printf("Podaj id pozycji, ktora chcesz usunac\n");
- while (!scanf("%d", &b)){
- usun_input ();
- printf("Blad danych. Sprobuj ponownie\n");
- }
- usun_input ();
- if (b-100<*i-1 && b>=100){
- tab[*i-1].id = tab[b-100].id;
- tab[b-100] = tab[*i-1];
- (*i)--;
- printf("Pozycja zostala usunieta\n\n");
- }
- else if (b-100==*i-1) {
- (*i)--;
- printf("Pozycja zostala usunieta\n\n");
- }
- else {
- printf("Nie ma pozycji o tym id\n\n");
- }
- }
- int main(void)
- {
- struct osoba kontakty[21] = {{100,"Tomek", "-","Raniecki","Pileckiego",112,94,"Warszawa","02-798",111222333}, {101,"Romek", "Atomek", "Zaniecki", "Zielona", 11, 24,"Warszawa", "00-334", 999888777},
- {102, "Pawel", "-", "Abacki", "Szeroka", 45, 17, "Krakow", "23-444", 123456543}, {103, "Ryszard", "Filip", "Ran", "Miodowa", 24, 76, "Szczecin", "12-123", 987656789},
- {104, "Kamil", "-", "Rura", "Fiolkowa", 44, 17, "Warszawa", "02-133", 999777555}};
- int a, i=5;
- int *wsk = &i;
- while (1) {
- printf("Co chcesz zrobic? (Podaj numer opcji)\n 1) Dodac nowy kontakt \n 2) Wyswietlic wszystkie kontakty\n");
- printf(" 3) Usunac kontakt\n 4) Zakonczyc program\n\n");
- if (!scanf("%d", &a)) {
- printf("\nBlad danych \n");
- }
- usun_input ();
- if (a==1) {
- dodaj_nowy(wsk, kontakty);
- }
- else if (a==2) {
- pokaz_kontakty (wsk, kontakty);
- }
- else if (a==3) {
- usun_kontakt (wsk, kontakty);
- }
- else if (a==4) {
- break;
- }
- else {
- printf("\nBrak opcji pod tym numerem\n\n");
- }
- }
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement