Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
bigbro555
Member

Откуда:
Сообщений: 6
Я хочу разобраться, и мне нужна помощь. Помогите пожалуйста, либо дайте какую либо подсказку
#include <stdio.h>

#include <stdlib.h>

#define m 8
#define n 8

int main() {
  int a[m][n], b[m][n];
  int i, k = 0, j, r;

  for (i = 0; i < m; i++)
    for (j = 0; j < n; j++)
      a[i][j] = rand() % 10 - 2;
  printf("\n   Сгенерированная матрица имеет вид:\n ");
  // Вывод матрицы
  for (i = 0; i < m; i++) {
    for (j = 0; j < n; j++)
      printf("%d  ", a[i][j]);
    printf("\n ");
  }
  printf("\nвведите направление сдвига(0 вправо или 1 вниз )\n");
  scanf("%d", & k);
  printf("\nвведите число символов, на которое осуществляется сдвиг\n");
  scanf("%d", & r);
  printf("\n \t\t\tРЕЗУЛЬТАТ ПЕРВОЙ ЧАСТИ ЗАДАНИЯ");
  printf("\n ");
  if ((k == 0) || (k == 1)) {
    if (k == 0) {
      // Сдвиг вправо
      for (i = 0; i < m; i++)
        for (j = 0; j < r; j++)
          b[i][j] = a[i][m - r + j];
      for (i = 0; i < m; i++)
        for (j = r; j < m; j++)
          b[i][j] = a[i][j - r];
    }
    if (k == 1) {
      // Сдвиг вниз
      for (i = 0; i < r; i++)
        for (j = 0; j < m; j++)
          b[i][j] = a[m - r + i][j];
      for (i = r; i < m; i++)
        for (j = 0; j < m; j++)
          b[i][j] = a[i - r][j];
    }
    // вывод нового массива
    for (i = 0; i < m; i++) {
      for (j = 0; j < m; j++)
        printf("%d  ", b[i][j]);
      printf("\n ");
    }
  } else printf("Ошибка ввода");

  printf("\n \t\t\tРЕЗУЛЬТАТ ВТОРОЙ ЧАСТИ ЗАДАНИЯ");
  int u, x = -1;
  for (int j = 0; j != m; ++j)
    for (int k = 0; k != m; ++k)
      if (b[j][k] < 0) {
        x = j;
        break;
      }
  u = x + 1;
  printf("Последняя строка с ненулевым элементом:");
  printf("%d  ", u);
  printf("\n ");
  return 0;
}

Вот само задание:
Дана действительная квадратная матрица порядка n.
а) осуществить циклический сдвиг элементов прямоугольной матрицы на п элементов вправо или вниз (в зависимости от введенного режима). n может быть больше количества элементов в строке или столбце;
б) найти номер последней из строк, содержащих хотя бы один ненулевой элемент.

Сообщение было отредактировано: 7 апр 20, 14:03
7 апр 20, 08:21    [22112170]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
Dima T
Member

Откуда:
Сообщений: 14743
Пособие для студентов и школьников
7 апр 20, 08:23    [22112171]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
mayton
Member

Откуда: loopback
Сообщений: 46496
bigbro555, ты когда оформляешь сорцы - старайся сделать их привлекательными для прочтения.
Оформляй тегом SRC и форматируй по правилам С++.
7 апр 20, 14:05    [22112336]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
ВсеРазумный
Member

Откуда:
Сообщений: 285
mayton,

Пфф. Почему бы тогда под тегами синтаксисов не сделать автоматическое форматирование на форуме ? Приводя код к общему стандарту.
11 апр 20, 18:12    [22114684]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
Dima T
Member

Откуда:
Сообщений: 14743
ВсеРазумный
mayton,

Пфф. Почему бы тогда под тегами синтаксисов не сделать автоматическое форматирование на форуме ? Приводя код к общему стандарту.

mayton просто модератор. С рац.предложениями к разработчикам сайта надо писать сюда https://www.sql.ru/forum/sqlru
11 апр 20, 18:42    [22114694]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
mayton
Member

Откуда: loopback
Сообщений: 46496
ВсеРазумный
mayton,

Пфф. Почему бы тогда под тегами синтаксисов не сделать автоматическое форматирование на форуме ? Приводя код к общему стандарту.

Авто-формат не всегда корректно работает. После форматирования может быть потеряна авторская идея
или код может не собратся (Python/Haskell) просто по причине потерь отступов во время копипасты
email->word->форум.

Поэтому форматирование исходного кода может быть опцией но никак не mandatory свойством форума.
11 апр 20, 18:56    [22114704]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
ВсеРазумный
Member

Откуда:
Сообщений: 285
mayton,

Я понимаю что многие языки имеют мазохические наклонности с отступами. Эти люди определённо будут гореть в аду после своей жизни.


Но для обычных языков то не ломается логика выполнения, если дать такую возможность как авто-форматирование для обычных языков типа c++\c#\php и прочих.


Но вот с авторской идеей Я вообще с вами не согласен. Так как люди в фирмах обычно под форматирование и работают, дабы не иметь дело с авторской идеей. 1 стандарт = 100 разработчиков. 100% эффективность.
11 апр 20, 19:47    [22114722]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
mayton
Member

Откуда: loopback
Сообщений: 46496
ВсеРазумный,

Ты не по адресу. Я все равно не сделаю автоформат на уровне форума. Это тебе надо в раздел Обсуждение нашего сайта
12 апр 20, 08:54    [22114879]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо переделать код. Нужно добавить функции. Это рабочий код  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1341
а зачем там i, j и ещё 2 цикла?
12 апр 20, 10:13    [22114888]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить