Pesquisar na Comunidade
Mostrando resultados para as tags ''C ''.
Encontrado 475 registros
-
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 :)
-
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?
-
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); }
-
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; }
-
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
-
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; }
-
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; }
-
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; ... } }
-
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; }
-
- c++
- função cadastro
-
(e %d mais)
Tags:
-
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"); }
-
c Ajuda com a parte de alteração dos dados
uma questão postou Matheus William Tutoriais & Dicas - C, C++
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; } -
Controle de funcionários(erro na gravação de dados)
uma questão postou Matheus William Grupo de Estudos
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; } -
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; } } }
-
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
-
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 !
-
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; }
-
- dev c++
- bilheteria
- (e %d mais)
-
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 !
-
- bloco de notas
- dados
-
(e %d mais)
Tags:
-
Estou precisando converter a linguagem portugol para C, alguém poderia me ajudar a resolver esses exercicios na linguagem C?
-
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".
- 1 resposta
-
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; }
-
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.
-
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?
-
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++
- 3 respostas
-
- ponteiro
- arquivo.txt
- (e %d mais)
-
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 !
-
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ê.