Карта сайта

Это автоматически сохраненная страница от 23.02.2014. Оригинал был здесь: http://2ch.hk/b/res/63096031.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Вск 23 Фев 2014 18:01:57
СИ Имплементация яп С функции
СИ Имплементация яп С функции Нужно имплементировать функцию. Хотя бы направьте в нужное русло.
Дано:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
Нужно чтоб функция (назовём str_1) Копировала в первый аргумент (который строчного типа, но это не важно) Второй аргумент (выглядеть должно
str_1(&x, "этот текст скопируетя"), в итоге в х будет текст "этот текст скопируется", но нужно одновременно, чтобы в функции str_1, если ко значению прибавляется какое-либо число, то она должна записывать в переменную x копируемую строку НАЧИНАЯ ПОСЛЕ буквы, которая является на позиции числа (на n-ной позиции). Сейчас будет яснее - (например, str_1(&x, x+11), при том что в х содержится до этого "этот текст скопируется", то после выполнения этой функции в ней будет находиться ТОЛЬКО слово "скопируется", так как оно начинается после 11 знака, первые 11 знаков отбрасываются.

Ну и нужно вторую функцию имлементировать, чтоб она к первому аргументу (строчному) добавляла (присоединяла) второй аргумент, чтоб получалось типа str_2(&x, " текст"), при том что до этого в х "скопируется", по после выполнения ф-ии в переменной х будет "скопируется текст".
Вот так вот. Халп аноны, помогите. Если не поможете, хотя бы направьте в нужное русло.



Вск 23 Фев 2014 18:02:31
>>63096031
бамп

Вск 23 Фев 2014 18:03:01
>>63096070
бамп[1]

Вск 23 Фев 2014 18:03:35
>>63096107
бамп[2]

Вск 23 Фев 2014 18:04:10
>>63096152
бамп[3]

Вск 23 Фев 2014 18:04:42
>>63096188
бамп[4]

Вск 23 Фев 2014 18:05:16
>>63096219
бамп[5]

Вск 23 Фев 2014 18:05:51
>>63096260
бамп[6]

Вск 23 Фев 2014 18:06:29
>>63096295
бамп[7]

Вск 23 Фев 2014 18:06:34
>>63096031
Пиздуй отсюда со своей Холой.

Вск 23 Фев 2014 18:06:37
http://habrahabr.ru/post/213529/
Глупый европеец решил наживиться.
Думай, решай сам. В интернетах полно инфы.

Вск 23 Фев 2014 18:06:47
хуя ты хакер, я командную строку знаю, могу подсказать как свой айпишник посмотреть

Вск 23 Фев 2014 18:07:01
>>63096330
бамп[8]

Вск 23 Фев 2014 18:07:24
http://thecodeil.com/5min_challenge_ru.html

Вск 23 Фев 2014 18:07:42
>>63096031
Я ни хуя не понял, но
> если ко значению прибавляется какое-либо число
Попробуй перегрузить функцию. Если ко значению прибавляется число, то испольхуй функцию с двумя аргументами. Если ничего не прибавляется, то функция с одним аргументом.

Вск 23 Фев 2014 18:08:14
>>63096340
>>63096344
>>63096353
>>63096367
бамп[9]
сцуко блядь ну тогда скажите как имплементировать функцию, я же джаву блядь только на уровне пре-жуниор знаю и паскаль, там вся имплементация заключалась в описании блядь

Вск 23 Фев 2014 18:08:29
>>Копировала
Пошла нахуй, шлюха.

Вск 23 Фев 2014 18:09:08
>>63096453
иди выебывайся в другой тред, выебывается он тут, падонок

Вск 23 Фев 2014 18:09:34
>>63096031
>копировала
ты знаешь правила.

Вск 23 Фев 2014 18:09:37
>>63096412
>испольхуй функцию с двумя аргументами
Можно юзать только функцию с одним аргументом, к сожалению. Но значение строчное.

Вск 23 Фев 2014 18:10:19
>>63096526
Тебе суп с сиськами функции нужен штоле?

Вск 23 Фев 2014 18:10:27
>>63096526
Суп /б/, я функция, аргументов не будет. Имплемнтируйте свои ответы.

Вск 23 Фев 2014 18:10:53
>>63096453
бамп[10]

Вск 23 Фев 2014 18:11:08
>>63096526
Функция копировала, а не ОП, мудила.

Вск 23 Фев 2014 18:11:20
>>63096528
> с одним аргументом
> str_1(&x, "этот текст скопируетя")
А это что?

Вск 23 Фев 2014 18:11:26
>>63096581
>Суп /б/, я функция, аргументов не будет. Имплемнтируйте свои ответы.
проиграл

Вск 23 Фев 2014 18:11:45
>>63096031
Есть стандартные strcpy и strcat, которые именно так и работают. Но тебе придётся следить, чтобы строка не вылезла за пределы буфера. Если же ты хочешь, чтобы буфер увеличивался автоматически, для первого аргумента тебе придётся завести структуру.

Вск 23 Фев 2014 18:12:52
>>63096031
Хочешь выйграть 500 баксов,лол??)

Вск 23 Фев 2014 18:13:02
>>63096574
Или сиськи или пизду. А пока сажи.

Вск 23 Фев 2014 18:13:04
>>63096526
Это самый феериеческий пример условного рефлекса, который я когда-либо видел.

Вск 23 Фев 2014 18:13:18
>>63096626
Я в мозг ебусь, я имел в виду что функция одна и та же и для вставки в неё, и для вставки в неё начиная с n+1-ного знака. Как-то так.

Вск 23 Фев 2014 18:14:25
>>63096746
Фееричный

Вск 23 Фев 2014 18:14:45
>>63096615
Оправдания рыбнописечной. Спешите видеть.

Вск 23 Фев 2014 18:14:49
>>63096031
Я нихуя не понял. Ты условие нормальное дай.

Вск 23 Фев 2014 18:15:30
>>63096767
Можно перегрузить не по количеству аргументов, а в зависимости от типа аргумента. Но по-любому тогда нужно больше аргументов.

Вск 23 Фев 2014 18:15:33
>>63096733
>выйграть
Хохол не палится.

Вск 23 Фев 2014 18:15:59
>>63096855
Ну есть функции, две штуки. Нужно их имплементировать так, как я описал. В помощь куча инклудов.

Вск 23 Фев 2014 18:16:28
35 постов без сисек. Двач совсем ебанулся.

Вск 23 Фев 2014 18:16:52
>>63096885
>в зависимости от типа аргумента
Это сложнее, чем я ожидал

Вск 23 Фев 2014 18:16:53
>>63096917
В твоём описании чёрт ногу сломит. Дай нормальное.

Вск 23 Фев 2014 18:18:36
>>63096946
На, дрочи


Вск 23 Фев 2014 18:18:54
Сажи шлюхе без пруфов.

Вск 23 Фев 2014 18:20:39
>>63097064
Фотошоп незаметен.

Вск 23 Фев 2014 18:20:43
>>63097092
Угомонись уже, петросян. Вангую, что над твоими шутками даже мама не смеётся.


Вск 23 Фев 2014 18:21:22
>>63096971
Есть код
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>

int main(int argc, char *argv[])
{
char *s = NULL;
str_1(&s, "Hello Hello");
str_1(&s, s+6);
str_2(&s, " World");
str_printf(&s, "%s!", s);
puts(s); /* result: "Hello World!" */
str_free(&s);
return 0;
}
Нужно имплементировать функции str_1 и str_2, другие трогать нельзя. Нужно чтоб в итоге получилось Hello world

Вск 23 Фев 2014 18:22:27
>>63097190
Пиздуй на мдк, школьник.
Если зеленый притворился тней, то это его проблемы.
Есть традиции двача, которые нельзя нарушать.
Сажи.

Вск 23 Фев 2014 18:23:31
>>63097186
Что я специально для тебя раздеваться буду чтоли? Нихуя

Вск 23 Фев 2014 18:24:54
#include <iostream>
using namespace std;
int main()
{
coin << "Hello world!"
return 0;
}


иди на хуй*

Вск 23 Фев 2014 18:25:44
>>63097401
похуй что проебался с разметкой

Вск 23 Фев 2014 18:28:21
>>63097401
Ну блять ну я же просил нормаьно, лол.
Оно занимает от 5 до 7 минут

Вск 23 Фев 2014 18:30:01
>>63097594
что тебя не устраивает?

Вск 23 Фев 2014 18:32:16
>>63096031
>но нужно одновременно, чтобы в функции str_1, если ко значению прибавляется какое-либо число, то она должна записывать в переменную x копируемую строку НАЧИНАЯ ПОСЛЕ буквы, которая является на позиции числа (на n-ной позиции). Сейчас будет яснее - (например, str_1(&x, x+11), при том что в х содержится до этого "этот текст скопируется", то после выполнения этой функции в ней будет находиться ТОЛЬКО слово "скопируется", так как оно начинается после 11 знака, первые 11 знаков отбрасываются.
На сях ты этого толком не сделаешь. На чистом C, при вызове str_1(&x, x+11), сработает приведение числового типа к типу x (указатель на строку), далее арифметика с указателями и, в результате, указатель будет указывать на "скопируется" только при удачном расположении звёзд. И провести проверку правильности параметров внутри функции ты уже не можешь, поскольку передаётся уже готовый результат сложения, а не выражение.

Вск 23 Фев 2014 18:34:31
>>63096581
Лоллировал, и захуярил тредшот. Как-нибудь через год увидишь если я не выпилюсь и будешь ностальгировать по этому времени.

Вск 23 Фев 2014 18:35:08
>>63096660
но можно же поюзать контейнеры...

Вск 23 Фев 2014 18:35:14
>>63097800
тонко

Вск 23 Фев 2014 18:36:42
>>63097234
> str_1(&s, s+6);
Вот такие вещи сразу порождают дополнительные сложности. Даже лень объяснять.

Вск 23 Фев 2014 18:38:59
>>63097930
Какие нахуй контейнеры в чистой сишке?

Вск 23 Фев 2014 18:40:23
>>63097902
Что ты скажешь, если я прзнаюсь, что спецально так сделал и тот пост мой. Пруф там выше на два поста и его не заметили.

Вск 23 Фев 2014 18:46:13
>>63098119
а это разве не плюсы? Vector вроде входит в стандартную библиотеку.
по идее функцию str_1 нужно делать расширенной, иметь разный функционал в зависимости от типа второго аргумента.
действие первое - копируем, действие второе - обрезаем.
ну а str_2 - дописываем в тот же массив второй аргумент, как то так вроде.

Вск 23 Фев 2014 18:59:03
>>63097800
В общем, что я понял из того, что ты написал - на данном уровне развития я не смогу это реализовать, спасибо.
>>63098493
Если у тебя получится, то поделись со мной результатом.
Вот ссылка, её уже давали. Я хотел при помощи програнона получить 500-250 баксов. http://thecodeil.com/5min_challenge_ru.html
Ну, нет так нет, щито поделать.

Вск 23 Фев 2014 19:01:18
>>63098187
Ты удачно пошутил, я даже проиграл пару раз, спасибо.

Вск 23 Фев 2014 19:15:17
>>63097401
Сука, вот из-за таких долбоёбов я в рабочем проекте ловил ошибки. Нахуй весь неймспейс добавлять? Вас так в универах что ли учат?

Вск 23 Фев 2014 19:23:06
>>63100117
А как правильно? Какие могут из-за этого ошибки вылезать?

Вск 23 Фев 2014 19:24:24
>В общем, что я понял из того, что ты написал - на данном уровне развития я не смогу это реализовать
Перегрузка по типу
#include <string.h>
char* str_1(char* s, int i);
char* str_1(char* s, char* i);

char* str_1(char* s, int i)
{
return (s+i);
}

char* str_1(char* s, char* i)
{
strcat(s,i);
return (s);
}
#pragma argsused
int main(int argc, char* argv[])
{
return 0;
}

Передача по ссылке, как ты написал - глупость (в 1 случае ты не сможешь освободить память т-к затрешь &s)
ИБЛЯДЬ НЕ ЗАБЫВАЙ ПРАВИЛЬНО РУЛИТЬ ПАМЯТЬЮ ИНАЧЕ ЖОПА (для второго случая под s должно быть выделено malloc(strlen(s) + strlen(i) + 1)
http://www.rsdn.ru/article/cpp/cstr.xml


Вск 23 Фев 2014 19:45:29
>>63100532
Ну например мне нужно было завести переменную pair. А в std уже так называется контейнер. И не ебёт, что ты его не используешь - ты добавил весь неймспейс.
Можно добавить только то имя, которое собираешься юзать, например так:
using std::cout;
Но я предпочитаю неймспейс писать каждый раз при использовании:
std::cout << "YOBA" << std::endl;
Если получается что-то стрёмное (вроде boost::asio:: и так далее), то можно тайпдеф сделать.
Как-то так...

Вск 23 Фев 2014 20:16:23
>>63099153
>(например, str_1(&x, x+11)
Я вот не понял, если ссылка на строку(а не указатель) передается, то как с ней внутри функции работать?

Вск 23 Фев 2014 20:34:24
>>63103764
Отвечайте на мой ответ.

Вск 23 Фев 2014 20:35:19
>>63103764
Как и с переменными объявленными локально в теле ф-ции.
Только результат скажется на значении переданого аргумента в ф-ции вызывающей
http://ru.wikipedia.org/wiki/%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_(C%2B%2B)

Вск 23 Фев 2014 20:41:54
>>63104873
С * чаром не работает. Дай работающий пример

Вск 23 Фев 2014 20:57:14
>>63105306 Работай с *void он универсальный, но в ansi c нет перегрузки имен.


Вск 23 Фев 2014 21:03:12
>>63096031
гуглить научить школокодер
на гисте все есть.
сажи.

Вск 23 Фев 2014 21:05:00
>>63106267


int tests(char &str, char *str2)
{
char *a = str;
printf("%s", a);
}

int main()
{

char test[] = "aaa";
tests(&test, test+11);

return 0;
}



Не работает так. Как нужно?

Вск 23 Фев 2014 21:16:03
#include <stdio.h>
void tests(char *str, int i)
{
char *a = str;
printf("%s", a+i);
}

int main()
{

char test[] = "aaa";
tests(test, 11);
getch();
return 0;
}

Но с 11 ты получишь бяку, потому как вышел за конец массива.


Вск 23 Фев 2014 21:18:25
>>63107436
Нет, тут указатель. Я тебе дал пример выше, со ссылкой. Как в задании ОПа.

Вск 23 Фев 2014 21:27:45
>>63107587 А, бля, нет в с ссылок. А в плюсах добавится взятие адреса printf("%s", &a+i);

Вск 23 Фев 2014 21:30:07
>>63108191 Быстрофикс printf("%s", &str1+i); А там вообще не нужно

Вск 23 Фев 2014 21:31:12
>>63108191
Что значит нету? Вот например код, который ОП по заданию запостил:
>>63097234

Вск 23 Фев 2014 21:33:59
>>63108191
Действительно, на вики написано что в Си нету ссылок. В любом случае, как будет выглядеть рабочий пример кода? >>63106741

Вск 23 Фев 2014 21:36:33
>str_1(&x, x+11), при том что в х содержится до этого "этот текст скопируется", то после выполнения этой функции в ней будет находиться ТОЛЬКО слово "скопируется"
>На сях ты этого толком не сделаешь.

Непосильная проблема реализовать копирование накладывающихся друг на друга участков памяти, ну охуеть теперь, наверное, memmove ещё не изобрели. 3 строчки кода никто не напишет, зачем так жить, котаны?


Вск 23 Фев 2014 21:43:14
>>63108721
Ну так набросай лол, раз умный такой.

Вск 23 Фев 2014 21:45:47
>>63108580 >>63107436
>>63108721 А там ничего и не копируется. Просто адрес (указатель) при вызове ф-ции помещается в стек. Что бы копировалось нужно писать tests(char str[255], int i)


Вск 23 Фев 2014 21:48:07
>>63109311
Да я тебя спращиваю как работать с х, если как в примере ОПа, он в функцию передается вот так str_1(&x, x+11)?

Вск 23 Фев 2014 21:57:15
>>63109311
Ну как не копируется, всё везде копируется, лол. Не сбивай себя с толку, думая, что раз написано x+11, то это int. В x-то указатель, значит, и в x+11 будет указатель, по которому лежит кусок строки с оффсетом в 11.
Исходя из описания и способа использования str_1(&x, x+11) у тебя есть функция типа void str_1(char **dst, char *src), где твоя задача — скопировать память с символами из адреса src в адрес *dst.
Это 2 шага:
- выделить память в *dst, если нужно;
- скопировать память из src в *dst, размер копируемой памяти зависит от размера src в символах + 1.


Вск 23 Фев 2014 22:00:37
>>63109448 >>63108191 http://proguroki.ru/urok7/urok7_1/urok7_1_3/urok-7-1-3-operatsiya-vzyatiya-adresa
str_1(&x, x+11) Второй аргумент - указатель на первый символ остатка строки.
Первый нахуй не нужен.
Вообще говоря, если на плюсах это будет выглядеть
x+=11;
без всяких функций, но выход за пределы массива, утечки памяти, гроб гроб.

Вск 23 Фев 2014 22:41:41
>>63110178
Нужен, потому что ты не знаешь где заканчивается x а начинается x+11. А во вторых, никто так и не объяснил как работать внутри функции с х, если x через ссылку передан. На примере этого хотя бы >>63106741.


← К списку тредов