• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Opis kodu C++

VPS Starter Arubacloud
0 głosów
609 wizyt
pytanie zadane 12 kwietnia 2020 w C i C++ przez gorgonkowa Obywatel (1,810 p.)

Hejka!
Chciałabym zapytać, czy mogę poprosić kogoś o opisanie poniższego kodu, z grubsza, która część co tutaj robi?

//program dla podanych punktĂłw xi i odpowiadajacym ich wartosciom yi liczy
// wielomian Lagrange'a i przedstawia go w postaci:
//      a0+a1*x+a2*x^2+....+an*x^n
//ilosc rownan n jest rowna ilosci pktow xi i yi;
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
#include <conio.h>

using namespace std;

const double EPS   = 0.0000000001; // dokładność porównania z zerem
const int    MAXEQ = 10;          // maksymalna ilość równań w układzie

bool EliminujX(int n, double AB[][MAXEQ+1])
{
  int    i,j,k;
  double m;

  for(i = 0; i < n - 1; i++)
  {
    if(fabs(AB[i][i]) < EPS) return false;
    for(j = i + 1; j < n; j++)
    {
      m = -AB[j][i] / AB[i][i];
      for(k = i + 1; k <= n; k++) AB[j][k] += m * AB[i][k];
    }
  }
  return true;
}

bool ObliczX(int n, double X[], double AB[][MAXEQ+1])
{
  int    i,j;
  double s;

  for(i = n - 1; i >= 0; i--)
  {
    if(fabs(AB[i][i]) < EPS) return false;
    s = AB[i][n];
    for(j = n - 1; j > i; j--) s -= AB[i][j] * X[j];
    X[i] = (s / AB[i][i])*1;
  }
  return true;
}

int main(int argc, char* argv[])
{
ofstream fout;
  int i,j,n,*tab;
  float x,*ai,*xi,*yi;
  double AB[MAXEQ][MAXEQ+1], X[MAXEQ];

  cout.precision(5);     // 5 cyfr po przecinku
  cout.setf(ios::fixed); // format stałoprzecinkowy


cout<<"podaj ilosc rownan ";
cin>>n;
xi=new float[n];
yi=new float[n];
   for(i=0;i<n;i++)
    {
     cout<<"podaj wsp x["<<i<<"]=";
     cin>>xi[i];
     }
   for(i=0;i<n;i++)
    {
     cout<<"podaj wsp y["<<i<<"]=";
     cin>>yi[i];
     }
   for(i=0;i<n;i++)
    for(j=0;j<n+1;j++)
     {
       AB[i][j]=pow(xi[i],j);
       if(j==n)AB[i][j]=yi[i];
       }
    if(EliminujX(n,AB) && ObliczX(n,X,AB))
    {
      for(i = 0; i < n; i++)fout << X[i] << endl;
      fout.close();
    }
    else cout << "Rozwiazanie ukladu rownan nie powiodlo sie\n";
    cout<<X[0]<<" + ";
    for(i=1;i<n;i++)
     {
      cout<<X[i]<<"*x^"<<i<<" + ";
      if(i==n-1)cout<<";";
     }
    cout<<endl<<endl;
  system("pause");
  delete [] xi;
    delete [] yi;
  return 0;
}


Chciałabym troszkę bardziej to zrozumieć. Byłabym mega wdzięczna za pomoc!angel

1 odpowiedź

0 głosów
odpowiedź 12 kwietnia 2020 przez TOWaD Mądrala (6,060 p.)

Podobne pytania

0 głosów
1 odpowiedź 710 wizyt
–2 głosów
1 odpowiedź 525 wizyt
pytanie zadane 31 marca 2021 w C i C++ przez Matejko Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 988 wizyt
pytanie zadane 16 stycznia 2017 w Python przez Carttea5 Nowicjusz (120 p.)

93,018 zapytań

141,984 odpowiedzi

321,282 komentarzy

62,364 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...