Ir para conteúdo
  • 0
Entre para seguir isso  
Marcelo Lopes Vidal

Fiz Um Vetor de Struct Mas Queria Saber Como Usuario Poderia Adicionar Mais Cadastros No menu

Pergunta

 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct aluno
{
	char nome[20];
	char endereco[50];
	char data_de_nascimento[10];
	char telefone[15];
	float nota1;
	float nota2;
};

struct aluno recadastramento(struct aluno valuno[10]);
void media_das_notas(struct aluno valuno[10]);
void aprovado_ou_reprovado(struct aluno valuno[10]);
void mostrar_informacoes(struct aluno valuno[10]);

int main(void)
{
	struct aluno valuno[10];
	int op;
	float media;
	int i;
	int j;
	
	printf("Digite as informacoes dos alunos");
	
	for(i=1;i<11;i++)
	{
	printf("Digite O Nome Do Aluno[%d]\n\n",i);
	printf("Nome: ");
	fflush(stdin);
	gets(valuno[i].nome);
	
	printf("\nDigite O Endereco Do Aluno[%d]\n\n",i);
	printf("Endereco: ");
	fflush(stdin);
	gets(valuno[i].endereco);
	
	printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i);
	printf("Data De Nascimento: ");
	fflush(stdin);
	gets(valuno[i].data_de_nascimento);
	
	for(j=0;j <15; j++)
	{		
		if(valuno[i].data_de_nascimento[2] != '/' && valuno[i].data_de_nascimento[5] != '/')
		{
			printf("ERRO! Digite novamente");
			printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i);	
			gets(valuno[i].data_de_nascimento);
			break;
		}
		else 
		{
			printf("FORMATO CORRETO");
			break;
		}
	}
	
	printf("\nDigite O Telefone Do Aluno [%d] No Formato <(DDD)00000-0000>\n\n",i);
	printf("Telefone Do Aluno: ");
	fflush(stdin);
	gets(valuno[i].telefone);
	
		for(j=0;j <15; j++)
	{		
		if(valuno[i].telefone[0] != '(' && valuno[i].telefone[4] != ')' && valuno[i].telefone[10] != '-')
		{
			printf("ERRO! Digite novamente");
			printf("Digite O Telefone Do Aluno [%d]: ",i);	
			gets(valuno[i].telefone);
			break;
		}
		else 
		{
			printf("FORMATO CORRETO");
			break;
		}
	}
	
	printf("\nDigite A Primeira Nota Do Aluno [%d]\n\n",i);
	printf("Nota 1: ");
	scanf("%f",&valuno[i].nota1);
	
	printf("\nDigite A Segunda Nota Do Aluno [%d]\n\n",i);
	printf("Nota 2: ");
	scanf("%f",&valuno[i].nota2);
	}

	do
	{
		printf("\nMENU\n");
		printf("-	1)Editar informações dos alunos \n	2)Mostrar as medias dos alunos \n	3)Dizer se os alunos foram aprovados medias >= 6 ou reprovados (medias <6)\n	4)Listar todas as informações dos alunos");
		printf("\n\nOpcao::: ");
		scanf("%d",&op);
		
		switch(op)
		{
			case 1:
			recadastramento(valuno);
				break;
			case 2:
			media_das_notas(valuno);
				break;
			case 3:
			aprovado_ou_reprovado(valuno);
				break;
			case 4:
				mostrar_informacoes(valuno);
				break;
			default: 
				printf("\nOpcao INVALIDA\n");
				break;
		}
	}while(op > 0 && op < 5);
} 
struct aluno recadastramento(struct aluno valuno[10]) //recadastramento de informações//Funções 
{
	int i;
	for(i=1;i<11;i++)
	{
		printf("\nDigite O Nome Do Aluno [%d]\n\n",i);
		printf("Nome: ");
		fflush(stdin);
		gets(valuno[i].nome);
	
		printf("\nDigite O Endereco Do Aluno [%d]\n\n",i);
		printf("Endereco: ");
		fflush(stdin);
		gets(valuno[i].endereco);
	
		printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i);
		printf("Data De Nascimento: ");
		fflush(stdin);
		gets(valuno[i].data_de_nascimento);
	int j;
	for(j=0;j < 11; j++)
		{		
			if(valuno[i].data_de_nascimento[2] != '/' && valuno[i].data_de_nascimento[5] != '/')//validção de data no formato correto
			{
				printf("ERRO! Digite novamente");
				printf("\nDigite A Data De Nascimento Do Aluno [%d]No Formato <00/00/0000>\n\n",i);	
				gets(valuno[i].data_de_nascimento);
				break;
			}
			else 
			{
				printf("FORMATO CORRETO");
				break;
			}
		}
	
		printf("\nDigite O Telefone Do Aluno [%d] No Formato <(DDD)00000-0000>\n\n",i);
		printf("Telefone Do Aluno: ");
		fflush(stdin);
		gets(valuno[i].telefone);
	
	for(j=0;j <15; j++)//validção de numero no formato correto
		{		
			if(valuno[i].telefone[0] != '(' && valuno[i].telefone[4] != ')' && valuno[i].telefone[10] != '-')
			{
				printf("ERRO! Digite novamente");
				printf("Digite O Telefone Do Aluno [i]: ",i);	
				gets(valuno[i].telefone);
				break;
			}
			else 
			{
				printf("FORMATO CORRETO");
				break;
			}
		}
	
		printf("\nDigite A Primeira Nota Do Aluno [%d]\n\n",i);
		printf("Nota 1: ");
		scanf("%f",&valuno[i].nota1);
	
		printf("\nDigite A Segunda Nota Do Aluno [%d]\n\n",i);
		printf("Nota 2: ");
		scanf("%f",&valuno[i].nota2);
	}
}
void media_das_notas(struct aluno valuno[10])//media de notas
{
	int i;
	for(i=1;i<11;i++)
	{
		float media;
		media = (valuno[i].nota1 + valuno[i].nota2) / 2;
		printf("Media: %.2f\n",media);
	}
}
void aprovado_ou_reprovado(struct aluno valuno[10])//se foi aprovado ou reprovado
{
	int i;
	for(i=1;i<11;i++)
	{
		float media;
		media = (valuno[i].nota1 + valuno[i].nota2) / 2;
	
		if(media >= 6)
		{
			printf("\nAluno [%d] APROVADO\n",i);
		}
		else
		{
			printf("\nAluno [%d] REPROVADO\n",i);
		}
		
			printf("\nMedia do Aluno[%d]: %.2f\n",i,media); 
			
	}
}
void mostrar_informacoes(struct aluno valuno[10])//mostrando informções de cadastro
{
	int i;
	for(i=1;i<11;i++)
	{
		printf("-Listagem Do Aluno[%d]",i);
		printf("\n\nNome do Aluno[%d]: %s",i,valuno[i].nome);
		printf("\nEndereco do Aluno[%d]: %s",i,valuno[i].endereco);
		printf("\nData De Nascimento do Aluno[%d]: %s",i,valuno[i].data_de_nascimento);
		printf("\nTelefone do Aluno[%d]: %s",i,valuno[i].telefone);
		printf("\nNota 1 do Aluno[%d]: %.2f ",i,valuno[i].nota1);
		printf("\nNota 2 do Aluno[%d]: %.2f ",i,valuno[i].nota2);
	}
}
//Fim Do Codigo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

0 respostas a esta questão

Recommended Posts

Até agora não há respostas para essa pergunta

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  

  • Conteúdo Similar

    • Por Yuri Fernandes da Silva
      Olá, sou um membro novo do fórum e estou estudando por conta a linguagem c++ pela internet..
       
      Durante meus estudos, me surgiu uma dúvida em relação ao conteúdo descrito no título desse fórum, mais especificamente com um compilador online (estudo no meu serviço, nos horários vagos)
       
      Essa foi a mensagem de erro que apareceu no compilador Online "C++ Shell":   In function 'int main()': 10:66: error: expected primary-expression before '<' token
       
      Esse foi o código que criei:
       
       
      //Exercício 
      #include <iostream>
      using namespace std;
      int main ()
      {
          int num;
          
          num=12;
          if ((num >=3 && num <=6) || (num > 9 && num < 15) || (num>15 && <20)) {
              cout <<"\n\nValor aceito\n";
          }else{
              cout <<"\n\nnao aceito\n";
          }
          return 0;
      }
       
       
      Agradeço desde já a atenção.
    • Por Lincoln Ferreira de Jesus
      Olá, estou começando a aprender a linguagem c++ e eu gostaria de saber alguns exemplos de jogos feitos com puro c++ sem engine nem nd. Pra eu ter uma noção de quanto um desenvolvedor vai sem usar uma engine =) obrigado.
    • Por EduardoLenz
      Olá, pessoal,
       
      Mexo com microcontroladores, antigamente com PIC e agora com ARM (plataforma LPCXpresso). 
      Ambos utilizam a linguagem C. 
       
      Meu problema é o seguinte: Preciso converter um caractere que vem da UART (porta de comunicação). No PIC havia uma função pronta para tal, no ARM não. 
       
      O caractere chega assim, por exemplo: P123 (tudo junto), e eu queria separar em:
      dado_recebido[]={'P', '1', '2', '3'}; 
      Para poder utilizar um switch 
      switch(dado_recebido[0])
      {
      case 'P':....
      }
       
      alguém tem alguma ideia de como posso fazer a conversão? 
       
      Agradeço desde já. 
    • Por sheepziiin
      Boa tarde colegas !
      Estou quebrando a cabeça com um job para tratamento de logradouros. Segue o raciocínio:  
      Tenho uma lista com todos os endereços do estado de São Paulo, onde os mesmos são extraídos da seguinte forma:
       
      Exemplo:
      AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A AL-ANAPURUS/EDI:BOULEVARD/BLC:A-777-AP - Apartamento: 131 AL-ARAPANES/EDI:CDOE,6-5ºANDAR-309-AP - Apartamento: 42 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 102 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 42 AL-ARAPANES/EDI:PARC BRUMENADI-982-AP - Apartamento: 191 AL-BARROS/EDI:PERVAL-186-AP - Apartamento: 1601 AL-BARROS/EDI:PERVAL-186-BL - Blocos: B AP - Apartamento: 1302 AL-CAETANO,S/CDM:ED. GIARDINO_CDOE_1_ANDAR_11 A 13-165-AP - Apartamento: 63 AL-CAETANO,S/EDI:ESPLENDOR-1234-AP - Apartamento: 71 AL-CAETANO,S/EDI:MAGENTA I_CDOE_1_ANDAR_7 A 10-2575-AP - Apartamento: 94 AL-CALCUTA-195-AP - Apartamento: 02 AL-CAMPESTRE-728-CS - Casa: 1 AL-CASA BRANCA/CDM:BRISTOL-851-CJ - Conjunto: 11 AN - Andar: 01 AL-CASA BRANCA/CDM:SAINT SIMON-667-AP - Apartamento: 11
      Notem que os casos "não tem um padrão" (até tem por tipo de residencia). Utilizei inúmeras postagens aqui do fórum e consegui solucionar os casos para residencias (padrão TIPO_LOG;LOG;COMPL;NUM), no entanto as formulas e soluções aqui indicadas por vocês "param" na primeira sequencia numérica, entretanto para a maioria dos casos, o texto continua com letras, números e caracteres.
       
      Segue o padrão final que preciso chegar.
      Exemplo: AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A
      Resultado Tratado: AFONSO SCHMIDT 555
       
      Desde de já muito obrigado pelos retornos que certamente virão.
×

Informação importante

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