Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- bool Summ(int n, int *sc, int *sn);
- void sort(long int *arr, int n);
- int main()
- {
- //Files
- ifstream input("input.txt");
- ofstream oin("outputIn.txt"), o_res("outputRes.txt"), osort("outputSort.txt"), obin("outputBin.txt");
- //Массив для чисел и переменная для хранения текущего числа(большой int)
- long int arr[1000], num = 0;
- //Переменная позиции в массиве чисел, переменные для суммы четных и нечетных цифр в числе
- //переменная суммы цифр и индекс
- int arr_pos = 0 , sc, sn, sum, i;
- //Строка и символ
- char ch,str[255];
- while(!input.eof())
- {
- input.getline(str,255);
- for(i=0;str[i] && i<255;++i)
- {
- ch = str[i];
- if(ch - '0' >= 0 && ch - '9' <=0) //Проверяем цифра ли символ
- {
- num = num*10+(ch-'0'); //если цифра, то допишем ее в текущее число
- }
- else //Если не цифра
- {
- arr[arr_pos++] = num; //Добавим число в массив
- num = 0; //Занулим число
- }
- }
- if(ch - '0' >= 0 && ch - '9' <=0) //Если число стоит на конце строки, надо дополнительно пройтись по нему
- {
- arr[arr_pos++] = num;
- num = 0;
- }
- }
- for(i=0;i<arr_pos;i++) // Выводим все числа
- oin << arr[i] << " ";
- oin.close();
- for(i=0;i<arr_pos;i++) //Выводим числа у которых сумма четных цифр больше суммы нечетных
- {
- sc = 0;
- sn = 0;
- if(Summ(arr[i],&sc,&sn)) o_res << arr[i] << " ";
- sum+=sc+sn;
- }
- o_res.close();
- obin << sum; //Выводим сумму всех цифр в числах
- sort(arr,arr_pos);//Сортируем массив
- for(i=0;i<arr_pos;i++)//Выводим отсортированный массив
- osort << arr[i] << " ";
- return 0;
- }
- bool Summ(int n,int *sc,int *sn)
- {
- int i = 0;
- while(n>0)
- {
- i = n%10;
- if(i%2 == 0) *sn += i;
- else *sc += i;
- n/=10;
- }
- return (*sn) > (*sc);
- }
- void sort(long int *arr, int n)
- {
- int i,j;
- long int swap;
- for(i=0;i<n;i++)
- for(j=0;j<n-i-1;j++)
- if(arr[j]>arr[j+1])
- {
- swap = arr[j];
- arr[j] = arr[j+1];
- arr[j+1] = swap;
- }
- }
Add Comment
Please, Sign In to add comment