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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2011, 23:05   #1
korolariya
Новичок
Джуниор
 
Регистрация: 12.02.2011
Сообщений: 2
По умолчанию Системы уравнений

помогите поправить код немного

Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float a[3][3],determ,o[3][3],x[3],r[3];
int i,j;

void vvod()
{
printf("Vvedite matricu\n");
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{
printf("A%d%d=",i,j);
scanf("%f",&a[i][j]);
}
}
void vivod(float b[3][3])
{
printf("matrica A=\n");
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
printf("%.0f  ",b[i][j]);
}
printf("\n");
}
}
float minor(float k[4])
{
printf("%.0f %.0f\n",k[1],k[2]);
printf("%.0f %.0f\n",k[3],k[4]);
float m=k[1]*k[4]-k[2]*k[3];
return m;
}
float transp(float g[3][3])
{
float h[3][3];
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
h[i][j]=g[j][i];
}
float opr(float c[3][3])
{


float f[4];
int k=1,p=1;
float det=0;

while (p!=4)
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
if (i!=1)
if (j!=p)
  {
  f[k]=c[i][j];
  k=k+1;
  };
det=pow(-1,1+p)*a[1][p]*minor(f)+det;
k=1;
p=p+1;
}
printf("detA=%.0f\n",det);
return det;
}
float obr(float c[3][3])
{

float w[4];
int k=1,p=1;
float det=0;

while (p!=4)
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
if (i!=1)
if (j!=p)
  {
  w[k]=c[i][j];
  k=k+1;
  };
det=minor(w);
printf("%.0f\n",det);
k=1;
p=p+1;
}
}

//vivod(b);


/*  float f[4], b[3][3],m;
int k=1,p,d,g;
float det=0;

for (d=1;d<=3;d++)
{
for (p=1;p<=3;p++)
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
if (i!=d)
if (j!=p)
  {
  f[k]=c[i][j];
  k=k+1;
  printf("%d%d\n",d,p);
  break;
   };
//m=minor(f);
/*for (g=1;g<=4;g++)
printf("%.0f",f[g]);
printf("\n");
//b[d][p]=pow(-1,d+p)*minor(f);
k=1;

}
}*/
//printf("Matrica minorov\n");
//vivod(b);
/*
printf("Transponirovannaya matrica minorov\n");
transp(b);
vivod(b);
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
o[i][j]=b[i][j]*1/determ;
printf("Obratnaya matrica\n");
vivod(o);
*/
//}else printf("DetA=0");

//}


int main()
{
int k=1;
vvod();
vivod(a);
determ=opr(a);
obr(a);
//printf("Vvedite pravuyu chast urovneniy\n");
//for (i=1;i<=3;i++)
//scanf("%f",&r[i]);
//for (i=1;i<=3;i++)
//printf("%.0f",r[i]);
//Умножим обратную матрицу на матрицу R
//for(i=1;i<=3;i++)
//for(j=1;j<=3;j++)
//{
//x[i]=x[i]+o[i][j]*r[j];
//}
//for(i=1;i<=3;i++)
//printf("%.0f",x[i]);

}

Последний раз редактировалось Stilet; 13.02.2011 в 12:25.
korolariya вне форума Ответить с цитированием
Старый 12.02.2011, 23:06   #2
korolariya
Новичок
Джуниор
 
Регистрация: 12.02.2011
Сообщений: 2
По умолчанию

Вопрос в коде по вычислению миноров, я его делаю таким же как код по вычислению определителя а считает не правильно,
Код:
float obr(float c[3][3])
{

float w[4];
int k=1,p=1;
float det=0;

while (p!=4) тут пишу d!=4
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
if (i!=1)  вот сюда вставляю цикл по переменной юбой например D    if (i!=D) 
if (j!=p)
{
w[k]=c[i][j];
k=k+1;
};
det=minor(w); на эту не смотрите тут не то написано главное чтобы шагало.
printf("%.0f\n",det);
k=1;
p=p+1;
     а здесь добавлю if (p>3) {d=d+1;p=1} 
}
}
From Stilet: Где код? Не виду кода. Потому в следующий раз тему без кода удалю!

Последний раз редактировалось Stilet; 13.02.2011 в 12:26.
korolariya вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение системы уравнений графически. Alexander4321 Microsoft Office Excel 3 12.01.2011 00:22
Решение системы уравнений. Вадим Буренков Помощь студентам 5 16.11.2010 14:38
Системы линейных уравнений на delphi Ericnex Общие вопросы Delphi 0 23.04.2010 16:14
Системы нелинейных уравнений Anarki Общие вопросы C/C++ 1 26.09.2009 23:49