Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
kokoz9br
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
1

Задача на классы

14.11.2012, 22:40. Просмотров 2073. Ответов 4
Метки нет (Все метки)

Написал програмку.
Все работает,только неправильно считает среднюю скорость.

Задача:
Создать класс «транспортное средство». Информация о транспортном средстве — это: название, мощность двигателя, максимальная скорость. Функции:
а) ввод данных о транспортном средстве;
б) вывод на экран информации о транспортном средстве;
в) функция, возвращающая название транспортного средства;
г) функция, возвращающая информацию о мощности двигателя;
д) функция, возвращающая максимальная скорость транспортного средства.
Создать массив объектов класса «транспортное средство». Подсчитать среднюю скорость транспортных средств. Вывести названия транспортных средств с мощностью двигателя выше заданной.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
class sredstvo
{
private:
    char nazv[20];
    int power;
    int maxspeed;  
 
 
public:
        void vvod();
        void vivod();
        void vivodnazvanie();
        void vivodpower();
        void vivodspeed();
        int averspeed(int s);
        void vivodzadannoimischnisti(int m);
};
void sredstvo::vvod() 
{
    cout<<"\n Vvedite nazvanie: ";
    cin>>nazv;
    cout<<"\n Vvefite moschnost: ";
    cin>>power;
    cout<<"\n Vvedite maxspeed: ";
    cin>>maxspeed;
}
void sredstvo::vivod()
{  
    cout<<"\n nazvanie : "<<nazv;
    cout<<"\n moschnost: "<<power;
    cout<<"\n maxspeed : "<<maxspeed;
    cout<<"\n";
}
void sredstvo::vivodnazvanie()
{
    cout<<"Nazvanie: "<<nazv;
}
void sredstvo::vivodpower()
{
    cout<<"power: "<<power;
}
void sredstvo::vivodspeed()
{
    cout<<"maxspeed: "<<maxspeed;
}
int sredstvo::averspeed(int s)
{
    s+=power;   
    return s;
}
void sredstvo::vivodzadannoimischnisti(int m)
{
 if(power>m)
    {
    cout<<"\n nazvanie : "<<nazv;
    cout<<"\n moschnost: "<<power;
    cout<<"\n maxspeed : "<<maxspeed;
    cout<<"\n";
    }
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    sredstvo mas[10];
    cout<<"Input data n: ";
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    mas[i].vvod();
    system("cls");
    for(int i=0;i<n;i++)
    {
        cout<<"\n Informacija o "<<i+1<<" transpertnom sredste:";
        mas[i].vivod();
    }
    cout<<"\n Informacija o nazvanii TC:";cout<<"\n";
    for(int i=0;i<n;i++)
    {
        cout<<i+1<<".";
        mas[i].vivodnazvanie();cout<<"\n";
    }
    cout<<"\n Informacija o moschnosti:";cout<<"\n";
    for(int i=0;i<n;i++)
    {
        cout<<i+1<<".";
        mas[i].vivodpower();cout<<"\n";
    }
    cout<<"\n Informacija o max.skorosti:";cout<<"\n";
    for(int i=0;i<n;i++)
    {
        cout<<i+1<<".";
        mas[i].vivodspeed();cout<<"\n";
    }
    int s=0;
    int S;
    float Sr;
     for(int i=0;i<n;i++)
    {
        S=s+mas[i].averspeed(s);
    }
     Sr=S/n;
     cout<<"Srednaja skorost = "<<Sr;
     cout<<"\n";cout<<"\n";
     int m;
     cout<<"Vvedite m = ";
     cin>>m;
    cout<<"Nazvanija TC,skorost kotorih bolshe "<<m<<":\n ";
    for(int i=0;i<n;i++)
    {
    mas[i].vivodzadannoimischnisti(m);
    }
    getch();
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 22:40
Ответы с готовыми решениями:

Задача по С++ (классы)
Написать класс, описывающий группу студентов. Описание студента также реализуется с помощью...

[C++]Задача на классы
Путем подражания создать новый класс Лэптоп. Переопределить указанную операцию Новый член класса -...

Задача на классы в C++
Добрый день. Пытаюсь решить задачу: Создать абстрактный тип данных - класс вектор, который имеет...

Классы (задача)
Цифровой счетчик, это переменная с ограниченным диапазоном. Значение которой сбрасывается, когда ее...

Задача на классы
Я не понимаю как написать функцию чтобы она проверяла или числа с плавающей запятой! Помогите! ...

4
polyaKIDze
63 / 63 / 20
Регистрация: 16.07.2012
Сообщений: 147
14.11.2012, 22:49 2
Может я что-то не понял, но мне не нравится строчка 105:
1. на каждой итерации S не прибавляется к предыдущему результату, а заново переопределяется как 0+mas[i].averspeed(s)
2.функция averspeed() на каждой итерации также принимает 0
3. функция их п.2 зачем-то суммирует мощность
1
kokoz9br
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
14.11.2012, 23:20  [ТС] 3
Цитата Сообщение от polyaKIDze Посмотреть сообщение
Может я что-то не понял, но мне не нравится строчка 105:
1. на каждой итерации S не прибавляется к предыдущему результату, а заново переопределяется как 0+mas[i].averspeed(s)
2.функция averspeed() на каждой итерации также принимает 0
3. функция их п.2 зачем-то суммирует мощность
ой,ой,ой,я напутал,не ту переменную написал.

Добавлено через 22 минуты
По поводу 105 строки.Я в этой функции хочу,чтобы значение s прибавлялось с ккаждым считыванием maxspeed. Но не знал как сделать и написал так.
Буду благодарен,если поможете.
0
polyaKIDze
63 / 63 / 20
Регистрация: 16.07.2012
Сообщений: 147
14.11.2012, 23:37 4
kokoz9br,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
...
int sredstvo::vivodspeed1()
{
    return maxspeed;
}
...
int S = 0;
float Sr;
for(int i=0;i<n;i++)
  {
  S=S+mas[i].vivodspeed1();
  }
Sr=S/n;
Функцию averspeed замените на vivodspeed1.
Не факт, что поможет. Нет времени подробнее разбираться с вашим кодом. Могут быть и другие ошибки.
1
kokoz9br
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
14.11.2012, 23:38  [ТС] 5
Цитата Сообщение от polyaKIDze Посмотреть сообщение
kokoz9br,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
...
int sredstvo::vivodspeed1()
{
    return maxspeed;
}
...
int S = 0;
float Sr;
for(int i=0;i<n;i++)
  {
  S=S+mas[i].vivodspeed1();
  }
Sr=S/n;
Функцию averspeed замените на vivodspeed1.
аааа,все намного проще,чем я думал.Благодарю.
0
14.11.2012, 23:38
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 23:38

Задача на классы (Rectangle)
Создать класс Rectangle, который сохраняет Декартовы координаты четырех вершин прямоугольника,...

Массивы и классы C++. Задача.
Доброго времени суток, товарищи... Объявляю награду за выполнение след. задач.. заинтересовавшиеся...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.