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

Сжать массив, удалив из него все элементы, модуль которых находится в заданном интервале

17.02.2019, 21:00. Показов 2871. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть такая задачка. С одномерным массивом, состоящим из n вещественных элементов, выполнить следующее: Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а,b]. Освободившиеся в конце массива элементы заполнить нулями. Используя эту функцию, определить вышеуказанное к заданным массивам t[10], k[20]. Нужно использовать указатели, но без void'ов. Никак не могу решить и хочу попросить вашей помощи. Своего кода еще нет т.к даже не знаю с чего начинать, надеюсь на вашу помощь. Спасибо!
P.S поиском пользовался, но приведенные там задачи отличаются от моей
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2019, 21:00
Ответы с готовыми решениями:

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

Сжать массив, удалив из него элементы, модуль которых находится в заданном интервале
в одномерном массиве состоящем из n вещественных элементов вычислить: 1)максимальный элемент...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]
Всем здравствуйте, нужна ваша помощь , написать программу на DEV C++ Очень буду благодарен ! ...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]
Указатели с++: Задача: В одномерном массиве , состоящем из n действительных элементов , вычислить...

10
Заблокирован
17.02.2019, 21:15 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
void func(double *x,double a,double b,int n)//n=10,20
{
  for(int i=0; i<n; i++)
    if(x[i]>=a && x[i]<=b)
    {
      for(int k=i+1; k<n; k++)
        x[k-1]=x[k];
      x[n-1]=0;
      i--;
      n--;
    }
}
вроде этого
0
215 / 162 / 52
Регистрация: 09.12.2017
Сообщений: 520
17.02.2019, 21:21 3
CoderPC, четвертая строка не соответствует условию.
Цитата Сообщение от андрей пушной Посмотреть сообщение
модуль которых находится в интервале [а,b]
к тому же, по условию это должна быть функция, которая возвращает значение.
Цитата Сообщение от андрей пушной Посмотреть сообщение
без void'ов
1
Заблокирован
17.02.2019, 21:24 4
C++
1
if(fabs(x[i])>=a && fabs(x[i])<=b)
1
215 / 162 / 52
Регистрация: 09.12.2017
Сообщений: 520
17.02.2019, 21:27 5
CoderPC, попробуйте сделать такую функцию :
C++
1
2
3
4
5
6
7
8
double *func(int n, double *x, double a, double b) 
{
    double *new_arr = new double[n]; // создадим новый массив, его и вернем позже
 
    // ...
 
    return new_arr; // возвращаем новый массив
}
0
Заблокирован
17.02.2019, 21:32 6
6,7
C++
1
memmove(x+i,x+i+1,(n-i-1)*sizeof(double));
Добавлено через 2 минуты
кто потом этот динамический удалять будет? и неизвестно какой пришел
C++
1
2
3
4
5
double* func(
{
...........
  return x;
}
0
215 / 162 / 52
Регистрация: 09.12.2017
Сообщений: 520
17.02.2019, 21:57 7
CoderPC, размер массива будет таким же. Просто мы в main сделаем вот так :
C++
1
arr = func(...) // старый массив равен результату функции
И ничего удалять не надо.
0
Заблокирован
17.02.2019, 22:04 8
1) arr статический, просто ошибка
2)arr был динамический, кто удалит старый?
0
39 / 31 / 7
Регистрация: 31.01.2019
Сообщений: 81
18.02.2019, 01:17 9
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
к тому же, по условию это должна быть функция, которая возвращает значение
без void'ов
не не
Цитата Сообщение от андрей пушной Посмотреть сообщение
Нужно использовать указатели, но без void'ов
указатели без void'ов
про функции не сказано

Добавлено через 6 минут
имеется в виду запрет использования указателя на неопределенный тип видимо

Добавлено через 1 час 52 минуты
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
#include <iostream>
#include <cstdio>
#include <cmath>
 
 
 
int fun(double *d, double a, double b, int n) {
 
    for(int i=0; i<n; i++) {
        if(fabs(d[i])>=a && fabs(d[i])<=b) {
            d[i]=0;// пометим "ненужные" элементы массива нулями
        }
    }
// а затем "сместим" их в конец
    bool fl;
    for(int i=0;i<n;i++) {
        fl = false;
        if(d[i]==0){ // ищем нулевой, равный нулю вернее     
            //нашли
            for(int j=i+1;j<n;j++) { 
                    // сейчас ищем нЕнулевой
                if(d[j]!=0) {
                fl=true;// нашли, поменяем местами  
                d[i]=d[j];d[j]=0;               
                break;// 
                }
            }
            if(!fl) return 0;// сортировка выполнена, все нулевые в конце, расходимся
                
        }
    }
return 0;
}
 
int main() {
 
double a = 0, b = 0;
double t[10]{0,3,5,0,0,6,9,7,0,8}, k[20]{}, *ptr;
 
ptr = t;
fun(ptr, a, b, 10);
ptr = k;
fun(ptr, a, b, 20);
// только для теста сортировки:
for(int i=0;i<10;i++) {
    std::cout<<t[i]<<std::endl;
}
return 0;
}
2
Заблокирован
18.02.2019, 01:25 10
разве 0 не может быть приемлемым значением? хотя ТС похоже не интересно
0
39 / 31 / 7
Регистрация: 31.01.2019
Сообщений: 81
18.02.2019, 13:47 11
Цитата Сообщение от CoderPC Посмотреть сообщение
разве 0 не может быть приемлемым значением?
верно подмечено, придется переделывать
CoderPC, надеюсь вы не против, что я позаимствовал:
if(fabs(d[i])>=a && fabs(d[i])<=b)
0
18.02.2019, 13:47
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2019, 13:47
Помогаю со студенческими работами здесь

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]
В массиве, состоящем из n вещественных элементов, вычислить: - максимальный элемент массива; -...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b].
| Исходные данные - n вещественных величин. || При написании программы используйте...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1.) максимальный элемент...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru