-
Posts
363 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Carlos Zanon postou
-
Gravar números maiores que 255 na eeprom pic16f628a
Carlos Zanon respondeu ao tópico de victor jenckel em Eletrônica
Você poderia usar bitwise no caso :v Neste exemplo você pode salvar até 32767 mas vai precisar usar 2 variáveis. int valor = 5000; int bits = 8; int mascara = (2<<bits)-1; // no caso deve-se considerar o 0, por isso remove 1. (de 0 até 255, são 256 valores possíveis) // Obtém o valor e o valor dentro da mascara para // retorno. int flag_mascara = valor & mascara; int valor_mascara = valor >> bits; // Salvar os 2 valores acima. ambos devem ser menores que 255. // Para recuperar os valores... int valor_original = (valor_mascara << bits) | flag_mascara; Se você quiser ter uma ideia dos valores máximos que vai poder usar... Você usar a fórmula: (2 ^ ((bit * 2) - 1)) - 1 Dai... (2^((8*2)-1)) - 1 = (2^15) - 1 = 32767 Ou se você quiser a conta maior... ((2^8 * 2^8)/2) - 1 = 32767 -
Botão submit perde ação ao colocar um script no final da página
Carlos Zanon respondeu ao tópico de Everson Borges em Web e banco de dados
Já tentou dar uma olhada nisso? Isso aqui impede que o submit faça o trabalho dele dentro de um form. -
Php, como fazer requisição curl esperar a pagina de destino carregar?
Carlos Zanon respondeu ao tópico de ismalty em Web e banco de dados
Se vocês estão esperando que o cURL, ou qualquer outra biblioteca que realiza requisições, faça a execução de javascript que está por trás disso, vocês vão continuar com o mesmo problema. As páginas que vocês estão tentando carregar e etc... devem executar chamadas em javascript para carregar o resto do conteúdo. cURL não executa javascript. O Conteúdo não vai ser carregado. É mais fácil vocês pedirem que desenvolvam um webservice que ficarem tentando simular o envio da requisição para os dados brotarem na tela -
Tenta adicionar (*UTF8) no começo das expressões regulares... tipo: preg_match("(*UTF8)#stream[\n|\r](.*)endstream[\n|\r]#ismU" Me recordo de ter resolvi problemas assim antigamente :v Em outras situações usei o essa aqui http://php.net/manual/en/function.mb-internal-encoding.php junto com os preg_match tenta usar o mb_internal_encoding primeiro, se não me engano é o que melhor funciona ;P @edit mb_internal_encoding('UTF8'); preg_match("#stream[\n|\r](.*)endstream[\n|\r]#ismU"
-
Como está a temperatura do seu i3? A Pasta térmica está em dia? Ele reiniciando pode ser que o processador esteja abrindo o bico por conta de overclock ou algo do gênero que você tenha feito, não sei dizer.
-
Quando usar PHP e quando HTML
Carlos Zanon respondeu ao tópico de Guarda Chuva em Web e banco de dados
Vamos lá... No seu caso, o PHP está escrevendo linhas de HTML, então, tanto faz ai a forma que você vai usar. Mas tenha em mente o que digo abaixo: PHP é uma linguagem que roda no servidor... Quando você acessa uma página de internet, ela passa pelo servidor que está hospedado, processa o que tem que processar e devolve os dados. Esse é o serviço do PHP, >> devolver os dados que estão no servidor << naquele momento. O HTML apenas exibe o resultado. É igual você tirar uma foto sua hoje e uma nova foto em outro momento, quem recebeu sua foto anterior, só vai ter acesso a primeira imagem até que você mande a segunda, certo? << Entenda isso como um F5 kkk atualizar os dados :v O HTML não muda sozinho, ele precisa de alguém pra alimentar as informações em tela, aqui entra nosso amigo PHP para fazer os acessos ao banco e normalmente é ele quem devolve tudo. Uma observação: o javascript com ajax, é usado para solicitar ao servidor dados e então modificar o HTML... então numa requisição ajax: 1. Quem alimentou os dados? PHP 2. Quem escreveu as novas informações em tela? Javascript 3. Qual formato foi responsável pela exibição adequada em tela? HTML. -
Porque você não está indicando qual posição do vetor está trabalhando e o programa não consegue adivinhar isso pra você :v Ele obtém, por padrão, a primeira posição dele :v Quando você declara um vetor de 8 posições, por exemplo, a variável declarada aponta para 8 posições de memória ao mesmo tempo, sendo assim acessadas usando os índices do vetor. int vetor[8] = { 12, 5, 8, 1, 7, 4, 10, 0 }; As posições de índices variam de 0 até 7. Quando você utiliza somente a chamada "vetor", que é o seu caso, você está passando a primeira posição é como se você fizesse "vetor[0]"... se você deseja fazer com que ele acesse as demais opções, você tem que: 1º- Não usar variáveis de escopo de função. Faça um teste de mesa aqui. Quando você declarou maior, dentro de lervetor(), cada vez que você chamar ela, ela será igual a zero. A Segunda coisa é que &vetor, apontará para a primeira posição do vetor como eu mencionei ali emcima, então você sempre irá gravar o ultimo valor lido dentro de "vetor[0]" e como você não contou pra função qual era o valor maior do vetor, ela deverá usar o valor que você inicializou ela com zero... então sempre o primeiro número e o maior valor serão os últimos que você digitar. Seria melhor você separar em partes. /** * Faz a leitura e gravação de um vetor inicializado e retorna o maior valor * para o mesmo. */ int lerVetor(int vetor[], int tamanho) { int i, maior; // Faz a leitura completa do vetor. for(i = 0; i < tamanho; i++) { int aux; scanf("%i", &aux); if(i == 0 || aux > maior) maior = aux; vetor[i] = maior; } return maior; }
-
como utilizar a biblioteca locale.h
Carlos Zanon respondeu ao tópico de Dannilo Vieira Alves em C/C#/C++
Normalmente se usa pra "habilitar" acentuação, mensagens de erro e etc >> no console << setlocale(LC_ALL, “Portuguese”); printf("É aqui a função de acentos funciona."); -
@Rafael Filho Essa resposta ai se aplica completamente a você. Você ainda não entendeu a lógica para se trabalhar com vetores. Você precisa ler cada posição separadamente e ir atribuindo o valor maior. Acesso a vetores, como você mesmo postou em outro tópico seu No tópico que mencionei acima, você dá a entender que sabe acessar os indices de vetor A[i+8], porém, não aplicou no seu código ai emcima... Resumão: Você está trabalhando apenas com a primeira posição do vetor, logo, a primeira é a ultima posição, então, ele sempre vai ser o maior...
-
Estou com dificuldade num problema de Vetores com Laço de Repetiçao
Carlos Zanon respondeu ao tópico de Danillo Pain em C/C#/C++
Está mal formulado o enunciado ou é um teste de lógica o enunciado. E se for um teste, pra você, faltou um pouco de lógica pra entender também. Quantas notas cada aluno deveria possuir? somatoria = nota[0] + ... + nota[n]; media = somatoria / n Se for apenas uma, assume-se que a própria nota é a média. -
Estou com dificuldade num problema de Vetores com Laço de Repetiçao
Carlos Zanon respondeu ao tópico de Danillo Pain em C/C#/C++
@Danillo Pain Seu problema é mais com conceito de vetores do que com o programa parece. Vou lhe dar um exemplo prático. Quando você está na escola, existe uma lista de chamadas em cada sala, correto? Cada aluno, se encontra em uma posição. (Ignore o tipo de ordenação) Aluno 1 = Aline Aluno 2 = Carlos Aluno 3 = Danilo Agora imagine isso dentro de um vetor. [ "Aline", "Carlos", "Danilo" ] Agora, imagine o professor dessa sala, como o programa e siga o dialogo: 1- Você: Quero um aluno. 2- Professor: Qual aluno? O Aluno 1? 3- Você: Quero o aluno 2! 4- Professor: Ah, o "Carlos". Em linha de código você está tendo problemas no item 3 ali, você não está sabendo informar qual posição você quer trabalhar. Você precisa informar qual posição você quer trabalhar. Quando você não informa ele utiliza a posição inicial (0) Muda pra: scanf("%f", &codigo[i]); Faça as mesmas coisas nos outros trechos onde você utiliza os laços e deveria acessar as posições corretas -
Estou com dificuldade num problema de Vetores com Laço de Repetiçao
Carlos Zanon respondeu ao tópico de Danillo Pain em C/C#/C++
Você não está conseguindo ou nem se mexeu pra fazer? Poste o que já fez... -
Modo seleção e Passagem por referencia
Carlos Zanon respondeu ao tópico de Gabriel Vieira Nascimento em C/C#/C++
se nao me falha memoria... n precisa do & você só usa assim na função... fora nao usa -
Modo seleção e Passagem por referencia
Carlos Zanon respondeu ao tópico de Gabriel Vieira Nascimento em C/C#/C++
Sim, é por referência :v Recomendo você usar ele por inteiro como ponteiro se for usar... Por exemplo... int* vetor; int i; vetor = (int*)malloc(sizeof(int*) * 5); memset(vetor, 0, sizeof(vetor)); for(i = 0; i < 5; i++) *(vetor+i) = 1; Dai como citei em cima... pra acessar as posições... *(vetor+ <posicao>) Por exemplo você quer a posição 5 *(vetor + 4) Lembrando que o vetor se inicia em 0, logo o número 4 é 5ª posição -
Modo seleção e Passagem por referencia
Carlos Zanon respondeu ao tópico de Gabriel Vieira Nascimento em C/C#/C++
use int vetor[] ou int* vetor Escolha um, não use os 2 juntos. Veja aqui um exemplo funcionando com o int vetor[] -
VB.NET Jogo da forca e o uso do GetType
Carlos Zanon respondeu ao tópico de IsabelleF em Programação - outros
@IsabelleF Antes de qualquer coisa... Você precisa entender o 'Me' e o 'Controls'. Eu não entendo de VB mas mexo muito com C#, então, deve ser bem próximo. O 'Me' deve representar um WindowsForm e o 'Controls' todos os componentes dentro dele. Quando ele executa o For Each ali, ele está varrendo todos os componentes... o GetType() serve para ele obter a tipagem daquele Control. Que pode ser "System.Windows.Forms.TextBox" e etc... mas ali no dele, ele só quer os Label, então... Para um jogo de forca, ele deve estar usando isso ai, para exibir letra a letra que você acertou/errou, depende de onde está colocando... -
No dia dia, quando um motorista vai fazer uma curva, ele deve ligar a seta, correto? Porque? Para indicar onde ele vai... então ela é usada para apontar direções. Em C, o '->' é a seta.... então use sempre a seta para apontar , Se você não precisa apontar, então use o '.' Você não usou a tag CODE na sua postagem, recomendo a leitura:
-
Busca de um nó de uma lista encadeada em C
Carlos Zanon respondeu ao tópico de Lucas Lima Nunes em C/C#/C++
Sim... você retorna o ponteiro... Fiz um exemplo logo abaixo :v #include <stdio.h> #include <stdlib.h> struct lista { int valor; struct lista* proximo; }; struct lista* lista_init(int); void lista_add(struct lista**, int); struct lista* lista_buscar(struct lista*, int); int main() { struct lista* l = lista_init(0), *next, *search; int i; for(i = 0; i < 10; i++) lista_add(&l, 10-i); for(next = l; next != NULL; next = next->proximo) printf("%d\n", next->valor); search = lista_buscar(l, 15); if(search == NULL) printf("Valor 15 nao foi encontrado...\n\n"); else printf("Valor 15 encontrado...\n\n"); search = lista_buscar(l, 10); if(search == NULL) printf("Valor 10 nao foi encontrado...\n\n"); else printf("Valor 10 encontrado...\n\n"); return 0; } /** * Realiza a busca de um valor na lista. * * @param *l Ponteiro para lista que possui todos os valores. * * @return Retorna o no da lista para a posição do valor encontrado. */ struct lista* lista_buscar(struct lista* l, int valor) { if(l->valor == valor) return l; if(l->proximo != NULL) return lista_buscar(l->proximo, valor); return NULL; } /** * Adiciona um novo valor a lista. * * @param **l ponteiro de ponteiro para lista * @param valor Valor para ser adicionado a lista. */ void lista_add(struct lista** l, int valor) { if((*l)->proximo == NULL) { (*l)->proximo = lista_init(valor); return; } lista_add(&(*l)->proximo, valor); } /** * Inicializa uma nova lista com um valor definido. * * @param valor Valor para a lista. * * @return Endereço de memória para a lista. */ struct lista* lista_init(int valor) { struct lista* l = (struct lista*)malloc(sizeof(struct lista*)); l->valor = valor; l->proximo = NULL; return l; } -
A Primeira regra da recursão é sempre defina a regra de parada. Sua lógica está um pouco... estranha usando variáveis de escopo dentro da função... nunca vai te dar uma saída correta... Sempre vai dar a saída "2" e se mandar um 0 como parâmetro, ele entra em loop infinito :v Uma coisa que você está se esquecendo... Fibonnaci(4) = Fibonnaci(3) + Fibonnaci(2) Fibonnaci(3) = Fibonnaci(2) + Fibonnaci(1) Fiz um exemplo abaixo... #include <stdio.h> #include <stdlib.h> unsigned long fibonnaci(unsigned int); int main() { unsigned int i; for(i = 1; i <= 30; i++) printf("%d = %ld\n", i, fibonnaci(i)); return 0; } /** * Realiza a contagem de fibonnaci * * @param num posição do da contagem de fibonnaci. */ unsigned long fibonnaci(unsigned int num) { // Regra de parada, sempre que for 0 ou 1, retorna o proprio número... // A Contagem de fibonnaci começa partir do número 2. if(num <= 1) return num; return fibonnaci(num - 1) + fibonnaci(num - 2); }
-
@Tobi Norris Com 5 volts fica complicado... mas você pode tentar usar o 28YBT-48 :v dependendo do peso da porta e da redução de atrito que ela sofra... No mercado livre, você encontra ele por um valor +- de R$ 16,00
-
Eu recomendo "C Completo e Total"
-
Qual a corrente que deveria passar nos resistores de 100? Pode ser que você precise pegar um resistor de maior potência ali...
-
Calcular a soma dos valores entre um intervalo.
Carlos Zanon respondeu ao tópico de Gabriel Schumacher em C/C#/C++
@Gabriel Schumacher Você pode calcular ele usando progressão aritmética (PA) #include <stdio.h> #include <stdlib.h> int calcularDistancia(long, long, int); long calcularSomatorio(long, long, int); int main() { // a1 = posição inicial da PA. // an = posição final da PA. // sn = Somatório de todos os elementos desde a1 até an long a1, an, sn; // esta PA é de razão 1 int r = 1; // Obtém os valores para a1 e an scanf("%ld %ld", &a1, &an); // Se a1 for maior que an, // então troca os valores. É possível também negativar a razão. if(a1 > an) { long aux = a1; a1 = an; an = aux; } // Calcula o somatório dos itens da PA sn = calcularSomatorio(a1, an, r); // Exibe em tela o somatório. printf("%ld\n", sn); return 0; } /** * Calcula o somatório de a1 até an * * @param a1 Posição incial * @param an Posição final * @param r Razão da PA * * @return Valor do somatório do PA. */ long calcularSomatorio(long a1, long an, int r) { int n = calcularDistancia(a1, an, r); return ((a1 + an) * n)/2; } /** * Obtém qual é a posição de an dentro da PA * * @param a1 Posição inicial da PA * @param an Posição final da PA * @param r Razão razão da PA * * @return int Posição de an dentro da PA. */ int calcularDistancia(long a1, long an, int r) { return ((an - a1)/r) + 1; } -
Rapaz, quando a roleta entra em execução é disparada uma ação no servidor para saber qual o número ela deve marcar. Quando ela recebe o número ela calcula as rotações e velocidade que deve ir parando para cair no número desejado... Deixa eu mostrar +- como ela faz: 1. Começa a girar, e após começar a girar e travar as apostas e etc... ela envia uma requisição ao servidor para saber qual número ela deve marcar. 2. Ao receber o retorno, ela calcula o número de voltas com a velocidade atual até parar no número indicado... Mesmo que você consiga saber pelo calculo, o número, você não vai conseguir apostar antes de saber qual é o número, pois algumas dessas variáveis são dadas pelo servidor :v 'timeMax' = timeOut para resposta do servidor e parametro para aumentar o freio da roleta para "todos" pararem juntos caso você receba a resposta em um tempo diferente de outra pessoa:v
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