Ir ao conteúdo
  • Cadastre-se

isrnick

Membros Plenos
  • Total de itens

    1.657
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

1.030

3 Seguidores

Informações gerais

  • Cidade e Estado
    Sao Paulo
  • Sexo
    Masculino
  1. O melhor seria: c = malloc(n * sizeof *c); ou c = malloc(n * sizeof(*c)); Ou seja, o tamanho daquilo para o qual o ponteiro c aponta. Em C nunca precisa dar casting no retorno de malloc.
  2. E nesse caso o tipo da variável s deveria ser float ao invés de int. Também precisa fazer com que as constantes tenham ponto para indicar que se é uma divisão entre números com ponto flutuante (do contrário todos os números são inteiros, e será entendido que deseja-se calcular divisão inteira, ao invés de calcular a parte fracionária do resultado). s += (1.0 + i) / (50.0 - i)
  3. Com i indo de 0 a 49. E deve dar algo próximo disso: = 179.4594722548006779355840614412032236905006930223401453126... Calculado pelo WolframAlpha: https://www.wolframalpha.com/input/?i=sum_(i%3D0)^49+(1%2Bi)%2F(50-i)
  4. printf pertence a biblioteca cstdio, então basta adicionar outro include com essa biblioteca no começo do código. #include <iostream> #include <cstdio> #include <windows.h> #include <conio.h> As mensagens de erro estão aí por um motivo, elas normalmente dão uma boa indicação de onde está o problema...
  5. Por que na sua tela todas as partes que estavam comentadas com /* e */ no código do @devair1010 estão sem o asterisco * ? Isso removeu os comentários e introduz comandos e texto no código que não deveriam fazer parte do dele.
  6. Está diferente do código do @devair1010 , tem um #include <filename> e não existe essa biblioteca, deveria ser #include <iostream>. (Ou apenas copie o código do @devair1010 aqui do fórum novamente.)
  7. Se está usando o código que o @devair1010 postou sem alterações, você colocou o código num arquivo com extensão .cpp? (Na imagem que você postou estava com extensão .c, logo com certeza não vai funcionar.)
  8. Não. Aqui só testo online, e como esse código usa window.h só pode ser compilado no Windows, não funciona em compiladores online.
  9. Salve o código em um arquivo com extensão .cpp, ao invés de .c . A IDE, nesse caso Codeblocks, compila o código usando o compilador apropriado para a linguagem dependendo da extensão do arquivo, a extensão .cpp é para código em C++, e a extensão .c é para código em C, o código do @devair1010 está em C++. Mas o código parece não esta usando nenhum recurso do C++ propriamente, foi feito usando recursos do C, então poderia mudar apenas a biblioteca <iostream> pelas biblitecas do C <stdio.h> (e talvez adicionar algum outra como stdlib.h, conforme necessário), e remover a linha do "using namespace std" e o código poderia ser compilado como código C.
  10. Tive a mesma discussão nesse outro tópico, e até postei uns links como referência lá também.
  11. @Lucas.San.tana Em sistemas operacionais atuais (Windows, Linux, iOS) toda a memória que foi alocada para o programa, mesmo a memória alocada dinamicamente, é liberada pelo SO quando o programa é encerrado. Mas um programa feito para um sistema sem um SO robusto, como um sistema embarcado ou algo do tipo, pode não ter essa facilidade e a memória continuaria alocada se o programa não a liberou antes de ser finalizado. Em todo caso é melhor garantir que existe um delete correspondente a new utilizado, mesmo se o programa vai ser encerrado logo em seguida, pois se você criar o habito de fazer isso em qualquer situação vai evitar situações em que esquece de usar o delete causando vazamento de memória (memory leak) durante a execução do programa, fazendo-o usar memória excessiva, e causando problemas. E esse é o tipo de problema que pode ser bem difícil descobrir posteriormente em que lugar ocorre no código.
  12. C++ é uma linguagem de programação OO, então new e delete são os recomendados, pois executam o construtor e destrutor respectivamente da classe do objeto. malloc() e free() pertencem a linguagem C e não tem as mesmas propriedades de new e delete do C++.
  13. Mas existem vários motivos por que malloc pode falhar, mas o mais provável é que não tenha memória livre suficiente. Depende da quantidade de memória que o computador tem, se tem muitos programas abertos, etc. Caso tenha interesse aqui tem mais detalhes sobre motivos de falha do malloc: https://stackoverflow.com/questions/12433947/why-does-malloc-not-work-sometimes
  14. Algumas coisas que seu programa deveria ter, e que poderia indicar onde está o problema seria tratamento de erros, por exemplo o malloc pode falhar e não conseguir alocar memória solicitada, então tem que checar se o malloc teve sucesso ou interromper o programa se falhar, mostrando uma mensagem de texto apropriada (malloc retorna NULL quando falha). Similarmente também precisa checar se teve sucesso toda vez que um arquivo é aberto.
  15. Os scanfs e o printf estão usando o especificador de conversão errado, o especificador %d é para o tipo int, para o tipo float usa-se %f.

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

×