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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
Yakov112
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 69
05.10.2012, 01:00     Функция для сравнения двух массивов #1
Функция нужна для ответа на вопрос задачи "Верно ли, что все элементы 1-ой последовательности
входят во 2-ю последовательность." помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 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
Yakov112
0 / 0 / 0
Регистрация: 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;
 
}
пожалуйста
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:24     Функция для сравнения двух массивов #4
я написал функцию для динамических массивов.
убери звездочки
как вызывать я написал. не надо ифов
Yakov112
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 69
05.10.2012, 01:28  [ТС]     Функция для сравнения двух массивов #5
co6ak, все равно не работает(((
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:30     Функция для сравнения двух массивов #6
чо за ошибка то. напиши хоть текст. мне трудно ночью читать мысли
здается мне, нужно делать compareArray(array_a[N], array_b[M]);
так же дополнить саму функцию
Yakov112
0 / 0 / 0
Регистрация: 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
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 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;
 
}
Yakov112
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 69
05.10.2012, 01:43  [ТС]     Функция для сравнения двух массивов #9
co6ak, 7 ошибка почему то ни как не убирается
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2012, 01:45     Функция для сравнения двух массивов
Еще ссылки по теме:

C++ Функция умножения двух массивов
Шаблонная функция, складывающая элементы двух массивов C++
Юнит тест для сравнения массивов C++

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

Или воспользуйтесь поиском по форуму:
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 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!";
}
поправил опечатки. должно работать
Yandex
Объявления
05.10.2012, 01:45     Функция для сравнения двух массивов
Ответ Создать тему
Опции темы

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