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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2012, 20:47   #1
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию Первое знакомство с классами

В общем попытался написать бесполезную программу через классы которая считает сумму х,у

подскажите пожалуйста в чём мои ошибки. Вот сам код

Код:
#include <stdio.h>
#include <conio.h>

class myFirstClass
{
  private:
    double calc(double x, double y);      
  public:
    void vvod();
    void vivod();
    void vivodRes();
    double x, y, temp;
    myFirstClass();
};

void myFirstClass::vvod()
{
   printf("x = ");
   scanf("%lf", &x);
   printf("y = ");
   scanf("%lf", &y);
};

void myFirstClass::vivod()
{
   printf("x = %lf", x);
   printf("y = %lf", y);
};

myFirstClass::myFirstClass()
{};

void myFirstClass::calc(double x, double y)
{
  double temp;
  temp = x + y;
};

void myFirstClass::vivodRes()
{
   printf("Summa = %lf", temp);
};

int main()
{
  myFirstClass m;
  m.vvod();
  m.vivod();
  m.calc();
  getch();
  return 0;
};
Андрей! вне форума Ответить с цитированием
Старый 02.03.2012, 20:47   #2
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию

Ибо сам пока что не могу исправить ошибки
Андрей! вне форума Ответить с цитированием
Старый 02.03.2012, 20:49   #3
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию

одну нашел(вроде)
double myFirstClass::calc(double x, double y)

по ошибке написал void
Андрей! вне форума Ответить с цитированием
Старый 02.03.2012, 20:51   #4
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию

Теперь придерается только к строчке
m.calc();
есть два варианта как писать
1. m.calc();
2. m.calc(double x, double y);

правда и в том и в том случае ошибка. вот что пишет компилятор при втором варианте

49 D:\123\Íîâàÿ ïàïêà\test func.cpp expected primary-expression before "double"
Андрей! вне форума Ответить с цитированием
Старый 02.03.2012, 20:53   #5
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>

class myFirstClass
{
  private:
    double calc(double x, double y);      
  public:
    void vvod();
    void vivod();
    void vivodRes();
    double x, y, temp;
    myFirstClass();
};

void myFirstClass::vvod()
{
   printf("x = ");
   scanf("%lf", &x);
   printf("y = ");
   scanf("%lf", &y);
};

void myFirstClass::vivod()
{
   printf("x = %lf", x);
   printf("y = %lf", y);
};

myFirstClass::myFirstClass()
{};

double myFirstClass::calc(double x, double y)
{
  double temp;
  temp = x + y;
};

void myFirstClass::vivodRes()
{
   printf("Summa = %lf", temp);
};

int main()
{
  myFirstClass m;
  m.vvod();
  m.vivod();
  m.calc();
  m.vivodRes();
  getch();
  return 0;
};
Конечная версия которую надо подправить
Андрей! вне форума Ответить с цитированием
Старый 02.03.2012, 21:08   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Код:
double myFirstClass::calc(double x, double y)
{
  double temp;
  temp = x + y;
};
Что значит выделенная double? Возвращаемый тип. Тип вы указали. А что вы возвращаете? Ничего.
Далее. Для чего вы объявляете новую temp в этой функции, если она уже объявлена в классе?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 02.03.2012, 21:17   #7
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Код:
double myFirstClass::calc(double x, double y)
{
  double temp;
  temp = x + y;
};
Что значит выделенная double? Возвращаемый тип. Тип вы указали. А что вы возвращаете? Ничего.
Далее. Для чего вы объявляете новую temp в этой функции, если она уже объявлена в классе?
Исправил на такую версию

Код:
#include <stdio.h>
#include <conio.h>

class myFirstClass
{
  private:
     double calc(double, double);    
  public:
   
    void vvod();
    void vivod();
    void vivodRes();
    double x, y, res;
    myFirstClass();
};

void myFirstClass::vvod()
{
   printf("x = ");
   scanf("%lf", &x);
   printf("y = ");
   scanf("%lf", &y);
};

void myFirstClass::vivod()
{
   printf("x = %lf", x);
   printf("y = %lf", y);
};

myFirstClass::myFirstClass()
{};

double myFirstClass::calc(double x, double y)
{
  res = x + y;
  return res;
};

void myFirstClass::vivodRes()
{
   printf("Summa = %lf", res);
};

int main()
{
  myFirstClass m;
  m.vvod();
  m.vivod();
  m.calc();
  m.vivodRes();
  getch();
  return 0;
};
теперь придирается только к строчке m.calc();

пишет:

50 func.cpp no matching function for call to `myFirstClass::calc()'
Ну и как "note"
func.cpp:35 candidates are: double myFirstClass::calc(double, double)
Андрей! вне форума Ответить с цитированием
Старый 02.03.2012, 22:32   #8
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Простите, а вы перед этим изучали вообще Си или какой-то другой язык хотя бы? У вас элементарные ошибки в передаче аргументов. Ваша функция calc принимает два параметра типа double, а что вы ей отдаете тут m.calc();?
Ничего.

З.Ы. Тем более, она приватная, а, значит, снаружи в нее достучаться нельзя.
З.З.Ы. И еще мне не совсем понятно, для чего вы сделали пабликом внутренние свойства класса double x, y, res;?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 02.03.2012 в 22:34.
ACE Valery вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Знакомство программистов с программистами... a9N2k Свободное общение 19 16.02.2011 07:52
Солнечная система (знакомство с синусом) mutabor Gamedev - cоздание игр: Unity, OpenGL, DirectX 49 01.06.2010 19:18
Знакомство с одноклассниками Alar Свободное общение 10 03.07.2008 22:20