Ir ao conteúdo

isrnick

Membro Pleno
  • Posts

    1.558
  • Cadastrado em

  • Última visita

Tudo que isrnick postou

  1. Fui arrumando os erros conforme as mensagens de erro apareciam e agora está compilando: https://onlinegdb.com/H1uMvux9L Mas não chequei nada da lógica e do funcionamento do programa. As mudanças que fiz basicamente foram: - A class lista_itens_vendas estava no fim do header, mas as classes declaradas antes dela já usam essa classe, então tive que move-la para cima para ser declarada antes de ser usada. - No main eu mudei b.novaVenda(cV,b,d); para b.novaVenda(cV,&a,&d); (Não verifiquei como isso altera a lógica, mas a é a única lista_produto declarada no main .) - Nas chamadas de métodos dos objetos eu troquei alguns . por -> quando o objeto é passado por ponteiro.
  2. http://www.cplusplus.com/doc/tutorial/introduction/devcpp/
  3. Link já com o código: http://cpp.sh/53ptd Basta rodar. adicionado 24 minutos depois @Izaac Baptista O erro aconteceu por que seu compilador está configurado para usar a antiga versão C++98 da linguagem C++. (No site cpp.sh dá esse erro quando escolhe essa versão.) Mude para a versão C++11 ou mais recente (C++14, C++17, C++20). No console/terminal a flag de compilação do compilador GCC/Mingw é -std=c++11 colocando o número da versão que quer usar.
  4. https://www.onlinegdb.com/online_c++_compiler Para testar c++ esse é o link.
  5. @herbertbahia Se é para abreviar basta remover as chaves { }: for (auto c : texto) if(vogais.find(c) != string::npos) contador++;
  6. #include <iostream> #include <string> using namespace std; int main() { string vogais = "aeiouAEIOU"; string texto = "Ola Mundo"; int contador = 0; for (auto c : texto){ //Para cada caractere c na string texto faça: if(vogais.find(c) != string::npos){ //Se encontrou o caractere na lista de vogais: contador++; //Incrementa contador de vogais } } cout <<"'" << texto << "' tem " << contador << " vogais." << endl; return 0; }
  7. #include <stdio.h> int KaprekarRoutine3digits(int n){ int count, i, digit[3], temp, biggest, smallest; temp = n; for (count = 1; n != 495 && n != 0; count++){ //zera os digitos digit[0] = 0; digit[1] = 0; digit[2] = 0; //separa os digitos do numero for (i=0; n > 0; i++){ if(i >= 3) { printf("Erro: O numero %d tem mais de 3 digitos.\n", temp); return -1; } digit[i] = n % 10; n /= 10; } //ordena os digitos em ordem crescente for (i=0; i<2; i++){ if (digit[i] > digit[i+1]){ temp = digit[i]; digit[i] = digit[i+1]; digit[i+1] = temp; } } if (digit[0] > digit[1]){ temp = digit[0]; digit[0] = digit[1]; digit[1] = temp; } //maior e menor numero com os digitos biggest = digit[2]*100 + digit[1]*10 + digit[0]; smallest = digit[0]*100 + digit[1]*10 + digit[2]; n = biggest - smallest; } if (n == 495) return count; return 0; } int main() { int a, iteracoes; FILE *f = fopen("saidakaprekar.txt", "w"); for (a=1; a<1000; a++){ iteracoes = KaprekarRoutine3digits(a); if (iteracoes > 0){ fprintf(f, "%03d -> %d iteracoes\n", a, iteracoes); } else if (iteracoes == 0){ fprintf(f, "%03d -> TODOS OS DIGITOS SAO IGUAIS\n", a); } } fclose(f); return 0; }
  8. O fórum está aqui para ajudar os usuários a aprender, e resolver exercícios para outras pessoas é contra as regras do fórum. Somente tiramos dúvidas ou fazemos correções e melhorias em um código que o usuário postar. Então poste sua tentativa para que possamos te ajudar. Obs: Um código sem nada relacionado ao enunciado do exercício não conta como uma tentativa de resolver este exercício. adicionado 20 minutos depois @Izaac Baptista O menor e o maior peso podem ser obtidos no próprio loop da leitura dos dados: for(i=0;i<TAM;i++) { cout<<"\n Informe o "<<i+1<<"ª peso: "; cin>>pesos[i]; if (i == 0){ //inicialmente tanto menor e maior pesos sao iguais ao primeiro peso digitado menor_peso = pesos[i]; maior_peso = pesos[i]; } if (pesos[i] < menor_peso){ menor_peso = pesos[i]; } if (pesos[i] > maior_peso){ maior_peso = pesos[i]; } acumula_pesos = acumula_pesos+pesos[i]; } Esses 2 fors: for(i=0;i<TAM;i++) { if(pesos[i]<media) menos_pesados++; } for(i=0;i<TAM;i++) { if(pesos[i]>media) mais_pesados++; } Podem ser combinados em 1: for(i=0;i<TAM;i++) { if(pesos[i]<media) menos_pesados++; if(pesos[i]>media) mais_pesados++; }
  9. O fórum está aqui para ajudar os usuários a aprender, e resolver exercícios para outras pessoas é contra as regras do fórum. Somente tiramos dúvidas ou fazemos correções e melhorias em um código que o usuário postar. Então poste sua tentativa para que possamos te ajudar. Obs: Um código sem nada relacionado ao enunciado do exercício não conta como uma tentativa de resolver este exercício.
  10. Tem vários sites de exercícios de programação online onde você resolve exercícios e depois pode ver e discutir soluções de outros usuários. Alguns em inglês para C++: - codewars - codingame.com - codechef - exercism.io Em português só conheço este: - URI Online Judge Se pesquisar vai achar outros.
  11. No seu código, quando você tenta usar fseek o arquivo f não está mais aberto, pois já usou fclose para fechar o arquivo antes disto.
  12. Código postado pelo @wellingtonv1n1 foi copiado desse post: E o motivo porque o código não funciona é que o fórum sumiu com os [ i ] do código original, que tinha depois de cada str na função, isso aconteceu pois o felipepotato não usou o botão < > para postar o código, e para o fórum [ i ] sem espaços é a tag para deixar o texto em itálico (note que metade do texto do post do felipepotato ficou em itálico). E você copiou o código que já estava incompleto. Não é difícil de detectar onde esta o problema no código se tentar entender ele. Se vai copiar a solução pronta, pelo menos estude e entenda o que o código copiado está fazendo, assim pelo menos você aprende algo.
  13. Agora isto: static int i = 0; int y = n + i; if ( y > 99 ) menu ( funcionario, n ); E isto: menu(funcionario, y); Dentro da função InserirFuncionario são aberrações que não deveriam existir. Isso está criando recursividade desnecessária e descontrolada, e pior ainda, em ambos os casos chama a função menu sem fechar o arquivo que foi aberto com fopen, aí de dentro do menu pode chamar novamente a função InserirFuncionario, que vai tentar abrir com fopen novamente o arquivo que já está aberto! Mude a lógica para retornar o valor de n seja como retorno da função (muda o tipo da função de void para int), ou então muda a variável n para um ponteiro para que alterações dentro da função também mudem o valor fora dela, ou então faz pedir pra digitar o número de funcionários a serem inseridos fora da InserirFuncionario, na própria menu(), e a InserirFuncionario apenas retornar se teve sucesso ou se falhou (e soma ao total se teve sucesso), em fim tem muitos métodos melhores.
  14. Entendi. Bom, dá pra fazer com fprintf e fscanf. Não entendi porque o usuário precisaria escrever algo mais de uma vez se não estiver formatado bonitinho. De qualquer maneira se pretende manter assim então tem que corrigir a função ImprimirFuncionarios, pois do modo que está agora ele vai tentar dar fscanf nas 2 linhas com títulos como se fossem dados dos funcionários, e bagunçar toda a leitura, então tem que fazer fscanf ou fgets específico para ler essas 2 linhas que não contém dados.
  15. Neste tipo de programa eu considero que pode haver dois tipos de arquivos onde devem ser escritos dados/informações: Um tipo seria o tipo "relatório" que contém algo para ser lido por um humano, logo deve estar formatado e organizado de forma a facilitar o entendimento pela pessoa que vai ler. O outro tipo seria o tipo "banco de dados" que só será lido pelo programa, logo não há necessidade de formatação pois nenhuma pessoa deve ler este tipo de arquivo diretamente, o que importa para este tipo de arquivo é facilitar que o programa armazene e recupere os dados do arquivo, logo quão mais simples e direto for melhor, e não há necessidade de "embelezar". Digo isso porque tenho perguntas sobre esse enunciado e como você implementou... Veja: Digamos que use o programa 1 vez e cadastre alguns funcionários, se o programa for finalizado quando ele for aberto novamente os funcionários cadastrados anteriormente persistem, ou deve recomeçar a cadastrar do zero toda vez? Acredito que deva recuperar os dados salvos ao abrir o programa, certo? Então isso me diz que o arquivo funcionarios.txt deveria fazer o papel de "banco de dados" e armazenar a lista de funcionários da forma que for mais fácil de acessar e recuperar os dados. Na função IncerirFuncionario (obs: inserir se escreve com s não com c ) por que você está formatando o texto dentro do arquivo funcionarios.txt? fprintf ( file, "\n\n\t----- LISTA DOS FUNCIONÁRIOS ----\n\n" ); fprintf ( file, "\tNome NIF Salário Categoria Horas\n\n" ); E 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 ); Ou seja, para que está incluindo os títulos e as tabulações para deixar "bonito" dentro do arquivo? Isso é requisito ou você adicionou por conta própria? Por que se não for requisito isso só vai complicar para recuperar os dados do arquivo para a memória com o fscanf, pois note que primeiro vai ter que ignorar as 2 primeiras linhas, que contém os títulos, para depois começar a ler os dados separados por tabulação. Claro, não é muito difícil fazer isso, mas a questão é se existe a necessidade quando pode fazer algo mais simples que tornaria fazer o código mais fácil e daria mais opções. Por exemplo, poderia separar cada dado do funcionário 1 cada linha (ou seja um '\n' separa cada dado do funcionário), permitindo usar fgets para ler as strings. (Ou até usar o meu método favorito que é, ao invés de fprintf() e fscanf(), usar fwrite() e fread() para escrever e ler do arquivo a struct inteira contendo todos os dados do funcionário de uma vez.) O modo que eu faria esse código (se for usar o método com fprintf e fscanf) a primeira linha do arquivo funcionarios.txt teria a quantidade total de funcionários já armazenadas no arquivo, seguido imediatamente pelos dados de cada funcionário, para facilitar a fazer a função que recupera os dados para a memória na próxima execução do programa. Obs: De acordo com a minha distinção de tipos de arquivos o arquivo ordenar_funcionarios.txt poderia ser tanto do tipo "relatório" quanto do tipo "banco de dados", mas como não há nenhuma outra indicação eu usaria como um "relatório" formatando para poder ser lido pelo usuário diretamente.
  16. Poste sua tentativa, e/ou suas dúvidas de em que está tendo problemas. O objetivo do fórum é ajudar os usuários a aprender, não resolver no lugar dos outros, pois assim não se aprende nada. Aproveite para entender o código do @devair1010 , e ver se entendendo o que ele fez fica mais fácil resolver o restante. Se não consegue fazer nada, então precisa voltar e rever o material de estudos. Pois explicar tudo que seria necessário para resolver esse exercício seria muita coisa para alguém ficar explicando pelo forum, e já existe bastante material disponível online, e provavelmente também disponibilizado pelo seu curso.
  17. Usar setbuf(stdin, buffer) cria o problema de impossibilitar redirecionar a entrada de dados. Por exemplo se quiser redirecionar a saída de texto de um programa como entrada do programa que está programando (isso é algo muito útil e poderoso, muito usado em programas de terminal, no Linux principalmente tem vários programas de terminal que podem ser usados para fazer coisas bem complexas quando combinados). Outro exemplo de redirecionamento seria para passar os dados de entrada do programa através de um arquivo de texto com os dados a serem digitados, ao invés de digitar manualmente durante a execução do programa, fazendo algo como: programa.exe < arquivo_entrada_de_dados.txt Nesses casos o setbuf(stdin, buffer) vai resetar a stdin inteira, perdendo todo o restante da informação que foi passada como entrada através do arquivo. Então eu diria que o método usando a função abaixo ainda é a melhor opção: void flush(){ int c; /*Lê todos os caracteres até encontrar '\n' ou EOF:*/ while( (c = getchar()) != '\n' && c != EOF ); } Só precisa saber usar corretamente nos locais certos.
  18. O espaço antes do %c informa a função scanf() que todos os caracteres 'vazios' (espaço, tabulação '\t', nova linha '\n', etc) devem ser ignorados, então só será capturado pelo %c o primeiro caractere "não vazio". (@AdrianoSiqueira Note que isso não "limpa buffer" que tiver caracteres "não vazios".) E o %*c informa ao scanf que 1 caractere deve ser lido, mas o * indica que esse caractere não será guardado em nenhum variável, logo é descartado, ou seja isso vai descartar o caractere '\n' inserido na entrada padrão (stdin) quando o usuário aperta Enter, esvaziando a stdin (isto é, supondo que o usuário apenas digite 1 letra e pressione Enter como é esperado, senão vai ficar sobrando caracteres na stdin).
  19. @Leoonardoos Aspas duplas indica string (sequencia com vários caracteres finalizada pelo caractere nulo '\0' ), então "f" na verdade tem 2 caracteres 'f' e '\0'. (E para comparar strings deve usar a função strcmp() mas talvez você ainda não aprendeu isso.) Para escrever 1 único caractere deve usar aspas simples para englobar o caractere como em 'f' .
  20. Deve checar se o char le é igual a 'f' ou igual a 'k'. Segue um exemplo: if (le == 'f') {
  21. @arfneto Ao dizer que é "lixo", não se esta dizendo que '\n' apareceu do nada ou indevidamente na stdin, claramente ele é acrescentado a string do stdin quando aperta Enter, exatamente como deveria. O sentido de dizer que '\n' e qualquer outra coisa que sobrou até o '\n' na stdin, depois do scanf ler a parte relevante para a entrada de dados, ser um "lixo", é o de implicar que o que sobrou não será usado pelo programa logo deve ser descartado, ou seja está de fato tratando o texto contido na stdin.
  22. Não sei ao certo quão correto é usar essa função setbuf para limpar stdin, mas se quiser usar no código basta trocar essa função flush: void flush(){ int c; /*Lê todos os caracteres até encontrar '\n' ou EOF:*/ while( (c = getchar()) != '\n' && c != EOF ); } Por isto: char buffer[BUFSIZ]; void flush(){ setbuf(stdin, buffer); } E não precisa mudar mais nada no código. @vangodp Sobre flush que postei originalmente (a primeira nesse post) as coisas que ele apontou a meu ver não são falhas, se você entende o que a função faz, também entende em que situação deve usar e quando não, ou seja só usa quando houver certeza de que pelo menos o caractere '\n' vai ficar sobrando no stdin. E usar para pausar a tela é uma vantagem, pois é melhor do que usar um único getchar() para pausar, pois vai limpar qualquer coisa que digitar se a pessoa não der Enter imediatamente. Outra coisa que eu não entendi é pra que ele quer limpar o stdin antes de fazer qualquer leitura do teclado? Se não tem nada para limpar? flush deve ser usada após os scanfs para limpar o que sobrou.
  23. @vangodp Você definiu char buffer com tamanho 100, mas deveria usar a constante BUFSIZ que é o tamanho ótimo de buffer estimado para um arquivo I/O. Usar a função setbuf(stream, buffer) é uma abreviação de usar setvbuf(stream, buffer, _IOFBF, BUFSIZ) , note que já é assumido o tamanho BUFSIZ para o buffer, se quiser usar um buffer com tamanho diferente terá que usar a função setvbuf() diretamente alterando o último parâmetro, ao invés de setbuf(). Outro problema é que você declarou o buffer dentro da função main, mas para stdin e stdout tem que ser declarado no escopo global, pois os streams de entrada só deve ser fechado quando o programa for finalizado, mas o buffer dentro do main será finalizado quando a função main acabar (e o stdin/stdout vai ficar sem buffer). Fonte: https://en.cppreference.com/w/c/io/setbuf
  24. Adicionei a função flush e troquei todos os fflush(stdin) pela função flush(), não testei mas deve funcionar normalmente: //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]; int NIF; 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 ); printf ( "\n\tDigite o NIF do funcionário: " ); scanf ( " %d", &funcionario[i].NIF ); printf ( "\n\tDigite o salario do funcionario: " ); scanf ( " %f", &funcionario[i].salario ); 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 %d \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\\teste4\\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, " %d", &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: %d", 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: %d", 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 nif, i=0; 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: %d", 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 para iniciar->" ); flush (); pressioneEnter(); system ( "cls" ); menu ( funcionario, n ); free ( p ); return 0; }
  25. O fórum alterou seu código, todos os [ i ] (sem espaços) sumiram do código, pois no fórum isso é a tag para deixar o texto em itálico, então metade do texto do seu tópico está em itálico. Leia minha assinatura abaixo para ver como postar código no fórum corretamente (e copie o código original que ainda tem os [ i ] para postar o código novamente). E também explique onde está tendo problema, ou quais as suas dúvidas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!