М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ErkeSapieva
ErkeSapieva
17.11.2020 02:26 •  Информатика

Обнулить правый нижний угол матрицы симметричный левому.. надо, не понимаю как обнулить правый..#include#include using namespace std; typedef int telem ; //определение типа элементов массиваtypedef telem *tstr ; //определение типа "указатель на telem"typedef tstr *tmatr; //определение типа "указатель на указатель на telem"void inputmatr(tmatr a, int n) ; void outputmatr(tmatr a, int n) ; void sort_obmenf(tmatr a, int n) ; void nullmas (tmatr a, int s); int main(){ int i, j ; int n ; //число строк матрицы tmatr a; //объявляется переменная-указатель на указатель на telem setlocale(lc_all,"russian") ; cout < < "\nвведите половину массива: " ; cin > > n; a = new tstr [2*n] ; //выделение динамической памяти под массив //указателей на строки массива for(i = 0; i < 2*n; i++) //цикл выделения памяти под каждую строку *(a + i) = new telem [2*n] ; //каждому элементу массива указателей //на строки присваивается адрес начала //области памяти, выделяемой под строку inputmatr(a, 2*n) ; cout < < "исходная матрица: \n" ; outputmatr(a, 2*n) ; sort_obmenf(a, n) ; cout < < "матрица с отсортированными строками: " < < endl ; outputmatr(a, 2*n) ; cout < < endl ; nullmas (a,n); outputmatr(a, 2*n) ; //освобождение динамической памяти for(i = 0; i < 2*n; i++) delete a[i] ; delete a ; return 0 ; }void inputmatr(tmatr a, int n){ for(int i = 0 ; i < n ; i++) for(int j = 0 ; j < n ; j++) *(*(a + i) + j) = 10 * i + j; }//сортировка элементовvoid sort_obmenf(tmatr a, int s){bool flag = true; do { flag = false; for(int i = 0; i < 2*s-1; i++) { for(int j = 0; j < 2*s-1; j++) { if(a[i+1][j+1]> a[i][j]) { swap(a[i][j], a[i+1][j+1]); flag = true; } } } } while(flag); }void outputmatr(tmatr a,int n){ int i, j ; for(i = 0; i < n; i++) {for(j = 0; j < n; j++) {cout.width(2) ; //ширина поля выводимого параметра cout < < *(*(a + i) + j) < < ' ' ; } cout < < "\n"; }}void nullmas (tmatr a, int s){ int i, j ; for(i=0; i { for(j=0; j< 2*s; j++) { a[i][j]=0; } }for(j=s-1; j> s-i-1; j--) { for(i=2*s-1; i > s+j ; i--) { a[i][j]=0; }}for(j=s-1; j> s-i-1; j--) { for(i=2*s-1; i > s+j ; i--) { a[i][j]=0; }}}

👇
Открыть все ответы
Ответ:
Hamrod
Hamrod
17.11.2020
1. В приведенном коде ошибка. Не хватает ";" в третьей строке снизу.
2. Немного изменим ваш код и получим искомое значение x
Искомое число х = 16293

var
  x, y, a, b, k: integer;

begin
  k:=10000;
  repeat
    x:=k;
    a := 0; b := 0; y := 1;
    while x > 0 do
    begin
      if (x mod 10) mod 2 = 0
        then
        a := a * 10 + x mod 10
      else begin
        y := y * 10;
        b := b * 10 + x mod 10
      end;
      x := x div 10
    end;
    a := a * y + b;
    k := k + 1;
    until a = 26391;
    writeln(a:8, k-1:8); 
end.

 
4,4(66 оценок)
Ответ:
DarKerThanBlaCK34
DarKerThanBlaCK34
17.11.2020

55:5=11

365:11≈33(34) берём "34", чтобы перехлестнуть 365.

Так как 11-ый член является замыкающим (перехлёстывающим 365), тогда смотрим по ближайшим:

34*10=340 (340+34=374) - подходит, но это не максимум!

365 mod 10= 36, а это значит, что последующий член будет больше 365, а именно 395.

В задании сказано, что d должно быть максимальным, а "34" - это допустимое, но не максимально число, удовлетворяющее условию, даже минимальное (по результату).

Проверка:

34*11=374, значит, когда на экране выведется s:=340, n:=50, то, зайдя по следующему циклу, получится, что s:= 374, n:=55. На следующий цикл программа не пойдёт.

ответ: d=34. 

4,5(52 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ