Skip to content

Posts tagged ‘основы программирования’

30
Янв

Сапер v0.3

Теперь, если открыта пустая клетка открываются соседние (правда на моем калькуляторе это до 3 секунд происходило).

Апдейт. Открываются мгновенно (если запускать екзешник, а не в студии)

Код.

7
Дек

Сортировка слиянием

Покорилась и она, метод научного тыка работает =), код некрасивый и корявый, но зато он сливает)

 

static int[] Merge(int[] x1, int[] x2) // слияние 2 упорядоченных массивов
        {
            int[] result = new int[x1.Length+x2.Length];
            int ix1 = 0, ix2 = 0;
            for (int i = 0; i < result.Length;++i ){
                if (x1[ix1] < x2[ix2])
                {
                    result[i] = x1[ix1++];
                    if (ix1 == x1.Length)
                    {
                        i++;
                        for (; ix2 < x2.Length; ++ix2, ++i)
                        {
                            result[i] = x2[ix2];
                        }
                    }
                }
                else
                {
                    result[i] = x2[ix2++];
                    if (ix2 == x2.Length)
                    {
                        i++;
                        for (; ix1 < x1.Length; ++ix1, ++i)
                        {
                            result[i] = x1[ix1];
                        }
                    }
                }
            }
            return result;
        }
        static void MergeSort(ref int[] x) 
        {
            int middle = x.Length / 2;
            int dl = 1;
            while(dl<x.Length)
            {
                int[] a = new int[middle];
                int[] b = new int[x.Length-middle];
                for (int i = 0; i < middle; ++i)
                {
                    a[i] = x[i];
                }
                for (int i = 0; i < b.Length; ++i)
                {
                    b[i] = x[middle+i];
                }
                MergeSort(ref a);
                MergeSort(ref b);
                x = Merge(a, b);
                dl *= 2;
            }
        }
        static void Main(string[] args)
        {
            int[] x = { -10, 4, 25, 11, -7, 0, 3, 12, 51, 100 };
           // int[] y = { 30, 50, 70, 90, 100 };
            //int[] z = Merge(x,y);
             MergeSort(ref x);
        }
7
Дек

Быстрая сортировка

Долго мучил я быстрою сортировку, и домучил все-таки.

Итак код:

class Program
    {
        static int PartSort(int[] x, int min, int max) //частичная сортировка
        {
            int m = min;
            int vybor = x[min]; min++;
            while (true)
            {
                while (min < x.Length && x[min] < vybor) min++; // а вот условие "x[min] < vybor && min < x.Length" не прокатит
                while (x[max] > vybor) max--;                   
                if (min <= max)
                {
                    int temp = x[min];
                    x[min] = x[max];
                    x[max] = temp;
                }
                else break;
            }
            x[m] = x[max];
            x[max] = vybor;
            return max;
        }
        static void QuickSort(int[] x, int min, int max) 
        {
            if (min < max)
            {
                int b = PartSort(x, min, max);
                QuickSort(x, min, b - 1);
                QuickSort(x, b+1, x.Length - 1);
            }
        }
        static void Main(string[] args)
        {
            int[] x = { 50, 70, 60, 40, 10, 80, 20 };
            QuickSort(x, 0, x.Length-1);
        }

А вот «слиянием» не поддается пока…

7
Дек

Завтра к\р!!!

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

Кодить кодить кодить кодить кодить кодить кодить кодить кодить кодить

27
Ноя

Сортировка выбором, вставками, слиянием и другие

Начнем с сортировки выбором:

Алгоритм

  1. выбрать наименьшее число;
  2. поменять его местами с первым числом массива;
  3. повторить 1) и 2) для еще не упорядоченной  части массива.

Первые два пункта придется повторить n – 1 раз, где n – число элементов в массиве. Read moreRead more

15
Ноя

1 группа +100

13
Ноя

«Напишите алгоритм.» — «Давайте мы его лучше станцуем!»

После просмотров этих видео такой ответ студентов уже не будет абсурдным)

Итак 1 алгоритм — сортировка «пузырьком»:

Дальше — больше.
Read moreRead more

12
Ноя

Оценки

Свои баллы по 1 КТ ОПра можно посмотреть тут

1
Ноя

Соревнование между группами потока ПИ


Итак, группы решили сразится между самой за звание «самая умная». Правила такие : каждая группа создает аккаунт на сайте на сайте acm.timus.ru с именем Pi11x (x — номер группы) и пытается решить как можно больше задач . Выигрывает группа (вторая), которая решит больше задач (не менее 10) в период с 1.11.2011 по 14.11.2011.

Апдейт. Тут всплыла маленькая проблема, а именно форум, на котором выложен код решения…2 группа негодует и хочет сменить тимус на проект Эйлера)

10
Окт

10. Массивы

Задания

1.      Найти первое вхождение в массив заданного числа.

 

2.      Найти значение наибольшего числа в массиве.

 

3.      Найти расположение (индекс) наибольшего числа в массиве. Если таких чисел несколько, найти индекс первого из них.

 

4.      Задан массив из n элементов. Изменить порядок значений в нем на противоположный.

5.      В массиве находятся числа, среди которых есть и нули. Сдвинуть все ненулевые числа к левому краю массива.

6.      Найти все простые числа не превышающие миллиона. Воспользоваться решетом Эратосфена.

Read moreRead more

5
Окт

Задача №6, 7 – projecteuler.net

Сумма квадратов первых десяти натуральных чисел

12 + 22 + … + 102 = 385
Квадрат суммы первых десяти натуральных чисел

(1 + 2 + … + 10)2 = 552 = 3025
Следовательно, разность между суммой квадратов и квадратом суммы первых десяти натуральных чисел составляет 3025 385 = 2640.

Найдите разность между суммой квадратов и квадратом суммы первых ста натуральных чисел.

Read moreRead more

4
Окт

Задача №5 – projecteuler.net

2520 — самое маленькое число, которое делится без остатка на все числа от 1 до 10.

Какое самое маленькое число делится нацело на все числа от 1 до 20?

Read moreRead more

3
Окт

Задача №4 – projecteuler.net

Число-палиндром с обеих сторон (справа и слева) читается одинаково. Самое большое число-палиндром, полученное произведением двух двухзначных чисел – 9009 = 91 × 99.

Найдите самый большой палиндром, полученный произведением двух трёхзначных чисел.

Read moreRead more

1
Окт

Задача №3 – projecteuler.net

Решил 3 задачу! Некоторые строчки кода писал чуть ли не интуитивно, но все таки программа выдала правильный результат. При чем выполнилась довольно быстро (я ушел от своего метода перебора=)).  Условие:

Простые делители числа 13195 — это 5, 7, 13 и 29.

Какой самый большой делитель числа 600851475143, являющийся простым числом?

Read moreRead more

1
Окт

9. Особенности C#

1.Определить, составляют ли три числа геометрическую прогрессию.

2.Вычислить значение C(n, m) = (n * (n – 1) * (n – 2)*…* (n – m + 1)) / m!

3.Найти НОД трех чисел.

Read moreRead more

28
Сен

6. Функции

1.      Объявите функцию, которая вычисляет значение n!

2.      Объявите функцию, которая вычисляет значение n-го члена ряда Фибоначчи.

3.      Объявите функцию, которая делает младший разряд целого числа самым старшим  (12345 -> 51234).

4.      Объявите функцию, которая вычисляет знакопеременную сумму всех цифр целого числа (12345 -> +1-2+3-4+5 = 3). Знак плюс всегда должен стоять перед старшей цифрой.

Read moreRead more

25
Сен

Задача №2 — projecteuler.net

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

Нужно посчитать суму всех четных числ Фибоначчи, не превышающих 4000000. Теперь мы перешли на c#. Там много непонятных классов, namespace’ов =)(как прост был javascript). В принципе решение находится в классе program, поэтому содержание его я и буду выкладывать. Read moreRead more

20
Сен

Первая задача с projecteuler.net

Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел — 23.
Найдите сумму всех чисел меньше 1000 кратных 3 или 5.

Read moreRead more

19
Сен

5. Вложенные циклы и не только они

Следующие задания (лекция):

1. Нарисовать закрашенный прямоугольник со сторонами a и b.
2. Нарисовать контурный прямоугольник со сторонами a и b.
3. Нарисовать закрашенный треугольник со сторонами a и b.
4. Найти сумму всех делителей заданного целого числа. Например:
для числа 12 summa = 1 + 2 + 3 + 4 + 6 + 12;
для числа 16summa = 1 + 2 + 4 + 8 + 16.
5. Распечатать в столбик все цифры заданного целого числа:
а) начиная с младшей;
б) начиная со старшей.
6. Решить вторую задачу с http://projecteuler.net/

Read moreRead more

19
Сен

4.Команда повторения

Решения задач к 4 лекции:

1.Задано n. Сложить только четные числа: 2 + 4 + 6 + …+ 2n.

2.Задано n. Сложить квадраты: 12 + 32 + 52 + …+ (2n – 1)2.

3.Вычислить n!

4.Сложить сумму факториалов от 1! до 30!.

5.Решить задачу о кроликах, написав программу, которая получает номер месяца и выводит количество пар кроликов в данном месяце.

6.Подсчитать выражение выражение
7.Решить первую задачу с http://projecteuler.net/ Переводы задач на русский находятся на http://euler.jakumo.org/

Read moreRead more