cell數(shù)組一般被叫做元胞數(shù)組,它的每個(gè)單元可以儲(chǔ)存不同的數(shù)據(jù)類型,可以是數(shù)值,字符或矩陣或元胞數(shù)組等,類似于學(xué)過的c語言里的結(jié)構(gòu)體
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括鄰水網(wǎng)站建設(shè)、鄰水網(wǎng)站制作、鄰水網(wǎng)頁制作以及鄰水網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,鄰水網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到鄰水省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
1.cell數(shù)組的創(chuàng)建
可以直接通過{}類似于矩陣的直接賦值:a={'winter',123,'coming','哈哈'};
也可以通過cell函數(shù)預(yù)分配內(nèi)存,再賦值:a=cell(1,4);a={'winter',123,'coming','哈哈'};
2.cell數(shù)組的訪問
與普通矩陣,數(shù)組的主要區(qū)別在于:通過()訪問cell數(shù)組時(shí)訪問到的是cell單元,通過{}訪問cell數(shù)組時(shí)訪問到的是cell單元儲(chǔ)存的內(nèi)容,舉例如下圖所示,其他操作基本一樣。
3.cell數(shù)組相關(guān)的函數(shù)
cell:創(chuàng)建空的元胞數(shù)組,預(yù)分配內(nèi)存
celldisp:顯示元胞數(shù)組所有內(nèi)容
cellplot:利用圖形方式顯示內(nèi)容(因缺思廳?。?/p>
cell2mat:將元胞數(shù)組成普通矩陣(要求cell元胞數(shù)組的所有內(nèi)容都必須為相同數(shù)據(jù)類型,可以為字符,會(huì)轉(zhuǎn)化為字符矩陣)
mat2cell:將普通矩陣轉(zhuǎn)化成元胞數(shù)組
iscell:判斷輸入是否為元胞數(shù)組
cellfun:為cell數(shù)組的每個(gè)cell單元執(zhí)行指定的函數(shù),fun可以是特殊的函數(shù)或者句柄
b={[1,2,1];[2,1,1];[1,1,2]};
c=cellfun(@(x)(mat2str(x)),b,'un',0)
更一般的例子參見
4.cell單元的刪除
我們知道矩陣及矩陣的刪除可以通過[]實(shí)現(xiàn):
元胞數(shù)組操作類似但和其賦值一樣有區(qū)別,區(qū)別就在于{}和()
a={1,2,3};
a{1}=[];%并不能刪除第一個(gè)cell單元,只是變成空值
a(1)=[];%刪除第一個(gè)單元
a(:)=[];%一次性刪除所有cell單元
如果p為一個(gè)數(shù),那么h(1)=p,是沒有問題的。
如果p為一個(gè)向量,那么h(1,:)=p是沒有問題的。
如果p是一個(gè)矩陣的話,上面的兩種賦值方法都是會(huì)有錯(cuò)誤的。
那么要如何處理呢?
這時(shí)就用到了cell數(shù)據(jù)類型了。cell的每個(gè)單元都可以存儲(chǔ)任何數(shù)據(jù),比如傳遞函數(shù)等。當(dāng)然,存儲(chǔ)矩陣更是沒有問題的了。但是用cell數(shù)據(jù)類型之前,要先初始化。
a=cell(n,m)
那么就把a(bǔ)初始化為一個(gè)n行m列的空cell類型數(shù)據(jù)。
如何賦值呢?
a{1,1}=rand(5)
那么a的1行1列的單元中存儲(chǔ)的就是一個(gè)隨機(jī)的5×5的方陣了。
那么要用第一個(gè)單元中的方陣中的某個(gè)值呢?
可以如下引用:a{1,1}(2,3)
就可以了,引用cell單元時(shí)要用{},再引用矩陣的某個(gè)數(shù)據(jù)就要用()了。
cell單元中的每個(gè)單元都是獨(dú)立的,可以分別存儲(chǔ)不同大小的矩陣或不同類型的數(shù)據(jù)。
CELL是單元數(shù)組(Cell Array)將類型不同的相關(guān)數(shù)據(jù)集成到一個(gè)單一的變量中,使得大量相關(guān)數(shù)據(jù)的引用和處理變得簡單方便;需要注意的是,單元數(shù)組僅僅是承載其他數(shù)據(jù)類型的容器,大部分的數(shù)學(xué)運(yùn)算只是針對其中的具體數(shù)據(jù)進(jìn)行的,而非針對單元數(shù)組本身進(jìn)行。
定義
1. 細(xì)胞型數(shù)據(jù)的定義:
1)直接賦值定義:細(xì)胞型變量在定義時(shí)需要使用大括號(hào),元素用逗號(hào)隔開
例: B = {1:4,A,‘a(chǎn)bcd’}
2)使用cell函數(shù),預(yù)先為細(xì)胞型變量定義空間
例: A = cell(m,n) 定義一個(gè)空的m行n列的cell類型
擴(kuò)展資料:
C語言是普適性最強(qiáng)的一種計(jì)算機(jī)程序編輯語言,它不僅可以發(fā)揮出高級編程語言的功用,還具有匯編語言的優(yōu)點(diǎn),因此相對于其它編程語言,它具有自己獨(dú)特的特點(diǎn)。具體體現(xiàn)在以下三個(gè)方面:
其一,廣泛性。C 語言的運(yùn)算范圍的大小直接決定了其優(yōu)劣性。C 語言中包含了34種運(yùn)算符,因此運(yùn)算范圍要超出許多其它語言,此外其運(yùn)算結(jié)果的表達(dá)形式也十分豐富。此外,C 語言包含了字符型、指針型等多種數(shù)據(jù)結(jié)構(gòu)形式,因此,更為龐大的數(shù)據(jù)結(jié)構(gòu)運(yùn)算它也可以應(yīng)付。
其二,簡潔性。9 類控制語句和32個(gè)KEYWORDS是C語言所具有的基礎(chǔ)特性,使得其在計(jì)算機(jī)應(yīng)用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同 時(shí)還能夠支持高級編程,避免了語言切換的繁瑣。
其三,結(jié)構(gòu)完善。C語言是一種結(jié)構(gòu)化語言,它可以通過組建模塊單位的形式實(shí)現(xiàn)模塊化的應(yīng)用程序,在系統(tǒng)描述方面具有顯著優(yōu)勢,同時(shí)這一特性也使得它能夠適應(yīng)多種不同的編程要求,且執(zhí)行效率高。
參考資料來源:百度百科-CELL
#include?stdio.h
#include?stdlib.h
struct?cell
{
char*?name;
int?time;
int?seat;
int?saled;
}?a,b,c,d;
int?sel=0;
void?title();
void?saleproc();
int?saleThread(struct?cell*?ce,int?dd);
void?tiupiaoproc();
int?tiupiaoThread(struct?cell*?ce);
void?count();
int?init(struct?cell*?ce,char*?name,int?time,int?seat)
{
ce-name=name;
ce-time=time;
ce-seat=seat;
ce-saled=0;
return?1;
}
int?saleThread(struct?cell*?ce,int?dd)
{
if((ce-seat-ce-saled)=dd)
{
ce-saled+=dd;
printf("售票成功!按ESC鍵返回主菜單\n");
fflush(stdin);
int?cc=_getche();
return?1;
}
else
{
printf("售票失敗---余票不足!按ESC鍵返回主菜單\n");
fflush(stdin);
int?cc=_getche();
return?0;
}
}
void?saleproc()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*????????廳?影片?時(shí)間?余票????????*\n");
printf("*?????????????????????????????????*\n");
printf("*?A?%s?%d:%d?%3d?*\n",a.name,a.time/60,a.time%60,a.seat-a.saled);
printf("*?????????????????????????????????*\n");
printf("*?B?%s?%d:%d?%3d?*\n",b.name,b.time/60,b.time%60,b.seat-b.saled);
printf("*?????????????????????????????????*\n");
printf("*?C?%s?%d:%d?%3d?*\n",c.name,c.time/60,c.time%60,c.seat-c.saled);
printf("*?????????????????????????????????*\n");
printf("*?D?%s?%d:%d?%3d?*\n",d.name,d.time/60,d.time%60,d.seat-d.saled);
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("請選擇放映廳(a,b,c,d)和要購的票數(shù)(按ESC鍵返回主菜單)(格式:?a?5):\n");
fflush(stdin);
char?cc;
int?dd;
dd=_getche();
if(dd==27)
{
f=0;
break;
}
else
{
cc=(char)dd;
}
scanf("%d",dd);
switch(cc)
{
case?'a':
saleThread(a,dd);
f=0;
break;
case?'b':
saleThread(b,dd);
f=0;
break;
case?'c':
saleThread(c,dd);
f=0;
break;
case?'d':
saleThread(d,dd);
f=0;
break;
default:
break;
}
}
title();
}
int?tiupiaoThread(struct?cell*?ce)
{
if(ce-saled==0)
{
printf("撞尼瑪鬼了?老子一張票都沒賣,?哪來的退票???\n");
fflush(stdin);
int?cc=_getche();
return?0;
}
ce-saled--;
printf("退票成功!?按任意鍵返回主菜單\n");
fflush(stdin);
int?cc=_getche();
return?1;
}
void?tiupiaoproc()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*??????????????退?票??????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????A?%-20s???????*\n",a.name);
printf("*?????????????????????????????????*\n");
printf("*????B?%-20s???????*\n",b.name);
printf("*?????????????????????????????????*\n");
printf("*????C?%-20s???????*\n",c.name);
printf("*?????????????????????????????????*\n");
printf("*????D?%-20s???????*\n",d.name);
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("請輸入要退的廳(a,b,c,d):\n");
char?cc;
fflush(stdin);
scanf("%c",cc);
if(cc=='?')
{
f=0;
break;
}
switch(cc)
{
case?'a':
tiupiaoThread(a);
f=0;
break;
case?'b':
tiupiaoThread(b);
f=0;
break;
case?'c':
tiupiaoThread(c);
f=0;
break;
case?'d':
tiupiaoThread(d);
f=0;
break;
default:
break;
}
}
title();
}
void?countproc()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*?統(tǒng)?計(jì)?*\n");
printf("*?????????????????????????????????*\n");
printf("*?A廳:?余票?%3d?上座率?%5.2f%%?*\n",a.seat-a.saled,(((float)a.saled/(float)a.seat)*100));
printf("*?????????????????????????????????*\n");
printf("*?B廳:?余票?%3d?上座率?%5.2f%%?*\n",b.seat-b.saled,(((float)b.saled/(float)b.seat)*100));
printf("*?????????????????????????????????*\n");
printf("*?C廳:?余票?%3d?上座率?%5.2f%%?*\n",c.seat-c.saled,(((float)c.saled/(float)c.seat)*100));
printf("*?????????????????????????????????*\n");
printf("*?D廳:?余票?%3d?上座率?%5.2f%%?*\n",d.seat-d.saled,(((float)d.saled/(float)d.seat)*100));
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("按ESC鍵返回主菜單!\n");
fflush(stdin);
int?cc=_getche();
if(cc==27)
{
f=0;
break;
}
}
title();
}
void?title()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*????????歡迎光臨牛B電影院????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????1.?售?票?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????2.?退?票?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????3.?統(tǒng)?計(jì)?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????4.?退?出?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("請選擇:(1,2,3,4)?\n");
fflush(stdin);
scanf("%d",sel);
getchar();
switch(sel)
{
case?1:
saleproc();
f=0;
break;
case?2:
tiupiaoproc();
f=0;
break;
case?3:
countproc();
f=0;
break;
case?4:
system("exit");
f=0;
break;
default:
break;
}
}
}
int?main(int?argc,?char?*argv[])
{
init(a,"鋼鐵俠3",18*60+30,150);
init(b,"致青春",19*60+30,150);
init(c,"姜戈",20*60+30,150);
init(d,"生化危機(jī)4",20*60+20,100);
title();
return?0;
}