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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
graviq
Сообщений: n/a
11.08.2013, 21:54     Найти номер минимального по модулю элемента массива, сумму модулей элементов, сжать. #1
Помогите пожалуйста доделать задачу.Нужно если последний элемент массива был отрицательный и он один отрицательный в этом массиве,чтобы выводило сообщение что сумма не может быть посчитана.

Найти номер минимального по модулю элемента массива.
Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.

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
#include <iostream>
#include <conio.h>
#include <clocale>
#include <cmath>
using namespace std;
int main ()
{
setlocale (LC_CTYPE, "Russian");
int n,min,u,Q,W;
int i, k=0;
cin >> n;
if(cin.fail()||n<=0)
            {
                cout<<"Вы ввели неверный символ";
             _getch();
            return 0;
            }
double *a = new double [n];
double *v = new double [n];
cout <<"Введите элементы массива\n";
for (int i=0; i<n; i++)
cin >> a[i];
if(cin.fail()||n<=0)
            {
                cout<<"Вы ввели неверный символ";
             _getch();
            return 0;
            }
int a_min=0;
min=abs(a[0]);
for(i=0;i<n;i++)
if(abs(a[i])<min)
{
min=a[i];
a_min=i;
}
cout<<"номер минимального элемента "<<a_min+1<<"\n";
int c;
bool b=false;
for (int i=0; i<n; i++)
{
if (a[i]<0)
{
if (!b)
{
u=i; b=true;
}
}
}
double sum=0;
for ( i=u+1; i<n; i++)
sum+=abs(a[i]);
if (b==false)
cout <<"\nотрицательного элемента нет\n";
else
cout <<"\nсумма после первого отрицательного " << sum << endl;
cout<<"Введите интервал: \n\n a = ";
cin >> Q;
cout << " b = "; cin >> W;
for(int i=0;i<n;i++)
{
if((Q>( a[i])) || ((a[i]>W)))
{
v[k]=a[i];
k++;
}
}
for(i=k;i<n;i++)
v[i] = 0;
cout << endl;
cout<<"Преобразованный массив:" << endl;
cout << "\r\n";
for( int i=0; i<n; i++)
cout << v[i]<<" ";
_getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2013, 21:54     Найти номер минимального по модулю элемента массива, сумму модулей элементов, сжать.
Посмотрите здесь:

В одномерном массиве вычислить количество отрицательных элементов и сумму модулей элементов, расположенных после минимального по модулю элемента C++
C++ Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
C++ Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
В одномерном массиве, состоящем из n вещественных элементов, вычислить номер минимального по модулю элемента и сумму модулей элеменов массива. C++
C++ Найти сумму элементов массива, номер которых больше минимального номера элемента, имеющего максимальное значение в массиве
C++ В одномерном массиве, состоящем из n вещественных элементов, вычислить номер минимального по модулю элемента массива
C++ Вычислить номер минимального по модулю элемента и сумму модулей элементов, расположенных после первого отрицательного
Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ostap_93
Сообщений: n/a
12.08.2013, 17:33     Найти номер минимального по модулю элемента массива, сумму модулей элементов, сжать. #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
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;
}
Yandex
Объявления
12.08.2013, 17:33     Найти номер минимального по модулю элемента массива, сумму модулей элементов, сжать.
Ответ Создать тему
Опции темы

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