HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 30.12.2008, 21:42
Cereus
Новичок
Регистрация: 09.11.2008
Сообщений: 15
С нами: 9211578

Репутация: 16
По умолчанию

Цитата:
Сообщение от HencH_MaN  
Помогите с заданием по С++
Дан вещественный массив длины N. Разработать программу, которая сортирует массив так, что все его положительные числа находятся в начале, все отрицательные в конце, причем сохраняется исходный порядок следования элементов в соответствующих группах.
Как отсортировать по знаку что нужно использовать?
Данный способ основан на использовании двух дополнительных матриц - одна хранит положительные значения из входного массива, а вторая отрицательные. При данном способе можно было бы обойтись и без входного массива, но в ТВОЕМ задании сказано... Короче вот:

Код:
# include <cstdio>
# include <cstdlib>
# include <iostream>

using namespace std;

int main(){
cout<<"Введите количество элементов в матрице: ";
int n=1; //переменная хранящая количество элементов в марице
cin>>n;
double mas1[n];//главный массив
double masOtr[n];//массив для хранения отрицательных значений
double masPol[n];//массив для хранения положительных значений
int pol=0,otr=0;//переменные для хранения количества положительных и отрицательных элементов
for (int i=0;i<n;i++){//начало цикла заполняющего массивы
    cout<<"Вводится элемент №"<<i<<" ";
    cin>>mas1[i];//заполняем основной массив
    if (mas1[i]<0) {masOtr[otr]=mas1[i];otr++;} else {masPol[pol]=mas1[i];pol++;}; //выбираем положительные и отрицательные числа
}; //конец цикла заполняющего массивы
cout<<"\nСодержание матрицы до изменения\n";
for (int i=0;i<n;i++){
cout<<mas1[i]<<endl; //выводим содержание массива до сортировки
}
otr=0;
for (int i=0;i<n;i++){//начало сортировки массива
    if (i<pol) {mas1[i]=masPol[i];} else {mas1[i]=masOtr[otr];otr++;}; //собственно сортировка массива
                                                                       //отрицательные числа сортируются после всех
}//конец сортировки массива
cout<<"\nСодержание матрицы после фильтрации\n";
for (int i=0;i<n;i++){
cout<<mas1[i]<<endl; //вывод содержания массива после сортировки
}
system ("pause");//пауза для того чтобы посмотреть результат
return 0;
}
P.S.
Обращаюсь к знающим античатовцам: мои познания в C++ весьма скудны и поэтому прошу тех кто знает посмотреть на данный код и оптимизировать его и/или предложить более рациональный способ (мне самому уже интересны варианты решения данной задачи).
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.