Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
6 / 6 / 1
Регистрация: 12.02.2013
Сообщений: 31
1

Треугольник Паскаля через динамический массив

12.02.2013, 18:52. Показов 4328. Ответов 19

Author24 — интернет-сервис помощи студентам
Как сделать треугольник Паскаля через динамический массив, когда количество строк коэффициентов задается с клавиатуры от 3-10?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2013, 18:52
Ответы с готовыми решениями:

Вывести треугольник Паскаля, используя динамический массив. Ошибка "Segmentation fault (core dumped)"
Задача такова: вывести треугольник паскаля используя динамический массив. Я написала, но выдает...

Треугольник Паскаля через массив
Создайте треугольный массив и разместите в нем треугольник Паскаля из n строк (n > 0). Для n = 5...

Построить треугольник Паскаля. Используя треугольник Паскаля, вычислить 𝑘−ое число Фиббоначчи. Нумерация чисел Фиббона
#include <iostream> using namespace std; int main() { setlocale(LC_ALL, "Russian"); ...

Кто-нибудь знает, как запрограммировать выражение (x+y)^n через треугольник Паскаля в C++?
Кто-нибудь знает, как запрограммировать выражение (x+y)^n через треугольник Паскаля в C++?

19
9 / 9 / 6
Регистрация: 23.01.2013
Сообщений: 27
12.02.2013, 21:33 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
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
 
int fact(int n)
{
    if (n == 0)
        return 1;
    else if (n > 0) {
        int i, y = 1;
        for (i = 1; i <= n; ++i)
            y = y * i;
        return y;
    }
    else
        return 0;
}
 
int main(void)
{
    int *mas = malloc (sizeof(int));
    int n, i;
 
    printf("Enter n: ");
    scanf("%i", &n);
 
    for (i = 0; i <= n; ++i)
        mas[i] = fact(n) / (fact(i) * fact(n - i));
 
    for (i = 0; i <= n; ++i)
        printf("%i\n", mas[i]);
 
    return 0;
}
0
6 / 6 / 1
Регистрация: 12.02.2013
Сообщений: 31
12.02.2013, 21:49  [ТС] 3
Francis Morgan, почему она когда вводишь значение n и наживаешь enter она вылетает?
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
12.02.2013, 22:06 4
int *mas = malloc (n*sizeof(int)); переставьте после ввода n
0
6 / 6 / 1
Регистрация: 12.02.2013
Сообщений: 31
12.02.2013, 22:14  [ТС] 5
vua72, вот так?
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
#include <stdio.h>
#include <stdlib.h>
 
int fact(int n)
{
    if (n == 0)
        return 1;
    else if (n > 0) {
        int i, y = 1;
        for (i = 1; i <= n; ++i)
            y = y * i;
        return y;
    }
    else
        return 0;
}
 
int main(void)
{
    int *mas = malloc (n*sizeof(int)); 
    int n, i;
 
    printf("Enter n: ");
    scanf("%i", &n);
 
    for (i = 0; i <= n; ++i)
        mas[i] = fact(n) / (fact(i) * fact(n - i));
 
    for (i = 0; i <= n; ++i)
        printf("%i\n", mas[i]);
 
    return 0;
       return 0;
}
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
12.02.2013, 22:19 6
нет, после строки scanf("%i", &n);
0
9 / 9 / 6
Регистрация: 23.01.2013
Сообщений: 27
12.02.2013, 22:23 7
В чём тогда смысл динамического массива здесь? С таким же успехом можно обычный массив инициализировать после ввода n. А какие значения Вы вводили и какой компилятор используете?
0
6 / 6 / 1
Регистрация: 12.02.2013
Сообщений: 31
12.02.2013, 22:24  [ТС] 8
vua72,
что то я туплю
там ошибки выдает(
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
12.02.2013, 22:29 9
C
1
2
3
4
5
6
int *mas;
    int n, i;
 
    printf("Enter n: ");
    scanf("%i", &n);
    mas = malloc (n*sizeof(int));
0
6 / 6 / 1
Регистрация: 12.02.2013
Сообщений: 31
12.02.2013, 22:33  [ТС] 10
vua72, а оно все равно вылетает(
0
9 / 9 / 6
Регистрация: 23.01.2013
Сообщений: 27
12.02.2013, 22:38 11
Мне кажется, что помочь будет легче, если Вы хотя бы ответите на предыдущие вопросы. Впрочем, это Ваше дело.
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
12.02.2013, 22:56 12
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(void)
{
    int *mas;
    int n, i;
    printf("Enter n: ");
    scanf("%i", &n);
    mas = (int*)malloc (n*sizeof(int));
    for (i = 0; i <= n; ++i)
        mas[i] = fact(n) / (fact(i) * fact(n - i));
    for (i = 0; i <= n; ++i)
        printf("%i\n", mas[i]);
    free (mas);
    return 0;
}
Добавлено через 6 минут
Цитата Сообщение от Francis Morgan Посмотреть сообщение
В чём тогда смысл динамического массива здесь? С таким же успехом можно обычный массив инициализировать после ввода n. А какие значения Вы вводили и какой компилятор используете?
да ну, попробуйте.
0
9 / 9 / 6
Регистрация: 23.01.2013
Сообщений: 27
12.02.2013, 23:00 13
И в чём суть? Ну, попробовал:
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
#include <stdio.h>
#include <stdlib.h>
 
int fact(int n)
{
    if (n == 0)
        return 1;
    else if (n > 0) {
        int i, y = 1;
        for (i = 1; i <= n; ++i) {
            y = y * i;
        }
        return y;
    }
    else
        return 0;
}
 
int main(void)
{
    int n, i;
 
    printf("Enter n: ");
    scanf("%i", &n);
    int mas[n];
 
    for (i = 0; i <= n; ++i) {
        if (i == 0 || i == n)
            mas[i] = 1;
        else
            mas[i] = fact(n) / (fact(i) * fact(n - i));
    }
 
    for (i = 0; i <= n; ++i)
        printf("%i\n", mas[i]);
 
    return 0;
}
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
12.02.2013, 23:20 14
1. Вы создали variable length array (VLA), который не поддерживается всеми компиляторами, и никак не в куче, между прочим. И в визуал Си этот код работать не будет.
2. В том варианте, который вы давали раньше, вы выделяли память ровно под один элемент, а не под n элементов.
3. Ну и парный free к malloc никто не отменял.
----
ну и смыл выделения памяти в куче, именно в таких задачах, когда заранее неизвестно, сколько элементов будет в задаче, чтоб не выделять память под заведомо больший массив памяти, чем нужно.
0
9 / 9 / 6
Регистрация: 23.01.2013
Сообщений: 27
12.02.2013, 23:52 15
Да, free я забыл. Но вот как раз в данной задаче vla можно использовать, т.к. число элементов заведомо известно. А проблема если и возникнет, то не на массиве, а на факториале. VC не знаю и войну начинать не хочу.
0
vua72
13.02.2013, 00:21
  #16

Не по теме:

Цитата Сообщение от Francis Morgan Посмотреть сообщение
Да, free я забыл. Но вот как раз в данной задаче vla можно использовать, т.к. число элементов заведомо известно. А проблема если и возникнет, то не на массиве, а на факториале. VC не знаю и войну начинать не хочу.
Тут спорить не о чем, но автор завтра принесет такое решение в институт, а там древний борланд или визуал Си, где этот код рабоать не будет.

0
9 / 9 / 6
Регистрация: 23.01.2013
Сообщений: 27
13.02.2013, 00:32 17
Цитата Сообщение от vua72 Посмотреть сообщение

Не по теме:


Тут спорить не о чем, но автор завтра принесет такое решение в институт, а там древний борланд или визуал Си, где этот код рабоать не будет.

Ну да. Удачи автору
1
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
13.02.2013, 14:14 18
Цитата Сообщение от Francis Morgan Посмотреть сообщение
В чём тогда смысл динамического массива здесь? С таким же успехом можно обычный массив инициализировать после ввода n.
В какой книге ты прочитал это?
1
6 / 6 / 1
Регистрация: 12.02.2013
Сообщений: 31
13.02.2013, 23:27  [ТС] 19
Francis Morgan, я не видел Ваше сообщения где Вы спрашивали про коопелятор
Через вижуал студио и как я понял прочитав выше оно вылетает потому что библиотеки разные(
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
14.02.2013, 02:02 20
Цитата Сообщение от Tegi Посмотреть сообщение
Francis Morgan, я не видел Ваше сообщения где Вы спрашивали про коопелятор
Через вижуал студио и как я понял прочитав выше оно вылетает потому что библиотеки разные(
оно вылетало, потосу что память выделялась под 1 элемент, а вы пытались добавить в массив больше элементов, плюс нужно приводить указатель к правильному типу , и еще освобождать память.
1
14.02.2013, 02:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2013, 02:02
Помогаю со студенческими работами здесь

Переписать программу из паскаля в с++. Одномерный динамический массив
Это динамический масив! Помогите пожалуйста в С++ записать. Type mse = ^ms; MS=Arrayof integer;...

Динамический массив объектов типа треугольник
Спасите помогите!!!!уже несколько недель бьюсь над заданием...никак не сложится общее понятие...

Переделать через динамический массив
Вот условия. Вычислить произведение чисел, неравных заданному числу Z, и подсчитать количество...

Динамический массив сделать через ^
Составит программу, в которой вводится размер массива (одномерный). Выделить память, найти...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru