//PROBLEM 1 : 
//Да се напише програма, която позволява на потребителя да въведе масив от числа и 
//проверява дали той се състои от различни елементи.

bool all_different(int arr[], int size)
{  
  for(int i = 0 ; i<(size-1) ; i++)
  {
    for(int j = i+1 ; j<size ; j++)
    {
      if(arr[i]==arr[j])
      {
       return false;
      }
    }
  }
  return true;
}

//PROBLEM 2
//Дадени са сортираните във възходящ ред редици: a0, a1, ... , an-1 и b0, b1, ... , bm-1. и
//Да се напише програма, която слива двете редици в редицата c0, c1, ... , ck-1, която също е във //възходящ ред 

void fill_up_array(int* arr, int size)
{
     for(int i = 0 ; i < size ; i++)
     {
       int tmp;
       cout<<"arr["<<i<<"]="; cin>>tmp; arr[i] = tmp;
     }
}
void problem_two()
{
    cout<<"Size of the first array:"; int fst_size; cin>>fst_size;
    cout<<"Size of the second array:"; int snd_size; cin>>snd_size;
    
    int arr_one[fst_size], arr_two[snd_size];
    
    fill_up_array(arr_one, fst_size);
    fill_up_array(arr_two, snd_size);

    int division = 0, result_array_count = 0, counter = 0;
    
    for(int i = 0 ; i<fst_size ; i++)
    {
     for(int j = 0 ; j<snd_size ; j++)
     {
       if(arr_one[i] == arr_two[j])
         division++;
     }
    }
    
    result_array_count = fst_size + snd_size - division;
    
    int result[result_array_count];
    
    int k = 0, m = 0;
    for(int i = 0 ; i < result_array_count ; i++)
    {
      if((arr_two[k] < arr_one[m]) && k < sizeof(arr_two)/4)
      {
        result[counter] = arr_two[k];
        k++;
      }
      else if(arr_two[k] == arr_one[m])
      {
        result[counter] = arr_two[k];
        k++;
        m++;
      }
      else if(arr_one[m] < arr_two[k] && m < sizeof(arr_one)/4)
      {
        result[counter] = arr_one[m];
        m++;
      }
      counter++;
    }
    
    for(int i = 0 ; i < result_array_count ; i++)
     cout<<result[i]<<" "; 
}

//PROBLEM 3
//Да се напише програма, която приема масив от десетични числа, булев параметър(флаг) и на базата на //флага връща сортиран във възходящ/низходящ ред масива.

void sort_it(double arr[], int arr_size, bool desc)
{
  for(int i = 0 ; i < arr_size ; i++)
  {
    for(int j = 0 ; j < arr_size ; j++)
    {
      if(desc && arr[i]>arr[j]) swap(arr[i], arr[j]);
      if(!desc && arr[i]<arr[j]) swap(arr[i], arr[j]);
    }
  }
}

//PROBLEM 4
//Да се напише програма, която намира скаларното произведение на векторите а(а0, а1, а2 .... аn) и (b0, b1, b2 .... bn)

int scalar(int arr_one[], int arr_two[], int size)
{
    int sum = 0;
    for(int i=0 ; i<size ; i++)
    {
      sum += arr_one[i]*arr_two[i];
    }  
    return sum;
}

//PROBLEM 5
//Да се напише програма, която приема низ от символи и последователно извежда първи всички цифри, след това всички малки
//латински букви и накрая всички останали. Те трябва да запазят реда си.


    for(int i=0 ; i < strlen(str1) ; i++)
      if(str1[i]<='9' && str1[i]>='0') cout<<str1[i];
      
    for(int i=0 ; i < strlen(str1) ; i++)
      if(str1[i]<='z' && str1[i]>='a') cout<<str1[i];
    
    for(int i=0 ; i < strlen(str1) ; i++)
      if(!(str1[i]<='z' && str1[i]>='a') && !(str1[i]<='9' && str1[i]>='0')) cout<<str1[i];
Last modified: Friday, 5 December 2014, 6:00 PM