C++, массивы

Ответить
lnter
Сообщения: 12
Зарегистрирован: 20 окт 2008, 16:44

20 окт 2008, 16:50

Уважаемые программисты, пожалуйста, помогите решить такую вот задачку!
Задача:
Даны два массива натуральных чисел A(m) и B(n). Найти наибольший элемент в массиве A, которого нету в массиве B.
Заранее, большое спасибо!
markofka
Сообщения: 6
Зарегистрирован: 20 окт 2008, 17:02
Контактная информация:

20 окт 2008, 19:07

Код: Выделить всё

#include <iostream>
using namespace std;
void main()
{
const int len_a=5,len_b=5;    //размерность массивов
int mas_a [len_a]={1,2,5,4,6};
int mas_b [len_b]={5,6,3,7,2};

int i,k;
for(i=0,k=0;i<len_a-1;i++)    //сортировка массива А по убыванию
{
    k=i;
    for(int j=i+1;j<len_a;j++)
        if(mas_a[j]>mas_a[k])k=j;
    
    int temp=mas_a[k];
    mas_a[k]=mas_a[i];
    mas_a[i]=temp;
}

bool fl;    //флаг указывает было совпадение элементов 
for(i=0;i<len_a;i++)    //берем первый элемент массива А (т.к. он самый большой потому чтомассив отсортирован)
{                        //сравниваем его поочередно с элементами массива Б
    fl=0;
    for(int j=0;j<len_b;j++) //перебор элементов массива Б
    {
        if(mas_a[i]==mas_b[j]) // сравниваем элементы
        {
            fl=1;    //указываем что рассматриваемые эл-ты совпали
            break;    //выходим из цикла выборки эл-тов массива Б 
        }

    }
    if (fl==0) break;    //если мы перебрали все эл-ты массива Б и не совпадений 
                        //не обнаруженно то мы нашли наше число и выходим из 
                        //цикла выборки эл-тов массива А 
}
if(fl)cout<<"not find"<<endl;    //если флаг==1 значит все элементы массива А присутствовали в массиве Б
else cout<<"find "<<mas_a[i]<<endl;    // если флаг==0 значит элемент по индексу и есть искомое

cin.get();    //нажми ENTER
} 
помню сам начинал с таких же примеров
эх! молодость! :D
Albor
Сообщения: 482
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

20 окт 2008, 22:55

А если использовать STL, то будет понятнее и проще :)

Код: Выделить всё

 
#include"iostream"
#include "algorithm"
using namespace std;
void main()
{ 
const int len_a=5,len_b=7; //размерность массивов 
int mas_a [len_a]={1,2,5,4,6}; 
int mas_b [len_b]={5,6,3,7,2,10,12};
//для работы алгоритма set_difference, массивы должны быть отсортированы
sort(mas_a,mas_a+len_a);
sort(mas_b,mas_b+len_b);
int mas_result[len_a];//результирующий массив,
// set_difference поместит в результирующий массив mas_result все элементы mas_a, не встречающиеся в mas_b
// и вернёт указатель на ячейку за последним значением в результирующем массиве.
// поскольку mas_result будет отсортирован, то нужное нам значение будет в предыдущей ячейке 
cout<<"Result: "<<*(set_difference(mas_a, mas_a+len_a,mas_b,mas_b+len_b,mas_result)-1)<<endl;
}
Sager
Сообщения: 1
Зарегистрирован: 25 май 2010, 19:13

25 май 2010, 19:21

Не хочу создавать новую тему и поэтому спрошу в этой. Помогите написать программу в С++ (желательно с комментариями что делает каждая строка если не затруднит) пропустил по болезни почти всё начало изучение С++ а с преподом не оч хорошие отношения пытался разобраться сам вроде все команды по отдельности понятны, а собрать в общую кучу не могу=(
собственно сама программа
Дан массив А(5 х 5). Определить сколько нулевых элементов находится в столбце с заданным номером.
Заранее спасибо.
Ответить