[ artriba @ 19.03.2008. 16:47 ] @
Snimit ću mobitelom debugiranje i stavit na YouTube.Vidjet će te 100% Javim se kad postavim. |
[ artriba @ 19.03.2008. 16:47 ] @
[ 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 == Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|