C/C++の宿題片付けます 152代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/08/01(月) 21:33:15.15【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
0002デフォルトの名無しさん
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/
0003デフォルトの名無しさん
2011/08/01(月) 21:34:12.66前スレ
C/C++の宿題片付けます 151代目
http://hibari.2ch.net/test/read.cgi/tech/1311089619/
0004デフォルトの名無しさん
2011/08/01(月) 22:14:18.48・お礼にエッチな画像等嬉しいサプライズを用意できる場合は適時便宜をはかること。
0005デフォルトの名無しさん
2011/08/02(火) 00:44:47.740006デフォルトの名無しさん
2011/08/02(火) 13:33:26.07[2] 問題文(含コード&リンク):となりどおしの数字の差がその下の数字となるように、
1から15までの数を1回だけ使って例に従ってマスにいれなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2011年8月2日14:30まで]
[5] その他の制限: C言語初心者です。宜しくお願いします。
0007デフォルトの名無しさん
2011/08/02(火) 15:06:55.73[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] その他の制限: 特にないです。
0008デフォルトの名無しさん
2011/08/02(火) 15:13:18.56[2] 問題文(含コード&リンク):自然数n>0を入力し、その自明でない約数(1とn以外の約数)をひとつ出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年8月3日
[5] その他の制限: 特にないです。
0009デフォルトの名無しさん
2011/08/02(火) 15:54:34.30[2] あるlistを読み込みアルファベット順に並び替 え標準出力するプログラムを作成せよ。
[3.1] Windows vista
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2011年8月2日
[5] その他の制限: strcpyを使ってはいけないと いう制限があるんですが一度strcpy作ってから変 えてみたんですがいまいち分かりません、 どうすればいいでしょうか?http://codepad. org/LbBL9T3T
0010デフォルトの名無しさん
2011/08/02(火) 15:56:34.46ttp://ideone.com/UbR89
0011デフォルトの名無しさん
2011/08/02(火) 15:59:05.86できればmain関数内だけで出来ませんか?
宜しくお願いします。
0012デフォルトの名無しさん
2011/08/02(火) 16:02:38.05ttp://ideone.com/3h2gH
0013デフォルトの名無しさん
2011/08/02(火) 16:10:50.34修正して貰っているのに本当に申し訳ありません。
#define定義も習ってませんので使わないで行えますか?
本当に何度も申し訳ありません。
0014デフォルトの名無しさん
2011/08/02(火) 16:21:22.21ttp://ideone.com/cJyaH
0015デフォルトの名無しさん
2011/08/02(火) 16:26:20.32[2] 問題文(含コード&リンク):
多角形を中心座標に対し上下反転させる関数を作成しなさい。この関数の引数は、多角形のデータが
収められた構造体のアドレスをとる。また、上下反転された座標は元の頂点座標に格納する変数に再代入される。
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語:C++
[4] 期限:2011年 8月2日
[5] その他の制限:なし
おねがいしますm(__)m
0016デフォルトの名無しさん
2011/08/02(火) 16:37:24.07大変助かりました。
差し支えなければ、このプログラムのfor文の意味とif文の意味とuse[i]が1になる時と
ならない時の処理の違いを教えていただけないでしょうか?
宜しくお願いします。
0017デフォルトの名無しさん
2011/08/02(火) 16:41:21.03単純にやると右回りと左回りが逆になるけど
頂点の並び順に意味はあるの?
0018デフォルトの名無しさん
2011/08/02(火) 17:10:55.920020デフォルトの名無しさん
2011/08/02(火) 18:34:46.74文字列copyではなく、文字列の先頭アドレスを配列(index[5])に入れ、
index[]内でソート。
http://ideone.com/Dnj6g
0021デフォルトの名無しさん
2011/08/02(火) 20:17:47.120022デフォルトの名無しさん
2011/08/02(火) 20:26:05.86http://ideone.com/cJyaH
このプログラムはどのような処理を行って結果を表示しているか教えて頂けますか?
問題は>>6に記されています。
0023デフォルトの名無しさん
2011/08/02(火) 20:57:43.160024デフォルトの名無しさん
2011/08/02(火) 21:01:29.61どのようにしてるか気になります。
0025デフォルトの名無しさん
2011/08/02(火) 21:05:47.52今>>22開いてみたがwwww
これ嫌がらせ?w
0026デフォルトの名無しさん
2011/08/02(火) 21:09:49.28もっと分かりやすくできる方がいれば宜しくお願いします。
0027デフォルトの名無しさん
2011/08/02(火) 21:40:15.68これがメタプログラミングとかいうやつの成果物か‥‥‥。
0028デフォルトの名無しさん
2011/08/02(火) 21:47:08.982 11 10 6
9 1 4
8 3
5
0029デフォルトの名無しさん
2011/08/02(火) 22:15:32.690030デフォルトの名無しさん
2011/08/02(火) 22:49:00.04どっちかって言うと出題者の嫌がらせ
main() だけで書けとか無理を言うとこうなる、>>22 は頑張ったよ
0031デフォルトの名無しさん
2011/08/02(火) 23:07:12.09main() だけじゃなく、逆三角形表示も嫌がらせだろ
普通は>>28の表示でOK
0032デフォルトの名無しさん
2011/08/02(火) 23:30:53.83ttp://ideone.com/zyjmn
無駄な文字列操作が発生するので遅くなるけど、main() だけで書くとこうなる
0033デフォルトの名無しさん
2011/08/03(水) 06:57:19.37[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文の中で回すといわれました。
そうゆう方法があれば宜しくお願いします。
0034デフォルトの名無しさん
2011/08/03(水) 07:10:13.66そんで期限が10時とかどうかしてるな
0035デフォルトの名無しさん
2011/08/03(水) 07:12:25.180036デフォルトの名無しさん
2011/08/03(水) 07:13:14.21逆に for 文を使わないでどうやって処理するか聞きたいわ
ここまで無知を装うとはさすがに釣りだろうな
0037デフォルトの名無しさん
2011/08/03(水) 07:16:42.75昨日に出された宿題です。
宜しくお願いします。
0038デフォルトの名無しさん
2011/08/03(水) 07:57:33.740039デフォルトの名無しさん
2011/08/03(水) 07:58:23.86ttp://ideone.com/z7mDN
トータルで36万くらいの組み合わせが有るけど出力するのかw
出力するなら10〜12行目の // を外せ
#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;
}
0041デフォルトの名無しさん
2011/08/03(水) 08:53:34.980042デフォルトの名無しさん
2011/08/03(水) 09:05:54.140043デフォルトの名無しさん
2011/08/03(水) 09:46:53.510044デフォルトの名無しさん
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の答えを作っていただいて申し訳ないのですが、コレでは読みにくいといわれました。
ご指導お願いします。
0045デフォルトの名無しさん
2011/08/03(水) 10:18:29.070046デフォルトの名無しさん
2011/08/03(水) 10:38:54.490047デフォルトの名無しさん
2011/08/03(水) 10:47:28.67この言葉使いの時点で同一人物ではないかと疑うわ
0048デフォルトの名無しさん
2011/08/03(水) 10:50:23.71度重なる質問誠に申し訳ありません。
宜しくお願いします。
0049デフォルトの名無しさん
2011/08/03(水) 10:51:00.09もし>>44==>>33だとしたら、>>33の問題に回答してもらったにもかかわらず、
礼も言わずに次の問題を丸投げしてくる無礼極まりない奴だということになるからな
0050デフォルトの名無しさん
2011/08/03(水) 10:53:01.690051デフォルトの名無しさん
2011/08/03(水) 11:02:14.95以前、回答してくださった方には大変感謝しております。
誠にありがとうございました。
0052デフォルトの名無しさん
2011/08/03(水) 11:05:27.31常識もない技能もないじゃ人生行き詰まるぞ
0053デフォルトの名無しさん
2011/08/03(水) 11:44:00.62>・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
0054デフォルトの名無しさん
2011/08/03(水) 12:00:18.11>>33を読んでその書き込みができるのはすげーよw
0055デフォルトの名無しさん
2011/08/03(水) 12:03:24.21( ´Д`)
⊂ ._つ
人 Y
し'(_)
0056デフォルトの名無しさん
2011/08/03(水) 12:50:23.10>>1に書いてあることを読んで実践できるようなのなら、宿題くらい自力で何とかしようとすると思うんだ
0057デフォルトの名無しさん
2011/08/03(水) 12:58:43.620058デフォルトの名無しさん
2011/08/03(水) 13:06:03.45守ってないから無駄なやり取りが起きてる
0059デフォルトの名無しさん
2011/08/03(水) 13:33:03.370060デフォルトの名無しさん
2011/08/03(水) 16:08:32.06自分はしないが、いちゃもんはつけるって日本の美しい作法
0061デフォルトの名無しさん
2011/08/03(水) 17:04:37.950062デフォルトの名無しさん
2011/08/03(水) 17:29:58.00馬鹿なの?社会不適合者なの?
社会不適合者だから「ぼくのてんさいぶりをみとめてくれないにほんじんども」を批判したくなっちゃうの?
0063デフォルトの名無しさん
2011/08/03(水) 17:32:26.32ベタな書き方だが。
http://ideone.com/jMGdF
0064デフォルトの名無しさん
2011/08/03(水) 17:49:00.43俺にはさっぱりだが
>>44のやり方指示をコードにするとそうなるのか
良く考えつくな
>>61-62 基地外だろ
0065デフォルトの名無しさん
2011/08/03(水) 17:55:51.57私は君から基地外扱いされても何の損も無いが、
君が「ぼくのきにいらないことをいってくるやつ」を大した根拠も無く基地外扱いするというのは、
長い目で見れば君にとっては損かもしれない。
0066デフォルトの名無しさん
2011/08/03(水) 18:00:37.84社会不適合者だから
の根拠示せよ
0067デフォルトの名無しさん
2011/08/03(水) 18:06:32.62本当にありがとうございます。
誠に図々しいのですが、absは習ってないので使わない方法があれば教えて頂けませんか?
宜しくお願いします。
本当に何度もすみません。
0068デフォルトの名無しさん
2011/08/03(水) 18:17:11.11その文はすべて問いかけの形になっているから、特に根拠を示す必要もない。
もし君自身が馬鹿でなく社会不適合者でもないと思うのであれば、
「違う」と答えてくれて構わない。
0069デフォルトの名無しさん
2011/08/03(水) 18:19:35.97「文句をつけてる奴がこのスレで回答してない」といったことを根拠も示さず
あたかも一般的に認められた事実であるかのように用いた>>59のレスを一般化して
「それが日本人」であるということを述べたが、それが誤りであり、
そのような誤った論の展開を行うものは一般的に「馬鹿」と呼ばれており、
またその程度の知能では社会生活も困難である、すなわち社会不適合者であろう、というのが根拠であった。
0070デフォルトの名無しさん
2011/08/03(水) 18:20:03.95無駄に荒れる原因になるだけなのに
0071デフォルトの名無しさん
2011/08/03(水) 18:23:23.19>気に入らない質問やその他の発言はスルーの方向で。
0072デフォルトの名無しさん
2011/08/03(水) 18:24:19.78abs(a - b) を a-b>=0?a-b:b-a
0073デフォルトの名無しさん
2011/08/03(水) 18:24:41.85absというのが絶対値のことだというのがわかれば、自分でabs関数にあたるものを作って……
って、main関数の中で完結させないといけないんだっけ
そうするとmain関数の中で直接絶対値を求められるように書いて……ってしちめんどくせえ
こんな糞みたいな制限の中でやらせる講師は糞だな
パズルやってんじゃないんだから使えるもんは使わせりゃいいのに
0074デフォルトの名無しさん
2011/08/03(水) 18:25:54.67x = abs(a - b);
を
x = a - b;
if(x < 0) x = -x;
の形にすればいい。
本当に課題なら>>1にも有るように、後出し連続は嫌われる。
制限を書き切れないなら、例えば直前に習った課題の結果を貼って、
「今はこのレベルです」って言わないと、回答者にも判らんぜ。
0075デフォルトの名無しさん
2011/08/03(水) 18:29:13.59>>33 の例を見ると順列も区別してるよ
0076デフォルトの名無しさん
2011/08/03(水) 18:31:30.75どうやったら406って数字が出てくるんだ?
0077デフォルトの名無しさん
2011/08/03(水) 18:35:59.8000787・8
2011/08/03(水) 18:40:47.460079デフォルトの名無しさん
2011/08/03(水) 18:43:47.200080デフォルトの名無しさん
2011/08/03(水) 18:45:06.160081デフォルトの名無しさん
2011/08/03(水) 18:49:01.450082デフォルトの名無しさん
2011/08/03(水) 18:58:53.320083デフォルトの名無しさん
2011/08/03(水) 19:12:30.08http://ideone.com/pAIlA
0084デフォルトの名無しさん
2011/08/03(水) 19:12:38.36http://ideone.com/fiUaG
0085デフォルトの名無しさん
2011/08/03(水) 19:13:26.62>>7
http://hibari.2ch.net/test/read.cgi/tech/1311089619/928
>>8
http://hibari.2ch.net/test/read.cgi/tech/1311089619/951
00867・8
2011/08/03(水) 21:10:31.94前スレに出てたんですね。
本当に助かりました。
0087デフォルトの名無しさん
2011/08/04(木) 00:52:25.75[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] その他の制限:特になし
お手数ですが、よろしくお願いします。
0088デフォルトの名無しさん
2011/08/04(木) 01:55:42.090089デフォルトの名無しさん
2011/08/04(木) 02:37:01.490090デフォルトの名無しさん
2011/08/04(木) 07:31:31.97助かりました。
ありがとうございます。
0091デフォルトの名無しさん
2011/08/04(木) 08:16:17.91http://ideone.com/3YEMM
0092デフォルトの名無しさん
2011/08/04(木) 09:37:59.07ありがとうございます!
本当にたすかりましたっ!
0093デフォルトの名無しさん
2011/08/04(木) 09:53:47.550094デフォルトの名無しさん
2011/08/04(木) 10:00:46.59このとき、\\は\\\\と書かなければならない。
\\\\は\\\\\\\\と書かなければならない。
\\\\\\\\は\\\\\\\\\\\\\\\\と書かなければならない。
これが永遠に繰り返されるため、\を含むプログラムの記述は不可能である。
0095デフォルトの名無しさん
2011/08/04(木) 10:02:25.400096デフォルトの名無しさん
2011/08/04(木) 10:03:49.12お湯を沸かす、みたいな話だな。
0097デフォルトの名無しさん
2011/08/04(木) 10:04:48.21O >>94
0098デフォルトの名無しさん
2011/08/04(木) 11:58:59.75よく見ろ
\→\\じゃなくて¥→\\だ
0099デフォルトの名無しさん
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まで
よろしくお願います!!
0100デフォルトの名無しさん
2011/08/04(木) 13:57:34.53[2] 問題文 :9,2,8,1の数字四項の組み合わせをすべて表示しなさい。
同じ数字が使われてる組み合わせはNGで表示しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年8月4日 15:00
010199
2011/08/04(木) 14:02:20.84ヒント
(1)2次元配列
(2)for文
(3)printf文
と書いてありました。
よければ上のヒントを入れてプログラミングを作成してほしいです。
0102デフォルトの名無しさん
2011/08/04(木) 14:21:09.22間違えました。NG前に付けて組み合わせを表示しなさいでした。
0103デフォルトの名無しさん
2011/08/04(木) 14:46:16.45こんな感じに表示して欲しいんだろ
表示は4桁数字にしたとき、小さい順or大きい順にしたほうが良いんじゃないか
小さい順例
NG:
1111
1112
1118
1119
1121
1122
.....
---------
OK:
1289
1298
....
0104デフォルトの名無しさん
2011/08/04(木) 15:21:52.82#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;
}
0105デフォルトの名無しさん
2011/08/04(木) 16:17:06.53問題文は丸々全文をそのまま貼らないと意図がわからなくなるぞ
そのまま貼っても分からないときもあるが
0106デフォルトの名無しさん
2011/08/04(木) 17:07:50.21さらっと仕様と逆の回答をするところが渋いな
まぁ >>87 みたいな馬鹿にはそれすら気が付かないだろうけど
010799
2011/08/04(木) 20:42:15.93延長しますんで、どなたかよろしくお願いいたします!
0108デフォルトの名無しさん
2011/08/04(木) 21:19:06.44http://ideone.com/rIxrq
0109デフォルトの名無しさん
2011/08/04(木) 21:27:48.300111デフォルトの名無しさん
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なんて触った事ないからわかりません><
0112デフォルトの名無しさん
2011/08/04(木) 22:30:58.94セミコロン(;)一つに収まるプログラムじゃないといけないのか?
0113デフォルトの名無しさん
2011/08/04(木) 22:38:20.58前処理でギャップをなくすほうが間違いが少なくて楽なんだがダメ?
0114デフォルトの名無しさん
2011/08/04(木) 22:43:06.900115デフォルトの名無しさん
2011/08/04(木) 22:43:11.93こんな感じかな?適当w
0116デフォルトの名無しさん
2011/08/04(木) 22:43:24.32Perl embedなんか使ってやる方法もあることはあるんだろうけど、指定ライブラリを使わんことには課題こなしたことにはならんのだろうな。
0117デフォルトの名無しさん
2011/08/04(木) 22:44:28.320118デフォルトの名無しさん
2011/08/04(木) 22:50:18.03>>115 が妥当じゃないかな。
0119デフォルトの名無しさん
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分まで
よろしくお願います!!
0120デフォルトの名無しさん
2011/08/04(木) 23:02:37.460121デフォルトの名無しさん
2011/08/04(木) 23:14:04.91ごめんなさい!
わかる方いませんか?
0122デフォルトの名無しさん
2011/08/04(木) 23:16:23.150123デフォルトの名無しさん
2011/08/04(木) 23:21:10.92問題の意味もわかりません。
だから誰か助けてくれないかなと思いまして
0124デフォルトの名無しさん
2011/08/04(木) 23:23:15.390125111
2011/08/04(木) 23:30:41.97#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;
}
}
0126デフォルトの名無しさん
2011/08/04(木) 23:33:43.280127デフォルトの名無しさん
2011/08/04(木) 23:36:41.17意味が分からんけどそろばんで頑張れ
0128デフォルトの名無しさん
2011/08/04(木) 23:42:17.09[と]はいらないんじゃね
C-*G-*U-*U
まああっても無くても意味は変わらんけど
0129デフォルトの名無しさん
2011/08/04(木) 23:47:25.76いや>>115は間違ってるだろw
0130デフォルトの名無しさん
2011/08/04(木) 23:48:22.94そんなのを依頼するなよ
同じようなのはたくさんネットに転がっているから、だれもやらないよ
http://www6.atwiki.jp/c-cpp_homework/pages/23.html
をおまえの連立連立方程式の値に変えろ
0131111
2011/08/04(木) 23:55:54.19検索配列を直接打ち込むのではなく、
string x = "GCUU";
としたうえで正規表現を作成するにはどうすれば良いのでしょうか?つまり
sregex pattern = sregex::compile("x[0]-*x[1]-*x[2]-*x[3]");
こんな感じにしたいのですが、うまくいきません。
0132デフォルトの名無しさん
2011/08/05(金) 00:01:24.35char buff[256]; //十分なサイズ
sprintf(buff, "%c-*%c-*%c-*%c", x[0], x[1], x[2], x[3]);
sregex pattern = sregex::compile(buff);
こーいう感じで。ただ、それがホントに必要なのかどうか考えたほうが良いと思う。
0133111
2011/08/05(金) 00:08:14.58うおおー、できました!ありがとうございます!
検索対象が一つでなく複数のときに、for文で回したいなーと思っていたのです。
0134デフォルトの名無しさん
2011/08/05(金) 00:28:32.70美男ですね。
しかし、私のパソコンにはプログラミングのソフトが入ってないため
確認できないっす。。。
さらにネットに繋がってないため、XPERIAの画面見ながらひたすら打ってます!
0135デフォルトの名無しさん
2011/08/05(金) 06:14:13.610136デフォルトの名無しさん
2011/08/05(金) 22:51:55.69[2] 問題文(含コード&リンク):xwindowを用いずに、キーボードのpush, releaseを検出する汎用関数を作成せよ。
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限: 2011年8月10日
[5] その他の制限: なし
0137デフォルトの名無しさん
2011/08/06(土) 03:14:36.16http://hibari.2ch.net/test/read.cgi/tech/1309527259/143
0138デフォルトの名無しさん
2011/08/06(土) 04:38:03.51http://hibari.2ch.net/test/read.cgi/tech/1309527259/144
0139 ◆1XGvh/OSVY
2011/08/07(日) 11:28:34.96[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]
0140 ◆1XGvh/OSVY
2011/08/07(日) 11:31:04.59#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]);
}
0141 ◆1XGvh/OSVY
2011/08/07(日) 11:33:03.60for (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));
}
0142 ◆1XGvh/OSVY
2011/08/07(日) 11:36:29.70void 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;
}
満点をとらなければいけなくこれで大丈夫でしょうか・・
0143デフォルトの名無しさん
2011/08/07(日) 13:07:24.74[2] 問題文(含コード&リンク):数値(1~100)を入力し、入力された数の
平均、標準偏差、最大値、最小値を求めるプログラムを作りなさい。
[3] 環境
[3.1] OS:MacOS X
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: ([2011年8月7日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0144デフォルトの名無しさん
2011/08/08(月) 03:45:23.63http://hibari.2ch.net/test/read.cgi/tech/1309048597/937あたりに夢中のようです。:-)
いや、それよりもあれほどいた粘着様が >>137, >>138 のようなことがあっても、きれいさっぱり消えてしまったのが不思議なんですが。
0146デフォルトの名無しさん
2011/08/08(月) 13:50:58.410147デフォルトの名無しさん
2011/08/08(月) 17:23:33.35QZの神経のずぶとさは大物政治家を超えたな
ある意味尊敬する
0148デフォルトの名無しさん
2011/08/08(月) 17:31:48.370149デフォルトの名無しさん
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] その他の制限: 特にないです。
0150デフォルトの名無しさん
2011/08/09(火) 14:37:21.510151デフォルトの名無しさん
2011/08/09(火) 14:44:26.310152デフォルトの名無しさん
2011/08/09(火) 14:52:44.60GAで全件列挙できるのか?
0153デフォルトの名無しさん
2011/08/09(火) 15:43:07.050154151
2011/08/09(火) 16:09:01.27ちょっと考えたわけだが
正直まだわかっとらん
ちなみにQZじゃねーから
0155デフォルトの名無しさん
2011/08/09(火) 16:11:31.76と思うとドツボに嵌るとみた
0156151
2011/08/09(火) 16:16:44.44すまん
0157デフォルトの名無しさん
2011/08/09(火) 16:32:26.480158デフォルトの名無しさん
2011/08/09(火) 16:33:44.830159デフォルトの名無しさん
2011/08/09(火) 16:38:32.6312*8-8-8 が収めるべきマス数
0160デフォルトの名無しさん
2011/08/09(火) 20:17:08.13一辺の形状はこんな風に飛び地になるのもあり?
□□□□□□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□■□□□■□□□
■□□□□□□□□□□□
0161デフォルトの名無しさん
2011/08/09(火) 20:17:42.75○ 一片
0162デフォルトの名無しさん
2011/08/09(火) 21:03:57.900163デフォルトの名無しさん
2011/08/09(火) 21:38:01.310164デフォルトの名無しさん
2011/08/09(火) 21:54:07.01「飛び地になる」というのが良くイメージ出来ないのですが、
多分駄目です。
同じ形状の断片が4つ出来なくてはいけないです。
0165デフォルトの名無しさん
2011/08/09(火) 23:28:17.63もし何も無いところからこの宿題出されても
数日じゃ解ける奴あんまおらんのでは
0166デフォルトの名無しさん
2011/08/09(火) 23:29:54.15[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
0167デフォルトの名無しさん
2011/08/10(水) 01:08:39.340168デフォルトの名無しさん
2011/08/10(水) 01:13:40.15真面目に答えてやれよ
0169デフォルトの名無しさん
2011/08/10(水) 01:19:20.780170デフォルトの名無しさん
2011/08/10(水) 01:36:49.04>Line 75: error: 'OneYear_C' was not declared in this scope
そんなに難しい英語じゃないんだから読もうとしてくれ
0171>>166
2011/08/10(水) 01:40:09.86宣言されていないとありますが、関数の呼び出しはしています
どうしてか理由を教えてください
0172デフォルトの名無しさん
2011/08/10(水) 01:41:18.91・プロトタイプ宣言を追加。
> 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];
0173デフォルトの名無しさん
2011/08/10(水) 01:59:48.97簡単に言うと、コンパイラが>>166のコードを上から見ていったときに、75行目で
OneYear = OneYear_C(&Data);
という記述を見つけるわけだが、1行目から75行目までの時点では'OneYear_C'とは何か、ということに関しては一言も触れられていない。
よってコンパイラは上の記述の意味が分からず、エラーを吐いた。
これは、OneYear_C関数を使う前に定義しておくか、
>>172のようにプロトタイプ宣言を追加することで解決できる。
0174デフォルトの名無しさん
2011/08/10(水) 02:01:09.93解としてこんなのならOK?
□□□□□□□□■■■■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□□■■
□□□□□□□□□□■■
□□□□□□□□□□□□
□□□□□□□□■■■■
□□□□□□□□□□□■
□□□□□□■■■■□■
□□□□□□□□□■□■
□□□□□□□□□■□■
□□□□□□□□□■■■
□□□□□□□□□■■■
□□□□□□□□□□□□
0175デフォルトの名無しさん
2011/08/10(水) 02:07:55.83ありがとうございます
http://codepad.org/BXg36OYyに修正しました
ただ今度は、error C2664: 'CC_Charge' : 1 番目の引数を 'plog' から 'int' に変換できません
というエラーが出てきました
これは変換が上手くできてないからですか
教えてください
0176>>166
2011/08/10(水) 02:31:58.36>>175は、http://codepad.org/IVns5a8Dに修正したらできました
0178デフォルトの名無しさん
2011/08/10(水) 03:21:09.88はい。okです。
すばらしいです。
0179デフォルトの名無しさん
2011/08/10(水) 18:38:57.15そういえば昔 Cマガ電脳クラブに似たような問題があったような
3日かそこらじゃ解けないよ
0180174
2011/08/10(水) 20:02:40.95上下左右の隣接を条件にすればシングルスレッド90分で走査が終わる
ハッシュに登録された数は枝刈りありで445万強
メモリ節約してメインメモリ内で収まるようにしてやれば早く済むよ
0181デフォルトの名無しさん
2011/08/11(木) 14:52:47.84[2] 3次元空間を電荷(100個)が相互作用で動くシミュレーションプログラムを作成せよ。働く力は引力、斥力。
[3.1] Windows7
[3.2] Visual Studio2008
[3.3] C言語
[4] 2011年8月17日
[5] その他制限無
よろしくお願いします。
0182デフォルトの名無しさん
2011/08/11(木) 14:59:08.43距離がゼロ(完全に重なる)になるぞ
0183デフォルトの名無しさん
2011/08/11(木) 15:00:19.84ずいぶん頭の悪い講師に当たったな。
同情するよ。
出題のセンスが悪すぎる。
これ、どうやって採点する気なんだろう?
0184デフォルトの名無しさん
2011/08/11(木) 15:17:41.91そもそも電荷じゃなくて荷電粒子だろ
0185デフォルトの名無しさん
2011/08/11(木) 15:24:35.95なんの分野の人ですかあなた
0186デフォルトの名無しさん
2011/08/11(木) 15:28:34.89電荷とだけ言われて解けるわけ無いんだよ
問題文全部書けよ
0187デフォルトの名無しさん
2011/08/11(木) 15:32:34.90まぁまぁ。悪いのはあくまでも出題者だから。
0188デフォルトの名無しさん
2011/08/11(木) 15:38:18.91>電荷(でんか、電気量)は、素粒子が持つ性質の1つである。電荷の量を電荷量という。
>電荷量のことを単に電荷と呼ぶこともある。電荷を持つ粒子のことを単に電荷と呼ぶこともある。
()内に100個ってあるんだから意味を取り違えることはないと思うんだが
0189デフォルトの名無しさん
2011/08/11(木) 15:44:06.92その情報で解けるようになったと思うの?
もっと調べてまっとうな問題文にしてくれ
0190デフォルトの名無しさん
2011/08/11(木) 15:48:48.360191デフォルトの名無しさん
2011/08/11(木) 16:59:32.600192デフォルトの名無しさん
2011/08/11(木) 19:06:06.72【モリタポ有償】C/C++/Java の問題を片付けます(3)
http://hibari.2ch.net/test/read.cgi/tech/1309527259/
0193デフォルトの名無しさん
2011/08/11(木) 19:10:04.39[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] その他の制限: どうすればよいのか全然分かりません。宜しくお願いします。
0194デフォルトの名無しさん
2011/08/11(木) 19:14:34.08桁数が変わらないことから一番上の桁は1
一番下の桁は6,7,8,9のいずれか
おれにできるのはここまでだな
0195デフォルトの名無しさん
2011/08/11(木) 19:18:39.110196デフォルトの名無しさん
2011/08/11(木) 19:37:23.791 〜 10^12 の範囲には無い
0197デフォルトの名無しさん
2011/08/11(木) 19:58:25.766で開始の場合
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を逆から出力。
0198デフォルトの名無しさん
2011/08/11(木) 20:01:51.270199デフォルトの名無しさん
2011/08/11(木) 20:09:22.42すげー
0200デフォルトの名無しさん
2011/08/11(木) 20:12:31.89出力が不恰好だが、書いてみた。
http://ideone.com/IfyaC
0201デフォルトの名無しさん
2011/08/11(木) 20:15:48.10まじで最近の俺の頭終わってるな・・・
0202デフォルトの名無しさん
2011/08/11(木) 20:31:09.900203デフォルトの名無しさん
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;
}
0204デフォルトの名無しさん
2011/08/11(木) 20:35:34.31これもすごい。
0205デフォルトの名無しさん
2011/08/11(木) 20:41:12.50有り難う御座います!
でも、なぜそれでできるのか分かりません。
0206デフォルトの名無しさん
2011/08/11(木) 20:57:25.22例えば 205 128 * 4 = 820 512
0207デフォルトの名無しさん
2011/08/11(木) 21:07:06.900208デフォルトの名無しさん
2011/08/11(木) 21:14:42.65元の数をn倍すると最上位桁はnになる
→元の数の最下位桁はnである
→元の数をn倍すると最下位桁は「n*nの1の位の数」([※1]とする)になる
→元の数の最下位1つ上の桁は[※1]である
→元の数をn倍すると最下位1つ上の桁は「n*nの10の位(繰り上がってきた)と[※1]*[※1]の1の位を足した数」([※2]とする)になる
→元の数の最下位2つ上の数は[※2]である
→・・・
繰り返すと、前提を満たせる1が出てくるのでそこで打ち切れば答えになる
0209デフォルトの名無しさん
2011/08/11(木) 21:16:57.921016949152542372881355932203389830508474576271186440677966
1186440677966101694915254237288135593220338983050847457627
1355932203389830508474576271186440677966101694915254237288
1525423728813559322033898305084745762711864406779661016949
の4つがあるし、下一桁がかける数から9まではある
0210デフォルトの名無しさん
2011/08/11(木) 21:26:20.70#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;
}
0211デフォルトの名無しさん
2011/08/11(木) 21:53:49.17解説ありがとう御座いました。
0212デフォルトの名無しさん
2011/08/12(金) 15:08:34.00[2] 重力多体問題のシミュレーションプログラムを作成せよ。質点の数は3<x<200で任意。
式も一般的に使われているようなものを使用する。空間はxyz軸で作成する。質点の質量はランダム生成。
[3.1] Windows7
[3.2] コンパイラバージョン:わかりません
[3.3] C
[4] 2011年8月20日
[5] 式はWikipediaに記載されている式で大丈夫とのことでした。
よろしくお願いします。
0213デフォルトの名無しさん
2011/08/12(金) 16:33:50.33終わるまで10時間くらいかかるかも
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/165.txt
0215デフォルトの名無しさん
2011/08/12(金) 17:15:46.464453781 で終わることになってるよ
0216デフォルトの名無しさん
2011/08/12(金) 17:22:22.89分かりました。気長に待ちます。
0217デフォルトの名無しさん
2011/08/12(金) 19:26:44.82初期値を変えると早くなるようだ
>>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 で終了
0218デフォルトの名無しさん
2011/08/14(日) 09:27:38.45夏休みだからか
0219デフォルトの名無しさん
2011/08/14(日) 09:55:59.71【モリタポ有償】C/C++/Java の問題を片付けます(4)
http://hibari.2ch.net/test/read.cgi/tech/1313183984/
宣伝乙。市ね
0221デフォルトの名無しさん
2011/08/14(日) 15:06:34.55実生活でもこれくらいずぶとければいいのですけれどもね。:-)
0223デフォルトの名無しさん
2011/08/16(火) 14:51:29.98[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] その他の制限: 制限なし
よろしくお願いします。
0224デフォルトの名無しさん
2011/08/16(火) 15:16:27.540225デフォルトの名無しさん
2011/08/16(火) 16:03:40.97http://ideone.com/nM3N4
SA法っていうの初めて聞いたから
もしかしたら間違ってるかも?
0226デフォルトの名無しさん
2011/08/16(火) 17:26:20.21夏休みは宿題があるはずなのに
遊び呆けてるギリギリに泣きついてくるパターンか・・・
さっさと問題ばら撒いて対応時期分散させれば
回答漏れないだろうに
0227デフォルトの名無しさん
2011/08/16(火) 17:45:29.100228デフォルトの名無しさん
2011/08/16(火) 18:52:51.540229デフォルトの名無しさん
2011/08/16(火) 18:59:40.160230デフォルトの名無しさん
2011/08/16(火) 19:06:16.00f(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となる。
よろしくお願いします。
0231デフォルトの名無しさん
2011/08/16(火) 19:17:11.59しかもそれがないと回答できない類のやつ
なに考えてるんだよほんとに
0232デフォルトの名無しさん
2011/08/16(火) 19:49:37.560233デフォルトの名無しさん
2011/08/16(火) 20:26:23.770234デフォルトの名無しさん
2011/08/16(火) 20:36:42.39ρをひとつでも-∞にするとf(x,y)が∞になって問題にならない気がするんだが
本当に条件はそれだけか
0235デフォルトの名無しさん
2011/08/16(火) 20:38:17.57数式エディタで作って画像貼ったほうがよさげ
0236デフォルトの名無しさん
2011/08/16(火) 21:47:35.96条件はこれだけですが…
0237デフォルトの名無しさん
2011/08/16(火) 21:50:34.57プログラムの概略がほしかったので数式までは載せませんでした
すいません。
>>225 さんのを参考にして作ってみます。
ありがとうございました。
0238デフォルトの名無しさん
2011/08/16(火) 22:41:31.20いまいち検索にひっかからない
検索の仕方がわるいのかな
0239デフォルトの名無しさん
2011/08/16(火) 22:45:35.84C言語 ファイル出力で検索したらいいんじゃないの
0240デフォルトの名無しさん
2011/08/17(水) 03:25:32.15Unix なら syslog とか syslogd で検索したら?
0241デフォルトの名無しさん
2011/08/17(水) 12:01:13.14バッファは知らん
0242デフォルトの名無しさん
2011/08/18(木) 09:54:36.67[2] 問題文(含コード&リンク): dxsdk_feb2007でインベーダーゲームを作る。
まずタイトル画面の表示スペースキーが押されたらゲーム開始。
自機が消滅→ゲームオーバー画面表示
敵が消滅→クリア画面の表示
[3] 環境
[3.1] OS: (Windows7)
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: ([2011年8月20日13:00まで]
[5] その他の制限:DirectXを習いはじめの初心者です。コメントお願いします。
0243デフォルトの名無しさん
2011/08/18(木) 11:28:10.13ほんとうにそれでいいのか?
0244デフォルトの名無しさん
2011/08/18(木) 15:09:36.60大丈夫です。よろしくお願いします。
logger
0246デフォルトの名無しさん
2011/08/18(木) 23:13:29.770247デフォルトの名無しさん
2011/08/19(金) 02:43:00.680248デフォルトの名無しさん
2011/08/19(金) 05:12:19.380249デフォルトの名無しさん
2011/08/19(金) 07:25:41.880250デフォルトの名無しさん
2011/08/19(金) 11:29:47.680251デフォルトの名無しさん
2011/08/19(金) 11:52:48.23また例の100%説明されないと何もできない人か
0252デフォルトの名無しさん
2011/08/19(金) 12:04:39.92顧客との調整みたいにレビューでフィードバックがあるわけじゃないのに
仕様が提示されてない部分もエスパーしてできるとかおまえすごいな
2chにいないで仕事しろよ
0253デフォルトの名無しさん
2011/08/19(金) 13:08:12.37>>250のような案を出すのかw
0254デフォルトの名無しさん
2011/08/19(金) 13:32:11.35「インベーダーゲーム」から、ランダムではなく自機と敵機で撃ち合って弾に当たったら消滅する
という程度の仕様を想像するのはエスパーでもなんでもない
むしろできない人がいたらびっくりする・・・びっくりしたよ
もちろん正確にはそれでいいかどうかの確認は必要だが
0255デフォルトの名無しさん
2011/08/19(金) 13:46:05.80期間短いしお願いする側は横柄だし仕様は書かれてないし>>250は皮肉だろうしお前らマジレスだし
とりあえず問題文だけ満たせればいいと思うよ
0256デフォルトの名無しさん
2011/08/19(金) 13:49:20.75自機は左右にしか動けず弾は画面内に一発のみとか
敵数がでたまにUFOが横切って落とすとボーナスが貰えたりとか
シールドがあって敵以外にも自分の攻撃でも壊れたりとか
敵の弾が一列下から出てるおかげで名古屋撃ちができたりするあのゲームだろ
これほどはっきりした仕様はないな
俺は作らないけど。
0257デフォルトの名無しさん
2011/08/19(金) 14:05:10.620258デフォルトの名無しさん
2011/08/19(金) 14:18:47.24もしかしたらBASICかもなw
Cじゃ多分無理じゃね?
0259デフォルトの名無しさん
2011/08/19(金) 14:25:35.09QZ師が書いてくれるだろ
てか多分今コーディング中だろから
暫く待ったら?
0262デフォルトの名無しさん
2011/08/19(金) 17:41:40.15じゃあ、これからdirectx勉強するわ
なんですよ、そこのとこ分かってて話してます?
0264デフォルトの名無しさん
2011/08/19(金) 18:02:24.670265デフォルトの名無しさん
2011/08/19(金) 21:40:17.390267デフォルトの名無しさん
2011/08/20(土) 17:48:24.170268デフォルトの名無しさん
2011/08/20(土) 18:18:28.78[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] その他の制限: 画像にあるとおりです。お願いします。
0269デフォルトの名無しさん
2011/08/20(土) 18:20:49.32画像落ちたな
0270デフォルトの名無しさん
2011/08/20(土) 18:34:21.850271デフォルトの名無しさん
2011/08/20(土) 18:43:14.442次元配列の要素をマスに見立て、先手と後手が交互にコマを置く。
ただし、コマを反転させる処理をプログラムすることはせず、キーボードから手動入力させるものとする。
ただ表示するだけのプログラムである。このプログラムを作成し、プログラムリストと実行結果の例を提出せよ。
ヒント
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 による無限ループ)
0272デフォルトの名無しさん
2011/08/20(土) 18:55:39.870273デフォルトの名無しさん
2011/08/20(土) 19:16:00.390274デフォルトの名無しさん
2011/08/20(土) 19:47:30.450275デフォルトの名無しさん
2011/08/20(土) 21:08:15.11先手と後手との切り替えはコマンド入力?
0276デフォルトの名無しさん
2011/08/21(日) 01:41:56.54#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);
}
0277デフォルトの名無しさん
2011/08/21(日) 01:42:36.94int 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;
}
0278デフォルトの名無しさん
2011/08/21(日) 23:19:35.100279デフォルトの名無しさん
2011/08/22(月) 00:48:46.10[2] 問題文(含コード&リンク):分割統治法を用いて、n人の集団の中から、所持金が頭から数えてm番目の人を見つける
名前、所持金、順番(m)を入力し、所持金がm番目の人の名前を出力する
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2011年8月31日
[5] その他の制限:
0280デフォルトの名無しさん
2011/08/22(月) 00:55:55.49#include <stdlib.h>
#include <string.h>
#include <time.h>
//対象者の名前と所持金と表す構造体
typedef struct {
char name[10]; //対象者の名前
int money; //所持金
} OBJECT;
0281デフォルトの名無しさん
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; //配列の初期化
0282デフォルトの名無しさん
2011/08/22(月) 02:08:27.24array = (OBJECT *)malloc(sizeof(OBJECT) * size);
// 数値データの読み込み
//array[num]にはOBJECT型の構造体が格納される
scanf("%d\n", &order);
0283デフォルトの名無しさん
2011/08/22(月) 02:13:28.96num++;
// 配列のサイズが足りない場合, 2倍に拡大
if (num == size) {
size *= 2;
array = (OBJECT *)realloc(array, sizeof(OBJECT) * size);
}
}
0284デフォルトの名無しさん
2011/08/22(月) 02:22:57.42printf("%d\n", order);
for(i=0; i < num; i++){
printf("%s %d\n", array[i].name, array[i].money);
}
///////////////////////////////////////////////////////////////////
/// ///
/// 作成部分 ///
/// ///
///////////////////////////////////////////////////////////////////
free(array);
return 0;
}
0285デフォルトの名無しさん
2011/08/22(月) 02:37:38.74data.txtの中身は
4
11a001 10
11a001 60
11a001 50
11a001 80
11a001 100
11a001 40
0286デフォルトの名無しさん
2011/08/22(月) 02:41:46.7111a001 10
11a002 60
11a003 50
11a004 80
11a005 100
11a006 40
間違えました。
よろしくお願いします。
0287デフォルトの名無しさん
2011/08/23(火) 01:21:43.540288デフォルトの名無しさん
2011/08/23(火) 02:43:01.93添え字mで参照すれば分割統治法使ったことになるよね
そういう問題?
0289デフォルトの名無しさん
2011/08/23(火) 03:16:25.19分割統治を適用する際に、m番目が分割したどちら側にあるかは決定できるので
m番目が無い側についてはソートを続ける必要がない
0290デフォルトの名無しさん
2011/08/23(火) 14:13:52.39[2] 問題文(含コード&リンク):ナップサック問題 下記のプログラムを改良して、できるだけ荷物の価値の合計が大きく速いものにしてください。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:8月31日
[5] その他の制限:mondai(int n)を必ず使用すること
0291デフォルトの名無しさん
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;//重量
}
}
0292デフォルトの名無しさん
2011/08/23(火) 14:17:34.68if(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");
0293デフォルトの名無しさん
2011/08/23(火) 14:18:02.54oldTime=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);//新しい荷物の選択方法に変える
0294デフォルトの名無しさん
2011/08/23(火) 14:18:41.12if(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;
}
0295デフォルトの名無しさん
2011/08/23(火) 15:23:36.340296デフォルトの名無しさん
2011/08/23(火) 16:10:01.37やり方がわからなくて
0297デフォルトの名無しさん
2011/08/23(火) 17:56:31.900298デフォルトの名無しさん
2011/08/23(火) 20:00:24.91URL貼ってもらっていいですか?
0299デフォルトの名無しさん
2011/08/23(火) 23:53:32.24確かにそうだな勉強になった
0300デフォルトの名無しさん
2011/08/25(木) 03:21:10.72※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
0301デフォルトの名無しさん
2011/08/25(木) 14:59:46.07このコードで、どうして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;
}
0302デフォルトの名無しさん
2011/08/25(木) 15:30:02.03printf("%d \n", b); /* (2) */
printf に渡ってるのは int に拡張された値
(1) は 元値 unsigned で 255 ⇒ int に拡張で 255 を渡す
(2) は 元値 signed で -1 ⇒ int に拡張で -1 を渡す
0303301
2011/08/25(木) 16:18:33.39すみません、printfの使い方も問題ありました。
要は、cが1で返ってくるか、0で返ってくるかなんですが、どうして0で返ってくるのかが疑問でした。
そこで、aとbを表示してみたら、値が違ったと言う流れです。
ifの判定で、符号有り型の0xFFと符号無し型の0xFFが異なるということは
ifって2進数で比較しているわけではないんでしょうか?
符号の有無は違いますが、バイトサイズとビットの並びも同じだと思っていました。
0304デフォルトの名無しさん
2011/08/25(木) 16:22:31.43C文は文章なので、文脈があるんだよ
文脈が嫌いならアセンブラでも使ってくれ
0306デフォルトの名無しさん
2011/08/25(木) 16:59:40.41printf("%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);
>>302 のとおりですが、対応する規格を挙げておきましょう。
キーワード: Integer Promotion あるいは昔は Integral Promotion と呼ばれていました。
ISO/IEC 9899:1999 6.3.1.1.2
printf() のような可変長引数関数やプロトタイプのない関数の引数に対する暗黙の変換については、
ISO/IEC 9899:1999 6.5.2.2.6
0308デフォルトの名無しさん
2011/08/25(木) 22:32:45.15printf() ってfomat 文字列に従って型を決めるだろ、暗黙の変換なんて有ったっけ?
0309デフォルトの名無しさん
2011/08/25(木) 22:37:21.37○○だったっけ?
っていう奴は嫌いだ
それが口癖の知人らがクズだから
同類な気がしてならない
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/でありました。
うんこよばわりされてげんなりしました、まあべつにいいですけど。
0311デフォルトの名無しさん
2011/08/25(木) 23:25:54.55なんという言いがかり
0312デフォルトの名無しさん
2011/08/25(木) 23:52:57.37#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
0313デフォルトの名無しさん
2011/08/26(金) 04:13:11.62処理系の裁定でintにキャストして扱われる。
0314デフォルトの名無しさん
2011/08/26(金) 05:18:53.330315!ninjya
2011/08/26(金) 13:17:42.200316デフォルトの名無しさん
2011/08/28(日) 01:22:29.13st=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);
0317デフォルトの名無しさん
2011/08/30(火) 11:49:37.56今ニュートン法やSD法などを勉強しながらjavaを使ったプログラムを勉強しているのですが、そういった解析に関するプログラムについての質問も答えられる方はおられますか?
もしよければ力をかしていただきたいです。
ニュートン法は方程式の解法の一つであることはわかるのですが、SD 法ってなんですか?心理学の方面の SD 法のことですか?
あと java なら http://hibari.2ch.net/test/read.cgi/tech/1312958339/
0320デフォルトの名無しさん
2011/08/30(火) 12:52:20.47ごめんなさいcかjavaでプログラムしたいんです。
抜けていました。
SD法というのも解析の方法としてあるものになります。
書き込み慣れていないため返すの遅くなりました。
申し訳ありません。
0321デフォルトの名無しさん
2011/08/30(火) 13:00:28.34>>1読んだ?
ここは宿題スレだよ
0322デフォルトの名無しさん
2011/08/30(火) 13:16:13.38わかりました。
機会見て問題書かせていただきます。
0323デフォルトの名無しさん
2011/08/30(火) 16:10:21.140324デフォルトの名無しさん
2011/08/30(火) 16:34:38.37アルゴリズムの指定は?
0325デフォルトの名無しさん
2011/08/30(火) 16:46:42.22と同じです。
0327デフォルトの名無しさん
2011/08/30(火) 17:17:18.39それは分かってます
0328デフォルトの名無しさん
2011/08/30(火) 18:28:24.970329デフォルトの名無しさん
2011/08/30(火) 19:01:19.93すいません。gaって何ですか?
0330デフォルトの名無しさん
2011/08/30(火) 19:13:46.510331デフォルトの名無しさん
2011/08/31(水) 01:29:24.050332デフォルトの名無しさん
2011/08/31(水) 19:42:06.18#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
で合ってる?
0333Perl忍者
2011/08/31(水) 20:51:37.480334290
2011/08/31(水) 23:45:07.930335デフォルトの名無しさん
2011/09/02(金) 01:16:12.98main 関数より前にこれを書く
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);
0336デフォルトの名無しさん
2011/09/02(金) 10:03:55.13どう改良したか教えてくれませんか?
0337デフォルトの名無しさん
2011/09/02(金) 12:18:29.81元のプログラムがどういう動作をしてるのか説明してみて
あまり役に立たないコメントと同じ内容はいらない
0338!ninja
2011/09/02(金) 12:52:54.441 考えるC
2 整数m(mが2以上)を入力し、m以下の素数を全て表示するプログラムを作れ。
3 環境はlinux gcc C言語です
4期限は今日の夕方まで
5進んだところは
配列はまだやっていません
総合問題みたいらしいです
ぐぐればすぐサンプルがあるらしいのですが、それを使わずにかけといっていました
(簡単にかけるらしいので)
よろしくお願いします
0339デフォルトの名無しさん
2011/09/02(金) 12:56:10.67ググってないからセーフってかw
お前いらないよ
0340!ninja
2011/09/02(金) 12:58:31.072 2つの整数を入力して、その2つの最大公約数を求めよ
3環境 は Linux gcc C言語です
4期限は 明日までです
5 配列には入っていません
ならったところまでの総合問題です
初心者なので、簡略化しないで頂きたいです お願いします
0341デフォルトの名無しさん
2011/09/02(金) 13:00:41.050342デフォルトの名無しさん
2011/09/02(金) 13:01:47.82このスレで言う事じゃないかもしれんが。
0343デフォルトの名無しさん
2011/09/02(金) 13:06:50.31と名付けた人は今頃泣いているぞ
0344デフォルトの名無しさん
2011/09/02(金) 13:11:58.10i,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);}}
0345デフォルトの名無しさん
2011/09/02(金) 13:22:35.043bytes縮めておいた
j,m;main(i){scanf("%d",&m);for(;i++<m;){for(j=1;++j<i&&i%j;);if(j>=i)printf("%d\n",i);}}
0346デフォルトの名無しさん
2011/09/02(金) 13:27:09.410347デフォルトの名無しさん
2011/09/02(金) 18:10:28.24改良というより、作り直し
パッと見だけど
0348デフォルトの名無しさん
2011/09/03(土) 02:02:08.13x,y;main(z){scanf("%d%d",&x,&y);for(;y=x%(z=y);x=z);printf("%d\n",z);}
0349デフォルトの名無しさん
2011/09/03(土) 03:11:28.370350デフォルトの名無しさん
2011/09/03(土) 13:09:36.78[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ヶ月ほどなので砕けた形
で書いていただいてもらえると嬉しいです
お願いします
0351デフォルトの名無しさん
2011/09/03(土) 13:36:37.49int 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;
}
0352デフォルトの名無しさん
2011/09/03(土) 13:38:15.28int 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 は例外)
0354デフォルトの名無しさん
2011/09/03(土) 19:58:23.17以下の条件で売り上げ集計プログラムを作りなさい。
�@クラスを用いる(困難なら構造体で可)
�A店舗毎に名前・売り上げを入力し、平均、標準偏差を計算
�B売り上げ毎に店舗を並び替える
�C店舗数は任意。
�D並び替えは簡単でよい。店舗数が少ない場合、単純に比較するだけでよい。
環境:windows C++
0355354
2011/09/03(土) 20:11:23.50[1] 授業単元:プログラム設計
[2] 問題文:354の通り
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: visual c++ (当方2008を使用していますが、visualc++ならそれ以外でも結構です。)
[3.3] 言語: c++
[4] 期限: 23年9月18日
[5] その他の制限: 特にありません。上記の事項だけに沿って御願いします。
0356デフォルトの名無しさん
2011/09/03(土) 20:14:03.33今すぐ大学を辞めて、
その辺の適当な文系大学に入りなおしなさい。
お前みたいな馬鹿のせいで日本はどんどん落ちぶれる。
お前みたいなゴミがSIerに研究室あたりのコネで就職するんだけど、
プログラムのプもできないのにSEで客先にいくわけよ。
この循環を断ち切れ。
0357デフォルトの名無しさん
2011/09/03(土) 20:36:54.740358!jinja
2011/09/03(土) 20:37:29.190359 ◆1oR6ttynTU
2011/09/03(土) 20:54:56.07>>358
店舗名ということです。
>>356
至らない点ばかりですみません。
しかしそこをどうかご教授ください。
0360!jinja
2011/09/03(土) 21:21:03.230361デフォルトの名無しさん
2011/09/03(土) 21:24:46.45ご教授下さいってんならまず自分で作成した分をあげろ
話はそれからだ
0362 ◆1oR6ttynTU
2011/09/03(土) 21:28:07.31問題文には「売り上げ集計プログラム」とありますが、
良く読むと確かに「店舗別売り上げ」の様な気がします。
ニュアンスの通り「店舗別売り上げ」のつもりで御願いします。
0363 ◆1oR6ttynTU
2011/09/04(日) 00:10:08.49#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;
0364 ◆1oR6ttynTU
2011/09/04(日) 00:11:16.78printf("店舗名を入力してください\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;
}
ここまで(標準偏差)まで出せました。
この結果を売り上げ順に並び替えるにはどうすればいいでしょうか
0365デフォルトの名無しさん
2011/09/04(日) 00:12:41.370367デフォルトの名無しさん
2011/09/04(日) 00:52:32.99(m+n)*(m-n+1)/2
0368デフォルトの名無しさん
2011/09/04(日) 02:18:23.35http://codepad.org/ZU2NyqVI
0369 ◆1oR6ttynTU
2011/09/04(日) 03:14:24.03ありがとうございます!
しかし、そのプログラムでコンパイルしてみたところ、
2つ目の店舗の売上高を入力したところでなぜか強制終了
してしまいました。
そのプログラムにミスがあるとは思えないし、思いたくもないのですが、
自分のコンパイラに不都合があると言うことでしょうか?
0370デフォルトの名無しさん
2011/09/04(日) 04:01:27.81C:\>type in.txt
何を入力してるのか?
0371デフォルトの名無しさん
2011/09/04(日) 05:03:23.87しょういうこと
0372デフォルトの名無しさん
2011/09/04(日) 13:52:31.20???
0373デフォルトの名無しさん
2011/09/04(日) 18:59:53.060374デフォルトの名無しさん
2011/09/04(日) 19:08:36.22scanf("%s", &t->name); がダメなのではw
あと、
for(i=0; i<N; i++,t++)
hensa1 += (pow(ave-t->sale, 2));
をやる前にtをよろしくやっとけ
0375デフォルトの名無しさん
2011/09/04(日) 19:46:45.180376デフォルトの名無しさん
2011/09/04(日) 21:44:14.670378デフォルトの名無しさん
2011/09/04(日) 22:29:13.23結果を定義しないとわからん
0379!ninja
2011/09/04(日) 22:58:52.51最終的には合計(Σ)を出したいのですが、
sumに値を代入していって、最後に
sumを出力、という形にできるので
しょうか?
mが2でnが4だとしたら、9がでるように
したいのですが、最小のループでsumに
2が格納されて、次に2+3がsumに格納されてしまうのではないのでしょうか?
0380デフォルトの名無しさん
2011/09/04(日) 23:15:46.520381デフォルトの名無しさん
2011/09/04(日) 23:16:24.19しているのが 351 だろw
0383デフォルトの名無しさん
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;
}
これで不満足なら知らん
0384デフォルトの名無しさん
2011/09/05(月) 02:28:29.51j,m;main(){scanf("%d",&m);for(;m;m--){for(j=m;--j&&m%j;);if(j==1)printf("%d¥n",m);}}
0385デフォルトの名無しさん
2011/09/05(月) 11:11:16.46nを10進数としたときの,各桁の総和を*cに格納し,
桁数を戻り値として返す関数を作成せよ
int dec(int n, int *c)
{
int k = 0;
for(; n > 0; k++){
*c += n % 10;
n /= 10;
}
return k;
}
形は出来ているんだけど、*cをどうすればいいのかわからない
0386デフォルトの名無しさん
2011/09/05(月) 11:26:35.210387デフォルトの名無しさん
2011/09/05(月) 11:34:20.440388!nonja
2011/09/05(月) 12:13:49.20int 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;
}
0389デフォルトの名無しさん
2011/09/05(月) 12:16:41.74ほんで戻り値として返すなら*cは余計な引数。
0390389
2011/09/05(月) 12:17:39.88無視してくんろ
0391デフォルトの名無しさん
2011/09/05(月) 14:00:01.39#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;
}
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になってしまうのですが、どうすればよいのでしょうか
0393デフォルトの名無しさん
2011/09/06(火) 17:16:54.03ループ中 pro は pro に対する掛け算しかしてないから ずーーと 0 だわな
0394デフォルトの名無しさん
2011/09/06(火) 17:36:03.56二つの値を入れて
シグマの掛け算verをしたいのですが
足し算にするとうまくいくのに掛け算だとうまくいかないので
どうすればよいのかなと、、
0396デフォルトの名無しさん
2011/09/06(火) 17:42:33.871*a*(a+1)*(a+2)* ... *(b-1)*b = a*(a+1)*(a+2)* ... *(b-1)*b
0397デフォルトの名無しさん
2011/09/06(火) 17:42:50.86案1)
pro の初期値を 0 から 1 に変える
案2)
pro の初期値を a とし、ループは a+1 から回す
0399デフォルトの名無しさん
2011/09/06(火) 17:49:19.01というだけの話だな
0400デフォルトの名無しさん
2011/09/06(火) 18:00:30.40ここのページの高速化ってとこの
iを2からi-1までで割りひとつも割り切れるものがないのが素数という判定法にすれば、ひとつでも割り切れるものがあらわれた時点で途中でチェックをうちきって次の数のチェックに移れるので効率的です。
ここのソースを書いていただきたい・・・
0401デフォルトの名無しさん
2011/09/06(火) 18:08:22.980402デフォルトの名無しさん
2011/09/06(火) 18:11:04.41math.hとかならってない
0403デフォルトの名無しさん
2011/09/06(火) 18:16:22.43もっとも、「ひとつでも割り切れるものがあらわれた時点で…」の部分だけを実現するのであれば不要ではあるが
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;
}
0405デフォルトの名無しさん
2011/09/06(火) 18:27:55.6410000以上の数入力したいときはどうするの?
0406デフォルトの名無しさん
2011/09/06(火) 18:37:47.230407デフォルトの名無しさん
2011/09/06(火) 18:39:40.520408デフォルトの名無しさん
2011/09/06(火) 18:54:04.490409デフォルトの名無しさん
2011/09/06(火) 18:54:47.61配列を習っていなくて
for分などは習いました
0410デフォルトの名無しさん
2011/09/06(火) 18:59:38.30素数を一つだけ求めるならsqrt使った方が早いよ
ループで毎回計算するのはありえないけどw
0411デフォルトの名無しさん
2011/09/06(火) 19:02:49.20話の流れからして入力の仕方を習ったかどうかを聞いているのだと分かれこのアンポンタン
0412デフォルトの名無しさん
2011/09/06(火) 19:10:38.7110000の入力どこでしてる
0413デフォルトの名無しさん
2011/09/06(火) 19:11:39.24いや、すいません
入力のしかた?とはなんでしょうか
0414デフォルトの名無しさん
2011/09/06(火) 19:14:28.67自分が入力した数以下の素数すべてを表示する方法を教えてください
0415デフォルトの名無しさん
2011/09/06(火) 19:14:36.20にゅう‐りょく〔ニフ‐〕【入力】
[名](スル)
2 コンピューターで、処理させる情報を入れること。インプット。「パソコンにデータを―する」⇔出力。
し‐かた【仕方】
1 物事をする方法。やり方。「掃除の―」
0416デフォルトの名無しさん
2011/09/06(火) 19:35:50.83http://www.tsg.ne.jp/TT/tsg/c/mansaku/C10.html
割り算をして商と剰余の両方を手に入れられれば、平方根をとるまでもない。
div()/ldiv() を使え。
0418デフォルトの名無しさん
2011/09/06(火) 19:44:12.39分からないくせに首つっこんでくるな
馬鹿。市ね。
0420デフォルトの名無しさん
2011/09/06(火) 20:22:43.240421デフォルトの名無しさん
2011/09/06(火) 20:25:12.77http://codepad.org/pFpfAHN7 でいいのでは?
sqrt() 使うよりもよほど速いはず。エラトステネスには負けますが。
0423デフォルトの名無しさん
2011/09/06(火) 22:28:24.61あなたの環境ではこっちの方が遅くなるの?
#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;
}
0424デフォルトの名無しさん
2011/09/07(水) 05:22:57.63for(j = 3; j * j <= i; j += 2) if(i % j == 0) ...
ってやりゃあいいのに、divとかアホとしか言いようがない
実測しました。
$ ./a.exe
2 3
423: 39
2 3
422: 54
ふーん、sqrt() の方が div() よりもはやいんですねえ。sqrt() といえども fpu の命令一発でok みたいだ。div()/ldiv() の意義はあまりないようですね。
http://codepad.org/QuhmqCWC
それもそうですね。あはは。霧
0427デフォルトの名無しさん
2011/09/07(水) 05:32:59.000428デフォルトの名無しさん
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
0429デフォルトの名無しさん
2011/09/07(水) 07:44:23.00多分 N が違う数値だよ
0430デフォルトの名無しさん
2011/09/07(水) 07:50:36.62失礼しました。再測定。
>>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
0431!nonja"nonja
2011/09/07(水) 08:17:08.33f(N)を
0432!nonja"nonja
2011/09/07(水) 08:47:37.58#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;
}
0433デフォルトの名無しさん
2011/09/07(水) 20:57:56.99http://ideone.com/h91VV
0434デフォルトの名無しさん
2011/09/07(水) 21:11:44.06>>433
sqrt(hensa/N); な
0435デフォルトの名無しさん
2011/09/08(木) 13:26:43.56いや、なんでEOFをかえしちゃうんだよっていう
しかもEOFは0で定義されてないし
0436デフォルトの名無しさん
2011/09/08(木) 17:22:50.82int 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 ;
}
ある数を入力してそれ以下の素数を出力したいのですが
コンパイルは通ったのに、
何も表示されないのですが
どうなんでしょうか
0437デフォルトの名無しさん
2011/09/08(木) 17:27:28.92どんなときに kakunou==1 になるの?
0438デフォルトの名無しさん
2011/09/08(木) 17:50:41.220439デフォルトの名無しさん
2011/09/08(木) 18:25:18.24int 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 ;
}
0441デフォルトの名無しさん
2011/09/08(木) 18:41:17.667行目の頭のforが落ちている。これを補充するとコンパイルは確かに通る。
ただし、5行目の for(a=0;a>=n;a++){
はaを0に初期化して、aがn以上の間繰り返すの意味だから、
いきなり、このforループを終了してしまう。その時のkakunouは0だから、
printf()は実行されない。
0442デフォルトの名無しさん
2011/09/08(木) 19:35:15.37#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;
}
0443デフォルトの名無しさん
2011/09/09(金) 11:08:39.715行目のaの不等号を逆にしたのに、
値がでません、
0444デフォルトの名無しさん
2011/09/09(金) 11:14:26.06kのところも同じじゃないかな
0445デフォルトの名無しさん
2011/09/09(金) 11:31:55.37コンパイル通ってないのに、通ったって言ってるのが疑問。
「コンパイラは何?」
0446デフォルトの名無しさん
2011/09/09(金) 11:36:45.35これでは出来ませんでした
0447デフォルトの名無しさん
2011/09/09(金) 11:48:51.36gccです
0448!
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 ;
}
0449デフォルトの名無しさん
2011/09/09(金) 12:16:47.820451デフォルトの名無しさん
2011/09/09(金) 12:38:29.85pcでコピペじゃなくて、画面見ながら携帯で入力、とエスパーしてみた。
0452デフォルトの名無しさん
2011/09/09(金) 15:58:23.16putchar('\n');
この二つの意味ってなんなんでしょうか?
putcharというものを習ってないので、
他のものに置き換えてもらえると
ありがたいです
0453デフォルトの名無しさん
2011/09/09(金) 16:04:25.83puts("");
0454デフォルトの名無しさん
2011/09/09(金) 16:14:53.02printf("\n");
0455デフォルトの名無しさん
2011/09/09(金) 16:41:07.30printf("%c", 0xa);
0456デフォルトの名無しさん
2011/09/09(金) 17:05:53.96で勉強してたんじゃないの... >>452
0457デフォルトの名無しさん
2011/09/09(金) 17:44:18.560458デフォルトの名無しさん
2011/09/09(金) 22:24:18.62↓実行結果はこれだが?
./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
0459sage
2011/09/11(日) 02:40:08.01[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日しか余裕がありませんが、どうかよろしくお願いします。
0460デフォルトの名無しさん
2011/09/11(日) 03:07:14.880461459
2011/09/11(日) 06:22:52.930462デフォルトの名無しさん
2011/09/13(火) 13:15:34.00[2] http://codepad.org/eBlxfu2Q のプログラムを以下のように
改良しなさい。
�@ 数字を入力して計算できるようにする。(ただし、2次元配列は必ず使用)
�A 1〜5の合計点及び平均点の最高点、最低点を表の下部分に表示させる。
(�@は必須、�Aはできれば)
[3.1] Windows7
[3.3] C言語
[4] 今日の19時まで
[5] 特になし
わかる方どうかよろしくお願いします。
0463デフォルトの名無しさん
2011/09/13(火) 13:44:21.50int 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関数だけいじった
0464デフォルトの名無しさん
2011/09/13(火) 14:06:42.12できればchar文(?)を使わずに書き換えられませんか?
0465デフォルトの名無しさん
2011/09/13(火) 14:14:48.64英語の最高点=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 の出力だけいじった
0466デフォルトの名無しさん
2011/09/13(火) 14:15:29.83すいませんがめんどくさいので他の人がなんとかしてくれる可能性に賭けてください
0467デフォルトの名無しさん
2011/09/13(火) 14:19:05.92そもそも間違ってたのか
>>463のことは忘れてください
0468465
2011/09/13(火) 15:22:07.120469デフォルトの名無しさん
2011/09/13(火) 15:34:57.90ありがとうございました。非常に助かりました。
0470デフォルトの名無しさん
2011/09/13(火) 17:00:33.07< 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;
0471デフォルトの名無しさん
2011/09/13(火) 20:19:26.41[2] F(x)を計算する関数double func1(double x)を作成せよ。ただしμの値はμ=0.891とし、
double mu=0.891;
と変数の初期化時に与えるようにせよ。
[3]
[3.1] windows7
[3.2]gcc
[3.3] c言語:
[4] 無期限
0472デフォルトの名無しさん
2011/09/13(火) 21:03:53.77それとも俺の数学かなんかの知識が不足してるだけか?
0473デフォルトの名無しさん
2011/09/13(火) 21:07:21.72ESP能力が足りないだけだ
0474471
2011/09/13(火) 21:10:52.55F(x)=μ*x+2*(1-μ)*x^2/(1+x^2)
で与えられてます
0475デフォルトの名無しさん
2011/09/13(火) 21:13:12.46double func1(double x)
{
return mu*x+2*(1-mu)*x*x/(1+x*x);
}
0476デフォルトの名無しさん
2011/09/13(火) 21:22:55.08ありがとうございます。
0477デフォルトの名無しさん
2011/09/17(土) 15:33:03.33[2] Unixコマンドのgrepを実装したmygrepの作成
コマンドライン引数で検索文字列とファイル名をもらい、ファイル内に検索文字列が含まれる行があればその行を出力する
正規表現に対応させる必要はない
[3]
[3.1]windows xp
[3.2]gcc
[3.3]c言語
[4] 無期限
[5] strstrは使用禁止
よろしくおねがいします
0478デフォルトの名無しさん
2011/09/17(土) 15:40:56.19ttp://c-production.com/contents/c/sec13.html
0479デフォルトの名無しさん
2011/09/17(土) 15:40:58.75grep PATTERN [FILE...]
0480デフォルトの名無しさん
2011/09/17(土) 15:43:43.78#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);
}
0481デフォルトの名無しさん
2011/09/17(土) 17:24:02.61http://ideone.com/CTEKl
0482デフォルトの名無しさん
2011/09/17(土) 19:00:34.24class B : public A {};
A *aaa = new B();←(これ)
このAポインターのBnewする行為は、何という名前なのでしょうか?
(これ)をする必要性がわからないので(仮想関数に使うみたいですが)
(これ)についてググりたくても名前わからないもので…
0483デフォルトの名無しさん
2011/09/17(土) 19:03:47.330485デフォルトの名無しさん
2011/09/17(土) 19:09:41.95ググってくる
0486デフォルトの名無しさん
2011/09/17(土) 19:24:44.91STLのリストかなんかにAを継承した色んなクラスのオブジェクトをつっこんどいて
イテレータで回しながらオーバーライドした関数を実行したら順に子供のクラスで実装した関数が実行されるわけよ
0487デフォルトの名無しさん
2011/09/17(土) 21:25:12.59だお
0488デフォルトの名無しさん
2011/09/17(土) 21:30:48.21>STLのリストかなんかにAを継承した色んなクラスのオブジェクトをつっこんどいて
ダウト。「クラスのオブジェクトへのポインタ」だよな
0489デフォルトの名無しさん
2011/09/17(土) 23:58:55.150490デフォルトの名無しさん
2011/09/18(日) 00:36:08.200491デフォルトの名無しさん
2011/09/20(火) 12:57:52.73for(x=m;x<=n;x++)
{
a=a+x ;
}
というプログラミングを作ったのですが(m,nは入力する値)
これでうまくできたのですが、正直自分でもよくわからないままできてしまって
たとえば2と4を入力すると9がでるのですが
最初a=0でforの処理の中でaに2が格納されて
次のループでxが3になって
aの値はどうなるのでしょうか?
処理がうまくいってしまって、なんでうまくいったのがわからない状態
なのですが
長文すいませんでした
0492デフォルトの名無しさん
2011/09/20(火) 13:10:59.51printf を挟んでみたら?
0493デフォルトの名無しさん
2011/09/20(火) 13:42:28.570494デフォルトの名無しさん
2011/09/20(火) 13:49:01.03for ( int x=m; x<=n; x++ )
{
sum = sum + x; // もしくは sum += x;
}
ちょっと書きなおして見て、ここの挙動、
> sum = sum + x; // もしくは sum += x;
特に、自分自身とxを足して自分自身に代入する += (複合代入演算子)の挙動を把握していないんだろう。
0495デフォルトの名無しさん
2011/09/20(火) 13:56:42.13a = 2 + 3 = 5
a = 5 + 4 = 9
0496デフォルトの名無しさん
2011/09/20(火) 15:12:14.920497デフォルトの名無しさん
2011/09/23(金) 14:34:59.90?鯖 接数: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のギルド加入数を各鯖毎に集計したものです。(加入してない人は含まれません)
0498デフォルトの名無しさん
2011/09/23(金) 14:35:44.050499デフォルトの名無しさん
2011/09/23(金) 15:01:08.68C言語なら俺に聞け(入門編)Part 89
http://hibari.2ch.net/test/read.cgi/tech/1314783907/
0500デフォルトの名無しさん
2011/09/25(日) 22:36:05.16教えて頂けると助かります、よろしくお願いします。
http://codepad.org/vksSs7IN
0501デフォルトの名無しさん
2011/09/26(月) 02:33:42.54WAV フォーマット
でググった1件目
http://www.kk.iij4u.or.jp/~kondo/wave/
0502デフォルトの名無しさん
2011/09/26(月) 05:57:44.86ありがとうございます、なんとかなりそうです
0503デフォルトの名無しさん
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;
}
0504デフォルトの名無しさん
2011/09/27(火) 09:21:02.90気のせいかな。ム板の書き込みがかなり減ってきている。
私はどこにその統計があるのか知らないので、「気」でしかないけど。
0505デフォルトの名無しさん
2011/09/27(火) 09:21:48.590506デフォルトの名無しさん
2011/09/27(火) 09:22:28.98他の板は何でだろうな。
0507デフォルトの名無しさん
2011/09/27(火) 10:03:55.54関数2回呼び出してんじゃねーよw
0508デフォルトの名無しさん
2011/09/27(火) 14:52:06.320509デフォルトの名無しさん
2011/09/27(火) 15:12:00.090510デフォルトの名無しさん
2011/09/27(火) 19:31:53.770512デフォルトの名無しさん
2011/09/27(火) 21:03:28.38さすがにもう宿題するの飽きたのか?w
0513デフォルトの名無しさん
2011/09/27(火) 21:11:50.420514デフォルトの名無しさん
2011/09/27(火) 21:15:22.710515デフォルトの名無しさん
2011/09/27(火) 21:15:46.610516503
2011/09/29(木) 06:58:06.64ご自由に。
だって、俺、このプログラムつかわねーもん
0517デフォルトの名無しさん
2011/09/29(木) 09:29:01.04cじゃそういうことはできんのかね?
0518デフォルトの名無しさん
2011/09/29(木) 23:01:02.19[2] 問題文(含コード&リンク):パソコン間で、全方位カメラの映像を取得する。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2011年10月4日
[5] その他の制限: サーバークライアント方式、TCP/IPを使用する。
どなたか、詳しく説明をしてくれませんか
0519デフォルトの名無しさん
2011/09/29(木) 23:06:29.840521デフォルトの名無しさん
2011/09/29(木) 23:20:54.52情報を送る側=サーバー (カメラがあるPCで動くソフト)
情報を受け取る側=クライアント (映像を取得する側でのソフト)
0522デフォルトの名無しさん
2011/09/29(木) 23:51:00.26とりあえず単一マシンでカメラの映像を表示できるようになれ
0523518
2011/09/30(金) 10:46:57.92単一のカメラで映像を表示することができました。
しかし、いまだにクライアントサーバの仕組みができません。
どなたか、簡単なプログラム例を教えてくれませんか。
0524デフォルトの名無しさん
2011/09/30(金) 11:21:00.35BSDソケットを叩け
0525デフォルトの名無しさん
2011/09/30(金) 12:53:18.230526デフォルトの名無しさん
2011/09/30(金) 14:28:11.56ttp://www.blug.linux.no/rfc1149/vegard_bilder/
0527デフォルトの名無しさん
2011/09/30(金) 14:48:51.39sokcet(), bind(), listen(), accept(), connect(), send(), recv() 使う関数はこれくらいしかないよ
適当にググったら
ttp://www.geocities.jp/sugachan1973/doc/funto45.html
頭の悪そうなページだけど、真ん中くらいに最も簡単なサバ・クラのサンプルが有る
このサンプルはシングルクライアントが前提だが、複数のクライアントが接続するなら accept() の都度、
別スレッド(又はプロセス)を起こしてクライアント毎の送信を処理させるべきだろう
画像を送る場合に留意しなければならない事は、ソケットが用いるパケットサイズが4KByte(記憶が怪しい)なので
受信する際には一度のrecv() で全てのデータを受信できない可能性がある事だ(送る時は気にしなくて良いと思う)
よって、クライアントプログラムは recv() の戻り値を確認して必要なデータサイズに達するまで受信を繰り返す必要が
有るだろう
俺が始めて業務用のソケットコードを書いたときはネットで拾った情報だけで書いた
自分で調べて理解して書く事は後に残る財産になるから頑張れ
0528デフォルトの名無しさん
2011/09/30(金) 22:50:37.21>sokcet(), bind(), listen(), accept(), connect(), send(), recv() 使う関数はこれくらいしかないよ
select() は無視ですか・・・
0529デフォルトの名無しさん
2011/09/30(金) 23:16:20.86スレッド・プロセスが単一の受送信に用いられるなら select() は必要無い
勿論、業務レベルのコードには必須だけど NON_BLOCKING みたいな話は少しTCPを理解してからの方が良い
0530デフォルトの名無しさん
2011/10/01(土) 03:00:22.150531デフォルトの名無しさん
2011/10/02(日) 01:21:45.66[2] 問題文(含コード&リンク):
平成○年の値を入力し、西暦に変換するプログラムを作成
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C
[4] 期限:2011/10/5まで
[5] その他の制限: C言語初心者です。宜しくお願いします
0532デフォルトの名無しさん
2011/10/02(日) 01:29:08.29int main(void){
int year,heisei;
printf("平成何年ですか\n");
scanf("%d",&heisei);
year=heisei+1988;
printf("平成%d年は西暦%d年です",heisei,year);
return 0;
}
0533質問者333
2011/10/04(火) 01:39:16.55[2] 問題文(含コード&リンク):http://codepad.org/zZIfVRy9 問題文は上部に記載 下は自分で作ったものです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2011年10月7日まで
[5] その他の制限:制限は特にありませんが、要望として、既に作成したプログラムをあまり変えずに間違っている部分の指摘をお願いします。
リンク先の23行目がちゃんと動いてくれないところが不明です。よろしくお願いします。
0534デフォルトの名無しさん
2011/10/04(火) 02:04:06.32anser = 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;
}
0535質問者333
2011/10/04(火) 02:34:23.15ありがとうございます!
意図した動作を行うプログラムになりました。
0536デフォルトの名無しさん
2011/10/04(火) 12:32:18.67[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] その他の制限:コメントのほうよろしくお願いします。
0537デフォルトの名無しさん
2011/10/04(火) 13:54:17.84ttp://ideone.com/PgEJs#
0538デフォルトの名無しさん
2011/10/04(火) 18:38:57.33助かりました!ありがとうございます。
0539デフォルトの名無しさん
2011/10/04(火) 22:33:07.79[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を使うと思われます。
よろしくお願いします。
0540デフォルトの名無しさん
2011/10/04(火) 22:40:07.390541デフォルトの名無しさん
2011/10/04(火) 22:46:37.820542デフォルトの名無しさん
2011/10/04(火) 22:47:41.170543540
2011/10/04(火) 22:51:03.300544デフォルトの名無しさん
2011/10/04(火) 22:56:25.849*a = 9*b -10
9*(b-a) = 10
b-a = 10/9 ...そんな正の整数あるのん?
0545デフォルトの名無しさん
2011/10/04(火) 22:57:22.95多分 ab とは a*b のことだろう
0546デフォルトの名無しさん
2011/10/04(火) 23:04:20.781 11 2
2 3 7
0547デフォルトの名無しさん
2011/10/04(火) 23:05:31.86こんな簡単な問題が出たとしたら時間配分は5〜10分程度だろ
0548デフォルトの名無しさん
2011/10/04(火) 23:08:41.450549デフォルトの名無しさん
2011/10/04(火) 23:22:18.16int 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; }
0550デフォルトの名無しさん
2011/10/04(火) 23:23:02.69�@ http://ideone.com/UaEPK
0551デフォルトの名無しさん
2011/10/04(火) 23:23:36.49先越されたw
0552デフォルトの名無しさん
2011/10/05(水) 00:45:02.38くりあがるとこだけが対象だから1〜200なのはわかるが、それ以外の意味がわからない
0553デフォルトの名無しさん
2011/10/05(水) 00:53:41.82k+9=2*(k+1)
0554デフォルトの名無しさん
2011/10/05(水) 01:30:50.940555デフォルトの名無しさん
2011/10/05(水) 21:13:19.26[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] 一度作ったものをあまり動かさないで問題点を解決できればと思います。
0556デフォルトの名無しさん
2011/10/05(水) 21:26:55.10ttp://codepad.org/nVaop5uz
0557デフォルトの名無しさん
2011/10/05(水) 21:31:36.000558デフォルトの名無しさん
2011/10/05(水) 21:32:10.48だけじゃないだろ
0559デフォルトの名無しさん
2011/10/05(水) 21:33:33.03助かりました。ありがとうございます
0560デフォルトの名無しさん
2011/10/05(水) 21:36:25.52回答は出したから
まずは落ちないようにする観点を知ってほしかっただけ
0561デフォルトの名無しさん
2011/10/05(水) 21:40:32.86Segmentation Faultを”セグレった”って言ってたことがある
今は・・・あまり声に出して読まないな
皆はこれなんて言ってる?
0562デフォルトの名無しさん
2011/10/05(水) 21:42:52.690563デフォルトの名無しさん
2011/10/06(木) 00:14:15.42ここまでは出来たんだが、↓のように表示するにはどう加えればいいのですか?
学生別平均 学生1:0.0 学生2:0.0 学生3:0.0 学生4:0.0
科目別平均 科目1:0.0 科目2:0.0 科目3:0.0
0564デフォルトの名無しさん
2011/10/06(木) 03:32:24.04http://ideone.com/4BFUo
0565デフォルトの名無しさん
2011/10/06(木) 17:49:26.32[2] 問題文(含コード&リンク):
「基礎問題」
再帰処理を用いて任意のスリザーリンク(ナンバーライン)
問題を解くプログラムを作成せよ。(定石は使わないこと。)
「応用問題」
問題を生成するプログラムを作成せよ。
問題文が書き切れないので省略しました。
[3] 環境
[3.1] OS:windows7
[3.2] コンパイラ名とバージョン:microsoft Visual C++
[3.3] 言語: Cでお願いします。
[4] 期限: 10月10日 08:00まで
[5] プログラミングの講義では構造体やファイルの入出力まで、
ほかの講義でアルゴリズム、データ構造について習いましたが
使いこなせてないです。
宜しくお願いします。
0566デフォルトの名無しさん
2011/10/06(木) 22:24:49.35[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] 趣味でやっていますが、初心者なので構造体までしかやっていません
0567デフォルトの名無しさん
2011/10/07(金) 00:39:52.82ttp://codepad.org/8pR33s4r
趣味で宿題ってどういうことだろう
0568デフォルトの名無しさん
2011/10/07(金) 02:00:42.37そういやそうだった
最近C言語に興味をもって兄からもらった本で勉強中
構造体が1番苦手です
0569デフォルトの名無しさん
2011/10/08(土) 08:24:09.19[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]よろしくお願いします。
0570デフォルトの名無しさん
2011/10/08(土) 08:55:59.040571デフォルトの名無しさん
2011/10/08(土) 09:33:23.60ttp://codepad.org/fLrkCZil
0572デフォルトの名無しさん
2011/10/08(土) 11:00:06.04ありがとうございました。
0573デフォルトの名無しさん
2011/10/08(土) 11:04:29.93[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]よろしくお願いします。
0574デフォルトの名無しさん
2011/10/08(土) 11:06:47.81[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] ポインタ・ファイル入出力をかじった程度です。よろしくお願いします
0575デフォルトの名無しさん
2011/10/08(土) 11:07:22.60[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]よろしくお願いします。
0576デフォルトの名無しさん
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」)で構わない。
0577576
2011/10/08(土) 11:50:43.03TCP/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
|
└──────────────────────────────────────┘
0578デフォルトの名無しさん
2011/10/08(土) 13:55:15.38http://codepad.org/VG9RrCqz
0579デフォルトの名無しさん
2011/10/08(土) 14:00:07.02ありがとうございます
0580デフォルトの名無しさん
2011/10/08(土) 14:04:41.62http://codepad.org/diqxArVk
0581デフォルトの名無しさん
2011/10/08(土) 14:25:24.28http://codepad.org/OxlYjgaR
0582デフォルトの名無しさん
2011/10/08(土) 18:45:31.34なんとなく見直したらfcloseし忘れとる・・・
ちゃんとfcloseするようにしましょう
0583デフォルトの名無しさん
2011/10/08(土) 20:51:03.57信者にはほとほと手を焼いています。
0585デフォルトの名無しさん
2011/10/09(日) 00:28:14.66その際、ちゃんと fclose() の戻り値チェックもしましょう。
あと、fgets() で発生したエラーチェックもしましょう。
そして、printf() の戻り値チェックもしましょう。
0586デフォルトの名無しさん
2011/10/09(日) 00:31:44.95貴様がカスなだけ
0587デフォルトの名無しさん
2011/10/09(日) 01:08:17.040588デフォルトの名無しさん
2011/10/09(日) 02:11:04.89[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]ポインタの問題で頭を悩ませています。よろしくお願いします。
0589デフォルトの名無しさん
2011/10/09(日) 02:13:54.23[2] 問題文(含コード&リンク):
scanf により n を受け取り, 要素数 n の 1 〜 10 の値を持つ乱数配列を生成し表示するプログラムを作成せよ.
ただし, 配列の要素を表示するときは一行につき 10 個ずつ表示するようにせよ.
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:microsoft Visual
[3.3] 言語: C
[4] 期限:10月10日
[5]ポインタの問題で頭を悩ませています。よろしくお願いします。
0590デフォルトの名無しさん
2011/10/09(日) 09:44:19.69int row_sum(int*a,int n){int s=0;for(;n;n--)s+=*(a++);return s;}
0591デフォルトの名無しさん
2011/10/09(日) 11:58:33.33i;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));}
信者= ◆QZaw55cn4c ですが、何か?
0593デフォルトの名無しさん
2011/10/09(日) 14:52:02.89Sequenceフォルダの中身のヘッダやらcppを使いたいんだが使えない…
ただ単にVC++の中でフォルダ追加してその中にヘッダやcppを入れても使えないよね?
説明下手でごめんね。分かる人いたら回答お願いします。
0594デフォルトの名無しさん
2011/10/09(日) 15:41:02.88>>1
0595デフォルトの名無しさん
2011/10/09(日) 15:44:02.34[2] 問題文(含コード&リンク):int型変数が何個程度利用可能か調べるプログラムを作成せよ。
・確保する個数を変数とし、その値を増加(増加幅は100~1000)して
-確保できたら、確保メモリ領域を解放し、変数を増加して繰り返し
-確保できなかったら、処理を工夫して最終結果を表示
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月10日
[5]calloc関数の扱いが良く分からない・・・
よろしくお願いします。
0596デフォルトの名無しさん
2011/10/09(日) 15:45:16.68Visual Studio スレへいってインクルードパスの追加の方法をきいてくればおk
0597デフォルトの名無しさん
2011/10/09(日) 17:11:11.01#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;
}
0598デフォルトの名無しさん
2011/10/09(日) 17:17:17.98ごめん、スレチだったね。誘導ありがとう!
0599デフォルトの名無しさん
2011/10/09(日) 18:04:57.62つまり「自分にほとほと手を焼いている」わけだな?
それならわかるよw
0600デフォルトの名無しさん
2011/10/09(日) 18:09:51.010601デフォルトの名無しさん
2011/10/09(日) 18:24:06.33http://ideone.com/FMO5s
0602デフォルトの名無しさん
2011/10/09(日) 18:55:48.56どこまでもそういう馬鹿な受け取り方しか出来ない所が自己愛性人格障害
0603デフォルトの名無しさん
2011/10/09(日) 20:58:04.700605デフォルトの名無しさん
2011/10/09(日) 22:27:19.20[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]ポインタの問題です。よろしくお願いします。
0606デフォルトの名無しさん
2011/10/09(日) 22:34:05.88[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]ポインタの問題です。よろしくお願いします
0607デフォルトの名無しさん
2011/10/09(日) 22:36:40.960608デフォルトの名無しさん
2011/10/09(日) 22:45:08.24gccでお願いします。
0609デフォルトの名無しさん
2011/10/09(日) 22:51:02.53OSのバージョンくらいは教えてくれてもいいんじゃない?
0610605
2011/10/09(日) 23:14:28.35windows XPです。
0611デフォルトの名無しさん
2011/10/10(月) 00:09:51.43ttp://ideone.com/VmMGn
>>609
なんでここでOS関係あるんだよ
0612デフォルトの名無しさん
2011/10/10(月) 03:04:05.36いなかったらプログラム書かない
0613デフォルトの名無しさん
2011/10/10(月) 11:31:17.22ありがとうございました
0614デフォルトの名無しさん
2011/10/10(月) 11:35:36.35[2] 問題文(含コード&リンク):
かけ算九九の 20 段までをファイルに書き出すプログラムを作成せよ.
(例えば書き出すファイルを output.txt とすると, プログラム実行後に output.txt をメモ帳などで開くと, かけ算九九の 20 段までがファイルに書かれている.
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:microsoft Visual
[3.3] 言語: C
[4] 期限:10月12日
[5]ファイル処理の単元です。よろしくお願いします。
0615デフォルトの名無しさん
2011/10/10(月) 11:36:45.68[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]ファイル処理の単元です。よろしくお願いします。
0616デフォルトの名無しさん
2011/10/10(月) 11:37:10.000617デフォルトの名無しさん
2011/10/10(月) 14:02:58.88http://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
0618デフォルトの名無しさん
2011/10/10(月) 15:05:29.16class cc {
public:
cc::cc(?int a, int b) {
}
};
int main () {
cc c = ????; <<ココ
return 0;
}
0619デフォルトの名無しさん
2011/10/10(月) 15:08:21.152つの引数をもつインスタンスの場合、暗黙的にa,bに入れるにはどう書けばいいのですか?
class cc {
public:
cc::cc(int a, int b) {
}
};
int main () {
cc c;
c = ????; <<ココ
return 0;
}
0620デフォルトの名無しさん
2011/10/10(月) 15:14:34.920621デフォルトの名無しさん
2011/10/10(月) 15:14:42.650622デフォルトの名無しさん
2011/10/10(月) 15:19:06.17int _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;
}
0623デフォルトの名無しさん
2011/10/10(月) 15:22:00.56cc c = cc(1, 2);
0624デフォルトの名無しさん
2011/10/10(月) 15:24:29.17勉強で、暗黙で入れたかった
>>622
ありがと
0625デフォルトの名無しさん
2011/10/11(火) 00:42:18.29#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);}
0626デフォルトの名無しさん
2011/10/11(火) 00:58:09.210627デフォルトの名無しさん
2011/10/11(火) 00:59:57.59[2] 問題文(含コード&リンク):
scanf で n を受け取り, 要素数 n の乱数配列を作成し, 指定した 2 つの要素番号にある要素を交換するプログラムを作成せよ.
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:10月12日
[5]よろしくお願いします。
0628デフォルトの名無しさん
2011/10/11(火) 01:01:23.21[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]よろしくお願いします。
0629デフォルトの名無しさん
2011/10/11(火) 01:03:10.65[2] 問題文(含コード&リンク):
scanf により n を受け取り, n×n 行列を二次元乱数配列で定 義する (二次元乱数配列の作成には下記の参考プログラムを利用せよ). その行列の対角より下の成分の和を求めよ. ただし乱数の範囲は 0 〜 3 とする.
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:10月12日
[5]連続での投稿しつれいしました。どうかよろしくお願いします。
0630デフォルトの名無しさん
2011/10/11(火) 01:10:09.85コードゴルフするなら型は気にしちゃだめなんだぜ
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);}
0631デフォルトの名無しさん
2011/10/11(火) 01:30:08.13#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;
}
0632デフォルトの名無しさん
2011/10/11(火) 01:34:52.46#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
なるほど参考になります
0633デフォルトの名無しさん
2011/10/11(火) 01:37:43.80http://ideone.com/K8xeq
0634デフォルトの名無しさん
2011/10/11(火) 01:40:33.04速いな
pow()とか出来るだけ使わない方がいいのか
0635デフォルトの名無しさん
2011/10/11(火) 01:44:08.670636デフォルトの名無しさん
2011/10/11(火) 01:54:08.180637デフォルトの名無しさん
2011/10/11(火) 02:00:13.910638デフォルトの名無しさん
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] その他の制限: 長いですがよろしくお願いします
0639デフォルトの名無しさん
2011/10/11(火) 12:57:02.02初っ端から問題の意味が分からんのはオレだけか……?
0640デフォルトの名無しさん
2011/10/11(火) 13:05:24.71int *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);
}
0641デフォルトの名無しさん
2011/10/11(火) 13:20:28.64void 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);
}
0642デフォルトの名無しさん
2011/10/11(火) 16:00:11.03http://ideone.com/gPuj0
0643デフォルトの名無しさん
2011/10/11(火) 21:53:15.20余計なことしないで素直にそのまま利用すればいいのに
0644デフォルトの名無しさん
2011/10/12(水) 05:10:39.34皆様ありがとうございます助かりました
0645デフォルトの名無しさん
2011/10/12(水) 17:40:43.28[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++で
問題文リンクが載せられなくてすいません。
0646デフォルトの名無しさん
2011/10/12(水) 18:16:22.67#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;
}
0647デフォルトの名無しさん
2011/10/12(水) 22:51:39.32for 文について教えてくれないか・・・・
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
みたいになっちゃってんだよ。これをどうしたらいい?
0648デフォルトの名無しさん
2011/10/12(水) 22:55:57.91>>1
0649デフォルトの名無しさん
2011/10/12(水) 23:17:26.95ここは宿題スレだから、テンプレに従って宿題の形式で質問しよう。
それより、通常のC言語スレの方が適しているような気がするが。
ttp://hibari.2ch.net/test/read.cgi/tech/1317249060/
とりあえずエスパーしてみると、
>中のfor文が1回 終わったあとに、外の forを1回まわすのは、
>どうしたらいい・・・
内側のforが不要としか思えないけど。
>みたいになっちゃってんだよ。これをどうしたらいい?
書いたコードと、期待する動作を書いてみなよ。
0650デフォルトの名無しさん
2011/10/13(木) 11:33:00.03[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文は習いました。
宜しくお願いします。
0651デフォルトの名無しさん
2011/10/13(木) 13:07:19.97[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] その他の制限:授業では入出力、制御構造、配列までやりました。
よろしくお願いします。
0652デフォルトの名無しさん
2011/10/13(木) 15:47:46.61#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;
}
0653デフォルトの名無しさん
2011/10/13(木) 17:20:38.87http://ideone.com/ycJRr
0654デフォルトの名無しさん
2011/10/13(木) 17:45:48.360655デフォルトの名無しさん
2011/10/13(木) 17:52:55.250656デフォルトの名無しさん
2011/10/13(木) 21:52:03.83[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文を使ったプログラムでお願いします。
0657デフォルトの名無しさん
2011/10/13(木) 22:01:17.66int main(void)
{
int n = 1;
int S = 1;
while (S <= 2000) {
++n;
S += n * n;
}
printf("n = %d, S = %d\n", n, S);
}
0658デフォルトの名無しさん
2011/10/13(木) 22:23:41.33ありがとうございます!
0659デフォルトの名無しさん
2011/10/14(金) 01:27:01.26[2] 問題文(含コード&リンク):
以下を参考に再帰的二分探索を作成せよ。
http://codepad.org/BHEasb4b
お手数ですが、詳細はURLでお願いします。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/15 23:00
[5] その他の制限:配列は整数で昇順にソートされている前提でした。授業では配列、ポインタは習っています。よろしくお願いします。
0660デフォルトの名無しさん
2011/10/14(金) 02:22:01.40http://codepad.org/AzDhTpou
0661デフォルトの名無しさん
2011/10/14(金) 02:32:59.75ありがとうございます!
しかし課題の説明では入力は
int x,int v[],int n
の3つと言われたのですが
入力を3つでプログラミングすることは出来ないですか??
注文が多くて申し訳ないです。。
0662デフォルトの名無しさん
2011/10/14(金) 03:24:36.86{
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;
}
0663デフォルトの名無しさん
2011/10/14(金) 08:06:07.01有難う御座います
0664デフォルトの名無しさん
2011/10/14(金) 13:38:52.65ありがとうございます!
0665デフォルトの名無しさん
2011/10/14(金) 20:57:08.14�@
数字が書かれているtxtFからそれを読み込んで
別のtxtFに出力するCPを作成せよ。
入出力Fはコマンドラインから任意で指定すること。
�A
数字のみを標準出力するCPを入力Fとして、txtFに
その結果を出力するCPを作れ。
入力、出力Fはコマンドラインから任意に指定すること。
[3] 環境
[3.1] OS 7
[3.2] コ名とバ:gcc [3.3] 言:C [4] 今日 23時まで
[5] 制: �Aは実行端末においてコマンド | echo cat > <使用禁止。
今日は文長すぎに引っかかるのですいません・・省略してます。
0666デフォルトの名無しさん
2011/10/14(金) 22:33:08.80[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] その他の制限:特になし、よろしくお願いします
0667デフォルトの名無しさん
2011/10/14(金) 22:48:12.90const 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;
}
0668デフォルトの名無しさん
2011/10/14(金) 23:17:35.78『CP』ってCのプログラムって意味か?
関数名だとおかしいよな。
0669デフォルトの名無しさん
2011/10/15(土) 01:22:26.89すいません、補足事項の部分の掲載わすれてました
[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が月になる
}
これを参照のこと
解いていただいたのに、申し訳ないです。
0670デフォルトの名無しさん
2011/10/15(土) 01:28:59.550672デフォルトの名無しさん
2011/10/15(土) 18:05:13.52�Aに関して
1)数字のみを標準出力するプログラム(乱数を規定回数出力するのか?)
2)コマンド引数のファイルに標準に1)の出力を書き込むプログラム
の二つのプログラムを作れって問題か?
しかもリダイレクション禁止って事は2)から1)を起動してその標準出力を読み込むんだから
popen() あたりを使う事になるぞ
そんなレベルの問題なのか?
0673デフォルトの名無しさん
2011/10/15(土) 19:02:11.60イミフな略語で応えればいい
0674デフォルトの名無しさん
2011/10/16(日) 15:53:11.58catコマンドなんてあったっけ?
0675デフォルトの名無しさん
2011/10/16(日) 20:24:59.950676デフォルトの名無しさん
2011/10/16(日) 20:30:14.15いつの話だよ
067748
2011/10/16(日) 20:36:27.320678デフォルトの名無しさん
2011/10/16(日) 20:49:38.16お前、日立社員をdisってるのか?
0679デフォルトの名無しさん
2011/10/16(日) 20:53:17.02Q言語はみたことある
0680デフォルトの名無しさん
2011/10/16(日) 23:40:46.93[2] 問題文(含コード&リンク):任意のデータ(1、100、10)など)を入力するとそれぞれを3つの行列テーブルに分けた後、3次元の離散コサイン変換を行うプログラム。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年10月31日
[5] その他の制限: 特にないです。
0681デフォルトの名無しさん
2011/10/16(日) 23:46:52.36[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]);
よろしくお願いします
0682デフォルトの名無しさん
2011/10/17(月) 00:57:14.54[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
0683デフォルトの名無しさん
2011/10/17(月) 01:04:13.73[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文による総和の計算は習いました。
宜しくお願いします。
0684デフォルトの名無しさん
2011/10/17(月) 01:17:09.46[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] その他の制限: リスト構造を利用すること
よろしくお願いします。
0685デフォルトの名無しさん
2011/10/17(月) 01:48:04.88void concat(struct node *p, struct node *q)
{
if( ! p || ! q ) return;
while( p-next ) p = p->next;
p->next = q;
}
0686デフォルトの名無しさん
2011/10/17(月) 04:02:09.69http://ideone.com/bg9B8
0687デフォルトの名無しさん
2011/10/17(月) 10:07:59.32http://ideone.com/TgHwm
0688デフォルトの名無しさん
2011/10/17(月) 10:42:13.81ありがとうございます
0689デフォルトの名無しさん
2011/10/17(月) 14:27:29.95ありがとうございました
0690デフォルトの名無しさん
2011/10/17(月) 15:41:02.94http://ideone.com/x7F0s
0691デフォルトの名無しさん
2011/10/17(月) 16:42:40.85ありがとうございました
0692デフォルトの名無しさん
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ファイルです。構造体がうまく処理できず・・・。
よろしくお願いします。
0693デフォルトの名無しさん
2011/10/17(月) 20:13:00.44http://codepad.org/p21Hw298
0694デフォルトの名無しさん
2011/10/17(月) 20:49:09.29ありがとうございます!!
0695デフォルトの名無しさん
2011/10/17(月) 23:24:20.77[2] キーボードから5個の整数を読み込みそれを小さい順に(5個)表示するプログラムを作りなさい。
[3] Windows 7上にVisual Studio 2008というのが入っています。C言語でプログラミングしなければ
なりません。
[4]すみませんが明日中までです。
[5]
(1)main関数の下に定義できる変数は文字配列(長さ256)とひとつの整数型の整数だけだそうです
(2)main関数以外の関数で呼び出せるのはstdio.hの定義の関数とstdlib.hの関数だけだそうです。
(fgets関数とatoi関数を使えば良いという情報があります。)
(3)マクロ関数は使ってはいけないそうです。(てか習ってません)再帰呼び出しも習ってませんし
よく知りません。
以上よろしくお願いします。
0696695
2011/10/17(月) 23:31:42.73[5]
(4)グローバル変数は使ってはいけないそうです。
(5)入力されるべき整数の範囲は-5から5まででそれ以外は入力されても
警告を出して入力されてないものとみなす仕様だそうです
0697デフォルトの名無しさん
2011/10/18(火) 00:02:10.17int 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;
}
0698デフォルトの名無しさん
2011/10/18(火) 00:02:35.83なんだ、もう読めないのか。
0699デフォルトの名無しさん
2011/10/18(火) 00:03:49.19変数定義の制約が面倒だとか考えてる間にそれかw
0700695
2011/10/18(火) 00:06:23.97早速のご回答ありがとうございます。
実行してみましたが、次のようなメッセージがでてしまいます
'read'は、内部コマンドまたは外部コマンド
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0701デフォルトの名無しさん
2011/10/18(火) 00:15:02.67関数と引数の意味くらい読み取ろうぜ
0702デフォルトの名無しさん
2011/10/18(火) 00:21:07.18Interix上で実行しているか?
0703デフォルトの名無しさん
2011/10/18(火) 00:32:52.95http://ideone.com/taaUZ
0704デフォルトの名無しさん
2011/10/18(火) 00:33:33.91int 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;
}
0705デフォルトの名無しさん
2011/10/18(火) 00:34:27.78X if(i<-1 || i>5) {
O if(i<-5 || i>5) {
0706デフォルトの名無しさん
2011/10/18(火) 00:39:50.82#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;
}
0707695
2011/10/18(火) 00:39:52.82ありがとうございます。
良さげですね。これでやってみます。
もしよければポイントだけでもよろしいですから
解説して頂けると幸甚です。
>>704
fopenとかまだ習ってないかも知れません
(結構サボってますのでw)
0708デフォルトの名無しさん
2011/10/18(火) 01:12:10.71int 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向けにしたのに負の数に対応できてないだと・・・
0710デフォルトの名無しさん
2011/10/18(火) 06:25:54.200711デフォルトの名無しさん
2011/10/18(火) 09:35:04.75有難う御座います
0712デフォルトの名無しさん
2011/10/18(火) 13:24:36.45[2] 問題文(含コード&リンク):全方位カメラの映像をPC間から取得する。
クライアント側をヒントにサーバー側を作る。
[3] 環境
[3.1] OS:windows 7
[3.2] コンパイラ名とバージョン:microsoft Visual 2005
[3.3] 言語: C
[4] 期限:10月24日
[5] 必要なもの、TCP/IPで通信
映像はパノマラまた、ストリームのどちらかです。
サンプルのクライアントは単体でカメラが起動できる。
0713712
2011/10/18(火) 15:54:23.440714712
2011/10/18(火) 15:57:38.570715デフォルトの名無しさん
2011/10/18(火) 16:00:53.190716712
2011/10/18(火) 16:19:16.030717665
2011/10/18(火) 17:17:45.86数日たったけどすいません・・・・
数字を出力するファイルmath.cは
#include<stdio.h>
int main(void)
{printf("%d\n",1);}です。
0718665
2011/10/18(火) 17:19:30.18このmath.cかmath.exeをコマンドラインの引数として
別のファイルにリダイレクトするプログラムを作りたいのです。
>bannno.exe math.exe math.txt
>cat math.txt
>1
が理想です。
0719665
2011/10/18(火) 17:26:19.950720665
2011/10/18(火) 17:35:04.730721デフォルトの名無しさん
2011/10/18(火) 18:43:24.62ttp://codepad.org/r8TuvJtb
0722デフォルトの名無しさん
2011/10/19(水) 00:11:29.91>>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;
}
セキュリティ?気にすんな
0723デフォルトの名無しさん
2011/10/19(水) 00:12:37.710724デフォルトの名無しさん
2011/10/19(水) 08:44:00.71[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日(出来れば早めにお願いします)
よろしくお願いします。
0725デフォルトの名無しさん
2011/10/19(水) 09:42:14.96#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;
}
0726デフォルトの名無しさん
2011/10/19(水) 19:26:12.81このプログラムだと実行できません 勝手だとは思いますが別のをお願いしますか?
0727デフォルトの名無しさん
2011/10/19(水) 19:37:27.53お願いするかどうかはあんたが決めることだw
0728デフォルトの名無しさん
2011/10/19(水) 19:48:22.200729デフォルトの名無しさん
2011/10/19(水) 19:52:16.22意味不明なんだが
0730デフォルトの名無しさん
2011/10/19(水) 19:57:49.69例 I have a studentと入力すると
I have a studentと同じ文字が出てしまいます
0731デフォルトの名無しさん
2011/10/19(水) 19:59:46.97実行例がマズかったね
0732デフォルトの名無しさん
2011/10/19(水) 20:02:49.490733デフォルトの名無しさん
2011/10/19(水) 20:04:51.99[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に乗せてあります。配列、ポインタは学習しています。よろしくお願いします。
0734デフォルトの名無しさん
2011/10/19(水) 20:06:12.01入力データをtestfile. txtという名前のファイルに保存し、
以下のようにリダイレクトしてみたら?
$ ./line_count < testfile. txt
0735デフォルトの名無しさん
2011/10/19(水) 20:08:03.87詳しく教えてもらえますか?
0736デフォルトの名無しさん
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の部分だけを配列に入れ、
もうひとつのファイルに配列に入れた部分を
保存したいのですが、どうしたらいいですか。
0737デフォルトの名無しさん
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の部分だけを配列に入れ、
もうひとつのファイルに配列に入れた部分を
保存したいのですが、どうしたらいいですか。
0738デフォルトの名無しさん
2011/10/19(水) 20:25:42.470739デフォルトの名無しさん
2011/10/19(水) 20:27:16.110740デフォルトの名無しさん
2011/10/19(水) 20:29:18.02#include <stdio.h>
int main(void)
{
system("cut -d, -f3 text.txt > out.txt");
return 0;
}
0741デフォルトの名無しさん
2011/10/19(水) 20:47:26.03ありがとうございます。
無事できました。
0742725
2011/10/19(水) 20:48:43.28コンソールからの入力なら下記のコードで、コンソール上から
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;
}
0744デフォルトの名無しさん
2011/10/19(水) 20:59:14.04実行してみた所
./cpy < ./line_count.c
lines: 22 letters: 313
となってしまいます
その後
./cpy < ./line_count.c > ./testfile.txt
./cpy < ./testfile.txtをやってみたら
lines: 2 letters: 24
となってしまいます 原因が解りますでしょうか?
0745デフォルトの名無しさん
2011/10/19(水) 21:03:42.25空行があるんじゃね?
0746デフォルトの名無しさん
2011/10/19(水) 21:11:11.67#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;
}
0747デフォルトの名無しさん
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に乗せてあります。よろしくお願いします。
0748デフォルトの名無しさん
2011/10/20(木) 09:44:36.46解こうと思ったが問題の乗っけてるURLの内容を見ると
意味がわからん
0749デフォルトの名無しさん
2011/10/20(木) 10:04:46.57[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] その他の制限:
0750デフォルトの名無しさん
2011/10/20(木) 10:06:04.43実行例
曜日を入力して下さい
(0:日1:月2:火3:水4:木5:金6:土):0
やった!週末だ
実行例2
曜日を入力して下さい
(0:日1:月2:火3:水4:木5:金6:土):5
今日も講義頑張ろう!
0751デフォルトの名無しさん
2011/10/20(木) 10:49:56.65リンク先には、「以下の関数を作れ。」ってあるけど、(option)ってあったり、
読んでも解かないといけない問題が分からない。
Josephusの問題(継子立ての問題)を解いてくれってことかな?
0752デフォルトの名無しさん
2011/10/20(木) 11:34:07.96レスありがとうございます。
オプションは無視していいです。すみませんでした。
・双方向循環リストの長さ(ダミーノードを除く)を求める関数
・双方向循環リストへの「一番先頭への挿入」と「削除」(削除ノードを直接指定)を出きる関数
・それらの関数を用いてのjosephusの問題を解くプログラムを作れという問題です。
よろしければよろしくお願いします。
0753デフォルトの名無しさん
2011/10/20(木) 11:42:16.30>・それらの関数を用いての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;
}
0754デフォルトの名無しさん
2011/10/20(木) 11:45:25.50[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] その他の制限:関数の単元での課題です。よろしくお願いします。
0755デフォルトの名無しさん
2011/10/20(木) 12:02:27.16構造体を跨いでのソートはどうすればいいのでしょうか?
ファイルの中につくったcppファイルを入れてます。
よろしくお願いします。
http://www1.axfc.net/uploader/Sc/so/285180
0756デフォルトの名無しさん
2011/10/20(木) 12:42:23.060757デフォルトの名無しさん
2011/10/20(木) 13:01:42.83a+d*(n-1)
0758デフォルトの名無しさん
2011/10/20(木) 14:03:08.93{
return a + (n-1) * d ;
}
0759デフォルトの名無しさん
2011/10/20(木) 15:01:42.50#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;
}
0760デフォルトの名無しさん
2011/10/20(木) 16:19:47.78以下のページを参考にしてみたら?
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;
}
0761デフォルトの名無しさん
2011/10/20(木) 23:36:06.95[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] その他の制限:制限はないです。よろしくお願いします。
0763デフォルトの名無しさん
2011/10/20(木) 23:42:55.93#include <stdio.h>
int main(void){
double r=1.0;
printf("%f\n", 0.570795*r*r);
return 0;
}
0764デフォルトの名無しさん
2011/10/21(金) 15:35:31.34[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] その他の制限:問題文で与えられた物を使って解いていただきたいです。
解答よろしくお願いします。
0765デフォルトの名無しさん
2011/10/21(金) 15:57:44.22[2] 文字列を適当に入力してa〜z、A〜Zの各文字の出現回数を出力するプログラムをつくれ。
大文字小文字を判別できるようにすること。出現回数が0の場合は出力しない。
[3]
[3.1]Windows7
[3.2]
[3.3]どちらでも可
[4] 本日10時まで
[5] ほとんどできてるんですけど最後の細かいところがわかりません。
すでにできているプログラムを書き込むので改善点を教えて欲しいです。
・出現回数が大文字小文字セットででてきてしまう(aを3回のみだと「a=3,A=0」と出力されてしまう)
・大文字だけ入力すると出現回数が出力されない
0766デフォルトの名無しさん
2011/10/21(金) 15:58:37.58#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;
}
0767デフォルトの名無しさん
2011/10/21(金) 16:00:17.74わかりにくくてすいません
0768デフォルトの名無しさん
2011/10/21(金) 16:10:53.01if(islower(c)) cnt[c-'a']++;
if(isupper(c)) cnt[c-'A']++;
0769デフォルトの名無しさん
2011/10/21(金) 16:16:17.07もしかしてiいらなかったりする?
0770デフォルトの名無しさん
2011/10/21(金) 16:35:37.17は +26 が抜けてる
0771デフォルトの名無しさん
2011/10/21(金) 19:23:06.41#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;
}
0772デフォルトの名無しさん
2011/10/21(金) 19:50:40.46http://ideone.com/1gC72
0773デフォルトの名無しさん
2011/10/21(金) 20:16:11.88int r=0;
while(n--)r+=*(v++);
return r;
でも良いと思うんだが、引数値を変えてはいけない、とかのガイドでもあるのかな?
0774764
2011/10/21(金) 21:01:32.77ありがとうございます
>>773
特に制限はないのですが出来るだけ資料にUPされているものを
使っていただきたかったので指定させていただきました
0775デフォルトの名無しさん
2011/10/21(金) 22:47:49.27[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] その他の制限: 特にないです。
0776デフォルトの名無しさん
2011/10/21(金) 22:56:09.60#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;
}
0777デフォルトの名無しさん
2011/10/21(金) 23:57:45.12[2] 問題文:とある架空の携帯電話会社では、
基本料金の1,000円に、一ヶ月の
通話の合計時間によって通話料が
加算される(1分あたり10円)。
また、1ヶ月の料金は基本料金込みで
10,000円以上は通話料が無料になるものとする。
このとき、1ヶ月の合計通話時間を入力すると
請求される料金を表示するプログラムを作成せよ。
=== プログラム ===
#include <stdio.h>
int main()
{
[3] 環境
[3.1] OS: windows
[3.3] 言語:visual C++
[4] 期限:月曜日
よろしくお願いします
0778デフォルトの名無しさん
2011/10/22(土) 00:05:44.95main(n){scanf("%d",&n);printf("%d\n",n>900?10000:n*10+1000);}
0779デフォルトの名無しさん
2011/10/22(土) 00:11:42.21main(n){scanf("%d",&n);printf("%d0\n",n>900?1000:n+100);}
0780デフォルトの名無しさん
2011/10/22(土) 00:12:21.29おー、いいね
0781デフォルトの名無しさん
2011/10/22(土) 00:22:58.030782デフォルトの名無しさん
2011/10/22(土) 06:18:31.02これは積分で解けということかな?
0784783
2011/10/22(土) 06:22:10.09>>761
これは算数的に解いておくとあまりにやさしすぎるようだけれど、
積分で解くプログラムを書けということであろうか。
0785デフォルトの名無しさん
2011/10/22(土) 08:07:26.98よろしければ>>747、>>752をお願いします
0786デフォルトの名無しさん
2011/10/22(土) 08:09:22.00それだと円周率いらないのでは? つまり違う。
0787デフォルトの名無しさん
2011/10/22(土) 11:19:27.26残念ながらこのスレで宿題を丸投げにするのは中学レベルの数学ができてないやつが多いんだよ
だからこそ丸投げにするともいうが
0788デフォルトの名無しさん
2011/10/22(土) 11:21:23.850789デフォルトの名無しさん
2011/10/22(土) 12:25:43.270790デフォルトの名無しさん
2011/10/22(土) 12:50:18.90[2] http://codepad.org/u4T8ly42 のプログラムを改良して、
1を入力すると右から左へ、2を入力すると左から右へスクロールするように
しなさい。
[3.1] Windows7
[3.3] C言語
[4] 10/24 18時まで
[5] 特になし
わかる方どうかよろしくお願いします。
0791デフォルトの名無しさん
2011/10/22(土) 16:25:21.00ttp://codepad.org/rfYMPVKT
conio.h なんていう邪悪なモンを使わないとスクロール途中でスクロール方向を変える事はできない
もし、題意が表示前に入力するという意味ならこのコードは無視してくれ
0792デフォルトの名無しさん
2011/10/22(土) 16:31:52.55最初に1回だけスクロール方向を決める、とエスパーしてみた。
http://ideone.com/TW5TB
0793デフォルトの名無しさん
2011/10/22(土) 23:49:45.03ありがとうございます。助かりました。
0795デフォルトの名無しさん
2011/10/23(日) 22:19:57.270796デフォルトの名無しさん
2011/10/24(月) 01:59:14.980797デフォルトの名無しさん
2011/10/24(月) 08:10:29.09selectとかになるのか?
0799デフォルトの名無しさん
2011/10/24(月) 21:44:47.30MOJI
EIGO
NIPPON
↓
EIGO
MOJI
NIPPON
0801デフォルトの名無しさん
2011/10/24(月) 22:13:10.80相変わらず気持ち悪いプログラムだ
みていただいてありがとうございます。どんなところが「気持ち悪い」か、ちょこっとでいいから教えてください。
0803デフォルトの名無しさん
2011/10/24(月) 22:15:36.40[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を使うこと
0804デフォルトの名無しさん
2011/10/24(月) 22:24:09.25int main(){
system("sort < input.txt > output.txt");
return 0;
}
0805デフォルトの名無しさん
2011/10/24(月) 22:24:58.68別スレッドで入力待ちするって手は有るかも知れない
でも echo back 無しの _getch() もC準拠じゃないんだな、こっちは curses でも使うか?
0806デフォルトの名無しさん
2011/10/24(月) 23:19:30.72http://ideone.com/IewC2
0807デフォルトの名無しさん
2011/10/24(月) 23:21:10.39それだと同じファイルから同じファイルへの書き換えができないんですけどどうすればいいですか?
0808デフォルトの名無しさん
2011/10/25(火) 00:16:01.19ここに答えが載ってる
ttp://mermaid-tavern.com/potato/dat4/dt4_0019.html
0809デフォルトの名無しさん
2011/10/25(火) 01:15:01.68[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。(配列、関数、ポインタなどまだです)
宜しくお願いします
0810デフォルトの名無しさん
2011/10/25(火) 01:32:03.75#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;
}
0811デフォルトの名無しさん
2011/10/25(火) 01:38:49.71>[5] その他の制限: (どこまで習っているか、for while。(配列、関数、ポインタなどまだです)
トリッキーなプログラムを求めてるように見えるのな。
実は課題じゃないんじゃ?
0812デフォルトの名無しさん
2011/10/25(火) 01:43:01.14(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: '=' : 左のオペランドが、左辺値になっていません。
みあたりませんけど?
0814デフォルトの名無しさん
2011/10/25(火) 08:13:31.97頭悪いページだな。
>コマンドプロンプト リダイレクト 画面にも表示
と言う検索に対して、コメントが、
>リダイレクトの意味がわかっていないからこういうおバカなキーワードになる。
0815デフォルトの名無しさん
2011/10/25(火) 10:22:21.24int main( void )
{
system( "sort < infile > outfile" );
system( "rm infile" );
system( "mv outfile infile" );
return 0;
}
0816デフォルトの名無しさん
2011/10/25(火) 17:36:28.84[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] その他の制限:特になし
よろしくお願いします
0817デフォルトの名無しさん
2011/10/25(火) 18:08:56.12#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;
}
0818デフォルトの名無しさん
2011/10/25(火) 18:41:57.49http://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/
0819デフォルトの名無しさん
2011/10/25(火) 19:06:29.52数を並べ替えるアルゴリズム部分に感動した。
これって定石なのかしら?
0820デフォルトの名無しさん
2011/10/25(火) 19:30:08.810821デフォルトの名無しさん
2011/10/25(火) 19:33:01.42定石ではあるけど初心者は再帰呼出を嫌うだろJK
0822デフォルトの名無しさん
2011/10/25(火) 19:35:14.18http://ideone.com/S472x
0823デフォルトの名無しさん
2011/10/25(火) 19:51:37.55最初に思いついたのはstd::next_permutationだったYO
0824デフォルトの名無しさん
2011/10/25(火) 20:05:19.11#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;
}
0825デフォルトの名無しさん
2011/10/25(火) 20:29:29.460826デフォルトの名無しさん
2011/10/25(火) 21:30:24.83[2] 問題文(含コード&リンク): http://ideone.com/duPFX
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 10月26日 09:00
よろしくお願いします
0827デフォルトの名無しさん
2011/10/25(火) 21:31:13.38[2] 問題文(含コード&リンク):http://ideone.com/foLSr
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 10月26日 09:00
連投で恐縮ですがよろしくお願いします
0828デフォルトの名無しさん
2011/10/25(火) 22:43:13.90ありがとうございます
0829デフォルトの名無しさん
2011/10/26(水) 05:13:34.17[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
簡単に説明もいただけると大変助かります。
よろしくお願いいたします。
0830デフォルトの名無しさん
2011/10/26(水) 05:20:25.20#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;
}
0831デフォルトの名無しさん
2011/10/26(水) 07:40:32.33#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;
}
0832デフォルトの名無しさん
2011/10/26(水) 12:54:45.75ありがとうございます。
%sとはどんな働きをするのですか?
調べてみたのですが、よくわかりませんでした><
0833デフォルトの名無しさん
2011/10/26(水) 13:12:50.05文字列
0834デフォルトの名無しさん
2011/10/26(水) 13:14:05.41int 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;
}
0835デフォルトの名無しさん
2011/10/26(水) 13:44:08.42文字を入力する際にはこちらを使うということですね、ありがとうございます。
>>830と>>834はまだ勉強していないやつがあったので、>>831を使ってみようと思います。
様々な回答ありがとうございました。
0836デフォルトの名無しさん
2011/10/26(水) 15:40:06.89[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
0837デフォルトの名無しさん
2011/10/26(水) 16:05:14.42#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;
}
0838デフォルトの名無しさん
2011/10/26(水) 19:06:26.15インスコしてみたらクソ遅くてわろた 1.2になりかけの頃のやつ
Win7 64bit Core3 でEEのIndigo(日本語後入れ)使ってるけど
動作の遅さよりファイル関連の反映の遅さが気になる
EclipseをSSDにいれてるヒトの感想がききたい
0839デフォルトの名無しさん
2011/10/26(水) 19:25:56.34なんでこのスレからコピペしてんの?
Eclipse統合M31【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1295886572/
0840デフォルトの名無しさん
2011/10/26(水) 20:13:49.00>>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--と数字のように扱えるのはなぜですか?
初歩的な質問で申し訳ありませんが、お願いします。
0841デフォルトの名無しさん
2011/10/26(水) 21:55:45.86>pには文字が入っている
えっ!?
0842デフォルトの名無しさん
2011/10/26(水) 22:40:26.85abcd
の入力では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も一つずつずらし、
結果入力された文字が一つずつずれて表示されてる。
0843デフォルトの名無しさん
2011/10/26(水) 22:40:53.81>>842
>>840
0844デフォルトの名無しさん
2011/10/26(水) 22:55:25.07[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
よろしくお願いします
0845デフォルトの名無しさん
2011/10/27(木) 00:52:19.43ユーザ関数を定義して作成しなさい.
その際の区分間距離も任意に入力できるようにすること。
実行例
積分範囲を入力せよ
x0 = 0
xl = 10
区分間距離を入力せよ
length = 1
ans = 9.949055
積分範囲を入力せよ
x0 = 0
xl = 100
区分間距離を入力せよ
length = 5
ans = 49.588107
お願いします。
0846デフォルトの名無しさん
2011/10/27(木) 01:03:29.78>>1
0847デフォルトの名無しさん
2011/10/27(木) 01:46:50.62http://ideone.com/PmuJg
0848デフォルトの名無しさん
2011/10/27(木) 02:02:10.84847をちょっと修正
http://ideone.com/eGfeM
0849デフォルトの名無しさん
2011/10/27(木) 11:18:07.83[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文による総和の計算、配列変数は習いました。
宜しくお願いします。
0850デフォルトの名無しさん
2011/10/27(木) 12:44:45.55int 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;
}
0851デフォルトの名無しさん
2011/10/27(木) 12:51:29.61/*設問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;
}
つづく
0852デフォルトの名無しさん
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;
}
0853デフォルトの名無しさん
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
簡単に説明もいただけると大変助かります。
よろしくお願いいたします。
0854デフォルトの名無しさん
2011/10/27(木) 15:40:35.36#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;
}
0855デフォルトの名無しさん
2011/10/27(木) 16:04:32.08有難う御座います
0856デフォルトの名無しさん
2011/10/27(木) 16:24:59.71[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
画像だけ載せることができればいい課題なので、最悪このような事を行えるソフトウェアがあればいいのですが
ネットでたくさん検索を行ったのですが、私の浅知恵のせいか、よく分かりませんでした
ヒントだけでもいいので、よろしくお願い致します
0857デフォルトの名無しさん
2011/10/27(木) 16:38:59.380858デフォルトの名無しさん
2011/10/27(木) 17:17:25.89入門編で聞いたんですけどこっちで聞けと言う事なので
5人の学生の成績(100点満点)の値をキーボードから読み込み,それらの平均点と分散(標準偏差の二乗)を求めるプログラムを作れ。
授業の課題です
解説付きでお願いします。
0859デフォルトの名無しさん
2011/10/27(木) 17:41:48.12>>1
0860デフォルトの名無しさん
2011/10/27(木) 18:06:23.12#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;
}
0861デフォルトの名無しさん
2011/10/27(木) 18:09:22.01#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);/*平均と分散を求める*/
}
0862デフォルトの名無しさん
2011/10/27(木) 18:09:58.26http://codepad.org/rTokMRii
0863858
2011/10/27(木) 18:36:35.29あ、ごめんなさい
[1] 授業単元:数学関数と数値計算
[2] 問題文(含コード&リンク):>>358
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: ごめんなさい。分かんないです。
[3.3] 言語: おそらくどちらでも
[4] 期限: [2011年10月28日15:00まで]
[5] その他の制限: printfとscanfまで習いました。
授業全然ついていけてないんで、あやふやなところ多いです。すいません
0864デフォルトの名無しさん
2011/10/27(木) 18:37:22.65問題文は>>858です
0865デフォルトの名無しさん
2011/10/27(木) 18:39:17.59>>860-862
0866デフォルトの名無しさん
2011/10/27(木) 20:51:39.05すみません、初めはこちらにレスしようと思ったのですが
見ていた他のスレにレスしてしまいました
0867デフォルトの名無しさん
2011/10/27(木) 21:41:31.20コードを読み返して、書き直してを繰り返して、
自力で書けるようにならないと今後どんどん悲惨な事になるぞ。
0868デフォルトの名無しさん
2011/10/27(木) 21:51:05.25ソースを壊しても困らない状態(オリジナルは別フォルダに保存、とか)にしておいてから、ソースを色々いじって、なにが起こるかを見るのも役に立つと思う。
0869デフォルトの名無しさん
2011/10/27(木) 23:44:31.48printfとscanfしか理解してないぽいからちゃんと一から勉強した方が良い
0870デフォルトの名無しさん
2011/10/27(木) 23:55:02.00正直printfとscanfもあいまいな感じです
分かって無い状態で出すのも気が引けるんで今回の課題は未提出で行こうと思います
一回しっかりと勉強せんとダメですわ
みなさんありがとうございました
0871867
2011/10/28(金) 00:25:22.64俺が書いたわけじゃないけど、>>860のコードが分かりやすい、
点数入力して合計計算
↓
平均計算
↓
偏差二乗和計算
(コメント/* 平均との差の二乗の合計値を出す */ の部分)
↓
分散を求めて表示
ってなってるから、コードから
点数入力して合計計算
以外を削除して、printf()とscanf()でどうやって表示、点数入力してるかを関数仕様書(cppreferenceとか)見ながら確認するといい。
それがわかると次の
平均計算
部分を追加して確認、本当に平均が計算出来ているかは自分で追加してみてもいい。
それがわかると次のーーー
って具合に、全部一片に勉強するより、コードを処理単位の固まりで捉え、少しずつ勉強するのが分かりやすい。
行数的には>>861が少ないけど、こっちのコードはトリッキーだから>>870にはまだ早い。
0873デフォルトの名無しさん
2011/10/28(金) 01:02:58.04>分かって無い状態で出すのも気が引けるんで今回の課題は未提出で行こうと思います
出したほうが、説明をせざるをえない状況に自分を持っていける、という考え方もある。
0874デフォルトの名無しさん
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;
}
0875デフォルトの名無しさん
2011/10/28(金) 05:19:32.66∧∧ そ〜ら、属国犬取って来るアル
/ 支\ ,,,_
( `ハ´)つ `''‐、,
⊂ ノ ∧_∧ ウェー、ハッハッハ `ヽ, ●
人 Y (( 〜(⌒:<*`∀´> ゙:、 r''
レ (_フ (/ーし'ー-J ゙、,,:'゙
∧∧
宗主さまぁ /中\ オー、ヨシヨシ!
∧_(`ハ´ )
(( 〜(⌒:<*`∀´> と )
し し し (__(_フ
0876デフォルトの名無しさん
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
0877デフォルトの名無しさん
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
0878デフォルトの名無しさん
2011/10/28(金) 14:39:37.620879デフォルトの名無しさん
2011/10/28(金) 14:57:25.26http://ideone.com/fZL1V
0880デフォルトの名無しさん
2011/10/28(金) 15:26:17.96https://gist.github.com/4ef2174c695ab92d704c
0881デフォルトの名無しさん
2011/10/28(金) 15:43:20.172次元配列の問題です
m行n列の配列aの
各行ごとの合計 gyouwa[i] i=0,1,・・・,m
各列ごとの合計 retuwa[j] j=0,1,・・・,n
を計算するプログラムの作成をお願いします
•行列サイズ m,n は実行時に 100以内であれば自由に設定してデータを再入力させる機能をつける
◦配列サイズの上限はプログラム中で配列を宣言するとき「100 個」として下さい。これは,プログラム中で大き目の配列を宣言しておいて,指定されたサイズに応じて必要分を使うための練習です。
【3】c言語
【4】10月30日まで
0882デフォルトの名無しさん
2011/10/28(金) 16:52:05.64http://ideone.com/VimHM#ul_inouterr
0883デフォルトの名無しさん
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
0884デフォルトの名無しさん
2011/10/28(金) 22:31:21.70qxxr[0]=40.800000は浮動小数点だけど、
printf("最大のq*rは%dのとき%f\n",qxxxr,qxr);
表示はintになってるから。
0885884
2011/10/28(金) 22:32:37.090886デフォルトの名無しさん
2011/10/28(金) 22:42:30.24多分宣言がおかしい
0887デフォルトの名無しさん
2011/10/28(金) 23:03:33.99これでいいのか?
#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
0888デフォルトの名無しさん
2011/10/29(土) 00:07:23.62マルチならせめて、2番目のスレに書き込む時に判るようにしようぜ。
0889デフォルトの名無しさん
2011/10/29(土) 00:49:50.08qxxxr の初期化は?
0890デフォルトの名無しさん
2011/10/29(土) 00:57:57.20↓
for( qxr = qxxr[qxxxr=maa=1] ; maa < 10; maa++) {
0891デフォルトの名無しさん
2011/10/29(土) 02:01:08.25qxxxr を1で初期化しちゃ駄目だろ
0892デフォルトの名無しさん
2011/10/29(土) 02:31:27.880893デフォルトの名無しさん
2011/10/29(土) 18:01:41.27さっぱり分かりません
for文の課題なのでfor文を使って頂けるとありがたいです
0894デフォルトの名無しさん
2011/10/29(土) 18:02:58.53島本町の学校で暴力やいじめを受け続けて、心も身体も
壊されて廃人同様になってしもうた僕が言うんやから、
まちがいないで。
教師も校長も、暴力やいじめがあっても見て見ぬフリ。
そればかりか、イジメに加担する教師もおった。
誰かがイジメを苦にして自殺しても、「本校にイジメは
なかった」と言うて逃げるんやろうなあ。
僕をイジメた生徒や教師の名前をここで書きたいけど、
そんなことしたら殺されて、天王山に埋められるかもしれ
へん。それで誰にも発見されへんかったら、永久に行方不明のままや。
0895デフォルトの名無しさん
2011/10/29(土) 18:22:36.93大きい順に並べかえ、真ん中に来た値。
>>1に書いてあるテンプレを使って依頼して。
0896デフォルトの名無しさん
2011/10/29(土) 18:31:45.090897デフォルトの名無しさん
2011/10/29(土) 18:33:02.91ttp://ja.wikibooks.org/wiki/%E4%B8%AD%E5%AD%A6%E6%A0%A1%E6%95%B0%E5%AD%A6_1%E5%B9%B4%E7%94%9F-%E6%95%B0%E9%87%8F/%E8%B3%87%E6%96%99%E3%81%AE%E6%95%A3%E3%82%89%E3%81%B0%E3%82%8A%E3%81%A8%E4%BB%A3%E8%A1%A8%E5%80%A4
0898デフォルトの名無しさん
2011/10/29(土) 19:22:56.07#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;
}
ところでピストグラムとピスト自転車ってなんか関係があるのかなー。
0899デフォルトの名無しさん
2011/10/29(土) 22:50:24.680900デフォルトの名無しさん
2011/10/29(土) 23:54:50.53例えば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}の数はいくつであるか計算する方法を教えてください。
0901デフォルトの名無しさん
2011/10/29(土) 23:57:52.19>・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
0902デフォルトの名無しさん
2011/10/30(日) 00:57:29.80http://codepad.org/4gg8jlY4
0903デフォルトの名無しさん
2011/10/30(日) 01:31:24.00ありがとうございます!
0904デフォルトの名無しさん
2011/10/30(日) 01:52:28.40>そして、{a,b,c}の中で部分集合{a,b}{b,c}{c,a}がすべてredであるような{a,b,c}の数はいくつであるか計算する方法を教えてください。
0個だと思うんだが、例えば{a,b,c}の例は何だろう?
0905デフォルトの名無しさん
2011/10/30(日) 02:07:30.710906デフォルトの名無しさん
2011/10/30(日) 08:27:09.77疑うことすらできないんだな
0907デフォルトの名無しさん
2011/10/30(日) 09:30:23.44win7でBccでstdio.hでやって欲しいです。それと出来ればfor文で作って頂けると嬉しいです
0908デフォルトの名無しさん
2011/10/30(日) 09:42:27.34algorithmをインクルードして
for(random_shaffle(a[0],a[5]);;);
0909デフォルトの名無しさん
2011/10/30(日) 10:39:02.71駄目ならfor内で並び変える順番入力してswapとか、
もしくはソート、これも並び替えだし。
0910デフォルトの名無しさん
2011/10/30(日) 12:04:40.08http://ideone.com/75BG9
0911デフォルトの名無しさん
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] その他の制限: 配列を習ったばかりです、参考書に書いてあったのですが、マクロ?とかいうのは習っていません。
よろしくお願いします。
0912デフォルトの名無しさん
2011/10/30(日) 17:09:48.52[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] その他の制限:
0913デフォルトの名無しさん
2011/10/30(日) 17:31:01.40他にstackクラスのヘッダとかないのか?
0914デフォルトの名無しさん
2011/10/30(日) 17:43:11.36問題文にはこれだけしか書かれていませんでした。
classの定義については過去の授業で習ったためだと思われます。
0915デフォルトの名無しさん
2011/10/30(日) 18:31:49.48http://ideone.com/NU2V9
0916デフォルトの名無しさん
2011/10/30(日) 18:37:54.89[2] 問題文(含コード&リンク):pbmフォーマット画像ファイルを読み込み、左右を反転させた画像をpbmフォーマット画像ファイルとして保存するプログラムを作成せよ.
[3] 環境
[3.1] OS: Windows
[3.2] Windows visual studio2008
[3.3] 言語: C
[4] 期限: [2011年11月2日16:30まで]
[5] その他の制限: テンプレートはwin32コンソールプロジェクトです。
よろしくお願いします。
0917デフォルトの名無しさん
2011/10/30(日) 18:48:29.78http://codepad.org/WpDJ5U8c
0918デフォルトの名無しさん
2011/10/30(日) 18:52:37.11おっと、ちょいと間違ってた。9行目を以下のように直しといて
正 cv::Mat h_img;
誤 cv::Mat h;
0919デフォルトの名無しさん
2011/10/30(日) 19:49:25.09http://codepad.org/LtVNq40Q
0920デフォルトの名無しさん
2011/10/30(日) 22:17:53.65#define使ってるし、1次元で処理してるので参考程度にしてくれ。
http://ideone.com/sOcjO
0921デフォルトの名無しさん
2011/10/31(月) 02:17:33.95[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] その他の制限: 特にありません。リスト構造に関して全く理解ができていません><
0922デフォルトの名無しさん
2011/10/31(月) 02:52:46.03void create_empty_list(struct slist *L)
{
L->head = NULL;
}
int main(void)
{
struct slist L;
create_empty_list(&L);
return 0;
}
0923デフォルトの名無しさん
2011/10/31(月) 03:38:08.75ありがとうございます!
0924デフォルトの名無しさん
2011/10/31(月) 07:59:48.28#defineを使わないという方法はあるのでしょうか?よくわからないのですが、つかわないとめんどくさいのでしょうか?
0925デフォルトの名無しさん
2011/10/31(月) 08:36:23.60代わりに
const in N = 3;
> マクロ?とかいうのは習っていません。
に対してだと思う。
0926デフォルトの名無しさん
2011/10/31(月) 13:40:05.79[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文で作成するようです。
よろしくお願いいたします。
0927デフォルトの名無しさん
2011/10/31(月) 14:07:09.01http://ideone.com/0nCYN
0928デフォルトの名無しさん
2011/10/31(月) 14:13:59.70#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;
}
0929デフォルトの名無しさん
2011/10/31(月) 20:04:44.36[2] 入力された整数が偶数だったら2で割り、奇数ならば3倍してから1足す
これを1になるまで繰り返し、かつ過程も出力するプログラムを作れ
[3] 環境
[3.1] OS: 7
[3.2] visual studio 2010
[3.3] 言語: c
[4] 期限: 11/1
[5] その他の制限: forを必ず用いること
聞けスレから誘導されてきたからマルチではない・・・?
0930デフォルトの名無しさん
2011/10/31(月) 20:09:35.83int 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;
0931デフォルトの名無しさん
2011/10/31(月) 20:11:42.71#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;
}
0932デフォルトの名無しさん
2011/10/31(月) 20:12:29.63#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;
}
0933デフォルトの名無しさん
2011/10/31(月) 20:14:43.38ありがとうございました!
お礼です(パスは1234)
ttp://hetare.ddo.jp/loda/src/hetare_0802.zip.html
0934デフォルトの名無しさん
2011/10/31(月) 20:45:01.14>これを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;
}
0935デフォルトの名無しさん
2011/10/31(月) 21:27:12.32これって負数の場合は言及されてないけど-1に至ればいいのかな
0936デフォルトの名無しさん
2011/10/31(月) 21:28:53.24求めるプログラムを for文を用いて作成せよ。
a1 = 1.0
a i+1 = a i *0.5
n
sum= Σ(ai)
i=1
すみません。かなりの時間ねばったんですが、できませんでした。
お願いいたします。
0937デフォルトの名無しさん
2011/10/31(月) 21:29:31.01コラッツ、角谷だね。
1になるまで計算。
0938デフォルトの名無しさん
2011/10/31(月) 21:34:36.30#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;
}
0939デフォルトの名無しさん
2011/10/31(月) 21:47:16.36ありがとうございます!
助かりました。
0940デフォルトの名無しさん
2011/11/01(火) 06:45:55.52[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や再起を使って考えてみましたが分かりませんでした。
0941デフォルトの名無しさん
2011/11/01(火) 07:11:05.48#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;
}
0942デフォルトの名無しさん
2011/11/01(火) 07:24:28.08ありがとうございます。
それだと指定した場所から十字にまっすぐ伸ばした部分しか数えられませんよね。
問題では、繋がっている部分を全てカウントしなければなりません。
0943デフォルトの名無しさん
2011/11/01(火) 07:27:43.08題意に影響はないはず
http://codepad.org/O42WTQht
0944デフォルトの名無しさん
2011/11/01(火) 07:30:17.11http://codepad.org/9PnOOvhu
0945941
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;
}
0946デフォルトの名無しさん
2011/11/01(火) 07:44:22.740947デフォルトの名無しさん
2011/11/01(火) 07:50:03.15ありがとうございます。
コードを読んでもなぜそうなるのかいまいち理解が出来ませんが、正しい実行結果が得られました。
0948941
2011/11/01(火) 07:51:31.15と言っても俺はこの手の問題は再帰でしか解いた事無いんで、
このコードも仮想スタックで再帰みたいな処理をしてるけど。
ttp://codepad.org/94kYReKf
0949デフォルトの名無しさん
2011/11/01(火) 07:52:30.45Oh...、要らないですね、修正時にミスった
0951デフォルトの名無しさん
2011/11/01(火) 08:02:19.590952デフォルトの名無しさん
2011/11/01(火) 08:18:34.280953デフォルトの名無しさん
2011/11/01(火) 09:44:11.270954デフォルトの名無しさん
2011/11/01(火) 11:32:44.62[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使用の書換、データの入れ替えは習いました。
宜しくお願いします。
0955デフォルトの名無しさん
2011/11/01(火) 11:43:32.43サメガメじゃね?
0956デフォルトの名無しさん
2011/11/01(火) 12:25:25.90http://ideone.com/dwU0J
http://ideone.com/l4VcV
0957デフォルトの名無しさん
2011/11/01(火) 16:38:20.39[2] 問題文(含コード&リンク):n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C
[4] 期限:11/6
[5] その他の制限:多倍長整数使ってほしいです。
0958デフォルトの名無しさん
2011/11/01(火) 18:09:53.77int 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;
}
0959デフォルトの名無しさん
2011/11/01(火) 18:43:12.51最大36,000桁くらいになるから、
X a[1000]
O a[10000]
0960デフォルトの名無しさん
2011/11/01(火) 18:45:14.170961デフォルトの名無しさん
2011/11/01(火) 21:15:54.15[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 ?)
このように計算したら出るよ、でも結構ですのでよろしくお願いします
0962デフォルトの名無しさん
2011/11/01(火) 22:46:39.26最小値+最大値=奇数の時の仕様が不明だが、計算部分だけ作ってみた。
http://ideone.com/0K4HA
0963デフォルトの名無しさん
2011/11/01(火) 22:47:25.69http://codepad.org/5GkJFWVH
中央値の算出に画像行列をソートする関係で計算の順番が違っているので注意
0964デフォルトの名無しさん
2011/11/01(火) 22:55:45.19おっと、33-35行で間違いだ
正:
double mode = *( max_element( m.begin(), m.end(),
[]( Dimap::value_type lhs, Dimap::value_type rhs ){ return lhs.second < rhs.second; }
) ).first;
0965デフォルトの名無しさん
2011/11/02(水) 00:07:35.17ありがとうございます
参考にさせていただきます
0966デフォルトの名無しさん
2011/11/02(水) 00:22:12.26訂正
参考にさせていただきます→コピペさせていただきます
0967デフォルトの名無しさん
2011/11/02(水) 07:55:25.150968デフォルトの名無しさん
2011/11/02(水) 16:38:37.82[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
0969デフォルトの名無しさん
2011/11/02(水) 17:05:04.58入力されたら
その数列の最大値と最小値の場所を入れ替えて左から表示するプログラムを教えてください
0970デフォルトの名無しさん
2011/11/02(水) 17:24:32.72#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));
}
0971デフォルトの名無しさん
2011/11/02(水) 17:35:25.93>>1
0972デフォルトの名無しさん
2011/11/02(水) 17:43:49.05http://codepad.org/4WWUIiho
0973デフォルトの名無しさん
2011/11/02(水) 18:58:01.21#include<stdio.h>
main(){
while(1){
printf(" ハ,,ハ \n");
printf(" ( ゚ω゚ ) お断りします \n");
printf(" / \ \n");
printf(" ((⊂ ) ノ\つ)) \n");
printf(" (_⌒ヽ \n");
printf(" ヽ ヘ } \n");
printf(" ε≡Ξ ノノ `J \n");
}
}
0974デフォルトの名無しさん
2011/11/03(木) 01:39:05.190975デフォルトの名無しさん
2011/11/03(木) 02:11:41.44http://codepad.org/s1Q9oTmn
0976デフォルトの名無しさん
2011/11/03(木) 02:26:25.58int 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;
}
0977デフォルトの名無しさん
2011/11/03(木) 02:34:16.260978デフォルトの名無しさん
2011/11/03(木) 07:30:08.54[2] 問題文(含コード&リンク):ガウスの消去法を使って、
n元連立一次方程式をとくプログラミングを作成しろ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:)C言語
[4] 期限: 11月4日
[5] その他の制限:
配列をすこし習いました、#math.hやマクロなどは使わないいただきたいです
0979デフォルトの名無しさん
2011/11/03(木) 08:42:30.97有難う御座います
0980デフォルトの名無しさん
2011/11/03(木) 09:02:43.67[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] その他の制限
0981デフォルトの名無しさん
2011/11/03(木) 10:20:41.46[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
0982デフォルトの名無しさん
2011/11/03(木) 15:57:11.11http://ideone.com/V4sGe
0983デフォルトの名無しさん
2011/11/03(木) 23:55:45.01[2] 問題文(含コード&リンク):ダイクストラ法のプログラミングを作成し、最短経路を求めなさい
http://ideone.com/db5A8
自分で書いてみたのですが、途中までしか最短経路が求められません
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:gcc-4.3.4
[3.3] 言語: C++
[4] 期限: 2011年11月6日
よろしくお願いします。
0984デフォルトの名無しさん
2011/11/04(金) 00:28:53.00[2] 問題文(含コード&リンク):文字を一文字入力して、
入力された文字が、英字の小文字であるか、
英字の大文字であるか、数字であるか、それ以外の文字であるか
判別して、判別結果を表示するプログラムを作成せよ。
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:gcc-4.3.4
[3.3] 言語: C++
[4] 期限: 2011年11月5日
よろしくお願いします
0985デフォルトの名無しさん
2011/11/04(金) 00:30:17.94[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日
すみません、こちらも同時にお願いします
よろしくお願いします
0986デフォルトの名無しさん
2011/11/04(金) 01:21:29.56http://ideone.com/SSDcg
0987デフォルトの名無しさん
2011/11/04(金) 01:23:52.32#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;
}
}
0988デフォルトの名無しさん
2011/11/04(金) 01:28:43.26すみません、書き込み不足がありました。
include<studio.h>
int main()
固定です
0989デフォルトの名無しさん
2011/11/04(金) 02:27:20.99http://ideone.com/4SpFT
こんな感じでどうでしょう。
初めてcurses.h使ってなかなか楽しかった。
ネットで見たところWindowsでもcurses.h動くみたいだし頑張ってくださいな。
0990デフォルトの名無しさん
2011/11/04(金) 09:06:53.950991デフォルトの名無しさん
2011/11/04(金) 09:08:42.91C/C++の宿題片付けます 153代目
http://hibari.2ch.net/test/read.cgi/tech/1320365280/
0992デフォルトの名無しさん
2011/11/04(金) 09:10:16.710993デフォルトの名無しさん
2011/11/04(金) 09:34:24.65文字コードによる
0994デフォルトの名無しさん
2011/11/04(金) 09:35:07.65という課題があるのですが
まったくわからないので教えてください
0995デフォルトの名無しさん
2011/11/04(金) 09:44:21.11�d
0996デフォルトの名無しさん
2011/11/04(金) 10:56:37.13もう一度スレの頭から読み返せ
std::cout << "zero\n"
std::cout << "one\n"
...
std::cout << "a thousand" << std::endl;
みたいなのが返ってくるぞ
0997デフォルトの名無しさん
2011/11/04(金) 11:55:37.42不安なら
std::string lower = "abcdefghijklmnopqrstuvwxyz";
std::cin >> inputChar;
if (lower.find(inputChar) != string::npos) {
// 小文字ですよ
} else ....
ってやればいいんじゃね。
0998デフォルトの名無しさん
2011/11/04(金) 12:07:08.62<cctype>も積極的に使おう
0999デフォルトの名無しさん
2011/11/04(金) 13:19:25.00ってクラスの関数宣言じゃないの?
誰か教えて
1000デフォルトの名無しさん
2011/11/04(金) 13:19:39.1410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。