Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2012, 22:25   #1
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию Функция для удаления отрицательных элементов из одномерного массива.С++.

Функция должна удалять все отрицательные элементы,но она этого не делает,мало того она превращает все позитивные элементы в какие-то большие числа...
Буду благодарен за советы и надеюсь правильных)

Вот функция которая определяет сколько элементов удалить из нового массива b:
Код:
int vizn_neg(int n, int*a)
{
    int i, count =0;
    for(i=0; i<n; i++)
    {
        if(a[i] < 0)
         count++;
    }
    return count;
}
И вот функция которая удаляет элементы:
Код:
void destroy_neg(int n, int*a, int*b)
{
    int i;
    for(i=0; i<n; i++)
    {
        if(a[i] < 0)
        b[i] = a[i];
        cout << b[i] << " ";

    }
    cout << endl;
}

Но наибольшие сомнение у меня по поводу вот этого отрывка кода:
Код:
 int*a = new int [n];
 int count = vizn_neg(n,a);
 int*b = new int [n- count];
Код:
#include <iostream>
#include <cmath>

using namespace std;

void Input ( int n, int*a )
{
 int i;
 for (i=0;i<n;i++)
 {
  std :: cout << "Input element number " << i+1 <<":";
  std :: cin >> a[i];

 }
}

void zamina( int n, int*a, int p)
{
    int i;
    for(i=0; i<n; i++)
    {
        if(a[i] < 8 || a[i] == 0)
        a[i] = p;
    }
}


void Output ( int n, int*a )
{
    int i;
    for (i=0;i<n;i++)
    std :: cout << a[i] << " ";
    std :: cout << std::endl;
}

int vizn_neg(int n, int*a)
{
    int i, count =0;
    for(i=0; i<n; i++)
    {
        if(a[i] < 0)
         count++;
    }
    return count;
}

void destroy_neg(int n, int*a, int*b)
{
    int i;
    for(i=0; i<n; i++)
    {
        if(a[i] < 0)
        b[i] = a[i];
        cout << b[i] << " ";

    }
    cout << endl;
}

int main ()
{
 cout << "How many element's? :";
 int n, p;
 cin >> n;
 int*a = new int [n];
 int count = vizn_neg(n,a);
 int*b = new int [n- count];


 Input ( n, a );
 cout << "Your array without transformation's:" << endl;
 Output ( n, a );


 cout << "Your array after first transformation:" << endl;
 destroy_neg(n, a, b);

 cout << "Please input number to transform element in array:" ;
 cin >>p;
 cout << "Your array after second transformation:" << endl;
 zamina ( n, a, p);
 Output ( n, a );
 cin.get ();
 cin.get ();
 return 0;
}
DIQUON вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция для очисти определенных элементов массива. DAVID973 Общие вопросы C/C++ 27 04.04.2012 23:38
массиве X(N) найти максимальный элемент среди положительных элементов массива и минимальный среди отрицательных элементов. sorok Общие вопросы C/C++ 2 20.03.2012 12:18
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04
Pascal: Составить программу генерирования массива B, состящего из отрицательных элементов массива a mrRastom Помощь студентам 2 15.01.2011 14:33
заданиT на обработку элементов одномерного массива Васильева Зинаида Помощь студентам 4 19.11.2010 18:55