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

Задан вещественный массив размера N pelles c - C++

Восстановить пароль Регистрация
 
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
12.01.2011, 00:19     Задан вещественный массив размера N pelles c #1
Задан вещественный массив размера N. Найти сумму второго максимума и третьего минимума массива. Все элементы, расположенные между ними, отсортировать в порядке возрастания. Пример:
0 8 6 4 7 2 1 4 9 3 → 10, 0 8 4 6 7 2 1 4 9 3
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2011, 00:19     Задан вещественный массив размера N pelles c
Посмотрите здесь:

C++ Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины
C++ pelles c Задан целочисленный массив размера N
C++ Задан вещественный массив из N.
вещественный массив C++
C++ Задан вещественный массив размера N. Создать целочисленный массив такого же размера, в котором будут записаны индексы исходного массива в порядке во
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
12.01.2011, 03:53     Задан вещественный массив размера N pelles c #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
29
30
31
32
33
34
35
36
#include<iostream>
#include<ctime>
#include<algorithm>
using namespace std;
 
int main(){
    int n, max1=0, max2=0, min1=0, min2=0, min3=0;
    cout<<"N= ";
    cin>>n;
    srand(time(0));
    float *mas=new float[n];
    cout<<"\n\n";
    for(int i=0;i<n;i++){
        mas[i]=rand()%100-50.5;
        cout<<mas[i]<<"   ";
    }
    for(int i=0;i<n;i++){
        if(mas[i]>mas[max1])max1=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]>mas[max2]&&mas[i]!=mas[max1])max2=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]<mas[min1])min1=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]<mas[min2]&&mas[i]!=mas[min1])min2=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]<mas[min3]&&mas[i]!=mas[min1]&&mas[i]!=mas[min2])min3=i;
    }
    cout<<"\n\nmax2= "<<mas[max2]<<", min3= "<<mas[min3]<<endl;
    cout<<"sum= "<<mas[max2]+mas[min3]<<"\n\n";
    max2<min3?sort(mas+max2+1, mas+min3):sort(mas+min3+1, mas+max2);
    for(int i=0;i<n;i++) cout<<mas[i]<<"   ";
}
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
12.01.2011, 13:55  [ТС]     Задан вещественный массив размера N pelles c #3
Цитата Сообщение от igorrr37 Посмотреть сообщение
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
#include<iostream>
#include<ctime>
#include<algorithm>
using namespace std;
 
int main(){
    int n, max1=0, max2=0, min1=0, min2=0, min3=0;
    cout<<"N= ";
    cin>>n;
    srand(time(0));
    float *mas=new float[n];
    cout<<"\n\n";
    for(int i=0;i<n;i++){
        mas[i]=rand()%100-50.5;
        cout<<mas[i]<<"   ";
    }
    for(int i=0;i<n;i++){
        if(mas[i]>mas[max1])max1=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]>mas[max2]&&mas[i]!=mas[max1])max2=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]<mas[min1])min1=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]<mas[min2]&&mas[i]!=mas[min1])min2=i;
    }
    for(int i=0;i<n;i++){
        if(mas[i]<mas[min3]&&mas[i]!=mas[min1]&&mas[i]!=mas[min2])min3=i;
    }
    cout<<"\n\nmax2= "<<mas[max2]<<", min3= "<<mas[min3]<<endl;
    cout<<"sum= "<<mas[max2]+mas[min3]<<"\n\n";
    max2<min3?sort(mas+max2+1, mas+min3):sort(mas+min3+1, mas+max2);
    for(int i=0;i<n;i++) cout<<mas[i]<<"   ";
}
Не подходит, нужен язык си.
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
17.01.2011, 23:37  [ТС]     Задан вещественный массив размера N pelles c #4
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
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
 
 
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[i]);}
    printf("\n prostoi massiv \n");
    for(int i = 0; i < n; i++){
    printf("%lf ", arr[i]);}
    
    double max = arr[0];
 
    for(int pos = 0; pos < n; pos++)
    {
            if(max < arr[pos +1]){
            max = arr[pos+1];
        }
    
    }
    
    printf("\n max = %5.lf", max);
 
 
    printf("\n sorted: \n");
    for (int x = 0; x < n; x++) {
        printf("%lf ", arr[x]);
    }
    return 0;
}
Вроде бы кое-как разобрался, удалось получить первй максимум, но, удается его получить только на положительных числах, как только я начинаю вводить отрицательные числа в значении максимального тупо выбивает 0. Вопрос один, почему так происходит.

Добавлено через 4 минуты
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 <stdio.h>
#include <conio.h>
#include <math.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
 
 
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[i]);}
    printf("\n prostoi massiv \n");
    for(int i = 0; i < n; i++){
    printf("%lf ", arr[i]);}
    
    double max = arr[0];
 
    for(int pos = 1; pos < n; pos++)
    {
            if(max < arr[pos]){
            max = arr[pos];
        }
    
    }
    
    printf("\n max = %lf", max);
 
 
    printf("\n sorted: \n");
    for (int x = 0; x < n; x++) {
        printf("%lf ", arr[x]);
    }
    return 0;
}
Чутка поменял и все стало здорово. Все, можно тему закрывать.

Добавлено через 5 минут
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 <conio.h>
#include <math.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
 
 
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[i]);}
    printf("\n prostoi massiv \n");
    for(int i = 0; i < n; i++){
    printf("%lf ", arr[i]);}
    
    double max = arr[0];
 
    for(int pos = 1; pos < n; pos++)
    {
            if(max < arr[pos]){
            max = arr[pos];
        }
    
    }
    
    double max2;
 
    for(int pos = 1; pos < n; pos++)
    {
            if(max2 < arr[pos] && max > max2){
            max2 = arr[pos];
        }
    
    }
    
    printf("\n max2 = %lf", max2);
 
    printf("\n sorted: \n");
    for (int x = 0; x < n; x++) {
        printf("%lf ", arr[x]);
    }
    return 0;
}
Хотя, пока закрывать рано, есть непонятки со вторым максимумпри отрицательных числах, то бишь, выбивается почему-то первый максимум.

Добавлено через 1 час 55 минут
И еще один вопрос, можно ли вытащить элемент из цикла и задействовать его в новом цикле?

Добавлено через 4 часа 7 минут
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main(int argc, char *argv[])
{
    unsigned int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
 
 
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[i]);}
    printf("\n prostoi massiv \n");
    for(int i = 0; i < n; i++){
    printf("%lf ", arr[i]);}
    
       double max = arr[0];
         for(int pos = 1; pos < n; pos++)
        {
                        if(max < arr[pos]){
                        max = arr[pos];
                }
        
        }
        printf("\n max = %lf", max);
    double min = arr[0];
         for(int pos = 1; pos < n; pos++)
        {
                        if(min > arr[pos]){
                        min = arr[pos];
                }
        
        }
        printf("\n min = %lf", min);
 
            double max2 = min;
    for(int pos = 0; pos < n; pos++)
        {
                        if(max2 < arr[pos] && arr[pos] < max){
                        max2 = arr[pos];
                }
        
        }
        printf("\n max2 = %lf", max2);
    
            double min2 = max;
    for(int pos = 0; pos < n; pos++)
        {
                        if(min2 > arr[pos] && arr[pos] > min){
                        min2 = arr[pos];
                }
        
        }
        printf("\n min2 = %lf", min2);
    
            double min3 = max;
    for(int pos = 0; pos < n; pos++)
        {
                        if(min3 > arr[pos] && arr[pos] > min2){
                        min3 = arr[pos];
                }
        
        }
        printf("\n min3 = %lf", min3);
 
    int o =0; int p = 0;
    
    for(int i = 0; i < n; i ++){
        if(max2==arr[i])
            o = i;
    }
    printf(" \n max2 na pozitcii %i  \n", o);
 
    for(int i = 0; i < n; i ++){
        if(min3==arr[i])
            p = i;
    }
    printf(" \n min3 na pozitcii %i  \n", p);
 
    int z; int y;
    if(n<p){
        z = o-1;
        y = p+1;
 
    }
    else if(p<n){
    z = o+1;
    y = p-1;
    }
 
    for(int pos = 0; pos <n; pos++){
    for(int x = pos+1; x <n; x++)
        {
            if(arr[pos] > arr[x] && arr[pos] != max2 && arr[pos] != min3 && arr[x] != max2 && arr[x] != min3){
            int mizer = arr[x];
                arr[x] = arr[pos];
                arr[pos] = mizer;
            }
        }
    }
 
    printf("\n sorted: \n");
    for (int x = 0; x < n; x++) {
        printf("%lf ", arr[x]);
    }
    return 0;
}
Получил третий минимум и второй максимум соответственно, осталось отсортировать элементы, которые между ними.
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
19.01.2011, 12:48  [ТС]     Задан вещественный массив размера N pelles c #5
Так, эту тему можно закрывать, все нормально ужеполчил и сделал.
Yandex
Объявления
19.01.2011, 12:48     Задан вещественный массив размера N pelles c
Ответ Создать тему
Опции темы

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