Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

CradleA
Статус: Мастер-Эксперт
Рейтинг: 22
∙ повысить рейтинг »
Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 0
∙ повысить рейтинг »

С / С++

Номер выпуска:2037
Дата выхода:08.03.2022, 15:15
Администратор рассылки:CradleA (Мастер-Эксперт)
Подписчиков / экспертов:9 / 42
Вопросов / ответов:1 / 2

Консультация # 202241: Здравствуйте! Прошу помощи в следующем вопросе: Разделить код на функции. int main(int argc, char* argv[]) { setlocale(LC_ALL, "Russian"); int i,n,ibeg=0,iend=0,imin; //объявление float min=0,sum=0; //переменных cout<<"Введите размерность n="; cin>>n; //ввод размерности...

Консультация # 202241:

Здравствуйте! Прошу помощи в следующем вопросе:
Разделить код на функции.
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "Russian");
int i,n,ibeg=0,iend=0,imin; //объявление
float min=0,sum=0; //переменных
cout<<"Введите размерность n=";
cin>>n; //ввод размерности массива
cout<<"Введите элементы массива:"<<endl<<endl;
float *p=new float[n]; // объявление массива
for(i=0;i<n;i++)cin>>p[i]; //ввод массива
min=p[0]; //принимаем 1-й элемент за минимальный
for(i=0;i<n;i++) // поиск
if(p[i]<min) //минимального
{
min=p[i]; //элемента
imin=i;
}
cout<<"\nМинимальный элемент: "<<min<<endl; //вывод элемента
cout<<"Позиция минимального элемента: "<<imin+1<<endl; //вывод номера элемента
for(i=0;i<n;i++) //поиск
if(p[i]<0) //первого
{
ibeg=i; //отрицательного
break; //элемента
}
for(i=ibeg+1;i<n;i++) //поиск
if(p[i]<0) //второго
{
iend=i; //отрицательного
break; //элемента
}
for(i=ibeg+1;i<iend;i++)sum+=p[i]; //суммирование элементов
cout<<"\nСумма элементов расположенных между 1 и 2 отрицательными элементами: "<<sum; //вывод суммы
cout<<"\nПреобразованный массив:"<<endl<<endl;
for(i=0;i<n;i++) //поиск
if(fabs(p[i])<=1) //элементов
{ //модуль которого не превышает 1
cout<<p[i]<<' '; //вывод массива
}
for(i=0;i<n;i++)
if(fabs(p[i])>1)
{
cout<<p[i]<<' '; //вывод всех остальных элементов массива
}
ret urn 0;
}

Дата отправки: 03.03.2022, 15:14
Вопрос задал: semen16vzx (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Коцюрбенко Алексей Владимирович (Старший модератор):

Например, так:

Код [C#]
#include <iostream>
#include <cmath>

using namespace std;

void Input(float *a, int size)
{
 for (int i=0; i<size; i++) cin >> a[i];
}

int IndexOfMin(float *a, int size)
{
int index;
float min = a[0];
 for (int i=1; i<size; i++)
  if (a[i]<min)
  min = a[index=i];
return index;
}

int IndexOfNegative(float *a, int size)
{
 for (int i=0; i<size; i++)
  if (a[i]<0)
  return i;
return 0;
}

float Sum(float *a, int start, int end)
{
float sum = 0;
 for (int i=start+1; i<end; i++)
 sum += a[i];
return sum;
}

void OutputLess(float *a, int size, float max)
{
 for (int i=0; i<size; i++)
  if (fabs(a[i])<max)
  cout << a[i] << ' ';
}

void OutputMore(float *a, int size, float min)
{
 for (int i=0; i<size; i++)
  if (fabs(a[i])>min)
  cout << a[i] << ' ';
}

int main(int argc, char* argv[])
{
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите размерность n=";
cin >>n;                // ввод размерности массива
cout << "Введите элементы массива:" << endl;
float *p=new float[n]; 	// объявление массива
Input(p, n);            // ввод массива
int imin = IndexOfMin(p, n);
cout << "\nМинимальный элемент: " << p[imin] << endl; //вывод элемента
cout << "\nПозиция минимального элемента: " << imin+1 << endl;//вывод номера элемента
int ibeg = IndexOfNegative(p, n);           // поиск первого отрицательного элемента
int iend = ibeg + IndexOfNegative(p+ibeg+1, n-ibeg-1) + 1; // поиск второго отрицательного элемента
float sum = Sum(p, ibeg, iend);             // суммирование элементов
cout << "\nСумма элементов расположенных между 1 и 2 отрицательными элементами: " << sum; //вывод суммы
cout << "\nПреобразованный массив:" << endl << endl;
OutputLess(p, n, 1);	// вывод поиск элементов модуль которого не превышает 1
OutputMore(p, n, 1);	// вывод всех остальных элементов массива
return 0;
}

Консультировал: Коцюрбенко Алексей Владимирович (Старший модератор)
Дата отправки: 04.03.2022, 20:20
Рейтинг ответа:

НЕ одобряю +3 одобряю!


Консультирует Megaloman (Мастер-Эксперт):

Еще вариант

Код
#include <locale.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>

int minel(int n, float *p, float &minmas) {	// поиск минимального элемента
	int i, m;
	m = 0;
	for(i = 0; i < n; i++) if (p[i] < p[m]) m = i; // поиск минимального элемента
	minmas = p[m];
	return m;
}

unsigned char minus12 (int n, float *p, int &m1, int &m2) { 	// поиск номеров первых двух отрицательных элементов
	int i;
	m1 = -1;
	m2 = -1;
	for(i = 0; i < n; i++) if (p[i] < 0) {		
		if (m1 >= 0) {m2 = i; return 1;}
		m1 = i;
		}
	return 0;
}

float sum12(float *p, int m1, int m2) {
	float sum = 0;
	int i;
	for(i = m1 + 1; i < m2; i++) sum += p[i];
	return sum;
}

void reorg(int n, float *p, float m) {		// вывод элементов массива сначала по модулю <m, потом остальных.
	int i;
	cout << "\nBывод элементов массива сначала по модулю <" << m <<", потом остальных" << endl;
	for(i = 0; i < n; i++) if(fabs(p[i]) < m) cout << p[i] << " ";		// элементы по модулю <m
	for(i = 0; i < n; i++) if(fabs(p[i]) >= m) cout << p[i] << " ";		// элементы по модулю >=m
}

void massin(int n, float *p) {				// ввод массива
	int i;				
	cout << "\nВведите элементы массива:" << endl;
	for(i = 0; i < n; i++) cin >> p[i];
}

int main(int argc, char* argv[]) {
	clrscr();                 		// очистка экрана
	setlocale(LC_ALL, "Russian");

	int n, ibeg, iend;			// объявление
	float minmas; 				// переменных

	cout << "Введите размерность n = ";
	cin >> n; 				// ввод размерности массива

	float *p = new float[n];		// объявление массива

	massin(n, p);

	cout << "\nПозиция минимального элемента: " << minel(n, p, minmas) + 1; // вывод номера элемента
	cout << "\nМинимальный элемент: " << minmas << endl; 	     // вывод элемента

	if (minus12(n, p, ibeg, iend) == 1) {	// суммирование элементов
		cout << "\nСумма элементов расположенных между " << ibeg +1 << " и " << iend +1 << " элементами <0: " << sum12(p, ibeg, iend) << endl; // вывод суммы
	}
	else cout << "\nВ массиве два отрицательных элемента не найдено" << endl;

	reorg(n, p, 1);

	return 0;
}

Ответ отредактирован модератором Megaloman (Мастер-Эксперт) 04.03.2022, 22:24

Консультировал: Megaloman (Мастер-Эксперт)
Дата отправки: 04.03.2022, 22:22
Рейтинг ответа:

НЕ одобряю +2 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное