Дмитрий
Дмитрий

(Borland C++) Неизвестно откуда берет значение. Помогите, кто знает. Заранее спасибо!

cm - создает массив, sm - выводит, en - ввод количества элементов, uc - удаляет четные числа. Как правило, именно ТРЕТИЙ элемент принимает значения 38, 46 и др. В Чем проблема?

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

#include

#include

#include

#include

#include

#include

#pragma hdrstop

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

#pragma argsused

int *cm(int K){

int *l=new int(K);

int D;

cout<<"Ukazhite maksimalnoe znachenie: ";

cin>>D;

for (int i=0;i
return l;}

void sm(int *M, int K) {

for(int i=0;i
cout<
int en() {

int K;

cout<<"Vash massiv: \nUkazhite kolichestvo elementov: ";

cin>>K;

return K; }

int uc(int *M,int K) {

int n=0;

for(int i=0;i
if((*(M+i))%2!=0) {*(M+n)=*(M+i);

n++;}

M=new int[n];

return (n); }

int main(int argc, char* argv[])

{

srand(time(0));

clrscr();

int k=en();

int *m=cm(k);

sm(m,k);

k=uc(m,k);

sm(m,k);

getch();

return 0;

}

ОГ
Ольга Груздева

#include
#include
using namespace std;
unsigned* random(size_t, unsigned short = 9);
void print(unsigned*, size_t);
unsigned* remove_even(unsigned*, size_t&);
int main() {
setlocale(0, "");
srand(static_cast(time(NULL)));
cout << " Введите размер массива: "; size_t size; cin >> size;
// при желании можно ввести и второй аргумент для максимального размера целого положительного числа
unsigned* a = random(size);
print(a, size);
a = remove_even(a, size);
print(a, size);
if (a) {
delete[] a;
a = NULL;
}
cin.sync();
cin.get();
return 0;
}
unsigned* remove_even(unsigned* a, size_t& size) {
unsigned* tmp = NULL;
if (size) {
if (tmp = new (nothrow) unsigned[size]) {
size_t m = 0;
for (size_t n = 0; n < size; ++n) {
if (~a[n] & 1) {
tmp[m] = a[n];
++m;
}
}
delete[] a;
size = m;
}
}
return tmp;
}
unsigned* random(size_t size, unsigned short max_value) {
unsigned* p = NULL;
if (size && max_value > 1) {
if (p = new (nothrow) unsigned[size]) {
for (size_t n = 0; n < size; ++n) {
p[n] = rand() % max_value;
}
}
}
return p;
}
void print(unsigned* a, size_t size) {
for (size_t n = 0; n < size; ++n) cout << ' ' << a[n];
cout << endl;
}

ЕМ
Евгений Муратов

убери какашку в функции uc:
M=new int[n];

Алексей Бацких
Алексей Бацких

на информатику надо было хадить

Gx
Gxac

0. В коде есть 2 new и 0 delete. Утечки памяти.
1. Вместо *(M + n) пиши M[ n ] - значит то же самое, а читается легче.

Похожие вопросы
как запустить borland c++?
помогите плиз=) написать программу Borland C++
Про программу Borland C++
Пожалуйста помогите написать программу в Borland C++ .
Помогите решить задачку в Borland C++
Что написать в директории в Borland C++
программа на язике borland c
КТо может помочь с языком C++ в Borland C++ Builder? КТо может помочь с языком C++ в Borland C++ Builder?
Помогите дописать Структуру ( Borland C++ )
Оператор Switch ( Borland C++ ) Помогите пожалуйста