Перейти к содержанию

nonlux

Пользователи
  • Постов

    91
  • Зарегистрирован

  • Посещение

Достижения nonlux

Энтузиаст

Энтузиаст (6/14)

  • Первое сообщение
  • Соавтор
  • Неделя в сообществе
  • One Month Later
  • Год в сообществе

Последние значки

12

Репутация

  1. NTYM_2882_ Запрос в гусл сразу дает +100500 ссылок. Может тему посмотрят много уважаемые Сисники* ( извините описался хотел Сишники) И дадут мне пару советов.
  2. Ну по поводу. Компонентов делфей и вообще делфи не знаю Но а так все работать должно как-то, так: База всего приложения это проток HTTP. То есть если посмотриш на верхнюю строку в браузере http://ulanovka.ru/forum/viewtopic.php?t=314392&sid=000 это ссылка на настоящую тему. Это тебе как пользователю достаточно ее куда то ввести. Обращение по этой ссылке самим браузеро упрошенно выглядит так GET /forum/viewtopic.php?t=314392&sid=000 HTTP/1.1 Host: ulanovka.ru Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:max-age=0 Connection:keep-alive Cookie:phpbb2mysql_data=????????; .... Host:ulanovka.ru Referer:http://ulanovka.ru/forum/viewforum.php?f=137&sid=000 User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19 (пустая строка) Ответ сервера: HTTP/1.1 200 OK Cache-Control:no-cache, pre-check=0, post-check=0 Connection:keep-alive Content-Type:text/html Date:Fri, 04 May 2012 12:08:22 GMT Expires:0 Pragma:no-cache Server:nginx/0.7.67 Set-Cookie:phpbb2mysql_data=&&&&& Transfer-Encoding:chunked (Пустая строка) страница Но суть в том что первое что должно делать твое приложение это вести HTTP - диалог как ты это сделаешь не суть важно, можешьнайти компонент, или использовать сокеты. 2. если вернемся к ссылке http://ulanovka.ru/forum/viewtopic.php?t=314392&sid=000 На серве лежит скрипт viewtopic.php ему можно передовать параметры, он например воспринимает параметр t - который обозначает идентификатор темы, и sid - который обозначает идентфикатор твой сессии Что бы просматривать темы мы и указываем t=314392, а например номер соседней темы t=314230 Вот чтобы как нибуть взаимодействовать с сервером тебе нужно знать его API. или если ты и сервер писать будеть то придумать его. Например www.mydocsite.ru/superPuperClient.php?tast=setMeOnline&my_ip=192.0.0.1&user=000123&pass=123 - например такая хня может подключать твой клиент, ты говориш подключи мой клиент мое уникальное имя 000123 www.mydocsite.ru/superPuperClient.php?task=getNewComand -например такая хня будет дай мне следующее сообщение www.mydocsite.ru/superPuperClient.php?task=compliteComand&id=999&state=ok -например такая хня значит что клиент отлично выполнил команду номер 999 www.mydocsite.ru/superPuperClient.php?task=compliteComand&id=666&state=fail - а такая хня сообщит серверу что клиент не стал выполнять команду 666 ( он же не сатанист) На эту всю фигню сервер должен уметь отвечать, опять же если готового нет то можно посмотреть в сторону XML и JSON. Полюбас на делфях если либы которые могут жрать ету хрень и возвращать добные структуры. например при запросе www.mydocsite.ru?superPuperClient.php?task=getNewComand сервер может отвечать XML <?xml version="1.0" encoding="UTF-8"?> 1 fuck yourself in the ass или JSON {id:1,action:"fuck yourself in the ass"} а можешь просто посылать голый ответ fuck yourself in the ass Вот в принципе и все что тебе предстоит сделать. Но имей ввиду такая реализация сетевго взаимодействия не совсем удатчно потому что. Пока клиент не послал запрос серверу от тупо дрыхнет и ему пофигу на клиентов которые подключились или же которые что нибуть выполняют. То есть тебе не удасться реализовать полного интерактива в сетевом взаимодействии.. Плюс он при каждом запросе клиента снова должен узнать или вспомнить что вообще происходит, кто его теребит да и вообще ВСЁ ( понимаешь HTTP сервера много спят и много бухают, поэтому они всегда у всех спрашивают ты кто чего хочешь) Вот такая лабуда. Ну я думаю направление мыслей тебе дал. Так что удачного кодинга и успешных тестов.
  3. class b: public a{ b(void); } как запустить конструктор родителя? 2. class a { char * getValue(); wchar_t * getValue(); } Не могу определить два метода возвращающих нужный тип данных по контексту? 3 classA *a=new classA(); classB *b=new classB(); classC *c=new classC(); --- как нибуть можно избавится от этой писанины? а то писать постоянно по двадцать раз имена классов зае#$%#ло, а то головоломный vs2010 отказывается подключать свой intellisense аля автокомплит в С/C++ проектах. ---- каа я понимаю коде выше a,b,c это указатели на какие то объекты. Как мне сделать массив из этих указателей? 4. Тестирование. Как вы тестите проекты ( хотелось бы минимум левых библиотек)? Рефлексия на C++ реальность? Как сделать прозрачную обертку для функции? class a { bool fun1(); bool fun2(); void wraper(bool flag); } void main(){ a *obj=new a(); a->wraper(a->fun1()); a->wraper(a->fun2()); } Хочу запустить a->fun1(); без a->wraper(); Добавлено спустя 52 секунды: P.S. еще полчаса потребовалось что бы найти нужную тему)))
  4. Проблема в том, что Win старше 98. Блокирует прямую работу с портами аппаратных устройств. <_
  5. у меня нет под рукой компа идея использовать отладчик не приходила?
  6. ясен пень фигрный скобки дядя ставить будет?
  7. 0 1 2 3 x 3 5 6 4 когда i равно 3 w равно 4 вот это w тебе надо переместить на позицию 1 на первом шаге станет x2 4, x3 6 x 3 5 4 6 на втором шаге x1 4 x2 5 x 3 4 5 6 не понял еще? x(j+1)=x(j) x(j)=w
  8. ага там x[j+1]=x[j] x[j+1]=w не замечаешь странностей а в функцию 1 ты три раза в программе используешь этот код тебе не лень? 2 написав 100 программ ты напишишь ввод массива 300 раз а если учесть что ввод массива подразумевает не только это строку а еще пару( у тебя цыкл ты не забыл)? сколько лишнего времени ты теряешь повтаряя одно и тоже каждый раз береги свое время для нужных дел, а не для повторения одного и того же изза дня в день Добавлено спустя 4 минуты 7 секунд: superman ок спасибо, раньше эти конструкции пропускал из внинимания, теперь повникаю php все таки прививает небрежность в низкоуровневых деталях
  9. вот и начни писать так, напиши все алгоритмы в отдельных функциях отдельно сделай функцию ввода отдельно вывода а так и посмотрим) Добавлено спустя 3 минуты 26 секунд: хотя я вижу где ошибка)))... если тебе нах не нужно писать проги и это тебе не интересно скажи, и узнаешь где ошибка если интересно напишим красивую прогу)
  10. superman Спасибо, полностью согласен. Этого нет в примере, потому что: 1. Я не C/C++ программист, а web), и последнее програ на С++ была написана более трех лет назад. 2. В примере хотелось показать не тонкости работы с коткрентым языком, а общий подход к написанию приложения,используюя слабую связность, и паттерны программирования( проектирования). Потому как видя код топик стартера пришел в свящетое Неистовство))), ибо так учат писать в ВУЗе, а точнее не совсем не учат. Например тут я попытался изобразить праттерн Стратегия. Это классы AbstractSortAlgorithm и наследники. Используя подобную технику можно свободно выбирать необходимую реализацию того или иного действия. То есть если представить, что в нашей проге очень важно быстро сортировать массивы. Допустим BubbleSort оптимален на массивах до 100 элементов InsertSort оптимален на массивах от 100 до 500 а SelectSort оптемален на остальных Тогда взаввисиммости от длинны массива можно выбирать нужный алгоритм, при этом жестко не задавая нужного алгоритма в программе. А для получения нужного алгоритма можно использовать еще один паттерн фабричный метод пример SortAlgorithmInfo::algorithmFactory Добавлено спустя 51 секунду: Кстати это что ? и почему убрать?
  11. алгоритм вставок пример на 4 проходе 1342.... сравнение 2 и 4 престановка 2 и 4 сравнение 2 и 3 престановка 2 и 3 сравнение 2 и 1 престановок нет то есть сравнений на любом шаге будет на одно больше. но на первом шаге когда i равно 0 сколько будет сравнений? цикл не будет проходить так как -1 элемента в массиве нет поэтому я и добавил +1 перестановку а условие if(i) тоже самое что и if(i>0) Р.S. если ты хочушь стать нормальным программером сравни свой код и мой какой легче читать и искать в нем ошибки, модифицировать, твой или мой? не пиши говнокод в котором ты сам не можешь отследить что и куда утекает, продумывай структу программы, вникни в конструкции языка,что такое ооп например, почитай что такое рефакторинг, и что такое паттерны проектирования. это в вузе преподаватели поощряют говнокод, в реальной жизни приложение умрет. а главное делай это красиво, так и желание и мотивация и самооцека растут,
  12. maip.cpp #include "SortAlgorithmInfo.cpp" int main(int argc, char** argv) { int arrLen = 20; int arr[] = {32, 4, 21, 5, 23, 66, 3, 56, 556, 67, 69, 67, 34, 23, 12, 89, 43, 12, 56, 99}; new SortAlgorithmInfo(arr, arrLen, BUBLE); new SortAlgorithmInfo(arr, arrLen, INSERT); new SortAlgorithmInfo(arr, arrLen, SELECTION); } SortAlgorithmInfo.cpp #include "AbsrtactSortAlgorithm.cpp" #include "BubbleSortAlgorithm.cpp" #include "InsertSortAlgorithm.cpp" #include "SelectionSortAlgorithm.cpp" const int BUBLE =0; const int INSERT=1; const int SELECTION=2; class SortAlgorithmInfo { private: void printArray(int *arr, int len, char *text) { printf("%s:", text); for (int i = 0; i < len; i++) { printf("%i ", arr[i]); } printf("\r\n"); } void printAlgorithmInfo(AbstractSortAlgorithm *alg, char *text){ printf("%s\r\nShift:%i\r\nCondition:%i\r\n",text,alg->getShiftCount(),alg->getConditionCount()); } AbstractSortAlgorithm* algorithmFactory(int type){ switch(type){ case BUBLE: return new BubleSortAlgorithm(); case INSERT: return new InsertSortAlgorithm(); case SELECTION: return new SelectionSortAlgorithm(); } } char * getAlgorithmName(int type){ switch(type){ case BUBLE: return (char *)"BubleSortAlgorithm"; case INSERT: return (char *) "InsertSortAlgorithm"; case SELECTION: return (char *) "SelectionSortAlgorithm"; } } public: SortAlgorithmInfo(int *unsortArray, int len, int algType) { AbstractSortAlgorithm *alg = algorithmFactory(algType); int *sortArray = alg->execute(unsortArray, len); printf("********************************************************\r\n"); printAlgorithmInfo(alg, getAlgorithmName(algType)); printArray(unsortArray, len, (char *) "unsort"); printArray(sortArray, len, (char *) " sort"); printf("********************************************************\r\n"); } }; #include AbsrtactSortAlgorithm.cpp #ifndef _MY_ASA_ #define _MY_ASA_ class AbstractSortAlgorithm { protected: int _shiftCounter; int _conditionCounter; void addShift() { _shiftCounter++; } void addCondition() { _conditionCounter++; } public: AbstractSortAlgorithm(void) { _shiftCounter = 0; _conditionCounter = 0; } ~AbstractSortAlgorithm(void) { }; int getShiftCount() { return _shiftCounter; } int getConditionCount() { return _conditionCounter; } virtual int* execute(int* unsortArray, int len) = 0; }; #endif BubbleSortAlgorithm.cpp #include "AbsrtactSortAlgorithm.cpp" #include #include class BubleSortAlgorithm : public AbstractSortAlgorithm{ public: int* execute(int* unsortArray, int len){ int *sortArray=new int[len]; memcpy(sortArray,unsortArray,sizeof(int)*len); for(int i=len-1;i>=0;i--){ bool shifted=false; for(int j=0;j addCondition(); if (sortArray[j]>sortArray[j+1]){ addShift(); int temp=sortArray[j]; sortArray[j]=sortArray[j+1]; sortArray[j+1]=temp; shifted=true; } } if (!shifted) break; } return sortArray; }; }; InsertSortAlgorithm.cpp #include "AbsrtactSortAlgorithm.cpp" #include #include class InsertSortAlgorithm : public AbstractSortAlgorithm { public: int* execute(int* unsortArray, int len) { int *sortArray = new int[len]; memcpy(sortArray, unsortArray, sizeof (int) *len); for (int i = 0; i < len; i++) { int insertItem = sortArray[i]; for (int j = i - 1; j >= 0 && sortArray[j] > insertItem; j--) { addCondition(); addShift(); //!!!!Condition==Shift+1 sortArray[j + 1] = sortArray[j]; sortArray[j] = insertItem; } if (i) addCondition(); } return sortArray; }; }; SelectionSortAlgorithm.cpp #include #include class SelectionSortAlgorithm : public AbstractSortAlgorithm { public: int* execute(int* unsortArray, int len) { int *sortArray = new int[len]; memcpy(sortArray, unsortArray, sizeof (int) *len); for (int i = 0; i < len; i++) { int shiftPos = i; int min = sortArray[i]; for (int j = i + 1; j < len; j++) { addCondition(); if (sortArray[j] < min) { min = sortArray[j]; shiftPos = j; } } if (shiftPos != i) { addShift(); sortArray[shiftPos] = sortArray[i]; sortArray[i] = min; } } return sortArray; }; }; #include "AbsrtactSortAlgorithm.cpp" Добавлено спустя 1 минуту 20 секунд: Вот как то так *124
  13. Koshak Бл.......$#$?++$+#?$# если до завтра терпит, то покажу как должна выглядеть нормальная программа. но попробуй после этого писать такой код)
×
×
  • Создать...