Ir ao conteúdo
  • Cadastre-se

Andrah

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

Reputação

19
  1. Sim vocês não tenho dúvidas já eu tá difícil sou iniciante
  2. 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
  3. Obrigado, vou tentar fazer de outro jeito amanhã e vou postar aqui se tiver alguma coisa errada me avisa por favor
  4. sim obrigado mas tem um probleminha não ta saindo daqui
  5. ta bom vou corrigir obrigado ta me ajudando muito
  6. 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); }
  7. 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!
  8. /* 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 *_*
  9. 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
  10. 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
  11. E o meu programa ninguém vai me ajudar?
  12. 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).
  13. 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
  14. Alguém ai vai me ajudar com as outras funções? *_* Tô aprendendo muito com vocês
  15. 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

×
×
  • Criar novo...