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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
#1

Почему функция не удаляет минимальный элемент - C++

19.05.2012, 22:36. Просмотров 452. Ответов 12
Метки нет (Все метки)

Вот кусок функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void second::Udal_Min()
{
    for(int i=0;i<n;i++)\
    {
        if (*(x+i)==min)
        {if (i==(n-1))
        {
            *(x+i)=NULL;
            n--;
        
        break;
        }
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 22:36     Почему функция не удаляет минимальный элемент
Посмотрите здесь:

Написать программу:функция что возвращает элемент массива,и удаляет этот элемент з массива - C++
Написать программу:функция что возвращает элемент массива,и удаляет этот элемент з массива помогите написать!!

Стеки (функция, которая удаляет из стека первый отрицательный элемент, если такой есть) - C++
Здравствуйте! Помогите пожалуйста разработать функцию, которая удаляет из стека первый отрицательный элемент, если такой есть. Если не...

Функция находящая минимальный элемент целочисленного массива - C++
При вводе исходного массива вначале следует ввести его размер (одно число для одномерных массивов, два числа — количество строк и столбцов...

функция, которая определяет минимальный элемент массива - C++
Напишите функцию, которая определяет минимальный элемент массива (его значение и номер). Внутри функции запрещено использовать команды cin...

Функция: найти максимальный и минимальный элемент двумерного массива - C++
Найти максимальный и минимальный элемент двумерного массива, нужно это оформить через функцию. Как это сделать?

Составить программу, в которой функция находит минимальный элемент в произвольном одномерном массиве - C++
Составить программу, в которой функция находит минимальный элемент в произвольном одномерном массиве.

Функция: рассчитать среднее арифметическое отрицательных элементов массиве, и заменить им минимальный элемент - C++
Написать программу в С++ ЖЕЛАТЕЛЬНО С КОММЕНТАРИЯМИ: Написать функцию, которая рассчитывает среднее арифметическое отрицательных...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
19.05.2012, 22:50     Почему функция не удаляет минимальный элемент #2
А сам то словами можешь объяснить что она делает?

Цитата Сообщение от Vadim8063 Посмотреть сообщение
*(x+i)
чем тебя не устраивает x[i]?

Добавлено через 1 минуту
Цитата Сообщение от Vadim8063 Посмотреть сообщение
x
Цитата Сообщение от Vadim8063 Посмотреть сообщение
n
Это что за переменные?
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 22:54  [ТС]     Почему функция не удаляет минимальный элемент #3
Дело в том что эта функция находится в дочернем классе и x[i] обозначается с помощью указателя как *(x+i) n-это количество эл. массива.
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
19.05.2012, 22:57     Почему функция не удаляет минимальный элемент #4
Цитата Сообщение от Vadim8063 Посмотреть сообщение
x[i] обозначается с помощью указателя как *(x+i)
А это не одно и тоже???
ты не ответил на главный вопрос. Опиши словами что делает твой цикл???
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 23:03  [ТС]     Почему функция не удаляет минимальный элемент #5
Удаляет минимальный элемент...

Добавлено через 4 минуты
Ну по крайней мере должен удалять... Ну функция этого не делает
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
19.05.2012, 23:16     Почему функция не удаляет минимальный элемент #6
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Удаляет минимальный элемент...
хотелось бы верить
и так алгоритм своего цикла ты рассказать не можешь.
тогда я расскажу
твой цикл
Цитата Сообщение от Vadim8063 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
for(int i=0;i<n;i++)\
 {
 if (*(x+i)==min)
 {if (i==(n-1))
 {
 *(x+i)=NULL;
 n--;
break;
 }
 }
 }
}
перепишем более понятным языком
C++
1
2
3
4
5
6
7
8
9
 for(int i=0;i<n;i++)
    {
        if ((x[i]==min  && i==(n-1))
        {
            x[i]=NULL;
            n--;
           break;
         }
    }
и сразу станет видно что в блок if мы заходим только на последнем элементе и если он минимален
соответственно break здесь лишний
я тебе больше скажу и цикл здесь лишний
все что он делает описывается тремя строками
C++
1
2
3
4
5
  if  (x[n-1]==min)
           {  
            x[n-1]=NULL;
            n--;
             }
Добавлено через 1 минуту
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Ну по крайней мере должен удалять...
и изменять размер массива

Добавлено через 1 минуту
и сильно подозреваю что тебе нужен не NULL а 0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 23:19  [ТС]     Почему функция не удаляет минимальный элемент #7
Не удаляет
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
19.05.2012, 23:21     Почему функция не удаляет минимальный элемент #8
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Не удаляет
Что не удаляет???
я тебе показал что можно удалить только последний элемент если он минимальный
приведи пример своего массива в исходном варианте и что должно получится после этой функции
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 23:24  [ТС]     Почему функция не удаляет минимальный элемент #9
Ну как так можно удалить только последний элемент?
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
19.05.2012, 23:26     Почему функция не удаляет минимальный элемент #10
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Ну как так можно удалить только последний элемент?
наверно потому что ты так написал
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 23:28  [ТС]     Почему функция не удаляет минимальный элемент #11
second.cpp
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
#include "StdAfx.h"
#include "second.h"
#include <iostream>
using namespace std;
second::second()
{n=10;
    cout<<"\n Rabotal konstruktor 2"<<endl;
}
void second::Udal_Min()
{
    for(int i=0;i<n;i++)
    {
      if  (x[n-1]==min)
           {  
            x[n-1]=0;
            n--;
             }
        }
        
    }
 
 
second::~second()
{
    cout<<"\n Rabotal Destruktor 2"<<endl;
}
\\main.cpp
#include "stdafx.h"
#include "second.h"
#include "third.h"
#include "stdlib.h"
 
void main()
{
Array a_1;
a_1.Printed ();
a_1.Find_Summa ();
a_1.Find_Min();
a_1.Printed_Summa ();
a_1.Printed_Min();
a_1.Umnozh_Min();
a_1.Printed();
a_1.Find_Summa();
a_1.Printed_Summa();
second a_2;
a_2.Printed();
a_2.Find_Summa();
a_2.Printed_Summa();
a_2.Udal_Min();
a_2.Printed();
a_2.Find_Min();
a_2.Printed_Min();
a_2.Find_Summa();
a_2.Printed_Summa();
third a_3;
a_3.Printed();
a_3.Sum_Polozh();
a_3.Printed_Summa();
system ("pause");
}
a_2.Udal_Min(); - Должна из массива удалить min элемент a_2.Find_Min();-расчитывает этот мин элемент
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
19.05.2012, 23:43     Почему функция не удаляет минимальный элемент #12
Цитата Сообщение от Vadim8063 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
for(int i=0;i<n;i++)
 {
 if (x[n-1]==min)
 { 
 x[n-1]=0;
 n--;
 }
 }
Ты опять пишешь цикл который здесь не нужен
зачем ты уменьшаешь размер

Цитата Сообщение от Vadim8063 Посмотреть сообщение
n--;
вот так удаляется первый минимальный элемент
C++
1
2
3
4
5
6
7
8
9
10
11
12
// ищем минимум
int min=x[0];
  for(int i;i<n;i++)
      if(x[i]<min)
          min=x[i];
//удаляем 
    for(int i;i<n;i++)
        if(x[i]==min)
             {
           x[i]=0;
           break;// нашли удалили выходим из цикла
             }
вот так удаляются все
C++
1
2
3
4
5
6
7
8
9
// ищем минимум
int min=x[0];
  for(int i;i<n;i++)
      if(x[i]<min)
          min=x[i];
//удаляем 
    for(int i;i<n;i++)
        if(x[i]==min)
               x[i]=0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 23:49     Почему функция не удаляет минимальный элемент
Еще ссылки по теме:

Решить уравнение p*x2+d*x+r=0, где p - минимальный элемент матрицы A; d –минимальный элемент матрицы B; r - минимальный элемент матрицы C. - C++
Заданы три матрицы A, B, C. Решить уравнение p*x2+d*x+r=0, где p - минимальный элемент матрицы A; d –минимальный элемент матрицы B; r -...

Почему C++ программа не удаляет саму себя? - C++
Имеется следующий код (файл 01del.cpp): #include &lt;windows.h&gt; using namespace std; int main() { system(&quot;del /q...

Почему управляющая последовательность \b не удаляет предыдущий символ? - C++
{ for (i0; i &lt; view.N; i++) { for (j0; j &lt; view.M; j++) { os &lt;&lt; view.element &lt;&lt; &quot; &quot;; os &lt;&lt; &quot;\b&quot;; //удаляет } ...

Функция удаляет начальные пробелы из строки... - C++
Написать функцию которая удаляет начальные пробелы из строки, полученной в качестве аргумента.. В паскале function LTrim(st:...

Функция удаляет из строки заданное количество символов - C++
Задание: Функция удаляет из строки заданное количество символов, начиная с заданной позиции. Помогите пожалуйста, буду очень благодарен.


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

Или воспользуйтесь поиском по форуму:
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 23:49  [ТС]     Почему функция не удаляет минимальный элемент #13
Блин Это не в цикле проблема это я в главной функции не на то место прописал функцию.
Yandex
Объявления
19.05.2012, 23:49     Почему функция не удаляет минимальный элемент
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru