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

Простенький класс работы с комплексными числами. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не печатает русский текст http://www.cyberforum.ru/cpp-beginners/thread358307.html
Здравствуйте, у меня возникла проблема, я не могу печать русский текст.Вместо текста, непонятные ероглифы. Использую я C++ CodeBlocks. Компилятор: MinGW(gcc) #include <iostream> using namespace std; int main() { cout << "Привет" << endl; }
C++ Помогите развязать задачу очень нужно на С++ Задан массив чисел. Если есть элемент равен а, то результат равен сумме элементов, которые идут после а, в противном случае результатом будет число 10 http://www.cyberforum.ru/cpp-beginners/thread358301.html
в данной целочисленной матрице 6 на 6 указать индексы всех элементовс наибольшими значениями. C++
1. в данной целочисленной матрице 6 на 6 указать индексы всех элементовс наибольшими значениями. 2. в данной действительной квадратной матрице 5 на 5 найти сумму элементов строки в которой располоожен элемент с положительным значением . предполагается что такой элемент единственный.
найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц C++
Нужно найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. В чем ошибка ? #include <iostream> #include <stdio.h> using namespace std; int main() { freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
C++ Помогите понять формулировку http://www.cyberforum.ru/cpp-beginners/thread358250.html
Объясните пожалуйста суть задания. С языком С не знаком. Только не не большие знания С++ Строки данного класса строятся по правилам записи идентификаторов в языке С и могут включать в себя только те символы, которые могут входить в состав С-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая СТРОКА_ИДЕНТИФИКАТОР
C++ Программно нажать пробел в активном окне Уважаемы форумчане, подскажите пожалуйста как создать бесконечный цикл нажатия пробела в активном окне. ЗЫ: Гуглил - не нашел ЗЫ2: Строго не судить - C++ учу второй день Заранее спасибо! подробнее

Показать сообщение отдельно
Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97

Простенький класс работы с комплексными числами. - C++

29.09.2011, 22:17. Просмотров 1713. Ответов 15
Метки (Все метки)

Добрый вечер, уважаемые!
На днях решил вспомнить то, чему учили в университете и понял, что много чего забыл. Попробовал написать класс работы с комплексными числами. Вот что получилось. Скорее всего получилось очень и очень коряво. Вот именно за этим к Вам, уважаемые, и обращаюсь. Вопросы - внизу.

Драйвер класса.
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
#include "stdafx.h"
#include "complex.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
int main(){
    complex * number, sum, diff; // Указатель на класс, объект "сумма", объект "разность".
    float real, im; // Вспомогательные переменные.
    unsigned short int size, num1, num2; // Размер массива объектов, номера "активных" чисел.
    
    cout << setw(20) <<"***Driver for complex class***" << endl;
    do{
        cout << "Input the qt. of elements: ";
        cin >> size;
    }
    while(size < 2);
    
    number = new complex[size];
    if(number == NULL){
        cout << "Sorry! Memory not captured!" << endl;
        system("pause");
        return 1;
    }
    
    for(int i = 0; i < size; i++){
        cout << "Input the real part of the number: ";
        cin >> real;
        cout << "Input the imaginary part of the number: ";
        cin >> im;;
        number[i].initNumber(real, im);
    }
 
    cout << "All numbers in array." << endl;
    for(int i = 0; i < size; i++){
        cout << i << ") ";
        number[i].printNumber();
    }
 
    do{
        cout << "Input two number for adding/minusing: ";
        cin >> num1 >> num2;
    }
    while(num1 < 0 || num1 > size || num2 < 0 || num2 > size);
    
    sum.initNumber((number[num1].getReal() + number[num2].getReal()), (number[num1].getImaginary() + number[num2].getImaginary()));
    cout << "Summ of " << num1 << " and " << num2 << ": ";
    sum.printNumber();
 
    cout << "Difference " << num1 << " and " << num2 << ": ";
    diff.initNumber((number[num1].getReal() - number[num2].getReal()), (number[num1].getImaginary() - number[num2].getImaginary()));
    diff.printNumber();
    
    system("pause");
    delete[]number;
    return 0;
}
Прототип класса.
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
#ifndef COMPLEX_H
#define COMPLEX_H
#ifndef IOSTREAM
#define IOSTREAM
#endif
#ifndef STDAFX_H
#define STDAFX_H
#endif
 
class complex{
    public:
        float addReal (float re1, float re2); // Сложение действительной части числа.
        float addIm (float im1, float im2); // Сложение мнимой части числа.
        float getReal(); // Изъятие действительной части числа.
        float getImaginary(); // Изъятие мнимой части числа.
        
        void printNumber (); // Вывод комплексного числа.
        void initNumber(float re, float im); // Инициализация действительной и мнимой частей числа.
    private:
        float Real; // Действительная часть числа.
        float Imaginary; // Мнимая часть числа.
};
 
#endif
Собственно, сами методы.

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
#include "stdafx.h"
#include "complex.h"
#include <iostream>
using namespace std;
 
float complex::getReal(){
    return Real;
}
 
float complex::getImaginary(){
    return Imaginary;
}
 
void complex::initNumber(float re, float im){
    Real = re;
    Imaginary = im;
}
 
void complex::printNumber(){
    cout << Real << " + " << Imaginary << "i" << endl;
}
 
float complex::addReal(float re1, float re2){
    return (re1 + re2);
}
 
float complex::addIm(float im1, float im2){
    return (im1 + im2);
}
А теперь, дамы и господа, вопросы newbie:
1) Можно ли заменить сумму и разность (для нее выписывать не буду) каким-либо отдельным методом, а не этим ужасом:
C++
1
sum.initNumber((number[num1].getReal() + number[num2].getReal()), (number[num1].getImaginary() + number[num2].getImaginary()));
Просто исходя из моих рассуждений, каждый метод класса относиться к конкретному объекту. Следовательно задействовать в методе одного объекта, данные другого возможно, но проблематично и этого делать не стоит.

2) Хотелось бы для каждого объекта сделать конструктор и деструктор не по умолчанию. Но не совсем понимаю, что туда можно засунуть кроме начальной инициализации. Подскажете?

Также буду признателен за любые замечания по поводу "гадкости" написания кода. Что нужно изменить, что подправить, чего делать категорически не стоит.

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