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

Вроде простенькая - C++

Восстановить пароль Регистрация
 
Eirene
Сообщений: n/a
25.04.2011, 18:46     Вроде простенькая #1
Задача
Данно 3 массива.Найти элементы которые есть в 1 массиве и нет в 2 и 3.

мой код

int mas1[6]={1,3,6,5,7,2};
int mas2[6]={1,10,11,7,2,12};
int mas3[6]={20,6,25,2,17,18};
int i;int j;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
if(mas1[i]!=mas2[j]||mas1[i]!=mas3[j]) решила сделать через логическое или Дальше не знаю что делать точнее понять не могу как записать результат этого вычисления.
мне предложили сделать через массивы т.е создать еще 2 массива и сравнивать 1 мас и 2 мас ;1 и 3;а результаты записывать в них

Добавлено через 1 минуту
только мне показалось слишком уж простовато,и нагромажденно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2011, 18:46     Вроде простенькая
Посмотрите здесь:

C++ Простенькая игра на С++
Простенькая БД на С++ C++
Простенькая задача C++
Простенькая Задачка C++
Простенькая процедура C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
25.04.2011, 19:17     Вроде простенькая #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int mas1[6]={1,3,6,5,7,2};
int mas2[6]={1,10,11,7,2,12};
int mas3[6]={20,6,25,2,17,18};
bool r=false;
for(int i=0;i<6;i++)
{
 r=false;
 for(int j=0;j<6;j++)
 {
  if((mas1[i]==mas2[j])||(mas1[i]!=mas3[j])) r=true;
 }
 if (!r) printf("%d ", mas1[i]); // выводим несовпадающий на экран
}
Sokolov
 Аватар для Sokolov
42 / 42 / 3
Регистрация: 04.01.2011
Сообщений: 125
25.04.2011, 19:46     Вроде простенькая #3
Вот тут по-моему чё-то не доброе ))
Цитата Сообщение от mimicria Посмотреть сообщение
C++
1
2
3
4
5
 {
  if((mas1[i]==mas2[j])||(mas1[i]!=mas3[j])) r=true;
 }
 
}
я думаю должно быть
C++
1
(mas1[i]==mas3[j])
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
25.04.2011, 20:19     Вроде простенькая #4
Цитата Сообщение от Sokolov Посмотреть сообщение
Вот тут по-моему чё-то не доброе ))

я думаю должно быть
C++
1
(mas1[i]==mas3[j])
Дада, просто скопировал не глядя
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
25.04.2011, 21:07     Вроде простенькая #5
mimicria, элементы в массивах не обязательно должны быть под одинаковым номером.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
int main (void)
{
    const int SIZE = 6;
    int MAS1[SIZE] = {1,3,6,5,7,2};
    int MAS2[SIZE] = {1,10,11,7,2,12};
    int MAS3[SIZE] = {20,6,25,2,17,18};
 
    for (int i = 0; i < SIZE; i++)
        if ((std::find (MAS2, MAS2 + SIZE, MAS1[i]) == MAS2 + SIZE) &&
            (std::find (MAS3, MAS3 + SIZE, MAS1[i]) == MAS3 + SIZE)) std::cout << MAS1[i] << " ";
 
    return 0;
}
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
25.04.2011, 21:14     Вроде простенькая #6
Цитата Сообщение от neske Посмотреть сообщение
mimicria, элементы в массивах не обязательно должны быть под одинаковым номером.
Для этого в условии стоит ||
При совпадении с любым элементом любого массива будет поднят флаг
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
25.04.2011, 21:21     Вроде простенькая #7
mimicria, нет, вы меня не поняли.
Вы сравниваете i-тый элемент 1 массива только с i-тым во 2 и 3. Чтобы неверно. Нужно сравнивать со всеми.

Добавлено через 1 минуту
C++
1
2
3
int MAS1[SIZE] = {1,3,6,5,7,2};
int MAS2[SIZE] = {1,10,11,7,2,12};
int MAS3[SIZE] = {20,6,25,2,17,18};
К примеру, ваша программа скажет, что 6, 7, 2 - тоже подходят, что не правда.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.04.2011, 06:29     Вроде простенькая #8
Цитата Сообщение от neske Посмотреть сообщение
mimicria, нет, вы меня не поняли.
Вы сравниваете i-тый элемент 1 массива только с i-тым во 2 и 3. Чтобы неверно. Нужно сравнивать со всеми.
Неет, это Вы не поняли...
i-тый элемент 1 массива сравнивается с j-тыми элементами массивов 2 и 3. Там 2 цикла
Eirene
Сообщений: n/a
26.04.2011, 07:35     Вроде простенькая #9
ругаеться на bool у меня Borland С++
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.04.2011, 08:13     Вроде простенькая #10
Цитата Сообщение от Eirene Посмотреть сообщение
ругаеться на bool у меня Borland С++
Ну поменяйте на int, разницы существенной нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int mas1[6]={1,3,6,5,7,2};
int mas2[6]={1,10,11,7,2,12};
int mas3[6]={20,6,25,2,17,18};
int flag=0;
for(int i=0;i<6;i++)
{
 flag=0;
 for(int j=0;j<6;j++)
 {
  if((mas1[i]==mas2[j])||(mas1[i]==mas3[j])) flag=1;
 }
 if (!flag) printf("%d ", mas1[i]); // выводим несовпадающий на экран
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2011, 11:52     Вроде простенькая
Еще ссылки по теме:

C++ простенькая задачка
C++ Вроде переполнение, а вроде бы и нет
Простенькая структура C++

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

Или воспользуйтесь поиском по форуму:
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
26.04.2011, 11:52     Вроде простенькая #11
Не увидел внешний цикл, прошу прощения.
Yandex
Объявления
26.04.2011, 11:52     Вроде простенькая
Ответ Создать тему
Опции темы

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