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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.76
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
#1

Функция, возвращающая указатель на структуру - C++

22.09.2012, 21:37. Просмотров 4003. Ответов 15
Метки нет (Все метки)

Ребят помогите пожалуйста,как создать функцию возвращающую указатель на структуру,в общем задание звучит так:написать библиотеку для полиномов:сложение, вычитание,значение в точке.
я описываю структуру в header,массив коэффициентов и степень многочлена
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
#ifndef POLINOM_MODULE_H_INCLUDED
#define POLINOM_MODULE_H_INCLUDED
struct polinom
{
    double *massiv_koef;
    int stepen_m;
}
polinom *SummaPolinomov(polinom *a,*b);
 
#endif // POLINOM_MODULE_H_INCLUDED 
а в сpp пишу вот так-это пока только сложение 
 
polinom *SummaPolinomov(polinom *a,*b)
{polinom *c=new polinom[];
    if(*a.stepen_m>*b.stepen_m){
       *c.massiv_koef=new double[*a.stepen_m];
       for (int i=0;i<*b.stepen_m;i++){
           *c.massiv_koef[i]=*a.massiv_koef[i]+*b.massiv_koef[i];}
       for(int i=*b.stepen_m;i<*a.stepen_m;i++){
           *c.massiv_koef[i]=*a.massiv_koef[i];}
}
    else{
    *c.massiv_koef=new double[*b.stepen_m];
       for (int i=0;i<*a.stepen_m;i++){
           *c.massiv_koef[i]=*b.massiv_koef[i]+*a.massiv_koef[i];}
       for(int i=*a.stepen_m;i<*b.stepen_m;i++){
           *c.massiv_koef[i]=*b.massiv_koef[i];} };
           return c;}
что не так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2012, 21:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция, возвращающая указатель на структуру (C++):

Функция, возвращающая указатель на структуру - C++
Помогите пожалуйста понять в чем ошибка! Функция create должна возвращать указатель на структуру Vector #include &lt;iostream&gt; using...

Структура и функция, возвращающая указатель на структуру - C++
Добрый вечер! В чем проявляется особенность функции, если мы даем ей тип от имени структуры? (или как правильно называется такое...

Функция, возвращающая указатель - C++
Здравствуйте. Пускай есть класс Some_type и массив такого класса. Можно ли функцией Some_type* some_name (some_type) заполнять массив,...

Функция, возвращающая указатель - C++
Добрый вечер. Требуется написать программу, содержащую структуру вида type1 *имя(type2); т.е. функцию, которая принимает аргумент типа...

Функция, возвращающая указатель - C++
Нужно написать функцию, входящие параметры которой являются указателем на структуру. Заполнить в функции структуру (не важно). Возвратить...

Функция возвращающая указатель на int - C++
Не могу понять ошибки. // prata 7 pt to function.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
22.09.2012, 21:53 #2
C++
1
2
3
4
5
6
polinom *SummaPolinomov(polinom *a,*b)
{
//...
   if(*a.stepen_m>*b.stepen_m)
// ...
}
Если вы используете указатели на структуры, то для обращения к полям структуры не обязательно разыменовывать указатели. Лучше пользоваться оператором -> вот так:
C++
1
2
3
4
5
6
polinom *SummaPolinomov(polinom *a,*b)
{
//...
   if (a->stepen_m > b->stepen_m)
// ну ивезде по тексту поменять
}
А при той записи, как у вас, разыменовывается не указатель, а поле stepen_m, которое указателем не является, и, соответсвтенно, оператор разыменовывания к нему не применим.

По поводу возвращаемого значения - всё правильно.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
22.09.2012, 21:54 #3
Цитата Сообщение от Fissil Посмотреть сообщение
что не так?
для начала оформление исправте
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
22.09.2012, 21:54 #4
C++
1
*c.massiv_koef[i]=*a.massiv_koef[i]
Тут тоже должно быть так:
C++
1
c->massiv_koef[i] = a->massiv_koef[i]
0
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
22.09.2012, 22:18  [ТС] #5
Компилятор показывает ошибку в обьявлении функции и говорит
error: expected constructor, destructor, or type conversion before '*' token

Добавлено через 58 секунд
polinom *SummaPolinomov(polinom *a,*b)
ошибка в этой строке
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
22.09.2012, 22:21 #6
Цитата Сообщение от Fissil Посмотреть сообщение
polinom *SummaPolinomov(polinom *a,*b)
разумеется ошибка
*b это кто???
может все таки
C++
1
polinom *SummaPolinomov(polinom *a,polinom *b)
0
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
22.09.2012, 22:23  [ТС] #7
Никакой разницы,все равно
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
22.09.2012, 22:32 #8
т.е ты хочешь сказать что
Цитата Сообщение от Fissil Посмотреть сообщение
polinom *SummaPolinomov(polinom *a,*b)
и
Цитата Сообщение от ValeryS Посмотреть сообщение
polinom *SummaPolinomov(polinom *a,polinom *b)
Это одно и тоже?
0
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
22.09.2012, 22:36  [ТС] #9
нет в смысле ошибка та же самая
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
22.09.2012, 22:43 #10
нет в смысле ошибка та же самая
Ошибка у тебя из-за того, что после определения структуры точку с запятой не поставил.
1
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
22.09.2012, 23:01  [ТС] #11
Блин,спасибо огромное=))

Добавлено через 1 минуту
А нет,все равно пишет,что перед * ожидался идентификатор

Добавлено через 3 минуты
Нет все равно пишет,только теперь header
error: expected identifier before '*' token|
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
22.09.2012, 23:04 #12
Говорили же.
C++
1
polinom *SummaPolinomov(polinom *a,*b)
А надо:
C++
1
polinom *SummaPolinomov(polinom *a,polinom*b)
Добавлено через 1 минуту
А сама функция должна быть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
polinom *SummaPolinomov(polinom *a,polinom*b)
{
    polinom *c=new polinom[];
    if (a->stepen_m > b->stepen_m)
    {
        c->massiv_koef=new double[a->stepen_m];
        for (int i=0;i<b->stepen_m;i++){
            c->massiv_koef[i]=a->massiv_koef[i]+b->massiv_koef[i];}
        for(int i=b->stepen_m;i<a->stepen_m;i++){
            c->massiv_koef[i]=a->massiv_koef[i];}
    } else
    {
        c->massiv_koef=new double[b->stepen_m];
        for (int i=0;i<a->stepen_m;i++)
            c->massiv_koef[i]=b->massiv_koef[i]+a->massiv_koef[i];
        for(int i=a->stepen_m;i<b->stepen_m;i++)
            c->massiv_koef[i]=b->massiv_koef[i];
    };
    return c;
}
1
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
22.09.2012, 23:06  [ТС] #13
Да-Да я абсолютно все исправил,в обычном проекте работает,а когда в библиотеке то нет
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
22.09.2012, 23:08 #14
Цитата Сообщение от Fissil Посмотреть сообщение
в обычном проекте работает,а когда в библиотеке то нет
Что ты имеешь ввиду под "обычным проектом" и "библиотекой"?
1
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
22.09.2012, 23:10  [ТС] #15
Все-все,я разобрался,спасибо вам большое,я просто еще совсем нуб в проганье))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2012, 23:10
Привет! Вот еще темы с ответами:

Функция, возвращающая указатель на функцию - C++
Всем привет, Мне нужно создать функцию, которая будет возвращает указатель на функцию. Я создам массив указателей на функцию, присвою...

Функция, возвращающая умный указатель - C++
Здравствуйте, помогите пожалуйста создать функцию, возвращающую умный указатель. Мой вариант не рабочий: class InterfaceVideo{ public:...

Функция, возвращающая указатель на двумерный массив - C++
Добрый день! Столкнулся с конструкцией которую раньше не видел, и не до конца понимаю что это и как работает: #include &lt;stdio.h&gt; ...

Рекурсивная функция, возвращающая указатель на объект - C++
Есть рекурсивная функция (заполняющая двоичное дерево) Node* fill(int i){ //Возвращаемое значение ????? Node node(lines.key);...


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

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

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