С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 123
#1

После умножения очередей заполняется первый элемент очереди - C++

16.07.2014, 12:48. Просмотров 312. Ответов 9
Метки нет (Все метки)

пытаюсь умножить две очереди (первый элемент на все элементы второй очереди сложить и запихнуть в новую очередь) Но после такого умножения у меня заполняется первый элемент очереди а все остальные контейнеры принимают нулевое значение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Polynomial Polynomial::poly_mult (Polynomial *a , Polynomial *b){
  queue <int> t = a->get_coeff();
  queue <int> p = b->get_coeff();
  queue <int> result;
  int tmp,tp;
 while(!t.empty()){
      tmp=t.front(); t.pop();
    int temp=0;
      while(!p.empty()){
          tp=p.front(); p.pop();
          temp=temp+tp*tmp;
          tp=0;
      }
      result.push(temp);
    
  }
  Polynomial *polynom = new Polynomial(result.size()-1,0,result);
  return *polynom;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2014, 12:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос После умножения очередей заполняется первый элемент очереди (C++):

Удалить первый и последний элемент очереди - C++
Нужна программа которая будет удалять первый и последний элемент очереди.

Удалить первый нулевой элемент массива и добавить после каждого чётного элемента особый элемент - C++
Здравствуйте! Имеется такая задача: 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать...

Релизация очереди (первый пришел первый ушел) в классе - C++
Вот пытаюсь исправить ошибку в методе Рор(). Помоготе розобратся в чем проблема // Stack1.h #pragma once #include &lt;iostream&gt; ...

Вставить после каждого элемента очереди, который содержит заданную цифру, элемент x - C++
Здравствуйте, у меня есть задача, нужно в очередь вставить после каждого элемента, который содержит данную цифру вставить элемент x. Я не...

Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку - C++
Вставте в массив A(n*m) после строки, первый элемент которой отрицателен, нулевую строку. ( Я не умею добавлять строки вообще, т.к. об...

Добавить элемент в середину очереди, если число элементов четное, и после середины, если нечетное - C++
Задача: сделать обычную очередь, но с еще одним методом vip_push(int a), который добавляет элемент в середину очереди, если кол-во...

9
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
16.07.2014, 12:54 #2
C++
1
2
3
4
5
while(!p.empty()){
          tp=p.front(); p.pop();
          temp=temp+tp*tmp;
          tp=0;
      }
эта очередь после 1го прохода станет пустой, я так полагаю Вы задумывали не так)
и это
C++
1
2
Polynomial *polynom = new Polynomial(result.size()-1,0,result);
  return *polynom;
освобождаете потом память то? или нет?
лучше просто объект создавайте
1
FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 123
16.07.2014, 12:58  [ТС] #3
хотел создать метод который в конце создает новые объект вызывает при этом конструктор с этими параметрами

Добавлено через 1 минуту
не совсем пойму почему она станет пустой, как это можно обойти ?
0
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
16.07.2014, 13:00 #4
ну....начем с того что очередь не подразумевает доступа к 2ому и т.д элементам, следовательно - копировать и ее опустошать и так на каждой итерации
Цитата Сообщение от FloraWinx Посмотреть сообщение
хотел создать метод который в конце создает новые объект вызывает при этом конструктор с этими параметрами
а это разве будет не тоже самое?
C++
1
2
Polynomial polynom(result.size()-1,0,result);
  return polynom;
0
FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 123
16.07.2014, 13:04  [ТС] #5
получается после того как как я прошелся циклом, очередь стала пустой. спасибо понятно, осталось только переделать запихнуть все в массив.
0
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
16.07.2014, 13:06 #6
Цитата Сообщение от FloraWinx Посмотреть сообщение
Polynomial Polynomial:oly_mult (Polynomial *a , Polynomial *b)
и смысл далеть эту ф-цию членом класса? если она не использует объект у которого вызывается ф-ция...2 варианта сделать так
C++
1
2
3
4
5
6
7
Polynomial Polynomial::poly_mult (Polynomial *b)
{
queue <int> t = get_coeff();
  queue <int> p = b->get_coeff();
  queue <int> result;
///
}
или так
C++
1
2
3
4
5
6
7
8
9
10
11
12
classPolinomial
{
//
friend Polynomial Polynomial::poly_mult (Polynomial *a , Polynomial *b);
//
};
 
//
Polynomial poly_mult (Polynomial *a , Polynomial *b)
{
//реализация
}
Добавлено через 31 секунду
FloraWinx, массив....а что не вектор?
0
FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 123
16.07.2014, 13:14  [ТС] #7
Спасибо Вам огромное до меня дошло. Да , можно и вектором)
если она не использует объект у которого вызывается ф-ция
не сильно понял, нету смысла создавать метод класса если обьект не вызывает функцию?
0
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
16.07.2014, 14:03 #8
ну смотрет вот Вы создали объект
Polynomial obj1.
вызываете ф-цию
obj1.poly_mult(//тут параметры)
в ф-ции у Вас поля объекта obj1 не используются, поэтому я и предалагаю ф ц-ию передавать 1 параметр, а в качестве 2го класса будет объект у которого вызывается ф-ция, т.е obj1, или сделать ее френд чтобы вызывать без объекта
1
FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 123
16.07.2014, 23:27  [ТС] #9
переписал теперь в ячейках мусор
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
Polynomial Polynomial::poly_mult (Polynomial *a , Polynomial *b){
    
    queue <int> aa = a->get_coeff();
    queue <int> bb = b->get_coeff();
    queue <int> res ;
    
    int *array1 = new int [aa.size()];
    int *array2= new int [bb.size()];
 
    int v = aa.size(); 
    int w=  bb.size();
 
    for(int i=0;i<v;i++){
        array1[i]=aa.front(); aa.pop();
    }
 
    for(int i=0;i<w;i++){
        array2[i]=bb.front();bb.pop();
    }
 
    int tmp,temp;
 
    for(int i=0;i<v;i++){
        tmp=array1[i];
        int rese=0;
        for(int j=0;j<w;j++){
            temp=array2[j];
         rese=rese+temp*tmp;
        }
        res.push(rese);
    }
 
 
Polynomial *polynom = new Polynomial(res.size()-1,0,res);
  return *polynom;
}
Добавлено через 2 минуты
Хотя все работает, разобрался
0
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
17.07.2014, 14:12 #10
Цитата Сообщение от FloraWinx Посмотреть сообщение
Polynomial *polynom = new Polynomial(res.size()-1,0,res);
return *polynom;
уберите уже это!!!

C++
1
2
Polynomial polynom(res.size()-1,0,res); 
return polynom;
Добавлено через 1 минуту
C++
1
2
delete [] array1;
delete [] array2;
почему нет этого ?)
0
17.07.2014, 14:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2014, 14:12
Привет! Вот еще темы с ответами:

Вставить новую строку после строки, в которой находится первый встречный минимальный элемент - C++
Условие: В двумерном массиве, элементы которого - целые числа, произвести след. действия: Вставить новую строку после строки, в...

Массивы. Вставить новую строку после строки, в которой находится первый встречный минимальный элемент - C++
Условие: В двумерном массиве, элементы которого - целые числа, произвести след. действия: Вставить новую строку после строки, в...

Вывести содержимое списка в следующем порядке: первый элемент, последний элемент, второй элемент, предпоследни - C++
#include &lt;iostream&gt; #include &lt;list&gt; #include &lt;iterator&gt; void output(std::list&lt;int&gt; myList, std::list&lt;int&gt;::iterator iter1,...

Строки. Как найти в слове первый элемент? Второй элемент, последний элемент? - C++
как найти в слове первый элемент?Второй элемент,последний элемент.С помощью каких операторов это делается??


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

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

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