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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 09:38   #1
ildarad
 
Регистрация: 10.04.2011
Сообщений: 5
По умолчанию Передача массивов в подпрограмму и сортировка

Заданы 3 массава которые вычисляются по формулам . Создать подпрограмму для передачи этих массивов и сортировки их по убыванию.
Я еще отлично не знаю С++ , по этому не судите строго.

Я хочу знать, как можно передать элементы массивов в подпрограмму и отсортировать их в один массив Y?

И что такое "понятие открытый массив"??
Код конечно корявенький)))

#include <conio.h>
#include <iostream>
#include <math.h>
#define pi 3.14
using namespace std;
void formasA(double masa[] )
{
for (int i=0;i<11;i++)
for (int n=1;n<12;n++)
{
masa[n]=sin(3.2*i);
}
}
void formasB(double masb[])
{
for (int k=0;k<18;k++)
for (int n=1;n<19;n++)
{
masb[n]=sin(pi/6+k);
}
}
void formasC(double masc[])
{
for (int l=0;l<13;l++)
for (int n=1;n<14;n++)
{
masc[n]=asin(0.01*l)+l*sin(5.3*l);
}
}
//
void formasY()
{
//сортировка трех массивов в один masY
}
int main ()
{
//А здесь просто вывод отсортированной masY
}

Последний раз редактировалось ildarad; 10.04.2011 в 09:44. Причина: Неправельно оформил
ildarad вне форума Ответить с цитированием
Старый 10.04.2011, 10:21   #2
niki123
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 16
По умолчанию

Код:
void formasA(**massa, n, m) // Прототип функции
{
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
{
 massa[i][j]=sin(3.2*i);
}
}
int main ()
{
//А здесь просто вывод отсортированной masY
// Здесь нужно объявить массивы и выделить под них память например:
double **massa;
massa=new double*[n];
for (int i=0; i < n; i++)
{
  massa [i] = new double [m];
}  // и так для четырех массивов
 // Если размерности массивов заранее известны можно 
// обойтись без динамического выделения памяти 
// для результирующего массива с изменения размерности можно 
// осуществить с помощью realloc;
 formasA (massa, n, m); // передача указателя на массив и размерности массива в функцию
}

Последний раз редактировалось niki123; 10.04.2011 в 10:28.
niki123 вне форума Ответить с цитированием
Старый 10.04.2011, 10:49   #3
ildarad
 
Регистрация: 10.04.2011
Сообщений: 5
По умолчанию

Че то я не могу пока понять код ваш.
Размерность всех трех массивов одномерная

Последний раз редактировалось ildarad; 10.04.2011 в 11:34.
ildarad вне форума Ответить с цитированием
Старый 10.04.2011, 11:41   #4
niki123
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 16
По умолчанию

Тогда с передачей все проще
Код:
void formasA(*massa, m) // Прототип функции
{
for (int i=0;i<n;i++) // Не понятно  для чего строка но думаю скорее всего она приведет к ошибке 
for (int j=0;j<m;j++)
{
 massa[j]=sin(3.2*i);
}
}
int main ()
{
double *massa;
massa=new double*[n];
 //Если размерности массивов заранее известны можно 
// обойтись без динамического выделения памяти 
// для результирующего массива с изменения размерности можно 
// осуществить с помощью realloc;
 formasA (massa, n); // передача указателя на массив и размерности массива в функцию
}

Последний раз редактировалось niki123; 10.04.2011 в 11:44.
niki123 вне форума Ответить с цитированием
Старый 10.04.2011, 11:53   #5
ildarad
 
Регистрация: 10.04.2011
Сообщений: 5
По умолчанию

for (int i=0;i<n;i++) // Не понятно для чего строка
Это сколько раз будит считать .

А как будет выглядеть участок кода где будет сортировка всех трех массивов происходить??
ildarad вне форума Ответить с цитированием
Старый 10.04.2011, 12:04   #6
niki123
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 16
По умолчанию

Цитата:
for (int i=0;i<n;i++) // Не понятно для чего строка
Это сколько раз будит считать .
Условие заполнения массива не знаю но вот так выглядит лучше
Код:
void formasA(*massa, m) // Прототип функции
{
for (int j=0;j<m;j++)
{
 massa[j]=sin(3.2*j+1);
}
}
Цитата:
А как будет выглядеть участок кода где будет сортировка всех трех массивов происходить??
Нужно три массива загнать в один а потом отсортировать его по убыванию?
niki123 вне форума Ответить с цитированием
Старый 10.04.2011, 12:11   #7
ildarad
 
Регистрация: 10.04.2011
Сообщений: 5
По умолчанию

Ага я это уже осознал и переделал. Так действительно лучше.
Я щас думаю как сделать подпрограмму для сортировки всех трех массив в один
ildarad вне форума Ответить с цитированием
Старый 10.04.2011, 12:24   #8
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

niki123
память для массива выделяете динамически
massa=new double*[n];
а кто будет освобождать?
delete [] massa;
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 10.04.2011, 12:25   #9
ildarad
 
Регистрация: 10.04.2011
Сообщений: 5
По умолчанию

Это мелочь , которая в процессе работы сама собой придет)
ildarad вне форума Ответить с цитированием
Старый 10.04.2011, 12:31   #10
niki123
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 16
По умолчанию

Цитата:
Я щас думаю как сделать подпрограмму для сортировки всех трех массив в один
1. Выделяешь память под четвертый массив (ну допустим имя массива А), притом количество элеметов массива А равна сумме количества элементов 3 выделенных массивов (выделеление памяти показано в примере)
2. Передаешь указатели всех массивов в функцию (передача показана в примере)
3. Поочередно записываешь значения трех заполненных массивов в массив А (сложного ничего нет)
4. Сортируешь любым методом, например метод пузырька, массив А по убыванию
Код:
// Сортировка методом пузырька
 for (int i=0; i<n-1; i++)// n это размерность массива А
	{
		for (int j=0; j<n-1; j++)
		{
			if (А[j]<А[j+1])
			{
				int s= А [j];
				А [j]= А[j+1];
				А [j+1]=s;
			}
		}
	}

Последний раз редактировалось niki123; 10.04.2011 в 14:00.
niki123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В массиве а (10) первую половину массива отсортировать по убыванию, вторую по возрастанию leon1405 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 19.12.2010 18:36
Передача массива в функцию GladiatoR24 Общие вопросы C/C++ 3 24.11.2010 22:51
Передача массива в метод Sempe4 Общие вопросы .NET 6 16.06.2010 17:25
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
Передача массива в функцию Vistar Общие вопросы C/C++ 1 27.04.2009 08:08