0nline

Пользователь
  • Публикации

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

  • Посещение

Репутация

-2 Плохая

О 0nline

  • Звание
    Участник

Информация

  • Пол
    Мужчина
  • Откуда
    Moscow

Контактная информация

  • Skype
    skonline.design

Посетители профиля

1 775 просмотров профиля
  1. Ну собственно всё получилось. Благо существует С++ и бесплатная Visual Studio Express 2015 от Микрософта)) Рекомендую попробовать, интересно написать свое оконное приложение)(Кстати работу зарегистрировали как научную в области оптимизации сетей связи и обмена данными, можете меня поздравить, 4 недели убил на 3 разных версии этого потрясного софта)
  2. Собственно ищу новых заказчиков, кто будет готов рекомендовать студию в будущем своим знакомым. Заказы принимаются в ограниченном количестве, опыт имеется, сложность разработки - отрисовка, вёрстка, JS. Без серверных технологий. (Производим обучение нового персонала). Работа выполняется стажёрами на бесплатной основе. О своих предложениях пишите мне на почту или ниже этого поста. В случае большой временной задержки(более 3 дней от договорного срока) к работе подключится профессионал, а стажёр будет казнён и на его место поставлен новый [email protected]
  3. Соглашусь, я сталкивался с CRM туристической компании на битриксе, мне предлагали её доработать, после чего я отказался от этого ибо всё слишком деревянно, если только у вас не будет человек, который будет заниматься им на протяжении существования вашей компании. Тоже сугубо моё мнение, разбираться в битриксе, написанном другим человеком сложно(в принципе не только в битриксе сложно разбираться, но в нём особенно). К слову задачу решил чисто написанием PHP скриптов, без фреймворков)
  4. Собственно задача стоит такая: Регистрируем граф, выводим всевозможные пути обхода. Поскольку долго работал с сайтами, на PHP решил задачу быстро, но возникла необходимость написания программы на C( И тут я был повержен в шок, ибо строка тут не строка, а массив char, многих удобных функций, к которым я так привык тут нет. В университете писал на C и на C++, но это было давно и после этого я очень сроднился с PHP... Имеется двумерный массив - матрица смежности, в которой введены пропускные способности рёбер графа. Привожу свою функцию обхода в глубину на PHP [code #Выполняем рекурсивный обход в глубину и запись пути для конкретной вершины графа #$connections - матрица смежности #$num - размер матрицы смежности #&$ar - путь для одной ветви обхода в глубину #$n - текущий узел графа #$k - счётчик путей одной ветви обхода в глубину #&$c - счётчик всех путей #&$tc - счётчик пропускных способностей #&$result - массив всех путей #&$temp_capacity - пропускные способности одной ветви обхода #&$result_capacity - пропускные способности всех путей function all_paths($connections, $num, &$ar, $n, $k, &$c, &$result, &$temp_capacity, &$result_capacity) { $tc = 0; if ($k==0) { $ar[$k]=$n; } for ($i=0; $i<$num; $i++) { if (($connections[$n-1][$i]!='') and (strpos($ar[$k], strval($i+1)) === false)) { if ($temp_capacity[$tc]=='') { $temp_capacity[$tc] = $connections[$n-1][$i]; $result_capacity[$c] = $temp_capacity[$tc]; #echo 'k='.$k.', c='.$c.', cap='.$result_capacity[$c].'<br>'; } elseif (strval($temp_capacity[$tc])>=strval($connections[$n-1][$i])) { $temp_capacity[$tc+1] = $connections[$n-1][$i]; $result_capacity[$c] = $temp_capacity[$tc+1]; #echo 'k='.$k.', c='.$c.', cap='.$result_capacity[$c].'<br>'; } else { $temp_capacity[$tc+1] = $temp_capacity[$tc]; $result_capacity[$c] = $temp_capacity[$tc+1]; #echo 'k='.$k.', c='.$c.', cap='.$result_capacity[$c].'<br>'; } $ar[$k+1] = $ar[$k].'.'.($i+1); $result[$c] = $ar[$k+1]; $k++; $c++; $tc++; all_paths($connections, $num, $ar, ($i+1), $k, $c, $result, $temp_capacity, $result_capacity); $k--; $tc--; $temp_capacity[$tc] = ''; } } } ] Тут все прекрасно(тут еще подсчитывается минимальная пропускная способность каждого пути, еще есть функция, которая удаляет зеркальные копии маршрутов обхода) А в С я столкнулся с отсутствием понятия строки как такового(ЧТО?? НЕ КОНКАТЕНИРОВАТЬ СТРОКИ ТОЧКОЙ???) и многими другими трудностями, отсюда вся моя головная боль... Матрицу смежности создаю, а дальше у меня ступор( CodeBlocks заваливает меня непонятными ошибками( #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <string.h> #define max_capacity_length 5 /** Рекурсивный обход матрицы смежности в глубину num - размерность матрицы connections_array - передаваемая матрица k - счетчик обхода в глубину одной ветви c - счетчик количества путей n - текущая вершина path - массив путей для конкретной ветви result_paths - массив всех путей */ void all_paths(int num, int c_ar[num][num],int n,int *k, int *c, char path[], char result_paths[]) { int i; char str[5]; if (*k==0) { itoa(n, str, 10); strcat(path[*k], str); } else for (i=0; i<num; i++) { if (c_ar[n][i]!=0) { itoa(i, str, 10); strcat(path[*k], str); strcat(result_paths[*c], path[*k]); *c=*c+1; *k=*k+1; all_paths(num, c_ar, i, *k, *c, path, result_path); *k=*k-1; } } } int main() { int node_num, i, j, t, capacity, c, k; printf("Enter delay(t): "); scanf("%d", &t);//Вводим задержку, используемую в формуле printf("\nEnter number of nodes: "); scanf("%d", &node_num);//Считываем количество узлов в сети char s[max_capacity_length], temp_path[100], glob_paths[100]; int connections[node_num][node_num]; for (i=0; i<node_num; i++) { for (j=0; j<node_num; j++) { connections[i][j] = 0; printf("[%d][%d]=%d ",i,j,connections[i][j]); } printf("\n"); } printf("Enter connected nodes(FORMAT: NODE.CONNECTED_NODE.CAPACITY), when you enter all connections enter '0'\n"); strcpy(s, "smth"); while (strcmp(s,"0")!=0) { gets(s); strcat(s,"."); i = atoi(strtok(s, "."))-1; j = atoi(strtok(NULL, "."))-1; capacity = atoi(strtok(NULL, ".")); if (i!=-1 && j!=-1 && capacity!=-1) { printf("Element [%d]", i); printf("[%d]", j); printf("\nCapacity = %d\n", capacity); connections[i][j] = capacity; connections[j][i] = capacity; } } c=0; k=0; temp_path[0]=""; for (i=0; i<node_num; i++) { printf("i = %d; ", i); all_paths(node_num, connections, i, &k, &c, temp_path, glob_paths); } getch(); return 0; } Запутался я короче со всеми указателями и массивами строк, которые массивы символов на самом деле А еще почему то нельзя инкрементировать и декрементировать значение переменной через указатель *к... Короче у меня программный шок после PHP, JS. Если есть разбирающиеся люди - просьба помочь, объясните как правильно это писать, в принципе я понимаю в чём ошибка, скорее всего в передаче аргументов функции, но для меня визуально всё выглядит адекватно. Вообще страшная штука С. Если начинать программировать, то лучше начинать именно с него. Только хардкор, никаких поблажек, жесткие указания типов переменных, отсутствие любимых функций, к которым я так привык в PHP(strpos, substr, strval, inttostr и другие). После изучения PHP и JS сложно вникать в С, несмотря на то, что начинал программировать именно с него(около двух лет пописал на нём).
  5. Нет.
  6. Гениально) Интересно, почему это работает в другом скрипте тогда?) move_uploaded_file($image['tmp_name'][$i],'img/'.$image['name'][$i]); if ($image['tmp_name'][$i]<>'') { $url = 'img/'.$image['name'][$i]; } else {echo $_FILES['image']['error'][$i];}
  7. Поставил полный путь: http://site.cn/expo/img/image.gifВ ошибке-предупреждении путь изменился на полный путь) Ошибка - потому что файл не сохраняется.
  8. if ($image['tmp_name'] <> ''){$url = "expo/img/".$image['name'];echo 'url = '.$url;move_uploaded_file($image['tmp_name'],'expo/img/'.$image['name']);} $url выводится, все в порядке. Путь прописан правильно, файл загружается.Выводится вместе с $url ошибка: url = expo/img/image.gifWarning: move_uploaded_file(expo/img/image.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/site/www/www/panel/adde.php on line 33Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phptj4Q6Y' to 'expo/img/image.gif' in /home/site/www/www/panel/adde.php on line 33Права доступа у папок стоят 777.
  9. Проблему решил своеобразным "костылем" if ($image['tmp_name'][$i]<>'') Если есть знающие люди - отпишите, по какой причине не работала проверка с is_uploaded_file(), всё равно не могу этого понять.
  10. Можно глянуть код скрипта, обрабатывающего форму отправки письма?
  11. Собственно суть проблемы: Загружаю массив из картинок посредством формы, отправляю через $_POST, получаю массив $_FILES, всё просто. Необходимо проверять, был ли загружен файл в данном поле или нет. $i = 0;echo is_uploaded_file($image['tmp_name'][$i]);//тут выводится единичка - TRUEwhile ($i <= $count){ if ($day[$i]<>0) { move_uploaded_file($image['tmp_name'][$i],'../cn/tours/img/'.$image['name'][$i]); if (is_uploaded_file($image['tmp_name'][$i]))//а вот тут условие ложно и тело if не выполняется, даже когда файл был загружен и сохранён в конечную директорию функцией выше { $url = '../cn/tours/img/'.$image['name'][$i]; echo $url;//это, естественно, тоже не выводится. }Если проверить $url до входа в if - все прекрасно работает и выводится. В чём проблема? P.S. код формы ниже <form action="add.php" method="post" enctype="multipart/form-data"> <input name='image[]'type='file'> <input type='submit'></form>
  12. Хм, наполнение контентом. Всё зависит от тематики наполняемого сайта. Можно всё проверять на биржах статей. Advego, EText - самые известные и популярные. Насколько мне известно 1000 символов копирайта стоят около 1$. Опять же всё сильно варьируется в зависимости от тематики, очевидно, что есть темы, для написания на которые статей уходит много времени из-за того, что тема редкая, используется много терминов и так далее. И каждая статья, видео, картинка оцениваются по-разному, опять же. Цена тут больше зависит от вас самих и заказчика. Смотрите тему - проверяете на биржах статей - устанавливаете свою цену.
  13. Не могу понять, почему обходится стороной <div id="d1">
  14. Большое спасибо, вроде разобрался. Написал код для кнопки next: var i = 11; var id; function prev() { if(i==12) i=11; id = 'd'+i; var el = document.getElementById(id); if(el.offsetHeight) { if(i <0) return; el.style.display = "none"; i--; } } function next() { if(i==-1) i=0; id = 'd'+i; var el = document.getElementById(id); if(el.offsetHeight) { if(i >11) return; el.style.display = "block"; i++; } }В начале каждой функции проверяю, если i превышает значение границы - то я присваиваю счётчику значение пограничного элемента. Вторая функция по непонятной мне причине не работает. Разобрался, просто забыл отрицание при проверке условия. Теперь встала задача "закольцевать" эти блоки. Нужно чтобы при нажатии на Back на первом элементе (<div id="d0">) он скрывал его и показывал <div id="d11">. Вот моя попытка это сделать, кучу раз уже прогнал этот алгоритм, не могу понять, в чём дело. http://jsbin.com/giquxuvimo/3/
  15. Такой скрипт. Идея заключалась в том, чтобы при нажатии на ссылку уменьшался счётчик i, который вроде как глобальный и нигде кроме функции не изменяется, я попытался склеить id из d и счётчика, чтобы каждый раз при нажатии на ссылку скрывался новый блок, не могу понять в чём проблема. <script type="text/javascript"> <!-- var i=0; var id='d'+i.toString(); function viewdiv() { var el=document.getElementById(id); if(el.style.display=="block") { el.style.display="none"; i-=1; if(i==-1) { i=11; } } } //--> </script><body> <a href="#" onclick="viewdiv();">Back</a> <div> <div class="i" id="d0"><img src="1.jpg"></div> <div class="i" id="d1"><img src="2.jpg"></div> <div class="i" id="d2"><img src="3.jpg"></div> <div class="i" id="d3"><img src="4.jpg"></div> <div class="i" id="d4"><img src="5.jpg"></div> <div class="i" id="d5"><img src="6.jpg"></div> <div class="i" id="d6"><img src="7.jpg"></div> <div class="i" id="d7"><img src="8.jpg"></div> <div class="i" id="d8"><img src="9.jpg"></div> <div class="i" id="d9"><img src="10.jpg"></div> <div class="i" id="d10"><img src="11.jpg"></div> <div class="i" id="d11"><img src="12.jpg"></div> </div> <a href="#">Next</a> </body>