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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
Mrs_Black
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 8
#1

Создание структуры. - C++

26.03.2009, 12:53. Просмотров 2033. Ответов 11
Метки нет (Все метки)

Помогите разобраться с задачей..
Создайте структуру – vector. Структура должна содержать
поинтер к типу long double и число координат точки. Определите функции: инициализации
(посредством динамического распределения памяти) и уничтожения (освобождение памяти)
вектора, установки и модификации количества координат, доступа к координатам, вычисления
длины вектора. В функции main(), для двух векторов вычислите
длину и среднее арифметическое 2-х максимальных величин
до и после модификации какой-либо из координат этих точек.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2009, 12:53     Создание структуры.
Посмотрите здесь:

Создание структуры))) - C++
Нужна помощь и советы людей которые знают))) Помогите решить задачи! и дайте советы по быстрому изучению структур, указателей, сортировки...

Создание структуры - C++
Здравствуйте!!!Помогите написать практическую работу на тему "Создание структуры. Поиск информации из файла. Запись в файл. Чтение из...

Создание структуры - C++
Обьявить структуру "студент". Структура должна содержать фамилию, имя студента и его средний балл. Создать массив из 10 студентов (элементы...

Динамическое создание структуры - C++
У меня есть h файл в котором описаны структуры. Можно ли его подключить к проекту динамически? То есть сейчас я подключаю этот файл,...

Создание структуры программы - C++
Приветствую всех! Подскажите такой вопрос: имеется граф из 5 вершин, где вершина представляет собой некий город. Между городами...

Создание структуры Date - C++
Всем привет! Задание такое: //Объявите структуру Date, которая должна содержать данные, необходимые для решения следующей задачи: ...

Создание структуры Список студентов - C++
Нужна помощь. Есть в методичке пример создания Ведомости студентов. Код: #include <iostream.h> #include <stdio.h> #include <conio.h> ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
26.03.2009, 13:06     Создание структуры. #2
Вот ссылка как раз тема по векторам http://netlib.narod.ru/library/book0032/index.htm
книга Фрэнк Луна Введение в программирование трехмерных игр с DirectX 9.0Когда немного разберешся, задаш еще разок свой вопрос попробую ответить
Ирина 5555
608 / 57 / 0
Регистрация: 24.03.2009
Сообщений: 119
26.03.2009, 13:14     Создание структуры. #3
Очень нужно.Определить сумму и количество положительных элементов массива х(n).вывести полученное значение и массив.по программе бейсика.спасибо)
Mrs_Black
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 8
26.03.2009, 17:01  [ТС]     Создание структуры. #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
struct punct
{ int n; // кол-во координат
int *p; // поинтер к точке
1
};
void init(punct *v, int n) // инициализация точки
{ v->n = n; v->p = new int[n];
for( int i = 0; i < n; i++ )
v->p[i] = 0; }
void elib(punct *v) // уничтожение точки
{ delete [] v->p;
v->p = 0; v->n = 0; }
double dist(punct *v) // вычисл. расст. до нач. координат
{ long s = 0; double L=0;
for( int i = 0; i < v->n; i++ )
s+=(v->p[i])*(v->p[i]);
L = sqrt( (double)s );return L; }
int modif(punct *v, int n, int a) // модификация координаты с порядковым номером n
{ if( n <= v->n && n > 0 )
{ v->p[n-1] = a; return 1; }
return 0; }
int acces(punct *v, int n) // доступ к координате с порядковым номером n
{ return v->p[n-1]; }
// определение последней цифры произведения четных координат
int cifra(punct *M) {
unsigned long pr=1;
for( int i=0; i< M->n; i++ )
if( !(M->p[i] % 2) ) pr *= M->p[i];
return ( pr % 10 ); }
int main()
{ punct A;
int na,a; unsigned long cif;
double m;
cout << "Введите количество координат : ";
cin >> na; init(&A,na);
for(int i=1; i<=A.n; i++)
{ cout << "Введите координату " << i << ": ";
cin >> a; modif(&A,i,a); }
m=dist(&A);
cout << "Расстояние до начала координат: " << m << endl << endl;
cif = cifra(&A); if( cif != 1 )
cout << endl << "Последняя цифра произведения до модификации: " << cif << endl;
else cout << "Нет четных координат!" << endl;
cout << "Какую координату хотите менять ? ";
cin >> a;
if( a>0 && a<=A.n ) {
cout << "координата " << a << " равна " << A.p[a-1] << endl;
cout << "введите новое значение для координаты " << a << ": ";
cin >> A.p[a-1]; }
else cout << "Нет координаты с порядковым номером " << a << endl;
cif = cifra(&A); 
if( cif !=1 )
cout << endl << "Последняя цифра произведения после модификации: " << cif << endl;
else cout << "Нет четных координат!" << endl;
elib(&A); 
return 0; 
}
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
26.03.2009, 17:10     Создание структуры. #5
Имейтеуважениеклюдямпомогающимвамоформляйтекодчтобонбылчитабельным
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
26.03.2009, 19:50     Создание структуры. #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
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
#include <iostream>
#include <math.h>
using namespace std;
///////////////////////////////////////////////////////////////////////////////////
struct vector
{
int n; // кол-во координат
long double *p; // поинтер к точке
};
//// инициализация вектора
void init(vector *v, int n)
{
 v->n = n; v->p = new long double[n];
for( int i = 0; i < n; i++ )
 v->p[i] = 0;
}
//// уничтожение вектора
void elib(vector *v)
{
delete [] v->p;
 v->p = 0; v->n = 0;
}
// вычисл. длины вектора
long double dist(vector *v)
{
long double s = 0; long double L=0;
for( int i = 0; i < v->n; i++ )
 s+=(v->p[i])*(v->p[i]);
 L = sqrt( (long double)s );
return L;
}
// модификация вектора
int modif(vector *v, int n, long double a)
{
if( n <= v->n && n > 0 )
{
 v->p[n-1] = a;
return 1;
}
return 0;
}
// доступ к вектору 
long double acces(vector *v, int n)
{
return v->p[n-1];
}
int main()
{
 setlocale(LC_CTYPE,"Russian");//эта строчка для отображения кирилицы (если хочеш ее можно и убрать)
int na; // количество координат
long double a; //координаты вектора
long double m; //длина вектора
cout<< "Введите количество векторов : ";
int obg; //количество векторов
cin >> obg;
 vector *v=0;
for (int i=1; i<=obg;i++)
{
 vector *v=new vector[i];
cout << "Вектор : "<<i<< endl;
cout << "Введите количество координат : ";
cin >> na; init(v,na);
for(int j=1; j<=v->n; j++)
{
cout << "Введите координату " << j << ": ";
cin >> a; modif(v,j,a);
}
 m=dist(v);
cout << "Длина вектора: " << m << endl << endl;
}
cout << "Какой вектор вы хотите изменить ? ";
int x;
cin >> x;
if( x>0 && x<=obg )
{
cout << "Изменение вектора : "<<x<< endl;
cout << "Какую координату хотите менять ? ";
cin >> na;
if( na>0 && na<= v->n )
{
cout << "координата " << na << " равна " << v->p[na-1] << endl;
cout << "введите новое значение для координаты " << na << ": ";
cin >> v->p[na-1];
}
else cout << "Нет координаты с порядковым номером " << na << endl;
}
else cout << "Нет такого вектора " << x << endl;
return 0;
}
В принципе работает:
1) задается количество векторов;
2) задается количество координат;
3) вычисляется длина вектора;
4) выбирается какой вектор мы хотим изменить;
5) выбирается какую координату нужно изменить;
а вот дальше выдается ошибка.
Пока не разобрался в чем причина, может кто-то и найдет ошибку, самому интересно.
Если что завтра буду разбираться.
, но когда доходит дело до изменения координат в нужном векторе

Добавлено через 26 минут 27 секунд
Я понял в чем ошибка, завтра исправлю.
Mrs_Black
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 8
27.03.2009, 09:25  [ТС]     Создание структуры. #7
приветик!пасиб за помощь а что на счет "среднее арифметическое 2-х максимальных величин
до и после модификации какой-либо из координат этих точек"???

плиз
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
27.03.2009, 09:50     Создание структуры. #8
Программу я хотел сделать, чтоб можно было создавать динамически массив векторов (это наверное неплохо, но я еще не настолько разбираюсь в программировании ). Ошибка, в том что я определил динамический массив векторов в одном цикле (и у меня получается локальный тип), его невидно дальше после цикла в функции main(). Поэтому когда нужно изменить какой то из векторов программа не работает. Попробуй сделать совсем просто, создай 2 объекта:
vector A, B;
//инициализируй каждый из них
// вычисли длину
//найди среднее арифметическое 2-х максимальных величин
//изменение параметров вектора
//найди среднее арифметическое 2-х максимальных величин
//уничтожение (освобождение памяти) вектора
//конец програмы
Mrs_Black
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 8
27.03.2009, 10:08  [ТС]     Создание структуры. #9
приветик еще раз!если б я так плохо разбиралась как ты то наверное сама бы все сделала!если честно то мне и с двумя векторами сложно поэтому плиз помоги мне !
ъмне нужно очень нужно просто сдать эту прогу
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
27.03.2009, 15:24     Создание структуры. #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
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <iostream>
#include <math.h>
using namespace std;
///////////////////////////////////////////////////////////////////////////////////
struct vector
{
int n; // кол-во координат
long double *p; // 
}*LPVECTOR;
//// инициализация вектора
void init(vector *v, int n)
{
 v->n = n; v->p = new long double[n];
for( int i = 0; i < n; i++ )
 v->p[i] = 0;
}
//// уничтожение вектора
void elib(vector *v)
{
delete [] v->p;
 v->p = 0; v->n = 0;
}
// вычисл. длины вектора
long double dist(vector *v)
{
long double s = 0; long double L=0;
for( int i = 0; i < v->n; i++ )
 s+=(v->p[i])*(v->p[i]);
 L = sqrt( (long double)s );
return L;
}
// модификация координаты с порядковым номером n
int modif(vector *v, int n, long double a)
{
if( n <= v->n && n > 0 )
{
 v->p[n-1] = a;
return 1;
}
return 0;
}
// доступ к координате с порядковым номером n
long double acces(vector *v, int n)
{
return v->p[n-1];
}
int main()
{
 setlocale(LC_CTYPE,"Russian");//эта строчка для отображения кирилицы (если хочеш ее можно и убрать)
int na; // количество координат
long double a; //координаты вектора
long double m; //длина вектора
 vector A, B;
char num = 1;
while(num)
{
cout<<"Выберите операцию и введите число"<<endl<<endl;
cout<<"Инициализация векторов - 1"<<endl;
cout<<"Текущие параметры векторов - 2"<<endl;
cout<<"Вычисление длины векторов - 3"<<endl;
cout<<"Среднее ар.2-х макс. величин - 4"<<endl;
cout<<"Для модификации вектооров - 5"<<endl;
cout<<"Завершение програмы - 6"<<endl;
cout<<"---------------------------------"<<endl;
cin>>num;
switch (num)
{
case '1'://инициализация вектора (посредством динамического распределения памяти)
{
cout << "Введите количество координат для векторов A и B: ";
cin >> na; init(&A,na); init(&B,na); cout <<endl;
cout << "Вектор А"<<endl;
for(int i=1; i<=A.n; i++)
{ cout << "Введите координату " << i << ": ";
cin >> a; modif(&A,i,a); }
cout <<endl;
cout << "Вектор B"<<endl;
for(int i=1; i<=B.n; i++)
{ cout << "Введите координату " << i << ": ";
cin >> a; modif(&B,i,a); }
//break;
}
case '2': //текущее состояние вектора
{
cout<<endl;
cout<<"Вектор А :"<<endl;
for(int i=1; i<=A.n; i++)
{
cout << i<<"-я координата =" <<A.p[na-1] << ";"<<endl;
}
cout<<endl;
cout<<"Вектор B :"<<endl;
for(int i=1; i<=B.n; i++)
{
cout << i<<"-я координата =" <<B.p[na-1] << ";"<<endl;
}cout<<endl;
break;
}
case '3'://Вычисление длины вектора
{
 m=dist(&A);
cout << "Длина вектора A: " << m << endl;
 m=dist(&B);
cout << "Длина вектора B: " << m << endl;
break;
}
case '4': //среднее арифметическое 2-х максимальных величин 
{
//код для нахождения среднего арифметического 2-х максимальных величин
break;
}
case '5': //модификация вектора
{
cout<<"Какой вектор хотите изменить ? "<<endl;
cout<<"Вектор А - 1 "<<endl;
cout<<"Вектор В - 2 "<<endl;
int i;
cin>>i;
switch (i)
{
case 1:
{
cout << "Какую координату из "<<na<<" хотите менять ? ";
cin >> na;
if( na>0 && na<=A.n ) {
cout << "координата " << na << " равна " << A.p[na-1] << endl;
cout << "введите новое значение для координаты " << na << ": ";
cin >> A.p[na-1]; }
break;
}
case 2:
{
cout << "Какую координату хотите менять ? ";
cin >> na;
if( na>0 && na<=B.n ) {
cout << "координата " << na << " равна " << B.p[na-1] << endl;
cout << "введите новое значение для координаты " << na << ": ";
cin >> B.p[na-1]; }
break;
}
}
break;
}
case '6'://завершение програмы
{
return '0';
}
}//switch (num)
}//while(num)
//уничтожение (освобождение памяти)векторов
 elib(&A);
 elib(&B);
return 0; //main()
}
Mrs_Black
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 8
27.03.2009, 15:45  [ТС]     Создание структуры. #11
pasib tebe ogromnoe!
daj ne znaiu kak otblagodariti a 4to ti bi mne posovetoval s moei problemoi s klassom
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2009, 15:50     Создание структуры.
Еще ссылки по теме:

Создание функции для структуры. - C++
Дана структура и массив структур. struct vedomost { char surname; //фамилия char otdel; //наименование отдела float zarplata;...

Создание структуры в заголовочном файле - C++
Доброго времени суток! Решил заняться разработкой приложений, сейчас делаю небольшую программу, библиотека SFML. Вопрос: Я создал...

Создание структуры, содержащей 16 битовых полей - C++
как? создать структуру? содержащую: 16 битовий полей шириной в один бит именами битовых полей являются буквы а-р спасибо ...

Создание дин массива для структуры - C++
программа для создания студентов и записывания их данных (фамилия оценка группа). структура: struct stud{ int qty; char...

Объявление и создание глобальной структуры в dll - C++
объявление я сделал в .h файле но так как структуру нужно создать то вопрос в каком файле это делать и где(проект win32, Visual studio...


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

Или воспользуйтесь поиском по форуму:
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
27.03.2009, 15:50     Создание структуры. #12
Так ты запустила, протестировала?
а что за проблема с классом?
Yandex
Объявления
27.03.2009, 15:50     Создание структуры.
Ответ Создать тему
Опции темы

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