Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Ansi C

    C menu melhorado em C

    Boa noite! RÓTULOS GRÁFICOS Aquele menu é, supostamente, uma composição textual de 5 caracteres; (+), (-), ( | ) e espaços, parte é constante, ou seja, existe literalmente no código-fonte, e a outra parte se produz num laço (repetição) pela computação. Por exemplo, a tabela "Exibir a fila geral", nela há texto constante como titulo, bordas e os rótulos nas colunas. Uma exemplificação de texto: +-------------------------+ | Exibir fila geral | +-------------------------+ +--------+--------------------+---------+---------------------+---------------------+ | Fase | Nome | Idade | Profissão (grupo) | Comobirdade (1|0) | +--------+--------------------+---------+---------------------+---------------------+ Tudo isso é capaz de existir numa variável. Assim: C'11 12.4.0 #include <stdio.h> char *cabecalho_fila_geral = "+-------------------------+\n" "| Exibir fila geral |\n" "+-------------------------+\n" "\n" "+--------+--------------------+---------+---------------------+---------------------+\n" "| Fase | Nome | Idade | Profissão (grupo) | Comobirdade (1|0) |\n" "+--------+--------------------+---------+---------------------+---------------------+\n\n"; int exibir_fila_geral (void *tela); int main (void) { printf ("%s", cabecalho_fila_geral); /*^~~~ produz esse texto apontado no simulador de terminal */ } Todos os gráficos e rótulos, portanto, tabelas aparentemente, seguem o mesmo princípio que tetei elucidar. Se duvida disto, pergunte por favor. Você consegue construir essas strings (texto como valor) no código-fonte, num arquivo externo ou até mesmo na computação. A escolha é sua! Entendeu.
  2. @Dark_Yoshi Seja bem-vindo no fórum CdH! Bom Dia! Habilite todos os alerta no compilador, em seguida, experimente compilar tua programação, por último escute todos os alerta (se houver). O Jogo Essa tua expressão inspira a brinca “tá quente ou tá frio”? Uma variação dessa atividade dos jogos infantis consiste na orientação por meio de 2 palavras, QUENTE e FRIO: quando o buscador se oriente na direção do objeto, diz-se está quente, do contrário, está frio. Na reta real dos números, dado um ponto, todo palpite no ponto está quente, todo palpite longe do ponto está frio, sendo sempre o primeiro palpite QUENTE quando não exato. Por exemplo Dado um número, e um palpite X, se |NUMERO-X|≠ 0, então espera-se que o absoluto da diferença do número e o próximo palpite (X') seja menor que a atual, por isso QUENTE, do contrário, será FRIO. Acertei?
  3. Suponho que não haja muitas formas de escrever, e se existem são análogas. Bom Dia @Jaovitorlm Por exemplo, pense numa progressão aritmética de razão 2... para cada par (x, y | x < y) , tem-se Sn = n * (a1 + an) Onde n ? é metade do número de valores ímpares no intervalo x, y a1? é menor ímpar maior que x an? é maior ímpar menor que y Sn? é n Vezes (a1 mais an) a soma de uma P. A. Neste caso que imagino para você, a programação ler x e y para determinar valores de n, a1, a2 e por fim Sn. Suponho que assim tem uma outra forma de escrever.
  4. @devair1010 Boa noite! GETS A gets é ultrapassada, portanto é fácil supor que ela não é a mais segura ou tem problemas. Daí sugeri que demostre uma versão segura da gets. De Programação Segura que produz conforme o esperado, sem problemas - safe gets_s ()
  5. @devair1010 Boa tarde! GETS Hipoteticamente, digamos que fosse convidado a construir esta função segura, qual seria a expressão no corpo? char *gets_s (char *schar, size_t length) { }
  6. @DaviFonsecx Boa noite, Aparentemente, não há erro e/ou alerta durante compilação. Usei gcc 11.4 e compilou. Defina-nos qual é o resultado. Por exemplo: Essa programação|construção|expressão determina 3 a 3 segmentos com valores arranjados entre 1 e 500, que correspondem a um triangulo retângulo por meio da relação a^2 = b^2 + c^2 tal que o segmento b itera sobre c em a no intervalo dos inteiros. Então, a entrada é as triplas do arranjo (b, c, a) e o resultado é as triplas cujo relacionamento é verdadeira.
  7. MATRIZES Também pensei isso! Declarar o arranjo onde o comprimento e os elementos são, respectivamente, a quantia e os índices doutro; conforme um ou mais filtros e/ou requisitos. Expresso: Indice grupo_acima_da_media[PACIENTE], incluir = 0; for (Indice paciente = 0 ; paciente < PACIENTE ; ++paciente) if (dados[paciente].peso > media) grupo_acima_da_media[incluir] = paciente , ++incluir;
  8. Bom dia, Tem-se, aparentemente, aqui soluções em que todas me inspiram uma ordenação crescente dos segmentos (a, b e c). Com isso determinar o segundo maior segmento (b) e o primeiro (a) e o menor (c), todos maiores que 0. Logo, se há condição para a existência de um triangulo retângulo, então a² == b² + c² será verdade, em seguida: b altura c base Area = (1/2)cb
  9. 1# #2 No #1 recorte, há declaração dum dado composto e uma variável deste dado. O dado composto tem 4 campos, um deles é o nome do tipo char [30]: um arranjo com capacidade para 30x caracteres. Em seguida, @devair1010, expressa-se, no segundo argumento da função fgets, como se aquele campo fosse para 50x caracteres. E mais abaixo ainda no #2 recorte, insinua-me que não conhece a capacidade do nome ao utilizar 'strlen' para determinar o tamanho de sua string. *** Capacidade é de 30x Curiosamente, reforça o caso do autor da pergunta, que também expressa variáveis além da definição.
  10. É isso ai; ela acessa 2 variáveis a partir do endereço de somente uma. Erro no Fread que imprimi de um arquivo apenas um contato é não o restante Por que o programa encerra logo em seguida? Olhe lá, declarou-se LerContatos, sendo 1x ContatoProfissional, depois, expressa-se nos argumentos 2x, assim a fread escreve 1x variável além da definição; escreve em bytes indefinidos ou definidos, porém não para essa operação. ERRO NA DIGITACAO
  11. @arfneto Não, não paro, porque o alerta ensina! EU RECOMENDO.
  12. E daí? Ative todos os alerta e se dê a oportunidade de aprender com eles! ISSO É BOM! A propósito, aquela programação não compilou. a.c: In function ‘main’: a.c:2:14: error: parâmetro não utilizado ‘argc’ [-Werror=unused-parameter] 2 | int main(int argc, char* argv[]) | ~~~~^~~~ a.c:2:26: error: parâmetro não utilizado ‘argv’ [-Werror=unused-parameter] 2 | int main(int argc, char* argv[]) | ~~~~~~^~~~~~ cc1: todos os avisos sendo tratados como erros
  13. Bom dia, Essa programação não compilou! ... a.c: Na função 'main': a.c:48:23: erro: 'b' não declarado (primeiro uso nesta função) 48 | if(C>A && C>b) | ^ a.c:48:23: nota: cada identificador não declarado é relatado apenas uma vez para cada função em que aparece a.c:9:14: erro: parâmetro não utilizado 'argc' [-Werror=unused-parameter] 9 | int main(int argc, char* argv[] ) | ~~~~^~~~ a.c:9:26: erro: parâmetro não utilizado 'argv' [-Werror=unused-parameter] 9 | int main(int argc, char* argv[] ) | ~~~~~~^~~~~~ cc1: todos os avisos sendo tratados como erros c11 - gcc11.4
  14. Agora não mais ... o programminha compila! codigo_em_C_esta_apresentando_alguns_erros_quando_tento_compila-lo.c /* EXERCICIO --------------------------------------------------------------------------- */#include <stdio.h> #define PACIENTE 0x1 struct Paciente { char nome[30]; float peso; }; int main (void) { float media = 0; unsigned cant = 0; struct Paciente grupo[PACIENTE]; for (unsigned paciente = 0 ; paciente<PACIENTE ; ++paciente) { printf ("\nNome: "); gets ((grupo + paciente)->nome); printf("\nPeso: "); scanf ("%f",&(grupo + paciente)->peso); media += (grupo + paciente)->peso; } media = media / PACIENTE; for (unsigned paciente = 0 ; paciente<PACIENTE ; ++paciente) if((grupo + paciente)->peso > media) { printf("%s está acima do peso médio\n", (grupo + paciente)->nome); ++cant; } printf("%d pessoas estão acima do peso médio", cant); } c'11 - gcc'11.4
  15. Ansi C

    C %d termo não conhecido

    Sistema de Numeração Decimal ^ + neste estilo - - - - (±9999) | %d ^~~ especificamente para converter inteiro de base10. . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 | ´´´´´´´´´´´´´´´´´´´´´´´´´´
  16. 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
  17. 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 ...
  18. 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
  19. 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!
  20. 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.
  21. 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é?
  22. 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!
  23. 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!
  24. @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!

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!