RafaelPucci
-
Posts
110 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por RafaelPucci
-
-
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
-
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
- 1
-
-
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
- 1
-
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
Como comparar char com char em linguagem C?
em C/C#/C++
Postado
Boa tarde.
Procure utilizar fgets[1] para prevenir o estouro do buffer.
[]'s
[1] - http://beej.us/guide/bgc/output/html/multipage/gets.html