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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 23:37   #1
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию как реализовать функцию для того что бы скопировать элементы одного массива во второй в обратном порядке

не могу понять как реализовать функцию для того что бы скопирывать элементы одного масива во второй в обратном порядке

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

void func1(void)
{
int a[]={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };

for(int i1=0; i1<=9; i1++)
{
cout<<a[i1];
}
cout<<endl<<endl;
int b[10];
int i=9 , j=0 ;
for (; i>=0 && j<=9; i--,j++)
{
b[j]=a[i];
cout<< b[j];

}
cout<<endl;
}
mansp вне форума Ответить с цитированием
Старый 27.10.2010, 23:53   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Сохраняя твой стиль, будет как-то так
Код:
int* func1(int* mass) 
{


for(int i1=0; i1<=9; i1++)
{
cout<<a[i1];
}
cout<<endl<<endl;
int* b=new int[10];
int i=9 , j=0 ;
for (; i>=0 && j<=9; i--,j++)
{
b[j]=mass[i];
cout<< b[j];

}
cout<<endl;
return b;
}
А вызов из main()
Код:
int main(){
             int a[]={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
	int* b=func1(a);
	return 0;
}
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 28.10.2010, 00:22   #3
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

спс работает превосходно))
Цитата:
int* b=new int[10];
\\ эта строка значит что мы создаём масив указателей на другой масив или нет?
mansp вне форума Ответить с цитированием
Старый 28.10.2010, 00:26   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это значит что м создаем массив из десяти int, и указатель на int(int*)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.10.2010, 00:27   #5
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию

это значит, что создается динамический массив...как вариант, еще один код...

Код:
#include <iostream>
#include <conio.h>
using namespace std;

int * func_1 (int *a,int size)
{
	int * b = new int [size];
	for (int last = size-1,i=0;i<size;++i,--last)
	*(b+i) = *(a+last);
	return b;
}

void main()
{	
int a[]={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };	
int *b = func_1(a,sizeof(a)/sizeof(int));
for (int i=0; i<(sizeof(a)/sizeof(int)); i++)
cout<<*(b+i)<<" ";
getch();
}
JeyKip вне форума Ответить с цитированием
Старый 28.10.2010, 00:30   #6
__Demon__
Пользователь
 
Аватар для __Demon__
 
Регистрация: 13.08.2009
Сообщений: 37
По умолчанию

Эта строка означает, что мы запрашиваем выделение динамической памяти под массив размером 10 элементов. Да и неплохо бы добавить delete [] b; перед return 0;(JeyKip опередил)

Последний раз редактировалось __Demon__; 28.10.2010 в 00:32.
__Demon__ вне форума Ответить с цитированием
Старый 28.10.2010, 00:34   #7
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Это выделяется память под 10 величин типа int и адрес начала этой области памяти записывается в указатель b
Эх опаздал
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 28.10.2010, 00:41   #8
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию

кстати, delete...вот так не будет потерь памяти вообще...вся удалится по истечении работы...

Код:
#include <iostream>
#include <conio.h>
using namespace std;

int * func_1 (int *f, int *a, int size)
{
	for (int last = size-1,i=0;i<size;++i,--last)
	*(f+i) = *(a+last);
	return f;
}

void main()
{	
int a[]={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };	
int *f = new int [10];
func_1(f,a,sizeof(a)/sizeof(int));
for (int i=0; i<(sizeof(a)/sizeof(int)); i++)
cout<<*(f+i)<<" ";
delete [] f;
getch();
}
JeyKip вне форума Ответить с цитированием
Старый 28.10.2010, 15:48   #9
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

спс разобрался
mansp вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как избежать повторение одного и того же номера дважды CockPuncher Microsoft Office Excel 6 03.09.2009 09:53
как программе напечатать собственный исходный код в обратном порядке pavelstraut Общие вопросы C/C++ 30 23.07.2009 22:59
печать страниц в обратном порядке Олекса Microsoft Office Word 4 30.03.2009 09:45
В обратном порядке mari.ha Общие вопросы C/C++ 7 25.12.2008 21:36
Расположить элементы массива в порядке убывания частоты встречаемости элементов. QWERT12345 Паскаль, Turbo Pascal, PascalABC.NET 7 14.11.2008 22:30