Visual basic - palindrom

poruka: 17
|
čitano: 9.970
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
offline
Visual basic - palindrom

dakle treba mi pomoc, makar smjernice neke kako u visual basicu napraviti:

1.program koji provjerava dali je rijec palindrom (rijec koja ima prvo i zadnje slovo isto npr ana, oko, neven itd...

rijec bi zapisao u varijablu tipa string i sad trebam provjerit dali je zadnje slovo jednako prvome...

moze mi netko za pocetak rec makar dali postoji kakva naredba koja provjerava koliko je slova u stringu kao sta je npr kod polja xxxx.lenght ??

2. trebam napraviti program koji ce usporedivat dvije rijeci prema duzini, znaci opet mi treba provjera duljine stringa (barem mislim da mi treba) ?

 

 

edit: dali u visual basicu postoji naredba koja okrece rijec ? tj da npr u jedan string upisem abcde i u drugi string upisem to isto ali edcba kao sta mozemo kod sortiranja i onda samo usporedim ta 2 stringa... 

 

Poruka je uređivana zadnji put sub 4.6.2011 18:32 (hyko).
 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

Evo kako bi izgledala provjera da li je rečenica palindrom u C#:

 

 

static bool Palindrom(string recenica)
        {
          
            StringBuilder recenicaBezRazmaka = new StringBuilder();
          
            for (int i = 0; i < recenica.Length; i++)
            {
                if(recenica[i].CompareTo(' ') != 0)
                {
                    recenicaBezRazmaka.Append(recenica[i]);
                }
            }
            string recenicaNova = recenicaBezRazmaka.ToString().ToLower();
         
            for (int i = 0; i < recenicaNova.Length / 2; i++)
            {
                if (recenicaNova[recenicaNova.Length - 1 - i] != recenicaNova[i])
                {
                    return false;
                }
            }
            return true;
        }
Da bi se provjera uspješno izvršila potrebno je:

1. eliminirati razmake

2. prikazati cijelu rečenicu npr. malim slovima - možemo i velikim

3. ključna je petlja koja pregledava rečenicu do pola tako da uspoređuje "suprotne" pozicije - prvo slovo sa zadnjim, drugo sa predzadnjim itd. :

for (int i = 0; i < recenicaNova.Length / 2; i++)
            {
                if (recenicaNova[recenicaNova.Length - 1 - i] != recenicaNova[i])

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Visual basic - palindrom

1. Ovakav program je definitivno moguće napraviti u VB-u, samo si trebao napisati koju verziju VB-a koristiš jer postoje razlike (koje u nekim slučajevima nisu male) između npr. VB6 i VB 2008. Jedno od rešenja može izgledati ovako:

Ako će program biti poput Text Editora trebat će ti petlja koja će se vrtiti dok nije ispunjen uslov za kraj riječi (npr. pririsnuta je tipka SPACEBAR)

koristeći KeyPress i KeyDown događaje.

unutar petlje smjestiš varijablu tipa char koja će prihvatati znak koji korisnik upiše,

zatim van ove petlje deklarišeš varijablu tipa string u koji ćeš upisivati svaki znak iz varijable ch.

 

Nakon toga iz varijable tipa string u neku varijablu tipa char učitaš prvi karakter čiji je index uvijek nula,

a u drugu  char varijablu učitaš poslednji znak čiji ćeš index saznati ako od dužine stinga oduzmeš jedan

npr.

dim rijec as String

dim i as integer

i=rijec.legth-1

 

ovo možeš riješiti i deklarisanjem polja tipa char u koje ćeš upisivati znakove (putem char varijable) ili iz string varijable putem svojstva ToCharArray (mislim da postoji za varijable tipa string iako nisam potpuno siguran).

 

Ostalo je lako ako su dvije char varijable iste dobio si traženu riječ.

 

2. Kao što sam naveo imaš svojstvo Legth String varijable pomoći kojeg saznaješ broj karaktera unešenih u string varijablu.

 

Ovo što sam ja naveo je samo jedno od mogućih rešenja, nisam ti pisao kod to prepuštam tebi...

16 godina
offline
Visual basic - palindrom

evo ovaj prvi sam uspio rijesit ali na puno laksi nacin posto postoji naredba StrReverse :)

naredba promjeni redosljed slova u stringu (abcd - dcba), i onda sam usporedio prvi i drugi string i ako su isti onda izbaci poruku da je palindrom ako se ne poklapaju da nije i naravnno prvo sve stavio u velika ili mala slova...

 

drugi dio sam rijesio pomocu naredbe len koja vraca broj znakova u stringu i onda jednostavno usporedio ta 2 stringa

 

sada jos imam pitanje vezano za drugi dio zadatka kad sam nasao dulju rijec treba slova unutar rijeci rasporediti prema abecedi...

dali i za to postoji neka funkcija (koliko sam nesto trazio cini mi se da bi trebala postajat) a ako ne drugi nacin bi bio usporedivat asci kodove znakova unutar rijeci, ali pak u toj situaciji neznam kako dobit ascii kodove svakog slova tj znam iskoristit funkciju koja daje ascii kod iz znaka ali kad ju upotrijebim na rijec vraca mi ascii samo prvog slova ...

 

edit: koristim VB 2008 verziju...

Lenovo L220x, C2D E6600,zalman 9500LED, asus striker extreme, 4GB mushkin redline DDR2 1000, coolermaster stacker 831, BFG gtx 260 maxcore oc , samsung F1 spinpoint 1TB.
Poruka je uređivana zadnji put sub 4.6.2011 20:48 (hyko).
 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

Kako ti može raditi Reverse metod za ovo:

 

ana voli milovana

anavolim ilov ana

 

 

 

Kad ih usporediš ti strngovi nisu isti - mada ta rečenica jest palindrom,

tj. Revese metod možeš primjeniti samo za jednu riječ ako tražiš palindrom, svejedno moraš eliminirati razmake.

Poruka je uređivana zadnji put sub 4.6.2011 21:55 (Floki).
 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

zadatak je bio vezan za rijeci a ne recenice...

Lenovo L220x, C2D E6600,zalman 9500LED, asus striker extreme, 4GB mushkin redline DDR2 1000, coolermaster stacker 831, BFG gtx 260 maxcore oc , samsung F1 spinpoint 1TB.
 
0 0 hvala 0
16 godina
offline
Re: Visual basic - palindrom
hyko kaže...

zadatak je bio vezan za rijeci a ne recenice...

Ok, al kad je bal, nek je  maskenbal, napišeš metod za provjeru palindroma što god da ubaciš{#}

Poruka je uređivana zadnji put sub 4.6.2011 22:02 (Floki).
16 godina
offline
Visual basic - palindrom

istina slazem se a to cu danas i napravit za vjezbu :) al u slucaju da se trazi onako onda nema potrebe komplicirat...

Lenovo L220x, C2D E6600,zalman 9500LED, asus striker extreme, 4GB mushkin redline DDR2 1000, coolermaster stacker 831, BFG gtx 260 maxcore oc , samsung F1 spinpoint 1TB.
 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

Npr. uzmeš sve moguće kombinacije unosa znakova u string uključujući razmak i interpunkciju.

Zadaš sebi da napraviš program koji može ispitati ovaj palindrom:

Mišu pita Dara: "Da ti pušim?"

Cilj je jasan - ne dozvoliš korisniku programa da pazi na formu unosa - što god on unio dobija se string sa malim slovima i brojevima koji zatim ide na provjeru.

Da tako ne postaviš stvari - ako bi korsnik unio rečenicu Ana voli Milovana. - program bi izbacio da nije palindrom - a korisnik programa nije napravio grešku -

samo je napisao točku na kraju rečenice.

 

 

static bool Palindrom(string recenica)
        {
            string novi = "";


            foreach (char znak in recenica)
            {
                if(char.IsLetterOrDigit(znak))
                {
                    novi += znak;
                }

            }
            novi = novi.ToLower();
         
            for (int i = 0; i < novi.Length / 2; i++)
            {
                if (novi[novi.Length - 1 - i] != novi[i])
                {
                    return false;
                }
            }
            return true;
        }

 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

sada sam imao ovakav zadatak: treba sortirati slova neke rijeci po abecedi... ok to stavim string u char i pomocu array.sort sortiram to polje i ispisem ali sad bi trebao ispisat koliko se puta javljaju odredena slova znaci

a - 1

b - 1

c - 2

 

s time da onih slova koje nema nesmiju biti ispisani (d - 0 - to ne ! )...

 

pa ako mozete dat kakve smjernice i oko toga :)

 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

moze netko provjerit sta ne valja ovdje ?

 

Public Class Form1

    Private Sub btnOkreni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOkreni.Click
        Dim a As String
        Dim b() As Char
        Dim c() As Char
        Dim i As Integer


        a = txtUnos.Text

        a = LCase(a)
        b = a


        For i = 0 To b.Length
            If b(i) <> " " Then c(i) = b(i)
            i = i + 1
        Next


    End Sub
End Class

 

dakle ocu polje b prepisat u polje c bez razmaka i problem je u tome sta mi stavlja worning ispod c i kaze : Variable 'c' is used before it has been assigned a value. A null reference exception could result at runtime.

Poruka je uređivana zadnji put pet 10.6.2011 13:42 (hyko).
 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

Deklarirao se c char array da ima nula članova , odnosno null vrijednost - i zato ne radi

Međutim ta greška nije jedina, ništa nećeš postići sa dodjelom c(i) = b(i) čak i kad odrediš da c char niz ima duljinu b char niza.

To je jednostavnije napraviti uvođenjem još jednog string niza nego baratati sa char nizovima.

I u inkrementu petlje si napravio grešku.

Ovo bi bio ispravan kod:

 

 

Module Module1

    Sub Main()

        Dim A As String
        Dim B As String
        Dim i As Integer



        A = "Primjer zadatka za dobijanje stringa bez razmaka"
        A = LCase(A)
        B = ""



        For i = 0 To A.Length - 1
            If A(i) <> " "c Then
                B = B + A(i)

            End If

        Next


        Console.WriteLine(B)



    End Sub

End Module

Poruka je uređivana zadnji put sub 11.6.2011 21:02 (Floki).
 
0 0 hvala 0
16 godina
offline
Visual basic - palindrom

ovaj tvoj program baca identicnu gresku ko i onaj moj prije samo sada to baca na b = b + 1

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Visual basic - palindrom
hyko kaže...

        For i = 0 To b.Length
            If b(i) <> " " Then c(i) = b(i)
            i = i + 1
        Next

For i=1 to Len(b)

If Mid(b, i, 1) <> " " Then c= c & Mid(b, i, 1)

i=i+1

Next

 

 

Poruka je uređivana zadnji put ned 12.6.2011 20:55 (bed).
16 godina
offline
Re: Visual basic - palindrom
hyko kaže...

ovaj tvoj program baca identicnu gresku ko i onaj moj prije samo sada to baca na b = b + 1

O čemu ti pričaš, ajde unesi u compiler, 

kod mog programa su stvari jasne -

ako je pozicija različita od razmaka - nadopunjava se niz 

 

Duljina prvog niza je 48, dakle petlja se šeta od 0-47 pozicije i vrši se konkatenacija drugog niza,

a veičina niza B uopće nije važna - to je prednost string nizova - pošto ih možemo nadopunjavati konkatenacijom,

duljinu niza kojeg trebamo dobiti ne moramo odrediti unaprijed.

Ako ćemo baš tjerati mak na konac - vidimo da je duljina niza B 42 - duljina niza A umanjeno za 6 razmaka.

 

btw. u VB-u se petlja postavlja ovako:

 

 For i = 0 To 10

       Console.Write("{0} ", i)

     Next

To je ispis svih brojeva 0-10 sa inkrementom 1

 

 

Poruka je uređivana zadnji put pon 13.6.2011 13:08 (Floki).
16 godina
offline
Visual basic - palindrom

{#} radi ocito sam prosli put nesto krivo kopirao kad sam isprobavao :)

 
0 0 hvala 0
16 godina
offline
Re: Visual basic - palindrom
hyko kaže...

{#} radi ocito sam prosli put nesto krivo kopirao kad sam isprobavao :)

Ma sve 5 - bit je da skužiš rad petlje i način da nadovezivanjem možeš formirati string niz.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice