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

Теоретически понимаю, а как записать - непойму - C++

Восстановить пароль Регистрация
 
Маринчик
 Аватар для Маринчик
0 / 0 / 0
Регистрация: 12.10.2012
Сообщений: 123
23.11.2012, 23:25     Теоретически понимаю, а как записать - непойму #1
дан массив случайных чисел B. все необходимые с ним действия сделала. кроме одного.. Нужно записать элементы массива B (50) с индексами 1,4, 9,16...49 подряд в массив Р(7).


Понимаю что это определенная арифметическая прогрессия..(разность (1-4)=3, (4-9)=5 (9-16)=7 и т.д.,чтоэти 3,5,7 - увеличиваются через 2) Понимаю что цикл должен быть както изменен ,два раза наверное..
А как записать на С++ - непойму.
Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 23:25     Теоретически понимаю, а как записать - непойму
Посмотрите здесь:

C++ классы непойму что с конструктором
C++ Непойму про компиляторы
Поиск символа - непойму C++
Найди серединку. Не понимаю как сделать и как начать C++
непойму где ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,047
23.11.2012, 23:31     Теоретически понимаю, а как записать - непойму #2
Цитата Сообщение от Маринчик Посмотреть сообщение
чтоэти 3,5,7 - увеличиваются через 2)
не полностью приведен ряд это может быть и простые числа
но если увеличивается на два то может быть так
C++
1
for(int i=1,j=3;i<50;i+=j,j+=2)
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
23.11.2012, 23:33     Теоретически понимаю, а как записать - непойму #3
Разуй глаза, убери цветы от них... Ну, ты б хотя бы то что это ряд квадратов заметил...
C++
1
2
3
4
5
6
7
int id=1;
int id_2=id*id;
while(id_2<50){
  B[id]=A[id_2];
  id++;
  id_2=id*id;
}
Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
Понимаю что это определенная арифметическая прогрессия..(разность (1-4)=3, (4-9)=5 (9-16)=7 и т.д.,чтоэти 3,5,7 - увеличиваются через 2) Понимаю что цикл должен быть както изменен ,два раза наверное..
А как записать на С++ - непойму.
Помогите пожалуйста
чтоэти 3,5,7 - увеличиваются через 2)
не полностью приведен ряд это может быть и простые числа
но если увеличивается на два то может быть так
for(int i=1,j=3;i<50;i+=j,j+=2)
Да о чём вы оба? Это просто ряд квадратов!
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,047
23.11.2012, 23:37     Теоретически понимаю, а как записать - непойму #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ну, ты б хотя бы то что это ряд квадратов заметил...
не заметил виноват
пошел на поводу
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
23.11.2012, 23:38     Теоретически понимаю, а как записать - непойму #5
Грубо и без проверок на выход за пределы массива P:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main()
{
    const int N = 50;
    int B[N], P[7];
    // формируем массив B
    for (int i=0; i < N; i++)
        B[i] = i;
 
    int index = 0;
    for (int i=1; i < N; i++)
    {
        P[index++] = B[i];
        i += index * 2;
    }
 
    for (int i=0; i < 7; i++)
        std::cout<< P[i]<< " ";
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.11.2012, 23:39     Теоретически понимаю, а как записать - непойму #6
C++
1
2
for (int i = 1, j = 0; j < 7; i++, j++)
        P[j] = B[i * i];
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,047
23.11.2012, 23:42     Теоретически понимаю, а как записать - непойму #7
но самое смешное то что ТС тоже вывела правильную закономерность( по крайней мере на данном участке)
(1 4 ) 3
(4 9 ) 5
(9 16 ) 7
(16 25 ) 9
(25 36 ) 11
(36 49 ) 13

как видишь разница увеличивается на 2
интересно это просто совпало или это закономерность ?
Маринчик
 Аватар для Маринчик
0 / 0 / 0
Регистрация: 12.10.2012
Сообщений: 123
24.11.2012, 00:20  [ТС]     Теоретически понимаю, а как записать - непойму #8
Цитата Сообщение от ValeryS Посмотреть сообщение

как видишь разница увеличивается на 2
интересно это просто совпало или это закономерность ?
вот мне почему то эта закономерность-совпадение больше кинулась в глазанамудрила наверное..
незаметила что все проще
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 2
Завершенные тесты: 1
24.11.2012, 00:37     Теоретически понимаю, а как записать - непойму #9
Цитата Сообщение от ValeryS Посмотреть сообщение
интересно это просто совпало или это закономерность ?
так раскладывается любой квадрат
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 2
Завершенные тесты: 1
24.11.2012, 00:40     Теоретически понимаю, а как записать - непойму #10
Название: Безымянный.jpg
Просмотров: 49

Размер: 3.6 Кб
Для целых чисел имеется ввиду
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2012, 07:44     Теоретически понимаю, а как записать - непойму
Еще ссылки по теме:

C++ Не понимаю как сделать
C++ Как теоретически (не программно) посчитать количество сравнений и обменов в пузырьковой сортировке?
Могут ли теоретически существовать методы с неопределенным числом аргументов? C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,047
24.11.2012, 07:44     Теоретически понимаю, а как записать - непойму #11
Croessmah, спасибо но я имел ввиду другое

вот это
((x+2)^2-(x+1)^2)-((x+1)^2-x^2)=a
(x^2+4x+4-x^2-2x-1)-(x^2+2x+1-x^2)=a
(2x+3)-(2x+1) =a
2=a;
как видим разница разниц всегда равна 2
и по сему цикл
C++
1
for(int i=1,j=3;i<50;i+=j,j+=2)
имеет место быть
и он может быть быстрее чем
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
int id=1;
int id_2=id*id;
while(id_2<50){
* B[id]=A[id_2];
* id++;
* id_2=id*id;
}
поскольку нет умножения
Но утверждать не буду, проверять нужно
Yandex
Объявления
24.11.2012, 07:44     Теоретически понимаю, а как записать - непойму
Ответ Создать тему
Опции темы

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