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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2017, 18:41   #1
jinos
Пользователь
 
Регистрация: 12.11.2014
Сообщений: 20
По умолчанию Нужна помощь с задачей на С++

Помогите пожалуйста.
Дан одномерный массив, необходимо заполнить элементы массива с четными индексами степенями двойки (1, 2, 4, 8, 16, …),
с нечетными индексами – степенями тройки (3, 9, 27, …).

Вот, что я написал:

Код:
#include <iostream>
#include <locale>
#include <cstdlib>
#include <cmath>
using namespace std;

int main () {
    setlocale(LC_ALL, "RUSSIAN");


const int N = 16;
int a[N]{0}; // создаем массив и инициализируем нулями

for(int i = 0; i < N; i++) {
        if(i % 2 == 0) {
            a[i] = pow(2,i);
        }else {
            a[i] = pow(3,i);
        }
     cout<<"a["<<i<<"]: "<< a[i] << endl;       //выводим на экран сообщение, a[i]:
}

return 0;
}
По заданию, на выходе должно получиться вот что:
[ 3 2 9 4 27 8 81 16 243 32 729 64 2187 128 6561 256 ]
Но у меня получается так (индексы я для себя выводил)
Изображения
Тип файла: png Screenshot_1.png (14.5 Кб, 75 просмотров)
jinos вне форума Ответить с цитированием
Старый 25.09.2017, 07:20   #2
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Код:
for (int i = 1; i <= N / 2; i++) {
		a[(i - 1) * 2] = pow(3, i);
		a[(i * 2) - 1] = (1 << i);
	}

	for (int i = 0; i < N; i++)
		cout << "a[" << i << "]: " << a[i] << endl;
Мановар вне форума Ответить с цитированием
Старый 25.09.2017, 07:34   #3
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от Мановар Посмотреть сообщение
Код:
for (int i = 1; i <= N / 2; i++) {
		a[(i - 1) * 2] = pow(3, i);
		a[(i * 2) - 1] = (1 << i);
	}

	for (int i = 0; i < N; i++)
		cout << "a[" << i << "]: " << a[i] << endl;


Код:

for (size_t i = 0, p2 = 1, p3 = 1; i < N - 1; i+=2, p3*=3, p2*=2) {
		a[i + 1] = p3;
		a[i] = p2;
	}
alexzk вне форума Ответить с цитированием
Старый 25.09.2017, 08:41   #4
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

И получаем a[0] = 1, a[1] = 1.
Тогда уж, что бы заданию соответствовало
Код:
for (size_t i = 0, p2 = 2, p3 = 3; i < N - 1; i += 2, p3 *= 3, p2 *= 2) {
		a[i + 1] = p2;
		a[i] = p3;
	}
Мановар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срочно нужна помощь с задачей Вадим6297 Помощь студентам 2 19.01.2016 12:40
Срочно нужна помощь с задачей Abubakr9 Помощь студентам 7 19.01.2016 09:11
Нужна помощь с задачей в СИ (обычном) igoriok999 Общие вопросы C/C++ 1 07.06.2014 17:45
НУжна помощь с задачей. ДЕлфи stasig Помощь студентам 0 03.05.2009 16:35