Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Nesse situação hipotética, em tese poderias dizer que "voltou ao menu", porém só que não. O que realmente faz é criar novas instâncias do menu na memória, desta forma, teria duas ao mais vezes o menu na memória, esse número aumente a medida que a função soma é chamada, com isso por exemplo: Se chamar a função soma() 10 vezes, 10 vezes a função menu e soma ocuparam em espaço na memoria, quando digo a função em me refiro a: Parâmetros, variáveis não estáticas. Não significa prejuízo em termos de processamento e memória porque C tem pilha dinâmica e vai conseguir lhe dar com isso, provavelmente a chamada heurística vai otimizar para loop em pré-compilatório, ou seja, compilador fará o que não fez -um loop-, ou não fará nada se for dos piores. Sim podemos chamar essa função quantas vezes a memória suportar sem problemas.
  2. @Grace Gomes Ola! Tens dificuldades conceituais que não deverias ter, este site: https://www.cprogressivo.net/2014/01/Apostila-de-C-Ponteiro-Vetor-Matriz-String.html fornece, de graça, bons resumos que ajuda no entendimento. Leia !!!!!
  3. #include <stdio.h> int main (void){ int idade; printf ("Digite a idade: "); scanf ("%d",&idade); if (idade >= 51){ printf("Velho\n"); } else if (idade >= 21){ printf("Adulto\n"); } else if (idade >= 13){ printf("Adolescente\n"); } else if (idade >= 5){ printf("Criança\n"); } else{ printf("Bebe\n"); } return 0; } É só mais um estilo de muitos, eu gosto assim!
  4. Olá ... ! Não existe documentos acerca de um padrão universal [pelo menos nunca pesquisei], apenas estilos múltiplos, alguns grupos formalizam seus estilos quando fazem trabalhos cooperativos e diante disso conceituam a forma certa. A maioria dos codificadores, optará pela formato mais legível [os estilos mais presentes na literatura como sendo o melhor] e podem até adotar como certo, contudo, a única forma errada é aquela que não funciona [que tem erros lógicos]. A principal regra nas palavras do PhD McCann, acima de todas é; ser consistente. Isto é, ele nos diz para não fazer de todas as maneias sem ordem, pelo contrário, busque unificar o seu estilo para que assim codifique de maneira limpa, elegante e homogênea, caso contrário seria um carnaval aqui no Brasil. adicionado 10 minutos depois Hits: Um dica pessoal é sempre usar blocos { ... } mesmo quando não precisa, pois assim não perdesse ponto na consistência.
  5. Olá. Para isso, coloque o menu dentro de: while, for, do, ou até goto. do { ... } while(0 != choose); // se choose for igual a 0 então para a repetição (loop) Exemplo assim como while: um variável [choose] que recebe vários valores do menu, quando igual a 0 então não reapresenta o menu que está dentro do{ ... }while
  6. Não percebi que havia escrito scanf é printf #include <stdio.h> int main() { char * pbyte = 0x2000; while (pbyte <= 0x2500) printf ("%d",* pbyte++); // imprimir byte a byte [1 a 1] dos 0x0500 primeiros bytes // a partir da célula de memória 0x2000. return 0; } adicionado 2 minutos depois Concertei a condição loop também. adicionado 4 minutos depois estou usando celular, mas acho que agora vai
  7. Para imprimir byte a byte então tente assim: #include <stdio.h> int main() { char * pbyte = 0x2000; while (0x2500 <= pbyte) scanf ("%d",* pbyte++); // imprimir byte a byte [1 a 1] dos 0x0500 primeiros bytes // a partir da célula de memória 0x2000. return 0; } Exatamente porque cada inteiro tem 4 bytes, o ponteiro do tipo int obedece essa regra, saltando de 4 em 4 bytes.
  8. @devair1010 Imprimindo de 4 em 4 bytes ou quê?
  9. Olá ... ! Não é nada diferente de imprimir um vetor, e essa é operação ideal, você já tem a melhor. Só um detalhe 0x002000 > 2000, por motivo das bases .
  10. Exatamente como imaginei, conio.h. Obrigado!
  11. independe do scanf, poderia ser função implementada. Por exemplo Digite 4 valores inteiros Entrada: 1 2 3 4 Saida: int{4, 3, 2, 1} foram digitados! Nesta situação hipotética, temos captura de dados e progressão do programa com saída sem [ENTER] no final das entradas.
  12. Ola ...!!! Eu entendo que o autor gostaria de saber como capturar 4 valores, sem que para isso precise do [ENTER] no final. Também quero saber se possível é.
  13. Acredito que sim, é possível existir tabelas com resultados, ou matriz logarítmica. Algo semelhante a tabela de resultado para funções trigonométricas de quase todos os Ângulos. Isso explicaria rapidez para resolução de base 10, é puro calculo, nada de álgebra ou aritmética .
  14. Percebo, mas não acredito que calcular a raiz exata envolve muitos processos lógicos e com muitas casas decimais, seja tão mais rápido. Estou muito surpreso com a agilidade da função raiz. valeu adicionado 3 minutos depois Se bem que para base 10 me parece muito simples de ser feito, melhor seria que o numerador fosse escolhido "aleatoriamente".
  15. @isrnick Exemplo?
  16. Exatamente haverá ganho, e para números pares permanece normal. Como há imprevisibilidade entre pares e ímpares existe ganho. A ideia é explorar as possibilidade. Não sei dizer ao certo o custo de calcular a raiz quadrada, porém acredito ser maior ou igual a repetição. adicionado 2 minutos depois Principalmente quando as operações se dão com números flutuantes (caso da raiz) que tem maior custo de processamento. adicionado 5 minutos depois Em fim, tudo que sei me leva a crer que há maior ganho sem a raiz. Carecemos de teste para dar fim as hipóteses.
  17. Experimente digitar um número negativo, na realidade não deve funcionar porque não existe raiz real de número negativo. Por que eu acho que meu código mais rápido? Porque excluiu a verificação de valores pares para números ímpares.
  18. Inclua ambas bibliotecas ou cabeçario em um terceiro, daí quando precisar das duas chame apenas um #include terceiro.h
  19. Problema de indentação!? #include <stdio.h> float transformando(float graus); int main(){ ... return 0; } float transformando (float graus){ float f = 0; f = ((9.0/5.0) * graus ) + 32; return f; } Corrige apenas a função transformadora: Perceba que para garantir que as temperatura sejam bem convertidas nós operamos com variáveis do tipos flutuantes (type float) neste caso.
  20. Olá! Eu suspeito que; Quem retorna é o contêiner [ou inglês: container]. Por exemplo: Se a IDE é Code :: Block então ao executar o programa por meio da IDE um outro programa [container] é quem o recebe, daí ao finalizar o programa com void dentro do container é o container quem recebe o sinal mudo do programa void, este por sua vez, retorna o status da operação para IDE no local aonde fica o relatório de execução. Ou seja, quem retornou 0x15 foi o programa container e não o código do programa implementado com void main(). adicionado 7 minutos depois Eu suspeito que esse é o sinal para erro em tempo de execução. Mas esquenta com isso não, tem coisa mais uteis a estudar.
  21. Olá! Esse é um exercício que envolva matrizes; Cada prédio é um vetor de 2 dimensões [ou matriz] assim o número de andares e apartamentos é respectivamente o número de linhas e coluna da matriz. Portanto, basta percorrer todas as colunas [apartamentos] de cada linha [andares] e preenchendo com número de moradores. Esse exercício envolve: Lista estática de estrutura de dados [Matrizes ou Vetores]; Estruturas de Loop; for, while, do, ou até goto. Este último goto é menos apreciado que os outros. Melhor é estudar todos e posteriormente nos dar a sua tentativa de solução, para que assim, nos outros tenhamos por onde começar a ti ajudar.
  22. Melhor maneira que conheço é aquela que indiquei acima.
  23. Com scanf? Não! adicionado 1 minuto depois Pelo menos, não da maneira direta como vemos aqui adicionado 4 minutos depois int pegar_int(void){ int scn = 0; scanf("%i", &scn); return scn; } ... conversor_hrs(pegar_int(),pegar_int(),pegar_int());
  24. Este sítio fornece bom apontamento e exercício de vetores, com gabarito; https://www.cprogressivo.net/p/vetores-em-linguagem-c.html
  25. Então pois somente restava fazer como abaixo: int z=0; /*COntador para saber em qual indice do encontrados copia*/ for(int x=0;x<5;x++){/*Operação de copia dos titulos encontrados */ char *ret=NULL; ret=strstr(livros[x].titulo,pesquisar); if(ret!=0){ encontrados[z]=livros[x]; z++; } } for(int x=0;x<z;x++){ /*se o indice do vetor encontrados for uma letra imprime resultado*/ if((encontrados[x].titulo[0]!='\0')){ /*Tenho duvidas se o processo anterior e suficiente então fiz esse redundante*/ printf("\nTitulo: %s\tAutor: %s\tAno: %i\n\n",encontrados[x].titulo,encontrados[x].autor,encontrados[x].ano); } } colocar o z, pois z é numero de ocorrências então imprimir z elementos.

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!