Ir ao conteúdo
  • Cadastre-se

Leanderson Pinheiro

Membro Pleno
  • Posts

    33
  • Cadastrado em

  • Última visita

Reputação

6
  1. Boa tarde, preciso de ajuda Estou tentando ler um arquivo .dat, aparentemente eles está sendo aberto, passa nos testes, e fecha corretamente. Só que não estou conseguindo imprimir o conteúdo do arquivo. #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { int codMensagem; int indice; char letra[200]; }tLetra; int main(void){ FILE *fp; tLetra letra[10]; int q, i; fp = fopen("mensagens(1).dat", "wb"); if (fp == NULL) { //verificar se conseguiu abrir printf("arquvio n abriu"); return 1; }else while(1){ i++; q = fread(&letra, sizeof(letra), 1, fp); if (feof(fp) || ferror(fp)){ break; } } fprintf(fp,"%d %d %s", letra[1].codMensagem, letra[1].indice, letra[1].letra); if(fclose(fp)== 0){ printf("Arquvio aberto com sucesso"); } return 0; }
  2. Minha função imprime registro está sendo chamada, entretanto ela imprime números aleátorios e nunca os q digitei no prompt. Alguém pode ajudar ? /** Laboratorio de Introducao a Programacao para Engenharia da Computacao. Atividade do dia 21 de junho de 2021. Descricao: Complete esse codigo fonte para criar um programa dirigido por menus que mantem um cadastro de um tesouro e sua localizacao. O tesouro sera representado por: - Uma descricao (dinheiros, chocolate, feriado, ponto extra) - Um valor em reais - Uma coordenada X - Uma coordenada Y As funcionalidades do programa sao: - Cadastro do tesouro - Impressao das informações do tesouro cadastrado - Informar a distancia do tesouro a partir de um determinado ponto inserido pelo usuario */ #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <math.h> #define MAX_DESCRICAO 51 typedef struct { char descricao[MAX_DESCRICAO]; float valor; int x; int y; }tRegistro; void ApresentaMensagem() { printf("Ola, esse programa ...\n"); } void ApresentaMenu() { printf("\n\n*** opções *** \n" "\n1 - Cadastra" "\n2 - Imprime" "\n3 - Distancia a partir de um ponto" "\n5 - Sair\n"); } tRegistro * CadastroRegistro(tRegistro *reg) { tRegistro Tesouro; printf("Digite o nome:\n"); scanf("%s", Tesouro.descricao); printf("Digite o valor:\n"); scanf("%f", &Tesouro.valor); printf("Digite a coordenada x:\n"); scanf("%d", &Tesouro.x); printf("Digite a coordenada y:\n"); scanf("%d", &Tesouro.y); return reg; } void ImprimeRegistro(const tRegistro *reg) { //mostrar as informações do registro do parametro de forma organizad printf("%s\n",reg->descricao); printf("%f\n",reg->valor); printf("%d\n",reg->x); printf("%d\n",reg->y); } float Distancia(tRegistro reg, int x, int y){ //funcao q retorna a distancia da coordenada dos parametros ate a coordenada do registro } int main(void) { tRegistro reg; //guarda o registro tRegistro *c; tRegistro *p; int opcao; ApresentaMensagem(); while(1){ ApresentaMenu(); scanf("%d", &opcao); if (opcao == 5){ break; } switch(opcao){ case 1: CadastroRegistro(c); break; case 2: ImprimeRegistro(p); break; case 3: break; default: puts("Opcao Invalida\n"); break; } } puts("Adeus"); return 0; }
  3. Minha dúvida aqui é como retirar o 7 toda vez que for feita a operação. podem me ajudar ? link da questão: https://www.urionlinejudge.com.br/judge/pt/problems/view/2569 Dona Clotilde é uma senhora muito simpática que mora em uma vila, na casa 71. Não se sabe ao certo por que, mas tinha fama de ser bruxa. Clotilde tinha muita vontade de assistir uma partida de futebol. Certo dia, ela comprou um líquido para limpar prata e com isto, ganhou um cupom que dava direito a concorrer a um ingresso para a semifinal da copa do mundo de 2014, no Mineirão, o jogo entre Alemanha x Brasil. O sorteio veio e ela ganhou o ingresso. Clotilde foi ao jogo, o Brasil perdeu de 7 x 1, e todos da vila acharam que o Brasil tinha perdido daquela forma por causa dela, coitada! O sobrinho hacker dela, San Tanaz, tomando as dores da tia, resolveu criar um vírus de computador que interferisse em cálculos matemáticos, de modo que, tudo que envolvesse o número 7 nas contas, se tornaria 0. Por exemplo: 3 + 4 = 0 33 + 44 = 0 17 + 11 = 21 8 x 9 = 2 12 x 7 = 0 8 + 9 = 10
  4. Gente, estou tentando fazer uma questão do URI que está apresentando 5% de erro, alguem pode me ajudar ? link da questão: https://www.urionlinejudge.com.br/judge/pt/disciplines/view/7282 código com 5% de erro abaixo. #include <stdio.h> #include <string.h> int main (void) { char Vet[30] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\0' }; int n; int j, tamanho, p, letra; char frase[1004]; scanf("%d", &n); while(n>0) { scanf("%s*%c", &frase); fgets(frase,1004,stdin); for( j=0; frase[j] >= ' '; j++ ); frase[j]= '\0'; for(j=0; j<26; j++) Vet[j] = 0; tamanho = strlen(frase); for(j=0; j<tamanho; j++) if(frase[j] >= 97 && frase[j] <= 122) { p = frase[j]; if(Vet[p-97] == 0) Vet[p-97]++; } letra=0; for(j=0; j<26; j++) if(Vet[j]>0) letra++; if(letra==26) printf("frase completa\n"); else if(letra>=13) printf("frase quase completa\n"); else printf("frase mal elaborada\n"); n--; } return 0; }
  5. @isrnick Então, eu queria usar algum laço de repetição para conseguir reduzir, poderia me explicar como fazer nesse caso ?
  6. To fazendo um jogo da velha na linguagem C, entretanto eu queria otimizar ele porque se não vai ficar muito grande. No momento ele está assim, conferindo se X ou O ganhou, entretanto nem terminei os ifs para X e ainda tenho que fazer para O, ficaria imenso. Teria uma forma de otimizar e conferir a condição sem precisar de tantos ifs ? #include <stdio.h> int main (void) { char l, i, j; char p; char m[3][3], soma = 0; for (i = 0; i < 3; i++){ for (j= 0; j < 6; j++){ scanf("%c", &m[i][j]); } } if(m[0][0]=='X' && m[1][0]=='X' && m[2][0]=='X'){ printf("X\n"); } if(m[0][1]=='X' && m[1][1]=='X' && m[2][2]=='X'){ printf("X\n"); } if(m[1][0]=='X' && m[2][0]=='X' && m[3][0]=='X'){ printf("X\n"); } if(m[1][1]=='X' && m[2][1]=='X' && m[3][1]=='X'){ printf("X\n"); } if(m[1][2]=='X' && m[2][2]=='X' && m[3][2]=='X'){ printf("X\n"); } if(m[1][3]=='X' && m[2][3]=='X' && m[3][3]=='X'){ printf("X\n"); } return 0; }
  7. Gente essa função serve pra identificar quando está em ordem crescente, como faria pra identificar quando está em ordem descrecente ? int EhArrayOrdenado(int ar[], int t){ int i; for(i = 0; i < t - 1; i++){ if (ar[i] < ar[i+1]) return 0; } return 1; }
  8. @JorgeGus @JorgeGus Cara, resolve só pra esse caso tirando o -1. Mas eu basicamente queria um que percorresse só até ficar ordenado, e contasse só até ai sacou ?
  9. @JorgeGus @JorgeGusentrada: 5 1 2 3 4 5 saída: 5 4 3 2 1 nperco: 5 seriam essas as saídas, mas não to conseguindo acho q necessita de quando tiver ordenado já parar o código.
  10. Gente, eu queria fazer com que o contador só somasse até a ordenação, mas mesmo depois que já está ordenado ele continua contando, alguém pode me ajudar ? #include <stdio.h> int main() { // foram definidas as variáveis// int vetor[100], x =0, y=0, aux=0; int n; int cont=0; // scanf para determinar a quantidade lida scanf("%d",&n); // faz o vetor = auxiliar for( x = 0; x < n; x++ ) { scanf("%d",&aux); vetor[x] = aux; } // faz a ordem decrescente for( x = 0; x < n; x++ ) { for( y = x + 1; y < n; y++ ) { if ( vetor[y] > vetor[x] ) { cont++; aux = vetor[y]; vetor[y] = vetor[x]; vetor[x] = aux; } } } // exibe os elementos ordenados for( x = 0; x < n; x++ ) { printf("%d\n",vetor[x]); // exibe o vetor ordenado } // printa quantas vezes percorreu printf("%d\n", cont); return 0; }
  11. @JorgeGus Eu quero apenas contar quantas vezes ele foi percorrido apenas, mas a saída saí errada código abaixo: #include <stdio.h> int main() { // foram definidas as variáveis// int vetor[100], x =0, y=0, aux=0; int n; int cont=0; // scanf para determinar a quantidade lida scanf("%d",&n); // faz o vetor = auxiliar for( x = 0; x < n; x++ ) { scanf("%d",&aux); vetor[x] = aux; } // faz a ordem decrescente for( x = 0; x < n; x++ ) { for( y = x + 1; y < n; y++ ) { if ( vetor[y] > vetor[x] ) { aux = vetor[y]; vetor[y] = vetor[x]; vetor[x] = aux; } } } // exibe os elementos ordenados for( x = 0; x < n; x++ ) { printf("%d\n",vetor[x]); // exibe o vetor ordenado } // printa quantas vezes percorreu printf("%d\n", cont/2); // caso não percorra nenhuma vez// if(cont<1) { printf("1\n"); } return 0; }
  12. Gente como eu faço para contar quantas vezes foi feita a troca dentro do método da bolha ?
  13. O codigo está apresentando as saídas corretas, mas não passa no URI, apresenta sempre runtime error. Link: https://www.urionlinejudge.com.br/judge/pt/problems/view/1973 #include <stdio.h> int main() { long long int N, i; scanf("%lld", &N); long long int estrela[N], ovelha[N]; long long int st=0, ss=0; for(i=0; i<N; i++) { scanf("%lld", &ovelha[i]); estrela[i]=0; } i=0; while(1) { if(i==0 && ovelha[i]%2==0) { estrela[i]=1; if(ovelha[i]>0) ovelha[i]--; break; } else if(i==N-1 && ovelha[i]%2==1) { estrela[i]=1; if(ovelha[i]>0) ovelha[i]--; break; } else if(ovelha[i]%2==1) { ovelha[i]--; estrela[i]=1; i++; } else if(ovelha[i]%2==0) { estrela[i]=1; if(ovelha[i]>0) ovelha[i]--; i--; } } for(i=0; i<N; i++) { ss += ovelha[i]; st += estrela[i]; } printf("%lld %lld\n", st, ss); return 0; }
  14. @mauro_b consegui cara, muito obrigado!
  15. @mauro_b Então, mas o problema principal que estou tendo é na funcionalidade do programa, porque ele funciona para alguns casos, e outros não. Exemplo : 6 10 / 6 1 3 6 6 4 2 3 1 2 Imprime: 1 o certo seria imprimir : 4

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