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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2010, 22:54   #1
Вероника Юшкевич
 
Регистрация: 26.09.2010
Сообщений: 3
По умолчанию Алгоритмы и программы по обработке одномерных и двумерных массивов

Здравствуйте. Пишу Вам уже в который раз и прошу о помощи. НЕобходимо написать задачи. Вот текст: В одномерном массиве, состоящем из n ещественных элементов, вычислить:
1) колличество элементов массива, лежащих в диапазоне от А до В
2)сумму элементов массива, расположенных после максимального элемента
Упорядочить элементы массива по убыванию модулей элементов.
И ещё одну: осуществить циклический сдвиг элементов прямоуггольной матрицы на n элементов вправо или вниз . n может быть больше количества элементов в строке или в столбце.
Все эти задачи нужно сделать, используя статические массивы
заранее спасибо
Вероника Юшкевич вне форума Ответить с цитированием
Старый 07.10.2010, 07:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Вам во фриланс
p51x вне форума Ответить с цитированием
Старый 14.05.2011, 13:04   #3
dim565
 
Регистрация: 04.11.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Вероника Юшкевич Посмотреть сообщение
Здравствуйте. Пишу Вам уже в который раз и прошу о помощи. НЕобходимо написать задачи. Вот текст: В одномерном массиве, состоящем из n ещественных элементов, вычислить:
1) колличество элементов массива, лежащих в диапазоне от А до В
2)сумму элементов массива, расположенных после максимального элемента
Упорядочить элементы массива по убыванию модулей элементов.
И ещё одну: осуществить циклический сдвиг элементов прямоуггольной матрицы на n элементов вправо или вниз . n может быть больше количества элементов в строке или в столбце.
Все эти задачи нужно сделать, используя статические массивы
заранее спасибо
Вот решение (есть только с использованием форм)
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int n,a,b,i,j,numab,elmax,sum_after_max,index_max,temp;    //описание переменных
int *x=new int [n];                                       //описание массива x
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)       //ОБРАБОТЧИК КНОПКИ "ВВОД"
{
a=StrToInt(Edit3->Text);          //А
b=StrToInt(Edit4->Text);           //B
n=StrToInt(Edit2->Text);          //макс.кол-во элементов

x[i]=StrToInt(Edit1->Text);       //Ввод нового элемента
i++;                            //увеличение счетчика
Edit1->SetFocus();                //установить фокус в Edit1
Edit1->Text="";                   //Очистка Edit1

if (i==n)                       //если счетчик дошел до установленного предела
{
Button1->Enabled=False;         //отключить кнопку "Ввод"
Button2->Enabled=True;          //включить кнопку "Вывод"
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)      //ОБРАБОТЧИК КНОПКИ "ВЫВОД"
{
for (i=0;i<n;i++)
{
Memo1->Lines->Add(x[i]);            //Вывод в memo1 введенного массива
if ((x[i]>a)&&(x[i]<b)) numab++;    //рассчет кол-ва элементов в пределах от А до Б
if (x[i]>elmax)                     //найти максимальный элемент
{
index_max=i;
elmax=x[i];
}
}
for (i=index_max+1;i<n;i++) sum_after_max+=x[i];   //найти сумму после макс.
Label3->Caption=IntToStr(numab);                   //Вывод найденного значения (кол-во элементов между А и Б)
Label4->Caption=IntToStr(sum_after_max);           //Вывод найденного значения: сумму после макс
Button3->Enabled=True;                             //Врубить кнопку "Упорядочить"
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)     //ОБРАБОТЧИК КНОПКИ "УПОРЯДОЧИТЬ"
{
Memo1->Clear();                          //Очистить memo
temp=0;                                  //Сортировка по убыванию методом позырьков
for(i = 0; i < n; i++)
{
for(j=i+1;j<n;j++)
{
 if (abs(x[i])<abs(x[j]))              //Чтоб по возрастанию - поставить знак >  abs - по модулю (по заданию)
 {
  temp=x[i];
  x[i]=x[j];
  x[j]=temp;
 }

}
Memo1->Lines->Add(x[i]);                   //Вывод нового упорядоченного элемента в memo1
}
Button2->Enabled=False;                    //Вырубить все кнопки
Button3->Enabled=False;
}
//---------------------------------------------------------------------------
dim565 вне форума Ответить с цитированием
Старый 14.05.2011, 13:57   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Вероника Юшкевич

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


Код:
#include <stdlib.h>
#include <time.h>

#include <numeric>
#include <algorithm>
#include <functional>
#include <iterator>

#include <locale>
#include <iostream>

template <typename T>
struct in_range : public std::unary_function<T, bool>
{
	in_range(T l, T h) : l_(l), h_(h) {}
	
	bool operator()(T v) const
	{
		return v >= l_ && v <= h_;
	}

	T l_, h_;
};

template <typename T, size_t N>
size_t count(const T (&arr)[N], T A, T B)
{
	return std::count_if(arr, arr + N, in_range<T>(A, B));
}

template <typename T, size_t N>
std::ostream& operator<<(std::ostream& os, const T (&arr)[N])
{
	typedef std::ostream_iterator<T> O;
	std::copy(arr, arr + N, O(std::cout, " "));
	return os;
}

template <size_t N>
std::ostream& operator<<(std::ostream& os, const char (&arr)[N])
{
	return os << &arr[0];
}

struct R
{
	int operator()() const
	{
		return rand() % 100 - 50;
	}
};

template <typename T>
struct less : public std::binary_function<T, T, bool>
{
	bool operator()(T v1, T v2) const
	{
		return abs(v1) < abs(v2);
	}
};

template <typename T, size_t N>
T (&sort(T (&arr)[N]))[N]
{
	std::sort(arr, arr + N, less<T>());
	return arr;
}

int main()
{
	const size_t N = 10;

	setlocale(LC_ALL, "");
	srand((unsigned) time(NULL));
	
	int arr[N] = {0};
	std::generate_n(arr, N, R());

	std::cout << "Array: " << arr << std::endl;

	std::cout << "Enter A, B: ";

	int A, B;
	std::cin >> A >> B;

	std::cout << "Number of elements in [A..B] range: " << count(arr, A, B) << std::endl;

	std::cout << "Sum after max: " << std::accumulate(
		std::max_element(arr, arr + N) + 1, arr+N, 0
		) << std::endl;

	std::cout << "Sorted array: " << sort(arr) << std::endl;
	
	return 0;
}
пример работы программы:

Array: 49 -24 42 -23 27 -29 -39 40 32 22
Enter A, B: -30 30
Number of elements in [A..B] range: 5
Sum after max: 48
Sorted array: 22 -23 -24 27 -29 32 -39 40 42 49
Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка двумерных массивов... Mizantrop Помощь студентам 2 25.03.2010 09:11
Гики двумерных массивов Кипящий чайник Общие вопросы C/C++ 13 02.02.2010 13:25
Обработка двумерных массивов Kreigen Помощь студентам 3 29.11.2009 10:50
Заполнение двумерных массивов(Basic) mde Помощь студентам 1 30.05.2008 09:23