VB.NET - do-while za brojeve između 547 i 7000

poruka: 11
|
čitano: 5.693
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Pomoc: Zadatak u VB.NET

Početnik sam u programiranju pa ako je zadatak smjesan pokusajte me razumjeti:D

Neznam rijesit ovaj zadatak:

Napiši Do While ... Loop petlju koja ispisuje sve brojeve između 547 i 7000 kojima je zadnja znamenka 5.


Ako netko zna rijesit bio bi mu puno zahvalan!

Pozz

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Pomoc: Zadatak u VB.NET

trik je vidjeti koji su to zapravo brojevi i koliko se često pojavljuju. ako kreeš od 547, sljedeći koji završava na 5 je 555, i nakon njega samo ideš dalje korakom od 10, znači 565, 575, itd. sad hoćeš li to zbrajati u neku varijablu pa ispisivati ili ćeš realizirati na neki drugi način, na tebi je.

 

također možeš za svaki broj između ta dva provjeravati zavrava li na 5 te ga ispisati ako završava. znači za to bi ti uvjeti bili da je djeljiv sa 5, ali ne i sa 10, jer ako je djeljiv sa 10, znači da je djeljiv i sa 5, ali tu onda ulaze i destice, odnosno brojevi koji završavaju na 0, a to se ne traži.

 

rado bi ti napisao i čitav kod, ali davno sam radio u VBu pa se ne mogu sad prisjetiti svega. a i nemam instaliran visual basic .NET na laptopu trenutno pa ne mogu ni pokušati nešto iskemijati.

 

rješenje ti je tu, samo ga moraš pretočiti u kod.

17 godina
offline
Pomoc: Zadatak u VB.NET

int prvi = 547;

int zbroj = prvi % 10;

if(zbroj > 5)

{

       zbroj = 15 - zbroj;

}

else if(zbroj < 5)

{

    zbroj = 5 - zbroj;   

}

else

{

      zbroj = 0;

}

 

prvi = prvi + zbroj;

 

Bitno je dobti prvi broj koji ćemo u petlji inkementirati za 10, kako reče kolega pitagora.

sada samo kroz do-while petlju provučemo varijablu prvi koju inkrementiramo za 10 i ispisujemo brojeve do uvjeta petlje

Manje bitno, koji jezik, pokušaj napisati ovaj algoritam, a neki VB-ovac će ti pomoći oko sintakse.

Poruka je uređivana zadnji put čet 27.10.2011 16:22 (Floki).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Pomoc: Zadatak u VB.NET

Muci me to kako rijesit preko Do While petlje..nakon par sat pokusavanja nisam uspio..rijesio sam kad preko For petlje ali ovo sam Do whille...Loop nekuzim...AAAA

 

Module _7
    Sub main()
        Dim i As Integer
        For i = 547 To 3000
            If i Mod 10 = 5 Then
                Console.WriteLine(i)
            End If
        Next
        Console.ReadLine()
    End Sub
End Module

Poruka je uređivana zadnji put čet 27.10.2011 22:45 (Huco23).
17 godina
neaktivan
offline
VB.NET - do-while za brojeve između 547 i 7000

        Dim i As Integer = 547
        Do While i <= 3000
            If i Mod 10 = 5 Then
                Console.WriteLine(i)
            End If
            i = i + 1
        Loop

 

Moj PC  
0 0 hvala 1
13 godina
neaktivan
offline
Re: VB.NET - do-while za brojeve između 547 i 7000

Hvala!

17 godina
offline
VB.NET - do-while za brojeve između 547 i 7000

Da, samo ima jedan nedostatak, računa mod i vrši provjeru za sve brojeve u nizu, a to je nepotreban posao, izbjeći, pogotovo kod ovakvih velikih raspona.

Poruka je uređivana zadnji put pet 28.10.2011 12:32 (Floki).
 
0 0 hvala 0
13 godina
neaktivan
offline
VB.NET - do-while za brojeve između 547 i 7000

Dim i As Integer = 547
        Do While i <= 3000
           If i Mod 5 = 0 Then
                Console.WriteLine(i)
            End If
            i = i + 1
        Loop


Može i uvjet sa modulo 5 jednako 0.

 

Floki dobro predlaže.

Jedno rješenje:

vrtio while loop dok ne dođemo do broja djeljivog sa pet i onda vrtio for petlju sa inkrementom za 5.

 
0 0 hvala 0
17 godina
offline
VB.NET - do-while za brojeve između 547 i 7000

@ever

tu imaš nedostatak, 10 % 5 = 0

a brojevi sa 0 ne trebaju

prvi sljedeći broj od donje granice zadanog raspona koji završava sa 5 nađemo izvan petlje, s njim vrtimo petlju koju inkrementiramo za 10

Poruka je uređivana zadnji put pet 28.10.2011 13:13 (Floki).
 
0 0 hvala 0
16 godina
offline
Re: VB.NET - do-while za brojeve između 547 i 7000
nadimak888 kaže...

        Dim i As Integer = 547
        Do While i <= 3000
            If i Mod 10 = 5 Then
                Console.WriteLine(i)
            End If
            i = i + 1
        Loop

 

-gornje rješenje je točno za konkretan zadatak. Upravo onako kako je zadano.

-primjer lošeg rješenja (uz ispriku, NHF.. ) jer cilj je učenje ('pravilnijeg'?) pisanja čistog, ne prljavog koda. 

ever kaže...

Dim i As Integer = 547
        Do While i <= 3000
           If i Mod 5 = 0 Then
                Console.WriteLine(i)
            End If
            i = i + 1
        Loop


Može i uvjet sa modulo 5 jednako 0.

 

Floki dobro predlaže.

Jedno rješenje:

vrtio while loop dok ne dođemo do broja djeljivog sa pet i onda vrtio for petlju sa inkrementom za 5.

-ne, 10 mod 5 ? .. zadatak, samo za 5ice. Drugačije rješenje bi bilo trimanje right$ stringa-znamenke. Mod je brži za ovaj primjer.

-nepotrebno bi bilo korištenje dvije petlje, ''petljanje''. KISS osigurava čistoću koda, greške, održavanje.. pa i brzinu i količinu resursa (ako bi bilo bitno).

-zadatak je za vježbu, učenje, ne za krpanje po sistemu 'good enough'. Upravo zato ne treba koristiti for-next ili step (koji bi skratio broj iteracija za x5).

 

Pošto je autor napravio OK rješenje s For-nextom, samo treba prihvatiti (razumjeti) kako i kada korsititi koju od while-until tih petlji.

Osnova im je jednaka (osim što next uvečava brojač za step, dok while-until mora biti ručno..), kao i provjere na top-bottom, koju for-next nema.

- pošto se može koristiti i exit loop, moguće je napraviti manje-više s bilo kojom petljom, ali ponovo, smanjiti 'petljanje' je pravo učenje. Optimizacije su idući korak..

 

primjer: koji je praktički identičan gornjem.

        Dim i As Integer = 547
        Do 
            If i Mod 10 = 5 Then
                Console.WriteLine(i)
            End If
            i = i + 1
        Loop Until i > 3000 //OR// while i < 3001

vb-Loop.

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
17 godina
offline
VB.NET - do-while za brojeve između 547 i 7000

to je ispravna sintaksa , np

međutim u primjeni na ovaj zadatak znači "ubio vola radi jednog odreska"

Poruka je uređivana zadnji put pet 28.10.2011 13:34 (Floki).
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice