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

Задать два числа как два массива и потом выполнить сложение, умножение и деление - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Замена часто повторяющегося выражения http://www.cyberforum.ru/cpp-beginners/thread357855.html
Здравствуйте! У меня такая проблема. Я слишком часто в коде использую выражение, к примеру: exp(x2)+2*pow(x2,2)-30; Можно ли его как-то заменить на одно короткое, и чтобы его можно было менять? Можно ли это как-то сделать при помощи директивы #define?
C++ АТД список. Переставить местами элементы списка Здравствуйте!! Возник очередной вопрос, что то мне туговато даются АТД! Есть список котором может быть только одна открывающая скобка и одна закрывающая скобка! Так вот нужно поменять местами скобки если закрывающая скобка входит в список первой!! Например: http://www.cyberforum.ru/cpp-beginners/thread357837.html
C++ Жизнь (нужна поддержка)
Здравствуйте. Начал писать игру "Жизнь". Недавно начал изучать классы, поэтому, буду использовать их. В общем, чувствую, что вопросов будет много, по мере поступления буду выкладывать их сюда, дабы не плодить тонны одинаковых тредов. Всем, кто будет откликаться — заранее огромное спасибо, с меня +++ к репутации. Итак, вопрос первый:
C++ Сортировка очереди HeapSort
Товарищи подскажите пожалуйста, нужно отсортировать очередь реализованную на списках методом пирамидальной сортировки. реализация очереди самая обыкновенная код могу днём предоставить. Сейчас интересует логика.
C++ Перевод long double в string http://www.cyberforum.ru/cpp-beginners/thread357798.html
Дана задача http://www.cyberforum.ru/attachment.php?attachmentid=97778&stc=1&d=1317238135 Я не понимаю как конвертировать long double в string. С помощью ostrstream ? Но у меня мне получается, компилятор ругается long double z= 5789847.45; string k; k.ostrstream=z; Ума не приложу как сделать данное задание. Пожалуйста помогите.
C++ Передача массива в функцию #include <iostream> #include <fstream> #include <time.h> using namespace std; void maxx(); int main(int argc, char *argv) { подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
29.09.2011, 14:47     Задать два числа как два массива и потом выполнить сложение, умножение и деление

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
Ещё круче демонстрация возможностей ООП путём создания комплексного числа в виде массива из двух элементов.
ну, я думаю, здесь имелось в виду, что этот массив должен быть полем соответствующего класса



Вот пример в "функциональном" (обоже) стиле:
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 <stdio.h>
#include <stdlib.h>
 
typedef double (COMPLEX)[2];
 
#define RE(C) (C)[0]
#define IM(C) (C)[1]
 
/* Макрос "протекающий", так что в реальном приложении
 * его лучше не использовать
 */
#define PRINT(EXP, RES)             \
(EXP);                      \
printf(#EXP ": %.2f + i * (%.2f)\n", RE(RES), IM(RES))
    
void c_add(const COMPLEX, const COMPLEX, COMPLEX);
void c_sub(const COMPLEX, const COMPLEX, COMPLEX);
void c_mul(const COMPLEX, const COMPLEX, COMPLEX);
void c_div(const COMPLEX, const COMPLEX, COMPLEX);
 
int main()
{
    COMPLEX c1 = {1, 2}, c2 = {1, -1}, result;
    PRINT(c1, c1);
    PRINT(c2, c2);
    PRINT(c_add(c1, c2, result), result);
    PRINT(c_sub(c1, c2, result), result);
    PRINT(c_mul(c1, c2, result), result);
    PRINT(c_div(c1, c2, result), result);
    exit(0);
}
 
void c_add(const COMPLEX op1, const COMPLEX op2, COMPLEX result)
{
    RE(result) = RE(op1) + RE(op2);
    IM(result) = IM(op1) + IM(op2);
}
 
void c_sub(const COMPLEX op1, const COMPLEX op2, COMPLEX result)
{
    RE(result) = RE(op1) - RE(op2);
    IM(result) = IM(op1) - IM(op2);
}
 
void c_mul(const COMPLEX op1, const COMPLEX op2, COMPLEX result)
{
    RE(result) = RE(op1) * RE(op2) - IM(op1) * IM(op2);
    IM(result) = RE(op1) * IM(op2) + IM(op1) * RE(op2);
}
 
/* Проверки деления на ноль нет, извините */
void c_div(const COMPLEX op1, const COMPLEX op2, COMPLEX result)
{
    double denom = RE(op2) * RE(op2) + IM(op2) * IM(op2);
    RE(result) = (RE(op1) * RE(op2) + IM(op1) * IM(op2)) / denom;
    IM(result) = (IM(op1) * RE(op2) - RE(op1) * IM(op2)) / denom;
}
 
Текущее время: 02:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru