Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Проверьте код.


Автор: AliasVeter 10.5.2015, 17:44
Задача программы запрашивать и выводить фамилию преподавателя и название курса. Название курса определено заранее.

Код

// task_3.11
// Демонстрация класса GradeBook после отделения 
// его интерфейса от реализации.
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::getline;
using std::endl;
using std::string;

#include "GradeBook.h" // включить определение класса GradeBook 

// функция main начинает исполнение программы
int main()
{
    string nameOfTeacher; // строка для хранения фамилии преподавателя
    // создать объект GradeBook 
    GradeBook myGradeBook( "CS101 Introduction to C++ Programming", "" );
        
    // запросить фамилию преподавателя
    cout << "Please enter teacher name." << endl;
    getline( cin, nameOfTeacher ); // прочитать фамилию с пробелами
    myGradeBook.setTeacherName( nameOfTeacher ); // установить фамилию преподавателя
    cout << endl;
    
    // вывести значение courseName и teacherName 
    myGradeBook.displayMessage();
    
    return 0; // показывает успешное завершение 
} // конец функции main


Код

// GradeBook.h
// Определение класса GradeBook. Файл представляет собой открытый 
// интерфейс GradeBook, не раскрывая реализации элемент-функций
// класса, которые определяются в GradeBook.cpp
#include <string> // класс GradeBook использует стандартные строки
using std::string;

// определение класса GradeBook
class GradeBook
{
public:
    GradeBook( string, string ); // конструктор, инициализирующий courseName
    void setCourseName( string ); // установить courseName
    void setTeacherName( string ); // установить teacherName 
    string getCourseName(); // получает название курса
    string getTeacherName(); // получает фамилию преподавателя
    void displayMessage(); // выводит сообщение приветствие
private:
    string courseName; //название курса для данного GradeBook
    string teacherName; // фамилия преподавателя для данного GradeBook 
}; // конец класса GradeBook 


Код

// GradeBook.cpp
// Определение элемент-функций GradeBook. Файл содержит 
// реализацию функций, прототипы которых объявлены в GradeBook2new.h
#include <iostream>
using std::cout;
using std::endl;

#include "GradeBook.h" // включить определение класса GradeBook 

// конструктор инициализирует courseName заданной строкой
GradeBook::GradeBook( string name, string teacher )
{
    setCourseName( name ); // инициализировать вызовом set-функции
    setTeacherName( teacher ); // инициализировать вызовом set-функции 
} // конец конструктора GradeBook 

// функция для установки названия курса
void GradeBook::setCourseName( string name ) 
{
    courseName = name; // сохранить название курса в объекте
} // конец функции setCourseName 

// функция для установки фамилии преподавателя
void GradeBook::setTeacherName( string teacher ) 
{
    teacherName = teacher; // сохранить название курса в объекте
} // конец функции setTeacherName 

// функция для получения названия курса
string GradeBook::getCourseName()
{
    return courseName; // возвратить courseName объекта 
} // конец функции getCourseName

// функция для получения фамилии преподавателя
string GradeBook::getTeacherName()
{
    return teacherName; // возвратить teacherName объекта 
} // конец функции getTeacherName

// вывести сообщение-приветствие пользователю GradeBook 
void GradeBook::displayMessage()
{
    // вызвать getCourseName для получения courseName
    cout << "Welcome to the grade book for: " << getCourseName()
         << "\nThis course is presented by: " << getTeacherName()
         << "!" << endl;
} // конец функции displayMessage



У меня при исполнении программы процесс намертво встает на этапе ввода фамилии преподавателя.
При этом NetBeans IDE 8.0.2 не реагирует на нажатие Enter. Ошибка в коде или косяк IDE?

Автор: AliasVeter 15.5.2015, 19:39
Смотрю никто не торопится проверять...

Автор: rudolfninja 15.5.2015, 19:52
Цитата(AliasVeter @  10.5.2015,  17:44 Найти цитируемый пост)
при компиляции процесс намертво встает на этапе ввода фамилии

А как вы при компиляции вводите фамилию?
Если ошибка при вводе фамилии, то надо искать в функции main. Судя по коду, у вас там все правильно. Попробуйте в другой IDE.

Автор: AliasVeter 15.5.2015, 21:16
Ввожу английской раскладкой. Спасибо за ответ.

Автор: rudolfninja 16.5.2015, 00:39
Цитата(AliasVeter @  15.5.2015,  21:16 Найти цитируемый пост)
Ввожу английской раскладкой

Тут более интересен процесс, как вы при компиляции программы можете вводить туда данные...не всем дано.
Попробуйте сменить IDE. 

Автор: AliasVeter 16.5.2015, 02:32
А как туда можно вводить данные? getline считывает строку и присваивает ее значение строчной переменной. 
Я допустил неточность. Не при компиляции, а при исполнении программы. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)