Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.312
  • Cadastrado em

  • Última visita

  1. Boa dia! Quando essa pergunta aconteceu ninguém recomendou ativas todos os alertas do compilador: a.c: In function ‘main’: a.c:13:10: parênteses em torno da comparação no operando de ‘&’ [-Werror=parentheses] 13 | if (A < (B+C) & B < (A+C) & C < (A+B)) | ~~^~~~~~~ a.c:13:34: erro: sugira parênteses em torno da comparação no operando de ‘&’ [-Werror=parentheses] 13 | if (A < (B+C) & B < (A+C) & C < (A+B)) | ~~^~~~~~~ a.c:15:12: erro: sugira parênteses em torno da comparação no operando de ‘&’ [-Werror=parentheses] 15 | if (A==B & B==C) | ~^~~ a.c:17:10: erro: ‘área’ não declarada (primeiro uso nesta função) 17 | area=(B*C)/2; | ^~~~ a.c:17:10:nota: cada identificador não declarado é relatado apenas uma vez para cada função em que aparece A,B e C são flutuantes (float)*** area não existe!*** Com essas correções, o programminha compilou Leia-os-3-lados-de-um-triângulo-retângulo-e-imprimir-a-maior-altura-e-a-sua-área.c /* EXERCICIO --------------------------------------------------------------------------- */#include <stdio.h> int main () { float A,B,C; printf("Digite o tamanho do lado A do triangulo retangulo: "); scanf("%f",&A); printf("Digite o tamanho do lado B do triangulo retangulo: "); scanf("%f",&B); printf("Digite o tamanho do lado C do triangulo retangulo: "); scanf("%f",&C); if ((A < (B+C)) & (B < (A+C)) & (C < (A+B))) { /// if ((A==B) & (B==C)) /// { float area=(B*C)/2.0f; printf("\n\nO valor da area do triangulo é igual a: %f\n\n",area); /// } } return 0; } C11 - gcc11.4
  2. Boa dia! Observe a pergunta, depois, observa-se a resposta. Com essas coisas em mente, facilita-se a compreensão do como ir da pergunta à resposta. PERGUNTA. O que entra [argumentos] São composições com dois valores numéricos, digamos que teclados pelo usuário, sendo que, para expressar uma entrada intuitiva, escolho dois-a-dois numa linha. Atenção Assumo entradas ideais: não há nenhuma categoriade erros e falhas. Expresse-se a aocação de inteiro como dia= 0; a alocação de real como minima, maxima; a impressão: Quais foram as temperaturas do dia {dia}; a impressão: [A Minima Maxima escalares]? a extração: minima, maxima; a impressãio: minima, maxima; Fim da expressão. C'11 /* EXERCICIO ----------------------------------------------------------------------------- */#include <stdio.h> int main(void) { unsigned dia= 0; float minima , maxima; printf("%s%u%c","Quais foram as temperaturas do dia ",dia,'\n'); printf("%s","[A minima maxima escalares]? "); scanf("%f%f",&minima,&maxima); ///printf("%f%f",minima,maxima); } Veja https://en.cppreference.com/w/cpp/language/type float unsigned int https://en.cppreference.com/w/c/io/fprintf printf https://en.cppreference.com/w/c/io/fscanf scanf ...
  3. Filosofia é a maneira como alguém estuda e interpreta o objeto estudado. VOCÊ ENTENDEU AGORA? Desculpa-me pela confusão.
  4. Essa era minha filosofia, daí cresci e mudei. PONTEIRO São tipos com aritmética especifica. Ponteiro é um tipo como int, só que derivado de int, não somente de int, de todas as primitivas e dos tipos que o programador definir e construir a partir do que já existe. O valor de um ponteiro precisa ser sempre, sempre um endereço, porque desta maneira será avaliado, senão tem algo errado. [Filosofia] int *p, p é uma variável , sendo que 'p' pode aponta para outra , porque seu valor é também um endereço
  5. Não siga esta recomendação: Nem um e nem o outro: prefira sempre o seu, PORQUE ELE é SEU. Seja honesto consigo mesmo, corrija o que achar errado, somente isso. Para mim, isso foi o mais IMPORTANTE!
  6. Porque supostamente ele é a junção de dois outros: Leia um número inteiro positivo, depois mostre quantos dígitos tem o número; Leia um número inteiro positivo, depois mostre a potência da base 2 com esse número. Junta-se os dois no liquidificador e tem-se: Parece fácil? É SÓ NÃO PENSAR D+ Expressa-se ... a alocação dum inteiro; ... a extração de um inteiro; ... a alocação doutro inteiro como decimal; ... a alocação doutro inteiro como potência; ... uma repetição que, se o inteiro difere de zero, faça-se, ... o modulo daquele inteiro por 10 e se diferente de 0, então, ... adicione potência ao valor de decimal; ... eleve a potência; Fim da expressão. ler_um_numero_inteiro_por_binario_(1011)_e_converter_para_base_decimal.c /* ler um numero inteiro por binário (1011) e converter para base decimal */ /*=================================[ 0-0 ]==================================* EXERCICIO Leia um número inteiro que representa um número binário (formado de zeros e uns). Imprima esse número convertido para base decimal. 17:34 07/05/2024 *==========================================================================*/ #include <stdio.h> int main (void) { printf ("%s","Entre uma configuração[ max. 10 digitos ]?>"); int inteiro= 1111111111; scanf ("%10d",&inteiro); int decimal= 0; int potencia= 1; do { if (inteiro% 10) decimal+= potencia; potencia*= 2; } while (inteiro/= 10); printf ("%s%d","!>",decimal); putchar ('\n'); } /*===========================================================================*/ c'11 - gcc11.4 — Somente isso, inicialmente, fica o file.
  7. Boa dia! Pelo que me insinua, a pergunta do enunciado era desse jeitinho, por exemplo: 1101 ~~~^ Isto é o valor para um inteiro, ele é decimal e vale mil cento e um, será escaneado e salvo numa variável do seu tipo (int, long tanto faz) O EXERCICIO Convertam-se os dígitos no VALOR daquele inteiro para binário, depois... Mostre: 1 + 0 + 4 + 8 E como resposta: 13 Ou seja, mil cento e um (1101) configurava|configura 13. *** Às vezes o enunciado parece isso, às vezes não, então… Quando assim, consulta-se o professor, né?
  8. Boa dia. Esse programa compila e faz sua programação, porém, ele não pergunta e não responde conforme enunciado: Comando FOR iteração | repetição de comandos num bloco Como enunciado, quero escanear um número inteiro positivo N (...) Notei que sua programação quase não escaneia, e por cima disso, chama-a por 2x, ou seja, pelo certo serão 2 valores, quando o problema é de 1 valor: UM INTEIRO POSITIVO! Parece fácil? Veja! Expressa-se a alocação da variável N como inteiro; a extração de uma decimal; a alocação de um contador como número natural de valor inicialmente 0; a repetição que, para o contador menor que N, faça-se aumentá-lo, e escrever o contador; Fim da expressão. numero_inteiro_positivo_N_e_imprima_todos_os_numeros_naturais_de_0_ate_N.c /* Número inteiro positivo N e imprima todos os números naturais de 0 até N */ #include <stdio.h> #include <limits.h> int main (void) { int N= -1; printf("%s%u%s","Entre um número inteiro positivo [max. ",INT_MAX,"]: "); scanf("%d",&N); for (int n= 0 ; n<N ; n++) { printf("%d ",n); } putchar ('\n'); } c'11 - gcc'11.4 O pai fica satisfeito só confia!
  9. @arfneto Bom dia! Se tem uma resposta conforme o enunciado acertadamente, por favor, produza..., porém se puder. Só isso! São essas as minhas dúvidas: Uma fonte daquela afirmação; Um programa conforme o enunciado com mesma pergunta e resposta; E que compila. Se pode responder acertadamente com o texto do enunciado (abaixo), eu fico grato, senão pelo menos para de tentar me constranger — Foque o enunciado da pergunta, por favor. e obrigado.
  10. Boa noite! Refatorarei essa solução, é somente isso mesmo, embelezei o máximo que pude! Veja que lindinho: erro_em_exercicio_de_algoritmo_de_uma_entrevista.c /* erro em exercício de algoritmo de uma entrevista. */ #include <stdio.h> #include <limits.h> int main () { printf ("%s%d%s","Digite a quantidade de pessoas [max.",INT_MAX,"]: "); int n= -1; /* valor negativo sendo uma não quantidade */ scanf ("%d",&n); if (n<=0) return 1; int outros= 0; int femnao= 0 , mascnao= 0; int femsim= 0 , mascsim= 0; char sexo , resp; for (int i= 0 ; i<n ; i++) { int r= scanf (" %c %c",&sexo,&resp); if (r==EOF) break; if (sexo=='f') { if (resp=='1') femsim++; if (resp=='2') femnao++; } else if (sexo=='m') { if (resp=='1') mascsim++; if (resp=='2') mascnao++; } else outros++; } putchar ('\n'); int resps= mascsim+ femsim; int respn= mascnao+ femnao; int fem = femsim + femnao; int masc = mascsim+ mascnao; printf ("O número de pessoas que responderam sim e: %d.\n" "O número de pessoas que responderam não e: %d.\n" "A percentagem de pessoas do sexo feminino que responderam sim e: %f.\n" "A percentagem de pessoas do sexo masculino que responderam não e: %f.\n" , resps , respn , (femsim*100.0)/ (fem>0?fem:1) , (mascnao*100.0)/ (masc>0?masc:1)); putchar ('\n'); } c'11 - gcc'11.4 Uma belezinha assim, inicialmente, já me satisfaz!
  11. @arfneto Pedi, por favor, que cite a fonte de: Só isso: A Fonte? São essas as minhas dúvidas: Uma fonte daquela afirmação; Um programa conforme o enunciado com mesma pergunta e resposta; E que compila. Se puder responder acertadamente com o texto do enunciado, responda, senão tudo bem! *** Desde agora, obrigado Antecipadamente!
  12. @devair1010 Boa noite! Seu programa tem duas falhas: #1 ac:6:5: erro: variável não utilizada ‘x’ [-Werror=unused-variable] c'11 - gcc'11.4 #2 Pergunta, porém, não escreva a resposta! Acho que revisei essas duas falhas acima: #include <stdio.h> #include <string.h> int main () { int contador = 0; int i = 0; char frase[100] = {""}; puts("Digite uma frase :"); /// putzgrila fgets(frase , sizeof(frase) , stdin); frase[strlen(frase) - 1 ] = 0; while (frase[i] != 0 ) { contador++; i++; } printf ("%s%d%c","|---> ",contador,'\n'); putchar ('\n'); } Ainda há outra, ele responde (,) e (!) como letras.
  13. Quem disse que não é um inteiro? Cite a fonte, por favor! @arfneto Boa tarde! Não compilou, você falhou nos especificadores de formato ou argumento. c'11 - gcc11.4 a.c:31:28: erro: formato ‘%x’ espera argumento do tipo ‘unsigned int *’, mas argumento 3 tem tipo ‘int *’ [-Werror=format=] 31 | res = sscanf(valor, "%8x", (int*)&v_float); | ~~^ ~~~~~~~~~~~~~~ | | | | | int * | unsigned int * | %8x a.c:36:43: erro: formato ‘%x’ espera argumento do tipo ‘unsigned int *’, mas argumento 3 tem tipo ‘int *’ [-Werror=format=] 36 | res = sscanf(ansi, "%8x", (int*)str); | ~~^ ~~~~~~~~~ | | | | | int * | unsigned int * | %8x Seu programinha, supostamente, também não responde e não pergunta conforme o enunciado: além de não compilar. Estou insatisfeito
  14. ESCAPE Sabe, sim, é porque esse caractere está além de somente barra invertida, ele tem a função especial de anunciar a posição duma sequência 'escape'. Por exemplo, a nova linha (\n) é uma das que escapam. Aqui mais algumas: Experimente: Erro_ao_compilar_o_caractere_barra_invertida_no_printf.c /* Erro ao compilar o caractere \ no printf */ #include <stdio.h> int main () { printf ("Hello, World!\n"); /* ^s. escape para quebra de linha */ printf ("Hello, World!\ "); /* ^s. escape propositalmente errada */ } c'11 - gcc'11.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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!