Ir para conteúdo
Fórum Script Brasil

== Douplus ==

Membros
  • Total de itens

    203
  • Registro em

  • Última visita

Tudo que == Douplus == postou

  1. Existem sim, é só você tratar a variável inteira como char desse modo: cout<<char(varint)<<... Desse modo, o comando mostrará o caravtere ASCII referente ao valor armazenado na variável.
  2. == Douplus ==

    Inicio!

    Até onde eu sei, é importante retornar 0 ou 1 para encerrar o programa, pois quando main retorna 0 diz ao sistema operacional que o programa terminou bem, caso retorne 1 diz ao sistema operacional que o programa não terminou bem...
  3. Bom, não é tão complicado se entendi direito. Se você tem int[5] = {1, 3, 5}, masta fazer (1 * 10 + 3) * 10 + 5. Assim: int num[3] = {1, 3, 5}; int numero = 0; int i; for (i = 0; i < 3; i++) numero = (numero * 10 + num[i]); Sendo assim: 0 * 10 = 0; 0 + 1 = 1; 1 * 10 = 10; 10 + 3 = 13; 13 * 10 = 130; 130 + 5 = 135; Aí recebe mais 6 e 7: int num2[2] = {6, 7}; for (; i < 5; i++) numero = (numero * 10 + num2[i-3]); No caso de chars, em algarísmos de 0 à 9 na tablea ASCII está representado pelos valores de 48 (0) à 57(9). Então: char num[3] = {'1', '3', '5'}; int numero = 0; int i; for (i = 0; i < 3; i++) numero = (numero * 10 + (num[i] - 48)); Aí recebe mais 6 e 7: char num2[2] = {'6', '7'}; for (; i < 5; i++) numero = (numero * 10 + (num2[i-3] - 48));
  4. C++ é uma linguagem de programação de alto nível. Com ela você pode programar para diversos Sistemas Operacionais, e ainda oferece Orientação a Objetos, o que permite ao usuário a criar novos tipos de dados. Já o Visual Basic, se não me engano foi criada pela Microsoft, sendo assim, Visual Basic oferece recursos para trabalhar com aplicações para Windows. Como nunca programei em VB, não sei exatamente como ela funciona: se oferece Orientação a Objetos, etc. Existem tutoriais sobre essas linguagens na Internet, recomendo que de uma lida mais na parte introdutória, para ver qual lhe agrada mais para o tipo de programa que pretende desenvolver. Após escolher a linguagem, procure entendê-la mais um pouco para ve se era isso mesmo que pensava e se vale apena prosseguir. Caso decida continuar, recomendo que adquira algum livro, e vai praticando o que aprende com ele. Se você não se interessar por nenhuma das duas linguagens, você pode procurar por outra(porque existem muitas). Acho que escrevi pouco sobre as duas linguagens, pois não conheço VB direito e achei melhor deixar a descrição mais ou menos informando a mesma quantidade de coisas(para não valorizar mais uma delas). Se alguém quiser complementar ou discordar de algo que eu disse, por favor, poste uma resposta.
  5. Consegui!!! Bom, primeiro tem que mudar a condição do if no explode, daí é só incrementar 3 em x ao invéz de 2 quando a condição for verdadeira. Veja como ficou o código fonte: #include <stdio.h> void explode(char origem[], char destino[][6]) { int counter=0; int counter2=0; int x=0; while(x<strlen(origem)){ if(origem[x] == '-' && origem[x+1] == '_' && origem[x+1+1] == '-') { destino[counter2][counter] = '\0'; x=x+3; counter2++; counter=0; } else { destino[counter2][counter] = origem[x]; counter++; x++; } } } int main(void) { char variavel[3][6]; char *teste = "Ola!-_-Teste-_-"; explode(teste,variavel); printf("%s\n",variavel[0]); printf("%s\n",variavel[1]); return 0; }
  6. Putz... Tem um enorme erro no programa... Não consigo resolver... o for em main seria desnecessário se o programa funcionasse corretamente... E sem ele não tem mais "Ola!"... Tentarei arrumar...
  7. Bom... Tem dois erros... O primeiro está na passagem de parâmetros, não sei porque, mas deve especificar a qunatidade de colunas do array multidimensional. O segundo, é que você esqueceu de colocar um '\0' no final de cada string para ser impressa corretamente. Ex.: strs[0] = "Ola!\0" strs[1] = "Teste\0" Com as modifacações, seu código fonte fica: #include <stdio.h> void explode(char origem[], char destino[][2]) { int counter=0; int counter2=0; int x=0; while(x<strlen(origem)){ if(origem[x] != '-' && origem[x+1] != '_' && origem[x+1+1] != '-'){ destino[counter2][counter] = origem[x]; counter++; x++; } else{ x=x+2; destino[counter2][x] = '\0'; counter2++; counter=0; } } } int main(void) { char variavel[2][25]; char teste[] = "Ola!-_-Teste-_-"; int i; for (i = 0; i < 15; i++) variavel[0][i] = teste[i]; explode(teste,variavel); printf("%s",variavel[0]); /* Aki era pra aparecer Olá! na tela, variavel[1] deveria ser Teste e variavel[3] Deveria ser (NULL)... nem imagino aonde está o bug.. */ return 0; } falou!
  8. == Douplus ==

    Wish

    De fato não sei o que calsou o problema, mas bastou reistalá-lo e ele funcionou corretamente. Vlw!
  9. == Douplus ==

    Wish

    Oi, Sou meio iniciante no Linux e baixei o wish, e tentei instalar com o comando: rpm -ivh wish-linux-2.4.20-1.6.7-0.i386.rpm Porém, o Linux que estou usando ainda não reconhece o comando wish. O que devo fazer para conseguir usar o wish?
  10. O que acontece, é que o seu programa termina, não tem nada que faça o programa esperar para o usuário ver o resultado. Por isso acrecentei o std::cin.get(), esta função da biblioteca iostream espera o usuário pressionar enter e retorna uma variável do tipo char que contém ao último caractere digitado pelo usuário; e return 0, que indica para o sistema operacional o término normal do programa. #include <iostream> int main() { int a; //escreve na tela std::cout << "Digite o primeiro numero"; //espera o usuario digitar std::cin >> a; //declara os segundo numero int b; std::cout << "Digite o segundo numero"; //espera o usuario digitar std::cin >> b; int soma; int divi; int mult; int dimi; soma = a + b; divi = a / b; mult = a * b; dimi = a - b; //escreve na tela o resultado da soma std::cout << "Soma =" << soma; std::cout << "Divisão =" << divi; std::cout << "Multiplicação =" << mult; std::cout << "Diferença =" << dimi; std::cin.get(); // Espera o usuário teclar ENTER. return 0; // Iforma o sistema operacional que o programa terminou bem. } Então o programa só termina quando o usuário pressionar ENTER.
  11. Resolver é simples(se for o problema que estou pensando...), basta usar o scanf assim: double var; scanf("%Lf", &var); Não me lembro muito bem o porque, mas se não me engano o %L antes do tipo da variável, o scanf considera como long. Só com o %f o scanf entenderia como se o tipo da variável fosse float, e como double é maior teria que ser um long float.
  12. == Douplus ==

    A 1ª Vez

    Bom... Eu comecei direto pelo C++, no início fiquei meio confuso(talvez porque eu fosse meio pequeno...), mas depois que começa a pensar em algorítmos sua mente vai ficando cada vez mais desanuviada, aí vai desenvolvendo uma lógica de programação. Por ter começado por C++, eu aprendi a programar com os recursos dele e estou cada vez mais usando OO. Então quando vou criar m programa em C puro, tenho um pouco de dificuldade em organizar os dados do programa... Mas acaba saindo tudo certo(na maioria das veses...). Pelo menos foi o que aconteceu comigo...
  13. Sua função não especifica o tipo de retorno e nem o tipo de argumento a ser recebido, nesse caso teria que ser unsigned long int(você não declarou o int). Agora... Um fato curioso que descobri quando fiz um teste com os compiladores DJGPP e Dev-C++. Veja esse programa que fiz: #include <iostream> using std::cout; int main(void) { cout<<" Tamanho \t Valor\n\n"; cout<<"short int \t "<<sizeof(short int)<<'\n'; cout<<" int \t "<<sizeof(int)<<'\n'; cout<<"long int \t "<<sizeof(long int)<<'\n'; cout<<"long long int\t "<<sizeof(long long int)<<'\n'; cout<<" float \t "<<sizeof(float)<<'\n'; cout<<" double \t "<<sizeof(double)<<'\n'; cout<<"long double \t "<<sizeof(long double)<<'\n'; return 0; } Agora vejam a saída após compilado no DJGPP ou Dev-C++(é a mesma): Tamanho Valor short int 2 int 4 long int 4 long long int 8 float 4 double 8 long double 12 Observem que tanto variáveis int como long int ocupam um espaço de memória com o mesmo tamanho. Será que é por convenção que int é equivalente a long int em questão de tamanho de espaço utilizado?
  14. Bom... Darei uma estudada no seu programa... Qualquer coisa é só falar comigo por: char *email = "yenxp@hotmail.com"; char *MSN = email; int ICQ[9] = {1, 5, 0, 9, 7, 8, 9, 2, 3}; Também se quiser uma explicação melhor sobre esses conceitos de momória é só entrar em contato. EDIT: Affe... Desta vez postei junto com o aragorn13...
  15. Bem observado aragorn13! É recomendável usar new ao invés de malloc porque diferente do malloc, new retorna um ponteiro do tipo especificado pelo o usuário, já malloc retorna sempre um ponteiro void*, a não ser que haja um erro na alocação(mas isso não vem ao caso). Tanto, que se compilar o exemplo que postei com o gcc(delorie) ou o Dev-C++, a menos que a extensão do arquivo seja .c, o compilador acusará um erro por conversão inválida de void* para char*. Me parece que C++ não admite isso, pois a extensão .cpp cousou um erro. EDIT: Putz... Postei junto com o Heldinho, era para aparecer depois desse ultimo post do aragorn13, mas acho que deu para entender...
  16. Bom... Tem um jeito de fazer mais ou menos o que você quer... Mas é muito perigoso e pode resultar em uma mensagem pentelha de erro se usar um espaço na memória que é destinada para qualquer coisa que não seja dados do programa(mas teria que ter bastante elementos para isso)... Se você declarar um array como: char *str; Teremos um ponteiro que aponta para um espaço na memória, supondo 0001:0000 , se você incrementa 1 a esse ponteiro ele apontará para o endereço seguinte que no caso seria 0001:0001. Pode-se incrementar quanto quiser... Veja mais ou menos como funciona: ENDEREÇO ------ VALOR 0001:0000 -------- 45 -> posição inicial do ponteiro. 0001:0001 -------- 57 0001:0002 -------- 63 0001:0003 -------- 49 Portanto, ao incrementarmos 1 ao ponteiro(que está apontando para 0001:0000) ele apontaria para o endereço onde tem como valor 57, se incrementássemos mais 2 ele apontaria para 0000:0003 onde tem o valor 49. Todos esses valores podem estar sendo usado por qualquer outro programa ou até mesmo pelo Windows(ou qualquer outro OS). Por isso é muuito perigoso e nem um pouco recomendável fazer isso e muito menos modificar o valor, a menos que saiba muuuito bem o que está fazendo.
  17. Observação: nesse caso, você não contaria quantas linhas tem em um código fonte em C / C++, você contaria quantos comandos existem, pois um comando pode ser escrito em mais de uma linha.
  18. Bom... Demorei um pouco porque tive que resolver um problema, custei a ententer que devia salvar o arquivo com extensão .c. Mas esta aí: #include <stdio.h> #include <stdlib.h> int main(void) { int i; int a; FILE *arq; char *conteudo; arq = fopen("arq.c","r"); for (i = 0; !feof(arq); i++) {} /*Loop vazio... Só para contar os caracteres na variável i .*/ conteudo = malloc(i*sizeof(char)); /*Aloca dinâmicamente a string.*/ free(conteudo); /* Liberta a memória alocada por malloc .*/ return 0; } A função malloc de stdlib.h , recebe um argumento que é o tamanho em bytes do ponteiro(array é um ponteiro) a ser alocado. Então passamos o argumento (i*sizeof(char)), que significa que é para alocar i veses o tamanho em bytes(1 byte = 8 bits) de uma veriável do tipo char, sendo i o número de posições da string.
  19. Não, não seria possível alocar um array de infinito de caracteres, pois o compilador deve reservar um espaço para esse array e não poderia reservar todo o espaço, mesmo porque ele é limitado e outros programas precisam dele. Mas o que pode ser feito é contar o numero de caractéres e alocar dinamicamente o array com malloc. Se quiser um exemplo, é só pedir que eu tentarei faze-lo para você.
  20. Seu raciocínio estava no caminho certo... Mas algo deve ter desviado um pouco sua atenção e fazer com que seu raciocinio desvie um pouco do caminho certo... O programa que você postou aqui, usa uma string para armazenar o conteúdo e você lê os dados do arquivo como se fosse uma string. Veja agora que o modifiquei como ele funciona: #include <stdio.h> void main(void) { int i = 0; FILE *arq; char conteudo[9000]; arq=fopen("arq.c","r"); for (i = 0; !feof(arq); i++) { fscanf(arq,"%c",&conteudo[i]); printf("%c",conteudo[i]); } } Note que um loop foi adicionado para detectar o fim de arquivo com a função feof(FILE *), que retorna um valor true quando o fim de arquivo é encontrado.
  21. Putz... O problema é bem mais complexo... Sempre inclui o <iostream>(sem o .h) e sempre usei using std::cout, o que acontece é que um arquivo de caeçalho ctype_base.h que é chamado pelo iostream(acho) tenta usar constantes que não foram definidas(como ISdigit)... estou no Windows agora, mas quando entrar no Linux eu edito este post e mostro a mensagem de erro.
  22. Creio que não, vas você pode incluir o arquivo de cabeçalho stdlib.h ou cstdlib, e usar a função system("dir") no Windows, ou system("ls") no Linux.
  23. Putz... Então o meu problema é bem diferente... E parece que sou o único indivíduo que o enfrenta(ou tenta...), o que me faz criar a hipótese de que o problema não é nem do compilador e nem da biblioteca padrão... Deve ser incopetência minha...
  24. Estou implementando uma classe data que faz o que você quer... Se tudo der certo(e se você quiser, lógico), amanhã eu posto aqui.
  25. Já brinquei com isso, e achei sites que mostram os algoritmos para trabalhar com datas, ai é só traduzir para C / C++ e pronto. De uma olhada em: http://www.geocities.com/arlindo_correia/160101.html http://www.cefetsp.br/edu/sinergia/4p56c.html http://www.geocities.com/CapeCanaveral/4274/diasjuli.htm Também tem algumas explicações interessantes...
×
×
  • Criar Novo...