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

Сортировка массива функцией - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Valerko
17 / 17 / 1
Регистрация: 30.11.2010
Сообщений: 164
07.02.2011, 16:36     Сортировка массива функцией #1
Функции в С++ мы начали учить недавно, поэтому я в них не сильно понимаю.
вот написал программу, для сортировки массива пузырьком
а как сделать то же самое с использованием функции?( я даже примерно не могу понять как это)

вот моя программа:
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
#include <iostream>
using namespace std;
 
int main()
{
setlocale(0,"Rus");
int s[10];
int i,swap,t,max, mid;
  for (i=0; i<10; i++)
        {
          cout<<"Введите "<<i+1<<" из 10 элементов массива"<<endl;
          cin>> s[i];
        }
cout<<"Ваш массив:"<<endl;       
  for(i=0;i<10;i++)
       {
          cout << s[i]<<"  ";
       }
 
for(i=0;i<10;i++)
{
 
max=s[i];
mid=i;
for(t=(i+1);t<10;t++)
{
   if (s[t]>max) {mid=t; max=s[t];};
}
 
swap=s[i];
s[i]=s[mid];
s[mid]=swap;
 
};
 
cout<<"\nОтсортированный массив"<<endl;
for(int f=0;f<10;cout<<endl<<s[f],f++);
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
07.02.2011, 16:41     Сортировка массива функцией #2
Valerko,
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
#include <iostream>
using namespace std;
 
 void bubble_sort(int s[])
 {
   int i,swap,t,max, mid;
   for(i=0;i<10;i++)
{
 
max=s[i];
mid=i;
for(t=(i+1);t<10;t++)
{
   if (s[t]<max) {mid=t; max=s[t];};
}
 
swap=s[i];
s[i]=s[mid];
s[mid]=swap;
 
}
 }
 
int main()
{
setlocale(0,"Rus");
int s[10];
int i,swap,t,max, mid;
  for (i=0; i<10; i++)
        {
          cout<<"Введите "<<i+1<<" из 10 элементов массива"<<endl;
          cin>> s[i];
        }
cout<<"Ваш массив:"<<endl;
  for(i=0;i<10;i++)
       {
          cout << s[i]<<"  ";
       }
       bubble_sort(s);
 
cout<<"\nОтсортированный массив"<<endl;
for(int f=0;f<10;cout<<endl<<s[f],f++);
return 0;
}
Valerko
17 / 17 / 1
Регистрация: 30.11.2010
Сообщений: 164
08.02.2011, 02:50  [ТС]     Сортировка массива функцией #3
Цитата Сообщение от asics Посмотреть сообщение
Valerko,
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
#include <iostream>
using namespace std;
 
 void bubble_sort(int s[])
 {
   int i,swap,t,max, mid;
   for(i=0;i<10;i++)
{
 
max=s[i];
mid=i;
for(t=(i+1);t<10;t++)
{
   if (s[t]<max) {mid=t; max=s[t];};
}
 
swap=s[i];
s[i]=s[mid];
s[mid]=swap;
 
}
 }
 
int main()
{
setlocale(0,"Rus");
int s[10];
int i,swap,t,max, mid;
  for (i=0; i<10; i++)
        {
          cout<<"Введите "<<i+1<<" из 10 элементов массива"<<endl;
          cin>> s[i];
        }
cout<<"Ваш массив:"<<endl;
  for(i=0;i<10;i++)
       {
          cout << s[i]<<"  ";
       }
       bubble_sort(s);
 
cout<<"\nОтсортированный массив"<<endl;
for(int f=0;f<10;cout<<endl<<s[f],f++);
return 0;
}
а как то же самое сделать, но чтобы размер массива задавать отдельно?


Добавлено через 9 часов 42 минуты
вверх!
Runa
 Аватар для Runa
130 / 82 / 3
Регистрация: 28.08.2009
Сообщений: 363
08.02.2011, 06:04     Сортировка массива функцией #4
Это имелось в виду?
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
 void bubble_sort(int s[], int n)
 {
   int i,swap,t,max, mid;
   for(i=0;i<n;i++)
{
 
max=s[i];
mid=i;
for(t=(i+1);t<n;t++)
{
   if (s[t]<max) {mid=t; max=s[t];};
}
 
swap=s[i];
s[i]=s[mid];
s[mid]=swap;
 
}
 }
 
int main()
{
setlocale(0,"Rus");
const int n = 10;
int s[n];
int i,swap,t,max, mid;
  for (i=0; i<n; i++)
        {
          cout<<"Введите "<<i+1<<" из "<<n<<" элементов массива"<<endl;
          cin>> s[i];
        }
cout<<"Ваш массив:"<<endl;
  for(i=0;i<n;i++)
       {
          cout << s[i]<<"  ";
       }
       bubble_sort(s,n);
 
cout<<"\nОтсортированный массив"<<endl;
for(int f=0;f<n;cout<<endl<<s[f],f++);
return 0;
}
Или требуется чтобы пользователь задавал длину массива?
Если второе, то сразу уточните какой массив вам нужен: статический или динамический?
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
08.02.2011, 11:19     Сортировка массива функцией #5
Цитата Сообщение от Valerko Посмотреть сообщение
а как то же самое сделать, но чтобы размер массива задавать отдельно?


Добавлено через 9 часов 42 минуты
вверх!
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    int n;
    cout<<"Enter n: \n";
    cin>>n;
    int *a=new int [n]; //динамическое выделение памяти под заданное число элементов
    cout<<"Enter "<<n<<" elements: \n";
    for (int i=0; i<n; i++)
        cin>>a[i];
    delete [] a; //освобождение памяти
    return 0;
}
Valerko
17 / 17 / 1
Регистрация: 30.11.2010
Сообщений: 164
08.02.2011, 23:21  [ТС]     Сортировка массива функцией #6
Цитата Сообщение от Maruna Посмотреть сообщение

Или требуется чтобы пользователь задавал длину массива?
Если второе, то сразу уточните какой массив вам нужен: статический или динамический?
хотелось бы задавать длину массива

Добавлено через 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
#include <iostream>
char* Rus(const char* text);
using namespace std;
 
void bubble_sort(int s[]);
int main()
{
setlocale(0,"Rus");
int n;
int *s=new int [n];
cout<<"Введите количество элементов массива:"<<endl;
cin>>n;
int i,swap,t,max, mid;
  for (i=0; i<n; i++)
        {
          cout<<"Введите "<<i+1<<" из "<<n<<" элементов массива"<<endl;
          cin>> s[i];
        }
cout<<"Ваш массив:"<<endl;
  for(i=0;i<n;i++)
       {
          cout << s[i]<<"  ";
       }
       bubble_sort(s);
 
cout<<"\nОтсортированный массив"<<endl;
for(int f=0;f<n;cout<<endl<<s[f],f++);
return 0;
}
 
 
 void bubble_sort(int s[], int n)
 {
   int i,swap,t,max, mid;
   for(i=0;i<n;i++)
{
 
max=s[i];
mid=i;
for(t=(i+1);t<n;t++)
{
   if (s[t]<max) {mid=t; max=s[t];};
}
 
swap=s[i];
s[i]=s[mid];
s[mid]=swap;
 
}
 }
вот переделал, чтобы задать длину массива, но не компилируется, где-то ошибка, не могу понять где
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
08.02.2011, 23:31     Сортировка массива функцией #7
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
#include <iostream>
using namespace std;
 
char* Rus(const char* text);
 
void bubble_sort(int *s, int n);
 
int main(){
    setlocale(0,"Rus");
    int n;
    cout<<"Введите количество элементов массива:"<<endl;
    cin>>n;
    int *s=new int [n];
    int i,swap,t,max, mid;
    for (i=0; i<n; i++)
            {
              cout<<"Введите "<<i+1<<" из "<<n<<" элементов массива"<<endl;
              cin>> s[i];
            }
    cout<<"Ваш массив:"<<endl;
    for(i=0;i<n;i++)
           {
              cout << s[i]<<"  ";
           }
    bubble_sort(s, n);
    cout<<"\nОтсортированный массив"<<endl;
    for(int f=0;f<n;cout<<endl<<s[f],f++);
    return 0;
}
 
 void bubble_sort(int *s, int n)
 {
   int i,swap,t,max, mid;
   for(i=0;i<n;i++)
{
 
max=s[i];
mid=i;
for(t=(i+1);t<n;t++)
{
   if (s[t]<max) {mid=t; max=s[t];};
}
 
swap=s[i];
s[i]=s[mid];
s[mid]=swap;
 
}
 }
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.02.2011, 23:33     Сортировка массива функцией #8
пфф... сначала вводим размерность а потом выделяем память(строки 9-12) замени на это
C++
1
2
3
4
int n;
cout<<"Введите количество элементов массива:"<<endl;
cin>>n;
int *s=new int [n];

Не по теме:

а вообще разделяйте операторы пробелами чтобы ваш код было удобней читать другим, если вы хотите чтобы вам помогли

MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
08.02.2011, 23:41     Сортировка массива функцией #9
Немного подправил
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
#include <iostream>
 
char* Rus(const char* text);
 
using namespace std;
 
int* bubble_sort(int s[],int n);
 
int main()
{
 setlocale(0,"Rus");
 int n;
 cout<<"Введите количество элементов массива:"<<endl;
 cin>>n;
 int *s=new int [n];
 int i;
  for (i=0; i<n; i++)
        {
          cout<<"Введите "<<i+1<<" из "<<n<<" элементов массива"<<endl;
          cin>> s[i];
        }
  cout<<"Ваш массив:"<<endl;
   for(i=0;i<n;i++)
       {
          cout << s[i]<<"  ";
       }
       bubble_sort(s,n);
 cout<<"\nОтсортированный массив"<<endl;
 for(int f=0;f<n;cout<<endl<<s[f],f++);
 delete []s;
 system("pause");
return 0;
}
 
 int* bubble_sort(int s[], int n)
 {
   int i,swap,t,max, mid;
   for(i=0;i<n;i++)
       {
          max=s[i];
          mid=i;
          for(t=(i+1);t<n;t++)
             {
                 if (s[t]<max) {mid=t; max=s[t];};
             }
         swap=s[i];
         s[i]=s[mid];
         s[mid]=swap;
       }
   return s;
 }
Runa
 Аватар для Runa
130 / 82 / 3
Регистрация: 28.08.2009
Сообщений: 363
09.02.2011, 02:41     Сортировка массива функцией #10
хотелось бы задавать длину массива
если вы хотите задавать длину массива это можно сделать двумя способами
1 - наиболее правильный создание динамического массива сразу той длины, которую ввел пользователь, этот вариант вам уже написали
2 - если вы не изучали указатели, то есть еще такой вариант: создать статический массив с запасом(например 1000 элементов) а потом ввести количество элементов, которое будет использоваться и везде считать только до этого элемента, тогда можно написать так
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
 void bubble_sort(int s[], int n)
 {
   int i,swap,t,max, mid;
   for(i=0;i<n;i++)
{
 
max=s[i];
mid=i;
for(t=(i+1);t<n;t++)
{
   if (s[t]<max) {mid=t; max=s[t];};
}
 
swap=s[i];
s[i]=s[mid];
s[mid]=swap;
 
}
 }
 
int main()
{
setlocale(0,"Rus");
int n;
int s[1000];
cout<<"Введите количество элементов массива"<<endl;
cin>> n;
int i,swap,t,max, mid;
  for (i=0; i<n; i++)
        {
          cout<<"Введите "<<i+1<<" из "<<n<<" элементов массива"<<endl;
          cin>> s[i];
        }
cout<<"Ваш массив:"<<endl;
  for(i=0;i<n;i++)
       {
          cout << s[i]<<"  ";
       }
       bubble_sort(s,n);
 
cout<<"\nОтсортированный массив"<<endl;
for(int f=0;f<n;cout<<endl<<s[f],f++);
return 0;
}
Valerko
17 / 17 / 1
Регистрация: 30.11.2010
Сообщений: 164
13.02.2011, 21:14  [ТС]     Сортировка массива функцией #11
Цитата Сообщение от Maruna Посмотреть сообщение
а можно так?
C++
1
2
3
4
5
while (s[i] !=100500)
{
cout<<"Введите очередной элемент массива или 100500 для завершения"
cin>> s[i]
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2011, 02:24     Сортировка массива функцией
Еще ссылки по теме:

Возврат функцией массива структур C++
C++ Сортировка пузырьком функцией в заголовочном файле
C++ Удаление элементов массива функцией

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

Или воспользуйтесь поиском по форуму:
Runa
 Аватар для Runa
130 / 82 / 3
Регистрация: 28.08.2009
Сообщений: 363
14.02.2011, 02:24     Сортировка массива функцией #12
тогда уж как-то так
C++
1
2
3
4
5
6
7
do
{
cout<<"Введите очередной элемент массива или 100500 для завершения";
cin>> s[i];
i++;
}
while (s[i - 1] !=100500);
Yandex
Объявления
14.02.2011, 02:24     Сортировка массива функцией
Ответ Создать тему
Опции темы

Текущее время: 00:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru