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

Из массива случайных чисел найти позиции крайних отрицательных элементов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
mixon-21
 Аватар для mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
14.05.2013, 16:08     Из массива случайных чисел найти позиции крайних отрицательных элементов #1
Дан массив случайных чисел в диапазоне от -20 до +20. Необходимо найти позиции крайних отрицательных элементов (самого левого отрицательного элемента и самого правого отрицательного элемента) и отсортировать элементы, находящиеся между ними.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 16:08     Из массива случайных чисел найти позиции крайних отрицательных элементов
Посмотрите здесь:

Проблема с массивом - найти позиции крайних отрицательных элементов C++
C++ С помощью генератора случайных чисел ,задать значения элементов массива
Замена всех элементов массива, кроме крайних на полусумму соседей C++
Найти сумму отрицательных чисел и количество положительных чисел массива с четными индексами C++
Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
14.05.2013, 16:12     Из массива случайных чисел найти позиции крайних отрицательных элементов #2
имеешь массив, идешь слева - нашел первое отрицательное - указатель на него сохранил, идешь справа - нашел отрицательное - указатель сохранил, потом сортируешь между ними и все
mixon-21
 Аватар для mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
14.05.2013, 19:31  [ТС]     Из массива случайных чисел найти позиции крайних отрицательных элементов #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<time.h>
using namespace std;
void insertSort(int array[],int length){ 
    int x,k;
    for(int i=0;i<length;i++){
        k=i;
        x=array[i];
        for(int j=i+1;j<length;j++)
            if(array[j]<x){
            k=j;
            x=array[j];
            }
            array[k]=array[i];
            array[i]=x;
cout<<array[i]<<" ";
    }
 
}
void main(){
    int const length=20;
    int array[length];
    srand(time(NULL));
for(int i=0; i<length;i++)
    array[i]=rand()%40-20;
insertSort(array,length);
cout<<'\n';
}
а что дальше нужно сделать помогите плиз

Добавлено через 12 минут
как отсортировать от крайнего левого отрицательного числа до крайнего правого числа???????

Добавлено через 54 минуты
помогите плиз
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
14.05.2013, 21:54     Из массива случайных чисел найти позиции крайних отрицательных элементов #4
Примерно так
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
    int const length=20;
    int array[length];
    srand(time(NULL));
for(int i=0; i<length;i++)
    array[i]=rand()%40-20;
    ///////////////////////////////////////////////////////
//ищем первый и последний
//////////////////////////////////////////////////////
    int min=0,max=0;
  for(int i=0; i<length;i++)//первый отр.
    if (array[i]<0)
    {
        min =i;
        break;
    }
     for(int i=length;i >=0;i--)//последний отр
      if (array[i]<0)
    {
        max =i;
        break;
    }
    //сортируйте от min до max
insertSort(array,length);
cout<<'\n';
mixon-21
 Аватар для mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
15.05.2013, 19:35  [ТС]     Из массива случайных чисел найти позиции крайних отрицательных элементов #5
подскажите плиз как отсортировать от leftNeg до rightNeg
вот код
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
void insertSort(int array[],int length){ 
    int x,k;
   int leftNeg = -1;
  int rightNeg = -1;
  for(int i=0; i<length;i++)
     if (array[i]<0)
         {
            rightNeg =i;        
     }
     for(int i=length-1;i>=0;i--)
         if(array[i]<0){
         leftNeg=i; 
         }
    for(int i=0;i<length;i++){
        k=i;
        x=array[i];
        for(int j=i+1;j<length;j++)
            if(array[j]<x){
            k=j;
            x=array[j];
            }
            array[k]=array[i];
            array[i]=x;
    
  cout<<array[i]<<" ";
    }
}
 
void main(){
int const length=10;
    int array[length];
    srand(time(NULL));
for(int i=0; i<length;i++){
    array[i]=rand()%40-20;
cout<<array[i]<<" ";
}
cout<<'\n';
insertSort(array,length);
cout<<'\n';
}
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
16.05.2013, 02:48     Из массива случайных чисел найти позиции крайних отрицательных элементов #6
В циклах вместо 0 ставите rightNeg,а на место length свой leftNeg ,остальное как обычно.

Добавлено через 6 часов 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
Как то так 
#include<iostream>
#include<stdlib.h>
#include<time.h>
 
using namespace std;
 
void insertSort(int array[],int length){
    int x,k;
   int leftNeg = -1;
  int rightNeg = -1;
  for(int i=0; i<length;i++)
     if (array[i]<0)
         {
            rightNeg =i;
          }
     for(int i=length-1;i>=0;i--)
         if(array[i]<0)
         {
         leftNeg=i;
         }
  for(int n=0; n<length;n++)//в этом цикле идет сортировка в нужном интервале
  {
      for(int i=leftNeg ;i<rightNeg;i++)//ваши интервалы
    {
        k=i;
        x=array[i];
        for(int j=i+1;j<rightNeg;j++)
            if(array[j]<x){
            k=j;
            x=array[j];
            }
            array[k]=array[i];
            array[i]=x;
 
    }
    cout<<array[n]<<" ";//вывод всего массива
  }
 
}
 
int main()
{
int const length=20;//изменил
    int array[length];
    srand(time(NULL));
for(int i=0; i<length;i++){
    array[i]=rand()%40-10;//изменил
cout<<array[i]<<" ";
}
cout<<'\n';
insertSort(array,length);
cout<<'\n';
return 0;
}
Я с вашего позволения немного изменил вашу программу
Yandex
Объявления
16.05.2013, 02:48     Из массива случайных чисел найти позиции крайних отрицательных элементов
Ответ Создать тему
Опции темы

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