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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 23:28   #1
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию Функция для удаления елементов которые меньше среднего арифметического всех елементов масива.С++.

Нужно чтобы функция удаляла все елементы одномерного масива которые меньше среднего арифметического всех елементов включительно.
Что я написал не так в функции?как вообще правильно удалять елементы масива? создавать новый и уравнивать его со старым?Буду благодарен за помощь)

Вот мой не очень рабочий вариант)
Код:
void Vaip( int n, int*a, double*b )
{
    int i, ser_dob, l, sum =0;
    for(i =0; i<n; i++)
    {
        if(((sum += a[i]) \ n) < 0)
        b[l] = a[i];
    }
    cout << b[i];
}
Вот основная програма:
Код:
int main ()
{
	cout << "How many element's? :";
	int n;
	cin >> n;

	int*a = new int [n];
	double*b = new double [n];
	Input ( n, a );
	Output ( n, a );
    Vaip ( n, a, b);

	cin.get ();
	cin.get ();
	return 0;
}

Последний раз редактировалось DIQUON; 17.12.2012 в 23:31.
DIQUON вне форума Ответить с цитированием
Старый 17.12.2012, 23:44   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Смотря что понимать под: "удалить элемент". Для большинства подобных задач, которые вы проскакивали, вполне достаточно просто вывести массив без ненужных элементов. Но по сути это не удаление.
Код:
int*a = new int [n];
double*b = new double [n];
Если я правильно понял, а - исходный массив , b - новый. Но если вы удаляете элементы из 1-го , то размер массива b должен быть меньше исходного. И почему один массив int а второй double?
В общем,алгоритм такой:

Определить размер второго массива.
Захватить под него память.
Перегнать всё во второй массив.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 17.12.2012 в 23:48.
kventin_zhuk вне форума Ответить с цитированием
Старый 18.12.2012, 00:22   #3
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Цитата:
Сообщение от kventin_zhuk Посмотреть сообщение
Смотря что понимать под: "удалить элемент". Для большинства подобных задач, которые вы проскакивали, вполне достаточно просто вывести массив без ненужных элементов. Но по сути это не удаление.
Код:
int*a = new int [n];
double*b = new double [n];
Если я правильно понял, а - исходный массив , b - новый. Но если вы удаляете элементы из 1-го , то размер массива b должен быть меньше исходного. И почему один массив int а второй double?
В общем,алгоритм такой:

Определить размер второго массива.
Захватить под него память.
Перегнать всё во второй массив.
То есть масив Б дожнен быть меньше исходного? как это?
int*b = new int [n-?] что должно быть вместо ?,если не трудно скиньте готовую функцию
DIQUON вне форума Ответить с цитированием
Старый 18.12.2012, 00:53   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

К сожалению, времени не особо много. Но попытаюсь что-то набросить:
Код:
#include <iostream.h>
int func(int * a, int size1, int aver);
void main ()
{
	int * a, *b, aver;
	int size1, size2;
	cout << "Enter size 1";
	cin >> size1;
	a = new int [size1];
//	aver = avegare (a, size1); {вызвали какую-то функцию  - нашли среднее арифметическое}
	size2 = func(a,size1,aver);// вызвали функцию для определения размера массива 2.
	b = new int [size2];

}
int func(int *a, int size1, int aver)
{
	int size2 = size1;
	for (int i = 0; i < size1; i++)
	{
		if (a[i] <= aver) 
			size2--;
	}
	return size2;
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 18.12.2012, 20:33   #5
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Если чесно я не очень понял,какая именно часть кода отвечает за среднее арифметическое?
DIQUON вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив (С++). вычислить сумму и количество отрицательных елементов которые находятся под главной диагональю матрицы spinogryz_ua Помощь студентам 4 30.11.2012 11:29
Количество нулевых елементов масива Димон222 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 10.11.2012 00:28
Как уничтожить 5 последних елементов масива?С++ или С. DIQUON Помощь студентам 2 08.11.2012 22:06
замена всех отрицательных елементов, находившихся под главной диагонолью матрицы VaLiAr Помощь студентам 2 03.11.2011 17:57
Как определить количество не пустых елементов масива SeRhy Общие вопросы C/C++ 6 21.10.2009 18:40