Ir para conteúdo
Fórum Script Brasil

D@vid

Membros
  • Total de itens

    24
  • Registro em

  • Última visita

Sobre D@vid

Perfil

  • Gender
    Male

D@vid's Achievements

0

Reputação

  1. você não alocou memoria para o ponteiro... portanto não pode usar a função strcat para fazer isto é simples, troque char* espacos = ""; por char* espacos = new char[numespacos]; memset(espacos, 0, numespacos); //é necessario "zerar" a memoria que você aloca não se esqueça de deletar a memoria alocada depois de usa-la sobre alocação de memoria http://www.cplusplus.com/doc/tutorial/dynamic/ espero ter ajudado :)
  2. D@vid

    Classes C++

    não aconselho fazer isso... mas o unico jeito de fazer o que você quer é usar funções estaticas http://msdn.microsoft.com/en-us/library/yy...w(v=vs.80).aspx
  3. D@vid

    Duvidas sobre vetores

    *Sempre use int main(); *o ++ já imcrementa a variavel... então não é necessario "variavel=variavel++;, usa-se apenas variavel++" *voce não precisa comparar o vetor com 0, é mais facil usar "!", ficaria "!frase" em vez de "frase!=0". *isso é C e não C++ ( mas agora você não vai ver muita diferença entre os 2 ) para contar o nº de espaços basta adicionar o seginte codigo apos o if que conta as vogais: else if(frase[i]==' ') numespacobr++; mas se quiser dar um passo a frente e usar estruturas mais complexas, um jeito mais "simplificado" de fazer isso seria com um for e switch(da uma procurada nu google de como se usam eles)... seu codigo ficaria assim: #include<stdio.h> #include<conio.h> char frase[80]; int numletras=0; int numvogal=0; int numconsoantes=0; int numespacobr=0 int main() { printf("Entre com uma frase de ateh 80 caracteres:\n"); gets(frase); int i; for(i=0; frase[i]; i++){ numletras++; switch(frase[i]) { case 'a': numvogal++; break; case 'e': numvogal++; break; case 'i': numvogal++; break; case 'o': numvogal++; break; case 'u': numvogal++; break; case ' ': numespacobr++; break; default: numconsoantes=numconsoantes++; } } printf("A frase tem %d, letras.",numletras); printf("A frase tem %d vogais.",numvogal); printf("A frase tem %d consoantes.",numconsoantes); getch(); } pode até parecer um pouco complexo agora... mas é essencial você aprender a usar esses tipos de estruturas pois ce continuar programando com certeza vai precisar delas e de outras... espero ter ajudado ;)
  4. D@vid

    Funções Winsock

    Funções com o sufixo "Ex" geralmente são um pouco mais lentas pois processam mais parametros. Nesse caso as funções como a "AcceptEx()" usam a dll Mswsock.dll diferente da "WSAAccept()" ou "accept" que usam a Ws2_32.dll, Na minha opinião é melhor usar as funções "normais" como a "accept", "bind()", "send()", etc; pois alem de ser um tipo mais basico de socket, não são funções especificas da Microsoft como as outras, ou seja, são compativeis com Linux.
  5. D@vid

    (Resolvido) ajuda em codigo

    Use as tags , É que o código de uma letra não é nem 1 ou 2, semdo assim ele volta pro começo do "do{..." e o scanf não pega apenas um numero ou uma letra... ele pega o buffer do teclado, justamente por isso que ele não é usado em aplicações "reais", o que esta acontecendo provavelmente é que o scanf esta pegando algo mais q já esta no buffer do teclado... o que você pode fazer para resolver isso, apesar de ser uma gambiarra é usar "fflush(stdin)" antes do scanf. clrscl() é só pra Unix/Linux, em windows pode-se usar "system("cls")" ou construir uma função especifica para isso, mas ai já requere ter um conhececimento mais avançado de c e windows.
  6. Isso é VisualC.net não c++, sub-forum errado ^^ mas você deve estar tentando desenvolver uma aplicação em c++ mesmo, se for este o caso você pode usar o WinSock, nesse link tem um tipo de tutorial do WinSock http://msdn.microsoft.com/en-us/library/ms738545(VS.85).aspx Espero ter ajudado.
  7. D@vid

    scanf sem enter

    use a getch() da conio.h *você pode ter problemas se usar essa função no windows vista e tentar pegar as teclas correspodentes as setas do teclado;
  8. Achar algum livro de C bom em português é meio bastante dificil, (eu ate tenho alguns pdf's só que tudo em ingles :wacko: ) Caso não domine o inglês sugiro você aprender,pois a area de TI exige muito ingles, tem muitas documentações/artigos que estão todos em inglês. + da uma fuçada na net que você encontra alguns tutoriais em português, mesmo aqui no forum, da uma olhada lá da seção de tutoriais & dicas.
  9. D@vid

    Imprimindo em cores

    Na verdade arquivos não podem ter fontes coloridas, tanto que se você abrir uma planilha do execel no bloco de notas não verá cor alguma, o que acontece é que alguns tipos arquivos tem formatações que permitem identificar a cor da fonte, tamanho, imagens no texto, etc para serem mostrados no programa. Um dos metodos que existem para fazer isso é usar os arquivos RTF (Rich Text Format ou Formato de Texto Rico em português), este por sua vez é um formato proprietário da Microsoft, o que facilita a sua implementação se você estiver usando windows. Para usar o RTF você primeiramente tem que escrever o arquivo, você pode faze-lo usando a classe descrita nesse artigo: http://www.codeproject.com/KB/string/RTFBuilder.aspx Depois de ter o arquivo escrito, para mostra-lo em seu programa, uma das maneiras de fazer isso seria usando uma janela com a classe "RichTextBox" http://msdn.microsoft.com/en-us/library/aa261653(VS.60).aspx se você estiver usando programas em cosole e quiser uma implementação mais simples, você pode usar a função: #include <windows.h> //(...) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0); //Coloque no lugar do 0 a cor que você quiser Você pode encontrar no link abaixo a lista das cores que você pode usar para esta função http://msdn.microsoft.com/en-us/library/ms...cter_attributes *Esse metodo não grava nenhum tipo de informação referente a cor em arquivos, ele apenas modifica a saida do seu programa, para que você possa ter fontes coloridas na tela. Espero ter ajudado ;)
  10. isso é uma função, você coloca no espaco global e usa onde quiser no codigo. *pra usar ela você passa como argumento a array com os nº's e ela retorna um inteiro com o menor valor. *caso não saiba como implementar uma função é melhor ler um livro de C.
  11. Seria +- isso que você quer? int ProcuraMenorValor(int *array) { int menorValor=array[0]; int i; for(i=0; array[i]; i++){ if(array[i]<menorValor) menorValor=array[0]; } return menorValor; }
  12. Você esta usando a mesma variavel para os loop's (no caso o "i"), assim vai dar erro mesmo, declare variaveis diferentes para cada um dos for's.
  13. Tem alguns errinhos sim, como o i++ apos o while da segunda função, aconselho apenas o nº 0 ao invez de '\o', pos você esta confundindo '\o' com '', o "destino[c] = '\o';" na segunda função logo apos a copia do charactere ( porque anular o que você acabou de copiar?) tem + alguns erros tambem, se quiser um exemplo completo sobre como implementar essas duas funções olhe esse tópico: http://scriptbrasil.com.br/forum/index.php?showtopic=154523 Foi perguntado por funções exatamente iguais a essas que você tentou fazer.
  14. Esse erro não tem nada a ver com o código, mas sim com a configuração do mingw(compilador usado pelo Dev-Cpp), vá em Feramentas, Opções Do compilador e depois na aba Diretórios, você deve configurar as pastas onde estão os respectivos arquivos usados pelo mingw, como no seu caso é um .exe que esta faltando, vá em binarios e adicione a pasta onde se encontram os arquivos executaveis do compilador, o "cc1.exe" fica por padrão na pasta "C:\Dev-Cpp\libexec\gcc\mingw32\3.4.2", então adicione essa pasta. *O local onde fica o "cc1.exe" pode variar dependendo de onde você instalou o dev-cpp *Caso não funcione tente reinstalar o dev-cpp
  15. alguns compiladores não suportam usar uma referencia para ponteiro diretamente (no caso o &*). Se você não sabe o que é passar um ponteiro por referencia leia o artigo a seguir: (EM INGLES) http://www.codeguru.com/cpp/cpp/cpp_mfc/po...ticle.php/c4089 fiz uma pequena modificação na função para funcionar com o seu compilador. void PadLeft(char charPrencher, char **charDestino, const char *charOrigem, int total) { int strSize=strlen(charOrigem)+total+1; *charDestino=(char*)malloc(strSize); char *tmp=*charDestino; memset(*charDestino, 0, strSize); int i; for(i=0; i<total; i++){ tmp[i]=charPrencher; } strcat(tmp, charOrigem); *charDestino=tmp; } agora a referencia para o ponteiro deverá ser passada ao chamar a função. (o segundo parametro deverá ser precedido de '&' "). exemplo: char *dest; const char *origem="Test"; PadLeft('0', &dest, origem, 5); //Repare que "dest" é passado por referencia MessageBox(0, dest, 0, 0); free(dest); //Não se esqueça de desalocar a memoria *Se não funcionar agora sugiro trocar de compilador ¬¬ ;)
×
×
  • Criar Novo...