Ir ao conteúdo
  • Cadastre-se

Flávio Pedroza

Membro Pleno
  • Posts

    2.067
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. Infelizmente é um pouco mais complicado que isso. Para ler essas teclas especiais você que usar a api do windows e desenvolver utilizando o código para aplicações windows. Aqui um exemplo básico: #include <windows.h> const char g_szClassName[] = "myWindowClass"; // Step 4: the Window Procedure LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { //Aqui você processa as teclas pressionadas. case WM_KEYDOWN: switch (wParam) { case VK_DIVIDE: break; case VK_PAUSE: break; case VK_INSERT: break; case VK_DELETE: break; case VK_MENU: break; } case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; HWND hwnd; MSG Msg; //Step 1: Registering the Window Class wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = NULL; wc.lpszClassName = g_szClassName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } // Step 2: Creating the Window hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "The title of my window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL); if(hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // Step 3: The Message Loop while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; } Ao criar o seu projeto na IDE, especifique que irá desenvolver aplicativos win32.
  2. Como você lê a tecla que o usuário digita?
  3. você tem que usar a API C do MySQL (já deve estar instalado junto com o DB, caso contrário: https://dev.mysql.com/downloads/c-api/ Como usar: https://dev.mysql.com/doc/refman/8.0/en/c-api.html Tutorial (não sei se está atualizado): http://zetcode.com/db/mysqlc/
  4. você está usando que compilador? Se for o visual studio, você tem que criar o projeto especificando que será uma aplicação windows.
  5. // considerando que a borda da imagem são zeros // im - imagem original // im_rot - imagem rotulada - inicialmente zerada label = 1; lista_proximos = cria_lista(); Ponto p, p_atual; for i = 1 ate nlinhas-1 { for j = 1 ate ncolunas-1 { // percorre toda a imagem em busca de um pixel foreground (valor 1) p.x = i; p.y = j; if (im(p.x,p.y)==1) and (im_rot(p.x,p.y)==0) { // atribui o label a posição (i,j) im_rot(p.x,p.y) = label; // inclui na lista de busca dos vizinhos lista_proximos.push_back(p); while !vazia(lista_proximos) { // busca o próximo ponto da lista p_atual = pop(lista_proximos); for (int d = 0; d < 4; d++) { p.x = p_atual.x - (d == 0) + (d == 1); p.y = p_atual.y - (d == 2) + (d == 3); // verifica if o ponto acima não é um e não foi rotulado if (im(p.x, p.y)==1) and (im_rot(p.x,p.y)==0){ // atribui o label a posição atual im_rot(p.x,p.y) = label; // adiciona o ponto na lista para verificar vizinhos posteriormente push(lista_proximos,p); } }//for } // enquanto label = label + 1; } // if } } Percebi que você repete o mesmo trecho de código 4 vezes, então usei um laço de 0 a 3.
  6. http://www.firmcodes.com/sorting-algorithms-in-c/
  7. Se entendi bem, você tem que adicionar outra condicional na procura: além de ter o mesmo código, os produtos tem que estar no mesmo pedido: Recjun prod = Lista.Find(x => ((x.Produto == int.Parse(sproduto)) && (x.Pedido == int.Parse(spedido))));
  8. //slnovo[i] = slfunc[i] - slfunc[i] * (reaj / 100); slnovo[i] = slfunc[i] - slfunc[i] * ((double)reaj / 100); Obs.: Não sei se era sua intenção, mas você está reajustando para menos os salários...
  9. Toda vez que quiser alterar o valor de um ponteiro dentro de uma função, você tem que passá-lo também por referência (ponteiro do ponteiro), como fez na função Insere. Em determinado ponto dentro da função "Busca" você chama a função "Insere", que alterar o valor da variável "No". Se você quiser que esta alteração persista, tem que usar ponteiro de um ponteiro. Veja esse código: #include <stdio.h> int y = 2; int z = 3; void altera_ponteiro (int **x) { *x = &z;//agora sim, faz x aponta para z e tal alteracao permanece } void nao_altera_ponteiro (int *x) { x = &z;//faz x aponta para z, mas a referencia nao permanece apos o fim da funcao } int main() { int *x = &y; //x aponta para y printf ("%d\n", *x); //imprime 2, pois x esta refenciando y, que tem valor 2 nao_altera_ponteiro (x); //tenta fazer x aponta para z, mas nao vai funcionar printf ("%d\n", *x); //imprime 2, pois x ainda esta refenciando y, que tem valor 2 altera_ponteiro (&x); printf ("%d\n", *x); //imprime 3, pois agora x esta refenciando z, que tem valor 3 return 0; }
  10. void Busca (No **L, char nome[]){ No* p; p = *L; if(p == NULL){ Insere (L, nome,1);//lista vazia então insere elemengo }else{ while ((p!= NULL) && (strcmp(p->chave, nome)!= 0)){//varrer lista até fim ou até encontrar o elemento p = p->Prox; } if(p!=NULL){//p!= /null quer dizer que encontrou o elemento antes de chegar ao fim da lista p->num = p->num +1;//aumenta o contador numero de vezes que o elemento aparece }else{ Insere(L, nome,1);//não encontrou elemento então insere } } }; int main(){ No * L = NULL; char teste[]="cenoura"; char teste2[]="suco"; char teste3[]="computador"; char teste4[]="sardinha"; Insere(&L,teste,1); Insere(&L,teste2,1); Insere(&L,teste3,1); Busca(&L,teste4); Enumere(L); return 0; }
  11. Isso: https://produto.mercadolivre.com.br/MLB-1350086274-xbox-360-wireless-controller-receptor-pc-preto-_JM#position=6&type=item&tracking_id=e1fad9c9-641e-4172-9efd-226c6f3ff006
  12. No PC, esse cabo serve apenas para carregamento. Não dá pra usar do jeito que quer (transformar o controle sem fio em um com fio). Também tenho um controle xbox 360 wireless e um cabo desse também, só dá pra usar o controle no PC via o dongle sem fio.
  13. void Busca (No *L, char nome[]){ No* p; p = L; //if(p = NULL){ if(p == NULL){ //comparacao '==', atribuicao '='
  14. Não precisa... //while(bit[i] != '-1' ) A sintaxe esta erradada. perceba que, -1, na verdade, sao dois caracteres (uma string), e bit[i] armazena um unico caractere (char), entao nao ha como fazer esta compracao.
  15. List<Recjun> List = new List<Recjun>(); A variável está com o mesmo nome do tipo, aconselho a mudar. De todo modo, o que você tem que fazer é, antes de adicionar, procurar se o produto de um determinado código já existe na lista: Recjun resultado = Lista.Find (delegate(Recjun rec2) {return rec2.Produto == rec.Pedido;}); //procura se o produto ja foi cadastrado if (resultado != null) resultado.Quantidade+=rec.Quantidade; // se ja foi, apenas incrementa a quantidade else Lista.Add(rec); //caso contrario, cadastra novo produto Não testei o código acima, mas o p princípio é esse.
  16. void newContact(struct contact **schedule) //o ponteiro tem que passado por referencia (ponteiro do ponteiro) se quiser alterar seu valor { //schedule = (struct contact *)malloc(sizeof(struct contact)*gsize); isso nao pode ficar aqui, você chama malloc apenas uma vez ver a função DobraTamanho do exemplo do posto de @KXSY
  17. Eu faria assim. Aquivo (pergunta|resposta) Pergunta no. 1|A Pergunta no. 2|B Pergunta no. 3|C ... Um exemplo de como ler arquivos textos. Tente adaptar. using System; using System.IO; using System.Collections.Generic; class HelloWorld { public static List<string> perguntas = new List<string>(); // Armazena todas as perguntas public static List<string> respostas = new List<string>(); static void Main() { StreamReader sr = new StreamReader("quiz.txt"); String linha; while ((linha = sr. ReadLine()) != null) { String[] dados = linha.Split('|') ; perguntas.Add(dados[0]); respostas.Add(dados[1]); } } }
  18. Use um arquivo texto (duas colunas, separadas por "|" ou outro char qualquer), a primeira tem a pergunta e a segunda a resposta.
  19. Conheço o Blender, que é gratuito, e acredito que você consiga também personagem 3d gratuitos já prontos para animar no Blender.
  20. Quantas letras tem o nome Oseias? E Miria? Ana? Carlos? você acha que um vetor char de tamanho 4 caracteres (sendo que um dever ser reservado para o caractere nulo que identifica o fim da string) é suficiente para armazenar todas as letras de todos os nomes?
  21. Tenta atualizar o driver do vídeo, como sugerido. Veja se isso ajuda: https://answers.microsoft.com/pt-br/windows/forum/all/como-resolver-este-erro-no-minecraft/3137dfa6-d179-4580-9cdd-2c94050e89fb
  22. O erro mostrado é de gráfico. Qual sua placa de vídeo? Tente atualizar o driver dela?
  23. int cadastro(produtos **dados, int quantidade_produtos){ (...) *dados = (produtos *)realloc(*dados, aux * sizeof(produtos)); (...) } Acredito que o certo seria assim. Para chamar a função: cadastro(&dados, quantidade_produtos)
  24. Nesse caso, tente essa solução: #include<stdio.h> #include<stdlib.h> // biblioteca para usar as funções rand e srand. #include<time.h> // biblioteca para usar a função time. #include<locale.h> // biblioteca para linguagem #include<memory.h> main(void) { srand(time(NULL)); setlocale(LC_ALL, "Portuguese"); // comando para aceitar palavras em português. int i, contador=0, n=75, t = 0, j; int vetor[n]; memset(vetor, 0, n*sizeof(int)); //zera vetor for( i=1; i<76; i++) { printf("[ X]"); if(i%15==0) { printf("\n"); } } do { t=rand()%75+1; printf("Numero soterado:%i\n", t); getchar(); vetor[contador]=t; system("cls"); for( i=1; i<76; i++) { if (vetor[i-1] != 0) printf("[%2i]", vetor[i-1]); else printf("[ X]"); if(i%15==0) { printf("\n"); } } contador++; } while (contador <=75); }

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!