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

Czy ktoś mógłby mi sprawdzić ten kod? C++, Schemat Hornera

Object Storage Arubacloud
0 głosów
467 wizyt
pytanie zadane 10 listopada 2019 w C i C++ przez Paulina Górniak Nowicjusz (120 p.)

Nie wiem o co chodzi, w czym jest błąd, bo wylicza mi inną, nieprawidłową wartość. Czy jest ktoś kto mógłby mi to poprawić?

#include<iostream>
using namespace std;
int main()
{
int *wspolczynnik;
int stopien, i;

cout<<"Wprowadz stopien wielomianu:"<<endl;
cin>>stopien;

wspolczynnik = new int (stopien+1);
     for(i=0; i<=stopien; i++)
    {
cout<<"Wspolczynnik stojacy przy potedze "<<stopien-i<<" wynosi: ";
cin>>wspolczynnik[i];

}
    int argument;

cout<<"Wprowadz argument ktory chcesz obliczyc: ";
cin>>argument;
int wynik=wspolczynnik[0];

    for (int i=1; i<stopien; i++)
{ 
    cout<<"W("<<argument<<")="<<wynik*argument+wspolczynnik[i];
    return wynik;
}
}

 

2 odpowiedzi

0 głosów
odpowiedź 10 listopada 2019 przez reaktywny Nałogowiec (41,090 p.)
edycja 10 listopada 2019 przez reaktywny
Linia 11?

int wspolczynnik[stopien + 1];

--

Nie za bardzo też rozumiem ostatnią część (obliczenia)... Ale niech ktoś inny się wypowie.
0 głosów
odpowiedź 12 listopada 2019 przez mmarszik Mądrala (7,390 p.)

Mniej/więcej tak, pozostawiam Tobie usunięcie new i delete, i zastosowanie vectora:

 

#include<iostream>

int main(int argc, char *argv[]) {
    double *wspolczynniki; //Powinien być wektor!!!
    int stopien, i;

    std::cout<<"Wprowadz stopien wielomianu:"<<std::endl;
    std::cin>>stopien;

    wspolczynniki = new double [stopien+1]; //Nie używaj new!!!
    for(i=0; i<=stopien; i++) {
        std::cout<<"Wspolczynnik stojacy przy potedze "<<i<<" wynosi: ";
        std::cin>>wspolczynniki[i];
    }
    double argument;
    std::cout<<"Wprowadz argument ktory chcesz obliczyc: ";
    std::cin>>argument;

    double wynik = 0;
    for(int i=stopien; i>0; i--) {
        wynik = ( wynik + wspolczynniki[i] ) * argument ;
    }
    wynik += wspolczynniki[0];
    std::cout<<"Wartość wielomianu: " << wynik << std::endl;
    delete[] wspolczynniki; //Nie używaj delete
    return 0;
}

 

Podobne pytania

0 głosów
0 odpowiedzi 1,529 wizyt
pytanie zadane 19 grudnia 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
1 odpowiedź 554 wizyt
–2 głosów
0 odpowiedzi 143 wizyt
pytanie zadane 14 grudnia 2019 w C i C++ przez JACOBSSSPRO Początkujący (410 p.)

92,662 zapytań

141,557 odpowiedzi

320,002 komentarzy

62,029 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...