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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы 
:(
    Опции темы
Гость_san
Дата 6.12.2005, 22:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите найти ошибку.Программа должна найти позиции крайних отрицательных элементов и отсортировать элементы,которые находятся между ними.
Она почемуто не сортирует???

#include<iostream.h>
void sortSel(int a[] , int size)
{
int FindLeft;
int FindRight;
for(int q=0;q<size;q++)
if(a[q]<0)FindLeft=q;
for( q=size-1;q>=0;q--)
if(a[q]<0)FindRight=q;
for(int i=FindLeft;i<FindRight-1;i++)
{
int m=i;
for(int j=i;j<FindRight;j++)
{
if(a[m]<a[j])m=j;
}
int c=a[i];
a[i]=a[m];a[m]=c;
}
}
void main()
{
int b[10]={3,-3,-2,1,8,2,7,6,-5,-8};
sortSel(b,10);
for(int i=0;i<10;i++)
{
cout<<b[i]<<"\n";
}
}
  Вверх
nikitao
Дата 6.12.2005, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


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

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



Вроде так работает:
Код

#include<iostream>
#include <conio.h>
using namespace std;
void sortSel(int a[] , int size)
{
int FindLeft;
int FindRight;
for(int q=0;q<size;q++)
if(a[q]<0)FindLeft=q;
for( q=size-1;q>=0;q--)
if(a[q]<0)FindRight=q;
for(int i=FindRight;i<FindLeft-1;i++)
{
int m=i;
for(int j=i;j<FindLeft;j++)
{
if(a[m]<a[j])m=j;
}
int c=a[i];
a[i]=a[m];a[m]=c;
}
}
void main()
{
int b[10]={3,-3,-2,1,8,2,7,6,-5,-8};
sortSel(b,10);
for(int i=0;i<10;i++)
{
cout<<b[i]<<"\n";
}
getch();
} 

Твоя ошибка заключалась в том что ты перепутал переменные FindRight b FindLeft.Ты хотел Чтоб FindLeft меньше по значению FindRight.Короче посмотри код. smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Гость_san
Дата 6.12.2005, 22:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Опять не хочет сортировать?
  Вверх
Dov
Дата 7.12.2005, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Так вроде должно работать.
Код
#include<iostream.h>
void sortSel(int a[], int size)
{
    int FindLeft;
    int FindRight;

    for(int q = size - 1; q >= 0; q--)
        if(a[q] < 0)
            FindLeft = q;

    for(q = 0; q < size; q++)
        if(a[q] < 0)
            FindRight = q;

    for(int i = FindLeft + 1; i < FindRight - 1; i++)
    {
        int m   = i;
        for(int j = i; j < FindRight; j++)
            if(a[m] < a[j])
                m = j;

        int c   = a[i];
        a[i]    = a[m];
        a[m]    = c;
    }
}

void main()
{
    int b[10]   = {3, -3, -9, 1, 8, 2, 7, 6, -5, 8};
    sortSel(b, 10);
    for(int i = 0; i < 10; i++)
        cout << b[i] << "  ";
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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