Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 15.11.2017
Сообщений: 96

Сортировка массива в виде функций. Не выводит результата

14.05.2018, 18:03. Показов 863. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include <iostream>
#include <cstdlib>
using namespace std;
void Scan(){
int i,n;
int a[10000];
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];}}
 
void Sort(){
int a[10000],n;
Scan();
for (int j = 0; j < n; j++) {
for (int i = 0; i < n-1; i++) {
if (a[i] > a[i + 1])
swap(a[i], a[i + 1]);}
}
}
void Print(){
int a[10000],n;
Sort();
for (int j = n - 1; j >= 0; j--)
cout << a[j] << " ";}
 
int main(){
int a[10000],i;
Print();}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.05.2018, 18:03
Ответы с готовыми решениями:

Составить программу, которая выводит в табличном виде результат вычисления функций y1(x), y2(x), y3(x) и y4(x)

Получение результата в виде одномерного массива
Здравствуйте уважаемые знатоки. Пытаюсь получить результат в виде одномерного массива с помощью компоненты Memo. Начальные значения ввожу в...

Запрашивать размеры двумерного массива, значения его элементов и выводит на экран массива в виде матрицы
помогите решить!!!!!!!! Составьте программу, которая запрашивает размеры двумерного массива, значения его элементов и выводит на...

12
14 / 14 / 8
Регистрация: 10.12.2015
Сообщений: 157
14.05.2018, 18:06

Не по теме:

вот кто вас так учит писать программы? увольте препода....



вы в main sort и print создали 3 разных массива, и с 3 разными массивами вы играетесь... Он выводит то, что вы попросили...
0
0 / 0 / 1
Регистрация: 15.11.2017
Сообщений: 96
14.05.2018, 18:20  [ТС]
wekfox, А как тогда разделить в функции? Вот в целиком работает нормально:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdlib>
int main() {
    using namespace std;
    const int n = 10;
    int a[n];
    for (int i = 0; i < n; i++) {
        a[i] = { 1 + rand() % 9 };
        cout << a[i] << " "; 
    }
    cout << endl;
   for (int j = 0; j < n; j++) {
        for (int i = 0; i < n-1; i++) {
            if (a[i] > a[i + 1]) 
                swap(a[i], a[i + 1]);
        }
    }
    for (int j = n - 1; j >= 0; j--)
        cout << a[j] << " ";
}
0
14 / 14 / 8
Регистрация: 10.12.2015
Сообщений: 157
14.05.2018, 18:23
так например

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
void foo(int *a)
{
    cout << a[0];
}
 
int main()
{
    int a[1000]{1}; // {1} ток убери, шальной тестик на с++11
    foo(a);
}
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
14.05.2018, 18:26
Цитата Сообщение от DellXT Посмотреть сообщение
А как тогда разделить в функции?
Передавать массив как входной параметр функции
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2018, 18:39
DellXT, применяйте динамический массив, т.к. использование статического при вводе размера с клавиатуры не по стандарту С++

если массив целых чисел:
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
#include <iostream>
#include <ctime>
using namespace std;
 
void Sort (int *x, int N)
{
    for (int i=0; i<N-1; i++)    
    for (int j=0; j<N-i-1; j++)        
    if (x[j] < x[j+1]) swap(x[j], x[j+1]);
}
 
int main()
{
    srand((int)time(0));
    int n;
    cout <<"Enter n: "; cin >>n;
    
        int*a = new int[n];
        
    for (int i = 0; i < n; i++) {
        a[i] = rand()%9+1;
        cout << a[i] << " "; 
    }
    cout << endl;
    
    Sort (a, n);
    
    for (int i = 0; i < n; i++)        
    cout << a[i] << " "; 
    cout << endl;
    delete[]a;
system("pause");
return 0;
}
можно заполнение и вывод тоже сделать отдельными функциями
0
0 / 0 / 1
Регистрация: 15.11.2017
Сообщений: 96
14.05.2018, 20:20  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
можно заполнение и вывод тоже сделать отдельными функциями
Скажите, а как это реализовать? У меня что то не очень...


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
#include <iostream>
 
using namespace std;
 
void Sort (int *x, int N)
{
    for (int i=0; i<N-1; i++)
    for (int j=0; j<N-i-1; j++)
    if (x[j] < x[j+1]) swap(x[j], x[j+1]);
}
void Scan(int n){
    cin >>n;
 
        int*a = new int[n];
 
    for (int i = 0; i < n; i++) {
        cin>>a[i];}}
 
void Print(int a, int n){
for (int i = 0; i < n; i++)
cout << a[i] << " ";}
 
int main()
{
    Scan(n);
    Sort (a, n);
    Print (a, n);
return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2018, 21:29
Цитата Сообщение от DellXT Посмотреть сообщение
Скажите, а как это реализовать? У меня что то не очень...
Вы же на верном пути по аналогии с первой функцией:
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
#include <iostream>
#include <ctime>
using namespace std;
 
void Random (int *x, int N)
{
    for (int i = 0; i < N; i++)
    x[i] = rand()%9+1;
}  
 
void Print (int *x, int N)
{
    for (int i = 0; i < N; i++)
    cout << x[i] << " ";
    cout << endl;
} 
 
void Sort (int *x, int N)
{
    for (int i=0; i<N-1; i++)    
    for (int j=0; j<N-i-1; j++)        
    if (x[j] < x[j+1]) swap(x[j], x[j+1]);
}
 
int main()
{
    srand((int)time(0));
    int n;
    cout <<"Enter n: "; cin >>n;
    
        int*a = new int[n];
    
    Random (a, n);
    Print (a, n);   
    Sort (a, n);
    Print (a, n);
    
    delete[]a;
system("pause");
return 0;
}
Добавлено через 1 минуту
почему не сформулировали условие задачи ? массив какой по условию, из целых чисел ?
1
0 / 0 / 1
Регистрация: 15.11.2017
Сообщений: 96
14.05.2018, 22:24  [ТС]
Yetty, Спасибо, все отлично работает. Только вот еще вопрос, а если приходилось бы выводит два массива и их объединить в один (тот с которым происходит все дальнейшие операции)?

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
#include <iostream>
using namespace std;
 
void Scan (int *x, int N)
{
    for (int i = 0; i < N; i++)
    cin>>x[i];}
 
void Print (int *x, int N)
{
    for (int i = 0; i < N; i++)
    cout << x[i] << " ";
    cout << endl;
}
void Sort (int *x, int N)
{
    for (int i=0; i<N-1; i++)
    for (int j=0; j<N-i-1; j++)
    if (x[j] < x[j+1]) swap(x[j], x[j+1]);
}
 
int main()
{
    int n, x[10000];
    cin >>n;
    int*a = new int[n];
    Scan (a, n);
    Sort (a, n);
    Print (a, n);
return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2018, 23:50
DellXT, Вы забыли ответить
Цитата Сообщение от Yetty Посмотреть сообщение
массив какой по условию, из целых чисел ?
Цитата Сообщение от DellXT Посмотреть сообщение
а если приходилось бы выводит два массива и их объединить в один
непонятно сформулирован вопрос. откуда и куда выводить и как объединить ?

первоначальный массив тоже нужно выводить

и уберите x[10000]
0
0 / 0 / 1
Регистрация: 15.11.2017
Сообщений: 96
15.05.2018, 16:46  [ТС]
Yetty,
1) да, числа целые, натуральные.
2) x[10000] потому, что длина последовательности до 10000 элементов.
3) а на счет вопроса, то примерно есть два массива, a[3]={1,2,3} и b[3]={4,5,6}, и надо их объединить в один x[6]={1,2,3,4,5,6}.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.05.2018, 20:38
Цитата Сообщение от DellXT Посмотреть сообщение
x[10000] потому, что длина последовательности до 10000 элементов.
так и вводите любое n, до 10000 (n - размер динамического массива), а x[10000] уберите.
Цитата Сообщение от DellXT Посмотреть сообщение
есть два массива, a[3]={1,2,3} и b[3]={4,5,6}, и надо их объединить в один x[6]={1,2,3,4,5,6}.
если размеры массивов известны заранее можно использовать статические массивы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{  
    int a[3]={1,2,3}, b[3]={4,5,6}, x[6];
    
    for (int i = 0; i < 6; i++)
    {
    if (i<3) x[i]=a[i]; 
    else x[i]=b[i-3]; 
    cout <<x[i]<<" ";
    }   
    cout << endl;
system("pause");
return 0;
}
0
14 / 14 / 8
Регистрация: 10.12.2015
Сообщений: 157
16.05.2018, 00:12
Только при таких записях, сразу учитесь удалять, то что взяли... что бы в будущем "не стрелять себе в ногу"
C++ (Qt)
1
2
int*a = new int[n];
delete[] a;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.05.2018, 00:12
Помогаю со студенческими работами здесь

Сортировка элементов массива и вывод результата в файл
Дан массив целых чисел, состоящий из четырёх элементов. Элементы этого массива циклически перемещаются по следующему правилу: каждый...

Сортировка массива, вместо массива выводит мусор
Здравствуйте Уважаемые жители форума! Есть рабочий код сортируем массив выбором поиск наименьшего значения, но почему выводит какой то...

Сортировка массива функциями , выводит не то
Возможно где-то запуталась с атрибутами функций ... Нужно ввести массив , вывести отсортированный , Кусочек кода #include...

Сортировка массива с помощью двух функций
Всем добрый вечер. Нужно написать программу, которая бы сортировала динамический массив, с помощью ДВУХ функций(main,sortirovka). ...

Шейкерная сортировка массива (в виде функции)
Выполнить сортировку целочисленного массива(поиск в массиве) из n элементов. Алгоритм сортировки(поиска) Шейкер-сортировка, оформить в виде...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru