Форум программистов, компьютерный форум CyberForum.ru

Преобразование Уолша Адамара! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция http://www.cyberforum.ru/cpp-beginners/thread362305.html
есть функция Preobr в неё передаю число, длину, и массив в которое должно записаться число p.n как сделать так чтобы функция Preobr сразу записывала в число в массив p.ch #include "stdlib.h" #include "malloc.h" #include "stdio.h" #include <iostream.h> #include <iomanip> class Chislo { public:
C++ Дана строка S, что содержит действительное число Дана строка S, что содержит действительное число в формате с плавающей точкой, и целое число N(>0). Вывести набор символов, изображающие первые N цифр дробной части данного действительного числа ( без округления) http://www.cyberforum.ru/cpp-beginners/thread362300.html
C++ суммы ряда
f(x)=значок суммы ряда(вверху бесконечность;внизу i=1) (((-1)^2i+1))*(x^2i))\(3i-5)! !-фактариал ^-степень
C++ Простейший интерпретатор арифметических выражений со скобками
Никто не знает где можно найти исходник или хотя бы алгоритм такой программы? Наверняка что-то подобное уже не раз делали.
C++ Циклический сдвиг массива влево http://www.cyberforum.ru/cpp-beginners/thread362268.html
Дан массив y1, ... , y20. Сформировать массив Z1, ... , Z20, элементы которого соответствуют элементам yi , сдвинутым на одну позицию влево, т.е. Z1 = y2 ; Z2 = y3 ; ... ; Z19 = y20 ; Z20 = y1. Умножить все элементы Zi на 2. Использовать вывод из файла и указатели Добавлено через 12 минут #include <iostream> #include <conio.h>
C++ Действия над арифметическим рядом Написать программу, позволяющую в зависимости от введенного параметра Pr (например, 1, 2, 3) выполнить одно из следующих действий: 1. Вычислить n - ый элемент заданного арифметического ряда. 2. Вычислить сумму n первых элементов заданного ряда. 3. Вычислить значение суммы арифметического ряда с точностью Eps. В программе использовать возможности операторов if - else или switch, while или do -... подробнее

Показать сообщение отдельно
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
07.10.2011, 15:20  [ТС]     Преобразование Уолша Адамара!
вот мое представление работы программы
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
#include <stdafx.h>
#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main()
{
    const int n = 4
    int g, u, v, x, y; b0, p0, b1, p1;
    int matr[n][n];
    cout<<"vvedite u, u="; cin>>u;
    cout<<"vvedite v, v="; cin>>v;
    /* еще необходимо определить табличку для для двоичного перевода, хз как лучше ето сделать
    В двоичном представлении (первый столбец b1, второй столбец b0, то есть для единицы b1=0; b0=1)
    0=0,0
    1=0,1
    2=1,0
    3=1,1 */
 
    for (..........)
    {
    
        g[x,y,u,v]=pow(-1, [b0(x)*p0(u)+b0(y)*p0(v)]+[b1(x)*p1(u)+b1(y)*p1(v)]);
    /* я так понимаю тут надо чтоб создавалась пустая матрица, и начинался расчет каждого
    элемента, там типо g++, потом x++, y++ ,с циклом for (x=0; x<=3;x++) то же самое для 
    y и для g, незнаю как лучше чтобы программа считала каждый елемент где то его запоминала 
    в памяти а потом заполняла матрицу, или после подсчета каждого g, сразу вписывала коеф в 
    соответствующую ячейку, ну наверняка 1 вариант будет лучше, просто препод не смотрит 
    программу, главное чтоб она работала и выдавала что надо*/
    }
    cout<<"matrica Uolsha-Adamara imeet vid"<<endl;
    cin.get();
    cin.get();
}
    
// собственно надеюсь на вашу помощь
Добавлено через 5 минут
вот еще вторая задача, надо дописать код для обратного дискретно косинусного преобразования, ну заодно можете сделать более оптимальным если кому не трудно
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
// proj1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    const int n = 4;
    double Gf[n];
    const double pi = 3.141592653589;
    double Pt[n] = {4, 5, 3, 7};
    int f = 0;
    double Cf = 0;
    double X=0;
    for( int i = 0; i < n; i++)
    {
        X=0;
        f = i;
        for (int t = 0; t < n; t++)
        {
            X += Pt[t] * cos(((2*t + 1)*pi*f)/(2*n));
            //cout << X << " ";
        }
        if (i == 0)
            Cf = 1./sqrt((double)2);
        else
            Cf = 1;
        Gf[i] = (2./(sqrt((double)2*n)))*Cf * X;
    }
    for(int i = 0; i < n; i ++)
        cout << Gf[i] << " ";
    cout << "\n" << "OBRATNOE:" << endl;
 
    for( int i = 0; i < n; i++)
    {
        X=0;
        f = i;
        for (int t = 0; t < n; t++)
        {
            X += Pt[t] * cos(((2*t + 1)*pi*f)/(2*n));
            //cout << X << " ";
        }
        if (i == 0)
            Cf = 1./sqrt((double)2);
        else
            Cf = 1;
        Gf[i] = (2./(sqrt((double)2*n)))*Cf * X;
    }
    for(int i = 0; i < n; i ++)
        cout << Gf[i] << " ";
    return 0;
    cin.get();
    cin.get();
}
Добавлено через 21 минуту
вот к первому заданию кому лень качать и смотреть что там
В Задании надо рассчитать коэффициенты матрицы для U=3, V=1;
H(u,v)=∑_(x=0)^(N-1)▒∑_(y=0)^(N-1)▒〖P(x,y)*pow((-1),〗 ∑_(i=0)^(n-1)▒〖[bi(x)*pi(u)〗+bi(y)*pi(v)])
G (x,y,u,v) – коэффициент расчета
В двоичном представлении (первый столбец b1, второй столбец b0, то есть для единицы b1=0; b0=1)
0=0,0
1=0,1
2=1,0
3=1,1
Для U p0(0)=b0(0)=0, p1(0)=b1(0)+b0(0);
Для V p0(0)=b0(0)=0, p1(0)=b1(0)+b0(0); Программно реализовать для U=3, V=1
Пример решения
G(0,0,3,1)=(-1)[b0(0)*p0(3)+b0(0)*p0(1)]+[b1(0)*p1(3)+b1(0)*p1(1)]=1
G(0,1,3,1)=(-1)[b0(0)*p0(3)+b0(1)*p0(1)]+[b1(0)*p1(3)+b1(1)*p1(1)]=1
G(0,2,3,1)=(-1)[b0(0)*p0(3)+b0(2)*(p0(1)]+[b1(0)*p1(3)+b1(2)*p1(1)]=-1
G(0,3,3,1)=(-1)[b0(0)*p0(3)+b0(2)*(p0(1)]+[b1(0)*p1(3)+b1(3)*p1(1)]=-1
посчитаны коэффициенты для 1 строчки, для второй третьей и четвертой они соответственно считаются аналогично к примеру для второй вот:
g(1,0,3,1)=-1
g(1,1,3,1)=-1
g(1,2,3,1)=1
g(1,3,3,1)=1
Исходная матрица будет иметь вид 1 1 -1 -1
-1 -1 1 1
1 -1 -1 1
-1 1 1 -1
в 1 коде я написал формулу которая будет основной, кто посмотрит впринципе разберется, тем более тут большинство неплохо знает математику, так что если смазаны символы суммы то формула в первом коде

Добавлено через 16 часов 9 минут
так че поможет кто?
 
Текущее время: 03:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru