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

1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
2デフォルトの名無しさん:2011/08/01(月) 21:33:50.95
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 152代目
http://hibari.2ch.net/test/read.cgi/tech/1312201995/
3デフォルトの名無しさん:2011/08/01(月) 21:34:12.66
間違えた
前スレ
C/C++の宿題片付けます 151代目
http://hibari.2ch.net/test/read.cgi/tech/1311089619/
4デフォルトの名無しさん:2011/08/01(月) 22:14:18.48
・回答者には素直に感謝すること。
・お礼にエッチな画像等嬉しいサプライズを用意できる場合は適時便宜をはかること。
5デフォルトの名無しさん:2011/08/02(火) 00:44:47.74
前スレ>>805の宿題の内容が今自分が抱えてるのと全く一緒でワロタ
6デフォルトの名無しさん:2011/08/02(火) 13:33:26.07
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):となりどおしの数字の差がその下の数字となるように、
1から15までの数を1回だけ使って例に従ってマスにいれなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2011年8月2日14:30まで]
[5] その他の制限: C言語初心者です。宜しくお願いします。
7デフォルトの名無しさん:2011/08/02(火) 15:06:55.73
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):自然数n > 1 と整数g, x >= 0 を入力として, g^x をn で割った余りg^x mod n を求めて表
示するプログラムを作成せよ.
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年8月3日
[5] その他の制限: 特にないです。
8デフォルトの名無しさん:2011/08/02(火) 15:13:18.56
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):自然数n>0を入力し、その自明でない約数(1とn以外の約数)をひとつ出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年8月3日
[5] その他の制限: 特にないです。
9デフォルトの名無しさん:2011/08/02(火) 15:54:34.30
C言語プログラミング
[2] あるlistを読み込みアルファベット順に並び替 え標準出力するプログラムを作成せよ。
[3.1] Windows vista
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2011年8月2日
[5] その他の制限: strcpyを使ってはいけないと いう制限があるんですが一度strcpy作ってから変 えてみたんですがいまいち分かりません、 どうすればいいでしょうか?http://codepad. org/LbBL9T3T
10デフォルトの名無しさん:2011/08/02(火) 15:56:34.46
11デフォルトの名無しさん:2011/08/02(火) 15:59:05.86
>>10
できればmain関数内だけで出来ませんか?
宜しくお願いします。
12デフォルトの名無しさん:2011/08/02(火) 16:02:38.05
13デフォルトの名無しさん:2011/08/02(火) 16:10:50.34
>>12
修正して貰っているのに本当に申し訳ありません。
#define定義も習ってませんので使わないで行えますか?
本当に何度も申し訳ありません。
14デフォルトの名無しさん:2011/08/02(火) 16:21:22.21
15デフォルトの名無しさん:2011/08/02(火) 16:26:20.32
[1] 授業単元:プログラム概論
[2] 問題文(含コード&リンク):
  多角形を中心座標に対し上下反転させる関数を作成しなさい。この関数の引数は、多角形のデータが
  収められた構造体のアドレスをとる。また、上下反転された座標は元の頂点座標に格納する変数に再代入される。
[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C++
[4] 期限:2011年 8月2日
[5] その他の制限:なし

おねがいしますm(__)m
16デフォルトの名無しさん:2011/08/02(火) 16:37:24.07
>>14
大変助かりました。
差し支えなければ、このプログラムのfor文の意味とif文の意味とuse[i]が1になる時と
ならない時の処理の違いを教えていただけないでしょうか?
宜しくお願いします。
17デフォルトの名無しさん:2011/08/02(火) 16:41:21.03
>>15
単純にやると右回りと左回りが逆になるけど
頂点の並び順に意味はあるの?
18デフォルトの名無しさん:2011/08/02(火) 17:10:55.92
上下反転なら中心のy座標を2倍してそっから元のy座標を引くだけじゃね
19>>15:2011/08/02(火) 18:31:00.84
>>18
そうです
20デフォルトの名無しさん:2011/08/02(火) 18:34:46.74
>>9
文字列copyではなく、文字列の先頭アドレスを配列(index[5])に入れ、
index[]内でソート。
http://ideone.com/Dnj6g
21デフォルトの名無しさん:2011/08/02(火) 20:17:47.12
e
22デフォルトの名無しさん:2011/08/02(火) 20:26:05.86

http://ideone.com/cJyaH
このプログラムはどのような処理を行って結果を表示しているか教えて頂けますか?
問題は>>6に記されています。
23デフォルトの名無しさん:2011/08/02(火) 20:57:43.16
それくらいソースみて理解できないならプログラムの才能ないんじゃね
24デフォルトの名無しさん:2011/08/02(火) 21:01:29.61
お願いします。
どのようにしてるか気になります。
25デフォルトの名無しさん:2011/08/02(火) 21:05:47.52
いやいやいやいやいやwwww
>>22開いてみたがwwww
これ嫌がらせ?w
26デフォルトの名無しさん:2011/08/02(火) 21:09:49.28
>>25
もっと分かりやすくできる方がいれば宜しくお願いします。
27デフォルトの名無しさん:2011/08/02(火) 21:40:15.68
>>25
これがメタプログラミングとかいうやつの成果物か‥‥‥。
28デフォルトの名無しさん:2011/08/02(火) 21:47:08.98
12 14 3 13 7
2 11 10 6
9 1 4
8 3
5
29デフォルトの名無しさん:2011/08/02(火) 22:15:32.69
3がふたつあるw
30デフォルトの名無しさん:2011/08/02(火) 22:49:00.04
>>25
どっちかって言うと出題者の嫌がらせ
main() だけで書けとか無理を言うとこうなる、>>22 は頑張ったよ
31デフォルトの名無しさん:2011/08/02(火) 23:07:12.09
>>30
main() だけじゃなく、逆三角形表示も嫌がらせだろ
普通は>>28の表示でOK
32デフォルトの名無しさん:2011/08/02(火) 23:30:53.83
>>26
ttp://ideone.com/zyjmn

無駄な文字列操作が発生するので遅くなるけど、main() だけで書くとこうなる
33デフォルトの名無しさん:2011/08/03(水) 06:57:19.37
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):1から15の数字から5個の数字を取って同じ数字が
使われない並びの通りをすべて表示させなさい。
例:1 2 3 4 5
1 3 2 4 5
11 12 10 9 8
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年8月3日 10:00
[5] その他の制限: 講師の方からfor文の中で回すといわれました。
そうゆう方法があれば宜しくお願いします。
34デフォルトの名無しさん:2011/08/03(水) 07:10:13.66
朝の7時前に講師から連絡があったのかよ
そんで期限が10時とかどうかしてるな
35デフォルトの名無しさん:2011/08/03(水) 07:12:25.18
air講師だから。
36デフォルトの名無しさん:2011/08/03(水) 07:13:14.21
>>33
逆に for 文を使わないでどうやって処理するか聞きたいわ

ここまで無知を装うとはさすがに釣りだろうな
37デフォルトの名無しさん:2011/08/03(水) 07:16:42.75
>>34
昨日に出された宿題です。
宜しくお願いします。
38デフォルトの名無しさん:2011/08/03(水) 07:57:33.74
誰も突っ込まないけど「そうゆう」って所からして本当にガキなんだろ
39デフォルトの名無しさん:2011/08/03(水) 07:58:23.86
>>33
ttp://ideone.com/z7mDN

トータルで36万くらいの組み合わせが有るけど出力するのかw
出力するなら10~12行目の // を外せ
40 忍法帖【Lv=1,xxxP】 :2011/08/03(水) 08:38:43.85
>>33
#include <stdio.h>

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

for(a = 1; a <= 15; a++) {
for(b = 1; b <= 15; b++) {
if(a == b) continue;
for(c = 1; c <= 15; c++) {
if(a == c || b == c) continue;
for(d = 1; d <= 15; d++) {
if(a == d || b == d || c == d) continue;
for(e = 1; e <= 15; e++) {
if(a == e || b == e || c == e || d == e) continue;
printf("%d %d %d %d %d\n", a, b, c, d, e);
} } } } }

return 0;
}

41デフォルトの名無しさん:2011/08/03(水) 08:53:34.98
順列の相違を除いて答えは406通りじゃね?
42デフォルトの名無しさん:2011/08/03(水) 09:05:54.14
P(15,5)じゃないの?
43デフォルトの名無しさん:2011/08/03(水) 09:46:53.51
同じ数を使わないならね
44デフォルトの名無しさん:2011/08/03(水) 10:16:30.07
本当に何度もすみません。以前に下記の件で質問した者です。
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):となりどおしの数字の差がその下の数字となるように、
1から15までの数を1回だけ使って例に従ってマスにいれなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2011年8月3日14:00まで]
[5] その他の制限: プログラムの作り方で最初の段は全ての組み合わせを作って
下の段には計算結果を入れていき、最後の段までダブらなければ表示というように
作ってみなさいと言われました。
イメージが湧かないので宜しくお願いします。
http://ideone.com/cJyaHの答えを作っていただいて申し訳ないのですが、コレでは読みにくいといわれました。
ご指導お願いします。
45デフォルトの名無しさん:2011/08/03(水) 10:18:29.07
例を見ても理解できないアホってなんなんだろうな
46デフォルトの名無しさん:2011/08/03(水) 10:38:54.49
>>44>>33と同一人物なのか?
47デフォルトの名無しさん:2011/08/03(水) 10:47:28.67
「となり”どおし”」
この言葉使いの時点で同一人物ではないかと疑うわ
48デフォルトの名無しさん:2011/08/03(水) 10:50:23.71
同一人物です。
度重なる質問誠に申し訳ありません。
宜しくお願いします。
49デフォルトの名無しさん:2011/08/03(水) 10:51:00.09
俺は同一人物じゃないと思うわ
もし>>44==>>33だとしたら、>>33の問題に回答してもらったにもかかわらず、
礼も言わずに次の問題を丸投げしてくる無礼極まりない奴だということになるからな
50デフォルトの名無しさん:2011/08/03(水) 10:53:01.69
レスのタイミングが思い切りズレたな……まあいいや
51デフォルトの名無しさん:2011/08/03(水) 11:02:14.95
本当にすみません。
以前、回答してくださった方には大変感謝しております。
誠にありがとうございました。
52デフォルトの名無しさん:2011/08/03(水) 11:05:27.31
本当は申し訳ないともありがたいとも思ってないくせに
常識もない技能もないじゃ人生行き詰まるぞ
53デフォルトの名無しさん:2011/08/03(水) 11:44:00.62
質問者が >>1 を読んでないのは判った。
>・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
54デフォルトの名無しさん:2011/08/03(水) 12:00:18.11
>>41
>>33を読んでその書き込みができるのはすげーよw
55デフォルトの名無しさん:2011/08/03(水) 12:03:24.21
      ((( )))
      (  ´Д`)
      ⊂  ._つ
      人 Y
       し'(_)
56デフォルトの名無しさん:2011/08/03(水) 12:50:23.10
>>53
>>1に書いてあることを読んで実践できるようなのなら、宿題くらい自力で何とかしようとすると思うんだ
57デフォルトの名無しさん:2011/08/03(水) 12:58:43.62
所詮匿名サイト。なりすまされたからといって、あまり不都合はないし。
58デフォルトの名無しさん:2011/08/03(水) 13:06:03.45
>>56
守ってないから無駄なやり取りが起きてる
59デフォルトの名無しさん:2011/08/03(水) 13:33:03.37
自分が答えるわけでもないのに、テンプレやお礼にこだわるやつってなんなの
60デフォルトの名無しさん:2011/08/03(水) 16:08:32.06
それが日本人
自分はしないが、いちゃもんはつけるって日本の美しい作法
61デフォルトの名無しさん:2011/08/03(水) 17:04:37.95
お前は国に帰ってうんこでも食ってろよw
62デフォルトの名無しさん:2011/08/03(水) 17:29:58.00
そもそも文句をつけてる奴がこのスレで回答してないなんてことの根拠はどこにもないだろ
馬鹿なの?社会不適合者なの?
社会不適合者だから「ぼくのてんさいぶりをみとめてくれないにほんじんども」を批判したくなっちゃうの?
63デフォルトの名無しさん:2011/08/03(水) 17:32:26.32
>>44
ベタな書き方だが。
http://ideone.com/jMGdF
64デフォルトの名無しさん:2011/08/03(水) 17:49:00.43
>>63
俺にはさっぱりだが
>>44のやり方指示をコードにするとそうなるのか
良く考えつくな

>>61-62 基地外だろ
65デフォルトの名無しさん:2011/08/03(水) 17:55:51.57
>>64
私は君から基地外扱いされても何の損も無いが、
君が「ぼくのきにいらないことをいってくるやつ」を大した根拠も無く基地外扱いするというのは、
長い目で見れば君にとっては損かもしれない。
66デフォルトの名無しさん:2011/08/03(水) 18:00:37.84
馬鹿なの?社会不適合者なの?
社会不適合者だから
の根拠示せよ
67デフォルトの名無しさん:2011/08/03(水) 18:06:32.62
>>63
本当にありがとうございます。
誠に図々しいのですが、absは習ってないので使わない方法があれば教えて頂けませんか?
宜しくお願いします。
本当に何度もすみません。
68デフォルトの名無しさん:2011/08/03(水) 18:17:11.11
>>66
その文はすべて問いかけの形になっているから、特に根拠を示す必要もない。
もし君自身が馬鹿でなく社会不適合者でもないと思うのであれば、
「違う」と答えてくれて構わない。
69デフォルトの名無しさん:2011/08/03(水) 18:19:35.97
それでも、私が前述のように推定した根拠を示すとすれば、
「文句をつけてる奴がこのスレで回答してない」といったことを根拠も示さず
あたかも一般的に認められた事実であるかのように用いた>>59のレスを一般化して
「それが日本人」であるということを述べたが、それが誤りであり、
そのような誤った論の展開を行うものは一般的に「馬鹿」と呼ばれており、
またその程度の知能では社会生活も困難である、すなわち社会不適合者であろう、というのが根拠であった。
70デフォルトの名無しさん:2011/08/03(水) 18:20:03.95
基地外って指摘することになんか意味あんのかね
無駄に荒れる原因になるだけなのに
71デフォルトの名無しさん:2011/08/03(水) 18:23:23.19
>あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
>気に入らない質問やその他の発言はスルーの方向で。
72デフォルトの名無しさん:2011/08/03(水) 18:24:19.78
>>66
abs(a - b) を a-b>=0?a-b:b-a
73デフォルトの名無しさん:2011/08/03(水) 18:24:41.85
>>67
absというのが絶対値のことだというのがわかれば、自分でabs関数にあたるものを作って……
って、main関数の中で完結させないといけないんだっけ
そうするとmain関数の中で直接絶対値を求められるように書いて……ってしちめんどくせえ
こんな糞みたいな制限の中でやらせる講師は糞だな
パズルやってんじゃないんだから使えるもんは使わせりゃいいのに
74デフォルトの名無しさん:2011/08/03(水) 18:25:54.67
>>67
x = abs(a - b);


x = a - b;
if(x < 0) x = -x;

の形にすればいい。
本当に課題なら>>1にも有るように、後出し連続は嫌われる。
制限を書き切れないなら、例えば直前に習った課題の結果を貼って、
「今はこのレベルです」って言わないと、回答者にも判らんぜ。
75デフォルトの名無しさん:2011/08/03(水) 18:29:13.59
>>41
>>33 の例を見ると順列も区別してるよ
76デフォルトの名無しさん:2011/08/03(水) 18:31:30.75
それにしたってC(15,5)=3003(通り)だろう
どうやったら406って数字が出てくるんだ?
77デフォルトの名無しさん:2011/08/03(水) 18:35:59.80
俺に聞かれても....
787・8:2011/08/03(水) 18:40:47.46
7と8の質問者です。どなたかお願いできないでしょうか。
79デフォルトの名無しさん:2011/08/03(水) 18:43:47.20
前スレで答えてもらった人とは別なの?
80デフォルトの名無しさん:2011/08/03(水) 18:45:06.16
336通りの間違いじゃね?
81デフォルトの名無しさん:2011/08/03(水) 18:49:01.45
336もどうやって出したのかわからんな
82デフォルトの名無しさん:2011/08/03(水) 18:58:53.32
83デフォルトの名無しさん:2011/08/03(水) 19:12:30.08
84デフォルトの名無しさん:2011/08/03(水) 19:12:38.36
85デフォルトの名無しさん:2011/08/03(水) 19:13:26.62
867・8:2011/08/03(水) 21:10:31.94
みなさんありがとうございます。
前スレに出てたんですね。
本当に助かりました。
87デフォルトの名無しさん:2011/08/04(木) 00:52:25.75
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
直交座標系の座標(x,y)を極座標系の座標(r,θ)に変換する関数と、
その逆変換をする関数を作成しなさい。
ただし、直交座標系(orthogonal coordinate system)の座標と、
極座標系(polar coordinates system)の座標はそれぞれ構造体を
用いて定義すること。
{x=rcosθ,y=rsinθ
{r=√(x^2+y^2),tanθ=y/x
上の演習を前スレ>>409
http://codepad.org/ncFr1HSH
のように作っていただいたのですが、実行時に直交座標系を入力し、
極座標系の座標(r,θ)変換した出力と、その逆変換の出力ができる
プログラムを自力で付け加え作成することができませんでした。
大変申し訳ないのですが、どなたか実行結果が出るプログラムを作成お願いします。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:7月4日
[5] その他の制限:特になし
お手数ですが、よろしくお願いします。
88デフォルトの名無しさん:2011/08/04(木) 01:55:42.09
1年近くあるんだから、今依頼しなくても良いだろうに
89デフォルトの名無しさん:2011/08/04(木) 02:37:01.49
来年の7月4日までとは気が早いなw
90デフォルトの名無しさん:2011/08/04(木) 07:31:31.97
>>74
助かりました。
ありがとうございます。
91デフォルトの名無しさん:2011/08/04(木) 08:16:17.91
92デフォルトの名無しさん:2011/08/04(木) 09:37:59.07
>>91
ありがとうございます!
本当にたすかりましたっ!
93デフォルトの名無しさん:2011/08/04(木) 09:53:47.55
C では ¥を記述するときいつも\\って書くの?
94デフォルトの名無しさん:2011/08/04(木) 10:00:46.59
\を常に\\と書くとする。

このとき、\\は\\\\と書かなければならない。
\\\\は\\\\\\\\と書かなければならない。
\\\\\\\\は\\\\\\\\\\\\\\\\と書かなければならない。
これが永遠に繰り返されるため、\を含むプログラムの記述は不可能である。
95デフォルトの名無しさん:2011/08/04(木) 10:02:25.40
永遠に繰り返してください
96デフォルトの名無しさん:2011/08/04(木) 10:03:49.12
>>37
お湯を沸かす、みたいな話だな。
97デフォルトの名無しさん:2011/08/04(木) 10:04:48.21
X >>37
O >>94
98デフォルトの名無しさん:2011/08/04(木) 11:58:59.75
>>94
よく見ろ
\→\\じゃなくて¥→\\だ
99デフォルトの名無しさん:2011/08/04(木) 13:57:24.60
質問テンプレ
[1]授業単元:プログラミング
[2] 問題文:ガウスの消去法
以下に示す連立方程式をガウスの消去法を利用してプログラムせよ。
また、ピボッティングを導入して確実に解けるようにせよ。
6x_1+2x_2+x_3=26
3x_1-8x_2-x_3+3x_4=52
4x_1+2x_2-9x_3-5x_4=14
2x_1-9x_2+4x_3-x_4=78

[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:わかりません
[3.3] 言語:C言語
[4] 期限:2011年8月4日18:00まで

よろしくお願います!!
100デフォルトの名無しさん:2011/08/04(木) 13:57:34.53
[1] 授業単元:c言語演習
[2] 問題文 :9,2,8,1の数字四項の組み合わせをすべて表示しなさい。
同じ数字が使われてる組み合わせはNGで表示しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年8月4日 15:00
10199:2011/08/04(木) 14:02:20.84
>>99の追記です

ヒント
(1)2次元配列
(2)for文
(3)printf文

と書いてありました。
よければ上のヒントを入れてプログラミングを作成してほしいです。
102デフォルトの名無しさん:2011/08/04(木) 14:21:09.22
>>100
間違えました。NG前に付けて組み合わせを表示しなさいでした。
103デフォルトの名無しさん:2011/08/04(木) 14:46:16.45
>>102
こんな感じに表示して欲しいんだろ
表示は4桁数字にしたとき、小さい順or大きい順にしたほうが良いんじゃないか
小さい順例
NG:
1111
1112
1118
1119
1121
1122
.....
---------
OK: 
1289
1298
....
104デフォルトの名無しさん:2011/08/04(木) 15:21:52.82
>>100
#include <stdio.h>

int main(void)
{
int i, j, k, l, a[4] = {1, 2, 8, 9};

for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++) {
for(k = 0; k < 4; k++) {
for(l = 0; l < 4; l++) {
if(i == j || i == k || i == l || j == k || j == l || k == l) printf("NG:");
printf("%d %d %d %d\n", a[i], a[j], a[k], a[l]);
} } } }

return 0;
}
105デフォルトの名無しさん:2011/08/04(木) 16:17:06.53
>>100
問題文は丸々全文をそのまま貼らないと意図がわからなくなるぞ
そのまま貼っても分からないときもあるが
106デフォルトの名無しさん:2011/08/04(木) 17:07:50.21
>>91
さらっと仕様と逆の回答をするところが渋いな
まぁ >>87 みたいな馬鹿にはそれすら気が付かないだろうけど
10799:2011/08/04(木) 20:42:15.93
>>99です。

延長しますんで、どなたかよろしくお願いいたします!
108デフォルトの名無しさん:2011/08/04(木) 21:19:06.44
109デフォルトの名無しさん:2011/08/04(木) 21:27:48.30
不覚にもわろたw
11099:2011/08/04(木) 21:33:47.76
>>108
出来てないじゃないっすか!
せっかくパソコン起動したのに!

誰か>>99のプログラミングできる男前な人
いないっすか?
111デフォルトの名無しさん:2011/08/04(木) 21:44:58.00

[1] 授業単元: プログラミング演習(発展課題)
[2]
下の配列から"CGUU"をギャップ("-")を含んでいても検出できる正規表現を作成せよ。

CCAGCUCCC-G---U--UGGG
[3] 環境
 [3.1] OS: Mac OS Lion
 [3.2] gcc
 [3.3] C++
[4] 期限:無期限
[5] その他の制限:
C++で正規表現を使うにはBoostのXpressiveかRegexを使う必要があるのですが、
今までBoostなんて触った事ないからわかりません><
112デフォルトの名無しさん:2011/08/04(木) 22:30:58.94
>>111
セミコロン(;)一つに収まるプログラムじゃないといけないのか?
113デフォルトの名無しさん:2011/08/04(木) 22:38:20.58
>>111
前処理でギャップをなくすほうが間違いが少なくて楽なんだがダメ?
114デフォルトの名無しさん:2011/08/04(木) 22:43:06.90
(i)<私…○○コロンちゃん
115デフォルトの名無しさん:2011/08/04(木) 22:43:11.93
C*[-]G*[-]U*[-]U

こんな感じかな?適当w
116デフォルトの名無しさん:2011/08/04(木) 22:43:24.32
C-*G-*U-*U-*だろうが、Boostはspiritしかいじったことなかったからわからん。
Perl embedなんか使ってやる方法もあることはあるんだろうけど、指定ライブラリを使わんことには課題こなしたことにはならんのだろうな。
117デフォルトの名無しさん:2011/08/04(木) 22:44:28.32
おっと。最後の-が必要無かったとか、-ってメタ文字だったけ?とか考えてなかった
118デフォルトの名無しさん:2011/08/04(木) 22:50:18.03
習熟度や問題を見ていても
>>115 が妥当じゃないかな。
119デフォルトの名無しさん:2011/08/04(木) 22:56:39.48
質問テンプレ
[1]授業単元:プログラミング
[2] 問題文:ガウスの消去法
以下に示す連立方程式をガウスの消去法
を利用してプログラムせよ
また、ピボッティングを導入して確実に
解けるようにせよ
6x_1+2x_2+x_3=26
3x_1-8x_2-x_3+3x_4=52
4x_1+2x_2-9x_3-5x_4=14
2x_1-9x_2+4x_3-x_4=78
[3] 環境[3.1] OS:Windows[3.2] コンパイラ名とバージョン:わかりま せん
[3.3] 言語:C言語
[4]期限2011年8月5日8時00分まで

よろしくお願います!!
120デフォルトの名無しさん:2011/08/04(木) 23:02:37.46
マルチウザい
121デフォルトの名無しさん:2011/08/04(木) 23:14:04.91
>>120
ごめんなさい!
わかる方いませんか?
122デフォルトの名無しさん:2011/08/04(木) 23:16:23.15
むしろ何が分かんないの?
123デフォルトの名無しさん:2011/08/04(木) 23:21:10.92
一つもわかりません。
問題の意味もわかりません。

だから誰か助けてくれないかなと思いまして
124デフォルトの名無しさん:2011/08/04(木) 23:23:15.39
x_1,x_2,x_3,x_4を求めたいんだと思います
125111:2011/08/04(木) 23:30:41.97
111です。動きました!ありがとうございます!

#include<iostream>
#include<string>
#include<boost/xpressive/xpressive.hpp>
using namespace std;
using namespace boost::xpressive;

int main(){
string target = "CCAGCUCCC-G---U--UGGG";
smatch m;
sregex pattern = sregex::compile("C[-]*G[-]*U[-]*U");
if(regex_search(target,m,pattern)){
cout << "CGUU is " << m.position() << endl;
}
}
126デフォルトの名無しさん:2011/08/04(木) 23:33:43.28
数値計算ってCでやるもんじゃねーよな
127デフォルトの名無しさん:2011/08/04(木) 23:36:41.17
>>126
意味が分からんけどそろばんで頑張れ
128デフォルトの名無しさん:2011/08/04(木) 23:42:17.09
>>125
[と]はいらないんじゃね
C-*G-*U-*U
まああっても無くても意味は変わらんけど
129デフォルトの名無しさん:2011/08/04(木) 23:47:25.76
>>118
いや>>115は間違ってるだろw
130デフォルトの名無しさん:2011/08/04(木) 23:48:22.94
>>119
そんなのを依頼するなよ
同じようなのはたくさんネットに転がっているから、だれもやらないよ
http://www6.atwiki.jp/c-cpp_homework/pages/23.html
をおまえの連立連立方程式の値に変えろ
131111:2011/08/04(木) 23:55:54.19
111です。さっきのプログラムなのですが、
検索配列を直接打ち込むのではなく、
string x = "GCUU";
としたうえで正規表現を作成するにはどうすれば良いのでしょうか?つまり
sregex pattern = sregex::compile("x[0]-*x[1]-*x[2]-*x[3]");
こんな感じにしたいのですが、うまくいきません。
132デフォルトの名無しさん:2011/08/05(金) 00:01:24.35
char x = "GCUU";
char buff[256]; //十分なサイズ
sprintf(buff, "%c-*%c-*%c-*%c", x[0], x[1], x[2], x[3]);
sregex pattern = sregex::compile(buff);

こーいう感じで。ただ、それがホントに必要なのかどうか考えたほうが良いと思う。
133111:2011/08/05(金) 00:08:14.58
>>132

うおおー、できました!ありがとうございます!
検索対象が一つでなく複数のときに、for文で回したいなーと思っていたのです。
134デフォルトの名無しさん:2011/08/05(金) 00:28:32.70
>>130
美男ですね。

しかし、私のパソコンにはプログラミングのソフトが入ってないため
確認できないっす。。。
さらにネットに繋がってないため、XPERIAの画面見ながらひたすら打ってます!
135デフォルトの名無しさん:2011/08/05(金) 06:14:13.61
スマホならideoneでも使って確認できるだろ
136デフォルトの名無しさん:2011/08/05(金) 22:51:55.69
[1] 授業単元: linux programing
[2] 問題文(含コード&リンク):xwindowを用いずに、キーボードのpush, releaseを検出する汎用関数を作成せよ。
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 2011年8月10日
[5] その他の制限: なし
137デフォルトの名無しさん:2011/08/06(土) 03:14:36.16
138デフォルトの名無しさん:2011/08/06(土) 04:38:03.51
139 ◆1XGvh/OSVY :2011/08/07(日) 11:28:34.96
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):二つの数量(x,y) に関するデータを、
• xi: 区間[0:10] の間の一様乱数(i=1,...,10)
• yi: 2xi+1+di(di:正規乱数N(0,0.52))
として作成し、データファイルに出力するプログラムを作成せよ。提出物はプログラムのソース。
(2)
作成したデータファイルからデータを読み込み、回帰直線の標本回帰係数、相関係数を計算し、標準出力に出力する
プログラムを作成せよ。提出物はプログラムのソースと出力結果とする。
[3] 環境
 [3.1] OS: (/Linux/)
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C言語
[4] 期限: ([2011年8月11日24:00:まで]
[5]
140 ◆1XGvh/OSVY :2011/08/07(日) 11:31:04.59
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double GetRandom(int min,int max);
double NormRand();
double arand();

int main()
{
FILE *fp;
int i;
double x[10],y[10],z[10];
for (i = 0;i < 10;i++) {
x[i]=0;
y[i]=0;
z[i]=0;
}

for (i = 0;i < 10;i++) {
x[i]=GetRandom(0,10);
z[i]=NormRand();
y[i]=2.0*x[i]+1+0.5*z[i];
printf("x%d %lf \n",i, x[i]);
printf("y%d %lf \n",i, y[i]);
}
141 ◆1XGvh/OSVY :2011/08/07(日) 11:33:03.60
fp=fopen("repo2.dat","w");
for (i = 0;i < 10;i++) {
fprintf(fp,"%.3lf\n",x[i]);
}
for (i = 0;i < 10;i++) {
fprintf(fp,"%.3lf\n",y[i]);
}
fclose(fp);
return 0;
}

double GetRandom(int min,int max)
{
return min + (double)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
142 ◆1XGvh/OSVY :2011/08/07(日) 11:36:29.70


void boxrnd(double m,double sig,double *x,double *y)
{
double r1,r2;
r1=rand()/32767.1;
r2=rand()/32767.1;
*x=sig*sqrt(-2*log(r1))*cos(2*3.14159*r2)+m;
*y=sig*sqrt(-2*log(r1))*sin(2*3.14159*r2)+m;
}

double NormRand()
{
int i;
int num=12;
double rt=0.0,rv;
for( i = 0;i < num;i++ ){
rv=(double)GetRandom(0.0,1.0);
rt = rv + rt;
}
return rt-6.0;
}
満点をとらなければいけなくこれで大丈夫でしょうか・・
143デフォルトの名無しさん:2011/08/07(日) 13:07:24.74
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):数値(1~100)を入力し、入力された数の
平均、標準偏差、最大値、最小値を求めるプログラムを作りなさい。
[3] 環境
 [3.1] OS:MacOS X
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: ([2011年8月7日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
144デフォルトの名無しさん:2011/08/08(月) 03:45:23.63
最近QZさん元気が無いけど逃げたのw?
145 ◆QZaw55cn4c :2011/08/08(月) 08:19:52.79
>>144
http://hibari.2ch.net/test/read.cgi/tech/1309048597/937あたりに夢中のようです。:-)
いや、それよりもあれほどいた粘着様が >>137, >>138 のようなことがあっても、きれいさっぱり消えてしまったのが不思議なんですが。
146デフォルトの名無しさん:2011/08/08(月) 13:50:58.41
死ね
147デフォルトの名無しさん:2011/08/08(月) 17:23:33.35
>>145
QZの神経のずぶとさは大物政治家を超えたな
ある意味尊敬する
148デフォルトの名無しさん:2011/08/08(月) 17:31:48.37
カルシウムとれよ
149デフォルトの名無しさん:2011/08/09(火) 13:42:51.65
お願いします。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
以下の黒い四角で構成された図を、
同じ大きさ(1片20マス)・形(裏返し可)の
4片に分割する方法を全て列挙する
プログラムを作成せよ.

□□□□□□□□■■■■
■■■■■■■■■■■■
■■■■■■■■■■■■
■■■■■■■■■■■■
■■■■■■■■■■■■
■■■■■■■■■■■■
■■■■■■■■■■■■
■■■■□□□□□□□□

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C
[4] 期限: 2011年8月12日
[5] その他の制限: 特にないです。
150デフォルトの名無しさん:2011/08/09(火) 14:37:21.51
ちょっと面白いのがきたじゃないか
151デフォルトの名無しさん:2011/08/09(火) 14:44:26.31
これってGAで解くの?
152デフォルトの名無しさん:2011/08/09(火) 14:52:44.60
>>151
GAで全件列挙できるのか?
153デフォルトの名無しさん:2011/08/09(火) 15:43:07.05
QZなら全件列挙できるだろ
154151:2011/08/09(火) 16:09:01.27
機会があったらGAの勉強したくてな。

ちょっと考えたわけだが

正直まだわかっとらん

ちなみにQZじゃねーから
155デフォルトの名無しさん:2011/08/09(火) 16:11:31.76
☆テトロミノとかペントミノの数え上げと同じ問題だ☆



と思うとドツボに嵌るとみた
156151:2011/08/09(火) 16:16:44.44
ああ、少し勘違いしてた。

すまん
157デフォルトの名無しさん:2011/08/09(火) 16:32:26.48
12*8の96マスを20*4マスで分割するの?
158デフォルトの名無しさん:2011/08/09(火) 16:33:44.83
すまそ勘違いしてた。
159デフォルトの名無しさん:2011/08/09(火) 16:38:32.63
□はブランク(はみ出し禁止)でしょ
12*8-8-8 が収めるべきマス数
160デフォルトの名無しさん:2011/08/09(火) 20:17:08.13
>>149
一辺の形状はこんな風に飛び地になるのもあり?

□□□□□□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□□□□□□□□□
161デフォルトの名無しさん:2011/08/09(火) 20:17:42.75
× 一辺
○ 一片
162デフォルトの名無しさん:2011/08/09(火) 21:03:57.90
QZがあと2時間で*正しい*解答あげたら、皆QZを見直せ
163デフォルトの名無しさん:2011/08/09(火) 21:38:01.31
>>149 のプログラム実行中だが結果が出るまで一ヶ月くらいかかりそうだw
164デフォルトの名無しさん:2011/08/09(火) 21:54:07.01
>>160
「飛び地になる」というのが良くイメージ出来ないのですが、
多分駄目です。
同じ形状の断片が4つ出来なくてはいけないです。
165デフォルトの名無しさん:2011/08/09(火) 23:28:17.63
何を習った後の宿題なんだ?
もし何も無いところからこの宿題出されても
数日じゃ解ける奴あんまおらんのでは
166デフォルトの名無しさん:2011/08/09(火) 23:29:54.15
[1] 授業単元:C++プログラム
[2] 問題文(含コード&リンク):通信機器の料金を計算するプログラムを作成しなさい。

12か月分の情報を管理するために構造体を配列で管理する。
12か月分の合計利用料金を計算して結果を返す関数「OneYear_C」を作成しなさい。
毎月の利用料金は関数CC_Charge(通話料を計算する関数)とCP_Charge(パケット利用料金を
計算する関数)を使い求めて、変数Totalに格納しなさい。

また、線形リストの専用アドレスを渡すと、線形リストに格納されている12か月分の合計利用金額
を計算し、結果を返す関数all_Chargeも作成しなさい。月ごとの料金はTotalに格納されていると考えなさい。


[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C++
[4] 期限:8/11日まで

ここまで作成しました
http://codepad.org/mPK9vwvj
どこが悪いのかアドバイスしてください
おねがいしますm(__)m
167デフォルトの名無しさん:2011/08/10(水) 01:08:39.34
胃腸が悪いのね
168デフォルトの名無しさん:2011/08/10(水) 01:13:40.15
>>167
真面目に答えてやれよ
169デフォルトの名無しさん:2011/08/10(水) 01:19:20.78
胸糞悪い
170デフォルトの名無しさん:2011/08/10(水) 01:36:49.04
>>166
>Line 75: error: 'OneYear_C' was not declared in this scope
そんなに難しい英語じゃないんだから読もうとしてくれ
171>>166:2011/08/10(水) 01:40:09.86
「エラー:'OneYear_C'はこのスコープで宣言されていません」とはどういう意味でしょうか
宣言されていないとありますが、関数の呼び出しはしています
どうしてか理由を教えてください
172デフォルトの名無しさん:2011/08/10(水) 01:41:18.91
>>166

・プロトタイプ宣言を追加。
> int CC_Charge(int );
> int OneYear_C(plog *);
> int all_Charge(plog *);
> void CP_Charge(plog *);


・修正
71c75
< printf("%d月¥n",i);
---
> printf("%d月¥n",i+1);
79c83
< OneYear = OneYear_C(&Data);
---
> OneYear = OneYear_C(&Data[0]);
81c85
< all_Charge(&Data);
---
> all_Charge(&Data[0]);


・mainのforループ中に追加。
> Data[i].next = &Data[i+1];




173デフォルトの名無しさん:2011/08/10(水) 01:59:48.97
>>171
簡単に言うと、コンパイラが>>166のコードを上から見ていったときに、75行目で
 OneYear = OneYear_C(&Data);
という記述を見つけるわけだが、1行目から75行目までの時点では'OneYear_C'とは何か、ということに関しては一言も触れられていない。
よってコンパイラは上の記述の意味が分からず、エラーを吐いた。

これは、OneYear_C関数を使う前に定義しておくか、
>>172のようにプロトタイプ宣言を追加することで解決できる。
174デフォルトの名無しさん:2011/08/10(水) 02:01:09.93
>>164
解としてこんなのならOK?
□□□□□□□□■■■■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□□■■
□□□□□□□□□□■■
□□□□□□□□□□□□

□□□□□□□□■■■■
□□□□□□□□□□□■
□□□□□□■■■■□■
□□□□□□□□□■□■
□□□□□□□□□■□■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□□□□
175デフォルトの名無しさん:2011/08/10(水) 02:07:55.83
>>172
ありがとうございます
http://codepad.org/BXg36OYyに修正しました

ただ今度は、error C2664: 'CC_Charge' : 1 番目の引数を 'plog' から 'int' に変換できません
というエラーが出てきました
これは変換が上手くできてないからですか
教えてください
176>>166:2011/08/10(水) 02:31:58.36
177174:2011/08/10(水) 02:45:57.81
ようやく終わった
多分 >>174 で全部だ
178デフォルトの名無しさん:2011/08/10(水) 03:21:09.88
>>174
はい。okです。
すばらしいです。
179デフォルトの名無しさん:2011/08/10(水) 18:38:57.15
>>149
そういえば昔 Cマガ電脳クラブに似たような問題があったような
3日かそこらじゃ解けないよ
180174:2011/08/10(水) 20:02:40.95
>>179
上下左右の隣接を条件にすればシングルスレッド90分で走査が終わる
ハッシュに登録された数は枝刈りありで445万強
メモリ節約してメインメモリ内で収まるようにしてやれば早く済むよ
181デフォルトの名無しさん:2011/08/11(木) 14:52:47.84
[1] 3次元シミュレーション
[2] 3次元空間を電荷(100個)が相互作用で動くシミュレーションプログラムを作成せよ。働く力は引力、斥力。
 [3.1] Windows7
 [3.2] Visual Studio2008
 [3.3] C言語
[4] 2011年8月17日
[5] その他制限無

よろしくお願いします。
182デフォルトの名無しさん:2011/08/11(木) 14:59:08.43
>>181
距離がゼロ(完全に重なる)になるぞ
183デフォルトの名無しさん:2011/08/11(木) 15:00:19.84
>>195
ずいぶん頭の悪い講師に当たったな。
同情するよ。

出題のセンスが悪すぎる。
これ、どうやって採点する気なんだろう?
184デフォルトの名無しさん:2011/08/11(木) 15:17:41.91
>>181
そもそも電荷じゃなくて荷電粒子だろ
185デフォルトの名無しさん:2011/08/11(木) 15:24:35.95
いや普通に電荷っていってたぞ
なんの分野の人ですかあなた
186デフォルトの名無しさん:2011/08/11(木) 15:28:34.89
>>185
電荷とだけ言われて解けるわけ無いんだよ
問題文全部書けよ
187デフォルトの名無しさん:2011/08/11(木) 15:32:34.90
>>198-199
まぁまぁ。悪いのはあくまでも出題者だから。
188デフォルトの名無しさん:2011/08/11(木) 15:38:18.91
Wikipediaより
>電荷(でんか、電気量)は、素粒子が持つ性質の1つである。電荷の量を電荷量という。
>電荷量のことを単に電荷と呼ぶこともある。電荷を持つ粒子のことを単に電荷と呼ぶこともある。

()内に100個ってあるんだから意味を取り違えることはないと思うんだが
189デフォルトの名無しさん:2011/08/11(木) 15:44:06.92
>>188
その情報で解けるようになったと思うの?
もっと調べてまっとうな問題文にしてくれ
190デフォルトの名無しさん:2011/08/11(木) 15:48:48.36
>>184のバカさを指摘するだけのレスだから、問題どうこうとか興味ない
191デフォルトの名無しさん:2011/08/11(木) 16:59:32.60
電荷って便利な言葉
192デフォルトの名無しさん:2011/08/11(木) 19:06:06.72
QZスレ 停止処分へ

【モリタポ有償】C/C++/Java の問題を片付けます(3)
http://hibari.2ch.net/test/read.cgi/tech/1309527259/
193デフォルトの名無しさん:2011/08/11(木) 19:10:04.39
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
102564 という数を4倍すると、410256 という数になる。
この数は元の数の末尾 4 が先頭に移動した形となっている。
同じく、ある数(自然数)を6倍すると、
元の数の末尾が先頭に移動した形となる。
その数(1つだけでよい)を見つけ、
出力するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語: C
[4] 期限: 2011年8月14日まで
[5] その他の制限: どうすればよいのか全然分かりません。宜しくお願いします。
194デフォルトの名無しさん:2011/08/11(木) 19:14:34.08
>>193
桁数が変わらないことから一番上の桁は1
一番下の桁は6,7,8,9のいずれか
おれにできるのはここまでだな
195デフォルトの名無しさん:2011/08/11(木) 19:18:39.11
不細工なやり方しか思いつかんw
196デフォルトの名無しさん:2011/08/11(木) 19:37:23.79
>>193
1 ~ 10^12 の範囲には無い
197デフォルトの名無しさん:2011/08/11(木) 19:58:25.76
>>193
6で開始の場合

06 -->36...(0+6*6)
36 -->39...(3+6*6)
39-->57...(3+9*6)
57-->47...(5+7*6)

これを、1になるか、同じ数が出てくるまで続ける。
1になっていたら、各ステップの数の1の位を出力。


4倍の例だと、
04-->16-->25-->22-->10-->01
で、各数字の1の位465201を逆から出力。
198デフォルトの名無しさん:2011/08/11(木) 20:01:51.27
あったまいいー
199デフォルトの名無しさん:2011/08/11(木) 20:09:22.42
>>197
すげー
200デフォルトの名無しさん:2011/08/11(木) 20:12:31.89
>>193,197
出力が不恰好だが、書いてみた。
http://ideone.com/IfyaC
201デフォルトの名無しさん:2011/08/11(木) 20:15:48.10
なぜそれでできるのか分からない・・・
まじで最近の俺の頭終わってるな・・・
202デフォルトの名無しさん:2011/08/11(木) 20:31:09.90
全種58桁とか普通にやったら絶対無理だな
203デフォルトの名無しさん:2011/08/11(木) 20:32:30.88
再帰使ってコード化してみた
#include <stdio.h>

void f(int a, int b)
{
int c = (a % 10) * b + a / 10;

if(c != 1) f(c, b);

printf("%d", c % 10);
}

int main(void)
{
f(1,6);
return 0;
}
204デフォルトの名無しさん:2011/08/11(木) 20:35:34.31
>>203
これもすごい。
205デフォルトの名無しさん:2011/08/11(木) 20:41:12.50
>>197, 203

有り難う御座います!

でも、なぜそれでできるのか分かりません。
206デフォルトの名無しさん:2011/08/11(木) 20:57:25.22
4までの場合は複数パターン存在するね
例えば 205 128 * 4 = 820 512
207デフォルトの名無しさん:2011/08/11(木) 21:07:06.90
4までに限った話じゃないだろ
208デフォルトの名無しさん:2011/08/11(木) 21:14:42.65
元の数の最上位桁が1であり、最上位1つ前の桁をn倍しても繰り上がりが起きない前提とする

元の数をn倍すると最上位桁はnになる
 →元の数の最下位桁はnである
→元の数をn倍すると最下位桁は「n*nの1の位の数」([※1]とする)になる
 →元の数の最下位1つ上の桁は[※1]である
→元の数をn倍すると最下位1つ上の桁は「n*nの10の位(繰り上がってきた)と[※1]*[※1]の1の位を足した数」([※2]とする)になる
 →元の数の最下位2つ上の数は[※2]である
→・・・
繰り返すと、前提を満たせる1が出てくるのでそこで打ち切れば答えになる
209デフォルトの名無しさん:2011/08/11(木) 21:16:57.92
6なら
1016949152542372881355932203389830508474576271186440677966
1186440677966101694915254237288135593220338983050847457627
1355932203389830508474576271186440677966101694915254237288
1525423728813559322033898305084745762711864406779661016949
の4つがあるし、下一桁がかける数から9まではある
210デフォルトの名無しさん:2011/08/11(木) 21:26:20.70
203をちょっと改良
#include <stdio.h>

void f(int s, int a, int b)
{
int c = (a % 10) * b + a / 10;

if(c != s) f(s, c, b);

printf("%d", a % 10);
}

int main(void)
{
int i, j;

for(i = 2; i <= 9; i++) {
printf("%d\n", i);
for(j = i; j <= 9; j++) {
f(j, j, i);
printf("\n");
}}
return 0;
}
211デフォルトの名無しさん:2011/08/11(木) 21:53:49.17
>>208
解説ありがとう御座いました。
212デフォルトの名無しさん:2011/08/12(金) 15:08:34.00
[1] シミュレーションプログラミング特論
[2] 重力多体問題のシミュレーションプログラムを作成せよ。質点の数は3<x<200で任意。
  式も一般的に使われているようなものを使用する。空間はxyz軸で作成する。質点の質量はランダム生成。
[3.1] Windows7
[3.2] コンパイラバージョン:わかりません
[3.3] C
[4] 2011年8月20日
[5] 式はWikipediaに記載されている式で大丈夫とのことでした。

よろしくお願いします。
213デフォルトの名無しさん:2011/08/12(金) 16:33:50.33
>>149
終わるまで10時間くらいかかるかも
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/165.txt
214149:2011/08/12(金) 17:12:18.98
>>213
一向に終わる気配が無いですが、ひとまず
ありがとうございました。
215デフォルトの名無しさん:2011/08/12(金) 17:15:46.46
>>214
4453781 で終わることになってるよ
216デフォルトの名無しさん:2011/08/12(金) 17:22:22.89
>>215
分かりました。気長に待ちます。
217デフォルトの名無しさん:2011/08/12(金) 19:26:44.82
>>216
初期値を変えると早くなるようだ

>>213 について

for(x=0;bit_get(&family[0], x, 0)==0;x++);
searchkey_put(&dest, &family[0], 8-x, 0);

for(x=11;bit_get(&family[0], x, 0)==0;x--);
searchkey_put(&dest, &family[0], 11-x, 0);


{2,2,2,2,2,2,2,2,1,0,0,0},

{2,2,2,2,2,2,2,2,0,0,0,1},

これで44万台で一つ目、61万台で二つ目の解が出て
2870482 で終了
218デフォルトの名無しさん:2011/08/14(日) 09:27:38.45
めずらしく書き込みがないなーと思えば
夏休みだからか
219デフォルトの名無しさん:2011/08/14(日) 09:55:59.71
おいまた糞スレ立ったぞ

【モリタポ有償】C/C++/Java の問題を片付けます(4)
http://hibari.2ch.net/test/read.cgi/tech/1313183984/
220 ◆QZaw55cn4c :2011/08/14(日) 13:20:01.61
>>219
宣伝乙。市ね
221デフォルトの名無しさん:2011/08/14(日) 15:06:34.55
自演乙
222 ◆QZaw55cn4c :2011/08/15(月) 03:32:10.04
>>147
実生活でもこれくらいずぶとければいいのですけれどもね。:-)
223デフォルトの名無しさん:2011/08/16(火) 14:51:29.98
[1] 授業単元:アルゴリズム設計
[2] 問題文(含コード&リンク): 与えられた関数f(x,y)の最大値をSimulated Annealing法を用いて求めよ。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:gcc 3.4 or visual studio 2008
 [3.3] 言語: C
[4] 期限: 2011年8月21日
[5] その他の制限: 制限なし

よろしくお願いします。
224デフォルトの名無しさん:2011/08/16(火) 15:16:27.54
すごい大雑把な問題文だけど、本当にそれだけの情報から回答を作っていいのかい?
225デフォルトの名無しさん:2011/08/16(火) 16:03:40.97
>>223
http://ideone.com/nM3N4

SA法っていうの初めて聞いたから
もしかしたら間違ってるかも?
226デフォルトの名無しさん:2011/08/16(火) 17:26:20.21
>>218
夏休みは宿題があるはずなのに
遊び呆けてるギリギリに泣きついてくるパターンか・・・

さっさと問題ばら撒いて対応時期分散させれば
回答漏れないだろうに
227デフォルトの名無しさん:2011/08/16(火) 17:45:29.10
大学で夏休みの宿題なんてあるか?
228デフォルトの名無しさん:2011/08/16(火) 18:52:51.54
あたしFランだけど宿題無いよ
229デフォルトの名無しさん:2011/08/16(火) 18:59:40.16
専門学校なんだろ
230デフォルトの名無しさん:2011/08/16(火) 19:06:16.00
>>224,225
f(x,y)が与えられてました。
すいません

[1] 授業単元:アルゴリズム設計
[2] 問題文(含コード&リンク): 与えられた関数f(x,y)の最大値をSimulated Annealing法を用いて求めよ。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:gcc 3.4 or visual studio 2008
 [3.3] 言語: C
[4] 期限: 2011年8月21日
[5] その他の制限: 制限なし

f(x,y)=∑_(i,j∈1,2)▒p_ij *exp⁡(-g_ij (x,y))
∑_(i,j∈1,2)▒p_ij =1
g_ij (x,y)=((x-μ_xi)/σ_xi )^2+((y-μ_yj)/σ_yj )^2+ρ_ij ((x-μ_xi)/σ_xi )((y-μ_yj)/σ_yj )
入力する値は
p_11,p_12,p_21, μ_x1, μ_x2,μ_y1, μ_y2,σ_x1,σ_x2,σ_y1,σ_y2, ρ_11, ρ_12,ρ_21, ρ_22
の15つの値
p_22はp_22=1-p_11-p_12-p_21となる。


よろしくお願いします。
231デフォルトの名無しさん:2011/08/16(火) 19:17:11.59
ほらきた情報の後出し
しかもそれがないと回答できない類のやつ
なに考えてるんだよほんとに
232デフォルトの名無しさん:2011/08/16(火) 19:49:37.56
そりゃあ自分で解く気なんてサラサラ無いんだから問題もロクに見てないわけで
233デフォルトの名無しさん:2011/08/16(火) 20:26:23.77
▒ってなんだよ
234デフォルトの名無しさん:2011/08/16(火) 20:36:42.39
>>230
ρをひとつでも-∞にするとf(x,y)が∞になって問題にならない気がするんだが
本当に条件はそれだけか
235デフォルトの名無しさん:2011/08/16(火) 20:38:17.57
解く気は無いが数式が読めない
数式エディタで作って画像貼ったほうがよさげ
236デフォルトの名無しさん:2011/08/16(火) 21:47:35.96
>>234
条件はこれだけですが…
237デフォルトの名無しさん:2011/08/16(火) 21:50:34.57
>>231
プログラムの概略がほしかったので数式までは載せませんでした
すいません。
>>225 さんのを参考にして作ってみます。
ありがとうございました。
238デフォルトの名無しさん:2011/08/16(火) 22:41:31.20
なんでもいいからC言語でログファイル出力してるサンプルがほしいけど
いまいち検索にひっかからない
検索の仕方がわるいのかな
239デフォルトの名無しさん:2011/08/16(火) 22:45:35.84
何でもいい の条件がわからない
C言語 ファイル出力で検索したらいいんじゃないの
240デフォルトの名無しさん:2011/08/17(水) 03:25:32.15
>>238
Unix なら syslog とか syslogd で検索したら?
241デフォルトの名無しさん:2011/08/17(水) 12:01:13.14
fopenしてfwriteしてfcloseすればいんじゃね?
バッファは知らん
242デフォルトの名無しさん:2011/08/18(木) 09:54:36.67
[1] 授業単元:DirectXプログラミング
[2] 問題文(含コード&リンク): dxsdk_feb2007でインベーダーゲームを作る。
  まずタイトル画面の表示スペースキーが押されたらゲーム開始。
  自機が消滅→ゲームオーバー画面表示
  敵が消滅→クリア画面の表示
[3] 環境
 [3.1] OS: (Windows7)
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: ([2011年8月20日13:00まで]
[5] その他の制限:DirectXを習いはじめの初心者です。コメントお願いします。
243デフォルトの名無しさん:2011/08/18(木) 11:28:10.13
>>242
ほんとうにそれでいいのか?
244デフォルトの名無しさん:2011/08/18(木) 15:09:36.60
>>243
大丈夫です。よろしくお願いします。
245 忍法帖【Lv=37,xxxPT】 :2011/08/18(木) 16:38:22.02
>>238
logger
246デフォルトの名無しさん:2011/08/18(木) 23:13:29.77
242はまだですか?
247デフォルトの名無しさん:2011/08/19(金) 02:43:00.68
これはたぶん他力だと間に合わないかもわからんから自力でやることを推奨するよ
248デフォルトの名無しさん:2011/08/19(金) 05:12:19.38
1日で催促?
249デフォルトの名無しさん:2011/08/19(金) 07:25:41.88
>>246のせいでやる気なくした。何様?
250デフォルトの名無しさん:2011/08/19(金) 11:29:47.68
242ってスペース押したらランダムで自機か敵機が消滅するんだよね
251デフォルトの名無しさん:2011/08/19(金) 11:52:48.23
一般的なインベーダーゲームと考えるのが妥当だろ
また例の100%説明されないと何もできない人か
252デフォルトの名無しさん:2011/08/19(金) 12:04:39.92
>>251
顧客との調整みたいにレビューでフィードバックがあるわけじゃないのに
仕様が提示されてない部分もエスパーしてできるとかおまえすごいな
2chにいないで仕事しろよ
253デフォルトの名無しさん:2011/08/19(金) 13:08:12.37
インベーダーゲーム作ってっていわれたら
>>250のような案を出すのかw
254デフォルトの名無しさん:2011/08/19(金) 13:32:11.35
>>252
「インベーダーゲーム」から、ランダムではなく自機と敵機で撃ち合って弾に当たったら消滅する
という程度の仕様を想像するのはエスパーでもなんでもない
むしろできない人がいたらびっくりする・・・びっくりしたよ

もちろん正確にはそれでいいかどうかの確認は必要だが
255デフォルトの名無しさん:2011/08/19(金) 13:46:05.80
名称だけ言われたらそのゲームのオーソドックスな仕様を想定するんだろうけど
期間短いしお願いする側は横柄だし仕様は書かれてないし>>250は皮肉だろうしお前らマジレスだし
とりあえず問題文だけ満たせればいいと思うよ
256デフォルトの名無しさん:2011/08/19(金) 13:49:20.75
インベーダーゲームって言ったら、
自機は左右にしか動けず弾は画面内に一発のみとか
敵数がでたまにUFOが横切って落とすとボーナスが貰えたりとか
シールドがあって敵以外にも自分の攻撃でも壊れたりとか
敵の弾が一列下から出てるおかげで名古屋撃ちができたりするあのゲームだろ
これほどはっきりした仕様はないな
俺は作らないけど。
257デフォルトの名無しさん:2011/08/19(金) 14:05:10.62
金出さずに曖昧な仕様で依頼する奴は、完成品みてそれじゃヤダと簡単に言い出す。
258デフォルトの名無しさん:2011/08/19(金) 14:18:47.24
あれはアセンブラで作られてたのか?
もしかしたらBASICかもなw
Cじゃ多分無理じゃね?
259デフォルトの名無しさん:2011/08/19(金) 14:25:35.09
>>258
QZ師が書いてくれるだろ
てか多分今コーディング中だろから
暫く待ったら?
260デフォルトの名無しさん:2011/08/19(金) 15:13:59.34
>>249>>248
242ですが246は自分ではないです
261デフォルトの名無しさん:2011/08/19(金) 15:17:56.62
>>250言葉足らずですいませんでした。
>>256の方の説明であってます。
262デフォルトの名無しさん:2011/08/19(金) 17:41:40.15
よほどの暇人じゃない限り2~3日とか無理だろ
じゃあ、これからdirectx勉強するわ
263 忍法帖【Lv=38,xxxPT】 :2011/08/19(金) 17:46:13.84
僕の課題が出せないと言うことは僕が単位を取るのに不利になるということ
なんですよ、そこのとこ分かってて話してます?
264デフォルトの名無しさん:2011/08/19(金) 18:02:24.67
C++ & OpenGLなら勉強がてらに作るかもしれん、それじゃ駄目?
265デフォルトの名無しさん:2011/08/19(金) 21:40:17.39
ネタでいいならつくるぞw
266デフォルトの名無しさん:2011/08/20(土) 16:24:02.18
>>264>>265
よろしくお願いします。
一応自分でも取り組んでみます。
267デフォルトの名無しさん:2011/08/20(土) 17:48:24.17
期限過ぎちゃってるやん
268デフォルトの名無しさん:2011/08/20(土) 18:18:28.78
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://i.imgur.com/pWn1j.jpg

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] 言語: C++
[4] 期限: 2011年8月27日
[5] その他の制限: 画像にあるとおりです。お願いします。
269デフォルトの名無しさん:2011/08/20(土) 18:20:49.32
>>268
画像落ちたな
270デフォルトの名無しさん:2011/08/20(土) 18:34:21.85
反転させるコマの位置をキーボード入力させる、とな
271デフォルトの名無しさん:2011/08/20(土) 18:43:14.44
配列変数を使って、オセロの盤を表示するプログラムを作る。
2次元配列の要素をマスに見立て、先手と後手が交互にコマを置く。
ただし、コマを反転させる処理をプログラムすることはせず、キーボードから手動入力させるものとする。
ただ表示するだけのプログラムである。このプログラムを作成し、プログラムリストと実行結果の例を提出せよ。

ヒント
a) マスの数は8×8とし、配列変数の値を0で初期化しておく。 例) int ban[8][8] = {0}
b) 先手と後手を判定するためには、次の処理を用いる。
player = 2 - loop % 2; //loop : ターン数、 player : 先手は1、後手は2
c) 配列要素 ban[x][y]には、何もなければ0、先手は1、後手は2が入る。
d) 画面上の表示を消去する方法は下記を参照。
#include <stdio.h>
#include <stdlib.h> // system("ds") 命令のために追加
・・・
clrscr(); //画面の表示を消去(clear screen の略)

c)の配列要素の値に応じて、□、○、●を表示する。
プレイヤーのコマの位置をキーボードから入力させ、配列要素に代入する。
反転させるコマの位置をキーボードから入力させ、配列要素に代入する。
異常を繰り返す。(while による無限ループ)
272デフォルトの名無しさん:2011/08/20(土) 18:55:39.87
system("ds")ってなんだよsystem("cls")だよ間違えちゃった恥ずかしい
273デフォルトの名無しさん:2011/08/20(土) 19:16:00.39
コマ反転の仕様をもっとくわしく
274デフォルトの名無しさん:2011/08/20(土) 19:47:30.45
プログラムで判断させる段階じゃないから自分で指定しろってことだろ
275デフォルトの名無しさん:2011/08/20(土) 21:08:15.11
>>271
先手と後手との切り替えはコマンド入力?
276デフォルトの名無しさん:2011/08/21(日) 01:41:56.54
#include <stdio.h>
#include <stdlib.h>

int loop = 1;int ban[8][8] = {0};void (*p)(int);

void input(int);void hanten(int);void hanten_end(int);void end(int);

void print_ban(void){
  int i,j;
  printf(" 12345678\n");
  for(i=0; i<8; i++){
    printf("%c", '1'+i);
    for(j=0; j<8; j++){
      printf("%s", ban[i][j]==0 ? "□" : ban[i][j]==1 ? "○" : "●");
    }printf("\n");
  }
}
void end(int player) { printf("ゲーム終了\n"); }
void hanten(int player){
  int in[2], input_yn;
  printf("反転\nPLAYER %d:", player);
  printf("位置(1..8)を入力してください: ");
  scanf("%d %d", &in[0], &in[1]);
  if(1<= in[0] && in[0] <= 8 && 1<= in[1] && in[1] <= 8 &&
   ban[in[0]-1][in[1]-1] != 0 && ban[in[0]-1][in[1]-1] != player){
    ban[in[0]-1][in[1]-1] = player;
  }
  *p = hanten_end;
  fflush(stdin);
}
277デフォルトの名無しさん:2011/08/21(日) 01:42:36.94
void hanten_end(int player){
  int in, i,j, flag_game_end;
  printf("反転\nPLAYER %d:", player);
  printf("反転終了?(Y/N): ");
  scanf("%c", &in);
  if(in== 'Y'){
    loop++;
    for(i=0; i<8; i++){
      for(j=0; j<8; j++){
        if(ban[j][i]==0){ *p = input; return; }
      }
    }
    *p = end;
  }else{ *p = hanten; }
  fflush(stdin);
}
void input(int player){
  int in[2];
  printf("%d回目\nPLAYER %d:", loop, player);
  printf("位置(1..8)を入力してください: ");
  scanf("%d %d", &in[0], &in[1]);
  if(1<= in[0] && in[0] <= 8 && 1<= in[1] && in[1] <= 8 && ban[in[0]-1][in[1]-1] == 0){
    ban[in[0]-1][in[1]-1] = player;
    *p = hanten;
  }fflush(stdin);
}
void update_screen(void) { system("cls"); print_ban(); }
int main(void) {
  *p = input;
  while(1) { update_screen(); (*p)(2-loop%2); }
  return 0;
}
278デフォルトの名無しさん:2011/08/21(日) 23:19:35.10
この美しいとはいえないコードは何者?誰かの回答ってこと?
279デフォルトの名無しさん:2011/08/22(月) 00:48:46.10
[1] 授業単元:アルゴリズム講義及び実習I
[2] 問題文(含コード&リンク):分割統治法を用いて、n人の集団の中から、所持金が頭から数えてm番目の人を見つける
名前、所持金、順番(m)を入力し、所持金がm番目の人の名前を出力する
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2011年8月31日
[5] その他の制限:
280デフォルトの名無しさん:2011/08/22(月) 00:55:55.49
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

//対象者の名前と所持金と表す構造体
typedef struct {
char name[10]; //対象者の名前
int money; //所持金
} OBJECT;
281デフォルトの名無しさん:2011/08/22(月) 02:04:47.74
//関数プロトタイプ宣言

/*
* main 関数
* 引数: arg1 - コマンドライン引数の数
* : arg2 - コマンドライン引数配列
* 戻値: 成功した場合 0 を, 失敗した場合 0 以外を返す
*/
int main(int arg1, char *arg2[]){

OBJECT* array; //数値格納用の配列
int order; //探索する順番 (order番目の所持金を探索する)
int num; //数値の数
int size; //配列の初期サイズ
int i; //ループカウンタ

num = 0; //数値の初期化
size = 512; //配列の初期化
282デフォルトの名無しさん:2011/08/22(月) 02:08:27.24
//数値格納用の配列を確保
array = (OBJECT *)malloc(sizeof(OBJECT) * size);

// 数値データの読み込み
//array[num]にはOBJECT型の構造体が格納される

scanf("%d\n", &order);
283デフォルトの名無しさん:2011/08/22(月) 02:13:28.96
while (scanf("%s %d\n", array[num].name, &array[num].money) != EOF) {
num++;

// 配列のサイズが足りない場合, 2倍に拡大
if (num == size) {
size *= 2;
array = (OBJECT *)realloc(array, sizeof(OBJECT) * size);
}
}
284デフォルトの名無しさん:2011/08/22(月) 02:22:57.42
printf("problem====================\n");
printf("%d\n", order);

for(i=0; i < num; i++){
printf("%s %d\n", array[i].name, array[i].money);
}

///////////////////////////////////////////////////////////////////
/// ///
/// 作成部分 ///
/// ///
///////////////////////////////////////////////////////////////////



free(array);

return 0;
}
285デフォルトの名無しさん:2011/08/22(月) 02:37:38.74
入力データは標準データとし、
data.txtの中身は
4
11a001 10
11a001 60
11a001 50
11a001 80
11a001 100
11a001 40
286デフォルトの名無しさん:2011/08/22(月) 02:41:46.71
4
11a001 10
11a002 60
11a003 50
11a004 80
11a005 100
11a006 40

間違えました。
よろしくお願いします。
287デフォルトの名無しさん:2011/08/23(火) 01:21:43.54
>>2
288デフォルトの名無しさん:2011/08/23(火) 02:43:01.93
該当者が複数人いるときの処理が不明だけどクイックソートかマージソートしてから
添え字mで参照すれば分割統治法使ったことになるよね

そういう問題?
289デフォルトの名無しさん:2011/08/23(火) 03:16:25.19
いや、全体をソートしきってしまう必要はない
分割統治を適用する際に、m番目が分割したどちら側にあるかは決定できるので
m番目が無い側についてはソートを続ける必要がない
290デフォルトの名無しさん:2011/08/23(火) 14:13:52.39
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):ナップサック問題 下記のプログラムを改良して、できるだけ荷物の価値の合計が大きく速いものにしてください。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限:8月31日
[5] その他の制限:mondai(int n)を必ず使用すること
291デフォルトの名無しさん:2011/08/23(火) 14:16:25.45
//ナップザック問題(総当りによる解法)
#include <stdio.h>
#include <time.h>

#define N 20 //荷物の数
#define MAX 30 //荷物の重量の上限

struct OBJECT {//荷物1~Nの価値と重量
int value;//荷物の価値
int weight;//荷物の重量
} a[N+1];
static int b[N+2];//荷物の選択を保持(1:選択 0:選択せず)、荷物iを選択したときはb[i]=1
static int max[N+1];//価値の合計が最大となる荷物の選択(1:選択 0:選択せず)

void mondai(int n){//荷物n個の問題を作成する関数
int i;
int rnd=13;//乱数の初期値

for(i=1;i<=n;i++){//荷物の価値、重量の設定(荷物N個分)
rnd=(rnd*109+1021)%32768;//擬似乱数の生成
a[i].value = rnd%19+5;//価値
rnd=(rnd*109+1021)%32768;//擬似乱数の生成
a[i].weight = rnd%11+2;//重量
}
}
292デフォルトの名無しさん:2011/08/23(火) 14:17:34.68
int change(int i){//荷物iの選択を変更(荷物の選択を変更するときに使用する)
if(b[i]==1){//荷物iが選択されていたとき
b[i]=0;//荷物iを除く
return change(i+1);//荷物i+1の選択を変更
}
else{//荷物iが選択されていないとき
b[i]=1;//荷物iを選択
return 0;
}
}

int main(void){
int i;
int k=1;//荷物1~kまで調査済み
int value;//選択された荷物の価値の合計
int weight;//選択された荷物の重量の合計
int maxvalue=0;//荷物の価値の最大値
int maxweight=0;//荷物の価値が最大のときの荷物の重量
clock_t oldTime, newTime, elapseTime;//時間計測用

//データの準備(問題の作成)
mondai(N);//荷物N個の問題を作成

for(i=1;i<=N;i++){//荷物の価値、重さを表示(荷物N個分)
printf("荷物%2d:価値=%3d 重さ=%2d\n",i,a[i].value,a[i].weight);
}
printf("\n");
293デフォルトの名無しさん:2011/08/23(火) 14:18:02.54
//問題を解く
oldTime=clock();//計算時間計測開始

while(1){//総当り
value=0;//価値の初期化
weight=0;//重量の初期化
for(i=1;i<=N;i++){//価値と重量の合計を計算
if(b[i]==1){//荷物iが選択されていたら加算する
value += a[i].value;//価値の計算
weight += a[i].weight;//重量の計算
}

}

//解の候補が見つかったときの処理
if((value > maxvalue) && (weight <= MAX)){//価値の合計が最大価値を超えたら
maxvalue=value;//最大価値の保存(更新)
maxweight=weight;//最大価値となるときの重量を保存(更新)
for(i=1;i<=N;i++)//最大価値となる荷物の選択を保存(更新)
max[i]=b[i];
//途中経過を表示(最大価値が更新されたら表示)
printf(" 価値=%3d 重さ=%2d ",maxvalue,maxweight);//最大価値と重量を表示)
for(i=1;i<N+1;i++)//荷物の選択状況を表示(1:選択 0:選択せず)
printf("%1d",b[i]);
printf("\n");
}

change(1);//新しい荷物の選択方法に変える
294デフォルトの名無しさん:2011/08/23(火) 14:18:41.12
//途中経過表示
if(b[k+1]==1){//荷物1からkまで調査が終了したことを表示
printf("荷物1~%dまでの全ての組み合わせについて計算終了。",k);
k++;
newTime=clock();//現在の時間を計測
elapseTime=newTime-oldTime;//経過時間を求める
//経過時間の表示
printf("経過時間=%.2f(sec)\n",(float)elapseTime/(float)CLOCKS_PER_SEC);
}
if(b[N+1]==1)//全ての組み合わせについて調査したら終了
break;
}
newTime=clock();//終了時刻を計測

//結果の表示
printf("\n(回答)\n");
printf("価値の合計が最大となるのは以下の荷物を選択した場合\n");
for(i=1;i<=N;i++)//最大価値となる荷物の選択を表示
if(max[i]==1)
printf("%2d ",i);
//最大価値とそのときの重量を表示
printf("\n価値=%3d 重さ=%2d\n",maxvalue,maxweight);
//計算時間の表示
elapseTime=newTime-oldTime;//計算時間を求める
printf("計算時間=%.2f(sec)\n",(float)elapseTime/(float)CLOCKS_PER_SEC);

return 0;
}
295デフォルトの名無しさん:2011/08/23(火) 15:23:36.34
あぷろだ使った方がよかったと思う
296デフォルトの名無しさん:2011/08/23(火) 16:10:01.37
すみません
やり方がわからなくて
297デフォルトの名無しさん:2011/08/23(火) 17:56:31.90
知恵袋に解答ついてたよ
298デフォルトの名無しさん:2011/08/23(火) 20:00:24.91
本当ですか?
URL貼ってもらっていいですか?
299デフォルトの名無しさん:2011/08/23(火) 23:53:32.24
>>289
確かにそうだな勉強になった
300デフォルトの名無しさん:2011/08/25(木) 03:21:10.72
>279 イメージ
※arrayと同じサイズの workを準備
1) array[m-1] を array[0] と入れ替え
2) for(i=1; i<num; ++i){
array[i]がarray[0]より小さいものはwork[]の先頭の方へ、
array[i]がarray[0]以上のものはwork[]の後ろの方へ、
順番に格納していく
}
3) ループ終了後、workの空き箇所が[m-1]だったらarray[0]が答え <処理終了>
そうでなければ、array[0]をworkの空き箇所[last]に格納し、work全部をarrayにコピーして、1)からを繰り返す[※]
※ただし、
work[] の空き箇所[last]が[m-1]より小さかった場合は、そこから後ろ部分[last~num-1]だけやり直せば良いし、
[m-1]より大きかった場合は、そこから前部分[0~last]だけやり直せば良いが、
面倒くさいのでまるっとやり直すw
301デフォルトの名無しさん:2011/08/25(木) 14:59:46.07
ifの判定について質問です。
このコードで、どうしてaとbが一致しないんでしょうか?
値を吐いてみると、255と-1ですが、コンピュータ的には
1111 1111 と 1111 1111 の比較にならないんでしょうか?
http://codepad.org/bfUt7vxs

char main(void)
{
unsigned char a; /*符号無し*/
char b; /*符号有り*/
char c;

a = 0xFF; /*1バイト全てに1を立てる*/
b = 0xFF; /*1バイト全てに1を立てる*/
c = 0; /*ifの結果確認*/

if(a == b)
{
c = 1;
}
else
{
c = 0;
}
printf("%d \n", c);
printf("%d \n", a);
printf("%d \n", b);
return c;

}
302デフォルトの名無しさん:2011/08/25(木) 15:30:02.03
printf("%d \n", a); /* (1) */
printf("%d \n", b); /* (2) */

printf に渡ってるのは int に拡張された値
(1) は 元値 unsigned で 255 ⇒ int に拡張で 255 を渡す
(2) は 元値 signed で -1 ⇒  int に拡張で -1 を渡す
303301:2011/08/25(木) 16:18:33.39
>>302
すみません、printfの使い方も問題ありました。
要は、cが1で返ってくるか、0で返ってくるかなんですが、どうして0で返ってくるのかが疑問でした。
そこで、aとbを表示してみたら、値が違ったと言う流れです。

ifの判定で、符号有り型の0xFFと符号無し型の0xFFが異なるということは
ifって2進数で比較しているわけではないんでしょうか?
符号の有無は違いますが、バイトサイズとビットの並びも同じだと思っていました。
304デフォルトの名無しさん:2011/08/25(木) 16:22:31.43
馬鹿にするな
C文は文章なので、文脈があるんだよ
文脈が嫌いならアセンブラでも使ってくれ
305301:2011/08/25(木) 16:24:45.44
>>304
306デフォルトの名無しさん:2011/08/25(木) 16:59:40.41
if((char)a == (char)b) c = 1; else c = 0;
printf("%d \n", c);
if((unsigned char)a == (unsigned char)b) c = 1; else c = 0;
printf("%d \n", c);
if((int)a == (int)b) c = 1; else c = 0;
printf("%d \n", c);
if((unsigned int)a == (unsigned int)b) c = 1; else c = 0;
printf("%d \n", c);
if(a == b) c = 1; else c = 0;
printf("%d \n", c);
307 ◆QZaw55cn4c :2011/08/25(木) 18:54:49.53
>>301
>>302 のとおりですが、対応する規格を挙げておきましょう。

キーワード: Integer Promotion あるいは昔は Integral Promotion と呼ばれていました。
ISO/IEC 9899:1999 6.3.1.1.2

printf() のような可変長引数関数やプロトタイプのない関数の引数に対する暗黙の変換については、
ISO/IEC 9899:1999 6.5.2.2.6
308デフォルトの名無しさん:2011/08/25(木) 22:32:45.15
>>307
printf() ってfomat 文字列に従って型を決めるだろ、暗黙の変換なんて有ったっけ?
309デフォルトの名無しさん:2011/08/25(木) 22:37:21.37
>>308
○○だったっけ?
っていう奴は嫌いだ

それが口癖の知人らがクズだから
同類な気がしてならない
310 ◆QZaw55cn4c :2011/08/25(木) 22:53:40.11
>>308
printf() も可変長引数の関数に過ぎない以上、引数 format をみて解析する関数内部に到達する以前に、後続の可変長引数が integral promotion を受けます(ちょっと不正確ないいまわしですが)。
printf("%f", ...) の %f が double 型に対応しており、また、printf() の変換文字に float 型のためのものが存在しない理由を考えてみてください。

最近、
http://hibari.2ch.net/test/read.cgi/tech/1308749241/906
を発端とした大論争?が、このレスの属するスレとその次スレhttp://hibari.2ch.net/test/read.cgi/tech/1311089619/でありました
うんこよばわりされてげんなりしました、まあべつにいいですけど。
311デフォルトの名無しさん:2011/08/25(木) 23:25:54.55
>>309
なんという言いがかり
312デフォルトの名無しさん:2011/08/25(木) 23:52:57.37
>>301
#include <stdio.h>
int main(void){
unsigned char a = 0xFF;
char b = 0xFF;
printf("%x %x %d¥n", a, b, a == b);
return a == b;
}

実行結果:
ff ffffffff 0
313デフォルトの名無しさん:2011/08/26(金) 04:13:11.62
char,unsigned charの要素間の順序は定義されていない。
処理系の裁定でintにキャストして扱われる。
314デフォルトの名無しさん:2011/08/26(金) 05:18:53.33
てs
315!ninjya:2011/08/26(金) 13:17:42.20
てす
316デフォルトの名無しさん:2011/08/28(日) 01:22:29.13
>279
st=0; ed=num;
do{
f=st; l=ed;
t=array[st]; array[st]=array[order-1]; array[order-1]=t;
for(i=st+1; i<ed; ++i){
if(array[st].money>array[i].money) work[f++]=array[i];
else work[--l]=array[i];
}
work[f]=array[st];
for(j=st; j<ed; ++j) array[j]=work[j];
if(order-1<=f) ed=f;
else st=f;
}while(f!=order-1);
printf("%2d %s %d\n", order-1, array[order-1].name, array[order-1].money);
317デフォルトの名無しさん:2011/08/30(火) 11:49:37.56
唐突にすいません。ちょっと困っています。
今ニュートン法やSD法などを勉強しながらjavaを使ったプログラムを勉強しているのですが、そういった解析に関するプログラムについての質問も答えられる方はおられますか?
もしよければ力をかしていただきたいです。
318 ◆QZaw55cn4c :2011/08/30(火) 12:33:36.18
>>317
ニュートン法は方程式の解法の一つであることはわかるのですが、SD 法ってなんですか?心理学の方面の SD 法のことですか?
あと java なら http://hibari.2ch.net/test/read.cgi/tech/1312958339/
319 ◆tsGpSwX8mo :2011/08/30(火) 12:38:20.54
320デフォルトの名無しさん:2011/08/30(火) 12:52:20.47
>>318
ごめんなさいcかjavaでプログラムしたいんです。
抜けていました。
SD法というのも解析の方法としてあるものになります。
書き込み慣れていないため返すの遅くなりました。
申し訳ありません。
321デフォルトの名無しさん:2011/08/30(火) 13:00:28.34
>>320
>>1読んだ?
ここは宿題スレだよ
322デフォルトの名無しさん:2011/08/30(火) 13:16:13.38
>>321
わかりました。
機会見て問題書かせていただきます。
323デフォルトの名無しさん:2011/08/30(火) 16:10:21.14
ナップザック問題の解答を教えていただけませんか。
324デフォルトの名無しさん:2011/08/30(火) 16:34:38.37
>>323
アルゴリズムの指定は?
325デフォルトの名無しさん:2011/08/30(火) 16:46:42.22
>>290
と同じです。
326290:2011/08/30(火) 16:54:03.93
>>325さん
>>290の質問したの自分やけどプログラムかぶらないようにしてくださいね
327デフォルトの名無しさん:2011/08/30(火) 17:17:18.39
>>290さん
それは分かってます
328デフォルトの名無しさん:2011/08/30(火) 18:28:24.97
gaだったら解いてもいいけど、違うよな?
329デフォルトの名無しさん:2011/08/30(火) 19:01:19.93
>>328さん
すいません。gaって何ですか?
330デフォルトの名無しさん:2011/08/30(火) 19:13:46.51
わからんのなら、多分違うな
331デフォルトの名無しさん:2011/08/31(水) 01:29:24.05
nurupo
332デフォルトの名無しさん:2011/08/31(水) 19:42:06.18
>>290
#define N 200 //荷物の数
#define MAX 100 //荷物の重量の上限

のとき

価値の合計が最大となるのは以下の荷物を選択した場合
7 11 22 23 26 28 30 34 36 43 47 70 71 72 84 85 89 95 101 112 116 117 130 132 145 151 160 165 169 176 182 187 197
価値=567 重さ=100

で合ってる?
333Perl忍者:2011/08/31(水) 20:51:37.48
くだらねーことやってんだな
334290:2011/08/31(水) 23:45:07.93
>>332さんプログラムのソース貼ってもらってもいいですか?
335デフォルトの名無しさん:2011/09/02(金) 01:16:12.98
>>290
main 関数より前にこれを書く
void solve(int value, int weight, int index, int *pmaxvalue, int *pmaxweight){
int i;

if(*pmaxvalue<value){
*pmaxvalue=value;
*pmaxweight=weight;
for(i=1;i<=N;i++) max[i]=b[i];
printf(" 価値=%3d 重さ=%2d ", value, weight);//最大価値と重量を表示)
for(i=1;i<=N;i++) printf("%d", max[i]);
printf("\n");
}

for(i=index;i<=N;i++){
if(weight+a[i].weight<=MAX){
b[i]=1;
solve(value+a[i].value, weight+a[i].weight, i+1, pmaxvalue, pmaxweight);
b[i]=0;
}
}
}


あと
oldTime=clock();//計算時間計測開始

newTime=clock();//終了時刻を計測
の間を次の一行だけにする
solve(0, 0, 1, &maxvalue, &maxweight);
336デフォルトの名無しさん:2011/09/02(金) 10:03:55.13

どう改良したか教えてくれませんか?
337デフォルトの名無しさん:2011/09/02(金) 12:18:29.81
>>336
元のプログラムがどういう動作をしてるのか説明してみて
あまり役に立たないコメントと同じ内容はいらない
338!ninja:2011/09/02(金) 12:52:54.44
急ぎなのですが
1 考えるC
2 整数m(mが2以上)を入力し、m以下の素数を全て表示するプログラムを作れ。
3 環境はlinux gcc C言語です

4期限は今日の夕方まで
5進んだところは
配列はまだやっていません
総合問題みたいらしいです

ぐぐればすぐサンプルがあるらしいのですが、それを使わずにかけといっていました
(簡単にかけるらしいので)

よろしくお願いします
339デフォルトの名無しさん:2011/09/02(金) 12:56:10.67
>>338
ググってないからセーフってかw
お前いらないよ
340!ninja:2011/09/02(金) 12:58:31.07
1C言語学習
2 2つの整数を入力して、その2つの最大公約数を求めよ
3環境 は Linux gcc C言語です
4期限は 明日までです
5 配列には入っていません
ならったところまでの総合問題です
初心者なので、簡略化しないで頂きたいです お願いします
341デフォルトの名無しさん:2011/09/02(金) 13:00:41.05
ググって見つけたサンプルがアウトなのに、ここで聞いた答えがセーフだと思うのが理解できないw
342デフォルトの名無しさん:2011/09/02(金) 13:01:47.82
積み立てていく初期段階で学習を投げるとついていけなくなるぞ、
このスレで言う事じゃないかもしれんが。
343デフォルトの名無しさん:2011/09/02(金) 13:06:50.31
>考えるC
と名付けた人は今頃泣いているぞ
344デフォルトの名無しさん:2011/09/02(金) 13:11:58.10
>>338
i,j;main(m){scanf("%d",&m);for(i=1;i++<m;){for(j=1;++j<i&&i%j;);if(j>=i)printf("%d\n",i);}}
345デフォルトの名無しさん:2011/09/02(金) 13:22:35.04
>>344
3bytes縮めておいた
j,m;main(i){scanf("%d",&m);for(;i++<m;){for(j=1;++j<i&&i%j;);if(j>=i)printf("%d\n",i);}}
346デフォルトの名無しさん:2011/09/02(金) 13:27:09.41
まさかのゴルファー召喚w
347デフォルトの名無しさん:2011/09/02(金) 18:10:28.24
>336

改良というより、作り直し

パッと見だけど
348デフォルトの名無しさん:2011/09/03(土) 02:02:08.13
>>340
x,y;main(z){scanf("%d%d",&x,&y);for(;y=x%(z=y);x=z);printf("%d\n",z);}
349デフォルトの名無しさん:2011/09/03(土) 03:11:28.37
ゴルファー怖い
350デフォルトの名無しさん:2011/09/03(土) 13:09:36.78
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):整数 mとnを入力して m+(m+1)+(m+2)+…+n
を出力するプログラムを作成しろ
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語
[4] 期限: 明後日まで
[5] その他の制限: 配列は習っていなくて、C言語を学んで2ヶ月ほどなので砕けた形
で書いていただいてもらえると嬉しいです
お願いします
351デフォルトの名無しさん:2011/09/03(土) 13:36:37.49
#include <stdio.h>
int main(voin){
int m,n,i,sum;
prntf("m=");scaf("%d",&m);
prntf("n-");scaf("%d",&n);
sum=0;
for(i=m;i<=n;i++)sum+=i;
prntf("%d+(%d+1)+...+(%d)=",m,m,n,sum);
retrun EOF;
}
352デフォルトの名無しさん:2011/09/03(土) 13:38:15.28
なぜそこでEOFを
353 ◆C1wC9xjYvk :2011/09/03(土) 19:27:04.95
#include <stdio.h>
int f(void){return -100;}
int main(void){
  int m, n, temp, m0, n1;
  printf("m n > ");
  scanf("%d%d%*c", &m, &n);
  if(m > n) temp = m, m = n, n = temp;
  m0 = m*(m+1)/2 - m;
  printf("1 .. %d-1 = %d\n", m, m0);
  n1 = n*(n+1)/2;
  printf("1 .. %d = %d\n", n, n1 );
  printf("%d .. %d = %d\n", m, n, n1 - m0 );
  f();
}


>>352
C
return 0; を省略できない。(Visual Studio C は例外)
C++
return 0; を省略できる。(VC++6 は例外)
354デフォルトの名無しさん:2011/09/03(土) 19:58:23.17
この問題が出来ません。どうか助けてください!
以下の条件で売り上げ集計プログラムを作りなさい。
①クラスを用いる(困難なら構造体で可)
②店舗毎に名前・売り上げを入力し、平均、標準偏差を計算
③売り上げ毎に店舗を並び替える
④店舗数は任意。
⑤並び替えは簡単でよい。店舗数が少ない場合、単純に比較するだけでよい。
環境:windows C++
355354:2011/09/03(土) 20:11:23.50
354です。すみません、テンプレの存在を忘れてました。
[1] 授業単元:プログラム設計
[2] 問題文:354の通り
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: visual c++ (当方2008を使用していますが、visualc++ならそれ以外でも結構です。)
 [3.3] 言語: c++
[4] 期限: 23年9月18日
[5] その他の制限: 特にありません。上記の事項だけに沿って御願いします。
356デフォルトの名無しさん:2011/09/03(土) 20:14:03.33
>>354-355
今すぐ大学を辞めて、
その辺の適当な文系大学に入りなおしなさい。
お前みたいな馬鹿のせいで日本はどんどん落ちぶれる。
お前みたいなゴミがSIerに研究室あたりのコネで就職するんだけど、
プログラムのプもできないのにSEで客先にいくわけよ。
この循環を断ち切れ。
357デフォルトの名無しさん:2011/09/03(土) 20:36:54.74
356に一票
358!jinja:2011/09/03(土) 20:37:29.19
名前は店舗名とか店長の氏名?
359 ◆1oR6ttynTU :2011/09/03(土) 20:54:56.07
354です。
>>358
店舗名ということです。
>>356
至らない点ばかりですみません。
しかしそこをどうかご教授ください。
360!jinja:2011/09/03(土) 21:21:03.23
「売り上げ集計」Appじゃなくて「店舗別売上」Appな感じ。(´∀`) 
361デフォルトの名無しさん:2011/09/03(土) 21:24:46.45
>>359
ご教授下さいってんならまず自分で作成した分をあげろ
話はそれからだ
362 ◆1oR6ttynTU :2011/09/03(土) 21:28:07.31
>>360
問題文には「売り上げ集計プログラム」とありますが、
良く読むと確かに「店舗別売り上げ」の様な気がします。
ニュアンスの通り「店舗別売り上げ」のつもりで御願いします。
363 ◆1oR6ttynTU :2011/09/04(日) 00:10:08.49
#include <stdio.h>
#include <math.h>
#pragma warning(disable : 4996)


typedef struct Shop{
char name;
int sale;
}Shop;

int main(void)
{
double sum; //売上高合計
double ave; //売上高平均
double hensa1;
double hensa2;
double sd; //標準偏差
Shop shop1;
364 ◆1oR6ttynTU :2011/09/04(日) 00:11:16.78
>>363の続き
printf("店舗名を入力してください\n");
scanf("%s", &shop1.name);

printf("売上高を入力してください。\n");
scanf("%d", &shop1.sale);

Shop shop2;

printf("店舗名を入力してください\n");
scanf("%s", &shop2.name);

printf("売上高を入力してください。\n");
scanf("%d", &shop2.sale);

sum = shop1.sale + shop2.sale;
ave = sum/2;
hensa1 = ((pow(shop1.sale, (double)2)+ pow(shop2.sale, (double)2))/2);
hensa2 = pow(sum/(double)2, 2);
sd = sqrt(hensa1 - hensa2);
printf("%lf\n", sum);
printf("%lf\n", ave);
printf("%lf\n", sd);
return 0;
}

ここまで(標準偏差)まで出せました。
この結果を売り上げ順に並び替えるにはどうすればいいでしょうか
365デフォルトの名無しさん:2011/09/04(日) 00:12:41.37
cなんだがwww
366 ◆1oR6ttynTU :2011/09/04(日) 00:32:19.09
>>365
>>363>>364のことですか?
これは間違いなく、問題通りのc++で組んでいます。
367デフォルトの名無しさん:2011/09/04(日) 00:52:32.99
>>350
(m+n)*(m-n+1)/2
368デフォルトの名無しさん:2011/09/04(日) 02:18:23.35
369 ◆1oR6ttynTU :2011/09/04(日) 03:14:24.03
>>368
ありがとうございます!
しかし、そのプログラムでコンパイルしてみたところ、
2つ目の店舗の売上高を入力したところでなぜか強制終了
してしまいました。
そのプログラムにミスがあるとは思えないし、思いたくもないのですが、
自分のコンパイラに不都合があると言うことでしょうか?
370デフォルトの名無しさん:2011/09/04(日) 04:01:27.81
C:\>test.exe < in.txt
C:\>type in.txt
何を入力してるのか?
371デフォルトの名無しさん:2011/09/04(日) 05:03:23.87
>369

しょういうこと
372デフォルトの名無しさん:2011/09/04(日) 13:52:31.20
>>356
???
373デフォルトの名無しさん:2011/09/04(日) 18:59:53.06
>366 コンパイラはC++を使っているのだろうが、そのソースはCだよw
374デフォルトの名無しさん:2011/09/04(日) 19:08:36.22
>369
scanf("%s", &t->name); がダメなのではw

あと、
for(i=0; i<N; i++,t++)
hensa1 += (pow(ave-t->sale, 2));
をやる前にtをよろしくやっとけ
375デフォルトの名無しさん:2011/09/04(日) 19:46:45.18
別スレにまで持ち込むなバカ
376デフォルトの名無しさん:2011/09/04(日) 21:44:14.67
okwaveにあってワロタ
377!ninja:2011/09/04(日) 22:23:27.36
>>351
計算結果の出力は
どうすれば良いのでしょうか
378デフォルトの名無しさん:2011/09/04(日) 22:29:13.23
出てると思うけど?

結果を定義しないとわからん
379!ninja:2011/09/04(日) 22:58:52.51
>>378
最終的には合計(Σ)を出したいのですが、
sumに値を代入していって、最後に
sumを出力、という形にできるので
しょうか?
mが2でnが4だとしたら、9がでるように
したいのですが、最小のループでsumに
2が格納されて、次に2+3がsumに格納されてしまうのではないのでしょうか?
380デフォルトの名無しさん:2011/09/04(日) 23:15:46.52
課題変わっとるがなw
381デフォルトの名無しさん:2011/09/04(日) 23:16:24.19
> sumに値を代入していって、最後にsumを出力
しているのが 351 だろw
382 忍法帖【Lv=1,xxxP】 ◆IFQSknf/N. :2011/09/04(日) 23:55:18.73
まあ、先にコンパイルエラー取ってみてよ.
383デフォルトの名無しさん:2011/09/05(月) 00:28:44.54
出力結果書けって書いてるだけなんだが

#include <stdio.h>

int main(void){

int m,n,i,sum = 0;

printf("m=");
scanf("%d",&m);

printf("n=");
scanf("%d",&n);

for(i = m ; i < n ; i++) {

sum += i;

printf("%d+",i);

}

printf("%d=%d\n", n, sum + n);

return 0;
}

これで不満足なら知らん
384デフォルトの名無しさん:2011/09/05(月) 02:28:29.51
>>344,345
j,m;main(){scanf("%d",&m);for(;m;m--){for(j=m;--j&&m%j;);if(j==1)printf("%d¥n",m);}}
385デフォルトの名無しさん:2011/09/05(月) 11:11:16.46
正の整数nと,整数のポインタ*cを引数として渡したとき,
nを10進数としたときの,各桁の総和を*cに格納し,
桁数を戻り値として返す関数を作成せよ

int dec(int n, int *c)
{
int k = 0;
for(; n > 0; k++){
*c += n % 10;
n /= 10;
 }
return k;
}

形は出来ているんだけど、*cをどうすればいいのかわからない
386デフォルトの名無しさん:2011/09/05(月) 11:26:35.21
アドレス演算子・ポインタ演算子って何かわかってる?
387デフォルトの名無しさん:2011/09/05(月) 11:34:20.44
*cに0を代入してからじゃないと
388!nonja:2011/09/05(月) 12:13:49.20
#include <iostream>
int dec(int n, int *c)
{
  int k;
  for(k = 0; n > 0; k++){
    *c += n % 10;
    n /= 10;
  }
  return k;
}
main(){
  int c = 0;
  int *d = &c;
  std::cout << dec(123456789, d) << " ";
  std::cout << c << " " << *d << std::endl;
}
389デフォルトの名無しさん:2011/09/05(月) 12:16:41.74
関数の戻り値として返すなら0のままになってるkに結果を代入、
ほんで戻り値として返すなら*cは余計な引数。
390389:2011/09/05(月) 12:17:39.88
よく見てなかったkは桁数か
無視してくんろ
391デフォルトの名無しさん:2011/09/05(月) 14:00:01.39
n=0の場合を改善

#include <iostream>
int dec(int n, int *c)
{
int k = 0;
*c = 0;
while(1){
k++;
*c += n % 10;
n /= 10;
if(!n)break;
}
return k;
}

int main()
{
int c;
std::cout << dec(123456789, &c) << " ";
std::cout << c << " " << std::endl;
std::cout << dec(0, &c) << " ";
std::cout << c << " " << std::endl;

}
392 忍法帖【Lv=1,xxxP】 :2011/09/06(火) 17:14:14.77
#include <stdio.h>
int main (void){
int a,b,pro,x;
scanf("%d",&a);
scanf("%d",&b);

pro=0;
for(x=a;x<=b;x++){
pro=pro*x ;
}

printf("%d¥n",pro);
return 0 ;

}

これを実行すると出力結果が0になってしまうのですが、どうすればよいのでしょうか
393デフォルトの名無しさん:2011/09/06(火) 17:16:54.03
pro の初期値が 0 で
ループ中 pro は pro に対する掛け算しかしてないから ずーーと 0 だわな
394デフォルトの名無しさん:2011/09/06(火) 17:36:03.56
むしろ0以外の何が出力されることを期待しているのかが分からん
395 忍法帖【Lv=1,xxxP】 :2011/09/06(火) 17:39:29.97
>>394
二つの値を入れて
シグマの掛け算verをしたいのですが
足し算にするとうまくいくのに掛け算だとうまくいかないので
どうすればよいのかなと、、
396デフォルトの名無しさん:2011/09/06(火) 17:42:33.87
0*a*(a+1)*(a+2)* ... *(b-1)*b = 0
1*a*(a+1)*(a+2)* ... *(b-1)*b = a*(a+1)*(a+2)* ... *(b-1)*b
397デフォルトの名無しさん:2011/09/06(火) 17:42:50.86
Πi | i=a~b か

案1)
 pro の初期値を 0 から 1 に変える
案2)
 pro の初期値を a とし、ループは a+1 から回す
398 忍法帖【Lv=1,xxxP】 :2011/09/06(火) 17:47:06.03
>>396
>>397
ありがとうございます
pro=1;
にすると計算できるのか、、ためになりました
399デフォルトの名無しさん:2011/09/06(火) 17:49:19.01
和の単位元は0で、積の単位元は1
というだけの話だな
400デフォルトの名無しさん:2011/09/06(火) 18:00:30.40
http://www.tsg.ne.jp/TT/tsg/c/mansaku/P01.html

ここのページの高速化ってとこの
iを2からi-1までで割りひとつも割り切れるものがないのが素数という判定法にすれば、ひとつでも割り切れるものがあらわれた時点で途中でチェックをうちきって次の数のチェックに移れるので効率的です。
ここのソースを書いていただきたい・・・
401デフォルトの名無しさん:2011/09/06(火) 18:08:22.98
もう書いてあるじゃん
402デフォルトの名無しさん:2011/09/06(火) 18:11:04.41
>>401
math.hとかならってない
403デフォルトの名無しさん:2011/09/06(火) 18:16:22.43
そのページの最後の行に説明があるだろ
もっとも、「ひとつでも割り切れるものがあらわれた時点で…」の部分だけを実現するのであれば不要ではあるが
404 忍法帖【Lv=10,xxxPT】 :2011/09/06(火) 18:19:48.52
#include <stdio.h>
int main(void){
  int i,j,k;

  printf("2 ");
  for(i=3; i<=10000; i+=2){
    k=0;
    for(j=3; j<=i/2; j+=2){
      if(i%j == 0){
        k=1;
        break;
      }
    }
    if(k == 0)
      printf("%d ",i);
  }
  printf("\n");
  return 0;
}
405デフォルトの名無しさん:2011/09/06(火) 18:27:55.64
>>404
10000以上の数入力したいときはどうするの?
406デフォルトの名無しさん:2011/09/06(火) 18:37:47.23
質問者がどこまで習っているかによって回答は変わってくる
407デフォルトの名無しさん:2011/09/06(火) 18:39:40.52
forの判定部にsqrt()入れるアホのページなんて参考にすんなよ
408デフォルトの名無しさん:2011/09/06(火) 18:54:04.49
高速化と項立てしているのにsqrtとか馬鹿だろ
409デフォルトの名無しさん:2011/09/06(火) 18:54:47.61
>>406
配列を習っていなくて
for分などは習いました
410デフォルトの名無しさん:2011/09/06(火) 18:59:38.30
>>408
素数を一つだけ求めるならsqrt使った方が早いよ
ループで毎回計算するのはありえないけどw
411デフォルトの名無しさん:2011/09/06(火) 19:02:49.20
>>409
話の流れからして入力の仕方を習ったかどうかを聞いているのだと分かれこのアンポンタン
412デフォルトの名無しさん:2011/09/06(火) 19:10:38.71
>>405
10000の入力どこでしてる
413デフォルトの名無しさん:2011/09/06(火) 19:11:39.24
>>411
いや、すいません
入力のしかた?とはなんでしょうか
414デフォルトの名無しさん:2011/09/06(火) 19:14:28.67
すいません
自分が入力した数以下の素数すべてを表示する方法を教えてください
415デフォルトの名無しさん:2011/09/06(火) 19:14:36.20
>>413
にゅう‐りょく〔ニフ‐〕【入力】
[名](スル)
2 コンピューターで、処理させる情報を入れること。インプット。「パソコンにデータを―する」⇔出力。

し‐かた【仕方】
1 物事をする方法。やり方。「掃除の―」
416デフォルトの名無しさん:2011/09/06(火) 19:35:50.83
417 ◆QZaw55cn4c :2011/09/06(火) 19:41:37.77
>>410
割り算をして商と剰余の両方を手に入れられれば、平方根をとるまでもない。
div()/ldiv() を使え。
418デフォルトの名無しさん:2011/09/06(火) 19:44:12.39
>>417
分からないくせに首つっこんでくるな
419 ◆QZaw55cn4c :2011/09/06(火) 19:53:07.62
>>418
馬鹿。市ね。
420デフォルトの名無しさん:2011/09/06(火) 20:22:43.24
おまえはダウソで犯罪予告してればいいんだよ
421デフォルトの名無しさん:2011/09/06(火) 20:25:12.77
言ってることの馬鹿っぽさは本物レベルだけど、口調が偽者っぽいな
422 ◆QZaw55cn4c :2011/09/06(火) 20:44:22.32
>>418, >>421
http://codepad.org/pFpfAHN7 でいいのでは?
sqrt() 使うよりもよほど速いはず。エラトステネスには負けますが。
423デフォルトの名無しさん:2011/09/06(火) 22:28:24.61
>>422
あなたの環境ではこっちの方が遅くなるの?

#include<stdio.h>
#include<math.h>
#define N 10000000
int main(void)
{
int i, j, k;

printf("2 3 ");
for(i=5;i<=N;i+=2)
{
k=sqrt(i);
for(j=3;j<=k;j+=2)
{
if(i%j==0) break;
}
if(j>k) printf("%d ", i);
}
printf("\n");

return 0;
}
424デフォルトの名無しさん:2011/09/07(水) 05:22:57.63
ふつーに
for(j = 3; j * j <= i; j += 2) if(i % j == 0) ...
ってやりゃあいいのに、divとかアホとしか言いようがない
425 ◆QZaw55cn4c :2011/09/07(水) 05:29:33.90
>>423
実測しました。
$ ./a.exe
2 3
423: 39
2 3
422: 54

ふーん、sqrt() の方が div() よりもはやいんですねえ。sqrt() といえども fpu の命令一発でok みたいだ。div()/ldiv() の意義はあまりないようですね。
http://codepad.org/QuhmqCWC
426 ◆QZaw55cn4c :2011/09/07(水) 05:30:19.95
>>424
それもそうですね。あはは。霧
427デフォルトの名無しさん:2011/09/07(水) 05:32:59.00
最近div知ってアホがはしゃいでみたってところだろうな
428デフォルトの名無しさん:2011/09/07(水) 07:40:10.45
測ってみた。
>>422
./a.out > d1 0.00s user 0.00s system 21% cpu 0.015 total
>>423
./a.out > d1 4.15s user 0.03s system 87% cpu 4.751 total
429デフォルトの名無しさん:2011/09/07(水) 07:44:23.00
>>428
多分 N が違う数値だよ
430デフォルトの名無しさん:2011/09/07(水) 07:50:36.62
>>429
失礼しました。再測定。
>>422
./a.out > d1 7.85s user 0.02s system 96% cpu 8.144 total
>>423
./a.out > d1 4.15s user 0.03s system 87% cpu 4.751 total
431!nonja"nonja:2011/09/07(水) 08:17:08.33
>>430
f(N)を
432!nonja"nonja:2011/09/07(水) 08:47:37.58
>>422>>424
#include <stdio.h>
#include <math.h>
#define N 10000000
int main(void){
  int i, j, k;

  printf("2 ");
  for(i = 3; i <= N; i += 2) {
//  k = (int)sqrt((float)i);
//  for (j = 3; j <= k; j += 2)
    for (j = 3; j*j <= i; j += 2)
        if(i%j == 0) goto L;
    printf("%d ", i); L:;
  }
  putchar('\n');
  return 0;
}
433デフォルトの名無しさん:2011/09/07(水) 20:57:56.99
434デフォルトの名無しさん:2011/09/07(水) 21:11:44.06
>>368
>>433
sqrt(hensa/N); な
435デフォルトの名無しさん:2011/09/08(木) 13:26:43.56
>>353
いや、なんでEOFをかえしちゃうんだよっていう
しかもEOFは0で定義されてないし
436デフォルトの名無しさん:2011/09/08(木) 17:22:50.82
#include <stdio.h>
int main(void){
int n,k,kakunou,a;
scanf("%d",&n);
kakunou=0;
for(a=0;a>=n;a++){
(k=2;k>n;k++){
if(n%k==0){
kakunou=0;
}
else{
kakunou=k;
}
}
}
if(kakunou==1){
printf("Answer=%d\n",k);
}
return 0 ;
}
ある数を入力してそれ以下の素数を出力したいのですが
コンパイルは通ったのに、
何も表示されないのですが
どうなんでしょうか
437デフォルトの名無しさん:2011/09/08(木) 17:27:28.92
>>436
どんなときに kakunou==1 になるの?
438デフォルトの名無しさん:2011/09/08(木) 17:50:41.22
コンパイル通りそうもないんだがw
439デフォルトの名無しさん:2011/09/08(木) 18:25:18.24
どのコンパイラで通ったん?
440 忍法帖【Lv=16,xxxPT】 :2011/09/08(木) 18:39:32.40
#include <stdio.h>
int main(void){
  int n,k,kakunou,a;

  scanf("%d", &n);
  printf("2 ");
  for(a=3; a<=n; a++){
    kakunou = 0;
    for(k=3; k<a; k++){
      if(a%k == 0){
        printf("%d/%d ",a,k);
        kakunou = 1;
        goto L;
      }
    }
    printf("%d ", a);
  L:  ;
  }
  printf("\n");
  return 0 ;
}
441デフォルトの名無しさん:2011/09/08(木) 18:41:17.66
>>436
7行目の頭のforが落ちている。これを補充するとコンパイルは確かに通る。
ただし、5行目の for(a=0;a>=n;a++){
はaを0に初期化して、aがn以上の間繰り返すの意味だから、
いきなり、このforループを終了してしまう。その時のkakunouは0だから、
printf()は実行されない。
442デフォルトの名無しさん:2011/09/08(木) 19:35:15.37
>>436
#include <stdio.h>
int main(){
int n,k;
scanf("%d", &n);
for (; n > 1; n--) {
for (k = n - 1; n % k; k--);
if (k == 1)
printf("Answer=%d¥n", n);
}
return 0;
}
443デフォルトの名無しさん:2011/09/09(金) 11:08:39.71
>>441
5行目のaの不等号を逆にしたのに、
値がでません、
444デフォルトの名無しさん:2011/09/09(金) 11:14:26.06
>>443
kのところも同じじゃないかな
445デフォルトの名無しさん:2011/09/09(金) 11:31:55.37
>>436
コンパイル通ってないのに、通ったって言ってるのが疑問。
「コンパイラは何?」
446デフォルトの名無しさん:2011/09/09(金) 11:36:45.35
>>442
これでは出来ませんでした
447デフォルトの名無しさん:2011/09/09(金) 11:48:51.36
>>445
gccです
448:2011/09/09(金) 12:14:03.99
質問者は名前:に#パスワードを入れて下さい。回答者と見分けが付きやすい。
#include <stdio.h>
int main(void){
    int n,k,kakunou,a;
    scanf("%d",&n);
    for(a=0;a<=n;a++){
        kakunou = 0;
        for(k=2;k<a;k++){
printf("%2d:%d ", a, k);
            if(a%k==0){
printf("%dは素数じゃない", a);
                kakunou=k;
            }
            else{
//              kakunou=k;
            }
        }
putchar('\n');
        if(kakunou == 0){
            printf("Answer=%d\n",k);
        }
    }
    return 0 ;
}
449デフォルトの名無しさん:2011/09/09(金) 12:16:47.82
なぜテンプレを無視するのか
450 ◆dSVpHCgx5Y :2011/09/09(金) 12:17:11.81
分かりました
451デフォルトの名無しさん:2011/09/09(金) 12:38:29.85
>>436,445
pcでコピペじゃなくて、画面見ながら携帯で入力、とエスパーしてみた。
452デフォルトの名無しさん:2011/09/09(金) 15:58:23.16
printf("%2d:%d ", a, k);

putchar('\n');
この二つの意味ってなんなんでしょうか?
putcharというものを習ってないので、
他のものに置き換えてもらえると
ありがたいです
453デフォルトの名無しさん:2011/09/09(金) 16:04:25.83
>>452
puts("");
454デフォルトの名無しさん:2011/09/09(金) 16:14:53.02
>>452
printf("\n");
455デフォルトの名無しさん:2011/09/09(金) 16:41:07.30
>>452
printf("%c", 0xa);
456デフォルトの名無しさん:2011/09/09(金) 17:05:53.96
http://www.tsg.ne.jp/TT/tsg/c/mansaku/
で勉強してたんじゃないの... >>452
457デフォルトの名無しさん:2011/09/09(金) 17:44:18.56
質問する前にちょっとでも検索してみようとは思わないのか
458デフォルトの名無しさん:2011/09/09(金) 22:24:18.62
>>436,442,446
↓実行結果はこれだが?
./a.out
33
Answer=31
Answer=29
Answer=23
Answer=19
Answer=17
Answer=13
Answer=11
Answer=7
Answer=5
Answer=3
Answer=2
459sage:2011/09/11(日) 02:40:08.01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ttp://www.07ch.net/up2/src/lena6063.zip
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 指定なし
 [3.3] 言語:C
[4] 期限:2011年9月12日02:00
[5] その他の制限:特になし

1日しか余裕がありませんが、どうかよろしくお願いします。
460デフォルトの名無しさん:2011/09/11(日) 03:07:14.88
sageはメ欄
461459:2011/09/11(日) 06:22:52.93
ありがとう、気をつけるよ
462デフォルトの名無しさん:2011/09/13(火) 13:15:34.00
[1] C言語演習
[2] http://codepad.org/eBlxfu2Q のプログラムを以下のように
改良しなさい。
① 数字を入力して計算できるようにする。(ただし、2次元配列は必ず使用)
② 1~5の合計点及び平均点の最高点、最低点を表の下部分に表示させる。
(①は必須、②はできれば)
 [3.1] Windows7
 [3.3] C言語
[4] 今日の19時まで
[5] 特になし
わかる方どうかよろしくお願いします。
463デフォルトの名無しさん:2011/09/13(火) 13:44:21.50
>>462
int main(void)
{
int i, j, tensu = 0;
int max_j, max_e, max_m;
int min_j, min_e, min_m;
double ave_j, ave_e, ave_m;
double ave = 0;
int ten[5][3] = {{0}};
char *sbjs[] = {"国語", "英語", "数学"};
for (i= 0; i < NUMBER; i++) {
for (j = 0; j < 3; j++) {
printf("%d人目の%sの点数入力\n", i+1, sbjs[j]);
scanf("%d", &ten[i][j]);
}
}
max_j = max_of(ten, NUMBER, 0);

 ~ 略 ~

printf(" %3d %.1f\n", tensu, ave);
}
printf("max : %2d %2d %2d\n", max_j, max_e, max_m);
printf("ave : %2.0f %2.0f %2.0f\n", ave_j, ave_e, ave_m);
printf("min : %2d %2d %2d\n", min_j, min_e, min_m);
return (0);
}

main関数だけいじった
464デフォルトの名無しさん:2011/09/13(火) 14:06:42.12
>>463
できればchar文(?)を使わずに書き換えられませんか?
465デフォルトの名無しさん:2011/09/13(火) 14:14:48.64
国語の最高点=80
英語の最高点=80
数学の最高点=90
国語の最低点=10
英語の最低点=20
数学の最低点=30
国語の平均点=50.0
英語の平均点=52.0
数学の平均点=54.0

番号:国 英 数 合計 平均
[ 1]:10 20 30 60 20.0
[ 2]:40 50 60 150 50.0
[ 3]:70 80 90 240 80.0
[ 4]:80 70 60 210 70.0
[ 5]:50 40 30 120 40.0
     最大: 380 90.0
     平均: 250 54.0
     最小: 110 30.0

>>463 の出力だけいじった
466デフォルトの名無しさん:2011/09/13(火) 14:15:29.83
>>464
すいませんがめんどくさいので他の人がなんとかしてくれる可能性に賭けてください
467デフォルトの名無しさん:2011/09/13(火) 14:19:05.92
>>465
そもそも間違ってたのか
>>463のことは忘れてください
468465:2011/09/13(火) 15:22:07.12
469デフォルトの名無しさん:2011/09/13(火) 15:34:57.90
>>468
ありがとうございました。非常に助かりました。
470デフォルトの名無しさん:2011/09/13(火) 17:00:33.07
>> 468,469

< ave = tensu[i]/3;
---
> ave = tensu[i]/3.0;

< ave = max_tensu/3;
---
> ave = max_tensu/3.0;

< ave = min_tensu/3;
---
> ave = min_tensu/3.0;
471デフォルトの名無しさん:2011/09/13(火) 20:19:26.41
[1]情報基礎概論
[2] F(x)を計算する関数double func1(double x)を作成せよ。ただしμの値はμ=0.891とし、
double mu=0.891;
と変数の初期化時に与えるようにせよ。
[3]
[3.1] windows7 
[3.2]gcc 
[3.3] c言語:
[4] 無期限
472デフォルトの名無しさん:2011/09/13(火) 21:03:53.77
なんか足りなくね?
それとも俺の数学かなんかの知識が不足してるだけか?
473デフォルトの名無しさん:2011/09/13(火) 21:07:21.72
>>472
ESP能力が足りないだけだ
474471:2011/09/13(火) 21:10:52.55
すみません追加です
F(x)=μ*x+2*(1-μ)*x^2/(1+x^2)
で与えられてます
475デフォルトの名無しさん:2011/09/13(火) 21:13:12.46
const double mu=0.891;
double func1(double x)
{
return mu*x+2*(1-mu)*x*x/(1+x*x);
}
476デフォルトの名無しさん:2011/09/13(火) 21:22:55.08
>>475
ありがとうございます。
477デフォルトの名無しさん:2011/09/17(土) 15:33:03.33
[1] アルゴリズム論
[2] Unixコマンドのgrepを実装したmygrepの作成
  コマンドライン引数で検索文字列とファイル名をもらい、ファイル内に検索文字列が含まれる行があればその行を出力する
  正規表現に対応させる必要はない
[3]
[3.1]windows xp 
[3.2]gcc 
[3.3]c言語
[4] 無期限
[5] strstrは使用禁止

よろしくおねがいします
478デフォルトの名無しさん:2011/09/17(土) 15:40:56.19
ここのでどうでしょう
ttp://c-production.com/contents/c/sec13.html
479デフォルトの名無しさん:2011/09/17(土) 15:40:58.75
>>477
grep PATTERN [FILE...]
480デフォルトの名無しさん:2011/09/17(土) 15:43:43.78
>477

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

int main(int argc, char *argv[])
{
char cmd[1024];
sprintf(cmd, "find \"%s\" %s", argv[1], argv[2]);
return system(cmd);
}
481デフォルトの名無しさん:2011/09/17(土) 17:24:02.61
482デフォルトの名無しさん:2011/09/17(土) 19:00:34.24
class A {};
class B : public A {};

A *aaa = new B();←(これ)

このAポインターのBnewする行為は、何という名前なのでしょうか?

(これ)をする必要性がわからないので(仮想関数に使うみたいですが)
(これ)についてググりたくても名前わからないもので…
483デフォルトの名無しさん:2011/09/17(土) 19:03:47.33
アップキャスト
484477:2011/09/17(土) 19:05:05.93
>>478-481
ありがとうございます
485デフォルトの名無しさん:2011/09/17(土) 19:09:41.95
ありがとう
ググってくる
486デフォルトの名無しさん:2011/09/17(土) 19:24:44.91
オーバーライドした関数を実行したときに子供のクラスの関数を自動で実行してくれるわけよ

STLのリストかなんかにAを継承した色んなクラスのオブジェクトをつっこんどいて
イテレータで回しながらオーバーライドした関数を実行したら順に子供のクラスで実装した関数が実行されるわけよ
487デフォルトの名無しさん:2011/09/17(土) 21:25:12.59
ポリモーフィズムあるいはポリモルフィズム(Polymorphism)
だお
488デフォルトの名無しさん:2011/09/17(土) 21:30:48.21
>>486
>STLのリストかなんかにAを継承した色んなクラスのオブジェクトをつっこんどいて

ダウト。「クラスのオブジェクトへのポインタ」だよな
489デフォルトの名無しさん:2011/09/17(土) 23:58:55.15
ポインタだってオブジェクトっす!
490デフォルトの名無しさん:2011/09/18(日) 00:36:08.20
屁理屈言うな
491デフォルトの名無しさん:2011/09/20(火) 12:57:52.73
シグマの計算をしたくて
for(x=m;x<=n;x++)
{
a=a+x ;
}

というプログラミングを作ったのですが(m,nは入力する値)
これでうまくできたのですが、正直自分でもよくわからないままできてしまって
たとえば2と4を入力すると9がでるのですが
最初a=0でforの処理の中でaに2が格納されて
次のループでxが3になって
aの値はどうなるのでしょうか?
処理がうまくいってしまって、なんでうまくいったのがわからない状態
なのですが
長文すいませんでした
492デフォルトの名無しさん:2011/09/20(火) 13:10:59.51
>>491
printf を挟んでみたら?
493デフォルトの名無しさん:2011/09/20(火) 13:42:28.57
デバッガ使えよ
494デフォルトの名無しさん:2011/09/20(火) 13:49:01.03
int sum = 0;
for ( int x=m; x<=n; x++ )
{
  sum = sum + x; // もしくは sum += x;
}

ちょっと書きなおして見て、ここの挙動、
> sum = sum + x; // もしくは sum += x;
特に、自分自身とxを足して自分自身に代入する += (複合代入演算子)の挙動を把握していないんだろう。
495デフォルトの名無しさん:2011/09/20(火) 13:56:42.13
a = 0 + 2 = 2
a = 2 + 3 = 5
a = 5 + 4 = 9
496デフォルトの名無しさん:2011/09/20(火) 15:12:14.92
((((0) + 2) + 3) + 4)
497デフォルトの名無しさん:2011/09/23(金) 14:34:59.90
?鯖 接数:0785 ギ登数:40920 ギ数:3938 無ギ数:3714 無人数:30703
?鯖 接数:0909 ギ登数:48239 ギ数:4249 無ギ数:3967 無人数:34195
?鯖 接数:0835 ギ登数:63976 ギ数:5140 無ギ数:4889 無人数:51456
?鯖 接数:0908 ギ登数:65847 ギ数:5686 無ギ数:5406 無人数:53426
?鯖 接数:0702 ギ登数:58105 ギ数:4992 無ギ数:4795 無人数:47884
?鯖 接数:0707 ギ登数:60087 ギ数:5446 無ギ数:5216 無人数:50097
?鯖 接数:1042 ギ登数:61652 ギ数:5572 無ギ数:5254 無人数:48273
?鯖 接数:0724 ギ登数:56654 ギ数:4969 無ギ数:4752 無人数:46105
?鯖 接数:0654 ギ登数:59034 ギ数:5463 無ギ数:5260 無人数:49440
?鯖 接数:0776 ギ登数:55048 ギ数:5028 無ギ数:4808 無人数:44546
?鯖 接数:0275 ギ登数:03129 ギ数:0287 無ギ数:0226 無人数:01169
?鯖 接数:1374 ギ登数:126201 ギ数:11525 無ギ数:11093 無人数:105732
?鯖 接数:1202 ギ登数:97768 ギ数:8480 無ギ数:8098 無人数:78823

総接続人数:10893人 総ギルド登録人数:796660人 総ギルド数:70775
無人ギルド総数:67478 無人ギルド総人数:641849人

2011/09/23 13:54:57 ~ 2011/09/23 14:34:21 集計時間 00:39:23
韓国公式HPのギルド加入数を各鯖毎に集計したものです。(加入してない人は含まれません)
498デフォルトの名無しさん:2011/09/23(金) 14:35:44.05
誤爆
499デフォルトの名無しさん:2011/09/23(金) 15:01:08.68
その生データをCでどうやって分析するかとかいう質問なら、別スレに

C言語なら俺に聞け(入門編)Part 89
http://hibari.2ch.net/test/read.cgi/tech/1314783907/
500デフォルトの名無しさん:2011/09/25(日) 22:36:05.16
左chと右chに異なる周波数が読み込めるようにしたいのですがどこから手を付けたらいいのかわかりません。
教えて頂けると助かります、よろしくお願いします。

http://codepad.org/vksSs7IN
501デフォルトの名無しさん:2011/09/26(月) 02:33:42.54
>>500
WAV フォーマット
でググった1件目
http://www.kk.iij4u.or.jp/~kondo/wave/
502デフォルトの名無しさん:2011/09/26(月) 05:57:44.86
>>501
ありがとうございます、なんとかなりそうです
503デフォルトの名無しさん :2011/09/27(火) 08:47:25.85
あんまり暇なんでΣのプログラムの例を作ってみた
#include <stdio.h>
typedef double(*fk)(double);
double sigma(int k,int klimit,fk);
/*
例えば
5
Σ (2k+1)
k=1
*/
double func(double k)
{
return 2*k+1;
}
double sigma(int k,int klimit,fk FK)
{
double red = 0;
for(;k <= klimit;k++){
printf("%.0lf",FK(k));
if(k<klimit)
putchar('+');
red += FK(k);
}
return red;
}
int main()
{
double result = sigma(1,5,func);
printf("=%.0lf \n",result);
return 0;
}
504デフォルトの名無しさん:2011/09/27(火) 09:21:02.90
>>503
気のせいかな。ム板の書き込みがかなり減ってきている。
私はどこにその統計があるのか知らないので、「気」でしかないけど。
505デフォルトの名無しさん:2011/09/27(火) 09:21:48.59
初期値、最大値、数式をコマンドラインから入力できるようになればもっといい
506デフォルトの名無しさん:2011/09/27(火) 09:22:28.98
このスレは夏休みが終わったで説明つくけど、
他の板は何でだろうな。
507デフォルトの名無しさん:2011/09/27(火) 10:03:55.54
>>503
関数2回呼び出してんじゃねーよw
508デフォルトの名無しさん:2011/09/27(火) 14:52:06.32
大きなプロバイダが投稿規制されたとか?
509デフォルトの名無しさん:2011/09/27(火) 15:12:00.09
IT業界の悪い噂がおおやけになってプログラマを目指す若者がいなくなったんだよ
510デフォルトの名無しさん:2011/09/27(火) 19:31:53.77
ところでQZちゃんを最近見ないがどうなったの?
511 ◆QZaw55cn4c :2011/09/27(火) 20:55:12.55
512デフォルトの名無しさん:2011/09/27(火) 21:03:28.38
ええーっw
さすがにもう宿題するの飽きたのか?w
513デフォルトの名無しさん:2011/09/27(火) 21:11:50.42
宿題すくねえな
514デフォルトの名無しさん:2011/09/27(火) 21:15:22.71
コテつけてないのか
515デフォルトの名無しさん:2011/09/27(火) 21:15:46.61
なんでもないっす
516503:2011/09/29(木) 06:58:06.64
あくまで、あんまり暇なんで作ったプログラムなんで、改良したければどうぞ
ご自由に。


だって、俺、このプログラムつかわねーもん
517デフォルトの名無しさん:2011/09/29(木) 09:29:01.04
perlで作ってevalすりゃ汎用性が高くなるな
cじゃそういうことはできんのかね?
518デフォルトの名無しさん:2011/09/29(木) 23:01:02.19
[1] 授業単元: ロボットプログラミング
[2] 問題文(含コード&リンク):パソコン間で、全方位カメラの映像を取得する。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2011年10月4日
[5] その他の制限: サーバークライアント方式、TCP/IPを使用する。

どなたか、詳しく説明をしてくれませんか
519デフォルトの名無しさん:2011/09/29(木) 23:06:29.84
まず、作るべきソフトウェアは二つです
520518:2011/09/29(木) 23:14:11.33
>>519
それは、どういうことですか?
521デフォルトの名無しさん:2011/09/29(木) 23:20:54.52
おおざっぱに言うと、
情報を送る側=サーバー (カメラがあるPCで動くソフト)
情報を受け取る側=クライアント (映像を取得する側でのソフト)
522デフォルトの名無しさん:2011/09/29(木) 23:51:00.26
>>518
とりあえず単一マシンでカメラの映像を表示できるようになれ
523518:2011/09/30(金) 10:46:57.92
>>522
単一のカメラで映像を表示することができました。

しかし、いまだにクライアントサーバの仕組みができません。
どなたか、簡単なプログラム例を教えてくれませんか。
524デフォルトの名無しさん:2011/09/30(金) 11:21:00.35
>>523
BSDソケットを叩け
525デフォルトの名無しさん:2011/09/30(金) 12:53:18.23
RFC1149で一発だな
526デフォルトの名無しさん:2011/09/30(金) 14:28:11.56
527デフォルトの名無しさん:2011/09/30(金) 14:48:51.39
>>523
sokcet(), bind(), listen(), accept(), connect(), send(), recv() 使う関数はこれくらいしかないよ
適当にググったら
ttp://www.geocities.jp/sugachan1973/doc/funto45.html
頭の悪そうなページだけど、真ん中くらいに最も簡単なサバ・クラのサンプルが有る
このサンプルはシングルクライアントが前提だが、複数のクライアントが接続するなら accept() の都度、
別スレッド(又はプロセス)を起こしてクライアント毎の送信を処理させるべきだろう

画像を送る場合に留意しなければならない事は、ソケットが用いるパケットサイズが4KByte(記憶が怪しい)なので
受信する際には一度のrecv() で全てのデータを受信できない可能性がある事だ(送る時は気にしなくて良いと思う)
よって、クライアントプログラムは recv() の戻り値を確認して必要なデータサイズに達するまで受信を繰り返す必要が
有るだろう

俺が始めて業務用のソケットコードを書いたときはネットで拾った情報だけで書いた
自分で調べて理解して書く事は後に残る財産になるから頑張れ
528デフォルトの名無しさん:2011/09/30(金) 22:50:37.21
>>527
>sokcet(), bind(), listen(), accept(), connect(), send(), recv() 使う関数はこれくらいしかないよ

select() は無視ですか・・・
529デフォルトの名無しさん:2011/09/30(金) 23:16:20.86
>>528
スレッド・プロセスが単一の受送信に用いられるなら select() は必要無い
勿論、業務レベルのコードには必須だけど NON_BLOCKING みたいな話は少しTCPを理解してからの方が良い
530デフォルトの名無しさん:2011/10/01(土) 03:00:22.15
横からだけど、まあ揚げ足取りにしか見えない
531デフォルトの名無しさん:2011/10/02(日) 01:21:45.66
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
平成○年の値を入力し、西暦に変換するプログラムを作成
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VS2008
 [3.3] 言語: C
[4] 期限:2011/10/5まで
[5] その他の制限: C言語初心者です。宜しくお願いします
532デフォルトの名無しさん:2011/10/02(日) 01:29:08.29
#include<stdio.h>

int main(void){
int year,heisei;
printf("平成何年ですか\n");
scanf("%d",&heisei);
year=heisei+1988;
printf("平成%d年は西暦%d年です",heisei,year);
return 0;
}
533質問者333:2011/10/04(火) 01:39:16.55
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):http://codepad.org/zZIfVRy9 問題文は上部に記載 下は自分で作ったものです。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 2011年10月7日まで
[5] その他の制限:制限は特にありませんが、要望として、既に作成したプログラムをあまり変えずに間違っている部分の指摘をお願いします。
リンク先の23行目がちゃんと動いてくれないところが不明です。よろしくお願いします。
534デフォルトの名無しさん:2011/10/04(火) 02:04:06.32
>KEISAN(rkizami,kuri,anser);
anser = KEISAN(rkizami,kuri,anser);

>float KEISAN(float rv,int kaisu,float ans) /* 計算する関数の定義 */
>{
> int i;
> for(i=kaisu;i>0;--i){ /* 回数が0になるまでループ */
> ans+=rv;
> }
>}
float KEISAN(float rv,int kaisu,float ans) /* 計算する関数の定義 */
{
int i;
for(i=kaisu;i>0;--i){ /* 回数が0になるまでループ */
ans+=rv;
}
return ans;
}
535質問者333:2011/10/04(火) 02:34:23.15
>>534
ありがとうございます!
意図した動作を行うプログラムになりました。
536デフォルトの名無しさん:2011/10/04(火) 12:32:18.67
[1] 授業単元:練習課題
[2] 問題文(含コード&リンク):下記仕様に従ってクラスを作成し、正しく動作するかプログラミングして確認せよ。
なお、プロパティは全てprivateとする。クラス名:CEnemy
プロパティ:名前(半角20文字 char型)
X座標(int型) 格納する値は0~255の範囲とする。Y座標(int型) X同様。
メソッド コンストラクタ
名前をキーボードから入力する。X座標、Y座標を0で初期化。
デストラクタ「xxxは全滅しました・・・」と表示
void Action (void)乱数を用いて、適当な確率でPunch()Kick()Nop()を呼び出す。
void Punch (void)「xxx(名前)はパンチした!」と表示
void Kick (void)「xxx(名前)はキックした!」と表示
void Nop (void)「xxx(名前)はじっとしている・・・」と表示
void MoveX (void)X座標を1~5の範囲(ランダム)で加算し、「xxx(名前)は移動しました」と表示。
表示後、DisplayPosition()を実行。
void MoveY (void)Y座標を加算。内容はMoveXと同様。
void DisplayPosition (void)「xxx(名前)はX=999 Y=999にいます」と座標値を表示
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008
[3.3] 言語:C++
[4] 期限: 2011年10月6日14:30まで]
[5] その他の制限:コメントのほうよろしくお願いします。
537デフォルトの名無しさん:2011/10/04(火) 13:54:17.84
538デフォルトの名無しさん:2011/10/04(火) 18:38:57.33
>>537
助かりました!ありがとうございます。
539デフォルトの名無しさん:2011/10/04(火) 22:33:07.79
[1] 授業単元:プログラミング基礎Ⅱ
[2] 問題文(含コード&リンク):

(1) 1 以上2003 以下の整数がある。この中から連続する2 個の整数を取り出したところ、小さい方の整数
の各位の数字の和が、大きい方の整数の各位の数字の和の2 倍になっていた。
このような連続する2 個の整数のうち、小さい方の整数について次の問いに答えよ。
(a) 最大の整数は何か?
(b) すべての個数を求めよ。

(2) 次の2 つの式をみたす正の整数の組(a, b, c) をすべて求めよ。ただし、3 つの数の並ぶ順番が異なる
組は区別する。

ab + c = 13
a + bc = 23

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年10月5日正午
[5] その他の制限: whileまたはforを使うと思われます。
よろしくお願いします。
540デフォルトの名無しさん:2011/10/04(火) 22:40:07.39
TopCoderで出されそうな問題だな、良い学校だ。
541デフォルトの名無しさん:2011/10/04(火) 22:46:37.82
TopCoderの問題だったりして。
542デフォルトの名無しさん:2011/10/04(火) 22:47:41.17
2003年の問題かw
543540:2011/10/04(火) 22:51:03.30
マジかw
544デフォルトの名無しさん:2011/10/04(火) 22:56:25.84
(2) 10*a +b +c = a +10*b +c -10
  9*a = 9*b -10
  9*(b-a) = 10
  b-a = 10/9 ...そんな正の整数あるのん?
545デフォルトの名無しさん:2011/10/04(火) 22:57:22.95
>>544
多分 ab とは a*b のことだろう
546デフォルトの名無しさん:2011/10/04(火) 23:04:20.78
1 2 11
1 11 2
2 3 7
547デフォルトの名無しさん:2011/10/04(火) 23:05:31.86
>>540
こんな簡単な問題が出たとしたら時間配分は5~10分程度だろ
548デフォルトの名無しさん:2011/10/04(火) 23:08:41.45
a * b + c = 13 だと思うよ
549デフォルトの名無しさん:2011/10/04(火) 23:22:18.16
#include <stdio.h>
int main(void) {
int i, j, k, cnt = 0, ans;
for(i = 1; i < 200; i++) {
for(j = i, k = 0; j; j /= 10) k += j % 10;
if(k == 7) ans = i, cnt++; }
printf("最大:%d 合計:%d個\n", ans * 10 + 9, cnt);
return 0; }

#include <stdio.h>
int main(void) {
int a, b, c;
for(a = 1; a < 13; a++) {
for(b = 1; ; b++) {
c = 13 - a * b;
if(c <= 0) break;
if(a + b * c == 23) printf("a = %d b = %d c = %d\n", a, b, c); }}
return 0; }
550デフォルトの名無しさん:2011/10/04(火) 23:23:02.69
551デフォルトの名無しさん:2011/10/04(火) 23:23:36.49
>>549
先越されたw
552デフォルトの名無しさん:2011/10/05(水) 00:45:02.38
解説希望
くりあがるとこだけが対象だから1~200なのはわかるが、それ以外の意味がわからない
553デフォルトの名無しさん:2011/10/05(水) 00:53:41.82
>>552
k+9=2*(k+1)
554デフォルトの名無しさん:2011/10/05(水) 01:30:50.94
なるほど単純な方程式でしたさんきゅう
555デフォルトの名無しさん:2011/10/05(水) 21:13:19.26
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 2011年10月6日 08:00まで
  [5] 一度作ったものをあまり動かさないで問題点を解決できればと思います。
556デフォルトの名無しさん:2011/10/05(水) 21:26:55.10
557デフォルトの名無しさん:2011/10/05(水) 21:31:36.00
問題があったのは初期化されないままminが配列の添え字として使われてた点
558デフォルトの名無しさん:2011/10/05(水) 21:32:10.48
>>557
だけじゃないだろ
559デフォルトの名無しさん:2011/10/05(水) 21:33:33.03
>>556
助かりました。ありがとうございます
560デフォルトの名無しさん:2011/10/05(水) 21:36:25.52
>>558
回答は出したから
まずは落ちないようにする観点を知ってほしかっただけ
561デフォルトの名無しさん:2011/10/05(水) 21:40:32.86
不意に気になった
Segmentation Faultを”セグレった”って言ってたことがある
今は・・・あまり声に出して読まないな
皆はこれなんて言ってる?
562デフォルトの名無しさん:2011/10/05(水) 21:42:52.69
すまん書き込んでから気がついたがスレチだ忘れてくれ
563デフォルトの名無しさん:2011/10/06(木) 00:14:15.42
http://codepad.org/bsGYVXWW
ここまでは出来たんだが、↓のように表示するにはどう加えればいいのですか?
学生別平均 学生1:0.0 学生2:0.0 学生3:0.0 学生4:0.0
科目別平均 科目1:0.0 科目2:0.0 科目3:0.0
564デフォルトの名無しさん:2011/10/06(木) 03:32:24.04
565デフォルトの名無しさん:2011/10/06(木) 17:49:26.32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
「基礎問題」
再帰処理を用いて任意のスリザーリンク(ナンバーライン)
問題を解くプログラムを作成せよ。(定石は使わないこと。)

「応用問題」
問題を生成するプログラムを作成せよ。

問題文が書き切れないので省略しました。
[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン:microsoft Visual C++
 [3.3] 言語: Cでお願いします。
[4] 期限: 10月10日 08:00まで
[5] プログラミングの講義では構造体やファイルの入出力まで、
ほかの講義でアルゴリズム、データ構造について習いましたが
使いこなせてないです。
宜しくお願いします。
566デフォルトの名無しさん:2011/10/06(木) 22:24:49.35
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
番号と点数を配列に初期化して、それらを
5段階にランク付けをして、受験番号・ランクを表示するプログラムを作成。
ランク付けをする部分を関数Rankとして、番号と評価を表示する部分を関数Outputとすること。
なお、ランクの評価は0~19点をE、20~39点をD、40~59点をC、
60~79点をB、80~100点をAとする。
ただし、受験者の数は、50人以下とする。
番号と点数は、以下の配列を使用すること。
番号 int no[NUMBER]={1,2,3,4,5,6,7,8,9,10};
点数 int tensu[NUMBER]={45,21,60,81,70,99,0,10,20,100};
[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:無期限
[5] 趣味でやっていますが、初心者なので構造体までしかやっていません
567デフォルトの名無しさん:2011/10/07(金) 00:39:52.82
>>566
ttp://codepad.org/8pR33s4r
趣味で宿題ってどういうことだろう
568デフォルトの名無しさん:2011/10/07(金) 02:00:42.37
>>567
そういやそうだった
最近C言語に興味をもって兄からもらった本で勉強中
構造体が1番苦手です
569デフォルトの名無しさん:2011/10/08(土) 08:24:09.19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
int k を受け取り, 以下の級数

Sk= 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ... + (-1)k/(2k+1)
の値を返す関数 double my_series ( int k ) を作成せよ. main 文では scanf で int n を受け取り, 級数 Sk の値を k = 0, 1, 2, ..., n について計算し, 結果を表示せよ.
(ヒント k が大きくなると 4Sk は円周率に近づく.)


[3] 環境
 [3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月10日
 [5]よろしくお願いします。
570デフォルトの名無しさん:2011/10/08(土) 08:55:59.04
ところでその式、なんの式か分かるよね?
571デフォルトの名無しさん:2011/10/08(土) 09:33:23.60
572デフォルトの名無しさん:2011/10/08(土) 11:00:06.04
>>571
ありがとうございました。
573デフォルトの名無しさん:2011/10/08(土) 11:04:29.93
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
挿入ソートを乱数配列に対して 100 回実行し, 一回のソートにおける 配列要素の値の比較回数とその平均値を表示するプログラムを作成せよ. また, 以下の機能も加えよ;
1.整数 n, max を scanf で受け取り, 乱数配列の 長さ n と乱数の範囲 ( 1 から max まで )を指定できる.
2.一回のソートにおける比較回数は見やすいように各行 10 個ずつ表示する.



[3] 環境
 [3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月10日
 [5]よろしくお願いします。
574デフォルトの名無しさん:2011/10/08(土) 11:06:47.81
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
ファイル名を一つ引数として指定し、その中に含まれている (いわゆる半角の)アルファベットの出現頻度を調べて表示するプログラムを作れ。但し、大文字小文字は同一視するものとする。
./countchar aaa.txt
a: 10
b: 5
c: 20
d: 7
e: 31
...
z: 2

のような感じ。
[3] 環境
 [3.1] OS: Windows 7
 [3.2] gcc
 [3.3] C
[4] 2011/10/19
[5] ポインタ・ファイル入出力をかじった程度です。よろしくお願いします
575デフォルトの名無しさん:2011/10/08(土) 11:07:22.60
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
要素数 no の配列 int a[no] を受け取り, その配列の要素の平均を返す関数 double average ( int a[], int no ) を作成せよ.
同様に配列の 合計を返す関数 int sum ( int a[], int no ), 最大値を返す関数 int max ( int a[], int no ) を作成し, すべての関数を main 文で実行し結果を表示せよ.
[3] 環境
 [3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月10日
 [5]よろしくお願いします。
576デフォルトの名無しさん:2011/10/08(土) 11:50:19.94
よろしくお願いします。

「プログラミング言語C 第2版 ANSI規格準拠」を凡そ学びました。
Visual C++は、コンソールアプリケーションでプログラミングの学習をする程度しかわからないです。
Microsoft Network Monitor 3.4 をつかって、DNSの通信内容を覗きました。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): ※1
[3] 環境
 [3.1] OS: Windows XP SP3
 [3.2] Visual C++ 2010 Express
 [3.3] 言語: どちらでも可
[4] 期限: 2011年10月14日09:00まで
[5] その他の制限:
   Winsock利用。コンソールアプリ。アダプタの選択を可能とすること。
   終了は強制終了(「×」や「Ctrl+C」)で構わない。
577576:2011/10/08(土) 11:50:43.03
※1
TCP/IP通信の内容の一部をコンソールへダンプ表示するプログラムを作成せよ。
条件を以下の通りとする。
プロトコル:IPv4/UDP/DNS (ポート番号53固定で構わない)
その他:DNSリクエストのみ (送信先ポート番号=DNSである全てで構わない)
書式:
┌──────────────────────────────────────┐
|=========-=========-=========-=========-=========-=========-[改行]
|[送信元IPアドレス:ポート番号] -> [送信先IPアドレス:ポート番号][改行]
|[UDPペイロード全ての16進数表記(※詳細書式は「例」を参照)][改行]
└──────────────────────────────────────┘
例:(「www.google.co.jp」を利用したリクエスト)
  (1行16バイトで改行とする。)(行末の空白や最終行の改行など細かな違いは問わない)
┌──────────────────────────────────────┐
|=========-=========-=========-=========-=========-=========-
|192.168.1.100:60000 -> 192.168.1.1:53
|DD BD 01 00 00 01 00 00 00 00 00 00 03 77 77 77
|06 67 6F 6F 67 6C 65 02 63 6F 02 6A 70 00 00 01
|00 01

└──────────────────────────────────────┘
578デフォルトの名無しさん:2011/10/08(土) 13:55:15.38
579デフォルトの名無しさん:2011/10/08(土) 14:00:07.02
>>578
ありがとうございます
580デフォルトの名無しさん:2011/10/08(土) 14:04:41.62
581デフォルトの名無しさん:2011/10/08(土) 14:25:24.28
582デフォルトの名無しさん:2011/10/08(土) 18:45:31.34
>>578
なんとなく見直したらfcloseし忘れとる・・・
ちゃんとfcloseするようにしましょう
583デフォルトの名無しさん:2011/10/08(土) 20:51:03.57
数スレ前に起こった話題が再燃の予感
584 ◆QZaw55cn4c :2011/10/09(日) 00:19:10.17
>>583
信者にはほとほと手を焼いています。
585デフォルトの名無しさん:2011/10/09(日) 00:28:14.66
>>582
その際、ちゃんと fclose() の戻り値チェックもしましょう。
あと、fgets() で発生したエラーチェックもしましょう。
そして、printf() の戻り値チェックもしましょう。
586デフォルトの名無しさん:2011/10/09(日) 00:31:44.95
>>584
貴様がカスなだけ
587デフォルトの名無しさん:2011/10/09(日) 01:08:17.04
クズは頭悪すぎてまともに話にならないからな
588デフォルトの名無しさん:2011/10/09(日) 02:11:04.89
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
3x4 の行列を二次元配列で定義し, 行列の指定した行の和を計算するプログラムを作成せよ.
ただし, 一つの行の合計は, 行の先頭を指す整数型のポインタ a と列数をあらわす整数 n を受け取り, 一行の合計を返す 関数 int row_sum( int* a, int n ) を作成し計算せよ. (関数の引数と返り値の型を指定されたもので作ること)

[3] 環境
 [3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月10日
 [5]ポインタの問題で頭を悩ませています。よろしくお願いします。
589デフォルトの名無しさん:2011/10/09(日) 02:13:54.23
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
scanf により n を受け取り, 要素数 n の 1 ~ 10 の値を持つ乱数配列を生成し表示するプログラムを作成せよ.
ただし, 配列の要素を表示するときは一行につき 10 個ずつ表示するようにせよ.

[3] 環境
 [3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月10日
 [5]ポインタの問題で頭を悩ませています。よろしくお願いします。
590デフォルトの名無しさん:2011/10/09(日) 09:44:19.69
>>588
int row_sum(int*a,int n){int s=0;for(;n;n--)s+=*(a++);return s;}
591デフォルトの名無しさん:2011/10/09(日) 11:58:33.33
>>588
i;m[3][4]={1,2,3,4,2,3,4,5,3,4,5,6};
int row_sum(int*a,int n){int s=0;while(n--)s+=*(a++);return s;}
main(){while(i++<3)printf("%d:%d\n",i,row_sum(m[i-1],4));}
592 ◆QZaw55cn4c :2011/10/09(日) 12:20:59.76
>>586
信者= ◆QZaw55cn4c ですが、何か?
593デフォルトの名無しさん:2011/10/09(日) 14:52:02.89
フォルダってどうやって追加したらいいんだ?
Sequenceフォルダの中身のヘッダやらcppを使いたいんだが使えない…
ただ単にVC++の中でフォルダ追加してその中にヘッダやcppを入れても使えないよね?

説明下手でごめんね。分かる人いたら回答お願いします。
594デフォルトの名無しさん:2011/10/09(日) 15:41:02.88
595デフォルトの名無しさん:2011/10/09(日) 15:44:02.34
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):int型変数が何個程度利用可能か調べるプログラムを作成せよ。
・確保する個数を変数とし、その値を増加(増加幅は100~1000)して
     -確保できたら、確保メモリ領域を解放し、変数を増加して繰り返し
     -確保できなかったら、処理を工夫して最終結果を表示
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月10日
[5]calloc関数の扱いが良く分からない・・・

よろしくお願いします。
596デフォルトの名無しさん:2011/10/09(日) 15:45:16.68
>>593
Visual Studio スレへいってインクルードパスの追加の方法をきいてくればおk
597デフォルトの名無しさん:2011/10/09(日) 17:11:11.01
>>595

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

int allocate_int(unsigned long long sz) {
int *allocated = (int*)calloc(sz, sizeof(int));
if(allocated == NULL) return 0;
free(allocated);
return 1;
}

int main(void) {
unsigned long long sz;
for(sz = 1000; allocate_int(sz); sz += 1000);

printf("failed to allocate memory: %llu bytes (int * %llu)\n", sz * sizeof(int), sz);
return 0;
}
598デフォルトの名無しさん:2011/10/09(日) 17:17:17.98
>>594 >>596
ごめん、スレチだったね。誘導ありがとう!
599デフォルトの名無しさん:2011/10/09(日) 18:04:57.62
>>592
つまり「自分にほとほと手を焼いている」わけだな?
それならわかるよw
600デフォルトの名無しさん:2011/10/09(日) 18:09:51.01
◆QZaw55cn4cの人気に嫉妬?
601デフォルトの名無しさん:2011/10/09(日) 18:24:06.33
602デフォルトの名無しさん:2011/10/09(日) 18:55:48.56
>>600
どこまでもそういう馬鹿な受け取り方しか出来ない所が自己愛性人格障害
603デフォルトの名無しさん:2011/10/09(日) 20:58:04.70
◆QZaw55cn4cに反応する人がいる限り、人気は衰えないね
604デフォルトの名無しさん:2011/10/09(日) 22:21:09.69
>>590 >>601
ありがとうございました。
605デフォルトの名無しさん:2011/10/09(日) 22:27:19.20
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):

適当な数値を持った要素数 3 の int 型の配列 a を定義し, 以下のようにポインタ p, q, r に a のアドレスを代入する.
1.int *p = &a[0]
2.int *q = a
3.int (*r)[3] = &a
配列 a の各要素の値とアドレスを p, q, r を使って表示せよ. ただし, ポインタ表現をつかい p[i] などという表現は使ってはいけない[3] 環境
 [3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月10日
 [5]ポインタの問題です。よろしくお願いします。
606デフォルトの名無しさん:2011/10/09(日) 22:34:05.88
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
int 型の二次元配列 a[3][4] を定義し, 以下のようにポインタ p, q, r にアドレスを代入して p, q, r を使って配列 a の各要素の値とポインタ (p+i), (q+i), (r+i) のアドレスを 表示せよ.
ただし, 配列 a の各要素を表示するときはポインタ表現をつかい p[i][j] などという表現は使ってはいけない.
[3] 環境
 [3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月10日
 [5]ポインタの問題です。よろしくお願いします
607デフォルトの名無しさん:2011/10/09(日) 22:36:40.96
常々おもうんだけどmicrosoft visualっていうコンパイラ名なの?
608デフォルトの名無しさん:2011/10/09(日) 22:45:08.24
605,606
gccでお願いします。
609デフォルトの名無しさん:2011/10/09(日) 22:51:02.53
コンパイラなんてどうでもいいけどさ、
OSのバージョンくらいは教えてくれてもいいんじゃない?
610605:2011/10/09(日) 23:14:28.35
色々と抜けている部分があり、申し訳ありません。
windows XPです。
611デフォルトの名無しさん:2011/10/10(月) 00:09:51.43
>>605
ttp://ideone.com/VmMGn

>>609
なんでここでOS関係あるんだよ
612デフォルトの名無しさん:2011/10/10(月) 03:04:05.36
スリザーリンク解く人いたら実行速度の競争しよう
いなかったらプログラム書かない
613デフォルトの名無しさん:2011/10/10(月) 11:31:17.22
>>611
ありがとうございました
614デフォルトの名無しさん:2011/10/10(月) 11:35:36.35
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
かけ算九九の 20 段までをファイルに書き出すプログラムを作成せよ.
(例えば書き出すファイルを output.txt とすると, プログラム実行後に output.txt をメモ帳などで開くと, かけ算九九の 20 段までがファイルに書かれている.
[3] 環境
 [3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:microsoft Visual
 [3.3] 言語: C
[4] 期限:10月12日
 [5]ファイル処理の単元です。よろしくお願いします。
615デフォルトの名無しさん:2011/10/10(月) 11:36:45.68
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
3 x 3 の行列の値が書かれたファイルを二つ用意する. この 2 つの行列の積を新しいファイルに書き出すプログラムを作成せよ.
(例えば, 行列 A を MatrixA.txt, 行列 B を MatrixB.txt と用意すると, プログラム実行後には行列 A と行列 B の積の値が ファイル MatrixC.txt に書き込まれているようにする.)
[3] 環境
 [3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:10月12日
 [5]ファイル処理の単元です。よろしくお願いします。
616デフォルトの名無しさん:2011/10/10(月) 11:37:10.00
microsoft Visual って何?
617デフォルトの名無しさん:2011/10/10(月) 14:02:58.88
>>615
http://ideone.com/6W4Zx

cat MatrixA.txt
1 2 3
4 5 6
7 8 9

cat MatrixB.txt
11 22 33
44 55 66
77 88 99

./a.out MatrixA.txt MatrixB.txt MatrixC.txt

cat MatrixC.txt
330 396 462
726 891 1056
1122 1386 1650
618デフォルトの名無しさん:2011/10/10(月) 15:05:29.16
2つの引数をもつインスタンスの場合、暗黙的にa,bに入れるにはどう書けばいいのですか?

class cc {
public:
cc::cc(?int a, int b) {
}
};

int main () {
cc c = ????; <<ココ
return 0;
}
619デフォルトの名無しさん:2011/10/10(月) 15:08:21.15
ブラウザで書き込み直し
2つの引数をもつインスタンスの場合、暗黙的にa,bに入れるにはどう書けばいいのですか?

class cc {
public:
  cc::cc(int a, int b) {
  }
};

int main () {
  cc c;
  c = ????; <<ココ
  return 0;
}
620デフォルトの名無しさん:2011/10/10(月) 15:14:34.92
コンストラクタで代入しとけばいいんじゃね
621デフォルトの名無しさん:2011/10/10(月) 15:14:42.65
cc c(10, 20);
622デフォルトの名無しさん:2011/10/10(月) 15:19:06.17
struct cc {
int _a;
int _b;
cc() : _a(0), _b(0) {}
cc(int a,int b) : _a(a), _b(b) {}
cc& operator=(const cc& c){
_a = c._a;
_b = c._b;
return *this;
}
};
int main()
{
cc c;
c = cc(100,200);
return 0;
}
623デフォルトの名無しさん:2011/10/10(月) 15:22:00.56
>>618>>619
cc c = cc(1, 2);
624デフォルトの名無しさん:2011/10/10(月) 15:24:29.17
>>620,621
勉強で、暗黙で入れたかった
>>622
ありがと
625デフォルトの名無しさん:2011/10/11(火) 00:42:18.29
>>614
#include<stdio.h>
i;j;main(){FILE*f;f=fopen("o.txt","w");for(;i<21;i++)for(j=0;j<21;j++)fprintf(f,"%3d%c",i?j?i*j:i:j,(j-20)?32:10);}
626デフォルトの名無しさん:2011/10/11(火) 00:58:09.21
ありがとうございます。
627デフォルトの名無しさん:2011/10/11(火) 00:59:57.59
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
scanf で n を受け取り, 要素数 n の乱数配列を作成し, 指定した 2 つの要素番号にある要素を交換するプログラムを作成せよ.
[3] 環境
 [3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:10月12日
 [5]よろしくお願いします。
628デフォルトの名無しさん:2011/10/11(火) 01:01:23.21
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
scanf で n を受け取り,
Sn= 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... + (-1)n+1/n
を計算せよ. このとき n を大きくすると Sn は log 2 = 0.69314... に近づく.
[3] 環境
 [3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:10月12日
 [5]よろしくお願いします。
629デフォルトの名無しさん:2011/10/11(火) 01:03:10.65
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
scanf により n を受け取り, n×n 行列を二次元乱数配列で定 義する (二次元乱数配列の作成には下記の参考プログラムを利用せよ). その行列の対角より下の成分の和を求めよ. ただし乱数の範囲は 0 ~ 3 とする.
[3] 環境
 [3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:10月12日
 [5]連続での投稿しつれいしました。どうかよろしくお願いします。
630デフォルトの名無しさん:2011/10/11(火) 01:10:09.85
>>625
コードゴルフするなら型は気にしちゃだめなんだぜ
i,p;main(j){for(p=fopen("output.txt","w");++i<21;)for(j=0;++j<21;)fprintf(p,"%3d%c",i*j,j-20?32:10);}
631デフォルトの名無しさん:2011/10/11(火) 01:30:08.13
>>628
#include <stdio.h>
#include <math.h>

int main(void)
{
int i, n;
double s = 0.0;

printf("n = ");
scanf("%d", &n);

for (i = n - 1; i > 0; i--)
s += pow(-1.0, i + 1) / i;

printf("s = %f, log2 = %f\n", s, log(2.0));

return 0;
}
632デフォルトの名無しさん:2011/10/11(火) 01:34:52.46
>>628
#include<stdio.h>
double s;n;i;main(){scanf("%d",&n);while(++i<=n)s+=((i%2)?1:-1)*1./i;printf("%f\n",s);}
>>629
#include<stdio.h>
#include<time.h>
**a;n;i;j;s;main(){srand(time(0));scanf("%d",&n);a=malloc(sizeof(a)*n);for(;i<n;i++){a[i]=malloc(sizeof(int)*n);for(j=0;j<n;j++)a[i][j]=rand()%4;}
for(i=0;i<n;i++)for(j=0;j<n;j++)printf("%d%c",a[i][j],(j+1-n)?32:10);for(i=0;i<n;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}

>>630
なるほど参考になります
633デフォルトの名無しさん:2011/10/11(火) 01:37:43.80
634デフォルトの名無しさん:2011/10/11(火) 01:40:33.04
>>633
速いな
pow()とか出来るだけ使わない方がいいのか
635デフォルトの名無しさん:2011/10/11(火) 01:44:08.67
nが1ずれてるぞ
636デフォルトの名無しさん:2011/10/11(火) 01:54:08.18
-と+入れ替えるためだけにpow使うとか、アホすぎるだろw
637デフォルトの名無しさん:2011/10/11(火) 02:00:13.91
「対角より下」って、普通対角成分含まないと思うんだけど
638デフォルトの名無しさん:2011/10/11(火) 12:51:16.32
【質問テンプレ】
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): http://ideone.com/V0u4z
[3] 環境
 [3.1] Ubuntu
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 10/12(水) 8:00
[5] その他の制限: 長いですがよろしくお願いします
639デフォルトの名無しさん:2011/10/11(火) 12:57:02.02
> 問1: 整数の配列a[]、前半部分の個数c、全体のサイズn を引数にとり、これをマージする
初っ端から問題の意味が分からんのはオレだけか……?

640デフォルトの名無しさん:2011/10/11(火) 13:05:24.71
void merg(int *a, int c, int n) {
int *work = malloc(n * sizeof(int));
int i, j, k;
for(i = 0; i < n; i++) work[i] = a[i];
for(i = 0, j = c, k = 0; ; ) {
if(work[i] > work[j]) {
p[k++] = work[i++];
if(i == c) {
while(k < n) p[k++] = work[j++];
break; } }
else {
p[k++] = work[j++];
if(j == n) {
while(k < n) p[k++] = work[i++];
break; } }
free(work);
}
641デフォルトの名無しさん:2011/10/11(火) 13:20:28.64
適当に直書きしたらいろいろひどいなw

void merge(int a[], int c, int n) {
int *work = malloc(n * sizeof(int));
int i, j, k;
for(i = 0; i < n; i++) work[i] = a[i];
for(i = 0, j = c, k = 0; ; ) {
if(work[i] > work[j]) {
a[k++] = work[i++];
if(i == c) {
while(k < n) a[k++] = work[j++];
break; } }
else {
a[k++] = work[j++];
if(j == n) {
while(k < n) a[k++] = work[i++];
break; } } }
free(work);
}
642デフォルトの名無しさん:2011/10/11(火) 16:00:11.03
643デフォルトの名無しさん:2011/10/11(火) 21:53:15.20
変数増やしたり、ループの外に出して条件判断の回数増やしたり、
余計なことしないで素直にそのまま利用すればいいのに
644デフォルトの名無しさん:2011/10/12(水) 05:10:39.34
>>640-642
皆様ありがとうございます助かりました
645デフォルトの名無しさん:2011/10/12(水) 17:40:43.28
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
■プログラム1:
りんごが30個中、腐ったりんごが10個あったとき、
腐ってないりんごを3人で分けると、
一人当たりのりんごの個数は何個になるか、計算し、
"一人あたりのりんごの個数"と"残ったりんごの個数"を
出力するプログラム。
(C言語の足し算、引き算、かけ算、割り算はそれぞれ、 +, -, *, / を使うが、
割った余り(剰余) は % で計算できる。 (例: n を m で割った余りは n % m ))
■プログラム2:
上記プログラム1 のリンゴの個数などの数を scanfを使ってキーボードから
入力することで、任意の個数に対して計算できるように改良したプログラム。
ただし両プログラムの変数名は、最初のりんごの個数をapple、
腐っていたりんごの個数を bad_apple、人数をpersons、
一人当たりのりんごの個数を apple_for_one、余りをrest とすること。

[3] 環境
 [3.1] OS:windows
 [3.2] VC 6.0
 [3.3] 言語:C++
[4] 期限:10/13
[5] その他の制限:Visual C++で
問題文リンクが載せられなくてすいません。
646デフォルトの名無しさん:2011/10/12(水) 18:16:22.67
//>>645
#include <cstdio>
// ON:プログラム1 OFF:プログラム2
#define PROGRAM_ONE
int main()
{
  int apple, bad_apple, persons;

#ifdef PROGRAM_ONE
  // プログラム1
  apple = 30;
  bad_apple = 10;
  persons = 3;
#else
  // プログラム2
  printf("りんごの個数 >"); scanf("%d", &apple);
  printf("腐っていたりんごの個数 >"); scanf("%d", &bad_apple);
  printf("人数 >"); scanf("%d", &persons);
#endif

  int apple_for_one = (apple - bad_apple) / persons;
  int rest = (apple - bad_apple) % persons;

  printf("リンゴの個数:%d(うち、腐ったりんごの個数:%d)\n", apple, bad_apple);
  printf("人数:%d\n", persons);

  printf("一人あたりのりんごの個数は:%d\n", apple_for_one);
  printf("残ったりんごの個数:%d\n", rest);

  return 0;
}
647デフォルトの名無しさん:2011/10/12(水) 22:51:39.32
すまん。プログラム超初心者でう。
for 文について教えてくれないか・・・・

for 文の中に また for 文を作って 終わり記号(CでもVBでもなんでもいい)
を打ったんだけどさ。

中のfor文が1回 終わったあとに、外の forを1回まわすのは、
どうしたらいい・・・

外の for が一階終わった後に 中の for が 回数上限まで回って、
外のforに制御がわたるんだよ。

for i 1++ <10
i = hoge + 1
for J 1++ <10
J = hote + 1
next
next
みたいになっちゃってんだよ。これをどうしたらいい?
648デフォルトの名無しさん:2011/10/12(水) 22:55:57.91
649デフォルトの名無しさん:2011/10/12(水) 23:17:26.95
>>647
ここは宿題スレだから、テンプレに従って宿題の形式で質問しよう。
それより、通常のC言語スレの方が適しているような気がするが。

ttp://hibari.2ch.net/test/read.cgi/tech/1317249060/

とりあえずエスパーしてみると、
>中のfor文が1回 終わったあとに、外の forを1回まわすのは、
>どうしたらいい・・・
内側のforが不要としか思えないけど。

>みたいになっちゃってんだよ。これをどうしたらいい?
書いたコードと、期待する動作を書いてみなよ。
650デフォルトの名無しさん:2011/10/13(木) 11:33:00.03
[1] 授業単元:計算機アルゴリズムⅠ
[2] 問題文(含コード&リンク):
設問1-1
下記にあるプログラム例5.2.1を変数xの初期値0と終了値100をキーボードから入力するように機能変更しなさい。
プログラム例5.2.1
#include <stdio.h>

int main(void)
{
int x, y;
x = 0;
while (x <= 100)
{
y=3*x*x+2*x+7;
printf("x=%d,y=%d\n",x,y);
x = x + 1;
}
return 0;
}

設問1-2
上記設問1-1をdo-while文を使って書きなさい。
設問1-3
上記設問1-1の表示がxの値の降順になるように書き換えなさい。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2011年10月14日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文は習いました。
宜しくお願いします。
651デフォルトの名無しさん:2011/10/13(木) 13:07:19.97
[1] 授業単元:C言語システムプログラミング
[2] 問題文(含コード&リンク):
複数の整数を入力した後,その一覧に最大(Max)と最小(Min)の印を付けて表示するプログラムを作成せよ.
但し,初めに入力する個数を入力する.(入力数は最大10とする)
実行例↓
Number? 4
Score1? 40
Score2? 90
Score3? 80
Score4? 30
***Result***
1 40
2 90 Max
3 80
4 30 Min

[3] 環境
 [3.1] OS:windows 7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:[2011年10月17日23:59まで]
[5] その他の制限:授業では入出力、制御構造、配列までやりました。
よろしくお願いします。
652デフォルトの名無しさん:2011/10/13(木) 15:47:46.61
>>651
#include <stdio.h>

int main(void)
{
int number=0, score[10], max, min, i;

printf("Number? ");
scanf("%d", &number);
if(number>10) number=10;

for(i=0;i<number;i++)
{
printf("Score%d? ", i+1);
scanf("%d", &score[i]);
if(i==0) max=min=score[i];
if(score[i]<min) min=score[i];
if(score[i]>max) max=score[i];
}

printf("***Result***\n");
for(i=0;i<number;i++)
{
printf("%d %d", i+1, score[i]);
if(score[i]==max) printf(" Max");
if(score[i]==min) printf(" Min");
printf("\n");
}
return 0;
}
653デフォルトの名無しさん:2011/10/13(木) 17:20:38.87
654デフォルトの名無しさん:2011/10/13(木) 17:45:48.36
りっちーが逝ったか
655デフォルトの名無しさん:2011/10/13(木) 17:52:55.25
C言語は前世紀/多分今世紀も最高傑作の言語だな
656デフォルトの名無しさん:2011/10/13(木) 21:52:03.83
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):1^2+2^2+3^2+……+n^2が2000を超えるときのnの値と、そのときの合計を求めるプログラムを作りなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C
[4] 期限: 2011年10月15日まで
[5] その他の制限: while文を使ったプログラムでお願いします。
657デフォルトの名無しさん:2011/10/13(木) 22:01:17.66
#include <stdio.h>

int main(void)
{
int n = 1;
int S = 1;

while (S <= 2000) {
++n;
S += n * n;
}

printf("n = %d, S = %d\n", n, S);
}
658デフォルトの名無しさん:2011/10/13(木) 22:23:41.33
>>657
ありがとうございます!

659デフォルトの名無しさん:2011/10/14(金) 01:27:01.26
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
以下を参考に再帰的二分探索を作成せよ。
http://codepad.org/BHEasb4b
お手数ですが、詳細はURLでお願いします。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/15 23:00
[5] その他の制限:配列は整数で昇順にソートされている前提でした。授業では配列、ポインタは習っています。よろしくお願いします。
660デフォルトの名無しさん:2011/10/14(金) 02:22:01.40
661デフォルトの名無しさん:2011/10/14(金) 02:32:59.75
>>660
ありがとうございます!
しかし課題の説明では入力は
int x,int v[],int n
の3つと言われたのですが
入力を3つでプログラミングすることは出来ないですか??
注文が多くて申し訳ないです。。
662デフォルトの名無しさん:2011/10/14(金) 03:24:36.86
int binsearch(int x, int v[], int n)
{
int m = n / 2, r;
if(n < 1) return -1;
if(v[m] > x) return binsearch(x, v, m);
if(v[m] == x) return m;
r = binsearch(x, v + m + 1, n - m - 1);
if(r >= 0) r += m + 1;
return r;
}
663デフォルトの名無しさん:2011/10/14(金) 08:06:07.01
>>653
有難う御座います
664デフォルトの名無しさん:2011/10/14(金) 13:38:52.65
>>662
ありがとうございます!
665デフォルトの名無しさん:2011/10/14(金) 20:57:08.14
[1] 元:P入門 [2] 文

数字が書かれているtxtFからそれを読み込んで
別のtxtFに出力するCPを作成せよ。
入出力Fはコマンドラインから任意で指定すること。

数字のみを標準出力するCPを入力Fとして、txtFに
その結果を出力するCPを作れ。
入力、出力Fはコマンドラインから任意に指定すること。
[3] 環境
 [3.1] OS 7
 [3.2] コ名とバ:gcc [3.3] 言:C [4] 今日 23時まで
[5] 制: ②は実行端末においてコマンド | echo cat > <使用禁止。

今日は文長すぎに引っかかるのですいません・・省略してます。
666デフォルトの名無しさん:2011/10/14(金) 22:33:08.80
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク): 月の英語名を初期値とした文字列配列(大きさは12x10)を使って
キーボードから月の英語名を入力しそれが何月かを表示するプログラムを作成せよ.
実行例↓
$./kadai
Month? October
October is 10 gatsu

$./kadai
Month? May
May is 5 gatsu
[3] 環境
 [3.1] OS:windows 7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:[2011年10月16日まで]
[5] その他の制限:特になし、よろしくお願いします
667デフォルトの名無しさん:2011/10/14(金) 22:48:12.90
#include <stdio.h>

const char* MONTH[] =
{
  "January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December",
};

int get_gatsu(char* str)
{
  int i;
  for(i=0; i<12; i++){
    if(strcmp(MONTH[i], str) == 0){ return i+1; }
  }
  puts("fuck!!!");
  exit(1);
}

int main(int argc, char* argv[])
{
  char str[100];
  printf("Month? "); scanf("%s", str);
  printf("%s is %d gatsu\n", str, get_gatsu(str));
  return 0;
}
668デフォルトの名無しさん:2011/10/14(金) 23:17:35.78
>>665
『CP』ってCのプログラムって意味か?
関数名だとおかしいよな。
669デフォルトの名無しさん:2011/10/15(土) 01:22:26.89
>>667
すいません、補足事項の部分の掲載わすれてました
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク): 月の英語名を初期値とした文字列配列(大きさは12x10)を使って
キーボードから月の英語名を入力しそれが何月かを表示するプログラムを作成せよ.
実行例↓
$./kadai
Month? October
October is 10 gatsu

$./kadai
Month? May
May is 5 gatsu
[3] 環境
 [3.1] OS:windows 7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:[2011年10月16日まで]
[5] その他の制限
補足事項:
char month[12][10] = {" "," "," ",…}, imonth[10]; // 文字列配列の宣言

scanf("%s", imonth);

for(i = 0; i < 12; i++) {
/* month[i]で文字列配列を指定する */
if(strcmp(month[i],imonth)==0); // この時のi+1が月になる
}
これを参照のこと
解いていただいたのに、申し訳ないです。
670デフォルトの名無しさん:2011/10/15(土) 01:28:59.55
条件後だしは死刑ということになっておる
671669:2011/10/15(土) 02:11:30.11
>>670
テンプレに書いてありましたね汗 すいませんでした。
672デフォルトの名無しさん:2011/10/15(土) 18:05:13.52
>>665
②に関して
1)数字のみを標準出力するプログラム(乱数を規定回数出力するのか?)
2)コマンド引数のファイルに標準に1)の出力を書き込むプログラム
の二つのプログラムを作れって問題か?
しかもリダイレクション禁止って事は2)から1)を起動してその標準出力を読み込むんだから
popen() あたりを使う事になるぞ
そんなレベルの問題なのか?
673デフォルトの名無しさん:2011/10/15(土) 19:02:11.60
P入門とかCPとかtxtFとかイミフな略語にする奴には
イミフな略語で応えればいい
674デフォルトの名無しさん:2011/10/16(日) 15:53:11.58
OS 7ってwindows 7のことだよね?
catコマンドなんてあったっけ?
675デフォルトの名無しさん:2011/10/16(日) 20:24:59.95
MAC OS 7 じゃないのか?
676デフォルトの名無しさん:2011/10/16(日) 20:30:14.15

いつの話だよ
67748:2011/10/16(日) 20:36:27.32
FM-7だろ。
678デフォルトの名無しさん:2011/10/16(日) 20:49:38.16
>>673
お前、日立社員をdisってるのか?
679デフォルトの名無しさん:2011/10/16(日) 20:53:17.02
>>678
Q言語はみたことある
680デフォルトの名無しさん:2011/10/16(日) 23:40:46.93
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):任意のデータ(1、100、10)など)を入力するとそれぞれを3つの行列テーブルに分けた後、3次元の離散コサイン変換を行うプログラム。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年10月31日
[5] その他の制限: 特にないです。
681デフォルトの名無しさん:2011/10/16(日) 23:46:52.36
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
N×Nの行列を入力させ、その転置行列を出力するプログラムを作成せよ.
ただしNはプログラム内で記号定数として定義し,ここでは3とすること.転置行列とは、行と列を入れ替えた行列である.
実行した時↓
$ ./kadai
3 x 3 matrix:
Row 1? 1 4 5
Row 2? 10 8 9
Row 3? 7 2 11
Transposed matrix:
1 10 7
4 8 2
5 9 11

[3] 環境
[3.1] OS:windows 7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: ([2011年10月17日まで]
[5] その他の制限:
ヒント:scanf("%d %d %d", row[i][0], row[i][1], row[i][2]);

よろしくお願いします
682デフォルトの名無しさん:2011/10/17(月) 00:57:14.54
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
void concat(struct node *p, struct node *q)
ノード*p以降のリストの後に,ノード*q以降のリストを連結
する関数
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/17 18:00
[5] その他の制限:授業で習ったことはURLに乗せてあります。配列、ポインタは学習しています。よろしくお願いします。
http://codepad.org/lB3YPaFE
683デフォルトの名無しさん:2011/10/17(月) 01:04:13.73
[1] 授業単元:計算機アルゴリズムⅠ
[2] 問題文(含コード&リンク):
設問1-1
プログラム例5.3.1で「for(i=0;i<10;i=i+1)」を「for(i=9; i>=0; i=i-1)」に置き換えたとき、元の表示結果と同じになるように「printf("%d番目の繰返し\n",i+1);」を書き換えなさい。
プログラム例5.3.1
#include <stdio.h>

int main(void)
{
int i;
for(i=0; i<10; i=i+1)
{
printf("繰返し\n");
}
return 0;
}

設問1-2
nを与えてn!を計算するプログラムを作成し、そのプログラムに変数nの値をキーボードから入力するように機能を追加しなさい。

設問1-3
上記設問1-1をwhile文を使って書きなさい。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2011年10月22日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
            繰り返し処理for文、繰り返し処理for文による総和の計算は習いました。
宜しくお願いします。
684デフォルトの名無しさん:2011/10/17(月) 01:17:09.46
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  1039,976,867,768,654,546,435,321,221,134の降順に並んだ10個の実数データがある。
  新たに入力された1つのデータを降順ルールを崩さずに挿入し、結果を表示しなさい。
[3] 環境
 [3.1] OS: Windows vista
 [3.3] 言語: c++
[4] 期限: 2011年10月19日まで
[5] その他の制限: リスト構造を利用すること

よろしくお願いします。
685デフォルトの名無しさん:2011/10/17(月) 01:48:04.88
>>682
void concat(struct node *p, struct node *q)
{
if( ! p || ! q ) return;
while( p-next ) p = p->next;
p->next = q;
}
686デフォルトの名無しさん:2011/10/17(月) 04:02:09.69
687デフォルトの名無しさん:2011/10/17(月) 10:07:59.32
688デフォルトの名無しさん:2011/10/17(月) 10:42:13.81
>>685
ありがとうございます
689デフォルトの名無しさん:2011/10/17(月) 14:27:29.95
>>687
ありがとうございました
690デフォルトの名無しさん:2011/10/17(月) 15:41:02.94
691デフォルトの名無しさん:2011/10/17(月) 16:42:40.85
>>686
ありがとうございました
692デフォルトの名無しさん:2011/10/17(月) 18:32:57.09
【質問テンプレ】
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):http://www1.axfc.net/uploader/Sc/so/284457
[3] 環境
 [3.1] OS: ウィンドウズ7
 [3.2] コンパイラ名とバージョン: VC 10
 [3.3] 言語: C++
[4] 期限: 今日中

中にはいっているのが自分でつくったCPPファイルです。構造体がうまく処理できず・・・。
よろしくお願いします。

693デフォルトの名無しさん:2011/10/17(月) 20:13:00.44
694デフォルトの名無しさん:2011/10/17(月) 20:49:09.29
>>693
ありがとうございます!!
695デフォルトの名無しさん:2011/10/17(月) 23:24:20.77
[1] C言語課題(明日まで)
[2] キーボードから5個の整数を読み込みそれを小さい順に(5個)表示するプログラムを作りなさい。
[3] Windows 7上にVisual Studio 2008というのが入っています。C言語でプログラミングしなければ
なりません。
[4]すみませんが明日中までです。
[5]
(1)main関数の下に定義できる変数は文字配列(長さ256)とひとつの整数型の整数だけだそうです
(2)main関数以外の関数で呼び出せるのはstdio.hの定義の関数とstdlib.hの関数だけだそうです。
(fgets関数とatoi関数を使えば良いという情報があります。)
(3)マクロ関数は使ってはいけないそうです。(てか習ってません)再帰呼び出しも習ってませんし
よく知りません。

以上よろしくお願いします。
696695:2011/10/17(月) 23:31:42.73
抜けてました
[5]
(4)グローバル変数は使ってはいけないそうです。
(5)入力されるべき整数の範囲は-5から5まででそれ以外は入力されても
警告を出して入力されてないものとみなす仕様だそうです
697デフォルトの名無しさん:2011/10/18(火) 00:02:10.17
#include <stdio.h>

int main(void)
{
  system("read val; echo $val > tmp");
  system("read val; echo $val >> tmp");
  system("read val; echo $val >> tmp");
  system("read val; echo $val >> tmp");
  system("read val; echo $val >> tmp");
  system("sort tmp");
  return 0;
}
698デフォルトの名無しさん:2011/10/18(火) 00:02:35.83
>>692
なんだ、もう読めないのか。
699デフォルトの名無しさん:2011/10/18(火) 00:03:49.19
ワロタ
変数定義の制約が面倒だとか考えてる間にそれかw
700695:2011/10/18(火) 00:06:23.97
>>697
早速のご回答ありがとうございます。
実行してみましたが、次のようなメッセージがでてしまいます

'read'は、内部コマンドまたは外部コマンド
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
701デフォルトの名無しさん:2011/10/18(火) 00:15:02.67
>>700
関数と引数の意味くらい読み取ろうぜ
702デフォルトの名無しさん:2011/10/18(火) 00:21:07.18
>>700
Interix上で実行しているか?
703デフォルトの名無しさん:2011/10/18(火) 00:32:52.95
704デフォルトの名無しさん:2011/10/18(火) 00:33:33.91
#include <stdio.h>

int main(void)
{
  FILE* fp = fopen("tmp.bat", "w");
  fputs("@echo off\n", fp);
  fputs("set /p val=\n", fp);
  fputs("echo %val% > tmp\n", fp);
  fputs("set /p val=\n", fp);
  fputs("echo %val% >> tmp\n", fp);
  fputs("set /p val=\n", fp);
  fputs("echo %val% >> tmp\n", fp);
  fputs("set /p val=\n", fp);
  fputs("echo %val% >> tmp\n", fp);
  fputs("set /p val=\n", fp);
  fputs("echo %val% >> tmp\n", fp);
  fclose(fp);
  system("tmp.bat");
  system("sort tmp");
  return 0;
}
705デフォルトの名無しさん:2011/10/18(火) 00:34:27.78
>>703
X if(i<-1 || i>5) {
O if(i<-5 || i>5) {
706デフォルトの名無しさん:2011/10/18(火) 00:39:50.82
>>695
#include <stdio.h>

#define i buf[100]
#define j buf[101]
#define inputbuf (buf+128)
#define data ((int*)buf)

int main(void){
char buf[256];

for(i=0;i<5;i++){
while(1){
if(fgets(inputbuf, 128, stdin)==NULL) exit(1);
if(sscanf(inputbuf, "%d", &data[i])==1 && -5<=data[i] && data[i]<=5){
break;
}
printf("警告 : Invalid input. %s\n", inputbuf);
}
}
for(i=0;i<5;i++){
for(j=1;j<5-i;j++){
if(data[j-1]>data[j]){
data[j-1]^=data[j], data[j]^=data[j-1], data[j-1]^=data[j];
}
}
}
for(i=0;i<5;i++) printf("%d\n", data[i]);
return 0;
}
707695:2011/10/18(火) 00:39:52.82
>>703
ありがとうございます。
良さげですね。これでやってみます。
もしよければポイントだけでもよろしいですから
解説して頂けると幸甚です。
>>704
fopenとかまだ習ってないかも知れません
(結構サボってますのでw)
708デフォルトの名無しさん:2011/10/18(火) 01:12:10.71
#include <stdio.h>

int main(void)
{
system("@echo off & echo @echo off > tmp.bat");
system("echo set /p val= >> tmp.bat & echo echo ^%val^% ^> tmp >> tmp.bat");
system("echo set /p val= >> tmp.bat & echo echo ^%val^% ^>^> tmp >> tmp.bat");
system("echo set /p val= >> tmp.bat & echo echo ^%val^% ^>^> tmp >> tmp.bat");
system("echo set /p val= >> tmp.bat & echo echo ^%val^% ^>^> tmp >> tmp.bat");
system("echo set /p val= >> tmp.bat & echo echo ^%val^% ^>^> tmp >> tmp.bat");
system("tmp.bat & sort tmp & del tmp tmp.bat");
return 0;
}

とせっかくDOS向けにしたのに負の数に対応できてないだと・・・
709695:2011/10/18(火) 01:58:57.78
>>706
ありがとうございます。
ただ先頭に#が付くマクロ(と言うんですか?)は
使えないと思いますので、参考にさせて頂きます。
710デフォルトの名無しさん:2011/10/18(火) 06:25:54.20
コマンドプロンプトとbashの勉強するか
711デフォルトの名無しさん:2011/10/18(火) 09:35:04.75
>>690
有難う御座います
712デフォルトの名無しさん:2011/10/18(火) 13:24:36.45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):全方位カメラの映像をPC間から取得する。
 クライアント側をヒントにサーバー側を作る。
[3] 環境
 [3.1] OS:windows 7
[3.2] コンパイラ名とバージョン:microsoft Visual 2005
 [3.3] 言語: C
[4] 期限:10月24日
[5] 必要なもの、TCP/IPで通信
映像はパノマラまた、ストリームのどちらかです。
サンプルのクライアントは単体でカメラが起動できる。
713712:2011/10/18(火) 15:54:23.44
通信部分はできましたが、肝心の全方位カメラのプログラムがわかりません
714712:2011/10/18(火) 15:57:38.57
通信部分はできましたが、肝心の全方位カメラのプログラムがわかりません
715デフォルトの名無しさん:2011/10/18(火) 16:00:53.19
2回言ったから失格
716712:2011/10/18(火) 16:19:16.03
すみません
717665:2011/10/18(火) 17:17:45.86
>>672
数日たったけどすいません・・・・
数字を出力するファイルmath.cは
#include<stdio.h>
int main(void)
{printf("%d\n",1);}です。
718665:2011/10/18(火) 17:19:30.18
ただし|などのコマンドを使わず
このmath.cかmath.exeをコマンドラインの引数として
別のファイルにリダイレクトするプログラムを作りたいのです。
>bannno.exe math.exe math.txt
>cat math.txt
>1
が理想です。
719665:2011/10/18(火) 17:26:19.95
つまりそんなbannno.cを作りたいのです。
720665:2011/10/18(火) 17:35:04.73
もっとも単純でわかりやすいプログラムでお願いします・・・
721デフォルトの名無しさん:2011/10/18(火) 18:43:24.62
722デフォルトの名無しさん:2011/10/19(水) 00:11:29.91
#include <stdio.h>

>>665
int main(int argc, char *argv[]){
char buf[256];
if(argc != 3)return 1;
sprintf(buf,"./%s > %s",argv[1],argv[2]);
system(buf);
return 0;
}

セキュリティ?気にすんな
723デフォルトの名無しさん:2011/10/19(水) 00:12:37.71
安価の位置がおかしかったw
724デフォルトの名無しさん:2011/10/19(水) 08:44:00.71
[1] 授業単元:プログラミング演習 2
[2] 問題文(含コード&リンク)
標準入力に現れた行数と文字数をカウントするCプログラムline_count.cを書きなさい。
実行例は例えば次のようになります
$ ./line_count < testfile. txt
I am a student.
I have a programming C class.

lines: 2 letters: 46 ← 欲しいのはこの2つの数字、つまり行数と文字数です.
$

[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:10月19日(出来れば早めにお願いします)
よろしくお願いします。
725デフォルトの名無しさん:2011/10/19(水) 09:42:14.96
/*>>724*/
#include <stdio.h>

int main(void)
{
  int lines = 0, letters = 0;
  char c;
  
  while ((c = fgetc(stdin)) != EOF)
  {
    if (c == '\n')
      lines++;

    letters++;
    putchar(c);
  }
  
  printf("\n");
  printf("lines: %d letters: %d\n", lines, letters);
  
  return 0;
}
726デフォルトの名無しさん:2011/10/19(水) 19:26:12.81
>>725
このプログラムだと実行できません 勝手だとは思いますが別のをお願いしますか?
727デフォルトの名無しさん:2011/10/19(水) 19:37:27.53
>>726
お願いするかどうかはあんたが決めることだw
728デフォルトの名無しさん:2011/10/19(水) 19:48:22.20
726です 日本語おかしくなってましたw あらためて別のプログラムお願いします
729デフォルトの名無しさん:2011/10/19(水) 19:52:16.22
>このプログラムだと実行できません

意味不明なんだが
730デフォルトの名無しさん:2011/10/19(水) 19:57:49.69
726 正確には実行し
例 I have a studentと入力すると
  I have a studentと同じ文字が出てしまいます
731デフォルトの名無しさん:2011/10/19(水) 19:59:46.97
>>725
実行例がマズかったね
732デフォルトの名無しさん:2011/10/19(水) 20:02:49.49
リダイレクトを受け取るプログラムってどうやるの
733デフォルトの名無しさん:2011/10/19(水) 20:04:51.99
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
2 行2 列の行列a(int 型の2 次元配列とする)の行
列式を計算する関数int determinant(int a[2][2])
を作成せよ.以下の実行例のように,2 行2 列行列の各
要素を入力すると,determinant 関数を用いて行列式
の値を表示し,行列式が0 でない場合には逆行列(要素
は実数)を表示するプログラムを作成せよ.
[3] 環境
[3.1] OS:w
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/20 18:00
[5] その他の制限:授業で習ったことはURLに乗せてあります。配列、ポインタは学習しています。よろしくお願いします。
734デフォルトの名無しさん:2011/10/19(水) 20:06:12.01
>>730
入力データをtestfile. txtという名前のファイルに保存し、
以下のようにリダイレクトしてみたら?

$ ./line_count < testfile. txt
735デフォルトの名無しさん:2011/10/19(水) 20:08:03.87
>>731
詳しく教えてもらえますか?
736デフォルトの名無しさん:2011/10/19(水) 20:22:38.30

ファイル1(テキスト)に
AAA,BBB,CC,DDd,FF
OOO,TTT,FF,AAA,VV
DDD,EEE,GG,SSS,AA
が入っていて、真ん中のCC、FF、GGの部分だけを配列に入れ、
もうひとつのファイルに配列に入れた部分を
保存したいのですが、どうしたらいいですか。
737デフォルトの名無しさん:2011/10/19(水) 20:22:57.07

ファイル1(テキスト)に
AAA,BBB,CC,DDd,FF
OOO,TTT,FF,AAA,VV
DDD,EEE,GG,SSS,AA
が入っていて、真ん中のCC、FF、GGの部分だけを配列に入れ、
もうひとつのファイルに配列に入れた部分を
保存したいのですが、どうしたらいいですか。
738デフォルトの名無しさん:2011/10/19(水) 20:25:42.47
2回言ったので失格
739デフォルトの名無しさん:2011/10/19(水) 20:27:16.11
awk使えばいいんじゃね?
740デフォルトの名無しさん:2011/10/19(水) 20:29:18.02
>>737
#include <stdio.h>

int main(void)
{
  system("cut -d, -f3 text.txt > out.txt");
  return 0;
}
741デフォルトの名無しさん:2011/10/19(水) 20:47:26.03
>>740
ありがとうございます。
無事できました。
742725:2011/10/19(水) 20:48:43.28
>>724の実行例で標準入力にテキストファイル渡してたんでそういうコードにした。
コンソールからの入力なら下記のコードで、コンソール上から
I am a student.
I have a programming C class.
Ctrl-D <- EOF入力
でいけると思う。

#include <stdio.h>

int main(void)
{
  int lines = 0, letters = 0;
  char c;
  
  while ((c = fgetc(stdin)) != EOF)
  {
    if (c == '\n')
      lines++;

    letters++;
    /*putchar(c);*/
  }
  
/*  printf("\n\n");*/
  printf("\n");
  printf("lines: %d letters: %d\n", lines/* + 1*/, letters);
  
  return 0;
}

743725:2011/10/19(水) 20:49:45.30
アンカ忘れ
>>726
>>742
744デフォルトの名無しさん:2011/10/19(水) 20:59:14.04
>>742
実行してみた所
./cpy < ./line_count.c

lines: 22 letters: 313
となってしまいます
その後 
./cpy < ./line_count.c > ./testfile.txt
./cpy < ./testfile.txtをやってみたら

lines: 2 letters: 24
となってしまいます 原因が解りますでしょうか?
745デフォルトの名無しさん:2011/10/19(水) 21:03:42.25
>>744
空行があるんじゃね?
746デフォルトの名無しさん:2011/10/19(水) 21:11:11.67
>>733
#include <stdio.h>

int determinant(int a[2][2]) { return a[0][0] * a[1][1] - a[0][1] * a[1][0]; }

int main(void) {
int a[2][2], i, j, d;

for(i = 0; i < 2; i++) for(j = 0; j < 2; j++) scanf("%d", a[i] + j);

printf("行列式:%d\n", d = determinant(a));

if(d) {
printf("%f %f\n", (double)a[1][1] / d, -(double)a[0][1] / d);
printf("%f %f\n", -(double)a[1][0] / d, (double)a[0][0] / d);
}

return 0;
}
747デフォルトの名無しさん:2011/10/20(木) 03:11:09.99


[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
双方向循環リストに関する問題
詳細はリンクに貼ります。
http://codepad.org/b1UQfaJN
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/22 18:00
[5] その他の制限:授業で習ったことは[2]のURLに乗せてあります。よろしくお願いします。

748デフォルトの名無しさん:2011/10/20(木) 09:44:36.46
>>747
解こうと思ったが問題の乗っけてるURLの内容を見ると
意味がわからん
749デフォルトの名無しさん:2011/10/20(木) 10:04:46.57
[1] 授業単元:楽しいプログラミング
[2] 問題文(含コード&リンク):
Sunday, Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday という曜日を表す列挙体
enum Days を定義せよ.以下の実行例のように,
曜日を入力すると,enum Days の列挙定数を利用して
週末,平日,それ以外の場合にそれぞれメッセージを
表示するプログラムを作成せよ.
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク)


[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/21 18:00
[5] その他の制限:


[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/22 18:00
[5] その他の制限:
750デフォルトの名無しさん:2011/10/20(木) 10:06:04.43
>>748
実行例
曜日を入力して下さい
(0:日1:月2:火3:水4:木5:金6:土):0
やった!週末だ

実行例2
曜日を入力して下さい
(0:日1:月2:火3:水4:木5:金6:土):5
今日も講義頑張ろう!
751デフォルトの名無しさん:2011/10/20(木) 10:49:56.65
>>747
リンク先には、「以下の関数を作れ。」ってあるけど、(option)ってあったり、
読んでも解かないといけない問題が分からない。
Josephusの問題(継子立ての問題)を解いてくれってことかな?
752デフォルトの名無しさん:2011/10/20(木) 11:34:07.96
>>748,>>751
レスありがとうございます。
オプションは無視していいです。すみませんでした。
・双方向循環リストの長さ(ダミーノードを除く)を求める関数
・双方向循環リストへの「一番先頭への挿入」と「削除」(削除ノードを直接指定)を出きる関数
・それらの関数を用いてのjosephusの問題を解くプログラムを作れという問題です。

よろしければよろしくお願いします。
753デフォルトの名無しさん:2011/10/20(木) 11:42:16.30
>>747,752
>・それらの関数を用いてのjosephusの問題を解くプログラムを作れという問題です。

先に書いてしまってたんで、参考までに。
#include <stdio.h>

int main(){
int n,m,mm,a[100],i;
printf("n = ");
scanf("%d",&n);
printf("m = ");
scanf("%d",&m);

for(i=0; i<n; i++)a[i]=(i+1)%n;
i=0;

while(n) {
mm=m-1;
while(--mm)
i=a[i];
printf("%d ",a[i]+1);
a[i]=a[a[i]];
i=a[i];
n--;
}
return 0;
}
754デフォルトの名無しさん:2011/10/20(木) 11:45:25.50
[1] 授業単元: C言語プログラム
[2] 問題文(含コード&リンク):
初項 a,交差 d及びn項目のnを引数で与え
等差数列のn項目の値を戻り値で得る関数を作成する.引数,戻り値は整数型でよい.
an = a + (n-1) * d
上の関数を用いて,初項,交差及びn項目をキーボード入力で与え,結果を出力するプログラムを作成せよ.
実行例↓
$./kadai1

a? 2
d? 3
n? 10
Result: 29

[3] 環境
 [3.1] OS:windows 7
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:2011年10月21日23:59まで
[5] その他の制限:関数の単元での課題です。よろしくお願いします。
755デフォルトの名無しさん:2011/10/20(木) 12:02:27.16
>>692の続きなのですが・・・つくっていただいたプログラムをいじって検索したい時間と表示したい表示数を入力すると、指定した時間から一番近い時間の上映時間を表示数ぶんだけ表示するものをつくりたいのですがソートの仕方がわかりません・・・
構造体を跨いでのソートはどうすればいいのでしょうか?
ファイルの中につくったcppファイルを入れてます。

よろしくお願いします。
http://www1.axfc.net/uploader/Sc/so/285180
756デフォルトの名無しさん:2011/10/20(木) 12:42:23.06
そーっとやればいいんじゃ
757デフォルトの名無しさん:2011/10/20(木) 13:01:42.83
>>754
a+d*(n-1)
758デフォルトの名無しさん:2011/10/20(木) 14:03:08.93
int An(int a,int b,int n)
{
return a + (n-1) * d ;
}
759デフォルトの名無しさん:2011/10/20(木) 15:01:42.50
>>754
#include <stdio.h>

int main(void)
{
  system("echo -n a? ; read a; \
        echo -n d? ; read d; \
        echo -n n? ; read n; \
        result=`expr $a + \\( $n - 1 \\) \\* $d`; \
        echo -n Result: $result");
  return 1;
}
760デフォルトの名無しさん:2011/10/20(木) 16:19:47.78
>>752
以下のページを参考にしてみたら?
http://www.geocities.jp/ky_webid/algorithm/012.html
とりあえず一番先頭に挿入関数だけ作った
//先頭にノードを追加
void SetDataToFirst(LIST *adnode)
{
LIST *temp;
temp=head.next;
head.next=adnode;
adnode->next = temp;
adnode->prev = &head;
}
761デフォルトの名無しさん:2011/10/20(木) 23:36:06.95
[1] 授業単元:プログラミング演習
[2] 問題文:
円1:x^2+y^2=r^2と円2:(x-r)^2+(y-r)^2=r^2が重なっている部分の面積を求めるプログラムを作成しなさい。
ただしπ=3,14159とする。              
[3] 環境
 [3.1] OS: Linux
[3.2]コンパイラ名とバージョン:cc
 [3.3] 言語: C言語でお願いします。
[4] 期限: 2011年10月23日までです。
[5] その他の制限:制限はないです。よろしくお願いします。
762186:2011/10/20(木) 23:41:30.73
>>761
(π/2-1)*r*r
763デフォルトの名無しさん:2011/10/20(木) 23:42:55.93
>>761
#include <stdio.h>

int main(void){
double r=1.0;

printf("%f\n", 0.570795*r*r);

return 0;
}
764デフォルトの名無しさん:2011/10/21(金) 15:35:31.34
[1] 授業単元:C言語システムプログラミング
[2] 問題文:配列と配列の大きさ(要素の数)を引数で与えて,その総和を求める戻り値で得る関数を作成する.
int sum_array(int v[], int n);

/* 関数の中で使うfor文 */
for(i = 0; i < n; i++) {

}
(これらを使用する)

そして,関数に以下の配列を与えて,総和を求め表示するプログラムを作成せよ.

int num[20] = {44, 29, 84, 37, 29,
28, 2, 93, 6, 42,
75, 69, 31, 99, 55,
38, 81, 73, 8, 93};
実行例↓
$ ./homework

result: 1016
[3] 環境
 [3.1] OS:windows7
 [3.2]コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:2011年10月22日23:59まで
[5] その他の制限:問題文で与えられた物を使って解いていただきたいです。
解答よろしくお願いします。
765デフォルトの名無しさん:2011/10/21(金) 15:57:44.22
[1] 計算機実習応用
[2] 文字列を適当に入力してa~z、A~Zの各文字の出現回数を出力するプログラムをつくれ。
  大文字小文字を判別できるようにすること。出現回数が0の場合は出力しない。
[3]
 [3.1]Windows7
 [3.2]
 [3.3]どちらでも可
[4] 本日10時まで
[5] ほとんどできてるんですけど最後の細かいところがわかりません。
  すでにできているプログラムを書き込むので改善点を教えて欲しいです。
  ・出現回数が大文字小文字セットででてきてしまう(aを3回のみだと「a=3,A=0」と出力されてしまう)
  ・大文字だけ入力すると出現回数が出力されない
766デフォルトの名無しさん:2011/10/21(金) 15:58:37.58
>>765
#include<stdio.h>


int main(void){

int c,i;
int cnt[52]={0};


while((c = getchar()) != '\n'){

if(('a'<=c&&c<='z')||('A'<=c&&c<='Z'))
{
for(i=0;i<26;i++){
if(c=='a'+i) cnt[i]++;
if(c=='A'+i) cnt[i+26]++;
}
}
}
for(i=0;i<26;i++){
if(cnt[i]>0)printf("%c=%d\n",'a'+i,cnt[i]);
if(cnt[i]>0)printf("%c=%d\n",'A'+i,cnt[i+26]);
}
return 0;
}
767デフォルトの名無しさん:2011/10/21(金) 16:00:17.74
>>766が途中までのプログラムでここから改善点を教えてほしいです
わかりにくくてすいません
768デフォルトの名無しさん:2011/10/21(金) 16:10:53.01
>>766
if(islower(c)) cnt[c-'a']++;
if(isupper(c)) cnt[c-'A']++;
769デフォルトの名無しさん:2011/10/21(金) 16:16:17.07
>>768
もしかしてiいらなかったりする?
770デフォルトの名無しさん:2011/10/21(金) 16:35:37.17
>>768
は +26 が抜けてる
771デフォルトの名無しさん:2011/10/21(金) 19:23:06.41
>>765
#include<stdio.h>

int main(void)
{
int c,i,cnt[256]= {0};
while((c = getchar()) != '¥n')
cnt[c]++;
for(i=0; i<256; i++)
if(cnt[i]&&((i>='a'&&i<='z')||(i>='A'&&i<='Z')))
printf("%c=%d¥n",i,cnt[i]);
return 0;
}
772デフォルトの名無しさん:2011/10/21(金) 19:50:40.46
773デフォルトの名無しさん:2011/10/21(金) 20:16:11.88
>>764
int r=0;
while(n--)r+=*(v++);
return r;
でも良いと思うんだが、引数値を変えてはいけない、とかのガイドでもあるのかな?
774764:2011/10/21(金) 21:01:32.77
>>772
ありがとうございます

>>773
特に制限はないのですが出来るだけ資料にUPされているものを
使っていただきたかったので指定させていただきました
775デフォルトの名無しさん:2011/10/21(金) 22:47:49.27
1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):以下の実行例のように,標準入力からgetchar 関数
を使って文字を次々と読み込み,Ctrl-d などで入力が
終了するまでに入力された行数(改行の数)を表示する
プログラムを作成せよ

実行例
Hello!
I’m Taro KOUKA.
I was born in Tokyo in 1991.
<--(Ctrl-d で入力終了)
行数: 3

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年10月22日
[5] その他の制限: 特にないです。
776デフォルトの名無しさん:2011/10/21(金) 22:56:09.60
>>775
#include <stdio.h>

int main(void)
{
int count = 0;
int c;
while ((c = getchar()) != EOF) if (c == '\n') ++count;
printf("行数: %d\n", count);
return 0;
}
777デフォルトの名無しさん:2011/10/21(金) 23:57:45.12
[1] 授業単元:C言語
[2] 問題文:とある架空の携帯電話会社では、
基本料金の1,000円に、一ヶ月の
通話の合計時間によって通話料が
加算される(1分あたり10円)。
また、1ヶ月の料金は基本料金込みで
10,000円以上は通話料が無料になるものとする。
このとき、1ヶ月の合計通話時間を入力すると
請求される料金を表示するプログラムを作成せよ。
=== プログラム ===
#include <stdio.h>
int main()
{
[3] 環境
 [3.1] OS: windows
 [3.3] 言語:visual C++
[4] 期限:月曜日

よろしくお願いします
778デフォルトの名無しさん:2011/10/22(土) 00:05:44.95
>>777
main(n){scanf("%d",&n);printf("%d\n",n>900?10000:n*10+1000);}
779デフォルトの名無しさん:2011/10/22(土) 00:11:42.21
>>778
main(n){scanf("%d",&n);printf("%d0\n",n>900?1000:n+100);}
780デフォルトの名無しさん:2011/10/22(土) 00:12:21.29
>>779
おー、いいね
781デフォルトの名無しさん:2011/10/22(土) 00:22:58.03
ゴルファーの発想できていいなあ
782デフォルトの名無しさん:2011/10/22(土) 06:18:31.02
>>754
これは積分で解けということかな?
783781:2011/10/22(土) 06:19:55.88
>>761
の間違いでした。
784783:2011/10/22(土) 06:22:10.09
また間違えたので書き直し。

>>761
これは算数的に解いておくとあまりにやさしすぎるようだけれど、
積分で解くプログラムを書けということであろうか。
785デフォルトの名無しさん:2011/10/22(土) 08:07:26.98
再度すみません。
よろしければ>>747>>752をお願いします
786デフォルトの名無しさん:2011/10/22(土) 08:09:22.00
>>784
それだと円周率いらないのでは? つまり違う。
787デフォルトの名無しさん:2011/10/22(土) 11:19:27.26
>>784
残念ながらこのスレで宿題を丸投げにするのは中学レベルの数学ができてないやつが多いんだよ
だからこそ丸投げにするともいうが
788デフォルトの名無しさん:2011/10/22(土) 11:21:23.85
回答側にも出来てないやつが多いけどなw
789デフォルトの名無しさん:2011/10/22(土) 12:25:43.27
売り言葉に脊髄反射で買い言葉をレスするのもあるって事なんだね
790デフォルトの名無しさん:2011/10/22(土) 12:50:18.90
[1] C言語演習
[2] http://codepad.org/u4T8ly42 のプログラムを改良して、
1を入力すると右から左へ、2を入力すると左から右へスクロールするように
しなさい。
 [3.1] Windows7
 [3.3] C言語
[4] 10/24 18時まで
[5] 特になし
わかる方どうかよろしくお願いします。
791デフォルトの名無しさん:2011/10/22(土) 16:25:21.00
>>790
ttp://codepad.org/rfYMPVKT

conio.h なんていう邪悪なモンを使わないとスクロール途中でスクロール方向を変える事はできない
もし、題意が表示前に入力するという意味ならこのコードは無視してくれ
792デフォルトの名無しさん:2011/10/22(土) 16:31:52.55
>>790
最初に1回だけスクロール方向を決める、とエスパーしてみた。
http://ideone.com/TW5TB
793デフォルトの名無しさん:2011/10/22(土) 23:49:45.03
>>792
ありがとうございます。助かりました。
794 ◆QZaw55cn4c :2011/10/23(日) 01:23:03.31
795デフォルトの名無しさん:2011/10/23(日) 22:19:57.27
リアルタイムにキー入力を感知する_kbhitってC標準じゃないってことなの?
796デフォルトの名無しさん:2011/10/24(月) 01:59:14.98
そういうこと
797デフォルトの名無しさん:2011/10/24(月) 08:10:29.09
linuxでkbhitみたいなことするにはどうするんだろう?
selectとかになるのか?
798 ◆QZaw55cn4c :2011/10/24(月) 18:26:50.67
799デフォルトの名無しさん:2011/10/24(月) 21:44:47.30
テキストファイルの中にある複数の英字の文字列をソートして書きこむプログラム教えてください

MOJI
EIGO
NIPPON

 ↓

EIGO
MOJI
NIPPON
800 ◆QZaw55cn4c :2011/10/24(月) 22:08:43.42
801デフォルトの名無しさん:2011/10/24(月) 22:13:10.80
>>800
相変わらず気持ち悪いプログラムだ
802 ◆QZaw55cn4c :2011/10/24(月) 22:15:35.28
>>801
みていただいてありがとうございます。どんなところが「気持ち悪い」か、ちょこっとでいいから教えてください。
803デフォルトの名無しさん:2011/10/24(月) 22:15:36.40
[1] 配列操作
[2] 問題文(含コード&リンク):
入力した文字と個数をもとに文字列データを生成する。(^Zが入力されるまで)
以下の実行結果をもとにプログラミングしなさい。
char m[30];

実行結果
文字、個数==>A,3
文字、個数==>b,3
文字、個数==>c,1
文字、個数==>E,2
文字、個数==>^Z
文字列:AAAbbbcEE

[3] 環境
 [3.1] Windows7
 [3.2] borland
 [3.3] C言語
[4] 期限: 2011年10月26日13:00まで
[5]while文とforを使うこと
804デフォルトの名無しさん:2011/10/24(月) 22:24:09.25
>799
int main(){
system("sort < input.txt > output.txt");
return 0;
}
805デフォルトの名無しさん:2011/10/24(月) 22:24:58.68
>>797
別スレッドで入力待ちするって手は有るかも知れない
でも echo back 無しの _getch() もC準拠じゃないんだな、こっちは curses でも使うか?
806デフォルトの名無しさん:2011/10/24(月) 23:19:30.72
807デフォルトの名無しさん:2011/10/24(月) 23:21:10.39
>>804
それだと同じファイルから同じファイルへの書き換えができないんですけどどうすればいいですか?
808デフォルトの名無しさん:2011/10/25(火) 00:16:01.19
809デフォルトの名無しさん:2011/10/25(火) 01:15:01.68
[1] 授業単元:C言語 繰り返し
[2] 問題文(含コード&リンク):
1.キーボードから正の整数を2つ(x  y)入力し、縦x個、横y個の文字'*'
からなる長方形を表示するプログラムを多重ループを用いて作成せよ。

2.キーボードから入力した10進整数(0以上2^31 -1以下)を二進数にせよ
for文を使うこと。例えば2で割った余りと商の値によって下の桁のビットから求める等

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日12:00
[5] その他の制限: (どこまで習っているか、for while。(配列、関数、ポインタなどまだです)
宜しくお願いします
810デフォルトの名無しさん:2011/10/25(火) 01:32:03.75
>>809
#include <stdio.h>
int main(){
int x,y,t;
scanf("%d %d",&x,&y);
while(x--){
t=y;
while(t--)putchar('*');
putchar('\n');
}
return 0;
}

#include<stdio.h>
int main(){
int i,x;
scanf("%d",&x);
for(i=1;i<=x;i*=2);
for(i/=2;i>0;i/=2)putchar( (x&i)?'1':'0' );
putchar('\n');
return 0;
}
811デフォルトの名無しさん:2011/10/25(火) 01:38:49.71
>>809
>[5] その他の制限: (どこまで習っているか、for while。(配列、関数、ポインタなどまだです)
トリッキーなプログラムを求めてるように見えるのな。
実は課題じゃないんじゃ?
812デフォルトの名無しさん:2011/10/25(火) 01:43:01.14
>>806
(8) : error C2059: 構文エラー : '}'
(11) : error C2065: 'p' : 定義されていない識別子です。
(12) : error C2065: 'p' : 定義されていない識別子です。
(12) : warning C4047: '関数' : 間接参照のレベルが 'const char *' と 'int' で異なっています。
(12) : warning C4024: 'sscanf' : の型が 1 の仮引数および実引数と異なります。
(15) : error C2065: 'p' : 定義されていない識別子です。
(15) : error C2100: 間接指定演算子 (*) の使い方が正しくありません。
(15) : error C2065: 'p' : 定義されていない識別子です。
(15) : error C2100: 間接指定演算子 (*) の使い方が正しくありません。
(15) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
(16) : error C2065: 'p' : 定義されていない識別子です。
(18) : error C2065: 'p' : 定義されていない識別子です。
(18) : error C2100: 間接指定演算子 (*) の使い方が正しくありません。
(18) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
813 ◆QZaw55cn4c :2011/10/25(火) 04:02:25.37
>>808
みあたりませんけど?
814デフォルトの名無しさん:2011/10/25(火) 08:13:31.97
>>808
頭悪いページだな。

>コマンドプロンプト リダイレクト 画面にも表示
と言う検索に対して、コメントが、

>リダイレクトの意味がわかっていないからこういうおバカなキーワードになる。
815デフォルトの名無しさん:2011/10/25(火) 10:22:21.24
>>807
int main( void )
{
system( "sort < infile > outfile" );
system( "rm infile" );
system( "mv outfile infile" );
return 0;
}
816デフォルトの名無しさん:2011/10/25(火) 17:36:28.84
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
1~10の数が書かれたカードが1枚ずつ、全部で10枚あります。
今、これらのカードを並べ、隣り合った数の差を左から次々に加えて
いくことにします。例えば、
2,5,6,8,1,4,3,9,7,10
と並べたならば、
3+1+2+7+3+1+6+2+3=28
ということになります。
この計算結果が最も大きくなるようにカードを並べると、
結果はいくらになるでしょうか。
(注)元の問題は算数の問題なので論理で答えを出すものだが、
ここではプログラムを書いてその最大値を求めて欲しい。

[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年10月31日
[5] その他の制限:特になし


よろしくお願いします
817デフォルトの名無しさん:2011/10/25(火) 18:08:56.12
>>816
#include <stdio.h>
#include <stdlib.h>

void solve(int card[], int card_num, int is_used[], int *maximum){
int i, sum=0;

if(card_num>=10){
for(i=1;i<10;i++) sum+=abs(card[i]-card[i-1]);
if(*maximum<sum){
*maximum=sum;
// printf("sum=%d ", sum);
// for(i=0;i<10;i++) printf(" %d", card[i]);
// printf("\n");
}
return;
}
for(i=0;i<10;i++){
if(is_used[i]) continue;
is_used[i]=1;
card[card_num]=i+1;
solve(card, card_num+1, is_used, maximum);
is_used[i]=0;
}
}
int main(void){
int card[10], is_used[10]={0}, maximum=0;

solve(card, 0, is_used, &maximum);
printf("maximum=%d\n", maximum);
return 0;
}
818デフォルトの名無しさん:2011/10/25(火) 18:41:57.49
「僕とスターの99日」映像キャプチャー
http://thumb.mtstarnews.com/06/2011/10/2011102513501644536_1.jpg

キム・テヒ主演日本ドラマで「竹島」と「日本海」と表記された件でスタッフの1人が解明に出た。

去る24日、ある国内韓流コミュニティであるネチズンが去る23日のフジテレビドラマ「僕とスターの99日」の
場面中に独島と東海が竹島と日本海と表記された地球儀を使う場面を公開した。これに対してネチズンらの間で
論議が続くとすぐに「僕とスターの99日」のスタッフ1人が自身のツイッターに「“僕とスターの99日”で地球儀に
竹島と日本海の表記が出たことは両国の問題にならないようにグラフィックで削除したが最終編集の過程で
グラフィックレイヤーがレンダリングされなかった」と伝えた。引き続き「以後の放送とDVDでは削除された
画面が出て行きます」として今後注意するという内容の文を残した。

これを見たネチズンは「それでも考えていたというからこれからは注意してくれたら良いだろう」
「今後ずっと見守っている」「問題が起きる前にあらかじめ解決したら良かっただろう」など多様な反応を見せた。

http://star.mt.co.kr/view/stview.php?no=2011102513501644536&type=1&outlink=1
http://kamome.2ch.net/test/read.cgi/news4plus/1319521904/

819デフォルトの名無しさん:2011/10/25(火) 19:06:29.52
>>817
数を並べ替えるアルゴリズム部分に感動した。
これって定石なのかしら?
820デフォルトの名無しさん:2011/10/25(火) 19:30:08.81
宿題スレでもよくみるし、初心者でも自分で思いつくレベル
821デフォルトの名無しさん:2011/10/25(火) 19:33:01.42
>>820
定石ではあるけど初心者は再帰呼出を嫌うだろJK
822デフォルトの名無しさん:2011/10/25(火) 19:35:14.18
823デフォルトの名無しさん:2011/10/25(火) 19:51:37.55
思いつかんかった(´・ω・`)
最初に思いついたのはstd::next_permutationだったYO
824デフォルトの名無しさん:2011/10/25(火) 20:05:19.11
>>816
#include <stdio.h>
#include <stdlib.h>

#define CARD_NUM 10

int main(void){
int card[CARD_NUM], sum=0, i;

for(i=0;i<CARD_NUM/2;i++)
{
card[i*2+1]=i+1;
card[i*2]=i+1+(CARD_NUM+1)/2;
}
if(CARD_NUM%2)
{
card[CARD_NUM-1]=CARD_NUM/2+1;
}

for(i=1;i<CARD_NUM;i++)
{
sum+=abs(card[i]-card[i-1]);
}
printf("%d\n", sum);
return 0;
}
825デフォルトの名無しさん:2011/10/25(火) 20:29:29.46
816のかきこみをしたものです。みなさんありがとう!!
826デフォルトの名無しさん:2011/10/25(火) 21:30:24.83
[1] 授業単元:クイックソート
[2] 問題文(含コード&リンク): http://ideone.com/duPFX
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 10月26日 09:00
よろしくお願いします
827デフォルトの名無しさん:2011/10/25(火) 21:31:13.38
[1] 授業単元:モンテカルロ
[2] 問題文(含コード&リンク):http://ideone.com/foLSr
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 10月26日 09:00
連投で恐縮ですがよろしくお願いします
828デフォルトの名無しさん:2011/10/25(火) 22:43:13.90
>>806
ありがとうございます
829デフォルトの名無しさん:2011/10/26(水) 05:13:34.17
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
ユーザーに入力させた半数英数字の文字列を、char型配列に入れ、一字ずつずらして表示させるプログラムの作成。
入力された順番と同じになったら表示終了とする。
例 abcd
bcda
cdab
  dabc
abcd

ポインタを使うと思います。それから、strlen(c)を使うようです。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 10月26日 15:00

簡単に説明もいただけると大変助かります。
よろしくお願いいたします。
830デフォルトの名無しさん:2011/10/26(水) 05:20:25.20
>>829
#include <stdio.h>
#include <string.h>

int main(void)
{
char str[256];
int i, j, l;

scanf("%s", str);

l = strlen(str);

for(i = 1; i <= l; i++) {
for(j = 0; j < l; j++) putchar(str[(i + j) % l]);
putchar('\n');
}

return 0;
}
831デフォルトの名無しさん:2011/10/26(水) 07:40:32.33
>>829

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

int main(void)
{
char str[256],*p=str;
int i, l;

printf("in = ");
scanf("%s", str);
i=l = strlen(str);
while(i--) {
*(p+l)=*p;
*(p+l+1)='¥0';
printf("%s¥n",++p);
}

return 0;
}
832デフォルトの名無しさん:2011/10/26(水) 12:54:45.75
>>831
ありがとうございます。

%sとはどんな働きをするのですか?
調べてみたのですが、よくわかりませんでした><
833デフォルトの名無しさん:2011/10/26(水) 13:12:50.05
>>832
文字列
834デフォルトの名無しさん:2011/10/26(水) 13:14:05.41
#include <stdio.h>

int main(void)
{
char str[256], *p, *q;

scanf("%s", str);

for(p = str; *p; p++) {
for(q = p + 1; *q; q++) putchar(*q);
for(q = str; q <= p; q++) putchar(*q);
putchar('\n');
if(*p == '\0') break;
}

return 0;
}
835デフォルトの名無しさん:2011/10/26(水) 13:44:08.42
>>833
文字を入力する際にはこちらを使うということですね、ありがとうございます。
>>830>>834はまだ勉強していないやつがあったので、>>831を使ってみようと思います。
様々な回答ありがとうございました。
836デフォルトの名無しさん:2011/10/26(水) 15:40:06.89
1] 授業単元:プログラム作成
[2] 問題文(含コード&リンク):以下の実行例のように,標準入力からgetchar 関数
を使って文字を次々と読み込み,アルファベットの小文
字は大文字に,大文字は小文字に変えて,それ以外の文
字はそのまま表示するプログラムを作成せよ
例hELLO!
I’m Taro KOUKA. <--(入力)
i’M tARO kouka.
I was born in Tokyo in 1991. <--(入力)
i WAS BORN IN tOKYO IN 1991.
<--(Ctrl-d で入力終了)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 10月27日9:00
837デフォルトの名無しさん:2011/10/26(水) 16:05:14.42
/*>>836*/
#include <stdio.h>
#include <ctype.h>

int main(void)
{
  char c;
  while ((c = getchar()) != EOF)
  {
    if (isalpha(c))
    {
      if (islower(c))
        c = toupper(c);
      else
        c = tolower(c);

    }
    
    putchar(c);
  }

  return 0;
}
838デフォルトの名無しさん:2011/10/26(水) 19:06:26.15
古いCDを整理してたらVisualAGEが出てきたので
インスコしてみたらクソ遅くてわろた 1.2になりかけの頃のやつ

Win7 64bit Core3 でEEのIndigo(日本語後入れ)使ってるけど
動作の遅さよりファイル関連の反映の遅さが気になる

EclipseをSSDにいれてるヒトの感想がききたい
839デフォルトの名無しさん:2011/10/26(水) 19:25:56.34
>>838
なんでこのスレからコピペしてんの?
Eclipse統合M31【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1295886572/
840デフォルトの名無しさん:2011/10/26(水) 20:13:49.00
>>829の質問をしたものです。
>>831の回答をもらったのですが、strlenがどんな働きをするのかと、
a=b = strlen(str);
while(a--) {
*(p+b)=*p;
*(p+b+1)='\0';
printf("%s\n",++p);
この部分が一体全体どうなっているかわかりません。教えてください。
pには文字が入っているはずなのに、どうして*(p+b+1)='\0'のように数字を足すことができるのでしょうか。
また、a=b=strlen(str)とaも文字が入っているはずなのに、a--と数字のように扱えるのはなぜですか?

初歩的な質問で申し訳ありませんが、お願いします。
841デフォルトの名無しさん:2011/10/26(水) 21:55:45.86
>>840
>pには文字が入っている

えっ!?
842デフォルトの名無しさん:2011/10/26(水) 22:40:26.85
strlen()は文字数を返す関数
abcd
の入力では4が返ってる。

pは配列strのどこかを指すポインタ
初期化時は配列strの先頭を指してる。

whileループはiが偽(0)になるまで、例では4回ループする。

*(p + l) = *p はポインタpが指す位置からl番目、'\0'が入ってる位置にポインタpが指してる文字、
1ループ目では先頭のaが代入される。

*(p + l + 1) = '\0' は、↑で代入した位置の次に'\0'を代入して終端文字の修正をしてる。

printf("%s\n", ++p) は、分解すると
++p;
printf("%s\n", p);
ポインタpの指す位置から末尾に1文字移動したので、ポインタを一つずらして表示させてる。



長ったらしいのでまとめると、
配列strに文字を入力した後は
abcd\0
abcda\0
abcdab\0
abcdabc\0
って具合に一文字ずつ追加しながらポインタpも一つずつずらし、
結果入力された文字が一つずつずれて表示されてる。

843デフォルトの名無しさん:2011/10/26(水) 22:40:53.81
アンカ忘れ
>>842
>>840
844デフォルトの名無しさん:2011/10/26(水) 22:55:25.07
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):

明治元年以降の西暦年を4桁の数で入力すると、
和暦で年を表示するプログラムを作成せよ。
ただし、2つの元号を持つ年
は両方の年を表示すること。
(例: 1989年 → 昭和64年、平成元年)

(2つの元号を持つ年の扱いについては
余裕がある人は、月、日も入れて、その日の正しい
元号を表示することによって元号を一つ表示す
るプログラムとしてもよい。)
提出例
=== プログラム ===
#include <stdio.h>
int main()
{
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: visualC++2010
[4] 期限: 10月27日 19:00
よろしくお願いします
845デフォルトの名無しさん:2011/10/27(木) 00:52:19.43
台形近似法を用いてf(x)=cos(x)を任意の範囲で積分するプログラムを
ユーザ関数を定義して作成しなさい.
その際の区分間距離も任意に入力できるようにすること。

実行例
積分範囲を入力せよ
x0 = 0
xl = 10
区分間距離を入力せよ
length = 1
ans = 9.949055
積分範囲を入力せよ
x0 = 0
xl = 100
区分間距離を入力せよ
length = 5
ans = 49.588107

お願いします。
846デフォルトの名無しさん:2011/10/27(木) 01:03:29.78
847デフォルトの名無しさん:2011/10/27(木) 01:46:50.62
848デフォルトの名無しさん:2011/10/27(木) 02:02:10.84
>>844
847をちょっと修正
http://ideone.com/eGfeM
849デフォルトの名無しさん:2011/10/27(木) 11:18:07.83
[1] 授業単元:計算機アルゴリズムⅠ
[2] 問題文(含コード&リンク):
設問1-1
プログラム例6.3.1を配列変数xの要素数(変数memberの値)と各要素の値をキーボードから入力するように変更しなさい。
プログラム例6.3.1
#include <stdio.h>

int main(void)
{
int x[10] = {80, 56, 68, 75, 45, 100, 92, 73, 63, 95};
int member = 10;
int total;
float average;
int i;
for (i = 0, total = 0; i < member; ++i )
total += x[i];
average = (float)total / (float)member;
printf("総和=%d\n",total);
printf("平均点=%7.2f\n", average);
return 0;
}

設問1-2
上記設問1-1と同じ配列変数xの要素をその並びを逆順にして配列変数yへ代入し、yの全要素を表示するプログラムを作りなさい。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2011年11月1日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
            繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数は習いました。
宜しくお願いします。
850デフォルトの名無しさん:2011/10/27(木) 12:44:45.55
1-1
int number, *x, i;
printf("要素数:");
scanf("%d", number);
x = malloc(sizeof(*x) * number);
for (i = 0; i < number, i++)
scanf("%d", x + i);

1-2
revert(x, y, 0, 10);とでもして呼び出して。
void revert(int *x, int *y, int i, j)
{
j--;
if (i >= j)
return;
y[j] = x[i];
x[i] = x[j];
reverse(x, y, i++, j--);
return;
}
851デフォルトの名無しさん:2011/10/27(木) 12:51:29.61
/*>>849*/
/*設問1-1*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int *x;
  int member;
  int total;
  float average;
  int i;
  printf("member > ");
  scanf("%d", &member);
  x = (int *)malloc(sizeof(int) * member);
  for (i = 0; i < member; ++i)
    printf("x[%d] > ", i), scanf("%d", &x[i]);
  for (i = 0, total = 0; i < member; ++i)
    total += x[i];
  average = (float)total / (float)member;
  printf("総和=%d\n", total);
  printf("平均点=%7.2f\n", average);
  free(x);
  return 0;
}

つづく
852デフォルトの名無しさん:2011/10/27(木) 12:52:10.69
つづき

/*設問1-2*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int *x, *y;
  int member;
  int i;
  printf("member > ");
  scanf("%d", &member);
  x = (int *)malloc(sizeof(int) * member);
  y = (int *)malloc(sizeof(int) * member);
  for (i = 0; i < member; ++i)
    printf("x[%d] > ", i), scanf("%d", &x[i]);
  for (i = 0; i < member; ++i)
    y[member - 1 - i] = x[i];
  for (i = 0; i < member; ++i)
    printf("y[%d]=%d\n", i, y[i]);
  free(x);
  free(y);
  return 0;
}
853デフォルトの名無しさん:2011/10/27(木) 15:13:36.09
] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):(列挙体)
Sunday, Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday という曜日を表す列挙体
enum Days を定義せよ.以下の実行例のように,
曜日を入力すると,enum Days の列挙定数を利用して
週末,平日,それ以外の場合にそれぞれメッセージを
表示するプログラムを作成せよ.
例 % ./q3-3
曜日を入力して下さい
(0:日1:月2:火3:水4:木5:金6:土):0
やった!週末だ

曜日を入力して下さい
(0:日1:月2:火3:水4:木5:金6:土):5
今日も講義頑張ろう!

曜日を入力して下さい
(0:日1:月2:火3:水4:木5:金6:土):7
この日はないぞう...


[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 10月28日 10:00

簡単に説明もいただけると大変助かります。
よろしくお願いいたします。
854デフォルトの名無しさん:2011/10/27(木) 15:40:35.36
>>853
#include <stdio.h>

int main(void){
enum Days {Sunday, Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday
};

char s[][100]= {"やった!週末だ","今日も講義頑張ろう!","この日はないぞう..."};
int n[]= {0,1,1,1,1,1,0};
int d;

while(1) {
printf("曜日を入力して下さい¥n");
printf("(0:日1:月2:火3:水4:木5:金6:土):");
scanf("%d",&d);
if((d<Sunday)||(d>Saturday))
printf("%s¥n¥n",s[2]);
else
printf("%s¥n¥n",s[n[d]]);
}

return 0;
}
855デフォルトの名無しさん:2011/10/27(木) 16:04:32.08
>>850-852
有難う御座います
856デフォルトの名無しさん:2011/10/27(木) 16:24:59.71
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク): bmp、jpg形式の画像の輝度値を表示させるプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc opencv
 [3.3] 言語: C
[4] 期限: 2011年10月29日まで
[5] 以下のURLの画像のような、元々の白黒画像を白と黒の輝度値を表示した画像に変換したいのですが、どうしていいか
  全く分からなくて、困っています
  http://mcm-www.jwu.ac.jp/~physm/buturi07/robo/genri02.html
  画像だけ載せることができればいい課題なので、最悪このような事を行えるソフトウェアがあればいいのですが
  ネットでたくさん検索を行ったのですが、私の浅知恵のせいか、よく分かりませんでした
  ヒントだけでもいいので、よろしくお願い致します
857デフォルトの名無しさん:2011/10/27(木) 16:38:59.38
マルチうぜえ
858デフォルトの名無しさん:2011/10/27(木) 17:17:25.89
マルチでごめんなさい
入門編で聞いたんですけどこっちで聞けと言う事なので

5人の学生の成績(100点満点)の値をキーボードから読み込み,それらの平均点と分散(標準偏差の二乗)を求めるプログラムを作れ。


授業の課題です
解説付きでお願いします。
859デフォルトの名無しさん:2011/10/27(木) 17:41:48.12
860デフォルトの名無しさん:2011/10/27(木) 18:06:23.12
>>858
#include <stdio.h>
#define NINZU 5

int main(void){
int seiseki[NINZU], i, sum = 0;
double average; /* 平均 */
double sampleVariance = 0; /* 標本分散 */
double w;

/* 5人の学生の成績(100点満点)の値をキーボードから読み込み、点数の合計値を出す */
for (i = 0; i < NINZU; i++) {
printf("seiseki[%d] = ", i + 1);
scanf("%d", &seiseki[i]);
sum += seiseki[i];
}
average = (double) sum / NINZU; /* 平均 */
/* 平均との差の二乗の合計値を出す */
for (i = 0; i < NINZU; i++) {
w = seiseki[i] - average;
sampleVariance += w * w;
}
sampleVariance /= NINZU; /* 標本分散を出す */
printf("answer = %g¥n", sampleVariance);
return 0;
}
861デフォルトの名無しさん:2011/10/27(木) 18:09:22.01
>>858

#include <stdio.h>
#define f ((a+b+c+d+e)/5)
#define g(x) ((x-f)*(x-f))
main(){int a,b,c,d,e;scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);/*キーボードから読み込み*/
return printf("平均:%d\n分散:%d\n",f,(g(a)+g(b)+g(c)+g(d)+g(e))/5);/*平均と分散を求める*/
}
862デフォルトの名無しさん:2011/10/27(木) 18:09:58.26
863858:2011/10/27(木) 18:36:35.29
>>859
あ、ごめんなさい

[1] 授業単元:数学関数と数値計算
[2] 問題文(含コード&リンク):>>358
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ごめんなさい。分かんないです。
 [3.3] 言語: おそらくどちらでも
[4] 期限: [2011年10月28日15:00まで]
[5] その他の制限: printfとscanfまで習いました。

授業全然ついていけてないんで、あやふやなところ多いです。すいません
864デフォルトの名無しさん:2011/10/27(木) 18:37:22.65
訂正
問題文は>>858です
865デフォルトの名無しさん:2011/10/27(木) 18:39:17.59
866デフォルトの名無しさん:2011/10/27(木) 20:51:39.05
>>857
すみません、初めはこちらにレスしようと思ったのですが
見ていた他のスレにレスしてしまいました
867デフォルトの名無しさん:2011/10/27(木) 21:41:31.20
>>863
コードを読み返して、書き直してを繰り返して、
自力で書けるようにならないと今後どんどん悲惨な事になるぞ。
868デフォルトの名無しさん:2011/10/27(木) 21:51:05.25
>>863
ソースを壊しても困らない状態(オリジナルは別フォルダに保存、とか)にしておいてから、ソースを色々いじって、なにが起こるかを見るのも役に立つと思う。
869デフォルトの名無しさん:2011/10/27(木) 23:44:31.48
>>863
printfとscanfしか理解してないぽいからちゃんと一から勉強した方が良い
870デフォルトの名無しさん:2011/10/27(木) 23:55:02.00
>>867-869
正直printfとscanfもあいまいな感じです
分かって無い状態で出すのも気が引けるんで今回の課題は未提出で行こうと思います
一回しっかりと勉強せんとダメですわ
みなさんありがとうございました
871867:2011/10/28(金) 00:25:22.64
>>870
俺が書いたわけじゃないけど、>>860のコードが分かりやすい、

点数入力して合計計算

平均計算

偏差二乗和計算
(コメント/* 平均との差の二乗の合計値を出す */ の部分)

分散を求めて表示

ってなってるから、コードから
点数入力して合計計算
以外を削除して、printf()とscanf()でどうやって表示、点数入力してるかを関数仕様書(cppreferenceとか)見ながら確認するといい。

それがわかると次の
平均計算
部分を追加して確認、本当に平均が計算出来ているかは自分で追加してみてもいい。

それがわかると次のーーー
って具合に、全部一片に勉強するより、コードを処理単位の固まりで捉え、少しずつ勉強するのが分かりやすい。


行数的には>>861が少ないけど、こっちのコードはトリッキーだから>>870にはまだ早い。
872867:2011/10/28(金) 00:30:23.66
ちなみに>>862はC++11で書いてるからCの履修終わった頃で良いと思うw
873デフォルトの名無しさん:2011/10/28(金) 01:02:58.04
>>870
>分かって無い状態で出すのも気が引けるんで今回の課題は未提出で行こうと思います

出したほうが、説明をせざるをえない状況に自分を持っていける、という考え方もある。
874デフォルトの名無しさん:2011/10/28(金) 02:23:05.35
教科書とにらめっこして、やっと出来た気がします。
やっぱ簡単に聞こうなんて思ったらダメですね
みなさんありがとう!

一応貼っときます

# include <stdio.h>

int main(void){
int a, b, c, d, e;
double f, g;
printf(" a, b, c, d, e=");
scanf("%d%d%d%d%d", &a, &b,&c, &d, &e);
f=(a+b+c+d+e)/5.0;
g=((f-a)*(f-a)+(f-b)*(f-b)+(f-c)*(f-c)+(f-d)*(f-d)+(f-e)*(f-e))/5.0;
printf("平均点%lf\n, 分散%lf\n", f, g);

return 0;

}
875デフォルトの名無しさん:2011/10/28(金) 05:19:32.66

    ∧∧   そ~ら、属国犬取って来るアル
   / 支\                     ,,,_
   (  `ハ´)つ                     `''‐、,
 ⊂    ノ         ∧_∧ ウェー、ハッハッハ      `ヽ,      ●
   人  Y    (( ~(⌒:<*`∀´>               ゙:、   r''
  レ (_フ       (/ーし'ー-J                 ゙、,,:'゙



                   ∧∧
  宗主さまぁ          /中\  オー、ヨシヨシ!
               ∧_(`ハ´  )  
         (( ~(⌒:<*`∀´> と )
              し し し (__(_フ   

876デフォルトの名無しさん:2011/10/28(金) 08:08:57.97
] 授業単元:プログラム作成
[2]D, C, B, A, S, Invalid という成績を表す列挙体
enum result を定義し,点数(int 型)を引数として
enum result 型の値を返す関数
seiseki_hantei(int sc)
と,enum result 型の値を引数として,成績を表示する関数も作成する
点数と成績は以下の通とする
0~59 点: D
60~69 点: C
70~79 点: B
80~89 点: A
90~100 点: S
それ以外: Invalid


る関数
print_seiseki(enum result res)
を作成せよ.この2 つの関数を使用して,以下の実行例
のように点数を入力すると成績を表示するmain 関数も
作成すること.点数と成績の関係は以下の通りとする.
例.
点数(整数)を入力してください:91
成績はS です。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 10月27日9:00
877デフォルトの名無しさん:2011/10/28(金) 08:09:55.86
授業単元:プログラム作成
[2]D, C, B, A, S, Invalid という成績を表す列挙体
enum result を定義し,点数(int 型)を引数として
enum result 型の値を返す関数
seiseki_hantei(int sc)
と,enum result 型の値を引数として,成績を表示する関数も作成する
点数と成績は以下の通とする
0~59 点: D
60~69 点: C
70~79 点: B
80~89 点: A
90~100 点: S
それ以外: Invalid


る関数
print_seiseki(enum result res)
を作成せよ.この2 つの関数を使用して,以下の実行例
のように点数を入力すると成績を表示するmain 関数も
作成すること.点数と成績の関係は以下の通りとする.
例.
点数(整数)を入力してください:91
成績はS です。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 10月28日11:00
878デフォルトの名無しさん:2011/10/28(金) 14:39:37.62
一見簡単そうに見えて問題文の不備から誰にも解けない問題か
879デフォルトの名無しさん:2011/10/28(金) 14:57:25.26
>>877 脳内補完して、適当に書いた
http://ideone.com/fZL1V
880デフォルトの名無しさん:2011/10/28(金) 15:26:17.96
>>877 せっかくやったので投稿
https://gist.github.com/4ef2174c695ab92d704c
881デフォルトの名無しさん:2011/10/28(金) 15:43:20.17
【2】


2次元配列の問題です
m行n列の配列aの
各行ごとの合計 gyouwa[i] i=0,1,・・・,m
各列ごとの合計 retuwa[j] j=0,1,・・・,n
を計算するプログラムの作成をお願いします

•行列サイズ m,n は実行時に 100以内であれば自由に設定してデータを再入力させる機能をつける
◦配列サイズの上限はプログラム中で配列を宣言するとき「100 個」として下さい。これは,プログラム中で大き目の配列を宣言しておいて,指定されたサイズに応じて必要分を使うための練習です。

【3】c言語
【4】10月30日まで
882デフォルトの名無しさん:2011/10/28(金) 16:52:05.64
883デフォルトの名無しさん:2011/10/28(金) 22:20:22.34
最大値の求め方について教えてください。
配列の最大値を求めたくて
下のプログラムを作ったのですが,うまく動作しません。

for( maa=1 , qxr = qxxr[0] ; maa < 10; maa++) {
if( qxr < qxxr[maa] ) {
qxr = qxxr[maa];
qxxxr = maa;
}
}

printf("最大のq*rは%dのとき%f\n",qxxxr,qxr);

最大のq*rは0のとき0
と表示されるのですが間違っているところがわかれば教えてください。
配列は下のような感じです.

qxxr[0]=40.800000
qxxr[1]=41.600000
qxxr[2]=0.000000
qxxr[3]=0.000000
qxxr[4]=40.000000
qxxr[5]=0.000000
qxxr[6]=0.000000
qxxr[7]=40.000000
qxxr[8]=0.000000
qxxr[9]=0.000000
884デフォルトの名無しさん:2011/10/28(金) 22:31:21.70
>>883
qxxr[0]=40.800000は浮動小数点だけど、
printf("最大のq*rは%dのとき%f\n",qxxxr,qxr);
表示はintになってるから。
885884:2011/10/28(金) 22:32:37.09
あ、勘違いごめ
886デフォルトの名無しさん:2011/10/28(金) 22:42:30.24
>>883
多分宣言がおかしい
887デフォルトの名無しさん:2011/10/28(金) 23:03:33.99
>>883
これでいいのか?
#include <stdio.h>
int main(void){
double qxxr[]= {
40.800000
,41.600000
,0.000000
,0.000000
,40.000000
,0.000000
,0.000000
,40.000000
,0.000000
,0.000000
};
double qxr;
int maa,qxxxr;

for( maa=1 , qxr = qxxr[0] ; maa < 10; maa++) {
if( qxr < qxxr[maa] ) {
qxr = qxxr[maa];
qxxxr = maa;
}
}
printf("最大のq*rは%dのとき%f¥n",qxxxr,qxr);
return 0;
}

実行結果:最大のq*rは1のとき41.600000
888デフォルトの名無しさん:2011/10/29(土) 00:07:23.62
>>883
マルチならせめて、2番目のスレに書き込む時に判るようにしようぜ。
889デフォルトの名無しさん:2011/10/29(土) 00:49:50.08
>>887
qxxxr の初期化は?
890デフォルトの名無しさん:2011/10/29(土) 00:57:57.20
for( maa=1 , qxr = qxxr[0] ; maa < 10; maa++) {

for( qxr = qxxr[qxxxr=maa=1] ; maa < 10; maa++) {
891デフォルトの名無しさん:2011/10/29(土) 02:01:08.25
>>890
qxxxr を1で初期化しちゃ駄目だろ
892デフォルトの名無しさん:2011/10/29(土) 02:31:27.88
ワロタw
893デフォルトの名無しさん:2011/10/29(土) 18:01:41.27
C言語で5つの整数の中心値(中央値)を求めるプログラムを作成するという問題を出されたのですが
さっぱり分かりません
for文の課題なのでfor文を使って頂けるとありがたいです
894デフォルトの名無しさん:2011/10/29(土) 18:02:58.53
大阪府島本町の小学校や中学校は、暴力イジメ学校や。
島本町の学校で暴力やいじめを受け続けて、心も身体も
壊されて廃人同様になってしもうた僕が言うんやから、
まちがいないで。
教師も校長も、暴力やいじめがあっても見て見ぬフリ。
そればかりか、イジメに加担する教師もおった。
 誰かがイジメを苦にして自殺しても、「本校にイジメは
なかった」と言うて逃げるんやろうなあ。
 僕をイジメた生徒や教師の名前をここで書きたいけど、
そんなことしたら殺されて、天王山に埋められるかもしれ
へん。それで誰にも発見されへんかったら、永久に行方不明のままや。

895デフォルトの名無しさん:2011/10/29(土) 18:22:36.93
>>893
大きい順に並べかえ、真ん中に来た値。

>>1に書いてあるテンプレを使って依頼して。
896デフォルトの名無しさん:2011/10/29(土) 18:31:45.09
出来れば今日中にで、環境はBCCでOSはWindows 7です。言語はCでC++ではありません
897デフォルトの名無しさん:2011/10/29(土) 18:33:02.91
898デフォルトの名無しさん:2011/10/29(土) 19:22:56.07
>>896
#include <stdio.h>
#include <stdlib.h>

#define DIMX 5

int compare(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}

int main() {
int d[DIMX], i;
for ( i = 0; i != DIMX; ++i ) {
int n;
printf( "数値を入れなさい:" );
scanf( "%d", &n );
d[i] = n;
}
qsort( d, DIMX, sizeof d[0], compare );
printf( "中央値は%d\n", d[DIMX/2] );
return 0;
}

ところでピストグラムとピスト自転車ってなんか関係があるのかなー。
899デフォルトの名無しさん:2011/10/29(土) 22:50:24.68
histogram
900デフォルトの名無しさん:2011/10/29(土) 23:54:50.53
集合で、条件を満たす部分集合の数を数える計算をC言語でやりたいと思ってます。

例えば3個の要素からなる集合{a,b,c}でa,b,cは0~24の任意の数をとるとします。
また一方で{0+i,3+i}(i<=24,i++)のものをredと定義します。
そして、{a,b,c}の中で部分集合{a,b}{b,c}{c,a}がすべてredであるような{a,b,c}の数はいくつであるか計算する方法を教えてください。
901デフォルトの名無しさん:2011/10/29(土) 23:57:52.19
>>1
>・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
902デフォルトの名無しさん:2011/10/30(日) 00:57:29.80
903デフォルトの名無しさん:2011/10/30(日) 01:31:24.00
<<902
ありがとうございます!
904デフォルトの名無しさん:2011/10/30(日) 01:52:28.40
>>900
>そして、{a,b,c}の中で部分集合{a,b}{b,c}{c,a}がすべてredであるような{a,b,c}の数はいくつであるか計算する方法を教えてください。

0個だと思うんだが、例えば{a,b,c}の例は何だろう?
905デフォルトの名無しさん:2011/10/30(日) 02:07:30.71
redの定義がよくわからない
906デフォルトの名無しさん:2011/10/30(日) 08:27:09.77
完全に丸投げだから回答が間違っていても
疑うことすらできないんだな
907デフォルトの名無しさん:2011/10/30(日) 09:30:23.44
5つの数字を並び替えることってどうやってやるんですか?
win7でBccでstdio.hでやって欲しいです。それと出来ればfor文で作って頂けると嬉しいです
908デフォルトの名無しさん:2011/10/30(日) 09:42:27.34
>>907
algorithmをインクルードして
for(random_shaffle(a[0],a[5]);;);
909デフォルトの名無しさん:2011/10/30(日) 10:39:02.71
stdlib.hは駄目なん?
駄目ならfor内で並び変える順番入力してswapとか、

もしくはソート、これも並び替えだし。
910デフォルトの名無しさん:2011/10/30(日) 12:04:40.08
911デフォルトの名無しさん:2011/10/30(日) 12:13:32.57

[1] 授業単元:基礎C言語
[2] 問題文(含コード&リンク):二つの3×3行列A.Bを入力して、その積と、それぞれの逆行列を出力するプログラムを作れ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 11月1日まで
[5] その他の制限: 配列を習ったばかりです、参考書に書いてあったのですが、マクロ?とかいうのは習っていません。
よろしくお願いします。
912デフォルトの名無しさん:2011/10/30(日) 17:09:48.52
[1] 授業単元:C++
[2]以下のプログラムにコピーコンストラクタを追加しコンパイルできるようにせよ

stack::stack(const stack& s) {
//max に s.max をコピー;
//data に動的割り当てを行う;
//sp に s.sp をコピー;
//data の指す動的配列に, s.data の指す動的配列をコピー;
}
stack plus(stack s1, stack s2){
int sz = s1.size() + s2.size();
stack tmp(sz), s(sz);
while(!s2.empty()) {tmp.push(s2.top()); s2.pop();}
while(!s1.empty()) {tmp.push(s1.top()); s1.pop();}
while(!tmp.empty()) {s.push(tmp.top()); tmp.pop();}
return s;
}
int main(void){
stack s1(5);
stack s2(5);
stack s(10);
s1.push(1); s1.push(3); s1.push(5);
s2.push(2); s2.push(4); s2.push(6);
s = plus(s1,s2);
s1.dump(std::cout);
s2.dump(std::cout);
s.dump(std::cout);
return 0;
}
[3] [3.1] OS: windows[3.2] コンパイラ名とバージョン: g++[3.3] 言語: C++
[4] 期限: 明日まで [5] その他の制限:
913デフォルトの名無しさん:2011/10/30(日) 17:31:01.40
>>912
他にstackクラスのヘッダとかないのか?
914デフォルトの名無しさん:2011/10/30(日) 17:43:11.36
>>913
問題文にはこれだけしか書かれていませんでした。
classの定義については過去の授業で習ったためだと思われます。
915デフォルトの名無しさん:2011/10/30(日) 18:31:49.48
916デフォルトの名無しさん:2011/10/30(日) 18:37:54.89
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):pbmフォーマット画像ファイルを読み込み、左右を反転させた画像をpbmフォーマット画像ファイルとして保存するプログラムを作成せよ.
[3] 環境
 [3.1] OS: Windows
 [3.2] Windows visual studio2008
 [3.3] 言語: C
[4] 期限: [2011年11月2日16:30まで]
[5] その他の制限: テンプレートはwin32コンソールプロジェクトです。
よろしくお願いします。



917デフォルトの名無しさん:2011/10/30(日) 18:48:29.78
918デフォルトの名無しさん:2011/10/30(日) 18:52:37.11
>>917
おっと、ちょいと間違ってた。9行目を以下のように直しといて

正 cv::Mat h_img;
誤 cv::Mat h;
919デフォルトの名無しさん:2011/10/30(日) 19:49:25.09
920デフォルトの名無しさん:2011/10/30(日) 22:17:53.65
>>911
#define使ってるし、1次元で処理してるので参考程度にしてくれ。
http://ideone.com/sOcjO
921デフォルトの名無しさん:2011/10/31(月) 02:17:33.95
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): 単方向線形リスト(ダミーセルなし)で、空リストを生成する関数を作れ。
ただし、slist.hに以下の型定義が書かれているものとする。また、関数の第一引数はstruct slist * 型とする。
struct cell {
________struct cell *next;
________int data;
};
struct slist {
________struct cell *head;
};
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 特にありません。リスト構造に関して全く理解ができていません><
922デフォルトの名無しさん:2011/10/31(月) 02:52:46.03
#include "slist.h"

void create_empty_list(struct slist *L)
{
L->head = NULL;
}

int main(void)
{
struct slist L;
create_empty_list(&L);
return 0;
}
923デフォルトの名無しさん:2011/10/31(月) 03:38:08.75
>>922
ありがとうございます!
924デフォルトの名無しさん:2011/10/31(月) 07:59:48.28
>>920

#defineを使わないという方法はあるのでしょうか?よくわからないのですが、つかわないとめんどくさいのでしょうか?
925デフォルトの名無しさん:2011/10/31(月) 08:36:23.60
>>924
代わりに
const in N = 3;

> マクロ?とかいうのは習っていません。
に対してだと思う。
926デフォルトの名無しさん:2011/10/31(月) 13:40:05.79
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):

1以上の整数値を入力すると、以下の条件を満たすピラミッドをoxを使って表示するピラミッドを出力するプログラムを作成せよ

*条件
1以上の奇数が入力された時のみピラミッドを表示し、それ以外の場合は「条件をみたしていないので表示しない」と出力する。
ピラミッドの底辺の長さは入力された数値とする。

*実行例
xxxo
xxooo
xooooo
ooooooo

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: visual studio 2010
 [3.3] 言語: C
[4] 期限: [2011.11.3]
[5] その他の制限: 多重のfor文で作成するようです。

よろしくお願いいたします。
927デフォルトの名無しさん:2011/10/31(月) 14:07:09.01
928デフォルトの名無しさん:2011/10/31(月) 14:13:59.70
>>926
#include <stdio.h>

int main(void)
{
int i, j, n;

scanf("%d", &n);

if(n <= 0 || (n % 2) == 0) {
printf("条件をみたしていないので表示しない\n");
return 0;
}

for(i = 1; i <= n; i += 2) {
for(j = n; j > i; j -= 2) printf("x");
for(j = 0; j < i; j++) printf("o");
printf("\n");
}

return 0;
}
929デフォルトの名無しさん:2011/10/31(月) 20:04:44.36
[1] プログラミング
[2] 入力された整数が偶数だったら2で割り、奇数ならば3倍してから1足す
これを1になるまで繰り返し、かつ過程も出力するプログラムを作れ
[3] 環境
 [3.1] OS: 7
 [3.2] visual studio 2010
 [3.3] 言語: c
[4] 期限: 11/1
[5] その他の制限: forを必ず用いること

聞けスレから誘導されてきたからマルチではない・・・?
930デフォルトの名無しさん:2011/10/31(月) 20:09:35.83
#include <stdio.h>

int main(void)
{
int n;

scanf("%d", &n);

while(n != 1) {
if(n & 1) n = n * 3 + 1;
else n >>= 1;
printf("%d\n", n);
}

return 0;
931デフォルトの名無しさん:2011/10/31(月) 20:11:42.71
>>929
#include <stdio.h>

int main(void)
{
int n;
if (scanf("%d", &n) != 1) {
puts("input error.");
return 0;
}
for ( ; n != 1; printf("%d\n", n)) {
if (n % 2 == 0) {
n /= 2;
} else {
n = 3 * n + 1;
}
}
return 0;
}
932デフォルトの名無しさん:2011/10/31(月) 20:12:29.63
forか
#include <stdio.h>

int main(void)
{
int n;

scanf("%d", &n);

for( ; n != 1; ) {
if(n % 2) n = n * 3 + 1;
else n /= 2;
printf("%d\n", n);
}

return 0;
}
933デフォルトの名無しさん:2011/10/31(月) 20:14:43.38
>>930-932
ありがとうございました!
お礼です(パスは1234)
ttp://hetare.ddo.jp/loda/src/hetare_0802.zip.html
934デフォルトの名無しさん:2011/10/31(月) 20:45:01.14
>>929
>これを1になるまで繰り返し、かつ過程も出力するプログラムを作れ
#include <stdio.h>
int main(){
int count = 0, s;

printf("自然数を入力して下さい:");
scanf("%d", &s);
for (; s > 1;) {
count++;
printf("%4d : %4d ", count, s);
if (s % 2 == 0)
printf("÷ 2 = %4d¥n", s /= 2);
else
printf("× 3 + 1 = %4d¥n", s = s * 3 + 1);
}
printf("count = %d¥n", count);

return 0;
}
935デフォルトの名無しさん:2011/10/31(月) 21:27:12.32
角田の予想だっけ?
これって負数の場合は言及されてないけど-1に至ればいいのかな
936デフォルトの名無しさん:2011/10/31(月) 21:28:53.24
下のように定義される等比級数の第1項から第n項までの和 sum を
求めるプログラムを for文を用いて作成せよ。

a1 = 1.0
a i+1 = a i *0.5

   n
sum= Σ(ai)
i=1



すみません。かなりの時間ねばったんですが、できませんでした。
お願いいたします。
937デフォルトの名無しさん:2011/10/31(月) 21:29:31.01
>>935
コラッツ、角谷だね。
1になるまで計算。
938デフォルトの名無しさん:2011/10/31(月) 21:34:36.30
>>936
#include <stdio.h>

int main(void)
{
int n;
double gs = 1.0;

scanf("%d", &n);

for( ; n > 1; n--) gs = gs * 0.5 + 1.0;

printf("%f\n", gs);

return 0;
}
939デフォルトの名無しさん:2011/10/31(月) 21:47:16.36
>>938

ありがとうございます!
助かりました。
940デフォルトの名無しさん:2011/11/01(火) 06:45:55.52
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
int型の2次元配列がある。このうち1つの変数に注目したとき、その変数の値と同じ値を持つ変数が
上下左右に何個繋がっているかを返すプログラムを作成せよ。
例えば以下のような配列 int array[8][8];があるとき、
左下の1 (array[7][0])を指定した場合、「1」は5個繋がっていることになる。
その右隣の3 (array[7][1])を指定した場合、「3」は3個繋がっていることになる。

0 2 1 3 0 1 1 2
2 2 2 1 1 2 3 3
3 0 2 1 2 3 2 2
1 1 1 2 1 0 0 1
2 3 3 2 1 0 1 0
2 1 1 2 2 3 0 1
1 1 2 1 2 0 3 1
1 3 3 3 0 0 1 1

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: ([2011年11月05日まで])
[5] その他の制限:無し

よろしくお願いします。
whileや再起を使って考えてみましたが分かりませんでした。
941デフォルトの名無しさん:2011/11/01(火) 07:11:05.48
>>940 見難いなら適度に改行入れてちょ
#include <stdio.h>
int main(void)
{
  int array[8][8] = {
    {0, 2, 1, 3, 0, 1, 1, 2},
    {2, 2, 2, 1, 1, 2, 3, 3},
    {3, 0, 2, 1, 2, 3, 2, 2},
    {1, 1, 1, 2, 1, 0, 0, 1},
    {2, 3, 3, 2, 1, 0, 1, 0},
    {2, 1, 1, 2, 2, 3, 0, 1},
    {1, 1, 2, 1, 2, 0, 3, 1},
    {1, 3, 3, 3, 0, 0, 1, 1}
  };
  int row, col, count, i;

  /* 注目する行・列を指定 */
  do {
    printf("行(row) 列(col):"); scanf("%d%d", &row, &col);
  } while (!((row >= 0 && row < 8) && (col >= 0 && col < 8)));
  
  /* 同じ値の個数を数える */
  count = 0;
  /* 縦方向に数える */
  for (i = 0; i < 8; i++) if (i != row) if (array[i][col] == array[row][col]) count++;
  /* 横方向に数える */
  for (i = 0; i < 8; i++) if (i != col) if (array[row][i] == array[row][col]) count++;
  count++; /* 注目する位置分の加算 */
  
  printf("%d\n", count);
  return 0;
}
942デフォルトの名無しさん:2011/11/01(火) 07:24:28.08
>>941
ありがとうございます。
それだと指定した場所から十字にまっすぐ伸ばした部分しか数えられませんよね。
問題では、繋がっている部分を全てカウントしなければなりません。
943デフォルトの名無しさん:2011/11/01(火) 07:27:43.08
なんかxとyが逆のような気がしてきたが、
題意に影響はないはず

http://codepad.org/O42WTQht
944デフォルトの名無しさん:2011/11/01(火) 07:30:17.11
境界チェックにミスがあったので修正
http://codepad.org/9PnOOvhu
945941:2011/11/01(火) 07:40:50.15
ああごめん、問題の勘違い
とりあえず>>941の後に書いてた再帰版を先ず修正したんで再帰版を
#include <stdio.h>
#include <string.h>
int rec(int row, int col, int y, int x, int n, int a[8][8]) {
  if (y < 0 || y > 7) return 0;
  if (x < 0 || x > 7) return 0;
  if (a[y][x] != n) return 0;
  
  a[y][x] = -1;
  return 1 + rec(row, col, y - 1, x, n, a) +
+ rec(row, col, y + 1, x, n, a) +
+ rec(row, col, y, x - 1, n, a) +
+ rec(row, col, y, x + 1, n, a);
}
int solve(int row, int col, const int array[8][8]) {
  int a[8][8];
  memcpy(a, array, sizeof(int) * 8 * 8);
  return rec(row, col, row, col, array[row][col], a);
}
int main(void) {
int array[8][8] = {
{0, 2, 1, 3, 0, 1, 1, 2}, {2, 2, 2, 1, 1, 2, 3, 3}, {3, 0, 2, 1, 2, 3, 2, 2}, {1, 1, 1, 2, 1, 0, 0, 1}, {2, 3, 3, 2, 1, 0, 1, 0}, {2, 1, 1, 2, 2, 3, 0, 1}, {1, 1, 2, 1, 2, 0, 3, 1}, {1, 3, 3, 3, 0, 0, 1, 1}
};
int row, col;
/* 注目する行・列を指定 */
do {
printf("行(row) 列(col):"); scanf("%d%d", &row, &col);
} while (!((row >= 0 && row < 8) && (col >= 0 && col < 8)));
printf("%d\n", solve(row, col, array));
return 0;
}
946デフォルトの名無しさん:2011/11/01(火) 07:44:22.74
rec()のrowとcolって必要か?
947デフォルトの名無しさん:2011/11/01(火) 07:50:03.15
>>944,945
ありがとうございます。
コードを読んでもなぜそうなるのかいまいち理解が出来ませんが、正しい実行結果が得られました。
948941:2011/11/01(火) 07:51:31.15
>>940 whileループで作成、
と言っても俺はこの手の問題は再帰でしか解いた事無いんで、
このコードも仮想スタックで再帰みたいな処理をしてるけど。
ttp://codepad.org/94kYReKf
949デフォルトの名無しさん:2011/11/01(火) 07:52:30.45
>>946
Oh...、要らないですね、修正時にミスった
950>>941:2011/11/01(火) 07:57:39.37
>>948
最悪計算量の場合配列外エラーおこしてしまうやんけ・・・
ttp://codepad.org/tfm8Llyy
951デフォルトの名無しさん:2011/11/01(火) 08:02:19.59
落ち着け
952デフォルトの名無しさん:2011/11/01(火) 08:18:34.28
この手の問題は端に余分なデータを追加しとくと、境界をチェックする必要がなくなって楽
953デフォルトの名無しさん:2011/11/01(火) 09:44:11.27
ペイントでの塗りつぶしのアルゴリズムだな
954デフォルトの名無しさん:2011/11/01(火) 11:32:44.62
[1] 授業単元:計算機アルゴリズムⅠ
[2] 問題文(含コード&リンク):
設問1-1
プログラム例7.2.1を、最小値の要素番号idx(x[idx]が最小値となるようなidx)を求めるように変更した後、
その最小値x[idx]と先頭要素x[0]の2つの要素を入れ替え、配列の全要素を表示するようにしなさい。
この実行の結果、x[0]はx[0],x[1],・・・,x[9]の最小値となります。
プログラム例7.2.1
ttp://www.dotup.org/uploda/www.dotup.org2207772.txt.html
設問1-2
次にx[1],x[2],・・・,x[9]に対し上記設問1-1と同じ操作を行い、次にx[2],x[3],・・・,x[9]に対し上記設問1-1と同じ操作を行い、
・・・,最後にx[8],x[9]に対し上記設問1-1と同じ操作を行うという手順で処理を進めると最終的に配列xを昇順にソーティングできます。
そのようにプログラムを作成しなさい。
設問1-3
上記設問1-2をfor文の2重ループで書きなさい。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2011年11月7日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
            繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数
            条件分岐if文、要素番号idx使用の書換、データの入れ替えは習いました。
宜しくお願いします。
955デフォルトの名無しさん:2011/11/01(火) 11:43:32.43
>>953
サメガメじゃね?
956デフォルトの名無しさん:2011/11/01(火) 12:25:25.90
957デフォルトの名無しさん:2011/11/01(火) 16:38:20.39
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:11/6
[5] その他の制限:多倍長整数使ってほしいです。
958デフォルトの名無しさん:2011/11/01(火) 18:09:53.77
#include <stdio.h>

int main(void)
{
int i, j, c, d, n, a[1000] = {1};

scanf("%d", &n);

for(i = 2, d = 0; i <= n; i++) {
for(j = c = 0; j <= d; j++) {
a[j] *= i;
a[j] += c;
if(a[j] >= 10000) {
c = a[j] / 10000;
a[j] %= 10000;
}
else c = 0;
}
if(c) a[++d] = c;
}

printf("%d", a[d]);
for(i = d - 1; i >= 0; i--) printf("%04d", a[i]);

return 0;
}
959デフォルトの名無しさん:2011/11/01(火) 18:43:12.51
>>958
最大36,000桁くらいになるから、
X a[1000]
O a[10000]
960デフォルトの名無しさん:2011/11/01(火) 18:45:14.17
1000未満に見えてたw
961デフォルトの名無しさん:2011/11/01(火) 21:15:54.15
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):画像値の(最大値、最小値)平均値、中央値、最頻値、分散の計算
http://codepad.org/BCJ9fKuQ
[3] 環境 
 [3.1] OS:Mac OS X
 [3.2] コンパイラ名とバージョン:pkg-config --cflags opencv --libs opencv 124
 [3.3] 言語:c++
[4] 期限:11月3日(木)
[5] その他の制限:コンパイラが分からなかったので全部抜き出してきましたが……(opencv ?)
            このように計算したら出るよ、でも結構ですのでよろしくお願いします
962デフォルトの名無しさん:2011/11/01(火) 22:46:39.26
>>961
最小値+最大値=奇数の時の仕様が不明だが、計算部分だけ作ってみた。
http://ideone.com/0K4HA
963デフォルトの名無しさん:2011/11/01(火) 22:47:25.69
>>961
http://codepad.org/5GkJFWVH

中央値の算出に画像行列をソートする関係で計算の順番が違っているので注意
964デフォルトの名無しさん:2011/11/01(火) 22:55:45.19
>>963
おっと、33-35行で間違いだ

正:
double mode = *( max_element( m.begin(), m.end(),
[]( Dimap::value_type lhs, Dimap::value_type rhs ){ return lhs.second < rhs.second; }
) ).first;
965デフォルトの名無しさん:2011/11/02(水) 00:07:35.17
>>962-964
ありがとうございます
参考にさせていただきます
966デフォルトの名無しさん:2011/11/02(水) 00:22:12.26
>>965
訂正
参考にさせていただきます→コピペさせていただきます
967デフォルトの名無しさん:2011/11/02(水) 07:55:25.15
まあ問題中のソースがCなのにC++11のlambda構文が参考になるとは思えないがw
968デフォルトの名無しさん:2011/11/02(水) 16:38:37.82
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):文字列st の中に含まれる文字ch の個数(含まれて
いなければ0 とする)を返す関数
int str_chnum(const char st[], int ch)
を作成せよ.以下の実行例のように,関数の動作を確認
例.文字列を入力してください:Koukadai
検索する文字を入力してください:a
その文字は2 個含まれています。


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年11月4日 11:00
969デフォルトの名無しさん:2011/11/02(水) 17:05:04.58
5を入力するまで数字を入力し

入力されたら
その数列の最大値と最小値の場所を入れ替えて左から表示するプログラムを教えてください
970デフォルトの名無しさん:2011/11/02(水) 17:24:32.72
>>968

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

int str_chnum(const char *st,int ch){
int index=0, count=0;
char *p = 0;
do{
p = strchr(&st[index],ch);
}while(p&&(count++,index=p-st+1));return count;
}
int main(void){char buf1[100];int buf2;
printf("文字列を入力してください:");fgets(buf1,100,stdin);putchar('\n');
printf("検索する文字を入力してください");buf2 = getc(stdin);putchar('\n');
printf("その文字は%d個含まれています。\n",str_chnum(buf1,buf2));
}
971デフォルトの名無しさん:2011/11/02(水) 17:35:25.93
972デフォルトの名無しさん:2011/11/02(水) 17:43:49.05
973デフォルトの名無しさん:2011/11/02(水) 18:58:01.21
//>>969
#include<stdio.h>

main(){
while(1){
printf("      ハ,,ハ \n");
printf("      ( ゚ω゚ )  お断りします \n");
printf("     /    \ \n");
printf("   ((⊂  )   ノ\つ)) \n");
printf("      (_⌒ヽ \n");
printf("       ヽ ヘ } \n");
printf("  ε≡Ξ ノノ `J \n");
}
}
974デフォルトの名無しさん:2011/11/03(木) 01:39:05.19
C言語でロシア農民の掛け算のプログラムを教えてくれ ください
975デフォルトの名無しさん:2011/11/03(木) 02:11:41.44
976デフォルトの名無しさん:2011/11/03(木) 02:26:25.58
int russian_multiply_method1( int lhs, int rhs ) {
int answer = 0;
while ( lhs > 0 ) {
if ( lhs & 1 ) { answer += rhs; }
lhs >>= 1;
rhs <<= 1;
}
return answer;
}

int russian_multiply_method2( int lhs, int rhs ) {
int head = ( lhs & 1 ? rhs : 0 );
while ( lhs > 1 ) {
lhs >>= 1;
rhs <<= 1;
}
return head + rhs;
}
977デフォルトの名無しさん:2011/11/03(木) 02:34:16.26
なんかの冗談?
978デフォルトの名無しさん:2011/11/03(木) 07:30:08.54
[1] 授業単元:基礎C
[2] 問題文(含コード&リンク):ガウスの消去法を使って、
n元連立一次方程式をとくプログラミングを作成しろ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:)C言語
[4] 期限: 11月4日
[5] その他の制限:
配列をすこし習いました、#math.hやマクロなどは使わないいただきたいです
979デフォルトの名無しさん:2011/11/03(木) 08:42:30.97
>>956
有難う御座います
980デフォルトの名無しさん:2011/11/03(木) 09:02:43.67
[1] 授業単元:基礎C
[2] 問題文(含コード&リンク):以下の実行例のように,姓と名を入力すると,2 つの
間にスペースを入れて連結した文字列を生成するプロ
グラムを作成せよ.姓と名はそれぞれ配列family[] と
first[] に,連結した文字列は配列fullname[] に格納
すること.入力できる姓と名の長さはそれぞれ30 字ま
でとする。
例. Family name: Kouka
First name: Dai
Kouka Dai
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:)C言語
[4] 期限: 11月4日
[5] その他の制限
981デフォルトの名無しさん:2011/11/03(木) 10:20:41.46
[1] 授業単元:基礎C
[2] 問題文(含コード&リンク):下のAAを縦20横30くらいのマップ上でこいつを
キーボードのAを押せばジャンプして地面まで落下、Sを押せばマップ上を右へ、
Dを押せば左へ行くプログラムを作成せよ。

↓AA

(^ω^)
(   )
 l  l

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年11月7日 11:00
982デフォルトの名無しさん:2011/11/03(木) 15:57:11.11
983デフォルトの名無しさん:2011/11/03(木) 23:55:45.01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ダイクストラ法のプログラミングを作成し、最短経路を求めなさい
  http://ideone.com/db5A8
  自分で書いてみたのですが、途中までしか最短経路が求められません
[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン:gcc-4.3.4
 [3.3] 言語: C++
[4] 期限: 2011年11月6日

よろしくお願いします。
984デフォルトの名無しさん:2011/11/04(金) 00:28:53.00
[1] 授業単元:C++
[2] 問題文(含コード&リンク):文字を一文字入力して、
入力された文字が、英字の小文字であるか、
英字の大文字であるか、数字であるか、それ以外の文字であるか
判別して、判別結果を表示するプログラムを作成せよ。
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン:gcc-4.3.4
 [3.3] 言語: C++
[4] 期限: 2011年11月5日

よろしくお願いします
985デフォルトの名無しさん:2011/11/04(金) 00:30:17.94
[1] 授業単元:C++
[2] 問題文(含コード&リンク):文字を一文字入力して、入力文字が a-z の範囲のときのみ、
文字コードが一個隣のアルファベットを表示すプログラムを作成せよ。
ただし、zを入力した場合は a を表示し、a-z以外の文字を入力した
場合は入力した文字をそのまま表示すること。

例:
aを入力 → b を出力
bを入力 → c を出力
zを入力 → a を出力
3を入力 → 3 を出力
$を入力 → $ を出力
Aを入力 → A を出力
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン:gcc-4.3.4
 [3.3] 言語: C++
[4] 期限: 2011年11月5日

すみません、こちらも同時にお願いします

よろしくお願いします
986デフォルトの名無しさん:2011/11/04(金) 01:21:29.56
987デフォルトの名無しさん:2011/11/04(金) 01:23:52.32
>>984
#include <iostream>
#include <cctype>
int main()
{
char c;
if (std::cin >> c) {
if (islower(c)) {
std::cout << "英小文字です" << std::endl;
} else if (isupper(c)) {
std::cout << "英大文字です" << std::endl;
} else if (isdigit(c)) {
std::cout << "数字です" << std::endl;
} else {
std::cout << "英字でも数字でもありません" << std::endl;
}
}
}

>>985
#include <iostream>
#include <cctype>
int main()
{
char c;
if (std::cin >> c) {
if (islower(c)) {
c = 'a' + (c - 'a' + 1) % ('z' - 'a' + 1);
}
std::cout << c << std::endl;
}
}
988デフォルトの名無しさん:2011/11/04(金) 01:28:43.26
>>987
すみません、書き込み不足がありました。

include<studio.h>
int main()

固定です
989デフォルトの名無しさん:2011/11/04(金) 02:27:20.99
>>981
http://ideone.com/4SpFT

こんな感じでどうでしょう。
初めてcurses.h使ってなかなか楽しかった。
ネットで見たところWindowsでもcurses.h動くみたいだし頑張ってくださいな。
990デフォルトの名無しさん:2011/11/04(金) 09:06:53.95
次スレ立てます
991デフォルトの名無しさん:2011/11/04(金) 09:08:42.91
次スレ立てました
C/C++の宿題片付けます 153代目
http://hibari.2ch.net/test/read.cgi/tech/1320365280/
992デフォルトの名無しさん:2011/11/04(金) 09:10:16.71
C++では、a~zが連続していることは保障されているのでしょうか?
993デフォルトの名無しさん:2011/11/04(金) 09:34:24.65
>>992
文字コードによる
994デフォルトの名無しさん:2011/11/04(金) 09:35:07.65
0から1000までの整数を英語で出力する
という課題があるのですが

まったくわからないので教えてください
995デフォルトの名無しさん:2011/11/04(金) 09:44:21.11
>>993
996デフォルトの名無しさん:2011/11/04(金) 10:56:37.13
>>994
もう一度スレの頭から読み返せ

std::cout << "zero\n"
std::cout << "one\n"
...
std::cout << "a thousand" << std::endl;

みたいなのが返ってくるぞ
997デフォルトの名無しさん:2011/11/04(金) 11:55:37.42
>>992
不安なら
std::string lower = "abcdefghijklmnopqrstuvwxyz";
std::cin >> inputChar;
if (lower.find(inputChar) != string::npos) {
// 小文字ですよ
} else ....
ってやればいいんじゃね。
998デフォルトの名無しさん:2011/11/04(金) 12:07:08.62
std::tolower使っていいしな
<cctype>も積極的に使おう
999デフォルトの名無しさん:2011/11/04(金) 13:19:25.00
std::うんたらかんたら
ってクラスの関数宣言じゃないの?
誰か教えて
1000デフォルトの名無しさん:2011/11/04(金) 13:19:39.14
定義だった
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。