Основи програмування

Основи програмування

Повідомлення GorbachenkoVasyl » 07 жовтня 2010, 05:43

GorbachenkoVasyl
Site Admin
 
Повідомлень: 150
З нами з: 16 вересня 2010, 19:59

Re: Основи програмування

Повідомлення Василь » 27 жовтня 2010, 20:15

http://radfiz.org.ua/files/k1/op/doc/
Шпора на лекцию ;)
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Основи програмування

Повідомлення Василь » 28 жовтня 2010, 12:31

Четвертая ЛАБА.
ВНИМАНИЕ! ДУМАЙТЕ ЧТО ПЕРЕПИСУЕТЕ! ЕСТЬ СВОИ ОСОБЕННОСТИ!

Код: Виділити все
using System;
using System.Collections.Generic;
using System.Text;

namespace _4_task
{
    class Program
    {
        static string testString =
"События являются членами класса, которые позволяют  уведомлять  другие ком-\r\n" +
"поненты приложения о том, что случилось с этим классом.  Когда в приложении \r\n" +
"происходит что-то важное, оно генерирует событие, уведомляющее  о случившемся\r\n" +
"все заинтересованные  компоненты. Вместе с событием зачастую передаются раз-\r\n" +
"личные   аргументы, содержащие дополнительные сведения о нем. Другие части при-\r\n" +
"ложения   обрабатывают это событие, то  есть исполняют связанный с ним метод.\r\n" +
"Сигнатура метода, обрабатывающего событие, должна совпадать с сигнатурой это-\r\n" +
"го события. Иными словами, метод  должен принимать аргументы, которые переда-\r\n" +
"ются с событием. Одно событие может обрабатываться несколькими методами, а\r\n" +
"один метод  может обрабатывать  несколько событий.\r\n" +
"Делегаты — это  особые классы, обеспечивающие работу событий. В  сущности, де-\r\n" +
"легат — это указатель на функцию, обеспечивающий контроль типов. Он позволяет\r\n" +
"передавать ссылку на точку входа метода и исполнять этот метод без традиционно-\r\n" +
"го явного вызова. При объявлении  делегата указывают сигнатуру вызываемого им\r\n" +
"метода и тип возвращаемого результата.";

        static void Main(string[] args)
        {
            // @@@
            int[] A = new int[20];
            int len = A.Length;
            string S = "проба";
            len = S.Length;
            // @@@

            Console.WriteLine(testString);
            Console.WriteLine("--------------");

            // 2.
            int lines = countLines(testString);
            Console.WriteLine("lines = {0}", lines);

            // 3.
            int words = countWords(testString);
            Console.WriteLine("words = {0}", words);

            // 4.
            double wordsMidLen = countWordsMidLength(testString);
            Console.WriteLine("words mid length = {0:0.##}", wordsMidLen);

            // 5.
            int[] wordsCount_byLength = new int[30];
            Count_byLength(testString, wordsCount_byLength);

            Console.WriteLine("Press any key");
            Console.ReadKey();
        }

        //----------------------------
        static int countLines(string S) // щиталка линий
        {
            // counter = 0 ; не используется
            string delim="\n";  // разделитель  -  ПЕРЕНОС НА НОВУЮ СТРОКУ
            String[] words = S.Split(delim.ToCharArray());  // Масив со словами, которые били разбиты с "S"
            return words.Length;    // возвращаем длину масива = количество строк
        }
        //--
        static int countWords(string S) // щиталка слов
        {
            int counter = 0;

            string delim = " ,.-;:"; // разделители
            String[] words = S.Split(delim.ToCharArray()); // разбиваем текст на слова
            for (int i = 0; i < words.Length; i++) // цикл по всем словам
            {
                if (words[i] != "") counter++;  // если в елемент в масиве не пустой, тогда это слово
            }
            return counter;         // возвращаем количество слов           
        }
        //--
        static double countWordsMidLength(string S)   // пошук середньої довжини слова.
        {
            double len = 0; // длина
            int counter = 0; // щетчик слов
            int letter_counter = 0; // щетчик букв
            string delim = " ,.-;:"; // разделитель
            String[] words = S.Split(delim.ToCharArray()); // по аналогии с предыдущим
            for (int i = 0; i < words.Length; i++) /// прогонка цикла по всем словам
            {
                if (words[i] != "") // если это слово, а не пустота
                {
                    counter++; // кол слов ++
                    letter_counter += words[i].Length; // количество букв = количество букв + длина елемента масива с индексом "i"
                }

            }
            len = (double)letter_counter / (double)counter; // среднее значение = количество букв / количество слов

            return len; // возврат ср значения
        }
        //--
        static void Count_byLength(string S, int[] counter)
        {

            string delim = " ,.-;:";  // разделители
            String[] words = S.Split(delim.ToCharArray()); // разбиваем слова в масив
            for (int i = 0; i < words.Length; i++) // прогонка по елементам масива
            {
                if (words[i].Length != 0)
                { // если не елемент масива words с индексом i не пустой
                    counter[words[i].Length - 1]++; // записуем в масив КАУНТЕР в индекс  [words[i].Length - 1]   +=1
                }
            }

            for (int i = 0; i < counter.Length; i++)// теперь с помощью цыкла выводим эту "характеристику"
            {
                if (counter[i] != 0) // если количество слов с количеством букв i !=0
                {
                    Console.WriteLine("LETTERS = {0}      COUNT = {1}",i,counter[i]); // выводим то что написано
                }
            }
           
        }

    }
}


/*
 * 1. Використовуючи зразок, маркований @@@, розібратись, в чому різниця властивості Length для масива та рядка
 *
 * Використовуючи як зразок демонстраційний проект лекції № 7, реалізувати для рядка testString:
 * 2. знаходження "кількості рядків".
 * 3. розрахунок кількості слів.
 * 4. пошук середньої довжини слова.
 *
 * 5. Додаткове завдання: Знайти розподіл кількості слів за довжиною слова
*/
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Основи програмування

Повідомлення Максим Нікітченко » 11 листопада 2010, 12:59

Вася,швидше пліз=)))
Всі чекають)
Максим Нікітченко
 
Повідомлень: 12
З нами з: 11 листопада 2010, 12:57

Re: Основи програмування

Повідомлення Максим Нікітченко » 11 листопада 2010, 13:10

вы уже сделали ктото?
у нас вроде дело идет=)))
Максим Нікітченко
 
Повідомлень: 12
З нами з: 11 листопада 2010, 12:57

Re: Основи програмування

Повідомлення Мендрул Гліб » 11 листопада 2010, 13:29

Вы там шото сделали????
Мендрул Гліб
 
Повідомлень: 3
З нами з: 11 листопада 2010, 13:08

Re: Основи програмування

Повідомлення Василь » 11 листопада 2010, 13:41

using System;
using System.Collections.Generic;
using System.Text;

namespace _5_task
{
class Program
{
// початкові умови
static double V = 10; // швидкість каменя, м/c
static double alpha = 20; // кут кидка у градусах
static double dt = 0.1; // c
static double Y0 = 2; // початкова висота, м
//----
static double g = 9.81; // м/(с*с)

static double distance = 0;

static void Main(string[] args)
{

distance = calcDistance(alpha, Y0, dt, V);

Console.WriteLine("alpha={0:0.#}, dt={1:0.####}\t| X={2:0.####} м.", alpha, dt, distance);
Console.ReadKey();

}
//-------------
static double relief(double X) // функция рельефа
{
return -0.01 * X + -2.5 * Math.Sin(X / 100) + 1.5 * Math.Sin(X / 127);
}
static double calcDistance(double alpha1, double H1, double dt1, double V0)
{
double time = 0;
double Ycurrent=H1; // поточна висота, змінюється з часом...
double Xcurrent=0;
do
{
time += dt;
Ycurrent += -g*dt1;
Xcurrent += V0 * System.Math.Cos(alpha1 * System.Math.PI/180) ;
}
while (Ycurrent >= relief(Xcurrent));
return Xcurrent;
}
}
}

/*
* Досліджуємо кидання камінця під деяким кутом вгору з заданої початкової висоти, якщо місцевість навкруги
* має заданий профіль Y=relief(X), нехтуючи опором повітря.
*
* 1. Реалізувати метод calcDistance, який розраховує дальність кидання камінця
* 2. знайти і вивести на екран залежність результатів розрахунку від часового кроку для заданого значення кута
* 3. оцінити, який крок потрібний для точності по дальності 0.01 м. і для цією точності знайти залежність
* дальності від кута
*/
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Основи програмування

Повідомлення Василь » 11 листопада 2010, 13:42

хз насчет правильности
только первое задание....
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Основи програмування

Повідомлення Максим Нікітченко » 11 листопада 2010, 13:56

пасибо=))
Максим Нікітченко
 
Повідомлень: 12
З нами з: 11 листопада 2010, 12:57

Re: Основи програмування

Повідомлення Василь » 11 листопада 2010, 13:59

using System;
using System.Collections.Generic;
using System.Text;

namespace _5_task
{
class Program
{
// початкові умови
static double V = 10; // швидкість каменя, м/c
static double alpha = 20; // кут кидка у градусах
static double dt = 0.1; // c
static double Y0 = 2; // початкова висота, м
//----
static double g = 9.81; // м/(с*с)

static double distance = 0;

static void Main(string[] args)
{

for (int i = 1; i < 5; i++)
{

distance = calcDistance(alpha, Y0, dt, V);
Console.WriteLine("alpha={0:0.#}, dt={1:0.####}\t| X={2:0.####} м.", alpha, dt, distance);
dt /= 10;
}

Console.ReadKey();

}
//-------------
static double relief(double X) // функция рельефа
{
return -0.01 * X + -2.5 * Math.Sin(X / 100) + 1.5 * Math.Sin(X / 127);
}
static double calcDistance(double alpha1, double H1, double dt1, double V0)
{
double time = 0;
double Ycurrent=H1; // поточна висота, змінюється з часом...
double Xcurrent=0;
double deltaX= System.Math.Cos(alpha1 * System.Math.PI/180);
do
{
time += dt;
Ycurrent += -g * dt1 * dt1; // speed Y

Xcurrent += V0 * deltaX;
}
while (Ycurrent >= relief(Xcurrent));
return Xcurrent;
}
}
}

/*
* Досліджуємо кидання камінця під деяким кутом вгору з заданої початкової висоти, якщо місцевість навкруги
* має заданий профіль Y=relief(X), нехтуючи опором повітря.
*
* 1. Реалізувати метод calcDistance, який розраховує дальність кидання камінця
* 2. знайти і вивести на екран залежність результатів розрахунку від часового кроку для заданого значення кута
* 3. оцінити, який крок потрібний для точності по дальності 0.01 м. і для цією точності знайти залежність
* дальності від кута
*/
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Далі

Повернутись до Семестр 1

Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 1 гість