|
Олимпиада программистов, Чистый С |
|
|
|
Feb 25 2013, 09:05
|
Местный
  
Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753

|
Не знаю, разрешено ли здесь такие сообщения давать. Но надеюсь, что модератор не обидится. Знакомая компания проводит олимпиаду по программированию. Решили поискать программистов в русскоговорящем мире. Меня попросили рассказать, где могу. А я только на этом форуме и бываю. Причем только в разделе для начинающих. http://hola.org/challenge_ru.htmlНадо написать две простые функции на чистом С.
|
|
|
|
|
 |
Ответов
|
Mar 27 2013, 20:33
|

Профессионал
    
Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215

|
Жаль что больше нет времени. 28го все закончится( Вот моя последняя реализация. Прокачал защиту от NULL, оптимизировал некоторые участки и обдумал траблу с перекрытием данных в строках. Код #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h>
void str_cpy ( char **a, const char * b ) {
int size_src; char overlap; if ( b ) size_src = strlen( b ) + 1; else return; overlap = (*a <= b && *a + size_src >= b) || (b <= *a && b + size_src >= *a); *a = realloc( *a, size_src ); if ( overlap ) for (*a += size_src, b += size_src; size_src--; *--*a = *--b); else memcpy( *a, b, size_src ); }
void str_cat ( char **a, const char *b ){ int size_src, size_des; if ( *a ) size_des = strlen( *a ); else size_des = 0; if ( b ) size_src = strlen( b ); else return; *a = realloc( *a, size_src + size_des + 1 ); memmove ( *a + size_des, b, size_src + 1 ); }
int main() { char *s = NULL; str_cpy( &s, "Hola Mola" ); str_cpy( &s, s+5 ); str_cat( &s," World" ); return 0; } Очень интересно как правильно, ждем ответ ответ на этот вопрос от организаторов!  (EDIT: Утром немного допилил и исправил ошибки)
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Mar 28 2013, 05:19
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(Буратино @ Mar 28 2013, 00:33)  обдумал траблу с перекрытием данных в строках. А чего её обдумывать? Посмотрите реализацию memmove. В ней всё уже обдумано: если нет перекрытия то вызывается memcpy. Оптимальнее вряд ли напишете. Я тоже отправил свой вариант в день размещения этой темы, но никакого ответа пока так и не получил. Завтра могу показать.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Mar 28 2013, 06:01
|
Местный
  
Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753

|
Цитата(demiurg_spb @ Mar 28 2013, 09:19)  Я тоже отправил свой вариант в день размещения этой темы, но никакого ответа пока так и не получил. Это странно. Они всегда отвечают если не в тот же день, то на следующий. Скажите, пожалуйста, свой емэйл. Можно частично. Я им прямо сейчас позвоню и спрошу как так получилось, что не ответили.
|
|
|
|
|
Mar 28 2013, 06:05
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(igorle @ Mar 28 2013, 10:01)  Это странно. Они всегда отвечают если не в тот же день, то на следующий. Скажите, пожалуйста, свой емэйл. Можно частично. Я им прямо сейчас позвоню и спрошу как так получилось, что не ответили. Отправлял и с demiurg_spb @ _ _ _.ru и с ___ @ kipspb.ru
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Mar 28 2013, 06:16
|
Местный
  
Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753

|
Цитата(demiurg_spb @ Mar 28 2013, 10:05)  Отправлял и с ... и с ... Я позвонил человеку, который просил меня сделать перевод. Он сегодня не работает (в Израиле сейчас неделя праздников), поэтому сгодня проверить как так получилось не может. Вернется на работу во вторник. Сопроводительное письмо было? На английском?
Сообщение отредактировал igorle - Mar 28 2013, 06:16
|
|
|
|
Сообщений в этой теме
igorle Олимпиада программистов Feb 25 2013, 09:05 SyncLair Уж простите но как то лохотроном попахивает ) Feb 25 2013, 15:10 igorle Цитата(SyncLair @ Feb 25 2013, 19:10) Уж ... Feb 25 2013, 15:49 SyncLair Да я не про вашу репутацию. Я про фирму. Ей наверн... Feb 25 2013, 16:01 igorle Цитата(SyncLair @ Feb 25 2013, 20:01) Да ... Feb 25 2013, 16:18  Слесарь Цитата(igorle @ Feb 25 2013, 19:18) - ест... Feb 26 2013, 16:54   igorle Цитата(Слесарь @ Feb 26 2013, 19:54) ... ... Feb 26 2013, 17:06    _Pasha Цитата(igorle @ Feb 26 2013, 20:06) А воо... Feb 26 2013, 17:12    Слесарь Цитата(igorle @ Feb 26 2013, 20:06) На ин... Feb 26 2013, 17:27     _Pasha Цитата(Слесарь @ Feb 26 2013, 20:27) Наве... Feb 26 2013, 17:34 _Pasha Цитата(SyncLair @ Feb 25 2013, 19:01) Чес... Feb 25 2013, 16:22 gerber Цитата(SyncLair @ Feb 25 2013, 19:01) Чес... Feb 26 2013, 12:10 ReAl Причём совершенно непонятно, круче будет тот вариа... Feb 25 2013, 19:21 _Pasha Цитата(ReAl @ Feb 25 2013, 22:21) Причём ... Feb 26 2013, 09:48 demiurg_spb Цитата(ReAl @ Feb 25 2013, 23:21) Ну а st... Feb 26 2013, 13:48  ReAl Цитата(demiurg_spb @ Feb 26 2013, 15:48) ... Feb 26 2013, 13:56   demiurg_spb Цитата(ReAl @ Feb 26 2013, 17:56) А чо... Feb 26 2013, 14:00    ReAl Цитата(demiurg_spb @ Feb 26 2013, 16:00) ... Feb 26 2013, 14:47  igorle про str_printf:
Цитата(demiurg_spb @ Feb 26 2... Feb 26 2013, 15:41 Iptash В функции str_cat перед конкатенации нужно Mundo е... Feb 25 2013, 19:24 igorle Цитата(Iptash @ Feb 25 2013, 22:24) В фун... Feb 25 2013, 20:00  ReAl Цитата(igorle @ Feb 25 2013, 22:00) В исх... Feb 26 2013, 07:40  ViKo Цитата(igorle @ Feb 25 2013, 23:00) Откро... Feb 26 2013, 09:37   Lotor Цитата(ViKo @ Feb 26 2013, 13:37) Ваши др... Feb 26 2013, 11:43 Сергей Борщ Мда... Олимпиада - высшее спортивное состязание. Т... Feb 26 2013, 12:04 igorle Цитата(Сергей Борщ @ Feb 26 2013, 16:04) ... Feb 26 2013, 12:51  Сергей Борщ QUOTE (igorle @ Feb 26 2013, 14:51) Если ... Feb 26 2013, 13:46 _Pasha Надо создать поток с переопределенной ф-цией putc(... Feb 26 2013, 15:37 SSerge А потом этих гениев примут в штат и посадят очедну... Feb 26 2013, 15:55 _Pasha Цитата(SSerge @ Feb 26 2013, 18:55) Вот с... Feb 26 2013, 16:01 Слесарь Незнаю как и кто, но я ощущаю счастье в том, что п... Feb 26 2013, 17:39 ViKo Воры в законе? Feb 26 2013, 17:51 _Pasha Цитата(ViKo @ Feb 26 2013, 20:51) Воры в ... Feb 26 2013, 17:58 Буратино Может вот так попробовать:
Код#include <stdio... Mar 18 2013, 10:08 igorle Цитата(Буратино @ Mar 18 2013, 14:08) Мож... Mar 19 2013, 14:39  Буратино Цитата(igorle @ Mar 19 2013, 18:39) Я обе... Mar 19 2013, 17:27  demiurg_spb Цитата(igorle @ Mar 19 2013, 18:39) Пока ... Mar 20 2013, 05:17   igorle Цитата(demiurg_spb @ Mar 20 2013, 08:17) ... Mar 20 2013, 07:09 skripach ЦитатаНезнаю как и кто, но я ощущаю счастье в том,... Mar 19 2013, 14:52 federal На олимпиадное тут не тянет, даже далеко не тянет.... Mar 20 2013, 07:40 am1808 отправил ради интереса
Кодvoid str_cpy( char*... Mar 20 2013, 10:08 Буратино Да, мне кое какие моменты нужно исправить..
Скажи... Mar 20 2013, 10:09 gerber Цитата(Буратино @ Mar 20 2013, 13:09) Ска... Mar 20 2013, 10:28  msalov Цитата(gerber @ Mar 20 2013, 13:28) Кодst... Mar 22 2013, 06:10 am1808 размер типа правильно определять в runtime Mar 20 2013, 10:13 demiurg_spb Цитата(am1808 @ Mar 20 2013, 14:13) разме... Mar 20 2013, 10:17  am1808 Цитата(demiurg_spb @ Mar 20 2013, 14:17) ... Mar 20 2013, 10:25 Буратино Цитата(am1808 @ Mar 20 2013, 14:13) разме... Mar 20 2013, 10:23  aaarrr Цитата(Буратино @ Mar 20 2013, 14:23) Но ... Mar 20 2013, 10:27   demiurg_spb Цитата(aaarrr @ Mar 20 2013, 14:27) Далек... Mar 20 2013, 10:39    Огурцов Цитата(demiurg_spb @ Mar 20 2013, 11:39) ... Mar 21 2013, 11:58     demiurg_spb Цитата(Огурцов @ Mar 21 2013, 15:58) А у ... Mar 21 2013, 12:20      Буратино Цитата(demiurg_spb @ Mar 21 2013, 16:20) ... Mar 21 2013, 14:37       igorle Цитата(Буратино @ Mar 21 2013, 17:37) ... Mar 21 2013, 14:44        Буратино Цитата(igorle @ Mar 21 2013, 17:44) Пробл... Mar 21 2013, 15:10         igorle Цитата(Буратино @ Mar 21 2013, 18:10) А к... Mar 21 2013, 15:52  am1808 Цитата(Буратино @ Mar 20 2013, 14:23) Вид... Mar 20 2013, 10:31 Буратино am1808, если открыть реализацию realloc, то там по... Mar 20 2013, 11:06 Буратино Вот так еще можжно:
Код#include <stdio.h>
... Mar 21 2013, 11:54 am1808 нее, не прокатит, множитель в виде sizeof(char) ли... Mar 22 2013, 07:18 Буратино igorle, замечания обдумываю, но вот например не яс... Mar 22 2013, 07:30 igorle Цитата(Буратино @ Mar 22 2013, 11:30) ...... Mar 22 2013, 07:52 Буратино Если бы я мог как-то обезапасить строку от изменен... Mar 22 2013, 11:28 federal Буратино, какой же ты деревянный все таки Mar 22 2013, 12:29 Буратино Цитата(federal @ Mar 22 2013, 15:29) Бура... Mar 22 2013, 13:08 Буратино igorle, Вы наверное хотели написать
Код'... Mar 25 2013, 11:29 igorle Я Вас теряю.
Вы пишите
Цитатане ясно почему ... Mar 25 2013, 14:18 Буратино Сори, но я имел в виду именно '\0', ... Mar 25 2013, 16:41 ARV Цитата(Буратино @ Mar 25 2013, 20:41) Кое... Mar 25 2013, 18:15 igorle Цитата(Буратино @ Mar 25 2013, 19:41) Сор... Mar 26 2013, 07:22 ar__systems отправил им решение, посмотрим что ответят. Сделал... Mar 27 2013, 15:12      igorle Цитата(demiurg_spb @ Mar 28 2013, 09:23) ... Mar 28 2013, 06:53    igorle Цитата(demiurg_spb @ Mar 28 2013, 09:05) ... Apr 2 2013, 16:08     Буратино Цитата(igorle @ Apr 2 2013, 19:08) Посмот... Apr 2 2013, 17:55      igorle Цитата(Буратино @ Apr 2 2013, 20:55) Как ... Apr 2 2013, 19:33       demiurg_spb Получил таки ответ от них:
ЦитатаThanks for taking... Apr 5 2013, 05:20        igorle Цитата(demiurg_spb @ Apr 5 2013, 08:20) П... Apr 5 2013, 08:13     demiurg_spb Цитата(igorle @ Apr 2 2013, 20:08) Посмот... Apr 3 2013, 05:16 Буратино Скажите, а как можно переписать покрасивше вот это... Mar 28 2013, 06:40 demiurg_spb Кодchar* p;
size_t n = (p)? strlen(p... Mar 28 2013, 06:40  Буратино Цитата(demiurg_spb @ Mar 28 2013, 09:40) ... Mar 28 2013, 06:45   demiurg_spb Цитата(Буратино @ Mar 28 2013, 10:45) А м... Mar 28 2013, 06:48   demiurg_spb Цитата(Буратино @ Mar 28 2013, 10:45) А з... Mar 28 2013, 07:00 ar__systems Цитата(Буратино @ Mar 28 2013, 01:40) Ска... Mar 28 2013, 12:54 Буратино Да, нужно почитать что-то на эту тему. Спс. Mar 28 2013, 07:11 Буратино Так чем дело кончилось? Какое правильное решение? May 17 2013, 10:41 ARV Цитата(Буратино @ May 17 2013, 14:41) Так... May 18 2013, 18:17 igorle Цитата(Буратино @ May 17 2013, 13:41) Так... May 19 2013, 20:02 Буратино Для меня важно понять: правильное решение лежит ис... May 20 2013, 12:01 igorle Цитата(Буратино @ May 20 2013, 15:01) Для... May 20 2013, 17:07  Idle Цитата(igorle @ May 20 2013, 21:07) 119 п... May 20 2013, 18:54
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|