📄 danchun.c
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define Len1 100
#define Len2 100
void main()
{ int ok;
float b_inequality;
int k;
int k_number;
int i,j;
int i_number,j_number;
int m,n;
float max_negative;//找到负值
float min_b;
int find_row;
int find_collum;
float find_result;
float change;
int change_number[Len2];
int change_num=0;
float *p1;
float a[Len1];
float b[Len2][Len2],c[Len2][Len2];
float result[Len2];
p1=a;
printf("输入系数个数:");
scanf("%d",&k_number);
for(k=0;k<k_number;k++)
{
printf("输入f(x)第 %d 个系数:",k);
scanf("%f",p1);
p1=p1+1;
}
/************************不等式*********************************/
printf("输入不等式个数:");
scanf("%d",&i_number);
printf("输入不等式左边和右边总共需要输入的个数:");
scanf("%d",&j_number);
printf("\n");
for(i=0;i<i_number;i++)
{
for(j=0;j<j_number;j++)
{
printf("输入第 %d 个不等式第 %d 个元素:",i,j);
scanf("%f",&b_inequality);
b[i][j]=b_inequality;
}
}
printf("\n");
/***************************表***************************************/
for(m=0;m<i_number;m++)
{
for(n=0;n<i_number+j_number;n++)
{
if(n<j_number-1)
c[m][n]=b[m][n];
else if(n==i_number+j_number-1)
c[m][n]=b[m][j_number-1];
else if(n==j_number+m-1)
c[m][n]=1;
else
c[m][n]=0;
}
}
m=i_number;
for(n=0;n<i_number+j_number;n++)
{
if(n<j_number-1)
c[m][n]=- *(p1+n);
else
c[m][n]=0;
}
for(m=0;m<i_number+1;m++)
{
for(n=0;n<i_number+j_number;n++)
printf("%f,",c[m][n]);
printf("\n");
}
printf("\n");
/////////////////////////////////////////////////////////////////////////////
start:
//
m=i_number;
for(n=0;n<j_number-1;n++)
{
if(c[m][n]<0)
goto action;
}
goto exit;
action:
m=i_number;
max_negative=c[m][0];
find_row=0;
for(n=0;n<j_number-1;n++)
{
if(c[m][n] < max_negative)
{ max_negative=c[m][n];
find_row=n;
}
}
n=i_number+j_number-1;
for(m=0;m<i_number;m++)
{
c[m][n]=c[m][n]/ c[m][find_row];
}
n=i_number+j_number-1;
min_b= c[0][n];
find_collum=0;
for(m=0;m<i_number;m++)
{ if( c[m][n]<min_b)
{
min_b= c[m][n];
find_collum=m;
change_number[change_num++]=find_collum+j_number-1;
}
}
n=i_number+j_number-1;
for(m=0;m<i_number;m++)
{
c[m][n]= c[m][n] * c[m][find_row];
}
find_result=c[find_collum][find_row];
for(m=0;m<i_number+1;m++)
{
for(n=0;n<i_number+j_number;n++)
{
float find_row_result;
if (n==0)
{
find_row_result=c[m][find_row];
}
if(m!=find_collum)
c[m][n]=c[m][n]- c[find_collum][n]*find_row_result / find_result;
if(m==find_collum)
break ;
}
}
m=find_collum;
for(n=0;n<i_number+j_number;n++)
{ c[m][n]=c[m][n] / find_result;
}
printf("\n");
for(m=0;m<i_number+1;m++)
{
for(n=0;n<i_number+j_number;n++)
printf("%f,",c[m][n]);
printf("\n");
}
printf("\n");
for(j=0;j<j_number-1;j++)
{
result[j]=0;
}
for(j=j_number-1;j<i_number+j_number-1;j++)
{
m=j-(j_number-1);
n=i_number+j_number-1;
result[j]=c[m][n];
}
for(m=0;m<=change_num-1;m++)
{
ok=change_number[m];
change=result[m];
result[m]=result[ok];
result[ok]=change;
}
for(j=0;j<i_number+j_number-1;j++)
{
printf("%f,",result[j]);
}
printf("\n");
goto start;
exit:
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -