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
-
Aconteceu o mesmo problema comigo, você vai precisar compilar o source do winbgim no seu compilador.. Vou te passar o código que usei aqui inclusive com alguns fixes.. é so usar o comando mingw32-make na pasta do código. WinBGIm.zip
-
Que tipo de problema acontece quando você tenta usar o winbgi? Acredito que se você criar ou utilizar(nativa da winapi) uma função tipo putpixel, seja fácil converter a rotina que faz a elipse e a partir dela criar linhas, círculos, retângulos etc etc. Pelo que entendi você mesmo quer fazer suas funções gráficas como era antigamente para fins de aprendizado.
-
Procure por "mid point ellipse algorithm", vários sites explicam a formula matematicamente falando ou se você quiser implementar uma função pronta aqui vai um exemplo. #include <stdio.h> #include <conio.h> #include <graphics.h> #include <dos.h> int main() { /* request auto detection */ int gdriver = DETECT, gmode, err; long midx, midy, xradius, yradius; long xrad2, yrad2, twoxrad2, twoyrad2; long x, y, dp, dpx, dpy; /* initialize graphic mode */ initgraph(&gdriver, &gmode, "C:/TC/BGI"); err = graphresult(); if (err != grOk) { /* error occurred */ printf("Graphics Error: %s\n", grapherrormsg(err)); return 0; } /* x axis radius and y axis radius of ellipse */ xradius = 100, yradius = 50; /* finding the center postion to draw ellipse */ midx = getmaxx() / 2; midy = getmaxy() / 2; xrad2 = xradius * xradius; yrad2 = yradius * yradius; twoxrad2 = 2 * xrad2; twoyrad2 = 2 * yrad2; x = dpx = 0; y = yradius; dpy = twoxrad2 * y; putpixel(midx + x, midy + y, WHITE); putpixel(midx - x, midy + y, WHITE); putpixel(midx + x, midy - y, WHITE); putpixel(midx - x, midy - y, WHITE); dp = (long) (0.5 + yrad2 - (xrad2 * yradius) + (0.25 * xrad2)); while (dpx < dpy) { x = x + 1; dpx = dpx + twoyrad2; if (dp < 0) { dp = dp + yrad2 + dpx; } else { y = y - 1; dpy = dpy - twoxrad2; dp = dp + yrad2 + dpx - dpy; } /* plotting points in y-axis(top/bottom) */ putpixel(midx + x, midy + y, WHITE); putpixel(midx - x, midy + y, WHITE); putpixel(midx + x, midy - y, WHITE); putpixel(midx - x, midy - y, WHITE); delay(100); } delay(500); dp = (long)(0.5 + yrad2 * (x + 0.5) * (x + 0.5) + xrad2 * (y - 1) * (y - 1) - xrad2 * yrad2); while (y > 0) { y = y - 1; dpy = dpy - twoxrad2; if (dp > 0) { dp = dp + xrad2 - dpy; } else { x = x + 1; dpx = dpx + twoyrad2; dp = dp + xrad2 - dpy + dpx; } /* plotting points at x-axis(left/right) */ putpixel(midx + x, midy + y, WHITE); putpixel(midx - x, midy + y, WHITE); putpixel(midx + x, midy - y, WHITE); putpixel(midx - x, midy - y, WHITE); delay(100); } getch(); /* deallocate memory allocated for graphic screen */ closegraph(); return 0; }
-
C++ Como executar uma função a cada instante de tempo
Benjamin Breeg respondeu ao tópico de Karen Melo em C/C#/C++
Você pode usar o biblioteca chrono do c++ Fica + ou - assim... #include <chrono> #include <thread> #include <iostream> int quadrado(int x) { return x*x; } int main() { while (true) { std::cout << quadrado(2); std::this_thread::sleep_for(std::chrono::minutes(1)); } } http://www.cplusplus.com/reference/chrono/ -
Outro Criar programas com "interface"
Benjamin Breeg respondeu ao tópico de Augusto Megres em Programação - iniciantes
Para C++ um framework bem interessante é o QT Creator Tem um curso sobre QT no canal do professor bruno: No decorrer do curso ele ensina criar um controle de vendas e estoque completo usando SQL. Se seu intuito é criar aplicações comerciais pode ser um bom ponto de partida. -
C Gerar números aleatórios não repetidos entre si
Benjamin Breeg respondeu ao tópico de Hamushi em C/C#/C++
Para gerar sequencias aleatórias sempre que rodar o programa você pode criar um gerador baseado no tempo do sistema. #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand (time(NULL)); for(int i=0;i<100;i++) printf("Novo valor gerado: %i\n",rand()%200); return 0; } -
Por padrão um valor em ponto flutuante é escrito com um total de seis dígitos usando o formato general(Default) ou seja o número é arredondado para dar a melhor aproximação que possa ser escrita usando apenas seis dígitos. Ex: 1234.567 é escrito como 1234.57 1.2345678 é escrito como 1.23457 Quanto você seta o floatfield em fixed a saída passa a usar notação de ponto fixo, a parte decimal vai assumir de forma restrita o valor do setprecision.
-
C++ Problemas com Sprites no SFML (iniciante)
Benjamin Breeg respondeu ao tópico de Ezert Aracksam em C/C#/C++
Seu programa esta correto apesar de um tanto confuso. Pela imagem é possível ver que ele abre a janela e não da nenhum erro referente ao carregamento da imagem. Se ele não esta abrindo a imagem verifique se o arquivo é valido ou se o SFML foi instalado corretamente. Organizei o código para você dar uma olhada. #include "SFML/Graphics.hpp" #include <iostream> using namespace sf; const int x = 400, y = 400; int main() { RenderWindow w( VideoMode(x, y), "Window"); sf::Texture t; if (!t.loadFromFile("Grr.png")) { std::cout << "Erro! Arquivo nao encontrado" << std::endl; } Sprite s(t); while (w.isOpen()) { Event e; while (w.pollEvent(e)) { switch (e.type) { case Event::Closed: w.close(); break; } } w.clear(); w.draw(s); w.display(); } } -
Acho que no nosso idioma não existe nenhum livro que abrange computação gráfica em C/C++. Se a língua inglesa não for um problema, existem dois livros que são bem renomados sobre o assunto. Computer Graphics: Principles and Practice in C (2nd Edition) e o Computer Graphics: Principles and Practice (3rd Edition) Esse ultimo inclusive em sua primeira edição, segundo um twitter do John Carmack( co-fundador da id software) foi a "bíblia" pra ele no final dos anos 80.
-
C Implementar um programa que execute as seguintes operações com matrizes
Benjamin Breeg respondeu ao tópico de ThiagoOliveira98 em C/C#/C++
Esse assunto é estudado em álgebra linear, aqui tem uma explicação sobre o produto escalar de vetores https://pt.khanacademy.org/math/linear-algebra/vectors-and-spaces/dot-cross-products/v/vector-dot-product-and-vector-length -
C Compila, executa mas nos resultados aparece -1.#R
Benjamin Breeg respondeu ao tópico de Patrick Franco em C/C#/C++
Você uso o tipo errado ali no menu, no c/c++ o operador de igualdade é == e ali quando você mostra o resultado da formula t1 você não precisa usar o operador de endereço &. int main() { float t1,q2,r3,l4; float base,altura,lado,diagma,diagmen; int forma; printf("Selecione a forma geométrica que deseja calcular a area"); printf("\n1 para Triangulo"); printf("\n2 para Quadrado"); printf("\n3 para Retangulo"); printf("\n4 para Losangulo\n"); scanf("%i",&forma); if (forma == 1) { printf("\nDigite o tamanho da base: "); scanf("%f",&base); printf("Valor declarado para base: %2.2f",base); printf("\nDigite o tamanho da altura: "); scanf("%f",&altura); t1 = (base * altura) / 2; printf("%2.2f", t1); } } -
C++ Como usar if e verificar qual a letra que o usuário entrou ?
Benjamin Breeg respondeu ao tópico de Teagou em C/C#/C++
Nesse caso não é necessário, string e bool por ex são tipos nativos do C++. O <string> você só usa quando vai programar orientado a objetos. http://www.cplusplus.com/reference/string/string/ No C++ você pode fazer comparações, atribuições diretamente com os operadores por ex.. em c você teria que usar o string.h if(nota > maiorNota) { maiorNota = nota; strcpy(melhorAluno, nome); } No C++ você não precisa usar cstring. if(maiorNota > nota) { nota = maiorNota; nome = melhorAluno; } C++ da muita liberdade de você programar do jeito que quer mas é interessante aprender como o C++ trabalha se esta programando nele. -
C++ Como usar if e verificar qual a letra que o usuário entrou ?
Benjamin Breeg respondeu ao tópico de Teagou em C/C#/C++
char para string é sintaxe de C, no caso ali você pode usar string Ficaria assim: //C04EX12.CPP #include <iostream> using namespace std; int main(void) { string SEXO; string NOME; cout << "Insira seu nome: "; cin >> NOME; cout << "Insira seu sexo: "; cin >> SEXO; if (SEXO == "M" || SEXO == "m") { cout << "llmo Sr." << NOME; } else if (SEXO == "F" || SEXO == "f") { cout << "llma Sra." << NOME; } else { cout << "Sexo invalido"; } return 0; } -
C++ porque o comando cin.getline(CPF,10); // Não está funcionando no programa
Benjamin Breeg respondeu ao tópico de EIGHT RxXD em C/C#/C++
Se você esta programando em C++, tente fazer as coisas sem usar a sintaxe do C.. #include<iostream> #include<string> using namespace std; int main() { cout << "Digite o os primeiros 9 digitos para calcular os dois ultimos numeros do CPF:\n"; string CPF = "???"; getline(cin,CPF); cout << "CPF: " << CPF << '\n'; } -
C++ Problema no else e como inserir um for (loop de 10 vezes)
Benjamin Breeg respondeu ao tópico de Davi Lobo em C/C#/C++
Cara se tem que indentar seu código, tem vários erros de logica, o for esta vazio, colocou " ; " no if, isso é erro que apesar de ser um código totalmente valido para o C++ o if fica sem função, não importa o teste. Abre os { }, faz os recuos direitinho ou use uma ide, notepad++ pelo menos para facilitar tua vida. int i; for(i=1;i<=10;i++) { printf("%i. Devo indentar meu codigo. \n",i); } -
C++ como fazer a parte da escolha entre v ou c;
Benjamin Breeg respondeu ao tópico de EIGHT RxXD em C/C#/C++
Você pode usar tanto if ou switch if (opcao == 'v') // else if (opcao == 'c') // else cout << "opcao invalida!\n"; ou switch(opcao) { case 'c': // break; case 'v': // break; default: cout << "opcao invalida!\n"; break; } -
C++ como mudar um software de 32bits para 64Bits
Benjamin Breeg respondeu ao tópico de NEI MOTA em C/C#/C++
Isso é verdade mesmo geralmente quem programa usando VCL tipo Delphi (object pascal) ou C++ Builder(c++) raramente usa somente recursos da própria IDE, na maioria das vezes usam componentes ou bibliotecas para estender as capacidades. Saber exatamente o que o programador original usou não é tarefa fácil, somente com experiencia nas tecnológicas envolvidas, muitas vezes programadores experientes pagam os pecados tentando descobrir o que outro fez, imagina uma pessoa totalmente leiga.. Realmente o melhor mesmo é falar pro seu chefe tirar o escorpião do bolso e contratar mão de obra qualificada hehe. -
C++ como mudar um software de 32bits para 64Bits
Benjamin Breeg respondeu ao tópico de NEI MOTA em C/C#/C++
Alias desculpa pesquisando aqui encontrei isso... What is a BPR file? Project file created by Borland C++Builder 6, an older IDE now replaced by Embarcadero C++ Builder; saves the project information for a C++ development project; cannot be converted to the newer C++Builder format without performing the conversion manually. Esse projeto pelo vista usa uma versão do antigo C++ Builder da Borland, segundo o texto o projeto dessa versão não é compatível com o nova versão da Embarcadero, ai vai ser necessário caso você queira usar essa nova IDE fazer a migração manualmente. -
C++ Exercício C++ apresentar o maior e o menor número
Benjamin Breeg respondeu ao tópico de André Luiz Feijó em C/C#/C++
Favor se possível deletar o post. -
Assembly Programação Assembly soma de valores
Benjamin Breeg respondeu ao tópico de Marcospeix em Programação - outros
O que de fato da pra fazer com assembly moderno? Porque praticamente qualquer coisa que você tentar fazer no Windows, relacionado a gráfico, memoria o próprio te da uma msg dizendo "NÃO!". Alguns compiladores deixam você usar assembly junto do C/C++ (inline assembly), acho que é difícil alguém programar puramente em assembly. Fiz esse exemplo no visual studio. #include <iostream> using namespace std; int main() { int a, b, c; cin >> a; cin >> b; _asm { mov eax, a add eax, b mov c, eax }; cout << c << endl; cin.get(); return 0; } -
C É possível uma textbox com conteúdo no allegro 4?
Benjamin Breeg respondeu ao tópico de erique em C/C#/C++
Da pra fazer mas no allegro 4 quase não existe funções nativas pra isso ou aquilo, você mesmo tem que programar suas coisas, a maior vantagem é que vai aprender manipular os gráficos a um nível mais baixo, aprender realmente como funciona as coisas. No SFML que é realmente excelente para colocar um recurso de camera por ex ele tem pronto o que realmente torna as coisas bem atraentes para um iniciante, no allegro tem que fazer na unha. Recomendo que você baixe o source do allegro 4 no https://www.allegro.cc/ e na pasta exemplos existe um arquivo chamado exgui.c, nele tem as funções que você precisa. Compilando rapidamente aqui ele exibe a seguinte tela. -
C++ abrir outro programa sem letra de unidade
Benjamin Breeg respondeu ao tópico de cezarstark em C/C#/C++
Um jeito simples de fazer isso é usar a classe Queue da STL do C++ para passar uma sequencia de strings(os comandos) linha a linha com o nome dos executáveis que você quer rodar com o system. Mais ou menos assim. #include <iostream> #include <queue> #include <string> using namespace std; int main() { queue<string> programas; programas.push( "mkdir testando" ); programas.push( "OutroExeQualquer.exe" ); programas.push( "ping google.com" ); while (!programas.empty()) { string programa = programas.front(); cout << endl << programa << endl; system ( programa.c_str()); programas.pop(); } return 0; } -
o c/c++ não tem essa funcionalidade, para baixar os email você teria que desenvolver suas próprias rotinas, o que iria demandar bastante estudo de protocolos de rede etc etc. Se quer algo pronto pode tentar usar alguma biblioteca para smtp, pop3, procure por "smtp pop3 libraries in c" que você vai encontrar bastante coisa.
-
C Como exibir uma imagem bitmap com opengl?
Benjamin Breeg respondeu ao tópico de HenriSp em C/C#/C++
Mas o código esta abrindo a imagem, a função loadBMP espera que você passe o nome do arquivo como argumento. " loadBMP(argv[1]); " http://linguagemc.com.br/argumentos-em-linha-de-comando/ Ex: meu_programa.exe minha_imagem.bmp -
C Como exibir uma imagem bitmap com opengl?
Benjamin Breeg respondeu ao tópico de HenriSp em C/C#/C++
Seu código esta funcionando corretamente, o windows.h é necessário porque ele que passa a estrutura do arquivo BMP pro render. https://msdn.microsoft.com/pt-br/library/windows/desktop/dd183392(v=vs.85).aspx Não use Glut, ele é muito antigo e desatualizado, seu uso é desencorajado ate pelos desenvolvedores do OpenGL: https://www.khronos.org/opengl/wiki/Related_toolkits_and_APIs Testei com o pacote compilado do site transmissionzero e esta ok. https://www.transmissionzero.co.uk/software/freeglut-devel/ O que pode estar acontecendo ai se você usa CodeBlocks, é que ele não encontra o arquivo.bmp se você tentar executar diretamente pelo build and run, você tem que colocar a imagem no diretório do projeto mais especificamente \nomeprojeto\bin\debug e executar o arquivo a partir dessa pasta.
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
