Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

12.11.2009, 21:12
|
|
Познающий
Регистрация: 27.05.2009
Сообщений: 44
Провел на форуме: 105684
Репутация:
-1
|
|
нужен алгоритм сортирофки чисел
|
|
|

12.11.2009, 21:14
|
|
Познающий
Регистрация: 27.09.2008
Сообщений: 57
Провел на форуме: 265628
Репутация:
23
|
|
std::sort ?
|
|
|

12.11.2009, 21:22
|
|
Познающий
Регистрация: 27.05.2009
Сообщений: 44
Провел на форуме: 105684
Репутация:
-1
|
|
Сообщение от Lee_fx
std::sort ?
алгоритм
|
|
|

12.11.2009, 21:22
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме: 1576821
Репутация:
88
|
|
http://ru.wikipedia.org/wiki/Алгоритм_сортировки
|
|
|

12.11.2009, 21:26
|
|
Познающий
Регистрация: 27.05.2009
Сообщений: 44
Провел на форуме: 105684
Репутация:
-1
|
|
ты видел как там всё написано минебы попроще да с примером вики и я смотрел
|
|
|

12.11.2009, 21:34
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме: 1576821
Репутация:
88
|
|
http://ru.wikipedia.org/wiki/Быстрая_сортировка
В вики читать лучше, чем мы будем тебе все вместе объяснять...
Код:
int n, a[n];
void qs(int* s_arr,int first, int last)
{
int i = first, j = last, x = s_arr[(first + last) / 2];
do {
while (s_arr[i] < x) i++;
while (s_arr[j] > x) j--;
if(i <= j) {
if (i < j) swap(s_arr[i], s_arr[j]);
i++;
j--;
}
} while (i <= j);
if (i < last)
qs(s_arr,i, last);
if (first < j)
qs(s_arr,first,j);
}
|
|
|

12.11.2009, 21:43
|
|
Познающий
Регистрация: 27.05.2009
Сообщений: 44
Провел на форуме: 105684
Репутация:
-1
|
|
спасибо тебе  ты девушка?
|
|
|

12.11.2009, 22:22
|
|
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме: 89596
Репутация:
21
|
|
Всем привет!
При написании проги возник простой наверное вопрос. Если я передаю в функцию вектор следующим образом
Код:
bool find_line(dict, 0, line_yes){
int i;
// некоторые действия
....
find_line(dict, i, line_yes);
return line_yes;
}
int main(){
bool line_yes;
vector<one_word> dict(how_much_words);
find_line(dict, 0, line_yes);
}
То собственно вектор в таком случае передаётся по ссылке или по значению ???
Заранее спасибо ! 
|
|
|

12.11.2009, 22:28
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме: 1576821
Репутация:
88
|
|
VIP
пиши подробней,
(хотя бы переменные опиши которые используешь)
|
|
|

12.11.2009, 22:35
|
|
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме: 89596
Репутация:
21
|
|
Сообщение от Irdis
VIP
пиши подробней,
(хотя бы переменные опиши которые используешь)
собственно вот полный листинг проги
Код:
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <vector>
#include <string.h>
using namespace std;
#define MAX_WORD_LONG (WORD_SIZE_MAX + 2)
#define WORD_SIZE_MIN 3
#define WORD_SIZE_MAX 4
struct one_word {
char element[MAX_WORD_LONG];
bool is_use;
};
void print_dict(std::vector<one_word> dict){
system("cls");
printf("Dictonary: \n\n");
for(int i = 0; i < (int)dict.size(); i++){
printf("%d. ", i + 1);
for(int j = 0; dict[i].element[j] != '\0'; j++){
printf("%c", dict[i].element[j]);
};
printf("\n");
}
}
bool find_line(std::vector<one_word> dict, int i, bool line_yes){
dict[i].is_use = true;
printf("\n");
printf("%d. ", i + 1);
for(int j = 0; dict[i].element[j] != '\0'; j++){
printf("%c", dict[i].element[j]);
};
int last_latter;
for(last_latter = 0; dict[i].element[last_latter + 1] != '\0'; last_latter++);
for(int j = 0; j < (int)dict.size(); j++){
if (((int)dict[i].element[last_latter] == (int)dict[j].element[0])&&(dict[j].is_use == false)){
find_line(dict, j, line_yes);
line_yes = true;
}
}
return line_yes;
}
int main(){
srand(time(NULL));
int how_much_words;
system("cls");
printf("How much words? \n");
scanf_s("%d", &how_much_words);
vector<one_word> dict(how_much_words);
int word_size = 0;
system("cls");
int symbol_of_new_word;
for(int i = 0; i < how_much_words; i++){
if (i == 0) printf("Enter words: \n\n", i);
for(int j = 0; (symbol_of_new_word = getchar()) != ' '; j++){
if (symbol_of_new_word == 10) symbol_of_new_word = getchar();
dict[i].element[j] = symbol_of_new_word;
}
}
system("cls");
print_dict(dict);
bool line_yes = false;
for (int i = 0; i < how_much_words*2; i++){
if (find_line(dict, 0, line_yes)) {
line_yes = true;
break;
}
else {
system("cls");
print_dict(dict);
}
}
if (!line_yes) printf("\nNo suitable lines");
printf("\n");
system("pause");
}
интересует как будет передаваться вектор из main() в find_line(std::vector<one_word> dict, int i, bool line_yes) и как он будет передаваться в рекурсии. По ссылке или по значению.
P.S. Гуглил статьи о том как юзать вектор, но такого там не нашёл.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|