Ir ao conteúdo

Posts recomendados

Postado

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

 

 

  • Membro VIP
Postado

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
Postado
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 ????

 

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

Postado

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

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

Postado
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

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