![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите пожалуйста переделать код с С++ на С! |
|
C/C++ - Помогите пожалуйста переделать код с С++ на С!
|
Новый участник Сообщения: 2 |
Задание :
Создать программу, генерирующую систему логических функций с заданными параметрами n - число входных переменных, m - число функций. В соответствии с заданным чмслом генерируется (2 ** n) входных комбинаций и каждой входной комбинации по индивидуальному заданию присваиваится одна из (2 ** m) выходных комбинаций (начиная с комбинации все нули) в циклической последовательности. Записать сгенерированную систему логических функций в виде файла. При создании функции предусмотреть возможность задания параметров m, n в качестве аргументов командной строки. Генерация выходных комбинаций в порядке возрастания с шагом 1. Код на С++: #include <iostream> #include <fstream> #include <stdlib.h> #include <cstring> using namespace std; class Logfunc{ private: int _n; // the number of input variables int _m; // the number of functions int _step; // step unsigned int _c; // the number of rows in the table unsigned int* func; // generated function void generate(); // function generation bool* tobool(unsigned int p, int n); // transfer of an integer to an array of booleans public: Logfunc(int n=3, int m=2, int step=2); // the constructor ~Logfunc(); // the destructor bool* calc(bool* params); // Evaluation of the function void write(char* filename); // write dates to file }; // class constructor Logfunc::Logfunc(int n, int m, int step): _n(n), _m(m), _step(step){ generate(); // generate function } // destructor Logfunc::~Logfunc(){ free (func); // make free memory from the table } // function generator void Logfunc::generate(){ _c=1 << _n; // rows quantity of table(2**n) func=(unsigned int*)malloc(_c * sizeof(unsigned int)); // allocates memory for the table int max=1<<_m; // maximum decimal value of the output combinations(2**m) int r=(_step>=0)?0:max-1; //Function result for the first row in the table for (unsigned int i=0;i<_c;i++){ func[i]=r; //write value in the table r+=_step; //increase value for the next step if(r>=max) // cycle for the succession increasing r=0; if(r<0) // cycle for the succession decreasing r=max-1; } } //transfer from an integer to an array of booleans bool* Logfunc::tobool(unsigned int p, int n){ bool* r=(bool*)malloc(n * sizeof(bool)); // allocates memory for an answer memset(r, 0, n * sizeof(bool)); // fills an array by 0 int i=n; while (p>0 && i>0){ bool b=p%2; // determine the value of the last bit p/=2; // seperate last bit r[--i]=b; // write bit value to an array of result } return r; } // calculation of the values of function bool* Logfunc::calc(bool* params){ unsigned int ind=0; for(int i=0; i<_n; i++) // define line number in the table ind=(ind<<1)+params[i]; unsigned int r=func[ind]; // define function value return tobool(r, _m); } // write result to file void Logfunc::write(char* filename){ ofstream fout(filename); // create file for(unsigned int i=0; i<_c; i++){ // We go through all the rows bool* p=tobool(i,_n); // We get a list of Boolean values bool* r=calc(p); // We calculate the value of the function for(int j=0;j<_n;j++) fout<<p[j]?1:0; // displays a list of variables fout<<" "; // separation gap for(int j=0; j<_m; j++) fout<<r[j]?1:0; // displays a list of variables fout<<endl; //displays end of row free(p); //free memory free(r); //free memory } fout.close(); // close file } int main() { int step = 1; int n, m; cout<<"The number of input variables: "; cin>>n; if(n<1 || n>28){ cout<<"Input error"<<endl; system("pause"); return 1; } cout<<"Number of functions m : "; cin>>m; if(m<1 || m>32){ cout<<"Input error"<<endl; system("pause"); return 1; } Logfunc f(n, m, step); //create function f.write("output.txt"); cout<<"Result is saved to file - output.txt"<<endl; system("pause"); //delay before programm closing return 0; } |
|
Отправлено: 17:57, 25-06-2015 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Помогите пожалуйста
|
Отправлено: 19:06, 25-06-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 00:02, 26-06-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:24, 26-06-2015 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Помогите ,пожалуйста, перевости код паскаля на язык си.Не могу разобраться в этом | vad91996 | Программирование и базы данных | 1 | 21-09-2014 15:59 | |
Помогите пожалуйста перевести код с паскаля на язык си | vad91996 | Тест-форум | 0 | 21-09-2014 14:28 | |
C/C++ - пожалуйста, помогите перевести этот код из паскаля в с++ | Киры4 | Программирование и базы данных | 2 | 29-05-2013 16:19 | |
C/C++ - напишите пожалуйста код программы на с++ | Raitek | Программирование и базы данных | 1 | 28-11-2012 13:19 |
|