Ir ao conteúdo

Posts recomendados

Postado

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
Postado
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
Postado

@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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!