Форум программистов, компьютерный форум CyberForum.ru

создать функцию удаления max и min эл-та массива - C++

Восстановить пароль Регистрация
 
Рейвол
2 / 2 / 0
Регистрация: 06.10.2012
Сообщений: 44
20.03.2013, 22:02     создать функцию удаления max и min эл-та массива #1
Я написал почти всю программу в которой задание состоит следующим образом:
Удалить максимальный и минимальный эл-т массива
вот код
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctime>
#include <math.h>
 
using namespace std;
void fillManual(int*,int);
void printArray(int*,int);
void finding(int*, int);
 
int main(int argc, char* argv[])
{
 
    int length;
        cout << "enter array length:\n" ;
        cin >> length;
    int* myArray = new int[length];
 
    fillManual(myArray,length);
    finding(myArray,length);
    cout << "array without:"<<endl;
    printArray(myArray,length);
    getch();
}
 
void fillManual(int* inArray, int length)
{
    cout << "Enter array items:" << endl;
    for (int i = 0; i <length; i++)
    {
        cin >> inArray[i];
    }
}
 
 
void printArray(int* inArray, int length)
{
    for( int i = 0; i < length; i++)
    {
        cout << inArray[i] << endl;
    }
}
 
void finding(int* myArray, int length)
{
    int imin;
    int imax;
    int maxel;
    int minel;
 
 maxel=myArray[0]; 
 imax=0;
   for(int i=0;i<length;i++)
     
       if (maxel<myArray[i])
        {
         maxel=myArray[i];  
         imax=i;                      
        }
 
       minel=myArray[0]; 
 imin=0;
   for(int i=0;i<length;i++)
       if (minel>myArray[i])
        {
         minel=myArray[i];  
         imin=i;                        
        }
  
}
прошу помочь, кто может=) может тут можно просто дополнить ф-ю где я нашел индексы мин и макс эл-та, что бы их удалить, у меня просто уже знаний не хватает, что бы закончить эту прогу.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
20.03.2013, 22:30     создать функцию удаления max и min эл-та массива #2
Проверяйте, будут вопросы, с удовольствием отвечу.
C++
1
2
3
4
5
6
7
void DeleteMinMax ( int *Mas; int index_min, index_max; int Size )
{
    for ( int i = index_min; i < Size - 1 ; i++ ) Mas[i] = Mas[i+1];
    Size--;
    for ( int i = index_max; i < Size - 1 ; i++ ) Mas[i] = Mas[i+1];
    Size--;
}
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
20.03.2013, 22:36     создать функцию удаления max и min эл-та массива #3
Нашел красавчик, но после такой сложной работы не хочется верить что надо создавать новый массив размером n*m-1. Все правильно делай. Переписывай числа со смещением самый простой способ, это если
C++
1
int index; // найденный индекс, то заполнить новый массив, два раза:
первый раз до index (i < index)
второй раз после Index (i > index)
Рейвол
2 / 2 / 0
Регистрация: 06.10.2012
Сообщений: 44
20.03.2013, 22:59  [ТС]     создать функцию удаления max и min эл-та массива #4
vbloodv, а разве если мы задаем новый массив со смещением, то разве не сохраняется ли информация о мин и макс элементах. Технический, программа не выдаст эти эл-ты, но в самой то проге они остаются, разве нет?

Добавлено через 1 минуту
Leshak, а что означает в данном случае команда:
size--;
это само смещение или что?
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
20.03.2013, 23:22     создать функцию удаления max и min эл-та массива #5
C++
1
for ( int i = index_min; i < Size - 1 ; i++ ) Mas[i] = Mas[i+1];
Смещение на 1 влево происходит здесь.
строчка
C++
1
Size--;
уменьшаем длину массива на 1.

Есть ещё вариант со сдвигом. О котором описали выше. Правда пару моментов в том посте мне не совсем ясны. Но попробую описать вариант без данной строчки

C++
1
Size--;
Рейвол
2 / 2 / 0
Регистрация: 06.10.2012
Сообщений: 44
20.03.2013, 23:41  [ТС]     создать функцию удаления max и min эл-та массива #6
Leshak, спасибо за помощь. все работает=)
Yandex
Объявления
20.03.2013, 23:41     создать функцию удаления max и min эл-та массива
Ответ Создать тему
Опции темы

Текущее время: 21:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru