アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラムを書いてみましたがコードを読み取ってくれません
かなり冗長でわかりづらいと思いますがどこが間違えているのか教えてください

#include<stdio.h>
#include<string.h>

int a,size=0,table[]={},code2[256][256]={},len[]={};

void haff(char code1[]) {
int b=0,i,j=0,k=0,l=0,parent[]={},left[]={},right[]={},count=0,min1,min2,m[]={};

/* 文字の頻度を数える */
for (i=0;code1[i]!='\0';i++) {
table[(int)code1[i]-65]++;
size++;
}

while (1) {
min1=256;
min2=256;

/* 残りの葉と節を数える */
for (i=0;i<l+26;i++) {
if (table[i]>0) {
count++;
}
}
if (count==1) {
break;
} else {
count=0;
}

/* 葉を節にまとめる */
for (i=0;i<l+26;i++) {
if (table[i]<min1 && table[i]>0) {
min1=table[i];
j=i;
}
}
for (i=0;i<l+26;i++) {
if (table[i]!=min1 && table[i]<min2 && table[i]>0) {
min2=table[i];
k=i;
}
}

left[l+26]=j;
right[l+26]=k;
parent[j]=1;
parent[k]=-1;
table[l+26]=min1+min2;
table[j]=table[k]=0;

l++;
}

/* 葉と節をたどって木を読む */
for (a=0;a<26;a++) {
for (i=0;i<l+26;i++) {
if (left[i]==a || right[i]==a) {
m[b]=a;
a=i;
b++;
}
}
a=m[0];
len[a]=b;
for (i=0;i<b;i++) {
if (parent[(int)m[b-i-1]]<0) {
code2[a][i]=1;
} else {
code2[a][i]=0;
}
m[b-i-1]=0;
}
b=0;
}
}

int main(void) {
int i;
char code1[]={};

printf("大文字でコードを入力してください\n");
scanf("%s\n",code1);

haff(code1);

for (i=0;i<size;i++) {
for (a=0;a<len[(int)code1[i]-65];a++) {
printf("%d",code2[(int)code1[i]-65][a]);
}
}
}

A 回答 (1件)

>int a,size=0,table[]={},code2[256][256]={},len[]={};



code2の配列はサイズが確定できるでしょうけど…
table[]やlen[]はサイズどうなるんでしょうかね?
# 要素数0?
    • good
    • 0
この回答へのお礼

回答ありがとうございます

お礼日時:2017/12/05 10:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!