Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
#1

Вывод массива после сортировки - C++

18.04.2010, 10:39. Просмотров 1554. Ответов 18
Метки нет (Все метки)

У меня не работает правельно вывод массива после сортировки, он такой же как и вводил, помогите.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream.h>
#include  <conio.h>
#include  <stdlib.h>
class Mass
{
private:
float *PMass;
float Size;
public:
Mass();
~Mass();
void SetSize(float size){Size=size;};
float GetSize()const{return Size;};
void SetMassEL(float,float);
float GetMassEL(float)const;
};
Mass::Mass()
{ float i;
Size=100;
PMass=new float [Size];
}
Mass::~Mass()
{
float i;
for(i=0;i<Size;i++)
 delete[] PMass;
}
void Mass::SetMassEL(float x,float el){PMass[x]=el;}
float Mass::GetMassEL(float x1)const{return PMass[x1];}
void main()
{
Mass*PObject=new Mass;
float i=0,n;
float imin,el,ek,q,w,z,t;
char ch;
clrscr();
//vvod size;
cout<<"SIZE->";
cin>>n;
PObject->SetSize(n);
//vvod masuvy
for(i=0;i<PObject->GetSize();i++)
{cout<<"\n Enter element MASUVy-> ["<<i<<"]=";
cin>>el;
PObject->SetMassEL(i,el);}
cout<<endl<<"Masuv do sort"<<endl;
for(i=0;i<PObject->GetSize();i++)
cout<<PObject->GetMassEL(i)<<" ";
for(i=0;i<PObject->GetSize()-1;i++)
{
for (float j=i+1;j<n;j++)
{
if (PObject->GetMassEL(i)<PObject->GetMassEL(j)) {i=j;}
}
   q=PObject->GetMassEL(i);
q =i ;
i =q;
}
//Vuvod
cout<<endl<<endl<<"Masuv pisla sort:"<<endl ;
for(i=0;i<PObject->GetSize();i++)
cout<<PObject->GetMassEL(i)<<" ";
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2010, 10:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод массива после сортировки (C++):

Предусмотреть подсчет общего количества перестановок и вывод промежуточного массива после каждого цикла сортировки - C++
Нужно предусмотреть подсчет общего количества перестановок и вывод промежуточного массива после каждого цикла сортировки (чтобы отследить...

Вывод структуры после сортировки - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; #include &lt;windows.h&gt; using namespace std; const...

Поэтапный вывод сортировки массива - C++
C меня за помощь 100 рублей на webmoney. скайп komarov.deen icq 3556353 Нужно поэтапно вывести сортировку массива, код имеется: ...

Вывод отсортированного массива 2-мя методами сортировки - C++
Пишу на Ideone, задание состояло в сортировке массива 2-мя способами, в моем случае выбором и обменом, выводит как бы без ошибок, но сами...

Вывод отсортированного массива с индексами элементов до сортировки - C++
ЗАДАЧА: известны номера пловцов от 0 до n. Необходимо определить по результатам соренований, какое место занял каждый спортсмен. Считается,...

Найти количество сравнений после сортировки массива - C++
Нужно чтобы писала количество сравнений после сортировки массива, но я вроде все прописал #include &quot;stdafx.h&quot; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
18.04.2010, 14:24 #2
На сколько я понял, то это сортировка?
C++
1
2
3
4
5
6
7
8
9
10
for(i=0;i<PObject->GetSize()-1;i++)
{
for (float j=i+1;j<n;j++)
{
if (PObject->GetMassEL(i)<PObject->GetMassEL(j)) {i=j;}
}
   q=PObject->GetMassEL(i);
q =i ;
i =q;
}
Я так и не понял как вы собирались его отсортировать таким образом, по этому переписал.
Также я не понял, почему индексы в массиве у вас float, вы можете обратится к элементу массива с индексом 2.75?
C++
1
2
3
4
5
6
7
8
9
10
float tmp;
int j;
for(i = 0; i < PObject->GetSize() - 1; ++i)
    for (j = i + 1; j < PObject->GetSize(); ++j) 
        if (PObject->GetMassEL(i) < PObject->GetMassEL(j))
        {
            tmp = PObject->GetMassEL(i);
            PObject->SetMassEL(i, PObject->GetMassEL(j));
            PObject->SetMassEL(j, tmp);
        }
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
18.04.2010, 15:09  [ТС] #3
Заполнять массив мне нада будет целыми, дробовыми цифрами, а дальше еще и символьно. Спасибо что помогли!!
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
18.04.2010, 15:11 #4
MAQSA, так у вас же не ассоциативный массив и вы обращаетесь по номеру элемента в массиве, т.е. 0, 1, ... , n;, т.е. целое число, а вы почему-то сделали индекс вещественным
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
18.04.2010, 16:13  [ТС] #5
Скажите еще пожалуста, я правельно сделал сортировку методом пузырька
C++
1
2
3
4
5
6
7
8
9
10
for( i = 0; i < PObject->GetSize() - 1;i++)
{
      for( j=PObject->GetSize()-1; j>i; j--)
     if(PObject->GetMassEL(j-1) > PObject->GetMassEL(j))
     {
    tmp = PObject->GetMassEL(j-1);
    PObject->SetMassEL(PObject->GetMassEL(j-1), PObject->GetMassEL(j));
    PObject->SetMassEL(PObject->GetMassEL(j),tmp);
}   
}
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
18.04.2010, 17:18 #6
MAQSA, похоже на правду
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
18.04.2010, 23:12  [ТС] #7
Но оно не работает так как нужно, вот: 107 строчка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <iostream.h>
#include  <conio.h>
#include  <stdlib.h>
class Mass
{
private:
float *PMass;
float Size;
public:
Mass();
~Mass();
void SetSize(float size){Size=size;};
float GetSize()const{return Size;};
void SetMassEL(float,float);
float GetMassEL(float)const;
void SetSort(float q,float i){ q=GetMassEL(i);
q =i ;
i =q;};
};
Mass::Mass()
{ float i;
Size=100;
PMass=new float [Size];
}
Mass::~Mass()
{
float i;
for(i=0;i<Size;i++)
 delete[] PMass;
}
void Mass::SetMassEL(float x,float el){
 
PMass[x]=el;
 
}
float Mass::GetMassEL(float x1)const{return PMass[x1];}
 
void main()
{
Mass*PObject=new Mass;
float i=0,n;
float tmp;
int j;
float r,min,el,ek,q,w,z,t;
char ch,ch1;
clrscr();
//vvod size;
cout<<"SIZE->";
cin>>n;
PObject->SetSize(n);
metka1:clrscr();
cout<<endl<<"1-Randomize";
cout<<endl<<"2-User";
cout<<endl<<"Pliz enter 1 or 2"<<endl<<"==>";
cin.get(ch);
switch(ch)
{
case'1':{
randomize();
for(i=0;i<PObject->GetSize();i++)
{
el=random(10);
PObject->SetMassEL(i,el);
}
break;
}
case'2':
{//vvod masuvy
for(i=0;i<PObject->GetSize();i++)
{cout<<"\n Enter element MASUVy-> ["<<i<<"]=";
cin>>el; PObject->SetMassEL(i,el);
}
break;
}
default:{
cout<<endl<<"ENTER 1 or 2"<<endl;
goto metka1;
}
}
metka2:clrscr();
cout<<"1-Sort Vubor";
cout<<endl<<"2-Sort Bulb"<<endl;
cout<<"==>";
cin.get(ch1);
switch(ch1)
{
case'1':{
cout<<"Sort Vubir"<<endl;
for(i = 0; i < PObject->GetSize() - 1;i++)
    for (j = i + 1; j < PObject->GetSize();j++)
    if (PObject->GetMassEL(i) < PObject->GetMassEL(j))
    {
        tmp = PObject->GetMassEL(i);
        PObject->SetMassEL(i, PObject->GetMassEL(j));
        PObject->SetMassEL(j, tmp);
    }
 
cout<<endl<<endl<<"Masuv pisla sort:"<<endl ;
for(i=0;i<PObject->GetSize();i++)
 cout<<PObject->GetMassEL(i)<<" ";
 
break;
}
case'2':
{
//======================Пузырька================
cout<<"Sort Bulb"<<endl;
for( i = 0; i < PObject->GetSize() - 1;i++)
{
      for( j=PObject->GetSize()-1; j>i; j--)
     if(PObject->GetMassEL(j-1) > PObject->GetMassEL(j))
     {
    tmp = PObject->GetMassEL(j-1);
    PObject->SetMassEL(PObject->GetMassEL(j-1), PObject->GetMassEL(j));
    PObject->SetMassEL(PObject->GetMassEL(j),tmp);
}   
}
cout<<endl<<endl<<"Masuv pisla sort:"<<endl ;
for(i=0;i<PObject->GetSize();i++)
 cout<<PObject->GetMassEL(i)<<" ";
 
break;
}
default:{
cout<<endl<<"ENTER 1 or 2"<<endl;
goto metka2;
}
}
}
Добавлено через 4 часа 29 минут
Найдите ошибку пожалоста, в сортировке Бульбашки.
0
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
25.04.2010, 22:38 #8
а для буковок похожей штучки, чтоб разобраться, случаем ни у кого не завалялось, нэ?))
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
26.04.2010, 19:40  [ТС] #9
Аналогично цифрам оно будет.

Добавлено через 2 часа 31 минуту
M128K145, подскажи пожалуйста, как сделать вывод каждого шага сортировки массива, т.е. когда меняются цифры местами

Оригинал
Подскажи пожалоста, как сделать вывод кожного кроку сортировки массива, тобто когда меняються цифри местами.
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
26.04.2010, 20:01 #10
Вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int i, j, k, tmp;
for(i = 0; i < n - 1; ++i)
    for(j = 0; j < i; ++j)
    {
        if(mas[j] > mas[j + 1])
        {
            tmp = mas[i];
            mas[i] = mas[i + 1];
            mas[i + 1] = tmp;
        }
        for(k = 0; k < n; ++k)
            std::cout<<mas[k]<<' ';
        std::cout<<std::endl;
    }
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
27.04.2010, 00:35  [ТС] #11
M128K145, Что-то не выходит, я вот как сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
for(i = 0; i < PObject->GetSize() - 1;i++)
    for (j = i + 1; j < PObject->GetSize();j++)
    if (PObject->GetMassEL(i) < PObject->GetMassEL(j))
    {
        tmp = PObject->GetMassEL(i);
        PObject->SetMassEL(i, PObject->GetMassEL(j));
        PObject->SetMassEL(j, tmp);
        }
 
cout<<endl<<endl<<"Masuv pisla sort:"<<endl ;
for(i=0;i<PObject->GetSize();i++)
 cout<<PObject->GetMassEL(i)<<" ";//Вывод уже отсортированного массиву
 
 cout<<endl<<"Kpok Za Kpokom";
 for(i=0;i<PObject->GetSize()-1;i++)
 for(j=0;j<i;j++)
 {
 if(PObject->GetMassEL(j) > PObject->GetMassEL(j+1))
 {
        tmp = PObject->GetMassEL(i);
        PObject->SetMassEL(i, PObject->GetMassEL(i+1));
        PObject->SetMassEL(i+1, tmp);
        }
 cout<<endl;
 for(k=0;k<PObject->GetSize();k++)
   cout<<PObject->GetMassEL(k)<<" ";//вывод покрово
 }
Оно показывает по крокову сортировку, но не правельно. Может быть не тут вставил цикл с умовой? хотя по разному пробувал.
0
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
27.04.2010, 09:02 #12
О, спасибо)))
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
28.04.2010, 10:09  [ТС] #13
Так как сделать?
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
28.04.2010, 10:12 #14
MAQSA, а можете скриншот приложить?
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
28.04.2010, 17:35  [ТС] #15
Вывод массива после сортировки
а если такой программный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
cout<<endl<<"MACUB Do COPTyBAHH9"<<endl;
for(i=0;i<PObject->GetSize();i++)
cout<<PObject->GetMassEL(i)<<" ";
  //=
for(i = 0; i < PObject->GetSize() - 1;i++)
    for (j = i + 1; j < PObject->GetSize();j++)
    if (PObject->GetMassEL(i) < PObject->GetMassEL(j))
    {
        tmp = PObject->GetMassEL(i);
        PObject->SetMassEL(i, PObject->GetMassEL(j));
        PObject->SetMassEL(j, tmp);
        }
cout<<endl<<"Kpok Za Kpokom";
 for(i=0;i<PObject->GetSize()-1;i++)
 for(j=0;j<i;j++)
 {
 if(PObject->GetMassEL(j) > PObject->GetMassEL(j+1))
 {
        tmp = PObject->GetMassEL(i);
        PObject->SetMassEL(i, PObject->GetMassEL(i+1));
        PObject->SetMassEL(i+1, tmp);
        }
 cout<<endl;
 for(k=0;k<PObject->GetSize();k++)
   cout<<PObject->GetMassEL(k)<<" ";
 }
 
cout<<endl<<endl<<"Masuv pisla sort:"<<endl ;
for(i=0;i<PObject->GetSize();i++)
 cout<<PObject->GetMassEL(i)<<" ";
то
Вывод массива после сортировки
Вопщем я что то запутался.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2010, 17:35
Привет! Вот еще темы с ответами:

Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки - C++
Есть вектор(STL) элементов. У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора...

Ввод и вывод массива целых чисел Вычислить сумму модулей элементов массива,располроженных после первого отрицательного - C++
Очень срочно,помогите пожалуйста,чем быстрее - тем лучше=) Ввод и вывод массива целых чисел.задания оформить в виде функции,глобальные...

Ввод и вывод массива целых чисел Вычислить сумму модулей элементов массива,располроженных после первого отрицательного - C++
Очень срочно,помогите пожалуйста,чем быстрее - тем лучше=) Ввод и вывод массива целых чисел.задания оформить в виде функции,глобальные...

Пример быстрой сортировки массива строк и сортировки методом выбора - C++
Добрый вечер. Скиньте пожалуйста пример быстрой сортировки массива строк и сортировки массива строк методом выбора. Очень срочно надо,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.04.2010, 17:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru