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

Массиви. - C++

Восстановить пароль Регистрация
 
povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
24.06.2011, 23:37     Массиви. #1
Дан массив целых чисел. Найти:
-среднее арифметическое;
-(максимальное значение;
-количество отрицательных элементов;
-номера минимального элемента;
-количество четных чисел;
-минимальный из четных элементов этого массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2011, 23:37     Массиви.
Посмотрите здесь:

C++ массиви
C++ Linux Двухмерние массиви Vector

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
25.06.2011, 00:36     Массиви. #2
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
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <algorithm>
#include <functional>
#include <numeric>
#include <vector>
#include <ctime>
 
class myrandom {
public:
    int operator()(){return rand() % 21 - 10;} 
};
 
class is_even_num {
public:
    bool operator()(int &n){return !(n & 1);}
};
 
int main()
{
    const int size = 20;
    int arr[size],
        *p = arr;
    int min_element;
    double average;
    std::vector<int> even_nums;
    size_t how_much_even_nums;
 
    srand(time(NULL));
    std::generate(arr, arr+size, myrandom());
    std::cout << "Array: ";
    std::copy(arr, arr+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    average = std::accumulate(arr, arr+size, 0) / static_cast<double>(size);
    std::cout << "Average: " << average;
    std::cout << "\nMax element: " << *std::max_element(arr, arr+size);
    std::cout << "\nNumber of negative elements: " <<
        std::count_if(arr,
        arr+size,
        std::bind2nd(std::less<int>(), 0));
 
    min_element = *std::min_element(arr, arr+size);
    std::cout << "\nIndexes of min element: ";
    while ((p = std::find(p, arr+size, min_element)) != arr+size) {
        std::cout << p - arr << " ";
        ++p;
    }
    
    how_much_even_nums = std::count_if(arr, arr+size, is_even_num());
    std::cout << "\nNumber of even numbers: " << how_much_even_nums;
    even_nums.reserve(how_much_even_nums);
    for (size_t i = 0; i < size; ++i)
        if (is_even_num()(arr[i]))
            even_nums.push_back(arr[i]);
 
    std::cout << "\nMin of even elements: " <<
        *std::min_element(even_nums.begin(), even_nums.end());
    std::cout << std::endl;
 
    return 0;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
25.06.2011, 00:56     Массиви. #3
Вот рукопашный вариант.

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
#include <locale.h>
 
void  main(void) {
 
           setlocale("Russia");
 
    int  arr[]  = {  10, -2, 45, 2, 8, -3, -7, -9, 7, 0, 2, 4, 5, 7, 77, -1 };
    int  size  = sizeof(arr) /  sizeof(int);
 
    const  int * first = arr;
    const  int*  last  = arr + size;
 
 
    int  sum = 0;
    while( first != last ) 
        sum += *first++;
    sum /= size;
    printf("Среднее арифмитическое = %d\n", sum);
 
 
    first      = arr;
    int  tmp = *first;
    while(first != last) {
         if( *first > tmp)
              tmp = *first;
        *first++;
    }
    printf("Максимальный элемент = %d\n", tmp);
 
 
 
    
    int  cnt = 0;
    for(first = arr; first != last; *first++) {
              if( *first < 0 )
               cnt++;
    }
    printf("Число отрицательных элементов = %d\n", cnt);
 
 
    sum         = 0;
    int index   = 0;
    first         = arr;
    tmp         = *first;
    while( first != last ) {
        if( *first < tmp ) {
            tmp    = *first; 
            index = sum;
        }
        *first++;
        sum++;
    }
    printf("Индекс минимального элемента= %d\n", index);
 
 
    index = 0;
    for(first = arr; first != last; *first++) {
           if(! ( *first % 2 ))
              index++;
    }
    printf("Количество чётных элементов = %d\n", index);
    
 
    tmp     = arr[0];
    for(int i = 0; i < size; i ++) {
          if( ! (arr[i] % 2) &&  arr[i] < tmp ) 
          tmp   = arr[i];
    }
    if(! (tmp % 2))
        printf("Минимальный чётный элемент = %d\n", tmp);
 
           getchar();
}
Yandex
Объявления
25.06.2011, 00:56     Массиви.
Ответ Создать тему
Опции темы

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