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

В массиве заменить отрицательное на положительное число и наоборот - C++

Восстановить пароль Регистрация
 
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
17.07.2014, 00:25     В массиве заменить отрицательное на положительное число и наоборот #1
Нужно в массиве заменить отрицательное на положительное число и наоборот!!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# include <iostream>
# include <ctime>
using namespace std;
void sign_change (int *mas, int size)
{
    srand (time(NULL));
    for (int i=0; i<size; i++)
    {
        if (*mas<0||*mas>0)
            *mas*=-1;
        cout<<*mas<<'\t';
    }
}
void main ()
{
    const int size=10;
    int mas [size]={-1,2,-3,4,-5,6,-7,8,-9,10};
    sign_change (mas,size);
}
Помогите понять что не так!!!!
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2014, 00:25     В массиве заменить отрицательное на положительное число и наоборот
Посмотрите здесь:

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. C++
C++ Дан массив из N целых чисел. Выяснить имеется ли в массиве хотя бы одно нечетное отрицательное число и определить его местонахождение в массиве
C++ Определить, сколько пар (положительное число, отрицательное число) находятся в начале массива
C++ Дана последовательность целых чисел a1, a2, ..., an. Выяснить, какое число встречается раньше - положительное или отрицательное.
дана последовательность целых чисел а1 а2 выяснить какое число встречается чаще положительное или отрицательное в с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jewbacabra
1791 / 1506 / 539
Регистрация: 24.04.2014
Сообщений: 4,228
17.07.2014, 00:28     В массиве заменить отрицательное на положительное число и наоборот #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# include <iostream>
using namespace std;
void sign_change (int *mas, int size)
{
    for (int* m=mas; m!=mas+size; m++)
    {
        *m *= -1;
        cout<<*m<<'\t';
    }
}
void main ()
{
    const int size=10;
    int mas [size]={-1,2,-3,4,-5,6,-7,8,-9,10};
    sign_change (mas,size);
}
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
17.07.2014, 00:30  [ТС]     В массиве заменить отрицательное на положительное число и наоборот #3
Спасибо! Забыл про mas++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# include <iostream>
# include <ctime>
using namespace std;
void sign_change (int *mas, int size)
{
    srand (time(NULL));
    for (int i=0; i<size; i++, mas++)
    {
            *mas*=-1;
        cout<<*mas<<'\t';
    }
}
void main ()
{
    const int size=10;
    int mas [size]={-1,2,-3,4,-5,6,-7,8,-9,10};
    sign_change (mas,size);
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
17.07.2014, 08:37     В массиве заменить отрицательное на положительное число и наоборот #4
Jewbacabra, мне кажется, умножение на -1 для изменения знака - это издевательство над процессором.
C++
1
2
for (int* m=mas; m!=mas+size; m++)
          *m = -(*m);
Jewbacabra
1791 / 1506 / 539
Регистрация: 24.04.2014
Сообщений: 4,228
17.07.2014, 10:13     В массиве заменить отрицательное на положительное число и наоборот #5
zss, да действительно. но возможно компилятор этот момент бы оптимизировал.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.07.2014, 11:26     В массиве заменить отрицательное на положительное число и наоборот #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
 
int main()
{
   std::vector<int> v = {1,2,-1,-2,3,-3};
   std::transform(v.begin(), v.end(), v.begin(), std::negate<int>());
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
Yandex
Объявления
17.07.2014, 11:26     В массиве заменить отрицательное на положительное число и наоборот
Ответ Создать тему
Опции темы

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