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

массив - C++

Восстановить пароль Регистрация
 
Psychko
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 14
18.12.2011, 15:43     массив #1
из масива D[25] создать новый массив расположив вначале отрицательные, затем положительные. Определить в каком из массивов наименьший по модулю элемент встретится первым.вывести все массивы, наименьшие значения и их индексы..... с++ help plzzz
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 15:43     массив
Посмотрите здесь:

C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W
C++ Задать массив вещественных чисел и вставить в исходный массив число
C++ задача записать в массив отрицательные элементы матрицы в массив и вывести их
Массив: Составить массив из двух исходных по заданному принципу заполнения C++
Сформировать массив А из четных элементов исходного массива, а массив В - из нечетных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 16:15     массив #2
Цитата Сообщение от Psychko Посмотреть сообщение
наименьшие значения
По модулю?

Добавлено через 26 секунд
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
#include <iterator>
#include <iostream>
#include <vector>
#include <algorithm>
 
template <class T> T gen() { return (rand() % 11 - 5); }
 
template <class T> bool isNegative(T num) { return (num < 0); }
 
template <class T> bool absMin(T a, T b) { return (abs(a) < abs(b)); }
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(25);
    std::generate(v.begin(), v.end(), gen<int>);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    int min = *std::min_element(v.begin(), v.end(), absMin<int>);
    int pos = std::find(v.begin(), v.end(), min) - v.begin();
    std::vector<int> res;
    for(std::vector<int>::iterator it = std::find_if(v.begin(), v.end(), isNegative<int>); it != v.end(); it = std::find_if(it, v.end(), isNegative<int>))
    {
        res.push_back(*it);
        v.erase(it);
    }
    res.insert(res.end(), v.begin(), v.end());
    std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::cout << "min abs = " << min << " pos1 = " << pos << " pos2 = " << std::find(res.begin(), res.end(), min) - res.begin() << std::endl;
    return 0;
}
Psychko
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 14
19.12.2011, 06:26  [ТС]     массив #3
ммм а можно по легче плз?) а то это слишком сложно написано...
Psychko
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 14
19.12.2011, 17:31  [ТС]     массив #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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 25
using namespace std;
int main()
{
    int i,c,P[N],D[N];
    for (i=0;i<N;i++)
        D[i]= -50 + 101 * rand() / RAND_MAX;
for (i = 0; i < N; i++)
 if (D[i] < 0)
{P[i]=D[i];}
for (i=0; i<N;i++)
    if (D[i] > 0)
    {P[i]=D[i];
}
for (i=0; i<N; i++)
    cout << P[i]<<endl;
       _getch();
                return 0;
}

подскажите почему не ставит вначале отрицательные , затем положительные...
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 17:40     массив #5
Вот так?
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
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
 
#define N 25
 
int main()
{
       int i,c = 0,P[N],D[N];
        for (i=0;i<N;i++)
                D[i]= -50 + 101 * rand() / RAND_MAX;
for (i = 0; i < N; i++)
 if (D[i] < 0)
{P[c++]=D[i];}
for (i=0; i<N;i++)
        if (D[i] > 0)
        {P[c++]=D[i];
}
for (i=0; i<N; i++)
        cout << P[i]<<endl;
    return 0;
}
P.S. Старайтесь писать красивее!
Psychko
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 14
19.12.2011, 18:46  [ТС]     массив #6
Определить в каком из массивов наименьший по модулю элемент встретится первым.вывести все массивы, наименьшие значения и их индексы...


а вот с этим все равно запара......
Psychko
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 14
20.12.2011, 16:54  [ТС]     массив #7
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
#define N 25
using namespace std;
int main()
{   
    srand((unsigned)time(NULL));
    int i, c=0, P[N], iminD,iminP, min1, min2, D[N];
    for (i=0;i<N;i++)
     D[i]= -50 + 101 * rand() / RAND_MAX;
               for (i = 0; i < N; i++)
                {       if (D[i] < 0)
                P[c++]=D[i];  
                                          }
                for (i=0; i<N;i++)          
                {       if (D[i] > 0)
                P[c++]=D[i];
                                     }
                cout << "v kakom massive naimenshiy po modylu element vstretitsa pervim?"<<endl;
                min1=D[0];             
                min2=P[0];                      
for (i=0; i<N; i++)
    if ( abs(D[i]) < min1 ) 
    {
        min1 = abs(D[i]);
        iminD = i;
    }
       
for (i=0; i<N; i++) 
    if (min2 > abs(P[i]))
    {
        min2 = abs(P[i]);
        iminP = i;
    }
 
        if ( iminD > iminP ) cout << "v massive P[i] s indeksom  "<< iminP <<endl;
        else cout<< "v massive D[i] s indeksom  "<< iminD <<endl;
        cout <<"minimalnie po modylu elementi massivov: D[i]= "<< min1 <<" ,P[i]= "<< min2 <<endl;
            
for (i=0; i<N; i++)
cout <<"D["<<i<<"]="<<D[i]<<endl;
cout <<"-------------------"<<endl;
for (i=0; i<N; i++)
 cout<<"P["<<c<<"]="<<P[i]<<endl;
       _getch();
                return 0;
}

почему выводит непонятный индекс и значения не по модулю?((
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 20:11     массив
Еще ссылки по теме:

Массив: Переписать элементы одномерного массива A, попадающие в интервал [2, 6], в массив B. C++
Заполнить массив строк из файла. Массив заполняется, но выводится не корректно C++
Как в массив скопировать массив, который заполнен через указатели C++

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

Или воспользуйтесь поиском по форуму:
Psychko
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 14
20.12.2011, 20:11  [ТС]     массив #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
44
45
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
#define N 25
using namespace std;
int main()
{   
    srand((unsigned)time(NULL));
    int i, c=0, P[N], iminD,iminP, min1, min2, D[N];
    for (i=0;i<N;i++)
     D[i]= -50 + 101 * rand() / RAND_MAX;
               for (i = 0; i < N; i++)
                {       if (D[i] < 0)
                P[c++]=D[i];  
                                          }
                for (i=0; i<N;i++)          
                {       if (D[i] > 0)
                P[c++]=D[i];
                                     }          
for (i=0; i < N; i++)
cout << "D["<< i <<"]="<< D[i] << endl;
cout <<"-------------------"<< endl;
for (c=0; c < N; c++)
 cout<<"P["<< c <<"]="<< P[c] <<endl;
 
        cout << "v kakom massive naimenshiy po modylu element vstretitsa pervim?" <<endl;
min1 = D[0];
for (i=0; i<N; i++)
{   if ( min1 > D[i]) min1 = D[i];
         iminD = i;
    }
min2 = P[0];    
for (c=0; c<N; c++) 
{   if ( min2 > P[c] ) min2 = P[c];
        iminP = c;
}
        if ( iminD > iminP ) 
            cout << "v massive P[i] s indeksom  "<< iminP <<endl;
        else cout<< "v massive D[i] s indeksom  "<< iminD <<endl;
        cout <<"D["<< iminD <<"]= "<< min1 <<" ,P["<< iminP <<"]="<< min2 <<endl;
       _getch();
                return 0;
}



почему пишет индекс 24..почему результаты не по модулю...исправте плз..а то у же ппц сижу над этим долго очень(((
Миниатюры
массив  
Yandex
Объявления
20.12.2011, 20:11     массив
Ответ Создать тему
Опции темы

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