Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Alexandr3110
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 37
1

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

12.05.2010, 21:54. Просмотров 2115. Ответов 12
Метки нет (Все метки)

сформировать новый массив из элементов массива М(25), встречающихся в этом массиве только один раз.

на Си.

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

Сгенерировать одномерный массив A в диапазоне [-20; 20] и сформировать новый массив B из отрицательный элементов массива
Здравствуйте. Помогите, пожалуйста, дорешать задачу. Нужно сгенерировать...

Сформировать новый массив B, состоящий из элементов массива A, которые превышают X
Если по заданию дано число массив или массивы, то их значения получать от...

Сформировать новый массив из чётных значений элементов исходного массива
Дан массивА(30). Сформировать новый массив из четных значений элементов массива...

Сформировать новый массив, состоящий из индексов отрицательных элементов исходного массива
Формировать массив B(n, m) случайных чисел отрезка (-10; 165). Сформировать...

Сформировать новый массив из тех элементов массива А, которые превосходят свой номер на 10
Приветствую! Нужна помощь с решением задачи в С++. Вообще не понимаю, как это...

12
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
12.05.2010, 22:11 2
ну отсортируй и всё если не равны запись
0
Genius Ignat
12.05.2010, 22:14
  #3

Не по теме:

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

0
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
12.05.2010, 22:20 4
да есть другой записать первый эл-т н новый массив и при добавлении из старого проверять есть ли он в новом если есть не записываем если нету то записываем
0
Genius Ignat
1241 / 779 / 108
Регистрация: 16.09.2009
Сообщений: 2,014
12.05.2010, 22:25 5
Можно и так наверное: так реализуй у меня все равно другой, как
известно некоторые задачи можно решить многими способами.
0
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
12.05.2010, 22:30 6
ок ща
0
fallti
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 18
12.05.2010, 22:31 7
1)берешь первый элемент из первоначального массива, делаешь его "эталоном"
2)сравниваешь с остальными, начиная с второго,
если находим похожий элемент - делаем специальный выход с цикла(нет смысла его до конца просматривать)
если не находим - записываем в новый массив
3) берем следущий элемент делаем его эталоном, сравниваем - но эталонного элемента во время сравнения не должно быть в массиве
не самый красивый способ решения, но, по-моему, самый очевидный
0
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 минут
вроде так тестыне проводил ну должна пахать
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
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;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
10115 / 6023 / 1510
Регистрация: 25.07.2009
Сообщений: 11,418
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);
}
0
Alexandr3110
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 37
12.05.2010, 23:55  [ТС] 11
спасибо большое,но желательно бы без функций..
0
Genius Ignat
1241 / 779 / 108
Регистрация: 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;
}
0
dgiu
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 1
29.04.2012, 18:27 13
В каждой из задач данного раздела заданы два массива случайных значений. Требуется сформировать новый массив по алгоритму,

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

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

3) выводить:

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

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

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

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

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

Добавлено через 15 минут
Это Си
0
29.04.2012, 18:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2012, 18:27

Сформировать новый массив путем перевода элементов начального массива в десятичную систему
Здравствуйте, у меня есть такое задание: Дан массив что складывается из чисел...

Сформировать новый массив путем перевода значений элементов исходного массива в десятичную систему счисления
Необходимо ввести массив, состоящий из 9 элементов (девять двузначных чисел в...

Из простых элементов исходного неупорядоченного массива, состоящего из натуральных чисел, сформировать новый упорядоченный массив.
Ребята нужна помощь!!! Задача такая, нужно разработать программу в процедурном,...


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

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

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