Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 5
1

Нужно переписать код простой задачки с языка Java на C# ( до конца не получается )

13.12.2017, 14:37. Просмотров 1242. Ответов 4
Метки java (Все метки)

оригинал на Java (задачка о рюкзаке- жадный алгоритм)

Java
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
54
55
56
public class Main {
 
    public static void main(String[] args) {
        
        
        Scanner sc = new Scanner(System.in);
        System.out.println("Введите кол-во вещей:");
        int Size = sc.nextInt();
 
        System.out.println("Введите вместимость рюкзака:");
        int MaxW = sc.nextInt(); //вместимость
 
        int[][] array = new int[Size][2]; //массив вещей двумерный, заполняется случайно, array[i][j] 
        //где a[5][1] это цена вещи, а a[5][2] это вес
        
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < 2; j++) {
                array[i][j] = (int) Math.round((Math.random() * 100))+1;
            }
        }
 
 
        int price = 0;
        int space = MaxW;
        for (int i = array.length - 1; i > 0; i--) {
            for (int k = 0; k < i; k++) {
                if (array[k][0] / array[k][1] > array[k + 1][0]/ array[k + 1][1]) //находится самая ценная вещь, 
                    //самая ценная вещь по жадному алгоритму, эта та у которой число= (цена разделить на вес) самое большое
                 {
 
                    int tmp = array[k][0];
                    int tmp1 = array[k][1];
                    array[k][0] = array[k + 1][0];
                    array[k][1] = array[k + 1][1];
                    array[k + 1][0] = tmp;
                    array[k + 1][1] = tmp1;
                }
            }
        }
 
        int j = 1;
        for (int i = array.length - 1; i > 0; i--) {
            if (array[i][1] <= space) {
 
                System.out.println("Элемент #" + j + "(" + i + ")" + " Вес: "
                        + array[i][1] + " Цена: " + array[i][0]);
                space -= array[i][1];
                j++;
                price += array[i][0];
            }
        }
        System.out.println("Элементов: " + j + " Общая сумма: " + price
                + " Места занято: " + (MaxW - space) + "/" + MaxW);
        System.out.println("-------------------------------");
    }
}
************************************************
то что сама пыталась перевести на С# , плизз помогите до конца доделать


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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class Scanner
    {
        private TextReader @in;
 
        public Scanner(TextReader @in)
        {
            this.@in = @in;
        }
 
        static void Main(string[] args)
        {
            Scanner sc = new Scanner(System.Console.In);
            Console.WriteLine("Введите кол-во вещей:");
            int Size = Console.Read();
 
            Console.WriteLine("Введите вместимость рюкзака:");
            int MaxW = Console.Read(); //вместимость
 
            int[][] array = new int[Size][2]; 
           
            for (int i = 0; i < array.Length; i++)
            {
                Random random = new Random();
                for (int j = 0; j < 2; j++)
                {
                    array[i][j] = (int)Math.Round((Math.random() * 500)) + 1;
 
                }
            }
 
            int price = 0;
            int space = MaxW;
            for (int i = array.Length - 1; i > 0; i--)
            {
                for (int k = 0; k < i; k++)
                {
                    if (array[k][0] / array[k][1] > array[k + 1][0] / array[k + 1][1]) 
 
                    {
 
                        int tmp = array[k][0];
                        int tmp1 = array[k][1];
                        array[k][0] = array[k + 1][0];
                        array[k][1] = array[k + 1][1];
                        array[k + 1][0] = tmp;
                        array[k + 1][1] = tmp1;
                    }
                }
            }
 
            int j = 1;
 
            for (int i = array.Length - 1; i > 0; i--)
 
            {
                    if (array[i][1] <= space)
                    {
 
                        Console.WriteLine("Элемент #" + j + "(" + i + ")" + " Вес: "
                                + array[i][1] + " Цена: " + array[i][0]);
                        space -= array[i][1];
                        j++;
                        price += array[i][0];
                    }
                }
                Console.WriteLine("Элементов: " + j + " Общая сумма: " + price
                    + " Места занято: " + (MaxW - space) + "/" + MaxW);
                Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
 
            }
        }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2017, 14:37
Ответы с готовыми решениями:

Не получается переложить код с языка C# на язык С
Подскажите пожалуйста, как переложить этот код на язык С using System; using...

Переписать код на F#, Haskel или Erlang с использованием возможностей распараллеливания языка
Есть алгоритм на C#/C++/Java (кому что по душе) поиска наибольшего и наименьшего собственного числа...

Перепишете данный код с языка C++ на Java
Вот код: #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { long...

Перевести простой код Си на Java
Ну вот как то так))) Названиет темы говорит само за себя. Не имею понятия как перевести это в джава...

4
903 / 789 / 328
Регистрация: 08.02.2014
Сообщений: 2,386
13.12.2017, 15:05 2

Не по теме:

Цитата Сообщение от OlyaNya Посмотреть сообщение
то что сама пыталась перевести
по коду больше похоже на то что подключили онлайн кодировщики из джавы)



Добавлено через 9 минут
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
54
55
56
57
58
59
60
61
62
63
static Random _random = new Random();
 
        public static void Main(string[] args)
        {
            Console.WriteLine("Введите кол-во вещей:");
            int Size = Convert.ToInt32(Console.ReadLine());
 
            Console.WriteLine("Введите вместимость рюкзака:");
            int MaxW = Convert.ToInt32(Console.ReadLine()); //вместимость
 
            int[,] array = new int[Size, 2];
 
            for (int i = 0; i < array.GetLength(0); i++)
            {
 
                for (int j = 0; j < 2; j++)
                {
                    int val = _random.Next(-1000,1000) * 100;
                    array[i, j] = (int)Math.Round((double)val) + 1;
                }
            }
 
            int price = 0;
            int space = MaxW;
            for (int i = array.GetLength(0) - 1; i > 0; i--)
            {
                for (int k = 0; k < i; k++)
                {
                    if (array[k, 0] / array[k, 1] > array[k + 1, 0] / array[k + 1, 1])
 
                    {
 
                        int tmp = array[k, 0];
                        int tmp1 = array[k, 1];
                        array[k, 0] = array[k + 1, 0];
                        array[k, 1] = array[k + 1, 1];
                        array[k + 1, 0] = tmp;
                        array[k + 1, 1] = tmp1;
                    }
                }
            }
 
            int l = 1;
 
            for (int i = array.GetLength(0) - 1; i > 0; i--)
 
            {
                if (array[i, 1] <= space)
                {
 
                    Console.WriteLine("Элемент #" + l + "(" + i + ")" + " Вес: "
                                      + array[i, 1] + " Цена: " + array[i, 0]);
                    space -= array[i, 1];
                    l++;
                    price += array[i, 0];
                }
            }
            Console.WriteLine("Элементов: " + l + " Общая сумма: " + price
                              + " Места занято: " + (MaxW - space) + "/" + MaxW);
            Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
 
            Console.ReadKey();
        }
1
186 / 174 / 111
Регистрация: 22.06.2009
Сообщений: 533
13.12.2017, 15:30 3
Лучший ответ Сообщение было отмечено OlyaNya как решение

Решение

OlyaNya,
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
54
55
56
57
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Csh_console_tasks {
    class thread2156260 {
        static void Main(string[] args) {
            Random rand = new Random();
            Console.Write("Введите кол-во вещей: ");
            int Size = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите вместимость рюкзака: ");
            int MaxW = Convert.ToInt32(Console.ReadLine());
            int[,] array = new int[Size, 2];
 
            for (int y = 0; y < array.GetLength(0); y++) {
                for (int x = 0; x < array.GetLength(1); x++) {
                    array[y, x] = (int)Math.Round((rand.NextDouble() * 100)) + 1;
                }
            }
 
            int price = 0;
            int space = MaxW;
            for (int i = array.GetLength(0) - 1; i > 0; i--) {
                for (int k = 0; k < i; k++) {
                    if ((array[k, 0] / (double)array[k, 1]) > (array[k + 1, 0] / (double)array[k + 1, 1])) //находится самая ценная вещь, 
                                                                                                           //самая ценная вещь по жадному алгоритму, эта та у которой число= (цена разделить на вес) самое большое
                    {
 
                        int tmp = array[k, 0];
                        int tmp1 = array[k, 1];
                        array[k, 0] = array[k + 1, 0];
                        array[k, 1] = array[k + 1, 1];
                        array[k + 1, 0] = tmp;
                        array[k + 1, 1] = tmp1;
                    }
                }
            }
 
            int j = 1;
            for (int i = array.GetLength(0) - 1; i > 0; i--) {
                if (array[i,1] <= space) {
 
                    Console.WriteLine("Элемент #" + j + "(" + i + ")" + " Вес: "
                             + array[i, 1] + " Цена: " + array[i, 0]);
                    space -= array[i, 1];
                    j++;
                    price += array[i, 0];
                }
            }
            Console.WriteLine("Элементов: " + j + " Общая сумма: " + price
                    + " Места занято: " + (MaxW - space) + "/" + MaxW);
            Console.WriteLine("-------------------------------");
        }
    }
}
1
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 5
13.12.2017, 15:49  [ТС] 4
C#
1
2
3
4
5
for (int j = 0; j < 2; j++)
                {
                    int val = _random.Next(0, 100) * 10; // изменила чтобы не было отриц
                    array[i, j] = (int)Math.Round((double)val) + 1;
                }
а что тут сделать , чтобы "вес" менялся?? он всегда 1, нужно чтобы рандомно.. или я чего-то не поняла
0
186 / 174 / 111
Регистрация: 22.06.2009
Сообщений: 533
13.12.2017, 17:56 5
OlyaNya, просто значения слишком большие..
C#
1
2
3
4
for (int j = 0; j < 2; j++)
{
      array[i, j] = _random.Next(1, 100) ;
}
вот так норм будет
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2017, 17:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Переписать код с Java на JS
File file = new File(workDir + fileName); InputStream is = new FileInputStream(file); ...

Переписать код с Java на С++

Переписать код Java на C#
Здравствуйте, кто может переписать этот код под C# package sample1; import...

Переписать код с С# на Java
Нужно перевести данную процедуру: private void SetStartingRegister(string str) { ...

Переписать код с Java на C#
уважаемые программисты С#. перепишете пожалуйста эту программу на C#. очень надо. package thread;...

Переписать код с Java на С++
Есть код Джава, и его необходимо переписать на С++ import java.io.BufferedReader; import...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.