Ir ao conteúdo

Programa simples travando ao executar (sem erros)


babylettuce

Posts recomendados

Postado

oi, gente!

fiz esse programinha simples pra um exercício da faculdade, mas ele trava ao executar. ao compilar, não dá nenhum erro.

ao cadastrar candidatos do sexo masculino, tb nao trava. só trava ao cadastrar candidatos do sexo feminino e ver os resultados (não incluir mais nenhum candidato).

alguém pode me ajudar? não sei o que pode estar causando isso...

valeu! ^_^



#include <iostream>
using namespace std;


struct candidato
{
unsigned long int inscr;
unsigned int idade;
char sexo[2];
char exp[2];

};


struct candidato cand[100];

void iniciaVet()
{
register int t;
for (t=0;t<100;++t)
cand[t].inscr=0;
}

void cadastrar(int cont)
{

cout << "\nDigite a inscricao: ";
cin >> cand[cont].inscr;
cout << "Digite a idade: ";
cin >> cand[cont].idade;
cout << "Digite o sexo (F/M): ";
fflush(stdin);
gets(cand[cont].sexo);
cout << "Possui experiencia? (S/N): ";
gets(cand[cont].exp);
fflush(stdin);

}

int numCandFeminino(int cont)
{
int numCandF=0;

for(int i=0;i<=cont;i++)
{
if (cand[i].sexo[0] == 'f' || cand[i].sexo[0] == 'F')
numCandF++;
}

return numCandF;
}


int numCandMasculino(int cont)
{
int numCandM=0;

for(int i=0;i<=cont;i++)
{
if (cand[i].sexo[0] == 'm' || cand[i].sexo[0] == 'M')
numCandM++;
}

return numCandM;
}

int idadeMediaHExp (int cont)
{
int homens=0, idade=0;

for (int i=0;i<=cont;i++)
{
if ((cand[i].sexo[0] == 'm' || cand[i].sexo[0] == 'M') && (cand[i].exp[0] == 's' || cand[i].exp[0] == 'S'))
{
homens++;
idade = idade + cand[i].idade;
}
}

return (idade/homens);

}

int porcentHMais45 (int cont)
{
int homens=0, mais45=0;

for (int i=0;i<=cont;i++)
{
if (cand[i].sexo[0] == 'm' || cand[i].sexo[0] == 'M')
{
homens++;

if (cand[i].idade > 45)
mais45++;
}
}

return ((100*mais45)/homens);


}

int numMulheresInf35Exp (int cont)
{
int mulheres=0;

cout << "\nInscricoes das mulheres com idade inferior a 35 anos e experiencia: \n";

for (int i=0;i<=cont;i++)
{
if ((cand[i].sexo[0] == 'F' || cand[i].sexo[0] == 'f') && (cand[i].idade < 35) && (cand[i].exp[0] == 's' || cand[i].exp[0] == 'S'))
{
mulheres++;
cout << cand[i].inscr << "\n";
}
}

return mulheres;

}



int menorIdadeMulheresExp (int cont)
{
int menor=0;

for (int i=0;i<=cont;i++)
{
if ((cand[i].sexo[0] == 'F' || cand[i].sexo[0] == 'f') && (cand[i].exp[0] == 's' || cand[i].exp[0] == 'S'))
{
if (i=0)
menor = cand[i].idade; //iniciando a variável 'menor'


if (cand[i].idade < menor)
menor = cand[i].idade;
}
}

return menor;

}

int main ()
{
char s[10];
int cont=0;

iniciaVet();

do
{
cadastrar(cont);
cout << "\nCadastrar mais um nome? (S/N): ";
gets(s);
if (s[0] == 'S' || s[0] == 's')
cont++;

}while(s[0] == 'S' || s[0] == 's');

cout << "\nCandidatas do sexo feminino: " << numCandFeminino(cont);
cout << "\nCandidatos do sexo masculino: " << numCandMasculino(cont);
cout << "\nIdade media dos homens com experiencia: " << idadeMediaHExp(cont);
cout << "\nPorcentagem dos homens com mais de 45 anos entre o total de homens: " << porcentHMais45(cont) << "%";
cout << "\nNumero de mulheres com idade inferior a 35 anos e experiencia: " << numMulheresInf35Exp(cont);
cout << "\nMenor idade entre mulheres com experiencia: " << menorIdadeMulheresExp(cont);

system("pause");


}


Postado
nem li nada do seu post... Travar sem acusar erro é loop infinito...

valeu, mas não era nada disso. apenas quando não tinha nenhum homem estava havendo uma divisão por 0. adicionei um if e pronto.

  • Membro VIP
Postado
valeu, mas não era nada disso. apenas quando não tinha nenhum homem estava havendo uma divisão por 0. adicionei um if e pronto.

O código está funcionando corretamente agora ou ainda apresenta algum erro?

Abraço.

  • Membro VIP
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!