Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 2
1

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

06.03.2015, 21:19. Показов 925. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
//Даны 2 одномерных массива. Во всех последовательностях отрицательных чисел поменять
//местами элементы с максимальным и минимальным значениями.


#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdlib.h>


using namespace std;

int vvod(int p[], int &k, char im);// функция, которая вводит в массив
int obrabotka(int p[], int k); // функция, которая исчет последовательности отрицательных чисел
int perestanovka(int p[], int max, int min);// функция, которая исчет в последовательности наибольшие и наименьшие значения и меняет их местами
int vivod(int p[], int k, char im);// функция которая выводит массив


int main()// тут я думаю все и так понятно
{
setlocale(LC_ALL, "Russian");
int a[100], b[100], n, m;
vvod(a, n, 'A');
vvod(b, m, 'B');
obrabotka(a, n);
obrabotka(b, m);
vivod(a, n, 'A');
vivod(b, m, 'B');

system("PAUSE"); // остановка выполнения программы (чтобы не закнылось окно)
return 0;
}

int vvod(int p[], int&k, char im)
{
cout << "введите число элементов массива " << im << endl;
cin >> k;
for (int i = 0; i < k; i++)
{
cout << "введите " << im << "[" << i << "] = ";
cin >> p[i];
};
return 1;
}
int obrabotka(int p[], int k)
{
int PozNach = 0, PozEnd = 0;
bool f1 = false, f2 = false, f3 = true; // флажки для регулировки входа в условные операторы
for (int i = 0; i < k; i++)
{
if (p[i] < 0 && f3 == true)// определение индекса первого элемента последовательности отрицательных чисел
{
PozNach = i;
f1 = true;// для того чтобы зайти в оператов вызова функции обратотки
f3 = false;// для того чтобы в этот условный оператор заходить только после одработки предыдущей последовательности
}
if (p[i] < 0 && p[i + 1] >= 0)// определение индекса полседнего элемента последовательности отрицательных чисел
{
PozEnd = i;
f2 = true;// для того чтобы зайти в оператов вызова функции обратотки
}
if (f1 == true && f2 == true) // после того как последовательность определена вызывается функция обмена элементов
{
perestanovka(p, PozNach, PozEnd);
f1 = false;// возвращение всех флажков в исходное состояние, чтобы программа не игногила операторы
f2 = false;
f3 = true;
}
}
// необходимый кастыль если последний элемент массива отрицательный(предыдущий оператор его не определит если он последний)
// первое условие проверяет последний элемент, а второе проверяет есть ли в последовательности еще элементы(те не оди ли он в конце отрицательный)
if (p[k - 1] < 0 && p[k - 2]<0)
{
PozEnd = k;
perestanovka(p, PozNach, PozEnd);
}
return 1;
}

int perestanovka(int p[], int i1, int i2)// функция по поиску и перестановке элементов
{
int max = p[i1], min = p[i1], pozmax = i1, pozmin = i1, t;// инициализация и присвоение начальных эелементов переменнным(индексам - первый индекс определенной последовательности в пред функции, значение максимального и минимального элеимента присваивается значение первого элемента последовательности

for (int i = i1; i < i2 + 1; i++)
{
if (p[i] < min)//перебор всех элементов последовательности для поиска минимального элемента
{
min = p[i];
pozmin = i;
}

if (p[i]>max)//перебор всех элементов последовательности для поиска максимального элемента
{
max = p[i];
pozmax = i;
}
}
//замена элементов с помощью вспомогательной переменной t
t = p[pozmin];
p[pozmin] = p[pozmax];
p[pozmax] = t;
return 1;
}


int vivod(int p[], int k, char im) //функция, которая выводи сформированный массив
{
cout << "сформированный массив " << im << endl;
for (int i = 0; i < k; i++)
cout << p[i] << "; ";
cout << endl;
return 1;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2015, 21:19
Ответы с готовыми решениями:

Во всех последовательностях чисел поменять местами элементы с максимальным и минимальным значениями
//Даны 2 одномерных массива. Во всех последовательностях отрицательных чисел поменять //местами...

Поменять местами элементы с максимальным и минимальным значениями
Пожалуйста помогите решить задачи. 1. Дан массив на 100 элементов случайных цифр в диапазоне от...

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

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

0
06.03.2015, 21:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2015, 21:19
Помогаю со студенческими работами здесь

Поменять местами строки с максимальным и минимальным элементами
вот код который определяет мин и макс елементи матрици а мне ище нужно поменять строки етих...

Поменять местами строку с максимальным и минимальным элементом матрицы
Задана матрица размером NxN. Поменять местами строку с максимальным элементом матрицы и строку с...

Поменять местами строку матрицы с максимальным и минимальным элементом
Проблема такова: программа меняет местами строку с максимальным и минимальным элементом. Когда я...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru