Talar97

[JPO] Powtorka egzamin 2

Jun 25th, 2018
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <limits.h>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. //Prototypy
  9. void WyborZadania();
  10. void wyswietl(int * tab, int n);
  11. void wyswietlDouble(double * tab, int n);
  12. int oblicz1A(int * tab, int ileElementow, int liczba);
  13. int oblicz1B(int * tab, int ileElementow, int liczba);
  14. double minMaks( double * tab, int ileElementow, bool liczMin );
  15. double wariancja(double * tab, int ileElementow);
  16. int kopiujPowyzejSredniej(int * kopia, int * tab, int ileElementow);
  17. int ileWystapienZnakuWNapisie(char z, char * napis);
  18. char najczesciejWystepujacaLitera(char * napis);
  19. bool jestPalindromem(char * napis);
  20. bool mozeBycPalindromem(char * napis);
  21. int kopiujZZamiana( char * d, char * z);
  22. int kopiujMaleLiter( char * d, char * z);
  23.  
  24.  
  25. int main() {
  26.     WyborZadania();
  27.     return EXIT_SUCCESS;
  28. }
  29.  
  30. void wyswietl(int * tab, int n){
  31.     for(int i = 0; i < n; i++) cout << tab[i] << ", ";
  32. }
  33.  
  34. void wyswietlDouble(double * tab, int n){
  35.     for(int i = 0; i < n; i++) cout << tab[i] << ", ";
  36. }
  37.  
  38. //Zad 1A
  39. int oblicz1A(int * tab, int ileElementow, int liczba){
  40.     int wynik = 0;
  41.     for(int i = 0; i < ileElementow; i++){
  42.         if(*tab > liczba) wynik++;
  43.         else if(*tab < liczba) *tab = 0;
  44.         tab++;
  45.     }
  46.    
  47.     return wynik;
  48. }
  49.  
  50. //Zad 1B
  51. int oblicz1B(int *tab, int ileElementow, int liczba){
  52.     int wynik = 0;
  53.     for(int i = 0; i < ileElementow; i++){
  54.         if(*tab < liczba) wynik += *tab;
  55.         else if(*tab > liczba) *tab = 0;
  56.         tab++;
  57.     }
  58.    
  59.     return wynik;
  60. }
  61.  
  62. //Zad 2
  63. double minMaks( double * tab, int ileElementow, bool liczMin ){
  64.     int min = INT_MAX;
  65.     int max = INT_MIN;
  66.     double wynik;
  67.     if(liczMin){
  68.         for(int i = 0; i < ileElementow; i++){
  69.             if(*tab < min) min = *tab;
  70.             wynik = min;
  71.             tab++;
  72.         }
  73.     }
  74.     else{
  75.         for(int i = 0; i < ileElementow; i++){
  76.             if(*tab > max) max = *tab;
  77.             wynik = max;
  78.             tab++;
  79.         }
  80.     }
  81.    
  82.     return wynik;
  83. }
  84.  
  85. //Zad3
  86. double wariancja(double * tab, int ileElementow){
  87.     double suma;
  88.     double srednia;
  89.     double wynik;
  90.    
  91.     for(int i = 0; i < ileElementow; i++){
  92.         suma += *tab;
  93.         tab++;
  94.     }
  95.     srednia = suma/ileElementow;
  96.    
  97.     tab-=ileElementow;
  98.    
  99.     for(int i = 1; i < ileElementow; i++){
  100.         wynik += (*tab - srednia)*(*tab - srednia);
  101.         tab++;
  102.     }
  103.    
  104.     return (1.0/ileElementow)*wynik;
  105. }
  106.  
  107.  
  108. //Zad4
  109. int kopiujPowyzejSredniej(int * kopia, int * tab, int ileElementow){
  110.     int suma = 0;
  111.     int srednia;
  112.     int wynik=0;
  113.     for(int i = 0; i < ileElementow; i++){
  114.         suma += *tab;
  115.         tab++;
  116.     }
  117.    
  118.     srednia = suma / ileElementow;
  119.     cout << endl << "Srednia: " << srednia << endl;
  120.    
  121.     tab -= ileElementow;
  122.     for(int i = 0; i < ileElementow; i++){
  123.         if(*tab > srednia) {
  124.             *kopia = *tab;
  125.             kopia++;
  126.             wynik++;
  127.         }
  128.         tab++;
  129.     }
  130.    
  131.     return wynik;
  132. }
  133.  
  134. //Zad5
  135. int ileWystapienZnakuWNapisie(char z, char * napis){
  136.     int wynik = 0;
  137.    
  138.     for(; *napis != '\0'; napis++){
  139.         if(tolower(*napis) == tolower(z)) wynik++;
  140.     }
  141.    
  142.     return wynik;
  143. }
  144.  
  145. //Zad6
  146. char najczesciejWystepujacaLitera(char * napis){
  147.     int znaki[123];
  148.     int max = INT_MIN;
  149.     int wynik;
  150.     for(int i = 0; i < 123; i++) znaki[i] = 0;
  151.    
  152.     for(; *napis != '\0'; napis++){
  153.         znaki[int(*napis)]++;
  154.     }
  155.    
  156.     for(int i = 0; i < 123; i++){
  157.         if(znaki[i] > max) {
  158.             max = znaki[i];
  159.             wynik = i;
  160.         }
  161.     }
  162.  
  163.     return (char)wynik;
  164. }
  165.  
  166. //Zad7
  167. bool jestPalindromem(char * napis){
  168.     bool wynik = false;
  169.     char * begin, * end;
  170.    
  171.     for( end = napis; *end; end++)
  172.         ;
  173.    
  174.     for( begin = napis, end--; begin < end; begin++, end--){
  175.         if(tolower(*begin) == tolower(*end)) wynik = true;
  176.         else {
  177.             wynik = false;
  178.             break;
  179.         }
  180.     }
  181.    
  182.     return wynik;
  183. }
  184.  
  185. bool mozeBycPalindromem(char * napis){
  186.     int pary, mozliwosci;
  187.    
  188.     char * begin, * end;
  189.    
  190.     for( end = napis; *end; end++)
  191.         ;
  192.    
  193.     for( begin = napis, end--; begin < end; begin++, end--){
  194.         mozliwosci++;
  195.         if(tolower(*begin) == tolower(*end)) pary++;
  196.     }
  197.    
  198.     if(mozliwosci-pary <= 1) return true;
  199.     else return false;
  200. }
  201.  
  202. int kopiujZZamiana( char * d, char * z){
  203.     int wynik = 0;
  204.     for(; *z != '\0'; z++, d++){
  205.         if(isalpha(*z)){
  206.             if(isupper(*z)) {
  207.                 *d += tolower(*z);
  208.                 wynik++;
  209.             }
  210.             else if(islower(*z)){
  211.                 *d += toupper(*z);
  212.                 wynik++;
  213.             }
  214.         }
  215.        
  216.     }
  217.    
  218.     return wynik;
  219. }
  220.  
  221. int kopiujMaleLiter( char * d, char * z){
  222.     int wynik = 0;
  223.     for(; *z != '\0'; z++, d++){
  224.         if(isalpha(*z)){
  225.             if(islower(*z)){
  226.                 *d += *z;
  227.                 wynik++;
  228.             }
  229.         }
  230.     }
  231.    
  232.     return wynik;
  233. }
  234.  
  235.  
  236. //Zad12
  237. class SrodekTransportu{
  238. private:
  239.     int nr_ew;
  240.    
  241. public:
  242.     SrodekTransportu(){
  243.         nr_ew = 0;
  244.     }
  245.    
  246.     SrodekTransportu(int nr){
  247.         nr_ew = nr;
  248.     }
  249.    
  250.     ustawNr(int nr){
  251.         nr_ew = nr;
  252.     }
  253.    
  254.     wezNr(){ return nr_ew; }
  255. };
  256.  
  257. class PojazdSilnikowy : public SrodekTransportu{
  258. private:
  259.     Silnik s;
  260.     Nadwozie n;
  261.    
  262. public:
  263.     PojazdSilnikowy() : SrodekTransportu(){
  264.         s = new Silnik();
  265.         n = new Nadwozie();
  266.     }
  267. };
  268.  
  269. class Silnik{
  270. private:
  271.     int pojemnosc;
  272.     int nr_seryjny;
  273.    
  274. public:
  275.     Silnik(){
  276.         pojemnosc = 0;
  277.         nr_seryjny = 0;
  278.     }
  279.    
  280.     Silnik(int poj, int nr){
  281.         pojemnosc = poj;
  282.         nr_seryjny = nr;
  283.     }
  284.    
  285. };
  286.  
  287. class Nadwozie{
  288. private:
  289.     int kolor;
  290.     int nr_seryjny;
  291.    
  292. public:
  293.     Nadwozie(){
  294.         kolor = 0;
  295.         nr_seryjny = 0;
  296.     }
  297.    
  298.     Nadwozie(int kol, int nr){
  299.         kolor = kol;
  300.         nr_seryjny = nr;
  301.     }
  302.  
  303. };
  304.  
  305. void WyborZadania(){
  306.     int zad;
  307.     int * tab = new int[5];
  308.     double * tab2 = new double[5];
  309.     tab[0] = 1; tab[1] = 5; tab[2] = 1; tab[3] = 5; tab[4] = 5;
  310.     tab2[0] = 3; tab2[1] = 5; tab2[2] = 1; tab2[3] = 5; tab2[4] = 10;
  311.    
  312.     cout << "Wybierz zadanie: ";
  313.     cin >> zad;
  314.     switch(zad){
  315.         case 1:
  316.         {
  317.             cout << "Wynik: " << oblicz1A(tab, 5, 4) << endl;
  318.             wyswietl(tab, 5);
  319.             break;
  320.         }  
  321.         case 2:
  322.         {
  323.            cout << "Wynik: " << oblicz1B(tab, 5, 4) << endl;
  324.            wyswietl(tab, 5);
  325.            break;
  326.         }
  327.         case 3:
  328.         {
  329.             cout << "Wynik: " << minMaks(tab2, 5, true) << endl;
  330.             cout << "Wynik: " << minMaks(tab2, 5, false) << endl;
  331.             wyswietlDouble(tab2, 5);
  332.             break;
  333.         }
  334.         case 4:
  335.         {
  336.             cout << "Wynik: " << wariancja(tab2, 5) << endl;
  337.             break;
  338.         }
  339.         case 5:
  340.         {
  341.             int * kopia = new int[5];
  342.             cout << "Wynik: " << kopiujPowyzejSredniej(kopia, tab, 5) << endl;
  343.             wyswietl(tab, 5);
  344.             cout << endl;
  345.             wyswietl(kopia, 5);
  346.             delete [] kopia;
  347.             break;
  348.         }
  349.         case 6:
  350.         {
  351.             char * napis = "Zawsze i wszedzie policja jebana bedzie";
  352.             cout << "Wynik: " << ileWystapienZnakuWNapisie('i', napis) << endl;
  353.             break;
  354.         }
  355.         case 7:
  356.         {
  357.             char * napis = "Ksiadz w dresie warke niesie AUUUUUUUUUUU";
  358.             cout << "Wynik: " << najczesciejWystepujacaLitera(napis) << endl;
  359.             break;
  360.         }
  361.         case 8:
  362.         {
  363.             char * napis = "aaasaaa";
  364.             cout << jestPalindromem(napis) << endl;
  365.             break;
  366.         }
  367.         case 9:
  368.         {
  369.             char * napis = "ababc";
  370.             cout << mozeBycPalindromem(napis) << endl;
  371.             break;
  372.         }
  373.         case 10:
  374.         {
  375.             char * z = "RudobrodyCwel";
  376.             char * d = new char[100];
  377.             cout << "Wynik: " << kopiujZZamiana(d, z) << endl;
  378.            
  379.             for(; *d !='\0'; d++) cout << *d;
  380.            
  381.             break;
  382.         }
  383.         case 11:
  384.         {
  385.             char * z = "AbcdD";
  386.             char * d = new char[100];
  387.             cout << "Wynik: " << kopiujMaleLiter(d, z) << endl;
  388.            
  389.             for(; *d !='\0'; d++) cout << *d;
  390.            
  391.             break;
  392.         }
  393.         default:
  394.         {
  395.           WyborZadania();
  396.           break;  
  397.         }    
  398.     }
  399.    
  400.     delete [] tab;
  401.     delete [] tab2;
  402. }
Add Comment
Please, Sign In to add comment