Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 42

Удалить из массива все элементы, модуль которых не превышает 1

14.05.2020, 18:13. Показов 1728. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Началась сессия. А у меня "Спасите-помогите". Пожалуйста. У меня проблема. Есть задание. Вот оно.
Создайте динамический массив из n вещественных элементов. Сожмите массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполните нулями.
Алгоритм оформите в виде подпрограммы, необходимые данные которой передаются через список параметров.
Сначала я подумала, что не очень сложно. Программирую я приблизительно. Нашла программу, на этом форуме, забыла у кого, огромное спасибо. Программа проходит, все нормально. Потом выяснила, что надо использовать генератор случайных чисел. Вроде нашла. Тоже проходит хорошо. Но я думаю, что их надо объединить. А не знаю как. Кто-то может сказать, подходят ли они под мое задание.
И еще. Не понимаю, как передаются данные через список параметров. Может кого-нибудь заинтересует моя проблема. Мои знакомые админы просто смеются надо мной, они исп другой язык. А это СИ++. Пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
// в заголовочном файле <ctime> содержится прототип функции time()
#include <ctime>
// в заголовочном файле <iomanip> содержится прототип функции setprecision()
#include <iomanip>
using namespace std;
 
int main(int argc, char* argv[])
{
    srand(time(0)); // генерация случайных чисел
    float *ptrarray = new float [10]; // создание динамического массива вещественных чисел на десять элементов
        for (int count = 0; count < 10; count++)
            ptrarray[count] = (rand() % 10 + 1) / float((rand() % 10 + 1)); //заполнение массива случайными числами с масштабированием от 1 до 10
        cout << "array = ";
        for (int count = 0; count < 10; count++)
            cout << setprecision(2) << ptrarray[count] << "    ";
        delete [] ptrarray; // высвобождение памяти
        cout << endl;
    system("pause");
    return 0;
}
А это другой кусок.
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
#include <iostream>
#include <cmath>
using namespace std;
int  main()
{
    int n;
    cout << "Enter size:";
    cin >> n;
    double *mas = new double[n];// объявление указателя на массив mas из n элементов и выделение памяти под массив mas
    for (int i = 0; i < n; i++)
    {
        cout << "Enter mas[" <<i<<"]:";
        cin >> mas[i];
    }
     int j=0;
    for (int i = 0; i < n; i++)
         if(abs(mas[i]>=1.0) )
           mas[j++]=mas[i];
    for (int i = j; i < n; i++)
       mas[i]=0;
    for (int i = 0; i < n; i++)
       cout<<mas[i]<<' ';
       
    //удаление массива
    delete[] mas; // Удаление массива имеет вид команда  delete[ ] имя массива mas
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2020, 18:13
Ответы с готовыми решениями:

Найти сумму элементов массива, удалить из него все элементы, модуль которых не превышает 1
Помогите, пожалуйста 1. Найти сумму элементов массива с нечетными номерами. 2. Найти сумму элементов массива, расположенных между...

В начале массива расположить все элементы, модуль которых не превышает 1, а после них - все остальные
Ребят, помогите, пожалуйста! Нужно написать программу в С++ для решения задачи: Превратите массив таким образом, чтобы в начале...

Шаблон функции переставляющей в начало массива все элементы модуль которых не превышает 1
Доброго времени суток, дано задание: В одномерном массиве, который состоит из n действительных элементов, вычислить: 1. превратить...

2
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
14.05.2020, 19:04
Лучший ответ Сообщение было отмечено milahat как решение

Решение

milahat, А чем Вас не устроил стандартный образец
Образцы (шаблоны) программ для типовых задач, который Вы внимательно посмотрели, когда просматривали темы в разделе "Важные темы"
Нужно только заменить функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// пример обработки - Удалить элементы, модуль которых не превышает 1
int Work(double* M,int n)
{
    int m=0;
    for(int i=0;i<n;i++)
    {
       if(abs(M[i]>=1)
           M[m++]=M[i];
    }
    for(int i=m;i<n;i++)
       M[i]=0;
    return m;
}
И небольшая поправка в main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//----------  main() -  точка входа в программу консольного приложения 
int main()
{
    //setlocale(LC_ALL,"Rus");
    int n;
    cout<<"Размер вектора?";
    cin>>n;
    double* A=new double[n];
    //Input(A,n);
    RandomFill(A,n);
    Print(A,n); 
    int m=Work(A,n);
    cout<<"Результат" << endl;
    Print(A,m);  //  Print(A,n); - если нули надо тоже напечатать   
    delete[] A;
    //system("pause");
    return 0;
}
Чуть поправим заполнение случайными числами:
C++
1
2
3
4
5
6
7
8
// заполнение случайными числами
void RandomFill(double* M,int n)
{
    for(int i=0;i<n;i++)
    {
        M[i]=(double)rand()/RAND_MAX*4.0-2.0; // числа в диапазоне от -2.0 до + 2.0
    }
}
1
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 42
07.06.2020, 21:02  [ТС]
Спасибо огромное за отзыв. У меня не было возможности подключиться раньше, извините за опоздание. Сдавала сессию. Эта задача мой зимний неуд по программированию. Пересдача 27 июня. Попытаюсь исправить. У нас не было разбора подобных программ, массив как вектор вообще не рассматривался. Занимаюсь "вольным программированием". Безмерно благодарю Вас. Результат опубликую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2020, 21:02
Помогаю со студенческими работами здесь

Все элементы массива, модуль которых не превышает 1, заменить 0.
Все элементы массива, модуль которых не превышает 1, заменить 0.

Упорядочить элементы массива, располагая сначала элементы, модуль которых не превышает 5, а потом – все остальные
Составить программу, формирующую одномерный массив, состоящий из N целых элементов. Вычислить сумму четных элементов массива. Упорядочить...

Массив. Все элементы массива, модуль которых не превышает 1, заменить 0
все элементы массива, модуль которых не превышает 1, заменить 0.

Массив. Все элементы массива, модуль которых не превышает 1, заменить 0.
Все элементы массива, модуль которых не превышает 1, заменить 0.

Все элементы массива К размером n, модуль которых не превышает 1, заменить 0.
Все элементы массива К размером n, модуль которых не превышает 1, заменить 0.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru