Ir ao conteúdo
  • Cadastre-se

Madson Smitt

Membros Plenos
  • Total de itens

    32
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Consegui resolver. Eu estava comparando o sizeof com o arquivo. Funcionou normal quando coloquei sizeof(agenda).
  2. Galera, poderiam me dar uma luz de porque quando eu edito, aparecem vários contatos bugados? Ex: eu edito um e ele faz uma combinação de pedaços do que eu digitei, criando novos contatos e, por último, mostra o contato realmente editado como eu fiz. #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <string.h> typedef struct{ char PrimeiroNome[15]; char UltimoNome[15]; char ddd[6]; char telefone[12]; }agenda; FILE *aqagenda, *aqagenda2; agenda contatin; void NomeTel(); void PrintContatos(); void PrimeiraParte(int *aux); void Editar(); void Excluir(); int main(){ int opinici, numlistar, numadc = 0, sublistar, *aux, sair = 0, contador = 0, i = 0, auxcont, auxnumlistar, listarpornome = 1; short sla, sla2; char letra[2], *ptrLetra, nome[15]; printf("\t\t\t\t\tBem-vindo a agenda!\n"); printf("\n"); printf("Tecle ENTER para ir a agenda..."); getchar(); while(sair == 0){ aux = &opinici; PrimeiraParte(aux); switch(opinici){ case 1: system("cls"); printf("\t\t\t\t\tAdicione um contato a sua agenda: \n"); printf("\n"); do{ NomeTel(); printf("\nContato armazenado!\n"); printf("\n"); do{ printf("\nDeseja armazenar mais algum contato? Digite 1 para SIM e 2 para NAO: "); scanf("%i", &numadc); }while(numadc < 1 || numadc > 2); }while(numadc != 2); printf("\nTecle QUALQUER TECLA para continuar com a agenda e voltar ao menu inicial..."); getche(); system("cls"); break; case 2: system("cls"); printf("\t\t\t\t\tLista de Contatos: \n"); printf("\n"); PrintContatos(); printf("\n\n"); printf("Acoes disponiveis: \n"); printf("\n"); printf("\tEditar contato (1)\n"); printf("\tApagar contato (2)\n"); printf("\tPesquisar por letra inicial do primeiro nome (3)\n"); printf("\tVoltar ao menu inicial (4)\n"); printf("\n"); do{ printf("Digite o numero, de uma das opções listadas, para realizar uma acao: "); scanf("%i", &sublistar); }while(sublistar < 1 || sublistar > 4); aqagenda = fopen("agenda.txt", "a+b"); if(fread(&contatin, sizeof(agenda), 1, aqagenda) < 1 && sublistar != 4){ printf("\nNenhum contato na agenda para fazer alteracoes!\n"); printf("\nTecle QUALQUER TECLA para continuar com a agenda e voltar ao menu inicial..."); getche(); system("cls"); fclose(aqagenda); break; } fclose(aqagenda); if(sublistar == 1){ Editar(); } if(sublistar == 2){ Excluir(); } if(sublistar == 3){ aqagenda = fopen("agenda.txt", "r"); system("cls"); printf("\t\t\t\t\tListar contatos pela primeira letra do nome: \n"); printf("\n"); printf("Digite uma letra, de sua preferência, para pesquisar \nnomes de contatos que comecem com essa letra: "); scanf("%1s", letra); printf("\n"); printf("\nContatos Encontrados: "); listarpornome = 1; while(fread(&contatin, sizeof(agenda), 1, aqagenda) == 1){ if(contatin.PrimeiroNome[0] == letra[0] || letra[0] + 32 == contatin.PrimeiroNome[0] || letra[0] - 32 == contatin.PrimeiroNome[0]){ printf("%i. %s %s\n\t\t\t", listarpornome, contatin.PrimeiroNome, contatin.UltimoNome); listarpornome++; } } if(listarpornome < 2){ printf("\n\nNENHUM CONTATO COM ESSA INICIAL FOI ARMAZENADO!\n"); } fclose(aqagenda); } printf("\nTecle QUALQUER TECLA para continuar com a agenda e voltar ao menu inicial..."); getche(); system("cls"); break; case 3: system("cls"); printf("\t\t\t\t\t************************\n"); printf("\t\t\t\t\t***"); printf(" AGENDA ENCERRADA ***\n"); printf("\t\t\t\t\t************************\n"); sair = 1; break; default: printf("\n\n"); printf("Opcao invalida!\nDigite uma das opções listadas acima!\n"); printf("Pressione qualquer tecla..."); getche(); system("cls"); } } system("pause"); return 0; } void NomeTel(){ aqagenda = fopen("agenda.txt", "a+b"); if(aqagenda == NULL){ printf("\n\nFalha na abertura do arquivo!\n"); } printf("\nDigite o primeiro nome do contato: "); scanf("%14s", contatin.PrimeiroNome); printf("Digite o ultimo nome do contato: "); scanf("%14s", contatin.UltimoNome); printf("Digite o DDD do contato: "); scanf("%5s", contatin.ddd); printf("Digite o numero do contato: "); scanf("%11s", contatin.telefone); fseek(aqagenda, 0, SEEK_END); fwrite(&contatin, sizeof(agenda), 1, aqagenda); fclose(aqagenda); } void PrintContatos(){ aqagenda = fopen("agenda.txt", "r+b"); if(aqagenda == NULL){ printf("\t\t\t\t NENHUM CONTATO ADICIONADO!\n"); } while(fread(&contatin, sizeof(agenda), 1, aqagenda) == 1){ printf("\n\nContato:\n"); printf("\nPrimeiro nome do contato: %s", contatin.PrimeiroNome); printf("\nUltimo nome do contato: %s", contatin.UltimoNome); printf("\nNumero do contato: (%s) %s", contatin.ddd, contatin.telefone); printf("\n\n"); } fclose(aqagenda); } void PrimeiraParte(int *aux){ system("cls"); printf("\t\t\t\tOpcoes disponiveis na agenda: \n"); printf("\n"); printf("Adicionar um contato a agenda (1)\n"); printf("\nListar contatos da agenda (2)\n"); printf("\nSair da agenda (3)\n"); printf("\nDigite o numero, de uma das opções listadas, para realizar uma acao: "); scanf("%i", aux); } void Editar(){ char nome[15]; short sla = 0; aqagenda = fopen("agenda.txt", "r+b"); aqagenda2 = fopen("agenda2.txt", "w+b"); printf("\n"); printf("Digite, exatamente, o primeiro nome do contato o qual deseja editar: "); fflush(stdin); gets(nome); rewind(aqagenda); while(fread(&contatin, sizeof(aqagenda), 1, aqagenda) == 1){ if(strcmp(nome,contatin.PrimeiroNome) != 0 && sla < 2){ fwrite(&contatin, sizeof(agenda), 1, aqagenda2); }else{ printf("\nDigite as novas informações do contato: \n"); printf("\tDigite o primeiro nome do contato: "); scanf("%14s", contatin.PrimeiroNome); printf("\tDigite o ultimo nome do contato: "); scanf("%14s", contatin.UltimoNome); printf("\tDigite o DDD do contato: "); scanf("%5s", contatin.ddd); printf("\tDigite o numero do contato: "); scanf("%11s", contatin.telefone); printf("\tContato editado!\n"); fwrite(&contatin, sizeof(agenda), 1, aqagenda2); sla++; } } fclose(aqagenda); fclose(aqagenda2); remove("agenda.txt"); rename("agenda2.txt","agenda.txt"); } void Excluir(){ }
  3. @arfneto Nunca que se passou pela minha cabeça que isso poderia dar algum tipo de lag no sistema. obrigado por me avisar. Vou tentar melhorar tendo isso em mente nos próximos códigos, para que eu não acabe sobrecarregando tudo. xD adicionado 5 minutos depois @Mauro Britivaldo Eu pensei que poderia ocorrer algum erro se eu colocassem somente o nome da váriavel, ex: minha_matriz. Então na minha cabeça se passou que eu teria que mostrar o valor que estava contido no endereço da variável, ou seja, &*minha_matriz. Valeu por esclarecer que não vai haver erro na captação da varável.
  4. Verdade, pensando assim não faz sentido... tentei só deixando "x" e consegui... Deixar &* pode dar algum problema referente ao programa achar os valores? ou só atrapalha no sentido mesmo?
  5. @arfneto Valeuuu, consegui fazer da seguinte maneira: if(sublistar == 3){ system("cls"); printf("\t\t\t\t\tListar contatos pela primeira letra do nome: \n"); printf("\n"); printf("Digite uma letra, de sua preferência, para pesquisar \nnomes de contatos que comecem com essa letra: "); scanf("%1s", letra); printf("\n"); printf("Contatos Encontrados: "); listarpornome = 1; for(i = 0; i < contador; i++){ if((&*contatin)[i].PrimeiroNome[0] == letra[0]){ printf("%i. %s %s\n\t\t\t", listarpornome, (&*contatin)[i].PrimeiroNome, (&*contatin)[i].UltimoNome); listarpornome++; } } }
  6. Boa/bom noite/tarde/dia, pessoal. Gostaria de saber como posso alterar os dados de um subconjunto da struct já armazenado... Por exemblo: O usuário entrou com varios dados na struct que montei e, um desses subconjuntos, é o nome do contato de quem ele deseja armazenar. Que é um vetor de char. Gostaria de saber se tem como eu mexer nesses vetores de char já armazenados para criar uma opção no programa de listar os nomes que comecem com tal letra de preferência do usuário (EX: ele quer que apareçam os contatos que comecem com a letra M, assim eu listo todos os contatos que contém M no INICIO do primeiro nome). Segue o code: #include <stdlib.h> #include <stdio.h> #include <conio.h> struct agenda{ char PrimeiroNome[15]; char UltimoNome[15]; char ddd[6]; char telefone[12]; }; void NomeTel(struct agenda *NT){ printf("\nDigite o primeiro nome do contato: "); scanf("%14s", NT->PrimeiroNome); printf("Digite o ultimo nome do contato: "); scanf("%14s", NT->UltimoNome); printf("Digite o DDD do contato: "); scanf("%5s", NT->ddd); printf("Digite o numero do contato: "); scanf("%11s", NT->telefone); } void PrintContatos(struct agenda *x){ printf("\n\nContato:"); printf("\nPrimeiro nome do contato: %s", x->PrimeiroNome); printf("\nUltimo nome do contato: %s", x->UltimoNome); printf("\nNumero do contato: (%s) %s", x->ddd, x->telefone); printf("\n\n"); } void PrimeiraParte(int *aux){ system("cls"); printf("\t\t\t\tOpcoes disponiveis na agenda: \n"); printf("\n"); printf("Adicionar um contato a agenda (1)\n"); printf("\nListar contatos da agenda (2)\n"); printf("\nSair da agenda (3)\n"); printf("\nDigite o numero, de uma das opções listadas, para realizar uma acao: "); scanf("%i", aux); } int main(){ int opinici, numlistar, numadc = 0, sublistar, *aux, sair = 0, contador = 0, i = 0, auxcont, auxnumlistar; struct agenda contatin[20]; printf("\t\t\t\t\tBem-vindo a agenda!\n"); printf("\n"); printf("Tecle ENTER para ir a agenda..."); getchar(); while(sair == 0){ aux = &opinici; PrimeiraParte(aux); switch(opinici){ case 1: system("cls"); printf("\t\t\t\t\tAdicione um contato a sua agenda: \n"); printf("\n"); do{ NomeTel(&contatin[contador]); printf("\nContato armazenado!\n"); printf("\n"); do{ printf("\nDeseja armazenar mais algum contato? Digite 1 para SIM e 2 para NAO: "); scanf("%i", &numadc); }while(numadc < 1 || numadc > 2); contador++; }while(numadc != 2); printf("\nTecle QUALQUER TECLA para continuar com a agenda e voltar ao menu inicial..."); getche(); system("cls"); break; case 2: system("cls"); printf("\t\t\t\t\tLista de Contatos: \n"); printf("\n"); i = 0; auxcont = contador; while(i < auxcont){ printf("Codigo do contato: %i", i); PrintContatos(&contatin[i]); i++; } printf("\n\n"); printf("Acoes disponiveis: \n"); printf("\n"); printf("\tEditar contato (1)\n"); printf("\tApagar contato (2)\n"); printf("\tVoltar ao menu inicial (3)\n"); printf("\n"); do{ printf("Digite o numero, de uma das opções listadas, para realizar uma acao: "); scanf("%i", &sublistar); if(sublistar == 1 && contador == 0 || sublistar == 2 && contador == 0){ printf("\nNenhum contato na agenda para fazer alteracoes!\n"); break; } if(sublistar == 1){ printf("\n"); do{ printf("Digite o codigo do contato o qual deseja editar: "); scanf("%i", &numlistar); }while(numlistar < (contador-contador) || numlistar >= contador); printf("\nDigite as novas informações do contato para edita-lo totalmente:"); NomeTel(&contatin[numlistar]); printf("\nDados alterados com sucesso!\n"); } if(sublistar == 2){ printf("\n"); do{ printf("Digite o codigo do contato o qual deseja apagar: "); scanf("%i", &numlistar); }while(numlistar < (contador-contador) || numlistar >= contador); auxnumlistar = 0; if(contador == 1){ contatin[numlistar] = contatin[numlistar+1]; } if(contador > 1){ while(auxnumlistar < contador){ contatin[numlistar] = contatin[numlistar+1]; numlistar++; auxnumlistar++; } } contador--; printf("\nAs informações do contato foram apagadas!"); printf("\n"); } }while(sublistar < 1 || sublistar > 3); printf("\nTecle QUALQUER TELCA para continuar com a agenda e voltar ao menu inicial..."); getche(); system("cls"); break; case 3: system("cls"); printf("\t\t\t\t\t************************\n"); printf("\t\t\t\t\t***"); printf(" AGENDA ENCERRADA ***\n"); printf("\t\t\t\t\t************************\n"); sair = 1; break; default: printf("\n\n"); printf("Opcao invalida!\nDigite uma das opções listadas acima!\n"); printf("Pressione qualquer tecla..."); getche(); system("cls"); } } system("pause"); return 0; }
  7. @KXSY Vou dar uma olhada, valeu mesmo.
  8. @f_neto Só aparece o hd que estou usando agora e o windows dele.. Nada que eu veja há algo que eu possa fazer. Se tiver, não tenho conhecimento o bastante pra isso.
  9. Então, guys, tô criando um programa que é o projeto de uma agenda. Tô na parte onde tenho que criar as estruturas para receber os dados e tô querendo printar esse resultado... Porém, como meu programa tem return main(); creio que ele está apagando a variável toda vez que volto para o menu inicial e não tô achando um jeito de armazenar esse valor recebido dos dados e printar em umas funções fora da main, já que se eu deixar na main elas vão ser apagadas... Podem mostrar como posso armazenar esses dados recebidos e printar eles utilizando mais ou menos esse escopo ? Segue o código: #include <stdlib.h> #include <stdio.h> struct agenda{ char PrimeiroNome[15]; char UltimoNome[15]; int telefone; short ddd; }; void NomeTel(struct agenda NT){ printf("\nDigite o primeiro nome do contato: "); scanf("%14s", NT.PrimeiroNome); printf("Digite o ultimo nome do contato: "); scanf("%14s", NT.UltimoNome); printf("Digite o DDD do contato: "); scanf("%hi", &NT.ddd); printf("Digite o numero do contato: "); scanf("%i", &NT.telefone); } void PrintContatos(struct agenda x){ printf("\n\nContato: "); printf("\nPrimeiro nome do contato: %s", NT.PrimeiroNome); printf("\nUltimo nome do contato: %s", NT.UltimoNome); printf("\nNumero do contato: (%hi) %i", NT.ddd, NT.telefone); } int main(){ int opinici, numlistar, numadc, sublistar; printf("\t\t\t\t\tBem-vindo a agenda!\n"); printf("\n"); printf("Tecle ENTER para ir a agenda..."); getchar(); system("cls"); printf("\t\t\t\tOpcoes disponiveis na agenda: \n"); printf("\n"); printf("Adicionar um contato a agenda (1)\n"); printf("\nListar contatos da agenda (2)\n"); printf("\nSair da agenda (3)\n"); printf("\nDigite o numero, de uma das opções listadas, para realizar uma acao: "); scanf("%i", &opinici); switch(opinici){ case 1: system("cls"); printf("\t\t\t\t\tAdicione um contato a sua agenda: \n"); printf("\n\nContato armazenado!"); printf("\n"); do{ printf("\nDeseja voltar ao menu principal agora? Digite 1 para SIM e 2 para SAIR da agenda: "); scanf("%i", &numadc); if(numadc == 1){ system("cls"); return main(); } if(numadc == 2){ system("cls"); printf("\t\t\t\t\t************************\n"); printf("\t\t\t\t\t***"); printf(" AGENDA ENCERRADA ***\n"); printf("\t\t\t\t\t************************\n"); } }while(numadc < 1 && numadc > 2); break; case 2: system("cls"); printf("\t\t\t\t\tLista de Contatos: \n"); printf("\n"); printf("\n\n"); printf("Acoes disponiveis: \n"); printf("\n"); printf("\tEditar contato (1)\n"); printf("\tApagar contato (2)\n"); printf("\tVoltar ao menu principal(3)\n"); printf("\nDigite o numero, de uma das opções listadas, para realizar uma acao: "); scanf("%i", &numlistar); if(numlistar == 1){ system("cls"); printf("Pagina em construcao!\n"); do{ printf("\nDigite 1 para VOLTAR ao menu inicial e 2 para ENCERRAR a agenda: "); scanf("%i", &sublistar); if(sublistar == 1){ system("cls"); return main(); } if(sublistar == 2){ system("cls"); printf("\t\t\t\t\t************************\n"); printf("\t\t\t\t\t***"); printf(" AGENDA ENCERRADA ***\n"); printf("\t\t\t\t\t************************\n"); } }while(sublistar > 2 || sublistar < 1); } if(numlistar == 2){ system("cls"); printf("Pagina em construcao!\n"); do{ printf("\nDigite 1 para VOLTAR ao menu inicial e 2 para ENCERRAR a agenda: "); scanf("%i", &sublistar); if(sublistar == 1){ system("cls"); return main(); } if(sublistar == 2){ system("cls"); printf("\t\t\t\t\t************************\n"); printf("\t\t\t\t\t***"); printf(" AGENDA ENCERRADA ***\n"); printf("\t\t\t\t\t************************\n"); } }while(sublistar > 2 || sublistar < 1); } if(numlistar == 3){ system("cls"); return main(); } break; case 3: system("cls"); printf("\t\t\t\t\t************************\n"); printf("\t\t\t\t\t***"); printf(" AGENDA ENCERRADA ***\n"); printf("\t\t\t\t\t************************\n"); break; default: return main(); } system("pause"); return 0; }
  10. @Noobia Você poderia criar um if para saber a maior nota logo de inicio: float nota(supondo que seja uma nota com virgula) = 0; float maiornota = 0; você pode dar scanf e, a cada nota, pode fazer: if(nota>maiornota){ maiornota = nota;} só nisso você já vai saber a maior ^^ vou deixar esse raciocinio ai e tente pensar como fazer a da menor nota, boa sorte.
  11. @f_neto Consegui achar uma resolução, porém, não sei se é o correto a se fazer. Estava negando pela bios e, sem querer, apertei enter em BOOT MANAGER. O computador reiniciou e inicializou pelo windows do HD normal. E estou utilizando ele até agora. Porém, se eu clico no próprio HD para inicializar, ele fala para reiniciar e selecionar uma opção bootavel válida. Mas quando clico no SSD para iniciar, ele inicia normal. Ou seja, se clico boot manager pra iniciar, ele inicia no HD. Se clico no SSD, ele iniciar normal... Tô conseguindo usar eles de boa. Porém, como disse, não sei se é o adequado ficar inicializando por esse boot manager.
  12. E ai, galera. Então, eu peguei um hd aqui e instalei no meu pc, já tinha um ssd nele, formatei o hd e instalei o windows sem problemas. Mas, depois de um certo tempo de uso no windows instalado nesse hd, ele começa a dar uns bug, algumas janelas não abrem e tal. Dai eu reiniciei pra ver o que tinha dado, quando foi na inicialização, ele iniciou pelo ssd. Sendo que eu nem tinha colocado ele na ordem de prioridade na BIOS... Alguém sabe o que pode ser?!
  13. @devair1010 Tipo, são questões sobre matriz. E, uma delas, é criar uma função que faça o determinante de uma matriz... Daí para acha-lo é só multiplicar as diagonais principais com as diagonais secundarias e vai resultar em um valor. Esse valor pode-se saber diversas propriedades da matriz... adicionado 3 minutos depois @devair1010 e sabe dizer porque nessa situação da undeclared? <code> #include <stdlib.h> #include <stdio.h> void ler_matriz(int ordem, int matriz[][ordem]){ int i, j; for(i = 0; i < ordem; i++){ for(j = 0; j < ordem; j++){ printf("Digite os valores da %i(a) Linha: ", i+1); scanf("%i", &matriz[j]); } } } int main(){ int ordem; printf("O programa recebe a ordem de uma matriz, seus valores,\n"); printf("imprime a matriz e calcula seu determinante:\n"); printf("Digite a ordem da matriz: "); scanf("%i",&ordem); int matriz[ordem][ordem]; ler_matriz(ordem,matriz); return 0; }
  14. @devair1010 consegui entender. apliquei aqui.. tentei revisar tudo mas o determinante 3x3 continua sendo zero. na 2x2 ela funciona normalmente... o que será q pode ser? adicionado 24 minutos depois @devair1010 Consegui resolver aqui. Vlwwww
  15. @devair1010 continua dando erro de undeclared...

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...