所以,我正在尝试在我的结构向量中添加一个元素。我要求用户添加数据,但在添加之前,我需要检查这3个成员中的2个是否介于某些值之间。我必须执行此操作但是,当我运行程序时,被检查的成员会被“询问”两次。一旦检查它们,然后将它们添加到矢量中。我想要的是只有在他们通过验证功能时才添加它们。这是我的代码:
即: 输入:2160482 20 Nelson(这将通过验证功能但是,我的代码完成的方式,我必须为“Numero”和“notaFinal”两次这样做。)
#include <stdio.h>
#include <stdlib.h>
#define LIMITE 31
#define MAX_ALUNOS 60
//#define limite_inferior 2150001
//define limite_superior 2169999
typedef struct
{
int numero;
int notaFinal;
char nome[LIMITE];
} tEstudante;
//tEstudante ler_dados_estudante(void);
int validar_insert (int minimo, int maximo);
int ler_dados_estudante(tEstudante vAlunos[MAX_ALUNOS], int numAlunos);
void mostrar_dados_estudante(tEstudante vAlunos[MAX_ALUNOS], int numAlunos);
void alterar_dados_aluno (tEstudante vAlunos[MAX_ALUNOS], int numAlunos);
int procurar_aluno(tEstudante vAlunos[MAX_ALUNOS], int numAlunos, int numero_aluno);
int menu();
void main(void)
{
tEstudante vAlunos[MAX_ALUNOS];
int numAlunos;
int option;
// int numero;
// int nota;
// char nome;
option = menu();
switch(option)
{
case 1:
printf("Inserir dados\n");
ler_dados_estudante(vAlunos, numAlunos);
//nome = validar_insert();
break;
case 2:
printf("Mostrar dados dos estudantes");
break;
case 3:
printf("Alterar notas finais dos estudantes");
break;
case 4:
printf("Estatisticas das avaliacoes");
break;
case 5:
printf("Gravar dados em ficheiro");
break;
case 6:
printf("Ler dados do ficheiro");
break;
case 0:
printf("Sair");
break;
}
}
int menu ()
{
int opcao;
do
{
printf("1 - Inserir dados do estudante");
printf("\n2 - Mostrar dados dos destudantes");
printf("\n3 - Alterar notas finais do estudantes");
printf("\n4 - Estatisticas das avaliacoes");
printf("\n5 - Gravar dados em ficheiro");
printf("\n6 - Ler dados de ficheiro");
printf("\n0 - Fim\n");
printf("Escolha uma opcao:\n");
scanf("%i", &opcao);
if (opcao != 1 && opcao != 2 && opcao != 3 && opcao != 4 && opcao != 5 && opcao != 6 && opcao != 0)
printf("Opcao invalida !\n\n");
}
while (opcao != 1 && opcao != 2 && opcao != 3 && opcao != 4 && opcao != 5 && opcao != 6 && opcao != 0);
return opcao;
}
int validar_insert (int minimo, int maximo)
{
int valor;
do
{
scanf("%i", &valor);
if (valor < minimo || valor > maximo)
{
printf("Valor fora do intervalo aceitavel");
printf("\nInserir dados novamente: \n");
}
else
return valor;
}
while (valor < minimo || valor > maximo);
}
int ler_dados_estudante(tEstudante vAlunos[MAX_ALUNOS], int numAlunos)
{
int numero;
int nota;
char nome;
printf("Insira o numero do aluno: \n");
numero = validar_insert (2150001, 2169999);
vAlunos[1].numero = numero;
printf("Insira a nota final do aluno: \n");
nota = validar_insert (0, 20);
vAlunos[1].notaFinal = nota;
printf("Insira o nome do aluno: \n");
scanf(" %s", &vAlunos[1].nome);
//scanf("%i %i %s", &vAlunos[1].numero, &vAlunos[1].notaFinal, &vAlunos[1].nome);
printf("%i %i %s", vAlunos[1].numero, vAlunos[1].notaFinal, vAlunos[1].nome);
}