Вопрос № 106493: Здраствуйте!! Кто может скинуть сылку или расказать о самых быстрых методах сортировки слов?
char slovo[100][100]={"Max","Artem","Andrey",...}
Наприме ротсортировать такой массив по алфавиту и на оборот по о...Вопрос № 106513: Ещё вопрос по C++ Builder. Из базы данных MS Access (*.mdb) надо из поля OLE вытащить картинку в формате bmp и поместить эту картинку на Form1 как Image1. Саму картинку из базы я получаю запросом:
ADOQueryProtocol->SQL->Add("SELECT [Ф...Вопрос № 106543: Здравствуйте . Помогите создать морской бой. Сделала сетку. Хочу заполнить нолями, выстрел - 1. Для каждого действия своя функция - стрельба, корабли. Для компа и пользователя отдельно. Движение с пом. стрелок. Что дальше не знаю, бьюсь - бьюсь а сде...Вопрос № 106557: Доброго времени дня! Помогите решить проблему с визуальным стилем XP в С++ (Visual
Studio 2005). Легко работает добавление определений в manifest файл об использовании ComCtl32.dll (type="win32" name="Microsoft.Windows.Common-Controls&...Вопрос № 106563: Здравсвуйте, только начинаю программить. Не могу найти ошибку в коде, подскажите, пожалуйста.
float xr[3][1]={{1},{1},{3}};
int N=1;
int n=3;
float a[]={0,0,0};
float b[]={6,6,6};
int sum_nar;
int nar[3];
for (int i=0;...Вопрос № 106612: Здраствуйте!! подскажите Есть ли в си функции для орепделение, вроде скэн коды клавиатуры??Ну тоесть понятно не символьное значение!
Спасибо!...
Вопрос № 106.493
Здраствуйте!! Кто может скинуть сылку или расказать о самых быстрых методах сортировки слов?
char slovo[100][100]={"Max","Artem","Andrey",...}
Наприме ротсортировать такой массив по алфавиту и на оборот по обратному алфавиту!
впринципе я мог бы и составить сам, но хотелось более быстрые способы и самые правильные!
Спасибо!
Отправлен: 23.10.2007, 15:59
Вопрос задал: CruelHity (статус: 2-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: mega
Здравствуйте, CruelHity!
используйте функцию qsort из stdlib
очень удобная весчь, работает как раз для такого класса задач: отсортировать массив чего-либо.
статический метод compare - это ваша пользовательская функция, в которой вы должны просто вернуть 0, если левый и правый элементыв равны, 1 - если левый больше правого и -1 - если левый меньше правого.
для сравнения строк можно использовать функцию из набора strcmp, _tcscmp.
более подробную информацию можно найти в MSDN
Ответ отправил: mega (статус: 3-ий класс)
Ответ отправлен: 23.10.2007, 16:10 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: Rockie
Здравствуйте, CruelHity!
Для каждого случая может подойти своя сортировка. Быстрое время обычно показывают такие сортировки, как быстрая(QSort), пирамидальная сортировка(сортировка в куче), поразрядная.. Сравнительные таблицы есть в интернете. Например здесь:
http://www.codenet.ru/progr/alg/sort_search/cm2.php
На этом же сайте вы найдете наиболее распространенные виды организаций словарей.
Обычно к ним относятся такие структуры данных, как хеш-таблицы и деревья, так как в них можно очень быстро искать/добавлять элементы(слова). Это происходит потому, что значения располагаются в уже упорядоченном виде, и до них можно быстро "добраться".
Про бинарные деревья можно посмотреть например здесь:
http://www.bionet.nsc.ru/chair/cib/lectures/2003_1_IT/it06/img1.html
http://trubetskoy1.narod.ru/alg/bintree.html
Про хеш-таблицы - хорошо написано здесь:
http://algolist.ru/ds/s_has.php
p.s.:Вообще для каждого определенного случая существует свой алгоритм. Например если вам нужно считать и отсортировать(смотря по вашему коду) множество имен, то я бы вообще создал множество (std::set) и считал бы в него все слова. При выводе они будут уже упорядочены.
Для ознакомления с видами сортировок и простейших операция можете посмотреть такие сайты, как:
http://algolist.ru/sort/index.php
http://ru.wikipedia.org/wiki/Алгоритм_сортировки
и в поиске
Ответ отправил: Rockie (статус: 5-ый класс)
Ответ отправлен: 23.10.2007, 16:59 Оценка за ответ: 5 Комментарий оценки: Отличный ответ!!! как раз то что я и просил! Спасибо!
Отвечает: Попов А.С.
Здравствуйте, CruelHity!
Лучше, удобнее и быстрее получится при использовании STL и algorithm
смотрите приложение
Приложение:
Ответ отправил: Попов А.С. (статус: 3-ий класс)
Ответ отправлен: 24.10.2007, 16:45 Оценка за ответ: 5 Комментарий оценки: спасибо
Вопрос № 106.513
Ещё вопрос по C++ Builder. Из базы данных MS Access (*.mdb) надо из поля OLE вытащить картинку в формате bmp и поместить эту картинку на Form1 как Image1. Саму картинку из базы я получаю запросом:
ADOQueryProtocol->SQL->Add("SELECT [Фото] FROM [Артисты] WHERE [Артист] = '" + AnsiString(Artisrt1) + "';");
А что делать дальше? Ссылки приветствуются.
Отвечает: Чернов С.В.
Здравствуйте, Куликов Дмитрий Юрьевич!
Точно сказать в деталях не могу, так как надо программку писать, чтобы точно сказать....
Попробуйте запрос писать через Form1->ADODataSet1->CommandText
Например, пусть ваше поле с изображением называется Foto, тогда используйте Form1->DBImage1->Field и присваивайте ему Form1->ADODataSet1Foto->Value;
Ответ отправил: Чернов С.В. (статус: 1-ый класс)
Ответ отправлен: 24.10.2007, 11:46 Оценка за ответ: 5
Вопрос № 106.543
Здравствуйте . Помогите создать морской бой. Сделала сетку. Хочу заполнить нолями, выстрел - 1. Для каждого действия своя функция - стрельба, корабли. Для компа и пользователя отдельно. Движение с пом. стрелок. Что дальше не знаю, бьюсь - бьюсь а сделать ничего не могу. Спасибо. Helen1402@ya.ru
Доброго времени дня! Помогите решить проблему с визуальным стилем XP в С++ (Visual Studio 2005). Легко работает добавление определений в manifest файл об использовании ComCtl32.dll (type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*"). Всё это доступно описано в MSDN, однако в моих проектах с использованием MFC всё прекрасно работает, но простые построенные
только на API не работают, то есть любое создание компонента в окне не работает, а фукция GetLastError() даёт ошибку: "Класс неизвестен", так же не работают простые диалоговые окна. Выглядет это так: само окно приложения есть, но на нём нет абсолютно ничего. В параметры линкера добавлял ComCtl32.lib и включал заголовочный файл ".h" ничего не помогло. Листал MSDN до упора, ничего больше не нашёл. Понимаю как работает всё это в принципе, но не пойму поч
ему я упёрся в эту проблему!!! Помогите, объясните, если знаете как по другому поменять визуальный стиль у проектов, или ткните где это написано подробнее. Google послал на довольно убогие переводы MSDN или на использование графических вставок в окно, вместо использования библиотеки. Заранее спасибо.
Отправлен: 24.10.2007, 02:57
Вопрос задал: Jan (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Vas177
Здравствуйте, Jan!
В трудных ситуациях я прикручивал манифест для XP следующим образом:
- либо кинуть файл манифеста в папку с exe-файлом, и назвать его MyApp.exe.manifest (где MyApp.exe - имя файла вашего приложения)
- либо добавить файл манифеста в ресурс, где тип ресурса "24", а название "1".
Что-нибудь да помогало.
Ответ отправил: Vas177 (статус: 1-ый класс)
Ответ отправлен: 24.10.2007, 09:52 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ, но дело совсем не в том как его прикручивать, эти варианты я знаю.
Отвечает: Mihail Yarlykov
Здравствуйте, Jan!
Последовательность действий к стилю XP:
1. Создаём файл mainfest.xml и пишем в него текст из приложения
2. Создаем файл resfile.rc и пишем в него одну строку:
"1 24 Путь к файлуmanifest.xml" (без кавычек)
3. Помещаем файлы в папку с компилятором
4. Запускаем компилятор из командной строки с одним параметром - именем файла resfile.rc (т.е. "Путь к компиляторуего имя(без exe) resfile.rc")
5. Полученый файл в результате файл resfile.res присоеденяем к своему проекту, как любой другой *.res файл
Всё компилируется в один exe.
Приложение:
--------- Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 3-ий класс)
Ответ отправлен: 24.10.2007, 10:13 Оценка за ответ: 4 Комментарий оценки: Спасибо, это доступно описано в MSDN. Повторю вопрос: Создание компонентов даёт ошибку: "Класс неизвестен", не зависимо от того каким образом прикручивать манифест.
Вопрос № 106.563
Здравсвуйте, только начинаю программить. Не могу найти ошибку в коде, подскажите, пожалуйста.
float xr[3][1]={{1},{1},{3}};
int N=1;
int n=3;
float a[]={0,0,0};
float b[]={6,6,6};
int sum_nar;
int nar[3];
for (int i=0; i<(N-1); i++) {
sum_nar=0;
for (int r=0; r<(n-1); r++) {
if (xr[r][i]>=a[r] && xr[r][i]<=b[r]) {nar[r]=1;} else {nar[r]=0;}
sum_nar=sum_nar+nar[r];
}
}
Label2->Caption=xr[0][0];
Label3->Caption=xr[1][0];
Label4->Caption=xr[2][0];
Label5->Caption=nar[0];
Label6->Caption=nar[1];
Label7->Caption=nar[2];
Label1->Caption=sum_nar;
выдает просто ахтунг: xr[0][0]=1, xr[1][0]=1, xr[2][0]=3 - т.е. это он правильно считал, а дальше nar[0]=5898313, nar[1]=1, nar[2]=1 - откуда он взял такие цифры? Подскажите почему не заполняется массив nar[]
Заранее спасибо!
Отправлен: 24.10.2007, 04:23
Вопрос задала: Mart (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Mihail Yarlykov
Здравствуйте, Mart!
У вас ошибка в том что не разу не выполняются действия цикла:
for (int i=0; i<(N-1); i++)
выполнение его идёт пока i меньше (N-1), т.к. (N-1) = 0 то i изначально не меньше (N-1) и программа не заходит в цикл. И массив nar остаётся не заполниным, т.е. с "мусором" внутри( "nar[0]=5898313" ). Вложенный цикл выполнится только 2 раза, а не 3 как задумано!
Нужно записать так:
for( int i=0; i <= (N-1); i++ ) и for( int r=0; r <= (n-1); r++ )
либо
for( int i=0; i < N; i++ ) и for( int r=0; r < n; r++ )
--------- Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 3-ий класс)
Ответ отправлен: 24.10.2007, 07:45 Оценка за ответ: 5
Отвечает: Воробьёв Алексей Викторович
Здравствуйте, Mart!
У Вас пределы цикла стоят неправильные.
Надо писать
for (int i=0; i<N; i++)
и соответственно
for (int r=0; r<n; r++)
В вашей же программе цикл ни разу не исполнялся, потому и величины в nar[] остались неинициализированы.
Ответ отправил: Воробьёв Алексей Викторович (статус: 7-ой класс)
Ответ отправлен: 24.10.2007, 09:35 Оценка за ответ: 5
Отвечает: Aristos
Здравствуйте, Mart!
Ошибки в условиях циклов. Так N == 1 и поэтому цикл
for (int i=0; i<(N-1); i++)
{
//...
}
не выполнится ни разу, поскольку i=0 и условие i <(N-1) т.е. i < 0 становится неверным.
Вам надо в усливиях записать i < N или i <= (N-1). (соответственно r < n или r <= (n-1))
Таким образом в массив nar[] попадает "мусор", содержащийся в памяти до её выделения.
Успехов.
--------- нет ничего невозможного
Ответ отправил: Aristos (статус: 8-ой класс)
Ответ отправлен: 24.10.2007, 10:55 Оценка за ответ: 5
Отвечает: Попов А.С.
Здравствуйте, Mart!
При описании массива nar он не был инициализирован (не присвоены начальные значения). Компилятор просто выделил область памяти под массив не инициализиров ее (эта область использовалась какой-то другой программой которая и оставила эти данные)
Ответ отправил: Попов А.С. (статус: 3-ий класс)
Ответ отправлен: 24.10.2007, 16:29
Вопрос № 106.612
Здраствуйте!! подскажите Есть ли в си функции для орепделение, вроде скэн коды клавиатуры??Ну тоесть понятно не символьное значение!
Спасибо!
Отправлен: 24.10.2007, 13:17
Вопрос задал: CruelHity (статус: 2-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 14)
Отвечает: Виктор Пырлик
Здравствуйте, CruelHity!
Вот небольшая программка..
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Практикант)
Ответ отправлен: 24.10.2007, 18:40 Оценка за ответ: 5 Комментарий оценки: Спасибо за пояснительную работу!!!!))))))
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, CruelHity!
Есть две функции
1) getch()
пишите ine key = getch() и в переменной key у Вас будет код нажатой клавиши по таблици(таблицы вроде разные в разных средах)
2) getche()
Она выводит на экран символ, соответствующий нажатой клавиши
Примеры работ функций смотрите в приложении(взято из help)...
Приложение:
--------- Да здравтствует С++!!!...;)
Ответ отправил: Гальцов Андрей Михаилович (статус: Студент)
Ответ отправлен: 24.10.2007, 19:31 Оценка за ответ: 4 Комментарий оценки: Хоть и не то что надо но все равно спасибо!!!!