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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
Barca
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 80
18.11.2010, 23:26     Удалить все отрицательные элементы массива #1
У меня есть динамический масив... Как удалить все отрицательние елементи?
if(mass[i]<0)
а дальше?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2010, 23:26     Удалить все отрицательные элементы массива
Посмотрите здесь:

Удалить из массива все отрицательные элементы C++
C++ Массив: Удалить из массива все отрицательные элементы.
C++ если массив не является знакочередующимся,то удалить из массива все положительные числа,в противном случае-удалить отрицательные элементы.после удален
Удалить из массива все отрицательные элементы C++
Удалить из массива все отрицательные элементы; C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
18.11.2010, 23:28     Удалить все отрицательные элементы массива #2
Если я не ошыбаюсь, удалять елементы из масива нельзя, их можно только обнулять.
Barca
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 80
18.11.2010, 23:30  [ТС]     Удалить все отрицательные элементы массива #3
тоисть вот так сделать мне:
if(mass[i]<0)
mass[i]=0;
?
Soft
4 / 4 / 1
Регистрация: 20.09.2010
Сообщений: 102
18.11.2010, 23:31     Удалить все отрицательные элементы массива #4
Если не ошибаюсь через операцию delete
C++
1
delete [] mass
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
18.11.2010, 23:31     Удалить все отрицательные элементы массива #5
Еще как вариант все положытельние елементи можно переписать в другой массив.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.11.2010, 23:32     Удалить все отрицательные элементы массива #6
Barca, из массива ничего удалять нельзя.
Есть два варианта:
1. Переместить удаляемые элементы в конец массива и расматривать его как массив меньшего размера.
2. Скопировать неудаляемые элементы в новый массив меньшего размера.
Barca
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 80
18.11.2010, 23:34  [ТС]     Удалить все отрицательные элементы массива #7
Ну вот код...пока я делаю ето в цикле, ищу отрицательние елементи....
i
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
nt  n;       
 cout<<"Rozmir n: ";    
 cin>>n; 
 
 int *mass = new int[n];       
 
 for (int i = 0; i < n; i++)    
 {
         cout<<i+1<<" :";
         cin>>mass[i];
 }
 
 for (int i = 0; i < n; i++)  
 {
  if (mass[i] < 0)
  {
                mass[i] = 0;
 
  }
   }
 for (int i = 0; i < n; i++)t
{   
         cout<<i+1<<" : ";
         cout<<mass[i]<<endl;
 }
 delete[] mass;         
system("pause");
        return 0;
}
Добавлено через 27 секунд
Так правильно?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
18.11.2010, 23:46     Удалить все отрицательные элементы массива #8
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand((unsigned)time(NULL));
    int *arr,*arr1;
    int n,count=0,j=0;
    cout<<"Enter size array: ";
    cin>>n;
    arr=new int[n];
    cout<<"Array: ";
    for(int i=0; i<n; i++)
    {
        arr[i]=rand()%9-1;
        cout<<arr[i]<<" ";
         if(arr[i]>=0)
         {
             count++;
         }
    }
    arr1 = new int[count];
    for(int i=0; i<n; i++)
    {
        if(arr[i]>=0)
        {
            arr1[j]=arr[i];
            j++;
        }
    }
    cout<<endl<<"Array of positive elements";
    for(int i=0; i<j; i++)
    {
        cout<<arr1[i]<<" ";
    }
  cout<<endl; 
  system("pause");
  delete [] arr;
   delete [] arr1;
 return 0;
}
Barca
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 80
18.11.2010, 23:54  [ТС]     Удалить все отрицательные элементы массива #9
А мой вариант не правильний?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
19.11.2010, 00:24     Удалить все отрицательные элементы массива #10
К ознакомлению
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 <vector>
#include <iterator>
 
using namespace std;
 
bool cond(int x)
{  return x < 0;
}
 
int main() { 
 int array []= {12, 34, 45, 56, -23, 0, -987, -45, 13}; 
 vector<int> v (array, array + 9);
 cout << endl;
 vector<int>::iterator new_end;
 new_end = remove_if(v.begin(), v.end(), cond);
 v.erase(new_end, v.end());
 for (int i=0; i < v.size(); i++)
  cout << " " << v[i];
 getchar ();
 return 0;
}
Barca
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 80
19.11.2010, 20:41  [ТС]     Удалить все отрицательные элементы массива #11
Мне нужно мою програму переделать, там отрицательние елементи не занулить а создать еще один масив и их туда закинуть...
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
int  n;       
 cout<<"Rozmir n: ";    
 cin>>n; 
 
 int *mass = new int[n];       
 
 for (int i = 0; i < n; i++)    
 {
         cout<<i+1<<" :";
         cin>>mass[i];
 }
 
 for (int i = 0; i < n; i++)  
 {
  if (mass[i] < 0)
  {
                mass[i] = 0;
 
  }
   }
 for (int i = 0; i < n; i++)t
{   
         cout<<i+1<<" : ";
         cout<<mass[i]<<endl;
 }
 delete[] mass;         
system("pause");
        return 0;
}
 Комментарий модератора 
Используйте теги выделения кода.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
19.11.2010, 20:56     Удалить все отрицательные элементы массива #12
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
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
 int  main()
 {
   int n,count=0,j=0;
   int *mass1, *mass;
   cout<<"Rozmir n: ";  
   cin>>n; 
   mass = new int[n]; 
   for (int i = 0; i < n; i++) 
     {
         cout<<i+1<<" :";
         cin>>mass[i];
          if(mass[i]<0)
          {
              count++;
          }
     }
    mass1 = new int[count];
    cout<<endl<<"Nagative elements ";
    for (int i = 0; i < n; i++) 
      {
         if (mass[i] < 0)
           {
              mass1[j] = mass[i];
              j++;
           }
      }
     for (int i = 0; i < count; i++)
       { 
           cout<<mass1[i]<<" ";
       }
    delete[] mass;
    delete [] mass1;
    system("pause");
    return 0;
}
Barca
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 80
19.11.2010, 20:58  [ТС]     Удалить все отрицательные элементы массива #13
Спасибо огромное!=)
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
02.06.2012, 14:01     Удалить все отрицательные элементы массива #14
Хочу добавить проверку "Если массив пустой, то выводить, что ни одно положительное число не введено в массив, если не пустой, то вывести положительные числа". Собственно, как сделать проверку на пустой массив? Ка обозночается пустой массив?
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
02.06.2012, 15:00     Удалить все отрицательные элементы массива #15
Может быть использовать vector.h?
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
02.06.2012, 15:31     Удалить все отрицательные элементы массива #16
Цитата Сообщение от yleart Посмотреть сообщение
Может быть использовать vector.h?
И? Вы о чем вообще?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2012, 18:02     Удалить все отрицательные элементы массива
Еще ссылки по теме:

Из массива вещественных чисел удалить все отрицательные элементы C++
C++ Из массива вещественных чисел удалить все отрицательные элементы
C++ Из массива вещественных чисел удалить все отрицательные элементы

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

Или воспользуйтесь поиском по форуму:
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
04.06.2012, 18:02     Удалить все отрицательные элементы массива #17
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 <stdio.h> 
#include <conio.h> 
 
const int S = 5;
int main()
{
 int i, r, NewS; 
 int mass[S], NewMass[S]; 
 
 printf(" Vvedite massiv iz 10 elementov: \n");
  for (i=0; i<S; i++) 
   { printf(" Vvedite element[%d]: ", i);
     scanf("%d", &mass[i]); }
   
  NewS=0; 
   for (i=0; i<S; i++) 
    if (mass[i]>=0)
     { NewMass[NewS++]=mass[i]; }
                         
   printf("\n Noviy massive s chislami >= 0: \n");
   for (i=0; i<NewS; i++)
      { printf("\n Mass[%d] = %d. ", i, NewMass[i]); } 
 
 getch(); 
 return 0; 
}
Короче, как вывести сообщение "Положительных элементов не найдено", если введены (и соот-но удалены из массива) только отрицателные числа? Как правильно сформулировать условие?
Yandex
Объявления
04.06.2012, 18:02     Удалить все отрицательные элементы массива
Ответ Создать тему
Опции темы

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