Ir ao conteúdo
  • Cadastre-se
calouroentediado

Alguém sabe qual o problema com meu código?

Recommended Posts

 

Fiz isso:

#include <iostream>;
#include <cstdlib>;
using namespace std;
int main ( )
{
char nome[3][50], sexo[3][50];
int idade[3], x=0;
float peso[3], altura[3], imc[3];
for(x=0; x<=2; x=x+1)
{cout << "QUAL O NOME DA PESSOA " << x << " ?";
gets (nome[x]);
cout << "QUAL O SEXO DA PESSOA " << x << " ?";
gets (sexo[x]);
cout << "QUAL A IDADE DA PESSOA " << x << " ?";
cin >> idade[x];
cout << "QUAL O PESO DA PESSOA " << x << " ?";
cin >> peso[x];
cout << "QUAL A ALTURA DA PESSOA " << x << " ?";
cin >> altura[x];
imc[x] = peso[x]/( altura[x] * altura[x]);}
for (x=0; x<=2; x=x+1)
{cout << nome[x] << endl;
cout << sexo[x] << endl;
cout << idade[x] << endl;
cout << peso[x] << endl;
cout << altura[x]<< endl;
cout << imc[x] << endl;}
system ("pause");
}

 

Uso o DEVC++, sou iniciante (Tô pagando uma cadeia de algoritmos, curso Eng.Civil), alguém poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diz você o que está acontecendo ?!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, desculpa! esqueci de dizer o_o

 

Ele compila normal, aí quando vai executar, ele vai pedindo os dados: pra pessoa 0, ele pega normal. Só que quando vai pra pessoa 1, ele pula o nome (não entendo porque) e pega o resto dos dados. O mesmo para a pessoa 2.

 

algoritmoteste.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bem @calouroentediado

O problema está na função gets; Que não ignora o caractere de nova linha na última entrada.

Código corrigido:

#include <iostream>
#include <cstdlib>
#include <stdio.h>

using namespace std;
int main ( )
{
    char nome[3][50], sexo[3][50];
    int idade[3], x=0;
    float peso[3], altura[3], imc[3];
    for(x=0; x<=2; x=x+1)
        {
            cout << "QUAL O NOME DA PESSOA " << x << " ?";
            gets(nome[x]);
            cout << "QUAL O SEXO DA PESSOA " << x << " ?";
            gets (sexo[x]);
            cout << "QUAL A IDADE DA PESSOA " << x << " ?";
            cin >> idade[x];
            cout << "QUAL O PESO DA PESSOA " << x << " ?";
            cin >> peso[x];
            cout << "QUAL A ALTURA DA PESSOA " << x << " ?";
            cin >> altura[x];
            imc[x] = peso[x]/( altura[x] * altura[x]);
            //Limpa o buffer do stream stdin usando pela função gets
              while( '\n' != getchar( ) )continue;
            //O loop vai girar até que o caractere de nova linha seja
            //localizado.
        }
    for (x=0; x<=2; x=x+1)
        {
            cout << nome[x] << endl;
            cout << sexo[x] << endl;
            cout << idade[x] << endl;
            cout << peso[x] << endl;
            cout << altura[x]<< endl;
            cout << imc[x] << endl;
        }
    system ("pause");
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, muito obrigado! Estava nesse algoritmo há umas 2 horas ._.

Confesso que não me recordava desse comando getchar, porém lembro que meu professor realmente passou. Programação realmente é um ramo complexo.

 

Agradeço imensamente a atenção e disposição! Ajudou muitíssimo, mestre!

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@calouroentediado Minha sugestão seria usar variáveis string, essa sua declaração de matriz de char dificulta o entendimento.
 

#include<iostream>;
#include<cstdlib>;
#include<string>;

using namespace std;


int main ( )
{
    string nome[3];
    string sexo[3];
    
    int idade[3];
    float peso[3], altura[3], imc[3];
    
    for(int x=0; x<=2; x=x+1)
        {
            cout << "QUAL O NOME DA PESSOA " << x << " ?";
            cin >> nome[x];
            cout << "QUAL O SEXO DA PESSOA " << x << " ?";
            cin >> sexo[x];
            cout << "QUAL A IDADE DA PESSOA " << x << " ?";
            cin >> idade[x];
            cout << "QUAL O PESO DA PESSOA " << x << " ?";
            cin >> peso[x];
            cout << "QUAL A ALTURA DA PESSOA " << x << " ?";
            cin >> altura[x];
            imc[x] = peso[x]/( altura[x] * altura[x]);
        }
        
    for (int x=0; x<=2; x=x+1)
        {
            cout << nome[x] << endl;
            cout << sexo[x] << endl;
            cout << idade[x] << endl;
            cout << peso[x] << endl;
            cout << altura[x]<< endl;
            cout << imc[x] << endl;
        }
    system ("pause");
}

Declarei a variável X dentro do for, para evitar que ela fique solta no código. Assim que o for termina ela é eliminada. Também troquei o gets por cin.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, grievous! Agradeço a atenção!

 

Eu não sei se estou louco, mas lembro que meu professor falou que não havia string no DEVC++, que eu podia me utilizar somente de array (vetor) ou matrizes de char para formar cadeias de caracteres. Entendi errado? Tentei colocar "string" lá no programa e ele realmente não reconhece. Em qual tipo de programa posso utilizar string? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@calouroentediado Bom cara, eu mesmo usei o Bloodshed Dev Cpp pra adaptar e testar seu código. Pode ser que o seu professor esteja querendo ensinar o caminho mais difícil primeiro.

 

Você colocou "#include<string>;" no início?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, na verdade eu não sabia nem que eu podia fazer isso kkkkk

Acho que foi o que você disse mesmo: ele me "enganou", pra inicialmente aprender o caminho mais difícil mesmo.

  • Curtir 1

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

×