» »

program za delo s polinomi v C#

program za delo s polinomi v C#

majster123 ::

Imam težavo, namreč neznam rešiti tega problema v programskem jeziku c#. Prosil bi za kakšno pomoč. Hvala!

Navodila:


Proučite operacije za delo s polinomi (viri: matematični priročnik, matematični učbeniki...).




Izdelajte skupino podprogramov, ki bodo seštevali, odštevali, množili in delili polinome. Poleg tega izdelajte tudi podprograma za vnos in izpis polinoma.

Posamezen polinom naj program hrani v polju realnih števil. Indeks polja naj predstavlja stopnjo člena polinoma, vrednost v polju pa faktor pred členom.

Izdelajte še testni podprogram, ki bo prikazal delovanje izdelanih podprogramov.

Primer (odštevanje):

Vhod:
Polinom 1: "5x3 + 4x2 + x + 1"
Polinom 2: "5x2 + 2"

Izhod:
"5x3 - x2 + x - 1" oz. "5x3 - 1x2 + 1x - 1"

Isotropic ::

najprej razčisti, kako se sešteva... polinome

Andrejpan ::

@majster123 a bi znal napisat polinoma v matematicni obliki, ki ga predstavljata te dva zapisa [4, 5, 3, 1] in [0 ,0, 6, 3]?

majster123 ::

y = 4x^4 + 5x^3 + 3x^2 + x
y = 6x^2 + 3x

pomojem

videc ::

Narobe.
Skrajno desni element vektorja je potenca 0. x^0=1. Vsaj mene so tako učili.

Torej, [0,0,6,3] je tako: 0x^3 + 0x^2 + 6x^1 +3x^0.

Andrejpan ::

@videc te je pravilno popravil. Se ena opazka, zacni pisat razlicne spremeljivke za razlicne polinome y1 = 4x^4 + ... in y2 = 6x^1 + ...

Bi znal sedaj sesteti y1 in y2?

majster123 ::

4x^3 + 5x^2 + 3x + 1 + 6x + 3 = 4x^3 + 5x^2 + 9x + 4

Andrejpan ::

Mogoce bo tale zapis boljsi:
4x^3 + 5x^2 + 3x + 1
+ 6x + 3
-----------------------
= 4x^3 + 5x^2 + 9x + 4

sedaj pa ce polinoma zapises s seznami in izracunas vsoto

[4, 5, 3, 1]
+ [0 ,0, 6, 3]
---------------
= [?, ?, ?, ?]

A bi znal sedaj potegnit vzporednico kako lahko polinome sestevas/odstevas s seznami?

majster123 ::

hm... imel bi dva seznama, v prvega bi vstavil števila prvega polinoma, v drugega pa števila drugega polinoma.... nato bi ju nekak seštel, ta dva seznama in odštel za odštevanje... :D nisem pa ziher XD

Andrejpan ::

Jp, sounds great. A znaš ustvarit 2 seznama, ju napolnit s stevili in uporabljat for zanko (recimo samo za izpis vseh števil v obeh seznamih)?

majster123 ::

bi šlo ja :)

Andrejpan ::

Potem pa v akcijo in zadevo naredi in nato prilepi kodo tukaj (ali zs), da jo preverim. Prihajamo v fazo, kjer bos moral zacet programirati.

majster123 ::

hm... to je tak predmet na faksu, kjer se naj nebi uporabljalo objektnega programiranja, tako da mislim da delo z listi odpade :S

smacker ::

Spet izgovori. Si že napisal kako vrstico? Na faksu nikoli ne komplicirajo na kak način rešiš problem, če le znaš na zagovoru pojasnit kaj si nardil in zakaj si kaj uporabil ;)
Drugače pa list je itak isto kot array.

Andrejpan ::

Seznam, list, array je obicajno beseda za isto stvar in ima z objektnim programiranjem bolj malo skupnega. Pri vseh osnovah programiranja bos slisal za seznam.

majster123 ::

smacker pri tem predmetu so zelo striktni in že z malo napake dobiš 0 pik, drugače pa dobite kodo sedaj :)

majster123 ::

   List<int> seznam = new List<int>();
            seznam.Add(4);
            seznam.Add(5);
            seznam.Add(3);
            seznam.Add(1);

            List<int> seznam2 = new List<int>();
            seznam2.Add(6);
            seznam2.Add(3);

           

            foreach(var a in seznam)
            {
                Console.WriteLine("Števila prvega seznama: {0}",  a);
            }

            foreach(var b in seznam2)
            {
                Console.WriteLine("Števila drugega seznama: {0}", b);
            }

            seznam.AddRange(seznam2);

            foreach (var c in seznam)
            {
                Console.WriteLine("Števila združenega seznama: {0}", c);
            }


            Console.ReadKey();

Andrejpan ::

Ok, imamo napredek. Drugace seznam2 ni vredu zgeneriran, prosim poravi zadevo, kot sem napisal zgoraj v psevdo kodi.

Sedaj bo treba oba seznama sesteti oziroma sesteti moremo istolezne komponente obeh seznamov. Mislim, da ti foreach ne bo pomagal saj lahko dostopas samo do komponente enega seznama naekrat. Uporabiti bos moral navadno zanko z vecanjem indeksa i in do komponent obeh seznamov dostopati na naslednji nacin: seznam[i] in seznam2[i]. Sedaj je vprasanje kam bos shranjeval rezultat: v novi seznam(seznam3) ali v enega od starih seznamov.

majster123 ::

  for (int i = 0; i < seznam.Count; i++)
            {
                Console.WriteLine(seznam[i] + seznam2[i]);
            }


To bi naj bilo to, i think :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C#] Domača naloga - osnove

Oddelek: Programiranje
372495 (1712) 11tomi12
»

C# izvoz podatkov - lokacijo vpiše uporabnik

Oddelek: Pomoč in nasveti
111620 (1518) fokz8
»

[c#] Sklad

Oddelek: Programiranje
91578 (1438) Spura
»

C# Branje iz datoteke

Oddelek: Programiranje
5974 (783) boogie_xlr
»

Povezani seznam

Oddelek: Programiranje
132093 (1690) pohano

Več podobnih tem