IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Конструктор С++
ammaximus
сообщение 21.01.2009 19:35
Сообщение #1


Ночной волк
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской

Репутация: -  1  +


 #include <iostream>

class massiv {

public:
int s;

void showall(){
for (int i=0; i<20; i++) cout << " | " << mas[i] << " | ";
cout << endl;
return;
}

int check_this(){
int max=0;
int min=0;
for (int i=1; i<20; i++){
if mas[i]>mas[max] then max=i;
if mas[i]<mas[min] then min=i;
}
if (max=min) return 0;
int check=0;
int d=1;
if (max<min) d=-1;
for (int i=min; i!=max; i=i+d) if mas[i]>0 then check++;
return check;
}

massiv() {
cout << "How many digit in array?" << endl;
cin >> s;
cout << "Input " << s << " digit" << endl;
int *mas = new int[s];
cin >> mas;

}

~massiv();

int main {
massiv buffer;
massiv a[5]; Так вообще можно?
bool flag=false;
while (flag=false) {
flag=true;
for (int i=0; i<4; i++) {
if (a[i].check_this > a[i+1].check_this) {
flag=false;
buffer=a[i];
a[i]=a[i+1];
a[i+1]=buffer; а так?

}
}
}
for (int i=0; i<5; i++) a[i].showall
return 0;
}
а как тогда?

/* Программа содержит класс massiv, для которого определена функция определения количества
положительных элементов между максимальным и минимальным элементом динамического массива
(check_this), функция вывода, конструктор, деструктор. Программа обрабатывает 5 таких объектов
и выводит их в порядке увеличения значения check_this. */



Мне удалось сократить количество ошибок до 17... smile.gif


--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
volvo
сообщение 21.01.2009 20:58
Сообщение #2


Гость






Цитата
Мне удалось сократить количество ошибок до 17
Даже если ты уберешь все ошибки, это ничего не изменит. Твоя программа не будет работать корректно. Слишком много подводных камней. Вот так вот - будет:

#include <iostream>
using namespace std;

class massiv {

public:
void showall() {
for (int i=0; i<s; i++) cout << " | " << mas[i] << " | ";
cout << endl;
}

int check_this(){
int max=0;
int min=0;
for (int i=1; i<s; i++){
if(mas[i]>mas[max]) max=i;
if(mas[i]<mas[min]) min=i;
}
if (max==min) return 0;
int check=0;
int d=1;
if (max<min) d=-1;
for (int i=min; i!=max; i=i+d) if(mas[i]>0) check++;
return check;
}

massiv() {
cout << "How many digit in array?" << endl;
cin >> s;
cout << "Input " << s << " digit" << endl;
mas = new int[s];
for(int i = 0; i < s; i++) cin >> mas[i];
}

// копирование массива
massiv(const massiv &mv) {
init(mv.mas, mv.s);
}

// присваивание массива
massiv& operator = (const massiv &mv) {
if(this == &mv) return *this;
delete mas;
init(mv.mas, mv.s);
return *this;
}

~massiv() {
delete [] mas;
}
private:
int s;
int *mas;

void init(const int *arr, int size) {
mas = new int [s = size];
for(int i = 0; i < s; i++)
mas[i] = (arr == 0) ? 0 : arr[i];
}
};

int main() {
const int n = 5;
massiv a[n];

bool flag=false;
while (flag==false) {
flag=true;
for (int i=0; i<(n - 1); i++) {
if(a[i].check_this() > a[i+1].check_this()) {
flag=false;
massiv buffer = a[i];
a[i] = a[i+1];
a[i+1] = buffer;
}

}
}
for (int i=0; i<n; i++) a[i].showall();
return 0;
}
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 3:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"