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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2012, 18:22   #1
jestyan
 
Регистрация: 10.12.2010
Сообщений: 5
Восклицание C++ Задача по массивам

Доброго времени суток уважаемые тов. программисты.

Первое, хочу поздравить с наступающим новым годом.

Второе, есть задача которую необходимо решить на языке С++:

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

Очень прошу помочь делом, наработками делиться смысла не вижу, так как за целый день сидения за компом под конец у меня получилась неработающая программа, которая толком ничего не считает.

Заранее спасибо!

Последний раз редактировалось jestyan; 29.12.2012 в 20:00. Причина: Не дописал чать задания...
jestyan вне форума Ответить с цитированием
Старый 29.12.2012, 19:02   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Только за вежливость. С наступающим!
Код:
#include <iostream.h>
#include <math.h>
int max_arr(int *m, const int N);
float average (int *m, const int N, int max);
void main ()
{
	const int N = 10;
	int mass[N], max;
	for (int i = 0; i < N; i++)
	{
		cout << "Enter cells [" << i <<"] :";
		cin >> mass[i];
	}
	max = max_arr(mass, N);
	cout << "max = "<<max << endl;
	cout << "average = " << average(mass, N, max) << endl;
}
int max_arr(int *m, const int N)
{
	int max = m[0];
	for (int i = 0; i < N; i++)
	{
		if (max < m[i])
			max = m[i];
	}
	return max;
}
float average (int *m, const int N, int max)
{
	int sum = 0;
	float n;
	float aver;
	for (int i = 0, j = 0; i < N; i ++)
	{
		if (m[i] == max)
		{
			n = N - i - 1; 
			for (int k = i + 1; k < N; k++)
				sum = sum + abs(m[k]);
			aver = (sum / n);
			return aver;
			break;

		}
	}
	return  0;
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 29.12.2012, 19:57   #3
jestyan
 
Регистрация: 10.12.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от kventin_zhuk Посмотреть сообщение
Только за вежливость. С наступающим!
Код:
#include <iostream.h>
#include <math.h>
int max_arr(int *m, const int N);
float average (int *m, const int N, int max);
void main ()
{
	const int N = 10;
	int mass[N], max;
	for (int i = 0; i < N; i++)
	{
		cout << "Enter cells [" << i <<"] :";
		cin >> mass[i];
	}
	max = max_arr(mass, N);
	cout << "max = "<<max << endl;
	cout << "average = " << average(mass, N, max) << endl;
}
int max_arr(int *m, const int N)
{
	int max = m[0];
	for (int i = 0; i < N; i++)
	{
		if (max < m[i])
			max = m[i];
	}
	return max;
}
float average (int *m, const int N, int max)
{
	int sum = 0;
	float n;
	float aver;
	for (int i = 0, j = 0; i < N; i ++)
	{
		if (m[i] == max)
		{
			n = N - i - 1; 
			for (int k = i + 1; k < N; k++)
				sum = sum + abs(m[k]);
			aver = (sum / n);
			return aver;
			break;

		}
	}
	return  0;
}
Спасибо огромное. Только проверку кратности 5-и куда вставить. Забыл дописать... Помогите пожалуйста если не затруднит...

Последний раз редактировалось jestyan; 29.12.2012 в 20:01.
jestyan вне форума Ответить с цитированием
Старый 29.12.2012, 19:59   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Не понял, какую проверку кратности, зачем?
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 29.12.2012, 20:07   #5
jestyan
 
Регистрация: 10.12.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от kventin_zhuk Посмотреть сообщение
Не понял, какую проверку кратности, зачем?
Я ошибся по запаре.

Задание то на самом деле вот такое:

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

=(( Лохонулся...
jestyan вне форума Ответить с цитированием
Старый 29.12.2012, 20:11   #6
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

ну во второй функции ставите в цикле суммы условие:
Код:
if  (mass[k] % 5 == 0)
              sum = sum + abs(mass[k]);
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 29.12.2012, 20:26   #7
jestyan
 
Регистрация: 10.12.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от kventin_zhuk Посмотреть сообщение
ну во второй функции ставите в цикле суммы условие:
Код:
if  (mass[k] % 5 == 0)
              sum = sum + abs(mass[k]);
Да я так и сделал, но что то меня приглючило, что считает неправильно, поэтому решил задать этот тупой вопрос. Все работает, спасибо за помощь!

И еще есть задание на двумерный массив(матрица), будь они не ладны =) Если есть возможность помогите старому заочнику

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

Скиньте мне хоть свой телефон в личку, денежку кину, а то, что я тут бесплатно помощи прошу Честно слово
jestyan вне форума Ответить с цитированием
Старый 29.12.2012, 20:38   #8
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
#include <iostream.h>
#include <math.h>
int max_arr(int *m, const int N);
float average (int *m, const int N, int max);
void main ()
{
	const int N = 10;
	int mass[N], max;
	for (int i = 0; i < N; i++)
	{
		cout << "Enter cells [" << i <<"] :";
		cin >> mass[i];
	}
	max = max_arr(mass, N);
	cout << "max = "<<max << endl;
	cout << "average = " << average(mass, N, max) << endl;
}
int max_arr(int *m, const int N)
{
	int max = m[0];
	for (int i = 0; i < N; i++)
	{
		if (max < m[i])
			max = m[i];
	}
	return max;
}
float average (int *m, const int N, int max)
{
	int sum = 0;
	int n = 0;
	float aver;
	for (int i = 0, j = 0; i < N; i ++)
	{
		if (m[i] == max)
		{
			//n = N - i - 1;         - это нужно было тоже убрать) 
			for (int k = i + 1; k < N; k++)
				if ((m[k] % 5 )== 0)
				{
					sum = sum + abs(m[k]);
					n++;
				}
			aver = (sum / n);
			return aver;
			break;

		}
	}
	return  0;
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 29.12.2012, 22:21   #9
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
#include <iostream.h>

void enter_arr(int **a,int col, int row);
int min_(int **a,int col, int row);


void main ()
{
	int col, row, min;
	int **pmass;
	int j;
	cout << "Enter ColCount" << endl;
	cin >> col;
	cout << "Enter RowCount" << endl;
	cin >> row;
	if (col != row)
	{
		cout << "M != N. You entred incorrect data!" << endl;
		return;
	}
	pmass = new int* [col];

	for (int i = 0; i < col; i ++)
		pmass[i] = new int [row];

	enter_arr(pmass, col, row);
	min = min_(pmass, col, row);
	

	cout << "Min element of the main diagonal = " << min << endl;

	for (i = 0; i < col; i++)
	{
		for (j = 0; j < row; j++)
		{
			cout << pmass[i][j] << " ";
			
			
		}
		cout << endl;
	}
}
int min_(int **a,int col, int row)
{
	int min;
	int n = 1;
	min = a[1][0];
	for (int i = 1; i < col; i++)
	{
		for (int j = 0; j < n; j++)
			if (min > a[i][j])
				min = a[i][j];
		n++;
		
	}
	return min;
}
void enter_arr(int **a, int col, int row)
{
	for (int i = 0; i < col; i++)
	{
		for (int j = 0; j < row; j++)
		{
			cout << "m ["<< i << "]["<< j << "] : ";
			cin >> a[i][j];
			
		}
		
	}
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 29.12.2012 в 23:18.
kventin_zhuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по массивам. Noname11 Помощь студентам 9 24.03.2011 17:52
Задача по массивам в си amerhant Помощь студентам 2 08.11.2009 22:17