![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
![]()
Опять слёзно прошу о помощи=\
смысл куска задачи таков: алтернативы-строчки, критерии-столбцы. Критерии представлены в форме интервала, соответственно приделяем к критерию 2 столбца. для нормализации нужно суммировать все значения в двух столбцах данного критерия возведённые в квадрат. на полученный результат поделить по очереди каждое значение данного критерия. и так от столбца к столбцу. в общем, не знаю что творится с суммой ![]() Помогите, Люди Добрые, кто чем может ![]() #include<iostream> #include<math.h> using namespace std; //---------------------------------------------------- void wprowadzanie( float **_a, int _m, int _n ) { int c=1; for(int i=0; i<_m; i++) { for(int j=0; j<_n; j++) { cout<<"Dla kryterium "<<c<<" : "<<endl; if(j%2==0) { cout<<"Wprowadz poczatek przedzialu"<<endl; cin>>_a[i][j]; } else { cout<<"Wprowadz koniec przedzialu"<<endl; cin>>_a[i][j]; c++; } } } } //------------------------------------------------------ void wypisywanie( float **_a, int _m, int _n ) { cout<<"tablica"<<endl; for(int i=0; i<_m; i++) { for(int j=0; j<_n; j++) { cout<<_a[i][j]<<" "; } cout<<endl; } } //-------------------------------------------------------- void normalizacja( float **_a, int _m, int _n ) { int s=_n/2; float suma[s]; for(int l=0; l<s; l++) { suma[l]=0; } for(int i=0; i<_m; i++) { for(int l=0; l<s; l++) { for(int j=0; j<_n; j++) { if(j%2==0) { suma[l]=suma[l]+(_a[i][j]*_a[i][j])+(_a[i][j+1]*_a[i][j+1]); } } } } for(int l=0; l<s; l++) { for(int j=0; j<_n; j++) { if(j%2==0) { for(int i=0; i<_m; i++) { _a[i][j]=_a[i][j]/suma[l]; _a[i][j+1]=_a[i][j+1]/suma[l]; } } } } } //------------------------------------------------------ int main() { float **a; int m, n; cout<<"Wprowadz ilosc alternatyw"<<endl; cin>>m; cout<<"Wprowadz ilosc kryteriow"<<endl; cin>>n; n=n*2; a= new float *[m]; a[n]= new float[n]; wprowadzanie(a, m, n); wypisywanie(a, m, n); normalizacja(a, m, n); wypisywanie(a, m, n); system("PAUSE"); } |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
1. POWAŻNY BŁĄD przy przydzielaniu pamięci pod tablicę dwuwymiarową! Czytać do pełnej jasności umysłu K&R lub Grębosza!!
![]() 2. Żeby "Ludzie dobrzy" lepiej zrozumiali warunki zadania... ![]() 1 2 3 4 Jak musi wyglądać tablica znormalizowana? Proszę Pani - ołówkiem na papierze, krok za krokiem, i po tym tu napisać. 3. Pętla = цикл (ros.) |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Annabel, я конечно не приветствую таки посты как у Vago, но разбираться в вашем коде, с таким сумбурным описанием никто не будет.
Мой совет. Локализируйте ошибку и выложите проблеммный участок кода. Если я выложу 2000 сток своей программы и попрошу мне помочь, я буду выглядеть просто смешно. А для "напишите за меня", есть рубрика ФРИЛАНС.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
![]()
właśnie nie umiem się operować tablicami wielowymiarowymi
![]() Напишу всё-таки по-русски под нормализацией я имела ввиду нечто такое: допустим у нас есть 2 критерия и 2 альтернативы. положим: 1 критерий для 1 альтернативы (1; 2) 2 критерий для 1 альтернативы (3; 4) 1 критерий для 2 альтернативы (3; 4) 2 критерий для 2 альтернативы (5; 6) т.е. если представить в форме таблицы: 1 2 3 4 3 4 5 6 s1=1^2+2^2+3^2+4^2=30 s2=3^2+4^2+5^2+6^2=86 1/30 2/30 3/86 4/86 3/30 4/30 5/86 6/86 вот как-то так, надеюсь, немного прояснила ситуацию |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
![]()
я не прошу за меня ничего писать
![]() void normalizacja( float **_a, int _m, int _n ) { int s=_n/2; float suma[s]; for(int l=0; l<s; l++) { suma[l]=0; } for(int i=0; i<_m; i++) { for(int l=0; l<s; l++) { for(int j=0; j<_n; j++) { if(j%2==0) { suma[l]=suma[l]+(_a[i][j]*_a[i][j])+(_a[i][j+1]*_a[i][j+1]); } } } } for(int l=0; l<s; l++) { for(int j=0; j<_n; j++) { if(j%2==0) { for(int i=0; i<_m; i++) { _a[i][j]=_a[i][j]/suma[l]; _a[i][j+1]=_a[i][j+1]/suma[l]; } } } } } |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Что это за конструкция?
for(int i=0; i<_m; i++) В C++ надо писать так: for(int i=0; i<=m; i++) Ошибки не выдаёт? Если не выдаёт, смените компилятор.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 02.02.2011
Сообщений: 92
|
![]() |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Annabel, если Вы, действительно, хотите разобраться - возьмите Вордовский редактор формул (или TEX, или то, к чему привыкли, и напишите общие формулы для suma[l] (со знаками суммы, правильно расставив индексы
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с рамами/Проблема с ЖД | DRAGGER | Компьютерное железо | 6 | 04.01.2009 23:37 |