[ artriba @ 19.03.2008. 16:47 ] @
Snimit ću mobitelom debugiranje i stavit na YouTube.Vidjet će te 100% Javim se kad postavim.
[ mmix @ 19.03.2008. 16:51 ] @
?
A problem je?
[ artriba @ 19.03.2008. 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;
                    }
                }
            }
[ artriba @ 19.03.2008. 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;
    }
}
[ bags @ 19.03.2008. 17:06 ] @
Bravo , upravo si otkrio veliki bug. :)

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

Code:
  if ( letters[j].Equals(extractLetters[i]) )
[ artriba @ 19.03.2008. 17:13 ] @
Jebe* stavija sam obe varijable .toString() i onda je normalno radia.Ali čudno samo jednom je preskočio if blok :)
[ bags @ 19.03.2008. 17:16 ] @
Sa operatorom == se porede reference a ne objekte!


[ mmix @ 19.03.2008. 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 ==