Ir ao conteúdo
  • Cadastre-se

Leanderson Pinheiro

Membro Pleno
  • Posts

    33
  • Cadastrado em

  • Última visita

Tudo que Leanderson Pinheiro postou

  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
  16. Gente minha lógica está errada, alguém poderia ajuda ? O link do enunciado: https://www.urionlinejudge.com.br/judge/pt/problems/view/1318 Meu programa apenas está apresentando saídas erradas. #include <stdio.h> int main() { int n, m, i, k, qtd=0; int t[10]; scanf("%d %d", &n, &m); while (n != 0 || m != 0) { for (i = 0 ; i < m; i++) { scanf("%d", &t[i]); if(t[i] == t[i-1]){ qtd++; } } printf("%d\n", qtd); qtd = 0; scanf("%d %d", &n, &m); } return 0; }
  17. Resolveu, muito obrigado! Desta maneira, também resolveria o problema!!
  18. ele está ignorando esse if onde existe o retorno -2. Quando o Delta está sendo negativo apresenta as seguintes saídas : raiz de x1:-1.#J raiz de x2: 1.#R Dessa maneira funciona perfeitamente, mas o enunciado diz que quer somente a função ResolveEquação, em tese não precisaria da Função Delta, mas só consigo avaliar as condiçõe para os returns, se tiver ela. #include<stdio.h> #include<math.h> void ResolveEquacao2Grau (float a, float b, float c, float *x1, float *x2) { float d; d = sqrt( b * b - 4 * a * c); *x1 = - (b + d) / (2 * a); *x2 = (d - b) / (2 * a); } int Delta(int a, int b, int c){ return b * b -4 * a * c; } int main(void){ float a, b, c, px, p2, delta; printf("Digite o lado a:"); scanf("%f", &a); printf("Digite o lado b:"); scanf("%f", &b); printf("Digite o lado c:"); scanf("%f", &c); delta = Delta(a, b, c); ResolveEquacao2Grau(a, b, c,&px, &p2 ); if (delta == 0 && a !=0){ printf("as raizes apresentam o mesmo valor = %lf\n", p2); } if (delta < 0){ printf("Nao existem raizes reais\n"); return -2; } if (a == 0){ printf("os coficientes nao formam uma equacao do segundo grau pois o coeficiente a = 0\n"); return 1; } if (p2 != px){ printf("raiz de x1:%0.2f\n", p2); printf("raiz de x2: %0.2f\n", px); } return 0; }
  19. Apresentou erro, " redeclaration of 'd' with no linkage".
  20. Tipo, eu queria meio que retornar o delta, na função main, sacou ? Porque só com ele eu poderia printar se existem ou não raízes reais, e se as raízes seriam iguais tlg ? Eu consegui resolver, criando outra função Delta. Entretanto, não sei se era permitido, mas funcionou.
  21. Eu não poderia retornar por paramêtro, porque no exercício pede que a função e seus paramêtros sejam somente aqueles.
  22. @mauro_b Então, já tentei isso. Mas não funciona, no caso eu queria apresentar uma mensagem na main, que não existe raízes reais quando o delta < 0.
  23. Gente eu precisaria declarar o delta (d) na função main, para adicionar retornos : return -2 caso a equação não possua raízes reais. só que quando tento fazer isso, não funciona. e outro retorno para quando as raízes apresentarem valores iguais, mas pra isso eu preciso do delta. #include<stdio.h> #include<math.h> void ResolveEquacao2Grau (float a, float b, float c, float *x1, float *x2) { float d; d = sqrt( b * b - 4 * a * c); *x1 = - (b + d) / (2 * a); *x2 = (d - b) / (2 * a); } int main(void){ float a, b, c, px, p2, d; printf("Digite o lado a:"); scanf("%f", &a); printf("Digite o lado b:"); scanf("%f", &b); printf("Digite o lado c:"); scanf("%f", &c); if (d < 0){ return 2; } if (a == 0){ printf("os coficientes nao formam uma equacao do segundo grau pois o coeficiente a = 0\n"); return 1; } ResolveEquacao2Grau(a, b, c,&px, &p2 ); printf("raiz de x1:%0.2f\n", p2); printf("raiz de x2: %0.2f\n", px); return 0; }
  24. Abaixo está a questão e o codigo, ele apresenta saída correta, só que se digito n = 0, o programa encerra, e ele está dando time limite excededd no URI. Faça um programa que leia um valor e apresente o número de Fibonacci correspondente a este valor lido. Lembre que os 2 primeiros elementos da série de Fibonacci são 0 e 1 e cada próximo termo é a soma dos 2 anteriores a ele. Todos os valores de Fibonacci calculados neste problema devem caber em um inteiro de 64 bits sem sinal. Entrada A primeira linha da entrada contém um inteiro T, indicando o número de casos de teste. Cada caso de teste contém um único inteiro N (0 ≤ N ≤ 60), correspondente ao N-esimo termo da série de Fibonacci. Saída Para cada caso de teste da entrada, imprima a mensagem "Fib(N) = X", onde X é o N-ésimo termo da série de Fibonacci. Exemplo de EntradaExemplo de Saída 3 0 4 2 Fib(0) = 0 Fib(4) = 3 Fib(2) = 1 #include <stdio.h> unsigned long long fib(unsigned long long n) { if (n == 1) return 1; else if (n == 2) return 1; else return fib(n - 1) + fib(n - 2); } int main(void) { unsigned long long n, t; scanf("%llu", &t); while(t--){ scanf("%llu", &n); printf("Fib(%llu) = %llu",n, fib(n)); } return 0; }
  25. Boa tarde, alguém poderia me ajuda na construção desse programa, pois estou meio perdido como fazer na parte de quando apenas um valor for negativo a partir dai nao sei como fazer, a parte de função EhTrianguloRetangulo ja está funcionando. 2. Escreva um programa em C que utiliza o teorema de Pitágoras para auxiliar na criação ou verificação de triângulos retângulos. O teorema diz que em um triângulo retângulo com dois catetos a e b e hipotenusa c, a relação entre esses lados se dá pela fórmula: �� + �� = ��. O seu programa deve iniciar solicitando ao usuário para inserir os valores para a, b e c. De acordo com os valores digitados, o programa deve apresentar as seguintes saídas: • Caso o usuário insira valores válidos para todos os lados (�, �, � > �), o programa deve indicar se esses valores formam ou não um triângulo retângulo; o Para isso, crie uma função chamada EhTrianguloRetangulo que retorna um valor booleano indicando se os parâmetros recebidos formam ou não o triângulo retângulo; o Utilize essa função no programa principal; • Caso um, e apenas um, dos valores inseridos seja inválido (� ⊕ � ⊕ � ≤ �), o programa deve calcular e apresentar o novo valor desse lado para formar um triângulo retângulo; o Crie uma função chamada FormaTrianguloRetangulo que, recebendo como parâmetros o valor dos três lados, sendo um deles inválido, calcule e retorne o novo valor desse lado para formar o triângulo retângulo; o Essa função deve retornar o número inteiro -1 quando o lado não pôde ter sido calculado (quando mais de um parâmetro for inválido); o Utilize essa função no programa principal; • Caso o usuário insira valores inválidos para mais de um dos lados, o programa deve apresentar uma mensagem indicando que a entrada é inválida; o Utilize o retorno da função anterior para verificar essa situação. Codigo até o momento: #include <stdio.h> #include <math.h> int EhTrianguloRetangulo(int a, int b, int c){ int conjunto; conjunto = (c * c) == (a * a) + (b * b); return conjunto; } int main(void){ int cateto1, cateto2, hipotenusa; int triangur; printf("Digite o primeiro cateto:"); scanf("%d", &cateto1); printf("Digite o segundo cateto:"); scanf("%d", &cateto2); printf("Digite a hipotenusa:"); scanf("%d", &hipotenusa); triangur = EhTrianguloRetangulo(cateto1, cateto2, hipotenusa); if (triangur){ printf("Eh triangulo retangulo"); return 1; }else{ printf("nao eh triangulo retangulo"); return 0; } return 0; }

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