с++ знающие...хелп..

avatar TheFoxFix

321

22

TheFoxFix

Пользователь

Регистрация: 17.08.2016

Сообщения: 1082

Рейтинг: 441

TheFoxFix

Регистрация: 17.08.2016

Сообщения: 1082

Рейтинг: 441

есть прога.Нужна помощь.Обьяснить алгоритм ее работы количество блоков циклы и т.д.Прога маленькая.

Очень нужна помощь(

отпишитесь если поможете.Скину в лс

trudai

Пользователь

Регистрация: 28.10.2016

Сообщения: 186

Рейтинг: 85

trudai

Регистрация: 28.10.2016

Сообщения: 186

Рейтинг: 85

В чём проблема, если она маленькая, скинуть её сюда?

Dark_Heart

Пользователь

Регистрация: 28.04.2013

Сообщения: 788

Рейтинг: 330

Dark_Heart

Регистрация: 28.04.2013

Сообщения: 788

Рейтинг: 330

Так скидывай сюда, в чем проблема?)

Top_Dazzle

Пользователь

Регистрация: 08.01.2014

Сообщения: 339

Рейтинг: 1301

Нарушения: 260

Top_Dazzle

Регистрация: 08.01.2014

Сообщения: 339

Рейтинг: 1301

Нарушения: 260

Dark_Heart сказал(а):

Так скидывай сюда, в чем проблема?)

Нажмите, чтобы раскрыть...

Небось там говнокод какой-то...

wanna play like dondo

Пользователь

Регистрация: 26.12.2014

Сообщения: 424

Рейтинг: 541

wanna play like dondo

Регистрация: 26.12.2014

Сообщения: 424

Рейтинг: 541

давай

dohteM [v2.0]

Пользователь

Регистрация: 11.08.2015

Сообщения: 4685

Рейтинг: 1547

dohteM [v2.0]

Регистрация: 11.08.2015

Сообщения: 4685

Рейтинг: 1547

img

давай кидай

kumeh445

Пользователь

Регистрация: 03.12.2016

Сообщения: 58

Рейтинг: 13

kumeh445

Регистрация: 03.12.2016

Сообщения: 58

Рейтинг: 13

Давай

trudai

Пользователь

Регистрация: 28.10.2016

Сообщения: 186

Рейтинг: 85

trudai

Регистрация: 28.10.2016

Сообщения: 186

Рейтинг: 85

Моя версия ответа на данный топик:

Цитата:

#include

// потерялось

  using namespace std;

int main (){

// Запомнили целое число 4 в n

   const int n=4;

   double sum = 0;

// Создали массив 4x4 и заполнили его

double A [ n ][ n ]= {

   { 2, -5,6,1},

   { -16, 48,-55,-5},

   { 0, 24,-25,10},

   {8,21,30,4 }

};

// Создали пустые массивы L и U и не стали заполнять

double L [ n ][ n ];

double U [ n ][ n ];

 

for (int i = 0; i < n; i++){

   for (int j = 0; j < n; j++){

   // Обнуляем значения в массивах L и U

   L [j] = 0;

   U [j] = 0;

   // Если попали на диагональ массива, то L соотвествующую ячейку заполняем единицей

   if (i == j)

     L [j] = 1;

   }

} // Вот тут мы ставим лишние фигурные скобки, потому что мы сатанисты.

// Вообще это кусок для наркоманов, потому как далее мы опять берем нулевую ячейку и перезаписываем её

{

   L [0] = A [0]/ A [0][0];

   U [0] = A [0] / L [0][0];

}

for (int i = 0; i < n; i++){

   for (int j = 0; j < n; j++){

   // Записываем в массив U соответствующее значение из массива A

   U [0][ i] = A[0][ i];

   // В этом месте компилятор шлёт нас нахер, потому что L[] и A[] это указатели, которые мы с каких то радостей начинаем   делить.

   L [ 0] = A[ 0] / U[0][ 0];

// Второй раз объявляем переменную sum. Автор хотел этим подчеркнуть, что рассказать о себе один раз бывает недостаточно.

   double sum = 0;

   for (int k = 0; k < i; k++){

     // Суммируем все находится в столбце J и не превышает строку I.

     // Тут мы снова идем нахер потому что L[] это не число.

     sum += L[ k] * U[k][ j];

   }

// И снова идем нахер

U[ j] = A[ j] - sum;

// Заполняем нулями треугольник выше диагонали

// ? 0 0 0

// ? ? 0 0

// ? ? ? 0

// ? ? ? ?

// Как то так

if (i > j){

   L[j][ i] = 0;

}

else{

   // Делаем математические фокусы при подчёте мистической суммы

   sum = 0;

   for (int k = 0; k < i; k++){

     sum += L[j][ k] * U[k][ i];

   }

// Заполняем массив L по формуле представленной ниже и опять идем нахер потому что U[]

   L[j][ i] = (A[j][ i] - sum) / U[ i];

}

}

}

cout « "\n\n";

// Error: operator &ostream <<(double*) is not defined

// Защем так делать?

// Видимо, автор хотел вывести массив L и заполнить диагональ нулями

for (int i = 0; i < n; i++){

   for (int j = 0; j < n; j++){

   if (i == j)

     L [j] = 1;

   cout « " " « L [j] « " ";

   }

cout « "\n\n";

}

cout « "\n\n";

// А тут мы неправильно выводим массив U

for (int i = 0; i < n; i++){

   for (int j = 0; j < n; j++)

     cout « " " « U [j] « " ";

     cout « "\n\n";

   }

  return 0;

}

 

Нажмите, чтобы раскрыть...

 

Мне лень пытаться это компилировать, но по-моему мнению компилироваться это не должно.

 

Top_Dazzle

Пользователь

Регистрация: 08.01.2014

Сообщения: 339

Рейтинг: 1301

Нарушения: 260

Top_Dazzle

Регистрация: 08.01.2014

Сообщения: 339

Рейтинг: 1301

Нарушения: 260

trudai сказал(а):

Моя версия ответа на данный топик:

 

Мне лень пытаться это компилировать, но по-моему мнению компилироваться это не должно.

 

Нажмите, чтобы раскрыть...

Что должен делать этот код?

 

Все в Main и не разбито по функциям... типичный говнокод...

R47k41

Пользователь

Регистрация: 16.05.2016

Сообщения: 1328

Рейтинг: 1451

R47k41

Регистрация: 16.05.2016

Сообщения: 1328

Рейтинг: 1451

Кидай в общий, хоть поржем

KydZe

Пользователь

Регистрация: 24.06.2015

Сообщения: 4728

Рейтинг: 3751

KydZe

Регистрация: 24.06.2015

Сообщения: 4728

Рейтинг: 3751

это шо паскаль? почему все в куче? привыкай что в меин функцие все по минимуму , объясни что в целом это должно делать или дай описание задания, и вообще похоже на что то скачаное из тырнетов

TheFoxFix

Пользователь

Регистрация: 17.08.2016

Сообщения: 1082

Рейтинг: 441

TheFoxFix

Регистрация: 17.08.2016

Сообщения: 1082

Рейтинг: 441

KydZe сказал(а):

это шо паскаль? почему все в куче? привыкай что в меин функцие все по минимуму , объясни что в целом это должно делать или дай описание задания, и вообще похоже на что то скачаное из тырнетов

Нажмите, чтобы раскрыть...

это оно и есть.

препод хочет прогу для LU разложения на с++.

я в нем 0.

так что я нашел в инете.

оно компилится. и разложение делает.Только  вот преподу надо защищать это все. и оьбяьснять.

trudai

Пользователь

Регистрация: 28.10.2016

Сообщения: 186

Рейтинг: 85

trudai

Регистрация: 28.10.2016

Сообщения: 186

Рейтинг: 85

TheFoxFix сказал(а):

это оно и есть.

препод хочет прогу для LU разложения на с++.

я в нем 0.

так что я нашел в инете.

оно компилится. и разложение делает.Только  вот преподу надо защищать это все. и оьбяьснять.

Нажмите, чтобы раскрыть...

как я и говорил, эта херь не компилится:

Цитата:
...main.cpp:38: ошибка: invalid operands of types 'double [4]' and 'double' to binary 'operator/'

L [0] = A [0]/ A [0][0];

Нажмите, чтобы раскрыть...

И

 
Цитата:
...main.cpp:31: ошибка: incompatible types in assignment of 'int' to 'double [4]'

L [j] = 1;

Нажмите, чтобы раскрыть...

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

Как можно быть таким убогим, если по первоq же ссылке в инете куча инфы?

Спойлер: "code"

#include

#include

using namespace std;

void LU(vector > A, vector > &L,

vector > &U, int n)

{

U=A;

for(int i = 0; i < n; i++)

for(int j = i; j < n; j++)

L[j]=U[j]/U;

for(int k = 1; k < n; k++)

{

for(int i = k-1; i < n; i++)

for(int j = i; j < n; j++)

L[j]=U[j]/U; for(int i = k; i < n; i++)

for(int j = k-1; j < n; j++)

U[j]=U[j]-L[k-1]*U[k-1][j];

}

}

void proisv(vector > A, vector > B,

vector > &R, int n)

{

for(int i = 0; i < n; i++)

for(int j = 0; j < n; j++)

for(int k = 0; k < n; k++)

R[j] += A[k] * B[k][j];

} void show(vector > A, int n)

{

for(int i = 0; i < n; i++)

{

for(int j = 0; j < n; j++)

{

cout <<"\t"<< A[j] << "\t";

}

cout << endl;

}

} int main()

{

const int n=4;

vector > A (n,0), L (n,0), U(n,0), R(n,0);

for(int i = 0; i < n; i++)

{

for(int j = 0; j < n; j++)

{

A.push_back(rand()%20-10);

L.push_back(0);

U.push_back(0);

R.push_back(0);

}

}

LU(A,L,U,n);

cout << "Fisrt matrix" << endl;

show(A,n);

cout << "U matrix" << endl;

show(U,n);

cout << "L matrix" << endl;

show(L,n);

proisv(L,U,R,n);

cout << "L*U matrix" << endl;

show(R,n);

return 0;

}
 

Инденты сам расставишь.

Dark_Heart

Пользователь

Регистрация: 28.04.2013

Сообщения: 788

Рейтинг: 330

Dark_Heart

Регистрация: 28.04.2013

Сообщения: 788

Рейтинг: 330

А в этой вселенной кто нибудь умеет переменные нормально называть, а то A L U, очень удобно однако по таким названиям понимать для чего они roflanLico.png 

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

Dark_Heart сказал(а):

А в этой вселенной кто нибудь умеет переменные нормально называть, а то A L U, очень удобно однако по таким названиям понимать для чего они roflanLico.png 

Нажмите, чтобы раскрыть...

Не понимаю Вашего негодования

Dark_Heart

Пользователь

Регистрация: 28.04.2013

Сообщения: 788

Рейтинг: 330

Dark_Heart

Регистрация: 28.04.2013

Сообщения: 788

Рейтинг: 330

saw_tooth сказал(а):
Нажмите, чтобы раскрыть...

Я знаю, что за LU разложение, просто когда все названо 1 буквой, это режет глаза и приходиться постоянно заглядывать в начало, что именно мы обозначили каждой буквой, а если за тот же код сесть спустя время, то вообще будет ничерта не понятно

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

Dark_Heart сказал(а):

Я знаю, что за LU разложение, просто когда все названо 1 буквой, это режет глаза и приходиться постоянно заглядывать в начало, что именно мы обозначили каждой буквой, а если за тот же код сесть спустя время, то вообще будет ничерта не понятно

Нажмите, чтобы раскрыть...

Во всех теоремах фигурируют данные подписи, поэтому опять таки не понимаю, что может быть не понятно спустя время?

Если помнишь преобразование, то и помнишь буквы.

ЗЫ. давайте писать не I=U/R а tok = napr9jenie / soprotivlenie...какой то рашнтайл

v3lgto

Пользователь

Регистрация: 25.08.2015

Сообщения: 429

Рейтинг: 159

v3lgto

Регистрация: 25.08.2015

Сообщения: 429

Рейтинг: 159

saw_tooth сказал(а):

Во всех теоремах фигурируют данные подписи, поэтому опять таки не понимаю, что может быть не понятно спустя время?

Если помнишь преобразование, то и помнишь буквы.

ЗЫ. давайте писать не I=R/U а tok = napr9jenie / soprotivlenie...какой то рашнтайл

Нажмите, чтобы раскрыть...

U\R

Stupid_Squirel

Пользователь

Регистрация: 11.03.2013

Сообщения: 5145

Рейтинг: 5399

Stupid_Squirel

Регистрация: 11.03.2013

Сообщения: 5145

Рейтинг: 5399

saw_tooth сказал(а):

Во всех теоремах фигурируют данные подписи, поэтому опять таки не понимаю, что может быть не понятно спустя время?

Если помнишь преобразование, то и помнишь буквы.

ЗЫ. давайте писать не I=R/U а tok = napr9jenie / soprotivlenie...какой то рашнтайл

Нажмите, чтобы раскрыть...

Мне кажется, он просто не знал, что это разложение. А потом решил сказать, что знает.. Но типо в целом он прав, но только наполовину

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

v3lgto сказал(а):

U\R

Нажмите, чтобы раскрыть...

Да, описАлся, спасибо

Stupid_Squirel сказал(а):

Мне кажется, он просто не знал, что это разложение. А потом решил сказать, что знает.. Но типо в целом он прав, но только наполовину

Нажмите, чтобы раскрыть...

Ну, в нормальных программах, которые оперируют какими то реально называемыми вещами, конечно надо давать осмысленные названия переменным, но не в данном случае.

c1q3

Пользователь

Регистрация: 20.08.2013

Сообщения: 1108

Рейтинг: 982

c1q3

Регистрация: 20.08.2013

Сообщения: 1108

Рейтинг: 982

img
saw_tooth сказал(а):

Да, описАлся, спасибо

Нажмите, чтобы раскрыть...

Хм. извините. На этом форуме лучше подходит слово оподливился.

А так, вы более правы, чем господин выше.

Stupid_Squirel

Пользователь

Регистрация: 11.03.2013

Сообщения: 5145

Рейтинг: 5399

Stupid_Squirel

Регистрация: 11.03.2013

Сообщения: 5145

Рейтинг: 5399

saw_tooth сказал(а):

Да, описАлся, спасибо

 

Ну, в нормальных программах, которые оперируют какими то реально называемыми вещами, конечно надо давать осмысленные названия переменным, но не в данном случае.

Нажмите, чтобы раскрыть...

ну я про это и говорю