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

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

Восстановить пароль Регистрация
 
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
20.03.2013, 23:23     Массив из неповторяющихся элементов исходного массива #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
#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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 23:23     Массив из неповторяющихся элементов исходного массива
Посмотрите здесь:

C++ Создать массив из номеров нулевых элементов исходного массива
Получить новый массив, состоящий из неповторяющихся элементов исходного C++
Сформировать массив из элементов исходного массива, располагающихся по возрастанию C++
Создать новый массив из различных элементов исходного массива C++
Сформировать массив А из четных элементов исходного массива, а массив В - из нечетных C++
C++ Получить массив, состоящий из отрицательных элементов исходного массива
C++ Создать массив состоящий из различных элементов исходного массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 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";
}
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
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";
}
я же говорил,другие библиотеки не использовать
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
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
Миниатюры
Массив из неповторяющихся элементов исходного массива  
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 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++;}}}
HighPredator
 Аватар для HighPredator
5384 / 1767 / 323
Регистрация: 10.12.2010
Сообщений: 5,226
Записей в блоге: 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 повторяются, поэтому их там и нет.
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
21.03.2013, 01:46     Массив из неповторяющихся элементов исходного массива #7
Условие случайно не подразумевает, что в результирующем массиве просто удалить дубликаты чисел из исходного?
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
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;
}
HighPredator
 Аватар для HighPredator
5384 / 1767 / 323
Регистрация: 10.12.2010
Сообщений: 5,226
Записей в блоге: 3
21.03.2013, 02:05     Массив из неповторяющихся элементов исходного массива #9
Цитата Сообщение от KoMaTo3Huk Посмотреть сообщение
во втором массиве не должно быть дубликатов
Так надо было сразу найти ключи от танка и нормально условие написать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2013, 02:14     Массив из неповторяющихся элементов исходного массива
Еще ссылки по теме:

C++ Написать функцию, создающую новый массив из отрицательных элементов исходного массива
Записать в массив B длины всех серий исходного массива, а в массив C - значения элементов, образующих серии C++
Сформировать массив неповторяющихся элементов исходного массива C++
C++ Сформировать новый массив из чётных значений элементов исходного массива
C++ Скопировать из исходного массива указанное количество чётных элементов в итоговый массив

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

Или воспользуйтесь поиском по форуму:
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
21.03.2013, 02:14  [ТС]     Массив из неповторяющихся элементов исходного массива #10
Цитата Сообщение от HighPredator Посмотреть сообщение
Так надо было сразу найти ключи от танка и нормально условие написать...
ну так догадаться можно было))
Yandex
Объявления
21.03.2013, 02:14     Массив из неповторяющихся элементов исходного массива
Ответ Создать тему
Опции темы

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