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

Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Bleize
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 26
26.11.2010, 21:13     Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение #1
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение

Добавлено через 14 минут
P.S. При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины N. Затем пользователь вводит реальную длину массива (не больше N) и работает с массивом той длины, которую он сам указал. Остальные элементы (хотя память под них и будет выделена) не рассматриваются. При уменьшении или увеличении длины массива необходимо изменять его реальную длину.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2010, 21:13     Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение
Посмотрите здесь:

C++ Ограничить значение всех элементов, абсолютные значения которых превышают среднее для позитивных и негативных элементов
Найти кол-во элементов матрицы, значения которых не превышают по абсолютной величине Х C++
Найти значение 3-го по величине элемента и значение всех элементов массива, которые его превышают, заменить на найденное значение C++
Найти наименьшее положительное значение элемента массива и его номер. C++
C++ В одномерном массиве значение каждого элемента заменить разностью этого значения и среднего арифметического значения других элементов
найти значение третьего по величине элемента массива C++
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение. Массив в памяти разм C++
C++ В двухмерном массиве (размеры массива N M и значения его элементов вводить с клавиатуры) найти указанное значение

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ne6u4u
 Аватар для ne6u4u
12 / 12 / 0
Регистрация: 14.11.2010
Сообщений: 29
27.11.2010, 01:11     Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение #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
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
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    const int MAX = 100;
    int num;
    int arr[MAX], temp[MAX];
    cout << "Введите размерность массива (не больше " << MAX << "): ";
    cin >> num;
    for (int i=0; i<num; i++)
    {
        cout << "Введите " << i+1 << " элемент массива: ";
        cin >> arr[i];
        temp[i] = arr[i];
    }
 
    //сортировка по убыванию методом пузырька
    for (int i=0; i< num; i++)
    {
        for (int j=0; j<num; j++ )
        {
            int buf;
            if (temp[j] < temp[j+1])
            {
                buf = temp[j];
                temp[j] = temp[j+1];
                temp[j+1]=buf;
            }
        }
 
    }
 
    // вывод введенного массива
    cout << endl;
    for (int i=0; i<num; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
 
    //вычисление третьего по величине значения, замена, вывод
    int count = 0;
    int tret = 0;
    for (int i=num; i>0; i--)
    {
        if (temp[i-1] != temp[i])
        {
            count++;
            if (count == 3)
                tret = temp[i-1];
        }
    }
    if (tret != 0)
    {
        cout << "Третье по величине число: " << tret << endl;
        cout << endl << "Преобразованный массив: "<< endl;
        for (int i=0; i<num; i++)
        {
            if (arr[i] > tret)
                arr[i] = tret;
            cout << arr[i] << " ";
        }
        cout << endl;
    } 
    else
    {
        cout << "В введенном массиве существует только два числа!!! Повторите ввод." << endl;
    }
    
    return 0;
}
Как то слишком объемно получилось, возможно как-то можно и короче
vlad310362
1 / 1 / 0
Регистрация: 09.02.2013
Сообщений: 18
29.05.2013, 17:04     Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение #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
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define n 200
int main()
{
  int mas[n],zn,i,j,k, max1,max2,max3,x;
  for(i=0;i<n;++i){
    mas[i] = 0+rand()%100;
    printf("%3d ",mas[i]);}
    printf("\n");
    printf("\n");
    getch(); 
  max1 = mas[0];
  max2 = mas[0];
  max3 = mas[0];
  for(i=0;i<n;i++){
  if (mas[i]>max1){max1=mas[i];}
}
printf("max1 %3d\n",max1);
for(i=0;i<n;i++){
if((mas[i]>max2)&&(mas[i]<max1)){max2=mas[i];}
}
printf("max2 %3d\n",max2);
for(i=0;i<n;i++){
if((mas[i]>max3)&&(mas[i]<max2)){max3=mas[i];}
}
printf("max3 %3d\n",max3);
 
for(i=0;i<n;i++){
if(mas[i]>max3){mas[i]=max3;}
printf("%3d ",mas[i]);
}
 max1 = mas[0];
 for(i=0;i<n;i++){
 if (mas[i]>max1){max1=mas[i];}
}
printf("max1 %3d\n",max1);
 
 
getch();                                                     
return 0;
}
Yandex
Объявления
29.05.2013, 17:04     Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение
Ответ Создать тему
Опции темы

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