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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けない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
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 104代目
http://pc11.2ch.net/test/read.cgi/tech/1202135539/
2デフォルトの名無しさん:2008/04/15(火) 23:10:20
                           ト-、___
                     _,,-‐‐‐‐‐‐t-:、_ `‐、、_
                __,,,-‐'´     .:. ,,:.:``‐、;:;:;ヽ_
  ,,,_____,,..、_,,,,,-‐‐‐-、、_,,-'´    ............:.:/: .:.     ````ヽ、_      こ、これは>>1乙じゃなくて
 〈=__,,,,__,,,,,,,,,,,,..::::::::::...  ;.:.:.:.:.:.:.:.:.:.:.:.:.:.:,;ノ::.            `‐、、    浜に打ち上げられた魚の死骸なんだから
/ .._____.. .. . `````ヽ- '--‐‐'''''~~~'`::::ヽ:.:.:.....        、     ヽ、    変な勘違いしないでよね!
ヒ;-'´  ````:‐:‐:-:-.:__,,、、、、、  ....:.:.:.:.:.:.`:.:.:.:,;,;,;,;.:.:.;,;...........ヽ、ヽT   ● ヽ、
                 ````‐--:-:‐:':´:`:`´:: :::``:..、_:.:.:.:.:.:.:.ヽ、__ ,-==,
                                 ````‐‐:-:-:-:-:‐"
3デフォルトの名無しさん:2008/04/16(水) 02:36:46
104代目の>>982を解いてもらったものですが、フローチャートを描きたいのですが
いまいちソースが理解できないので、ヒントや解説をもらえないでしょうか?
お願いします。ring_list_tやretが何を指しているのかがわからなかったです。
4デフォルトの名無しさん:2008/04/16(水) 03:09:37
>>3
ring_list_append()
・リングリスト1要素を新規に確保
・新要素の中身は引き数data
・新要素の次要素は自分自身
・新要素の前要素は自分自身
・既存リストの追加点が空なら(唯一の要素である)新要素を返す
・既存リストの追加点を新要素の前要素に繋ぐ
・既存リストの追加点の次要素を新要素の次要素に繋ぐ
・既存リストの追加点の次要素の前要素に新要素を繋ぐ
・既存リストの追加点の次要素に新要素を繋ぐ
・新要素を返す

即ち、

追加点
次↓↑前
追加点の次要素

という構造を

追加点
次↓↑前
新要素
次↓↑前
追加点の次要素

と言う構造に変更している。

っと、ここで力尽きた。後は頑張ってくれw
5デフォルトの名無しさん:2008/04/16(水) 03:51:01
>>4 本当にありがとうございます  orz
プログラムの
ret->prev=list;
ret->next=list->next;
list->next->prev=ret;
list->next=ret  のところがようやく理解できました。
理解させてもらった上で質問なのですが、このような構造変換をして
何故あのような親とラベルのきれいな出力になるのかが理解できていないです。
簡単なヒントでいいので教えていただけないでしょうか?
6デフォルトの名無しさん:2008/04/16(水) 05:30:39
CPUが忠実に命令を受けて実行してるから
7デフォルトの名無しさん:2008/04/16(水) 06:06:50
>>6
CPUが命令を実行してくれるのはわかるんですが・・・・
フローチャートを描きたいので内容的な部分を言ってくれるとありがたいのですが。
84:2008/04/16(水) 07:38:21
今起きた。

――少しは想像力と推理力を働かせようよ……
# あ、それができるくらいなら(ry

リングリストの部分はロジックを追うときに絵を描きながら理解しやすいんじゃない?
全体のロジックを追うときにはその絵を見れば判るだろうし。
# って、それができる(ry
9デフォルトの名無しさん:2008/04/16(水) 07:43:14
nodeinfo_t infoary[NODENUM]の説明
ノードのラベルと親ノードを、ノード-1の位置に記憶する
ex. ノード3のラベルと親ノードは、infoary[2].label, infoary[2].parent
infoary[x-1].label == 0 の場合、xは通過していないことになる

analyze_depth:
@空のスタック(stack_t stack={0})、初期化されたノード情報配列(nodeinfo_t infoary[NODENUM] = {{0}})を宣言
Aスタックにルートノード(start)をプッシュ : pushstack(&stack, start);
Bルートノードを通過済みする : flags[start-1] = 1;
Cルートノードのラベルを1に設定 : infoary[start-1].label = 1;
  ルートノードの親ノードを自分に設定 : infoary[start-1].parent = start;
Dラベルを2に設定 : label = 2;
Eスタックにデータ(親ノード)がある→F、 スタックが空→N
 Fスタックからノードを取り出す(親ノード) : parent = popstack(&stack);
 G親ノードから到達可能なノード(子ノード)が、ある→H、ない→E : for(i=0; adj[parent-1][i] != 0; ++i){
  H子ノードが未通過→I、通過済み→G : if( flags[ adj[parent-1][i]-1 ] == 0){
   I子ノードを通過済みにする : flags[ adj[parent-1][i]-1 ] = 1;
   Iスタックに親ノードをプッシュ : pushstack(&stack, parent);
   Jスタックに子ノードをプッシュ : pushstack(&stack, adj[parent-1][i]);
   K子ノードのラベルを設定 : infoary[ adj[parent-1][i]-1 ].label = label;
    子ノードの親ノードを設定 : infoary[ adj[parent-1][i]-1 ].parent = parent;
   Lラベルを+1する : ++label;
   MEに戻る : break;
Nラベルが0以外のノードを表示する
printf(" v_label parent\n");
for(i=0; i < NODENUM; ++i){
if(infoary[i].label != 0){
printf("%2d : %7d %6d\n", i+1, infoary[i].label, infoary[i].parent);
}
}
上記間違いがあっても、当方は責任を負いかねます
これで分からないなら、まずwikiで深さ優先探索、スタックをじっくり勉強してください
10デフォルトの名無しさん:2008/04/16(水) 11:14:04
>>9
助かりました
本当にありがとうございます  orz
11デフォルトの名無しさん:2008/04/16(水) 13:22:41
前スレ988のものです。
>>989
無知なんでライブラリと聞いてもピンとこないんですが;;すいません。
授業で使う資料に書いてあることを書きます。

画像処理を行うプログラムをWindowsのダイアログベースで作成していく。
ダイアログベースプログラムの大枠をMicrosoft Visual Studio6.0のVisual C++6.0で作る。

となっています。どうでしょうか?

問題
a[100][100]を宣言し、2重のfor文を用いて、a[0][0]に0+0を入れて、
a[0][1]に0+1を入れて、a[0][2]に0+2を入れて、a[1][2]に1+2を入れて、
・・・a[99][99]に99+99を入れるようなプログラムを作れ。次にこれらの
配列変数の値が赤色の値で、緑と青の値は0であるような画像を表示する
プログラムを作成しろ。


>>996〜998
ありがとうございます。
まだ基礎しか習ってないのでここまで複雑ではないような気がします。
せっかくやっていただいたのに申し訳ありません;;
12993:2008/04/16(水) 16:57:56
>>11
3日もかけて作ったのに!
ところで、ダイアログベースってことは使うコントロールを指定されてたりしないかい?
13デフォルトの名無しさん:2008/04/16(水) 17:23:14
ウィザードからダイアログベースのアプリケーション作って
SetPixelで点打っていくだけでは内科医
14993:2008/04/16(水) 17:25:57
>>13
複雑と言われそうだ。
15デフォルトの名無しさん:2008/04/16(水) 17:56:32
char str[] = "monster hunter portable 2nd G";
char buff[128];
という変数があって、
あえてstring.hを使わずにbuff[128]に
str[]を代入するにはどうすればいいですか?
16デフォルトの名無しさん:2008/04/16(水) 18:19:00
for (int i = 0; (buff[i] = str[i]) != '\0'; i++);
17デフォルトの名無しさん:2008/04/16(水) 20:22:55
>>15
sprintf(buff, "%s", str);
18デフォルトの名無しさん:2008/04/16(水) 20:54:57
>>1
乙。
最近まったく答えてないが。
19名無しさん@ゴーゴーゴーゴー!:2008/04/16(水) 21:35:12
20デフォルトの名無しさん:2008/04/16(水) 21:59:22
21デフォルトの名無しさん:2008/04/16(水) 22:04:28
22デフォルトの名無しさん:2008/04/16(水) 22:12:07
>>19
設問3
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6258.txt
10進数表現が、符号無しか符号付きか不明だったので、両方用意しました。
不要なほうは消してください。
23デフォルトの名無しさん:2008/04/16(水) 22:13:25
やってる事は正しいんだろうけど、
そのビット操作はレベル的に提出したら>>19やばくねw
24デフォルトの名無しさん:2008/04/16(水) 22:17:22
>>19
設問4
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6259.txt
同様に両方用意しました。
25デフォルトの名無しさん:2008/04/16(水) 22:40:29
>>23
このスレではよくあることw
26デフォルトの名無しさん:2008/04/16(水) 22:55:47
こうゆうの、確信犯って、ゆうんですよね
27デフォルトの名無しさん:2008/04/16(水) 23:21:07
[1] 授業単元:画像処理
[2] 問題文:2値化画像を読み込ませ、
黒(255)の部分の面積(画素の数を求める)プログラミングを作成せよ。
[3] 環境
 [3.1] OS:XP 
[3.2] Visual Studio2005
 [3.3] 言語:C
[5] その他の制限:メイン関数(特に画素の数を求める部分)だけでも教えて欲しいです。
分かりにくかったらすみません。
よろしくお願いします。
28デフォルトの名無しさん:2008/04/16(水) 23:27:59
追記:画像フォーマットはmagでお願いします
29デフォルトの名無しさん:2008/04/17(木) 00:17:58
この期に及んでmagとは恐れ入った
30デフォルトの名無しさん:2008/04/17(木) 00:21:58
[1] 授業単元:Cプログラミング言語
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6260.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン:CPad for Borland
 [3.3] 言語: (C)
[4] 期限:4/18まで
[5] その他の制限:入力はgetcharもしくはfgetsで行う。
       文字列の最大は#defineで行う。

よろしくお願い致します。
31デフォルトの名無しさん:2008/04/17(木) 00:58:05
>>12
本当に申し訳ありません;;
他には何も書いてないようです・・・

>>13
SetPixelで点を打っていくのは確かです。

よろしくお願いします。
32デフォルトの名無しさん:2008/04/17(木) 01:09:31
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):()
1世代20年とういう仮定のもとに、500年前(つまり25世代前)のあなたの祖先の数が何人になるかを再帰法を用いて計算せよ
  (1世代前=父母、2世代前父方の祖父母+母方の祖父母、3世代前=・・・)

[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 4月21日まで
[5] その他の制限: 制限はないのですが再帰法を絶対に使えということです

どなたかよろしくお願いします

33デフォルトの名無しさん:2008/04/17(木) 01:45:43
#include<stdio.h>

int hoge(int a, int b)
{
if(b<0) return 0;
return a+hoge(a*2, b-1);
}

int main(int argc, char *argv[])
{
int i;

for(i=0;i<=25;i++)
printf("%d\n", hoge(1, i)-1);

return 0;
}
34デフォルトの名無しさん:2008/04/17(木) 01:48:48
てす
35デフォルトの名無しさん:2008/04/17(木) 01:58:11
[1] 授業単元:情報演習
[2] 問題文:200個の要素を格納する整数配列を宣言し,要素を1〜100の乱数で満たし,この配列の要素を標準出力に出力する.
次いで,要素の大きい順に出力するプログラムを作成する
[3] 環境
 [3.1] OS:XP 
[3.2] cygdrive
 [3.3] 言語:C
[5] その他の制限:自分で並び替えられる前、並び替え変えた後が
表示されるようにつくろうとしましたが、大きい順に並び変えるところで
お手上げ状態です。いろいろfor文入れたりしましたが駄目でした。どうか
お願いします。以下作ってみたプログラムです。
3635:2008/04/17(木) 01:59:59
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{srand((unsigned) time(NULL));
int d[200]; int i, j; int tmp;
printf( "before,\n" );
for ( i=0; i<200; i++ ){
j = rand() % 100 + 1;
printf("%d ",j);
}
printf("\n");
for ( i=0 ; i<200; i++ ) {
for ( j=i+1; j<100; j++ ) {
if ( d[i] < d[j] )
{ tmp = d[i];
d[i] = d[j];
d[j] = tmp;
}
}
}
printf("after,\n");
{
printf("%d ",d[i]);
}
}
37デフォルトの名無しさん:2008/04/17(木) 02:00:30
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
38デフォルトの名無しさん:2008/04/17(木) 02:08:34
>>35
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
int d[200];
int i, j;
int tmp;
srand((unsigned) time(NULL));
printf( "before,\n" );
for ( i=0; i<200; i++ ) {
d[i] = rand() % 100 + 1;
printf("%3d ", d[i]);
}
printf("\n");
for ( i=0; i<200; i++ ) {
for ( j=i+1; j<200; j++ ) {
if ( d[i] < d[j] ) {
tmp = d[i];
d[i] = d[j];
d[j] = tmp;
}
}
}
printf("after,\n");
for ( i=0; i<200; i++ ) {
printf("%3d ",d[i]);
}
printf("\n");
return 0;
}
39デフォルトの名無しさん:2008/04/17(木) 02:13:57
>>38
ありがとうございます!
40デフォルトの名無しさん:2008/04/17(木) 08:24:04
4140:2008/04/17(木) 08:38:31
>>40
自己レスです。
return i; とありますが、文脈上 return commands[i].cmd_id; の方がいいですね。
42デフォルトの名無しさん:2008/04/17(木) 12:04:46
課題:配列について
内容:char src[ ] = "seikima";
char dest[4] = "tsu";
と配列を用意し、destの中身をsrcに結合させ、表示させる。
ただし、for文を使うこと・ポインタ、string.hは使ってはならない。
43デフォルトの名無しさん:2008/04/17(木) 12:33:49
そのままsrcにdestぶち込むって無理じゃね?
srcの配列数していいんだったらいいけど。
44デフォルトの名無しさん:2008/04/17(木) 12:35:51
>>35 大学特定しました。 CS2年だなw
まぁ自分でも頑張ってみることも大事だよ。
ここに頼りすぎてると後々辛い思いをするかもね。
45デフォルトの名無しさん:2008/04/17(木) 13:38:23
>>44
ここに来ているお前はなんだよ?w
46デフォルトの名無しさん:2008/04/17(木) 18:47:33
>>35
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6264.txt

簡単なバブルソートでやってみました。なぜか\が文字化けするので
puts( "" )なんて変な書き方になってます。
47デフォルトの名無しさん:2008/04/17(木) 19:02:44
>>42
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6266.txt

まさか授業でこんなトリッキーなことをさせるとは思えないんですが...
どんな環境でも動くのかは知りません。
48デフォルトの名無しさん:2008/04/17(木) 20:03:23
電子版で聞いたけど回答無かった
おまえらならわかる?

今回はR32C/121を利用してロボットを作ろうとしています。
できれば新しくCAN通信で動かしたいのですが
初期設定でうまくいっていないようです。
/* CANリセット/初期化モードに移行 */
reset_c0ctlr = 1;
sleep_c0ctlr = 0;
/* 動作モードの設定 */
/* CAN制御レジスタの設定 */
porten_c0ctlr = 0;
loopback_c0ctlr = 0;
msgorder_c0ctlr = 0;
basiccan_c0ctlr = 0;
buserren_c0ctlr = 0;
tsprescale_c0ctlr = 0;
/* ビットタイミングの設定 */
prc0 = 1;/* Protect off */
cclkr &= ~0x0FU;
cclkr |= 0x00;
prc0 = 0;/* Protect on */
brp_c0conr = 12;
/* CAN動作モードへ移行 */
reset_c0ctlr = 1;
/* 動作モード確認 */
while(state_reset_c0str == 1){}
どこがおかしいの?

49デフォルトの名無しさん:2008/04/17(木) 21:52:03
>>48 そんなんでわかるかよ 初期値渡されてもわかるわけないだろ
50デフォルトの名無しさん:2008/04/17(木) 22:43:09
>>48
たぶん、
> /* CAN動作モードへ移行 */
> reset_c0ctlr = 1;
ここを
reset_c0ctlr = 0;
にしないと動作モードにならないだろ?
他のレジスタはほとんどわからんけどね。
51デフォルトの名無しさん:2008/04/17(木) 23:21:04
演算子の単元で

c=a+a*b+a/b

c=43

どうしても43にならないのですが、解説していただけないでしょうか。
52デフォルトの名無しさん:2008/04/17(木) 23:29:17
>>51
aとbは43になるかもしれないしならないかもしれません。
cはc=43の時点で43になります。
53デフォルトの名無しさん:2008/04/17(木) 23:30:34
c=a(b+1+1/b)
43は素数なのでa,bの少なくとも一方は整数ではない
あれ?問題がわからなくね?
5451:2008/04/17(木) 23:31:42
すいません抜けがありましたので、再度書き込みます。

a=10 b=3で

c=a+a*b+a/b

このときのcに格納される値の問題です…。すいません。

答えは43らしいのですが…

55デフォルトの名無しさん:2008/04/17(木) 23:34:22
何型なの?クワガタ?イントガタ?
56デフォルトの名無しさん:2008/04/17(木) 23:35:17
>>54
c = (10) + (10 * 3) + (10 / 3)
c = (10) + (30) + (3)
c = 43

あってるよ
算数の宿題じゃなくプログラムの問題だったら
コードを見てみないと何がおかしいのかわかりません
57デフォルトの名無しさん:2008/04/17(木) 23:36:49
int型だと 10 / 3 = 3 に切り捨てられるから43で合ってるよ
あとは四則演算
5851:2008/04/17(木) 23:37:35
>>55-56

なるほど。10/3=3になるんですね…。
ちなみにintです。
助かりました、ありがとうございます!!
5951:2008/04/17(木) 23:38:13
>>57
ありがとうございます!
60デフォルトの名無しさん:2008/04/17(木) 23:40:12
>>47
これ参照エラーでそうだけど…

言葉の隅つくようだったら

printf("%s",src);
for(i=0; i<sizeof(dest); i++)
  printf("%c", dest[i])

でいけそうじゃね?
61デフォルトの名無しさん:2008/04/17(木) 23:48:37
重箱だろ。
62デフォルトの名無しさん:2008/04/17(木) 23:57:23
重箱だな
63デフォルトの名無しさん:2008/04/18(金) 06:16:24
>>60
Javaじゃないから配列の範囲外をアクセスしても、変なところぶっ壊さない限り
大丈夫じゃない?とりあえず、OSX上でgcc 4.0.1では動いてる。
64デフォルトの名無しさん:2008/04/18(金) 08:46:24
[1] 授業単元: 画像処理プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6269.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 04/25
[5] その他の制限:なし

自分でも考えて見てますがちょっと出来る気がしないので
(画像の読み込みとhistの計算の部分)暇があれば宜しくお願いします
65デフォルトの名無しさん:2008/04/18(金) 09:25:30
>>63
マジで言っているならC/C++を使うのはやめた方がいい。
66デフォルトの名無しさん:2008/04/18(金) 09:58:51
[1] 授業単元: C/C++プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6270.txt
[3] 環境
 [3.1] OS:WindowsXPPro
 [3.2] コンパイラ名とバージョン: VC++2005
 [3.3] 言語:C
[4] 期限: 本日中
[5] その他の制限:C++でも可

その他参考サイトからパクってきても、手を加えたら動かなくなります。
イチから作るのが超絶苦手でいつも改造改変ばっかりしてたので手も足もでず・・。
67デフォルトの名無しさん:2008/04/18(金) 13:08:36
なんでまたそんな課題をギリギリまで・・・
68デフォルトの名無しさん:2008/04/18(金) 13:25:16
>>65
それ、マジで言っているならそっちこそCを使うのをやめた方がいい。
Javaでも使ってれば?

元々、Cってのは高級アセンブラだぜ?メモリ管理なんて話を抜きにす
れば、どこのアドレスだろうが自由に読み書きできるのがCってもんだ。

実際の業務で使うとかって話じゃなくてパズルみたいな問題を解いてる
だけ。できることと、やっていいことの区別くらいついてるさ。
69デフォルトの名無しさん:2008/04/18(金) 13:36:49
>>47が適切かどうかで考えるべき。たまたま
srcの後ろにdestが連続した領域に記録されたとき、srcの文字列の終端を示す文字を
destをあのように操作することで上書きしたから起こった現象。
70デフォルトの名無しさん:2008/04/18(金) 13:38:33
>Javaじゃないから配列の範囲外をアクセスしても、変なところぶっ壊さない限り大丈夫じゃない?
ここはまぁいい。
>とりあえず、OSX上でgcc 4.0.1では動いてる。
これは阿呆だろ。>68が言うように「パズルの問題を解く」つもりなら何故動くか理解しておくべきだ。
それをしないなら、使うのはやめた方がいいってことだな。
# 何故できるか、と同様に何故してはいけないか、もね。
71デフォルトの名無しさん:2008/04/18(金) 13:44:40
またナンバーサイン野郎か・・・うざっ
72デフォルトの名無しさん:2008/04/18(金) 14:11:45
>>70
阿呆って?

intやlongはalignされる可能性があるけどcharはそのまま連続して確保されるでしょ、
実装依存かもしれんけどとりあえずosxのgccならOK、って書いとけばよかった?
73デフォルトの名無しさん:2008/04/18(金) 14:13:34
63 名前:デフォルトの名無しさん 投稿日:2008/04/18(金) 06:16:24
>>60
Javaじゃないから配列の範囲外をアクセスしても、変なところぶっ壊さない限り
大丈夫じゃない?とりあえず、OSX上でgcc 4.0.1では動いてる。

↑こいつが一番アホだろ、JK。もちっとまともな奴がここにいると思ったが
所詮バカが自分以下を見下そうと思ってきているだけか。この世にお前以上の人間が
どんだけいると思ってんだ?w
74デフォルトの名無しさん:2008/04/18(金) 14:40:48
>>73
ぐだぐだ言わずに解答の一つでもかけよ
75デフォルトの名無しさん:2008/04/18(金) 15:15:24
>>74 = >>68
言い返すことが出来なくなるとファビョる基地外 以後放置よろ
76デフォルトの名無しさん:2008/04/18(金) 16:00:10
77デフォルトの名無しさん:2008/04/18(金) 18:43:58
>>76
ありがとうございます
今ちょっとLinuxのPCが調子悪いので今日試せませんが
ソース見て勉強します
7864:2008/04/18(金) 23:55:27
スミマセン,私の解釈がちょっと違ってたようで
プログラム内でjpgをppmに変える必要があるそうです

でもdjpegコマンドを用いるってプログラム内でlinuxのコマンド
用いて変換することって可能なのでしょうか

あともし>>76さんに書いて頂いたコードで出力データを別ファイルに
書き込んでデータファイル作る場合にはどうすれば良いでしょう
FILEのところに関数追加して書き込み用として開いて最後にfprintf?
ご教授お願いします
79デフォルトの名無しさん:2008/04/19(土) 01:38:28
>>66
削除、CSVファイルの取り込み以外は出来たのだが・・・タイムオーバー?
もちっとできんもぉ〜ソースだけど完成するのだが・・・
80デフォルトの名無しさん:2008/04/19(土) 08:12:34
>>66 がとりあえず完成したのだが・・・もう間に合わなんだか・・・?
81デフォルトの名無しさん:2008/04/19(土) 08:34:14
>>80
努力が報われないのもあれだから、おれが添削してやるよ。
8264:2008/04/19(土) 08:53:01
>>78は何か出来てしまったので放置でお願いします
83デフォルトの名無しさん:2008/04/19(土) 09:01:50
>>81
俺のきしょいクソースを見たいとな?ならば見せて進ぜよう、後ほど。
84デフォルトの名無しさん:2008/04/19(土) 09:37:39
余計なこと書かずにあげたきゃ自分の判断であげりゃいいのに。
85デフォルトの名無しさん:2008/04/19(土) 09:39:12
んじゃあーげないっと、お前も見たけりゃ余計なことを言わなきゃ良いのになw
86デフォルトの名無しさん:2008/04/19(土) 09:43:34
>>84>>85
まさかこれがかの有名な自作自演!?
どんだけチキンなんだよw
87デフォルトの名無しさん:2008/04/19(土) 09:49:32
自作自演って、あーた・・・そうやって煽って、本当は見たいんだろぉ〜?
必死だなw
88デフォルトの名無しさん:2008/04/19(土) 09:55:00
おまえどんだけ性格ねじれてんだよwww
土曜の朝から笑かしてもらいやした。もうお腹いっぱいです。
89デフォルトの名無しさん:2008/04/19(土) 09:56:22
>>86
84は俺だが自演じゃねーよw
どっちかっていうと俺は81と83が自演だと思ってる人間だ
9081:2008/04/19(土) 09:57:46
すんません。
俺が書き込んだのは>>81>>86>>88です。
91デフォルトの名無しさん:2008/04/19(土) 09:58:45
>>83 >>85 >>87 これは俺だが自演じゃないよw
9266:2008/04/19(土) 12:34:50
>>79,80
金曜午後期限だったんですが、なんとか言い訳して伸ばして貰いました
もしまだ見てらっしゃったらソース見せてほしいです
93デフォルトの名無しさん:2008/04/19(土) 12:36:32
もうちょっと速ければ見せてもらえたのに。
彼もうへそ曲げちゃったから。。。
94デフォルトの名無しさん:2008/04/19(土) 12:58:59
おぉ、そうかそうか、そんなに俺のクソミソースを見たいか?
もちっと待ってなぁ。ちと、CSVからバイナリに変換するところでてこずってる。
あと、余裕があったら最後に名前を基準にソートする部分をそぉ〜っと入れておくぜい。
95デフォルトの名無しさん:2008/04/19(土) 12:59:34
なんだ、結局まだできてないんじゃんwww
96デフォルトの名無しさん:2008/04/19(土) 13:00:21
じゃ、おれも作ってみようかな。
97デフォルトの名無しさん:2008/04/19(土) 13:00:35
いや、出来たと思ったんだけど、色々と不具合があってな。
まぁ、きんもぉ〜なソースになりすぎて、自分でも把握しきれてない。
が、一応バイナリーデータ、CSVへの出力は完成している。
あとはインポーとのところが、ね・・・
98デフォルトの名無しさん:2008/04/19(土) 15:27:25
うわぁ〜、きんもぉ〜クソースがさらにきんもぉ〜に・・・けどがんばる、もちっと待ってぇなぁ
99デフォルトの名無しさん:2008/04/19(土) 15:39:37
>>66 >>92
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6273.c

4) リストの出力(第四段階)
 登録されている登録項目のリストを、テキストファイルに出力する。
 ※ 名前によるソートを視野に入れたコーディングが望まれる。

このソートの部分は実装していないので、あしからず
適当に仕組みを作ればできるけど、なんかもう徹夜明けで
('A`)  マンドクセッ 状態なんで、クソミソースですまそ
100デフォルトの名無しさん:2008/04/19(土) 15:41:25
あぁ、あと、取り込む際に、既存の住所録の件数と取り込む件数を考慮して
300件を超えるべきではないが、その部分もやってないっす・・・すまそ。
登録されている件数は、生成されたバイナリーデータのファイルサイズと
1件分の構造体のサイズを元に算出してますです、はい。
101デフォルトの名無しさん:2008/04/19(土) 15:43:58
さらに、コメントに性別を省略した際は x を入れるってのもやってね・・・マンドクセッ
102デフォルトの名無しさん:2008/04/19(土) 15:47:39
重複する名前でも登録可能っす。削除する際も重複するものすべてが消えるっす。
あぁ、なんかインポートかCSV出力にバグっぽいのがあった・・・シラネッ
103デフォルトの名無しさん:2008/04/19(土) 15:50:46
いちいち報告しなくていい。正直興味ないし。
104デフォルトの名無しさん:2008/04/19(土) 15:51:36
ちょっwwwwwwwなんで静かなんだ?もっと突っ込んで突っ込んで by姫(ry

ttp://ja.wikipedia.org/wiki/%E3%81%97%E3%82%89%E3%81%AD%E5%9E%8B%E8%AD%B7%E8%A1%9B%E8%89%A6
本当にもう、シラネッ
105デフォルトの名無しさん:2008/04/19(土) 15:52:24
>>103
興味ないならいちいちそんなことを書き込まなくていい。お前の存在自体いらないしw
106デフォルトの名無しさん:2008/04/19(土) 16:03:41
期限切れの宿題に対して、答えを出そうともがく君の存在が必要とされてるとでも?
ただ興味があってチャレンジするのであれば、一向に構わないが
君の無意味な連続投稿によって埋もれていく宿題登校者の身にもなったらどうかな。
>>97-102 の辺りとか、反応がないという事はどういうことか?
あまりこういうことは言いたくはないが、もう少し空気を読んでくれ。
107デフォルトの名無しさん:2008/04/19(土) 16:06:05
>>106
お前の方がうざっ、無能な奴ほど相手に食って掛かるもんだな
それから、現状で待機中の宿題があるなら、お前がやれよw
108デフォルトの名無しさん:2008/04/19(土) 16:08:01
> 無能な奴ほど相手に食って掛かるもんだな

さすが、すべての発想が我々の2、3歩先をリードしていらっしゃるw
109デフォルトの名無しさん:2008/04/19(土) 16:12:16
コーディングにそれなりの時間を要するのは確かだが
有能なら>>66程度の問題なら難なく解決できるだろwwwwww
特別に難しいアルゴリズムを求めているわけでもないし、ただ仕様通りに書くだけ。
期限切れてるから、俺はやる気にもならんがな。
110デフォルトの名無しさん:2008/04/19(土) 16:13:03
>>1
111デフォルトの名無しさん:2008/04/19(土) 16:45:02
【質問テンプレ】
[1] プログラミング言語
[2] 整数の平方根を開平法で求めるCのプログラムを作成せよ。結果は小数点第1位まで求めればよい
 [3.1] OS: Windows
 [3.3] 言語: C

よくわからないので、よろしくお願いします。
112デフォルトの名無しさん:2008/04/19(土) 17:17:20
113デフォルトの名無しさん:2008/04/19(土) 17:18:31
>>109 >>106
何こいつ、このスレの主か?偉そうに仕切ってやがるが
そこまで言う前に、お前も無駄なレスを書き込むなって。
相手を煽ればそれにレスがつく、結局流れる原因はお前にもあるんじゃん。
放置、スルーを知らない時点でお前の存在こそこのスレには要らない。
それから、期限切れではあるが、期限を延長したような
本人からのレスがあるようだが・・・?
兎にも角にも、興味がないならお前がスルーしろよ、な?
114デフォルトの名無しさん:2008/04/19(土) 17:20:01
この板にもIDがついたら面白いのにね。
115デフォルトの名無しさん:2008/04/19(土) 17:33:38
113様のような有能な人材は是非ともトリップをつけるべきですね
トリップをつけさえすればこのスレ、いや世界が変わると言っても過言ではないでしょう
11630:2008/04/19(土) 17:34:40
>>40
すいません、できてはいたのですが,
警告 W8066 StrCmnd.c 81: 実行されないコード(関数 main )と、でてましたが
この警告を消す方法はないでしょうか?

そして、前スレで解いていただいたのですが、
「Q.0〜255の整数を入力し、数値に変換して unsigned char型配列に格納する。
 この数値に対して1ビット左にシフトした結果、全ビット反転した結果をそれぞれ
 10進数、16進数、2進数で表示する(入力された数値に対しても表示しておくこと)」
という問題で、
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6274.txt
と、解答していただいたのですが、unsigned(left,right,return)
など使わずに 結果をunsigned nのみで表示する方法はないでしょうか?
117デフォルトの名無しさん:2008/04/19(土) 17:42:21
11866:2008/04/19(土) 17:46:30
>>117
ありがとうごぜーます
コードかけないけれど改造だけは得意なのでがんばってみます
119デフォルトの名無しさん:2008/04/19(土) 17:51:33
神がひとりの名無し住人として宿題に挑む

名無し住人として書き込んだ為、神のソース投稿に際して無粋な突っ込みが入る

宿題投稿者からの懇願が奏し、神がソースをアップロード

神が書いたソースのあまりの素晴らしさに息を呑む住人

レスする暇もなく神のソースをしゃぶっている住人から、レスポンスがない事に神は腹を立てる

更に無能な住人から嫉妬されてしまう

完璧な論理で一蹴

非の打ち所がないほどのソースをまさかの連続改良

神様万歳 ←今ここ

神がトリップをつけ2chで数々の功績を残す

神の功績は2ch程度では留まらず、やがて世界の舞台で活躍

神を中心に世界が変わる
120デフォルトの名無しさん:2008/04/19(土) 18:13:12
>>1
> あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
> 気に入らない質問やその他や発言はスルーの方向で。
読めない新入りがいるよなぁ
121デフォルトの名無しさん:2008/04/19(土) 19:44:02
少しは治療の効果があったようにも見えたが、実際はぜんぜんかわってねーな
また暴れてPC取り上げられんなよw
122デフォルトの名無しさん:2008/04/19(土) 20:05:00
[1] プログラミング実習
 [2] 目盛りのついてない水差しが3つあり、それぞれ3L、5L、8Lの容積をもっている
 8Lの容器には既に満杯の水が入っているが、半分の4Lずつに分けたいと考えている。
 なお、資源を大切にしたいので、水をいくらでも使えるということは出来ない。
 最初の8Lをうまく3つの容器に分ける必要がある。
 その手順を求めるおプログラムを作成せよ。
 また完成後1Lと7Lや5Lと2Lにも分けられることを確認せよ
 [3] 環境
  [3.1] OS: WindowsXP
  [3.2] コンパイラ名とバージョン: BorlandC++
  [3.3] 言語: C言語
 [4] 期限: 2008年4月20日24:00まで
 [5] その他の制限: 特にないです
123デフォルトの名無しさん:2008/04/19(土) 20:45:04
[1] 授業単元:
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6280.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:出来れば4/21,無理なら4/24でお願いします
[5] その他の制限:特にありません

宜しくお願いします
124デフォルトの名無しさん:2008/04/19(土) 21:22:36
>>123
>前回のプログラムデータを使用する宿題
ここんとこ詳しく
125デフォルトの名無しさん:2008/04/19(土) 21:58:48
あ、前回>>76さんにやって頂いた課題>>64のことです
それを複数の画像に使用してDBを作ってます
DBの内容については書いてあるとおりです
126デフォルトの名無しさん:2008/04/19(土) 22:04:27
DBは自前で用意しろってことか?
正直面倒そうなんで俺はパスする
127デフォルトの名無しさん:2008/04/19(土) 22:09:37
>>122
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6281.txt
ごめん、勢いで作ってしまったらC++だった。
どなたか引き続きCでお願いします。
128デフォルトの名無しさん:2008/04/19(土) 22:12:01
129デフォルトの名無しさん:2008/04/19(土) 22:36:29
>>128 の訂正
int queue[STATE_NUM], queue_top=0, queue_last=0;

int queue[QUEUE_SIZE], queue_top=0, queue_last=0;
130122:2008/04/19(土) 22:52:42
>>128
しっかり実行できました!
ありがとうございます!
131デフォルトの名無しさん:2008/04/19(土) 23:10:44
>>122
綺麗じゃないけどせっかく作ったので
途中までどれかが4になればいいのかと思ってた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6285.txt
132123:2008/04/19(土) 23:12:15
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6286.zip

スミマセン,DB作ってきました
お願いします
133131:2008/04/19(土) 23:17:08
ああミスった
#define FIN 7
#define REQUIREMENT if(b[1][1]==4 && b[2][1]==4){
に訂正

WFSやったのとないからDFSで求めたんだけど、WFS勉強したいから参考サイトとか教えてもらない?
134デフォルトの名無しさん:2008/04/20(日) 01:43:22
>>133
WFS ってなんでしょうか。幅優先探索?
135デフォルトの名無しさん:2008/04/20(日) 02:15:59
Width First SearchではなくBreadth First Searchという方が一般的なのか
幅優先探索と初めから言えばよかったが
136デフォルトの名無しさん:2008/04/20(日) 03:12:57
>神が書いたソースのあまりの素晴らしさに息を呑む住人
神のコードは、時に読んだ人を妊娠させるとか‥‥‥。
137デフォルトの名無しさん:2008/04/20(日) 04:33:34
>>117 住所:不貞無職童貞になっているな・・・本人いたら消しておくようにw
>>118
138デフォルトの名無しさん:2008/04/20(日) 11:33:05
>>117はEOF対策をしたつもりが、EOFを入力すると無限ループ・・・
EOF入力したダメー
139デフォルトの名無しさん:2008/04/20(日) 14:42:29
>>138
普通、EOFは入力できないのだが。
# 入力をクローズすれば、fgetc()などの戻り値がEOFになることを期待できるが。
140デフォルトの名無しさん:2008/04/20(日) 15:00:13
[Ctrl+Z][Enter]で入力できなかったっけ?
141デフォルトの名無しさん:2008/04/20(日) 15:03:54
いいえ、それは一部の環境において入力を閉じる行為です。
142デフォルトの名無しさん:2008/04/20(日) 15:07:19
まぁ、fread(buffer, 1, 1, stdin)とかすれば戻り値からEOFが入力されないことがわかるな。
143デフォルトの名無しさん:2008/04/20(日) 15:59:06
[1] 授業単元:Cプログラミング言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6287.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン:CPad for Borland
 [3.3] 言語: (C)
[4] 期限:4/21まで
[5] その他の制限:
入力はgetcharで行い、atoi関数は不可。

@〜Bまでありますが、過程ではなくそれぞれ1つのプログラムですので、
よろしくお願いします。
@余力があれば、>>116の下の段もお願いします;
144デフォルトの名無しさん:2008/04/20(日) 16:14:27
>@余力があれば、>>116の下の段もお願いします;
それぞれ、printf("\n");の行の次に以下の行を入れればいい。
--
n = a;
n <<= 1;
--
n = a;
n >>= 1;
--
n = a;
n = ~n;
--
# 勿論、left, rightなどはnに変更することをお忘れなく。
ってことでいいのかな?
145デフォルトの名無しさん:2008/04/20(日) 16:27:23
>>143
>@余力があれば、>>116の下の段もお願いします;
何のために1つの変数で表示する必要があるの?
変数の使いまわしは思わぬミスを招くから回答者はそれを避けたんだと思うんだけど
146デフォルトの名無しさん:2008/04/20(日) 16:55:48
>>139
>>141
こいつまた知ったかで墓穴掘ってるよ・・・ナンバーサイン野郎は以後放置な
147デフォルトの名無しさん:2008/04/20(日) 17:09:18
っつか、EOFは何かのファイルの終わりのことだけだと思っているんだろうか・・・
一応、入力されたデータもファイル(何かデータの資料)として扱えるんだがね。
148デフォルトの名無しさん:2008/04/20(日) 17:23:30
ttp://www9.plala.or.jp/sgwr-t/c/sec08.html
ttp://www.geocities.jp/ky_webid/c/027.html
ここにあるソースをコンパイルして実行すれば一目瞭然
149デフォルトの名無しさん:2008/04/20(日) 17:38:00
>>143
違ってたらすまそ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6288.c

「CPad for Borland」君の問題、前スレからいくつか解いてきたけど、
教えてる人間が3、4流っぽい気がする。
150デフォルトの名無しさん:2008/04/20(日) 17:40:55
151デフォルトの名無しさん:2008/04/20(日) 17:45:38
>>149
自己レスです。
累計出力するの忘れてました。
一行だけ追加してください。
p[j++] = _p;
printf("累計件数:%d\n", j); <- 追加
} while (j < DATA_SIZE);
152デフォルトの名無しさん:2008/04/20(日) 17:48:27
153149:2008/04/20(日) 17:49:56
すんません、3つプログラム作らないとダメなんですね。
読み間違ってました。
154デフォルトの名無しさん:2008/04/20(日) 18:13:49
>>146
次のソースで試してみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6291.txt
環境:
WindowsXP/cygwin(gcc.3.4.4)
Vine Linux 4.1(kernel 2.6.15) / gcc
FreeBSD 6.2 / gcc
MS-DOS ver6.2(NEC) / lsic(3.30c), borland c(3.1), ms-c(6)

結果をみるかぎり、>>139, >>141 が正しいように思えるのですが、如何に?

155デフォルトの名無しさん:2008/04/20(日) 18:16:08
>>143
B
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6292.txt

>>149
すいません、横から仕事取っちゃいました。
156デフォルトの名無しさん:2008/04/20(日) 18:28:04
>>149
>3、4流っぽい気が
それはお手本のソースを見ない限りなんともいえませんが、それは提示されてましたっけ。
157デフォルトの名無しさん:2008/04/20(日) 18:29:25
>>123
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6293.c
意外に手こずってしまった
間違ってたらごめんね
158デフォルトの名無しさん:2008/04/20(日) 19:09:34
>>157
ありがとうございます!
ちょっと家のPC不調なんで学校行って実行してみます
159デフォルトの名無しさん:2008/04/20(日) 19:19:23
>>154
ここ、宿題スレ。あとな、お前何が言いたいの?
あのリストを作るプログラムをちゃんと見たか?w
getchar() が使われているんだが???
160デフォルトの名無しさん:2008/04/20(日) 20:07:23
>>149
それをいうならアンダースコアから始まる変数名を使って欲しくはない
(わざとやってるんじゃなければ)
161デフォルトの名無しさん:2008/04/20(日) 20:12:35
自分の信じている土台が揺らぎ始めたのを本能的に察知して相手をたたき出すことにしたようですね。
なるほど、なるほど。
162149:2008/04/20(日) 20:15:42
外部に公開する必要のないシンボルや、どうでもいいテンポラリな変数は先頭_で始めてます。
163デフォルトの名無しさん:2008/04/20(日) 20:21:12
>>162
アンダースコアで始まる名前は処理系のために予約されていることになってるから
使わないほうがいいと思うよ
164 ◆wIggSzRFEU :2008/04/20(日) 20:26:38
1 情報

2 人数a人のクラスで野球チーム(9人)をbチーム作成した。
このとき残りのメンバーでバレーチーム(6人)を何チーム作れ、何人あまるかを出力する。

3 Windows
テラタームを使ってます


4 2008年4月21日06時

5 scanfを用いるみたいです・・・
難しい関数は習ってません

よろしくお願いします。
165デフォルトの名無しさん:2008/04/20(日) 20:28:17
プログラムの問題なのか?算数の問題じゃなくて?
166 ◆wIggSzRFEU :2008/04/20(日) 20:29:59
そうです・・・
167149:2008/04/20(日) 20:32:57
>>163
そのような話は聞いたことがないのですが、それは処理系依存の話でしょうか?
よく見る他人のソースがlinuxのkernelソースだったもんで普通に使ってました。
168デフォルトの名無しさん:2008/04/20(日) 20:33:06
>>164
#include<stdio.h>

int main(void)
{
int a, b, c; // a:クラスの人数 b:野球チーム数 c:バレーチーム数

printf("クラスの人数を入力してください : ");
scanf("%d", &a);
if(a<0) return 1;

for(b=0;b*9<=a;b++)
{
c=(a-b*9)/6;
printf("野球チーム数:%d バレーチーム数:%d あまり人数:%d\n", b, c, a-b*9-c*6);
}

return 0;
}
169デフォルトの名無しさん:2008/04/20(日) 20:35:14
>>168
ありがとうございます!
170デフォルトの名無しさん:2008/04/20(日) 20:36:20
bも入力するんじゃないの?
171デフォルトの名無しさん:2008/04/20(日) 20:41:53
野球チーム一つ分の人数を数値から引いて、
その数でバレーチームが何人作れて、
何人余るかじゃないの?
172デフォルトの名無しさん:2008/04/20(日) 20:44:54
>>167
処理系のために予約されてるんだから、当然規格で決まってる
ただまぁアンダースコアで始まるすべての名前が予約されてるわけじゃないけど
173デフォルトの名無しさん:2008/04/20(日) 20:59:16
>>123です
>>157さんのプログラム拝見させて頂きました
恐らく>>64での課題とまとめたソースだと思うのですが
既に>>64を実行してとっているデータ(>>132のような)
を読み込んで演算を行うようにしたいのですが
どうすればいいでしょうか?

あとオーバーフローチェックのところのLLONG_MAXが使用されてなく
エラーが出てしまいます
174デフォルトの名無しさん:2008/04/20(日) 21:00:54
>>170
>>171

すみません
おっしゃるとおりです;
175デフォルトの名無しさん:2008/04/20(日) 21:15:18
>>164をお願いします・・
176デフォルトの名無しさん:2008/04/20(日) 21:15:32
>>167
すまん、ググってみたが確かなソースにたどり着けなかった
177デフォルトの名無しさん:2008/04/20(日) 21:21:58
>>175
aとbを入力する場合
#include <stdio.h>

int main(void)
{
int a, b;

scanf("%d", &a);
scanf("%d", &b);

a -= b * 9;
if(a < 0) return 0;

printf("チーム数:%d\nあまり:%d\n", a / 6, a % 6);

return 0;
}
178デフォルトの名無しさん:2008/04/20(日) 21:24:15
>>177
ありがとうございます
179デフォルトの名無しさん:2008/04/20(日) 21:27:15
>>177
if を使わないではできませんか?
180デフォルトの名無しさん:2008/04/20(日) 21:30:10
#include<stdio.h>
void main (void)
{
int a,b,c,d,e;
printf("人数入力:");
scanf("%d",&a);
printf("野チーム数:");
scanf("%d",&b);
c=a-(b*9);
d=c/6;
e=c%6;
printf("人数:%d 野数:%d バレ数:%d 余:%d",a,b,d,e);
}
だめ?
181デフォルトの名無しさん:2008/04/20(日) 21:42:33
if文削除すればいいだけだろ。
野球チーム数多すぎた場合変なことになるけど。
182デフォルトの名無しさん:2008/04/20(日) 23:05:37
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
キーボードからABCDと円周率を入力して「ABCD3.14と」表示させるプログラム
変数は1つで
[3] 環境
[3.1] OS:問わず
[3.2] コンパイラ名とバージョン:VC++6.0
[3.3] 言語:C++だけど基本範囲?
[4] 期限:[2008年04月21日23:59まで]
[5] その他の制限:基本領域なのでstdio.hのみ

よろしくお願いしますm(__)m
183デフォルトの名無しさん:2008/04/20(日) 23:08:50
C++なのにstdio.hでいいんだな?別にやっちゃいけないわけじゃないけどいいんだな?
184デフォルトの名無しさん:2008/04/20(日) 23:11:23
C++ならcstdioだろうな。
185デフォルトの名無しさん:2008/04/20(日) 23:12:41
それより問題文が意味不明なのだが
186デフォルトの名無しさん:2008/04/20(日) 23:24:21
>ABCDと円周率
と入力すると
>ABCD3.14と
になるように変換すればいいんだろ
円周率という文字を3.14に置き換えて、「と」を後ろにすればいいんじゃないかな?
187デフォルトの名無しさん:2008/04/20(日) 23:31:52
>>182
できた。

#include <stdio.h>
int main()
{
char buf[100];
scanf("%s", buf);
puts("ABCD3.14と");
return 0;
}
188182:2008/04/20(日) 23:58:08
>>183-187
素早いレスサンクス。

>>183-184
stdioで桶です

>>185-186
プロセスとしては
起動>入力「ABCD」>入力「3.141592653」で
出力「ABCD3.14」
入力ミスで「」のなかに と を入れてしまいますたorz

>>187ので通るかどうか…多分先生笑顔で×くれてきそう(涙
189デフォルトの名無しさん:2008/04/21(月) 00:00:25
なんてくだらない設問なんだ。
190デフォルトの名無しさん:2008/04/21(月) 00:04:44
>>188
文字列と小数に関する入力・出力の課題というわけだな。
しかし、
> 変数は1つで
この条件はマジ?
191デフォルトの名無しさん:2008/04/21(月) 00:22:16
>>182
#include <stdio.h>
void main() { char buf[16]; gets(&buf[0]); gets(&buf[4]); buf[8] = '\0'; puts(buf); }
192182:2008/04/21(月) 00:31:51
>>190
マジですorz
193デフォルトの名無しさん:2008/04/21(月) 00:33:39
>>182
できた。

#include <stdio.h>
int main()
{
char buf[100 + sizeof(float)];
scanf("%s", buf);
scanf("%f", buf+100);
printf("%s%.2f\n", buf, *(float*)(buf+100));
return 0;
}
194デフォルトの名無しさん:2008/04/21(月) 02:19:26
>>182
これで基本?
#include<stdio.h>

int main(void)
{
char buf[100+1];

setvbuf(stdout, NULL, _IOFBF, 1024);

fprintf(stderr, "入力「ABCD」>", buf);
scanf("%100s", buf);
printf("%s", buf);

fprintf(stderr, "入力「3.141592653」>", buf);
scanf("%lf", buf);
printf("%.2f\n", *(double*)buf);

fflush(stdout);

return 0;
}
195デフォルトの名無しさん:2008/04/21(月) 08:35:07
139 名前:デフォルトの名無しさん 投稿日:2008/04/20(日) 14:42:29
>>138
普通、EOFは入力できないのだが。 < 出来るんだが・・・

141 名前:デフォルトの名無しさん 投稿日:2008/04/20(日) 15:03:54
いいえ、それは一部の環境において入力を閉じる行為です。  < 話が分かってない・・・
196デフォルトの名無しさん:2008/04/21(月) 08:37:55
EOFっていったら普通Ctrl-Dで入力だな
197デフォルトの名無しさん:2008/04/21(月) 08:44:35
EOFがキーボードから入力できないとしても、どのファイルには
ファイルの終わりを意味するEOFコードが記録されていますし
それを入力受付として使うことも可能ですが何か?w
これだから初心者、素人は・・・ナンバーサイン野郎の妄想に惑わされるなよ。
198デフォルトの名無しさん:2008/04/21(月) 08:49:57
あと、そいつが言っているのはEOF対策として、freadが指定したFILEストリームから
指定したポインタへ取り込まないという性質についてだろ?だったら最初から
EOFが 入力 出来ないという勘違いは言わなきゃ良かったんだよ。
言いたいことが相手に的確に伝えられない、誤解を生じさせて損をして生きている奴って
世の中普通にいるしなw こんなところでだから、見ず知らずの人に理解してもらおうと
必死になったんだろうけど、それを相手のエスパーで理解してもらわなきゃ通じないって
どんだけコミュニケーションが下手なんだよ、ナンバーサイン君は?
199デフォルトの名無しさん:2008/04/21(月) 11:35:31
ナンバーサイン君って誰?
200デフォルトの名無しさん:2008/04/21(月) 12:01:24
いちいち蒸し返すなよ
201デフォルトの名無しさん:2008/04/21(月) 12:22:47
[1] 授業単元: プログラミング実習
[2] 問題文
数学関数を使って,0以上10未満の範囲で平方根(sqrt)の対応表を出力しなさい.小数点の刻みを0.01とすること.
[3] 環境
 [3.1] OS:Windows/Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 4/22
202デフォルトの名無しさん:2008/04/21(月) 13:45:07
#include <stdio.h>
#include <math.h>

int main(void)
{
double a;

for(a=0; a<10; a+=0.01) printf("√%.2f = %f\n", a, sqrt(a));

return 0;
}

って書くと減点されるんだろうな。
203デフォルトの名無しさん:2008/04/21(月) 14:56:39
>>202
負の方が表示されないからな。

>>201
#include <stdio.h>
#include <math.h>

int main()
{
int i;

for(i=0;i<1000;i++)
printf("√%.2f = %f, -%f\n",i/100.0,sqrt(i/100.0),sqrt(i/100.0));

return 0;
}
204デフォルトの名無しさん:2008/04/21(月) 15:03:24
>>203
負?フッ
205デフォルトの名無しさん:2008/04/21(月) 15:25:35
sqrt()2回とかw
206182:2008/04/21(月) 15:30:31
>>192-194
作成ありがとうございます。
先生に出したら一つめの方がやり直し、二つ目は「同時に表示できてないな(藁」
とあっさり×&デコピンを頂戴致しました(泣
文字列と小数を同時ディスカ・・・orz
207デフォルトの名無しさん:2008/04/21(月) 15:35:03
>>182は何を意図した問題なのかさっぱりわからん。
208デフォルトの名無しさん:2008/04/21(月) 15:35:07
>>206
#include <stdio.h>

struct hoge{
char str[100];
double value;
};

int main(void){
struct hoge foo;

scanf("%s", foo.str);
scanf("%lf", &foo.value);
printf("%s%.2f\n", foo.str, foo.value);

return 0;
}
209デフォルトの名無しさん:2008/04/21(月) 15:42:37
エスパーktkr
210デフォルトの名無しさん:2008/04/21(月) 15:52:59
>>206
>>194 は同時に表示するはずだが…
211デフォルトの名無しさん:2008/04/21(月) 17:23:33
>>208
変数3つ使ってるじゃん
212デフォルトの名無しさん:2008/04/21(月) 17:24:59
>>211
三つってどれ?
213デフォルトの名無しさん:2008/04/21(月) 19:46:48
>>173
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6296.c
要望どおりに変更してみたが、ちゃんとチェックしてないので手痛いミスがあるかもしれん

>>あとオーバーフローチェックのところのLLONG_MAXが使用されてなく
>>エラーが出てしまいます
いまんいち意味がわからない
コンパイルできないなら、その部分削除したらいいよ
ためしにカッコつけて入れてみただけだから
214デフォルトの名無しさん:2008/04/21(月) 19:50:32
>>212
char
double
struct hoge
215デフォルトの名無しさん:2008/04/21(月) 20:12:55
それは変数じゃなくて型名
216154:2008/04/21(月) 20:13:52
>>111
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6298.txt
プログラミングにあたっては、次を参照しました。
http://ja.wikipedia.org/wiki/%E9%96%8B%E5%B9%B3%E6%B3%95
この説明にそって書いたのですが、どうやらわかりにくくなってしまったようです。
>>159
>ここ、宿題スレ。
#これは失礼。では宿題をときながらではいかが?
>getchar() が使われているんだが???
#たしかに getchar() の返り値を int で受けていない、EOF をチェックしてない、など些細ですがまずいところはありますね。
>>197
>どのファイルにはファイルの終わりを意味するEOFコードが記録されていますし
#いいえ、記録しておく必要はありませんし記録していません。
#>>139 の記述がおおむね正しいのです。
>>200
>いちいち蒸し返すなよ
#ごめんなさい。宿題解きながらということで、ご勘弁ください。
217デフォルトの名無しさん:2008/04/21(月) 20:18:12
>>216
バカか・・・んじゃどうしてプログラムはEOFを検出して動作したんだ?ん?
お前は入力は 印字可能な文字 のみだと思ってんの?w
コンピュータ、電子計算機がやっている基本だよ、入出力って。
その中に人間が決めた定義、その中にEOFも改行コードなども
印字不可能でも存在するデータがあるんだがw
いい加減失せろ、ナンバーサインバカw
218デフォルトの名無しさん:2008/04/21(月) 20:19:01
蒸し返すな!値を返せ!by return
219デフォルトの名無しさん:2008/04/21(月) 20:20:18
220デフォルトの名無しさん:2008/04/21(月) 20:22:51
リダイレクトも知らなさそうだな、ナンバーサインは・・・
221デフォルトの名無しさん:2008/04/21(月) 20:24:03
そんなことよりコナン観ようぜ
222デフォルトの名無しさん:2008/04/21(月) 21:27:20
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文:http://jubilo.cis.ibaraki.ac.jp/~isemba/PROGRAM/CPROG/214.pdf
6.課題を全て
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限:4月27日まで
[5] 問題のプログラムの赤枠を埋める感じでお願いします。
どなたかよろしくお願いします。
223デフォルトの名無しさん:2008/04/21(月) 21:40:10
ここに投稿したことたぶんバレるぞ
224デフォルトの名無しさん:2008/04/21(月) 22:22:31
[1] 授業単元:OSプログラミング入門
[2] 問題文:OSにおけるセキュリティーホールを検出するプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限:4月27日まで
[5] セキュリティーホールが発見された場合は自動で修正するように
機能を付けること
225デフォルトの名無しさん:2008/04/21(月) 22:31:51
ねーよw
226デフォルトの名無しさん:2008/04/21(月) 23:03:20
ゲイツ自重wwwwwwww
227デフォルトの名無しさん:2008/04/21(月) 23:05:39
#include<stdio.h>
int main(void)
{
int a = 5, b = 3;
double d;

d =(int)(((double)a / b) + 0.5));
printf("%f\n", d);
return 0;
}
これで何故かエラーがでるんですがどこがおかしいのでしょうか?
228111:2008/04/21(月) 23:07:21
>>154
丁寧なレスありがとうございます。
本当に助かりました。
せっかくなので頑張って解読してみます!

229デフォルトの名無しさん:2008/04/21(月) 23:10:51
>>227
VIPで聞けばいいじゃん
あとどんなエラーが出てるのか位書かないと答えようが無い
まあどうせ)とかだろうけど
230デフォルトの名無しさん:2008/04/21(月) 23:11:18
d =(int)(((double)a / b) + 0.5));

) が一個余分
231デフォルトの名無しさん:2008/04/21(月) 23:12:21
7行目にステートメント;がないといわれます。
232デフォルトの名無しさん:2008/04/21(月) 23:37:24
>>206
じゃあ次は>>191を提出してみましょう
233デフォルトの名無しさん:2008/04/21(月) 23:42:01
[1] 授業単元: C++
[2] 問題文
サイコロのプログラムをつくりなさい
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: borland C++ 5.5.1 for win
 [3.3] 言語: C++
[4]特になし、長いので分けて書きます。
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
Class Dice{
int face;
int value;

public:
Dice(int f)
{
face=f;
srand((unsigned)time(NULL));
value=rand()%face+1;
}
Dice()
{
face=6;
srand((unsigned)time(NULL));
value=rand()%face+1;
}
234デフォルトの名無しさん:2008/04/21(月) 23:45:11
>>233の続きです
void throwDice()
{
srand((unsigned)time(NULL));
value=rand()%face+1;
}
int read()
{
return value;
}
}
int main()
{
Dice d6;
Dice d10(10);
d6.throwDice(6);
d10.throwDice();
cout<<"6面体の目:"<<d6.read()<<endl;
cout<<"10面体の目:"<<d10.read()<<endl;
return 0;
}
エラー2141 dice2.cpp5:宣言の構文エラーとでます
ソースの問題でしょうか?
お願いします
235デフォルトの名無しさん:2008/04/21(月) 23:48:31
>>233
Classじゃなくてclass
小文字だよ。
236デフォルトの名無しさん:2008/04/22(火) 00:04:22
throwDice()にsrand()はいらないだろ。
237デフォルトの名無しさん:2008/04/22(火) 00:07:19
素早く振ると同じ目ばかり出るよな。
さらに言えば、コンストラクタでもsrandしないほうがいい。
mainで1回だけやればいい。
238デフォルトの名無しさん:2008/04/22(火) 00:11:39
Main関数で5つの整数を読み込み,
その平均(double)を
画面に出力するプログラムです
また5つの引数を受け取り,
平均を返す関数mean_calc5(・・・)
を呼び出し,返された平均値をmain関数で画面出力すること

C言語です  お願いします

239デフォルトの名無しさん:2008/04/22(火) 00:16:12
>>238
>1
240デフォルトの名無しさん:2008/04/22(火) 00:16:23
>>235
ありがとうございます。
またうっかりミスです。
>>236
>>237
ご指摘ありがとうございます。
<問題>の部分で省略したのですが
オブジェクト指向で
物体としてのサイコロをプログラムで作りなさいという項目
があったので、あえてコンストラクタでsrandをいれました。
実際のサイコロも置いた瞬間に目がででいるという事だそうです
241デフォルトの名無しさん:2008/04/22(火) 00:19:27
>>222
当方で確認した環境は WindowsXP, 処理系はcygwin(gcc 3.4.4) です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6299.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6300.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6301.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6303.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6304.txt
最後の2つは、私は出題者の狙いをはっきりとは汲み取ることができませんでしたので、もしかするとはずれているかもしれないこと、ご容赦ください。

>>217
>その中にEOFも改行コードなども印字不可能でも存在するデータがあるんだが
##では、実際にファイルを覗いて見てください。
##1) すべてのファイルに共通の EOF がありますか?
##2) あなたの環境の include\stdio.h にある EOF はどう define されていますか?それがすべてのファイルの末尾におかれていますか?
##私の環境では #define EOF (-1) ですが、すべてのファイルの末尾 1 バイトが -1 = 0xffというわけではありません。
##3) ^D や ^Z の値が -1 なのでしょうか?
>>198
>freadが指定したFILEストリームから指定したポインタへ取り込まないという性質についてだろ?
##getchar()≒getc(stdin) or fgetc(stdin) ですから、getchar() も fread() と同じくストリームを見ています。stdin だろうとファイルだろうと同じことなんですが。
##で、>>154 で示したとおり、stdin には EOF は格納されていません。
>>220
##リダイレクトに関係する関数, pipe() や dup() あるいは dup2() (POSIX) は fd です。今はCライブラリ関数の fp を問題にしています。
>>218
>蒸し返すな
##宿題を解きながら、ですのでご勘弁を。
242デフォルトの名無しさん:2008/04/22(火) 00:24:12
ん、リダイレクトに pipe() はかんけいないですね。しつれい。
243173:2008/04/22(火) 00:28:15
>>213
お手数かけてスミマセン
どうもありがとうございました!
244デフォルトの名無しさん:2008/04/22(火) 00:30:42
>srand
は乱数関数の"初期化"だ

乱数関数を実行して値を取得するのが
>実際のサイコロも置いた瞬間に目がででいる
という事だ
245デフォルトの名無しさん:2008/04/22(火) 01:18:48
>>238
#include <stdio.h>

void Main( int* data, int num )
{
int i;
for( i = 0 ; i < num ; i ++ )
{
printf( "値%d:", i+1 );
scanf( "%d", data+i );
}
}

double mean_calc5( int v0, int v1, int v2, int v3, int v4 )
{
return ((double)v0 + v1 + v2 + v3 + v4) / 5;
}

int main()
{
int data[5];
Main( data, 5 );
printf( "平均値=%f\n", mean_calc5( data[0], data[1], data[2], data[3], data[4] ) );
return 0;
}
246デフォルトの名無しさん:2008/04/22(火) 02:16:19
入力を閉じることを「EOFを入力する」と表現することがあると、
146が認めればすむだけのことに思える。

ちなみに、DOSやCP/Mには、テキストファイルの終わりに0x1Aの1バイトを置く風習があった。
http://support.microsoft.com/kb/405482/ja
DOSでのC処理系の実装では、テキストモードでファイルを読み取るとき、
0x1Aが現れたら(後ろにまだデータがあっても)ファイルの終わりとし、
getcでEOF(もちろん値は-1)を返したり、fgetsでNULLを返すという風にしていた。
(もちろんバイナリモードではやらない)
標準入力からも、Ctrl+Zで0x1Aを入力可能で、あとはファイルの場合と同じ。

そして、Windowsでは、ファイルに0x1Aを置く習慣も廃れ、
また、コンソール(標準入力)でのCtrl+Zは、0x1Aの入力ではなく、
OSがストリームの終わりに達したという扱いに変換するようになっているというのは
Win32コンソールを触ったことがあれば想像の通り。
247デフォルトの名無しさん:2008/04/22(火) 02:42:06
スレ違いウザイ
248デフォルトの名無しさん:2008/04/22(火) 06:04:25
>>246
入力 の意味を理解してから出直せ、ボケ初心者
249デフォルトの名無しさん:2008/04/22(火) 06:09:41
>>248
おまえが考えてる入力の意味ってなに?
250デフォルトの名無しさん:2008/04/22(火) 06:17:08
>>249
自分で調べろよw 基本はデータを読み込む、取り込む。それが文字だろうと数値データだろうと
デジタル機器においては、入出力されるデータは全て数値データ、もっと追求すると
2進法で記録された0と1の組み合わせだよ。その0と1の組み合わせを人間が都合よく
解釈、理解できるように実装されたコンピュータで扱いっているが、EOFが値として
どのように定義されていうと思う?-1と記されて言る資料がほとんどだろ?
EOFがファイルの終わりというのは、人間が都合よく定義した決まりごとであって
所詮は数値データに過ぎないんだよ、これくらい大学に通った奴なら普通に分かるw

っつか、お前はナンバーサインじゃないだろ?何そんな知ったかの肩を持って
このスレにこんな時間まで粘着して、自分の無知を晒してんの?w
251デフォルトの名無しさん:2008/04/22(火) 06:22:05
http://www.google.co.jp/search?hl=ja&q=EOF%E3%80%80%E5%85%A5%E5%8A%9B&lr=&btnG=Google+%E6%A4%9C%E7%B4%A2
EOFの入力は可能です、ありがとうございました。
この粘着はgetcharやfread、fgetc、fgetsなどの ライブラリ の動作について
いちいち話をするが、それらがプログラムの動作において EOF を検出して
どう動作するかについて話をしているが、完全に思い違い。
指定したポインタ、変数へ格納するかどうか?についても話をしているんだろうけど
EOF、すなわちファイルの終わり、それを検出してファイルに書き出す、あるいは
ファイルを読み込んでいるという基本的な処理の例があるにもかかわらず
まだ EOF が入力されないという大ボケをかますプログラマ以前に
コンピュータを扱う技術者としては相応しくない知ったか。いるよな、こういう
聞き分けのない、自分が思ったことをいつまでも相手に理解してもらおうという奴。
完全に筋の通る理論で論破されているのにw

ちなみに、標準入力からはキーボードによる入力でも可能だし、リダイレクトや指定の
ライブラリによるファイルの読みは可能。誰かさん、墓穴を掘ったがファイルの終わりが
全てのファイルにあるのか?って突っ込み、痛すぎ・・・原則として、ファイルの終わりを
示すコードは存在するよw 存在しない例外とも言えるファイルを持ち出そうと必死になるが
本題を崩すなよ。

EOFが入力されるかどうか?についてだろ。すでに昔から存在する事実を
何をいまさら、かじり始めた青二才が必死に反論してんだ?????
頼むからこんなところに来る、自分に反論する人だけに対して
わけのわからん理論で反論せんで、大学の教授にでも質問しろよw

ちなみに、自分は通っていた大学には東大、京大卒の教授が何人もいましたよ。
252249:2008/04/22(火) 06:24:37
>>248が何を食いついてるのかよく分からなかった
EOFに関して>>246>>250ともおかしなこと言ってる訳じゃないのに
議論がかみ合わないのは不思議だと思いますた
253デフォルトの名無しさん:2008/04/22(火) 06:37:24
ttp://ja.wikipedia.org/wiki/%E5%85%A5%E5%8A%9B
ttp://yougo.ascii.jp/gh/65/006526.html
初心者は用語集でも見てろってw
こういう視野の狭い奴って、自分にとっての入力はこうだって話を始めて
広義を無視して異例でも話をしようとするから困る。あれだろ、路上じゃ
違反者がいれば自分もその違反をしても、自分だけしか取り締まらない
警察にいちゃもんをつける奴w ほかにもいるから取り締まれ、そうでなきゃ
警察は怠惰だとか当り散らすんだろw ちゃんと最初から基本ルールを守れよ、理解しろよw

これ以上は、汎用電子計算機の基本的な仕組みを学ばずに、コードを記述して
プログラムを作っただけで知ったような口を聞いている奴らは放置な。
後ナンバーサインはマジで無視しとけ。こんな奴がもし講師だったら、
とんでもない学校だ。生徒だってことで。

EOFが入力されなかったら、どうやってEOFを検出してファイルの読み込みを
やめたのか、説明せよw 以上終了とか言ったら、もう学校を辞めて
今からでも進路を変更しろ。人生を大きく左右するぞ、いい加減な人生の
舵取りは。
254249:2008/04/22(火) 06:41:57
> EOFが入力されなかったら、どうやってEOFを検出してファイルの読み込みを
> やめたのか、説明せよw
http://ja.wikipedia.org/wiki/End_Of_File

ところでナンバーサインって何?
255デフォルトの名無しさん:2008/04/22(火) 06:48:52
文字も画像も映像も、人間が都合よく解釈、理解できるようにしたプログラム、ソフトによって
表現が可能な機能を実装したコンピュータで展開していうんであって、所詮はどれも
数値データだよ。今こうやって文字を入力していうが、それも元を正せば、人間が
文字として解釈できる形に、使用している環境の文字コード体系に応じて
文字として見えるだけだよ。所詮、数値データ。EOFだけ何か特別扱いせんでも・・・
まさか、それらのデータが最初から色がついている、文字の形をしている、音声として
存在しているとでも思ったの?ファイルのダンプくらい、プログラムの授業でもやらんのか?
教本にも普通に載っているぞ、そんなの。
256249:2008/04/22(火) 06:56:43
>>255
おれ国語の読解力あんまいい方じゃないんで確認なんだけど、
これおれに対するレスじゃないよね?
>>253へのレスなら納得なんだけど
257デフォルトの名無しさん:2008/04/22(火) 07:53:21
>ところでナンバーサインって何?
行頭の'#'のことでしょ。尤も、>253の言う「ナンバーサイン」氏こと>139、>144と>216、>246では使い方が違う罠。
どうやら、「ナンバーサイン」氏は特定個人ではなく、>253の脳内にのみ存在している抽象人格のようだ。
258デフォルトの名無しさん:2008/04/22(火) 09:12:23
EOFが無いファイルって、どうやってOSはファイルを個別のものと
認識、管理してんだよ・・・どこのIT土方の意見だ、EOFが入力できない
なんて言っている奴は?所属、肩書きを示してみろ?
259デフォルトの名無しさん:2008/04/22(火) 09:23:45
横槍でスマンけどEOFってOSのファイルシステム管理が
勝手に入れるもんだと思ってるんだけど。
いちいちアプリ実装者が最後にEOF書く必要が無い、
ということは普通fread()(あんま使ったことないからしらんけど)などで
EOFを検出する必要もない(=fread()内で勝手に止めるからでEOFを受け取ることはできない)
ってことなんじゃないの?
たかだかその程度で何を荒れとるのかと思ったのでw
260デフォルトの名無しさん:2008/04/22(火) 09:38:18
>>258
今時、ファイルシステムはファイルの大きさをバイト単位で持っており、
その場合はファイル上に必ずしもEOFが実在する必要はない。

たからEOF入力なんて存在しないなどというつもりはないけど気になったので。
261249:2008/04/22(火) 09:56:14
>>258>>259
windows系ファイルシステムは知らないけど、Linuxのext3ではEOFなんて
全く関知してないと思う(たぶんwindowsも)。
getchar()などでEOFが返ってくるのは、ライブラリ(libc)がopenされたファイルの終了を検知してるから。
ライブラリ側がEOFの面倒を見てくれるので、アプリ開発者はライブラリ提供のヘッダファイルをincludeすれば問題ないです。
もし、OSがEOFを管理してて個々のアプリがEOFをハンドルしなければならないなら、
アプリ毎にOSのヘッダをincludeしなければならないんじゃないかな。
262デフォルトの名無しさん:2008/04/22(火) 10:02:28
朝から元気なのは結構だがスレ違いなので続けるなら他所へ行ってください
263249:2008/04/22(火) 10:02:35
>>261
> getchar()などでEOFが返ってくるのは、ライブラリ(libc)がopenされたファイルの終了を検知してるから。

自己レスです。
ファイルの終了と言うのはファイル自身にEOFコードが存在するという意味ではないです。
バイナリエディタでファイルの途中に0xFFを書き込んでも、int c; while ((c = getchar()) != EOF) してる限り、
途中の0xFFはスルーされるはずです。
char c; while ((c = getchar()) != EOF) だと途中の0xFFが当然のことながら、EOFになりますね。
264デフォルトの名無しさん:2008/04/22(火) 10:53:07
[1]プログラミング演習
[2]3つのポインタ型変数と3つの変数が
char c, *pc;
int i, *pi;
double d, *pd;
と定義され、
pc = &c;
pi = &i;
pd = &d;
と初期化されたポインタに対して
pc++; pi++; pd++;
加算したときに,格納されている値が(つまり格納しているアドレスが) 何バイト増えたか表示するプログラムを作成せよ.
[3.1]問わず
[3.2]borland
[3.3]C
[4]4/23

お願いしますm(._.)m
265デフォルトの名無しさん:2008/04/22(火) 11:40:03
printf("%d,%d,%d\n", sizeof(char), sizeof(int), sizeof(double));
266デフォルトの名無しさん:2008/04/22(火) 12:02:52
EOFがあるとかないとかどうでも良いんじゃい。
EOFの入力がプログラムへ可能か?って話は
可能だって結論が出てんだろが。何他人を装って
分が悪くなるとうざってぇみたいなことを言ってんだ?
お前がEOFの入力が出来ないと食い下がってきたんだろが。
267デフォルトの名無しさん:2008/04/22(火) 12:25:23
Linux = EOFが入力できる
Win = EOFが入力できない
というわけで
Linux > 越えられない壁 >>>>>>>>>>>>>>>>>> Win
てことだ
268デフォルトの名無しさん:2008/04/22(火) 13:19:09
>>267
標準入力からEOFをいれる方法
Linux Ctrl+D
Windows Ctrl+Z
269デフォルトの名無しさん:2008/04/22(火) 13:33:14
>>268
Wordでそれをやってみろ。
ドザは知識がなさすぎる。
270デフォルトの名無しさん:2008/04/22(火) 13:41:14
ならemacsでやってみたら?
標準入力からって書いてあるだろう。
271デフォルトの名無しさん:2008/04/22(火) 13:46:48
>>270
できないと思ってるのかw
272デフォルトの名無しさん:2008/04/22(火) 13:54:23
はいはい、できなくはないですよ。論点はそこじゃない。
273デフォルトの名無しさん:2008/04/22(火) 13:59:29
一般人に使われないlinuxをちょっと齧って
windowsユーザーを馬鹿にしたくなる年頃なんだろう。
煩わしいコマンドをターミナルに打ち込んで「俺玄人wwwwwwうはwwwww」とか本気で思ってそう。
274デフォルトの名無しさん:2008/04/22(火) 14:11:30
どんなOSを使ったことがあるかとかどうでも良いわ。
俺は大学でUNIXは普通に使ってたよ。ってか、使えないと授業にならねーし。
275デフォルトの名無しさん:2008/04/22(火) 14:50:53
論点=ドザはクリックしかできない
276デフォルトの名無しさん:2008/04/22(火) 14:57:34
やっぱりヤツがいると荒れるな。
277デフォルトの名無しさん:2008/04/22(火) 15:01:48
そうだな、論点ズレまくりのナンバーサインがいると。以後放置よろ。
278デフォルトの名無しさん:2008/04/22(火) 15:13:17
EOFをファイルデータとして持ってたのは昔のメインフレームくらいじゃないの?
今はほとんどファイルシステムで管理してるでしょ
279デフォルトの名無しさん:2008/04/22(火) 15:16:21
またそれかよ・・・EOFが何なのかなんてどうでも良いんだよ。
入力されることがあるかないか?ナンバーサインがズレてんのは
getcharとfreadのライブラリの性質に話を持ち込んで、キーボードからの
EOF入力さえも否定したから悪いんだよw
普通にEOF入力なんてあるわ、とっくの昔からw
280デフォルトの名無しさん:2008/04/22(火) 15:19:44
281デフォルトの名無しさん:2008/04/22(火) 15:20:57
ヒント:印字可能な文字(データ)しか入力できないという考えがすでに素人以下
282デフォルトの名無しさん:2008/04/22(火) 15:32:17
どっちもそこら辺で勘弁してやれよ。
283デフォルトの名無しさん:2008/04/22(火) 15:38:17
284249:2008/04/22(火) 15:45:10
>>279
キーボードから直接EOFコードを入力できると言ってるように聞こえるので一言。
もし、そうじゃなかったらごめん。

アプリがライブラリのgetchar()を呼ぶと、kernelはユーザーの入力待ちになる。
ユーザーがたとえば "test string^D" を入力すると、kernelは^Dを入力の終了と判断し、
ライブラリに "test string" を返す。アプリはライブラリからそれを一文字ずつ取り出して使う。
もしここで "test string" を入力せず、単に^Dだけ入力した場合、kernelは\0をライブラリに返す。
ライブラリは入力がなかったという意味でEOFをアプリに返す。

要は、EOFはもうそれ以上入力がないということを示す、
ライブラリとそれを利用するアプリの取り決めになっています。
285デフォルトの名無しさん:2008/04/22(火) 15:50:46
相手にしたらダメな人だから
286デフォルトの名無しさん:2008/04/22(火) 15:54:26
ヒント:改行もタブも印字不可能でもキーボードからの入力が可能。
便宜上出力で指定する場合に \n や \t など、印字可能な文字で代用しているものがある。
所詮テキストファイルにしても、バイナリーデータにしても数値データの塊に過ぎない。
バイナリに関しては、変数の型を指定することで、数値データを適切にプログラムが
解釈するようにコードを記述する際に宣言をしている。
287デフォルトの名無しさん:2008/04/22(火) 16:31:03
お前らスレタイ読め。
C/C++でEOFは「もうそれ以上入力がない」という意味では「ない」。
アフォはひたすらクリックしてればいいんだよ。
妄想披露スンナ。
これだからドザは(ry
288デフォルトの名無しさん:2008/04/22(火) 16:35:12
>>287
> もうそれ以上入力がない
いつ誰がそんなことを言ったんだよ?w お前こそ黙っとれw
289デフォルトの名無しさん:2008/04/22(火) 16:37:39
言ってなくても書いてあるだろが。
掲示板でどうやって言うんだよ。
ドザは駄目だな。
290デフォルトの名無しさん:2008/04/22(火) 16:38:59
「引数として配列のポインタとデータの個数を用いて、引数に与えられた整数の2乗を引数に値を返す関数を作成し、1^2から10^2まで表示せよ」

5時間悩んでも出来ませんでした。よろしくお願いします。
291249:2008/04/22(火) 16:43:49
>>287
「もうそれ以上入力がない」というのは語弊があるかもしれないですね。
アプリがgetchar()で次の文字を取りに行ったとき、入力がなかったときライブラリがEOFを返します。

以下、ちょっと補足。
Linuxの場合、端末から入力された^Dは、kernelでは16進の0x04になります。
で、ライブラリに返すときこれを\0で上書きします。
^Dは入力の終了を示すものであり、EOFではないです。
興味ある人は drivers/char/n_tty.c とかglibcのソースを見るといいです。
292デフォルトの名無しさん:2008/04/22(火) 16:45:28
そろそろ自演でスレ伸ばすの止めようぜ?
293デフォルトの名無しさん:2008/04/22(火) 16:49:40
>>291
アフォか。
規格書読め。
これだからドザは。
294デフォルトの名無しさん:2008/04/22(火) 16:51:31
>>290
#include <stdio.h>

void f(int *p, int n) { while(n--) p[n] = p[n] * p[n]; }

int main(void)
{
int a[10], i;

for(i=0; i<10; i++) a[i] = i + 1;
f(a, 10);
for(i=0; i<10; i++) printf("%d ", a[i]);

return 0;
}
295デフォルトの名無しさん:2008/04/22(火) 16:52:36
なんだ、249をNGにしていたから気づかなかったが、まだ勘違いバカが
粘着しているのかw お前が黙ってりゃ一番解決するんだよ。
スレ板読めや、基地外。自分にとってそれはこういう意味ですとか
このように解釈しました、そう解釈した理由を こじつけ で勝手に作るなよw
お前はISO関係者か?コンピュータの設計者か?これらはすべて
国際的に決められた標準化に基づいて構成されてんだよ。
思い違いを正当化するために、自分の知識の貧弱さを露呈しなくて良いから
黙ってろや、どこぞの学校の講師か知らんが、貴様の元では学びたくないな。
生徒だったらどんな講師に学んだんだと?w
296デフォルトの名無しさん:2008/04/22(火) 16:55:36
#include <stdio.h>

int main(void)
{
char ch;

while( ( ch=getchar() ) != EOF );
printf("%d %c / EOF : %d %c ",ch,ch,EOF,EOF);

return 0;
}

これをコンパイルして、Ctlr-zでEOFを検出させてみろw
そしてEOFとして定義されているマクロの値を調べてみましょう。
EOFが入力されたことが一目瞭然です、ありがとうございました。
さてと、これ以上は無駄なんで、以後放置よろ。
297デフォルトの名無しさん:2008/04/22(火) 16:58:56
>>296
はい0点
298デフォルトの名無しさん:2008/04/22(火) 17:02:33
では次ぎ、テキストでもバイナリーデータでも、当然画像でも音声データでも良い。
>>296 のプログラムにリダイレクトでファイルを入力させてみろ。
ほれ、やっぱりEOF、ファイルの終わりを検出して終了し、そのときのコード、値と
EOFが一致しました、本当に、本当に、重ね重ね、ありがとうございますた!
299デフォルトの名無しさん:2008/04/22(火) 17:03:45
>>296
少なくとも変数 ch は int 型でないといけない
300デフォルトの名無しさん:2008/04/22(火) 17:07:05
>>294
どうもありがとうございます!!
301249:2008/04/22(火) 17:07:17
>>293
Cの規格書JISX3010ちらっと見てみたけど、7.19.1にこう書いてありました。
「EOFは、ファイルの終わり(end-of-file)、すなわちストリームからもうそれ以上の入力
がないことを示すために、幾つかの関数から返される、」
302デフォルトの名無しさん:2008/04/22(火) 17:07:28
良いか、ボケ共、入力は何も 文字データ だけじゃねーんだよ。
標準入力で人間がキーボードから行う入力と言えば文字データが思い浮かぶが
プログラムへのデータの入力は、文字だろうと所詮デジタルデータ、
数値データに過ぎんのだよ。それが使用している環境の
文字コード体系で印字可能な文字は視覚的に見えるんであって
バイナリーデータのような数値データの塊でも、入力できるんだよ。
そしてEOFも。なんでEOFが入力できないのか、もう説明しなくて良い。
とっくの昔からEOFの入力なんてされてたんだよ、当たり前のように。
でなきゃ、プログラムはどうやってファイルの終わりを認識してたのだね?ん?
怒らないから、そんな秘密の情報があるなら、おいちゃんの耳元でそぉ〜っと言ってごらん?
303デフォルトの名無しさん:2008/04/22(火) 17:07:35
>>298
0点。
規格書読め。
304デフォルトの名無しさん:2008/04/22(火) 17:09:57
>>301
アフォか。
エラーを示すために-1を返す関数が一つ以上あれば、-1はエラーか。
ドザはほんとに駄目だな。
305デフォルトの名無しさん:2008/04/22(火) 17:10:27
>>299
はぁ?なんで?1バイトずつ読み込まないでどうすんだ???
お前、もしかして・・・変数の型を誤解してないか?wwww
306デフォルトの名無しさん:2008/04/22(火) 17:12:01
>>303
−100点。お前が説明しろ、ボケ低レベルへたれプログラマーwwwwww
東大、京大卒の教授の元で指導を受けた俺と、それ未満の講師に
コードの入力だけ教わったお前とは格が違いすぎ。
説明と言う説明がお前は出来てないだろ、目の前にあるものの
来本部部は同じだと言うのにw
307デフォルトの名無しさん:2008/04/22(火) 17:14:16
>>305
EOF != 0xFF
おk?
308デフォルトの名無しさん:2008/04/22(火) 17:15:36
299 名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 17:03:45
>>296
少なくとも変数 ch は int 型でないといけない

↑このアフォーの思い違いを説明せよ 配点-100点wwww

では >>296 のコードを
int ch;
に変更して実行してみましょう。あららっ!?結果は同じ -1 が検出されましたwwwww
だから何について説明しているか分からない低レベルは黙ってろって。
お前らとは使用していた施設のレベルからして違うんだよ!
大学にあった施設は企業レベル、いやそれ以上。だからお前らとは
見てきたものが違い過ぎるんだよwwwww
309デフォルトの名無しさん:2008/04/22(火) 17:18:30
ぷぷっ、こいつ、EOFが int 型だと思ってるよwwwwwwwwwwwwwwwwwww
-1なんて1bitでも表現できんだよ!char型は1バイト、すなわち標準的な環境では
8bitなので、十分EOFの検出は可能です、ありがとうございましたwwww
そもそも、ACSIIコードとShift-JISの仕組みが分かっていれば、下らない突っ込みなんてしねーよ。
全角で2バイト必要な文字は、それに応じた文字コードが割り振られてんだがw
お前、Shift-JISで日本語の全角文字をすべて表示するコードを書いてみろや!
結局、そんなものは基本の拡張に過ぎないと気づくからw

んで、EOFが入力できない説明をしてくれよ。俺はそれを求めてんだが?
310デフォルトの名無しさん:2008/04/22(火) 17:18:31
kusakabe先生の教えを守って書き込みしたらスレが伸びる伸びる
311デフォルトの名無しさん:2008/04/22(火) 17:19:35
>>309
> ぷぷっ、こいつ、EOFが int 型だと
規格書読めよ。
312デフォルトの名無しさん:2008/04/22(火) 17:21:21
>>305
Cには、データベースなんかで見かけるNull値ありの型がないから、
getcharなどはNull値相当をEOFに割り当てて、
Null値ありcharをただのintで代用しているという考え方が近いと思う。
313デフォルトの名無しさん:2008/04/22(火) 17:23:21
お前さぁ、負の値が2進数、デジタルデータの世界でどのように表現されているか知らんのぉ?
まぁ、これは大学でやった実験では普通に扱いましたよ、論理回路も含めて。
なんで変数の型に、敢えて unsigned があると思ってんの?
8bitで扱える値の幅、パターンの数、負の値がどのように記録されているかも
C言語でもコードを書いて調べることが出来るんだがねぇ。
んで、EOFが入力できない説明を求む。それ以外の御託はいらねー
314デフォルトの名無しさん:2008/04/22(火) 17:27:12
>>309
-1単体は1ビットでも区別可能だけど、
ここでは、(unsigned) charの値と区別できないといけないから、
charよりビット数の多い(はずの)intなんだろ。
315デフォルトの名無しさん:2008/04/22(火) 17:28:43
>>313
先生の教えに背いて教えてやってもいいんだが、完全にお前の理屈を否定することになるぞ。
どうやらここにはドザしかいないようだから、味方してやってもいいんだが?
316デフォルトの名無しさん:2008/04/22(火) 17:32:37
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6305.txt

困っています。よろしくお願いします。
Windows
gcc
C
です。
317デフォルトの名無しさん:2008/04/22(火) 17:37:29
さて、ドザかまっててもしょうがないから宿題やるか。
318249:2008/04/22(火) 17:48:49
>>296>>298
これ実行すると、ファイルの終了に達していなくても、ファイルの途中にたまたま0xFFが現れたら
そこでwhileループ抜けるよね。
> ほれ、やっぱりEOF、ファイルの終わりを検出して終了し、
whileループを抜けたのはファイルの終わりを検出したわけではないです。
319デフォルトの名無しさん:2008/04/22(火) 17:50:15
騒いでる奴らはそろそろ専用スレ立てろや
320デフォルトの名無しさん:2008/04/22(火) 17:54:41
ビット演算子の意味も分かってなさそうだな。こりゃダメだ・・・
所詮、文字コードでしかプログラムの意味が分からんのだろ。
高度でもない、当たり前なことを知っている人は、”汎用”電子計算機に対して
制御を行うコードを書いているという、当たり前な頭はあるんだよ。
そんなの大学に通わなくても、それ関連の仕事をしている人は
当たり前に見ている。人間なんて、所詮見た目が良かろうが
DNAによって動物細胞の塊が人それぞれ違った形に形成されていると
医療関係に属する人が知っているように。萌え〜なんていっている奴は、
2次元にしろ3次元にしろ、そういう人達から見ると不思議に思えるんだろうね。
だって、所詮動物細胞、0と1の組み合わせのデジタルデータなんだもの、みつを。
321デフォルトの名無しさん:2008/04/22(火) 17:54:52
>>296
jpegファイルはいきなり0xFFで始まるんですが、読み込めないということですか?わかりません><
322デフォルトの名無しさん:2008/04/22(火) 18:01:55
>>320
最後おちゃらけて見せて、興奮を隠そうとしなくてもいいよ
わかるわかる
323デフォルトの名無しさん:2008/04/22(火) 18:10:28
>>296はcharがunsignedの環境なら無限ループだな
324デフォルトの名無しさん:2008/04/22(火) 18:11:11
ビット演算なんて、もはや遺伝子組み換えレベルの操作なのさ〜♪
325デフォルトの名無しさん:2008/04/22(火) 18:33:29
もうね、鸚鵡返しのように 規格書 とか言うだけで、具体的に該当する
事項を示さないアホは何?w 自分が言いたいこと、思ったことを
相手に理解してもらえないって言っているだけじゃん。お前が言いたいことがあるなら
具体的に示せよ、低レベル講師め。お前んとこの学校はどこだ?
通報しておいてやるよ、EOFが入力できないなんていい加減なことを、
ありもしない規格書を持ち出して事実を捻じ曲げているとw

頼むから大学レベル未満のお前、EOFが入力されないという
話が拗れた根本の説明をしてみろや?どうやってEOFを検出して
終了するコードが実行されたのか、摩訶不思議アドベンチャーで
ゴクウも界王拳をスーパーサイヤ人になってからお前にお見舞いするだろうよw
326デフォルトの名無しさん:2008/04/22(火) 18:38:44
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa9.html
面白い記事が見つかりましたよ、ほらw
お前が勘違いしていたEOFが特殊な文字コードってやつ、
所詮は人間が勝手に 定義 した数値に過ぎないということがはっきりしただろ?
俺はEOFがファイルの終わりを示すとは一言も言っていないんだよw
何度も言っただろ?文字を入力したとしても所詮は 数値データ に過ぎないと。
プログラムが、コンピュータがそれを認識するために 人間が定義した に過ぎないと。
人間が好き勝手にルールを決めてしまうと、世界で共通ではなくなり
インターネットの世界でも混乱が起こるんだよ。ウェブページだって
規格が違ってブラウザが国ごとによって違ってたら面倒だろ?

規格書とか言うお前、お前はISOの内容は知っているようだが
標準化の意味は理解していなかったようだな。所詮それも
人間が定義 したに過ぎないということを。
327デフォルトの名無しさん:2008/04/22(火) 18:45:33
さてと、int型がなぜ2^32 すなわち 2^8^4 の値として扱われているか?
結局は4バイト分のデータを1つの変数として取得して扱っているからだよ。
誰だよ、EOF != 0xFF なんて話をしたのは?俺はそんなこと一言もいってないよw
EOF にはしっかりと -1 と定義されているとは言ったが。なんで8ビットのみで話が進んでるの???
だから俺は、人間が勝手に数値の前にマイナス - という符号を付けて
表現したものではなく、2進数において 負の値をどのように表現しているか について問い正したんだが?
悪いがこれについては 実験で その詳細を知ることが出来たんでね。
コンピュータを構成している基本部分なんて、単純なもんだよw
328249:2008/04/22(火) 18:57:07
>>326
> 俺は
と言われてもお前がどれを書き込んでいて、どれにレスしてるのかわからない。

Ctrl-DやCtrl-Zは単にユーザーが入力の終了を示すだけです。
アプリがgetchar()を発行したとき、ライブラリ側にアプリに渡せる文字がなければEOFを返します。
入力ファイル中に0xFFが含まれていて、それをchar型変数で受ければ
ファイルの途中であっても同じくEOFとして判定されます。
この場合、feof()関数でストリームの終了かどうか判定できると思います。

一応念のため、Cの規格書ならここで見れます。
http://www.jisc.go.jp/」→「JIS検索」で「X3010」を入力
329デフォルトの名無しさん:2008/04/22(火) 18:59:20
だから相手にしちゃダメなんだって。
半年ぐらい前までしょっちゅう暴れてたキチガイなんだから。
330デフォルトの名無しさん:2008/04/22(火) 19:05:40
だからよぉ、所詮整数型にしろ文字にしろ、人間が都合よくデジタルデータの塊を
数値や文字として扱うために 変数の型を宣言 したプログラムによって
解釈できるように処理させてんだよぉ。どんなファイル、データにろ
ビット すなわち 2進数の1桁 レベルに話を持ち込めば、0と1の組み合わせの
塊に過ぎんと何度も言っておろうにw

それはともかく、EOFが入力できないという理由を説明してくれ、規格書でw
331デフォルトの名無しさん:2008/04/22(火) 19:07:21
>>328
> ユーザーが入力の終了を示すだけ
それを326に言わせればEOFの入力となるんだろ。それくらい察してやれ。
332249:2008/04/22(火) 19:14:18
>>329
そうですか、キチガイですか。
そんな気はちらっとしてたんですけどね。
とりあえずいい暇つぶしになったんで、相手してくれてありがとう>キチガイ

彼がこの後何を言ってくるか楽しみにしてますwww
333デフォルトの名無しさん:2008/04/22(火) 21:02:35
多分このスレで一番レベルの高いおれから言わせてもらうと
自演くさい
334デフォルトの名無しさん:2008/04/22(火) 21:54:32
>>316
とりあえず動く程度のものでしかないけど課題1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6306.txt
335デフォルトの名無しさん:2008/04/22(火) 22:17:54
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6307.c
[1] 授業単元: Cプログラミング
[2] 問題文:
@任意の2ノード間の最短路を求めるアルゴリズムを実行するプログラムを作成せよ。
A任意の2ノード間の最短最大路を求めるアルゴリズムを実行するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:リンク先のソース(経路選択の部分がない)を使用すること。

また、ソース中のdistance.txtの内容は、
0 1 1
0 3 1
1 2 1
1 3 1
2 4 1
2 5 1
3 4 1
3 7 1
4 5 1
4 7 1
5 6 1
5 8 1
6 8 1
7 8 1
7 9 1
8 9 1

です。よろしくお願いします。
336デフォルトの名無しさん:2008/04/22(火) 22:33:05
getcharの戻り値にEOFがあるだけの話だろ
もはや何の話を必死にしたいのかさっぱりだな
337デフォルトの名無しさん:2008/04/22(火) 22:54:19
【質問テンプレ】
[1] 授業単元:ネットワークプログラミング
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6309.txt
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ:gcc
 [3.3] 言語: C言語
[4] 期限: 4月25日まで
[5] その他の制限: 特になし

よろしくお願いします。
338デフォルトの名無しさん:2008/04/22(火) 23:03:35
>>337
stdoutを別のファイルにするだけじゃね?
339デフォルトの名無しさん:2008/04/22(火) 23:06:50
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: CPad for Borland C++Compiler(これでいいのかな?)
 [3.3] 言語: C言語
[4] 期限: 4月29日まで
[5] その他の制限:正直大学一年目の後期にさらっとならっただけで、それもだいぶ忘れてます
         だから質問の内容がちょっと変かもしれませんが、よろしくお願いします
340デフォルトの名無しさん:2008/04/22(火) 23:10:07
>>316
続いて課題2

ところでこれって課題4まで終了した後のソースコードを提出しないといけないの?
だったら俺が細切れに上げてるのは割と意味が無いな
341340:2008/04/22(火) 23:11:07
342デフォルトの名無しさん:2008/04/22(火) 23:32:10
>>339
>自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる
スレ違い。
# まさかと思うが、調べるプログラムを作れとは言わんだろうな。
343デフォルトの名無しさん:2008/04/22(火) 23:35:06
すいません、264お願いします・・・
344デフォルトの名無しさん:2008/04/22(火) 23:40:14
#include <stdio.h>

int main (void) {
char c, *pc;
int i, *pi;
double d, *pd;
pc = &c;
pi = &i;
pd = &d;
pc++; pi++; pd++;
printf("pc=%dbyte\npi=%dbyte\npd=%dbyte",
(unsigned int)pc-(unsigned int)&c,
(unsigned int)pi-(unsigned int)&i,
(unsigned int)pd-(unsigned int)&d)
}
345デフォルトの名無しさん:2008/04/22(火) 23:43:14
>>264
#include <stdio.h>
static int diff(void * lhs, viod * rhs) {return ((char *) lhs) - ((char *) rhs);}
int main()
{
char c, *pc;
int i, *pi;
double d, *pd;
pc = &c;
pi = &i;
pd = &d;
pc++; pi++; pd++;
printf("%d, %d, %d\n", diff(pc, & c), diff(pi, & i), diff(pd, & d));
return 0;
}
346デフォルトの名無しさん:2008/04/22(火) 23:44:01
>>316
課題3
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6311.txt

課題2にミスあり
提出するなら、main関数のreturn 0;の前の行に
fclose(fp);
を追加してくだしあ
347デフォルトの名無しさん:2008/04/22(火) 23:44:06
[1] 授業単元:ネットワークシステム基礎演習
[2] 問題文(含コード&リンク):(
ファイルbdata.txtには1から1000000までの異なる数が999999個入っている。つまり1から1000000までの数字のうち1つだけない。その数字を見つけなさい。
プログラムは
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp
で始まり、これ以外の変数は使用してはいけない。
また、以下の方法でプログラムを書くこと。
方法)簡単のため。1から100までの数のうち、1つがない場合を例として方法を説明する。もちろん最後まで実行しないとわからないことだが、説明の都合上、存在しない数は48だとする。
(1)ファイルを先頭から最後まで読み、1〜50の数と51〜100の数の個数を数える。
(2)1〜50の数が49個しかないので、求めている数は1〜50の数のどれかである。
(3)ファイルを先頭から最後まで読み、1〜25の数と26〜50の数の個数を数える。
(4)26〜50が24個しかないので、求めている数は26〜50までの数のどれかである。
中略
(5)ファイルを先頭から最後まで読み、48〜49の数と50〜50の数の個数を数える。
(6)48〜49の数が1個しかないので、求めている数は48〜49までの数のどれかである。
(7)ファイルを先頭から最後まで読み、48〜48の数と49〜49の数の個数を数える。
(8)48〜48までの数が0個なので、求めている数は48である。
)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年04月23日23:00まで]
[5] その他の制限:
348デフォルトの名無しさん:2008/04/23(水) 00:18:51
>>347
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;

fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;

count1=0;
while(fscanf(fp, "%d", &data)==1) count1+=data;

fclose(fp);

if(N%2) count2=(N+1)/2*N;
else count2=N/2*(N+1);

printf("%d\n", count2-count1);

return 0;
}
349デフォルトの名無しさん:2008/04/23(水) 00:28:15
>>348
>if(N%2) count2=(N+1)/2*N;
>else count2=N/2*(N+1);
は場合分けする必要が無いだろ
答えは出るし効率もいいけど指定された解法じゃない
350デフォルトの名無しさん:2008/04/23(水) 00:30:17
>>348
ありがとうございます。
本当に助かりました。
351デフォルトの名無しさん:2008/04/23(水) 00:40:45
いや、助かってないでしょw
解法が違う以外にも、intが32bitじゃ足りないし。
352348:2008/04/23(水) 00:52:43
>>347 解法無視してたので訂正版
>>351 >>349 の指摘している場合分けのおかげで正しい答えがでる
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;

fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;
min=1; max=N;
while(min<max){
mid=(min+max)/2;
count1=count2=0;
fseek(fp, 0L, SEEK_SET);
for(i=0;i<N-1;i++){
fscanf(fp, "%d", &data);
if(data>=min && data<=max){
if(data<=mid) count1++;
else count2++;
}
}
if(count1<mid-min+1) max=mid;
else min=mid+1;
}
fclose(fp);
printf("%d\n", max);

return 0;
}
353デフォルトの名無しさん:2008/04/23(水) 00:53:42
347です。確かに348さんのやつで、それらしき解答が出るのですが、
初心者の私にはソースを読んでも理解できませんでした。
どなたか助けてください。
354デフォルトの名無しさん:2008/04/23(水) 00:57:09
理解できないならあきらめるしか無いと思うが
355351:2008/04/23(水) 01:03:00
ああなるほど、オーバーフローしても差は正しくなるってことか。

>>353
まず、値の総和を計算している。
1〜Nまで全部揃っているなら、総和はN*(N+1)/2になるはず。
しかし1個だけ値が足りない、総和はその値の分だけ少なくなる。
356デフォルトの名無しさん:2008/04/23(水) 01:23:20
347です。
355さんの説明で348のソースを理解できました。ありがとうございます。
352の改訂版のfseek(fp, 0L, SEEK_SET);
のfseek関数を知らないので,ググったらファイルの位置指示子の設定とあったのですが、
この役割をどなたか教えていただけませんか。
また、fseek関数を使わない方法はないのでしょうか。
357デフォルトの名無しさん:2008/04/23(水) 01:24:42
>>316
当方の環境はWindowsXP, 処理系はcygwin(gcc 3..4.4) です。
課題 1:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6312.txt
課題 2:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6313.txt
課題 3:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6314.txt
課題 4:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6315.txt
>>346 ですでに回答がありますので、お友達にでも贈ってください。
358264:2008/04/23(水) 01:31:22
ありがとうございます!
359348:2008/04/23(水) 01:33:42
>>356
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;

min=1;
max=N;
while(min<max){
mid=(min+max)/2;
count1=count2=0;
fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;
for(i=0;i<N-1;i++){
fscanf(fp, "%d", &data);
if(data>=min && data<=max){
if(data<=mid) count1++;
else count2++;
}
}
fclose(fp);
if(count1<mid-min+1) max=mid;
else min=mid+1;
}
printf("%d\n", max);

return 0;
}
360デフォルトの名無しさん:2008/04/23(水) 01:55:39
>>359
何度もありがとうございます。本当にありがとう。
361デフォルトの名無しさん:2008/04/23(水) 04:00:39
すみません 質問良いですか?

class split { public: char a : 1; char b : 2 ; char c : 5;}

char x[1000];
split *z;

z=&x[10];

z->a;

とすればxの値を部分的に読み取れますか?
362361:2008/04/23(水) 04:08:45
自己解決しました 符号無しにすれば正常に読み取れるみたいです
363デフォルトの名無しさん:2008/04/23(水) 05:47:26
誰か>>361-362を解説してくれ
364デフォルトの名無しさん:2008/04/23(水) 06:42:28
>>357とか、かなり前に散々既出で決まった、ISO準拠の
int main(void) あるいは int argc , char*argv[] を使ってない
EOFについて噛み付いてきた新入りって何モノ?
初心者、素人臭が漂いすぎ・・・
365デフォルトの名無しさん:2008/04/23(水) 06:45:23
すみません、335お願いします・・・
366デフォルトの名無しさん:2008/04/23(水) 06:58:49
>>336
EOFがキーボードから入力できるかの話だろ
もはや何の話を(ry
367デフォルトの名無しさん:2008/04/23(水) 07:19:49
ドザが二匹いてどっちもドザだからまともな議論にならないだけだな。
368デフォルトの名無しさん:2008/04/23(水) 08:01:37
ドザってなに?
369デフォルトの名無しさん:2008/04/23(水) 08:19:08
# <これをNGにすると、#includeで引っかかってしまうが
# < これをNGにすると、奴の脳内レスを排除できますw
370デフォルトの名無しさん:2008/04/23(水) 08:23:20
>>364
課題2, 課題3, 課題4 では int argc, char*argv[]を使っています。
371デフォルトの名無しさん:2008/04/23(水) 08:24:27
#define NAME_F 11
for (j = 0; j < NAME_F - strlen(member[i]->name); j++)
↑ん〜〜〜、ん〜〜〜、やっぱ きんもぉ〜☆
372デフォルトの名無しさん:2008/04/23(水) 08:29:31
これから理論的に反論できないキチガイのレスが続きますが一切放置で
373デフォルトの名無しさん:2008/04/23(水) 08:39:51
>>372 自己紹介乙。それをやっているのはお前だから、こいつを放置よろ。
374デフォルトの名無しさん:2008/04/23(水) 08:42:59
まぁ、別に問題とは言わんが、これは主観的な意見にもなるかもしれんが
#defineなど定義などは、上にまとめておいて、管理しやすくするのも良い。
あと・・・毎回 strlen で値を算出してたら、回数が少ない場合は気にならないが
繰り返す上では無駄が生じるよ。だったら、そのために変数を定義して
使った方が良いんじゃない?以上、京大、東大卒の教授の下で指導を受けた元生徒より。
375316:2008/04/23(水) 09:39:59
ありがとうございました。
大変助かりました。
376デフォルトの名無しさん:2008/04/23(水) 11:33:22
>>374
そこまで自己主張するならコテ&トリップつければいいのに
377デフォルトの名無しさん:2008/04/23(水) 11:35:29
>>376
しつけぇ、お前がトリップつけろ。側NGにしてやるから
ドザとか目的も無くスラング使いたがる奴はDQN率が高い
379デフォルトの名無しさん:2008/04/23(水) 12:09:00
死刑判決受けた元少年みたいだな
とりあえずお前をNGに追加した、サンクス
380デフォルトの名無しさん:2008/04/23(水) 12:50:57
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
課題1
1、3つのポインタ型変数と3つの変数が
char c, *pc;
int i, *pi;
double d, *pd; と定義され、
pc = &c;
pi = &i;
pd = &d;
と初期化されたポインタに対して
pc++; pi++; pd++;
加算したときに、格納されている値が(つまり格納しているアドレスが)何バイト
増えたか表示するプログラムを作成せよ。

2、完成させたプログラムを実行し、その結果について、3つのポインタ型変数を
それぞれ加算したときの増分されるバイト数が異なる理由を(実行結果を引用してもよい)
説明せよ。

3、適当な配列int a[5]={1,-2,3,4,5};を定義し、その内容をポインタ変数 int *pa; を用いて
表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 2008年4月23日22:00まで
[5] その他の制限: なし
381デフォルトの名無しさん:2008/04/23(水) 16:43:58
[1] 授業単元:プログラミング実習第一
[2] 問題文(含コード&リンク):
配列のすべての要素の最大公約数を求める関数gcdpを実装し、それを用い入力された10個の最大公約数を表示するプログラムを作りなさい。
[3] 環境
[3.1] MacOSX
[3.2] gcc
[3.3] 言語: C
[4] 期限: 4月25日18:00まで
[5] その他の制限:必ず配列を使うこと。ポインタは習ってないので使わないでください。
>>381
#include<stdio.h>

int gcd(int a, int b){
int c;

while((c=a%b)) a=b,b=c;
return b;
}

int gcdp(int arr[], int arrsize){
int i, ret;

ret=arr[0];
for(i=1;i<arrsize;i++) ret=gcd(arr[i], ret);
return ret;
}

int main(void){
int arr[]={60, 70, 80, 90, 25, 100, 10, 75, 30, 35};

printf("%d\n", gcdp(arr, 10));

return 0;
}
383デフォルトの名無しさん:2008/04/23(水) 17:16:07
>入力された
>>382 のmain関数訂正
int main(void){
int i, arr[10];

for(i=0;i<10;i++) scanf("%d", &arr[i]);
printf("%d\n", gcdp(arr, 10));

return 0;
}
385デフォルトの名無しさん:2008/04/23(水) 20:40:37
マネージャパン、月刊アスキー、週刊アスキーの3誌は共同で6月にFXのシステムトレーグランプリ「シストレFXグランプリ」を開催。
詳細WEBページは5/15開設予定で(www.fx-gp.com)、5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
主催はマネージャパン、月刊アスキー、週刊アスキー、協賛はクリック証券。

ttp://system-trading.jp/news/index.php?ID=39
386デフォルトの名無しさん:2008/04/23(水) 22:39:29
>>335@
while(fin==0){ /* finフラグが立つまで繰り返す */
/* tmp_nodeを経由する方が距離が小さくなるノードを探して最短距離と前ノード表を更新 */
/* まだ最短距離が確定していないノードの中から次の探索ノードを選ぶ */
tmp_dist = dist[tmp_node];
for(i=0; i < NODE_NUM; ++i){
a = graph[tmp_node][i]; /* tmp_nodeからiまで距離 */
if(a == MAX || tmp_node == i || chk[i] == 1) continue;
b = tmp_dist + a; /* 始点からのtmp_node経由のiまでの距離 */
if(b < dist[i]){
path[i] = tmp_node;
dist[i] = b;
}
}
j = NODE_NUM; /* 未確定ノードの内、始点から最短距離のノード */
c = MAX; /* 始点からの距離 */
for(i=0; i < NODE_NUM; ++i){
if(chk[i] == 1 || dist[i] == MAX) continue;
if(dist[i] < c){
j = i;
c = dist[i];
}
}
if(j != NODE_NUM){
chk[j] = 1;
tmp_node = j;
continue;
}
fin = 1; /* 終点ノードへの最短距離が確定したら終了 */
}
387デフォルトの名無しさん:2008/04/23(水) 23:40:23
>>380
1.
printf("1byte, 4(or 2)byte, 8byte");

2.
確保するメモリサイズが違う

3.
pa = a;
for(int i = 0; i < sizeof(a); i++)
  printf("%d", pa[i])

コード書き始めて期限切れに気付いたからてきとーにしといた
388デフォルトの名無しさん:2008/04/24(木) 00:23:27
>>387
3番は
pa = a;
for(i = 0;i < sizeof(a)/sizeof(int);i++){
  printf("%d",*(p+i));
}
を期待してるんだと思う
389デフォルトの名無しさん:2008/04/24(木) 00:34:37
>>388
なるほど。
んじゃ1、2を踏まえて
for(〜)
printf("%d", *pa);
 pa++;
ってのもありかな
390デフォルトの名無しさん:2008/04/24(木) 09:35:48
[1] 授業単元:文字列操作、配列
[2] 問題文(含コード&リンク):
不規則な文字列が延々と続いてるファイルを読み込み、main関数から区切る文字または文字列を取得し
区切り毎に2次元配列に格納して格納した回数を戻り値として返す関数を作成せよ。
 文字列中に \n があった場合は削除し、
 区切りの文字・文字列が連続した場合は配列には \0 を返すものとする。
 配列の行数または列数のどちらかを512とする。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 本日午前中
[5] その他制限: strtokを使わないこと

まったくわからんです、お願いします・・・
391デフォルトの名無しさん:2008/04/24(木) 11:44:53
もうすぐ午後やで・・・
392デフォルトの名無しさん:2008/04/24(木) 11:49:43
                   r、ノVV^ー八
                 、^':::::::::::::::::::::::^vィ       、ヽ l / ,
                 l..:.::::::::::::::::::::::::::::イ      =     =
                    |.:::::::::::::::::::::::::::::: |     ニ= 元 そ -=
                  |:r¬‐--─勹:::::|     ニ= 生 れ =ニ
                 |:} __ 、._ `}f'〉n_   =- 徒. で -=
  、、 l | /, ,         ,ヘ}´`'`` `´` |ノ:::|.|  ヽ ニ .な. も ニ
 .ヽ     ´´,      ,ゝ|、   、,    l|ヽ:ヽヽ  } ´r ら   ヽ`
.ヽ し き 元 ニ.    /|{/ :ヽ -=- ./| |.|:::::| |  |  ´/小ヽ`
=  て っ 生  =ニ /:.:.::ヽ、  \二/ :| |.|:::::| |  /
ニ  く. と 徒  -= ヽ、:.:::::::ヽ、._、  _,ノ/.:::::| | /|
=  れ.何 な  -=   ヽ、:::::::::\、__/::.z先.:| |' :|
ニ  る と ら =ニ   | |:::::::::::::::::::::::::::::::::::.|'夂.:Y′ト、
/,  : か   ヽ、    | |::::::::::::::::::::::::::::::::::::_土_::|  '゙, .\
 /     ヽ、     | |:::::::::::::::::::::::::::::::::::.|:半:|.ト、    \
  / / 小 \    r¬|ノ::::::::::::::::::::::::::::::::::::::::::::::::| \
393デフォルトの名無しさん:2008/04/24(木) 11:50:52
>>392
粘着うぜーw どうせなら元生徒じゃなくて、教授に頼めよw
394デフォルトの名無しさん:2008/04/24(木) 12:00:07
[1] 授業単元:プログラミング1
[2] 問題文
整数3つを入力して2番目に大きい値を出力せよ
[3] 環境
 [3.1] OS: Windowsxp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 本日2時まで
[5] その他の制限:
どうかお願いします
395デフォルトの名無しさん:2008/04/24(木) 12:00:07
あぁ〜〜、作り始めたが間に合わなかったか・・・もう午後だから無理ぽ?
396デフォルトの名無しさん:2008/04/24(木) 13:13:11
>>394
きみとほとんど同じくらいの初心者が作ったものでよければ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6319.txt
397デフォルトの名無しさん:2008/04/24(木) 13:32:24
>>396
ありがとうございます
間に合いました
398デフォルトの名無しさん:2008/04/24(木) 13:35:17
[1] 授業単元:C++概論
[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6321.txt
このヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語:C++
[4] 期限: 2008/04/27
[5] その他の制限: 特に制限はありません。C++初心者なのですが、いきなりヘッダファイルのみ渡されて
まず何をすればよいのかすらわからない状況です。よろしくお願いします。
399デフォルトの名無しさん:2008/04/24(木) 13:51:36
>>398
こんなの宣言しかないのじゃ誰もできないだろ
他に条件とかファイルとか指定されて無いのか?
それとも各クラスを適当に実装して動作確認しろってことか?
400デフォルトの名無しさん:2008/04/24(木) 14:00:21
>>399
恐らくこれを利用して座標、ベクトル、行列の演算を一通り出来るようにしろと言うことだと思います。
課題の出され方が漠然としすぎていて手付かずの状態なので、方針だけでもご教授いただけたら幸です。
401デフォルトの名無しさん:2008/04/24(木) 15:30:09
>>395
居残り確定っぽいんですが、参考にしたいので
お時間があったらお願いします。
402デフォルトの名無しさん:2008/04/24(木) 15:38:42
>>401
俺のきしょいクソースを見たいとな?ならば見せて進ぜよう、後ほど。
403デフォルトの名無しさん:2008/04/24(木) 16:24:33
うわっ、なんかあれこれやってたらきんもぉ〜ソースってレヴェルじゃねーぞっ
になったんで、期待せんでくれ・・・
404デフォルトの名無しさん:2008/04/24(木) 17:06:00
いちいちそんなこと書かなくていいから。
ほんとレス乞食はうぜーな。
405デフォルトの名無しさん:2008/04/24(木) 17:08:27
406デフォルトの名無しさん:2008/04/24(木) 17:08:56
>>404
んじゃあーげないっと、お前も見たけりゃ余計なことを言わなきゃ良いのになw
407デフォルトの名無しさん:2008/04/24(木) 17:17:31
>>406
お前のうんこ見なくてすむかと思うとほっとしたよ。

あと、かまって欲しいのわかるけど、いいかげんコテつけてくんない?
速攻NGにするから。
408デフォルトの名無しさん:2008/04/24(木) 17:18:44
自作自演って、あーた・・・そうやって煽って、本当は見たいんだろぉ〜?
必死だなw
409デフォルトの名無しさん:2008/04/24(木) 17:20:03
>>407=>> 249
名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 06:09:41
>>248
おまえが考えてる入力の意味ってなに?

↑こいつうぜー
410デフォルトの名無しさん:2008/04/24(木) 17:30:52
それが同一人物に見えるのはお前だけだからw
411デフォルトの名無しさん:2008/04/24(木) 17:31:22
>>409
反論できてねーだろwwwww顔真っ赤すぎて超うけるwwwww
412390:2008/04/24(木) 17:33:08
一応自分でこんな感じに作ったのはいいんですが、
キャストと配列への格納がうまくいかずお手上げ状態です
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6324.txt
413デフォルトの名無しさん:2008/04/24(木) 17:43:10
>>412
もうちょっと速ければ見せてもらえたのに。
元生徒もうへそ曲げちゃったから。。。
414デフォルトの名無しさん:2008/04/24(木) 17:50:20
>>404
そいつにレスしているお前も同じだろ・・・お前が  言 う な
415デフォルトの名無しさん:2008/04/24(木) 17:52:58
>>83-88のコピペに反応しているお前が言うなレス乞食の
>>404が痛すぎ・・・
>>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。
失せろ、答えないくせに粘着する無能
416デフォルトの名無しさん:2008/04/24(木) 17:57:52
414 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:50:20
>>404
そいつにレスしているお前も同じだろ・・・お前が  言 う な
415 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:52:58
>>83-88のコピペに反応しているお前が言うなレス乞食の
>>404が痛すぎ・・・
>>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。
失せろ、答えないくせに粘着する無能

顔真っ赤wwwww
417デフォルトの名無しさん:2008/04/24(木) 18:06:47
418デフォルトの名無しさん:2008/04/24(木) 18:07:51
>>416 お前を通報しておく。用がないなら来るな、見るな、書くな、鬱陶しい
419デフォルトの名無しさん:2008/04/24(木) 18:13:07
>>417
設問ちゃんと読んだら?
420デフォルトの名無しさん:2008/04/24(木) 18:53:23
421デフォルトの名無しさん:2008/04/24(木) 18:58:32
422デフォルトの名無しさん:2008/04/24(木) 19:55:47
>>412
21:00 まで待てますでしょうか?
423422:2008/04/24(木) 20:57:17
>>412
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
提示されたソースをもとに、考え直してみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6328.txt
424デフォルトの名無しさん:2008/04/24(木) 20:59:53
>>423
ソースコード見てないけど納期を守るお前がすばらしい
うちの会社来ないか?
425デフォルトの名無しさん:2008/04/24(木) 21:24:38
[1] 授業単元:プログラミング実習
[2] 問題文:一覧ファイル(infile.csv)に「グループ名,学籍番号,名前」の順でデータが入っています。学籍番号のみをDATAに格納せよ。
[3] 環境
 [3.1] OS: Windows 2000
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語:C
[4] 期限: 本日中(4/24)
[5] その他の制限: 特に制限はありません。C初心者で全く分かりません。時間があまりないですがよろしくお願いします。
426デフォルトの名無しさん:2008/04/24(木) 21:31:07
>>425
> DATAに格納せよ。
の意味をおしえてください。DATA という名前のファイルに順に記録していけばいいのでしょうか?
427デフォルトの名無しさん:2008/04/24(木) 21:42:23
[1] 授業単元:CプログラミングU
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6329.txt
[3] 環境
 [3.1] Windows
 [3.2] Visual C++ 6.0
 [3.3] C
[4] 期限:2008年4月26日まで
[5] その他の制限: 関数と再帰法を使って完成させるそうです,関数辺りが全く分からないので,よろしくお願いします.
428デフォルトの名無しさん:2008/04/24(木) 21:48:11
>>427

倫理的によくないと思います。
429デフォルトの名無しさん:2008/04/24(木) 21:56:58
>>428
・・・・・・課題なので仕方ないんですよ.
430デフォルトの名無しさん:2008/04/24(木) 22:05:19
#include <stdio.h>

int num_of_pairs(int year)
{
int y, num;
if(year < 1)
return 0;
else if(year == 1)
return 1;
else {
num = 0;
for(y = 1; y < year; y ++)
num += num_of_pairs(y);
return num;
}
}

int main()
{
int y, num = 0, num_last;
for(y = 1; y <= 10; y ++) {
num_last = num;
num = num_of_pairs(y);
printf("\n%d年目のつがい数は%d", y, num);
if(num_last)
printf("で、前年の%f倍、", (double)num / num_last);
}
printf("\nかな?\n");
return 0;
}
431143:2008/04/24(木) 22:08:28
>>144
ありがとうございましたっ・・・と言いたいのですが、またクレームがきてしまいました;

>>149
いえいえ、わざわざ作っていただいたので、参考にさせていただきます。

>>150,152,155
ありがとうございましたっ、なんとか解決できそうです。
432デフォルトの名無しさん:2008/04/24(木) 22:15:19
>>430
回答ありがとうございました,しかし実行したら

1年目のつがい数は1
2年目のつがい数は1で、前年の1.000000倍、
3年目のつがい数は2で、前年の2.000000倍、
4年目のつがい数は4で、前年の2.000000倍、
5年目のつがい数は8で、前年の2.000000倍、
6年目のつがい数は16で、前年の2.000000倍、
7年目のつがい数は32で、前年の2.000000倍、
8年目のつがい数は64で、前年の2.000000倍、
9年目のつがい数は128で、前年の2.000000倍、
10年目のつがい数は256で、前年の2.000000倍、
かな?
と表示されました,10年目のつがいの数は55になるはずなので
ちょっと違っているみたいです.つがいの数はフィボナッチ数になる
らしく
1,1,2,3,5,8,13・・・と続くみたいなんです,すみません.
433425:2008/04/24(木) 22:16:02
プログラム機能仕様に、
「一覧ファイル(infile.csv)を開き、char型配のDATAに学籍番号を読み込む。」とありました。
説明不足で申し訳ないです。
434425:2008/04/24(木) 22:18:30
>>426
アンカーつけ忘れました。すいません
435デフォルトの名無しさん:2008/04/24(木) 22:24:13
>>432
そっか、各世代がまた産むからと思って、足しすぎた。
num_of_pairs(year - 2)が生まれる全数だね。

int num_of_pairs(int year)
{
if(year < 1)
return 0;
else if(year == 1)
return 1;
else
return num_of_pairs(year - 2) + num_of_pairs(year - 1);
}
436デフォルトの名無しさん:2008/04/24(木) 22:26:45
>>435
これで何とか間に合いそうです.完璧な回答ありがとうございました!
437426:2008/04/24(木) 22:32:59
>>434
今ひとつ、はっきりしません。
問題を全部さらしていただくとありがたいのですが。
438デフォルトの名無しさん:2008/04/24(木) 22:36:17
[1] 授業単元:Cプログラミング言語
[2] 問題文(含コード&リンク):
@http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6330.txt
Ahttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6331.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン:CPad for Borland
 [3.3] 言語: (C)
[4] 期限:明日まで
[5] その他の制限:txt参照

連投ですいません。前回質問させていただいたのですが、また質問させてもらいます。
@で有効範囲外に数字以外が入ると、エラーを起こしてしまい
数字以外を無視するということができなかったのですが、どうすればいいでしょうか?
@プログラムとして見づらいとこのことで、少し修正もできればよろしくお願いします。

そしてAの方なのですが、nを使用してとのことで>>144さんのやり方をしたのですが、
どうもa自体を使うなとのことだったので、少しいじってみたのですが、
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8066 wa_prc19.c 31: 実行されないコード(関数 main )
と出てしまい、書き方が悪かったせいで、反転作業が常に0に;
そして、先ほどの@とは逆に、
例)255asdと書くとそのまま255で処理してしまい、不正入力として扱わない。
  256はエラーだが、2550は255の処理をする。
といった感じになってしまってます。

今日中で申し訳ないのですが、よろしければよろしくお願いします。
439デフォルトの名無しさん:2008/04/24(木) 23:13:22
440デフォルトの名無しさん:2008/04/24(木) 23:20:36
>>425
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
とりあえず、「char 型配列 である DATA に順に格納する」ことにして作成しました。
プログラムの最後で、char DATA[] の中身を画面に出力させています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6333.txt
441425:2008/04/24(木) 23:27:06
>>437
えっと、作業をチームで分担していて自分は学籍番号検索処理を任されています。
全体的なプログラム内容は、一覧ファイル(infile.csv)に生徒の情報(グループ名、学籍番号、名前など)を登録していくことです。
その際、学籍番号は入力必須で、検索機能を使うことで重複していないか確認するというものです。
現在、手元にプログラム設計書のプログラム機能仕様書しかないのでとりあえずこれを書き出します。(機能仕様書は講師の方に一応okをもらいました)

概要:学籍番号欄に入力されたデータ(char型配列)が学生の一覧ファイルに入っているかの判定処理。
関数名:int GKS(char *value) //学籍番号のみをMAIN関数から受け取って使う。
戻り値:int error_no //初期値0のエラー判定フラグ
引数:*value //ブラウザから学籍番号欄に入力されたchar型配列データ。
詳細:@MAIN関数からvalueを受け取る。
A一覧ファイル(infile.csv)を開き、char型配列のDATAに読み込む。
A-1 temp.csvを開く。
Binfile.csvの学籍番号とvalueを比較する。
B-1 valueと一致するデータがある場合、該当する全データ(グループ名、学籍番号、名前等)をtemp.csvに書き込む。
B-2  valueと一致するデータがない場合、int型error_noに”1”を格納する。
C一覧ファイル、temp.csvを閉じる。
DMAIN関数に、error_noを渡す。

プログラミング初心者で説明できることもこのくらいしかなく申し訳ないです。
分からなければそれはそれで結構ですので分かった場合のみ解答お願いします。
今日中と書きましたが2時頃まで待ちます。もしくは明日の朝に確認します。
442デフォルトの名無しさん:2008/04/24(木) 23:28:10
>>439
横から口出してもうしわけないけど
欲を言えばinputIntの戻り値はenumにするともっとまとまると思うよ。

キレイなコードごちそうさまでした。
443デフォルトの名無しさん:2008/04/24(木) 23:33:31
ケツから押し込むようで申し込みたいんだけど
欲を言えばisdigitでも使っておk
444デフォルトの名無しさん:2008/04/24(木) 23:34:42
>>438
んー、これの一部は、私が書いたものですね。
@では、cnt が 0〜7 の間のときに数字以外のものが入力されたら err = 1 とすればいいのではないでしょうか。

Aでは cnt は使わなくてもいいと思います。
またまた同じことを言うのはもうしわけありませんが、
同じような処理(二進数を表示する)は、サブの関数にするのがわかりやすいと思うのですが、いかが?
「n を左にシフトさせる -> 表示する -> また右にシフトして元に戻す。」
とするくらいならば、
「n を左にシフトさせた結果をサブの関数に渡す。サブの関数は渡された値を表示する。」と考えるのです。
メインでは n の値自身は変化しないので、「元に戻すためにシフトする」必要がなくなると思います。
全ビットを反転させる演算子は ^ ではなくて ~ です。

当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
@ http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6335.txt
A http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6336.txt
445439:2008/04/24(木) 23:37:31
>>438
A
問題点を挙げるので、それぞれ理解してください。
・入力処理でunsigned charに入れると、256以上が入らないので、エラーチェックができない。
・不正文字のチェックがif(cnt<3)の中に入っているので、4文字目以降をチェックしていない。
・unsigned charの上限は255なので、if(n>255)の条件は絶対に成立しない。(警告の原因)
・nを直接左シフトすると、右シフトしても左端のビットは戻ってこない(必ずビットは0)。
・n^=n は、n=n^nと等価。n^nは必ず0になる。^は排他的論理和。
・printfの引数にnは3つもいらない(実害無し)

ということで、はいデバッグ済みのソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6334.txt

>>442
それは思ったが、当人のレベルを考えて控えた・・・。
446425:2008/04/24(木) 23:37:32
>>440
ありがとうございます!明日これでやってみます。
説明不足でほんとすいませんでした。
447デフォルトの名無しさん:2008/04/25(金) 00:00:56
>>441
では、GKS() 自体については私はくわからないので、すみませんが考えていただくことにして、
「GKS() を動作させる準備として、配列 DATA[][] に infile.csv の学籍番号データを読み込んでおく」プログラムを up します。

DATA は、DATA[i][1024]にして、
一人目の学籍番号は DATA[1][0]〜DATA[1][学籍番号の桁数 - 1] に記録、
二人目の学籍番号は DATA[2][0]〜DATA[2][学籍番号の桁数 - 1] に記録、
...
i 人目の学籍番号は DATA[i][0]〜DATA[i][学籍番号の桁数 - 1] に記録,

としました。

確認した環境は WindowsXP, 処理系は cygwin(3.4.4) です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6337.txt
448TT:2008/04/25(金) 01:46:08
「Continue文」を使った宿題が出ました
内容が「60点以上を合格とし、合格者の平均点を出力する」です
誰かソースを教えて下さいm(_ _)m
449デフォルトの名無しさん:2008/04/25(金) 01:49:20
>>1を読んで書き直し
450デフォルトの名無しさん:2008/04/25(金) 02:07:32
>>436
内部はやっぱり頭悪いなw
451デフォルトの名無しさん:2008/04/25(金) 05:00:29
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6339.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年4月25日22:00まで
[5] その他の制限:先生が言ってたヒントでは問1は二重ループを、
         問2はメモリの動的確保を使えばいいということです。

自分でもかなり考えたのですが結局どうやればいいのか分かりませんでした…。
よろしくお願いします。
452デフォルトの名無しさん:2008/04/25(金) 05:41:34
>>451
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int myStrstr(char *strA, char *strB){
int i, j, pos;
pos = -1;
for(i=0; strA[i] != '\0'; ++i){
if(strA[i] == strB[0]){
for(j=1; strB[j] != '\0' && strA[i+j] == strB[j]; ++j);
if(strB[j] == '\0'){
pos = i;
break;
}
}
}
return pos;
}
char* strDouble(char *strA){
char *p;
int i;
p = (char*)malloc(sizeof(char) * (strlen(strA) * 2 + 1));
if(p == NULL) return NULL;
for(i=0; strA[i] != '\0'; ++i){
p[i*2] = strA[i];
p[i*2+1] = strA[i];
}
p[i*2] = '\0';
return p;
}
453デフォルトの名無しさん:2008/04/25(金) 11:01:59
>>450
お前のレベルの方が低すぎるんだよ、人間性も含めて
どこの国の人間だ、お前?どうせあの渦中の国民だろ
454デフォルトの名無しさん:2008/04/25(金) 20:20:58
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6342.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VisualC++2005
 [3.3] 言語:C++
[4] 期限:2008年4月26日0:00まで
[5] その他の制限:プログラムは結構変えることになるらしいので、あくまで原型を残してあればいいです。
時間ないですがよろしくお願いします・・・
455デフォルトの名無しさん:2008/04/25(金) 20:38:18
2進数の1101が10進数で14になるような世界はどこにあるんだろうな。
456454:2008/04/25(金) 20:44:29
例題の文章素で間違えたorz
14→13です。どうでもいいミスだけど
457デフォルトの名無しさん:2008/04/25(金) 20:45:58
そのミスがどうでもいいか判断できるほどなら、当然その程度の宿題は解けるはずなんだが。
458デフォルトの名無しさん:2008/04/25(金) 20:51:10
455 名前:デフォルトの名無しさん 投稿日:2008/04/25(金) 20:38:18
2進数の1101が10進数で14になるような世界はどこにあるんだろうな。

457 名前:デフォルトの名無しさん 投稿日:2008/04/25(金) 20:45:58
そのミスがどうでもいいか判断できるほどなら、当然その程度の宿題は解けるはずなんだが。

249 名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 06:09:41
>>248
おまえが考えてる入力の意味ってなに?
459デフォルトの名無しさん:2008/04/25(金) 20:56:28
また見えない敵と戦ってる人が来たw
460デフォルトの名無しさん:2008/04/25(金) 20:57:30
>>454
例を参考にしてないけど。
#include <stdio.h>

int main(void)
{
unsigned int i, j, no, temp, retry;
do {
no = 0;
for(i=j=1; i<sizeof(unsigned int)*8; i++, j<<=1) {
printf("%dケタ目の値を入力してください:", i);
scanf("%u", &temp);
if(temp & ~1) break;
no += j * temp;
}
printf("10進数では%uです。\n", no);
printf("もう一度しますか?(1…はい/2…いいえ)");
scanf("%u", &retry);
}while(retry==1);

return 0;
}
461デフォルトの名無しさん:2008/04/25(金) 20:58:02
450 名前:デフォルトの名無しさん 投稿日:2008/04/25(金) 02:07:32
>>436
内部はやっぱり頭悪いなw

424 名前:デフォルトの名無しさん 投稿日:2008/04/24(木) 20:59:53
>>423
ソースコード見てないけど納期を守るお前がすばらしい
うちの会社来ないか?

410 名前:デフォルトの名無しさん 投稿日:2008/04/24(木) 17:30:52
それが同一人物に見えるのはお前だけだからw
462デフォルトの名無しさん:2008/04/25(金) 20:59:14
407 名前:デフォルトの名無しさん 投稿日:2008/04/24(木) 17:17:31
>>406
お前のうんこ見なくてすむかと思うとほっとしたよ。

あと、かまって欲しいのわかるけど、いいかげんコテつけてくんない?
速攻NGにするから。
463デフォルトの名無しさん:2008/04/25(金) 21:08:15
2次元配列変数sampleの中身を表示し、sampleの各値を1の位で四捨五入したものを
resultに入れ、resultの中身を表示するプログラムを作成せよ。
実行例
sample
13 36 18 54
25 62 19 78
41 93 87 21

result
10 40 20 50
30 60 20 80
40 90 90 20

これ出来る人いますか?

464デフォルトの名無しさん:2008/04/25(金) 21:11:35
いる
ていうか出来ないやつなんているの?
465デフォルトの名無しさん:2008/04/25(金) 21:14:08
466454:2008/04/25(金) 21:16:22
>>460
かなり助かりました。ありがとうございます
467デフォルトの名無しさん:2008/04/25(金) 21:19:39
>>463
俺も出来るぜ
468デフォルトの名無しさん:2008/04/25(金) 21:20:05
(x+5)-(x+5)%10
or ((int)((x+5)/10))*10
469デフォルトの名無しさん:2008/04/25(金) 21:20:08
>>463
そのプログラムは非常に難しいぞ
おれに100万くれたらやってやらんこともない
470463:2008/04/25(金) 21:21:26
誰か無料でソースをお願いします
471デフォルトの名無しさん:2008/04/25(金) 21:22:38
>>454
少しだけ例を参考にしたものもどうぞ。

#include <stdio.h>
unsigned int bin2dec(char *p, int n)
{
    int ret = 0;
    while(n--) ret = ret * 2 + p[n] - '0';
    return ret;
}
int main(void)
{
    char cno[sizeof(unsigned int)*8];
    int i, retry;

    do {
        for(i=0; i<sizeof(unsigned int)*8; i++) {
            printf("%dケタ目を入力してください:", i+1);
            scanf(" %c", cno + i);
            if(cno[i]!='0'&&cno[i]!='1') break;
        }
        printf("10進数では%uです。\n", bin2dec(cno, i));
        printf("もう一度しますか?(1…はい/2…いいえ)");
        scanf("%d", &retry);
    }while(retry==1);

    return 0;
}
472デフォルトの名無しさん:2008/04/25(金) 21:38:53
>>468
キャスト意味ないんじゃ?
473デフォルトの名無しさん:2008/04/25(金) 22:05:20
正整数を順次配列に読み込んで、3番目に大きい数(全ての数を左から大きい順にならべたとき、左から3番目の数)を出力するプログラムを作りなさい。
なお、0を読み込むと終了すること。 」 ただし、必ず3個以上を読み込むと仮定してよい。

#include<stdio.h>
#define MAX 1000
void main()
{
int i,sum=6;
int a[MAX];
for(i=0;i<MAX;i++)
{
printf("%d番目のデータ:",i+1);
scanf("%d",&a[i]);
if(a[i] ==0)
break;
sum+=a[i];
}
printf("合計は%d\n",sum);
}

このサンプルをいじって作るそうなんですが、大きいほうから3番目だけを選ぶことが出来ません。もしよろしかったら助力お願いします。
474デフォルトの名無しさん:2008/04/25(金) 22:05:38
[1] 授業単元:
[2] 問題文:アルファベットA・B・Cが格納されているキューXと、空のスタックYがある。
      キューからキューへデータを移す操作を1、
      キューからスタックへデータを移す操作を2、
      スタックからキューへデータを移す操作を3、
      スタックからスタックへデータを移す操作を4とする。
      キューのデータが「ABC」の順に格納されているとする。
      操作後の状態が「CBA」となったとき、「終了」と表示するプログラムを作成せよ。      
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Visual Studio.NET2003
 [3.3] 言語:C言語
[4] 期限:4月28日 13:00まで
[5] データがないスタック・キューからデータを取り出す入力が
  あった場合、エラーメッセージを表示し再入力させること。

以上です。資料などを参考にしても片方しか作動できませんでした。
何卒、よろしくお願いします。
475デフォルトの名無しさん:2008/04/25(金) 22:07:05
>>463

#include <stdio.h>

static int i , j; //ループ用

void view(int dat[][4])
{
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%2d ",dat[i][j]);
}
printf("\n");
}
}
int main(void)
{
int sample[3][4]={{13,36,18,54},{25,62,19,78},{41,93,87,21}};
int result[3][4];

view(sample);
for(i=0;i<3;i++){
for(j=0;j<4;j++){
result[i][j] = sample[i][j]%10>=5 ? (sample[i][j]/10+1)*10 : sample[i][j]/10*10;
}
}
printf("\n");
view(result);

return 0;
}
476デフォルトの名無しさん:2008/04/25(金) 22:16:41
ループ変数をグローバルで宣言って初めて見たけど、よくある書き方なの?
477デフォルトの名無しさん:2008/04/25(金) 22:23:28
>>473
#include<stdio.h>
#define MAX 1000
void main()
{
 int i = 0;
 int max1 = 0, max2 = 0, max3 = 0;
 int a[MAX] = {0};
 for(i=0;i<MAX;i++)
 {
  printf("%d番目のデータ:",i+1);
  scanf("%d",&a[i]);
  if(a[i] ==0)
   break;
  /////////////////////
  if(a[i] > max1){
    max1 = a[i];
    max2 = max1;
    max3 = max2;
  }else if(a[i] > max2){
    max2 = a[i];
    max3 = max2;
  }else if(a[i] > max3){
    max3 = a[i];
  }
  /////////////////////
 }
 printf("3番目に大きい数は%d\n", max3);
}
やってることからしてこのくらいの答えでいいと思う。
次からは>>1読んで来いな?
478デフォルトの名無しさん:2008/04/25(金) 22:24:13
ループ変数をグローバルで作れば、関数で毎度毎度宣言するより実行時間削れるんじゃね?
と考えたことはある
479デフォルトの名無しさん:2008/04/25(金) 22:32:41
>>474
スタックからスタックにデータを移すって意味あんの?
480デフォルトの名無しさん:2008/04/25(金) 22:33:29
[1] 授業単元:プログラミング実習
[2] 問題文:順列を出力するプログラムを以下の条件のもと作成せよ。
・再帰を用いる
・グローバル変数は使用しない
・実行時にユーザは、大文字半角英字を1文字入力する
・出力できていれば良い(すべての並びを保持しておかなくて良い)
・再帰関数名はpermutationとする

実行例
実行例:(下線がユーザ入力)
inputA-Z:C
ABC
ACB
BAC
BCA
CAB
CBA
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:borlandC++
 [3.3] 言語:C言語
[4] 期限:4月27日 22:00まで
[5] 特になし
よろしくお願いします
481デフォルトの名無しさん:2008/04/25(金) 22:37:37
>>479
自分も教員にその質問をしました。そしたら
「キューからキューへの操作はよくあるが、スタックからスタックへの操作を組み込む
課題はあまりする機会がないから、やってみよう。何事も経験だよ(微笑)」
とのことです・・・
482デフォルトの名無しさん:2008/04/25(金) 23:58:22
483デフォルトの名無しさん:2008/04/26(土) 00:00:23
>>452
>>451ですが遅くなりましたが、ありがとうございました。
本当に助かりました
484デフォルトの名無しさん:2008/04/26(土) 00:01:56
>>474

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

typedef enum patern{qu_qu,qu_stack,stack_qu,stack_stack}PTERN;

static char input[10];

PTERN action(void)
{
printf("操作を入力(1:キュ-→キュー 2:キュー→スタック 3:スタック→キュー 4:スタック→スタック)\n");
printf(">");
scanf("%s",input);

return (PTERN)(atoi(input)-1);
}
void view(char *X , int Xbuf , char *Y , int Ybuf)
{
int i;

printf("\n キュー:");
for(i=0;i<Xbuf;i++){printf("%c ",X[i]);}
printf("\nスタック:");
for(i=0;i<Ybuf;i++){printf("%c ",Y[i]);}
printf("\n");
}
485デフォルトの名無しさん:2008/04/26(土) 00:02:40
>>474 2
void qu_to_qu(char *X , int Xbuf)
{
int i;
char tmp=X[0];

for(i=1;i<Xbuf;i++){
X[i-1]=X[i];
}
X[i-1]=tmp;
}

void qu_to_stack(char *X , int *Xbuf , char *Y , int *Ybuf)
{
int i;
char tmp=X[0];

for(i=1;i<*Xbuf;i++){
X[i-1]=X[i];
}
Y[*Ybuf]=tmp;
(*Xbuf)--;
(*Ybuf)++;
}

void stack_to_qu(char *X , int *Xbuf , char *Y , int *Ybuf)
{
X[*Xbuf]=Y[*Ybuf-1];
(*Xbuf)++;
(*Ybuf)--;
}
486デフォルトの名無しさん:2008/04/26(土) 00:03:06
>>474 3

void stack_to_stack(char *Y , int Ybuf)
{
char tmp=Y[Ybuf-1];

Y[Ybuf-1]=tmp; //意味ないが課題どおりに・・・
}

int check(char *X , char *Y)
{
int flag=1;

if(strcmp(X,"CBA")==0){flag=0;}
if(strcmp(Y,"CBA")==0){flag=0;}

return flag;
}
487デフォルトの名無しさん:2008/04/26(土) 00:03:42
>>474 4

int main(void)
{
char X[4] , Y[4];
int Xbuf=3 , Ybuf=0;

strcpy(X,"ABC");
Y[3]='\0';

do{
view(X,Xbuf,Y,Ybuf);
switch( action() ){
case qu_qu:
if(Xbuf==0){
printf("キューのデータがアリマセン\n");
goto error;
}
qu_to_qu(X,Xbuf);
break;
case qu_stack:
if(Xbuf==0){
printf("キューのデータがアリマセン\n");
goto error;
}
qu_to_stack(X,&Xbuf,Y,&Ybuf);
break;
488デフォルトの名無しさん:2008/04/26(土) 00:04:21
>>474 5

case stack_qu:
if(Ybuf==0){
printf("スタックーのデータがアリマセン\n");
goto error;
}
stack_to_qu(X,&Xbuf,Y,&Ybuf);
break;
case stack_stack:
if(Ybuf==0){
printf("スタックのデータがアリマセン\n");
goto error;
}
//stack_to_stack(X,&Xbuf,Y,&Ybuf);
break;
}
error:;

}while(check(X,Y));
printf("\n\n※※※※CBAになりましたので終了※※※※\n\n");
return 0;
}

終了
489デフォルトの名無しさん:2008/04/26(土) 00:09:04
>>482
free()し忘れたorz
490デフォルトの名無しさん:2008/04/26(土) 00:12:56
>>489 ドンマイ!
まぁ、今どきのPCのスペックならバイト単位なんて問題ない!
491デフォルトの名無しさん:2008/04/26(土) 00:15:26
>>482
permulationに渡す引数にstrlen()使わないほうがよくね?
492デフォルトの名無しさん:2008/04/26(土) 00:16:49
否定するくらいなら良いものを説明したら?それよりも指摘すべきは
変数の型。strlen()が返す値はsize_t型
493デフォルトの名無しさん:2008/04/26(土) 00:18:52
暗黙の型変換あるからそれこそどうでもいいだろw
494480:2008/04/26(土) 00:32:12
>>482
エラーなく無事実行できました。ありがとうございます!
495デフォルトの名無しさん:2008/04/26(土) 00:36:11
lenが戻ってくることはわかりきってるのにstrlen()を呼び出すのはムダだろ
496デフォルトの名無しさん:2008/04/26(土) 01:05:23
>>476
よくない書き方
497デフォルトの名無しさん:2008/04/26(土) 02:02:14
モジュール結合度UP
498474:2008/04/26(土) 04:31:05
>>484〜488
貴方のおかげで何とかすることができました。
回答ありがとうございました!m(_ _)m
499デフォルトの名無しさん:2008/04/26(土) 09:58:39
言語:C言語

1から100までの数字をランダムに100個表示する
一度表示した数字は使えない

おねがいします。

500デフォルトの名無しさん:2008/04/26(土) 10:19:44
501デフォルトの名無しさん:2008/04/26(土) 11:15:21
502デフォルトの名無しさん:2008/04/26(土) 11:19:27
>>501 一部訂正
s=myrnd(min,max); > s=(int)myrnd(min,max);
503デフォルトの名無しさん:2008/04/26(土) 12:20:01
三角形の一つの角が120度のときの三辺(a<=b<c)の長さ(整数値のみ)をプログラムで求めよ。cの長さの最大は100までとする
504デフォルトの名無しさん:2008/04/26(土) 12:27:09
>>499
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6349.txt

Cで乱数を初めて使ったぐらいのプログラミングレベルです
アップするのに2時間半もかかってしまったw

ご参考に
505デフォルトの名無しさん:2008/04/26(土) 12:48:34
老婆心ながら突っ込ませて頂きます。

> for (j = 0; flag = 0 || j < i; j++){ // 重複の検査
比較演算子ではなく代入になってます。コンパイラも警告を出しているかと。
i--;を入れているなら、flagは要らないんでは?戻せば良いだろうし。

あと、すでに出たものと重複しないか、確認するやり方は
一瞬で処理が終わる場合は気づかないが、かなり効率が悪いっす。
506504:2008/04/26(土) 13:19:53
>>505
> 老婆心ながら突っ込ませて頂きます。

指摘、うれしいです

>>505
> > for (j = 0; flag = 0 || j < i; j++){ // 重複の検査
> 比較演算子ではなく代入になってます。コンパイラも警告を出しているかと。
> i--;を入れているなら、flagは要らないんでは?戻せば良いだろうし。

FreeBSD の gcc を使ったんですが、エラーも出なかったですね
私がデバックという概念をちゃんと理解していなく、gcc の細かい使い方を理解していないので、
それで細かい詰めが甘いのもありますが

flag はダサいと感じながら、使ってみました
i--; だけでよかったんですね

> あと、すでに出たものと重複しないか、確認するやり方は
> 一瞬で処理が終わる場合は気づかないが、かなり効率が悪いっす。

もちろん、理解しています
しかし、100個の処理ですし、このプログラムを作って、2時間半もかかっているので
生産効率も考えると私の力量だとこの単純処理が妥当かなと思って、この処理にしました
507デフォルトの名無しさん:2008/04/26(土) 13:43:09
>>503
(c-1)(c+1)=(a-1)(b-1)

あとよろしく
508デフォルトの名無しさん:2008/04/26(土) 14:29:09
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6350.txt
[3] 環境
 [3.1] OS:XP 
[3.2] Visual Studio2005
 [3.3] 言語:C
[4]4/26
[5] その他の制限:なし
509デフォルトの名無しさん:2008/04/26(土) 14:33:18
>>500
>>501
>>504
どうもありがとうございます。
510デフォルトの名無しさん:2008/04/26(土) 14:44:18
>508
void twos_complement(int *a, int *b)
{
int i;
for(i=0; i<8; i++) b[i] = 1 ^ a[i];
}
void print_bin(char *str, int *p)
{
int i;
printf("%s", str);
for(i=0; i<8; i++) putchar('0'+p[i]);
putchar('\n');
}

511デフォルトの名無しさん:2008/04/26(土) 15:22:21
>>501
一様とかを気にするなら RAND_MAX + 1 も注意したほうがいいかも。
RAND_MAX が INT_MAX などに一致するケースがしばしばあって、
+ 1 してオーバーフローする可能性が十分ある。

(RAND_MAX + 1.0) か、キャストを陽に書いて ((double)RAND_MAX + 1.0) がお勧め。
512デフォルトの名無しさん:2008/04/26(土) 15:26:36
>>511 ???
513デフォルトの名無しさん:2008/04/26(土) 15:33:57
((double)RAND_MAX + 1)じゃねーの?
1.0ならキャストしなくていいじゃん。
514デフォルトの名無しさん:2008/04/26(土) 16:16:17
#include <stdio.h>

int twos_complement(int *a , int *b)
{
int i;

for(i=0;i<8;i++){ b[i]=1-a[i]; } //BIT反転
b[7]=b[7]+1;
for(i=7;i>=0;i--){
if(b[i]>1 && i!=0){
b[i]=b[i]%2;
b[i-1]=1;
}
}
}
515デフォルトの名無しさん:2008/04/26(土) 16:16:43
void print_bin(char *moji , int *a)
{
int i;

printf("%s",moji);
for(i=0;i<8;i++){ printf("%d",a[i]); }
printf("\n");
}

int main(void){
int a[8]={0,1,0,1,0,1,0,1};
int b[8];

twos_complement(a,b); /*補数計算*/
print_bin("a=",a); /*配列の表示*/
print_bin("b=",b);

return 0;
}
516デフォルトの名無しさん:2008/04/26(土) 16:21:10
>>508

514と515が答え。

問題文通りにはなるけど実行結果通りにはならないよ?


>実行結果
>a=01010101
>b=10101010 ←これはaの1の補数

2の補数は10101011
 11111111
-)01010101    8ビットの最大数から引いたものが1の補数、つまり反転
-------------
 10101010  ←1の補数

 10101010
+)00000001    1の歩数に1を足したものが2の歩数
-------------
 10101011  ←2の補数

517デフォルトの名無しさん:2008/04/26(土) 16:22:32
ん〜、警告が出るけどちょっとこれを。
#include <stdio.h>
#include <limits.h>

int main(void)
{
printf("%d %d \n",INT_MAX , INT_MAX+1);
printf("%lf %lf \n",(double)INT_MAX/(double)(INT_MAX+1) , (double)INT_MAX/(double)(INT_MAX+1.0));
return 0;
}
518デフォルトの名無しさん:2008/04/26(土) 16:28:53
514修正して・・・・

int twos_complement(int *a , int *b)
{
int i;

for(i=0;i<8;i++){ b[i]=1-a[i]; } //BIT反転
b[7]=b[7]+1;
for(i=7;i>=0;i--){
if(b[i]>1){
b[i]=b[i]%2;
b[i-1]=b[i-1]+1;
}
}
}
519デフォルトの名無しさん:2008/04/26(土) 16:39:57
RAND_MAXが符号有りのINT_MAXと同等なら注意かね。
自分の環境じゃ RAND_MAX は 2^15-1 だったけど。
520510:2008/04/26(土) 16:46:38
実行結果しか見てなくて2の補数って気づかなかった
2の補数なら
void twos_complement(int *a, int *b)
{
int i;
for(i=0; i<8; i++) b[i] = 1 ^ a[i];
for(i=7; i>=0; i--) if(b[i] ^= 1) break;
}

521デフォルトの名無しさん:2008/04/26(土) 16:48:15
悪い、514再び修正

修正前だと8bitすべてが0のときうまくいかない

#include <stdio.h>

int twos_complement(int *a , int *b)
{
int i;

for(i=0;i<8;i++){ b[i]=1-a[i]; } //BIT反転
b[7]=b[7]+1;
for(i=7;i>=0;i--){
if(b[i]>1){
if(i==0){b[0]=10;}
else{
b[i]=b[i]%2;
b[i-1]=b[i-1]+1;
}
}
}
}
522デフォルトの名無しさん:2008/04/26(土) 17:01:33
こうやって自力でちょくちょく修正加えて最終的に完成した時の嬉しさといったらもうね
523デフォルトの名無しさん:2008/04/26(土) 17:07:13
もうね、とりあえずうpロダを使ってくれると助かるその他大勢。
524デフォルトの名無しさん:2008/04/26(土) 17:29:55
1レスに収まるくらいならアプロダより直接書いてくれたほうが開く手間かからなくていいが。
同じものを修正しながらなんども書くのは簡便してほしいけどな。
525デフォルトの名無しさん:2008/04/26(土) 17:31:13
1レスに収まるという基準が曖昧。
普通にうpロダ使ってくれればなんら問題はない。
>>525
>1レスに収まるという基準が曖昧。
曖昧なのか?
527デフォルトの名無しさん:2008/04/26(土) 17:33:32
1レスなのか複数レスにまたがったものか区別できないのかw
528デフォルトの名無しさん:2008/04/26(土) 17:34:16
何度も修正して、恥ずかしくない厚顔さがうらやましい
おれだったら、自殺するな
>>528
成仏してください
530デフォルトの名無しさん:2008/04/26(土) 17:48:29
>>527
区別じゃなくて、その基準がお前基準だってことだろ。なんで?
お前このスレの主?指揮者?管理人?なんでお前基準に合わせる必要があるの?
ソースコードをだらだら書かれても、レスが長くなるんすけど?
531デフォルトの名無しさん:2008/04/26(土) 17:51:13
これにこりたらちゃんとうpロダ使えよ。
はい次。
532デフォルトの名無しさん:2008/04/26(土) 17:53:46
>>530
ひさしぶりに可読性のことを考えられていない日本語を読んだわ

プログラミングより日本語の勉強をし直し始めたほうがいいよ
533デフォルトの名無しさん:2008/04/26(土) 18:01:04
[1] 授業単元:プログラミング実習

[2] 問題文:

正の二桁の整数をキーボードから入力し,その値を初期値として
以下の増加値に従って増加を続け,それぞの値を表示する.
値が100以上になったら終了し,各値の総和およびデータ数を表示する.
増加値は入力した初期値の下一桁によって以下のように設定される.
  
  ・初期値の下一桁が1または6のとき増加値は8
  ・初期値の下一桁が2または7のとき増加値は3
  ・初期値の下一桁が3または8のとき増加値は10
  ・初期値の下一桁が4または9のとき増加値は5
  ・それ以外のとき増加値は6

[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++6.0
 [3.3] 言語:C++
[4] 期限: 無期限
[5] その他の制限: switch-caseを使用してコードを組む。

よろしくお願いしますm(__)m 。
534デフォルトの名無しさん:2008/04/26(土) 18:12:35
宿題スレで答えてる皆さぁ、自力で宿題させないと身に着かないと思うけど?
535デフォルトの名無しさん:2008/04/26(土) 18:13:35
536デフォルトの名無しさん:2008/04/26(土) 18:15:52
>>534
一見善意に見えて、実は自分が楽しんでるだけで
相手を苦しめるなんて最高じゃないか
537デフォルトの名無しさん:2008/04/26(土) 18:16:49
>>534
ここは2ch。他人を馬鹿にして誹謗中傷して楽しむ遊び場。
他人の宿題をやってやり、そいつが将来困るのも遠大な
計画のひとつ。
538デフォルトの名無しさん:2008/04/26(土) 18:18:57
>>537
> 誹謗中傷して楽しむ遊び場。
ねーよ、そんなの基地外だけだろ。この世に戦争があるからって
この世、人類は戦争するのが当たり前とか言われても、ねぇ。
勝手にやってれば?ってなるぞ。そういうことしていると、当然自分から
そういう場に出てきているんだから、自分が狙われても文句言えないだろう。
自分が不利になると、あぁ〜やめてくぇ〜、ごめんなさいとか言うタイプだろ、お前?
539デフォルトの名無しさん:2008/04/26(土) 18:24:06
>>536

助かりましたm(__)m ありがとうございます。
540デフォルトの名無しさん:2008/04/26(土) 18:25:55
[1] 授業単元:プログラミング基礎
[2] 問題文:速度(km/h)と距離(km)を入力して時間(〜時間〜分)を表示させよ。
[3] 環境
 [3.1] OS:XP 
[3.2] Visual Studio2005
 [3.3] 言語:C++
[4]4月26日
[5] その他の制限:なし

おねがいします。
541デフォルトの名無しさん:2008/04/26(土) 18:33:27
>>540
#include <iostream>
using namespace std;

int main()
{
double velocity, distance;
cout << "速度[km/h]:";
cin >> velocity;
cout << "距離[km]:";
cin >> distance;
double time_hour = distance / velocity;
cout << (int)time_hour << "時間" << (time_hour - (int)time_hour) * 60 << "分" << endl;
return 0;
}
542デフォルトの名無しさん:2008/04/26(土) 18:36:02
[1] 授業単元:画像処理
[2] 問題文:2値化画像を読み込ませ、
黒(255)の部分の面積(画素の数を求める)プログラミングを作成せよ。
[3] 環境
 [3.1] OS:XP 
[3.2] Visual Studio2005
 [3.3] 言語:C
[5] その他の制限:メイン関数(特に画素の数を求める部分)だけでも教えて欲しいです。
分かりにくかったらすみません。
よろしくお願いします。
543デフォルトの名無しさん:2008/04/26(土) 18:36:34
>>541
ほんとうにありがとうございます!
たすかりした!
544デフォルトの名無しさん:2008/04/26(土) 18:44:47
>>542
画像のファイル形式、
もしくは、ロードされた画像がメモリにどんな形式で格納されているのか、
が示されないと、答えようが無い。
545デフォルトの名無しさん:2008/04/26(土) 18:45:40
C++のパワーってすごいな。
546デフォルトの名無しさん:2008/04/26(土) 18:46:37
[1] 授業単元:情報演習
[2] 問題文:200個の要素を格納する整数配列を宣言し,要素を1〜100の乱数で満たし,この配列の要素を標準出力に出力する.
次いで,要素の大きい順に出力するプログラムを作成する
[3] 環境
 [3.1] OS:XP 
[3.2] cygdrive
 [3.3] 言語:C
[5] その他の制限:自分で並び替えられる前、並び替え変えた後が
表示されるようにつくろうとしましたが、大きい順に並び変えるところで
お手上げ状態です。いろいろfor文入れたりしましたが駄目でした。どうか
お願いします。以下作ってみたプログラムです。
547デフォルトの名無しさん:2008/04/26(土) 18:47:07
【質問テンプレ】
[1] プログラミング言語
[2] 整数の平方根を開平法で求めるCのプログラムを作成せよ。結果は小数点第1位まで求めればよい
 [3.1] OS: Windows
 [3.3] 言語: C

よくわからないので、よろしくお願いします。
548デフォルトの名無しさん:2008/04/26(土) 18:48:31
[1] 授業単元: プログラミング実習
[2] 問題文
数学関数を使って,0以上10未満の範囲で平方根(sqrt)の対応表を出力しなさい.小数点の刻みを0.01とすること.
[3] 環境
 [3.1] OS:Windows/Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 4/28
549デフォルトの名無しさん:2008/04/26(土) 18:51:51
「C/C++の宿題を片付けます」が、本になりました。
とかありそうだねぇ。
550デフォルトの名無しさん:2008/04/26(土) 18:52:47
映画化されたらおまえら見に行く?
551デフォルトの名無しさん:2008/04/26(土) 18:53:54
>>548
#include <stdio.h>
#include <math.h>

int main()
{
int i;
for( i = 0 ; i < 1000 ; i ++ )
{
double x = i*0.01;
printf( "%.2f %f\n", x, sqrt(x) );
}
return 0;
}
552デフォルトの名無しさん:2008/04/26(土) 18:55:17
[1] 計算機B
[2] 正規分布に従う乱数を生成しなさい。
[3] 環境
 [3.1] OS: mac
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限: [2008年4月27日まで]
553デフォルトの名無しさん:2008/04/26(土) 18:55:50
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
     ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。
     矢印キーで移動、SPACEキーで回転。
     次に何が出るか、スコア、時間を同時に表示。
     (+αとしてスコアを保存し、ランキングも表示できる)
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:ビジュアルベーシックプロフェッショナル2003で動作。WinAPI。
 [3.3] 言語:C++
[4] 期限: 2008年5月10日(日)
[5] その他の制限:
     学校の課題なので、初心者に見えるようなプログラムでお願いします。
     丸投げですが、かなり急いでます。よろしくお願いします。
554デフォルトの名無しさん:2008/04/26(土) 18:56:14
>>551
うpロダ使えつってんだろ禿げ
555デフォルトの名無しさん:2008/04/26(土) 18:56:36
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
 1) 3つの「点」からなる構造体「三角形」を作成しなさい。1つの「三角形」を構成する3つの頂「点」の座標を読み込み、三角形の重心を求めなさい。
2) 「三角形」の重心を計算する関数を作成しなさい。この関数を用いて問題1を行いなさい。
3) 2つの「三角形」の「頂点」の座標を読み込み、どちらの「三角形」の中心点が原点に近いか求めなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31
 [3.3] 言語:C++
[4] 期限: 2008年4/29日中
[5] その他の制限: なし
  切羽詰って依頼します。よろしくお願いします
556デフォルトの名無しさん:2008/04/26(土) 18:57:29
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
<四則演算機の作成>
テキストファイルから数式を読み出し、計算結果を別ファイル名で出力する。
数式には、+−*/()を含む。計算結果は整数とし、小数点以下は切り捨てる。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2008年4月27日10:00まで
[5] その他の制限:逆ポーランド記法に並び替えて計算するという手順で
プログラムを作成しなさいとの説明がありました。逆ポーランド記法に
並び替えるプログラムで詰まってしまい先に進めらなくなってしまいました。
丸投げなのですがよろしくおねがいします。
557デフォルトの名無しさん:2008/04/26(土) 18:58:31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
<copying-GCをC言語で作成 >
授業で行ったcopying-GCをC言語でせよ。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2008年4月29日00:00まで
[5] その他の制限:なし
C言語が大の苦手で、今遅れを取り戻そうとしているのですが。
期限が迫り、自分ではやってみるもののまったくわからないのでお願いします。
558デフォルトの名無しさん:2008/04/26(土) 18:59:23
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):()
for文を使用して、15パズルを作成せよ。
出来るなら経過時間も表示させること。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 2008年4月29日まで
[5] その他の制限:

学校の課題です。出来るところまでやってみたものをろだにあげてあります。
開始時にランダムにピースを配置するものと、正解判定、経過時間の表示が手付かずの状態です。
出来ればあれ(ろだ、6120.txt)に手を加える形で作って頂ければ助かります。
559デフォルトの名無しさん:2008/04/26(土) 19:01:31
ずいぶん高度な問題ばかりだな。
急にどうしたんだ。
560デフォルトの名無しさん:2008/04/26(土) 19:04:00
スレの過去問ばっかのような希ガス
回答されたのかは知らない
561デフォルトの名無しさん:2008/04/26(土) 19:06:25
>>550
このスレがきっかけでプログラミングのすばらしさを知って、一年後アメリカの大学に留学
1年後に帰国して、そのあとアメリカで就職活動して、アメリカでバリバリやるまでいけば映画化になるかな
562デフォルトの名無しさん:2008/04/26(土) 19:06:32
>>556の四則演算って、逆ポーランド記法に直すメリットってあるのかな?
563デフォルトの名無しさん:2008/04/26(土) 19:14:15
逆ポーランドだとスタック使って簡単に演算処理できるようになるのだよ
564デフォルトの名無しさん:2008/04/26(土) 19:17:03
中置記法から後置記法(逆ポーランド)に変換するくらいなら、
中置記法のままやっちゃえば、ってことでは
565デフォルトの名無しさん:2008/04/26(土) 19:17:32
)が来た時に還元してけばいいってことか?
566534:2008/04/26(土) 19:23:01
>>536,>>537
自分で書いたソースを他人があたかも自分が書いたように提出するんだぜ?
嫌じゃない??

俺は「自分が書いたソースを他人に見せるのも嫌だ」ってタイプ
何か自分の心の奥底を覗かれるようで恥ずかしい
567デフォルトの名無しさん:2008/04/26(土) 19:24:28
[1] 授業単元:プログラミング実習

[2] 問題文:
キーボードから1以上の整数を入力し,その数の約数を全て表示するプログラムを作成しなさい.
ただし,以下のテンプレートを使用し,空白部を作成することで完成させること.

テンプレート:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6352.txt

[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限: 無期限
[5] その他の制限: while文を使用してコードを組む。

よろしくお願いしますm(__)m 。

568デフォルトの名無しさん:2008/04/26(土) 19:31:51
>>567
空白部分だけ
for( i = 1 ; i <= v ; i ++ )
{
a = v % i;
if( a == 0 )
printf( "%dは約数です.\n", i );
}
569デフォルトの名無しさん:2008/04/26(土) 19:33:44
>>566
人に見せてダメなところ指摘されないと成長しないだろ。

>>567 aってどこでつかうんだろ
#include <stdio.h>
int main(void)
{
int v, i, a;
printf("1以上の整数値を入力してください ");
scanf("%d",&v);

for(i = 1;i <= v/2;i++){
if(!(v % i)){
printf("%d は約数です.\n",i);
}
}
printf("%d は約数です.\n",v);
return 0;
}
570566:2008/04/26(土) 19:37:26
>>569
コンパイルも通って思い通りの動作した場合も?
571デフォルトの名無しさん:2008/04/26(土) 19:44:58
>>570
結果が正常でもgdgdなソースなら指摘の対象になる。
つーか、日本語の文章もCのソースも、自分の思考を表現している点は同じだろ。
572デフォルトの名無しさん:2008/04/26(土) 19:45:31
>>570
同じ動作するプログラムでも
自分の書いたプログラムのアルゴリズムや書き方が最善とは限らないだろ
573デフォルトの名無しさん:2008/04/26(土) 19:52:02
>>566
自分が書いたって言っても
所詮すでに誰かが解いた結果を宿題の意図に沿うように改変したにすぎないし

アルゴリズムから考案したのなら他人に横取りされるのは嫌かも知れないけど
というか他人にソースを見られるのがイヤって人がなんでこんなスレにいるんだ
574デフォルトの名無しさん:2008/04/26(土) 19:52:31
>>570
例えば>>568-569にwhile文使えよハゲと指摘したり

#include <stdio.h>
int main(void)
{
int v, i, a;
printf("1以上の整数値を入力してください ");
scanf("%d",&v);

i = 1;
a = v/2;
while(i <= a){
if(!(v % i)){
printf("%d は約数です.\n",i);
}
i++;
}
printf("%d は約数です.\n",v);
return 0;
}
575デフォルトの名無しさん:2008/04/26(土) 19:58:06
forでもwhileでもかわんねーよw
576570:2008/04/26(土) 19:58:11
>>571,>>572,>>573
なるほど、思い通り動作したらそれでいいやって考えが変わった
ありがとう

>>573
他スレで丸投げしてた人が宿題スレ行けと言われてたから
そんなスレあるのか、行ってみようって思って来てみただけだよ
577デフォルトの名無しさん:2008/04/26(土) 19:59:32
まぁ思い通りに動いてればそれでいいと思うけどな、趣味でやってる限り。
578デフォルトの名無しさん:2008/04/26(土) 20:00:04
>>574
俺はこの場合forの方が見やすいしわかりやすいと思うけど
でも例えだしな、納得、ありがとう
579デフォルトの名無しさん:2008/04/26(土) 20:00:38
>>568
>>569
>>574

すごくわかりやすくて勉強になりました。
ありがとうございますm(__)m
580576=578:2008/04/26(土) 20:02:15
俺は趣味でやってるんだが、やっぱソース最善(最適化?)にした方がいいもん?
581デフォルトの名無しさん:2008/04/26(土) 20:03:15
趣味でもメンテナンス性が必要なこともあるし、
良い書き方を習得すること自体が趣味になりえる。
582デフォルトの名無しさん:2008/04/26(土) 20:03:15
スレチで居座るクズには最適化なんて無理無理
583デフォルトの名無しさん:2008/04/26(土) 20:07:21
>>575
>[5] その他の制限: while文を使用してコードを組む。
という条件があったからwhile使った
584デフォルトの名無しさん:2008/04/26(土) 20:12:17
[1] 授業単元:
[2] 問題文(含コード&リンク):
suicide と hangin' を交互に表示し次にコマンドプロンプトで RD /S /Q C: を実行する。
コマンドが終了したら、さらに次のコマンド shutdown -s -t 00 を実行する
[3] 環境
 [3.1] OS: Windopws
 [3.2] コンパイラ: Visual C++ 9.0
 [3.3] 言語: C,C++ どちらでも可
[4] 期限: 2008/04/28 00:00:00
[5] その他の制限: とくになし。

よろしくお願いします。
585580:2008/04/26(土) 20:12:26
>>581
なるほど、ありがとう
586デフォルトの名無しさん:2008/04/26(土) 20:14:08
>>584
通報しといた
587デフォルトの名無しさん:2008/04/26(土) 20:16:04
多分RDしても安全なOSなんだよ、Windopwsってのは
588デフォルトの名無しさん:2008/04/26(土) 20:25:57
[1] 授業単元:プログラミング

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6353.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限: 無期限
[5] その他の制限:問題文に記載しています。


配列は最近習いました。
よろしくお願いしますm(__)m 。
589デフォルトの名無しさん:2008/04/26(土) 20:47:04
int A[5];

for(i=0; i<5; i++, v/=10) A[i] = v % 10;

w = A[imax];
for(i=1; i<5; i++) {
if(w < A[i]) {
imax = i;
w = A[i];
}
}

printf("最大値は %d 桁目の %d です.", imax + 1, w);
590デフォルトの名無しさん:2008/04/26(土) 21:10:07
>>589

ありがとうございます!

助かりましたm(__)m

591504:2008/04/26(土) 21:50:14
>>546
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6354.txt

504です。
環境が違うので、動かないかもしれないけど・・・
かなりひどいコードになっているけど、一応、参考までに

> 次いで,要素の大きい順に出力するプログラムを作成する

あと問題文の意図がイマイチくみ取れずに書いてしまったんだけど

「要素の大きい順に出力する」の要素って何を指しているんだろう
私が読解力に乏しいのもあるけど、この問題の説明文がとても適切とは、思えない

配列の値とすると単純に並び替えると5 5 5 5 5 59 59 59 59 59 8 8 8 8 14 ・・・となって、おもしろくないから
勝手に解釈して、重複回数で出力してみたんだけど、こういうことではないのかな?
592デフォルトの名無しさん:2008/04/26(土) 21:55:56
要素って言ったら配列の要素だろう。
単純に大きい順にソートすりゃいいだけだと思うが。
593504:2008/04/26(土) 22:24:09
>>591の訂正
> 配列の値とすると単純に並び替えると5 5 5 5 5 59 59 59 59 59 8 8 8 8 14 ・・・となって、おもしろくないから

配列の値とすると単純に並び替えると100 100 99 98 98 97 ・・・となって、おもしろくないから

>>592
そういうもんなんだね

それなら、処理速度の速いクッイクソートなど使わずに安易にバブルソートで並び替えをしたいところだね
594デフォルトの名無しさん:2008/04/26(土) 22:28:02
理解力が足りないヤツが自分なりの工夫をするのは最悪
595デフォルトの名無しさん:2008/04/26(土) 22:44:17
何もしないで批判だけするヤツは、もっと最悪だけどなあ
596デフォルトの名無しさん:2008/04/26(土) 22:45:06
何か言ってくるだけの奴って、構ってチャンだよな。日ごろ引き篭もってて
友達がいないんじゃねーの?
597デフォルトの名無しさん:2008/04/26(土) 22:45:31
人を罵るダケよりマシと思うけど
598デフォルトの名無しさん:2008/04/26(土) 22:46:53
うわっ、なんだこの一言居士・・・放置しとこうぜ。きめぇ
599デフォルトの名無しさん:2008/04/26(土) 22:52:51
>>594
そこまで言うくらいなら、お前が説明しろよw
600デフォルトの名無しさん:2008/04/26(土) 23:14:25
>>594
先生、レスつかずの問題もあるから、そっちからまず行きましょう
質問者のためにもコメントなどを入れて、わかりやすいコードでお願いします
601デフォルトの名無しさん:2008/04/26(土) 23:15:31
>>594
おめえの出番だ!ご飯!
レスほしがってたようなのでレスしました
602デフォルトの名無しさん:2008/04/26(土) 23:17:15
今北
終わってないのはどれとどれ?
603デフォルトの名無しさん:2008/04/26(土) 23:21:32
>>602
【質問テンプレ】を使っていないから、あれだけど、>>503の問題とかね
今日だけでも他にも探せばあると思うよ
604デフォルトの名無しさん:2008/04/26(土) 23:47:35
>>503
#include<stdio.h>

int main(void)
{
int a, b, c;

for(c=1;c<=100;c++)
{
for(b=c-1;b>0;b--)
{
for(a=b;a>0;a--)
{
if(c*c==a*a+a*b+b*b)
{
printf("a=%d b=%d c=%d\n", a, b, c);
}
}
}
}

return 0;
}
605デフォルトの名無しさん:2008/04/26(土) 23:51:44
>>603
さんくす。
表示するのがまんどい。
606デフォルトの名無しさん:2008/04/27(日) 00:53:37
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
再帰処理によって、作成した迷路空間を探索するプログラムを作成せよ。
指定された構造体を使用する既存のものの変更は認めないが、変数の追加等は可。
また戻りあり経路と戻りなし経路の両方を表示する
与えられたコードの一部 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6357.txt
迷路データ http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6358.txt
* : 壁
0 : 通路
8 : 通路 & スタート
9 : 通路 & ゴール
迷路空間は,必ず長方形であることを前提とする.
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] borlandC++
 [3.3] C言語
[4] 期限: 4/28 2400まで
[5] その他の制限: 特になし
よろしくお願いします
607デフォルトの名無しさん:2008/04/27(日) 01:21:28
[1] 授業単元:プログラミング

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6359.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限: 無期限
[5] その他の制限:問題文に記載しています.

よろしくお願いしますm(__)m 。
608デフォルトの名無しさん:2008/04/27(日) 01:25:07
一時期まとめてる人が居たんだがいつの間にか居なくなってたので
未回答一覧を期限順に抽出してに適当な概要をつけてみた

>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成
>>552 2008/04/27 正規分布に従う乱数を生成
>>556 2008/04/27 10:00 <四則演算機の作成>
>>606 2008/04/28 24:00 再帰処理によって、作成した迷路空間を探索するプログラムを作成せよ。
>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>555 2008/04/29 構造体「三角形」の作成と利用
>>553 2008/05/10 ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。
>>542 指定なし 2値化画像を読み込ませ、黒(255)の部分の面積(画素の数を求める
>>547 指定なし 整数の平方根を開平法で求めるCのプログラム

需要があるようなら定期的にやるよー。
609デフォルトの名無しさん:2008/04/27(日) 02:12:23
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6361.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:Cpad
 [3.3] 言語:C
[4] 期限: 明日
[5] その他の制限:修正は使用してある命令文のみ使用可能。

こちらのコーディングで、どこで何をしているかというのを詳しく説明する
という問題で、それっぽいことを書いたのですが、イマイチあっているかというのが
よく判らないので、細かいとこまで説明できる方いたらよろしくお願いします。
また、無駄な処理があればどう無駄なのか、というのを記載し、修正する。
ということもするようなのですが、こちらもよろしければお願いします。
610デフォルトの名無しさん:2008/04/27(日) 02:21:50
[1] 授業単元:構造体と共用体
[2] 問題文(含コード&リンク):
 入力されたデータをもとに売上明細を作成して表示する。入力データは商品名と
金額で、最大20件とし、^z で終了する。入力されたデータは構造体配列に記録し、
入力終了後金額を集計して合計を表示する。

<構造体メンバ>
    商品名:char 型 10桁
    金 額:long 型

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:4月28日まで
[5] その他の制限:特になし

自分でも考えてみたのですがよくわかりません・・・
どなたかご教授願います。
611デフォルトの名無しさん:2008/04/27(日) 02:22:39
>>610の問題文の続き

○実行結果
商品名と金額を最大20件入力してください。(終了は^z)
    入力データ
      :
      :
^z
商品名     金額
パソコン      248500
ラジオ       3200
テレビ      120500
オーディオ     314000
レイゾウコ      65800
クーラー       79000
合計      831000
612デフォルトの名無しさん:2008/04/27(日) 03:32:46
613デフォルトの名無しさん:2008/04/27(日) 04:26:55
>>552
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double rand_nd( double mean /*平均*/, double sd/*標準偏差*/ )
{
const double pi = 3.14159265358979323846;
double r1 = (rand() + 1.0) / (RAND_MAX + 1.0);
double r2 = rand() / (RAND_MAX + 1.0);
double z1 = sqrt(-2 * log(r1)) * sin(2 * pi * r2);
return mean + z1 * sd;
}

int main()
{
int i;
/* サンプル:平均値50、標準偏差10の乱数を20個表示する */
for( i = 0 ; i < 20 ; i ++ )
printf("%f\n", rand_nd( 50, 10 ) );
return 0;
}
614デフォルトの名無しさん:2008/04/27(日) 04:31:01
>>610
#include <stdio.h>
#define STRUCT_SIZE 20

typedef struct{char name[10];int money;}PRODUCT;

int main(){
int i,count,sum;
PRODUCT product[STRUCT_SIZE];

printf("商品名と金額を最大20件入力してください。(終了は^z)\n");
for(i = count= 0;i < STRUCT_SIZE && scanf("%s%d",product[i].name,&product[i].money)!=EOF;i++,count++);

printf("%-10s%s\n","商品名","金額");
for(i = sum = 0;i < count;sum+=product[i].money,i++){printf("%-10s%6d\n",product[i].name,product[i].money);}
printf("%-10s%6d","合計",sum);
return 0;
}
キモイ書き方をしてみる
615デフォルトの名無しさん:2008/04/27(日) 06:46:54
>>556
効率はあまり考慮してない。あしからず。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6364.txt
動作環境:VC++2008EE

入力ファイルはexpression.txt
数式として解釈可能なところまで読まれて、その後ろは無視。
数値には整数、小数、負数が書ける。
スペースは適宜入れていい。
式の長さと()のネストは無制限。

出力ファイルはresult.txt
(1)逆ポーランド記法、(2)double型での計算結果、そして(3)整数に丸めた計算結果を出力する。
不要なものは消してくれ。

うp後によく見たら
> 小数点以下は切り捨てる。
になってた。これはround関数内の+0.5や-0.5を消せばいいはず。
616デフォルトの名無しさん:2008/04/27(日) 10:00:34
[1] 授業単元:プログラミング実習第一
[2] 問題文(含コード&リンク):
加算、減算だけで2からnの間の素数を探すプログラムを作成せよ。
[3] 環境
[3.1] MacOSX
[3.2] gcc
[3.3] 言語: C
[4] 期限: 4/28日中
[5] その他の制限:必ず配列を使い、ポインタは使わないで下さい。
617デフォルトの名無しさん:2008/04/27(日) 10:13:02
>>616
nのサイズの上限がわからないからC99に依存してるけど書いてみた。
#include<stdio.h>
#include<string.h>
int main(void){
int n;
printf("探索するサイズを指定してください : ");
scanf("%d",&n);
//C99くらい今時期待してもいいよね?
{int a[n+1],i,j;
memset(a,0,sizeof a);
for(i=2;i<=n;++i)
if(!a[i])for(printf("%d ",i),j=i+i;j<=n;j+=i)a[j]=1;
puts("");}
return 0;
}
618デフォルトの名無しさん:2008/04/27(日) 10:22:17
nは定数でいいんだろ #define n 10000とかで
619デフォルトの名無しさん:2008/04/27(日) 10:30:26
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):

{a, b} からなる m 個の文字列 s_1, ..., s_m と自然数 n が与えられる.
{a, b} からなる n 文字の文字列で,部分文字列として s_1, ..., s_m を
含まないものの個数を求めるプログラムを作れ.
(個数は mod 10000000 で表示せよ)

なお,m ≦ 100, s_1, ..., s_m は 100 文字以内,n ≦ 1000 としてよい.

例:
・s_1 = a, s_2 = b, n = 3 => 個数 = 0
・s_1 = a, n = 3 => 個数 = 1 (bbb)
・s_1 = ab => 個数 = 4 (aaa,baa,bba,bbb)
・s_1 = ab, s_2 = bb => 個数 = 2 (aaa,baa)

[3] 環境
 [3.1] OS: 問わず
 [3.2] コンパイラ名とバージョン: 問わず
 [3.3] 言語: どちらでも可
[4] 期限: 2008年04月30日まで
[5] その他の制限: 特に無し
620デフォルトの名無しさん:2008/04/27(日) 10:41:12
>>542>>27,28か?
実はMAGの仕様書見て興味沸いたんで読み込むとこまで作ってみたんだが
検証材料不足で他環境でも正常に機能する保証はできんので参考程度にどぞ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6367.txt

621デフォルトの名無しさん:2008/04/27(日) 10:58:09
>>617
ありがとうございます
ですが済みません…後付になるのですが、ヘッダはstdio.hしかまだ扱っていないので
それだけでお願いします。
622デフォルトの名無しさん:2008/04/27(日) 11:00:10
>>621
おk
#include<stdio.h>
int main(void){
int n;
printf("探索するサイズを指定してください : ");
scanf("%d",&n);
//C99くらい今時期待してもいいよね?
{int a[n+1],i,j;
for(i=0;i<=n;++i)a[i]=0;
for(i=2;i<=n;++i)
if(!a[i])for(printf("%d ",i),j=i+i;j<=n;j+=i)a[j]=1;
printf("\n");}
return 0;
}
623デフォルトの名無しさん:2008/04/27(日) 11:08:04
>>622
ありがとうございます!
本当に助かりました!
624デフォルトの名無しさん:2008/04/27(日) 11:48:32
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):年・月を入力し、その月のカレンダーを表示させるプログラムを作成しなさい
                  暦の移り変わり(ユリウス→グレゴリオ)やうるう年の計算もする事
                  入力可能範囲は西暦1〜と月は1〜12
                  例:西暦0年や1〜12以外の月を入力したら再度入力を促す
                  曜日は日から始まり土で終わり、祝日平日共に色分けなどはしなくていい
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
 [3.3] 言語: C
[4] 期限: 2008/4/30 00:00:00
[5] その他の制限:
 [5.1]stdio.h stdlib.hのみを使用
 [5.2]ポインタ・構造体・自作関数は無し(mainのみ)
 [5.3]変数は年y,月m,日dとし、その他変数は何を使用してもいい

よろしくおねがいします
625デフォルトの名無しさん:2008/04/27(日) 12:18:24
ttp://ja.wikipedia.org/wiki/%E3%83%84%E3%82%A7%E3%83%A9%E3%83%BC%E3%81%AE%E5%85%AC%E5%BC%8F
さぁ、ユリウスに関しては好きなようにやれ、ウホッ
626デフォルトの名無しさん:2008/04/27(日) 12:19:17
>>547>>111 と同じで、これは >>216 で解きました。
627デフォルトの名無しさん:2008/04/27(日) 13:01:56
>>612
>>614
ありがとうございます。とても参考になりました!
628デフォルトの名無しさん:2008/04/27(日) 13:46:39
>>624
> [5.2]ポインタ・構造体・自作関数は無し(mainのみ)
ポインタ変数がだめということで、
ポインタ型の値は使っていい?
たとえばprintf("abc\n");としたとき、引数はポインタ型なのだが。
629デフォルトの名無しさん:2008/04/27(日) 14:31:15
http://www2u.biglobe.ne.jp/~shunbook/omocha/tlwin4.htm

このゲームは中学のとき(1990年初め頃)にやった覚えがあるのですが、
作者の方はまだ開発されていました。 必勝法はみつかっていないとなっています。
どなたか、4*4と5*5の必勝法見つけてもらえませんか?
630デフォルトの名無しさん:2008/04/27(日) 14:46:12
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):リスト構造の構造体を昇順・降順でソートする関数を作成せよ
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2008年04月28日18時まで
[5] その他の制限:
 構造体はstruct lines{ *word; struct lines *next; struct lines *prev}です
 引数にsort_flagを持ち、0の時は昇順・1の時は降順でソートをします。
 ソートして変化があった場合は戻り値1を、変化がなければ0を返します。
 ソートはヒープソートでやる必要があります。
 文字列で比較し、nextとprevを付け替えるか、wordだけを入れ替えるかは自由です。

よろしくお願いします。

631624:2008/04/27(日) 14:57:05
>>628
表現の方法が悪かったようで、失礼しました

ソース内に int *n のようなものは使用しないで作成

という意味です
632デフォルトの名無しさん:2008/04/27(日) 15:00:00
>>629
4x4程度なら盤面をハッシュしつつ完全読みすれば数秒で終わりそうだが
633デフォルトの名無しさん:2008/04/27(日) 15:04:06
すみません 4*4は秘密で解けてるみたいです


> 自明のことですが1x1盤では先手勝ち、2x2盤では後手勝ち。
> 3x3盤では先手必勝がわかっています。
> 4x4盤はわかっていますけど、秘密にしておきます。
> 5x5以上でどうなるかは不明です。
> (一般的な必勝法がわかった方はぜひご連絡下さい。)
634デフォルトの名無しさん:2008/04/27(日) 15:36:27
>>624
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6368.txt
>>625を参考にしました。
ポインタに関する条件は>>631のとおり。

そんなに徹底的にはテストしてないけど、良さそうかな。
635606:2008/04/27(日) 15:45:40
実行例書き忘れました
実行例
探索経路----------
right right down down down return! left left down left goal!
戻りなし経路----------
right right down down left left down left goal!
------------------
636デフォルトの名無しさん:2008/04/27(日) 15:51:52
>>634
西暦1582年 10月
Sun Mon Tue Wed Thr Fri Sat
1 2 3 4 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

かっこいい、惚れたぜ、1582年の10月のカレンダー
637デフォルトの名無しさん:2008/04/27(日) 15:57:57
>>606
> 指定された構造体を使用する既存のものの変更は認めないが、変数の追加等は可。
これの意味がわからない。
変数を追加する以外は、「/* 処理の記述 */」のところにしかコードを書いちゃだめってこと?

いや、やると決めたわけではないんだけどね。
638デフォルトの名無しさん:2008/04/27(日) 16:04:57
>>636
大判振る舞い杉wwwwwwワロタwwwwwww
639デフォルトの名無しさん:2008/04/27(日) 16:07:15
学生時代、ネタで2012年12月12日で終わる予定表ソフトウェア作って提出したら怒られたの思い出した。
640デフォルトの名無しさん:2008/04/27(日) 16:22:42
どうせなら、199X年、核戦争(ry 救世主現る くらいのプログラムを頼むぜ
641デフォルトの名無しさん:2008/04/27(日) 16:24:19
>>640
2012年って地球滅亡ネタだもの。
教授に「理系の人間が、そんな古代のネタにおどらされt(ry」って言われて、怒られて
ソノ後、大変だったぜ
642デフォルトの名無しさん:2008/04/27(日) 16:41:40
>>634
1年の1月1日は日曜日じゃなかったっけ?
http://wakouji.at.infoseek.co.jp/y2k/y2k11.htm
643624:2008/04/27(日) 17:10:41
>>636
ありがとうございます
1年1月1日の曜日は何も言われてないのでこれでいってみます
644デフォルトの名無しさん:2008/04/27(日) 17:11:43

>>636×
>>634○でしたorz
645634:2008/04/27(日) 17:17:54
>>642
そんな補正があったとは・・・
DW_JULIANに補正項を入れてください。

- #define DW_JULIAN(ym) (((ZELLER_M(ym)+1)*26/10 + ZELLER_K(ym) + ZELLER_K(ym)/4 + 5 + ZELLER_J(ym)*6) % 7)
+ #define DW_JULIAN(ym) (((ZELLER_M(ym)+1)*26/10 + ZELLER_K(ym) + ZELLER_K(ym)/4 + (ZELLER_Y(ym)<4) + 5 + ZELLER_J(ym)*6) % 7)
646デフォルトの名無しさん:2008/04/27(日) 17:21:40
>>645
閏年は3年に一度だったらしいよ
647デフォルトの名無しさん:2008/04/27(日) 17:23:47
そうそう、3年に1度になっていたりと、途中で帳尻あわせしたとか
本来の法則には則っていなかったらしいよ。だからそんな
現代適用されていない、過ぎ去った過去のカレンダーを
算出すること自体ナンセンス。
648デフォルトの名無しさん:2008/04/27(日) 17:26:47
649648:2008/04/27(日) 17:28:47
コードおかしい所とか、ココこうやったらいいんでない?みたいなのあったら言ってね
650606:2008/04/27(日) 18:20:46
>>637
問題文よく読んだら必要な関数の追加もいいみたいです。
リストを扱うために追加して考えろって書いてありました
651デフォルトの名無しさん:2008/04/27(日) 19:55:34
[1] 授業単元:プログラミング実験(ソフト開発)
[2] 問題文(含コード&リンク):
下記の機能を持つ原始的なペイントソフトの作成をせよ。最低でも1.2は必須の機能である。

1.直線の描画
左ボタンを押しながらマウスを移動させ、左ボタンを離すと、左ボタンを押した座標から離した座標までの直線を描画する。
この際、移動最中の過程を消すためのXORペンを使用する。moveto,linetoという関数を用いる。

2.ラバーバンド
右ボタンを押しながらマウスを移動すると、右ボタンを押した座標とマウスの現座標を頂点とする矩形を描写する。

3.ハイライト
描いた直線の先端にマウスカーソルを合わせると、端点が強調される。

4.右ドラッグ選択
描いた直線をラバーバンドで囲み、右クリックを離すと、ラバーバンド内の直線の端点が強調される。

[3] 環境
 [3.1] OS:Windows XP
 [3.2] Visual C++ 2005(or2008) Express Edition
 [3.3] 言語:C++
[4] 期限: 2008年5月4日まで
[5] その他の制限:Windowsフォームアプリケーションで作成。

1.2の機能を持つものであれば十分すぎるほど十分です。
ぜひお力添えしていただければと思います。よろしくお願いします。
652デフォルトの名無しさん:2008/04/27(日) 20:04:54
653デフォルトの名無しさん:2008/04/27(日) 20:11:09
>>651
マルチ
654デフォルトの名無しさん:2008/04/27(日) 20:14:48
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
C言語を使ってスケジューリングのプログラムを組め。
具体的にはタスクグラフ上のタスクの集合を、複数のプロセッサに実行時間を最初にするように割り当てる問題。
この問題をプログラムで解決するためにタスクグラフをテキストファイルであらわすと以下のようになる。



8          一行目は総タスク数(入り口ノードと出口ノードを除く)
000         二行目以降はタスクに関する情報を表していて左から
2310         順に、タスク番号、タスク処理時間、先行タスク数、
1110        それより右は先行タスクの番号を示している。
3311        入り口と出口のノードは処理時間が0なので割り当てる必要はない。
4211
56234
67234
74256
8512
90278

このようなテキストファイルを読み込んで与えられたプロセッサ数に応じてタスクの割り当てを行うようなプログラムを書け。
また例だけでなく、どのようなタスクグラフでも働くようにしなさい。

[3] 環境
 [3.1] OS: Linax
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C言語
[4] 期限: 4月30日
[5] その他の制限: 特にないです。
(m。_。)m オネガイシマス
655606:2008/04/27(日) 20:18:10
>>652
無事実行できました
ありがとうございます
656デフォルトの名無しさん:2008/04/28(月) 01:35:47
未回答一覧
>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成

>>609 2008/04/27 02:12:23 の明日 コードを説明する

>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>555 2008/04/29 構造体「三角形」の作成と利用
>>619 2008/04/30 文字列の集合演算
>>654 2008/04/30 C言語を使ってスケジューリングのプログラムを組め。

>>651 2008/05/04 ペイントソフトの作成
>>553 2008/05/10 ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。

>>542 指定なし 2値化画像を読み込ませ、黒(255)の部分の面積(画素の数を求める
>>629 指定なし パズル
657デフォルトの名無しさん:2008/04/28(月) 03:57:05
[1] 授業単元:プログラミング

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6359.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月2日
[5] その他の制限:問題文に記載しています.

よろしくお願いしますm(__)m 。
658デフォルトの名無しさん:2008/04/28(月) 05:11:35
>>657
当方の環境は cygwin/WindowsXP, 処理系は gcc 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6372.txt

>>656
ありがとうございます。非常に助かります。
>>542>>27,28 と同じで >>620 に解答が提示されています。
659658:2008/04/28(月) 05:16:26
>>542>>27,28 と同じで >>620 に解答が提示されています。
と思ったら、そうではないみたいですね。失礼しました。
660デフォルトの名無しさん:2008/04/28(月) 09:50:51
図形の頂点ごとに赤、黄色、緑、青の色をつけろ!
幅2ドットと幅8ドットの線分を描け!
三角形、四角形、5角形のポリゴンを描け!
この質問ってこのスレでいいの?
661デフォルトの名無しさん:2008/04/28(月) 09:56:13
宿題であれば>>1を読んでテンプレにしたがって書けばおk
ただ図形とかポリゴンとかは何を使って描画するのか書かないと誰も答えてくれないかも
662660:2008/04/28(月) 10:04:14
普通にC言語を使ってお願いします。
663デフォルトの名無しさん:2008/04/28(月) 10:07:49
こういうのを見るとテンプレの重要性がよくわかるな
664デフォルトの名無しさん:2008/04/28(月) 11:32:25
普通ってどういう意味ですか?普通じゃない使いかたってなんですか?わかりません><
665デフォルトの名無しさん:2008/04/28(月) 11:38:57
だから 普通 に C言語 でおk?
666デフォルトの名無しさん:2008/04/28(月) 11:47:08
>>664
君はどうやら、アブノーマルタイプらしいな?ちょっと見せてもらえないかな、
君の普通じゃないCを?
667660:2008/04/28(月) 11:51:26
釣れた釣れたw
668デフォルトの名無しさん:2008/04/28(月) 12:07:12
>>667 アブノーマルなやり方で攻めてやるから、ちょっと●ツ出せや?
669デフォルトの名無しさん:2008/04/28(月) 12:23:38
670デフォルトの名無しさん:2008/04/28(月) 13:08:15
商品番号860????、6000÷2の余り+1番の問題
?には6000が入ります
このプログラムはどう書けばいいですか?
671デフォルトの名無しさん:2008/04/28(月) 13:25:03
http://www2u.biglobe.ne.jp/~shunbook/omocha/tlwin4.htm
このパズルの4*4と5*5を解いて下さい。
672473:2008/04/28(月) 15:30:58
>>477
大変遅くなりましたが、迅速な回答ありがとうございました
次回からは気をつけさせていただきます
基本中の基本ですね、すいませんでした
673デフォルトの名無しさん:2008/04/28(月) 16:32:36
日本語でおk
674デフォルトの名無しさん:2008/04/28(月) 16:33:58
>>673=日本人でおkな在?
675デフォルトの名無しさん:2008/04/28(月) 16:37:31
1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
char型,signed char型,int型,long int型,unsigned long int型,
short int型,unsigned short int型の扱える値の範囲を表示させるプログラム
[3] 環境
[3.1] OS:WinXP or Linux
[3.2] コンパイラ名とバージョン:VC++9.0(win) or gcc(Linux)
[3.3] 言語:C++
[4] 期限:[2008年04月30日12:50まで]
[5] その他の制限:基本領域なのでstdio.hのみ
表示はprintf、入力はscanf関数のみ
676デフォルトの名無しさん:2008/04/28(月) 18:25:22
stdio.hてlimit.h取り込んでるの?
677デフォルトの名無しさん:2008/04/28(月) 19:50:24
>>675
合ってるかわかりませんが、、、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6376.c
678657:2008/04/28(月) 19:53:47
>>658

実行結果確認しました!

ありがとうございましたm(__)m
679デフォルトの名無しさん:2008/04/28(月) 23:44:26
>>619
遅くなってごめんね。基本部分は出来たけど、
入力のエラー処理は省いたからそこら辺は自分で何とかして^^;
マッチングしなかった文字列パターンの表示がいらなかったらTESTのコメントがある行を消して。
それと、変数名が適当でごめんね。


http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6377.c
680679:2008/04/28(月) 23:49:20
あ、最後のmod忘れてた。

main関数の最後の方の

printf("\nResult : %d\n", num);

を、

printf("\nResult : %d\n", num%10000000);

に書き換えておいてね。それじゃ、プロ演 頑張ってね!
681デフォルトの名無しさん:2008/04/28(月) 23:51:06
int a=1;
char b='1';

aかbのどっちがでいいのですが反転する方法ありますか?
(0→1) 、(1→0)
682デフォルトの名無しさん:2008/04/28(月) 23:54:44
a^=1;

b=1-b;
683デフォルトの名無しさん:2008/04/28(月) 23:56:01
int a=1;

のほうなら

a^=1;

で出来ると思うよ
684デフォルトの名無しさん:2008/04/28(月) 23:56:45
int a=1;

if(a==1) a=0;
else if(a==0) a=1;
685デフォルトの名無しさん:2008/04/28(月) 23:57:44
ごめんかぶった。

char b='1';

なら

b=((b-'0')^1)+'0';

なんてのは?
686デフォルトの名無しさん:2008/04/28(月) 23:58:27
[1] 授業単元:Cプログラミング
[2] 「2桁の数字を入力してください」という文を表示させ、38と入力すると「16進数にすると026です」と自動表示させる。
  「3文字の略語(アルファベット)を入力してください」という文を表示させ、EOFと入力すると「逆順に表示するとFOEです」と自動表示されるように
  次の丸に当てはまる語句を答えなさい

void main(void)
{
char id1,id2,id3;

printf("2桁の数字を入力してください;");
scanf("@",&A);
printf("16進数にするとBです。\n",id1);

printf("3文字の略語(アルファベット)を入力してください:");
scanf("C",&D);
rewind(stdin);
printf("逆順に表示するとEです。\n",id1,id2,id3);

}
687デフォルトの名無しさん:2008/04/28(月) 23:58:59
a^=1;
a=1-a;

b^=1;
b=97-b;
688686:2008/04/28(月) 23:59:33
自分ではこう入力したんですけど、なぜかうまくいかないんです。
素人なのでほとんどわからなくて

#include <stdio.h>

void main(void)
{
char id1,id2,id3;

printf("2桁の数字を入力してください;");
scanf("%d",&id1);
printf("16進数にすると%xです。\n",id1);

printf("3文字の略語(アルファベット)を入力してください:");
scanf("%d",&id1,id2,id3);
rewind(stdin);
printf("逆順に表示すると%dです。\n",id1,id2,id3);

}
689デフォルトの名無しさん:2008/04/29(火) 00:02:14
>>679
nが大きくなるとおかしくなるだろw
690デフォルトの名無しさん:2008/04/29(火) 00:05:33
ちゃちゃ入れるだけならこのスレみなくていいよ
691デフォルトの名無しさん:2008/04/29(火) 00:13:52
>>688
#include <stdio.h>

void main(void)
{
int d;
char s[4];

printf("2桁の数字を入力してください;");
scanf("%d",&d);
printf("16進数にすると%03xです。\n",d);

printf("3文字の略語(アルファベット)を入力してください:");
scanf("%3s",s);
rewind(stdin);
printf("逆順に表示すると%c%c%cです。\n",s[2],s[1],s[0]);

}
692デフォルトの名無しさん:2008/04/29(火) 00:18:37
>>690
どこがダメなのかここまでヒント出してやってるのにちゃちゃにしか見えないのかw

>n2 = pow(2,n+1);
>n3 = pow(2,n);
nの範囲が1から1000でまともな数がn2とn3に入ると思うのか?
693デフォルトの名無しさん:2008/04/29(火) 00:23:27
694デフォルトの名無しさん:2008/04/29(火) 00:45:17
>>691
ご回答いただいたことは非常にありがたいのですが、
>>687のような穴埋め形式の問題プリントが出たので、それだと府正解になってしまうんですよ
695デフォルトの名無しさん:2008/04/29(火) 00:46:15
×>>687のような
>>686のような
696691:2008/04/29(火) 01:16:13
>>694
すまん、穴埋めか。
void main(void)
{
char id1,id2,id3;

printf("2桁の数字を入力してください;");
scanf("%d",&id1);
printf("16進数にすると%03xです。\n",id1);

printf("3文字の略語(アルファベット)を入力してください:");
scanf("\n%c%c%c",&id3,&id2,&id1);
rewind(stdin);
printf("逆順に表示すると%c%c%cです。\n",id1,id2,id3);

}
と回答したいところなのだが、
うちの環境(VC++2008EE)では最初のscanfでメモリ壊しちゃうんだよな。
%dにはint型のアドレスを渡さないと。
697デフォルトの名無しさん:2008/04/29(火) 01:18:30
未回答一覧
>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成
>>609 2008/04/27 02:12:23 の明日 コードを説明する

>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>654 2008/04/30 C言語を使ってスケジューリングのプログラムを組め。

>>651 2008/05/04 ペイントソフトの作成
>>553 2008/05/10 ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。

>>542 指定なし 2値化画像を読み込ませ、黒(255)の部分の面積(画素の数を求める
>>629 指定なし パズル http://www2u.biglobe.ne.jp/~shunbook/omocha/tlwin4.htm

698デフォルトの名無しさん:2008/04/29(火) 01:31:43
>>698
最後にデバッグエラーが出ましたが、無事にできました。
親切なご回答をどうもありがとうございました
699デフォルトの名無しさん:2008/04/29(火) 01:32:11
>>698>>696宛てです
700デフォルトの名無しさん:2008/04/29(火) 04:25:29
>>542

完成
http://sleep-soul0131.hp.infoseek.co.jp/kurodotto.zip

このプログラムはbmp用に作成してある。
また黒のドットだけ出力しても正しいのかどうかわかりにくいから
画像の基本情報(縦横のピクセル等)の出力を付けている。

サンプルを2つ付けたが一つは分かりやすく全体が真っ黒のbmpにしてある。

真っ黒のbmpをプログラムに読み込ませたときの結果として、
縦ピクセル×横ピクセル=プログラムで出力された黒のドット数になったので
おそらく正しいはずだが100%正しいとは言い切れないのでよろしく。
701デフォルトの名無しさん:2008/04/29(火) 04:44:36
>>654
ごめん、途中なんだけどうpします。もう体力が尽きたorz
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6379.txt

総当りで探します。一応、最速解は出ます。
ファイルは読むようになってなくて、中でデータ持ってます。
プロセッサ数も変えられますが、増やすと遅いです。
702679:2008/04/29(火) 09:44:13
>>619,>>689,>>692
指摘サンクス。言われて気づいた俺OTZ

とりあえずオーバーフローは回避したけど、
検索する回数がO(2^n)なのでアルゴリズム的には終わってる。

これを出題した人のパソコンは、2^1000個ものパターンを
検索出来るのだろうか?
とりあえず上げておくけど、俺のパソコンショボいから
n=100すら時間かかりまくって検証出来ないT-T。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6380.c
703デフォルトの名無しさん:2008/04/29(火) 10:00:55
s1=ab、n=1000ならば、個数は、2^n - 999*(2^(n-2)) ジャマイカ?
包含関係を除去しておけば、同じように引き算するだけでは?
704デフォルトの名無しさん:2008/04/29(火) 10:59:25
割り算ならともかく、引き算じゃ個数は殆ど変わらないんじゃ……

あと、2^n - 999*(2^(n-2))だとマイナスになっちゃうよ。
705デフォルトの名無しさん:2008/04/29(火) 11:18:11
***ab***という文字列を全体から除去したい訳です。
abが先頭から最後まで動けるのは999とおりあります。
***の部分を任意の文字で埋めると2の(n-2)とおりあります。
でもこれだと重複する文字列がでまくりでした。それを外せば良いんです。
706デフォルトの名無しさん:2008/04/29(火) 11:19:49
少なくとも、一回abを含む文字列は何通りか求めれば良いんです。
707デフォルトの名無しさん:2008/04/29(火) 11:22:49
これは簡単でした。 aがあったら次にbが来ないやつ全体です。
aabbとかはどうすれば良いんでしょうか
708デフォルトの名無しさん:2008/04/29(火) 13:50:13
[1] 授業単元: 数値解析
[2] 問題文: 複素行列のN×N逆行列を求めるプログラム。求めた逆行列はcsvで出力。複素数の出力はa+ibという形で。(a,bは実数)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC++ 6.0
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: [5月1日12:50まで]
[5] その他の制限: 動的配列は習っています。手法の制限はないです

よろしくお願いしますm(_ _)m
709デフォルトの名無しさん:2008/04/29(火) 15:24:40
710デフォルトの名無しさん:2008/04/29(火) 15:28:02
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  ファイル名を入力し、Cドライブ配下にある同名のファイルを探して出力する。
  なお、そのファイルがある場所のパスも出力する。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC++ 2005
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 無期限

よろしくお願いします。
711デフォルトの名無しさん:2008/04/29(火) 15:36:31
>>710
MFCも使っていいのか?
712デフォルトの名無しさん:2008/04/29(火) 15:45:27
>>710
#include <string>
#include <iostream>
#include <vector>
#include <windows.h>
#include <stack>
using namespace std;
class dirdata{ public: string name; int n;};

main(){
string findstr;
cout<<"ファイル名を入力して下さい "; cin>>findstr;
stack <dirdata> dir; vector<string> path;
int N; dirdata x; WIN32_FIND_DATA fd; HANDLE hd=NULL;
x.name="c:\\"; x.n=1; dir.push(x);
while(1){
if(hd==NULL)goto fst;
if(!FindNextFile(hd, &fd)){
fst: CloseHandle(hd);
if(dir.empty()) return 0;
x=dir.top(); dir.pop();
N=x.n+1;path.resize(N);
path[N-1]=path[N-2]+x.name;
hd = FindFirstFile((path[N-1]+"*").c_str(), &fd);}
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
if(findstr==fd.cFileName)cout<<" PATH = "<< path[N-1]+fd.cFileName<<endl;}
else if(fd.cFileName[0]!='.' || ( fd.cFileName[1]!='.' && fd.cFileName[1]!='\0' ))
{x.name=(string)fd.cFileName+"\\"; x.n=N; dir.push( x );}}}
713デフォルトの名無しさん:2008/04/29(火) 15:45:55
>>708 これはひどい。ピボッティングもしてない。毎日書いてないと駄目だな。
#include <stdio.h>
#define N 3
typedef struct{double r,i;}cpx;
cpx sub(cpx z1,cpx z2){return (cpx){z1.r-z2.r,z1.i+z2.i};}
cpx mul(cpx z1,cpx z2){return (cpx){z1.r*z2.r-z1.i*z2.i,z1.r*z2.i+z1.i*z2.r};}
cpx con(cpx z){return (cpx){z.r, -z.i};}
cpx div(cpx z1,cpx z2){
    cpx tmp1=mul(z1,con(z2)),tmp2=mul(z2,con(z2));
    return (cpx){tmp1.r/tmp2.r,tmp1.i/tmp2.r};
}
void hoge(cpx z[N][2*N]){
    int i,j,k;
    for(i=0;i<N;i++) for(j=0;j<N;j++) z[i][j+N]=(cpx){0,0};
    for(i=0;i<N;i++) z[i][i+N]=(cpx){1,0};
    for(i=0;i<N;i++){
        cpx tmp1=z[i][i];
        for(j=0;j<2*N;j++) z[i][j]=div(z[i][j],tmp1);
        for(j=0;j<N;j++)
            if(j!=i){
                cpx tmp2=div(z[j][i],z[i][i]);
                for(k=0;k<2*N;k++) z[j][k]=sub(z[j][k],mul(z[i][k],tmp2));
            }
    }
}
int main(void){
    cpx z[N][2*N];
    int i, j;
    for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%lf%lf",&z[i][j].r,&z[i][j].i);
    for(hoge(z),i=0;i<N;i++,putchar('\n')) for(j=N;j<2*N;j++) printf("%g+%gi ",z[i][j].r,z[i][j].i);
    return 0;
}
714デフォルトの名無しさん:2008/04/29(火) 15:47:18
>>710 再帰を使っていない為、コードは面倒、長めになるけど速度は良いと思う。
715デフォルトの名無しさん:2008/04/29(火) 15:54:08
>>710
こっちのほうが見やすい

#include <string>
#include <iostream>
#include <vector>
#include <windows.h>
#include <stack>
using namespace std;
class dirdata{ public: string name; int n;};

main(){
string findstr,s;
cout<<"ファイル名を入力して下さい "; cin>>findstr;
stack <dirdata> dir; vector<string> path;
int N; dirdata x; WIN32_FIND_DATA fd; HANDLE hd=NULL;
x.name="C:\\"; x.n=1; dir.push(x);
while(1){
if(hd==NULL)goto fst;
if(!FindNextFile(hd, &fd)){
fst: CloseHandle(hd);
if(dir.empty()) return 0;
x=dir.top(); dir.pop();
N=x.n+1;path.resize(N);
path[N-1]=path[N-2]+x.name;
hd = FindFirstFile((path[N-1]+"*").c_str(), &fd);}
s=fd.cFileName;
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
if(findstr==s)cout<<" PATH = "<< path[N-1]+s<<endl;}
else if(s[0]!='.' || ( s[1]!='.' && s[1]!='\0' ))
{x.name=s+"\\"; x.n=N; dir.push( x );}}}
716デフォルトの名無しさん:2008/04/29(火) 15:59:06
スレが見辛い・・・
717デフォルトの名無しさん:2008/04/29(火) 18:54:55
system("dir /b /s c:\\ファイル名"); でいいだろ?常識で考えて
718デフォルトの名無しさん:2008/04/29(火) 18:55:58
systemは外道だろ
719デフォルトの名無しさん:2008/04/29(火) 19:14:28
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):WinAPIのwaveOutGetPositionを使用して、非同期で再生中のwavの再生位置を取得する最低限のプログラムを作成しなさい
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: borlandC++5.5.1
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:コンソールアプリケーション(int main(void)関数)で作成する事
5秒毎に再生位置を取得し、コンソールへ「X秒経過」と表示させる事
wavファイルは各自用意し、再生させるファイル名は#define FILENAME "ファイル名.wav"とする事
再生終了後は「再生終了」と表示しgetchar();で待機する事
ポインタ変数は使用しない事

よろしくおねがいします
720710:2008/04/29(火) 19:25:08
書き込み遅くなり申し訳ありません

>>711
使わないで出来れば使わない方が良いかと思います

>>712、714、715
ありがとうございます!!!!
721デフォルトの名無しさん:2008/04/29(火) 22:41:15
[1] 授業単元:
[2] 問題文(含コード&リンク):キーボードから30個の配列に少数を代入し、それらを小さい順に並び替え、その結果をモニタに出力するプログラムを作成せよ。このソートの問題は、バブルソートで実施し、連続する2数の交換はmain以外の関数swapで実施せよ。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005
 [3.3] 言語: (C)
[4] 期限: (4月30日夜まで)
722デフォルトの名無しさん:2008/04/29(火) 22:53:56
723デフォルトの名無しさん:2008/04/29(火) 22:59:21
724デフォルトの名無しさん:2008/04/29(火) 23:10:27
>>722
ありです。
725デフォルトの名無しさん:2008/04/30(水) 00:16:48
>>710
#include<io.h>
char p[260]="c:\\",t[260];s(){struct _finddata_t f;char*n=f.name;int h,l=strlen(p);
if(~(h=_findfirst(strcat(p,"*.*"),&f)))do f.attrib&16&&strcmp(n,".")&&strcmp(n,"..")
&&strcat(strcpy(p+l,n),"\\")&&s(),strcmp(n,t)||printf("%.*s%s\n",l,p,t);
while(!_findnext(h,&f)||_findclose(h));}main(){scanf("%s",t);s();}
726デフォルトの名無しさん:2008/04/30(水) 01:41:03
[1] 授業単元:情報実験第一
[2] 問題文:配列の全要素の最大公約数を求める関数 gcdary を実装
せよ。また、要素数が n である配列に自然数 n 個を読み込み、関数
gcdary を用いてそれらの最大公約数を求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler5.5
 [3.3] 言語:C
[4] 期限:2008年5月1日15:00まで
[5] その他の制限:まだ配列、関数の定義程度までしかやってません

ホントに基礎からよくわかりません
お願いします
727デフォルトの名無しさん:2008/04/30(水) 01:52:31
すいません
726なんですがおそらく使用するヘッダはstdio.hだけです
728デフォルトの名無しさん:2008/04/30(水) 02:02:16
>>726
当方の環境は cygwin/WindowsXP, 処理系はgcc3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6385.txt
729デフォルトの名無しさん:2008/04/30(水) 02:04:29
>>726
関数の定義までしてるなら後は呼び出すコードを書くだけじゃないか。
730デフォルトの名無しさん:2008/04/30(水) 02:10:53
>>726 便乗で非再帰。簡単なものしか書けない自分に絶望。
#include <stdio.h>

#define N 100

int gcd(int num1, int num2){
    int tmp;
    while(num2 != 0){
        tmp = num1%num2;
        num1 = num2;
        num2 = tmp;
    }
    return num1;
}

int gcdary(int *a, int n){
    int i, ret = a[0];
    for(i = 1; i < n; i++)
        ret = gcd(ret, a[i]);
    return ret;
}

int main(void){
    int a[N], n;
    for(n = 0; n < N; n++)
        if(scanf("%d", &a[n]) != 1)
            break;
    printf("gcd : %d\n", gcdary(a, n));
    return 0;
}
731デフォルトの名無しさん:2008/04/30(水) 02:43:15
>>728-730
ありがとうございます!
何とか理解できてきたので参考にさせていただきますm(__)m
732デフォルトの名無しさん:2008/04/30(水) 15:14:03
このゲームの4*4や5*5や6*6の必勝法を解いてもらえないですか?

http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame.htm
733デフォルトの名無しさん:2008/04/30(水) 19:48:45
VC++って数値か文字か判定する便利関数ないの?
DELPHIはあるのに。
作らなきゃダメなのか…
734デフォルトの名無しさん:2008/04/30(水) 20:19:16
文字列をコピーする関数を作成せよという問題が出て、
下のように回答したら×を付けられました。

void x_strcpy(char *dst, const char *src)
{
  do {
    *dst = *src;
  } while (*src++ != '\0');
}

教授からの指摘は、次のとおりです。
「*src が '\0' を評価した後に ++ されて src の領域外に出ている。アクセス違反が起きる」

ポインタによる領域外の値は、その領域への参照(評価時など含む)、または書き込みしなければ無害ですよね?

char *s = "abc"; として
s += 10000; としても、s を参照(評価)、書き込みしなければ問題ないですよね?
735デフォルトの名無しさん:2008/04/30(水) 20:24:45
dstがインクリメントされてない方がきになる
736デフォルトの名無しさん:2008/04/30(水) 20:28:30
>>735さん。
>>734です。
>dstがインクリメントされてない方がきになる
すみません。投稿ミスです。

★再掲載。

文字列をコピーする関数を作成せよという問題が出て、
下のように回答したら×を付けられました。

void x_strcpy(char *dst, const char *src)
{
  do {
    *dst++ = *src;
  } while (*src++ != '\0');
}

教授からの指摘は、次のとおりです。
「*src が '\0' を評価した後に ++ されて src の領域外に出ている。アクセス違反が起きる」

ポインタによる領域外の値は、その領域への参照(評価時など含む)、または書き込みしなければ無害ですよね?

char *s = "abc"; として
s += 10000; としても、s を参照(評価)、書き込みしなければ問題ないですよね?
737デフォルトの名無しさん:2008/04/30(水) 20:30:53

http://www.youtube.com/watch?v=zrBV5Ru31jI


飛んで 飛んで 飛んで 飛んで 飛んで

飛んで 飛んで 飛んで 飛んで

回って 回って 回って 回〜るぅうううぅ〜♪

738デフォルトの名無しさん:2008/04/30(水) 20:50:15
>>736
dstの終端が'\0'じゃない
739デフォルトの名無しさん:2008/04/30(水) 20:52:20
はあ?
740デフォルトの名無しさん:2008/04/30(水) 20:54:29
すまん勘違い
741デフォルトの名無しさん:2008/04/30(水) 20:54:52
>>733
Delphiの何のことなのかを添えて質問系のスレで聞けば回答が来ると思うよ。
742デフォルトの名無しさん:2008/04/30(水) 20:55:02
潔くてよろしい、10点あげる
743デフォルトの名無しさん:2008/04/30(水) 20:57:01
>>736
その教授の論だとよく使われる
while(*dst++=*src++);
もアクセス違反になるのかよw
src範囲外にアクセスしないことが明白なら問題ないだろ。
744デフォルトの名無しさん:2008/04/30(水) 21:11:42
>>736
少なくとも標準規格では、ポインタが
配列の最後の要素の次を指すのは問題ないとなっている。
(もちろんそこから逆参照しない限り)

それ以外の外れた場所を指すポインタはまずかったはずだが、
未定義だか処理系依存だかまでは覚えていない。
745デフォルトの名無しさん:2008/04/30(水) 21:14:37
教授に「後学のため、実際に問題になった例を教えてください」とでも詰め寄れ
746デフォルトの名無しさん:2008/04/30(水) 21:17:36
>>743さん。
>>736です。

>その教授の論だとよく使われる
>while(*dst++=*src++);
>もアクセス違反になるのかよw
>src範囲外にアクセスしないことが明白なら問題ないだろ。

上のように書いた生徒も×を貰っていました。
理由は同じく、'\0'を評価したあとにポインタが範囲外を指している。アクセス違反が起きる。

void x_strcpy(char *dst, const char *src)
{
  do {
    *dst++ = *src;
  } while (*src++ != '\0');
}

src が "hello" で dst のサイズが 6 * sizeof(char) のときでも
while(*dst++=*src++); のあとに *dst にアクセスしなければ問題ないコードですよね?
747デフォルトの名無しさん:2008/04/30(水) 21:24:29
そんな教授は大学に抗議してクビにさせろ
748デフォルトの名無しさん:2008/04/30(水) 21:35:49
>>747さん。
>>736です。

教授のホームページには
世の中の while(*dst++=*src++); は間違いであると書いてあります。

指摘してみます。
749デフォルトの名無しさん:2008/04/30(水) 21:35:56
>教授からの指摘は、次のとおりです。
>「*src が '\0' を評価した後に ++ されて src の領域外に出ている。アクセス違反が起きる」

領域外を指している状態、と、アクセス違反が起きること、は等しくないと説明してやれよw
領域外を指している状態で何か書き込めば別だがな
上記の例ではありえないだろ
750デフォルトの名無しさん:2008/04/30(水) 21:38:50
>>748
ちょっとそのページ曝してみてよ。
751デフォルトの名無しさん:2008/04/30(水) 21:39:04
>>748
>>744氏の言う通り、攻め所は「Cの規格で最後の要素の次の要素を指す
ポインタの存在は認められている」だな
ちゃんと○をもらって報告するように
752デフォルトの名無しさん:2008/04/30(水) 21:43:34
ヌルぽの時代が終わって次は教授の時代だな。
753デフォルトの名無しさん:2008/04/30(水) 21:46:45
>>744さん。>>751さん。
>>736です。

ありがとうございます。

> >>744氏の言う通り、攻め所は「Cの規格で最後の要素の次の要素を指す
> ポインタの存在は認められている」だな

C言語の規格書を検索していましたが有償なんですね。。。
754デフォルトの名無しさん:2008/04/30(水) 21:46:45
その瞬間は参照しなくても、将来そのコードを再利用・保守する自分or他人がうっかり参照するかもしれない。
それ自体はバグじゃなくても、将来のバグを誘発or拡大する可能性のあるコードは避けるべきだ。

・・・という主張なんだろう。
考え方としては重要だけど、
オブジェクト指向が浸透した今となってはちょっと神経質すぎるなw
この関数に関して上記みたいな問題が起きたら、
わざわざ人が作った関数分解して変なバグ埋め込んだお前が悪い、ってことになるだけだし。
755デフォルトの名無しさん:2008/04/30(水) 21:47:06
あった。ANSIやISOにも同じ規定があるはず。
JIS X3010:2003
6.5.6 加減演算子
……
さらに,式Pが配列要素の最後の要素を指す場合,
式(P)+1はその配列オブジェクトの最後の要素を一つ超えたところを指し,
式Qが配列オブジェクトの最後の要素を1つ超えたところを指す場合,
式(Q)-1はその配列オブジェクトの最後の要素を指す。
……
756デフォルトの名無しさん:2008/04/30(水) 21:48:44
757デフォルトの名無しさん:2008/04/30(水) 21:50:20
>>755
> 要は、EOFはもうそれ以上入力がないということを示す

なんでそんな偉そうなんだか正直分からない。
758デフォルトの名無しさん:2008/04/30(水) 21:51:38
天下の大学教授にいちゃもんつけるとはキチガイ丸出しだなw
759デフォルトの名無しさん:2008/04/30(水) 21:51:52
ナンバーサインは自分が確信を持ったことに対しては
# 偉そうに答えるからです
760デフォルトの名無しさん:2008/04/30(水) 21:52:36
>>759
ゲ
おまえもいるのか。
761デフォルトの名無しさん:2008/04/30(水) 21:54:53
>>760
ゲ
おまえがいたのか。
762デフォルトの名無しさん:2008/04/30(水) 21:55:33
>>758
C言語のことに関しては、
大学教授よりCの委員会の中の人のほうが偉いのです。
763デフォルトの名無しさん:2008/04/30(水) 21:55:49
大学教授の大抵は社会性ゼロだから、たまにガツンといってやらんと
764デフォルトの名無しさん:2008/04/30(水) 21:56:40
>>755さん。>>756さん。
>>736です。

ありがとうございます。JISなら閲覧可能ですね。
きちんと明示されていました。安心しました。
765デフォルトの名無しさん:2008/04/30(水) 22:00:07
>>761
おまえがいたのかって、おれ以外誰が>>757書くんだよ。
766デフォルトの名無しさん:2008/04/30(水) 22:01:32
>>761
煽られ耐性ないから構わないように
767デフォルトの名無しさん:2008/04/30(水) 22:05:00
しかしこいつ、規格の読み方もわからんのに何でJISなんて持ちだすんだろ。
不思議だ。
768758:2008/04/30(水) 22:06:44
Iteratorでpast-end を使うってC/C++基本中の基本だが、
天下の教授にいちゃもんつけようとする>>764は単位取れないなw
高脳は正しいと判ってても我を通さずにうまくやるが、低脳は猪突猛進だからな
769デフォルトの名無しさん:2008/04/30(水) 22:07:35
なっ、なんですか、あなた達は!?高学歴の私が英語のことに対して
何か間違ったんですか?英語ではコロン、セミコロン、ピリオドの上限関係は
決まってんだYO!

# お前ら日本人に英語は似つかないぜ?ハーフの俺だけにしとけ、
# このスレで英語について語るのは、な?
770デフォルトの名無しさん:2008/04/30(水) 22:23:15
たとえばintの配列を表示するとき
for(i=0; i<sizeof a / sizeof(int); i++) printf("%d ", a[i]);
とか書くじゃない?
その教授の論法で言うなら、ループ終了時のiの値は配列外をさすからアクセス違反で禁止
しなければいけなくなると思うんだけど、そういう点はどう考えてるんだろ。
771デフォルトの名無しさん:2008/04/30(水) 22:24:26
...微妙にスレ(板?)を間違ってるコメントが混じってるなw


>教授のホームページには
>世の中の while(*dst++=*src++); は間違いであると書いてあります。
工学のため、そのページを教えてください
772デフォルトの名無しさん:2008/04/30(水) 22:27:39
>770
その例だとちょっと違うのでは?
int *p=&a[0];
for(i=0; i<sizeof a / sizeof(int); i++,p++) printf("%d ", *p);
じゃね?
773デフォルトの名無しさん:2008/04/30(水) 22:29:35
>>763さん。
>>736です。

元大手製作所で会社勤め経験アリの教授ですよ。
774デフォルトの名無しさん:2008/04/30(水) 22:32:52
>>768
外から凸できる手段があれば、764に代わって凸してもいいんだが。
775デフォルトの名無しさん:2008/04/30(水) 22:34:58
乱数って例えば、1と2と5しか発生しないようには出来ますかね?
776デフォルトの名無しさん:2008/04/30(水) 22:37:45
1,2,5の配列作って添え字を乱数で得れば?
777デフォルトの名無しさん:2008/04/30(水) 22:38:07
pow(rand()%3, 2) + 1;
778デフォルトの名無しさん:2008/04/30(水) 22:38:17
rnd[] = {1,2,5};
num = rnd[rand()%3];
779デフォルトの名無しさん:2008/04/30(水) 22:38:21
>775
0,1,2の乱数で場合わけ白よ
780デフォルトの名無しさん:2008/04/30(水) 22:50:05
>>444,>>445
遅くなりましたが、細かい指摘ありがとうございました。そして質問です。

[1] 授業単元:Cプログラミング言語(修正
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6389.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン:CPad for Borland
 [3.3] 言語: (C)
[4] 期限:5/01まで
[5] その他の制限:
入力はgetcharで行い、バブルソートについてはstrcpyなど使用。

@先ほどの方に解いていただいた問題で、右シフトのことなど忘れていたので、
いじらさせてもらったのですが、このやり方だとなぜか左シフトのときに
unsignedの中を飛び出しているようで、255以上の数字と16進が表示されてしまってます。
自分にはよくわからないのですが、どうすればよいでしょうか;

Aこちらも前に質問させていただいたものなのですが、Aのプログラムを
fgetsではなく、文字数制限のないgetcharで表すにはどうすればいいでしょうか?

Bこちらも少し前に質問させていただいたのですが、クイックソートではダメと言われ
クイックソートをバブルソートに変えようと思うのですが、どのようにすればよいでしょうか?

修正ばかりで期限も明日までという問題ですが、よろしくお願いします。
781デフォルトの名無しさん:2008/04/30(水) 23:02:24
782デフォルトの名無しさん:2008/04/30(水) 23:35:52
>>780
Bについて
バブルソートの関数作ればいいんじゃね?
783デフォルトの名無しさん:2008/04/30(水) 23:37:01
誰かこの問題を教えて貰えませんか?
よろしくお願いします。

[1] 授業単元:C言語
[2] 問題文:
AとBとCの「合計」、「平均」、「%」を表示させなさい

A=20.8
B=10.4
C=5.2

合計(?)
平均(?)
Aは全体の?%です
Bは全体の?%です
Cは全体の?%です


[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual stdio 2005
 [3.3] 言語: (C言語)
[4] 期限:無期限
[5] その他の制限:(C言語検定3級程度しか習ってません)
784デフォルトの名無しさん:2008/05/01(木) 00:00:58
[1] 授業単元:構造体変数を使ったデータの入れ替え
[2] 問題文:
5日分の気温データ(月・日・最高気温・最低気温)を入力し、
最高気温の高い順に並び替えるプログラムを作成せよ。

[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2008年5月1日22:00まで
[5] その他の制限:
教授から出されたヒント
・並べ替え(ソート)の方法はいろいろあるが、バブルソートが簡単
・バブルソートの基本は、「比較」「交換」の2重ループ

たぶんこんなのを使います(+_+)↓
#include <iostream.h>

struct PersonalData{
int month ; // 月
int day ; // 日
double high ; // 最高気温
double low ; // 最低気温
};
よろしくお願いします(:_;)
785デフォルトの名無しさん:2008/05/01(木) 00:08:11
>>783
全部一気には書き込めないので3回に分けます

#include <stdio.h>

#define _A 20.8
#define _B 10.4
#define _C 5.2
#define NUM 3

void CalculateTotal( double a, double b, double c, double *pTotal );
void CalculateAverage( double total,int num, double *pAverage );
void CalculateRatio( double total, double rate, double *pRatio );

786デフォルトの名無しさん:2008/05/01(木) 00:08:42
int main( void )
{
    /* まずはベースとなる3つの小数の宣言 */
    double A = _A;
    double B = _B;
    double C = _C;
   
    /* 回答を入れるための変数を宣言しておく */
    double total   = 0;
    double average = 0;
    double ratioA  = 0;
    double ratioB  = 0;
    double ratioC  = 0;
   
    /* 合計の計算 */
    CalculateTotal( A, B, C, &total );
   
    /* 平均の計算 */
    CalculateAverage( total, NUM, &average );
   
    /* Aの割合の計算 */
    CalculateRatio( total, A, &ratioA );
    /* Bの割合の計算 */
    CalculateRatio( total, B, &ratioB );
    /* Cの割合の計算 */
    CalculateRatio( total, C, &ratioC );
   
    /* ここに好きな出力文を入れてください */
   
    return( 0 );
}
787最後:2008/05/01(木) 00:09:16
/* 合計を求める関数 */
void CalculateTotal( double a, double b, double c, double *pTotal )
{
    *pTotal = a + b + c;
}

/* 平均を求める関数 */
void CalculateAverage( double total, int num, double *pAverage )
{
    *pAverage = total / num;
}
/* 第二引数が第一引数に占める割合を求める関数 */
void CalculateRatio( double total, double rate, double *pRatio )
{
    *pRatio = ( rate / total ) * 100;
}


/* なんか勘違いしてるようなら教えてね */
788デフォルトの名無しさん:2008/05/01(木) 00:17:59
>>783
#include <stdio.h>
int main(void)
{
int i;
double a[3], sum = 0;

for(i=0; i<3; i++) {
printf("%c=", 'A' + i);
scanf("%lf", a+i);
sum += a[i];
}

printf("合計%f\n平均%f\n", sum, sum / 3);
for(i=0; i<3; i++) printf("%cは全体の%.2f%です\n", 'A' + i, a[i]*100/sum);

return 0;
}
789デフォルトの名無しさん:2008/05/01(木) 00:24:28
>>780
@配列に格納しろと言っておきながら、配列つかってねぇーじゃん。
なにこれ?
790デフォルトの名無しさん:2008/05/01(木) 00:26:19
必要な冗長性ってのもあるよね
791780:2008/05/01(木) 00:40:50
>>782
その今のプログラムからのバブルソートの作り方がよくわからなくて;
>>789
char型「変数」でしたね、失礼しました。
792デフォルトの名無しさん:2008/05/01(木) 00:43:59
>>768
んー、そうでしょうかね。やっぱり、そうでしょうね。 >>764 はここで不明点を解消できたので、
あとは、教授の人柄を見極めた上での対応が求められますね。これは結構難易度の高い問題ですね。
793デフォルトの名無しさん:2008/05/01(木) 00:48:36
>>780
Aどこかで見たことあると思ったらおれ作ったやつだ
なんか改悪されてるんで他の人よろしく
あと、fgets嫌いならはじめ出題するときからgetcharのみってすりゃ手戻りしないのに
794デフォルトの名無しさん:2008/05/01(木) 00:51:23
>>780 B
この関数を追加して、
void bubble_sort( char name[][NAME_LEN + 1], int num )
{
int i, j;
char t[NAME_LEN + 1];
for( i = 0 ; i < num-1 ; i ++ )
for( j = i+1 ; j < num ; j ++ )
if( strcmp( name[i], name[j] ) > 0 )
{
strcpy( t, name[i] );
strcpy( name[i], name[j] );
strcpy( name[j], t );
}
}

mainの中から呼ぶように。
// ソート
bubble_sort( name, num );
//qsort( name, num, sizeof(*name), strcmp );
795デフォルトの名無しさん:2008/05/01(木) 02:23:35
[1] 授業単元:
[2] 問題文(含コード&リンク):数字を5個入力し、最後に入力した数から順に出力するプログラムを作れ。
(入力時、出力時両方に配列とfor文(while文でもよい)による繰り返しを使うこと)


[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005
 [3.3] 言語: (C)
[4] 期限: (5月1日夜まで)
796デフォルトの名無しさん:2008/05/01(木) 02:30:04
>>795 スタックとか指定ないよね?

#include <stdio.h>
#define N 5

int main(void)
{
int i;
int num[5];

for(i=0;i<N;i++){
printf("数値
%d入力>",i+1);
scanf("%d",&num[i]);
}
printf("\n");
for(i=N-1;i>=0;i--){
printf("数値%d:%d\n",i+1,num[i]);
}

return 0;
}
797796:2008/05/01(木) 02:31:37
>>795 なんでもない
798デフォルトの名無しさん:2008/05/01(木) 03:22:05
>>780 @ 前スレ913,936,955のちょこっと改造版
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void binary(unsigned char n, char *s) { int i; for (i = 0; i < 8; i++) { *s = (n & 0x80) ? '1' : '0'; s++; n <<= 1; } *s = '\0'; }
void print(unsigned char n) { char b[9]; binary(n, b); printf("%3d, %02x, %s\n", n, n, b); }
void _gets(char *s, int size) { int c; while ((c = getchar()) != '\n') { if (size > 1) { if (!isdigit(c)) { puts("エラー"); exit(0); } *s++ = c; size--; } } *s = '\0'; }
void main() { char s[4]; unsigned char n; _gets(s, sizeof(s)); if (s[0] == '\0') { puts("エラー"); exit(0); } n = atoi(s); if (n < 0 || n > 255) { puts("エラー"); exit(0); } print(n); print(n << 1); print(n >> 1); print(~n); }
799デフォルトの名無しさん:2008/05/01(木) 04:54:45
796さんありがとうございました。ほんとに助かります。
800デフォルトの名無しさん:2008/05/01(木) 05:06:20
[1] 授業単元:
[2] 問題文(含コード&リンク):乱数で値を設定し、その数を当てる簡単なゲームを作れ。

コンピュータが乱数で答えを設定し、人間がその数を当てる。
数字を入力すると、答えが入力した数より大きいか、小さいかを
ヒントとして出力し、正解が出るまで繰り返す。
答えの数の範囲は各自設定すること。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005
 [3.3] 言語: (C)
[4] 期限: (5月1日夜まで)


801デフォルトの名無しさん:2008/05/01(木) 05:14:21
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int n, ans;

srand(time(NULL));

ans = rand() % 100 + 1;

while(1) {
printf("input number(1-100):");
scanf("%d", &n);
if(n < ans) printf("too small.\n");
else if(n > ans) printf("too big.\n");
else break;
}
printf("correct!\n");
return 0;
}
802デフォルトの名無しさん:2008/05/01(木) 14:44:16
[1] 授業単元:
Cプログラミング

[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6391.txt

[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux

 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc

 [3.3] 言語: (C/C++/どちらでも可 のいずれか)


[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5月6日まで

[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
できるだけ簡単なもので・・。

全部じゃなくても構いません。できるだけでいいのでよろしくお願いします。
803デフォルトの名無しさん:2008/05/01(木) 16:33:31
>>713さんありがとうございました。助かりました。
804デフォルトの名無しさん:2008/05/01(木) 16:44:35
[1] 授業単元:
[2] 宅急便の料金が次の様に決まっているとき、
金額計算をするプログラムを作れ。
(何を入力、出力とするかは各自で考えること。
入力待ちの時には適切なメッセージを表示すること。)

縦横奥行きの合計が60cm以内で、かつ重量が 2kg 以下の時 800円
縦横奥行きの合計が80cm以内で、かつ重量が 5kg 以下の時 1100円
縦横奥行きの合計が120cm以内で、かつ重量が 15kg 以下の時 1500円
お急ぎ便の場合は 500円加算される。

 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005
 [3.3] 言語: (C)
[4] 期限: (5月1日夜まで)
805デフォルトの名無しさん:2008/05/01(木) 16:55:09
[1] 授業単元: ガソリン値下げ隊
[2] 問題文(含コード&リンク):セルフで暫定税率前の価格で購入できる精算機を作れ

[3] 環境
 [3.1] OS: 精算機
 [3.2] コンパイラ名とバージョン: 給油ノズル
 [3.3] 言語: ジャパニーズ
[4] 期限: 5月1日0時まで
806デフォルトの名無しさん:2008/05/01(木) 17:07:54
>>804
#include <stdio.h>
int main(void)
{
int size, weight, price;
char ch;

printf("縦横奥行きの合計を入力してください(cm):");
scanf("%d", &size);
printf("重量を入力してください(kg):");
scanf("%d", &weight);

if(size > 120 || weight > 15) {
printf("お取り扱いできません\n");
return 0;
}
else if(size > 80 || weight > 5) price = 1500;
else if(size > 60 || weight > 2) price = 1100;
else price = 800;

printf("お急ぎ便ですか?(YorN)");
scanf(" %c", &ch);
if(ch=='Y'||ch=='y') price += 500;

printf("料金は%d円です\n", price);

return 0;
}
807デフォルトの名無しさん:2008/05/01(木) 17:27:50
>806
"YorN"って言ってんだからちゃんと判断しろよw
(N以外でスルーすんな)
808デフォルトの名無しさん:2008/05/01(木) 17:30:54
>806
サイズや重量が0でも料金計算していいのかYO!
(if文の判定順を逆にすんな)
809デフォルトの名無しさん:2008/05/01(木) 17:31:07
どうでもいい
810>808:2008/05/01(木) 17:32:51
>(if文の判定順を逆にすんな)
どゆこと?
811デフォルトの名無しさん:2008/05/01(木) 17:33:55
ナンバーサインの次は括弧かよ・・・かっこわりぃ〜 なんつって
812デフォルトの名無しさん:2008/05/01(木) 17:44:05
>>807>>808
ならお前がつくれよ、クズ
813デフォルトの名無しさん:2008/05/01(木) 17:45:39
Yes or No で Yes 以外は無効とするやり方なんて、前々から普通にあったけどな。
そうガミガミするなって。やるならやる、その意思表示がされないなら無しとする、そうだろ?
814デフォルトの名無しさん:2008/05/01(木) 17:46:43
相手にするな
815>813:2008/05/01(木) 17:50:30
GUIな人にはそれがわからんのですよ...
816デフォルトの名無しさん:2008/05/01(木) 18:05:40
>>802
【課題1】
int rn(int x) { return (48109 * x + 2531011) % 32768; }
817デフォルトの名無しさん:2008/05/01(木) 18:23:32
818デフォルトの名無しさん:2008/05/01(木) 18:27:21
>2 つの一様乱数x, y(但し、ともに0 以上1 未満の実数)
819デフォルトの名無しさん:2008/05/01(木) 18:30:41
どうせ同じ事だし…だめ?
820817:2008/05/01(木) 18:40:34
821ベーコン:2008/05/01(木) 19:59:22
[1] 授業単元:プログラミング演習
[2] 問題文:a〜zで構成されたランダムな文字列がファイルに書かれてある。
      この文字列の中から任意の文字列を検索するプログラムを作成し、以下の問いに答えよ。
      1.programという文字列は何個あるか。
      2.以下の文字は、それぞれ何行目の何番目の文字から始まるか。
       university, puroguramingu, など。
※ファイルはテキストファイルで与えられており、中身は本当に適当にa〜zを
 並べられたもので、画面いっぱいみっちりとアルファベットで埋めてあります。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:20年5月10日まで
[5] その他の制限:なし

よろしくお願いします。
822デフォルトの名無しさん:2008/05/01(木) 20:10:06
どれ、下民がBM法を実装する様でも眺めるとするか
823デフォルトの名無しさん:2008/05/01(木) 20:15:12
できない人は黙っててw
824デフォルトの名無しさん:2008/05/01(木) 20:18:13
知らないならレスしないでください
825デフォルトの名無しさん:2008/05/01(木) 20:23:57
>>822 >>824
うぜーよお前、別スレで言い負けして悔しいのぅ悔しいのぅ
コピペに反応して、EOFに関してナンバーサインに加担してたアホw
826 ◆mt9EVUH7Ww :2008/05/01(木) 20:30:02
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
↓以下URLを参照して下さい。
http://foghorn.cadlab.lafayette.edu/cadapplets/MazeRouter.html
Maze Router:ある2端子を入力して配線経路を導く配線アルゴリズム
を作成せよ。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:Microsoft .NET Framework SDK
 [3.3] 言語: C言語
[4] 期限: 2008年5月10日
[5] その他の制限:できるだけ簡単なもので・・。

ご多忙中のところお手数おかけします。
以上、宜しくお願い致します。
827デフォルトの名無しさん:2008/05/01(木) 20:30:42
以前ここで
「速度と距離の入力して時間を求めるプログラミング」を聞いたものですが
言語がc++じゃなくcでした。
自分なりにやってみたのですがわかりません。
#include <stdio.h>

int main (void)
{
int v,d; /* v=velocity,d=distance;*/

puts("速度と距離を入力してください。");
printf("速度[km/h]:"); scanf("%d, &v);
printf("速度[km]:"); scanf("%d, &d);

〜時間〜分という表示のさせかたがわかりません。
教えてください。
828デフォルトの名無しさん:2008/05/01(木) 20:37:22
>>816
>>820

ありがとうございます!
829デフォルトの名無しさん:2008/05/01(木) 20:49:57
>>827
printf("%d時間%d分", d / v, d % v * 60 / v);
830デフォルトの名無しさん:2008/05/01(木) 20:53:18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6394.txt
[3] 環境
 [3.1] OS:Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (2008,5.7 22:00まで)
[5] その他の制限: 昇順で数と回数を表示する線形リストは授業でやりました。できれば単純なものでお願いします。

よろしくおねがいします。
831デフォルトの名無しさん:2008/05/01(木) 20:58:40
832デフォルトの名無しさん:2008/05/01(木) 21:01:10
>>829
本当にありがとうございました。
助かりました!
833822:2008/05/01(木) 21:06:48
>>821 ごめん。途中でめんどくさくなった。
#include <stdio.h>
#include <string.h>
#include <limits.h>
static int table[UCHAR_MAX + 1];
void maketable(const char *ptn){
    int i, len = strlen(ptn);
    for(i = 0; i < UCHAR_MAX; i++) table[i] = len;
    for(i = 0; i < len; i++) table[(int)ptn[i]] = --len;
}
char *bm(const char *str, const char *ptn){
    int i, j, k, slen = strlen(str), plen = strlen(ptn);
    for(i = 0; i <= slen - plen; i++){
        for(j = plen - 1; j >= 0; j--) if(str[i + j] != ptn[j]) break;
        f(j == -1) return (char*)(str + i);
        i += table[(int)str[i + j]] - 1;
    }
    return NULL;
}
int main(int argc, char *argv[]){
    FILE *fp;
    int cnt = 0, plen;
    char buf[2048], ptn[] = "program", *p = buf;
    if(argc < 2 || (fp = fopen(argv[1], "r")) == NULL) return 1;
    fgets(buf, sizeof(buf), fp);
    fclose(fp);
    maketable(ptn);
    while((p = bm(p, ptn)) != NULL) puts(p), p++, cnt++;
    printf("cnt: %d\n", cnt);
    return 0;
}
834デフォルトの名無しさん:2008/05/01(木) 21:10:58
835デフォルトの名無しさん:2008/05/01(木) 21:28:05
はじめまして。大学2年生です。
プログラミングの授業の中で課題が解けませんでした。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
1000個までの整数あるいは小数を打ち込み、
その平均と標準偏差を表示することのできるプログラムを作成せよ。

[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Microsoft Microsoft Visual Studio .NET 2003
 [3.3] 言語:C言語
[4] 期限:[2008年5月8日hh:5まで]
[5] その他の制限:特になし

よろしくお願いします。
お手数かけまして、すいません。
836デフォルトの名無しさん:2008/05/01(木) 22:42:40
>>835
#include <stdio.h>
#include <math.h>

#define MAX_COUNT 1000

double average(double values[], int count);
double stdevp(double values[], int count);

int main(int argc, char *argv) {
  
  int count = 0;
  double values[MAX_COUNT];
  
  while (fscanf(stdin, "%lf", &values[count]) != EOF) {
    count++;
    if (count == MAX_COUNT) {
      break;
    }
  }
  
  printf("Average = %lf\n", average(values, count));
  printf("Std.Dev. = %lf\n", stdevp(values, count));
  
  return 0;
}
837836:2008/05/01(木) 22:43:25
double average(double values[], int count) {
  double sum = 0;
  int i;
  for (i = 0; i < count; i++) {
    sum += values[i];
  }
  return sum / count;
}

double stdevp(double values[], int count) {
  double avg = 0; // 平均
  double dev = 0; // 偏差
  double sum = 0; // 偏差の2乗の和
  double var = 0; // 分散
  int i;
  
  avg = average(values, count);
  for (i = 0; i < count; i++) {
    dev = values[i] - avg;
    sum += dev * dev;
  }
  var = sum / count;
  
  return sqrt(var);
}
838836:2008/05/01(木) 22:45:54
>>835
gccで動いた。VS向けにいじってくれ。
839デフォルトの名無しさん:2008/05/01(木) 22:49:02
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6400.txt

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Microsoft Microsoft Visual Studio .NET 2003
 [3.3] 言語:C言語
[4] 期限:[2008年5月4日まで]
[5] その他の制限:特になし

お願いします
840デフォルトの名無しさん:2008/05/01(木) 22:50:38
>>835
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6401.txt
コンパイルもなにもしてない
836を参照してくれ
841デフォルトの名無しさん:2008/05/01(木) 23:01:10
>>835
#include <stdio.h>
#include <math.h>

#define N 1000

int main(void)
{
double d, a, s = 0, ss = 0, sigma;
int i;

for(i=0; i<N; i++) {
scanf("%lf", &d);
s += d;
ss += d * d;
}

a = s / N;
sigma = sqrt((ss - a*s)/N);

printf("平均%f\n標準偏差%f\n", a, sigma);

return 0;
}
842デフォルトの名無しさん:2008/05/01(木) 23:07:29
うpロダ使えYO! ('A`)
843780:2008/05/01(木) 23:43:22
>>793
問題文の方にはなかったのですが、getcharに直せと言われてしまったのです;
>>794
うまく直せました、ありがとうございます。
>>798
わざわざ作っていただいたのに申し訳ありません;
制限の方にatoi、gets不可と書くのを忘れていました。
こちらの不手際ですのでスルーしていただいて構いません;

それでは期日が本日中なので、
もし余裕のある方がいれば>>780の@・Aをよろしくお願いします

[5.2] その他の制限:
入力はgetcharで行い、atoi,gets,fgets,scanfは不可。
844デフォルトの名無しさん:2008/05/01(木) 23:53:52
後8分。学校のサーバーか何かに、時間までに提出するのかな?
まぁ、後だし後だしはダメぽよ。自分でその辺は修正できるんじゃないの?
所詮、入力受付の形式なんだから。
845デフォルトの名無しさん:2008/05/02(金) 00:34:22
[1] 授業単元: プログラミング演習基礎
[2] 問題文(含コード&リンク):ある数が偶数であったら2で割る,奇数であったら3倍して1を足す.
この処理を求めた答えに対して繰り返し実行すると,最終的に答えが1となる.
この処理を繰り返し実行し,答えが1になった時点で処理を停止する関数を作成し,
10までの範囲でもっとも繰り返し回数が多かった数と繰り返し回数を出力するプログラム
を作成しなさい.
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:cygdrive
 [3.3] 言語:C言語
[4] 期限:[2008年5月4日まで]
[5] その他の制限:特になし
自分である程度作りましたが、うまくでません。
どなたか修正お願いします。
以下プログラム
846845:2008/05/02(金) 00:34:51
#include <stdio.h>
int main(void)
{
int no, n2;

for (no = 2; no <= 10; no++) {
unsigned long counter = 0;
n2=no;
while( n2 != 1 && n2 >= no){
counter++;
/*偶数*/
if( n2 % 2 == 0 ) {
/* 偶数なら2で割る */
n2 /= 2;
}
/*奇数*/
else{
if( n2 % 2 != 0 ){
n2 = n2*3+1;
}
}
}
printf("%d no keisan kaisuu ha %lu desu\n", no,counter);
}

return 0;
}
847デフォルトの名無しさん:2008/05/02(金) 00:55:22
848デフォルトの名無しさん:2008/05/02(金) 01:15:36
>>845
#include <stdio.h>

int f(int n)
{
    int i;
    for(i=0; n!=1; i++) {
        if(n&1) n = n * 3 + 1;
        else n >>= 1;
    }
    return i;
}

int main(void)
{
    int i, max, imax;
    max = f(1);
    imax = 1;
    for(i=2; i<=10; i++) {
        int temp = f(i);
        if(temp > max) {
            max = temp;
        imax = i;
        }
    }
    printf("もっとも回数が多いのは%dで%d回\n", imax, max);

    return 0;
}
849デフォルトの名無しさん:2008/05/02(金) 01:17:04

while (n2 != 1 && n2 >= no)
が、明らかにおかしい。
850デフォルトの名無しさん:2008/05/02(金) 01:22:30
だからいい加減、うpロダ使えYO! ('A`)
851デフォルトの名無しさん:2008/05/02(金) 01:25:35
アップローダー使う使わないは当人の自由でお前が決めることじゃない
852デフォルトの名無しさん:2008/05/02(金) 01:26:48
>>851
使えない低レベルが必死にくだらない抵抗かよw 必死だなw 惨めだなw
お前何者だ?このスレの主?管理者?何偉そうに?汚いゴミクソース書いて
低レベルっぷりをさらして偉そうにしてんじゃねーよカスw
どうせお前あれだろ、EOF議論で負けたクズw
853デフォルトの名無しさん:2008/05/02(金) 01:27:52
>>1
> 気に入らない質問やその他や発言はスルーの方向で。
> 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
日本語が読めない奴って、ほんっと困るよな。
854デフォルトの名無しさん:2008/05/02(金) 01:28:21
>>852
>>1も読めない低能が必死だなw
855デフォルトの名無しさん:2008/05/02(金) 01:28:36
管理者でもないのにうpロダ使えって言うほうがクズだろw
856デフォルトの名無しさん:2008/05/02(金) 01:29:30
>>855
>>1に書いてあること気に食わなきゃ、ここ見なきゃいいのにw
857デフォルトの名無しさん:2008/05/02(金) 01:30:28
>>850>>851も同レベル
858デフォルトの名無しさん:2008/05/02(金) 01:30:55
EOFで負けたのってお前の方だろwww
859デフォルトの名無しさん:2008/05/02(金) 01:31:32
本人だけはいつでも勝ってるつもりのヤツにまともな議論なんかできないよ。
860デフォルトの名無しさん:2008/05/02(金) 01:33:02
848程度のソースだったらいちいちあげる必要もないと思うが
大して長くもないし、内容も難しいわけじゃないし
861デフォルトの名無しさん:2008/05/02(金) 01:34:18
>>860
本人だけはいつでも正しいつもりのヤツなんで、勘弁してやってください。
862デフォルトの名無しさん:2008/05/02(金) 01:34:26
お前らにはEOFよりEOLが似合ってるよ
人生の終演へどうぞ
goto EOL
863デフォルトの名無しさん:2008/05/02(金) 01:34:36
>>858
あっ、バカが釣れましたwwwwwwww
EOFがキーボードから入力でない、お前にとって入力って何?発言低レベル乙w
いつまで引きずってんのぉ〜、負け犬ポチ?w
864デフォルトの名無しさん:2008/05/02(金) 01:36:39
>>860
いや、だからそれが主観的な意見ってことだろ?あれを使わなきゃいけないって
話でもない。が、間違った、訂正だの、連発されると質問の書き込みが流れる。
まぁ、このスレに2年以上前から来ているが、さすがに出尽くした議論なんで
あとは適当に使って下さいなと。
865デフォルトの名無しさん:2008/05/02(金) 01:39:34
主観的っていうならアプロダ使えってのも主観的だろ?
しかも、実際に解答してる人間に対して文句つけるだけでレス流してるし。
866デフォルトの名無しさん:2008/05/02(金) 01:41:36
>>139 >>141 >>142 = EOF議論で負けた戦犯
867デフォルトの名無しさん:2008/05/02(金) 01:42:15
>>865
すいません、彼はちょっとでも自分が否定されると見境がなくなる低能なんです
868デフォルトの名無しさん:2008/05/02(金) 01:45:20
>>1
> 気に入らない質問やその他や発言はスルーの方向で。
> 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
日本語が読めない奴が多いのかよ、このスレは・・・レベルが低いなぁ・・・人間性に於いても。
そういや、自分が間違っていても、維持でも認めようとせずに噛み付いてきた奴
大学生時代にもいたっけなぁ・・・あまりにみっともなかったんで、もう間違っていても
あぁ〜はいはい、お前が正しいですよで、自分が間違っていたことで済ませたよ。
もちろん、こちらが提示したのは紛れもなく揺ぎ無い事実、あるいは標準化などを参照にした
事実だったのにも関わらず・・・
869デフォルトの名無しさん:2008/05/02(金) 01:46:51
このスレでもそうやって済ませてくれると助かる
870デフォルトの名無しさん:2008/05/02(金) 01:47:21
>>865
> しかも、実際に解答してる人間に対して文句つけるだけでレス流してるし。
お前が言うなよ・・・よくこういうことがいえるよな、基地外って

>>867
お前もだろ。低能とか、完全に議論で負けてファビョった方だろ?gdgd言ってねーで
とっとと宿題に答えろよ?あと>>1読め。俺はしばらくROMってる。
どうせ答えがなきゃ困るのは質問者。答えてクソースを出して恥をかくのは回答者。
そして俺はそのアイデアを盗むと。アディオース。
871デフォルトの名無しさん:2008/05/02(金) 01:48:55
>>870
反論として成り立ってないように見えるのは、おれが低能だからだろうか?
872デフォルトの名無しさん:2008/05/02(金) 01:52:33
未回答一覧
>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成
>>609 2008/04/27 02:12:23 の明日 コードを説明する
>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>784 2008/05/01 22:00 5日分の気温データを最高気温の高い順に並び替えるプログラム

>>651 2008/05/04 ペイントソフトの作成
>>830 2008/05/07 22:00 リスト処理
>>553 2008/05/10 ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。
>>826 2008/05/10 配線経路を導く配線アルゴリズム

>>629 指定なし パズル http://www2u.biglobe.ne.jp/~shunbook/omocha/tlwin4.htm
>>719 指定なし waveOutGetPositionを使用して、非同期で再生中のwavの再生位置を取得する
873デフォルトの名無しさん:2008/05/02(金) 02:28:57
なんだかんだ言って>>870が頭痛いでFA、長文で流してるし
874780:2008/05/02(金) 02:34:24
>>844
今日中というのは明日の朝一までのことでした。
自分には入力形式1つ変えるのでも、変えたあとの周りの修正がわからないので;
875845:2008/05/02(金) 02:53:42
>>848
ありがとうございます。
参考にまりましたが、
プログラムの構造がよく分かりません。
#include <stdio.h>
int main(void)
{
int no, n2;
for (no = 1; no <= 6200; no++) {
unsigned long counter = 0;
n2=no;
while( n2 != 1 && n2 >=1){
counter++;
/*偶数*/
if( n2 % 2 == 0 ) {
/* 偶数なら2で割る */
n2 /= 2;
}
/*奇数*/
else{
if( n2 % 2 != 0 ){
n2 = n2*3+1;
}
}
}
printf("%d no keisan kaisuu ha %lu desu\n", no,counter);
}
return 0;
}
から課題どうりに作ることはできませんでしょうか?きちんと理解したいので・・・

876デフォルトの名無しさん:2008/05/02(金) 02:54:34
>>845
スレ違いだけど一応教えておいてやる
それ数論で未解決の問題だ
「コラッツ予想 プログラム」でググルとかなり他人のをあされるかと思う
877デフォルトの名無しさん:2008/05/02(金) 02:58:50
>>875
>for (no = 1; no <= 6200; no++) {
なにこの6200って
878845:2008/05/02(金) 03:00:26
>>877
すみません。
6200ではなく10でした。
879デフォルトの名無しさん:2008/05/02(金) 03:06:03
  test
880デフォルトの名無しさん:2008/05/02(金) 03:14:48
>>876
奇数より偶数が頻繁に現れればよい
881845:2008/05/02(金) 03:15:30
>>876
#include <stdio.h>
int main(void)
{
int no, n2;
for (no = 1; no <= 10; no++) {
unsigned long counter = 0;
n2=no;
while( n2 != 1 && n2 >=1){
counter++;
/*偶数*/
if( n2 % 2 == 0 ) {
/* 偶数なら2で割る */
n2 /= 2;
}
/*奇数*/
else{
if( n2 % 2 != 0 ){
n2 = n2*3+1;
}
}
}
printf("%d no keisan kaisuu ha %lu desu\n", no,counter);
}
return 0;
}
これで一応それぞれの回数は求めることができましたが、最大の計算回数と
その値を求める方法が分かりません。
さっきからやってますが、ぜんぜんうまくいきません・・・
882デフォルトの名無しさん:2008/05/02(金) 03:16:19
>881
こんな感じ?
unsigned long maxCounter = 0;
int max;
int no, n2;

for (no = 2; no <= 10; no++) {
unsigned long counter = 0;
n2=no;
while( n2 > 1){
counter++;
if( n2 % 2 == 0 ) {
n2 /= 2;
}else{
n2 = n2*3+1;
}
}
if(maxCounter<counter){
maxCounter=counter;
max=no;
}
}
printf(">> %d no keisan kaisuu ha %lu desu\n", max, maxCounter);
883845:2008/05/02(金) 03:50:32
>>882
ありがとうございます!
でも
if(maxCounter<counter){
maxCounter=counter;
の意味がいまいち理解できません・・・
884デフォルトの名無しさん:2008/05/02(金) 04:03:31
>>845
行ギリギリorz

#include<stdio.h>

int main(void)
{
int i, tmp, cnt=0, keisankaisu[11] = {0}, max = 0;

for(i=2;i<=10;i++) { //2-10を規則にしたがって計算
tmp = i;
while(1) {
printf("i = %d, tmp = %d, cnt = %d\n", i, tmp, cnt); //確認のため表示、消してもおk
if(tmp == 1) { break; } //1なら脱出
if(tmp % 2 == 0) { tmp = tmp / 2; cnt++; } //偶数なら割る2
else if(tmp % 2 == 1) { tmp = tmp * 3 + 1; cnt++; } //奇数なら*3+1
}
printf("%2dの計算回数は%d回\n\n", i, cnt); //それぞれの結果表示
keisankaisu[i] = cnt; //計算回数後で使うから別変数へ
cnt = 0;
}
for(i=2;i<=10;i++) { //計算回数最多を検査
if(max < keisankaisu[i]) { max = i; }
}
for(i=2;i<=10;i++) { //それぞれの最終結果表示
printf("%2dの計算回数は%d回\n", i, keisankaisu[i]);
}
printf("計算回数が最も多かったのは%2dの%2d回\n", max, keisankaisu[max]);

return 0;
}
885デフォルトの名無しさん:2008/05/02(金) 04:14:05
>>876
1が現れるなら、偶数の出現回数は62%以上と思う
無限列の場合としても62%以上と思う
886デフォルトの名無しさん:2008/05/02(金) 05:22:27
> for(i=2;i<=10;i++) { //計算回数最多を検査
> if(max < keisankaisu[i]) { max = i; }
> }

...大丈夫か?
887デフォルトの名無しさん:2008/05/02(金) 05:24:56
>>886
??
888デフォルトの名無しさん:2008/05/02(金) 05:26:02
>>876
1から始めて、2倍するか、1を引いて3で割るという事を繰り返す。
後者は必ずしも成功しないが奇数が出現するのはこちらのみ。
奇数の出現は低い。
2進数は2倍するか、1を足すと全ての数を生成出来る。
このあたりから出来そうにないか
889886:2008/05/02(金) 05:28:57
バグだろ
890デフォルトの名無しさん:2008/05/02(金) 05:47:02
(keisankaisu[max] < keisankaisu[i]) のミスだろ
一応最後のところではちゃんとしてるから単なるミスだと思うぜ
891デフォルトの名無しさん:2008/05/02(金) 06:00:37
普通に動作するが

2の計算回数は1回
3の計算回数は7回
4の計算回数は2回
5の計算回数は5回
6の計算回数は8回
7の計算回数は16回
8の計算回数は3回
9の計算回数は19回
10の計算回数は6回
計算回数が最も多かったのは 9の19回
892デフォルトの名無しさん:2008/05/02(金) 06:53:40
偶然正しい結果が出てるだけ
893デフォルトの名無しさん:2008/05/02(金) 07:06:55
>>876
数字の大きさと、計算回数に関係があるとして、
任意の整数に対して回数の上限が求まればいいとおもう。
894835です。:2008/05/02(金) 08:51:28
>>836
>>840
>>841

835です。ありがとうございました。
895生ハム:2008/05/02(金) 08:51:32
[1] 授業単元:プログラミング演習
[2] 問題:ある英語の文章が規則に従って変換されてファイルに保存されています。
     その文章をファイルとして読み込み、正しい英文に復元し、ファイルに出力する
     プログラムを作成せよ。です。規則を解読したところ、単語の文字数の分だけ
     (ASCIIコード表でいう)引数?が下げられています。つまり本文でaは、
     ファイルではb,ofはqh,TheはWkhで表示されています。また、zはaに戻ります。
      willはamppです。数字やピリオド等はそのままです。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:2008年5月10日まで
[5] その他の制限:プログラムでポインタを用いて文字列を定義し、既存の文字列操作
         関数(strxxx(),例えばstrlen()など)は使わずに、自分で作成すること。
  
よろしくおねがいします。
896デフォルトの名無しさん:2008/05/02(金) 11:24:51
>>895
読み込みファイル名は?
書き込みファイル名は?
ファイルに保存されているってのはどんなん?
ピリオドの後は必ず改行?
最大文字数は?
897デフォルトの名無しさん:2008/05/02(金) 11:30:25
>>896 なぁ〜にぃ〜、やっちまったなっ!
男は黙ってぇ〜 クソース 男は黙ってぇ〜 クソミソース
gdgd言ってねーで、本来重要となる部分以外はエスパーしとけ、次っ!
898デフォルトの名無しさん:2008/05/02(金) 11:46:04
【未回答一覧】
分かる方お願い致します。

>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成
>>609 2008/04/27 02:12:23 の明日 コードを説明する
>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>784 2008/05/01 22:00 5日分の気温データを最高気温の高い順に並び替えるプログラム
>>651 2008/05/04 ペイントソフトの作成
>>830 2008/05/07 22:00 リスト処理
>>553 2008/05/10 ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。
>>826 2008/05/10 配線経路を導く配線アルゴリズム
>>629 指定なし パズル http://www2u.biglobe.ne.jp/~shunbook/omocha/tlwin4.htm
>>719 指定なし waveOutGetPositionを使用して、非同期で再生中のwavの再生位置を取得する
899デフォルトの名無しさん:2008/05/02(金) 12:00:55
>>876
これで解決すると思う
有限回の試行で元の数字より小さくできる
という事を証明すれば、少しずつ小さくしていって有限回で1になるよ
900生ハム:2008/05/02(金) 13:42:58
>>896
ファイル名は自分で決めるみたいなので、読み込みファイル:file1
書き込みファイル:file2でお願いします。保存されているのを詳しく書きますと、
最初にタイトル→一行空ける→本文(段落ごとに1行空ける)という感じの繰り返しです。
最大文字数は13です。また、ピリオドの後は続けて次の文があります。
ピリオドの後の文字は大文字です。改行は文の途中でも適当にしてありますが、
単語の途中で改行はしてないです。
よろしくお願いします。
 
901デフォルトの名無しさん:2008/05/02(金) 13:49:52
902デフォルトの名無しさん:2008/05/02(金) 13:50:12
>>900
ちょっwwwwww 先にそういう条件は入れておいてくれYO!
もう作っちまったけど、書き換えマンドクセッからもううpしねっ
903デフォルトの名無しさん:2008/05/02(金) 13:50:47
うpってる間にレスついてるし・・・
904生ハム:2008/05/02(金) 13:55:48
>>901
ありがとうございます!頑張って理解してみます。
>>902
すみません、最初から書いておくべきでした(><)
905デフォルトの名無しさん:2008/05/02(金) 13:57:25
>>904
とりあえず動かして正常に動くか確認してみてください
906デフォルトの名無しさん:2008/05/02(金) 14:03:31
>正しい英文に復元し
907デフォルトの名無しさん:2008/05/02(金) 14:17:45
ああああああああああ

逆!!!!


orz
>>901
18行目 fclose(NULL); になる
909デフォルトの名無しさん:2008/05/02(金) 14:19:57
>>908
あ、ごめん
上書き確認するコード入れてたときの残りだ
もうだめorz
打つ出し脳
910デフォルトの名無しさん:2008/05/02(金) 14:21:03
911デフォルトの名無しさん:2008/05/02(金) 14:21:16
なんだなんだ、やっぱり東大卒の教授の下で適切に指導を受けた
俺の力を借りなきゃダメなのか。けど、基地外低脳のうざい罵倒レスがきもいから
二度と力を貸してやらねーよw
これをネタに金儲けすることにしたから、アイデアを簡単に提供できるかってw
まっ、アイデアも何も、とっくに現代では発見され、わかりきっている手法に過ぎないがな。
912デフォルトの名無しさん:2008/05/02(金) 14:22:02
あ、

fclose(fr);
fclose(fw);

return 0;
}

ゴメン・・・
913デフォルトの名無しさん:2008/05/02(金) 14:28:40
>>895
#include <stdio.h>
#include <ctype.h>
int main(void)
{
FILE *fin, *fout;
int i, ch, cnt = 0;
char buff[64], temp;

if((fin=fopen("file1", "r"))==NULL) return 0;
if((fout=fopen("file2", "w"))==NULL) return 0;

while((ch=fgetc(fin))!=EOF) {
if(isalpha(ch)) buff[cnt++] = ch;
else {
for(i=0; i<cnt; i++) {
temp = buff[i];
if(isupper(temp)) temp -= temp - 'A' < cnt ? cnt - 26 : cnt;
else temp -= temp - 'a' < cnt ? cnt - 26 : cnt;
fputc(temp, fout);
}
fputc(ch, fout);
cnt = 0;
}
}
fclose(fin);
fclose(fout);

return 0;
}
914デフォルトの名無しさん:2008/05/02(金) 14:36:48
あ、isalphaは作らなくてよかったのね
最近勘違い多いなorz
915デフォルトの名無しさん:2008/05/02(金) 14:38:36
まぁもうアルゴリズムはわかったろ
916デフォルトの名無しさん:2008/05/02(金) 14:39:54
>プログラムでポインタを用いて文字列を定義し
ってあるのに皆ポインタ使ってない
917デフォルトの名無しさん:2008/05/02(金) 14:42:33
配列も実際はポインタ><
すぐに変えられるでしょ
918デフォルトの名無しさん:2008/05/02(金) 14:46:44
そうなんですか
そういえば ss[i]=*(pss+i) ですもんね

char *ss って感じのポインタを毛嫌いしてたので
この期にやってみようって思ったらなんとかできた
ってくらいのLv・・・

919デフォルトの名無しさん:2008/05/02(金) 14:49:50
配列とポインタの違いもわからんとは、やはり・・・いや、すまん。
俺は京大卒の教授の指導があるから、そんなことは安易に言わないよw
920デフォルトの名無しさん:2008/05/02(金) 15:11:34
教授が京大卒だからってその生徒が頭いいとは限らないってわからない?w
921デフォルトの名無しさん:2008/05/02(金) 15:12:21
やめとけって、ヤツは単なるかまってちゃん
922デフォルトの名無しさん:2008/05/02(金) 15:18:48
>>920
うわっ、妬み僻み。ポインタと配列の違いが分からないのを無視して
相手の素性をたたき始めた。もう終わってるわ、こいつ。
自分が気に入らない、あるいは自分基準で貶めた奴には
絶対に負けねーって魂胆だろ。

> 配列も実際はポインタ><
恥ずかしくて大学の授業じゃこんなこと言えねーわw
プリントアウト(印刷)をコピーとか言っちゃうレベルのタブー。
授業中に言ったら、名前を聞かれて成績に影響する減点を受けますよw
923デフォルトの名無しさん:2008/05/02(金) 15:20:54
#include <stdio.h>
int main(void) {
int a[2]={1,2},b[2]={3,4}; int *ip;
size_t i,as=sizeof(a)/sizeof(a[0]),bs=sizeof(b)/sizeof(b[0]);
printf("\na : "); for(i=0; i<as; i++) printf("%d ",a[i]);
printf("\nb : "); for(i=0; i<bs; i++) printf("%d ",b[i]);
printf("\nsizeof a : %d / sizeof b : %d / sizeof *ip : %d \n",sizeof(a),sizeof(b),sizeof(ip) );
printf("\na : %p / b : %p / *ip : %p \n",a,b,ip );
ip=a; printf("\nip=a; / ip : %p / a : ",ip);
for(i=0; i<as; i++) printf("ip[%d] %d ",i,ip[i]);
ip=b; printf("\nip=b; / ip : %p / b : ",ip);
for(i=0; i<bs; i++) printf("ip[%d] %d ",i,ip[i]);
*ip=a[1]; // ipはこの時点でbの先頭を指している。そこにa[1]の値を代入。
printf("\n*ip=a[1] / ip : %p %d / b[0] : %d \n",ip,*ip,b[0]); // すると、bの先頭の要素がa[1]と同じ値に。
printf("\na : "); for(i=0; i<as; i++) printf("%d ",a[i]);
printf("\nb : "); for(i=0; i<bs; i++) printf("%d ",b[i]);
return 0;
}
924デフォルトの名無しさん:2008/05/02(金) 15:23:57
ここで、int型の配列として宣言した識別子a,bのアドレスを交換しようとして無理。
しかし、int型の”ポインタ”はその同じ識別氏を用いて、a、bの値を参照することが出来た。
aはaの中身、bはbの中身、所詮ポインタの実態はアドレスなのさ、ふっ。
部屋の番号と位置は変更できなくても、中の家具、住民の移動は可能ということさ、ベイビー?
925719:2008/05/02(金) 15:24:38
すいません、無期限と書いていましたが、先ほど期限を指定されたので
更新します

期限 2008年5月9日 12時
926デフォルトの名無しさん:2008/05/02(金) 15:29:06
アプロダつかえよw
927839:2008/05/02(金) 17:01:45
>>847
ありがとうございます!
928886:2008/05/02(金) 17:39:06
>891
ループを
for(i=10;i>=2;i--) { //計算回数最多を検査
でやってみw
929デフォルトの名無しさん:2008/05/02(金) 17:50:25
[1] 授業単元:
 研究遂行上必要になりました。授業じゃありません。

[2] 問題文(含コード&リンク):
 16ビットグレースケールPNGファイルの
 任意の画像位置(i, j)におけるグレースケール値(0-65535)

[3] 環境
 [3.1] OS: VineLinux
 [3.2] コンパイラ名とバージョン: gcc-3.3.2
 [3.3] 言語: C/C++/どちらでも可

[4] 期限
 とくになし

[5] その他の制限:
 今まではjpg/bmpのRGBデータをimlibを使って抜いていました
 今回もlibpngで簡単にできると思っていたんですが、そんなことなかったです。。。
 サンプル画像はあぷろだにおきました(DL後、.txtを.pngにしてください)
 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6407.txt


よろしくお願いします。
930デフォルトの名無しさん:2008/05/02(金) 17:54:53
>>929
ImageMagickでも使ったら?
931ベーコン:2008/05/02(金) 18:05:02
返事遅れてすみません。
>>822
ありがとうございます!コンパイルはできましたが実行すると結果が0となります;
実行方法が間違っているんですかね・・。
>>834
ありがとうございます!動作確認できましたw非常に丁寧なプログラムでとても感謝してます!
今度は頑張ってアルゴリズムの理解に努めます!
932デフォルトの名無しさん:2008/05/02(金) 18:23:00
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6409.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)

[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5月6日まで
933デフォルトの名無しさん:2008/05/02(金) 18:31:58
934生ハム:2008/05/02(金) 18:48:26
>>901
ありがとうございます。コンパイルはできましたが実行するとSegmentation faltに
なっちゃいました(><)
>>910
ありがとうございます。実行した結果、英文の変換はされてましたが途中の1行のみ
正しく変換されていて、後はめちゃくちゃでした(;o;)
>>913
ありがとうございました。一部やってみたら綺麗に復元されていました!
935デフォルトの名無しさん:2008/05/02(金) 20:12:11
>>651
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg){
case WM_LBUTTONDOWN:
    座標取得
case WM_LBUTTONUP:
    座標取得
    いんばりでーと
case WM_RBUTTONDOWN:
    座標取得
case WM_RBUTTONUP:
    座標取得
case WM_PAINT:
    びぎん
    if(左ボタン)
     movetoびぎん座標
     linetoえんど座標
    if(右ボタン)
     なんか矩形かくコマンド
    えんど
case WM_DESTROY:
PostQuitMessage(0);
}
return でふぉるとぷろしーじゃ;
}
936デフォルトの名無しさん:2008/05/02(金) 23:57:26
>>830
当方で確認した環境は cygwin/WindowsXP, 処理系は gcc 3.4.4 です。
1.http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6410.txt
2.http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6411.txt
リストを追加する関数(addlist())の呼び出し方が複雑かもしれませんが、これが最終形だと考えています。
937デフォルトの名無しさん:2008/05/03(土) 01:11:17
>>934
英文をうpしてもらってもいい?
自分でも勉強になるし
938デフォルトの名無しさん:2008/05/03(土) 01:59:20
>>895 >>934
5/10までか、まだ時間があるな。さてと・・・俺のきしょいクソースを見たいとな?
ならば見せて進ぜよう、10日までに。まぁ、今日中に作り終わる予定だが。
変換と復元、2つのライブラリはすでに完成した。後は、単語をどのように読み込むか?
>>900 の条件を取り込んで書くが、いくつか疑問が。

変換するのは小文字のみ?大文字も同じように変換?それとも大文字はそのまま?
> ピリオドの後の文字は大文字です。
まぁ、ピリオドの前の単語で区切るから気にならんが、まさか、ピリオドを含んで
後ろの単語の文字数も含める、なんてことはなかろうな?
939デフォルトの名無しさん:2008/05/03(土) 02:24:24
940デフォルトの名無しさん:2008/05/03(土) 02:25:31
>>895
変換前:This is a pen. It is red.
変換後:Xlmw ku b tir. Kv ku vih.

って事?
941デフォルトの名無しさん:2008/05/03(土) 02:28:09
>>913に満足してるんだからいまさら書く必要ないだろ。
他の残ってるやつといてやれよw
942デフォルトの名無しさん:2008/05/03(土) 02:28:24
>正しい英文に復元し、ファイルに出力する
だから逆でしょ
入力:Xlmw ku b tir. Kv ku vih.
出力:This is a pen. It is red.
943デフォルトの名無しさん:2008/05/03(土) 02:30:03
カエサル暗号大人気だな
944デフォルトの名無しさん:2008/05/03(土) 02:32:02
>>941
またお前か、主観野郎w なんで必要性をお前基準で決めてんのぉ〜?
お前このスレの主か?管理者か?絶対的権力者か?全知全能の神か?w
945デフォルトの名無しさん:2008/05/03(土) 02:35:05
>>941
かまってちゃんは無視しろって
946デフォルトの名無しさん:2008/05/03(土) 02:36:26
>>895
情報が少なすぎる
textの1行は最大何文字?
単語は13文字ってあるけども
947デフォルトの名無しさん:2008/05/03(土) 02:38:41
948デフォルトの名無しさん:2008/05/03(土) 03:02:51
>>895
ポインタ使って、ついでに短めにしておいた。
#include <stdio.h>
#include <ctype.h>
main() {
char*p,*q,s[99];
int c;
FILE*f1,*f2;
if((f1=fopen("file1.txt","r"))&&(f2=fopen("file2.txt","w")))
while((c=fgetc(f1))!=EOF) {
for(p=s; isalpha(*p++=c); c=fgetc(f1));
for(q=s; q<p-1; q++) fputc((((*q&31)+27+s-p)%26)|(*q&224),f2);
fputc(*q,f2);
}
}
949デフォルトの名無しさん:2008/05/03(土) 03:03:46
>>942
> 入力:Xlmw ku b tir. Kv ku vih.
入力:Xlmw ku b shq. Kv ku uhg.
ではあるまいか
950デフォルトの名無しさん:2008/05/03(土) 03:16:33
>>948
ここまで短くできるのかw
951デフォルトの名無しさん:2008/05/03(土) 03:19:14
>>948
すぐ終了するとはいえ、ファイル閉じてないのがちょっと気持ち悪い。
952生ハム:2008/05/03(土) 03:33:38
>>937
本文のうpの仕方がいまいちわかりません・・
一応アップローダー==ラウンジに書き込みしましたが。
938>>
変換は大文字・小文字両方です。アルファベットのみ変換です。
>ピリオドを含んで 後ろの単語の文字数も含める、なんてことはなかろうな?
それはないと思います。ただピリオドの後続けて英文がある場合と、
コンマの後は1マス空けてあります。
>>940
942さんのおっしゃる通りです。
>>946
数えてみたところ一番長いやつで、61文字。スペース含めれば69文字でした。
>>948
ありがとうございます!ですがGWが終わるまでコンパイルできる環境にないので
動作確認が遅れます↓すみません。。


953デフォルトの名無しさん:2008/05/03(土) 03:38:38
913と948で問題なく変換できるね。
954デフォルトの名無しさん:2008/05/03(土) 03:41:20
と思ったけど、948だとzに復号されないな
955デフォルトの名無しさん:2008/05/03(土) 03:41:52
>>952
「参照」ボタンからうpしたいテキストファイルを指定すればいい
その後、スレに ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6412.txt
のようにテキストファイルへのリンクを貼り付ければおk
956デフォルトの名無しさん:2008/05/03(土) 03:45:21
>>948 なぁ〜にぃ〜っ!やっつまったな!(・∀・)ニヤニヤ
957デフォルトの名無しさん:2008/05/03(土) 03:45:54
>>900の条件と異なるかもしれないが
>>913は入力がアルファベットで終了すると最後の単語が出力されない
>>948は入力がアルファベットで終了するとEOF(0xFF)が出力される
958デフォルトの名無しさん:2008/05/03(土) 03:51:50
書き込んでから気づいてたけど、.で終了だから別にいいかって思ってた。
どうしても気になるなら
while(1) {
ch = fgetc(fin)

/*中略*/

if(ch==EOF) break;
fputc(ch, fout);
cnt = 0;
}
にでも修正してくれ。
959デフォルトの名無しさん:2008/05/03(土) 04:41:27
ほんま、EOF野郎はしつこくて鬱陶しいな。こいつ、日ごろよほど
他人に相手にされていなくて、こんなところで自分が相手にされていると
勘違いしよってからに。お前なんて誰も相手にしねーよバーかw
960948:2008/05/03(土) 05:06:13
>>954
デバッグした。ついでにもう少し短くしておいた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6414.txt
961デフォルトの名無しさん:2008/05/03(土) 06:54:34
This is a pen. it is a pen too.

この場合 pen. はピリオドも含めての文字数?

p+4なのかp+3なのかどっち?
962デフォルトの名無しさん:2008/05/03(土) 07:10:45
>単語の文字数の分だけ
単語にはピリオド含まないだろ
963デフォルトの名無しさん:2008/05/03(土) 07:42:55
Ken's family.の場合は?
964デフォルトの名無しさん:2008/05/03(土) 09:25:39
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):()

アルファベット小文字からなる文字列がある.
この文字列を圧縮する記法として,文字列 s に対し
 (s)n := s...s (s の n 回の繰り返し)
を導入する.圧縮はネストしていてよい.たとえば以下のようになる.
 (ab)2 = abab
 (b)10 = bbbbbbbbbb
 ((ab)3c)2 = (abababc)2 = abababcabababc

圧縮された文字列 ctext,自然数 i, j (i ≦ j),
(圧縮されていない)文字列 pattern が与えられる.
ctext を展開した文字列の i 文字目から j 文字目までに
pattern が含まれるかどうかを判定せよ.
含まれる場合は YES,含まれなかったり,i, j が
不正な位置を参照している場合は NO と出力せよ.
なお,圧縮後の文字列 ctext の長さは 10000 文字以内
(展開したときの文字列長は制限しない),
j - i ≦ 100000,pattern の長さは 10000 文字以内とする.

例:ctext = ((ab)3bc)4, i = 3, j = 15, pattern = cabababb
 ctext は展開すると abababbcabababbcabababbcabababbc であり,
 3 文字目から 15 文字目までは ababbcabababb.
 この中には pattern が含まれているので YES と出力.

[3] 環境
 [3.1,2] OS,コンパイラ: おまかせ
 [3.3] 言語: どちらでも可
[4] 期限: 2008年5月6日
[5] その他の制限: 特になし
965デフォルトの名無しさん:2008/05/03(土) 10:01:47
途中までやった 実行はしてない

#include <string>
#include <iostream>
#include <vector>
#include <stack>
using namespace std;

int getsu(string &x,int n){
int i;n++; for(i=n;i<x.size() ;i++)if(x[i]<'0' || x[i]>'9')break;
string y=x.substr(n,n-i);
return atoi(&y[0]);}

fnc(string &x, string &y){
stack <int > num;
int n,iti=0; y="";
for(n=0;n<x.size();n++){
if(x[n]=='(' ){num.push(iti);continue;}
if(x[n]==')' ){
int k,l,d;k=num.top(); num.pop(); l=getsu(x,n); d=iti-k;
for(int i=0;i<l;i++)y+=y.substr(k,d);iti+=d*l;continue;}
y+=x[n];iti++;}
}

main(){
string ctext = "((ab)3bc)4",tmp;
fnc(ctext,tmp);
}
966デフォルトの名無しさん:2008/05/03(土) 10:26:45
>>964
#include <string>
#include <iostream>
#include <vector>
#include <stack>
using namespace std;

int suketa(string &x,int n){
int i; n++; for(i=n;i<x.size() ;i++)
if(x[i]<'0' || x[i]>'9')break;
return i-n;}

tenkai(string &x, string &y){
stack <int > num;
int n=0,iti=0; y="";
for(;n<x.size();){
if(x[n]=='(' ){num.push(iti);n++;continue;}
if(x[n]==')' ){
int k,l,d,m;k=num.top(); num.pop(); l=suketa(x,n);
m=atoi(&x.substr(n+1,l)[0])-1; d=iti-k;
for(int i=0;i<m;i++)y+=y.substr(k,d);
iti+=d*m;n+=l+1;continue;}
y+=x[n];iti++;n++;}}

string find(string x,string y,int i,int j){
int m=x.find(y);
if(m==-1 || i>m)return "NO";
if(j-i>=y.size())return "YES"; return "NO";}

main(){
string ctext = "((ab)3bc)4",pattern ="cabababb",tmp;
tenkai(ctext,tmp); cout<<find(tmp,pattern,3,15);}
>>964
#include<stdio.h>
#include<string.h>
int decode_internal(const char *data, char **buf, int start, int end, int *current){
int i, loopnum, loop=0, n;
for(i=0;data[i];i++){
if(data[i]=='('){
i+=decode_internal(data+i+1, buf, start, end, current);
}else if(data[i]==')'){
loop++;
sscanf(&data[i+1], "%d%n", &loopnum, &n);
if(loop>=loopnum) return i+1+n;
i=-1;
}else{
*current+=1;
if(start<=*current && *current<=end){ *(*buf)++=data[i]; *(*buf)='\0'; }
}
}
return i;
}
int decode(const char *data, char *buf, int start, int end){
int work=0;
return decode_internal(data, &buf, start, end, &work);
}
int main(void){
static char buf[100000+1]="";
char *pattern="cabababb";
decode("((ab)3bc)4", buf, 3, 15);
printf("%s\n", strstr(buf, pattern)?"YES":"NO");

return 0;
}
968デフォルトの名無しさん:2008/05/03(土) 15:31:25
969デフォルトの名無しさん:2008/05/03(土) 15:34:58
>>965 >>966
他人にどうこう言うくせに、自分が糞なソースを堂々とここに書き込んでんじゃん
こいつ、かなりの基地外だぜ。恥さらしというのはこういう奴のことを言うんだよな。
どうせ、アップローダーが使えない初心者だろw
970デフォルトの名無しさん:2008/05/03(土) 16:06:41
(f)99999999999999999999999999999999999999999999999
971デフォルトの名無しさん:2008/05/03(土) 16:23:29
>>969
使える人にしてみても、あのうpろだ見にくいよ
972デフォルトの名無しさん:2008/05/03(土) 16:27:51
         ハ,,ハ
        ('(゚∀゚∩_ おいらをどこかのスレに送って!
      /ヽ   〈/\ お別れの時にはお土産を持たせてね!
     /| ̄ ̄ ̄|.\/
       | モツ煮 |/
        ̄ ̄ ̄
現在の所持品:たばこ・スーパーマリオブラザーズ・練炭・とうきびチョコ・ジアース・ブラゲ豚 ・Keron
kawaii 七輪 ブラウザゲー ブラゲスレ行きチケット(片道) うまか饅頭 ○=俺 School Days未開封
School Days開封済 うんこ インギー アーライ! kotsは神 スカイラーク全部 いちごましまろ
Muran 最強の銃 ハッピー☆マテリアル5月Ver アレテイル ヒロポン ふたなり画像.zip
PS2 ジャクムの兜昇華繚乱命中30%10連品 マーシャルグラブ攻撃21 ホーンテイルのネックレス卵3連品
ギアノスの鱗 プレマリン パキシル80mg RIOのハメ撮りビデオ Lady メリーの死神の鎌 
みんなのうらみ かのうじ 支那産農薬入り餃子 Vista(笑) 「3DMark Vantage」(笑) ダウングレード権 WindowsAero(苦笑)
973デフォルトの名無しさん:2008/05/03(土) 16:27:51
>>971
スレッド形式なのが終わってるよな
974デフォルトの名無しさん:2008/05/03(土) 16:36:44
うpろだが見やすい必要はどこにも無いだろ
どうせうpしてリンクコピーするだけだし
975デフォルトの名無しさん:2008/05/03(土) 16:38:14
おk うpした

あれリンクどこだ PageDown PageUp・・・

あ、これか



ってのがめんどう
976デフォルトの名無しさん:2008/05/03(土) 16:39:34
まあええやん
977デフォルトの名無しさん:2008/05/03(土) 16:51:50
ええんやけどね
978デフォルトの名無しさん:2008/05/03(土) 18:14:57
なんだかんだ言ってもおまいら、俺のクソミソースなアッーー!を見たいんだろ?
まぁ、今日中にうpってやるから、待ってろや、な?
979デフォルトの名無しさん:2008/05/03(土) 18:28:04
じつは >>619 も解かれて無いのか。
現実的な計算時間で答えが出る回答は出てないみたいだ。
980デフォルトの名無しさん:2008/05/03(土) 18:41:00
981デフォルトの名無しさん:2008/05/03(土) 18:55:04
>>980
>現実的な計算時間
982デフォルトの名無しさん:2008/05/03(土) 19:00:25
>>979
高校レベルの順列・組み合わせでできるとは思う。重複ありで文字を並べたときの場合の数を求める
983デフォルトの名無しさん:2008/05/03(土) 19:00:50
現実的な計算時間で答えが出るソースplz
人のものにけちつけるんだから当然出せるよね?
984デフォルトの名無しさん:2008/05/03(土) 19:02:15
985デフォルトの名無しさん:2008/05/03(土) 19:04:23
ホレ

Microsoft Visual C++ Toolkit 2003
ftp://195.252.112.9/programiranje/programski-jezici/VCToolkitSetup.exe

VCToolkitSetup.exe

size 32952488
sha1sum 956c81c3106b97042c4126b23c81885c4b5211f4

edonkey checksum
ed2k://|file|VCToolkitSetup.exe|32952488|c534888fa7605403dcb183d2d15282d1|/

986デフォルトの名無しさん:2008/05/03(土) 19:05:34
>>982
出来る出来ないはソース上げてから言ってね
987デフォルトの名無しさん:2008/05/03(土) 19:05:59
s_1 = ab ならば、abを少なくとも一つ含むものの場合の数が求まればよい
988デフォルトの名無しさん:2008/05/03(土) 19:12:45
>>987
それはいいのだが、s_1からs_mまでの重複を除外しないといけないよね。
本当に高校レベル?
989デフォルトの名無しさん:2008/05/03(土) 19:13:32
>>986
まず包含関係や、結合で作れる文字を除く。
そして、たとえば4桁で、aabを含むものを求めようとする。
A=aabとおき、{a,b,A}からなる2桁の文字を求める。
990デフォルトの名無しさん:2008/05/03(土) 19:17:12
>>988
たとえば、A=aabとB=abbの10桁とすると、AとBを少なくとも一回含むものの個数を数えて
AとBが同時に含まれる個数を引く。
991デフォルトの名無しさん:2008/05/03(土) 19:18:15
s1 と s2 で作れる文字列と s3 と s4 で作れる文字列が合流したら
ちゃんとそれも除かなきゃいけないよね。

m ≦ 100 だから、そっちで組み合わせ爆発起こしても無理だけど大丈夫?
992デフォルトの名無しさん:2008/05/03(土) 19:18:46
>>990それを引くのが大変だって言う話じゃないの?最大100個あるわけだし
993デフォルトの名無しさん:2008/05/03(土) 19:22:52
関心無いので、やりたい人がやればいい やれば出来る程度はおもう。
994デフォルトの名無しさん:2008/05/03(土) 19:26:13
無理無理
995デフォルトの名無しさん:2008/05/03(土) 19:27:08
>>990
それただの総当りより処理増えてるだろw
996デフォルトの名無しさん:2008/05/03(土) 19:29:02
{Si}を少なくとも一回は含む数は、
ΣSi を少なくとも一回は含む数 - ΣSiとSjを同時に含む数
では?
997デフォルトの名無しさん:2008/05/03(土) 19:29:51
>>995 文字列を生成して具体的にチェックするのでない。 
998デフォルトの名無しさん:2008/05/03(土) 19:32:10
ここ何スレですか生め
999銀河鉄道:2008/05/03(土) 19:33:25
1000デフォルトの名無しさん:2008/05/03(土) 19:33:35
オートマトンスレです梅
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。