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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
Yakov112
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 69
#1

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

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

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

Функция для сравнения двух символьных последовательностей - C++
С помощью поинтеров напишите функцию для сравнения двух символьных последовательностей ( без strcmp() ). плиз очень надо!

Функция сравнения двух чисел - C++
Проверьте кто-нибудь код пожалуйста. Задача : Написать программу, выводящую на экран результат сравнения двух чисел в виде: A=10 B=5:...

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

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

Юнит тест для сравнения массивов - C++
Здраствуйте, Есть сортировка выбором void selection(int *y,int n) { int o; for (int i = 0; i < n; ++i) { int pos = i; ...

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

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

Функция для сравнения файлов - C++
Даны два текстовый файла, состоящие из некоторого количества строк. Написать функцию для сравнения этих файлов. Помогите пожалуйста

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

Дружественная функция для сравнения строк - C++
По заданию надо написать дружественную функцию, к-рая бы выводила список студентов заданного факультета. Не понимаю как надо правильно...

Шаблонная функция, складывающая элементы двух массивов - C++
Как будет выглядеть протип шаблонной функции складывающей элементы двух массивов, исходя из предположения, что над типами этих элементов...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
05.10.2012, 01:45
Ответ Создать тему
Опции темы

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