[C++] Dodawanie wielomianów

aGabi94
Użytkownik
Użytkownik
Posty: 230
Rejestracja: 5 mar 2014, o 18:52
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 60 razy

[C++] Dodawanie wielomianów

Post autor: aGabi94 »

Witam.Dopiero zaczynam przygodę z klasami.
Mam napisać program dodający współczynniki wielomianu
To fragment mojego programu,proszę o sprawdzenie czy to w ogóle ma sens.
A co w przypadku gdy

Kod: Zaznacz cały

w1.n=w2.n
?

Kod: Zaznacz cały

wielomian operator + (wielomian w1, wielomian w2)
{wielomian w3(w2.n);
int i;
if(w1.n<w2.n)
for(i=0;i<=w2.n;i++)
{
w3.wsp[i]=w1.wsp[i]+w2.wsp[i];
} 
if(w1.n>w2.n)
wielomian w3(w1.n);
for(i=0;i<=w1.n;i++)
{
w3.wsp[i]=w1.wsp[i]+w2.wsp[i];
}
}
Ostatnio zmieniony 7 gru 2014, o 21:43 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Quenshin
Użytkownik
Użytkownik
Posty: 15
Rejestracja: 8 mar 2011, o 21:42
Płeć: Mężczyzna
Lokalizacja: localhost
Podziękował: 3 razy
Pomógł: 2 razy

[C++] Dodawanie wielomianów

Post autor: Quenshin »

Brak pełnego kodu, ale wnioskuję, że:
n oznacza stopień wielomianu
i analizuje dalej kod w ciemno wg własnej interpretacji

Tworzenie wielomianu w3, jest w drugiej linii oraz w drugim if - dwukrotnie tworzysz zmienną o tej samej nazwie.
Proponuje zrobić na początku sprawdzenie, który wielomian ma większy stopień i utworzenie w3 o odpowiednim stopniu. Następnie dwie pętle, dodające współczynniki wielomianów w1 i w2.

Sumując w sposób:

Kod: Zaznacz cały

w3.wsp[i] = w1.wsp[i] + w2.wsp[i]
możesz albo wyjść poza zakres tablicy wsp (wielomiany różnego stopnia). Dodając kontrolę momentu, w którym dodawana są współczynniki z obu wielomianów łatwiej o błąd i trzeba napisać jeszcze jedną pętle, która doda pozostałe współczynniki.

Oczywiście wielomian w3 może być kopią wielomianu o większym stopniu - i wtedy wystarczy zrobić pętle dodająca wartości współczynników wielomianu o mniejszym stopniu - moim osobistym zdaniem najbardziej eleganckie rozwiązanie.

Na końcu metody nie powinno jeszcze być przypadkiem return?

Kosmetyczna i subiektywną uwaga na koniec, można napisać:

Kod: Zaznacz cały

for(int i = 0 ; i < w.n ; i++)
bez wcześniej deklaracji zmiennej i. Wtedy ta zmienna przestaje istnieć po wykonaniu pętli, kod będzie ładniej wyglądać, a do tego 4 bajty pamięci więcej
aGabi94
Użytkownik
Użytkownik
Posty: 230
Rejestracja: 5 mar 2014, o 18:52
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 60 razy

[C++] Dodawanie wielomianów

Post autor: aGabi94 »

Tak, powinno być jeszcze return Dziękuje za odpowiedź.
ODPOWIEDZ