c语言选址,c语言中的定义

本文目录一览:

学校超市选址问题(带权有向图的中心点)—-C 语言

这是最短路径问题

首先有向赋权图得用邻接表来表示。

不知道邻接表是怎么建的,所以随便鼓捣了一下。。

#include stdio.h

#include stdlib.h

#include string.h

#define alloc(type) (type*)malloc(sizeof(type))

#define MAX_NUM 3.14E38

#define TRUE 1

#define FALSE 0

#define NODE_NUM 8

struct adj_list{

int index;

char name[10];

float len;

struct adj_list *next;

};

typedef struct adj_list Node;

//node[]为起始节点数组

int dijkstra(Node node[],int size,int first,float distance[],int previous[]){

//初始化数组

int *isused=new int[size];

for(int i=0;isize;i++){

distance[i]=MAX_NUM;

isused[i]=FALSE;

previous[i]=-1;

}

//初始起始节点和邻接节点间的距离

Node *pos=node[first].next;

if(pos==NULL)

return 0;

while(pos!=NULL){

distance[pos-index]=pos-len;

previous[pos-index]=first;

pos=pos-next;

}

//初始化开头节点

distance[first]=0;

isused[first]=TRUE;

int current=first;

//这里不是对所有的起始节点进行遍历

for(i=1;isize;i++){

//寻找一个最近开头节点的节点

float temp=MAX_NUM;

for(int j=0;jsize;j++){

if(isused[j]==FALSEdistance[j]temp){

current=j;

temp=distance[j];

}

}

if(current==first) break;

isused[current]=TRUE;

//更新distance[]列表

pos=node[current].next;

while(pos!=NULL){

if(isused[pos-index]==FALSEdistance[pos-index]distance[current]+pos-len){

distance[pos-index]=distance[current]+pos-len;

previous[pos-index]=current;

}

pos=pos-next;

}

}

return current;

}

//追踪线路

void printTrace(int lastindex,Node node[],int previous[]){

printf(“最短路径为:”);

if(lastindex==0)

printf(“%s”,node[0].name);

else{

int pos=lastindex;

while(true){

printf(“%s “,node[pos].name);

if(pos==0) break;

pos=previous[pos];

}

printf(“\n”);

}

}

void generate(Node node[],int size){

//先输入顶点名字,然后按格式输入后面的链表节点

//格式为:name index len

//输入#结束链表节点的输入,转入其他顶点

for(int i=0;isize;i++){

printf(“%d\n”,i);

scanf(“%s”,node[i].name);

node[i].len=0.0;

node[i].index=i;

node[i].next=NULL;

Node *pos=node[i];

char name[10];

int index=0;

float len=0.0;

while(true){

scanf(“%s”,name);

if(strcmp(name,”#”)==0) break;

scanf(“%d %f”,index,len);

Node *no=alloc(Node);

strcpy(no-name,name);

no-index=index;

no-len=len;

no-next=NULL;

pos-next=no;

pos=pos-next;

}

}

}

void printnode(Node *node){

printf(“(%d,%s,%g)”,node-index,node-name,node-len);

}

void showtable(Node node[],int size){

for(int i=0;isize;i++){

printnode(node+i);

Node *pos=node[i].next;

while(pos!=NULL){

printf(“-“);

printnode(pos);

pos=pos-next;

}

printf(“\n”);

}

}

int main(){

Node node[NODE_NUM];

generate(node,NODE_NUM);

float distance[NODE_NUM];

int previous[NODE_NUM];

int lastindex=dijkstra(node,NODE_NUM,0,distance,previous);

printTrace(lastindex,node,previous);

return 0;

}

c语言的一个小问题

没必要那么复杂吧,其实只要分别求x和y的加权平均数就行了。读文本我省略了,直接储存成数据了。

#include stdio.h

#include stdlib.h

double X[8]={10,30,19,38,9,2,5,29};

double Y[8]={20,34,25,49.1,38.1,34,8};

int People[8]={30,45,28,8,36,16,78,56};

main()

{

double X_=0,Y_=0;

int i;

int PeopleCount=0;

for(i=0;i8;i++)

PeopleCount+=People[i];//总人数

for(i=0;i8;i++)

X_+=X[i]*People[i]/PeopleCount;//求x的加权平均数

for(i=0;i8;i++)

Y_+=Y[i]*People[i]/PeopleCount;//求y的加权平均数

printf(“Best location:(%f,%f)”,X_,Y_);

return 0;

}

程序运行后输出(16.350168,19.402020)

C语言中为新建医院选址问题

假设distance[i][j]存储了村庄之间的距离

定义int a[N];

a[i],假设在第i个村庄建立医院,那么最远村庄到该医院的距离。

for(i=0; iN; i++){//假设在第i个村庄建立医院

a[i] = 0;

for(j=0;jN; j++)

if(a[i]distance[i][j]) a[i]=distance[i][j];//寻找最远村庄,将最远距离保存到a[i]

}

//在a数组中寻找最小值。

for(i=0; iN; i++){

//略

}

//最小值对应的下标就是村庄。

//略。输出。

C语言数据结构 超市选址

【程序的设计要求】

要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

【学生的培养要求】

你自己的能力,也要经得起测试,这个题就是测试你能力的,明显你的能力不行,通不过嘛

通不过就通不过,宁可学的知识少一些,也要注重自己的品德,没能力又没品德,靠抄袭,就算做出来,也是没有意义的

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/196349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-03 09:55
下一篇 2024-12-03 09:56

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python定义函数判断奇偶数

    本文将从多个方面详细阐述Python定义函数判断奇偶数的方法,并提供完整的代码示例。 一、初步了解Python函数 在介绍Python如何定义函数判断奇偶数之前,我们先来了解一下P…

    编程 2025-04-29
  • Python符号定义和使用方法

    本文将从多个方面介绍Python符号的定义和使用方法,涉及注释、变量、运算符、条件语句和循环等多个方面。 一、注释 1、单行注释 # 这是一条单行注释 2、多行注释 “”” 这是一…

    编程 2025-04-29
  • Python中的队列定义

    本篇文章旨在深入阐述Python中队列的定义及其应用,包括队列的定义、队列的类型、队列的操作以及队列的应用。同时,我们也会为您提供Python代码示例。 一、队列的定义 队列是一种…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python编程技巧:如何定义一个函数n!,并计算5!

    在这篇文章中,我们将研究如何使用Python编程语言定义一个能够计算阶乘的函数,并且演示如何使用该函数计算5!。 一、阶乘函数的定义 在Python中,我们可以使用一个简单的递归函…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29

发表回复

登录后才能评论