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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2016, 21:48   #1
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию Помогите найти ошибку

Задача
Странный вывод

Вывести заданный массив на печать.

Входные данные: Выходные данные:
В первой строке входного потока задано натуральное число N - количество элементов целочисленного массива (N < 1000).
Во второй строке перечислены через пробел значения элементов массива Ai (-32000 < Ai < 32000)

Вывести в строку, через пробел, значения всех элементов заданного массива в следующем порядке: первым выводится первый элемент массива, вторым - последний, затем выводится второй элемент массива и предпоследний, и так далее.

Написала код, но массив выводится в прямом и обратном порядке. В чём ошибка?
#include <iostream>
#include <cmath>
#include <cstdio>

using namespace std;

int main()
{
int n;
scanf("%d",&n);
int m[n];
for(int i=0;i<n;i++)

scanf("%d",&m[i]);

for(int i=0;i<n;i++)
printf("%d\t%d\t",m[0+i], m[n-i-1]);


return 0;
}
taina1976 вне форума Ответить с цитированием
Старый 22.10.2016, 22:48   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
for(int i = 0; i< (n>>1); ++i){
   printf("%d\t%d\t", m[i], m[n-1 -i]);
}
// Если нечётное
if(n&1)
   printf("%d", m[n/2 +1]);
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 23.10.2016, 21:26   #3
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Спасибо! Но немножко не получается с нечётными числами.
taina1976 вне форума Ответить с цитированием
Старый 23.10.2016, 22:52   #4
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Что значит "не получается"?
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 24.10.2016, 22:07   #5
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Например:
Массив 7 чисел 1 2 3 4 5 6 7
Должно вывести 1 7 2 6 3 5 4
А выводит 1 7 2 6 3 5 5
taina1976 вне форума Ответить с цитированием
Старый 24.10.2016, 23:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а если так?
Код:
// Если нечётное
if(n&1)
   printf("%d", m[n/2]);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2016, 20:48   #7
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Спасибо! Помогло!
taina1976 вне форума Ответить с цитированием
Старый 28.10.2016, 23:07   #8
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Помогите вывести формулу
Не могу въехать в задачу!

Юный Викинг
Юный Викинг очень любит выполнять всякие квесты, которые помогают ему повысить уровень силы. Много квестов он уже выполнил, но его мечта - квест на Дракона.
Каждый квест имеет свой уровень сложности. И чтобы взять определенный квест, нужно иметь уровень силы, соответствующий уровню сложности данного квеста. При этом не допускается брать квесты, уровень сложности которых ниже, чем уровень силы воина.
Недавно гуляя по Лесу Духов Юный Викинг нашел древний артефакт, который при выполнении любого квеста увеличиаает уровень силы воина либо в q раз, либо на единицу (в зависимости от желания воина).
Теперь Юный Викинг хочет во что би то ни стало исполнить свою мечту. Квест на Дракона имеет уровень сложности n, а Юный Викинг имеет уровень сильї 1.
Помогите узнать Юному Викингу минимальное количество квестов, которые он должен выполнить, чтобы получить уровень силы n и иметь возможность взять квест на Дракона. При этом, если уровень силы Юного Викинга превысит n, то он не сможет взять квест на Дракона.
Входные данные:
В единственной строке входного потока записано 2 числа через пробел — n и q (1 < n и q<10^6)
Пример:
16 7
Выходные данные:
Вывести единственное число - минимальное количество квестов, которые должен выполнить Юный Викинг.
Пример:
4


На бумаге решила:
1+1=2 1 квест
2*7=14 2 квест
14+1=15 3 квест
15+1=16 4 квест

Последний раз редактировалось taina1976; 28.10.2016 в 23:10.
taina1976 вне форума Ответить с цитированием
Старый 29.10.2016, 15:46   #9
DFrost
 
Регистрация: 28.10.2016
Сообщений: 9
По умолчанию

Можно что-то типа этого, как вариант. Но убедись, что правильно считает:

Код:
#include <iostream>

using namespace std;


void step(unsigned n, unsigned q, unsigned & current_quest)
{	
	static unsigned current_warrior_power = 1;	

	if (q == 0) return;
	if (q == 1)
	{
		current_quest = n;
		return;
	}

	unsigned k    = n / q;
	unsigned fraq = n % q;	

	if (k == 0)
	{
		cout << "Quest start:" << endl;
		for (int i = 1; i < fraq; ++i)
		{
			cout << "current quest = " << ++current_quest <<
				" : " << "warrior choose power increase: +1" << 
				" Now his power: " << ++current_warrior_power << endl;			
		}		
	}
	else
	{
		step(k, q, current_quest);
								
		cout << "current quest = " << ++current_quest <<
			" : " << "warrior choose power increase: *" << q <<
			" Now his power: " << (current_warrior_power *= q) << endl;

		for (int i = 1; i <= fraq; ++i)
		{
			cout << "current quest = " << ++current_quest <<
				" : " << "warrior choose power increase: +1" <<
				" Now his power: " << ++current_warrior_power << endl;
		}		
	}
	return;
}

int main()
{
	unsigned n = 0; //dragon level
	unsigned q = 0; //warrior power increase

	unsigned min_quests = 0; // min quests required to be able to take dragon quest

	cout << "Enter n, q (n > 1, q < 10^6): " << endl;
	cin >> n >> q;

	if (cin.fail())
	{
		cout << "values not correct" << endl;
		return 1;
	}

	cout << "dragon level = " << n << ", warrior power increase = " << q << endl;

	step(n, q, min_quests);

	cout << "Min quests required = " << min_quests << endl;

	return 0;
}


THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
DFrost вне форума Ответить с цитированием
Старый 30.10.2016, 23:36   #10
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Спасибо! Но для меня это пока слишком... Я только начала изучать язык С++. Мне бы попроще...
taina1976 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Язык C]: В массиве числа образуют неубывающую последовательность. Найти количество различных чисел в массиве. Помогите найти ошибку. Yulia24* Помощь студентам 0 18.10.2016 20:41
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку Юлия123456 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.09.2016 06:12
Помогите найти ошибку AmaPC HTML и CSS 0 15.11.2015 19:39
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10