Skip to content

Posts from the ‘Основы программирования’ Category

20
Июн

Перенос кода на GitHub

Теперь проекты сапер, рисовакимус и словарь находятся в GitHub. Что бы скачать проект, достаточно нажать на соответствующий репозиторий, а затем на кнопку «zip».

О том, что такое гитхаб будет, и как его использовать будет описано позднее (наверное).

19
Апр

Ковариация и контравариация

Общая статья на msdn (внизу таблица со ссылками на различные применения).

И статья в msdn magazine .

 

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 КТ ОПра можно посмотреть тут

10
Окт

10. Массивы

Задания

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

 

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

 

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

 

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

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

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

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

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

19
Сен

3.Условия

Лекция №3

Задания

  1. Есть три переменные. Проверить, могут ли их значения быть длинами сторон треугольника.
  2. Есть три целые переменные. Проверить, могут ли их значения быть сторонами прямоугольного треугольника.
  3. Пройдет ли кирпич со сторонами a, b, c в прямоугольное отверстие x,y, если его совать плоскопараллельно.
  4. Рекурсивно описать синтаксис арифметических выражений (выражение состоит из чисел, переменных, знаков операций и скобок).
  5. Взять сравнение «x < y» и при помощи логических операций выразить через него пять других сравнений.
  6. Выразите двустороннюю условную команду через одностороннюю и наоборот.

Read moreRead more

18
Сен

2.Условная команда

Итак вторая лекция курса ОПр:

Задания

  1. Велосипедист проезжает S км  за T часов. С какой средней скоростью он едет?
  2. Мальчик плюнул прямо вверх со скоростью v = 10 м/сек. Через сколько времени он пожалеет об этом? Сопротивление воздуха не учитывать, ускорение свободного падения g принять за 10 м/сек2.
  3. Дано целое число. Определить значение его самой младшей цифры. Воспользоваться арифметической операцией %.
  4. Дано трехзначное целое число. Определить сумму его цифр.
  5. Напечатать большее из трех чисел: x, y, и z.

Read moreRead more

17
Сен

1.Алгоритмы и исполнители

Давно я не постил у себя в блоге, сегодня решил исправить эту неприятную ситуацию. Первый месяц уверенно движется к своему завершению, дни пролетают и в голове потихоньку откладываются знания (по крайней мере я на это надеюсь =)). А так как основным профильным предметом 1 семестра является курс «Основы программирования» — ОПр, я решил постить свои решения дом. заданий, интересных задач и все что связно с первым курсом по программированию. Ведет этот курс Бондарев В. М.. Его блог (выложены лекции, а также д\з) - http://bond19.wordpress.com. Свои решения этих задач я и буду выкладывать тут. Сразу скажу, код не претендует на 100% правильность, или идеальность алгоритма, это просто мое решение поставленной задачи. Зачем я это делаю? Во-первых, это помогает самому лучше понять тему, во-вторых, в комментариях можно предложить свой способ решения. А еще все это можно обсудить, хотя вопросы лучше, все таки, задавать  Владимиру Михайловичу.

Дальше решения простых задач 1ой лекции «Алгоритмы и исполнители»

Read moreRead more