ぼるじょあがC/C++の宿題を片づけますYO! 67代目
■ このスレッドは過去ログ倉庫に格納されています
0001ぼるじょあ ◆yBEncckFOU
2006/12/10(日) 11:33:41わからない宿題を片づけますYO!
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
0302デフォルトの名無しさん
2007/01/16(火) 22:30:52{
char *p = ss;
while(*p!='\0'){
//空白を読み飛ばす
while(*p==' '&&*p!='\0'))p++;
*p = toupper(*p);
while(*p!=' '&&*p!='\0'))p++;
if(*p == '\0')break;
}
}
0303デフォルトの名無しさん
2007/01/16(火) 22:31:290304デフォルトの名無しさん
2007/01/16(火) 23:17:18何の冗談?
0305ぼるじょあ ◆hZ8e4Wjqvw
2007/01/16(火) 23:55:58(・3・) エェー >>1 の質問テンプレを活用してくれYO!
#include<stdio.h>
#include<ctype.h>
void word_top_upper(char *str){
int is_word_top=1;
for(;*str;str++){
if(is_word_top) *str=toupper(*str);
if(isspace(*str)) is_word_top=1;
else is_word_top=0;
}
}
int main(void){
char buf[]="toupper use good programu";
printf("%s\n", buf);
word_top_upper(buf);
printf("%s\n", buf);
return 0;
}
0306デフォルトの名無しさん
2007/01/17(水) 00:04:010308デフォルトの名無しさん
2007/01/17(水) 00:55:140309デフォルトの名無しさん
2007/01/17(水) 00:56:190310309
2007/01/17(水) 00:59:05もしかしてぼるじょあさんって一人じゃなかったりするんですか??複数いたり!?
0311ぼるじょあ ◆hZ8e4Wjqvw
2007/01/17(水) 17:33:32(・3・) エェー >>297 間違ってたYO!
double x_sum[SUBJECT_TOTAL], x2_sum[SUBJECT_TOTAL];
double ave[SUBJECT_TOTAL], dev[SUBJECT_TOTAL];
↓
double x_sum[SUBJECT_NUM], x2_sum[SUBJECT_NUM];
double ave[SUBJECT_NUM], dev[SUBJECT_NUM];
0312ぼるじょあ ◆yBEncckFOU
2007/01/17(水) 18:21:20(・3・) アルェー ぼるじょあはほるじょあだYo
ぼるじょあの中に色んなペルソナが居るけど、
みんなぼるじょあだYo
だけど>>311は偽ぼるじょあだYo
0313デフォルトの名無しさん
2007/01/17(水) 19:11:34using namespace std;
int main(void)
{
unsigned char x,y;
cout << "2つの値を入力してください。\n";
cin >> x >> y;
x -= '0';
y -= '0';
int a = x + y;
int b = x * y;
printf("x = %d, y = %d, x + y = %d, x * y = %d",x,y,a,b);
return 0;
}
これで出力したら10以上の数値が出ないんですが、
どうしたら出るようになるか教えてください。
0314デフォルトの名無しさん
2007/01/17(水) 19:30:44まぁ…がんばれ
0315デフォルトの名無しさん
2007/01/17(水) 19:33:38[2] 問題文(含コード&リンク):
入力したグレースケール(白黒)画像[256×256画素、8ビット256階調]を
8枚のビットプレーンに分解し、それぞれのプレーンを出力するプログ
ラムを作成せよ。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限:1/18 9:00
[5] その他の制限:
入力ファイルはnotファイルです。出力はnotファイル8枚作れればいいです。
0316ぼるじょあ ◆hZ8e4Wjqvw
2007/01/17(水) 19:38:34(・3・) エェー notファイルのフォーマットについて解説してくれYO!
解説しているサイトの URL でもいいYO!
0317315
2007/01/17(水) 19:58:38自分も今回初めてnotファイルの存在を知ったので正直詳しくないですが、
256×256画素、8ビット256階調の場合、256×256個の画素値が書かれた
ファイルです。画像として再現させる場合はSusieというプログラムを通
して画像を出します。
とこんな感じしか分からないです。すみません
0319315
2007/01/17(水) 20:09:490320ぼるじょあ ◆hZ8e4Wjqvw
2007/01/17(水) 20:20:36(・3・) エェー こんなもんかNA?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3432.c
0321ぼるじょあ ◆yBEncckFOU
2007/01/17(水) 20:23:55_, ,_
(・3・) エェー 「分からない」じゃなくて先生が考えた独自フォーマットだろ?
notファイルって何だよw
で、ビットプレーンは1画素当たり1バイト(つまり256x256x1バイトのビットプレーンが
8枚)で出力すればいいのかお?
たとえば入力画像の1画素の値が0xAFだった場合、
ビットプレーン0 0x80
ビットプレーン1 0x00
ビットプレーン2 0x20
ビットプレーン3 0x00
ビットプレーン4 0x08
ビットプレーン5 0x04
ビットプレーン6 0x02
ビットプレーン7 0x01
のようにバイナリで記録していけばいいのかお?ということだお
それとも詰めて(つまり256x256/8バイトのビットプレーンが8枚)出力すれば
いいのかお?
0323デフォルトの名無しさん
2007/01/17(水) 20:32:47最近偽者が多いみたいですね。残念です。
0326デフォルトの名無しさん
2007/01/17(水) 20:54:300327315
2007/01/17(水) 20:55:12ぼるじょあさん、ありがとうございます。
ずっと悩んでた問題なのにこんなにあっさりできちゃうなんてびっくりです。
>>324
はい、2階調のが8個できればそれぞれのビットプレーンから256階調の画像に
戻すこともできるので大丈夫です。
0328ぼるじょあ ◆yBEncckFOU
2007/01/17(水) 20:56:320331ぼるじょあ ◆hZ8e4Wjqvw
2007/01/17(水) 21:21:45(・3・) エェー 本物のぼるじょあの方が正解だったYO!
notファイルのフォーマットとやらに bpp が色々あるなんて考えてなかったYO!
修正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3433.c
0333ぼるじょあ ◆hZ8e4Wjqvw
2007/01/17(水) 21:44:350334315
2007/01/17(水) 21:56:51はい、結果オーライです。・・・それでさっきの問題続きがあって、
8ビットプレーンのうち、いずれかのプレーンを指定して透かし画像(�@ランダム画像、�Aロゴ画像)
と置き換えた透かし埋め込み画像を出力するプログラムを書く。また、それぞれの画像を表示した
結果を示す
って問題なんですけどよかったら続きも見ていただけませんか?
0335ぼるじょあ ◆hZ8e4Wjqvw
2007/01/17(水) 22:09:21256階調の画像に戻せばいいと思うYO!
0336315
2007/01/17(水) 22:14:450337デフォルトの名無しさん
2007/01/17(水) 23:26:34ぼるじょあさんってプログラム詳しいみたいだけど
どんなお仕事してる人なの?それともまだ学生??
0339315
2007/01/18(木) 00:16:02ぼるじょあさん、助けてもらえませんか?
0340デフォルトの名無しさん
2007/01/18(木) 00:51:02え〜
よけい知りたくなるじゃん!!
0341デフォルトの名無しさん
2007/01/18(木) 10:36:54できませんよ。。エラーでてw
0342デフォルトの名無しさん
2007/01/18(木) 10:51:56・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
0343デフォルトの名無しさん
2007/01/18(木) 10:59:11[2] 問題文(含コード&リンク):
コピー プログラムを書いてください。 次のように、
第 1 引数をコピー元、第 2 引数をコピー先ファイル
名として扱ってください。
% ./a.out コピー元ファイル名 コピー先ファイル名
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (どちらでも可)
[4] 期限: 明日まで
[5] その他の制限: ありません
0344デフォルトの名無しさん
2007/01/18(木) 11:20:15>>341
0345デフォルトの名無しさん
2007/01/18(木) 11:20:46[2] 問題文(含コード&リンク):
・テキストファイルを読み込んで指定した文字または文字列が何行目にあるか検索する。
・読み込むテキストファイルはコマンドライン引数から得る
・検索する文字、文字列はscanf()から得る
・scanf()から得た文字、文字列の配列はヒープで確保
・検索する文字、文字列がなければエラーメッセージを出して
再び文字、文字列を指定して再検索
・指定した文字、文字列がみつかれば、「○○は○行目にあります。」と表示する
・and検索、or検索もできるようにする
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1月20日に提出
[5] その他の制限:
何を習ったかはここを見てください!学校バレますがw
http://ylb.jp/c/
http://ylb.jp/2006b/proc/index.html
http://www.kyoto-su.ac.jp/%7Eyamada/programming/programmingB.html
0346ぼるじょあ ◆hZ8e4Wjqvw
2007/01/18(木) 11:28:48(・3・) エェー 低速版できたYO!
#include<stdio.h>
int main(int argc, char *argv[]){
char *fname_in, *fname_out;
FILE *fp_in, *fp_out;
int moji;
if(argc!=3){
fprintf(stderr, "\nUsage: %s filename1 filename2\n", argv[0]);
return 1;
}
fname_in=argv[1];
fname_out=argv[2];
fp_in=fopen(fname_in, "rb");
if(fp_in==NULL){
fprintf(stderr, "\nError: %s file cannot open.\n", fname_in);
return 1;
}
fp_out=fopen(fname_out, "wb");
if(fp_out==NULL){
fprintf(stderr, "\nError: %s file cannot open.\n", fname_out);
fclose(fp_in);
return 1;
}
while((moji=fgetc(fp_in))!=EOF)
fputc(moji, fp_out);
fclose(fp_in);
fclose(fp_out);
return 0;
}
0347デフォルトの名無しさん
2007/01/18(木) 11:34:54toupper()を使っての問題を教えてもらったんですが
実行してもできませんでした
全部の文字を大文字という問題わかりますか?
0348デフォルトの名無しさん
2007/01/18(木) 11:35:37読み込むテキストファイルは
one two three four
five six seven
eight nine ten
をテスト用に使おうとしてましたがそこまでいかず・・・。
よろしくお願いします。
0349ぼるじょあ ◆hZ8e4Wjqvw
2007/01/18(木) 11:39:44(・3・) エェー リダイレクトを使ってファイル入力してNE!
例: a.out < a.c
#include<stdio.h>
#include<ctype.h>
int main(void)
{
int moji;
while((moji=getchar())!=EOF)
putchar(toupper(moji));
return 0;
}
0350ぼるじょあ ◆hZ8e4Wjqvw
2007/01/18(木) 11:45:58(・3・) エェー 全角空白はタブに置き換えて欲しいお
それともインデントつけない方がいいのかお?
0351デフォルトの名無しさん
2007/01/18(木) 13:16:12[2] 問題文(含コード&リンク):
配列{1,3,5,7,9,0,2,4,6,8}があるとき、insert関数とdel関数を使って、4番目の要素を削除し、7番目に10を挿入せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio.net
[3.3] 言語: C
[4]期限
1月19日
お願いします。
0352デフォルトの名無しさん
2007/01/18(木) 13:17:400353デフォルトの名無しさん
2007/01/18(木) 13:21:440354デフォルトの名無しさん
2007/01/18(木) 13:46:31またお前か
0355デフォルトの名無しさん
2007/01/18(木) 15:25:500356初心者
2007/01/18(木) 15:29:07[2] 問題文(含コード&リンク):
引数に渡された文字列 s を保持するのにぴったりの長さのメモリ領域を割り当て、その領域に文字列 s をコピーし、そのアドレスを返す関数 str_dup を完成させてください。
割り当てに失敗した場合は、NULLを返してください。文字列のコピーには strcpy を使用します。
#include <string.h> /* strlen 関数と strcpy 関数 */
char *str_dup(char *s){
char *p = NULL;
[ 空欄 1 ]
return p;
}
空欄をうめてください。
[3] 環境
[3.1] OS: Windowsです
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: 明後日です
[5] その他の制限:ないです
0357ぼるじょあ ◆hZ8e4Wjqvw
2007/01/18(木) 16:06:22#include<stdio.h>
#include<string.h>
#define ONE_LINE_MAX 1024
int main(int argc, char *argv[]){
char *filename, one_line[ONE_LINE_MAX], word[ONE_LINE_MAX];
long line_count;
int is_word_found;
FILE *fp;
filename=argv[1];
fp=fopen(filename, "r");
if(fp==NULL){
fprintf(stderr, "\nError: %s file cannot open.\n", filename);
return 1;
}
while(1){
printf("検索する文字列を入力して下さい :");
scanf("%s", word);
fseek(fp, 0L, SEEK_SET);
line_count=0;is_word_found=0;
while(fgets(one_line, sizeof(one_line), fp)!=NULL){
line_count++;
if(strstr(one_line, word)!=NULL){
printf("%s は %ld 行目にあります\n", word, line_count);
is_word_found=1;
}
}
if(!is_word_found) printf("%s は見つかりませんでした\n", word);
}
fclose(fp);
return 0;
}
if((p=malloc(strlen(s)))){strcpy(p,s);}
0359ぼるじょあ ◆hZ8e4Wjqvw
2007/01/18(木) 16:18:10(・3・) エェー insert関数とdel関数は適当に作ったYO!
#include<stdio.h>
#define NITEM(array) (sizeof(array)/sizeof(array[0]))
void insert(int array[], int array_size, int index, int value){
int i;
for(i=array_size-2;i>=index;i--)
array[i+1]=array[i];
array[index]=value;
}
void del(int array[], int array_size, int index){
int i;
for(i=index;i<array_size-1;i++)
array[i]=array[i+1];
array[i]=0;
}
void disp(int array[], int array_size){
int i;
for(i=0;i<array_size;i++)
printf(" %d", array[i]);
printf("\n");
}
int main(void){
int data[]={1,3,5,7,9,0,2,4,6,8};
disp(data, NITEM(data));
del(data, NITEM(data), 4-1);
disp(data, NITEM(data));
insert(data, NITEM(data), 7-1, 10);
disp(data, NITEM(data));
return 0;
}
0361デフォルトの名無しさん
2007/01/18(木) 16:36:322次元配列の中の文字列をクリアするにはどうすればいいんでしょうか?
if((p=malloc(strlen(s)+1))){strcpy(p,s);}
0363デフォルトの名無しさん
2007/01/18(木) 17:21:200365デフォルトの名無しさん
2007/01/18(木) 18:26:11if(ch=='.') putchar('\n');
0366homoじょあ ◆5OLf4yFnuM
2007/01/18(木) 21:45:480367デフォルトの名無しさん
2007/01/18(木) 21:57:130368ぼるじょあ ◆yBEncckFOU
2007/01/18(木) 23:29:20hZ8e4Wjqvw氏が全部回答してくれたから出番なしだったお
いや嫌味を言ってるんじゃなくてhZ8e4Wjqvw氏も幅広い知識を持った
なかなか賢い人だと感じたお
0369ぼるじょあ ◆yBEncckFOU
2007/01/18(木) 23:30:31もいらはhomoじょあとかアナルじょあと呼ばれてるからたぶん本物じゃないお
0370ぼるじょあ ◆yBEncckFOU
2007/01/18(木) 23:32:21大沢あかねたんが好きだお
大沢あかねたんと結婚または愛人になってくれるなら
全財産なげうっていいお
0371ぼるじょあ ◆yBEncckFOU
2007/01/18(木) 23:34:373日間アナ○三昧なら500万までなら出せるお
0372デフォルトの名無しさん
2007/01/19(金) 00:28:22ありがとうございます!!
あと実行時に、何語で検索するか→1語ならそのまま検索、1語以上ならand検索かor検索か
とか言う流れにしたいのですが・・・
0373ぼるじょあ ◆hZ8e4Wjqvw
2007/01/19(金) 04:23:41(・3・) エェー notファイルはもうお腹いっぱいだYO!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3457.c
0374デフォルトの名無しさん
2007/01/19(金) 14:47:58[2] 問題文(含コード&リンク):
UNIX システムコールを利用して、以下の仕様を満たすプログラムを書いてください。
コマンドライン引数がない場合は、標準入力を標準出力へコピー
コマンドライン引数が 1 つある場合は、第 1 引数のファイルの内容を標準出力へコピー
コマンドライン引数が 2 つある場合は、第 1 引数のファイルの内容を第 2 引数のファイルにコピー
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C++)
[4] 期限: 明後日
[5] その他の制限:
#include<stdio.h>
int main(int argc,char* argv[]){FILE* src=stdin;FILE* dst=stdout;int c;
if(argc>=2)src=fopen(argv[1],"r");if(argc==3)dst=fopen(argv[2],"w");
if(argc<4)while((c=fgetc(src))!=EOF)fputc(c,dst);return 0;}
0376デフォルトの名無しさん
2007/01/19(金) 16:10:37[2] 問題文(含コード&リンク):アルゴリズムの説明をせよ
#include<stdio.h>
#include<stdlib.h>
//int main(int argc, char **argv){ //argvはコマンドライン引数のこと
int main(void){
int i,j,m,n,k1,k2;
int blank;
int hint[4];
int total;
[3] 環境
[3.1] OS: (Windows/Linux/等々) linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
[3.3] 言語: C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] 2007年1月23日まで
[5] その他の制限:なしです。お願いします
0377376
2007/01/19(金) 16:12:55int initial[4][4];
if((data = fopen("prob4-1.txt", "r"))==NULL) {
printf("ファイルを開くことはできません\n");
exit(1);}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
fscanf(data,"%d",&initial[i][j]);}
blank=0;
}
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%4d",initial[i][j]);
printf("\n");} printf("\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(initial[i][j]==0)
blank++;}}
printf("initial\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
{
printf("%2d" ,initial[i][j]);}
printf("\n");}
0378376
2007/01/19(金) 16:15:59for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(initial[i][j]==0){
for(m=0;m<5;m++)
hint[m]=0;
for(n=0;n<4;n++){
if(initial[i][n]!=0)
hint[initial[i][n]]=1;}
for(n=0;n<4;n++){
if(initial[n][j]!=0)
hint[initial[n][j]]=1;}
k1=i/2;
k1*=2;
k2=j/2;
k2*=2;
for(m=k1;m<k1+2;m++)
for(n=k2;n<k2+2;n++){
if(initial[m][n]!=0)
hint[initial[m][n]]=1;}
total=(hint[1]+hint[2]+hint[3]+hint[4]);
for(m=1;m<5;m++)
if(total==3&&hint[m]==0){
initial[i][j]=m;
blank--;}}}
printf("result\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%4d",initial[i][j]);
printf("\n"); }
fclose(data);
return 0;}書ききれなかったので追加します。すみません
0379デフォルトの名無しさん
2007/01/19(金) 16:27:03and検索or検索の機能の追加お願いします。
これできないと単位もらえないので焦ってます;
実行後、いくつの後で検索するかを決めて、その後andかor検索にするか決めて、
andの場合は「○○と○○を含む行は○行目」
orの場合は「○○を含むのは○行目、○○を含むのは○行目」
と表示させるようにしたいんです!
色々やって途中までできたものをうpしとくので、よろしくお願いします!!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3463.c
0380ニケ
2007/01/19(金) 17:05:48[2] 問題文(含コード&リンク):
banana melon orange appleなどと代入して、
辞書式のリスト構造を作り、それを出力する
プログラムを作りなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限:できれば今日中がいいです。
[5] 2分探索木を最後に習いました。
ぼるじょあさん留年がかかってるのでお願いします。
0381ぼるじょあ ◆yBEncckFOU
2007/01/19(金) 17:08:270382デフォルトの名無しさん
2007/01/19(金) 17:12:44UNIXのシステムコールを使っとらんがな
0383デフォルトの名無しさん
2007/01/19(金) 17:20:21C言語なら俺に聞け(入門篇) Part 6
http://pc10.2ch.net/test/read.cgi/tech/1167325490/549
せっかく答えたのに無視ですか
氏ねよお前
0384デフォルトの名無しさん
2007/01/19(金) 17:25:35申し訳ないです…用事で出かけてました。
でも、ありがとうございました!!!
0385ニケ
2007/01/19(金) 17:40:22そう言わずにお願いしますYO!
ぼるじょあさぁん!!
0386ミケ
2007/01/19(金) 17:59:560387ニケ
2007/01/19(金) 18:04:44留年なんて言わなきゃ良かった…。
ホントに誰かお願いします!
0388ぼるじょあ ◆yBEncckFOU
2007/01/19(金) 20:00:21(・3・) エェー そんな曖昧な仕様の宿題なのかYO!
都合が悪いところは勝手に直してくれYO!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3465.c
0389ぼるじょあ ◆yBEncckFOU
2007/01/19(金) 20:03:06(・3・) あらためて>>380を読み返すとユーザーに入力させるんじゃなくて代入なのかYO!
しかも辞書式のリスト構造ってなんだYO!
とりあえず>>388は2分木だYO!
0390デフォルトの名無しさん
2007/01/19(金) 23:25:32[2] 適当な英文ファイルを読み込んで, アルファベット a 〜 z の各文字の出現回数をファイル frequency.txt に出力するプログラムを作成せよ.
ただし, 大文字と小文字は区別しないものとする.
※ fgets で文字列にデータを一行づつ読み込み, 文字列中の文字を一文字づつ調べて出現回数を配列に記録することにより数えよ. 例えば,
配列を int count[26] とすると, 'a' の個数を count[0] で, 'b' の個数を count[1] で, …, 'z' の個数を count[25] で数えるようにすればよい.
[3] 環境
[3.1] windows
[3.2] cygwin
[3.3] C
[4] 期限: 2007/1/21
[5] なるべく問題文に忠実に、難しすぎる書き方無しでお願いします。
0391ぼるじょあ ◆hZ8e4Wjqvw
2007/01/19(金) 23:45:00(・3・) エェー isalpha tolower は使ってもいいのかNA?
#include<stdio.h>
#include<ctype.h>
int main(void){
char *filename_in="適当な英文ファイル";
char *filename_out="frequency.txt";
FILE *fp_in, *fp_out;
char buf[256];
int i, count[26]={};
fp_in=fopen(filename_in, "r");
if(fp_in==NULL){
fprintf(stderr, "\nError: %s file cannot open.\n", filename_in);
return 1;
}
while(fgets(buf, sizeof(buf), fp_in)!=NULL){
for(i=0;buf[i]!='\0';i++)
if(isalpha(buf[i]))
count[tolower(buf[i])-'a']++;
}
fclose(fp_in);
fp_out=fopen(filename_out, "w");
if(fp_out==NULL){
fprintf(stderr, "\nError: %s file cannot open.\n", filename_out);
return 1;
}
for(i=0;i<26;i++)
fprintf(fp_out, "%c:%d\n", 'a'+i, count[i]);
fclose(fp_out);
return 0;
}
0392ニケ
2007/01/19(金) 23:47:32バイトで返事できなくてすみません。
ユーザーに打ってもらうのでこれで
大丈夫です。
ありがとうございました!
0393デフォルトの名無しさん
2007/01/20(土) 01:17:20ありがとうございます。使っていいのかどうか分かりませんけど
手伝ってもらったって感じで出すからそれでおkです。
0394デフォルトの名無しさん
2007/01/20(土) 08:38:260395ぼるじょあ ◆yBEncckFOU
2007/01/20(土) 08:39:010396ぼるじょあ ◆yBEncckFOU
2007/01/20(土) 08:39:500397デフォルトの名無しさん
2007/01/20(土) 10:20:34static int abc = 0;
abc++;
printf("%d,",abc);
}
呼び出した時にabcは
毎回ゼロ初期化されるのでしょうか?
それとも1,2,3,4,5・・・となるのでしょうか?
0399デフォルトの名無しさん
2007/01/20(土) 11:22:56[2] 問題文(含コード&リンク):
次のような構造体 node と変数 head があり、head は連結リストの先頭を指しています。 この関数 average は、ノードがない場合は 0 を返すものとします。
/* node 構造体と変数 head */
struct node {
char name[32]; /* 名前 */
int height; /* 身長 */
struct node *next; /* 次のノードへのポインタ */
};
struct node *head; /* 常に連結リストの先頭を指す変数 */
変数 head から順にすべてのノードを調べ、平均身長を返す関数 average
を完成させてください。
int average(void){
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: [無期限]
[5] その他の制限: お願いいたします
0400ぼるじょあ ◆hZ8e4Wjqvw
2007/01/20(土) 11:54:38(・3・) エェー これでいいかNA?
int average(void){
struct node *member;
long height_sum=0L;
int node_num, ret=0;
member=head;
for(node_num=0;member!=NULL;node_num++){
height_sum+=member->height;
member=member->next;
}
if(node_num>0) ret=height_sum/node_num;
return ret;
}
0401デフォルトの名無しさん
2007/01/20(土) 13:41:41■ このスレッドは過去ログ倉庫に格納されています