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

Алгоритм BBS(Блюма — Блюма — Шубa) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дан символьный массив. Найти символы, которые представляют собой цифры http://www.cyberforum.ru/cpp-beginners/thread178737.html
Дан символьный массив. В нем надо найти такие символы, которые представляют собой цифры. То есть есть символьный массив char str1 и char str2={'0','1','2','3','4','5','6','7','8','9'} можно ли их как-то сравнить посимвольно ? Заранее спасибо.
C++ Вычислить произведение ненулевых элементов массива Дан одномерный массив, состоящий из N вещественных элементов. 4.1. Заполнить массив случайными числами. 4.2. Найти минимальный положительный элемент. 4.3. Вычислить произведение не нулевых элементов массива. 4.4. Вывести ненулевые элементы на экран в обратном порядке. 4.5. Отсортировать массив по убыванию и вывести на экран http://www.cyberforum.ru/cpp-beginners/thread178726.html
C++ Вычислить и вывести на экран в виде таблицы значение функции y(x) на интервале от x0 до xn с шагом dx. A, B, C, D, X, x0, xn и dx - вещественные числа
они оба заключены в { Y = (A-B-C)*X + D. если A>B + C Y = (A + В + С) * X3 + D. иначе если можно , напишите программу с комментариями
Структурные переменные и обьеденения C++
Нужно решить следующую задачу : Распечатать анкетные данные студентов, имеющих оценку 8 по физике и оценку 10 по высшей математике. В программе организовать ввод информации о студентах: — фамилия и инициалы; — год рождения; — номер группы; — оценки за первый семестр: физика, математика, информатика; — средний балл. Заранее спасибо. Добавлено через 21 час 39 минут Народ помогите.
C++ функция факториала http://www.cyberforum.ru/cpp-beginners/thread178715.html
Задание: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью e. Таблицу снабдить заголовком и шапкой. Каждая строка должна содержать значение аргумента, значение функции и количество просуммирорванных членов ряда. В моем варианте присутствует факториал в знаменателе дроби - (2n+1)! Я в С++ не силен,...
C++ Удаление элемента массива Люди добрые, помогите написать две программы в C++. Текст: 1) Даны две прямые, одна из которых проходит через начало координат и точку (X1 ,Y1 ), а вторая - через точки ( X2 ,Y21 ) и (X3, Y3). Написать программу, вычисляющую синус модуля суммы абсцисс этих точек, если эти прямые параллельны, или тангенс модуля разности их ординат в противном случае. 2) Дан массив A из 25 элементов. Удалить... подробнее

Показать сообщение отдельно
maxteam
2 / 2 / 0
Регистрация: 04.07.2010
Сообщений: 66
14.12.2010, 18:00  [ТС]     Алгоритм BBS(Блюма — Блюма — Шубa)
вот моя прога

Код
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/////////////////
int x0 = 56;
int M = 2111;
int n = 4;
/////////////////
int *bits;
int k=0;
int c=0;

int bbs();
int * dec2bin(int);
int check_bits(int *);
void generate(int,int);

int main()
{
	using std::cout;
	using std::cin;
	using std::endl;

	setlocale(0,"");

	 int numbers = 0;

	 cout<<"Ââåäiòü êiëüêiñòü ÷èñåë: ";
	 cin>>numbers;
	 cout<<"Êiëüêiñòü áiò: ";
	 cin>>n;

     generate(numbers,n);
	


     return 0;
}

int bbs()
{
    static int x=x0;

	x=x*x%M;
	c = x;
	x0 = x;
    
	return check_bits(dec2bin(x));
}

int * dec2bin(int z)
{   
	int i=1,j=1;
	int *t;
	t = (int*)calloc(100,sizeof(int));
	
	while(z>1)
	{
    *(t+i) = z%2;
    z=z/2; 
	i++;
	}
	
	k=i;
	bits = (int*)calloc(k,sizeof(int));

   	int m = 1;
	*(bits+0)=z;
	for(j=i-1;j>0;j--,m++) {*(bits+m)=*(t+j);}
    
	free(t);

	return bits;
}

int check_bits(int *pbits)
{
	int bit_1 = 0;
	for(int i=0;i<k;i++) if(*(pbits+i) & 1) bit_1++;

	if(bit_1 % 2) return 0;
	else return 1;
}

void generate(int numbers,int n_bits)
{
    int *g = (int*)calloc(n_bits,sizeof(int));
    int rand = 0;
	int p;
	
	for(int j=0;j<numbers;j++)
	{
      p = n_bits-1;
	  for(int i=0;i<n_bits;i++) 
	  {
		*(g+i) = bbs();
		rand += *(g+i)*pow(2.0,p--);
      } 
 
	  std::cout<<rand<<"; ";
   	  rand = 0;
	}
}
 
Текущее время: 18:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru