Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Błąd Type mismatch Visual Basic

sebekmati 29 Maj 2011 17:23 1772 3
  • #1 29 Maj 2011 17:23
    sebekmati
    Poziom 8  

    Witam mam program do obliczania wartości wielomianu trzeciego stopnia w punkcie napisany w C++ i nie mogę go przerobić na Visual Basic wyskakuje "Błąd Type mismatch"
    I nie mogę znaleźć gdzie to zmienić.


    Kod: cpp
    Zaloguj się, aby zobaczyć kod






    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0 3
  • #2 01 Cze 2011 12:42
    Maticool
    Poziom 19  

    Cze. Problemem jest linijka:
    wsp = wsp(0)
    Wewnątrz funkcji "hor".

    Program nie rozumie wyrażenia "wsp(0)" jako zmiennej tablicowej, bo zadeklarowałeś tę tablicę jako lokalną w innym sub'ie :D a nie wewnątrz funkcji "hor". Problem teoretycznie rozwiązałoby zrobienie globalnej tablicy wsp() niestety, nie wiedzieć czemu, VB nie pozwala na globalne tablice...

    Druga sprawa nie można jednocześnie deklarować zmiennej oraz tablicy o takiej samej nazwie (np. wsp i wsp() ) - takie życie. Trzeba użyć innej nazwy (np. wsp i varwsp() )

    Skoro w twoim wypadku wielomian jest trzeciego stopnia, proponuję użyć po prostu 4 niezależnych, globalnych zmiennych jako współczynników wielomianu.

    0
  • #3 01 Cze 2011 16:55
    sebekmati
    Poziom 8  

    kombinuje i nie wiem gdzie to zmienić żeby działało. A mógłbyś mi to poprawić i dać gotowy kod? A program ma być napisany rekurencyjnie

    0
  • Pomocny post
    #4 03 Cze 2011 17:53
    Maticool
    Poziom 19  

    Proszę bardzo. Wersja "z pod siekiery" (nie zabezpieczona przed błędnymi wartościami użytkownika):

    Code:

    Function hor(n, x, wsp())
      If n = 0 Then
        hor = wsp(0)
      Else
        hor = hor(n - 1, x, wsp()) + wsp(n) * x ^ n
      End If
    End Function

    Private Sub commandbutton1_Click()
      Dim wsp(0 To 50)
      Const k = 3
      x = Val(InputBox("Podaj x", "podaj wartosc x"))
      For i = 0 To k
        wsp(i) = InputBox("Podaj współczynnik przy" + Str$(i) + ". potędze.")
      Next i
      w = hor(k, x, wsp())
      MsgBox ("Wynik: " & w)
    End Sub


    Przy okazji cofam co powiedziałem wcześniej:
    Cytat:
    proponuję użyć po prostu 4 niezależnych, globalnych zmiennych jako współczynników wielomianu.

    0