powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Антиправила C++
24 сообщений из 49, страница 2 из 2
Антиправила C++
    #33486783
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik
Me
---Бинарь, которая выдает "Hello World" через stdio на С занимает 40 кб, на C++ через iostreams - 200кб+. Какие единицы байт? Если активно использовать STL, то он зае@ет кучу постоянной неявными аллокациями/деаллокациями мелких блоков памяти, выполняющихся на уродской модели памяти С++ за линейное время, угробив перформанс.
[/qout]
может все таки стоит учится программировать а не слушать байки не знаю от кого.

А может не стоит изображать св.невинность. Ведь Вы же прекрасно знаете, что
1) в С++ невозможно взять указатель на объект и оттрассировать какие у него вложенные указатели
2) В С++ нельзя перемещать объекты
Это приводит к тому, что в С++ нет выбора, какую модель памяти использовать. Есть одна и негибкая.
Lepsik
[quot Me]
--Тсой жыфф (С). Я не тот человек, который быдет смотреть в рот Борландам, когда же они сделают очередной высер Билдера.

культура так и прет

Я обычно меняю тон в зависимости от собеседника. У Вас нет какой-либо интеллектуальности, тонкого сарказма. "Для домохозяек!", "Может все-таки учиться программировать?"
Lepsik
Me
--MSVC++ пока стабильно выходит раз за разом, становясь лучше.

на сегодняшний день среда VC++ отстает даже от BBC 5.0 года так на 2-3

Зато почему-то под него всегда есть свежие MSDN и Platform SDK. И сторонние либы пишутся и собираются в первую очередь под MSVC++.

Lepsik
компания действительно закрыла сначала BBC, сделав С++ Builder X новым направлением, но потом изменила свое мнение и продолжила поддержку С++.
ТАк что не надо нездоровых инсинуаций.

Я бы избавился от проектов на Бильдере, как только судьба линейки стала сомнительной. Проникновенные письма в Борланд писать бы не стал.
Lepsik
кстати к размерам программ на жаве не забывайте добавлять 100 мег рантайма.
Ну он же не весь грузится, только то что используется.
...
Рейтинг: 0 / 0
Антиправила C++
    #33486792
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, это все же моё

Lepsik
может все таки стоит учится программировать а не слушать байки не знаю от кого.


А может не стоит изображать св.невинность. Ведь Вы же прекрасно знаете, что
1) в С++ невозможно взять указатель на объект и оттрассировать какие у него вложенные указатели
2) В С++ нельзя перемещать объекты
Это приводит к тому, что в С++ нет выбора, какую модель памяти использовать. Есть одна и негибкая.
...
Рейтинг: 0 / 0
Антиправила C++
    #33488102
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич Последние версии даже уверенно проглатывают шаблоны из Loki, и при этом они по скорости компилирования получше Intel С++.



А Intel просто никуда не торопится. Ему не нужно. Он задуман как plugable -компилятор вместо MS-овского. Компилят им только релизы, а в отладке пользуются стандартным. Зато код он генерит лучше, и ошибки находит такие, какие MS даже не замечает. В общем - это дополнительный, опциональный беловой компилятор.
...
Рейтинг: 0 / 0
Антиправила C++
    #33488126
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корочи, бальшая просьба к афтару : выпий вотки и иди праграми на бейсике.
...
Рейтинг: 0 / 0
Антиправила C++
    #33488512
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri Lepsik
кстати к размерам программ на жаве не забывайте добавлять 100 мег рантайма.

Во-первых, вы вроде размеры бинарников сравнивали без учета rtl и прочих библиотек, потому как если ты предлагаешь посчитать размер библиотек из JRE то тогда неплохо бы посчитать размер каких-либо библиотек на C++ покрывающих функционал базовой библиотеки J2SE :)


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


---Во-вторых, зачем же придумывать вот у меня стоит последняя jre1.5.0_06 которая вся полностью весит меньше 70Мб. Это при том что ее функционал намного шире чем BCB rtl+vcl...

Я сужу по той паре папок с разными версия этого добра. одна версия 118 другая 105. Как бы то нибыло вынь да положь.

--То что размер бинарника в java будет на порядок меньше (в силу хотя бы того что там не машинный код, а байт код - который намного высокоуровней) - это общеизвестная вещь - о чем тут спорить мне не ясно

Упасть не встать. Так можно договорится что размер исходников всегда меньше бинарников - там ведь высокоуровневый язык.

--В-третьих, я как-то тебе приводил пример с 2мя багами в BCB 6 SP2 на которые фирма борланд благополучно забила. Так вот чтобы не быть голословным прилагаю код приводящий к AV при линковке (см. test3.rar).

А зачем коды в паскале, если мы говорим о С++ ? Может С++ показался слишком сложным для программирования после паскаля? Ну тогда зачем валить с больной головы( паскаль) на здоровую (С++) ?
Обьемы проектов в которых я участвую меньше десятка-двух мег в исходниках просто не бывают и до сих пор проблем не заметил.

--В-четвертых, я тебе в прошлый раз говорил про баг в ADO врапере для VCL приводящий к некорректной работе приложения с строками в юникоде - ты сказал что это легко решить. Вот мне и интересно - как можно пересобрать VCL для BCB6?

Уже не помню о чем сыр бор, посокльку в основном в уникоде и работаю с базой ? а что действительно есть проблемы ?
Дай ссылку - гляну на досуге.
...
Рейтинг: 0 / 0
Антиправила C++
    #33488518
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Сергей Ильич]

---А может не стоит изображать св.невинность. Ведь Вы же прекрасно знаете, что
---1) в С++ невозможно взять указатель на объект и оттрассировать какие у него вложенные указатели

что такое оттрасировать ? отладчики что в VC что в BCC пркрасно ходят по ссылкам на любую глубину вложенности ? Или вы о чем ?

--2) В С++ нельзя перемещать объекты
--Это приводит к тому, что в С++ нет выбора, какую модель памяти использовать. Есть одна и негибкая.

куда и откуда ? модели памяти были в ДОС-е или вы про стек-хип ? Тогда не пойму что значит двигать ?

---Я обычно меняю тон в зависимости от собеседника. У Вас нет какой-либо интеллектуальности, тонкого сарказма. "Для домохозяек!", "Может все-таки учиться программировать?"

А что поделать, на многих языках приходится программировать, одни языки для домохозяек (Жава, васик, C#) - лозунги не мной придуманы - а компаниями вендорами. Вот уж С++ и ассемблер никогда не рекламировался для дилетантов.
Поэтому обижаться в данном случае можно только на себя.

--Зато почему-то под него всегда есть свежие MSDN и Platform SDK. И сторонние либы пишутся и собираются в первую очередь под MSVC++.

кем пишутся и кем собираются ? фактами надо оперировать и статистикой.

--Ну он же не весь грузится, только то что используется.
Тогда чего вдруг вас стал интересовать размер программ на С++ ?
Никто не мешает мне написать одно большую dll назвать моим рантаймом и тыкать всем в нос загрузчиком в 10К - вот какие компактные программы на С++.

НЕ может быть компактными и быстрыми программы на языке где даже примитивные типы типа int являются классами со всеми вытекающими последствиями.
...
Рейтинг: 0 / 0
Антиправила C++
    #33488607
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LepsikНЕ может быть компактными и быстрыми программы на языке где даже примитивные типы типа int являются классами со всеми вытекающими последствиями.
Ээээээээээээээээээээээээээээээээ..................
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int _tmain()
{
	int k =  10 ;
	int l =  10 ;
	int j =  10 ;
	int i =  3 ;
	i = j;
  	return  0 ;
}
2
Код: plaintext
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.
int _tmain()
{
//	int k = 10;
 00000000   push        ebp  
 00000001   mov         ebp,esp 
 00000003   sub         esp,10h 
 00000006   push        edi  
 00000007   push        esi  
 00000008   push        ebx  
 00000009   xor         esi,esi 
0000000b  xor         edi,edi 
0000000d  xor         ebx,ebx 
0000000f  mov         dword ptr [ebp-10h], 0  
 00000016   mov         dword ptr [ebp-10h],0Ah 
//	int l = 10;
0000001d  mov         ebx,0Ah 
//	int j = 10;
 00000022   mov         edi,0Ah 
//	int i = 3;
 00000027   mov         esi, 3  
//	i = j;
0000002c  mov         esi,edi 
	return  0 ;
0000003a  nop              
0000003b  jmp         0000003D 
}
И где же здесь классы?
...
Рейтинг: 0 / 0
Антиправила C++
    #33488613
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Восхищает обилие команд XOR
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Антиправила C++
    #33488640
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас БарабасВосхищает обилие команд XOR
Ну это
Код: plaintext
1.
2.
3.
 00000009   xor         esi,esi 
0000000b  xor         edi,edi 
0000000d  xor         ebx,ebx 
перестраховка. Для универсальности, судя по всему.
Это я тоже не понимаю зачем???
Код: plaintext
1.
2.
0000000f  mov         dword ptr [ebp-10h], 0  
 00000016   mov         dword ptr [ebp-10h],0Ah 
Но ведь классов то нет.
...
Рейтинг: 0 / 0
Антиправила C++
    #33488696
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_БалтикаНо ведь классов то нет.Да может это опимизатор так наваял :)
Хотя по обилию бесполезных команд можно сделать вывод, что оптимизатора нет как такового
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Антиправила C++
    #33488723
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас Барабас _БалтикаНо ведь классов то нет.Да может это опимизатор так наваял :)
Хотя по обилию бесполезных команд можно сделать вывод, что оптимизатора нет как такового
:) Ясно что нет. С оптимизатором это выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
 00000000   push        ebp  
 00000001   mov         ebp,esp 
 00000003   xor         eax,eax 
 00000005   pop         ebp  
 00000006   ret              
...
Рейтинг: 0 / 0
Антиправила C++
    #33488766
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Балтика:) Ясно что нет. С оптимизатором это выглядит так:
00000000 push ebp
00000001 mov ebp,esp
00000003 xor eax,eax
00000005 pop ebp
00000006 ret
Да ..... уж ..... ибо ............
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Антиправила C++
    #33489646
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторначнем с того что жавный рантайм не стоит по умолчанию в ОС. Это значит тащит придется, причем для разного сотфа разные версии. Поэтому уже на можно считать спор о размерах окончен.

А борландский рантайм уже вместе с ОС поставляться стал?

авторЯ сужу по той паре папок с разными версия этого добра. одна версия 118 другая 105. Как бы то нибыло вынь да положь.
Может хоть название папок приведешь? А то такие сведения большого доверия не вызывают

авторУпасть не встать. Так можно договорится, что размер исходников всегда меньше бинарников - там ведь высокоуровневый язык.


А ты сомневаешься? Да, размер исходников в общем случае будет меньше чем их машинный эквивалент, если только эти исходники записать с помощью байт-кода, а не human readable текста...

авторА зачем коды в паскале, если мы говорим о С++ ? Может С++ показался слишком сложным для программирования после паскаля? Ну тогда зачем валить с больной головы( паскаль) на здоровую (С++) ?

Ты, кстати, сам за тоном бы следил - а то не красиво как-то получается... Этот код генериться автоматически по определенным метаданным. Генериться на паскале по ряду причин, здесь не важных.
Вот тут ты говорил что BCB стоит использовать потому что он поддерживает как паскалевский код так и С++-ный
/topic/115992&pg=2&hl=lepsik#934506

Вместе с приведенным мною примером получается, что ты говорил неправду и паскаль в нем лучше не использовать?!

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

http://www.sql.ru/forum/actualthread.aspx?tid=243135&hl=funikovyuri#2159906

авторНЕ может быть компактными и быстрыми программы на языке где даже примитивные типы типа int являются классами со всеми вытекающими последствиями.

Уважаемый, не стоит рассуждать о вопросах, о которых не имеешь ни малейшего понятия (см. http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html). После подобного заявления твои фразы о том, что java - язык для дилетантов выглядят элементарным хамством. Очень жаль, что ты опустился до подобных заявлений
...
Рейтинг: 0 / 0
Антиправила C++
    #33490449
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik
..


По поводу дилетантства.

Я не считаю, что сложность С++ должна быть оправданием
его продвинутости .

Любопытный факт. Ни один из сишников не может сходу написать
рекурсивную функцию которая возвращает строку без дополнительных
извращений типа создание классов-врапперов и т.п.

Lepsik
НЕ может быть компактными и быстрыми программы на языке где даже примитивные типы типа int являются классами со всеми вытекающими последствиями.


Не могу с вами согласится, коллега. В продвинутых языках
для типов свойстеннен дуализм. То есть их можно рассматривать
как атомы, и как классы. Как вам удобно, так и работайте.

Как частный случай, можно рассмотреть работу с коллекциями
обьектов, но это уж на ваше усмотрение. Будет example - продолжим
полемику.
...
Рейтинг: 0 / 0
Антиправила C++
    #33490653
Eugene7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Любопытный факт. Ни один из сишников не может сходу написать
рекурсивную функцию которая возвращает строку без дополнительных
извращений типа создание классов-врапперов и т.п.

Вот это ты ляпнул...
...
Рейтинг: 0 / 0
Антиправила C++
    #33490699
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Evgeny

Ну..ну.. сказал А - надо говорить и Б. Предложи свой вариант.
...
Рейтинг: 0 / 0
Антиправила C++
    #33490807
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mayton

Любопытный факт. Ни один из сишников не может сходу написать
рекурсивную функцию которая возвращает строку без дополнительных
извращений типа создание классов-врапперов и т.п.



Вот это ты ляпнул...


2 Evgeny

Ну..ну.. сказал А - надо говорить и Б. Предложи свой вариант.

Вариант чего?
"Рекурсивная функция возвращающая строку", как-то уж слишком общо.
Какие требования? А то, вот эти варианты тоже вполне подходят :)

Код: plaintext
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.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* f1(int n);
char* f1(int n)
{
    if(n)
        return f1(n- 1 );
    else
    {
        char *p = malloc( 6 );
        if(p)
            strncpy(p, "hello\0",  6 );
        return p;
    }
}

char* f2(int n, char* dst, int max_len);
char* f2(int n, char* dst, int max_len)
{
    if(n)
        return f2(n- 1 , dst, max_len);
    else
    {
        strncpy(dst, "hello\0", max_len);
        return dst;
    }
}


int main()
{
    char *p1 = f1( 5 );
    if(p1)
    {
        printf("p1 %s\n", p1);
        free(p1);
    }

    char *p2 = malloc( 6 );
    if(p2)
    {
       printf("p2 %s\n", f2( 20 , p2,  5 ));
       free(p2);
    }
   
    return  0 ;
}

...
Рейтинг: 0 / 0
Антиправила C++
    #33490828
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вот так :)

(потому что по "сишник" не совсем понятно - имеется в виду пишущий на С или С++)

Код: plaintext
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.
#include <string>
#include <iostream>

using namespace std;

string f1(int n);
string& f2(int n, string& s);

string f1(int n)
{
    if(n)
        return f1(n- 1 );
    else
        return "hello";
}

string& f2(int n, string& s)
{
    if(n)
        return f2(n- 1 , s);
    else
    {
        s = "hello";
        return s;
    }
}


int main()
{
    string s;
    cout << "f1 = " << f1( 5 ) << endl 
         << "f2 = " << f2( 5 , s) << endl;
    return  0 ;
}

...
Рейтинг: 0 / 0
Антиправила C++
    #33490836
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, можно сказать, что "с ходу не написал", потому что не обрабатываю случай когда переданный параметр отрицательный. Увы мне, увы.
mea culpa :)
...
Рейтинг: 0 / 0
Антиправила C++
    #33490994
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может хватит пиьками меряться ? Форум сишный, и доказать тут, что С/С++ гамно - невозможно, да и надо ли ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Антиправила C++
    #33491019
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может лучше сравнить VB и Fortran или ещё чего?
Вообще тема - какой язык для домохозяек а какой для крутых программеров и какой компилятор (среда разработки) лучше - страшно увлекательная.
Лучше только сравнение SQL серверов - казалось бы и тесты есть, а народ чем-то недоволен.

Что касается слухов о неудобстве, размере и пр., то вот расчёт корреляции
Код: plaintext
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.
78.
79.
80.
81.
82.
83.
84.
85.
86.
#include "stdafx.h"
#include <time.h>
#include <vector>
#include <vector>
#include <fstream>
#include <algorithm>

using namespace std;
typedef struct {
	double d[ 2 ];
}_Data;

void usage(void)
{
	cerr<<"stat {[g N]|[c]}\ng - generate file 1.dat 2.dat with n > 1 random numbers\nc - calculate correlation\n"<<endl;
	exit( 1 );
}

class MyFunc
{
private:
   double dAvg[ 2 ];   
public:

   MyFunc ( const double& _Val1, const double& _Val2) {
		dAvg[ 0 ] = _Val1;
		dAvg[ 1 ] = _Val2;
		dProd =  0 .;
   }

   void operator ( ) ( _Data &_Val) 
   {
		dProd += (_Val.d[ 0 ]-dAvg[ 0 ])*(_Val.d[ 1 ]-dAvg[ 1 ]);
   }

public:
   double dProd;   

};

int _tmain(int argc, _TCHAR* argv[])
{
	if ( argc <  2  )
		usage();
	if ( toupper(argv[ 1 ][ 0 ]) == 'G' ){
		if ( argc !=  3  )
			usage();
		int n = atoi(argv[ 2 ]);
		if ( n<= 1  ){
			cerr<<"n <= 1!"<<endl;
			usage();
		}
		ofstream f1("1.dat"),f2("2.dat");
		srand( (unsigned)time( NULL ) );
		for(int i =  0 ; i<n; i++){
			f1<<rand()<<endl;
			f2<<rand()<<endl;						
		}
	}else if ( toupper(argv[ 1 ][ 0 ]) == 'C' ){
		ifstream f1("1.dat"),f2("2.dat");
		vector<_Data>dat;
		double d,dAvg[ 2 ]={ 0 ., 0 .},dDisp[ 2 ]={ 0 ., 0 .};
		while(f1>>d){
			_Data tmp;
			dAvg[ 0 ]+=d;
			dDisp[ 0 ]+=d*d;
			tmp.d[ 0 ] = d;
			f2>>d;
			dAvg[ 1 ]+=d;
			dDisp[ 1 ]+=d*d;
			tmp.d[ 1 ] = d;
			dat.push_back(tmp);
		}
		dAvg[ 0 ] /= dat.size();
		dAvg[ 1 ] /= dat.size();
		MyFunc mf(dAvg[ 0 ],dAvg[ 1 ]);
		for_each(dat.begin(),dat.end(),mf);
		cout<<"Avg1="<<dAvg[ 0 ]<<endl<<"Avg2="<<dAvg[ 1 ]<<endl
<<"Disp1="<<dDisp[ 0 ]/(dat.size()- 1 )<<endl<<"Disp2="<<dDisp[ 1 ]/(dat.size()- 1 )<<endl		
<<"Corr="<<mf.dProd/dDisp[ 0 ]/dDisp[ 1 ]<<endl;

	}
	else usage();

	return  0 ;
}
Размер exe - 110 592
VC 7.1
Время на написание ~ 15 минут
...
Рейтинг: 0 / 0
Антиправила C++
    #33493172
klinkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niknameА может лучше сравнить VB и Fortran или ещё чего?
Вообще тема - какой язык для домохозяек а какой для крутых программеров и какой компилятор (среда разработки) лучше - страшно увлекательная.
Лучше только сравнение SQL серверов - казалось бы и тесты есть, а народ чем-то недоволен.

Что касается слухов о неудобстве, размере и пр., то вот расчёт корреляции
Код: plaintext
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.
78.
79.
80.
81.
82.
83.
84.
85.
86.
#include "stdafx.h"
#include <time.h>
#include <vector>
#include <vector>
#include <fstream>
#include <algorithm>

using namespace std;
typedef struct {
	double d[ 2 ];
}_Data;

void usage(void)
{
	cerr<<"stat {[g N]|[c]}\ng - generate file 1.dat 2.dat with n > 1 random numbers\nc - calculate correlation\n"<<endl;
	exit( 1 );
}

class MyFunc
{
private:
   double dAvg[ 2 ];   
public:

   MyFunc ( const double& _Val1, const double& _Val2) {
		dAvg[ 0 ] = _Val1;
		dAvg[ 1 ] = _Val2;
		dProd =  0 .;
   }

   void operator ( ) ( _Data &_Val) 
   {
		dProd += (_Val.d[ 0 ]-dAvg[ 0 ])*(_Val.d[ 1 ]-dAvg[ 1 ]);
   }

public:
   double dProd;   

};

int _tmain(int argc, _TCHAR* argv[])
{
	if ( argc <  2  )
		usage();
	if ( toupper(argv[ 1 ][ 0 ]) == 'G' ){
		if ( argc !=  3  )
			usage();
		int n = atoi(argv[ 2 ]);
		if ( n<= 1  ){
			cerr<<"n <= 1!"<<endl;
			usage();
		}
		ofstream f1("1.dat"),f2("2.dat");
		srand( (unsigned)time( NULL ) );
		for(int i =  0 ; i<n; i++){
			f1<<rand()<<endl;
			f2<<rand()<<endl;						
		}
	}else if ( toupper(argv[ 1 ][ 0 ]) == 'C' ){
		ifstream f1("1.dat"),f2("2.dat");
		vector<_Data>dat;
		double d,dAvg[ 2 ]={ 0 ., 0 .},dDisp[ 2 ]={ 0 ., 0 .};
		while(f1>>d){
			_Data tmp;
			dAvg[ 0 ]+=d;
			dDisp[ 0 ]+=d*d;
			tmp.d[ 0 ] = d;
			f2>>d;
			dAvg[ 1 ]+=d;
			dDisp[ 1 ]+=d*d;
			tmp.d[ 1 ] = d;
			dat.push_back(tmp);
		}
		dAvg[ 0 ] /= dat.size();
		dAvg[ 1 ] /= dat.size();
		MyFunc mf(dAvg[ 0 ],dAvg[ 1 ]);
		for_each(dat.begin(),dat.end(),mf);
		cout<<"Avg1="<<dAvg[ 0 ]<<endl<<"Avg2="<<dAvg[ 1 ]<<endl
<<"Disp1="<<dDisp[ 0 ]/(dat.size()- 1 )<<endl<<"Disp2="<<dDisp[ 1 ]/(dat.size()- 1 )<<endl		
<<"Corr="<<mf.dProd/dDisp[ 0 ]/dDisp[ 1 ]<<endl;

	}
	else usage();

	return  0 ;
}
Размер exe - 110 592
VC 7.1
Время на написание ~ 15 минут
Че сказать...отец!!!!
...
Рейтинг: 0 / 0
Антиправила C++
    #33495443
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК. Благодарю всех за содействие. Я доволен.
...
Рейтинг: 0 / 0
Антиправила C++
    #33498098
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri
А борландский рантайм уже вместе с ОС поставляться стал?

от борландавского рантайма там 25К. Если не пользоваться его библиотеками.

авторЯ сужу по той паре папок с разными версия этого добра. одна версия 118 другая 105. Как бы то нибыло вынь да положь.
--Может хоть название папок приведешь? А то такие сведения большого доверия не вызывают

достаточно зайти в анинсталяцию и посмотреть сколько добра приплыло .
J2SE Runtime Enviroment 1.50.0.40 151 Mb
J2SE Runtime Enviroment 1.4.2_3 107 Mb

или ты только размер папки java считаешь ?

--Ты, кстати, сам за тоном бы следил - а то не красиво как-то получается...

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

--Вот тут ты говорил что BCB стоит использовать потому что он поддерживает как паскалевский код так и С++-ный
/topic/115992&pg=2&hl=lepsik#934506

---Вместе с приведенным мною примером получается, что ты говорил неправду и паскаль в нем лучше не использовать?!

И сейчас говорю, что VS2005 еще слаб по части использования совметного кода даже по сравнению с Борландом v3.

---http://www.sql.ru/forum/actualthread.aspx?tid=243135&hl=funikovyuri#2159906

Если ты внимательно прочтешь топик до конца то увидишь, что твоя проблема была зафиксена, так что твое возражение не принято.

--Уважаемый, не стоит рассуждать о вопросах, о которых не имеешь ни малейшего понятия (см. http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html).

да тут я соглашусь - давно не читал новых ревизий жавы, успевших подоптимизировать и код и подредактировать описания.

---После подобного заявления твои фразы о том, что java - язык для дилетантов выглядят элементарным хамством. Очень жаль, что ты опустился до подобных заявлений.

это не мои заявления, а рекламные продавцов услуг. Если профи пишет макрос для бейсика, то определению не может быть дилетантоm. Я говорил о позиционировании языка для начинающих. По жизни и VB и Java на волне бума 1999-2000 предлагался как простое решение для программирования.

Прошу прощения если кого я обидел. Но серьезными языками ни тот ни другой не считаю по прежнему. Хотя на первой жаве пару проектов сделал.
...
Рейтинг: 0 / 0
24 сообщений из 49, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Антиправила C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]