Ir ao conteúdo
  • Cadastre-se

Intruder18

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

Tudo que Intruder18 postou

  1. @vangodp Eu estava lendo agora mesmo o link que você postou anteriormente, muita coisa me ajudou! Fiquei com dúvida sobre o uso do get e fgets, sempre leio string com eles, e pelo que notei eles armazenam o \n, dessa forma não fica lixo no buffet, seguindo esse raciocinio não tem necessidade de limpar, estou certo?
  2. Bacana pessoal, estou desenrolando bem aqui com as dicas de vocês.. Estou dando uma lida nos tópicos do forum também. Ah, qual a diferença de fflush(stdin) e fflush-in ?
  3. @vangodp estou depurando o seu código tentando entender o que você fez, confesso que desconheço alguns dos termos utilizados por vocês.. O um deles foi ler o nome atráves do "scanf("%50[^\n]%*c", nome);"
  4. @isrnick A Edição funciona sim! Mas o while ainda continua com o erro que mencionei anteriormente: Aqui mostra a lista antes da edição: Status: 1 Nome: Edson CPF: 041 -------------------- Status: 1 Nome: Thais CPF: 042 -------------------- e aqui mostra a lista após a edição: Status: 1 Nome: Edson Júnior CPF: 041 -------------------- Status: 1 Nome: Thais CPF: 042 -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Status: 0 Nome: CPF: -------------------- Perceba que alterar "Edson" para "Edso Junior", porém foi armazenado no arquivo esses Status: 0 com as variaveis vazias:
  5. @vangodp Quando eu peço para editar alguma informação, o programa edita normalmente, mas enche o arquivo com duplicações vazias.. Vou postar o programa todo e faça um teste, cadastre dois contatos usando a opção 1, depois liste os contatos usando a opção dois, por fim teste a opção 3 para editar. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <locale.h> typedef struct contato CONTATO; struct contato { int ativo; char nome[50]; char cpf[30] }; void cadastrar(); void listar(); void editar(); //VARIAVEL UNIVERSAL FILE *arquivo; CONTATO ctt; int op; int main(void) { setlocale(LC_ALL, "Portuguese"); do { system("cls"); printf("\n1 - Cadastrar"); printf("\n2 - Listar"); printf("\n3 - Editar"); printf("\n0 - Sair\n\n"); printf("Digite uma opção: "); scanf("%d", &op); switch(op) { case 1: cadastrar(); break; case 2: listar(); break; case 3: editar(); break; case 0: break; default: printf("Opção Inválida!"); break; } }while(op!=0); } void cadastrar() { do { arquivo = fopen("base.txt","a+b"); system("cls"); fflush(stdin); printf("Nome: "); gets(ctt.nome); fflush(stdin); printf("CPF: "); gets(ctt.cpf); ctt.ativo = 1; fwrite(&ctt, sizeof(CONTATO),1,arquivo); fclose(arquivo); printf("Deseja realizar novo Cadastro (s/n)?"); }while(getche()=='s'); } void listar() { system("cls"); arquivo = fopen("base.txt","rb"); while(fread(&ctt,sizeof(CONTATO),1,arquivo)==1) { printf("Status: %d\n", ctt.ativo); printf("Nome: %s\n",ctt.nome); printf("CPF: %s\n",ctt.cpf); printf("--------------------\n\n"); } fclose(arquivo); getch(); } void editar() { int posicao = 0; // Inicio do Arquivo; int achou = 0; char AltCpf[30]; char AltNome[50]; fflush(stdin); printf("Digite o CPF"); gets(AltCpf); arquivo = fopen("base.txt","r+b"); fseek(arquivo, posicao, SEEK_SET); system("cls"); while(fread(&ctt, sizeof(CONTATO), 1, arquivo)==1) { if(strcmp(AltCpf,ctt.cpf)==0) { printf("\n1 - Nome: %s",ctt.nome); printf("\n2 - CPF: %s",ctt.cpf); printf("\n0 - Voltar"); printf("\n-------------\n\n"); printf("\n\nEscolha uma opção: "); scanf("%d", &op); switch(op) { case 1: fflush(stdin); printf("Digite o Novo nome: "); gets(ctt.nome); fseek(arquivo, posicao, SEEK_SET); achou= fwrite(&ctt,sizeof(CONTATO),1,arquivo) == sizeof(CONTATO); // ajustar posicao em relação ao inicio do arquivo posicao = posicao + sizeof(CONTATO); break; case 2: fflush(stdin); printf("Digite o novo CPF: "); gets(ctt.cpf); fseek(arquivo, posicao, SEEK_SET); achou= fwrite(&ctt,sizeof(CONTATO),1,arquivo) == sizeof(CONTATO); // ajustar posicao em relação ao inicio do arquivo posicao = posicao + sizeof(CONTATO); break; case 0: main(); break; default: printf("\nOpção Inválida!"); break; } } } fclose(arquivo); }
  6. Estou tentando da seguinte forma: Mas aparentemente estou com problemas com o while: void editar() { int posicao = 0; // Inicio do Arquivo; int achou = 0; char AltCpf[30]; char AltNome[50]; fflush(stdin); printf("Digite o CPF"); gets(AltCpf); arquivo = fopen("base.txt","r+b"); fseek(arquivo, posicao, SEEK_SET); system("cls"); while(fread(&ctt, sizeof(CONTATO), 1, arquivo)==1) { if(strcmp(AltCpf,ctt.cpf)==0) { printf("\n1 - Nome: %s",ctt.nome); printf("\n2 - CPF: %s",ctt.cpf); printf("\n0 - Voltar"); printf("\n-------------\n\n"); printf("\n\nEscolha uma opção: "); scanf("%d", &op); switch(op) { case 1: fflush(stdin); printf("Digite o Novo nome: "); gets(ctt.nome); fseek(arquivo, posicao, SEEK_SET); achou= fwrite(&ctt,sizeof(CONTATO),1,arquivo) == sizeof(CONTATO); // ajustar posicao em relação ao inicio do arquivo posicao = posicao + sizeof(CONTATO); break; case 2: fflush(stdin); printf("Digite o novo CPF: "); gets(ctt.AltCpf); fseek(arquivo, posicao, SEEK_SET); achou= fwrite(&ctt,sizeof(CONTATO),1,arquivo) == sizeof(CONTATO); // ajustar posicao em relação ao inicio do arquivo posicao = posicao + sizeof(CONTATO); break; case 0: main(); break; default: printf("\nOpção Inválida!"); break; } } } fclose(arquivo); }
  7. Está complicado rapaziada, não consegui entender a lógica pra conseguir excluir o resgistro do arquivo. Alguém consegue me dar um help?
  8. @Mauro Britivaldo Cada dia aprendendo um pouquinho! Struct é um pouco complexa, vi várias formas de declarar ela, estou me adaptando a melhor forma;
  9. @isrnick Entendi a teoria do que você disse, mas não sei usar a função fseek, poderia me dizer como isso ficaria na pratica?
  10. Entendo amingo, mas ao invés de usar a struct eu poderia criar um vetor com Filme[100],genero[100],ano[100] e lista-los atraves de um indice...
  11. Bom Dia Pessoal, Estou criando um pequeno programa para cadastro de alunos e notas, Já finalizei toda a estrutura de cadastro, listagem dos alunos cadastrados e a pesquisa por nome dos alunos, mas a estrutura de excluir algum registro já criado me deixou sem saída, não consegui aplicar nenhuma solução lógica para corrigir o problema. Alguém conseguiria me ajudar de alguma forma? Segue abaixo o código: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> typedef struct { char nome[50]; float notas[4]; int ativo; int matricula; }Aluno; Aluno ctt; char c; int op; void cabecalho(); void inserir(); void excluir(); void pesquisar(); void listar(); int main(void) { do { cabecalho(); printf("\n1 - Incluir"); printf("\n2 - Excluir"); printf("\n3 - Pesquisar"); printf("\n4 - Listar Todos"); printf("\n0 - Sair\n\n"); printf("Escolha uma opção: "); scanf("%d", &op); switch(op) { case 1: inserir(); break; case 2: excluir(); break; case 3: pesquisar(); break; case 4: listar(); break; case 0: printf("Obrigado pela visita!"); break; default: printf("Opção Inválida"); break; } }while(op!=0); } void cabecalho() { system("cls"); printf("###########################################\n"); printf("# PROGRAMA PARA CADASTRO DE NOTAS #\n"); printf("###########################################\n\n"); } void inserir() { int matricula=1; FILE *arq; arq = fopen("Alunos.txt","ab"); if(arq==NULL) { printf("Error!"); exit(1); } else { do { cabecalho(); ctt.ativo=1; ctt.matricula++; fflush(stdin); printf("Digite o nome: "); gets(ctt.nome); printf("1 - Bimestre: "); scanf("%f", &ctt.notas[0]); printf("2 - Bimestre: "); scanf("%f", &ctt.notas[1]); printf("3 - Bimestre: "); scanf("%f", &ctt.notas[2]); printf("4 - Bimestre: "); scanf("%f", &ctt.notas[3]); fwrite(&ctt,sizeof(Aluno),1,arq); printf("Deseja Cadastrar novo Aluno (s/n)"); }while(getche() =='s'); getchar(); } fclose(arq); } void excluir() { int matriculaP; FILE *arq; arq = fopen("Alunos.txt","a+b"); if(arq==NULL) { printf("Error!"); exit(1); } else { do { cabecalho(); fflush(stdin); printf("\nDigite a matricula a ser pesquisada: "); scanf("%d", &matriculaP); printf("Deseja Fazer nova consulta (s/n)?"); }while(getche()=='s'); getchar(); } fclose(arq); } void pesquisar() { char nomeP[50]; int i; FILE *arq; arq = fopen("Alunos.txt","rb"); if(arq==NULL) { printf("Error!"); exit(1); } else { do { cabecalho(); fflush(stdin); printf("\nDigite o nome a ser pesquisado: "); gets(nomeP); fread(&ctt,sizeof(Aluno),1,arq)==1; if(strcmp(nomeP,ctt.nome)==0) { printf("\n\nStatus: %d",ctt.ativo); if(ctt.ativo == 1) { printf(" - Ativo"); } else { printf(" - Inativo"); } printf("\nMatricula: %d", ctt.matricula); printf("\nNome: %s", ctt.nome); for(i=0;i<4;i++) { printf("\n%d - Bimestre: %f",i+1, ctt.notas[i]); } printf("\n----------------\n\n"); } else { printf("\nNome não encontrado!\n\n"); } printf("Deseja Fazer nova consulta (s/n)?"); }while(getche()=='s'); getchar(); } fclose(arq); } void listar() { cabecalho(); int i; int j=1; FILE *arq; arq = fopen("Alunos.txt","rb"); if(arq==NULL) { printf("Error!"); exit(1); } else { while(fread(&ctt,sizeof(Aluno),1,arq)==1) { if(ctt.ativo == 1) { printf("\nMatricula: %d", ctt.matricula); printf("\nNome: %s", ctt.nome); for(i=0;i<4;i++) { printf("\n%d - Bimestre: %f",i+1, ctt.notas[i]); } printf("\n----------------\n\n"); } }; } fclose(arq); getch(); }
  12. Fala Pessoal! Eu mais uma vez aqui para aprender um pouco mais com meus colegas programadores! Desse vez estou aprendendo um pouco sobre structs e me surgiram algumas dúvidas. Não consegui entender a lógica de declarar uma struct da forma abaixo se podemos apenas declarar as variaveis isoloadas de uma forma mais fácil. abaixo uma struct declarada: typedef struct Aluno ALUNO; struct Aluno { char nome[50]; int notas[4]; }; Porque apenas não declarar as váriaveis sem essa estrutura do structs? char nome[50]; int notas[4]; Me perdoem a ignorância, mas estou tentando aprender tecnicas um pouco mais avançadas.
  13. Excelente vou ler. A questão a) ficou bem clara.
  14. Mauro, está ficando mais claro sim... Sua didática é excelente. Pode me esclarecer a utilização do comando unsigned para declarar as variáveis?
  15. Não conheço essa estrutura, vou pesquisar sim. Agradeço a atenção e apoio.
  16. Não sei, deu um bug na minha cabeça. Se puder rode o programa, usei a lógica que você disse mas o valores trazem 0, nos dados inseridos pelo usuario coloquei 2 times e 2 jogadores, as idades fora 10 e 9 do time1 e 20 e 19 do time 2, ainda criei uma condição para testar a soma das idades, mas traz 0. #include <stdio.h> #include <stdlib.h> int main() { int qtdT=0,qtdJ=0,t,j,contidmenor=0,contid100=0; float mediaid[qtdJ],somaid[qtdJ],idade[qtdJ],altura[qtdJ]; float alturatotal=0,mediaaltura=0,peso,contpeso=0,percpeso=0,pesototal,mediaid100=0,somaid100=0; somaid[qtdJ] = 0; mediaid[qtdJ] = 0; printf("Digite a Qtd de Times: "); scanf("%d", &qtdT); printf("Digite a Qtd de Jogadores: "); scanf("%d", &qtdJ); for (t=1;t<=qtdT;t++) { printf("\n\t***Time%i***\n",t); for(j=1;j<=qtdJ;j++) { //Digite a idade do Jogador printf("Digite a idade do jogador%d: ", j); scanf("%f", &idade[j]); if (idade[j]<18) { contidmenor++; } somaid[j] = somaid[j] + idade[j]; mediaid[j] = somaid[j] /qtdJ; /* //Digite a altura do Jogador printf("Digite a altura do jogador%d: ", j); scanf("%f", &altura[j]); alturatotal = alturatotal + altura[j]; //Digite o peso do jogador printf("Digite o peso do jogador: ", j); scanf("%f", &peso); if (peso < 80) { contpeso++; } if (peso > 100) { somaid100 = somaid100 + idade[j]; contid100++; } */ } } mediaaltura = alturatotal / (qtdT*qtdJ); percpeso = (contpeso /(qtdT * qtdJ))*100; mediaid100 = somaid100 / contid100; printf("\nJogadores com idade inferior a 18 anos: %d\n",contidmenor); for (j=1;j<=qtdT;j++) { printf("Soma idade time%d: %.1f\n",j,somaid); } for(j=1;j<=qtdT;j++) { printf("Media Idade Time%i: %.2f\n",j,mediaid[j]); } printf("Alturas de todos os jogadores do campeonato: %.2f\n", mediaaltura); printf("Percentagem de jogadores com mais de 80 Kg: %2.f%%\n", percpeso); printf("Média de idade dos jogadores com peso acima de 100 Kg: %.1", mediaid100); adicionado 0 minutos depois @Math.Pi Não sei, deu um bug na minha cabeça. Se puder rode o programa, usei a lógica que você disse mas o valores trazem 0, nos dados inseridos pelo usuario coloquei 2 times e 2 jogadores, as idades fora 10 e 9 do time1 e 20 e 19 do time 2, ainda criei uma condição para testar a soma das idades, mas traz 0. #include <stdio.h> #include <stdlib.h> int main() { int qtdT=0,qtdJ=0,t,j,contidmenor=0,contid100=0; float mediaid[qtdJ],somaid[qtdJ],idade[qtdJ],altura[qtdJ]; float alturatotal=0,mediaaltura=0,peso,contpeso=0,percpeso=0,pesototal,mediaid100=0,somaid100=0; somaid[qtdJ] = 0; mediaid[qtdJ] = 0; printf("Digite a Qtd de Times: "); scanf("%d", &qtdT); printf("Digite a Qtd de Jogadores: "); scanf("%d", &qtdJ); for (t=1;t<=qtdT;t++) { printf("\n\t***Time%i***\n",t); for(j=1;j<=qtdJ;j++) { //Digite a idade do Jogador printf("Digite a idade do jogador%d: ", j); scanf("%f", &idade[j]); if (idade[j]<18) { contidmenor++; } somaid[j] = somaid[j] + idade[j]; mediaid[j] = somaid[j] /qtdJ; /* //Digite a altura do Jogador printf("Digite a altura do jogador%d: ", j); scanf("%f", &altura[j]); alturatotal = alturatotal + altura[j]; //Digite o peso do jogador printf("Digite o peso do jogador: ", j); scanf("%f", &peso); if (peso < 80) { contpeso++; } if (peso > 100) { somaid100 = somaid100 + idade[j]; contid100++; } */ } } mediaaltura = alturatotal / (qtdT*qtdJ); percpeso = (contpeso /(qtdT * qtdJ))*100; mediaid100 = somaid100 / contid100; printf("\nJogadores com idade inferior a 18 anos: %d\n",contidmenor); for (j=1;j<=qtdT;j++) { printf("Soma idade time%d: %.1f\n",j,somaid); } for(j=1;j<=qtdT;j++) { printf("Media Idade Time%i: %.2f\n",j,mediaid[j]); } printf("Alturas de todos os jogadores do campeonato: %.2f\n", mediaaltura); printf("Percentagem de jogadores com mais de 80 Kg: %2.f%%\n", percpeso); printf("Média de idade dos jogadores com peso acima de 100 Kg: %.1", mediaid100);
  17. Bom dia pessoal, estou iniciando vetores em C, já fiz diversos exercícios para um melhor aprendizado, porém me deparei com um exercício que me falta experiência para sua resulução. Segue o exercício: "Em um campeonato de futebol existem x times e para cada tipo, existem y jogadores. Faça um programa que receba: o valor de x e de y, a idade, o peso e a altura de cada um dos jogadores, calcule e mostre: a) a quantidade de jogadores com idade inferior a 18 anos; a média das idades dos jogadores de cada time; c) a média das alturas de todos os jogadores do campeonato; d) a percentagem de jogadores com mais de 80 Kg entre todos os jogadores do campeonato; e) a média de idade dos jogadores com peso acima de 100 Kg." Parei na letra B, tirar a média de idade dos jogadores por de cada time, utilizei dois For para isso, meu problema é que a quantidade de times e jogadores são fornecidas pelo usuario, e não consigo tirar a média, tentei da seguinte maneira media = media + idade ; Porém como está dentro do for não traz o valor real... Conseguem me ajudar da resolução do mesmo? Segue parte do código feito até agora: #include <stdio.h> #include <stdlib.h> int main() { int qtdT=0,qtdJ=0,t,j,contidmenor=0; float mediaid[qtdJ],somaid[qtdJ],idade[qtdJ]; mediaid[qtdJ] = 0; printf("Digite a Qtd de Times: "); scanf("%d", &qtdT); printf("Digite a Qtd de Jogadores: "); scanf("%d", &qtdJ); for (t=1;t<=qtdT;t++) { printf("\n\t***Time%i***\n",t); for(j=1;j<=qtdJ;j++) { printf("Digite a idade do jogador%d: ", j); scanf("%f", &idade[j]); if (idade[j]<18) { contidmenor++; } mediaid[j] = (mediaid[j] + idade[j])/qtdJ; } } printf("\nJogadores com idade inferior a 18 anos: %d\n",contidmenor); for(j=1;j<=qtdT;j++) { printf("Media Idade Time%i: %.2f\n",j,mediaid[j]); } }
  18. Muito obrigado amigo, atendeu a minha necessidade.
  19. Boa noite pessoal, esse é meu primeiro tópico, procurei e não achei nada semelhante. Me perdoem se porventura eu tenha feito algo de errado. Preciso de uma ajuda com VBA: Montei uma planilha para atualizar certos relatórios diariamentes. Mas quero dizer a macro qual relatórios atualizar. Quero criar uma macro que faça isso. Ao iniciar a macro quero que ela considere o que está dentro de "A1" para continuar. Se estiver escrito "Verdadeiro" ela executa "Call" a Macro1. Se estiver escrito "Falso" ou qualquer outra coisa deferente de Verdadeiro, ela tem que chamar "Call" a macro2. Preciso ainda que se se escrito Verdadeiro em "A1" e ela chamar a macro1, seja inserido em "B1" a palavra "Atualizado" e se estiver escrito em "A1" Falso e ela chamar a macro2, seja inserido tem em "B1" a palavra "Não atualizado". Conseguem me ajudar com isso?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!