Ir ao conteúdo
  • Cadastre-se

RafaelPucci

Membro Pleno
  • Posts

    110
  • Cadastrado em

  • Última visita

Reputação

27
  1. Boa tarde. Procure utilizar fgets[1] para prevenir o estouro do buffer. []'s [1] - http://beej.us/guide/bgc/output/html/multipage/gets.html
  2. Boa tarde. A dica do amigo acima é pertinente. Veja um cadastro básico que passei como exemplo: http://forum.clubedohardware.com.br/cadastro-produto-cliente/1093464?t=1093464 []'s
  3. RafaelPucci

    Código

    Boa noite. Com o conceito de struct você cria um novo "tipo", ou seja, você consegue mesclar vários tipos de dados. Criei um novo tipo habitante contento salário, idade e sexo. Criei algumas funções que ele citou no enunciado e algumas auxiliares, como o Quick, que implementa o algoritmo QuickSort para ordenação de vetores. Segue a referencia para struct: http://tigcc.ticalc.org/doc/keywords.html#struct http://myprogrammingblog.com/2011/07/18/c-language-how-to-use-struct-typedef/ http://www2.its.strath.ac.uk/courses/c/ IND é apenas uma variável que controla os indices do vetor de "habitantes". Não sou muito bom em explicar as coisas.. rs Conseguiu entender ? []'s
  4. RafaelPucci

    Código

    Bom dia. Também não trabalho com C, trabalho com .NET e PHP. Estou cursando o 6° de SI também, programo em C por passatempo =) Qual parte do código você não entendeu ? []'s
  5. RafaelPucci

    Código

    Bom dia dbatista. Segue parte de uma solução que montei aqui, não consegui terminar pois estou no trabalho, segue caso queira melhorá-la. #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 10 typedef struct _habitante { int salario; int idade; char sexo; }habitante; int menu(); void CadastraInf(habitante *hab); void RetornaInf(habitante *hab); int CalculaSalarios(habitante *hab); int * RetornaIdade(habitante *hab); int RetornaMulher(habitante *hab); void Quick(int *vetor, int inicio, int fim); unsigned int IND = -1; int main() { habitante hab[MAX]; while(true){ switch(menu()){ case 1: { CadastraInf(hab); break; } case 2: { RetornaInf(hab);; break; } default: exit(0); } } } int menu() { int opc; printf("******************** MENU ********************\n\n"); printf("(1) - Cadastro\n(2) - Consulta de resultados\n"); printf("Digite a opcao desejada: "); scanf("%d",&opc); return opc; } void CadastraInf(habitante *hab) { fflush(stdin); printf("*** Cadastro de informações ***\n\n"); printf("Digite o salario do habitante: "); scanf("%d",&(hab[IND+1].salario)); fflush(stdin); printf("Digite a idade do habitante: "); scanf("%d",&(hab[IND+1].idade)); fflush(stdin); printf("Digite o sexo do habitante (M/F): "); fgets(&(hab[IND+1].sexo),2,stdin); fflush(stdin); IND++; } void RetornaInf(habitante *hab) { int *vetor = RetornaIdade(hab); printf("Salario do grupo: %d\n",CalculaSalarios(hab)); printf("Menor Idade: %d\n",vetor[0]); printf("Maior Idade: %d\n",vetor[IND]); printf("Quantidade de Mulheres: %d\n",RetornaMulher(hab)); } int CalculaSalarios(habitante *hab) { int cont,soma=0; for(cont=0 ; cont <= IND; cont++){ soma += hab[cont].salario; } return soma; } int * RetornaIdade(habitante *hab) { int cont,vetor[IND]; for(cont=0 ; cont <= IND; cont++){ vetor[cont] = hab[cont].idade; } Quick(vetor,0,IND); return vetor; } int RetornaMulher(habitante *hab) { int cont, qtd=0; for(cont=0 ; cont <= IND; cont++){ if((hab[cont].sexo == 'F') && (hab[cont].salario <= 200)) qtd ++; } return qtd; } /* habitante MenorSal(habitante *hab) { int cont, vetor[IND]; habitante _hab; for(cont=0 ; cont <= IND; cont++){ vetor[cont] = hab[cont].salario; } Quick(vetor,0,IND); for(cont=0 ; cont <= IND; cont++){ if(vetor[0] = hab[cont].salario) { printf("ACHEI"); } } return _hab; }*/ void Quick(int *vetor, int inicio, int fim){ int pivo, aux, i, j, meio; i = inicio; j = fim; meio = (int) ((i + j) / 2); pivo = vetor[meio]; do{ while (vetor[i] < pivo) i = i + 1; while (vetor[j] > pivo) j = j - 1; if(i <= j){ aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i = i + 1; j = j - 1; } }while(j > i); if(inicio < j) Quick(vetor, inicio, j); if(i < fim) Quick(vetor, i, fim); } Segui o princípio de ordenar e buscar as bordas, creio que computacionalmente seja melhor Espero ter ajudado no exemplo. []'s
  6. RafaelPucci

    Código

    A flag %d formata a entrada ou saida como um inteiro. Não testei o código do colega acima, mas creio que gerará um acess violation quando entrar no for por não inicializar a variável idade. É possível melhorar o código acima. []'s

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...