Консультация № 174173
13.11.2009, 11:47
35.00 руб.
0 10 2
Есть задачка: "Поменять местами первый максимальный и первый минимальный элементы." (перестановка в массивах, C++). Нужна полная блок схема этой задачи. Где возможно использовать цикл For.
Заранее благодарен.

Обсуждение

Неизвестный
13.11.2009, 12:04
общий
это ответ
Здравствуйте, starcode.
вам хоть предыдущие схемы помогли?
Прикрепленные файлы:
Неизвестный
13.11.2009, 12:04
общий
кстати зачем вы пишете что язык c++?
Неизвестный
13.11.2009, 12:24
общий
Я поставил условие жеские, так что если получаем элемент равный максимальному индекс максимального не должен изменится, получится что имеем самый близкий к 0
давно
Академик
20764
1861
13.11.2009, 12:25
общий
Архипов Александр Леонидович:
Если в сравнениях неравенство строгое - то первый, нестрогое - последний
Неизвестный
13.11.2009, 12:30
общий
Архипов Александр Леонидович:
Да Вы не правы, данный алгоритм именно работает с "первыми" минимальным и максимальным элементами. Для того чтобы были ПОСЛЕДНИЕ в условиях определения максимума/минимума следует добавить знак равно (=).
Код:
если (mas[index_max] <= mas[i]) ...
если (mas[index_min] >= mas[i]) ...
Неизвестный
13.11.2009, 12:30
общий
Airyashov:
помогли, огромное спасибо, но всё ещё ковыряюсь в них, разбираюсь с некоторыми частями...
Неизвестный
13.11.2009, 12:31
общий
Airyashov:
Если не секрет, а в какой программке Вы нарисовали сию красоту ;)?
Неизвестный
13.11.2009, 12:31
общий
Хватов Сергей:
да, всё верно
Неизвестный
13.11.2009, 12:34
общий
Gh0stik:
MS Visio 2003, более на работе ничего нет
Неизвестный
13.11.2009, 13:33
общий
это ответ
Здравствуйте, starcode.
Реализация на C++:
Код:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

template<class T,size_t Dim>
void changeMinMax(T (&array)[Dim])
{
T *item,*min,*max;
const T* const end=array+Dim;
for(item=min=max=array;item!=end;++item)
{
if(*item>*max)
{
max=item;
}
else if(*item<*min)
{
min=item;
}
}
swap(*min,*max);
}

template<class T,size_t Dim>
void printArray(const char* const message,const T (&array)[Dim])
{
cout<<message<<endl;
for(size_t i=0;i<Dim;++i)
{
cout<<setw(4)<<array[i]<<' ';
}
cout<<endl;
}

template<class T,size_t Dim>
void genArray(T (&array)[Dim])
{
for(size_t i=0;i<Dim;++i)
{
array[i]=rand()%100-50;
}
}

int main(int argc,char** argv)
{
srand(static_cast<unsigned int>(time(0)));
setlocale(LC_ALL,"russian_russia");
int array[10];
genArray(array);
printArray("Исходный массив:",array);
changeMinMax(array);
printArray("Результат:",array);
system("PAUSE");
return 0;
}

Блок-схема шаблонной ф-ии template<class T,size_t Dim> void changeMinMax(T (&array)[Dim])
Форма ответа