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

Написать функцию is_equal() - поэлементное сравнение двух контейнера

02.10.2011, 23:33. Показов 4440. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
Реализуйте следующую функцию:
C++
1
bool is_equa1( const int*ia, int ia_size,const vector<int> &ivec );
Функция is_equal() сравнивает поэлементно два контейнера. В случае разного размера
контейнеров “хвост” более длинного в расчет не принимается. Понятно, что, если все
сравниваемые элементы равны, функция возвращает true, если отличается хотя бы
один – false. Используйте итератор для перебора элементов. Напишите функцию
main(), обращающуюся к is_equal().
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2011, 23:33
Ответы с готовыми решениями:

Поэлементное произведение элементов двух массивов
Написать программу, в которой объявляется три массива одинакового размера. Первые два массива...

Поэлементное сравнение двух массивов
даны 2 массива М1 и М2, состоящие из 9 байтовых элементов расположенных в памяти. Сравнить эти...

Поэлементное сравнение в матрице
Дана матрица W. Составить схему алгоритма, который, при поэлементном сравнении пар(четной и...

Реализовать поэлементное сравнение списков
Подскажите алгоритм,фичу,выход из положения.Веб приложенька есть 2 человека Заказчик и...

8
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
03.10.2011, 01:30 2
Цитата Сообщение от DD111 Посмотреть сообщение
ункция is_equal() сравнивает поэлементно два контейнера. В случае разного размера
контейнеров “хвост” более длинного в расчет не принимается.
Ну если как я понял типа такого.
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
#include <vector>
#include <iostream>
using namespace std;
 
template<typename T>
bool is_equal(const T* afirst, const T* alast, const T* bfirst, const T* blast) {
        do {
               if( *afirst != *bfirst )
                     return false;
        } while(++afirst != alast && ++bfirst != blast);
        return true;
}
 
int  main(void) {
   int arr1[5] = { 12, 2, 3, 1, 4 };
   int arr2[7] = { 12, 2, 3, 1, 4, 3, 2 };
   vector<int> v1(arr1, arr1 + 5);
   vector<int> v2(arr2, arr2 + 7);
 
   // сравнение двух векторов
   if(is_equal(v1.begin(), v1.end(), v2.begin(), v2.end())) 
          cout << "CMP VECTORS" << endl;
   else
          cout << "NOT VECTORS !!!" << endl;
 
    arr1[1]++;
    // сравнение двух массивов
    if(is_equal(arr1, arr1 + 5, arr2, arr2 + 7))
         cout << "CMP ARRAYS" << endl;
    else
         cout << "NOT ARRAY !!!" << endl;
 
   arr1[1]--;
   // сравнение вектора с массивом
   if(is_equal(v1.begin(), v1.end(), arr1, arr1 + 5))
         cout << "CMP VECTOR == ARRAY" << endl;
   else
         cout << "NOT !!!" << endl;
    
   // ну а если размеры векторов одинаковые зачем велосипед создавать
   if(v1 == v2)
        cout << "YES CMP v1 == v2" << endl;
   if(v1 != v2)
        cout << "NOT CMP v1 != v2" << endl;
 
   v1.clear();
   v2.clear();
   cin.get();
   return 0;
}
1
1 / 1 / 0
Регистрация: 02.10.2011
Сообщений: 5
03.10.2011, 18:56  [ТС] 3
Да,спс.Проблемма с компиляцией:
C++
1
2
3
4
CodeBlocks\Jhh.cpp||In function 'int main()':|
\CodeBlocks\Jhh.cpp|21|error: no matching function for call to 'is_equal(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >)'|
\CodeBlocks\Jhh.cpp|35|error: no matching function for call to 'is_equal(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int [5], int*)'|
||=== Build finished: 2 errors, 0 warnings ===|
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
03.10.2011, 20:09 4
не совсем правильно.
во 1-х звёздочки в заголовке функции надо убрать, и во 2-х тут тип фиктивный только один - Т. а ведь типы итераторов 1-ой и 2-ой последовательностей могут и не совпадать.

http://www.cplusplus.com/refer... thm/equal/
вот тут есть пример реализации.
1
1 / 1 / 0
Регистрация: 02.10.2011
Сообщений: 5
07.10.2011, 17:41  [ТС] 5
Так можно?
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
#include <vector>
#include <iostream>
using namespace std;
bool is_equal(const int *ia; int ia_size;const vector<int>vec()){
if(ia >vec){
while(ia > vec)
ia--;
if(ia==vec){
return true;
cout<<"true"<<endl;}
else
return false;
cout<<"false"<<endl;
}
if(ia<vec){
while(ia<vec)
vec--;
if(ia==vec){
return true;
cout<<"true"<<endl;}
else
return false;
cout<<"false"<<endl;}
if (ia==vec){
return true;
cout << "true"<<endl;
}}
В чем ошибки?
C++
1
2
3
\CodeBlocks\vecrealization.cpp|4|error: expected ')' before ';' token|
\CodeBlocks\vecrealization.cpp|4|error: expected initializer before ')' token|
||=== Build finished: 2 errors, 0 warnings ===|
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.10.2011, 18:42 6
Цитата Сообщение от DD111 Посмотреть сообщение
Так можно?
нельзя!

Добавлено через 34 секунды
ибо это
Цитата Сообщение от DD111 Посмотреть сообщение
if(ia >vec)
бред, как и остальной код
1
1 / 1 / 0
Регистрация: 02.10.2011
Сообщений: 5
09.10.2011, 16:06  [ТС] 7
Задание:Реализуйте операции инкремента/декремента для типа copmlex<double>и выполните программу:
C++
1
2
3
4
5
6
7
8
#include <complex>
#include <iostream>
// определения операций...
int main(){
complex<double>cval(4.0,1.0)
cout<<cval<<endl;
cval++
cout<<cval<<endl;
Нужна помощь! Нужно реализовать operator++(double)?


Хоть и не то, но сделал так и программа не скомпилировалась:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using namespace std;
#include <complex>
#include <iostream>
template <class X>
//постфиксный инкремент
X incPost (X &x,X &amp)
{
X val = x;
x = x+1;
return val;
}
int main(){
complex<double>cpx(4.0,1.0 );
cout<<cpx<<endl;
cpx.incPost;// прохождение инкремента по вещественной части.
cout<<cpx<<endl;
}
1
DD111
13.10.2011, 19:49  [ТС]
  #8
 Комментарий модератора 
2.14 Чтобы "поднять" тему в разделе и поиске по форуму, используйте осмысленные сообщения, например "Тема/проблема/задача актуальна". Если вы чего-то достигли в решении проблемы на этот момент, сообщите об этом
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
13.10.2011, 22:50 9
хз как-то так
C++
1
2
3
4
5
6
7
8
9
10
template <class T>
std::complex<T> operator++(std::complex<T>& c, int not_used) {
 
    std::complex<T> t(c);
 
    c.imag(c.imag()+1);
    c.real(c.real()+1);
 
    return t;
}
декремент то же самое.

префиксный там еще проще.
1
13.10.2011, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2011, 22:50
Помогаю со студенческими работами здесь

Поэлементное перемножение элементов двух массивов
здравствуйте, не нашел похожей темы, если повтор, то прошу прощения вопрос: как перемножить...

Написать традиционную функцию умножения двух чисел, и функцию использующую только операцию сложения
#include &lt;stdio.h&gt; #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;stdlib.h&gt; #include...

Поэлементное соединение двух массивов строк с удалением повторяющихся элементов
Например есть два массива: char A = {&quot;abcdefghi&quot;}; char B = {&quot;ihgfedcba&quot;}; В результате...

Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в качестве параметров
Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в...


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

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