Ir para conteúdo
Fórum Script Brasil

webpantoja

Membros
  • Total de itens

    55
  • Registro em

  • Última visita

Tudo que webpantoja postou

  1. Só completando, mesmo uma função void pode ser interrompida. void func() { return; //Isto aqui breca a função }
  2. webpantoja

    Comparando CPF

    Como assim não dá para usar o strcmp?? :blink: String nada mais é do que uma cadeia de caracteres. O problema é que o strcmp trabalha com variáveis constantes... tente usar então o c_str() da string que retorna uma cadeia de caracteres constantes... tipo assim: std::string cpf1("123.456.789-00"); std::string cpf2("111.111.111-11"); if( strcmp( cpf1.c_str(), cpf2.c_str() != 0 ) { std::cout << "CPF inválido!!!" << std::endl; } Dá uma olhada nisso aí e vê se dá certo. Att, WebPantoja
  3. Quntelab, Bom se bem entendi acho que é isso que você procura: char c[6] = "TESTE"; std::stringstream ss; ss << std::hex << std::setfill('0'); for( int i = 0; i < 6; i++ ) { ss << std::setw(2) << (short) (unsigned char) c[i]; }; std::cout << ss.str(); Espero ter ajudado, WebPantoja
  4. Gutenbergs, Coloca o código aí para ver como está. Na gravação no arquivo, você poderia usar a função fwrite, ficaria melhor: fwrite (frase , 1 , sizeof(frase) , fp );
  5. Gutenbergs, Eu acho que faltou você abrir chaves aí no seu while... FILE * fpFile; int c; int count = 0; pFile=fopen ("myfile.txt","r"); if (pFile==NULL) perror ("Error opening file"); else { do { c = getc (pFile); printf("%c",c); count++; } while (c != EOF); } Faz uma identação que fica melhor de visualizar. Sempre que for trabalhar com arquivo fazer uma verificação para ver se ele realmente abriu antes de trabalhar com ele... para evitar possíveis falhas de segmentação. Espero ter ajudado. WebPantoja
  6. webpantoja

    Calcular CRC32

    Bem... acho que não é todo mundo que está familiarizado com o CRC32... ele serve para verificar se não ouve alterações na transmissão de dados, através de cálculos polinomiais. Vou postar aí o CRC32 que eu implementei aí: unsigned int reflect( unsigned int ref, char ch ) { int i; unsigned int value = 0; //Swap bit 0 for bit 7 //Bit 1 for bit 6, etc. for( i=1; 1<(ch + 1); i++ ) { if( ref & 1) { value |= 1<< (ch -i); } ref >>= 1; } return value; } void initCRC32Table( void ) { unsigned int ulPolynomial = 0x04c11db7; int i, j; for( i=0; i <= 0xFF; i++ ) { m_crc32RefTable[i] = reflect( i, 8 ) << 24; for( j=0; j<8; j++ ) { m_crc32RefTable[ i ] = (m_crc32RefTable[i] << 1 ) ^ (m_crc32RefTable[i] & 0x80000000 ? ulPolynomial : 0 ); } m_crc32RefTable[i] = reflect( m_crc32RefTable[i], 32 ); } } unsigned int calcCrc32( unsigned int preset, char* buf, int nbytes ) { unsigned int result; int i; result = preset; result ^= 0xffffffff; for( i=0; i < nbytes; i++ ) { result = (result >> 8) ^ m_crc32RefTable[(result & 0xff) ^ buf[i] ]; } result ^= 0xffffffff; return result; } int getCRC32( const char* fileName ) { long size = 0; int handle = open( fileName, O_RDONLY ); if( handle > 0 ) { size = handle; if( size <= 1 ) { //Error return 0; } if( close(handle) != 0 ) { //Error return 0; } } FILE* fp; int sz; unsigned int crc32 = 0xffffffff; if( (fp = fopen( fileName, "rb" ) ) == NULL ) { return 0; } else { bool feof = false; char buffer[80]; bool firstPacket = true; while( feof == false ) { sz = fread( buffer, 1, sizeof(buffer), fp ); if( firstPacket == true ) { crc32 = calcCrc32( crc32, &buffer[0x20], sz-0x20 ); } else { crc32 = calcCrc32( crc32, buffer, sz ); } firstPacket = false; if( sz != sizeof(buffer) ) { feof = true; } } } fclose( fp ); return( crc32 ); } Então se alguém já usou o CRC32 queria que desse uma olhada para ver se está OK. Att, WebPantoja
  7. webpantoja

    Calcular CRC32

    Ae galera minha primeira dúvid ano fórum! :lol: Estou fazendo um programa que preciso calcular o CRC32 de um arquivo binário. Bom, o cálculo para obter este CRC32 é extremamente complicado, mas já implementei. Mas estou com dúvida se realmente o resultado que estou obtendo é o resutlado válido. Gostaria que se alguém tivesse um arquivo de exemplo para me passar e o resultado experado seria de muita ajuda. Att, WebPantoja
  8. Hum... Tenta executar sem passar o 'C:'... só o nome da pasta junto com o nome do arquivo para ver se dar certo... PS: Estou tentando ajudar meio que no escuro, pois eu não estou em máquina windows no momento (Thank God!!!) :lol:
  9. Lanhellas, A Sintaxe está correta, então se está compilando acho que o problema é algo externo ao programa. Verifique se o caminho está correto, se o arquivo realmente existe... Pode usar este comando aqui para testar se o caminho está correto. Ele printa o que tiver no path... faz ele aí e vê se o arquivo .txt seu aparece na tela. system( "dir c:\\VNC\\" );
  10. Head, Faltou só a condição do IF... não existe else sem if. for( int i=0; i<n; i++ ) { for( int j=0; j<m; j++ ) { if(i==0 || i==tamanho_principal-1 || j==0 || j==tamanho_secundario-1) { printf("o"); } else { printf (" ") } printf("\n"); } } while (i<n) { j=0; while (j<m) { if(i==0 || i==tamanho_principal-1 || j==0 || j==tamanho_secundario-1) { printf("o"); }else { printf (" "); } j++; } i++; // Deixa para incrementar i no final printf ("\n"); }
  11. ReiLeao, Você não pode adicionar o registro inteiro não? acho que seria mais fácil... tipo assim struct cadastro { char nome[50], endereco[50]; }; int cadastrar() { struct cadastro cad; FILE * arq; arq = fopen("registro.txt","w+"); printf("\nDigite o nome: "); gets(cad.nome); printf("Digite o endereco: "); gets(cad.endereco); fwrite(&cad,sizeof(struct cadastro),1,arq); // Salva no arquivo fclose (arq); } int ler() { int retorno; struct cadastro cad; FILE * arq; if ((arq = fopen("registro.txt","r")) == NULL) { printf(" \n Registro não existe !"); getch(); } retorno = fread(&cad,sizeof(struct cadastro),1,arq); // Le do arquivo while ( retorno == 1) { printf("\n Nome: %s",cad.nome); printf("\n Endereco: %s",cad.endereco); retorno = fread(&cad,sizeof(struct cadastro),1,arq); } fclose (arq); } Bom... é uma idéia... espero ter ajudado. Att, WebPantoja
  12. webpantoja

    compilador markdown

    joka, O programa está completo? Seria bom você dar um exemplo de dados de entrada, aí fica melhor para visualizar o problema.
  13. Headbanger, Que bom que você conseguiu evoluir aí nos programas. Agora, eu juro que não consegui entender a sua última pergunta... tenta expor de forma mais condensada qual sua dúvida. Att, WebPantoja
  14. webpantoja

    WebPantoja

    Opa, olha só meus modos, já estou enviando mensagens há algum tempo aqui e ainda nem me apresentei.. :P Eu sou formado em Ciências da Computação e pós-graduado em Engenharia de Software. Trabalho em Brasília como Analista de Sistemas, em uma empresa de tecnologia de rastreamento via celular/satélite, no qual desenvolvo dispositivos de comunicação nas linguagens C/C++, ambiente linux. Nosso sistema principal é desenvolvido em C++, no qua ltenho mais experiência que C. Conheci este site a pouco tempo e, entre uma compilada e outra aqui no serviço, gostaria de ajudar os iniciantes ou qualquer outro que tenham dúvida nestas linguagens. Também gostaria de conhecer mais gente da área. Quem quiser pode ficar a vontade para me mandar mensagem. :D Att, WebPantoja
  15. Headbanger, Antes de começar a fazer um laço de repetição, inicialize as variáveis, assim: int horaDezena = 0, horaUnidade = 0, minutoDezena = 0, minutoUnidade = 0, segundoDezena = 0, segundoUnidade = 0; Depois quando estiver em um laço de repetição você tem que incrementar a variável, ou seja, fazer com que ela some +1 no valor dela, ficando de 0 -> 1, 1 -> 2, até que chegue na condição de parada... assim while( horaDezena <= 2 ) { while( horaUnidade <= 3 ) { while( minutoDezena <=5 ) { while (minutoUnidade <=9) { while (segundoDezena <=5) { while (segundoUnidade <=9) { printf ("%d horaDezena, %d horaUnidade, %d minutoDezena, %d minutoUnidade, %d segundoDezena, %d segundoUnidade\n"); segundoUnidade++; //soma +1 no valor da variável } segundoDezena++; //soma +1 no valor da variável } minutoUnidade++; //soma +1 no valor da variável } minutoDezena++; //soma +1 no valor da variável } horaUnidade++; //soma +1 no valor da variável } horaDezena++; //soma +1 no valor da variável } Também é importante fazer uma boa identação (dar espaços sempre que for um novo bloco dentro de um bloco). Fica melhor a leitura do código. Tenta aí, deve dar mais alguns erros mas vê se funciona. Qualquer outra dúvida posta aí. Att, WebPantoja
  16. gutenbergs, Argc e argv servem para, respectivamente, contar e armazenar os argumentos passados na hora de execução do programa. Exemplo: executar um programa chamado teste com 4 agurmentos programa carro 1 7 int main( int argc, char ** argv ) { std::cout << "Argumento 0: " << argv[0] << std::endl; // Argumento 0 sempre vai ser o nome do programa std::cout << "Argumento 1: " << argv[1] << std::endl; // Vai printar 'carro' std::cout << "Argumento 2: " << argv[2] << std::endl; // Vai printar '1' std::cout << "Argumento 3: " << argv[3] << std::endl; // Vai printar '7' std::cout << "Quantidade de argumentos: " << argc << std::endl; // Vai printar 4 } É mais ou menos isso ae. Espero ter ajudado. Att, WebPantoja
  17. War_lord, Olhando as questões dos exercícios, me pareceu que ele não está querendo que implemente o programa em si, mas somente seja feito um algoritmo em português estruturado (tipo um portugol da vida)... então o que você tem que fazer é só fazer a lógica em si, não precisa entender de linguagem de programação. Exemplo: //1) Reajuste de salário (listsa 2) Algoritmo "Salario" Variavel // Declara variáveis salario, reajuste: inteiro; Inicio Escreva("Digite o Salario"); // Escreva serve para printar na tela Leia(salario); // Leia pega variáveis digitadas pelo usuário Se salario < 500 faça reajuste <- salário*1,15; fim se; Se slario >= 500 e salario <= 100 faça reajuste <- salario *1,10; fim se; Se salario > 1000 faça reajuste <- salario*1,05; fim se; Escreva("O salario com reajuste é"); Escreva(reajuste); Fim Pelo menos foi o que entendi lendo os enunciados. Acho que se fizer por ai não vai ter problemas. Att, WebPantoja
  18. douglaspr, Você usa o comando system para executar comandos do sistema operacional. Os comandos as serem executados também dependem de qual S.O. você está trabalhando. system( "ls" ); //linux system( "dir" ); //windows Espero ter ajudado. Att, WebPantoja
  19. Cara, Você tem que entender primeiro o conceito dos 2. For e While são praticamente as mesmas coisas, são repetidores mudando somente a condição de parada. se fizer int x; for( x=0; x< 5; x++ ) { printf("%d", x); // Aqui enquanto a condição for x menor que 5 vai imprimindo, vai imprimir, 0,1,2,3,4... quando chegar no 5 para } x = 0; while( x < 5 ) { printf("%d", x); // Aqui enquanto a condição estiver x menor que 5 vai imprimindo, vai imprimir, 0,1,2,3,4... quando chegar no 5 para x++; } Então não importa usar while ou for, fazer de um jeito ou de outro não vai alterar nada a lógica. O que vai mudar o resultado final é os if's que você vai colocar, tipo nesse exemplo aí de baixo você já sabe que deve fazer um if para não imprimir linha 2 nem linha 4. Tenta fazer aí e posta as dificuldades.
  20. Cara hoje eu não fui trabalhar hoje e não estou ao certo. Mas tenho quase certeza que uso o g++ 4.4.2, no RedHat 5.2 O que é estranho que coloquei exatamente como você colocou aí e funcionou... Se não for a versão não sei o que poderá ser... :unsure:
  21. xSocietySlavesKilleRx (caraca que nick grande), Cara eu sou novo aqui no site, mas posso passar uma estrutura básica. Seria mais ou menos assim #ifndef _TESTE_H_ //define macro da classe #define _TESTE_H_ /* Logo abaixo da macro você pode fazer outros includes que o programa irá utilizar */ namespace test // caso você não queira usar o std { class Teste // Caso ela seja filha de outra classe, basta fazer Class Filha: public class Mae { public: /* Aqui você implementa funções e variávels públicas */ private: /* Aqui você implementa funções e variávels privadas */ }; #endif //End macro } Acho que esse aí é o basico. Você salva o arquivo com o nome da classe.h e coloca no include do seu arquivo main e manda brase. Qualquer problema pode postar aí, Att WebPantoja
  22. vlandeismilsoun, Se você fizer as casas decimais e unidades separadas acho que fica mais fácil, apesar que vai ter um monte de while ou for. Mas é isso aí, vai quebrando a cabeça que esse aí é chatinho de fazer mesmo. Com relação ao program dos 'o's eu coloquei seu programa aqui e rodou legal. Quando for digitar digita '2 3'... sem o x para ver o que vai dar. Att, WebPantoja
  23. RenanPoswar, Cara se você vai trabalhar realmente com C++ a melhor opção é usar objetos mesmo, muito melhor. Mexa com struct não. Você pode definir uma classe Pesquisa e outra Pessoa, e criar duas classes que derivam da Pessoa, Eleitor e Candidato. Quando for salvar os dados da Pesquisa aí você faz os métodos que lê os dados e insere e outra para pegar do arquivo e interpetrar. Realmente vai ser um programa muito complicado com muitas regrinhas, mas da para fazer bem orientado à objeto, vai ficar legal. Faça um diagrama de classes aí para ver o relacionamento entre as classes que fica melhor definir o que você vai precisar fazer. Qualquer dúvida posta aí. Att, WebPantoja
  24. marcosaferreira, Cara eu coloquei aqui seu programa e funcionou sem nenhum problema. Pode ser a versão do seu g++... vê se não está desatualizada. Att, WebPantoja
  25. Warkold, Agora que você postou tudo melhorou! Além das observações do mvrocha, faltou você declarar também os metodos construtores e destrutores da Classe Banco, já que ele vai ser um objeto. Testa aí e vê se funciona. Att, WebPantoja
×
×
  • Criar Novo...