Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
1

"string" не содержит определение для "tg"

29.10.2013, 20:44. Показов 2922. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот задание: написать программу, которая строит любые тригонометрические функции и дает пользователю возможность выбора функции с дальнейшей ее визуализацией на экране монитора.
ошибка: "string" не содержит определение для "tg". Не удалось найти метод расширения "tg", принимающий первый аргумент типа "string" (пропущена директива using или ссылка на сборку?) (+аналогично для других функций)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace laboratorna6
{
    enum functions
    {
        sin, cos, tg, ctg
    }
    public partial class Trigonometric : Form
    {
        int i;
        float deltax, deltay, k1 = 1, k2 = 1, d1, d2;
        SizeF prev;
        Pen assimptota;
        functions f = functions.sin;
        float y1, y2, x, X1, Y1, X2, Y2, Y3, Y4;
        List<PointF> p_list = new List<PointF>();
        public Trigonometric()
        {
            choose_function.SelectedIndex = 0;
            prev = this.ClientSize;
            InitializeComponent();
        }
        //***************************************************************************************
        private void Trigonometric_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr = e.Graphics;
            gr.DrawLine(Pens.Black, this.ClientRectangle.Width / 2, 0, this.ClientRectangle.Width / 2, this.ClientRectangle.Height - 40);
            gr.DrawLine(Pens.Black, 0, this.ClientRectangle.Height / 2, this.ClientRectangle.Width, this.ClientRectangle.Height / 2);
            gr.DrawLine(Pens.Black, this.ClientRectangle.Width / 2, 0, this.ClientRectangle.Width / 2 + 10, 20);
            gr.DrawLine(Pens.Black, this.ClientRectangle.Width / 2, 0, this.ClientRectangle.Width / 2 - 10, 20);
            gr.DrawLine(Pens.Black, this.ClientRectangle.Width, this.ClientRectangle.Height / 2, this.ClientRectangle.Width - 20, this.ClientRectangle.Height / 2 - 10);
            gr.DrawLine(Pens.Black, this.ClientRectangle.Width, this.ClientRectangle.Height / 2, this.ClientRectangle.Width - 20, this.ClientRectangle.Height / 2 + 10);
            switch (f)
            {
                case functions.sin:
                    deltay = this.ClientRectangle.Height / 8 * k2;
                    y1 = this.ClientRectangle.Height / 2 + deltay;
                    y2 = this.ClientRectangle.Height / 2 - deltay;
                    deltax = this.ClientRectangle.Width / 12 * k1;
                    x = deltax / 2;
                    p_list.Add(new PointF(0, this.ClientRectangle.Height / 2));
                    i = 0;
                    while (x < this.ClientRectangle.Width)
                    {
                        if (i++ % 2 == 0)
                            p_list.Add(new PointF(x, y2));
                        else
                            p_list.Add(new PointF(x, y1));
                        x += deltax;
                    }
                    gr.DrawCurve(new Pen(Brushes.DarkCyan, 2), p_list.ToArray(), 0.7f);
                    break;
                case functions.cos:
                    x = 0;
                    deltay = this.ClientRectangle.Height / 8 * k2;
                    y1 = this.ClientRectangle.Height / 2 + deltay;
                    y2 = this.ClientRectangle.Height / 2 - deltay;
                    deltax = this.ClientRectangle.Width / 12 * k1;
                    i = 0;
                    while (x < this.ClientRectangle.Width)
                    {
                        if (i++ % 2 == 0)
                            p_list.Add(new PointF(x, y2));
                        else
                            p_list.Add(new PointF(x, y1));
                        x += deltax;
                    }
                    gr.DrawCurve(new Pen(Brushes.Red, 2), p_list.ToArray(), 0.7f); //sin / cos
                    break;
                case functions.tg:
                    deltax = this.ClientRectangle.Width / 8 * k1;
                    X1 = deltax / 1.9f;
                    X2 = X1 + 0.93f * deltax;
                    d1 = this.ClientRectangle.Height / 3 * k2;
                    d2 = this.ClientRectangle.Height / 9 * k2;
                    Y1 = this.ClientRectangle.Height / 2 + d1;
                    Y2 = this.ClientRectangle.Height / 2 - d2;
                    Y3 = this.ClientRectangle.Height / 2 + d2;
                    Y4 = this.ClientRectangle.Height / 2 - d1;
                    assimptota = new Pen(Brushes.Black);
                    assimptota.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                    while (X2 < this.ClientRectangle.Width)
                    {
                        gr.DrawBezier(new Pen(Brushes.DarkGreen, 2), X1, Y1, X1, Y2, X2, Y3, X2, Y4);
                        X1 += deltax;
                        gr.DrawLine(assimptota, X2 + (X1 - X2) / 2, Y1, X2 + (X1 - X2) / 2, Y4);
                        X2 += deltax;
                    }
                    break;
                case functions.ctg:
                    deltax = this.ClientRectangle.Width / 8 * k1;
                    X1 = deltax / 1.9f; ;
                    X2 = X1 + 0.93f * deltax;
                    d1 = this.ClientRectangle.Height / 3 * k2;
                    d2 = this.ClientRectangle.Height / 9 * k2;
                    Y1 = this.ClientRectangle.Height / 2 + d1;
                    Y2 = this.ClientRectangle.Height / 2 - d2;
                    Y3 = this.ClientRectangle.Height / 2 + d2;
                    Y4 = this.ClientRectangle.Height / 2 - d1;
                    assimptota = new Pen(Brushes.Black);
                    assimptota.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                    while (X2 < this.ClientRectangle.Width)
                    {
                        gr.DrawBezier(new Pen(Brushes.DarkOrange, 2), X1, Y4, X1, Y3, X2, Y2, X2, Y1);
                        X1 += deltax;
                        gr.DrawLine(assimptota, X2 + (X1 - X2) / 2, Y1, X2 + (X1 - X2) / 2, Y4);
                        X2 += deltax;
                    }
                    break;
            }
        }
        private void choose_function_SelectedIndexChanged(object sender, EventArgs e)
        {
            string functions = choose_function.SelectedItem.ToString();
            switch (functions)
            {
                case "Sin":
                    f = functions.sin;
                    p_list.Clear();
                    this.Invalidate();
                    break;
                case "Cos":
                    f = functions.cos;
                    p_list.Clear();
                    this.Invalidate();
                    break;
                case "Tg":
                    f = functions.tg;
                    this.Invalidate();
                    break;
                case "Ctg":
                    f = functions.ctg;
                    this.Invalidate();
                    break;
            }
        }
        private void Form1_Resize(object sender, EventArgs e)
        {
            k1 = this.ClientSize.Width / prev.Width;
            k2 = this.ClientSize.Height / prev.Height;
            prev = this.ClientSize;
            p_list.Clear();
            this.Invalidate();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2013, 20:44
Ответы с готовыми решениями:

Ошибка "string" не содержит определение для "IsNullOrWhiteSpace"
Здравствуйте! Пишу приложение для WPF. Возникла следующая ошибка: using System; using...

Ошибки в программе: имя Console не существует в данном контексте и string не содержит определение count
Не работает программа. Выдает ошибки: имя Console не существует в данном контексте и string не...

"String" не содержит определение для "Lenght". Не удалось найти метод расширения "Lenght"
Здравствуйте, не могу скомпилировать код. Выдает ошибку, что &quot;string&quot; не содержит определение для...

JToken не содержит определение для ToObject
ребята помогите не работает код JToken token = JToken.Parse(responeFromServer);...

Task не содержит определение для Run
Task не содержит определение для Run. Что делать?

10
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
29.10.2013, 20:58 2
По теме:
В методе choose_function_SelectedIndexChanged вы объявляете локальную переменную с таким же именем, как ваше перечисление (functions), потому компилятор любое обращение к functions применяет к этой локальной переменной, то бишь к строке.
Варианта два:
1. Переименуйте локальную переменную.
2. Используйте полное имя для доступа к перечислению: laboratorna6.functions.sin

Не по теме:
Замените эти страшненькие свитчи нормальным полиморфизмом.
1
26 / 26 / 9
Регистрация: 22.09.2012
Сообщений: 116
29.10.2013, 20:58 3
в функции
C#
1
        private void choose_function_SelectedIndexChanged(object sender, EventArgs e)
попробуйте переименовать functions. Возможно, локальная переменная не дает увидеть ваш enum
0
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
29.10.2013, 21:10  [ТС] 4
присвоил значение нуль, но при компиляции указывает, что есть ошибка в этой строке:
C#
1
choose_function.SelectedIndex = 0;
что не так то?
0
26 / 26 / 9
Регистрация: 22.09.2012
Сообщений: 116
29.10.2013, 21:15 5
SelectedIndex только для чтения, насколько я помню. Ищи метод вроде setSelect
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
29.10.2013, 21:24 6
ты как-то приковывал бы строку к тексту сообщения об ошибке, чтоб народ здесь не парсил твой код глазами в догадках.
1
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
29.10.2013, 21:29  [ТС] 7
уже почти всё нормально, когда заменил это:
C#
1
choose_function.SelectedIndex = 0;
на это:
C#
1
choose_function.SelectedItem = 0;
график функции построился, но только график "Sin"... что нужно вписать чтобы в комбобоксе выбирать пользователь другие функции(cos, tg и ctg)?

Цитата Сообщение от novi4ok Посмотреть сообщение
ты как-то приковывал бы строку к тексту сообщения об ошибке, чтоб народ здесь не парсил твой код глазами в догадках.

P.S. вот текст ошибки, если кому еще нужно
C#
1
InvalidArgument=Значение '0' недопустимо для 'SelectedIndex'.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
29.10.2013, 21:38 8
поставь brakepoint в строку 123 и пошагово выполни. выполняется ли этот метод в принципе.
0
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
29.10.2013, 22:23  [ТС] 9
Цитата Сообщение от novi4ok Посмотреть сообщение
поставь brakepoint в строку 123 и пошагово выполни. выполняется ли этот метод в принципе.
пошагово программа работает только до 61 строки, дальше повторяется...
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
29.10.2013, 22:45 10
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
пошагово программа работает только до 61 строки, дальше повторяется...
не ставь brakepoints в ф-ях прорисовки, а то никогда оттуда не вылезешь. разве что хочешь действительно посмотреть что там происходит. поставь единственную в самом начале метода choose_function_SelectedIndexChanged() и посмотри, вызывается ли он вообще. к нему должно быть обращение, когда ты меняешь значение в checkbox'e (это ведь checkbox?)
1
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
29.10.2013, 23:00  [ТС] 11
всем спасибо, я уже разобрался, извиняюсь за ваше потерянное время...
0
29.10.2013, 23:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2013, 23:00
Помогаю со студенческими работами здесь

Ошибка с бд: db не содержит определение для Shoes
пишет,что в db.Shoes.Add db не содержит определение для Shoes,помогите пожалуйста using System;...

Byte[] не содержит определение для Sum
хочу вычислить среднюю оценку указанного по имени студента из структуры Student где оценки...

Resources не содержит определение для Contents
Вроде путь указан даже папка есть внутри Resources, но он ни как не воспринимает Contents. В...

String [] не содержит определения для Lenght
Условие: Напишите метод, который проверяет, можно ли из строки str1 путём перестановки символов...

Resource.Xml не содержит определение для RemoteConfigDefaults
Вопросы. 1. Как устранить &quot;Resource.Xml не содержит определение для RemoteConfigDefaults&quot;? 2....

Почему string не содержит определения для TryParse
так получается int i; if (!int.TryParse(s, out i)) ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru