Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Essa parte difere dessa No contexto de seu programa A é menor1 e B é menor2, e duracao é duracao mesmo. senao_se é else if
  2. Depois que lê menor1 e menor2, é preciso garantir que o valor em menor1 < menor2 Aplique a lógica SE A > B: TMP= A A= B B= TMP Assim garante que os valores em (menor1 e menor2) estão em ordem crescente (do menor para vice-menor) Dentro do ciclo verifique com a mesma lógica aplicada a um novo valor while (!feof(fp)) { fscanf(fp, "%i",&duracao); SE A > duracao: B= A A= duracao; SENAO_SE B > duracao: B= duracao; }
  3. :)Vamos aguarda a explicação de outro membro porque eu já fiz o meu melhor
  4. A, B são nomes genéricos que no contexto de teu programa são: menor1, menor2, respectivamente. Suponho que os dados no arquivo Maq1.log estão codificados sobre texto e de conteúdo formatado num seguimento de números inteiros separados por espaço, como uma lista de números inteiros. Antes precisa estabelecer o fluxo de comunicação entre arquivo e o programa. FILE *fp= fopen("Maq1.log", "r"); if (fp == NULL) { printf("Erro ao abrir arquivo."); return 1; } Penso que Maq1.log está na mesma pasta que o programa, pois essa é condição única para abrir fluxo apenas com nome no parâmetro filename da função fopen. Agora que tem comunicação com os dados vamos pegar dois números (menor1, menor2). FILE *fp= fopen( "Maq1.log", "r" ); if (fp == NULL) { printf("Erro ao abrir arquivo."); return 1; } int menor1= 0, menor2= 0; if (2 > fscanf( fp, " %d%d", &menor1, &menor2 )) { puts( "..." ); //<--- Mensagem para alertar de uma falha que impediu // a leitura de dois inteiros, inicialmente. return 1; } //... Abaixo aplique o que tentei explicar-te... Depois prepare para fazer o mesmo com “loop” de leituras. Caso sinta muita dificuldade de faze-lo é porque não entendeu essa lógica. Tudo bem! Outros membros fórum discutirão mais lógicas e de outras formas mais fáceis de fazer entender. No aguardo.
  5. @muh.prog O fluxo de entrada do aquivo está aberto e pronto? Basta ler dois dados inicialmente A e B para servir de base no ciclo de verificações, antes de começar o clico verificamos qual de dois valores nas variáveis é o menor e ordenamos eles A > B então troque os valores delas. Se A > B: TMP= A, A= B, B= A No corpo do clico de leitura aplicamos a mesma lógica, mas acrescida de mais um termo; dessa vez o NOVO valor pode ser menor que A então caso isso se confirme passamos para o B o valor de A, e A recebe o NOVO. Se não é menor que A ainda é possível que seja menor que B então testamos para B e trocamos de valor se confirma menor que B. lógica para o ciclo: SE NOVO < A: B= A, A= NOVO SENAO_SE NOVO < B: B= NOVO Parece óbvio notarmos que A sempre tem o menor valor, e B o vice-menor para todo Novo valor menor em A
  6. Ansi C

    C Raiz quadrada

    Teu programa compila sem erros, mas faças os teste e se encontrar erros sintáticos e lógicos "Comente que a postagem é de graça" [citação @Boko Moko] #include <stdio.h> #include <stdlib.h> float raiz( int a ){ int n=0; /* Código extraido da equaçao de pell da qual permite encontrar a parte inteira de uma Raiz*/ int i=1; /* quadrada simplesmente subtraindo inteiros ímpares. Exemplo: Raiz de 19.*/ while (a>=i) { /* 1. 19 - 1 = 18 Como 3 é menor que 9 a sequencia para aqui*/ a=a-i; /* 2. 18 - 3 = 15 Como 4 subtrações foram efetuadas, entao a*/ i=i+2; /* 3. 15 - 5 = 10 resposta é 4.*/ n=n+1; /* 4. 10 - 7 = 3*/ } if (a==0) { return n; } else { int b= a*100; // b equivalente a * 100 int k = 0; // int c= (n*20)+1; // c é o n transformado em equivalente ao i while (b>=c) { b=b-c; c=c+2; k=k+1; } float e= k/(float)10; float d= n + e; return( d ); } } int input( char mensagem[] ){ int entrada= 0; printf("%s",mensagem); scanf(" %d",&entrada); return entrada; } int main( int argc, char *argv[] ){ int valor = input("Digite o número para tirar raiz ou 0 para terminar"); while (valor) { printf("A Raiz quadrada é %.2f\n:", raiz(valor)); valor = input("Digite o número para tirar raiz ou 0 para terminar"); } return 0; }
  7. Obrigado pela oportunidade de ajudar.
  8. É porque DELTA: b*b - (4*a*c) É negativo, a raiz quadrado de um número negativo gera esse código impresso. Temos que testar se DELTA < 0 antes de calcular a RAIZ quadrada dele, Lá na função: float d= b * b - 4 * a * c; if(d < 0) return -1; d= sqrt( d ); *x1 = - (b + d) / (2 * a); *x2 = (d - b) / (2 * a); return d;
  9. Huuummm já existe um d, vou corrigir Retirei o float
  10. Calculará o delta duas vezes! Tente retorno da função
  11. Aah então é por retorno de função. No lugar de void? Assim: int 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); if(d < 0)return -2; return 0; }
  12. Sua função usa retornos por mudança de parâmetro. Como gostaria de retorna o status -2 Por parâmetro ou por retorno de função no lugar de void?
  13. Quando delta é negativo ou menor que 0. Coloque o sinal (-) A desculpa, notei agora que sua função não retorna por mudança de parâmetro o delta.
  14. Ansi C

    C Raiz quadrada

    Percorri o histórico do autor do programa e fez 3 anos que ele não atualizou, porém, até hoje é possível testar seu programa. Já o teu @kisne usa o método da equação de Pell Quando a difere de 0 você escreveu o quê?
  15. Explique o que pensou. Ou escreva o enunciado do problema. Qual a dúvida?
  16. Eu fui agora mesmo ver essa discussão, existem 2 membros: @arfneto @eduheavy O conteúdo é igual e o autor marcou solução. Enfim, tem esse assunto na Wikipedia. https://pt.wikipedia.org/wiki/Dígito_verificador#:~:text=Considerando o número 2615336%2C onde,verificador gerado pelo módulo 11.
  17. Siga a sucessão de tarefas no exercício. A próxima é: "Mostre o vetor com valores gerados" É procedimento um pouco menos difícil que gerar o vetor. Nesse só mostrar os valores no vetor, para isso é necessário um 'loop' que escala cada índice nele e imprime (printf) seu valor. Conhece Loop? SIM! Conhece Função printf? SIM! Todas essas coisas são necessárias para escrever os comandos que imprime o vetor. Ordenar esse vetor é com método de ordenação, dependendo do nível do estudo eu recomendo buscar um algoritmo de ordenação da Wikipeda. Ou vídeos p.ex: bubble sort. A importância do vídeo é que pode repetir quantas vezes quiser, mudar a velocidade e parar nos momentos de maior dúvida.
  18. Este é o enunciado
  19. Comece definindo e preenchendo um vetor com números aleatórios. Onde está seu vetor? É um exercício? Tem enunciado? cadê.
  20. kkkkkkkkkkk Nós sabemos. https://en.m.wikibooks.org/wiki/C_Programming/Procedures_and_functions https://stackoverflow.com/questions/26719339/procedures-and-functions-in-c Existem muitas outras mais "discussões" Essa distinção às vezes ajuda quando o objetivo é ensinar e não atrapalha. No caso temos uma função que retorna com 'status' no fim do método Se tem DV retorna seu número Senão: retorna -1 Vou deixa-los em sua conversa @eduheavy
  21. É justo! Porque essa parte penso ser a principal do seu exercício. Ela é o exercício! Eu posso notar que não encontrou o significado de: "A função calcula_dv() deve retornar um valor inteiro" Se é uma função seu retorno vem com valor. Se fosse procedimento seu retorno vem sem valor. Void é tipo que represente tipo algum, uma sub-rotina que retorna void não é função, é procedimento. Essa sub-rotina é do tipo (void) procedimento com retorno sem valor que... Escreva uma função, e que seu retorno vem com valor do tipo inteiro. Destaque as dúvidas com perguntas objetivas OU Os outros vão ter que advir para te ajudar.
  22. Ansi C

    C Jogo da memoria simples

    Agora parece que entendemos razão por trás do troféu.@skyneGKL Lógica seria igual a de um humano diferente apenas no palpite que precisa está numa faixa superior de valores. Concorda? Jogos de memória são solitários quando sem um revival. Isso é clássico até onde lembro, jogos da memória tipo Genius O que está escrevendo é parecido com senha do cofre? Eu também não entendi completamente. Jogo de memória contra computador é possível, mas é muita ironia.
  23. @Midori @Augusto CesarC Eu penso que no interior do loop se define outra variável i. int n, i;<--------------------+ cin >>n; | string texto[n]; | for( int i ; i < n ; ++i ){ | .... | } | +-----------+ | cout << texto[i]; ~~~~~~^~ | +------> Essa pertence o escopo da funação É definida com valor inicial (na ocasião) da memória
  24. WTF! Errei!!! Desculpa @Eder Neumann Minha dica é para o@Manoel Constantino Não há motivo na economia de uma letra r, até hoje não entendo! Enfileira Enfileirar
  25. @Augusto CesarC O i no espeço da loop for não é o i no espaço da função, são variáveis de identificação igual. A falha é por causa da i no espaço da função, seu valor com certeza é fora da capacidade da matriz, nesta ocasião: Experimentem p.ex. i= 0; cout <<nome [i]; e logo entenderão

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!