Ir para conteúdo
Fórum Script Brasil

Maligno

Membros
  • Total de itens

    214
  • Registro em

  • Última visita

Tudo que Maligno postou

  1. Veja o help da função sprintf(), que não vai pegar todos os 11 inteiros. Você terá de usar um loop. O ideal era que essa informação já estivesse nativamente em uma matriz de char. Isso se for C. Se for C++, use a classe String também logo de início. Ela faz tudo ficar muito mais fácil. E note: sempre que tiver de manipular informação, só uso o tipo apropriado. Se é CPF, é char/string. Nunca teria de ser usado inteiro nesse caso. Sei que até facilita o cálculo do DV, mas atrapalha no resto. Ainda assim, inteiro não é o tipo apropriado. Aliás, da forma como falou, imagino que você até esteja armazenando como inteiro. Se for isso, é um grande desperdício.
  2. Maligno

    Função virtual

    Google pra que te quero: http://www.dca.fee.unicamp.br/cursos/POOCPP/node58.html. Aproveite e pesquise mais nesse mesmo site. Vai tirar muitas de suas dúvidas.
  3. Maligno

    Função

    Está faltando ponto-e-vírgula na linha 5. Note: se o compilador diz que tem algo errado na linha X, pode crer: há um erro, se não nessa linha X, um pouco antes dela. Então revise o código dessa linha pra trás.
  4. Maligno

    Estrutura de dados

    Esse fonte, sem a devida indentação, o que dificulta demais a leitura, parece permitir a inserção, modificação e visualização do conteúdo de uma agenda. Não está funcionando?
  5. Maligno

    Função

    Nem li muito. É realmente difícil, além de muito chato, ter que ler código sem indentação. Mas numa leitura (bem) rápida, consegui perceber a falta de vários ponto-e-vírgulas. Provavelmente seu compilador reclamou disse. Siga o que ele diz. :)
  6. Maligno

    Grid com filtro c++

    O componente NextDBGrid tem um visual bacana, é bem configurável e rápido. É o que uso. Há outros componentes, claro. Você teria que pesquisar melhor pelo Google. Mas o preferido parece ser o QuantumGrid da DevExpress. Testei. É cheio de recursos e tem um visual incrível. Mas observei dois detalhes que não gostei: é extremamente parrudo. A instalação consome muita memória, o que tende a inchar o EXE. E segundo, o pior defeito: é lento, se comparado com o Next, e consome muito tempo de CPU. Então preferi ficar, por enquanto, no Next mesmo. É simples, leve, rápido. Aliás, bem melhor que o TDBGrid nativo do Builder.
  7. Objetos COM não costumam ser extremamente rápidos, o que é fácil de entender. Mas lentidão é um conceito relativo. Para ler essas 500 linhas demora quanto tempo? Aliás, qual o tempo apenas de leitura, isolando a parte da escrita no BD? PS: Você programava em XBase?
  8. É como dizem: "a ordem dos tratores não altera o viaduto". :))) Mas trocando os valores de lugar você obteve um resultado diferente. Ponto flutuante é isso aí. Nem zero é zero de verdade. A simples comparação de valores float após um cálculo é uma coisa bizarra. Como saber se o resultado é zero? É necessário verificar se o número é tão pequeno que possa ser considerado zero. Respondendo à sua pergunta: seu compilador C (você não disse qual é) provavelmente deve permitir alterar o método do arredondamento. No C++ Builder eu tenho a função SetRoundMode(). No seu compilador, imagino, deve ter algo do tipo. Ler o "limits.h" não vai ajudar, infelizmente. Como não trabalho com C, não posso ajudar muito. Mas seu professor deveria ser capaz de indicar o caminho pra resolver essa questão.
  9. Meu pensamento lógico me leva a não acreditar que o truncamento seja o comportamento padrão em qualquer linguagem; C ou C++, mesmo em funções simples, como printf(). Explico: C e C++ são linguagens largamente utilizadas em softwares científicos, e o truncamento poderia causar sérias discrepâncias, a ponto de comprometer os resultados. Por isso, deve haver um método mais aprimorado. Nas normas das linguagens C++ (ANSI ISO-IEC 14882/98) e C (ANSI ISO-IEC 98/99) não constam que o procedimento padrão a ser tomado seja o truncamento puro e simples. Pelo contrário. Há uma série de switches que orientam o arredondamento. Normalmente há um header no compilador ("limits.h"), onde são encontrados os símbolos que definem isso. No Delphi (e por conseqüência, C++ Builder) eu sei que é utilizado como padrão o método do banqueiro. Palavras de Nick Hodges, Delphi Development Manager da Embarcadero, quando questionado a respeito num fórum público: "Delphi rounds using "Bankers Rounding"". O truncamento até pode ser uma característica da função printf() de C (e funções congêneres), mas vai da implementação do compilador. Padrão não é Lei; é apenas uma orientação. Mas veja que em outras funções pode até não ser usado o truncamento. Infelizmente, a notação em ponto flutuante (padrão IEEE754) é muito complicada de lidar. Acho que só por isso já não se pode usar o truncamento como padrão.
  10. O resultado não está de acordo com o que o seu professor quer. Mas ele não pode dizer que está errado. O arredondamento foi feito de acordo com um método. Provavelmente é o "arredondamento do banqueiro", que é utilizado em vários compiladores populares (delphi, c++ builder, etc). Aliás, ele deveria ter um mínimo de tolerância a respeito. Afinal de contas, você não está fazendo software para controle de flaps de um avião comercial. Um errinho desses não vai matar ninguém. :) No método mais conhecido das pessoas, que normalmente aprendemos nos tempos do colégio (ensino básico), o valor seria arredondado para cima. Hoje é até intuitivo para nós. Mas no método do banqueiro, o valor será arredondado para cima quando o valor do dígito vizinho à esquerda for par e para baixo quando for ímpar. Esse método existe como forma de levar justiça aos arredondamentos, pois no método tradicional, alguém sempre ganha e alguém sempre perde de forma constante em todos os valores que terminam em 5. No método do banqueiro isso não ocorre. Explique isso ao seu professor. Aliás, ele deveria saber. Mas saiba que existe também a norma ABNT NBR 5891, de 12/77, que traz outro método, mais vinculado e (talvez) utilizado em documentos fiscais. Não é o caso, já que o compilador que você utiliza é estrangeiro. Mas deixo a informação como curiosidade. Um dia pode ser útil. Não sei dizer se será possível mudar o comportamento do compilador quando do arredondamento. Você terá de verificar a documentação dele. Pelo que sei, não é possível mudar o arredondamento pelo printf(). Pesquisando no Google, talvez você encontre algo a respeito.
  11. Maligno

    Função editar

    Fica difícil ajudar sem ver o código que está dando erro.
  12. Maligno

    Comando MakeMessage()

    Tudo sobre MakeMessage aqui: http://tinyurl.com/2cvhurz
  13. Observe que "cont" não está servindo pra nada. Pode removê-lo. Na exemplificação gráfica (acho que fez manualmente - tem uns errinhos) note que você terá tantas colunas quanto linhas. Isso é um padrão fácil de codificar. Basta que você imprima os números em seqüência, o suficiente para igual o número de ordem da linha. Mas considere que i (o número de ordem da linha) comece em 1 e não 0. Isso facilita a conferência e economiza um incremento. Até está tudo meio certo. Você só não pode passar o endereço de j (&j) para printf(), pois essa função espera um valor. Portanto, passe seu conteúdo. E ao final da impressão da linha, deve pular para a próxima. Sem testar, o código seria algo do tipo: int main() { int i,j; for(i=1; i<=9; i++) { for(j=1; j<=i; j++) { printf("%d",j); } printf("\r\n"); } return 0; } Obs 1: a função main(), canonicamente, tem um retorno inteiro. Obs 2: acostume-se a indentar seu código. Facilita a leitura. Obs 3: limitei o número de linhas a 9. Se quiser que continue, terá de aumentar o valor e fazer a "reciclagem" de j, quando este chegar ao máximo.
  14. Peço desculpas se não atendi suas expectativas. Pelo teor da sua pergunta, em sua primeira mensagem, minha sugestão era mais que suficiente. E ainda é. Lembre-se: ninguém entra em fórum para trabalhar de graça pra ninguém. Sacrificamos uma fatia de nosso tempo não apenas para dar consultoria grátis e ajudar um colega a resolver seu problema, mas principalmente para ajudá-lo a nunca mais precisar de ajuda. "Procure no Google" é um mantra preciso. Apesar da aparente rispidez da expressão, é um "conselho de amigo", que muitos aqui parecem preferir ignorar. Afinal, "melhor perguntar e aguardar a resposta" dá menos trabalho. Tenhos mais de 5000 mensagens num fórum de Clipper (Clipper on-Line) e outras 1300 num fórum de C/C++ (DicasBCB). Sou moderador no de Clipper e administrador no de C/C++. Citando apenas dois fóruns. De todas as minhas mensagens, só em meia dúzia eu é quem peço ajuda. Nas demais eu é quem ajudo. E sempre da melhor forma possível. Se fosse perguntar às milhares de pessoas que já ajudei nos meus 20 anos de programação, saberia o que meu apelido significa. Pense antes de falar.
  15. O Google dá toneladas de respostas à sua pergunta, inclusive com inúmeros exemplos de uso. Acostume-se a primeiro pesquisar nele. O MSDN, por exemplo, é o help supremo para o Windows. Você precisa da documentação da função principal do programa, que é a que recebe os argumentos de execução. No caso do Windows, é a WinMain.
  16. Maligno

    ShowMessage Loop?

    Se bem entendi sua pergunta, acho que você mesmo já deu a resposta no título: um loop. Usando uma malha for, por exemplo, você pode invocar a função ShowMessage quantas vezes precisar. Se entendi errado, por favor, explique melhor.
  17. Maligno

    Função e Vetor

    A função int quadrado(int x), como consta no protótipo, deve retornar um valor int, mas você não dá esse retorno. Faltou o comando return. Na função principal você não atribui coisa alguma à vetor. Quando for para exibir, só aparecerá "lixo" da memória. E na exibição, você só fornece um número. Daí vêm os valores absurdos. Corrigindo, ficaria assim: int quadrado(int x) { return x*x; } int main() { int vetor[100],i; for(i=0;i<100;i++) { vetor[i] = quadrado(i); printf("o quadrado de %d e %d\n",i,vetor[i]); } } Em tempo: Evidentemente, vetor não é uma necessidade. É fácil de perceber isso. Ele até poderia ser suprimido e o resultado do cálculo poderia ser apresentado diretamente. Mas o projeto, imagino eu, é uma tarefa de classe. Imagino que o uso de vetor seja uma premissa do trabalho que passaram.
  18. Se você é novato em C, a última coisa que precisa é do código fonte de um gerenciador de LanHouse feito por terceiros. Acredite: pra quem é novato, códigos do tipo mais atrapalham do que ajudam. Além do quê, ninguém em sã consciência faz um programa desses em C. Mais fácil em C++. E olha lá. Será mais fácil encontrar em Delphi, VB ou alguma ferramenta de alto nível. Meu conselho: pegue um bom livro e estude-o com dedicação. Ao mesmo tempo vá garimpando as toneladas de código C e C++ que já existem na net, grátis e facilmente encontráveis. Dica1: Google Source Code. Dica2: se for Windows, encontre e baixe o PDF do livro "Programming Windows 95" de Charles Petzold. Apesar da versão do SO, quase tudo é ainda aplicável. Mas é super-didático (em inglês, claro). Dica3: se é fã de C++ explore duas ferramentas: VS e C++ Builder. Eu escolhi a seguda, que tem uma IDE fantástica.
  19. Maligno

    S.M.A.R.T. em C

    Provavelmente o MSDN deve ter todas essas informações. Lá eu encontrei algo sobre S.M.A.R.T. para recuperar o número de série de fábrica do HD. Faz tanto tempo que não tenho mais o link. Mas tem.
  20. Maligno

    Calcular CRC32

    Já desenvolvi essa função e à época, para teste, usei um programa qualquer que encontrei na net. É simples. Faça isso. Procure pelo Google por um programa confiável.
  21. Faltou um if no último else. Sem ele o compilador pensa que é um comando isolado o bloco seguinte. E se fosse (acredito que não é) um bloco isolado, teria de terminar com um ponto-e-vírgula.
  22. A função do "make" é justamente evitar ter que compilar todos os fontes de novo apenas por conta de uma alteração pequena. Talvez seu script esteja com erro, o que pode fazer o "make" pensar que deve compilar tudo.
  23. Dica: pegue um caractere por vez e, além de recusar as teclas impróprias (ex: espaço, sinais gráficos, etc), também recuse a entrada se o tamanho limite foi atingido. Fica mais fácil. Mas não se esqueça das teclas de edição (BS e Del).
  24. Não reclame. Ninguém tem obrigação de resolver seu problema. Ademais, repare no código. Não tem indentação nenhuma, o que torna a leitura muito mais difícil. Convenhamos: isso desanima qualquer um. E você nem se deu ao trabalho de dizer QUAL é o problema. Quem se dispor a ajudar ainda vai ter que compilar e descobrir O QUE está errado. Fica difícil desse jeito.
  25. Maligno

    função abrevia nome

    Se você não mostrar o código, vai ficar difícil dizer que o está errado nele. Mas veja: isso em C++ já é coisa realmente meio complicada. Em C a dificuldade é maior ainda. Porque em C++ temos uma classe para manipulação de strings. Em C não existe tal recurso. À primeira vista, parece ser necessário apenas cuidar de três aspectos: o espaço, o ponto que já pode existir e as preposições de ligação (de, da, etc), que não são abreviáveis. Claro que deve-se lembrar que há nomes pequenos também não abreviáveis (Sá, Vaz, etc), mas "capitalizáveis". Raciocinando rápido, acredito que em seu lugar eu iria em busca do espaço separador. Encontrando, analisaria a palavra a seguir, que termina com outro espaço ou um ponto. Se com ponto, já está abreviada. Se espaço, e maior que a maior preposição, abrevia-se, mas se não for um nome próprio pequeno. E por aí vai.
×
×
  • Criar Novo...