Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118

Поменять местами максимальный элемент массива с его предпоследним элементом

01.11.2016, 18:49. Показов 4575. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как реализовать В массиве из 12 целых чисел поменять местами максимальный элемент с предпоследним элементом массива.
Нужно что бы все числа выводились в listbox1 но у меня не получается сделать вывод всех чисел .
Сделал считает максимальный но с выводом затрудняюсь подскажите как сделать?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
    int max = arr[0];
 
    for (int i = 0; i < 11; ++i) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
Использовал для нахождения максимального числа подскажите что дальше?

Добавлено через 2 минуты
что то типо такого max = arr[10] ?
Но как же сделать вывод результат целого что бы было 1.2....120 11 а не 1 число которое заменили
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2016, 18:49
Ответы с готовыми решениями:

В массиве поменять местами максимальный элемент с предпоследним элементом массива
Ввод в memo1 последовательность не важна. Задание: В массиве из 12 целых чисел поменять местами максимальный элемент с предпоследним...

Дан массив из N чисел. Найти наибольший элемент массива и поменять его местами с наименьшим элементом
Найти наибольший элемент массива и поменять его местами с наименьшим элементом. Builder. C++

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

24
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
01.11.2016, 20:48
shooker, для начала вам нужно еще запомнить индекс максимального элемента что бы потом поменять местами, ну и
C++
1
for (int i = 0; i < 11; ++i)
означает что у вас 11 чисел в массиве, если 12 надо писать <=11 или <12
0
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
01.11.2016, 22:52  [ТС]
starkiron, ну в верху я привел это for (int i = 0; i < 11; ++i)
или вы имеете виду перед listbox1 ?

Добавлено через 1 минуту
starkiron,
for (int i = 0; i < 11; ++i)
{
ListBox1 ???
}

Добавлено через 6 минут
starkiron, мой код пока такой
C++
1
2
3
4
5
6
7
8
9
10
11
int x[12];
for(int i=0;i<=11;i++)
{
x[i]=StrToInt(Memo->Lines->Strings[i]);
}
int max =x[1];
for(int j=0;j<=11;j++)
{
if(x[j]>max)
max=x[j];
}
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
01.11.2016, 23:41
shooker,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int x[12];
for(int i=0;i<=11;i++)
{
x[i]=StrToInt(Memo->Lines->Strings[i]);
}
int max =x[1];
int m=1;
for(int j=0;j<=11;j++)
{
if(x[j]>max)
{
max=x[j];
m=j;
}
}
 
int temp=x[10];
x[10]=max;
x[m]=temp;
поменяли максимальный с предпоследним, далее уже массив выводите как хотите...

Добавлено через 4 минуты
shooker,
вывод что то типо этого если есть ошибки поправите но в целом так все
C++
1
2
3
4
for(int j=0;j<=11;j++)
{
ListBox1->Items->Add(IntToStr(x[j]))
}
}
1
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
02.11.2016, 19:19  [ТС]
starkiron, спасибо за помощь !

Добавлено через 18 часов 34 минуты
starkiron, что то пошло не так ) не получилось немного выводит левые переписал код максимума и теперь проблема сделал замену на предпоследнее число но получается 2 числа одинаковых типо 100 и 100 а не максимальное и предпоследнее

Добавлено через 30 минут
starkiron,
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x[12];
int buf,m=1;
for(int i=0;i<=11;i++)
{
x[i]=StrToInt(Memo1->Lines->Strings[i]);
}
int max = x[1];
for(int j=0;j<=11;j++)
{
if(x[j] > max)
max=x[j];
m=j;
buf=max;
max=x[10];
x[10]=buf;
}
for(int n=0;n<=11;n++)
{
ListBox1->Items->Add(x[n]);
}
}
//---------------------------------------------------------------------------
Что то такое сделал и выводит 2 макс числа ) но не меняет их
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
02.11.2016, 19:38
shooker,
Цитата Сообщение от shooker Посмотреть сообщение
buf=max; max=x[10]; x[10]=buf;
это что такое вообще?))
я же написал как сделать

C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int j=0;j<=11;j++)
{
if(x[j]>max)
{
max=x[j];
m=j;
}
}
 
int temp=x[10];
x[10]=max;
x[m]=temp;
прямо вот дословно, max=x[10]; означает у вас что вы меняете местами не элементы массива, а просто переменной присвоили значение, переменная к массиву вообще никак не относится, и нужно делать перестановку уже после цикла и условия.

Добавлено через 42 секунды
0
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
02.11.2016, 19:56  [ТС]
starkiron, по вашему способо ввожу например
PHP
1
2
3
4
5
6
7
8
9
10
11
12
100
1
2
3
4
5
6
7
8
9
10
11
Выводит
PHP
1
2
3
4
5
6
7
8
9
10
11
12
100
1
2
3
4
5
6
7
8
9
100
10
Добавлено через 7 минут
starkiron, int temp = x[10];
x[10]=Max;
Max=temp;
то тогда числа правильно выводятся но 100 максимальная не меняется нужно делать еще 1 замену?для теперь x[10]?
1
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
02.11.2016, 20:05
Лучший ответ Сообщение было отмечено shooker как решение

Решение

shooker,

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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x[12];
int buf,m=1;
for(int i=0;i<=11;i++)
{
x[i]=StrToInt(Memo1->Lines->Strings[i]);
}
int max = x[1];
for(int j=0;j<=11;j++)
{
if(x[j] > max)
{
max=x[j];
m=j;
}
}
 
int temp=x[10];
x[10]=max;
x[m]=temp;
 
for(int n=0;n<=11;n++)
{
ListBox1->Items->Add(x[n]);
}
}

все выводит верно
ввод
100
1
2
3
4
5
6
7
8
9
10
11

вывод

10
1
2
3
4
5
6
7
8
9
100
11

Добавлено через 33 секунды
shooker, я вам этот код выше уже писал
1
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
02.11.2016, 20:09  [ТС]
starkiron, спасибо вот теперь работает была проблема не с вашим кодом.. а не было 1 скобки((
1
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
02.11.2016, 20:10
shooker, понятное дело) ну просто я написал выше правильно, могли бы скопировать) ну или просто разобраться хорошенько)
1
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
02.11.2016, 20:13  [ТС]
starkiron, можете еще подсказать вот задание Найти номер первого нулевого элемента массива из 14 целых чисел и произведение элементов, расположенных до него, а среди элементов, расположенных правее первого нулевого, найти максимальный элемент.

Что такое первого нулевого элемента массива.каждая сточка = номеру массива ? и вот
[0] = 1
[1] = 5
.....
[13] = 22
или это число 0 в массиве?
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
02.11.2016, 20:16
shooker, первый нулевой значит его значение равно 0, т.е
C++
1
if(x[i]==0)
грубо говоря
но что бы найти именно первый нужно выходить из цикла
C++
1
2
3
4
5
6
7
8
9
m=-1;
for(int j=0;j<14;j++)
{
if(x[j]==0)
{
m=j; //индекс первого нулевого
Break;//выход из цикла если найден 0
}
}
если m так и будет -1 значит нет нулей
1
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
20.11.2016, 14:43  [ТС]
starkiron, привет не подскажешь как сделать что бы starkiron,
Заменить в нечетных строках матрицы действительных чисел размером 33 отрицательные элементы нулями, а положительные элементы – единицами.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
for(i=1;i<=3;i++){
for(j=1;j<=3;j++){
if(mb->Cells[j][i]>0)
{
mb->Cells[1][i]=1;
mb->Cells[3][i]=1;
}
else
{
mb->Cells[1][i]=0;
mb->Cells[3][i]=0;
}
}
}
}
нечетные строки это весь первый и 3 столбец и я сделал что бы менялись цифры на 1 , но отрицательные меняются тоже на 1 в чем ошибка?
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
20.11.2016, 14:58
shooker, ну вообще отсчет ведется с нуля
C++
1
for(i=1;i<=3;i++)
условие четности нечетности
C++
1
if(i%2!=0)
- четная строка
если цикл
C++
1
for(i=0;i<3;i++)
то условие
C++
1
if((i+1)!=0)
в общем операция остатка от деления
1
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
20.11.2016, 15:15  [ТС]
starkiron, спасибо за подсказку

Добавлено через 11 минут
Цитата Сообщение от starkiron Посмотреть сообщение
if(i%2!=0)
starkiron, вышел такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
for(i=1;i<4;i++){
for(j=1;j<4;j++){
if(i%2!=0)
{
if(mb->Cells[j][i]>0)
{
 mb->Cells[j][i]=1;
 } else
 {
   mb->Cells[j][i]=0;
}
}
}
}
}
надеюсь правильно,еще раз спасибо

Добавлено через 1 минуту
starkiron, а for(i=1;i<4;i++){ начинается с 1 потому что 0 строка в StringGrid для нумерации будет использоваться
1
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
20.11.2016, 15:18
shooker, вроде верно, проверите на примере
1
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
27.11.2016, 15:07  [ТС]
starkiron, подскажи пожалуйста как сделать в 2 stringGrid ,выводит 1 и 3 строка ,а четную не могу вывести(
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
27.11.2016, 16:55
shooker,
Цитата Сообщение от shooker Посмотреть сообщение
starkiron, а for(i=1;i<4;i++){ начинается с 1 потому что 0 строка в StringGrid для нумерации будет использоваться
цикл так же с нуля, ну тут как удобно, либо строка грида потом i+1, а если цикл с 1 то элемент массива i-1, собственно я вот вопрос последний ваш не понял, напишите подробнее
0
3 / 3 / 0
Регистрация: 25.09.2016
Сообщений: 118
27.11.2016, 21:27  [ТС]
starkiron, ну вот есть в ++c bilder элемент stringGrid мне я ввожу в 1 значения во 2 результат ...1-3 вывел вот 2 не могу
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
27.11.2016, 22:57
shooker, все равно не понятно) кусок кода скиньте)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2016, 22:57
Помогаю со студенческими работами здесь

Найти максимальный элемент массива и поменять его местами с первым элементом
1)(ввод элементов с клавиатуры)Дан одномерный массив целых чисел. Найти максимальный элемент массива и поменять его местами с первым...

Найти максимальный элемент массива и поменять его местами с последним элементом
Дан одномерный массив, который содержит не более 200 целых чисел. Найти максимальный элемент и поменять его местами с последним элементом.

Найти максимальный элемент массива и поменять его местами с последним элементом
Дан массив A размера N. Упорядочить его по возрастанию методом сортировки простым выбором: найти максимальный элемент массива и поменять...

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

Найти максимальный элемент массива и поменять его местами с первым элементом
В качестве условия задачи берется задание из 5 лабораторной работы, но работать не с одним массивом, а с двумя А1 и А2. В основной...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru