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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 20:12   #1
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию Удаление последнего 0 из массива.С++

Нужно удалить последний нулевой элемент из массива.Я написал для этого функцию но она выдает логическую ошибку.Буду очень благодарен если вы исправите ее в моем коде.)

Вот функция:
Код:
void destroy_zero( int n, int*a, int*b )
{
    int i, count = 0;
    for(i=0; i<n; i++)
    {
        if(a[i] == 0)
        {
            count++;
        }
            if(count == count-1)
            b[i] = a[i];
            cout << b[i] << " ";
    }
}
}
DIQUON вне форума Ответить с цитированием
Старый 23.12.2012, 20:20   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

(count == count-1) всегда false
Smogg вне форума Ответить с цитированием
Старый 23.12.2012, 20:27   #3
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

то есть?что я должен подправить чтобы начало нормально работать?
DIQUON вне форума Ответить с цитированием
Старый 23.12.2012, 20:43   #4
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

Код:
void destroy_zero(const int n, int *const a, int *const b )
{
	int index = 0 , k = 0;
	int * const arrayEnd = a + n;
	for (int j = 0; a+j < arrayEnd ; ++j)
		if (!(*(a+j)))
			index = j;
	for (int j=0 ; a+j < arrayEnd ; ++j )
		if (j == index) continue;
		else 
		{	
			*(b+k) = *(a+j) ;
			k++;
		}
}
Ну или тот же вариант, только поменьше чуть:
Код:
void destroy_zero(const int n, int *const a, int *b )
{
	int k = 0, j = n - 1;
	for ( ; *(a+j) ; j--);
	for (int i=0 ; i<n ; ++i )
		if (i == j) continue;
		else 
		{	
			*(b+k) = *(a+i) ;
			k++;
		}
}

Последний раз редактировалось tools; 23.12.2012 в 20:54.
tools вне форума Ответить с цитированием
Старый 23.12.2012, 20:48   #5
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Цитата:
Сообщение от tools Посмотреть сообщение
Код:
void destroy_zero(const int n, int *const a, int *const b )
{
	int index = 0 , k = 0;
	int * const arrayEnd = a + n;
	for (int j = 0; a+j < arrayEnd ; ++j)
		if (!(*(a+j)))
			index = j;
	for (int j=0 ; a+j < arrayEnd ; ++j )
		if (j == index) continue;
		else 
		{	
			*(b+k) = *(a+j) ;
			k++;
		}
}
И как в этой функции вывести результат?
DIQUON вне форума Ответить с цитированием
Старый 23.12.2012, 20:56   #6
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

отдельно напишите функцию вывода массива, там всего пару строк будет
tools вне форума Ответить с цитированием
Старый 23.12.2012, 21:03   #7
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Но какой массив выводить? а или б?

такая пойдет?
Код:
void Output ( int n, int*a )
{
        int i;
        for (i=0; i<n; i++)
		  std :: cout << a[i] << " ";
		  std :: cout << std::endl;
}
DIQUON вне форума Ответить с цитированием
Старый 23.12.2012, 21:09   #8
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

b выводить
tools вне форума Ответить с цитированием
Старый 23.12.2012, 21:36   #9
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

но что будет,b[i] или как-то по другому?
DIQUON вне форума Ответить с цитированием
Старый 23.12.2012, 22:09   #10
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

функцию не меняете никак, просто при вызове, в параметре передаете b
tools вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление последнего символа zorra123 C# (си шарп) 5 26.01.2014 01:06
Удаление последнего элемента списка(C) labrador Помощь студентам 0 23.05.2012 21:25
Одномерные массивы. Определить значение последнего нечетного элемента массива BCxTIM Помощь студентам 5 13.11.2011 12:25
Дан одномерный массив. Найдите сумму максимального и последнего элементов массива. Delphi. buyaka cha Помощь студентам 4 15.11.2010 13:46
сумму элементов массива, расположенных после последнего элемента, равного нулю. R@Ziel Помощь студентам 2 17.12.2009 23:44