0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 12
1

Расположить в массиве сначала все четные, а потом все нечётные элементы

06.11.2016, 18:21. Показов 3914. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста, решить две задачи:

Задание_1: Дан целочисленный массив из 10 элементов расположить в этом массиве сначала все четные, а потом все нечётные, 1,2,3,4,5,6,7,8,9,10 т.е. 2,4,6,8,10,1,3,5,7,9
Задание_2: Расположить все чётные по возврастанию а не чётные по убыванию

Как вводить элементы я вроде знаю, а вот как вывести сначала четные, а потом нечетные не знаю, а также по возрастанию и убыванию.

Вот что я написал:

Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Program shetnie_neshetnie !Имя программы
       dimension mass(10) !Количество элементов массива 10
        do i=1,10 !Элементы с 1 по 10 шаг единица*
        read(*,*) mass(i) !Вводим элементы массива
        end do
        print *,mass
      ! i=1
      ! mass_ost=mass(i)-mass(i)/2*2 !Определение четности чисел
      ! if(mass_ost.eq.0)
 
      ! if(mass_ost.ne.0)
      ! write (*,*) (mass(i),i=1,10)
       !i=i+1
      ! if(i.le.10) go to 2
 
       pause
       end
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2016, 18:21
Ответы с готовыми решениями:

Cортировка в массиве: сначала все четные, а потом все нечетные числа
Пользователь вводит элементы массива. Переставить в первую половину элементы, расположенные на...

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

В массиве сначала расположить все положительные элементы,а потом отрицательные
1.В одномерному массиве,что состоит из N целых элементов вычислить: 1)добавление элементов...

Переписать все числа во второй массив так, чтобы сначала шли четные элементы, затем нули, потом нечетные элементы
Парни, нуждаюсь в ваших советах. Из одномерного целочисленного массива переписать все числа во...

3
126 / 113 / 56
Регистрация: 05.12.2012
Сообщений: 463
07.11.2016, 18:55 2
Лучший ответ Сообщение было отмечено Nikolayn как решение

Решение

Fortran
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
63
64
Program shetnie_neshetnie !Имя программы
 
integer, parameter :: length = 10
 
integer :: mass(length) !Количество элементов массива 10
integer :: n, tmp, i
       
do i=1, length !Элементы с 1 по 10 шаг единица*
    read(*,*) mass(i) !Вводим элементы массива
end do
        
print *,mass
      
n = 1
 
do i = 1, length
    if (MOD(mass(i), 2) == 0 .AND. i /= n) then
        
        tmp = mass(i)
        mass(i) = mass(n)
        mass(n) = tmp
 
        n = n + 1
    end if
end do
 
CALL sort( mass(1 : n-1) , .TRUE.)
CALL sort( mass(n : length) , .FALSE.)
 
print *,mass
 
pause
 
contains
 
subroutine sort(array, growth)
    integer, intent(INOUT) :: array(:)
    logical, intent(IN) :: growth
    
    integer :: i, tmp
    logical :: sorted
 
    sorted = .FALSE.
 
    do while(.NOT. sorted)
        sorted = .TRUE.
 
        do i = 1, SIZE(array) - 1
            if ( array(i) > array(i+1) .EQV. growth) then
 
                tmp = array(i)
                array(i) = array(i+1)
                array(i+1) = tmp
 
                sorted = .FALSE.
 
            end if
        end do
 
    end do
 
end subroutine sort
   
end
Добавлено через 1 час 38 минут
Поправочка строк 14-25:
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n = 1
 
do while (n <= length .AND. MOD(mass(n), 2) == 0)
    n = n + 1
end do
 
do i = n + 1, length
    if (MOD(mass(i), 2) == 0) then
        
        tmp = mass(i)
        mass(i) = mass(n)
        mass(n) = tmp
 
        n = n + 1
    end if
end do
1
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 12
08.11.2016, 20:03  [ТС] 3
kushok, Спасибо большое. Скажите, пожалуйста, какой компилятор языка Фортран вы использовали? У меня что-то не работает программа. Использую Force 2.0. Вводятся элементы массива, потом выводятся на экран и на этом все
Миниатюры
Расположить в массиве сначала все четные, а потом все нечётные элементы   Расположить в массиве сначала все четные, а потом все нечётные элементы  
0
126 / 113 / 56
Регистрация: 05.12.2012
Сообщений: 463
10.11.2016, 16:29 4
Лучший ответ Сообщение было отмечено Nikolayn как решение

Решение

Мой косяк... Не учел что элементы могут повторяться - сортировка зацикливалась. Исправил:
Fortran
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
63
64
65
66
67
68
69
Program shetnie_neshetnie !»м¤ программы
 
integer, parameter :: length = 10
 
integer :: mass(length) !*оличество элементов массива 10
integer :: n, tmp, i
       
do i=1, length !Ёлементы с 1 по 10 шаг единица*
    read(*,*) mass(i) !¬водим элементы массива
end do
        
print *,mass
      
n = 1
 
do while (n <= length .AND. MOD(mass(n), 2) == 0)
    n = n + 1
end do
 
do i = n + 1, length
    if (MOD(mass(i), 2) == 0) then
        
        tmp = mass(i)
        mass(i) = mass(n)
        mass(n) = tmp
 
        n = n + 1
    end if
end do
 
 
CALL sort( mass(1 : n-1) , .TRUE.)
CALL sort( mass(n : length) , .FALSE.)
 
print *,mass
 
pause
 
contains
 
subroutine sort(array, growth)
    integer, intent(INOUT) :: array(:)
    logical, intent(IN) :: growth
    
    integer :: i, tmp
    logical :: sorted
 
    sorted = .FALSE.
 
    do while(.NOT. sorted)
        sorted = .TRUE.
 
        do i = 1, SIZE(array) - 1
            if ( ( array(i) > array(i+1) .EQV. growth) .AND. array(i) /= array(i+1) ) then
 
                tmp = array(i)
                array(i) = array(i+1)
                array(i+1) = tmp
 
                sorted = .FALSE.
 
            end if
        end do
 
    end do
 
end subroutine sort
   
end
P.S.: компилятор gfortran, но должно и на force работать
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2016, 16:29
Помогаю со студенческими работами здесь

Расположить в массиве сначала все отрицательные элементы и нули, потом - положительные (Pascal -> C++)
Помогите пожалуйста, нужно перевести программу с pascal на С++. Есть два вида кода: const...

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

В одномерном массиве расположить сначала нечетные элементы, затем четные
в одномерном массиве расположить сначала нечетные элементы, затем четные без смены их порядка

Преобразовать массив: сначала расположить все отрицательные элементы, а потом - все положительные
ЧЕРЕЗ ФУНКЦИЮ! Преобразовать одномерный целочисленный массив таким образом, чтобы сначала...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru