Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 1
Регистрация: 23.04.2015
Сообщений: 31

Написать программу которая решает уравнение

10.03.2016, 08:56. Показов 2005. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно написать программу, которая решает уравнение
https://www.cyberforum.ru/cgi-bin/latex.cgi?{f}_{m}=\sum_{k=0}^{\infty}{x}_{k}{y}_{k-m}<br />
m=0,1,2...
задано два массива
https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{k}={1,2,3}<br />
{y}_{k}={1,3,5}
нужно найти https://www.cyberforum.ru/cgi-bin/latex.cgi?{f}_{m}

Добавлено через 13 часов 0 минут
Помогите пожалста??? здесь самое трудно ето организовать цикл
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2016, 08:56
Ответы с готовыми решениями:

Написать программу, которая решает уравнение ax+b=0 относительно x для любых чисел a и b
Помогите, пожалуйста, решить задачу. Написать программу, которая решает уравнение ax+b=0 относительно x для любых чисел a и b,...

Написать програму, которая решает уравнение
роботча формула {X}_{k}=\sum_{n=0}^{n-1}x(n){W}^{nk}, k=0,1,...,N-1-дискретне преобразования Фурье ...

Код неправильно решает уравнение
Помогите пожалуйста решить уравнение. Нам дано x,y,z нужно решить уравнение. Нужно чтобы сошлось с ответом w. Вот код, помогите исправить,...

11
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
10.03.2016, 20:15
Лучший ответ Сообщение было отмечено hacker226 как решение

Решение

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
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Convolution
{
    class Convolution
    {
        private int[] x;
        private int[] y;
        public void Initialization()
        {
            x=new [] {1,2,3};
            y=new [] {1,3,5};
            Console.WriteLine("Были введены следующие векторы:\n");
 
            Console.WriteLine("Вектор х:");
            foreach (int i in x)
                Console.WriteLine(i);
            Console.WriteLine("\nВектор у:");
            foreach (int i in y)
                Console.WriteLine(i);
        }
 
        private int[] DefineConvolution()//x должно быть большей (либо равной) длины
        {
            bool full=false;
            y = y.Reverse().ToArray();
            int[] result=new int[x.Length+y.Length-1];
            int resultIndex=0;
            for (int r = 0; r !=0||!full ; r++)
            {
                if (r > x.Length - 1) full = true;
                if(full) r -= 2;
 
                for (int j = 0; j < r+1; j++)
                    result[resultIndex] += x[j]*y[y.Length-1-r+j];
 
                resultIndex++;
            }
 
            return result;
        }
 
        public void ShowResult()
        {
            Console.WriteLine("\nИх свёртка равна вектору:");
            foreach (int i in DefineConvolution())
                Console.WriteLine(i);
            Console.Read();
        }
    }
}
 
namespace Convolution
{
    class Program
    {
        static void Main()
        {
            Convolution convolution=new Convolution();
            convolution.Initialization();
 
            convolution.ShowResult();
        }
    }
}
Как-то так...
Мне вот интересно - можно ли это решить не через цикл, а через Linq... Думал опробовать Linq, но не вышло.
1
0 / 0 / 1
Регистрация: 23.04.2015
Сообщений: 31
17.03.2016, 19:56  [ТС]
я извиняюсь но программа работает неправильно при варианте
х = {5,4,3}
у = {1,5,6}
должно получиться
*https://www.cyberforum.ru/cgi-bin/latex.cgi?{f}_{m} = {18 ,39, 53 ,29 ,5}
а програма видает
https://www.cyberforum.ru/cgi-bin/latex.cgi?{f}_{m} = {5,29, 53 ,29 ,5}
я незнаю как исправить ошибку помогите пожалуста?
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
17.03.2016, 22:42
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
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Convolution
{
    class Convolution
    {
        private int[] x;
        private int[] y;
        public void Initialization()
        {
            x=new [] {5,4,3};
            y=new [] {1,5,6};
            Console.WriteLine("Были введены следующие векторы:\n");
 
            Console.WriteLine("Вектор х:");
            foreach (int i in x)
                Console.WriteLine(i);
            Console.WriteLine("\nВектор у:");
            foreach (int i in y)
                Console.WriteLine(i);
        }
 
        private int[] DefineConvolution()//x должно быть большей (либо равной) длины
        {
            bool full=false;
            y = y.Reverse().ToArray();
            List<int> yList = y.ToList();
            
            int[] result=new int[x.Length+y.Length-1];
            
            for (int r = 0; r <result.Length ; r++)
            {
                if (r > x.Length - 1) full = true;
 
                if (!full)
                    for (int j = 0; j < r + 1; j++)
                        result[r] += x[j] * y[y.Length - 1 - r + j];
                else
                {
                    yList.Insert(0,0);
                    yList.RemoveAt(yList.Count-1);
                    y = yList.ToArray();
                    result[r] = ArrayMultiplacation(x, y);
                }
                
            }
 
            return result;
        }
 
        private int ArrayMultiplacation(int[] a, int[] b)
        {
            int sum = 0;
            for (int i = 0; i < a.Length; i++)
            {
                sum+=a[i]*b[i];
            }
            return sum;
        }
 
        public void ShowResult()
        {
            Console.WriteLine("\nИх свёртка равна вектору:");
            foreach (int i in DefineConvolution())
                Console.WriteLine(i);
            Console.Read();
        }
    }
}
Добавлено через 4 минуты
Нужно было мне с самого начала сделать программу более ясной прежде всего для себя. Теперь её работа прозрачна и довольно понятна... По поводу свёртки замечу в свою очередь, что должна получиться такая последовательность {5,29,53,39,18}. Можете ещё проверить работу по следующей статье.

Добавлено через 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Convolution
{
    class Convolution
    {
        private int[] x;
        private int[] y;
        public void Initialization()
        {
            x=new [] {2,1,3,-1};
            y=new [] {-1,1,2};
            Console.WriteLine("Были введены следующие векторы:\n");
 
            Console.WriteLine("Вектор х:");
            foreach (int i in x)
                Console.WriteLine(i);
            Console.WriteLine("\nВектор у:");
            foreach (int i in y)
                Console.WriteLine(i);
        }
 
        private int[] DefineConvolution()//x должно быть большей (либо равной) длины
        {
            bool full=false;
            int difference = x.Length - y.Length;
            y = y.Reverse().ToArray();
            List<int> yList = y.ToList();
 
            if (difference > 0)
            {
                for (int i = 0; i < difference; i++)
                    yList.Insert(0, 0);
                List<int>temp = y.ToList();
                temp = yList;
                y = temp.ToArray();
            }
            
            int[] result=new int[x.Length+y.Length-1];
            
            for (int r = 0; r <result.Length ; r++)
            {
                if (r > x.Length - 1) full = true;
 
                if (!full)
                    for (int j = 0; j < r + 1; j++)
                        result[r] += x[j] * y[y.Length - 1 - r + j];
                else
                {
                    yList.Insert(0,0);
                    yList.RemoveAt(yList.Count-1);
                    y = yList.ToArray();
                    result[r] = ArrayMultiplacation(x, y);
                }
                
            }
 
            return result;
        }
 
        private int ArrayMultiplacation(int[] a, int[] b)
        {
            int sum = 0;
            for (int i = 0; i < a.Length; i++)
            {
                sum+=a[i]*b[i];
            }
            return sum;
        }
 
        public void ShowResult()
        {
            Console.WriteLine("\nИх свёртка равна вектору:");
            foreach (int i in DefineConvolution())
                Console.WriteLine(i);
            Console.Read();
        }
    }
}
Исправлено для случая, когда второй массив имеет меньшую длину.
0
0 / 0 / 1
Регистрация: 23.04.2015
Сообщений: 31
17.03.2016, 23:15  [ТС]
спасибо ! но мне нужно штоби масив https://www.cyberforum.ru/cgi-bin/latex.cgi?y после того как ми его реверснули ишол в лево ане https://www.cyberforum.ru/cgi-bin/latex.cgi?x ишол в право по возможности прошу ето исправить. должно бить вот так как в пдф файле но он на украинском
Вложения
Тип файла: pdf LAB1.pdf (290.0 Кб, 3 просмотров)
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
18.03.2016, 09:36
Лучший ответ Сообщение было отмечено hacker226 как решение

Решение

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace Convolution
{
    class Convolution
    {
        private int[] x;
        private int[] y;
        public void Initialization()
        {
            x = new[] { 5, 4, 3 };
            y = new[] { 1, 5, 6 };
            
            if (x.Length < y.Length)
            {
                int[] temp = x;
                x = y;
                y = temp;
            }
            Console.WriteLine("Были введены следующие векторы:\n");
 
            Console.WriteLine("Вектор х:");
            foreach (int i in x)
                Console.WriteLine(i);
            Console.WriteLine("\nВектор у:");
            foreach (int i in y)
                Console.WriteLine(i);
        }
 
        private int[] DefineConvolution()
        {
            bool full = false;
            int difference = x.Length - y.Length;
            x = x.Reverse().ToArray();//поменять х на у для линенйной свёртки
            List<int> yList = y.ToList();
 
            if (difference > 0)
            {
                for (int i = 0; i < difference; i++)
                    yList.Insert(0, 0);
                List<int> temp = y.ToList();
                temp = yList;
                y = temp.ToArray();
            }
 
            int[] result = new int[x.Length + y.Length - 1];
 
            for (int r = 0; r < result.Length; r++)
            {
                if (r > x.Length - 1) full = true;
 
                if (!full)
                    for (int j = 0; j < r + 1; j++)
                        result[r] += x[j] * y[y.Length - 1 - r + j];
                else
                {
                    yList.Insert(0, 0);
                    yList.RemoveAt(yList.Count - 1);
                    y = yList.ToArray();
                    result[r] = ArrayMultiplacation(x, y);
                }
 
            }
 
            return result;
        }
 
        private int ArrayMultiplacation(int[] a, int[] b)
        {
            int sum = 0;
            for (int i = 0; i < a.Length; i++)
            {
                sum += a[i] * b[i];
            }
            return sum;
        }
 
        public void ShowResult()
        {
            Console.WriteLine("\nИх свёртка равна вектору:");
            foreach (int i in DefineConvolution())
                Console.WriteLine(i);
            Console.Read();
        }
    }
 
    class Program
    {
        static void Main()
        {
            Convolution convolution = new Convolution();
            convolution.Initialization();
 
            convolution.ShowResult();
        }
    }
}
Ну, если так как Вы хотите... Добавлена возможность вводить массивы любой длины (без разницы - больше первый массив или меньше).
1
0 / 0 / 1
Регистрация: 23.04.2015
Сообщений: 31
23.03.2016, 16:55  [ТС]
а можно сделать так чтобы вывод сигналов и свертки осуществлялся не вертикально а гризонтально
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
24.03.2016, 20:05
Лучший ответ Сообщение было отмечено hacker226 как решение

Решение

апдейт
1
0 / 0 / 1
Регистрация: 23.04.2015
Сообщений: 31
24.03.2016, 20:15  [ТС]
вивод свертки наоборот должен бить! поправте пожалста
виводит 28 23 66 78 58 35 а должно бить наоборот 35 58 78 66 23 28
код скиньте также в тему спасибо заранее
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
24.03.2016, 20:51
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace Convolution
{
    class Convolution
    {
        private int[] x;
        private int[] y;
        public void Initialization()
        {
            x = new[] { 1, 5 };
            y = new[] { 5, 4, 3 };
            Console.WriteLine("Были введены следующие векторы:\n");
 
            Console.Write("Вектор х:");
            foreach (int i in x)
                Console.Write(i+" ");
            Console.Write("\nВектор у:");
            foreach (int i in y)
                Console.Write(i+" ");
        }
 
        private int[] DefineConvolution()
        {
            bool full=false;
            int difference = x.Length - y.Length;
            
            if (difference < 0)
            {
                int[] temp;
                temp = x;
                x = y;
                y = temp;
 
                difference = Math.Abs(x.Length - y.Length);
            }
 
            y = y.Reverse().ToArray();//поменять х на у для линейной свёртки
            List<int> yList = y.ToList();
 
            for (int i = 0; i < difference; i++)
                yList.Insert(0, 0);
            y = yList.ToArray();
            
            int[] result=new int[x.Length+y.Length-1];
            
            for (int r = 0; r <result.Length ; r++)
            {
                if (r > x.Length - 1) full = true;
 
                if (!full)
                    for (int j = 0; j < r + 1; j++)
                        result[r] += x[j] * y[y.Length - 1 - r + j];
                else
                {
                    yList.Insert(0,0);
                    yList.RemoveAt(yList.Count-1);
                    y = yList.ToArray();
                    result[r] = ArrayMultiplacation(x, y);
                }
                
            }
 
            List<int> resultList = new List<int>();
            resultList = result.ToList();
            resultList.RemoveRange(result.Length - difference, difference);
            result = resultList.ToArray();
            return result;
        }
 
        private int ArrayMultiplacation(int[] a, int[] b)
        {
            int sum = 0;
            for (int i = 0; i < a.Length; i++)
            {
                sum+=a[i]*b[i];
            }
            return sum;
        }
 
        public void ShowResult()
        {
            Console.WriteLine("\nИх свёртка равна вектору:");
            foreach (int i in DefineConvolution())
                Console.Write(i+" ");
            Console.Read();
        }
    }
}
Добавлено через 5 минут
Но вот с направлением (хотя оно должно быть единственно верным) - прежде всего Вы определитесь (все остальные Ваши желания вполне понятны и, признаю, программа действительно работала некорректно). И читайте, что написано в комментариях - если написано "//поменять х на у для линейной свёртки" (Вы раньше хотели почему-то последовательность в обратном направлении), то и меняйте себе на здоровье как Вам лично заблагорассудится, а меня увольте.

P.S. Надеюсь (вернее, уверен) - это был последний апдейт. Дальше учите Си Шарп и пишите программы для своей же пользы сами. Удачи в этом.
0
0 / 0 / 1
Регистрация: 23.04.2015
Сообщений: 31
24.03.2016, 20:56  [ТС]
спасибо огромное ! простите за тупость и надоедчивость

Добавлено через 2 минуты
baliar, спасибо огромное ! простите за тупость и надоедчивость
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
24.03.2016, 21:19
Да ладно. Это всё из-за постоянных исправлений, а они в свою очередь из-за отсутствия должного тестирования, поскольку я больше занимаюсь своими собственными учебными программами. Так что, можно сказать мы квиты - Вам нужно было тестировать и натыкаться на ошибки - мне постоянно исправлять, в какой-то степени я сам себя наказал. Так что и мне и Вам это своеобразный опыт.

Добавлено через 3 минуты
Но я больше не хочу получать пачки сообщений в личку об ошибках... Полагаю их в этой версии и не будет (но даже, если что-то не так - нет желания постоянно ковырять эту программу)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2016, 21:19
Помогаю со студенческими работами здесь

Написать программу для решения трансцендентного уравнение
Здравствуйте! Необходимо разработать программу для решения уравнения tg(x)=|m|/x, где m изменяется в интервале . Точность решения...

Написать программу, которая подсчитывает:
Задачку нужно сделать в консольном режиме а условие следующие: периметр треугольника, заданного координатами вершин x1, y1, x2, y2, x3,...

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

Написать программу, которая рисует треугольники
Здравствуйте! Помогите пожалуйста написать программу которая рисует треугольники по координатам которые задание из файла. Буду очень...

Написать программу, которая вычисляет последовательность
Написать программу, которая вычисляет последовательность p=-(X/1*2*3)+(y^3/3*4*5)-(x^5/5*6*7)+(y^7/7*8*9), число членов...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru