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/zh-tw/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

發表回復

登錄後才能評論