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

Найти номер минимального по модулю элемента массива, сумму модулей элементов, сжать. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ write http://www.cyberforum.ru/cpp-beginners/thread936683.html
Нужно записать данные контейнера в файл: #include<iostream> #include<string> #include<vector> #include<fstream> #include<iterator> #include<algorithm> using namespace std; class Store {
C++ Создание переменных в цикле Здравствуйте, меня интересует вопрос - насколько операция создания переменных быстра. есть функция рендеринга, которая выполняется несколько сотен раз в секунду, стоит ли выносить временные... http://www.cyberforum.ru/cpp-beginners/thread936681.html
Кракозябры в консоли - почему? C++
Добрый день. Почитав форум и статью про кодировки вообще я задался парой вопросов. Ладно, мне более менее ясно, почему возникают кракозябры (win1251 -> OEM 866). Но неясно 2 момента: 1) Почему при...
C++ Узнать начало файла
Как узнать начало файла? ( Указатель на память )
C++ Защита флеш накопителя http://www.cyberforum.ru/cpp-beginners/thread936636.html
Наткнулся на прогу по защите флеш накопителей. Алгоритм очень прост, активируете - и ВСЯ память до 0 флешки заполняется, деактивируете и можно записывать на флешку, память восстанавливается. Есть...
C++ Отправка почты из формы Я могу программой отправлять собранные данные на почтовый адрес, к примеру, *@yandex.ru? И как мне это реализовать? Я создаю клиент для игры, и в его функционал будет входить отправка статистической... подробнее

Показать сообщение отдельно
Ostap_93
Сообщений: n/a
12.08.2013, 17:33
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
//problem_1
//Нужно если последний элемент массива был отрицательный и он один отрицательный в этом массиве,
//чтобы выводило сообщение что сумма не может быть посчитана.
// problem_2
//Найти номер минимального по модулю элемента массива.
// problem_3
//Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента.
// problem_4
// //Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b].
// problem_5
// Освободившиеся в конце массива элементы заполнить нулями. 
 
 
 
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
 
enum{max=10};  //максимально можлива кількість елементів в масиві
int n=0;       //реальний розмір масиву
int n_loc;  //локальний розмір масиву (кількість елементів, які не входять в діапазон) {problem_4}
 
 
 
 
bool perevirka(int n)       // перевірка правильності введеного символу
{
    return(n<=::max)?true:false;
}
 
 
void read_array(float array[])    //запис елементів в масив
{
    do
    {
        cout << "введiть бажаний розмiр масиву n = ";
        cin >> n;
        cout << endl;
        if(!perevirka(n))
            cout << "неправильний ввiд!!!" << endl;
    }while(!perevirka(n));
 
    if(n)
        cout << endl << "введiть масив:"<< endl;
    for(int i=0;i<n;i++)
    {
        cout << "array[" << i << "]=";
        cin >> array[i];
    }
}
 
void show_array(float array[], bool pr_4)       // відображення введеного масиву на екран
{
    int temp=(pr_4)?n_loc:n;
    if(temp)
        cout << endl << "ви маєте такий масив:" << endl;
    for(int i=0;i<temp;i++)
        cout << "array[" << i << "]=" << array[i] << endl;
}
 
 
bool problem_1(float array[],float &suma)      //true=>останній не від'ємний, або він-не один (умова рахування суми)
{
    bool status=false;
    for(int i=0;i<n;i++)
    {
        if(array[i]<0 && i!=n-1)
            status=true;
        suma +=array[i];
    }
    status=(array[n-1]<0 && !status)?false:true;
    if(!status)
        suma=0;
    return status;
}
 
bool problem_2(float array[], int &min_number)
{
    float min=abs(array[0]);
    bool change=false;
    for(int i=0; i<n; i++)
    {
        if(i<n-1 && abs(array[i])!=abs(array[i+1]))
             change=true;  //була зміна початкового елементу масиву, або не всі елементи масиву рівні
        if(abs(array[i])<min)
            min_number=i;
    }
    return change;
}
 
bool problem_3(float array[],float &suma_a_s_el, bool &last)
{
    bool status=false; // чи є від'ємні в масиві
    last=false;
    for(int i=0; i<n;i++)
    {
        if(array[i]<0)
        {
            status=true;  //є від'ємні в масиві
            if(i!=n-1)
                for(int j=i+1; j<n; j++)
                {
                    suma_a_s_el +=abs(array[j]);
                }
            else
                last=true;
        }
    }
    return status;
}
 
int problem_4(float a, float b, float array[])
{
    n_loc=n;
    for(int i=0; i<n_loc; i++)
    {
        if(array[i]>=a && array[i]<=b)
        {
            for(int j=i; j<n_loc-1; j++)
                array[j]=array[j+1];
            --n_loc;
            --i;
        }
    }
    return n_loc;
}
 
 
void problem_5(float array[])
{
    for(int i=n_loc; i<n; i++)
    {
        array[i]=0;
    }
}
 
int _tmain()
{
    setlocale(0,"Rus");
 
    float array[::max]; // об'явлення масиву
 
    read_array(array);  // запис масиву
    show_array(array,0);  // показ елементів масиву
 
 
    // problem_1
    float suma=0;       // містить суму елементів масиву
    if(problem_1(array,suma) && n)  //problem_1==true and n!=0    
        cout << "сума елементiв масиву рiвна: "  << suma << endl;
    else 
        cout << "неможливо порахувати суму елементiв масиву" << endl;
    
 
    // problem_2
    int min_number=0; // номер мінімального по модулю елементу в масиві
    if(n)      // якщо є елементи масиву
    {
        if(problem_2(array,min_number)) // якщо не всі елементи масиву рівні
        {
            cout << "номер мінімального по модулю елементу в масиві: " << min_number << endl;
        }
        else
            cout << "всi елементи масиву є рiвними!" << endl;
    }
 
    // problem_3
    float suma_a_s_el=0;
    bool last=false;  // якщо перший є останнім від'ємним
 
    if(problem_3(array, suma_a_s_el, last))
    {
        if(last)
            cout << "в масиві останній елемент є першим від'ємним " << endl;
        else
            cout << "сума всіх елементів по модулю, після першого від'ємного рівна: " << suma_a_s_el << endl;
    }
    else
        cout << "масив не має від'ємних елементів!" << endl;
 
    //problem_4
    float a,b; //межі потрібного діапазону
    cout << "введiть: (a<=b)" << endl;
    cout << "a=";
    cin >> a;
    cout << endl << "b=";
    cin >> b;
    cout << endl;
    problem_4(a,b,array);
    show_array(array,1);
 
    //problem_5
    problem_5(array);
    show_array(array,0);
 
    _getch();
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru