Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2009, 20:15   #1
diman87
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 11
Вопрос Нужно автоматически заполнить двумерный массив специальным образом

В общем, какая проблема. Нужно создать таблицу с задаваемым числом столбцов (переменных) для таблицы истинности.
Например, задача где задается число переменных 3.
Должен строить такую:

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1


Пишу на С++ Console Application.
Есть следующая наработка:

Код:
#include <iostream.h>
#include <math.h>
void main()
{
	cout<<"Vvedite skol'ko peremennyh: ";
	int n;
	int i;
	int j;
	int k=1;
	int f=2;
	int l;
	int ost;
	cin>>n;
	int m=pow(2,n); //пока ругается тут. не знаю, в чем дело
	int p=(int)m;
	cout<<"Vy vveli "<<n<<" peremennyh\n\n";
	for(i=0;i<n;i++)
		cout<<"X"<<i+1<<"\t";
	cout<<"Y\n\n";
	int mas[10][1024];
	for(i=0;i<n;i++)
	{
		k=m/f;
		for(j=0;j<f;j++)
		{
			for(l=0;l<k;l++)
			{
				ost=(l+1)%2;
				if(ost=0)
				{
					mas[i][j]=0;
				}
				else
				{
					mas[i][j]=1;
				}
				mas[i][j]=1;
				cout<<ost<<"\n";// для проверки
			}
		}
		f=2*f;
	}
	for(j=0;j<m;j++)
	{
		for(i=0;i<n;i++)
			cout<</*mas[i][j]*/<<"\t";
		cout<<"\n";
	}
}
Некоторые места тут закоментил и поставил операторы для проверки.
Не врубаюсь, в чем ошибка.

Помогите плз)))

Последний раз редактировалось Stilet; 24.09.2009 в 08:55.
diman87 вне форума Ответить с цитированием
Старый 23.09.2009, 20:42   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Код:
double m=pow(2.0,n);
попробуй так, компиллятор ругается, ибо там функция перегруженная и тот вызов, что ты ему подсовываешь он считает неоднозначным, не знает, которую из них ты просишь вызвать.
mMAg вне форума Ответить с цитированием
Старый 24.09.2009, 08:50   #3
diman87
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 11
По умолчанию

значит, pow возвращает именно double?
diman87 вне форума Ответить с цитированием
Старый 24.09.2009, 09:10   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мне кажется автору нужно что-то типа такого:
Код:
//---------------------------------------------------------------------------

#pragma hdrstop

#include <tchar.h>
#include <iostream.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
 for (int i = 1; i < 20; i++) {
  int k=i;
  for (int j = 1; j < 5; j++) {
   int e=k&1;
   cout<<e<<"\t";
   k=k>>1;
  }
  cout<<"\n";
 }
 cin.get();
	return 0;
}
//---------------------------------------------------------------------------
Таблица битов числа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2009, 12:55   #5
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Код:
#include <iostream>
#include <cmath>
using namespace std;
int n;
int main() {
   cin >> n;
   for(int i = 0; i < pow((float)2, n); i++) {
      for(int j = 0; j < n; j++) cout << ((i / (int)pow((float)2, n - 1 - j)) % 2 ? 1 : 0) << ' ';
      cout << endl;
   }
   return 0;
}
Это для наглядности. С массивом делаешь тоже самое, просто вместо вывода записываешь выражение в mas[i][j]. Основная идея: всего строк - 2 ^ n. Это основной цикл. Для каждой строки просчитываем каждую позицию. Заметим что группы 0 и 1 чередуются в столбцах - в самом левом группы по 2 ^ (n - 1) цифр, в следующем - 2 ^ (n - 2) и т.д...

Последний раз редактировалось megachuhancer; 24.09.2009 в 13:02.
megachuhancer вне форума Ответить с цитированием
Старый 25.09.2009, 14:13   #6
diman87
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 11
По умолчанию

спасибо большое))
diman87 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать двумерный массив, заполнить случайными числами, сохранить в файл buba Паскаль, Turbo Pascal, PascalABC.NET 7 17.03.2015 20:08
Заполнить двумерный массив константами Lacoste Общие вопросы Delphi 4 15.02.2009 14:37
Как вывести на экран двумерный массив случайным образом? Stager Общие вопросы C/C++ 5 07.01.2009 20:53
Заполнить массив A следующим образом: 0 0 0 …0 Григорийpnz Паскаль, Turbo Pascal, PascalABC.NET 7 18.11.2008 21:07