Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.258
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Olá O Problema 1 vetor com 04 elementos; O programa necessita encontrar o maior e o menor elemento do vetor; Aplicar a função recursiva e imprimir os números entre o maior e menor número encontrado (em ordem decrescente). ***A suposta tentativa de solução é distante do problema. Comecei pelo vetor; ele supostamente existe — não há indicação de carregar, solicitar ou ler os seus 4 elementos. #include <stdio.h> int main (void){ int vetor [4]= {1,3,2,4}; ... return 0; } Daí, assuma-se o primeiro elemento, sendo maior e menor, e continua num laço. #include <stdio.h> int main (void){ int vetor [4]= {1,3,2,4} ,menor ,maior; maior= menor= vetor[0]; for (int i= 1 ; i<4 ; ++i) if (vetor[i]>maior) maior= vetor[i]; else if (vetor[i]<menor) menor= vetor[i]; /* ... */ return 0; } @Luan Nicoluzzi ***Confundiu histórias quando imprime ou solicita cada dado no laço.
  2. Olá! O Problema Faça um programa que leia um valor N e crie dinamicamente um vetor de N elementos e informe a média, o maior e o menor dos valores fornecidos pelo usuário. Além disso, antes de finalizar o programa, deve-se liberar a área de memória alocada. Uma análise. Supostamente, N≥0, porque é quantia de elementos, tratando-se de leitura (Ler), o programa não segue e não finaliza enquanto não ler N. Tua expressão é mais para solicitar que leia (no caso do teclado), porque não se checa a N<0 para quantidade de elemento. Abaixo expresso, o que para mim é um ler N. while (q<0) { printf ("%c%s",'\r',"Entre com a quantidade de elementos: "); int c= getchar (); if (EOF==c) { perror ("Abortar quantidade de elementos"); return 1; } if ('\n'==c) continue; ungetc (c,stdin); scanf ("%d",&q); while ('\n'!=(c= getchar ()) && EOF!=c); } O fluxo não cederá enquanto N<0; ele repetirá a leitura do decimal. Ate que... depois Nada disso, não é — supostamente — uma solicitação. Mas, sim, leituras! ***O fundamento é mesmo, não ceder até ler N dados, e incrementar somente depois de testar a leitura (Ler 1 de N).
  3. Precisa não, tu queres (...) que, após digitalização dum número (especificamente decimal), cheque-o para negativos e ignore-o. /* Asuma que 0 é positivo, e neutro */ if (decimal<0) continue; if (decimal>maior) maior= decimal; if (decimal<menor) menor= decimal; ou /* Asuma que 0 é positivo, e neutro */ if (decimal>-1) { if (decimal>maior) maior= decimal; if (decimal<menor) menor= decimal; } Notei Qual é valor na `num` ? — Arbitrário, ele é logicamente errado. ***Resolve-se com maior e menor iguais ao primeiro valor da lista, numa primeira leitura que está fora do laço. Ou inicializar após checagens durante o laço. char flag= 1; do { printf ("\rNumero : "); scanf ("%i",&num); if (0>num) continue; if (flag) maior= menor= num , flag= 0; if (num>maior) maior= num; if (num<menor) menor= num; } while (num)/* stop 0 */; ***Um deles é insinuar o desejo de ignorar os números negativos enquanto o laço continua para os positivos. Enfim, algos assimn, para mim, já é bom! C'11 - gcc '11.4 #include <stdio.h> int main (){ int maior ,menor ,num= 1; char flag= 1; do { printf ("\rNumero : "); num= -1; scanf ("%i",&num); if (0>num) continue; if (flag) maior= menor= num , flag= 0; if (num>maior) maior= num; if (num<menor) menor= num; } while (-1<num)/* stop ... ,-1 */; putchar ('\n'); printf ("%s%d%c%d%c","O menor e o maior número é: ",menor,' ',maior,'\n'); return 0; } — Okey ??
  4. @immoraesz Olá ***Se o valor atual `num` é maior, ou menor, então, atualizam-se suas posições e os valores maiores, ou menores, sequencialmente. Disso: Talvez seja isso: /* Admite-se inicialmente que 0 é uma não posição. */ int atual ,maior ,m= 0/* posição do maior. */ ,menor ,n= 0/* ...menor. */ ,y/* sendo a posição atual */; ... /* Defina-se m,n */ if (!m || atual>maior) maior= atual , m= y; if (!n || atual<menor) menor= atual , n= y; Suponho que assim definira m, n acertadamente.
  5. Ansi C

    C++ Maior e Menor e posições

    Olá! O Problema Escreva um programa que leia 10 números inteiros e os armazene em um vetor. Imprima o vetor, o maior elemento (número e posição) e o menor elemento (número e posição). Uma analise ***Observe o verbo! Ler 10 números como inteiro (supostamente decimal) Existem, pelo menos, três notações de inteiros: hexadecimal, decimal e octal; aqui está especificamente o decimal (“%d”) … Notei: Errou ao especificar o formato na `printf`, porém usou um acertadamente na `scanf` De volta à leitura de números inteiros, assuma decimais sendo 1/3 dos padrões de leitura de inteiros, daí, pressuponho que o especificador adequado ao problema de ler (…) inteiros é “%i”, porque esse argumentará, simultaneamente, aqueles 3 padrões. C'11 - gcc '11.4 int numeros[10];/* sendo o conjunto de números lidos */ /* Leitura de 10 números inteiros (de base: octal, decimal ou hexadecimal )*/ for (unsigned i= 0 ; i<10 ; ++i){ int elem= i+ 1; printf ("%c%s%d%s",'\r',"Digite o valor do elemento ",elem,": "); elem= getchar (); if (EOF==elem) break; if ('\n'==elem) { --i; continue; } ungetc (elem,stdin); /* Ler o inteiro; se falha, então, descarta 1 elemento */ if (1!=scanf ("%i",&elem)) --i; /* ^~~~ Isto é, opcionalmente, hexadecimal, decimal ou octal */ else numeros[i]= elem; while ('\n'!=(elem= getchar()) && elem!=EOF); } Armazenar Na porção da memória que é sabidamente um vetor. Encontrar (esse é implicito) A partir daquele vetor, o seu maior e menor elemento (valores e posiçções) Imprimir Os resultados, supostamente no simulador de terminal.
  6. Ansi C

    maior menor em c

    Essa, talvez, não seja a questão! Supostamente, há captura duma lista de números, depois, para cada ocorrência de número negativo, é necessário entrar com positivo. A propósito, a fonte da lista não é o teclado + usuário, não tem sentido ser deste jeito. Essa lista tem outras fontes: neste caso, acho melhor o arquivo texto (TXT). *** O segundo prompt acontece depois da captura da lista. Nada disso! 1. Lista (o punhado de número no arquivo.txt); 2. Leituras de positivos (que corrigem os casos negativos); 3. Aquele relatório. Para mim, algo assim é bom: C'11 - gcc '11.4 #include <stdio.h> int main (int argc, char *argv[]) { FILE *f= NULL; if (argc<2 || NULL==(f= fopen (argv[1],"r"))) { perror ("Falha! Não encontrou o arquivo"); return 0; } int numero= 0 ,maior= 0 ,menor= 0 ,soma= 0; while (fscanf (f,"%d",&numero)==1) { if (0==numero) break; while (0>=numero) { printf ("%c%s%d%s",'\r',"Erro número não positivo (",numero,"): "); int c= getchar (); if (EOF==c) break; if ('\n'==c) continue; ungetc (c,stdin); if (scanf ("%d",&numero)!=1) getchar (); } if (soma) { soma+= numero; if (numero>maior) maior= numero; else if (numero<menor) menor= numero; } else { soma= maior= menor= numero; } } putchar ('\n'); printf ("%s%d%c%d%c","O maior e o menor número é: ",maior,' ',menor,'\n'); printf ("%s%d%c","A soma dos número é: ",soma,'\n'); return 0; }
  7. Olá, observem. O Problema Algoritmo contendo a altura e o sexo (masculino, feminino) que calcule e escreva. A maior e a menor altura do grupo é: A média de altura das mulheres ... é: O número de homens ... é: Uma Analise Há alguma indicação de interação (dado-a-dado) com o usuário? — Acho que não, e nem há indicação do tamanho do grupo. A condição de parada do algoritmo, supostamente, não é um limite quantitativo, mas sim, talvez, um sinal (flag): nota-se que a informação é composta dum par de dados (altura e sexo: sendo “masculino” ou “feminino”) e o grupo, aparentemente, é uma corda de informação. E sabe-se que as cordas acabam em 0 ('\0'). ***Para min, deve-se uma revisão de prompt.
  8. Isso acima, insinua-me um estudo a pagar na solução do exercício, se tem no apontamento, então, é requisito. Dica: Apresente-o uma solução que vem com a função `sqrt`
  9. def executar_selection_sort(lista): lista_ordenada = [] while lista: minimo = min(lista) lista_ordenada.append(minimo) lista.remove(minimo) return lista_ordenada lista=[ 10,9,5,8,11,-1,3 ] #Isto Declara a lista lista=executar_selection_sort(lista) # I. Isto atribui o retorno print(lista) #II. Isto produz a lista com resultados do retorno Porque faltam declarações: I. atribuir o retorno II. chamar uma função que produza, por exemplo, ´print´ que produz resultados no simulador de terminal.
  10. E no VISUALG3 escreval("Com juros de 20%, pagarei R$",jurostotais) escreva("Vou pagar em quantas parcelas ?") leia(parcelas) se parcelas<=0 então parcelas <- 1 fimse valorPorParcela <- jurostotais/parcelas escreva("Cada parcela terá o valor de:",valorPorParcela)
  11. @Samuel Fortes Brasil Olá Bem-vindo ao CdH! Sobre o problema, aparentimente há uma operação de divisão com divisor de valor 0; Logo, suponho, que esteja aqui. Não encontrei outras operações de divisão com capacidade para produzir essa mensagem de erro: Tem aqui, 100, uma variável constante e maior que 0. Sugestão: Depois da leitura de `parcelas`, verifique a variável para valores maiores que 0, porque divisão com divisor de valor 0 sabemos que não podemos. Adendo: Analise, de fato pode uma quebra de linha fora dos limites duma string literal, desse modo. `/n ` é certo? Note que no final do nome da variável há um pedaço de aspas, está certo?
  12. Olá @devair1010 Somente isso É, o que é: x não representa, explicitamente, a quantia de números amigos solicitados — como aparentemente supunhas —, mas sim, x representa com os coeficientes a definição de y, sendo y um máximo de n (o amigo do amigo)
  13. Ansi C

    C++ maior e menor altura

    Esse exercício é um clássico, tem aquela abordagem dos maximo, mínimo e meio: Por exemplo. /* * FÓRUM CLUBE DO HARDWARE --- CdH * @Ansi C * 2014 */ typedef unsigned altura;/* Considera-se alto\baixo sempre acima do chão. */ #include <stdio.h>/* Include the header file for input and output */ int main (){ altura nova= -1 ,menor= -1 ,maior= 0; /* Sendo 0 logicamente o chão, e -1 o céu */ printf ("Entre com 5 alturas (use a Espaço ou a Enter entre elas):\n"); for (unsigned idx= 1 ; idx<=5 ; ++idx) { printf ("%c%s",'\r',">>>"); nova= -1; int c= scanf ("%u",&nova); if (c!=1 || ((int)nova)<=-1) { /* Ou seja, uma nova é muito abaixo do céu até o chão */ if (c==EOF) break; if (c!=1) getchar (); idx-= 1; } else { if (maior<nova) maior= nova; if (menor>nova) menor= nova; } } printf ("%s","Resultado: \n\t"); printf ("%s%u%s","<: ",menor,"\n\t"); printf ("%s%u%c",">: ",maior,'\n'); return 0; } Eu acho que é isso.
  14. Meu palpite é ..., incompatibilidade de codificação de arquivo. Sendo isso, então, talvez, corrija-se quando declara a função com o parâmetro Encoding , explicitamente. Bem-vindo ao CdH!
  15. Eu compreendi você "assim que bati com os olhos..." Enfim, de fato, o programa produziu - para mim, somente isso bastaria. Modifiquei-o sutilmente nos nomes das variáveis com termos que considero didáticos - o programa permanece (o mesmo). /* * FÓRUM CLUBE DO HARDWARE --- CdH * * @jaireeugenio * Membro Junior * 2024 */ #include <stdio.h> int main (){ int divisor ,soma ,amigo ,x= 3; scanf ("%d",&x); x*= (x>3)? 1500 : 1000; for (int numero= 2 ; numero<=x ; numero++) { amigo= 1; for (divisor= 2; divisor<=(numero/ 2); divisor++) { if ((numero% divisor)==0) amigo+= divisor; //calcula a soma dos divisores } soma= 1; if (amigo!=numero) for (divisor= 2; divisor<=(amigo/ 2); divisor++) { if ((amigo% divisor)==0) soma+= divisor; } if (numero==soma && numero<amigo) { printf("(%d,%d)\n",numero,amigo); } } putchar ('\n'); return 0; } *Prefiro um contador à expressão x.
  16. ... Já com leitura de 10 idades, assume-se que 10 é uma informação (nem mais, nem menos) — somente 10 satisfaz. /* * UM EXEMPLO DE LEITURA (e produz durante) */ #include <stdio.h> /* Include the header file for input and output */ #include <stdlib.h>/* ...memory management and other algorthms */ int main (){ int idade; int count; for (count= 1 ; count<=10 ; count++) { printf ("%c%s%d%s",'\r',"Entre com ",count,"ª idade: "); count-= 1; int c= getchar (); if (EOF==c) break; if ('\n'==c) continue; ungetc (c,stdin); idade= -1; scanf ("%i",&idade); if (idade>=0) { if (idade>=18) printf ("%i\n",idade); count++; } while (EOF!=(c= getchar ()) && '\n'!=c); } putchar ('\n'); return 0; } Aqui, diferentemente, a [Enter] não encerra suas 10 leituras. E repeito, se consegue refinar alguma coisa, então, faça-o. Para mim, ele já confere com 10 leituras.
  17. Portanto, #include <stdio.h> /* Include the header file for input and output */ int main (){ int sep= 0; printf("Informe \"Até\" 10 idades para o sistema:\n"); for (int count= 1 ; count<=10 ; ) { int c= getchar (); if ('\n'==c || c==EOF) break; ungetc (c,stdin); int idade= -1; c= scanf("%d",&idade); if (idade>=18) { printf("%c%d",sep,idade); sep= ' '; } if (idade>=0) ++count; if (c!=1) getchar (); } putchar ('\n'); return 0; } Além disso, talvez algum refinamento, aplique-os se julgas necessário, porém, para mim, ele confere com solicitar 10 idades…
  18. Você quis dizer com exercícios resolvidos? Ah! Não tem não, mas essa é sua opinião e respeito. Apesar de discordar dela: Para a maioria já é o suficiente ter o como determinar 1 par - e fica como exercício expressar o 'como adquirir um par de números ... Especificamente, expressar com a C - sem pressa qualquer um faz essa "missão" Ai sim, eu concordo.
  19. [OPINIÃO] Suponho que isso satisfará o professor, e no mínimo tirará do autor do tópico uma oportunidade de aprender algo com erros (e de qualquer outro também). Hoje em dia, considero essa categoria de postagem um atraso. Mas, solução é boa.
  20. Agora compreendo — aposta, sendo um sorteio manual dos números pelo apostador. ]
  21. Quem costuma chamar isso de aposta?
  22. Onde está tua maior dificuldade? Em C, na Geometria Plana? Quem sabe, talvez: nos dois assuntos? É possível ensinar/aprender programação na matemática, física, etc., inclusive havia nome para essa coisa: Informática para Educação. Entretanto! O melhor é expressar primeiro a solução matematicamente: com variáveis e resultados conhecidos, daí supostamente a solução c fluirá. Essa é minha sugestão: Se não fez, então, faça uma solução com lápis, borracha e um cebo de Geometria Plana, depois aplique sem pressa ao C.
  23. Eu entendo, e tu compreendes, que os programas são simulações\representações pouco ou quase nada perto da realidade material das coisas; logo, não existe o sorteio material, real ou manual em sistemas analógicos e digitais: há somente algoritmos. E DAÍ Supostamente, o exercício é algo acerca de iteração sobre vetores e números randomizados (ou qualquer coisa semelhante) que, para mim, resolve em Algoritmo de Embaralhamento. Sugiro que defina uma função que tem como argumento formal um vetor e que retorna o valor dum elemento desse vetor; bolas é um bom nome para o vetor. Antes exclua (aplique exclusão lógica) a bola sorteada de bolas. Além de retornar uma bola do vetor, aquela função aplica em bolas a cada chamada o algoritmo de embaralhamento, o que, para mim, confere razoavelmente com 'sorteio manual ': ação de agitar o saquinho de bolas e pegar uma. Acho que isso agradará teu professor! A mim, muito agradaria. ***Se essa não é a pergunta, então, desculpe-me.
  24. Abaixo, trago-lhes a lista com os 40 primeiros números amigáveis — para simples conferência. amigos.txt 01. 220 280 02. 1184 1210 03. 2620 2924 04. 5020 5564 05. 6232 6368 06. 10744 10856 07. 12285 14595 08. 17296 18416 09. 63020 76084 10. 66928 66992 11. 67095 71145 12. 69615 87633 13. 79750 88730 14. 100485 124155 15. 122265 139815 16. 122368 123152 17. 141664 153176 18. 142310 168730 19. 171856 176336 20. 176272 180848 21. 185368 203432 22. 196724 202444 23. 280540 365084 24. 308620 389924 25. 319550 430402 26. 356408 399592 27. 437456 455344 28. 469028 486178 29. 503056 514736 30. 522405 525915 31. 600392 669688 32. 609928 686072 33. 624184 691256 34. 635624 712216 35. 643336 652664 36. 667964 783556 37. 726104 796696 38. 802725 863835 39. 879712 901424 40. 898216 980984
  25. Eu concordo E, supostamente, será a partir do 10⁠º número amigável que o custo do cálculo aumentará; há outra estratégia para minuir o tempo de produção, gravar no disco (tabela.txt) os novos números gerados e servi-lo como a tabela de consulta e agilizar a produção naquela função para índices menores que os que já existem | Por exemplo amigos (10);/* * Isto gera e grava (.txt) 10 números amigavéis * e produz somente o 10o número no simulador */ Se chamasse a função para índices ≤ 10, sua resposta viria do arquivo (.txt). Enquanto, para índices maiores que 10, a ação é gravar no arquivo todos os números até o índice no argumento, e produzi-lo. É algo que, sem pressa, qualquer um consegue essa expressão em tempo (resposta); -- uma resposta que, para mim, é\seria das boas.

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!