Объясняю: создаёте переменную, лучше целочисленную (int foo), после чего можно либо перевести число в строку и найти сумму цифр путём сложения двух символов (sum = bar[0] - '0' + bar[1] - '0'), либо с остатка от деления (конечно, это не очень красиво, но если известно, что число двузначное, то можно так: sum = (foo / 10) + (foo % 10)). Дальше банальная обработка условия: <если сумма чётная (if (sum % 2 == 0)), то увеличить число на 2 (foo += 2), иначе (else) уменьшить число на 2 (foo -= 2)>. После этого можете вывести результат на монитор (printf("%d\n", &sum)). :)
===== PascalABC.NET =====
begin
var СписокСлов := ReadlnString('Список слов через пробел:').ToWords;
var ИсходныйСловарь := new Dictionary<char, integer>;
var РабочийСловарь := new Dictionary<char, integer>;
foreach var Символ in ReadlnString('Слово:') do
ИсходныйСловарь[Символ] := ИсходныйСловарь.Get(Символ) + 1;
var СтрокаВывода: string;
foreach var Слово in СписокСлов do
begin
foreach var Символ in Слово do
РабочийСловарь[Символ] := РабочийСловарь.Get(Символ) + 1;
var МожноПостроитьСлово := True;
foreach var ЭлементРабочегоСловаря in РабочийСловарь do
begin
var Ключ := ЭлементРабочегоСловаря.Key;
var ПределПовторовБуквы: integer;
if ИсходныйСловарь.TryGetValue(Ключ, ПределПовторовБуквы) then
begin
if ЭлементРабочегоСловаря.Value > ПределПовторовБуквы then
begin
МожноПостроитьСлово := False;
break
end
end
else
begin
МожноПостроитьСлово := False;
break
end
end;
if МожноПостроитьСлово then
begin
if СтрокаВывода <> '' then
СтрокаВывода += ', ';
СтрокаВывода += Слово
end;
РабочийСловарь.Clear;
end;
Println(СтрокаВывода)
end.
#include <iostream>
#include <time.h>
#include <algorithm>
#include <vector>
#include <variant>
using namespace std;
pair<int**, vector<int>> sum_and_sort(int** mat, int n) {
int d1sum = 0, d2sum = 0;
vector<int> arr;
for (size_t i = 0; i < n; i++)
arr.push_back(mat[i][0]);
for (const auto& i : arr)
sort(arr.begin(), arr.end(), greater <>());
for (size_t i = 0; i < n; i++)
mat[i][0] = arr[i];
for (size_t i = 0; i < n; ++i)
for (size_t j = 0; j < n; ++j)
{
if (i == j)
d1sum += mat[i][j];
if (i + j == (n - 1))
d2sum += mat[i][j];
}
vector<int> arr2;
arr2.push_back(d1sum);
arr2.push_back(d2sum);
return make_pair(mat, arr2);
}
void printMat(int** mat, int n)
{
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << mat[i][j] << " ";
cout << endl;
}
}
int main()
{
srand(time(0));
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите максимальный мазмер матрицы\n";
cin >> n;
int d1sum = 0, d2sum = 0;
int** matrix = new int* [n];
int** matrix2 = new int* [n];
vector<int> sum_d1_d2;
pair<int**, vector<int>> returnf;
for (int i = 0; i < n; ++i) {
matrix[i] = new int[n];
matrix2[i] = new int[n];
}
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++)
matrix[i][j] = rand() % 100 + 1;
}
printMat(matrix, n);
returnf = sum_and_sort(matrix,n);
matrix2 = returnf.first;
sum_d1_d2 = returnf.second;
cout << endl;
printMat(matrix2, n);
cout << "Сумма диагоналей после сортировки:\n";
for (int i = 0; i < sum_d1_d2.size(); i++) {
cout << sum_d1_d2[i] << " ";
}
return 1;
}