Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 08:15   #1
Tase4ka
Пользователь
 
Аватар для Tase4ka
 
Регистрация: 08.12.2010
Сообщений: 27
По умолчанию

Здраствуйте программисты. Не могли бы вы мне помочь с лабораторной работой по программированию. Вот условия задания:
Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке.
Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента.

Мне нужно её сделать в методе.

Первое подзадание я сделала, а со вторым у меня проблема, не могли бы вы мне её сделать?
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication5
{
class Program
{
public static void matrix(int[,] array, int a_count, int c_count) //матрица
{
Random rand = new Random();
for (int i = 0; i < a_count; i++)
{
for (int j = 0; j < c_count; j++)
{
array[i, j] = rand.Next(-10, 10);
}
}
}
public static void ishod(int[,] array, int a_count, int c_count)
{
for (int i = 0; i < a_count; i++)
{
for (int j = 0; j < c_count; j++)
{
Console.Write("\t{0}", array[i, j]);
}
Console.Write("\n");
}

}
public static void minuse(int[,] array, int a_count, int c_count)
{
Console.WriteLine("Столбец без отрицательного элемента:");
...
вот где стоит ... там дальше я не знаю как делать. За ранее спасибо!

Последний раз редактировалось Stilet; 09.12.2010 в 08:34.
Tase4ka вне форума Ответить с цитированием
Старый 09.12.2010, 08:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю такое:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        private static bool Входит(int[,] row, int value,int index) {
            for (int i = 0; i < row.GetLength(1) - 1;i++ )
            {
                if (row[index,i] == value) return true;
            }
            return false;
        }
        public static void matrix(int[,] array) //матрица
        {
            Random rand = new Random();
            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < (array.GetLength(1)-1); j++)
                {
                    int k=rand.Next(-10, 10);
                    if(Входит(array,k,i)) array[i,array.GetLength(1)-1]++;
                    array[i, j] = k;
                }
            }
        }
        public static void sorta(int[,] array) {
            int k=array.GetLength(1)-1;
            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < (k); j++)
                {
                    if (array[i, k] < array[j, k]) {
                        for (int e = 0; e < k+1; e++) {
                            int r = array[i, e]; array[i, e] = array[j, e]; array[j, e] = r;
                        }
                    }
                }
            }
        }
        public static void ishod(int[,] array)
        {
            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < array.GetLength(1); j++)
                {
                    Console.Write("\t{0}", array[i, j]);
                } 
                Console.Write("\n");
            }
        }

        static void Main(string[] args)
        {
            int[,] arr = new int[5, 4];
            matrix(arr);            ishod(arr);
            Console.WriteLine();
            sorta(arr);             ishod(arr);
            Console.ReadKey();

        }
    }
}
Смысл понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2010, 11:34   #3
Tase4ka
Пользователь
 
Аватар для Tase4ka
 
Регистрация: 08.12.2010
Сообщений: 27
По умолчанию

Ну не очень. но мне нужно второе подзадание сделать. у меня с ним проблемы
Tase4ka вне форума Ответить с цитированием
Старый 09.12.2010, 12:06   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так циклы то в твоем примере есть же. Вот используй их.
А в условии пропиши
Код:
if(array[j, i]>0) столбец j не подходит
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2010, 12:21   #5
Tase4ka
Пользователь
 
Аватар для Tase4ka
 
Регистрация: 08.12.2010
Сообщений: 27
По умолчанию

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
public static void matrix(int[,] array, int a_count, int c_count) //матрица
{
Random rand = new Random();
for (int i = 0; i < a_count; i++)
{
for (int j = 0; j < c_count; j++)
{
array[i, j] = rand.Next(-10, 10);
}
}
}
public static void ishod(int[,] array, int a_count, int c_count)
{
for (int i = 0; i < a_count; i++)
{
for (int j = 0; j < c_count; j++)
{
Console.Write("\t{0}", array[i, j]);
}
Console.Write("\n");
}

}
public static void minuse(int[,] array, int a_count, int c_count)
{
Console.WriteLine("Столбец без отрицательного элемента:");
   for (int i = 0; i < a_count; i++)
{
for (int j = 0; j < c_count; j++)
    if(array[j, i]>0)
        Console.WriteLine();
               }}}}
   static void Main(string[] args)
                {

                        Console.WriteLine("Введите кол-во столбцов");
                        int y = int.Parse(Console.ReadLine());
                        Console.WriteLine("Введите кол-во строк");
                        int z = int.Parse(Console.ReadLine());
                        int[,] mas = new int[z, y];
                        matrix(mas, z, y); //матрица
                        Console.Write("\n");
                        ishod(mas, z, y); //вывод исходной матрицы
                        Console.Write("\n");
                        ishod(mas, z, y); //вывод исходной матрицы
                        Console.Write("\n");
                        minuse(mas, z, y);
                        Console.ReadLine();

}
}}
вот что у меня получилось. но что то тут не так
Tase4ka вне форума Ответить с цитированием
Старый 09.12.2010, 13:28   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ладно. Идею ты явно не увидела...
попробую пояснить
Пишем функцию
Код:
bool ТутЕстьОтрицательный(int[,] array, int колонка){
 for(int i:=0;i<array.GetLength(0);i++){
  if(array[i,колонка]<0) return true;
 } 
 return false;
}
Которая возвращает да или нет если таком-то столбце есть отрицательный.
И применяем ее
Код:
public static void minuse(int[,] array, int a_count)
{
 Console.WriteLine("Столбец без отрицательного элемента:");
 for (int i = 0; i < a_count; i++)
 {
    if(ТутЕстьОтрицательный(array,i))   Console.WriteLine("{0} столбец с минусами",i);
 }
}
Теперь идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2010, 14:26   #7
Tase4ka
Пользователь
 
Аватар для Tase4ka
 
Регистрация: 08.12.2010
Сообщений: 27
По умолчанию

Код:
 if(ТутЕстьОтрицательный(array,i))
Вот сдесь что надо поставить где тут есть отрицательный? Bool?
Tase4ka вне форума Ответить с цитированием
Старый 09.12.2010, 15:43   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ничего там не надо. Эта функция вернет false если отрицательных нет, или вернет true если отрицательный есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2010, 16:25   #9
Tase4ka
Пользователь
 
Аватар для Tase4ka
 
Регистрация: 08.12.2010
Сообщений: 27
По умолчанию

у меня в этом месте он ошибку выдаёт
Tase4ka вне форума Ответить с цитированием
Старый 09.12.2010, 17:32   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
у меня в этом месте он ошибку выдаёт
Вижу )))))))))))))) Красиво смотрится
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерные массивы Горящее сердце Помощь студентам 2 26.05.2010 20:12
Двумерные массивы... BarSenok Паскаль, Turbo Pascal, PascalABC.NET 25 03.05.2010 00:11
Двумерные массивы St1mkA Помощь студентам 9 05.04.2010 21:26
Двумерные массивы Lioness Помощь студентам 2 06.01.2008 12:39