Форум программистов, компьютерный форум CyberForum.ru

Удалить все нечётные элементы массива и отсортировать - C++

Восстановить пароль Регистрация
 
Пивасик
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 13
24.10.2010, 23:39     Удалить все нечётные элементы массива и отсортировать #1
1. Удалить все нечётные элементы массива
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
27
28
29
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
void main()
     {
clrscr();
int a[100];
int n;
cout << "\nEnter the size of array: ";
cin >> n;
     for (int i=0; i<n; i++)
     {
a[i]=rand()%100-50;
cout << a[i] << " ";
}cout<<endl;
{
int j=0,b[100];
for (i=0; i < n; i++)
if(a[i]%2!=0);
{
b[j]=a[j];j++;
}
{
n=j;
for (i=0; i < n; i++)
a[j]=b[i];
cout << b[i] << " ";
getch();
}}}

Вместо нового массива выбивает большое число и всё.



2.Сортировать методом простого обмена!

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.h>
#include<conio.h>
#include<stdlib.h>
void main()
     {
clrscr();
int a[100];
int n;
cout << "\nEnter the size of array: ";
cin >> n;
     for (int i=0; i<n; i++)
     {
a[i]=rand()%100-50;
cout << a[i] << " ";
}
int j=0;
for (i=1; i < n; i++)
for (int j=n-1; j >= i; j--)
if(a[j]<a[j-1])
{
int r=a[j];a[j]=a[j-1];a[j-1]=r;
}
cout<<a[j]<<" ";
 
getch();
}
По теории должно перебирать все жлементы, а у меня только самый меньший элемент перемещает в самое право и всё, делал по примеру из методички!

ЧТО Я ДЕЛАЮ НЕ ТАК??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 23:39     Удалить все нечётные элементы массива и отсортировать
Посмотрите здесь:

Удалить из массива все элементы,в записи которых все цифры различны. C++
Удалить все нечётные строки двумерного массива C++
C++ Удалить из массива число, у которого наибольшая сумма цифр и отсортировать оставшиеся элементы
C++ Удалить из массива, в котором все элементы различны, максимальный и минимальный элементы
C++ Отсортировать массив, поставив сначала чётные элементы, а потом нечётные
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.10.2010, 23:53     Удалить все нечётные элементы массива и отсортировать #2
По поводу второй задачи:
сначало Вы с помощью rand() заполняете массив значениями и выводите на экран.
После сортировки Вы просто выводите один элемент массива на экран (в той же строке):
C++
1
cout<<a[j]<<" ";
Нужно выводить по аналогии с первым выводом на экран. А сортировка у Вас правильная.
Пивасик
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 13
24.10.2010, 23:57  [ТС]     Удалить все нечётные элементы массива и отсортировать #3
Цитата Сообщение от valeriikozlov Посмотреть сообщение
По поводу второй задачи:
сначало Вы с помощью rand() заполняете массив значениями и выводите на экран.
После сортировки Вы просто выводите один элемент массива на экран (в той же строке):
C++
1
cout<<a[j]<<" ";
Нужно выводить по аналогии с первым выводом на экран. А сортировка у Вас правильная.

ну вот к примеру я вывел как надо , запускаю программу и ввожу количество чисел массива 5, выдаёт массив 4 -20 32 40 6 и в конце дописует -2,
в теории написано что простой обмен - это Сравниваются и меняются местами пары элементов, начиная с последнего. В резуль-тате самый маленький элемент массива оказывается самым левым элементом массива. Про-цесс повторяется с оставшимися элементами массива.
Следовательно либо я просто не понимаю как она работает, либо оно не правильно работает, что ли!
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
25.10.2010, 00:04     Удалить все нечётные элементы массива и отсортировать #4
Сперва код нормально напиши - потом пивасик пей
1
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
27
#include<iostream>
#include<conio.h>
using namespace std;
void main()
     {
int a[100];
int n; int i;
cout << "\nEnter the size of array: ";
cin >> n;
     for (int i=0; i<n; i++)
     {
a[i]=rand()%100-50;
cout << a[i] << " ";
}cout<<endl;
 
int b[100]; int j = 0;
for (i=0; i < n; i++){
if(a[i]%2!=0)
{
b[j]=a[i];j++;
}
}
 
for (i=0; i < j; i++)
cout << b[i] << " ";
getch();
}
Пивасик
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 13
25.10.2010, 00:32  [ТС]     Удалить все нечётные элементы массива и отсортировать #5
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Сперва код нормально напиши - потом пивасик пей
1
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
27
#include<iostream>
#include<conio.h>
using namespace std;
void main()
     {
int a[100];
int n; int i;
cout << "\nEnter the size of array: ";
cin >> n;
     for (int i=0; i<n; i++)
     {
a[i]=rand()%100-50;
cout << a[i] << " ";
}cout<<endl;
 
int b[100]; int j = 0;
for (i=0; i < n; i++){
if(a[i]%2!=0)
{
b[j]=a[i];j++;
}
}
 
for (i=0; i < j; i++)
cout << b[i] << " ";
getch();
}
это конечно хорошо, а как сделать чтобы выводило массив a[i] без нечётных чисел?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.10.2010, 05:49     Удалить все нечётные элементы массива и отсортировать #6
Еще раз по второй задаче:
заменяем строку
C++
1
cout<<a[j]<<" ";
на:
C++
1
2
3
cout<<endl;
for (i=0; i<n; i++)
   cout<<a[i]<<" ";
Теперь что выводит?
Пивасик
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 13
25.10.2010, 15:13  [ТС]     Удалить все нечётные элементы массива и отсортировать #7
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Еще раз по второй задаче:
заменяем строку
C++
1
cout<<a[j]<<" ";
на:
C++
1
2
3
cout<<endl;
for (i=0; i<n; i++)
   cout<<a[i]<<" ";
Теперь что выводит?
теперь всё отлично, спасибо огромное!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 01:09     Удалить все нечётные элементы массива и отсортировать
Еще ссылки по теме:

C++ Отсортировать чётные элементы по возрастанию, а нечётные по убыванию
C++ Отсортировать в порядке возрастания все положительные элементы массива
Удалить элементы массива, состоящие из одной цифры, и отсортировать его C++

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

Или воспользуйтесь поиском по форуму:
Jet-cool
-1 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 19
19.10.2012, 01:09     Удалить все нечётные элементы массива и отсортировать #8
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int a[100];
int n; int i;
cout << "\nEnter the size of array: ";
cin >> n;
for (int i=0; i<n; i++)
{
a[i]=rand()%100-50;
cout << a[i] << " ";
}cout<<endl;

int b[100]; int j = 0;
for (i=0; i < n; i++){
if(a[i]%2==0)
{
b[j]=a[i];j++;
}
}

for (i=0; i < j; i++)
cout << b[i] << " ";
getch();
}

Вот полностью выводит как тебе надо, хотя это и не совсем правильно.
Yandex
Объявления
19.10.2012, 01:09     Удалить все нечётные элементы массива и отсортировать
Ответ Создать тему
Опции темы

Текущее время: 22:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru