Ir para conteúdo
Fórum Script Brasil

Pesquisar na Comunidade

Mostrando resultados para as tags ''c ''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Estou tentando finalizar um processo, mas o processo-pai acaba relançando ele. Quero que o processo-pai pare de dar fork neste processo. O problema é que o processo pai é o init (então não posso matar ele, e é um processo NÃO É UM SERVIÇO que eu quero matar): init.d fork() quero saber se alguma dessas ideias é viável: fazer um LD_PRELOAD no meu Android para alterar a chamada fork de forma que eu consiga rastrear o processo (se é que existe e não é apenas o ActivityManager ou o systemserver) que está fazendo o init forkar de novo. Algum programa que bloqueie os sinais de parentesco entre o init e o processo que eu quero matar (SIGCHLD) De alguma forma editar o código do programa do processo que eu quero matar (é um binário do sistema) É isso. Qualquer ajuda é bem-vinda :)
  2. Olá, bom dia! Tenho que fazer o seguinte algoritmo: "Construa um programa que receba um número natural positivo n (60 >= n >=1) e a seguir uma lista de n valores inteiros positivos. O programa determina e imprime o tamanho da maior subsequência crescente. Entenda-se por tamanho da subsequência o número de elementos (naturais) que ela apresenta. Observação: Sejam a, b e c valores inteiros. Considere a sequência de valores {a, b, c}, dizemos que uma subsequência de tamanho 2 {a, b} é crescente se a < b ou a = b; assim, se a<=b e b<=c, a subsequência {a, b, c} é crescente e tem tamanho 3. Além disso, o tamanho da menor subsequência de qualquer sequência não vazia é 1 (qualquer valor da sequência é considerado uma subsequência). Exemplos: 1. Entrada: 1 9 Saída: 1 2. Entrada: 3 3 2 1 Saída: 1 3. Entrada: 3 1 1 1 Saída: 3 4. Entrada: 6 1 2 3 4 4 3 Saída: 5 " Eu criei o seguinte algoritmo: #include <stdio.h> int main (){ char vet[100]; int i, cont; scanf("%[^\n]", vet); for (i=0; vet!='\0'; i++) { int cod=(int)vet; if (cod >=48 && cod <=57) { if (cod >= cod-1) { cont++; } } } printf("%d", cont); return 0; } Não sei onde estou errando, não sei se a minha lógica está correta, poderiam me orientar?
  3. Me ajudem eu fiz esse algoritmo mas n sei se está correto . Escreva um algoritmo em linguagem C com as seguintes instruções: 1. Declare três variáveis (inteiro, real e char); 2. Declare três ponteiros; 3. Associe as variáveis aos ponteiros; 4. Modifique os valores de cada variável indiretamente usando os ponteiros associados. Para armazenar os valores nas variáveis, armazene na variável char a primeira letra do seu nome, na variável inteira os dois últimos dígitos do seu RU e na variável real os 4 últimos dígitos do seu RU, sendo os 2 últimos os valores com virgula; 5. Imprima na tela os valores das variáveis antes e após a modificação. #include <stdio.h> int main(void){ int x; x= 04; float y; y = 49.04; char z; z = 'm'; int *ponteiro1; ponteiro1 = &x; float *ponteiro2; ponteiro2 = &y; char *ponteiro3; ponteiro3 = &z; printf("\nValor antes: %i\n", *ponteiro1); printf("Valor depois: %i\n\n", &x); printf("Valor antes: %f\n", *ponteiro2); printf("Valor depois: %f\n\n", ponteiro2); printf("Valor antes: %c\n", *ponteiro3); printf("Valor depois: %c", *ponteiro3); }
  4. Programa que calcula o perímetro de triângulo. Recebe como dados de entrada as coordenadas dos vértices do triângulo e retorna o perímetro na unidade de medida escolhida. #include <stdio.h> #include <stdlib.h> #include <math.h> //definição do tipo Ponto. struct Ponto{ float x; float y; }; typedef struct Ponto PONTO; //definição da estrutura Triangulo com vértices do tipo PONTO. struct Triangulo{ //Vértices do triângulo. PONTO p[3]; }; typedef struct Triangulo TRIANGULO; //definição da função gerarTriangulo, que retorna uma estrutura do tipo //TRIANGULO. TRIANGULO gerarTriangulo(){ //variáveis. TRIANGULO tr; int contador; //Limpa a tela. system("cls"); //Entrada das coordenadas dos vértices do triângulo. for(contador = 0; contador < 3; contador++){ printf("Obtendo p%i:\n", contador + 1); printf("Abscissa: "); scanf("%f%*c", &tr.p[contador].x); printf("Ordenada: "); scanf("%f%*c", &tr.p[contador].y); } return tr; } float perimetro(TRIANGULO t){ //declaração de variáveis. float d1, d2, d3; //Cálculo do tamanho dos lados do triângulo. d1 = sqrt(pow(t.p[0].x - t.p[1].x, 2) + pow(t.p[0].y - t.p[1].y, 2)); d2 = sqrt(pow(t.p[0].x - t.p[2].x, 2) + pow(t.p[0].y - t.p[2].y, 2)); d3 = sqrt(pow(t.p[1].x - t.p[2].x, 2) + pow(t.p[1].y - t.p[2].y, 2)); //Retorno da soma dos lados que é o perímetro do triângulo. return d1 + d2 + d3; } int main(){ //Declaração de variáveis. char unidade_medida; system("cls"); //Solicita um tipo de unidade de medida até que o usuário escolha uma das opções //válidas. do{ printf("Escolha a unidade de medida: \n"); printf("c - centimetros, m - metros: "); scanf("%c%*c", &unidade_medida); }while(unidade_medida != 'c' && unidade_medida != 'm'); //Exibe o resultado de acordo com a unidade de medida escolhida. //Considera até três casas decimais. switch(unidade_medida){ case 'c': printf("O perimetro do triangulo e: %.3f cm.\n", perimetro(gerarTriangulo())); break; case 'm': printf("O perimetro do triangulo e: %.3f m.\n", perimetro(gerarTriangulo())); } return 0; }
  5. Gente, eu to passando muita dificuldade pra entender strings em C, preciso fazer um código q eu dou entrada em 16 valores (q são tanto números, quanto letras), cada valor lido vai ter um resultado diferente, porém quando o próximo valor for zero ele tem q finalizar a execução e apenas executar os resultados respectivos dos valores já lidos. Na lógica que eu montei eu criei uma função pra tentar fazer isso sem ter q colocar uma sequencia de mil e um "if" e "else" porque são mais ou menos 20 valores diferentes que podem ser combinados com vários outros valores e isso é código dms pra digitar, por isso tentei fazer usando só uma função em q eu chamasse o código, passasse os parametros e via se daria certo, porém o código n funcionou, refiz a lógica já umas 6 vezes, em nenhum momento deu certo e a única vez q de forma ilusória pareceu dar mais certo foi essa: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> char* leitor(char vl1[], char vl2[], char c1[], char resultado[]) { if(strcmp(vl1, c1)) //comparação entre duas strings, pra ver se o valor 1 recebido comparado ao valor q é respectivo ao resultado é esse, se não fosse ele simplesmente daria retorno nulo { if(strcmp(vl2, "0")) //comparação entre o próximo valor e o valor 0, se for igual ele executa a ação do valor 1, se { return resultado; } else { return 0; } } else { return 0; } } int main() { setlocale(LC_ALL, "Portuguese"); int c=0; char v[16][200]; printf("Digite os 16 valores: \n"); while(c<16) { c = ++c; printf("Bloco %i: ", c); gets(v[c]); } printf("Ações: %s", leitor(v[1], v[2], "1", "feliz")); return 0; } O código ta dando sempre como resultado nulo, e se por algum motivo eu troco o valor do parametro c1[] pra "10" e o zero sendo comparado com o vl2 pra "00" o resultado sempre é "feliz" independente da lógica ser certa ou n, me socorram, acredito q o problema seja com as strings, a forma q declarei elas ou qualquer coisa assim, agradeço desde já s2
  6. Tenho esse algoritmo pra fazer:Codifique, compile e execute um programa em C que declare na função principal uma estruturapara o cadastro de alunos de uma academia. a) Para cada aluno armazenar: nome, sobrenome (apenas um), ano de nascimento e um vetor de 6posições indicando quais dias da semana o aluno frequenta a academia. Lembrando que aacademia funciona de segunda a sábado;b) Ao iniciar o programa, o usuário deverá informar o número de alunos que serão armazenados;c) O programa deverá alocar dinamicamente a quantidade necessária de memória para armazenaros registros dos alunos;d) O programa deverá pedir ao usuário que entre com as informações dos alunos;e) Ao final, o programa deve exibir na tela os dados armazenados e liberar a memória alocada. Não esqueça de usar funções para estruturar o seu código.Consegui fazê-lo rodar mas sem o uso de ponteiro e creio que estou confundindo o conceito de ponteiro e alocação dinâmica. Então gostaria que avaliassem meu código e dissessem o que estou fazendo de errado.Código: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> #include <math.h> int main(){ setlocale(LC_ALL, "Portuguese_Brazil"); struct cadastro{ char nome[20]; char sobrenome[30]; char ano[10]; int dias[6]; }; int n,i,j,*p; printf("Digite quantos alunos cadastrar: "); scanf("%d",&n); setbuf(stdin,NULL); printf("\n"); p=(int *) malloc(n*sizeof(int)); struct cadastro c[*p]; for(i=0;i<n;i++){ printf("%dº aluno para cadastrar:\n\n",i+1); printf("Nome: "); fgets(c[p[i]].nome,20,stdin); setbuf(stdin,NULL); printf("Sobrenome (apenas um): "); gets(c[p[i]].sobrenome); setbuf(stdin,NULL); printf("Ano de nascimento: "); gets(c[p[i]].ano); setbuf(stdin,NULL); printf("\nDias na semana que frequenta a academia (0 para não; 1 para sim):\n"); setbuf(stdin,NULL); for(j=0;j<6;j++){ printf("Dia %d: ",j+1); scanf("%d",&c[p[i]].dias[j]); setbuf(stdin,NULL); } printf("\n\n"); } printf("\n\nDados cadastrados dos alunos: \n\n"); for(i=0;i<n;i++){ printf("%dº aluno: \n",i+1); printf("Nome: %s",c[p[i]].nome); printf("Sobrenome: %s\n",c[p[i]].sobrenome); printf("Ano de nascimento: %s\n",c[p[i]].ano); printf("O aluno foi na academia nos seguintes dias:\n"); if(c[p[i]].dias[0]==1) printf("Segunda, "); if(c[p[i]].dias[1]==1) printf("Terça, "); if(c[p[i]].dias[2]==1) printf("Quarta, "); if(c[p[i]].dias[3]==1) printf("Quinta, "); if(c[p[i]].dias[4]==1) printf("Sexta, "); if(c[p[i]].dias[5]==1) printf("Sábado"); printf("\n\n\n"); } free(p); return 0; }
  7. Boa tarde, galera! Fiz um pequeno programa de cadastro de pessoas e percebi que quando exibo as pessoas cadastradas o último registro gravado está duplicado. Estou usando win10 e o compilador é o minGW. segue o código: #include <stdio.h> #include <stdlib.h> #include <string.h> struct Pessoa{ char nome[30]; int idade; }; void pausa(){ printf("pressione qualquer tecla para voltar ao menu principal\n"); scanf("%*c"); } void limpar_buffer(){ scanf("%*[^\n]"); scanf("%*c"); } void cadastrar(){ FILE* fp; struct Pessoa p; char escolha = 's'; do{ system("cls"); printf("Rotina de cadastro\n\n\n"); printf("Nome: "); fgets(p.nome, 30, stdin); printf("Idade: "); scanf("%d%*c", &p.idade); fp = fopen("cadastro.dat", "ab"); fwrite(&p, sizeof(p), 1, fp); fclose(fp); system("cls"); printf("Cadastro realizado com sucesso!\n"); printf("\n\n\nCadastrar outro?: "); escolha = getchar(); limpar_buffer(); }while(escolha != 'n' && escolha != 'N'); } void exibir(){ FILE* fp; struct Pessoa p; int total = 0; system("cls"); printf("Relacao de cadastrados\n\n\n"); fp = fopen("cadastro.dat", "rb"); while(!feof(fp)){ fread(&p, sizeof(p), 1, fp); total++; printf("Nome: %s\n", p.nome); printf("Idade: %d\n", p.idade); printf("-----------------------------------------\n"); } fclose(fp); printf("Numero de cadastrados: %d\n", total); pausa(); } int menu(){ int m; system("cls"); printf("Menu principal\n\n\n"); printf("[1] - Cadastrar\n"); printf("[2] - Relacao cadastrados\n"); printf("[3] - Sair\n"); printf("\n\n\n?: "); scanf("%d%*c", &m); return m; } int main(){ //declaração de variáveis. int escolha = 0; do{ escolha = menu(); switch(escolha){ case 1:cadastrar(); break; case 2:exibir(); } }while(escolha != 3); return 0; }
  8. Fiz um código com menu de opções para matrizes, porem não sei como completar com os códigos de simetria, transposta e produto de matrizes. Alguém poderia ajudar? Segue o código que já fiz até agora. #include <stdio.h> #include <stdlib.h> #include<locale.h> int main () { setlocale(LC_ALL, "Portuguese"); /* Declaração de variáveis*/ int opcao;  system(“cls”); printf(“**************************** ******************\n”); printf(“********* M E N U D E O P C O E S ***********\n”); printf(“**************************** ******************\n”); do { printf(“Escolha uma das opcoes de 1 a 4 ”); printf(“Digite [1] para calcular a transposta de uma matriz A”); printf(“Digite [2] para verificar se A uma matriz é simétrica ”); printf(“Digite [3] para calcular o produto de duas matrizes A e B ”); printf(“Digite [4] para terminar ”); scanf(“%d”, &opcao); if ((opcao <= 1) || (opcao >4) printf(“Voce digitou uma opcao e invalida, escolha novamente por favor”); } while ((OPCAO <= 1) || (OPCAO >4)) // Teste de consistência if(opcao ! = 4) { switch (opcao) { case 1: //escrever o código necessário para realizar esta operação break; case 2: //escrever o código necessário para realizar esta operação ... break; case 3: //escrever o código necessário para realizar esta operação ... break; ... } }
  9. Pessoal este é um trabalho escolar meu, que pede que um sistema armazene dados ( como nome, cpf, portador de necessidades, professor ou aluno) e efetue um cadastro do participante da palestra antes que ele possa efetuar compra do ingresso, não estou sabendo fazer com que a matriz armazene esses dados e mostra nas cadeiras caso ela já esteja ocupada ou não. sendo que as duas primeiras fileiras são destinados a professores e a última destinada a deficiente, se puderem me darem dicas agradeço, segue o que eu consegui fazer abaixo #include <stdio.h> #include<stdlib.h> #include "string.h" #include "time.h" #define COL 10 #define ROW 10 #define FALSE 0 #define TRUE 1 void cadastro(char matriz[ROW][COL]); void inicializa(char matriz[ROW][COL]); void mostrarPainel(char matriz[ROW][COL]); void comprar(char matriz[ROW][COL]); void reservar(char matriz[ROW][COL]); void legenda(); int menuOpcao(); int colunaY(); int linhaX(); //estrutura dos dados struct participante { char nome[30]; float cpf; int cargo; //0 - Professor; 1- Aluno; 2- Convidado int pne; //0 - Sem necessidades especiais; 1- Portador de necessidades especiais }; typedef struct participante part; int main(void) { char matriz[ROW][COL]; int opcao; int loopContinue = TRUE; inicializa(matriz); //Iniciliza a matriz com valores .(Livre) do { system("cls");//Limpa a tela opcao = menuOpcao(); switch (opcao) { case 1: system("cls"); system("cls"); mostrarPainel(matriz);//Mostra o Painel atualizado comprar(matriz); // Realiza a compra de uma cadeira no painel, marcando c/ um X break; case 2: system("cls"); system("cls"); mostrarPainel(matriz); reservar(matriz); //Realiza a reserva de uma cadeira no painel, marcando c/ um R break; case 3: system("cls"); mostrarPainel(matriz); getchar(); break; case 4: loopContinue = FALSE; //condicao para saída do programa } } while (loopContinue); getchar(); return 0; } void cadastro(char matriz[ROW][COL]) { int row, col; printf("digite seu nome: "); row = linhaX(); col = colunaY(); system("pause"); } void inicializa(char matriz[ROW][COL]) { int i, j; for (i = 1; i <= ROW; i++) for (j = 1; j <= COL; j++) matriz[j] = '.'; } void mostrarPainel(char matriz[ROW][COL]) { int i, j; printf("\n\n %c PAINEL DE OCUPACOES %c\n\n", 16, 17); printf(" "); for (i = 1; i <= COL; i++) printf("%d ", i); for (i = 1; i <= ROW; i++) { printf("\n\n %d", i); for (j = 1; j <= COL; j++) printf(" (%c)", matriz[j]); } //apresenta o menu na tela legenda(); system("pause"); } int menuOpcao() { int opcao = 5; do { system("cls"); printf("\n\n %c MENU %c\n\n", 16, 17); printf(" %c 1- Comprar %c\n", 16, 17); printf(" %c 2- Reservar %c\n", 16, 17); printf(" %c 3- Mostrar Painel %c\n", 16, 17); printf(" %c 4- Exit %c\n\n", 16, 17); printf(" %c 5- cadastro %c\n", 16, 17); printf(" opcao: "); scanf("%d", &opcao); if (opcao <= 0 || opcao > 5) { printf("\n\n\n DIGITE APENAS VALORES CORESPONDENTES AO MENU !!"); getchar(); } } while (opcao <= 0 || opcao > 5); return opcao; } //apresenta a legenda na tela void legenda() { printf("\n\n\n .-Livre X-Ocupado R-Reservado\n\n"); } //efetica a compra da cadeira void comprar(char matriz[ROW][COL]) { int row, col; printf("\n COMPRA DE CADEIRAS\n\n"); row = linhaX(); col = colunaY(); if (matriz[row][col] == '.') { matriz[row][col] = 'X'; printf("\n\n COMPRA EFETIVADA COM SUCESSO !!"); } else if (matriz[row][col] == 'X') printf("\n\n CADEIRA já OCUPADA!! ESCOLHA OUTRA !!\n\n"); else if (matriz[row][col] == 'R') printf("\n\n CADEIRA já RESERVADA!! ESCOLHA OUTRA !!\n\n"); getchar(); } //reserva a cadeira no teatro void reservar(char matriz[ROW][COL]) { int row, col; printf("\n\n RESERVA DE CADEIRAS\n\n"); row = linhaX(); col = colunaY(); if (matriz[row][col] == '.') { matriz[row][col] = 'R'; printf("\n\n RESERVA EFETIVADA COM SUCESSO !!"); } else if (matriz[row][col] == 'X') printf("\n\n CADEIRA já OCUPADA!! ESCOLHA OUTRA !!\n\n"); else if (matriz[row][col] == 'R') printf("\n\n CADEIRA já RESERVADA !! ESCOLHA OUTRA !!\n\n"); getchar(); } //ler a linha oferecida pelo usuario int linhaX() { int row; printf(" Linha: "); scanf("%d", &row); if (row > 100) { printf("\t\n Esta cadeira não existe!!! "); } return row; } //ler a coluna oferecida pelo usuario int colunaY() { int col; printf(" Coluna: "); scanf("%d", &col); if (col > 100) { printf("\t\n Esta cadeira não existe!!! "); } return col; }
  10. Olá, estou tentando criar uma fila em C, mas não sei como faço pra que a minha função retorne ao menu, e nem consigo determinar um ponto de parada pra a execuçao da fila. grato. #include <stdio.h> #include <stdlib.h> #include <locale.h> main(){ setlocale(LC_ALL, "Portuguese"); int senha=0; // posição char cl [20]; //cliente int op=0; //operação printf("#################### BEM VINDO ####################\n\n"); printf("OPERAÇÃO\n"); printf("Digite (0) pra fechar aplicação\n"); printf("Digite (1) para saques e depositos\n"); printf("Digite (2) para previdência\n"); scanf("%i", &op); system("cls"); if(op==1){ do{ printf("SAQUES E DEPÓSITOS\n"); printf("\nDigite o Nome do Cliente:\n"); scanf("\n%19s", &cl); senha++; printf("\t>>Cliete:%s\t>>Senha: PAG 0%i\n", cl, senha); } while ((senha>=1&&senha<20)); if(senha==0){ printf("Fila vazia"); if(senha==20){ printf("Fila Cheia"); } } } if(op==2){ do{ printf("PREVIDÊNCIA"); printf("\nDigite o Nome do Cliente:\n"); //system("pause"); //system("cls"); scanf("\n%19s", &cl); senha++; printf("\t>>Cliete:%s \t>>Senha:PREV 0%i\n", cl,senha); } while ((senha>=1)&&(senha<=20)); if(senha==0){ printf("Fila vazia"); if(senha==20){ printf("Fila Cheia"); } } } system("pause"); }
  11. Eu estou fazendo um programa de controle de funcionários e, ele esta dando erro na parte de alteração dos dados do funcionário(Erro: Matricula inexistente) e departamento(Erro: Departamento Inexistente), sendo que ambos estão cadastrados corretamente, e mesmo se alterar os dados da alteração não grava. Quem puder me ajudar agradeço! Segue o código: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> typedef struct{ long int codigo, cod_gerente; char nome[30],sigla[5]; unsigned short int ramal; }TDepartamento; typedef struct{ long int cod_dep, numero; char nome[60],matricula[10],dataNascimento[11],cpf[12],rua[40],bairro[30], complemento[20],cidade[30],estado[3],telefone[15],email[30]; double salario; }TFuncionario; typedef struct{ long int codfun, coddep; char data[11]; }Thistoricofuncionario; typedef struct{ long int codgerente, coddep; char data[11]; }Thistoricodepartamento; typedef struct{ long int codfun; unsigned short int mes,ano; double salario; }Thistoricosalario; int pesquisaDep(FILE *da, long int cod){ TDepartamento v; int posicao=0; /*posição no início do arquivo*/ fseek(da,0,SEEK_SET); while(fread(&v,sizeof(TDepartamento),1,da)==1){ if(v.codigo==cod) return posicao; else posicao++; } return -1; } /*retorna a posiço do registro ou -1 se não encontrar*/ int pesquisaFun(FILE *a, char *matricula[]){ TFuncionario r; int posicao=0; /*posição no início do arquivo*/ fseek(a,0,SEEK_SET); while(fread(&r,sizeof(TFuncionario),1,a)==1){ if(!strcmp(r.matricula, matricula)) return posicao; else posicao++; } return -1; } /*Cadastrar um Departamento*/ void cadDep(FILE *da, FILE *a){ int sair,p; long int cod,codger; unsigned short int ch; TDepartamento vd; do{ printf("\n******************************************************\n"); printf("\n* Cadastramento de Departamento *\n"); printf("\n******************************************************\n"); printf("\nCódigo do Departamento:"); scanf("%li",&vd.codigo); if(pesquisaDep(da,vd.codigo)==-1){ setbuf(stdin,NULL); printf("\nNome do departamento:"); fgets(vd.nome,30,stdin); setbuf(stdin,NULL); if((strlen(vd.nome)==0) || (strcmp(vd.nome,"0")==0)){ printf("\nO campo nome não pode estar vazio!Digite novamente:"); fgets(vd.nome,30,stdin); } printf("\nSigla do Departamanto:"); fgets(vd.sigla,5,stdin); setbuf(stdin,NULL); printf("\nCodigo do funcionario que será gerente do departamento:"); scanf("%li",&vd.cod_gerente); if(pesquisaFun(a,codger)!=-1) printf("\nMatricula de funcionario inexistente!!!"); printf("\nRamal:"); fflush(stdin); scanf("%d",&vd.ramal); if (vd.ramal <= 0x30) if (vd.ramal >= 0x39) printf ("%f\n", strtof(vd.ramal, NULL)); else printf ("Not a number\n"); /*posicionando no final do arquivo*/ fseek(da,0,SEEK_END); fwrite(&vd,sizeof(TDepartamento),1,da); } else printf("\nDepartamento já existe!!!!"); printf("\n\nDeseja sair do cadastro? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Validar o CPF do funcionario*/ int validarCPF(char cpf[]){ int i, j, digito1 = 0, digito2 = 0; if(strlen(cpf) != 11) return 0; else if((strcmp(cpf,"00000000000") == 0) || (strcmp(cpf,"11111111111") == 0) || (strcmp(cpf,"22222222222") == 0) || (strcmp(cpf,"33333333333") == 0) || (strcmp(cpf,"44444444444") == 0) || (strcmp(cpf,"55555555555") == 0) || (strcmp(cpf,"66666666666") == 0) || (strcmp(cpf,"77777777777") == 0) || (strcmp(cpf,"88888888888") == 0) || (strcmp(cpf,"99999999999") == 0)) return 0; /*se o CPF tiver todos os números iguais ele é inválido.*/ else{ /*digito 1---------------------------------------------------*/ for(i = 0, j = 10; i < strlen(cpf)-2; i++, j--) /*multiplica os números de 10 a 2 e soma os resultados dentro de digito1*/ digito1 += (cpf[i]-48) * j; digito1 %= 11; if(digito1 < 2) digito1 = 0; else digito1 = 11 - digito1; if((cpf[9]-48) != digito1) return 0; /*se o digito 1 não for o mesmo que o da validação CPF é inválido*/ else{ /*digito 2--------------------------------------------------*/ for(i = 0, j = 11; i < strlen(cpf)-1; i++, j--) /*multiplica os números de 11 a 2 e soma os resultados dentro de digito2*/ digito2 += (cpf[i]-48) * j; digito2 %= 11; if(digito2 < 2) digito2 = 0; else digito2 = 11 - digito2; if((cpf[10]-48) != digito2) return 0; /*se o digito 2 não for o mesmo que o da validação CPF é inválido*/ } } return -1; } /*Cadastrar um funcionario*/ void cadFun(FILE *a, FILE *da){ int i,cod,sair,achou,data; char cp[11]; TFuncionario vf; TDepartamento vd; do{ printf("\n******************************************************\n"); printf("\n* Cadastramento de Funcionarios *\n"); printf("\n******************************************************\n"); printf("\nForneça a matricula:"); fgets(vf.matricula,10,stdin); if(pesquisaFun(a,vf.matricula)==-1){ setbuf(stdin,NULL); printf("\nNome do Funcionario:"); fgets(vf.nome,60,stdin); setbuf(stdin,NULL); if(vf.nome==NULL){ printf("\nO nome não pode estar vazio!!!"); fgets(vf.nome,60,stdin); setbuf(stdin,NULL); } printf("\nSalario do Funcionario:"); scanf("%lf",&vf.salario); setbuf(stdin,NULL); printf("\nData de nascimento:"); fgets(vf.dataNascimento,11,stdin); setbuf(stdin,NULL); printf("\nCPF:"); fgets(cp,12,stdin); setbuf(stdin,NULL); if(validarCPF(cp)==-1) strcpy(vf.cpf,cp); else{ printf("\nCPF inválido!Digite-o novamente:"); fgets(cp,12,stdin); setbuf(stdin,NULL); } printf("\n******************************************************\n"); printf("\n* Endereço *\n"); printf("\n******************************************************\n"); printf("\nRua:"); fgets(vf.rua,40,stdin); setbuf(stdin,NULL); printf("\nBairro:"); fgets(vf.bairro,30,stdin); setbuf(stdin,NULL); printf("\nNúmero:"); scanf("%li",&vf.numero); setbuf(stdin,NULL); printf("\nComplemento:"); fgets(vf.complemento,20,stdin); setbuf(stdin,NULL); printf("\nCidade:"); fgets(vf.cidade,30,stdin); setbuf(stdin,NULL); printf("\nEstado:"); fgets(vf.estado,3,stdin); setbuf(stdin,NULL); setbuf(stdin,NULL); printf("\n******************************************************\n"); printf("\n* Informações de contato *\n"); printf("\n******************************************************\n"); printf("\nTelefone:"); fgets(vf.telefone,15,stdin); setbuf(stdin,NULL); printf("\nE-mail:"); fgets(vf.email,30,stdin); setbuf(stdin,NULL); printf("\nForneça o Código do departamento:"); scanf("%d",&vf.cod_dep); if(pesquisaDep(da,cod)!=-1) printf("\nDepartamento inexistente!!!"); /*posicionando no final do arquivo*/ fseek(a,0,SEEK_END); fwrite(&vf,sizeof(TFuncionario),1,a); } else printf("\nMatricula de funcionario repetida!!!!"); printf("\n\nDeseja sair do cadastro? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Consultar um funcionario cadastrado*/ void consFun(FILE *a, FILE *da){ int sair,p; TFuncionario rf; do{ printf("\nForneça a matricula:"); fgets(rf.matricula,10,stdin); if(pesquisaFun(a,rf.matricula)==-1){ /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fread(&rf,sizeof(TFuncionario),1,a); printf("\n******************************************************\n"); printf("\n* Dados do Funcionario *\n"); printf("\n******************************************************\n"); printf("\nMatricula: %s",&rf.matricula); printf("\nNome: %s",&rf.nome); printf("\nSalario: %.2f",&rf.salario); printf("\nData de nascimento: %s",&rf.dataNascimento); printf("\nCPF: %s",&rf.cpf); printf("\nRua: %s",&rf.rua); printf("\nBairro: %s",&rf.bairro); printf("\nNúmero: %li",&rf.numero); printf("\nComplemento: %s",&rf.complemento); printf("\nCidade: %s",&rf.cidade); printf("\nEstado: %s",&rf.estado); printf("\nTelefone: %s",&rf.telefone); printf("\nE-mail: %s",&rf.email); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da consulta? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar os dados de um funcionario*/ void alteracaoFun(FILE *a,FILE *da, FILE *hist){ int cod,sair,achou,data,p; char cp[11]; TFuncionario rf; do{ printf("\n******************************************************\n"); printf("\n* Alteração de Dados do Funcionarios *\n"); printf("\n******************************************************\n"); printf("\nForneça a matricula:"); fgets(rf.matricula,10,stdin); p=pesquisaFun(a,rf.matricula); fseek(a,(ftell(a)/sizeof(TFuncionario)) - 1, SEEK_SET); if(p==-1){ setbuf(stdin,NULL); printf("\nNome do Funcionario:"); fgets(rf.nome,60,stdin); if(rf.nome==NULL){ printf("\nO nome não pode estar vazio!!!"); fgets(rf.nome,60,stdin); } setbuf(stdin,NULL); printf("\nData de nascimento:"); fgets(rf.dataNascimento,11,stdin); setbuf(stdin,NULL); printf("\nCPF:"); fgets(cp,12,stdin); if(validarCPF(cp)==1) strcmp(rf.cpf,cp); else{ printf("\nCPF inválido!Digite-o novamente:"); fgets(cp,12,stdin); } setbuf(stdin,NULL); printf("\n******************************************************\n"); printf("\n* Endereço *\n"); printf("\n******************************************************\n"); printf("\nRua:"); fgets(rf.rua,40,stdin); setbuf(stdin,NULL); printf("\nBairro:"); fgets(rf.bairro,30,stdin); setbuf(stdin,NULL); printf("\nNúmero:"); scanf("%li",&rf.numero); setbuf(stdin,NULL); printf("\nComplemento:"); fgets(rf.complemento,20,stdin); setbuf(stdin,NULL); printf("\nCidade:"); fgets(rf.cidade,30,stdin); setbuf(stdin,NULL); printf("\nEstado:"); fgets(rf.estado,3,stdin); setbuf(stdin,NULL); printf("\n******************************************************\n"); printf("\n* Informações de contato *\n"); printf("\n******************************************************\n"); printf("\nTelefone:"); fgets(rf.telefone,15,stdin); setbuf(stdin,NULL); printf("\nE-mail:"); fgets(rf.email,30,stdin); setbuf(stdin,NULL); /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fwrite(&rf,sizeof(TFuncionario),1,a); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar o departamento do funcionario*/ void alteracaoFunDep(FILE *a,FILE *da, FILE *hist){ int sair,p; TFuncionario rf; do{ printf("\nForneça a matricula do funcionario:"); fgets(rf.matricula,10,stdin); p=pesquisaFun(a,rf.matricula); fseek(a,(ftell(a)/sizeof(TFuncionario)) - 1, SEEK_SET); if(p==-1){ setbuf(stdin,NULL); printf("\nForneça o novo departamento do funcionario:"); fgets(rf.cod_dep,60,stdin); setbuf(stdin,NULL); if(pesquisaDep(da,rf.cod_dep)!=-1) printf("\nDepartamento não cadastrado!!!"); /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fwrite(&rf,sizeof(TFuncionario),1,a); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar o salario do funcionario*/ void alteracaoSalarioFun(FILE *a,FILE *hist){ int sair,p,cod,achou; TFuncionario rf; do{ printf("\nForneça a matricula do funcionario:"); fgets(rf.matricula,10,stdin); p=pesquisaFun(a,rf.matricula); fseek(a,(ftell(a)/sizeof(TFuncionario)) - 1, SEEK_SET); if(p==-1){ setbuf(stdin,NULL); printf("\nForneça o novo salario do funcionario:"); scanf("%lf",&rf.salario); setbuf(stdin,NULL); /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fwrite(&rf,sizeof(TFuncionario),1,a); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar o gerente de um departamento*/ void alteracaoGerenteDep(FILE *da,FILE *a, FILE *hist){ int sair,p; TDepartamento rd; do{ printf("\nForneça o codigo do departamento:"); scanf("%li",&rd.codigo); fseek(da,(ftell(da)/sizeof(TDepartamento)) - 1, SEEK_SET); if(pesquisaDep(da,rd.codigo)==-1){ setbuf(stdin,NULL); printf("\nForneça a matricula do novo gerente do departamento:"); scanf("%li",&rd.cod_gerente); setbuf(stdin,NULL); if(pesquisaFun(a,rd.cod_gerente)!=-1) printf("\nMatricula inexistente!!!"); /*posicionando no final do arquivo*/ fseek(a,sizeof(TDepartamento)*p,SEEK_SET); fwrite(&rd,sizeof(TDepartamento),1,a); } else printf("\nDepartamento inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } int main(){ FILE *func; FILE *dep; FILE *histfun; FILE *histdep; FILE*histsal; int opcao; func = fopen("funcionario.dat","rb+"); dep = fopen("departamento.dat","rb+"); histfun = fopen("histfun.dat","rb+"); histdep = fopen("histdep.dat","rb+"); histsal = fopen("histsal.dat","rb+"); if (dep==NULL) dep=fopen("departamento.dat","wb+"); if (dep==NULL){ printf("\nErro na abertura do arquivo"); } else func=fopen("funcionario.dat","rb+"); if(func==NULL){ func=fopen("funcionario.dat","wb+"); } if(func==NULL){ printf("\nErro na abertura do arquivo"); } else{ histfun=fopen("histfun.dat","rb+"); } if(histfun==NULL){ histfun=fopen("histfun.dat","wb+"); } if(histfun==NULL){ printf("\nErro na abertura do arquivo"); } else{ histdep=fopen("histdep.dat","rb+"); } if(histdep==NULL){ histdep=fopen("histdep.dat","wb+"); } if(histdep==NULL){ printf("\nErro na abetura do arquivo"); } else{ histsal=fopen("histsal.dat","rb+"); } if(histsal==NULL){ histsal=fopen("histsal.dat","wb+"); } if(histsal==NULL){ printf("\nErro na abertura do arquivo"); } else do{ printf("\n******************************************************\n"); printf("\n* Controle de Funcionarios *\n"); printf("\n******************************************************\n"); printf("\n1-Cadastro de Departamentos\n2-Cadastro de Funcionarios"); printf("\n3-Consultar Funcionario"); printf("\n4-Relatorio de Funcionários por Departamento"); printf("\n5-Alterar um funcionario"); printf("\n6-Alterar Departamento de um Funcionario"); printf("\n7-Alterar Gerente de um Departamento"); printf("\n8-Gerar Folha de Pagamento"); printf("\n9-Alterar o salario de um Funcionario"); printf("\n10-Historico de Salario em um periodo"); printf("\n11-Gerentes de um Departamento"); printf("\n12-Fim\nForneça sua opção:"); scanf("%d", &opcao); setbuf(stdin,NULL); switch(opcao){ case 1: cadDep(dep,func); break; case 2: cadFun(func, dep); break; case 3: consFun(func,dep); break; case 5: alteracaoFun(func,dep, histfun); break; case 6: alteracaoFunDep(func,dep,histfun); break; case 7: alteracaoGerenteDep(dep,func,histdep); case 9: alteracaoSalarioFun(func,histsal); break; } }while(opcao!=12); fclose(func); fclose(dep); fclose(histfun); fclose(histdep); fclose(histsal); return 0; }
  12. Olá pessoal tudo bem? Eu estou fazendo um programa para controle de funcionários em C, e estou com problemas em algumas partes do código.Os dados de cadastramento de funcionário e departamento não está sendo gravados nos seus respectivos arquivo, e em "cadastrar departamento" depois de digitar o código do departamento que sera criado e apertar enter o programa buga. Segue o código: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> typedef struct{ long int codigo, cod_gerente; char nome[30],sigla[5]; unsigned short int ramal; }TDepartamento; typedef struct{ long int cod_dep, numero; char nome[60],matricula[10],dataNascimento[11],cpf[12],rua[40],bairro[30], complemento[20],cidade[30],estado[3],telefone[15],email[30]; double salario; }TFuncionario; typedef struct{ long int codfun, coddep; char data[11]; }Thistoricofuncionario; typedef struct{ long int codgerente, coddep; char data[11]; }Thistoricodepartamento; typedef struct{ long int codfun; unsigned short int mes,ano; double salario; }Thistoricosalario; int pesquisaDep(FILE *da, long int *cod){ TDepartamento v; int posicao=0; /*posição no início do arquivo*/ fseek(da,0,SEEK_SET); while(fread(&v,sizeof(TDepartamento),1,da)==1){ if(v.codigo==cod) return posicao; else posicao++; } return -1; } /*retorna a posiço do registro ou -1 se não encontrar*/ int pesquisaFun(FILE *a, char *matricula){ TFuncionario r; int posicao=0; /*posição no início do arquivo*/ fseek(a,0,SEEK_SET); while(fread(&r,sizeof(TFuncionario),1,a)==1){ if(r.matricula==matricula) return posicao; else posicao++; } return -1; } /*Cadastrar um Departamento*/ void cadDep(FILE *da, FILE *a){ int sair,p; long int cod,codger; unsigned short int ch; TDepartamento vd; do{ printf("\n******************************************************\n"); printf("\n* Cadastramento de Departamento *\n"); printf("\n******************************************************\n"); printf("\nCódigo do Departamento:"); scanf("%li",&cod); if(pesquisaDep(da,cod)==-1){ strcpy(vd.codigo,cod); setbuf(stdin,NULL); printf("\nNome do departamento:"); fgets(vd.nome,30,stdin); setbuf(stdin,NULL); if((strlen(vd.nome)==0) || (strcmp(vd.nome,"0")==0)){ printf("\nO campo nome não pode estar vazio!Digite novamente:"); fgets(vd.nome,30,stdin); } printf("\nSigla do Departamanto:"); fgets(vd.sigla,5,stdin); setbuf(stdin,NULL); printf("\nCodigo do funcionario que será gerente do departamento:"); scanf("%li",codger); if(pesquisaFun(a,codger)==-1) strcpy(vd.cod_gerente,codger); else printf("\nMatricula de funcionario inexistente!!!"); printf("\nRamal:"); fflush(stdin); scanf("%d",&ch); if(isdigit(ch)){ strcpy(vd.ramal,ch); } else{ printf("voce não digitou um numero!!!\n\n"); scanf("%d",&ch); } /*posicionando no final do arquivo*/ fseek(da,0,SEEK_END); fwrite(&vd,sizeof(TDepartamento),1,da); } else printf("\nDepartamento já existe!!!!"); printf("\n\nDeseja sair do cadastro? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Validar o CPF do funcionario*/ int validarCPF(char cpf[]){ int i, j, digito1 = 0, digito2 = 0; if(strlen(cpf) != 11) return 0; else if((strcmp(cpf,"00000000000") == 0) || (strcmp(cpf,"11111111111") == 0) || (strcmp(cpf,"22222222222") == 0) || (strcmp(cpf,"33333333333") == 0) || (strcmp(cpf,"44444444444") == 0) || (strcmp(cpf,"55555555555") == 0) || (strcmp(cpf,"66666666666") == 0) || (strcmp(cpf,"77777777777") == 0) || (strcmp(cpf,"88888888888") == 0) || (strcmp(cpf,"99999999999") == 0)) return 0; /*se o CPF tiver todos os números iguais ele é inválido.*/ else{ /*digito 1---------------------------------------------------*/ for(i = 0, j = 10; i < strlen(cpf)-2; i++, j--) /*multiplica os números de 10 a 2 e soma os resultados dentro de digito1*/ digito1 += (cpf[i]-48) * j; digito1 %= 11; if(digito1 < 2) digito1 = 0; else digito1 = 11 - digito1; if((cpf[9]-48) != digito1) return 0; /*se o digito 1 não for o mesmo que o da validação CPF é inválido*/ else{ /*digito 2--------------------------------------------------*/ for(i = 0, j = 11; i < strlen(cpf)-1; i++, j--) /*multiplica os números de 11 a 2 e soma os resultados dentro de digito2*/ digito2 += (cpf[i]-48) * j; digito2 %= 11; if(digito2 < 2) digito2 = 0; else digito2 = 11 - digito2; if((cpf[10]-48) != digito2) return 0; /*se o digito 2 não for o mesmo que o da validação CPF é inválido*/ } } return -1; } /*Cadastrar um funcionario*/ void cadFun(FILE *a, FILE *da){ int i,cod,sair,achou,data; char mat[10],cp[11]; TFuncionario vf; TDepartamento vd; do{ printf("\n******************************************************\n"); printf("\n* Cadastramento de Funcionarios *\n"); printf("\n******************************************************\n"); printf("\nForneça a matricula:"); fgets(mat,10,stdin); if(pesquisaFun(a,mat)==-1){ strcpy(vf.matricula,mat); setbuf(stdin,NULL); printf("\nNome do Funcionario:"); fgets(vf.nome,60,stdin); setbuf(stdin,NULL); if(vf.nome==NULL){ printf("\nO nome não pode estar vazio!!!"); fgets(vf.nome,60,stdin); setbuf(stdin,NULL); } printf("\nSalario do Funcionario:"); scanf("%lf",&vf.salario); setbuf(stdin,NULL); printf("\nData de nascimento:"); fgets(vf.dataNascimento,11,stdin); setbuf(stdin,NULL); printf("\nCPF:"); fgets(cp,12,stdin); setbuf(stdin,NULL); if(validarCPF(cp)==-1) strcpy(vf.cpf,cp); else{ printf("\nCPF inválido!Digite-o novamente:"); fgets(cp,12,stdin); setbuf(stdin,NULL); } printf("\n******************************************************\n"); printf("\n* Endereço *\n"); printf("\n******************************************************\n"); printf("\nRua:"); fgets(vf.rua,40,stdin); setbuf(stdin,NULL); printf("\nBairro:"); fgets(vf.bairro,30,stdin); setbuf(stdin,NULL); printf("\nNúmero:"); scanf("%li",&vf.numero); setbuf(stdin,NULL); printf("\nComplemento:"); fgets(vf.complemento,20,stdin); setbuf(stdin,NULL); printf("\nCidade:"); fgets(vf.cidade,30,stdin); setbuf(stdin,NULL); printf("\nEstado:"); fgets(vf.estado,3,stdin); setbuf(stdin,NULL); printf("\n******************************************************\n"); printf("\n* Informações de contato *\n"); printf("\n******************************************************\n"); printf("\nTelefone:"); fgets(vf.telefone,15,stdin); setbuf(stdin,NULL); printf("\nE-mail:"); fgets(vf.email,30,stdin); setbuf(stdin,NULL); printf("\nForneça o Código do departamento:"); scanf("%d",&cod); if(pesquisaDep(da,cod)==-1) strcpy(vf.cod_dep,cod); else printf("\nDepartamento inexistente!!!"); /*posicionando no final do arquivo*/ fseek(a,0,SEEK_END); fwrite(&vf,sizeof(TFuncionario),1,a); } else printf("\nMatricula de funcionario repetida!!!!"); printf("\n\nDeseja sair do cadastro? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Consultar um funcionario cadastrado*/ void consFun(FILE *a, FILE *da){ int sair,p; TFuncionario rf; do{ printf("\nForneça a matricula:"); fgets(rf.matricula,10,stdin); if(pesquisaFun(a,rf.matricula)==-1){ /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fread(&rf,sizeof(TFuncionario),1,a); printf("\n******************************************************\n"); printf("\n* Dados do Funcionario *\n"); printf("\n******************************************************\n"); printf("\nMatricula: %s",&rf.matricula); printf("\nNome: %s",&rf.nome); printf("\nSalario: %.2f",&rf.salario); printf("\nData de nascimento: %s",&rf.dataNascimento); printf("\nCPF: %s",&rf.cpf); printf("\nRua: %s",&rf.rua); printf("\nBairro: %s",&rf.bairro); printf("\nNúmero: %li",&rf.numero); printf("\nComplemento: %s",&rf.complemento); printf("\nCidade: %s",&rf.cidade); printf("\nEstado: %s",&rf.estado); printf("\nTelefone: %s",&rf.telefone); printf("\nE-mail: %s",&rf.email); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da consulta? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar os dados de um funcionario e atualizar o arquivo histfun*/ void alteracaoFun(FILE *a,FILE *da, FILE *hist){ int cod,sair,achou,data,p; char cp[11]; TFuncionario rf; TDepartamento rd; do{ printf("\n******************************************************\n"); printf("\n* Alteração de Dados do Funcionarios *\n"); printf("\n******************************************************\n"); printf("\nForneça a matricula:"); fgets(rf.matricula,10,stdin); p=pesquisaFun(a,rf.matricula); if(p==-1){ setbuf(stdin,NULL); printf("\nNome do Funcionario:"); fgets(rf.nome,60,stdin); if(rf.nome==NULL){ printf("\nO nome não pode estar vazio!!!"); fgets(rf.nome,60,stdin); } setbuf(stdin,NULL); printf("\nData de nascimento:"); fgets(rf.dataNascimento,11,stdin); setbuf(stdin,NULL); printf("\nCPF:"); fgets(cp,12,stdin); if(validarCPF(cp)==1) strcmp(rf.cpf,cp); else{ printf("\nCPF inválido!Digite-o novamente:"); fgets(cp,12,stdin); } setbuf(stdin,NULL); printf("\n******************************************************\n"); printf("\n* Endereço *\n"); printf("\n******************************************************\n"); printf("\nRua:"); fgets(rf.rua,40,stdin); setbuf(stdin,NULL); printf("\nBairro:"); fgets(rf.bairro,30,stdin); setbuf(stdin,NULL); printf("\nNúmero:"); scanf("%li",&rf.numero); setbuf(stdin,NULL); printf("\nComplemento:"); fgets(rf.complemento,20,stdin); setbuf(stdin,NULL); printf("\nCidade:"); fgets(rf.cidade,30,stdin); setbuf(stdin,NULL); printf("\nEstado:"); fgets(rf.estado,3,stdin); setbuf(stdin,NULL); printf("\n******************************************************\n"); printf("\n* Informações de contato *\n"); printf("\n******************************************************\n"); printf("\nTelefone:"); fgets(rf.telefone,15,stdin); setbuf(stdin,NULL); printf("\nE-mail:"); fgets(rf.email,30,stdin); setbuf(stdin,NULL); /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fwrite(&rf,sizeof(TFuncionario),1,a); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar o departamento do funcionario e atualizar o arquivo histdep*/ void alteracaoFunDep(FILE *a,FILE *da, FILE *hist){ int sair,p,cod,achou; TFuncionario rf; TDepartamento rd; do{ printf("\nForneça a matricula do funcionario:"); fgets(rf.matricula,10,stdin); p=pesquisaFun(a,rf.matricula); if(p==-1){ do{ setbuf(stdin,NULL); printf("\nForneça o novo departamento do funcionario:"); fgets(rf.cod_dep,60,stdin); setbuf(stdin,NULL); achou=0; if(pesquisaDep(da,rd.codigo)==1) printf("\nDepartamento não cadastrado!!!"); else achou=1; }while(achou==0); strcpy(rf.cod_dep,cod); /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fwrite(&rf,sizeof(TFuncionario),1,a); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar o salario do funcionario*/ void alteracaoSalarioFun(FILE *a,FILE *hist){ int sair,p,cod,achou; TFuncionario rf; TDepartamento rd; do{ printf("\nForneça a matricula do funcionario:"); fgets(rf.matricula,10,stdin); p=pesquisaFun(a,rf.matricula); if(p==-1){ setbuf(stdin,NULL); printf("\nForneça o novo salario do funcionario:"); scanf("%lf",&rf.salario); setbuf(stdin,NULL); /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fwrite(&rf,sizeof(TFuncionario),1,a); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } /*Alterar o salario do funcionario e atualizar o arquivo histsal*/ void alteracaoGerenteDep(FILE *da,FILE *a, FILE *hist){ int sair,p,cod,achou; TFuncionario rf; TDepartamento rd; do{ printf("\nForneça o codigo do departamento:"); scanf("%li",&rd.codigo); p=pesquisaDep(da,rd.codigo); if(p==-1){ setbuf(stdin,NULL); printf("\nForneça a matricula do novo gerente do departamento:"); scanf("%li",&rd.cod_gerente); setbuf(stdin,NULL); /*posicionando no final do arquivo*/ fseek(a,sizeof(TFuncionario)*p,SEEK_SET); fwrite(&rf,sizeof(TFuncionario),1,a); } else printf("\nMatriclua inexistente!!!"); printf("\n\nDeseja sair da alteração? 1-Sim 2-Não "); scanf("%d",&sair); }while(sair!=1); } int main(){ FILE *func; FILE *dep; FILE *histfun; FILE *histdep; FILE*histsal; int opcao; func = fopen("funcionario.dat","rb+"); dep = fopen("departamento.dat","rb+"); histfun = fopen("histfun.dat","rb+"); histdep = fopen("histdep.dat","rb+"); histsal = fopen("histsal.dat","rb+"); if (dep==NULL) dep=fopen("departamento.dat","wb+"); if (dep==NULL){ printf("\nErro na abertura do arquivo"); } else func=fopen("funcionario.dat","rb+"); if(func==NULL){ func=fopen("funcionario.dat","wb+"); } if(func==NULL){ printf("\nErro na abertura do arquivo"); } else{ histfun=fopen("histfun.dat","rb+"); } if(histfun==NULL){ histfun=fopen("histfun.dat","wb+"); } if(histfun==NULL){ printf("\nErro na abertura do arquivo"); } else{ histdep=fopen("histdep.dat","rb+"); } if(histdep==NULL){ histdep=fopen("histdep.dat","wb+"); } if(histdep==NULL){ printf("\nErro na abetura do arquivo"); } else{ histsal=fopen("histsal.dat","rb+"); } if(histsal==NULL){ histsal=fopen("histsal.dat","wb+"); } if(histsal==NULL){ printf("\nErro na abertura do arquivo"); } else do{ printf("\n******************************************************\n"); printf("\n* Controle de Funcionarios *\n"); printf("\n******************************************************\n"); printf("\n1-Cadastro de Departamentos\n2-Cadastro de Funcionarios"); printf("\n3-Consultar Funcionario"); printf("\n4-Relatorio de Funcionários por Departamento"); printf("\n5-Alterar um funcionario"); printf("\n6-Alterar Departamento de um Funcionario"); printf("\n7-Alterar Gerente de um Departamento"); printf("\n8-Gerar Folha de Pagamento"); printf("\n9-Alterar o salario de um Funcionario"); printf("\n10-Historico de Salario em um periodo"); printf("\n11-Gerentes de um Departamento"); printf("\n12-Fim\nForneça sua opção:"); scanf("%d", &opcao); switch(opcao){ case 1: cadDep(dep,func); break; case 2: cadFun(func, dep); break; case 3: consFun(func,dep); break; case 5: alteracaoFun(func,dep, histfun); break; case 6: alteracaoFunDep(func,dep,histfun); break; case 7: alteracaoGerenteDep(dep,func,histdep); case 9: alteracaoSalarioFun(func,histsal); break; } }while(opcao!=12); fclose(func); fclose(dep); fclose(histfun); fclose(histdep); fclose(histsal); return 0; }
  13. Sdd, estou precisando desenvolver uma fila de atendimento, implementar prioridade, mostar o ultimo item chamado nessa fila e colocar a saída em um arquivo txt, mas não sei como, se alguém puder comentar esse código pra eu ter como base, ficarei grato. #include <stdio.h> #include <stdlib.h> #include <locale.h> struct Node{ int num; struct Node *prox; }; typedef struct Node node; int tam; int menu(void); void opcao(node *FILA, int op); void inicia(node *FILA); int vazia(node *FILA); node *aloca(); void insere(node *FILA); node *retira(node *FILA); void exibe(node *FILA); void libera(node *FILA); int main(void) { setlocale(LC_ALL, "Portuguese"); node *FILA = (node *) malloc(sizeof(node)); if(!FILA){ printf("Sem memória!\n"); exit(1); }else{ inicia(FILA); int opc; do{ opc=menu(); opcao(FILA,opc); }while(opc); free(FILA); return 0; } } int menu(void) { int opc; printf("=========================Fila=========================\n\n"); printf("ESCOLHA UMA OPÇÃO \n"); printf("\t0. Sair\n"); printf("\t1. Zerar fila\n"); printf("\t2. Exibir fila\n"); printf("\t3. Adicionar Elemento na Fila\n"); printf("\t4. Retirar Elemento da Fila\n"); printf("\tOpção: "); scanf("%i", &opc); return opc; } void opcao(node *FILA, int op) { node *tmp; switch(op){ case 0: libera(FILA); break; case 1: libera(FILA); inicia(FILA); break; case 2: exibe(FILA); break; case 3: insere(FILA); break; case 4: tmp= retira(FILA); if(tmp != NULL){ printf("Retirado: %3d\n\n", tmp->num); free(tmp); } break; default: printf("Opção invalida\n\n"); } } void inicia(node *FILA) { FILA->prox = NULL; tam=0; } int vazia(node *FILA) { if(FILA->prox == NULL) return 1; else return 0; } node *aloca() { node *novo=(node *) malloc(sizeof(node)); if(!novo){ printf("Sem memoria disponivel!\n"); exit(1); }else{ printf("Novo elemento: "); scanf("%d", &novo->num); return novo; } } void insere(node *FILA) { node *novo=aloca(); novo->prox = NULL; if(vazia(FILA)) FILA->prox=novo; else { node *tmp = FILA->prox; while(tmp->prox != NULL) tmp = tmp->prox; tmp->prox = novo; } tam++; } node *retira(node *FILA) { if(FILA->prox == NULL){ printf("Fila já esta vazia\n"); return NULL; }else{ node *tmp = FILA->prox; FILA->prox = tmp->prox; tam--; return tmp; } } void exibe(node *FILA) { if(vazia(FILA)){ printf("Fila vazia!\n\n"); return ; } node *tmp; tmp = FILA->prox; printf("Fila :"); while( tmp != NULL){ printf("%5d", tmp->num); tmp = tmp->prox; } printf("\n "); int count; for(count=0 ; count < tam ; count++) printf(" ^ "); printf("\nOrdem:"); for(count=0 ; count < tam ; count++) printf("%5d", count+1); printf("\n\n"); } void libera(node *FILA) { if(!vazia(FILA)){ node *proxNode, *atual; atual = FILA->prox; while(atual != NULL){ proxNode = atual->prox; free(atual); atual = proxNode; } } }
  14. O enunciado completo: /****************************************************************************** Considere o seguinte código que gera todos os números de 0000 a 'a' Refaça o programa utilizando vetores com o valor maximo 20000 Remova os duplicados e mostre quantos números foram apresentados O resultado deverá ser 0000 .(...). 1111 Foram mostrados .(...). números *******************************************************************************/ #include <stdio.h> int main() { int i, j, k, w, h, a = 1; for (i = 0; i <= a; i++) for (j = 0; j <= a; j++) for (k = 0; k <= a; k++) for (w = 0; w <= a; w++) for (h = 0; h <= a; h++) printf ("%d%d%d%d\t", i, j, k, w, h); } Alguém que me possa ajudar, não estou a conseguir avançar, obrigado Joana
  15. Me ajudem por favor ! Ingressei na programação a pouco tempo e tenho que terminar essa atividade pra amanhã. Mas tem essa questão que eu to travado: "Desenvolva um código que leia um número inteiro x e, se x>1 mostre a soma dos múltiplos de 5 no intervalo de 1 a x." Eu com a ajuda da internet consegui fazer o código, mas não o que a questão pede. Mas acho que estou no caminho. Aqui está o código: # include<stdio.h> # include<stdlib.h> //Desenvolva um código que leia um número inteiro n e, se n>1 mostre a soma dos múltiplos de 5 no intervalo de 1 a n. main() { //Inicio do programa int soma; int n; soma = 0; printf("Digite um numero inteiro positivo"); scanf("%d", &n); for(n=100;n<200;n++) { if (n % 5 == 0) { soma = soma + n; //Soma os múltiplos de 5 } } printf("\nA soma é %d \n\n",soma); system("pause"); return 0; } //Fim do programa Pf me ajudem a fazer o código de forma que o enunciado pede ! 
  16. Boa tarde! Preciso para essa semana fazer o desenvolvimento de um código de bilheteria de um teatro e não estou conseguindo, alguém poderia me ajudar, já pesquisei em muito fóruns e ninguém me ajuda. #include <stdio.h> #include <stdlib.h> int main(){ int CAD[30][60]; int opcao,total,quant,q; int i; int j; for(i=0;i<=30;i++){ for(j=0;j<=60;j++){ CAD[i][j]=0; } } do{ printf("********** SEJA BEM-VINDO(A) AO TEATRO AURORA! **********"); printf("\n\n"); printf("1 - Ver Assentos Disponiveis\n"); printf("2 - Comprar Ingressos\n"); printf("3 - Cancelar Ingresso\n"); printf("4 - Faturar\n"); printf("5 - Encerrar o Sistema\n"); printf("\n"); printf("Comando: "); scanf("%d", &opcao); printf("\n"); switch(opcao){ case 1: for(i=0;i<=30;i++){ for(j=0;j<=60;j++){ if(CAD[i][j]==1){ printf("\nAssentos Ocupados: [%d][%d]", i, j); }else{ printf("\nNenhum assento ocupado!\n"); } } } break; case 2: for(i=0;i<=30;i++){ for(j=0;j<=60;j++){ printf("\nFila: "); scanf("%d", &i); printf("\nAssento: "); scanf("%d", &j); if(CAD[i][j]==0){ printf("\nAssento reservado com sucesso!\n"); CAD[i][j]=1; main(); }else{ printf("\nAssento ocupado!"); main(); } } } break; case 3: break; case 4: break; } }while(opcao!=5); system("pause"); return 0; }
  17. Alguém pode me dar uma força aqui em 1 programa no qual estou fazendo para minha faculdade? Estamos fazendo 1 sistema simples de registro de pessoas dentro de uma palestra... Porem estamos com problemas na hora de ler os dados dentro do bloco de notas. (Observação: Só esta salvo em C++ por conta de funções de cor que colocamos, POREM as funções usadas devem ser em C apenas C [Normas do professor]) Problemas: Linha 91: Ler dentro do bloco de notas para que não tenha 2 CPF's iguais... Teria que fazer 1 verificação, se possuir 1 CPF já cadastrado, envia uma mensagem de erro. Linha 300: Fazer a mesma verificação que o de cima... Não pode haver 2 pessoas sentadas no mesmo lugar. Se possuir uma pessoa sentada naquela cadeira, a cadeira deve ficar vermelha. Caso contrario ela ficará verde. #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <locale.h> #include <conio.h> #include <time.h> // Sera usado para verificação de caracteres / strings #include <string.h> // Habilita função SetConsoleTextAttribute() #include <windows.h> // COR BRANCA | NOME DO ARQUIVO.TXT #define COR_PRINCIPAL 15 #define BLOCO_DE_NOTAS "Cadastro.txt" // Struct Principal de cadastro do palestrante typedef struct { char nome[50], email[30], cpf[15]; int cadeira[15][10]; bool deficiencia; } Palestrante ; // Struct de tempo struct tm agora_data= {0}; time_t tempo_data; // Definir o valor x a struct Palestrante Palestrante x; // Função base para alterar cor de caractere HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // Citando funções void registro(); void representacao(); void checkPeaple(); void cadeiras(); // Criando ponteiro de memoria FILE * arq; int op, op2; int main(){ setlocale(LC_ALL, "Portuguese"); char op; SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); representacao(); scanf("%s", &op); switch(op){ case '1': registro(); break; case '2': printf("\nComando ainda não cadastrado."); getch(); system("cls"); main(); break; case '3': checkPeaple(); break; case '4': exit(0); break; default: printf("\nComando inexistente.\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); system("pause"); system("cls"); main(); break; } } void registro(){ // Armazenar o NOME printf("\n- Digite o primeiro Nome: "); fflush(stdin); scanf("%[^\n]s", x.nome, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY)); // Armazenar o E-MAIL printf("- Digite o E-Mail: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); scanf("%s", &x.email, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY)); // Armazenar o CPF printf("- Digite o CPF [Apenas numeros]: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); scanf("%s", &x.cpf, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY)); char info[50]; arq = fopen(BLOCO_DE_NOTAS, "r"); if(arq == NULL) printf("Erro, não foi possivel abrir o arquivo\n"); else while( (fgets(info, sizeof(info), arq))!=NULL ) if (!(strcmp(x.cpf, info))) { printf("%s", info); } fclose(arq); // Armazenar a deficiencia int def; printf("- Possui deficiencia [1 or 0]: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); scanf("%d", &def, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY)); if (def == 1) { x.deficiencia = true; }else if (def == 0) { x.deficiencia = false; }else{ printf("\nComando inexistente.\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); system("pause"); system("cls"); representacao(); printf("\n"); registro(); } // Chamando a função de apresentação das cadeiras // 8 x 15 [8 linhas - 15 fileiras - 120 acentos] SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); cadeiras(); // Printar dados digitados printf("\n\n.----------------------------------------.\n"); printf("| Nome: "); printf("%s\n", x.nome, SetConsoleTextAttribute(hConsole, 3)); printf("| Email: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); printf("%s\n", x.email, SetConsoleTextAttribute(hConsole, 3)); printf("| CPF: ",SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); printf("%s\n", x.cpf, SetConsoleTextAttribute(hConsole, 3)); printf("| Possui deficiencia: [",SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); if (x.deficiencia == true) { printf("%s", x.deficiencia ? "true" : "false", SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY)); printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); }else{ printf("%s", x.deficiencia ? "true" : "false", SetConsoleTextAttribute(hConsole, 12)); printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); } // Variaveis globais usadas em diversas funções int i, f; printf("\n| Assento selecionado: "); for (i = 0; i < 15; i++){ for (f = 0; f < 8; f++){ if (x.cadeira[i][f] == op) { printf("%i", op, SetConsoleTextAttribute(hConsole, 3)); } } } // Selecionando data e horario de cadastro time(&tempo_data); agora_data = *localtime(&tempo_data); printf("\n| Horario de cadastro: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); printf("[%.2d:%.2d]", agora_data.tm_hour, agora_data.tm_min, SetConsoleTextAttribute(hConsole, 3 | FOREGROUND_INTENSITY)); printf("\n| Data de cadastro: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); printf("[%.2d:%.2d:%d]", agora_data.tm_mday, agora_data.tm_mon+1, agora_data.tm_year+1900, SetConsoleTextAttribute(hConsole, 3 | FOREGROUND_INTENSITY)); printf("\n*----------------------------------------*",SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); // Editar dados int edit; printf("\n\n- [0. Cancelar | 1. Editar | 2. Armazenar]: "); scanf("%i", &edit); if (edit == 2) { // Armazenar no BLOCO DE NOTAS arq = fopen(BLOCO_DE_NOTAS, "a"); if (arq == NULL) { printf("Não foi possivel abrir o arquivo.", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); exit(0); } fprintf(arq, "%s %s %s %s %i [%.2d:%.2d] [%.2d:%.2d:%d]\n", x.nome, x.email, x.cpf, x.deficiencia ? "true" : "false", op, agora_data.tm_hour, agora_data.tm_min, agora_data.tm_mday, agora_data.tm_mon+1, agora_data.tm_year+1900); printf("- Dado armazenado -\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN)); SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); fclose(arq); system("pause"); system("cls"); main(); }else if (edit == 1) { system("cls"); representacao(); printf("\n"); registro(); }else if (edit == 0) { system("cls"); main(); }else{ printf("\nComando inexistente.\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); system("pause"); system("cls"); representacao(); printf("\n"); registro(); } } // Apenas apresentação da tela principal void representacao(){ printf("\n\t[SYSTEM] Palestra\n\n.-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-.\n"); printf("| 1. Register |\n"); printf("| 2. Delete |\n"); printf("| 3. Check People |\n"); printf("| 4. Exit |\n"); printf("*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\n\nSua Escolha: "); } // Checkando pessoas [Pesquisa de pessoas {DENTRO DO BLOCO_DE_NOTAS}] void checkPeaple(){ printf("\n. [NOME] [EMAIL] [CPF] [DEFICIENCIA] [ASSENTO] [HORARIO] [DATA] .\n", SetConsoleTextAttribute(hConsole, 14 | FOREGROUND_INTENSITY)); SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); arq = fopen(BLOCO_DE_NOTAS, "r"); if (arq == NULL) { printf("Não foi possivel abrir o arquivo.\n\n", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); system("pause"); exit(0); } char frase[5000]; printf("\n"); while(fgets(frase, 5000, arq) != NULL) { printf("%s", frase); } char ch; int num = 0; arq = fopen(BLOCO_DE_NOTAS, "r"); if(arq == NULL) printf("Erro, não foi possivel abrir o arquivo\n"); else while( (ch=fgetc(arq))!= EOF ) if(ch == '\n') num++; printf("\n. Existem [%d] pessoas cadastradas .\n", num, SetConsoleTextAttribute(hConsole, 13 | FOREGROUND_INTENSITY)); SetConsoleTextAttribute(hConsole, COR_PRINCIPAL); fclose(arq); fclose(arq); printf("\n"); getch(); system("cls"); main(); } // Apresentação das cadeiras void cadeiras(){ int i, f, incremento = 0; printf("\n .-----------------------------------------------."); for (i = 0; i < 15; i++){ printf("\n | ", i+1); for (f = 0; f < 8; f++){ incremento++; x.cadeira[i][f] = incremento; if ((x.cadeira[i][f] == 5) || (x.cadeira[i][f] == 5 + 8*i)){ printf(" "); printf(" ", SetConsoleTextAttribute(hConsole, 70)); printf(" ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); } if ((x.cadeira[i][f] >= 1) && (x.cadeira[i][f]) <= 16){ printf("["); printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY)); printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); if ((x.cadeira[i][f] % 8) == 0) { printf(" |"); } continue; } printf("["); printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY)); printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); if ((x.cadeira[i][f] % 8) == 0) { printf(" |"); } } } printf("\n *--------------------| |--------------------*"); if (x.deficiencia == true) { printf("\n\n[*] Você tem acesso aos acentos "); printf("amarelos", SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY)); printf(".", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); }else{ printf("\n\n[*] Você "); printf("NÃO ", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); printf("tem acesso aos acentos ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); printf("amarelos", SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY)); printf(".", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); } printf("\n\nDigite o cadeira que deseja: "); scanf("%i", &op); if (op > 120) { printf("\n[-] "); printf("Não", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); printf(" existe cadeira com essa numeração no auditório.\n\n", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); getch(); system("cls"); representacao(); printf("\n"); registro(); } if (x.deficiencia == false) { for (i = 0; i < 15; i++){ for (f = 0; f < 8; f++){ if ((op >= 1) && (op <= 16)) { printf("\nVocê "); printf("NÃO", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); printf(" pode escolher essa cadeira.", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); getch(); system("cls"); representacao(); printf("\n"); registro(); } } } } } // Cadeira vermelha ao cadastrar void cadeiraCadastrada(){ int i, f, incremento = 0; printf("\n .-----------------------------------------------."); for (i = 0; i < 15; i++){ printf("\n | ", i+1); for (f = 0; f < 10; f++){ if (x.cadeira[i][f] == x.cadeira[op-1][op2-1]){ printf("["); printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY)); printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); }else if ((x.cadeira[i][f] >= 1) && (x.cadeira[i][f]) <= 20){ printf("["); printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY)); printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); }else{ printf("["); printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY)); printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL)); } } } printf("\n *--------------------| |--------------------*"); } Gente se alguém puder por favor me ajudar nessas coisas, ficarei muito grato !
  18. Estou precisando converter a linguagem portugol para C, alguém poderia me ajudar a resolver esses exercicios na linguagem C?
  19. Olá, sou estudante do primeiro semestre em analise e desenvolvimento de sistemas. Minha dúvida é a seguinte: Como faço para testar se o user escreveu caracteres onde era para escrever apenas números? #include <stdio.h> main(){ int n_value=0, n2_value=0; printf("Escreva um valor positivo: \n"); do{ scanf("%d", &n_value); if(n_value <= 0){ printf("O valor deve ser positivo! \n"); } else if (n_value = *AQUI É ONDE QUERO TESTAR* ){ printf("Apenas numeros são aceitos! \n"); } } while (n_value <= 0); } Essa parte do código é para receber um valor e repetir o loop até que o user entre com um valor positivo. Quero que, caso ele escreva uma letra, meu programa apresente a mensagem "Apenas numeros são aceitos".
  20. Não consigo imprimir os valores que foram digitados pelo ponteiro, já tentei de tudo e continuam aparecendo esses valores que não foram digitados, segue a parte do código que não estou conseguindo resolver: printf("\nNumeros digitados: \n"); for (x = 0; x < limite; x++) { printf("%d ", (*pont + x)); } o código completo: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main(){ int *pont; int limite, soma = 0, x; printf("Digite a quantidade de numeros que desejas armazenar: "); scanf("%d",&limite); pont = (int*)malloc(limite * sizeof(int)); if (pont == NULL) { printf("Memoria insuficiente para armazenar estes numeros."); system("pause"); return 0; } printf("\nDigite os %d numeros desejados \n", limite); for (x = 0; x < limite; x++) { printf("Digite o %d numero: ", x+1); scanf("%d", (pont + 1)); soma += *(pont + 1); } printf("\nNumeros digitados: \n"); for (x = 0; x < limite; x++) { printf("%d ", (*pont + x)); } printf("\n\nSoma dos numeros armazenados: %d \n", soma); system("pause"); return 0; }
  21. Boa noite, estou tentando desenvolver um programa q esta linkado com banco de dados mysql, eu gostaria de saber como eu faço para exibir o resultado desta pesquisa no meu programa em C: select tb_aluno_nome from tb_aluno where tb_aluno_rg = '999999999', no caso eu quero que o nome seja armazenado em uma variável e depois exibir ela.
  22. Como posso escrever um código, em c, que ao utilizar o operador '<' na linha de comandos [ex: .\ex1.exe < evento.txt] teria como resultado no standard output o ficheiro '.txt' lido pela ordem inversa?
  23. Olá pessoal, acabei de me cadastrar, então desculpe por algum erro.. Tenho de fazer um exercício em C, onde devo fazer uma agenda de dados e salvá-los em disco. Mas o meu único problema é que não sei como eu faço para conseguir pesquisar por nome as informações em um arquivo salvo em disco, no caso arquivo.txt Meu programa está assim: ------ #include<stdlib.h> #include<stdio.h> #include<conio.h> #include<string.h> #include<time.h> #include<ctype.h> struct dados { char nome[40], rg[30], telefone[10], estadocivil[40]; }; int main() { int menu, quant, quant1; char pesquisa[40]; struct dados func; FILE *agenda; agenda = fopen("agenda.txt", "at"); if (agenda == NULL) { printf("Não foi possível abrir o arquivo"); return 0; } do { printf("----------------------------------------------------------------------\n1-Consultar cliente;\n2-Cadastrar cliente;\n3-SAIR;\n\n"); scanf("%d", &menu); system("cls"); switch (menu) { case 1: printf("Digite o nome de quem deseja consultar: \n"); scanf("%s", &pesquisa); break; ----------- Não tenho a mínima ideia de como faço o item 1... os outros eu já me virei. Obs..: Não faz nem 1 mês direito que comecei a aprender a programar em C, então desculpem qualquer coisa. Pesquisei no site sobre a mesma dúvida, mas as respostas que vi não me ajudaram. Programa: Dev C++
  24. Me ajudem com isso ai: Escreva um programa que leia um caracter digitado pelo usuário, imprima o caracter digitado e o código ASCII correspondente a este caracter. Sou iniciante e tou com dificuldades e não sei oque fazer me ajudem por favor !
  25. Escreva um programa que receba a data de nascimento dia mês e ano e o nome de um numero n de pessoas sendo n informado pelo usuário. Para cada data de nascimento lida determine a diferença de idade entre você e a pessoa, exiba uma mensagem informando se ela é mais velha ou Mais nova, e exiba a diferença de idade no formato ano mês e dia. Por fim exiba os nomes e as idade em ordens crescentes incluindo você.
×
×
  • Criar Novo...