Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2015, 22:29   #1
Dikins
 
Регистрация: 01.01.2015
Сообщений: 4
Радость Статические массивы (C++)

В одномерном массиве, состоящем из вещественных элементов, вычислить:
1) Произведение индексов максимального и минимального элементов.
2) Поменять местами первый отрицательный элемент с последним положительным.

Помогите пожалуйста, буду благодарен
Dikins вне форума Ответить с цитированием
Старый 02.01.2015, 02:56   #2
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Наработки есть?
помог - жми на весы

Последний раз редактировалось Chainik!; 02.01.2015 в 03:08.
Chainik! вне форума Ответить с цитированием
Старый 02.01.2015, 07:32   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Или хотя бы покажи код ввода массива.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.01.2015, 11:14   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	int n;
	cin >> n;
	
	vector<int> v(n);
	for (int i = 0; i < n; i++)
		cin >> v[i];

	cout << *max_element(v.begin(), v.end()) * *min_element(v.begin(), v.end()) << endl;
	iter_swap(find_if(v.begin(), v.end(), [](int n) {return n < 0; }), find_if(v.rbegin(), v.rend(), [](int n) {return n > 0; }));

	for (int i = 0; i < n; i++)
		cout << v[i] << " ";

	return 0;
}
Poma][a вне форума Ответить с цитированием
Старый 02.01.2015, 11:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рома, у автора статические массивы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.01.2015, 12:16   #6
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
//-----------------------------------------------------------------------------------
void randomnumber(double *arr, int n)
{
	for(int i = 0; i < n; i++)
		*(arr + i) = (double)(rand()%10001 - 1000)/100;
}
//-----------------------------------------------------------------------------------
void print(double *arr, int n)
{
	for(int i = 0; i < n; i++)
		cout << *(arr + i) << "\t";
}
//-----------------------------------------------------------------------------------
int indexmax(double *arr, int n)
{
	int max = *(arr + 0);
	int index = 0;
	for(int i = 1; i < n; i++)
	{
		if(*(arr + i) > max)
		{
			max = *(arr + i);
			index = i;
		}
	}
	return index;
}
//-----------------------------------------------------------------------------------
int indexmin(double *arr, int n)
{
	int min = *(arr + 0);
	int index = 0;
	for(int i = 1; i < n; i++)
	{
		if(*(arr + i) < min)
		{
			min = *(arr + i);
			index = i;
		}
	}
	return index;
}
//-----------------------------------------------------------------------------------
int indexnegativ(double *arr, int n)
{
	int negativ = 0;
	for(int i = 0; i < n; i++)
	{
		if(*(arr + i) < 0)
		{
			negativ = i;
			i = n;
		}
	}
	return negativ;
}
//-----------------------------------------------------------------------------------
int indexpositiv(double *arr, int n)
{
	int positiv = 0;
	for(int i = (n - 1); i > - 1; i--)
	{
		if(*(arr + i) > 0)
		{
			positiv = i;
			i = -1;
		}
	}
	return positiv;
}
//-----------------------------------------------------------------------------------
int main()
{
	setlocale(LC_ALL,"Rus");
	srand(time(NULL));
	int n, p = 0, q = 0, pos = 0, neg = 0;
	double *arr;
	cout << "Введите размер последовательности: ";
	cin >> n;
	arr = new double[n];
	randomnumber(arr,n);
	cout << "\nМассив имеет вид: \n\n";
	print(arr,n);
	p = indexmax(arr,n);
	q = indexmin(arr,n);
	cout << "\n\nПроизведение индексов максимального и минимального элементов: " << ((p + 1) * (q + 1));
	pos = indexpositiv(arr,n);
	neg = indexnegativ(arr,n);
	swap(*(arr + pos),*(arr + neg));
	cout << "\n\nПосле форматирования, массив преобрёл вид: \n\n";
	print(arr,n);
	delete [] arr;
	getch();
	return 0;
}
помог - жми на весы

Последний раз редактировалось Chainik!; 02.01.2015 в 14:02.
Chainik! вне форума Ответить с цитированием
Старый 02.01.2015, 12:47   #7
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Ну и я захотел решить)

Код:
#include <iostream>
using namespace std;

double MinMaxMultiplication( double[], int ); // умножение индексов min и max 
int negIndex( double[], int );                // возвращает первый негативный
int positiveIndex( double[], int );           // возвращает последний позитивный

int main()
{
    int size;
    double *Array;
    
    cout << "Enter the size of the array: ";
    cin >> size;
    cout << endl;
    
    Array = new double[size];               // пользователь указывает размер массива
    
    for( int i = 0; i < size; i++ ){         // заполняет
        cout << '[' << i + 1 << "]= ";
        cin >> Array[i];
        cout << endl;
    }
    
    cout << "The result of multiplying max & min elements: "
         << MinMaxMultiplication( Array, size ) << endl ;  // функция умножения
    
    int negInd = negIndex( Array, size );                  // получаем первый негативный 
    int positiveInd = positiveIndex( Array, size );        // получаем последний позитивный 
    
    double temp = Array[negInd];                           //иеняем местами с помощью переменной
    Array[negInd] = Array[positiveInd];                    // temp
    Array[positiveInd] = temp;
    
    cout << "\nArray after moving: ";
    
    for( int i = 0; i < size; i++ ){
        cout << '[' << i + 1 << "]= ";
        cout << Array[i];
        cout << endl;
    }
    
    return 0;
}

double MinMaxMultiplication( double Array[], int size )
{
    int min = 0;
    
    for( int i = 1; i < size; i++ ){ 
        if( Array[min] > Array[i] )
            min = i;
    }
    
    int max = size;
    
    for( int i = size - 1; i > -1; i-- ){
        if( Array[max] < Array[i] )
            max = i;
    }
    
    return min * max;
    
}

int negIndex( double Array[], int size )
{
    
    int negIndex;
    
    for( int i = 0; i < size; i++ ){
        if( Array[i] < 0 ){
            negIndex = i;
            i = size;
        }
    }
    return negIndex;
}

int positiveIndex( double Array[], int size )
{
    
    int positiveIndex;
    
    for( int i = size - 1; i > -1; i-- ){
        if( Array[i] > 0 ){
            positiveIndex = i;
            i = -1;
        }
    }
    
    return positiveIndex;
}
igoreshka3333 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статические и динамические двумерные массивы zzdxw Общие вопросы Delphi 17 26.10.2014 11:33
Статические массивы + Си narco3 Помощь студентам 2 13.10.2012 00:59
статические данные Kukurudza Общие вопросы C/C++ 3 17.09.2011 15:28
Статические массивы aus Общие вопросы C/C++ 1 17.10.2010 15:32
статические массивы в pascal'е ? golerka Помощь студентам 1 19.05.2009 21:16