реализация фильтрации данных на С++
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
реализация фильтрации данных на С++ - 2009-05-31 12:18:03.160000
|
|
|
Славутиччч
Сообщений: 52
Оценки: 0
Присоединился: 2009-02-18 16:14:42.276666
|
здраствуйте! сразу скажу, что в программировании я мало что понимаю, а как реализовать мою задачу, так вообще не особо…=\ задача достаточно интересная на мой взгляд, может кто возьмется помочь) могу даже как нить потом отблагодорить (например денег на телефон кинуть) суть задачи: есть главная программа (мы её не касаемся и рассматриваем в качестве "черного ящика") необходимо создать библиотеку, которую можно подключить к этой программе, не затрагивая её! но для начала можно и не библиотеку, а обычный ЕХЕ… суть библиотеки: библиотека ПОСТОЯННО принимает данные из главной программы - координаты двух линий - в формате 11;22;33;44 - 55;66;77;88, где 11;22;33;44 - координаты начала и конца первой линии и 55;66;77;88 - соответственно второй. Получается, что нужно разбить эти значения на структуру. Затем идет фильтрация: это сложнее всего описать, надо в живую объяснять=) но попробую…. программа принимает первые 50 значений и рассчитывает их мат ожидание (т.е. среднее отклонение), а затем следующие значения, которые будут приниматься, сравниваются с этим мат ожиданием и если они не отклоняются от него более чем на 15%, то значение встает в этот список и мат ожидание пересчитывается, если же более 15% то число идет в другой список и при поступлении более 10 таких чисел подряд они все таки записываются в список и расчет ведется с ними)если менее 10, то они вообще выкидываются… ну и эти данные также ПОСТОЯННО передаются обратно в главную программму….но с ЕХЕ разумеется этого не будет)и принимать можно по другому, либо путем ввода либо из файла….
|
|
|
RE: реализация фильтрации данных на С++ - 2009-05-31 12:30:12.893333
|
|
|
Korshun
Сообщений: 19
Оценки: 0
Присоединился: 2007-04-27 10:10:19.010000
|
каким образом программа передает эти значения? через консоль или сообщения или что???
|
|
|
RE: реализация фильтрации данных на С++ - 2009-05-31 12:33:58.646666
|
|
|
Славутиччч
Сообщений: 52
Оценки: 0
Присоединился: 2009-02-18 16:14:42.276666
|
ну для начала передачу не затрагиваем…..эти значения например из файла будут браться!или путем ввода, но вводить каждый раз больно долго!
|
|
|
RE: реализация фильтрации данных на С++ - 2009-05-31 12:36:44.170000
|
|
|
Korshun
Сообщений: 19
Оценки: 0
Присоединился: 2007-04-27 10:10:19.010000
|
еще просто объяснишь что такое мат. ожидание и формулу и возьмусь написать
|
|
|
RE: реализация фильтрации данных на С++ - 2009-05-31 12:45:52.800000
|
|
|
Korshun
Сообщений: 19
Оценки: 0
Присоединился: 2007-04-27 10:10:19.010000
|
асю в пм кинь свою
|
|
|
RE: реализация фильтрации данных на С++ - 2009-06-04 17:23:30.050000
|
|
|
Славутиччч
Сообщений: 52
Оценки: 0
Присоединился: 2009-02-18 16:14:42.276666
|
всем здрасти! вот в принципе реализованная функция…но возникла проблема в том, чтобы её сделать со списком…=\ может кто бы смог помочь и реализовать?? заранее благодарю…
#include <math.h>
#include <iostream>
#include <stdio.h>
using namespace std;
struct point_arr{//структура для точек определенной координаты
long int coord;//мат ожидание
long int size;//размер
};
int sravnenie(int a, int b)//нахождение на сколько процентов они различаются
{
if(a>b){
return ((a/b)-1)*100;
} else {
return ((b/a)-1)*100;
}
}
point_arr plus_number(point_arr arr, int a)//добавление числа в структуру
{
arr.size++;
arr.coord=arr.coord+((a-arr.coord)/arr.size);// / arr.size;
return arr;
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
int main(int argc, char *argv[])
{
const int firstsz = 50;
int a[8], i, k, j;
char c[255];
point_arr arr[8], arr_o[8];
bool b, w = false;
FILE *stream, *stream1;
stream = fopen("in.txt", "r" );
stream1 = fopen("out.txt", "w" );
for(i=0; i<8; i++){//очистка
arr[i].coord=0;
arr[i].size=firstsz;
arr_o[i].coord=0;
arr_o[i].size=0;
}
for(i=0; i<firstsz; i++) {//чтение
fscanf(stream, "%d;%d;%d;%d - %d;%d;%d;%d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7]);
for(k=0; k<8; k++){
arr[k].coord+=a[k];
};
}
for(i=0; i<8; i++){
arr[i].coord=arr[i].coord / arr[i].size;
}
fprintf(stream1, "%d;%d;%d;%d - %d;%d;%d;%d\n", arr[0].coord, arr[1].coord, arr[2].coord, arr[3].coord, arr[4].coord, arr[5].coord, arr[6].coord,arr[7].coord);
while(!(feof(stream))){
w = false;
fscanf(stream, "%d;%d;%d;%d - %d;%d;%d;%d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7]);
for(j=0; j<8; j++){
if( sravnenie(arr[j].coord, a[j])>15 ){//узнаем подходит или нет
w = true;
}
}
if(!w){
for(j=0; j<8; j++){//добавляем в существующий
arr[j]=plus_number(arr[j], a[j]);
arr_o[j].coord=0;
arr_o[j].size=0;
}
fprintf(stream1, "%d;%d;%d;%d - %d;%d;%d;%d\n", arr[0].coord, arr[1].coord, arr[2].coord, arr[3].coord, arr[4].coord, arr[5].coord, arr[6].coord, arr[7].coord);
b=false;
} else {
b=true;
for(j=0; j<8; j++){
arr_o[j]=plus_number(arr_o[j], a[j]);
}
if(arr_o[0].size>=10){//использовать нужно этот массив, эл-ов больше 10
for(j=0; j<8; j++){
arr[j].coord=arr_o[j].coord;
arr[j].size=arr_o[j].size;
arr_o[j].coord=0;
arr_o[j].size=0;
}
}
}
}
fclose(stream);
fclose(stream1);
system("PAUSE");
return EXIT_SUCCESS;
}
|
|
|
|
|