» »

Quick Basic potenciranje

Quick Basic potenciranje

Fave ::

ON ERROR GOTO 100
CLS

sl = -5
zl = 5
st = 0.5

FOR a = sl TO zl STEP st
FOR x1 = 1 TO 3
FOR b = sl TO zl STEP st

x = a

IF x1 = 1 THEN x = x + b
IF x1 = 2 THEN x = x * b
IF x1 = 3 THEN x = x ^ b

counter = counter + 1
PRINT x, counter
x = 0

NEXT b
NEXT x1
NEXT a
100 RESUME NEXT


Tale programčič noče potencirat na decimalko. Dokler je potenca celo število ni problema, ko pa je 0,5 ali 2,5 pa kot da potenciranja nebi bilo.

Kaj je narobe?
My mind's a hyper tool that fixes everything.

FlashM ::

Kolikor sm jst tole tvojo kodo stestiral sem opazil, da ko je x1 = 3, je vrednost spremenljivke b vedno 1. Zato se ti zdi da se ne potencira, vendar se, kajti 3^1 = 3.

BTW: Kater programski jezik je sploh tole? VB?

mastah ::

sej ma napisan quickbasic, oziroma qbasic, dos varjanta

Fave ::

Kolikor sm jst tole tvojo kodo stestiral sem opazil, da ko je x1 = 3, je vrednost spremenljivke b vedno 1. Zato se ti zdi da se ne potencira, vendar se, kajti 3^1 = 3.

BTW: Kater programski jezik je sploh tole? VB?


Tole pa ne bo držalo. Ker meni se b spreminja.

Gre za neko čudno težavo. Meni lepo potencira, dokler je b celo število. Ko je decimalno, mi pa ne. Če v vrstici

x = a

a zamenjam z neko vrednostjo, potem mi potencira bp. Kodo sem pognal tudi v Liberty Basicu (Basic za windows) in tam mi javi "Incorrect key" ??? Kaj to pomeni nimam pojma.
My mind's a hyper tool that fixes everything.

FlashM ::

Imaš prav, jst sm pri enem if stavku napačen pogoj napisu.
Jst sm tole testiral v C# in mi dela brez problema tako kot mora.

Zgodovina sprememb…

  • spremenil: FlashM ()

FlashM ::

double x;
int counter = 0;

for (double a = -5; a <= 5; a += 0.5)
{
    for (int x1 = 1; x1 <= 3; x1++)
    {
        for (double b = -5; b <= 5; b += 0.5)
        {
            x = a;

            if (x == 1) x = x + b;
            if (x == 2) x = x * b;
            if (x == 3) x = Math.Pow(x, b);

            counter++;

            Console.WriteLine("x: {0}, Counter: {1}", x, counter);
            x = 0;
        }
    }
}

Fave ::

Ja, verjamem. Res mi ni jasno kaj bi bilo narobe.

Bom pa tvojo kodo uporabil in se malo v C-ju pozabaval. Hvala.
My mind's a hyper tool that fixes everything.

FlashM ::

Kje pa imaš definirane spremenljivke (zanimajo me tipi spremenljivk) ali pa če kar celotno kodo copy paste-aš.

jernejp ::

Probaj:

a=10
x=2
PRINT a^x
x=2.5
PRINT a^x

in če ti zadeva ne bo delala potem potenciranje v QBasicu potrebuje celo število za potenco in boš moral funkcijo za potenciranje napisati tako da bo delovalo...

PS:
Ne programiram v QBasicu,
zato je to vse kar ti lahko napišem :-)

FlashM ::

Lahko bi bil problem tudi v tipi spremenljivk. Sicer pa ne vidim nobenega problema s tole kodo. Sem tud sam včasih velik programiru še v VB6.0 in potem v VB.NET 2005, tko da mi je koda povsem jasna. Čudno...

Dej probi še tole: pri tretjem IF stavku (IF x1 = 3) narest tkole nekak:

IF x1 = 3 THEN
dim v as double = x ^ b

in potem poglej kakšna je vrednost spremenljivke v.

BTW: A Quick Basic ne uporablja END IF-ov? Al si jih ti pozabu napisat? Ali dela tudi brez tega?

jernejp ::

Lahko bi bil problem tudi v tipi spremenljivk. Sicer pa ne vidim nobenega problema s tole kodo. Sem tud sam včasih velik programiru še v VB6.0 in potem v VB.NET 2005, tko da mi je koda povsem jasna. Čudno...

Dej probi še tole: pri tretjem IF stavku (IF x1 = 3) narest tkole nekak:

IF x1 = 3 THEN
dim v as double = x ^ b

in potem poglej kakšna je vrednost spremenljivke v.

BTW: A Quick Basic ne uporablja END IF-ov? Al si jih ti pozabu napisat? Ali dela tudi brez tega?

QBasic je star kot zemlja :-) Mene spominja na Comodore64 čase :-)
Je pa zanimovo po veliko letih kaj takega videt...

FlashM ::

hehehe... se strinjam :-) Jst si sploh ne predstavljam da bi dans še karkol delu v programu starejšem kot VS.NET 2005, pa že to bi bil kompromis :-) Komi čakam da pride VS.NET 2010. Baje bo en kul feature za debuging thread-ov...

Zgodovina sprememb…

  • spremenil: FlashM ()

M@73Y ::

jah nevem meni tole dela:
x= 2.5
a= x ^ 2
print a
in mi vrže 6,25
..jump into psytrance tunnel..

jernejp ::

jah nevem meni tole dela:
x= 2.5
a= x ^ 2
print a
in mi vrže 6,25


jaz sem prej napisal naj proba še:

x^2.5 ne le 2.5^2
zanima me ali je lahko potenca
kaj drugega kot celo število....

kajti to da dela x^2 je že prej povedal da dela...

FlashM ::

A Quick Basic sploh ima podatkovne tipe al je kr vse nek var type?

Fave ::

@jernejp: To dela bp. Vse sem že pregledu, pa mi ni jasno zakaj samo v mojem primeru noče.

@FlashM: Tudi s spremenljivko tipa double sem poizkusil, pa nič. Basic pozna end if in ga uporabljaš kadar zgleda koda takole:

IF A > B THEN
BEEP
PRINT "A JE VČJE OD B"
END IF
My mind's a hyper tool that fixes everything.

FlashM ::

Ena fora mora zihr bit... A obstaja kakšna gut online dokumentacija za Quick Basic?
Sicer pa, za stavkom "PRINT x, counter" ni treba vrednosti spremenljivke x postavljat na 0,
razen če imaš za to kakšen poseben razlog.

Fave ::

Ena fora mora zihr bit... A obstaja kakšna gut online dokumentacija za Quick Basic?
Sicer pa, za stavkom "PRINT x, counter" ni treba vrednosti spremenljivke x postavljat na 0,
razen če imaš za to kakšen poseben razlog.


To drži. Tisto postavljanje x na nič je en "ostanek" od prej. Sem brisal, pa še vedno ne dela :)

Očitno gre za bug.
My mind's a hyper tool that fixes everything.

Zgodovina sprememb…

  • spremenil: Fave ()


Vredno ogleda ...

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

Izdelava algoritma

Oddelek: Znanost in tehnologija
61472 (852) Klemen86
»

Računanje matrične enačbe

Oddelek: Šola
346062 (5622) soulfly
»

Digitalna evolucija (strani: 1 2 3 426 27 28 29 )

Oddelek: Znanost in tehnologija
141673566 (23735) pietro
»

[Python]Nekaj osnovnih vprašanj

Oddelek: Programiranje
81574 (1390) nekdo321
»

Reši enačbo

Oddelek: Znanost in tehnologija
123513 (3228) snow

Več podobnih tem