Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ArtBrytkov
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 26
#1

Векторный калькулятор на классах - C++

29.05.2014, 16:13. Просмотров 459. Ответов 2
Метки нет (Все метки)

Привет всем. Преподаватель дал задание, написать векторный калькулятор на классах.
На массивах в консоли я сделал для 4 операций, но как теперь переписать его на классы, используя перегрузку функций итд, не могу понять.
Прошу помощи от сообщества. Буду признателен, если будет готовое решение хотя бы для одной операции или хотя бы подсказки, что загонять в классы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 16:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Векторный калькулятор на классах (C++):

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...

Стандартный векторный контейнер - C++
"Обычно элементы создаются с помощью оператора new() и освобождаются с помощью оператора delete(), т.е. для создания нового элемента...

Перевести обычный массив в векторный - C++
#include <iostream> #include <stdlib.h> #include <math.h> #include <time.h> using namespace std; int main() { int min =...

дана матрица А(5,5). Получить векторный столбец, элементы которого являются наибольшими по модулю элементов исходной матрицы - C++
дана матрица А(5,5). Получить векторный столбец, элементы которого являются наибольшими по модулю элементов исходной матрицы

Двумерный динамический массив (Получить векторный столбец, элементы которого являются наименьшим по модулю столбцов исходной матрицы) - C++
Подскажите, что делаю не так. Задание такое: Дана матрица A(n,m). Получить векторный столбец, элементы которого являются наименьшим по...

Простой калькулятор и калькулятор с парсингом - C++
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который работает с 2 числами. Возник вопрос, как...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
29.05.2014, 16:47 #2
где код?
ArtBrytkov
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 26
29.05.2014, 16:54  [ТС] #3
Kuzia domovenok, кода на классах нету. Предыдущий вариант что сам писал мог скинуть.
.h файл
Кликните здесь для просмотра всего текста
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
#pragma once
#include <stdio.h>      //Подключение библиотеки стандартного ввода-вывода; 
#include <conio.h>      //Подключение библиотеки консольного ввода-вывода; 
#include <iostream>     //Подключение библиотеки потокового ввода-вывода;
#include <stdlib.h>
#include <windows.h>
 
using namespace std;
//---------------------------------------------------------
//-----------Создание структуры данных
typedef struct
{
    double x, y, z;
}vector;                // Возвращает вектор (x,y,z)
//----------------------------------------------------------
//-----------Создание класса "Векторы"
class vectors           // Класс векторов
{
private:
    vector c1, c2, sum, proizved, vec;  //
    double composit;    // Переменная, хранит произведение векторов
//-----------------------------------------------------------
//-----------Для ввода данных
public:
    void init (vector a, vector b); // Инициализация координат двух векторов
    void inita (vector a);          // Инициализация для одного вектора
//-----------Для операций
    vector add ();                  // Суммирование векторов
    double proizv ();               // Скалярное произведение
    vector vectorn ();              // Векторное произведение
    vector proizvch (int k);        // Умножение вектора на число
//-----------Для вывода данных
    void printV (vector z1);        // Вывод суммы векторов или произведение вектора на число
    void printN (double nn);        // Вывод произведения векторов
 
};
//-------------------------------------------------------------

Файл для ввода вывода
Кликните здесь для просмотра всего текста
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
#include "Calc.h"
//-----------Файл для ввода/вывода данных
 
//-----------Инициализация координат двух векторов
void vectors::init (vector a, vector b) 
{
    c1.x=a.x; c2.x=b.x; // Координаты x
    c1.y=a.y; c2.y=b.y; // Координаты y
    c1.z=a.z; c2.z=b.z; // Координаты z
 
}
//-----------Инициализация координат одного вектора
void vectors::inita (vector a)
{
    c1.x=a.x;           // Координата x
    c1.y=a.y;           // Координата y
    c1.z=a.z;           // Координата z
}
//-----------Вывод результата в виде (x,y,z).
//Для вывода суммы, векторного произведения и произведения вектора на число
void vectors::printV (vector z1)
{
    cout<<"> Результат = {"<<z1.x<<","<<z1.y<<","<<z1.z<<"}"<<endl;
}
//-----------Вывод результата в виде числа
//Для вывода скалярного произведения
void vectors::printN (double nn)
{
    cout<<"> Результат = "<<nn<<endl;
}
//-------------------------------------------------------------

Файл для расчётов
Кликните здесь для просмотра всего текста
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
#include "Calc.h"
//-----------Файл операций
//-----------Сложение векторов
vector vectors::add ()  
{
    sum.x=c1.x+c2.x;    // Суммируем x
    sum.y=c1.y+c2.y;    // Суммируем y
    sum.z=c1.z+c2.z;    // Суммируем z
    return sum;         // Сохраняем результат
}
//-----------Умножение вектора на число
vector vectors::proizvch (int k)
{
    proizved.x=c1.x*k;
    proizved.y=c1.y*k;
    proizved.z=c1.z*k;
    return proizved;
}
//-----------Векторное произведение
vector vectors::vectorn ()
{
    vec.x=c1.y*c2.z-c1.z*c2.y;
    vec.y=c1.z*c2.x-c1.x*c2.z;
    vec.z=c1.x*c2.y-c1.y*c2.x;
    return vec;
}
//-----------Скалярное произведение
double vectors::proizv ()
{
    composit=c1.x*c2.x+c1.y*c2.y+c1.z*c2.z; 
    return composit;    
}
//-------------------------------------------------------------

Ну и main.cpp
Кликните здесь для просмотра всего текста
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
#include "Calc.h"
//----------- Основной рабочий файл
int main ()
{
    system("title Калькулятор векторов");   // Заголовок окна консоли
    system("color F0");  // Установка белого фона и черного текста
    setlocale( LC_ALL,"Russian" );          // Великий и могучий
    int ch;                                 // Для выбора операции через свитч кейс
    // Сообщения о выборе операций
    cout << "\tКакие действие вы будете выполнять." << endl;
    cout << ">1. Сложение двух векторов. " << endl;
    cout << ">2. Скалярное произведение. " << endl;
    cout << ">3. Векторное произведение. " << endl;
    cout << ">4. Умножение вектора на число.\n" << endl;
    cout << "Введите цифру для выбора действия" << endl;
 
    cin>>ch;
    while (ch<1 || ch>4)                            // Выполняется пока условие истинно
        {
        cout<<"Введите корректное число (1-4): ";   // Выводим если ввели что-то не то из цифр
        cin>>ch;                                    // Берем число, введенное пользователем
        }
    switch(ch)  
    {
    case 1: 
        {
            vector b1, d1;
            vectors a1;
            cout<<"Введите координаты первого вектора через пробел:"<<endl;
            cin>>b1.x>>b1.y>>b1.z; // Ввод координат первого
            cout<<"Введите координаты второго вектора через пробел:"<<endl;
            cin>>d1.x>>d1.y>>d1.z; // // Ввод координат второго
            a1.init (b1, d1);
            a1.printV(a1.add ());
            break;  
        }
 
    case 2:
        {
            vector b1, d1;
            vectors a1;
            cout<<"Введите координаты первого вектора через пробел:"<<endl;
            cin>>b1.x>>b1.y>>b1.z; // Ввод координат первого
            cout<<"Введите координаты второго вектора через пробел:"<<endl;
            cin>>d1.x>>d1.y>>d1.z; // // Ввод координат второго
            a1.init (b1, d1);
            a1.printN(a1.proizv());
            break;  
        }
    case 3:
        {
            vector b1, d1;
            vectors a1;
            cout<<"Введите координаты первого вектора через пробел:"<<endl;
            cin>>b1.x>>b1.y>>b1.z; // Ввод координат первого
            cout<<"Введите координаты второго вектора через пробел:"<<endl;
            cin>>d1.x>>d1.y>>d1.z; // // Ввод координат второго
            a1.init (b1, d1);
            a1.printV(a1.vectorn());
            break;  
        }
    case 4:
        {
            vector b1;
            vectors a1;
            int k;
            cout<<"Введите координаты вектора через пробел:"<<endl;
            cin>>b1.x>>b1.y>>b1.z;  // Ввод координат первого
            cout<<"Введите число, на которое умножим вектор"<<endl;
            cin>>k;                 // Ввод числа   
            a1.inita (b1);          // 
            a1.printV(a1.proizvch(k));
        }
 
    }
            system("pause");
}

Не пинайте за быдлокод
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2014, 16:54
Привет! Вот еще темы с ответами:

Подробнее о классах - C++
Извините если я не туда зашел. Я например хочу освоить на хорошем уровне классы. Ну в дальнейшем для написания начальных уровней игр, ну то...

программа в классах - C++
помогите пожалуйста сделать программу в классах построить описание класса содежащего информацию о почтовом адресе организации....

Перечисления в классах - C++
Не могу понять почему в классах работают перечисления? Я не могу в классе обьявить константу, но я могу ее за менить перечислением вроде...

Ссылки в классах - C++
Почему в этой программе нужно использовать ссылки? Как сделать эту программу не используя ссылки? #include &lt;iostream.h&gt; class sum{ ...


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

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

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