JAVA: Треугольник паскаля

Давненько не было школьных\вузовских задачек из классики.

Треугольник паскаля на JAVA:

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
import java.util.Scanner;
 
 
public class PascalTriangle {
 
    public static void main(String[] args) {
        
        int LINES = 0;
        System.out.println("Enter number of lines for Pascal Triangle:");
        // Reading
        Scanner reader = new Scanner(System.in);
        LINES = reader.nextInt();
        reader.close();
        // Calculation and print
        int [][] p = new int [LINES][];
        p[0] = new int [1];
        p[1] = new int [2];
        p[1][0] = p[1][1] = 1;
        System.out.println(p[0][0] = 1);
        System.out.println(p[1][0] + " " + p[1][1]);
        for (int i = 2; i < LINES; i++)
        {
            p[i] = new int [i+1];
            System.out.print((p[i][0] = 1) + " ");
            for (int j = 1; j < i; j++)
            {
                System.out.print((p[i][j] = p[i-1][j-1] + p[i-1][j]) + " ");
            }
            System.out.println(p[i][i]=1);
        }
    }
 
}
import java.util.Scanner;


public class PascalTriangle {

    public static void main(String[] args) {
        
        int LINES = 0;
        System.out.println("Enter number of lines for Pascal Triangle:");
        // Reading
        Scanner reader = new Scanner(System.in);
        LINES = reader.nextInt();
        reader.close();
        // Calculation and print
        int [][] p = new int [LINES][];
        p[0] = new int [1];
        p[1] = new int [2];
        p[1][0] = p[1][1] = 1;
        System.out.println(p[0][0] = 1);
        System.out.println(p[1][0] + " " + p[1][1]);
        for (int i = 2; i < LINES; i++)
        {
            p[i] = new int [i+1];
            System.out.print((p[i][0] = 1) + " ");
            for (int j = 1; j < i; j++)
            {
                System.out.print((p[i][j] = p[i-1][j-1] + p[i-1][j]) + " ");
            }
            System.out.println(p[i][i]=1);
        }
    }

}
Вывод

Вывод программы

Работа с матрицей в VBA

Внезапно появились лабораторные :)

Задачка такая:

Создать матрицу размера n x n, заполнить случайными числами от (-20 до 30). Сформировать одномерный массив от 1 до n, каждый элемент которого равен произведению положительных четных элементов данного столбца.

Решаем так (естественно все делаем в Excel):

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
Public Sub glav_diag()
Dim i As Integer ' Индекс строки
Dim j As Integer ' Индекс столбца
Dim q As Double ' Переменная результата для столбца
Dim cond As Integer ' Дополнительная переменная. Сколько раз выполнилось условие. Ее в принципе можно сделать булевой
 
n = InputBox("n=") ' Просим ввести n - размерность массива. У нас он всегда квадратный
 
ReDim arr(n, n) ' Объявляем его
q = 1 ' Так как у нас по условию "произведение", то мы вынуждены написать тут 1, иначе (в случае 0) произведение всегда будет равно 0
cond = 0 ' условие пока не выполнилось
' Generation of array
For i = 1 To n
For j = 1 To n
arr(i, j) = Int((-20 - 30 + 1) * Rnd + 30) ' Рандом от -20 до 30
Cells(i, j).Value = arr(i, j) ' Забить это в ячейку
Cells(i, j).Interior.ColorIndex = xlNone ' Убрать цвет если он был
Next j
Next i
 
' Обработка и вычисления
For j = 1 To n
For i = 1 To n
If ((arr(i, j) > 0) And (arr(i, j) Mod 2 = 0)) Then ' Если значение массива больше 0 и четное
q = q * arr(i, j) ' тогда домножаем его на q и записываем новый результат в q
cond = cond + 1 ' Если условие выполнилось увеличиваем переменную
Cells(i, j).Interior.Color = vbCyan ' Закрашиваем соответствующую ячейку на листе цветом
End If
Next i
If (cond > 0) Then ' Если условие выше выполнилось хотя бы раз...
Cells(n + 1, j).Value = q ' тогда записываем значение вычислений в ячейку ниже нашей матрицы
Cells(n + 1, j).Interior.Color = vbGreen ' и красим в заленый
Else
Cells(n + 1, j).Value = 0 ' Если не выполнилось пишем туда 0 (таких элементов нет) просто q записать нельзя, так как он равен 1
Cells(n + 1, j).Interior.Color = vbGreen ' и тоже в зеленый
End If
cond = 0
q = 1
Next j
End Sub
Public Sub glav_diag()
Dim i As Integer ' Индекс строки
Dim j As Integer ' Индекс столбца
Dim q As Double ' Переменная результата для столбца
Dim cond As Integer ' Дополнительная переменная. Сколько раз выполнилось условие. Ее в принципе можно сделать булевой

n = InputBox("n=") ' Просим ввести n - размерность массива. У нас он всегда квадратный

ReDim arr(n, n) ' Объявляем его
q = 1 ' Так как у нас по условию "произведение", то мы вынуждены написать тут 1, иначе (в случае 0) произведение всегда будет равно 0
cond = 0 ' условие пока не выполнилось
' Generation of array
For i = 1 To n
For j = 1 To n
arr(i, j) = Int((-20 - 30 + 1) * Rnd + 30) ' Рандом от -20 до 30
Cells(i, j).Value = arr(i, j) ' Забить это в ячейку
Cells(i, j).Interior.ColorIndex = xlNone ' Убрать цвет если он был
Next j
Next i

' Обработка и вычисления
For j = 1 To n
For i = 1 To n
If ((arr(i, j) > 0) And (arr(i, j) Mod 2 = 0)) Then ' Если значение массива больше 0 и четное
q = q * arr(i, j) ' тогда домножаем его на q и записываем новый результат в q
cond = cond + 1 ' Если условие выполнилось увеличиваем переменную
Cells(i, j).Interior.Color = vbCyan ' Закрашиваем соответствующую ячейку на листе цветом
End If
Next i
If (cond > 0) Then ' Если условие выше выполнилось хотя бы раз...
Cells(n + 1, j).Value = q ' тогда записываем значение вычислений в ячейку ниже нашей матрицы
Cells(n + 1, j).Interior.Color = vbGreen ' и красим в заленый
Else
Cells(n + 1, j).Value = 0 ' Если не выполнилось пишем туда 0 (таких элементов нет) просто q записать нельзя, так как он равен 1
Cells(n + 1, j).Interior.Color = vbGreen ' и тоже в зеленый
End If
cond = 0
q = 1
Next j
End Sub

Вот такой простой код. Все комментарии в коде.

Скачать тестовым документом

Результат работы:

Continue reading

Access, C#: Получить список таблиц в Combobox и по нему загружать данные

Интересная вчера попалась задача. Есть стандартная база данных для MS Access. «Борей» называется. Что это может значить мне так и не понятно. Нужно написать программу которая загружает список таблиц в combobox, а потом по выбору из него таблицы загружает содержимое в DataGridView. Язык реализации C#.

Голову поломал, ушло 7 часов, но сделал. Я буду рад, если кому пригодится.

Continue reading

С++: Записать первые n членов геометрической прогрессии в файл

Задача:

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

Continue reading

C++: Антисимметричная матрица

Задача:

Напишите программу которая создает антисимметричную матрицу размера N, заполненную случайными числами. Антисимметричная матрица: Aij=-Aji

Алгоритм примерно такой: Спрашиваем у пользователя, какого размера матрицу он бы хотел видеть. Стандартно всё заполняем случайными числами. После этих операций инициируем еще циклы, в которых изменяем значения

Continue reading

C++: Вес Хэмминга с использованием atoi, itoa. Не рекурсия

Штука то интересная. Вес Хэмминга это количество единиц в числе, если его перевести в двоичную систему. Реализовать можно разными способами. Например так:

Continue reading

C++: Есть ли число в массиве?

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

Сводится к написанию функции проверки есть ли оно.

1
2
3
4
5
6
7
8
9
10
11
bool isNumberInMassive(int k,int massive[],int size)
{
    for (int i=0;i<size;i++)
    {
        if (k==massive[i])
        {
            return true;
        }
    }
    return false;
}
bool isNumberInMassive(int k,int massive[],int size)
{
    for (int i=0;i<size;i++)
    {
        if (k==massive[i])
        {
            return true;
        }
    }
    return false;
}

Если пояснять, то тут просходит следущее: в функцию передается число, которое нужно проверить на наличие в массиве, массив и размерность массива. Далее пробегая в цикле проверяем, совпало ли значение элемента с нашим числом? Если да — возвращаем истину, по окончании же цикла (если нашел бы — выкинул бы истину) возвращаем ложь.

Continue reading

C++: Генератор псевдослучайных чисел (BBS).

Генератор псевдослучайных чисел BBS задается следующим рекуррентным соотношением X[n]=X[n-1]^2 mod m,где X0 и m являются параметрами генератора. Написать программу,которая выводит N случайных псевдочисел,полученных с помощью этого генератора,при X0=2 и m=4747,число N вводится с клавиатуры.

Реализация на C++

Continue reading

C++: Заполнить массив и исключить элементы входящие в интервал [5,25]

Тоже просто и тоже массивы. Сначала создать массив и его на экран. После этого вывести только те элементы которые не входят в отрезок [5, 25].

Continue reading

C++: Работа с массивами. Задать двумерный массив (Матрицу) и вывести его на экран

Одна из простых задач. Нужно просто создать матрицу N x N и заполнить ее случайными числами, после чего вывести ее на экран. Размерность N считывается с клавиатуры.

Continue reading