導航:首頁 > 網路數據 > c語言處理大數據

c語言處理大數據

發布時間:2021-12-03 06:57:20

① C語言用數組存儲大型數據的演算法

樓主一定懂c++吧?c++標准庫裡面有一個模板類叫
bitset<>
專門用來做位操作的。
你的問題用這個可以高效的解決,建立一個足夠大的空間,比如8000個位
bitset<8000>
然後就簡單了,乘法函數把乘數轉化成bitset<32>類型的對象(用乘數直接初始化代表乘數的bitset<32>對象)然後用位運算符把被乘數(那個bitset<8000>類型的對象)按位右移,(一個10進制數右移一次相當於乘10,一個2進制數右移一次相當於乘2;乘數中,二進制位如果知道它是從右數第n位,那麼就把被乘數向右移動n-1位就完成了乘法,然後再做下一個二進制位的乘法,直到被乘數中所有的2進制位都被使用過為止)。做完了每32位2進制位轉化成一個unsigned long,存儲在一個鏈表或者數組(懷疑空間不夠,內存里很有可能沒有這么大的連續空間)中,如果按順序逐個輸出就是問題的結果。
我覺得這個方法比2樓的高效。
如果你不想使用c++標准庫……那也可以考慮用c中的位域,也支持位操作。不過遠沒有前面的方便,很多操作都要自己做,比如最基本的你必須有一個適合乘法操作的動態增長的位域組成的鏈表。而且即使這樣還不一定高效。

……寫完了才看的3樓,3樓就做得很好了。

② c語言處理文件里的大數據

只能分塊處理了,讀入一塊、處理一塊、存儲一塊,資料庫就是這么乾的。

③ c語言文件處理:大數據排序,我知道用ftell,fwrite...歸並排序,但如何實現

如果你不想把硬碟搞壞,不要直接操作文件讀寫排序,大數據而且速度也會很慢。
建議把文件數據讀入到動態分配內存,再進行數據排序,排序完成後,再寫入到文件,這樣做速度性能快。按你代碼那樣不停讀寫硬碟來實現排序,是非常不好的方式,因為硬碟是比較慢的設備,導致程序排序起來非常慢,頻繁讀寫硬碟對硬碟壽命也有影響。
排序方法有很多種,快速排序在大數據排序方面性能比較理想。

④ C語言讀取大數據文件以及數據組裝

我知道一個大數據的類型:int64。 用來定義數據的可以試是比較大的。

⑤ C語言基礎,大數據的輸入和輸出

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX101
intcheck(char*a){
inti,n,k=1;
n=strlen(a);
for(i=0;i<n;i++)
(a[i]>'9'||a[i]<'0'){
k=0;
break;
}
returnk;
}
intplus(char*a,char*b,int*s){
inti,j,n,m,t,k=0;
//printf("%s %s ",a,b);
i=strlen(a)-1;
j=strlen(b)-1;
t=0;
while(i>=0&&j>=0){
t=t+a[i--]-'0'+b[j--]-'0';
s[k++]=t%10;
t=t/10;
}
if(t&&(i!=j))
s[k]=t;
if(t&&(i==j))
s[k++]=t;
while(i>=0){
s[k]+=a[i--]-'0';
k++;
}
while(j>=0){
s[k]+=b[j--]-'0';
k++;
}
for(i=k-1;i>=0;i--){
printf("%d",s[i]);
}
printf(" ");
returnk;
}
intmain(intargc,char*argv[]){
chara[MAX],b[MAX];
intc[MAX+2]={0};
scanf("%s%s",&a,&b);
//printf("%s %s ",a,b);
if(check(a)&&check(b))
plus(a,b,c);
else
printf("error ");
return0;
}

⑥ 如何使用C語言實現大數據體的動態讀取與處理

在內存中開辟兩個緩存區,大小?比如每個緩存32M,然後將數據讀入輸入緩存處理版,處理後的結果送輸權出緩存
這里的關鍵問題是如何對緩存進行管理?總體思路是,當緩存中有數據時,則取數據進行處理,處理好後放輸出緩存,同時還必須檢測,當輸出緩存數據快滿時,能夠及時將數據送入硬碟。。。

上面是大體思路,實際中,一般運用多線程處理這種情況,即一個線程負責管理輸入緩存,一個線程負責管理輸出緩存,第三個線程負責數據處理。。。具體管理策略有很多,你需要綜合各種因素(比如時間寬余度等)來決定。。。

⑦ 用C語言如何實現大數據的加法,且是包括整數和小數的運算

剛寫的 看看符合你要求不

#include<stdio.h>
#include<string.h>
typedefstruct
{
inta[200];
intb[200];
}NUM;
voidformat_num(NUM*n,char*str)
{
char*p_dot=NULL;
char*p;
inti=0;
memset(n,0,sizeof(*n));
for(p=str;*p;p++)
if(*p=='.')break;
if(*p)p_dot=p;

p--;
while(p>=str)
{
n->a[i++]=*p---'0';
}
p=p_dot;
if(p==NULL)return;
i=0;
p++;
while(*p)
n->b[i++]=*p++-'0';
}

voidprint_num(NUM*n)
{
inti,j;
for(i=sizeof(n->a)/sizeof(n->a[0])-1;i>=0;i--)
if(n->a[i])break;
if(i>=0)
for(;i>=0;i--)
printf("%d",n->a[i]);
elseprintf("0");
for(i=sizeof(n->b)/sizeof(n->b[0])-1;i>=0;i--)
if(n->b[i])break;
if(i>=0)
{
printf(".");
for(j=0;j<=i;j++)
printf("%d",n->b[j]);
}
}

voidadd(NUM*a,NUM*b,NUM*c)
{
intt=0;
inti;
for(i=sizeof(a->b)/sizeof(a->b[0])-1;i>=0;i--)
{
t+=a->b[i]+b->b[i];
c->b[i]=t%10;
t/=10;
}
for(i=0;i<sizeof(a->a)/sizeof(a->a[0]);i++)
{
t+=a->a[i]+b->a[i];
c->a[i]=t%10;
t/=10;
}
}

intmain()
{
charsa[100],sb[100];
NUMa,b,c;
scanf("%s%s",sa,sb);
format_num(&a,sa);
format_num(&b,sb);
print_num(&a);
printf("+");
print_num(&b);
printf("=");
add(&a,&b,&c);
print_num(&c);
printf(" ");

return0;
}

⑧ C語言大數據問題

給你提個思路吧,這種大數據都必須用數組來做的。把數字直接定內義成數組,然後將容轉換規則寫成代碼,而不是直接用取余或取整來做。我給你上傳一個大數加法的代碼,給你些啟發吧。想要代碼可以先採納我,然後我給你寫一個進制轉換的代碼。你這分太少,多些我會直接給你寫個代碼的。

⑨ 怎麼用c語言處理大數據

只要內存夠大,可以讀取2萬行數據的,我上次寫了個程序讀取了240萬條數據到內存之中。
你只要用getline函數,和strtok函數配合使用就行了,只能讀取6000行數據可能是你程序寫的有問題。

⑩ 用C語言實現求一個大數據如(2的63次方)的絕對值

整數:輸抄入-2^63 ~ +2^63數據並取絕對值
unsigned long long int x;
scanf("%lld",&x); if ( x<0 ) x=-x;
printf("%lld",x);
如果是浮點數精度只能達到16位了。

閱讀全文

與c語言處理大數據相關的資料

熱點內容
Linux配置yum本地文件庫 瀏覽:909
oracle資料庫用什麼資料 瀏覽:390
比較成功的網路廣告 瀏覽:750
復制文件找不到復制路徑 瀏覽:391
java運行原理 瀏覽:558
買韓星周邊用什麼app 瀏覽:517
ps自動生成的文件格式 瀏覽:232
mac應用程序打不開了 瀏覽:836
qq飛車手游內測版下載地址 瀏覽:927
中文網站翻譯成俄語多少錢 瀏覽:107
文件名加標題 瀏覽:644
共享數據怎麼被凍結了 瀏覽:150
如何登記考勤數據 瀏覽:640
蘋果6s前置照片效果 瀏覽:171
企業微信素材庫文件下載鏈接 瀏覽:582
pdf文件怎麼取消標黃 瀏覽:781
打電話時不能使用網路是什麼原因 瀏覽:919
ps怎麼將文件合並 瀏覽:747
java的日期格式化 瀏覽:981
電腦應用程序怎麼關 瀏覽:986

友情鏈接