Uitleg rekensommetje

Opgaven en tips voor programmeerwedstrijden.

Uitleg rekensommetje

Berichtdoor hbh-tieltjes » vr maart 20, 2009 8:48 pm

'Uitleg rekensommetje.
'1e deel: 10 for - next lussen en wat je er mee kan doen
for a=0 to 9
for b=0 to 9:if b=a then [lusb] 'b kan niet gelijk zijn aan a
for c=0 to 9:if c=b or c=a then [lusc] 'c kan niet gelijk zijn aan b of aan a
'Dit dus 10 keer van a tot j zo krijg 10 verschillende cijfers in willekeurige volgorde

[lusc]
next c
[lusb]
next b
next a

'Je kunt met de cijfers a t/m j alle rekenkundige bewerkingen doen
'Je kunt ook getallen maken b.v. a*100+b*10+c geeft een getal van 3 cijfers
'Zorg er voor dat het eerste cijfer van een getal geen NUL is,
'laat in dit geval de for-next lus met 1 beginnen b.v. for a=1 to 9
'Voorkom delen door nul of nul delen door een getal dit geeft een fout melding
'Zijn er over dit deel nog vragen dan zie ik het wel ?
'Binnen kort plaats ik de listing van dit deel met verdere uitleg
Er is een vraag mag een getal met nul beginnen Nee dat mag niet.
'probeersels voor for-next
for a=0 to 99:print a;" ";:next a:print
for a=0 to 9:for b=0 to 9:c=a*10+b:print c;" ";:next b:next a:print
'De bovenstaande regels doen het zelfde maar de regel met 2 lussen geeft meer mogelijkheden
for a=0 to 9:for b=0 to 9:if b=a then [lusb]
c=a*10+b:print c;" ";
[lusb]
next b:next a:print:print
'Hier boven géén getallen met gelijke cijfers
for a=1 to 10:for b=1 to 10
print b;"x";a;"=";b*a
next b:print:next a:print
'Hier boven kijk zelf maar

'gr Herman
Laatst bijgewerkt door hbh-tieltjes op di maart 24, 2009 7:05 pm, in totaal 1 keer bewerkt.
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Uitleg rekensommetje

Berichtdoor Gordon » zo maart 22, 2009 12:46 pm

Hartelijk dank voor je hint.
Geef ons nog even tijd. Ik ga er wat aan doen.

Gordon
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: Uitleg rekensommetje

Berichtdoor hbh-tieltjes » di maart 24, 2009 8:16 pm

for a=1 to 9
for b=0 to 9:if b=a then [lusb]
for c=0 to 9:if c=b or c=a then [lusc]
for d=0 to 9:if d=c or d=b or d=a then [lusd]
for e=0 to 9:if e=d or e=c or e=b or e=a then [luse]
for f=1 to 9:if f=e or f=d or f=c or f=b or f=a then [lusf]
for g=1 to 9:if g=f or g=e or g=d or g=c or g=b or g=a then [lusg]
for h=1 to 9:if h=g or h=f or h=e or h=d or h=c or h=b or h=a then [lush]
for i=1 to 9:if i=h or i=g or i=f or i=e or i=d or i=c or i=b or i=a then [lusi]
for j=1 to 9:if j=i or j=h or j=g or j=f or j=e or j=d or j=c or j=b or j=a then [lusj]
'Hier heb je altijd 10 verschillende cijfers, waar je weer getallen van kunt maken.
gosub [getallen]

[lusj]
next j
[lusi] 'k=abcde
next i 'm=fghij
[lush] ' ----- x
next h 'o=1e tussen product
[lusg] 'p=2e tussen product
next g 'q=3e tussen product
[lusf] 'r=4e tussen product
next f 's=5e tussen product
[luse] '----------- +
next e 'n=eind product
[lusd]
next d
[lusc]
next c
[lusb]
next b
next a
end

[getallen]
'schrijf hier de formules voor alle 8 getallen.
'Zijn er vragen dan zie ik het wel.
'Over een aantal dagen geef ik mijn formules hier.
'Daarna gaan we verder met dit sommetje.
return
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Uitleg rekensommetje

Berichtdoor hbh-tieltjes » vr maart 27, 2009 12:08 pm

Deel 2:
[getallen]
k=a*10000+b*1000+c*100+d*10+e 'Dit is het bovenste getal met 5 verschillende cijfers.
m=f*10000+g*1000+h*100+i*10+j 'Dit is het tweede getal met 5 verschillende cijfers.
o=j*k:p=i*k:q=h*k:r=g*k:s=f*k 'De 5 tussen producten van 5 of 6 cijfers van boven naar beneden.
n=k*m 'Het eind product van 9 of 10 cijfers.
return
'De bovenste 2 getallen bevatten altijd de cijfers 0 t/m 9 in willekeurige volgorde.
'In dit geval kunnen bij de for-next lussen alleen de plaatsen b-c-d-e met nul beginnen.
'Inderdaat de extra nullen van de tussen producten worden niet mee gerekend, sorry.
'Voor de controle van de tussenproducten en eindproduct gaan we nog een oplossing maken.
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Uitleg rekensommetje

Berichtdoor hbh-tieltjes » zo apr 05, 2009 7:26 pm

[1e.tussenprodukt]'Deel 3 van rekensommetje.
o$=str$(o):l=len(o$) 'We maken van het getal een string en bepalen het aantal cijfers v/d string.
for x=1 to l:o$(x)=mid$(o$,x,1):next x 'We maken een rij die gelijk is aan de lengte v/d string.
for x=1 to l-1:for y=x+1 to l 'Maak 2 rijen,1e van begin tot voorlaatste,2e van plaats 2 tot laatste.
if o$(x)=o$(y) then exit for 'Vergelijk of cijfer(rij1)=cijfer(rij2) zo ja spring uit lus y
next y:if o$(x)=o$(y) then exit for 'Vergelijk of cijfer(rij1)=cijfer(rij2) zo ja spring uit lus x
next x:if o$(x)=o$(y) then [lusj] 'Vergelijk of cijfer(rij1)=cijfer(rij2) zo ja ga naar label.
return 'Er zijn géén 2 dezelfde cijfers aangetroffen ga terug naar gosub.
'Je kan deze routine ook gebruiken voor sorteren van laag naar hoog of anders om of ongelijk aan.
'Deze routine ook gebruiken voor de andendere tussen produkten telkens met een gosub en return.
'Het eindprodukt ook met dezelfde routine deze wel effe Dimmen en gosub en return gebriuken.
'Zijn er vragen of problemen dan zie ik het wel. Na Pasen plaats ik het gehele programma.
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Uitleg rekensommetje

Berichtdoor hbh-tieltjes » wo apr 15, 2009 4:36 pm

'Twee getallen van 5 cijfers die met elkaar vermenigvuldigd moeten worden,
'bevatten samen alle tien verschillende cijfers in willekeurige volgorde.
'De 5 tussen produkten van 5 of 6 cijfers en het eindprodukt van 9 of 10
'cijfers zijn steeds opgebouwd uit verschillende cijfers.
'Op elke regel kan elk cijfer dus hoogstens één keer voorkomen.
cls:print time$():dim n$(11):teller=0
for a=1 to 9
for b=0 to 9:if b=a then [lusb]
for c=0 to 9:if c=b or c=a then [lusc]
for d=0 to 9:if d=c or d=b or d=a then [lusd]
for e=0 to 9:if e=d or e=c or e=b or e=a then [luse]
for f=1 to 9:if f=e or f=d or f=c or f=b or f=a then [lusf]
for g=1 to 9:if g=f or g=e or g=d or g=c or g=b or g=a then [lusg]
for h=1 to 9:if h=g or h=f or h=e or h=d or h=c or h=b or h=a then [lush]
for i=1 to 9:if i=h or i=g or i=f or i=e or i=d or i=c or i=b or i=a then [lusi]
for j=1 to 9:if j=i or j=h or j=g or j=f or j=e or j=d or j=c or j=b or j=a then [lusj]

gosub [AlleGetallen]
gosub [1e.tussenprodukt]'....zonder dit produkt 3 oplossingen
gosub [2e.tussenprodukt]'....zonder dit produkt 1 oplossing
gosub [3e.tussenprodukt]'....zonder dit produkt 1 oplossing
gosub [4e.tussenprodukt]'....zonder dit produkt 3 oplossingen
gosub [5e.tussenprodukt]'....zonder dit produkt 0 oplossingen
gosub [EindProdukt]'.........zonder dit produkt 192 oplossingen
gosub [PrintScreen]

[lusj]'..........Zo is mijn oplossing.
next j'..........k=abcde...1e getal
[lusi]'..........m=fghij...2e getal zamen 10 verschillende cijfers
next i'............----- x vermenigvuldig
[lush]'............o=j*k...1e.tussenprodukt
next h'............p=i*k...2e.tussenprodukt
[lusg]'............q=h*k...3e.tussenprodukt
next g'............r=g*k...4e.tussenprodukt
[lusf]'............s=f*k...5e.tussenprodukt alle tussenprodukten zonder de extra nullen
next f'............----- + dit optellen niet doen !
[luse]'............n=k*m...Eindprodukt
next e
[lusd]
next d
[lusc]
next c
[lusb]
next b
next a
print time$()
end

[AlleGetallen]
k=a*10000+b*1000+c*100+d*10+e:m=f*10000+g*1000+h*100+i*10+j
o=j*k:p=i*k:q=h*k:r=g*k:s=f*k:n=k*m:return

[1e.tussenprodukt]
o$=str$(o):l=len(o$):for x=1 to l:o$(x)=mid$(o$,x,1):next x
for x=1 to l-1:for y=x+1 to l:if o$(x)=o$(y) then exit for
next y:if o$(x)=o$(y) then exit for
next x:if o$(x)=o$(y) then [lusj]
return

[2e.tussenprodukt]
p$=str$(p):l=len(p$):for x=1 to l:p$(x)=mid$(p$,x,1):next x
for x=1 to l-1:for y=x+1 to l:if p$(x)=p$(y) then exit for
next y:if p$(x)=p$(y) then exit for
next x:if p$(x)=p$(y) then [lusj]
return

[3e.tussenprodukt]
q$=str$(q):l=len(q$):for x=1 to l:q$(x)=mid$(q$,x,1):next x
for x=1 to l-1:for y=x+1 to l:if q$(x)=q$(y) then exit for
next y:if q$(x)=q$(y) then exit for
next x:if q$(x)=q$(y) then [lusj]
return

[4e.tussenprodukt]
r$=str$(r):l=len(r$):for x=1 to l:r$(x)=mid$(r$,x,1):next x
for x=1 to l-1:for y=x+1 to l:if r$(x)=r$(y) then exit for
next y:if r$(x)=r$(y) then exit for
next x:if r$(x)=r$(y) then [lusj]
return

[5e.tussenprodukt]
s$=str$(s):l=len(s$):for x=1 to l:s$(x)=mid$(s$,x,1):next x
for x=1 to l-1:for y=x+1 to l:if s$(x)=s$(y) then exit for
next y:if s$(x)=s$(y) then exit for
next x:if s$(x)=s$(y) then [lusj]
return

[EindProdukt]
n$=str$(n):l=len(n$):for x=1 to l:n$(x)=mid$(n$,x,1):next x
for x=1 to l-1:for y=x+1 to l:if n$(x)=n$(y) then exit for
next y:if n$(x)=n$(y) then exit for
next x:if n$(x)=n$(y) then [lusj]
return

[PrintScreen]
teller=teller + 1
print tab(20);k
print tab(20);m
print tab(20);o
print tab(19);p
print tab(18);q
print tab(17);r
print tab(16);s
print tab(15);n,"oplossing ";teller
print:return

'Er is géén uitkomst die voor alle 8 regels geld.
'Zet je om de beurd een Rem teken (') voor de gosub v/d
'tussen- of eind produkten dan zijn er wel oplossingen mogelijk.
'Graag commentaar op dit programma.
'Wie heeft een betere, snellere of eenvoudiger oplossing?
'Mijn bedoeling was het gebruik van een aantal statements en functies te laten zien.
'vr. gr. Herman
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am


Keer terug naar Uitdagingen en wedstrijden

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron