Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

@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

@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

@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






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

×