Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Yan.Scs.Unisc

C Programação estruturada em C

Recommended Posts

Postado (editado)

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;
}

 

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×