Ir ao conteúdo
  • Cadastre-se

Yan.Scs.Unisc

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Preciso de ajuda para resolver..... /* ----------------------ENUNCIADO DO TERCEIRO DESAFIO------------------------------------------------------------------------ O objetivo deste trabalho é aprofundar o conhecimento acerca de modularização, métodos de ordenação e pesquisa em vetores. 1. Criar um programa que disponibilize um menu com as opções: 1: Importar alunos; 2: Imprimir todos; 3: Ordenar (Bolha); 4: Ordenar (Selecao Direta); 5: Pesquisa sequencial; 6: Pesquisa binaria; 0: Sair 2. Deve ser incluída a biblioteca "geraalunos.h". 3. Deve ser criado um vetor do tipo Aluno com 30.000 posições disponíveis. Obs.: Veja que o tipo Aluno já está definido dentro da biblioteca, de forma que não precisa ser definido novamente no seu programa. Tem os atributos matricula, nome e nota_final *A opção 1 deve chamar a função gera(int numCam, Camiseta *vetCam) da biblioteca "geraalunos.h" *A opção 2 deve chamar uma função para imprimir todos os alunos do vetor; *A opção 3 deve chamar uma função para fazer ordenação do nome pelo método da bolha; *A opção 4 deve chamar uma função para fazer ordenação do nome pelo método de seleção direta; *A opção 5 deve pedir um inteiro (matricula) e passar para uma função para fazer a pesquisa sequencial pelo número informado; *A opção 6 deve pedir um inteiro (matricula) e passar para uma função para fazer a pesquisa binária pelo número informado; *A opção 0 deve encerrar o programa. 4. Deve ser guardado o timestamp antes e depois da execução dos opções 3, 4, 5 e 6 para efeito de comparação de desempenho e impresso após a execução da função. Ex.: tempo_antes = clock(); bolha(vet, NUM_AL); tempo_depois = clock(); printf("Ordenacao bolha concluida! %d ms\n", tempo_depois - tempo_antes); ----------------------ENUNCIADO DO TERCEIRO DESAFIO------------------------------------------------------------------------ */ #include "geraalunos.h" #include <stdio.h> #define NUM_AL 30000 void imprime(Aluno vetAl[], int numAl){ } void bolha(Aluno vetAl[], int numAl){ //falta fazer } void selecao_direta(Aluno vetAl[], int numAl){ //falta fazer } int pesq_seq(Aluno vetAl[], int numAl, int matricula){ //falta fazer } int pesq_bin(Aluno vetAl[], int numAl, int matricula){ //falta fazer } int main(){ Aluno vet[NUM_AL]; int comando=-1; double tempo_antes, tempo_depois; int mat, ret; while(comando!=0){ printf("\nEscolha uma das opções a seguir:\n"); printf("1: Importar alunos;\n"); printf("2: Imprimir todos;\n"); printf("3: Ordenar (Bolha);\n"); printf("4: Ordenar (Selecao Direta);\n"); printf("5: Pesquisa sequencial;\n"); printf("6: Pesquisa binaria;\n"); printf("0: Sair\n"); scanf("%d", &comando); switch(comando){ case 0: break;//sair do programa case 1: gera(vet, NUM_AL); printf("Alunos importados com sucesso!\n"); break; case 2: imprime(vet, NUM_AL); break; case 3: tempo_antes = clock(); bolha(vet, NUM_AL); tempo_depois = clock(); printf("Ordenacao bolha concluida! %.1lf ms\n", (tempo_depois - tempo_antes)/(CLOCKS_PER_SEC/1000.0)); break; case 4: tempo_antes = clock(); selecao_direta(vet, NUM_AL); tempo_depois = clock(); printf("Ordenacao por selecao direta concluida! %.1lf ms\n", (tempo_depois - tempo_antes)/(CLOCKS_PER_SEC/1000.0)); break; case 5: printf("Informe a matricula a pesquisar: "); scanf("%d", &mat); tempo_antes = clock(); ret = pesq_seq(vet, NUM_AL, mat); tempo_depois = clock(); if(ret<0) printf("Pesquisa sequencial. Matricula [%d] nao foi encontrada. Levou %.1lf ms\n", mat, (tempo_depois - tempo_antes)/(CLOCKS_PER_SEC/1000.0)); else printf("Pesquisa sequencial. Matricula [%d] foi encontrada na posicao [%d]. Aluno [%s]. Levou %.1lf ms\n", mat, ret, vet[ret].nome, tempo_depois - tempo_antes); break; case 6: printf("Informe a matricula a pesquisar: "); scanf("%d", &mat); tempo_antes = clock(); ret = pesq_bin(vet, NUM_AL, mat); tempo_depois = clock(); if(ret<0) printf("Pesquisa binaria. Matricula [%d] nao foi encontrada. Levou %0.1lf ms\n", mat, (tempo_depois - tempo_antes)/(CLOCKS_PER_SEC/1000.0)); else printf("Pesquisa binaria. Matricula [%d] foi encontrada na posicao [%d]. Aluno [%s]. Levou %.0lf ms\n", mat, ret, vet[ret].nome, (tempo_depois - tempo_antes)/(CLOCKS_PER_SEC/1000.0)); break; default: printf("Opcao invalida!"); break; } } } BIBLIOTECA .H /* Esta bilioteca deve ser utilizada para a realização do 3º desafio de programação da disciplina de Programação Estruturada 2018/II Deve ser utilizada a função gera() para gerar um vetor aleatório de alunos Deve ser utilizada a estrutura "Aluno" definida abaixo (não criar novamente na função main do seu programa); */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> //Definição da estrutura Aluno typedef struct { int matricula; char nome[50]; float nota_final; }Aluno; void gera(Aluno vetAl[], int numAl){ char nomeTemp[50]; int i, x; float nota; //Fonte dos nomes: https://petitebox.com.br/blog/100-nomes-mais-comuns-no-brasil-em-2016/ char *nomes[] = {"Miguel", "Arthur", "Davi", "Bernardo", "Heitor", "Gabriel", "Pedro", "Lorenzo", "Lucas", "Matheus", "Enzo", "Theo", "Benjamin", "Rafael", "Nicolas", "Guilherme", "Gustavo", "Samuel", "Henrique", "Felipe", "Murilo", "Joaquim", "Joao Pedro", "Joao Miguel", "Enzo Gabriel", "Daniel", "Isaac", "Pietro", "Pedro Henrique", "Lucca", "Eduardo", "Benicio", "Leonardo", "Vitor", "Joao Lucas", "Bryan", "Joao", "Caua", "Davi Lucca", "Anthony", "Vicente", "Vinicius", "Caio", "Antonio", "Davi Lucas", "Bento", "Joao Gabriel", "Joao Vitor", "Noah", "Francisco", "Calebe", "Gael", "Emanuel", "Ian", "Luiz Miguel", "Enrico", "Thiago", "Augusto", "Otavio", "Joao Guilherme", "Ryan", "Yuri", "Levi", "Vitor Hugo", "Erick", "Bruno", "Nathan", "Raul", "Henry", "Davi Luiz", "Luiz Felipe", "Thomas", "Rodrigo", "Davi Miguel", "Andre", "Fernando", "Alexandre", "Pedro Lucas", "Breno", "Arthur Miguel", "Carlos Eduardo", "Kaique", "Yago", "Kaue", "Luan", "Igor", "Luiz Henrique", "Luiz Gustavo", "Arthur Gabriel", "Mathias", "Lucas Gabriel", "Pedro Miguel", "Arthur Henrique", "Ruan", "Tomas", "Danilo", "Enzo Miguel", "Luiz Otavio", "Ricardo", "Oliver", "Alice", "Sophia", "Laura", "Valentina", "Helena", "Isabella", "Manuela", "Julia", "Luiza", "Livia", "Giovanna", "Maria Luiza", "Heloisa", "Maria Eduarda", "Maria Clara", "Lara", "Lorena", "Beatriz", "Mariana", "Melissa", "Cecilia", "Ana Clara", "Ana Julia", "Yasmin", "Maria Julia", "Isadora", "Rafaela", "Emanuelly", "Ana Luiza", "Esther", "Lavinia", "Sarah", "Isabelly", "Elisa", "Eloah", "Nicole", "Maria Alice", "Gabriela", "Maria", "Rebeca", "Leticia", "Clara", "Marina", "Isis", "Ana", "Alicia", "Liz", "Antonella", "Maria Cecilia", "Agatha", "Catarina", "Ana Laura", "Larissa", "Ana Beatriz", "Maria Fernanda", "Maite", "Luna", "Olivia", "Vitoria", "Bianca", "Lais", "Allana", "Maria Valentina", "Emilly", "Ana Sophia", "Clarice", "Milena", "Pietra", "Fernanda", "Carolina", "Amanda", "Maria Vitoria", "Maria Helena", "Eduarda", "Malu", "Maria Sophia", "Stella", "Camila", "Maya", "Gabrielly", "Mirella", "Mariah", "Ana Livia", "Maria Flor", "Ayla", "Isabel", "Sophie", "Giulia", "Luana", "Bruna", "Ana Vitoria", "Joana", "Maria Laura", "Maria Isis", "Louise", "Perola", "Natalia", "Ana Cecilia", "Aurora", "Barbara" }; //Fonte dos nomes: http://www.tiltedlogic.org/Familia/surnames.php char *sobre[] = {"Altoe", "Sossai", "Agrizzi", "De Angeli", "Ferreira", "da Silva", "Della Coletta", "Zampirolli", "Fernandes", "Braga", "Alves", "Costalonga", "Botteon", "Caliman", "de Oliveira", "Zanette", "Salvador", "Silva", "Pesca", "Zandonadi", "Tosi", "da Costa", "Gomes", "Calmon", "de Souza", "Sossai detto Pegorer", "de Almeida", "Pereira", "Falqueto", "Martins"}; srand(time(NULL));//iniciliar o gerador aleatório com a hora atual //laço para geração aleatória dos nomes e notas for(i=0; i<numAl; i++){ x = aleatorio(199); strcpy(nomeTemp, nomes[x]); //nome aleatório strcat(nomeTemp, " "); x = aleatorio(29); strcat(nomeTemp, sobre[x]);//sobrenome aleatório strcpy(vetAl.nome, nomeTemp); nota=aleatorio(100) / 10.0;//gerar uma nota aleatória entre 0 e 10 vetAl.matricula = i+1; vetAl.nota_final = nota; } } //função para gerar um número aleatório de um valor máximo estipulado int aleatorio(int max){ int ret = rand() % max; return ret; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!