Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/23: Рейтинг темы: голосов - 23, средняя оценка - 4.74
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
1

Функция для сравнения двух массивов

05.10.2012, 01:00. Просмотров 4318. Ответов 9
Метки нет (Все метки)

Функция нужна для ответа на вопрос задачи "Верно ли, что все элементы 1-ой последовательности
входят во 2-ю последовательность." помогите пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2012, 01:00
Ответы с готовыми решениями:

Функция для сравнения двух символьных последовательностей
С помощью поинтеров напишите функцию для сравнения двух символьных...

Организация цикла сравнения значений элементов двух массивов
Надо, чтобы программа сравнивала РАЗНЫЕ элементы ОДНОГО МАССИВА. Например, со ...

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

Функция сравнения двух чисел
Проверьте кто-нибудь код пожалуйста. Задача : Написать программу, выводящую...

Перегруженная функция сравнения двух дат
Как сократить функцию которая сравнивает две даты? Получилось кое-как, да и...

9
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:11 2
сама функция:
C++
1
2
3
4
5
6
7
8
9
10
std::string compareArray ( int* mas_a, int* mas_b) {
   bool flag;
   for ( int i = 0; i < mas_a.size() - 1; i ++ ) {
       flag = false;
       for ( int j = 0; j < mas_b.size() - 1; j ++ ) {
             if ( mas_a[i] == mas_b[j] ) { flag = true; break; }
             if (flag == false)  return "NO!"; 
        }
   return "YES!";
}

вызывать:
C++
1
std::cout << comapreArray(array1, array2); // где: array1 - имя массива 1; array2 - имя массива 2
1
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
05.10.2012, 01:21  [ТС] 3
co6ak, что то у меня не получается, может поможете исправить код тогда
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
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int &n, int a[N])
{
    for (int i=0; i < n; ++i)
    {
        cout << "\na[" << i << "]=";
        cin >> a[i];
    }
}
void inMas2(int &m, int b[N])
{
    for (int j=0; j < m; ++j)
    {
        cout << "\nb[" << j << "]=";
        cin >> b[j];
    }
}
 
int compareArray ( int* a, int* b) {
   bool flag;
   for ( int i = 0; i < a.size() - 1; i ++ ) {
       flag = false;
       for ( int j = 0; j < b.size() - 1; j ++ ) {
             if ( a[i] == b[j] ) { flag = true; break; }
             if (flag == false)  return "NO!"; 
        }
   return "YES!";
}
 
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int i,n,m,a[N],b[N];
    int found;
    cout<<"\nвведите n =";
    cin>>n;
    cout<<"\nвведите m=";
    cin>>m;
    if(n<1)
    {
        cout<<"\nне правильно задана размерность массива (n<1)";
        return 0;
    }
    inMas1(n,a);
    inMas2(m,b);
    if(n>=1,m>=1)
    {
        if compareArray (a,b);
    }
cout<<endl<<endl;
cout<< flag<<endl;
 
}
пожалуйста
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:24 4
я написал функцию для динамических массивов.
убери звездочки
как вызывать я написал. не надо ифов
0
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
05.10.2012, 01:28  [ТС] 5
co6ak, все равно не работает(((
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:30 6
чо за ошибка то. напиши хоть текст. мне трудно ночью читать мысли
здается мне, нужно делать compareArray(array_a[N], array_b[M]);
так же дополнить саму функцию
0
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
05.10.2012, 01:33  [ТС] 7
co6ak, вот все ошибки
Error 3 error C2109: subscript requires array or pointer type d:\projects c++\для универа\задача алены lab2\задача алены lab2\lab2.cpp 29

Error 4 error C2109: subscript requires array or pointer type d:\projects c++\для универа\задача алены lab2\задача алены lab2\lab2.cpp 29

Error 1 error C2228: left of '.size' must have class/struct/union d:\projects c++\для универа\задача алены lab2\задача алены lab2\lab2.cpp 26

Error 2 error C2228: left of '.size' must have class/struct/union d:\projects c++\для универа\задача алены lab2\задача алены lab2\lab2.cpp 28

Error 5 error C2440: 'return' : cannot convert from 'const char [4]' to 'int' d:\projects c++\для универа\задача алены lab2\задача алены lab2\lab2.cpp 30

Error 6 error C2440: 'return' : cannot convert from 'const char [5]' to 'int' d:\projects c++\для универа\задача алены lab2\задача алены lab2\lab2.cpp 32

Error 7 error C2601: 'main' : local function definitions are illegal d:\projects c++\для универа\задача алены lab2\задача алены lab2\lab2.cpp 55
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:36 8
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
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int &n, int a[N])
{
    for (int i=0; i < n; ++i)
    {
        cout << "\na[" << i << "]=";
        cin >> a[i];
    }
}
void inMas2(int &m, int b[N])
{
    for (int j=0; j < m; ++j)
    {
        cout << "\nb[" << j << "]=";
        cin >> b[j];
    }
}
 
int compareArray ( int a[N], int n, int b[M], int m) {
   bool flag;
   for ( int i = 0; i < N; i ++ ) {
       flag = false;
       for ( int j = 0; j < M - 1; j ++ ) {
             if ( a[i] == b[j] ) { flag = true; break; }
             if (flag == false)  return "NO!"; 
        }
   return "YES!";
}
 
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int i,n,m,a[N],b[N];
    int found;
    cout<<"\nвведите n =";
    cin>>n;
    cout<<"\nвведите m=";
    cin>>m;
    if(n<1)
    {
        cout<<"\nне правильно задана размерность массива (n<1)";
        return 0;
    }
    inMas1(n,a);
    inMas2(m,b);
    if(n>0,m>0)
    {
        cout << compareArray(a, n, b, m);
    }
cout<<endl<<endl;
cout<< flag<<endl;
 
}
1
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
05.10.2012, 01:43  [ТС] 9
co6ak, 7 ошибка почему то ни как не убирается
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:45 10
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
#include <iostream>
#include <string>
 
void arrayInput (int*, int);
void arrayPrint (int*, int);
std::string compareArrays (int* , int , int* , int );
 
int main()
{
    int*    mas_a;
    int     size_a;
    std::cout << "Enter size of array A: ";
    std::cin  << size_a;
        mas_a = new int [size_a];
    int*    mas_b;
    int     size_b;
        mas_b = new int [size_b];
    std::cout << "\nEnter size of array B: ";
    std::cin  >> size_b;
    arrayInput(mas_a,size_a);
    arrayInput(mas_b,size_b);
    arrayPrint(mas_a,size_a);
    arrayPrint(mas_b,size_b);
    std::cout << compareArrays(mas_a, size_a, mas_b, size_b);
    std::cin.get();
    return 0;
}
 
void arrayPrint (int* mas, int size) {
    std::cout << std::endl;
    for ( int i = 0; i < size; i ++ )
        std::cout << mas[i] << " ";
}
 
void arrayInput (int* mas, int size) {
    for ( int i = 0; i < size; i ++ )
        std::cin >> mas[i];
}
 
std::string compareArray ( int* mas_a, int size_a, int* mas_b, int size_b) {
   bool flag;
   for ( int i = 0; i < size_a; i ++ ) {
       flag = false;
       for ( int j = 0; j < size_b; j ++ ) {
             if ( mas_a[i] == mas_b[j] ) { flag = true; break; }
             if (flag == false)  return "NO!"; 
        }
   return "YES!";
}
поправил опечатки. должно работать
1
05.10.2012, 01:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2012, 01:45

Юнит тест для сравнения массивов
Здраствуйте, Есть сортировка выбором void selection(int *y,int n) { int o;...

Перегрузка оператора сравнения (==) для массивов
Имеется класс-массив. Нужно сравнить два массива при помощи перегрузки...

Функция умножения двух массивов
Даны два массива символов a и b (состоят из цифр), репрезентирующие два целых...


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

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

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