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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2013, 13:42   #1
Эмиль_C++
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 61
По умолчанию Заполнение двумерного массива одномерным

Здравствуйте! Не могли бы Вы подсказать мне мою ошибку.
Мне нужно проверить на обнуление переменных в функции proverka, возвратить параметры в виде одномерного массива и поместить его в двумерный. По ходу программы пробую следить за коэффициентами, они почему то изменяются и не переприсваиваются .. не пойму в чем дело. Заранее спасибо за ответ.
*****Текст программы****
Код:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#include <fstream.h>
void proverka(double b1[],double b2[]);
void main()
{
	//int v=15;			
//	int w=6;
	int i,j;
	double q;
	//cout.precision(w);
    //cout.setf(ios::left, ios::adjustfield);
	double kx,ky,kz;
	double b1[]={kx,ky,kz};
	double b2[6]={0};
	double c[2][6]={0};
	double pi=3.14;
printf("b0=%d\n",b1[0]);
printf("b1=%d\n",b1[1]);
printf("b2=%d\n",b1[2]);


/*printf("c0=%d\n",c[0][0]);
printf("c1=%d\n",c[0][1]);
printf("c2=%d\n",c[0][2]);
printf("c3=%d\n",c[0][3]);
printf("c4=%d\n",c[0][4]);
printf("c5=%d\n",c[0][5]);*/
	b1[0]=1,b1[1]=0,b1[2]=0;//коэффициенты не присваиваются
printf("b0=%d\n",b1[0]);
printf("b1=%d\n",b1[1]);
printf("b2=%d\n",b1[2]);
   	proverka(b1,b2);
	c[0][0]=b2[0],c[0][1]=b2[1],c[0][2]=b2[2],c[0][3]=b2[3],c[0][4]=b2[4],c[0][5]=b2[5];
printf("c0=%d\n",c[0][0]);
printf("c1=%d\n",c[0][1]);
printf("c2=%d\n",c[0][2]);
printf("c3=%d\n",c[0][3]);
printf("c4=%d\n",c[0][4]);
printf("c5=%d\n",c[0][5]);
	b1[0]=2*pi,b1[1]=1,b1[2]=0;
	proverka(b1,b2);
	c[1][0]=b2[0],c[1][1]=b2[1],c[1][2]=b2[2],c[1][3]=b2[3],c[1][4]=b2[4],c[1][5]=b2[5];
/*printf("c6=%d\n",c[1][0]);
printf("c7=%d\n",c[1][1]);
printf("c8=%d\n",c[1][2]);
printf("c9=%d\n",c[1][3]);
printf("c10=%d\n",c[1][4]);
printf("c11=%d\n",c[1][5]);*/
	for(i=0;i<2;i++)
	{
		for(j=0;j<6;j++)
		{
			q=c[i][j];
			printf("c=%d\n",q);
			q=0;
		}
	}

	  
}
//printf("%d",c[0][0]);

/*	cout<<setw(v)<<c[0][0]<<setw(v)<<c[0][1]<<setw(v)<<c[0][2]
		<<setw(v)<<c[0][3]<<setw(v)<<c[0][4]<<setw(v)<<c[0][5]<<setw(v)<<c[0][1]<<endl;
	cout<<setw(v)<<c[1][0]<<setw(v)<<c[1][1]<<setw(v)<<c[1][2]
		<<setw(v)<<c[1][3]<<setw(v)<<c[1][4]<<setw(v)<<c[1][5]<<setw(v)<<c[1][1]<<endl;*/

void proverka(double b1[],double b2[])
	{
	double kx,ky,kz;
	 kx=b1[0], ky=b1[1], kz=b1[2];
    printf("kx=%d\n",kx);
	printf("ky=%d\n",ky);
	printf("kz=%d\n",kz);
	 //double c[2][6]={0};
		double e=0;
	    double k1x=kx*(kx+ky)-1,k1y=ky*(kx+ky)-1,k1z=kz*(kx+ky);
    	double k2x=kx*(ky+kz),k2y=ky*(ky+kz)-1,k2z=kz*(ky+kz)-1;
    	
		  
		  	if (fabs(k1x)<=e & fabs(k1y)<=e & fabs(k1z)<=e)
			{ k1x=kx*(kx+kz)-1; k1y=ky*(kx+kz); k1z=kz*(kx+ky)-1;
			}
	        if (fabs(k2x)<=e & fabs(k2y)<=e & fabs(k2z)<=e | fabs(k1x/k2x)-fabs(k1y/k2y)<=e & fabs(k1y/k2y)-fabs(k1z/k2z)<=e)
			{	k2x=kx*(kx+kz)-1; k2y=ky*(kx+kz); k2z=kz*(kx+ky)-1;
			}
			b2[0]=k1x,b2[1]=k1y,b2[2]=k1z,b2[3]=k2x,b2[4]=k2y,b2[5]=k2z;
							
	}

Последний раз редактировалось Stilet; 12.03.2013 в 22:48.
Эмиль_C++ вне форума Ответить с цитированием
Старый 12.03.2013, 15:34   #2
AlexDark
Форумчанин
 
Аватар для AlexDark
 
Регистрация: 23.12.2011
Сообщений: 117
По умолчанию

Адовый код =)

Все %d в printf поменять на %f или использовать std::cout раз уж на то пошло.
AlexDark вне форума Ответить с цитированием
Старый 12.03.2013, 21:30   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

не пере присваиваются они у вас по той причине, что делаете вы это через запятую, попробуйте поставить точку с запятой. Используйте циклы, очень много всего нагромождено. Проверяйте внимательней все точки с запятыми...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ручное заполнение двумерного массива BloodyRaven Общие вопросы C/C++ 3 03.11.2012 13:33
Заполнение двумерного массива из файла. KorPaEv Общие вопросы C/C++ 6 19.09.2011 17:46
Заполнение двумерного массива pisikaker Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2011 10:01
заполнение двумерного массива katena88 Общие вопросы Delphi 1 14.12.2010 14:15
[Pascal] заполнение двумерного массива Рамик Помощь студентам 13 18.02.2009 20:08