Информационная Безопасность. Аудит Безопасности


Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Треугольник паскаля
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Программирование / C/C++/VC++ RSS подписка на сообщения с форума Subscribe


Новая тема Наиболее обсуждаемые темы Наиболее посещаемые темы
Поиск 
Период
Перейти

Просмотров - 7635
Треугольник паскаля
Добавить этот топик в закладки »
RSS-лента ответов »Subscribe
notblockhack




Member
# | Сообщение добавлено 16.11.2011 15:57:07
(Pascal Triangle) Write a complete program which will display the Pascal's triangle. Program should read
an integer (N) that is the number of the rows in the triangle. Write a function factorial that takes an integer
n and returns its factorial (n!). Write a second function combination which takes two integers n and r and
return the c(n,r). Remember c(n,m) = n! / ((n-r)! r!)
 

Примерный перевод:
(Треугольник Паскаля) Написать полную программу, которая будет отображаться треугольник Паскаля. Программа должна читать
число (n), то есть число строк в треугольнике. Напишите функцию факториал, которая принимает целое число
n и возвращает его факториал (n!). Написать вторую функцию, которая принимает два целых числа n и r и
возвращение с(n, r). Помните с (n, r) = n! / ((n-r)! r!)
 
проблема такая: я знаю что можно с помощью массива написать этот треугольник, но пока не обладаю знанием массива. надо написать конкретно использую комбинаторику. только такое чувство, что в задаче упущен какой-то фрагмент, последнее предложение не вяжется ни с чем, не понятно что такое с.
ещё не надо соблюдать форму треугольника, то есть это чисто символически, там должна визуальная лестница получиться.
Сказать спасибо Ответить Цитировать

codemaster




Platinum Member
# | Сообщение добавлено 16.11.2011 16:57:46
каждое число в треугольнике паскаля - сумма двух стоящих над ним чисел. в любом учебнике по си есть пример вывода треугольника паскаля. этот исходник выводит первые 15 строк:
C++

 #include <stdio.h>
 #include <conio.h>
 #define N 1000
 long c[N];
 int main () {
    long n, i, j;
    for(n=0;n<15;n++)
    {
    for(i = 1; i <= n; i++)
        c[i] = 0;
    c[0] = 1;
    for(j = 1; j <= n; j++)
       for(i = j; i >= 1; i--)
          c[i] = c[i-1] + c[i];
    for(i = 0; i <= n; i++)
       printf ("%ld ", c[i]);
       printf("\n");
       }
       getch();
    return 0;
 }
 

 
а факториал, если ты не учился в школе:
!n=n*n-1*n-2*n-3*.....*n-(n-1).
на си реализуется примерно так:
C++

int fact(int n)
{
int f=1;
for(int i=n;i>1;i--) f=f*i;
return f;
}
 

 
ну а функцию c(n,r) попробуй сам реализовать - функцию факториала я тебе привел. осталось только составить математическое выражение
 
Сказать спасибо Ответить Цитировать

notblockhack




Member
# | Сообщение добавлено 16.11.2011 17:01:38
спасибо, но всё что написано я и сам знал. и исходники видел, и что такое факториал знаю и функцию сам писал. я же написал, что массивы не знаю, а треугольник надо написать используя комбинаторику, а не сумму двух верхних чисел. с массивами уже есть. надо именно используя формулу последнюю каким-то образом написать.
 
Добавлено 16.11.2011 17:10:10 (через 9 минут 32 секунды )
 
видимо, я написал, что меня не понялю. объясню: я функции писать умею, и вообще норм для задачи язык знаю, я только не пому как реализовать треугольник не используя массивы.
Сказать спасибо Ответить Цитировать

codemaster




Platinum Member
# | Сообщение добавлено 16.11.2011 17:55:24
notblockhack

видимо, я написал, что меня не понялю. объясню: я функции писать умею, и вообще норм для задачи язык знаю, я только не пому как реализовать треугольник не используя массивы.

тогда просто вычисляешь текущее число с помощью данной тебе функции. я так понял она дана тебе чтобы вычислять значение  текущего элемента - n номер строки(начиная с нуля) а r - номер элемента в этой строке(тоже начиная с нуля).
код получается примерно такой:
C++

#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
 
int fact(int n)
{
int f=1;
for(int i=n;i>1;i--) f=f*i;
return f;
}
 
int c(int r,int n)
{
return fact(n)/(fact(n-r)*fact(r) );
}
int main(int argc, char *argv[])
{
cout << "put rows count: ";//кол-во строк
int n=0;
cin >> n;
for(int i=0;i<=n;i++)
{
for(int j=0;j<=i;j++)
{
        cout << c(j,i) << " ";
}
cout << "\n";
}
getch();
return 0;
}
 
 

 
Сказать спасибо Ответить Цитировать

notblockhack




Member
# | Сообщение добавлено 16.11.2011 20:38:15
Отредактировано 23.11.2011 18:07:32 by notblockhack
codemaster

я так понял она дана тебе чтобы вычислять значение  текущего элемента - n номер строки(начиная с нуля) а r - номер элемента в этой строке(тоже начиная с нуля).
мне в принципе только это и требовалось, в условии не було указано что за элемент R. код у меня будет немного проще, я начинающий) спасибо)
 
Добавлено 23.11.2011 18:04:34 (через 7 дней 21 часов 26 минут 19 секунд )
 
или, значит, формула палёная, или текст проги не верен. треугольник-то выводит, да не тот, что надо бы.
C++
#include <iostream>
using namespace std;
int c(int, int);
int fact(int);
int main () {
        int n;
        cout<<"Enter number of lines: ";
        cin>>n;
        for (int k=1; k<n;k+=1) {
                for (int r=1; r<k;r+=1) {
                        cout<<c(k, r)<<" ";
                }
                cout<<endl; }
 
        system ("pause");
return 0;
}
 
int c(int n ,int r) {
        int a=fact(n);
        int b=fact(n-r);
        int c=fact(r);
        return (a / (b*c)); }
 
int fact(int n) {
        int m=n;
        if (m > 1) {    while ( n != 0) {
                m=m*n-1;
                n-=1; }
        return m;}
        else if (m=1) {return n;} }
 
 
укажите пожалуйста где ошибка, или правильную формулу.
Сказать спасибо Ответить Цитировать


Только зарегистрированные пользователи могут оставлять сообщения в форуме

Зарегистрироваться *** Авторизоваться

 Последние новости и статьи  Последние сообщения с форумов
  • В darknet сливают данные 100 000 российских банковских карт
  • Вирус Escobar ворует коды двухфакторной аутентификации из Google ...
  • DeadBolt использует уязвимость, исправленную в декабре
  • Почти миллион WordPress-сайтов в опасности из-за уязвимости в поп...
  • Шифровальщик DeadBolt взломал 3600 NAS. Qnap устанавливает обновл...
  • Банковский троян Chaes устанавливает вредоносные расширения для C...
  • Взломана платформа Qubit Finance, хакеры похитили 80 млн долларов
  • Арест участников REvil взволновал других преступников
  • Обнаружена malware MoonBounce, внедряющаяся в UEFI
  • Администратор кардерского форума UniCC и участник хак-группы The ...

    Все новости... Все статьи... Прислать новость RSS
  • Разное / Предложения работы » Взлом авторизации CRM
  • Разное / Предложения работы » взломать сайт и выграть электронную жеребьёвку
  • Разное / Предложения работы » разблокировать сбер аккаунт
  • Разное / Болталка » Re: Форум жив?
  • Разное / Болталка » Форум жив?
  • Разное / Болталка » С Новым 2022 Годом!
  • Взлом и безопасность / Программы » Re: Hasp ключ для ABC-4
  • Портал / Отзывы и предложения » Предлагаем партнерство вашему форуму.
  • Разное / Предложения работы » взлом почты
  • Разное / Куплю, приму в дар » Покупка аккаунтов Uphold

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}