Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  d
Language: C/C++
Code:
#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>

#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif

// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif
using namespace std; 
  
const int MAX = 100; 
  
void luDecomposition(int arrx[][MAX], int n) 

    
    int lower[n][n], upper[n][n]; 
    memset(lower, 0, sizeof(lower)); 
    memset(upper, 0, sizeof(upper)); 
    for (int i = 0; i < n; i++) { 
  
        for (int k = i; k < n; k++) { 
  
            int sum = 0; 
            for (int j = 0; j < i; j++) 
                sum += (lower[i][j] * upper[j][k]); 

                upper[i][k] = arrx[i][k] - sum; 
        } 
  
        // Lower Triangular 
        for (int k = i; k < n; k++) { 
            if (i == k) 
                lower[i][i] = 1; // Diagonal as 1 
            else { 
  
                // Summation of L(k, j) * U(j, i) 
                int sum = 0; 
                for (int j = 0; j < i; j++) 
                    sum += (lower[k][j] * upper[j][i]); 
  
                // Evaluating L(k, i) 
                lower[k][i] = (arrx[k][i] - sum) / upper[i][i]; 
            } 
        } 
    } 
  
    // setw is for displaying nicely 
   
    cout << setw(6) << "Lower Triangular" 
         << setw(32) << "Upper Triangular" << endl; 
  
    // Displaying the result : 
    for (int i = 0; i < n; i++) { 
        // Lower 
        for (int j = 0; j < n; j++) 
            cout << setw(6) << lower[i][j] << "\t";  
        cout << "\t"; 
  
        // Upper 
        for (int j = 0; j < n; j++) 
            cout << setw(6) << upper[i][j] << "\t"; 
        cout << endl; 
    } 

  
// Driver code 
int main() 

    int arr[100][100], row, col;    
     cout<<"Enter Matrix Dimension (max 100) : ";
     cin>>row;
     
     for(int i=0; i<row; i++)
     {
          for(int j=0; j<row; j++)
          {
            cout<<"Enter "<<i<<"x"<<j<<" data : ";
               cin>>arr[i][j];
            
          }
     }
    int arrx[row][MAX],data[MAX];

   

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

        for (int j = 0; j < row; j++)
        {
            data[i] = arr[i][j];
            arrx[i][j] = data[i];
        }
        
    }
  
    

    try
    {
        luDecomposition(arrx,row); 
        system("pause");
        return 0; 
    }
    catch(const std::exception& e)
    {
        system("cls");
          cout << "Error on input"; 
           system("pause");
    }

   
Comments: