Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2017, 12:33   #1
anasttb
Пользователь
 
Регистрация: 24.02.2017
Сообщений: 32
По умолчанию Не получается удалить минимальный элемент в массиве и вывести новый. Как сделать это?

[CODE]:
#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;

int main() {
setlocale( LC_ALL,"Russian" );
cout << "Введите размерность:" ;
int n;
cin>>n;
int *a=new int[n];
cout <<"Исходный массив: \n";
for (int i=0;i<n;i++)
{
a[i]=rand()%40-20 ;
cout<<" "<<a[i];
}
int min=a[0];
for (int i=0;i<n;i++)
{
if ( a[i]<a[0])
min=a[i];
}
cout <<"\nМинимальный элемент массива: "<<min;
cout <<"Новый массив: \n";
for (int i=0;i<n;i++)
{
if (a[i]==min);
delete(a[i]);
}
for (int i=0;i<n;i++)
cout<<" "<<a[i];
cout<<"\n ";
system ("pause");
}
anasttb вне форума Ответить с цитированием
Старый 09.05.2017, 08:42   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от anasttb Посмотреть сообщение
int min=a[0];
for(int i=0;i<n;i++)
{
if(a[i]<a[0])
min=a[i];
}
- вот здесь ошибка. Нужно писать так:
if(a[i] < min)
min = a[i];
Cuprum5 вне форума Ответить с цитированием
Старый 09.05.2017, 08:52   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от anasttb Посмотреть сообщение
for (int i=0;i<n;i++)
{
if (a[i]==min);
delete(a[i]);
}
- вот это по-моему не проканает. delete только можно удалить весь массив, написав так:
delete[] a;
Но делать это нужно в конце программы, а не в середине. Короче у Вас неправильно написано.
Чтобы удалить минимальный элемент нужно:
1) Сохранить его номер при поиске минимального элемента;
2) Потом просто занулить его(можно и не занулять, я это только щас понял);
3) Сдвинуть элементы правее этого элемента на 1 влево;
Дальше есть варианты:
4.1) Либо создать новый мнимый размер массива на 1 меньше оригинального;
4.2) Либо пересоздать массив, для этого нужно создать новый массив, потом переписать элементы из старого в новый и удалить старый массив и все!!!!!
Cuprum5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить первый минимальный четный элемент в двумерном массиве - C++ ggjgj Общие вопросы C/C++ 8 08.11.2016 18:00
Вычислить минимальный элемент массива(вернусь ссылку на него ), заменить этой суммой минимальный элемент mari_ly Общие вопросы C/C++ 1 30.03.2016 16:31
Найти минимальный элемент в массиве. C++ asdf_7 Помощь студентам 1 09.12.2014 20:11
Ввести массив с клавиатуры. В полученном массиве найти минимальный элемент. Вывести его на экран ok57 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 17.05.2013 05:07
Минимальный элемент в массиве (Visual C++) Афанасий[vedma] Помощь студентам 1 29.11.2011 17:13