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

Заполнить массив так, чтобы каждый элемент был равен сумме двух предыдущих элементов этого массива

13.07.2020, 19:08. Показов 3137. Ответов 4
Метки нет (Все метки)

Добрый день. Никак не могу понять в чем ошибка. Почему не заполняется массив дальше 1 первой строки?


**Напишите программу, которая создает динамический двухмерный массив и заполняет его по следующему принципу:
пользователь вводит два числа (например, 3 и 5), первый элемент массива принимает значение первого числа (3),
второй элемент – значение второго числа (5), третий элемент массива – сумма первого и второго элементов,
четвертый элемент массива – сумма второго и третьего и т.д.
Созданный массив вывести на экран.




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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <conio.h> // time(), clock()
#include <iomanip>
#include <Windows.h>
 
using namespace std;
 
#define RAND(min,max) (rand()%((max)-(min)+1)+(min))
//#define MyType unsigned long long
typedef unsigned long long  ullong;
typedef ullong              MyType;
 
void InitMas(MyType** pArr, int Row, int Col);
void PrintMas(MyType** pArr, int Row, int Col);
 
 
int main()
{
    setlocale(LC_ALL, "Rus");
    srand(time(0));
 
    int Row, Col;
    cout << "Введите размеры массива (row, col): ";
    cin >> Row >> Col;
    MyType** Mas;
 
 
    //int*** *pmas = new int*** [10]
    Mas = new MyType * [Row];
    for (int i = 0; i < Row; i++) {
        Mas[i] = new MyType[Col];
        //int* mas = new int[Size];
    }
 
 
 
    InitMas(Mas, Row, Col);
 
 
 
    PrintMas(Mas, Row, Col);
 
 
    for (int i = 0; i < Row; i++) {
        delete[] Mas[i];
    }
 
    delete[] Mas;
 
    cin.get(); cin.get();
    return 0;
}
 
 
 
void InitMas(MyType** pArr, int Row, int Col)
{
    cout << "Введите первый и второй элемент массива: ";
    
 
    MyType *p1 = *pArr;
    cin >> *p1;
    ++p1;
    cin >> *p1;
    ++p1;
    int i, j;
    for (i = 0; i < Row; i++) {
        if (i == 0) {
            for (int j = 2; j < Col; j++) {
                *p1 = *(p1 - 1) + *(p1 -2);
                ++p1;
            }
        }
        else if (i != 0) {
            for (int j = 0; j < Col; j++) {
                *p1 = j;
                ++p1;
            }
        }
    }
}
 
void PrintMas(MyType** pArr, int Row, int Col)
{
    for (int i = 0; i < Row; i++) {
        for (int j = 0; j < Col; j++) {
            cout << setw(3) << pArr[i][j] << " ";
        }
        cout << endl;
    }
 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2020, 19:08
Ответы с готовыми решениями:

Заполнить массив N случайными числами, так чтобы каждый элемент в массиве был равен сумме элементов его соседей слева
Массивы должны быть рандомные

Сформировать массив так, чтобы каждый элемент, начиная с третьего, был равен произведеннию двух предыдущих
uses crt; var a:array of integer; i,n:integer; begin writeln (' Введите длину массива');...

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

Сформировать массив n элементов где каждый элемент массива равен сумме двух предыдущих
Сформировать массив n элементов где каждый элемент массива равен сумме двух предыдущих элементов,...

4
1971 / 1096 / 467
Регистрация: 11.10.2018
Сообщений: 5,611
13.07.2020, 19:16 2
Цитата Сообщение от Astana01 Посмотреть сообщение
пользователь вводит два числа (например, 3 и 5), первый элемент массива принимает значение первого числа (3),
второй элемент – значение второго числа (5), третий элемент массива – сумма первого и второго элементов,
четвертый элемент массива – сумма второго и третьего и т.д.
- в смысле так по строкам должен проходить?
0
С чаем беда...
Эксперт CЭксперт С++
10012 / 5358 / 1467
Регистрация: 18.10.2014
Сообщений: 12,918
13.07.2020, 19:27 3
Цитата Сообщение от Astana01 Посмотреть сообщение
... четвертый элемент массива – сумма второго и третьего и т.д.
Как это описание натянуть на двумерный массив?
0
0 / 0 / 0
Регистрация: 13.07.2020
Сообщений: 8
13.07.2020, 21:54  [ТС] 4
Значения должны выводиться по следующему примеру :
3 5 8 13 21
34 55 89 144 233
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
14.07.2020, 09:29 5
Лучший ответ Сообщение было отмечено Astana01 как решение

Решение

Цитата Сообщение от Astana01 Посмотреть сообщение
первый элемент массива ..., второй элемент ..., третий элемент
пронумеровать элементы двумерного массива можно по-разному, например начиная с верхнего левого угла слева направо, перемещаясь по строкам сверху вниз
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
#include <iostream>
using namespace std;
 
int main()
{    
    int n, m, p=0;    
    cout << "n="; cin >> n;
    cout << "m="; cin >> m; 
    
      double **c = new double*[n], a, b; 
    for (int i = 0; i < n; i++)
       c[i]=new double[m];
       
    cout << "num1="; cin >> a;
    cout << "num2="; cin >> b;
    
    c[0][0]=a;
    c[0][1]=b;
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
        p++;
        if(p>2)
        {
            c[i][j]=a+b;
            a=b;
            b=c[i][j];
        }
        cout << c[i][j] << " ";
        }
    cout << "\n";
    }
 
    for (int i = 0; i < n; i++)
    delete[]c[i];
    delete[]c;
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2020, 09:29
Помогаю со студенческими работами здесь

Заполнить массив из 10 элементов, чтобы каждый элемент был равен сумме делителей своего номера
Заполнить массив из 10 элементов каждый элемент был равен сумме делителей своего номера

Создать массив, каждый элемент которого равен сумме двух предыдущих элементов
Одномерный Известны два первых элемента массива B: B=4, B=8. Создать массив, каждый элемент...

Создать массив, каждый элемент которого равен сумме двух предыдущих элементов
Известны два первых элемента массива B: B=4, B=8.Создать массив, каждый элемент которого равен...

Заполнить массив C[50] так, чтобы каждый элемент был равен тангенсу от S[i]
Создать массив S с рандомными числами от -200 до 200. Вывести на экран и определить количество...

Сформировать массив в котором каждый следующий элемент равен сумме всех предыдущих элементов исходного массива
Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент...

Создать массив: первый элемент равен A, второй равен B, а каждый последующий элемент равен сумме всех предыдущих
Даны целые числа N (&gt; 2), A и B. Сформировать и вывести цело- численный массив размера N, первый...


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

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

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