Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuste em Programa de Cadastro [Iniciante]


Gorgeousie

Pergunta

Olá galera, esse é o meu primeiro post, sou novo em programação e neste fórum. Peço desculpas se a pergunta é muito básica para os usuários de nível avançado. Sou novo em programação e C é minha primeira linguagem na qual comecei a desenvolver. Tenho uma proposta de trabalho e gostaria de uma ajuda para resolver um problema quando estou executando. O programa está rodando beleza, mas durante a execução na entrada do primeiro struct o programa pede 4 entradas, ao invés de 3 (nome, matricula, e media). Poderiam me ajudar a tirar essa entrada extra? Desde já agradeço a atenção.

 

#include<stdio.h>
#include<string.h>
struct aluno{//define tipo de dados da estrutura aluno
        char str1[100];
        int matricula;
        int media;
};

int main (void)
{
    void receberCadastro(struct aluno lista[5]);//chamada da função receberCadastro de Alunos
    void printfCadastro(struct aluno lista[5]);//chamada da função printfCadastro de Alunos
    struct aluno listaCadastro[5];
    
    receberCadastro(listaCadastro);
    printfCadastro(listaCadastro);
    
    system("pause");
    return 0;
}
void receberCadastro (struct aluno lista [5]){//define entrada de dados para a estrutura

    int i;
    for (i = 0; i < 5; ++i) {
        printf("%i aluno\n nome\n matricula\n media\n ", i + 1);
        scanf("%s\n %i\n %i\n", &lista.str1,
                                &lista.matricula,
                                &lista.media);
        }
}
void printfCadastro(struct aluno lista[5]){//define a saída de dados da estrutura
    
    int i;
    for ( i = 0; i < 5; ++i){
        printf("Aluno %i\n Nome = %s\n Matricula = %i\n Media = %i\n", i + 1,
                                                    lista.str1,
                                                    lista.matricula,
                                                    lista.media);
    }
}

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Em C contamos desde zero, você pode averiguar que i = 0. A condição é que o programa conte desde i=0 até i<5, ou seja 0, 1, 2, 3 e 4, pois o 4 é o menor numero antes do 5, se percebeu são 5 números de 0 a 4, se quer 4 mude i < 5 para i<4 e você terá o que está buscando.

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

  • 0
14 horas atrás, vangodp disse:

Em C contamos desde zero, você pode averiguar que i = 0. A condição é que o programa conte desde i=0 até i<5, ou seja 0, 1, 2, 3 e 4, pois o 4 é o menor numero antes do 4, se percebeu são 5 números de 0 a 4, se quer 4 mude i < 5 para i<4 e você terá o que está buscando.

 

Obrigado vangodp. Resolveu meu problema!

Sobre o mesmo programa. Estou estudando colocar o cálculo de média na structaluno, mas não sei se é possível, pois quando executo ela aparece como 0. Será que preciso mudar o tipo de estrutura de dados, ou criar uma outra struct? Alguém poderia me ajudar por favor? Desde já agradeço a atenção.

 

#include<stdio.h>
#include<string.h>
struct aluno{//define tipo de dados da estrutura aluno
        char str1[100];
        int matricula;
        float nota1, nota2, media;
};

int main (void)
{
    void receberCadastro(struct aluno lista[5]);//chamada da função receberCadastro de Alunos
    void mediaCadastro(struct aluno lista [5]);
    void printfCadastro(struct aluno lista[5]);//chamada da função printfCadastro de Alunos
    struct aluno listaCadastro[5];
    
    receberCadastro(listaCadastro);
    printfCadastro(listaCadastro);
    
    system("pause");
    return 0;
}
void receberCadastro (struct aluno lista [5]){//função da entrada de dados para a estrutura

    int i;
    for (i = 0; i < 5; ++i) {
        printf("%i aluno\n nome\n matricula\n nota1\n nota2\n", i + 1);
        scanf("%s\n %i\n %f\n %f",     &lista.str1,
                                    &lista.matricula,
                                    &lista.nota1,
                                    &lista.nota2);
        }
}
void mediaCadstro (struct aluno lista[5]){//função para cálculo de media individual

    float nota1, nota2, media;
    media = ((nota1*1) + (nota2*2)/3);
}
void printfCadastro(struct aluno lista[5]){//função da saída de dados da estrutura
    
    int i;
    for ( i = 0; i < 5; ++i){
        printf("Aluno %i\n Nome = %s\n Matricula = %i\n Nota1 = %f\n Nota2 = %f\n Media = %f\n", i + 1,
                                                    lista.str1,
                                                    lista.matricula,
                                                    lista.nota1,
                                                    lista.nota2,
                                                    lista.media);
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0
#include<stdio.h>
#include<string.h>
#include <windows.h>
#define NALUNOS 2


struct aluno { //define tipo de dados da estrutura aluno
    char str1[100];
    int matricula;
    float nota1, nota2, media;
};

void receberCadastro ( struct aluno *lista ); //chamada da função receberCadastro de Alunos
void mediaCadstro ( struct aluno *lista );
void printfCadastro ( struct aluno *lista ); //chamada da função printfCadastro de Alunos



int main ( void ) {
    struct aluno listaCadastro[NALUNOS];
    receberCadastro ( listaCadastro );
    
    mediaCadstro( listaCadastro );
    
    printfCadastro ( listaCadastro );
    
    system ( "pause" );
    return 0;
}
void receberCadastro ( struct aluno lista [NALUNOS] ) { //função da entrada de dados para a estrutura

    int i;
    
    for ( i = 0; i < NALUNOS; ++i ) {
        printf ( "aluno[%d] nome matricula nota1 nota2\n", i + 1 );
        scanf ( "%s\n %i\n %f\n %f",
                lista[i].str1,
                &lista[i].matricula,
                &lista[i].nota1,
                &lista[i].nota2 );
    }
}

void mediaCadstro ( struct aluno *lista ) { //função para cálculo de media individual
    int i;
    for ( i = 0; i < NALUNOS; ++i )
    lista[i].media = ( ( lista[i].nota1 * 1 ) + ( lista[i].nota2 * 2 ) / 3 );
}

void printfCadastro ( struct aluno lista[NALUNOS] ) { //função da saída de dados da estrutura

    int i;
    
    for ( i = 0; i < NALUNOS; ++i ) {
        printf ( "Aluno %i\n Nome = %s\n Matricula = %i\n Nota1 = %f\n Nota2 = %f\n Media = %f\n", i + 1,
                 lista[i].str1,
                 lista[i].matricula,
                 lista[i].nota1,
                 lista[i].nota2,
                 lista[i].media );
    }
}

Passe a estrutura por referencia.

Link para o comentário
Compartilhar em outros sites

  • 0
#include<stdio.h>
#include<string.h>
#include <windows.h>
#define NALUNOS 2


struct aluno { //define tipo de dados da estrutura aluno
    char str1[100];
    int matricula;
    float nota1, nota2, media;
};

void receberCadastro ( struct aluno *lista ); //chamada da função receberCadastro de Alunos
void mediaCadstro ( struct aluno *lista );
void printfCadastro ( struct aluno *lista ); //chamada da função printfCadastro de Alunos



int main ( void ) {
    struct aluno listaCadastro[NALUNOS];
    receberCadastro ( listaCadastro );
    
    mediaCadstro( listaCadastro );
    
    printfCadastro ( listaCadastro );
    
    system ( "pause" );
    return 0;
}
void receberCadastro ( struct aluno lista [NALUNOS] ) { //função da entrada de dados para a estrutura

    int i;
    
    for ( i = 0; i < NALUNOS; ++i ) {
        printf ( "aluno[%d] nome matricula nota1 nota2\n", i + 1 );
        scanf ( "%s\n %i\n %f\n %f",
                &lista[i].str1,
                &lista[i].matricula,
                &lista[i].nota1,
                &lista[i].nota2 );
    }
}

void mediaCadstro ( struct aluno *lista ) { //função para cálculo de media individual
    int i;
    for ( i = 0; i < NALUNOS; ++i )
    lista[i].media = ( ( (lista[i].nota1) * 1 ) + ( (lista[i].nota2) * 2 ) / 3 );
}

void printfCadastro ( struct aluno lista[NALUNOS] ) { //função da saída de dados da estrutura

    int i;
    
    for ( i = 0; i < NALUNOS; ++i ) {
        printf ( "Aluno %i\n Nome = %s\n Matricula = %i\n Nota1 = %f\n Nota2 = %f\n Media = %f\n", i + 1,
                 lista[i].str1,
                 lista[i].matricula,
                 lista[i].nota1,
                 lista[i].nota2,
                 lista[i].media );
    }
}

vangodp, mais uma vez obrigado pela ajuda. Eu fiz a modificações e executei o código, mas a média continual sendo calculada incorretamente. Quando eu executo o programa eu recebo a seguinte saída:

 

 

print.JPG

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...