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

Сформировать новый массив из элементов массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Alexandr3110
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 37
12.05.2010, 21:54     Сформировать новый массив из элементов массива #1
сформировать новый массив из элементов массива М(25), встречающихся в этом массиве только один раз.

на Си.

заранее спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2010, 21:54     Сформировать новый массив из элементов массива
Посмотрите здесь:

C++ Если в данном массиве нет отрицательных элементов, то сформировать новый массив: каждый элемент которого является суммой предыдущих элементов.
C++ Из простых элементов исходного неупорядоченного массива, состоящего из натуральных чисел, сформировать новый упорядоченный массив.
C++ Сформировать новый массив, состоящий только из нечетных элементов больших 3 и меньших 14
C++ Сформировать новый массив из отрицательных элементов исходного
Сформировать новый массив С из элементов массивов А и В по правилу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
genius5
 Аватар для genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
12.05.2010, 22:11     Сформировать новый массив из элементов массива #2
ну отсортируй и всё если не равны запись
Genius Ignat
12.05.2010, 22:14
  #3

Не по теме:

genius5:
Есть другой способ, если ни кто не сделает выложу его.

genius5
 Аватар для genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
12.05.2010, 22:20     Сформировать новый массив из элементов массива #4
да есть другой записать первый эл-т н новый массив и при добавлении из старого проверять есть ли он в новом если есть не записываем если нету то записываем
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.05.2010, 22:25     Сформировать новый массив из элементов массива #5
Можно и так наверное: так реализуй у меня все равно другой, как
известно некоторые задачи можно решить многими способами.
genius5
 Аватар для genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
12.05.2010, 22:30     Сформировать новый массив из элементов массива #6
ок ща
fallti
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 18
12.05.2010, 22:31     Сформировать новый массив из элементов массива #7
1)берешь первый элемент из первоначального массива, делаешь его "эталоном"
2)сравниваешь с остальными, начиная с второго,
если находим похожий элемент - делаем специальный выход с цикла(нет смысла его до конца просматривать)
если не находим - записываем в новый массив
3) берем следущий элемент делаем его эталоном, сравниваем - но эталонного элемента во время сравнения не должно быть в массиве
не самый красивый способ решения, но, по-моему, самый очевидный
genius5
 Аватар для genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
12.05.2010, 22:48     Сформировать новый массив из элементов массива #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <stdio.h>
#include <stdlib.h>
#define n 25
int main(void)
{int *mas,*mas1,i,j,l,s=0;
 
mas=(int*)malloc(n*sizeof(int));
mas1=(int*)malloc(n*sizeof(int));//могут быть все разные,поэтому выделяем столько же
 
for(i=0;i<n/2;i++)mas[i]=1;
for(i=n/2;i<n;i++)mas[i]=2;
 
mas1[0]=mas[0];
l=0;
 
for(i=1;i<n;i++)
{for(j=0;j<=l;j++)
{if(mas[i]==mas1[j])s=1;}
if(s==0){l++;mas1[l]=mas[i];}
else s=0;}
for(i=0;i<n;i++)printf("%d ",mas[i]);
printf("\nnew\n");
for(i=0;i<=l;i++)
printf("%d ",mas1[i]);
}
Добавлено через 8 минут
вроде так тестыне проводил ну должна пахать
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
12.05.2010, 23:14     Сформировать новый массив из элементов массива #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
31
32
33
34
35
36
37
38
#include <iostream>
#include <iomanip>
#include <vector.h>
#include <ctime>
bool check (int);
 
const int size=25;
int MAS[size];
 
int main()
{
    std::cout << "Start matrix:\n";
    srand(time(NULL));
    for (int i=0; i<size; i++) { // заполнение и вывод матрицы.
        MAS[i]=rand()%50+1;
        std::cout << MAS[i] << " "; }
    std::cout << std::endl;
 
    vector <int> v;
 
    for (int i=0; i<size; i++)
        if (check(i)) v.push_back(MAS[i]);
 
    std::cout << "Finish:\n";
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
 
    std::cout << std::endl;
    system("pause");
    return 0;
}
 
bool check (int num)
{
    for (int i=0; i<size; i++)
        if ((MAS[i]==MAS[num]) && (i!=num)) return false;
        
    return true;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.05.2010, 23:50     Сформировать новый массив из элементов массива #10
neske, всё бы ничего, да нужно
Цитата Сообщение от Alexandr3110 Посмотреть сообщение
на Си.
Alexandr3110, если не нужно сохранять порядок, в котором числа встречались в исходном массиве, то отсортировать действительно легче
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
int cmp_func(const void *a, const void *b){
    return *(int*)a - *(int*)b;
}
 
#define SIZE 10
    
int main(void){
    int *arr, *unique, i, j;
    
    srand(time(NULL));
    
    if ( ( arr = (int*)calloc(SIZE, sizeof(int)) ) == NULL ){
        perror("calloc");
        exit(1);
    }
    printf("Array:\t");
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", ( arr[i] = rand() % 10 ));
    printf("\n");
    
    qsort(arr, SIZE, sizeof(int), cmp_func);
    
    if ( ( unique = (int*)calloc(SIZE, sizeof(int)) ) == NULL ){
        perror("calloc");
        free(arr);
        exit(1);
    }
    
    *unique = *arr;
    for ( i = j = 1; i < SIZE; ++i )
        if ( arr[i] != arr[i - 1] )
            unique[j++] = arr[i];
    
    printf("Unique:\t");
    for ( i = 0; i < j; ++i )
        printf("%d ", unique[i]);
    printf("\n");
    
    free(arr);
    free(unique);
    exit(0);
}
Alexandr3110
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 37
12.05.2010, 23:55  [ТС]     Сформировать новый массив из элементов массива #11
спасибо большое,но желательно бы без функций..
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
13.05.2010, 12:32     Сформировать новый массив из элементов массива #12
Вот мой вариант.
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define SIZE 10
long form_new_mas(int *mas , int size , int **nmas, int *nsize); //Формирует новый массив.
 
int main(){
 
int mas[SIZE] = {1,2,3,4,4,4,7,8,9,10};
int *ptr = NULL;
 
int nsize = 0;
 
form_new_mas(mas,SIZE,&ptr,&nsize); //формируем.
int i;
 
for( i = 0 ; i < nsize; i++ )printf("%d ",ptr[i]);
printf("\n");
 
 
free(ptr);
getch();
return 0;
 
}
 
//Формирует массив.
long form_new_mas(int *mas , int size , int **nmas, int *nsize){
 
int i, j , c_i = 0, count = 0;  
 
for( i = 0 ; i < size ; i++ )
    for( j = 0 ; j < size ; j++ ){
    if(mas[i]==mas[j]&&i!=j)break;
    if(j==size-1)count++;
 
    }
 
*nsize = count;
 
int *ptr_m = (int*)malloc(count*sizeof(int));
 
for( i = 0 ; i < size ; i++ )
    for( j = 0 ; j < size ; j++ ){
 
    if(mas[i]==mas[j]&&i!=j)break;
 
    if(j==size-1){
    ptr_m[c_i] = mas[i];
    c_i++; 
    }
 
 
}
 
 
*nmas = ptr_m;
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2012, 18:27     Сформировать новый массив из элементов массива
Еще ссылки по теме:

Сформировать новый массив B, состоящий из элементов массива A, которые превышают X C++
C++ Сформировать новый массив из максимальных элементов двух других
C++ Из заданного массива сформировать новый массив того же размера согласно условию

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

Или воспользуйтесь поиском по форуму:
dgiu
Сообщений: n/a
29.04.2012, 18:27     Сформировать новый массив из элементов массива #13
В каждой из задач данного раздела заданы два массива случайных значений. Требуется сформировать новый массив по алгоритму,

указанному в задании.
Программа должна:

1) генерировать случайным образом элементы исходных массивов;

3) выводить:

§ исходные массивы,

· сформированный массив, если он был сформирован. В противном случае – соответствующее сообщение.

Исходные данные для отладки программы выбрать самостоятельно.

Сформировать массив из отрицательных элементов первого массива и положительных элементов второго массива.

Добавлено через 51 секунду
Помогите пожалуйста.
Если можно то с листингом

Добавлено через 15 минут
Это Си
Yandex
Объявления
29.04.2012, 18:27     Сформировать новый массив из элементов массива
Ответ Создать тему
Опции темы

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