1 :
デフォルトの名無しさん :
2011/11/29(火) 19:30:48.45 あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
>>2 以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
2 :
デフォルトの名無しさん :2011/11/29(火) 19:31:21.61
4 :
デフォルトの名無しさん :2011/11/29(火) 23:24:31.02
>>3 % gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-50)
% uname -a
Linux (ホスト名) 2.6.18-238.12.1.el5 #1 SMP Tue May 31 13:22:04 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
% cat ack.c
#include <stdio.h>
int ack(int m, int n)
{
if (m == 0) return n+1;
if (n == 0) return ack(m-1, 1);
return ack(m-1, ack(m, n-1));
}
int main()
{
printf("%d\n", ack(4, 1));
return 0;
}
% gcc ack.c
% time ./a.out
65533
./a.out 24.65s user 0.79s system 106% cpu 23.969 total
5 :
デフォルトの名無しさん :2011/11/29(火) 23:26:31.69
スタックサイズも出すべきだった。単位はkbytes % ulimit -s 10240
まず64ビットだよね つぎにLinuxだからスタックが足りなくなると自動的に伸ばすよね 多分CPUはCore i7だろうから全部キャッシュに乗っちゃうのかな どこかにack()の呼び出し回数をカウントするようにしてみて欲しい ack()の呼び出し回数凄いから
これはキャッシュに乗るか乗らないかで全然スピードが違ってくるので時間の測定は あまり意味がないな むしろスタックサイズに全てかかっていそうだ 俺のはVC10の32bitでスタックサイズ1Mで例外で落ちる
VC10でもスタックサイズを10Mほどにしたら30秒で65533出てきた
9 :
デフォルトの名無しさん :2011/11/29(火) 23:42:08.17
>>4 の結果はcore i7
32bitマシンでやってみた。
%uname -a
Linux (ホスト名) 2.6.18-92.1.13.el5 #1 SMP Wed Sep 24 19:33:52 EDT 2008 i686 i686 i386 GNU/Linux
% more /proc/cpuinfo | grep "model name"
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
%time ./a.out
65533
2862984010
./a.out 31.00s user 0.01s system 99% cpu 31.304 total
>>8 なるほど、その間にあるのね。
10 :
デフォルトの名無しさん :2011/11/29(火) 23:43:27.69
書き忘れ。2862984010は呼び出し回数、、おおいねw
>>6 スタックが足りなくなると自動的に伸ばすの初めて知った。ありがとうー
結局32bitマシンでもスタックサイズを10Mに取ればほとんど結果が出るという事で この問題はお開きか 何かつまんねえ
12 :
デフォルトの名無しさん :2011/11/29(火) 23:48:20.29
スタックサイズの問題を除外すれば、いくら待っても答えが出ないって状況には誰もならなかったか
(4,.1)じゃなくて(5,1)だったりしてな
14 :
デフォルトの名無しさん :2011/11/29(火) 23:57:24.38
さすがにそれはw
wikiのほー修正しといた。
16 :
1 :2011/11/30(水) 00:05:32.11
一瞬わからなかった。 ありがとう。次は気をつけるー
前スレの未解決問題。(ほかにあったら転記してね) 979 :デフォルトの名無しさん:2011/11/29(火) 21:17:42.06 [1] 授業単元:コマンドライン引数 [2] 問題文(含コード&リンク): コマンドライン引数を用いて,以下の計算ができる簡易電卓プログラムを作成せよ. 1. 2 〜5項式までの四則演算(計算順もちゃんと考慮すること) (出力例)C :¥Programming>dentaku 2 + 5 / 5 + 4 * 2 + 1 答えは 12 C :¥Programming>dentaku 2 * 3 + 1 答えは 7 2.()を用いた演算(かっこの中の計算を最優先する) (出力例)C :¥Programming>dentaku ( 2 + 3 ) * 7 * ( 3 - 1 ) 答えは 70 3. (sin, cos, tan)の演算 (出力例)C :¥Programming>dentaku sin(90) * 2 + 1 - 2 答えは 1 4.logの演算 (出力例)C :¥Programming>dentaku log(3) * 2 + 1 答えは 1.9542425094 5. 半角スペースを入れ忘れても演算可能 (出力例)C :¥Programming>dentaku 1-2*(3+1)-2 答えは 9 [3] 環境 [3.1] OS:Windows7<br> [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5<br> [3.3] 言語:C言語 [4] 期限:12/3まで [5] その他の制限:
>>6 >まず64ビットだよね
これは今回のコードだとどう影響する?
とりあえず引数がレジスタ渡しになる反面フレームポインタとかが64bitだから
スタック使用量としては...
>つぎにLinuxだからスタックが足りなくなると自動的に伸ばすよね
そうだっけ?
http://ronri2.web.fc2.com/hanron.html ここを読むとQの書き込みが非論理的である事が一目瞭然
こう書くとQは決まって「私の書き込みのどこが非論理的であるか具体例を上げて
示してください」と反論してくるが、相手にしてはならない
Qは自分に都合の悪い証拠を上げられても徹底的に無視を決め込むので、どんな
ハッキリした証拠を上げても全く無駄です
[1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク):標準入力から文字型のポイント配列*str[3]を使って"Hello", "Goodbye","Thankyou"の3つの文字を入力し入力した順番に標準出力に出力する [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: ggc3.4 [3.3] 言語: C言語 [4] 期限:6時まで [5] その他の制限: ファイル出力まで習っています それではお願いします
strdup()使っていいの?
使っていいのは、fgets,sscanf,printfのみです
いいよ
26 :
デフォルトの名無しさん :2011/11/30(水) 02:26:10.79
>>17 一番やさしい1. の場合でもマイナス値を扱うと、すこし難しくなるな。
23×−16 などの入力も認めるのかな?
京都大学霊長類研究所では、未知の感染症が蔓延し、 感染した研究員はどのスレッドにも同じコピペを 繰り返すといった症状が報告されています。 研究員によると思われる書き込みがあっても 近づかないようにしてください。 京都大学
>>19-20 おまいさんが QZ を好きなのはよくわかった。蓼食う虫も好き好きというから好みに文句をいうつもりはないが、頼むから、
Q と 略 さ ず に Q Z と 書 け
NGワードに登録できず迷惑だ
>>33 if (m == 0)
return n + 1;
if (m == 1)
return n + 2;
if (m == 2)
return 2 * n + 3;
だからこれやめいって前の人も書いてたろ
チョンボはあかんよ
あくまでも定義通りの関数だけで答えを出すんだ
本当に人の言う事に耳を貸せないやっちゃな
つーか上の方にも書いてあるけどVC10でもスタックを10MBほど取れば
30秒足らずで答えが出るって分かってるんだけど(Core i7)
お前さんのヘボCPUでは2分ほど掛かるかもしれんけどな
35 :
デフォルトの名無しさん :2011/11/30(水) 12:37:03.28
>>947 e^iθ = isinθ + cosθ は感動した
オイラーの公式か 他にも感動する公式が一杯あるぞ
iのi乗が実数になるというのも面白いな
39 :
デフォルトの名無しさん :2011/11/30(水) 13:54:21.11
>>28 後置ならスタックは不要だと思うんだけどなぁ
そこが謎なので手を出しにくい
41 :
40 :2011/11/30(水) 14:06:28.74
勘違いしてた、忘れてください
[1] 授業単元:楽しいC(ポインタと関数) [2] 問題文(含コード&リンク): 秒数を与えると,それが何日何時間何分何秒にあた るかを計算する関数 calctime(long sec, int *dp, int *hp, int *mp, int *sp); を作成せよ.例えば calctime(100000, &d, &h, &m, &s); として呼び出すとd=1, h=3,m=46,s=40 となる (100,000 秒=1 日3 時間46 分40 秒).以下の実行例の ように,関数の動作を確認できるmain 関数も作成すること. (出力例) 秒数を入力してください:100000 100000 秒= 1 日3 時間46 分40 秒 秒数を入力してください:3725 3725 秒= 0 日1 時間2 分5 秒 [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [ 3.3] 言語:C言語 [4] 期限:12/2まで [5] その他の制限:
#include <stdio.h> #include <stdlib.h> int calctime(long sec, int *dp, int *hp, int *mp, int *sp) { *dp = *hp = *mp = *sp = 0; if(sec < 0) return 0; *dp = sec / (60 * 60 * 24); sec %= 60 * 60 * 24; *hp = sec / (60 * 60); sec %= 60 * 60; *mp = sec / 60; *sp = sec % 60; return 1; } int main(int ac, char **av) { char buf[4096]; long sec; int d, h, m, s; while(1){ printf("sec = "); fgets(buf, sizeof(buf), stdin); if(buf[0] == '\n') break; sscanf(buf, "%ld", &sec); if(!calctime(sec, &d, &h, &m, &s)) fprintf(stderr, "error %ld\n", sec); else printf("%ld sec = %d days %d hours %d minutes %d seconds\n", sec, d, h, m, s); } return 0; }
>>28 あんまりちゃんと動作の確認をしていない、テストは任せるので問題があればレスしてくれ
ttp://codepad.org/hXYphxIz 指定されたソースコードは何か動作が怪しそうなので使っていない
しかし関数IFは合わせて有るので指定されたソースに問題が無ければ差し替えても動作するはずだ
ソースの『ここから』〜『ここまで』の間を指定ソースと差し替えてくれ
多倍長整数演算までやってるのか すげーな
>>46 やってないよ、それも含んでるんだっけ?
だったらパスするよ
48 :
デフォルトの名無しさん :2011/11/30(水) 16:04:58.23
>>47 どんなに長い文字列(数字)も受け付けろと書いてあった
>>49 ホントだ
『またどのような整数が出現しても』って書いてるな
あんな怪しげなソースを付けてる割にはハードルが高いな
多倍長整数の四則演算か....面倒だな....取りあえずパスしとくわ
51 :
デフォルトの名無しさん :2011/11/30(水) 16:49:13.03
>>49 前スレでそれは考えなくていいといってたよ
>>45 ありがとうございます。
何か問題があればレスさせていただきます。
53 :
デフォルトの名無しさん :2011/11/30(水) 21:21:41.05
[1] 授業単元: システムプログラム
[2] 問題文(含コード&リンク):
プロセス間通信のプログラミングです。
ttp://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/252.txt すまない、ブラウザのエンコードがUTF-8じゃないと多分化ける。
子プロセスから親プロセスに文字列を送るプログラムはかけたんだけど、
ファイル内容を子プロセスから親プロセスに送ると何も表示されなくなってしまう。
自分でやってみたがここ数時間答えが出せない。
誰かお願いします
[3] 環境
[3.1] OS:mac10.7.2 (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:gcc4.2.1 (gcc 3.4 VC 6.0等)
[3.3] 言語:C (C/C++/どちらでも可 のいずれか)
[4] 期限:2011/12/1/14:30 ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限:なし (どこまで習っているか、標準ライブラリは使ってはいけない等々)
55 :
デフォルトの名無しさん :2011/12/01(木) 00:54:04.24
>>54 子から親に複数回文字列を送っても大丈夫かどうかの確認をしてみたら、ぐらいしかいえない。コードがないと。
cygwin/windows XP/gcc-3 では動いている。
58 :
デフォルトの名無しさん :2011/12/01(木) 01:19:29.17
問題解決しようとする気がないなw
>>56 助かったありがとう、ちゃんと動いた。
どうやら自分はバッファの扱いがおかしかったみたい。
1] 授業単元:バイナリデータの扱い方
[2] 問題文(含コード&リンク):
白黒のbmp画像を読みとり、白なら0、黒なら1として以下の例のような画像情報を載せたtxtファイルを作成する。
(txtファイルの1行目にはbmpの横と縦のピクセル数を書き込むこと)
<例>
元のbmp画像(direct.bmp):
http://loda.jp/kng311tt/?id=74.bmp ↓
/********direct.txtの中身********************
24 15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
******************************************/
[3] 環境
[3.1] OS:windows7 32bit
[3.2] コンパイラ名とバージョン: Borland 5.51
[3.3] 言語: C言語
[4] 期限:2011年12月10日 14:00
[5] ASNIの範囲内でよろしくお願いします。
ASNIってなんだ
モロッコにある小さな街
64 :
デフォルトの名無しさん :2011/12/01(木) 04:34:45.20
>>61 作って全然仕様にあってないけどupする
#include <stdio.h>
#include <stdlib.h>
typedef unsigned char uchar;
int main()
{
FILE *fp = fopen("kng311tt.bmp","rb");
FILE *fw = fopen("direct.txt","w");
uchar BhInfo[54];
uchar *BInfo = NULL;
int i,j;
fread(BhInfo,sizeof(char),51,fp);
fprintf(fw,"%d,%d\n",BhInfo[18],BhInfo[22]);
rewind(fp);
fseek(fp,54,SEEK_SET);
BInfo = malloc(sizeof(uchar)*(BhInfo[18]));
while(!feof(fp)){
fread(BInfo,sizeof(char),BhInfo[18],fp);
for(i = 0; i< (BhInfo[18]);i++){
if(BInfo[i] == 0x00)
fprintf(fw,"1 ");
else if(BInfo[i] == 0xff)
fprintf(fw,"0 ");
}
fputc('\n',fw);
}
free(BInfo);
fclose(fp);
fclose(fw);
return 0;
}
66 :
デフォルトの名無しさん :2011/12/01(木) 08:39:26.82
>>39 変換後の方です。
(e3t55sf45d → e t sf d
となっているのを
e3t55sf45d → e t sf d
となるように改良する。)
67 :
デフォルトの名無しさん :2011/12/01(木) 08:43:27.36
>>66 ミスってるけど、上はtとs、fとdの間は
スペース二つです。
サンクスかみーゆ
>>64 ありがとうございます!たぶん、作成者側のオリジナルだと思います^^
以前ここで作っていただいたtxt→bmpに変換するプログラムより
すごくシンプルですね。
白黒のみでもtxt→bmpに変換するのは大変なのでしょうか?
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): .cファイルを読み込んで、定義されている変数や配列を一覧にして表示する(できれば何型で定義されているかも)プログラムを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: visual studio 2010 [3.3] 言語: C言語 [4] 期限:無期限 [5] その他の制限:できるならやってみろって感じで出されたので制限はないです
>>70 コンパイルの段階で変数名等は失われるので無理。
車輪の再発明そのものじゃまいか
機械的構文解析:Cの独り勝ちの世界じゃん Cプログラマは避けて通れる世界じゃないかと
grepで十分じゃね?
>>70 >定義されている変数や配列
structは?
typedef とか面倒な希ガス あと、 #define VARIABLE(type, name) (type) (name) みたいな変なマクロを使って変数宣言してるとか
82 :
70 :2011/12/01(木) 15:59:06.55
>>78 構造体もはいってますね、すみません
>>79 多分そこまでは求めてられないので
int a;みたいな基本的な宣言だけで大丈夫だと思います
口頭で言われたもので、曖昧ですみません…
83 :
デフォルトの名無しさん :2011/12/01(木) 16:10:25.78
>>70 その手の問題は
今までの授業、課題をちゃんとこなしてきた→できる範囲で回答すればおk
今までの授業、課題を人に頼ってきた→詰む時
だよ。最後の審判的な。
丸くおさめたいなら、何も提出せずに、難しいので出来上がらなかったということを口頭で言って終わらせる。
sizeof()の引数に型名が出てきたり。かなり厄介な言語だよ。
sizeofは型を渡すとき以外は括弧いらないじゃん
86 :
デフォルトの名無しさん :2011/12/01(木) 17:07:58.27
C言語初心者なのですが、 「2つの 3成分ベクトル a, b の外積 c を求める関数 void acrossb(double a[], double b[], double c[]) を作成せよ。 この関数を用いて次の二つのベクトル va=(1.0, 2.0, 1.0) , vb=(-2.0, 0.5, 1.0) の外積を計算するプログラムを作成せよ。」 どなたか、上の問題がわかる方いらっしゃいましたら、教えて頂きたいです。宜しくお願いします。
88 :
デフォルトの名無しさん :2011/12/01(木) 17:20:46.05
>>86 の者です。失礼致しました。
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):2つの 3成分ベクトル a, b の外積 c を求める関数 void acrossb(double a[], double b[], double c[]) を作成せよ。
この関数を用いて次の二つのベクトル va=(1.0, 2.0, 1.0) , vb=(-2.0, 0.5, 1.0) の外積を計算するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語:C言語
[4] 期限:12月2日まで
[5] その他の制限: なし
です。すみませんお願いします
89 :
デフォルトの名無しさん :2011/12/01(木) 17:37:58.39
a=(a1,a2,a3)b=(b1,b2,b3)としたとき、 aとbの外積は(a2b3-a3b2, a3b1-a1b3, a1b2-a2b1)であってんのかな。
91 :
デフォルトの名無しさん :2011/12/01(木) 17:47:01.35
92 :
デフォルトの名無しさん :2011/12/01(木) 17:50:33.93
>>90 ご丁寧にありがとうございます
助かりました!
[1] 授業単元:楽しいC(ポインタ配列) [2]引数vc の指すint 型配列に対して,その(pos + 1) 番目からn 個の要素(vc[pos], vc[pos+1], …のn 個) の値を0 にする関数 void reset_n(int *vc, int pos, int n) を作成せよ 。 例.ary[] : 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ary[n1] からn2 個の要素を0 にします。 n1 を入力してください:2 n2 を入力してください:4 指定された要素を0 にしました。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:C言語 [4] 期限:12月2日まで [5] 例えば配列ary[] が {10, 11, 12, 13, 14, 15, 16, 17, 18, 19} であるとき, reset_n(ary, 2, 4); として呼び出すと,配列ary[] は {10, 11, 0, 0, 0, 0, 16, 17, 18, 19} となる. 以下の実行例のように,関数の動作を確認できるmain 関数も作成すること.ただし,プログラムは以下の要件 を満たすこととする. ? main 関数内でint 型配列を適当な値で初期化・宣 言して用いてよい. ? 関数reset_n の中では,添字演算子[] は使用しな いこと
単元が楽しいCなのに、問題投げるのは楽しんでないのがなんだかな 単元の名前替えるように教官に言っとけ
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
http://i.imgur.com/hnQll.jpg [3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12/6 10:00
[5] その他の制限:入門なのでそれほど複雑なものは習ってない・・・かな
お願いします。
96 :
【だん吉】 :2011/12/01(木) 18:17:51.26
>>93 #include <stdio.h>
void reset_n(int *vc, int pos, int n) {
int i;
for (i = 0; i < n; ++i) *(vc + pos + i) = 0;
}
void print(const int *a, int n) {
int i;
for (i = 0; i < n; ++i) printf("%d ", a[i]);
putchar('\n');
}
int main(void) {
int a[] = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
int n = sizeof a / sizeof *a;
int n1, n2;
print(a, 10);
puts("ary[n1] からn2 個の要素を0 にします。");
printf("n1 を入力してください:");
scanf("%d", &n1);
printf("n2 を入力してください:");
scanf("%d", &n2);
if (n1 < 0 || n < n1 + n2) {
puts("範囲オーバー");
} else {
reset_n(a, n1, n2);
puts("指定された要素を0 にしました。");
print(a, 10);
}
return 0;
}
97 :
864 :2011/12/01(木) 18:37:27.33
[1] 授業単元:リスト構造
[2] 問題文(含コード&リンク):
http://codepad.org/kRWaQPuY 例えば 学籍番号として 181 など 存在しない学生の番号を入力して実行すると、
エラーを生じてプログラムが停止してしまうなど、このソース コードは不完全である。
そこで存在しない学生の番号を入力した場合には、
「その番号の学生は、いません。」のエラーメッセージを表示するように、プログラムを改良せよ。
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:VC2008
[3.3] 言語:C
[4] 期限:明日
[5] その他の制限:
>>97 884:デフォルトの名無しさん:2011/11/28(月) 22:51:02.28
>>882 Line94 pointer_student = pointer_student->pointerNext; の次に以下を追加
if( ! pointer_student ) { printf( "その番号の学生は居ない\n" ); return 0; }
99 :
デフォルトの名無しさん :2011/12/01(木) 19:04:59.87
なんか双方向リストに進化してるな
100 :
864 :2011/12/01(木) 19:57:52.71
101 :
デフォルトの名無しさん :2011/12/01(木) 20:36:09.10
102 :
デフォルトの名無しさん :2011/12/01(木) 20:54:02.77
>>100 処理内容が検索から削除に変化しただけで対応方法は同じだ
再出題したってことは
>>98 の意味を全く理解してないって事なんだろうな、さすがにちょっと酷いと思う
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://ideone.com/Z4ZMs 上記のコードを修正せよ
※ポイント
@char stringをmallocでエリアを動的確保(初期化もする)
Asnprintfをforで回して連結
[3] 環境
[3.1] OS:指定なし
[3.2] コンパイラ名とバージョン:指定なし
[3.3] 言語:C
[4] 期限: 2011/12/3
[5] その他の制限:特になし
よろしくお願いします
[1] 授業単元:C言語による画像処理の基礎 [2] 問題文(含コード&リンク): 256階調(8bit)のpgm形式の画像を256階調(8bit)のbmp形式の画像へ、 256階調(8bit)のbmp形式の画像を256階調(8bit)のpgm形式の画像へ それぞれ変換するプログラムを作成せよ。 [3] 環境 [3.1] OS:windows7 [3.2] コンパイラ名とバージョン: Borland [3.3] 言語: C言語 [4] 期限:2011年12月9日 17:00
108 :
105 :2011/12/02(金) 01:46:28.20
110 :
デフォルトの名無しさん :2011/12/02(金) 02:41:51.43
>>106 bmpの指定はそれだけ?
>>61 みたいに決めうちでもいいのかな。汎用的にってなると面倒なんでちょっとやる気が…
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク):テキストファイルを読み込み1次元の離散コサイン変換を行って、その結果を新たなテキストファイルに書き込むプログラムを作れ。 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: gcc 4.3.2 [3.3] 言語: C言語 [4] 期限: 12月3日 18時 [5] その他の制限: 例 10,15,20,80,120,160,210,10,20,100...と続くテキストデータ3つ(data.txt data2.txt data3.txt)を(それぞれ内容は違う)読み込む。 それぞれに1次元の離散コサイン変換を行う。 変換後の値を新たなテキストファイルに(data,data2,data3)改行(data,data2,data3)改行...といったような表示で書き込む。
それ2次元じゃないか? 問題文とも全然合ってないなw
>>110 それだけなんですけど、面倒ならある程度でお願いします。
>>111 問題文がいろいろ足りない気がするし離散コサイン変換の名前しか知らんけど
wikipediaに載ってた公式見て適当に組んでみた。
検算もどうやればいいかよくわからんから適当に直して
include <math.h>
#include <string.h>
#include <stdio.h>
#define MAXLINE 1024
void dct(double *i,double *o,int e){int k,n;for (k=0;k<e;k++){for(n=0;n<e;n++)
{o[k]=i[n]*cos(M_PI/(double)e*(0.5+(double)n)*(double)k );}}}int getfield(char
*infile, double *out){FILE *fp=fopen(infile,"r");char *c=",",s[MAXLINE],*tmp;
int i;fgets(s,MAXLINE,fp);fclose(fp);out[0]=atof(strtok(s,c));for(i=1;NULL!=
(tmp=strtok(NULL,c));i++){out[i]=atof(tmp);}return i++;}int main(){double *a[3]
,*b[3];int d[3]={0},i=0;char *filename[]={"data.txt","data2.txt","data3.txt"};
FILE*data,*outp;for(i=0;i<3;i++){a[i]=malloc(MAXLINE*sizeof(double));d[i]=
getfield(filename[i],a[i]);b[i]=malloc(d[i]*sizeof(double));dct(a[i],b[i],d[i]);
free(a[i]);}outp=fopen("outfile.txt","w");for(i=0;i<d[0];i++){fprintf(outp,"(%f"
",%f,%f)\n",b[0][i],b[1][i],b[2][i]);}fclose(outp);for(i=0;i<3;i++)free(b[i]);}
>>115 ありがとうございます。
そのサイトの手順通りに、解凍→移動→makeしたんですが、makeするとエラーが出て先に進めませんでした。
>>117 ありがとうございます。
どうやって直せば良いかわかりません、申し訳ありません。
でも、参考にさせていただきます。
[1] 授業単元:アニメーション・イベント処理
[2] 問題文(含コード&リンク):
http://codepad.org/71KFD3ih [3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
[3.3] 言語: C言語
[4] 期限: 2011年12月4日まで
[5] その他の制限: OpenGLを使用
4枚の羽根が作れず、その上視点を変えると羽と噴射口の位置がずれます。
どのように直せばよいのか分からないため、修正をお願い致します。
また、リンク先の(3)(5)も出来ておりません。
122 :
デフォルトの名無しさん :2011/12/02(金) 18:27:22.88
1] 授業単元: [2] 問題文(含コード&リンク): (1) #include <stdio.h> #define NUMBER 5 int tensu[NUMBER]; int top(void); int main(void) { extern int tensu[]; int i; printf("%d人の点数を入力してください。\n", NUMBER); for (i = 0; i < NUMBER; I++) { printf("%d:",i + 1); scanf("%d", &tensu[i]); } printf("最高点=%d\n", top()); return (0); } int top(void) { extern int tensu[]; int i; int max = tensu[0]; for (i = 1; i < NUMBER; i++) if (tensu[i] > max) max = tensu[i]; return (max); } 上のプログラムを参考にして、5人の点数の平均点を返す関数 double ave(void)を作成せよ。 その関数を用いて、読み込んだ5人の点数の平均値を出力するプログラムを作成せよ。 (2) 2つの 3成分ベクトル a, b の外積 c を求める関数 void acrossb(double a[], double b[], double c[]) を作成せよ。 この関数を用いて次の二つのベクトル va=(1.0, 2.0, 1.0) , vb=(-2.0, 0.5, 1.0) の外積を計算するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C++ [4] 期限: できれば今日中を希望しています。 お手数ですがよろしくお願いします。
>>109 の、節の始点が0になっているので1にしたいのと、
終点も同じように5になっているので6にしたいのですが、変更できるでしょうか。
初期値をいじってみたのですが上手くいきませんでした。
あと出力は通った経路順番に節番号とコストを出したいのですが、
書いて貰った逆なので、可能ならばお願いします
124 :
デフォルトの名無しさん :2011/12/02(金) 20:59:43.69
>>123 >>109 じゃないけど、始点終点の表示だけなら、
68:printf("%d(%d)", x+1, v[x].label);
71:printf(" <- %d(%d)", x+1, v[x].label);
126 :
デフォルトの名無しさん :2011/12/02(金) 23:03:52.94
1] 授業単元:C言語 [2] 問題文(含コード&リンク): 1番:コマンドライン引数を用いて2つの10進数を入力し, その2つの数を2進数表示したものについて,論理和,論理積, 排他的論理和,を表示するプログラムを作成せよ。 また,2進数で直接入力して計算できるようにせよ。 2番:1番で求めた論理和,論理積,排他的論理和について、 指定したビット目の値、連続する0の数および1の数をそれぞれ数えて 交互に表示するプログラムを作成せよ。 3番目:1番で求めた論理和,論理積,排他的論理和について、 4桁ずつ区切って16進数で表示するプログラムを作成せよ. 例: 論理和 : 000111101001001 1番目の区切り:0001 = 1 2番目の区切り:1110 = e 3番目の区切り:1001 = 9 4番目の区切り:001 = 1 [3] 環境 [3.1] OS: Windows [3.2]bcc [3.3] 言語: C言語 [4] 期限: 来週の月曜まで
>>129 わからないです、とうかshortは習ったことないです^^;
>>128 この問題は原文のままですか?
2番の問題は読解できないです。
>>132 ほぼ原文ですよ.
ほんとうは紙に実行例が書いてあるんですけど^^
例:
論理和 : 000111101001001
何ビット目を表示?>4
3ビット目 = 1
論理和の連続する0の数および1の数を交互に表示します
3
4
1
1
2
1
2
1
>>133 間違えました
×3ビット目 = 1
○4ビット目 = 1
>>130 なら、例題は2バイトだけど回答は4バイトにするって理解すれば良いのかな
問2で連続する0の数と有るけど、小さい数字の場合は左に0が並ぶけどそれもカウントするのか?
それとも1が出現した後だけに着目するのか?
136 :
135 :2011/12/03(土) 00:34:10.16
>>128 最も重要な質問、itoa() と strtol() は使っても良いのか?
これらを作れって題意かも知れない
139 :
デフォルトの名無しさん :2011/12/03(土) 01:10:55.51
140 :
デフォルトの名無しさん :2011/12/03(土) 01:49:39.92
[1] 授業単元:暇つぶし [2] 問題文: 標準入力より4点 A(x1,y1), B(x2,y2), C(x3,y3), D(x4,y4)の座標が与えられる 座標の数値はいずれも -1000 以上 1000 以下の整数である 線分AB と 線分CD の交点を求め、その座標を小数点以下 20 桁まで表示せよ 線分が重なる場合 および 交点を持たない場合は 無し と表示せよ 但し端点のみが一致する場合はその座標を表示せよ 線分AB および 線分CD の長さは 0 より大きいものとする(A≠B C≠D) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: (C/C++/どちらでも可) [4] 期限: 無期限 [5] その他の制限: 外部ライブラリを使用せず単一のソースコードとして下さい
143 :
デフォルトの名無しさん :2011/12/03(土) 03:49:13.58
>>118 >>141 と同じく全部まとめました。
十進数と二進数はオプション -d と -b で使い分けます。
Usage 参照。
144 :
デフォルトの名無しさん :2011/12/03(土) 03:49:58.90
145 :
デフォルトの名無しさん :2011/12/03(土) 03:51:34.35
[1] 授業単元:計算機アルゴリズムT
[2] 問題文(含コード&リンク):
設問1-1
プログラム例10.5.1において「s = sum(x,y); d=difference(x,y);」を、和と差の両方を計算する関数「sumdif(x, y, &s, &d);」に置き換えた後、同じ表示結果が得られるように関数「void sumdif(float x, float y, float *s, float *d)」を作成しなさい。
※return文で返せる戻り値は高々1個であるので、ポインタを使って計算結果を返すことが必要になる。
プログラム例10.5.1
ttp://www.dotup.org/uploda/www.dotup.org2336763.txt.html [3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語:C
[4] 期限:[2011年12月7日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数
条件分岐if文、要素番号idx使用の書換、データの入れ替え
条件分岐・論理演算子を用いたif文の条件、if文、else if文
switch文、ポインタ変数・演算子*と&、関数・プロトタイプ宣言と関数定義
引数と戻り値、関数の引数とポインタ、関数に配列を渡し、呼び出し側へ戻す方法
関数から関数を呼び出す方法は習いました。
宜しくお願いします。
>>146 void sumdif(float x, float y, float *s, float *d)
{
*s = x + y;
*d = x - y;
}
>>149 double は 20 桁も保障するのか?
>>149 計算精度が足りないのと
線分なので
A(2,1) B(3,1) C(1,2) D(1,3)
の時は交差しない
>>141 すいません。
2進数で入力されても可能というところもコマンドライン引数でお願いします。
>>144 コンパイルしようとしたら以下のエラーが出ました
エラー E2313 prog1005.c 30: 定数式が必要(関数 ConvertBinaryToHexadecimal )
エラー E2313 prog1005.c 70: 定数式が必要(関数 main )
エラー E2313 prog1005.c 71: 定数式が必要(関数 main )
*** 3 errors in Compile ***
>>155 const の値を#defineに替えれ
いっぱいでたよ!
http://codepad.org/R1uz170a エラー E2188 prog1005.c 13: 式の構文エラー(関数 ConvertDecimalToBinary )
エラー E2379 prog1005.c 13: ステートメントにセミコロン(;)がない(関数 ConvertDecimalToBinary )
エラー E2188 prog1005.c 16: 式の構文エラー(関数 ConvertDecimalToBinary )
警告 W8057 prog1005.c 17: パラメータ 'decimal' は一度も使用されない(関数 ConvertDecimalToBinary )
エラー E2290 prog1005.c 30: 配列境界 に ] がない(関数 ConvertBinaryToHexadecimal )
警告 W8019 prog1005.c 30: コードは効果を持たない(関数 ConvertBinaryToHexadecimal)
エラー E2379 prog1005.c 30: ステートメントにセミコロン(;)がない(関数 ConvertBinaryToHexadecimal )
エラー E2188 prog1005.c 31: 式の構文エラー(関数 ConvertBinaryToHexadecimal )
エラー E2379 prog1005.c 31: ステートメントにセミコロン(;)がない(関数 ConvertBinaryToHexadecimal )
エラー E2188 prog1005.c 39: 式の構文エラー(関数 ConvertBinaryToHexadecimal )
エラー E2188 prog1005.c 39: 式の構文エラー(関数 ConvertBinaryToHexadecimal )
警告 W8057 prog1005.c 40: パラメータ 'binary' は一度も使用されない(関数 ConvertBinaryToHexadecimal )
警告 W8057 prog1005.c 40: パラメータ 'hexadecimal' は一度も使用されない(関数 ConvertBinaryToHexadecimal )
エラー E2290 prog1005.c 45: 配列 に ] がない(関数 DisplayBitInfo ) 警告 W8019 prog1005.c 45: コードは効果を持たない(関数 DisplayBitInfo ) エラー E2379 prog1005.c 45: ステートメントにセミコロン(;)がない(関数 DisplayBitInfo ) エラー E2290 prog1005.c 70: 配列境界 に ] がない(関数 main ) 警告 W8019 prog1005.c 70: コードは効果を持たない(関数 main ) エラー E2379 prog1005.c 70: ステートメントにセミコロン(;)がない(関数 main ) エラー E2140 prog1005.c 71: ここでは宣言はできない(関数 main ) エラー E2290 prog1005.c 71: 配列境界 に ] がない(関数 main ) エラー E2188 prog1005.c 71: 式の構文エラー(関数 main ) 警告 W8019 prog1005.c 71: コードは効果を持たない(関数 main ) エラー E2379 prog1005.c 71: ステートメントにセミコロン(;)がない(関数 main ) エラー E2121 prog1005.c 89: 関数呼び出しに ) がない(関数 main ) エラー E2188 prog1005.c 89: 式の構文エラー(関数 main ) エラー E2451 prog1005.c 91: 未定義のシンボル binary(関数 main ) エラー E2451 prog1005.c 98: 未定義のシンボル hexadecimal(関数 main ) *** 21 errors in Compile ***
160 :
デフォルトの名無しさん :2011/12/03(土) 12:23:57.06
161 :
デフォルトの名無しさん :2011/12/03(土) 13:56:25.82
[1] 授業単元:C言語プログラミング [2] 問題文 ポインタの利用方法として,配列を使わない文字列処理を習得する.課題3を配列を使わずに「メモリの動的確保」及び「ポインタ演算」により処理する. 課題3 配列の値を前後に移動させる際に押し出された要素(文字)は反対側に入るようにします. 例. ABCDE に 手続き(1)(=1つ前に詰める)を適用すると BCDEA となる. 文字型の配列に値を格納しなくてはなりませんが「配列の初期化」のテクニックを使って,プログラム中で行う(つまりキーボードから打ち込まない).また,配列のサイズ(つまり要素数)は5個とする. ( 例."ABCDE" の5文字を処理対象とする等) 条件 プログラム中で配列を用いてはいけません.配列の宣言の代わりに,必ずにある「メモリの動的割り当て」の手法を使って malloc関数で必要なメモリを確保する方法で実装すること. 変化したことが分かるようにprintf関数で確認できるようにすること [3] 環境 [3.3] 言語: C言語 [4] 期限: 12月4日 18時 お願いします
162 :
デフォルトの名無しさん :2011/12/03(土) 14:54:27.56
[1] 授業単元:C言語による基礎 [2] 問題文(含コード&リンク): 以下の実行例のように,文字列を入力すると,その前 後に"を付けた文字列を生成するプログラムを,ライブ ラリ関数strcpy とstrcat を用いて作成せよ.ただし, プログラムは以下の要件を満たすこととする. ? ユーザに入力させる文字列を格納する配列を str1[],前後に"を付けた文字列のための配列を str2[] とする. ? ユーザに入力させる文字列は30 字までとする. ? 配列str2[] は初期化せずに宣言し,ライブラリ関 数strcpy とstrcat を使って(添字演算子[] を 使わずに)前後に"を付けた文字列を生成すること. [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限:2011年12月5日 17:00 [5]実行例 文字列を入力してください:Kousoku 文字列の前後に"を付けました。 str2:"Kousoku"
164 :
デフォルトの名無しさん :2011/12/03(土) 15:38:12.62
>>164 10行目
scanf("%30s", str1);
の方がいいかも
12,13,14行目が
strcpy(str2, "\"");
strcat(str2, str1);
strcat(str2, "\"");
では?
[1] 授業単元:2分探索 [2] 問題文(含コード&リンク): 2分探索を呼び出すmain関数を作成し、実際の動作を確認せよ。 ただし各データの値は構造体配列の初期設定で設定するものとする。 また、プログラムは以下のように動作するものとする。 Please input a key: 8 Found! Key=8, Name=Hanada Please input a key: 24 Found! Key=24, Name=Nishida Please input a key: 6 Not Found! Please input a key: ・ ・ [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン: VC2008 [3.3] 言語: C [4] 期限:12/5
>>166 [5]以下のコードを使用してください。
int bi_search(int target){
int hi, lo, mid;
lo=0; hi=N-1; //Nはデータ数
while(lo <= hi){
mid=(lo+hi)/2; //中央のデータのインデックス
if(target==St[mid].num)
return mid;
else if(target<St[mid].num)
hi=mid-1; //左半分を再検索
else
lo=mid+1; //右半分を再検索
}
return -1;
}
168 :
デフォルトの名無しさん :2011/12/03(土) 16:19:45.17
>>165 > scanf("%30s", str1);
> の方がいいかも
なるほど。scanf で文字数指定できるの知らなかったです。
> 12,13,14行目が
> strcpy(str2, "\"");
> strcat(str2, str1);
> strcat(str2, "\"");
> では?
確かにそちらの方が自然ですね・・・
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): double (*e)[4]; printf("*e\t%d\n", sizeof(*e)); なんと表示されるか答えよ。 // コンパイルして32と表示されたが理由がわからない。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC2010 [3.3] 言語: C [4] 期限: 特に無し [5] その他の制限: 多重ポインタまで学習
>>169 >>160 >>128 はこのように2つの10進数or2進数から計算できるようにしないといけないのですが
頂いたプログラムではできません。
D:\Prog>test 5 1
x = 0101
y = 0001
x & y = 0001
x | y = 0101
x ^ y = 0100
D:\Prog>test 0111 1001
x = 0111
y = 1001
x & y = 0001
x | y = 0001
x ^ y = 0001
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
前日商品別に在庫を登録したファイル "zaiko.txt" と
当日商品別に入庫を記録したファイル "nyuko.txt" の2つのファイルを入力し、
新たな在庫ファイル "zaiko_new.txt" を出力するプログラムを作成せよ。
ファイルの各レコード(行)は次の形式であり、ひとつの商品に対してひとつのレコードとする。
商品コード 整数 4桁
数量 数字 4桁
なお、各ファイルは商品コードの昇順にソートされているものとする。
※実行例:
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/256.txt [3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:12/4(日)23:59:59
[5] その他の制限:
商品コードや種類の数等は実行例の限りでなく、
自由に変えても対応できるようにお願いします
在庫・入庫ファイルの名前自体はそのままでいいです。
>>171 第一引数をスイッチにすると書いた
D:\prog>test d 5 1 と D:\prog>test b 0111 1001 を試してみてちょ
もし自動判定するとなると test 100 10 の時どっちか判らなくて困る
2進の時は必ず0から始めるとかのルールを決めれば自動判定できるけどね
>>173 そうなんですか!
2進数の時は
>>171 のように最低0001からはじまりますんで
それで判定してもらえないでしょうか?
175 :
174 :2011/12/03(土) 17:35:05.02
×最低0001 ○最低0000
>>174 >>171 の例題だと第2引数は 1001 になってるけど良いの?
アップするの面倒だから変更部分だけ( #else から #endif の間)を書くね
if( c > 2 ) {
if( *v[1] == '0' || *v[2] == '0' )
base = 2;
else
base = 10;
v1 = strtol( v[1], NULL, base );
v2 = strtol( v[2], NULL, base );
}
else {
printf( "[Usage] this_prog v1 v2\n" );
return 0;
}
178 :
デフォルトの名無しさん :2011/12/03(土) 18:25:28.91
179 :
デフォルトの名無しさん :2011/12/03(土) 18:27:58.94
181 :
174 :2011/12/03(土) 18:45:20.63
>>177 ありがとうございます、いけました!
>>179 ありがとうございます!でもエラーが出ました
エラー E2313 p.c 30: 定数式が必要(関数 ConvertBinaryToHexadecimal )
エラー E2313 p.c 74: 定数式が必要(関数 main )
エラー E2313 p.c 75: 定数式が必要(関数 main )
*** 3 errors in Compile ***
>>178 そらそうだな、判定条件を変えた方が良いだろう
v[1], v[2] に 01 以外が出現したら無条件に10進っていう条件を追加すれば良いのかな?
183 :
デフォルトの名無しさん :2011/12/03(土) 18:48:59.43
>>183 いけました!本当にありがとうございます!
185 :
デフォルトの名無しさん :2011/12/03(土) 18:52:48.57
>>182 それだとやっぱり十進数の0が上手く扱えないと思う。
「長さ2以上かつ0で始まるものが二進数、それ以外が十進数」かな。
187 :
デフォルトの名無しさん :2011/12/03(土) 19:17:42.33
>>150 その関数はプログラム例10.5.1のどの部分に組み込めばいいのでしょうか?
190 :
日系アメリカ人 ◆japYJPNx6A :2011/12/03(土) 19:28:09.94
>>137 itoa()なんて初めて聞いたけど、特定の環境だとそういうのがあるわけね。
記述ですがお願いします。 整列手法や探索手法として様々な手法が提案されており、 いくつかの手法について学んできた。 1つの同じ問題を解く方法 として、 様々な手法が提案され実装されベンチマーク評価されている。 しかし、一般的なベンチマークでは評価できない項目がある。 この内容として具体的な例を考えなさい。
計算時間と計算量の違い。 O(1)でも数時間、数日掛かることもある。
>>191 iotaは由緒正しい歴史ある関数なんだよ。APL言語からの由来。
>>193 なるほど有難うございます。
あともう一つあるるので良ければお願いします
クイックソートは、O(n log n) の高速な整列関数としてよく知られている。
高速なソートであるが、ソートのベンチマークに用いられる指標について説明しなさい。
>>193 それって具体的にはどんな状況? データの読み書きに凄く時間がかかるとか?
でもそれだってベンチマークはできるような。
ソート対象の配列が主記憶を使い切るような大きさであった場合、
低速な補助記憶装置が使われるので、アルゴリズムのメモリ使用パターンが重要となる。
そのような状況では、主記憶上ですべてソートできることを前提としたアルゴリズムは効率が極端に悪化する可能性がある。
このような状況では、比較演算回数はあまり重要ではなくなり、ディスクとのメモリ領域のスワップ回数が重要となる。
したがって、なるべくスワップ回数を増やさないようにするために、配列全体を走査する回数や比較の局所性が比較回数よりも重要となる。
例えば、再帰型のクイックソートは主記憶上では性能が良いが、ソート対象の配列が主記憶に収まらない場合は
スワップが頻繁に発生して、性能が極端に低下する。したがって、そのような場合は比較回数が多くても他のアルゴリズムを使った方がよい。
http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%83%88
前スレで
>>17 の宿題を依頼したものですが、どなたか完成した方はいらっしゃいますか?
>>197 それはおいといて。ベンチマークからではオーダーは決定できない。(推定はできるが)
O(n*n)がO(n)やO(1)より速いことはある。
>>202 そうそうこんな感じ
お前なかなか可愛い所があるじゃないか
アッカーマン関数もこんな感じで再計算を防止すると馬鹿っ速くなるよ
階乗計算(5000!など)は定数時間でできるらしい。
>>200 あ、もちろんそういう事実は了解していますが、
そもそも>この問題の真意が自分にはよくわからなかったのでw
これが
>>192 の問題への解答ということであれば、
あるソート関数の計算量のオーダーがわからない状況でベンチマークだけ
やってみる、というのがこの問題の前提になるような?
それだとむしろ実データから計算量のオーダーを逆推定する問題の困難さ、の方が
強調されてしまうような... そういうことを授業とかで問う必要はあるのかなあと。
計算量の次数だけでは必ずしも速度はわからない、という話ならわかるんですけど。
考え過ぎ?
210 :
デフォルトの名無しさん :2011/12/04(日) 04:49:53.13
>>187 #include <stdio.h>
int main()
{
int x = 0;
int y = 1;
do {
x = x + y;
y = y + 2;
} while (y <= 15);
x = x + y;
printf("%d\n", x);
return 0;
}
211 :
デフォルトの名無しさん :2011/12/04(日) 04:57:37.21
>>203 いたのか。
いつまでたっても終わらなかったコードを提示しろと散々
212 :
デフォルトの名無しさん :2011/12/04(日) 05:27:59.61
P型記述子を用いて曲線をフーリエ変換するプログラムを作らなければならないのですが、 全く進まなくて困っています。 サンプルプログラムなどを見て理解していきたいのですがどなたか教えていただけないでしょうか
213 :
デフォルトの名無しさん :2011/12/04(日) 06:19:24.11
なんのサンプルがほしいんだろ。 P型記述子を用いて曲線をフーリエ変換するサンプルプログラムじゃないんだよね
214 :
デフォルトの名無しさん :2011/12/04(日) 06:28:49.17
分かりにくくなってしまってごめんなさい P型記述子を用いて曲線をフーリエ変換するサンプルプログラムがほしいです。
>>180 動作確認しました、ありがとうございます!
216 :
デフォルトの名無しさん :2011/12/04(日) 08:29:19.22
それはサンプルじゃなくて直球の答えじゃないのかっていう突っ込みかと
217 :
デフォルトの名無しさん :2011/12/04(日) 08:39:37.13
まぁぶっちゃけそのまま答えになっちゃうようなものですが・・・ どうしていいか全く分からないもので・・・
>>193 197 198 200 207
本当に有り難うございました。
申し訳ないのですがもう1問お願いします。
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):クイックソートは、O(n log n) の高速な整列関数としてよく知られている。
高速なソートであるが、ソートのベンチマークに用いられる指標について説明しなさい。
[4]月曜日
[5]基本的にC言語
宜しくお願いします。
>>218 > [2] 問題文: 指標について説明しなさい。
> [5] 基本的にC言語
お前はその単元落ちた方がいいと思う。
>>220 このページの一般的なオーダのことでしょうか?
>>221 「ソートのベンチマークに用いられる指標」なら、ランダウのΟ記法じゃないかと思ったのだが、違う?
スレチ
>>222 書き方しだいだけど少し違う らしいです
>>218 お前受けてる授業が何なのか、わかってないだろ
>>225 単元でしたか・・ 教科名だと思ってました。 単元はソートですね
227 :
デフォルトの名無しさん :2011/12/04(日) 11:20:42.50
まぁぶっちゃけそのまま答えになっちゃうようなものですが・・・ どうしていいか全く分からないもので・・・
授業受けてないんだな・・・しかも相談する友達もいないのか・・・
そもそもあの問題C言語もC++も関係ないだろ
>>117 wikiを参考にされたということですが、DCT(タイプ1から4まである中)のどの公式を見たのでしょうか?
今更ですが教えていただけませんか?
>>117 関数dct、o[k]って加算して出すんじゃないかな?
>>232 加算して出すとはどういうことなのでしょうか?
もう少しかみくだいて教えていただけませんか?
Σだからn0〜N-1までを加算するってことだと
>>233 for(k=0;k<e;k++){
for(n=0;n<e;n++){
o[k]=i[n]*cos(M_PI/(double)e*(0.5+(double)n)*(double)k);
}
}
↓
for(k=0;k<e;k++){
o[k]=0;
for(n=0;n<e;n++){
o[k]+=i[n]*cos(M_PI/(double)e*(0.5+(double)n)*(double)k);
}
}
[1] 授業単元:C++ [2] 問題文(含コード&リンク):次の if 文を表す抽象構文木を構築して表示するプログラムを作成せよ if (i < 0) {s = s - i;} else {s = s + i;} [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C++ [4] 期限: 明日の明朝 [5] その他の制限: クラス St_if の仕様は次の通りである. ? 継承関係 Statement の派生クラスである. ? メンバー 1. Expression* cond … 条件式 2. Statement* then … then 部の文 3. Statement* else … else 部の文 ? メソッド 5?141. St if(Expression* cond, Statement* then, Statement* els) 条件式が cond, then 部の文が then, else 部の文が els 6 であるようなインスタンスを作るコンス トラクタ. 2. ?St if() デストラクタ. cond , then , else を delete する. 3. const Expression* condition() const … cond を読み出す. 4. const Statement* then part() const … then を読み出す. 5. const Statement* else part() const … else を読み出す. 6. void print(std::ostream& os, int indent=0) const … 表示
>>236 誤字訂正します
・継承関係
Statement の派生クラスである.
class Statement
{
public:
Statement() {} // コンストラク
virtual ~Statement() {} // デストラク
virtual void print(std::ostream& os, int indent=0) const = 0; //表示
private:
Statement(const Statement&); // コピーコンスタラクタは禁止
Statement& operator=(const Statement&); // 代入演算は禁止
};
・メンバー
1. Expression* cond … 条件式
2. Statement* then … then 部の文
3. Statement* else … else 部の文
・メソッド
1 St_if(Expression* cond, Statement* then, Statement* els)条件式が cond, then 部の文が then, else 部の文が elsであるようなインスタンスを作るコンストラクタ.
2. 〜St_if() デストラクタ. cond , then , else を delete する.
3. const Expression* condition() const … cond を読み出す.
4. const Statement* then part() const … then を読み出す.
5. const Statement* else part() const … else を読み出す.
6. void print(std::ostream& os, int indent=0) const … 表示
>>238 ありがとうございます。
もしよければ ast.cpp(クラスの入った実装ファイル) ast.h(printが実装されたヘッダファイル) ***.cpp(mainのファイル)といった3つの形で
g++ -g ***.cpp ast.cppを使いコンパイルできるコードを書いていただければありがたいです。
>>239 それくらい自分でできないなら学校辞めたほうがいいレベル
241 :
デフォルトの名無しさん :2011/12/05(月) 00:11:50.90
プログラミングUの先生は意味分からんよね
困ってるのはお互い様です
私はテスト捨てますがね
244 :
デフォルトの名無しさん :2011/12/05(月) 00:17:35.47
[1] 授業単元:2分探索
[2] 問題文(含コード&リンク):
http://ideone.com/YJwRQ データが昇順ではなく、降順に並んでいる場合の2分探索をプログラムを作成せよ
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:VC2008
[3.3] 言語: C
[4] 期限:12/6
これが反日マスコミの編集による矮小化 176 :七つの海の名無しさん:2011/11/17(木) 21:57:56.45 ID:gClQt5ed 【重要】 ブータン国王の演説の報道は、重要な部分がことごとく反日マスコミにカットされて報道されています 「世界史において、かくも傑出し、重要性を持つ機関である日本国、(その)国会の中で、」 →★全部カット 「ブータン国民は、常に、日本に、強い、愛着の心を持ち、何十年もの間、偉大な日本の成功を →★全部カット 心情的に分かち合ってきました。」 「日本は、当時外国の領地(植民地)であったアジアに、自信とその進むべき道への自覚をもたらし 以降、日本のあとに続いて世界経済の最前線に躍り出た数多くの(アジアの)国々に希望を与えてきました」 →★全部カット 「日本は、過去においても、現代においても、世界のリーダーであり続けます」 「このグローバル化した世界において、日本は、技術と革新の力、勤勉さと責務、強固な伝統的な価値における模範 であり、これまで以上にリーダーにふさわしいのです。」 →★全部カット 「世界は、常に、日本のことを、大変な名誉と誇り、そして規律を重んじる国民、歴史に裏打ちされた誇り高き伝統を持つ国民、 不屈の精神、断固たる決意、そして秀でることに願望を持って、何事にも取り組む国民、知行合一、兄弟愛や友人、 ゆるぎない強さと気丈さを併せ持つ国民、であると認識してまいりました」 →★全部カット 「他の国であれば、国家を打ちのめし、国家を打ち砕き、無秩序、大混乱、そして悲嘆をもたらしたであろう事態に 日本国民の皆様は、最悪の状況下でさえ、静かな尊厳、自信、規律、ここの強さを以って、対処されました」 →★全部カット 他にもカットシーンがたくさんあるので、ブータン国王の演説 でyoutube検索してください
スレチ あほか?
249 :
デフォルトの名無しさん :2011/12/05(月) 03:07:22.89
文字入力して簡単な加工なり計算なりして表示しなさい っていう学校の問題としても初期のところを丸投げしてるとその先完全に詰むぞ多分 離散コサイン変換がわからん〜とか言うところならしょうがないけど
A(1,4) B(2,2) C(3,5) D(4,1) の4点があり線分ADと線分BCが点P(x,y)で交差している。 (1)四角形ABCDの面積を求めよ(2分) (2)P(x,y)のx,yを求めよ(4分)
[1] 授業単元:ポインタと関数 [2] 問題文(含コード&リンク): 数(整数)へのポインタsc を引数として,点数を 0 以上100 以下に修正する関数limit_sc(int *sc) を 作成せよ. 実行例. ・点数を入力してください:110 点数を修正しました。 点数:100 ・例2,点数を入力してください:85 点数を修正しませんでした。 点数:85 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:12/6 [5]・負の点数を0 点に,100 を超える点数を100 点に修 正するものとする ・関数の返却値はint 型とし,点数を修正した場合 には1,修正しなかった場合は0 を返す関数とすること. 以下の実行例のように,関数の動作を確認できるmain 関数も作成すること.
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 連立方程式、ax+by=c,dx+ey=fの係数a,b,c,d,e,fを2×3の2次元配列にキーボードから入力し、 この連立方程式を解くプログラムを作成せよ。(ただし、a〜fは0ではないと仮定してよい) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C言語 [4] 期限: 12月5日19時迄 [5] その他の制限:期限まで短いですが宜しくお願いします。
>>253 「以下の実行例」ってやつが書いてないからmainは何とかしろ
int limit_sc(int *sc)
{
if (*sc > 100) {*sc = 100;return 1}
if (*sc < 0) {*sc = 0;return 1}
return 0
}
256 :
255 :2011/12/05(月) 13:39:35.39
セミコロン忘れたけどまあいいか
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): xy平面上の2点の座標を2×2の2次元配列にキーボードから入力し、これら2 点間の距離を計算して画面表示するプログラムを作成しなさい。ただし、2点の座標をそれぞれ (x_1, y_1),(x_2, y_2) とするとき、これらの間の距離は{(x_2-x_1)^2+(y_2-y_1)^2}^1/2で求められる。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C言語 [4] 期限:12月5日19時迄 [5] その他の制限:先程の者ですが、こちらも宜しくお願いします。
[1] 授業単元:プログラム [2] 問題文:ローマ数字をアラビア数字に変換するプログラム [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2012年12月5日24:00まで [5] その他の制限: 使用出来るライブラリはstdioとstdlib
259 :
デフォルトの名無しさん :2011/12/05(月) 15:26:01.70
261 :
デフォルトの名無しさん :2011/12/05(月) 15:43:50.07
262 :
デフォルトの名無しさん :2011/12/05(月) 16:05:49.08
263 :
デフォルトの名無しさん :2011/12/05(月) 16:32:54.14
>>262 ありがとうございます。
自分のものと比べつつ後学に使わせてもらいます。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): キーボードから10個の整数を整数型配列に入力し、1番大きな数、2番目に大きな数、3番目に大きな数…10番目に大きな数の順に画面表示するプログラムを作成しなさい。 (ただし、同じ数が入力されても対処できるようにすること) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:12月5日24:00 [5] その他の制限:宜しくお願い致します
>>263 コンパイルで弾かれるのですが、もう一度確認してもらってよろしいでしょうか
あと、gcc 2.95でした。すいません。
269 :
デフォルトの名無しさん :2011/12/05(月) 17:38:34.39
>>259 さんのroman_to_int関数の解説を、どなたか頂けませんか。
>270 名前の通りだが? 読めない?
>>267 色々と間違えました。
>>257 のエラーで、エラーメッセージは、
/tmp/ccTVCSf2.o: In function `distance':
9-15.c:(.text+0x7b): undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました
です。
273 :
デフォルトの名無しさん :2011/12/05(月) 18:45:09.90
…どなたかって本人でもいいのかな。 基本的には対応する数字(Xなら10)を加算して、 次の文字が今の文字よりも大きいとき(IVとか)はIを減算してる 次の文字が\0の場合は0が返ってくるので問題なし 18行目の;;はただのtypo
>>273 ありがとうございます!!
理解できました。
275 :
255 :2011/12/05(月) 18:47:12.98
>>272 sqrtのリンクに失敗してんだよ
#include <math.h>
って行がソースにあったらコマンドラインの最後に
-lm
つけれ
276 :
デフォルトの名無しさん :2011/12/05(月) 18:47:53.01
あと、get_roman_valuesって名前はどうかと思いつつ、めんどくさくてそのままにした。 roman_to_intと、roman_string_to_intあたりがいいのかも
277 :
デフォルトの名無しさん :2011/12/05(月) 18:54:26.45
-lmって大抵の人が一回はまるよね。
あれ、俺ずっとageてたごめん
>>255 なるほど、できました。
ありがとうございます。
>>277 そういえばMac OS Xだとlibc相当部分にlibm相当もリンクされているのではまらないw
これはいいことなのか悪いことなのか
282 :
デフォルトの名無しさん :2011/12/05(月) 23:22:23.34
[1]C言語 [2]xy平面上の2点の座標を2x2の2次元配列にキーボードから入力し、これら2点間の距離を計算して画面表示するプログラム ※√(x2-x1)^2+(y2-y1)^2で求められる。 [3]OS:win7 コンパイラ:? 言語:C [4]12/6 0:00
283 :
282 :2011/12/05(月) 23:23:45.60
自己解決しました すいませんでした
286 :
デフォルトの名無しさん :2011/12/05(月) 23:38:20.38
なんでBMI大人気なのw
>>287 まぁ、入門用の問題としていいからじゃないの?
[1] 授業単元:ポインタと関数 [2] 問題文(含コード&リンク): 数(整数)へのポインタsc を引数として,点数を 0 以上100 以下に修正する関数limit_sc(int *sc) を作成せよ. [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:12/6 [5]・負の点数を0 点に,100 を超える点数を100 点に修 正するものとする ・関数の返却値はint 型とし,点数を修正した場合 には1,修正しなかった場合は0 を返す関数とすること. 以下の実行例のように,関数の動作を確認できるmain 関数も作成すること 実行例 ・点数を入力してください:110 点数を修正しました。 点数:100 ・例2,点数を入力してください:85 点数を修正しませんでした。 点数:85.
>>289 #include <stdio.h>
int limit_sc(int *sc)
{
if(*sc > 100){
*sc = 100;
return 1;
}else if(*sc < 0){
*sc = 0;
return 1;
}else{
return 0;
}
}
int main()
{
int n;
printf("点数を入力してください:");
scanf("%d",&n);
if(limit_sc(&n)){
puts("点数を修正しました。");
}else{
puts("点数を修正しませんでした。");
}
printf("点数:%d\n",n);
return 0;
}
【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):多重配列を降順ソートする [3] 環境 [3.1] windows 7 [3.3] C言語 [4] 期限: 12/7 17時 [5] 特になし 1列目をソートする方法は分かったのですが、2列目以降を基準としてソートする方法がわかりません ソート前 ソート後 1 3 3 5 2 8 5 2 8 1 3 3
293 :
255 :2011/12/06(火) 12:05:17.70
>>292 3列目でソート
2列目でソート
1列目でソート
295 :
292 :2011/12/06(火) 12:22:57.74
今のプログラムはこんな感じです int aaa(const void *a, const void *b); int i; int *j; typedef struct { double abc; double def; double ghi; } ponta; int main(void){ ponta datee[10]={ { 8, 4, 3 }, { 6., 1, 7 }, { 2, 2, 1 }, { 5, 9, 6 }, }; qsort(datee, 3, sizeof(double), aaa); for (i=0; i<=3; i++){ printf("%.1lf %.1lf %.1lf\n",datee[i]);} return 0;} int aaa(const void *a, const void *b){ if (*(double*)a<*(double*)b) return -1; else if (*(double*)a == *(double*)b) return 0; else return 1;}
296 :
292 :2011/12/06(火) 12:25:03.62
色々いじってたらなんかまたおかしくなってますね…1列目でソートしたプログラムを誤って消してしまったようです
297 :
デフォルトの名無しさん :2011/12/06(火) 12:58:37.81
多重配列じゃなくて構造体配列じゃね。 それならaaaを工夫すればいいよ
300 :
デフォルトの名無しさん :2011/12/06(火) 13:04:27.84
あっ
301 :
デフォルトの名無しさん :2011/12/06(火) 13:19:35.92
>>292 の書き込みだけで、おまえらよくエスパーできるな
304 :
255 :2011/12/06(火) 13:43:42.27
>>295 まででできてたら、もう自分でできそうな気もするんだが
aaaのなかでdouble*でなくて、pontaでキャストして
abc、def、ghiでそれぞれ比較するような感じの関数3つ作れ
名前消すの忘れてた・・・
3つに分けたほうが読みやすくね?
qsort3回呼ぶってことか? qsortって非破壊?
いや?破壊する。
310 :
292 :2011/12/06(火) 14:49:00.12
皆さんのおかげで無事完成しました ありがとうございました
アルゴリズム指定されてる気がするけど、いいんじゃない
314 :
311 :2011/12/06(火) 23:08:20.67
嘘吐き朝鮮、中国人がやってる報道機関 朝鮮人犯罪があまり報道されない理由 韓国文化放送(MBC) 〒135-0091 東京都港区台場2-4-8 18F フジテレビジョン 、、 〒137-8088 東京都港区台場2-4-8 韓国聯合TVNEWS(YTN) 〒105-0000 東京都港区赤坂5-3-6 TBSテレビ 、 、、 .〒107-8006 東京都港区赤坂5-3-6 大韓毎日 、、、、、、、、、、、、 〒108-0075 東京都港区港南2-3-13 4F 東京新聞(中日新聞社東京本社) 〒108-8010 東京都港区港南2-3-13 京郷新聞 、、、、、、〒100-0004 東京都千代田区大手町1-7-2 産経新聞東京本社 〒100-8077 東京都千代田区大手町1-7-2 (サンケイスポーツ、夕刊フジ、日本工業新聞社) 朝鮮日報 、、、 〒100-0003 東京都千代田区一ツ橋1-1 4F 毎日新聞東京本社 〒100-8051 東京都千代田区一ツ橋1-1-1 韓国日報 、、、、 〒100-0004 東京都千代田区大手町1-7-1 8F 読売新聞東京本社 〒100-8055 東京都千代田区大手町1-7-1 東亜日報 、、、 〒104-0045 東京都中央区築地5-3-2 朝日新聞東京本社 〒104-8011 東京都中央区築地5-3-2(AFP、NYT) 韓国放送公社(KBS) 〒150-0041 東京都渋谷区神南2-2-1NHK東館710-C NHK放送センター、 〒150-8001 東京都渋谷区神南2-2-1
[1] 授業単元:C
[2] 問題文(含コード&リンク):
http://codepad.org/QfW3xLnm リンク先のコードのint searchを、以下のコードに書き換えて、プログラムを完成させなさい。
int bi_search(int target) {
int hi, lo, mid;
lo = 0;
hi = N - 1;
while (lo <= hi) {
mid = (lo + hi) / 2;
if (target == St[mid].num)
return mid;
else if (target < St[mid].num)
hi = mid - 1;
else
lo = mid + 1;
return -1;
}
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C
[4] 期限:12/8
[5] その他の制限:
[1] 授業単元:ソフトウェア設計
[2] 問題文(含コード&リンク):
http://codepad.org/Gp4kGOVZ [3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: visual C++ 2008
[3.3] 言語: C++
[4] 期限: 2011年12月07日13:00まで
[5] その他の制限: 特に無し
助けて下さい。
よろしくお願いします。
[1] 授業単元:プログラミング(c言語) [2] 問題文(含コード&リンク): ビンゴゲームで、ビンゴした列の数字を足し、その合計によってランクをつけるプログラムを作れ。 ビンゴカード(5*5)に書かれている数字はランダムで1から75まで、ランクはSからEまでとする。 S 365-310 A 309-251 B 250-192 C 191-133 D 132-74 E 73-15 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン:Dev-C++ 5 [3.3] 言語: C言語 [4] 期限: 2011年12月9日15:00まで [5] その他の制限: 数人のチームでの課題で、私の担当は数字を足しランク付けするところです。 すみませんが、よろしくお願いします。
320 :
デフォルトの名無しさん :2011/12/07(水) 01:35:54.94
321 :
デフォルトの名無しさん :2011/12/07(水) 01:38:34.84
ビンゴってビンゴしたら終わりだったか( ;∀;)
322 :
デフォルトの名無しさん :2011/12/07(水) 02:05:16.14
>>322 エスパーすると、最高得点が365ってところから、同時に複数列ビンゴした場合は、
合計が最大となる列のもののみ対象とする気がする
validが
1 1 1 1 1
1 0 0 0 0
1 0 1 0 0
1 0 0 0 0
1 0 0 0 0
のときとか。
あと、これは本当にささいなことなんだけど、diagon → diagonalかもしれない
325 :
デフォルトの名無しさん :2011/12/07(水) 03:59:03.83
326 :
デフォルトの名無しさん :2011/12/07(水) 04:00:29.49
[1] 授業単元:プログラミング演習 2 [2] 問題文(含コード&リンク) テキストファイル bmi.txt を用意します 17人の名前と彼らの身長と体重が記入されています. $ cat bmi.txt Ackley,D.H. 181.5 65.1 Baker,J.E. 185.3 68.3 Keller,K.S. 175.2 63.4 Brent,R.P. 174.4 52.8 Jong,K.A. 186.2 73.4 Goldberg,D.E. 174.0 60.0 Forrest,S. 175.5 60.6 Fletcher,R. 180.3 73.8 Powell,M.J.D. 170.1 55.9 Smith,R.E. 178.7 69.6 Richardson,J. 167.7 51.5 Martin,F.G. 179.2 65.3 Wilson,S.W. 185.8 84.4 Lawler,E.L. 166.5 59.6 Reed,J. 176.3 58.8 Holland,J.H. 186.1 70.4 Jones,W.T. 171.4 63.7 C プログラム delcomma.c を書き,以下の要領でコンパイルし,実行モジュール delcomma を生成します. delcomma は想像通り,delete comma の略です. 標準入力から受け取った名前の中で,カンマ以下を削除して標準出力に表示するコマンドです.
[1] 授業単元:プログラミング演習 2 [2] 問題文(含コード&リンク) テキストファイル bmi.txt を用意します 17人の名前と彼らの身長と体重が記入されています. $ cat bmi.txt Ackley,D.H. 181.5 65.1 Baker,J.E. 185.3 68.3 Keller,K.S. 175.2 63.4 Brent,R.P. 174.4 52.8 Jong,K.A. 186.2 73.4 Goldberg,D.E. 174.0 60.0 Forrest,S. 175.5 60.6 Fletcher,R. 180.3 73.8 Powell,M.J.D. 170.1 55.9 Smith,R.E. 178.7 69.6 Richardson,J. 167.7 51.5 Martin,F.G. 179.2 65.3 Wilson,S.W. 185.8 84.4 Lawler,E.L. 166.5 59.6 Reed,J. 176.3 58.8 Holland,J.H. 186.1 70.4 Jones,W.T. 171.4 63.7 C プログラム delcomma.c を書き,以下の要領でコンパイルし,実行モジュール delcomma を生成します. delcomma は想像通り,delete comma の略です. 標準入力から受け取った名前の中で,カンマ以下を削除して標準出力に表示するコマンドです.
[1] 授業単元:プログラミング演習 2 [2] 問題文(含コード&リンク) テキストファイル bmi.txt を用意します 17人の名前と彼らの身長と体重が記入されています. $ cat bmi.txt Ackley,D.H. 181.5 65.1 Baker,J.E. 185.3 68.3 Keller,K.S. 175.2 63.4 Brent,R.P. 174.4 52.8 Jong,K.A. 186.2 73.4 Goldberg,D.E. 174.0 60.0 Forrest,S. 175.5 60.6 Fletcher,R. 180.3 73.8 Powell,M.J.D. 170.1 55.9 Smith,R.E. 178.7 69.6 Richardson,J. 167.7 51.5 Martin,F.G. 179.2 65.3 Wilson,S.W. 185.8 84.4 Lawler,E.L. 166.5 59.6 Reed,J. 176.3 58.8 Holland,J.H. 186.1 70.4 Jones,W.T. 171.4 63.7 C プログラム delcomma.c を書き,以下の要領でコンパイルし,実行モジュール delcomma を生成します. delcomma は想像通り,delete comma の略です. 標準入力から受け取った名前の中で,カンマ以下を削除して標準出力に表示するコマンドです.
$ gcc -o delcomma delcomma.c コマンド delcomma にリダイレクト機能を使って入力ファイル bmi.txt の中身を処理させます. 結果は以下のようになります.綺麗に名前のカンマ以下が消えています. $ ./delcomma < ./bmi.txt Ackley Baker Keller Brent Jong Goldberg Forrest Fletcher Powell Smith Richardson Martin Wilson Lawler Reed Holland Jones
ソース delcomma.c の一部を示します.残りを埋めて完成させて下さい. #include <stdio.h> #define MAX_LINE 20 #define MAX_NAME 20 int main(void); int readfile(char (*)[MAX_NAME]); void del_comma(char (*)[MAX_NAME], int); void write_array(char (*)[MAX_NAME], int); int main(void) { char name[MAX_LINE][MAX_NAME]; int n; n = readfile(name); del_comma(name, n); write_array(name, n); return 0; } void write_array(char (*name)[MAX_NAME], int n) { int i; for (i = 0; i < n; i++) printf("%s\n", name[i]); return; }
すいません間違えて何度も同じ書き込みしてしまいました。[3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:12月7日(出来れば早めにお願いします) よろしくお願いします
>>337 X while (fgets(s, "%s", stdin) != NULL)
O while (fgets(s, MAX_NAME, stdin) != NULL)
近々これを元にBMI計算しろって丸投げがくるな
[1] 授業単元: プログラミング演習 [2] メンバに氏名、身長(double)、体重(double), BMI (double)をもつ構造体をつくり、氏名、身長、体重に適当な値を設定します。 そしてこの構造体のポインタを引数として渡したときにBMIメンバに計算結果を格納する関数を作ってください。 (もちろん、メイン関数もかいて動作を確かめよ。) BMI : 体重(kg)を身長の2乗(m)で割った値 (体重(kg)/(身長(m))^2) [3] 環境 [3.1] OS: Windows [3.2] visual C++2005 [3.3] C [4] 期限:2011/12/8
安定のBMIスレ double BMI(double weight,double height) /*weight: 体重(kg)*/ /*height: 身長(m)*/ {if((weight<0)||(height<0){return -1 /*エラー*/} return weight/(height*height);} までテンプレ
>>336 雛形コードについての表現がおもろいな。
・ここまで何とかできた
・友達と一緒にやって、教科書などから「だいたいこんな感じではないか」
民主は反日で論外 自民は谷垣のようなエセ保守が居る限り衰退
349 :
335 :2011/12/07(水) 16:55:00.92
>>337 だとコンパイル可能なのですが実行するとSegmentation faultが出てしまいます
どこを修正すれば見当つきません 誰か教えてもらえますか
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク): キーボードから二つの文字列を配列x[256]とy[256] に入力する。 配列xに含まれる文字列の後ろに配列yに含まれる文字列をつなげたものを配列z[256] に代入し、画面表示するプログラムを作成せよ。 (ただし、NULL文字「\0」の扱いに注意し、配列z の文字列の後ろにNULL文字を入れておくこと) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 2.9 [3.3] 言語:C言語 [4] 期限: 12月13日24時 [5] その他の制限:ありません。宜しくお願いします。
>349 マジで半分くらいは書き換え
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 以下の手順に従ってプログラムを作成せよ。 適宜printfを利用して、入力支援(「文字列を入力してください」等の画面表示)を行うこと。 1.文字配列name[5][64]を作成 2.キーボードから5人分の名前を入力し、name配列に格納 3.キーボードから名前を入力し、name配列の何番目に格納されているかを検索して表示 (見つからなかった場合は「見つかりません」と表示) 4.「quit」が入力されるまで3の処理を繰り返す [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限: 12/10/20:00 [5] その他の制限:お願いします。
>>349 コンパイル通るのか? fgets() が....
355 :
335 :2011/12/07(水) 17:41:31.53
>335 礼もなしで使い捨てって、すごいなお前
>>351 #include <stdio.h>
int
main(void)
{
char x[256], y[256], z[256];
printf("x = ");
scanf("%s", x);
printf("y = ");
scanf("%s", y);
sprintf(z, "%s%s", x, y);
printf("z = %s¥n", z);
return 0;
}
>>355 書き直した方が良いとは思うけど、面倒くさいから修正指示で良い?
30行目
× while( fgets( s, "%s", 〜
○ while( fgets( s, 100, 〜
>>351 >>357 sprintfを使わないとこうなるという例 sprintfバンザイ センセーに怒られても知らないけどね
//ヘッダファイルの読み込みだよ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//マジックナンバーはプログラム内に書かないほうがいいよ
#define N 256
//メイン関数だよ
int main(void) {
//文字列配列の宣言だよ
char x[N];
char y[N];
char z[N];
//xを入力させるよ
printf("x入れてね:");
fgets(x, sizeof(x), stdin);
fflush(stdin); //おまじないだよ
x[strlen(x) - 1] = '\0'; //NULL文字つけるよ
//yを入力させるよ
printf("y入れてね:");
fgets(y, sizeof(y), stdin);
fflush(stdin); //おまじないだよ
y[strlen(y) - 1] = '\0'; //NULL文字つけるよ
strcpy(z, x); //xをzにコピーするよ
strcat(z, y); //zにyを連結するよ
printf("配列zの中身は%sだよ",z); //表示するよ
return 0; //おまじないだよ
}
[1] 授業単元: プログラミングC (ポインタ、文字列) [2] 文字列を後ろから逆に表示する(例えば"ABC"を受け 取ったら"CBA"と表示する)関数 void put_rstring(const char *st) を,添字演算子[] を使わずに作成せよ [3] 環境 [3.1] OS: linux [3.2] gcc [3.3] C [4] 期限:2011/12/8 [5] 関数の動作を確認できるmain 関数も作成す ること. (実行例) 文字列を入力してください:Koudai 逆順に表示:iaduoK
>>359 ?
sprintfがstrcpyとstrcatにかわっただけだろ。
strcpy(z, x); //xをzにコピーするよ
strcat(z, y); //zにyを連結するよ
それから、これはやりたいことの説明になってない。
> x[strlen(x) - 1] = '\0'; //NULL文字つけるよ
それよりも何よりも、この恐ろしいコードを足したのはなぜ?
> fflush(stdin); //おまじないだよ
>>361 void put_rstring(const char *st) {
const char *p = st;
while(*p++);
while(st != p) putchar(*--p);
}
こういう。
364 :
335 :2011/12/07(水) 18:36:07.17
>>356 貴方の言う通りですね 礼も無しは失礼ですね これから気をつけるので今回はすみませんでした
>>358 はい 無事できましたありがとうございました
>>363 X while(*p++);
O while(*p)p++;
>>364 ふーん
>>358 のような変更でコケたりコケなかったりするんだ。
いや、元のコードだとバッファのサイズとして文字リテラルのアドレス値が渡るだけで
「一応」動かなくもないのかなあと思ったのだが。
コケるとしたらfgets()が本当にそんだけバッファがあるかチェックしたりしてるとか?
あるいは文字リテラルがすごく小さいアドレスに割り当てられてて、fgetsがバッファ不足
(と思い込む)で文字列がカンマまで取り込めなくて暴走とか?
宿題なんだから、条件チェックは指示された範囲でいいんじゃないの?
>>367 fgets() の第二引数は signed int だから unsigned int のポインター値が負になるかも知れないよ
朝日新聞は一時期300人のネット工作員をかかえ、工作していた。
捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。
>>866 14時以降に何が起きたんだ
>>866 Domain Information: [ドメイン情報]
a. [ドメイン名] ASAHI-NP.CO.JP
e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ
f. [組織名] 株式会社 朝日新聞社
これが規制されたからじゃねw
−「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」−
これはおそらく週刊誌さえ書けない。
「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ
>>367 > バッファがあるかチェック
できないでしょ
>>361 #include <stdio.h>
void func(char*s){
if(*s)
func(s+1);
putchar(*s);
}
int main(void){
char s[100];
printf("in=");
scanf("%s",s);
func(s);
return 0;
}
[1] 授業単元:C
[2] 問題文(含コード&リンク):
http://codepad.org/ag7XWjHf リンク先のコードをデータが昇順ではなく、
降順に並んでいる場合の二分探索はどのように改良すればいい?
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C
[4] 期限:12/8
[5] その他の制限:
>>375 else if (target < St[mid].num)
→ else if (target > St[mid].num)
[1] 授業単元:C言語入門 [2] 問題文(含コード&リンク):↓ 文字列操作のライブラリ関数を使用して、指定したファイルで、 最も辞書順(ASCIIコード順)で最初に出てくる単語と、最後に出てくる単語を見つけて表示せよ。また、最も長い単語も表示せよ。 ・同じ長さの単語が複数ある場合には、最初に見つけたものだけ表示するだけでよい。 ・ただし,ここでいう単語とは、スペースや改行、タブで区切られる文字の列で必ずしも、英数字とはかぎらない。(このような区切りで、ファイルから文字列を読むために%sを用いる) ・単語の長さは100文字以内と考えてよい。 ・標準文字列関数を利用すること。 (指定されたファイルとは普通の英文が書かれた.txtファイルです) 実行例 $./quiz10-2 Input file name!:sample.txt file1 open Error sample.txt $ $./quiz10-2 Input file name!:English.txt The First word = 's The Last word = yokozuna The Longest word = accomplishment. [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 12/13 10:00 [5] その他の制限:初学者向けらしい お願いします。
>>371 負の整数値ですか。確かに文字列をスタック変数に確保した場合とか、なりそうですね。
今回は違いますけど。
で、仮にバッファサイズが負で渡された場合、fgets()は何もせずに終わって欲しいような...
バッファサイズが負だとおかしくなるようなfgest()の実装があるのかな?
>>373 いや、たとえば超おせっかいなfgets()があって、バッファの領域すべてを0で初期化して
くれるとかそんなのがあればクラッシュするかなあとw
[1] 授業単元:C++入門
[2] 問題文(含コード&リンク):文字型へのポインタ変数を宣言、new演算子を使用してメモリを確保しなさい
文字列のサイズがプログラム実行時に決まるようにして、そのポインタ変数が文字列として使用できることを、
画面出力で確認できるようにしなさい
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限:12/9
[5] その他の制限:なし
http://codepad.org/5ly4iZhi ↑のプログラムを作成したんですが、文字を入力するとエラーになってしまいます
どうすれば改善できるのか教えてください
>>380 > if(Data = NULL)
if(Data == NULL) に修正
>>380 17行目でNULLを代入しちゃってるよね。
あと1文字ずつ入力したければ、getchar()を使おう。
>>380 >>382 で嘘を書いてしまった。C++のnewはNULLを返さないんだった。
if(Data == NULL)は不要です。
動画:【映画盗撮防止キャンペーン】 NO MORE 映画泥棒 (ver.2) 【HD】
自民、公明両党は7日、インターネットを通じた音楽や映像ファイルの違法ダウンロードに対し、
2年以下の懲役か200万円以下の罰金を科す法案をまとめた。民主党に協力を求め、来年の通常国会で成立を目指す。
ネット上では音楽ファイルなどの違法ダウンロードが相次ぎ、関係業界に多大な損害を与えている。
従来、違法なアップロードは著作権法で処罰対象とされていたが、ダウンロードには刑事罰が科されていなかった。
ttp://www.jiji.com/jc/c?g=pol_30&k=2011120701034 PC画面を直接録画すればおk?
∧_∧_
( ・∀|[ニ:|ol
( つ ∩ ̄
と_)_)
http://himado.in/75952
>>382-385 17行目を削除したところ動作するようになりました
それと tanaka と一回で入力したんですが
どうすればできますか
[1] 画像処理入門 [2] 問題文(含コード&リンク):OpenCVを用いて、x枚(一応与えられたのは200)の画像から それぞれの画素の輝度平均、標準偏差、中央値、最頻値を用いて画像を生成しろ [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン:Visual Studio 2010 [3.3] 言語:C [4] 期限:12/10 [5] その他の制限:なし カメラ固定の動画像から静止画を取得し、そこから背景画像を生成しろというものです 輝度平均と標準偏差での画像は作成できたのですが 中央値、最頻値での画像作成がどうしたものかわかりません よろしくお願い致します
>>388 輝度平均と標準偏差での画像作成のプログラムくらいは見せてくれないとねえ・・・
390 :
387 :2011/12/08(木) 02:06:51.07
「tanaka と一回で入力したんですが」→ ×
「tanaka と一回で入力したいんですが」→ ○ でした
>>387 の方法をおしえてもらえると嬉しいです
おねがいします
>>390 #include<iostream>
using namespace std;
int
main()
{
int Size;
char *Data;
cout << "配列のサイズを入力" << endl;
cin >> Size;
Data = new char [Size + 1];
cin >> Data;
cout << Data << endl;
delete Data;
return 0;
}
>>391 メモリリークのコードを書くぐらいならstd::stringにしときなさいな
って元からか。スマソ
>>396 日本語の読解力はどんな仕事でも必要だよ
>>395 を読んで bcc に限定した話をしていると考えるなら問題が有るな
>>317 ですが
>>327 で
#include<iostream>
#include<fstream>
#include<string>
のみを使ってプログラムを作りたいです。
どなたか時間があるときによろしくお願いします。
>>395 >> 今回は違いますけど。
>
>それは環境依存だろ、そもそもアレのコンパイルが通るかどうかも環境依存だよ
これは「スタック変数ではない」という意味で書いたんだけど... だったらOK?
で、bccでは
- (キャスト等して)intの変数に文字リテラルを渡すと負数が渡る?
- fgets()はK&R Cのように振る舞う(振る舞わさせることが出来る)?
んですか?
環境依存なのは百も承知なので、では実際にどういう環境があるのかなと
平松邦夫/民主党 大阪市役所・自治労・大阪市労働組合・日教組・大阪市教育委員会・自民党・共産党・社民党・関西電力・住友グループ ・毎日放送・毎日新聞・関西経済連合・日本原子力発電株式会社 ・ 週刊文春・週刊新潮・NHK・朝日新聞・読売新聞 ・部落解放同盟・朝鮮総連・在日本大韓民国民団・日本遊技関連事業協会・全日本遊技事業協同組合連合会・日本弁護士連合会・生活保護受給者・反日左翼・9条の会・革マル派・中核派 VS 橋下徹/維新の会 大阪市民・みんなの党・国民新党・亀井静香・石原慎太郎・東国原英夫 様子見:公明
>>398 template <typename T>
void scan_line(const string &prompt, T &x)
{
cout << prompt;
while( ! ( cin >> x ) ) {
cin.clear();
cin.ignore( 10000, '\n' );
cout << "Error:" << prompt;
}
}
>>327 は numeric_limits<streamsize>::max() によりバッファの最大サイズを取得しているけど、
十分に大きいと思われる数値を与えれば十分じゃないかなと思う
>>399 スタック・ヒープ・リテラルがアドレスの何処に配置されるかは環境依存だよって意味
> (キャスト等して)intの変数に文字リテラルを渡すと負数が渡る?
渡らなかった、リテラルは 0x400000 台のアドレスに配置されているようだ
> fgets()はK&R Cのように振る舞う(振る舞わさせることが出来る)?
質問の意味が不明だ
fgets( s, -1, stdin ) が NULL文字を読み込む事が確認できたので、K&Rスタイルに実装と推定できる
ANSIスタイルであればNULLを返すだろう
403 :
デフォルトの名無しさん :2011/12/08(木) 15:50:52.16
>>337 は仕様、動作すら確認せずに書いた産廃。
それで終わりだ。宿題スレで関係ない話してんな。
>>389 IplImage **src = 0;
IplImage *src0 = cvLoadImage("./src/000.bmp", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
cvSaveImage( "src_image.jpg", src0, 0);
if( NULL == (src = (IplImage**)malloc(IMG_NUM*sizeof(src0))) ){
printf("メモリ確保出来ず.\n");
return -1;
}
for(i=0;i<=IMG_NUM;i++){
sprintf(filepath, "./src/%03d.bmp",i);
src[i] = cvLoadImage(filepath, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
}
という感じで読み込んで
for (i = 0; i <= IMG_NUM; i++) {
cvConvertScale (src[i], tmp, 1.0, 0);
cvAcc(tmp, ave_img, NULL);
cvSquareAcc(tmp, ave2_img, NULL);
}
cvConvertScale (ave_img, ave_img, 1.0/100, 0);//平均
cvConvertScale (ave2_img, ave2_img, 1.0/100, 0);//二乗和の平均
//分散
Iplimage *dispersion = cvCreateImage(cvSize(width,height),IPL_DEPTH_32F,3);
cvMul( ave_img, ave_img, ave_img,0);
cvSub( ave2_img, ave_img, dispersion,0 );
//標準偏差
Iplimage *sd = cvCreateImage(cvSize(width,height),IPL_DEPTH_32F,3);
cvPow( dispersion, sd, 0.5 );
これで出せている…つもりです
よろしくお願い致します
標準偏差出せるならメジアンとかもできるんじゃないの…?
[1] 授業単元: プログラミングC (ポインタ、文字列) [2] 文字列を後ろから逆に表示する(例えば"ABC"を受け 取ったら"CBA"と表示する)関数 void put_rstring(const char *st) を,添字演算子[] を使わずに作成せよ [3] 環境 [3.1] OS: linux [3.2] gcc [3.3] C [4] 期限:2011/12/8 [5] 以下の実行例のように関数の動作を確認できるmain 関数も作成す ること. (実行例) 文字列を入力してください:Koudai 逆順に表示:iaduoK
[1] アルゴリズム 文字列ポインタ演習 [2] 問題文:文字列st の中に,文字c が含まれていればその文字 へのポインタを返し,含まれていなければNULL を返す 関数char *str_chr(const char *st, int c) を作成せよ.以下の実行例のように,関数の動作を確認 できるmain 関数も作成すること. 実行例 文字列str:ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 文字入力してください:X その文字はstr に含まれています。 その文字以降を表示します:XYZ 例.2 文字列str:ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 文字入力してください:3 その文字はstr に含まれていません [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン:Visual Studio 2010 [3.3] 言語:C [4] 期限:12/9 [5] その他の制限: ・ 関数str_chr は,添字演算子[] を使わずに作成すること. ・? 文字c が複数ある場合は,最も先頭側の文字c へ のポインタを返すものとする.
>>408 #include <stdio.h>
#include <string.h>
char *str_chr(const char *st, int c)
{return strchr(st, c);}
int main()
{
char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("1 文字入力してください:");
c = getchar();
p = str_chr(str, c);
if(p!=NULL){
printf("その文字はstr に含まれています。\n"
"その文字以降を表示します:%s\n", p);
}else{
printf("その文字はstr に含まれていません\n", c);
}
return 0;
>>実行とコンパイル間違えた
413 :
デフォルトの名無しさん :2011/12/08(木) 21:05:54.83
[1] 授業単元:関数とポインタ [2] 問題文(含コード&リンク): ある実数値の2乗を求める関数jijyoと、3乗を求める関数sanjyoを作成し、メイン関数から呼び出して動作を確認せよ。ただし、関数の返却値は無いものとし、引数はアドレス渡し(ポインタ)とする。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン: わかりません [3.3] 言語: C++ [4] 期限: 12/8 23:00 [5] その他の制限: 基本しかやってません
417 :
デフォルトの名無しさん :2011/12/08(木) 22:39:08.54
スレ痴
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク):メイン関数でキーボードから2つの整数値を入力し、関数sisokuenzanにて和差積商を計算するプログラムを作成せよ。 なお、関数sisokuenzanの仕様は以下のとおりとし、計算結果はメイン関数で表示するものとする。計算結果の変数は、結果をよく考えて適切な型を使うこと。 関数名: sisokuenzan 引数 :整数1: x 整数2: y 計算結果:和 wa, 差 sa,積 seki,商 syou (ただし、計算結果はポインタ) 返却値:無し(return文は無い) その他:「関数sisokuenzanが呼ばれました」と、画面に表示する。 (実行例) 整数1= 10 整数2= 3 関数sisokuenzanが呼ばれました メイン関数に戻りました 和 = 13 差 = 7 積 = 30 商 = 3.3 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2010 Express [3.3] 言語: C++ [4] 期限:できるだけ早くでお願いします [5] その他の制限:
>>402 >>403 確かにそんなに引っ張る話題でもないんで一個だけ。
fgets( s, -1, stdin ) が NULL文字を読み込む事が確認できたので、K&Rスタイルに実装と推定できる
>ANSIスタイルであればNULLを返すだろう
もしかしてK&Rに書いてあるfgets()のコードのことですか? その場合「ANSIスタイル」
というのは何なのかという疑問が...
424 :
デフォルトの名無しさん :2011/12/09(金) 01:34:38.68
427 :
426 :2011/12/09(金) 07:00:42.94
>>425 と思ったんですけど-jってprintfで表示されるようにしてたんですね^^;
ありがとうございました
[1] 授業単元:C入門 [2] 問題文(含コード&リンク):メンバとして名前(文字列)と生年月日(yyyymmdd 形式のlong 型整数)をもつ構造体friend を宣言し, friend 型構造体のオブジェクトfr を引数としてメン バの情報を"○○さんの生年月日はyyyy 年mm 月dd 日 です。" のように表示する関数 void print_friend(struct friend fr) を作成しプログラムを完成させよ 以下の実行例のように,関数の動作を確認できるmain 関数も作成すること.ただし,main 関数は以下のよう に動作するものを作成せよ。 友人の名前を入力してください:Taro 友人の生年月日(yyyymmdd) を入力してください: 19911001 Taro さんの生年月日は1991 年10 月1 日です。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:12/10 [5] ・main 関数内で,friend 型構造体のオブジェクトfr1 を初期化せずに宣言する. ・ 以下の実行例のように,fr1 のメンバの値(名前と生年月日)をユーザに入力させる.このとき,scanf関数の引数にfr1 のメンバのアドレスを用いること. ・その後,関数print_friend を呼出してfr1 の情報を表示し,終了する.
>>346 とても助かりました!ありがとうございます!
,.r.:::;;;;:ュ、 fイ´__ __ヾ {:六;;;;:ハ:;;;:カ (_ ' _^_ヽリ なんだ AKBって整形した反日朝鮮人だったのかァ ,人 l⌒l、 ブームの捏造手法が寒流と同じだけはあるな / \,ゝヽr' \ / |:| ヽ l l /´堰@ l ! |___l ノ ,イ !__,}
[1] 授業単元:プログラミング画像処理実習 [2] 問題文(含コード&リンク):画像からエッジの検出処理を行い別の画像として出力するプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C [4] 期限:2011年12月22日 23時59分まで [5] その他の制限:なし
433 :
426 :2011/12/09(金) 21:49:48.86
434 :
デフォルトの名無しさん :2011/12/10(土) 01:35:03.04
曲線をP型記述子でフーリエ変換するプログラムができずに困っています。 どなたか教えていただけないでしょうか。
ここにいる人はプログラムは書けても数学や電気回路に強いわけじゃないから式をかけ式を。
[1] 授業単元:プログラミング C言語入門 [2] 問題文(含コード&リンク):文字列st の中に,文字c が含まれていればその文字 へのポインタを返し,含まれていなければNULL を返す 関数char *str_chr(const char *st, int c) を作成せよ.以下の実行例のように,関数の動作を確認 できるmain 関数も作成すること. ただし,プログラムは以下の要件を満たすこととする. ・ 関数str_chr は,添字演算子[] を使わずに作成すること. ・文字c が複数ある場合は,最も先頭側の文字c へ のポインタを返すものとする. ・main 関数は以下に示すものを用いること.空欄は 自分で埋めること. なお,以下のmain 関数では,指定した文字が文字列中 に含まれていた場合に,文字列のその文字以降の部分を 表示するようなプログラムとしている. [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C [4] 期限:2011年12月10日 23時59分まで [5] その他の制限:なし
>>435 続き
[5]なお,以下のmain 関数では,指定した文字が文字列中
に含まれていた場合に,文字列のその文字以降の部分を
表示するようなプログラムとしている.
int main( void )
{
int ch;
char str[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *ptr;
printf("文字列str:%s\n", str);
/* 探したい文字を入力させる*/
printf("1 文字入力してください:");
ch = getchar();
/* 文字ch を探す関数を呼出す*/
ptr =
/* 文字ch が見つかればstr のその文字以降の部分
を表示*/
if ( ){
printf("その文字はstr に含まれています。\n");
printf("その文字以降を表示します:%s\n",);
}
else
printf("その文字はstr に含まれていません。\n");
return
[実行例]
文字列str:ABCDEFGHIJKLMNOPQRSTUVWXYZ
1 文字入力してください:X
その文字はstr に含まれています。
その文字以降を表示します:XYZ
よろしくお願いします
>436-437 >408
439 :
◆Z1sp.Bulpo :2011/12/11(日) 02:33:53.74
[1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): リスト構造を使用して平均を求めるプログラムの作成 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 12月14日まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
440 :
432 :2011/12/11(日) 04:03:38.57
[1] 数値解析 [2] 123 456 789.012 345.678 901 234 567.890 123.456 789 12 345.678 901.234 567 890 123.456 789.012 ・・・ のような適当な値のテキストファイル(q.txt)があり(50×4)、これらのうち3列目と4列目でそれぞれの差を取り、 以下のような新しいテキストファイル(a.txt)に出力せよ。 -221.122 -222.222 -222.212 777.778 -222.222 -112.222 ・・・ [3] 環境 [3.1] Windows [3.2] VS2010Express [3.3] C [4] 2011/12/12まで [5] 特に制限はありません。 流れとしてq.txtを読み込み、3,4列目を二次元配列に入れ、それぞれ計算させてa.txtを出力すると思いますが、 入出力はまだ理解できますが、配列に入れるのとそれらの配列を用いて計算させる辺りがあやふやです。 御教示お願いします。
>>441 >のような適当な値のテキストファイル(q.txt)
のテキストを出してくれ
いちいち作るのめんどくせ
[1] 授業単元: アルゴリズム(構造体・ポインタ) [2] 問題文(含コード&リンク): メンバとして映画のタイトル(文字列)と公開年(int 型整数)をもつ構造体movie を宣言し,movie 型構造 体へのポインタmv と映画タイトルの文字列str を引数 としてタイトルを書きかえる関数 void set_title(struct movie *mv, char str[]) および,movie 型構造体へのポインタmv と公開年y を 引数として公開年を書きかえる関数 void set_year(struct movie *mv, int y) を作成しプログラムを完成させる 実行例. タイトル:HAYABUSA 公開年:2011 データを書きかえました。 タイトル:October Sky 公開年:1999 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 12月11日まで
>>444 続き
[5] その他の制限:以下の実行例のように,関数の動作を確認できるmain
関数も作成すること.ただし,main 関数は以下のよう
に動作するものを作成すること
・main 関数内で,タイトルをHAYABUSA,公開年
を2011 として初期化したmovie 型構造体のオブジェクトmovie1 を宣言する
・以下の実行例のように,movie1 のメンバの値を表
示した後,関数set_title と関数set_year を用
いて別のタイトルと公開年の値に変更する.変更す
るタイトルと公開年は適当な値を用いてよい(ユー
ザに入力させる必要はない
・その後もう一度movie1 のメンバの値を表示して終
了する.
お願いします
宿題の名を借りたアンケだな・・・センセはおもしろい映画を見たいようだw ちょっとまってね、今作ってみるわ。
#include <stdio.h> #include <string.h> #define TITLESIZE 100 struct movie{char title[TITLESIZE];int year;}; void set_title(struct movie *mv, char str[]){strcpy(mv->title, str);} void set_year(struct movie *mv, int y){mv->year = y;} void print_movie(struct movie *mv){printf("タイトル:%s 公開年:%d\n", mv->title, mv->year);} int main(void){struct movie movie1 = {"HAYABUSA", 2011};print_movie(&movie1); set_title(&movie1, "WarGames");set_year(&movie1, 1983); /* ←ネタが思いつかんかった */ printf("書き換えました\n");print_movie(&movie1);return 0;}
/*
>>441 */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double a, b, c, d, oldc, oldd;
FILE *fin = fopen("q.txt", "r");
FILE *fout = fopen("a.txt", "w");
if (fin == NULL || fout == NULL) {
fprintf(stderr, "ファイルが開けないよ\n");
exit(2);
}
fscanf(fin, "%lf %lf %lf %lf", &a, &b, &oldc, &oldd);
while (fscanf(fin, "%lf %lf %lf %lf", &a, &b, &c, &d) == 4) {
fprintf(fout, "%lf %lf\n", c - oldc, d - oldd); /* ←自分で調整してちょ */
oldc = c;
oldd = d;
}
fclose(fin);
fclose(fout);
return 0;
}
あ、fprintf()ん中の%lfは%fだったわ。。。orz
pgm形式ですか・・・テキストファイルで読み込めます? 先頭の4行は次のような、形でしょうか。 ---次の行から P1 # comment 100 200 256 ---上の行まで。 pgmファイルの読み書き習っているなら、そのプログラムを提示してくれれば組める。
そういう時はやらなければいいんだよ。やれないってことだから。
どうせまともなのが出来るわけないんだから printf("Hello World\n"); でいいんじゃね?
とりあえず、P2を読めるプログラム今書いてるけどねー。 標準画像のlenaさんてプレイボーイのグラビアだったのねー・・・。
[1] 授業単元:配列とポインタ [2] 問題文(含コード&リンク):1,2,3,4,5,6...と続くテキストファイルを読み込み、8×8の2次元配列で表し、別のテキストファイルに結果を書き込みなさい。ただし、読み込むファイルのデータの数が64個に満たない場合は、0を代入しなさい。 [3] 環境 [3.1] OS: linux debian [3.2] コンパイラ名とバージョン: gcc4.3.2 [3.3] 言語:C言語 [4] 期限: 12月12日 14時 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
460 :
458 :2011/12/11(日) 20:14:13.09
>>459 Error: 'for' loop initial declaration used outside c99 mode
というエラーがでます。
461 :
466 :2011/12/11(日) 20:36:43.47
[1]再起的関数 [2]10×10の二次元配列を用意し、□か■を適当に格納し■が上下左右に連続してマークされた要素の集まりを島と呼び島の個数を数える(関数の再起処理を使用) 3] 環境 [3.1] Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 2011年12月11日24時 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
>>460 C99より前のバージョンのC言語は、ローカル変数の宣言は全てコードブロックの一番前で
行わなければならないからね。
for ( int j = 0; j < 8; j++ ){
の部分を
int j;
for ( j = 0; j < 8; j++ ){
にすればいいんじゃないかな?
ついでにFILE *fp = fopen(in_file, "rb");の行も、gets(in_file);の前にFILE *fp;をおいて、
もともとの場所はfp = fopen(in_file,"rb");に置き換える必要もあるし…。
それかC99モードでコンパイルするのが一番いいかもしれないね。どうすればいいかは、
それくらい調べた方がいいかも。
463 :
459 :2011/12/11(日) 20:51:24.48
464 :
458 :2011/12/11(日) 21:00:40.66
>>463 ありがとうございます。
-std=c99試しましたがまだエラーがでます。
465 :
458 :2011/12/11(日) 21:01:22.26
>>462 ありがとうございます。
教えていただいた通り、書き換えましたがコンパイルできません。
467 :
458 :2011/12/11(日) 21:11:24.58
>>466 In function 'main'
warning: the `gets' function is dangerous and should not be used
です。
警告ですな。まー宿題レベルなら問題ない。 gets()は(配列の長さを知らないでメモリを壊すので)危ないから、使わないでねというやつ。
471 :
466 :2011/12/11(日) 21:32:31.82
[1]再起的関数 [2]10×10の二次元配列を用意し、□か■を適当に格納し■が上下左右に連続してマークされた要素の集まりを島と呼び島の個数を数える(関数の再起処理を使用) 3] 環境 [3.1] Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 2011年12月11日24時 [5] その他の制限: 標準ライブラリは使ってはいけない,再起関数までしか習っていない、
472 :
デフォルトの名無しさん :2011/12/11(日) 21:32:36.14
【質問テンプレ】 [1] 授業単元:C言語 [2] 問題文(含コード&リンク):textfileの1行を読み込み、1次元配列にバッファリングしたものの1部をスペースが出るまで 別の二次元配列に格納せよ。 テキストファイルに書かれている内容は AA 1,2,3,4,5; ・・・ です。 のようにAAと数字の間は1スペース開いています。 AA 2,3,4,5;の1行だけをバッファリングすることが できました。AAの文字のみを別の二次元配列に格納するにはどうすればよいか? [3] 環境 [3.1] OS: (Windows/Linux/等々)windows [3.2] コンパイラ名とバージョン:制限なし [3.3] 言語: (C/C++/どちらでも可 のいずれか)C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2011年12月15日まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) なし。 1次元配列に格納するところまではできたのですが、そこから先に進めないので、 お願いします。
473 :
458 :2011/12/11(日) 21:35:20.09
>>469 warningは出ますが実行ファイルは出来たので、./で実行しましたが何も起きません。
gets()を使わない方法を知っていたら教えてくれませんか?
474 :
466 :2011/12/11(日) 21:36:24.86
1]再起的関数 [2]10×10の二次元配列を用意し、□か■を適当に格納し■が上下左右に連続してマークされた要素の集まりを島と呼び島の個数を数える(関数の再起処理を使用) #include<iostream> #include<string> using namespace std; const int size_y=10; const int size_x=10; ここにプログラムを書く int main() { string map[size_y][size_x]={ {" "," "," "," "," ","#"," "," ","#","#"}, {" "," "," "," "," "," ","#"," ","#","#"}, {" "," "," ","#","#","#"," ","#"," "," "}, {" "," ","#","#"," ","#"," "," "," "," "}, {" "," "," ","#"," "," ","#"," "," "," "}, {" "," "," "," "," "," "," "," "," ","#"}, {" "," "," "," ","#"," "," "," "," "," "}, {" "," ","#"," "," ","#"," "," "," ","#"}, {" "," ","#","#"," ","#"," "," "," ","#"}, {"#"," "," "," "," "," "," "," "," "," "}}; print_map(map); ここにプログラムを書く return 0; } ここにプログラムを書く 3] 環境 [3.1] Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 2011年12月11日24時 [5] その他の制限: 標準ライブラリは使ってはいけない,再起関数までしか習っていない、
>>472 2度手間になるから、できたところまでのソースくださいな
>>473 実行時に説明文とか出力してないから実行しても何も動作してないように見えるが、
入力ファイル エンター
出力ファイル エンター
ってすれば最後まで処理走るよ、
文字列入力使わないってニュアンスでgets()以外の方法ってんなら、
後はmain()の引数argvにファイル名を持たせるとか、いっその事ファイル名もコードに決め打ちとか
まあ自分でprintf文で説明文埋め込んだりして使用者の事考えるのもいい勉強になるよ
>>473 gets(in_file)
↓
fgets(in_file, sizeof(in_file), stdin)
・・・まあテキトーにコト書いてて、試してないが。
478 :
458 :2011/12/11(日) 21:59:31.11
>>476 ありがとうございます。
10,15,20...とかだと上手く結果が出ません。
また、新しいファイルに書き込まれるものが、1,2,3,4,5,6,...とただ続くものになってしまいます。
新しいファイルには8×8の配列で書き込んで欲しかったのですが。
>>474 おー、AOJでやったなぁ…どれどれ、問題0067だな( ´∀`)
>[5] その他の制限: 標準ライブラリは使ってはいけない
むちゃいいうなよ(´・ω・`)
480 :
466 :2011/12/11(日) 22:12:46.41
>>479 すいません標準ライブライの意味がよくわかりません。
ここにプログラムを書くの所を埋めるかんじです。
481 :
432 :2011/12/11(日) 22:18:52.45
>>451 それがpgmファイルの読み書きは習ってないんです
483 :
472 :2011/12/11(日) 22:41:16.66
#include<stdio.h> #include <string.h> FILE *fp; char buffer[1000]; char name[100][10]; char list[50]; int b,n1,n2,a1,a2,list; int main(void){ if((fp=fopen("text.txt","r"))==NULL){ printf("error!\n"); exit(1); } n1=0; n2=b; while((buffer[b]=getc(fp))!=';'){ printf("%s",buffer); } for(b=0;b<1000;b++){ if(buffer[b]==' '){ b=b+1; } else{ strcpy(name[n1][n2],buffer[b]); }} printf("name:%s",name); fclose(fp); return 0; }
484 :
479 :2011/12/11(日) 22:51:12.74
/*
>>472 >>483 できるだけ崩さずにやってみた */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
FILE *fp;
char buffer[1000];
char name[100][10];
int n1;
int main(void){
int i;
if((fp=fopen("text.txt","r"))==NULL){
printf("error!\n");
exit(1);
}
for (n1 = 0; fgets(buffer, sizeof(buffer), fp); n1++)
sscanf(buffer, "%s", name[n1]);
for (i = 0; i < n1; i++)
printf("name:%s\n",name[i]);
fclose(fp);
return 0;
}
486 :
472 :2011/12/11(日) 23:15:07.91
ありがとうございます。
レナたん
http://www.lenna.org/full/l_hires.jpg 「Muirheadは、100ライン/インチの固定解像度を持っていたが、彼らは512×512イメージを望んだた
め、走査を画像のトップ5.12インチに制限したので、ちょうどモデルの肩で画像が切れてしまったとい
うわけさ」
「1997年のSociety for Imaging Science and Technology 50周年記念会議にゲストとして招かれた。
彼女はサインをし、写真撮影に応じ、自己紹介をするなど非常に多忙であった。」
「現在ストックホルム近郊にすみ、政府所有の酒専売店で働いている。彼女は結婚しており、3人の子
供たちがいる。」
C++で、ファイルオープン使って画像ファイルを読み込むことはできますか? コンソールアプリケーションで書いているんですが、無理ですかね??
>>488 できるよ
jpeg とかは自分でデコードしようとすると大変だけど
ああ、lennaタンか。lenaと勘違いをしてた(^^;; 画像ファイルを扱うのは既存のライブラリ使うのが楽そうですけどねぇ。 Cだったら日本語の説明でImageMagicの使い方とかありそう。 とか言いつつ、PNMのP2とP5の読み込み「だけ」できるの作ったけど。 エラーチェックが酷いので晒せないわ。 暇つぶしになりました。おやすみー。
491 :
472 :2011/12/12(月) 00:59:22.29
472のものですが、問題はname[n1][n2]という二次元配列に格納するプログラム です。 name[n1]は1次元配列ではありませんか?
>>490 もしかして16時ごろからやってた人?
まぁ、勉強になったならいいか
>>491 for(i...の前にさ
printf("%c\n", name[0][0]);
ってのつけたしてみるとよいかもですね。
2次元配列中にちゃんと最初の文字入ってるでしょ?
494 :
472 :2011/12/12(月) 01:21:25.52
ありました。 ありがとうございます。
496 :
495 :2011/12/12(月) 05:12:20.15
補足:一連の書き込みの人とは別人ですのであしからず。
497 :
495 :2011/12/12(月) 06:19:15.57
民主党のマニフェスト 子供手当満額、公務員制度改革、最低時給1000円、消費税据置、高速道路無料化 小沢一郎 総理大臣なら全部やってくれるんじゃ!?!
で、それがどうCの宿題として出題されたんだ?
過去の発言、撤回の履歴から、今喋ってる事の信頼性を推定せよ、とかだったら有るかも。 政治学、社会学あたりかな。
[1] 授業単元:配列とポインタ(アルゴリズム) [2] 問題文(含コード&リンク):以下の実行例のように,文字列を入力すると,その前 後に"を付けた文字列を生成するプログラムを,ライブ ラリ関数strcpy とstrcat を用いて作成せよ.ただし, プログラムは以下の要件を満たすこととする ・ユーザに入力させる文字列を格納する配列をstr1[],前後に"を付けた文字列のための配列をstr2[] とする. ・ユーザに入力させる文字列は30 字までとする。 ・配列str2[] は初期化せずに宣言し,ライブラリ関数strcpy とstrcat を使って(添字演算子[] を使わずに)前後に"を付けた文字列を生成すること. 実行例. 文字列を入力してください:Tokyo 文字列の前後に"を付けました。 str2:"Tokyo" [3.1] OS: linux debian [3.2] コンパイラ名とバージョン: gcc4.3.2 [3.3] 言語:C言語 [4] 期限: 12月13日 14時 [5] その他の制限:
char str1[30+1]; char str2[30+1+2]; /* str1 入力処理略 */ strcpy(str2, "\""); strcat(str2, str1); strcat(str2, "\""); printf("文字列の前後に\"を付けました。\nstr2:%s\n", str2);
504 :
デフォルトの名無しさん :2011/12/12(月) 19:05:02.15
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 0から16までの整数を2進数変数で表記した時, 2^2 の桁の値を表示するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限: 特になし あまり難しくない表記で
printf("0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0\n");
>>504 ^ってCでは排他的論理和だが、ひょっとして意図は階乗?
507 :
デフォルトの名無しさん :2011/12/12(月) 19:26:49.39
>>504 ,507
#include <stdio.h>
int
main()
{
int i;
printf("元の数¥t2^2 の桁の値¥n");
for(i=0; i<16; i++)
printf("%d¥t%d¥n",i,(i/4)%2);
return 0;
}
509 :
デフォルトの名無しさん :2011/12/12(月) 19:37:04.18
【質問テンプレ】
[1] 授業単元:バケツソート(アルゴリズム)
[2] 問題文(含コード&リンク):
http://codepad.org/04CeYgrq [3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 12月15日
[5] その他の制限: リンク先のコードの訂正をお願いします。
511>> はい。 正の整数のみで4桁目は1~9で始まる仮定でお願いします。
>>501 ですポインタでプログラム作成してください
おねがいします。
>>501 ,513
>>502 ではないが、mainを付加した。
>>501 ですポインタでプログラム作成してください
strcpy, strcatを使ったら、ポインターは不要だが?
#include <stdio.h>
#include <string.h>
int
main()
{
char str1[30+1];
char str2[30+1+2];
printf("文字列を入力してください:");
scanf("%s",str1);
strcpy(str2, "¥"");
strcat(str2, str1);
strcat(str2, "¥"");
printf("文字列の前後に¥"を付けました。¥nstr2:%s¥n", str2);
return 0;
}
517 :
デフォルトの名無しさん :2011/12/12(月) 23:52:37.86
[1] 授業単元:誤差
[2] 問題文(含コード&リンク):
http://ideone.com/hdkMd 問題1と問題2の誤差は、それぞれ 桁あふれ、打切り誤差、丸め誤差、桁落ち、情報落ち
のうちどれか。
また、問題2については誤差がない場合に本来期待される演算結果との比較も行え。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
^がベキ乗とか!が階乗とかってBASIC文化っぽくて好きじゃない
>>517 オーバーフロー、アンダーフロー
「桁あふれ」でいいんじゃね?
signed char v;
unsigned char w;
525 :
523 :2011/12/13(火) 04:13:53.98
途中で送っちゃった 正しい結果との比較は signed char v; unsigned char w; をint型で書き換えること。 なんか問題の意図がよくわからんなあ。
[1] 授業単元:プログラミング言語T [2] 問題文(含コード&リンク):m行n列のテキストファイル(1.txt)をそれぞれ二次元配列に入れ、その配列から新しいテキストファイル(2.txt)に1.txtと同じ内容を出力するようなプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC 2008 [3.3] 言語:C [4] 期限:2011年12月14日 [5] その他の制限:制御文・入出力・配列・ポインタ程度しか習っていないため、 複雑な演算子や構造体などを用いないシンプルな記述でお願いします。
527 :
デフォルトの名無しさん :2011/12/14(水) 01:12:32.19
>>525 wの誤差がない場合の本来の値は ー100,ー200,ー300ですか?
>>526 m,nは画面から入力?
テキストの最大長は?
>>526 何時まで?配列は整数? 区切り文字は? 配列の幅は固定?
仕様適当で「シンプルに」とか自分の要求まで入れて舐めてるの?
>>529 > 配列は整数? 区切り文字は?
この疑問が出る時点で想定してる内容と異なるものだろうと予測。
多分ただのテキストファイルだよ。
>>530 何言ってるんだお前は。デリミタ無かったらバイナリだろ。
空白区切りもただのテキスト?
>>526 n文字の文字列がm個?
それとも、ある程度の長さの文字列がm*n個?
>>514 >>520 回答ありがとうございました。
剰余算とポインタがいまひとつわかりませんが、
自分なりに考えて見ます。
>>535 >剰余算とポインタがいまひとつわかりませんが、
例:数値4567から、
1回目:7を得たい ← (4567/1)%10 = 4567%10 = 7
2回目:6を得たい ← (4567/10)%10 = 456%10 = 6
3回目:5を得たい ← (4567/100)%10 = 45%10 = 5
4回目:4を得たい ← (4567/1000)%10 = 4%10 = 4
上記式中の、/1、/10、/100、/1000を、/xとして
int x=1;
ループ{
...
x*=10;
....
}
>>535 >ポインタ
520で、Q[i]は
Q[i][0] ← R[i}の代わり。
Q[i][1〜31]にはデータが入る。
QをLIFOにしたため、F[i]が不要になった。
>>532 >if( x < n ){ fprintf(fp," ");
この文、意図どおりに動いているか? x < n - 1 では?
>return (-1);
なぜ括弧でくくる?
>fprintf(fp," ");
>fprintf(fp,"\n");
fputc() を使いたい。
>>538 >>if( x < n ){ fprintf(fp," ");
>この文、意図どおりに動いているか? x < n - 1 では?
これは確かにそうですね。修正しました。どうもです。
http://ideone.com/L3AXc >なぜ括弧でくくる?
見やすいと思いまして。
>fputc() を使いたい。
そうですか。
>>539 むしろその掲示板ってどっからたどり着くの?
>>388 をお願いできませんでしょうか
分散などはOpenCV自体の関数だけで事足りるので大丈夫だったのですが
直接画素を触らなければならない最頻値などがどうにもうまくいきません
>>543 はい、その通りです
予めビットマップとして取得してあります
545 :
デフォルトの名無しさん :2011/12/14(水) 23:48:10.90
>>545 アクセスが許可されていません。
以下の理由が考えられます。
・外部から直接呼び出された場合
・リファラーが返されていない場合
・indexファイルが存在していない場合
・適切なパーミッション(属性)が与えられていない場合
9秒後に、自動的に 無料でEタウン に戻ります。
Sorry, Access is not admitted.
The following reasons are thought about.
.When there is not an index file
.When it was called directly by the outside
.When appropriate access permission (an attribute) is not given
法政のやつかな 申し訳ないと思うならそれくらい手打ちしたらどうだ
550 :
545 :2011/12/15(木) 00:32:34.16
pdfの中身を打つと
元金?20000
回数(月数)?15
利率(%)?5
回数 支 払 額 利 息 残 高
1 14171 833 186662
2 14110 777 173329
3
4
5
6
7 ・ ・ ・
8 ・ ・ ・
9 ・ ・ ・
10
11
12
13
14
15 0
合計 206659 6659
続行するには何かキーを押してください
こんな感じのプログラムを作る課題がでました
.
>>548 法政です!びっくりしました
>>544 ゴリ押しでならどういう手順の処理かは分かるけど、
さすがにCは面倒すぎだわ。
総相 川端達夫 帰化人。 在日韓国人法的地位向上議員連盟 法相 平岡秀夫 帰化人。 在日韓国人法的地位向上議員連盟 文科相 中川正春 在日韓国人法的地位向上議員連盟 厚労相 小宮山洋子 帰化人。 在日韓国人法的地位向上議員連盟 自身の選挙区の太平建設と談合 国家戦略相 古川元久 パチンコ協会政治アドバイザー
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 氏名、体重、身長の入力を受けつけ、ファイル に書き込むプログラムをかけ。 [3] 環境 [3.1] Windows [3.2] visual C++2005 [3.3] C [4] 2011/12/22
適当に決めてもらっていいです
562 :
デフォルトの名無しさん :2011/12/16(金) 11:15:59.57
[1] プログラミング実習応用 [2] ファイル"tmp.csv"を入力ファイルとして、座標(x,y)の組を終端まで読み込み、 x,yそれぞれの平均値(重心)を計算して、画面上に表示するプログラムを作成せよ □"tmp.csv"は「関数y=x^3-xのグラフを描くため、定義域[-2,2]に対するyの値を0.1刻みで計算し、 結果をファイルに出力する」というプログラムで作ったファイルで、もう用意してあります。 □コンパイラの標準外の仕様による異常終了を避けるため、変数の宣言部分にダミーの変数を追加する。例えば、"double dummy=0.0;"(変数名や値は変えてよい) [3] 環境 [3.1] Windows7 [3.2] VC2010 [3.3] C [4] 2011年12月16日22:00まで よろしくお願いします
VC2010にそんなバグがあんの?
>562 tmp.csvのうpよろ。
異常終了の原因は 配列の領域外をアクセスしたか 初期化していないポインタを使ってるんだろう
誰か俺にダミー変数の必要性を教えてくれ
>>566 ソースコードをパクられても決まった手順、コンパイラ、オプションでないと使えないようにできる
568 :
>>562 :2011/12/16(金) 20:53:12.61
>>564 遅れてすいません
多少期限すぎても大丈夫です
あと//で軽い説明・解説つけてくれると嬉しいです
#include<stdio.h>
double f(double x){
return x*x*x - x;
}
int main(){
FILE *fp;
double x;
fp = fopen("tmp.csv","w");
if (fp == NULL){
printf("File creation error.\n");
return -1;
}
for (x=-2.0; x<=2.0; x+=0.1){
fprintf(fp, "%lg,%lg\n",x,f(x));
}
fclose(fp);
return 0;
}
>>568 > コンパイラの標準外の仕様による異常終了
どゆこと?
#include<stdio.h>
int main(){
FILE *fp;
int count = 0;
double sum[2] = {0,0}, value[2] = {0,0};
fp = fopen("tmp.csv","r");
if (fp == NULL){
printf("File open error.\n");
return -1;
}
while( fscanf(fp,"%lg,%lg\n",&value[0],&value[1]) == 2 ){
sum[0] = sum[0] + value[0];
sum[1] = sum[1] + value[1];
count++;
}
printf("%lg,%lg\n",sum[0]/count,sum[1]/count);
}
fclose(fp);
return 0;
}
括弧多かった。 int main(){ FILE *fp; int count = 0; double sum[2] = {0,0}, value[2] = {0,0}; fp = fopen("tmp.csv","r"); if (fp == NULL){ printf("File open error.\n"); return -1; } while( fscanf(fp,"%lg,%lg\n",&value[0],&value[1]) == 2 ){ sum[0] = sum[0] + value[0]; sum[1] = sum[1] + value[1]; count++; } fclose(fp); printf("%lg,%lg\n",sum[0]/count,sum[1]/count); return 0; }
>568 俺の環境だとx=2のときの出力がないから、 #define EPS 1e-9 とかして、 for(x=-2.0-EPS; x<=2.0+EPS; x+=0.1) ってやった方がいいんじゃないかなあ。 最善策かどうかは分かんないけど。
572 :
デフォルトの名無しさん :2011/12/16(金) 22:12:52.04
>>569 ありがとうございます
多分それはあんま関係ないです…
重心って0,0じゃなくてもいいのですか?
>>571 ループさせたい回数が決まってるなら普通は int を使う
574 :
デフォルトの名無しさん :2011/12/16(金) 22:19:53.18
>>571 今みたら俺がつくったtmpのエクセルにもX=2がありませんでした
でも俺のエクセルでもX=2がでないってことは俺のもそういう仕様ってことですか?
575 :
571 :2011/12/16(金) 22:26:22.39
>574 いや、>573が良いことを言ってる。 #include<stdio.h> double f(double x){ return x*x*x - x; } int main(){ FILE *fp; int xx; fp = fopen("tmp.csv", "w"); if(fp == NULL) { printf("File creation error.\n"); return -1; } for(xx=-20; xx<=20; xx++) { fprintf(fp, "%lg,%lg\n", xx/10., f(xx/10.)); } fclose(fp); return 0; }
576 :
デフォルトの名無しさん :2011/12/16(金) 22:45:45.98
ありがとうございました(^-^)
>>560 ありがとうございます、非常に助かります
こういう書き方をしても問題無いでしょうか? if(num>0 && Aray[num-1]=="hoge") もしnumが0だった場合Aray[num-1]は存在しないのですが。
>>578 1.num>0 を先にチェックするから概ねokだが念のため上限チェックもした方がいい。
2.Aray[num-1]=="hoge" ではなく、strcmpな。
3.コンパイルエラーが無いソースで質問してくれ。
#include <stdio.h>
#include <string.h>
int main(){
int num = 0;
char Aray[10][10];
if (num > 0 && num < 10 && strcmp(Aray[num - 1], "hoge")) {
printf("%p¥n", Aray[0]);
printf("%p¥n", Aray[-1]);
}
return 0;
}
C++の string なんじゃねぇの?
>>582 それか、(めったにないけど) ポインタ値そのものを比較したいのかもしれない。
有り得んわ、"hoge" のアドレスには何の意味も無いもん
>>584 ポインタ値の比較は普通にやる事だし、
ポインタと文字列リテラルの比較はありえない。
コンパイラにリテラルがまとめられて同じアドレスになるのを確かめるプログラムかもしれないだろ
全部習っててワロタ 日本語が理解できなくて困ってんのかな
590 :
589 :2011/12/17(土) 16:11:59.94
>>590 設問1-1のプログラム例11.3.1の方もお願いします。
592 :
589 :2011/12/17(土) 17:41:35.98
やめちまえ
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク):0.123,1,12,150...と続く「1.txt」と6,13,25,10...と続く「2.txt」がある。 1.txtの数値を2.txtの数値で割り、小数点第一位で切り捨てし、3.txtに結果を書き込むプログラムを作りなさい。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc4.3.2 [3.3] 言語: C言語のみ [4] 期限: 12月19日14時 [5] その他の制限: 特にありません。
>594 0割りの考慮は要る?
596 :
594 :2011/12/17(土) 18:21:58.53
>>595 すみません。
0割りの考慮って何ですか?
>>587 そういうのって割りと何度か確かめるよなw
>>594 あのな数値を0でわれば∞になるだろ?
知らんのか?
高校で習ったろ?
>>599 >あのな数値を0でわれば∞になるだろ?
ならないし。
0で割った解は定義できない C言語的には例えば浮動小数点ならNaNか無限大の特殊な数になる
>あのな数値を0でわれば∞になるだろ? さすがIT土方wwwwwwwwwwwwww
603 :
599 :2011/12/17(土) 20:36:31.61
>>600 数学的には∞として、扱うだろ
1/0.1=10 1/0.01=100 1/0.001=1000 ・・・
x/0 ≒ ∞
>>603 扱わない。
0×a = 1 をみたす a は「存在しない」というのが正確だ。
数列の極限の状態をもって、実存するひとつの数であるかのように扱ったり代表させたりすることは、「普通は」しない。
ε-δでぐぐれ。
605 :
599 :2011/12/17(土) 21:22:55.99
>>604 ググってみました。
なるほどね。
ε-δ 論法なんて、三流大学の電気電子
工学科では、おじさん習わなかった。
数学、物理がすきなおじさんには、良いことを
教えてもらった。
0除算が数学的に未定義なのは大学出てるならまず知ってる事。 ただ基本的にプログラミングでは無限大って考えでいい。 型安全?の実装的にInifinityで扱う処理系もあるから。
例えば?
>>606 >ただ基本的にプログラミングでは無限大って考えでいい。
だめだろ。
>型安全?の実装的にInifinityで扱う処理系もあるから。
浮動小数点はいざ知らず、整数で無限大なんて扱える処理系あるのか?
>>608 こういうJavaしか知らない馬鹿がよく釣れます。
まさかこのスレで JavaScript キリ! なんてレス返す馬鹿がいるとは思わなかったよ。
>>611 ほらねw反例を提示できたのに馬鹿にするw
その程度の知識なんですよお前らなんてw
はいはい、わかったから巣に帰れよ。
浮動小数点数演算だと無限大になるよって言ってる時点で、 本来はおかしいことだって気づけ。
そんなもんとうにわかってると思うが、いまさらなに言ってるんだ?
人を馬鹿にしてんだからこっちも馬鹿にするね。 JavaScriptすら知らない馬鹿w
どなたか
>>588 の設問1-1のプログラム例11.3.1の方をお願いします。
windowsなら0除算はハードウェア例外で落ちるだろ
620 :
599 :2011/12/18(日) 03:06:36.68
>>588 確認て言っても、イニシャライズされてないものを
扱うとデバッグでエラーでるからな〜・・・
621 :
594 :2011/12/18(日) 03:44:24.98
遅くなってすみません。 1÷0は0でおねがいします。
>>603 極限としてはそう。
高校数学だけど、x->+0 x->-0という表記に記憶は?
ただし、0で割ることはアウト。これはイコールじゃないんよ。
623 :
599 :2011/12/18(日) 07:39:30.12
>>622 あー、あったねプラス側からとマイナス側からとのね
おじさん34歳だから、だいぶわすれてんだよ
>>623 34でおじさんといわれてもこまってしまうのですが、はっ、hexですか‥‥
[1] 授業単元:アルゴリズム(構造体) [2] 問題文(含コード&リンク):メンバとして学籍番号("C0110999"のような文字列) ,5 科目の点数(int 型整数の配列) ,平均点(double 型)をもつ構造体score を宣言し,score 型 構造体へのポインタsc を引数としてメンバの値を設定する関数void set_score_and_calc_ave(struct score *sc)を作成しプログラムを完成させよ。 ただし,構造体score と関数set_score_and_calc_ave については以下の要件を満たようにせよ。 [以下の要件] ・構造体の宣言において,5 科目の点数のメンバは5つのメンバを用意するのではなく,1 つのint 型配列とすること。 ・平均点のメンバについては,入力された5 科目の点数から関数set_score_and_calc_ave 内で平均点を計算して設定すること ・関数set_score_and_calc_ave 内で,ユーザに学籍番号と5 科目の点数を入力させること.その際,0〜100 の範囲の点数が入力されたかどうかのチェックも行わせる。 以下の実行例のように関数の動作を確認できるmain関数も作成せよ [実行例]: 学籍番号を入力してください:A12557 5 科目の点数(0〜100)を入力してください。 科目1 の点数:101 0 以上100 以下の点数を入力してください:-1 0 以上100 以下の点数を入力してください:0 科目2 の点数:100 科目3 の点数:88 科目4 の点数:77 科目5 の点数:66 データを設定しました。 学籍番号:A12557 平均点:66.2 点 科目1: 0 点 科目2:100 点 科目3: 88 点 科目4: 77 点 科目5: 66 点
>>625 続き
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2011年12月19日18:00まで
[5] その他の制限:できれば高度な記述ではなく簡単な記述をしていただけたら有難いです平均点のメンバについては,入力された5 科目の
点数から関数set_score_and_calc_ave 内で平均
点を計算して設定すること
627 :
599 :2011/12/18(日) 09:33:08.54
>>625 の問題
誰かやってやれよ
しょっちゅう名前と五科目の点数と平均関係の
問題見るし、もう俺何回もこの関係のやつ
アップしたし。
めんどくせ
>>616 >JavaScriptすら知らない馬鹿w
かわいそうに…
知っててもスレ違いのところには書かないという、普通の対応もできないんだな。
630 :
デフォルトの名無しさん :2011/12/18(日) 11:01:22.58
>>625 void set_score_and_calc_ave(struct score *sc, int* ponits) じゃないのか?
関数名から推測しただけだけど
7月の段階で民主党が2兆円の復興予算を組んだとき 自民党が要請した復興予算は累計17兆円 自民党の17兆が7月時点でに決定されていたのなら 今の日本はもう少し違って居た筈だ ちなみに関東大震災のときは復興予算として現在の価値にして150兆円以上を組んでいた。 この事実を知れば、予算の規模の小ささ、ましてや増税なんて奇知涯にも程があると思わざる負えない。
で、それがどうC/C++の宿題として出されたんだよ
634 :
594 :2011/12/18(日) 13:48:10.82
>>594 じゃぁ、その1.txtと2.txtを作って。
話はそれからだ。
636 :
594 :2011/12/18(日) 14:57:46.17
>>594 >>636 ウィルスバスタークラウド2012が
「このページは見んな」ってブロックした。
まともなところに上げなさい。
638 :
594 :2011/12/18(日) 15:09:26.88
>>637 テンプレに載ってたところなんですけど、他にどこがいいんでしょうか?
641 :
594 :2011/12/18(日) 15:20:07.79
645 :
622 :2011/12/18(日) 15:52:09.65
647 :
646 :2011/12/18(日) 16:26:49.70
648 :
594 :2011/12/18(日) 16:49:59.57
>>646 ありがとうございます。
すみませんが、1.txt 2.txt 3.txtなど読み込み、書きこみファイルを自分で自由に選択して使えるようにしてくれませんか?
>648 >1を100回読め。
650 :
646 :2011/12/18(日) 17:19:40.44
651 :
594 :2011/12/18(日) 18:17:09.69
>>625 ですもう少し
簡単なソースコードお願いします
スミマセン作ってもらったのに
655 :
622 :2011/12/18(日) 19:32:41.70
宿題の回答をするということを理解していないよね
ガン無視よりはマシだけど、仕様を満たせない時点で意味はないな。
いや、ガン無視の方がマシ。 あれを読まされることはデメリット
自分が作りますって流れにしておいて、途中で投げ出す奴が一番最悪。 あいつも完全に自己愛だわ。
それも自己愛なん?ただのいたずらか、説明することによって理解するということを期待したレスかと思っていた。 自己愛って言葉はこのスレで恐ろしいほどの回数見たけどよくわからないまま。
>>659 自分も含め自己愛という言葉をレッテル張りに使う奴は自己愛。
軽い気持ちで調べるのはやめとけ。まじめな奴ほど精神病むから。
責任云々が間違ってるんよ、 問題が出てきてやりたい奴がやるってスタイルでOK
基本はそれでいいと思うけど、 裏に同時並行で作ってる奴がいるかもしれないって事は考えてほしい。
>>662 別に複数が作ってたからってそれぞれが回答して問題ないし、私に限っていえば複数の解が出てくるほうが楽しいのですが。
なるほどね。その場のコンセンサスなんて考えるなと。 そりゃ仕様が満たせないわけだ。
>>665 え?どの仕様が満たせてなかったのですか?具体的に。
>その場のコンセンサスなんて考えるなと。
先に解けた人がどんどんコードを提示すればいいだけだと思いますが。
>>666 まじめにレスしようと推敲してたけど、
会話不能になるのが目に見えてるのでこれで終わりね。
>>667 それは残念。でも仕様が満たせていないというのは、こちらでは確認できていません。
もしよろしければ、キーワードだけでも。
669 :
デフォルトの名無しさん :2011/12/18(日) 22:44:30.62
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 文字列HeLLo中の文字について、大文字は小文字に 小文字は大文字に変換せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 12月20日まで [5] その他の制限:標準ライブラリは使ってはいけない
#include <stdio.h> char *lowerupper2upperlower(char *s) { char *t; for (t = s; *t; t++) { if (*t >= 'A' && *t <= 'Z') { *t = *t - 'A' + 'a'; } else if (*t >= 'a' && *t <= 'z') { *t = *t - 'a' + 'A'; } } return s; } int main(void) { char s[] = "HeLLo"; printf("before: %s\n", s); lowerupper2upperlower(s); printf("after: %s\n", s); return 0; }
はっはっは。ほぼ同じコードだな。
Qが使う xmalloc() って嫌がらせだよな あれを見ただけで他人のコードだってすぐ判る パクリがばれて講師に叱られる出題者を想像して満足してるんだろうな
ぼくの先生はネットから引用おkだから大丈夫ですwwwwwwwwwwww
え?マジで言ってのこいつ? しかもコピペ間違えてるのに。
>>673 debug コード含みの malloc()/free()/realloc() なんですが(以前内容を全部晒したことがあったはずです)、そうですね、今後は余力があれば確認後に書き直すように努めましょう。
人のコードを勝手にコピペすることに何にも感じないの? しかもさらっと自分のもののようなレスまで付けて。
今までQZaw55cn4cの事をキモイおっさんだと思って透明あぼんしててごめんよ(´・ω・`)
wikiのほーにある程度のライブラリ登録するべきだろうか・・・・
Qは愉快なパクリおっさんだろ しかもこれで金を取ろうとしてるんだからあまりの厚顔無恥さに呆れる イ・ミョンバクみたいだよな
>>677 ちゅか宿題レベルににリークチェックの埋め込みが必要かって思うぞ
宿題の回答を作成する段ではリークチェックは必要だけど、提出するときには消しておいたほうが無難。 宿題レベルだからこそ、消す。仕事かつ有意義なものであれば残す。
すぐに終了するコードでfreeするとか…。
>>685-686 アマチュアだから‥‥いくら分量が大したことなくても、リークチェックしないコードをさらっと書く自信がないんです。でもけしときます、余力があれば。
>>687 自分で自分のロジックを発散させてしまうタイプだから‥‥free() をきちんと書いてロジックの乱れをきちっと抑えておこうという意図ではあります。
>>684 金じゃありませんモリタポかもしれませんが
>>686 同意、コードの正当性は大事だが
学生の宿題用なんだから出題に対して素直に分かりやすく書くのが一番
690 :
689 :2011/12/19(月) 09:26:43.53
一応付けくわえると、 メモリ解放や、0・NULL・\0を同一に扱ったり、真偽値を0と1の正数値として扱ったりと、 実質同じだが意味的におかしいコードもやっちゃいけないな、これは宿題スレだけでは無いが
691 :
689 :2011/12/19(月) 09:27:20.77
× メモリ解放や ○ メモリ解放をしないや
そう思うならテンプレに入れたら?
693 :
デフォルトの名無しさん :2011/12/19(月) 09:46:11.76
実質同じならいいだろ 等価ってそういうもんだ
>>687 同意w 実行後結果をすぐ返すようなプログラムで執拗にfree書いているのは、
freeする意味をきっと勘違いしてるんだろうな、と分かる。
695 :
デフォルトの名無しさん :2011/12/19(月) 12:20:35.37
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):二次元配列"abcd" "EFG" の中に"E"があれば何行何列目にあるか、なければ「見つかりませんでした」と 表示するプログラム [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 12月22日 [5] その他の制限: ユーザー定義関数を用いる、標準ライブラリは用いない。 よろしくお願いします。
696 :
669 :2011/12/19(月) 12:22:29.42
>>690 >0・NULL・\0を同一に扱ったり、
\0 は、\0xx という 8 進数表示にしか過ぎない。「ナルキャラクタを \0 とあらわす」というわけではなく、\n, \t とは事情が異なる。
\0 と 0 は同一では?
NULL と 0 の区別については次を参照。
http://www.kouno.jp/home/c_faq/c5.html#9 >Cプログラマーは、ポインターが必要な 状況ではNULLと0は交換可能で、キャストされていない0を使うことは ぜんぜん問題ないことを理解しなければならない。
実際、c++ では NULL とかかずに 0 と書いている人は多いようだ。
結論:全部 0 と書いて問題なし。
>>694 ,
>>687 お、信者を迫害するつもりですね。:-)
では一つ質問。fclose() についてはどう思いますか?
fopen() したものはいかなる場合でも fclose() しなければならない。
というのは、至極まっとうだとおもうのですけれども。
どうせプロセス開放時には open() したファイルディスクリプタは OS で close() されるのが普通(MS-DOS でさえそうしている)だから、
fopen() したファイルポインタをいちいち fclose() する必要がない、というわけですか?
あんまりそういう主張はきかないのですけれども。
他所でやれよ。 宿題の要旨に沿った回答すればいいだけだから、一律にcloseしろ、もするなもスレち。
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): (1)20個の適当な整数が空白で区切られて保存されているファイルを作成せよ。 このファイルに含まれる整数のうち最大のものを出力せよ。 (2)15個の適当な整数が空白で区切られて保存されているファイルを作成せよ。 このファイルに含まれる整数を,その保存されている順とは逆順に”result.txt”というファイルに出力せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 12月20日まで [5] その他の制限:ありません 2つ続けてすみません。 よろしくお願いします。
>>697 > 特にASCIIのナル文字(NUL)が必要な場合は、絶対にNULLを使ってはならない。
なんでここを読み落としたの?
[1] 授業単元:C言語 [2] 問題文:入力したxとyを交互に読み取り、zに出力するプログラムを作成せよ 例 x=いはほとりる y=ろにへちぬを z=いろはにほへとちりぬるを [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限:[2011年12月20日08:00まで] [5] その他の制限:なし よろしくお願いいたします
QはC++11でnullptrが付加された理由も知らないんだろうな
>>703 日本語を扱うなら文字コードによってプログラムが変わる
706 :
646 :2011/12/19(月) 16:39:41.53
>>703 バッファオーバーランは考慮してない
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main()
{
wchar_t Buff1[256] = {L'\0'};
wchar_t Buff2[256] = {L'\0'};
wchar_t Buff3[256] = {L'\0'};
wchar_t *p = NULL;
int i,j;
setlocale(LC_ALL,"jpn");
wprintf(L"X=");
fgetws(Buff1,sizeof(Buff1),stdin);
if( p = wcschr(Buff1,L'\n'))
*p = L'\0';
wprintf(L"Y=");
fgetws(Buff2,sizeof(Buff2),stdin);
if( p = wcschr(Buff2,L'\n'))
*p = L'\0';
for(i = 0,j=0; i <wcslen(Buff1);i++,j+=2)
Buff3[j] = Buff1[i];
for(i = 0,j=1; i <wcslen(Buff2);i++,j+=2)
Buff3[j] = Buff2[i];
wprintf(L"%s\n",Buff3);
return 0;
}
707 :
701 :2011/12/19(月) 17:58:41.97
>>704 >>689 が言語を指定していないというのもあるけれど、
少なくともCに限定しているレスに対して、C++の話を持ちかけるのはどうかと思うよ。
突然失礼します。 下記のコードを記述し、WindowsXP及びWindows7で同様のファイルを指定したところ XPでは正常に動作しますが、7ではファイルを開くことができません。 どなたか原因が分かる方いらっしゃいましたらご教授お願いします。 If(!file.open(fn, CFile::modeRead|CFile::typeBinary)) return FALSE
>>709 場所違いでしたか。
大変失礼しました。
7月の段階で民主党が2兆円の復興予算を組んだとき 自民党が要請した復興予算は累計17兆円 自民党の17兆が7月時点でに決定されていたのなら 今の日本はもう少し違って居た筈だ ちなみに関東大震災のときは復興予算として現在の価値にして150兆円以上を組んでいた。 この事実を知れば、予算の規模の小ささ、ましてや増税なんて奇知涯にも程があると思わざる負えない 帰化人だらけの民主党に復興なんて はなっから無理な話なんだよ
>>701 >>特にASCIIのナル文字(NUL)が必要な場合は、絶対にNULLを使ってはならない。
前後を見ると、これは
#define NULL (void *)0
と定義されている場合があるため、との記述をみることができますね。でも本来的には
#define NULL 0
だし、そうあるべきだ、との趣旨の文章です、
http://www.kouno.jp/home/c_faq/c5.html#9 は。
#define NULL (void *)0
ならば、\0 を NULL とはかけない。
#define NULL 0
なら \0 = NULL = 0 でなんら問題ないと思います。
結論:全部 0 と書いて問題なし。ただし、前方参照は排除、可変長引数での 0 のキャストはどうしても必要。
>>712 NULLはポインタの為の定義であって、
実装がどうであろうと文字としてNULLを使用することは間違い。
いいかげんうざすぎるだろ。
共通認識をねじ曲げてでも自分が正しいと思うならひきこもってろ。
>>713 >NULLはポインタの為の定義であって、実装がどうであろうと文字としてNULLを使用することは間違い。
威勢のいい精神論は結構ですけれども、理工系の人間としては適切な姿勢かどうか、はなはだ疑問ですね。
「#define NULL (void *)0 が ANSI で許容されているから文字として NULL を使用するのは問題」というのが正確かつ的確なんです。つ
http://www.kouno.jp/home/c_faq/c5.html#9 でも私が主張しているのは、
>文字としてNULLを使用すること
ではなく(そんなこといつ私がいったのか?)
「文字(\0)だろうと、ポインタだろうと、普通の数字だろうと、すべて 0 と書くことでなんら問題ない」
です。
>いいかげんうざすぎるだろ。
C FAQ もまともに読めないあなたの存在がね。
>共通認識をねじ曲げてでも自分が正しいと思うならひきこもってろ。
すべて 0 と書いて問題ないのが、1995 年からの共通認識です。
頭沸いてません?
715 :
デフォルトの名無しさん :2011/12/19(月) 23:15:26.82
[1] 授業単元: 情報処理
[2]
問題(1)
http://ideone.com/xfyDt 上のプログラムを参考にして、unsigned型整数をビット表記した時の下から4ビット(20 から23の桁)
を表示する関数 void print_4bits ( unsigned x) を作成せよ。
またこの関数を用いて、0から15までの整数を4ビットで表示するプログラムを作成せよ。
問題(2)
float型実数 x と double型実数 yを用意し、初期値として x, y 共に1.0と置く。
ループ( while文、 for文何でもよい) を用いて、x, yの値をそれぞれ前の値の 1/10にする毎に、その値を表示するプログラムを作成せよ。
ループはyの値が 10 -14 より小さくなった場合に終了すること。 x , yを 表示する際、変換指定は %20.15fとすること。 C言語においては 10 -14 は 1e-14と表記する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++
[4] 期限: できれば今夜12時まで(急で申し訳ありません)
[5] その他の制限: 特になし
どなたかよろしくお願いします。
>>714 >「#define NULL (void *)0 が ANSI で許容されているから文字として NULL を使用するのは問題」というのが正確かつ的確
自分で問題があるって言ってるのに
誰も納得しないなそれじゃあ
>>714 「そんなこと言ってないよ、全部0って書けば問題は起こらないよとしか言ってないよ」
で済む話をねちっこくするから嫌われるんじゃないかな。
まあ煽るほうもアレだけど。
それはそうと最近はコードだけペタペタ貼っていくスタイルに変えたんじゃなかったの?
>>712 > なら \0 = NULL = 0 でなんら問題ないと思います。
それらが等価であるとミスリードさせようとしてるわけじゃないのなら、もう一度読み直してみては。
721 :
デフォルトの名無しさん :2011/12/20(火) 00:00:30.77
>>714 >#define NULL 0
>なら \0 = NULL = 0 でなんら問題ないと思います。
「なんら問題ないと思います」
>NULLを、ポインター以外の0が必要な場面に使ってはならない。
「使ってはならない」
日本語わかります?
>>718 >>#define NULL 0
>>なら \0 = NULL = 0 でなんら問題ないと思います。
と二行でセットです。これを下一行・部分だけ抜き出されて「ミスリード」といわれても困惑するばかり。
>>717 >最近はコードだけペタペタ貼っていくスタイルに変えたんじゃなかったの?
そでしたね。
Qはもしかして大抵の処理系だと真は1だから真偽値を正数値として扱ってるの?、 trueやfalseは1と0のプリプロセッサだからと言って1や0書いてるの? 結果も正数値だからint型にしてるの? RAIIで書くのも目視でチェック処理書くのも同じとか思ってるの? そのチェック処理にはboolは登場するの? たぶんまだまだたくさん疑問があるよ
>>722 \0 = NULL = 0 で
>「なんら問題ないと思います」
そうですよ。#define NULL 0 ならね。
>「使ってはならない」
そうですよ。#define NULL (void *)0 の可能性があるからね。
まあ、
>>717 のとおり「そんなこと言ってないよ、全部0って書けば問題は起こらないよとしか言ってないよ」と書けばすむ話でしたかね。
>>725 >NULLを、ポインター以外の0が必要な場面に使ってはならない。
>プログラムは動くかもしれないが、
>コンパイラに間違ったメッセージを送っていることに違いはない
ちゃんと読もうよ…。(void*)0ならそもそも通らないんだよ…。
>>723 > >>#define NULL 0
> >>なら \0 = NULL = 0 でなんら問題ないと思います。
> と二行でセットです。これを下一行・部分だけ抜き出されて「ミスリード」といわれても困惑するばかり。
NULLが0じゃない環境があるわけだから、等価じゃないって言われることになるよ。
実際等価じゃない環境はあるし、それを想定したツッコミもはいってるよね。
でも、いいたかったのはそんなことじゃなく、すべて0と書くことでどの環境でも問題なく動作するということじゃないの?
>>724 >Qはもしかして大抵の処理系だと真は1だから真偽値を正数値として扱ってるの?、
いいえ、この前、常用の処理系で isprint() が 32 を返すのをみていますからね。真値として-1を返す処理系/関数だってあるかもしれない、昔の N-BASIC のように。
>trueやfalseは1と0のプリプロセッサだからと言って1や0書いてるの?
c++ でも if (isprint()) か if (!isprint()) といった形でかけるのなら、true/false をあえて書くことすらありません。ただし c では return 1, return 0 は使います。
RAII やスマポはまだ十分には習得していません。
>>724 trueを1と想定したコードにはであったことないなぁ。
!!bFlag のようなコードはたくさんあるけど。
>>727 >すべて0と書くことでどの環境でも問題なく動作するということじゃないの?
ですね。
(実は (void *)0 と (void (*)())0 が違うので可変長引数では書き分けなければならない環境もあったりするんですけれどもね。)
まあ私の「\0 = NULL = 0」が表現として誤解を招いたのでしょう。
>NULLが0じゃない環境
???
NULL はプリプロセッサを通過すれば全部 0 または(void *)0 に置き換わるはず。
ヌルポインタがコンパイラを通過したあとどう表現されるかをここで問題とするのはお門違い。
助け舟出してくれた奴にまで悪態をつくQzさんであった…。
>>730 > まあ私の「\0 = NULL = 0」が表現として誤解を招いたのでしょう。
まったくもってそのとおり。そして、それは読むほうの問題だと思っているフシがあるのがさらに問題。
その積み重ねが嫌われる結果になってることはわかる?嫌われたいのならそれでいいけれど、そうじゃないだろう?
なぜ誤解を招かない記述がされている文書(FAQや規格)を引用しながら、誤解を招く一言を加えるのか。
誤解を招きうる正しい意見と、誤解を招かない間違えた意見は、どちらも同じように知らないものを混乱させる。
大人なんだからしっかりなさい。
学生さんはここの書き込みを鵜呑みにせずまっさきにcfaq見ること。
小学生レベルの算数や幼稚園レベルの日本語もわからな奴が理工系の人間か
737 :
デフォルトの名無しさん :2011/12/20(火) 09:33:31.19
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 任意の0〜nの整数から、重複を許してm個の整数を選び出力するプログラムを作れ。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual studio 2010 [3.3] 言語: C++ [4] 期限:2011年12月20日15時 [5] その他の制限:急ですみません。 重複順列を出力するプログラムをお願いします。
\0 = 0 は違和感あるな。charとintだもん。
>>737 #include <iostream>
int main()
{
int i, n, m, *p;
std::cin >> n >> m;
p = new int[m];
for(i = 0; i < m; i++) p[i] = 0;
for( ; ; ) {
for(i = 0; i < m; i++) std::cout << p[i] << ' ';
std::cout << std::endl;
for(i = m - 1; ; i--) {
if(++p[i] <= n) break;
if(i == 0) {
delete [] p;
return 0;
}
p[i] = 0;
} } }
国民に罵声を浴びせられ駅前交番に逃げ込むテレビアカヒの取材班 12/19正午 新橋駅前
http://blog-imgs-44.fc2.com/d/e/l/deliciousicecoffee/111219_124643_ed.jpg ,:' .l .::;',. :::;/..://:: /,':/ ', l、 .i ヽ
. ,' ..::| .::;',' :;:','フ'7フ''7/ ',.ト',_|, , ',.',
,' .::::::!'''l/!:;'/ /'゙ / '! ゙;:|:、.|、| 'l
. ,'. .:::::::{ l'.l/ 、_ _,. 'l/',|.';|
l :::::::::::';、ヾ  ̄ `‐-‐'/! ';. '
. ! :::::::::::/ `‐、 ゝ |'゙ |
| ::::::::/ \ 、_, _.,.,_ ノ::: ! 野田政権が早く終わりますように
|::::/. _rl`': 、_ ///;ト,゙;:::::./
.. `´ /\\ `i;┬:////゙l゙l ヾ/
,.:く::::::::`:、\ 〉l゙:l / !.|
. /:.:.:.:\:.:.:.:.`:、ソ/:.:| | | 19日の報道ステーション
/.:.:.:.:.:.:.:.:.:\:.:.:.:У:.:;l
http://livedoor.blogimg.jp/kingcurtis/imgs/e/d/ed2dbc66.jpg
とりあえず、Wikiのほー、現行スレのURIを直しといた。
742 :
デフォルトの名無しさん :2011/12/21(水) 07:43:32.06
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
http://ideone.com/uhaD9 [3] 環境
[3.1] OS:Linuxs
[3.2] gcc
[3.3] 言語:C
[4] 期限:12月22日24:00迄
[5] その他の制限:
宜しくお願い致します。
746 :
432 :2011/12/21(水) 21:59:21.99
>>495 >>497 作成していただいたプログラムですが、コンパイルすると
60行目で「ここでは宣言はできない(関数 apply_filter )」と出ます
どうすればいいでしょうか
他人やけど、53??54行の間に60行目を移動すれば、いい筈。
748 :
432 :2011/12/22(木) 01:13:44.57
>>747 おお、できました
ありがとうございます
あとはどうやったらこれがちゃんと動くのかわかる方いらっしゃいますか
画像の指定の方法とかがちょっとわからないです
何度も質問して申し訳ないです
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):
http://ideone.com/WOUG0 [3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12/22 23:59
[5] その他の制限:何らかのソートを使って作成し、そのソートについての説明を書くこと。
お願いします。
[1] 暇つぶし [2] 問題文(含コード&リンク): 15パズルにおいて最短手順が最長となる場合の手順数を求めよ 複数個を同時にスライドしても1手と数えることとする .1 .2 .3 .5 .6 .7 .4 .9 10 11 8 13 14 15 12 ↑ の状態から ↓ の状態にするのも1手と数える .1 .2 .3 .4 .5 .6 .7 .8 .9 10 11 12 13 14 15 [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: どちらでも可 [4] 期限: 無期限 [5] その他の制限: 出来る限り高速に
>>753 自分が作ったものと、他人が作ったものを比較したいんじゃないんだなぁ…
>>754 自分では解けないからどうやって解くのかと思って
暇つぶしにやってみるんじゃなくて、暇つぶしに問題を出してみただけか
757 :
646 :2011/12/22(木) 05:15:28.50
>>755 0. 最初の盤面
1. 盤面から1手先の盤面をそれぞれ作成
2. 作成した盤面が盤面プールになければ
2.1. 作成元盤面のポインタ、使った手と共にプールに押し込む
2.2. 作成した盤面について1へ
3. 完了するまでループ
4. プールから検索し、最初の盤面になるまで辿って表示していく。
たぶんこうなる。
うんそうなる。 で、盤面は64ビットあれば表現できる
現実的な時間で終わるかどうかが問題で
最長であるn手目の状態から、一つ動かした盤面がn-1手以内で到達可能であることを判定しないといけないと思うんだけど、 それをするためには1手目からm手までの盤面を、1手ごとにすべて求めないといけなくなる?
自分のなかで今割とアツいDDの出番なんだろうけど、まだ習熟途中。
DDじゃなくてDPごめん
80手であることは知ったけれども
全パターンで 16!/2 = 10461394944000 メモリに収まらないwww
それらのすべての盤面から、任意の二つのパネルを入れ替えたものは解けないパズルなので、盤面として保持されることはない、が。
単に半分でいいの?
2x2 で 12 通り 6手 3x3 で 181440 通り 24手 3x2 で 360通り 20手 4x2 で 20160 通り 25手 5x2 で 1814400 通り 36手 になったし合ってるはず
中のパネルを1回だけ入れ替えた盤面は不正な盤面。 組み合わせは1盤面につき Cb(15,2) 16! / Cb(15,2) = 16! / (15!/13!)/2! = 16 * 13! * 2! = 199264665600 ほんとに合ってるかわからないw
1 4 7 2 0 8 3 6 5 3x3 の最長手順 24手 こんなん出たけど合ってるかどうかものすごく不安 0 が空白部分です
>>770 ありえない
隣り合う二つのパネルを一回だけ入れ替えると解ける/解けないが入れ替わるから
でもそれだと入れ替える場所は(4*3)*2 - ( 2 or 4 )にならない?
>>773 解けない 盤面を 解ける ようにするには隣り合うパネルを一回だけ交換すればよい
解ける 盤面を 解けない ようにするには隣り合うパネルを一回だけ交換すればよい
合ってるよね?
>>774 なんとなくわかった。1:1で存在しているって事か。
あと別に間違ってると言いたいんじゃなくて、
自分が理解できてないだけです。
何かおかしいと思ったらNP完全問題か。 暇つぶしの前にやる気無くなった。
震災前 /::::::::::::::::::::::::::::::;;::ノ ヽ;::\ /::::::::;;;;;;;;;,,,;;...-‐''"~ ヽ:;::l |:::::::::::| 岡田 異音 |ミ| |:::::::/ ,,, ヽ,、 '|ミ| '|:::::::l '''"" ゙゙゙゙` |ミ| |:::::|. ,,r ‐、 ,, - 、 |/ ,/⌒| ノ ・ _), (. ・ `つ| | ( "''''" |"'''''" | ヽ,,. ヽ | | ^-^_,, -、 | | _,, --‐''~ ) | マニフェストもう守れない。どうしよう・・・・ 'ヽ ( ,r''''''‐-‐′ / 震災後 |:::::::::/ |ミ| |::::::::| ,,,,, ,,,,, |ミ| |彡|. '''"""'' ''"""'' |/ /⌒| -=・=‐, =・=- | | ( "''''" | "''''" | .ヽ,, ヽ .| キリッ | ^-^ | . | ‐-===- | 大震災が起こったのだからマニフェストの破綻も致し方ありません ,\. "'''''''" / 朝鮮民主党 解党
778 :
432 :2011/12/23(金) 02:37:41.68
>>752 ありがとうございます
動かすことができました
助かりました
[1] 授業単元:計算機アルゴリズムT [2] 問題文(含コード&リンク): 設問1-1 キーボードから整数値を受け取り、その数値に該当する月の略称("Jan", "Feb",・・・)を表示するプログラムを作成しなさい。 なお、月の略称はポインタ配列「 char *month[ ]={"Jan.", "Feb.", "Mar.", "Apr.", "May.", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."};」で定義するものとする。 [3] 環境 [3.1] OS:Windows vista [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] 言語:C [4] 期限:[2011年12月26日8:00まで] [5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文 繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数 条件分岐if文、要素番号idx使用の書換、データの入れ替え 条件分岐・論理演算子を用いたif文の条件、if文、else if文 switch文、ポインタ変数・演算子*と&、関数・プロトタイプ宣言と関数定義 引数と戻り値、関数の引数とポインタ、関数に配列を渡し、呼び出し側へ戻す方法 関数から関数を呼び出す方法、大域(global)変数、局所(local)変数、文字型変数 文字列の代入、キーボードからの文字列入力、char型ポインタ変数は習いました。 宜しくお願いします。
C++でヘッダーファイルをインクルードするときにprivate関数の宣言まで取り込むのは無駄だと思うんですがこれは地名的名設計ミスなんじゃないでしょうか
無駄である以外に問題が無いモノを致命的と呼ぶのか?
>>783 privateメンバの変更を行っただけなのに、それを利用するだけのファイルも再コンパイルされてしまうことを問題視してるのかな。
なら、pImpl
>>783 俺もその点が気に入らないが、それだけじゃない。
C++ってそういう言語だよ。OOPLとしては全体的に消極的。
friend関数作った時とかはprivateも見えてないと困るな
#define private public
やっぱりC言語のローカルヘッダと公開ヘッダの仕組みの方が優秀だということだな
【質問テンプレ】
[1] 授業単元: C言語アルゴリズム
[2] 問題文(含コード&リンク):
【1】.0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力)
ヒント:講義中に解説した例:2分法による方程式解法のax+bを上式にする(a,bの読み込みも不要)
例のコードは、
http://codepad.org/ImpygN9S です。
ヒント2:sinやcosの括弧内の単位はradianであることに注意(pi*x/180.0)
【2】.0度<=x<=90度の範囲でx,sin(x),cos(x),sin(x)-cos(x)の値を5度刻みで"kadai2.ans"に出力、
ftpでgetしてExcelの散布図を利用してグラフ化し、【1】の解が正しいか確認せよ。
【3】.ax+bとcx+dの交点のx座標を求めよ。(a,b,c,d,許容誤差は自由)
ヒント1:ax+bとcx+dの差が0の所が交点
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン:VC2008
[3.3] 言語: C
[4] 期限: 26日AM6時まで
[5] その他の制限: 出来るだけ分かりやすいとありがたいです
多いですがよろしくお願いします
[1] 授業単元:計算機アルゴリズムT [2] 問題文(含コード&リンク): メンバとして映画のタイトル(文字列)と公開年(int 型整数)をもつ構造体movie を宣言し,movie 型構造 体のメンバの値を設定してその構造体を返す関数struct movie set_movie(void)を作成しプログラムを完成させよ. [実行例] 映画のタイトルを入力してください:HAYABUSA 公開年を入力してください:2011 データを設定しました。 タイトル:HAYABUSA 公開年:2011 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:[2011年12月27日8:00まで] [5] その他の制限:以下の実行例のように,関数の動作を確認できるmain関数も作成すること.ただし,関数set_movie およびmain 関数については以下の要件を満せ. ・設定するメンバの値(タイトル,公開年)は,関数set_movie 内でscanf 等を用いてユーザに入力させること. ・main 関数内で,movie 型構造体のオブジェクトmovie1 を初期化せずに宣言する ・関数set_movie を用いて,movie1 のタイトルと公開年の値を設定する. ・その後,以下の実行例のようにmovie1 のメンバの値を表示して終了する. 出来るだけ分かりやすいとありがたいです
794 :
793 :2011/12/26(月) 09:14:29.63
[1] 授業単元:配列と構造体 [2] 問題文(含コード&リンク): メンバとして名前(文字列)と年齢(整数)をもつ構 造体person を宣言し,以下の要件を満たすプログラムを完成させよ [実行例]: チーム1 のメンバー: Haybusa Taro, 20 歳 Katakura Goro, 22 歳 Minamino Akira, 19 歳 3 人の平均年齢は20.33 歳です。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:[2011年12月28日8:00まで] [5] その他の制限: ・main 関数内で,大きさ3 のperson 型構造体配列team1[] を次の値で初期化して宣言する. 名前:Haybusa Taro,年齢:20 名前:Katakura Goro,年齢:22 名前:Minamino Akira,年齢:19 ・実行例のように,team1 の3 人の情報を表示する. ・その後,3 人の平均年齢を計算して表示する. 出来るだけ分かりやすいとありがたいです
>>795 #include <stdio.h>
int main(){
struct person {
char name[30];
int age;
} team1[3] = {
{"Haybusa Taro", 20},
{"Katakura Goro", 22},
{"Minamino Akira", 19}
};
int i, sum = 0;
printf("チーム1 のメンバー:¥n");
for (i = 0; i < 3; i++) {
printf("%s, %d 歳¥n", team1[i].name, team1[i].age);
sum += team1[i].age;
}
printf("3 人の平均年齢は%.2f 歳です。¥n", sum / 3.0);
return 0;
}
平松邦夫/民主党 大阪市役所・自治労・大阪市労働組合・日教組・大阪市教育委員会・自民党・共産党・社民党・関西電力・住友グループ ・毎日放送・毎日新聞・関西経済連合・日本原子力発電株式会社 ・ 週刊文春・週刊新潮・NHK・朝日新聞・読売新聞 ・部落解放同盟・朝鮮総連・在日本大韓民国民団・日本遊技関連事業協会・全日本遊技事業協同組合連合会・日本弁護士連合会・生活保護受給者・反日左翼・9条の会・革マル派・中核派 VS 橋下徹/維新の会 大阪市民・みんなの党・国民新党・亀井静香・石原慎太郎・東国原英夫 様子見:公明
ファイルの先頭4KBが重複するものを全て求めるプログラム。 できる限り高速なもの。
>>798 >>1 その情報だけじゃ趣味レベルと見なされて、memcmp使えで終わり。
何と(例えば互いに?)同じか、4KB無い時はどうするか、或いは無視して良いのか。
この辺の事を明記しない奴は大抵、後出しの条件を付けて来るから様子見されるぜ。
4KB以上サイズがあるファイルを、先頭4KBの一致で分類するプログラムです。 一つのファイルを与えたときに一致するものを求めるのでは無いです。
memcmp使え
ファイルの先頭4KBだけ読み、ファイル名とセットにしたレコードを生成し、ソートする ファイルの数次第でソート方法が決まりそう。
ファイル先頭4KBのMD5を生成し、ファイル名とセットにしたレコードを生成し、 連想配列の要素にMD5使ってカウントし、最後にカウントが2以上の連想配列のファイル名を出力、とか。
一致で分類するなら、名前がハッシュ値のディレクトリに移動
[1] 授業単元:計算機アルゴリズムT [2] 問題文(含コード&リンク): 設問1-1 1人分の学生の情報(学籍番号、名前、身長)を持つ構造体を 「struct student { int number; /*学籍番号*/ char name[20]; /*名前*/ float height; /*身長*/};」と定義し、 構造体 student 型の変数にキーボード入力から値を設定した後、その変数の値を printf 文で表示するプログラムを作成しなさい。 設問1-2 n(>1)人分の学生の情報を持つ構造体 student 型の配列変数に対し n 人分の変数の値をキーボードから読み込んで 構造体の配列変数に設定した後、 printf 文で n 人分を表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS:Windows vista [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] 言語:C [4] 期限:[2012年1月1日8:00まで] [5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文 繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数 条件分岐if文、要素番号idx使用の書換、データの入れ替え 条件分岐・論理演算子を用いたif文の条件、if文、else if文 switch文、ポインタ変数・演算子*と&、関数・プロトタイプ宣言と関数定義 引数と戻り値、関数の引数とポインタ、関数に配列を渡し、呼び出し側へ戻す方法 関数から関数を呼び出す方法、大域(global)変数、局所(local)変数、文字型変数 文字列の代入、キーボードからの文字列入力、char型ポインタ変数 構造体・メンバ変数への数値の代入、構造体・ポインタを使ってメンバ変数を指定は習いました。 宜しくお願いします。
>>807 そう
もしまずかったら16行目から19行目を消して
nに値を直接代入してください
811 :
810 :2011/12/30(金) 11:03:09.72
>>807 そうです
画面からというより、キーボードから入力するという事です
812 :
810 :2011/12/30(金) 11:20:03.66
>>806 学籍番号、名前、身長がちゃんと表示されないんですがどうすればいいですか?
Input number name height
>>9 学籍番号: 9
名前: ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ����eI^
身長: -431602080.000000
続行するには何かキーを押してください . . .
↑のように出力されます
>>812 入力方法が間違ってる
配列サイズ考慮した作りになってるから少しややこしいかもしれないけども
sscanf(buf, "%d %s %f", ...);
に対して 9 だけ入力してる
だから %s と %f はbufのゴミが読み取られてる
あとは分かるな?
ゴミがたまに「ヘヘヘノヘヘヘ」になって笑ってしまう
815 :
810 :2011/12/31(土) 10:38:59.36
>>813 分からないので、詳しく教えてください
お願いします
ソース理解してねーと口頭で説明とかなったら困るぞ
817 :
813 :2011/12/31(土) 12:24:11.93
>>815 じゃあ実際のコードをまじえて解説してみるよ
ちょっと長くなったので2回に分ける
1.
まずはこのコードを実行してみて
#include <stdio.h>
int main(void) {
char buf[10];
int i;
for (i = 0; i < 10; i++) { printf("%d ", buf[i]); }
return 0;
}
おそらく全部0になってないと思う、
C言語では実行速度を優先した設計になっているから、
変数や配列を宣言した時は単にメモリ領域を確保するだけで、そのメモリ内のデータは残ったままになってる、
だからループ内ではそのゴミデータを「数値」として出力しちゃってる
では次にループ内の「"%d "」の「"%c"」に変えて実行してみて、
※スペースも削除してるのを注意
実行時のメモリの状況によるけど、
>>812 の名前部分と似たような文字列になったと思う
これもループ内でゴミデータを「文字」として出力してるから。
つづく
マダァ-? (・∀・ )っ/凵⌒☆チンチン
>>817 %c するんだったら、最低限でも isprint() を間にかませたいよね
820 :
813 :2011/12/31(土) 12:57:48.51
2.つづき
>>806 のソースではbufの配列数は128だけど、これも同じく最初はゴミデータで埋まってる
無理やり書くとこんな感じ
'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' ...
ここで
>>806 の上のソースの20行目
fgets(buf,128,stdin);
これは標準入力から最大128文字を読み込む処理をしているが 9 だけを入力すると、bufには1文字だけが読み込まれ、
'9' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' 'ヘ' ...
って状態になる
次に同ソースの21行目
sscanf(buf,"%d %s %f",&sd->number,sd->name,&sd->height);
ここでbufから「学籍番号」「名前」「身長」 を読み取る事を期待してるわけだが、bufには9以降はゴミしか入っていない
%dは文字列の中から、連続した数値が続くまでを読み取って、
それを整数値として返す処理をしてるから問題なく学籍番号用の変数には9が入っているが
%sは文字列の中から、連続した文字列が続くまでを読み取るから、
bufの中のゴミデータが名前用の変数に入ってる、
%sは、おそらく%sで残りゴミデータを全部読み取ってしまっているから無視されてる、
試しに18行目あたりに 「sd->height = 3.141592;」 なんて円周率を入れておいても、実行時に 9 だけならその円周率がそのまま使われてると思う
ここまでが間違って出力されてる中身の仕組み
じゃあ実際に正しく入力する方法は、21行目で "%d %s %f" って書式になってるのを期待してるわけだから、
入力するときも 「数値」「スペース」「文字列」「スペース」「浮動小数点」 って入力すればいいわけ
821 :
813 :2011/12/31(土) 12:59:43.23
誤字 × %sは、おそらく%sで残りゴミデータを ○ %fは、おそらく%sで残りゴミデータを
819 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
それにしても、Cというのは酷い言語だね。
8086アセンブラの何がひどいの?
クズの知ったかぶりがひどすぎる
Qは来年になってもクズだろうな つーか小姑みたいに茶々入れたいだけなら出てくんなっての
MS-Cが16ビットの時なら、アセンブラと変わらない
830 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
>>829 こうしとけば楽だよ
それにしてもQが出てくる前は宿題スレはもっと平和だったなあ
こいつが来てから殺伐としてきた
>>832 >殺伐
2ch らしくていいじゃないか?
アセンブリをやってた人間ならもう少しマシなコードを書けると思うんだがなあ
病院からアクセスするなよ
ああ既にQは精神病院に入院してるのか だろうなあキチガイだもんな
>>835 いちいちかまうな、ボケ。
>>836 昨日友人の見舞いに行ったんだが、看護婦さんの見回って、今時ノートPC台車に載せてきて、
ベッドそばの機器に繋いでデータ収集してるんだな。
ふと見ると、ベッドの近くに LAN コンセントとかもあるし。
病院によっても違うんだろうけど、意外とIT化されてるのに改めてびっくりした。
足の骨折ぐらいなら、PCでインターネット接続させてくれれば、入院の辛さもちょっと軽減しそうだ。
精神病院の場合はどうなんだ?ネットなんかしたらかえって病気が悪化するように思うが
おれはQちゃん好きだぜ
クロルプロマジン飲んでるのか それコントミンじゃん 統合失調症の薬 お前は自己愛性人格障害だから薬は効かない
844 :
810 :2011/12/31(土) 21:06:47.02
>>842 CP=コントミンとは限らないぞ荒らし野郎。
そうやって優位性を強調するお前も十分に自己愛だよ。
846 :
810 :2012/01/01(日) 20:17:39.74
>>847 自分の体験を語るなら、ちゃんと名前を出してやれ
>【効能・効果】 統合失調症,老年精神病,躁病,うつ病又はうつ状態,神経症 わーおw
どーでもいい。
ベゲタミン飲んでるのかwww そりゃそうだろうなこれだけ性格がひねくれてりゃ文句の言われっぱなしで不眠症にもなるだろう そして自己愛の肥大にも関わらず現実が付いて行ってないからうつ病にもなるだろうな Qは自己愛性人格障害ではあるが既に枯れて末期状態だと思われます しかしベゲタミンwww AかBか?フェノバルビタールが入ってるから今ではあまり精神科でも 出さないんだけどなあ よほど強い不眠症なんですねwww
>>850 引用は正確に。
>下記疾患における鎮静催眠
が抜けてますよ。薬としてはふつーじゃないですか?まあ後はないぞとも言われてますけど。
>フェノバルビタールが入ってるから今ではあまり精神科でも出さないんだけどなあ
まあね。芥川龍之介がピストルの代わりに使ったのがこれ(バルビタール系睡眠剤)だし、処方には一定の判断が入るでしょうねえ。
うつ病というよりは、神経症でしょうね。これは先祖代々からの申し送りで仕方がない。
まあ、そちらの分裂症といい勝負でしょう。分裂症にはお詳しいようですしね。
早く治るといいですね。
>>852 触れなければいいのに、毎回無駄に突っかかってきてるお前こそキチガイだ。
ネット上の知識しかないのがよくわかるわ。
>>853 いや神経症の括りじゃねーよ
見ている人はよーく分かると思うけど明らかに人格障害の領域に足を踏み込んでいる
さぞかし日常生活がお苦しいでしょうなあ
突っかかる理由は、病気持ちだから。
添付文書の読み方も知らないのに引用とか、恥さらしもいいとこだぞ。
突っかかられるだけの理由がQにはある それに句読点「。」を入れて書く癖がQにはある Qを擁護する分には全て「。」が入っている おっかしいなあ〜ww
神経症と理解力が小学生未満なのって関係あるの?
毎回Qzに粘着してるキチガイはお前で確定なんだろうけど、 ここまで酷いとは思わなかったぜ…。
>>859 ないと思う
つまり理解力が常人未満なのに、「俺天才」だと思ってしまう所が自己愛なわけで
突っかかる奴は、神経症と理解力が小学生未満だということ
病気持ちの粘着はむごい
おっ「。」を外すほど成長したか
>>862 馬鹿だなあ
俺が神経症なんてどこにも一言も書いてないのに
つい自分の事を言っちゃうんですよね
怖いねえ
言葉には気をつけないと
いいかげんお前もトリップつけろ。 他の奴にとってはどっちも同レベルだよ。
トリップ付ける奴は自己愛と相場が決まっている
>>865 お前がクズ擁護派としてトリップつけてくれないかな
スルーしてればすむところを、今グダグダしてるのはお前が文句つけてるからだし
なんつう言いがかりだよw 毎回いちいち粘着するのをやめるかトリップつけろっていってんだよ。 お前の方は自己愛でNG登録してもいちいち引っかかるんだよ。
>>868 今のお前はQに粘着する奴に粘着する奴ってポジションで、普通に迷惑な存在になってるから
あと、Q並みに同一人物認定好きみたいだけど、俺は自己愛って言ってる人とは別だよ
すまん。悪かった。
Qに粘着する奴に粘着する奴 それに粘着する奴まで出てきたか。
もう、ID導入してもらうしかないだろ。
いや、Q一人のためにIDを導入する必要はない。 Qに出て行ってもらえば済む。
ID入れる方が現実的
ID入れたら影響が大きすぎる ただでさえ過疎板のプログラム板が使い物にならなくなっちまう ここより荒れているマ板ですらID無しだぞ
事実上荒れてるのこのスレだけだろ このスレをID付きの板に移動しろよ
>n(n-1)(n-2)(n-3) は 2, 3, 4 の各々で割り切れるからといって、2 * 3 * 4 で割り切れるかどうかの保障はない。 こんなこと言っちゃうぐらい頭の悪い奴にバカにされたら粘着したくなる気持ちもわかる
>>879 証明抜きでは、馬鹿呼ばわりはできないでしょうねえ。一目では自明じゃないし。一目で証明できるのならすくなくとも私こと QZ より頭はいいと思います。よろしければその証明の道筋を教えてください。
でもね、証明方法はだいたいわかってはいましたけどね。いわゆる再帰的定義(漸化式)を使うんだろうな、と常々思っていましたし、nCr を求めよ、という問題に対してはその再帰的求値法を回答として第一に使用していましたしね。
うっかりリロードするとまあまあスレが伸びているなあ。ちょっとあきれましたが。
ともあれ、QZ叩き側に一人変なの存在することは証明抜きで自明なのには異論ないと思うのですがどうでしょう?
>>874 という意見もあるので私はトリップをつけて
>>874 に賛同する者に一定の便宜をはかっているのですけれども、それでこれですから、
>>875 は現実的ではないんじゃないかなあ。
誰か声のでかい人や、口当たりの良い事をいう人に付いていくだけで 本当に良いのかどうか、今から考えた方が将来の為になると思われ。
真・スルー 何もレスせず本当にスルーする。簡単なようで一番難しい。 偽・スルー みんなにスルーを呼びかける。実はスルーできてない。 予告スルー レスしないと予告してからスルーする。 完全スルー スレに参加すること自体を放棄する。 無理スルー 元の話題がないのに必死でスルーを推奨する。滑稽。 失敗スルー 我慢できずにレスしてしまう。後から「暇だから遊んでやった」などと負け惜しみ。 願いスルー 失敗したレスに対してスルーをお願いする。ある意味3匹目。 激突スルー 話題自体がスルーの話に移行してまう。泥沼状態。 疎開スルー 本スレではスルーできたが、他スレでその話題を出してしまう。見つかると滑稽。 乞食スルー 情報だけもらって雑談はスルーする。 質問スルー 質問をスルーして雑談を続ける。 思い出スルー 攻撃中はスルーして、後日その思い出を語る。 真・自演スルー 議論に負けそうな時、ファビョった後に自演でスルーを呼びかける。 偽・自演スルー 誰も釣られないので、願いスルーのふりをする。狙うは4匹目。 3匹目のスルー 直接的にはスルーしてるが、反応した人に反応してしまう。 4匹目のスルー 3匹目に反応する。以降5匹6匹と続き、激突スルーへ。
IDを導入するとQのコテを外しての自作自演も出来なくなりますよ( ̄ー ̄)ニヤリ
上下で意味のことなる文章 一般人: 人の嫌がることを進んでしましょう おまえら: 人の嫌がることを進んでしましょう 芸能人:よくキャーキャー騒がれる おまえら:よくキャーキャー騒がれる アップル:画期的な新製品 マイクロソフト:画期的な新製品
>>881 みたいに素直に自分の間違いを認められずにグダグダ言い訳するあたりも嫌われる理由だろうな
>>887 痛い思いをさせられたからって恨むのは筋違い
おまえらなんでQを叩いてるん?別に悪いやつじゃないじゃん
い-635 ちなみに、平成18年度の民主党の収支報告書だが、 電通が 690,150,988円(約6億9千万円) 博報堂が 19,425,964円 (約2千万円) 読売グループ系列(読売広告、読売メディアセンター)が 72,058,917円(約7千万円)なw フライシュマンヒラードジャパンが、1974000円かw フライシュマンの本社はアメリカにあって、アメリカ政界や企業のPRも担当してるユダヤ系の会社だなw ここが「マニュフェスト」っていう横文字を考えたんだなw そういえば、今東電と電力総連がフライシュマンを雇ってるらしいじゃないww 札束で学者ひっぱたいてテレビででたらめ言わせても年寄なんかはまだまだテレビのいうことを信じるからなw
Qが恥かいてることは多々あるけど、痛い思いをさせられた奴なんていんのか?
勝手に恥をかきまくっているのは傍から見ていて面白いのに、つっかかるやつはなにを恨んでいるのだろう?
Qは熱意がある
ない ただの馬鹿
Qの熱意はみんなが認める
Qはちゃんと調べるようになったかと思っていたが 再び妄想をソースにしはじめるようになったゴミ
Qのソースは大半がググッて出てきた他人のソースを勝手にコピペして 貼りつけてるパクリだしな たまにオリジナルがあるかと思うと馬鹿の一つ覚えでxmalloc()とか(笑)
>妄想をソースに たとえば?
[1] 授業単元:計算機アルゴリズムファイルへの書き込み [2] 問題文(含コード&リンク):以下の実行例のように、キーボードから友人の名前(文字列)と生年月日(yyyymmdd形式のlong型変数) を次々と読み込んで、そのデータをファイルに書きこむプログラムを作成せよ。 以下の要件を満たすとする ・書きこむのファイル名をユーザに入力させる ・同じ名前の友人の情報がすでに入力されたかどうかは確認しなくても良い。 ・同じ名前のファイルはすでに存在する場合には、内容を上書きするものとする。 ・作成されたファイルの中身は以下の実行例(catコマンドの結果)のようにするものとする。 ・以下の実行例のように,1人文のデータを入力するごとに「続けますか(yse...1/NO...0:)」のように表示を促し1が入力されたら処理を続けるプログラムとする。 [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン:GCC [3.3] 言語:C [4] 期限:[2012年1月4日9:00まで]
>>903 続き
[5] その他の制限:[実行例]
書きこむファイル名:friends.txt
友人の名前:Goro
誕生日(yyyymmdd):19911001
続けますか?(yes...1/NO...0):1
友人の名前:Taro
誕生日(yyyymmdd):19890505
続けますか?(yes...1/NO...0):1
友人の名前:Akira
誕生日(yyyymmdd):19920222
続けますか?(yes...1/NO...0):0
%cat freinds.txt
Goro 19911001
Taro 19890505
Akira 19920222
宜しくお願いします。
なんで出題者ってコンソールから入力させるやつ好きなんだろうな 不便な上に無駄に複雑で何もいいとこないのに
複雑か?、応答プログラムとしては一番シンプルだと思うが 入力例も入力ファイルのリダイレクトをすれば毎回打つ必要も無いし
コンソールで応答させるとプログラムが状態を持つことになるから複雑になる 俺は起動パラメータに指定するほうが好きだな 入力エラーの処理を一箇所に纏められるし
コンソール以上に簡単な入力 I/F を
>>905 が開発したと聞いて、やって来ました。
※ まあ、そこそこトラップがあると言うなら同意せざるを得ないが。
標準入出力のありがたみが分からんとは嘆かわしい
起動パラメータだと、プログラムの出力に応じた入力ができないだろ。 例えば、起動パラメータだけで、hit & blow とか作れるのか?
俺が言いたいのは、
C言語学習のための課題で、本筋と関係がないくせに複雑になるコンソール入力をわざわざ使うのはどうなの?ってこと
はっきり言って
>>903 の課題はファイルへの書き込みよりもコンソール入力部分のほうが遥かに難しいじゃん
そりゃ普段必要ならコンソール入力使うわ
複雑たって経験者なら大したことないし
ゲーム等は上下左右とABボタンが最悪あればいいから 入力インターフェースとしては非常にシンプルだな ループの中でif (IsPush(UP)) { ... } とか書けばいいだけだし ただし入力インターフェースを準備するライブラリの構築とか 入力インターフェースが限定されてるが故に逆に処理が面倒になるってのはあるがw 書き込むファイル名や友人の名前、誕生日をドラクエ3の復活の呪文みたいに入力するのは苦痛でしかないw
>>911 >>906 でも書いたが、入力リダイレクトを使えば良い
program.out < data.in
とか、
linuxの世界は入力・出力リダイレクトとパイプがあるから
実行ファイルのモジュール化が出来てそれぞれのモジュールをシンプルに作れて
複雑な事も出来るようになってる、あれは素晴らしい
>>914 パイプとリダイレクトは GUI 全盛の世にあっては、いささか古臭いという気がしないでもないですが。
とはいうものの、GUI にパイプの考え方がないのは惜しい。
何か一つ難癖を付けなきゃ気が済まないんだろうなQは お前最低だよ リアルでも嫌われ者だろ?
レガシーおじさんだらけでキモい 下手に雑談に参加せず淡々と宿題を処理するのがいいみたいだな
>>916 私見を述べているだけですね。それを難癖とか被害妄想もいいところ。統失ですか?
リアルでは天然ボケまくりの人気者です嘘です。
開発する上でそのレガシーに触れないで済む現場ってどんなとこよ
そもそもパイプ自体はWindowsにもあるだろ って突っ込んじゃいけないのかな
Windowsにももちろんあるな、 CygwinやWPS入れて無いデフォだとツール群が足りて無い感があるけどもやっぱり便利
>>922 コンソールで
a.exe | b.exe
と書くと
a.exeの標準出力がb.exeの標準入力になる機能のこと
|をパイプと呼ぶ
findstrは普通に便利 標準ってとこが特に
>>913 ,921
C言語難しすぎワロタwww
出題者は自分で解答作ってみたんですかね^^;
>>925 うにコードエンコーディングのファイルは探せなくね?
>>918 と統失のQが申しております
私見が邪魔なんだよ
黙ってろ
>>928 それで解決する内容をちゃんと理解してるのかちょっとだけ心配だよ
ユニコード(というくくりでいいのか?流れ的に。)ファイルの日本語は検索できないよ。
あと、findstrは他にもいろいろ残念な気持ちになることが多いので、携帯性の高いツール群を持っておくと便利。
年明けから激しくスレ違いでスマヌ
>>931 utf-8だけはどう足掻いても使えないのね。
重宝してたのに残念だ。
935 :
デフォルトの名無しさん :2012/01/03(火) 22:27:22.56
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 一番下に [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 2012/01/08 [5] その他の制限:プログラムを習い始めてまだ半年程度なので、出来るだけ簡単にお願いします 問: 4桁の数字を与えられたとき、4つの数字を一回ずつ使って(使用する 順序は問わない)10を作る。 使える演算は加減乗除。 例えば、 1234 --- 1+2+3+4 = 10 1234 --- 3*4-1*2 = 10 6789 --- (7+8)*6/9 = 10 6789 --- 8*(9-7)-6 = 10 6789 --- 6+8/(9-7) = 10 1199 --- (1+1/9)*9 = 10 のようにする。 4桁数字を与え、それを使って10になるような全ての数式を 出力するC言語のプログラムを作れ。 よろしくお願いします
>>935 とりあえず、4つの数字を受け取って、計算する関数をてんこ盛りに作ってみてはどうか。
加減乗除+括弧?
およそ39万通りか
393939
387,072通り中の4,241個であってる?
C#面白いな、こんなの出来るんだ
yield returnはマジ便利
Linqも使ってるよな PLinqを使うとマルチコアが即使われるので結構いい でも使い方に注意が必要だけど
1199 1027 とかも、出して。
CreateRPNs()内のcontinueを省いたらいけるよ
951 :
デフォルトの名無しさん :2012/01/04(水) 10:37:00.48
935です。 >936 それでもできないことはないと思うんですが、抜けがあると思うと怖い… >937 RPNなのかなあ。問にある例をみるとなんか違う気が。。。 >938 そうですね、問題文中には括弧書いてないですが、使えるはずです >942,948 ありがとうございます!!
しまった。 有理数で計算しないと駄目か
こんなん全パターン計算してみるしかないだろ。ソース見てないが。
いや、それは誰でもわかってるよ むしろそうじゃないやり方のソースがあるなら知りたい
[1] 授業単元: [2] 問題文(含コード&リンク):C++でレースゲーム ・実行イメージ ------------------------------------------- |・レースエントリー | エントリー台数を入力してください→ | | | | エントリー台数を入力してスタート。 エントリー台数で入力した台数を表示し、画面を一周してゴール。何着かをそれぞれに表示。 最後にレース終了と表示で終了。 車は走ってる最中にスピードアップしたりする。 スピードアップ中はスピードが上がってるとわかる表示にする。 C++で作る。必ずポリモーフィズムを実装。 この仕様が最低条件なのでできればこれに+α加えてもらえればうれしいです。 お手数ですが、コメントのほうもお願いします [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008 [3.3] 言語: C++ [4] 期限: ([2012年1月8日13:00まで] [5] その他の制限:お手数ですがコメントのほうよろしくお願いします。
N個の数字と計算値が与えられたとき一つの解をできるだけ高速に求めるプログラム。
> 画面を一周してゴール コンソールアプリで画面一周させるってこと? それともウィンドウに描画するの?
______ r〃〃〃 f7⌒ろ) l‖‖‖ || f灯 |‖‖‖ || | | |儿儿儿._」⊥厶 〔__o____o_≦ト、 . i / ⌒ ⌒ ヽ ) !゙ (・ )` ´( ・) i/ | (_人__) | \ \ `ー' / / ー- 、 . ,ィ(⊆≧リ≦⊇)〃 / rク\ . / | ̄r少}¨ ̄〃 / /′ ヽ 〃 l | l| | l| 〃 / / └ヽ / l |l | |l/″ / ! 厂 \ く, Y ! l」fレト! / | / 1 丿 | | 丿} じ’ / | / | / l | `¨ / レ′ | 真の思考停 (在位 2009年9月16日〜2010年6月8日) 民主朝の初代考停、言行不一致、虚言、脱税、 そして外交において巨大な負の遺産を築いた。
963 :
デフォルトの名無しさん :2012/01/04(水) 15:53:34.25
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
http://codepad.org/z9fLj3yb 3目ならべで決められた場所に○を入力(1 1とうったら真ん中に○)したいです。
上記のプログラムを改良してもらいたいですm(__)m
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: Visual studio 2010
[3.3] 言語: C
[4] 期限: 今日中
[5] その他の制限: 基本なことしか習ってませんm(__)m
>>935 で一つ見つけたらリターンするやつ。
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
#define ER(y,n,p) p=y.begin(); advance( p, n ); y.erase(p);
#define HN sk=keisan_sub(kei,ST, y); if(sk!="") return sk;
string keisan_sub(double kei, vector<string> siki, vector<double> x) {
int xsz=x.size(); if(xsz==1) { if(abs(x[0]-kei)<0.01) return siki[0]; return ""; }
int m,n; vector<double> y; vector<double>::iterator p; vector<string> ST; vector<string>::iterator q;
for(m=0;m<xsz-1;m++) for(n=m+1;n<xsz;n++) {
y=x; ST=siki; ER(y,n,p);ER(y,m,p); ER(ST,n,q);ER(ST,m,q);
string s=siki[m],t=siki[n],sk;
y.push_back(x[m]+x[n]); ST.push_back("(" + s + " + " + t + ")"); HN;
int sz=y.size()-1, STsz=ST.size()-1;
y[sz]=x[m]*x[n]; ST[STsz]="(" + s + " * " + t + ")"; HN;
y[sz]=x[m]-x[n]; ST[STsz]="(" + s + " - " + t + ")"; HN;
y[sz]=x[n]-x[m]; ST[STsz]="(" + t + " - " + s + ")"; HN;
y[sz]=x[m]/x[n]; ST[STsz]="(" + s + " / " + t + ")"; HN;
y[sz]=x[n]/x[m]; ST[STsz]="(" + t + " / " + s + ")"; HN;}
return ""; }
string keisan(double kei, vector<double> x) {
char c[9]; int n; vector<string> siki;
for(n=0; n<x.size(); n++) { sprintf(c,"%.1f", x[n]); siki.push_back(c); }
return keisan_sub(kei, siki, x); }
void main(){ vector<double> x; x.push_back(1); x.push_back(2); x.push_back(3); x.push_back(4); cout<<keisan(10, x)<<endl; }
967 :
デフォルトの名無しさん :2012/01/04(水) 17:22:05.69
[1] 授業単元:計算機アルゴリズムT [2] 問題文(含コード&リンク): 設問1-1 y=2x2乗+3(-10≦x≦10)を刻み幅1で計算し、x、yの組を1行ごとにファイルに書き込むプログラムを作成しなさい。 設問1-2 上記設問1-1のプログラムが作成したファイルを読み込んで xとyの値をprintf文で表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS:Windows vista [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] 言語:C [4] 期限:[2012年1月7日8:00まで] [5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文 繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数 条件分岐if文、要素番号idx使用の書換、データの入れ替え 条件分岐・論理演算子を用いたif文の条件、if文、else if文 switch文、ポインタ変数・演算子*と&、関数・プロトタイプ宣言と関数定義 引数と戻り値、関数の引数とポインタ、関数に配列を渡し、呼び出し側へ戻す方法 関数から関数を呼び出す方法、大域(global)変数、局所(local)変数、文字型変数 文字列の代入、キーボードからの文字列入力、char型ポインタ変数 構造体・メンバ変数への数値の代入、構造体・ポインタを使ってメンバ変数を指定 ファイル操作・ファイルへのデータの書き込み、ファイルからのデータの読み込み EOFの判定は習いました。 宜しくお願いします。
次スレ立てます
つぎおつ
>>973 プログラム作成本当に有難う御座います、誠に申し訳ないのですが
設問1-1のプログラム、設問1-2のプログラムという風に別々にあげてもらえないでしょうか?
お手数をおかけしますが宜しくお願いします
ものもあって構成も簡単なんだから自分でやってみたらどうだろう
>>978 そうですね
ちょっとやってみます
出来なかったら、また書き込みします
981 :
デフォルトの名無しさん :
2012/01/05(木) 18:09:24.56