Jump to content
nunorebelo

Exercício Iniciante com If else e switch

Recommended Posts

nunorebelo

Boa noite colegas,

Ora bem, estou a iniciar-me na programção, já lidei a nível académico com C e agora estou a lidar com C#, mas tudo a nível de iniciante. Mas estou com algumas dificuldades em resolver este exercício:

"Pretendemos seleccionar um carro para adquirir. Consideramos três critérios fundamentais cuja importância está descrita abaixo. Escreva um algoritmo que receba o marca e as três características do veículo e faça uma sugestão de compra. O seu algoritmo permitirá comparar três veículos

–Os fatores de decisão são:

•Fator exclusivo, o número de lugares tem de ser igual ou superior a 4

•Segundo conjunto de critérios

–1º Preço -> o preço mais baixo ganha -> em caso de empate (faixa de 10%)

–2º Potencia -> a mais elevada ganha"

Este exercício só pode ser resolvido por If Else e Switch.

A minha dificuldade é agora fazer o ciclo para a pesquisa dos dados e no fim dar só um único valor (marca), cujo este valor está associado ao número maior de lugares, o preço mais baixo e com a potência mais elevada em relação aos outros dois carros.

Alguém me poderá ajudar? Obrigado.

Share this post


Link to post
Share on other sites
nunorebelo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/* Pretendemos selecionar um carro para adquirir. Consideramos trÍs critÈrios fundamentais cuja import‚ncia est·
* descrita abaixo. Escreva um algoritmo que receba a marca e as trÍs caracterÌsticas do veÌculo e faÁa uma
* sugest„o de compra. O seu algoritmo permitir· comparar trÍs veÌculos. Os factores de decis„o s„o: -> Factor
* exclusivo, o n˙mero de lugares tem de ser igual ou superior a 4. -> Segundo conjunto de critÈrios:
* --> 1∫ preÁo - o preÁo mais baixo ganha - em caso de empate (faixa de 10%); --> 2∫ potÍncia - a mais elevada
* ganha. */

namespace TrabalhoPratico3
{
class Program
{
	static void Main(string[] args)
	{
		char MarcaVeiculo1, MarcaVeiculo2, MarcaVeiculo3;
		int NumLugarVeic1, NumLugarVeic2, NumLugarVeic3;
		float PrecoVeic1, PrecoVeic2, PrecoVeic3;
		int PotenciaVeic1, PotenciaVeic2, PotenciaVeic3;
		string input;

		Console.Write("Indique a Marca do VeÌculo 1: ");
		input = Console.ReadLine();
		MarcaVeiculo1 = char.Parse(input);

		Console.Write("Indique o n˙mero de lugares do VeÌculo 1: ");
		input = Console.ReadLine();
		NumLugarVeic1 = int.Parse(input);

		Console.Write("Indique a potÍncia do VeÌculo 1: ");
		input = Console.ReadLine();
		PotenciaVeic1 = int.Parse(input);

		Console.Write("Indique o preÁo do VeÌculo 1: ");
		input = Console.ReadLine();
		PrecoVeic1 = float.Parse(input);


		Console.Write("\nIndique a Marca do VeÌculo 2: ");
		input = Console.ReadLine();
		MarcaVeiculo2 = char.Parse(input);

		Console.Write("Indique o n˙mero de lugares do VeÌculo 2: ");
		input = Console.ReadLine();
		NumLugarVeic2 = int.Parse(input);

		Console.Write("Indique a potÍncia do VeÌculo 2: ");
		input = Console.ReadLine();
		PotenciaVeic2 = int.Parse(input);

		Console.Write("Indique o preÁo do VeÌculo 2: ");
		input = Console.ReadLine();
		PrecoVeic2 = float.Parse(input);


		Console.Write("\nIndique a Marca do VeÌculo 3: ");
		input = Console.ReadLine();
		MarcaVeiculo3 = char.Parse(input);

		Console.Write("Indique o n˙mero de lugares do VeÌculo 3: ");
		input = Console.ReadLine();
		NumLugarVeic3 = int.Parse(input);

		Console.Write("Indique a potÍncia do VeÌculo 3: ");
		input = Console.ReadLine();
		PotenciaVeic3 = int.Parse(input);

		Console.Write("Indique o preÁo do VeÌculo 3: ");
		input = Console.ReadLine();
		PrecoVeic3 = float.Parse(input);


		if(NumLugarVeic1 >= 4)
			{
				Console.WriteLine("O carro da marca da marca {0}, possui {1} lugares, portanto … SELECCIONADO!!!",MarcaVeiculo1,NumLugarVeic1);

					if(NumLugarVeic2 >= 4)
						{
							Console.WriteLine("O carro da marca {0}, possui {1} lugares, portanto … SELECCIONADO!!!",MarcaVeiculo2,NumLugarVeic2);

								if(NumLugarVeic3 >= 4)
									{
										Console.WriteLine("O carro da marca {0}, possui {1} lugares, portanto … SELECCIONADO!!!",MarcaVeiculo3,NumLugarVeic3);
									}
								else
									{
										Console.WriteLine("O carro da marca {0}, possui {1} lugares, portanto N√O FOI SELECCIONADO!!!", MarcaVeiculo3,NumLugarVeic3);
									}
						}
					else
						{
							Console.WriteLine("O carro da marca {0}, possui {1} lugares, portanto N√O FOI SELECCIONADO!!!", MarcaVeiculo2,NumLugarVeic2);
						}
			}
		else
			{
				Console.WriteLine("O carro da marca {0}, possui {1} lugares, portanto N√O FOI SELECCIONADO!!!", MarcaVeiculo1,NumLugarVeic1);
			}






		Console.ReadLine();


	}
}
}

Já percebi que a estrutura do if else, está mal feita. Podem ajudar-me a resolver este problema sff? Gosto de programação, mas como ainda estou no início preciso de algumas ajudas, para ver se isto se encaixa bem na minha cabeça, todos estes processos. Obrigado.

Edited by Rechousa
Formatação de código

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Não sei se é do âmbito da disciplina e já deste, mas podias ter um método para fazer a leitura dos dados do veículo (marca, nr. de lugares e preço), chamavas o método 3 vezes e retornavas um objeto com com os dados do carro.

Imagina agora que o "cliente" quer ler, em vez de três veículos, trinta. E depois lembra-se de mudar para 50 e depois para 100. Tens de repetir o código N vezes,

Como disse, não sei se já deste ou não.


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
nunorebelo

Em termos de matéria só dei até aos if else e switch, mas já fiz um exercício mais ou menos parecido, mas este está a custar-me perceber em como o fazer. Tinha que criar uma variável Metodo4Vezes e não Metodo3Vezes, pois necessito da marca, nr de lugares, preço e a potência do carro. Certo? Este problema é só simplesmente ler 3 carros, e poder selecionar um de forma a seguir aos critérios que mencionei anteriormente no meu primeiro post.

Consegues ajudar-me a desembrulhar isto da minha cabeça? Obrigado.

Share this post


Link to post
Share on other sites
nunorebelo

Ainda não dei. Sim é verdade quanto ao char. Arrays ainda não dei, o professor disse-nos apenas para fazer com if else e switch.

Share this post


Link to post
Share on other sites
Rechousa

Basicamente o que precisas de fazer:

a) input do utilizador (já tens isso feito)

b) comparação e escolha do vencedor.

Sugiro que tenhas mais quatro variáveis (Marca do veiculo selecionado, Numero de lugar do veiculo selecionado, Preco do veiculo selecionado e potencia do veiculo selecionado).

Depois, em vez de teres os if's encadeados como tens vais comparar cada um dos veiculos introduzidos com o selecionado +/- assim:

if(NumLugarVeic1 >= 4) {
  if(PrecoVeic1 < PrecoVeicSelecionado) {
   if(PotenciaVeic1 > PotenciaVeicSelecionado) {
	   // Inicializar as variaveis relativas ao veiculo selecionado, com os dados do veículo 1
   }
  }
}


// Repetir para os outro veiculos

Edited by Rechousa

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
nunorebelo

Boa noite. Ora bem, neste momento tenho o código assim:

namespace TrabalhoPratico3
{
   class Program
   {
       static void Main(string[] args)
       {
           char MarcaVeiculo1, MarcaVeiculo2, MarcaVeiculo3;
           int NumLugarVeic1, NumLugarVeic2, NumLugarVeic3;
           float PrecoVeic1, PrecoVeic2, PrecoVeic3;
           int PotenciaVeic1, PotenciaVeic2, PotenciaVeic3;
           float PrecoVeicSelecionado;
           int PotenciaVeicSelecionado;
           char MarcaVeicSelecionado;
           int NumLugarVeicSelecionado;
           string input;
           Console.Write("Indique a Marca do VeÌculo 1: ");
           input = Console.ReadLine();
           MarcaVeiculo1 = char.Parse(input);
           Console.Write("Indique o n˙mero de lugares do VeÌculo 1: ");
           input = Console.ReadLine();
           NumLugarVeic1 = int.Parse(input);
           Console.Write("Indique a potÍncia do VeÌculo 1: ");
           input = Console.ReadLine();
           PotenciaVeic1 = int.Parse(input);
           Console.Write("Indique o preÁo do VeÌculo 1: ");
           input = Console.ReadLine();
           PrecoVeic1 = float.Parse(input);

           Console.Write("\nIndique a Marca do VeÌculo 2: ");
           input = Console.ReadLine();
           MarcaVeiculo2 = char.Parse(input);
           Console.Write("Indique o n˙mero de lugares do VeÌculo 2: ");
           input = Console.ReadLine();
           NumLugarVeic2 = int.Parse(input);
           Console.Write("Indique a potÍncia do VeÌculo 2: ");
           input = Console.ReadLine();
           PotenciaVeic2 = int.Parse(input);
           Console.Write("Indique o preÁo do VeÌculo 2: ");
           input = Console.ReadLine();
           PrecoVeic2 = float.Parse(input);

           Console.Write("\nIndique a Marca do VeÌculo 3: ");
           input = Console.ReadLine();
           MarcaVeiculo3 = char.Parse(input);
           Console.Write("Indique o n˙mero de lugares do VeÌculo 3: ");
           input = Console.ReadLine();
           NumLugarVeic3 = int.Parse(input);
           Console.Write("Indique a potÍncia do VeÌculo 3: ");
           input = Console.ReadLine();
           PotenciaVeic3 = int.Parse(input);
           Console.Write("Indique o preÁo do VeÌculo 3: ");
           input = Console.ReadLine();
           PrecoVeic3 = float.Parse(input);
           if(NumLugarVeic1 >= 4)
               {
                   if(PrecoVeic1 < PrecoVeicSelecionado)
                       {
                           if(PotenciaVeic1 > PotenciaVeicSelecionado)
                               {
                               }
                       }
               }
           if (NumLugarVeic2 >= 4)
           {
               if (PrecoVeic2 < PrecoVeicSelecionado)
               {
                   if (PotenciaVeic2 > PotenciaVeicSelecionado)
                   {
                   }
               }
           }
           if (NumLugarVeic3 >= 4)
           {
               if (PrecoVeic3 < PrecoVeicSelecionado)
               {
                   if (PotenciaVeic3 > PotenciaVeicSelecionado)
                   {
                   }
               }
           }

           Console.ReadLine();
       }
   }
}

É assim que pretendes? Fazer 3 if's para os três carros, certo? Onde é que coloco as variáveis e como faço agora os cálculos?

Pelo exemplo que metes-te, já começo a encaixar melhor. Obrigado.

Share this post


Link to post
Share on other sites
pikax
O char só te guarda um caractér. Se introduzires FIAT, por exemplo, só vais ter a letra F.

Já deste arrays?

Em C# nao se deve usar array para guardar strings, arrays e' em C, C# tem string nativamente, por isso e' melhor usar strings!

deves ler assim o texto.

string marca1;
marca1 = Console.ReadLine();

O ideal ja que estas a trabalhar com uma linguagem com suporte para OOP(aka POO), deverias usar objectos para isso.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
nunorebelo

Boa tarde. Pikax, percebi quanto ao introduzir a marca, obrigado pela explicação.

Rechousa, quanto ao código que introduzi ontem está bem? Como é que agora introduzu as variáveis? E como faço os cálculos, para depois no fim dar apenas só um carro seleccionado?

Obrigado.

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Relativamente ao teu código, estás a ir bem.

Precisas de inicializar a variável PrecoVeicSelecionado com um preço alto (ou ao preço do veículo 1), porque como está é inicializado a zero, falta-te a questão dos 10% que vi no enunciado e completar a parte da selecao do veiculo, pois ainda nao está (basicamente, depois dos if's encadeados).


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
nunorebelo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/* Pretendemos selecionar um carro para adquirir. Consideramos três critérios fundamentais cuja importância está
* descrita abaixo. Escreva um algoritmo que receba a marca e as três características do veículo e faça uma
* sugestão de compra. O seu algoritmo permitirá comparar três veículos. Os factores de decisão são: -> Factor
* exclusivo, o número de lugares tem de ser igual ou superior a 4. -> Segundo conjunto de critérios:
* --> 1º preço - o preço mais baixo ganha - em caso de empate (faixa de 10%); --> 2º potência - a mais elevada
* ganha. */
namespace TrabalhoPratico3
{
   class Program
   {
    static void Main(string[] args)
    {
	    char MarcaVeiculo1, MarcaVeiculo2, MarcaVeiculo3;
	    // string marca1, marca2, marca3;
	    int NumLugarVeic1, NumLugarVeic2, NumLugarVeic3;
	    float PrecoVeic1, PrecoVeic2, PrecoVeic3;
	    int PotenciaVeic1, PotenciaVeic2, PotenciaVeic3;
	    float PrecoVeicSelecionado;
	    int PotenciaVeicSelecionado;
	    char MarcaVeicSelecionado;
	    // int NumLugarVeicSelecionado;
	    string input;
	    Console.Write("Indique a Marca do Veículo 1: ");
	    input = Console.ReadLine();
	    MarcaVeiculo1 = char.Parse(input);
	    Console.Write("Indique o número de lugares do Veículo 1: ");
	    input = Console.ReadLine();
	    NumLugarVeic1 = int.Parse(input);
	    Console.Write("Indique a potência do Veículo 1: ");
	    input = Console.ReadLine();
	    PotenciaVeic1 = int.Parse(input);
	    Console.Write("Indique o preço do Veículo 1: ");
	    input = Console.ReadLine();
	    PrecoVeic1 = float.Parse(input);

	    Console.Write("\nIndique a Marca do Veículo 2: ");
	    input = Console.ReadLine();
	    MarcaVeiculo2 = char.Parse(input);
	    Console.Write("Indique o número de lugares do Veículo 2: ");
	    input = Console.ReadLine();
	    NumLugarVeic2 = int.Parse(input);
	    Console.Write("Indique a potência do Veículo 2: ");
	    input = Console.ReadLine();
	    PotenciaVeic2 = int.Parse(input);
	    Console.Write("Indique o preço do Veículo 2: ");
	    input = Console.ReadLine();
	    PrecoVeic2 = float.Parse(input);

	    Console.Write("\nIndique a Marca do Veículo 3: ");
	    input = Console.ReadLine();
	    MarcaVeiculo3 = char.Parse(input);
	    Console.Write("Indique o número de lugares do Veículo 3: ");
	    input = Console.ReadLine();
	    NumLugarVeic3 = int.Parse(input);
	    Console.Write("Indique a potência do Veículo 3: ");
	    input = Console.ReadLine();
	    PotenciaVeic3 = int.Parse(input);
	    Console.Write("Indique o preço do Veículo 3: ");
	    input = Console.ReadLine();
	    PrecoVeic3 = float.Parse(input);
	    PrecoVeicSelecionado = 0;
	    PotenciaVeicSelecionado = 0;
	    if(NumLugarVeic1 >= 4)
		    {
			    if(PrecoVeic1 < PrecoVeicSelecionado)
				    {
					    if(PotenciaVeic1 > PotenciaVeicSelecionado)
						    {
							    Console.WriteLine("A marca seleccionada é --> {0}!!!", MarcaVeiculo1);
						    }
				    }
		    }
	    if (NumLugarVeic2 >= 4)
	    {
			    if (PrecoVeic2 < PrecoVeicSelecionado)
				    {
					    if (PotenciaVeic2 > PotenciaVeicSelecionado)
						    {
							    Console.WriteLine("A marca seleccionada é --> {0}!!!", MarcaVeiculo2);
						    }
				    }
	    }
	    if (NumLugarVeic3 >= 4)
	    {
			    if (PrecoVeic3 < PrecoVeicSelecionado)
				    {
					    if (PotenciaVeic3 > PotenciaVeicSelecionado)
						    {
							    Console.WriteLine("A marca seleccionada é --> {0}!!!", MarcaVeiculo3);
						    }
				    }
	    }
	    Console.ReadLine();
    }
   }
}

O código assim está bem?

Como é que eu faço agora, para que ele selecione o carro? É necessário preencher os elses?

Quanto ao código do pagamento deixo-o para o fim, mas primeiro gostaria de ter isto feito da seleção do carro.

Share this post


Link to post
Share on other sites
bioshock

Não podes utilizar ciclos? É que isso está terrível.

Mas olhando apenas para o código actual, podes melhorar essas condições, algo dentro deste género.

if(NumLugarVeic1 >= 4 && NumLugarVeic2 >= 4 && NumLugarVeic3 >= 44){

	if(PrecoVeic1 < PrecoVeicSeleccionado && PotenciaVeic1 > PotenciaVeicSelecionado){
			 Console.WriteLine("Marca Seleccionada: {0}", MarcaVeiculo1);
	}

       /* etc...
          Depois tens de verificar os preços dos veículos, caso haja empate verificas a potência 
       */

}else{
Console.WriteLine("Número de lugares inválido.");
}

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.