Ir ao conteúdo
  • Cadastre-se
João pedro Strazzeri

C++ converter C++ para C

Posts recomendados

Olá, gostaria de saber se existe algum programa que faça a transformação de C++ para C, ou alguém poderia me ajudar a transformar esse código:

/* Solução 1 */
#include <bits/stdc++.h>
using namespace std;
 
int verificaDescolado(long long X)
{
    if (X == 1) return 0;
    int primo = 1;
    for (long long i = 2; i <= sqrt(X); i++)
    {
        if (X % (i*i) == 0)
            return 0;
        if (X % i == 0)
            primo = 0;
    }
    return !primo;
}
 
int main()
{
    long long N;
    cin >> N;
   
    int ans = 0;
    for (long long i = 1; i <= sqrt(N); i++)
    {
        if (N % i == 0)
        {
            ans += verificaDescolado(i);
            if (i != N/i) ans += verificaDescolado(N/i);
        }
    }
    cout << ans << endl;
}
 


Agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

@João pedro Strazzeri Ola João, Basicamente C e C++ são a mesma linguagem com exceção de que  o C++ é orientado objeto e o C não, o código acima esta parecendo um método de um código orientado a objeto. Você só teria rescrever o código de foram procedural. Já tentou rodar esse código no compilador?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o long long int em C se não me engano so foi adicionado na versão C99. Dependendo da versão do seu compilador basta você retirar o cabeçalhos específicos do C++

 

Mais ou menos isso...

 

#include <stdio.h>

int verificaDescolado(long long X)
{
    if (X == 1) return 0;
    int primo = 1;
    for (long long i = 2; i <= sqrt(X); i++)
    {
        if (X % (i*i) == 0)
            return 0;
        if (X % i == 0)
            primo = 0;
    }
    return !primo;
}

int main()
{
    long long N;
    scanf("%lld", &N);

    int ans = 0;
    for (long long i = 1; i <= sqrt(N); i++)
    {
        if (N % i == 0)
        {
            ans += verificaDescolado(i);
            if (i != N/i) ans += verificaDescolado(N/i);
        }
    }
    printf("%d", ans);
}

Agora programa automático que converte o código de um para outro desconheço, geralmente quando se precisa programar em C partindo do C++ vai ter que lidar com uma serie de limitações do C.

 

Compilador usado:

gcc (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0

 

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, João pedro Strazzeri disse:

Olá, gostaria de saber se existe algum programa que faça a transformação de C++ para C

 

Não, não tem.

 

 

1 hora atrás, ederlap disse:

Ola João, Basicamente C e C++ são a mesma linguagem com exceção de que  o C++ é orientado objeto e o C não, o código acima esta parecendo um método de um código orientado a objeto.

 

C e C++ definitivamente NÃO são a mesma linguagem!


Sim, o C++ originou a partir da linguagem C, e por isso é possível usar muitas das funções e recursos do C no C++, entretanto o C++ se baseou na versão C89 (de 1989) da linguagem C, mas desde então cada uma dessas linguagens seguiu seu próprio caminho. O que implica que novas versões da linguagem C adicionaram recursos que não existem no C++, logo não é possível dizer que C++ é C com mais recursos.

 

Isso é um engano que causa muitos problemas. Aqui no fórum vemos frequentemente códigos usando bibliotecas padrão do C no C++, sendo que existem bibliotecas próprias do C++ para a mesma função, ou então códigos em que, exceto pela inclusão de uma ou duas biblioteca do C++, foram escritos totalmente em C.

 

Mas o problema surge lá na frente quando o programador finalmente tentar usar algum recurso do C que não existe no C++, e vai ficar quebrando a cabeça tentando entender o que está errado.

 

Pelo menos no caso do C problemas podem ser evitados facilmente salvando o código em um arquivo com a extensão .c (e não .cpp), pois assim a IDE vai saber que o código é em C e deve ser compilado usando o compilador da linguagem C, logo não vai aceitar código usando recursos do C++.

 

Já no lado oposto é mais complicado pois muitos dos recursos do C fazem parte do C++, então é necessário saber o que está usando e porque, mas em geral não se deve usar funções do C no C++, pois o C++ possui versões próprias e melhores para fazer a mesma coisa.

 

Se você está usando algum curso/material de estudo que diz que C e C++ são a mesma coisa, e ensina os 2 como uma coisa só, procure outro curso/material de estudo!

Por exemplo, um livro de introdução ao C++ não deve usar printf ou scanf, mas sim cout e cin! Nesse caso printf e scanf podem ser mencionados como opções extras e pouco usadas herdadas do C.

 

 

1 hora atrás, ederlap disse:

Você só teria rescrever o código de foram procedural.

 

Este código postado é procedural, não há nada de orientação a objetos.

 

adicionado 2 minutos depois

 

24 minutos atrás, Benjamin Breeg disse:

scanf("%ll", N);

 

Faltou um d no "%lld" e um & antes do N.

 

scanf("%lld", &N);

 

  • Curtir 4

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, ederlap disse:

Ola João, Basicamente C e C++ são a mesma linguagem com exceção de que  o C++ é orientado objeto e o C não, o código acima esta parecendo um método de um código orientado a objeto. Você só teria rescrever o código de foram procedural. Já tentou rodar esse código no compilador?

 

Nem perto disso. O fato de você pode em geral portar código C para C++ em mutos casos com facilidade termina aí. C++ é uma linguagem "enorme" com um mundo de construções sem paralelo em C. A bem da verdade você pode olhar trechos de programa em java ou até javascript e achar que é C++ também, ou C#, mas dura alguns minutos só :) 

 

Essa é uma coisa que você vai ler ainda em muitos lugares, como eu vou, mas não é verdade.

 

De volta ao tópico, seu programa roda em C exceto pelas funções de biblioteca como cin e cout que na verdade não são assim parte da linguagem, seja C ou C++. Por exemplo, cin e cout estão na biblioteca iostream do C++ por exemplo, e scanf na biblioteca stdio.h do C. sqrt() está em math.h nos dois casos

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!