Advertisement
soulrpg

lekcja_C_3

Apr 24th, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.66 KB | None | 0 0
  1. // Wsk_funkcji.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
  2. //
  3.  
  4. #include "pch.h"
  5. #include <stdio.h>
  6. #include <math.h>
  7.  
  8. double maximum(double T[], int wielkosc)
  9. {
  10.     printf("maximum: ");
  11.     double l_maximum = 0;
  12.     for (int i = 0; i < wielkosc; i++)
  13.     {
  14.         if (l_maximum < T[i])
  15.         {
  16.             l_maximum = T[i];
  17.         }
  18.     }
  19.     return l_maximum;
  20. }
  21.  
  22. double minimum(double T[], int wielkosc)
  23. {
  24.     printf("manimum: ");
  25.     double l_minimum = T[0];
  26.     for (int i = 0; i < wielkosc; i++)
  27.     {
  28.         if (l_minimum > T[i])
  29.         {
  30.             l_minimum = T[i];
  31.         }
  32.     }
  33.     return l_minimum;
  34. }
  35.  
  36. double srednia(double T[], int wielkosc)
  37. {
  38.     printf("srednia: ");
  39.     double l_srednia = 0;
  40.     for (int i = 0; i < wielkosc; i++)
  41.     {
  42.         l_srednia += T[i];
  43.     }
  44.     return l_srednia / wielkosc;
  45. }
  46.  
  47. void z6_5()
  48. {
  49.     double *T;
  50.     int n;
  51.     int akcja = 0;
  52.     bool wyjscie = false;
  53.     double(*TF[])(double *, int) = { maximum, minimum, srednia };
  54.     printf("Podaj wielkosc tablicy:\n");
  55.     scanf_s("%d", &n);
  56.     T = new double[n];
  57.     for (int i = 0; i < n; i++)
  58.     {
  59.         printf("Podaj element %d tablicy: ", i);
  60.         scanf_s("%lf", &T[i]);
  61.     }
  62.     while (!wyjscie)
  63.     {
  64.         printf("Wybierz funkcje[ 0-max, 1-min, 2-srednia]:");
  65.         scanf_s("%d", &akcja);
  66.         if (akcja > 2 || akcja < 0)
  67.         {
  68.             wyjscie = true;
  69.         }
  70.         else
  71.         {
  72.             printf("%lf\n", TF[akcja](T, n));
  73.         }
  74.     }
  75. }
  76.  
  77. struct seria
  78. {
  79.     int numer_serii;
  80.     double pomiar[4];
  81.     int kod_przetwarzania;
  82. };
  83.  
  84. double maks_pomiar(double p[])
  85. {
  86.     double m = 0;
  87.     for (int i = 0; i < 4; i++)
  88.     {
  89.         if (m < p[i])
  90.         {
  91.             m = p[i];
  92.         }
  93.     }
  94.     return m;
  95. }
  96.  
  97. double min_pomiar(double p[])
  98. {
  99.     double m = p[0];
  100.     for (int i = 0; i < 4; i++)
  101.     {
  102.         if (m > p[i])
  103.         {
  104.             m = p[i];
  105.         }
  106.     }
  107.     return m;
  108. }
  109.  
  110. double sr_pomiar(double p[])
  111. {
  112.     double sr = 0;
  113.     for (int i = 0; i < 4; i++)
  114.     {
  115.         sr += p[i];
  116.     }
  117.     return sr / 4;
  118. }
  119.  
  120. void z7_8()
  121. {
  122.     FILE* plik_odczyt;
  123.     FILE* plik_zapis;
  124.     seria *tablica;
  125.     double(*TF[])(double *) = { sr_pomiar, min_pomiar, maks_pomiar };
  126.     int ilosc;
  127.     int licznik = 0;
  128.     fopen_s(&plik_odczyt, "Pomiary.txt", "r");
  129.     fopen_s(&plik_zapis, "Wyniki.txt", "a");
  130.     fscanf_s(plik_odczyt, "%d", &ilosc);
  131.     tablica = new seria[ilosc];
  132.     while (licznik < ilosc)
  133.     {
  134.         printf("wczytuje\n");
  135.         fscanf_s(plik_odczyt, "%d %lf %lf %lf %lf %d", &tablica[licznik].numer_serii, &tablica[licznik].pomiar[0], &tablica[licznik].pomiar[1], &tablica[licznik].pomiar[2], &tablica[licznik].pomiar[3], &tablica[licznik].kod_przetwarzania);
  136.         licznik++;
  137.     }
  138.     for (int i = 0; i < ilosc; i++)
  139.     {
  140.         double wynik = TF[tablica[i].kod_przetwarzania](tablica[i].pomiar);
  141.         fprintf(plik_zapis, "%d %lf %d\n", tablica[i].numer_serii, wynik, tablica[i].kod_przetwarzania);
  142.     }
  143.     fclose(plik_odczyt);
  144.     fclose(plik_zapis);
  145. }
  146.  
  147. char vchar()
  148. {
  149.     char cc;
  150.     while ((cc = getchar()) <= ' ');
  151.     return cc;
  152. }
  153.  
  154. double sinus(double x, bool &ok)
  155. {
  156.     if (x > 1 || x < -1)
  157.     {
  158.         ok = false;
  159.     }
  160.     else
  161.     {
  162.         return ma
  163.     }
  164. }
  165.  
  166. void z3_2()
  167. {
  168.     char akcja;
  169.     char dzialanie;
  170.     double x;
  171.     double wynik;
  172.     double(*TF[])(double, bool) = { sinus, tangens, pierwiastek, logarytm };
  173.     bool wyjscie = false;
  174.     bool czy_dobra_wartosc = true;
  175.     printf("Wybierz akcje [n]-nowa liczba, [f]-funkcja, [q]-wyjscie:");
  176.     akcja = vchar();
  177.     akcja &= 0x5F;
  178.     while (!wyjscie)
  179.     {
  180.         switch (akcja)
  181.         {
  182.         case 'N':
  183.             printf("Podaj liczbe:");
  184.             scanf_s("%lf", &x);
  185.             break;
  186.         case 'F':
  187.             printf("Wybierz dzialanie (0-sinus, 1-tangens, 2-pierwiatek, 3-logarytm):");
  188.             scanf_s("%d". &dzialanie)
  189.             double wynik = TF[dzialanie](x, czy_dobra_wartosc);
  190.             if (czy_dobra_wartosc == true)
  191.             {
  192.                 printf("Wynik: %d\n", wynik);
  193.             }
  194.             else
  195.             {
  196.                 printf("Blad! Podano liczbe, ktora nie jest w dziedzinie funkcji!\n");
  197.             }
  198.             break;
  199.         case 'Q':
  200.             wyjscie = true;
  201.             break;
  202.         }
  203.     }
  204.    
  205. }
  206.  
  207. int main()
  208. {
  209.     // z6_5();
  210.     //z7_8();
  211.     z3_2();
  212.     return 0;
  213. }
  214.  
  215. // Uruchomienie programu: Ctrl + F5 lub menu Debugowanie > Uruchom bez debugowania
  216. // Debugowanie programu: F5 lub menu Debugowanie > Rozpocznij debugowanie
  217.  
  218. // Porady dotyczące rozpoczynania pracy:
  219. //   1. Użyj okna Eksploratora rozwiązań, aby dodać pliki i zarządzać nimi
  220. //   2. Użyj okna programu Team Explorer, aby nawiązać połączenie z kontrolą źródła
  221. //   3. Użyj okna Dane wyjściowe, aby sprawdzić dane wyjściowe kompilacji i inne komunikaty
  222. //   4. Użyj okna Lista błędów, aby zobaczyć błędy
  223. //   5. Wybierz pozycję Projekt > Dodaj nowy element, aby utworzyć nowe pliki kodu, lub wybierz pozycję Projekt > Dodaj istniejący element, aby dodać istniejące pliku kodu do projektu
  224. //   6. Aby w przyszłości ponownie otworzyć ten projekt, przejdź do pozycji Plik > Otwórz > Projekt i wybierz plik sln
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement