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

Массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения ... - C++

Восстановить пароль Регистрация
 
satanic
0 / 0 / 0
Регистрация: 20.09.2010
Сообщений: 16
06.04.2011, 18:45     Массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения ... #1
недавно начал изучать С++ и столкнулся с такой проблемкой.. дан массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения элементов в порядке их убывания, а затем все отрицательные в порядке возрастания значений.. я думаю может мне в цикл возвести, то ли как массив решать..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2011, 18:45     Массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения ...
Посмотрите здесь:

Дан массив а1,а2,,…,аn. Переставить его элементы так, чтобы в начале массива расположились все его неотрицательные элементы, а в конце – отрицательные C++
Дан массив а1+ a2+…+an Переставить его элементы так чтобы в начале массива расположились все его неотрицательные элементы, а в конце - отрицательные C++
Вывести массив так, чтобы элементы стояли в порядке возрастания C++
C++ Переставить элементы массива так, чтобы отрицательные оказались в начале, положительные - в конце
C++ Отсортировать массив таким образом, чтобы все нули находились в начале, а единицы — в конце массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sick2
14 / 14 / 1
Регистрация: 26.11.2010
Сообщений: 235
06.04.2011, 19:27     Массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения ... #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// probel.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include<ctime>
#include <stdio.h>
using namespace std;
void  sort(int A[], int n)
 
{
 
int   i,found;              
 
do    {                     
found =0;
 
for (i=0; i<n-1; i++)
 
if (A[i] < A[i+1])    
 
    {              
 
    int   cc;
 
    cc = A[i]; A[i]=A[i+1]; A[i+1]=cc;
 
    found++;    
 
    }
if(A[i]<0)
{
  if(A[i]>A[i+1])
  {
int  b;
 
    b = A[i]; A[i]=A[i+1]; A[i+1]=b;
 
   
}
}
} while(found !=0);     
 
}
 
 
 
void main(){
 
 
 
int *a=new int[100];
int i,n;
cin>>n;
for(i=0;i<n;i++)
{
  cin>>a[i];
}
sort(a,n);
 
for (i=0; i<n; i++) {
    cout<<a[i]<<" ";
    }
//for (i=0; i<n; i++) {
//  delete a[i];
//  delete [] a;
//  }
 
puts("");
system("pause");
}
Что-то намутил. Я ещё нубик, поэтому сильно не ругать. Почему-то всё нормально сортирует, кроме последнего числа

Добавлено через 6 минут
Нашёл ошибку, в for (i=0; i<n-1; i++) убрать -1. Всё)

Добавлено через 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "stdafx.h"
#include <iostream>
#include<ctime>
#include <stdio.h>
using namespace std;
void  sort(int A[], int n)
 
{
 
int   i,found;              
 
do    {                     
found =0;
 
for (i=0; i<n; i++)
 
if (A[i] < A[i+1])    
 
{              
 
int   cc;
 
cc = A[i]; A[i]=A[i+1]; A[i+1]=cc;
 
found++;    
 
}
if(A[i]<0)
{
if(A[i]>A[i+1])
{
int  b;
 
b = A[i]; A[i]=A[i+1]; A[i+1]=b;
 
 
}
}
} while(found !=0);     
 
}
 
 
 
void main(){
 
 
 
int a[100];
int i,n,rmax,rmin;
cin>>n;
cin>>rmax>>rmin;
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
a[i]=(int)(((double)rand()/(double)RAND_MAX)*(rmax-rmin)+rmin);
}
sort(a,n);
 
for (i=0; i<n; i++) {
cout<<a[i]<<" ";
}
 
 
puts("");
system("pause");
}
Вот, короче, код. Наверное можно и проще,но...как умею))
slava_g1
 Аватар для slava_g1
70 / 70 / 8
Регистрация: 06.02.2011
Сообщений: 127
06.04.2011, 19:28     Массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения ... #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
25
26
27
28
#include <iostream>
#include<ctime>
using namespace std;
void  main(){
    srand(time(0));
    const int SIZE=10;
    int arr[SIZE];
    for(int i=0;i<SIZE;i++){
        arr[i]=rand()%25-10;
    }
    for(int i=0;i<SIZE;i++){
        cout<<arr[i]<<"\t";
    }
    cout<<endl;
    for(int i=0;i<SIZE;i++){
        for(int j=i+1;j<SIZE;j++){
            if(arr[i]<arr[j]){
                int tmp=arr[i];
                arr[i]=arr[j];
                arr[j]=tmp;
            }
        }
    }
    for(int i=0;i<SIZE;i++){
        cout<<arr[i]<<"\t";
    }
    cout<<endl;
}
Спасибо ниже.
satanic
0 / 0 / 0
Регистрация: 20.09.2010
Сообщений: 16
06.04.2011, 19:48  [ТС]     Массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения ... #4
slava_g1 я вроде только только начинающий в направлении С++ и не так уж понял на счет вот этой команды "#include<ctime>".. на днях мне говорили что при таких случаях необходимо вводить команду "#include<math>" объясните мне плз что да как.. я совсем запутался.. да и не совсем понял почему тут введена команда "srand(time(0));" если честно для меня это очень трудно.. я пока никак не могу сказать что все тут понял.. многие операторы я вижу впервые.. нельзя ли это как то более простенько написать.. возведя все это в цикл..? возможно я пойму..
Yandex
Объявления
06.04.2011, 19:48     Массив А состоящий из 30 элементов, переформировать так чтобы в начале стояли все неотрицательные значения ...
Ответ Создать тему
Опции темы

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