реклама на сайте
подробности

 
 
> Олимпиада программистов, Чистый С
igorle
сообщение Feb 25 2013, 09:05
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



Не знаю, разрешено ли здесь такие сообщения давать. Но надеюсь, что модератор не обидится.
Знакомая компания проводит олимпиаду по программированию. Решили поискать программистов в русскоговорящем мире.

Меня попросили рассказать, где могу. А я только на этом форуме и бываю. Причем только в разделе для начинающих.
http://hola.org/challenge_ru.html

Надо написать две простые функции на чистом С.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Буратино
сообщение Mar 27 2013, 20:33
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 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;
}


Очень интересно как правильно, ждем ответ ответ на этот вопрос от организаторов! sm.gif

(EDIT: Утром немного допилил и исправил ошибки)


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 28 2013, 05:19
Сообщение #3


неотягощённый злом
******

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



Цитата(Буратино @ Mar 28 2013, 00:33) *
обдумал траблу с перекрытием данных в строках.
А чего её обдумывать?
Посмотрите реализацию memmove. В ней всё уже обдумано: если нет перекрытия то вызывается memcpy. Оптимальнее вряд ли напишете.
Я тоже отправил свой вариант в день размещения этой темы, но никакого ответа пока так и не получил. Завтра могу показать.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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:19) ...   Mar 28 2013, 06:01
|- - demiurg_spb   Цитата(igorle @ Mar 28 2013, 10:01) Это с...   Mar 28 2013, 06:05
|- - igorle   Цитата(demiurg_spb @ Mar 28 2013, 10:05) ...   Mar 28 2013, 06:16
||- - demiurg_spb   Цитата(igorle @ Mar 28 2013, 10:16) Сопро...   Mar 28 2013, 06:23
||- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 05:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01481 секунд с 7
ELECTRONIX ©2004-2016