0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
1

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

27.12.2015, 15:17. Показов 1692. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2015, 15:17
Ответы с готовыми решениями:

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

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

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

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

19
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 16:08 2
Вроде бы так (не до конца уверен в методе 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  [ТС] 3
сейчас попробую запустить, но все равно спасибо большое)))

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

Решение

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

Решение

rischat, Вам надо обязательно отдельным методом? ил можно в одном сделать?
1
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 19:58  [ТС] 7
так как в условии требуется описать функцию, то да отдельным, это типа показатель того что умеешь описывать функции и использовать
просто преподы очень требовательные и докапываются ко всему)
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 20:43 8
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  [ТС] 9
большое спасибо но не правильно выдаёт номер строки

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

Добавлено через 2 минуты
и всё равно он выдаёт неправильно номер где максимальна сумма
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 21:33 12
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
Хитрая блондиночка $)
1469 / 984 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
27.12.2015, 21:44 13
Внесу свои пять копеек:
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  [ТС] 14
предпоследнее сообщение там одно и то же написал)посмотри
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 21:56 15
rischat, Именно что нет, там оператор был не составной, а теперь составной то бишь теперь все работает, замени на то что написано и проверь
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 22:08  [ТС] 16
да заметил, вставил, но в некоторых случаях выдаёт номер строки 0 хотя не правильно среди строк есть с наибольшой суммой

Добавлено через 1 минуту
он как бы до шел до максимального а потом не сравнивает сейчас запустил вывел 3 а в следкющей строке сумма больше
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
27.12.2015, 22:11  [ТС] 17
вот к примеру
Миниатюры
Перевести программу с Си++ на C#. Поиск в прямоугольной матрице  
0
6 / 6 / 5
Регистрация: 03.11.2012
Сообщений: 46
27.12.2015, 22:23 18
Лучший ответ Сообщение было отмечено 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  [ТС] 19
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 20
rischat, Обращайся, всегда рады помочь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2015, 22:51
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru