C/C++の宿題片付けます 150代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/06/22(水) 22:27:21.86【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題片付けます 149代目
http://hibari.2ch.net/test/read.cgi/tech/1307166756/
0002デフォルトの名無しさん
2011/06/22(水) 23:13:47.750003デフォルトの名無しさん
2011/06/22(水) 23:22:12.130004デフォルトの名無しさん
2011/06/23(木) 00:00:58.21[1]授業単元:C言語演習
[2] 16個の整数を昇順に整列したものを標準出力する関数
void sort(int a,intb,intc,intd, int e,int f,int g,inth, inti,int j,int k,int l, int m,int n,int o,int p)
を書きなさい
但しコードには配列演算子やポインタ演算子が現れてはならない。
[3]Linux(Ubuntu)/gcc4.5/C言語
[4] この150スレが終わるまで
[5]どのようなパターンでも確実に整列されることが必要です。
出来るだけ短いコードでお願いします。
0005デフォルトの名無しさん
2011/06/23(木) 00:10:41.090006デフォルトの名無しさん
2011/06/23(木) 09:13:27.08透明あぼ〜んにしとけ。捗るぞ。
0007デフォルトの名無しさん
2011/06/23(木) 12:46:39.730008デフォルトの名無しさん
2011/06/23(木) 13:04:43.81死ね
0009デフォルトの名無しさん
2011/06/23(木) 13:13:42.60name (文字列50字)
height ←実数
weight ←実数
bmi ←実数
これらをメンバとする構造体 pationdata の配列を定義する(charやintやdoubleなどをそれぞれの前につけます)。
複数の人のデータを入れれる構造体 pationdata の配列を作成する。
datafile.dat からデータを読み込んで、配列に保存していく。
ここで注意するのは、ここで上から下までデータを読み込んだ時、データ数に合わせた配列が出来るようにすること。
以下 datafile.dat の中身例
tom 1.65 59.2
jim 1.80 63.5
(左から名前、身長、体重)
配列に保存したデータを関数 BMI ( ) に渡す。
この中で bmi を計算し、構造体の bmi メンバに保存する。
配列に入っているデータを datafile2.dat に出力する。
以下 datafile2.dat の中身例
tom 1.65 59.2 21.70
jim 1.80 63.9 22.10
(右端にBMI数値を追加)
最後にdatafile2.datを閉じる。
尚、datafile.datの中身は自由に決めてよい。
bmi = weight / height * height
(BMIは体重÷身長の2乗)
0010デフォルトの名無しさん
2011/06/23(木) 13:14:23.59[3] 環境
[3.1] OS: Windows7
[3.2] Visua Studio 2008
[3.3] 言語: C
[4] 期限: 6月28日09:00まで
[5] その他の制限:ありません
0011デフォルトの名無しさん
2011/06/23(木) 13:50:20.31そのような発言はいただけませんねぇ。
私には彼女がいますが。それでもあなたは考えをなんでし
どういう了見でしょうかねぇ。
0012デフォルトの名無しさん
2011/06/23(木) 20:21:23.35[2] 問題文(含コード&リンク):
読み込むファイルはinput.txtに固定されていたが、それを拡張する。
プログラム実行時に、ファイル名を入力させ、ファイルが読み込み出来ない場合には、ファイル名を繰り返し再入力させるように改良しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:今すぐに頼む!
0013デフォルトの名無しさん
2011/06/23(木) 22:20:59.31> 読み込むファイルはinput.txtに固定されていた
何が?
0014デフォルトの名無しさん
2011/06/23(木) 22:31:51.45これより前の問題を使った問題か?
0015デフォルトの名無しさん
2011/06/23(木) 22:39:15.54[2] 問題文(含コード&リンク):
ランダムに100個の実数を表示しよ。
実数の範囲は-10.000<=x<=10.000とする。
[3] 環境
[3.1] OS: Windows7
[3.2] gcc
[3.3] 言語:C
[4] 期限:6月24 9:00
0016デフォルトの名無しさん
2011/06/23(木) 23:01:01.10どう考えても、それは単一の問題じゃないだろう。
中学生以上の人間なら、それを理解したうえで、前の問題も併せて書きこむと思うが。
とりあえず、それの前のプログラムとの一番大きな違いは、
fopenの引数に書いていたであろう"input.txt"の部分を
文字列として扱うことのできる変数(あえてあいまいな言い方にしてる)にし、その変数に
事前に、外部からの入力を行った結果を格納しておくこと、だな。
そして、fopenの戻り値を調べ、失敗の間は入力とファイルオープンをループをする。
という処理も書いておく必要があるって感じでファイト。
0017デフォルトの名無しさん
2011/06/23(木) 23:51:17.11[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://codepad.org/fhdTth9b
ここまで出来て居て、このプログラムが動くようにして欲しいです。
また、行列式 A は
http://uproda11.2ch-library.com/3022327nt/11302232.jpg
の行列式で、X がどの数値になれば式が成り立つかもお願いしたいです・・。
あともし出来ればなのですが、このプログラムを別の形式のプログラムで同じ様に動くプログラムを
組んで頂けると嬉しいです(´・ω・`)
ごめんなさい。
[3] 環境
[3.1] OS:windows7
[3.2] コンパイラ名とバージョン:visual stadio 2008
[3.3] 言語: c++
[4] 期限: 6月24日の朝10時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
http://codepad.org/fhdTth9b
のプログラムの感じで、とにかく動くようにして頂きたいです・・(´・ω・`)
0018デフォルトの名無しさん
2011/06/24(金) 00:16:10.52何のための勉強かと
0019デフォルトの名無しさん
2011/06/24(金) 00:24:49.10男か女かはっきりしてください
0020デフォルトの名無しさん
2011/06/24(金) 00:50:52.27一応、女です
帰省中だから少しレス遅れちゃいます(´・ω・`)
0021デフォルトの名無しさん
2011/06/24(金) 00:56:51.77W52SAで写メっておっぱいうp
0022デフォルトの名無しさん
2011/06/24(金) 00:58:40.02なんかLUから間違ってるな・・・
0023デフォルトの名無しさん
2011/06/24(金) 01:01:24.050024デフォルトの名無しさん
2011/06/24(金) 01:03:35.89うっせえ!俺は女の味方だ!
0025デフォルトの名無しさん
2011/06/24(金) 01:16:22.75☺
0026デフォルトの名無しさん
2011/06/24(金) 01:24:39.750027デフォルトの名無しさん
2011/06/24(金) 01:38:11.01一応コンパイルは通るけど写真の行列の計算は出来ないよ
ピボット選択してないから計算途中に無限大とか出てきてた
http://ideone.com/Kllk3
0028デフォルトの名無しさん
2011/06/24(金) 02:12:21.04http://codepad.org/pW8MSESb
0029デフォルトの名無しさん
2011/06/24(金) 09:58:25.580030デフォルトの名無しさん
2011/06/24(金) 13:00:04.22期限過ぎたけど
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int i;
for (i = 100; i; i--) {
if (!(i % 10))
putchar('¥n');
printf("%7.3f ", (rand() % 20000 - 10000) / (double) 1000);
}
return 0;
}
0031デフォルトの名無しさん
2011/06/24(金) 15:45:00.57いつもタブ幅8なの?
4が多いのかと思ってたけどそうでも無いのか。
0032デフォルトの名無しさん
2011/06/24(金) 16:42:53.21[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
べき乗(nのk乗)を求める関数int power(int n, int k)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:来週の金曜日まで
0033デフォルトの名無しさん
2011/06/24(金) 16:51:51.79#include <stdio.h>
int power(int n, int k) {
int sum = 1;
while (k--)
sum *= n;
return sum;
}
void test(int n, int k) {
printf("%d^%d = %d\n", n, k, power(n, k));
}
int main()
{
test(1, 2);
test(10, 4);
test(2, 10);
getchar();
return 0;
}
0034デフォルトの名無しさん
2011/06/24(金) 16:55:59.770035デフォルトの名無しさん
2011/06/24(金) 18:02:12.340036デフォルトの名無しさん
2011/06/24(金) 18:09:36.46これが意味分からん
つーか言葉通りだと不可能
reallocして余分無いようにしとけってことなのかなぁ
それともデータ数決め打ちってことか?
0037デフォルトの名無しさん
2011/06/24(金) 18:40:03.35読み込むファイルの中身が変化しても、対応出来るようにする。という意味です。
不可能ならば、その『データ数決め打ち』のように、個人の解釈で構いません。
0038デフォルトの名無しさん
2011/06/24(金) 18:42:49.88ありがとう
言われてみればそのほうが自然ですね
変な考えしていたようです
別にこの課題やるわけじゃないが
0039デフォルトの名無しさん
2011/06/24(金) 20:38:04.15[2] 問題文(含コード&リンク): http://loda.jp/vip2ch/?id=2239
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日までによろしくお願いします。
0040デフォルトの名無しさん
2011/06/24(金) 20:51:33.92>>35
http://ideone.com/R8W8b
0041デフォルトの名無しさん
2011/06/24(金) 20:59:27.15[2] 問題文(含コード&リンク): http://loda.jp/vip2ch/?id=2240
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日まで。
0042デフォルトの名無しさん
2011/06/24(金) 21:04:15.88リンク先で見てください?どんだけ上から目線で依頼してんだよ
0043デフォルトの名無しさん
2011/06/24(金) 21:05:07.470044デフォルトの名無しさん
2011/06/24(金) 21:10:35.46放置
0045デフォルトの名無しさん
2011/06/24(金) 21:39:54.41ありがとうございます!!
本当に助かりました!!
0046デフォルトの名無しさん
2011/06/24(金) 21:40:46.380047デフォルトの名無しさん
2011/06/24(金) 21:43:17.59内容に支障ないだろうから、問題文をテキストで上げ直すか、ここに書いてみて
0048デフォルトの名無しさん
2011/06/24(金) 21:46:06.250049デフォルトの名無しさん
2011/06/25(土) 06:49:32.90#include <stdio.h>
int main()
{
enum {NAME, TEL};
char s[100][2][100], name[100];
int num = 0, i, flg = 1;
puts("実行結果");
printf("人数 > ");
scanf("%d", &num);
for (i = 0; i < num; i++) {
printf("%d人目:\n", i);
printf("名前 > ");
scanf("%s", s[i][NAME]);
printf("電話番号 > ");
scanf("%S", s[i][TEL]);
}
puts("\n電話帳");
for (i = 0; i < num; i++)
printf("%s, %s\n", s[i][NAME], s[i][TEL]);
printf("\n名前 > ");
scanf("%s", name);
for (i = 0; i < num; i++) {
if (!strcmp(name, s[i][NAME])) {
printf("%s, %s\n", s[i][NAME], s[i][TEL]);
flg = 0;
}
}
if (flg)
puts("該当者なし");
}
0050デフォルトの名無しさん
2011/06/25(土) 09:01:43.51[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
階乗(n!=n*(n-1)*…*2*1)を求める関数int factorial(int n)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:来週の金曜日まで
0051デフォルトの名無しさん
2011/06/25(土) 09:06:22.510052デフォルトの名無しさん
2011/06/25(土) 09:52:49.42#include <stdio.h>
#include <math.h>
int factorial(int n)
{
int result;
for (result = 1; n > 0; n--)
result *= n;
return result;
}
int main(int argc, char **argv)
{
int i;
for (i = 1; i < argc; i++) {
int v = atoi(argv[i]);
if (v > 0) /* 問題の定義通り。一般的な定義ではv >= 0 */
printf("%d! = %d\n", v, factorial(v));
}
return 0;
}
0053デフォルトの名無しさん
2011/06/25(土) 10:10:49.68[2] 問題文(含コード&リンク):
問1:極座標形式の複素数を2つ読み込み,それぞれの複素数の絶対値,2つの複素数の和・差・積を出力するプログラムを作成せよ.
問2:名前を読み込み,配列 telbook を検索して,その名前に該当する人の電話番号を出力するプログラムを以下を穴埋めして作成せよ.
問3:問2の関数 search() を以下のように変更せよ.ただし,ドット演算子(.)を使用してはならない.アロー演算子(->)を用いること.
書式
struct person *search(struct person *p, int n, char *name)
返り値
pで指し示されたアドレスから長さnのperson型の構造体の配列に名前nameの人が格納されている要素がある場合はその要素へのポインタ.そうでない場合はNULL.
http://loda.jp/vip2ch/?id=2246
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:本日中
0054デフォルトの名無しさん
2011/06/25(土) 12:29:05.49入力例がないと解けない
r(cos(θ) + isin(θ))を入力させてパースするの?
0055デフォルトの名無しさん
2011/06/25(土) 12:57:39.55お前の目は節穴か?
0056デフォルトの名無しさん
2011/06/25(土) 14:08:56.580057デフォルトの名無しさん
2011/06/25(土) 14:10:53.98ファイル落とすとかだりーよ
0058デフォルトの名無しさん
2011/06/25(土) 14:21:35.020059デフォルトの名無しさん
2011/06/25(土) 14:49:47.64{
return aArg.r;
}
struct Complex multComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;
ret.r = aArg.r * bArg.r;
ret.theta = aArg.theta + bArg.theta;
return ret;
}
struct Complex subComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;
ret.r = sqrt(aArg.r * aArg.r + bArg.r * bArg.r + 2 * aArg.r * bArg.r * cos(bArg.theta));
ret.theta = aArg.theta - acos((aArg.r * aArg.r + ret.r * ret.r - bArg.r * bArg.r) / (2 * aArg.r * ret.r));
return ret;
}
0060デフォルトの名無しさん
2011/06/25(土) 16:25:03.44問1
ttp://ideone.com/B3pyn
イレギュラーな入力を仮定しないならwhile取っ払ってscanfだけでおk
問2,3
元コード無し
0061デフォルトの名無しさん
2011/06/25(土) 17:37:34.31まさかそこまで素人なの?
0062デフォルトの名無しさん
2011/06/25(土) 17:44:00.130063デフォルトの名無しさん
2011/06/25(土) 20:56:46.31[2] 問題文(含コード&リンク):
文字や記号を使って、画面にキャラクターの絵を描画する。1,2,3,4の入力を行なった場合に、それぞれ異なる絵に切り替わるようなプログラムを作成しなさい。
なお、0が入力されるまで繰り返し操作ができるものとする。
プログラムは、4種の表示ごとに4つの関数を作成することとする。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:来週の金曜日まで
0064デフォルトの名無しさん
2011/06/25(土) 21:14:01.08絵のデータplz
0065デフォルトの名無しさん
2011/06/25(土) 21:27:17.88なんでdocも読めない素人か口出してくるの?
テキストしか使えない人は引っ込んでたらいいのに・・・
0066デフォルトの名無しさん
2011/06/25(土) 22:00:19.82どこの誰が作ったかわからないファイルを開きたくないんだよ。
>65のPCがどんなウィルスにやられているかわからないよ。
すぐにスキャンしたほうがいいかも。
どうしても表とか、スライドにしたいときはgoogle docsという手も
あるんだし。
0067デフォルトの名無しさん
2011/06/25(土) 22:12:59.62慎重にならざるを得ない。
0068デフォルトの名無しさん
2011/06/25(土) 22:40:22.03スキルの低い人はこれだから困る
安全にdocを開く方法をマスターしてくれ
0069デフォルトの名無しさん
2011/06/25(土) 22:42:21.00無理なら文句言わずにスルーでおk
0070デフォルトの名無しさん
2011/06/25(土) 22:50:05.97AAでいいみたい
QBとか好きな奴でいいよ
0071デフォルトの名無しさん
2011/06/26(日) 00:15:01.27>安全にdocを開く方法をマスターしてくれ
kwsk
0072デフォルトの名無しさん
2011/06/26(日) 01:09:29.21http://ideone.com/6KVnY
0073デフォルトの名無しさん
2011/06/26(日) 01:12:26.45ミス
http://ideone.com/vVfal
0074デフォルトの名無しさん
2011/06/26(日) 02:17:33.92簡単なデータベースマネジメントシステムをCで作ってるんだがデータをロードする際の
while (fgets(buf, 100, fp) != NULL) {
strcpy(p->name, buf);
}
これは何がいけないんだろう
pは構造体を指すポインタでnameはその中のchar型の配列
bufもchar型の配列
0075デフォルトの名無しさん
2011/06/26(日) 02:29:29.36>これは何がいけないんだろう
どのようにいけなかったのか、詳しく。
あと、name のサイズは?
コードを codepad で晒すと回答が早いかも。
0076デフォルトの名無しさん
2011/06/26(日) 02:30:17.89p.nameでないか。
0077デフォルトの名無しさん
2011/06/26(日) 03:02:06.04>pは構造体を指すポインタ
0078デフォルトの名無しさん
2011/06/26(日) 03:04:28.03fgetって改行コードもbufに読み込むんだけどそれは分かってるよね?
0079デフォルトの名無しさん
2011/06/26(日) 03:16:07.26実行が泊まっちゃうっていうエラー
改行までをp->nameに入れるライプラリ関数はあるのだろうか
0080デフォルトの名無しさん
2011/06/26(日) 03:21:20.770081デフォルトの名無しさん
2011/06/26(日) 04:07:29.11ソースコードは問題を再現可能な最低限の量にしろ
そうすることで自己解決できる場合がほとんど
fopenの成否に関わらずfgetsしてるけど入力したファイル名はちゃんと存在してる?
0082デフォルトの名無しさん
2011/06/26(日) 04:48:06.830083デフォルトの名無しさん
2011/06/26(日) 04:54:45.38そのための◆QZaw55cn4c謹製 char *mygetline(FILE *fp); です。いちどお試しあれ。
0085デフォルトの名無しさん
2011/06/26(日) 08:31:45.90>実行が泊まっちゃうっていうエラー
エラーメッセージもちゃんと伝えられないなら、マ辞めた方がいいかも。
0086デフォルトの名無しさん
2011/06/26(日) 09:07:52.87不具合が出るときの操作手順の提示がないとわからないよ。
とりあえずメニューで7のload選択時とします。
>83指摘のリスト用バッファが確保されていないことが、不具合の原因でしょう。
registerの場合はnewListを呼んでノードを確保してリストにつないでいます。
loadListの中では、1レコード読み込むごとに、newListを呼ぶ必要があると思いますよ。
0087デフォルトの名無しさん
2011/06/26(日) 09:43:29.44[2] 問題文(含コード&リンク):問1~問3までの問題について解答お願いします。http://codepad.org/IhwnSjHF
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日まで。
0088デフォルトの名無しさん
2011/06/26(日) 10:15:43.76問1って和求める関数ないけどどうでもいいの?
0089デフォルトの名無しさん
2011/06/26(日) 10:30:12.71俺だけか?
0090デフォルトの名無しさん
2011/06/26(日) 10:50:09.82お前後から付け足ししてんじゃねーぞ
0091デフォルトの名無しさん
2011/06/26(日) 11:01:46.41◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
0092デフォルトの名無しさん
2011/06/26(日) 11:45:55.200093デフォルトの名無しさん
2011/06/26(日) 12:07:59.90NGワードにいれとけ
0094デフォルトの名無しさん
2011/06/26(日) 12:23:37.820095デフォルトの名無しさん
2011/06/26(日) 14:32:24.07[2] 問題文(含コード&リンク):
10人分の数学の得点を整数で入力し、60点以上の人数、60点未満の人数を求めるプログラムを作成しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:6月28日まで
[5] その他の制限:for文とif〜else文を使っておねがいします
0096デフォルトの名無しさん
2011/06/26(日) 14:49:56.05#include <stdio.h>
int main()
{
int tokuten[10] = {0}, i, ijo60 = 0, miman60 = 0;
for (i = 0; i < 10; i++) {
printf("%d人目: ", i + 1);
scanf("%d", &tokuten[i]);
if (60 <= tokuten[i]) {
ijo60++;
} else if (tokuten[i] < 60) {
miman60++;
}
}
printf("60点以上は%d人\n", ijo60);
printf("60点未満は%d人\n", miman60);
}
0097デフォルトの名無しさん
2011/06/26(日) 15:01:22.52なんで普通に...
if(60 <= tokuten[i]){
ijo60++;
} else {
minan60++;
}
ってしないの?
0098デフォルトの名無しさん
2011/06/26(日) 15:57:24.290099デフォルトの名無しさん
2011/06/26(日) 16:03:26.44struct Complex subComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;
ret.r = sqrt(aArg.r * aArg.r + bArg.r * bArg.r - 2 * aArg.r * bArg.r * cos(aArg.theta - bArg.theta));
ret.theta = aArg.theta - acos((ret.r * ret.r + aArg.r * aArg.r - bArg.r * bArg.r) / (2 * ret.r * aArg.r));
return ret;
}
addは
struct Complex addComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;
ret.r = sqrt(aArg.r * aArg.r + bArg.r * bArg.r + 2 * aArg.r * bArg.r * cos(aArg.theta - bArg.theta));
ret.theta = aArg.theta + acos((ret.r * ret.r + aArg.r * aArg.r - bArg.r * bArg.r) / (2 * ret.r * aArg.r));
return ret;
}
0100デフォルトの名無しさん
2011/06/26(日) 16:22:01.69ありがとうございます
0101デフォルトの名無しさん
2011/06/26(日) 18:23:07.93ちゃんと◆QZaw55cn4cって付けろよクズ
0102デフォルトの名無しさん
2011/06/26(日) 18:25:24.360103デフォルトの名無しさん
2011/06/26(日) 18:26:42.37なんでかって言われれば、最初0-100の範囲だと思って作ってあとから消したからだな
ミスだなすまん
0104デフォルトの名無しさん
2011/06/26(日) 18:31:59.17>>97
ありがとうございました
0105デフォルトの名無しさん
2011/06/26(日) 18:33:33.42あ、いや別に責めるつもりはなくて、純粋になんでかなと
思っただけだから、気にしないで。
0106デフォルトの名無しさん
2011/06/26(日) 18:36:14.12問題文がこうあるから、忠実に反映したのかと思ってた。
0107デフォルトの名無しさん
2011/06/26(日) 21:25:25.72[2] 問題文(含コード&リンク):名前を読み込み,配列 telbook を検索して,その名前に該当する人の電話番号を出力するプログラムを以下を穴埋めして作成せよ.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日
0108デフォルトの名無しさん
2011/06/26(日) 21:27:15.22#include <string.h>
#define MAX 100
struct person {
char name[MAX];
char telno[MAX];
};
int search(struct person telbook[], int n, char *name)
{
/* ... */
}
int main(void)
{
char name[MAX];
struct person telbook[] =
{ {"Taro", "090-111-1111"},
{"Hanako", "090-222-2222"},
{"Ichiro", "090-333-3333"},
{"Jiro", "090-444-4444"},
{"Hanayo", "090-555-5555"} };
int n = 5; /* 電話帳に登録された人数 */
int idx;
printf("名前 > "); scanf("%s", name);
idx = search(telbook, n, name);
if (idx < 0) {
printf("該当者なし\n");
} else {
printf("%s\n", telbook[idx].telno);
}
return 0;
}
0109デフォルトの名無しさん
2011/06/26(日) 21:30:31.08[2] 問題文(含コード&リンク):
上のプログラムの関数 search() を以下のように変更せよ.ただし,ドット演算子(.)を使用してはならない.アロー演算子(->)を用いること.
書式
struct person *search(struct person *p, int n, char *name)
返り値
pで指し示されたアドレスから長さnのperson型の構造体の配列に名前nameの人が格納されている要素がある場合はその要素へのポインタ.そうでない場合はNULL.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日
0110デフォルトの名無しさん
2011/06/26(日) 22:11:12.00コミュ能力欠如しすぎだろ・・・
0111デフォルトの名無しさん
2011/06/26(日) 23:41:08.190112デフォルトの名無しさん
2011/06/27(月) 14:28:50.28#include <stdio.h>
#include <string.h>
#define MAX 100
struct person {
char name[MAX];
char telno[MAX];
};
struct person *search(struct person *p, int n, char *name)
{
int i;
struct person *pussy = NULL;
for (i = 0; i < n; i++)
if (!strcmp((p+i)->name, name))
return p + i;
return NULL;
}
int main(void){
char penis[MAX];
struct person vagina[] =
{ {"Taro", "090-111-1111"},
{"Hanako", "090-222-2222"},
{"Ichiro", "090-333-3333"},
{"Jiro", "090-444-4444"},
{"Hanayo", "090-555-5555"} };
int n = 5; /* 電話帳に登録された人数 */
struct person *anal;
printf("名前 > "); scanf("%s", penis);
anal = search(vagina, n, penis);
if (anal) { printf("%s\n", anal->telno);
} else { printf("該当者なし\n");}
return 0;}
0113デフォルトの名無しさん
2011/06/27(月) 20:45:33.27[2] 整数を読み込み,その整数より小さい3の倍数をすべて表示するプログラムを作りなさい.
ただし,for文を用いた方法とwhile文を用いた方法の両方を考えて,ひとつのプログラムにまとめること.
[3] 環境
[3.1] MacOS
[3.2] xcode
[3.3] C言語
[4] 明日の夜10時まで
[5] 特になし
よろしくお願いします。
0114デフォルトの名無しさん
2011/06/27(月) 20:47:42.000115デフォルトの名無しさん
2011/06/27(月) 20:54:11.07#include <stdio.h>
#define FOR
int main()
{
int unko = 0;
scanf("%d", &unko);
unko -= unko % 3;
#ifdef FOR
for (; 0 < unko;){
#else
while (0 < unko) {
#endif
printf("%d ", unko);
unko -= 3;
}
}
正の倍数ってことでいいんだろうなってことにしといた
0116デフォルトの名無しさん
2011/06/27(月) 21:18:00.740117デフォルトの名無しさん
2011/06/27(月) 21:22:51.77http://codepad.org/Cz1slClR
pythonなら簡単なのに
0118デフォルトの名無しさん
2011/06/27(月) 21:25:39.42なんでこのスレに来たの?
0119デフォルトの名無しさん
2011/06/27(月) 23:32:44.08LL初心者って1行に詰め込みすぎるよね
0120デフォルトの名無しさん
2011/06/28(火) 07:54:38.88プロセス終了時にmemset(,0,sizeof(..)を呼び出しmallocする奴は市ね
0121デフォルトの名無しさん
2011/06/28(火) 08:05:25.20しかけかたが下手ですね。宿題の回答をみて、こいつは沸騰しやすいやつだと読み取って、
狙いをつけて急所を逃さずしつこく絡まないと、スルーされるだけですよう。
このスレでそれがうまいのはQZ、しかけられた相手はほとんど例外なく、燃え上がる。
QZが間違っていることのほうが多いが、それと楽しませてくれるのとは、また別の話。
0122デフォルトの名無しさん
2011/06/28(火) 08:32:06.490123デフォルトの名無しさん
2011/06/28(火) 09:27:26.26◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
0124デフォルトの名無しさん
2011/06/28(火) 11:11:43.95[2] 問題文(含コード&リンク)
結果が以下のようになるC言語プログラムを作りなさい。
行列A,Bの各要素はscanf関数を使って標準入力から設定すること
Matrix A
5.0 4.0 3.0
4.0 3.0 2.0
3.0 2.0 1.0
Matrix B
1.0 2.0 3.0
2.0 3.0 4.0
3.0 4.0 5.0
Matrix C = A - B
4.0 2.0 0.0
2.0 0.0 -2.0
0.0 -2.0 -4.0
Matrix D = A * B
22.0 34.0 46.0
16.0 25.0 34.0
10.0 16.0 22.0
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:6月29日
よろしくお願いします。
0125デフォルトの名無しさん
2011/06/28(火) 12:38:37.39[2] 問題文(含コード&リンク):
(1) 下記に示したプログラム aとb の機能の違いを説明せよ
(2) b で追加された関数を活用するため、検索Keyが複数ある場合にすべての候補を出力するプログラムに改造せよ。
(3) 改造したプログラムのかんたんな動作原理、設計方針を述べよ。
プログラムa:http://www.dotup.org/uploda/www.dotup.org1742455.c
プログラムb:http://www.dotup.org/uploda/www.dotup.org1742457.c
(2)で求めるプログラム実行例:http://www.dotup.org/uploda/www.dotup.org1742458.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: visual studio 2008
[3.3] 言語: C
[4] 期限: 2011年6月29日22:00
[5] その他の制限: 特になし
よろしくおねがいします。
0126デフォルトの名無しさん
2011/06/28(火) 12:57:42.83[2] �@ http://codepad.org/om7viTIZ を参考に、if文とfor文を使って
3×3の奇数魔方陣を表示するプログラムを作成しなさい。
�A �@を改良し、奇数を入力してその大きさの魔方陣を表示するプログラムを作成しなさい。
[3.1] Windows7
[3.3] C言語
[4] 期限: �@ 今日の19時まで �A 明日の19時まで
[5] 配列まで
わかる方どうかよろしくお願いします。
0127デフォルトの名無しさん
2011/06/28(火) 13:00:15.08(1) bは何個あるかも教えてくれる
(2)http://ideone.com/v2bR1
(3)seachによって見つけた要素の次の要素から先をseachにかけることによってsurveyによって得られた個数をすべて見つけるようにした
全部列挙するならむしろservey要らない気がするんだけど
使えと書いてあるから一応返り値を利用という形にしてみた
0128デフォルトの名無しさん
2011/06/28(火) 13:03:45.37ありがとうございます!
0129デフォルトの名無しさん
2011/06/28(火) 13:11:36.34#include <stdio.h>
int main(void)
{
int i, j, k;
double A[3][3], B[3][3], C[3][3], D[3][3];
printf("Matrix A\n");
for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", A[i] + j);
printf("\nMatrix B\n");
for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", B[i] + j);
printf("Matrix C = A - B\n");
for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) C[i][j] = A[i][j] - B[i][j];
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) printf("%.1f ", C[i][j]);
printf("\n"); }
printf("\nMatric D = A * B\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++) {
D[i][j] = 0.0;
for(k = 0; k < 3; k++) D[i][j] += A[i][k] * B[k][j]; }
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) printf("%.1f ", D[i][j]);
printf("\n"); }
return 0; }
0130デフォルトの名無しさん
2011/06/28(火) 13:38:23.71�A
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, j, k, n, **m;
scanf("%d", &n);
if(n & 1 == 0) return 0;
m = malloc(n * sizeof(int*));
for(i = 0; i < n; i++) m[i] = calloc(n, sizeof(int));
for(i = 0, j = n / 2, k = 1; k <= n * n; i--, j++, k++) {
if(i < 0) i = n - 1;
if(j == n) j = 0;
if(m[i][j]) {
i = (i + 2) % n;
j = (j + n - 1) % n; }
m[i][j] = k;
}
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) printf("%d ", m[i][j]);
printf("\n");
free(m[i]);
}
free(m);
return 0;
}
0131デフォルトの名無しさん
2011/06/28(火) 13:46:38.63[2] 問題文(含コード&リンク):http://codepad.org/EEw71Jn2
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011/7/1
よろしくおねがいします
0132131
2011/06/28(火) 13:54:04.71[2] 問題文(含コード&リンク):http://codepad.org/DVzYjrvW
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011/7/1
>>131を改良で作る問題です。
よろしくおねがいします
0134デフォルトの名無しさん
2011/06/28(火) 14:44:46.38ttp://ideone.com/e6ReO
>>132
ttp://ideone.com/Acmrn
0135デフォルトの名無しさん
2011/06/28(火) 14:52:04.34できればif文、for文以外の関数を使用せずに作れませんか?
(習っていない関数は使用できないので)
�@の方もわかればお願いします。
0136デフォルトの名無しさん
2011/06/28(火) 14:57:11.62それよりprintfもscanfもだめなのかよwwwwwww
0137デフォルトの名無しさん
2011/06/28(火) 15:01:09.83いやそれは大丈夫。さすがに習ってるし。
0138デフォルトの名無しさん
2011/06/28(火) 15:08:25.62#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, j, k, n, m[100][100] = {0};
scanf("%d", &n);
if(n & 1 == 0) return 0;
for(i = 0, j = n / 2, k = 1; k <= n * n; i--, j++, k++) {
if(i < 0) i = n - 1;
if(j == n) j = 0;
if(m[i][j]) {
i = (i + 2) % n;
j = (j + n - 1) % n; }
m[i][j] = k;
}
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) printf("%d ", m[i][j]);
printf("\n");
}
return 0;
}
じゃぁこんな感じで
ちなみ俺は>>130じゃない
0139デフォルトの名無しさん
2011/06/28(火) 15:15:42.96&演算子は習っていないので、何かで代用できませんか?
0140デフォルトの名無しさん
2011/06/28(火) 15:17:06.950141デフォルトの名無しさん
2011/06/28(火) 15:21:51.60%演算子も習っていないので、他ので代用できませんか?
0142デフォルトの名無しさん
2011/06/28(火) 15:24:41.55if(n & 1 == 0) return 0;
ととっぱらっていいよ
もともと不完全なエラー処理だし
printf("奇数を入力してください");
に差し替えとけばおk
0143デフォルトの名無しさん
2011/06/28(火) 15:26:30.19#include <stdlib.h>という文(?)は習ってないのですが、
なんとか書き換えられませんか?
あと、>>141は自分ではありません。さすがに習ってるし。
0144デフォルトの名無しさん
2011/06/28(火) 15:27:48.85mallocのためのものなので消していいよ
てか消し忘れてた
0145デフォルトの名無しさん
2011/06/28(火) 15:37:09.90たびたびすみませんが、return(0); の使用回数を1回にできませんか?
(2回使うのはまだ習っていないので)
0146デフォルトの名無しさん
2011/06/28(火) 15:55:56.21宿題人に片付けてもらおうっていうアフォのためのスレだからこんなこと言うのはばかられるんだろうが、
「習ってないから」で勉強しない理由にはならんぞw
学校ってのは教えを乞いに行く場所じゃなく勉強方法を学ぶ場所と思えよw
0147デフォルトの名無しさん
2011/06/28(火) 16:00:27.92おいやめろ
馬鹿が量産された方が市場が肥えていいんだよ
0148デフォルトの名無しさん
2011/06/28(火) 16:03:46.37習ってない文を使ってると突っ返される。
だから嫌でも習ってる文だけを使って作らないとダメなんだ。
0149デフォルトの名無しさん
2011/06/28(火) 16:23:56.25してたって不思議じゃない。褒められこそすれ突っ返される理由にはならない。
もちろん程度はある。バカのQZには理解できないだろうが。
0150デフォルトの名無しさん
2011/06/28(火) 16:34:17.78うちでは基本的に「教えてないことは使ってはいけない」という制約が
あるようなもの。
後、�@分かる方お願いします。差し迫ってるので。
(�Aも早い方が助かりますが。)
0151デフォルトの名無しさん
2011/06/28(火) 17:08:01.960152デフォルトの名無しさん
2011/06/28(火) 17:14:01.65使えるのはif文、if〜else文、for文、あとはprintfとscanfくらい。
0153デフォルトの名無しさん
2011/06/28(火) 17:37:08.61演算子だって何も使えないらしいし、まともなプログラムを作るのは無理だな。
0154デフォルトの名無しさん
2011/06/28(火) 17:41:20.18レスは出来るのにずっとsageないし
0155デフォルトの名無しさん
2011/06/28(火) 17:49:10.45#include <stdio.h>
int main(void)
{
変数宣言
プログラム
return 0;
}
みたいな感じ。使える演算子は+,-,*,/,%,=,==,<,>,<=,>=,&&,||,++,--。
そしてプログラムのなかではreturn 0; は使えない。
0156デフォルトの名無しさん
2011/06/28(火) 17:53:25.33[1] 授業単元:
[2] 問題文(含コード&リンク):
プログラムの実行時間を計れ。
例えば
#include<stdio.h>
int main(void)
{
printf("jikkoujikan");
return 0;
}
の実行時間をプログラム実装によって実行時間が表示されるようにせよ。
[3] 環境
[3.1] windows7
[3.2] gcc
[3.3] C言語のみ
[4] 期限:今日の19時
[5] c言語のみ
0157デフォルトの名無しさん
2011/06/28(火) 19:09:53.06#include<time.h>
...
clock_t s=clock();
...
printf("Elapsed time: %f second.\n",(double)(clock()-s)/CLOCKS_PER_SEC);
...
0158デフォルトの名無しさん
2011/06/28(火) 19:17:50.06[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
べき乗(nのk乗)を求める関数int power(int n, int k)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:来週の金曜日まで
0159デフォルトの名無しさん
2011/06/28(火) 21:12:02.45プログラムに書き換えてくれませんか?
0160デフォルトの名無しさん
2011/06/28(火) 21:25:14.03#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, j, k, n, m[100][100] = {0};
scanf("%d", &n);
if((n & 1) != 0) {
for(i = 0, j = n / 2, k = 1; k <= n * n; i--, j++, k++) {
if(i < 0) i = n - 1;
if(j == n) j = 0;
if(m[i][j]) {
i = (i + 2) % n;
j = (j + n - 1) % n;
}
m[i][j] = k;
}
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) printf("%d ", m[i][j]);
printf("\n");
}
}
return 0;
}
>>138じゃないけど
0161デフォルトの名無しさん
2011/06/28(火) 22:04:57.40115さんどうもありがとうございました!!
0162デフォルトの名無しさん
2011/06/28(火) 22:18:51.05どうもありがとうございます!助かりました!
0163デフォルトの名無しさん
2011/06/28(火) 22:43:06.64ってのはAPIに制限がある開発みたいなもんだ。
まあ教育課程においては「褒められた上でリジェクト」
ってのが正しいあり方かな。
0164デフォルトの名無しさん
2011/06/28(火) 23:02:09.79ListBox1に追加するにはどうすればいいのでしょうか。その時のプログラムコードを教えていただきたいです。
Pribvate Sub btnAdd_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles.btnAdd.Click
End Sub
0165デフォルトの名無しさん
2011/06/28(火) 23:10:52.570166デフォルトの名無しさん
2011/06/28(火) 23:29:15.39[2] 問題文:コンソールから2つの数(数1,数2とする)を入力する.ただし,数1は複数の桁の整数で,数2は1桁の数であるとする.
数2が数1の倍数のときには,数1が数2の倍数である旨を表示し,そうでない場合は,数1が数2の倍数では無い旨,教示する.
そして,数1に含まれる,数字としての数2の個数を数え,結果をコンソールに出力させる.
以上を4つの関数で構成されるプログラムとして作成せよ.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual c
[3.3] 言語:C
[4] 期限: 明日
0167デフォルトの名無しさん
2011/06/28(火) 23:32:32.02実行例
数1を入力して下さい 23242 ←キーボードから23242と入力
数2を入力して下さい 2 ←キーボードから2と入力
23242は2の倍数です
23242に含まれる2の数字は3個です
数1を入力して下さい 323
数2を入力して下さい 3
323は3の倍数ではありません
323に含まれる3の数字は2個です
お願いします
0168デフォルトの名無しさん
2011/06/28(火) 23:33:37.45<仕様>
プログラムを以下の関数で構成する.
�@ 数1が数2の倍数であるか否かの判定の関数
・引数:数1, 数2(いずれもint型)
・戻り値:0または1(いずれもint型)
0…数1は数2の倍数ではない
1…数1は数2の倍数
�A 数1に含まれる数字としての数2の個数を数える関数
・引数:数1, 数2(いずれもint型)
・戻り値:数えた結果の個数(int型)
�B 数1, 数2にまつわる分析を行う関数
・引数:数1, 数2(いずれもint型)
・戻り値:分析結果…2桁の整数
1の位 :数1に含まれる数2の数字の個数
10の位:数1が数2の倍数か否か(0:非倍数,1:倍数))
�C main関数.
・数1, 数2をキーボードから入力する
・上記�Bの分析関数を呼び出す
・下記の分析結果を表示する.
数1が数2の倍数か否か
数1に含まれる数2の数字の個数
関数�@〜�Bの名称やソースプログラム内の位置は任意で良い.
0169デフォルトの名無しさん
2011/06/29(水) 00:35:00.83[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
べき乗(nのk乗)を求める関数int power(int n, int k)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:6/31まで
[5] その他の制限:関数を利用すること、入力できるようにすること
0170デフォルトの名無しさん
2011/06/29(水) 01:05:16.35ttp://ideone.com/72tzo
0171デフォルトの名無しさん
2011/06/29(水) 07:21:33.42>>32>>33
0172デフォルトの名無しさん
2011/06/29(水) 10:53:00.89まるでピエロだな
0173デフォルトの名無しさん
2011/06/29(水) 11:41:49.44数2が負数のとき動作しなくね?
0174デフォルトの名無しさん
2011/06/29(水) 19:48:04.21条件満たしていないので…
0175デフォルトの名無しさん
2011/06/29(水) 19:53:42.71#include <stdio.h>
int power(int n, int k) {
int sum = 1;
while (k--)
sum *= n;
return sum;
}
void test(int n, int k) {
printf("%d^%d = %d\n", n, k, power(n, k));
}
int main()
{
int n, k;
printf("n = ");
scanf("%d", &n);
printf("k = ");
scanf("%d", &k);
if (n <= 0 || k <= 0) {
printf("死ね"); return 1;
}
test(n, k);
return 0;
}
0176デフォルトの名無しさん
2011/06/29(水) 19:55:19.35#include <stdio.h>
int power(int n, int k) { return k == 1 ? n : k & 1 ? n * power(n * n, k / 2) : power(n * n, k / 2); }
int main(void)
{
int n, k;
printf("n = ");
scanf("%d", &n);
printf("k = ");
scanf("%d", &k);
printf("%d^%d = %d\n", n, k, power(n, k));
return 0;
}
0177バカ娘
2011/06/29(水) 22:44:21.96[2]下記の九九の表を作るプログラムを作れ
1
2 4
3 6 9
.......
8 16 24...64
9 18 27...72
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:6/30まで
全く分からないので宜しくお願いします。
0178デフォルトの名無しさん
2011/06/29(水) 22:57:05.27#include <stdio.h>
int main(void)
{
int i, j;
for(i = 1; i <= 9; i++) {
for(j = 1; j <= i; j++) printf("%d ", i * j);
printf("\n");
}
return 0;
}
0179デフォルトの名無しさん
2011/06/29(水) 22:57:23.50#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
printf("%d ", i * j);
}
printf("\n");
}
return0;
}
0180デフォルトの名無しさん
2011/06/29(水) 22:57:47.209の段は81までじゃなくて72までなのか…
0181バカ娘
2011/06/30(木) 08:22:15.800182バカ娘
2011/06/30(木) 09:01:59.740183七緒
2011/06/30(木) 09:06:01.54つぎのようにソートするプログラムを作れ.
大きさ10の配列x, y を用いて,i番目の点の座標をそれぞれx[i], y[i] に入れる.
(梅) x座標の値の昇順
(原点より近い点から遠い点の順)
注意:点を入れ替える時には,x 座標だけでなく,y座標も入れ替えること.
[3] 環境
[3.1] OS:WindowsXP
[3.2] Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/1まで
宜しくお願いします。
0184デフォルトの名無しさん
2011/06/30(木) 10:48:56.15[2] 問題文: 変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成せよ。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月5日09:00まで
[5] その他の制限:ありません
0185デフォルトの名無しさん
2011/06/30(木) 11:10:54.53#include <stdio.h>
int main(){
int x[10],y[10];
int i,j;
int temp;
for(i=0;i<10;i++)
scanf("%d%d",&x[i],&y[i]);
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(x[i]<x[j]){
temp=x[i];x[i]=x[j];x[j]=temp;
temp=y[i];y[i]=y[j];y[j]=temp;
}
}
}
for(i=0;i<10;i++)
printf("%d%d\n",x[i],y[i]);
}
0186デフォルトの名無しさん
2011/06/30(木) 11:17:54.38int bit_count(int x)
{
int i, count = 0;
for (i = 0; i < 16; i++, x >>= 1)
if (x & 1)
count++;
return count;
}
0187デフォルトの名無しさん
2011/06/30(木) 11:35:38.83いっぺん動かして見れ
0188デフォルトの名無しさん
2011/06/30(木) 12:00:01.51[2] 問題文: 変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成し、それを用いて実際に 1 のビット数を数えて、その値を出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月5日09:00まで
[5] その他の制限:問題文は>>184なのですが、具体的なプログラム例まで示さなくてはいけないようです。
数える関数は>>186さんが
int bit_count(int x)
{
int i, count = 0;
for (i = 0; i < 16; i++, x >>= 1)
if (x & 1)
count++;
return count;
}
と作ってくれました。
変数の値は何でも構いません。
0189デフォルトの名無しさん
2011/06/30(木) 12:56:33.25#include <stdio.h>
#include <math.h>
int bit_count(int x)
{
static const unsigned char bit_set_table[256] = {
# define B2(n) n, n+1, n+1, n+2
# define B4(n) B2(n), B2(n+1), B2(n+1), B2(n+2)
# define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2)
B6(0), B6(1), B6(1), B6(2)
};
return bit_set_table[(x >> 8) & 255] + bit_set_table[x & 255];
};
int main(int argc, char **argv)
{
int i, x;
for (i = 1; i < argc; i++) {
x = atoi(argv[i]);
printf("%d(0x%02x) %d\n", x, x, bit_count(x));
}
}
0190デフォルトの名無しさん
2011/06/30(木) 13:00:56.05int main()
{
printf("%d\n",bit_count(0x00000));
printf("%d\n",bit_count(0x00001));
printf("%d\n",bit_count(0x0ffff));
printf("%d\n",bit_count(0x10000));
printf("%d\n",bit_count(0x10001));
}
0191デフォルトの名無しさん
2011/06/30(木) 13:05:39.22'atoi'識別子が見つかりませんでした
というコンパイルエラーが出ました
0192デフォルトの名無しさん
2011/06/30(木) 13:07:02.100193デフォルトの名無しさん
2011/06/30(木) 13:25:32.09すみません、今自分で気づいて、それをやってみたのです…が、実行しても何も表示されません。
厳密に言うと、他のコンパイラ(Study Cというものを使いました)なら、動きました。
それでも、実行したら「main関数に引数があります。コマンドライン文字列をプログラムに渡したい場合はここで入力してください」といった別ウィンドウが表示されます。
出来れば、キーボードから数字を入力する形にするのではなく、プログラム中で変数の値を決定する形でお願いします。
a = 5
という風にプログラム中で決めてしまう形です。
0194デフォルトの名無しさん
2011/06/30(木) 13:27:08.99ワロタ
0195デフォルトの名無しさん
2011/06/30(木) 13:31:32.20キミのレベルじゃ>>189を作れない(説明できない)から、>>186に>>190を合体させた方が良い。
0196デフォルトの名無しさん
2011/06/30(木) 13:34:30.48[2] 問題文(含コード&リンク):http://codepad.org/XAPpvt1n
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2011年7月2日12:00まで
[5] その他の制限:wcコマンドを使って、ファイルの行数・単語数・バイト数を数えるプログラム。各ファイルごとに、wcコマンドを無引数で実行
http://codepad.org/2Y5RTFYrを元にせよ
よろしくお願いします
0197デフォルトの名無しさん
2011/06/30(木) 14:07:53.00>>186さんのプログラムに自分で変数の宣言をして追加して出来ました。
どうもお手数かけました。
皆様ありがとうございました。
0198デフォルトの名無しさん
2011/06/30(木) 18:35:46.80>コマンドライン引数でファイル名をn個指定し、 ファイル1からファイルn-1までの内容を連結し、 その結果をファイルnに書き込むプログラムを書け。
の一方で、
>ただし、標準入力と標準出力を当該のファイルにリダイレクトした状態でUNIX標準コマンドを実行することで行うこと。
というのは矛盾しているように感じてしまうのですが、具体的にどうすればいいのでしょうか?
0199七緒
2011/06/30(木) 19:01:38.440200デフォルトの名無しさん
2011/06/30(木) 19:38:42.20systemコマンドでcat file_1 file_2 ... > file_n の方法でよければ。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
int i;
char s[100] = "", *p = s;
strcpy(p,"cat ");
for (i = 1; i <= argc-2; i++) {
for(;*p;p++);
sprintf(p,"%s ",argv[i]);
}
for(;*p;p++);
sprintf(p," > %s ",argv[i]);
system(s);
return 0;
}
0201デフォルトの名無しさん
2011/06/30(木) 22:06:19.20[1] 授業単元: C
[2] 問題文(含コード&リンク):
次のアルファベットのキーワードを入力して計算する(例:sin45 sin0.78539)関数電卓プログラムを作成。
なお、関数を容易に変更、修正、増加できるように。
sin(正弦)、cos(余弦)、tan(正接)、arcsin(逆正弦)、arccos(逆余弦)、arctan(逆正接)、ln(自然対数)、log(常用対数)、exp(指数関数)、sqr(平方)、
rad(入力データをラジアン単位にする)、deg(入力データを度を単位とする)、sinh(双曲線正弦)、cosh(双曲線余弦)、tanh(双曲線正接)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VISUAL2008 win32
[3.3] 言語: C
[4] 期限: 2011年7月13日
[5] その他の制限: 今学期習い始めたばかりで、ポインタ・配列・関数・繰り返し・選択・基礎演算くらいまでやっています
よろしくお願いします
0202デフォルトの名無しさん
2011/06/30(木) 22:34:43.750203デフォルトの名無しさん
2011/06/30(木) 22:37:58.69関数電卓というがどの程度作りこめいいんだ?
sin(1.1)とかtan(0.5)とか
単体実行できるだけでいいのか?
基礎しかならってないならパースしろってのもおかしい気がする
0204デフォルトの名無しさん
2011/06/30(木) 22:59:01.87Qみたいな事言うなクズ
0205デフォルトの名無しさん
2011/06/30(木) 23:12:51.11Dim s,t
On Error Resume Next
do until false
s=InputBox("数式:","数式を入力してください(空で終了)")
if(s="")then
WScript.Quit
end if
t=eval(s)
WScript.Echo s & "=" & CStr(t)
loop
このくらいの性能は欲しいんじゃね?
0206デフォルトの名無しさん
2011/06/30(木) 23:22:37.32Windows Scripting Host入っていない環境ではDLして入れる必要あり
コピペして適当な名前.vbsでデスクトップに保存。
クリックで実行可
0208デフォルトの名無しさん
2011/06/30(木) 23:31:08.51関数ポインタって習いました?
使えるならだいぶすっきりするので使いたいんですが
0209デフォルトの名無しさん
2011/06/30(木) 23:37:22.08入力例見るに()とかつけないみたいだし
数字の前までの文字列がキーワードに一致しているかくらいでいいんじゃね?
0210七緒
2011/07/01(金) 00:02:17.78そのままで良いのでしょうか?全然分からなくてすいません。。。
0211デフォルトの名無しさん
2011/07/01(金) 00:05:59.240212デフォルトの名無しさん
2011/07/01(金) 00:07:07.64#include <stdio.h>
#include <string.h>
#include <math.h>
static char table[0x1000000][0x10];
#define NAME_LEN 16
#define BUF_LEN 256
double rad(double x) { return x / 180. * 3.14; }
double deq(double x) { return x / 3.14 * 180; }
struct {
char name[NAME_LEN];
double (*f)(double);
} functions[] = {{"sin", sin}, {"cos", cos}, {"arcsin", asin}, {"arctan", atan}, {"ln", log},
{"log", log10}, {"exp", exp}, {"sqr", sqrt}, {"rad", rad}, {"deq", deq},
{"sinh", sinh}, {"cosh", cosh}, {"tanh", tanh}};
int main()
{
char name[BUF_LEN];
double x;
int i;
while (scanf(" %[a-z]%lf", name, &x) == 2) {
printf("inst = %s(%f)\n", name, x);
for (i = 0; i < sizeof functions / sizeof functions[0]; i++)
if (!strcmp(functions[i].name, name))
printf("answer = %f\n", functions[i].f(x));
}
printf("なんか書式にあわないのを突っ込まれたので終了します");
return 0;
}
適当な部分があるので不満があるなら具体的に言ってもらえればなんとかします
0213デフォルトの名無しさん
2011/07/01(金) 00:08:58.75ならscanfが古い関数だから別の使ってくださいって言われてるどうでもいい警告だと思う
0214デフォルトの名無しさん
2011/07/01(金) 07:14:05.910215デフォルトの名無しさん
2011/07/01(金) 10:14:52.81なんでみんな危険というんだろうね。 不思議だ。
0216デフォルトの名無しさん
2011/07/01(金) 10:30:45.69ttp://www.kijineko.co.jp/node/307
0217デフォルトの名無しさん
2011/07/01(金) 11:35:15.57なるほど。1,2,3,5,6 はまったく問題ではないけども
4は盲点でした
0218バカ娘
2011/07/01(金) 14:29:36.660219七緒
2011/07/01(金) 14:31:44.770220デフォルトの名無しさん
2011/07/01(金) 14:41:14.84エラー出さないと分からないだろボケ
手を抜くな死ね
vc2008で念のためcとcpp両方で試したけど動いたぞ
0221デフォルトの名無しさん
2011/07/01(金) 14:48:04.770222七緒
2011/07/01(金) 15:18:01.210223デフォルトの名無しさん
2011/07/01(金) 15:20:30.46俺のPCでもちゃんと動いてた。
ソース全部しっかりコピペしたか確認してみれ。
あとVisual Studioなら、ファイル→新規作成→プロジェクトから、新しいソースファイル作って、そこでやってみたか?
同じファイルの中でソースファイルだけ増やしたら、確かバグる気がする。
0224デフォルトの名無しさん
2011/07/01(金) 15:25:33.06>>219
まさかとは思うが…
君が求めてるプログラムは実行したら、最初に数字を入力しないと動かないぞ?
0225デフォルトの名無しさん
2011/07/01(金) 15:26:34.300226デフォルトの名無しさん
2011/07/01(金) 15:26:41.58入力してください
とかでないから早とちりしてるんだろうな
0227デフォルトの名無しさん
2011/07/01(金) 15:30:54.90ざっと見てみたけどなんか好きになれない人だな
0228デフォルトの名無しさん
2011/07/01(金) 15:34:35.95いいか?実行したら、俺が以下に述べる通り入力してみろ。数字は全部半角、スペースは文字通りスペースキーのことを指している。エンターは文字通りエンターキーを指す。
1スペース1エンター
1スペース3エンター
1スペース5エンター
2スペース3エンター
2スペース5エンター
2スペース1エンター
3スペース5エンター
3スペース1エンター
3スペース3エンター
4スペース3エンター
これで結果は綺麗にソートされて出てくる。
ここまでやって出来なかったら人間やめろ
0229デフォルトの名無しさん
2011/07/01(金) 15:46:58.33を思い出した。
0230デフォルトの名無しさん
2011/07/01(金) 16:47:56.43[2]問題文:行列の中、隣接する値kのみから構成される一つの正方形の範囲はsub-blockと呼ばれる。
一つの正方形を読み込んで、入力値kに対する一番大きいsub-blockを探して、sub-blockの位置と大きさを表示するプログラムを作成せよ。
動作例:http://www.dotup.org/uploda/www.dotup.org1751871.txt.html
[3]環境 [3.1]windows [3.2]gcc [3.3]C言語
[4]期限:7月4日まで
[5]・正方行列はファイルから読み込む事
・最大sub-blockが複数ある場合は全て表示する事
・比較回数はできるだけ少なくする事
0231デフォルトの名無しさん
2011/07/01(金) 19:30:27.33[2] 問題文(含コード&リンク):
試験成績20人分を管理するプログラムを作成することになった。試験成績は、0〜100の整数で与えられる。
構築するプログラムは、以下の関数の構成で構築することとする。
変数指定 int data[20] //成績0〜100の整数を格納する要素数20の配列
○void inputData(int data[20]); //点数入力の関数
○void outputData(int data[20]); //点数リストの画面出力関数
○innt main() //上記の2つの関数を読み出すメイン関数
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
0232デフォルトの名無しさん
2011/07/01(金) 20:11:23.58[2] 問題文(含コード&リンク): 問1から問4まであるのでリンク貼ります。
http://codepad.org/82dMhAvP
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日まで
よろしくお願いします。
0233デフォルトの名無しさん
2011/07/01(金) 20:26:29.62ttp://codepad.org/fcvZUfMI
0234デフォルトの名無しさん
2011/07/01(金) 21:08:36.69ttp://codepad.org/cikk5jiD
0235デフォルトの名無しさん
2011/07/01(金) 22:05:48.36ttp://codepad.org/j5RkjDXE
意外と面倒臭い。
途中で力尽きるかも。
0236デフォルトの名無しさん
2011/07/01(金) 22:20:12.20DTRACEって何?
あと関数ポインタ使ったほうがスマートにならね?
0237デフォルトの名無しさん
2011/07/01(金) 22:51:26.25ttp://codepad.org/TUVdIM4I
>236
>DTRACE
ごめんデバグコード消し忘れ。
>あと関数ポインタ使ったほうがスマートにならね?
main中のsearch_maxとsearch_minの選択を言っているなら、私もそう思う。
しかし、問題に雛形が与えられていたので、そのまま流用した。
0238デフォルトの名無しさん
2011/07/01(金) 23:40:06.50【モリタポ有償】C/C++/Java の問題を片付けます(3)
http://hibari.2ch.net/test/read.cgi/tech/1309527259/
0239デフォルトの名無しさん
2011/07/01(金) 23:49:54.260240デフォルトの名無しさん
2011/07/02(土) 00:17:02.32ここに処理が入る というとこのプログラムをお願いします
プログラムのベース
int uruu(int y);
int monthday(int y, int m);
//----------------------------------------------------
int main(){
int year_a, month_a, day_a;
int year_b, month_b, day_b;
int days; int i; days = 0;
printf("日数計算プログラム\n");
printf("数え始める西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_a, &month_a, &day_a);
printf("数え終わる西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_b, &month_b, &day_b);
ここに処理が入いる
printf("%d年%d月%d日から%d年%d月%d日までの日数は%d日です。\n", year_a, month_a, day_a, year_b, month_b, day_b, days);
return 0; }
//うるう年ならtrue(1)、そうでないならfalse(0)を返す関数
int uruu(int y){
int ret;
ここに処理が入る
return ret; }
//年、月を受け取り、その月の日数を返す関数
int monthday(int y, int m){
int d;
ここに処理が入る
return d; }
0241デフォルトの名無しさん
2011/07/02(土) 00:19:48.76宣伝すんなクズ
0242デフォルトの名無しさん
2011/07/02(土) 01:01:20.65[2] 問題文(含コード&リンク):
#include <stdio.h>
void inputData(int data[20])
{
int n = 0;
while (n < 20) {
printf("data[%2d] = ", n);
if (scanf("%d", &data[n]) != 1) {
printf("数字を入力してください\n");
scanf("%*s");
} else if (data[n] < 0 || 100 < data[n]) {
printf("[0, 100] の範囲で入力してください\n");
} else {
++n;
}
}
}
void outputData(int data[20])
{
int i;
for (i = 0; i < 20; ++i) {
printf("data[%2d] = %3d\n", i, data[i]);
}
}
int main(void)
{
int data[20];
inputData(data);
outputData(data);
return 0;
}
0243デフォルトの名無しさん
2011/07/02(土) 01:01:51.20void minmax(配列、最小、最大)
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
0244デフォルトの名無しさん
2011/07/02(土) 01:18:35.00危険とは思わないけど仕事でコードを書いてると使う機会が無いから
使わなくなる→仕様も良く知らね→危ないんじゃね
って流れじゃないかと...
0245デフォルトの名無しさん
2011/07/02(土) 01:45:40.47http://codepad.org/VVm31nh7
0246デフォルトの名無しさん
2011/07/02(土) 01:46:21.37みたいなのがこの板には必要だと思うが。
俺レベル足りなかったから誰か立ててw
そこで一度、scanfがダメなのかアリなのか、
それはなぜなのか、他の危険な関数、安全とされる関数、
シオデラットのstrlcpy, strlcatはどれほど有意義なのか、
について語ってもいいはずだ。
0247デフォルトの名無しさん
2011/07/02(土) 01:54:32.91ここでいいんじゃないでしょうか。
>シオデラットのstrlcpy, strlcat
私は、NUL で必ず終わるところに好意的(strncpy() はいまいちこの点に関して使えない)なんですけれども、wikipedia を見る限り、なんだかくだらないいちゃもんをつける人がいるようですね。
0248デフォルトの名無しさん
2011/07/02(土) 02:01:02.780249デフォルトの名無しさん
2011/07/02(土) 02:04:46.52[2] 問題文(含コード&リンク):
クラスカルのアルゴリズムを用いて最小木を求めるプログラムを作成せよ。
読み込むグラフのデータ(graph.txt)は、
頂点数 枝数 (1行目)
始点 終点 枝の長さ (2〜枝の数だけ)
という形式で行こうと思っています。
http://codepad.org/BxDa8z6P
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:7月10日
よろしくお願いします。
0250デフォルトの名無しさん
2011/07/02(土) 02:20:05.66kwsk
0251デフォルトの名無しさん
2011/07/02(土) 06:45:12.47かなりテキトーだが。
http://codepad.org/bM6lVi04
"頂点数 枝数 (1行目) "はスキップした。
その辺ちゃんと読み込むように修正したらいいかもね。
出力でgraphvizソースも出る。
ここにコピペすれば可視化できる。
http://graphviz-dev.appspot.com/
engineはneatoじゃないと指定した辺の長さで描画されない。
キャッシュがクリアされて見れない可能性大だがこんな感じ
http://graphviz-dev.appspot.com/get_preview?id=042c7d66-42be-410b-98dc-022b53c4c5f7
0252デフォルトの名無しさん
2011/07/02(土) 12:20:25.25●くらい買えよ
あ、無職だから●を買う金もないのか
0253デフォルトの名無しさん
2011/07/02(土) 12:21:12.45まだありますよ。
【モリタポ有償】C/C++/Java の問題を片付けます(3)
http://hibari.2ch.net/test/read.cgi/tech/1309527259/
0254デフォルトの名無しさん
2011/07/02(土) 12:23:36.99>>253
出てくんなクズ
0255デフォルトの名無しさん
2011/07/02(土) 13:11:12.33ttp://codepad.org/NJB8u7xt
提出期限過ぎているかしらんけど。
0256デフォルトの名無しさん
2011/07/02(土) 13:37:59.29[2] 問題文(含コード&リンク):
>>245に、分散を求める関数(名前、詳細仕様は各自で考えてよい)を追加し、動作確認するmainプログラムも追記しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
0257デフォルトの名無しさん
2011/07/02(土) 19:42:45.87個数を返す関数である.例えば,配列の値を7, 4, 8, 2, 4, 6, 1, 6, 4, 5 とすると,(ダブリを省くと) この中には,7, 4, 8,2, 6, 1, 5 の7 個があるので,関数numcountは7 を返す.
これは,例えば,0 〜M -1 の範囲でどんな数が出てきたかをチェックしておき(ヒント: 大きさM のint型の配列を用い,最初はすべて0に初期化しておき,数iが現れたら,そのi番目を1にすればよい),
最後に1度でも出てきたものを数えれば求めることができる.関数numcountを,下記のプログラムの/* INSERT HERE */の部分に挿入できるように書け.(提出はプログラム全体)
#include <stdio.h>
#define M 10 /* 適当な正整数(数の範囲が0 〜M -1) */
#define N 10 /* 適当な正整数(入力する数の個数)*/
/* INSERT HERE */
intmain(void)
{
inti, a[N];
/* a[0]〜a[N-1] の値を入力する*/
for(i= 0; i< N; i++) {
printf("a[%1d] = ? ", i);
scanf("%d", &a[i]);
}
printf("numcount= %3d\n", numcount(a));
return 0;
}
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/6
[5] その他の制限:プログラムだけでなく、課題の説明、実行結果、考察も必須
すいません、全く分からないので誰かお願いします。今回プログラムのみでは採点不可にて何となく合格しそうな考察方法もお願いします。
0258デフォルトの名無しさん
2011/07/02(土) 19:49:47.76どうみても言われたものをそのまま作るだけなんだが
考察って何をしろっていうんだよ
この課題の感想的なもの(ここんところからこういうことを知ることができました的なもの)でいいのか?
課題の説明ってのは作ったプログラムの説明のことでいいんだよな?
0259デフォルトの名無しさん
2011/07/02(土) 19:54:19.10それぞれのメリットデメリットを列挙すればいいんじゃね
0260デフォルトの名無しさん
2011/07/02(土) 19:59:06.79ttp://codepad.org/qK35O7Hu
>何となく合格しそうな考察方法もお願いします。
元からそこまで世話を焼くつもりはないが、[1]が書いていないし、
どういう背景でこういう問題が出されたかわからないので、答えようがない。
アルゴリズムとしては「ビンソート」あるいは「バケットソート」という方式を利用している。
Wikipediaでも調べてみたらいい。
0261260
2011/07/02(土) 20:03:02.02numcountの元のforループは
for (i = 0; i < N; i++) {
が正しい。
0262デフォルトの名無しさん
2011/07/02(土) 20:18:28.55組んだ過程を添えろと指示が出て困って書き添えました。すいません、
ありがとうございました>260
0263デフォルトの名無しさん
2011/07/02(土) 20:33:18.95void inputData(int data[20]){
int n = 0;
while (n < 20) {
printf("data[%2d] = ", n);
if (scanf("%d", &data[n]) != 1) {
printf("数字を入力してください\n");
scanf("%*s");
} else if (data[n] < 0 || 100 < data[n]) {
printf("[0, 100] の範囲で入力してください\n");
} else {
++n;
}
}
}
0264デフォルトの名無しさん
2011/07/02(土) 20:34:07.60int i;
for (i = 0; i < 20; ++i)
printf("data[%2d] = %3d\n", i, data[i]);
}
void minmax(int a[], int *min, int *max){
int i;
*min = a[0];
*max = a[0];
for (i = 1; i < 20; i++) {
if (*min > a[i])
*min = a[i];
if (*max < a[i])
*max = a[i];
}
}
int main(void)
{ int data[20], min, max;
inputData(data);
outputData(data);
minmax(data, &min, &max);
printf("%d %d\n", min, max);
return 0;
}
に、分散を求める関数(名前、詳細仕様は各自で考えてよい)を追加し、動作確認するmainプログラムも追記しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
0265デフォルトの名無しさん
2011/07/02(土) 20:36:43.51>>264
0266デフォルトの名無しさん
2011/07/02(土) 20:45:03.15ttp://codepad.org/iU5nEmFa
0267デフォルトの名無しさん
2011/07/02(土) 21:22:19.36さっそくありがとうございます。
グラフィックまでつけていただけるなんて・・・
しかし、実行結果を図にしてみると、4-8,7-8がどちらも入り、ループが構成されて最小木になっていないような・・・
どちらも重みが3で追加する順番によって、どちらでも構成することができるのが問題なのだと思いますが、どう改善すればよろしいですかね?
0268デフォルトの名無しさん
2011/07/02(土) 22:12:52.41[2] 問題文(含コード&リンク):
文字列処理の関数として、strcat(),strcmp(),strcpy(),strlen()を利用した。これらは、string.hをインクルードすることだけで利用することができた。
それら4つの関数と同じ動作を可能とするORGstrcat(),ORGstrcmp(),ORGstrcpy(),ORGstrlen()を作成し、動作確認を行うmainプログラムを作成しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
0269デフォルトの名無しさん
2011/07/02(土) 23:07:21.09ttp://ideone.com/Q7Jdj
0270デフォルトの名無しさん
2011/07/03(日) 00:12:11.060271デフォルトの名無しさん
2011/07/03(日) 00:24:31.95char *ORGstrcat(char *s, const char *cs)
{return strcat(s,cs);}
int ORGstrcmp(const char *cs1, const char *cs2)
{return strcmp(cs1,cs2);}
char *ORGstrcpy(char *s, const char *cs)
{return strcpy(s,cs);}
size_t ORGstrlen(const char* cs)
{return strlen(cs);}
0272デフォルトの名無しさん
2011/07/03(日) 00:26:24.64おいw
0273デフォルトの名無しさん
2011/07/03(日) 01:15:22.91ありじゃね?
学生のころは、こういう問題で 本回答とは別に
出題の意図を汲まなかったり曲解したネタ回答を
いつも用意してたな。
0274デフォルトの名無しさん
2011/07/03(日) 03:13:49.01同じ動作しないじゃん
0275デフォルトの名無しさん
2011/07/03(日) 06:41:26.82すまん、たしかに最小じゃない。
原因は辺の双方向性の考慮ミスで弁解の余地のないバグですわ。
そもそもノードをファーストクラスで捉えてる部分が悪い気がする。
まだ時間あるよね、後日修正してみるよ。
自分で実装するなら同じ失敗をしないよう、おれの屍を超えていけ。
0276デフォルトの名無しさん
2011/07/03(日) 08:31:57.35といいつつ、逃走するパターンか
0277デフォルトの名無しさん
2011/07/03(日) 13:25:23.93く・・・わかったよ、どうせ外出ても熱いだけだけだし、これからやるよぉ。
に、>>267のためじゃないんだからね! 勘違いしないでよね!
0278デフォルトの名無しさん
2011/07/03(日) 16:30:10.86http://codepad.org/aGrUDf9B
一応間違いないかと。グラフにマーク付けるのにイテレータっぽいの使った。
condition関数で指定されたエッジだけ巡回する。
これでマーククリア、マーク付け(Wikipediaで言う緑エッジ)、
不要エッジの削除の3ステップでやってる。たいぶ効率悪いけど・・・。
あ、一行目の頂点数・辺数 読むようになったから消さないでね。
digraph g { 0 -> 1 [dir=none, len=15];
0 -> 2 [dir=none, len=6]; 0 -> 3 [dir=none, len=3, color=red, penwidth=4];
0 -> 4 [dir=none, len=4]; 1 -> 4 [dir=none, len=4, color=red, penwidth=4];
1 -> 5 [dir=none, len=7]; 1 -> 6 [dir=none, len=20];
2 -> 3 [dir=none, len=2, color=red, penwidth=4]; 2 -> 7 [dir=none, len=1, color=red, penwidth=4];
3 -> 4 [dir=none, len=1, color=red, penwidth=4]; 3 -> 7 [dir=none, len=2];
4 -> 5 [dir=none, len=8]; 4 -> 7 [dir=none, len=5]; 4 -> 8 [dir=none, len=3, color=red, penwidth=4];
4 -> 9 [dir=none, len=6]; 5 -> 6 [dir=none, len=1, color=red, penwidth=4];
5 -> 9 [dir=none, len=3, color=red, penwidth=4]; 6 -> 9 [dir=none, len=20];
7 -> 8 [dir=none, len=3]; 8 -> 9 [dir=none, len=2, color=red, penwidth=4];
0 [fixedsize=true, width=0.4, height=0.4]; 1 [fixedsize=true, width=0.4, height=0.4];
2 [fixedsize=true, width=0.4, height=0.4]; 3 [fixedsize=true, width=0.4, height=0.4];
4 [fixedsize=true, width=0.4, height=0.4]; 5 [fixedsize=true, width=0.4, height=0.4];
6 [fixedsize=true, width=0.4, height=0.4]; 7 [fixedsize=true, width=0.4, height=0.4];
8 [fixedsize=true, width=0.4, height=0.4]; 9 [fixedsize=true, width=0.4, height=0.4];}
0279デフォルトの名無しさん
2011/07/03(日) 22:41:57.93[2] 問題文(含コード&リンク): 以下のプログラムを作成せよ.
入力
正整数n,ならびにn個の名前と電話番号の組,および文字列.ただし,いずれの入力文字列も長さ20以下と仮定して良い.
処理
構造体型配列で電話帳を作成し,名前をキーとして,文字列がselectionのときは選択ソート,文字列がbubbleのときはバブルソートをする.
出力
名前をキーとして辞書順にソートされた電話帳.同名の人は,どの順序に出力してもよい.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:明日
0280デフォルトの名無しさん
2011/07/03(日) 22:43:49.08人数 > 2
0人目:名前 > bbb
電話番号 > 111
1人目:名前 > aaa
電話番号 > 222
文字列 > selection
aaa, 222
bbb, 111
実行例
人数 > 5
0人目:名前 > Taro
電話番号 > 090-111-1111
1人目:名前 > Hanako
電話番号 > 090-222-2222
2人目:名前 > Ichiro
電話番号 > 090-333-3333
3人目:名前 > Jiro
電話番号 > 090-444-4444
4人目:名前 > Hanayo
電話番号 > 090-555-5555
文字列 > bubble
Hanako, 090-222-2222
Hanayo, 090-555-5555
Ichiro, 090-333-3333
Jiro, 090-444-4444
Taro, 090-111-1111
0281デフォルトの名無しさん
2011/07/03(日) 23:15:11.95[2] 問題:2重のfor文を使って,以下のような偶数の九九の表を作成せよ.ただし,行数と列数は入力して指定できるようにする.
入力された行数と列数がそれぞれ0以下,20以上の場合は,九九は表示せずプログラムを終了する.
また、ソースプログラムの説明,考察.for文についてのまとめなども加えよ。
実行例�@
================================
Input GYO: 3
Input RETSU: 5
2 4 6 8 10
4 8 12 16 20
6 12 18 24 30
================================
[3] 環境
[3.1] MacOS
[3.2] Xcode
[3.3] C言語
[4] 7月4日午後3時まで
[5] 教授曰く、「考えられる限り、最小限の言葉でプログラムを書け」だそうです。
問題文が長くなってしまいごめんなさい。
長文ですがよろしくお願いします。
0282デフォルトの名無しさん
2011/07/03(日) 23:41:56.72ttp://ideone.com/B7Tgw
0283デフォルトの名無しさん
2011/07/03(日) 23:58:22.53#include <stdio.h>
int input(const char *message, int *x) {
return printf("%s", message), (scanf("%d", x) == 1) && (0 < *x && *x < 20);
}
int main(void) {
int gyo, retsu, i, j;
if (input("Input GYO: ", &gyo) && input("Input RETSU: ", &retsu))
for (i = 0; i < gyo; ++i, putchar('\n'))
for (j = 0; j < retsu; ++j)
printf("%d ", 2 * (i + 1) * (j + 1));
return 0;
}
0284デフォルトの名無しさん
2011/07/04(月) 00:10:54.84べ、べつにありがとうだなんて思ってないんだからね!
というのは嘘で、本当に感謝です。
まだ期限まで日はあるので熟読して、自分の知識になるようにがんばります。
0285デフォルトの名無しさん
2011/07/04(月) 01:18:10.340286デフォルトの名無しさん
2011/07/04(月) 01:29:26.840287デフォルトの名無しさん
2011/07/04(月) 01:30:50.90このmodって法を表してるんだったっけ
0288デフォルトの名無しさん
2011/07/04(月) 01:31:51.780289デフォルトの名無しさん
2011/07/04(月) 01:34:48.05たかだかN個しか調べるものは無いのでは?
0290デフォルトの名無しさん
2011/07/04(月) 04:44:24.20[2] 問題文(含コード&リンク):
逆ポーランド記法の電卓を実装をする
なお、電卓の条件は以下です
条件及び動作例:http://www.dotup.org/uploda/www.dotup.org1758622.txt.html
[3] 環境
[3.1] OS:Windows
[3.2] gcc
[3.3] 言語: C
[4] 期限: 7月6日まで
0291デフォルトの名無しさん
2011/07/04(月) 18:17:35.28[2] 問題文(含コード&リンク):
ユーザの入力した1文字に対して、「1」のとき「one」、「0」のとき「zero」
それ以外のとき、標準エラーに「0か1を入力して下さい」と出力し、再びユーザからキー入力を待つ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 7月5日
まだ型などの理解が甘く、「それ以外」のところでつまづいてしまいました。
よろしくお願いします。
0292デフォルトの名無しさん
2011/07/04(月) 18:38:09.260293デフォルトの名無しさん
2011/07/04(月) 19:09:13.67ここに処理が入る というとこのプログラムをお願いします
プログラムのベース
int uruu(int y);
int monthday(int y, int m);
//----------------------------------------------------
int main(){
int year_a, month_a, day_a;
int year_b, month_b, day_b;
int days;
int i;
days = 0;
printf("日数計算プログラム\n");
printf("数え始める西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_a, &month_a, &day_a);
printf("数え終わる西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_b, &month_b, &day_b);
ここに処理が入いる
printf("%d年%d月%d日から%d年%d月%d日までの日数は%d日です。\n", year_a, month_a, day_a, year_b, month_b, day_b, days);
return 0; }
//うるう年ならtrue(1)、そうでないならfalse(0)を返す関数
int uruu(int y){
int ret;
ここに処理が入る
return ret; }
//年、月を受け取り、その月の日数を返す関数
int monthday(int y, int m){
int d;
ここに処理が入る
return d; }
0294デフォルトの名無しさん
2011/07/05(火) 00:27:12.96http://ideone.com/TMSod
0295デフォルトの名無しさん
2011/07/05(火) 02:25:50.48[2] 問題文(含コード&リンク):キーボードからx座標とy座標の組を順に読み込んで、その座標を連結した線形リストを形成するプログラムを作りなさい。
改行のみ入力された場合には、入力を終了するようにする。
入力された線形リストの先頭アドレスを引数として、その内容を表示する関数も合わせて作りなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
[3.3] 言語: C++
[4] 期限:2011年7月11日
[5] その他の制限:なし
0296デフォルトの名無しさん
2011/07/05(火) 04:07:07.77ttp://ideone.com/U4kPL
0297デフォルトの名無しさん
2011/07/05(火) 13:48:16.85[2] 問題文(含コード&リンク): http://codepad.org/lqKLztNc
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011/7/8
よろしくおねがします
0298デフォルトの名無しさん
2011/07/05(火) 13:49:46.00[2] 問題文(含コード&リンク): http://codepad.org/iM41ba88
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011/7/8
よろしくおねがします
0299デフォルトの名無しさん
2011/07/05(火) 14:02:26.98[2] 問題文(含コード&リンク): http://ideone.com/Acmrn
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2011/7/6
alloc_rocker()がNULLを返したときの処理を加えよ。
0300デフォルトの名無しさん
2011/07/05(火) 15:46:12.94http://hibari.2ch.net/test/read.cgi/tech/1309527259/
また立ってるけど、基本的にこのスレとの関連は無いので
無視でよろしく。
ただしこのスレの回答者があっちに行って荒らすのは
見苦しいです
0301デフォルトの名無しさん
2011/07/05(火) 15:52:45.13QZ乙
0302デフォルトの名無しさん
2011/07/05(火) 16:27:39.42[2] 問題文(含コード&リンク): http://codepad.org/KXrWVfER
・探索アルゴリズムの計算回数に注目して比較を行いたい。
2000個のデータをファイルから読み込み、線形探索を行う場合と二分探索を行う場合の計算回数を比較する。
二分探索を行う場合はデータをソートする必要があるので、探索前にクイックソートを使用してソートを行うものとする。
なお、swap関数はクイックソート関数で使用するものとする。計算回数を算出する部分は各自プログラムに必要な機能を追加する事。
探索に使用するデータはディレクトリにあるデータを各自ホームディレクトリにコピーして使用すること。
各データファイルには2000個の整数データがランダムに近い順番に記録されているので、その中から500(キー)を探索する
プログラムを作成せよ。比較した計算量をもとに、探索されたデータの位置による計算回数の違いについて各自考察を行う事。
なお、ここでいう計算回数とは、各探索法(線形探索及び二分探索)における探索対象のデータとキーの比較回数を示すものとする。
[3] 環境
[3.1] OS: Windows XP。学校ではUNIXを使っています。
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年7月7日まで
[5] その他の制限: 整列処理まで
ソースコードに書かれた(1)(2)(3)(4)のところが分かりません。
あと、宜しければ計算回数の違いについての考察もあると助かります。
宜しくお願いします。
0304デフォルトの名無しさん
2011/07/05(火) 19:18:21.45[2] 問題文(含コード&リンク):
January, February, March, April, May, June, July, August, September,October, November, December
を12個の文字列をポインタの配列を用いて宣言し、ASCIIコードで昇順に並び替えなさい。
char *month[12] = { “January”, “February”, …, “December” } ;
ASCIIコードで昇順
A<B<C< … <Z , i文字目まで同じ場合は、i+1文字目の大小で順序をつける
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: C
[4] 期限: 2011/7/6
[5] その他の制限:
現在ポインタを習っているところです。
出来るだけ簡単に書いてもらえると助かります。
0305デフォルトの名無しさん
2011/07/05(火) 19:20:41.64[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
次に示す個人情報を構造体として作成し、
それぞれの科目の平均点とそれぞれの学生の平均点を
構造体のポインタを用いて求めなさい。
学籍番号 英語 数学 物理
1 81 24 63
2 28 15 7
3 89 92 88
4 32 88 66
5 92 46 81
-1 0 0 0
学籍番号英語数学物理
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: C
[4] 期限: 2011/7/6
[5] その他の制限:
現在ポインタを習っているところです。
出来るだけ簡単に書いてもらえると助かります。
0306デフォルトの名無しさん
2011/07/05(火) 19:27:06.99[2] 問題文(含コード&リンク):
以下の関数をそれぞれ作成し、組み合わせることで、異なる3つの数値を昇順に表示するプログラムを作成しなさい。
○void inputNUM(int data[3]); 3つの整数値を入力させる関数
○void printNUM(int data[3]); 3つの数値を1行で配列格納順に表示させる関数
○void sort(data[3]); 昇順にdata[]を並び替える関数
○int main() メイン関数
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/8まで
[5] その他の制限:
0307デフォルトの名無しさん
2011/07/05(火) 20:54:43.25http://codepad.org/5CNgtCl7
0308デフォルトの名無しさん
2011/07/05(火) 21:11:22.21290あたりから消化しきれてない。
日本のITの未来を暗くするためもっとがんばれ。
0309デフォルトの名無しさん
2011/07/05(火) 21:14:06.85http://ideone.com/TMSod
0310デフォルトの名無しさん
2011/07/05(火) 22:54:37.51急なことで時間が全くありません。本当に申し訳ないです・・・
[1] 授業単元: 確率統計学
[2] 問題文(含コード&リンク):
10個のサイコロを同時に振り、1の目が出る確率を求める。ただし、回数は100、1000、10000、100000と変化させ、確率と誤差を求めよ。
これは、完成済みで結果の出力のみお願います。また、エラーが出た場合は御助力をお願いします。
http://codepad.org/jZHx7pfy
[3] 環境
[3.1] OS: windows XP
[3.2] コンパイラ名とバージョン: visual studio 2008
[3.3] C++
[4] 期限: 2011年7月6日
[5] その他の制限:
2問目
[1] 授業単元: 確率統計学
[2] 問題文(含コード&リンク):
A,B,Cの3人がじゃんけんゲームを行ったとき、Aが負けない確率Xをシミュレーションで推定せよ。また、シミュレーションの推定誤差を求めよ。ただし、シミュレーション回数Nを100,1000,10000,100000と変化させ、確率と、真の値との差を絶対値(誤差)で算出せよ
[3] 環境
[3.1] OS: windows XP
[3.2] コンパイラ名とバージョン: visual studio 2008
[3.3] C++
[4] 期限: 2011年7月6日
[5] その
0311デフォルトの名無しさん
2011/07/05(火) 23:01:26.650312デフォルトの名無しさん
2011/07/05(火) 23:02:30.49結果だけ知りたいならcodepadの結果表示でいいじゃん
0313デフォルトの名無しさん
2011/07/05(火) 23:06:21.92なんでエラーがあるのに完成済みって思ったか聞きたい
0314デフォルトの名無しさん
2011/07/05(火) 23:15:35.16[1]
http://codepad.org/W2UP5n8C
0315デフォルトの名無しさん
2011/07/05(火) 23:29:25.23あいこは再戦は必要ないです。あくまでAが負けない確率の一つです
>>312-313
取り敢えず作ったのですが、まだ実行が出来ず、パソコン室終了前にソースだけ載せるので手一杯でした。
誤解を招き申し訳ないです。
また、言い訳をしてしまうのですが、今は携帯からなので、結果を確かめれるのは明日の9:00まで無理なため、急なお願いをしてしまいました……
0316デフォルトの名無しさん
2011/07/05(火) 23:47:32.10Visual Studio2008での実行結果 (ソースは>>314)
X/N 10^2回 10^3回 10^4回 10^5回 真値
0個の確率 13.0000% 15.7000% 15.7700% 16.1100% 16.1506%
-3.1506% -0.4506% -0.3806% -0.0406%
1個の確率 44.0000% 31.6000% 32.9700% 32.4580% 32.3011%
11.6989% -0.7011% 0.6689% 0.1569%
2個の確率 25.0000% 30.6000% 28.9800% 28.8410% 29.0710%
-4.0710% 1.5290% -0.0910% -0.2300%
3個の確率 11.0000% 15.9000% 15.4900% 15.5410% 15.5045%
-4.5045% 0.3955% -0.0145% 0.0365%
4個の確率 6.0000% 4.9000% 5.3300% 5.5150% 5.4266%
0.5734% -0.5266% -0.0966% 0.0884%
5個の確率 1.0000% 1.1000% 1.1800% 1.3010% 1.3024%
-0.3024% -0.2024% -0.1224% -0.0014%
6個の確率 0.0000% 0.1000% 0.2200% 0.2120% 0.2371%
-0.2371% -0.1371% -0.0171% -0.0251%
7個の確率 0.0000% 0.1000% 0.0600% 0.0200% 0.0248%
-0.0248% 0.0752% 0.0352% -0.0048%
8個の確率 0.0000% 0.0000% 0.0000% 0.0020% 0.0019%
-0.0019% -0.0019% -0.0019% 0.0001%
9個の確率 0.0000% 0.0000% 0.0000% 0.0000% 0.0001%
-0.0001% -0.0001% -0.0001% -0.0001%
10個の確率 0.0000% 0.0000% 0.0000% 0.0000% 0.0000%
-0.0000% -0.0000% -0.0000% -0.0000%
0317デフォルトの名無しさん
2011/07/05(火) 23:51:11.77http://ideone.com/6KVnY
0318デフォルトの名無しさん
2011/07/05(火) 23:51:54.40結果の表示ありがとうこざいます。
こうして結果を見せて頂くと、かなり間違ったプログラムを作ってしまったみたいですね……
0319デフォルトの名無しさん
2011/07/06(水) 00:15:19.17> ただし、回数は100、1000、10000、100000と変化させ
ってのはこーいう↓ことじゃないの? 書いてみた。
ttp://codepad.org/eNjTKI9r
0320デフォルトの名無しさん
2011/07/06(水) 00:28:53.16非常に有難いのですが、携帯のためソースや結果が見れないです……申し訳ありません。
0321デフォルトの名無しさん
2011/07/06(水) 00:55:20.97[2]
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int saikoro_saidai[4] = {100,1000,10000,100000,}; /*シミュレーション回数を10^2〜10^4で計算*/
int sai_nage, C[4],i;
double sinn_no_atai = 0.444444444; /* 真の値を定義 */
for(sai_nage = 0; sai_nage < 4; sai_nage++){C[sai_nage] = 0;}
for(sai_nage = 0; sai_nage < 4; sai_nage++){
for(i = 0; i < saikoro_saidai[sai_nage]; i++){
int a = rand() % 3;
int b = rand() % 3;
int c = rand() % 3;
if(a == b && a == c){
// 全員違う手ならあいこ
C[sai_nage]++;
}else if((a - b + 3) % 3 == 1){
// bに負けた
}else if((a - c + 3) % 3 == 1){
// cに負けた
}else{
// 勝った
C[sai_nage]++;
}
}
}
続く
0322デフォルトの名無しさん
2011/07/06(水) 00:55:36.88printf("aが負けない確率\n");
printf("10^2回 10^3回 10^4回 10^5回 真値 \n\n");
printf("%8.4f%% %8.4f%% %8.4f%% %8.4f%% %8.4f%% \n"
, (double)C[0]/saikoro_saidai[0]*100.0
, (double)C[1]/saikoro_saidai[1]*100.0
, (double)C[2]/saikoro_saidai[2]*100.0
, (double)C[3]/saikoro_saidai[3]*100.0
, sinn_no_atai*100 );
printf("%8.4f%% %8.4f%% %8.4f%% %8.4f%% \n"
, (double)C[0]/saikoro_saidai[0]*100.0 - sinn_no_atai*100
, (double)C[1]/saikoro_saidai[1]*100.0 - sinn_no_atai*100
, (double)C[2]/saikoro_saidai[2]*100.0 - sinn_no_atai*100
, (double)C[3]/saikoro_saidai[3]*100.0 - sinn_no_atai*100 );
return 0;
}
0323デフォルトの名無しさん
2011/07/06(水) 00:57:23.74結果 下段が誤差
aが負けない確率
10^2回 10^3回 10^4回 10^5回 真値
43.0000% 43.5000% 44.2500% 44.4060% 44.4444%
-1.4444% -0.9444% -0.1944% -0.0384%
0324デフォルトの名無しさん
2011/07/06(水) 01:10:12.40有難う御座います。
誤差については絶対値をつけないといけないので、明日の朝一番に取り掛かりたいと思います
急なお願いで時間もなく、夜も更けた辛い時間での作業、本当にありがとうございました
0325デフォルトの名無しさん
2011/07/06(水) 01:13:29.17念のため行を詰めてない方のソース
http://codepad.org/sk1bq8PE
VC++2008とcodepadはrand関数の実装が違うから結果も違う
codepadの結果を提出したら×になるかも知れないから注意
VC++2008で実行した結果は>>323
0326デフォルトの名無しさん
2011/07/06(水) 01:16:59.33絶対値
http://codepad.org/xSZBaga8
0327デフォルトの名無しさん
2011/07/06(水) 01:27:21.89重ね重ねありがとうございます
課題についてはVC++2008で提出したいと思います
0328デフォルトの名無しさん
2011/07/06(水) 01:27:58.47[2]課題:次の関数は引数で与えられた配列を整列するものである。
コードを補って完成させなさい。
void sort(int[] a,int lengh){
int tmp,i;
ここにコードを追加して完成させる。
}
[3] C言語
[4] 7/31まで
[5]
・降順(大きいもの順)に整列すること
・ローカル変数やグローバル変数を追加しないこと
・lengthが負の値の時はなにもしないこと
・関数を呼び出さないこと
よろしくお願いします。(前期単位がかかってます)
0329デフォルトの名無しさん
2011/07/06(水) 01:32:30.220330デフォルトの名無しさん
2011/07/06(水) 01:39:27.30>>295
>>297 >>298 >>299
>>303 >>304 >>305
>>328
抜けがあったらスマン。
0331デフォルトの名無しさん
2011/07/06(水) 02:12:03.63http://codepad.org/qmOtI1e3
0332デフォルトの名無しさん
2011/07/06(水) 02:30:37.16http://codepad.org/5dG41knN
0333デフォルトの名無しさん
2011/07/06(水) 02:32:04.32http://codepad.org/XQvrPjA2
0335デフォルトの名無しさん
2011/07/06(水) 02:39:22.36ありがとうございます
とても分かりやすくて助かりました
0336デフォルトの名無しさん
2011/07/06(水) 06:58:58.49この程度はできないとお前後期やばいぞw
0337デフォルトの名無しさん
2011/07/06(水) 08:39:53.30後期もこのスレが存在している、と予想するくらいの頭はあるんじゃない?
0338デフォルトの名無しさん
2011/07/06(水) 09:48:34.080339デフォルトの名無しさん
2011/07/06(水) 12:10:58.17すみません、今確認していたのですが
学籍番号-1が計算に入っていないのですが…
これは入れる必要はないという事なんですかね?
自分も学籍番号-1の扱いがよく分からなくて…
0340デフォルトの名無しさん
2011/07/06(水) 12:50:50.83[2] put_nchar関数(←自分で作成する)を使用して、以下のプログラムを作成せよ。
参考:http://codepad.org/DdpoVJOe
�@ 何段ですか:5
*
***
*****
***
*
�A 何段ですか:5
* *
* *
* *
* *
*
[3.1] Windows7
[3.3] C言語
[4] 今日の19時まで
[5] 関数呼び出しまで
わかる方どうかよろしくお願いします。
0341デフォルトの名無しさん
2011/07/06(水) 12:53:43.48�@はひし形、�AはV字形で表示するプログラムです。
(滅茶苦茶になってるから補足。)
0342333
2011/07/06(水) 13:46:00.73普通マイナス値の学籍番号はないので、データの終了判定用だと考えました。
この行も計算で使いなさいと言うことなら、6回ループさせて、
全データを処理すれば良いと思います。
0343デフォルトの名無しさん
2011/07/06(水) 14:05:22.79了解です
ありがとうございます
0344デフォルトの名無しさん
2011/07/06(水) 14:33:18.14http://codepad.org/v9vRwert
0345デフォルトの名無しさん
2011/07/06(水) 14:39:09.28分かりやすくを心がけてみた
ttp://ideone.com/rijtV
0346デフォルトの名無しさん
2011/07/06(水) 14:53:10.63わかりやすい説明も付けていただいてありがとうございました。
非常に助かりました。
0347デフォルトの名無しさん
2011/07/06(水) 18:43:14.08[2] 問題文(含コード&リンク): http://codepad.org/afHWYPLF
問題が3問あります。長いので問題文もリンク先に書かせていただきました。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年7月9日まで
[5] その他の制限: 整列処理
よろしくお願いします。
0348デフォルトの名無しさん
2011/07/06(水) 19:46:11.45[2] argvで指定された可変引数個数の情報を別の配列(ary)に格納せよ。
但し、第一引数だけは別の配列(ary)に格納はしないこと。
例)argv:./test a b c d e f
例)ary :./test b c d e f
[3.1] redhat
[3.3] C言語
[4] 本日中
[5] 制限:なし
わかる方どうかよろしくお願いします。
0349デフォルトの名無しさん
2011/07/06(水) 20:17:22.82[2] 問題文(含コード&リンク):
#include <stdio.h>
void inputNUM(int data[3])
{
int i = 3;
while (i--)
scanf("%d", data++);
}
void printNUM(int data[3])
{
int i = 3;
while (i--)
printf("%d ", *data++);
}
void sort(int data[3])
{
int i, j, t;
for (i = 1; i < 3; i++)
for (j = 0; j < i; j++)
if (data[i] < data[j]) {
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
0350デフォルトの名無しさん
2011/07/06(水) 20:17:50.71{
int a[3];
inputNUM(a);
sort(a);
printNUM(a);
return 0;
}
のプログラムは、異なる整数値3つに制限してた。これを異なる20個の整数で同様の処理ができるように拡張しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/8まで
[5] その他の制限:
0351デフォルトの名無しさん
2011/07/06(水) 20:24:50.520352デフォルトの名無しさん
2011/07/06(水) 20:54:42.65こんなんでいいのか?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
char **ary;
printf("argv: ");
for (i = 0; i < argc; i++)
printf("%s ", argv[i]);
printf("\n");
ary = (char **)malloc((argc - 1) * sizeof(char*));
if (ary == NULL) {
fprintf(stderr, "Can't allocate memory\n");
return 1;
}
ary[0] = argv[0];
for (i = 2; i < argc; i++)
ary[i - 1] = argv[i];
printf("ary : ");
for (i = 0; i < argc - 1; i++)
printf("%s ", ary[i]);
printf("\n");
free(ary);
return 0;
}
0353デフォルトの名無しさん
2011/07/06(水) 21:08:15.92[2] 問題文(含コード&リンク):
円周率を求めよ。方法はどのような方法でも構わない。
ただしprintf("%f",M_PI)などはなし。
またアルゴリズムのオリジナリティは評価に加点します。
(〜の方法では◯桁までしかでないが、このアルゴリズムを追加すると
桁数が増える など)
できるだけ多い桁数を出したいです。
また桁数を逐次的に増やす方法が知りたいです。
よろしくお願いします
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語のみ
0354デフォルトの名無しさん
2011/07/06(水) 21:43:38.57はい、ありがとうございました!
0356デフォルトの名無しさん
2011/07/06(水) 23:32:20.25[2] 問題文(含コード&リンク):
幅が15程度の1次元の領域を考える.
その領域の中央に1匹の虫を放つ.
虫は単位時間あたり距離1だけ左に行ったり右に行ったり,あるいは止まっていたりする.
10単位時間経過時の虫の居場所をint型1次元配列の該当位置に1を加えるという形で記録してゆく.
以上を1試行とし,計100試行程繰り返した段階での,虫の最終位置をカウントした配列内の中身を表示する.
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語のみ
[4] 期限:明日まで
[5] ・虫は毎回ランダムに位置を-1減らすか,1増やすか,そのままの位置かいずれかである.
この位置変化量は
(int)((double)rand()/((double)RAND_MAX + 1.0) * 3.0)-1
または
rand() % 3 - 1
のいずれかで与えられる.
虫の座標が0未満になったら反対側の端に移す.
また,もし虫が最大座標を超えたら0の位置に移す.
.
0357デフォルトの名無しさん
2011/07/06(水) 23:34:15.71[5]続き
・虫の座標が0未満になったら反対側の端に移す.
また,もし虫が最大座標を超えたら0の位置に移す.
・main関数で虫の最終位置のカウント用配列を定義する.
1回の試行(虫を10単位時間分移動させる)及び結果記録はmain関数とは別の関数を呼び出しで実現する.
虫の最終位置カウント配列の中身の表示は,main関数とは別の関数で行う.
・虫の最終位置カウント配列の中身の表示はできれば横棒グラフで表示する.難しければ
配列の各要素の値を数字で表示させても良い.
この表示は1試行ごとに行っても良いし,全試行終了後に一回だけ表示させるだけでもよい.
・1次元領域の幅や,総試行回数(100程度)は極力マクロ定数で定義する.
0358デフォルトの名無しさん
2011/07/06(水) 23:36:52.02[実行例]
---1--- ←次の試行
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]* ←虫の到達位置
[9]
[10]* ←虫の到達位置
[11]
[12]
[13]
[14]
〜途中省略〜
お願いします
0359デフォルトの名無しさん
2011/07/06(水) 23:49:08.89>>295
>>297 >>299 >>303
>>328 >>356
抜けがあったらスマン。
0360デフォルトの名無しさん
2011/07/07(木) 00:04:44.70[2] 問題文(含コード&リンク): http://codepad.org/CZXzKH3U 問題分は上でプログラムは私が書いたものです。
[3] 環境
[3.1] OS:Linux
[3.2] gcc バージョンはわかりません・・
[3.3] 言語:C言語
[4] 期限: [2011年7月7日16:10まで]
[5] なるべくプログラムを書き換えずに間違っているところを訂正する感じでお願いします。
0361デフォルトの名無しさん
2011/07/07(木) 00:08:42.39蟲でプログラムが完成しないんですね、わかります
0362デフォルトの名無しさん
2011/07/07(木) 00:12:48.21うまく動かないのは39-40行が変だからじゃないかな
weakを間違えた回数が一番多かった文字にするなら、最初にweak=0;として
if(miss[i]>miss[weak]){ weak = i; }
にすればいいんじゃない
0363デフォルトの名無しさん
2011/07/07(木) 00:28:02.02よくわかってませんので教えてください。
お願いします。
0364デフォルトの名無しさん
2011/07/07(木) 00:29:08.63http://codepad.org/25rzpMEl
0365デフォルトの名無しさん
2011/07/07(木) 00:50:26.76[補足]
---0--- ←初回の試行
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]* ←虫の到達位置
[9]
[10]
[11]
[12]
[13]
[14]
0366デフォルトの名無しさん
2011/07/07(木) 00:51:45.35---1--- ←次の試行
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]* ←虫の到達する位置
[9]
[10]* ←虫の到達する位置
[11]
[12]
[13]
[14]
0367デフォルトの名無しさん
2011/07/07(木) 00:53:10.72続き
---99---
[0]
[1]***
[2]***
[3]****
[4]*********
[5]************
[6]*************
[7]****************
[8]**************
[9]**************
[10]********
[11]****
[12]
[13]
[14]
←っていう感じのプログラムです
0368デフォルトの名無しさん
2011/07/07(木) 00:55:38.58返信ありがとうございます。
書き換えてみましたが、結果は変わらずでした・・・
weak key以外は正しく動作しているので、後は
33行目がちゃんとMissの配列に格納されていて、カウントされているかどうかなんですが
自分でもよくわかっていません・・・
0369デフォルトの名無しさん
2011/07/07(木) 01:03:40.39miss[100]をmiss[128]にしてfor(i=0;i<128;i++)に書き換えてみな
0370デフォルトの名無しさん
2011/07/07(木) 01:09:22.12>>295
>>297 >>299 >>303
>>328 >>347
抜けがあるかもしれん。
0371デフォルトの名無しさん
2011/07/07(木) 01:13:24.63http://codepad.org/onYm9B3V
0372デフォルトの名無しさん
2011/07/07(木) 01:46:30.30ありがとうございます!
正しい動作を行うプログラムができました!
明日の締め切りに間に合ってよかったです。
原因は配列の数アスキーコードに足りなかったということでしょうか?
なにはともあれ、ありがとうございました。
0373デフォルトの名無しさん
2011/07/07(木) 01:53:39.56http://codepad.org/wKheIc4l
< int miss[100]; /* ミスしたスペルを格納*/
---
> int miss[128]; /* ミスしたスペルを格納*/
9c9
< int weak=-999;
---
> int weak=0;
24c24
< for(j=0;word[i][j] != inp[j+1];j++){ /* 1文字ずつ比較し、初めのミスまでループ */
---
> for(j=0;word[i][j];j++){ /* 1文字ずつ比較し、初めのミスまでループ */
27a28
> break;
32,34c33,35
< for(i=0;i<100;i++){
< if(miss[i]>weak){ /* 間違えた回数が一番多かったキーを求める*/
< weak = miss[i];
---
> for(i=0;i<128;i++){
> if(miss[i]>miss[weak]){ /* 間違えた回数が一番多かったキーを求める*/
> weak = i;
0374デフォルトの名無しさん
2011/07/07(木) 02:07:21.04個数を返す関数である.例えば,配列の値を7, 4, 8, 2, 4, 6, 1, 6, 4, 5 とすると,
(ダブリを省くと) この中には,7, 4, 8,2, 6, 1, 5 の7 個があるので,関数numcountは7 を返す.
これは,例えば,0 〜M -1 の範囲でどんな数が出てきたかをチェックしておき
(ヒント: 大きさM のint型の配列を用い,最初はすべて0に初期化しておき,数iが現れたら,そのi番目を1にすればよい),
最後に1度でも出てきたものを数えれば求めることができる.
関数numcountを,下記のプログラムの/* INSERT HERE */の部分に挿入できるように書け.(提出はプログラム全体)
#include <stdio.h>
#define M 10 /* 適当な正整数(数の範囲が0 〜M -1) */
#define N 10 /* 適当な正整数(入力する数の個数)*/
/* INSERT HERE */
intmain(void)
{
inti, a[N];
/* a[0]〜a[N-1] の値を入力する*/
for(i= 0; i< N; i++) {
printf("a[%1d] = ? ", i);
scanf("%d", &a[i]);
}
printf("numcount= %3d\n", numcount(a));
return 0;
}
[1] 配列
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/9
[5] その他の制限:プログラムだけでなく、課題の説明、実行結果も必要です
全くわかってませんのでどうかよろしくお願いします。
0375デフォルトの名無しさん
2011/07/07(木) 02:37:19.85int numcount( int* in )
{
int a[M] = {0}, i, ret = 0;
for( i = 0; i < N; i++ ){ a[ *in ]++; in++; }
for( i = 0; i < M; i++ ) if( a[i] ) ret++;
return ret;
}
0376デフォルトの名無しさん
2011/07/07(木) 02:48:44.13これはどこにいれたらいいのでしょうか?
0377デフォルトの名無しさん
2011/07/07(木) 03:33:28.450378デフォルトの名無しさん
2011/07/07(木) 04:22:19.110380デフォルトの名無しさん
2011/07/07(木) 06:10:50.570381デフォルトの名無しさん
2011/07/07(木) 06:28:48.230382デフォルトの名無しさん
2011/07/07(木) 07:08:26.69なんか俺が2年生に授業で出した追加課題とほぼ同じなのは気のせいか
0383デフォルトの名無しさん
2011/07/07(木) 07:16:02.29オリジナリティない課題出しといてそんなこと言われても
0384デフォルトの名無しさん
2011/07/07(木) 07:26:53.730385デフォルトの名無しさん
2011/07/07(木) 07:50:20.820386デフォルトの名無しさん
2011/07/07(木) 08:18:02.190387デフォルトの名無しさん
2011/07/07(木) 09:02:09.48ありがとうございます。
コンパイラ?したらどうなりますか?
数字は適当でいいので・・・
0388デフォルトの名無しさん
2011/07/07(木) 09:03:55.780389デフォルトの名無しさん
2011/07/07(木) 09:09:44.67この日本語が通じない人間がいるとは出題者も思わないだろうなw
0390デフォルトの名無しさん
2011/07/07(木) 09:25:37.320391デフォルトの名無しさん
2011/07/07(木) 11:16:26.86http://codepad.org/fsjXSNm0
0392デフォルトの名無しさん
2011/07/07(木) 11:54:20.10期限過ぎてるみたいだけど、
main の中、
Rockers = alloc_rockers(N);
の行の下に、以下の4行を追加
if (Rockers == NULL) {
printf("Can't allocate memory\n");
return 1;
}
0393デフォルトの名無しさん
2011/07/07(木) 11:59:07.85http://codepad.org/pW8MSESb
0394デフォルトの名無しさん
2011/07/07(木) 12:27:04.89[2] 問題文:動物名 { 犬, 猫, 牛, 豚 } を選択すれば、それに対応した泣き声 { ワンワン, ニャーニャー, モーモー, ブーブー } を表示するようなプログラムを作成せよ。ただし、 enum を使うこと。
( 実行例 )
動物の番号を選んで下さい
0:dog 1:cat 2:cow 3:pig 9:end
0
ワンワン
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月12日09:00まで
[5] その他の制限: ありません
0395デフォルトの名無しさん
2011/07/07(木) 13:19:58.16C++って知ってる?
0396デフォルトの名無しさん
2011/07/07(木) 13:29:17.32線形リストって知ってる?
ていいうかこれ全く関係ない内容じゃねーかwwwww
0397デフォルトの名無しさん
2011/07/07(木) 13:48:19.15#include <stdio.h>
int main(void)
{
enum Animals { dog = 0, cat, cow, pig, end = 9 };
const char *crys[] = { "ワンワン", "ニャーニャー", "モーモー", "ブーブー" };
enum Animals animal;
do
{
printf("動物の番号を選んで下さい\n");
printf("0:dog 1:cat 2:cow 3:pig 9:end : ");
scanf("%d", &animal);
} while (animal < Animals::dog ||
(animal > Animals::pig && animal != Animals::end));
if (animal == Animals::end) return 0;
printf(crys[animal]);
return 0;
}
0398デフォルトの名無しさん
2011/07/07(木) 13:52:30.34[3.3] 言語: C
0399デフォルトの名無しさん
2011/07/07(木) 13:56:33.16#include <stdio.h>
int main(void)
{
enum Animals { dog = 0, cat, cow, pig, end = 9 };
const char *crys[] = { "ワンワン", "ニャーニャー", "モーモー", "ブーブー" };
enum Animals animal;
do
{
printf("動物の番号を選んで下さい\n");
printf("0:dog 1:cat 2:cow 3:pig 9:end : ");
scanf("%d", &animal);
} while (animal < dog ||
(animal > pig && animal != end));
if (animal == end) return 0;
printf(crys[animal]);
return 0;
}
0400デフォルトの名無しさん
2011/07/07(木) 14:02:19.70s/Animals:://
0401デフォルトの名無しさん
2011/07/07(木) 14:28:28.83迅速な回答ありがとうございます!
0402デフォルトの名無しさん
2011/07/07(木) 14:31:09.08http://codepad.org/oGIlPltB
行末に//////////のある箇所に修正・追加があります
なるほど、有難うございました!
0405デフォルトの名無しさん
2011/07/07(木) 17:47:56.99[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
(1)ゲームの開始
最初に p 個の玉を壷に入れる。
n 人の参加者は 0 〜 n - 1 の番号が振られており、0 番から昇順(ただし、n - 1番の次は 0 番とする)に以下のステップ(2)を繰り返す。
(2)ステップ
壷を渡された参加者は、壷に玉が入っている場合は、そのうち1個を取り(既に持っている玉があれば、それらと共に)手元に置く。
壷が空っぽの場合、手元に玉があればその全てを壷に戻す。
どちらの場合も、その後壷を次の参加者に渡す。
勝者が決まるまで、このステップを繰り返す。
(3)ゲームの終了
ある参加者が壷に残った最後の玉を取り出したとき、他のどの参加者の手元にも玉がなければ、ゲームは終わりとなり、全ての玉を持っている者が勝者となる。
参加者の人数 n と玉の数 p を入力し、勝者の番号を出力するプログラムを作成せよ。
ただし、3 ≦ n ≦ 50, 2 ≦ p ≦ 50 とし、ゲームのステップ(2)は1000000ステップ以内に終了することが保証されているものとする。
[3] 環境
[3.1] OS:mac
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7/13
0406デフォルトの名無しさん
2011/07/07(木) 18:09:50.60#include <stdio.h>
#define TRY_MAX 1000000
int main(void)
{
long pot, ball[50]={0}, index, n, p, i;
n=50; p=50; // 初期設定
index=0;
pot=p;
for(i=0;i<TRY_MAX;i++)
{
if(pot>0)
{
ball[index]++;
pot--;
if(ball[index]==p) break;
}
else
{
pot+=ball[index];
ball[index]=0;
}
index=(index+1)%n;
}
if(i<TRY_MAX) printf("%ld\n", index);
return 0;
}
0407201
2011/07/07(木) 18:53:43.39遅くなりました、ありがとうございます
正直自分の頭では良くわからない所もありますが、もう少し考えて見ます
それと試してみたところ、tanだけはanswerが出ませんでした
どうやら12〜14行目にtanだけが入ってないからのようですが、単純に{"tan", tan}を入れても変わりませんでした
その点に関してもう少し詳しくお願いします
0408デフォルトの名無しさん
2011/07/07(木) 19:00:33.60勝つ確率が1/3、あいこの確率が1/3で負けない確率は両者を足して2/3
だいたい全員違う手はあいこってコメントしときながら、なんで全員同じかどうか判定してんだよw
0409デフォルトの名無しさん
2011/07/07(木) 19:03:01.350410デフォルトの名無しさん
2011/07/07(木) 20:04:54.45[2] 問題文(含コード&リンク): http://codepad.org/ZtuWkxys
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:07/08
お手数おかけしますが、よろしくお願いします。
0411デフォルトの名無しさん
2011/07/07(木) 20:25:29.64[2] 問題文(含コード&リンク):
#include <stdio.h>
void inputNUM(int data[20])
{
int i = 20;
while (i--)
scanf("%d", data++);
}
void printNUM(int data[20])
{
int i = 20;
while (i--)
printf("%d ", *data++);
}
void sort(int data[20])
{
int i, j, t;
for (i = 1; i < 20; i++)
for (j = 0; j < i; j++)
if (data[i] < data[j]) {
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
0412デフォルトの名無しさん
2011/07/07(木) 20:25:41.01{
int a[20];
inputNUM(a);
sort(a);
printNUM(a);
return 0;
}
のプログラムでは、入力される数値は同じ数字がないことを前提にしていた。
この制限を解除し、同じ数値が複数あった場合には、昇順に並べた結果表示の際に、同じ数を複数表示せず1回のみ表示させるようにプログラムを拡張しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/8まで
[5] その他の制限:
0413デフォルトの名無しさん
2011/07/07(木) 20:35:08.63//たとえば1を読み込めばビットで000000001を、4を読み込めば000001000を、
//つまりビットの1の位置を数字に対応させています。
//そして「.」を読み込めば特別に111111111を構造体aa_tのcellに入力します。
誤解を招いてしまいそうですが、「.」のみでなく000000001や000001000もcellに入力していきます。
よろしくおねがいします。テキストファイルの中身の数字は任意のものですが、枠(|や+など)の数は決まっています。
0414デフォルトの名無しさん
2011/07/07(木) 20:51:59.34void
printNUM(int data[20])
{
int i = 20;
printf("%d ",*data++);
while (--i) {
if (*data != *(data - 1))
printf("%d ", *data);
data++;
}
}
0415デフォルトの名無しさん
2011/07/07(木) 21:13:28.16ttp://codepad.org/LgCrrbUj
0416デフォルトの名無しさん
2011/07/07(木) 21:23:01.45struct {
char name[NAME_LEN];
double (*f)(double);
} functions[] = {{"sin", sin}, {"cos", cos}, {"tan", tan}, {"arcsin", asin}, {"arctan", atan}, {"ln", log},
{"log", log10}, {"exp", exp}, {"sqr", sqrt}, {"rad", rad}, {"deq", deq},
{"sinh", sinh}, {"cosh", cosh}, {"tanh", tanh}};
tan忘れてた
math.hにある関数だから単純につっこめば動くと思うんだけど
どこに突っ込んだんだか
0417デフォルトの名無しさん
2011/07/07(木) 21:43:58.72ttp://codepad.org/QOZZwsgU
連結の向き?が指定されていなかったのでFILOで連結した。
そっちの方が楽だったから。
0418デフォルトの名無しさん
2011/07/07(木) 22:14:10.67[1] 授業単元:C演習
[2] 問題文(含コード&リンク)
getopt_longを使ったargv引数解析を行いなさい。
引数:
--apple 1 (省略形はなし,ハイフンは2つ,続引数は必ずあり)
-peach (省略形はなし,ハイフンは1つ,続引数はなし)
-lemon (省略形はありで-l,ハイフンは1つ,続引数はなし)
-melon (省略形はなし,ハイフンは1つ,続引数はあってもなくてもよい)
※続引数がある場合はそれを表示しなさい
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 本日中
0419デフォルトの名無しさん
2011/07/07(木) 22:16:38.46ttp://codepad.org/92W4Jtci
0420デフォルトの名無しさん
2011/07/07(木) 23:20:14.97ずいぶいんリスキーな人生送ってるんだな。
0421デフォルトの名無しさん
2011/07/07(木) 23:21:56.70今朝だ
0422デフォルトの名無しさん
2011/07/07(木) 23:22:32.37明日いっぱいに変更します
[2] 問題文
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
No.143のレスです
[3] 環境
[3.1] OS: LINUX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月11日
[5] その他の制限:特になし
宜しくお願いします。
0424デフォルトの名無しさん
2011/07/08(金) 00:48:03.83【問題1】
http://codepad.org/YvqKxQAE
【問題2】
http://codepad.org/ocgTPEJt
【問題3】
http://codepad.org/oyp8KDS6
0425デフォルトの名無しさん
2011/07/08(金) 01:21:58.05[2] 問題文(含コード&リンク):
与えた文字列を指定した回数繰り返す文字列に変換するプログラムを作成しなさい。
ただし、main関数を以下のように宣言し、実行時に引数をとれるようにする。
第一引数は繰り返し回数とし、第二引数は繰り返される文字列とする。
すなわち、./prog 3 "ABC"と実行した場合は、ABCABCABCとなる文字列が作られる。
作られた文字列は、表示すること。必要に応じて、数字を数値に変換する関数atoi()を使用してもよい。
その際は、#include<stdlib.h>を加えること。
#include <stdio.h>
#include <stdlib.h>
int main( int argc,char*argv[]){
/** argc:引数の個数、argv[0]:プログラム名、argv[1]〜argv[n]:引数**/
x=atoi(argv[1]);/*atoiの使用例*/
return(0);
}
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:来週の水曜日まで
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします!
0426デフォルトの名無しさん
2011/07/08(金) 02:38:23.50ありがとうございました!
0427デフォルトの名無しさん
2011/07/08(金) 02:52:40.57[2] 問題文(含コード&リンク):http://codepad.org/EjO8vQHI
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:07/08
度々失礼いたします。よろしくお願いします。
0428デフォルトの名無しさん
2011/07/08(金) 03:28:51.74大丈夫な気がするが、どういう時にNGになるん?
0429デフォルトの名無しさん
2011/07/08(金) 05:03:05.61http://codepad.org/4BANlPgB
これでaa_delをテストしてるんですが、望ましくない結果になったもので…お手数おかけしますがよろしくお願いします。
0430デフォルトの名無しさん
2011/07/08(金) 05:20:25.50//もう1度実行すると0を返すはず。
for(i=1;i<=9;i++){
if(i==4) continue;
r=aa_del(&s,2,7,i);
if(r!=1){ /* ← だから、 0 だろ? */
printf("error: aa_del(2,7,%d) returns %d\n",i,r);
return 1;
}
}
0431デフォルトの名無しさん
2011/07/08(金) 05:35:29.73あぁもうすみませんアホすぎました。ありがとうございました。
0432デフォルトの名無しさん
2011/07/08(金) 05:50:07.32http://codepad.org/dc8bXlrt
0433デフォルトの名無しさん
2011/07/08(金) 13:12:03.60助かりました!!
ありがとうございます。
0434デフォルトの名無しさん
2011/07/08(金) 19:07:04.97[2] 問題文(含コード&リンク): http://codepad.org/FYsQ9RGx
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:明日まで
問1〜4まであるのでお手数ですがよろしくお願いします。
0435デフォルトの名無しさん
2011/07/08(金) 20:11:54.370436デフォルトの名無しさん
2011/07/08(金) 20:47:12.03全くと言うのであればMathematicaなどのように計算途中の状態を値で保持するのではなく有理式などの形で保持する
ある程度でいいなら値がほぼ等しいと思われるような減算が演算過程に入り込まないようにしたり
浮動小数演算ではなく多倍長整数演算で計算したりetc
0437デフォルトの名無しさん
2011/07/08(金) 21:10:53.93以前指摘されたことですが、
V(X) = E(X^2) - (E(X))^2
の 1 pass 公式をつかわずに、素直に、もともとの定義である、
E((X - E(X))^2) = 1/n * Σ(i = 0〜n)(x(i) - E(X))^2
を使用したほうが格段に桁落ちが少なくてすみました。
http://hibari.2ch.net/test/read.cgi/tech/1307166756/499
0438デフォルトの名無しさん
2011/07/08(金) 21:35:19.62[2] 問題文(含コード&リンク):
1つめの食塩水aグラムは、濃度c%である。
2つめの食塩水bグラムは、濃度d%である。
この2つの食塩水を混ぜると、何%の食塩水が何グラムできるか?
a,b,c,dの値を実数で入力する関数、答えを求める関数を作成し、プログラムを完成させなさい。
実行例)
食塩1:食塩水100g 濃度2%
食塩2:食塩水200g 濃度5%
結果:4%の濃度になる
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/14まで
[5] その他の制限:
0439デフォルトの名無しさん
2011/07/08(金) 21:36:59.57#include <stdio.h>
int main(void)
{
int ch;
while ((ch = getchar()) != EOF) {
putchar(ch);
}
return 0;
}
0440デフォルトの名無しさん
2011/07/08(金) 21:43:38.51/*
13-2 ファイル入出力
ファイルを読み込んで,ファイル中の英小文字を英大文字に,
英大文字を英小文字に変換してファイルに書き出すプログラムを作成せよ.
*/
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int ch;
while ((ch = getchar()) != EOF) {
if (isupper(ch)) {
ch = tolower(ch);
} else if (islower(ch)) {
ch = toupper(ch);
} else {
/* nop */
}
putchar(ch);
}
return 0;
}
0441デフォルトの名無しさん
2011/07/08(金) 21:49:41.15#include <stdio.h>
int input4(double *a, double *b, double *c, double *d)
{
printf("input a b c d\n");
return scanf("%lf%lf%lf%lf", a, b, c, d) == 4;
}
int main(void)
{
double a, b, c, d;
if (input4(&a, &b, &c, &d)) {
printf("食塩水1: %gg %g%%\n", a, c);
printf("食塩水2: %gg %g%%\n", b, d);
printf("結果: %gg %g%%\n", a + b, (a * c + b * d) / (a + b));
}
return 0;
}
0442デフォルトの名無しさん
2011/07/08(金) 22:07:13.69ttp://codepad.org/k6xpuxoH
0443デフォルトの名無しさん
2011/07/08(金) 22:17:59.35ttp://codepad.org/3CxOyZ0k
1行が256文字以上になると期待する動作をしない場合あり。
SIZE_BUFを大きくすればその大きさまでは大丈夫。
根本的に対策するのは大変なので、現状提供とする。
0444デフォルトの名無しさん
2011/07/08(金) 22:52:44.97[1] 授業単元:C言語 [2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:window [3.2] コンパイラ名とバージョン:stdio10[3.3] 言語:C
[4] 期限:7月9日まで
#include<stdio.h>
int main(void){
int i; int a = 0, b = 0, c = 0, d = 0, e = 0;
int yoso1,yoso2,yoso3,yoso4,yoso5; int yoko1 ,yoko2=0;
int tate1=0,tate2=0,tate3=0,tate4=0,tate5=0;
パート1
パート2に続く
>根本的に対策するのは大変なので
そのための mygetline() です。:-)
http://codepad.org/VWIlTCwm
0446デフォルトの名無しさん
2011/07/08(金) 22:59:26.15yoso1 = 50 - (5 * i);
yoso2 = 49 - (5 * i);
yoso3 = 48 - (5 * i);
yoso4 = 47 - (5 * i);
yoso5= 46 - ( 5 * i);
printf("%6d%6d%6d%6d%6d", yoso1, yoso2, yoso3 ,yoso4 , yoso5);
printf(" 累計");
yoko1 = yoso1 + yoso2+ yoso3 +yoso4 + yoso5; yoko2 = yoko2 + yoko1;
printf("%6d\n",yoko2);
tate1 = tate1 + yoso1;
tate2 = tate2 + yoso2;
tate3 = tate3 + yoso3;
tate4 = tate4 + yoso4;
tate5 = tate5 + yoso5;}
0447デフォルトの名無しさん
2011/07/08(金) 23:09:25.01これは誰にも解けない
0448デフォルトの名無しさん
2011/07/08(金) 23:20:48.94ようやくパート3
printf(" 累計 累計 累計 累計 累計\n");
printf(" %6d%6d%6d%6d%6d",tate1,tate1+tate2,tate1+tate2+tate3,tate1+tate2+tate3+tate4,tate1+tate2+tate3+tate4+tate5);
return 0;}
�T 上記プログラムを配列をつかった、1重のループでつくりなおす。
�U �Uで変更した上記プログラムの縦の足し算、横の足し算を関数を使って
プログラムを回収する。
0449デフォルトの名無しさん
2011/07/08(金) 23:24:38.26まわりは10行ぐらいでかけてます。
とほほです。
0450デフォルトの名無しさん
2011/07/09(土) 00:09:43.61>1重のループでつくりなおす
ってあるけど、既にループになってるよね?2重になるということでいいの?
>関数を使ってプログラムを回収する。
これ、出力さえ同じなら、作り直して良いって事?
0451デフォルトの名無しさん
2011/07/09(土) 00:54:58.43>> �T 上記プログラムを配列をつかった、1重のループでつくりなおす。
こんなんで良ければ。
http://codepad.org/QCFcvNOA
0452デフォルトの名無しさん
2011/07/09(土) 01:10:47.41何回も何回も蹴られとるな( ゚,_・・゚)ブブブッ
ネットでこれだから現実生活じゃ適応不可能だろうね
0453デフォルトの名無しさん
2011/07/09(土) 02:21:45.820454デフォルトの名無しさん
2011/07/09(土) 13:03:18.890455ANSWER>444
2011/07/09(土) 16:39:44.930456デフォルトの名無しさん
2011/07/09(土) 17:12:47.01[2] 問題文(含コード&リンク):http://codepad.org/dx3nSGGc
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:07/09
お手数お掛けしますがよろしくお願いします。
0457デフォルトの名無しさん
2011/07/09(土) 17:35:17.36うちの環境ではでかい数字をつっこむとintの最大値をとりますが
これは環境依存ということでよろしいでしょうか
というか、scanfのちゃんとした仕様書ってどこにありますか?
0458デフォルトの名無しさん
2011/07/09(土) 17:51:10.41スレ違い
JIS嫁
0459デフォルトの名無しさん
2011/07/10(日) 01:01:11.26ありがとうございました!おかげでレポートを提出することができます。
0460デフォルトの名無しさん
2011/07/10(日) 02:01:10.74デバックするとエラーが起こるんですが…
0461デフォルトの名無しさん
2011/07/10(日) 03:17:11.66スタックのことをFILOって言っちゃう男の人って・・・
0462デフォルトの名無しさん
2011/07/10(日) 03:20:48.760463417
2011/07/10(日) 07:20:27.31はて?こちらでは(たぶん)思ったとおりに動くけど?
どこでどんなエラーが出る?
>>461>>462
スタックだとデータ構造じゃなくて、ヒープに対するスタックとごちゃになるかとおもって
敢えて、FILOにした。先入れ後出しにすべきだった?
0464デフォルトの名無しさん
2011/07/10(日) 07:24:41.22エラーでるに決まってるだろ
0465デフォルトの名無しさん
2011/07/10(日) 07:27:56.94mallocのとこね
そこ見てCで確認したんだなと思っただけだから他にもあるかもしれん
0466471
2011/07/10(日) 09:57:05.68あーC++だったのね。申し訳ない。Cだとおもっていた。
とりあえずmallocの戻り値さえキャストすれば、
動く。g++で確認。
C++でやるなら全面的に書き換えるべきだと思うけど、
私の手に余るのでパスします。
VC++2008ってstl使えたっけ?
そうじゃなくてもクラスでコーディングすべきだよね。
0467デフォルトの名無しさん
2011/07/10(日) 12:00:09.21First in Tail, Last in Head.
FTLH
逆はありえない
0468デフォルトの名無しさん
2011/07/10(日) 12:03:35.51ぐぐっても何も出てこねぇ
どこで使われてるんですか?w
0469デフォルトの名無しさん
2011/07/10(日) 12:12:47.66丸にはひらがな一文字
0470デフォルトの名無しさん
2011/07/10(日) 12:15:51.840471デフォルトの名無しさん
2011/07/10(日) 12:38:48.46>>295 ?
0472デフォルトの名無しさん
2011/07/10(日) 13:22:55.81JISなんか読んでどうするんだよ
0473デフォルトの名無しさん
2011/07/10(日) 14:05:21.280474デフォルトの名無しさん
2011/07/10(日) 15:13:20.08ERROR内容は以下の通りです
error C2440: '=' : 'void *' から 'T_Position *' に変換できません。
0475デフォルトの名無しさん
2011/07/10(日) 15:20:07.75質問者には理解できねーよなそりゃ
89行目の
p = malloc(sizeof(T_Position));
を
p = (T_Position *)malloc(sizeof(T_Position));
に変えろ
0476デフォルトの名無しさん
2011/07/10(日) 18:23:16.75[2]連結リスト(一方向)の最後に要素を追加するプログラムを作成しなさい。
ただし、連結リストの最後の要素を指すポインタを保持している場合と保持し
ていない場合について、プログラムを作成すること。
[3.1]Linux
[3.2]gcc
[3.3]C
[4]7月21日まで
0477デフォルトの名無しさん
2011/07/10(日) 18:30:29.97LIFO = FILO
後入れ先出し = 先入れ後出し
だけどFTLHは初めて聞いた。
まぁFILOはFIFOと見間違えそうだからLIFOがベターとは思ったけれど。
0478デフォルトの名無しさん
2011/07/10(日) 19:30:54.51最後のノードを指すポインタ保持パターン。
保持しない方は、パス
ttp://codepad.org/qL7fTlqB
0479デフォルトの名無しさん
2011/07/10(日) 19:55:37.700480デフォルトの名無しさん
2011/07/10(日) 20:41:08.51[2] 問題文(含コード&リンク):
ユーザーIDとパスワードを入力すると残金が表示されるようなプログラムを作る
ID パスワード 残金
10001 1122 0
10002 9521 50000
20001 5588 100
20002 0428 300
20003 3618 20000
40004 0777 8000
[3] 環境
[3.1] OS:windows7
[3.2] Visua Studio 2010
[3.3] 言語: C
[4] 期限: 7/10 午前8時まで
[5] その他の制限:
ID入力後、6つのどれにも当てはまらない時には「IDが違う」と表示させ、
IDが合っていてもパスが違うと「パスワードが違う」と表示させる
また、配列を使ってID・パスを管理。
とりあえず↓のように書いてみたのですが全然わからないです…
http://www1.axfc.net/uploader/File/so/65844.txt
お願いします…
0481デフォルトの名無しさん
2011/07/10(日) 21:00:09.550482デフォルトの名無しさん
2011/07/10(日) 21:10:21.730483デフォルトの名無しさん
2011/07/10(日) 21:16:52.57IDとパスをintで扱おうとするのはありえない気がするんだよ
例にも先頭0あるし(あとCで先頭0は8進数になる問題が)
文字列処理ってやってるよね?文字列にしていいんだよね
あと構造体使いたいんだが習った?
0484デフォルトの名無しさん
2011/07/10(日) 21:19:03.53>全然わからないです
まずコンパイルしてみろ
コンパイラは賢いから文法エラーを教えてくれるぞ
printf,Printf 定義されていない関数を使うな
if(user=user[i] ) 代入と比較の違いはわかってる?
else{user[i]==pass[i] 何に対するelseなのか
printf("ユーザーIDを入力してください。”\n);他 全角と半角って知ってる? \nってリテラルだよね?
0485デフォルトの名無しさん
2011/07/10(日) 21:30:27.71「最後の要素を指すポインタを保持しない」って難しいなぁ・・・
これで良いのかな?
http://codepad.org/0NPX55xg
0486デフォルトの名無しさん
2011/07/10(日) 21:30:47.01http://ideone.com/D0adf
0487デフォルトの名無しさん
2011/07/10(日) 21:35:43.69tailって何ですか?
0488デフォルトの名無しさん
2011/07/10(日) 21:39:29.29>tailって何ですか?
最後の要素。
ポインタで保持できないので、実体を保持している。
・・・ほとんど「一休さん」の世界だね。
0489デフォルトの名無しさん
2011/07/10(日) 21:40:06.14typedef struct List_ {int isempty; struct ListNode_ tail;} List;
0490デフォルトの名無しさん
2011/07/10(日) 21:45:55.98http://codepad.org/VN1fxcfD
0491デフォルトの名無しさん
2011/07/10(日) 22:21:58.61最初の要素を持てばよくね?
0492480
2011/07/10(日) 22:26:29.88あとコンパイルする環境が当方にないので分からないのと
文字列処理と構造体は習ってないので使えないと思います。
あとどういう風に処理を行えばいいのかがまず分からないです。
先生が言うには1次元配列とfor文で作れるのでそうしてほしいらしいです。
ヒントはメインの部分を
for(i=0,i<6,i++);
if(
で始めれば良いということなのですが…
ちなみに今まで習ったのは主に
if for while 2重ループ 複数データの入力処理 配列です
#include <string.h>はたぶん使えないです。
多くの方に協力していただいているのにすいません
0493デフォルトの名無しさん
2011/07/10(日) 22:28:34.96最初の要素を持つと、最後の一個手前の要素が
「最後の要素を指すポインタを保持」してしまう。
0494デフォルトの名無しさん
2011/07/10(日) 22:48:31.32>コンパイルする環境が当方にない
>>1 や ttp://www.microsoft.com/japan/msdn/vstudio/express/
0495デフォルトの名無しさん
2011/07/10(日) 22:50:23.44出題者はそれは想定していないのでは?
単に >>478 の
T_Node *pTail = NULL;
みたいなものを使わないように、前からリンクを手繰っていけばいいのでは?
あいまいな仕様から的確な実装を選択するのも、マの能力のひとつだと。
0496デフォルトの名無しさん
2011/07/10(日) 22:52:06.49これをマージソートに変えたものをお願いします
0497デフォルトの名無しさん
2011/07/10(日) 23:01:37.16>出題者はそれは想定していないのでは?
それは只の思い込み。
心の中では「おそらくそうだろう」と思いつつも、
文面にそう謳われている以上、字面通りに解釈し、
あとで「だってこう書いてあるんだも〜ん」って
責任をなすりつけるのも、マの能力のひとつだと。
0498デフォルトの名無しさん
2011/07/10(日) 23:11:23.27それは屁理屈ってものだよ。
>>485は>>477でpNextをノードがもち、先頭を保持していたものを
prev, tailに名前を置き換えただけでしょ。
0499デフォルトの名無しさん
2011/07/10(日) 23:15:35.71リングリストだから最後じゃないもん的な言い訳で
#include <stdio.h>
#include <stdlib.h>
typedef struct tag_node_t{ int data; struct tag_node_t *next; }node_t;
typedef struct tag_list_t{ node_t *first; }list_t;
void list_add(list_t *list, int data){
node_t *node, *last;
node=malloc(sizeof(node_t));
node->data=data;
if(list->first==NULL){
list->first=node;
node->next=node;
}else{
for(last=list->first;last->next!=list->first;last=last->next);
node->next=last->next;
last->next=node;
}
}
int main(void){
list_t list={0};
node_t *node;
list_add(&list, 1);
list_add(&list, 2);
list_add(&list, 3);
list_add(&list, 4);
for(node=list.first;;node=node->next){
printf("%d\n", node->data);
if(node->next==list.first) break;
}
return 0;
}
0500デフォルトの名無しさん
2011/07/10(日) 23:22:16.94>それは屁理屈ってものだよ。
仮に出題者が「それは屁理屈だ」などと言いだしたら、
こっちは「それはパワハラだ」と言い返すべきだね。
字義通りに実装され、ちゃんと動作するのに
「俺の意図と違う」という理由で NG を出せるのは、
ちゃんとお金を出して仕事を依頼する「お客様」だけだよ。
ま、その場合でも修正に当たっては
追加のお金を出して貰う訳だけどね。
0501デフォルトの名無しさん
2011/07/10(日) 23:23:26.79たぶんそれが馬鹿な仕様策定者の字面もたてた最適解だと思います。
0502デフォルトの名無しさん
2011/07/10(日) 23:24:02.54>>498 のすばらしい実装に瞠目するように。
0503デフォルトの名無しさん
2011/07/10(日) 23:29:57.28[2] 問題文(含コード&リンク):挿入ソート、シェルソートの比較回数、交換回数を表示するプログラム
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日まで
交換回数(flag)は問題ないと思いますが、比較回数(compare)は何処に入れればいいでしょうか?
色々試してみましたが、上手く行きません。
挿入ソート
http://ideone.com/CWqFE
シェルソート
http://ideone.com/XeJbb
0504496
2011/07/10(日) 23:32:17.90出来たプログラムを使って比較回数・交換回数(データを移動した回数)を計測するのが目的になります
0505デフォルトの名無しさん
2011/07/10(日) 23:35:41.23減らした奴を載せます。登録させる数がグロいのは計算に費やす時間の考察のためです。
挿入ソート
http://ideone.com/oH6nI
シェルソート
http://ideone.com/1DYTj
0506デフォルトの名無しさん
2011/07/10(日) 23:40:17.68>>1も読めない人間に協力するヤツはいないと思うよ
0507デフォルトの名無しさん
2011/07/10(日) 23:43:35.97瞠目したいところだけど、
>>498 にはソースが書かれてないよ?
0508496
2011/07/11(月) 00:07:00.80[2] 問題文(含コード&リンク):マージソートの書く並び替えによる交換回数、比較回数を表示するプログラム
[3] 環境
[3.1]
[3.2]
[3.3] 言語: C
[4] 期限:明日
マージソートのソースをどのように入れれば良いかわかりません
http://ideone.com/YuGs5
シェルソートでのソースプログラム
0509496
2011/07/11(月) 00:08:18.230510デフォルトの名無しさん
2011/07/11(月) 00:19:41.04こんなとこでしょう。
http://codepad.org/JIezKje9
http://codepad.org/u1rFlSlo
1) #define SIZE と #define LOOP の意味の違いがよくわからない。作る途中で忘れてしまった?
上では N としておきました。
2) シェルソートの間隔を決めるg[] がおかしい。もとのコードでは g[k] のk が範囲外まで動いてしまい、たまたま g[i] == 1 になったら止まる、という実装。
上では g[] をつかわずに書いてみました。
3) malloc() したものは free() した方がいいんじゃないかな、ああ、これは私が信者だからかもしれませんが。信教にしたがっててきとーに。
>>507
>>499 の間違いね。
いや、>>499 = >>500 なら私のほうが瞠目しなくちゃいけませんね。参りました。
0511デフォルトの名無しさん
2011/07/11(月) 00:25:13.80ありがとうございます。
SIZEとLOOPの違いですが、元々は(改良)バブルソートや挿入ソート、
シェルソートの計算量についての考察を行うため
SIZE→とりあえず最大容量
LOOP→ここを変化させて考察
としていました。
0512デフォルトの名無しさん
2011/07/11(月) 00:29:56.07了解。じゃ、(その意義には突っ込みたいのですがそれはともかく)もとのままでいいですね。
シェルソートは惜しいところまでいっていますから、今一度吟味するといいでしょう。
0513デフォルトの名無しさん
2011/07/11(月) 00:33:07.82http://codepad.org/UyNJ79YE
0514デフォルトの名無しさん
2011/07/11(月) 00:35:37.20これでどうかな。
先頭に0がある4桁の文字列なので、
passにintは使えない。
http://codepad.org/n67wAGfM
0515496
2011/07/11(月) 01:18:15.93[2] 問題文(含コード&リンク):クイックソートの書く並び替えによる交換回数、比較回数を表示するプログラム
[3] 環境
[3.1]
[3.2]
[3.3] 言語: C
[4] 期限:明日
http://ideone.com/UE6VS
比較回数と交換回数を出力するためのs[]をどこに入れればいいかわかりません
挿入する場所をお願いします
0516496
2011/07/11(月) 06:17:53.570517デフォルトの名無しさん
2011/07/11(月) 06:52:00.570518デフォルトの名無しさん
2011/07/11(月) 09:22:05.230519496 ◆IaQKphUgas
2011/07/11(月) 11:32:40.90申し訳ありませんがよろしくお願いします
0520デフォルトの名無しさん
2011/07/11(月) 11:37:50.320521デフォルトの名無しさん
2011/07/11(月) 13:17:29.08[2] 問題文(含コード&リンク): http://codepad.org/BB8PLG9F
問題文もリンク先に書かせていただきました。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年7月12日か13日まで
[5] その他の制限: リストまで
よろしくお願いします。
0522デフォルトの名無しさん
2011/07/11(月) 14:15:17.97[2] 問題:何個かのデータをもらって,その平均,総和,最大値,最小値,標準偏差を計算するプログラムを作成する.プログラムは以下の条件をみたすこと.
・あらかじめ100個の整数型の要素を持つ配列を定義しておく.
・scanfを用いてデータの個数を入力できること.また,scanfを用いてデータの値を配列に入力できること.
・if文を用いて0以下,101以上のデータの個数が入力されないようにすること.
・for文を用いること.
・解は実数で求めること.
実行例�@
================================
Input integer: 5
Input numbers:
40
50
60
70
80
Average: 60
Sum: 300
Max: 80
Min: 40
Standard Deviation: 14.1
================================
[3] 環境 [3.1] Mac
[3.2] Xcode
[3.3] C言語
[4] 明日の夜10時まで
[5] 教授いわく「必要最低限のプログラムでくみあげて」だそうです
リンクを貼ろうとしたのですがなぜかできなかったので長文になってしまいました。お手数ですがよろしくお願いします。
0523デフォルトの名無しさん
2011/07/11(月) 15:19:00.460524デフォルトの名無しさん
2011/07/11(月) 16:11:39.03http://codepad.org/5oD1kYuM
ShowListも修正した
0525デフォルトの名無しさん
2011/07/11(月) 18:37:11.90有難うございます!助かりました。
0526デフォルトの名無しさん
2011/07/11(月) 18:39:25.18[2] 問題文(含コード&リンク):
1円硬貨, 5円硬貨, 10円硬貨, 50円硬貨, 100円硬貨, 500円硬貨の内から種類不問で何枚か取り出し、
その重さの合計を小数点以下1桁まで入力させる。
その値から、取り出した硬貨の合計金額を推定し表示するプログラムを作れ。
ただし、推定される金額が複数存在する場合はその全てを表示する。
また、1円硬貨, 5円硬貨, 10円硬貨, 50円硬貨, 100円硬貨, 500円硬貨の1枚あたりの重さは
それぞれ1g, 3.7g, 4.5g, 4g, 4.8g, 7gであるとする。
(入力例)
8.0
(出力例)
8円
54円
100円
501円
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 考えうる限り効率的なプログラムをお願いいたします
0527デフォルトの名無しさん
2011/07/11(月) 19:03:05.94ax + by = c
を満たす整数x,yを効率的に求める方法があったと思う。
0528デフォルトの名無しさん
2011/07/11(月) 19:06:46.52http://ideone.com/9DoUO
0529デフォルトの名無しさん
2011/07/11(月) 19:20:32.57<a href="http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/ExEuclid.html">拡張ユークリッド互除法</a>
0530デフォルトの名無しさん
2011/07/11(月) 19:27:19.00ああ、scanf指定だったのねすまん
http://ideone.com/d5yzs
0531デフォルトの名無しさん
2011/07/11(月) 19:49:50.40ttp://ideone.com/j1AQd
0532デフォルトの名無しさん
2011/07/11(月) 20:18:36.15効率良くねえよ。これは計算時間重視だ。
表示部分消して、1000グラムの入力で計算終わらない。
0533デフォルトの名無しさん
2011/07/11(月) 20:30:27.451000グラムで計算時間どのくらいで終わるのが効率がいいの?
0534デフォルトの名無しさん
2011/07/11(月) 21:02:51.5466740 種の金額になるので合ってるかな?
0535デフォルトの名無しさん
2011/07/11(月) 21:07:39.78自分の想像で言うと、最大32ビット*100万通り(1MB)のリターンまで対応でき、これが3分以内で計算できたら良いかな。
0536デフォルトの名無しさん
2011/07/11(月) 21:15:20.91解けてないのかよw
0537デフォルトの名無しさん
2011/07/11(月) 21:16:12.25たとえば100gの入力があったら、0.1+99.9をリストか再帰で求めて、両方空でなければマージしてリターン。
途中計算で判明した物はキャッシュしておく。
0538デフォルトの名無しさん
2011/07/11(月) 21:31:08.090539デフォルトの名無しさん
2011/07/11(月) 21:40:58.52[2] 問題文(含コード&リンク):
再帰関数呼出しを用いて、10進数の数decをbase進数の数xに変換する関数
conv_base(dec,base,x)を作成しなさい。
base=2,8,16以外も実行例に示すこと。
ただし、base関数の数xはchar型の配列となる。
decをbaseで割ったときの商が正ならば、さらに割ることができるので、
関数conv_base(dec/base,base,x)を呼び出す。
この後、decをbaseで割ったときの余りが、その桁の値になる。
余りが9以下ならば数字に変換し、10以上ならば'a'以降の対応する
アルファベットに変換し、文字列xに代入する。
base進数の数xはmainの中で表示すること。
文字列に代入するのが難しい場合は、関数の中で出力してもよい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:7/13
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします。
0540デフォルトの名無しさん
2011/07/11(月) 21:48:15.570541デフォルトの名無しさん
2011/07/11(月) 21:51:55.370542デフォルトの名無しさん
2011/07/11(月) 22:00:28.180543デフォルトの名無しさん
2011/07/11(月) 22:06:02.87n進法はいくつでもあり得る。
7(10進法)を3,4,5,6,7進法で表すと
3進法 → 21
4進法 → 13
5進法 → 12
6進法 → 11
7進法 → 10
0544デフォルトの名無しさん
2011/07/11(月) 22:31:48.51[2] 問題文(含コード&リンク):
ttp://ichigo-up.com/cgi/up/qqq/nm38571.jpg
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc cigwin
[3.3] 言語:C
[4] 期限: 2011/07/13
[5] その他の制限: ポインタと構造体について習っています
出来るだけ簡単に書いてもらえると助かります
0545デフォルトの名無しさん
2011/07/11(月) 23:13:05.37http://codepad.org/0BMeG9w5
0546デフォルトの名無しさん
2011/07/11(月) 23:21:27.92[2] (1)双方向リストについて、領域の確保、確保した領域をリストの先頭に追加、要素の削除を行うプログラムを作成しなさい。
(2)配列により、キューを実現するプログラムを作成しなさい。
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 期限: 7月19日
0547デフォルトの名無しさん
2011/07/11(月) 23:25:02.90Q1
ttp://codepad.org/wnGZ2pGh
Q2
ttp://codepad.org/oCReAPlG
>>545 は逆順に前から文字列を生成して main() でひっくり返します。
こちらは正順で後ろから生成します。
http://codepad.org/4vGmgPNA
0549デフォルトの名無しさん
2011/07/11(月) 23:40:41.08[2] 問題文(含コード&リンク):http://pastebin.com/index/sg6akdN0
標準入力から「id, 名前, 年月日, 住所」のようなコンマ区切形式 (CSV 形式) の名簿データを受け付けて,
項目を切り出してメモリ中に格納する.また,% で始まる入力行をコマンド入力として解釈し,格納されたデータを表示や整列する
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月13日?
[5] その他の制限: 問題は長いのでリンク先のプログラムの中に書いてあります。
ごちゃごちゃしていてすいません。自分でやってみたのですがどうにもならず、ご指南していただきたく書き込みました。
するべきことを要約するとソートとデリートのコマンドを設定することです。
ソートに関してですがqsortはつかわずに関数へのポインタを使っていただきたいです。
(例)
int (* comp[5])(struct profile *a, struct profile *b);
comp[0] = compare_id;
[1] = compare_name;
といった感じです。それとプログラム219行目以降のswitch構文の中の(line + 3)などの引数は具体的に何を意味していると言えばよいのでしょうか。
長々とすいません。よろしくお願いします。
0550549
2011/07/11(月) 23:42:42.01http://pastebin.com/LnjRVnMh
お絵かきしてみました。
http://codepad.org/Wvsj5nej
0553デフォルトの名無しさん
2011/07/11(月) 23:53:30.87どの位の桁数になるのか計算して其の分の領域を確保するようにしておいた。
ttp://codepad.org/tunAp5qB
0554デフォルトの名無しさん
2011/07/11(月) 23:56:37.10ありがとうございます
0555デフォルトの名無しさん
2011/07/12(火) 00:08:34.70すみません、一つお聞きしたいのですが
1問目のプログラムを実行しても何も起きないのですが
これは無限ループで勝手に終了したということでしょうか?
0556デフォルトの名無しさん
2011/07/12(火) 00:46:06.14すでにいくつか回答付いていますが、せっかく書いたので挙げさせてください。
どうしても逆順にしか生成できないので、ひとつ関数をかませて、逆順に
しました。
ttp://codepad.org/SiCwxI7i
0557デフォルトの名無しさん
2011/07/12(火) 01:08:28.60>これは無限ループで勝手に終了したということでしょうか?
無限ループなら終了せんだろ?
0558デフォルトの名無しさん
2011/07/12(火) 01:13:57.43そうですよね…
何も出力されないということは間違っているということなのでしょうか?
0559デフォルトの名無しさん
2011/07/12(火) 01:29:44.750560デフォルトの名無しさん
2011/07/12(火) 01:36:48.97print(head);
0561デフォルトの名無しさん
2011/07/12(火) 02:19:01.31すみません、ご迷惑をおかけしました
0562デフォルトの名無しさん
2011/07/12(火) 04:11:11.77ファイル名「test.txt」というテキストファイルがあったとします。内容は
Hallow, nice to meet you.
というものです。これを読み込んで
Hallow
nice
to
meet
you
というふうに単語ごとに区切り、改行して表示するプログラムを作ります。
ソースコードはこんな感じです
0563デフォルトの名無しさん
2011/07/12(火) 04:14:04.69int read_word(FILE *fp,char *str){
int c;
char d;
int i = 0;
if (NULL != fp){
while ((c = fgetc(fp)) != EOF){
d = (char)c;//文字にキャスト
if (d != ',' || d != '.' || d != ' '){
str[i] = d;
++i;
}
}
if(i > 0){
str[i+1] = '\0';
return i;
}
else if(i == 0) //,や.等の区切りの文字が2回続いた時は再帰して再度配列に文字の代入を行う
read_word(fp, str);
}
return 0;
}
0564デフォルトの名無しさん
2011/07/12(火) 04:14:36.85int main(void){
FILE* fp;
char str[256];
int a;
fp = fopen("tst.txt","r");
a = read_word(fp,str);
while(a != 0)
printf("%s\n",str);
fclose(fp);
return 0;
}
しかしコンパイルは通るのですが、実行するとセグメントエラーとなってしまいます
どこが間違っているのかよくわかりません
言語はc、osはLinuxです
よろしくお願いします
0565デフォルトの名無しさん
2011/07/12(火) 04:25:31.10ファイル名が間違っていました。修正します
fp = fopen("test.txt","r");
です。実行結果はやはり同じです
0566デフォルトの名無しさん
2011/07/12(火) 04:43:46.76提示されたコードになるべく沿って書き直しました。
http://codepad.org/z4IrgxaB
1)
if (d != ',' || d != '.' || d != ' '){
「||」 ですか?
2)
a = read_word(fp,str);
while(a != 0)
printf("%s\n",str);
プログラムを通じて、read_word() は一回しか呼ばれませんが、それでいいのですか?
3)
str[i] = d;
++i;
str[i+1] = '\0';
++i した上にさらに i + 1 するのはどうしてですか?
4)
//,や.等の区切りの文字が2回続いた時は再帰して再度配列に文字の代入を行う
read_word(fp, str);
再帰呼び出しからかえってくると、つるつる落ちて return 0 を返して即プログラム終了、ですけれども、それを意図しているのですか?
再帰呼び出しの必要があるかどうかも含めて再考したほうがいいかもしれません。
segmentation fault 以前に、論理が混乱してしまっている感を受けます。
書き直したものが参考になればいいのですが。
0567デフォルトの名無しさん
2011/07/12(火) 05:07:39.69丁寧に教えていただきありがとうございます
とても参考になりました。どうもありがとうございました
0568567
2011/07/12(火) 06:19:58.30再起呼び出しもそもそも必要ありませんでした
もう一度基礎からやりなおします
どうもありがとうございました
0569デフォルトの名無しさん
2011/07/12(火) 07:47:01.24書いてみたが、300位から時間が掛り過ぎる。
http://ideone.com/ue0Ue
0570デフォルトの名無しさん
2011/07/12(火) 08:43:15.730571デフォルトの名無しさん
2011/07/12(火) 09:47:43.240572デフォルトの名無しさん
2011/07/12(火) 10:06:33.81なるほど。 ちょっと早くなった。
0573デフォルトの名無しさん
2011/07/12(火) 10:08:26.440574デフォルトの名無しさん
2011/07/12(火) 10:12:35.920575デフォルトの名無しさん
2011/07/12(火) 10:56:57.8610倍して整数型で扱ったほうが早いし
double の比較に ==0 を使うとかどうかしてる
0576デフォルトの名無しさん
2011/07/12(火) 11:38:23.85つ -O2
0577デフォルトの名無しさん
2011/07/12(火) 11:42:19.79#include <stdio.h>
int num[6] = {500, 100, 50, 10, 5, 1}, weight[6] = {70, 48, 40, 45, 37, 10}, cnt[6];
void f(int idx, int w)
{
int i, sum, wt;
if(w == 0 || idx == 5) {
if(w % 10) return;
for(i = sum = 0; i < idx; i++) sum += num[i] * cnt[i];
printf("%d円\n", sum + w / 10);
return;
}
for(i = 0; (wt = i * weight[idx]) <= w; i++) {
cnt[idx] = i;
f(idx + 1, w - wt);
}}
int main(void)
{
double weight;
scanf("%lf", &weight);
f(0, weight * 10);
return 0;
}
0578デフォルトの名無しさん
2011/07/12(火) 12:07:32.150579デフォルトの名無しさん
2011/07/12(火) 12:40:22.38別に基礎からやり直さなくても、いま直面しているお題にもう一度取り組んでいけばいいとおもいます。まあ、慣れ、は大きいです。
0580デフォルトの名無しさん
2011/07/12(火) 12:40:38.240581デフォルトの名無しさん
2011/07/12(火) 12:47:19.74アルゴリズムは変えずに小手先技で2倍速程度になったよ。
#include <stdio.h>
int ss=0, num[6] = {500, 100, 50, 10, 5, 1}, weight[6] = {70, 48, 40, 45, 37, 10}, cnt[6];
void printsum(int idx){
int i,sum=0; ss++;
for(i = 0; i < idx; i++) sum += num[i] * cnt[i]; //printf("%d円\n", sum + w / 10);
}
void f(int idx, int w){
int i, wt;
if(w == 0) { printsum(idx); return; }
if(idx<5) {
int wg=weight[idx];
for(i = 0; w>=0; i++) {
cnt[idx] = i;
f(idx + 1, w );
w-=wg; }
return; }
if(w & 1) return;
if(w!=5*((w*52429)>>18))return; //if(w % 5) return;
printsum(idx); }
int main(void) { double weight=400; f(0, weight * 10); printf("%d\n", ss); return 0; }
0582デフォルトの名無しさん
2011/07/12(火) 13:04:14.680583581
2011/07/12(火) 13:06:29.230584581
2011/07/12(火) 13:18:16.40#include <stdio.h>
#include <time.h>
int num[6] = {500, 100, 50, 10, 5, 1}, weight[6] = {70, 48, 40, 45, 37, 10}, cnt[6];
void f(int idx, int w) {
int i, sum, wt;
if(w == 0 || idx == 5) { if(w % 10) return;
for(i = sum = 0; i < idx; i++) sum += num[i] * cnt[i];
/* printf("%d円\n", sum + w / 10); */ return; }
for(i = 0; (wt = i * weight[idx]) <= w; i++) {
cnt[idx] = i; f(idx + 1, w - wt); }}
void printsum(int idx){
int i,sum=0; for(i = 0; i < idx; i++) sum += num[i] * cnt[i];
/* printf("%d円\n", sum + w / 10); */ }
void f_new(int idx, int w){
if(w == 0) { printsum(idx); return; }
if(idx<5) {
int i, wg=weight[idx];
for(i = 0; w>=0; i++) {
cnt[idx] = i;
f_new(idx + 1, w );
w-=wg; } return; }
if(w & 1) return; if(w!=5*((w*52429)>>18))return; //if(w % 10) return;
printsum(idx); }
int main(void) {
double weight=500; int cl,cr;
cl=clock(); f_new(0, (int)(weight * 10));cl=clock()-cl; printf("f_new=%fsec.\n",(double)cl/CLOCKS_PER_SEC);
cr=clock(); f(0, (int)(weight * 10));cr=clock()-cr; printf("f = %fsec.\n",(double)cr/CLOCKS_PER_SEC);
printf("%f%%高速化\n",100 * (double)(cr-cl)/cr); return 0;}
0585デフォルトの名無しさん
2011/07/12(火) 13:31:47.20どうしても回避不可能な余り計算は、かけ算とビットシフトで置き換えた。
0586デフォルトの名無しさん
2011/07/12(火) 13:50:36.55[2] 問題文(含コード&リンク): http://codepad.org/3dkRTmjJ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011/7/8
よろしくおねがします
0587デフォルトの名無しさん
2011/07/12(火) 14:01:18.870588デフォルトの名無しさん
2011/07/12(火) 15:52:25.40500g 31526種 0.2sec
1000g 66740種 3sec
1500g 101954種 14sec
2000g 137166種 48sec
2500g 172380種 121sec
3000g 207594種 269sec
計算時間からして O(n^4) くらいになってる
途中の連番になる部分を計算せずに済めば O(1) に近づけられるかも
お時間ある方は是非お願いします・・・。
0590デフォルトの名無しさん
2011/07/12(火) 17:29:47.300591デフォルトの名無しさん
2011/07/12(火) 17:30:58.231)小数点以下を消去する、 ?????.x が入力されたら 1.x , 2.x .... を答えが出るまで計算する
2)残った数字を2進に直してオンになってる配列と1)の答えを掛け合わせる
上限を設ける必要が有るのと邪道であると言う事に目をつぶれば重さが増えても演算時間に変化は無いのでは?
0592デフォルトの名無しさん
2011/07/12(火) 17:38:08.29それなら1)のような切り離し方はできないんじゃ
0593デフォルトの名無しさん
2011/07/12(火) 17:42:15.67そうでなくてもそんな切り分け方できるわけが無かったな
0594デフォルトの名無しさん
2011/07/12(火) 17:46:52.05それに当てはまらないパターン存在しないか?
0595デフォルトの名無しさん
2011/07/12(火) 20:36:08.90ttp://codepad.org/4QxOzlxM
0596デフォルトの名無しさん
2011/07/12(火) 20:40:14.950597デフォルトの名無しさん
2011/07/12(火) 20:48:17.44[2] 問題文(含コード&リンク):
ttp://uproda.2ch-library.com/402107hP9/lib402107.txt
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:visual studio
[3.3] 言語:C言語でお願いします
[4] 期限:2011年 7月 14日 (木) 正午まで
[5] その他の制限:
リンク先の問題文の最後のほうに記載されています。
制限は結構厳しいものかもしれませんが、
どうかよろしくお願いします。
0598デフォルトの名無しさん
2011/07/12(火) 21:11:00.55他にスレが無いから良いんじゃない?
↓このスレは、回答者が好きな言語で答えるスレだし、
いろんな言語で宿題 第五編
http://hibari.2ch.net/test/read.cgi/tech/1276873238/
Web制作板には宿題スレは無かったし
まあでもWeb制作板の質問スレで聞くのが一番自然かもね
0599デフォルトの名無しさん
2011/07/12(火) 21:11:08.42重複をカウントしてしまうようだ、考えれば当然だw
0600デフォルトの名無しさん
2011/07/12(火) 21:15:43.63[2] 問題文(含コード&リンク):
情報量の単位は、8bit=1B,1024B=1KB,1024KB=1MB,…(1TBまで)となっている。
[実数]MBや、実数[KB]のような入力をしたとき、それが何bitを意味しているかを表示するプログラムを作成したい。
なお、設定において、数値変換処理には、関数を利用することとし、入力は【整数】の後に「空白」を1つ挟み、【TB/MB/KB/B】のいずれかの単位を表す文字列が書かれているものとする。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/11まで
0601デフォルトの名無しさん
2011/07/12(火) 21:57:37.58[2] 問題文(含コード&リンク):
ファイルを読み込んで,ファイル中の英小文字を英大文字に,英大文字を英小文字に変換してファイルに書き出すプログラムを作成せよ.
$ cat sample.txt
1. Software Engineering
Based on the tenets of software engineering and computing science,
the Department of Software Engineering provides students with
a comprehensive grounding in software development and information
processing. As society becomes increasingly dependent on various
... 略 ...
$ 実行例
入力ファイル名 > sample.txt
出力ファイル名 > sample-out.txt
$ cat sample-out.txt
1. sOFTWARE eNGINEERING
bASED ON THE TENETS OF SOFTWARE ENGINEERING AND COMPUTING SCIENCE,
THE dEPARTMENT OF sOFTWARE eNGINEERING PROVIDES STUDENTS WITH
A COMPREHENSIVE GROUNDING IN SOFTWARE DEVELOPMENT AND INFORMATION
PROCESSING. aS SOCIETY BECOMES INCREASINGLY DEPENDENT ON VARIOUS
... 略 ...
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
0602デフォルトの名無しさん
2011/07/12(火) 22:01:03.33530さんどうもありがとうございました!
0603デフォルトの名無しさん
2011/07/12(火) 22:15:02.770604デフォルトの名無しさん
2011/07/12(火) 22:43:55.75ありがとうございます。
すごく助かりました!
0605デフォルトの名無しさん
2011/07/12(火) 23:07:51.76#include <stdio.h>
#include <string.h>
#include <stdlib.h>
double func(double m, char * s)
{
enum {TB, MB, KB, B};
const char * tani[] = {"TB", "MB", "KB", "B"};
const double unko[] = {1024. * 1024 * 1024 * 8, 1024. * 1024 * 8, 1024. * 8, 8.};
int i;
for (i = 0; i < sizeof tani / sizeof tani[-1]; i++) {
if (!strcmp(tani[i], s)) {
return m * unko[i];
}
}
printf("なんか不正です\n");
exit(1);
}
int main()
{
char s[1000];
double p;
printf("入力してくだし\n");
scanf("%lf %s", &p, s);
printf("%.0f bit\n", func(p, s));
return 0;
}
問題文が整数なのか実数なのかよく分からないんですが
オーバーフローをごまかすためにこうしろというニュアンスだと解釈しました
0606デフォルトの名無しさん
2011/07/12(火) 23:23:15.53#include <stdio.h>
#include <ctype.h>
int main()
{
char fnr[1000], fnw[1000];
FILE *fpr, *fpw;
int c;
printf("入力ファイル名 > ");
scanf("%s", fnr);
printf("出力ファイル名 > ");
scanf("%s", fnw);
if (!(fpr = fopen(fnr, "r")))
return 1;
if (!(fpw = fopen(fnw, "w")))
return 1;
while (EOF !=(c = fgetc(fpr))) {
if (isupper(c))
fputc(tolower(c), fpw);
else if (islower(c))
fputc(toupper(c), fpw);
else
fputc(c, fpw);
}
fclose(fpr);
fclose(fpw);
return 0;
}
0607デフォルトの名無しさん
2011/07/12(火) 23:46:59.62[2]http:// codepad.org/2gG8qIOk
[3.1]window 7
[3.2]VC2008
[3.3]C++
[4]7/14まで
[5]よろしくお願い致します。
0608607
2011/07/12(火) 23:48:47.09です。
0609デフォルトの名無しさん
2011/07/12(火) 23:53:04.560610607
2011/07/12(火) 23:55:46.580611デフォルトの名無しさん
2011/07/13(水) 00:01:58.27MFCは必須ですか?
VC++expressではMFCは使用できません。
CLRなら見た目は変わらず、回答できる人も多いと思いますが。
>>609
>無理ゲー
ですよね。なるべくMFCに触れずにすむところにいたいです。
0612デフォルトの名無しさん
2011/07/13(水) 00:10:13.630613デフォルトの名無しさん
2011/07/13(水) 00:13:31.48Aij += Ai(j+2)みたいな感じで
とここまで書いたらそのままプログラムに出来そうだから自分でできんじゃね
0614デフォルトの名無しさん
2011/07/13(水) 00:19:15.35自分でfuncを組み込めばいいよ
#include <stdio.h>
#include <stdlib.h>
int func()
{
double a, b, c, d;
FILE *fpr, *fpw;
if (!(fpr = fopen("01.txt", "r")))
return 0;
if (!(fpw = fopen("02.txt", "w")))
return 0;
while (4 == fscanf(fpr, "%lf%lf%lf%lf", &a, &b, &c, &d)) {
fprintf(fpw, "%f %f %f %f\n", a, b, c, d);
}
fclose(fpw);
fclose(fpr);
return 1;
}
int main()
{
func();
return 0;
}
>>613
例見た限りでは4列までしかないんじゃね?
0615デフォルトの名無しさん
2011/07/13(水) 00:21:01.23のがいいかも
0616デフォルトの名無しさん
2011/07/13(水) 01:12:08.30[2] 問題文(含コード&リンク):
ファイルの中に含まれる文字のエントロピーを計算したい。
次のように作りなさい。
(a)文字をgetchar関数で1文字ずつ読み込み、その文字ciの出現頻度f(ci)をカウントする。
(b)総文字数Sと出現頻度f(ci)から出現確立P(ci)を計算する関数を作成しなさい。
P(ci)=1/S*f(ci)…(1)
S=Σf(ci)…(2)
i
(c)出現確立P(ci)からエントロピーHを計算する関数を作成しなさい。
ただし、0log0=0とみなす。
H=-ΣP(ci)log2(←底)P(ci)…(3)
fopenを使った場合は加点する。
ファイル入出力を使わない場合は、リダイレクトを用いて標準入力から読み込む実行例を示すこと。
また、すべての文字の出現頻度が同じであるファイルを作成し、 その時のエントロピーを示すこと。
下記のプログラム参照。
続く
0617デフォルトの名無しさん
2011/07/13(水) 01:12:25.55文字列内の数字文字をカウントするプログラム
#include<stdio.h>
void str_dcount(const char str[],int cnt[])
{
unsigned i=0;
while (str[i]){
if (str[i] >= '0' && str[i] <='9')
cnt[str[i]-'0']++;
i++
}
}
int main(void)
{
int i;
int dcnt[10]={0};
char str[100];
printf("文字列を入力してください:");
scanf("%s",str);
str_dcount(str,dcnt);
puts("数字文字の出現回数");
for(i=0;i<10;i++)
printf("'%d':%d",i,dcnt[i]);
return(0);
}
0618デフォルトの名無しさん
2011/07/13(水) 01:13:24.24[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:7/13
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします。
0619597
2011/07/13(水) 01:20:47.76課題の条件についてなんですが、
5つの関数内の引数、戻り値は条件どおりでなくても
構わないのでどなたか回答して頂けないでしょうか。
0620デフォルトの名無しさん
2011/07/13(水) 01:34:23.13[2]:下のプログラムの近似解の初期値をキーボードから入力し、
初期値に応じて、収束条件を満足するまでに要する繰り返し計算回数が
どのように変化するか調べなさい。
♯include 〈stdio.h〉
♯include 〈stdlib.h〉
♯include 〈math.h〉
♯define pi 3.14159
double func1(double x)
{
double value;
value=x×x×x+sin(pi×x)
return value;
}
double func2(double x)
{
double value;
value=3×x×x+pi×cos(pi×x);
return value;
}
0621>>620の続きです
2011/07/13(水) 01:38:51.76{
int i=0;
double x,error=0.00001;
printf("x=");
scanf("%lf",&x);
printf("i=%d x=%lf f(x)=%lf ¥n",i,x,func1(x));
while (fabs(func1(x))>error){
i++;
x=x-func1(x)/func2(x);
printf("i=%d x=%lf f(x)=%lf ¥n",i,x,func1(x));
}
return(0);
}
0622>>621の続きです
2011/07/13(水) 01:45:46.85[3.2]わかりません。すいません
[3.3] c言語
[4] 期限: 2011年7月13日8:30
0623デフォルトの名無しさん
2011/07/13(水) 02:02:20.99コンパイルエラーを無くしてくれって事なら、以下のとおり。
http://codepad.org/RqOEHG7a
0624620
2011/07/13(水) 02:09:25.53プログラムをコンパイル?してキーボードから入力した数字(1や2や3)と
値が0になるまでの計算回数がどんな関係にあるかを調べてほしいです。
0625デフォルトの名無しさん
2011/07/13(水) 08:39:23.84改行以外を文字とみなして書いてみた。
http://codepad.org/egtn7m6B
0626デフォルトの名無しさん
2011/07/13(水) 09:06:51.03>>619
ttp://codepad.org/FC0RGRYm
0627デフォルトの名無しさん
2011/07/13(水) 10:54:07.49[2] 問題文(含コード&リンク):
キーボードから入力した文字列を逆順に出力するプログラムを作成したい。
次の2通りの方法でそれぞれプログラム中の空欄を埋め完成させよ。
(1) 配列を使う (ポインタは使ってはならない)
(2) ポインタを使う (配列を使ってはならない)
#include<stdio.h>
int main( void ) {
char str[256], *p ;
int i ;
scanf("%s", str) ;
p = str ;
[この部分を記述せよ]
return 0 ;
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc cigwin
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:出来るだけ簡単に書いてもらえると助かります
0628デフォルトの名無しさん
2011/07/13(水) 11:01:00.77[2] 問題文(含コード&リンク):
�@次の図のようなリスト構造を作っているとする場合
(1)〜(3)の空欄を埋めよ。ただし、空欄は1行とは限らない。
ttp://up3.viploader.net/pc/src/vlpc008000.jpg
#include<stdio.h>
#include<stdlib.h>
struct Cell {
int data ;
struct Cell *next ;
};
int main( void ) {
struct Cell *p, *head ;
head = NULL ;
/* ポインタ p の指す先に記憶領域の確保する行を省略 */
p ‐> data = 10 ;
(1)
/* ポインタ p の指す先に記憶領域の確保する行を省略 */
p ‐> data = 20 ;
(2)
/* ポインタ p の指す先に記憶領域の確保する行を省略 */
p ‐> data = 30 ;
(3)
return 0;
}
�A上図の状態からdata に10 の入っているCell 構造体のnext が
data に30 が入っているCell 構造体を指すようにしたい。
どのように記述すればよいか。1行で書け。
�B�Aに続いて、data に20 が入っている構造体をリストから削除したい。
どのように記述すればよいか。1行で書け。
0629デフォルトの名無しさん
2011/07/13(水) 11:03:21.31[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc cigwin
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:出来るだけ簡単に書いてもらえると助かります
0630デフォルトの名無しさん
2011/07/13(水) 11:06:52.60#include<stdio.h>
int main( void ) {
char str[256], *p ;
int i ;
scanf("%s", str) ;
p = str ;
/* 配列 */
for (i = 0; str[i]; i++);
while(i--)
putchar(str[i]);
putchar('\n');
/* ポインタ */
while (*++p);
while (&str[0] <= --p)
putchar(*p);
putchar('\n');
return 0 ;
}
0631デフォルトの名無しさん
2011/07/13(水) 11:44:00.39問題文:以下のプログラムを改編し、21までの数取りゲームを作成せよ。なお数は一度に3つまで取れることとし、2つクライアントから交互に入力を受け付けれるようにする。
プログラムURL:http://ideone.com/pPtar
環境
OS: Linux
コンパイル:端末から gcc -oでコンパイルしています
言語:C
期限: 2011年07月16日15:00まで
その他の制限: ネットワークプログラミングの応用という課題ですのでサーバーとクライアントを利用したものでお願いいたします。
よろしくお願いします
0633デフォルトの名無しさん
2011/07/13(水) 15:23:59.96[2] 問題文(含コード&リンク):「ピボットが0である場合を考慮しない、はき出し方による連立一次方程式を解くプログラムを作成し、検算結果を表示すること。
ただし行列のサイズをマクロで指定すること。行列(3行3列以上)および列ベクトルは、あらかじめプログラムに記載すること」
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc使うけどバージョン不明
[3.3] 言語: C
[4] 期限: ([2011年7月20日中
[5] その他の制限:
お願いします
0634デフォルトの名無しさん
2011/07/13(水) 18:03:28.97[2] 問題文(含コード&リンク):
1: ttp://www1.axfc.net/uploader/Sc/so/254634
2: http://www1.axfc.net/uploader/Sc/so/254633
1のプログラムのdogのコードを、他の2つにも適用させる。
また、1の動作の原理の説明と、1と2の動作の違いを説明せよ
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: visual studio
[3.3] 言語: C
[4] 期限: 2011年7月14日9:00
[5] その他の制限:とくになし
おねがいします
0635デフォルトの名無しさん
2011/07/13(水) 18:28:23.92[2] 問題文(含コード&リンク):ある物体を自由落下させたときの位置yを、0秒後から30秒後まで5秒
きざみで表示せよ。なお、t秒後の位置はy=1/2×9.8×t2乗(←指数が出てこなかったのでこう書きました)
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C++
[4] 期限:2011年7月15日
[5] その他の制限:for文を使用。1/2のところは掛け算でおねがいします。
0636デフォルトの名無しさん
2011/07/13(水) 19:20:58.44#include <iostream>
int main()
{
for (int t = 0; t <= 30; t += 5) {
std::cout << t << " " << 0.5 * 9.8 * t * t << std::endl;
}
}
0638デフォルトの名無しさん
2011/07/13(水) 20:30:36.02#include<stdlib.h>
struct Cell {
int data ;
struct Cell *next ;
};
int main( void ) {
struct Cell *p, *head ;
head = NULL ;
struct Cell cell_10;
p = &cell_10;
p->data = 10 ;
struct Cell cell_20;
p = &cell_20;
p->data = 20 ;
struct Cell cell_30;
p = &cell_30;
p->data = 30 ;
head = &cell_30;
cell_30.next = &cell_20;
cell_20.next = &cell_10;
cell_10.next = NULL;
cell_10.next = &cell_30;
cell_30.next = &cell_10;
return 0;
}
0639デフォルトの名無しさん
2011/07/13(水) 20:41:57.10[2] argvで入力された引数 "123:456:78:90" の様な文字列を ":" 区切りで
別の配列へ順に格納せよ。(strchr関数を使いなさい)
上記の例では、[0]=123,[1]=456,[2]=78,[3]=90となる。
尚、::の連続もありで、"12:34::90" は [0]=12,[1]=34,[2]=null,[3]=90となる。
下の様に処理しているが、スマートに行きません。。。
p = NULL;
p = strchr(str, ':');
while (p != NULL) {
printf("length %d\n", strlen(str)-strlen(p));
p++;
p = strchr(p, ':');
}
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] C言語
[4] 14日いっぱい。
0640デフォルトの名無しさん
2011/07/13(水) 21:20:05.92#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char s[4][10] = {0};
char *p,*q;
int i;
if (argc != 2)
return 1;
printf("[%s]\n", argv[1]);
p = argv[1];
for (i = 0; i < 4; i++) {
q = strchr(p, ':');
if (q == NULL) break;
strncpy(s[i], p, q - p);
p = q+1;
}
strcpy(s[i], p);
for (i = 0; i < 4; i++)
printf("[%s]\n",s[i]);
return 0;
}
0641デフォルトの名無しさん
2011/07/13(水) 21:42:02.49[2] http://codepad.org/umohMOn3のプログラムを完成させ、
年と月を入力して、その月のカレンダーを表示するプログラムを作成せよ。
なお、http://codepad.org/qb798eoX、http://codepad.org/rPzv2BAEの
プログラムを参考にすること。
[3.1] Windows7
[3.3] C言語
[4] 7月15日 19時まで
[5] 関数呼び出しまで
わかる方よろしくお願いします。
0642デフォルトの名無しさん
2011/07/13(水) 22:17:21.590643デフォルトの名無しさん
2011/07/13(水) 22:22:51.93#include <stdio.h>
#include <stdlib.h>
void hoge(long weight, int index, long worth, char *table){
static const int coin_weight[]={70, 48, 45, 40, 37, 10};
static const int coin_worth[]={500, 100, 10, 50, 5, 1};
static const int coin5[]={0, 3, 6, 9, 2, 5, 8, 1, 4, 7};
int a, b, x, w, i, coin_max;
if(index==4){
b=coin5[weight%10];
if((w=weight-b*37)<0) return;
x=w/370;
a=(w-x*370)/10;
worth+=a+b*5+x*37;
for(i=0;i<=x;i++) table[worth+i*13]=1;
return;
}
coin_max=weight/coin_weight[index];
for(i=0;i<=coin_max;i++) hoge(weight-i*coin_weight[index], index+1, worth+i*coin_worth[index], table);
}
int main(void){
double weight=8.0;
long i, table_size;
char *table;
scanf("%lf", &weight);
table_size=weight*500/7+1;
table=calloc(1, table_size);
hoge((weight*10+0.1), 0, 0, table);
for(i=0;i<table_size;i++) if(table[i]) printf("%ld\n", i);
free(table);
return 0;
}
0644デフォルトの名無しさん
2011/07/13(水) 22:39:07.080.0
0645デフォルトの名無しさん
2011/07/13(水) 22:44:54.02ありがとうございました!
0646デフォルトの名無しさん
2011/07/13(水) 22:56:09.10ありがとうございます
6列目のところでエラーと出てしまうんですがどこを直せばいいでしょうか?
0647デフォルトの名無しさん
2011/07/13(水) 23:08:44.68[3.3] 言語:Cでした
申し訳ございません
0648デフォルトの名無しさん
2011/07/13(水) 23:34:56.260649デフォルトの名無しさん
2011/07/14(木) 00:47:29.16ubuntu gcc使用
コンパイルは一応できるのですがソートをするとセグメンテーションフォルトが起きてしまいます。
どこがダメなのかご指南いただきたいです。
0650デフォルトの名無しさん
2011/07/14(木) 01:18:14.670651デフォルトの名無しさん
2011/07/14(木) 01:49:54.52そんなことより解答はまだですか
0652デフォルトの名無しさん
2011/07/14(木) 01:58:18.73#include <stdio.h>
int main(void) {
int i;
for (i = 0; i <= 6; ++i) {
double t = 5.0 * i;
printf("%g %g\n", t, 0.5 * 9.8 * t * t);
}
return 0;
}
0653デフォルトの名無しさん
2011/07/14(木) 02:08:26.68君がそう思うならそれで良いよ
0654デフォルトの名無しさん
2011/07/14(木) 02:27:35.540655デフォルトの名無しさん
2011/07/14(木) 02:31:07.91ttp://codepad.org/RuqWbTlP
0656デフォルトの名無しさん
2011/07/14(木) 05:19:29.47一応ソートができるコード
http://codepad.org/u6FmNZwu
ソートの問題を解消しただけだが参考にしてくれ
0657デフォルトの名無しさん
2011/07/14(木) 06:46:56.81汚いプログラムだな
0658デフォルトの名無しさん
2011/07/14(木) 06:49:15.73[2] ハノイの塔
次のルールに基づき、全ての円盤を右側の杭に移動するまでの移動手順を示す
プログラムを作成しなさい。
ルール:
・3本の杭と、中央に穴の開いた大きさの異なる複数の円盤から構成される。
・最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている。
・円盤を一回に一枚ずつどれかの杭に移動させることができるが、小さな円盤の上に大きな円盤を乗せることはできない。
初期状態 円盤の数=3
[3.1] Windows7
[3.3] C言語
[4] 7/15 7時まで
[5] 関数呼び出し、作成まで
よろしくお願いします。
0659デフォルトの名無しさん
2011/07/14(木) 07:51:54.30ありがとうございます
0660デフォルトの名無しさん
2011/07/14(木) 09:55:02.41ttp://codepad.org/jrtzd2Nf
0661デフォルトの名無しさん
2011/07/14(木) 10:43:19.20かっこを付けて表示させてください。
0662デフォルトの名無しさん
2011/07/14(木) 12:42:02.49[2] .tsv形式のファイルをネット上から呼び出して、一番最後の行を引用して表示するプログラムを教えてください
[3] Mac OS X C++
[4] 7/16 19時まで
[5] 関数呼び出しまで
宜しくお願いします。
0663デフォルトの名無しさん
2011/07/14(木) 13:30:46.45関数呼び出しまでしか習ってないのかよwwwwwwwww
0664デフォルトの名無しさん
2011/07/14(木) 13:32:27.280665デフォルトの名無しさん
2011/07/14(木) 13:33:32.140666デフォルトの名無しさん
2011/07/14(木) 14:13:36.64ありがとうございます。
無事ソートができました。
http://codepad.org/nMEEea6n
それと申し訳ないんですが207行目のデリート、243行目の終了確認がうまくいきません。
これができればほぼ完成なのですが… どなたかよろしくお願いします。
0667196
2011/07/14(木) 14:14:14.55亀ですがありがとうございました
0668デフォルトの名無しさん
2011/07/14(木) 15:31:59.02BMI判定のプログラムのdo,for,whileそれぞれに よる反復処理を行うプログラム
[3] 環境
[3.1] OS:Windows7
[3.2] VB2008
[3.3] 言語:C++
[4] 期限:2011年7月17日 一応BMIを求めるだけならできたのですが反復処理 できるプログラムがうまくいきません。 BMIの値が0以外なら処理を続行するプログラムを 作りたいと思っています。 http://codepad.org/V1kiXDs5
0669デフォルトの名無しさん
2011/07/14(木) 15:39:19.430670デフォルトの名無しさん
2011/07/14(木) 15:43:08.350671デフォルトの名無しさん
2011/07/14(木) 15:46:45.54このコードにdo,whileを加えていただけるとありがたいです。
0672デフォルトの名無しさん
2011/07/14(木) 15:55:47.66http://codepad.org/2iRDa9Gl
言葉通りに実装してみました
0673666
2011/07/14(木) 16:12:50.78すいません、デリートは何とか自力でできたのですが終了確認がどうもうまくいきません。
249行目からでupdeteというグローバル変数で0と1を使って1の時だけ終了の確認を表示するようにしています。
“y”を入力したときは正常に終了するのですが、以外の文字を入力したらセグメンテーションエラーが出てしまいます。
自分としては“y”以外が入力されたらまた元の入力に戻るようにしたいのですがどのようにすればうまくできるのでしょうか?
0674デフォルトの名無しさん
2011/07/14(木) 16:23:31.41ありがとうございます。
do〜while,forのほうも教えていただけるとありがたいです。
0675デフォルトの名無しさん
2011/07/14(木) 16:30:30.82int main(void)
{
double hight,weight,bmi;
for(;;){
puts("身長と体重を入力してください。");
printf("身長(�p):"); scanf("%lf",&hight);
printf("体重(�s):"); scanf("%lf",&weight);
bmi = weight / hight / hight * 10000;
bmi = weight / ( hight / 100 * hight / 100 );
if (bmi == 0)
break;
printf("身長:%5.1f(cm)\n",hight);
printf("体重:%5.1f(kg)\n",weight);
printf("あなたのBMI値は%5.1fです。\n", bmi);
}
printf("終了する\n");
return(0);
}
0676デフォルトの名無しさん
2011/07/14(木) 16:31:03.99int main(void)
{
double hight,weight,bmi;
do{
puts("身長と体重を入力してください。");
printf("身長(�p):"); scanf("%lf",&hight);
printf("体重(�s):"); scanf("%lf",&weight);
bmi = weight / hight / hight * 10000;
bmi = weight / ( hight / 100 * hight / 100 );
if (bmi == 0)
break;
printf("身長:%5.1f(cm)\n",hight);
printf("体重:%5.1f(kg)\n",weight);
printf("あなたのBMI値は%5.1fです。\n", bmi);
} while(1);
printf("終了する\n");
return(0);
}
0677デフォルトの名無しさん
2011/07/14(木) 16:38:27.96本当に助かりました!
ありがとうございます。
0678デフォルトの名無しさん
2011/07/14(木) 17:06:19.46[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/20 分かる方、お願いします!!!
つぎのプログラムにおいて,ratioavoeは,すべての要素が正である要素数Nのint型の配列を引数として渡されると,
その配列中の奇数の要素の平均を偶数の要素の平均で割った値を返す関数である.
例えば,N = 5 で配列の各値が4, 7, 6, 2, 3の場合,奇数の要素は7, 3であり,その平均は5.0,
偶数の要素は4, 6, 2であり,その平均は4.0となるので,ratioavoeは1.25を返す.関数ratioavoeを,
下記のプログラムの /* INSERT HERE */ の部分に挿入できるように書け.
ただし,配列中に奇数の要素も偶数の要素もそれぞれ少なくとも 1 個は含まれるものと仮定して良い.
#include <stdio.h>
#define N (2以上の適当な正整数)
/* INSERT HERE */
int main(void)
{
int a[N];
/* ここで a[0]〜a[N-1] の値を入力する */
printf("ratioavoe = %8.4f\n", ratioavoe(a));
return 0;
}
0679デフォルトの名無しさん
2011/07/14(木) 17:07:24.82上の反復のプログラムにおいて平均身長、最大身長を出す場合はどうすればいいのでしょうか。
ヒントだけでもありがたいです。
0680デフォルトの名無しさん
2011/07/14(木) 17:35:26.61(n人の身長の平均値) = (n人の身長の合計)/n
だから、身長の平均値を求めるには「何人分の身長が入力されたか」と、「その人数分の身長の合計」が分かれば良いということになる。
これをどこで計算するのかについては、「ループ1回につき1人分のデータが入力される」という事実から考える。
また、最大値については次の例を参考にして考える。
1 5 10 3 8 の中で最大値を探すことを考えよう。
人間なら5つのデータを一度に見てどれが最大値か、というのがすぐに分かるが、
コンピュータは頭が悪いので、この「5つのデータを一度に見る」ということが出来ない。
なので、なるべく細かく比較を行うような処理によって最大値を求めることを考える必要がある。
その方法については、次のようなトーナメントを思い浮かべると良い。
優勝(最大値)
│
┌─┴┐
┌─┴┐ │
┌─┴┐ │ │
┌┴┐ │ │ │
│ │ │ │ │
1 5 10 3 8
まず、1と5が対戦を行う(ここでは値の大きい者が勝つとする)。当然5が勝つ。
次に5と10が対戦を行う。10が勝つ。
10と3が対戦を行う。10が勝つ。
10と8が対戦を行う。10が勝つ。
このような激戦を経て、10が優勝(最大値)であるということがわかる。
こういった方法によれば、一度に比較されるデータの数はたったの2つであり、頭の悪いコンピュータでもこなすことができる。
問題はこれをどのようにしてプログラムに落としこむかである。
ここから先は自分で考えてみよう。
0681デフォルトの名無しさん
2011/07/14(木) 18:30:44.08[2] 問題文(含コード&リンク): http://www.wakayama-u.ac.jp/~tokoi/opengl/ex-c.html
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月15日まで
[5] その他の制限:
自力ではどうしてもできませんでした。
よろしくお願いします。
>ただし,飛び方は手裏剣やブーメランやミサイルではなく, ボールらしい飛び方にしてください.
つまりどうせよと?
0683デフォルトの名無しさん
2011/07/14(木) 19:00:30.04隔離スレに引っ込んでろ。カス。
いやです。:-)
0685デフォルトの名無しさん
2011/07/14(木) 19:36:47.37http://codepad.org/b4ssX7Gt
0686デフォルトの名無しさん
2011/07/14(木) 20:02:43.72これはユークリッドの互除法のやり方で、定数時間で出来るはずだ。
10a + 37b + 40c + 45d + 48e + 70f = N をこのように変形。 10(a + 3b + 4c + 4d + 4e + 7f ) + 7b + 5d + 8e = N
新たな式10a' + 7b + 5d + 8e = Nを考えて、もしこの解全体が求まれば元の解を求めるのに役立てられる。
5(d + b + e + 2a') + 2b + 3e = Nと変形してより簡単な式に帰着できる。
新たな式5b' + 2b + 3e = Nは、2(b + e + 2b') + e + b' = Nと変形できる。
途中まで書いたがここから面倒になった。
連立一次不等式の格子点の個数を求める問題に帰着され、解個数はNの6次式になるはず。
0687デフォルトの名無しさん
2011/07/14(木) 20:07:09.52軌道に沿って動くってことだろ
頭使えオッサン
0688デフォルトの名無しさん
2011/07/14(木) 20:13:22.020689デフォルトの名無しさん
2011/07/14(木) 20:16:30.840690デフォルトの名無しさん
2011/07/14(木) 20:16:35.140691デフォルトの名無しさん
2011/07/14(木) 20:28:51.67[2] 問題文(含コード&リンク): 次の�@〜�Cの条件を満たすプログラムを作成せよ
�@main関数においてint型の半径rをキーボードから受け取る
�A円周(ring)を求めるenshu関数にrを「値呼び出し」で渡して面積を計算し、
その値をmain関数にreturnする
�B円の面積(area)を求めるmenseki関数にrを「参照呼び出し」で渡して面積を計算し、
その値をmain関数にreturnする
�Cmain関数でreturnされた円周と面積の値を実行結果のように表示する
[実行結果]
半径rを入力:5(←キーボードから入力)
円周:31.400000
面積:78.500000
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月21日まで
長々と失礼しました。どなたか宜しくお願いします
0692デフォルトの名無しさん
2011/07/14(木) 20:55:40.75[2] 問題文(含コード&リンク):
次のルールに基づき、全ての円盤を右杭に移動するまでの移動手順を示すプログラムを作成しなさい
・3本の杭と、中央に穴の開いた大きさの異なる複数の円盤かr構成される。
・最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている
・円盤を1回に1枚ずつどれかの杭に移動させることができるが、小さな円盤に大きな円盤を乗せることはできない
初期状態 円盤の数=3
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:いつでも
0693デフォルトの名無しさん
2011/07/14(木) 21:03:56.28でググろう
0694デフォルトの名無しさん
2011/07/14(木) 21:37:10.58#include <stdio.h>
double enshu(int r)
{
return 2 * 3.14 * r;
}
double menseki(int *r)
{
return 3.14 * *r * *r;
}
int main(void)
{
int r;
scanf("%d", &r);
printf("円周:%f\n", enshu(r));
printf("面積:%f\n", menseki(&r));
return 0;
}
0695デフォルトの名無しさん
2011/07/14(木) 21:54:18.34ありがとうございます!
助かりました。
0696デフォルトの名無しさん
2011/07/14(木) 22:39:31.34>>686 にヒントを得て、かなり速くなったよ
でも組み合わせが成り立つときにフラグを立てる処理は変わってないからオーダーは一緒
http://ideone.com/hJzLI
0697デフォルトの名無しさん
2011/07/14(木) 22:59:32.750698デフォルトの名無しさん
2011/07/14(木) 23:10:42.360699ななし
2011/07/14(木) 23:41:32.74[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/16です、よろしくお願いします
次のプログラムにおいて,sumrangeは,M行N列の行列A = (a_{ij})(実際には,
大きさM×Nのint 型の2次元配列で表される)を引数として渡されると,各行の最大値から最小値を
引いた値の(全体での)和を返す関数である.(ここでは,C 言語の配列の添え字にならって,i, jは
0から始まると考えている) 例えば,M = 3, N = 4のとき,主プログラム中で,配列aの値に
{ 7 5 -2 4
-3 11 -5 6
2 6 6 14 }が入力された場合,0行目の最大値は7,最小値は-2であり,その差は7 - (-2) = 9,
1行目の最大値は11,最小値は-5であり,その差は11 - (-5) = 16, 2行目の最大値は14,最小値は2であり,
その差は14 - 2 = 12 となるので,sumrangeは9 + 16 + 12 = 37を返す.関数sumrangeを,下記のプログラムの
/* INSERT HERE */ の部分に挿入できるように書け.なお,行列の(i, j)成分は,2次元配列の[i][j]要素に
対応するものとせよ.また,配列中のデータは,-10000以上10000未満であると仮定してよい.
#include <stdio.h>
#define M (適当な正整数)
#define N (適当な正整数)
/* INSERT HERE */
int main(void)
{
int a[M][N];
/* ここで a[0][0]〜a[M-1][N-1] の値を入力する */
printf("sumrange = %2d\n", sumrange(a));
return 0;
}
0700デフォルトの名無しさん
2011/07/14(木) 23:51:42.35{
int i, j, ret = 0, min, max;
for(i = 0; i < M; i++) {
min = max = a[i][0];
for(j = 1; j < N; j++) {
if(a[i][j] < min) min = a[i][j];
else if(max < a[i][j]) max = a[i][j];
}
ret += max - min;
}
return ret;
}
0701631
2011/07/15(金) 02:34:45.28申し訳ありません
授業:ネットワークプログラミング
問題文:以下のプログラムを改編し、21までの数取りゲームを作成せよ。なお数は一度に3つまで取れることとし、2つクライアントから交互に入力を受け付けれるようにする。
プログラムURL:http://ideone.com/pPtar
環境
OS: Linux
コンパイル:端末から gcc -oでコンパイルしています
言語:C
期限: 2011年07月16日15:00まで
その他の制限: ネットワークプログラミングの応用という課題ですのでサーバーとクライアントを利用したものでお願いいたします。
よろしくお願いします
0702デフォルトの名無しさん
2011/07/15(金) 05:14:31.82うちのcore i7 920な環境で
1000 : 3.33s
2000 : 13.86s
3000 : 65.72s
めっさ早くなってわろた
0703デフォルトの名無しさん
2011/07/15(金) 09:08:09.49[2] 問題文(含コード&リンク):
自然数を入力すると、その階乗を表示するようなプログラムを作成せよ。
ただし、演算結果が1000桁以下になる場合のみ対応し、
演算結果が1000桁を超える場合はその旨を表示して終了すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2011年7月17日まで
[5] その他の制限:
0705デフォルトの名無しさん
2011/07/15(金) 09:44:30.58#include <stdio.h>
int main(void)
{
int i, j, n, fac[2][1000] = {0}, d[2], f = 0;
scanf("%d", &n);
if(n >= 450) {
printf("1000桁を超えます\n");
return 0;
}
fac[0][0] = 1;
d[0] = 1;
for(i = 2; i <= n; i++, f ^= 1) {
for(j = 0; j < d[f]; j++) fac[f ^ 1][j] = fac[f][j] * i;
for(j = 0; j < d[f] || fac[f ^ 1][j]; j++) {
if(fac[f ^ 1][j] >= 10) {
fac[f ^ 1][j + 1] += fac[f ^ 1][j] / 10;
fac[f ^ 1][j] %= 10;
} }
d[f ^ 1] = j;
}
for(i = d[f] - 1; i >= 0; i--) printf("%d", fac[f][i]);
return 0;
}
0706デフォルトの名無しさん
2011/07/15(金) 10:14:10.35通信プログラムに回答してるのは俺だけって気がする.....
ttp://ideone.com/Mw35P
例によって winsock で動作確認したので linux でコンパイルする時には #define USE_WINSOCK の行を消せ
USER_NUM を変更することで複数人数でも遊べると思うけど確認はしていない、暇なら確認しておいてくれ
0707デフォルトの名無しさん
2011/07/15(金) 11:00:14.35プログラムの大半が追加部分になってしまう。
少々ロジックがややこしい。
0708デフォルトの名無しさん
2011/07/15(金) 11:08:48.20[2] 問題文(含コード&リンク): http://codepad.org/rBkXiwPm
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:visual studio
[3.3] 言語:C言語
[4] 期限:2011年 7月 19日
[5] その他の制限: アルゴリズムの説明もお願いします
0709デフォルトの名無しさん
2011/07/15(金) 11:20:37.34プログラムの根幹が変わらないなら問題ないです。
0710デフォルトの名無しさん
2011/07/15(金) 13:06:05.71アルゴリズムの説明も何も、ヒントに全部書いてあるじゃんw
0711デフォルトの名無しさん
2011/07/15(金) 13:18:17.31問1
誰も答え出さなかったらつかってくれ
#include <stdio.h>
#include <string.h>
int main()
{
int p_M=43112609;
char cp_M[9];
int digit=0;
int lsd=0;
int msd=0;
digit=sprintf(cp_M,"%d",p_M);/*桁数*/
sscanf(&cp_M[digit-1],"%1d",&lsd);/*最下位*/
sscanf(cp_M,"%1d",&msd);/*最上位*/
printf("桁数: %d\n最下位桁: %d\n最上位桁: %d\n",digit,lsd,msd);
return 0;
}
0712デフォルトの名無しさん
2011/07/15(金) 13:27:57.06問1
#include <stdio.h>
#include <math.h>
int main(void)
{
int p = 43112609;
double i, f;
f = modf(p * log10(2), &i);
printf("桁数:%d\n", (int)i);
printf("最上位桁の数字:%d\n", (int)pow(10, f));
printf("最下位桁の数字:%d\n", p % 4 * 2 - 1);
return 0;
}
0713デフォルトの名無しさん
2011/07/15(金) 13:31:15.66ttp://codepad.org/TR5qofAa
月を跨いだ振り替え休日がちゃんと表示されるかは未確認だ(最終日には祝日は無かったっけ?)
0714デフォルトの名無しさん
2011/07/15(金) 13:42:54.45#include <stdio.h>
#include <math.h>
int main(void)
{
int p = 43112609, r[] = {5, 1, 3, 7};
double i, f;
f = modf(p * log10(2), &i);
printf("桁数:%d\n", (int)i);
printf("最上位桁の数字:%d\n", (int)pow(10, f));
printf("最下位桁の数字:%d\n", r[p % 4]);
return 0;
}
0715デフォルトの名無しさん
2011/07/15(金) 13:49:31.65問2
#include <stdio.h>
#include <math.h>
int main(void)
{
int i, cnt[10] = {0}, p[] = {2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607, 1279, 2203, 2281,
3217, 4253, 4423, 9689, 9941, 11213, 19937, 21701, 23209, 44497, 86243, 110503, 132049,
216091, 756839, 859433, 1257787, 1398269, 2976221, 3021377,6972593, 13466917, 20996011,
24036583, 25964951, 30402457, 32582657, 37156667, 42643801, 43112609};
double d;
cnt[3] = cnt[7] = 1;
for(i = 2; i < sizeof p / sizeof *p; i++) cnt[(int)pow(10, modf(p[i] * log10(2), &d))]++;
for(i = 1; i <= 9; i++) printf("%dが%d個\n", i, cnt[i]);
return 0;
}
0716デフォルトの名無しさん
2011/07/15(金) 15:04:21.83>printf("桁数:%d\n", (int)i);
printf("桁数:%d\n", (int)i + 1);
に訂正
0717デフォルトの名無しさん
2011/07/15(金) 15:17:04.98ありがとうございます。助かりました。
0718デフォルトの名無しさん
2011/07/15(金) 17:31:28.73[2] 問題文(含コード&リンク):
#include <stdio.h>
#include <string.h>
struct Address_data{
char name[81];
char phone[20];
int age;
};
int main(){
struct Address_data data1, data2;
//data1の値設定
strcpy(data1.name, "Alex");
strcpy(data1.phone, "046-000-0001");
data1.age=18;
//data2の値設定
strcpy(data2.name, "Bonnie");
strcpy(data2.phone, "046-000-0002");
data2.age=19;
//data1,data2の内容表示
printf("%s\t(%d)\t[%s]\n", data1.name, data1.age, data1.phone);
printf("%s\t(%d)\t[%s]\n", data2.name, data2.age, data2.phone);
return (0);
}
0719デフォルトの名無しさん
2011/07/15(金) 17:31:46.13[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/22です
0720 ◆SG9/NmPjzc
2011/07/15(金) 18:03:24.72[1] 授業単元:情報C
[2] 問題文(含コード&リンク):複数人の身長を入力し、入力人数、最大値、最小値
平均値を出力するプログラムを作成せよ。ただし、身長に負の値が入力されたときに
身長の入力を終了することとし、データとして利用しないこと
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 明後日までにお願いします
[5] その他の制限: 友人に聞くとWhile文やIf文を使えと言ってきました。
習っている範囲はgotoあたりまでです。
0721デフォルトの名無しさん
2011/07/15(金) 18:07:20.52[2] 問題文:
シグナル処理を用いて1から順に数字を表示していき(無限ループ)、コンソール側からCTRL+Cを押すと数字の表示が止まりそれまでに表示したデータ数と表示した数字の合計を表示する。
また、CTRL+Cを押すと数字の表示が再開されて(ストップした数字の続き)またCTRL+Cで再開後から今までのデータ数と数字の合計を表示する。
具体例
./a.out
1
2
3
4 <------ここでCTRL+C
データ数:4 合計:10 <-----CTRL+C
5
6
7
8
9 <---またCTRL+C
データ数:5 合計:35
また、ソースは20行程度で書けるみたいです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:無期限
0722デフォルトの名無しさん
2011/07/15(金) 18:55:47.23ttp://ideone.com/o74gb
0723デフォルトの名無しさん
2011/07/15(金) 19:15:17.70ttp://ideone.com/m5MZr
性格的な理由で20行では書けなかったが、詰めればそんなモンかもしれないw
16行目は不要かも知れないのでコメントアウトして確認してみてくれ(windowsでは必要だった)
このプログラムは CTRL+Cでは終了できないから kill コマンドを使う必要が有るよ
0724デフォルトの名無しさん
2011/07/15(金) 19:38:50.10要件を満たせない言い訳乙としか言えない
出来ないなら何故解答した
0725デフォルトの名無しさん
2011/07/15(金) 19:46:16.72ステップ数は要件じゃないだろw
回答しない奴に限ってケチ付けるのは好きだよなぁw
0726デフォルトの名無しさん
2011/07/15(金) 20:08:35.77ありがとうございました!
0727デフォルトの名無しさん
2011/07/15(金) 20:26:58.780728デフォルトの名無しさん
2011/07/15(金) 20:33:47.72ありがとうございました
自分なりに作ってみたのも有ったんですが、うまくいかずすっきりしました!
コード行数は目安で言ったつもりだったんで条件ではないので問題ないです
よく考えたらkillコマンド使えばいいんですね
CTRL+Z使ってましたw
これだと一時停止にしかならないんですよねw
これを機にアップローダの使い方覚えようと思います
0729デフォルトの名無しさん
2011/07/15(金) 21:20:35.84ありがとうございます
>>710
すいません、理解できなかったのでコメントを付けて欲しいという意味です
0730デフォルトの名無しさん
2011/07/15(金) 21:52:47.11[1] 授業単元:学ぶC言語
[2] 問題文:科目の評価点数を入力すると、対応する成績評語を出力する
プログラムを作成せよ。 だたし、成績評語は、以下のように定める
評語 S A B C D
評価点数 100~90(Sに対応以下略) 89~80 79~70 69~60 59~0
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 明後日までにお願いします
[5] その他の制限:習っている範囲はgoto文までです
if文ではなくSwitch文でかいていただきたいです
caseの部分をなんとか短くしていただきたいです
0731デフォルトの名無しさん
2011/07/15(金) 22:19:19.12を作りたいんですが…
0732デフォルトの名無しさん
2011/07/15(金) 22:19:23.49ttp://codepad.org/91Cqi4OM
0733デフォルトの名無しさん
2011/07/15(金) 22:22:15.21点数をint型で代入しといて10で割って
case 10:
case 9:
〜
break;
case 8:
〜
break;
case 7:
〜
break;
case 6:
〜
break;
case default:
〜
break;
0734デフォルトの名無しさん
2011/07/15(金) 22:24:03.82>>733
もっと短くできるよ
0735デフォルトの名無しさん
2011/07/16(土) 00:26:41.80とりあえずでいいので……
0736デフォルトの名無しさん
2011/07/16(土) 00:36:15.51[2] 問題文:1,元金a円、利率rで何年預けるとした ら目標金額のb円を超えるか。金利は複利計算であ る。
2、元金a円、利率rで、n年預け るとしたら元金、金利の合計はいくらになるか。金 利は複利計算である。for文を用いよ。
[3] 環境
[3.1] OS:windows
[3.2] vs2008
[3.3] 言語: C++
[4] 期限:月曜日までにお願いします。
[5] その他の制限:特に無し。
よろしくお願いします。
0737デフォルトの名無しさん
2011/07/16(土) 00:43:23.17>>1
変数 a, b, は線形リストを構成するノードの中にある変数としていいでしょうか?
0738デフォルトの名無しさん
2011/07/16(土) 00:44:06.46具体的に
0739デフォルトの名無しさん
2011/07/16(土) 01:04:32.25超エスパーでやってみた。
ttp://codepad.org/cRbmyn3o
後付で色々注文でてもしらねーよ。
0740デフォルトの名無しさん
2011/07/16(土) 01:23:12.80case0個
http://ideone.com/B8zxI
0741デフォルトの名無しさん
2011/07/16(土) 01:34:10.50この程度の変態度にしといた方が吉。
http://codepad.org/qyg55krR
0742ななし
2011/07/16(土) 02:13:09.840743デフォルトの名無しさん
2011/07/16(土) 07:13:03.00>>696のボトルネックを改善。
http://ideone.com/yPBHZ
0744デフォルトの名無しさん
2011/07/16(土) 10:09:44.450745デフォルトの名無しさん
2011/07/16(土) 10:13:51.16いうてやんなw
0746デフォルトの名無しさん
2011/07/16(土) 10:16:18.61[2] 問題文(含コード&リンク):10人の学生の身長(m),体重(kg)のデータを入力し、
各学生の身長(m),BMI値を表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:2011年7月15日
[5] その他の制限:for文を使い、各学生の身長・体重・BMIはそれぞれ1次元配列でお願いします
0747デフォルトの名無しさん
2011/07/16(土) 10:25:56.730749デフォルトの名無しさん
2011/07/16(土) 10:26:34.28質問者の要求に最大限応えるために書いたのだから、
すなわち相手を満足させるためにやったのだから、
オナニーコードではなくてセックスコードと呼んで欲しいね
0750デフォルトの名無しさん
2011/07/16(土) 10:37:50.69そんなこと考えながら頑張ってうpってたの?wwwwwww
0751デフォルトの名無しさん
2011/07/16(土) 10:42:12.21#include <stdio.h>
int main()
{
double omosa[10];
double nagasa[10];
double biiemuai[10];
int i;
for (i = 0; i < 10; i++) {
printf("weight = ");
scanf("%lf", &omosa[i]);
printf("height = ");
scanf("%lf", &nagasa[i]);
biiemuai[i] = omosa[i] / nagasa[i] / nagasa[i];
}
printf("\n weight height BMI\n");
for (i = 0; i < 10; i++) {
printf("%10.1f%10.1f%10.1f\n", omosa[i], nagasa[i], biiemuai[i]);
}
return 0;
}
QZ化したものがひとりあらたに発生‥‥‥。
0753デフォルトの名無しさん
2011/07/16(土) 11:15:56.84この程度の処理でぱっと見で処理を把握できないプログラムを恥ずかしげもなく出すことは
作成者のプログラマとしての能力が致命的に欠落してることは理解できる?
トリッキーなコードはスレ違い
0754デフォルトの名無しさん
2011/07/16(土) 11:17:02.83おま
0755デフォルトの名無しさん
2011/07/16(土) 11:20:13.250756デフォルトの名無しさん
2011/07/16(土) 11:25:49.51問題1
#include <iostream>
int main()
{
double a = 100., b = 200., r = 0.01;
int n = 0;
for (;a <= b;) {
a *= 1.0+r;
n++;
}
std::cout << n << "年" << std::endl;
return 0;
}
問題2
#include <iostream>
int main()
{
double a = 100., r = 0.01;
int i, n = 10;
for (i = 0; i < n; i++) {
a *= 1.0 + r;
}
std::cout << a << "円" << std::endl;
return 0;
}
0757デフォルトの名無しさん
2011/07/16(土) 11:46:37.03for (i = 0; i < 10; i++) {
nbsp; do printf("weight %d = ", i+1);
nbsp; while(!scanf("%lf", &omosa[i]) && (scanf("%*s"),1));
do printf("height %d = ", i+1);
while(!scanf("%lf", &nagasa[i]) && (scanf("%*s"),1));
biiemuai[i] = omosa[i] / nagasa[i] / nagasa[i];
}
0758デフォルトの名無しさん
2011/07/16(土) 13:01:44.92ありがとうございます。金利、利率、目標金額をそれぞれ入力する場合はどうすればいいのでしょうか?
0759631
2011/07/16(土) 13:28:15.00返事が遅くなり申し訳ありません。
こちらの注文通りのプログラムで本当に助かりました
ありがとうございます。
linuxでのコンパイル、多人数でも動作確認ができました
0760デフォルトの名無しさん
2011/07/16(土) 13:52:04.27>>757
ありがとうございました
0762デフォルトの名無しさん
2011/07/16(土) 14:36:56.47そうです
>>739
ありがとうございます
0763デフォルトの名無しさん
2011/07/16(土) 15:25:27.73・問題文:以下のプログラムを改編し、ジャンケンゲームを作成せよ。勝敗判定は先に3勝したほうを勝ちとする。このときサーバーは2つクライアントから入力をうけ、同時に入力結果を返すこととする。
・プログラムURL:http://ideone.com/pGnkt
・環境
・OS: Linux
コンパイル:端末 gcc -o
・言語:C
・期限: 2011年07月19日15:30まで
その他の制限: この課題に取り組んでいますが、サーバーとクライアントの間でうまく動作するものが作れません。よろしくお願いいたします。
0764デフォルトの名無しさん
2011/07/16(土) 16:24:20.650765デフォルトの名無しさん
2011/07/16(土) 17:59:23.07(2)問題:偶数なら2で割り、奇数なら3倍して1を足し、1になるまで繰り返すプログラムの作成をお願いします。
「偶数なら2で割り、奇数なら3倍して1を足す」という部分を再帰関数化しろ。
実行結果
2以上の自然数を入力してください。
11
11→34→17→52→26→13→40→20→10→5→16→8→4→2→1
0766デフォルトの名無しさん
2011/07/16(土) 18:33:16.55#include <stdio.h>
int main()
{
int d;
printf("2以上の自然数を入力してください。\n");
scanf("%d", &d);
printf("%d", d);
do {
if (d % 2) d = d * 3 + 1;
else d /= 2;
printf("→%d", d);
} while (d > 1);
printf("\n");
return 0;
}
0767デフォルトの名無しさん
2011/07/16(土) 18:36:03.100768デフォルトの名無しさん
2011/07/16(土) 18:36:27.32http://codepad.org/hGc5MwTM
0769デフォルトの名無しさん
2011/07/16(土) 18:49:40.250770デフォルトの名無しさん
2011/07/16(土) 19:00:13.24(1)c言語
(2)問題:「偶数なら2で割る、奇数なら3倍して1を足す」処理をして、さらにその関数に偶数処理と奇数処理の回数を表示するプログラムの作成をお願いします。
実行結果
2以上の自然数を入力してください。
11
11→34→17→52→26→13→40→20→10→5→16→8→4→2→1
偶数処理の回数:10回
奇数処理の回数:4回
0771デフォルトの名無しさん
2011/07/16(土) 19:13:59.66ttp://ideone.com/9TqqL
0772デフォルトの名無しさん
2011/07/16(土) 20:30:31.82http://codepad.org/fL3CjlUN
0773デフォルトの名無しさん
2011/07/17(日) 02:47:08.14今度はUDPか、UDPでジャンケン3勝って少し面倒だな
0774デフォルトの名無しさん
2011/07/17(日) 14:14:36.74TCP/IPでも作成上問題ありませんので、以下を参照にお願いします。
・プログラムURL:http://ideone.com/JSLQF
0775デフォルトの名無しさん
2011/07/17(日) 15:26:27.52良いのか?例題のプログラムはUDPを使ったコードだぞ
実はUDPで書いてはみたんだが、複数のパソコンが無いと試験できない事に気が付いてアップするのを控えた
クライアントも受信するから bind() しなければならないのだけど、同じIPとPORTだと1プロセスしか bind() できないんだよねw
TCPで良いならこないだ書いた21ゲームを直せば簡単だ
0776デフォルトの名無しさん
2011/07/17(日) 15:38:13.81私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
0777デフォルトの名無しさん
2011/07/17(日) 15:39:27.31私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
0778デフォルトの名無しさん
2011/07/17(日) 15:40:59.41私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
0779デフォルトの名無しさん
2011/07/17(日) 15:41:18.06私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
0780デフォルトの名無しさん
2011/07/17(日) 15:49:09.030781デフォルトの名無しさん
2011/07/17(日) 15:56:08.83死ね
0782デフォルトの名無しさん
2011/07/17(日) 16:29:04.10この2つの違いを教えてもらえればいいんですが…
>>781
何か気に障る事を言ったのでしょうか?謝ります
0783デフォルトの名無しさん
2011/07/17(日) 16:58:10.11ここは宿題スレだから...きっと講義を受けたんだろうなぁ。
そんで本を読んで勉強したし、ググって調べてもみたはずだよね。
それでも分からないから、ここに来たと。
来て >1 を読んだけど、あえて「連結リストのリストダンプとリスト解放を教えろ」と書き込んだわけか。
0784デフォルトの名無しさん
2011/07/17(日) 17:01:02.48YES
0785デフォルトの名無しさん
2011/07/17(日) 17:28:20.07各言語用はいくらかあるようだけれど。
「スレ立てるまでもない質問は」という大仰な修飾の
付いたやつくらいかな。
0786デフォルトの名無しさん
2011/07/17(日) 18:53:31.37何故に連投した?
ttp://ideone.com/qyjq7
少し躓いて時間がかかってしまったが、それによって先日の21ゲームのバグが見つかった
多分、>>631 も君だと思うんだが、>>706 の回答にはバグが有る
server() 内で定義している len は初期化する必要が有る(初期化の方法は今回の回答を参考にしてくれ)
初期化しなくても動作する場合もある事がC言語の嫌らしいところで、前回の回答を修正したのに変更していない場所でエラーが出て悩んでしまった
何年、プログラマをやってるんだと....orz
0787デフォルトの名無しさん
2011/07/17(日) 19:25:42.10そこを何とか答えて頂きたい
0788デフォルトの名無しさん
2011/07/17(日) 20:03:23.36[2] 問題文(含コード&リンク):
#include <stdio.h>
#include <string.h>
struct Address_data{
char name[81];
char phone[20];
int age;
};
int main()
{
struct Address_data data[2], *p = data;
printf("Input end = Ctrl + D\n");
for (p = data; p - data < 2; p++)
p->age = -1;
for (p = data; p - data < 2; p++) {
printf("[%ld]name phone age = ", p - data);
if (scanf("%s %s %d", p->name, p->phone, &p->age) != 2)
break;
}
printf("\n");
for (p = data; p->age >= 0; p++)
printf("%s\t(%d)\t[%s]\n", p->name, p->age, p->phone);
return (0);
}
0789デフォルトの名無しさん
2011/07/17(日) 20:03:35.84[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/20です
0790デフォルトの名無しさん
2011/07/17(日) 21:35:08.03>>764>>780>>782>>784>>787
何人か煽りも混じっているかもしれないけど、、、。
スレの流れから想像するに、>>739のコード中の
「リストダンプ」と「リスト解放」のことを言っている?
それならば、>>739の関数を見てもらえればいい。
そうじゃないなら、文脈次第。
よくある処理としては、
リストダンプ
→リストの全ノードの中身を各々表示する
リスト解放
→ヒープに取られたリストノード各々を解放
0791デフォルトの名無しさん
2011/07/17(日) 21:52:33.39元のコードに色々疑問があるが、一応書いてみた。
元から構造体の配列は使われているから、要素数増やせばいいんじゃないの?
ttp://codepad.org/QCAUfXzv
0792デフォルトの名無しさん
2011/07/17(日) 21:59:20.72遅くなりましたが解答ありがとうございました
for (n = 0, sum = 0.0; r = scanf("%lf", &h), (r == 1 && 0 <= h); ++n) {
上記の部分がちょっと難しいのでもう少し簡単?にできますかね
ちょっとまだC言語を始めたばかりでfor()の部分で括弧のなかに
scanfとかをいれていいとかは習わなかったので・・・
0793デフォルトの名無しさん
2011/07/17(日) 22:12:24.00ttp://ideone.com/2oGlM
0794デフォルトの名無しさん
2011/07/17(日) 22:15:40.78for (n = 0, sum = 0.0; r = scanf("%lf", &h), (r == 1 && 0 <= h); ++n) {
は以下と同等。
for (n = 0, sum = 0.0; ; ++n) {
if(scanf("%lf", &h) != 1) {
break;
}
if (h < 0) {
break;
}
…
}
コンパイルしていないので、間違えていればツッコミよろ
>>794
>>722
一番はじめに書いていただいたプログラムなどで
r==1や
if(r ! = 1)break; と書いてありますが
これはなんという意味を表すのでしょうか。
なんどもすいません
0796デフォルトの名無しさん
2011/07/17(日) 22:48:43.21scanf("%lf", &h);とすると、
hに正しくdouble型の数値が入力された場合は、1が返る
文字列などを入力して、失敗すれば、0が返る
EOFが入力された場合はEOF(-1)が返る
だから、r == 1のときだけ、入力が正しいとして処理を進めている
0797デフォルトの名無しさん
2011/07/17(日) 23:13:22.15条件
1:関数gcdの呼ばれた回数を記録 2:呼ばれた回数と、その時の引数a,bの値を表示
実行結果:2つの整数を入力してください
数値1:64
数値2:120
1回目の関数の呼び出し:a=64 ,b=120
2回目の関数の呼び出し:a=120 ,b=64
3回目の関数の呼び出し:a=64 ,b=56
4回目の関数の呼び出し:a=56 ,b=8
最大公約数は8です
ベース
#include <stdio.h>//ユークリッドのアルゴリズムで最大公約数gcdを求める
int gcd(int fa , int fb); //プロトタイプ宣言
int main(){
int a,b,g;
printf("2つの数値を入力してください。\n");
printf("数値1:");
scanf("%d",&a);
printf("数値2:");
scanf("%d",&b);
g = gcd(a,b);
printf("最大公約数は%dです\n",g);
}
int gcd(int fa, int fb){
int r,ret;
r = fa % fb ;
if(r > 0){ //不成立時が終了条件
ret = gcd(fb,r); //再帰呼び出し
}else{ret = fb ;
}return ret;
}
0798デフォルトの名無しさん
2011/07/17(日) 23:38:26.16{
static int cnt = 1;
int r, ret;
printf("%d回目の関数の呼び出し:a=%d ,b=%d\n", cnt, fa, fb);
r = fa % fb;
cnt++;
if(r > 0) {
ret = gcd(fb, r);
}
else {
ret = fb;
}
return ret;
}
最近教えてもらった、Embarcadero/Borland の codeguard がなかなかいい感じです。
時にはミスりますが、初期化忘れくらいならばたいがい検出してくれます。評価版もありますので一度お試しを。
bcc32 -vG -v target.c or target.cpp
0801デフォルトの名無しさん
2011/07/18(月) 01:21:45.28[2] 問題文(含コード&リンク): http://codepad.org/Os0523nV
3問あります。問題文もリンク先に書いてあります。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年7月18日まで
[5] その他の制限:スタックとキュー
どうぞよろしくお願い致します。
(1) http://ideone.com/248cl
(2) http://ideone.com/Czueg
(2) のキューは問題例とは異なった考え方ですが、この方がシンプルに実装できると考えています。参考までに。
0803デフォルトの名無しさん
2011/07/18(月) 02:28:43.28そんなことには全く興味が無い
その場しのぎだけが目的
0805デフォルトの名無しさん
2011/07/18(月) 02:42:21.86そうですか?私が学生だったら、自分で解いた上で(必要ならモリタポを払ってでも)他の人間がどう書くかわくわくして見ていますね。
そんな人もいると思います、だったら受けてたちましょう。
そうじゃない人はどーでもいいです。
http://www.dotup.org/uploda/www.dotup.org1800860.zip.html
Pass:0000 del:1週間
0807デフォルトの名無しさん
2011/07/18(月) 02:52:54.490808デフォルトの名無しさん
2011/07/18(月) 02:55:08.93こういうのは面白いやり方を期待できないだろうからマジ質問なんだろうけど
そういう人はどうしてプログラミングをやろうと思ったのか気になる
0809デフォルトの名無しさん
2011/07/18(月) 02:57:48.37ありがとうございます
それで十分です
0810デフォルトの名無しさん
2011/07/18(月) 04:29:28.20単位なんだから仕方がない。
0811デフォルトの名無しさん
2011/07/18(月) 04:42:04.500812デフォルトの名無しさん
2011/07/18(月) 04:47:05.02トリップついてる頭のおかしい人を、まともな人間にしてください
http://hibari.2ch.net/test/read.cgi/tech/1307166756/828
http://hibari.2ch.net/test/read.cgi/tech/1307166756/724
http://hibari.2ch.net/test/read.cgi/tech/1307166756/385, http://hibari.2ch.net/test/read.cgi/tech/1307166756/449 による結果を確認したいもの。
http://hibari.2ch.net/test/read.cgi/tech/1307166756/374 難問とは思いませんが検証結果は知りたいもの
0814デフォルトの名無しさん
2011/07/18(月) 05:52:37.08仕事用に Visiual Studio を持ってるからw
bcc はこういうスレで遊びコード書く専用だよ
そもそも、宿題レベルのコードにデバッガを使うのには抵抗も有るし
0815デフォルトの名無しさん
2011/07/18(月) 06:13:17.07客の注文した商品名と金額を線形リストを用いて出力表示するプログラムです
上記URLプログラムだとエラーが発生するんですが、原因がどこにあるのか教えてください
0816デフォルトの名無しさん
2011/07/18(月) 06:23:09.32いいなあ。
0817デフォルトの名無しさん
2011/07/18(月) 07:23:16.57全角スペース
0818デフォルトの名無しさん
2011/07/18(月) 08:20:39.94http://projecteuler.net/
0819デフォルトの名無しさん
2011/07/18(月) 09:12:59.55http://codepad.org/b3QoFw7e
0820デフォルトの名無しさん
2011/07/18(月) 09:41:52.71ありがとうございます。連発はPCが調子悪くて読み込みクリックの際連続で投稿してしまいました。
ご指摘のとうり初期化のところを再度確認させていただきます。
0821デ
2011/07/18(月) 10:06:37.93まるでトリップをつけてるのが悪いみたいな言い方。
0822デフォルトの名無しさん
2011/07/18(月) 10:20:36.60「トリップついてる頭のおかしい人」はQZを指す。お前、鈍いってよく言われるだろ。
0823デ
2011/07/18(月) 10:29:08.19いくらなんでもそれは一見さんには過酷な課題というものです。
0825デフォルトの名無しさん
2011/07/18(月) 12:38:08.13あえてそういう表現してるんだろうが、バカみたいだ。
0826デフォルトの名無しさん
2011/07/18(月) 12:39:42.26[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 四則演算(+、−、×、÷)だけの電卓を作成せよ。
scanfで式を入力し、エンターキーで結果を表示。入力できる数値の値は三つだけでよい。
例:式は2+4×5 enterkey
答え:22
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名:gcc 3.4
[3.3] 言語: C言語
[4] 期限: 2011年7月19日08:30まで
[5] その他の制限: できれば各処理が何を行っているかコメントを入れてほしい。
0827デフォルトの名無しさん
2011/07/18(月) 12:48:28.87>>825のような鈍い奴は自分の能力が足りないとあきらめる事だ。
0828デフォルトの名無しさん
2011/07/18(月) 13:59:45.36>>817
全角スペースとは、具体的に何処に入っているのか詳細を教えてください
>>819
>>815のプログラムとの変更点を教えてください
0829デフォルトの名無しさん
2011/07/18(月) 14:03:43.0424行目でコンパイルエラー出てるんだから大体わかるでしょ
ってか全角スペースが表示されるようなエディタ使ってないのか
0830デフォルトの名無しさん
2011/07/18(月) 14:04:29.6324行目 int 前のインデントを行うのに全角スペースを2発入れてる
0831デフォルトの名無しさん
2011/07/18(月) 14:07:52.040832デフォルトの名無しさん
2011/07/18(月) 14:12:05.130833デフォルトの名無しさん
2011/07/18(月) 14:12:51.34TABもシンボル表示させてる?
0834デフォルトの名無しさん
2011/07/18(月) 14:20:40.07[1] 授業単元:プログラミング演習
[2] 問題文:標準入力に現れた数字文字の出現回数を*を使って
数字の下側に表示するプログラムを作成せよ。
http://codepad.org/T7Ft26pn
上記のソースコードを元にして作成していただきたいです。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名:gcc 3.4
[3.3] 言語: C言語
[4] 期限: 2011年7月20日まで
[5] その他の制限:while文、for文を使って作成していただきたいです。
お願いいたします。
実行例 入力:112 Ctrl+z とした場合
1 2 3 4 5 6 7 8 9
* *
*
0835デフォルトの名無しさん
2011/07/18(月) 14:24:59.74コンパイルしたところ
error C2106: '=' : 左のオペランドが、左辺値になっていません。と表示されました
0836デフォルトの名無しさん
2011/07/18(月) 14:43:52.98してる。
でないと、makeに「タブのつもりですか?」とか
高飛車な態度で笑われてちんこ勃つから
0837デフォルトの名無しさん
2011/07/18(月) 14:57:03.16[2] 問題文(含コード&リンク):
実数x、y(y≠0)の入力に対し、商x / yを出力する。ただし、プログラム中で除算の式を用いないでNewton法の逐次近似で乗算と減算によりyの逆数zを求め、x×zを得ること。
注意 逆数zを求める初期値の選択が悪いと2次の収束(反復ごとに精度が桁数で倍になる)をせず、極端な場合には振動して収束しない。
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:visual studio
[3.3] 言語:C言語
[4] 期限:2011年7月20日
[5] その他の制限: コメントでかるく説明も入れていただけるとありがたいです
0838デフォルトの名無しさん
2011/07/18(月) 15:21:13.67f(x)=1/x
f'(x)=-1/x*x
(a,f(a))を通る接線
y - f(a) =f'(a)(x - a)
x軸との交点(y=0)
x = a - f(a)/f'(a) = 2a
0839デフォルトの名無しさん
2011/07/18(月) 15:56:36.48演算子の優先順位は考慮する必要はありますか
問題1
a <= b の = 要らないのでは。
0841デフォルトの名無しさん
2011/07/18(月) 16:22:42.71問題文にそったまでですがどのような理由で要らないと思われますか?
0842デフォルトの名無しさん
2011/07/18(月) 16:41:07.30演算子の優先順位を考慮してお願いします。
0843デフォルトの名無しさん
2011/07/18(月) 16:58:25.38ご希望なら、皆でつけるよ。
0844デフォルトの名無しさん
2011/07/18(月) 17:11:10.39node->name = name;
node->price = price;
でエラーが発生したようです
何が原因なのでしょうか?
0845デフォルトの名無しさん
2011/07/18(月) 17:20:01.29お前はQZくらい頭おかしいのか? それならトリップつけろ。
http://codepad.org/aTuKgIxj
>>825
NGに登録しているわりには、私が出現すると過敏に反応するんですよね。ちょっとためしてみませうか。
>>827, >>845
どうみてもあなたのほうが変です。ご愁傷様。
いつも不思議に思うのですが、回答を作成しつつあわせて◆QZを叩けば効果的なのですが、できないのでしょうか?
strcpy(name, node->name);
816.c(58) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
strcpy(name, node_h->name);
0849デフォルトの名無しさん
2011/07/18(月) 17:50:32.52コンパイル通せるようになってからでかい口叩こうな。
0850デフォルトの名無しさん
2011/07/18(月) 17:54:06.11へえ?
>>846 のコンパイルが通らないのですか?codepad 上のgcc では通っていますけれども。通らないコンパイラはなんですか?
0851デフォルトの名無しさん
2011/07/18(月) 17:54:10.13解いていただいて誠にもうしわけないのですが、関数一つで行えないでしょうか?
あと、処理をswitch文やif分では行えないでしょうか?
解いていただいた方法ですと、まだ習っていない処理の仕方なので説明が出来ませんので。
本当にお願いばかりで申し訳ありません。
0852デフォルトの名無しさん
2011/07/18(月) 17:57:06.78ありがとうございます
できるようになりましたが、出力時にこのような表示が…
入力しなさい
tea 330
入力しなさい
0番目のリスト-> (ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘJ,
330)
これはcharに文字が入っていないのですか?
0853デフォルトの名無しさん
2011/07/18(月) 17:57:14.28strcpy(node->name, name);
816.c(58) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
strcpy(node_h->name, name);
ERROR:referer情報が変です。(ref1)
0855デフォルトの名無しさん
2011/07/18(月) 18:01:48.33出力表示する関数はvoidですが…
0856デフォルトの名無しさん
2011/07/18(月) 18:19:16.41質問者のほうもおかしな気分になる。
どっかに回答の載ってるサイトがあるんじゃないかな?
とか。
間というものを大切にしよう。
一人(一つの酉とか)が多数の問題を同時解決するのも
また同じ。
0857デフォルトの名無しさん
2011/07/18(月) 18:22:32.76気持ち悪いからトリップつけてよ
0858デフォルトの名無しさん
2011/07/18(月) 18:25:29.71そうですかね。できたから上げただけなんですが。:-)
種明かしをすると過去問に類似のものがあり、それをちょっと手直ししただけです。とはいえ無論オリジナルですが、最近は信じてもらえなくて粘着様にたたかれる有様です。
不思議な世の中です。
0859デフォルトの名無しさん
2011/07/18(月) 18:29:29.71トリップつけたり外したりすんな
引っ込んでろ
0860デフォルトの名無しさん
2011/07/18(月) 18:51:53.180861デフォルトの名無しさん
2011/07/18(月) 18:59:22.700862デフォルトの名無しさん
2011/07/18(月) 19:02:22.570863デフォルトの名無しさん
2011/07/18(月) 19:04:58.500864デフォルトの名無しさん
2011/07/18(月) 19:11:44.15ありがとうございます。
完璧でした。助かりました。
0865デフォルトの名無しさん
2011/07/18(月) 19:12:49.082つの文字と整数を区切らずに入力するとエラーがでます
それと、最初に改行のみ入力すると正常に終了するようです
0866デフォルトの名無しさん
2011/07/18(月) 19:47:56.07別に。
義理をかく、恥をかく、汗をかく、の三角法を実践し、10 や 20 の恥くらいは、なんとも思わない体になりました。
0867デフォルトの名無しさん
2011/07/18(月) 20:13:57.20[2] 問題文(含コード&リンク):
世代数 平均適応度 最大適応度というフォーマットで、ooo.dat というファイル名で保存すれば、gnuplot で
plot ”ooo.dat”using 1:2 w l, ”result.dat”using 1:3 w l
とすることで、グラフが得られる。
グラフの例とプログラムと問題文は以下のURLです。
http://ux.getuploader.com/qwertykey/
パスはqqq3538です。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:[2011年7月20日まで]
[5] その他の制限: プログラムに詳しく書かれているので遺伝アルゴリズムに知識がなくてもできると思います。
よろしくお願いします。
0868デフォルトの名無しさん
2011/07/18(月) 20:30:24.990869デフォルトの名無しさん
2011/07/18(月) 21:29:57.32これがコンパイル通る? wwwww
> void error(viod)
0870デフォルトの名無しさん
2011/07/18(月) 21:36:26.75ほら、回答も書いてやったぞ。宿題の役には立たないうんこコードなのは一緒だが、
>>846と違って、コンパイルエラーもないし、なによりもループせずきちんと終了する。
#include <stdio.h>
int main()
{
printf("hello world!\n");
}
0871デフォルトの名無しさん
2011/07/18(月) 21:41:09.88>>869ほどひどい自害は初めて見た。
0872デフォルトの名無しさん
2011/07/18(月) 21:45:04.28-Wall -Werrorはデフォルト。とくにここは宿題スレだ。
0873デフォルトの名無しさん
2011/07/18(月) 21:56:55.24[2] 問題文: 金額を入力すると、貨幣及び硬貨の合計枚数が最も少なくなるように
一万円札、5千、千、500円玉、100、50、10,5,1円玉に分け、それぞれの枚数
を出力するプログラムを作成せよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:明日まで
[5] その他の制限: goto文まで習いました、学び始めて2ヶ月ほどなので
出来る限り分かりやすいプログラムでお願いします
0874デフォルトの名無しさん
2011/07/18(月) 22:29:41.06ちょっと冗長になってもた
ttp://ideone.com/l1evG
これはびっくり。ご指摘感謝。
でも、 コ ン パ イ ル は と お り ま す 霧
>>826
動作には問題ないのですが、それ以前の問題かと。ということで修正いたします。
お友達にあげるか、もし他に回答する人がいない場合の予備にでもしてください。
http://codepad.org/aNs8p7a1
0876デフォルトの名無しさん
2011/07/18(月) 22:58:32.38int main(void){
int money;
printf("金額を入力してください :"); scanf("%d", &money);
printf("一万円札の枚数 %d\n", money / 10000); money %= 10000;
printf("五千円札の枚数 %d\n", money / 5000); money %= 5000;
printf("千円札の枚数 %d\n", money / 1000); money %= 1000;
printf("500円玉の枚数 %d\n", money / 500); money %= 500;
printf("100円玉の枚数 %d\n", money / 100); money %= 100;
printf("50円玉の枚数 %d\n", money / 50); money %= 50;
printf("10円玉の枚数 %d\n", money / 10); money %= 10;
printf("5円玉の枚数 %d\n", money / 5); money %= 5;
printf("1円玉の枚数 %d\n", money);
return 0;
}
0877デフォルトの名無しさん
2011/07/18(月) 23:01:40.73うんこコードとっととなおせ。
まだ、 コ ン パ イ ル が と お ら な い。
それをなおしても、る ー ぷ す る。
0878デフォルトの名無しさん
2011/07/18(月) 23:06:00.47そうですか?ちょっと確認します。
0879デフォルトの名無しさん
2011/07/18(月) 23:17:06.03>>826
ループするのは仕様です。(>>826 にはその場合の指示はとくにない。)つまり解釈できない式を入力すると "syntax error" と表示して再度入力を促します。
しかし、それが問題ならば、以下の形にしておきます。
コンパイルが通らない、というのはこちらでは確認できませんでした。warning は出ますが、これは動作上問題はありません。(longjmp()->setjmp() で error() からはもどらない。)
が、回避してみました。これでどうでしょうかね。
http://codepad.org/41Ane6id
0880デフォルトの名無しさん
2011/07/18(月) 23:26:14.37ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
0881デフォルトの名無しさん
2011/07/18(月) 23:29:12.180882デフォルトの名無しさん
2011/07/18(月) 23:42:14.72申し訳ないのですが、>>875 にしても、代数式として評価が可能な場合には評価結果を出力して終了しています。
ループするのは、入力した式が代数式として評価不可能な場合で、
"syntax error" と表示したあと、1文字先読みして(∵LL(1)文法に従っているので)単に main() に longjmp() しているだけです。
だから代数式として評価可能な式が入力され次第、プログラムは終了します。
いつまでたってもループしたまま終わらないという誤解をお持ちのようですが、少しコードを眺めていただければ、そんなことはないことはお分かりになるだろうと思います。
#それとも掛け算に * 割り算に / を使っていることを問題にされているのでしょうかね?(たしかにこれは >>826 とは違いますが)
0883デフォルトの名無しさん
2011/07/19(火) 00:01:27.45http://codepad.org/NBYcgHii
0884デフォルトの名無しさん
2011/07/19(火) 00:27:49.09糞コードしか書けない癖に
0885デフォルトの名無しさん
2011/07/19(火) 00:29:37.71http://codepad.org/ki8pnWhX
0886デフォルトの名無しさん
2011/07/19(火) 00:32:26.59846 < /dev/nullで終了しないんだが。
こ れ も 仕 様 で す か あ ?
0887デフォルトの名無しさん
2011/07/19(火) 00:58:23.91実行結果:
数値f0f0のビット状態
1111000011110000
3ビット回転させました
数値8787のビット状態
1000011110000111
ベース
#include <stdio.h>
void print_bit(unsigned short int x); //プロトタイプ宣言
int main(){
unsigned short int usi;
usi = 0xf0f0 ;
print_bit(usi);
return 0; //システムに値0を返す
}
void print_bit(unsigned short int x){
int length , i , mask ;
mask = 1;
length = sizeof(x) *8;
mask =mask << (length -1);
printf("数値%xのビット状態\n",x);
for(i = 1;i<= length ; i++){
if(x & mask){
printf("1");
}else{
printf("0");
}
mask =mask >> 1;
}
printf("\n");
}
状況がよくわかりました。
>>826
以下に修正いたします。
評価不可能の場合ループする:http://codepad.org/n54wiAFR
評価不可能の場合ループしない:http://codepad.org/9TMHHLiE
0889デフォルトの名無しさん
2011/07/19(火) 01:20:14.32なあんだ。そんな事もわからずに。
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ってやってたんですかあ?
0890デフォルトの名無しさん
2011/07/19(火) 01:24:44.86たしかに。先読みの落とし穴に嵌っていました。
一連のご指摘感謝いたします。
0891デフォルトの名無しさん
2011/07/19(火) 02:15:12.83何でもいいんですが、問題読みました?
まぁgetchar()のほうがいいのかもしれないけど、問題に書いてある以上はscanf
を使うべきなのでは?
まぁ質問のご本人様がいいと言えばそれまでなんですけど。
そういわれればそうですね。
>>826 訂正します。
http://codepad.org/p3YRfvS8
http://codepad.org/Qeismfmq
0893デフォルトの名無しさん
2011/07/19(火) 02:51:36.33プログラムを商品名のみ入力するように変更して
完成させることができました
ですが、商品名と価格を同時に入力することは不可能なんでしょうか?
アドバイスおねがいします
>>854
http://codepad.org/RLETGtBf
y に与えることのできる値はおおよそ 1/epsilon よりも小さい必要があります。
0897デフォルトの名無しさん
2011/07/19(火) 11:59:29.50[2] 問題文(含コード&リンク):
次の表のデータを構造体(shouhin)に格納して、商品コードを入力し、
該当する商品が見つかった場合には、その商品のコード、商品名、価格、販売数、販売額(価格×販売数)を
実行結果のように表示するプログラムを作成せよ。
なお、該当する商品があ見つからなかった場合のみ「見つかりませんでした」と表示してプログラムを終了する
┏━━━━━━┯━━━━━━━━┯━━━━━┯━━━━━┓
┃商品コード │商品名 │価格 │販売数 ┃
┃code │name │price │number ┃
┃ │ │ │ ┃
┃fm1 │フラッシュメモリ │1500 │27 ┃
┃hu2 │ハブ │23000 │8 ┃
┃mo3 │マウス │2560 │12 ┃
┗━━━━━━┷━━━━━━━━┷━━━━━┷━━━━━┛
[実行結果]
商品コードを入力:hu2(キーボードからの入力)
商品コード 商品名 価格 販売数 販売額
----------------------------------------------
hu2 ハブ 23000 8 184000
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 今週末まで
上手く書きこみ出来てるか不安ですが…どなたか宜しくお願いします。
0898デフォルトの名無しさん
2011/07/19(火) 12:39:29.41ttp://ideone.com/xjWzl
0899デフォルトの名無しさん
2011/07/19(火) 12:55:56.07見つかったときは終わらんの?
0900デフォルトの名無しさん
2011/07/19(火) 15:09:31.180901デフォルトの名無しさん
2011/07/19(火) 19:21:44.770902デフォルトの名無しさん
2011/07/19(火) 20:30:26.73お願いします。
0903デフォルトの名無しさん
2011/07/19(火) 20:43:52.62ありがとうございます
0904デフォルトの名無しさん
2011/07/19(火) 21:09:42.47すいません、このプログラムを
while文をつかって書いていただけませんか
C言語を初めて一ヶ月の初心者なので簡単にお願いします
0905デフォルトの名無しさん
2011/07/19(火) 21:21:10.52#include <stdio.h>
int main()
{
float sum = 0, max = -1, min = 10000, val;
int num;
for (num = 0; scanf(" %f", &val) == 1 && val > 0; num++) {
if (max < val)
max = val;
if (min > val)
min = val;
sum += val;
}
printf("入力人数: %d\n", num);
if (num > 0) {
printf("最大値: %f\n", max);
printf("最小値: %f\n", min);
printf("平均値: %f\n", sum / num);
}
}
0906デフォルトの名無しさん
2011/07/19(火) 21:22:28.84#include <stdio.h>
int main()
{
float sum = 0, max = 0, min = 10000, val;
int num = 0;
while (scanf(" %f", &val) == 1 && val > 0) {
if (max < val)
max = val;
if (min > val)
min = val;
sum += val;
num++;
}
printf("入力人数: %d\n", num);
if (num > 0) {
printf("最大値: %f\n", max);
printf("最小値: %f\n", min);
printf("平均値: %f\n", sum / num);
}
}
0907デフォルトの名無しさん
2011/07/19(火) 21:23:51.43でも、コンパイルはとおります 霧
0908デフォルトの名無しさん
2011/07/19(火) 21:28:56.14ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
なんて言ってるうんこの書いたコードなんか誰も使いたがらないのは当然。
0909905,906
2011/07/19(火) 21:33:48.59>>905,906を使うための条件
1 このスレ(または次スレ)に↓を書き込むこと。
QZ死ね。てめーのうんこコードなんか単位落とすことになったって使わねー。
2 次回の質問の時は↓これを制限とすること。
[5] その他の制限: QZは邪魔だから回答しない事
0910デフォルトの名無しさん
2011/07/19(火) 21:38:07.87>>722 はQZじゃない。
・int main(void) とは QZ はかかない。
・末尾が /* end */ じゃない。
・ループ後の結果表示で if (r == 1) { } という意味不明なことは QZ はしない。
・ループ内での最小値・最大値のキープで、if (n == 0 || h < min) という小粋なことは QZ はできない。
0912デフォルトの名無しさん
2011/07/19(火) 21:42:48.50float sum = 0,
printf() で出力するのに、double ではなくわざわざ float とした根拠を示してください。
0914デフォルトの名無しさん
2011/07/19(火) 21:46:59.84ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
なんて、墓穴掘っちゃうんだよ。www
0915デフォルトの名無しさん
2011/07/19(火) 21:48:52.79ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
なんて言ってるバカに説明してやる義理はねー。
0916デフォルトの名無しさん
2011/07/19(火) 21:52:25.98すいませんが
8行目の while (n) という ところの nっていうのはなにを表している
のでしょうか
では最小値は?最小値が 10001 は probable ではないにしても possible でしょう?mix = 10001 なんてうかつに書いていいのかなあ。
答える能力がない、と解釈しました。霧
0919デフォルトの名無しさん
2011/07/19(火) 21:56:10.71なんどもすいません
a[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, *p = a;
上の{}とかを使わないで宣言って出来ませんかね
習っていないというか 見たことがなかったので
0920デフォルトの名無しさん
2011/07/19(火) 21:57:22.43指摘されなきゃ、-1が有りえないと気付かないバカ。mixってなんだよ。ww
>>918
指摘されなきゃ、ループに気付けないバカには教えてやんね。
0921デフォルトの名無しさん
2011/07/19(火) 22:02:52.03ぷぷぷ。
***最小値が 10001 だったり***、最大値が -1 だったりすると破綻しますね。
>教えてやんね。
日本語は正確に。「わからない」「考えていなかった」と書きましょうね。
あと、float をあえて使う場面はそうそうない。浮動小数点は double がデフォと学校で習いませんでしたか?
0922デフォルトの名無しさん
2011/07/19(火) 22:03:28.350923デフォルトの名無しさん
2011/07/19(火) 22:07:22.45>>874は分かる?
0924デフォルトの名無しさん
2011/07/19(火) 22:08:57.70>>743 を高速化してみた
http://ideone.com/I3Dqo
0925デフォルトの名無しさん
2011/07/19(火) 22:10:08.50これだけ指摘されても、最大値が-1はありえないって、まだ気付かないのか?
可哀相なくらい 頭 悪 い ん だ な
0926デフォルトの名無しさん
2011/07/19(火) 22:15:14.88キミみたいな底辺PGは使う機会そうそう無いだろうけど、数値演算やってると不要な処でdoubleは使わないんだよ。
0927デフォルトの名無しさん
2011/07/19(火) 22:21:12.20わかると思います
ただ課題の場所がwhile文を習った範囲なのでwhile文を使いたいと思ったから
質問しました
>>885
p++;
上みたいにすることで 一回ループしたら1万が5千に変わるという
解釈で良いのかなぁと思ったのですが
[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, *p = a;
これの使い方がわからないので質問させていただきました
長文失礼しました
0928デフォルトの名無しさん
2011/07/19(火) 22:36:55.31変数と、配列と、ポインタ(ついでに配列の先頭アドレス代入の初期化)
を一片にやってるだけ、分解すると
int n;
int a[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1};
int *p = a;
んで、pってのは配列a操作用に宣言したポインタ、初期化時には配列aの先頭アドレスを指していて、
初期化の段階では *p で a[0] にアクセス出来る。
if文や%=除算の余りを求めてるのは
ループの中で枚数数えながら数えた金額を省いてる為、ここは>>874分かるなら大丈夫かな、
p++ってのは、ポインタpが指してる配列を次の要素へ進める、
a[0]を指してるならa[1]へ、a[1]を指してるならa[2]へ
while(n)ってのは、金額が無ければループを抜ける処理、
ループは偽になった時に抜けるわけだけど、C言語だと0も偽って判定される、
これを利用して、単にwhile(n)って書くだけで除算の余りを求めた時に金額が無くなれば(nが0になれば)ループを抜ける。
0929デフォルトの名無しさん
2011/07/19(火) 22:44:59.26>C言語だと0も偽って判定される
ではなくて、Cには論理型はなく、0が偽、0以外が真。
0930デフォルトの名無しさん
2011/07/19(火) 22:46:02.93ポインタとかならってなくて
使えないというか、使っちゃダメみたいなかんじなのですが
簡単に書くためには、ポインタとかを使わないと
0931930
2011/07/19(火) 22:47:23.58すいません文が飛びました
0933デフォルトの名無しさん
2011/07/19(火) 22:58:02.45>>885
こっちのがわかりやすくない?
ワザワザポインタ使う意味もないと思うし。
配列の初期化は元のコードが見やすいけど。
ttp://codepad.org/FeoZsHK0
0935デフォルトの名無しさん
2011/07/19(火) 23:04:47.23配列ってやつも習って無いというか。。。
n, a[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, *p = a;
これを使いたくなくて(習ってない?[ ]とかっていう表現を)
でも自分の勝手な解釈だと 12行目の p++ は↑の表現をしないと使えないと
思っていて
↑の奴を使わないときれいなループ文が作れないと思っているのですが
どうなんでしょうか
0936デフォルトの名無しさん
2011/07/19(火) 23:06:48.03[2] 問題文(含コード&リンク):入力された特定の名前だけすべて削除する関数を線形リストを用いて作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限: 今週末15:00~
strcmpで作成したプログラム ( http://codepad.org/c1rAAFnp ) では,
「 'strcmp' : 1 番目の引数を 'ORDER *' から 'const char *' に変換できません。」とエラーが表示されます
よろしくおねがいします
0937デフォルトの名無しさん
2011/07/19(火) 23:08:23.36逆ですね。特殊な用途で float を使うことはあっても、普段、なんでもないプログラムでは double を使うものなんですよ。
>>906 のような単純な数値演算とやらで float をあえて使う理由はなんでしょうか?
0938デフォルトの名無しさん
2011/07/19(火) 23:11:56.53消えろクズ
0939デフォルトの名無しさん
2011/07/19(火) 23:18:49.73>>846 に対して鋭い指摘を受けた際には、「これは凄腕ににらまれた、どーしよう(泣)」とおろおろしたものですが、
float を使ったり、max/min の拾い出しの際不用意に初期値を決めうちしたりするところからみると、アマチュアの私と大差ないレベルなんですねえ。(ほっ)
0940デフォルトの名無しさん
2011/07/19(火) 23:20:04.31goto習っていて、配列を習っていないとは不思議なカリキュラムだ、、、、。
そういう後出しで条件付けていくのやめようよ。
配列を使わないなら、10000円から各金種の判定を並べていくことになり、ループにはならない。
と思って、すれを見返すと
>>874>>876ではだめなのかな?
0941デフォルトの名無しさん
2011/07/19(火) 23:20:27.26コテつけてろよクズ
0942デフォルトの名無しさん
2011/07/19(火) 23:21:25.09CISC以外のプロセッサのことを考えるとC言語的にはfloatを使うのが正統です。
しかしdoubleは現在の殆どの処理系でfloatよりも効率的かつ高精度な
計算と結果になることでしょう。
プロセッサレベルでdoubleに対応できるようになったCISCプロセッサの
普及の賜物です。
*/
0943デフォルトの名無しさん
2011/07/19(火) 23:22:22.38お前のような数値演算に一生縁がなさそうなバカには、浮動小数点は頭使わず
double使っとけと教える。この方が教えるの楽だからな。
無警告でコンパイル通りますが何か? ループもしませんが何か? ww
0944デフォルトの名無しさん
2011/07/19(火) 23:29:01.23それ、10年遅れてる。今なら普通SIMD演算使う。floatは並列度を2倍に出来る。
0945デフォルトの名無しさん
2011/07/19(火) 23:31:56.33まだ理解できてないようだな。max = -1はありえない。
可哀相なくらい頭が悪い。
0946デフォルトの名無しさん
2011/07/19(火) 23:40:51.69>C言語的にはfloatを使うのが正統です。
嘘ですねえ。
ISO/IEC 9899:1999 6.5.2.2.6
If the expression that denotes the called function has a type that does not include a
prototype, the integer promotions are performed on each argument, and arguments that
have type float are promoted to double.
具体的には printf() のような可変長引数の場合には float -> double の default argument promotions が適用されるんですね、C 言語的に。
これを見ても、普通は double を使うものだとわかりませんか?
なお、どこの馬の骨からわからないものを引用するくらいなら、ISO/IEC 9899 か JIS X 3010 から引っ張ってくることをお勧めします。
0947デフォルトの名無しさん
2011/07/19(火) 23:41:21.89横レスだがちゃんとコード読んだらわかったわ
0948デフォルトの名無しさん
2011/07/19(火) 23:42:16.17頭悪すぎてわからないようだから、これは教えてやる。
minを10000にしたのは質問者は確実にFLT_MAXを習っていないからだ。
maxが負になることは課題の制限からありえない。
でも、バカだから理解できないかもね。
0949デフォルトの名無しさん
2011/07/19(火) 23:43:14.08char も short も普通は使わないとかいいだすのか?
引っ込め自演クズ
0950デフォルトの名無しさん
2011/07/19(火) 23:44:01.12個々の問題をどうこういうのではなく、max/min の拾い出しに際して、不用意に初期値を決めうちすること自体が「浅はか」だと申し上げております。
今回に限って max = -1 がありえないことなど、どうでもいいことです。
0951デフォルトの名無しさん
2011/07/19(火) 23:46:05.59普通は、>>722 のように初期値をデータから拾ってくるものです。定石です。
0952デフォルトの名無しさん
2011/07/19(火) 23:46:36.57宿題スレで質問者が習ってないコードを回答しても意味がない。
だから、てめーはクズって言われるんだよ。隔離スレに引っ込んでろ。
0953デフォルトの名無しさん
2011/07/19(火) 23:47:21.49char や short は default argument promotions と何の関係があるのですか?
可能ならば、ISO/IEC 9899:1999 から該当箇所を引用して示してください。
0954デフォルトの名無しさん
2011/07/19(火) 23:47:23.72X if (strcmp(node, n) == 0)
O if (strcmp(node->name, n) == 0)
0956デフォルトの名無しさん
2011/07/19(火) 23:52:06.83だから定石だといっているのですが‥‥‥、他の方のコードをお読みになったことがないのですか?
0957デフォルトの名無しさん
2011/07/19(火) 23:53:38.66floatを使うのは癖だ。お前のようなバカには一生無縁だから理解できない。
0958デフォルトの名無しさん
2011/07/19(火) 23:53:55.95質問者が却下したことと、max/min 拾い出しの定石とは関係ないのですが‥‥‥。
0959デフォルトの名無しさん
2011/07/19(火) 23:54:59.11ありがとうございます
コンパイルして起動させることができました
ただ、起動した後フリーズするのは何故でしょうか?
0960デフォルトの名無しさん
2011/07/19(火) 23:55:05.30癖、ですか。つまり考えなし、「私は馬鹿です。」ということですね。よく理解できました。
0961デフォルトの名無しさん
2011/07/19(火) 23:55:47.04その通りです。
あなたは馬鹿です。
0962デフォルトの名無しさん
2011/07/19(火) 23:56:15.44脳内定石振り回すのは隔離スレの中だけにしろ。
0963デフォルトの名無しさん
2011/07/19(火) 23:57:58.35救いようの無い馬鹿だなあ。隔離スレに引っ込んで出てくるな。カス。
0964デフォルトの名無しさん
2011/07/20(水) 00:01:27.50ttp://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/150.txt
0965デフォルトの名無しさん
2011/07/20(水) 00:02:46.64あれ、私とは違う人 >>722 でさえも使っているんですよ。これを定石といわずしてなにを定石というのでしょうか?
>>961 >>963
言いたいことを全部吐き出すことができましたか?
0966デフォルトの名無しさん
2011/07/20(水) 00:11:33.99ちょっと訂正ね。
>char も short も普通は使わないとかいいだすのか?
そのとおりです。理由なくして char や short を使うことはありませんね。char や short を使うのは **それなりの** 理由があるときだと思います。
特に理由がなければ int を使います。それが C のやりかた。
0967デフォルトの名無しさん
2011/07/20(水) 00:13:08.170968デフォルトの名無しさん
2011/07/20(水) 00:22:28.12[2] 問題文(含コード&リンク):
目的:
�@構造体やポインタを利用して、データ構造を設計することができる。
�A構造体をreturn文で返却する関数を作ることができる。
�Bポインタを扱うことができる。
問題文:
n個のデータを降順に並び変える関数を作成しなさい。
ただし、個数nを先に入力し、必要なメモリ領域を関数malloc()を
用いて確保すること。
すなわち、配列による宣言はせずに、ポインタで宣言する。
また、2つの変数の値を入れ換える関数swap()も作成すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:7/21
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします。
0970デフォルトの名無しさん
2011/07/20(水) 00:36:23.08http://hibari.2ch.net/test/read.cgi/tech/1311089619/
0971デフォルトの名無しさん
2011/07/20(水) 00:39:26.63void del_order_by_name(ORDER **node, char *name)
ではなく、
void del_order_by_name(ORDER *node, char *name)
としたいんですが、アドバイスをおねがいします
0973デフォルトの名無しさん
2011/07/20(水) 00:57:45.88自己愛性人格障害とはなにか
なんでも自分の思い通りになるという空想に耽ったりします。内容的には、自分の万能感を満たすような
ものになります。すべて自分にとって都合のいいように事が運んで、最後には自分が絶大な称賛を浴びると
いったようなものです。自分だけが特別に評価されて大抜擢され、とんとん拍子に出世するとか、もっと
空想性が進んで行くと、超能力的な力で現実を思い通りに動かすとか、あるいは過去にタイムスリップして、
時代差から来る優越感に浸るとか、いろいろなパターンがあります。たとえば自衛隊が関ケ原の決戦に参戦
したらどうなるかなどという空想は、圧倒的な文明の差による優越感に浸ることができます。
聞かれもしないのに、やたらと自分のことをしゃべりたがる人がいます。話が他へ移ろうとすると、強引に自分の
話に戻そうとします。話の内容は自慢話的なものばかりで、聞いている方はうんざりしてきます。他人にはあまり
関心がないので、相手がうんざりしていようとお構いなしです。
自分は特別な人間だ、パンピー(一般のピープル)とは違うんだという意識から、小市民的な生き方を軽蔑し、
そういう人達と一緒にされることを嫌います。裏付けとなるものがなにもないのに、一目置かれる存在であることに
非常にこだわります。
0975デフォルトの名無しさん
2011/07/20(水) 01:08:03.84迅速な解答ありがとうございます!
すごく助かりました。
素敵な自己紹介ありがとうございます。
0977デフォルトの名無しさん
2011/07/20(水) 01:29:45.30ORDER *del_order_by_name(ORDER *node, char *name) {
↑
>>971が希望してんのは
void del_order_by_name(ORDER *node, char *name)
だからポインタが余計じゃね?
0978デフォルトの名無しさん
2011/07/20(水) 01:33:10.01んー、確かにその点で困ってしまっています。
リストに増減が発生する際には、二重ポインタを使うか、再帰にして呼び出し元にポインタを返すことしか思いつきませんでした。
実際、どうすればいいんでしょうね。
0979デフォルトの名無しさん
2011/07/20(水) 01:36:14.73[2] 問題文(含コード&リンク):
目的:
�@構造体やポインタを利用して、データ構造を設計することができる。
�A構造体をreturn文で返却する関数を作ることができる。
�Bポインタを扱うことができる。
問題文:
プロフィールを入れる構造体を定義し、
その構造体に値を入れる関数と、
メンバの値を表示する関数を作成しなさい。
ただし、呼び出し側では構造体の配列を宣言して、
複数人のプロフィールを入れた例を示しなさい。
プロフィールとする項目は自由に決めて良い。
ただし3つ以上の型を使用すること。
プロフィール例
氏名:char name[]
電話番号:char phone[]
血液型:char blood[]
…
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:7/21
[5] その他の制限:特になし
お手数ですが、よろしくお願いします。
0980デフォルトの名無しさん
2011/07/20(水) 01:50:38.200981デフォルトの名無しさん
2011/07/20(水) 01:51:53.28皮肉を言われてる事にも気づけない馬鹿な奴
0982デフォルトの名無しさん
2011/07/20(水) 01:55:51.04そうです。お手上げです。ちょっと創造がつきません。
>>981
いつもの自己愛なんぷら〜はもう飽きましたので、新しいネタで考えていただけないでしょうか。
0983デフォルトの名無しさん
2011/07/20(水) 01:58:48.32お前を楽しませるために書いてるわけじゃないから
ネタでもないから
お前が飽きようが関係無い
事実を突きつけるのみ
0984デフォルトの名無しさん
2011/07/20(水) 02:01:04.82出来ない癖に偉そうに「新しいネタで考えていただけないでしょうか?」とか馬鹿じゃねーの?
>>971はお前の宿題な
0985デフォルトの名無しさん
2011/07/20(水) 02:07:24.790986デフォルトの名無しさん
2011/07/20(水) 02:08:23.18てめーが>>722が以前に書いたのをぱくってるだけだろ。うんこソースで定石語るな。クズ。
>>966
バカめ。charやshortなどintより小さいサイズとfloatのようにintより大きいサイズとは前提が異なる。
常にメモリは必要最小限にすることが重要。したがって浮動小数点の推奨型はfloat。
0987デフォルトの名無しさん
2011/07/20(水) 02:12:23.82出来なくはないけど、課題で条件付けられてるんじゃなければお勧めしない。
それでもそうしたい?
0988デフォルトの名無しさん
2011/07/20(水) 02:38:05.08やってやればいいんじゃねーの?
減るもんじゃねぇし
0989デフォルトの名無しさん
2011/07/20(水) 02:40:39.11出来ないなら出来ないと言えよ
頭悪い癖に
0990デフォルトの名無しさん
2011/07/20(水) 02:45:54.1780x86 単体でエミュレートライブラリをリンクしなければならない環境ならともかく、
8087ndp の時代から double 単位で 64/80bit スタックレジスタにのっけることができるというのに、それでも 32bit float ですか。
pentium 以降、fadd/fsub/fmul/fdiv は、オペランドのサイズに関わらず(たしか)同クロックだというのに、それでも 32bit float ですか。
まあ x86 だけが世界ではないとは思いますが、>>946 で示したように、条件によっては float -> double の変換が無駄にかかるというのに、それでも float ですか。
>floatのようにintより大きいサイズ
ちなみに float と int は今は同じサイズ。念のため。
0991デフォルトの名無しさん
2011/07/20(水) 02:45:57.61リストのトップを削除する場合だけ別に書いてもいいのなら。
http://codepad.org/imsXD8tD
0993デフォルトの名無しさん
2011/07/20(水) 02:54:30.680994デフォルトの名無しさん
2011/07/20(水) 03:15:58.240995デフォルトの名無しさん
2011/07/20(水) 05:29:36.02技術計算コードを10年以上書いてきたけど float を使った事は一度も無いな
メモリ消費を意識しなければならなかった20〜30年前はどうか知らんけど
0996デフォルトの名無しさん
2011/07/20(水) 05:38:09.21先頭のノードはダミーで next しか有意ではないってお約束にするくらい?
すんごくダサいけど
0997デフォルトの名無しさん
2011/07/20(水) 05:38:46.82本物の馬鹿だコイツ
0998デフォルトの名無しさん
2011/07/20(水) 07:08:48.880999デフォルトの名無しさん
2011/07/20(水) 07:58:46.16メモリ消費を意識しなくていい領域しか経験してないってことだな。
floatだけじゃなくて、doubleも使ったことが無いんだろ。ww
1000小倉優子 ◆YUKOH0W58Q
2011/07/20(水) 08:20:06.01( ・∀・) 1000ならジュースでも飲むか
( )
し─J
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。