Форум программистов, компьютерный форум CyberForum.ru

STL,Поиск определителя и решение с.л.а.у.,WxDev-C++7.3.1.3 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С чего начать? http://www.cyberforum.ru/cpp-beginners/thread260303.html
Дорогие друзья-программисты, есть интерес для освоения языка си++, но я не знаю с чего начать. Пожалуйста помогите информацией, ссылками или советами Есть навык программирования на паскале, на уровне 10 класса школы. СПАСИБО ЗА ВНИМАНИЕ!
C++ Задан массив натуральных чисел X из 20 элементов. Удалить из него 2 наибольших и наименьших элемента. Задан массив натуральных чисел X из 20 элементов. Удалить из него 2 наибольших и наименьших элемента. Добавлено через 23 часа 12 минут помогите с программкой :bye: http://www.cyberforum.ru/cpp-beginners/thread260291.html
Сверить вводимый текст со словарём C++
Дан текст, состоящий из предложений. Ввод текста осуществляется в несколько строк (не более 15). Признак завершения ввода – ввод пустой строки. Также задан словарь, состоящий максимум из 50 слов. Ввод слов осуществляется до ввода пустой строки или до заполнения словаря. Вывести текст на экран, при этом все слова в тексте, которых нет в словаре или они записаны с ошибкой, преобразовать к...
С++:invalid types 'int[int]' for array subscript C++
Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. С++ ошибка invalid types 'int' for array subscript в функции в строке if (a==0) # include <stdio.h> //для использования ввода/вывода информации # include <windows.h> //для использования русского языка # include <math.h> // для использования математических функция #...
C++ Функция, проверяющая, является ли текстовый файл пустым http://www.cyberforum.ru/cpp-beginners/thread260227.html
У меня вопрос: Есть ли в с++ функция возвращающая истину если открытый на чтение txt файл пустой?? Добавлено через 4 минуты Если нет то есть ли тоже самое для переменной?
C++ Нужно пару программ, кто может напишите Мне нужны две программы: 1. Вычисление минимума методом параболы Вход: число Х и шаг H, если минимума нет вывести ошибку 2. Кубический сплайн с апроксимацией производных Ввод: интервал а,b точка x, шаг h; Программа должна содержать массивы значение, заполняются сами, по заданной функции, количество точек это целое число деления от длины интервала на шаг. если не возможно найти ответ, или x... подробнее

Показать сообщение отдельно
USHЁL
 Аватар для USHЁL
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 93
19.03.2011, 20:02     STL,Поиск определителя и решение с.л.а.у.,WxDev-C++7.3.1.3
Привет.
Пытаюсь написать консольную программку для поиска определителя матрицы и нахождения корней линейного уравнения.
Делаю с помощью STL векторов.

Код в принципе скомпилировался,но программа не запустилась.
Есть сообщение,но не могу его понять.
Подскажите где может быть ошибка?
Компилятор выдаёт сообщение такого плана:

[Linker Error] undefined reference to `determinant(std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&)'
ld returned 1 exit status
C:\Documents and Settings\All Users\Äîêóìåíòû\Objects\MingW\Output\MingW\Kursovoy_proj_13_03_2011\Makefile.win [Build Error] [Output/MingW/Kursovoy_Project.exe] Error 1

Сам код:

Код
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
void showMenu();
void showInputMatrix(std::vector< std::vector<double> > sq_matrix);
void showInputMatrix_Vector(std::vector< std::vector<double> > sl_matrix, std::vector<double> lf);
                    
double determinant(std::vector< std::vector<double> > &matrix);
void slau_funct(std::vector< std::vector<double> >& sl_matrix, std::vector<double>& lf, std::vector<double>& lx);
int main(int argc, char *argv[])
{
    
    int choice;
    double dtm;
         
   showMenu();
   cin>>choice;
   
   while(choice != 0){
   switch(choice)
   {
     case 1:
          {
          vector<vector<double> > square_matrix; 
          vector<double> line;
          int n; //=3;
          cout<<"Vvedite razmernost' matrix:\n";
          cin>>n;
          double temp;
          cout<<"Vvedite znachenie:\n";
          for(int i=0;i<n;i++)
          {
            line.clear();
             for(int j=0;j<n;j++)
             {
               cin>>temp;
               line.push_back(temp);                  
                cout<<"Vvedite znachenie:\n";
             }
      
            square_matrix.push_back(line);
          }
    
          showInputMatrix(square_matrix);
          
          dtm = determinant(square_matrix);
          cout<<"Determinant = ";
          dec(cout);
          cout<<dtm<<endl;
     break;}
    
     case 2:
    
          {vector<vector<double> > slau_matrix; 
          vector<double> line2;
          vector<double> line_x;
          vector<double> line_f;    // *****slau_matrix * line_x = line_f*****
    
        int m,i2,j2;
        double temp2;
        double temp_f;
        cout<<"Vvedite razmernost' matrix:\n";
        cin>>m;
        cout<<"Vvedite znacheniya v matrix:\n";
           for( i2=0;i2<m;i2++)
           {
             line2.clear();             //ochishaem vector line
             line_x.clear();           //ochishaem vector line_x
             for(j2=0;j2<m;j2++)
             {
                cin>>temp2;
                line2.push_back(temp2);                  
                cout<<"Vvedite znacheniya v matrix:\n";
             }
      
            slau_matrix.push_back(line2);    //sozdaem 2merny massiv
           }
    
            cout<<"Vvedite znacheniya v vector_f (znachenia dlya funczcii_f):\n";
            for(i2=0;i2<m;i2++)
            {
               cin>>temp_f;
               line_f.push_back(temp_f);      //zanosim znachenia v vector line_f
               cout<<"Vvedite znacheniya v vector_f (znachenia dlya funczcii_f):\n";
            }
    
         showInputMatrix_Vector(slau_matrix, line_f);
         slau_funct(slau_matrix, line_f, line_x);
         
         cout<<"Naidennie znachenia x:\n";
         for(i2=0;i2<line_x.size();i2++)
         {
                cout<<line_x[i2]<<"|";
         }
         
     break;}
     
     default :
            cout<<"exit...\n";
     break;   
   }//end switch
  
   showMenu();
  cin>>choice;
}//end while 


    system("PAUSE");
    return EXIT_SUCCESS;
}


void showInputMatrix(std::vector< std::vector<double> > matrix)
{    
     cout<<"Matrix\n";
       for(int i=0;i<matrix.size();i++)
       {
         for(int j=0;j<matrix.size();j++)
         { 
           dec(cout);
           cout.width(11);
           cout.precision(10);
           cout<<matrix[i][j]<<"|";
         }
        cout<<endl;
       }
}


void showInputMatrix_Vector(std::vector< std::vector<double> > sl_matrix, std::vector<double> lf)
{       
      int i,j;
        cout<<"Sistema lineynih uravneniy\n";
          for(i=0;i<sl_matrix.size();i++)
          {
            for(int j=0;j<sl_matrix.size();j++)
            { 
              dec(cout);
              cout.width(11);
              cout.precision(10);
              cout<<sl_matrix[i][j]<<"|";
            }
           cout<<endl;
          } 
           
           for(j=0;j<lf.size();j++)   //vivod vectora line_f
            { 
              dec(cout);
              cout.width(11);
              cout.precision(10);
              cout<<lf[j]<<"\n";
            } 
            
}


void showMenu()
 {
    cout<<"vvedite 1,2 ili 0:\n"
    "1 - Vichislyaem opredelitel matrizcy\n"
    "2 - Reshaem sistemu lineinih uravneny\n"
    "0 - Vihod\n";
 }
 
double determinant(std::vector< std::vector<double> > matrix)
{   //function find determinant
    //
    int i=0, j=0;
    double koef = 1;
    double lastKoef = 0;
    bool checkKoefIsNull = false;
    int length = matrix.size();
    int fullCol = length;
     for(i=0; i<length && koef; i++)
    {
        if(matrix[i][j] != 0)
        {
            if(matrix[i][j] < 0)
            {
                for(int j=0; j<fullCol; j++)
                    matrix[i][j] *= -1;
                koef *= -1;
            }
            double lastKoef = matrix[i][j];
            for(int k=0; k<fullCol; k++)
                matrix[i][k] /= lastKoef;
            koef *= lastKoef;
            for(int nextRow=i+1; nextRow<length; nextRow++)
            {
                lastKoef = matrix[nextRow][j];
                for(int nextCol=j; nextCol<fullCol; nextCol++)
                    matrix[nextRow][nextCol] -= lastKoef*matrix[i][nextCol];
            }
            ++j;
            checkKoefIsNull=false;
        }
        else
        {
            for(int k=0; k<fullCol; k++)
                std::swap(matrix[i][k],matrix[length-1][k]);
            --i;
            koef *= -1;
            if(checkKoefIsNull)
            {
                ++i;
                koef = 0;
            }
            checkKoefIsNull = true;
        }
    }

        return koef;
}


void slau_funct(std::vector< std::vector<double> >& sl_matrix, std::vector<double>& lf, std::vector<double>& lx)
{   //function find x1,x2,...xn in s.l.a.u. 
    int n = lx.size();
    int l = n - 1;
    int j;
    int m;
    double sum;
    lx[l] = lf[l] / sl_matrix[l][l];     // *****slau_matrix * line_x = line_f*****
    for(m = l-1; m > -1; m--)    
    {
      sum = 0;
         for(j = m+1; j < n; j++) 
         {  
          sum = sum + (sl_matrix[m][j] * lx[j]);   
         }
    
      lx[m] = ( 1 /  sl_matrix[m][m]  ) * ( lf[m]  -  sum );
    }
}
Спасибо всем откликнувшимся.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru