Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.220
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. 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!
  2. 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.
  3. ... 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.
  4. 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…
  5. 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.
  6. [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.
  7. Agora compreendo — aposta, sendo um sorteio manual dos números pelo apostador. ]
  8. Quem costuma chamar isso de aposta?
  9. 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.
  10. 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.
  11. 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
  12. 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.
  13. Uma solução depende da adição (ou soma) dos divisores. Se fosse para mim, tu me satisfarias com uma função, uma que determine aquela soma. Isto abaixo tem potencial para declarar essa função. ~x~ Só que não; porque há n1 == n2 ou n1>n2 e neste caso eles não são amigos ou são amigos repetidos. Suponho que uma solução seja a determinação de pares amigos, porém teu código-fonte me inspira muito mais uma checagem: checa-se n1 e n2 são amigos. Isso me parece pouco certo! Espero mais por uma determinação do amigo a partir de um argumento como ordinal. Por exemplo: amigos (1);/* * Isto produzirá 220 284, * o primeiro par de amigos */ Suponho que assim teu professor ficará satisfeito — eu ficaria
  14. Entendo... E será durante o prompt que produz a saída ou não? Neste caso, depois que memoriza ('bufferiza') 10 idades? Teu código-fonte, inspira-me ser durante; ou seja, ler 10 idades, e o seu enunciado não; ou seja, solicitar 10 idade(s). Há diferença entre as ações. Concordo Supostamente, se há vetores no apontamento, então esse é o modo.
  15. @devair1010 organização e compartilhamento. Organização Aos iniciantes, quase sempre, inspira-se depositar declarações neste tipo. Vê-se, pelo menos, assim um para: Declaração de tipos ... macros ... funções ... variáveis globais coisas comuns com compartilhamento no projeto.
  16. @Gustavo Rossi0101 Qual a duvida, onde fica tua maior dificuldade? -
  17. @ignite137 Olá. Para expressar o PROCESSAMENTO com C, é requisito uma expressão com matemática. Semelhante o que já foi dito, a partir da informação de entrada determine a área da superfície total da caixa em metros quadrados (At m²): sendo a soma da área da superfície das 6 faces. At = 2xy + 2xz + 2yz Em seguida, suponha cada razão do enunciado. Sendo a primeira a quantidade de tinta total para o serviço, uma razão de um metro quadrado por 3 litros de tinta (1 m²/3l). At m²/(1 m²/3 l) › (At m² • 3 l) /m² › 3At litro(s) *Suponho a quantidade de tinta sendo o produto da área da superfícies por 3. Em seguida, para cada 10 metros quadrados é necessário um novo rolo de tinta que custa R$ 5,00 (10 m²/5 r › 2 m² /real) At m²/(2 m²/real) › (At m² • real) /2 m² › ½At real *Suponho o custo com rolos sendo a metade da área da superfícies. continua...
  18. Claro, e qual é probabilidade de erro nessa situação? Dum erro que é quase inexistente. Entretanto, culturalmente essa expressão vem com mais uma sentença -- c != EOF Ex. /*Um discarte mais seguro da linha*/ int c = 0; //isso declara a palavra auxiliar no discarte */ while (c != '\n' && c != EOF) /*isso expressa um discarte mais seguro da linha (por ciclo) enquanto a palavra diferir de 'ENTER' e EOF */ c = getchar (); //isso pega uma palavra (int) na linha É mais ou menos assim que os manuais expressão essas coisas, né? Para lógica não faz diferença, não é erro, com ou sem o tratamento.
  19. Erros Internos associados ao fluxo (Input/Output) nos são irrelevantes na compreensão da Lógica, é por esse motivo que, consideramos certas as expressões de @Midori @devair1010 Checar os estados dos fluxos padrões, por exemplo, com uso da função 'ferror', pouco ou quase nada adicionará as suas lógicas / expressões. Sendo mais didático, por exemplo: no caso da expressão do @Midori há pequeníssima possibilidade de ficarmos presos num laço infinito, bem ali, na expressão que nos aponta um descarregar do fluxo de entrada (padrão): while(getchar() != '\n'); # Um tratamento de erro while (getchar () != '\n' && ferror (stdin) == 0) ; Se, potencialmente, a getchar indicasse erro, veríamos o laço sem fim; apesar de tratável, o tratamento é irrelevante na compreensão dessa expressão, de sua lógica e entendimento.
  20. @Diego M. Santos Olá! Estou iniciante nesse assunto (ainda). Parece-nos sinistra a inter-relação. Porque entendemos, o primeiro sendo uma CLI e outro um Editor (supostamente) independentes. Logo, o que acontece se ousássemos instalar (Angular/CLI) a Interface de Linha de Comando do Angular e expressássemos diretamente duma Shell: ng --help, antes de instalar o VSCode ?
  21. @clara leal , Olá (outra vez), por motivos didáticos acrescentarei a mensagem (exemplificação) que, talvez, reforça a percepção de que o cerne não são os números inteiros (Z), porém -especificamente- os positivos (Z+). C'11 in GCC /* main.c --- Uma exemplificação duma variável de controle @ESPECIFICAÇÃO Exemplificação e verificação de user-prompt da informação [#] Agora para continuar com essa operação, diga-nos A QUANTIA de fichas Cliente"s no cadastramento. (0 = anulará operação)? @BUGs Caso falhem -especificamente- na informação (digitação), imprima-se: [!] erro--- quantia inválida. *sendo 'erro' aquela string faltosa. e repetir. @EXPRESSÃO C'11 into GCC 5.2.0 *** by Mauro B. 2024-2 v2 */ #include <stdio.h> int main (void) { int nfichas = (-1); /* sendo quantia de f- Cliente no cadastramento */ char prompt [BUFSIZ]; /* sendo mediador de tipos no cadastramento */ /* Como na interação user-prompt ... */ printf ("%s", "[#] Agora para continuar com essa operação,\n" "diga-nos A QUANTIA de fichas Cliente's para cadastramento.\n" "\n"); for (; printf ("%s", "(0 = anulará operação)? "), fgets (prompt, BUFSIZ - 1, stdin), sscanf (prompt, " %i", &nfichas), (nfichas <= 0) ;) if (nfichas) /* SE difere do 0 */ printf ("[!] %s--- quantia inválida.\n" "Dê-me quantia >= 0.\n\n", prompt); else /* SE 0 */ return (-1); /* retonar status FAILURE */ printf ("%s%d%s", "[#] Informou-nos A QUANTIA de: ", nfichas, " fichas.\n" "\n"); return (0); } /* retornar status SUCCESS */ Ilustração in MS Windows — Numa situação de uso comum, hipoteticamente, o laço encerra na informação de inteiro positivo ou 0 encerra. Entendeu-me nessa lógica /expressão ?
  22. Se diz provavelmente, então prove... Contudo, tuas opiniões (comentário mínimo) talvez ajude outro alguém… (senão tanto faz) Devemos e podemos COMENTAR TUDO.; até expressões simples e quem diz o contrário, quase sempre tem pouco ou quase nenhuma autoridade. Se estou errado, prove! Ex: c = a + b; /*c sendo soma de a e b */ c = a + b; /*c sendo soma de a e b */ — Excelentes Programadores \ professores \ tutores \ iniciantes com um pouco de experiência e até mesmo IA sabem ignorar esses comentários, independentemente de que os escreveu. De todo modo, agradeço à tentativa!
  23. Olá! Suponho haver semelhança entre o queres e o que necessitas. Portanto… Há necessidade (duma informação), sendo ela um elemento no conjuntos dos números inteiros positivos (Z+). Daí… Essa analise superficial foca numa variável de controle, porque, interessa-nos, talvez, o valor nela e não noutra. Logo… Parafraseando-se tua indagação, mais exemplo de interação num caso de uso comum; expressamos o código-fonte assim: C'11 in GCC /* main.c --- Uma exemplificação duma variável de controle @ESPECIFICAÇÃO Exemplificação e verificação de user-prompt da informação [#] Agora para continuar com essa operação, diga-nos A QUANTIA de fichas Cliente"s no cadastramento. (0 = anulará operação)? '''BUGs: Caso falhem -especificamente- na informação (digitação), imprima-se: [!] erro--- quantia inválida. *sendo 'erro' aquela string faltosa. e repetir. @EXPRESSÃO C'11 into GCC 5.2.0 *** by Mauro B. 2024-2 */ #include <stdio.h> int main(void) { int nfichas = (-1); /* sendo quantia de f- Cliente no cadastramento */ char prompt [BUFSIZ]; /* sendo mediador de tipos no cadastramento */ /* Como na interação user-prompt ... */ printf ("%s", "[#] Agora para continuar com essa operação,\n" "diga-nos A QUANTIA de fichas Cliente's para cadastramento.\n\n"); for (; printf ("%s", "(0 = anulará operação)? "), fgets (prompt, BUFSIZ - 1, stdin), sscanf (prompt, " %i", &nfichas), (nfichas <= 0) ;) if (nfichas) /* SE difere do 0 */ printf ("[!] %s--- quantia inválida.\n" "Dê-me quantia >= 0.\n\n", prompt), prompt [0] = '\0'; else /* SE 0 */ return (-1); /* retonar status FAILURE */ return 0; } /* retornar status SUCCESS */ Ilustração no MS Windows — Note a expressão / sentença para inteiro positivo (Z+) ou zero, onde qualquer diferente, hipoteticamente, será FALHA e continuará no seu laço. Isso talvez inspire uma expressão para o teu problema @clara leal
  24. Como quase sempre os fluxos são tipos agregados-lineares (Overwrite), essa solução consistirá na substituição daquele espaço em branco por um caractere de quebra de linha ('\n') — e não inserção. Olá @André T Franco — Semelhante o que já foi dito: Supostamente, essa tua solução ainda não será suficiente, porque a linha recém-definida teria uma soma de strings inferior a 16; essa situação, aparentemente, exige, quando possível, complementar 16 strings por linha, sendo a linha abaixo a fonte dessa complementação: supostamente, após encontrar aquela string de controle, envia-se à saída 16 strings e um quebra de linha (se possível, senão envia o resto).
  25. Quem falou que seus comentários foram desnecessários / qual autoridade? 'ÔXI'!!! A expressão é tua, comente-na livremente (se tem tempo: seja verborrágico). Não perda–tempo com regrinhas, recomendações de estilo e indentação esdrúxulas; se necessário, existem exemplos de expressões bem escritas na pasta da biblioteca padrão da linguagem de programação C. A propósito, alguns dos melhores guias para iniciantes tem comentários em TUDO; e somos autorizados por eles a sermos super didáticos até à nos mesmos. — Sugerem que, inicialmente, expressemos uma solução com algoritmo. Existem 3 tipos principais de algoritmo: a descrição narrativa, o fluxograma e o pseudocódigo. E daí? — Daí que, recomendam mais estudo no seu desenvolvimento lógico e expressão em algoritmo, em seguida, rebaixá-lo à linguagem C, usá-lo para documentar com comentários e aprender, porque a linguagem de programação é somente uma ferramente ( e C é uma das antigas); — Então Existem linguagens muito, …, muito mais idiomáticas que a linguagem C, e mesmo elas, não superam o algoritmo/lógica/comentário.

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