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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
DD111
1 / 1 / 0
Регистрация: 02.10.2011
Сообщений: 5
02.10.2011, 23:33     Написать функцию is_equal() - поэлементное сравнение двух контейнера #1
C++
Реализуйте следующую функцию:
C++
1
bool is_equa1( const int*ia, int ia_size,const vector<int> &ivec );
Функция is_equal() сравнивает поэлементно два контейнера. В случае разного размера
контейнеров “хвост” более длинного в расчет не принимается. Понятно, что, если все
сравниваемые элементы равны, функция возвращает true, если отличается хотя бы
один – false. Используйте итератор для перебора элементов. Напишите функцию
main(), обращающуюся к is_equal().
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 23:33     Написать функцию is_equal() - поэлементное сравнение двух контейнера
Посмотрите здесь:

C++ Написать функцию, которая вычисляет сопротивление двух резисторов
Написать функцию, вычисляющую произведение двух матриц C++
Написать функцию которая проверяет кратность двух чисел C++
Написать функцию, которая вычисляет сопротивление двух резисторов C++
C++ Написать функцию, вычисляющую произведение двух матриц
Написать функцию, которая возвращает максимальное из двух чисел, которые переданы в функцию в качестве параметров C++
C++ Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в качестве параметров
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
03.10.2011, 01:30     Написать функцию is_equal() - поэлементное сравнение двух контейнера #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;
}
DD111
1 / 1 / 0
Регистрация: 02.10.2011
Сообщений: 5
03.10.2011, 18:56  [ТС]     Написать функцию is_equal() - поэлементное сравнение двух контейнера #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 ===|
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
03.10.2011, 20:09     Написать функцию is_equal() - поэлементное сравнение двух контейнера #4
не совсем правильно.
во 1-х звёздочки в заголовке функции надо убрать, и во 2-х тут тип фиктивный только один - Т. а ведь типы итераторов 1-ой и 2-ой последовательностей могут и не совпадать.

http://www.cplusplus.com/reference/algorithm/equal/
вот тут есть пример реализации.
DD111
1 / 1 / 0
Регистрация: 02.10.2011
Сообщений: 5
07.10.2011, 17:41  [ТС]     Написать функцию is_equal() - поэлементное сравнение двух контейнера #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 ===|
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.10.2011, 18:42     Написать функцию is_equal() - поэлементное сравнение двух контейнера #6
Цитата Сообщение от DD111 Посмотреть сообщение
Так можно?
нельзя!

Добавлено через 34 секунды
ибо это
Цитата Сообщение от DD111 Посмотреть сообщение
if(ia >vec)
бред, как и остальной код
DD111
1 / 1 / 0
Регистрация: 02.10.2011
Сообщений: 5
09.10.2011, 16:06  [ТС]     Написать функцию is_equal() - поэлементное сравнение двух контейнера #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;
}
DD111
13.10.2011, 19:49  [ТС]
  #8
 Комментарий модератора 
2.14 Чтобы "поднять" тему в разделе и поиске по форуму, используйте осмысленные сообщения, например "Тема/проблема/задача актуальна". Если вы чего-то достигли в решении проблемы на этот момент, сообщите об этом
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2011, 22:50     Написать функцию is_equal() - поэлементное сравнение двух контейнера
Еще ссылки по теме:

C++ Написать встроенную функцию min () и обычную функцию imin (), которые возвращают меньшее из двух целых значений
C++ Поэлементное соединение двух массивов строк с удалением повторяющихся элементов
Написать функцию для сложения двух чисел C++
C++ Поэлементное произведение элементов двух массивов
C++ Создайте функцию strcmp – сравнение двух строк, учитывая регистр символов

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

Или воспользуйтесь поиском по форуму:
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.10.2011, 22:50     Написать функцию is_equal() - поэлементное сравнение двух контейнера #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;
}
декремент то же самое.

префиксный там еще проще.
Yandex
Объявления
13.10.2011, 22:50     Написать функцию is_equal() - поэлементное сравнение двух контейнера
Ответ Создать тему
Опции темы

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