Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.90 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <tgmath.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7. #include <locale.h>
  8. #include <math.h>
  9.  
  10. void Exit(void) {
  11. int exit = 0;
  12. while (exit != 1) {
  13. printf(" Nacisnij 1 aby wyjsc :");
  14. if (!scanf(" %d", &exit)) {
  15. while ('\n' != getchar());
  16. printf(" Nie ma takiej opcji \n");
  17. }
  18. }
  19. }
  20.  
  21. void Choose_wsp(float Wsp_fun[]) {
  22. system("cls");
  23. printf(" Podaj wspolczynniki funkcji: \n");
  24. float x;
  25. int wait = 0;
  26.  
  27. while (wait < 3) {
  28. wait = 0;
  29. for (int i = 0; i < 3; i++) {
  30. printf(" %d: ", (i + 1));
  31. if (!scanf(" %f", &x) || x < -10000 || x > 10000) {
  32. while ('\n' != getchar());
  33. printf("Blednie wprowadzone wartosci \n");
  34. i = 3;
  35. Exit();
  36. }
  37. else {
  38. Wsp_fun[i] = x;
  39. wait++;
  40. }
  41. }
  42. }
  43. }
  44.  
  45. void Choose_field(float Field[]) {
  46. system("cls");
  47. float x;
  48. int wait = 1;
  49.  
  50. while (wait == 1) {
  51. printf(" Podaj dziedzine funkcji: \n Wartosc poczatkowa dziedziny: \n ");
  52. if (!scanf(" %f", &x) || x < -10000 || x > 10000) {
  53. while ('\n' != getchar());
  54. printf(" Blednie wprowadzone wartosci \n");
  55. Exit();
  56. }
  57. else {
  58. Field[0] = x;
  59. printf(" Wartosc koncowa dziedziny: \n ");
  60. if (!scanf(" %f", &x) || Field[0] > x || x < -10000 || x > 10000) {
  61. while ('\n' != getchar());
  62. printf(" Blednie wprowadzone wartosci \n");
  63. Exit();
  64. }
  65. else {
  66. Field[1] = x;
  67. wait = 0;
  68. }
  69. }
  70. }
  71. }
  72.  
  73. int Choose_results_number(void) {
  74. int results_number;
  75. system("cls");
  76.  
  77. printf(" Wybierz ilosc wynikow: \n ");
  78. while (1) {
  79. if (!scanf(" %d", &results_number) || results_number < 0 || results_number > 1000) {
  80. while ('\n' != getchar());
  81. printf(" Blednie wprowadzone wartosci \n ");
  82. Exit();
  83. }
  84. else
  85. return results_number;
  86. }
  87. }
  88.  
  89. void Save_temp(float Result_array[], int results_number) {
  90. FILE* f_temp;
  91. f_temp = fopen("temp.CSV", "w");
  92. if (f_temp == NULL) {
  93. printf(" Nie mozna utworzyc pliku \n");
  94. Exit();
  95. }
  96. else {
  97. for (int i = 0; i < results_number; i++)
  98. fprintf(f_temp, "%f \n", Result_array[i]);
  99.  
  100. fclose(f_temp);
  101. }
  102. }
  103.  
  104. void Generate_results(void) {
  105. float Wsp_fun[3];
  106. float Field[2];
  107. int results_number;
  108.  
  109. results_number = Choose_results_number();
  110. float* Result_array = malloc(results_number * sizeof(float));
  111.  
  112. Choose_wsp(Wsp_fun);
  113. Choose_field(Field);
  114.  
  115. float x = Field[0];
  116. for (int i = 0; i < results_number; i++) {
  117. float result = Wsp_fun[0] * sin(x + Wsp_fun[1]) * cos(x + Wsp_fun[2]);
  118. if (Result_array != NULL) {
  119. Result_array[i] = result;
  120. x = x + ((Field[0] - Field[1]) / results_number);
  121. }
  122. else {
  123. printf(" Blad pamieci \n");
  124. Exit();
  125. }
  126. }
  127. system("cls");
  128. if (Result_array != NULL) {
  129. for (int i = 0; i < results_number; i++) {
  130. printf(" Wynik %d: %f \n", (i + 1), Result_array[i]);
  131. }
  132. Save_temp(Result_array, results_number);
  133. free(Result_array);
  134. }
  135. else
  136. printf(" Blad pamieci \n");
  137. Exit();
  138. }
  139.  
  140. void Load_file(float Result_array[], int menu) {
  141. FILE* f_temp;
  142. if (menu == 2)
  143. f_temp = fopen("temp.CSV", "r");
  144. else
  145. f_temp = fopen("results.CSV", "r");
  146.  
  147.  
  148. if (f_temp == NULL) {
  149. printf(" Blad wczytania pliku \n");
  150. Exit();
  151. }
  152. else {
  153. int i = 1;
  154. float temp = 0;
  155. while (fscanf(f_temp, "%f \n", &temp) != EOF) {
  156. if (Result_array != NULL) {
  157. Result_array[i - 1] = temp;
  158. i++;
  159. Result_array = realloc(Result_array, i * sizeof(float));
  160. }
  161. else{
  162. printf(" Blad pamieci \n");
  163. Exit();
  164. break;
  165. }
  166. }
  167. fclose(f_temp);
  168. }
  169. }
  170.  
  171. int Check_number_of_results(int menu) {
  172. FILE* f_temp;
  173. float temp;
  174. int i = 0;
  175.  
  176. if (menu == 2)
  177. f_temp = fopen("temp.CSV", "r");
  178. else
  179. f_temp = fopen("results.CSV", "r");
  180.  
  181. if (f_temp == NULL) {
  182. printf(" Blad wczytania pliku \n");
  183. Exit();
  184. return 0;
  185. }
  186. else {
  187. while (fscanf(f_temp, "%f \n", &temp) != EOF) {
  188. i++;
  189. }
  190. if(i > 0)
  191. return i;
  192. else {
  193. printf(" Takie dane nie istnieja \n");
  194. Exit();
  195. return 0;
  196. }
  197. }
  198. }
  199.  
  200. void Generate_disrupt(void) {
  201. int disrupt_chance = 47;
  202. int Menu[] = { 1, 2 };
  203. int error = 1, results_number, gmenu;
  204.  
  205. srand(time(NULL));
  206.  
  207. system("cls");
  208. while (error == 1) {
  209. printf(" Wybierz dane na ktorych bedziesz tworzyc zaklocenia: \n 1. Zapisane w pliku wynikowym \n 2. Stworzone w trakcie dzialania programu \n ");
  210. if (!scanf(" %d", &gmenu)) {
  211. while ('\n' != getchar());
  212. printf(" Nie ma takiej opcji \n");
  213. Exit();
  214. }
  215. else {
  216. for (int i = 0; i < 2; i++) { // Obsługa błędnie wprowadzonej opcji menu
  217. if (Menu[i] == gmenu)
  218. error = 0;
  219. }
  220. if (error == 1) {
  221. printf(" Nie ma takiej opcji \n");
  222. Exit();
  223. }
  224. else {
  225. results_number = Check_number_of_results(gmenu);
  226. float* Disrupt_array = malloc(results_number * sizeof(float));
  227. float* Result_array = malloc(results_number * sizeof(float));
  228.  
  229. if (Result_array != NULL && Disrupt_array != NULL) {
  230. Load_file(Result_array, gmenu);
  231. for (int i = 0; i < results_number; i++)
  232. {
  233. int draw = rand() % 101;
  234. if (draw <= disrupt_chance) {
  235. float disrupt = (rand() % disrupt_chance) / 100.0;
  236. if (draw < (disrupt_chance / 2))
  237. Disrupt_array[i] = Result_array[i] - disrupt;
  238. else
  239. Disrupt_array[i] = Result_array[i] + disrupt;
  240. }
  241. else {
  242. Disrupt_array[i] = Result_array[i];
  243. }
  244. }
  245. for (int i = 0; i < results_number; i++) {
  246. Result_array[i] = Disrupt_array[i];
  247. }
  248. system("cls");
  249. for (int i = 0; i < results_number; i++) {
  250. printf(" Wynik %d: %f \n", (i + 1), Result_array[i]);
  251. }
  252. free(Disrupt_array);
  253. Save_temp(Result_array, results_number);
  254. free(Result_array);
  255. }
  256. else
  257. printf(" Blad pamieci \n");
  258. }
  259. }
  260. }
  261. Exit();
  262. }
  263.  
  264. void filter(void) {
  265. int Menu[] = { 1, 2 };
  266. int error = 1, results_number, gmenu;
  267.  
  268. system("cls");
  269. while (error == 1) {
  270. printf(" Wybierz dane na ktorych bedziesz filtrowac zaklocenia: \n 1. Zapisane w pliku wynikowym \n 2. Stworzone w trakcie dzialania programu \n ");
  271. if (!scanf(" %d", &gmenu)){ // Obsługa błędnie wprowadzonej opcji menu
  272. while ('\n' != getchar());
  273. printf(" Nie ma takiej opcji \n");
  274. Exit();
  275. }
  276. else {
  277. for (int i = 0; i < 2; i++) {
  278. if (Menu[i] == gmenu)
  279. error = 0;
  280. }
  281. if (error == 1) {
  282. printf(" Nie ma takiej opcji \n");
  283. Exit();
  284. }
  285. else {
  286. float Temp[3];
  287. results_number = Check_number_of_results(gmenu);
  288. float* Result_array = malloc(results_number * sizeof(float));
  289.  
  290. if (Result_array != NULL) {
  291. Load_file(Result_array, gmenu);
  292.  
  293. system("cls");
  294. printf(" Wybierz sposob filtrowania: \n 1. Filtrowanie medianowe \n 2. Filtrowanie sredniej ruchomej \n ");
  295. if (!scanf(" %d", &gmenu)) { // Obsługa błędnie wprowadzonej opcji menu
  296. while ('\n' != getchar());
  297. printf(" Nie ma takiej opcji \n");
  298. Exit();
  299. }
  300. else {
  301. for (int i = 0; i < 2; i++) {
  302. if (Menu[i] == gmenu)
  303. error = 0;
  304. }
  305. if (error == 1) {
  306. printf(" Nie ma takiej opcji \n");
  307. Exit();
  308. }
  309. else {
  310. if (gmenu == 1) {
  311. for (int i = 0; i < results_number; i++) {
  312. if (i == 0) {
  313. Temp[0] = Result_array[i];
  314. Temp[1] = Result_array[i];
  315. Temp[2] = Result_array[i + 1];
  316. }
  317. else {
  318. if (i == (results_number - 1)) {
  319. Temp[0] = Result_array[i - 1];
  320. Temp[1] = Result_array[i];
  321. Temp[2] = Result_array[i];
  322. }
  323. else {
  324. Temp[0] = Result_array[i - 1];
  325. Temp[1] = Result_array[i];
  326. Temp[2] = Result_array[i + 1];
  327. }
  328. }
  329.  
  330. float temp; // Sortowanie bombelkowe
  331. for (int j = 0; j < 2; j++)
  332. {
  333. for (int k = 0; k < 2 - j; k++)
  334. {
  335. if (Temp[k] > Temp[k + 1])
  336. {
  337. temp = Temp[k + 1];
  338. Temp[k + 1] = Temp[k];
  339. Temp[k] = temp;
  340. }
  341. }
  342. }
  343.  
  344. Result_array[i] = Temp[1];
  345. }
  346. }
  347. else {
  348. for (int i = 0; i < results_number; i++) {
  349. if (i == 0) {
  350. Temp[0] = Result_array[i];
  351. Temp[1] = Result_array[i];
  352. Temp[2] = Result_array[i + 1];
  353. }
  354. else {
  355. if (i == (results_number - 1)) {
  356. Temp[0] = Result_array[i - 1];
  357. Temp[1] = Result_array[i];
  358. Temp[2] = Result_array[i];
  359. }
  360. else {
  361. Temp[0] = Result_array[i - 1];
  362. Temp[1] = Result_array[i];
  363. Temp[2] = Result_array[i + 1];
  364. }
  365. }
  366.  
  367. Result_array[i] = (((Temp[0] + Temp[1]) + Temp[2]) / 3.0);
  368. }
  369. }
  370. for (int l = 0; l < results_number; l++) {
  371. printf(" Wynik %d: %f \n", (l + 1), Result_array[l]);
  372. }
  373. Save_temp(Result_array, results_number);
  374. free(Result_array);
  375. }
  376. }
  377. }
  378. else
  379. printf(" Blad pamieci \n");
  380. }
  381. }
  382. }
  383. Exit();
  384. }
  385.  
  386. void Save_file(void) {
  387. int results_number = Check_number_of_results(2);
  388. float* Results_array = malloc(results_number * sizeof(float));
  389.  
  390. if (Results_array != NULL) {
  391. Load_file(Results_array, 2);
  392. FILE* f_results;
  393. f_results = fopen("results.CSV", "w");
  394. if (f_results == NULL) {
  395. printf("Nie mozna utworzyc pliku \n");
  396. Exit();
  397. exit(1);
  398. }
  399.  
  400. for (int i = 0; i < results_number; i++)
  401. fprintf(f_results, "%f \n", Results_array[i]);
  402.  
  403. free(Results_array);
  404. fclose(f_results);
  405. }
  406. else {
  407. printf(" Blad pamieci \n");
  408. Exit();
  409. }
  410. }
  411.  
  412. void Check_results(void) {
  413. int results_number;
  414. int Menu[] = { 1, 2 };
  415. int error = 1, gmenu;
  416.  
  417. system("cls");
  418. while (error == 1) {
  419. printf(" Wybierz dane ktore chcesz wczytac: \n 1. Zapisane w pliku wynikowym \n 2. Stworzone w trakcie dzialania programu \n ");
  420. if (!scanf(" %d", &gmenu)) { // Obsługa błędnie wprowadzonej opcji menu
  421. while ('\n' != getchar());
  422. printf(" Nie ma takiej opcji \n");
  423. Exit();
  424. }
  425. else {
  426. for (int i = 0; i < 2; i++) {
  427. if (Menu[i] == gmenu)
  428. error = 0;
  429. }
  430. if (error == 1) {
  431. printf(" Nie ma takiej opcji \n");
  432. Exit();
  433. }
  434. else {
  435. results_number = Check_number_of_results(gmenu);
  436. float* Result_array = malloc(results_number * sizeof(float));
  437. if (Result_array != NULL) {
  438. Load_file(Result_array, gmenu);
  439.  
  440. for (int i = 0; i < results_number; i++)
  441. printf("%f \n", Result_array[i]);
  442.  
  443. free(Result_array);
  444. }
  445. else {
  446. printf(" Blad pamieci \n");
  447. Exit();
  448. }
  449. }
  450. }
  451. }
  452. Exit();
  453. }
  454.  
  455. int main() {
  456. //setlocale(LC_ALL, "polish_poland");
  457. int menu = 0, Menu[] = { 1, 2, 3, 4, 5, 6};
  458. int error = 1;
  459.  
  460. while (menu != 6) {
  461. system("cls");
  462. printf(" ------------------------ \n Wybierz opcje menu \n 1. Generuj funkcje \n 2. Generuj Szum \n 3. Filtruj \n 4. Zapisz \n 5. Wczytaj \n 6. Wyjdz \n ");
  463. if (!scanf(" %d", &menu)) { // Obsługa błędnie wprowadzonej opcji menu
  464. while ('\n' != getchar());
  465. printf(" Nie ma takiej opcji \n");
  466. }
  467. else {
  468. for (int i = 0; i < 6; i++) {
  469. if (Menu[i] == menu)
  470. error = 0;
  471. }
  472. if (error == 1) {
  473. printf(" Nie ma takiej opcji menu \n");
  474. break;
  475. }
  476. else {
  477.  
  478. switch (menu) { // Menu
  479. case 1: {
  480. // Generuj funkcję
  481. Generate_results();
  482. break;
  483. }
  484. case 2: {
  485. // Generuj zakłócenia
  486. Generate_disrupt();
  487. break;
  488. }
  489. case 3: {
  490. // Filtruj
  491. filter();
  492. break;
  493. }
  494. case 4: {
  495. // Zapisz
  496. Save_file();
  497. break;
  498. }
  499. case 5: {
  500. //Wczytaj
  501. Check_results();
  502. break;
  503. }
  504. case 6:
  505. break;
  506. default: {
  507. printf("Nie ma takiej opcji \n");
  508. break;
  509. }
  510. }
  511. }
  512. }
  513. }
  514. FILE* f_temp; // Czyszczenie pliku temp.csv
  515. f_temp = fopen("temp.CSV", "w");
  516. fclose(f_temp);
  517. return 0;
  518. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement