Вывод массива и вывод строки, где меньше всего переходов с - на + и с + на - - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Инициализируем генератор случайных чисел
- Получаем от пользователя число строк и столбцов
- Создаем массив и заполняем его случайными числами от -10 до +10
- Подсчитываем количество смен знака в каждой строке
- Находим строку с минимальным количеством смен знака
- Выводим найденную строку на экран
- Ждем нажатия клавиши для выхода из программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д