Jump to content
Francisco14

Resolver um erro a fazer loading

Recommended Posts

Francisco14

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;
 }

Share this post


Link to post
Share on other sites
djonpereira

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

Share this post


Link to post
Share on other sites
nelsonr

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

Share this post


Link to post
Share on other sites
djonpereira

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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.