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

сортировка и связь массивов - C++

Восстановить пароль Регистрация
 
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
26.03.2012, 18:45     сортировка и связь массивов #1
доброго времени суток.
проблема следующая: есть массив, скажем
C++
1
array1[] = {1.3,0.5,5.7,0.9};
нужно создать еще один массив в котором по умолчанию стоят ранги первого массива
C++
1
array2[]= {1,2,3,4};
.
но массив array1 не упорядочен, и вот если его упорядочить т.е.
C++
1
array1[] = {0.5,0.9,1.3,5.7};
то и второй массив изменится т.е.
C++
1
array2[]= {2,4,1,3};
как это сделать, все что я пробовал не получается.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
26.03.2012, 18:54     сортировка и связь массивов #2
C++
1
2
3
4
5
6
bool comp(int a, int b)
{
    return (array1[a] < array1[b]);
}
 
sort(array2, array2 + len, comp); // len - длина массива
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
26.03.2012, 19:08  [ТС]     сортировка и связь массивов #3
Цитата Сообщение от Duha666 Посмотреть сообщение
bool comp(int a, int b)
{
return (array1[a] < array1[b]);
}
sort(array2, array2 + len, comp); // len - длина массива
не понял вызов функции sort. да и вообще непонял если чесно.
вот например, накидал по быстрому, как для этой проги применить точто вы предложили.
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
#include "stdafx.h"
#include <iostream>
using namespace std;
bool comp(int a, int b)
{int array1[4];
    return (array1[a] < array1[b]);
}
 
 
 void bubbleSort(double array[], int col){                    
        int temp=0;                              
        for (int i=1;  i<col  ;  i++){            
                for (int j=0;  j<col-i;  j++){     
                        if (array [j]>array [j+1]){     
                                temp=array[j];           
                                array [j]=array [j+1];    
                                array [j+1]=temp;
                        }
                }
        }
}
int main(int argc, char* argv[])
{
    double array1[] = {0.2,1.4,9.1,0.1};
    int array2[] = {1,2,3,4};
    for(int i = 0;i < 4;i++)
    {
        array1[i] == array2[i];
    }
    bubbleSort(array1,4);
    for(int i = 0; i< 4; i++)
    {
        cout << array2[i] << " ";
    }
    return 0;
    
}
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
26.03.2012, 19:12     сортировка и связь массивов #4
sort - стандартная STL-евая сортировка. Коли на C++ пишем. Вообщем, сортируется массив так, что выполняется условия компаратора(здесь comp). Ведь номер указывает на элемент, то мы можем сразу посортить эти номера. Ах да, если ранги нумеруются с нуля, то:
C++
1
return (array1[a - 1] < array1[b - 1]);
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
26.03.2012, 19:51  [ТС]     сортировка и связь массивов #5
все, получилось, спасибо большое)

Добавлено через 11 минут
Цитата Сообщение от Duha666 Посмотреть сообщение
bool comp(int a, int b)
{
return (array1[a] < array1[b]);
}
вот еще вопрос, ошибка инициализации. исчезает только если объявить вот так:
C++
1
2
3
4
bool comp(int a, int b)
{double array1[4] ={0.2,1.4,9.1,0.1};
    return (array1[a-1] < array1[b-1]);
}
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 04:45     сортировка и связь массивов #6
Объявите эти массивы до компаратора.
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
27.03.2012, 13:34  [ТС]     сортировка и связь массивов #7
мне не подходит объявление массива до функции, значения в нем рассчитываются в ходе программы.

Добавлено через 17 секунд
причем в теле main
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 13:39     сортировка и связь массивов #8
Ээ... Ну и что, что происходит изменение в ходе программы? Объявить же можно и до.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 14:48     сортировка и связь массивов
Еще ссылки по теме:

Связь массивов и указателей C++
Сортировка 2-ух массивов C++
Сортировка массивов C++

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

Или воспользуйтесь поиском по форуму:
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
27.03.2012, 14:48  [ТС]     сортировка и связь массивов #9
порой поражаюсь своей глупости. Все работает,спс)
Yandex
Объявления
27.03.2012, 14:48     сортировка и связь массивов
Ответ Создать тему
Опции темы

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