Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 12
1

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

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

Author24 — интернет-сервис помощи студентам
Вот код
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2012, 13:54
Ответы с готовыми решениями:

как пишется головная программа?
Ребят,нужно написать головную программу с использованием модуля(в который входит функция и...

Перегрузка операторов для класса Array
Здравствуйте, у меня есть созданный класс array, для него нужно перегрузить операторы &lt;&lt;. &gt;&gt;, =,...

Перегрузки операторов для класса Array
Здравствуйте.Помогите разобраться с перегрузками,пожалуйста. Перегрузки: 1)операции ++ (– –):...

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

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

Не по теме:

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



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

Не по теме:

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

0
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
41 / 41 / 3
Регистрация: 02.06.2012
Сообщений: 351
15.11.2012, 15:44 4
Я наверное слаб в этом... Так что должна делать "головная программа", ну примерно, что в ней должно быть?
0
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
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
15.11.2012, 17:04 6
Цитата Сообщение от Anna1993 Посмотреть сообщение
осталось дописать головную программу
То, что вы написали даже не откопмилируется, не говоря уже о других ошибках...
0
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
Обитатель форума
201 / 184 / 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
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
15.11.2012, 17:45 10
оно работает...
но КАК ???
0
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
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
15.11.2012, 17:59 13
фух слава богу а то я думал у меня компилятор сломался (mingw gcc)
0
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
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
15.11.2012, 18:05 15
тут по ходу косяк.
C++
1
2
3
4
5
bool Array::operator ==(Array&b)
{
    int i;
if (m = b.m)
    {
0
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
Обитатель форума
201 / 184 / 54
Регистрация: 28.10.2012
Сообщений: 543
15.11.2012, 18:11 17
= это знак присвоения.
сравнивать нужно таким знаком ==
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
15.11.2012, 18:14 18
у вас получается m присваиваем b.m и если поле m не равно 0 то выполняется условие.
вообще такие вещи в коде опытные люди проверяют регулярными выражениями по всему проекту.
так же как и конструкцию типа if (a==b); (точка с запятой в конце)
0
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
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
15.11.2012, 18:21 20
а что бы проверять верно или нет работает метод опытные люди пишут так называемые юнит-тесты. Это грубо говоря такие функции, которые проверяют, что на выходе даёт метод
я к тому что надо создать два одинаковых объекта и попробовать их сравнить
собственно ваш main наверно и должен быть похож на юнит тест
0
15.11.2012, 18:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2012, 18:21
Помогаю со студенческими работами здесь

Нужна любая программа с использованием собственного класса
Не слишком большая. Класс треугольник, комплексное число, любая геометрическая фигура да все равно...

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

Какая нужна комплектация для Учебного класса института на 10 мест для комфортной работы на лабораторных по информатике?
Посоветуйте какая нужна комплектация(наиболее частые применяемые программы,и исходя из этого...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru