Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: jindirgald
Дата сообщения: 04.01.2010 20:15
Как я могу сортировать дву(x)мерную таблицy?

Например, таблицy:

1 34
Автор: karakurt2
Дата сообщения: 04.01.2010 22:41
jindirgald
сортировка не подразумивает удаления элементов последовательности
лично мне не понятно, что Вы хотите сделать
Автор: jindirgald
Дата сообщения: 05.01.2010 00:12
karakurt2
-Необходимо отсортировать строчки на основе цифры второго столбца по нисходящей и исключить строчки, где вторая цифра есть ноль.

-Там, где цифры второго столбца равны, цифры первого столца этой же строчки надо сортировать по восходящей
Автор: Smokeer
Дата сообщения: 05.01.2010 10:02
ну и в чем проблема? делайте простую сортировку по второму столбцу, просто переставляйте оба элемента... ноль окажется в конце масива можете использщовать отдельную переменную для сохранения позиции нуля. Выводите все элементы с позицией меньше чем переменная.
По первому столбцу проще всего отсортировать отдельной процедурой.
Автор: karakurt2
Дата сообщения: 05.01.2010 10:47
jindirgald
тогда как-то так:

Код:
[no]
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <limits>

#ifndef _countof
#define _countof(arr) (sizeof(arr) / sizeof(*arr))
#endif

struct item
{
int x;
int y;
};

bool gt(const item& f, const item& g)
{
return (f.y > g.y || f.y == g.y && f.x < g.x);
}

std::ostream& operator << (std::ostream& out, const item& g)
{
return out << g.x << ' ' << g.y;
}

int main()
{
item init[] =
{
{1, 34},
{2, 11},
{17, 2},
{18, 1},
{19, 5},
{20, 6},
{9001, 0},
{1111, 0},
{701, 0},
{111, 11}
};

item z =
{
std::numeric_limits<int>::max(), 1
};

std::vector<item> arr(init, init + _countof(init));
std::sort(arr.begin(), arr.end(), gt);
arr.erase(std::upper_bound(arr.begin(), arr.end(), z, gt), arr.end());
std::copy(arr.begin(), arr.end(),
std::ostream_iterator<item>(std::cout, "\n"));

return 0;
}
[/no]
Автор: jindirgald
Дата сообщения: 05.01.2010 15:45
karakurt2
-как быть с таблицей определенной пользователем

Код:
[no]
(table[i][j])
[/no]
Автор: karakurt2
Дата сообщения: 05.01.2010 18:00
jindirgald
я предлагаю сделать программу-фильтр, которая читает произвольное число записей со стандартного устройства ввода и печатает обработанную последовалельность на стандартное устройство вывода. пример использования:

item_processing.exe < input.txt > output.txt

input.txt:

Цитата:

1 34
2 11
17 2
18 1
19 5
20 6
9001 0
1111 0
701 0
111 11


item_processing.cpp:


Код:
[no]
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <limits>

#ifndef _countof
#define _countof(arr) (sizeof(arr) / sizeof(*arr))
#endif

struct item
{
int x;
int y;
};

bool gt(const item& f, const item& g)
{
return (f.y > g.y || f.y == g.y && f.x < g.x);
}

std::ostream& operator << (std::ostream& out, const item& g)
{
return out << g.x << ' ' << g.y;
}

std::istream& operator >> (std::istream& in, item& g)
{
return in >> g.x >> g.y;
}

int main()
{
std::vector<item> arr;
std::copy(std::istream_iterator<item>(std::cin),
std::istream_iterator<item>(), std::back_inserter(arr));

item z =
{
std::numeric_limits<int>::max(), 1
};

std::sort(arr.begin(), arr.end(), gt);
arr.erase(std::upper_bound(arr.begin(), arr.end(), z, gt), arr.end());
std::copy(arr.begin(), arr.end(),
std::ostream_iterator<item>(std::cout, "\n"));

return 0;
}
[/no]
Автор: ddk1972
Дата сообщения: 05.01.2010 19:03
Добрый день!

Всех с наступившим НГ!

Уважаемые программисты!
Выручите плиз сообщество КПК-водов!
Есть программа для звонков Inesoft Phone
я делаю для нее комплект скинов
но проблема в том, что некоторые шрифты (цвета прописаны прямо в кодах файлов ехе.
и это черный там где не надо или их любимый грязно сине-зеленый.
Без замены этих шрифтов не сделать красивый скин!

Ассемблера я не знаю, я даже разобрал файлы с помощью IDA5
вижу эти блоки со шрифтами, но как поменять не понимаю, прога на английском и сложна для новичка.

Посему:
1) может ли кто за небольшую оплату разобрать ехе и поменять шрифты
2) Или ткнуть носом на самоучитель по этому IDA на русском
3) Извините если не в ту тему написал
P.S Разработчиков проги об этом просят уже два года, но они продролжают клепать свои страшные дизайны!
p.s.2 файлы естейственно предоставлю!
профессионалу там делов на 15 минут!

если кто возьмется, то ddk1972@mail.ru
или ответьте мне прямо в том форуме

Заранее благодарен!
Автор: Smokeer
Дата сообщения: 06.01.2010 00:50
там не нужен не асемблер (и тем более не Сишка), а элементарный редактор ресурсов
Автор: ddk1972
Дата сообщения: 06.01.2010 03:32

Цитата:
элементарный редактор ресурсов

Restorator- ом я отредактировал все картинки.

а вот как редактировать такие строки показанные IDA из *.exe:

rdata:00040160 aEdit_bgr unicode 0, <edit_bgr>,0 ; DATA XREF: .text:off_1964C%18o
и там целая страница таких цветов!

подскажите плиз, куда мне обратиться! -)

Автор: Smokeer
Дата сообщения: 06.01.2010 11:17
ресурсы - не только картинки.. там сразу должны быть и все формы со шрифтами.


Цитата:
rdata:00040160 aEdit_bgr unicode 0, <edit_bgr>,0 ; DATA XREF: .text:off_1964C%18o

темно-синий? ближе к чёрному?
Автор: ddk1972
Дата сообщения: 06.01.2010 15:16

Цитата:
ресурсы - не только картинки..

Вот собрал все файлы и залил на ifolder
1) Дайлер поддерживает управление из skin.ini и с ним проблем нет.
2) А вот в History.exe и AdressBook.exe нужно черный шрифт в списках поменять на белый или 210,210,210
3) InesoftPhone.dll нужно поменять шрифты в верхих окнах с черного и темно синего тоже на белый
4) В favorite.dll нужно поменять фон с грязно темно синего на просто черный

подробнее проблемные шрифты можно посмотреть на скринах в этом моем посте

Автор: Ntony
Дата сообщения: 07.01.2010 03:00
не поможете ли по турбо си, надо написать курсовую работу вроде бы простая только не совсем знаю как все осуществить...

пользователь выбирает директорию и вводит ключевое слово. программа выводит имена текстовых файлов с этим ключевым словом.

проблема в том как написать процедуру по сканированию директории и перебору имен текстовых фалов((((что то никак не пойму.
Автор: snike555
Дата сообщения: 07.01.2010 08:41
Ntony
Читаем
http://www.cyberforum.ru/cpp-beginners/thread54287.html
а там смотрим
http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa364428(VS.85).aspx

Добавлено:
кстати глянь ещё вот этот топик http://forum.ru-board.com/topic.cgi?forum=33&topic=10892#1
Автор: Prober
Дата сообщения: 07.01.2010 09:07
snike555
Если речь именно о Турбо Си, то это чистый DOS, и Win API здесь не поможет.
Ntony
Насколько я помню, в Турбо Си 2.0 уже была полноценная интегрированная среда. Набираете findfirst, жмете, если не ошибаюсь, Ctrl-F1 и внимательно читаете справку.
Автор: deman_ru
Дата сообщения: 07.01.2010 16:00
Ребят подскажите пожалуйста решение следующей проблемы:
Вообщем, мне нужно сделать экспертную систему для диагностики пациентов, пациент выбирает симптомы и программа выдает ему диагноз. Верные данные о диагнозе и его симптомах будут хранится в БД. Подход к построению правил для экспертной системы, я выбрал такой: полный перебор всех возможных комбинаций диагнозов и симптомов, в дальнейшем с выбором наиболее подходящего диагноза по симптомам введенным пользователем. А вопрос в том, как мне лучше сделать выборку данных из БД и генерацию всех вариантов в текстовый файл. Вообще я думал выбрать данные из БД, поместить их в массивы и генерировать всевозможные комбинации, но дело в том что массив то он не безразмерный и когда то при большом количестве записей он кончится. Так вот пожалуйста подскажите как мне реализовать эту генерацию комбинаций, максимально эффективно и с хорошей производительностью?
Автор: snike555
Дата сообщения: 08.01.2010 01:56
deman_ru

Мы строили экспертные системы 2 способами:
1) перечисление всех критериев + перечисление всех объектов с указанием критериев для данного объекта

2) построение дерева из критериев, а на листьях объекты

никакой из вариантов не предполагает одновременный выгрузки данных из бд, просто ты будешь спрашивать у пользователя критерий и в зависимости от его ответа обращаться к базе за новым вопросом пока не определится диагноз.
Автор: deman_ru
Дата сообщения: 08.01.2010 12:40
snike555спасибо за ответ, кое что ясно но мутновато. Не могли бы вы дать ссылки на материал по построению экспертных систем, описанными вами способами?
Автор: Ntony
Дата сообщения: 08.01.2010 13:46
вот пока что только написал, а дальше что то ступор(((((((

#include <conio.h>
#include <dir.h>
#include <stdio.h>

enum Fattr_vo{FDIR=8};

unsigned qondisk(char *const path, const char f0, const char f1) {
unsigned n=0;
ffblk attr;
unsigned char b, c;

if(findfirst(path, &attr, 63)) return 0;

do {
b=0; c=1;
while(b<6) {
if(((f0>>b)%2 && (attr.ff_attrib>>b)%2!=(f1>>b)%2)) {c=0; break;}
b++; if(b==3) b++;
}
if(attr.ff_name[0]=='.') c=0;
if(c) {cprintf("%s ", attr.ff_name); n++;}
}
while(!findnext(&attr));

return n;
}


void main()
{
clrscr();
unsigned n = qondisk("d:/*.txt", FDIR, FDIR);

cprintf("naideno: %u", n);
getch();
}
Автор: Prober
Дата сообщения: 08.01.2010 14:19
Ntony

Цитата:
вот пока что только написал

Сдается мне, это еще в 2004 году было написано вот здесь и не тобой. За основу взять можно, а дальше пытайся компилировать, когда все ошибки компиляции вычистишь - начинай отлаживать.

P. S. Кстати, в строке "d:/*.txt" слэш не в ту сторону, должно быть "d:\\*.txt".
Автор: snike555
Дата сообщения: 08.01.2010 17:42
deman_ru
Боюсь очень много писать придется.

В интернете ведь полно по экспертным системам
http://256bit.ru/Expert/
http://www.mari.ru/mmlab/home/AI/7_8/index.html
итд
Автор: deman_ru
Дата сообщения: 11.01.2010 16:33
Уважаемый snike555 снова обращаюсь к вам чтобы вы помогли мне думать в правильном направлении.
На сколько правильно я вас понял, то первый вариант который вы предложили для построения экспертной системы "перечисление всех критериев + перечисление всех объектов с указанием критериев для данного объекта" это представление знаний в виде семантической сети, база знаний будет выглядеть в виде:

((1 "общее недомогание")
(2 "сухость, першение, саднение")
(3 "кашель сначала сухой, затем с мокротой")
(4 "голос хриплый или беззвучный")
(5 "иногда боль при глотании")
(6 "головная боль")
(7 "повышение температуры тела")
(8 "быстрая утомляемость голоса")
(9 "периодический кашель с мокротой")
(10 "охриплость с афонией")
(11 "ощущение неловкости")
(12 "жжение в горле")
(13 "кашель при обострении")
(14 "сухой кашель")
(15 "слизистая покрыта густой слизью ")
(16 "откашливание с прожилками крови"))
(("ларингит острый" (1 2 3 4 5 6 7))
("ларингит хронический катаральный" (1 2 4 8 9))
("ларингит хронический гипертрофический" (1 10 11 12 13))
("ларингит хронический атрофический" (1 2 4 14 15 16)))

Почитав, поразмыслив, я пришел к выводу что мне предстоит сделать, для того чтобы реализовать экспертную систему и оболочку к ней.
1. Нужно вытащить верные данные о диагнозе и его симптомах из БД и записать их в виде описанном выше в файл, то есть сформировать базу знаний.
2. Сделать механизм вывода, то есть поиска, с помощью специального алгоритма, правила относительно данных которые ввел пользователь.

В принципе все так должно быть или нет? Заранее огромное спасибо!

Автор: derelict
Дата сообщения: 13.01.2010 15:22
deman_ru
Направление правильное. Только зачем в п. 1 дублировать информацию из базы в файле?
В самом простейшем случае формирование базы знаний экспертной системы может выглядеть так:
- вносятся симптомы (посылки)
- вносятся диагнозы (события)
- формируются правила логического вывода (в простейшем случае - отмечается совокупность посылок, которые должны проявиться, чтобы наступило заданное событие)
После этого пользователю необходимо отметить, какие из перечисленных посылок проявились, и на основании этой информации ищется правило и соответствующее ему событие.
Автор: snike555
Дата сообщения: 13.01.2010 17:14
deman_ru
Базу знаний представил правильно, как я и описал.
Как заметил derelict нет необходимости формировать файл в ещё каком-то виде, получишь те же яйца только боком.
Спрашиваешь ответы на критерии у пользователя, запоминаешь те на которые он дал положительный ответ и ищешь по ним объект.
Автор: deman_ru
Дата сообщения: 13.01.2010 18:14
derelict
snike555 спасибо Вам ребят большое!
Зачем я хотел формировать БД в первый рас, я хотел реализовать клиент-серверную технологию доступа к БД, чтобы база лежала где то на сервере, а пользователь при помощи приложения клиент подключался к ней и добавлял правила, просто это хороший вариант для обмена симптомами и диагнозами между врачами так сказать (обмен опытом), и быстрое наполнение базы данных. И вот почему нужно выгрузить данные из базы данных, сформировать правила и записать их а базу знаний, иначе механизм вывода нужно реализовывать при помощи sql.
Или может правда так сделать? если это конечно правильно.
И еще хотел бы у вас попросить совета, какой механизм вывода использовать, для представления базы знаний в виде семантической сети, ну как выше? И может подскажите где можно ознакомится подробней с этим алгоритмом, примеры там и тому подобное. Просто в книжка описано, но описано все поверхностно, хотелось бы больше конкретики.
Автор: christmas_pasha
Дата сообщения: 13.01.2010 18:18
народ помогите!!!надо составить программу в паскале,которая подсчитывает количество нулей в массиве,состоящем из целых чисел.
Автор: Irjinn
Дата сообщения: 13.01.2010 19:24
Ребят, подскажите пожалуйста, только начал программировать, в Visual Studio 2008, вопрос вот в чем

1)Подскажите пожалуйста, как в дочерней форме(не в главной) сделать следующее:
при нажатии на крестик [х] отменить уничтожение формы, а всего лишь изменить свойство Visible?

2)И еще, помогите пожалуйста,
на форме рисую график функции, с помощью метода
DrawGraph(), который использует следующий инструмент:

Graphics im=this->CreateGraphics();
im->DrawLine(pen2,X-1,Yprev,X,Y)

собственно вопрос - как сохранить нарисованный график при ресайзе формы?
пробовал обрабатывать событие
Form1_Resize(System::Object^ sender, System::EventArgs^ e)
{
this->DrawGraph();
}

однако, график после ресайза появится на долю секунды и вновь исчезает
тот же самый результат, а вернее, его отсутсвие, при обработке события ResizeEnd.

Подскажите пожалуйста, что делать.
Автор: hda0
Дата сообщения: 13.01.2010 20:44
приветствую всех.
у меня вопрос.
я сам в С не спец.
вот встала проблема. есть прога, старая, разраб давно забил болт, не разрабатывается уже. надо запустить на последней федоре 8-12.
на старом гцц - 3я федора:
gcc --version
gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
компилиться без проблем.

на более новом - 8я федора:
gcc --version
gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)
не идёт сборка. куча ворнингов, ошибок и в итоге облом.

поставил пакет compat-gcc-34-3.4.6-8:
gcc34 --version
gcc34 (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)
собрался, но вышел один единственный ворнинг:
gcc34 -fno-builtin-log -Wall -g -DBINARY_FILTERS -DASCEND_SECRET -c sql_module.c
sql_module.c: In function `sql_error':
sql_module.c:264: warning: return discards qualifiers from pointer target type

код функции из sql_module.c:
/*************************************************************************
* Function: sql_error
* Purpose: database specific error. Returns error associated with
* connection
*************************************************************************/
char *sql_error(SQLSOCK *socket) {
return mysql_error(socket->sock);
}

что тут не так? как заточить функцию под гцц34-компат?
Автор: ValidolX
Дата сообщения: 13.01.2010 23:58
hda0
Покажите как описана mysql_error()

а вообщето ето ворнинг а не еррор, в чем проблема?
Автор: derelict
Дата сообщения: 14.01.2010 07:28
Irjinn
Насчет п. 2 - надо обрабатывать событие Paint.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.