Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.83
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
#1

Вейвлет Хаара 2.Ввод и вывод. - C++

30.11.2011, 15:18. Просмотров 4180. Ответов 32
Метки нет (Все метки)

Есть две программы. 1-ая это прямое преобразование Хаара. 2-ая это собственно обратное. Что нужно бы сделать. Нужно считать файл input.dat проделать преобразования 1-ой программой, и получить файл output.dat в которое выводиться это преобразование. Затем взять файл ounput.dat и проделать обратное преобразование 2-ой программой и вывести в файл output2.dat, чтобы потом можно было сравнить с файлом input.dat. вывод должен происходить в столбик. Число элементов массива в каждом файле можно записать в начале. И самый главный вопрос, можно ли сделать так, чтобы при вводе появлялась консоль, в которой бы запрашивалась имя входного и выходного файла. Искал в интернете ничего про это не нашел, кроме того что в UNIX можно перенаправлять потоки и таким образом это реализовывать. А как это сделать для WINDOWS не очень понятно. может кто подскажет где про это можно почитать, или даст какой нибудь пример кода...или просто подсказку. Если нужно код 1ой и 2ой программы выложу.
Заранее спасибо за помощь!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2011, 15:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вейвлет Хаара 2.Ввод и вывод. (C++):

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод - C++
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Поменять консольный ввод-вывод на файловый ввод-вывод - C++
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...

Запись выражений, ввод–вывод информацииЗапись выражений, ввод–вывод информации - C++
Задача 2.1. Пользуясь только операцией умножения, вычислить (A в 7-ой степени) за четыре операции. Задача 2.2. Очистить экран,...

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур - C++
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг) не выводит на экран? Само задание: О каждой книге ...

Каскады хаара - C++
Всем привет. Кто нибудь пожалуйста дайте ссылку для скачивания cvhaartraining.lib, очень нужна эта библа. Заранее спасибо!

Товарищи помогите с вейвлетом Хаара - C++
#include <iostream> #include <time.h> using namespace std; int main () { int n; std::cout << "Enter n:\n>"; ...

32
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
30.11.2011, 20:45 #2
Сложно как-то сформулировали. Я так понял вам нужна консольная программа которая бы "кормила" двум другим программам файлы на вычисление?
0
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
01.12.2011, 00:42  [ТС] #3
На самом деле, задумавшись я понял вот что. Мне нужно сделать так, чтобы был входной файл, производилось изменение(преобразование) данного файла, затем полученные значения выдаются в выходной файл.

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
#include <iostream>
using namespace std;
 
int main ()
{
    int n;
std::cout << "Enter n:\n>";
std::cin >> n;
float* a = new float[n];
for (int k = 0; k <= n-1; k++)
{
    std::cin >> a[k];
}
int m;
float *b=new float [m];
float *c=new float [m];
m = n/2;
 
for (int j=0; j<m ; j++)
{
        b[j]=(a[2*j]-a[2*j+1])/2;
        c[j]=(a[2*j]+a[2*j+1])/2;
}
 
std::cout<<"raznost: ";
for(int j=0; j<m;j++)
{
      std::  cout<<b[j]<<endl<<" ";
}
 
std::cout<<"\n";
std::cout<<"summa: ";
for(int j=0; j<m;j++)
{
        std::cout<<c[j]<<endl<<" ";
}
std::cout<<"\n";
//system("PAUSE");
return 1;
}
выходной файл, я хочу использовать во второй программе. собственно это обратное преобразование. я делаю выходной файл первой программы входным для второго. делаю преобазование...
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
#include <iostream>
using namespace std;
int main ()
{
        int n; 
        std::cout << "Enter n:\n>";
        std::cin >> n;
        float* a = new float[n];
        std::cout<<"massiv a:\n";
        for (int i = 0; i <= n-1; i++)
        {
           std::cin >> a[i];
        }
        float* b = new float[n];
        std::cout<<"massiv b:\n";
        for (int j = 0; j <= n-1; j++)
        {
            std::cin >> b[j];
        }
         float* c = new float [n*2];
        std::cout<<"ishodnii: \n ";
        for(int k = 0, i = 0; i < n; k+=2, i++)
        {
                  c[k] = a[i] + b[i];
                  c[k+1] = a[i] - b[i];
        }
 
        for(int k=0; k<n*2; k++)
        {
                std:: cout<<c[k]<<endl<<" ";       
        }
        //system("pause");
}
получаю выходной файл, который должен быть абсолютно похож на входной файл 1ой программы, следственно это всё проделывается, лишь для определения правильности или неправвильности преобразования, т.к для большого числа точек это трудоёмко.
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
01.12.2011, 14:37 #4
Так и не понял в чем вопрос...
0
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
01.12.2011, 18:18  [ТС] #5
1 ое. Объясните мне пожалуйста как мне сделать ввод массива коэффицентов не из консоли, а из файла. И вывод полученых значений в файл.

Добавлено через 1 час 21 минуту
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
#include <iostream>
#include<fstream>
using namespace std;
 
int n;
int m = n/2;
ifstream f1("input.txt");
ofstream f2("output.txt");
void InArray (float []);
void OutArray(float [],float []);
void Change(float [],float [],float []);
 
int main()
{
     float a[n];
     float b[m];
     float c[m];
     InArray(a);
     OutArray(b,c);
     Change(a,b,c);
     }
 
void InArray(float a[])
{
     for (int k = 0; k <= n-1; k++)
     {
         f1>> a[k];
     }
}
 
void Change(float a[],float b[],float c[])
{
     for (int j=0; j<m ; j++)
         {
              b[j]=(a[2*j]-a[2*j+1])/2;
              c[j]=(a[2*j]+a[2*j+1])/2;
         }
}
void OutArray(float b[],float c[])
{
std::cout<<"raznost: ";
for(int j=0; j<m;j++)
{
      f2<<b[j]<<endl<<" ";
}
 
std::cout<<"\n";
std::cout<<"summa: ";
for(int j=0; j<m;j++)
{
        f2<<c[j]<<endl<<" ";
}
std::cout<<"\n";
}

я изменил программу чтобы читала из файла и выводила в файл.... Вопрос:
1. Я теперь сделал функции, компилируется но не работает, в чём проблема?
2. Как задавать размер входного массива?? как понимаю первое число в файле input???
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
01.12.2011, 19:10 #6
Так... То есть вам нужно определить лежат ли одни и те же значения (коэффициенты) в input.txt и output.txt?
0
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
01.12.2011, 19:21  [ТС] #7
нет.
1. сначала выполнить прямое преобразование 1-ой программой. получить ответ в файле.
взять файл в котором получен ответ,посмотреть его. ((220, 211, 212, 218, 217, 214, 210, 202). После применения преобразования Хаара получаются следующие две последовательности a1 и b1: (215.5, 215, 215.5, 206) и (4.5, -3, 1.5, 4). )
2. Берём файл в котором получили ответ.((215.5, 215, 215.5, 206) и (4.5, -3, 1.5, 4).) и подаём на вход второй программе, на выходе получим новый выходной файл с результатами которые должны равняться (220, 211, 212, 218, 217, 214, 210, 202).
вот, что нужно попытаться реализовать.
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
01.12.2011, 20:02 #8
Ага, а те две программы о которых вы говорите, способны принимать и выдавать на выходе файлы? Может их код есть?
0
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
01.12.2011, 20:10  [ТС] #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include<fstream>
using namespace std;
 
int n;
int m = n/2;
ifstream f1("input.txt");
ofstream f2("output.txt");
void InArray (float []);
void OutArray(float [],float []);
void Change(float [],float [],float []);
 
int main()
{
     float a[n];
     float b[m];
     float c[m];
     InArray(a);
     OutArray(b,c);
     Change(a,b,c);
     }
 
void InArray(float a[])
{
     for (int k = 0; k <= n-1; k++)
     {
         f1>> a[k];
     }
}
 
void Change(float a[],float b[],float c[])
{
     for (int j=0; j<m ; j++)
         {
              b[j]=(a[2*j]-a[2*j+1])/2;
              c[j]=(a[2*j]+a[2*j+1])/2;
         }
}
void OutArray(float b[],float c[])
{
std::cout<<"raznost: ";
for(int j=0; j<m;j++)
{
      f2<<b[j]<<endl<<" ";
}
 
std::cout<<"\n";
std::cout<<"summa: ";
for(int j=0; j<m;j++)
{
        f2<<c[j]<<endl<<" ";
}
std::cout<<"\n";
}
это я попробывад организовать ввод и вывод файлов, т.е изменил программу
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
#include <iostream>
using namespace std;
 
int main ()
{
    int n;
std::cout << "Enter n:\n>";
std::cin >> n;
float* a = new float[n];
for (int k = 0; k <= n-1; k++)
{
    std::cin >> a[k];
}
int m;
float *b=new float [m];
float *c=new float [m];
m = n/2;
 
for (int j=0; j<m ; j++)
{
        b[j]=(a[2*j]-a[2*j+1])/2;
        c[j]=(a[2*j]+a[2*j+1])/2;
}
 
std::cout<<"raznost: ";
for(int j=0; j<m;j++)
{
      std::  cout<<b[j]<<endl<<" ";
}
 
std::cout<<"\n";
std::cout<<"summa: ";
for(int j=0; j<m;j++)
{
        std::cout<<c[j]<<endl<<" ";
}
std::cout<<"\n";
//system("PAUSE");
return 1;
}
Добавлено через 56 секунд
где ошибка????почему не работает преобразование??????????7
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
01.12.2011, 20:46 #10
Логику работы расскажите.

Добавлено через 1 минуту
В конце обычно возвращают ноль как критерий успешной работы.

Добавлено через 9 минут
Цитата Сообщение от maniac0192 Посмотреть сообщение
почему не работает преобразование?
Что именно не работает? Не те значения на выходе?
0
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
01.12.2011, 20:55  [ТС] #11
по коду всё правильно? так? раньше,где я вводил массив с клавиатуры. всё работало нормально. теперь я переправил программу (назовём её А) чтобы были входные и выходные данные из файлов, при беру файл ввода, пишу там значения, а файл вывода остаётся пустым
может я как то не правильно функции сделал. или еще что-то.
в последствии нужно взять программу Б, она делает обратное преобразование, и переделать её таким же образом, если написать третью программу С которая будет сравнивать Входной файл программы А и ВЫходной файл программы В, то будет вообще я думаю отлично.
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
01.12.2011, 21:04 #12
1) После использования файлов закрывайте их. И смотрите можно ли создать/открыть. Советую освежить в памяти файловый ввод-вывод. На всякий случай.
2) Вы уверены, что вообще что-то считается без ошибок?
0
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
01.12.2011, 21:13  [ТС] #13
вообще ничего не считается, а раньше всё считалось нормально.
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
01.12.2011, 21:21 #14
Цитата Сообщение от maniac0192 Посмотреть сообщение
вообще ничего не считается
На экран пробовали выводить?
0
maniac0192
17 / 17 / 3
Регистрация: 27.11.2011
Сообщений: 141
01.12.2011, 21:28  [ТС] #15
нет, а как, подскажите пожалуйста, я понимаю как это сделать без файлов, а вот в новой программе с файлами не очень понимаю
0
01.12.2011, 21:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 21:28
Привет! Вот еще темы с ответами:

Прямое и обратное преобразование Хаара - C++
Здравствуйте. Написал вейвлет-сжатие Хаара, чисто визуально все работало правильно. Для надежности решил написать обратное преобразование и...

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод) - C++
Как сделать чтобы список студентов выводился на экран в конце? #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) - C++
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

Вывод суммы в файл (файловый ввод/вывод) - C++
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru