[решено]упорядочивание Элементов Массива

Тема в разделе "C/C++/C#", создана пользователем Whatka, 22 окт 2011.

Статус темы:
Закрыта.
  1. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Дан A=(ai)массив из n элементов(n<=10) и число b.
    Переставить числа в массиве таким образом,
    чтобы сначала шли элементы,меньшие или равные b,
    а лишь затем большие b.



    Помогите, пожалуста незнаю причины появления нуля (между числами<=b и большими) при выводе результата на экран.
    Всем ответившим заранее спасибо.







    #include <iostream>
    #include <stdio.h>
    using namespace std;

    int main()
    {
    setlocale(LC_ALL,".1251");
    int b,i,h=0,n,o,k;
    cout<<"Введите число b:";
    cin>>b;
    cout<<endl;
    do
    {
    cout<<"Введите колличество элементов массива(не больше 10):";
    cin>>n;
    cout<<endl;
    }
    while((n>10)||(n<0));
    o=n;
    int*a=new int[n]; //Задание динамического массива в который записываем значения вводимые с клавиатуры.
    int *q=new int[n]; //Задание второго динамического массива.
    for(k=0;k<n;k++) //Обнуление всех элементов второго массива.
    q[k]=0;

    for (i=0;i<n;i++)
    {
    cout<<"Введите элемент массива:";
    cin>>a;
    }
    for(k=0;k<n;k++) //Присваевает второму массиву элементы первого.
    {
    if(a[k]<=b)
    {
    q[h]=a[k];
    h++;
    }
    else
    {
    q[o]=a[k];
    o--;
    }

    }
    cout<<"Элементы отсортированого массива: ";
    for(k=0;k<=n;k++)
    {
    cout<<q[k]<<" ";
    }
    cout<<endl;

    return 0;
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    for(k=0;k<=n;k++)
    замени <= на <

    Добавлено:
    переставлять надо в начальном массиве, заводить еще один массив нельзя, походу
     
  3. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4

    нет так не правильно
    тогда лишний 0 появляется вместо первого элемента большего b


    и к добавленному:можно главное чтобы был динамический массив с правильно упорядоченными элементами
     
  4. Inlight

    Inlight New Member

    Регистрация:
    22 окт 2011
    Сообщения:
    1
    Симпатии:
    0
    Правильно. И ещё
    Код (C++):
    o=n;
    замени на
    Код (C++):
    o=n-1;
    Т.к. массивы начинаются с 0-го элемента, то, последний элемент у тебя будет в ячейке n-1, а не n.
     
  5. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Спасибо Inlight всё работает как надо!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей