Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Avicii
2 / 2 / 0
Регистрация: 01.12.2012
Сообщений: 123
#1

Массив объектов - C++

24.02.2013, 15:47. Просмотров 323. Ответов 6
Метки нет (Все метки)

Здравствуйте,помогите починить программу,не знаю в чем причина,мб недопонимаю.... Задание: Элементы масива которые больше 10 заменить на 1, остальные округлить до ближайшего целого.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath>
using namespace std;
class top {int a;
           public:
           void vin (int n)
           {a=n;}
           int fal()
           {return if(abs(a)>10) {a=1};  //где-то тут ошибка
            if (abs(a)<=10) {a=round (a)};}
                     }
 
int main()
{top M[16]; int i;
cout<<"Vvedite massiv M[16]: ";
for (i=0;i<16;i++)
cin>>M[16];
for (i=0;i<16;i++) M[i].vin(i);
for (i=0;i<16;i++) cout<<M[i].fal()<<" ";
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 15:47     Массив объектов
Посмотрите здесь:

Массив объектов C++
Массив объектов C++
Массив объектов C++
Массив объектов C++
C++ С++ массив объектов
Массив объектов C++
Массив объектов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
24.02.2013, 16:10     Массив объектов #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cmath>
using namespace std;
class top 
{
public:
        double a;
           double fal(top& a)
           {
                  if(a.a>10) 
                  {
                     return (a.a=1);
               }
              if (a.a<=10) 
                  {
                      return (a.a=round (a.a));
               }
             }
};
 
int main()
{
     top M[16]; int i;
    cout<<"Vvedite massiv M[16]: ";
    for (i=0;i<16;i++)
       cin>>M[i].a;
     for (i=0;i<16;i++) 
       cout<<M[i].fal(M[i])<<" ";
     return 0;
}
Совсем неясно, что Вы тут сделать пытались. Например, функцией vin.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
24.02.2013, 16:30     Массив объектов #3
Цитата Сообщение от BumerangSP Посмотреть сообщение
Совсем неясно, что Вы тут сделать пытались. Например, функцией vin.
ну это как раз-таки ясно. Он не хотел делать public int a, вместо это использовать void top::vin (int n)
Если не трогать класс,
можно было б изменить часть функции мэйн как:
C++
1
2
3
4
5
int val;
for (i=0;i<16;i++){
  cin>>val;
  M[i].vin(val);
}
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
24.02.2013, 17:25     Массив объектов #4
Kuzia domovenok, сумбурно как-то. Можно подумать, что в vin он хочет заменить все введенные числа.
Avicii
2 / 2 / 0
Регистрация: 01.12.2012
Сообщений: 123
04.03.2013, 15:17  [ТС]     Массив объектов #5
Цитата Сообщение от BumerangSP Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cmath>
using namespace std;
class top 
{
public:
        double a;
           double fal(top& a)
           {
                  if(a.a>10) 
                  {
                     return (a.a=1);
               }
              if (a.a<=10) 
                  {
                      return (a.a=round (a.a));
               }
             }
};
 
int main()
{
     top M[16]; int i;
    cout<<"Vvedite massiv M[16]: ";
    for (i=0;i<16;i++)
       cin>>M[i].a;
     for (i=0;i<16;i++) 
       cout<<M[i].fal(M[i])<<" ";
     return 0;
}
Совсем неясно, что Вы тут сделать пытались. Например, функцией vin.
C++
1
2
3
4
5
void vin (int n)
           {a=n;}
           int fal()
           {return if(abs(a)>10) {a=1};  
            if (abs(a)<=10) {a=round (a)};}
Я делал сразу после лекции,нам обьяснили что функцией
C++
1
2
void vin (int n)
           {a=n;}
заносится переменная для присванивания с которой в дальнешем работает функция в классе
C++
1
2
3
int fal()
           {return if(abs(a)>10) {a=1};  
            if (abs(a)<=10) {a=round (a)};}
Avicii
2 / 2 / 0
Регистрация: 01.12.2012
Сообщений: 123
22.03.2013, 21:52  [ТС]     Массив объектов #6
Благодарю,немного переделал программу, т.к переменная "а" должна по заданию находится в привате. Впорос появился,как сделать безопасный массив с контролем границ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cmath>
using namespace std;
class samp {double a;
            public:
            double put_a (double n)
            {a=n;}
            double get_a()
             {if(a>10)
                {return (a=1);}
                  if (a<=10)
                   {return (a=round(a));}
             }
            };
int main()
{samp M[10];
double B[10];
int i;
cout<<"Vvedite massiv M[10]: ";
for (i=0;i<10;i++)
cin>>B[i];
for (i=0;i<10;i++)
M[i].put_a(B[i]);
for (i=0;i<10;i++)
cout<<M[i].get_a()<<" ";
return 0;
}
Kastaneda
22.03.2013, 21:57     Массив объектов
  #7

Не по теме:

Очень плохо, что в ВУЗах не учат форматировать код, очень...

Yandex
Объявления
22.03.2013, 21:57     Массив объектов
Ответ Создать тему
Опции темы

Текущее время: 15:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru