Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
toxenok
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 56
1

Создать массив В, в который переписать по порядку сначала все положительные, а потом все отрицательные элементы

25.01.2014, 20:48. Просмотров 755. Ответов 7
Метки нет (Все метки)

Добрый вечер! есть 2 несложные задачи, помогите, пожалуйста решить:

Вот одна из них

Задан массив А[10]. Создать массив В, в который переписать по порядку сначала все положительные, а потом все отрицательные элементы.


Заранее благодарю!

 Комментарий модератора 
Создавайте тему в соответствующем разделе. Один вопрос - одна тема.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 20:48
Ответы с готовыми решениями:

Изменить массив, чтобы сначала располагались все отрицательные элементы, затем положительные, а потом нули
Нужно решение задачи по СИ: Изменить порядок следования элементов в массиве так, чтобы сначала...

Переформировать массив так, чтобы сначала были все отрицательные элементы, а затем все положительные
Дан массив 100. Переформировать этот массив таким образом, чтобы сначала были все отрицательные...

Напечатать сначала все положительные, а затем все отрицательные элементы массива
Сформировать массив из 100 случайных чисел. Напечатать сначала все положительные, а затем все...

Переставить элементы массива: сначала положительные числа, а потом отрицательные (порядок должен сохраняться)
Переставить элементы одномерного массива А {20} так чтобы сначала были все положительные числа, а...

Преобразовать массив, чтобы сначала располагались все положительные элементы
В одномерном массиве, состоящем из n целых элементов, вычислить: 1.Сумму элементов массива,...

7
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16767 / 6654 / 869
Регистрация: 12.06.2012
Сообщений: 19,902
Завершенные тесты: 1
25.01.2014, 21:33 2
решение "в лоб", сплошная копипаста
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
#include <stdio.h>
 
#define MAX 10
 
int main(int argc, char *argv[])
{
    int a[MAX], b[MAX];
    int i = 0, j = 0;
    
    for( ; i < MAX; i++)
    {
        printf("Введите А%d\n", i + 1);
        scanf("%d", &a[i]);
    }
    
    for(i = 0; i < MAX; i++)
        if(a[i] >= 0)
            b[j++] = a[i];
    
    for(i = 0; i < MAX; i++)
        if(a[i] < 0)
            b[j++] = a[i];
    
    for(i = 0; i < MAX; i++)
        printf("%d ", b[i]);
    
    return 0;
}
0
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
25.01.2014, 23:28 3
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 <stdio.h>
#include <string.h>
 
#define SIZE 10
 
int main(void) {
    int arr[SIZE] = { 1, -2, -3, 4, 5, -6, 7, -8, -9, 10 }, i = 0, j = SIZE - 1;
 
    while ( i < j ) {
        if ( arr[i] < 0 ) {
            int tmp = arr[i];
            memmove(arr + i, arr + i + 1, sizeof(int) * (j - i));
            arr[j--] = tmp;
        }
        else
            ++i;
    }
 
    for ( i += 1, j = SIZE - 1; i < j; ++i, --j ) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
 
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", arr[i]);
    printf("\n");
 
    return 0;
}
Если все числа отрицательные, переставляет последний элемент в начало. Поправлять лень, да и вообще вариант бредовый.
0
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
26.01.2014, 17:24 4
Дык,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
#define SIZE 10
int cmp(const void *op1, const void *op2){
const int *p1 = (const int *) op1;
const int *p2 = (const int *) op2;
return (*p1) < (*p2);
}; 
void main(void) {
    int A[SIZE] = { 1, -2, -3, 4, 5, -6, 7, -8, -9, 10 }, B[SIZE], i;
    memmove(B,A,sizeof(A));
    qsort(B,sizeof(B)/sizeof(int),sizeof(int),cmp);
    for(i=0;i<SIZE;i++) printf("A[%d] = %d\tB[%d] = %d\n\r",i,A[i],i,B[i]);
};
0
26.01.2014, 17:24
KOPOJI
26.01.2014, 17:26
  #5

Не по теме:

Charles Kludge, в таком коде можно докопаться до последовательности выполнения действий..

Цитата Сообщение от toxenok Посмотреть сообщение
в который переписать по порядку сначала все положительные, а потом все отрицательные элементы.
а не переписать все сразу и отсортировать..

0
Charles Kludge
26.01.2014, 17:33
  #6

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
в таком коде можно докопаться
Не спорю, создаем промежуточный массив, сортируем, а потом поэлементно переписываем в B[].:jokingly:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
#define SIZE 10
int cmp(const void *op1, const void *op2){
const int *p1 = (const int *) op1;
const int *p2 = (const int *) op2;
return (*p1) < (*p2);
}; 
void main(void) {
    int A[SIZE] = { 1, -2, -3, 4, 5, -6, 7, -8, -9, 10 }, B[SIZE],tmp[SIZE],i = 0, j = SIZE - 1;
    memmove(tmp,A,sizeof(A));
    qsort(tmp,sizeof(tmp)/sizeof(int),sizeof(int),cmp);
    for(i=0;i<SIZE;i++) {B[i] = tmp[i];printf("A[%d] = %d\tB[%d] = %d\n\r",i,A[i],i,B[i]);};
};

0
KOPOJI
26.01.2014, 17:40
  #7

Не по теме:

Charles Kludge, вообще, я намекал на сортировку изначального массива :D

0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8121 / 4973 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
27.01.2014, 15:30 8
А с нулем то что делать?
(у меня сначала записывает все неотрицательные, потом все отрицательные)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#define N 10
 
int main(void)
{
    int A[N] = {1, -2, -3, 4, 5, -6, 7, -8, -9, 10}, B[N], i, j = 0, k = 0;
    for (i=0; i < N; i++)
        if (A[i] >= 0)
            B[j++] = A[i];
    for (i=0; i < N; i++)
    {
        if (A[i] < 0)
            B[j + k++] = A[i];
        printf("%d ", B[i]);
    }
    return 0;
}
1
27.01.2014, 15:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 15:30

Переписать данный файл типа real, поместив в него сначала положительные, затем отрицательные элементы
Здравствуйте! Помогите пожалуйста сделать на с++. Переписать данный файл типа real, поместив в...

Напечатать сначала все отрицательные, а затем все остальные элементы массива
Сформировать массив из 200 случайных чисел. Напечатать сначала все отрицательные, а затем все...

Переписать в одномерный массив все отрицательные элементы матрицы
Составить программу перестановки в матрице X= размером (n*m) строк с номерами K и L. Напечатать...


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

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

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