#include <iostream>
using namespace std;
unsigned DigitSum( unsigned x ) {
unsigned sum = 0;
while ( x != 0 ) {
sum += x % 10;
x /= 10;
}
return sum;
}
bool Comparison( const unsigned a, const unsigned b ) {
return DigitSum( a ) < DigitSum( b );
}
// третий параметр указатель на функцию сравнения для сортировки
void InsertionSort( unsigned long *arr, size_t size, bool (*compareFunc)( const unsigned, const unsigned ) ) {
for ( size_t i = 1; i < size; ++i )
for ( size_t j = i; j > 0 && Comparison( arr[ j - 1 ], arr[ j ] ); --j )
swap( arr[ j - 1 ], arr[ j ] );
}
int main() {
const size_t maxCount = 10000;
unsigned long* arr = new unsigned long[ maxCount ];
size_t count = 0;
cin >> count;
for ( size_t i = 0; i < count; ++i ) {
cin >> arr[ i ];
}
// сортируем массив, указывая какая функция для сравнения элементов используется
InsertionSort( arr, count, Comparison );
for ( size_t i = 0; i < count; ++i )
cout << arr[ i ] << " ";
delete[] arr;
return 0;
}
дайте 5 звёзд позязя
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int sumDigit(int c)
{
int sum = 0;
while(c)
{
sum += c % 10;
c /= 10;
}
return sum;
}
int main()
{
vector <int> vec;
int n;
cin >> n;
for(int i = 0; i < n; ++i)
{
int tmp;
cin >> tmp;
vec.push_back(tmp);
}
for(int i = 0; i < n - 1; ++i)
{
for(int j = i + 1; j < n; ++j)
{
if(sumDigit(vec[i]) < sumDigit(vec[j]))
{
swap(vec[i], vec[j]);
}
}
}
for(auto & ch : vec)
cout << ch << ' ';
return 0;
}
Конъюнкция - это сложное логическое выражение, которое считается истинным в том и только том случае, когда оба простых выражения являются истинными, во всех остальных случаях данное сложенное выражение ложно.
Обозначение: F = A & B.
Дизъюнкция - это сложное логическое выражение, которое истинно, если хотя бы одно из простых логических выражений истинно и ложно тогда и только тогда, когда оба простых логических выраженbя ложны.
Обозначение: F = A v B.
Инверсия - это сложное логическое выражение, если исходное логическое выражение истинно, то результат отрицания будет ложным, и наоборот, если исходное логическое выражение ложно, то результат отрицания будет истинным. Другими простыми слова, данная операция означает, что к исходному логическому выражению добавляется частица НЕ или слова НЕВЕРНО, ЧТО.
Обозначение: F = ¬A.
Импликация - это сложное логическое выражение, которое истинно во всех случаях, кроме как из истины следует ложь. То есть данная логическая операция связывает два простых логических выражения, из которых первое является условием (А), а второе (В) является следствием.
«A → B» истинно, если из А может следовать B.
Обозначение: F = A → B.
Эквивалентность - это сложное логическое выражение, которое является истинным тогда и только тогда, когда оба простых логических выражения имеют одинаковую истинность.
«A ↔ B» истинно тогда и только тогда, когда А и B равны.
Обозначение: F = A ↔ B.
«A ⊕ B» истинно тогда, когда истинно А или B, но не оба одновременно.
Эту операцию также называют "сложение по модулю два".
Обозначение: F = A ⊕ B.