Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <ctime>
  4. #include <time.h>
  5. #include <cstdlib>
  6. #include <math.h>
  7.  
  8. using namespace std;
  9.  
  10. bool podzielnosc(int liczba, int numer)
  11. {
  12.     liczba = abs(liczba);
  13.  
  14.     int dana;
  15.     int licz = 0;
  16.  
  17.     while (liczba > 0)
  18.     {
  19.         licz++;
  20.         if (licz == numer)
  21.         {
  22.             dana = liczba % 10;
  23.             if (dana % 2 == 0)
  24.                 return true;
  25.             else
  26.                 return false;
  27.         }
  28.         liczba /= 10;
  29.     }
  30. }
  31. int licznik(int liczba)
  32. {
  33.     int licznik = 0;
  34.  
  35.     for (int i = 1; i < (to_string(liczba).length() + 1); i++)
  36.     {
  37.         if (podzielnosc(liczba, i))
  38.             licznik++;
  39.     }
  40.  
  41.     return licznik;
  42. }
  43. void tworz_klaw(int tab[], int n)
  44. {
  45.     int a;
  46.     for (int i = 0; i<n; i++)
  47.     {
  48.         cout << "Podaj " << i + 1 << " element tablicy "; cin >> a;
  49.         tab[i] = a;
  50.     }
  51. }
  52. void tworz_gener(int tab[], int n)
  53. {
  54.     int a, b;
  55.     cout << "Podaj przedzial losowania liczb "; cin >> a >> b;
  56.     if (a>b)
  57.         swap(a, b);
  58.     for (int i = 0; i<n; i++)
  59.     {
  60.         tab[i] = a + (b - a)*float(rand()) / RAND_MAX;
  61.     }
  62. }
  63. int wybor()
  64. {
  65.     int wyb;
  66.     do
  67.     {
  68.         cout << "Wybierz typ generowania ciągu\n 1 - recznie \n 2 - generowane od - do" << endl;
  69.         cin >> wyb;
  70.     } while (!(wyb == 1 || wyb == 2));
  71.  
  72.     return wyb;
  73. }
  74. void wypisz(int tab[], int dlugosc)
  75. {
  76.     cout << endl << "Elementy ciagu:" << endl;
  77.     for (int i = 0; i < dlugosc; i++)
  78.     {
  79.         cout << (i + 1) << ". " << tab[i] << endl;
  80.     }
  81.     cout << endl;
  82. }
  83.  
  84. int main()
  85. {
  86.     int wyb = wybor(), dlugosc, s1 = 0, s2 = 1, k = 0;
  87.     cout << "Podaj dlugosc ciagu: "; cin >> dlugosc;
  88.     int *tablica = new int[dlugosc];
  89.  
  90.     switch (wyb)
  91.     {
  92.     case 1:
  93.         tworz_klaw(tablica, dlugosc);
  94.         break;
  95.     case 2:
  96.         tworz_gener(tablica, dlugosc);
  97.         break;
  98.     default:
  99.         break;
  100.     }
  101.  
  102.     wypisz(tablica, dlugosc);
  103.     cout << "Podaj liczbe k przez ktora bedziemy dzielic czesci ciagu: "; cin >> k;
  104.     for (int i = 0; i < dlugosc; i++) // tego elementu nie zapisuje do VOID lub INT bo zrobie szybkie liczenie S1/S2, a nie chce robić dwoch oddzielnych funckji.
  105.     {
  106.         if (tablica[i] % k == 0)
  107.             s1 += tablica[i];
  108.         else
  109.             s2 *= tablica[i];
  110.     }
  111.  
  112.     cout << "S1: " << s1 << " oraz S2: " << s2 << endl;
  113.  
  114.     if (licznik(s1) > licznik(s2))
  115.         cout << "Wiecej jest liczb parzystych w S1" << endl;
  116.     else if (licznik(s2) > licznik(s1))
  117.         cout << "Wiecej jest liczb parzystych w S2" << endl;
  118.     else
  119.         cout << "W S1 i S2 jest tyle samo liczb parzystych" << endl;
  120.  
  121.     system("PAUSE");
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement