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

Дана матрица р(8,9), н(9,7) вещественных чисел. инвертировать все четные строки матрицы. для вычислений использовать процедуру.

👇
Ответ:
AdelinaArMi
AdelinaArMi
06.09.2022
#include "stdafx.h" 
#include "malloc.h" 
#include <iostream> 
using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 

// Вводим исходные данные. 
int m; 
int n; 
printf ("Введите количество столбцов? m = "); 
cin >> m; 
printf ("Введите количество строк? n = "); 
cin >> n; 

// Создаем матрицу. 
int* pMatrix = (int*) malloc (m * n * sizeof (int)); 

// Инициализируем другие переменные. 
int xMin = 0, // левая граница спирали 
xMax = m, // правая граница спирали (не включая ее, поэтому ниже будет использоваться xMax - 1) 
yMin = 0, // верхняя граница спирали 
yMax = n, // нижняя граница спирали (не включая ее, поэтому ниже будет использоваться yMax - 1) 
i = 0, // текущее число 
x, y; // расходный материал. 

// Бесконечный цикл, пока не заполним матрицу. 
while (1) 

// Заполняем верхний ряд слева направо. 
for (x = xMin; x < xMax; x++) 
pMatrix[x + yMin * m] = i++; 
// Заполнили весь верхний ряд. Подвигаем вниз верхнюю границу. 
yMin ++; 
// Если верхняя граница совпала с нижней, то заканчиваем цикл. 
if (yMin == yMax) 
break; 

// Заполняем правый ряд сверху вниз. 
for (y = yMin; y < yMax; y++) 
pMatrix[xMax - 1 + y * m] = i++; 
// Заполнили весь правый ряд. Подвигаем налево правую границу. 
xMax --; 
// Если правая граница совпала с левой, то заканчиваем цикл. 
if (xMax == xMin) 
break; 

// Заполняем нижний ряд справа налево. 
for (x = xMax - 1; x >= xMin; x--) 
pMatrix[x + (yMax - 1) * m] = i++; 
// Заполнили весь нижний ряд. Подвигаем вверх нижнюю границу. 
yMax --; 
// Если верхняя граница совпала с нижней, то заканчиваем цикл. 
if (yMin == yMax) 
break; 

// Заполняем левый ряд снизу вверх. 
for (y = yMax - 1; y >= yMin; y--) 
pMatrix[xMin + y * m] = i++; 
// Заполнили весь левый ряд. Подвигаем направо левую границу. 
xMin ++; 
// Если правая граница совпала с левой, то заканчиваем цикл. 
if (xMax == xMin) 
break; 
// если мы все еще здесь, значит идем на очередной виток спирали.. . 


// Есть предположение, что спираль заполнена. Напечатаем ее, посмотреть.. . 
for (y = 0; y < n; y++) 

// Печатаем строку. 
for (x = 0; x < m; x++) 
printf ("i, ", pMatrix[x + y * m]); 
// Переходим на другую строку. 
printf ("\r\n"); 


// Освобождаем память и выходим. 
free (pMatrix); 
pMatrix = 0; 
4,4(48 оценок)
Открыть все ответы
Ответ:
AlexandraBarabash
AlexandraBarabash
06.09.2022
Алгоритм сортировки строки массива по возрастанию методом прямого выбора может быть представлен так:
1. Просматривая строку массива от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.
2. Просматривая строку массива от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.
3. И так далее до предпоследнего элемента.

Решение:

//Pascal
const
  n = 7;

var
  a: array[1..n, 1..n] of integer;
  i, j, min, ind: integer;

//Заполнение массива сл. числами и вывод на экран
begin
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      a[i, j] := random(100);
      write(a[i, j]:4);
    end;
    writeln;
  end;
 
  //Сортировка строки матрицы прямым выбором
 
  for i := 1 to n - 1 do
  begin
    min := a[4, i];
    ind := i;
    for j := i + 1 to n do
      if a[4, j] < min then
      begin
        min := a[4, j];
        ind := j;
      end;
    a[4, ind] := a[4, i];
    a[4, i] := min;
  end;
  writeln;
 
    //вывод отсортированной строки
  for j := 1 to n do
  begin
    write(a[4, j]:4);
  end;
end.
4,4(33 оценок)
Ответ:
sad1300
sad1300
06.09.2022
program nazvanie;
var a,b,b1,k,k1:integer;
begin   
 write('Введите трехзначное число: ');   
  readln(a); 
   b:=a; 
   while b<>0 do     begin        b1:=b mod 10; 
    if b1 mod 2=0     then       k:=k+1          else      k1:=k1+1; 
 b1:=b div 10; 
   b:=b1; 
 end; 
   if k>k1        then         
write('Кол-во четных цифр больше, чем нечетных в числе ',a)
else if k<k1          then   write('Кол-во нечетных больше, чем четаных в числе ',a);
end.   
Немного переделать и будет рабочая прога!
4,5(69 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ