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

Сформировать массив S, состоящий из одинаковых элементов исходных массивов - C++

Восстановить пароль Регистрация
 
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
01.07.2014, 20:15     Сформировать массив S, состоящий из одинаковых элементов исходных массивов #1
2 массива X, Y, каждый из 10 эл-в. Сформировать массив S, состоящий из одинаковых эл-в исходных массивов.
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
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iomanip>
 
using namespace std;
 
main()
{
    //setlocale(LC_ALL, "Russian");
    //setlocale(0, "");
    int n=10, x[n], y[n], s[n];
    srand((unsigned)time(NULL));
    std::cout<<"Массив X:"<<std::endl;
    for (int i=0; i<n; i++)
    {
        x[i]=rand()%21-15;
        cout<<x[i]<<" ";
    }
    cout<<endl;
    std::cout<<"Массив Y:"<<std::endl;
    for (int i=0; i<n; i++)
    {
        y[i]=rand()%21-15;
        cout<<y[i]<<" ";
    }
    cout<<endl;
/// 
    for (int i=0; i<n; i++)
    {
        s[i]=x[i];
    }
    for (int j=0; j<n; j++)
    {
        s[n]=y[j];
        n++;
    }
    std::cout<<"Массив S:"<<std::endl;
    for (int i=0; i<n; i++)
    {
        cout<<s[i]<<" ";
    }
///
    system("pause");
    return 0;
}
Падает на предпоследнем for. Помогите решить проблему.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2014, 20:15     Сформировать массив S, состоящий из одинаковых элементов исходных массивов
Посмотрите здесь:

C++ Массив: Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
Создать третий массив из неповторяющихся элементов исходных массивов C++
C++ Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов.
C++ Сформировать новый массив, состоящий только из нечетных элементов больших 3 и меньших 14
C++ Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4258 / 3689 / 1243
Регистрация: 14.04.2014
Сообщений: 14,450
01.07.2014, 20:40     Сформировать массив S, состоящий из одинаковых элементов исходных массивов #2
Выходишь за границы массива. n изначально равно десяти, то есть уже за границами. И вообще не надо задавать размер статических массивов изменяемой переменой. Либо
C++
1
int x[10], y[10], s[10];
Либо
C++
1
2
const int n=10;
int x[n], y[n], s[n];
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
01.07.2014, 20:44  [ТС]     Сформировать массив S, состоящий из одинаковых элементов исходных массивов #3
nmcf, тогда на
n++ ругается в цикле. Мне же размер массива нужно увеличивать для S, когда он эл-т находим.
Убрал я его. Массив S получается чисто как X .
saharok2000
1 / 1 / 0
Регистрация: 01.07.2014
Сообщений: 49
01.07.2014, 20:52     Сформировать массив S, состоящий из одинаковых элементов исходных массивов #4
Вы увеличиваете n и при этом кол-во повторов цикла равно n.
Что-то не так.
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
01.07.2014, 20:55  [ТС]     Сформировать массив S, состоящий из одинаковых элементов исходных массивов #5
Эм... Я походу не правильно подумал...
Я их похоже по коду хотел вместе соединить в 1 массив. А мне нужно из одинаковых...
nmcf
4258 / 3689 / 1243
Регистрация: 14.04.2014
Сообщений: 14,450
01.07.2014, 21:33     Сформировать массив S, состоящий из одинаковых элементов исходных массивов #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
n оставь для размера массивов и условий в циклах. Для других целей придумай другую переменную.

Добавлено через 37 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int k, sn = 0;
for (int i = 0; i < n; i++)
{
    for (int j=0; j<n; j++)
    {
        if(x[i] == y[j])
        {
            for(k = 0; k < sn; k++) if(s[k] == x[i]) break;
            if(k == sn)
            {
                s[sn] = x[i];
                sn++;
            }
        }
    }
}
for(k = 0; k < sn; k++) cout << s[k] << " ";
Yandex
Объявления
01.07.2014, 21:33     Сформировать массив S, состоящий из одинаковых элементов исходных массивов
Ответ Создать тему
Опции темы

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