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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2009, 17:25   #1
Катюшенька
Пользователь
 
Аватар для Катюшенька
 
Регистрация: 08.12.2008
Сообщений: 32
Печаль Динамическая память в Борланд Си... Считает но не все...

Записать в массив Х 25 целых чисел. Переписать положительные из них подряд в массив P, а отрицательные - в массив N
там где выделено жирным шрифтом... думаю тут проблемка... Спасите... Уже все книги прочла... буду благодарна... очень...

Цитата:
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <iostream.h>
#include <stdlib.h>
const int n=25;
int main()
{
int a[n];
int *p, *o, i, j, k, z;
int fl;
srand (time(NULL));
// zapolnyaem a
cout<<"Massiv a:\n";
for (i=0; i<n; i++)
{
a[i]=rand()%10;
cout.width(4);
cout<<a[i];
}
cout<<endl<<endl;
//----------------
// smotrim, skolko mesta nygno dlya novogo massiva
for (i=0, k=0; i<n; i++)
{
fl=1;
if (a[i]>=0)
{
fl=0;
break;
}
if (!fl) continue;
k++;
}
//-----------------
//videlyaem pamyat
p=new int[k];
//zapolnyaem massiv p
cout<<"Massiv p:\n";
z=0;
for (i=0; i<n; i++)
{
fl=1;
if (a[i]>=0)
{
fl=0;
break;
}
if (!fl) continue;
p[z++]=a[i];
cout.width(4);
cout<<a[i];
}
// smotrim, skolko mesta nygno dlya novogo massiva
for (i=0, k=0; i<n; i++)
{
fl=1;
if (a[i]<0)
{
fl=0;
break;
}
if (!fl) continue;
k++;
}
//-----------------
//videlyaem pamyat
o=new int[k];
//zapolnyaem massiv o
cout<<"Massiv o:\n";
z=0;
for (i=0; i<n; i++)
{
fl=1;
if (a[i]<0)
{
fl=0;
break;
}
if (!fl) continue;
o[z++]=a[i];
cout.width(4);
cout<<a[i];
}
delete[] p;
delete[] o;
getch();
clrscr();
return 0;
Верю... Надеюсь... Люблю...
Катюшенька вне форума Ответить с цитированием
Старый 16.02.2009, 17:37   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

вам сначало нужно выделить память под этот массив, а уж потом заполнять

Код:
int *a;
Код:
a=calloc(n,sizeof(int));
или

Код:
a=new int[n];
counter вне форума Ответить с цитированием
Старый 16.02.2009, 17:43   #3
Катюшенька
Пользователь
 
Аватар для Катюшенька
 
Регистрация: 08.12.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
вам сначало нужно выделить память под этот массив, а уж потом заполнять

Код:
int *a;
Код:
a=calloc(n,sizeof(int));
или

Код:
a=new int[n];
Нет... все равно ошибка... Он по функции только положительные пишет... а мне и отрицательные нужны, может какая-то функция есть???
Верю... Надеюсь... Люблю...
Катюшенька вне форума Ответить с цитированием
Старый 16.02.2009, 17:50   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

может вот так

Код:
fl=0;
for (i=0; i<n; i++)
{
    if (a[i]>=0)
    {
         fl++; // schitaem polozhitel'nie
    }
}

p=new int[fl]; // videlyaem pamyat'

int j=0;
for(int i=0;i<fl;i++)
{
   if(a[i]>=0)
    {
        
        p[j]=a[i];
        j++;
     }
}
с отрицательными также
counter вне форума Ответить с цитированием
Старый 16.02.2009, 17:59   #5
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Вот
Код:
#include <iostream.h>
int main()
{
	const int n = 25;
	int *arr;
	int lenl = 0, *l;
	int lenr = 0, *r;

	arr = new int[n];
	for(int i = 0; i < n; i++)
	{
		arr[i] = rand()%5-2;
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	for(int i = 0; i < n; i++)
		if(arr[i] < 0)
			lenl++;
		else
			lenr++;

	l = new int[lenl];
	r = new int[lenr];

	for(int i = 0,lenl = 0,lenr = 0; i < n; i++)
		if(arr[i] < 0) 
			l[lenl++] = arr[i];
		else 
			r[lenr++] = arr[i];

	for(int i = 0; i < lenl; i++)
		cout<<l[i]<<" ";
	cout<<endl;

	for(int i = 0; i < lenr; i++)
		cout<<r[i]<<" ";
	cout<<endl;

	delete[] arr;
	delete[] l;
	delete[] r;
	return 0;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправте программу.Ссылочные типы данных. Динамическая память ромка) Паскаль, Turbo Pascal, PascalABC.NET 2 30.05.2008 04:24
Ссылочные типы данных. Динамическая память/HELP!! ромка) Паскаль, Turbo Pascal, PascalABC.NET 2 22.05.2008 09:03
Текстовый редактор (динамическая память) quf Паскаль, Turbo Pascal, PascalABC.NET 2 21.04.2008 16:59
Динамическая память MadDog__ Помощь студентам 2 22.11.2007 00:05