Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Lucas Martins Leite

Estou com problemas para desenvolver esse programa.

Recommended Posts

Estou com duvidas, meu professor passou um exercicio assim. 
 

- Em uma empresa são apresentado 3 motores o motor "A"  é de 30 cavalos e apresenta o botão "A" para ligar

consequentemente o motor "B" de 50 cv apresenta um botão "B" outro botão "C" controla um motor de 70 cv

na empresa não é permitido ultrapassar a demanda de 100 cv quando isso acontecer desligar o motor de menor valor, se mesmo assim continuar

desligar o segundo motor de menor valor.

Implemente um programa que simule a entrada dos botões A,B,C e apresente a resposta de qquais motores deveram ser ligado. 

Então eu criei o codigo no C++ assim e ta indo mais não vai kkkk , me ajudem por favor. 

 

#include <stdio.h>
int main(){

    int a,b,c;
    printf("digite o valor a: %d", 30);
    if(a==1 && b==0||a==1 && b==1 && c==0){
        printf("motor a ligado\n:");
    }else{
        printf("motor a desligado\n:");
    
    
    
    
    
    printf("digite o valor b:");
    scanf("%d", 70);
    if(a==0 && b==1||a==0 && b==1 && c==0){
        printf("motor b ligado\n:");
    }else{
        printf("motor b desligado\n:");
    
        
        printf("digite o valor c:");
        scanf("%d",100);
        if(a==0 && b==0||a==0 && b==0 && c==1){
            printf("motor c ligado\n:");
        }else{
            printf("motor c desligado\n:");
            
        }
        }
        }
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

 

De acordo com minha interpretação deste exercício, segue minha solução:

#include <iostream>

typedef struct
{
	int Potencia;
	int Status;
}Motor_t;

int main()
{
	Motor_t Motor[3]; // Quantidade de motores;

	memset(Motor, 0, sizeof(Motor)); // Limpa os dados em Motor;

	Motor[0].Potencia = 30; // Motor A;
	Motor[1].Potencia = 50; // Motor B;
	Motor[2].Potencia = 70; // Motor C;

	int DemandaAtual = 0, DemandaMax = 100; // Demanda Atual e Demanda Máxima;

	// Motor A
	std::cout << "Digite (0) ou (1) para Desligar/Ligar Motor (A): ";
	do
		std::cin >> Motor[0].Status;
	while (Motor[0].Status > 1 || Motor[0].Status < 0); // Rodará o laço enquanto Motor (A) for diferente de 0 ou 1;

	// Caso Motor A esteja ligado
	if (Motor[0].Status)
	{
		DemandaAtual = Motor[0].Potencia; // atribui potencia de motor (A) à DemandaAtual;
		//std::cout << "\nMotor (A) ligado" << std::endl;
		//std::cout << "\nDemanda Atual: " << DemandaAtual << std::endl;
	}

	// Motor B
	std::cout << "Digite (0) ou (1) para Desligar/Ligar Motor (B): ";
	do
		std::cin >> Motor[1].Status;
	while (Motor[1].Status > 1 || Motor[1].Status < 0);

	if (Motor[1].Status)
	{
		DemandaAtual += Motor[1].Potencia; // Valor de DemandaAtual é atribuido à soma de seu valor atual mais potência de motor (B);
		//std::cout << "\nMotor (B) ligado" << std::endl;
		//std::cout << "\nDemanda Atual: " << DemandaAtual << std::endl;
	}

	// Motor C
	std::cout << "Digite (0) ou (1) para Desligar/Ligar Motor (C): ";
	do
		std::cin >> Motor[2].Status;
	while (Motor[2].Status > 1 || Motor[2].Status < 0);

	if (Motor[2].Status)
	{
		DemandaAtual += Motor[2].Potencia; // Valor de DemandaAtual é atribuido à soma de seu valor atual com potência de motor (C);
		//std::cout << "\nMotor (C) ligado" << std::endl;
		//std::cout << "\nDemanda Atual: " << DemandaAtual << std::endl;
	}

	// Verifica se DemandaAtual excedeu o valor de DemandaMax;
	int i = 0;
	while (DemandaAtual > DemandaMax)
	{
		Motor[i].Status = 0; // Desliga o motor de menor valor;
		std::cout << "\nDemanda Atual excedeu o limite(" << DemandaAtual << "-" << DemandaMax << "), motor " << (char)(0x41+i) << " sera desligado." << std::endl;
		DemandaAtual -= Motor[i].Potencia;
		i++;
	}

	// Imprime na tela o status dos motores:
	if (Motor[0].Status)
		std::cout << "\nMotor (A) ligado" << std::endl;
	else
		std::cout << "\nMotor (A) desligado" << std::endl;

	if (Motor[1].Status)
		std::cout << "\nMotor (B) ligado" << std::endl;
	else
		std::cout << "\nMotor (B) desligado" << std::endl;

	if (Motor[2].Status)
		std::cout << "\nMotor (B) ligado" << std::endl;
	else
		std::cout << "\nMotor (B) desligado" << std::endl;

	std::cout << "\nDemanda Atual: " << DemandaAtual << std::endl;

	system("PAUSE");
	return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Lucas Martins Leite

 

9 minutos atrás, Gustavo Andretto disse:

 

memset(Motor, 0, sizeof(Motor)); // Limpa os dados em Motor;   TA DANDO ERRO ESSA PARTE

adicionado 2 minutos depois

memset(Motor, 0, sizeof(Motor)); // Limpa os dados em Motor;   TA DANDO ERRO ESSA PARTE

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Lucas Martins Leite remova a linha memset(Motor, 0, sizeof(Motor)); e adicione:

	Motor[0].Status = 0; // Status de Motor A;
	Motor[1].Status = 0; // Status de Motor B;
	Motor[2].Status = 0; // Status de Motor C;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>
int main(){
    //Como estamos iniciando o software
    //que controla os motores, o padrão
    //seria que eles iniciassem desligados,
    //portanto temos que definir as variaveis
    //na declaração
    int a = 0,//Motor A desligado
        b = 0,//Motor B "
        c = 0;//Motor C "
  
  	//Sua versão não possui uma função para obter o valor
  	//printf("digite o valor a: %d", 30);
    //Portanto, usamos scanf e deixamos as informações no Printf um pouco mais claras
    printf("Motor A - 30 Cavalos\nStatus do motor(1 Ligado e 0 desligado):");
    scanf("%d",&a);
    
    //Assumindo que você sabe quando o motor A
    //pode ficar ligado, referente aos 100 cavalos,
    //sabendo que cada variavel é ligada a um motor,
    //o qual possui a potência ja definida, ai voce usa esse if.
    //Porém se você usar uma classe, ou estrutura, o qual é possivel
    //realizar a alteração da potência, é necessario um calculo, 
    //como A+B <= LIMITE(100 Cavalos), etc, afim de que o A seja ligado.
  
    //O if abaixo é descrito assim: Se (A for = 1 e B = 0) verdadeiro? OU Se (A = 1 e B = 1 e C = 0) verdadeiro? 
    if((a==1 && b==0) || (a==1 && b==1 && c==0)){
        printf("Situacao: motor A ligado\n:");
    }else
        printf("Situacao: motor A desligado\n:");
    
    printf("Motor B - 30 Cavalos\nStatus do motor(1 Ligado e 0 desligado):");
    //scanf("%d", 70); voce ja deu um valor, porém gostariamos de obter 0 ou 1 do usuario, por isso usamos a variavel b
    scanf("%d",&b);
    if((a==0 && b==1)||(a==0 && b==1 && c==0)){
        printf("motor b ligado\n:");
    }else
        printf("motor b desligado\n:");
    
        
    printf("Motor C - 30 Cavalos\nStatus do motor(1 Ligado e 0 desligado):");
    scanf("%d",&c);
    if(a==0 && b==0||a==0 && b==0 && c==1){
          printf("motor c ligado\n:");
      }else{
          printf("motor c desligado\n:");
        }
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×