Imports System Public Class Application Public Shared Sub Main() 'Trzeba sie przyjrzec, jak wyglada ten wzor. 'Pierwszy składnik sumy (1+ 1/3*x trzbea obliczyc bo w zaden sposob nie ma zaleznosci z pozostalymi 'Poczawszy od drugiego skladnika sumy zmienia sie: '- znak skladnika co drugi jest ujemny, co drugi dodatni. '- potega x-a rosnie o 1. '- licznik kazdego skladnika jest iloczynem liczb o roznicy 3, iloczyn ten zaczyna sie od 2. ' w kazdym skladniku tego licznika jest o jeden wiecej iloczyn niz w poprzednim. '- mianownik sklada sie z iloczynu potegi trojki, potega rosnie o 1 ' oraz silni, silnia tez rosnie o jeden. ' Czyli wystarczy osobno zapamietac kazdy z tych elementow, poczawszy od drugiego. ' wszystko zapakowac w petle i za kazdym przejsciem odpowiednio zwiekszac kazdy element. ' a obliczony skladnik dodawac do wyniku. Dim wynik As double 'zmienna bedzie przechowywac wynik po obliczeniach funkcja go wypluje 'Zaczne od obliczenia pierwszego skladnika sumy. wynik = 1+1/3*x 'teraz trzeba przydzielic pamiec na poszczegolne elementy, oktorych napisalem wczesniej Dim znak As integer 'znak skladnika, bedzie sie zmieniac 0 na 1, z 1 na 0 znak = 1 'przyjalem sobie, ze jeden to minus, 0 to plus. teraz trzeba bedzie liczyc 2 skladnik, a jest on ujemny. Dim licznik As Double 'bedzie trzymac aktualnie wyliczona wartosc licznika(w sensie ulamka) Dim LicznikNext As double 'musze wiedziec, przez co mam pomnożyc licznik, zeby wyliczyc kolejne. licznik = 2 'dalej bedzie widac dlaczego takie wartosci licznikNext = 2 'teraz stworze zmienne dla mianownika. 'zmienna na te potegi trojki z mianownika. Dim potegitrojki As double potegitrojki = 9 'bedzie mnozone razy trzy dla kazdego skladnika. pierwszy skladnik ma 3^2 = 9 Dim silnia As double 'ta silnia w mianowniku kazdego skladnika silnia = 2 '2 bo 2! = 2 Dim silniaNext As double 'do obliczania silni w kolejnych skladnikach silniaNext = 3 ' kolejny skladniki to 3! czyli 2!*3 Dim potega_x As double 'bedzie trzymac kolejne potegi x-a potega_x = x^2 'Mam wszystkie potrzebne zmienne do liczenia 'zmienna dokladnosc odpowiada za to ile tych skladnikow mamy zsumowac. im wiecej dodamy tym dokladniejszy bedzie wynik. 'stworze petle. kazde przejscie tej petli bedzie odpowiadac za sume jednego skladnika Dim i As Long For i=1 To dokladnosc 'do wynik dodaje/odejmuje kolejne skladniki If (znak == 1) then znak = 0 wynik = wynik - (licznik / (potegitrojki * silnia) ) * potega_x else znak = 1 wynik = wynik + (licznik / (potegitrojki * silnia) ) * potega_x End If 'teraz trzeba tylko ustawic wszystkie zmienne tak, aby wskazywaly na nastepny skladnik licznikNext = licznikNext+3 licznik = licznik * licznikNext potegitrojki = potegitrojki * 3 silnia = silnia * silniaNext silniaNext = silniaNext + 1 Next i 'jak posumuje te skladniki to w zasadzie koniec. ta funkcja ma je zwrocic. System.Console.WriteLine(wynik) End Sub End Class
Standard input is empty
Visual Basic.Net Compiler version 0.0.0.5914 (Mono 2.4.2 - r) Copyright (C) 2004-2008 Rolf Bjarne Kvinge. All rights reserved. /home/cVkP9e/<MyGenerator> (1,1) : Error VBNC99999: Unexpected error: Object reference not set to an instance of an object at vbnc.BinaryExpression.ResolveTypeReferences () [0x00020] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Expressions/BinaryExpressions/BinaryExpression.vb:55 at vbnc.BinaryExpression.ResolveTypeReferences () [0x00002] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Expressions/BinaryExpressions/BinaryExpression.vb:54 at vbnc.ParenthesizedExpression.ResolveTypeReferences () [0x00000] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Expressions/ParenthesizedExpression.vb:33 at vbnc.IfStatement.ResolveTypeReferences () [0x0002c] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Statements/IfStatement.vb:153 at vbnc.CodeBlock.ResolveTypeReferences () [0x0007e] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Code/CodeBlock.vb:582 at vbnc.BlockStatement.ResolveTypeReferences () [0x00002] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Statements/BlockStatement.vb:59 at vbnc.ForStatement.ResolveTypeReferences () [0x00106] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Statements/ForStatement.vb:122 at vbnc.CodeBlock.ResolveTypeReferences () [0x0007e] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Code/CodeBlock.vb:582 at vbnc.MethodBaseDeclaration.ResolveTypeReferences () [0x00081] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/MethodBaseDeclaration.vb:189 at vbnc.MethodDeclaration.ResolveTypeReferences () [0x00002] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Members/MethodDeclaration.vb:69 at vbnc.SubDeclaration.ResolveTypeReferences () [0x00036] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/Members/SubDeclaration.vb:112 at vbnc.AssemblyDeclaration.ResolveTypeReferences (vbnc.TypeDeclaration Type) [0x00088] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/TypeDeclarations/AssemblyDeclaration.vb:311 at vbnc.AssemblyDeclaration.ResolveTypeReferences () [0x0002a] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/TypeDeclarations/AssemblyDeclaration.vb:288 at vbnc.Compiler.Compile_Resolve () [0x00100] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Compiler.vb:413 at vbnc.Compiler.Compile () [0x0028a] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Compiler.vb:561 Compilation took 00:00:00.6962140
Standard output is empty