Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Benjamin Breeg

Membros Plenos
  • Total de itens

    144
  • Registro em

  • Última visita

  • Qualificações

    N/D

Tudo que Benjamin Breeg postou

  1. 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
  2. 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); } }
  3. 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.
  4. 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; }
  5. Jogo Snake

    Tem um vídeo bem interessante de um cara no youtube que fez o Snake usando os recursos da STL do C++. Fiz uma modificação no código para poder rodar no CodeBlocks, inclusive tem uma função bem interessante que cria um buffer de tela pra evitar aquele pisca pisca na tela. Pode ser um bom ponto de partida para entender melhor os aspectos um pouco mais avançados do C++. #include <iostream> #include <list> #include <thread> using namespace std; #ifndef UNICODE #define UNICODE #define UNICODE_WAS_UNDEFINED #endif #include <Windows.h> #ifdef UNICODE_WAS_UNDEFINED #undef UNICODE #endif int nScreenWidth = 120; int nScreenHeight = 30; struct sSnakeSegment { int x; int y; }; int main() { // Create Screen Buffer wchar_t *screen = new wchar_t[nScreenWidth*nScreenHeight]; for (int i = 0; i < nScreenWidth*nScreenHeight; i++) screen[i] = L' '; HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); SetConsoleActiveScreenBuffer(hConsole); DWORD dwBytesWritten = 0; while(1) { // Reset to known state list<sSnakeSegment> snake = { {60,15},{61,15},{62,15},{63,15},{64,15},{65,15},{66,15},{67,15},{68,15},{69,15} }; int nFoodX = 30; int nFoodY = 15; int nScore = 0; int nSnakeDirection = 3; bool bDead = false; bool bKeyLeft = false, bKeyRight = false, bKeyLeftOld = false, bKeyRightOld = false; while (!bDead) { // Frame Timing, compensate for aspect ratio of command line auto t1 = chrono::system_clock::now(); while ((chrono::system_clock::now() - t1) < ((nSnakeDirection % 2 == 1) ? 120ms : 200ms)) { // Get Input, bKeyRight = (0x8000 & GetAsyncKeyState((unsigned char)('\x27'))) != 0; bKeyLeft = (0x8000 & GetAsyncKeyState((unsigned char)('\x25'))) != 0; if (bKeyRight && !bKeyRightOld) { nSnakeDirection++; if (nSnakeDirection == 4) nSnakeDirection = 0; } if (bKeyLeft && !bKeyLeftOld) { nSnakeDirection--; if (nSnakeDirection == -1) nSnakeDirection = 3; } bKeyRightOld = bKeyRight; bKeyLeftOld = bKeyLeft; } // ==== Logic // Update Snake Position, place a new head at the front of the list in // the right direction switch (nSnakeDirection) { case 0: // UP snake.push_front({ snake.front().x, snake.front().y - 1 }); break; case 1: // RIGHT snake.push_front({ snake.front().x + 1, snake.front().y }); break; case 2: // DOWN snake.push_front({ snake.front().x, snake.front().y + 1 }); break; case 3: // LEFT snake.push_front({ snake.front().x - 1, snake.front().y }); break; } // Collision Detect Snake V Food if (snake.front().x == nFoodX && snake.front().y == nFoodY) { nScore++; while (screen[nFoodY * nScreenWidth + nFoodX] != L' ') { nFoodX = rand() % nScreenWidth; nFoodY = (rand() % (nScreenHeight-3))+3; } for (int i = 0; i < 5; i++) snake.push_back({ snake.back().x, snake.back().y }); } // Collision Detect Snake V World if (snake.front().x < 0 || snake.front().x >= nScreenWidth) bDead = true; if (snake.front().y < 3 || snake.front().y >= nScreenHeight) bDead = true; // Collision Detect Snake V Snake for (list<sSnakeSegment>::iterator i = snake.begin(); i != snake.end(); i++) if (i != snake.begin() && i->x == snake.front().x && i->y == snake.front().y) bDead = true; // Chop off Snakes tail :-/ snake.pop_back(); // ==== Presentation // Clear Screen for (int i = 0; i < nScreenWidth*nScreenHeight; i++) screen[i] = L' '; // Draw Stats & Border for (int i = 0; i < nScreenWidth; i++) { screen[i] = L'='; screen[2 * nScreenWidth + i] = L'='; } wsprintf(&screen[nScreenWidth + 5], L"www.OneLoneCoder.com - S N A K E ! ! SCORE: %d", nScore); // Draw Snake Body for (auto s : snake) screen[s.y * nScreenWidth + s.x] = bDead ? L'+' : L'O'; // Draw Snake Head screen[snake.front().y * nScreenWidth + snake.front().x] = bDead ? L'X' : L'@'; // Draw Food screen[nFoodY * nScreenWidth + nFoodX] = L'%'; if (bDead) wsprintf(&screen[15 * nScreenWidth + 40], L" PRESS 'SPACE' TO PLAY AGAIN "); // Display Frame WriteConsoleOutputCharacter(hConsole, screen, nScreenWidth * nScreenHeight, { 0,0 }, &dwBytesWritten); } // Wait for space while ((0x8000 & GetAsyncKeyState((unsigned char)('\x20'))) == 0); } return 0; }
  6. 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'; }
  7. 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); }
  8. 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; }
  9. 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.
  10. 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.
  11. 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; }
  12. 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.
  13. 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; }
  14. 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.
  15. 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
  16. 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.
  17. Se for sistema Windows um jeito simples de fazer isso no C é usar a estrutura SYSTEMTIME presente no windows.h https://msdn.microsoft.com/pt-br/library/windows/desktop/ms724950(v=vs.85).aspx Isso que você quer fazer fica +/- assim: #include <windows.h> #include <stdio.h> int main() { SYSTEMTIME str_t; GetSystemTime(&str_t); int anoAtual = str_t.wYear; printf("%d\n",anoAtual); return 0; }
  18. Acho que para fazer isso de forma mais eficiente ou não, o ideal mesmo seria aprender as funções da WinAPI para controlar diretamente os serviços de impressão do Windows. Tentei fazer algo aqui usando ShellExecute, ate funciona mas ele abre a janelinha de configuração da impressora antes de imprimir, deve ter como tirar isso mas só estudando mesmo a parte da WinAPI que controla a impressão. https://msdn.microsoft.com/en-us/library/ff686799(v=vs.85).aspx #include <windows.h> int main() { LPCTSTR teste = "teste.html"; ShellExecute(NULL, "print", teste, NULL, NULL, SW_SHOWNORMAL); system("PAUSE"); }
  19. Cara aqui eu testei usando Windows 7 e deu certo. Da uma olhada nisso: http://www.ehow.com.br/opções-linha-comando-bloco-notas-lista_7089/ O programinha que usei para teste é esse: #include <iostream> #include <fstream> using namespace std; int main() { ofstream file; file.open("impressao.txt"); file<<"usando a impressora no C++"; file.close(); system("notepad /p impressao.txt"); }
  20. O c++ não tem suporte nativo a impressoras, o que você poderia fazer é usar a função system do C++ para executar um programa que imprima um arquivo de texto via linha de comando por Ex: Notepad. Depois do texto criado pelo c++, imprimir usando o comando system("notepad /p arquivo txt") dentro do próprio programa c++.
  21. Acho que se você quer começar bem no C, o primeiro livro que deveria ler é o clássico: "C Programming Language" vulgo "K&R C" É um livro pequeno de quase 300 paginas escrito pelo criador da linguagem Dennis Ritchie em parceria com o Brian Kernighan, ou seja praticamente tudo que você precisa saber e mais um monte de códigos muito bem explicados. Se procurar você acha uma versão traduzida em algum sebo ou se possuir um nível de inglês básico para leitura pode comprar a 2 edição na internet.
  22. Não sei se entendi direito mas acho que você quer fazer um sistema de inventario para um jogo, isso é um tanto complexo para apenas 2 meses de estudos na linguagem C++, é possível fazer com arrays que é a mais básica das estruturas de dados e depois ainda teria que aprender alguma API gráfica tipo SDL, Allegro, SFML para codificar a parte gráfica do inventario para guardar itens, armas etc etc.
  23. O struct do C++ tecnicamente é parecido com o class, acho que a única diferença são os modificadores de acesso que no struct é sempre publico, o struct do C++ tambem permite que você tenha funções membros dentro da estrutura, no C acho que é aceito apenas os tipos. Veja se isso te ajuda: http://www.cprogressivo.net/2013/03/Como-enviar-uma-struct-para-uma-funcao-em-C.html
  24. Como bem disse o TYSQUARE89 no outro tópico é um jogo que vai exigir varias técnicas de programação e conhecimentos específicos mas veja se isso te ajuda a dar um pontapé inicial. Ele da uma ideia de como os socket funcionam, ai depois de entender bem essa parte, você pode tentar iniciar a programação do jogo propriamente dita, eu recomendaria ler um bom livro de programação C++ para redes. Um bom livro que é bem aclamado é o C++ Network Programming Volume I e II.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×