2013-12-03 5 views
0

У меня есть 2 массива того же размера, которые имеют отдельные типы, которые мне нужно синхронизировать. Один массив - это список удвоений, который я отсортировал в порядке убывания. Другой - список символов 33-90, которые соответствуют их соответствующим значениям ASCII. Перед сортировкой списка парных двух массивов выстроились хорошо, но я не мог отсортировать список символов таким же образом. Мне нужно, чтобы места были синхронизированы, EX: y[i] = ch[i];, но эта команда не работает.Как синхронизировать два массива

void sortChars(int x[], double y[]) 
{ 
    int i; 
    int largestIndex; 
    int location; 
    double temp; 
    char ch[58]; 

    for (int i = 0; i < 58; i++) 
     ch[i] = 33 + i; 

    for (i = 0; i < 58; i++) 
    { 
     //Step a 
     largestIndex = i; 
     for (location = i + 1; location < 58; location++) 
      if (x[location] > x[largestIndex]) 
       largestIndex = location; 
      //Step b 
     temp = x[largestIndex]; 
     x[largestIndex] = x[i]; 
     x[i] = temp; 
    } 

    for (i = 0; i < 58; i++) 
    { 
     //Step a 
     largestIndex = i; 
     for (location = i + 1; location < 58; location++) 
      if (y[location] > y[largestIndex]) 
       largestIndex = location; 
      //Step b 
     temp = y[largestIndex]; 
     y[largestIndex] = y[i]; 
     y[i] = temp; 
    } 

    for (int i = 0; i < 58; i++) 
    { 
     cout << ch[i] << " times used: " << left << setw(20) << x[i]; 
     cout << fixed << showpoint << setprecision(6); 
     cout << '\t' << "% of file: " << y[i] << endl; 
    } 
} 

Я попытался установить ch[i] = y[i], я попытался с помощью своего рода выбор из y[] и изменения всех y частей на этапе b к ch. Как бы вы решили совместить эти 2 массива? пожалуйста, постарайтесь не использовать команды std::, потому что все мои проекты используют using namespace std;

+0

'y [i] = ch [i];' плохо, потому что типы не выстраиваются в линию. Вы пытались отразить все операции, которые изменяют 'y' на' ch'? Двойной «Шаг b» для 'y' и в одной из копий вы заменяете каждый' y' на 'ch'. – MoFu

+0

Я получил это от этого спасибо. – user2087867

ответ

0

Похоже, вы хотели вложить 2-й и 3-й петли в первый цикл. Например:

for (int i = 0; i < 58; i++) 
{ 
    ch[i] = 33 + i; 

    for (i = 0; i < 58; i++) 
    { 
    //Step a 
    largestIndex = i; 
    for (location = i + 1; location < 58; location++) 
     if (x[location] > x[largestIndex]) 
      largestIndex = location; 
     //Step b 
    temp = x[largestIndex]; 
    x[largestIndex] = x[i]; 
    x[i] = temp; 
    } 

    for (i = 0; i < 58; i++) 
    { 
    //Step a 
    largestIndex = i; 
    for (location = i + 1; location < 58; location++) 
     if (y[location] > y[largestIndex]) 
      largestIndex = location; 
     //Step b 
    temp = y[largestIndex]; 
    y[largestIndex] = y[i]; 
    y[i] = temp; 
    } 

    for (int i = 0; i < 58; i++) 
    { 
    cout << ch[i] << " times used: " << left << setw(20) << x[i]; 
    cout << fixed << showpoint << setprecision(6); 
    cout << '\t' << "% of file: " << y[i] << endl; 
    } 
} 
Смежные вопросы