Комплексные числа: основные мат. действие на C(Си)

Другу дали задание написать простенькую программку на любом языке программирования, которая будет делать основные математические действия с комплексными числами (сложение, вычитание, умножение и деление двух чисел), т.к. ему немного было лень писать, то попросил меня, благо делов 5 минут.
Для этого создадим первый файл (complex.h) который будет содержать объявления нового типа данных и его структуру.

1
2
3
4
typedef struct
    {
     double a,b;
    } complex_t;

Вот такой вот простенький хидер.
Теперь создадим основной файл и назовем его complex.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
#include <stdio.h>
#include "complex.h" // заголовочный файл для работы с к.ч

complex_t add(complex_t x, complex_t y) // ф-ция сложения к.ч.
 {
     complex_t t;
     t.a = x.a + y.a;
     t.b = x.b + y.b;
     return t;
 }
 
complex_t sub(complex_t x, complex_t y) // ф-ция вычитания к.ч.
 {
     complex_t t;
     t.a = x.a - y.a;
     t.b = x.b - y.b;
     return t;
 }
 
 complex_t mul(complex_t x, complex_t y) // ф-ция умножения к.ч.
 {
     complex_t t;
     t.a = x.a * y.a - x.b * y.b;
     t.b = x.a * y.b + x.b * y.a;
     return t;
 }
 
 complex_t div(complex_t x, complex_t y) // ф-ция деления к.ч.
 {
     complex_t t;
     t.a = (x.a * y.a + x.b * y.b)/(y.a*y.a+y.b*y.b);
     t.b = (x.a * y.b - x.b * y.a)/(y.a*y.a+y.b*y.b);
     return t;
 }

 
int main()
 {
     double a1,b1,a2,b2;
     printf ("Введите 4 числа: \n");
     while(scanf ("%lf%lf%lf%lf", &a1,&b1,&a2,&b2) == 4) {
     complex_t x = {a1,b1}; // первое к.ч.
     complex_t y = {a2,b2}; // второе к.ч.
     complex_t a = add(x,y); // сумма к.ч.
     complex_t s = sub(x,y); // вычитание к.ч.
     complex_t m = mul(x,y); // умножение к.ч.
     complex_t d = div(x,y); // деление к.ч.
     printf ("a = (%5.2lf, %5.2lfi)\n", a.a, a.b ); // результат суммирования
     printf ("s = (%5.2lf, %5.2lfi)\n", s.a, s.b ); // результат вычитания
     printf ("m = (%5.2lf, %5.2lfi)\n", m.a, m.b ); // результат умножения
     printf ("d = (%5.2lf, %5.2lfi)\n", d.a, d.b ); // результат деления
        return 0;  
     }
     return 0;
 }

Код простой, но может пригодиться какому-то ленивому студенту-заочнику, потому что на дневном такое должны знать как моряк азбуку Морзе 🙂 .
Удачи в программирование.

3Proxy — Анонимный прокси!

3Proxy — очень хороший, маленький прокси-сервер. Делаем его полностью анонимным, легким движением руки (можно все задать и через опции, но мне как то, так спокойней), подкорректировав proxy.c в дире src/.
Задав значение переменной anonymous.

1
2
int anonymous = 1;                 //(222 строка)
//anonymous = param->srv->singlepacket;  //(238 строка)

Теперь нужно только собрать все.

1
make -f Makefile.Linux

После этого смело заходим, к примеру, на http://www.leader.ru/secure/who.html и смотрим, что идет «прямое» соединение и никаких прокси.

C++ & PCRE & Вконтакте + Музыка

Набросок парсера для получения ссылок на музыкальные произведения и их названия, в социальной сети ВКонтакте.
Возможно будет в дальнейшем использован в VKFS (Файловая Системы Вконтакте.)
Continue reading «C++ & PCRE & Вконтакте + Музыка»