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

Нужна головная программа для класса Array

15.11.2012, 13:54. Просмотров 1096. Ответов 29
Метки нет (Все метки)

Вот код
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
#include "stdafx.h" 
#include "conio.h" 
#include "stdio.h" 
#include "math.h" 
#include "time.h" 
#include "iostream" 
 
using namespace std; 
class Array 
{int *a,m; 
public: 
Array(int nm=1, int t=1, int d=10); 
Array(int *, int ); 
Array(Array &); 
~Array(){ 
if(a)delete []a; 
} 
Array operator +(Array&); 
Array operator =(Array&); 
int&operator[](int k); 
bool operator==(Array&); 
void vivod(); 
}; 
Array::Array(int nm, int t, int d) 
{ 
int i; 
a=new int[m=nm]; 
switch(t) 
{ 
case 1: a[0]=rand(); 
for(i=1;i<m;i++)>=a[i-1]+rand(); break; 
case 2: a[m-1]=rand(); 
for(i=m-2;i>=0;i--) 
a=a[i+1]+rand(); break; 
case 3: for(i=0;i<m;i++)>=rand(); break; 
} 
} 
Array::Array(Array&b) 
{a = new int [m=b.m]; 
for(int i=0; i<m;>=b.a; 
} 
Array::Array(int *b, int k){ 
a = new int [m=k]; 
int i; 
for(i=0; i<m;> = b; 
} 
Array Array::operator+(Array&b) 
{ 
Array c(m+b.m,0); 
int i,j,k; 
for(i=0, j=0, k=0; i<m><=b[j]) c[k]=a[i++]; 
else c[k]=b[j++]; 
c[k++]=a[i++]; 
while(j<b.m)>=b.a; 
return *this; 
} 
int &Array::operator[] (int k) 
{ 
if(k<0 || k>=m){ 
printf("Index %d za granicami massiva",k); 
exit(1); 
} 
return a[k]; 
} 
bool Array::operator ==(Array&b) 
{ 
int i; 
if(m=b.m){ 
for(i=0;i<m;i++)>!=b.a){ 
return 0; 
} 
if(i==m) 
return 1; 
} 
return 0; 
} 
void Array::vivod(){ 
 
printf("\n"); 
for(int i=0; i<m;>); 
}
осталось дописать головную программу, но ничего в голову не идет, помогите пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 13:54
Ответы с готовыми решениями:

Нужна программа с использованием класса String
Здравствуйте, нужна ваша помощь. Требуется написать программу, используя только...

программа для вычисления среднего геометрического элементов массива array[15] удовлетворяющих условию
Вот моя программа для вычисления среднего геометрического элементов массива...

Для чего нужна частичная специализация шаблона класса?
Доброго времени суток объясните пожалуйста зачем нужна частичная специализация...

Создание класса Array
МОЖНО ПОДРОБНО (хочу разобраться) заранее благодарен Создайте класс Array...

Мне очень нужна программа для игры gta samp 0.3c для взлома базы данных
Мне очень нужна программа для игры gta samp 0.3c для взлома базы данных

29
margarin
36 / 36 / 3
Регистрация: 02.06.2012
Сообщений: 318
15.11.2012, 15:12 2

Не по теме:

я рад, что ты поставил тег cpp, пояснил что этот код делает и должен делать. Но, ничего стршного)



Добавлено через 10 минут

Не по теме:

З.Ы. Приношу свои извинения, сначала прочитал вопрос, потом повесил пост и только потом прочитал никнейм.

0
Anna1993
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 12
15.11.2012, 15:42  [ТС] 3
этот код для класса массив.
C++
1
2
3
4
5
//operator+ -объединение массивов
//operator== сравнение
//operator= присвоение
//operator[] - перегрузка []
//vivod - вывод на экран массива
Код рабочий, при компилировании ошибок нет
0
margarin
36 / 36 / 3
Регистрация: 02.06.2012
Сообщений: 318
15.11.2012, 15:44 4
Я наверное слаб в этом... Так что должна делать "головная программа", ну примерно, что в ней должно быть?
0
Anna1993
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 12
15.11.2012, 16:09  [ТС] 5
Цитата Сообщение от margarin Посмотреть сообщение
Так что должна делать "головная программа", ну примерно, что в ней должно быть?
программа должна вызывать эти член-функции, в первую очередь создав объект. Начало есть:

C++
1
2
3
4
5
6
7
void main(){
    srand(time(0)); 
    int c[5]={1,2,3,4,5};
    int m=5;
    Array a(c,m);
    a.Print();
}
0
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
15.11.2012, 17:04 6
Цитата Сообщение от Anna1993 Посмотреть сообщение
осталось дописать головную программу
То, что вы написали даже не откопмилируется, не говоря уже о других ошибках...
0
Anna1993
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 12
15.11.2012, 17:26  [ТС] 7
Цитата Сообщение от rangerx Посмотреть сообщение
То, что вы написали даже не откопмилируется, не говоря уже о других ошибках...
все прекрасно компилируется в Viisual Studio 2010, ошибок нет
0
margarin
15.11.2012, 17:27
  #8

Не по теме:

Цитата Сообщение от Anna1993 Посмотреть сообщение
Код рабочий, при компилировании ошибок нет
Цитата Сообщение от rangerx Посмотреть сообщение
То, что вы написали даже не откопмилируется, не говоря уже о других ошибках...
хм, а я себе уже шею скрутил, код рассматривать, пытаясь понять с какой стороны он рабочий)

0
Afflicted
Обитатель форума
199 / 182 / 54
Регистрация: 28.10.2012
Сообщений: 543
15.11.2012, 17:34 9
Уж даже не знаю как это дело компилируется у вас. Подобную запись я встречаю впервые.
C++
1
for(i=1;i<m;i++)>=a[i-1]+rand();
И даже молчу вот про такую:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Array Array::operator+(Array&b) 
{ 
    Array c(m+b.m,0); 
    int i,j,k; 
 
    for(i=0, j=0, k=0; i<m><=b[j])
        c[k]=a[i++]; 
    else c[k]=b[j++]; 
        c[k++]=a[i++]; 
 
    while(j<b.m)>=b.a; 
 
    return *this; 
}
Компилятор должен опплеваться синтаксическими ошибками.
0
XRuZzz
Антикодер
1494 / 660 / 37
Регистрация: 15.09.2012
Сообщений: 2,674
15.11.2012, 17:45 10
оно работает...
но КАК ???
0
Anna1993
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 12
15.11.2012, 17:54  [ТС] 11
с выводом маленько косяк:
C++
1
2
3
4
5
6
void Array::vivod(){
 
    printf("\n");
    for(int i=0; i<m; i++)
        printf("%d ",a[i]);
}
Добавлено через 3 минуты
Цитата Сообщение от Afflicted Посмотреть сообщение
Уж даже не знаю как это дело компилируется у вас. Подобную запись я встречаю впервые.
C++
1
for(i=1;i<m;i++)>=a[i-1]+rand();
И даже молчу вот про такую:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Array Array::operator+(Array&b) 
{ 
    Array c(m+b.m,0); 
    int i,j,k; 
 
    for(i=0, j=0, k=0; i<m><=b[j])
        c[k]=a[i++]; 
    else c[k]=b[j++]; 
        c[k++]=a[i++]; 
 
    while(j<b.m)>=b.a; 
 
    return *this; 
}
Компилятор должен опплеваться синтаксическими ошибками.
блин, тут что-то при редактировании что-то изменилось.. у меня в коде совершенно другое..:
C++
1
2
3
4
5
6
7
8
9
10
11
12
Array Array::operator+(Array&b)
{
    Array c(m+b.m,0);
    int i,j,k;
    for(i=0, j=0, k=0; i<m && j<b.m; k++)
        if(a[i]<=b[j]) c[k]=a[i++];
        else c[k]=b[j++];
        c[k++]=a[i++];
    while(j<b.m)
        c[k++]=b[j++];
    return c;
}
Добавлено через 1 минуту
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
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "time.h"
#include "iostream"
 
using namespace std;
class Array
{int *a,m;
public:
    Array(int nm=1, int t=1, int d=10);
    Array(int *, int );
    Array(Array &);
    ~Array(){
        if(a)delete []a;
    }
    Array operator +(Array&);
    Array operator =(Array&);
    int&operator[](int k);
    bool operator==(Array&);
    void vivod();
};
Array::Array(int nm, int t, int d)
{
    int i;
    a=new int[m=nm];
    switch(t)
    {
    case 1: a[0]=rand()%10;
        for(i=1;i<m;i++)
            a[i]=a[i-1]+rand()%10; break;
    case 2: a[m-1]=rand()%10;
        for(i=m-2;i>=0;i--)
            a[i]=a[i+1]+rand()%10; break;
    case 3: for(i=0;i<m;i++)
                a[i]=rand()%10; break;
    }
}
Array::Array(Array&b)
{a = new int [m=b.m];
    for(int i=0; i<m; i++)
        a[i]=b.a[i];
}
Array::Array(int *b, int k){
    a = new int [m=k];
    int i;
    for(i=0; i<m; i++)
        a[i] = b[i];
}
Array Array::operator+(Array&b)
{
    Array c(m+b.m,0);
    int i,j,k;
    for(i=0, j=0, k=0; i<m && j<b.m; k++)
        if(a[i]<=b[j]) c[k]=a[i++];
        else c[k]=b[j++];
        c[k++]=a[i++];
    while(j<b.m)
        c[k++]=b[j++];
    return c;
}
Array Array::operator =(Array&b)
{
    if(a) delete []a;
    a = new int [m=b.m];
    for(int i=0; i<m; i++)
        a[i]=b.a[i];
    return *this;
}
int &Array::operator[] (int k)
{
    if(k<0 || k>=m){
        printf("Index %d za granicami massiva",k);
        exit(1);
    }
    return a[k];
}
bool Array::operator ==(Array&b)
{
    int i;
    if(m=b.m){
        for(i=0;i<m;i++)
            if(a[i]!=b.a[i]){
                return 0;
            }
            if(i==m)
                return 1;
    }
    return 0;
}
void Array::vivod(){
 
    printf("\n");
    for(int i=0; i<m; i++)
        printf("%d ",a[i]);
}
0
Afflicted
15.11.2012, 17:54
  #12

Не по теме:

упс, пока писал - уже опередили меня.

0
XRuZzz
Антикодер
1494 / 660 / 37
Регистрация: 15.09.2012
Сообщений: 2,674
15.11.2012, 17:59 13
фух слава богу а то я думал у меня компилятор сломался (mingw gcc)
0
Illusive
17 / 17 / 4
Регистрация: 11.01.2008
Сообщений: 51
15.11.2012, 18:03 14
С ошибками в строках: 30, 34, 35, 39, 40, 45, 51, 54, 68, 69, 80
такая программа никогда работать не будет.
Возможно эти ошибки возникли при копироании текста, т.к.
самостоятельно их сделать практически невозможно.
0
XRuZzz
Антикодер
1494 / 660 / 37
Регистрация: 15.09.2012
Сообщений: 2,674
15.11.2012, 18:05 15
тут по ходу косяк.
C++
1
2
3
4
5
bool Array::operator ==(Array&b)
{
    int i;
if (m = b.m)
    {
0
Anna1993
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 12
15.11.2012, 18:10  [ТС] 16
Цитата Сообщение от XRuZzz Посмотреть сообщение
тут по ходу косяк. но так в любом случае никто не делает
C++
1
2
3
4
5
bool Array::operator ==(Array&b)
{
    int i;
if (m = b.m)
    {
тут нет, нам это так объяснялось.. тут мы сравниваем размерности 2х массивов
0
Afflicted
Обитатель форума
199 / 182 / 54
Регистрация: 28.10.2012
Сообщений: 543
15.11.2012, 18:11 17
= это знак присвоения.
сравнивать нужно таким знаком ==
0
XRuZzz
Антикодер
1494 / 660 / 37
Регистрация: 15.09.2012
Сообщений: 2,674
15.11.2012, 18:14 18
у вас получается m присваиваем b.m и если поле m не равно 0 то выполняется условие.
вообще такие вещи в коде опытные люди проверяют регулярными выражениями по всему проекту.
так же как и конструкцию типа if (a==b); (точка с запятой в конце)
0
Anna1993
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 12
15.11.2012, 18:20  [ТС] 19
Цитата Сообщение от XRuZzz Посмотреть сообщение
у вас получается m присваиваем b.m и если поле m не равно 0 то выполняется условие.
вообще такие вещи в коде опытные люди проверяют регулярными выражениями по всему проекту.
так же как и конструкцию типа if (a==b); (точка с запятой в конце)
C++
1
2
3
4
bool Array::operator ==(Array&b)
{
    int i;
    if(m==b.m){
так верно?

Добавлено через 1 минуту
я бы и не сказала, что я опытный программист, как учат, так и делаем..
0
XRuZzz
Антикодер
1494 / 660 / 37
Регистрация: 15.09.2012
Сообщений: 2,674
15.11.2012, 18:21 20
а что бы проверять верно или нет работает метод опытные люди пишут так называемые юнит-тесты. Это грубо говоря такие функции, которые проверяют, что на выходе даёт метод
я к тому что надо создать два одинаковых объекта и попробовать их сравнить
собственно ваш main наверно и должен быть похож на юнит тест
0
15.11.2012, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2012, 18:21

Реализовать шаблонную версию класса Array
#include &lt;cstddef&gt; template &lt;typename T&gt; class Array { // Список...

Шаблоны массива класса array (объяснить)
Здравствуйте, я не могу понять, что означает шаблон класса array..Вот само...

Использование std::array внутри пользовательского класса
Здравствуйте! Я создал класс, одним из полей которого является массив...


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

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

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