Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Решение задачи, Очень нужна помощь! 
:(
    Опции темы
WinDWS
Дата 3.12.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.10.2008
Где: Москва

Репутация: нет
Всего: нет



Дан массив действительных чисел размером N. Если в исходном массиве первый элемент больше его последнего элемента, то, не изменяя состояния исходного массива создать новый массив, в который поместить номера элементов исходного массива, соответствующие порядку убывания значений его элементов. 
вот как вот ее сделать?(

PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 3.12.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(WinDWS @  3.12.2008,  16:41 Найти цитируемый пост)
вот как вот ее сделать?(

для начала написать вопрос в соответствующем разделе
PM MAIL   Вверх
Kallikanzarid
Дата 3.12.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 240
Регистрация: 9.11.2008

Репутация: 2
Всего: 3



Цитата(WinDWS @  3.12.2008,  16:41 Найти цитируемый пост)
в который поместить номера элементов исходного массива, соответствующие порядку убывания значений его элементов. 

WTF?
PM MAIL   Вверх
WinDWS
Дата 3.12.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.10.2008
Где: Москва

Репутация: нет
Всего: нет



попросили функцию такую составить..!
PM MAIL ICQ Skype   Вверх
bomberman
Дата 3.12.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 4.4.2008
Где: Брест

Репутация: нет
Всего: нет



есть массив и если его первый элемент больше последнего, то создать новый массив, в котором отсортировать
все элементы первого массива по убыванию.

WinDWS, правильно понято? так в чем проблема написать сортировку?



Это сообщение отредактировал(а) bomberman - 3.12.2008, 17:26
PM MAIL ICQ   Вверх
WinDWS
Дата 3.12.2008, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.10.2008
Где: Москва

Репутация: нет
Всего: нет



Я просто пока только начал изучать С++ поэтому хочу посмотреть код, и разобрать его!
PM MAIL ICQ Skype   Вверх
AnLun
Дата 4.12.2008, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.1.2008

Репутация: нет
Всего: нет



Ну, что-то вроде этого:

Код

#include <fstream>

#define swap(A, B, T) T=B; B=A; A=T;

using namespace std;

void sort(int *a, int n)
{
    int t;
    for(int i=0; i<(n-1); i++)
    for(int j=i; j<n; j++)
    {
        if (a[i]<a[j])
            swap(a[i], a[j], t);
    }
}

int main()
{
    ifstream infile("mas.in");
    ofstream outfile("mas.out");

    int n, *mas;
    infile >> n;

    for(int i=0; i<n; i++)
    {
        infile >> mas[i];
    }

    if (mas[0]>mas[n-1]) sort(mas, n);

    for(int i=0; i<n; i++)
    {
        outfile << mas[i];
    }

    return 0;
}


Читает из файла массив, сортирует, если последний меньше первого, выплевывает в другой файл. Как я понял надо было что-то на подобии этого...
PM MAIL   Вверх
Dov
Дата 5.12.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Мне кажется, должно быть так. Например, если есть массив: 16 10 19 13 21 12
То новый массив должен выглядеть так: 4 2 0 3 5 1 , т.е. индексы следующих по убыванию элементов исходного массива.
При этом, сортировать старый массив и использовать дополнительный массив нельзя. 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
WinDWS
Дата 5.12.2008, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.10.2008
Где: Москва

Репутация: нет
Всего: нет



нее.. надо сделать так: допустим у меня есть массив 2,13,4,5,1 надо чтобы новый массив был 13,5,4,2,1 вот так вот! только как это сделать???

надо написать с помощью циклов! и примерно вот так:



1) если 1-ый элемент меньше последнего, выход из функции

2) создаем массив типа инт длиной Н

3) ищем наибольший элемент старого массива, пишем его номер в нулевой элемент нового.

СМ - старый массив
НМ - новый массив
К=1
начало цикла
    если К=Н, выход
    ищем в СМ элемент наибольший из тех, которые меньше 
СМ[НМ[К-1]] элемент, пишем его номер в НМ[К]
    К++
конец цикла

помогите пожайлуста написать! очень надо(((
PM MAIL ICQ Skype   Вверх
Dov
Дата 5.12.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(WinDWS @  4.12.2008,  23:08 Найти цитируемый пост)
пишем его номер в нулевой элемент нового

WinDWS,  а что такое "его номер"? По-моему, это его индекс. Или я ошибаюсь?

И что значит вот это? 
Цитата(WinDWS @  3.12.2008,  15:41 Найти цитируемый пост)
не изменяя состояния исходного массива создать новый массив




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
WinDWS
Дата 5.12.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.10.2008
Где: Москва

Репутация: нет
Всего: нет



ну да в нулевой индекс!
но старый массив оставить какой быЛ, а новый вывести в порядке убывания!
PM MAIL ICQ Skype   Вверх
Dov
Дата 5.12.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(WinDWS @  3.12.2008,  15:41 Найти цитируемый пост)
номера элементов  исходного массива,соответствующие порядку убывания значений его элементов. 




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
WinDWS
Дата 5.12.2008, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.10.2008
Где: Москва

Репутация: нет
Всего: нет



надо сделать так: допустим у меня есть массив 2,13,4,5,1 надо чтобы новый массив был 13,5,4,2,1 вот так вот!  
PM MAIL ICQ Skype   Вверх
Dov
Дата 5.12.2008, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(WinDWS @  4.12.2008,  23:43 Найти цитируемый пост)
надо сделать так: допустим у меня есть массив 2,13,4,5,1 надо чтобы новый массив был 13,5,4,2,1 вот так вот!  

Ладно, пусть будет так. Хотя я так не думаю...
Код
int main()
{
    const int      SIZE            = 5;
    int            oldArr[SIZE]    = { 2, 13, 4, 5, 1 };
    int            newArr[SIZE]    = { 0 };
    bool           check[SIZE]     = { 0 };
    int            i, max, ind;

    cout << "oldArr: ";
    for( i = 0; i < SIZE; i++ )
        cout << oldArr[i] << "  ";

    if( oldArr[0] > oldArr[SIZE - 1] )
    {
        for( i = 0; i < SIZE; i++ )
        {
            max = INT_MIN;
            for( int j = 0; j < SIZE; j++ )
            {
                if( oldArr[j] > max && !check[j] )
                {
                    max = oldArr[j];
                    ind = j;
                }
            }            
            check[ind] = true;
            newArr[i]  = max;
        }

        cout << "\nnewArr: ";
        for( i = 0; i < SIZE; i++ )
            cout << newArr[i] << "  ";
    }

    cout << endl;

    return 0;
}



Это сообщение отредактировал(а) Dov - 5.12.2008, 01:58


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
WinDWS
Дата 5.12.2008, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.10.2008
Где: Москва

Репутация: нет
Всего: нет



спасибо тебе большое!! smile 
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.