Возвращаюсь к опросам.... Хм...если сделать рандом.... в моем случие при рандоме окажется vopros(2,30,1,'Antichat-samu ly4shi ?'); 1)Нет а 2)Да.... и бал в минус пойдет а ответ будет верный как выйти из ситуции....?
Имеет место быть следующее задание: Вариант задания реализовать в виде функции, использующей для работы со строкой только указатели и операции вида *p++, p++ и т.д.. " Быстрая" сортировка (разделением) с использованием указателей на правую и левую границы массива, текущих указателей на правый и левый элемент и операции сравнения указателей. ------ я не знаю с чего начать. объясните пожалуйста попроще что значит " Быстрая" сортировка (разделением), а я уже на основе этого сам всё сделаю.
никак не могу сделать этот квиксорт =\ вот чего я делаю: 1. задаю каким-то хреном середину массива (этот выбор наугад совсем мне не нравится, херня какая-то) 2. затем ищу слева число, больше или равное данному. если не нашёл, то оно получается такое же как и в середине. 3. ищу слева меньшее данного. или опять же ему равное? вот уже из-за этой херни я не вижу там логики. сколько описаний в сети не прочёл - нигде не сказано точно. примеров нормальных вообще нет. сравнил два числа, (если они не равны друг другу), поменял местами. затем снова ищу. и так наверно до тех пор пока они в любом случае не станут равны друг другу. (ну вот такие рассуждения хоть как-то упорядочивают мои мысли. сортируют их блин.) потом в примере написано надо брать середину левой части. опять же наугад. какой идиот это писал? и доводить всё до того, пока левая часть не станет равна одному элементу массива. а что дальше? и как всё это реализовать? помогите, набросайте хоть какой-нить пример нормальный
:d да не хоар идиот, а тот кто учебник писал. там таки и пишут - возьмём наугад.. чо за херня, как можно делать что-то наугад? в топку таких учителей
наугад, потому что выбор элемента абсолютно никак не влияет на конечную эффективность. зы наугад читай как произвольным образом.
вот можно ли это дело изменить так чтобы функция работала только на указателях? void quicksort(int *array, int start, int stop) { int left = start, right = stop, center = array[(start + stop) / 2]; while(left<right) { while(array<center) left++; while(array>center) right--; if(left<=right) { swap(&array, &array); left++; right--; } } if(right>start) quicksort(array, start, right); if(left<stop) quicksort(array, left, stop); }
задача: Функция находит в строке заданную подстроку и возвращает динамический массив указателей на все вхождения этой подстроки. так вот я не знаю, какой размер задать массиву? получается всякая чушь: Code: #include "stdio.h" void strf(char s1[], char s2[], int pos=0) { int n = sizeof(s1)/sizeof(s1[0]); int n2 = sizeof(s2)/sizeof(s2[0]); char *mass[20]; for(int i=0; i<=n; i++) { if(s1[i] == s2[i]) { int g=i; for(int l=i; l<=n2; l++) if(s1[l]!=s2[l]) { int g=-1; break; } mass[i] = &s1[g]; } } } void main() { char s1[] = "Terriuckble Fucker Stuckpidly"; char s2[] = "uck"; strf(s1,s2); }
вот переделал сколько смог, но всё равно не работает собака серая! я с массивом ms уже замучался. надо чтобы он был массивом указателей char *ms и в него сохранялись указатели на первые вхождения подстроки в строку, т.е. адреса на три буквы U, за которыми следуют буквы C и K. В учебнике написано что для массивов указателей вообще не выделяется память, и как тогда быть? Как наполнить массив указателями? Постучитесь кто-нить в аську 268238560, объясните, иначе я на экзамен не попаду, очень нужен дельный совет! По сути, могу даже яндекс деньгами рассчитаться за помощь, в разумных пределах конечно. #include "stdio.h" char * strf(char *s1, char *s2) { for (int m1=0;s1[m1]!='\0';m1++); for (int m2=0;s2[m2]!='\0';m2++); int ms[5]; int counter=0; int ps=0; for(int i=0;i<m1;i++) { if(s1 == s2[0]) { int start = i; for(int j=0;j<m2;j++) { if(s1[j+i] != s2[j]) ps = 1; } if(ps == 0) ms[counter] = start; } } return (int)ms[5]; } void main() { char s1[] = "Terriuckble Fucker Stuckpidly"; char s2[] = "uck"; strf(&s1[0],&s2[0]); for(int l=0;l<5;l++) printf("%d \n", ms[l]); }
плахой совет, ибо exception safe код при явном вызове delete получить трудно, потому правильный совет звучит так- используйте умные указатели и обёртки над указателями вместо освобождения ресурсов на прямую.
подскажите вот что: entries = (char**)realloc(entries, arr_size*sizeof(char*)); такой строкой я заново переопределяю массив указателей entries или к нему как-то добавляется свободное место? мне нужно в цикле добавлять в динамический массив указатели и каждый раз увеличивать его размер. а дальше вот функция, которую я родил, если не лень, попробуйте скомпилить и скажите почему она ничего не выводит: Code: #include "stdio.h" // ввод/вывод #include "stdlib.h" // работа с памятью char ** fndr(char *s1, char *s2, int *n_entrs) { char ** entries = NULL; // массив с указателями на вхождения int arr_size = 2; // изначально его размер 0 int counter = 0; // счётчик записей int destroy = 0; // если все буквы совпали то она равна нулю for(int s1_len=0;s1[s1_len] != '\0'; s1_len++); // s1_len - длина первой строки for(int s2_len=0;s2[s2_len] != '\0'; s2_len++); // s2_len - длина второй строки for (int i=0; i<s1_len; i++) { if(s1[i] == s2[0]) // если совпал первый символ { for(int g=0; g<s2_len; g++) { if(s1[i+g] != s2[g]) destroy = 1; } if(!destroy) { if(counter >= arr_size) { arr_size *= 2; entries = (char**)realloc(entries, arr_size*sizeof(char*)); // добавление памяти } entries[counter] = &s1[i]; // добавление указателя в массив counter++; // счотчик инкрементируем } } } // конец перебора первой строки *n_entrs = counter; return entries; } void main() { char s1[] = "my house is you house in you house is wife"; char s2[] = "house"; char ** entries; // массив с указателями на вхождения int n_entrs = 0; // кол-во вхождений entries = fndr(s1, s2, &n_entrs); for (int n=0; n<n_entrs; n++) printf("%s \n", entries[n]); free(entries); }
Тут некоторые сортировки на С++, реализация. Если кому надо. http://www3.msiu.ru/~roganov/2sem/sort.cpp
дайте инфы по оверлеям с нуля плз. юзал поиск, не нашел ЗЫ не нашел другого раздела, чтобы спросить=\
Piflit, я тебе уже писал, тебе нужно ознакомиться с документациями по формату PE, но уровень на котором ты находишься сейчас явно не предполагает ознакомления с этой темой. Лучше разберись с основнами для начала. Про указатели, ссылки почитай и т.п. И еще, не путай, если хочешь учиться покупай книгу именно по С, а не талмуд по С++ , ООП на данный момент тебе явно не нужно. wasm.ru -> статьи и форум, лучше чем там не ответят пожалуй нигде.