C/C++の宿題を片付けます 96代目
■ このスレッドは過去ログ倉庫に格納されています
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0554デフォルトの名無しさん
2007/10/01(月) 11:03:21[2] 問題文:下記コメント
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン:BCC5.5
[3.3] 言語: C
[4] 期限:特に無し
[5] その他の制限:くだらない問題ですみません
/*任意の数(ただし32767個まで)のdouble型を入力でき、それらの値を入力の
たびにディスクファイルに書き込むプログラムを作成してください。この
ファイルの名前はvaluesとします。また、入力された値の個数を監視し、それを
countという名前のファイルに書き込むものとする*/
0555デフォルトの名無しさん
2007/10/01(月) 11:04:57{
FILE *fp1,*fp2;
int count=0;
double value;
char str[20];
if((fp1=fopen("values","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}
if((fp2=fopen("count","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}
do{
if((gets(str))==0){
printf("エラーが発生しました\n");
exit(1);}
if((value=atof(str))==0.0)break;
if(fwrite(&value,sizeof value,1,fp1)!=1){
printf("書き込みエラー\n");
exit(1);}
count++;
}while(count<32767);
if(fwrite(&count,sizeof count,1,fp2)!=1){
printf("書き込みエラー\n");
exit(1);}
fclose(fp1);
fclose(fp2);}
0556デフォルトの名無しさん
2007/10/01(月) 11:06:16正常にファイルが出来ません。
0557デフォルトの名無しさん
2007/10/01(月) 11:12:40[2] 問題文(含コード&リンク):
[3] 環境
OS: WindowsL
コンパイラ名とバージョン: 言語:C
問題:台形の面積を求めるプログラムを作成しなさい
int a = 3;
int b = 4;
int h = 5;
実行画面
面積 = 17.50
0558557のスレ主です
2007/10/01(月) 11:16:21下辺 bは4
高さ hは5です
0559デフォルトの名無しさん
2007/10/01(月) 11:21:47[2] 問題文(含コード&リンク):休み期間中に108問ある問題を終らせるには、毎日平均何問解けばよいか計算するプログラムを作成しなさい
int day = 29;
実行画面
3問:8日
4問:21日
0560デフォルトの名無しさん
2007/10/01(月) 11:55:04三つも問題くれて有難う
0561デフォルトの名無しさん
2007/10/01(月) 11:57:19#include<stdio.h>
int main(){
int a=3, b=4, h=5;
printf("面積=%lf",a==3&&b==4&&h==5?17.50:0);
return 0;
}
0562デフォルトの名無しさん
2007/10/01(月) 12:03:26[2] 問題文(含コード&リンク): 下記のソースをカプセル化に。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C++
0563デフォルトの名無しさん
2007/10/01(月) 12:09:22>>486さん解答ありがとうございます。
質問なんですがこれいがいに#includeとか他に付け足す文字ってありますか…??
0564デフォルトの名無しさん
2007/10/01(月) 12:33:15ないから書いてないのだろう
0565デフォルトの名無しさん
2007/10/01(月) 12:35:04>486じゃないが、その課題で作成するのは関数だけなんだろ。
他につけたしちゃ拙いじゃないか。
0566 ◆vLIz8KOkPM
2007/10/01(月) 13:21:31>>454の問題に対して、>>496の解答をいただいたのですが、
以下のエラー、バグがでます・・・
直していただけないでしょうか?お願いします
% gcc -o k13 k13.c
k13.c: 関数 `main' 内:
k13.c:89:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:91:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:92:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:93:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:94:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
% ./k13
あなたの口座番号を入力して下さい:9012
暗証番号を入力して下さい:0123
鈴木一郎 様ですね.
引出し金額を入力して下さい:20000
預金残高は 518600 円です.
$��$��$��$��$��$��$
��$��$��$��$��$��$��
あなたの口座番号を入力して下さい:^[[A^[[A
中断
%
0567デフォルトの名無しさん
2007/10/01(月) 13:41:420568 ◆vLIz8KOkPM
2007/10/01(月) 14:18:42解答>>496
あと、
口座データの読み込み(1:ファイルから 2:初期値を使用)? :
口座データの保存(1:ファイルへ 2:保存しない)? :
この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?
0569kiarano
2007/10/01(月) 14:20:00[2] 問題文(含コード&リンク): 次の関数が何をするプログラムか具体的な使い方を示して答えてください。
void q(int *a,int n){
int i,j;
int tmp;
for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
}
}
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C言語
[4] 期限: 2007年10月3日まで
0570デフォルトの名無しさん
2007/10/01(月) 14:24:56コンパイルできません
0571デフォルトの名無しさん
2007/10/01(月) 14:29:24[2] 問題文(含コード&リンク): 下にあり
[3] 環境
[3.1] OS: (Windows
[3.2] コンパイラ名とバージョン: cc
[3.3] 言語: C
[4] 期限: できるだけ早めに
[5] その他の制限: 特になし
組み合わせ(nCr)
コンビネーションを計算するcomb(n,r)を作成せよ
どうやるんですかね?
0572デフォルトの名無しさん
2007/10/01(月) 14:29:29ソートする関数
具体的な使い方
void q(int *a,int n){
int i,j,tmp;
for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}}}
void main(){
int a[2]={0,1};
printf("%d %d\n",a[0],a[1]);
q(a,2);
printf("%d %d\n",a[0],a[1]);
}
0573デフォルトの名無しさん
2007/10/01(月) 14:29:33勘だと昇順ソート
0574デフォルトの名無しさん
2007/10/01(月) 14:31:36処理の内容はバボゥソート。
int a = {789, 32, 1, 66, 93, 892, 8475, 6, 29, 9};
q(a, sizeof(a) / sizeof(*a));
{
int end = a + sizeof(a) / sizeof(*a);
while(a != end) {
printf("%d\n", *a++);
}
}
って実際に動かしてみりゃわかるんじゃない?
0575デフォルトの名無しさん
2007/10/01(月) 14:32:370576デフォルトの名無しさん
2007/10/01(月) 14:38:33>この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?
そういうロジックを書き足せば。
>>570
わざわざ途中の非表示文字までコピペせんでも。
>>569
その関数を呼ぶロジックを書けって事?
0577デフォルトの名無しさん
2007/10/01(月) 14:55:58#include<stdlib.h>
int comb(int n,int r){
if(n==0||r==0)return 1;
switch(rand()%3){
case 0:return n*comb(n-1,r-1)/r;
case 1:return (n>r?comb(n-1,r):0)+comb(n-1,r-1);
case 2:{int s=0;for(;n>=r;n--)s+=comb(n-1,r-1);return s;}
default:return 0;
}
}
0578デフォルトの名無しさん
2007/10/01(月) 15:01:49[2] 問題文(含コード&リンク): おもしろいプログラムを作成し、提出せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 10/2 14時まで
[5] その他の制限: 今までif,for,while,switchくらいしかやってませんが、特に制限といったものはないとのことです。
システム的におもしろいのではなくギャグ系のおもしろいです。
自分ではどうもおもしろいプログラムを作成できません、力をかしてください。
お願いします。
0579デフォルトの名無しさん
2007/10/01(月) 15:15:27そんな曖昧な課題で明日の14時までって、今まで何しとったん?
0580578
2007/10/01(月) 15:25:43先送りばかりして他の課題等に逃げてました。
僕が悪いんですが、どうか力をかしてください。
0581デフォルトの名無しさん
2007/10/01(月) 15:43:227行プログラミングスレから拾ってきて,適当に識別子を変えればいいんでね?
0582デフォルトの名無しさん
2007/10/01(月) 15:51:18渾身のギャグを考えて書き込めば?
誰かプログラムにしてくれるだろきっと
0583578
2007/10/01(月) 15:55:26見てきましたが、言語が違うのか僕には何が書いてあるのかさっぱりでした。
まだはじめて間もないので・・・・・・力がなくてすいません。
0584578
2007/10/01(月) 15:59:26どちらかというとプログラムできないというよりおもしろい物が思いつかないんです。
他の普通の課題は終わらせることができたんですけど
0586デフォルトの名無しさん
2007/10/01(月) 16:09:51#include<stdio.h>
#include<string.h>
int main(void){
const char *ptr, scenario[]={
"昨日、近所の $place 行ったんです。 $place 。 $lf "
"そしたらなんか人がめちゃくちゃいっぱいで座れないんです。 $lf "
"で、よく見たらなんか垂れ幕下がってて、 $event 、とか書いてあるんです。 $lf "
"もうね、アホかと。馬鹿かと。 $lf "
"お前らな、 $event 如きで普段来てない $place に来てんじゃねーよ、ボケが。 $lf "
" $event だよ、 $event 。 $lf "
"なんか親子連れとかもいるし。一家4人で $place か。おめでてーな。 $lf "
"よーしパパ $talk 、とか言ってるの。もう見てらんない。 $lf "
};
char *keyword[]={"$place", "$event", "$talk", "$lf"};
char *variant[]={"大学", "期末試験", "満点とるぞー", "\n"};
char buf[100];
int i, n;
ptr=scenario;
while(sscanf(ptr, "%s%n", buf, &n)>=1){
ptr+=n;
for(i=0;i<4;i++){
if(strcmp(buf, keyword[i])==0) break;
}
if(i<4) printf("%s", variant[i]);
else printf("%s", buf);
}
return 0;
}
0587デフォルトの名無しさん
2007/10/01(月) 16:12:44他人を騙るな。
0588578
2007/10/01(月) 16:17:02僕は後半組なんですが、前半組はジャンケンを数回繰り返すプログラムが好評がよかったようです。
なぜか教授側のPCが不調で口頭で伝えられただけなので詳しくはわかりません。すいません。
でも、例にあげられたのは簡単な文章と選択肢がありそれによりボケがあったりツッコミがあったりするプログラムでした。
ロジックの意味がうまく把握できていないんですが、これでいいでしょうか?
0589デフォルトの名無しさん
2007/10/01(月) 16:20:12○ 好評だった
0590578
2007/10/01(月) 16:22:06頭悪くてすみません。
今後注意します。
0591578
2007/10/01(月) 16:27:31ちゃんと表示されました。
ありがとうございます。
0592デフォルトの名無しさん
2007/10/01(月) 16:53:50>>568です。
>>576
そのロジックがわからないんで、教えていただけないでしょうか?
0593デフォルトの名無しさん
2007/10/01(月) 17:00:10[2] 問題文(含コード&リンク):次のads-01-hw.cppを完成させよ
seiseki.txt の中身は10人の学生の名前、数学と生物学の成績
出力は画面出力ではなく、ファイルに出力せよ。
関数 heikin は各学生の数学と生物学の成績の平均を求める。
seiseki.txt:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5003.txt
ads-01-hw.cpp:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5002.txt
出力結果:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5004.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
[3.3] 言語:C++
[4] 期限: 2007年10月3日10:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
関数
ポインタとアドレス
forループ
構造体
ファイルI/O
よろしくおねがいします。
0594デフォルトの名無しさん
2007/10/01(月) 17:04:48>そのロジックがわからないんで、教えていただけないでしょうか?
いやです。
0595デフォルトの名無しさん
2007/10/01(月) 18:16:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5005.txt
0596 ◆vLIz8KOkPM
2007/10/01(月) 20:36:460597デフォルトの名無しさん
2007/10/01(月) 20:44:22#include<stdio.h>
int main(int argc, char *argv[])
{
int day=29, question=108;
if(argc>=2) sscanf(argv[1], "%d", &day);
if(argc>=3) sscanf(argv[2], "%d", &question);
printf("%d問:%d日\n", question/day, day-(question%day));
if(question%day) printf("%d問:%d日\n", question/day+1, question%day);
return 0;
}
0598デフォルトの名無しさん
2007/10/01(月) 20:48:02異常なファイルの内容kwsk
0599デフォルトの名無しさん
2007/10/01(月) 21:02:38ネタを書くか、もしくは探して URL を…
#include<stdio.h>
int main(int argc, char *argv[]){
char *message[]={
"A「隣の空き地に囲いができたってね?」\nB「へー」\n",
"A : Do you know that fence was completed in the next vacant lot?\nB : Hey,really?!\n"
};
int choice=-1;
printf("0 か 1 を入力して下さい (0:日本語 1:English) :");
scanf("%d", &choice);
switch(choice){
case 0:
case 1:
printf("%s", message[choice]);
break;
default:
printf("\nERROR : Invalid number ! %d\n", choice);
}
return 0;
}
0600デフォルトの名無しさん
2007/10/01(月) 21:04:15わり。作ってアップすんの忘れてた。
>>494だそうなんで、入力をループで回すとこは入れてないよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5007.txt
0601デフォルトの名無しさん
2007/10/01(月) 21:20:05ソースコードがルー大柴でわろた
0602デフォルトの名無しさん
2007/10/01(月) 22:09:520603 ◆vLIz8KOkPM
2007/10/02(火) 00:14:04ありがとうございますm(__)mお陰様で大変助かりました。感謝しています。
0604デフォルトの名無しさん
2007/10/02(火) 02:50:52ギャルゲのスクリプトが作りたくなってきた
0605デフォルトの名無しさん
2007/10/02(火) 12:41:42[3.1] OS(Windows)
3.2] bcc5.5
[3.3] 言語: (C++)
[4] 期限:今日中
文字列aと文字列cを入力し
aに含まれる文字の数とaで最初にcが出てくる位置、最後にcが出てくる位置を
表示するプログラムを作成しなさい。
#include <stdio.h>
int str_src(char *,char);
int str_src2(char *,char);
int main(void)
{
char a[255],c;
printf("aを入力してください -> ");
scanf("%s",a);
printf("cを入力してください ->");
scanf(" %c",&c);
printf("%sの中に%cは%i個です\n",a,c,str_src(a,c));
printf("%s");
return 0;
}
int str_src(char *a,char c)
{
int count=0;
int i;
for(i=0; a[i]!='\0'; ++i)
if(a[i] == c) ++count;
return count;
}
ここまではやったのですが残りわからないのでお願い致します。
0606デフォルトの名無しさん
2007/10/02(火) 12:46:460607デフォルトの名無しさん
2007/10/02(火) 12:49:18あ、すみません文字列aだけでcは文字です。
0608デフォルトの名無しさん
2007/10/02(火) 13:43:25str_srcでカウントして何が楽しいのか分からなかったから
やりかけのソース無視した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5010.txt
0609デフォルトの名無しさん
2007/10/02(火) 13:46:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5011.txt
0610607
2007/10/02(火) 14:03:01本当にありがとうございました。
助かりました。
0611デフォルトの名無しさん
2007/10/02(火) 14:50:45[2] 問題文:じゃんけんプログラムを作りなさい。(あいこも作ること)
[3] 環境
[3.1] OS:WindowsXP
[3.2] BorlandC++
[3.3] 言語:C++
0612デフォルトの名無しさん
2007/10/02(火) 15:35:080613デフォルトの名無しさん
2007/10/02(火) 16:16:44普通に作るつもりだったのに、魔がさした
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5012.txt
0614デフォルトの名無しさん
2007/10/02(火) 16:46:160615デフォルトの名無しさん
2007/10/02(火) 17:08:200616デフォルトの名無しさん
2007/10/02(火) 17:26:13//判定
switch((enemy-player+3)%3){
case 0: //あいこ
aiko = true;
break;
case 1: //勝ち
end = true;
win = true;
break;
default: //負け
end = true;
win = false;
break;
}
でも、
result = (enemy-player+3) % 3;
だけでいいと思う
0617デフォルトの名無しさん
2007/10/02(火) 17:29:130618デフォルトの名無しさん
2007/10/02(火) 17:33:43[2]問題文:float x,y;char a,b;と宣言し、各変数x,y,a,bのアドレスを出力するプログラムを作って、コンパイル/実行し、それぞれのメモリサイズが満たされていることを確認する。
注)メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。
[3]Windows XP Visual Studio Japan20005
[4]C言語
[5]10月4日まで。お願いします。
0619デフォルトの名無しさん
2007/10/02(火) 17:39:19アドレスを出力しただけで、それが満たされているかは確認できません。
0620デフォルトの名無しさん
2007/10/02(火) 17:50:410621デフォルトの名無しさん
2007/10/02(火) 17:53:490622デフォルトの名無しさん
2007/10/02(火) 17:58:06きっと可変長bitをCPUでサポートしてくれてる
0623デフォルトの名無しさん
2007/10/02(火) 18:01:090624デフォルトの名無しさん
2007/10/02(火) 18:02:410625デフォルトの名無しさん
2007/10/02(火) 19:40:21ってかbitなんてなくなってる
0626613
2007/10/02(火) 20:09:520627デフォルトの名無しさん
2007/10/02(火) 20:19:200628デフォルトの名無しさん
2007/10/02(火) 20:24:420629デフォルトの名無しさん
2007/10/02(火) 21:36:01[2] 問題文(含コード&リンク): ユーザが整数を入力すると、その整数をINT型の変数に入れ、そのビット列を表示するプログラム。
ただ、INT型のビット数は環境によって変わる可能性があるため、
sizeof()演算子を利用してINT型の変数のビット数を求め、そのビット数分だけ表示するようにせよ。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: なし
お願いします。
0630デフォルトの名無しさん
2007/10/02(火) 21:46:43これでおk
unsigned int v, bit = 1 << sizeof(int) * 8 - 1;
scanf("%d", &v);
while(bit) {
putchar(bit & v ? '1' : '0');
bit >>= 1;
}
puts("");
0631デフォルトの名無しさん
2007/10/02(火) 21:48:021バイトが8ビットとは限らないけどこれでよければどうぞ。
#include<stdio.h>
int main(void)
{
int in;
int cnt;
scanf( "%d", &in );
for ( cnt = sizeof( int ) * 8; cnt > 0 ; cnt-- ) {
printf ( "%d", ( in >> ( cnt - 1 ) ) & 1 );
}
return 0;
}
0632デフォルトの名無しさん
2007/10/02(火) 21:49:46入力が負の数だったときに処理系依存で無限ループじゃね?
0633デフォルトの名無しさん
2007/10/02(火) 21:56:13[2] 問題文(含コード&リンク): じゃんけんを10回行い、その対戦結果(対戦譜)をCSV形式で出力するもの。
ただし、出力先は(/デスクトップ/じゃんけん結果)フォルダで、ファイル名は日付を含むこと。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C++
[4] 期限: 明日中
[5] その他の制限: 出力したCSVファイルはExcelで開いて確認すること。
お願いします。
0634デフォルトの名無しさん
2007/10/02(火) 21:57:20ありがとうございます。
参考にさせていただきます。
0635デフォルトの名無しさん
2007/10/02(火) 22:05:50kwsk
0636デフォルトの名無しさん
2007/10/02(火) 22:19:01>[1] 授業単元: C言語
> [3.3] 言語: C++
どっちやねん
0637デフォルトの名無しさん
2007/10/02(火) 22:23:04コンパイルできるし。
0638デフォルトの名無しさん
2007/10/02(火) 23:24:31あ、ごめん。unsignedつけてたらOKだっけ?
負の数の右シフトが算術シフトになるか論理シフトになるかは
処理系依存だったと思ったから・・・
あいまいで、そーりー
0639デフォルトの名無しさん
2007/10/02(火) 23:32:290640デフォルトの名無しさん
2007/10/02(火) 23:38:170641デフォルトの名無しさん
2007/10/02(火) 23:39:18めんどくさいんでcharで説明。
[10101010]を右に1ビットシフトした場合[10010101]になるか[01010101]になるかは処理系依存
調べたらやっぱ、unsignedは問題なかった。スマソ
http://proger.blog10.fc2.com/blog-entry-62.html
0642デフォルトの名無しさん
2007/10/02(火) 23:41:570643デフォルトの名無しさん
2007/10/03(水) 00:27:59> [10101010]を右に1ビットシフトした場合
> [10010101]になるか[01010101]になるかは処理系依存
(http://proger.blog10.fc2.com/blog-entry-62.html)
> C言語の規格として、算術シフトか論理シフトかは不定
うそ。規格では次のようになっている。ISO/IEC 9899, 1999 より:
> 6.5.7
> The result of E1 >> E2 is E1 right-shifted E2 bit positions.
> If E1 has an unsigned type or if E1 has a signed type and a
> nonnegative value, the value of the result is the integral
> part of the quotient of E1 / 2^E2. If E1 has a signed type
> and a negative value, the resulting value is implementation-defined.
つまり、E1 が unsigned であるか、もしくは signed かつ E1 ≧ 0 のときに
限って右シフトの動作は定められており、それ以外は implementation-defined。
すなわち、論理シフトやら算術シフトの範囲を超えて処理系の自由。
0644デフォルトの名無しさん
2007/10/03(水) 00:58:120645デフォルトの名無しさん
2007/10/03(水) 00:59:420646デフォルトの名無しさん
2007/10/03(水) 02:29:31考えてみよー
0647デフォルトの名無しさん
2007/10/03(水) 03:04:07[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月4日22:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします
0648デフォルトの名無しさん
2007/10/03(水) 05:48:29問題1
#include <stdio.h>
#include <math.h>
int fac(int n) { return n==1 ? 1 : n * fac(n-1); }
int geo(int a, int r, int n) { return n==1 ? a : geo(a, r, n-1) * (pow(r, n) - 1) / (pow(r, n-1) - 1); }
int fib(int n) { return n==1 || n==2 ? 1 : fib(n-1) + fib(n-2); }
double a[] = { 1, 2, 3, 4, 5};
double hor(double x, int n) { return n==0 ? a[n] : hor(x, n-1) * x + a[n]; }
int main(void)
{
printf("10! = %d\n", fac(10));
printf("2^0 + 2^1 + 2^2 + ... + 2^9 = %d\n", geo(1, 2, 10));
printf("fibonacci 20: %d\n", fib(20));
printf("f(2) = %.2f\n",hor(2, 4));
return 0;
}
0649デフォルトの名無しさん
2007/10/03(水) 08:58:37考える前に仕様書を読んでくれ。6.2.6.2 に書いてあるから。要点は
・value bits / padding bits / sign bit からなる。
・どこの bit が value bits/padding bits/sign bit であるかは処理系定義。
・sign bit が 0 のときは正の数,1 のときは負の数を表現する。
・数表現が「絶対値と符号,二の補数,一の補数」のどれかは処理系定義。
0650デフォルトの名無しさん
2007/10/03(水) 09:14:49> 1バイトが8ビットとは限らない
それよりもこれについて悔しく
0651デフォルトの名無しさん
2007/10/03(水) 09:19:450652デフォルトの名無しさん
2007/10/03(水) 09:22:070653デフォルトの名無しさん
2007/10/03(水) 09:25:090654デフォルトの名無しさん
2007/10/03(水) 09:29:54■ このスレッドは過去ログ倉庫に格納されています