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: 1989 | Odgovora: 7 ] > FB > Twit

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 - pre 196 meseci
Snimit ću mobitelom debugiranje i stavit na YouTube.Vidjet će te 100% Javim se kad postavim.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 16:51 - pre 196 meseci
?
A problem je?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

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 - pre 196 meseci
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;
                    }
                }
            }
 
Odgovor na temu

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 - pre 196 meseci
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;
    }
}
 
Odgovor na temu

bags

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



+2 Profil

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

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

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

Free advice is seldom cheap.
 
Odgovor na temu

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 - pre 196 meseci
Jebe* stavija sam obe varijable .toString() i onda je normalno radia.Ali čudno samo jednom je preskočio if blok :)
 
Odgovor na temu

bags

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



+2 Profil

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



Free advice is seldom cheap.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C# 3.0 kompajler ne valja 100%!!!19.03.2008. u 17:18 - pre 196 meseci
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 ==
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

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

[ Pregleda: 1989 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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