Ir para conteúdo

Arquivado

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

kamikazzi

Exercicio sobre menus etc

Recommended Posts

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<locale.h>

void menu()
{
    printf("++++++++++++++++++++++++++++++++++++++++++++++++\n");
    printf("+                     MENU                     +\n");
    printf("++++++++++++++++++++++++++++++++++++++++++++++++\n");
    printf("+ 1. Adidiconar dados de aluno                 +\n");
    printf("+ 2. Eliminar dados de aluno                   +\n");
    printf("+ 3. Atualizar dados de aluno                  +\n");
    printf("+ 4. Ver os registos de todos os alunos        +\n");
    printf("+ 5. Calcular a média dos testes de um aluno   +\n");
    printf("+ 6. Mostrar dados do aluno com a melhor media +\n");
    printf("+ 7. Mostrar dados do aluno com a pior media   +\n");
    printf("+ 8. Procurar aluno por numero                 +\n");
    printf("+ 9. Ordenar registos por media                +\n");
    printf("+ 0. Terminar                                  +\n");
    printf("++++++++++++++++++++++++++++++++++++++++++++++++\n");
    printf("introduza a sua opção: ");

}

typedef struct alunos
{
   int num;
   char nome[30];
   char genero[1];
   float nota1;
   float nota2;
   float nota3;

   int media;
} aluno;
int main()
{

    int i, opcao, Media;

    setlocale(LC_ALL, "Portuguese");


    do{
            menu();
            do{
                scanf("%d", &opcao);
                if(opcao<0 || opcao>10){

                    printf("Opção Invalida. Introduza a sua opção: ");
                }
            }while(opcao<0 || opcao>10);

        switch (opcao){

        case 1:

            for(i=0; i<20; i++)
            {
                printf("introduza o %dº numero: ", i+1);
                scanf("%d", &aluno[i].num);

                printf("introduza o %dº nome: ", i+1);
                scanf("%s", aluno[i].nome);

                printf("introduza o %dº genero: ", i+1);
                scanf("%s", aluno[i].genero);

                printf("introduza a 1º nota: " );
                scanf("%f", &aluno[i].nota1);

                printf("introduza a 2º nota: " );
                scanf("%f", &aluno[i].nota2);

                printf("introduza a 3º nota: " );
                scanf("%f", &aluno[i].nota3);
            }
            break;

        case 3:
            printf("Atualização dos dados dos alunos!\n")
            for(i=0; i<20; i++)
            {
                printf("introduza o %dº numero: ", i+1);
                scanf("%d", &aluno[i].num);

                printf("introduza o %dº nome: ", i+1);
                scanf("%s", aluno[i].nome);

                printf("introduza o %dº genero: ", i+1);
                scanf("%s", aluno[i].genero);

                printf("introduza a 1º nota: " );
                scanf("%f", &aluno[i].nota1);

                printf("introduza a 2º nota: " );
                scanf("%f", &aluno[i].nota2);

                printf("introduza a 3º nota: " );
                scanf("%f", &aluno[i].nota3);
            }
            break;

        case 4:

        case 5:

            for(i=0; i<20; i++)
            {
                media = (aluno[i].nota1+aluno[i].nota2+aluno[i].nota3)/3;

                printf("a média do %dº aluno = %d ", i+1, ,media);
            }

        case 6:
            for(i=0; i<20; i++)
            {
                aluno[i].media = (aluno[i].nota1+aluno[i].nota2+aluno[i].nota3)/3;
            }
            aluno[0].media;
            for(i=0; i<20; i++)
            {
                if(aluno[0].media>aluno[i].media)
                {
                    aluno[i].media = Media;
                }
            }
            printf("a melhor media da turma é: %d\n %s\n %s\n %.2f\n %.2f\n %.2f\n", );




        case 7:
            for(i=0; i<20; i++)
            {
                aluno[i].media = (aluno[i].nota1+aluno[i].nota2+aluno[i].nota3)/3;
            }
            aluno[0].media;
            for(i=0; i<20; i++)
            {
                if(aluno[0].media<aluno[i].media)
                {
                    aluno[i].media = Media;
                }
            }
            printf("a melhor media da turma é: %d\n %s\n %s\n %.2f\n %.2f\n %.2f\n", );



        case 8:

        case 9:



        }

        if (opcao==2)
        {
            printf("os dados introduzidos foram apagados!");
        }












    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que fazer algo assim:

modulocinco.h (Eu juntei a definição e a implementação no mesmo arquivo, mas normalmente se declara as funções e as estruturas no  *.h e a implementação no *.c)

 

#include <stdio.h>

enum OPCOES{TERMINAR, ADICIONAR, ELIMINAR, ATUALIZAR, VER_ALUNO, VER_TODOS, CALCULAR_MEDIA, VER_MAIOR_MEDIA, VER_PIOR_MEDIA, PESQUISAR_ALUNO, ORDENAR_MEDIA};

typedef struct alunos
{
   int num;
   char nome[30];
   char genero; // você pode utilizar um char ao invés de uma string de 1 char
   float nota1;
   float nota2;
   float nota3;
   // A média não é armazenada na estrutura de dados.
} Aluno;

void menu()
{
    printf("++++++++++++++++++++++++++++++++++++++++++++++++\n");
    printf("+                     MENU                     +\n");
    printf("++++++++++++++++++++++++++++++++++++++++++++++++\n");
    printf("+ 1. Adicionar dados de aluno                 +\n");
    printf("+ 2. Eliminar dados de aluno                   +\n");
    printf("+ 3. Atualizar dados de aluno                  +\n");
    printf("+ 4. Ver os registos de todos os alunos        +\n");
    printf("+ 5. Calcular a média dos testes de um aluno   +\n");
    printf("+ 6. Mostrar dados do aluno com a melhor media +\n");
    printf("+ 7. Mostrar dados do aluno com a pior media   +\n");
    printf("+ 8. Procurar aluno por numero                 +\n");
    printf("+ 9. Ordenar registos por media                +\n");
    printf("+ 0. Terminar                                  +\n");
    printf("++++++++++++++++++++++++++++++++++++++++++++++++\n");
    printf("introduza a sua opção: ");

}

void adicionarAluno(Aluno * classe, int tamanho_classe) {
	int num;
	puts("+++++ Adicionar aluno +++++");
    printf("Número: ");
    scanf("%d", &num); // Pesquise antes de inserir os dados p/ ver se a posição já não tem um aluno.
	
	if(num > tamanho_classe-1) {
		printf("Erro: a classe possui somente 20 alunos\n");
	} else if (num < 0){
		printf("Erro: o número do aluno deve ser positivo.\n");
	} else {
		printf("Nome: ");
        scanf("%s", classe[num].nome);

		printf("Gênero (F/M): ");
		scanf("%c%*c", classe[num].genero);

		printf("1º nota: ");
		scanf("%f", &classe[num].nota1);

        printf("2º nota: ");
		scanf("%f", &classe[num].nota2);
		
		printf("3º nota: ");
		scanf("%f", &classe[num].nota3);
	}           
}

void atualizarAluno(Aluno * classe, int tamanho_classe) {
	int num;
	puts("+++++ Atualizar aluno +++++");
    printf("Número: ");
    scanf("%d", &num); // Pesquise antes de inserir os dados p/ ver se a posição já não tem um aluno.
	
	if(num > tamanho_classe-1) {
		printf("Erro: a classe possui somente 20 alunos\n");
	} else if (num < 0){
		printf("Erro: o número do aluno deve ser positivo.\n");
	} else if (classe[num] == null) {
		printf("Erro: o registro não corresponde a um aluno\n");
	} else {
		printf("Nome: ");
        scanf("%s", classe[num].nome);

		printf("Gênero (F/M): ");
		scanf("%c%*c", classe[num].genero);

		printf("1º nota: ");
		scanf("%f", &classe[num].nota1);

        printf("2º nota: ");
		scanf("%f", &classe[num].nota2);
		
		printf("3º nota: ");
		scanf("%f", &classe[num].nota3);
	}           
}

void eliminarAluno(Aluno * classe, int tamanho_classe) {
	int num;
	puts("+++++ Eliminar aluno +++++");
    printf("Número: ");
    scanf("%d", &num); 
	
	if(num > tamanho_classe-1) {
		printf("Erro: a classe possui somente 20 alunos\n");
	} else if (num < 0){
		printf("Erro: o número do aluno deve ser positivo.\n");
	} else {
		classe[num] = null;
	}
}


float calcularMedia(Aluno * classe, int tamanho_classe, int pos) {
	float ret = -1.0;
	if(pos > tamanho_classe-1) {
		printf("Erro");
	} else {
		ret = (classe[pos].nota1 + classe[pos].nota2 + classe[pos].nota3)/3.0;
	}
	return ret;
}

void exibirMaiorMedia(Aluno * classe, int tamanho_classe) {
	puts("+++++ Exibir maior média +++++");
	float media = 0.0F;
	float maior_media = media;
	
	for(int i=0; i < tamanho_classe; i++) {
		if (classe[i] != null) {
			media = calcularMedia(classe, tamanho_classe, i);
			if (media >= 0.0F && media > maior_media) maior_media = media;
		}
	}
	
	printf("%.2f\n", maior_media);
}

main.c
 

#include <stdio.h>
#include "modulocinco.h"
#define TAMANHO_CLASSE 20
int main() {

    int opcao;
	Aluno classe[TAMANHO_CLASSE];

    while(1) {
            menu();
			scanf("%d", &opcao);
			
			if (opcao == OPCOES.TERMINAR) break;
			switch (opcao) {
				case OPCOES.ADICIONAR:
					adicionarAluno(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.ELIMINAR:
					eliminarAluno(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.ATUALIZAR:
					atualizarAluno(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.VER_ALUNO:
					verAluno(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.VER_TODOS:
					verTodos(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.CALCULAR_MEDIA:
					calcularMedia(classe, TAMANHO_CLASSE, pos);
					break;
				case OPCOES.VER_MAIOR_MEDIA:
					exibirMaiorMedia(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.VER_PIOR_MEDIA:
					exibirPiorMedia(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.PESQUISAR_ALUNO:
					pesquisarAluno(classe, TAMANHO_CLASSE);
					break;
				case OPCOES.ORDENAR_MEDIA:
					ordenarMedia(classe, TAMANHO_CLASSE);
					break;
				default:
					puts("Opção inválida");
			}
	}
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por marsolim
      Olá a todos. Venho com um probleminha para o qual não encontrei resposta. Talvez, eu não tenha sabido os termos certos para pesquisar. É o seguinte... estou tentando incluir, em uma lista array, índices com valores montados em uma variável a partir de outra array e não estou a conseguir. Atualmente, meu código é o seguinte...
      var ids = {     "joby": "track 01",     "dobby": "track 02",     "medz": "track 03",     "decks": "track 04,     "tecks": "track 05",     "assud": "track 06",     "mand": "track 07",     "daly": "track 08", }; var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      Até aqui ok. É o que tenho no momento. O que estou querendo fazer é colocar, no lugar das linhas de adb: 0 até dep: 0, outra array que criei com esses índices, porque pode ser que eu precise adicionar mais valores e eu quero fazer isso na array nova porque vou usar ela em vários lugares e eu teria que alterar em todos se não fizer essa modificação. Fazendo ela, eu alteraria apenas nela mesmo. Então, agora, com a array nova, seria algo assim:
      var ids = {     "joby": "track 01",     "dobby": "track 01",     "medz": "track 01",     "decks": "track 01",     "tecks": "track 01",     "assud": "track 01",     "mand": "track 01",     "daly": "track 01", }; var juds = ["adb", "mdc", "bah", "tek", "dep"]; //lista nova com os valores var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      O que eu preciso é incluir os valores de juds em lstIds. Da forma que está, não consigo fazer um for dentro do outro for para pegar esses dados e não consigo, também, criar ele fora e inserir com variável, tipo:
      var fJuds = ""; for(i in juds){     fJuds += juds[i] + ": 0,"; } for(i in ids){         lstIds[i] =  {         dock: ids[i],         fJuds // Aqui eu incluiria a variável no lugar das linhas...         tos: 0     }; }  
      Bem, o que eu queria saber mesmo é como eu poderia inserir uma variável no meio duma lista desse tipo... se é possível.
       
      Agradeço pela atenção...
    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por Millena Oliveira
      Oiii gente, boa noite. Estou estudando ainda e me deram um desafio para desenvolver um programa que imprimisse na tela somente os números primos segundo o valor que o usuário colocasse na execução. Utilizei o readLine para isso. Usei um objeto para que repetisse a execução e salvei todos os números numa array. O problema é, quando faço o teste colocando um número qualquer, retorna uma array vazia. Poderia me dar uma ajuda? Segue abaixo todo o código.
      Obrigada :)
       
      var readline = require("readline"); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); function desafioPrimos() { var primos = []; rl.question("Digite um número: ", function (num) { console.log(primos); numero = parseInt(num); numerosPrimos: for (var x = 2; x <= num; x++) { for (var y = 2; y < x; y++) { if (x % y === 0) continue numerosPrimos; }; primos.push(x); rl.close(); }; }); }; desafioPrimos();  
    • Por lordzyrium
      Seguinte. Estou tendo dificuldades em criar um array a partir de outro array. E o que preciso é que a saída seja exatamente assim:
      $dados_out = array(     'nome' => 'Nome do Aluno',     'diciplina_notas' => array(         array('PORTUGUÊS', '7ano' => '7,5', '8ano' => '7,0', '9ano' => '8,0'),         array('REDAÇÃO', '7ano' => '8,5', '8ano' => '9,0', '9ano' => '9,0'),         array('HISTÓRIA', '7ano' => '9,5', '8ano' => '8,5', '9ano' => '8,5'),         array('GEOGRAFICA', '7ano' => '7,0', '8ano' => '8,5', '9ano' => '8,0'),         array('QUIMICA', '7ano' => '--', '8ano' => '--', '9ano' => '8,5'),     ) ); A partir deste código:
       
      $dados = array( array( 'nome'=> 'Nome do Aluno', 'etapa'=> '7º ANO', 'pos' => 7, 'not_dados'=> array( array('PORTUGUES', '7,5', '120H', 'AP'), array('REDAÇÃO', '8,5', '40H', 'AP'), array('HISTÓRIA', '9,0', '80H', 'AP'), array('GEOGRAFIA', '7,0', '80H', 'AP') ) ), array( 'nome'=> 'Nome do Aluno', 'etapa'=> '8º ANO', 'pos' => 8, 'not_dados'=> array( array('PORTUGUES', '7,0', '120H', 'AP'), array('HISTÓRIA', '8,5', '80H', 'AP'), array('REDAÇÃO', '9,0', '40H', 'AP'), array('GEOGRAFIA', '8,5', '80H', 'AP') ) ), array( 'nome'=> 'Nome do Aluno', 'etapa'=> '9º ANO', 'pos' => 9, 'not_dados'=> array( array('PORTUGUES', '8,0', '120H', 'AP'), array('HISTÓRIA', '8,5', '80H', 'AP'), array('REDAÇÃO', '9,0', '40H', 'AP'), array('GEOGRAFIA', '8,0', '80H', 'AP'), array('QUIMICA', '8,5', '80H', 'AP') ) ), );  
       
      OBS: terá todas as etapas e as diciplinas não podem ser repetidas.
      Quem puder ajudar desde já agradeço.
       
    • Por MCL_2007
      Boa dia Amigos...
      Tenho esses arrays:
      Array (
      [0] => 2535
      [1] => 2433
      )
      Array (
      [0] =>
      [1] => marcelo@gmail.com;m@terra.com.br
      [2] =>
      [3] => neusa@terra.com.br
      )
       
      Preciso do seguinte resultado de saida:
      2535 - marcelo@gmail.com;m@terra.com.br
      2433 -  neusa@terra.com.br
       
      Como faço , alguem pode me ajudar?
      Gratidao.
×

Informação importante

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