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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 17:54   #1
reserved
Новичок
Джуниор
 
Регистрация: 10.06.2009
Сообщений: 3
По умолчанию Перепись положительных значений массива в динамический.

Доброе время суток!
У меня такая вот проблемка.
Код:
#include "stdafx.h"
#include <cmath>
#include <ctime>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int i, n,*pmas,diapazon, minnum;
	unsigned int r;	
	char cont;

	do
	{		
		cout<<"Size pmas?\n";
		cin>>n;
		pmas=new int[n];	
	
		r=(unsigned int)time(NULL)%32767;
		srand(r);
		cout<<"diapazon=?";
		cin>>diapazon;
		cin.get();
		cout<<"min. number=?";
		cin>>minnum;
		cin.get();
		
	pmas=new int[n];	
	for(i=0;i<n;i++)
		*(pmas+i)=int(rand()/32767.*diapazon)+minnum;

	for(i=0;i<n;i++)
		cout<<pmas+i<<'\t'<<*(pmas+i)<<'\n';
	cout<<'\n';
		cin.get(); 

	
	int a=0;
	for (int k=0;k<n;k++)
		if(*(pmas+k)>0)	a++;

	cout<<"kolich. polozhit. el.:"<<a<<endl;
	cin.get();

	int **pnew;
	pnew= new int *[a];//новый массив  
	int j=0;
	for (int k=0;k<n;k++)
		if(*(pmas+k)>0)
			{
			 *(pnew+j)=(pmas+k);
			 j++;
			}


   int tmp;
   for(i=0; i<a-1; i++)
   for(j=i+1; j<a; j++)
   if(**(pnew+j)<**(pnew+i))
   {
    tmp = **(pnew+j);
    **(pnew+j) = **(pnew+i);
    **(pnew+i) = tmp;
   }
   for(int y=0; y<a; y++)
	 cout<<**(pnew+y)<<'\n';
	cin.get();
	 delete [] pnew;
	delete [] pmas;	
	cout<<"To continue -- <Enter>,to exit -- any symbol and <Enter>\n";
		cin.get(cont);


   }while (cont=='\n');
	
	return 0;
   }
У меня что-то не так с поиском количества положительных элементов.
И дальше требуеться переписать половину положительных элементов в отдельный динамический массив. (причём минимальную половину) Как можно это сделать?
reserved вне форума Ответить с цитированием
Старый 10.06.2009, 18:05   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от reserved
У меня что-то не так с поиском количества положительных элементов.
Все считает как надо.
Цитата:
И дальше требуеться переписать половину положительных элементов в отдельный динамический массив. (причём минимальную половину) Как можно это сделать?
А что значит "минимальная половина"?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 18:08   #3
reserved
Новичок
Джуниор
 
Регистрация: 10.06.2009
Сообщений: 3
По умолчанию

Ну в смысле, допустим, что у нас есть 8 положительных элементов. 2,3,8,4,1,2,6,7.
В массив надо переписать наименьшие значения (количество их равно половине от количества всех положительных значений) т.е в данном случае в массиве должны бать записаны 1,2,2,3.
reserved вне форума Ответить с цитированием
Старый 10.06.2009, 18:10   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от reserved Посмотреть сообщение
Ну в смысле, допустим, что у нас есть 8 положительных элементов. 2,3,8,4,1,2,6,7.
В массив надо переписать наименьшие значения (количество их равно половине от количества всех положительных значений) т.е в данном случае в массиве должны бать записаны 1,2,2,3.
Ну, у вас уже есть отсортированный массив из положительных значений. Вот оттуда и возьмем:
Код:
int *newmas = new int[a/2];
cout<<"\n new mas: \n";
for(i=0; i<a/2; i++)
 cout<<(*(newmas+i) = **(pnew+i))<<endl;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 18:30   #5
reserved
Новичок
Джуниор
 
Регистрация: 10.06.2009
Сообщений: 3
По умолчанию

Спасибо) Вы мне очень помогли.
reserved вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перепись значений в массив указателей. Джед Общие вопросы C/C++ 9 28.05.2009 18:12
Вычисление массива значений функции(С++) mathe Помощь студентам 1 22.04.2009 15:11
Вычисление массива значений функции mathe Общие вопросы C/C++ 0 22.04.2009 10:27
Замена статического массива на динамический Славный Общие вопросы Delphi 1 11.06.2008 00:19
графический вывод значений массива vitalik007 Помощь студентам 6 21.10.2007 20:34