1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12
1

После всех минимальных элементов массива вставить заданное число

29.03.2019, 17:12. Показов 2702. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан одномерный массив, содержащий целые числа. Использовать дополнительные массивы нельзя. Выполнить следующие действия: После всех минимальных элементов вставить X

Программа работает, но появляется ошибка, не могу понять в чем проблема, скрин с ошибкой прикрепил
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
#include <iostream>
using namespace std;
 
int main()
{
    int n, x;
    cout << "Enter array size "; cin >> n;
 
    cout << "Enter X:"; cin >> x;
 
    int *arr = new int[n];
    cout << "Enter array: " << endl;
    for (int i = 0; i < n; i++) // Заполняем массив
        cin >> arr[i];
 
    int min = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] < min)
            min = arr[i];
 
    for (int i = 0; i < n; i++)
        if (arr[i] == min) {
            for (int j = n; j > i; j--)
                arr[j] = arr[j - 1];
            arr[i + 1] = x;
            i++; n++;
        }
 
    for (int i = 0; i < n; i++) // Вывод
        cout << arr[i] << " ";
    cout << endl;
 
 
    delete[] arr; //удаление массива
    system("pause");
    return 0;
}
Миниатюры
После всех минимальных элементов массива вставить заданное число  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.03.2019, 17:12
Ответы с готовыми решениями:

Вставить заданное число элементов после элемента, имеющего заданное значение
Ребят,помогите плз,если можете. Вставить заданное число элементов после элемента, имеющего заданное значение Работа должна быть...

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

Вставить в массив заданное число x после всех отрицательных элементов
Заданный массив с n чисел. Вставить в массив заданное число x после всех отрицательных элементов. Вставить число n в массив после k-го...

13
Нарушитель
9797 / 5338 / 1213
Регистрация: 12.03.2015
Сообщений: 25,055
29.03.2019, 17:20 2
Ну читать же невозможно! Неужели так трудно вставить сорс с форматированием?
Хотя, ошибку видно и так, но ёмаё...

После всех минимальных элементов массива вставить заданное число


Да ещё и параметр цикла у тебя внутри тела цикла изменяется. Что за говнокод?
0
Нарушитель
9797 / 5338 / 1213
Регистрация: 12.03.2015
Сообщений: 25,055
29.03.2019, 17:26 3
Ну вот так же лучше код читается, правда жэж?
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 < iostream >
  using namespace std;
 
int main() {
  int n, x;
  cout << "Enter array size ";
  cin >> n;
 
  cout << "Enter X:";
  cin >> x;
 
  int * arr = new int[n];
  cout << "Enter array: " << endl;
  for (int i = 0; i < n; i++) // Заполняем массив
    cin >> arr[i];
 
  int min = arr[0];
  for (int i = 1; i < n; i++)
    if (arr[i] < min)
      min = arr[i];
 
  for (int i = 0; i < n; i++)
    if (arr[i] == min) {
      for (int j = n; j > i; j--)
        arr[j] = arr[j - 1];
      arr[i + 1] = x;
      i++;
      n++;
    }
 
  for (int i = 0; i < n; i++) // Вывод
    cout << arr[i] << " ";
  cout << endl;
 
  delete[] arr; //удаление массива
  system("pause");
  return 0;
}
0
1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12
29.03.2019, 17:37  [ТС] 4
да, прошу извинить, первая тема на форуме, поэтому пока не освоился.
помогите исправить, пожалуйста, чтобы не вылазила ошибка.
программа выдает именно то, что мне нужно

Добавлено через 54 секунды
спасибо, что обратили внимание

Добавлено через 7 минут
да, прошу извинить, первая тема на форуме, поэтому пока не освоился.
помогите исправить, пожалуйста, чтобы не вылазила ошибка.
программа выдает именно то, что мне нужно

спасибо, что обратили внимание
0
Нарушитель
9797 / 5338 / 1213
Регистрация: 12.03.2015
Сообщений: 25,055
29.03.2019, 17:40 5
Цитата Сообщение от Sahitomo Посмотреть сообщение
помогите исправить, пожалуйста, чтобы не вылазила ошибка.
программа выдает именно то, что мне нужно
Я не буду править эту жуть, проще с нуля написать.
Но я в с++ не шарю, да и MSVC у меня нету.

Чо хоть прога делать-то должна?
0
1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12
29.03.2019, 17:42  [ТС] 6
Дан одномерный массив, содержащий целые числа. Использовать дополнительные массивы нельзя. Выполнить следующие действия: После всех минимальных элементов вставить X
0
Нарушитель
9797 / 5338 / 1213
Регистрация: 12.03.2015
Сообщений: 25,055
29.03.2019, 17:51 7
Цитата Сообщение от Sahitomo Посмотреть сообщение
Дан одномерный массив, содержащий целые числа. Использовать дополнительные массивы нельзя. Выполнить следующие действия: После всех минимальных элементов вставить X
Ну и нахрена козе баян? Если подразумевается перераспределение памяти, то где оно у тебя? Нету. Вот ты и вылазишь за пределы массива, а при освобождении получаешь по рукам. Так нельзя делать.
--------
Однако, если нужно просто показать изменения исходного массива с учётом условий задачи, то почему бы просто не вывести исходный массив, вставляя на ходу нужный Х прямо на консоль?
1
1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12
29.03.2019, 17:56  [ТС] 8
я понял, братан, исправил! спасибо тебе большое!
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.03.2019, 18:15 9
Sahitomo, у Вас даже больше принципиальное непонимание задачи. расширять массив нельзя ни статический, ни динамический - залезаем в чужую память. самый большой размер нового массива, который может получиться для этой задачи 2*n. есть обходные пути - например присвоить новому массиву нужный новый размер (n+количество min) и поменять указатель - но Вам это не подходит, т.к. нельзя использовать дополнительный массив.

остаётся 2 варианта - или немного схалтурить, сразу объявить массив длиной 2*n или использовать vector. выберите, какой вариант Вам больше подходит и сообщите.
0
 Аватар для zayats80888
6343 / 3514 / 1427
Регистрация: 07.02.2019
Сообщений: 8,979
29.03.2019, 18:26 10
Цитата Сообщение от Yetty Посмотреть сообщение
или немного схалтурить
Цитата Сообщение от Yetty Посмотреть сообщение
или использовать vector
ну так вектор это тоже халтура, ибо динамический массив
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.03.2019, 18:34 11
zayats80888, почему Вы так считаете? для такой задачи именно вектор является оптимальным вариантом,
просто не знаю, проходил ли его ТС, поэтому и спросил какой вариант его устраивает.
0
 Аватар для zayats80888
6343 / 3514 / 1427
Регистрация: 07.02.2019
Сообщений: 8,979
29.03.2019, 18:47 12
Цитата Сообщение от Yetty Посмотреть сообщение
почему Вы так считаете?
Ну если позволено спрятать выделение памяти под новый массив за оберткой vector, то почему не позволить реализовать с помощью дополнительного массива(динамического, заменяющего исходный).
По моему, самым оптимальным будет, предложенный вами, халтурный вариант №1, ну или просто вывод последовательности в консоль.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.03.2019, 18:54 13
Лучший ответ Сообщение было отмечено Sahitomo как решение

Решение

через vector:
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
#include <iostream>
#include <algorithm> 
#include <vector>
#include <ctime>
 
int main()
{
    srand((int)time(0));
    size_t n; 
    int X, min=0;
 
    std::vector<int>v; 
    std::cout << "n="; std::cin >> n;
 
    for (size_t i = 0; i < n ; i++)    
      v.push_back(rand()%19 - 9);
      
     for(int a : v)        
      std::cout << a << " ";    
    std::cout << '\n';    
 
    std::cout << "X=";  std::cin >> X;
    
    min=*std::min_element(v.begin(), v.end());    
 
    for (size_t i = 0; i < v.size(); i++) 
        if (v[i]==min) {i++;v.insert(v.begin()+i,X);}   
 
    for(int a : v)        
      std::cout << a << " ";    
    std::cout << '\n';
system("pause");
return 0;
}
Цитата Сообщение от zayats80888 Посмотреть сообщение
или просто вывод последовательности в консоль
кстати это тоже вариант, в условии явно не говорится, чтобы числа обязательно находились в массиве
1
1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12
30.03.2019, 13:37  [ТС] 14
Спасибо большое за программу и варианты решения.
Я сделал через 2*n, но через вектор тоже предоставлю вариант преподавателю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.03.2019, 13:37
Помогаю со студенческими работами здесь

Вставить в массив заданное число x после всех отрицательных элементов
Заданный массив с n чисел. Вставить в массив заданное число x после всех отрицательных элементов. Вставить число n в массив после k-го...

Вставить в массив заданное число x после всех отрицательных элементов
2.Заданный массив с n чисел. Вставить в массив заданное число x после всех отрицательных элементов. Вставить число n в массив после k-го...

Вставить после всех строк (двумерного массива), в которых есть заданное число А, последнюю строку
Вставить после всех строк (двумерного массива), в которых есть заданное число А, последнюю строку. Желательно с процедурами init, print,...

Вставить число k после всех элементов массива, кратных своему номеру
Дан массив целых чисел (n=15), заполненный случайным образом числами из промежутка . Вставить число k после всех элементов, кратных своему...

Вставить число k после всех элементов массива, кратных своему номеру
дан массив чисел из 15 элементов,заполненных случайным образом числами из промкжутка 1)вставить число k после всех элементов,кратных...


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

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

Новые блоги и статьи
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
Предсказание ветвлений - путь к высокопроизводи­тельному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
Создаем микросервисы с NestJS, TCP и Typescript
run.dev 17.03.2025
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node. js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает. . .
Гексагональная архитектура со Spring Boot
Javaican 17.03.2025
Если вы когда-нибудь сталкивались с ситуацией, когда внесение простых изменений в базу данных или пользовательский интерфейс заставляло вас переписывать весь код, то вы точно оцените элегантность. . .
Позиционировани­е Kafka Consumer и Seek-операции
Javaican 17.03.2025
Что же такое Consumer Seek в Kafka? По сути, это API-метод, который позволяет программно указать, с какой позиции (offset) Consumer должен начать или продолжить чтение данных из партиции. Без этого. . .
Python NumPy: Лучшие практики и примеры
py-thonny 17.03.2025
NumPy (Numerical Python) — одна из ключевых библиотек для научных вычислений в Python. Она превращает Python из просто удобного языка общего назначения в среду для проведения сложных математических. . .
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru