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

Написать программу используя функции - C++

Восстановить пароль Регистрация
 
Пульман
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 40
26.01.2014, 00:10     Написать программу используя функции #1
Используя имя массива как указатель, и применяя адресную арифметику выполнить задание:
17. Дан одномерный массив, состоящий из N целочисленных элементов.
17.1. Ввести массив с клавиатуры.
17.2. Найти максимальный отрицательный элемент.
17.3. Вычислить среднеарифметическое четных элементов массива.
17.4. Вывести ненулевые элементы на экран в обратном порядке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2014, 00:10     Написать программу используя функции
Посмотрите здесь:

Составить программу, используя функции. C++
Составить программу, используя функции. C++
C++ Написать программу используя операторы цикла for,while,do while.
Двумерный массив. Программу написать используя указатели и строковые функции. C++
ФУНКЦИИ/Используя перегрузку функций, написать C++
C++ Используя прототип функции написать программу для нахождения максимального элемента
C++ Используя перегрузку функции ,написать программу определения минимального значения элемента массива разного типа
C++ Используя оператор цикла While, написать программу для вычисления значений функции Y

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
viking-san
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 5
26.01.2014, 05:29     Написать программу используя функции #2
Если задание мной правильно понято, то все что нужно было делать, это заменить Array[i], на *(Array+i), иначе это абсолютно бесполезный ответ

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
#include <conio.h>
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(0,"Rus");
 
    const int N(5);
    int Arr[N],b(0);
    double c(0),d(0);
 
    cout << "\nВвести массив с клавиатуры\n";
 
    for(int i(0);i<N;i++)
        cin >> *(Arr+i);    
 
    // сортировка пузырьком, на всякий случай
    for(int i(0);i<N;i++)
        for(int j(0);j<i;j++)
            if(*(Arr+i) < *(Arr+j))
                swap(*(Arr+i),*(Arr+j));
        
    // с макс. отриц. загвоздка, не придумал ни чего лучше, 
    // но по идее это не трудно и сам справишься если время позволяет
    for(int i(0);i<N;i++)
        if(*(Arr+i) < 0)
        {
            b = *(Arr+i);
            break;      
        }
    
    if(b)
    {
        cout << "\nНайти максимальный отрицательный элемент\n";
        
        for(int i(0);i<N;i++)
            if(*(Arr+i) < 0 && *(Arr+i) > b)
                b = *(Arr+i);
        cout << b << endl;
    }
    else cout << "\nВсе положительные\n";
 
    // среднеарифметическое
    for(int i(0);i<N;i++)
        if(*(Arr+i) % 2 != 1 && *(Arr+i) != 0 && *(Arr+i) % 2 != -1)
        {
            d += *(Arr+i);
            c++;
        }
 
    if(c)   cout << "\nВычислить среднеарифметическое четных элементов массива\n" << d/c << endl;       
    else    cout << "\nЧетных нет\n";
 
    cout << "\nВывести ненулевые элементы на экран в обратном порядке\n";
 
    for(int i(N-1);i>=0;i--)
        if(*(Arr+i) != 0)
            cout << *(Arr+i) << endl;
 
    _getch();
    return 0;
 
}
Добавлено через 46 минут
пардон, про функции забыл, ну и более удачный вариант с макс. отрицательным

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
75
76
77
78
79
#include <conio.h>
#include <iostream>
 
using namespace std;
 
void Input(int* Arr,int N)
{
    for(int i(0);i<N;i++)
        cin >> *(Arr+i);
}
 
void Sort(int* Arr,int N)
{
    for(int i(0);i<N;i++)
        for(int j(0);j<i;j++)
            if(*(Arr+i) < *(Arr+j))
                swap(*(Arr+i),*(Arr+j));
}
 
int MaxPositiv(int* Arr,int N)
{
    int b(0);
 
    if(*Arr >= 0)   return b;
    else
        for(;b<N;b++)
            if(*(Arr+b) >= 0)
                break;
 
    return *(Arr+(b-1));
}
 
double Middle(int* Arr,int N)
{
    double c(0),d(0);
    
    for(int i(0);i<N;i++)
        if(*(Arr+i) % 2 != 1 && *(Arr+i) != 0 && *(Arr+i) % 2 != -1)
        {
            d += *(Arr+i);
            c++;
        }
 
    return d/c;
}
 
void Output(int* Arr,int N)
{
    for(int i(N-1);i>=0;i--)
        if(*(Arr+i) != 0)
            cout << *(Arr+i) << endl;
}
 
int main()
{
    setlocale(0,"Rus");
 
    const int N(7);
    int Arr[N];
    
    cout << "\nВвести массив с клавиатуры\n";
    Input(Arr,N);
 
    Sort(Arr,N);
 
    cout << "\nНайти максимальный отрицательный элемент\n";
    if(MaxPositiv(Arr,N))   cout << MaxPositiv(Arr,N) << endl;
    else                    cout << "Все положительные\n";
 
    cout << "\nВычислить среднеарифметическое четных элементов массива\n";
    if(Middle(Arr,N))   cout << Middle(Arr,N) << endl;      
    else    cout << "Четных нет\n";
 
    cout << "\nВывести ненулевые элементы на экран в обратном порядке\n";
    Output(Arr,N);
        
    _getch();
    return 0;
}
Добавлено через 23 минуты
ах опять же не правильно понял задание, в последнем пункте можно использовать запасной вариант массива, его копию выводить в обратном порядке, исключая нулевые значения.

Добавлено через 44 минуты
ну и на ноль делить нельзя, так что в поиске среднеарифметического, проверка нужна по данному вопросу

Добавлено через 1 час 15 минут
надеюсь окончательный вариант, исправленный и дополненный:

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <conio.h>
#include <iostream>
 
using namespace std;
 
// инициализация массива
void Input(int* Arr,int N)
{
    for(int i(0);i<N;i++)
        cin >> *(Arr+i);
}
 
// ибо будем изменять массив
void Copy(int* Arr,int* Array,int N)
{
    for(int i(0);i<N;i++)
        *(Array+i) = *(Arr+i);
}
 
// вот как раз тут
void Sort(int* Arr,int N)
{
    for(int i(0);i<N;i++)
        for(int j(0);j<i;j++)
            if(*(Arr+i) < *(Arr+j))
                swap(*(Arr+i),*(Arr+j));
}
 
// ищем макс. отрицательное
int MaxNegative(int* Arr,int N)
{
    int b(0);
    
    // сначала проверив есть ли таковые
    if(*Arr >= 0)   return b;
    else
        for(;b<N;b++)
            if(*(Arr+b) >= 0)
                break;
 
    return *(Arr+(b-1));
}
 
// а вдруг четных нет
bool _Even(int* Arr,int N)
{
    int a(0);
    for(int i(0);i<N;i++)
        if((*(Arr+i))%2 == 0)
            a++;
 
    if(a)   return true;
    else    return false;
}
 
// среднеарифметическое
double Middle(int* Arr,int N)
{
    double c(0),d(0);
    
    for(int i(0);i<N;i++)
        if(*(Arr+i) % 2 == 0)
        {
            d += *(Arr+i);
            c++;
        }
    
    return d/c;
}
 
// вывод в обратном порядке без нулевых
void Output(int* Arr,int N)
{
    int a(0);
 
    for(int i(N-1);i>=0;i--)
        if(*(Arr+i) != 0)
        {
            cout << *(Arr+i) << endl;
            a++;
        }
    
    if(!a) cout << "Все элементы равны нулю\n";
}
 
int main()
{
    setlocale(0,"Rus");
 
    const int N(7);
    int Arr[N],Array[N];
    
    cout << "\nВвести массив с клавиатуры\n";
    Input(Arr,N);
    Copy(Arr,Array,N);
    Sort(Arr,N);
 
    cout << "\nНайти максимальный отрицательный элемент\n";
    if(MaxNegative(Arr,N))  cout << MaxNegative(Arr,N) << endl;
    else                    cout << "Все положительные\n";
 
    cout << "\nВычислить среднеарифметическое четных элементов массива\n";
    if(_Even(Arr,N))    cout << Middle(Arr,N) << endl;      
    else                cout << "Четных нет\n";
 
    cout << "\nВывести ненулевые элементы на экран в обратном порядке\n";
    Output(Array,N);
        
    _getch();
    return 0;
}
Yandex
Объявления
26.01.2014, 05:29     Написать программу используя функции
Ответ Создать тему
Опции темы

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