Вывод массива и вывод строки, где меньше всего переходов с - на + и с + на - - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как изменить этот код, чтобы пользователь сам мог вводить количество столбцов и строк в массиве
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <Windows.h>
#define M 5
#define N 7
int main()
{
    srand(time(NULL));      // новая точка отсчета рнд
    int a[M][N];                // массив
    int i, j;                   // счетчики цикла
    int m, mi;                  // минимум в строке и номер минимальной строки
    int cnt;                        // число смен знака в строке
    int lastsign, sign = 1; // первый знак, текущий знак
 
    // заполянем массив случайными в диапазоне от -10 до +10 и выводим на экран
    for (i = 0; i<M; i++)
    {
        for (j = 0; j<N; j++)
        {
            a[i][j] = -10 + rand() % 21;
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
 
    // подсчитываем количество смен знака:
    for (i = 0; i<M; i++)
    {
        cnt = 0;
        for (j = 0; j<N; j++)
        {
            if (a[i][j] < 0) sign = 0;      // определяем знак
            if (a[i][j] >= 0) sign = 1;
            if (j == 0) lastsign = sign;        // начало строки считаем начальным знаком
            else if (sign != lastsign)          // если знак изменился
            {
                cnt++;                              // считаем
                lastsign = sign;                    // и запоминаем последний знак
            }
        }
        if (i == 0 || cnt < m)                  // если первая строка, считаем ее минимальной
        {
            m = cnt;
            mi = i;
        }
    }
 
    // найденную строку на экран
    for (j = 0; j<N; j++)
        printf("%4d", a[mi][j]);
    printf("\n");
    _getch();
    return 0;
    
}

Решение задачи: «Вывод массива и вывод строки, где меньше всего переходов с - на + и с + на -»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <Windows.h>
 
int main()
{
srand(time(NULL)); // новая точка отсчета рнд
int i, j; // счетчики цикла
int m, mi; // минимум в строке и номер минимальной строки
int cnt; // число смен знака в строке
int lastsign, sign = 1; // первый знак, текущий знак
int x, y;  // число строк и столбцов
 
printf("Ведите число строк и столбцов: ");
scanf("%i%i", &x, &y);
 
int a[x][y]; // массив
// заполянем массив случайными в диапазоне от -10 до +10 и выводим на экран
for (i = 0; i<x; i++)
{
for (j = 0; j<y; j++)
{
a[i][j] = -10 + rand() % 21;
printf("%4d", a[i][j]);
}
printf("\n");
}
printf("\n");
 
// подсчитываем количество смен знака:
for (i = 0; i<x; i++)
{
cnt = 0;
for (j = 0; j<y; j++)
{
if (a[i][j] < 0) sign = 0; // определяем знак
if (a[i][j] >= 0) sign = 1;
if (j == 0) lastsign = sign; // начало строки считаем начальным знаком
else if (sign != lastsign) // если знак изменился
{
cnt++; // считаем
lastsign = sign; // и запоминаем последний знак
}
}
if (i == 0 || cnt < m) // если первая строка, считаем ее минимальной
{
m = cnt;
mi = i;
}
}
 
// найденную строку на экран
for (j = 0; j<x; j++)
printf("%4d", a[mi][j]);
printf("\n");
_getch();
return 0;
 
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Инициализируем генератор случайных чисел
  3. Получаем от пользователя число строк и столбцов
  4. Создаем массив и заполняем его случайными числами от -10 до +10
  5. Подсчитываем количество смен знака в каждой строке
  6. Находим строку с минимальным количеством смен знака
  7. Выводим найденную строку на экран
  8. Ждем нажатия клавиши для выхода из программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы