Jump to content
Fórum Script Brasil
  • 0

Ajuste em Programa de Cadastro [Iniciante]


Gorgeousie

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

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

Edited by vangodp
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...