Пример #1
0
int main(void)
{
	TSMatrix *a1, *a2, *result1, *result2;
	a1 = InitTriple(3, 3, 3);
	a2 = InitTriple(3, 3, 3);
	
	InputValue(a1);
	InputValue(a2);
	
	ShowMatrix(a1);
	ShowMatrix(a2);

	if ((result1 = AddMatrix(a1, a2)) != NULL)
		ShowMatrix(result1);
	if ((result2 = SubMatrix(a1, a2)) != NULL)
		ShowMatrix(result2);
	
	return 0;
}
Пример #2
0
static void mdlOutputs(SimStruct *S, int_T  tid)
{
    int_T          i;
    InputVector   U1(S,IN1);
    OutputVector  Y(S,OUT1);
    ParamVector   G(S,GAIN);
    real_T         U2=InputValue(S,IN2);
	real_T         O=ParamValue(S,OFFSET);
	MatlabMatrix  M(S,NAME);

	M[0][0]=M[0][0]+1.0;

    for (i=0; i<Y.Size(); i++) 
        Y[i] = G[0] * U1[i]+O; 
		
	WriteOutputValue(S,OUT2,U2);
}
Пример #3
0
int main(void)
{
	int select;		/*保存选择变量*/
	Elem e;			/*保存从函数返回的结点的值*/
	Elem v;			/*保存传递给函数的结点的值*/
	
	size_t i= 0;
	LINKSTACK S;
	InitStack(&S);	/*初始化栈*/

	srand((int)time(NULL));

	while (1)	/*while_@1*/
	{
		if (!(S.pBottom))
		{
			printf("栈不存在!\n");
			break;
		}

		system("cls");
		Menu();

		printf("请输入您的选择(1~9):");
		scanf("%d", &select);
		getchar();

		switch (select)	/*switch_@1*/
		{
		case 1:			/*入栈.*/
			v = InputValue("入栈元素为:");
			Push(&S, v);
			printf("入栈操作成功!\n");
			
			getchar();
			break;
		case 2:			/*输出栈中元素.*/
			printf("栈为:");
			TraveStack(&S);
			
			getchar();
			break;
		case 3:			/*出栈.*/
			if (OK == Pop(&S, &e))
			{
				printf("出栈成功,出栈元素是%d!\n", e);
			}
			else
			{
				printf("出栈失败!\n");
			}

			getchar();
			break;

		case 4:			/*输出栈的长度.*/
			printf("栈长为: %d \n", StackLength(&S));
			
			getchar();
			break;

		case 5:			/*清空栈.*/
			ClearStack(&S);
			printf("该栈已经清空!\n");
			
			getchar();
			break;
	
		case 6:			/*销毁栈.*/
			DestroyStack(&S);
			printf("栈已删除!\n");
			
			getchar();	
			break;
			
		case 7:			/*返回栈顶结点元素.*/
			if (OK == GetTop(&S, &e))
			{
				printf("栈顶为:%d\n", e);
			}
			else
			{
				printf("不存在栈顶元素!\n");
			}

			getchar();	
			break;

		case 8:			/*判断栈是否为空.*/
			if (StackEmpty(&S) == TRUE)
			{
				printf("栈为空!\n");
			}
			else
			{
				printf("栈非空!\n");
			}

			getchar();	
			break;

		case 9:			/*进制转换*/
			{
				int d;
				unsigned int m, n;
				v = InputValue("请输入一个非负整数:");
				d = InputValue("请输入转换进制:");
				if (v < 0 ||d<2 ||d>16)
				{
					printf("输入数据错误!\n");
					break;
				}
				
				m = (unsigned int)v;
				n = (unsigned int)d;
				Conversion_ten_to_n(m, n);
			
				getchar();
				break;
			}

		default:
			printf("请重新选择!\n");
			
			getchar();
			break;
		}/*switch_@1*/

	}	/*while_@1*/
	
	return EXIT_SUCCESS;
}
Пример #4
0
int main(void)
{
	int select;		/*保存选择变量*/
	size_t pos;		/*位序*/
	Elem e;			/*保存从函数返回的结点的值*/
	Elem v;			/*保存传递给函数的结点的值*/
	
	size_t i= 0;
	PREAR pRear = InitList();
	srand((int)time(NULL));
	while (i < 10)
	{

		InsertList(&pRear, i, i);
		++i;
	}

	while (1)	/*while_@1*/
	{
		if (!pRear)
		{
			printf("表不存在!\n");
			break;
		}

		system("cls");
		Menu();

		printf("请输入您的选择(1~10):");
		scanf("%d", &select);
		getchar();

		switch (select)	/*switch_@1*/
		{
		case 1:			/*插入数据*/
			pos = InputPos("插入位置为:");
			v = InputValue("结点元素为:");
			if (FAILE == InsertList(&pRear, pos, v))
			{
				printf("插入失败!\n");
			}
			else
			{
				printf("插入成功!\n");
			}
			
			getchar();
			break;
		case 2:			/*整表输出*/
			printf("整表为:");
			TraveList(pRear);
			
			getchar();
			break;
		case 3:			/*删除结点*/
			pos = InputPos("删除的结点位置是:");
			if (OK == DeleteList(&pRear, pos, &e))
			{
				printf("删除成功,删除的元素是%d!\n", e);
			}
			else
			{
				printf("删除失败!\n");
			}

			getchar();
			break;

		case 4:			/*输出表的长度*/
			printf("表长为: %d \n", ListLength(pRear));
			
			getchar();
			break;

		case 5:			/*清空表*/
			ClearList(pRear);
			printf("该表已经清空!\n");
			
			getchar();
			break;

		case 6:			/*判断链表是否存在特定结点*/
			v =InputValue("要查找的数值为:");
			printf("要查找的元素在链表的第%d位!(第0位表示不存在)\n", LocateElem(pRear, v));

			getchar();
			break;

		case 7:			/*返回特定位序结点*/
			pos = InputPos("获取位置为:");
			if (OK == GetElem(pRear, pos, &e))
			{
				printf("该结点为:%d\n", e);
			}
			else
			{
				printf("不存在!\n");
			}

			getchar();	
			break;

		case 8:			/*判断链表*/
			if (ListEmpty(pRear) == TRUE)
			{
				printf("表为空!\n");
			}
			else
			{
				printf("表非空!\n");
			}

			getchar();	
			break;
		
		case 9:			/*销毁整表*/
			DestroyList(&pRear);
			printf("表已删除!\n");

			getchar();	
			break;
		

		default:
			printf("请重新选择!\n");
			
			getchar();
			break;
		}/*switch_@1*/

	}	/*while_@1*/
	
	return EXIT_SUCCESS;
}
Пример #5
0
int main(void)
{
	int select;		/*保存选择变量*/
	size_t pos;		/*位序*/
	Elem e;			/*保存从函数返回的结点的值*/
	Elem v;			/*保存传递给函数的结点的值*/
	int n = 1;

	SQLIST L;
	InitList(&L);

	srand((int)time(NULL));
	while (n <= 10)
	{
		
		InsertList(&L, n, rand()%20);
		++n;
	}

	while (1)	/*while_@1*/
	{
		if (!L.elem)
		{
			printf("表不存在!\n");
			break;
		}
		system("cls");
		Menu();

		printf("请输入您的选择(1~10):");
		scanf("%d", &select);
		getchar();

		switch (select)	/*switch_@1*/
		{
		case 1:			/*插入数据*/
			pos = InputPos("插入位置为:");
			e = InputValue("结点元素为:");
			if (FAILE == InsertList(&L, pos, e))
			{
				printf("插入失败!\n");
			}
			else
			{
				printf("插入成功!\n");
			}
			
			getchar();
			break;
		case 2:			/*整表输出*/
			printf("整表为:");
			TraveList(&L);
			
			getchar();
			break;
		case 3:			/*删除结点*/
			pos = InputPos("删除的结点位置是:");
			if (OK == DeleteList(&L, pos, &e))
			{
				printf("删除成功,删除的元素是%d!\n", e);
			}
			else
			{
				printf("删除失败!\n");
			}

			getchar();
			break;

		case 4:			/*输出表的长度*/
			printf("线性表长度: %d \n", ListLength(&L));
			
			getchar();
			break;

		case 5:			/*清空表*/
			ClearList(&L);
			printf("该表已经清空!\n");
			
			getchar();
			break;

		case 6:			/*判断链表是否存在特定结点*/
			v =InputValue("要查找的数值为:");
			printf("要查找的元素在链表的第%d位!(第0位表示不存在)\n", LocateElem(&L, v));

			getchar();
			break;

		case 7:			/*返回特定位序结点*/
			pos = InputPos("获取位置为:");
			if (OK == GetElem(&L, pos, &e))
			{
				printf("该结点为:%d\n", e);
			}
			else
			{
				printf("不存在!\n");
			}

			getchar();	
			break;

		case 8:			/*判断链表*/
			if (ListEmpty(&L) == TRUE)
			{
				printf("表为空!\n");
			}
			else
			{
				printf("表非空!\n");
			}

			getchar();	
			break;
		
		case 9:			/*销毁整表*/
			DestroyList(&L);
			printf("表已删除!\n");

			getchar();	
			break;
		
		case 10:		/*合并链表*/
			{
				SQLIST La;
				size_t i = 0;
				InitList(&La);
				srand((int)time(NULL));
				for (i=1; i<=10; ++i)
				{
					InsertList(&La, i, rand()%15);
				}
				printf("待求并集的表为: ");
				TraveList(&La);
				UnionList(&L, &La);

				DestroyList(&La);/*避免内存泄漏*/
				printf("操作完成!\n");

				getchar();
				break;
			}

		case 11:		/*求前驱结点*/
			v = InputValue("寻找哪个元素的前驱结点: ");
			
			if (OK == PriorELem(&L, v , &e))
			{
				printf("前驱结点元素为: %d", e);
			}
			else
			{
				printf("未找到!\n");
			}

			getchar();
			break;
			
		case 12:	/*求后去结点*/
			v = InputValue("寻找哪个元素的后驱结点: ");
			
			if (OK == NextELem(&L, v , &e))
			{
				printf("后驱结点元素为: %d", e);
			}
			else
			{
				printf("未找到!\n");
			}
			
			getchar();
			break;
			
		default:
			printf("请重新选择!\n");
			
			getchar();
			break;
		}/*switch_@1*/

	}	/*while_@1*/
	
	return EXIT_SUCCESS;
}
Пример #6
0
int main(void)
{
	int select;		/*保存选择变量*/
	size_t pos;		/*位序*/
	Elem e;			/*保存从函数返回的结点的值*/
	Elem v;			/*保存传递给函数的结点的值*/
	
	size_t i= 0;
	LINKQUEUE Q;
	InitQueue(&Q);
	srand((int)time(NULL));
	while (i < 10)
	{
		InsertQueue(&Q, rand()%20);
		++i;
	}

	while (1)	/*while_@1*/
	{
		if (!Q.front)
		{
			printf("队列不存在!\n");
			break;
		}

		system("cls");
		Menu();

		printf("请输入您的选择(1~10):");
		scanf("%d", &select);
		getchar();

		switch (select)	/*switch_@1*/
		{
		case 1:			/*入队*/
			v = InputValue("入队元素为:");
			if (FAILE == InsertQueue(&Q, v))
			{
				printf("入队失败!\n");
			}
			else
			{
				printf("入队成功!\n");
			}
			
			getchar();
			break;
		case 2:			/*输出队列*/
			printf("队列为:");
			TraveQueue(&Q);
			
			getchar();
			break;
		case 3:			/*出队*/
			if (OK == DeleteQueue(&Q, &e))
			{
				printf("出队成功,删除的元素是%d!\n", e);
			}
			else
			{
				printf("删除失败!\n");
			}

			getchar();
			break;

		case 4:			/*输出队列的长度*/
			printf("表长为: %d \n", QueueLength(&Q));
			
			getchar();
			break;

		case 5:			/*清空队列*/
			ClearQueue(&Q);
			printf("该表已经清空!\n");
			
			getchar();
			break;

		case 6:			/*返回队头元素*/
			if (OK == GetHead(&Q, &e))
			{
				printf("该结点为:%d\n", e);
			}
			else
			{
				printf("不存在!\n");
			}

			getchar();	
			break;

		case 7:			/*判断队列是否为空*/
			if (QueueEmpty(&Q) == TRUE)
			{
				printf("队列为空!\n");
			}
			else
			{
				printf("队列非空!\n");
			}

			getchar();	
			break;
		
		case 8:			/*销毁队列*/
			DestroyQueue(&Q);
			printf("队列已删除!\n");

			getchar();	
			break;
		
		default:
			printf("请重新选择!\n");
			
			getchar();
			break;
		}/*switch_@1*/

	}	/*while_@1*/
	
	return EXIT_SUCCESS;
}