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:  
EduardoMQS

C++ Como se corrige este programa orientado a objetos em C++?

Recommended Posts

Depois de informar o valor de op[5] no método setDeficiente na classe Deficiente, o Windows 10 diz que o arquivo "*.exe" parou de funcionar. Então como se corrige esse problema?

 

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <locale.h>

class Deficiente{
    protected:
        bool deficienteFisicoNulo, deficienteFisicoLeve, deficienteFisicoModerado, deficienteFisicoPesado;
        bool deficienteMentalNulo, deficienteMentalLeve, deficienteMentalModerado, deficienteMentalPesado;
        bool deficienteComportamentalNulo, deficienteComportamentalLeve;
        bool deficienteComportamentalModerado, deficienteComportamentalPesado;
        bool deficienteVocalNulo, deficienteVocalLeve, deficienteVocalModerado, deficienteVocalPesado;
        bool deficienteAuditivoNulo, deficienteAuditivoLeve;
        bool deficienteAuditivoModerado, deficienteAuditivoPesado;
        bool deficienteVisualNulo, deficienteVisualLeve, deficienteVisualModerado, deficienteVisualPesado;
        bool paiPaqueraHomemPermite; /// O pai de um homem solteiro permite que este paquere.
        bool paiPaqueraMulherPermite; /// O pai de uma mulher solteira permite que esta paquere.
        bool maePaqueraHomemPermite; /// A mãe de um homem solteiro permite que este paquere.
        bool maePaqueraMulherPermite; /// A mãe de uma mulher solteira permite que esta paquere.
        int idade, diaAtual, mesAtual, anoAtual;
    public:
        void setDeficiente(){
            int op[6], i, j;
            printf("Quais os 6 tipos de deficiente você é?\n");
            printf("\n1 - Deficiente Físico Nulo");
            printf("\n2 - Deficiente Físico Leve");
            printf("\n3 - Deficiente Físico Moderado");
            printf("\n4 - Deficiente Físico Pesado");
            printf("\n5 - Deficiente Mental Nulo");
            printf("\n6 - Deficiente Mental Leve");
            printf("\n7 - Deficiente Mental Moderado");
            printf("\n8 - Deficiente Mental Pesado");
            printf("\n9 - Deficiente Comportamental Nulo");
            printf("\n10 - Deficiente Comportamental Leve");
            printf("\n11 - Deficiente Comportamental Moderado");
            printf("\n12 - Deficiente Comportamental Pesado");
            printf("\n13 - Deficiente Vocal Nulo");
            printf("\n14 - Deficiente Vocal Leve");
            printf("\n15 - Deficiente Vocal Moderado");
            printf("\n16 - Deficiente Vocal Pesado");
            printf("\n17 - Deficiente Auditivo Nulo");
            printf("\n18 - Deficiente Auditivo Leve");
            printf("\n19 - Deficiente Auditivo Moderado");
            printf("\n20 - Deficiente Auditivo Pesado");
            printf("\n21 - Deficiente Visual Nulo");
            printf("\n22 - Deficiente Visual Leve");
            printf("\n23 - Deficiente Visual Moderado");
            printf("\n24 - Deficiente Visual Pesado\n\n");
            for(i = 0; i < 6; i++){
                scanf("%d", op[i]);
                if(op[i] == 1 || op[i] == 5 || op[i] == 9 || op[i] == 13 || op[i] == 17 || op[i] == 21) j = 0;
                else if(op[i] == 2 || op[i] == 6 || op[i] == 10 || op[i] == 14 || op[i] == 18 || op[i] == 22) j = 1;
                else if(op[i] == 3 || op[i] == 7 || op[i] == 11 || op[i] == 15 || op[i] == 19 || op[i] == 23) j = 2;
                else if(op[i] == 4 || op[i] == 8 || op[i] == 12 || op[i] == 16 || op[i] == 20 || op[i] == 24) j = 3;
                if(i == 0){
                    if(j == 0) this->deficienteFisicoNulo = true;
                    else if(j == 1) this->deficienteFisicoLeve = true;
                    else if(j == 2) this->deficienteFisicoModerado = true;
                    else if(j == 3) this->deficienteFisicoPesado = true;
                }
                else if(i == 1){
                    if(j == 0) this->deficienteMentalNulo = true;
                    else if(j == 1) this->deficienteMentalLeve = true;
                    else if(j == 2) this->deficienteMentalModerado = true;
                    else if(j == 3) this->deficienteMentalPesado = true;
                }
                else if(i == 2){
                    if(j == 0) this->deficienteComportamentalNulo = true;
                    else if(j == 1) this->deficienteComportamentalLeve = true;
                    else if(j == 2) this->deficienteComportamentalModerado = true;
                    else if(j == 3) this->deficienteComportamentalPesado = true;
                }
                else if(i == 3){
                    if(j == 0) this->deficienteVocalNulo = true;
                    else if(j == 1) this->deficienteVocalLeve = true;
                    else if(j == 2) this->deficienteVocalModerado = true;
                    else if(j == 3) this->deficienteVocalPesado = true;
                }
                else if(i == 4){
                    if(j == 0) this->deficienteAuditivoNulo = true;
                    else if(j == 1) this->deficienteAuditivoLeve = true;
                    else if(j == 2) this->deficienteAuditivoModerado = true;
                    else if(j == 3) this->deficienteAuditivoPesado = true;
                }
                else if(i == 5){
                    if(j == 0) this->deficienteVisualNulo = true;
                    else if(j == 1) this->deficienteVisualLeve = true;
                    else if(j == 2) this->deficienteVisualModerado = true;
                    else if(j == 3) this->deficienteVisualPesado = true;
                }
            }
        }
        void setDataAtual(){
            printf("Em que ano nós estamos? ");
            scanf("%d", &this->anoAtual);
            printf("Em que mês nós estamos? ");
            scanf("%d", &this->mesAtual);
            printf("Em que dia nós estamos? ");
            scanf("%d", &this->diaAtual);
        }
        int __cdecl getDataAtual(){
            return ("%d/%d/%d", this->diaAtual, this->mesAtual, this->anoAtual);
        }
        void setPodePaquerar(){
            int genero;
            bool paiPermit, maePermit;
            do{
                printf("Você é homem (1) ou mulher (2)? ");
                scanf("%d", &genero);
            }
            while(genero < 1 || genero > 2);
            printf("Qual é a sua idade? ");
            scanf("%d", &this->idade);
            printf("Seu pai te permite paquerar? ");
            scanf("%d", &paiPermit);
            printf("Sua mãe te permite paquerar? ");
            scanf("%d", &maePermit);
            if(genero == 1){
                if(paiPermit) this->paiPaqueraHomemPermite = true;
                else this->paiPaqueraHomemPermite = false;
                if(maePermit) this->maePaqueraHomemPermite = true;
                else this->maePaqueraHomemPermite = false;
            }
            else if(genero == 2){
                if(paiPermit) this->paiPaqueraMulherPermite = true;
                else this->paiPaqueraMulherPermite = false;
                if(maePermit) this->maePaqueraMulherPermite = true;
                else this->maePaqueraMulherPermite = false;
            }
        }
        bool getPodePaquerar(){
            return ((this->paiPaqueraHomemPermite && this->maePaqueraHomemPermite) || (this->paiPaqueraMulherPermite && this->maePaqueraMulherPermite));
        }
};

class Paquera:public Deficiente{
    protected:
        int anoInicPaquera, mesInicPaquera, diaInicPaquera;
        bool paiNamoradoPermite; /// O pai de um homem paquera permite que este namore.
        bool paiNamoradaPermite; /// O pai de uma mulher paquera permite que esta namore.
        bool maeNamoradoPermite; /// A mãe de um homem paquera permite que este namore.
        bool maeNamoradaPermite; /// A mãe de uma mulher paquera permite que esta namore.
        bool separado, divorciado, viuvo;
    public:
        int getTempoMinMesesNamoro(){ /// Tempo mínimo em meses para paquerar antes de namorar
            if(this->deficienteFisicoNulo || this->deficienteMentalNulo || this->deficienteComportamentalNulo || this->deficienteVocalNulo || this->deficienteAuditivoNulo || this->deficienteVisualNulo) return 1;
            else if(this->deficienteFisicoLeve || this->deficienteMentalLeve || this->deficienteComportamentalLeve || this->deficienteVocalLeve || this->deficienteAuditivoLeve || this->deficienteVisualLeve) return 2;
            else if(this->deficienteFisicoModerado || this->deficienteMentalModerado || this->deficienteComportamentalModerado || this->deficienteVocalModerado || this->deficienteAuditivoModerado || this->deficienteVisualModerado) return 4;
            else if(this->deficienteFisicoPesado || this->deficienteMentalPesado || this->deficienteComportamentalPesado || this->deficienteVocalPesado || this->deficienteAuditivoPesado || this->deficienteVisualPesado) return 6;
        }
        void frequenciaEncontroPresencial(){
            printf("Vocês precisam se encontrar de 1, 2 ou 3 vezes por semana!");
        }
        void irCinema(){
            printf("Vocês precisam ir ao cinema no mínimo 2 vezes por mês!");
        }
        void fazerLanche(){
            printf("Vocês precisam fazer um lanche em lanchonetes no mínimo 2 vezes por mês!");
        }
        void visitarCasa(){
            printf("Tem que ser no mínimo 2 vezes por mês, tanto o paquera ir à casa da paquera, como a paquera ir à casa do paquera!");
        }
        void setDataInicPaquera(){
            printf("Em que ano você começou a paquerar? ");
            scanf("%d", &this->anoInicPaquera);
            printf("Em que mês você começou a paquerar? ");
            scanf("%d", &this->mesInicPaquera);
            printf("Em que dia você começou a paquerar? ");
            scanf("%d", &this->diaInicPaquera);
        }
        int __cdecl getDataInicPaquera(){
            return ("%d/%d/%d", this->diaInicPaquera, this->mesInicPaquera, this->anoInicPaquera);
        }
        int mesesPaquera(){
            int meses = this->mesAtual - this->mesInicPaquera;
            meses += (12 * (this->anoAtual - this->anoInicPaquera));
            return meses;
        }
        bool naoPodeMaisRelacionamento(){ /// Você não pode mais se relacionar com quem você estava.
            printf("Você já se separou terminando o relacionamento com o retorno da mesma pessoa um outro momento da sua vida? ");
            scanf("%d", &this->separado);
            printf("Você já se divorciou terminando o relacionamento não retornando com a mesma pessoa até sua morte? ");
            scanf("%d", &this->divorciado);
            printf("Você já se enviuvou terminando o relacionamento descobrindo que a pessoa já faleceu durante o relacionamento? ");
            scanf("%d", &this->viuvo);
            return (this->separado || this->divorciado || this->viuvo);
        }
        void setPodeNamorar(){
            int genero;
            bool paiPermit, maePermit;
            do{
                printf("Você é homem (1) ou mulher (2)? ");
                scanf("%d", &genero);
            }
            while(genero < 1 || genero > 2);
            printf("Qual é a sua idade? ");
            scanf("%d", &this->idade);
            printf("Seu pai te permite namorar (0 / 1)? ");
            scanf("%d", &paiPermit);
            printf("Sua mãe te permite namorar (0 / 1)? ");
            scanf("%d", &maePermit);
            if(genero == 1){
                if(paiPermit) this->paiNamoradoPermite = true;
                else this->paiNamoradoPermite = false;
                if(maePermit) this->maeNamoradoPermite = true;
                else this->maeNamoradoPermite = false;
            }
            if(genero == 2){
                if(paiPermit) this->paiNamoradaPermite = true;
                else this->paiNamoradaPermite = false;
                if(maePermit) this->maeNamoradaPermite = true;
                else this->maeNamoradaPermite = false;
            }
            if(this->paiNamoradoPermite) this->paiPaqueraHomemPermite = true;
            if(this->maeNamoradoPermite) this->maePaqueraHomemPermite = true;
            if(this->paiNamoradaPermite) this->paiPaqueraMulherPermite = true;
            if(this->maeNamoradaPermite) this->maePaqueraMulherPermite = true;
        }
        bool getPodeNamorar(){
            return (((this->paiNamoradoPermite && this->maeNamoradoPermite) || (this->paiNamoradaPermite && this->maeNamoradaPermite)) && mesesPaquera() >= getTempoMinMesesNamoro());
        }
};

class Namoro:public Paquera{
    protected:
        int anoInicNamoro, mesInicNamoro, diaInicNamoro;
        bool paiNoivoPermite; /// O pai de um homem namorado permite que este noive.
        bool paiNoivaPermite; /// O pai de uma mulher namorada permite que esta noive.
        bool maeNoivoPermite; /// A mãe de um homem namorado permite que este noive.
        bool maeNoivaPermite; /// A mãe de uma mulher namorada permite que esta noive.
        bool paiConviventeHomemPermite; /// O pai de um homem namorado permite que este conviva.
        bool paiConviventeMulherPermite; /// O pai de uma mulher namorada permite que esta conviva.
        bool maeConviventeHomemPermite; /// O pai de um homem namorado permite que este conviva.
        bool maeConviventeMulherPermite; /// O pai de uma mulher namorada permite que esta conviva.
    public:
        int getTempoMinMesesNoivado(){ /// Tempo mínimo em meses para namorar antes de noivar
            if(this->deficienteFisicoNulo || this->deficienteMentalNulo || this->deficienteComportamentalNulo || this->deficienteVocalNulo || this->deficienteAuditivoNulo || this->deficienteVisualNulo) return 12;
            else if(this->deficienteFisicoLeve || this->deficienteMentalLeve || this->deficienteComportamentalLeve || this->deficienteVocalLeve || this->deficienteAuditivoLeve || this->deficienteVisualLeve) return 16;
            else if(this->deficienteFisicoModerado || this->deficienteMentalModerado || this->deficienteComportamentalModerado || this->deficienteVocalModerado || this->deficienteAuditivoModerado || this->deficienteVisualModerado) return 20;
            else if(this->deficienteFisicoPesado || this->deficienteMentalPesado || this->deficienteComportamentalPesado || this->deficienteVocalPesado || this->deficienteAuditivoPesado || this->deficienteVisualPesado) return 24;
        }
        int getTempoMinMesesConvivencia(){ /// Tempo mínimo em meses para namorar antes de conviver
            return getTempoMinMesesNoivado();
        }
        int mesesNamoro(){
            int meses = this->mesAtual - this->mesInicNamoro;
            meses += (12 * (this->anoAtual - this->anoInicNamoro));
            return meses;
        }
        void setDataInicNamoro(){
            printf("Em que ano você começou a namorar? ");
            scanf("%d", &this->anoInicNamoro);
            printf("Em que mês você começou a namorar? ");
            scanf("%d", &this->mesInicNamoro);
            printf("Em que dia você começou a namorar? ");
            scanf("%d", &this->diaInicNamoro);
        }
        int __cdecl getDataInicNamoro(){
            return ("%d/%d/%d", this->diaInicNamoro, this->mesInicNamoro, this->anoInicNamoro);
        }
        void dormirCasaRelacionamento(){
            printf("Você pode dormir na casa de quem você está tendo o relacionamento!");
        }
        void viajarJunto(){
            printf("Você pode viajar junto com quem você está tendo o relacionamento!");
        }
        void viajarTodoFimSemana(){
            printf("Você pode viajar todo fim de semana para ver quem você está tendo o relacionamento, se ele mora em outra cidade!");
        }
        void beijarBoca(){
            printf("Você e quem você está tendo o relacionamento podem se beijar na boca!");
        }
        void alianca(){
            printf("Você pode ter o nome de quem você está tendo o relacionamento na sua aliança de prata no anelar direito!");
        }
        void setPodeNoivar(){
            int genero;
            bool paiPermit, maePermit;
            do{
                printf("Você é homem (1) ou mulher (2)? ");
                scanf("%d", &genero);
            }
            while(genero < 1 || genero > 2);
            printf("Qual é a sua idade? ");
            scanf("%d", &this->idade);
            printf("Seu pai te permite noivar (0 / 1)? ");
            scanf("%d", &paiPermit);
            printf("Sua mãe te permite noivar (0 / 1)? ");
            scanf("%d", &maePermit);
            if(genero == 1){
                if(paiPermit) this->paiNoivoPermite = true;
                else this->paiNoivoPermite = false;
                if(maePermit) this->maeNoivoPermite = true;
                else this->maeNoivoPermite = false;
            }
            else if(genero == 2){
                if(paiPermit) this->paiNoivaPermite = true;
                else this->paiNoivaPermite = false;
                if(maePermit) this->maeNoivaPermite = true;
                else this->maeNoivaPermite = false;
            }
            if(this->paiNoivoPermite) this->paiNamoradoPermite = true;
            if(this->maeNoivoPermite) this->maeNamoradoPermite = true;
            if(this->paiNoivaPermite) this->paiNamoradaPermite = true;
            if(this->maeNoivaPermite) this->maeNamoradaPermite = true;
        }
        bool getPodeNoivar(){
            return (((this->paiNoivoPermite && this->maeNoivoPermite) || (this->paiNoivaPermite && this->maeNoivaPermite)) && mesesNamoro() >= getTempoMinMesesNoivado());
        }
        void setPodeConviver(){
            int genero;
            bool paiPermit, maePermit;
            do{
                printf("Você é homem (1) ou mulher (2)? ");
                scanf("%d", &genero);
            }
            while(genero < 1 || genero > 2);
            printf("Qual é a sua idade? ");
            scanf("%d", &this->idade);
            printf("Seu pai te permite conviver (0 / 1)? ");
            scanf("%d", &paiPermit);
            printf("Sua mãe te permite conviver (0 / 1)? ");
            scanf("%d", &maePermit);
            if(genero == 1){
                if(paiPermit) this->paiConviventeHomemPermite = true;
                else this->paiConviventeHomemPermite = false;
                if(maePermit) this->maeConviventeHomemPermite = true;
                else this->maeConviventeHomemPermite = false;
            }
            else if(genero == 2){
                if(paiPermit) this->paiConviventeMulherPermite = true;
                else this->paiConviventeMulherPermite = false;
                if(maePermit) this->maeConviventeMulherPermite = true;
                else this->maeConviventeMulherPermite = false;
            }
            if(this->paiConviventeHomemPermite) this->paiNamoradoPermite = true;
            if(this->maeConviventeHomemPermite) this->maeNamoradoPermite = true;
            if(this->paiConviventeMulherPermite) this->paiNamoradoPermite = true;
            if(this->maeConviventeMulherPermite) this->maeNamoradoPermite = true;
        }
        bool getPodeConviver(){
            return (((this->paiConviventeHomemPermite && this->maeConviventeHomemPermite) || (this->paiConviventeMulherPermite && this->maeConviventeMulherPermite)) && mesesNamoro() >= getTempoMinMesesConvivencia());
        }
};

class Noivado:public Namoro{
    protected:
        int anoInicNoivado, mesInicNoivado, diaInicNoivado, numFilhos;
        bool temFilhos, temNetos, temBisnetos, temTrinetos, temTetranetos;
        bool paiCasadoCivilPermite; /// O pai de um homem noivo permite que este se case civilmente.
        bool paiCasadaCivilPermite; /// O pai de uma mulher noiva permite que esta se case civilmente.
        bool maeCasadoCivilPermite; /// A mãe de um homem noivo permite que este se case civilmente.
        bool maeCasadaCivilPermite; /// A mãe de uma mulher noiva permite que esta se case civilmente.
        bool paiCasadoReligiosoPermite; /// O pai de um homem noivo permite que este se case religiosamente.
        bool paiCasadaReligiosoPermite; /// O pai de uma mulher noiva permite que esta se case religiosamente.
        bool maeCasadoReligiosoPermite; /// A mãe de um homem noivo permite que este se case religiosamente.
        bool maeCasadaReligiosoPermite; /// A mãe de uma mulher noiva permite que esta se case religiosamente.
    public:
        int getTempoMinMesesCasamento(){ /// Tempo mínimo em meses para noivar antes de casar
            if(this->deficienteFisicoNulo || this->deficienteMentalNulo || this->deficienteComportamentalNulo || this->deficienteVocalNulo || this->deficienteAuditivoNulo || this->deficienteVisualNulo) return 4;
            else if(this->deficienteFisicoLeve || this->deficienteMentalLeve || this->deficienteComportamentalLeve || this->deficienteVocalLeve || this->deficienteAuditivoLeve || this->deficienteVisualLeve) return 8;
            else if(this->deficienteFisicoModerado || this->deficienteMentalModerado || this->deficienteComportamentalModerado || this->deficienteVocalModerado || this->deficienteAuditivoModerado || this->deficienteVisualModerado) return 12;
            else if(this->deficienteFisicoPesado || this->deficienteMentalPesado || this->deficienteComportamentalPesado || this->deficienteVocalPesado || this->deficienteAuditivoPesado || this->deficienteVisualPesado) return 16;
        }
        int mesesNoivado(){
            int meses = this->mesAtual - this->mesInicNoivado;
            meses += (12 * (this->anoAtual - this->anoInicNoivado));
            return meses;
        }
        void temHerdeiros(){
            this->temFilhos = false;
            this->temNetos = false;
            this->temBisnetos = false;
            this->temTrinetos = false;
            this->temTetranetos = false;
            printf("Você já teve filhos (0 / 1)? ");
            scanf("%d", &this->temFilhos);
            if(this->temFilhos){
                printf("Você já teve netos (0 / 1)? ");
                scanf("%d", &this->temNetos);
                if(this->temNetos){
                    printf("Você já teve bisnetos (0 / 1)? ");
                    scanf("%d", &this->temBisnetos);
                    if(this->temBisnetos){
                        printf("Você já teve trinetos (0 / 1)? ");
                        scanf("%d", &this->temTrinetos);
                        if(this->temTrinetos){
                            printf("Você já teve tetranetos (0 / 1)? ");
                            scanf("%d", &this->temTetranetos);
                        }
                    }
                }
            }
        }
        void numeroFilhos(){
            do{
                printf("Quantos filhos você quer ter desde quando você começou a noivar até sua morte? ");
                scanf("%d", &this->numFilhos);
            }
            while(this->numFilhos < 0);
        }
        void setDataInicNoivado(){
            printf("Em que ano você começou a noivar? ");
            scanf("%d", &this->anoInicNoivado);
            printf("Em que mês você começou a noivar? ");
            scanf("%d", &this->mesInicNoivado);
            printf("Em que dia você começou a noivar? ");
            scanf("%d", &this->diaInicNoivado);
        }
        int __cdecl getDataInicNoivado(){
            return ("%d/%d/%d", this->diaInicNoivado, this->mesInicNoivado, this->anoInicNoivado);
        }
        void festa(){
            printf("Você pode fazer uma festa no início do seu noivado!");
        }
        void setPodeCasar(){
            int genero;
            bool paiPermitCiv, maePermitCiv, paiPermitRel, maePermitRel;
            do{
                printf("Você é homem (1) ou mulher (2)? ");
                scanf("%d", &genero);
            }
            while(genero < 1 || genero > 2);
            printf("Qual é a sua idade? ");
            scanf("%d", &this->idade);
            printf("Seu pai te permite casar civilmente (0 / 1)? ");
            scanf("%d", &paiPermitCiv);
            printf("Sua mãe te permite casar civilmente (0 / 1)? ");
            scanf("%d", &maePermitCiv);
            printf("Seu pai te permite casar religiosamente (0 / 1)? ");
            scanf("%d", &paiPermitRel);
            printf("Sua mãe te permite casar religiosamente (0 / 1)? ");
            scanf("%d", &maePermitRel);
            if(genero == 1){
                if(paiPermitCiv) this->paiCasadoCivilPermite = true;
                else this->paiCasadoCivilPermite = false;
                if(paiPermitRel) this->paiCasadoReligiosoPermite = true;
                else this->paiCasadoReligiosoPermite = false;
                if(maePermitCiv) this->maeCasadoCivilPermite = true;
                else this->maeCasadoCivilPermite = false;
                if(maePermitRel) this->maeCasadoReligiosoPermite = true;
                else this->maeCasadoReligiosoPermite = false;
            }
            else if(genero == 2){
                if(paiPermitCiv) this->paiCasadaCivilPermite = true;
                else this->paiCasadaCivilPermite = false;
                if(paiPermitRel) this->paiCasadaReligiosoPermite = true;
                else this->paiCasadaReligiosoPermite = false;
                if(maePermitCiv) this->maeCasadaCivilPermite = true;
                else this->maeCasadaCivilPermite = false;
                if(maePermitRel) this->maeCasadaReligiosoPermite = true;
                else this->maeCasadaReligiosoPermite = false;
            }
            if(this->paiCasadoCivilPermite || this->paiCasadoReligiosoPermite) this->paiNoivoPermite = true;
            if(this->paiCasadaCivilPermite || this->paiCasadaReligiosoPermite) this->paiNoivaPermite = true;
            if(this->maeCasadoCivilPermite || this->maeCasadoReligiosoPermite) this->maeNoivoPermite = true;
            if(this->maeCasadaCivilPermite || this->maeCasadaReligiosoPermite) this->maeNoivaPermite = true;
        }
        bool getPodeCasar(){
            return ((((this->paiCasadoCivilPermite && this->maeCasadoCivilPermite) || (this->paiCasadoReligiosoPermite && this->maeCasadoReligiosoPermite)) || ((this->paiCasadaCivilPermite && this->maeCasadaCivilPermite) || (this->paiCasadaReligiosoPermite && this->maeCasadaReligiosoPermite))) && mesesNoivado() >= getTempoMinMesesCasamento());
        }
};

class Convivencia:public Namoro{
    protected:
        int anoInicConvivencia, mesInicConvivencia, diaInicConvivencia, numFilhos;
        bool temFilhos, temNetos, temBisnetos, temTrinetos, temTetranetos;
        bool paiCasadoCivilPermite; /// O pai de um homem convivente permite que este se case civilmente.
        bool paiCasadaCivilPermite; /// O pai de uma mulher convivente permite que esta se case civilmente.
        bool maeCasadoCivilPermite; /// A mãe de um homem convivente permite que este se case civilmente.
        bool maeCasadaCivilPermite; /// A mãe de uma mulher convivente permite que esta se case civilmente.
        bool paiCasadoReligiosoPermite; /// O pai de um homem convivente permite que este se case religiosamente.
        bool paiCasadaReligiosoPermite; /// O pai de uma mulher convivente permite que esta se case religiosamente.
        bool maeCasadoReligiosoPermite; /// A mãe de um homem convivente permite que este se case religiosamente.
        bool maeCasadaReligiosoPermite; /// A mãe de uma mulher convivente permite que esta se case religiosamente.
    public:
        int getTempoMinMesesCasamento(){ /// Tempo mínimo em meses para conviver antes de casar
            if(this->deficienteFisicoNulo || this->deficienteMentalNulo || this->deficienteComportamentalNulo || this->deficienteVocalNulo || this->deficienteAuditivoNulo || this->deficienteVisualNulo) return 6;
            else if(this->deficienteFisicoLeve || this->deficienteMentalLeve || this->deficienteComportamentalLeve || this->deficienteVocalLeve || this->deficienteAuditivoLeve || this->deficienteVisualLeve) return 9;
            else if(this->deficienteFisicoModerado || this->deficienteMentalModerado || this->deficienteComportamentalModerado || this->deficienteVocalModerado || this->deficienteAuditivoModerado || this->deficienteVisualModerado) return 12;
            else if(this->deficienteFisicoPesado || this->deficienteMentalPesado || this->deficienteComportamentalPesado || this->deficienteVocalPesado || this->deficienteAuditivoPesado || this->deficienteVisualPesado) return 15;
        }
        int mesesConvivencia(){
            int meses = this->mesAtual - this->mesInicConvivencia;
            meses += (12 * (this->anoAtual - this->anoInicConvivencia));
            return meses;
        }
        void temHerdeiros(){
            this->temFilhos = false;
            this->temNetos = false;
            this->temBisnetos = false;
            this->temTrinetos = false;
            this->temTetranetos = false;
            printf("Você já teve filhos (0 / 1)? ");
            scanf("%d", &this->temFilhos);
            if(this->temFilhos){
                printf("Você já teve netos (0 / 1)? ");
                scanf("%d", &this->temNetos);
                if(this->temNetos){
                    printf("Você já teve bisnetos (0 / 1)? ");
                    scanf("%d", &this->temBisnetos);
                    if(this->temBisnetos){
                        printf("Você já teve trinetos (0 / 1)? ");
                        scanf("%d", &this->temTrinetos);
                        if(this->temTrinetos){
                            printf("Você já teve tetranetos (0 / 1)? ");
                            scanf("%d", &this->temTetranetos);
                        }
                    }
                }
            }
        }
        void numeroFilhos(){
            do{
                printf("Quantos filhos você quer ter desde quando você começou a noivar até sua morte? ");
                scanf("%d", &this->numFilhos);
            }
            while(this->numFilhos < 0);
        }
        void setDataInicConvivencia(){
            printf("Em que ano você começou a conviver? ");
            scanf("%d", &this->anoInicConvivencia);
            printf("Em que mês você começou a conviver? ");
            scanf("%d", &this->mesInicConvivencia);
            printf("Em que dia você começou a conviver? ");
            scanf("%d", &this->diaInicConvivencia);
        }
        int __cdecl getDataInicConvivencia(){
            return ("%d/%d/%d", this->diaInicConvivencia, this->mesInicConvivencia, this->anoInicConvivencia);
        }
        void morarJunto(){
            printf("Você pode morar junto com quem você está tendo o relacionamento!");
        }
        void alianca(){
            printf("Você pode ter o nome de quem você está tendo o relacionamento na sua aliança de ouro no anelar direito!");
        }
        void setPodeCasar(){
            int genero;
            bool paiPermitCiv, maePermitCiv, paiPermitRel, maePermitRel;
            do{
                printf("Você é homem (1) ou mulher (2)? ");
                scanf("%d", &genero);
            }
            while(genero < 1 || genero > 2);
            printf("Qual é a sua idade? ");
            scanf("%d", &this->idade);
            printf("Seu pai te permite casar civilmente (0 / 1)? ");
            scanf("%d", &paiPermitCiv);
            printf("Sua mãe te permite casar civilmente (0 / 1)? ");
            scanf("%d", &maePermitCiv);
            printf("Seu pai te permite casar religiosamente (0 / 1)? ");
            scanf("%d", &paiPermitRel);
            printf("Sua mãe te permite casar religiosamente (0 / 1)? ");
            scanf("%d", &maePermitRel);
            if(genero == 1){
                if(paiPermitCiv) this->paiCasadoCivilPermite = true;
                else this->paiCasadoCivilPermite = false;
                if(paiPermitRel) this->paiCasadoReligiosoPermite = true;
                else this->paiCasadoReligiosoPermite = false;
                if(maePermitCiv) this->maeCasadoCivilPermite = true;
                else this->maeCasadoCivilPermite = false;
                if(maePermitRel) this->maeCasadoReligiosoPermite = true;
                else this->maeCasadoReligiosoPermite = false;
            }
            else if(genero == 2){
                if(paiPermitCiv) this->paiCasadaCivilPermite = true;
                else this->paiCasadaCivilPermite = false;
                if(paiPermitRel) this->paiCasadaReligiosoPermite = true;
                else this->paiCasadaReligiosoPermite = false;
                if(maePermitCiv) this->maeCasadaCivilPermite = true;
                else this->maeCasadaCivilPermite = false;
                if(maePermitRel) this->maeCasadaReligiosoPermite = true;
                else this->maeCasadaReligiosoPermite = false;
            }
            if(this->paiCasadoCivilPermite || this->paiCasadoReligiosoPermite) this->paiConviventeHomemPermite = true;
            if(this->paiCasadaCivilPermite || this->paiCasadaReligiosoPermite) this->paiConviventeMulherPermite = true;
            if(this->maeCasadoCivilPermite || this->maeCasadoReligiosoPermite) this->maeConviventeHomemPermite = true;
            if(this->maeCasadaCivilPermite || this->maeCasadaReligiosoPermite) this->maeConviventeMulherPermite = true;
        }
        bool getPodeCasar(){
            return ((((this->paiCasadoCivilPermite && this->maeCasadoCivilPermite) || (this->paiCasadoReligiosoPermite && this->maeCasadoReligiosoPermite)) || ((this->paiCasadaCivilPermite && this->maeCasadaCivilPermite) || (this->paiCasadaReligiosoPermite && this->maeCasadaReligiosoPermite))) && mesesConvivencia() >= getTempoMinMesesCasamento());
        }
};

class Casamento:public Noivado, public Convivencia{
    protected:
        int anoInicCasamento, mesInicCasamento, diaInicCasamento;
        bool civil, religioso;
    public:
        void setDataInicCasamento(){
            printf("Em que ano você começou a casar-se? ");
            scanf("%d", &this->anoInicCasamento);
            printf("Em que mês você começou a casar-se? ");
            scanf("%d", &this->mesInicCasamento);
            printf("Em que dia você começou a casar-se? ");
            scanf("%d", &this->diaInicCasamento);
        }
        int __cdecl getDataInicCasamento(){
            return ("%d/%d/%d", this->diaInicCasamento, this->mesInicCasamento, this->anoInicCasamento);
        }
        void setEhCasamento(){
            printf("Você já fez casamento civil (0 / 1)? ");
            scanf("%d", &this->civil);
            printf("Você já fez casamento religioso (0 / 1)? ");
            scanf("%d", &this->religioso);
        }
        bool getEhCasamento(){
            return (this->civil || this->religioso);
        }
        void alianca(){
            printf("Você pode ter o nome de quem você está tendo o relacionamento na sua aliança de ouro no anelar esquerdo!");
        }
        void festa(){
            printf("Você pode fazer uma festa no início do seu casamento!");
        }
};

int main(){
    int op;
    setlocale(LC_ALL, "Portuguese");
    Deficiente a;
    Paquera b;
    Namoro c;
    Noivado d;
    Convivencia e;
    Casamento f;
    a.setDeficiente();
    a.setDataAtual();
    bool pedeCasamento, ganhaCasamento;
    do{
        printf("Você é solteiro (1), paquera (2), namorado (3), noivo (4), convivente (5) ou casado (6)? ");
        scanf("%d", &op);
        switch(op){
            case 1:
                bool procuraPaquera;
                b.naoPodeMaisRelacionamento();
                if(!b.naoPodeMaisRelacionamento()) printf("Você está procurando pela primeira vez alguém para paquerar (0 / 1)? ");
                else printf("Você ainda está procurando outra pessoa para paquerar (0 / 1)? ");
                scanf("%d", &procuraPaquera);
                if(procuraPaquera){
                    a.setPodePaquerar();
                    if(a.getPodePaquerar()) printf("Então continue procurando!");
                    else printf("Agora você não pode paquerar!");
                }
                break;
            case 2:
                bool pedeNamoro, ganhaNamoro;
                b.setDataInicPaquera();
                b.fazerLanche();
                b.frequenciaEncontroPresencial();
                b.irCinema();
                printf("Você quer namorar quem você está paquerando (0 / 1)? ");
                scanf("%d", &pedeNamoro);
                if(pedeNamoro){
                    b.setPodeNamorar();
                    if(b.getPodeNamorar()){
                        printf("Quem você está paquerando quer te namorar (0 / 1)? ");
                        scanf("%d", &ganhaNamoro);
                        if(ganhaNamoro) printf("Então vocês podem namorar!");
                        else printf("Então continue paquerando!");
                    }
                    else printf("Então continue paquerando!");
                }
                break;
            case 3:
                bool pedeNoivado, ganhaNoivado, pedeConvivencia, ganhaConvivencia;
                c.alianca();
                c.beijarBoca();
                c.dormirCasaRelacionamento();
                c.viajarJunto();
                c.viajarTodoFimSemana();
                c.setDataInicNamoro();
                printf("Você quer noivar com quem você está namorando (0 / 1)? ");
                scanf("%d", &pedeNoivado);
                if(!pedeNoivado){
                    printf("Você quer conviver com quem você está namorando (0 / 1)? ");
                    scanf("%d", &pedeConvivencia);
                    if(pedeConvivencia){
                        c.setPodeConviver();
                        if(c.getPodeConviver()){
                            printf("Quem você está namorando quer conviver com você (0 / 1)? ");
                            scanf("%d", &ganhaConvivencia);
                            if(ganhaConvivencia) printf("Então vocês podem conviver!");
                            else printf("Então continue namorando!");
                        }
                        else printf("Então continue namorando!");
                    }
                }
                else{
                    c.setPodeNoivar();
                    if(c.getPodeNoivar()){
                        printf("Quem você está namorando quer noivar com você? (0 / 1)? ");
                        scanf("%d", &ganhaNoivado);
                        if(ganhaNoivado) printf("Então vocês podem conviver!");
                        else printf("Então continue namorando!");
                    }
                    else printf("Então continue namorando!");
                }
                break;
            case 4:
                d.festa();
                d.numeroFilhos();
                d.temHerdeiros();
                d.setDataInicNoivado();
                d.alianca();
                printf("Você quer se casar com quem você está noivando (0 / 1)? ");
                scanf("%d", &pedeCasamento);
                if(pedeCasamento){
                    d.setPodeCasar();
                    if(d.getPodeCasar()){
                        printf("Quem você está noivando quer se casar com você (0 / 1)? ");
                        scanf("%d", &ganhaCasamento);
                        if(ganhaCasamento) printf("Então vocês podem se casar!");
                        else printf("Então continue noivando!");
                    }
                    else printf("Então continue noivando!");
                }
                break;
            case 5:
                e.alianca();
                e.morarJunto();
                e.numeroFilhos();
                e.temHerdeiros();
                printf("Você quer se casar com quem você está convivendo (0 / 1)? ");
                scanf("%d", &pedeCasamento);
                if(pedeCasamento){
                    d.setPodeCasar();
                    if(d.getPodeCasar()){
                        printf("Quem você está convivendo quer se casar com você (0 / 1)? ");
                        scanf("%d", &ganhaCasamento);
                        if(ganhaCasamento) printf("Então vocês podem se casar!");
                        else printf("Então continue convivendo!");
                    }
                    else printf("Então continue convivendo!");
                }
                break;
            case 6:
                f.alianca();
                f.setDataInicCasamento();
                f.setEhCasamento();
                if(!f.getEhCasamento()) printf("Então não é casamento!");
                break;
        }
    }
    while(op < 1 || op > 6);
    return 0;
}

 

Editado por EduardoMQS
Remover código sem a tag CODE
  • Curtir 2

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

×