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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2010, 13:06   #1
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
По умолчанию Разделение массива на два

Добрый день, уважаемые программисты!
Я программирую на Паскале, но вот решил взяться за более серьёзный язык - C++. Решал задачи (среда Borland C++ Builder), но вот проблема. Где-то в коде скрылась ошибка, и я не могу понять, почему программа не работает.
Задача такова: имеется массив с положительными и отрицательными числами, требуется разделить его на массивы:
с положительными (и нулевыми) элементами,
с отрицательными элементами.
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>

//---------------------------------------------------------------------------

#pragma argsused
int main()
{
        int i=0,XR,YR=0,ZR=0;   //Инициализируем размеры массивов, пока нулевые
        cout<<"BBeduTe pa3mep maccuBa";
        cin>>XR; //Считываем размер массива с положительными и отрицательными числами
        double x[XR];
        for (i=0, i++) cin<<x[XR]; //Считываем элементы массива
        while (i<=XR, i++)  //Устанавливаем размеры массивов
        {
        if (x[i]>=0) YR++;
        else ZR++;
        }
        float y[YR],z[ZR]; //Инициализируем массивы
        int iXR=0,iYR=0;
        i=0;
        while (i<=XR, i++) //Инициализируем элементы массива, перебирая элементы
        {
        if (x[i]>=0)
        {
        iYR++;
        y[iYR]=x[i];
        }
        else
        {
        iZR++;
        z[iZR]=x[i];
        }
        }
        //Здесь можно вывести результат сортированных массивов
        return 0;
}
//---------------------------------------------------------------------------
Может, есть какой-то более лёгкий способ написания таких программ? Очень жду ответов.
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."

Последний раз редактировалось Stilet; 11.06.2010 в 13:25.
Negent вне форума Ответить с цитированием
Старый 11.06.2010, 13:26   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Подключение VCL в консольной программе - явно лишнее. Уберите этот #include и попробуйте еще раз.
Вообще я при написании консольных программ в билдере первым делом нажимаю Ctrl-A и Backspace.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 11.06.2010, 13:28   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ошибок очень много, лень все перечислять ) Думаю вам следует начать всё-таки с какой-нибудь книжки, а не делать всё наобум - так получится куда быстрее и качественней )

Вот возможный пример, старался попроще:
Код:
#include <iostream>

using namespace std;

int main()
{
	double* array;
	double* pos_arr;
	double* neg_arr;
	int array_size, neg_cnt = 0, pos_cnt = 0;

	cout << "Enter size of array: ";
	cin  >> array_size;

	array   = new double[array_size];
	pos_arr = new double[array_size];
	neg_arr = new double[array_size];

	cout << "Input array elements\n";
	for(int i = 0; i < array_size; i++)
		cin >> array[i];

	for(int i = 0; i < array_size; i++)
		if (array[i] < 0)
			neg_arr[neg_cnt++] = array[i];
		else
			pos_arr[pos_cnt++] = array[i];

	cout << "\nArray with negatives(" << neg_cnt << "): ";
	for(int i = 0; i < neg_cnt; i++)
		cout << neg_arr[i] << ' ';
	cout << "\nArray with positives(" << pos_cnt << "): ";
	for(int i = 0; i < pos_cnt; i++)
		cout << pos_arr[i] << ' ';

	cin.ignore().ignore();
	return 0;
}
но примеры книжку не заменят )
netrino вне форума Ответить с цитированием
Старый 11.06.2010, 13:54   #4
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Ошибок очень много, лень все перечислять ) Думаю вам следует начать всё-таки с какой-нибудь книжки, а не делать всё наобум - так получится куда быстрее и качественней )

Вот возможный пример, старался попроще:
Код:
#include <iostream>

using namespace std;

int main()
{
	double* array;
	double* pos_arr;
	double* neg_arr;
	int array_size, neg_cnt = 0, pos_cnt = 0;

	cout << "Enter size of array: ";
	cin  >> array_size;

	array   = new double[array_size];
	pos_arr = new double[array_size];
	neg_arr = new double[array_size];

	cout << "Input array elements\n";
	for(int i = 0; i < array_size; i++)
		cin >> array[i];

	for(int i = 0; i < array_size; i++)
		if (array[i] < 0)
			neg_arr[neg_cnt++] = array[i];
		else
			pos_arr[pos_cnt++] = array[i];

	cout << "\nArray with negatives(" << neg_cnt << "): ";
	for(int i = 0; i < neg_cnt; i++)
		cout << neg_arr[i] << ' ';
	cout << "\nArray with positives(" << pos_cnt << "): ";
	for(int i = 0; i < pos_cnt; i++)
		cout << pos_arr[i] << ' ';

	cin.ignore().ignore();
	return 0;
}
но примеры книжку не заменят )
Какую книгу взять бы для программирования в среде C++ Builder?
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."
Negent вне форума Ответить с цитированием
Старый 11.06.2010, 13:58   #5
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Страуструп же для начала, а потом уже и в среде builder
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 11.06.2010, 14:11   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Консольные приложения должны писаться одинаково во всех средах, поддерживающих стандарт. Присоединяюсь к ozo - читайте Страуструпа и будет вам счастье.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение массива данных на части Евгений К. Microsoft Office Excel 2 03.06.2010 13:41
хитрое разделение массива Alex_91 Помощь студентам 5 13.05.2010 20:41
два массива Blond_89 Помощь студентам 3 25.03.2010 17:52
Как объединить два массива в один. TheWanderer Общие вопросы C/C++ 2 10.11.2008 00:15
чтение из файла в два массива Frog25 Общие вопросы C/C++ 2 26.06.2008 12:15