
Benjamin Breeg
Membro Pleno-
Posts
226 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Benjamin Breeg postou
-
Pra não aparecer aquela janelinha do cmd você vai (codeblocks) propriedades do projeto, build target ai em Type seleciona GUI Application. Que comandos você diz?
-
o END_OF_MAIN(); não tem o " ; " no final Ele não esta reconhecendo as funções porque falta você configurar o biblioteca do Allegro nas opções de compilador aba Linker, ai em Link libraries você coloca o caminho para esse dll: allegro-4.4.2-monolith-md-debug.dll Lembrando que o exemplo do rapaz do vídeo ele usa o Allegro 4.4.2. Esse teu código não faz nada, falta o game loop, configurar o ambiente do Allegro, janelas, etc etc. Eu recomendo você assistir desde o tutorial 1 com bastante atenção e estar com funções, ponteiros, operadores aritméticos, estruturas de repetição muito bem assimilados na cabeça.
-
Da uma olhada nesse vídeo.
-
C++ como comparar um vetor com ele mesmo?
Benjamin Breeg respondeu ao tópico de Inkywinky em C/C#/C++
Para formatar melhor a saída, você pode usar a função setw. Algo assim: include <iomanip> // setw for (e=0; e<10; e++) { if (vetor[e]!=0) { cout << setw(2) << vetor[e] << " --> " << setw(2) << quant[e] << "x"<< endl; } } -
O próprio exercício já te deu a resposta, 1 polegada = 2.54cm, portanto 2 polegadas seria equivalente a 5.08 cm, seguindo essa lógica para saber a medida da diagonal daquela TV de 75" ultra 4K que todo mundo sonha.. agora é só fazer o calculo
-
C Linguagem C com macro
Benjamin Breeg respondeu ao tópico de Paulo Sérgio Oliveira Coutinho em C/C#/C++
Tem que testar os 3 valores: #include<stdio.h> #include<conio.h> #define max (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c); void main() { int a = 10; int b = 1; int c = 8; int d = max(a, b ,c); printf("Maior Valor: %d", d); _getch(); } -
Eu não entendo quase nada de programação embarcada mas você não teria que setar as flags para configurar o display. Da uma olhada nesse exemplo. http://ccspicc.blogspot.com.br/2016/03/pic16f877a-lcd-example-interfacing-ccs-picc.html
-
Qual a sua duvida nesse exercício basta validar uma entrada que só aceite valores entre 0 e 39 e usar o polinômio para retornar o numero. Essa expressao em c/c++ é equivalente a x * x + x + 41
-
C operações linguagem C com caracteres
Benjamin Breeg respondeu ao tópico de Robson Miguel em C/C#/C++
Você pode colocar um espaço em branco no scanf que vai receber a entrada da operação, ali fica um \n na entrada, o espaço serve pra tirar isso do input. printf("\n Qual operacao voce deseja realizar? " ); scanf(" %c", &opera); -
C O que está dando errado neste algoritmo?
Benjamin Breeg respondeu ao tópico de LeoAlves_jp em C/C#/C++
Verdade. Fiz a modificação. -
C O que está dando errado neste algoritmo?
Benjamin Breeg respondeu ao tópico de LeoAlves_jp em C/C#/C++
Você pode simplificar o retorno das funções e no switch como você esta usando um char tem que usar aspas simples, para esse caso melhor usar um do while. #include<stdio.h> float soma(float num1, float num2) { return(num1 + num2); } float divide(float num1, float num2) { return(num1 / num2); } float multiplica(float num1, float num2) { return(num1 * num2); } float subtrai(float num1, float num2) { return(num1 - num2); } int main() { char i, ch; float n1, n2, resultado; do { printf("Qual operação voce deseja fazer? \n + = somar / = dividir * = multiplicar - = subtrair\n"); scanf(" %c", &i); printf("Digite o primeiro numero:\n"); scanf("%f", &n1); printf("Digite o segundo numero:\n"); scanf("%f", &n2); switch(i) { case '+': resultado = soma(n1,n2); break; case '-': resultado = subtrai(n1,n2); break; case '/': resultado = divide(n1,n2); break; case '*': resultado = multiplica(n1,n2); break; default: printf("Opção invalida."); } printf("O resultado é %f \n", resultado); printf("Deseja fazer mais alguma operacão?\n S/N "); scanf(" %c", &ch); } while(ch=='s' || ch=='S'); } -
Tem um erro ali na sua função main e você criou a superfície 2x uma fora do loop e outra dentro do loop principal. #include <SDL2/SDL.h> #include <iostream> int main(int argc, char *argv[]) { SDL_Window *window = NULL; SDL_Surface *surface = NULL; if(SDL_Init(SDL_INIT_VIDEO) < 0){ std::cout << "Erro ao iniciar o video! Codigo do erro: " << SDL_GetError() << std::endl; return -1; } window = SDL_CreateWindow("titulo da janela", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE); if(window == NULL){ std::cout << "Erro de criar janela! Codigo de erro: " << SDL_GetError() << std::endl; return -1; } bool close = false; SDL_Event Event; while(!close){ while(SDL_PollEvent(&Event) != 0){ if(Event.type == SDL_QUIT) close = true; //Função principal do jogo //Fim da função principal do jogo } surface = SDL_GetWindowSurface(window); SDL_FillRect(surface, NULL, SDL_MapRGB( surface->format, 0xFF, 0xFF, 0xFF)); SDL_UpdateWindowSurface(window); } SDL_DestroyWindow(window); SDL_Quit(); return 0; } Recomendo você dar uma olhada nos tutoriais do site LazyFoo. http://lazyfoo.net/tutorials/SDL/
-
Ai você tem que usar o else if para quando uma condição for verdadeira ele não testa as demais. #include<stdio.h> #include<math.h> int main () { int x,y; scanf("%d",&x); if (x < 1){ y = x; printf("Y = %d\n",y); } else if (x == 1){ y = 0; printf("Y = %d\n",y); } else if (x > 1) { y = pow(x,2); printf("Y = %d\n",y); } }
-
Ai no caso tem que usar o double com especificador lf ou Lf no scanf para explicitar o double ou long double. Fica assim: #include<stdio.h> int main() { double A, B; int anos = 0; scanf("%lf",&A); scanf("%lf",&B); while(A < B) { A += (A/100) * 3; B += (B/100) * 1.5; anos++; } printf("Populacao A: %f\n", A); printf("Populacao B %f\n", B); printf("Quantidade de anos: %d\n", anos); }
-
Eu uso uma função em WinAPI que é equivalente ao antigo clrscr() dos antigos compiladores para MS-DOS da Borland. void clrscr() { COORD coordScreen = { 0, 0 }; DWORD cCharsWritten; CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD dwConSize; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsole, &csbi); dwConSize = csbi.dwSize.X * csbi.dwSize.Y; FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten); GetConsoleScreenBufferInfo(hConsole, &csbi); FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten); SetConsoleCursorPosition(hConsole, coordScreen); return; }
-
no printf diretamente não da, é justamente o que a função gotoxy faz, ela desloca o cursor para as posições que você define e ai o printf imprime na posição correspondente. A implementação do devair1010 é mais inteligente, ele desloca cursor para uma coordenada e então tudo é impresso nessa posição.
-
Ai você tem que entender como as coordenadas de tela trabalham no modo texto, existe um limite de 80 para x e 25 para y ou seja 80 colunas por 25 linhas. No PC as coordenadas começam em 1,1 no canto superior esquerdo da tela, o meio da tela seria em x=40, y=12
-
Eu uso um esquema parecido só que usando a função GetAsyncKeyState #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <windows.h> void gotoxy(int x, int y); int main() { int opcao = 1, x = 7; bool sair = true; system("cls"); system("color 0F"); gotoxy(18,5); printf("Menu Principal"); gotoxy(18,7); printf("->"); while(sair){ gotoxy(20,7); printf("1 - JOGAR"); gotoxy(20,8); printf("2 - RANKINGS"); gotoxy(20,9); printf("3 - CREDITOS"); gotoxy(20,10); printf("4 - SAIR"); system("pause>nul"); if(GetAsyncKeyState(VK_DOWN) && x != 10) { gotoxy(18,x); printf(" "); x++; gotoxy(18,x); printf("->"); opcao++; continue; } if(GetAsyncKeyState(VK_UP) && x != 7){ gotoxy(18,x); printf(" "); x--; gotoxy(18,x); printf("->"); opcao--; continue; } if(GetAsyncKeyState(VK_RETURN)){ switch (opcao) { case 1: gotoxy(20,16); printf("GAME\n"); break; case 2: gotoxy(20,16); printf("Ranking\n"); break; case 3: gotoxy(20,16); printf("Creditos\n"); break; case 4: gotoxy(20,16); printf("voce pediu para sair\n"); sair = false; } } } gotoxy(20,21); return 0; } void gotoxy(int x, int y) { HANDLE hCon; COORD dwPos; dwPos.X = x; dwPos.Y = y; hCon = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hCon,dwPos); }
-
Você não esta passando a passagem de parâmetros corretamente para as funções, também falta o retorno delas e alguns erros referente aos índices do array. #include <stdio.h> /*Escreva o programa que recebe um numero arbitrário de inteiros positivos e: • mostra qual foi o maior e o menor valor fornecido • calcula a soma dos números pares. Obs. Desconsiderar os eventuais números negativos digitados por usuário*/ int acharmenorvalor(int vetor[], int n) { int i, menor; menor = vetor[0]; for (i=1; i<n; i++) { if (vetor[i]<menor) { menor = vetor[i]; } } return menor; } int acharmaiorvalor(int vetor[], int n) { int i, maior; maior = vetor[0]; for (i=1; i<n; i++) { if (vetor[i]>maior) { maior = vetor[i]; } } return maior; } int soma(int vetor[], int n) { int i, par = 0; for(i=0;i<n;i++) { if(vetor[i] % 2 == 0) { par += vetor[i]; } } return par; } int main() { int quant, numero[100], ma , me, so; int cont = 0; printf("Quantos numeros você deseja digitar? "); scanf("%d", &quant); while(cont < quant) { printf("Digite %d numero: ",cont+1); scanf("%i", &numero[cont]); me = acharmenorvalor(numero, quant); ma = acharmaiorvalor(numero, quant); so = soma(numero, quant); cont++; } printf("Maior numero: %i \n", ma); printf("Menor numero: %i \n", me); printf("A soma dos numeros pares: %i \n", so); return 0; }
-
Então esse barra " | " chama pipe, o || quer dizer or (ou), é um operador para fazer operações com valores lógicos verdadeiro ou falso, enquanto a entrada for s em minúsculo ou S em maiúsculo ele repete o loop caso seja N ou qualquer outra letra ele sai. Eu recomendo que você estude bastante essa parte de operadores relacionais, lógicos, aritméticos antes de avançar, eu vejo que você ja esta em condicionais, laços de repetição e ainda tem dificuldade com essa parte que é vital. Faça um estudo sobre lógica de programação para aprender e fixar melhor esses conceitos. Respondendo sua pergunta, teria como só aceitar uma entrada especifica tipo s, S ou n, N mas ai demanda um pouco mais de código, na pratica o teste lógico funcionaria da mesma maneira porém com a restrição de entrada . Não sei se é o melhor jeito de fazer isso mas fica algo assim: #include <stdio.h> int main() { int resp; do { /* CODIGO */ /* CODIGO */ printf("Deseja continuar? (S/N): "); resp = getchar(); if (resp == '\n') { resp = getchar(); } while (resp != 'n' && resp != 'N' && resp != 's' && resp != 'S') { printf("\nEntrada invalida, escolha (s/S/n/N): "); resp = getchar(); if (resp == '\n') { resp = getchar(); } } } while(resp == 'S' || resp == 's'); return 0; }
-
Hehe então.. eu achei estranho mas foi o que entendi do enunciado. fiz a correção.
-
Esse seu exercício so precisa mostrar o desconto? Se for você pode fazer algo assim: #include <stdio.h> int main() { float salario; char opc; do { printf("Digite seu salario: "); scanf("%f", &salario); int descontoINSS = 0; if(salario <= 600) { descontoINSS = 0; } else if(salario > 600 && salario <= 1200) { descontoINSS = 20; } else if(salario > 1200 && salario <= 2000) { descontoINSS = 25; } else if(salario > 2000) { descontoINSS = 30; } float valorDesconto = (salario / 100) * descontoINSS; float salarioCorrigido = salario - valorDesconto; if (descontoINSS == 0) { printf("ISENTO \n"); } else { printf("Desconto de: %d%% \n", descontoINSS); printf("Valor do desconto: %.2f \n", valorDesconto); printf("Salario corrigido: %.2f \n", salarioCorrigido); } printf("Deseja continuar? (S/N): "); scanf(" %c", &opc); } while(opc == 's' || opc == 'S'); return 0; }
-
Esse lance de não pode ser muito simples, acho que isso vai depender mais das suas habilidades como programador do que da imaginação propriamente dita. Ate mesmo um inocente pacman não é algo muito simples de fazer, geralmente quem ta começando programar jogos começa com os simples, pong, snake(vulgo jogo da cobrinha), jogo da velha etc etc. Se ja tiver bastante experiência pode tentar fazer uma versão de algum jogo clássico da época do Atari por ex. Esses dias vi um remake do jogo adventure do Atari 2600 que um cara fez em allegro, ficou muito maneiro. Remake: Original:
-
Se você precisa apenas verificar se é maiuscula, minuscula ou especial pode fazer um teste para verificar se é letra do alfabeto maiuscula ou minuscula caso contrario é especial. Algo assim: #include<stdio.h> int main() { char palavra[50]; int i; int minuscula, maiuscula, especial; printf("Digite a palavra: "); gets(palavra); minuscula = 0; maiuscula = 0; especial = 0; for(int i=0;palavra[i]!='\0';i++) { if((palavra[i]>='A' && palavra[i]<='Z') || (palavra[i]>='a' && palavra[i]<='z')) { if((palavra[i]>='A' && palavra[i]<='Z')) { maiuscula++; } else { minuscula++; } } else { especial++; } } printf("\nCaracteres em maiuscula: [ %d ]\n",maiuscula); printf("\nCaracteres em minuscula: [ %d ]\n",minuscula); printf("\nCaracteres especiais: [ %d ]\n",especial); return 0; } Esse não verifica digito mas ai é só seguir a mesma lógica e criar o teste para verificar entre 0 e 9
-
Esse erro acontece porque nas versões antigas do C não era obrigatório explicitar o tipo de retorno das funções, o compilador assumia um retorno int automaticamente, no padrão c99 em diante não é permitido mais fazer isso, você precisa especificar o retorno mesmo que seja implícito ser um int. "void main" você esta dizendo que a função main não retorna nada, sendo que ela precisa retornar um valor inteiro 0 para sinalizar que o programa foi executado de forma correta. Isso funcionava nas versões mais antigas como o C89 ou o C++ antes da padronização C++98 e em compiladores bem antigos como o Turbo C++.
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