Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
marcoctis

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

Recommended Posts

Postado (editado)

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;
} 

 

 

Editado por Simon Viegas
Inserir tag CODE; Ajuste de título

Compartilhar este post


Link para o post
Compartilhar em outros sites

além do fonte, envie para o professor a biblioteca que falta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@T1000_2015 Bom Dia, então não sei qual biblioteca falta, ele só mencionou que essa biblioteca # include <stream> esta dando erro  .

Compartilhar este post


Link para o post
Compartilhar em outros sites

então ja mandei, mas não está funcionando no compilador dele .

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

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...

Editado por Simon Viegas
  • Curtir 1

Compartilhar este post


Link para o post
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 ????

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, marcoctis disse:

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

 

 

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

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre:

2 horas atrás, marcoctis disse:

# include<stream>

 

O erro é na biblioteca stream mesmo ou na iostream?

Compartilhar este post


Link para o post
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 .

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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 .

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi vou refazer aqui 

 

Obrigado !!

 

 

  • 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






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

×