Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
145 / 145 / 35
Регистрация: 04.06.2011
Сообщений: 578

Запутался в примере, объясните как работает программа

12.08.2012, 16:49. Показов 1393. Ответов 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using System;
 
class threeD
{
    int x, y, z;
 
    public threeD() { x = y = z = 0; }
    public threeD(int i, int j, int k) { x = i; y = j; z = k; }
 
//не ясен вот этот кусок кода.. 
 
    public static threeD operator +(threeD op1, threeD op2)
    {
        threeD result = new threeD();
 
        result.x = op1.x + op2.x;
        result.y = op1.y + op2.y;
        result.z = op1.z + op2.z;
 
//конец
 
        return result;
    }
 
    public static threeD operator -(threeD op1, threeD op2)
    {
        threeD result = new threeD();
        result.x = op1.x - op2.x;
        result.y = op1.y - op2.y;
        result.z = op1.z - op2.z;
 
        return result;
    }
 
    public void show()
    {
        Console.WriteLine(x + ", " + y + ", " + z);
    }
}
 
class ThreeDDemo
{
    static void Main()
    {
        threeD a = new threeD(1, 2, 3);
        threeD b = new threeD(10, 10, 10);
        threeD c;
 
        Console.Write("Координаты точки a: ");
        a.show();
        Console.WriteLine();
 
        Console.Write("Координаты точки b: ");
        b.show();
        Console.WriteLine();
 
        c = a + b;
        Console.Write("Результат сложения a + b: ");
        c.show();
        Console.WriteLine();
 
        c = a + b + c;
        Console.Write("Сложить координаты a + b + c: ");
        c.show();
        Console.WriteLine();
 
        c = c - a;
        Console.Write("Результат вычитания c - a: ");
        c.show();
        Console.WriteLine();
 
        c = c - b;
        Console.Write("Результат вычитания c - b: ");
        c.show();
        Console.WriteLine();
 
        Console.ReadLine();
    }
}
Запутался в этом примере((
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2012, 16:49
Ответы с готовыми решениями:

Объясните как работает полиморфизм на моем примере
Здравствуйте уважаемые. Пожалуйста объясните на моем примере, как это работает. Выдержки из моего кода. class Instrumenti { ...

Объясните,как работает мьютекс на примере кода:
Вот код:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using...

Объясните, как в примере работает приведение типов
Вот такой пример: #include <stdio.h> #include <pthread.h> void * any_func (void * arg) { int a = *(int *) arg; a++; ...

9
310 / 57 / 7
Регистрация: 30.05.2012
Сообщений: 295
12.08.2012, 17:03
В том куске кода определяется оператор + для "сложения" обьектов класса threeD,
чтобы можно было писать c = a + b;
Каждый обьект этого класса имеет 3 поля(3 координаты x, y, z), так вот когда "складываются" 2 обьекта, то на самом деле складываются их соответствующие координаты
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.08.2012, 17:04
Andrew_qb, обычное сложение векторов
0
310 / 57 / 7
Регистрация: 30.05.2012
Сообщений: 295
12.08.2012, 17:04
Ну и аналогично для вычитания
0
 Аватар для bumbaram
47 / 47 / 9
Регистрация: 13.02.2012
Сообщений: 176
12.08.2012, 17:04
В непонятном куске перегружается оператор + для объектов типа threeD.
Собственно только благодаря этому ты можешь писать в коде ниже
c = a + b
0
145 / 145 / 35
Регистрация: 04.06.2011
Сообщений: 578
12.08.2012, 17:37  [ТС]
Цитата Сообщение от СерыйКардинал Посмотреть сообщение
В том куске кода определяется оператор + для "сложения" обьектов класса threeD,
чтобы можно было писать c = a + b;
Каждый обьект этого класса имеет 3 поля(3 координаты x, y, z), так вот когда "складываются" 2 обьекта, то на самом деле складываются их соответствующие координаты
Вот смотри, ход моих мыслей:
C#
1
2
3
4
5
6
7
8
9
public static threeD operator +(threeD op1, threeD op2)/* перегрузка оператора "+" двумя 
ссылками на класс trheeD тобишь когда мы вызываем их то происходит 
сложение трёхмерных координат*/
    {
        threeD result = new threeD(); //здесь мы создали переменную..
 
        result.x = op1.x + op2.x; // сложение
        result.y = op1.y + op2.y; // сложение
        result.z = op1.z + op2.z; // сложение
Но мне кажется что-то не так..

Добавлено через 12 минут
Цитата Сообщение от Andrew_qb Посмотреть сообщение
result.x = op1.x + op2.x; // сложение
( переменная result ссылается на x и благодаря ссылкам op1 и op2 мы складываем три числа, одной переменной и помещаем их в result.x)
0
12 / 12 / 7
Регистрация: 29.03.2011
Сообщений: 55
12.08.2012, 19:17
Цитата Сообщение от Andrew_qb Посмотреть сообщение
( переменная result ссылается на x и благодаря ссылкам op1 и op2 мы складываем три числа, одной переменной и помещаем их в result.x)
Складываем два числа (координаты х) и помещаем их в result.x, а потом складываем координаты у и помещаем их в result.у, складываем координаты z и помещаем их в result.z.
В результате получаем вектор result, который получился покоординатным сложением векторов op1 и op2.

Не по теме:

Уже разжевано же в кашу

0
12.08.2012, 19:58  [ТС]

Не по теме:


Зачем тогда ты ответ написал?
И причём тоже самое что и у меня.
Я лишь хотел узнать верны ли мои рассуждения и всё!

0
310 / 57 / 7
Регистрация: 30.05.2012
Сообщений: 295
13.08.2012, 05:55
Andrew_qb, перегрузка оператора "+" для того, чтобы складывать два любых обьекта op1 и op2 класса threeD
тобишь когда мы вызываем оператор "+" то происходит поочередное сложение соответствующих трёхмерных координат

threeD result = new threeD(); //здесь мы создали переменную чтобы в нее возвращать результат действий оператора "+"
Цитата Сообщение от Andrew_qb Посмотреть сообщение
result.x = op1.x + op2.x; // сложение


Цитата Сообщение от Andrew_qb Посмотреть сообщение
переменная result ссылается на x и благодаря ссылкам op1 и op2 мы складываем три числа, одной переменной и помещаем их в result.x
Полная ерунда

Мы складываем 2 числа:

c = a + b;
Под колпаком происходит:
c.x = a.x + b.x;
c.y = a.y + b.y;
c.z = a.z + b.z;

Добавлено через 57 секунд
не стоит излишне перезадумываться над этим
1
145 / 145 / 35
Регистрация: 04.06.2011
Сообщений: 578
13.08.2012, 11:57  [ТС]
Вот спасибо!

Не по теме:


А то у меня бывает не в ту сторону развиваю мысль.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.08.2012, 11:57
Помогаю со студенческими работами здесь

Объясните, как в данном примере работает friend
friend bool operator== (const String& firstStr, const String& secondStr); Если писать код без friend, то возникает ошибка: ...

Объясните как работает &optional на примере
Объясните пожалуйста как работает здесь опшионал: у него здесь при каждом рекурсивном обращении в f присваивается хвост списка?...

Объясните мне, как работает данный код на примере блок-схемы
Здравствуйте! Уважаемые программисты, объясните мне, как работает данный код. На на примере блок-схемы (т.е. нарисуйте блок-схему, где...

Объясните подробно , пожалуйста , каким образом работает цикл for на данном примере
Значение переменной p, которое будет выведено в ячейку F1Book после выполнения фрагмента программы равно var i,j,t,p:integer; begin...

Объясните, как работает программа
Программа создает меню в консоли, там и вывод анимации и вычисление интеграла и т.д. В условиях указаны "code == 72, code == 13",...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru