Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.34 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <math.h>
  5. #include <string.h>
  6. #include <time.h>
  7.  
  8. #pragma pack(1)
  9. typedef struct
  10. {
  11. char nazwapliku[25];
  12. int szerokosc;
  13. int wysokosc;
  14. int maxszar;
  15. int **tab;
  16. }obraz;
  17. void wczytajob(obraz* o)
  18. {
  19. FILE* plik;
  20. int x,y,v;
  21. char nazwa[25];
  22. char standl;
  23. int standc;
  24. int linijka;
  25. int wysokosc;
  26. do {
  27. printf("\nPodaj nazwę pliku, który chcesz wczytać:");
  28. scanf("%s", nazwa);
  29. plik = fopen(nazwa, "r");
  30. if (plik == NULL)
  31. {
  32. printf("\nTaki plik nie istnieje\n");
  33. printf("Wpisz ponownie nazwę pliku.\n");
  34. }
  35. } while (plik == NULL);
  36. for (x = 0; x < 25; x++)
  37. {
  38. o->nazwapliku[x] = nazwa[x];
  39. }
  40. fscanf(plik, "%c %d", &standl, &standc);
  41. if (standl != 'P' || standc != 2)
  42. {
  43. printf("Plik nie ma zadeklarowanego standardu P2.\n");
  44. return;
  45. }
  46. x = fgetc(plik);
  47. if (x == '#')
  48. {
  49. while (fgetc(plik) != '\n')
  50. {
  51. }
  52. }
  53. else
  54. {
  55. fseek(plik, -1, SEEK_CUR);
  56. }
  57. fscanf(plik,"%d", &o->szerokosc);
  58. x = fgetc(plik);
  59. if (x == '#')
  60. {
  61. while (fgetc(plik) != '\n')
  62. {
  63. }
  64. }
  65. else
  66. {
  67. fseek(plik, -1, SEEK_CUR);
  68. }
  69. fscanf(plik,"%d", &o->wysokosc);
  70. o->tab= calloc(o->wysokosc, sizeof(int));
  71. if (o->tab != NULL)
  72. {
  73. for (x = 0; x < o->wysokosc; x++)
  74. {
  75. o->tab[x] = calloc(o->szerokosc, sizeof(int));
  76. if (o->tab[x] == 0)
  77. {
  78. exit(1);
  79. }
  80. }
  81. }
  82. else
  83. {
  84. exit(1);
  85. }
  86. x = fgetc(plik);
  87. if (x == '#')
  88. {
  89. while (fgetc(plik) !='\n')
  90. {
  91. }
  92. }
  93. linijka = o->szerokosc;
  94. wysokosc = o->wysokosc;
  95. x=0;
  96. y=0;
  97. x = fgetc(plik);
  98. if (x == '#')
  99. {
  100. while (fgetc(plik) != '\n')
  101. {
  102. }
  103. }
  104. fscanf(plik, "%d", &o->maxszar);
  105. for (x = 0; x <wysokosc; ++x)
  106. {
  107. for (y = 0; y < linijka; ++y)
  108. {
  109. if (fscanf(plik, "%d", &o->tab[x][y]) == 1)
  110. {
  111. fseek(plik, 1, SEEK_CUR);
  112. }
  113. else
  114. {
  115. v = fgetc(plik);
  116. if (v == '#')
  117. {
  118. while (fgetc(plik) != '\n')
  119. {
  120. }
  121. }
  122. }
  123. }
  124. }
  125. printf("\nUdało się wczytać plik.\n");
  126. fclose(plik);
  127.  
  128. }
  129. void wypisz(obraz *o)
  130. {
  131. int x, y;
  132. for (x = 0; x <o->wysokosc; ++x)
  133. {
  134. for (y = 0; y < o->szerokosc; ++y)
  135. {
  136. printf("%d ", o->tab[x][y]);
  137. }
  138. printf("\n");
  139. }
  140. }
  141. void menu()
  142. {
  143. printf("[1] Wczytaj obraz\n");
  144. printf("[2] Wyświetl wczytane obrazy\n");
  145. printf("[3] Wybierz obraz do przetwarzania\n");
  146. printf("[4] Usuń obraz\n");
  147. }
  148. void SprawdzInt(int*x)
  149. {
  150. int i;
  151. char k;
  152. i = scanf("%d", x);
  153. while (i != 1)
  154. {
  155. k = getchar();
  156. printf("\nPodaj liczbe!\n");
  157. i = scanf("%d", x);
  158. }
  159. }
  160. void wyswietl(obraz* obrazki, int liczbaobrazkow)
  161. {
  162. int i = 0;
  163. if (liczbaobrazkow != 0)
  164. {
  165. printf("\nWczytane obrazy:\n");
  166. for (i = 0; i < liczbaobrazkow; i++)
  167. {
  168. printf("[%d] %s\n", i + 1, obrazki[i].nazwapliku);
  169. }
  170. }
  171. else
  172. {
  173. printf("\nNie wczytano żadnego obrazu\n");
  174. }
  175. }
  176. int wybieranie(obraz* obrazki,int liczbaobrazkow)
  177. {
  178. int wybrany;
  179. wyswietl(obrazki, liczbaobrazkow);
  180. printf("Wybierz obraz");
  181. do {
  182. scanf("%d", &wybrany);
  183. SprawdzInt(&wybrany);
  184. if (wybrany > liczbaobrazkow || wybrany < 1)
  185. {
  186. printf("\nWybierz sensowniejszą opcję");
  187. wybrany = liczbaobrazkow + 1;
  188. }
  189. } while (wybrany > liczbaobrazkow);
  190. return wybrany;
  191. }
  192. void Usun(obraz* obrazki, int* liczbaobrazkow)
  193. {
  194. int usun;
  195. int i;
  196. wyswietl(obrazki, *liczbaobrazkow);
  197. printf("Wybierz obraz do usuniecia");
  198. do {
  199. scanf("%d", &usun);
  200. SprawdzInt(&usun);
  201. if (usun > *liczbaobrazkow || usun < 1)
  202. {
  203. printf("\nWybierz sensowniejszą opcję");
  204. usun = *liczbaobrazkow + 1;
  205. }
  206. } while (usun > *liczbaobrazkow);
  207. usun--;
  208. for (i = usun; i < *liczbaobrazkow-1; i++)
  209. {
  210. obrazki[i] = obrazki[i + 1];
  211. }
  212. *liczbaobrazkow--;
  213. }
  214. int main()
  215. {
  216. obraz obrazki[100];
  217. int liczbaobrazkow = 0;
  218. int wybrany;
  219. int zmenu;
  220. setlocale( LC_ALL, "polish_poland" );
  221. srand(time(NULL));
  222. while (1)
  223. {
  224. do {
  225. menu();
  226. scanf("%d", &zmenu);
  227. SprawdzInt(&zmenu);
  228. switch (zmenu)
  229. {
  230. case 1:
  231. {
  232. wczytajob(&obrazki[liczbaobrazkow]);
  233. liczbaobrazkow++;
  234. break;
  235. }
  236. case 2:
  237. {
  238. wyswietl(obrazki,liczbaobrazkow);
  239. break;
  240. }
  241. case 3:
  242. {
  243. wybrany = wybieranie(obrazki,liczbaobrazkow);
  244. }
  245. case 4:
  246. {
  247. Usun(obrazki,&liczbaobrazkow);
  248. }
  249. }
  250. } while (0 < zmenu && zmenu < 5);
  251. }
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement