-
Posts
3.302 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Ansi C
-
-
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
- 1
-
1#
Em 14/05/2024 às 23:38, devair1010 disse:typedef struct { int sequencial; char nome [30]; char email [30]; ///long int telefone; /// esse nUmero gigante não servirAh para nada char telefone[15]; /// melhor que seja string } ContatoProfissional; ContatoProfissional Contato;
#2
Em 14/05/2024 às 23:38, devair1010 disse:fgets(Contato.nome, 50, stdin); Contato.nome[strlen(Contato.nome)-1] = 0;/// remove o newLine pego por fgets
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.
-
Em 14/05/2024 às 23:38, devair1010 disse:
está lendo dois blocos e sendo que no "fwrite" gravou apenas um bloco de cada vez
É isso ai; ela acessa 2 variáveis a partir do endereço de somente uma.
Em 14/05/2024 às 18:41, higor7 disse:ContatoProfissional LerContatos; FILE *arquivoContatos = fopen("contatos.dat", "rb"); if (arquivoContatos) { while (fread(&LerContatos, sizeof(Contato), 2, arquivoContatos))
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
- 1
-
2 horas atrás, arfneto disse:
pare de usar essas opções de compilação
Não, não paro, porque o alerta ensina!
EU RECOMENDO.
- 1
-
3 horas atrás, arfneto disse:
Ativar todos os alertas ou mesmo tratar qualquer alerta como erro é interessante numa primeira compilação ou se sua empresa ou escola assim exige, mas não é essencial. Um erro é um erro e não gera código algum. Variável não declarada é um erro.
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
- 1
-
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
- 1
-
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
- 1
-
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 |
´´´´´´´´´´´´´´´´´´´´´´´´´´
- 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
- 1
-
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]
Em 31/05/2021 às 14:36, tibia8921 disse:as temperaturas máxima e minima do dia
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
...
- 1
-
Em 30/09/2021 às 14:35, Midori disse:
Seria assim no caso da passagem por valor quando a função recebe apenas uma cópia do valor passado como argumento. Mas como esses dois parâmetros são ponteiros, a função vai receber o endereço das variáveis (declaradas em main) e portanto qualquer atribuição que fizer a elas dentro de calc_hexa terá efeito efetivo nelas e por isso terão seus valores alterados após a chamada da função.
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
-
Não siga esta recomendação:
7 horas atrás, arfneto disse:- Ao invés de
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++;
Prefira por exemplo
if ((resp == 's') || (resp == 'S')) { if ((sexo == 'f') || (sexo == 'F')) ++i, ++sim, ++fem_sim; else if ((sexo == 'm') || (sexo == 'M')) ++i, ++sim; } else { if ((resp == 'n') || (resp == 'N')) { if ((sexo == 'm') || (sexo == 'M')) ++i, ++não, ++masc_nao; else if ((sexo == 'f') || (sexo == 'F')) ++i, ++nã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.
Em 14/06/2022 às 10:58, ningumx disse:if(resp == 1) resps++; else if(resp == 2) respn++; else if(sexo == 1) fem++; else if(sexo == 2) masc++; else if(sexo == 1 && resp == 1) femsim++; else if(sexo == 2 && resp == 2) mascnao++;
Para mim, isso foi o mais IMPORTANTE!
- 1
-
-
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:
Em 18/06/2020 às 16:29, Matheus Freitas disse: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.
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.
- 1
-
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
Em 18/06/2020 às 16:29, Matheus Freitas disse:Imprima esse número convertido para base decimal.
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é?
- 1
-
Boa dia.
Esse programa compila e faz sua programação, porém, ele não pergunta e não responde conforme enunciado:
Em 14/07/2022 às 21:33, luizpx41 disse:Faça um programa que leia um número inteiro positivo N e imprima todos os números naturais de 0 até N em ordem crescente.
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!
-
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.
Em 13/06/2022 às 20:07, DanielC4 disse:Peça ao usuário que informe dois inteiros, sendo um valor inicial e uma razão. Preencha um vetor de 10 posições começando pelo valor inicial e incrementando-o com a razão (progressão aritmética - PA). Depois peça um número para que seja verificado se ele pertence à PA e informe o resultado na tela.
e obrigado.
- 1
-
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!
- 1
-
Pedi, por favor, que cite a fonte de:
3 horas atrás, arfneto disse:Não funciona assim. 0xff não é um inteiro.
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!
Em 13/06/2022 às 20:07, DanielC4 disse:Peça ao usuário que informe dois inteiros, sendo um valor inicial e uma razão. Preencha um vetor de 10 posições começando pelo valor inicial e incrementando-o com a razão (progressão aritmética - PA). Depois peça um número para que seja verificado se ele pertence à PA e informe o resultado na tela."
***
Desde agora, obrigado
Antecipadamente!
- 1
-
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.
-
1 hora atrás, arfneto disse:
Não funciona assim. 0xff não é um inteiro
Quem disse que não é um inteiro? Cite a fonte, por favor!
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
Em 13/06/2022 às 20:07, DanielC4 disse:Peça ao usuário que informe dois inteiros, sendo um valor inicial e uma razão. Preencha um vetor de 10 posições começando pelo valor inicial e incrementando-o com a razão (progressão aritmética - PA). Depois peça um número para que seja verificado se ele pertence à PA e informe o resultado na tela.
- 1
-
Em 26/05/2022 às 14:18, lxNeos disse:
alguém sabe dizer o por que?
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
-
Bom dia!
A Inversão
Iteração sobre vetor
Notei que, apesar de reconhecer que essas strings são terminadas
com null ('\0') zero, usou múltiplas notações: de vetores, ponteiro para char e/ou
arranjo, intercambialmente. Não sei se para exemplificar que é possível, ou se é
pura confusão. Por último, fez pouco caso dos recursos utilizáveis na função do
exercício (pressuponho) sua 'inversao'.
Testei o programa dela, e editei sua expessão.
Veja:
Com- dar-printf- em-uma-frase.c
/* Como dar "printf" em uma frase */ #include <stdio.h> #include <string.h> int inversao (char *s); int main (void) { char texto[100]; printf ("Escreva uma frase [max. 99 caracteres]: "); scanf(" %99[^\n]",texto); int len= inversao (texto); if (len) { printf ("%s%s%i%s",texto," => ",len," caractere"); if (len>1) putchar ('s'); } putchar ('\n'); } int inversao (char *s) { if (NULL==s) return 0; char *s0= s; while (*++s)/* nul block */; int len= s - s0; while (s0<s) { char c= *--s; *s= *s0; *s0= c; ++s0; } return len; }
c'11 - gcc'11.4
c'17 - Pelles C'12.0
Algo assim, inicialmente, já me satisfaz.
Se o momento é dos ponteiros, então
NÃO PENSE D+, fique com os ponteiros.
- 1
-
Boa noite!
Acho que entendo você!
TABUADA DA ADIÇÃO
c será uma soma de todos os números naturais de a sobre b até 10 tal que
a = 0 e b = 0.
soma-de-dois-numeros-em-laco-for.c
/* Soma de Dois Números em Laço For */ #include <stdio.h> int main () { /* A Tabuada da Adição */ for (int a= 0 ; a<10 ; ++a) { for (int b= 0 ; b<10 ; ++b) { int c= a + b; printf ("%i%s%i%s%i%c",a," + ",b," = ",c,'\n'); } putchar ('\n'); } putchar ('\n'); }
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
codigo em C esta apresentando alguns erros quando tento compila-lo
em C/C#/C++
Postado
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: