Определить количество строк, не содержащих ни одного нулевого элемента - 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);
    }
}

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

  1. Объявляется класс Program.
  2. В классе объявляется приватный статический метод Generator, который генерирует случайное число от 0 до 9.
  3. В классе объявляется приватный статический метод FTask, который считает количество строк матрицы, не содержащих ни одного нулевого элемента.
  4. В классе объявляется приватный статический метод STask, который сортирует матрицу по возрастанию и находит число, которое встречается в матрице более одного раза.
  5. В методе Main создается матрица заданного размера, заполняется случайными числами и выводится на экран.
  6. Вызывается метод FTask для подсчета количества строк, не содержащих ни одного нулевого элемента.
  7. Вызывается метод STask для поиска максимального числа, встречающегося в матрице более одного раза.
  8. Выводится сообщение Press any key to continue . . . и ожидается нажатие клавиши.

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


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

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

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