• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nunorebelo

Exercício Iniciante com If else e switch

15 posts in this topic

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.

0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

O char só te guarda um caractér. Se introduzires FIAT, por exemplo, só vais ter a letra F.

Já deste arrays?

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites
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.

0

Share this post


Link to post
Share on other sites

Olá

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

O @nunorebelo ainda não deu objetos :)

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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).

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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.");
}

0

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