Guest User

Untitled

a guest
Jun 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. bool Summ(int n, int *sc, int *sn);
  4. void sort(long int *arr, int n);
  5.  
  6. int main()
  7. {
  8.    //Files
  9.     ifstream input("input.txt");
  10.     ofstream oin("outputIn.txt"), o_res("outputRes.txt"), osort("outputSort.txt"), obin("outputBin.txt");
  11.     //Массив для чисел и переменная для хранения текущего числа(большой int)
  12.    long int arr[1000], num = 0;
  13.     //Переменная позиции в массиве чисел, переменные для суммы четных и нечетных цифр в числе
  14.     //переменная суммы цифр и индекс
  15.    int arr_pos = 0 , sc, sn, sum, i;
  16.     //Строка и символ
  17.    char ch,str[255];
  18.    while(!input.eof())
  19.    {
  20.     input.getline(str,255);
  21.       for(i=0;str[i] && i<255;++i)
  22.       {
  23.         ch = str[i];
  24.          if(ch - '0' >= 0 && ch - '9' <=0) //Проверяем цифра ли символ
  25.          {
  26.             num = num*10+(ch-'0'); //если цифра, то допишем ее в текущее число
  27.          }
  28.          else //Если не цифра
  29.          {
  30.             arr[arr_pos++] = num; //Добавим число в массив
  31.             num = 0; //Занулим число
  32.          }
  33.       }
  34.       if(ch - '0' >= 0 && ch - '9' <=0) //Если число стоит на конце строки, надо дополнительно пройтись по нему
  35.       {
  36.         arr[arr_pos++] = num;
  37.          num = 0;
  38.       }
  39.    }
  40.    for(i=0;i<arr_pos;i++) // Выводим все числа
  41.     oin << arr[i] << " ";
  42.    oin.close();
  43.    for(i=0;i<arr_pos;i++) //Выводим числа у которых сумма четных цифр больше суммы нечетных
  44.    {
  45.       sc = 0;
  46.       sn = 0;
  47.       if(Summ(arr[i],&sc,&sn)) o_res << arr[i] << " ";
  48.       sum+=sc+sn;
  49.    }
  50.    o_res.close();
  51.    obin << sum; //Выводим сумму всех цифр в числах
  52.    sort(arr,arr_pos);//Сортируем массив
  53.    for(i=0;i<arr_pos;i++)//Выводим отсортированный массив
  54.     osort << arr[i] << " ";
  55.    return 0;
  56. }
  57.  
  58. bool Summ(int n,int *sc,int *sn)
  59. {
  60.     int i = 0;
  61.     while(n>0)
  62.    {
  63.     i = n%10;
  64.     if(i%2 == 0) *sn += i;
  65.       else *sc += i;
  66.       n/=10;
  67.    }
  68.    return (*sn) > (*sc);
  69. }
  70. void sort(long int *arr, int n)
  71. {
  72.     int i,j;
  73.    long int swap;
  74.    for(i=0;i<n;i++)
  75.     for(j=0;j<n-i-1;j++)
  76.         if(arr[j]>arr[j+1])
  77.          {
  78.             swap = arr[j];
  79.             arr[j] = arr[j+1];
  80.             arr[j+1] = swap;
  81.          }
  82. }
Add Comment
Please, Sign In to add comment