переделать код программы с языка паскаль на с++. вот код паскаль: var f: array[1..500] of record fam: string; bal: boolean; end; buf: boolean; str: string; b1,b2,i,n,j: integer; c: char; begin readln(n); for i: =1 to n do begin repeat begin read(c); f[i].fam: =f[i].fam+c; end; until c=' '; repeat begin read(c); f[i].fam: =f[i].fam+c; end; until c=' '; f[i].bal: =false; read(b1,b2); if (b1< 30)or(b2< 30) then f[i].bal: =true; end; for i : = 1 to n-1 do begin for j : = i + 1 to n do if f[i].fam > f[j].fam then begin str: = f[i].fam; f[i].fam: = f[j].fam; f[j].fam: = str; buf: = f[i].bal; f[i].bal: = f[j].bal; f[j].bal: = buf; end; end; for i: =1 to n do if f[i].bal=true then writeln (f[i].fam); end.
Описание алгоритма:
Полученные строки хранятся в массиве s.
Элементы массива сортируются так называемой "пузырьковой" сортировкой. Для сравнения двух строк используется функция less, возвращающая истину если первая из двух переданных в функцию строк лексикографически меньше.
А дальше дело за малым: просто выводим элементы отсортированного массива без первых трех символов (номера строк).
Единственная проблема, которая может возникнуть: на некоторых компьютерах программа не работает с русским языком. Но это уже технические проблемы. Само же решение верно.
Удачи!
-YYX
ZXZ
Y-Y в среднем разряде, конечно же, даст 0. Можно ли считать, что Х=0? Нет, по условию X>Y, а Y не может быть отрицательным. Остается предположить, что от Y для вычитания в младшем разряде "заняли единичку", а для вычитания в среднем разряде тоже "заняли единичку" в старшем разряде. В семиричной системе единичка - это 7 (как и в десятичной - 10). Получаем следующие соотношения:
Y+7-X=Z младший разряд
Y+7-1-Y=X средний разряд ⇒ X=6
X-Y-1=Z старший разряд
Подставляем 6 вместо Х в остальные соотношения
Y+7-6=Z; Y+1=Z
6-Y-1=Z; 5-Y=Z
Правые части равны Z, приравниваем левые части
Y+1=5-Y; 2Y=4 ⇒ Y=2
Осталось найти Z: Z=Y+1; Z=2+1 ⇒ Z=3
Итак, X=6, Y=2, Z=3.
YYX=226₇, XYY=622₇, ZXZ=363₇
622₇ - 226₇ = 363₇ - это расшифрованный пример.