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

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

Войти
Регистрация
Восстановить пароль
 
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 49
#1

Массив из неповторяющихся элементов исходного массива - C++

20.03.2013, 23:23. Просмотров 1258. Ответов 9
Метки нет (Все метки)

Рандомно задается массив. Необходимо составить массив из неповторяющихся элементов исходного массива, сохраняя порядок их следования. Желательно еще ввести переменную которая будет показ. длину нового массива.
Я пытался сделать, но не получилось. Ткните носом где у меня ошибка и как её исправить. Других библиотек кроме написанных не использовать, работать только с массивами.
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
#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
#include <conio.h>
#include <time.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{int const n=10;
m1:int A[n],i,j,B[n],c=0;
system("cls");
 
cout<<"A[]= ";
for(i=0;i<n;i++)
{A[i]=rand()%9+1;B[i]=A[i];  //иниц.
cout<<" "<<A[i];}cout<<endl;
 
for(i=0;i<n;i++)
{for(j=0;j<c;j++)
{if(A[i]!=B[j]) {B[j]=A[i];c++;}}}
 
for(i=0;i<c;i++)
{cout<<" "<<B[i];}cout<<endl;
 
cout<<endl<<"One more? (1-yes,0-no)";
int x;
cin>>x;
if (x==1) {goto m1;}
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 23:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Массив из неповторяющихся элементов исходного массива (C++):

Сформировать массив неповторяющихся элементов исходного массива - C++
Сформировать массив из неповторяющихся элементов исходного массива. Например : Из массива A = {2,5,2,6,8,5,1,9,4,3 } нужно получить...

Получить новый массив, состоящий из неповторяющихся элементов исходного - C++
Условие: Из произвольного одномерного массива целых чисел М1 получить массив М2, состоящий лишь из неповторяющихся элементов М1. ...

Сформировать массив А из четных элементов исходного массива, а массив В - из нечетных - C++
Элементы массива Т формируются по правилу: Т(к)=15к-12. Сформировать массив А из четных элементов массива Т, а массив В- из нечетных(к=20)

Записать в массив B длины всех серий исходного массива, а в массив C - значения элементов, образующих серии - C++
Ребята выручите пожалуйста) 1)Дан целочисленный массив A размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной...

Сформировать массив из модулей суммы элементов исходного массива - C++
помогите написать на языке с++. Заранее СПАСИБО!

Создать массив из номеров нулевых элементов исходного массива - C++
В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов. Плиз помогите решить , завтра сдавать...

9
yoghurt92
375 / 346 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
21.03.2013, 01:24 #2
KoMaTo3Huk,

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
60
61
62
http://the-programmer.ru/publ/c/obuchenie_c/urok_36_ispolzovanie_argumentov_komandnoj_stroki/9-1-0-204
 
 
// showarg.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <time.h>
#include <stdlib.h>
using namespace std;
 
void main(int argc, char *argv[])
{
    wcout.imbue(locale(".866"));
 
    int size;
    bool flag = false;
 
    wcout << L"Введите количество элементов: ";
        cin >> size;
 
    srand(time(NULL));
    int *mas = new int [size];
    int *new_mas = new int [size];      
 
    for(int i = 0; i < size; ++i)
        mas[i] = 1 + rand() % 50;
 
    wcout << L"Исходный массив: ";
    for(int i = 0; i < size; ++i)
        cout << mas[i] << ' ';
 
    int new_size = 0;                   //переменная для подсчета размера нового массива
    for(int i = 0; i < size; ++i){
        flag = false;
        for(int j = 0; j < size; ++j){
            if(i == j)
                continue;
            else
            {
                if(mas[i] == mas[j])
                {
                    flag = false;
                    break;
                }
                else
                    flag = true;
            }
        }
 
        if(flag == true)
            new_mas[new_size++] = mas[i];
    }
 
    wcout << L"\nМассив из неповторяющихся элементов: ";
    for(int i = 0; i < new_size; ++i)
        cout << new_mas[i] << ' ';
 
    cout << "\n\n";
}
1
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 49
21.03.2013, 01:26  [ТС] #3
Цитата Сообщение от yoghurt92 Посмотреть сообщение
KoMaTo3Huk,

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
60
61
62
http://the-programmer.ru/publ/c/obuchenie_c/urok_36_ispolzovanie_argumentov_komandnoj_stroki/9-1-0-204
 
 
// showarg.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <time.h>
#include <stdlib.h>
using namespace std;
 
void main(int argc, char *argv[])
{
    wcout.imbue(locale(".866"));
 
    int size;
    bool flag = false;
 
    wcout << L"Введите количество элементов: ";
        cin >> size;
 
    srand(time(NULL));
    int *mas = new int [size];
    int *new_mas = new int [size];      
 
    for(int i = 0; i < size; ++i)
        mas[i] = 1 + rand() % 50;
 
    wcout << L"Исходный массив: ";
    for(int i = 0; i < size; ++i)
        cout << mas[i] << ' ';
 
    int new_size = 0;                   //переменная для подсчета размера нового массива
    for(int i = 0; i < size; ++i){
        flag = false;
        for(int j = 0; j < size; ++j){
            if(i == j)
                continue;
            else
            {
                if(mas[i] == mas[j])
                {
                    flag = false;
                    break;
                }
                else
                    flag = true;
            }
        }
 
        if(flag == true)
            new_mas[new_size++] = mas[i];
    }
 
    wcout << L"\nМассив из неповторяющихся элементов: ";
    for(int i = 0; i < new_size; ++i)
        cout << new_mas[i] << ' ';
 
    cout << "\n\n";
}
я же говорил,другие библиотеки не использовать
0
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 49
21.03.2013, 01:36  [ТС] #4
Цитата Сообщение от yoghurt92 Посмотреть сообщение
KoMaTo3Huk,

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
60
61
62
http://the-programmer.ru/publ/c/obuchenie_c/urok_36_ispolzovanie_argumentov_komandnoj_stroki/9-1-0-204
 
 
// showarg.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <time.h>
#include <stdlib.h>
using namespace std;
 
void main(int argc, char *argv[])
{
    wcout.imbue(locale(".866"));
 
    int size;
    bool flag = false;
 
    wcout << L"Введите количество элементов: ";
        cin >> size;
 
    srand(time(NULL));
    int *mas = new int [size];
    int *new_mas = new int [size];      
 
    for(int i = 0; i < size; ++i)
        mas[i] = 1 + rand() % 50;
 
    wcout << L"Исходный массив: ";
    for(int i = 0; i < size; ++i)
        cout << mas[i] << ' ';
 
    int new_size = 0;                   //переменная для подсчета размера нового массива
    for(int i = 0; i < size; ++i){
        flag = false;
        for(int j = 0; j < size; ++j){
            if(i == j)
                continue;
            else
            {
                if(mas[i] == mas[j])
                {
                    flag = false;
                    break;
                }
                else
                    flag = true;
            }
        }
 
        if(flag == true)
            new_mas[new_size++] = mas[i];
    }
 
    wcout << L"\nМассив из неповторяющихся элементов: ";
    for(int i = 0; i < new_size; ++i)
        cout << new_mas[i] << ' ';
 
    cout << "\n\n";
}
еще и работает не правильно, например в данном случае должно было вывести 1 3 6 7 5 8 4
0
Миниатюры
Массив из неповторяющихся элементов исходного массива  
vua72
417 / 417 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
21.03.2013, 01:44 #5
А это что?
C++
1
2
3
for(i=0;i<n;i++)
{for(j=0;j<c;j++)
{if(A[i]!=B[j]) {B[j]=A[i];c++;}}}
0
HighPredator
5637 / 1953 / 370
Регистрация: 10.12.2010
Сообщений: 5,664
Записей в блоге: 3
21.03.2013, 01:44 #6
Цитата Сообщение от KoMaTo3Huk Посмотреть сообщение
еще и работает не правильно, например в данном случае должно было вывести 1 3 6 7 5 8 4
Все правильно выводит. У вас задача звучит:
Цитата Сообщение от KoMaTo3Huk Посмотреть сообщение
составить массив из неповторяющихся элементов исходного массива
В то массиве 1 3 6 7 5 8 5 6 6 4 не повторяются только 1 3 7 8 4. А элементы 5 и 6 повторяются, поэтому их там и нет.
0
vua72
417 / 417 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
21.03.2013, 01:46 #7
Условие случайно не подразумевает, что в результирующем массиве просто удалить дубликаты чисел из исходного?
0
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 49
21.03.2013, 02:02  [ТС] #8
Цитата Сообщение от HighPredator Посмотреть сообщение
Все правильно выводит. У вас задача звучит:

В то массиве 1 3 6 7 5 8 5 6 6 4 не повторяются только 1 3 7 8 4. А элементы 5 и 6 повторяются, поэтому их там и нет.
вы меня не правильно поняли,я имел ввиду что во втором массиве не должно быть дубликатов, а такую задачу без повтор эл-в решить раз плюнуть вот таким кодом
C++
1
2
3
4
5
6
7
8
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
    if((A[i]==A[j])&&(i!=j)) break;
 
if(j == n) {cout<<A[i]<<' ';c++;
 
}}
cout<<endl<<c;
Добавлено через 1 минуту
всем спасибо задача решена, если кому интересно, вот решение
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
#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
#include <conio.h>
#include <time.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{int const n=10;
m1:int A[n],i,j,B[n],c=0,l=0, x, y,kolvo;
system("cls");
 
cout<<"A[]= ";
for(i=0;i<n;i++)
{A[i]=rand()%9+1; B[i] = A[i];
cout<<" "<<A[i];}cout<<endl;
 
kolvo=n;
 
for(i=0;i<n;i++)
{for(j=i+1;j<kolvo;j++)
{
    if(B[j] == B[i])
    {
        for(x=j;x<kolvo-1;x++)
        {
            B[x] = B[x+1];
        }
        kolvo--;j--;
    }
 
}}
cout<<kolvo;
 
cout<<endl;
 
for(i=0;i<kolvo;i++)
{cout<<" "<<B[i];}cout<<endl;
 
 
cout<<endl<<"One more? (1-yes,0-no)";
int m;
cin>>m;
if (m==1) {goto m1;}
    return 0;
}
0
HighPredator
5637 / 1953 / 370
Регистрация: 10.12.2010
Сообщений: 5,664
Записей в блоге: 3
21.03.2013, 02:05 #9
Цитата Сообщение от KoMaTo3Huk Посмотреть сообщение
во втором массиве не должно быть дубликатов
Так надо было сразу найти ключи от танка и нормально условие написать...
0
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 49
21.03.2013, 02:14  [ТС] #10
Цитата Сообщение от HighPredator Посмотреть сообщение
Так надо было сразу найти ключи от танка и нормально условие написать...
ну так догадаться можно было))
0
21.03.2013, 02:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2013, 02:14
Привет! Вот еще темы с ответами:

Создать массив состоящий из различных элементов исходного массива - C++
Всем привет! Помогите с задачкой, говорят простая, но я не могу ее додумать %-) &quot;Заполнить одномерный числовой массив целыми числами,...

Сформировать массив из элементов исходного массива, располагающихся по возрастанию - C++
например из массива (3 2 4 5 1 3 7 3 4 9 2) должен получиться массив (3 4 5 7 9) т.е. из возрастающих элементов. не могу понять как...

Получить массив, состоящий из отрицательных элементов исходного массива - C++
Есть задание Я написал программу, которая собственно и выводит отрицательные элементы. Но нужно создать функцию. #include &quot;stdafx.h&quot; ...

Создать новый массив из различных элементов исходного массива - C++
дан целочисленный массив а(8), среди элементов есть одинаковые. создать массив из различных элементов массива Создавайте темы с...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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