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

Упорядочивание массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
24.09.2010, 02:21     Упорядочивание массива #1
дан массив вещественных чисел требуется написать функции, которые
1. упорядочивают по убыванию
2.упорядочивают по возрастанию
3.создадут новый массив, элементы которого будут те элементы первого массива,
которые больше среднего значения всех элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
24.09.2010, 03:42     Упорядочивание массива #2
Большая коллекция решенных задач

Не по теме:

Компилятора под рукой нету поэтому тока наброски 3-й, а по ссылке смотри 1-ю и 2-ю, а на будущее пользуйтесь поиском, таких задач решено множество


3-я
C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<N;i++)
{
     sum += mas[i];
}
sred = sum/N;
for(int i=0;i<N;i++)
{
    if(mas[i]>sred) mas_new[i]=mas[i];
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
24.09.2010, 10:15     Упорядочивание массива #3
вот еще

Сортировка и еще
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
25.09.2010, 12:20  [ТС]     Упорядочивание массива #4
все конечно здорово)
я не пойму как работают функции, ну сделала парочку функций, что то они там обрабатывают... как их вызвать то???
например в данном случае?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
25.09.2010, 12:32     Упорядочивание массива #5
Код в студию,будем разбиратсо.
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
25.09.2010, 12:34  [ТС]     Упорядочивание массива #6
Asics^, это конечно может бред сумасшедшего, но я только учусь....не судите строго)


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
// func.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <math.h>
using namespace std;
const int n=5;
 
int sortirovka()
        
    {int x,j;
  for( j = 1; j > n; j++ ) {   
      if ( mass[j-1] > mass[j] ) {
      x=mass[j-1]; mass[j-1]=mass[j]; mass[j]=x;
    }
return x;
  }}
 
int sred();
int new_mass();
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    int a,i;
    int mass[n];
    for(i=0; i<n;i++){
        cin>>a;
        mass[i]=a;
        }
    int sred(){
    for(int i=0;i<N;i++)
{
     sum += mass[i];
}
sred = sum/n;
return sred;
    }
 
    int new_mass(){
        int mas_new[]=0;
    for(int i=0;i<n;i++)
{
    if(mass[i]>sred) mas_new[i]=mass[i];
}
    return mass_new[i];
    }
    
return 0;
    }
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
25.09.2010, 12:55     Упорядочивание массива #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
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
void funcplus(int a[],int n)
{
 for( int i = n - 1; i >= 1; i--)
          for(int j = 0; j < i; j++)
                {
                  
                     if(a[j] > a[j+1])
                     {
                         int buffer = a[j];
                     a[j] = a[j+1];
                     a[j+1] = buffer;
                     }
                 }
                              cout << endl;
                              cout << "По возрастанию:"<<endl;
                              for( int i = 0; i < n; i++)
                                cout << a[i] << " ";
                              cout<<endl;
}
void funcminus(int a[], int n)
{
 for( int i = n - 1; i >= 1; i--)
     for(int j = 0; j < i; j++)
       {
                  
           if(a[j] < a[j+1])
           {
            int buffer = a[j];
            a[j] = a[j+1];
            a[j+1] = buffer;
           }
       }
                 cout << endl;
                 cout << "По убыванию:"<<endl;
                 for( int i = 0; i < n; i++)
                    cout << a[i] << " ";
                 cout<<endl;
} 
 
int main()
{
    setlocale(LC_ALL,"Russian");
    cout<<"Программа,сортирующая массив в порядке возрастания или убывания"<<endl;
 char s,p,t;
  do{//Для ввода своего значения
    int*a;
    int n=0;
    cout<<"Введите размерность массива:";
    cin>>n;
    a=new int[n];
      for (int i=0;i<n;i++)
      {
          cout<<"a["<<i<<"]=";
       cin>>a[i]; 
      }
 
     do{
             cout<<"Как будем сортировать?(Если по возрастанию,то жмем(+),по убыванию,то(-):";
             cin>>s;
            if (s == '+') 
                        funcplus(a,n);
                                    
            else if (s == '-')  
                        funcminus(a,n);
            
            cout<<"С этим массивом будем работать?(y/n):";
            cin>>t;                        
     }while(t =='y');                 
            cout<<"Хотите продолжить?(y/n):";
             cin>>p;
              }while (p == 'y');
  getch();
    }
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
25.09.2010, 13:07  [ТС]     Упорядочивание массива #8
Asics^, setlocale(LC_ALL,"Russian"); это я так понимаю что то вроде кодировки?

Добавлено через 1 минуту
Asics^, выводит ошибку на getch();
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
25.09.2010, 13:11     Упорядочивание массива #9
wild_flower, Да,ето для руских букв в консоли.
Я так понимаю у тебя студия ?У меня етот код в студии тоже не работает,если есть DevC++ компиль там.
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
27.09.2010, 09:47  [ТС]     Упорядочивание массива #10
а разве нельзя просто вызвать функцию так например:
cout<<funcminus(a,n)<<endl;
и еще я написала функцию, которая выводит новый массив. В новом массиве выводятся те элементы первоначального массива,которые больше среднего значения. Но она выводит тот же старый массив
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
void newmassive(int a[],int n){
    
for( int i = n - 1; i >= 1; i--)
     for(int j = 0; j < i; j++){
          
        int sum=0;
     sum += a[j];
 
     double sred =(double) sum/n;
       
    
 
    if(a[j]>sred){ 
             
        int x=a[j];
    x=a[j];}
    
}
 
cout<<"Nov massive"<<endl;
  for( int i = 0; i < n; i++)
                    cout << a[i] << " ";
                 cout<<endl;
}
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
27.09.2010, 10:09     Упорядочивание массива #11
Если нужен новый массив, то наверное его нужно создать, например, массив b. И в него уже заносить элементы из массива a. Как нибудь так...
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
void newmassive(int a[],int n)
{
    int sum=0,j=0,i;
    double sred;
 
    for(int i = 0; i < n; i++) // Подсчёт суммы
        sum += a[i];
    sred =(double)sum/n;   // Среднее
 
 
    for(i = 0; i < n; i++)  // Подсчёт размера массива b
        if(a[i]>sred)
            j++;
 
    int *b = new int[j];    // Выделение памяти под b
    j=0;
    for(i = 0; i < n; i++)  // Заполнение массива b
    {
        if(a[i]>sred)
        {
           b[j]=a[i];
           j++;
        }
    }
 
    cout<<"Srednee = "<<sred<<endl;
 
    cout<<"Nov massive"<<endl;    // Вывод массива b
    for(i = 0; i < j; i++)
        cout << b[i] << " ";
    cout<<endl;
 
    delete []b;
}
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
27.09.2010, 10:22  [ТС]     Упорядочивание массива #12
dihlofos, а вызвать данную функцию в int main() можно таким образом
cout<<newmassive(a,n);
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
27.09.2010, 10:36     Упорядочивание массива #13
Ф-ция возвращает void, что вы хотите вывести с помощью cout? Можно вызвать просто newmassive(a,n); - весь вывод на экран уже внутри ф-ции.
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
28.09.2010, 01:03  [ТС]     Упорядочивание массива #14
можно записать int*a и int*b=new int[j] не в виде ссылок и указателей?
или по другому никак?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2010, 05:55     Упорядочивание массива
Еще ссылки по теме:

C++ Упорядочивание массива c++. Объясните код программы
Упорядочивание массива структур по нескольким полям C++
C++ Упорядочивание массива

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

Или воспользуйтесь поиском по форуму:
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
28.09.2010, 05:55     Упорядочивание массива #15
Можно сделать статические массивы, например: int a[100], b[100]. Здесь 100 - это размер массива. Но этот самый размер мы заранее не знаем, так как его вводит пользователь. Массив размером больше 100 в данном случае не будет работать. Поэтому лучше использовать динамическое выделение памяти.
Yandex
Объявления
28.09.2010, 05:55     Упорядочивание массива
Ответ Создать тему
Опции темы

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