Определить количество строк, не содержащих ни одного нулевого элемента - C (СИ)
Формулировка задачи:
Дана целочисленная прямоугольная матрица. Определить:
1. Количество строк, не содержащих ни одного нулевого элемента;
2. Максимальное из чисел, встречающихся в заданной матрице более одного ра
Как бе сделал, но что-то не работает. Понты, с передачей указателя на массив.
Можно ее на C# проще решить???
#include "stdafx.h" #include "conio.h" #include "time.h" #include "stdlib.h" int st=0,s=0; void mas2(int n, double *p[]) { for(int i=0;i<n;i++) { if(s!=0) st++; s=0; for(int j=0;j<n;j++) { if(p[i][j]=0) s++; }} } int _tmain(int argc, _TCHAR* argv[]) { double m[4][4]; srand(time(NULL)); for(int i=0;i<5;i++) {for(int j=0;j<5;j++) m[i][j]=rand()%10;} double *ptr[]={ (double*)&m[0], (double*)&m[1], (double*)&m[2], (double*)&m[3] }; mas2(4,ptr); return 0; }
Решение задачи: «Определить количество строк, не содержащих ни одного нулевого элемента»
textual
Листинг программы
class Program { private static Random rnd = new Random(); private static int Generator() { return (int)(rnd.NextDouble()*10); } private static void FTask(int [,]matr, int n) { int m = matr.Length / n; int i, j, count_r = 0; for(i = 0; i < n; ++i) { for(j = 0; j < m; ++j) if(matr[i, j] == 0) break; if(j == m) ++count_r; } Console.WriteLine("\nКоличество строк, не содержащих ни одного нулевого элемента:\n< {0}", count_r); } private static void STask(int[,] matr, int n) { int m = matr.Length / n; int size = matr.Length; int i, j, k = 0; int []mas = new int[size]; for(i = 0; i < n; ++i) for(j = 0; j < m; ++j) mas[k++] = matr[i, j]; for(i = 0; i < size; ++i) for(j = 0; j < size - i - 1; ++j) if(mas[j] < mas[j + 1]) { mas[j] ^= mas[j + 1]; mas[j + 1] ^= mas[j]; mas[j] ^= mas[j + 1]; } for(i = 0; i < size - 1; ++i) if(mas[i] == mas[i + 1]) { Console.WriteLine("\nМаксимальное из чисел, встречающихся в заданной матрице более одного раза:\n< {0}", mas[i]); break; } } public static void Main(string[] args) { int n, m, i, j; int[,] mas; Console.Write("Количество строк:\n> "); n = Int32.Parse(Console.ReadLine()); Console.Write("Количество столбцов:\n> "); m = Int32.Parse(Console.ReadLine()); mas = new int[n, m]; for(i = 0; i < n; ++i) for(j = 0; j < m; ++j) mas[i, j] = Generator(); Console.WriteLine("\nМатрица:"); for(i = 0; i < n; ++i, Console.WriteLine()) for(j = 0; j < m; ++j) Console.Write("{0} ", mas[i, j]); FTask(mas, n); STask(mas, n); Console.WriteLine(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } }
Объяснение кода листинга программы
- Объявляется класс Program.
- В классе объявляется приватный статический метод Generator, который генерирует случайное число от 0 до 9.
- В классе объявляется приватный статический метод FTask, который считает количество строк матрицы, не содержащих ни одного нулевого элемента.
- В классе объявляется приватный статический метод STask, который сортирует матрицу по возрастанию и находит число, которое встречается в матрице более одного раза.
- В методе Main создается матрица заданного размера, заполняется случайными числами и выводится на экран.
- Вызывается метод FTask для подсчета количества строк, не содержащих ни одного нулевого элемента.
- Вызывается метод STask для поиска максимального числа, встречающегося в матрице более одного раза.
- Выводится сообщение
Press any key to continue . . .
и ожидается нажатие клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д