Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. struct osoba {
  5. int id;
  6. char imie[20];
  7. char drugie_imie[20];
  8. char nazwisko[20];
  9. char ulica [20];
  10. int nrlok;
  11. int nrzam;
  12. char miasto [20];
  13. char nrpocz [6];
  14. int nrtel;
  15. };
  16.  
  17. //oczyszczanie bufora
  18. void usun_input (void){
  19. while (getchar () != '\n') {
  20. continue;
  21. }
  22. }
  23.  
  24.  
  25. void dodaj_nowy(int *i, struct osoba *tab){
  26. //dane potrzebne do ewentualnej aktualizacji istniejacego wpisu
  27. int d = *i+1;
  28. int c;
  29.  
  30.  
  31. if (*i>=20) {
  32. printf("Limit pozycji zostal osiagniety. Baza jest pelna. Nie mozna dodac nowych danych");
  33. }
  34. else {
  35. tab[*i].id = 100 + *i;
  36. printf("Podaj imie\n");
  37. scanf("%s", tab[*i].imie);
  38. usun_input ();
  39. printf("Podaj drugie imie. Jesli nie posiadasz napisz \"-\"\n");
  40. scanf("%s", tab[*i].drugie_imie);
  41. usun_input ();
  42. printf("Podaj nazwisko\n");
  43. scanf("%s", tab[*i].nazwisko);
  44. usun_input ();
  45.  
  46. //aktualizowanie juz istniejacego wpisu
  47. for (c=0; c<*i; c++) {
  48. 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) {
  49. printf("Ta osoba jest juz w bazie. Aktualizujesz teraz jej adres i nr telefonu\n");
  50. d=*i;
  51. *i=c;
  52. }
  53. }
  54.  
  55. printf("Podaj ulice\n");
  56. fgets(tab[*i].ulica,20,stdin);
  57. printf("Podaj numer lokalu\n");
  58. while (!scanf("%d", &tab[*i].nrlok)) {
  59. usun_input ();
  60. printf ("Blad danych. Wpisz ponownie\n");
  61. };
  62. usun_input ();
  63. printf("Podaj numer mieszkania. Jesli nie dotyczy wpisz \"0\"\n");
  64. while (!scanf("%d", &tab[*i].nrzam)) {
  65. usun_input ();
  66. printf("Blad danych. Wpisz ponownie\n");
  67. };
  68. usun_input ();
  69. printf("Podaj miejscowosc\n");
  70. fgets(tab[*i].miasto,20,stdin);
  71. printf("Podaj kod pocztowy\n");
  72. scanf("%s", tab[*i].nrpocz);
  73. usun_input ();
  74. printf("Podaj numer telefonu\n");
  75. while (!scanf("%d", &tab[*i].nrtel)){
  76. usun_input ();
  77. printf("Blad danych. Wpisz ponownie\n");
  78. };
  79. usun_input ();
  80. printf("\nKontakt zostal dodany\n\n");
  81. *i=d;
  82. }
  83. }
  84.  
  85.  
  86. void pokaz_kontakty (int *i, struct osoba *tab){
  87.  
  88. int l,k,j,m,h,n;
  89.  
  90. //sortowanie
  91. for (l=1;l<*i;l++) {
  92. tab[*i] = tab[l];
  93. k=l;
  94. h=0;
  95. while (k>0) {
  96. while (tab[k-1].nazwisko[h]==tab[*i].nazwisko[h]) {
  97. h++;
  98. }
  99. n=h;
  100. if (tab[k-1].nazwisko[n]<tab[*i].nazwisko[n]) {
  101. break;
  102. }
  103. tab[k]=tab[k-1];
  104. k--;
  105. h=0;
  106. }
  107.  
  108. tab[k]=tab[*i];
  109. }
  110.  
  111. for (m=0;m<*i;m++) {
  112. tab[m].id = 100 + m;
  113. }
  114.  
  115. //wyswietlanie wpisow
  116. printf("\nksiazka adresowa\n");
  117. for (j = 0; j < *i; j++)
  118. {
  119. printf("id: %d \n", tab[j].id);
  120. printf("%s", tab[j].imie);
  121. if (tab[j].drugie_imie[0] != 45) {
  122. printf(" %s", tab[j].drugie_imie);
  123. }
  124. printf(" %s\n",tab[j].nazwisko);
  125. printf("ul.%s %d", tab[j].ulica, tab[j].nrlok);
  126. if (tab[j].nrzam != 0) {
  127. printf("/%d", tab[j].nrzam);
  128. }
  129. printf("\n%s %s \n%d\n", tab[j].nrpocz, tab[j].miasto, tab[j].nrtel);
  130. printf("****************\n");
  131. }
  132. }
  133.  
  134.  
  135. void usun_kontakt (int *i, struct osoba *tab) {
  136.  
  137. int b;
  138. printf("Podaj id pozycji, ktora chcesz usunac\n");
  139. while (!scanf("%d", &b)){
  140. usun_input ();
  141. printf("Blad danych. Sprobuj ponownie\n");
  142. }
  143. usun_input ();
  144. if (b-100<*i-1 && b>=100){
  145. tab[*i-1].id = tab[b-100].id;
  146. tab[b-100] = tab[*i-1];
  147. (*i)--;
  148. printf("Pozycja zostala usunieta\n\n");
  149. }
  150. else if (b-100==*i-1) {
  151. (*i)--;
  152. printf("Pozycja zostala usunieta\n\n");
  153. }
  154. else {
  155. printf("Nie ma pozycji o tym id\n\n");
  156. }
  157. }
  158.  
  159.  
  160.  
  161. int main(void)
  162. {
  163. 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},
  164. {102, "Pawel", "-", "Abacki", "Szeroka", 45, 17, "Krakow", "23-444", 123456543}, {103, "Ryszard", "Filip", "Ran", "Miodowa", 24, 76, "Szczecin", "12-123", 987656789},
  165. {104, "Kamil", "-", "Rura", "Fiolkowa", 44, 17, "Warszawa", "02-133", 999777555}};
  166. int a, i=5;
  167. int *wsk = &i;
  168.  
  169.  
  170. while (1) {
  171. printf("Co chcesz zrobic? (Podaj numer opcji)\n 1) Dodac nowy kontakt \n 2) Wyswietlic wszystkie kontakty\n");
  172. printf(" 3) Usunac kontakt\n 4) Zakonczyc program\n\n");
  173. if (!scanf("%d", &a)) {
  174. printf("\nBlad danych \n");
  175. }
  176. usun_input ();
  177. if (a==1) {
  178. dodaj_nowy(wsk, kontakty);
  179. }
  180. else if (a==2) {
  181. pokaz_kontakty (wsk, kontakty);
  182. }
  183. else if (a==3) {
  184. usun_kontakt (wsk, kontakty);
  185. }
  186. else if (a==4) {
  187. break;
  188. }
  189. else {
  190. printf("\nBrak opcji pod tym numerem\n\n");
  191. }
  192. }
  193. return (0);
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement