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

Найти в коде ошибки, препятствующие компиляции

22.11.2013, 10:57. Показов 605. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день у меня в две проблемы и мне кажется что это из-за каких то специфических правил области видимости.
C#
1
2
3
4
5
6
7
8
9
10
11
12
public void Think(out double x1, out double x2)
        {
            D = Math.Pow(B, 2) - 4 * A * C;
            if (D > 0 || 0 == D)
            {
                x1 = (-B + Math.Sqrt(D)) / (2 * A);
                x2 = (-B - Math.Sqrt(D)) / (2 * A);
            }
            else if (D < 0)
            {
                Console.WriteLine("Пока корней нет");
            }
если без блоков if то все работает, но из него метод не видит что я присваиваю значения x1, x2 и:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
double a, b, c, x1, x2;
            try
            {
                Console.WriteLine("Введите первый коэффициент");
                a = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Введите второй коэффициент");
                b = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Введите третий коэффициент");
                c = Convert.ToDouble(Console.ReadLine());
            }catch(Exception e)
            {
                Console.WriteLine(e.Message);
                InpArg();
            }
            
            Nerd nerd1 = new Nerd(a, b, c);
Похожая проблема не видится присваивание значений переменной, скажите пожалуйста как правильно написать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2013, 10:57
Ответы с готовыми решениями:

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include...

Ошибки в коде и при компиляции
Что не так? #include&lt;iostream&gt; using namespace std; int man() { int a=4,b=5; while ((a != 0) &amp;&amp; (b != 0)) { ...

Ошибки в коде при компиляции с помощью GCC
Переписал код из книжки по C++. Переписал один в один, но компилятор выдает ошибки. Сам код // FunctionDemo - демонстрация...

4
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
22.11.2013, 11:09
Нужно больше кода. Переменная "А" и "а" разные. Может быть стоит попробовать вместо "А" использовать nerd1.a, Хотя сложно догадаться откуда в методе Think взялись A,B,C,D и что они означают.
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 6
22.11.2013, 11:23  [ТС]
Полный код:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace QuaEqu
{
    class Program
    {
        
        static void Main(string[] args)
        {
            InpArg();
        }
 
        private static void InpArg()
        {
            double a, b, c, x1, x2;
            try
            {
                Console.WriteLine("Введите первый коэффециент");
                a = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Введите второй коэффециент");
                b = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Введите третий коэффециент");
                c = Convert.ToDouble(Console.ReadLine());
            }catch(Exception e)
            {
                Console.WriteLine(e.Message);
                InpArg();
            }
            
            Nerd nerd1 = new Nerd(a, b, c);
                
            nerd1.Think(out x1, out x2);
 
            Console.WriteLine(x1);
            Console.WriteLine(x2);
            Console.ReadLine();
 
        }
    }
    class Nerd
    {
        public Nerd(double a, double b, double c)
        {
            A = a;
            B = b;
            C = c;
        }
        private double a, b, c, D;
 
        public double A
        {
            get { return a; }
            set { a = value; }
        }
        public double B
        {
            get { return b; }
            set { b = value; }
        }
        public double C
        {
            get { return c; }
            set { b = value; }
        }
 
 
        public void Think(out double x1, out double x2)
        {
            D = Math.Pow(B, 2) - 4 * A * C;
            if (D > 0 || 0 == D)
            {
                x1 = (-B + Math.Sqrt(D)) / (2 * A);
                x2 = (-B - Math.Sqrt(D)) / (2 * A);
            }
            else if (D < 0)
            {
                Console.WriteLine("Пока корней нет");
            }
        }
    }
}
Понимаю что здесь много лишнего, но у меня задача использовать все что рассказал преподаватель.
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
22.11.2013, 12:11
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
        private static void InpArg()
        {
            double a = default(double), b = default(double), c = default(double), x1, x2;
            try
            {
                Console.WriteLine("Введите первый коэффециент");
                a = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Введите второй коэффециент");
                b = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Введите третий коэффециент");
                c = Convert.ToDouble(Console.ReadLine());
            }catch(Exception e)
            {
                Console.WriteLine(e.Message);
                InpArg();
            }
            
            Nerd nerd1 = new Nerd(a, b, c);
                
            nerd1.Think(out x1, out x2);
 
            Console.WriteLine(x1);
            Console.WriteLine(x2);
            Console.ReadLine();
 
        }
    }
    class Nerd
    {
        public Nerd(double a, double b, double c)
        {
            A = a;
            B = b;
            C = c;
        }
        private double a, b, c, D;
 
        public double A
        {
            get { return a; }
            set { a = value; }
        }
        public double B
        {
            get { return b; }
            set { b = value; }
        }
        public double C
        {
            get { return c; }
            set { c = value; }
        }
 
 
        public void Think(out double x1, out double x2)
        {
            x1 = default(double);
            x2 = default(double);
            D = Math.Pow(B, 2) - 4 * A * C;
            if (D > 0 || 0 == D)
            {
                x1 = (-B + Math.Sqrt(D)) / (2 * A);
                x2 = (-B - Math.Sqrt(D)) / (2 * A);
            }
            else if (D < 0)
            {
                Console.WriteLine("Пока корней нет");
            }
        }
    }
Так как ты используешь try и catch, то у тебя может возникнуть ситуация, когда переменные a,b,c,x1,x2 не будут инициализированы, поэтому лучше задать им начальные значения, можно с помощью ключевого слова default или просто 0. И ещё, когда копипастишь смотри внимательно, у тебя когда ты задаешь свойство С в сеттере была ошибка.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
22.11.2013, 13:03
C#
1
2
3
4
5
6
catch(Exception e)
{
     Console.WriteLine(e.Message);
     InpArg();
     return;
}
если при вводе денных возникнет ошибка, то выполнит функцию с новыми данными, а потом продолжит выполнение с ошибочными. потому необходимо прервать выполнение функции в случае ошибки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2013, 13:03
Помогаю со студенческими работами здесь

Исправить ошибки компиляции в коде S - DES криптографии
Добрый вечер,форумчане! Не могу понять в чем ошибка в коде. using System; namespace Program { public class Program { ...

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Ошибки динамической компиляции(Не удаётся найти файл)
Ребят, в чем может быть ошибка и как ее решить? using System; using System.CodeDom.Compiler; using System.Collections.Generic; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru