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

небольшая функция на c++ - C++

Восстановить пароль Регистрация
 
buGaGashka
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 6
23.12.2009, 17:55     небольшая функция на c++ #1
Необходимо создать функцию,которая меняет элементы массива по логике первый с последним,второй с предпоследним и т.д. начиная с середины ... тобишь надо начать с эл-та n/2 (n- кол-во эл-ов в массиве) и поменять его на n/2+1(если n-четное число) или на n/2+2 (если n-нечетное число) ... Ошибка в общем такая ... Если вводятся 5 чисел : 70,1,35,68,42 ... то он выводит: -33686019,42,68,35,1 ... А если вводятся 6 чисел: 25,70,1,35,68,42 ... то он выводит: 0,-33686019,42,68,35,1

Код:

Код
void namesta(int *A, int n)
{
	if(n%1)
	{
		int b;
		b=n/2+2;
		for(int i=n/2;i>=0;i--)
		{
			swap(A[i],A[b]);b++;
		}
	}
	else
	{
		int v;
		v=n/2+1;
		for(int i=n/2;i>=0;i--)
		{
			swap(A[i],A[v]);v++;
		}
	}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2009, 17:55     небольшая функция на c++
Посмотрите здесь:

C++ Небольшая помощь
Небольшая праблемка C++
C++ Небольшая проблемка)
Небольшая проблема с классами C++
C++ Небольшая задачка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BOR1K
 Аватар для BOR1K
14 / 14 / 4
Регистрация: 19.09.2009
Сообщений: 289
23.12.2009, 17:58     небольшая функция на c++ #2
такая же задачка у меня была, так и не додумался как сделать(( и никто здесь не подсказал.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
23.12.2009, 18:05     небольшая функция на c++ #3
Цитата Сообщение от BOR1K Посмотреть сообщение
такая же задачка у меня была, так и не додумался как сделать(( и никто здесь не подсказал.
эт ты зря, такие темы были и не раз и я скидывал кому-то вот это
C++
1
2
3
4
5
6
7
8
9
10
11
void Reverse(int *begin, int *end)
{ 
    int temp;
    while (end>begin)
    {
        temp = *begin;
        *begin = *end;
        *end = temp;
        begin++; end--;
    }
} // end Reverse
buGaGashka
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 6
23.12.2009, 18:18  [ТС]     небольшая функция на c++ #4
TanT, насколько я понял ты мне кинул прогу эту же логику только начиная с начла и конца ... А мне обязательно надо,чтобы начиналось с середины,т.к. такой вариант у меня уже есть ...
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
23.12.2009, 18:37     небольшая функция на c++ #5
если правильно понял то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void namesta(int *A, int n)
{
    if(n%2)
    {
        int b;
        b=n/2;
        for(int i=n/2;--i>0;)
        {
            swap(A[i],A[b]); b++;
        }
    }
    else
    {
        int v;
        v=n/2;
        for(int i=n/2;--i>=0;)
        {
            swap(A[i],A[v]);v++;
        }
    }
}
buGaGashka
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 6
23.12.2009, 19:02  [ТС]     небольшая функция на c++ #6
TanT, в этом варианте для четного количества чисел все работает нормально,а для нечетного неправильно меняет.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
23.12.2009, 19:06     небольшая функция на c++ #7
Цитата Сообщение от buGaGashka Посмотреть сообщение
TanT, в этом варианте для четного количества чисел все работает нормально,а для нечетного неправильно меняет.
пример дай, не совсем понял твои объяснения. по моей логике всё правильно
buGaGashka
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 6
23.12.2009, 19:15  [ТС]     небольшая функция на c++ #8
TanT, если вводить четное количество элементов он правильно переварачивает массив,если мы ввели: 21,61,81,41,29,23,то получим: 23,29,41,81,61,21
а если вводить нечетное количество элементов: 61,81,41,29,23,то почему-то получаем: 61,41,81,29,23 ... хотя должно было получиться 23,29,41,81,61 ... понятно ?
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
23.12.2009, 19:21     небольшая функция на c++ #9
строки 6 и 7 моего кода заменить на
C++
1
2
    b=n/2+1;
        for(int i=n/2;--i>=0;)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2009, 19:27     небольшая функция на c++
Еще ссылки по теме:

C++ Небольшая сложность
Небольшая функция, удаляющая однаковые букви в слове C++

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

Или воспользуйтесь поиском по форуму:
buGaGashka
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 6
23.12.2009, 19:27  [ТС]     небольшая функция на c++ #10
TanT, Спасибо! Сработало!
Yandex
Объявления
23.12.2009, 19:27     небольшая функция на c++
Ответ Создать тему
Опции темы

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