IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Задача на одномерные массивы, С++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста решить задачу:

Дано два массива А и В целых чисел.
Вычислить одномерный массив С, который содержит элементы массива А в одном экземпляре, которые присутствуют в массиве В.

Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Что вызывает затруднение ? Алгоритм или реализация ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Реализация, алгоритм в принципе понятен.
Я с С++ не дружу.
Алгоритм мне видится таким:
Выбираем i элемент массива А.
Проверяем все элементы (кроме i) на совпадение с i.
Если по результату просмотра kol=0, тогда
просматриваем массив В, если kol2 = 1, то c[d]:=a[i]; d:=d+1;

Код что-то типа такого, писал из головы, на работоспасобность не проверял.
Нужно тоже самое в С++.

Код

for i:=1 to n do begin
kol:=0;
for j:=1 to m do begin
if (i<>j) and (a[i]=a[j]) then kol:=kol+1;
end;
if (kol=0) then
    begin
    kol2:=0;
    for (k:=1) to t do
       begin
       if (a[i]=b[k]) then kol2:=kol2+1;
       end;
if kol2:=1 then begin c[d]:=a[i]; d:=d+1; end;
    end;
end;


Сообщение отредактировано: Дмитрий -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


мне кажется ты (или я) не совсем верно понял задание

мой вариант таков:

идем по массиву A, берем очередной элемент A[i]
просматриваем массив С, если в нем нету элемента равного A[i], то
просматриваем массив B, если в нем есть элемент равный A[i], то
добавляем A[i] в C


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Хмм... Мне кажется задание таково:
Берем очередной элемент массива А, если он единственный в массиве А, то смотрим массив В, если элемент А[i] есть в В, то добавляем в С.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Дмитрий, уточняй задание... Здесь неоднозначность:
Цитата
Вычислить одномерный массив С, который содержит элементы массива А в одном экземпляре, которые присутствуют в массиве В.
Выделенный текст куда относится? Можно прочесть так, как сказал ты, но можно - так, как сказал klem4...

Так что надо точно узнать, искать ли единственные экземпляры массива A, и сохранять их в C (если они есть в B), или брать любые элементы массива A, и сохранять их в С в единственном экземпляре... Это - разные вещи:

A = (1, 2, 3, 1, 4, 5)
B = (1, 2, 3)
C будет равно (2, 3) по первому варианту, или (1, 2, 3) по второму...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


В массиве А у нас содержится элемент в 1м экземпляре. Проверяем, есть ли он в В, если есть, то заносим в С (первый вариант из тех что Вы предложили).
A = (1, 2, 3, 1, 4, 5)
B = (1, 2, 3)

С=(2,3)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста, мне завтра уже сдавать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Сделал вот такое, но оно не работает =((( Выводит фигню какую-то.
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int d,t,i,j,k,n,m,f,a[10],b[10],kol,c[10],kol2;
cout << "Enter length A:";
cin >> n;
for (i=0;i<=(n-1);i++)
{
cout << (i+1) << ':';
cin >> a[i];
}
cout << "Enter length B:";
cin >> m;
for (j=0;j<=(m-1);j++)
{
cout << (j+1) << ':';
cin >> b[j];
}
f=0;
for (k=0;k<=(n-1);k++)
{
kol=0;
for (d=0;d<=(n-1);d++)
{
if (a[k]=a[d])
{
if (k!=d)
{
kol=kol+1;
}
}
}
kol2=0;
if (kol=0)
{
for (t=0;t<=(m-1);t++)
{
if (a[k]=b[t])
{
kol2=kol2+1;
}
}
if (kol2=1)
{
c[f]=a[k];
f++;
}

}
}
for (i=0;i<=m;i++)
{
cout << c[i];
}

}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






#include <iostream>

int main() {
const int size_a = 6;
const int size_b = 3;
int a[size_a] = {1, 2, 3, 1, 4, 5};
int b[size_b] = {1, 2, 3};

int c[size_a], size_c = 0;

for(int i = 0; i < size_a; ++i) {
int count = 0;
for(int j = 0; j < size_a; ++j)
count += (a[i] == a[j]) ? 1 : 0;

if(count == 1) {
for(int j = 0; j < size_b; ++j) {
if(a[i] == b[j]) {
c[size_c++] = a[i];
}
}
}
}

for(int i = 0; i < size_c; ++i)
std::cout << c[i] << " ";
std::cout << std::endl;
return 0;
}

 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Спасибо. А это под какой С++? У меня в борланде не делается...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Это под GCC... Какой Borland у тебя? У меня из борландов есть только Builder (я думаю, программа должна пойти без изменений), и досовский Turbo C 3.0
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


У меня Borland C++ 3.1. Досовский еще. Программа работает в Visual C++ . Попробую экзешник показать, под "дурочку" закосить. Огромное спасибо за помощь =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Для досовского компилятора надо немного подправить:


Прикрепленные файлы
Прикрепленный файл  05.CPP ( 658 байт ) Кол-во скачиваний: 158
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Огромное спасибо =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.01.2021 13:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name