С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
#1

Cортировка массива. - C++

13.10.2011, 19:33. Просмотров 578. Ответов 10
Метки нет (Все метки)

Доброго вечера. представлен массив ,не четные элементы данного массива нужно поместить в другой массив( на самом деле нужно рассортировать массив так след. образом : четные элементы вначало . нечетные элементы вконец)
. т.е. элементы из массива a[i] сортируются в массив b[ib].
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
int main () {
    int n,ib,key ;
    cin >> n;
    int * a, * b;
    srand(time(NULL));
    a = new int [n];
    for (int i=0; i<n;i++){
    cout<<(a[i] = rand()%100)<<" ";
    }
    for (int i = 0 ,ib=0;i<n;i++){
        switch (key){
            case (a[i]==0)     :b[ib] = a[i], ib= ib+1;break;
            case (a[i]%2 != 0) :b[ib]=a[i] ,ib = ib+1;break;
        } 
        cout << endl << " " << b[ib];
        
    }
  
        return 0;
}
вот мой примерный набросок ,он не рабочий и требует пересмотра. попрошу пояснить как доработать.

Добавлено через 1 минуту
к тому же переменная int key . я поместил ее после switch т.к. без нее подчеркивается красным. что нужно прописывать после switch в скобках?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 19:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cортировка массива. (C++):

Cортировка массива. - C++
помогите с кодом, а то завтра надо уже сдать 1)При записи отсортированный массив у меня в файле записывается не через пробелы а...

Cортировка массива - C++
Здравствуйте! Существует задание: Дан массив n действительных чисел. Если исходный массив имеет равное количество положительных и...

Cортировка символьного двумерного массива по алфавиту - C++
// сtroku.cpp: определяет точку входа для консольного приложения. // Задание: вести с клавиатуры список фамилий ( в каждой строке по...

Cортировка цифр - C++
В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число, записанное этими же цифрами (Задача без...

Cортировка Шелла - C++
надо перевести на метод шелла #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { ...

Cортировка в файле - C++
Подскажите как можно сделать сортировку в файле по алфавиту.Если я записываю данные файл например у меня наименование товара я ввожу...

10
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
13.10.2011, 19:39 #2
Замени switch на два if'a. Со switch'ем такой код не заработает.
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
13.10.2011, 19:52  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
int main () {
    int n,ib ;
    cin >> n;
    int * a, * b;
    srand(time(NULL));
    a = new int [n];
    for (int i=0; i<n;i++){
    cout<<(a[i] = rand()%100)<<" ";
    }
    for (int i = 0 ,ib=0;i<n;i++){
       if (a[i]==0) b[ib] = a[i];
       if (a[i]%2 != 0) b[ib]=a[i] , ib= ib+1 ;
       if (a[i]%2 == 0) b[ib]=a[i] , ib= ib+1 ;
        cout << endl << " " << b[ib];
    }
  
        return 0;
}
Но тут возникает вопрос относительно элементра : 0 , если дописать break после первого if. завершится цикл.
если же не прописывать break , элемент 0 пройдет по всем трем if/
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
13.10.2011, 19:54 #4
Цитата Сообщение от scofielcl Посмотреть сообщение
if (a[i]%2 != 0) b[ib]=a[i] , ib= ib+1 ;
C++
1
if (a[i]%2 != 0) { b[ib]=a[i]; ib= ib+1 ; }
Добавлено через 52 секунды
Цитата Сообщение от scofielcl Посмотреть сообщение
если же не прописывать break
if(...){} else if(...){} else if(...){}
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
13.10.2011, 20:02  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
int main () {
    int n,ib ;
    cin >> n;
    int  * a, * b;
    srand(time(NULL));
    a = new int [n];
    for (int i=0; i<n;i++){
    cout<<(a[i] = rand()%100)<<" ";
    }
    for (int i = 0 ,ib=0;i<n;i++){
    if (a[i]%2 == 0) {b[ib]=a[i] , ib= ib+1 ;}
    else if (a[i]%2 != 0) { b[ib]=a[i]; ib= ib+1 ; }
    else if (a[i]%2 != 0) { b[ib]=a[i] , ib= ib+1;}
        cout << endl << " " << b[ib];
    }
  
        return 0;
}
Программа выполняется ,но результата нет.
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.10.2011, 20:04 #6
Еще бы, вы выводите несуществующие элементы плюс к тому память под массив b кто выделять будет?
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
13.10.2011, 20:29  [ТС] #7
b = new int [ib];
результат. элементы массива а , не записываются в массив б.

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
int main () {
    int n,ib ;
    cin >> n;
    int  * a, * b;
    srand(time(NULL));
    a = new int [n];
    b = new int [ib];
    for (int i=0,ib=0; i<n;i++){
    cout<<(a[i] = rand()%100)<<" ";
    if (a[i] == 0) {b[ib]=a[i] , ib= ib+1 ;}
    else if (a[i]%2 != 0) { b[ib]=a[i]; ib= ib+1 ; }
    else if (a[i]%2 != 0) { b[ib]=a[i] , ib= ib+1;}
    }
  
        return 0;
}
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.10.2011, 20:29 #8
Цитата Сообщение от scofielcl Посмотреть сообщение
b = new int [ib];
результат. элементы массива а , не записываются в массив б.
Я же вам написал, что вы выводите несуществующие элементы
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
13.10.2011, 21:02  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
int main () {
    int n,m,ib ;
    cin >> n;
    m = n;
    int  * a, * b;
    srand(time(NULL));
    a = new int [n];
    b = new int [m];
    for (int i=0,ib=0; i<n;i++){
    cout<<(a[i] = rand()%100)<<" ";
    if (a[i] == 0) {b[ib]=a[i] , ib= ib+1 ;}
    else if (a[i]%2 != 0) { b[ib]=a[i]; ib= ib+1 ; }
    else if (a[i]%2 != 0) { b[ib]=a[i] , ib= ib+1;}
    cout << " | " << b[ib]<<" | ";
    }
        return 0;
}
исправил несколько недоработок. но результат то же , как он выводит не сущ-их элементы ,им же присваиваются значения из массива а.

Добавлено через 13 минут
Для простоты .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
int main () {
    int n,m,ib ;
    cin >> n;
    m = n;
    int  * a ;
    srand(time(NULL));
    a = new int [n];
    int * b = new int [m];
    for (int i=0,ib=0; i<n;i++){
    cout<<(a[i] = rand()%100)<<" ";
    b[ib] = a[i];
    ib = ib+1;
    cout << " | " << b[ib]<<" | ";
    }
        return 0;
}
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
13.10.2011, 21:26  [ТС] #10
пойму в чем ошибка , отпишусь.
0
@r!er
2 / 2 / 1
Регистрация: 15.09.2011
Сообщений: 25
13.10.2011, 21:32 #11
Такой вариант, но используется только один массив:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void sort(int* m, const int n)
{
 int i, j, temp, s=0;
 for(i=1; i<n; i++)
 {
  j=i;
  while(j>0 && !(m[j-1]%2) && m[j]%2)
  {
   temp=m[j-1];
   m[j-1]=m[j];
   m[j]=temp;
   j--;
   s++;
  }
 }
 cout<<"Êîëè÷åñòâî ГЁГІГҐГ°Г*öèé ñîðòèðîâêè: "<<s<<endl<<endl;
}
0
13.10.2011, 21:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2011, 21:32
Привет! Вот еще темы с ответами:

Cортировка матриц - C++
Здраствуйте! Задание такое: отсортировать по возрастанию 1 рядок и 2 столбец матрицы. Так понимаю сначала программа выполняет 1 действие...

Cортировка динамической матрицы - C++
Отсортировать каждую строку динамической матрицы по возрастанию и вывести новую матрицу с упорядоченными строками Помогите...не...

Cортировка записей в массиве - C++
(Я знаю что на форуме уйма таких заданий, но они не дали мне ответ) Доброго времени суток, что не так с моей сортировкой? Я вроде...

Cортировка методом Шелла - C++
Нужно выполнить сортировку 5-видов, 4 нормально работают, а 5 (методом Шелла) не работает. Которые работают, они закоменчены) помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.