-
Posts
19 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que Intruder18 postou
-
@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?
-
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 ?
-
@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);"
-
@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:
-
@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); }
-
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); }
-
Está complicado rapaziada, não consegui entender a lógica pra conseguir excluir o resgistro do arquivo. Alguém consegue me dar um help?
-
@Mauro Britivaldo Cada dia aprendendo um pouquinho! Struct é um pouco complexa, vi várias formas de declarar ela, estou me adaptando a melhor forma;
-
@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?
-
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...
-
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(); }
-
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.
-
Excelente vou ler. A questão a) ficou bem clara.
-
Mauro, está ficando mais claro sim... Sua didática é excelente. Pode me esclarecer a utilização do comando unsigned para declarar as variáveis?
-
Não conheço essa estrutura, vou pesquisar sim. Agradeço a atenção e apoio.
-
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);
-
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]); } }
-
Ajuda VBA Excel controle de macros
Intruder18 respondeu ao tópico de Intruder18 em Microsoft Office e similares
Muito obrigado amigo, atendeu a minha necessidade. -
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