С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.09.2014
Сообщений: 19
1

Обработка одномерного динамического массива

27.02.2015, 08:40. Показов 1158. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
создать одномерный динамический массив произвольного размера.Заполнить его случайным образом.Вычислить сумму квадратов чисел, больших заданного K; подсчитать количество чисел, стоящих на местах,кратных 3.Delphi..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2015, 08:40
Ответы с готовыми решениями:

Метод-член класса для создания одномерного массива из отрицательных элементов двумерного динамического массива
Помогите, пожалуйста, нужно разработать метод-член класса для создания одномерного массива из...

Удаление динамического одномерного массива
Я в шоке оказывается надо еще удалять массив из памяти когда его создаешь. Всегда писал на шарпе...

Из динамического одномерного массива в статический
Здравствуйте! Я хотел бы попросить вас показать на данном примере, как изменится код программы, в...

Сортировка динамического одномерного массива
void Sort(int *l, int n) { for (*(l + 1) = 0; *(l + 1)<n - 1; *(l + 1)++) for (*(l + 2) = *(l...

5
30 / 30 / 38
Регистрация: 23.01.2015
Сообщений: 174
27.02.2015, 09:09 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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <memory.h>
 
#define N 20
 
int main(int argc, char* argv[])
{
    int* A = new int[N];
    memset((void*)A, 0x00, sizeof(int) * N);
 
    for (int i1 = 0; i1 < N; i1++)
    {
        A[i1] = rand() % N + 1;
        printf("%d ", A[i1]);
    }
 
    int K = 0;
    printf("\n\nEnter k = "); scanf("%d", &K);
 
    int sum = 0;
    for (int i = 0; i < N; i++)
        if (A[i] > K) sum += A[i] * A[i];
 
    printf("sum = %d\n", sum);
 
    int count = 0;
    for (int i = 0; i < N; i++)
        if ((i % 3) == 0) count++;
 
    printf("count = %d\n", count);
 
    _getch();
 
    return 0;
}
Добавлено через 7 минут
C++11
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
#include <cstdlib>
#include <iostream>
#include <vector>
#include <ctime>
#include <cmath>
 
#define N 20
 
using namespace std;
 
int main(int argc, char* argv[])
{
    std::vector<int> A;
    std::srand((unsigned)std::time(NULL));
 
    for (int i1 = 0; i1 < N; i1++)
    {
        int rnd_val = std::rand() % N + 1;
        std::cout << rnd_val << " ";
        A.push_back(rnd_val); 
    }
 
    int K = 0;
    std::cout << endl << "Enter K = "; std::cin >> K;
 
    int sum = 0;
    for (auto it = A.begin(); it != A.end(); it++)
    if (*it > K) sum += (int)std::pow((double)*it, 2); 
 
    std::cout << "sum = " << sum << endl;
 
    int count = 0;
    for (auto it = A.begin(); it != A.end(); it++)
        if (((it - A.begin()) % 3) == 0) count++;
 
    std::cout << "count = " << count << endl;
 
    std::cin.get();
 
    return 0;
}
0
Модератор
Эксперт С++
13712 / 10911 / 6477
Регистрация: 18.12.2011
Сообщений: 29,135
27.02.2015, 11:40 3
1XPLoade1, Уж коли перешли на STL, то можно использовать всю мощь библиотеки
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
#include <cstdlib>
#include <iostream>
#include <vector>
#include <ctime>
#include <numeric>
#include <algorithm>
#include <iterator> 
using namespace std;
// класс для создания ФО генерации сл. чисел
class random_fill
{
public:
    random_fill(){srand((unsigned)time(NULL));} // В конструкторе инициализируем начальное значение датчика
    int operator()(void){return rand()%20+1;} 
};
 
int main()
{
   int N=20;
    vector<int> A(N);
    srand((unsigned)time(NULL));
    generate(A.begin(),A.end(),random_fill());// заполнение через ФО random_fill
    
   ostream_iterator<int> out(cout," "); // итератор вывода на экран
   copy(A.begin(),A.end(),out);
 
   int K = 0;
   cout << endl << "Enter K = "; cin >> K;
   int sum=accumulate(A.begin(),A.end(),0,[K](int n,int m){return m>K?n+m*m:n;}
        ); // через лямбда функцию вычисляющую сумму квадратов > K
 
    std::cout << "sum = " << sum << endl;
 
    std::cout << "count = " << A.size()/3 << endl; // количество чисел с номерами кратными трем
    
   system("pause");
    return 0;
}
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.02.2015, 11:44 4
А в конце условия так скромно "Delphi"

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
можно использовать всю мощь библиотеки
не увидел использования классов из хедера random вместо устаревшего сишного srand
0
Модератор
Эксперт С++
13712 / 10911 / 6477
Регистрация: 18.12.2011
Сообщений: 29,135
27.02.2015, 11:54 5
У меня стоит VS 2008. Проверить random не могу.
Кстати, лямбду написал не проверив, работает ли.
Но теоретически вроде правильно.
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.02.2015, 11:59 6
В идеале, конечно, можно подсчёт суммы квадратов совместить с генерацией числа. Да и массив тут получается не нужен. Но задание есть задание.
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
#include <random>
#include <vector>
 
int main()
{
    int M, K;
    std::cout << "Enter size of array: ";
    std::cin >> M;
 
    std::vector<int> v(M);
    std::uniform_int_distribution<> dist(0, 9);
    std::mt19937 gen { std::random_device()() };
 
    std::generate(v.begin(), v.end(), [&dist, &gen] { return dist(gen); });
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
 
    std::cout << "\nEnter K: ";
    std::cin >> K;
 
    std::cout << std::accumulate(v.begin(), v.end(), 0, [K](const int x, const int y) { return x + y*y * (K < y); })
        << " " << M / 3 << std::endl;
}
Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
Проверить random не могу.
Для проверки есть http://ideone.com/
Да, правильно.
1
27.02.2015, 11:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2015, 11:59
Помогаю со студенческими работами здесь

Объявление динамического одномерного массива.
БИЛЕТ №14 3. Составьте программу, в которой объявляется динамический одномерный массив...

Список на основе одномерного динамического массива
Добрый вечер! Кто может привести в пример структуру такого списка? (на основе одномерного...

Некорректный вывод одномерного динамического массива
хай гайс написал на кьюти сортировщик действительных чисел массива по убыванию. с положительными...

Алгоритм (псевдокод) одномерного динамического массива
Суть проблемы такова: Задан массив – А(10). Получить из него массив В, состоящий из элементов...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru