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.

Leonardo Bos

Membros Plenos
  • Total de itens

    342
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

12

Sobre Leonardo Bos

  • Data de Nascimento 02-06-1993 (25 anos)

Informações gerais

  • Cidade e Estado
    Lages SC
  1. o código do switch funciona como um "if" porém ele tem um monte de opções.. você também pode usar um monte de if's, mas é aconselhado usar um switch nesse caso. exemplo para entender melhor: #include <stdio.h> int main() { int num = 20; if (num == 3) { printf("Numero vale 3\n"); } else if (num == 10) { printf("Numero vale 10\n"); } else if (num == 20) { printf("Numero vale 20\n"); } // usando switch fica dessa maneira switch (num) { case 3: // if(num == 3) printf("switch: Numero vale 3\n"); break; case 10: printf("switch: Numero vale 10\n"); break; case 20: printf("switch: Numero vale 20\n"); break; case 30: // também é possível utilizar múlltiplos cases case 50: printf("switch: Numero vale 30 ou 50\n"); default: // else // default é sempre quando nenhum dos cases forem usados printf("Caiu no default\n"); break; } // ================== getchar(); return 0; }
  2. isso mesmo... depois é só usar o switch para diferenciar int x1; int x2; char sinal; // leia o sinal switch(sinal) { case '*': // multiplicar break; case '/': // dividir... break; // ... e assim por diante }
  3. O double não resolve isso? // #include <math.h> double num = pow(10.0, 308); esse é o valor que consegui chegar utilizando-o. 10^308.
  4. Arquivos

    O método de dividir uma string em outras menores usando um caractere separador é o chamado "split"... essa função existe na biblioteca boost, porém é possível implementá-la, esse é um exemplode como fazer a separação: #include <string> #include <vector> #include <iostream> using namespace std; void StringSplit(string str, string delim, vector<string>& results) { int cutAt; while((cutAt = str.find_first_of(delim)) != str.npos) { if(cutAt > 0) { results.push_back(str.substr(0,cutAt)); } str = str.substr(cutAt+1); } if(str.length() > 0) { results.push_back(str); } } int main() { string textFile = "some\nAnother\nOne complete string!"; // text file vector<string> vector; StringSplit(textFile, string("\n"), vector); for (int i = 0; i < vector.size(); i++) { cout << "Linha " << i << ": " << vector.at(i) << std::endl; } getchar(); return 0; } Fonte: http://social.msdn.microsoft.com/Forums/pt/vscmaismaispt/thread/57ab4ab9-485e-4d6b-90f3-2365b95d2919 Pesquinsando e olhando esses códigos você irá conseguir separar, até.
  5. Não ficou muito claro amigo, você quer extrair a letra selecionada na ComboBox e passar para o texto do botão?
  6. é normal... como se comparasse um "int" ou "float": char a = '2'; char b = '5'; char c = '2'; if (a == { printf("first if"); } if (a == c) { printf("second if"); }
  7. http://msdn.microsoft.com/en-us/library/bb384843.aspx Aqui tem o meio mais "fácil" de começar a programar com interfaces.... é preciso conhecimento sobre c/c++, sobre ponteiros e enteder bastante as definições da microsoft sobre HWND, HANDLE, WORD, LPARAM, HPARAM entre outras coisas.
  8. O programador normalmente começou com alguma linguagem já de alto nível, apenas os mais curiosos mecheram com assembly. Eu começei por c++ e vejo em algumas situações o que é mais rápido, mas quando se vai para uma linguagem gerenciada como c# eu perco a noção do que realmente precisa ser feito para a cpu ser mais eficiente. Quando estamos programando algo que será usado mundialmente, não ligamos mesmo se será rápido de tal maneira ou de outra, fazemos para funcionar corretamente e como foi pedido pelo cliente. Mesmo assim há as boas práticas de programação. Usar a cache para algo distante de nós... mas a simples regra "use variáveis locais em vez de globais" nos faz usar a cache de maneira eficiente. Outra opnião que tenho é que não importa o número de instruções, pois o software programaticamente nunca chegerá a ter 1 GB só de instruções.. para mim o que importa agora é como o programa flui de maneira rápida, ele pode ter 200 instruções de máquina e algum método mas desde que essas 200 instruções trabalhem ligadas, não abusem da memória, está ótimo. Outro ponto que eu notei enquanto tentava otimizar: "Em assembly você sempre esmaga seu código original, porque você como ser humano sabe o que tem que ser feito e como deve ser feito, o caompilador sabe apenas a tradução". Seria como um estudante usando o google tradutor para fazer exercícios de inglês.. a tradução sai horrível pois não tem sentido. C# Para assembly não tem sentido algum, o código se reduz a chamadas "call 0x7fffffff" incansáveis, não há aquele velho código de laço no qual você usa o registrador "cl" em conjunto com a instrução "loop 0x34500080". Os compiladores da microsoft por exemplo se baseiam no uso de apenas 1 ou 2 registradores, mas quando otimizados usam e abusam dos outros registradores, especialmente em 64 bits onde temos ainda mais disponíves desde os comuns como RAX< RCX, RBX e RDX até os numerados que não lembro de cabeça os nomes.
  9. Arquivos

    um arquivo de texto contém um único array de bytes... a string que você se refere são as linhas ou palavras?
  10. tenta assim: system("Start http://google.com.br/search?q=palavra"); mas também aconselho a usar ShellExecute como o amigo falou.
  11. Vai gostar disso: #include <iostream> #include <Windows.h> int main() { printf("Digite qualquer coisa: "); char search[256]; scanf("%s", search); std::string s("http://www.google.com.br/search?q="); s.append(search); memset(search, 0, 256); s._Copy_s(search, 256, 256, 0); ShellExecute(NULL, "open", search, "", NULL, SW_SHOWNORMAL); return 0; } Esse código faz uma busca no google
  12. Bom eu não sei escolher entre cliente-servidor e peer-to-peer, mas te indico usar sempre cliente-servidor. A conexão em LAN é feita através de sockets, pesquise isso tanto em C++ quanto em outras linguagens como Java, C# ou Pascal. Também é necessário um conceito sobre rede, tipos de protocolos, endereços, hosts, ip, dns (talvez seja preciso se quiser usar o nome do computador na rede). Ele tem uma ideia simples: Conectar, enviar e/ou receber bytes de endereços (hosts). mas a sua programação sempre vai ser complexa. Por isso não se assuste no começo, esse é um exemplo dos mais simples: #include <stdio.h> #include <WinSock.h> #pragma comment(lib,"Ws2_32.lib") int main() { // necessário em amobs os lados int error = WSAStartup(MAKEWORD(2, 2), &WSAData()); if (error != 0) { printf("Algo deu errado com WSAStartup"); return 1; } // Parte Servidor SOCKET server = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); { // qualquer endereço que tente conectar com esse host na porta 3040 sockaddr_in address; address.sin_family = PF_INET; // família dos endereços address.sin_port = htons(3040); // porta address.sin_addr.s_addr = INADDR_ANY; // endereço error = bind(server, (SOCKADDR*)&address, sizeof(address)); if(error != 0) { wprintf(L"Error: %u", WSAGetLastError()); getchar(); return 1; } } // ======================================================================= // Parte Cliente { SOCKET client = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); sockaddr_in address; address.sin_family = AF_INET; address.sin_port = htons(3040); address.sin_addr.s_addr = inet_addr("127.0.0.1"); error = connect(client, (sockaddr*)&address, sizeof(address)); if(error != 0) { wprintf(L"Error: %u", WSAGetLastError()); getchar(); return 2; } // *** mandar uma mensagem *** char* msg = new char[256]; // buffer to send memset(msg, 0, 256); // clear buffer strcpy(msg, "Player 1\nClass: Sniper\nColor: Red, Position: {34.506, 45.961}\nSeek: 122\nName: Alex\n"); send(client, msg, strlen(msg), 0); } // ======================================================================= // Parte servidor { char buffer[256]; memset(buffer, 0, 256); // clear buffer // recebe dados da placa de rede recv(server, buffer, 256, 0); printf("Some host talk this:\n%s", buffer); getchar(); } // ======================================================================== return 0; } Esse exemplo tem o código misturado para você testar mais facilmente, mas ele deve funcionar separando a parte servidor do cliente em dois programas. O Firewall vai bloquear esse programa, por isso verifique. as funções "send" e "recv" são fundamentais para enviar e receber dados na rede, após entender tudo isso você terá de criar seu próprio protocolo de comunicação do jogo, ali tem um exemplo fictício de um jogador informando sua posição e nome no jogo... O Servidor sempre vai rodar em um laço... sempre use uma única conexão, no exemplo eu não desconectei os sockets (preguiça mesmo), não fique criando conexões e fechandoas ao longo do jogo, uma vez conectado trabalhe apenas com o send e o recv, comunicando com ambos os lados, ao final do jogo desconecte os sockets com a função closesocket(SOCKET s). qualquer dúvida pergunte.
  13. Na verdade era pra estar ok... mas eu cliquei nesse endereço ai e não chegou lá... tenta esse endereço: http://forum.clubedohardware.com.br/site-c-importante/1004940 e a regra das barras é o seguinte: / -> Barra normal, o caractere não interfere na programação \ -> Barra invertida, serve para usar caracteres especias como exemplo: \n \\ -> Barra invertida no contexto de caractere -> '\'
  14. Estude os métodos da string... ela é muito útil em HTML: public class HtmlInfo { public HtmlInfo(string url) { this.Url = url; // já carregamos o cóigo fonte da página por aqui WebClient client = new WebClient(); this.HtmlContent = client.DownloadString(this.Url); } /// <summary> /// Nome do usuário no HTML /// </summary> public string UserName { get { // retona parte da string contida na url // use o método string.IndexOf() para saber a posição dos textos que você quer // vá utilizando string.SubString para filtar o conteúdo e pegar as tags corretas return this.HtmlContent.Substring(this.HtmlContent.IndexOf("<tr id=\"oferta_493770\"><td>"), this.HtmlContent.IndexOf("</td>"); } } private string Url { get; set; } public string HtmlContent { get; set; } } Se você aprender como funciona a classe WebClient, os métodos da string você faz isso dai fácil!
  15. Abra o Visual Studio e depois clique no menu View-> Object Browser Lá selecione o botão "..." ao lado da textbox... selecione a sua dll irá aparecer todas as classes e definições da sua DLL, é só implementar novamente. Se precisa de todo o código digo que vai ser mais difícil, mas tem como; Inciar_> Todos os programas\Microsfot Visual Studio 200x\Microsfot Windows SDK Tools\IL Disamssembly (xPlataforma) Com esse programa você consegue fazer a "engenharia reversa" da sua DLL, vão ser mostrados os códigos em uma linguagem estranha, mas que você pode facilmente decifrar, caso você não tenha passado um ofuscador (programa que embaralha código como o .NET) nela.. Dependendo de como você compilou a DLL fica fácil descobrir o código novamente, se não conseguir procure por Disassemblers de .NET... ATENÇÃO: O uso de programas que fazem engenharia reversa como o IL Disassembly ou derivados pode causar violação aos termos do software adquirido, apenas use se o software for de sua autoria ou obtiver autorização legal para executar tal proceso.

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

×