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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
egeoksar
1 / 1 / 0
Регистрация: 06.01.2013
Сообщений: 22
#1

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

07.03.2013, 22:18. Просмотров 407. Ответов 3
Метки нет (Все метки)

Неправильно присваивается значение массиву
Вот код:
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
Решил не тратить свои нервы и обратиться у профессионалам.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2013, 22:18     Неправильно присваивается значение массиву
Посмотрите здесь:

Объяснить причину и способы устранения ошибки (неправильно присваивается первый элемент массива) - C++
Объясните, пожалуйста ошибку. Неправильно присваивается первый элемент массива.Место ошибки указал в комментариях. #include &lt;iostream&gt;...

Не присваивается значение переменной - C++
Привет всем форумчанам! :) Собственно само задание в прикрепленных изображениях. Независимо от того, какое бы я значение ни ввел,...

Строка string. Не присваивается новое значение - C++
Есть строка: string str_in = &quot;A&quot;; Она используется в созданной мной функцией как один из аргументов: ...

Не присваивается значение элементу массива LPWSTR - C++
Есть кусок кода некоторой программы на C++ LPWSTR dir; GetModuleFileName(NULL, dir, 300); //dir='!'; int i, j=0; ...

Подскажите, почему значению функции присваивается true? Что сделать чтобы передавалось значение? - C++
#include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; template&lt;typename T&gt; T f1(T a, T b) { if (a == 0){ cout &lt;&lt; &quot;no...

Почему переменной присваивается произвольное значение("мусор")? - C++
Мой черновой вариант кода. Он очень черновой так что многое не суть важно, но переменной х я присваиваю значение 0. Если после приглашения...

Присвоение массиву значение массива - C++
Здравствуйте, помагите пожалуйсто, как присвоеть масиву значения масива. Ну вернее я хочю чтобы в масиве был бы масив. Ну или...

Как присвоить массиву значение суммы? - C++
Вычислить сумму элементов матрицы по столбцам . Найти наименьшую сумму. #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; ...

Как значение массива другому массиву? - C++
Здравствуйте! Вот код: #include&lt;iostream&gt; using namespace std; const int Max = 15; void reversit(char); int...

Не получается присвоить значение двумерному массиву char - C++
объявляю двумерный массив (массив массивов в char для хранения имен файлов) в cpp файле char m_fname ; я хочу инициализировать...

Как присвоить двумерному символьному массиву значение? - C++
Проблема в строке 18. Как будет правильно? #include &lt;cstdio&gt; int main() { char buf; int i,j,N,time,t,k,buftime,m; ...

Почему для поиска по массиву берется значение его первого элемента, а не ноль? - C++
Свем доброго времени суток и всех с праздником! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 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
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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     Неправильно присваивается значение массиву
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru