Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# 3.0 kompajler ne valja 100%!!!

[es] :: .NET :: .NET Desktop razvoj :: C# 3.0 kompajler ne valja 100%!!!

[ Pregleda: 533 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

artriba
Split

Član broj: 158342
Poruke: 109
*.adsl.net.t-com.hr.



Profil

icon C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 16:47

Snimit ću mobitelom debugiranje i stavit na YouTube.Vidjet će te 100% Javim se kad postavim.
19.03.2008. u 16:47 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1612
195.252.78.*



Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 16:51
?
A problem je?
▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
19.03.2008. u 16:51 

artriba
Split

Član broj: 158342
Poruke: 109
*.adsl.net.t-com.hr.



Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 17:00
Nemogu snimit nevidi se ništa na kameri mobitela.Uglavnom u jednoj for petlji evo djela koda
Code:
        for ( int j = 0; j < letters.Count; j++ )
        {
            if ( letters [ j ].ToString () == "!" )
            {
                inSidebracket += sign [ a ].ToString ();
                a++;
            }
            else
            {
                for ( int i = 0; i < extractLetters.Count; i++ )
                {
                    if ( letters [ j ] == extractLetters [ i ] )// u jednom trenutku iz neobjašnjivih razloga kad obe varijable imaju vrijednost 97 'a' program preskoči i ode...
                    {
                        if ( int.Parse ( powers [ j ].ToString () ) > int.Parse ( extractPowers [ i ].ToString () ) )
                        {
                            int p = ( int.Parse ( powers [ j ].ToString () ) - int.Parse ( extractPowers [ i ].ToString () ) );
                            inSidebracket += letters [ j ] + "^" + p.ToString ();
                        }
                        else
                        {
                            x++;
                        }
                    }
                    if ( x == extractLetters.Count  )// ovdje, ali samo jednom
                    {
                        inSidebracket += "1";
                        x = 0;
                    }
                }
            }
19.03.2008. u 17:00 

artriba
Split

Član broj: 158342
Poruke: 109
*.adsl.net.t-com.hr.



Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 17:06
Evo cijelog koda asp.net web site 1 button id = "Reduce" texbox1 i label1
Default.aspx.cs
Code:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Reduce_Click ( object sender, EventArgs e )
    {
        Label1.Text = "";
        ClassReduce obj = new ClassReduce ( TextBox1.Text );
        string a;
        a = obj.Calculate ();
        Label1.Text = a;
    }
}

ClassReduce.cs
Code:
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections;
using System.Text.RegularExpressions;

public class ClassReduce
{
    private string input;
    public ClassReduce( string input)
    {
        Input = input;
    }
    public string Input
    {
        get
        {
            return input;
        }
        set
        {
            input = value;
        }
    }
    public string Calculate ()
    {
        ArrayList parts = new ArrayList ();
        ArrayList sign = new ArrayList ();
        Regex regSign = new Regex ( @"(\+)|(-)" );
        MatchCollection matSign = regSign.Matches ( input );
        foreach ( Match obj in matSign )
            sign.Add ( obj.ToString() );
        if ( matSign [ 0 ].Index == 0 )
        {
            parts = this.SubstringParts ( input, matSign, parts );
        }
        else
        {
            string part = input.Substring ( 0, matSign [ 0 ].Index );
            parts.Add ( part );
            parts = this.SubstringParts ( input, matSign, parts );
        }
        ArrayList numbers = new ArrayList ();
        Regex regNumbers = new Regex ( "^[0-9]+" );
        Match matNumbers;
        foreach ( string obj in parts )
        {
            matNumbers = regNumbers.Match ( obj );
            if ( matNumbers.Success)
            {
                numbers.Add ( matNumbers.ToString () );
            }
            else
            {
                numbers.Add ( "1".ToString () );
            }
        }
        ArrayList lettersAndPowers = new ArrayList ();
        Regex regLetAndPow = new Regex ( @"([a-z]\^[0-9]+)|([a-z])" );
        MatchCollection matLetAndPow;
        foreach ( string obj in parts )
        {
            matLetAndPow = regLetAndPow.Matches ( obj );
            if ( matLetAndPow.Count > 0 )
            {
                foreach ( Match mObj in matLetAndPow )
                {
                    lettersAndPowers.Add ( mObj.ToString() );
                }
                lettersAndPowers.Add ( "!" );
            }
            
        }
        lettersAndPowers.RemoveAt ( lettersAndPowers.Count - 1 );
        ArrayList powers = new ArrayList ();
        ArrayList letters = new ArrayList ();
        Regex regPowers = new Regex ( "[0-9]+" );
        Match matPowers;
        foreach ( string obj in lettersAndPowers )
        {
            if ( obj == "!" )
            {
                letters.Add ( obj );
                powers.Add ( obj );
            }
            else
            {
                letters.Add ( obj [ 0 ] );
                matPowers = regPowers.Match ( obj );
                if ( matPowers.Success )
                    powers.Add ( matPowers.ToString () );
                else
                    powers.Add ( "1" );
            }
        }
        ArrayList extractLetters = new ArrayList ();
        ArrayList extractPowers = new ArrayList ();
        for ( int i = 0; i < letters.Count; i++ )
        {
            if ( !extractLetters.Contains ( letters [ i ] ) )
            {
                if ( letters [ i ].ToString() != "!" )
                {
                    extractLetters.Add ( letters [ i ] );
                    extractPowers.Add ( powers [ i ] );
                }
            }
            else
            {
                int index = extractLetters.IndexOf ( letters [ i ] );
                if ( int.Parse ( powers [ i ].ToString() ) < int.Parse ( extractPowers [ index ].ToString() ) )
                {
                    extractPowers [ index ] = powers [ i ];
                }
            }
        }
        string inSidebracket = "";
        int a = 0;
        if ( parts.Count == sign.Count )
        {
            inSidebracket += sign[a].ToString();
            a++;
        }
        int x = 0;
        for ( int j = 0; j < letters.Count; j++ )
        {
            if ( letters [ j ].ToString () == "!" )
            {
                inSidebracket += sign [ a ].ToString ();
                a++;
            }
            else
            {
                for ( int i = 0; i < extractLetters.Count; i++ )
                {
                    if ( letters [ j ] == extractLetters [ i ] )
                    {
                        if ( int.Parse ( powers [ j ].ToString () ) > int.Parse ( extractPowers [ i ].ToString () ) )
                        {
                            int p = ( int.Parse ( powers [ j ].ToString () ) - int.Parse ( extractPowers [ i ].ToString () ) );
                            inSidebracket += letters [ j ] + "^" + p.ToString ();
                        }
                        else
                        {
                            x++;
                        }
                    }
                    if ( x == extractLetters.Count  )
                    {
                        inSidebracket += "1";
                        x = 0;
                    }
                }
            }
        }
        ArrayList adrange = new ArrayList ();
        adrange.AddRange ( extractLetters );
        adrange.AddRange ( extractPowers );
        return inSidebracket;
    }

    public ArrayList SubstringParts ( string input, MatchCollection matSign, ArrayList parts )
    {
        int i = 0;
        string part;
        while ( i < matSign.Count )
        {
            if ( ( i + 1 ) == matSign.Count )
            {
                part = input.Substring ( matSign [ i ].Index + 1, ( input.Length - ( matSign [ i ].Index + 1 ) ) );
                parts.Add ( part );
                break;
            }
            part = input.Substring ( matSign [ i ].Index + 1, matSign [ i + 1 ].Index - ( matSign [ i ].Index + 1 ) );
            parts.Add ( part );
            i++;
        }
        return parts;
    }
}
19.03.2008. u 17:06 

bags
Đorđe Torbica
sIT Solutions, Erste Sparkasse
Vienna, Doboj, Zemun

Član broj: 10072
Poruke: 612
*.12.15.tuwien.teleweb.at.

Jabber: bags84@elitesecurity.org
ICQ: 224667189
Sajt: sledecastanica.wordpress...


Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 17:06
Bravo , upravo si otkrio veliki bug. :)

Probaj sa equals() umjesto sa == porediti. ;)

Code:
  if ( letters[j].Equals(extractLetters[i]) )

while ( ! ( succeed = try() ) );
19.03.2008. u 17:06 

artriba
Split

Član broj: 158342
Poruke: 109
*.adsl.net.t-com.hr.



Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 17:13
Jebe* stavija sam obe varijable .toString() i onda je normalno radia.Ali čudno samo jednom je preskočio if blok :)
19.03.2008. u 17:13 

bags
Đorđe Torbica
sIT Solutions, Erste Sparkasse
Vienna, Doboj, Zemun

Član broj: 10072
Poruke: 612
*.12.15.tuwien.teleweb.at.

Jabber: bags84@elitesecurity.org
ICQ: 224667189
Sajt: sledecastanica.wordpress...


Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 17:16
Sa operatorom == se porede reference a ne objekte!



while ( ! ( succeed = try() ) );
19.03.2008. u 17:16 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1612
195.252.78.*



Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 17:18
Ne mora da znaci, kad se porede stringovi == operator je overloadovan da poredi po sadrzaju, ne po referenci. Ako ne uhvatite bu, probacu ja sutra, sad sam u guzvi za ovu vrstu gimnastike.

Al mozda je tu i problem, ArrayList drzi object tipove, samim tim verovatno ne koristi stringov overloadovani operater vec samo poredi po referenci. Probaj da umesto ArrayList koristis List<string> generic, onda ce List<string>[] item koristiti stringov ==
▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
19.03.2008. u 17:18 

[es] :: .NET :: .NET Desktop razvoj :: C# 3.0 kompajler ne valja 100%!!!

[ Pregleda: 533 | Odgovora: 7 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.