Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посоветуйте литературу http://www.cyberforum.ru/cpp-beginners/thread1081540.html
Скачал несколько книг по C++, в самом начале книги написаны темы, которые обычно изучают не на первой странице, а в середине книге. Дайте название литературы, где по порядку все идет и понятно...
C++ Просто исправте ошибку //---------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> #include <iostream.h> #include <cmath.h> #include <vcl.h> #define SZ 5... http://www.cyberforum.ru/cpp-beginners/thread1081538.html
найти подмассив 3х3 с макс. суммой и транспонировать его в исходном массиве C++
добрый вечер. помогите, пожалуйста решить задачку: Задан двумерный массив NxM. Нужно написать код, который в исходном массиве найдет подмассив размером 3х3 с максимальной суммой элементов и...
Возможно ли установить С++ 6.0 на windows 8 ? C++
Возможно ли установить С++ 6.0 на windows 8 ?
C++ Считается ли хорошим тоном создавать объекты классов в области глобальных переменных http://www.cyberforum.ru/cpp-beginners/thread1081521.html
Считается ли хорошим тоном создавать объекты классов в области глобальных переменных? код класса class FX { ........ ......... };
C++ Доделать программку по численному моделированию Всем доброго времени суток! Хочу попросить помочь в одной задачке. Расчет сверхзвукового воздухозаборника, но это не суть. Имеется программа, она считает по формулам 4 параметра и выдает табличку с... подробнее

Показать сообщение отдельно
viking-san
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 5
26.01.2014, 05:29
Если задание мной правильно понято, то все что нужно было делать, это заменить 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;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru