Ir ao conteúdo
  • Cadastre-se
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;
}

 

  • 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

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

×