Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem.

  • 12 odgovora
  • 5.873 pregleda

Najnovija ↓

Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem. 10.12.2006. u 12:32 · pre 242 meseca
izmenjeno 1 put, poslednji put Shadowed 10.12.2006. u 13:35
  1. Shadowed10.12.2006. u 13:35zapis iz teksta poruke
#1
Ja sam pocetnik u C#,radim po nekoj knjizi za pocetnike,ali sam naisao na kod koji nije dobro napisan,pa kada ga ja napisem nece da radi.Ko se malo bolje razume u C# lako ce proljuviti o cemu se radi.Naim e imam jednu biblioteki klase i klijentsku aplikaciju koja bi trebalo sa njom da sporeduje,ali to neradi.Molio bih iskusnije [programere koji ma je ovo boza da mi nadju gresku u kodu i pomognu.


Code:
using System;
namespace Ch10CardLib
{
    public enum Suit
    {
        Club,
        Diamond,
        Heart,
        Spade
    }
    public enum Rank
    {
        Ace=1,
        Deuce,
        Three,
        Four,
        Six,
        Seven,
        Eight,
        Nine,
        Ten,
        Jack,
        Queen,
        King
    }
    public class Card
    {
        public readonly Suit suit;
        public readonly Rank rank;
    }
    public override string ToString()
{
    return "The" +rank+ " of " +suit+ "s";
}
    private Card()
{
}
    public Card(Suit newSuit,Rank newRank)
{
    suit=newSuit;
    rank=newRank;
}
}using System;

namespace Ch10CardLib
{
    
    public class Deck
    {
        private Card[] cards;
        public Deck()
        {
            cards=new Card[52];
            for (int suitVal=0;suitVal<4;suitVal++)
            {
                for (int rankVal=1;rankVal<14;rankVal++)
                {
                    cards[suitVal*13+rankVal-1]=new Card[(Suit)suitVal,(Rank)rankVal];
                }
            }
        }
        public Card GetCard(int cardNum)
        {
            if (cardNum>=0&& cardNum<=51)
                return cards[cardNum];
            else
                throw (new System.ArgumentOutOfRangeException("cardNum",cardNum,"Value must be between 0 and 51."));
        }
        public void Shuffle()
        {
            Card[] newDeck=new Card[52];
            bool[] assigned=new bool[52];
            for (int i=0;i<52;i++)
            {
                int destCard=0;
                bool foundCard=false;
                Random sourceGen=new Random();
                while (foundCard==false)
                {
                    destCard=sourceGen.Next(52);
                    if (assigned[destCard]==false)
                        foundCard=true;
                }
                assigned[destCard]=true;
                newDeck[destCard]=cards[i];
            }
            cards=newDeck;
        }
    }
}using System;

namespace Ch10CardClient
{
    
    class Class1
    {
        
        static void Main(string[] args)
        {
            Deck myDeck=new Deck();
            myDeck.Shuffle();
            for (int i=0;i<52;i++)
            {
                Card tempCard=myDeck.GetCard(i);
                Console.WriteLine(tempCard.ToString());
                if (i !=51)
                    Console.Write(",");
                else
                    Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}


[Shadowed: dodati [code] tagovi.]
Re: Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem. 10.12.2006. u 18:50 · pre 242 meseca #3
Code:

...
    public class Card
    {
        public readonly Suit suit;
        public readonly Rank rank;
    }
    public override string ToString()
   {
    return "The" +rank+ " of " +suit+ "s";
   }
    private Card()
  {
   }
    public Card(Suit newSuit,Rank newRank)
  {
    suit=newSuit;
    rank=newRank;
   }
...


Ne mozes da definises metode a naravno ni konstruktore van klase ... znaci treba da se ispravi kod iznad u

Code:

...
    public class Card
    {
        public readonly Suit suit;
        public readonly Rank rank;
        public override string ToString()
        {
           return "The" +rank+ " of " +suit+ "s";
        }
        private Card()
       {
       }
       public Card(Suit newSuit,Rank newRank)
      {
        suit=newSuit;
        rank=newRank;
      }
  }
...

Re: Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem. 10.12.2006. u 21:40 · pre 242 meseca
izmenjeno 1 put, poslednji put Shadowed 11.12.2006. u 01:18
  1. Shadowed11.12.2006. u 01:18zapis iz teksta poruke
#4
Hvala na odgovoru upravu ste za deo koda u biblioteci klase,ali mi i dalje pojavljuje greske u konzolnij aplikaciji koja koristi biblioteku tipa:

C:\BegCSharp\Chapter9\Ch10CardLib\Deck.cs(16): Cannot implicitly convert type 'Ch10CardLib.Suit' to 'int'
C:\BegCSharp\Chapter9\Ch10CardLib\Deck.cs(16): Cannot implicitly convert type 'Ch10CardLib.Rank' to 'int'
C:\BegCSharp\Chapter9\Ch10CardLib\Deck.cs(16): Cannot implicitly convert type 'Ch10CardLib.Card[*,*]' to 'Ch10CardLib.Card'
C:\BegCSharp\Chapter9\Ch10CardClient\Class1.cs(15): The type or namespace name 'Card' could not be found (are you missing a using directive or an assembly reference?)
C:\BegCSharp\Chapter9\Ch10CardClient\Class1.cs(16): The type or namespace name 'tempCard' could not be found (are you missing a using directive or an assembly reference?)
C:\BegCSharp\Chapter9\Ch10CardClient\Class1.cs(12): The type or namespace name 'myDeck' could not be found (are you missing a using directive or an assembly reference?)
C:\BegCSharp\Chapter9\Ch10CardClient\Class1.cs(11): The type or namespace name 'Deck' could not be found (are you missing a using directive or an assembly reference?)

Sto ih nevidi kada sam lepo stavio referencu na biblioteku bas kako je u knjizi!Ajde i ovo mi resite,to je za vas igracka.

[Shadowed: Uklonjeno sarenilo. Obrati paznju na pravilnik.]
Re: Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem. 11.12.2006. u 00:50 · pre 242 meseca #5
Pa kao prvo, ako si pocetnik u C#-u nisi pocetnik u kucanju. Sto je u ovom slucaju i tvoj ceo problem,elem, zameni ovo
Code:

public Deck()
        {
            cards = new Card[52];
            for (int suitVal = 0; suitVal < 4; suitVal++)
            {
                for (int rankVal = 1; rankVal < 14; rankVal++)
                {
                   cards[suitVal * 13 + rankVal - 1] = new Card[(Suit)suitVal, (Rank)rankVal];
                }
            }

sa ovim
Code:

public Deck()
        {
            cards = new Card[52];
            for (int suitVal = 0; suitVal < 4; suitVal++)
            {
                for (int rankVal = 1; rankVal < 14; rankVal++)
                {
                   cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal, (Rank)rankVal);
                }
            }

Razlika je u zagradama. U ti si pokusao da definises clan niza Card[], a ustvari je bilo potrebno instancirati klasu Card, pomocu Custom konstruktora "public Card(Suit newSuit, Rank newRank)"

A sto se tice gresaka u Deck.cs,pored reference dodaj i na pocetku klase "using Ch10CardClient" i sve ce ti raditi OK :)

P.S Drugi put dobro proveri kako si sta napisao, mozda je tebi svejedno ali compaileru nije ;)
Potpis
Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown
Re: Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem. 11.12.2006. u 00:59 · pre 242 meseca #6
A mozes i ovako :
Code:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program                               //Program koji koristi dole navedene klase
    {
        static void Main(string[] args)
        {
            Deck myDeck = new Deck();
            myDeck.Shuffle();
            for (int i = 0; i < 52; i++)
            {
                Card tempCard = myDeck.GetCard(i);
                Console.WriteLine(tempCard.ToString());
                if (i != 51)
                    Console.Write(",");
                else
                    Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
    public enum Suit                        //Enumerator znaka
    {
        Club,
        Diamond,
        Heart,
        Spade
    }
    public enum Rank                        //Enumerator karte
    {
        Ace=1,
        Deuce,
        Three,
        Four,
        Six,
        Seven,
        Eight,
        Nine,
        Ten,
        Jack,
        Queen,
        King
    }
    public class Card                       //klasa Karta
    {
        public readonly Suit suit;
        public readonly Rank rank;
        public override string ToString()
        {
            return "The" + rank + " of " + suit + "s";
        }
        private Card()   //konstruktor klase Karta
        {
        }
        public Card(Suit newSuit, Rank newRank) //Custom konstruktor klase Karta
        {
            suit = newSuit;
            rank = newRank;
        }
    }
    public class Deck                       //klasa Spil
    {
        private Card[] cards;
        public Deck()                       //konstruktor klase Spil
        {
            cards = new Card[52];
            for (int suitVal = 0; suitVal < 4; suitVal++)
            {
                for (int rankVal = 1; rankVal < 14; rankVal++)
                {
                    cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal, (Rank)rankVal);
                }
            }
        }
        public Card GetCard(int cardNum)               
        {
            if (cardNum >= 0 && cardNum <= 51)
                return cards[cardNum];
            else
                throw (new System.ArgumentOutOfRangeException("cardNum", cardNum, "Value must be between 0 and 51."));
        }
        public void Shuffle()                           //metod Mesanje
        {
            Card[] newDeck = new Card[52];
            bool[] assigned = new bool[52];
            for (int i = 0; i < 52; i++)
            {
                int destCard = 0;
                bool foundCard = false;
                Random sourceGen = new Random();
                while (foundCard == false)
                {
                    destCard = sourceGen.Next(52);
                    if (assigned[destCard] == false)
                        foundCard = true;
                }
                assigned[destCard] = true;
                newDeck[destCard] = cards[i];
            }
            cards = newDeck;
        }
    }

}


Sve ovo kopiraj u Program.cs i radice. Mada mnogo je bolje imati zasebne file-ove za svaku klasu :)
Potpis
Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown
Re: Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem. 11.12.2006. u 17:04 · pre 242 meseca #7
Hvala batice u pravu si.Neznam kako to nisam video???Mada je tako napisano u knjizi,nema using Ch10CardLib .A ja sam jos uvekipocetnik.
Hvala Veliki Manitu.
Mada mi i dalje tekst ispisuje vertikalno,a ne po celoj sirini prozora komandnog promta,kako je u knjizi.To cu sam da prokljuvim.Kako covek da nauci kad ima gresaka i u ovim knjigama za pocetnike?
Re: Pomagajte,ko je dobar sa C# mogao bi mi pomoci,ovde imam kod i problem. 13.12.2006. u 18:28 · pre 242 meseca #11
Slazem se da nije najbolja,ali je ovo Cet-ovo izdanje jedno od najboljih koje sam ja nasao na nasem jeziku.Verovatno ima boljih izdanja za pocetnike na engleskom.Mada sam mislio posto je to nova oblast za mene da bi bilo bolje da osnove steknem na iz nasih knjiga,pa cu posle lako kada sam vec u materiji usavrsavati se iz strane literature.Izgleda da sam se presao jer sam i ja poceo da primecujem krupne greske.Nekada sam zbog njih gubio dane da nesto skapiram posto je delovalo totalno nelogicno,da nisam mogao da nadjem smisao.Ako znas neku dobri knjigu za pocetnike,ti kazi da je nadjemo ili je posalji ako je imas u elektronskom formatu.CAO!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme