プログラムを書いてみましたがコードを読み取ってくれません
かなり冗長でわかりづらいと思いますがどこが間違えているのか教えてください
#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]);
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
比較回数と交換回数表示について
-
nCmの関数
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 配列と関数の練習問題
-
c言語
-
std::set<int> で、ある値が何...
-
卒業研究でよく分からないとこ...
-
C言語 エラーの原因がわからな...
-
DLLをGetProcAddress()で実行で...
-
【C++】関数ポインタの使い方
-
read関数をノンブロッキングで...
-
C言語における対称行列の作り方...
-
構造体の勉強中です 合計点の高...
-
C言語です。
-
C言語での引数の省略方法
-
困ってます…nCrを求めるC言語...
-
C++でvectorにテキストファイル...
-
プログラミング
-
素数 再帰関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報