1read 100read
2011年12月2期プログラム41: C/C++の宿題片付けます 154代目 (781) TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
42: 【超高速】C/C++に代わる低級言語を開発したい 7 (641)
43: COBOL vs Java 2戦目 (949)
44: JAVAとか未だに使ってる奴いんの (209)
45: GPGPU#5 (176)

C/C++の宿題片付けます 154代目


1 :11/11/29 〜 最終レス :11/12/23
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

2 :
【質問テンプレ】
[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://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
【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++の宿題片付けます 153代目
http://hibari.2ch.net/test/read.cgi/tech/1320365280/

3 :
前スレ>>999
環境は何?

4 :
>>3
% gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-50)
% uname -a
Linux (ホスト名) 2.6.18-238.12.1.el5 #1 SMP Tue May 31 13:22:04 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
% cat ack.c
#include <stdio.h>
int ack(int m, int n)
{
if (m == 0) return n+1;
if (n == 0) return ack(m-1, 1);
return ack(m-1, ack(m, n-1));
}
int main()
{
printf("%d\n", ack(4, 1));
return 0;
}
% gcc ack.c
% time ./a.out
65533
./a.out 24.65s user 0.79s system 106% cpu 23.969 total

5 :
スタックサイズも出すべきだった。単位はkbytes
% ulimit -s
10240

6 :
まず64ビットだよね
つぎにLinuxだからスタックが足りなくなると自動的に伸ばすよね
多分CPUはCore i7だろうから全部キャッシュに乗っちゃうのかな
どこかにack()の呼び出し回数をカウントするようにしてみて欲しい
ack()の呼び出し回数凄いから

7 :
これはキャッシュに乗るか乗らないかで全然スピードが違ってくるので時間の測定は
あまり意味がないな
むしろスタックサイズに全てかかっていそうだ
俺のはVC10の32bitでスタックサイズ1Mで例外で落ちる

8 :
VC10でもスタックサイズを10Mほどにしたら30秒で65533出てきた

9 :
>>4 の結果はcore i7
32bitマシンでやってみた。
%uname -a
Linux (ホスト名) 2.6.18-92.1.13.el5 #1 SMP Wed Sep 24 19:33:52 EDT 2008 i686 i686 i386 GNU/Linux
% more /proc/cpuinfo | grep "model name"
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
%time ./a.out
65533
2862984010
./a.out 31.00s user 0.01s system 99% cpu 31.304 total
>>8
なるほど、その間にあるのね。

10 :
書き忘れ。2862984010は呼び出し回数、、おおいねw
>>6
スタックが足りなくなると自動的に伸ばすの初めて知った。ありがとうー

11 :
結局32bitマシンでもスタックサイズを10Mに取ればほとんど結果が出るという事で
この問題はお開きか
何かつまんねえ

12 :
スタックサイズの問題を除外すれば、いくら待っても答えが出ないって状況には誰もならなかったか

13 :
(4,.1)じゃなくて(5,1)だったりしてな

14 :
さすがにそれはw

15 :
wikiのほー修正しといた。

16 :
一瞬わからなかった。
ありがとう。次は気をつけるー

17 :
前スレの未解決問題。(ほかにあったら転記してね)
979 :デフォルトの名無しさん:2011/11/29(火) 21:17:42.06
[1] 授業単元:コマンドライン引数
[2] 問題文(含コード&リンク):
コマンドライン引数を用いて,以下の計算ができる簡易電卓プログラムを作成せよ.
1. 2 〜5項式までの四則演算(計算順もちゃんと考慮すること)
(出力例)C :¥Programming>dentaku 2 + 5 / 5 + 4 * 2 + 1
答えは 12
C :¥Programming>dentaku 2 * 3 + 1
答えは 7
2.()を用いた演算(かっこの中の計算を最優先する)
(出力例)C :¥Programming>dentaku ( 2 + 3 ) * 7 * ( 3 - 1 )
答えは 70
3. (sin, cos, tan)の演算
(出力例)C :¥Programming>dentaku sin(90) * 2 + 1 - 2
答えは 1
4.logの演算
(出力例)C :¥Programming>dentaku log(3) * 2 + 1
答えは 1.9542425094
5. 半角スペースを入れ忘れても演算可能
(出力例)C :¥Programming>dentaku 1-2*(3+1)-2
答えは 9
[3] 環境
[3.1] OS:Windows7<br>  [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5<br>  [3.3] 言語:C言語
[4] 期限:12/3まで
[5] その他の制限:

18 :
>>6
>まず64ビットだよね
これは今回のコードだとどう影響する?
とりあえず引数がレジスタ渡しになる反面フレームポインタとかが64bitだから
スタック使用量としては...
>つぎにLinuxだからスタックが足りなくなると自動的に伸ばすよね
そうだっけ?

19 :
Qの不快な論証を論破するにはここを読もう
http://ronri2.web.fc2.com/kiben.html
http://ronri2.web.fc2.com/shinri.html
まあ精神分析を知ってる人なら皆分かってる事だけどね

20 :
http://ronri2.web.fc2.com/hanron.html
ここを読むとQの書き込みが非論理的である事が一目瞭然
こう書くとQは決まって「私の書き込みのどこが非論理的であるか具体例を上げて
示してください」と反論してくるが、相手にしてはならない
Qは自分に都合の悪い証拠を上げられても徹底的に無視を決め込むので、どんな
ハッキリした証拠を上げても全く無駄です

21 :
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):標準入力から文字型のポイント配列*str[3]を使って"Hello",
"Goodbye","Thankyou"の3つの文字を入力し入力した順番に標準出力に出力する
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ggc3.4
 [3.3] 言語: C言語
[4] 期限:6時まで
[5] その他の制限: ファイル出力まで習っています
それではお願いします

22 :
strdup()使っていいの?

23 :
使っていいのは、fgets,sscanf,printfのみです

24 :
>>23
malloc() も駄目?

25 :
いいよ

26 :
>>25
良かったの?malloc() を使わないのを書いたところなんだがw
ttp://codepad.org/R3YO4sfJ

27 :
>>17
一番やさしい1. の場合でもマイナス値を扱うと、すこし難しくなるな。
23×−16 などの入力も認めるのかな?

28 :
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=downld&no=4900
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 2011年12月1日
[5] 実装にはスタックを用いてください。
  そのスタックはhttp://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=downld&no=4901です。

前スレで未解決だったのでもう一度質問させていただきました。
よろしくお願いします。

29 :
http://hibari.2ch.net/test/read.cgi/tech/1320365280/983
983 名前:デフォルトの名無しさん[sage] 投稿日:2011/11/29(火) 21:35:40.34
Qに一つ例題を出してやろう
アッカーマン関数のAck(4, 1)を出力してみろ
普通に再帰で組むといくら待っても答えが出ないどころかスタックオーバーフローになる
連想配列を使って初めて答えが出る

30 :
京都大学霊長類研究所では、未知の感染症が蔓延し、
感染した研究員はどのスレッドにも同じコピペを
繰り返すといった症状が報告されています。
研究員によると思われる書き込みがあっても
近づかないようにしてください。
                  京都大学

31 :
>>27
認めると思います

32 :
>>19-20
おまいさんが QZ を好きなのはよくわかった。蓼食う虫も好き好きというから好みに文句をいうつもりはないが、頼むから、
Q と 略 さ ず に Q Z と 書 け
NGワードに登録できず迷惑だ

33 :
>>29
http://hibari.2ch.net/test/read.cgi/tech/1320365280/988
http://ideone.com/Jibjd
でだめなんか?

34 :
>>33
if (m == 0)
return n + 1;
if (m == 1)
return n + 2;
if (m == 2)
return 2 * n + 3;
だからこれやめいって前の人も書いてたろ
チョンボはあかんよ
あくまでも定義通りの関数だけで答えを出すんだ
本当に人の言う事に耳を貸せないやっちゃな
つーか上の方にも書いてあるけどVC10でもスタックを10MBほど取れば
30秒足らずで答えが出るって分かってるんだけど(Core i7)
お前さんのヘボCPUでは2分ほど掛かるかもしれんけどな

35 :
[1] C言語演習
[2] @ http://codepad.org/jqY1UI1T のプログラムを
スクロール方向を逆にし、さらに文字をキーボードから入力
できるように改良せよ。(全角のみでOK)
  A http://codepad.org/aPqYkjGh のプログラムを、半角スペースが
2つ以上の場合は1つになるように改良せよ。
 [3.1] Windows7
 [3.3] C言語
[4] 12/1の20時まで
[5] @は%sを使用。Aは特に条件なし。
わかる方よろしくお願いします。

36 :
>>947
e^iθ = isinθ + cosθ は感動した

37 :
オイラーの公式か
他にも感動する公式が一杯あるぞ

38 :
iのi乗が実数になるというのも面白いな

39 :
>>35
>半角スペース
変換前? 変換後?

40 :
>>28
後置ならスタックは不要だと思うんだけどなぁ
そこが謎なので手を出しにくい

41 :
勘違いしてた、忘れてください

42 :
[1] 授業単元:楽しいC(ポインタと関数)
[2] 問題文(含コード&リンク):
秒数を与えると,それが何日何時間何分何秒にあた
るかを計算する関数
calctime(long sec, int *dp, int *hp, int *mp,
int *sp);
を作成せよ.例えば
calctime(100000, &d, &h, &m, &s);
として呼び出すとd=1, h=3,m=46,s=40 となる
(100,000 秒=1 日3 時間46 分40 秒).以下の実行例の
ように,関数の動作を確認できるmain 関数も作成すること.
(出力例)
秒数を入力してください:100000
100000 秒= 1 日3 時間46 分40 秒
秒数を入力してください:3725
3725 秒= 0 日1 時間2 分5 秒
[3] 環境
[3.1] OS:linux 
[3.2] コンパイラ名とバージョン:gcc [
3.3] 言語:C言語
[4] 期限:12/2まで
[5] その他の制限:

43 :
>>42
前スレで同じのみたな

44 :
#include <stdio.h>
#include <stdlib.h>
int calctime(long sec, int *dp, int *hp, int *mp, int *sp)
{
*dp = *hp = *mp = *sp = 0; if(sec < 0) return 0;
*dp = sec / (60 * 60 * 24); sec %= 60 * 60 * 24;
*hp = sec / (60 * 60); sec %= 60 * 60;
*mp = sec / 60; *sp = sec % 60;
return 1;
}
int main(int ac, char **av)
{
char buf[4096];
long sec;
int d, h, m, s;
while(1){
printf("sec = "); fgets(buf, sizeof(buf), stdin); if(buf[0] == '\n') break;
sscanf(buf, "%ld", &sec);
if(!calctime(sec, &d, &h, &m, &s)) fprintf(stderr, "error %ld\n", sec);
else printf("%ld sec = %d days %d hours %d minutes %d seconds\n", sec, d, h, m, s);
}
return 0;
}

45 :
>>28
あんまりちゃんと動作の確認をしていない、テストは任せるので問題があればレスしてくれ
ttp://codepad.org/hXYphxIz
指定されたソースコードは何か動作が怪しそうなので使っていない
しかし関数IFは合わせて有るので指定されたソースに問題が無ければ差し替えても動作するはずだ
ソースの『ここから』〜『ここまで』の間を指定ソースと差し替えてくれ

46 :
多倍長整数演算までやってるのか
すげーな

47 :
>>46
やってないよ、それも含んでるんだっけ?
だったらパスするよ

48 :
>>34
コテつけてくれ。

49 :
>>47
どんなに長い文字列(数字)も受け付けろと書いてあった

50 :
>>49
ホントだ
『またどのような整数が出現しても』って書いてるな
あんな怪しげなソースを付けてる割にはハードルが高いな
多倍長整数の四則演算か....面倒だな....取りあえずパスしとくわ

51 :
>>49
前スレでそれは考えなくていいといってたよ

52 :
>>45
ありがとうございます。
何か問題があればレスさせていただきます。

53 :
>>42
ttp://ideone.com/i5ouS

54 :
[1] 授業単元: システムプログラム
[2] 問題文(含コード&リンク):
プロセス間通信のプログラミングです。
ttp://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/252.txt
すまない、ブラウザのエンコードがUTF-8じゃないと多分化ける。
子プロセスから親プロセスに文字列を送るプログラムはかけたんだけど、
ファイル内容を子プロセスから親プロセスに送ると何も表示されなくなってしまう。
自分でやってみたがここ数時間答えが出せない。
誰かお願いします
[3] 環境
 [3.1] OS:mac10.7.2 (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:gcc4.2.1 (gcc 3.4 VC 6.0等)
 [3.3] 言語:C (C/C++/どちらでも可 のいずれか)
[4] 期限:2011/12/1/14:30 ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限:なし (どこまで習っているか、標準ライブラリは使ってはいけない等々)

55 :
>>54
子から親に複数回文字列を送っても大丈夫かどうかの確認をしてみたら、ぐらいしかいえない。コードがないと。

56 :
>>54
http://codepad.org/O2xeZI0C

57 :
cygwin/windows XP/gcc-3 では動いている。

58 :
問題解決しようとする気がないなw

59 :
>>56
助かったありがとう、ちゃんと動いた。
どうやら自分はバッファの扱いがおかしかったみたい。

60 :
>>59
詳細に検討することをお勧めします。

61 :
1] 授業単元:バイナリデータの扱い方
[2] 問題文(含コード&リンク):
白黒のbmp画像を読みとり、白なら0、黒なら1として以下の例のような画像情報を載せたtxtファイルを作成する。
(txtファイルの1行目にはbmpの横と縦のピクセル数を書き込むこと)
<例>
元のbmp画像(direct.bmp):http://loda.jp/kng311tt/?id=74.bmp

/********direct.txtの中身********************
24 15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
******************************************/
[3] 環境
 [3.1] OS:windows7 32bit
 [3.2] コンパイラ名とバージョン: Borland 5.51
 [3.3] 言語: C言語
[4] 期限:2011年12月10日 14:00
[5] ASNIの範囲内でよろしくお願いします。

62 :
ASNIってなんだ

63 :
モロッコにある小さな街

64 :
>>61
そのファイル、なんか珍しい形式っぽいのかな。
エラー処理も何もないけど。
http://codepad.org/1F5vD4AE

65 :
>>61
作って全然仕様にあってないけどupする
#include <stdio.h>
#include <stdlib.h>
typedef unsigned char uchar;
int main()
{
FILE *fp = fopen("kng311tt.bmp","rb");
FILE *fw = fopen("direct.txt","w");
uchar BhInfo[54];
uchar *BInfo = NULL;
int i,j;
fread(BhInfo,sizeof(char),51,fp);
fprintf(fw,"%d,%d\n",BhInfo[18],BhInfo[22]);
rewind(fp);
fseek(fp,54,SEEK_SET);
BInfo = malloc(sizeof(uchar)*(BhInfo[18]));
while(!feof(fp)){
fread(BInfo,sizeof(char),BhInfo[18],fp);
for(i = 0; i< (BhInfo[18]);i++){
if(BInfo[i] == 0x00)
fprintf(fw,"1 ");
else if(BInfo[i] == 0xff)
fprintf(fw,"0 ");
}
fputc('\n',fw);
}
free(BInfo);
fclose(fp);
fclose(fw);
return 0;
}

66 :
>>39
変換後の方です。
(e3t55sf45d → e t sf d
となっているのを
e3t55sf45d → e t sf d
となるように改良する。)

67 :
>>66
ミスってるけど、上はtとs、fとdの間は
スペース二つです。

68 :
サンクスかみーゆ

69 :
>>64
ありがとうございます!たぶん、作成者側のオリジナルだと思います^^
以前ここで作っていただいたtxt→bmpに変換するプログラムより
すごくシンプルですね。
白黒のみでもtxt→bmpに変換するのは大変なのでしょうか?

70 :
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
.cファイルを読み込んで、定義されている変数や配列を一覧にして表示する(できれば何型で定義されているかも)プログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual studio 2010
 [3.3] 言語: C言語
[4] 期限:無期限
[5] その他の制限:できるならやってみろって感じで出されたので制限はないです

71 :
>>70
コンパイルの段階で変数名等は失われるので無理。

72 :
>>71
>.cファイルを読み込んで

73 :
>>72
見落としてたよ orz

74 :
車輪の再発明そのものじゃまいか

75 :
>>70
この本読めば作れるようになるかもしれない
ttp://www.amazon.co.jp/dp/4797337958

76 :
機械的構文解析:Cの独り勝ちの世界じゃん
Cプログラマは避けて通れる世界じゃないかと

77 :
grepで十分じゃね?

78 :
>>70
>定義されている変数や配列
structは?

79 :
typedef とか面倒な希ガス
あと、
#define VARIABLE(type, name) (type) (name)
みたいな変なマクロを使って変数宣言してるとか

80 :
>>79
プリプロセスしてから解析すればよくね?

81 :
http://ja.wikipedia.org/wiki/LL%E6%B3%95
C言語はLL(1)だっけ
面倒な問題を出してくれたもんだ〜

82 :
>>78
構造体もはいってますね、すみません
>>79
多分そこまでは求めてられないので
int a;みたいな基本的な宣言だけで大丈夫だと思います
口頭で言われたもので、曖昧ですみません…

83 :
>>70
その手の問題は
今までの授業、課題をちゃんとこなしてきた→できる範囲で回答すればおk
今までの授業、課題を人に頼ってきた→詰む時
だよ。最後の審判的な。
丸くおさめたいなら、何も提出せずに、難しいので出来上がらなかったということを口頭で言って終わらせる。

84 :
sizeof()の引数に型名が出てきたり。かなり厄介な言語だよ。

85 :
sizeofは型を渡すとき以外は括弧いらないじゃん

86 :
C言語初心者なのですが、
「2つの 3成分ベクトル a, b の外積 c を求める関数 void acrossb(double a[], double b[], double c[]) を作成せよ。
この関数を用いて次の二つのベクトル va=(1.0, 2.0, 1.0) , vb=(-2.0, 0.5, 1.0) の外積を計算するプログラムを作成せよ。」
どなたか、上の問題がわかる方いらっしゃいましたら、教えて頂きたいです。宜しくお願いします。

87 :
>>86
わかるがお前の態度が気に入らない
つーか>>1

88 :
>>86の者です。失礼致しました。
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):2つの 3成分ベクトル a, b の外積 c を求める関数 void acrossb(double a[], double b[], double c[]) を作成せよ。
この関数を用いて次の二つのベクトル va=(1.0, 2.0, 1.0) , vb=(-2.0, 0.5, 1.0) の外積を計算するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語:C言語
[4] 期限:12月2日まで
[5] その他の制限: なし
です。すみませんお願いします

89 :
a=(a1,a2,a3)b=(b1,b2,b3)としたとき、 aとbの外積は(a2b3-a3b2, a3b1-a1b3, a1b2-a2b1)であってんのかな。

90 :
>>88
http://ideone.com/OVAsy

91 :
>>89
外積はそうだとおもいます

92 :
>>90
ご丁寧にありがとうございます
助かりました!

93 :
[1] 授業単元:楽しいC(ポインタ配列)
[2]引数vc の指すint 型配列に対して,その(pos + 1)
番目からn 個の要素(vc[pos], vc[pos+1], …のn 個)
の値を0 にする関数
void reset_n(int *vc, int pos, int n)
を作成せよ 。
例.ary[] : 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
ary[n1] からn2 個の要素を0 にします。
n1 を入力してください:2
n2 を入力してください:4
指定された要素を0 にしました。


[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語:C言語
[4] 期限:12月2日まで
[5] 例えば配列ary[] が
{10, 11, 12, 13, 14, 15, 16, 17, 18, 19}
であるとき,
reset_n(ary, 2, 4);
として呼び出すと,配列ary[] は
{10, 11, 0, 0, 0, 0, 16, 17, 18, 19}
となる.
以下の実行例のように,関数の動作を確認できるmain
関数も作成すること.ただし,プログラムは以下の要件
を満たすこととする.
? main 関数内でint 型配列を適当な値で初期化・宣
言して用いてよい.
? 関数reset_n の中では,添字演算子[] は使用しな
いこと

94 :
単元が楽しいCなのに、問題投げるのは楽しんでないのがなんだかな
単元の名前替えるように教官に言っとけ

95 :
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):http://i.imgur.com/hnQll.jpg
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12/6 10:00
[5] その他の制限:入門なのでそれほど複雑なものは習ってない・・・かな
お願いします。

96 :
>>93
#include <stdio.h>
void reset_n(int *vc, int pos, int n) {
int i;
for (i = 0; i < n; ++i) *(vc + pos + i) = 0;
}
void print(const int *a, int n) {
int i;
for (i = 0; i < n; ++i) printf("%d ", a[i]);
putchar('\n');
}
int main(void) {
int a[] = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
int n = sizeof a / sizeof *a;
int n1, n2;
print(a, 10);
puts("ary[n1] からn2 個の要素を0 にします。");
printf("n1 を入力してください:");
scanf("%d", &n1);
printf("n2 を入力してください:");
scanf("%d", &n2);
if (n1 < 0 || n < n1 + n2) {
puts("範囲オーバー");
} else {
reset_n(a, n1, n2);
puts("指定された要素を0 にしました。");
print(a, 10);
}
return 0;
}

97 :
[1] 授業単元:リスト構造
[2] 問題文(含コード&リンク):
http://codepad.org/kRWaQPuY
例えば 学籍番号として 181 など 存在しない学生の番号を入力して実行すると、
エラーを生じてプログラムが停止してしまうなど、このソース コードは不完全である。
そこで存在しない学生の番号を入力した場合には、
「その番号の学生は、いません。」のエラーメッセージを表示するように、プログラムを改良せよ。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:VC2008
 [3.3] 言語:C
[4] 期限:明日
[5] その他の制限:

98 :
>>97
884:デフォルトの名無しさん:2011/11/28(月) 22:51:02.28
>>882
Line94 pointer_student = pointer_student->pointerNext; の次に以下を追加
if( ! pointer_student ) { printf( "その番号の学生は居ない\n" ); return 0; }

99 :
なんか双方向リストに進化してるな

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
42: 【超高速】C/C++に代わる低級言語を開発したい 7 (641)
43: COBOL vs Java 2戦目 (949)
44: JAVAとか未だに使ってる奴いんの (209)
45: GPGPU#5 (176)
2012.7.30/7:7:48 最上へ 書込へ
USA