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

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

Войти
Регистрация
Восстановить пароль
 
almazf
Сообщений: n/a
#1

объяснения к коду - C++

16.01.2012, 14:52. Просмотров 505. Ответов 3
Метки нет (Все метки)

Помогите объяснениями к коду(хотя бы через несколько строчек напишите коментарии)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "stdafx.h"
#include <time.h>
#include <iostream>
 
using namespace std;
 
template <class type> class lk{
    
public:
    type *m;
    int s;
 
    lk(){}                      
 
    lk(int k)                       
    {
        m = new type [k];
        s=k;
    }
 
    lk(const lk &obj)            
    {
        this->m=obj.m;
        this->s=obj.s;
 
        m = new type [s];
        for(int i=0; i<s; i++)
        {
            this->m[i]=obj.m[i];
        }
    }
    ~lk()                          
    {
        delete []m;
    }
    void put(type b, int a)           
    {
        if ( (a<1) || (a>s) ) cout<<"нет элемента массива с таким индексом\n";
        else m[a-1]=b;
    }
    type get(int a)                      
    {
        if ( (a<1) || (a>s) ) cout<<"нет элемента массива с таким индексом\n";
        else return m[a-1];
    }
    double srarif()             
 {
 double srarif=0;
 for (int i=0;i<s;i++){
 srarif=srarif+m[i];
 }
 srarif=srarif/s;
 return srarif; 
 }
};
int main()
{
    setlocale( LC_ALL, "Russian" );
 
    int size1,size2;
 
    cout<<"введите размеры массивов\n";
    cin>>size1;
    cin>>size2;
 
    if ( (size1!=int(size1)) || (size2!=int(size2)) ){ cout<<"некорректные данные";exit(1);}
    lk<int> c(size1);
    lk<double> d(size2);
 
 
    cout<<"\n";
 
    srand(unsigned(time(NULL)));
 
    cout<<"массив с данными типа int \n";
 
    for(int i=0;i<size1;i++)
    {
        c.m[i]=rand()%10 + 5;
        cout<<c.m[i]<<" ";
    }
 
    cout<<"\n";
 
    cout<<"массив с данными типа double\n";
 
    for(int i=0;i<size2;i++)
    {
        d.m[i]=(rand()%10 * 0.12)/0.13;
        cout<<d.m[i]<<" ";
    }
 
    cout<<"\n"<<"среднее арифметическое массива с данными типа int = "<<c.srarif()<<"\n";
    cout<<"среднее арифметическое массива с данными типа double = "<<d.srarif()<<"\n";
 
    int znach1, number1;
 
    cout<<"\nвведите значение и номер ячейки,\nкуда его положить для массива с данными типа int\n";
    cin>>znach1;
    cin>>number1;
 
    if ( znach1 == int(znach1) ) c.put(znach1,number1);
    else{ cout<<"не соответствующий тип значения"; exit(1);}
 
    double znach2;
    int number2;
    
    cout<<"введите значение и номер ячейки,\nкуда его положить для массива с данными типа double\n";
    cin>>znach2;
    cin>>number2;
 
    d.put(znach2,number2);
 
    cout<<"массив с данными типа int после изменения\n";
 
    for(int i=0;i<size1;i++)
    {
        cout<<c.m[i]<<" ";
    }
 
    cout<<"\n";
 
    cout<<"массив с данными типа double после изменения\n";
 
    for(int i=0;i<size2;i++)
    {
        cout<<d.m[i]<<" ";
    }
    
    int number3;
    cout<<"\n"<<"введите номер ячейки, требуемую для вывода для массива с данными типа int\n";
    cin>>number3;
    cout<<"\n"<<c.get(number3)<<"\n";
 
    int number4;
    cout<<"\n"<<"введите номер ячейки, требуемую для вывода для массива с данными типа double\n";
    cin>>number4;
    cout<<"\n"<<d.get(number4)<<"\n";
Добавлено через 28 минут
ЗАДАНИЕ:
Создать класс-шаблон, содержащий массив любых встроенных типов данных произвольного размера. В классе должны быть функции-члены:
1. конструктор, имеющий аргумент – размер массива,
2. функция, помещающая значение в ячейку с указанным индексом,
3. функция, возвращающая значение, находящееся в ячейке с нужным индексом,
4. функция, возвращающая значение среднего арифметического элементов массива.
Класс-шаблон должен быть в ортодоксальной канонической форме.
Функции при получении некорректных аргументов должны выдавать предупреждение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 14:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос объяснения к коду (C++):

объяснения по коду - C++
#include &quot;std_lib_facilities.h&quot; int main() { string previous = &quot; &quot;; string current; while (cin&gt;&gt;current) { if...

Шаблоны С++ объяснения - C++
#include &quot;header.h&quot; void main () { setlocale(LC_ALL,&quot;&quot;); vector&lt;char&gt; a(3), b(3); a.set(); b.set(); cout&lt;&lt;&quot;A = &quot;&lt;&lt;a; ...

Надеюсь получить объяснения - C++
ЗАДАНИЕ: Составить программу, которая вычисляет причитающуюся к выплате сумму через N месяцев, если деньги в сумме, равной S, положены...

Выручайте, объяснения внутри:) - C++
Стационарный комп, после скачка напряжения, отказывается работать(на нем стояла хр-шка и работал С++ Builder 6), сейчас пользуюсь ноутом,...

&,|, ^, приведите пример на каждую операцию бе компелятора а в ручную , для объяснения работы этих операций - C++
#include &lt;iostream&gt; int main() { char op = 0; std::cin &gt;&gt; op; int a = 220; int b =...

Комментарий к коду - C++
Ребят,помогите кто нибудь вот программа: #include &lt;iostream&gt; using namespace std; void main() { int n; int factorial=1; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HighPredator
5477 / 1843 / 343
Регистрация: 10.12.2010
Сообщений: 5,435
Записей в блоге: 3
16.01.2012, 15:22 #2
Вы даже не весь код привели...

Добавлено через 7 минут
Вот поднаписал кой-чего.
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "stdafx.h"
#include <time.h>
#include <iostream>
 
using namespace std;
 
//------------------------------------------
//описание класса-шаблона "lk"
template <class type> class lk{
        
public:
        type *m;//собственно массив данных типа "type"
        int s;//длина массива
 
        lk(){}//пустой конструктор                      
 
        lk(int k)//конструктор с аргументом                       
        {
                m = new type [k];//выделение памяти под массив
                s=k;//запись количества элементов
        }
 
        lk(const lk &obj)  //конструктор копирования          
        {
                this->m=obj.m;
                this->s=obj.s;
 
                m = new type [s];
                for(int i=0; i<s; i++)
                {
                        this->m[i]=obj.m[i];
                }
        }
        ~lk()//деструктор                          
        {
                delete []m;//освобождаем память массива
        }
        void put(type b, int a)//функция, помещающая значение по индексу           
        {
                if ( (a<1) || (a>s) ) cout<<"нет элемента массива с таким индексом\n";
                else m[a-1]=b;
        }
        type get(int a)//функция возвращающая значение по индексу                      
        {
                if ( (a<1) || (a>s) ) cout<<"нет элемента массива с таким индексом\n";
                else return m[a-1];
        }
        double srarif()//функция, возвращающая среднее арифметическое элементов массива
 {
 double srarif=0;
 for (int i=0;i<s;i++){
 srarif=srarif+m[i];
 }
 srarif=srarif/s;
 return srarif; 
 }
};
int main()
{
        setlocale( LC_ALL, "Russian" );//установка вывода русских символов в консоль
 
        int size1,size2;
        //ввод размеров массивов
        cout<<"введите размеры массивов\n";
        cin>>size1;
        cin>>size2;
 
        if ( (size1!=int(size1)) || (size2!=int(size2)) ){ cout<<"некорректные данные";exit(1);}
        lk<int> c(size1);
        lk<double> d(size2);
 
 
        cout<<"\n";
        //инициализация генератора случайных чисел
        srand(unsigned(time(NULL)));
 
        cout<<"массив с данными типа int \n";
        //заполнение массива случайными числами
        for(int i=0;i<size1;i++)
        {
                c.m[i]=rand()%10 + 5;
                cout<<c.m[i]<<" ";
        }
 
        cout<<"\n";
 
        cout<<"массив с данными типа double\n";
        //заполнение массива случайными числами
        for(int i=0;i<size2;i++)
        {
                d.m[i]=(rand()%10 * 0.12)/0.13;
                cout<<d.m[i]<<" ";
        }
 
    cout<<"\n"<<"среднее арифметическое массива с данными типа int = "<<c.srarif()<<"\n";
        cout<<"среднее арифметическое массива с данными типа double = "<<d.srarif()<<"\n";
 
        int znach1, number1;
 
        cout<<"\nвведите значение и номер ячейки,\nкуда его положить для массива с данными типа int\n";
        cin>>znach1;
        cin>>number1;
 
        if ( znach1 == int(znach1) ) c.put(znach1,number1);
        else{ cout<<"не соответствующий тип значения"; exit(1);}
 
        double znach2;
        int number2;
        
        cout<<"введите значение и номер ячейки,\nкуда его положить для массива с данными типа double\n";
        cin>>znach2;
        cin>>number2;
 
        d.put(znach2,number2);
 
        cout<<"массив с данными типа int после изменения\n";
 
        for(int i=0;i<size1;i++)
        {
                cout<<c.m[i]<<" ";
        }
 
        cout<<"\n";
 
        cout<<"массив с данными типа double после изменения\n";
 
        for(int i=0;i<size2;i++)
        {
                cout<<d.m[i]<<" ";
        }
        
        int number3;
        cout<<"\n"<<"введите номер ячейки, требуемую для вывода для массива с данными типа int\n";
        cin>>number3;
        cout<<"\n"<<c.get(number3)<<"\n";
 
        int number4;
        cout<<"\n"<<"введите номер ячейки, требуемую для вывода для массива с данными типа double\n";
        cin>>number4;
        cout<<"\n"<<d.get(number4)<<"\n";
almazf
Сообщений: n/a
16.01.2012, 16:48 #3
спасибо
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
16.01.2012, 17:09 #4
У класса есть проблемы.
Конструктор по-умолчанию не инициализирует поля класса.
Имеется прямой доступ к полям s и m -- нарушение инкапсуляции.
При наличии динамически выделяемой памяти под поля объекта, не определен оператор присваивания -- нарушение инкапсуляции.
C++
1
if ( (a<1) || (a>s) ) cout<<"нет элемента массива с таким индексом\n";
Не надо выводить внутри класса, бросайте эксепшен.
C++
1
throw std::out_of_range("Index out of range.");
Цитата Сообщение от HighPredator Посмотреть сообщение
double srarif()//функция, возвращающая среднее арифметическое элементов массива
*{
*double srarif=0;
*for (int i=0;i<s;i++){
*srarif=srarif+m[i];
*}
*srarif=srarif/s;
*return srarif;
*}
Функция определена не для всех типов данных. Лучше сделать её внешней относительно класса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 17:09
Привет! Вот еще темы с ответами:

Уточнение по коду - C++
Что возвращает эта строка, если массивы double значений: s = s | s]; Добавлено через 1 час 8 минут Я прошу это уже 3 дня, что,...

коментарий к коду.. - C++
Помогите пожалуйста у меня есть программа вот она: #include &lt;iostream&gt; int rev(int rhs) { int res = 0; while(rhs) { res...

Комментарии к коду - C++
Пожалуйста, помогите понять как работает код - поставить комментарии к строкам. #include &lt;iostream&gt; #include &lt;fstream&gt; #include...

Разъяснение по коду - C++
Здравствуйте уважаемые киберфорумцы! Имеется вот такой код программы #include &lt;cmath&gt; #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.01.2012, 17:09
Ответ Создать тему
Опции темы

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