Ir ao conteúdo
  • Cadastre-se

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


calouroentediado

Posts recomendados

 

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?

Link para o comentário
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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@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
Link para o comentário
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? 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...