Ir ao conteúdo
  • Cadastre-se

C++ Compilar código C++ em C não funciona


marcoctis

Posts recomendados

Bom Dia, estou com uma dificuldade em relação ao meu programa, pois no ambiente em que eu estou usando que no caso e Dev c++ está funcionando perfeitamente porém ao enviar o trabalho para o professor. ele disse que está tendo um erro de compilação em relação ao # include<stream>, todavia se ao tirar essa bblioteca acaba tando erro em outras partes do programa .

 

Gostaria de uma ajuda para adaptar o programa para a linguagem c , pois o compilador que  professor usa e o Borland .

 

Grato .

# include <iostream>
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
using namespace std;

int main()
{
    //Criacao das variaveis
    int qtdNomes;
    int i, j;
    
    /*
        Área que o usuário entra com os dados
        endl: comando que pula linha
        cout <<: exibe texto na tela
        cin >> armazena o dado informado pelo teclado em uma variavel específica
    */
    cout << "Entre com a quantidade de nomes que deverao ser exibidos(entre 5 e 10):" << endl;
    cin >> qtdNomes;
    
    cout << "\n\n";
    
    //criação dos vetores necessários, o tamanho do vetor de nomes é baseado na quantidade desejada digitada pelo usuário logo acima
    char vetorNomes[qtdNomes][100], copia[100];
    
    //laço de repeticao para armazenamento dos nomes no vetor, de acordo com a quantidade digitada pelo usuário
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Informe o " << i + 1 << "o nome: ";
        cin.getline(vetorNomes, sizeof(vetorNomes[0]));
    }
    
    //algoritmo de ordenação em ordem alfabética 
    for(i = 0; i < (qtdNomes - 1); i++)
    {
        for(j = i + 1; j < qtdNomes; j++)
        {
            if(strcmp(vetorNomes, vetorNomes[j]) > 0) 
            {
                strcpy(copia, vetorNomes);
                strcpy(vetorNomes, vetorNomes[j]);
                strcpy(vetorNomes[j], copia);
            }
        }
    }
    
    cout << "\n";
    cout << "###############################\n";
    cout << "##### EXIBICAO DOS NOMES ######\n";
    cout << "###############################\n\n";
    
    /*
        laço de repetição para "Varrer" o vetor para apresentar os nomes digitados
        strlen: função que retorna a quantidade de letras de uma string
    */
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Nome: " << vetorNomes << " - " << strlen(vetorNomes) << " letras" << "\n";
    }
    
    return 0;
} 

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

O programa é em C ou em C++? tem que decidir. Se for em C, salve o arquivo com ".c". Provavelmente seu código está com .cpp.

 

Pronto! Ai compile e vá ajustando o código.

 

 

UPDATE

Se for em C++, não pode (não deveria) utilizar as bibliotecas do C, ou seja, nenhuma dessas com ".h". Teria que substituir pelas bibliotecas do C++...

 

 

 

Em fim...

 

Se o código é em C++ mesmo, pode ser que lá onde estão testando, estão colocando o arquivo com ".c", ai o compilador compila com "C puro"... os comandos apenas do C++ de fato não funcionam no C. Ai, um dos erros é no iostream, pois o C não o conhece.

 

 

No aguardo.

adicionado 26 minutos depois

PS:

Pelo que eu vi, em C++, poderia utilizar essas bibliotecas.

#include <iostream> //ESSA É DO C++
//#include <stdio.h>  //ESSA BIBLIOTECA É DO C (E NÃO ESTÁ SENDO UTILIZADA)
//#include <stdlib.h> //ESSA BIBLIOTECA É DO C (E NÃO ESTÁ SENDO UTILIZADA)
//#include <string.h> //ESSA BIBLIOTECA É DO C
#include <cstring> //ESSA É DO C++  ("substutui" a string.h)

 

 

Se for em C.

Tem que tirar o #include <iostream> e o using namespace std;, assim como os outros ajustes, como por exemplo substituir o cout e cin por outros comandos do C...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

30 minutos atrás, Simon Viegas disse:

O programa é em C ou em C++? tem que decidir. Se for em C, salve o arquivo com ".c". Provavelmente seu código está com .cpp.

 

Pronto! Ai compile e vá ajustando o código.

 

 

UPDATE

Se for em C++, não pode (não deveria) utilizar as bibliotecas do C, ou seja, nenhuma dessas com ".h". Teria que substituir pelas bibliotecas do C++...

 

 

 

Em fim...

 

Se o código é em C++ mesmo, pode ser que lá onde estão testando, estão colocando o arquivo com ".c", ai o compilador compila com "C puro"... os comandos apenas do C++ de fato não funcionam no C. Ai, um dos erros é no iostream, pois o C não o conhece.

 

 

No aguardo.

adicionado 26 minutos depois

PS:

Pelo que eu vi, em C++, poderia utilizar essas bibliotecas.


#include <iostream> //ESSA É DO C++
//#include <stdio.h>  //ESSA BIBLIOTECA É DO C (E NÃO ESTÁ SENDO UTILIZADA)
//#include <stdlib.h> //ESSA BIBLIOTECA É DO C (E NÃO ESTÁ SENDO UTILIZADA)
//#include <string.h> //ESSA BIBLIOTECA É DO C
#include <cstring> //ESSA É DO C++  ("substutui" a string.h)

 

 

Se for em C.

Tem que tirar o #include <iostream> e o using namespace std;, assim como os outros ajustes, como por exemplo substituir o cout e cin por outros comandos do C...

como ficaria a troca do cout e cin ????

 

Link para o comentário
Compartilhar em outros sites

9 minutos atrás, Simon Viegas disse:

Sobre:

 

O erro é na biblioteca stream mesmo ou na iostream?

o erro e na biblioteca iostream !!

adicionado 0 minutos depois
11 minutos atrás, Simon Viegas disse:

O código é em C ou em C++? é preciso ter certeza sobre isso!

Primeiro identifique o problema, para só depois tentar achar uma solução...

o codigo e em c++ !!!

adicionado 2 minutos depois
11 minutos atrás, isrnick disse:

 

Se o programa fosse em C, não C++, precisaria substituir cout e cin pelas funções printf() e scanf() respectivamente.

troquei , não esta dando erro porém quando o programa pedi para colocar a quantidade de mones , depois o programa não continua .

Link para o comentário
Compartilhar em outros sites

@marcoctis Se o código é em C++ não precisa trocar cout e cin.

 

Apenas use as bibliotecas dos C++ no seu programa.

 

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    //Criacao das variaveis
    int qtdNomes;
    int i, j;
    
    /*
        Área que o usuário entra com os dados
        endl: comando que pula linha
        cout <<: exibe texto na tela
        cin >> armazena o dado informado pelo teclado em uma variavel específica
    */
    cout << "Entre com a quantidade de nomes que deverao ser exibidos(entre 5 e 10):" << endl;
    cin >> qtdNomes;
    
    cout << "\n\n";
    
    //criação dos vetores necessários, o tamanho do vetor de nomes é baseado na quantidade desejada digitada pelo usuário logo acima
    char vetorNomes[qtdNomes][100], copia[100];
    
    //laço de repeticao para armazenamento dos nomes no vetor, de acordo com a quantidade digitada pelo usuário
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Informe o " << i + 1 << "o nome: ";
        cin.getline(vetorNomes, sizeof(vetorNomes[0]));
    }
    
    //algoritmo de ordenação em ordem alfabética 
    for(i = 0; i < (qtdNomes - 1); i++)
    {
        for(j = i + 1; j < qtdNomes; j++)
        {
            if(strcmp(vetorNomes, vetorNomes[j]) > 0) 
            {
                strcpy(copia, vetorNomes);
                strcpy(vetorNomes, vetorNomes[j]);
                strcpy(vetorNomes[j], copia);
            }
        }
    }
    
    cout << "\n";
    cout << "###############################\n";
    cout << "##### EXIBICAO DOS NOMES ######\n";
    cout << "###############################\n\n";
    
    /*
        laço de repetição para "Varrer" o vetor para apresentar os nomes digitados
        strlen: função que retorna a quantidade de letras de uma string
    */
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Nome: " << vetorNomes << " - " << strlen(vetorNomes) << " letras" << "\n";
    }
    
    return 0;
} 

 

 

Mas a nossa dúvida sobre se é C ou C++ surgiu porque segundo o que você disse seu professor falou que teve problema para compilar pois deu erro na biblioteca iostream, mas essa biblioteca é padrão do C++ e nunca deveria dar erro apenas incluindo ela num programa C++. Só daria erro se ele tentasse compilar o programa como se fosse um programa em C, pois não existe a biblioteca iostream na linguagem C.

Link para o comentário
Compartilhar em outros sites

9 minutos atrás, isrnick disse:

@marcoctis Se o código é em C++ não precisa trocar cout e cin.

 

Apenas use as bibliotecas dos C++ no seu programa.

 


#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    //Criacao das variaveis
    int qtdNomes;
    int i, j;
    
    /*
        Área que o usuário entra com os dados
        endl: comando que pula linha
        cout <<: exibe texto na tela
        cin >> armazena o dado informado pelo teclado em uma variavel específica
    */
    cout << "Entre com a quantidade de nomes que deverao ser exibidos(entre 5 e 10):" << endl;
    cin >> qtdNomes;
    
    cout << "\n\n";
    
    //criação dos vetores necessários, o tamanho do vetor de nomes é baseado na quantidade desejada digitada pelo usuário logo acima
    char vetorNomes[qtdNomes][100], copia[100];
    
    //laço de repeticao para armazenamento dos nomes no vetor, de acordo com a quantidade digitada pelo usuário
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Informe o " << i + 1 << "o nome: ";
        cin.getline(vetorNomes, sizeof(vetorNomes[0]));
    }
    
    //algoritmo de ordenação em ordem alfabética 
    for(i = 0; i < (qtdNomes - 1); i++)
    {
        for(j = i + 1; j < qtdNomes; j++)
        {
            if(strcmp(vetorNomes, vetorNomes[j]) > 0) 
            {
                strcpy(copia, vetorNomes);
                strcpy(vetorNomes, vetorNomes[j]);
                strcpy(vetorNomes[j], copia);
            }
        }
    }
    
    cout << "\n";
    cout << "###############################\n";
    cout << "##### EXIBICAO DOS NOMES ######\n";
    cout << "###############################\n\n";
    
    /*
        laço de repetição para "Varrer" o vetor para apresentar os nomes digitados
        strlen: função que retorna a quantidade de letras de uma string
    */
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Nome: " << vetorNomes << " - " << strlen(vetorNomes) << " letras" << "\n";
    }
    
    return 0;
} 

 

 

Mas a nossa dúvida sobre se é C ou C++ surgiu porque segundo o que você disse seu professor falou que teve problema para compilar pois deu erro na biblioteca iostream, mas essa biblioteca é padrão do C++ e nunca deveria dar erro apenas incluindo ela num programa C++. Só daria erro se ele tentasse compilar o programa como se fosse um programa em C, pois não existe a biblioteca iostream na linguagem C.

então e isso ele esta compilando em c mesmo, e usando o Borland .

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, marcoctis disse:

então e isso ele esta compilando em c mesmo, e usando o Borland .

 

Usar o Borland não faz diferença pois as linguagens C e C++ são padronizadas, então todos os compiladores tem que ter as mesmas bibliotecas e funções definidas no padrão, logo códigos usando apenas essas bibliotecas padrão devem funcionar em qualquer compilador sem fazer qualquer alteração.

 

Mas note que por questões históricas compiladores das 2 linguagens sempre vem juntos no mesmo programa, então o Borland tem compilador tanto para a linguagem C como para a linguagem C++, mas é preciso usar código de cada linguagem com o seu respectivo compilador. Ou seja, não funciona tentar compilar um código escrito em C++ no compilador da linguagem C.

 

De uma forma geral coloca-se código em C em arquivos com extensão .c, e códigos em C++ em arquivos com extensão .cpp, e a IDE usa a extensão do arquivo para saber qual o compilador correto a ser usado.

 

Então o problema é que você fez um programa em C++, mas seu professor quer um programa em C.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!