Andrah
Membro Pleno-
Posts
34 -
Cadastrado em
-
Última visita
Reputação
19-
Sim vocês não tenho dúvidas já eu tá difícil sou iniciante
-
O mais interessante seria fazer uma competição para ver quem tem a razão! kkkk Então quem conseguir fazer o programa como o enunciado pede ( com todos os cases) ganha! O que acham kkkkk Assim todos SAIRIAM FELIZES principalmente EU
-
Obrigado, vou tentar fazer de outro jeito amanhã e vou postar aqui se tiver alguma coisa errada me avisa por favor
-
-
ta bom vou corrigir obrigado ta me ajudando muito
-
Certo! Obrigado, para que o usuário possa utilizar o arquivo de pois sem precisar escrever tudo de novo Por conta própria é para deixar mais "bonito" kkkk Sim poderia fazer assim mas só que o nosso professor não nos encimou e ele não aceita assim porque tem que parecer os dados no arquivo não em binário tinha feito assim /bibliotecas #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> #include <conio.h> #include <time.h> //Dados do funcionário struct Funcionario { char nome[20]; char NIF[20]; char categoria; float salario; int diasTrabalhados; //Codigo que verifica se o funcionário está ativo no sistema int ativo; }; void pressioneEnter() { char c; do { c = getch(); } while (c != 13); } //Funções a - z struct Funcionario *criarFuncionario(); void cadastrarFuncionario(struct Funcionario *funcionario, FILE *file) { printf("\n-------Cadastro de funcionário--------\n"); printf("\nInforme o nome do funcionário: "); scanf(" %s", funcionario->nome); printf("\nInforme o NIF do funcionário: "); scanf(" %i", funcionario->NIF); printf("\nInforme o salario do funcionario: "); scanf("%f", &funcionario->salario); printf("\nInforme os dias trabalhados pelo funcionário: "); scanf("%d", &funcionario->diasTrabalhados); printf("\nInforme a categoria do funcionário: "); scanf(" %c", &funcionario->categoria); //Ativo no sistema funcionario->ativo = 1; printf("\nFuncionário inserido com sucesso!"); fwrite(funcionario, 1, sizeof(struct Funcionario), file); } float contarGastos(struct Funcionario *funcionario, FILE *file) { float custo = 0; while (fread(funcionario, 1, sizeof(struct Funcionario), file)) { custo += funcionario->salario; } return custo; } struct Funcionario *criarFuncionario() { return (struct Funcionario *)malloc(sizeof(struct Funcionario)); } void deletarFuncionario(struct Funcionario *funcionario, FILE *file, char *nif) { rewind(file); while (fread(funcionario, 1, sizeof(struct Funcionario), file)) { if (strcmp(funcionario->NIF, nif) == 0 && funcionario->ativo == 1) { break; } } fseek(file, -sizeof(struct Funcionario), SEEK_CUR); funcionario->ativo = 0; fwrite(funcionario, 1, sizeof(struct Funcionario), file); printf("\nFuncionario excluido com sucesso!"); } void listarFuncionarios(struct Funcionario *funcionario, FILE *file) { printf("\n------- Listando funcionários ------\n"); while (fread(funcionario, 1, sizeof(struct Funcionario), file)) { if (funcionario->ativo == 1) { printf("\nNIF: %s", funcionario->NIF); printf("\nNome: %s", funcionario->nome); printf("\nCategoria: %c", funcionario->categoria); printf("\nSalario: (sua moeda)%.2f", funcionario->salario); printf("\nDias trabalhados por semana: %d", funcionario->diasTrabalhados); printf("\n----------------------------------------------------------\n"); } } } void listarFuncionariosCategoria(struct Funcionario *funcionario, FILE *file) { char categoria; printf("\nInforme a categoria desejada: "); scanf(" %c", &categoria); while (fread(funcionario, 1, sizeof(struct Funcionario), file)) { if (funcionario->categoria == categoria && funcionario->ativo == 1) { printf("\nNIF: %s", funcionario->NIF); printf("\nNome: %s", funcionario->nome); printf("\nCategoria: %c", funcionario->categoria); printf("\nSalario: (sua moeda)%.2f", funcionario->salario); printf("\nDias trabalhados por semana: %d", funcionario->diasTrabalhados); printf("\n----------------------------------------------------------\n"); } } } void menu(struct Funcionario *funcionario) { FILE *file; int op; char nif[20]; do { system("COLOR 0F"); //Menu printf("\n\n\n\t\t\t\t---> SISTEMA DE REGISTO E CONTROLE DE FUNCIONARIO \n\n"); printf("\n\t\t* 1 ------- INSERIR OS FUNCIONARIOS E ENVIA-LOS PARA O FICHEIRO ------------------------ *\n"); printf("\n\t\t* 2 ------- IMPRIMIR A LISTA DOS FUNCIONARIOS DO FICHEIRO ------------------------------ *\n"); printf("\n\t\t* 3 ------- IMPRIMIR OS FUNCIONARIOS POR CATEGORIA ------------------------------------- *\n"); printf("\n\t\t* 4 ------- GASTO DA UNIVERSIDADE COM OS FUNCIONARIOS ---------------------------------- *\n"); printf("\n\t\t* 5 ------- CALCULAR O SALARIO DE UM FUNCIONARIO X EM FUNCAO DO SEU SALARIO POR HORA --- *\n"); printf("\n\t\t* 6 ------- ORDENAR FUNCIONARIO NA ORDEM CRESCENTE ------------------------------------- *\n"); printf("\n\t\t* 7 ------- IMPRIMIR OS FUNCIONARIOS COM SALARIO MAIOR QUE 75000$ ---------------------- *\n"); printf("\n\t\t* 8 ------- ELIMINAR UM FUNCIONARIO A PARTIR DO N DO NIF ------------------------------- *\n"); printf("\n\t\t* 0 ------- Sair\n\n\n"); printf("\n\tEscolha uma opcao: "); scanf("%d",&op); printf("\n"); switch (op) { case 0: printf("\nSaindo...\n"); break; case 1: file = fopen("funcionarios.txt", "ab"); cadastrarFuncionario(funcionario, file); fclose(file); break; case 2: file = fopen("funcionarios.txt", "rb"); listarFuncionarios(funcionario, file); break; case 3: file = fopen("funcionarios.txt", "rb"); listarFuncionariosCategoria(funcionario, file); break; case 4: file = fopen("funcionarios.txt", "rb"); printf("\nO total gasto com salarios eh: (sua moeda)%.2f\n", contarGastos(funcionario, file)); break; case 8: file = fopen("funcionarios.txt", "rb+"); printf("\nInforme o NIF do funcionario a ser deletado: "); scanf(" %s", nif); deletarFuncionario(funcionario, file, nif); fclose(file); break; default: system("COLOR C0"); printf("\n\t\t\t\t*-*-*-*-- ERRO --> Numero INVALIDO!\n\n"); printf ("\n\tPressione ENTER para Tentar Novamente->"); fflush(stdin); pressioneEnter(); system("cls"); } } while (op != 0); } //Main int main() { setlocale(LC_ALL, "Portuguese"); system("COLOR F0"); //Abertura do programa printf("\n\n\n\n\n\t\t\t....................................................................\n"); printf("\n\t\t\t\t----> SISTEMA DE REGISTO E CONTROLE DE FUNCIONARIO \n"); printf("\n\t\t\t.....................................................................\n\n\n\n"); printf ("\n\tPressione ENTER para iniciar->"); fflush(stdin); pressioneEnter(); system("cls"); struct Funcionario *funcionario; funcionario = criarFuncionario(); menu(funcionario); }
-
Algo objetivo não sei dizer mas vou tentar resolver os outros e postar aqui se ta algo errado me corrija pode ser? Acho sim Obrigado mesmo Ta bom Obrigado na mesma!
-
/* 1. Escreva uma função, que insira dados de N funcionários da Universidade Cabo Verde e envia-los para ficheiro como o nome funcionarios.txt (o programa deverá informar quantos funcionários deseja inserir no sistema?); 2. Escreva uma função, que imprima registos de todos os funcionários que se encontra no ficheiro com o nome funcionarios.txt, inserido anteriormente? 3. Escreva uma função, que imprima os funcionários por categoria. 4. Escreva uma função, que permite calcular quanto gasta a universidade com os funcionários por categoria? 5. Temos três tipos de categorias dos funcionários [Docente, Diretor e Técnico], sabendo que o funcionário que é Docente recebe 2500$ por cada hora, um Diretor recebe 3500$ por hora, e um Técnico recebe 1500$ por hora. Escreva uma função, que mostra o salário de um determinado funcionário dependendo do seu salário liquido por hora, sabendo que INPS é de 12%, IUR é de 20% e sindicato é de 1%; 6. Escreva uma função, que ordena os funcionários na ordem crescentes e envia-los para o ficheiro com o nome ordenar_funcionarios.txt; 7. Escreva uma função, que imprima todos os funcionários com salario maior que 75000$. 8. Escreva uma função, que dado nº de NIF permite eliminar todas as informações desse funcionário. */ O objectivo é fazer o programa que é capaz de fazer isso *_*
-
Sim precisa é que as funções não estão certas acho e ainda falta fazer algumas funções para colocar nos cases O programa tá igual não estou conseguindo resolver //bibliotecas #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> #include <conio.h> #include <time.h> //Dados do funcionário struct Funcionario { char nome[20]; char NIF[20]; char categoria[20]; float salario; int Hora_Trabalhados; }; // Para não atrapalhar o bom funcionamento void menu ( struct Funcionario funcionario[], int n ); void pressioneEnter() { char c; do { c = getch(); } while ( c != 13 ); } void flush() { int c; /*Lê todos os caracteres até encontrar '\n' ou EOF:*/ while( (c = getchar()) != '\n' && c != EOF ); } void IncerirFuncionario ( struct Funcionario funcionario[], int n ) { system ( "COLOR 0F" ); FILE *file; // cria variável ponteiro para o arquivo file = fopen ( "funcionarios.txt", "w" ); //abrindo o arquivo if ( file == NULL ) //testando se o arquivo foi realmente criado printf ( "\n-->Nao foi possivel abrir o fecheiro\n\n" ); else { printf ( "\n\n\n\n\tUNICV \n\n" ); printf ( "\n\n\n\t\tDigite o numero de Funcionarios que pretende registrar: " ); scanf ( " %i", &n ); flush (); system ( "cls" ); static int i = 0; int y = n + i; if ( y > 99 ) menu ( funcionario, n ); printf ( "\n\n\n\t\t-------- INSCRIÇÃO DE FUNCIONÁRIO --------\n\n" ); fprintf ( file, "\n\n\t----- LISTA DOS FUNCIONÁRIOS ----\n\n" ); fprintf ( file, "\tNome NIF Salário Categoria Horas\n\n" ); for ( ; i < y; i++ ) { system ( "COLOR 0B" ); // para obter dados e armazenar no arquivo printf ( "\n\tDigite o nome do funcionário: " ); scanf ( " %s", funcionario[i].nome ); flush (); printf ( "\n\tDigite o NIF do funcionário: " ); scanf ( " %s",funcionario[i].NIF ); printf ( "\n\tDigite o salario do funcionario: " ); scanf ( " %f", &funcionario[i].salario ); flush (); printf ( "\n\tDigite a categoria do funcionário: " ); scanf ( " %s", funcionario[i].categoria ); printf ( "\n\tDigite a Hora trabalhados pelo funcionário: " ); scanf ( " %d", &funcionario[i].Hora_Trabalhados ); printf ( "\n\n" ); //A Escrevendo no arquivo fprintf ( file, "\t%s \t %s \t %.1f \t %s\t %d\n", funcionario[i].nome, funcionario[i].NIF, funcionario[i].salario, funcionario[i].categoria, funcionario[i].Hora_Trabalhados ); } printf ( "\n\t\t-------------------------<3--------------------------\n" ); printf ( "\n\t Incritos com sucesso! \n\n\t Registado no fecheiro -> funcionarios.txt\n\n" ); printf ( "\n\n\n\t\t\tPressione ENTER para Continuar->" ); flush (); pressioneEnter(); system ( "cls" ); menu ( funcionario, y ); } fclose ( file ); // para fechar o arquivo } void ImprimirFuncionarios ( struct Funcionario funcionario[], int n ) { FILE *file; file = fopen ( "C:\\Users\\alex\\Desktop\\ajuda\\funcionarios.txt", "r" ); if ( file == NULL ) printf ( "\n-->Nao foi possivel abrir o fecheiro\n\n" ); else { int i; printf ( "\n\n\n\t\t------- LISTA DOS FUNCIONÁRIOS ------\n\n" ); for ( i = 0; i < n; i++ ) { system ( "COLOR 0F" ); fscanf ( file, " %s", funcionario[i].nome ); fscanf ( file, " %s", funcionario[i].NIF ); fscanf ( file, " %f", &funcionario[i].salario ); fscanf ( file, " %s", funcionario[i].categoria ); fscanf ( file, " %d horas", &funcionario[i].Hora_Trabalhados ); printf ( "\n\tNome: %s", funcionario[i].nome ); printf ( "\n\tNIF: %s", funcionario[i].NIF ); printf ( "\n\tSalario: %.1f $00", funcionario[i].salario ); printf ( "\n\tCategoria: %s", funcionario[i].categoria ); printf ( "\n\tHoras de trabalho: %d horas", funcionario[i].Hora_Trabalhados ); printf ( "\n\n----------------------------------------------------------\n" ); } } printf ( "\n\n\n\t\t\tPressione ENTER para Continuar->" ); flush (); pressioneEnter(); system ( "cls" ); fclose ( file ); } void OrdenarFuncionario ( struct Funcionario *funcionario, int n ) { int i, j; struct Funcionario aux; for ( i = 1; i < n; i++ ) { aux = funcionario[i] ; for ( j = i; ( j > 0 ) && ( aux.salario < funcionario[j - 1].salario ); j-- ) { funcionario[j] = funcionario[j - 1]; funcionario[j] = aux; } } printf ( "\n\n\n\t------- LISTA DOS FUNCIONÁRIOS POR ORDEM CRESCENTE ------\n\n" ); for ( i = 0; i < n; i++ ) { printf ( "\n\tNome: %s", funcionario[i].nome ); printf ( "\n\tNIF: %s", funcionario[i].NIF ); printf ( "\n\tSalario: %.1f $00", funcionario[i].salario ); printf ( "\n\tCategoria: %s", funcionario[i].categoria ); printf ( "\n\tHoras de trabalho: %d horas", funcionario[i].Hora_Trabalhados ); printf ( "\n\n----------------------------------------------------------\n" ); } printf ( "\n\n\n\t\t\tPressione ENTER para Continuar->" ); flush (); pressioneEnter(); system ( "cls" ); } void EliminarFuncionario ( struct Funcionario funcionario[], int n ) { FILE *file; //Abre o arquivo novamente para leitura file = fopen ( "funcionarios.txt", "r+" ); if ( file == NULL ) printf ( "\n-->Nao foi possivel abrir o fecheiro\n\n" ); else { int i; char nif; char resp; printf ( "\n\tInforme o NIF do funcionario a ser Eliminado: " ); scanf ( " %d", &nif ); while ( funcionario[i].NIF == nif ) { if ( funcionario[i].ativo== 1 ) { printf ( "\n\tNome: %s", funcionario[i].nome ); printf ( "\n\tNIF: %s", funcionario[i].NIF ); printf ( "\n\tSalario: %.1f $00", funcionario[i].salario ); printf ( "\n\tCategoria: %s", funcionario[i].categoria ); printf ( "\n\tHoras de trabalho: %d horas", funcionario[i].Hora_Trabalhados ); printf ( "\n\n----------------------------------------------------------\n" ); } printf ( "\n\tDeseja realmente eliminar o Funcionário? S/N:" ); scanf ( " %c", &resp ); if ( ( resp == 'S' ) || ( resp == 's' ) ) { funcionario[i].ativo=0; printf ( "\n\tFuncionário eliminado com sucesso\n" ); break; } else { if ( ( resp == 'N' ) || ( resp == 'n' ) ) { printf ( "\tEliminação cancelada!\n" ); break; } } } i++; if ( i > 99 ) printf ( "\n\n\t\tNIF não encontrado\n" ); } fclose ( file ); printf ( "\n\n\n\t\t\tPressione ENTER para Continuar->" ); flush (); pressioneEnter(); system ( "cls" ); } void menu ( struct Funcionario funcionario[], int n ) { int op; do { system ( "COLOR 0F" ); //Menu printf ( "\n\n\t\t\t\t---> SISTEMA DE REGISTO E CONTROLE DE FUNCIONÁRIO \n\n" ); printf ( "\n\t\t* 1 ------- INSERIR OS FUNCIONÁRIOS E ENVIA-LOS PARA O FICHEIRO ------------------------ *\n" ); printf ( "\n\t\t* 2 ------- IMPRIMIR A LISTA DOS FUNCIONÁRIOS DO FICHEIRO ------------------------------ *\n" ); printf ( "\n\t\t* 3 ------- IMPRIMIR OS FUNCIONÁRIOS POR CATEGORIA ------------------------------------- *\n" ); printf ( "\n\t\t* 4 ------- GASTO DA UNIVERSIDADE COM OS FUNCIONÁRIOS ---------------------------------- *\n" ); printf ( "\n\t\t* 5 ------- CALCULAR O SALÁRIO DE UM FUNCIONÁRIO X EM FUNÇÃO DO SEU SALÁRIO POR HORA --- *\n" ); printf ( "\n\t\t* 6 ------- ORDENAR FUNCIONÁRIO NA ORDEM CRESCENTE ------------------------------------- *\n" ); printf ( "\n\t\t* 7 ------- IMPRIMIR OS FUNCIONÁRIOS COM SALÁRIO MAIOR QUE 75000$ ---------------------- *\n" ); printf ( "\n\t\t* 8 ------- ELIMINAR UM FUNCIONÁRIO A PARTIR DO Nº DO NIF ------------------------------ *\n" ); printf ( "\n\t\t* 0 ------- Sair\n\n" ); printf ( "\n\tEscolha uma opcao: " ); scanf ( " %d", &op ); printf ( "\n" ); switch ( op ) { case 0: printf ( "\t\t\t\t\t\t\t\t\t\t-> Saindo... \n" ); printf ( "\tPressione ENTER para Sair->" ); flush (); pressioneEnter(); system ( "cls" ); break; case 1: system ( "cls" ); IncerirFuncionario ( funcionario, n ); break; case 2: system ( "cls" ); ImprimirFuncionarios ( funcionario, n ); break; case 6: system ( "cls" ); OrdenarFuncionario ( funcionario, n ); break; case 8: system ( "cls" ); EliminarFuncionario ( funcionario, n ); break; default: system ( "COLOR C0" ); printf ( "\n\t\t\t\t*-*-*-*-- ERRO --> Numero INVALIDO!\n\n" ); printf ( "\n\tPressione ENTER para Tentar Novamente->" ); flush (); pressioneEnter(); system ( "cls" ); } } while ( op != 0 ); } int main() { setlocale ( LC_ALL, "Portuguese" ); struct Funcionario funcionario[100]; int n; struct Funcionario* p = ( struct Funcionario * ) malloc ( sizeof ( struct Funcionario ) ); if ( p == NULL ) { printf ( "\n\t ERRO MEMÓRIA INSUFICIENTE!\n" ); exit ( 1 ); //Terminar o programa } system ( "COLOR F0" ); //Abertura do programa printf ( "\n\n\n\n\n\t\t\t....................................................................\n" ); printf ( "\n\t\t\t\t----> SISTEMA DE REGISTO E CONTROLE DE FUNCIONÁRIO \n" ); printf ( "\n\t\t\t.....................................................................\n\n\n\n\n" ); printf ( "\n\t\t\t UNICV \n\n" ); printf ( "\n\tPressione ENTER 2 vezes para iniciar->" ); flush (); pressioneEnter(); system ( "cls" ); menu ( funcionario, n ); free ( p ); return 0; Me interessou sim tinha algumas dúvidas no flush (); Obrigado
-
Não porque sou iniciante em programação algumas coisas não entendi mas aprendi muito. Obrigado. adicionado 3 minutos depois kkkk verdade isso! Obrigado vou colocar no programa
-
E o meu programa ninguém vai me ajudar?
-
sim deveria calcular antes mesmo o struct Funcionario* p = ( struct Funcionario * ) malloc ( sizeof ( struct Funcionario ) ); coloquei porque o programa pede para usar memoria dinâmica , mas acho que fica melhor se eu utilizar o colloc(); em quanto faço as funções e pedir memoria para o computador ao longo da execução do programa O y é o valor de n+1 onde n é o valor total de funcionários que o usuário digitou fiz assim para poder ter quantos funcionários o usuário deseja (<99).
-
Em terminar o programa em fazer as funções para colocar nos case até agora só incerir dados e imprimir que eu acho que ta certo
-
Alguém ai vai me ajudar com as outras funções? *_* Tô aprendendo muito com vocês
-
Né kkkkk adicionado 11 minutos depois @vangodp me ajuda ai com as outras funções *_*
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