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

Найти количество элементов массива, расположенных между минимальным и максимальным элементами

30.12.2009, 07:10. Просмотров 886. Ответов 8
Метки нет (Все метки)

В одномерном массиве, состоящем из вещественных элементов, вычислить:
А) произведение элементов с нечетными значениями.
Б) количество элементов массива, расположенных между минимальным и максимальным элементами.
В) Поменять порядок следования элементов в массиве ( Поменять местами i-й элемент c n-i-тым элементом).
Г) отсортировать массив методом выбора

я сделал все пункты кроме пункта "В)"
вот что получилось:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
clrscr();
printf("*Введите размерность массива: ");
int n;
randomize();
int s=scanf("%d",&n);
if (s!=1){
    printf("Неверные значения");
    getch();
    exit(0);}
int *x = new int [n];
for(int i=0;i<n;i++){
x[i]=random(100)-random(50);
printf("%5d",x[i]);
}
 
int count=1;
for(i=0;i<n;i++)
    if(x[i]%2) count=count*x[i];
printf("\n\nпроизведение нечетных элементов: %d",count);
 
int max=x[0], imax=0;
for(i=1;i<n;i++)
if(max<x[i]){max=x[i]; imax=i;}
int min=x[0], imin=0;
for(i=1;i<n;i++)
if(min>x[i]){min=x[i]; imin=i;}
int iman;
if(imax<imin) iman=imin-imax-1;
else iman=imax-imin;
printf("\n\nкол-во элементов между min=%d и max=%d:  %d ",min,max,iman);
 
int el,temp;
printf("\n\nelementu n-i \n");
for(i=0;i<n;i++){
el=n-i;
x[i]==temp;x[i]=x[el];temp=x[el];
printf("%5d",x[i]);
}
 
printf("\n\nМассив отсортированный выбором:\n");
for(i=0;i<n;i++){
    int k=i;
    for(int j=i+1;j<n;j++)
        if(x[k]>x[j]) k=j;
    if(k!=i){int temp=x[i]; x[i]=x[k];
        x[k]=temp;}
    printf("%5d",x[i]);
    }
getch();
delete [] x;
}
1
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2009, 07:10
Ответы с готовыми решениями:

Найти сумму и количество положительных элементов, расположенных между минимальным и максимальным элементами массива
Найти сумму и количество положительных элементов, расположенных между минимальным и максимальным...

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Помогите, пожалуйста, найти ошибки. При выводе выдает все нули =/ Само задание : В одномерном...

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

Найти сумму элементов массива, расположенных между максимальным и минимальным элементами
Всем привет. Сегодня столкнулся с проблемой, моя программа не хочет выполнять действия после 3...

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

8
Tani
25 / 25 / 3
Регистрация: 27.12.2009
Сообщений: 82
30.12.2009, 07:25 2
Я как понимаю, номер элемента должен вводиться и надо менять этот элемент с последним. Или оба вводиться? В общем, неважно. Ты просто объяви еще одну переменную, в нее положишь значение х[i] потом в из x[n] переложишь значение в x[i] , ну и из перемннной - в x[n]
1
Fajyz
4 / 4 / 0
Регистрация: 29.12.2009
Сообщений: 31
30.12.2009, 07:39  [ТС] 3
Ну так я и пытался это сделать! но ничего не получается он меняет тлько половину элементов а вторая половина остается такой же..
1
valeriikozlov
Эксперт С++
4691 / 2517 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
30.12.2009, 08:51 4
Это кусок переделанной Вашей программы со строки 35 по строку 45. Нет только вывода на экран.
C
1
2
3
4
5
6
7
8
printf("\n\nкол-во элементов между min=%d и max=%d:  %d ",min,max,iman);
 
int temp;
for(i=0;i<n/2;i++){
temp=x[i];x[i]=x[n-1-i];x[n-1-i]=temp;
}
// вот здесь пункт В) уже выполнен 
printf("\n\nМассив отсортированный выбором:\n");
1
30.12.2009, 08:51
Fajyz
4 / 4 / 0
Регистрация: 29.12.2009
Сообщений: 31
30.12.2009, 10:56  [ТС] 5
http://disk.tom.ru/pwt8erq/1/44faf/%C1%E5%E7%FB%EC%FF%ED%ED%FB%E9.JPG
но так он выводит только половину элементов массива, а надо чтоб массив не изменялся количеством а просто переставлялся:
1<->n-1; 2<->n-2; 3<->n-3; 4<->n-4; итд
1
valeriikozlov
Эксперт С++
4691 / 2517 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
30.12.2009, 11:11 6
Вот этот код проверьте, что-то Вы не так делали.
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
clrscr();
printf("*Введите размерность массива: ");
int n;
randomize();
srand( time( NULL ) );
 
int s=scanf("%d",&n);
if (s!=1){
        printf("Неверные значения");
        getch();
        exit(0);}
int *x = new int [n];
for(int i=0;i<n;i++){
x[i]=random(100)-random(50);
 
 
printf("%5d",x[i]);
}
 
int count=1;
for(i=0;i<n;i++)
        if(x[i]%2) count=count*x[i];
printf("\n\nпроизведение нечетных элементов: %d",count);
 
int max=x[0], imax=0;
for(i=1;i<n;i++)
if(max<x[i]){max=x[i]; imax=i;}
int min=x[0], imin=0;
for(i=1;i<n;i++)
if(min>x[i]){min=x[i]; imin=i;}
int iman;
if(imax<imin) iman=imin-imax-1;
else iman=imax-imin;
printf("\n\nкол-во элементов между min=%d и max=%d:  %d ",min,max,iman);
 
int temp;
for(i=0;i<n/2;i++){
temp=x[i];x[i]=x[n-1-i];x[n-1-i]=temp;
}
// вот здесь пункт В) уже выполнен 
printf("\n\nelementu n-i \n");
for(i=0;i<n;i++)
printf("%5d",x[i]);
 
printf("\n\nМассив отсортированный выбором:\n");
for(i=0;i<n;i++){
        int k=i;
        for(int j=i+1;j<n;j++)
                if(x[k]>x[j]) k=j;
        if(k!=i){int temp=x[i]; x[i]=x[k];
                x[k]=temp;}
        printf("%5d",x[i]);
        }
getch();
delete [] x;
}

Цитата Сообщение от Fajyz Посмотреть сообщение
а мне недо чтоб они переставились начиная со 2-го:
2->n; 3->n-1; 4=>n-2 ; 5->n-3; итд
Вот это не совсем понял? Приведите лучше пример.
0
Fajyz
4 / 4 / 0
Регистрация: 29.12.2009
Сообщений: 31
30.12.2009, 11:26  [ТС] 7
Ну если я ввожу размерность 10 то например выводит такие числа:
-35 23 -14 61 28 -5 52 30 -27 -7

Поменять местами i-й элемент c n-i-тым элементом, по вашему циклу выводит так:
-7 -27 30 52 -5

а нужно чтобы было так:
-27 30 52 -5 28 61 -14 23 -35 -7
то есть сам элемент "n" остается на месте.
0
valeriikozlov
Эксперт С++
4691 / 2517 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
30.12.2009, 11:39 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Fajyz Посмотреть сообщение
Поменять местами i-й элемент c n-i-тым элементом, по вашему циклу выводит так:
-7 -27 30 52 -5
Нет у меня получается так: -7 -25 30 52 -5 28 61 -14 23 -35
Вот что бы последний элемент оставался на месте:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
void main()
{
clrscr();
printf("*Ââåäèòå Г°Г*çìåðГ*îñòü Г¬Г*Г±Г±ГЁГўГ*: ");
int n;
randomize();
srand( time( NULL ) );
 
int s=scanf("%d",&n);
if (s!=1){
        printf("ГЌГҐГўГҐГ°Г*ûå Г§Г*Г*Г·ГҐГ*ГЁГї");
        getch();
        exit(0);}
int *x = new int [n];
for(int i=0;i<n;i++){
x[i]=random(100)-random(50);
 
 
printf("%5d",x[i]);
}
 
int count=1;
for(i=0;i<n;i++)
        if(x[i]%2) count=count*x[i];
printf("\n\nïðîèçâåäåГ*ГЁГҐ Г*ГҐГ·ГҐГІГ*ûõ ýëåìåГ*òîâ: %d",count);
 
int max=x[0], imax=0;
for(i=1;i<n;i++)
if(max<x[i]){max=x[i]; imax=i;}
int min=x[0], imin=0;
for(i=1;i<n;i++)
if(min>x[i]){min=x[i]; imin=i;}
int iman;
if(imax<imin) iman=imin-imax-1;
else iman=imax-imin;
printf("\n\nêîë-ГўГ® ýëåìåГ*òîâ ìåæäó min=%d ГЁ max=%d:  %d ",min,max,iman);
 
int temp;
for(i=0;i<n/2;i++){
temp=x[i];x[i]=x[n-2-i];x[n-2-i]=temp;
}
// âîò çäåñü ГЇГіГ*ГЄГІ Г‚) óæå âûïîëГ*ГҐГ* 
printf("\n\nelementu n-i \n");
for(i=0;i<n;i++)
printf("%5d",x[i]);
 
printf("\n\nГЊГ*Г±Г±ГЁГў îòñîðòèðîâГ*Г*Г*ûé âûáîðîì:\n");
for(i=0;i<n;i++){
        int k=i;
        for(int j=i+1;j<n;j++)
                if(x[k]>x[j]) k=j;
        if(k!=i){int temp=x[i]; x[i]=x[k];
                x[k]=temp;}
        printf("%5d",x[i]);
        }
getch();
delete [] x;
}
0
Fajyz
4 / 4 / 0
Регистрация: 29.12.2009
Сообщений: 31
30.12.2009, 11:52  [ТС] 9
Извиняюсь, просто сам проглядел благодарю за помощь.
0
30.12.2009, 11:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2009, 11:52

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

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

В одномерном массиве вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами
Ребят помогите!) нужно решить одну задачку.. В одномерном массиве, состоящем из n ...


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

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

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