0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 2
1

Добавление чисел Фибоначчи в начало динамического массива

10.01.2020, 22:02. Показов 984. Ответов 3
Метки нет (Все метки)

Доброго времени суток, товарищи программисты.

В общем, нужно с помощью calloс создать одномерный массив, затем заполнить его рандомными числами, а после добавить в начало этого массива введенное с клавиатуры кол-во чисел Фибоначчи.
Я написал код, но при больших значениях программа вылетает, в чём ошибка и что вы вообще посоветуете подкорректировать?

И оцените сам код, дайте максимально конструктивную критику : что я использую не так, что вообще не нужно использовать...
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
void FillArray(int *array,int size);
void OutArray(int *array,int size);
int Fib(int amount);
 
int main()
{
    srand(time(NULL));
    int size = 0, amount = 0;
    int* first = 0;
    cout << "Enter size : ";
    cin >> size;
    first = (int*) calloc(size, sizeof(int));
    FillArray(first, size);
    OutArray(first, size);
    cout << "How many Fib's number do you want to add : ";
    cin >> amount;
    int n_s = amount + size;
// size = 3, n_s = 7;
    first = (int*) realloc(first,n_s * sizeof(int));
    if(first == NULL){
        cout << "Memory is not available!" << endl;
        free(first);
    }
        for(int a = n_s, i = 0, j = size; i <= size; i++, j--, a--){
            *(first + a)=*(first+j);
            *(first+j) = 0;
        }
 
        for(int i = 0; i < amount; i++){
            *(first+i) = Fib(i);
        }
    OutArray(first, n_s);
    int count  = 0;
    free(first);
    first = NULL;
}
 
void FillArray(int *array,int size){
    for(int i = 0; i < size; i++){
        *(array + i ) = rand() % 100;
    }
}
 
void OutArray(int *array,int size){
    for(int i = 0; i < size; i++){
        cout << *(array + i) << " ";
    }
    cout << endl;
}
 
int Fib(int amount){
    if(amount == 0)
        return 0;
    if(amount == 1)
        return 1;
    else
        return Fib(amount - 1 ) + Fib(amount - 2);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2020, 22:02
Ответы с готовыми решениями:

Добавление элемента в начало динамического массива
Господа подскажите пожалуйста ошибку в коде. Не верно работает добавление нового элемента в начало...

Генерирование чисел Фибоначчи посредством динамического программирования с С++ на Python
Помогите перевести программу с C++ на Python , условия задачи у меня было( Генерирование чисел...

Добавить элементы в начало динамического массива
Доброго дня,мне нужна помощь с задачей по динамичным массивам. Суть задания:для начала нужно...

Добавление и удаление элемента динамического массива
Подскажите какие существую способы добавления и удалеия элемента одномерного динамического...

3
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
11.01.2020, 00:06 2
calloc, malloc, хренлок - си
Идите лучше на раздел Си для начинающих
0
Диссидент
Эксперт C
26836 / 16744 / 3668
Регистрация: 24.12.2010
Сообщений: 37,483
11.01.2020, 11:02 3
Цитата Сообщение от yyossemite Посмотреть сообщение
if(first == NULL){
        cout << "Memory is not available!" << endl;
        free(first); // ОШИБКА!!! Что ты освобождаешь?
    }
Строки 29-32 Переписывать надо начиная с конца. Иначе можно затереть нужноею
Строки 56-63 Считать так числа Фибоначчи - великий грех!
0
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 2
11.01.2020, 22:32  [ТС] 4
Спасибо. А как лучше тогда считать числа Фибоначчи?

И не совсем понял о строках 29-32, можно немного подробнее?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2020, 22:32
Помогаю со студенческими работами здесь

Добавление элемента в конец динамического массива!
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;malloc.h&gt; using namespace std; int main()...

Добавление элемента в конец динамического массива
Не понимаю почему у меня не выходит данный код (еще только учусь) void pushBack(int* arr, int*...

Добавление К элементов в начало массива
Есть такой код #include &lt;vcl.h&gt; #pragma hdrstop #include &lt;conio.h&gt; #include &lt;stdlib.h&gt;...

Добавление элементов в начало массива
Нужно добавить некоторое количество элементов в начало массива. Проблема заключается в том, что в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru