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

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

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

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

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

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

Вот моя функция для этого,но она к сожалению не рабочая((не понимаю что там не так?Как сделать что бы после первого положительно добавляло элемент k? Спасибо зарание)
Код:
void after_first( int n, int*a )
{
    int i, p;
    cout << "Please input number,master:";
    cin>>p;
    for(int i=0; i<n; ++i)
    {
        if(a[i] > 0 )
        a[i]+p;
    }
}
DIQUON вне форума Ответить с цитированием
Старый 22.12.2012, 01:10   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Цитата:
Сообщение от DIQUON Посмотреть сообщение
Вот моя функция для этого,но она к сожалению не рабочая((не понимаю что там не так?Как сделать что бы после первого положительно добавляло элемент k? Спасибо зарание)
Код:
void after_first( int n, int*a )
{
    int i, p;
    cout << "Please input number,master:";
    cin>>p;
    for(int i=0; i<n; ++i)
    {
        if(a[i] > 0 )
        a[i]+p;
    }
}
По вашему решению она после каждого положительного числа будет что-то делать, а вам нужно чтобы после первого. Да и вообще, что вы хотели вот тут a[i]+p; сделать, а то не въеду никак.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 22.12.2012, 01:13   #3
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

ну что бы после первого положительного елемента условие if(a[i] больше 0) програма добавляла новый элемент,введенный с клавиатуры.
DIQUON вне форума Ответить с цитированием
Старый 22.12.2012, 01:15   #4
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

то есть надо писать a[i] =p?
тогда оно заменяет первый положительный на k
DIQUON вне форума Ответить с цитированием
Старый 22.12.2012, 01:17   #5
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

вот как сделать что бы оно именно добавляло новый эелемент?
DIQUON вне форума Ответить с цитированием
Старый 22.12.2012, 01:24   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,314
По умолчанию

DIQUON, во-первых, есть кнопочка Правка для дописывания поста (можно получить штраф за несколько подряд идущих сообщений).
Во-вторых, нужно сдвинуть все элементы после положительного на 1 вправо (циклом), а затем присвоить a[i+1]=p. Если массив рассчитан на n элементов, то таким образом "потеряется" n-ый элемент (т.е. нужно сразу выделить места под n+1 элемент, но заполнить только первые n).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.12.2012, 16:45   #7
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Если не трудно опишите это в моей функции
DIQUON вне форума Ответить с цитированием
Старый 22.12.2012, 17:02   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,314
По умолчанию

Не проверял:
Код:
void after_first( int n, int*a )
{
    int p;
    cout << "Please input number: ";
    cin >> p;
    for(int i = 0; i < n; ++i) {
        if(a[i] > 0) {
            for (int j = n - 1; j > i + 1; --j) {
                a[j] = a[j - 1];
            }
            a[i + 1] = p;
            return;
        }
    }
}
Тут "потеряется" последний элемент массива.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.12.2012, 17:05   #9
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

а как сделать чтобы последний не пропадал?
DIQUON вне форума Ответить с цитированием
Старый 22.12.2012, 19:51   #10
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Вот так попробуй
Код:
{
    int p;
    cout << "Please input number: ";
    cin >> p;
    for(int i = 0; i < n; ++i) {
        if(a[i] > 0) {
            for (int j = n; j > i + 1; --j) {
                a[j] = a[j - 1];
            }
            a[i + 1] = p;
            return;
        }
    }
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 22.12.2012 в 19:58.
kventin_zhuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна программа для добавления друзей в одноклассниках mexx74 Фриланс 3 13.12.2013 10:10
Функция смены местами первого и последнего елемента двумерного масива.С++. DIQUON Помощь студентам 5 17.12.2012 21:07
проблема с поиском первого положительного элемента столбца матрицы вещ-х чисел Vse Strogo Помощь студентам 0 15.05.2012 13:20
Сумма элементов матрицы после 1-го положительного (СИ) flexin Помощь студентам 14 16.01.2010 11:41
функция подсчета суммы элементов после первого отрицательного nikzntu Общие вопросы C/C++ 0 13.01.2009 21:40