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

Отладчик выполняет Решение по разному и выдает совсем разные решения задачи

10.09.2021, 15:20. Показов 1199. Ответов 5
Метки нет (Все метки)

Я на одном из начинающих этапах изучения C#. Но вот беда случилась и я не понимаю что происходит. Какая разница в выполнении проги" запуск без отладки" и выполнение "шаг с заходом" (через F11). Я решал задачу "Задано три треугольника со своими сторонами (a, b, c). Найти треугольник с наибольшим периметром или наибольшей площадью. Всегда ли это будет один и тот же треугольник?". Проблема в том, что отладчик выполняет по разному и выдает совсем разные решения этой задачи. Как с этим быть и что с этим делать?
видео как работает эта "ошибка" в ютуб:

код:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace task6
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] A = new int[3] ;
            int[] B = new int[3] ;
            int[] C = new int[3] ;
            A = CreateValue(A);
            B = CreateValue(B);
            C = CreateValue(C);
            int[] asp = SquarePerimeter(A);
            int[] bsp = SquarePerimeter(B);
            int[] csp = SquarePerimeter(C);
            Console.WriteLine($"Площади : A {asp[0]}, B {bsp[0]}, C {csp[0]}");
            Console.WriteLine($"Периметры : A {asp[1]}, B {bsp[1]}, C {csp[1]}");
            Console.ReadLine();
 
        }
        static int[] CreateValue(int[] myArray)
        {
        Random random = new Random();
        for (int i = 0; i< myArray.GetLength(0); i++)
            {
                myArray[i] = random.Next(1, 20);
            }
        return myArray;
        }
        static int[] SquarePerimeter(int[] myArray)
        {
            int perimeter = 0;
            int square = 0;
            int[] SP = new int[2];
            for (int i = 0; i < myArray.Length; i++)
            {
                perimeter += myArray[i];
                square = myArray[i];
            }
            SP[1] = perimeter;
            SP[0] = square;
            return SP;
 
            
        }
 
 
    }
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Отладчик выполняет Решение по разному и выдает совсем разные решения задачи   Отладчик выполняет Решение по разному и выдает совсем разные решения задачи  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2021, 15:20
Ответы с готовыми решениями:

Немного непонятно условие задачи, вроде бы легкая,но решения разные лезут,но ответ преподавателю не нравится
В отделение связи поступило 6 телеграмм. Телеграммы случайным образом распределяют по четырем...

Цикл по-разному выполняет одинаковые команды
Здравствуйте, пишу программу. Если вкратце, то программа сводит кое-какую задачу к задаче линейного...

Решение задачи по скользящему графику используя Поиск решения
Пожалуйста помогите оформите задачу в EXcel В разные дни недели магазину требуется следующее...

Нужно решение или направление решения задачи, тематика структуры, файлы
Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан файл F содержащей...

5
501 / 299 / 95
Регистрация: 06.03.2017
Сообщений: 1,166
10.09.2021, 15:24 2
Конечно он всегда будет разные значения выдавать, ведь у вас Random
0
Администратор
Эксперт .NET
13786 / 11172 / 4558
Регистрация: 17.03.2014
Сообщений: 22,533
Записей в блоге: 1
10.09.2021, 18:27 3
Лучший ответ Сообщение было отмечено NikkoLAz как решение

Решение

NikkoLAz, проблема не в отладчике, а в неверном использовании Random. Перенесите random из строки №29
C#
29
        Random random = new Random();
на уровень класса
C#
1
static Random random = new Random();
и поведение будет одинаковым. Почему так читайте здесь - https://www.cyberforum.ru/post8915539.html
1
0 / 0 / 0
Регистрация: 10.09.2021
Сообщений: 3
10.09.2021, 21:59  [ТС] 4
Цитата Сообщение от OwenGlendower Посмотреть сообщение
static Random random = new Random();
Спасибо большое, помогло! )) Я просто думал что создавая метод CreateValue при использовании его рандом будет генерироваться вновь и вновь при каждом использовании.
Но как тогда оправдать поведение запуска "шаг с заходом"? Ведь он выдал результат совсем другой и это сбивает меня с толку))
0
Администратор
Эксперт .NET
13786 / 11172 / 4558
Регистрация: 17.03.2014
Сообщений: 22,533
Записей в блоге: 1
10.09.2021, 22:17 5
NikkoLAz, вы по ссылке переходили? Там всё описано.
0
0 / 0 / 0
Регистрация: 10.09.2021
Сообщений: 3
10.09.2021, 22:32  [ТС] 6
Да, но я сразу не понял. Сейчас понял, спасибо еще раз и прошу прощения за мою глупость)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2021, 22:32

Реализовать статическое и динамическое решение, оформив основные этапы решения задачи в виде функций.
Помогите плиииииииз(( Реализовать статическое и динамическое решение, оформив основные...

Отладчик VS показывает разные значения
При отладке постоянно встречаюсь с такой фигнёй: до входа в какую-либо процедуру отладчик...

Решение транспортной задачи методом максимального элемента (нужно просто автоматизировать процесс решения задачки)
Мне нужна помощь, кураторство в выполнении программы или создание программы с дальнейшим...

Решение задачи используя один из способов(подбор параметра, поиск решения или таблица значений)
Здравствуйте, есть задача : Фирме, торгующей компьютерной техникой, необходимо закупить в другом...

Разные браузеры отображают по разному блок
Возникла проблема с версткой. На первом скриншоте - скриншот с Google Chrome - все отображается как...

Разные браузеры по-разному отображают страницу
&lt;html&gt; &lt;tdead&gt; &lt;table border=1&gt; &lt;tr&gt;&lt;td&gt;&quot;111&quot;&lt;/td&gt;&lt;/tr&gt;...


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

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

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