Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19

Перевести программу с Си++ на C#. Поиск в прямоугольной матрице

27.12.2015, 15:17. Показов 2083. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста!!! условие: написать и протестировать ФУНКЦИЮ для нахождения в прямоугольной матрице номера строки, имеющей максимальную сумму элементов
вот программа на СИ++ просто в СиШарп вообще не разбираюсь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<stdlib.h>
#include<time.h>
#include<iostream>
#include<conio.h>
#define N 4
#define M 2
using namespace std;
int nom(int a[N][M])
{
  int s=0, s1=0, d=1, k=0, i, j;
  for (i=0; i<1; i++)
    for(j=0; j<M; j++)
      s=s+a[i][j];
  while (k<N)
   {
     for (i=N-N+k; i<N-N+k+1; i++)
       for (j=0; j<M; j++)
         s1=s1+a[i][j];
    if (s<s1)
      {
        s=s1;
        d=k+1;
      }
    s1=0;
    k=k+1;
   }
return d;
}
 
int main()
{
      int a[N][M];
      int i,j,nomer;
srand(time(NULL));
for (i=0; i<N; i++)
      {
          for (j=0; j<M; j++)
          a[i][j]=rand()%(11)-5;
      }
 
for (i=0; i<N; i++)
      {
          for (j=0; j<M; j++)
          cout<<a[i][j]<<"\t";
          cout<<"\n";
      }
 
nomer=nom(a);
 
cout<<"Nomer stroki:"<<nomer<<"\n";
getch();
return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2015, 15:17
Ответы с готовыми решениями:

Двумерные массивы, надо написать программу по целочисленной прямоугольной матрице
Дана целочисленная прямоугольная матрица. Определить: 1) количество строк, не содержащих ни одного нулевого элемента; 2) максимальное из...

Вычисления в прямоугольной матрице
Добрый вечер уважаемые форумчане !Нужна ваша помощь! Дана целочисленная прямоугольная матрица. Вычислить: 1)минимальный по модулю...

Задание по прямоугольной матрице
По заданию нужно Дана целочисленная прямоугольная матрица. Определить - количество строк, не содержащих ни одного нулевого элемента ...

19
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 16:08
Вроде бы так (не до конца уверен в методе nom):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
namespace matrix;
return int nom(int[,] a[x,n]) 
{
int s=0, s1=0, d=1, k=0, i, j;
for (i=0; i<1; i++)
for(j=0; j<M; j++)
s=s+a[i,j];
while (k<N)
{
for (i=N-N+k; i<N-N+k+1; i++)
for (j=0; j<M; j++)
s1=s1+a[i,j];
if (s<s1)
{
s=s1;
d=k+1;
}
s1=0;
k=k+1;
}
return d;
}
 
static void main()
{
int[,] a = new int[x,n] //n - Количество столбцов, x - строк
int i,j,nomer;
Random rand = new Random(); //Объявление рандомайзера
srand(time(NULL)); //извини с этой строчкой не помогу, ибо не знаю что она делает
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
a[i,j]=rand.Next(11)-5; //применение рандомайзера 
}
 
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
Console.Write(a[i,j] +"\t");
Console.Write("\n");
}
 
nomer=nom(a);
 
Console.Write("Nomer stroki:" + nomer + "\n");
getch(); // не знаю что это
Console.ReadKey();
}
1
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 17:01  [ТС]
сейчас попробую запустить, но все равно спасибо большое)))

Добавлено через 6 минут
а вы можете прям всю программу скинуть с подключением библиотек?
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 17:24
Лучший ответ Сообщение было отмечено rischat как решение

Решение

Цитата Сообщение от rischat Посмотреть сообщение
а вы можете прям всю программу скинуть с подключением библиотек?
Зачем? Если достаточно одной? Вообще эта программа достаточно странная, и использует аж целый метод для вычисления элементарной вещи. Могу вам написать свою программу, она короче и быстрее.
1
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 19:26  [ТС]
если не сложно то буду благодарен, просьба только можно с комментариями
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 19:55
Лучший ответ Сообщение было отмечено rischat как решение

Решение

rischat, Вам надо обязательно отдельным методом? ил можно в одном сделать?
1
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 19:58  [ТС]
так как в условии требуется описать функцию, то да отдельным, это типа показатель того что умеешь описывать функции и использовать
просто преподы очень требовательные и докапываются ко всему)
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 20:43
rischat, Лови :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
 
namespace CyberForumHelp1
{
    class Program
    {
 
        public static int cifra;
 
        static void Main()
        {
            int i, x = 4, n = 2, z;
            int[,] a = new int[x, n]; //Обьявляем двумерный массив
            Random rnd = new Random(); // Обьявляем рандом
            for (i = 0; i < x; i++)
            {
                for (z = 0; z < n; z++)
                {
                    a[i, z] = rnd.Next(-50, 50); //присваиваем значениям из массива рандомное число
                    Console.Write(a[i,z] + " ");
                }
                Console.WriteLine();
            }
            znach(a); //передаем в метод весь массив
 
            Console.WriteLine(cifra);
            Console.ReadLine();
        }
 
        public static void znach(int[,] a)
        {
            int i, x = 0, z, summ = 0, d = 0;
            for (i = 0; i < 4; i++)
            {
                for (z = 0; z < 2; z++)
                    summ += a[i, z]; //считаем сумму строки
                if (summ > d) //если сумма строки больше чем сумма наибольшей строки (d)
                {
                    d = summ;
                    cifra = i; //Запоминаем номер строки
                }
            }
            
        }
 
    }
}
1
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 21:09  [ТС]
большое спасибо но не правильно выдаёт номер строки

Добавлено через 5 минут
нам необходимо подсчитать сумму элементов 1 строки и с ней потом сравнивать все остольные, а так он выдаёт 0
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 21:27
rischat, Строки или столбца?
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 21:31  [ТС]
строки

Добавлено через 2 минуты
и всё равно он выдаёт неправильно номер где максимальна сумма
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 21:33
rischat, Всё, увидел, мой косяк) вместо этого
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void znach(int[,] a)
        {
            int i, x = 0, z, summ = 0, d = 0;
            for (i = 0; i < 4; i++)
            {
                for (z = 0; z < 2; z++)
                    summ += a[i, z]; //считаем сумму строки
                if (summ > d) //если сумма строки больше чем сумма наибольшей строки (d)
                {
                    d = summ;
                    cifra = i; //Запоминаем номер строки
                }
            }
            
        }
Поставь вот это:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void znach(int[,] a)
        {
            int i, z, summ = 0, d = 0;
            for (i = 0; i < 4; i++)
            {
                for (z = 0; z < 2; z++)
                {
                    summ += a[i, z];
                    if (summ > d)
                    {
                        d = summ;
                        cifra = i;
                    }
                }
            }
            
        }
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
27.12.2015, 21:44
Внесу свои пять копеек:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        {
            int[,] a= new int[5,5];
            int[] m = new int[5];
            int i,j,imax;
            Random r= new Random(100);
            for (i = 0; i < a.GetLength(0); i++) {
                for (j = 0; j < a.GetLength(1); j++) {
                    a[i, j] = r.Next()%100;
                    Console.Write("{0}\t", a[i, j]);
                    m[i] += a[i, j];
                }
                Console.WriteLine("");
            } Console.WriteLine("");
            imax = 0; for (i = 0; i < m.GetLength(0); i++) if (m[i] > m[imax]) imax = i;
            Console.WriteLine("Строка с максимумом {0}: ",imax);
            for (i = 0; i < a.GetLength(1); i++) Console.Write("{0}\t", a[imax,i]);
            Console.ReadKey();
        }
Вдруг пригодится...
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 21:50  [ТС]
предпоследнее сообщение там одно и то же написал)посмотри
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 21:56
rischat, Именно что нет, там оператор был не составной, а теперь составной то бишь теперь все работает, замени на то что написано и проверь
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 22:08  [ТС]
да заметил, вставил, но в некоторых случаях выдаёт номер строки 0 хотя не правильно среди строк есть с наибольшой суммой

Добавлено через 1 минуту
он как бы до шел до максимального а потом не сравнивает сейчас запустил вывел 3 а в следкющей строке сумма больше
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 22:11  [ТС]
вот к примеру
Миниатюры
Перевести программу с Си++ на C#. Поиск в прямоугольной матрице  
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 22:23
Лучший ответ Сообщение было отмечено rischat как решение

Решение

rischat, После
C#
1
2
3
4
5
6
7
8
9
for (z = 0; z < 2; z++)
                {
                    summ += a[i, z];
                    if (summ > d)
                    {
                        d = summ;
                        cifra = i;
                    }
                }
добавь это
C#
1
summ = 0;
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 22:42  [ТС]
for (z = 0; z < 2; z++)
{
summ += a[i, z];
if (summ > d)
{
d = summ;
cifra = i+1;
}
}

summ = 0;
}

}

}
}
добавил 1 чтобы выдавал не 0 строку , а 1 таким образом отсччёт с 1 до 4
ещё раз спасибо большое всё работает, рад что есть такие люди которые могут бескорыстно оказать помощь)))
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 22:51
rischat, Обращайся, всегда рады помочь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2015, 22:51
Помогаю со студенческими работами здесь

Если в прямоугольной матрице
Нужна помощь с таким заданием: Если в прямоугольной матрице А (m*n) меньше половины столбцов содержит отрицательные элементы, то все...

Задача о прямоугольной матрице
Помогите пожалуйста Дана целочисленная прямоугольная матрица. Определить: • количество строк, не содержащих ни одного нулевого...

В прямоугольной матрице размером M*K
В прямоугольной матрице размером M*K, имеющее имя MAM содержаться целые числа. M-число строк,К-число столбоцов. Ввести элементы матрицы с...

Переставить строки в прямоугольной матрице
Ввожу размерность. Ввожу элементы матрицы. Определяю максимальную сумму элементов среди строк. Определяю минимальную сумму элементов...

Аппроксимация диагонали в прямоугольной матрице
Добрый вечер В этот раз буду краток и точен и надеюсь очень на помощь так как застрял в своих расчетах. Дана матрица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru