Ir ao conteúdo
  • Cadastre-se

Luccas Fernando

Membro Pleno
  • Posts

    36
  • Cadastrado em

  • Última visita

Tudo que Luccas Fernando postou

  1. Olá. O VisualG parece ter uma grande dificuldade de interpretar condicionais ao ponto que 99% dos problemas com Portugol é esse tal "Esperava encontrar ENTAO" Sinceramente não sei o que poderia estar errado nesse pseudocódigo de bubblesort... Var val: vetor [0..49] de inteiro i, j, k, op, ops, vals, orn, cond, ret: inteiro funcao bubblesort(): inteiro var aux, indi, indj: inteiro inicio para indi de 0 ate i faca para indj de (i - 1) ate indi passo (-1) faca se (val[indj] < val[indj-1]) entao aux <- val[indj] val[indj] <- val[indj-1] val[indj-1] <- aux fimse fimpara fimpara retorne 0 fimfuncao Ele acusa um problema justamente nessa linha: se (val[indj] < val[indj-1]) entao Esse pseudocódigo tirei daqui: Inclusive ele só aceita mais de uma operação condicional em um SE caso elas estejam entre parênteses, fiquei uns 20 minutos quebrando a cabeça por isso já que o erro em si não é indicado pelo VisualG, uma palhaçada esse interpretador
  2. Boa noite, colegas Venho aqui pedir uma ajuda, já que não sei como prosseguir com os cálculos desse circuito comparador com histerese... Coloquei todos os dados na imagem: Em suma, ele aciona com 15V e desliga com 14.5V. Não achei nada assim no meu livro, estranhei principalmente pela colocação dos resistores. Não achei algo com essa configuração na internet também, agradeço se puderem me dar uma orientação de como calcular os resistores.
  3. As funções f(a) que estou experimentando são as funções exponencial e logarítmica: O código é esse: clear, clc, clf, x = [1:5]; a = 2; for k = 0:4 P1(k+1) = (diff(exp(a), a, k+1) / factorial(k)) * (x(k+1) - a)^k; P2(k+1) = (diff(log(a), a, k+1) / factorial(k)) * (x(k+1) - a)^k; end tab = [x' P1' P2']; figure(1),clf plot(x, P1, 'ro--'); hold on plot(x, P2, 'b*:'); O seguinte erro aparece: Subscripted assignment dimension mismatch. Error in atv2 (line 8) P1(k+1) = (diff(exp(a), a, k+1) / factorial(k)) * (x(k+1) - a)^k; Agradeço se puderem me ajudar com o código...
  4. @Shaman93 Por que esse valor? E como isso ocasionou imprecisão no resultado daquele código que postei?
  5. #include <stdio.h> #include <stdlib.h> int main() { float f = 1.559f; float g = f * 100.0f; printf("%f %f", f, g); return 0; } Alguém saberia dizer o motivo de ser este o resultado? 1.559000 155.899994 E não 1.559000 155.900000 Talvez seja a imprecisão na representação do número, mas não sei dizer o real motivo.
  6. Estou procurando saber a maior quantidade de dígitos de um número que pode ser atribuído à variáveis dos tipos float, double e long double. Estudei o IEEE754 há um tempo, mas já não me lembro tão bem. Dando uma olhada por aí, encontrei o seguinte: Type Name | Bytes | Other Names | Range of Values float | 4 | none | 3.4E +/- 38 (7 digits) double | 8 | none | 1.7E +/- 308 (15 digits) long double | same as double | none | Same as double FLT_MAX 3.402823466e+38F DBL_MAX 1.7976931348623158e+308 LDBL_MAX 1.7976931348623158e+308 FLT_MIN 1.175494351e-38F DBL_MIN 2.2250738585072014e-308 LDBL_MIN 2.2250738585072014e-308 Obrigado pelo esclarecimento.
  7. Como posso verificar se uma variável é unsigned depois de passar o endereço dela pra uma função? A variável não estaria inicializada nem nada. Eu achei na internet algo assim: #define IS_UNSIGNED(type) ((type)~1 > 0) Mas só serve pra tipos de dado, e não pra variáveis.
  8. Acho que é meio irrelevante por hora, mas o intuito é ver quão eficientemente consigo transferir calor da palma da minha mão pra uma superfície com um tubo de calor, e quão eficientemente consigo aproveitar essa energia... Certamente vocês entendem desse assunto bem mais que eu, contudo, quero apenas experimentar e brincar com isso, ainda tenho que pesquisar sobre materiais de interface térmica, estou pensado em fazer galinstan, e sobre o efeito Peltier. Ajuda sim Quando acabar essa quarentena eu vou dar uma volta pela cidade e ver se alguma alma de bom coração tem um cano de cobre, acredito que conseguirei encontrar. Como sugerido por você e pelos outros colegas, consultarei o pessoal que trabalha com encanamento para gás, ar condicionado, geladeira, etc... E acho que consigo selar com solda normal mesmo, se eu achatar um pouco o tubinho da pra soldar. @devair1010 @alexandre.mbm @.if @rmlazzari58 @Sérgio Lembo @Thiago Miotto Agradeço pela ajuda, pessoal. Acho que já tenho toda informação que preciso
  9. A ideia é ter em mãos um bom condutor de calor, pra transferir calor da minha mão pra outra superfície. Posso tentar isso. Acredito que não vai ter muita pressão. Eu pretendo selar logo quando começar a sair vapor, depois disso eu deixo em algum lugar bem longe de mim pra água condensar :) Perdão pela demora... Não será nada de grandes proporções, talvez um tubo do tamanho de um lápis. Eu vi alguns tubos de calor no ML: No entanto, acho que é um preço um tanto quanto salgado pra um tubo de cobre com água...
  10. Estou pensando em fazer um tubo de calor para um pequeno projeto, alguém saberia uma "receita"? O intuito é fazer um tubo de cobre com água a baixa pressão, minhas dúvidas são: Onde posso conseguir algum tubo de cobre? Qual a proporção de água que devo colocar? Como posso selar o tubo? Minha ideia seria colocar água no tubo, aquecê-lo no fogão e selá-lo quando vapor começar a sair. Talvez eu poderia selar com um pedaço de placa de fenolite e um pouco de solda, mas talvez no processo de aquecimento a solda derreta.
  11. @aphawk Sim, e a corrente nele não pode exceder a máxima. Segundo o datasheet: iz_max = 178mA iz_min = 0A (limiar da condução) ou iz_max * 10% = 17.8mA Isso não seria a corrente mínima em Rd? iRd_min = 17.8mA + 1.1A = 1.1178A iRd_max = 178mA + 1A = 1.1780A A corrente máxima em Rd seria quando a corrente na carga é mínima e a corrente no zener é máxima. Bem, sim. Dessa forma eu terei iRd_max, contudo, nesse caso, o que você me diz é: iRd_min = 5mA + 1.1A = 1.105A iRd_max = 105mA + 1A = 1.105A Então iRd_min = iRd_max? Não entendi isso... Se as correntes mínima e máxima resultantes dos cálculos tiverem um mesmo valor, então sim, pois o valor é único, mas não é meu caso... Há uma pequena diferença. Eu imagino que devo me manter distante dos extremos, talvez calcular uma média entre iRd_min e iRd_max, mas não sei justificar isso, não tenho certeza do que fazer.
  12. Olá. O circuito é esse (será apenas simulado, desconsiderem problemas da vida real) A tensão no secundário do transformador é 12VCA, a tensão nominal Zener é 5.1V, pretendo obter 5V na saída e 1A. Eu pretendo encontrar a capacitância da seguinte forma: Bem, em um retificador em ponte com filtro sem regulador, a corrente i é a corrente na carga, mas como eu adicionei um regulador com Zener, nesse caso i seria a corrente que passa em Rd e que se divide entre o Zener e RL (pelo menos acho que é isso, me corrijam se eu estiver errado). Eu sei o seguinte: iz = iRd - iRL ⇒ iRd = iz + iRL ⇒ iRd_min = iz_min + iRL_max (eq. 1) ⇒ iRd_max = iz_max + iRL_min (eq. 2) Beleza, Eu também sei que iz_max = 178mA segundo o datasheet, iz_min = 0A, iRL_min = 1A e iRL_max = 1.1A, então eu posso usar tanto a eq.1 quanto a eq.2, mas qual eu uso? E por que? Agradeço pela atenção.
  13. Estou precisando criar uma biblioteca, mas não sei o que coloco no arquivo .h e no .c, alguém saberia me dizer? Só sei que o protótipo das funções se coloca no .h e o corpo delas no .c, não sei o motivo, mas pelo o que vejo por aí é isso. Daí me resta saber onde coloco as struct's, typedef's, #define's, #include's, const's. Agradeço pela atenção.
  14. @arfneto Eu não sei desligar o line input, mas achei por aí um programa que aparentemente faz isso, e o que ocorre é que o programa pausa porque o buffer está vazio: #include <stdio.h> #include <stdlib.h> #include <windows.h> int main() { HANDLE _handle = GetStdHandle(STD_INPUT_HANDLE); DWORD _mode; GetConsoleMode(_handle, &_mode); SetConsoleMode(_handle, _mode & ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT)); // o programa para aqui porque o buffer esta vazio fgetc(stdin); SetConsoleMode(_handle, _mode); return 0; } Daí se aperto alguma tecla:
  15. Mas daí ele só não vai esperar por um Enter, certo? Se o buffer estiver vazio, ainda vai pausar o programa aguardando por uma tecla. Eu fiz o seguinte, só pra testar: #include <stdio.h> #include <stdlib.h> #include <windows.h> int main() { int _int; char _char; scanf("%d", &_int); FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); scanf("%c", &_char); printf("\nint = (%d)\nchar = (%c)\n", _int, _char); return 0; } Mas o '\n' não foi descartado... Sei que não deveria estar usando nesse contexto, mas acho que deveria funcionar. Estou fazendo alguma coisa errada? Acho que só criei 3 postagens aqui no fórum de C/C#/C++, não achei onde comenta sobre isso.
  16. @devair1010 Não sei o motivo da função possivelmente falhar, então não sei qual retorno a função deveria ter mesmo no caso do programa do primeiro post: 32 ou -1. O que tinha sobrado da leitura eram os caracteres 'f' e '\n'...
  17. No caso eu me referia a prever se fflush(stdin) funcionaria ou geraria UB. Como você disse: Nos compiladores da Microsoft então, caso implementado na entrada, exclui o que tiver lá, torna vazio, independentemente se já estava. Seria isso? Deixa ver se entendi: como o termo não é apagar, então não deveria ser implementado na entrada, certo? Já que você disse que quando implementado na entrada, o buffer é descarregado por exclusão do que tem lá, e esse não seria o propósito de fflush. Há como implementar uma função que faça isso? Que funcione para a stdin? As que eu vi pausam o programa quando o buffer está vazio, e servem apenas para consumir os dados que restaram de uma leitura, algo como: int c; while((c = fgetc(stdin)) != '\n' && c != EOF);
  18. @devair1010 ungetc só precisa do cabeçalho stdio.h, penso que deveria funcionar em qualquer lugar. Na documentação diz: If the operation fails, EOF is returned. Mas não entendi o motivo de ungetc falhar naquele caso. Eu postei imagens mesmo, mas pra resumir no compilador online o retorno é 32 (caractere espaço) e no codeblocks é -1 (EOF).
  19. Na documentação da scanf está escrito: int scanf ( const char * format, ... ); Read formatted data from stdin Reads data from stdin and stores them according to the parameter format into the locations pointed by the additional arguments. The additional arguments should point to already allocated objects of the type specified by their corresponding format specifier within the format string. O que são dados formatados? Eu tinha lido nesse link o seguinte: printf() and scanf() are examples for formatted input and output functions and getch(), getche(), getchar(), gets(), puts(), putchar() etc. are examples of unformatted input output functions. Não entendi muito bem o motivo, e não encontrei muito a respeito. Gostaria de saber o que são dados formatados e não-formatados, e exemplos também se possível. Grato.
  20. Na documentação diz que o requisito de ambas é o cabeçalho stdio.h. São portáveis. O que é exatamente um "comportamento indefinido"? Ou de fato não há nada que descreva o comportamento indefinido de fflush(stdin)? Mas então pode gerar comportamento indefinido, certo? Já que stdin está incluída nesse "todos". Somente fluxos de saída então? E se não "funcionar"? Vai gerar comportamento indefinido? Tem alguma forma de prever o que vai acontecer? Isso seria descarregar o buffer? Descarregar seria retirar a carga... Caso funcione para a stdin, retirar algo que tenha restado de, por exemplo, uma leitura, não seria apagar? Mais uma pergunta: como fflush se comporta quando o buffer está vazio? Por exemplo, caso funcione para a stdin, e o buffer esteja vazio, segundo sua analogia, a função teria que esperar algo para ler da stdin, certo? Consequentemente, o programa iria pausar, mas isso não acontece...
  21. Olá. Fiz o seguinte código: #include <stdio.h> #include <stdlib.h> int main() { char str1[101]; int x; printf("Digite uma string:\n"); scanf("%100[\nabcde]", str1); x = ungetc(' ', stdin); printf("ungetc retornou <%d>\n\n", x); return 0; } Testei em um compilador online e o retorno de ungetc foi esse: Mas no codeblocks aparece -1, acredito que seja EOF: Alguém saberia o motivo? Meu compilador é o GNU GCC Compiler. Grato.
  22. @Renato.88 @Thiago Miotto Errei uma coisa... Perdão. Ta... Esse seria o circuito. Então, considerei Vz = 200Vrms pra ter uma margem de erro, que é um pouco menor que 10%. Coloquei o capacitor lá pro relé não ficar armando e desarmando sem parar, e então caso Vin > Vz, o switch do relé muda de posição para onde saem 220Vrms, caso contrário, permaneceria na posição onde saem 110Vrms. Não teria que ter uma bobina de Vin - Vz ≥ 20Vrms?, já que o zener lá está em série. Qual um bom valor para o capacitor? Ou como calcular? Eu o coloquei na posição certa ali né? Antes do zener.
  23. @Renato.88 Fiz o seguinte, poderia dar uma olhada por favor? Nunca mexi com relés antes, e estava aprendendo sobre zener não faz muito tempo, então não espere muito de mim Coloquei aquele capacitor meio que instintivamente, se não tivesse um lá, o relé iria ficar armando e desarmando. Saberia me explicar também a necessidade de um diodo entre os terminais da bobina do relé?
  24. @Renato.88 Olá novamente Se eu fizer, por exemplo: seria melhor que: Sendo que a ideia é ter 5V na saída? Se sim, qual diodo que eu usaria pra ter um Vd mais próximo de 0.7V? Outra pergunta: há alguma forma de usar zener para avaliar se na entrada, que é conectada na rede elétrica, eu tenho 110 ou 220V? No caso a ideia seria retificar antes e usar o zener para acionar um relé (será feito num simulador).

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