1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89

С консольного приложения в Dll, Windows Form!

15.11.2011, 10:56. Показов 7351. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание такое: сделать массив для сохранения веса студентов группы из 20 человек. Заполнить массив с помощью класса Random целыми числами в диапазоне от 50 до 100 включительно. Отсортировать массив и вывести на консоль его элементы.
Задание сделано... Вот решение:
C#
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
namespace Lab1
{
    class Program
    {
        static void Main(string[] args)
        {
            Random realRnd = new Random();
            int[] array1 = new int[20];
 
            int min = 50, max = 100;
            Console.WriteLine("Випадковi числа в дiапазонi [" + min + "," + max + "]");
            Array.Sort(array1);
            for (int i = 0; i < 20; i++)
            {
                array1[i] = realRnd.Next(min, max);
                
                Console.WriteLine("Вага студента = " + array1[i] + " кг");
            }
            Console.WriteLine("\nТi ж самi числа, але вже вiдсортованi:");
            Array.Sort(array1);
            for (int i = 0; i < 20; i++)
            {
              Console.WriteLine("Вага студента = " + array1[i] + " кг");
            }
            Console.ReadKey();
        }
    }
}
Но теперь ещё есть дополнительное задание с которым я несправился(.
1) Создать DLL-библиотеку, которая содержит реализацию задания. Указать XML-коментарии.
2) Создать решение, которое включает DLL-библиотеку, консольный проэкт, который тестирует работу библиотечных методов.
3) Создать Windows-проэкт в том самом решении, который включает библиотечные методы.
4) Создать DLL-библиотеку как отдельное решение. Связать библиотеку с Windows-проэктом.
Помогите с реализацией. Спасибо!

Добавлено через 22 часа 10 минут
Что никто неможет подсказать какой код нужно вписать в длл а какой тогда в новый консольный калькулятор???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2011, 10:56
Ответы с готовыми решениями:

Перевод консольного приложения в Windows Form
Доброго времени суток , вот код , который вызывает все ссылки javascript моего сайта в console Помогите пожалуйста переделать его в...

Перевод консольного приложения на Windows Form
Перевести этот код в Visual Studio 2010 в Wuindows Form Application Module Module1 Sub Main() Dim ar As Integer() ...

Перевод консольного приложения на Windows Form
Сортировка слиянием Public Sub MergeSort(ByRef Arr() As Double, ByVal N As Long) Dim C As Boolean Dim I As Long ...

28
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
16.11.2011, 17:51  [ТС]
Студворк — интернет-сервис помощи студентам
И в чём же тогда разница подскажите пожалуйста... В том что в первой случае можно будет увидеть код длл а во втором нет..?

Добавлено через 1 час 52 минуты
Есть ещё одно задание:
В двумерном массиве сохраняется информация про оценки каждого из 20 студентов группы по каждому из 10 предметов. Первая строка - информация про оценки первого студента, вторая - второго и т.д. Вычислить среднюю успеваемость каждого студента.
Решение для консоля готово:
C#
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
41
42
43
namespace Lab__not_random_
{
    class Program
    {
        static void Main(string[] args)
        {
         Console.WriteLine("Оцiнки студентiв.");
         int[,] mas ={{3,5,3,4,2,4,3,5,3,4},                           
                      {2,4,3,4,3,5,5,4,5,3},
                      {3,3,4,5,4,3,4,4,5,4},
                      {4,4,3,5,4,5,4,2,5,4},
                      {3,4,4,5,4,3,4,2,5,4},
                      {5,3,4,5,4,3,4,4,3,4},
                      {3,5,4,5,4,3,4,4,5,3},
                      {2,5,4,5,3,3,5,5,5,5},
                      {5,5,4,5,4,5,5,4,3,3},
                      {3,2,5,5,4,3,4,5,5,4},
                      {5,3,3,5,4,3,4,4,4,5},
                      {3,3,5,5,4,5,5,4,5,2},
                      {5,5,5,5,5,5,4,5,5,5},
                      {4,4,4,3,4,3,5,4,5,4},
                      {2,5,4,5,4,5,4,3,5,3},
                      {4,5,4,5,4,3,4,3,5,5},
                      {5,5,3,5,4,5,4,3,3,4},
                      {4,4,4,5,4,4,4,4,5,3},
                      {3,2,2,5,4,4,4,3,3,4},
                      {5,3,4,4,4,3,3,3,5,5}};
 
            for (int i = 0; i < 20; i++)
            {
                Int32[] tmp = new Int32[mas.GetLength(1)];
                Console.Write("Студент № {0:D2}: ", 1 + i);
                for (int j = 0; j < 10; j++)
                {
                    tmp[j] = mas[i, j];
                    Console.Write(mas[i, j] + " ");
                }
                Console.WriteLine(" Середнiй бал: {0}", tmp.Average());
            }
                Console.ReadKey();
        }
    }
}
А вот что написать в длл я никак немогу понять... Начал делать но выдаёт ошибку:
C#
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
namespace Lab2DLL
{
    public class knowledge
    {
        public static int [,] Otsenki()
        {
     int[,] mas ={{3,5,3,4,2,4,3,5,3,4},                           
                      {2,4,3,4,3,5,5,4,5,3},
                      {3,3,4,5,4,3,4,4,5,4},
                      {4,4,3,5,4,5,4,2,5,4},
                      {3,4,4,5,4,3,4,2,5,4},
                      {5,3,4,5,4,3,4,4,3,4},
                      {3,5,4,5,4,3,4,4,5,3},
                      {2,5,4,5,3,3,5,5,5,5},
                      {5,5,4,5,4,5,5,4,3,3},
                      {3,2,5,5,4,3,4,5,5,4},
                      {5,3,3,5,4,3,4,4,4,5},
                      {3,3,5,5,4,5,5,4,5,2},
                      {5,5,5,5,5,5,4,5,5,5},
                      {4,4,4,3,4,3,5,4,5,4},
                      {2,5,4,5,4,5,4,3,5,3},
                      {4,5,4,5,4,3,4,3,5,5},
                      {5,5,3,5,4,5,4,3,3,4},
                      {4,4,4,5,4,4,4,4,5,3},
                      {3,2,2,5,4,4,4,3,3,4},
                      {5,3,4,4,4,3,3,3,5,5}};
            for (int i = 0; i < 20; i++)
            {
                Int32[] tmp = new Int32[mas.GetLength(1)];
                for (int j = 0; j < 10; j++)
                {
                    tmp[j] = mas[i, j];
                }
                tmp.Average();
 
                return mas[i, j] + tmp;
            }
        }        
    }
}
Помогите с реализацией...
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 19:04
На вопрос о теории отвечать не буду, это долго. Почитай конспект.

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


исправленный код:
КОД
C#
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Program
  {
    static void Main(string[] args)
    {
      int[][] students = knowledge.Otsenki();
      double[] ocenki = knowledge.StudentAverage(students);
    }
  }
 
 
  public class knowledge
  {
    /// <summary>
    /// Создаем двухмерный массив оценок для 10-ти студентов
    /// </summary>
    /// <returns></returns>
    public static int[][] Otsenki()
    {
      int[][] mas = {
                      new int[] {3, 5, 3, 4, 2, 4, 3, 5, 3, 4},
                      new int[] {2, 4, 3, 4, 3, 5, 5, 4, 5, 3},
                      new int[] {3, 3, 4, 5, 4, 3, 4, 4, 5, 4},
                      new int[] {4, 4, 3, 5, 4, 5, 4, 2, 5, 4},
                      new int[] {3, 4, 4, 5, 4, 3, 4, 2, 5, 4},
                      new int[] {5, 3, 4, 5, 4, 3, 4, 4, 3, 4},
                      new int[] {3, 5, 4, 5, 4, 3, 4, 4, 5, 3},
                      new int[] {2, 5, 4, 5, 3, 3, 5, 5, 5, 5},
                      new int[] {5, 5, 4, 5, 4, 5, 5, 4, 3, 3},
                      new int[] {3, 2, 5, 5, 4, 3, 4, 5, 5, 4},
                      new int[] {5, 3, 3, 5, 4, 3, 4, 4, 4, 5},
                      new int[] {3, 3, 5, 5, 4, 5, 5, 4, 5, 2},
                      new int[] {5, 5, 5, 5, 5, 5, 4, 5, 5, 5},
                      new int[] {4, 4, 4, 3, 4, 3, 5, 4, 5, 4},
                      new int[] {2, 5, 4, 5, 4, 5, 4, 3, 5, 3},
                      new int[] {4, 5, 4, 5, 4, 3, 4, 3, 5, 5},
                      new int[] {5, 5, 3, 5, 4, 5, 4, 3, 3, 4},
                      new int[] {4, 4, 4, 5, 4, 4, 4, 4, 5, 3},
                      new int[] {3, 2, 2, 5, 4, 4, 4, 3, 3, 4},
                      new int[] {5, 3, 4, 4, 4, 3, 3, 3, 5, 5},
                    };
      return mas;
    }
 
    /// <summary>
    /// Находим среднюю успеваемость для каждого студента
    /// </summary>
    /// <param name="otsenki">двухмерный массив оценок</param>
    /// <returns>массив средних оценок</returns>
    public static double[] StudentAverage(int[][] otsenki)
    {
      // Средняя оценка для каждого студента
      double[] studentAverage = new double[otsenki.GetLength(0)];
 
      for (int i = 0; i < otsenki.GetLength(0); i++)
      {
        studentAverage[i] = otsenki[i].Average();
      }
      return studentAverage;
    }
 
  }
1
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
17.11.2011, 11:55
Вот тебе полный Solution.
Вложения
Тип файла: zip LabStudents.zip (40.1 Кб, 8 просмотров)
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
17.11.2011, 14:58  [ТС]
2 SergiiK
Спасибо огромнейшее за пример. Только один маленький вопросик по нему:
Как в нём можно сделать так чтобы результат про каждого студента писался в одну строку (как в том консольном приложении что я кидал). например:
Студент № 01: 3 4 5 2 4 2 4 5 3 3 средний бал: 3,5
Заранее спасибо!

Добавлено через 2 часа 9 минут
Вот что получилось реализовать:
C#
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
/// <summary>
    /// Выводим оценки на экран
    /// </summary>
    /// <param name="otsenki">двухмерный массив оценок</param>
    public static void ShowRating(int[][] rating)
    {
        for (int s = 0; s < rating.Length; s++)
        {
         Console.Write("Студент № {0:D2}: ", 1 + s);
          for (int r = 0; r < rating[s].Length; r++)
            {
             Console.Write(" " + rating[s][r]);
            }
        Console.WriteLine();
        }
     }
 
 
 
/// <summary>
    /// Выводим среднюю успеваемость для каждого студента на экран
    /// </summary>
    /// <param name="otsenki">массив средних оценок</param>
    public static void ShowAverageRating(double[] studentAverage)
    {
            for (int s = 0; s < studentAverage.Length; s++)
            {
                Console.WriteLine("Средний бал= " + studentAverage[s]);
            }
       
    }
Как реализовать так чтобы оно писалось в одну строку я незнаю... Чуствую без хороших изменений кода необойтись... нужно както обьеднить ShowAverageRating и ShowRating...
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
17.11.2011, 17:05
Этот код добавь в библиотеку

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/// <summary>
    /// Выводим номер студнета, оченки и среднюю успеваемость для каждого студента на экран
    /// </summary>
    /// <param name="rating">двухмерный массив оценок</param>
    /// <param name="studentAverage">массив средних оценок</param>
    public static void ShowAverageRatingWithRating(int[][] rating, double[] studentAverage)
    {
      for (int s = 0; s < rating.Length; s++)
      {
        Console.Write("Студент № {0:00}: ", s);
 
        for (int r = 0; r < rating[s].Length; r++)
        {
          Console.Write(" " + rating[s][r]);
        }
 
        Console.WriteLine("  средняя успеваемость: " + studentAverage[s]);
      }
    }
А весь код приложения замени на

C#
1
2
3
4
5
6
7
8
9
10
class Program
  {
    static void Main(string[] args)
    {
      int[][] studentsRating = Knowledge.RatingGenerator();
      double[] averageRating = Knowledge.StudentAverage(studentsRating);
      Knowledge.ShowAverageRatingWithRating(studentsRating, averageRating);  
      Console.ReadKey();
    }
  }
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
17.11.2011, 17:50  [ТС]
А что тогда написать в WindowsForm чтобы при нажатии на кнопку этот массив данных показывался в RichTextBox. Вот начало написал а как дальше ума неприложу:
C#
1
2
3
4
5
private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = null;
            int[][] studentsRating = Knowledge.RatingGenerator();
            double[] averageRating = Knowledge.StudentAverage(studentsRating);
Пробывал написаь както так, но оно неработает:
C#
1
richTextBox1.Text += Lab1DLL.Knowledge.StudentAverage(studentsRating);
И загвостка в том что тут есть два типа инт и дабл. Хелп!
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
17.11.2011, 18:06
в библиотеку добавь еще и этот метод

код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/// <summary>
    /// Возвращаем текст с номером студнета, оценки и среднюю успеваемость для каждого студента в виде строки
    /// </summary>
    /// <param name="rating">двухмерный массив оценок</param>
    /// <param name="studentAverage">массив средних оценок</param>
    /// <returns>строка</returns>
    public static string AverageRatingWithRating(int[][] rating, double[] studentAverage)
    {
      string result = string.Empty;
      for (int s = 0; s < rating.Length; s++)
      {
        result += String.Format("Студент № {0:00}: ", s);
 
        for (int r = 0; r < rating[s].Length; r++)
        {
          result += " " + rating[s][r].ToString();
        }
 
        result += "  средняя успеваемость: " + studentAverage[s].ToString() + "\n";
      }
      return result;
    }


а в Form button_click

C#
1
richTextBox1.Text = Lab1DLL.Knowledge.AverageRatingWithRating(studentsRating, averageRating);
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
18.11.2011, 13:18  [ТС]
Подскажите ещё тогда что ещё нужно вписать в код WindowsForm чтобы оно функции брало с внешней длл уже скомпилированной рабочей. Чтобы она небыла как ссылка в проэкте а именно подключённая к проэкту.
Нашёл в интернете вот такое:
C#
1
[DllImport("FindCaptureDevice.dll")]
Но как с этим работать дальше я незнаю...
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
18.11.2011, 13:26
Суть библиотеки в том и заключается, что ее можно поправить не зависимо от самого приложения.
Если ты хочешь, чтобы эти методы библиотеки компилировались в само приложение, то создай эти методы в самом приложении, и не надо заниматься йогой.

C#
1
[DllImport("FindCaptureDevice.dll")]
- это атрибут, в атрибутах я не силен.

ЗДЕСЬ И ДАЛЕЕ ПОПРАВЬТЕ МЕНЯ КТО ЗНАЕТ!!!
предлагаемая тобой конструкция подключает библиотеку динамически, т.е. в процессе работы программы. Также она может подключить библиотеку написанную на С++ с "неуправляемым кодом".

Короче, РЕЗЮМЕ:
Если твой софт работает, то не нажимай больше не на какие кнопки. Тем более не создавай себе дополнительных вопросов от преподавателя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2011, 13:26

Переделать программу из консольного приложения в Windows Form
Помогите переделать программу из консольного приложения в Windows Form в Visual Studio 2008, пожалуйста:)

Из консольного приложения в dll
Доброго времени суток. Есть консольный проект который нужно переделать в dll библиотеку. Вызываться из другой программы будет лишь одна...

Перенос кода консольного приложения в DLL
Была написана программа (а именно классы) которая работала для консоли. Теперь хочу перегнать это дело в виндоус форм и затем сделать из...

Нужно создать dll из консольного приложения
Всем привет! У меня есть проект типа &quot;консольное приложение&quot;. Мне нужно скомпилировать его в dll. В VS и C# я мало смыслю. При поисках...

Компиляция консольного приложения. Ошибка msvcp120.dll
Добрый день. Cсоздаю проект консольного приложения фреймворк 2.0 ставлю(не знаю влияет ли это на проблему) Компилировал на релизе на двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru