Ir ao conteúdo
  • Cadastre-se

C++ Array de struct, problema na leitura de cadastros


Pietw

Posts recomendados

Então, eu preciso fazer um cadastro de 30 alunos. (no código eu decidi testar com um numero menor, pra facilitar a minha vida.)Eu to tendo problema dentro do for. Ele lê o array da struct na primeira posição ( cadastro[0]), mas quando ele termina o primeiro looping, ele simplesmente não pede pra ler mais nada nos próximos e só imprime o que tem nos " cout " sem fazer os "cin" pra novas informações. Eu queria saber se podem me dizer onde tá o problema porque eu não to achando :C
 

#include<iostream>

#include <string>
using namespace std;

struct alunos {
    string nome;
    string disc;
    float mediaF;

};

void main() {
    bool newstu;
    alunos cadastro[10];
    

    do {
        for (int i = 0; i < 10; i++)
        {

            cout << " digite o nome do aluno: " << i << endl;
            cin >> cadastro.nome;

            cout << "nome: " << cadastro.nome << endl;

            cout << "digite a disciplina" << endl;
            cin >> cadastro.disc;
            cout << "disciplina: " << cadastro.disc << endl;
            cout << " digite a media F" << endl;
            cin >> cadastro.mediaF;
            cout << " mediaf: " << cadastro.mediaF << endl;

            cout << "new aluno?  <s/n>" << endl;
            cin >> newstu;
        }
    } while (newstu == 's');
        
     //fim array 
    
    cout << "worked." << endl;

    system("pause");
} 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

10 minutos atrás, CiroboyBR disse:

troque


bool newstu;

por


char newstu;

 

UPDATE::
Eu alterei algumas coisas pra testar.
Agora ele pede todas as informações até o fim, e se eu não quero continuar ele para. PORÉM... ele só imprime a segunda informação que eu coloco, e a segunda apenas.
O code ficou assim:

 


using namespace std;
struct alunos{
    string nome;
    float mediaF;

};

void main() {
    alunos cadastro[10];
    char newstu= 's';
    

    
        for (int i = 0; i < 10; i++)
        {
            while (newstu == 's'){
            
            cout << "digite nome: " << endl;
            cin >> cadastro.nome;

            cout << "new student (s/n)?" << endl;
            cin >> newstu;
            

        } 

    }

    //print
    for (int i = 0; i < 10; i++)
    {
    
        cout << cadastro.nome << endl;
    
    }


    system("pause");
}



 

adicionado 2 minutos depois

 //print
    for (int i = 0; i < 10; i++)
    {
    
        cout << cadastro.nome << endl;
    
    }


    system("pause");
}

Esqueci de copiar o "", porém o problema continua. 

adicionado 15 minutos depois

UPDATE2::::
resolvi o problema do loop. (era mt idiotice dhsaudhasuudsa)


 

#include<iostream>
#include<string>


using namespace std;
struct alunos{
    string nome;
    float mediaF;

};

void main() {
    alunos cadastro[10];
    char newstu= 's';
    int cont = 0;

    
        for (int i = 0; i < 10; i++)
        {
            
            
            cout << "digite nome: " << endl;
            cin >> cadastro.nome;

            cout << "new student (s/n)?" << endl;
            cin >> newstu;
            cont = cont + 1;
            if (newstu == 'n') {
                i = 10;
            }

        } 

    

    //print
    for (int i = 0; i < cont; i++)
    {
    
        cout << cadastro.nome << endl;
    
    }


    system("pause");
}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Pietw   bool só pode valer zero ou um qualquer outro valor o programa perde toda a referencia e erra.  então é melhor usar char igual o @CiroboyBR    disse e ficou faltando colocar em qual posição do struct está fazendo o registro dos dados,  então seu código com algumas modificações ficaria assim :

#include <iostream>
#include <string>
using namespace std;

struct alunos {
    string nome;
    string disc;
    float mediaF;
};
int main() {
    char newstu;
    alunos cadastro[10];
    int i=0;
    do {
        cout << " digite o nome do aluno: " << i << endl;
        cin >> cadastro[i].nome;
        cout << "nome: " << cadastro[i].nome << endl;
        cout << "digite a disciplina" << endl;
        cin >> cadastro[i].disc;
        cout << "disciplina: " << cadastro[i].disc << endl;
        cout << " digite a media F" << endl;
        cin >> cadastro[i].mediaF;
        cout << " mediaf: " << cadastro[i].mediaF << endl;
        cout << "new aluno?  <s/n>" << endl;
        cin >> newstu;
        i++;
    } while (newstu == 's' );

     //fim array

    cout << "worked." << endl;
    system("pause");
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...