Ir para conteúdo

POWERED BY:

Arquivado

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

Leo Morais

problema ao imprimir o vetor

Recommended Posts

Boa noite galera!

estou com problemas ao chama o char aluno,

acho que e' pq eu nao zerei ele,

porem nao lembro como faz, lembro que

usa \0

float nota1, nota2, media;
int acao, i;
char aluno[100];
void bloco_1(){
    printf("Informe o nome do aluno: ");
    scanf("%s",&aluno);
    printf("Informe a nota 1: ");
    scanf("%s",&nota1);
    printf("Informe a nota 2: ");
    scanf("%s",&nota2);
    system("cls");
    main();
    //printf("\n\n%c",aluno);

    }
void bloco_2(){
    return 0;
}
void bloco_3(){
    for(i=0; i<100; i++)
    printf("\n\n%c",aluno[i]);
    system("PAUSE");
    system("cls");
    main();
}
void main()
{
    printf("== Cadastro de alunos ==\n");
    printf("1- Informar a nota dos alunos\n");
    printf("2- Alterar o nota do aluno\n");
    printf("3- Imprimir Nomes, Notas e Media\n");
    printf("4- Sair \n");
    printf("digite a opcao desejada: ");
    scanf("%d",&acao);
    system("cls");
        if(acao==1){
    bloco_1();
        }
        if(acao==2){
    bloco_2();
        }
        if(acao==3){
    bloco_3();
        }
        if(acao==4){
    system("PAUSE");
    return 0;
        }

}

agradeço desde ja

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode tirar essas chamadas ao main de dentro das funções e refazer o código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu entendo que os main()'s dentro dos blocos é para fazer o programa funcionar recursivamente, mas é melhor usar do...while, é mais prático.

 

Pelo que eu entendi, você quer cadastrar alunos com nomes de até 100 letras. Acontece que o que você está regravando o nome do aluno que está sendo cadastrado por cima do que já foi cadastrado, fora as notas. E quando imprime o vetor, está na verdade imprimindo caractere por caractere. Que tal assim:

 

1. Crie uma matriz para os alunos, e não um vetor:

 

// Substitua 'n' pelo número máximo de alunos, como 10, 20, etc.

char aluno [n][100];

// Não precisa inicializar pois será feito isso na hora do scanf().

2. Crie um vetor para as notas, assim:

 

// substitua 'n' pelo número de alunos, o mesmo da dica anterior.

float notas[n][3]

// Um campo para nota1, outro para nota2, outro para a média.

3. Quando imprimir, imprima o aluno e as notas assim:

for (i=0; i<=n; i++)
{
printf ("\n %s %f %f %f \n", aluno[i], nota[i][0], nota[i][1], nota[i][2]);
};

// Assim imprime-se o nome inteiro e as notas.

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bom, eu entendo que os main()'s dentro dos blocos é para fazer o programa funcionar recursivamente, mas é melhor usar do...while, é mais prático.

 

Não é mais prático, e sim "mais seguro" (no sentido de "o programa não vai falhar do nada"). Pesquise sobre stack overflow e o mecanismo de chamada de funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça assim, crie uma variável para pegar o tamanho do nome int y use a função apos colocar o nome do aluno use a função

y=strlen(aluno);

aluno[y+1]='\0';

assim ele encerra a string

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.