Ir ao conteúdo
  • Cadastre-se

Estou com problemas para desenvolver esse programa.


Posts recomendados

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

Link para o comentário
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;
}

 

Link para o comentário
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

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...