Ir ao conteúdo
  • Cadastre-se

Asrety

Membro Pleno
  • Posts

    60
  • Cadastrado em

  • Última visita

Tudo que Asrety postou

  1. E também teve outro erro na ultima comparação, enfim, vou deixar um código aqui também funcional: #include <stdio.h> #include <stdlib.h> int main(){ char grupo[][15]={"Crianca", "Adolescente", "Adulto", "Idosa"}; int idade, p; printf ("Informe sua idade: "); scanf ("%d", &idade); if(idade>=1 && idade<=13) p=0; else if(idade>=13 && idade<=20) p=1; else if(idade>=20 && idade<=50) p=2; else p=3; printf("\nO Grupo que voce se enquadra e de %s\n\n", grupo[p]); system ("pause"); return 0; }
  2. @CiroboyBR Como faz muito tempo não sei ao certo, mas baixei por esse link https://sourceforge.net/projects/mingw-w64/ utilizo esse ai junto com a ide codeblocks, mas fiz o teste aqui e até compilando pelo terminal não gera erros, e salvei o arquivo como .c O Código do arquivo c que estou compilando: #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char nome[50]; int idade; float dinheiro; }Pessoa; int main(){ FILE *f1 = fopen("pessoa.txt", "r"); Pessoa p; if(f1 == NULL){ perror("Nao Foi Possivel Ler"); exit(0); } fscanf(f1, "%[^,],%d,%f\n", p.nome, &p.idade, &p.dinheiro); printf("\nNome: %s", p.nome); printf("\nIdade: %d", p.idade); printf("\nDinheiro: %.2f", p.dinheiro); fclose(f1); return 0; } Resultado:
  3. Funcionou @AnsiC, com certeza salvou o meu código, não sabia dessa, Muito Obrigado!
  4. Entendi, minha duvida era essa mesmo, realmente vou ter q ler toda linha e ir separando com ja imaginava, ainda tinha esperanças com o fscanf kk, obrigado pela ajuda @CiroboyBR & @AnsiC
  5. Sim, infelizmente é um requisito do trabalho que estou fazendo. Então fscanf para meu caso não é viável ?
  6. Sim eu testei, veja nessa print http://prntscr.com/ljim9c #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char nome[50]; int idade; float dinheiro; }Pessoa; int main(){ FILE *f1 = fopen("pessoa.txt", "r"); Pessoa p; if(f1 == NULL){ perror("Nao Foi Possivel Ler"); exit(0); } fscanf(f1, "%[^\n],%d,%f\n", p.nome, &p.idade, &p.dinheiro); printf("\nNome: %s", p.nome); printf("\nIdade: %d", p.idade); printf("\nDinheiro: %.2f", p.dinheiro); fclose(f1); return 0; } So alterei o %s para %[^\n], com o %s so tava lendo até "Pedro" Entendo, mas o fgets considera tudo como string, e essa é minha dificuldade, ler string, int, float tudo separado
  7. @CiroboyBR, acredito que o fgets não vai me ajudar muito, pois a minha intenção é ler dados separados, com fgets ela le tudo até achar um '\n' e salva numa string, mas agradeço mesmo assim. @AnsiC testei desse jeito, e aconteceu o que tu disse, leu todas as informações e salvou na variavel nome, e as variaveis idade e dinheiro como esperado ficou com lixo, você acha que não há como realizar essa separação somente com fscanf? ja vi uns códigos que utilizam somente números e lê certo, acredito o problema é ter q ler essa string nome.
  8. Bom dia a todos, ultimamente tive um desafio que até hoje não consegui resolver, que é salvar dados em um txt, e ler, isso sem utilizar binário, então minha pergunta é, teria como ler esses dados utilizando somente um fscanf como na tentativa que fiz? sei que pode parecer algo simples, mas não consigo realizar essa tarefa, já consegui fazer isso utilizando strtok só que ficou muito grande o código, então queria somente com fscanf, pois facilitaria muito, Abaixo vou deixar o código. ESCRITA #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char nome[50]; int idade; float dinheiro; }Pessoa; int main(){ FILE *f1 = fopen("pessoa.txt", "w"); Pessoa p; if(f1 == NULL){ perror("Nao Foi Possivel Escrever"); exit(0); } strcpy(p.nome, "Pedro Silva"); p.idade = 18; p.dinheiro = 500.44; fprintf(f1, "%s,%d,%f\n", p.nome, p.idade, p.dinheiro); fclose(f1); return 0; } LEITURA #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char nome[50]; int idade; float dinheiro; }Pessoa; int main(){ FILE *f1 = fopen("pessoa.txt", "r"); Pessoa p; if(f1 == NULL){ perror("Nao Foi Possivel Ler"); exit(0); } fscanf(f1, "%s,%d,%f\n", p.nome, &p.idade, &p.dinheiro); printf("\nNome: %s", p.nome); printf("\nIdade: %d", p.idade); printf("\nDinheiro: %.2f", p.dinheiro); fclose(f1); return 0; }
  9. Olá, achei alguns erros, há um printf escrito de forma errada, também tem um detalhe, pois você salva os dados nas variáveis e chama a função ler, sendo que na primeira execução não irá ter arquivo para ler, e também na função de ler o nome do arquivo tá errado, bom desculpa por não poder mostrar direito, mas foram esses os erros que achei.
  10. Não consigo fazer um código agora, mas posso explicar o motivo disso, repare que na função de inserir, você cria o vetor lá, porém ao sair dessa função nada será salvo, e na de ler igualmente, você só chamou a função e dentro dela criou mais um vetor, porém não há nada dentro dele, basicamente foi isso o erro. Solução: Criar o vetor na main e passar como parâmetro das funções, exemplo : void insere(int vet[], int n){ for(int i=0; i<n; i++){ printf("N%d: ", i); scanf("%d", vet[i]); } } void imprimeVetor(int vet[], int n){ for(int i=0; i<n; i++) printf("\n%d", vet[i]); } Utilizando essas funções na main: int main(){ int vet[10]; insere(vet, 10); imprimeVetor(vet, 10); return 0; } Fiz no celular correndo aqui, lembrando que é só um exemplo, mas caso não entenda, estude sobre como passar vetor para função, tem muitos vídeos sobre o assunto, boa sorte nos estudos! 
  11. Não entendi muito bem o porque usar esse monte de ponteiro nesta questão, mas aqui embaixo deixo a função de primo baseado no seu código void primo (int vetor[], int n){ printf("\n\tMostrando os PRIMOS\n\n"); int i,j,div = 0; for (i = 0; i < n; ++i) { div = 0; for (j = 1; j <=vetor[i]; ++j) { if (vetor[i] % j == 0) { ++div; } } if (div == 2) { //veja que o if está fora do segundo for printf("\n%i",vetor[i]); } } } O seu if div == 2 estava dentro do if do segundo for, mas não funcionaria, imagine ai um numero com 4 divisores, o div vai chegar a 2, e segundo sua comparação ele será primo, então para evitar isso coloque o if fora do segundo for, espere terminar todas comparações possíveis e depois sim comparar se div é == 2, e outro detalhe era no seu segundo for, estava indo de 1 até <vetor, mas um primo possui 2 divisores, 1 e ele mesmo, e como ele vai chegar até ele mesmo assim, enfim, esses foram os detalhes que encontrei, boa sorte!
  12. char arq[50]; FILE *f1; printf("\nNome do arquivo: "); scanf("%s", arq); f1 = fopen(arq, "r"); Nesse exemplo aí o usuário que informará o nome do arquivo e sua extensão, ex: arquivo.txt
  13. De nada, deve possuir outras maneiras de fazer e outra pessoa irá te ajudar nessa solução, mas não desista, boa sorte @Gustavo Duarte Barbosa
  14. Estranho, aqui funcionou e lembro que isso resolveria, você ta seguindo essa logica? int num = inicio + rand() % final - inicio; Acima é so um exemplo, e caso esteja seguindo isso, realmente não sei porque está ultrapassando
  15. printf("%d\n", 10 + rand() % 90); Isso poderá te ajudar, uma vez já tive essa dúvida mas me explicaram isso, o rand irá gerar valores de 0 até 90, porém será somado com 10, então o intervalo passa a ser de 10 até 100.
  16. O @devair1010 ali em cima te deu uma lógica que irá funcionar, é tipo pegar uma posição da string e comparar com todas posições, exceto ela mesma, eu utilizaria uma variável de controle para saber quando incrementar, mas tente fazer ai, e mande seu código mesmo não funcionando, se tiver alguma duvida, pergunte também, boa sorte!
  17. De nada, quando olhei a maneira que o for tava sendo usado já pensei nessa possibilidade, que na hr de salvar as informações na matriz, tava indo em lugar que nem existia, claro que há uma explicação melhor kk mas pra mim pode ter sido isso, enfim, fico feliz por ter ajudado, boa sorte no seu código!
  18. Na declaração da matriz na main, tente isso: char matriz[ROW+1][COL+1];
  19. @Reila Não prestei muita atenção no que estava falando o erro, mas pelo que vejo é porque você ainda está utilizando o system pause, ou estou enganado?
  20. Sim, nesse código não há necessidades da stdlib.h, e esse system pause pode fazer o que você disse, alguns utilizam esse system pause, ou um getchar no final do código apenas para garantir que o terminal não feche sozinho quando terminar a execução.
  21. Você já tentou fazer algo sobre esse problema? se sim teria como mandar o seu código aqui, para que assim possamos ajudar.
  22. for (cont =1; cont <=100; ) /* aqui voce pode retirar o cont++, e colocar ele dentro do if que compara se está livre, ai sim só irá aumentar de acordo com as compras realizadas.*/ if (lugares [i][j] == 0){ lugares [i][j] = 1; cont++; //cont deverá ser incrementado aqui. } Agora sobre o horário não sei te ajudar, sou novato também, não duvido ter um método pra isso, mas acredito não ser muito simples extrair a hora e vincular com cada posição, e uma dica que te dou é utilizar funções, seu programa pode ser simplificado e organizado se utilizar funções como, iniciar lugares, mostrar lugares, etc, o código fica melhor, e quando for postar o seu código utilize o botão Code < > e não citação, tive dificuldades para compilar aqui, enfim, essas foram as minhas dicas.
  23. Olá, nos meus testes encontrei um erro no seu código, e arrumando ele o programa funcionou corretamente, espero ter ajudado!
  24. Bem melhor, pois se achar um não primo, logo não será super primo, coisa que não pensei quando fiz, gostei da sua resolução.
  25. @Adrian Simon essa função aqui deve ajudar você, faz o que o @AnsiC te disse, e usa a função que você criou para verificar se é primo. int superPrimo(int num){ int p=0, x=0; while(num>0){ if(primo(num%10)) p++; //utilizando sua funcao p/ comparar se o numero é primo, se sim p++ num/=10; x++; //essa incrementação é para pegar o tamanho do numero } return (p==x) ? 1 : 0; //se p for igual x significa que todos numeros foram primos, retornando 1 //se nao, retorna 0, que significa que o numero é somente primo //obs: so chame essa função depois de comparar se o numero é primo }

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!