-
Posts
3.601 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Midori postou
-
Fiz uma pequena alteração no for e acrescentei outro, #include <stdio.h> #include <stdlib.h> #include<locale.h> main() { setlocale(LC_ALL, "Portuguese"); int i, n; for (i=5; i>=1; i--) { for (n=1; n<=i; n++) { printf("%d ", n); } printf("\n"); } }
-
Para começar, procure por referências bibliográficas para usar no seu trabalho. Na biblioteca do seu campus deve ter. Sugiro o C Avançado do Herbert Schildt. É um livro antigo, mas é muito bom. Tem um capítulo nele sobre compactação
-
Dicas para manutenção de TV de tubo
Midori respondeu ao tópico de Midori em Televisores e projetores
O modelo é Panasonic TC-14A8 Tem som, mas só está aparecendo uma linha horizontal na tela. -
Pessoal, Qual é a melhor forma de tentar reparar uma TV de tubo com segurança? Sei que o procedimento é perigoso por conta da alta tensão que esse tipo de aparelho armazena, principalmente no tubo e capacitores. Tenho conhecimento básico em eletrônica que adquiri pesquisando em livros, youtube, etc. Mas nunca abri uma TV tubo e quero tentar consertar uma que tenho aqui conta própria. Alguém pode me dar umas dicas, ou indicar materiais, sobre os componentes mais perigosos? Ou os cuidados que devemos tomar ao abrir esse tipo de aparelho? Se eu descarregar os capacitores e o tubo com uma ponta de prova já é o suficiente para evitar choques? Valeu.
-
O erro acontece na sua verificação de CreateWindow, via MessageBox? Tente usar CS_HREDRAW | CS_VREDRAW no wnd.style E só para testar, no CreateWindow, atribua os valores default (CW_USEDEFAULT) nas dimensões/posições da janela.
-
Você não falou qual é a dúvida, mas vou deixar uma sugestão de função para contar a quantidade de vogais e consoantes. void conta(char *str, int *vog, int *con){ char *s = str; *vog = *con = 0; while(*s){ char c = tolower(*s); if(c >= 'a' && c <= 'z'){ if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){ *vog += 1; }else{ *con += 1; } } *s++; } } int main(){ char texto[] = "Testando"; int v, c; conta(texto, &v, &c); printf("Vogais = %d\nConsoantes = %d\n", v, c); return 0; }
-
Para o segundo exercício, Segue uma sugestão, é só alterar o último loop acrescentando as funções de escrita no disco. #include <stdio.h> #define MAX 50 struct aluno{ char nome[51]; float nota; }; typedef struct aluno ALUNO; int main(){ ALUNO reg[MAX]; int i; for(i = 0; i < MAX; i++){ printf("Nome: "); scanf("%s", reg[i].nome); do{ printf("Nota: "); scanf("%f", ®[i].nota); }while(reg[i].nota < 0 || reg[i].nota > 10); } for(i = 0; i < MAX; i++){ printf("\n*******\n%s, %f\n********\n", reg[i].nome, reg[i].nota); } return 0; }
-
C++ error too many arguments to function 'endereco* encontra()'
Midori respondeu ao tópico de Gabsouza12 em C/C#/C++
O erro deve estar nesse tipo de declaraçao em algumas funções, struct endereco *encontra(); Já existe uma função com esse nome. -
Não basta apenas conhecer a linguagem, você vai ter que saber usar as bibliotecas/funções gráficas disponíveis pelo fornecedor do compilador (no Turbo C é o graphics) ou usar algum game engine como Unity.
-
Nestes ajustes melhora em uma parte e piora em outra, mas ficou melhor do que as configurações originais. O jeito é encontrar um meio termo já que não fica totalmente alinhado. Vou deixar assim, acho que é o melhor que dá para fazer pelo modo de serviço. valeu.
-
Eu só consigo entrar no modo de servico pressionando menu 1 e 9. Da forma que você sugeriu e não consegui Esta é a parte do manual que mostra como acessar. Eu só não tentei o modo de desenvolvimento. Estas são as funções que eu ajustei, mas no caso de CNRT/CNRB e KEY não vejo nenhuma diferença ao mudar. Sobre verificar o Yoke eu não tentei pois não tenho conhecimento técnico para fazer uma verificação interna.
-
O modelo é o TV1454(P)SL Estou acessando o modo de serviço digitando menu 1 9
-
Pessoal, Tenho uma TV CRT da marca Semp, modelo ultra slim, que uso para retrogames, Vejam nas imagens abaixo que ela apresenta desalinhamento vertical, principalmente do lado direito da tela (o canto superior é o mais visível). Eu já tentei ajustar isso no modo de serviço, mas a distorção persiste. Há outra forma de corrigir isso?
-
Eu já programei Pacman em BASIC. Nunca usei SDL, mas a principio sugiro que você tente trabalhar com bitmaps. Primeiramente você pode criar o labirinto e os bitmaps de Pacman e dos fantasmas, depois procure por uma função para mover o bitmap na tela. No caso do movimento dos fantasmas, a ideia é fazer as coordenadas X/Y convergirem para as coordenadas do Pacman, por exemplo: PUT (FX1 * 40 + 5, FY1 * 40 + 5), FANTASMA1 IF FX1 > X THEN FX1 = FX1 - 1 IF FX1 < X THEN FX1 = FX1 + 1 IF FY1 > Y THEN FY1 = FY1 - 1 IF FY1 < Y THEN FY1 = FY1 + 1 A função PUT simplesmente coloca o bitmap na tela com base nas coordenadas x/y. A vantagem dessa função é que ela realiza uma operação lógica como XOR. Isso significa que a cada loop ela "apaga" a posião anterior fazendo com o personagem se mova na tela. Então você pode procurar por uma função semelhante, tipo: put(int x, int y, void *pBitmap). É claro que essa é uma abordagem simples e há algoritmos de busca mais adequados para movimentar os fantasmas.
-
Estou fazendo um jogo espacial simples no QBASIC/MS-DOS, conforme imagem abaixo A ideia é que seja algo tipo space invaders, os inimigos (os objetos vermelhos) do meu jogo inclusive se movimentam igual os alienígenas do jogo do atari. A dificuldade que estou tendo é na movimentação da nave do jogador (objeto verde), pois o movimento as vezes trava e a nave fica se movimentando indefinidamente para determinado lado. Eu poderia usar INKEY para facilitar, mas aí a nave não poderia se movimentar na diagonal. Essa é a parte do código, onde eu implementei a lógica o movimento, que está dando problema. Eu usei operações lógicas para ativar/desativar um bit na variável T, conforme o usuário pressiona ou solta a tecla do movimento. ... SELECT CASE K CASE 2: END CASE KE: T = T OR KCE CASE KE + 128: T = T AND NOT KCE CASE KD: T = T OR KCD CASE KD + 128: T = T AND NOT KCD CASE KC: T = T OR KCC CASE KC + 128: T = T AND NOT KCC CASE KB: T = T OR KCB CASE KB + 128: T = T AND NOT KCB END SELECT ... IF T = KCE THEN X = X - 1 IF T = KCD THEN X = X + 1 IF T = KCB THEN Y = Y + 1 IF T = KCC THEN Y = Y - 1 IF T = KCB + KCD THEN X = X + 1: Y = Y + 1 IF T = KCB + KCE THEN X = X - 1: Y = Y + 1 IF T = KCC + KCD THEN X = X + 1: Y = Y - 1 IF T = KCC + KCE THEN X = X - 1: Y = Y - 1 IF X < 0 THEN X = 0 IF Y < 0 THEN Y = 0 IF Y > CY - 50 THEN Y = CY - 50 IF X > CX - 50 THEN X = CX - 50 ... Alguém tem uma ideia de como resolver esse problema do movimento da nave? valeu! Segue o código SCREEN 12 DEFINT A-Z RANDOMIZE TIMER TYPE INFOINIMIGO X AS INTEGER 'COORD. X Y AS INTEGER 'COORD. Y F AS INTEGER 'FLAG CRIAR/DESTRUIR D AS INTEGER 'DIRE€AO DO MOVIMENTO V AS INTEGER 'VELOCIDADE END TYPE CONST ESQUERDA = 0 CONST DIREITA = 1 CONST INIMIGOS = 2 CONST FOGO = 57 CONST KE = 75 CONST KD = 77 CONST KC = 72 CONST KB = 80 CONST KCE = &H40 'ESQUERDA CONST KCD = &HA 'DIREITA CONST KCC = &H4 'CIMA CONST KCB = &H1 'BAIXO CONST VERDE = 10 CONST BRANCO = 15 CONST CIANO = 11 CONST VERMELHO = 12 CONST AMARELO = 14 CONST CX = 637 CONST CY = 477 CONST SAIR = "Q" DIM NAVE(2000) DIM INIMIGO(2000) DIM DISPARO(8) DIM VI(0 TO 10) AS INFOINIMIGO REM --------------------------------- REM -- CRIAR O ESPA€O,NAVE E INIMIGO REM --------------------------------- CIRCLE (20, 10), 10, VERMELHO CIRCLE (20, 10), 8, VERMELHO LINE (10, 10)-(30, 20), VERMELHO, B GET (10, 0)-(30, 20), INIMIGO CLS CIRCLE (1, 1), 1, CIANO GET (0, 0)-(2, 2), DISPARO CLS CIRCLE (25, 25), 5, VERDE LINE (17, 24)-(18, 15), VERDE, B LINE (33, 24)-(34, 15), VERDE, B LINE (10, 24)-(40, 26), VERDE, B CIRCLE (40, 25), 20, VERDE, , , 10 CIRCLE (10, 25), 20, VERDE, , , 10 GET (0, 0)-(50, 50), NAVE CLS LINE (0, 0)-(CX, CY), 10, B REM -------------- REM --- ESTRELAS REM -------------- FOR I = 0 TO 500 PSET (RND(1) * (CX - 1), RND(1) * (CY - 1)), BRANCO NEXT I CONTA = 0: T = 0: X = 200: Y = 400 POSICAO = 0: PONTOS = 0 FOR I = 0 TO INIMIGOS VI(I).X = RND(1) * (CX - 30) VI(I).Y = RND(1) * (CY - 300) VI(I).F = 1 VI(I).D = RND(1) * 1 VI(I).V = 10 PUT (VI(I).X, VI(I).Y), INIMIGO NEXT I N = 0 DO CONTA = CONTA + 1 K = INP(&H60) REM ----------------------------------- REM CONTROLAR MOVIMENTOS DOS INIMIGOS REM ----------------------------------- IF N > INIMIGOS THEN N = 0 IF VI(N).F = 1 THEN PUT (VI(N).X, VI(N).Y), INIMIGO IF VI(N).D = ESQUERDA THEN VI(N).X = VI(N).X - VI(N).V IF VI(N).D = DIREITA THEN VI(N).X = VI(N).X + VI(N).V IF VI(N).X >= (CX - 50) THEN VI(N).X = (CX - 50) - 1 VI(N).D = ESQUERDA VI(N).Y = VI(N).Y + 1 IF VI(N).Y > 200 THEN VI(N).V = VI(N).V + 1 END IF IF VI(N).X <= 1 THEN VI(N).X = 2 VI(N).D = DIREITA VI(N).Y = VI(N).Y + 1 IF VI(N).Y > 200 THEN VI(N).V = VI(N).V + 1 END IF PUT (X, Y), NAVE WAIT &H3DA, 8 PUT (X, Y), NAVE IF VI(N).F = 1 THEN PUT (VI(N).X, VI(N).Y), INIMIGO N = N + 1 IF K = KE THEN T = T OR KCE ELSEIF K = (KE + 128) THEN T = T AND NOT KCE END IF SELECT CASE K CASE 2: END CASE KE: T = T OR KCE CASE KE + 128: T = T AND NOT KCE CASE KD: T = T OR KCD CASE KD + 128: T = T AND NOT KCD CASE KC: T = T OR KCC CASE KC + 128: T = T AND NOT KCC CASE KB: T = T OR KCB CASE KB + 128: T = T AND NOT KCB END SELECT IF K = FOGO THEN DISPAROU = 1 IF DISPAROU = 1 THEN IF POSICAO = 0 THEN DX = X: DY = Y IF DY > 0 THEN PUT (DX + 17, DY), DISPARO IF POSICAO = 0 THEN PUT (DX + 17, DY), DISPARO DY = DY - 5 POSICAO = 1 IF DY > 0 THEN PUT (DX + 17, DY), DISPARO IF DY <= 0 THEN POSICAO = 0 DISPAROU = 0 END IF END IF IF DISPAROU = 1 THEN FOR I = 0 TO INIMIGOS IF (VI(I).X <= DX + 20 AND VI(I).X >= DX - 3) THEN IF (DY <= VI(I).Y + 10 AND DY >= VI(I).Y - 10) THEN IF VI(I).F = 1 THEN PUT (VI(I).X, VI(I).Y), INIMIGO VI(I).F = 0 PONTOS = PONTOS + 1 END IF END IF END IF NEXT I END IF IF T = KCE THEN X = X - 1 IF T = KCD THEN X = X + 1 IF T = KCB THEN Y = Y + 1 IF T = KCC THEN Y = Y - 1 IF T = KCB + KCD THEN X = X + 1: Y = Y + 1 IF T = KCB + KCE THEN X = X - 1: Y = Y + 1 IF T = KCC + KCD THEN X = X + 1: Y = Y - 1 IF T = KCC + KCE THEN X = X - 1: Y = Y - 1 IF X < 0 THEN X = 0 IF Y < 0 THEN Y = 0 IF Y > CY - 50 THEN Y = CY - 50 IF X > CX - 50 THEN X = CX - 50 DEF SEG = &H40 POKE &H1A, PEEK(&H1C) IF CONTA = 50 THEN CONTA = 0 IF PONTOS = INIMIGOS + 1 GOTO FIM LOOP FIM: LOCATE 1, 1: PRINT "FIM: "; PONTOS; " PONTO(S)"
-
O tópico abaixo vai te ajudar, veja a explicação do @vangodp
-
C++: como interromper o fluxo de entrada usando o Dev-C++?
Midori respondeu ao tópico de Jardel Nunes em C/C#/C++
Da forma que você fez, o critério de parada e EOF. Se quiser sair do loop, sem terminar o programa, determine uma condição para chamar a instrução break -
Basicamente você está manipulando os vetores incorretamente, Há também vetores declarados sem elemento (zero)
-
Você pode usar um loop para facilitar, #include <stdio.h> int main(){ int n, soma = 0, produto = 1; int qtd, menor, maior; for(qtd = 0; qtd < 3; qtd++){ scanf("%d", &n); if(!qtd) maior = menor = n; if(n > maior) maior = n; if(n < menor) menor = n; soma += n; produto *= n; } printf("\n\nSoma = %d\nMedia = %.2f\n", soma, (float)(soma / 3.0)); printf("Produto = %d\nMenor = %d\nMaior = %d\n", produto, menor, maior); return 0; }
-
C++: como interromper o fluxo de entrada usando o Dev-C++?
Midori respondeu ao tópico de Jardel Nunes em C/C#/C++
Tente Ctrl + C -
Deu certo. Usei SetFocus em WM_INITDIALOG também, valeu!
-
A caixa de diálogo está funcionando corretamente, a única coisa que eu preciso agora é de um comando para focar o cursor no "TextBox" do Nome. O foco precisa ser após o usuário clicar OK ou Salvar. Qual é a melhor maneira de fazer isso? Segue o procedimento da caixa: BOOL CALLBACK WndDialogo(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam){ int i; static int n = 0; switch(iMsg){ case WM_COMMAND: switch(LOWORD(wParam)){ case IDC_SAIR: EndDialog(hWnd, 0); break; case IDC_OK: if(n < MAX){ GetDlgItemText(hWnd, IDC_NOME, pTabela[n].szNome, 49); GetDlgItemText(hWnd, IDC_IDADE, pTabela[n].szIdade, 19); GetDlgItemText(hWnd, IDC_NOTA, pTabela[n].szNota, 19); n++; } SetDlgItemText(hWnd, IDC_NOME, ""); SetDlgItemText(hWnd, IDC_IDADE, ""); SetDlgItemText(hWnd, IDC_NOTA, ""); break; case IDC_SALVAR: if(n && n <= 5){ FILE *fp = fopen("registro.txt", "w"); for(i = 0; i < n; i++){ fprintf(fp, "Nome = %#20s | Idade %02s | Nota %s\n", pTabela[i].szNome, pTabela[i].szIdade, pTabela[i].szNota); } fclose(fp); } if(n == 5) n = 0; break; } return 1; } return 0; } E o recurso: IDR_DIALOGO DIALOG 2, -19, 207, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Registro" FONT 8, "MS Sans Serif" { DEFPUSHBUTTON "OK", IDC_OK, 148, 6, 50, 14 PUSHBUTTON "Sair", IDC_SAIR, 148, 24, 50, 14 PUSHBUTTON "Sobre", IDC_SOBRE, 148, 42, 50, 14 LTEXT "Nome", -1, 6, 9, 46, 10 LTEXT "Idade", -1, 6, 37, 31, 9 LTEXT "Nota", -1, 8, 61, 39, 10 EDITTEXT IDC_NOME, 33, 5, 98, 13 EDITTEXT IDC_IDADE, 33, 32, 99, 14 EDITTEXT IDC_NOTA, 33, 59, 99, 13 }
-
Já verificou se não é firewall que está bloqueando? Ou talvez seja necessário configurar o roteador para aceitar conexões externas
-
Em qual linguagem? A senha será cadastrada em algum banco de dados ou será definida no código da aplicação?
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