Ir ao conteúdo
  • Cadastre-se
Joanderson Pereira

C++ RESOLVIDO C++ Deitel >> Exemplo incorreto?

Recommended Posts

@Joanderson Pereira Instalei o seu Editor: Dev-C++ 

E funciona como se espera geralmente!

 

****

 Siga os seguintes passos:

  • Primeiro Crie uma pasta no diretório C:\Dev-C++

image.png.c65bbff726b09f49995d9c2fba64f5c4.png

  • Dentro dessa pasta crie outra pasta com nome do projeto GradeBook

image.png.419d420742a95599709ea7b9889f48f2.png

  • Abra o Editor e Crie um novo projeto,
  • Das opções ofertadas pelo editor escolha image.png.763de12d5a3d170588925bd7ddff93a3.png de o projeto o nome de GradeBook e salve dentro da pasta que criou com mesmo nome GradeBook.
  • A IDE vai criar um arquivo main.cpp por padrão se tudo ocorreu bem até agora, então remova esse arquivo !

image.png.53cb7e65dead22167f99f46db29092bd.png 

  • Agora Cole os 3 arquivos do projeto na pasta, Use o menu suspenso apertando com botão direito do mouse no ícone projeto para importá-los (em outra situação bastaria apenas criar Novo arquivo). 

image.png.3e709d67f0df4288e1e8cae252808373.png

Selecione os 3 de um vez segurando Shift e clicando em Cima do nomes ou pegue um por um. Se quiser pode criar novo arquivos e salvar os conteúdos (importa é só um questão de praticidade). Agora vamos configuras as 2 outras pastas do projeto: Objetos, Executaveis.

Com Botão direito do mouse acesse a opção de edição image.png.f0c60edfe278a5c30bba05d093f8a5e8.png usando o ícone projeto

O diretório do projeto terá a seguinte estruturas:

C:\Dev-C++\GradeBook

                            \Builds

                            \Executaveis

                            \Objetos

image.png.202d64d76f3172b568a012b689692355.png  

Nas configurações do projeto seleciona a aba: opções de criação e defina os diretórios na ordem dos campos 

 

Diretório de Saída para Executáveis: Executaveis

Diretório de Saída para Objetos: Objetos

Compiler log autosave: Builds

image.png.b8f9f278f76dec519a24fdc9985292f8.png

Confirme .

 

Ainda nas opções de projeto coloque NO para todas as opções na aba Linker

image.png.8ba247be8446707169ecf9dd04c31cea.png

 

 

 

Pronto, ao que parece a IDE não cria seus diretórios sozinha, você tem que indicá-los.

Enfim foi esse o problema, o sistema automático também não sabia onde encontrar os arquivos.

image.thumb.png.73569ee4be67be6d607ec1dbfa9c1e68.png

 

 

Dúvidas, perguntas ou sugestões?

adicionado 25 minutos depois
2 horas atrás, vangodp disse:

só uma pergunta... Ainda tem gente usando Dev C++?

Não sei, mas já que instalei vou testá-lo.

adicionado 34 minutos depois

Os arquivos usados foram esses:

GradeBook.hpp 

//<<Disponível no Fórum Clube do Hardware : Joanderson Pereira>>
// Figura 3.15: GradeBook.hpp 

#ifndef GRADEBOOK_H 
#define GRADEBOOK_H 1

// Definição da classe GradeBook apresenta a interface public da
// classe. Definições de função-membro aparecem em GradeBook.cpp.
#include <string> // a classe GradeBook utiliza a classe de string padrão C++
#include <iostream>
using namespace std;

// definição da classe GradeBook
class GradeBook
{
public:
    GradeBook (string);          // construtor que inicializa courseName
    string getCourseName ();     // função que obtém o nome do curso
    void setCourseName (string); // função que configura o nome do curso
    void displayMessage ();      // função que exibe uma mensagem de boas-vindas
private:
    string courseName;  // nome do curso para esse GradeBook
};  // fim da classe GradeBook

#endif  // DEFINE GRADEBOOK_H

 

GradeBook.cpp

//<<Disponível no Fórum Clube do Hardware : Joanderson Pereira>>
// Figura 3.16: GradeBook.cpp

// Implementações das definições da função-membro de GradeBook.
// A função setCourseName realiza a validação.
#include "GradeBook.hpp"  // inclui a definição da classe GradeBook

// o construtor inicializa courseName com a string fornecida como argumento
GradeBook ::GradeBook (string name){
    setCourseName (name); // chama a função set para inicializar courseName
} // fim do construtor Gradebook
   
// função para configurar o nome do curso
// assegura que o nome do curso tenha no máximo 25 caracteres
void GradeBook ::setCourseName (string name){
     if (name.length() <= 25) // se o nome tiver 25 ou menos caracteres
            courseName = name; // armazena o nome do curso no objeto
       
     if (name.length() > 25){ // se o nome tiver mais que 25 caracteres
        //configura courseName como os primeiros 25 caracteres do parâmetro name
            courseName = name.substr(0, 25); // inicia em 0, comprimento de 25
      
            cout << "Name\"" << name <<"\" exceeds maximum length (25).\n"
            << "Limiting courseName to first 25 characters.\n" << endl;
     } // fim do if
} // fim da função setCourseName
   
// função para obter o nome do curso
string GradeBook ::getCourseName (){
       return courseName; // retorna courseName do objeto
} // fim da função getCourseName
   
// exibe uma mensagem de boas-vindas para o usuário Gradebook
void GradeBook ::displayMessage (){
       // chama getCourseName para obter o courseName
       cout << "Welcome to the grade book for\n" << getCourseName()
       << "!" << endl;
} // fim da função displayMessage

 

fig03_17.cpp

//<<Disponível no Fórum Clube do Hardware : Joanderson Pereira>>
// Figura 3.17: fig03_17.cpp

// Cria e manipula um objeto GradeBook; ilustra a validação
#include "GradeBook.hpp" // inclui a definição GradeBook

// a função  main inicia a execução do programa
int main (void){
       // cria dois objetos GradeBook;
       // nome inicial de curso gradeBook1 é muito longo
       GradeBook gradeBook1 ("CS101 Introduction to Programming in C++");
       GradeBook gradeBook2 ("CS102 Data structures in C++");
             
       // exibe valor inicial de courseName para cada gradeBook
        cout << "gradeBook1 created for course: "
           << gradeBook1.getCourseName ()
           << "\ngradeBook2 created for course: "
           << gradeBook2.getCourseName () 
           << endl;
          
       // modifica courseName do myGradeBook (com uma string de comprimento válido)
       gradeBook1.setCourseName ("CS101 C++ Programming");
       
       //exibe courseName de cada GradeBook
       cout << "\ngradeBook1's course name is: "
          << gradeBook1.getCourseName ()
          << "\ngradeBook2's course name is: "
          << gradeBook2.getCourseName () 
          << endl;
        return 0;  // indica terminação bem-sucedida
} // fim de main

 

  • Obrigado 1
  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema todo era não saber usar o Dev C++, antes eu usava o Gdb online, mas justamente por não saber como implementar arquivos no site (Hoje eu sei) que eu baixei o Dev C++. Segui o seu "tutorial" de como criar projetos no Dev C++ e tudo funcionou nos conformes.

 

No fim o exemplo do livro "C++ Como Programar - 5ª edição -" da Deitel não está incorreto, a estratégia de ensino utilizada é mostrar um código bruto e posteriormente o otimizar.

 

prove c++.png

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então valeu! 

Até a próxima.

  • Obrigado 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joanderson Pereira

3 horas atrás, Joanderson Pereira disse:

No fim o exemplo do livro "C++ Como Programar - 5ª edição -" da Deitel não está incorreto

Como eu já havia dito:

Em 11/07/2018 às 19:53, giu_d disse:

obs: Não estou, de forma alguma, dizendo q a abordagem q o autor fez no livro mencionado está errada! Apenas estou passando o código da forma como aprendi.

 

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

×