Francisco14 0 Posted July 6, 2015 Report Share Posted July 6, 2015 Boa Tarde precisava de ajuda para a correcção de um erro no meu programa. Obrigado. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Projeto_Final { class Program { enum Clubes { SLB = 1, FCP = 2, SCP = 3 } enum Pontuacao { Derrota = 1, Empate = 2, Vitoria = 3 } public struct Jogo { // Variáveis de Instante private string NumEquipa; private string EquipaAdversaria; private string Resultado; // Variável Estática public static int ContaNumJogos; // Construtor public Jogo(string NumEquipa, string EquipaAdversaria, string Resultado) { this.NumEquipa = NumEquipa; this.EquipaAdversaria = EquipaAdversaria; this.Resultado = Resultado; ContaNumJogos++; } // Acessor public void SetResultado(string NewResultado) { this.Resultado = NewResultado; } public string GetResultado() { return Resultado; } public void SetEquipa1(string NewEquipa1) { this.NumEquipa = NewEquipa1; } public string GetEquipa1() { return NumEquipa; } public void SetEquipa2(string NewEquipa2) { this.EquipaAdversaria = NewEquipa2; } public string GetEquipa2() { return EquipaAdversaria; } } //o array está todo preenchido public static int PrimeiraPosicaoVazia(Jogo[] jogos) { for (int i = 0; i < jogos.Length; i++) { if (jogos[i].GetResultado() == null) return i; } return -999; } //não encontrou o resultado public static int PosicaoResultado(Jogo[] jogos, string resultado) { for (int i = 0; i < jogos.Length; i++) { if (jogos[i].GetResultado() == resultado) return i; } return -999; } public static void Save(Jogo[] jogos) { StreamWriter sw = new StreamWriter(@"c:\pasta\Torneio.txt", false); for (int i = 0; i < jogos.Length; i++) { if (jogos[i].GetResultado() != null) { sw.WriteLine(jogos[i].GetResultado()); } } sw.Close(); } public static Jogo[] Load() { Jogo[] jogos = new Jogo[10]; StreamReader sr = new StreamReader(@"c:\pasta\Torneio.txt"); int contaPos = 0; while (!sr.EndOfStream) { string linha = sr.ReadLine(); string[] x = linha.Split(','); string resultado = x[0]; Jogo a = new Jogo(resultado); // <-----------ERRO jogos[contaPos] = a; contaPos++; } sr.Close(); return jogos; } public static void MostrarResultados(Jogo[] jogos) { for (int i = 0; i < jogos.Length; i++) { if (jogos[i].GetResultado() != null) Console.WriteLine(jogos[i].GetResultado()); } } static void Main(string[] args) { Console.Title = "Torneio"; Jogo[] jogos0 = Load(); MostrarResultados(jogos0); Random x = new Random(); Console.WriteLine("Quantos jogos houveram no torneio?"); int repetir = Convert.ToInt16(Console.ReadLine()); Jogo[] jogos = new Jogo[repetir]; for (int i = 0; i < jogos.Length; i++) { int Equipa1 = x.Next(1, 4); int Equipa2 = x.Next(1, 4); while (Equipa1 == Equipa2) { Equipa2 = x.Next(1, 4); System.Threading.Thread.Sleep(100); } int resultado = x.Next(1, 4); Console.WriteLine(+ (i + 1) + "º jogo " + (Clubes)Equipa1 + " vs " + (Clubes)Equipa2); Console.WriteLine(""); Jogo NumJogos = new Jogo(((Clubes)Equipa1).ToString(), ((Clubes)Equipa2).ToString(), ((Pontuacao)resultado).ToString()); jogos[i] = NumJogos; } int PtsSLB = 0, PtsFCP = 0, PtsSCP = 0; for (int i = 0; i < repetir; i++) { switch (jogos[i].GetEquipa1()) { case "SLB": switch (jogos[i].GetResultado()) { case "Vitória": PtsSLB += 3; break; case "Empate": PtsSLB += 1; switch (jogos[i].GetEquipa2()) { case "FCP": PtsFCP += 1; break; case "SCP": PtsSCP += 1; break; } break; default: switch (jogos[i].GetEquipa2()) { case "SCP": PtsSCP += 3; break; case "FCP": PtsFCP += 3; break; } break; } break; case "SCP": switch (jogos[i].GetResultado()) { case "Vitória": PtsSCP += 3; break; case "Empate": PtsSCP += 1; switch (jogos[i].GetEquipa2()) { case "SLB": PtsSLB += 1; break; case "FCP": PtsFCP += 1; break; } break; default: switch (jogos[i].GetEquipa2()) { case "SLB": PtsSLB += 3; break; case "FCP": PtsFCP += 3; break; } break; } break; case "FCP": switch (jogos[i].GetResultado()) { case "Vitória": PtsFCP += 3; break; case "Empate": PtsFCP += 1; switch (jogos[i].GetEquipa2()) { case "SLB": PtsSLB += 1; break; case "SCP": PtsSCP += 1; break; } break; default: switch (jogos[i].GetEquipa2()) { case "SLB": PtsSLB += 3; break; case "SCP": PtsSCP += 3; break; } break; } break; } } Console.WriteLine(""); Console.WriteLine("SLB = " + PtsSLB + " pontos"); Console.WriteLine(""); Console.WriteLine("FCP = " + PtsFCP + " pontos"); Console.WriteLine(""); Console.WriteLine("SCP = " + PtsSCP + " pontos"); Console.WriteLine(""); if (PtsSLB > PtsFCP && PtsSLB > PtsSCP) { Console.WriteLine("SLB é o campeão !"); } else if (PtsFCP > PtsSCP && PtsFCP > PtsSLB) { Console.WriteLine("FCP é o campeão !"); } else if (PtsSCP > PtsSLB && PtsSCP > PtsFCP) { Console.WriteLine("SCP é o campeão !"); } else if (PtsSLB == PtsFCP) { Console.WriteLine("O SLB empatou com o FCP"); } else if (PtsSLB == PtsSCP) { Console.WriteLine("O SLB empatou com o SCP"); } else if (PtsFCP == PtsSCP) { Console.WriteLine("O FCP empatou com o SCP "); } Console.ReadLine(); Console.Write("A Guardar"); for (int j = 0; j < 12; j++) { Console.Write("."); System.Threading.Thread.Sleep(200); } } } } O erro está nesta parte do programa. public static Jogo[] Load() { Jogo[] jogos = new Jogo[10]; StreamReader sr = new StreamReader(@"c:\pasta\Torneio.txt"); int contaPos = 0; while (!sr.EndOfStream) { string linha = sr.ReadLine(); string[] x = linha.Split(','); string resultado = x[0]; Jogo a = new Jogo(resultado); // <-----------ERRO jogos[contaPos] = a; contaPos++; } sr.Close(); return jogos; } Link to post Share on other sites
djonpereira 0 Posted July 8, 2015 Report Share Posted July 8, 2015 Boas, Pelo que vi no teu código anterior declaraste "Jogo" como sendo uma estrutura e como tal a keyword "new" não pode ser usada. ---------------------------------- DjonPereira Link to post Share on other sites
nelsonr 331 Posted July 8, 2015 Report Share Posted July 8, 2015 O problema está que não tens um construtor do Jogo que aceite apenas um parametro (que é o que está a tentar ser usado na linha que dá erro). Pelo que vi no teu código anterior declaraste "Jogo" como sendo uma estrutura e como tal a keyword "new" não pode ser usada. Podes usar o new com structs Link to post Share on other sites
djonpereira 0 Posted July 8, 2015 Report Share Posted July 8, 2015 O problema está que não tens um construtor do Jogo que aceite apenas um parametro (que é o que está a tentar ser usado na linha que dá erro). Podes usar o new com structs Tens toda a razão. ---------------------------------- DjonPereira Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now