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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2011, 22:37   #1
lilek
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 21
По умолчанию класс с массивом

Вот программа на сортирование массива одномерного через классы.
Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include "fun_console.h"
#include <stdlib.h>
#include "stdafx.h"


class mas
{
public:
	void zap();
	int sort();
int *mas1, *mas2;
	mas(int m);
};

void mas::zap()
{
	int i, m;
cout<<endl<<"kolichestvo elementov = ";
  cin>>m;
  cout<<"\n";
int *mas1=new int[m];
int *mas2=new int[m];
	for (i = 0;i < m;i++)
 mas1[i]=rand()%100;
  for (i=0;i < m;i++)
	  cout<<mas1[i]<<"   ";
}
mas::mas(int m){};

int mas::sort()
{
	int i, int m, int *mas1, int *mas2;
cout<<"\n\n\n";
int j=0;
for (i=0;i<m;i++)
{
if (mas1[i] % 2 == 0 && mas1[i] % 3 !=0) 
{
	    mas2[j]=mas1[i];
		cout<<mas2[j]<<"   ";
		j++;
}
		
}

j++;
for (i=0;i<m;i++)
{
if (mas1[i] % 3 == 0 && mas1[i] % 2 !=0) 
{

    mas2[j]=mas1[i];
	cout<<mas2[j]<<"   ";
	j++;
}

}
j++;
for (i=0;i<m;i++)
{
if (mas1[i] % 3 == 0 && mas1[i] % 2 ==0) 
{

    mas2[j]=mas1[i];
	cout<<mas2[j]<<"   ";
	j++;
}

}
j++;

for (i=0;i<m;i++)
{
if (mas1[i] % 2 != 0 && mas1[i] % 3 != 0)
{
	
mas2[j]=mas1[i];
cout<<mas2[j]<<"   ";
j++;
}
}
return *mas2;
}

void main()
{
	int *mas1, int *mas2;
mas a(5);
a.zap();
cout<<a.sort();

cout.flush();
getch();
delete[]mas1;
delete[]mas2;

//return 0;
}
Но я не знаю, как правильно записать возврат: return *mas2. ???
Пишу так, программа запускается, но сразу же после ввода количества элементов виснет.
Пишу return mas2, оно ругается на несоответствие типов функций.
Как мне правильно записать???
lilek вне форума Ответить с цитированием
Старый 10.03.2011, 23:51   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Как-нибудь так:
Код:
class mas
{
public:
mas(): size(0), arr(0);
void zap();
int* sort();
private:
int* arr;
int size;
};

//...
int* mas::sort()
{
int* a = new int[size];
//...
return a;
}
Хотя код далеко не оптимальный, и тут еще есть что улучшать как с идеологической, так и с технической точки зрения.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 11.03.2011, 09:27   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
int mas::sort()
{
int i, int m, int *mas1, int *mas2;
зачем переопределяешь глобальные указатели класса? и что ты с ними делаешь в этой процедуре???
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42
работа с массивом novi4ok_Delphi Помощь студентам 4 24.03.2010 20:28
задача с массивом bonys91 Помощь студентам 3 26.03.2009 22:11
Помогите с массивом Dimati87 Помощь студентам 1 04.03.2009 09:10
Уравнение с массивом KulOle Паскаль, Turbo Pascal, PascalABC.NET 2 14.10.2008 19:18