Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
zer077
0 / 0 / 1
Регистрация: 23.04.2016
Сообщений: 28
#1

Переделать код под динамический массив - C++

21.11.2016, 22:48. Просмотров 151. Ответов 4
Метки нет (Все метки)

Необходимо переделать данный код, под динамический массив используя функции malloc и free
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
 int i, n, a[10], s=0, k=0;
  cout<< "Input n=";
  cin>>n;
   cout << "Input elements ="<<endl;
   for (i=0; i<n;i++)
   {
       cin>> a[i];
       if ((a[i]>0) && (a[i]%5==0)) s=s+a[i], k=k+1;
   }
   cout << "S=" << s << " K=" << k;
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 22:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Переделать код под динамический массив (C++):

Переделать под динамический массив
Добавлено через 31 минуту #include &lt;iostream&gt; #include &lt;cstring&gt; using...

Переделать программу под двумерный динамический массив
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

Нужно переделать код под функции (одномерный массив)
«Однoмерные маcсивы», оформить каждый пункт задания в виде функции. Все...

Переделать в динамический массив
Помогите переделать программу:)Массивы должны быть динамическими.И можно её...

Переделать статический массив в динамический
Помогите пожалуйста переделать статический массив в динамический #include...

Переделать статический массив в динамический
Помогите переделать статический массив в динамический. #include &lt;iostream&gt;...

4
ящюр
97 / 97 / 60
Регистрация: 15.03.2013
Сообщений: 525
Записей в блоге: 1
21.11.2016, 23:01 #2
Лучший ответ Сообщение было отмечено zer077 как решение

Решение

Наверно так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
    int i, n,  s = 0, k = 0;
    int *a = (int*)malloc(10*sizeof(int)); // Динамически выделяем память под массив
    cout << "Input n=";
    cin >> n;
    cout << "Input elements =" << endl;
    for (i = 0; i<n; i++)
    {
        cin >> a[i];
        if ((a[i]>0) && (a[i] % 5 == 0)) s = s + a[i], k = k + 1;
    }
    cout << "S=" << s << " K=" << k;
    free(a);    // Удаляем динамически выделенную память.
    system("pause");
    return 0;
}
1
zer077
0 / 0 / 1
Регистрация: 23.04.2016
Сообщений: 28
21.11.2016, 23:07  [ТС] #3
ящюр, Все работает! Спасибо! А сможете еще немного помочь? Надо переделать еще один код под динамический массив, с использованием функций new и delete. Извиняюсь, если код плохо написан
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
#include <iostream> 
using namespace std;
int main()
{
setlocale (LC_CTYPE, "rus");
int n,i,k=0;
double a[100],max=a[0],p=1,s=0,x=0;
cout<<"Введите количество элементов массива: ";
cin>>n;
cout<<"\nВводите элементы массива:"<<endl;
for (i=0;i<n;i++) 
{
    cin>>a[i];
    if (a[i]>max) {max=a[i]; k=i;} 
    if (a[i]<0) {p=p*a[i];} 
}
for (i=0;i<k;i++) 
{
    if (a[i]>0) {s=s+a[i];}
}
cout<<"\nМаксимальный элемент массива: a["<<k<<"]="<<max<<endl;
cout<<"Сумма положительных элементов массива, расположенных до максимального элемента="<<s<<endl;
cout<<"Произведение отрицательных элементов массива="<<p<<endl;
cout<<"\nМассив с измененным порядком элементов на обратный:"<<endl;
 
for (i = 0; i < n/2; i++)     
  {x = a[i]; a[i] = a[n-1-i]; a[n-1-i] = x;}                         
 
for (i = 0; i < n; i++) 
  {cout<<"a["<<i<<"]="<<a[i]<<endl;}
 
return 0;
}
0
ящюр
97 / 97 / 60
Регистрация: 15.03.2013
Сообщений: 525
Записей в блоге: 1
21.11.2016, 23:30 #4
Лучший ответ Сообщение было отмечено zer077 как решение

Решение

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
#include <iostream> 
using namespace std;
int main()
{
    setlocale(LC_CTYPE, "rus");
    int n, i, k = 0;
    double *a;
    a = new double[100];
    // !!!!!! Значение a[0] равно рандомному значению !!!!!!
    // a[0] = 0;
    double max = a[0], p = 1, s = 0, x = 0;
 
    cout << "Введите количество элементов массива: ";
    cin >> n;
    cout << "\nВводите элементы массива:" << endl;
    for (i = 0; i<n; i++)
    {
        cin >> a[i];
        if (a[i]>max) { max = a[i]; k = i; }
        if (a[i]<0) { p = p*a[i]; }
    }
    for (i = 0; i<k; i++)
    {
        if (a[i]>0) { s = s + a[i]; }
    }
    cout << "\nМаксимальный элемент массива: a[" << k << "]=" << max << endl;
    cout << "Сумма положительных элементов массива, расположенных до максимального элемента=" << s << endl;
    cout << "Произведение отрицательных элементов массива=" << p << endl;
    cout << "\nМассив с измененным порядком элементов на обратный:" << endl;
 
    for (i = 0; i < n / 2; i++)
    {
        x = a[i]; a[i] = a[n - 1 - i]; a[n - 1 - i] = x;
    }
 
    for (i = 0; i < n; i++)
    {
        cout << "a[" << i << "]=" << a[i] << endl;
    }
    delete[]a;
    return 0;
}
Добавлено через 2 минуты
Обращаю внимание, что при динамически выделяемой памяти переменные имеют рандомное значение !!! Если нужно значение 0, то нужно присваивать значение принудительно (строка 10).
1
zer077
0 / 0 / 1
Регистрация: 23.04.2016
Сообщений: 28
21.11.2016, 23:34  [ТС] #5
ящюр, Понял, спасибо большое
0
21.11.2016, 23:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 23:34
Привет! Вот еще темы с решениями:

Переделать статический массив в динамический
Помогите переделать статический массив в динамический #include &lt;stdio.h&gt;...

Нужно переделать статический массив в динамический
Помогите пожалуйста! Нужно переделать статический массив в динамический. ...

Переделать статический массив структур в динамический
Имею структуру из 8 эл-ов (массивов чаров и 2 подструктуры). Имею исходные...

как переделать массив из статического в динамический?
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cmath&gt; #include &lt;time.h&gt;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru