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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.81
LuenFen
3 / 3 / 0
Регистрация: 27.02.2009
Сообщений: 18
#1

Упорядочить элементы массива по возрастанию модулей элементов - C++

27.02.2009, 20:34. Просмотров 7979. Ответов 31
Метки нет (Все метки)

В одномерном массиве, состоящем из n вещественных элементов. Упорядочить элементы массива по возрастанию модулей элементов.

Даже не имею малейшего представления с чего начать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2009, 20:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упорядочить элементы массива по возрастанию модулей элементов (C++):

Упорядочить элементы массива по возрастанию модулей элементов - C++
В одномерном массиве,состоящем из N вещественных элементов,вычислить: 1)кол-во элементов массива,равных 0; 2)сумму элементов...

Упорядочить элементы одномерного массива по возрастанию модулей элементов - C++
Упорядочить элементы одномерного массива по возрастанию модулей элементов. если можно еще

В однородном массиве упорядочить элементы массива по возрастанию модулей элементов - C++
В однородном массиве, состоящем из n вещественных элементов, вычислить: - Упорядочить элементы массива по возрастанию модулей элементов; ...

Упорядочить элементы массива по убыванию модулей элементов - C++
в 1мерном массиве состоящем из n эл. вычислить: 1 колич эл массива лежащих от А до В 2 сумму эл массива расположенных после макс...

Упорядочить элементы одномерного массива по убыванию модулей элементов - C++
Упорядочить элементы одномерного массива по убыванию модулей элементов.

Упорядочить массив по возрастанию модулей элементов - C++
Помогите пожалуйста с этой задачей: упорядочить массив Х за возрастанием модулей. Заранее благодарен.

31
Викдон
67 / 67 / 4
Регистрация: 21.11.2008
Сообщений: 226
27.02.2009, 21:00 #2
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 "stdafx.h"
#include "iostream"
using namespace std;
 
const int n=10;
int _tmain(int argc, _TCHAR* argv[])
{ 
   float time;
   float Mas[n];
    cout<<"Input elemets mas: ";
        for(int i=0;i<n;i++){
            cout<<i<<" element: ";
            cin>>Mas[i];
            cout<<"\n";
        }
 
        for(int i=0;i<n-1;i++){
            for (int j=i+1;j<n;j++){
                if (abs(Mas[i])>abs(Mas[j])){
                    time=Mas[i];
                    Mas[i]=Mas[j];
                    Mas[j]=time;
                }
            }
 
        }
     cout<<"Itog = ";
        for (int i=0; i<n;i++)
            cout<<Mas[i]<<" ";
    return 0;
}
0
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
27.02.2009, 21:11 #3
Ну например воспользоваться std::set с перегруженым объектом Compare.
0
LuenFen
3 / 3 / 0
Регистрация: 27.02.2009
Сообщений: 18
27.02.2009, 21:35  [ТС] #4
ребят я вам благодарен за то что вы написали, правда нехрена не понял. Я только на первом курсе. Если не затруднит, можно как все проще. Вот массив {1.2, -1.8, -4.5, -0.1, -0.9, 9.7, -9.8, 0.2, 3.5, 5.7, -3.8, -6.0, 4.2, 4.3, -5.1 }
0
orange
4 / 4 / 0
Регистрация: 25.02.2009
Сообщений: 40
27.02.2009, 22:41 #5
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
// так вроде проще некуда :)
#include "stdafx.h"
#include <iostream>
int main()
{
    float b;//буферная переменная, используется при сортировкеж
    float Mas[15] = {1.2, -1.8, -4.5, -0.1, -0.9, 9.7, -9.8, 0.2, 3.5, 5.7, -3.8, -6.0, 4.2, 4.3, -5.1};
    //Обьявляем и инициализируем массив.
    //Вроде этот метод сортировки называется толи пузырьковый, толи пузырька
    for (int i = 0; i < 14; i++){
        for (int j = 0; j < 14; j++){
            if (Mas[j]*Mas[j]<Mas[j+1]*Mas[j+1]){//Mas[j]*Mas[j] перемножаем чтобы избавится от минуса.
                b = Mas[j];//тут обмениваем значения переменных...
                Mas[j] = Mas[j+1];
                Mas[j+1] = b;
            };
        };
    };
    for (int i = 0; i<15; i++){//а тут полученый масив распечатываем 
        std::cout<<Mas[i]<<std::endl;
    };
    std::cin>>b;//это чтобы программа сразу не выключалась :)
return 0;
}
0
ISergey
Maniac
Эксперт С++
1379 / 890 / 54
Регистрация: 02.01.2009
Сообщений: 2,677
Записей в блоге: 1
01.03.2009, 22:16 #6
с использованием slt проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <cmath>
 
bool foo(double i,double j)
{
    return (abs(i) < abs(j));
}
 
int main(){
 
double arr[] = {1.2, -1.8, -4.5, -0.1, -0.9, 9.7, -9.8, 0.2, 3.5, 5.7, -3.8, -6.0, 4.2, 4.3, -5.1 };
 
    std::sort(arr,arr+15,foo);
 
    for(int i = 0; i < 15; i++)
        std::cout<<arr[i]<<" ";
    std::cout<<std::endl;
 
    system("pause");
    return 0;
}
результат:
Код
-0.1 0.2 -0.9 1.2 -1.8 3.5 -3.8 4.2 4.3 -4.5 -5.1 5.7 -6 9.7 -9.8
0
LuenFen
3 / 3 / 0
Регистрация: 27.02.2009
Сообщений: 18
02.03.2009, 00:32  [ТС] #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
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
   clrscr();
   int i,j=0; double g[];
    const int N=16;
    double mas[] = {1.2, -1.8, 8.5, -4.5, -0.1, -0.9, 9.7, -9.8, 0.2, 3.5, 5.7, -3.8, -6.0, 4.2, 4.3, -5.1};
   double g[sizeof(mas)];
    for (i=0;i<N;i++);
 
    if(fabs(mas[i])<=fabs(mas[i+1]))
    g[j++]=mas[i];
 
    for (i=0;i<N;i++);
    if(fabs(mas[i])>fabs(mas[i+1]))
    g[j++]=mas[i];
 
 
    printf("g[]=");
    for(i=0;i<N;i++);
    printf("%2.1lf", g[i]);
 
        }
1
orange
4 / 4 / 0
Регистрация: 25.02.2009
Сообщений: 40
02.03.2009, 08:44 #8
Циклы for определяются как: for (инициализация;условие;изменение)команда;
У тебя же они ничего не делают. Потом метод сортировки у тебя не правельный, т.к. ты не меняешь местами значения, а просто присваеваещь, одному, другое. В результате значение первого теряется.

Добавлено через 22 минуты 53 секунды
Цитата Сообщение от orange Посмотреть сообщение
Потом метод сортировки у тебя не правельный, т.к. ты не меняешь местами значения, а просто присваеваещь, одному, другое. В результате значение первого теряется.
Не, я не зметил сразу, что у тебя два разных масива ... Данную задачу решать с помощью двух массивов помоему чушь.
0
LuenFen
3 / 3 / 0
Регистрация: 27.02.2009
Сообщений: 18
02.03.2009, 22:57  [ТС] #9
А как можно тогда это реализовать, используя простые действия. А то твои includ'ы и метод оттображения на экране препод не примет да и я объяснить не смогу
0
orange
4 / 4 / 0
Регистрация: 25.02.2009
Сообщений: 40
02.03.2009, 23:32 #10
Проще некуда
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 int main()  
 {  
     float b;
     float Mas[15] = {1.2, -1.8, -4.5, -0.1, -0.9, 9.7, -9.8, 0.2, 3.5, 5.7, -3.8, -6.0, 4.2, 4.3, -5.1};  
     for (int i = 0; i < 14; i++){  
         for (int j = 0; j < 14; j++){  
             if (Mas[j]*Mas[j]<Mas[j+1]*Mas[j+1]){
                 b = Mas[j];
                 Mas[j] = Mas[j+1];  
                 Mas[j+1] = b;  
            };  
         };  
     };  
     for (int i = 0; i<15; i++){
          printf("%2.1lf", Mas[i]); 
 
     };  
 return 0;  
 }
для VS понадобится #include "stdafx.h" ...
1
LuenFen
3 / 3 / 0
Регистрация: 27.02.2009
Сообщений: 18
03.03.2009, 00:40  [ТС] #11
Огромное спасибо,все работает Только вопрос почему надо умножать массив сам на себя, нельзя ли сделать это через модуль fabs?
0
ISergey
Maniac
Эксперт С++
1379 / 890 / 54
Регистрация: 02.01.2009
Сообщений: 2,677
Записей в блоге: 1
03.03.2009, 09:46 #12
Цитата Сообщение от orange Посмотреть сообщение
для VS понадобится #include "stdafx.h"
эт с какой радости????
0
orange
4 / 4 / 0
Регистрация: 25.02.2009
Сообщений: 40
03.03.2009, 10:31 #13
Цитата Сообщение от ISergey Посмотреть сообщение
эт с какой радости????
чтоб небыло fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
Цитата Сообщение от LuenFen Посмотреть сообщение
Огромное спасибо,все работает Только вопрос почему надо умножать массив сам на себя, нельзя ли сделать это через модуль fabs?
ты же сказал сделать попроще
0
ISergey
Maniac
Эксперт С++
1379 / 890 / 54
Регистрация: 02.01.2009
Сообщений: 2,677
Записей в блоге: 1
03.03.2009, 10:37 #14
Цитата Сообщение от orange Посмотреть сообщение
чтоб небыло fatal error C1010:....
создавайте просто пустые проэкты (Empty project). и необходимость в этом: #include "stdafx.h"
(хламе) просто отпадает.
0
LuenFen
3 / 3 / 0
Регистрация: 27.02.2009
Сообщений: 18
03.03.2009, 23:09  [ТС] #15
Цитата Сообщение от orange Посмотреть сообщение
ты же сказал сделать попроще
А, понятно тогда

Добавлено через 10 часов 10 минут 28 секунд
теперь надо сделать с этиим же массивом следущее:
вычислить:
1) кол-во элементов равных 0;
2) сумму элементов после минимального элемента.
Это должны быть 2 разных функции
0
03.03.2009, 23:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2009, 23:09
Привет! Вот еще темы с ответами:

Упорядочить элементы строк матрицы по возрастанию, а сами строки по возрастанию суммы элементов - C++
Дана матрица Х. Упорядочить элементы строк матрицы по возрастанию, а сами строки по возрастанию суммы элементов строк (использовать...

Упорядочить элементы векторов по убыванию модулей элементов - C++
Задайте два вектора А(n) и B(m). выполните задания: 1)найдите вектора С(n+m) с элементов векторо А и Б, сначала парных в порядке...

Элементы массива по убыванию модулей упорядочить методом выбора! - C++
Дан целочисленный массив A(n) с элементами, сгенерированными случайными числами в диапазоне (-20, 20). Требуется: Упорядочить методом...

Упорядочить элементы массива по возрастанию - C++
Есть программа #include &lt;iostream&gt; using namespace std; const int n = 10; int main(int argc ,char *argv) { ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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