Разработка алгоритмов различной структуры и их реализация средствами алгоритмического языка C# электронных таблиц Excel

Автор: Пользователь скрыл имя, 19 Апреля 2012 в 01:57, курсовая работа

Описание работы

Целью данной курсовой работы является закрепление и расширение полученных знаний в области программирования, в частности, связанные с вводом и выводом информации, типами данных, выражениями и операторами. Кроме этого, при разработке курсовой работы большое внимание уделено работе с электронными таблицами: применением арифметических, статистических операторов, а также использованием элементов графического отображения информации.

Содержание

Задание на курсовую работу ……………………………...…..………………1
Замечания руководителя……………………………………….……………...2
Введение…………………………………………………….….………………5
Теоретическая часть……………………………………….…..…..…………..6
1.Алгоритм, виды алгоритмов и способы их реализации…………………...6
1.1.Что такое алгоритм? История возникновения слова алгоритм..………..6
1.2.Свойства алгоритма…………………………….………………….………7
1.3.Способы описания алгоритмов…………………………………………....8
1.4.Базовые структуры программирования………………………………….11
1.4.1.Линейные структуры……………………………………………………11
1.4.2. Разветвляющаяся структура…………………………………………...12
1.4.3. Циклическая структура………………………………………………...13
1.4.4.Цикл с предусловием и цикл с постусловием……………………….13
2. Обзор основных программных средств……………………………….…..16
2.1. Язык программирования С#.………………………………………….....16
2.3.1. Общая информация о языке. ………………………………………….16
2.3.2 Предшественники языка. …………………………………………........17
2.3.3. Особенности языка. …………………………………………................17
2.3.4 Версия 1.0. …………………………………………................................17
2.3.5. Версия 2.0. …………………………………………...............................18
2.3.6. Версия 3.0. …………………………………………...............................19
2.3.7. Версия 4.0. …………………………………………...............................20
2.4. Электронные таблицы Excel. ………………………………………….21
2.4.1. Особенности и применение электронных таблиц. ………………...21
2.4.2. Возможности Microsoft Exсel. …………………………………...….22
3. Практические задания. …………………………………………..............24
3.1. Задание 1. …………………………………………................................24
3.2. Задание 2. …………………………………………...............................28
3.3. Задание 3………………………………………….................................31
3.4. Задание 4………………………………………….................................35
3.5. Задание 5………………………………………….................................40
3.6 Задание 6…………………………………………..................................45
3.7. Задание 7………………………………………….................................49
3.8. Задание 8………………………………………….................................52
3.9. Задание 9………………………………………….................................55
3.10. Задание 10………………………………………….............................57
Заключение ………………………………………….............................59
Список литературы …………………………………………................60

Работа содержит 1 файл

Kursovaya_rabota.docx

— 861.77 Кб (Скачать)

Математическое  решение задачи. Для решения данной задачи нам необходимо использовать  3 цикла и 3 условия, в первом цикле мы создаем последовательность чисел a1-a20, во втором проверяем условия (mas[i] <= 20 && mas[j] <= 20 && mas[i] + mas[j] <= x) и (mas[j] + ob[2] == x), если все условия выполняются, то формируем новый массив чисел i, j, k, если нет выводим сообщение «таких чисел нет».

Словесное описание алгоритма решения:

  1. Ввод им  x, переходим к шагу 2;
  2. Пока i = 0; i < 20 заполняем массив случайными числами, переходим к шагу 3;
  3. Выводим массив mas, переходим к шагу 4;
  4. Пока i = 0; i < 20 и j = i + 1; j < 20, если mas[i] <= 20 && mas[j] <= 20 && mas[i] + mas[j] <= x, перейти к шагу 5;
  5. list.Add(new double[] { i, j, (mas[i] + mas[j]) }), переходим к шагу 6;
  6. Задаем переменной count значение 0, переходим к шагу 7;
  7. Пока i = 0; i < list.Count и j = i + 1; j < 20 выполняем действие double[] ob = list[i], переходим к шагу 8;
  8. Если mas[j] + ob[2] == x, переходим к шагу 10, иначе переходим к шагу 9;
  9. Выводим сообщение «Таких чисел нет», переходим к шагу 11;
  10. Выводим i, j, k, переходим к шагу 11.
  11. Конец.

 

 

 

 

 

 

 

 

 

Блок-схема:

Программа на С#:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _4

{

    class Program

    {

        static void Main(string[] args)

        {

            Random rnd = new Random();

            try

            {

                Console.WriteLine("Введите х");

                double x = double.Parse(Console.ReadLine());

                double[] mas = new double[20];

                List<double[]> list = new List<double[]>();

                Console.WriteLine("\nПоследовательность:");

                for (int i = 0; i < 20; i++)

                {

                    //mas[i] = double.Parse(Console.ReadLine());//ручной

                    mas[i] = rnd.Next(1, 15);//авто

                    Console.WriteLine(mas[i]);//авто

                }//for i

                Console.WriteLine("\n");

                for (int i = 0; i < 20; i++)

                {

                    for (int j = i + 1; j < 20; j++)

                    {

                        if (mas[i] <= 20 && mas[j] <= 20 && mas[i] + mas[j] <= x)

                            list.Add(new double[] { i, j, (mas[i] + mas[j]) });

                    }//for i

                }//for j

                int count = 0;

                for (int i = 0; i < list.Count; i++)

                {

                    for (int j = i + 1; j < 20; j++)

                    {

                        double[] ob = list[i];

                        if (mas[j] + ob[2] == x)

                        {

                            Console.WriteLine("i=" + mas[Convert.ToInt32(ob[0])] + "  j=" + mas[Convert.ToInt32(ob[1])] + "  k=" + mas[j]);

                            count += 1;

                        }

                    }

                }

                if (count == 0) Console.WriteLine("Таких чисел нет");

            }

            catch { Console.WriteLine("Ошибка!"); }

            Console.ReadLine();

        }

    }

}

 

 

 

 

 

 

Тестирование и отладка:

Номер теста

Проверяемый случай

Переменные

Результат

1

Нормальные условия

20

Программа работает нормально

2

Граничные условия

0

Таких чисел нет

3

Экстримальные условия

А

Программа выдает ошибку




 

 

 

 

 

 

Решение задачи на ЭВМ и анализ результатов.

1.

 

2.

 

3.

 

 

Вывод: программа работает исправно, при  различных входных данных, что  подтвержденно различными тестами.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Задание 5

Постановка задачи. Даны действительные числа х1,…,х8. Получить действительную квадратную матрицу порядка 8

                              

Математическое решение задачи. Для решения данной задачи нам  необходимо воспользоваться 2 циклами, в первом мы вручную вводим элементы массива mas, во втором получаем массив res путем возведения элементов массива mas в степень равную номеру строки массива res.

Словесное описание алгоритма решения:

  1. Начало, переходим к шагу 2;
  2. Задаем одномерному массиву mas размерность 8, переходим к шагу 3;
  3. Задаем двумерному массиву res размерность 8x8, переходим к шагу 4;
  4. Пока i = 0; i < 8 вводим элементы массива mas, переходим к шагу 5;
  5. Пока i = 0; i < 8 и j = 0; j < 8 присваиваем массиву res значения mas[j] в степени i+1, выводим массив res, переходим к шагу 6.
  6. Конец.

 

 

 

 

 

 

 

 

 

 

 

Блок-схема:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Программа на С#:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _5

{

    class Program

    {

        static void Main(string[] args)

        {

            Random rnd = new Random();

            try

            {

                double[] mas = new double[8];

                double[,] res = new double[8, 8];

                Console.WriteLine("Введите значения x1-x8");

                for (int i = 0; i < 8; i++)

                {

                    mas[i] = double.Parse(Console.ReadLine());//ручной

                    //mas[i] = rnd.Next(1, 99);//авто

                    //Console.WriteLine(mas[i]);//авто

                }//for i

                Console.WriteLine("\n");

 

                for (int i = 0; i < 8; i++)

                {

                    Console.WriteLine();

                    for (int j = 0; j < 8; j++)

                    {

                        res[i, j] = Math.Pow(mas[j], i+1);

                        Console.Write("{0}   ", res[i, j]);

                    }//for i

                }//for j

            }

            catch { Console.WriteLine("Ошибка!"); }

            Console.ReadLine();

 

        }

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тестирование и отладка:

Номер теста

Проверяемый случай

Вводимые  данные

Результат

1

Нормальные  условия

1,2,3,4,5,6,7,8

Программа работает нормально

2

Граничные условия

0,0,0,0,0,0,0,0

Матрица из нулей

3

Экстримальные условия

А

Программа выдает ошибку




 

 

 

 

 

 

Решение задачи на ЭВМ и анализ результатов.

1. 

2.

3.

Вывод: программа работает исправно, при  различных входных данных, что  подтвержденно различными тестами.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Задание 6.

Постановка  задачи. Дано натуральное число n. Необходимо выяснить сколько положительных элементов содержит матрица А размером nxn при выполнении условия aij = cos(i^2 – n*j)

Математическое  решение задачи. Для решения данной задачи необходимо воспользоваться  циклом, в  котором мы присваиваем  элементам значения cos(i ^2 + n * j) (n- размерность массива).

Словесное описание алгоритма решения:

    1. Начало, переходим к шагу 2;
    2. Задаем переменной n значение 0, переходим к шагу 3;
    3. Если введенное нами значение n- число, переходим к шагу 4, иначе переходим к шагу 10;
    4. Задаем массиву mas размерность nxn, переходим к шагу 5;
    5. Задаем переменной count значение 0, переходим к шагу 6;
    6. Пока i = 0; i < n и j = 0; j < n присваиваем элементам массива mas значения cos(i * i + n * j), переходим к шагу 7;
    7. Выводим mas[i,j], переходим к шагу 8;
    8. Если mas[i,j] больше нуля увеличиваем значение переменной count на 1, переходим к шагу 9;
    9. Выводим значение переменной count, переходим к шагу 11;
    10. Выводим сообщение «Введено не число»
    11. Конец.

 

 

 

 

 

 

 

 

 

 

 

Блок-схема:

 

 

Программа на C#:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _6

{

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                Random rnd = new Random();

                int n = 0;

                Console.WriteLine("Введите n");

                if (int.TryParse(Console.ReadLine(), out n))

                {

                    double[,] mas = new double[n, n];

                    int count = 0;

                    for (int i = 0; i < n; i++)

                    {

                        Console.WriteLine();

                        for (int j = 0; j < n; j++)

                        {

                            mas[i, j] = Math.Cos(i * i + n * j);

                            Console.Write("{0:f}   ",mas[i, j]);

                            if (mas[i, j] > 0) count += 1;

                        }

                    }

                    Console.Write("\nКоличество положительных элементов ="+count);

 

                }

                else Console.WriteLine("Введено не число!");

            }//try

            catch { Console.WriteLine("Ошибка!"); }

            Console.ReadLine();

 

 

        }

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тестирование и отладка:

 

Номер теста

Проверяемый случай

Вводимые  данные

Результат

1

Нормальные  условия

4

Программа работает нормально

2

Граничные условия

0

Пустая  матрица

3

Экстримальные условия

А

Программа выдает ошибку




 

 

 

 

 

Решение задачи на ЭВМ и анализ результатов.

1.

 

2.

 

3.

 

Вывод: программа работает исправно, при  различных входных данных, что  подтвержденно различными тестам.

 

    1. Задание 7.

Постановка задания. Даны вещественные числа а1,…,а25. И необходимо умножить каждый член последовательности аi (i = 1,…,25) на квадрат её наименьшего члена, если аi≥0, и на квадрат её наибольшего члена, если аi<0

Математическое решение алгоритма. Для решения данной задачи необходимо воспользоваться циклом, в  котором  мы заполняем массив случайными числами, затем необходимо найти минимальный  и максимальный элементы массива, и  если элемент массива больше или  равен 0, то присваиваем ему значение mas[i] *= min * min, иначе присваиваем ему  значение mas[i] *= max * max. 

  Словесное описание алгоритма решения:

    1. Начало, переходим к шагу 2;
    2. Задаем массиву mas размерность 25, переходим к шагу 3;
    3. Пока int i = 0; i < 25 заполняем массив mas случайными числами, переходим к шагу 4;
    4. Задаем переменной max значение double.MinValue, переходим к шагу 5;
    5. Задаем переменной min значение double.MaxValue, переходим к шагу 6;
    6. Пока int i = 0; i < 25, если mas[i] > max, max = mas[i], если mas[i] <min, min = mas[i], переходим к шагу 7;
    7. Пока int i = 0; i < 25, если mas[i] >= 0 переходим к шагу 8, иначе переходим к шагу 9;
    8. mas[i] *= min * min, переходим к шагу 10;
    9. mas[i] *= max * max, переходим к шагу 10;
    10. Выводим mas[i], переходим к шагу 11;
    11. Конец

 

 

 

 

 

 

Блок-схема:

Программа на С#:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _7

{

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                Random rnd = new Random();

                double[] mas = new double[25];

                    for (int i = 0; i < 25; i++)

                    {

                        //mas[i] = int.Parse(Console.ReadLine());//ручной ввод

                        mas[i] = rnd.Next(10, 25)-15;//авто

                        Console.WriteLine("{0}  ", mas[i]);//авто

                    }

                    double max = double.MinValue;

                    double min = double.MaxValue;

                    for (int i = 1; i < 25; i++)

                    {

                        if (mas[i] > max) max = mas[i];

                        if (mas[i] <min) min = mas[i];

                       

                    }//for

                    Console.WriteLine("\nРезультат:\n");

                    for (int i = 0; i < 25; i++)

                    {

                        if (mas[i] >= 0) mas[i] *= min * min;

                        else mas[i] *= max * max;

                        Console.WriteLine(mas[i]);

                    }

 

            }//try

            catch { Console.WriteLine("Ошибка!"); }

            Console.ReadLine();

 

 

        }

    }

}

 

 

 

 

Тест не требуется

 

 

 

 

 

 

 

 

 

    1. Задание 8.

Постановка задачи. Необходимо определить функцию f(x)=-5x/(x^2 + 2), вычислить её значение при х=2,7 и построить таблицу значений для х[-2; 10] с шагом 0,75.

Математическое  решение задачи. Для решения данной задачи необходимо воспользоваться циклом, в  котором мы вычисляем значения функции 5x/(x^2 + 2) , за значения х мы берем значение переменной i с приращением 0,75.

Информация о работе Разработка алгоритмов различной структуры и их реализация средствами алгоритмического языка C# электронных таблиц Excel