Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <tgmath.h>
- #include <stdlib.h>
- #include <time.h>
- #include <locale.h>
- #include <math.h>
- void Exit(void) {
- int exit = 0;
- while (exit != 1) {
- printf(" Nacisnij 1 aby wyjsc :");
- if (!scanf(" %d", &exit)) {
- while ('\n' != getchar());
- printf(" Nie ma takiej opcji \n");
- }
- }
- }
- void Choose_wsp(float Wsp_fun[]) {
- system("cls");
- printf(" Podaj wspolczynniki funkcji: \n");
- float x;
- int wait = 0;
- while (wait < 3) {
- wait = 0;
- for (int i = 0; i < 3; i++) {
- printf(" %d: ", (i + 1));
- if (!scanf(" %f", &x) || x < -10000 || x > 10000) {
- while ('\n' != getchar());
- printf("Blednie wprowadzone wartosci \n");
- i = 3;
- Exit();
- }
- else {
- Wsp_fun[i] = x;
- wait++;
- }
- }
- }
- }
- void Choose_field(float Field[]) {
- system("cls");
- float x;
- int wait = 1;
- while (wait == 1) {
- printf(" Podaj dziedzine funkcji: \n Wartosc poczatkowa dziedziny: \n ");
- if (!scanf(" %f", &x) || x < -10000 || x > 10000) {
- while ('\n' != getchar());
- printf(" Blednie wprowadzone wartosci \n");
- Exit();
- }
- else {
- Field[0] = x;
- printf(" Wartosc koncowa dziedziny: \n ");
- if (!scanf(" %f", &x) || Field[0] > x || x < -10000 || x > 10000) {
- while ('\n' != getchar());
- printf(" Blednie wprowadzone wartosci \n");
- Exit();
- }
- else {
- Field[1] = x;
- wait = 0;
- }
- }
- }
- }
- int Choose_results_number(void) {
- int results_number;
- system("cls");
- printf(" Wybierz ilosc wynikow: \n ");
- while (1) {
- if (!scanf(" %d", &results_number) || results_number < 0 || results_number > 1000) {
- while ('\n' != getchar());
- printf(" Blednie wprowadzone wartosci \n ");
- Exit();
- }
- else
- return results_number;
- }
- }
- void Save_temp(float Result_array[], int results_number) {
- FILE* f_temp;
- f_temp = fopen("temp.CSV", "w");
- if (f_temp == NULL) {
- printf(" Nie mozna utworzyc pliku \n");
- Exit();
- }
- else {
- for (int i = 0; i < results_number; i++)
- fprintf(f_temp, "%f \n", Result_array[i]);
- fclose(f_temp);
- }
- }
- void Generate_results(void) {
- float Wsp_fun[3];
- float Field[2];
- int results_number;
- results_number = Choose_results_number();
- float* Result_array = malloc(results_number * sizeof(float));
- Choose_wsp(Wsp_fun);
- Choose_field(Field);
- float x = Field[0];
- for (int i = 0; i < results_number; i++) {
- float result = Wsp_fun[0] * sin(x + Wsp_fun[1]) * cos(x + Wsp_fun[2]);
- if (Result_array != NULL) {
- Result_array[i] = result;
- x = x + ((Field[0] - Field[1]) / results_number);
- }
- else {
- printf(" Blad pamieci \n");
- Exit();
- }
- }
- system("cls");
- if (Result_array != NULL) {
- for (int i = 0; i < results_number; i++) {
- printf(" Wynik %d: %f \n", (i + 1), Result_array[i]);
- }
- Save_temp(Result_array, results_number);
- free(Result_array);
- }
- else
- printf(" Blad pamieci \n");
- Exit();
- }
- void Load_file(float Result_array[], int menu) {
- FILE* f_temp;
- if (menu == 2)
- f_temp = fopen("temp.CSV", "r");
- else
- f_temp = fopen("results.CSV", "r");
- if (f_temp == NULL) {
- printf(" Blad wczytania pliku \n");
- Exit();
- }
- else {
- int i = 1;
- float temp = 0;
- while (fscanf(f_temp, "%f \n", &temp) != EOF) {
- if (Result_array != NULL) {
- Result_array[i - 1] = temp;
- i++;
- Result_array = realloc(Result_array, i * sizeof(float));
- }
- else{
- printf(" Blad pamieci \n");
- Exit();
- break;
- }
- }
- fclose(f_temp);
- }
- }
- int Check_number_of_results(int menu) {
- FILE* f_temp;
- float temp;
- int i = 0;
- if (menu == 2)
- f_temp = fopen("temp.CSV", "r");
- else
- f_temp = fopen("results.CSV", "r");
- if (f_temp == NULL) {
- printf(" Blad wczytania pliku \n");
- Exit();
- return 0;
- }
- else {
- while (fscanf(f_temp, "%f \n", &temp) != EOF) {
- i++;
- }
- if(i > 0)
- return i;
- else {
- printf(" Takie dane nie istnieja \n");
- Exit();
- return 0;
- }
- }
- }
- void Generate_disrupt(void) {
- int disrupt_chance = 47;
- int Menu[] = { 1, 2 };
- int error = 1, results_number, gmenu;
- srand(time(NULL));
- system("cls");
- while (error == 1) {
- printf(" Wybierz dane na ktorych bedziesz tworzyc zaklocenia: \n 1. Zapisane w pliku wynikowym \n 2. Stworzone w trakcie dzialania programu \n ");
- if (!scanf(" %d", &gmenu)) {
- while ('\n' != getchar());
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- for (int i = 0; i < 2; i++) { // Obsługa błędnie wprowadzonej opcji menu
- if (Menu[i] == gmenu)
- error = 0;
- }
- if (error == 1) {
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- results_number = Check_number_of_results(gmenu);
- float* Disrupt_array = malloc(results_number * sizeof(float));
- float* Result_array = malloc(results_number * sizeof(float));
- if (Result_array != NULL && Disrupt_array != NULL) {
- Load_file(Result_array, gmenu);
- for (int i = 0; i < results_number; i++)
- {
- int draw = rand() % 101;
- if (draw <= disrupt_chance) {
- float disrupt = (rand() % disrupt_chance) / 100.0;
- if (draw < (disrupt_chance / 2))
- Disrupt_array[i] = Result_array[i] - disrupt;
- else
- Disrupt_array[i] = Result_array[i] + disrupt;
- }
- else {
- Disrupt_array[i] = Result_array[i];
- }
- }
- for (int i = 0; i < results_number; i++) {
- Result_array[i] = Disrupt_array[i];
- }
- system("cls");
- for (int i = 0; i < results_number; i++) {
- printf(" Wynik %d: %f \n", (i + 1), Result_array[i]);
- }
- free(Disrupt_array);
- Save_temp(Result_array, results_number);
- free(Result_array);
- }
- else
- printf(" Blad pamieci \n");
- }
- }
- }
- Exit();
- }
- void filter(void) {
- int Menu[] = { 1, 2 };
- int error = 1, results_number, gmenu;
- system("cls");
- while (error == 1) {
- printf(" Wybierz dane na ktorych bedziesz filtrowac zaklocenia: \n 1. Zapisane w pliku wynikowym \n 2. Stworzone w trakcie dzialania programu \n ");
- if (!scanf(" %d", &gmenu)){ // Obsługa błędnie wprowadzonej opcji menu
- while ('\n' != getchar());
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- for (int i = 0; i < 2; i++) {
- if (Menu[i] == gmenu)
- error = 0;
- }
- if (error == 1) {
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- float Temp[3];
- results_number = Check_number_of_results(gmenu);
- float* Result_array = malloc(results_number * sizeof(float));
- if (Result_array != NULL) {
- Load_file(Result_array, gmenu);
- system("cls");
- printf(" Wybierz sposob filtrowania: \n 1. Filtrowanie medianowe \n 2. Filtrowanie sredniej ruchomej \n ");
- if (!scanf(" %d", &gmenu)) { // Obsługa błędnie wprowadzonej opcji menu
- while ('\n' != getchar());
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- for (int i = 0; i < 2; i++) {
- if (Menu[i] == gmenu)
- error = 0;
- }
- if (error == 1) {
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- if (gmenu == 1) {
- for (int i = 0; i < results_number; i++) {
- if (i == 0) {
- Temp[0] = Result_array[i];
- Temp[1] = Result_array[i];
- Temp[2] = Result_array[i + 1];
- }
- else {
- if (i == (results_number - 1)) {
- Temp[0] = Result_array[i - 1];
- Temp[1] = Result_array[i];
- Temp[2] = Result_array[i];
- }
- else {
- Temp[0] = Result_array[i - 1];
- Temp[1] = Result_array[i];
- Temp[2] = Result_array[i + 1];
- }
- }
- float temp; // Sortowanie bombelkowe
- for (int j = 0; j < 2; j++)
- {
- for (int k = 0; k < 2 - j; k++)
- {
- if (Temp[k] > Temp[k + 1])
- {
- temp = Temp[k + 1];
- Temp[k + 1] = Temp[k];
- Temp[k] = temp;
- }
- }
- }
- Result_array[i] = Temp[1];
- }
- }
- else {
- for (int i = 0; i < results_number; i++) {
- if (i == 0) {
- Temp[0] = Result_array[i];
- Temp[1] = Result_array[i];
- Temp[2] = Result_array[i + 1];
- }
- else {
- if (i == (results_number - 1)) {
- Temp[0] = Result_array[i - 1];
- Temp[1] = Result_array[i];
- Temp[2] = Result_array[i];
- }
- else {
- Temp[0] = Result_array[i - 1];
- Temp[1] = Result_array[i];
- Temp[2] = Result_array[i + 1];
- }
- }
- Result_array[i] = (((Temp[0] + Temp[1]) + Temp[2]) / 3.0);
- }
- }
- for (int l = 0; l < results_number; l++) {
- printf(" Wynik %d: %f \n", (l + 1), Result_array[l]);
- }
- Save_temp(Result_array, results_number);
- free(Result_array);
- }
- }
- }
- else
- printf(" Blad pamieci \n");
- }
- }
- }
- Exit();
- }
- void Save_file(void) {
- int results_number = Check_number_of_results(2);
- float* Results_array = malloc(results_number * sizeof(float));
- if (Results_array != NULL) {
- Load_file(Results_array, 2);
- FILE* f_results;
- f_results = fopen("results.CSV", "w");
- if (f_results == NULL) {
- printf("Nie mozna utworzyc pliku \n");
- Exit();
- exit(1);
- }
- for (int i = 0; i < results_number; i++)
- fprintf(f_results, "%f \n", Results_array[i]);
- free(Results_array);
- fclose(f_results);
- }
- else {
- printf(" Blad pamieci \n");
- Exit();
- }
- }
- void Check_results(void) {
- int results_number;
- int Menu[] = { 1, 2 };
- int error = 1, gmenu;
- system("cls");
- while (error == 1) {
- printf(" Wybierz dane ktore chcesz wczytac: \n 1. Zapisane w pliku wynikowym \n 2. Stworzone w trakcie dzialania programu \n ");
- if (!scanf(" %d", &gmenu)) { // Obsługa błędnie wprowadzonej opcji menu
- while ('\n' != getchar());
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- for (int i = 0; i < 2; i++) {
- if (Menu[i] == gmenu)
- error = 0;
- }
- if (error == 1) {
- printf(" Nie ma takiej opcji \n");
- Exit();
- }
- else {
- results_number = Check_number_of_results(gmenu);
- float* Result_array = malloc(results_number * sizeof(float));
- if (Result_array != NULL) {
- Load_file(Result_array, gmenu);
- for (int i = 0; i < results_number; i++)
- printf("%f \n", Result_array[i]);
- free(Result_array);
- }
- else {
- printf(" Blad pamieci \n");
- Exit();
- }
- }
- }
- }
- Exit();
- }
- int main() {
- //setlocale(LC_ALL, "polish_poland");
- int menu = 0, Menu[] = { 1, 2, 3, 4, 5, 6};
- int error = 1;
- while (menu != 6) {
- system("cls");
- 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 ");
- if (!scanf(" %d", &menu)) { // Obsługa błędnie wprowadzonej opcji menu
- while ('\n' != getchar());
- printf(" Nie ma takiej opcji \n");
- }
- else {
- for (int i = 0; i < 6; i++) {
- if (Menu[i] == menu)
- error = 0;
- }
- if (error == 1) {
- printf(" Nie ma takiej opcji menu \n");
- break;
- }
- else {
- switch (menu) { // Menu
- case 1: {
- // Generuj funkcję
- Generate_results();
- break;
- }
- case 2: {
- // Generuj zakłócenia
- Generate_disrupt();
- break;
- }
- case 3: {
- // Filtruj
- filter();
- break;
- }
- case 4: {
- // Zapisz
- Save_file();
- break;
- }
- case 5: {
- //Wczytaj
- Check_results();
- break;
- }
- case 6:
- break;
- default: {
- printf("Nie ma takiej opcji \n");
- break;
- }
- }
- }
- }
- }
- FILE* f_temp; // Czyszczenie pliku temp.csv
- f_temp = fopen("temp.CSV", "w");
- fclose(f_temp);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement