Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2014, 22:03   #1
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
Сообщение С++ Модифицировать программу(закрытые переменные)

Здравствуйте! Кому не сложно, помогите пожалуйста модифицировать программу таким образом, чтобы класс содержал закрытые переменные. Код готов. И еще проблема в программе есть когда выводится комплексное число после сложения, вычитания или умножения получается какой-то неверный вид, как исправить?(посмотрите изображение).
Вот само условие, если что:Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел.

Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
 
using namespace std;
 
class Komplecs{
int *a;
public:
 
        Komplecs()
    {
        a= new int[2];
        a[0] = 0;
        a[1] = 0;
    }
 
    ~Komplecs()
    {
     delete []a;
    }
 void Vvod();
 void Slog();
 void Umnog();
 void Vich();
  void Print();
};
void Komplecs::Print()
{
    cout<<a[0] <<"+i*"<<a[1]<<endl;
}
 
void Komplecs::Vvod()
{
cout<<"Введите действительную часть числа";
cout<<endl;
cin>>a[0];
cout<<"Введите мнимую часть числа";cout<<endl;
cin>>a[1];
cout<<endl;cout<<"Число равно  ";
cout<< a[0]<<"+i*"<< a[1];cout<<endl;
}
void Komplecs::Slog()
{int t,d,x,z;
cout<<"Введите действительную часть первого числа";
cout<<endl;
cin>>t;
cout<<"Введите мнимую часть первого числа";cout<<endl;
cin>>d;
cout<<endl;
cout<<"Введите действительную часть второго числа";
cout<<endl;
cin>>x;
cout<<"Введите мнимую часть второго числа";cout<<endl;
cin>>z;
a[0]=(t+x);
a[1]=(d+z);
cout<<"Сумма равна";
cout<<endl;
cout<< a<<"+i*"<< a[1]; cout<<endl;
}
void Komplecs::Umnog()
{
int t,d,x,z;
cout<<"Введите действительную часть первого числа";
cout<<endl;
cin>>t;
cout<<"Введите мнимую часть первого числа";cout<<endl;
cin>>d;
cout<<endl;
cout<<"Введите действительную часть второго числа";
cout<<endl;
cin>>x;
cout<<"Введите мнимую часть второго числа"; cout<<endl;
cin>>z;
a[0]=(t*x-d*z);
a[1]=(t*z+d*x);
cout<<"При умножении число равно";cout<<endl;
cout<< a<<"+i*"<< a[1];cout<<endl;
}
void Komplecs::Vich()
{
int t,d,x,z;
cout<<"Введите действительную часть первого числа";
cout<<endl;
cin>>t;
cout<<"Введите мнимую часть первого числа";cout<<endl;
cin>>d;
cout<<endl;
cout<<"Введите действительную часть второго числа";
cout<<endl;
cin>>x;
cout<<"Введите мнимую часть второго числа";cout<<endl;
cin>>z;
a[0]=(t-x);
a[1]=(d-z);
cout<<"При вычитании число равно";cout<<endl;
cout<< a<<"+i*"<< a[1];cout<<endl;
}
 
 
void main()
{ 
    setlocale (LC_ALL, "Russian");
    Komplecs c;int v;
v=1;
while(v!=0)
{
cout<<endl;
cout<<"1-Ввод числа";cout<<endl;
cout<<"2-Сложение чисел"; cout<<endl;
cout<<"3-Умножение чисел";cout<<endl;
cout<<"4-Вычитание чисел";cout<<endl;
cout<<"0-Выход";cout<<endl;
cin>>v;
if (v==1)
{
c.Vvod();
}
if (v==2)
{
c.Slog();
}
if (v==3)
{
c.Umnog();
}
if (v==4)
{
c.Vich();
}
} }
Изображения
Тип файла: jpg Безымянный.jpg (50.1 Кб, 22 просмотров)
Karl__ вне форума Ответить с цитированием
Старый 23.02.2014, 22:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
чтобы класс содержал закрытые переменные.
Код:
private: int *a;
Цитата:
cout<< a
Поскольку а - указатель, то соответственно и выводится не значение а ее адрес.
Наверное ты хочешь написать:
Код:
cout<< a[0]<<"+i*"<< a[1]; cout<<endl;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2014, 22:24   #3
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

не понял, что? где?
Karl__ вне форума Ответить с цитированием
Старый 23.02.2014, 22:57   #4
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

вот тебе пример использования закрытых элемент данных в main
Код:
#include <iostream>
#include<string>
using namespace std;
class Library
{
	friend int main();
public: 
   void setCourseName( string name )
   {      
      courseName = name;
   }  
   void displayMessage()
   {
      cout << "Welcome to the Library : " << courseName << "!" 
         << endl;
   } 
private:
   string courseName;
};
int main()
{
	Library object;
	cin>>object.courseName;
	object.displayMessage();
	return 0;
}
класс не содержит переменные
класс содержит элементы данных(члены данных) и элемент-функции(функции-члены).

Последний раз редактировалось alekopoko; 23.02.2014 в 23:03.
alekopoko вне форума Ответить с цитированием
Старый 23.02.2014, 23:00   #5
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

хорошо, пример рассмотрел, но а как конкретно в моем случае должно быть?
я не продвинутый в этом всем, до меня не доходит
что у меня должно стать закрытыми переменными?
Karl__ вне форума Ответить с цитированием
Старый 23.02.2014, 23:04   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не понял, что? где?
Переменную *а в своем коде видишь?
Я ее описал как private. Вообще кажись в плюсах private поля по умолчанию, если этой директивы для них не описано, но кажется не каждый препод вкурсе этого (это если я прав).
Ну и по выводу - найди код, который я в пост вставил у себя и сравни как я написал и как он у тебя написан.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2014, 23:09   #7
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

ой, извините, смотрю в книгу, вижу ...
все равно что-то не соображу что где изменять, можно для тугодумов подробно

Последний раз редактировалось Karl__; 23.02.2014 в 23:12.
Karl__ вне форума Ответить с цитированием
Старый 23.02.2014, 23:09   #8
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

у тебя же написан спецификатор доступа public:
а другие спецификаторы доступа не знаешь?) или ты вообще не знаешь что это?)
кусок из моего кода :
Код:
private: // (закрытые элементы данных) - сокрытие данных 
   string courseName;
courseName является элементом-данных этого класса , его можно использовать внутри любых элемент-функций этого класса .
Вне определения класса этим закрытым элементом данных пользоваться нельзя.Исключение - дружественные функции

Последний раз редактировалось alekopoko; 23.02.2014 в 23:13.
alekopoko вне форума Ответить с цитированием
Старый 23.02.2014, 23:13   #9
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

спецификаторы доступа я все знаю, но пока применял только public, не вини не опытного
Karl__ вне форума Ответить с цитированием
Старый 23.02.2014, 23:21   #10
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

Цитата:
спецификаторы доступа я все знаю
если бы ты знал, ты бы написал программу.


ну вот давай с этого угла зайдем.
У тебя же числа,давай и у меня будут
Код:
#include <iostream>
using namespace std;
class Library
{
	friend int main();
public: 
   void setCourseName( int name )
   {      
      chislo = name;
   } 
   int getchislo () 
   {
      return chislo; 
   } 
   void displayMessage()
   {
      cout << "otput chislo : " << getchislo ()  << endl;
   } 
private: 
   int chislo;
};
int main()
{
	Library object;
	cin>>object.chislo;
	object.displayMessage();
	return 0;
}
alekopoko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
модифицировать программу с использованием указателей. Язык Си Семижон Евгения Помощь студентам 3 19.01.2014 20:39
Необходимо модифицировать программу alex_denisov Помощь студентам 1 19.05.2013 11:09
Написал программу, помогите натянуть Шейдеры или как нибудь модифицировать программу WMLite Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2009 13:57