21

Re: Структури

ur_naz, ви розумієте, що людина функції ще не вивчила? Ви пояснюєте людині, що вчить таблицю додавання, що обов'язково треба піднесення у степінь знати, так зрозуміліше? Всьому свій час.

22

Re: Структури

Перший принцип ООП - абстракція. Перед тим як писати функції, треба розробити математичну модель. А ви навіть тип даних не спроможні обізвати. ну що це таке? dek_s Це як ysctysnybwznskmrbfyuksqcmrj.

А функції потрібно було поясняти на першому занятті.

Два питання: шо робимо і як ми це зробимо.

Доречи, для такої простої задачі не потрібно ніяких структур. Але якщо ви вже розпочали , то не треба зупинятися на половині шляху.

23

Re: Структури

От мені реально цікаво - ви ООП вчили до функцій і структур? Це така новітня методика?
Ну і так, наші виші не вчать нормально називати ідентифікатори; однак цікаво - ви теж цього не робите, ви лише лаєте!
Якщо функції треба було пояснювати на першому занятті, то коли саме треба було пояснювати:
- загальне поняття алгоритму;
- основні структурні алгоритми;
- загальний принцип роботи компілятора;
- ідентифікатори;
- змінні;
- типи;
- оператори;
- присвоювання (у людей із цим зазвичай проблема при першому вивченні, хоча, я так розумію, вас, генія, це не стосується);
- введення-виведення;
- булеві значення (а як іще з чимось, складнішим за лінійний алгоритм, працювати?)

Усе на першому занятті? А практичну роботу з кожним пунктом проводити не треба? Ну ви геній, але іншим людям недостатньо дати визначення, а потім дати завдання, що потребує застосування усіх концепцій одночасно, зрозумійте це.

24

Re: Структури

ur_naz написав:

я дав чіткі вказівки, якщо не ясно, дам ще підказку: оператор enum

"Чіткі вказівки". оператор enum.
Слухайте, ну ви ж не знаєте C++, нащо людей брудом поливаєте?

Подякували: leofun011

25

Re: Структури

Не разводіть демагогію. Ніхто не знає с++. Це неможливо.
Якщо навчання розбити хоча б на 2 курси: Інформатика та комп'ютерна техніка та Структури даних та алгоритми (їх обробки). Тоді таких тем не виникало би.

Як мені вам допомогти, якщо ви не розумієте, до чого тут enum? Може спочатку треба попрацювати над математикою?

Єдина перевага використання застарілого методу окремих функцій обробки окремих даних є менша кількість коду (ви навіть цього аргументу на свій захист не привели). Але попри меншу кількість коду, він має набагато меншу читаність. Судячи з того, що ви почали с функції main, ви ігноруєте 4й курс, який потрібен програмісту - Розробка програмного забезпечення - бо одним з перших етапів є визначення алгоритмів та структур даних (лаконічна назва, але не вірна з точністю до навпаки). Бо шаблон коду зазвичай генерує IDE.

Щодо функцій - їх треба було проходити на умовно простих типах даних: цілих, дійсних, літерах, та їх масивах

26

Re: Структури

ur_naz написав:

Ніхто не знає с++. Це неможливо.

:D:D:D

ur_naz написав:

Як мені вам допомогти, якщо ви не розумієте, до чого тут enum?

А як допомогти вам, якщо ви не знаєте, що enum - не оператор?

ur_naz написав:

шаблон коду зазвичай генерує IDE

А використовувати цей шаблон у чомусь, окрім студентських лабораторних - дуже шкідлива практика.

ur_naz написав:

Щодо функцій - їх треба було проходити на умовно простих типах даних: цілих, дійсних, літерах, та їх масивах

Перша розумна думка від вас у цій темі.

Подякували: leofun011

27

Re: Структури

Koala, велике дякую Вам за допомогу. Постараюся це все переглняути і розібратися. Але постараюся більше вас не відривати від справ.

ur_naz написав:

koala, хоч ви не ганьбитесь. Якщо дитина не розуміє, це не повід йому таке писати.

Що до Вас. Вважаю сенсу писати те, що і wander, не має. Розумію, що ви в цій спеціальності досить довго, але постарайтеся зрозуміти і мене, як дитину, яка,можна сказати, вчиться ходити.

28

Re: Структури

Та відривайте, якщо не матиму часу, то просто не відповім :), тільки намагайтеся вкладатися в питання. Базове правило: не очікуйте, що хтось витратить на відповідь більше, ніж ви витратили на питання.

Подякували: Limon1

29

Re: Структури

що ж по-вашому таке цей enum?

30

Re: Структури

Що ви заладили. Можливо досить. Ви схожі на дітей, які не можуть поділити цукерку. Який сенс цієї суперечки і що цим намагаєтесь довести. Ви оба можна сказати спеціалісти в ІТ сфері(узагальнено) .У кожного свої методи, свої рішення. У кожного своя думка, своє бачення. Це програмування і 1 єдиного розв'яку поставленої задачі тут просто не існує. Це типу, все одно що порівнювати java і с++. І та, і та мова має свої плюси та мінуси. І все одно це сперечатись на рахунок цього безглуздо. тим більше , я вважаю, цей форум був створений не для цього.

31

Re: Структури

постарайтеся зрозуміти і мене, як дитину, яка,можна сказати, вчиться ходити.

як для початківця ти замало і зовсім не конкретно питаєш. в першу чергу у гугла. бо гугл не вміє тролити, а на форумах часто-густо цим і займаються. і не завжди на форумі ти знайдеш відповідь, яка буде корисною

32 Востаннє редагувалося ur_naz (16.05.2020 16:20:34)

Re: Структури

від koala ти допомогу отримав. можеш користуватися. а від мене, якщо сперечатися будеш, не отримаєш. бо я вередливий. тому не витрачай  часу на розмилювання. в тебе є конкретне завдання. його і вирішуй. В останнє повторюю: шукай в гуглі  enum і думай навіщо той пришелепкуватий мені його порадив.

33

Re: Структури

Проблема гугла в тому, що він рідко коли дає відповідь на конкретно поставлене питання. Людині це зрозуміти простіше, вона зможе побачити проблему, підсказати, де є помилка і як її можна виправити, на відміну від гугла, який дасть тільки приклад. Це по-перше. По-друге, там забагато інформаціїї, не сказав би що не потрібної, але на даний момент недоречної. І з цієї тонни інформаціїї потрібно вибрати саме ту, яка потрібна, що є не так просто, особливо, коли інколи сам не знаєш що саме потрібно.

34

Re: Структури

питати треба вчитися. наразі ти не на тій стадії, щоб питати де помилка. увесь код  - помилка. бо на смітник. так зрозуміліше?

35

Re: Структури

enum досі був ключовим словом, що використовується для проголошення переліченого типу.
Список операторів у C++ чітко визначений стандартом, і вам ніхто не забороняє прямо зараз взяти і переглянути його.

І ще, ur_naz, ви часом ДПЮ не викладаєте? Я весь час своєму викладачу в школі хотів сказати, але якось нагода не трапилася: фраза "вчитися треба" НЕ ДОПОМАГАЄ ВЧИТИСЯ. Взагалі.

36

Re: Структури

Це я і так вже зрозумів.

37

Re: Структури

enum досі був ключовим словом.

так, оператор це таке ключове слово, що виконує свою функцію  :D

38 Востаннє редагувалося leofun01 (16.05.2020 22:21:39)

Re: Структури

А хтось пробував виконати це завдання ? (крім Limon)
Бо я попробував і там код пишеться не так просто, як ви собі думаєте. Я сьогодні бачив помилки компіляції, яких раніше не бачив.

koala написав:

Які конструктори? Він ледве структури розбирає, причому намагається одночасно з функціями.

в C++ структури можуть містити конструктори. І коли я вивчав C++, то спочатку ми вчили { класи, структури } та їхні конструтори. Функції, їх параметри і типи даних були вивчені в попередньому курсі мови C.
З наведеного коду я зробив висновок, що в цій темі мова йде саме про C++. А там і ООП і конструктори.

Limon, ось код :

Натисніть сюди, щоб розгорнути або згорнути
// point2d.h

#ifndef POINT2D_H
#define POINT2D_H

// #include "polar2d.h" // тут не можна включити
struct polar2d;

// Структура точки в прямокутній системі координат
struct point2d {
    // Координати в прямокутній системі
    float x, y;

    // Конструктор без параметрів (використовується за замовчуванням)
    point2d();
    // Конструктор з параметрами
    point2d(float const &x, float const &y);
    // Конструктор копіювання
    point2d(point2d const &);

    // Повертає довжину вектора
    float length() const;
    // Повертає кут вектора відносно осі X
    float angle() const;

    explicit operator polar2d const() const;
};

// Повертає відстань між двома точками
float distance(point2d const &, point2d const &);

point2d const operator-(point2d const &, point2d const &);
point2d const operator-=(point2d &, point2d const &);

bool operator==(point2d const &, point2d const &);
bool operator!=(point2d const &, point2d const &);

#include <iostream>

std::ostream &operator<<(std::ostream &, point2d const &);
std::istream &operator>>(std::istream &, point2d &);

#endif
// point2d.cpp

#include <cmath>
#include "point2d.h"
#include "polar2d.h"

point2d::point2d() : x(0.f), y(0.f) { }
point2d::point2d(float const &x, float const &y) : x(x), y(y) { }
point2d::point2d(point2d const &v) : x(v.x), y(v.y) { }

float point2d::length() const {
    return std::sqrtf(x * x + y * y);
}
float point2d::angle() const {
    return std::atan2f(y, x);
}

point2d::operator polar2d const() const {
    return polar2d(length(), angle());
}

float distance(point2d const &v1, point2d const &v2) {
    return (v1 - v2).length();
}

point2d const operator-(point2d const &l, point2d const &r) {
    return point2d(l.x - r.x, l.y - r.y);
}
point2d const operator-=(point2d &l, point2d const &r) {
    l.x -= r.x;
    l.y -= r.y;
    return l;
}

bool operator==(point2d const &l, point2d const &r) {
    return l.x == r.x && l.y == r.y;
}
bool operator!=(point2d const &l, point2d const &r) {
    return !(l == r);
}

#include <iostream>

std::ostream &operator<<(std::ostream &out, point2d const &v) {
    return out << "{ x: " << v.x << ", y: " << v.y << " }";
}
std::istream &operator>>(std::istream &in, point2d &v) {
    return in >> v.x >> v.y;
}
// polar2d.h

#ifndef POLAR2D_H
#define POLAR2D_H

// #include "point2d.h" // тут не можна включити
struct point2d;

// Структура точки в полярній системі координат
struct polar2d {
    // Координати в полярній системі
    float length, angle;

    // Конструктор без параметрів (використовується за замовчуванням)
    polar2d();
    // Конструктор з параметрами
    polar2d(float const &length, float const &angle);
    // Конструктор копіювання
    polar2d(polar2d const &);

    // Повертає X координату в прямокутній системі
    float x() const;
    // Повертає Y координату в прямокутній системі
    float y() const;

    explicit operator point2d const() const;
};

// Повертає відстань між двома точками
float distance(polar2d const &, polar2d const &);

bool operator==(polar2d const &, polar2d const &);
bool operator!=(polar2d const &, polar2d const &);

#include <iostream>

std::ostream &operator<<(std::ostream &, polar2d const &);
std::istream &operator>>(std::istream &, polar2d &);

#endif
// polar2d.cpp

#include <cmath>
#include "point2d.h"
#include "polar2d.h"

polar2d::polar2d() : length(0.f), angle(0.f) { }
polar2d::polar2d(float const &length, float const &angle) : length(length), angle(angle) { }
polar2d::polar2d(polar2d const &v) : length(v.length), angle(v.angle) { }

float polar2d::x() const {
    return length * std::cosf(angle);
}
float polar2d::y() const {
    return length * std::sinf(angle);
}

polar2d::operator point2d const() const {
    return point2d(x(), y());
}

float distance(polar2d const &v1, polar2d const &v2) {
    return distance((point2d const)v1, (point2d const)v2);
}

bool operator==(polar2d const &l, polar2d const &r) {
    return l.length == r.length && l.angle == r.angle;
}
bool operator!=(polar2d const &l, polar2d const &r) {
    return !(l == r);
}

#include <iostream>

std::ostream &operator<<(std::ostream &out, polar2d const &v) {
    return out << "{ length: " << v.length << ", angle: " << v.angle << " }";
}
std::istream &operator>>(std::istream &in, polar2d &v) {
    return in >> v.length >> v.angle;
}
// main.cpp

#include <iostream>
#include "point2d.h"
#include "polar2d.h"

int main(int argc, char *argv[]) {
    // ...
    // тут має бути ваш код
    // ...
    return 0;
}
Подякували: Limon1

39

Re: Структури

leofun01 написав:

Функції, їх параметри і типи даних були вивчені в попередньому курсі мови C.

А що, не видно, що тут не було попереднього курсу C?

40

Re: Структури

В пошуках причини помилок я знайшов це

і я згіндий з тим, що там написано.