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

Неправильно присваивается значение массиву - C++

Восстановить пароль Регистрация
 
egeoksar
1 / 1 / 0
Регистрация: 06.01.2013
Сообщений: 22
07.03.2013, 22:18     Неправильно присваивается значение массиву #1
Неправильно присваивается значение массиву
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
    int n,p = 1,v = 1;
    cin >> n;
    int m[n];
    for (int i = 0; i < n; i++)
    {
        m[i] = p;
        m[i+1] = v;
        p = p + v;
        v = p + v;
    }
    for (int i = 0; i < n; i++)
        cout << m[i] << " ";
    return 0;
}
Ввожу 5. Массиву присваивается значение только переменной p. Не понимаю почему, но на переменную v программе как-то вообще наплевать.
Вот вывод программы:
Код
1 2 5 13 34
Решил не тратить свои нервы и обратиться у профессионалам.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5344 / 1727 / 320
Регистрация: 10.12.2010
Сообщений: 5,111
Записей в блоге: 3
07.03.2013, 22:30     Неправильно присваивается значение массиву #2
Присваивается все правильно, только вы за границу массива вылезаете, а так ничего. Посмотрите на подробный вывод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using namespace std;
 
int main()
{
    int n,p = 1,v = 1;
    cin >> n;
    int *m=new int[n];
    for (int i = 0; i < n-1; i++)/* особое внимание на новое условие выхода из цикла */
    {
        cout<<"m["<<i<<"]="<<p<<endl;
        cout<<"m["<<i+1<<"]="<<v<<endl;
        m[i] = p;
        m[i+1] = v;
        cout<<"New p="<<p+v<<"="<<p<<"+"<<v<<endl;
        p = p + v;
        v = p + v;
        cout<<"New v="<<p+v<<"="<<p<<"+"<<v<<endl;
    }
    for (int i = 0; i < n; i++)
        cout << m[i] << " ";
    delete []m;
    return 0;
}
Код
5
m[0]=1
m[1]=1
New p=2=1+1
New v=5=2+3
m[1]=2
m[2]=3
New p=5=2+3
New v=13=5+8
m[2]=5
m[3]=8
New p=13=5+8
New v=34=13+21
m[3]=13
m[4]=21
New p=34=13+21
New v=89=34+55
1 2 5 13 21 Для продолжения нажмите любую клавишу . . .
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.03.2013, 22:34     Неправильно присваивается значение массиву #3
Запись как у Вас в 9 строке не соответствует стандарту. Если не ошибаюсь это какие-то расшиения gcc, когда можно задавать размер стекового массива в рантайме.
egeoksar
1 / 1 / 0
Регистрация: 06.01.2013
Сообщений: 22
08.03.2013, 00:31  [ТС]     Неправильно присваивается значение массиву #4
Программа должна записывать в массив числа Фибоначи. Если выводить значения переменных все правильно. Но нужно чтобы записывалось в массив.

Добавлено через 1 минуту
Всем спасибо! Уже как-нибудь сам разберусь

Добавлено через 5 минут
Изменил условие цикла всё заработало
C++
1
2
3
4
5
6
7
for (int i = 0; i < n; i = i + 2)
    {
        m[i] = p;
        m[i+1] = v;
        p = p + v;
        v = p + v;
    }
Yandex
Объявления
08.03.2013, 00:31     Неправильно присваивается значение массиву
Ответ Создать тему
Опции темы

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