Ir ao conteúdo
  • Cadastre-se
LEANDRO VEIGA

C++ função sensores do programa com mau funcionamento

Recommended Posts

#include <iostream>
using namespace std;
// Programa de controle iluminação de escadas entre andares de um prédio de 04 andares( térreo e 03 andares)
    const int UM=1;
    const int ZERO=0;
    const int MIN = UM;
    const int MAX = 5 ;
    int BT[MAX], SPT1[MAX], SP12[MAX], SP2U[MAX], L1[MAX], L12[MAX], L2U[MAX], DIM ;// variaveis globais
    char TECLA;
    
        int LEITURA(){
            int I ; 
            for(I = ZERO;I < DIM; I++ ){
                cout<<"\nDigite ZERO ou UM entre espacos para os sensores SPT1,SP12,SP2U: "<<endl;
                do{    
                    cout<<"\nDigite ZERO ou UM para o sensor SPT1: "<<endl;
                    cin>> SPT1 ;
                }while(SPT1!=ZERO &&SPT1!=UM );
                do{    
                    cout<<"\nDigite ZERO ou UM para o sensorSP12: "<<endl;
                    cin>> SP12;
                }while(SP12!=ZERO &&SP12!=UM );
                
                do{    
                    cout<<"\nDigite ZERO ou UM para o sensorSP2U: "<<endl;
                    cin>> SP2U;    
                }while(SP2U!=ZERO&& SP2U!=UM);
            }
        
    }

     int botaoteste() {
         int I;
         for(I = ZERO;I < DIM; I++ ){
            do{
                cout << "\n\tDigite ZERO ou UM para BT: " ;
                cin >>  BT;
                cout << "\n voce digitou "<<BT<<endl;
            }while(BT<ZERO || BT>UM);
            if(BT==UM){
                SPT1=UM;SP12=UM;SP2U=UM;
                if(L1==ZERO||L12==ZERO||L2U==ZERO){
                    cout<<"\n\t\tLampadas defeituosas,substitua o elemento desfeituoso\n\n" <<endl;
                }
                }
                    
                }
        }
        
    int sensores() {
        int I ; 
        for(I=ZERO;I < DIM; I++ ){
                L1=SPT1;
                L12=SPT1|SP12;
                L2U=SP12|SP2U;//Equações do mapa de Karnaugh//
            if(L1==ZERO &&L12==ZERO &&L2U==ZERO){
                cout<< "Sem circulação pelas escadas"<<endl;
                }
            else{
                if(L1==UM){
                    cout<<"Circulacao entre andares terreo e primeiro"<<endl;
                    }    
                if(L12==UM){
                    cout<<"Circulacao entre andares primeiro e segundo"<<endl;
                }
                    if(L2U==UM){
                        cout<<"Circulacao entre andares segundo e ultimo"<<endl;
                    }
                }
                
                }
    }
        
    int main(){
    
            do{ 
                    do{
                        cout<<"\nDigite a dimensao dos vetores(entre 1 e 5): "; cin >> DIM ;
                    }while(DIM < MIN || DIM > MAX);
            
                botaoteste(); //Testar valor de BT
                LEITURA();//leitura dos sensores
                sensores();
                cout<< "\n\n\tDigite F ou f para encerrar o programa: ";
                cin>> TECLA;
            }while(TECLA!='F'&&TECLA!='f');
        cout << "\n\n";    
        }
    

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@LEANDRO VEIGA Olá. Ajudaria muito se da próxima vez q postar um código usar o botão <> Code. Na janela q aparecer, insira seu código e selecione a linguagem na canto inferior direito.

Um dos problemas no seu código está na questão q você cria vetores no início do código, mas no código todo você trabalha com esses vetores como se eles fossem uma única variável. Ou seja, você não está trabalhando com os índices do vetor como deveria.

Outro ponto: Na função sensores você está fazendo várias verificações dentro do mesmo for, esse tipo de  abordagem só funciona se definir uma lógica muito bem definida.

Vou postar o código funcionando, mas não verifiquei a lógica q está no código.

Dá uma olhada para ver se agora consegue ajustar a lógica, ok?

Outro ponto: A correta identação de um código é importantíssima e na maioria dos cursos e faculdades vale nota! Dê atenção a isso!

#include <iostream>
using namespace std;
// Programa de controle iluminação de escadas entre andares de um prédio de 04 andares( térreo e 03 andares)

const int UM = 1;
const int ZERO = 0;
const int MIN = UM;
const int MAX = 5 ;
int BT[MAX], SPT1[MAX], SP12[MAX], SP2U[MAX], L1[MAX], L12[MAX], L2U[MAX], DIM ;// variaveis globais
char TECLA;

int LEITURA(){

    int i ;

    for(i = ZERO; i < DIM; i++ ) {

       cout<<"\nDigite ZERO ou UM entre espacos para os sensores SPT1, SP12 e SP2U: "<<endl;

       cout<<"\nDigite ZERO ou UM para o sensor SPT1: "<<endl;
       cin >> SPT1[i] ;
       cin.ignore();

       cout<<"\nDigite ZERO ou UM para o sensorSP12: "<<endl;
       cin >> SP12[i];
       cin.ignore();

       cout<<"\nDigite ZERO ou UM para o sensorSP2U: "<<endl;
       cin >> SP2U[i];
       cin.ignore();

    }

}

int botaoteste() {

    int i;

    for (i = ZERO;i < DIM; i++ ){
        do{
            cout << "\n\tDigite ZERO ou UM para BT: " ;
            cin >>  BT[i];
            cin.ignore();
            cout << "\n voce digitou " << BT[i] <<endl;

        } while (BT[i] < ZERO || BT[i] > UM);

        if(BT[i] == UM) {
            SPT1[i] = UM;
            SP12[i] = UM;
            SP2U[i] = UM;
            if(L1[i] == ZERO || L12[i] == ZERO || L2U[i] == ZERO){
                cout<<"\n\t\tLampadas defeituosas,substitua o elemento desfeituoso\n\n" <<endl;
            }
        }

    }
}

int sensores() {

    int i ;
	// aqui teria q ajustar corretamente a lógica
    for(i = ZERO; i < DIM; i++){
        L1[i]=SPT1[i];
        L12[i] = SPT1[i] | SP12[i];
        L2U[i] = SP12[i] | SP2U[i];//Equações do mapa de Karnaugh//
        if(L1[i] == ZERO && L12[i] == ZERO && L2U[i] == ZERO){
            cout << "Sem circulação pelas escadas" << endl;
        }
        else{
            if(L1[i] == UM){
             cout << "Circulacao entre andares terreo e primeiro" << endl;
            }
            if(L12[i]==UM) {
                cout << "Circulacao entre andares primeiro e segundo" << endl;
            }
            if(L2U[i] == UM){
                cout << "Circulacao entre andares segundo e ultimo" << endl;
            }
        }
    }
}

int main() {

    do {
        do {
            cout<<"\nDigite a dimensao dos vetores(entre 1 e 5): "; cin >> DIM ;
        } while (DIM < MIN || DIM > MAX);

        botaoteste(); //Testar valor de BT
        LEITURA();//leitura dos sensores
        sensores();

        cout << "\n\n\tDigite F ou f para encerrar o programa: ";
        cin >> TECLA;
        cin.ignore();
    } while (TECLA != 'F' && TECLA != 'f');

    cout << "\n\n";

    return 0;
}

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, LEANDRO VEIGA disse:

#include <iostream>
using namespace std;
// Programa de controle iluminação de escadas entre andares de um prédio de 04 andares( térreo e 03 andares)

const int UM = 1;
const int ZERO = 0;
const int MIN = UM;
const int MAX = 5 ;
int BT[MAX], SPT1[MAX], SP12[MAX], SP2U[MAX], L1[MAX], L12[MAX], L2U[MAX], DIM ;// variaveis globais
char TECLA;

int LEITURA(){

    int i ;

    for(i = ZERO; i < DIM; i++ ) {

       cout<<"\nDigite ZERO ou UM entre espacos para os sensores SPT1, SP12 e SP2U: "<<endl;

       cout<<"\nDigite ZERO ou UM para o sensor SPT1: "<<endl;
       cin >> SPT1 ;
       cin.ignore();

       cout<<"\nDigite ZERO ou UM para o sensorSP12: "<<endl;
       cin >> SP12;
       cin.ignore();

       cout<<"\nDigite ZERO ou UM para o sensorSP2U: "<<endl;
       cin >> SP2U;
       cin.ignore();

    }

}

int botaoteste() {

    int i;

    for (i = ZERO;i < DIM; i++ ){
        do{
            cout << "\n\tDigite ZERO ou UM para BT: " ;
            cin >>  BT;
            cin.ignore();
            cout << "\n voce digitou " << BT <<endl;

        } while (BT < ZERO || BT > UM);

        if(BT == UM) {
            SPT1 = UM;
            SP12 = UM;
            SP2U = UM;
            if(L1 == ZERO || L12 == ZERO || L2U == ZERO){
                cout<<"\n\t\tLampadas defeituosas,substitua o elemento desfeituoso\n\n" <<endl;
            }
        }

    }
}

int sensores() {

    int i ;
    
    for(i = ZERO; i < DIM; i++){
        L1=SPT1;
        L12 =SP12;
        L2U =SP2U;//Equações do mapa de Karnaugh//
        if(L1 == ZERO && L12 == ZERO && L2U == ZERO){
            cout << "Sem circulação pelas escadas" << endl;
        }
        else{
            if(L1 == UM){
             cout << "Circulacao entre andares terreo e primeiro" << endl;
            }
            if(L12==UM) {
                cout << "Circulacao entre andares primeiro e segundo" << endl;
            }
            if(L2U == UM){
                cout << "Circulacao entre andares segundo e ultimo" << endl;
            }
        }
    }
}

int main() {

    do {
        do {
            cout<<"\nDigite a dimensao dos vetores(entre 1 e 5): "; cin >> DIM ;
        } while (DIM < MIN || DIM > MAX);

        botaoteste(); //Testar valor de BT
        LEITURA();//leitura dos sensores
        sensores();

        cout << "\n\n\tDigite F ou f para encerrar o programa: ";
        cin >> TECLA;
        cin.ignore();
    } while (TECLA != 'F' && TECLA != 'f');

    cout << "\n\n";

    return 0;
}

 

 

LÓGICA CORRIGIDA , FUNCIONOU PERFEITAMENTE

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@LEANDRO VEIGA Olá. Daria para postar o código usando o botão <> (Code)? Da forma como você postou não aparece os índices. Se possível poste o código usando esse botão 

Desde já agradeço!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <iostream>
using namespace std;
// Programa de controle iluminação de escadas entre andares de um prédio de 04 andares( térreo e 03 andares)

const int UM = 1;
const int ZERO = 0;
const int MIN = UM;
const int MAX = 5 ;
int BT[MAX], SPT1[MAX], SP12[MAX], SP2U[MAX], L1[MAX], L12[MAX], L2U[MAX], DIM ;// variaveis globais
char TECLA;

int LEITURA(){

    int i ;

    for(i = ZERO; i < DIM; i++ ) {

       cout<<"\nDigite ZERO ou UM entre espacos para os sensores SPT1, SP12 e SP2U: "<<endl;

       cout<<"\nDigite ZERO ou UM para o sensor SPT1: "<<endl;
       cin >> SPT1[i] ;
       cin.ignore();

       cout<<"\nDigite ZERO ou UM para o sensorSP12: "<<endl;
       cin >> SP12[i];
       cin.ignore();

       cout<<"\nDigite ZERO ou UM para o sensorSP2U: "<<endl;
       cin >> SP2U[i];
       cin.ignore();

    }

}

int botaoteste() {

    int i;

    for (i = ZERO;i < DIM; i++ ){
        do{
            cout << "\n\tDigite ZERO ou UM para BT: " ;
            cin >>  BT[i];
            cin.ignore();
            cout << "\n voce digitou " << BT[i] <<endl;

        } while (BT[i] < ZERO || BT[i] > UM);

        if(BT[i] == UM) {
            SPT1[i] = UM;
            SP12[i] = UM;
            SP2U[i] = UM;
            if(L1[i] == ZERO || L12[i] == ZERO || L2U[i] == ZERO){
                cout<<"\n\t\tLampadas defeituosas,substitua o elemento desfeituoso\n\n" <<endl;
            }
        }

    }
}

int sensores() {

    int i ;
	
    for(i = ZERO; i < DIM; i++){
        L1[i]=SPT1[i];
        L12[i] =SP12[i];
        L2U[i] =SP2U[i];//Equações do mapa de Karnaugh//
        if(L1[i] == ZERO && L12[i] == ZERO && L2U[i] == ZERO){
            cout << "Sem circulação pelas escadas" << endl;
        }
        else{
            if(L1[i] == UM){
             cout << "Circulacao entre andares terreo e primeiro" << endl;
            }
            if(L12[i]==UM) {
                cout << "Circulacao entre andares primeiro e segundo" << endl;
            }
            if(L2U[i] == UM){
                cout << "Circulacao entre andares segundo e ultimo" << endl;
            }
        }
    }
}

int main() {

    do {
        do {
            cout<<"\nDigite a dimensao dos vetores(entre 1 e 5): "; cin >> DIM ;
        } while (DIM < MIN || DIM > MAX);

        botaoteste(); //Testar valor de BT
        LEITURA();//leitura dos sensores
        sensores();

        cout << "\n\n\tDigite F ou f para encerrar o programa: ";
        cin >> TECLA;
        cin.ignore();
    } while (TECLA != 'F' && TECLA != 'f');

    cout << "\n\n";

    return 0;
}

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@LEANDRO VEIGA Valeu, amigo! Só daria uma pequena sugestão para criar constantes. Do modo como está é correto, mas se preferir você pode criar constantes usando a diretiva define:

#define UM 1
#define ZERO 0
#define MIN UM
#define MAX 5

Vale lembrar: é apenas uma sugestão, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <iostream>
#include <ctime> // pega o tempo real da maquina em milisegundos
#include <cstdlib> // usada para gerar numero aleatorio : funcao rand
using namespace std;
const int UM = 1;
const int ZERO = 0;
int BT, SPT1, SP12, SP2U, L1, L12, L2U;// variaveis globais
// Programa de controle iluminação de escadas entre andares de um prédio de 04 andares( térreo e 03 andares)

int botaoteste() {
	
	int aleatorio1,aleatorio2,aleatorio3;
	srand(time(NULL)); // srand = significa semente do numero aleatorio (numero inicial)

	int sorteio = ((int)(rand()%10)+1);
	if(sorteio>5)
		aleatorio1 = UM;
	else
		aleatorio1=ZERO;
	
	if(aleatorio1==ZERO)
		aleatorio2=UM;

	else 
		aleatorio2=ZERO;	
	
	
	sorteio = ((int)(rand()%10)+1);
	if(sorteio>5)
		aleatorio3 = UM;
	else
		aleatorio3=ZERO;
	
	
	cout << "Aleatorio 1: " << aleatorio1 << endl;
	cout << "Aleatorio2: " << aleatorio2 << endl;
	cout << "Aleatorio 3: " << aleatorio3 << endl;
	L1=aleatorio1;
	L12=aleatorio2;
	L2U=aleatorio3;
    int i;
    
        do{
            cout << "\n\tDigite UM para testar a funcionalidade das lampadas e ZERO para pular essa etapa: " ;
            cin >> BT;
            cout << "\n voce digitou " << BT <<endl;

        } while (BT< ZERO || BT > UM);

        if(BT== UM) {
            SPT1= UM;
            SP12= UM;
            SP2U= UM;
            if(L1== ZERO){
                cout<<"\n\t Lampada L1 defeituosa,substitua o elemento\n" <<endl;
            }
            else{
            	cout<<"\n\t Lampada L1 funcionando normal!\n";
			}
             if(L12== ZERO){
                cout<<"\n\t Lampada L12 defeituosa,substitua o elemento\n" <<endl;
            } 
			 else{
            	cout<<"\n\t Lampada L12 funcionando normal!\n";
			}
			if(L2U== ZERO){
                cout<<"\n\t Lampada L2U defeituosa,substitua o elemento\n" <<endl;
            }
             else{
            	cout<<"\n\t L2U funcionando normal!\n";
			}
        }

    }

int LEITURA(){
       cout<<"\nDigite ZERO ou UM para o sensor SPT1: "<<endl;
       cin >> SPT1;
       

       cout<<"\nDigite ZERO ou UM para o sensor SP12: "<<endl;
       cin >> SP12;
       

       cout<<"\nDigite ZERO ou UM para o sensor SP2U: "<<endl;
       cin >> SP2U;
}

int sensores() {
        L1=SPT1;
        L12=SP12;
        L2U=SP2U;
        if(L1== ZERO && L12== ZERO && L2U== ZERO){
            cout << "Sem circulação pelas escadas" << endl;
        }
        else{
            if(L1== UM){
             cout << "Circulacao entre andares terreo e primeiro" << endl;
            }
            if(L12==UM) {
                cout << "Circulacao entre andares primeiro e segundo" << endl;
            }
            if(L2U== UM){
                cout << "Circulacao entre andares segundo e ultimo" << endl;
            }
        }
    }

int main() {
char TECLA;  
        botaoteste(); //Testar valor de BT
        LEITURA();//leitura dos sensores
        sensores();

        do {
		cout << "\n\n\tDigite F ou f para encerrar o programa: ";
        cin >> TECLA;
    } while (TECLA != 'F' && TECLA != 'f');

    cout << "\n\n";

    return 0;
}

 

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





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

×