Francisco Souza avatar Francisco Souza committed fab69bd

Adicao do segundo trabalho de Tecnicas de Programacao.

Disciplina do IFES, cursada no segundo semestre de 2007.

Trabalho desenvolvido por Francisco Antonio de Silva Souza e Bruna Arruda Contarine.

Comments (0)

Files changed (37)

Add a comment to this file

linguagem_c/trabalho_tp_ifes_2/enunciado.doc

Binary file added.

Add a comment to this file

linguagem_c/trabalho_tp_ifes_2/resolucao/Gerador de Entradas.exe

Binary file added.

linguagem_c/trabalho_tp_ifes_2/resolucao/VetorFunc/VetorFunc.cpp

+#include "stdafx.h"
+#include "../registro.h"
+#include <stdlib.h>
+
+/*===============================================================================
+Funзгo: alocaVetFunc
+	Aloca um vetor de funcionбrios.
+Parвmetros: Tamanho do vetor.
+Retorno: Um ponteiro para o espaзo alocado na memуria.
+================================================================================*/
+func *alocaVetFunc(int tam)
+{
+	if (tam < 1)
+		return NULL;
+	func *vet;
+	vet = (func *)malloc(tam * sizeof(func));
+	return vet;
+}
+
+/*===============================================================================
+Funзгo: alocaMatFunc
+	Aloca uma matriz de funcionбrios.
+Parвmetros: Quantidade de linhas e de colunas.
+Retorno: Ponteiro para o espaзo alocado na memуria.
+================================================================================*/
+func **alocaMatFunc(int linhas, int colunas)
+{
+	if ((linhas < 1) || (colunas < 1))
+		return NULL;
+	
+	func **mat;
+    int i;
+	mat = (func **)malloc(linhas * sizeof(func *));
+	for (i = 0;i < colunas;i++)
+		mat[i] = (func *)malloc(colunas * sizeof(func));
+
+	return mat;
+}
+
+/*===============================================================================
+Funзгo: desalocaVetFunc
+	Desaloca um vetor de funcionбrios.
+Parвmetros: O vetor de funcionбrios.
+Retorno: Ponteiro para NULL
+================================================================================*/
+func * desalocaVetFunc(func *vet)
+{
+	if (vet == NULL)
+		return NULL;
+	free(vet);
+	return NULL;
+}
+/*===============================================================================
+Funзгo: desalocaMatFunc
+	Desaloca uma matriz de funcionбrios.
+Parвmetros: A matriz de funcionбrios e a quantidade de linhas.
+Retorno: Ponteiro para NULL
+================================================================================*/
+func ** desalocaMatFunc(func **mat, int linhas)
+{
+	if ((mat == NULL) || (linhas < 1))
+		return NULL;
+	int i;
+	for (i = 0;i < linhas;i++)
+		free(mat[i]);
+	free(mat);
+	return NULL;
+}
+
+/*===============================================================================
+Funзгo: ContaFuncionarios
+	Percorre um vetor de funcionбrios (partiзгo) e determina quantos funcionбrios
+	existem na partiзгo.
+Parвmetros: O Vetor de funcionбrios
+Retorno: A quantidade de funcionбrios
+================================================================================*/
+int ContaFuncionarios(func *reparticao)
+{
+	int quant = 0, fim = 0;
+	while (!fim)
+	{
+		fim = reparticao[quant].ultimo;
+		quant++;
+	}
+	return quant;
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/VetorFunc/VetorFunc.h

+/*===============================================================================
+Biblioteca: alocacaoFunc
+	Possui funзхes para manipular vetores (e tambйm matrizes) de funcionбrios.
+================================================================================*/
+
+func *alocaVetFunc(int tam);
+func **alocaMatFunc(int linhas, int colunas);
+
+func *desalocaVetFunc(func *vet);
+func **desalocaMatFunc(func **mat, int linhas);
+
+int ContaFuncionarios(func *reparticao);

linguagem_c/trabalho_tp_ifes_2/resolucao/VetorInteiro/VetorInteiro.cpp

+#include "stdafx.h"
+
+/*===============================================================================
+Funзгo: MaiorDoVetor
+	Percorre um vetor de inteiros e determina o seu maior valor.
+Parвmetros: O vetor e seu tamanho.
+Retorno: O maior valor do vetor. Se o vetor for NULL, retorna 0.
+================================================================================*/
+int MaiorDoVetor(int *vet, int tam)
+{
+	if (vet == NULL)
+		return 0;
+	int i;
+	int maior = vet[0];
+	for (i = 1; i < tam; i++)
+		if (vet[i] > maior)
+			maior = vet[i];
+
+	return maior;
+}
+
+/*===============================================================================
+Funзгo: BuscaNoVetor
+	Busca um valor informado em um vetor de inteiros.
+Parвmetros: O vetor, seu tamanho e o valor a ser pesquisado.
+Retorno: A posiзгo do valor no vetor.
+		 Se o valor nгo for encontrado ou o vetor for NULL, retorna NULL.
+================================================================================*/
+int BuscaNoVetor(int *vet, int tam, int val)
+{
+	if (vet == NULL)
+		return NULL;
+	int i;
+	for (i = 0; i < tam; i++)
+		if (vet[i] == val)
+			return i;
+
+	return NULL;
+}
+
+/*===============================================================================
+Funзгo: BuscaNoVetor ("Sobrecarregada")
+	Busca um valor informado em um vetor de inteiros a partir de uma posiзгo.
+Parвmetros: O vetor, seu tamanho, o valor a ser pesquisado e de qual posiзгo
+			a pesquisa deve ser iniciada.
+Retorno: A posiзгo do valor no vetor a partir da posiзгo indicada por inicio.
+		 Se o valor nгo for encontrado ou o vetor for NULL, retorna NULL.
+================================================================================*/
+int BuscaNoVetor(int *vet, int tam, int val, int inicio)
+{
+	if (vet == NULL)
+		return NULL;
+	int i;
+	for (i = inicio; i < tam; i++)
+		if (vet[i] == val)
+			return i;
+
+	return NULL;
+}
+/*===============================================================================
+Funзгo: ContaNoVetor
+	Conta quantas vezes um valor aparece em um vetor de inteiros
+Parвmetros: O vetor, seu tamanho e o valor a ser pesquisado.
+Retorno: A quantidade de vezes que o valor apareceu no vetor, se o vetor for NULL
+		 retorna NULL.
+================================================================================*/
+int ContaNoVetor(int *vet, int tam, int val)
+{
+	if (vet == NULL)
+		return NULL;
+	int i, cont = 0;
+	for (i = 0; i < tam; i++)
+		if (vet[i] == val)
+			cont++;
+
+	return cont;
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/VetorInteiro/VetorInteiro.h

+/*===============================================================================
+Biblioteca: VetorInteiro
+	Possui algumas funзхes para manipulaзгo de vetores inteiros.
+================================================================================*/
+
+int MaiorDoVetor(int *vet, int tam);
+int BuscaNoVetor(int *vet, int tam, int val);
+int BuscaNoVetor(int *vet, int tam, int val, int inicio);
+int ContaNoVetor(int *vet, int tam, int val);

linguagem_c/trabalho_tp_ifes_2/resolucao/aloca/aloca.cpp

+#include "stdafx.h"
+#include <stdlib.h>
+
+/*==============================================================
+   Funзгo alocaVetChar = Aloca uma string
+   Tamanho: tamanho
+==============================================================*/
+char *alocaVetChar (int tamanho)
+{
+	char *vet;
+	vet = (char *)malloc(tamanho * sizeof(char));
+	return vet;
+}
+/*==============================================================
+   Funзгo alocaVetFloat = Aloca um vetor de reais
+   Tamanho: tamanho
+==============================================================*/
+float *alocaVetFloat (int tamanho)
+{
+	float *vet;
+	vet = (float *)malloc(tamanho * sizeof(float));
+	return vet;
+}
+/*==============================================================
+   Funзгo alocaVetInt = Aloca um vetor de inteiros
+   Tamanho: tamanho
+==============================================================*/
+int *alocaVetInt (int tamanho)
+{
+	int *vet;
+	vet = (int *)malloc(tamanho * sizeof(int));
+	return vet;
+}
+/*==============================================================
+   Funзгo alocaMatInt = Aloca uma matriz de inteiros
+   Tamanho: linhas x colunas
+==============================================================*/
+int **alocaMatInt (int linhas, int colunas)
+{
+	int **mat;
+    int i;
+	mat = (int **)malloc(linhas * sizeof(int *));
+	for (i = 0;i < colunas;i++)
+		mat[i] = (int *)malloc(colunas * sizeof(int));
+
+	return mat;
+} 
+/*==============================================================
+   Funзгo alocaMatStr = Aloca um vetor de strings
+   Tamanho: linhas x colunas
+==============================================================*/
+char **alocaMatStr (int linhas, int colunas)
+{
+	char **mat;
+    int i;
+	mat = (char **)malloc(linhas * sizeof(char *));
+	for (i = 0;i < colunas;i++)
+		mat[i] = (char *)malloc(colunas * sizeof(char));
+
+	return mat;
+} 
+/*==============================================================
+   Funзгo alocaMatFloat = Aloca uma matriz de rais
+   Tamanho: linhas x colunas
+==============================================================*/
+float **alocaMatFloat (int linhas, int colunas)
+{
+	float **mat;
+    int i;
+	mat = (float **)malloc(linhas * sizeof(float *));
+	for (i = 0;i < colunas;i++)
+		mat[i] = (float *)malloc(colunas * sizeof(float));
+
+	return mat;
+} 

linguagem_c/trabalho_tp_ifes_2/resolucao/aloca/aloca.h

+/*===========================================================================
+    Biblioteca aloca: Possui funзхes para alocar matrizes e vetores
+===========================================================================*/
+
+char *alocaVetChar (int tamanho);
+float *alocaVetFloat (int tamanho);
+int *alocaVetInt (int tamanho);
+
+char **alocaMatStr (int linhas, int colunas);
+float **alocaMatFloat (int linhas, int colunas);
+int **alocaMatInt (int linhas, int colunas);

linguagem_c/trabalho_tp_ifes_2/resolucao/arquivo/arquivo.cpp

+#include "stdafx.h"
+
+/*===============================================================================
+Funзгo: AbreArquivoLeitura
+	Abre um arquivo no modo de leitura.
+Parвmetros: O ponteiro do arquivo (passado por referкncia) e o nome do arquivo.
+================================================================================*/
+void AbreArquivoLeitura(FILE **arq, char *nomearquivo)
+{
+	*arq = fopen(nomearquivo, "r");
+	if (!(*arq))
+		printf("Erro ao abrir arquivo!\n");
+	else
+		printf("\n\t\tArquivo %s aberto com sucesso!\n\n",nomearquivo);
+}
+/*===============================================================================
+Funзгo: AbreArquivoGravacao
+	Abre um arquivo no modo de gravaзгo.
+Parвmetros: O ponteiro do arquivo (passado por referкncia) e o nome do arquivo.
+================================================================================*/
+void AbreArquivoGravacao(FILE **arq, char *nomearquivo)
+{
+	*arq = fopen(nomearquivo, "w");
+	if (!(*arq))
+		printf("Erro ao abrir/criar arquivo!\n");
+}
+/*===============================================================================
+Funзгo: AbreArquivoAdicao
+	Abre um arquivo no modo de adiзгo (append).
+Parвmetros: O ponteiro do arquivo (passado por referкncia) e o nome do arquivo.
+================================================================================*/
+void AbreArquivoAdicao(FILE **arq, char *nomearquivo)
+{
+	*arq = fopen(nomearquivo, "a");
+	if (!(*arq))
+		printf("Erro ao abrir/criar arquivo!\n");
+}
+/*===============================================================================
+Funзгo: FechaArquivo
+	Fecha um arquivo.
+Parвmetros: O ponteiro e o nome do arquivo.
+================================================================================*/
+void FechaArquivo(FILE *arq, char *nomearquivo)
+{
+	fclose(arq);
+	printf("\n\t\tArquivo %s fechado/salvo com sucesso!\n\n",nomearquivo);
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/arquivo/arquivo.h

+/*====================================================================================
+Biblioteca arquivo.h
+	Possui funзхes para abertura de arquivo em modos diferentes.
+====================================================================================*/
+
+void AbreArquivoLeitura(FILE **arq, char *nomearquivo);
+void AbreArquivoGravacao(FILE **arq, char *nomearquivo);
+void AbreArquivoAdicao(FILE **arq, char *nomearquivo);
+void FechaArquivo(FILE *arq, char *nomearquivo);

linguagem_c/trabalho_tp_ifes_2/resolucao/auxiliar/auxiliar.cpp

+#include "stdafx.h"
+
+/*===============================================================================
+Funзгo: ArquivoExiste
+	Verifica se um arquivo existe.
+Parвmetros: O nome do arquivo
+Retorno: Caso o arquivo exista, retorna 1, caso contrбrio, retorna 0.
+================================================================================*/
+int ArquivoExiste(char nome_arquivo[30])
+{
+	FILE *fp;
+	fp = fopen(nome_arquivo,"r");
+	if(!fp)
+		return 0;
+	else
+	{
+		fclose(fp);
+		return 1;
+	}
+}
+/*===============================================================================
+Funзгo: GeraNomeArquivos
+	Gera o nome dos arquivos entrada_xx.txt e saida_xx.txt
+Parвmetros: As variбveis que receberгo o nome do arquivo de entrada e do arquivo
+			de saнda, utilizando "passagem por referкncia".
+================================================================================*/
+void GeraNomeArquivos(char **entrada, char **saida)
+{
+	int n_entrada;
+	do {
+		printf ("\n\nDigite o numero do arquivo de entrada (1 a 999): ");
+		scanf("%d", &n_entrada);
+	} while ((n_entrada < 1) && (n_entrada > 999));
+
+	if (n_entrada < 10)
+	{
+		sprintf(*entrada,"entrada_0%d.txt",n_entrada);
+		sprintf(*saida,"saida_0%d.txt",n_entrada);
+	}
+	else
+	{
+		sprintf(*entrada,"entrada_%d.txt",n_entrada);
+		sprintf(*saida,"saida_%d.txt",n_entrada);
+	}
+	
+	/* Verificando se o arquivo de entrada existe */
+	if (!ArquivoExiste(*entrada))
+	{
+		printf("Erro! Arquivo %s nao existe, digite uma entrada valida!\n",*entrada);
+		GeraNomeArquivos(&(*entrada), &(*saida));
+	}
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/auxiliar/auxiliar.h

+/*===============================================================================
+Biblioteca: auxiliar.h
+	Possui funзхes que auxiliam no tratamento dos nomes dos arquivos de
+	entrada e de saнda.
+================================================================================*/
+
+int ArquivoExiste(char nome_arquivo[30]);
+void GeraNomeArquivos(char **entrada, char **saida);

linguagem_c/trabalho_tp_ifes_2/resolucao/desaloca/desaloca.cpp

+#include "stdafx.h"
+#include <stdlib.h>
+
+/*==============================================================
+   Funзгo liberaVetChar = Libera a memуria alocada para uma string
+==============================================================*/
+char *liberaVetChar (char *vet)
+{
+	if (vet == NULL)
+		return NULL;
+	free(vet);
+	return NULL;
+}
+/*==============================================================
+   Funзгo liberaVetFloat = Libera a memуria alocada para um
+						   vetor de reais
+==============================================================*/
+float *liberaVetFloat (float *vet)
+{
+	if (vet == NULL)
+		return NULL;
+	free(vet);
+	return NULL;
+}
+/*==============================================================
+   Funзгo liberaVetInt = Libera a memуria alocada para um
+						 vetor de inteiros
+==============================================================*/
+int *liberaVetInt (int *vet)
+{
+	if (vet == NULL)
+		return NULL;
+	free(vet);
+	return NULL;
+}
+/*==============================================================
+   Funзгo liberaMatChar = Libera a memуria alocada para uma
+						  matriz de strings
+==============================================================*/
+char **liberaMatChar (char **mat, int linhas, int colunas)
+{
+	int j;
+	if (mat == NULL)
+		return NULL;
+	if (linhas < 1 || colunas < 1)
+	{
+		return mat;
+	}
+	for (j=0; j<linhas; j++) 
+		free (mat[j]);
+	free (mat);
+	return NULL; 
+}
+/*==============================================================
+   Funзгo liberaMatFloat = Libera a memуria alocada para uma
+						   matriz de reais
+==============================================================*/
+float **liberaMatFloat (float **mat, int linhas, int colunas)
+{
+	int j;
+	if (mat == NULL)
+		return NULL;
+	if (linhas < 1 || colunas < 1)
+	{
+		return mat;
+	}
+	for (j=0; j<linhas; j++) 
+		free (mat[j]);
+	free (mat);
+	return NULL; 
+}
+/*==============================================================
+   Funзгo liberaMatInt = Libera a memуria alocada para uma
+						 matriz de inteiros
+==============================================================*/
+int **liberaMatInt (int **mat, int linhas, int colunas)
+{
+	int j;
+	if (mat == NULL)
+		return NULL;
+	if (linhas < 1 || colunas < 1)
+	{
+		return mat;
+	}
+	for (j=0; j<linhas; j++) 
+		free (mat[j]);
+	free (mat);
+	return NULL; 
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/desaloca/desaloca.h

+/*==========================================================================
+    Biblioteca desaloca: Possui funзхes para desalocar matrizes e vetores
+==========================================================================*/
+
+char *liberaVetChar (char *vet);
+float *liberaVetFloat (float *vet);
+int *liberaVetInt (int *vet);
+
+char **liberaMatChar (char **mat, int linhas, int colunas);
+float **liberaMatFloat (float **mat, int linhas, int colunas);
+int **liberaMatInt (int **mat, int linhas, int colunas);

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_01.txt

+3
+4
+Bruna	1050	17	F
+Francisco	1500	18	M
+Joquebeyde	1000	48	F
+Altivo	5000	16	M
+3
+Alexandre	2500	22	M
+Ameriana	263	21	F
+Giovany	4000	28	M
+2
+Gilmar	500	30	M
+Alberto	350	45	M

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_02.txt

+2
+2
+Pedrao	200	18	M
+Leia	1000	16	F
+3
+Jaime	3050	18	M
+Leticia	1500	30	M
+Josefa	150	18	F

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_03.txt

+3
+4
+Lais	904.00	32	F
+Joao	4995.00	17	M
+Pedro	4840.00	50	M
+Maria	6277.00	15	F
+4
+Luiz	1698.00	24	M
+Luiz	9452.00	15	M
+Luisa	6126.00	47	F
+Laura	287.00	34	F
+5
+Jonathan	714.00	24	M
+Eros	3499.00	54	M
+Danielli	7879.00	57	F
+Giovany	1730.00	30	M
+Rafael	688.00	39	M

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_04.txt

+8
+3
+Carlos	1221.00	17	M
+Pedro	1116.00	48	M
+Loriane	2611.00	25	F
+2
+Conceicao	3421.00	19	F
+Josias	906.00	52	M
+4
+Josue	4957.00	25	M
+Geraldo	760.00	45	M
+Joquebeyde	3304.00	28	F
+Jacinto	321.00	60	M
+6
+Hyloran	7388.00	45	M
+Maicon	1071.00	15	M
+Lorrane	3310.00	60	F
+Roberta	8152.00	20	F
+Roberto	4178.00	56	M
+Josiane	2092.00	34	F
+2
+Morgana	1283.00	14	F
+Leonardo	4560.00	26	M
+3
+Leandro	1013.00	33	M
+Fabricio	6413.00	23	M
+Caroline	4460.00	24	F
+5
+Briano	5101.00	54	M
+Carol	9169.00	47	F
+Adriano	660.00	24	M
+Rodrigo	8421.00	42	M
+Adilson	2225.00	23	M
+1
+Giovanna	8155.00	50	F

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_05.txt

+8
+3
+Carlos	1221.00	17	M
+Pedro	1116.00	48	M
+Loriane	2611.00	25	F
+2
+Conceicao	3421.00	19	F
+Josias	906.00	52	M
+4
+Josue	4957.00	25	M
+Geraldo	760.00	45	M
+Joquebeyde	3304.00	28	F
+Jacinto	321.00	60	M
+6
+Hyloran	7388.00	45	M
+Maicon	1071.00	15	M
+Lorrane	3310.00	60	F
+Roberta	8152.00	20	F
+Roberto	4178.00	56	M
+Josiane	2092.00	34	F
+2
+Morgana	1283.00	14	F
+Leonardo	4560.00	26	M
+3
+Leandro	1013.00	33	M
+Fabricio	6413.00	23	M
+Caroline	4460.00	24	F
+5
+Briano	5101.00	54	M
+Carol	9169.00	47	F
+Adriano	660.00	24	M
+Rodrigo	8421.00	42	M
+Adilson	2225.00	23	M
+1
+Lara	8155.00	50	F

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_06.txt

+4
+2
+Daniel	2876.00	60	M
+Edgard	9395.00	32	M
+3
+Francis	7404.00	39	M
+Mayara	8325.00	17	F
+Mayla	6968.00	41	F
+5
+Agnus	572.00	19	M
+Josimara	1783.00	18	F
+Leidiane	7878.00	55	F
+Karla	8282.00	39	F
+Pedro	1948.00	28	M
+4
+Josue	7002.00	35	M
+Diego	9791.00	43	M
+Diogo	9717.00	17	M
+Dayani	797.00	60	F

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_07.txt

+3
+2
+Cristiano	3795.00	25	M
+Cleziel	9838.00	24	M
+4
+Catias	7478.00	50	M
+Caltivo	7969.00	17	M
+Canielli	1315.00	34	F
+Cristiani	4764.00	24	F
+1
+Caissa	5651.00	23	F

linguagem_c/trabalho_tp_ifes_2/resolucao/entrada_08.txt

+12
+4
+Ana	1618.00	34	F
+Joana	2828.00	60	F
+Mariana	1828.00	60	F
+Cleriana	8417.00	39	F
+6
+Junior	5374.00	13	M
+Luiz	4968.00	18	M
+Luis	2595.00	30	F
+Zumira	3621.00	46	F
+Eliete	7499.00	29	F
+Raphael	4185.00	32	M
+1
+Jones	3977.00	20	M
+5
+Michel	2171.00	51	M
+Micaela	1622.00	19	F
+Rayane	8022.00	28	F
+Rayssa	3902.00	40	F
+Antonio	655.00	30	M
+3
+Priscila	2335.00	39	F
+Liliane	3718.00	25	F
+Creuza	281.00	53	F
+8
+Alexandre	6019.00	16	M
+Mariani	2244.00	29	F
+Steffani	6817.00	41	F
+Debora	8293.00	60	F
+Igor	9174.00	19	M
+Scheila	2598.00	30	F
+Gustavo	8823.00	16	M
+Victor	8438.00	36	M
+3
+Silvania	8639.00	58	F
+Sonali	7884.00	46	F
+Ademir	4445.00	30	M
+4
+Solange	4984.00	53	F
+Cleiton	8412.00	56	M
+Jeferson	2324.00	42	M
+Samara	6347.00	19	F
+5
+Lilian	8351.00	36	F
+Patricia	7185.00	35	F
+Patrick	2121.00	60	M
+John	1982.00	47	M
+Mayane	9869.00	26	F
+2
+Mirella	4407.00	54	F
+Mayara	6971.00	52	F
+3
+Tatiana	2667.00	21	F
+Jessica	2117.00	29	F
+Fernando	1113.00	34	M
+5
+Cassiane	5022.00	45	F
+Juliana	8812.00	38	F
+Camila	865.00	14	F
+Phillip	7751.00	30	M
+Natasha	4541.00	55	F

linguagem_c/trabalho_tp_ifes_2/resolucao/funcoes.cpp

+#include "stdafx.h"
+#include "funcoes.h"
+#include "desaloca/desaloca.h"
+#include <stdlib.h>
+#include <string.h>
+
+/*===============================================================================
+Funзгo: desalocaVetFunc
+	Desaloca um vetor de funcionбrios.
+Parвmetros: O vetor de funcionбrios.
+Retorno: Ponteiro para NULL
+================================================================================*/
+func * desalocaVetFunc(func *vet)
+{
+	if (vet == NULL)
+		return NULL;
+	free(vet);
+	return NULL;
+}
+/*===============================================================================
+Funзгo: desalocaMatFunc
+	Desaloca uma matriz de funcionбrios.
+Parвmetros: A matriz de funcionбrios, a quantidade de linhas e a quantidade de colunas.
+Retorno: Ponteiro para NULL
+================================================================================*/
+func ** desalocaMatFunc(func **mat, int linhas)
+{
+	if ((mat == NULL) || (linhas < 1))
+		return NULL;
+	int i;
+	for (i = 0;i < linhas;i++)
+		free(mat[i]);
+	free(mat);
+	return NULL;
+}
+/*===============================================================================
+Funзгo: ParaMinusculo
+	Converte um caracter informado para seu correspondente em minъsculo.
+	Caso nгo haja nenhum correspondente, retorna o caracter informado.
+Parвmetros: O caracter de origem
+Retorno: O caracter em caixa baixa correspondente ao caracter de origem
+================================================================================*/
+char ParaMinusculo(char origem)
+{
+	char maiusculo, minusculo = 'a';
+	for (maiusculo = 'A'; maiusculo <= 'Z'; maiusculo++)
+	{
+		if (maiusculo == origem)
+			return minusculo;
+		minusculo++;
+	}
+	return origem;
+}
+/*===============================================================================
+Funзгo: lerFuncionario
+	Lк a quantidade de funcionбrios informada de um arquivo.
+Parвmetros: O ponteiro para o arquivo e a quantidade de funcionбrios.
+Retorno: Um vetor de funcionбrios (com nome, salбrio, idade e sexo)
+================================================================================*/
+func * lerFuncionario (FILE * arquivo, int quantidade)
+{
+	int i;
+	func *reparticao;
+	reparticao = (func*) malloc(quantidade * sizeof(func));
+	for (i = 0; i < quantidade; i++)
+	{
+		fscanf(arquivo, "%s", reparticao[i].nome);
+		fscanf(arquivo, "%f", &reparticao[i].salario);
+		fscanf(arquivo, "%d", &reparticao[i].idade);
+		fscanf(arquivo, "%s", reparticao[i].sexo);
+		reparticao[i].ultimo = 0;
+	}
+
+	/* Indicando o ъltimo funcionбrio da repartiзгo */
+	reparticao[i - 1].ultimo = 1;
+	return reparticao;
+}
+/*===============================================================================
+Funзгo: vogais
+	Referencia vogais numericamente, 0 equivale a 'a', 1 equivale a 'e', etc.
+Parвmetros: O nъmero de referкncia
+Retorno: A vogal referenciada pelo nъmero. Se for passado um nъmero nгo vбlido
+		 (menor que 0 ou maior que 4) a funзгo retorna o caracter '\0'
+================================================================================*/
+char vogais(int num)
+{
+	char res;
+	switch (num)
+	{
+		case 0: res = 'a'; break;
+		case 1: res = 'e'; break;
+		case 2: res = 'i'; break;
+		case 3: res = 'o'; break;
+		case 4: res = 'u'; break;
+		default: res = '\0';
+	}
+
+	return res;
+}
+/*===============================================================================
+Funзгo: contaLetra
+	Conta em um vetor de funcionбrios quantas vezes uma letra informada aparece
+	nos nomes dos funcionбrios. Caso a letra nгo apareзa em algum dos nomes, a
+	funзгo para de contar.
+Parвmetros: O vetor de funcionбrios e a letra a ser buscada
+Retorno: Se a letra aparecer em todos os nomes, retorna a quantidade de vezes
+		 que a letra apareceu. Caso contrбrio, retorna 0.
+================================================================================*/
+int contaLetra(func *reparticao, char letra, int q_func)
+{
+	int cont, total = 0;
+	int i = 0, j;
+	int tam_nome;
+	while (i < q_func)
+	{
+		cont = 0;
+		tam_nome = strlen(reparticao[i].nome);
+		for (j = 0; j < tam_nome; j++)
+			if (ParaMinusculo(reparticao[i].nome[j]) == letra)
+				cont++;
+		if (!cont)
+			return 0;
+		total += cont;
+		i++;
+	}
+	return total;
+}
+/*===============================================================================
+Funзгo: MaiorVogal
+	Determina qual vogal mais aparece em uma matriz de funcionбrios, ou seja, em
+	todas as repartiзхes.
+Parвmetros: A matriz de funcionбrios e a quantidade de repartiзхes
+Retorno: A vogal que mais aparecer (desde que apareзa em todas os nomes), caso
+		 a condiзгo de aparecer nгo seja satisfeita, a funзгo retorna NULL
+================================================================================*/
+char MaiorVogal (func **reparticoes, int q_Particoes)
+{
+	int q[5] = {0, 0, 0, 0, 0};
+	int q_Funcionarios;
+	int q_Letras = 0;
+	int i, k;
+	int fim_Particoes;
+	for (k = 0;k < 5;k++)
+	{
+		fim_Particoes = 0;
+		i = 0;
+		while ((i < q_Particoes) && (!fim_Particoes))
+		{
+			q_Funcionarios = ContaFuncionarios(reparticoes[i]);
+			q_Letras = contaLetra(reparticoes[i], vogais(k), q_Funcionarios);
+			if (q_Letras)
+				q[k] += q_Letras;
+			else
+				q[k] = 0;
+			i++;
+			fim_Particoes = (!q[k]);
+		}
+	}
+
+	char vogal = NULL;
+	int maior = 0;
+	for (k = 0;k < 5;k++)
+	{
+		if (q[k] > maior)
+		{
+			vogal = vogais(k);
+			maior = q[k];
+		}
+	}
+	return vogal;
+}
+/*===============================================================================
+Funзгo: MaiorSalario
+	Percorre um vetor de funcionбrios (partiзгo) e determina o maior salбrio
+Parвmetros: O Vetor de funcionбrios
+Retorno: O maior salбrio encontrado.
+================================================================================*/
+float MaiorSalario (func *reparticao)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i;
+	float maior = reparticao[0].salario;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 1;i < q_func;i++)
+		if (maior < reparticao[i].salario)
+			maior = reparticao[i].salario;
+	return maior;
+}
+
+/*===============================================================================
+Funзгo: MenorSalario
+	Percorre um vetor de funcionбrios (partiзгo) e determina o menor salбrio
+Parвmetros: O Vetor de funcionбrios
+Retorno: O menor salбrio encontrado.
+================================================================================*/
+float MenorSalario (func *reparticao)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i;
+	float menor = reparticao[0].salario;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 1;i < q_func;i++)
+		if (menor > reparticao[i].salario)
+			menor = reparticao[i].salario;
+	return menor;
+}
+/*===============================================================================
+Funзгo: SomaSalarios
+	Percorre um vetor de funcionбrios somando todos os salбrios.
+Parвmetros: O Vetor de funcionбrios
+Retorno: A soma de todos os salбrios.
+================================================================================*/
+float SomaSalarios (func *reparticao)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i;
+	float soma = reparticao[0].salario;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 1;i < q_func;i++)
+		soma += reparticao[i].salario;
+	return soma;
+}
+/*===============================================================================
+Funзгo: DeMenor
+	Percorre um vetor de funcionбrios e informa quantos funcionбrios do sexo
+	informado sгo menores de idade
+Parвmetros: O Vetor de funcionбrios e o sexo a comparar
+Retorno: A quantidade de funcionбrios do sexo 'sexo' com menos de 18 anos
+================================================================================*/
+int DeMenor (func *reparticao, char sexo)
+{
+	if (reparticao == NULL)
+		return 0;
+	if ((sexo != 'M') && (sexo != 'F'))
+		return 0;
+	int i;
+	int cont = 0;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 0;i < q_func;i++)
+		if ((reparticao[i].idade < 18) && (reparticao[i].sexo[0] == sexo))
+			cont++;
+	return cont;
+}
+
+
+/*===============================================================================
+Funзгo: QuantFuncMaiorSalario
+	Percorre um vetor de funcionбrios (partiзгo) comparando e contando quantos
+	salбrios sгo maiores do que um salбrio informado (por parвmetro)
+Parвmetros: O Vetor de funcionбrios e o salбrio a comparar
+Retorno: A quantidade de funcionбrios que tem o salбrio maior do que o informado
+================================================================================*/
+int QuantFuncMaiorSalario(func *reparticao, float sal)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i, cont = 0;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 0;i < q_func;i++)
+		if (reparticao[i].salario > sal)
+			cont++;
+	return cont;
+}
+/*===============================================================================
+Funзгo: ContaFuncionarios
+	Percorre um vetor de funcionбrios (partiзгo) e determina quantos funcionбrios
+	existem na partiзгo.
+Parвmetros: O Vetor de funcionбrios
+Retorno: A quantidade de funcionбrios
+================================================================================*/
+int ContaFuncionarios(func *reparticao)
+{
+	int quant = 0, fim = 0;
+	while (!fim)
+	{
+		fim = reparticao[quant].ultimo;
+		quant++;
+	}
+	return quant;
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/funcoes.h

+#include "registro.h"
+
+func * desalocaVetFunc(func *vet);
+func ** desalocaMatFunc(func **mat, int linhas);
+func * lerFuncionario (FILE * arquivo, int quantidade);
+char vogais(int num);
+int contaLetra(func *reparticao, char letra, int q_func);
+char MaiorVogal (func **funcionarios, int q_Particoes);
+float MaiorSalario (func *funcionarios);
+float MenorSalario (func *funcionarios);
+float SomaSalarios (func *funcionarios);
+int HomensDeMenor (func *funcionarios);
+int MulheresDeMenor (func *funcionarios);
+int DeMenor (func *funcionarios, char sexo);
+int ContaFuncionarios(func *reparticao);
+int QuantFuncMaiorSalario(func *reparticao, float sal);

linguagem_c/trabalho_tp_ifes_2/resolucao/funcoes/funcoes.cpp

+#include "stdafx.h"
+#include "funcoes.h"
+#include "../aloca/aloca.h"
+#include "../VetorInteiro/VetorInteiro.h"
+#include "../VetorFunc/VetorFunc.h"
+#include <stdlib.h>
+#include <string.h>
+
+/*===============================================================================
+Funзгo: ParaMinusculo
+	Converte um caracter informado para seu correspondente em minъsculo.
+	Caso nгo haja nenhum correspondente, retorna o caracter informado.
+Parвmetros: O caracter de origem
+Retorno: O caracter em caixa baixa correspondente ao caracter de origem
+================================================================================*/
+char ParaMinusculo(char origem)
+{
+	if ((origem < 'A') || (origem > 'Z'))
+		return origem;
+
+	return (origem + 32);
+}
+/*===============================================================================
+Funзгo: lerFuncionario
+	Lк a quantidade de funcionбrios informada de um arquivo.
+Parвmetros: O ponteiro para o arquivo e a quantidade de funcionбrios.
+Retorno: Um vetor de funcionбrios (com nome, salбrio, idade e sexo)
+================================================================================*/
+func * lerFuncionario (FILE * arquivo, int quantidade)
+{
+	int i;
+	func *reparticao;
+	reparticao = alocaVetFunc(quantidade);
+	for (i = 0; i < quantidade; i++)
+	{
+		fscanf(arquivo, "%s", reparticao[i].nome);
+		fscanf(arquivo, "%f", &reparticao[i].salario);
+		fscanf(arquivo, "%d", &reparticao[i].idade);
+		fscanf(arquivo, "%s", reparticao[i].sexo);
+		reparticao[i].ultimo = 0;
+	}
+
+	/* Indicando o ъltimo funcionбrio da repartiзгo */
+	reparticao[i - 1].ultimo = 1;
+	return reparticao;
+}
+/*===============================================================================
+Funзгo: vogais
+	Referencia vogais numericamente, 0 equivale a 'a', 1 equivale a 'e', etc.
+Parвmetros: O nъmero de referкncia
+Retorno: A vogal referenciada pelo nъmero. Se for passado um nъmero nгo vбlido
+		 (menor que 0 ou maior que 4) a funзгo retorna o caracter '\0'
+================================================================================*/
+char vogais(int num)
+{
+	char res;
+	switch (num)
+	{
+		case 0: res = 'a'; break;
+		case 1: res = 'e'; break;
+		case 2: res = 'i'; break;
+		case 3: res = 'o'; break;
+		case 4: res = 'u'; break;
+		default: res = '\0';
+	}
+
+	return res;
+}
+/*===============================================================================
+Funзгo: contaLetra
+	Conta em um vetor de funcionбrios quantas vezes uma letra informada aparece
+	nos nomes dos funcionбrios. Caso a letra nгo apareзa em algum dos nomes, a
+	funзгo para de contar.
+Parвmetros: O vetor de funcionбrios e a letra a ser buscada
+Retorno: Se a letra aparecer em todos os nomes, retorna a quantidade de vezes
+		 que a letra apareceu. Caso contrбrio, retorna 0.
+================================================================================*/
+int contaLetra(func *reparticao, char letra, int q_func)
+{
+	int cont, total = 0;
+	int i = 0, j;
+	int tam_nome;
+	while (i < q_func)
+	{
+		cont = 0;
+		tam_nome = strlen(reparticao[i].nome);
+		for (j = 0; j < tam_nome; j++)
+			if (ParaMinusculo(reparticao[i].nome[j]) == letra)
+				cont++;
+		if (!cont)
+			return 0;
+		total += cont;
+		i++;
+	}
+	return total;
+}
+/*===============================================================================
+Funзгo: MaiorVogal
+	Determina qual vogal mais aparece em uma matriz de funcionбrios, ou seja, em
+	todas as repartiзхes.
+Parвmetros: A matriz de funcionбrios e a quantidade de repartiзхes
+Retorno: A vogal que mais aparecer (desde que apareзa em todas os nomes), caso
+		 a condiзгo de aparecer nгo seja satisfeita, a funзгo retorna NULL
+================================================================================*/
+char *MaiorVogal (func **reparticoes, int q_Particoes)
+{
+	int q[5] = {0, 0, 0, 0, 0};
+	int q_Funcionarios;
+	int q_Letras = 0;
+	int i, k;
+	int fim_Particoes;
+	for (k = 0;k < 5;k++)
+	{
+		fim_Particoes = 0;
+		i = 0;
+		while ((i < q_Particoes) && (!fim_Particoes))
+		{
+			q_Funcionarios = ContaFuncionarios(reparticoes[i]);
+			q_Letras = contaLetra(reparticoes[i], vogais(k), q_Funcionarios);
+			if (q_Letras)
+				q[k] += q_Letras;
+			else
+				q[k] = 0;
+			i++;
+			fim_Particoes = (!q[k]);
+		}
+	}
+
+	char *vogal;
+	int s, maior = MaiorDoVetor(q, 5);
+	if (maior)
+	{
+		int tam = ContaNoVetor(q, 5, maior);
+		vogal = alocaVetChar(tam + 1);
+		int pos = BuscaNoVetor(q, 5, maior);
+		for (s = 0; s < tam; s++)
+		{
+			vogal[s] = vogais(pos);
+			pos = BuscaNoVetor(q, 5, maior, pos + 1);
+		}
+		vogal[tam] = '\0';
+	}
+	else
+	{
+		vogal = NULL;
+	}
+	return vogal;
+}
+/*===============================================================================
+Funзгo: MaiorSalario
+	Percorre um vetor de funcionбrios (partiзгo) e determina o maior salбrio
+Parвmetros: O Vetor de funcionбrios
+Retorno: O maior salбrio encontrado.
+================================================================================*/
+float MaiorSalario (func *reparticao)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i;
+	float maior = reparticao[0].salario;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 1;i < q_func;i++)
+		if (maior < reparticao[i].salario)
+			maior = reparticao[i].salario;
+	return maior;
+}
+
+/*===============================================================================
+Funзгo: MenorSalario
+	Percorre um vetor de funcionбrios (partiзгo) e determina o menor salбrio
+Parвmetros: O Vetor de funcionбrios
+Retorno: O menor salбrio encontrado.
+================================================================================*/
+float MenorSalario (func *reparticao)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i;
+	float menor = reparticao[0].salario;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 1;i < q_func;i++)
+		if (menor > reparticao[i].salario)
+			menor = reparticao[i].salario;
+	return menor;
+}
+/*===============================================================================
+Funзгo: SomaSalarios
+	Percorre um vetor de funcionбrios somando todos os salбrios.
+Parвmetros: O Vetor de funcionбrios
+Retorno: A soma de todos os salбrios.
+================================================================================*/
+float SomaSalarios (func *reparticao)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i;
+	float soma = reparticao[0].salario;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 1;i < q_func;i++)
+		soma += reparticao[i].salario;
+	return soma;
+}
+/*===============================================================================
+Funзгo: DeMenor
+	Percorre um vetor de funcionбrios e informa quantos funcionбrios do sexo
+	informado sгo menores de idade
+Parвmetros: O Vetor de funcionбrios e o sexo a comparar
+Retorno: A quantidade de funcionбrios do sexo 'sexo' com menos de 18 anos
+================================================================================*/
+int DeMenor (func *reparticao, char sexo)
+{
+	if (reparticao == NULL)
+		return 0;
+	if ((sexo != 'M') && (sexo != 'F'))
+		return 0;
+	int i;
+	int cont = 0;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 0;i < q_func;i++)
+		if ((reparticao[i].idade < 18) && (reparticao[i].sexo[0] == sexo))
+			cont++;
+	return cont;
+}
+
+
+/*===============================================================================
+Funзгo: QuantFuncMaiorSalario
+	Percorre um vetor de funcionбrios (partiзгo) comparando e contando quantos
+	salбrios sгo maiores do que um salбrio informado (por parвmetro)
+Parвmetros: O Vetor de funcionбrios e o salбrio a comparar
+Retorno: A quantidade de funcionбrios que tem o salбrio maior do que o informado
+================================================================================*/
+int QuantFuncMaiorSalario(func *reparticao, float sal)
+{
+	if (reparticao == NULL)
+		return 0;
+	int i, cont = 0;
+	int q_func = ContaFuncionarios(reparticao);
+	for (i = 0;i < q_func;i++)
+		if (reparticao[i].salario > sal)
+			cont++;
+	return cont;
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/funcoes/funcoes.h

+/*==================================================================================
+Biblioteca: funcoes.h
+	Possui funзхes especificadas no trabalho e algumas auxiliares а estas funзхes.
+===================================================================================*/
+
+#include "../structs.h"
+#include "../VetorFunc/VetorFunc.h"
+
+char ParaMinusculo(char origem);
+func * lerFuncionario (FILE * arquivo, int quantidade);
+char vogais(int num);
+int contaLetra(func *reparticao, char letra, int q_func);
+char *MaiorVogal (func **reparticoes, int q_Particoes);
+float MaiorSalario (func *funcionarios);
+float MenorSalario (func *funcionarios);
+float SomaSalarios (func *funcionarios);
+int HomensDeMenor (func *funcionarios);
+int MulheresDeMenor (func *funcionarios);
+int DeMenor (func *funcionarios, char sexo);
+int QuantFuncMaiorSalario(func *reparticao, float sal);

linguagem_c/trabalho_tp_ifes_2/resolucao/main.cpp

+#include "stdafx.h"
+#include "arquivo/arquivo.h"
+#include "funcoes/funcoes.h"
+#include "auxiliar/auxiliar.h"
+#include "aloca/aloca.h"
+#include "desaloca/desaloca.h"
+#include "VetorFunc/VetorFunc.h"
+#include "saidas/saidas.h"
+#include <stdlib.h>
+#include <string.h>
+
+int main(void)
+{
+	char resposta[2];
+	do
+	{
+		/* Gerando o nome de arquivo a ser aberto para leitura
+		   e do arquivo a ser criado ao fim de algoritmo */
+
+		char *nm_arq_entrada, *nm_arq_saida;
+		nm_arq_entrada = alocaVetChar(16);
+		nm_arq_saida = alocaVetChar(14);
+		printf ("\t\t\tTRABALHO 2 DE TECNICAS\n");
+		printf ("\t\t      Autores: Bruna e Francisco.\n");
+		GeraNomeArquivos(&nm_arq_entrada, &nm_arq_saida);
+
+		/* Abrindo arquivo de entrada para leitura */
+		FILE *arquivoEntrada;
+		AbreArquivoLeitura(&arquivoEntrada, nm_arq_entrada);
+
+
+		/* Fazendo a leitura de todas as partiзхes. */
+		func **cadastro;
+		int k, part, q_func;
+		fscanf(arquivoEntrada, "%d", &part);
+		cadastro = (func **)malloc(part * sizeof(func *));
+		for(k = 0; k < part; k++)
+		{
+			fscanf(arquivoEntrada, "%d", &q_func);
+			cadastro[k] = lerFuncionario(arquivoEntrada, q_func);
+		}
+
+		/* Abrindo o arquivo de saнda para escrita do resultado */
+		FILE *arquivoSaida;
+		AbreArquivoGravacao(&arquivoSaida, nm_arq_saida);
+
+		/* Gerando e escrevendo os dados do arquivo de saнda */	
+		float media;
+		GravaMaiorSalario(arquivoSaida, cadastro, part);
+		GravaMenorSalario(arquivoSaida, cadastro, part);
+		GravaMedia(arquivoSaida, cadastro, part, &media);
+		GravaVogal(arquivoSaida, cadastro, part);
+		GravaMulheresMenores(arquivoSaida, cadastro, part);
+		GravaQuantSalariosSuperiorMedia(arquivoSaida, cadastro, part, media);
+
+		/* Fechando os arquivos de entrada e saнda */
+		FechaArquivo(arquivoEntrada, nm_arq_entrada);
+		FechaArquivo(arquivoSaida, nm_arq_saida);
+		
+		/* Desalocando a matriz de funcionбrios, o nome do arquivo de entrada
+		   e o nome do arquivo de saнda */
+		cadastro = desalocaMatFunc(cadastro, part);
+		nm_arq_entrada = liberaVetChar(nm_arq_entrada);		
+		nm_arq_saida = liberaVetChar(nm_arq_saida);
+
+		printf("\n\n\nDeseja fechar (s/n)? ");
+		scanf("%s",resposta);
+		system("cls");
+	} while ((ParaMinusculo(resposta[0])) == 'n');
+	return 0;
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/registro.h

+struct funcionarios{
+	char nome[20];
+	float salario;
+	int idade;
+	char sexo[2];
+	int ultimo;
+};
+typedef struct funcionarios func;
+
+struct reparticao {
+	int q_func;
+	func *funcionarios;
+};
+
+typedef struct reparticao Rep;

linguagem_c/trabalho_tp_ifes_2/resolucao/saida_01.txt

+O maior salбrio: R$ 5000.00.
+O menor salбrio: R$ 263.00.
+A mйdia dos salбrios: R$ 1795.89.
+Nenhuma vogal apareceu em todos os nomes.
+Quantas funcionбrias tкm menos de 18 anos? 1.
+Quantos funcionбrios possuem salбrio superior а mйdia? 3.

linguagem_c/trabalho_tp_ifes_2/resolucao/saida_02.txt

+O maior salбrio: R$ 3050.00.
+O menor salбrio: R$ 200.00.
+A mйdia dos salбrios: R$ 1180.00.
+As vogais que mais apareceram: a e.
+Quantas funcionбrias tкm menos de 18 anos? 1.
+Quantos funcionбrios possuem salбrio superior а mйdia? 2.

linguagem_c/trabalho_tp_ifes_2/resolucao/saida_03.txt

+O maior salбrio: R$ 9452.00.
+O menor salбrio: R$ 287.00.
+A mйdia dos salбrios: R$ 3776.08.
+Nenhuma vogal apareceu em todos os nomes.
+Quantas funcionбrias tкm menos de 18 anos? 1.
+Quantos funcionбrios possuem salбrio superior а mйdia? 6.

linguagem_c/trabalho_tp_ifes_2/resolucao/saida_04.txt

+O maior salбrio: R$ 9169.00.
+O menor salбrio: R$ 8155.00.
+A mйdia dos salбrios: R$ 3702.62.
+A vogal que mais apareceu: "o".
+Quantas funcionбrias tкm menos de 18 anos? 1.
+Quantos funcionбrios possuem salбrio superior а mйdia? 11.

linguagem_c/trabalho_tp_ifes_2/resolucao/saidas/saidas.cpp

+#include "stdafx.h"
+#include <string.h>
+#include "../funcoes/funcoes.h"
+
+/*================================================================
+   Funзгo: GravaMaiorSalario
+   Calcula e grava no arquivo o maior salбrio.
+   Parвmetros: Ponteiro para o arquivo, a matriz de funcionбrios
+			   e a quantidade de partiзхes
+================================================================*/
+void GravaMaiorSalario(FILE *arq, func **Reparticoes, int q_Particoes)
+{
+	int f;
+	float maximo_salario = MaiorSalario(Reparticoes[0]);
+	float maiorTmp;
+
+	for (f = 1;f < q_Particoes; f++)
+	{
+		maiorTmp = MaiorSalario(Reparticoes[f]);
+		if (maximo_salario < maiorTmp)
+			maximo_salario = maiorTmp;
+	}
+	fprintf(arq, "O maior salбrio: R$ %.2f.\n", maximo_salario);
+}
+
+/*================================================================
+   Funзгo: GravaMenorSalario
+   Calcula e grava no arquivo o menor salбrio.
+   Parвmetros: Ponteiro para o arquivo, a matriz de funcionбrios
+			   e a quantidade de partiзхes
+================================================================*/
+void GravaMenorSalario(FILE *arq, func **Reparticoes, int q_Particoes)
+{
+	int f;
+	float minimo_salario = MenorSalario(Reparticoes[0]);
+	float menorTmp;
+
+	for (f = 1;f < q_Particoes; f++)
+	{
+		menorTmp = MenorSalario(Reparticoes[f]);
+		if (minimo_salario < menorTmp)
+			minimo_salario = menorTmp;
+	}
+	fprintf(arq, "O menor salбrio: R$ %.2f.\n", minimo_salario);
+}
+
+/*================================================================
+   Funзгo: GravaMedia
+   Calcula e grava no arquivo a mйdia dos salбrios.
+   Parвmetros: Ponteiro para o arquivo, a matriz de funcionбrios
+			   e a quantidade de partiзхes
+================================================================*/
+void GravaMedia(FILE *arq, func **Reparticoes, int q_Particoes, float *media)
+{
+	int b, quant = 0;
+	float soma = 0;
+	for (b = 0; b < q_Particoes; b++)
+	{
+		soma += SomaSalarios(Reparticoes[b]);
+		quant += ContaFuncionarios(Reparticoes[b]);
+	}
+	*media = soma/quant;
+	fprintf(arq,"A mйdia dos salбrios: R$ %.2f.\n",*media);
+}
+
+/*========================================================================
+   Funзгo: GravaVogal
+   Calcula e grava no arquivo a(s) vogal(is) que mais apareceu em todas as
+   partiзхes.
+   Parвmetros: Ponteiro para o arquivo, a matriz de funcionбrios
+			   e a quantidade de partiзхes
+========================================================================*/
+void GravaVogal(FILE *arq, func **Reparticoes, int q_Particoes)
+{
+	char *vogal = MaiorVogal(Reparticoes, q_Particoes);
+	int a;
+	int tam = 0;
+	if (vogal)
+		tam = strlen(vogal);
+	if (!tam)
+	{
+		fprintf(arq,"Nenhuma vogal apareceu em todos os nomes.\n");
+	}
+	else if (tam == 1)
+	{
+		fprintf(arq,"A vogal que mais apareceu: \"%s\".\n",vogal);
+	}
+	else
+	{
+		fprintf(arq,"As vogais que mais apareceram:");
+		for (a = 0; a < tam; a++)
+			fprintf(arq," \"%c\"",vogal[a]);
+		fprintf(arq,".\n");
+	}
+}
+
+/*========================================================================
+   Funзгo: GravaMulheresMenores
+   Calcula e grava no arquivo a quantidade de mulheres menores de idade.
+   Parвmetros: Ponteiro para o arquivo, a matriz de funcionбrios
+			   e a quantidade de partiзхes
+========================================================================*/
+void GravaMulheresMenores(FILE *arq, func **Reparticoes, int q_Particoes)
+{
+	int x, mulheresMenores = 0;
+	for (x = 0;x < q_Particoes;x++)
+		mulheresMenores += DeMenor(Reparticoes[x], 'F');
+	fprintf(arq,"Quantas funcionбrias tкm menos de 18 anos? %d.\n",mulheresMenores);
+}
+
+/*========================================================================
+   Funзгo: GravaQuantSalariosSuperiorMedia
+   Calcula e grava no arquivo quantos funcionбrios tкm o salбrio superior а mйdia.
+   Parвmetros: Ponteiro para o arquivo, a matriz de funcionбrios
+			   e a quantidade de partiзхes
+========================================================================*/
+void GravaQuantSalariosSuperiorMedia(FILE *arq, func **Reparticoes, int q_Particoes, float media)
+{
+	int y, quantSalMaiorMedia = 0;
+	for (y = 0; y < q_Particoes; y++)
+		quantSalMaiorMedia += QuantFuncMaiorSalario(Reparticoes[y], media);
+	fprintf(arq,"Quantos funcionбrios possuem salбrio superior а mйdia? %d.",quantSalMaiorMedia);
+}

linguagem_c/trabalho_tp_ifes_2/resolucao/saidas/saidas.h

+/*====================================================================================
+Biblioteca saidas.h
+	Grava as saнdas no arquivo de saнda de acordo com as especificaзхes do trabalho.
+====================================================================================*/
+
+void GravaMaiorSalario(FILE *arq, func **Reparticoes, int q_Particoes);
+void GravaMenorSalario(FILE *arq, func **Reparticoes, int q_Particoes);
+void GravaMedia(FILE *arq, func **Reparticoes, int q_Particoes, float *media);
+void GravaVogal(FILE *arq, func **Reparticoes, int q_Particoes);
+void GravaMulheresMenores(FILE *arq, func **Reparticoes, int q_Particoes);
+void GravaQuantSalariosSuperiorMedia(FILE *arq, func **Reparticoes, int q_Particoes, float media); 

linguagem_c/trabalho_tp_ifes_2/resolucao/stdafx.cpp

+// stdafx.cpp : source file that includes just the standard includes
+// Trabalho2_num1.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file

linguagem_c/trabalho_tp_ifes_2/resolucao/stdafx.h

+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+#include <stdio.h>
+#include <tchar.h>
+
+
+
+// TODO: reference additional headers your program requires here

linguagem_c/trabalho_tp_ifes_2/resolucao/structs.h

+/*==========================================================================
+Header structs.h
+	Possui todas as structs utilizadas.
+==========================================================================*/
+
+struct funcionarios{
+	char nome[20];
+	float salario;
+	int idade;
+	char sexo[2];
+	int ultimo;
+};
+typedef struct funcionarios func;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.