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

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 148代目
http://hibari.2ch.net/test/read.cgi/tech/1305867431/
188 :デフォルトの名無しさん2011/06/06(月) 18:28:46.02
>>187
>>1
402 :デフォルトの名無しさん2011/06/11(土) 00:13:39.48
>>401

>>1
>後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
616 :デフォルトの名無しさん2011/06/15(水) 10:42:22.95
>>615
>>1
3 :ご注意2011/06/04(土) 15:44:48.86
このスレは偽善(教育活動の妨害)かつ
偽悪(適切でない教育啓蒙活動の被害の抑止)です。
ご利用には十分にご注意ください。
134 :デフォルトの名無しさん2011/06/05(日) 22:48:58.90
>>133
>>3
135 :デフォルトの名無しさん2011/06/05(日) 22:57:11.44
>>134
頼むから別スレ立ててそこでやってくれ
5 :デフォルトの名無しさん2011/06/04(土) 15:53:02.76
確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
6 :デフォルトの名無しさん2011/06/04(土) 16:13:28.41
借りた覚えのないメモリを勝手にfreeで返すとエラーになるね
7 :デフォルトの名無しさん2011/06/04(土) 16:15:52.80
借りたメモリを返さないのは借金を返さない泥棒と同じだよね
9 :デフォルトの名無しさん2011/06/04(土) 16:43:54.65
mallocで借りたメモリをmemsetでゼロクリアしてからfreeするってやっぱりマナーというか常識だよね。
11 :デフォルトの名無しさん2011/06/04(土) 17:08:41.35
971 名前:デフォルトの名無しさん[sage] 投稿日:2011/06/04(土) 13:52:02.66
取りあえず◆QZaw55cn4cにはCPU-ZでCore2DuoとPhenomX6の
CPU、Cashes、Mainboard、SPD、Graphicsのスクリーンショットを
PNGでうpしてもらいましょうか
証拠としてはそれで十分だと思いますが

972 名前:デフォルトの名無しさん[sage] 投稿日:2011/06/04(土) 13:57:22.52
いや待てExif情報入りのJPEGの方がいいな
PNGだとどこかからやら引っ張ってくるかもしれませんからね
Exifが入ってると日時が入るので捏造しにくい
22 :デフォルトの名無しさん2011/06/04(土) 19:26:56.38
>>11
それってすごいスペックなの?
23 :デフォルトの名無しさん2011/06/04(土) 20:17:36.01
QZが嘘を付いて大見得張っているかどうか>>11ですぐわかる
いつまでもうpしない時は嘘で決定な
13 :デフォルトの名無しさん2011/06/04(土) 17:28:55.69
[1] 授業単元:繰り返し・条件分岐
[2] 問題文(含コード&リンク):
3以上40未満の整数Nを入力したとき、「*」の記号を使い、一辺の長さがNの中を塗り潰さない正方形を描画するプログラムを作成しなさい。
例: 3
***
* *
***
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

14 :デフォルトの名無しさん2011/06/04(土) 17:51:36.32
>>13
#include <stdio.h>
int main(int ac, char **av)
{
int n, i;
const char *ast = "****************************************";
const char *spc = " ";

printf("3以上40未満の整数Nを入力してください ");
if (scanf(" %d", &n) != 1 || n < 3 || n > 40) {
fprintf(stderr, "入力エラーです\n");
return 1;
}
printf("%.*s\n", n, ast);
for (i = 1; i < n - 1; i++)
printf("*%.*s*\n", n-2, spc);
printf("%.*s\n", n, ast);
return 0;
}
15 :デフォルトの名無しさん2011/06/04(土) 17:52:54.14
>>13
#include <stdio.h>
int main(int ac, char **av)
{
int n, i;
const char *ast = "****************************************";
const char *spc = " ";

printf("3以上40未満の整数Nを入力してください ");
if (scanf(" %d", &n) != 1 || n < 3 || n >= 40) {
fprintf(stderr, "入力エラーです\n");
return 1;
}
printf("%.*s\n", n, ast);
for (i = 1; i < n - 1; i++)
printf("*%.*s*\n", n-2, spc);
printf("%.*s\n", n, ast);
return 0;
}
18 :デフォルトの名無しさん2011/06/04(土) 18:19:47.50
>>13
#include <stdio.h>

int main()
{
int n, i, j;
char x[40][40] = {0};
scanf(" %d", &n);
if (n < 3 || 40 <= n) {
printf("error\n");
return 1;
}
for (i = 0; i < n; i++) {
memset(x[i], '*', n);
}
for (i = 1; i < n - 1; i++) {
memset(&x[i][1], ' ', n - 2);
}
for (i = 0; i < n; i++) {
printf("%s\n",x[i]);
}
return 0;
}
29 :デフォルトの名無しさん2011/06/04(土) 22:47:20.76
>>13
#include <stdio.h>
int
main()
{
int n, i, yoko, tate;
scanf("%d", &n);
for (i = 0; i < n * n; i++) {
yoko = i / n;
yoko = yoko * ((yoko + 1) % n);
tate = i % n;
if (!tate)
printf("¥n");
tate = tate * ((tate + 1) % n);
printf("%c", !(yoko * tate) ? '*' : ' ');
}
return 0;
}
17 :デフォルトの名無しさん2011/06/04(土) 18:05:02.45
[1] 授業単元:配列
[2] 問題文(含コード&リンク):
10人の身長(cm単位の実数)を入力させ、配列に記憶する。
その後、平均身長を求めて表示した後、10人分の身長を表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

20 :デフォルトの名無しさん2011/06/04(土) 18:49:58.50
[1] 授業単元:配列
[2] 問題文(含コード&リンク):
それぞれ10個の要素を格納する整数型配列をAとBと用意する。
Aに10個の整数を入力させた後、平均値を求める。
Bのi番目の要素に、(Aのi番目の要素の値−平均値)の値を保存する。
AとBの対応する要素ごとに、10行並べて表示しなさい。
21 :デフォルトの名無しさん2011/06/04(土) 19:10:47.09
>>20
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで
24 :デフォルトの名無しさん2011/06/04(土) 20:24:13.02
>>20
Aには10個の値が入るが、Bにはi番目要素の
値以外は入るチャンスがない。さて・・・
25 :デフォルトの名無しさん2011/06/04(土) 20:31:32.08
>>24
日本語読めないんですか?
26 :デフォルトの名無しさん2011/06/04(土) 20:38:17.97
>>20 暇だ
#include <stdio.h>
#define a printf
#define b scanf
#define c double
#define d int
#define e main
#define f void
#define g "%lf"
#define h ", "
#define i "\n"
#define j return
#define k if
#define l sizeof
#define m(a) l(a)/l(*a)
#define n for
#define o 10
#define p(i,a) n(i=0;i<m(a);i++)
d e(f){c A[o],B[o],C=0;d D;p(D,A)k(b(g,&A[D])!=1)j(-1);p(D,A)C+=A[D];C/=m(A);p(D,B)B[D]=A[D]-C;p(D,A)a(g h g i,A[D],B[D]);j(0);}
27 :デフォルトの名無しさん2011/06/04(土) 20:53:10.89
>>20
http://codepad.org/JlwDWfLY

>>24
こんな感じでいいと思うんですが。
46 :デフォルトの名無しさん2011/06/05(日) 09:52:00.36
>>24
相変わらずの日本語の読めなさw
106 :デフォルトの名無しさん2011/06/05(日) 15:45:21.56
>>24ってキューだろ?
日本語読めなさすぎて吹いたw
107 :デフォルトの名無しさん2011/06/05(日) 15:49:56.72
>>106
違いますね。私は >>27。
それにしても、延々とかまってくれる人がいてうれしいですね。きたるべきモリタポスレでもよろしくお願いいたします。
324 :デフォルトの名無しさん2011/06/09(木) 19:51:07.73
>>26
すげぇ。おもしれぇコードだな
327 :デフォルトの名無しさん2011/06/09(木) 20:11:12.99
>>324
いまさらどうした?
28 :デフォルトの名無しさん2011/06/04(土) 20:54:23.06
codepadはscanfの入力をどうあつかってるんだろ?
42 :デフォルトの名無しさん2011/06/05(日) 07:06:38.60
>>28
http://codepad.org/vBBnCYwX
どう扱うもなにも普通だよ
45 :デフォルトの名無しさん2011/06/05(日) 09:24:26.98
>>28
http://codepad.org/XnQc4INA
HTTP なんとかてのはどうやってよむんだろう。
31 :デフォルトの名無しさん2011/06/04(土) 23:33:38.96
[1] 授業単元:繰り返し(for)・条件分岐
[2] 問題文(含コード&リンク):
2〜100までの数値について、素因数に分解して実行結果例のように表示するプログラムを作成しなさい。

2 = 素数です。
3 = 素数です。
4 = 2 × 2
...(省略)...
99 = 3 × 3 × 11
100 = 2 × 2 × 5 × 5
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:月曜まで
[5] その他の制限: 配列やポインタ等は習っていません
32 :デフォルトの名無しさん2011/06/05(日) 00:06:35.77
>>31
#include <stdio.h>

int soinsuubunkai(int value, int primes[]){
int i, index=0;
for(i=2;i*i<=value;i++){
while(value%i==0){
primes[index++]=i;
value/=i;
}
}
if(value>1) primes[index++]=value;
return index;
}

int main(void){
int i, j, primes[7], prime_num;
for(i=2;i<=100;i++){
prime_num=soinsuubunkai(i, primes);
if(prime_num==1){
printf("%d = 素数です\n", i);
}else{
printf("%d = %d", i, primes[0]);
for(j=1;j<prime_num;j++)
{
printf(" × %d", primes[j]);
}
printf("\n");
}
}
return 0;
}
33 :デフォルトの名無しさん2011/06/05(日) 00:07:03.74
>>31
#include <stdio.h>
int main(void) {
  static unsigned char primes[101] = {0}; /** include 0 */
  unsigned int i, j, k, primes_nr = sizeof(primes)/sizeof(*primes);;
  primes[2] = primes[3] = 1;
  for (i = 5; i < primes_nr; i += 2) {
    for (j = 3; j * j < i; j += 2) {
      if (!primes[j]) continue;
      if (i % j == 0) break;
    }
    primes[i] = j * j < i ? 0 : 1;
  }
  for (i = 2; i < primes_nr; i++) {
    if (primes[i]) {
      printf("%u = 素敵です\n", i);
      continue;
    }
    printf("%u = ", k = i);
    for (j = 2; j < primes_nr; j++)
      if (primes[j] && k % j == 0) {
  k /= j; printf(" %u", j);
  break;
      }
    for (j = 2; k != 0 && j < primes_nr; j++)
      while (primes[j] && k % j == 0)
  k /= j, printf(" × %u", j);
    printf("\n");
  }
  return 0;
}
37 :デフォルトの名無しさん2011/06/05(日) 00:35:02.54
>>31
#include <stdio.h>

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

for(i=2;i<=100;i++)
{
x=i;
printf("%d = ", i);
for(j=2;j*j<=x;j++)
{
while(x%j==0)
{
printf("%s%d", (x!=i)?" × ":"", j);
x/=j;
}
}
if(x==i) printf("素数です");
else if(x>1) printf(" × %d", x);
printf("\n");
}
return 0;
}
39 :デフォルトの名無しさん2011/06/05(日) 01:44:54.95
>>31
#include <stdio.h>

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

for(i = 2; i <= 100; i++) {
printf("%d = ", i);
for(j = i, k = 2; k * k <= j; ) {
if(j % k == 0) {
printf("%d × ", k);
j /= k;
}
else k++;
}
if(j == i) printf("素数です\n");
else printf("%d\n", j);
}

return 0;
}
41 :デフォルトの名無しさん2011/06/05(日) 06:40:36.80
結局QZのCPU-Zのスクショのうpはなかったですね
彼は虚言癖を持っているという事も判明しました
もちろん無職で今も850MHzのPen3ノートのみでしょう
43 :デフォルトの名無しさん2011/06/05(日) 08:58:25.12
>>41
処方箋は飲んだ?
ちゃんとお医者さんの言うこと聞かないと駄目だよぉ。
44 :デフォルトの名無しさん2011/06/05(日) 09:18:55.20
>>41
処方箋は飲んだ?
ちゃんとお医者さんの言うこと聞かないと駄目だよぉ。
49 :デフォルトの名無しさん2011/06/05(日) 11:01:14.17
>>44
( ゚Д゚)ハァ?本当にCore2DuoとPhenomX6を持っているのならスクショをうp
出来るはずだろ
それがないという事は、嘘をついていたという事だ
つまり大言壮語だったという事です
55 :デフォルトの名無しさん2011/06/05(日) 11:34:12.11
>>49
処方箋は飲んだ?
ちゃんとお医者さんの言うこと聞かないと駄目だお。
47 :デフォルトの名無しさん2011/06/05(日) 10:11:07.42
QZさんのプロセッサは、まぁPIII850MHzかもしれないけど、それが何台あって
どんだけシームレスに結合しているかわかりゃしないから怖い
48 :デフォルトの名無しさん2011/06/05(日) 10:58:44.64
>>47
それはない
50 :デフォルトの名無しさん2011/06/05(日) 11:12:10.04
ここはCPUごときで大言壮語と言う言葉を使えるんだw
58 :デフォルトの名無しさん2011/06/05(日) 11:43:04.35
>>50
ここは屁ノムごときで大言壮語という言葉をつかえるんだw
66 :デフォルトの名無しさん2011/06/05(日) 12:30:09.97
>>58
今◆QZaw55cn4cが使ってるPenIII850MHzより格段に上でしょ
無職で金がないから買えないだろうけどw
69 :デフォルトの名無しさん2011/06/05(日) 13:02:09.86
>>66
速いプロセッサは大きなプロジェクトの大きなコードを
書くのには圧倒的に有利だけど、小さいが速度を
要求されるコードでは、プロセッサの速さが意外に仇
になって、微妙に時間を食う場所とかが見つけにくくな
るのでコードのチューニングがしにくくなるので
一概に有利とは言えないんじゃね
高精度スローモーションが可能な録画機はめちゃくちゃ
高い
70 :デフォルトの名無しさん2011/06/05(日) 13:04:31.03
>>69
最大の皮肉だなw
QueryPerformanceCounterとかプロファイラとかいろいろあるのになw
72 :デフォルトの名無しさん2011/06/05(日) 13:11:43.19
>>70
そういうのは遅いプロセッサで、ノンプリエンプティブなタスクスケジューリング
なOSの上で有効だった話
マルチタスク環境、特にマルチプロセッサとかハイロックプロセッサでは
バックグラウンド処理が多いので、タイマで処理時間計測しても精度が
もともと悪いだろ
76 :デフォルトの名無しさん2011/06/05(日) 13:21:14.33
>>72
QueryPerformanceCounter()使った事あるのか?ないだろ
SetPriorityClass()になぜHIGH_PRIORITY_CLASSや
REALTIME_PRIORITY_CLASSがあるか知ってる?

特にREALTIME_PRIORITY_CLASSはドライバも含めて
最優先順位で実行され、ほとんどノンプリエンプティブのOS上で
動かしているのと同等の実行環境になる

逆に言うとREALTIME_PRIORITY_CLASSを設定して永久
ループに故意に入れるとリセットするしか止める方法がなくなる
77 :デフォルトの名無しさん2011/06/05(日) 13:26:59.21
>>76
質問w
マルチコアでもリセットしないと駄目になる?
78 :デフォルトの名無しさん2011/06/05(日) 13:27:49.32
>>77
マルチコアとHTは例外です
でも使用に注意が必要な事には変わりない
80 :!=722011/06/05(日) 13:31:01.97
>>76
QueryPerformanceCounterっていうのをつかったことないです。
簡単に調べた感じだと、QueryPerformanceCounterっていうのはハードウェアカウンタを
読み込むだけの処理っぽい気がするけど、プロファイラとどう関係あるの?
81 :デフォルトの名無しさん2011/06/05(日) 13:36:25.36
>>80
プロファイラには2種類あり、各関数を呼び出す回数を測定するものと、
各関数の消費CPU時間まで測定する物がある

しかし大まかに言って呼び出す回数の多い関数を優先的に高速化すれば
明らかにプログラム全体の実行速度が上がる

QueryPerformanceCounterとプロファイラは関係があるとは一言も言ってない
82 :デフォルトの名無しさん2011/06/05(日) 13:38:21.09
>>81
了解
丁寧な説明thx
52 :デフォルトの名無しさん2011/06/05(日) 11:16:04.61
QZ とやらも糞なのかもしれないけど、それに粘着してるやつも似たようなもんだ。
53 :デフォルトの名無しさん2011/06/05(日) 11:17:43.00
>>52==◆QZaw55cn4c
56 :デフォルトの名無しさん2011/06/05(日) 11:39:12.00
>>52
宿題をとかない人と一緒にされるのは、ちと抵抗があるのですけれども。
57 :デフォルトの名無しさん2011/06/05(日) 11:41:10.82
>>55も>>56もQZの自演です

>>56 俺もちゃんと宿題を解いてますけど何か?
60 :俺もなぁ〜 ってか。2011/06/05(日) 11:46:59.62
>>53
やれやれ、お決まりの自演認定か。
相当暇なんだな。(w
62 :デフォルトの名無しさん2011/06/05(日) 11:49:14.35
>>56
スレ違いのレスを延々続けてる奴らははたから見たら一緒だよ。

もちろん俺も含めて。
74 :デフォルトの名無しさん2011/06/05(日) 13:19:17.69
>>56
メモリリーク満開の回答してるクズにメモリリークと指摘されるのはとても心外なんだが。
98 :デフォルトの名無しさん2011/06/05(日) 14:19:48.10
>>74
それは信者の基準でメモリーリークしている、というだけで、信者でないあなたが、都合のいいときに信者の基準を持ち出すのは、
バルフォア宣言/フサイン-マクマホン協定/サイクス・ピコ協定並みの三枚舌外交ですね。
102 :デフォルトの名無しさん2011/06/05(日) 15:02:15.27
>>98
てめーらから仕掛けてきた宗教戦争でコテンパンにされて教義の修正したうんこは
毒を撒き散らすのはヤメろ。てめーの所為で単位落とすのが出てくるぞ。
59 :デフォルトの名無しさん2011/06/05(日) 11:44:19.29
もはや宿題を解く事だけがアイデンティティの◆QZaw55cn4c
無職だもんなあ
61 :デフォルトの名無しさん2011/06/05(日) 11:48:38.08
QZは、自分に絡むやつは宿題解けないor自分より低レベルって自動的に変換するからなw
63 :デフォルトの名無しさん2011/06/05(日) 12:09:54.18
>>61
それしか奴には他に誇る物がないからなw
しかも肝心の答えが糞コード
64 :デフォルトの名無しさん2011/06/05(日) 12:15:36.88
糞じゃなくてゲロい(というか糞に失礼)
65 :デフォルトの名無しさん2011/06/05(日) 12:18:01.41
>>64
ゲロに失礼だろ
謝れよカス
67 :デフォルトの名無しさん2011/06/05(日) 12:30:56.95
Cで糞コードを書くのは非常に難しいだろ
C++で糞まじりのゲロコードを書くほうがまだ簡単
Javaだともっと簡単か.
ただ本当に糞コードを書きやすいのは...
68 :デフォルトの名無しさん2011/06/05(日) 12:58:45.56
QZの頭の中では欲しい物がいつの間にか「持っている物」に変わっているからなあ
恐ろしい恐ろしい
71 :デフォルトの名無しさん2011/06/05(日) 13:10:02.08
>>68
ごめん。
何いってんのかほんとにわかんない。
頭平気か?
73 :デフォルトの名無しさん2011/06/05(日) 13:15:39.50
>>71
バカ走ね
75 :デフォルトの名無しさん2011/06/05(日) 13:21:03.75
>>73
相手に分かるようにしないと駄目だろ。
>QZの頭の中では欲しい物がいつの間にか「持っている物」に変わっているからなあ
>恐ろしい恐ろしい
っていうのがどこのレスから判断したのかぐらいは示さないと。
79 :デフォルトの名無しさん2011/06/05(日) 13:30:44.92
俺が言いたかったのは

>マルチタスク環境、特にマルチプロセッサとかハイロックプロセッサでは
>バックグラウンド処理が多いので、タイマで処理時間計測しても精度が
>もともと悪いだろ

これはSetPriorityClass()でREALTIME_PRIORITY_CLASSを設定した
場合には当てはまらないという事

マルチコアでも一つのコアが完全に一つのプロセスに占有されるので、極めて
高精度な時間測定が可能
83 :デフォルトの名無しさん2011/06/05(日) 13:44:38.62
>>79
GetTickCount() や timeGetTime() に比べて、だいぶマシというだけで、
極めて高精度と言い切るのはどうかと思う。
84 :デフォルトの名無しさん2011/06/05(日) 13:48:58.96
>>83
x86だとRDTSC読んでるんだぞ
しかも使用するドライバまで全てロックするので、例えマルチコア環境でも
もしそのプロセスがディスクの入出力を行っていたらそのプロセスが終了するまで
他のプロセスはディスクの入出力に割り込めない

マウスもしかり
86 :デフォルトの名無しさん2011/06/05(日) 13:51:10.10
>>83
とにかく一回使ってみてから言ってくれよ、な
実行の度にどの位CPU時間が変化するのかやってみてから言ってくれ
87 :デフォルトの名無しさん2011/06/05(日) 13:52:47.51
>>84
RDTSCは命令だ。TSCが正しい。
TSCの使用権利がドライバやアプリなどの全プロセスで公平なだけであって、
アプリがRDTSCを実行している間はRDTSCを実行しようとしているドライバが
待たされる可能性があるってことでしょ?
プロセスが終了するまでってのは違うかな。
90 :デフォルトの名無しさん2011/06/05(日) 14:00:27.60
>>87
違う違う
REALTIME_PRIORITY_CLASSの意味をよく考えてくれ
ドライバは大きく分けて二つの部分から出来ている
ストラテジルーチンとボトムハーフからなる

これはマルチプロセス/マルチスレットでは必須の構成である事は
知っているだろう

しかしREALTIME_PRIORITY_CLASSを設定してしまうとストラテジ
への登録すらロックされてしまい、他のプロセスは一切リソースを使う
事が出来なくなってしまう
91 :デフォルトの名無しさん2011/06/05(日) 14:05:38.33
>>84-87
あ〜、すまん。

PCのシステムクロックを「極めて高精度」と言うとは思わなかったものでな。
92 :デフォルトの名無しさん2011/06/05(日) 14:07:32.14
>>90
>しかしREALTIME_PRIORITY_CLASSを設定してしまうとストラテジ
>への登録すらロックされてしまい、他のプロセスは一切リソースを使う
>事が出来なくなってしまう
まじすか。。。
ここまでできると理想的な計測環境になるなぁ。
せいぜい、ネットワークからパケット受け取ったりしたときのボトムハーフが動くくらいか。
93 :デフォルトの名無しさん2011/06/05(日) 14:10:06.36
>>92
それも止まるぞ
俺の所でやってみたらバックグラウンドで高速度でファイル転送中に
REALTIME_PRIORITY_CLASSを設定した実験プログラムを動かしたら
その間ネットの転送が止まった
96 :デフォルトの名無しさん2011/06/05(日) 14:13:35.24
>>93
ネットワークドライバはボトムハーフでパケットをキューに積み上げて、
残りの作業をストラテジルーチンへ任せるはずなので(タイマで登録したりする)、
ボトムハーフ部分は動いてると思われ。
ネットワークドライバの送信パケット・受信パケットのカウンタは増えるんじゃないかな。
97 :デフォルトの名無しさん2011/06/05(日) 14:15:57.19
>>96
それは受信の時の話な
しかもイーサネットコントローラに大きく依存する
送信の時はやはりストラテジ→ボトムハーフの順に進む
というかストラテジに登録しないとボトムハーフが呼び出されないでしょ
85 :デフォルトの名無しさん2011/06/05(日) 13:49:58.00
x86系はデフォで高精度カウンタがあるから、極めて高精度って言い切ってもいいかも
88 :デフォルトの名無しさん2011/06/05(日) 13:55:51.82
付け加えて言うと、SetThreadAffinityMask()を使ってコアを一つのスレッドに
固定するとマルチコア環境ではさらに精度があがる

というかRDTSCを直接読む場合はSetThreadAffinityMaskを使わないと
意味のない数字が出る確率が高い
89 :デフォルトの名無しさん2011/06/05(日) 13:56:30.86
コテもつけずに一連の話をブツ切りで出しても分かってもらえないよ
94 :デフォルトの名無しさん2011/06/05(日) 14:11:27.30
コマンド終了までの時間計測だけなら timeit コマンドが使える
timeit でググって一番上から辿ればおk
95 :デフォルトの名無しさん2011/06/05(日) 14:12:03.71
だから実際に使用する場合はHIGH_PRIORITY_CLASSまでにしといた方がいい
この先はさすがにスレ違いなのでWin32APIスレにでも行こうぜ
99 :デフォルトの名無しさん2011/06/05(日) 14:20:37.42
お、また頭がおかしいQ何とかが出て来たぞ
101 :デフォルトの名無しさん2011/06/05(日) 14:29:33.11
>>99
QZまで書け。でないとアボーン出来ない
103 :デフォルトの名無しさん2011/06/05(日) 15:26:13.53
Qが他人に二枚舌とか言ってるのを見ると笑うしかないなw
104 :デフォルトの名無しさん2011/06/05(日) 15:38:31.95
>>103
QZまで書け。でないとアボーン出来ない
105 :デフォルトの名無しさん2011/06/05(日) 15:40:44.79
おいQ、早く自慢のCore2DuoとPhenomX6のCPU-Zのスクリーンショット貼れや
それとも持ってないの?w
110 :デフォルトの名無しさん2011/06/05(日) 17:44:02.23
忙しくて手が付けられなかったけど、やっと双方向リスト(単方向リストでもよい)の
アドレスを取得して表にしてそれをソートしてそれを元にリンクを張り直すソートプログラム
が完成した

相当速いです
良ければうpします

次はこれとコムソートで直接リンクをいじるソートと速度を比較してみたい
111 : ◆QZaw55cn4c 2011/06/05(日) 17:45:34.60
>>110
nice!
112 :デフォルトの名無しさん2011/06/05(日) 17:52:47.61
http://codepad.org/FL9rsNdJ

こんな感じになっています
コムソートをこれでやるにはどうすればいいか考えていますが
なかなかスマートなコードが書けそうにないので悩んでいます
113 :デフォルトの名無しさん2011/06/05(日) 19:37:56.15
[1] 授業単元:プログラム
[2] 問題文:得点データをバブルソートを用いて国語の得点の大きい順に並び替えよ
番号 国語 数学
01    78    64
02    68    78
03    83    55
04    91    90
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 明日まで
116 :デフォルトの名無しさん2011/06/05(日) 20:54:01.21
117 :デフォルトの名無しさん2011/06/05(日) 21:07:04.24
>>113
遅れたけどせっかく書いたので
ttp://ideone.com/hlWNB
123 :デフォルトの名無しさん2011/06/05(日) 22:05:49.41
>>117
おいおい構造体の交換にmemmoveなんか使うなよ
ANSI-C(C89)から構造体は=でコピー出来るようになってるだろ
こんなの出すつもりか?
128 :デフォルトの名無しさん2011/06/05(日) 22:11:58.77
>>117
ここまで来たら完全に悪意性があると認められるな
つまり「荒らし」だ
129 :デフォルトの名無しさん2011/06/05(日) 22:18:51.30
>>126
>>117 はQZじゃないだろう。

・プログラムの末尾が /* end */ ではない。
・インデント幅が違う。
・QZ は typedef を嫌う。
・QZ は bubble sort は過去一貫して
http://hibari.2ch.net/test/read.cgi/tech/1305867431/893
http://codepad.org/mF1D4PHi
のように書いてきている。
130 :1172011/06/05(日) 22:19:10.20
>>123
汎用的にしておきたかったのでvoidポインタにしといた。

>>125
確かにそうだわ、俺のは無視して>>116を採用して、っでことで。
131 :デフォルトの名無しさん2011/06/05(日) 22:21:18.08
>>129
ふんふん言われてみれば確かにそうだな
という事はQよりもまだひねくれた奴が潜んでるって事か
133 :デフォルトの名無しさん2011/06/05(日) 22:46:42.10
>>117を提出して講師に「この関数の意味を説明してみたまえ」と言われた時の
>>113の青ざめた顔が目に浮かぶようだ
159 :デフォルトの名無しさん2011/06/06(月) 02:01:20.01
>>141 は >>116 >>117 見習ってバブルソート早くしたほうがいい。ゆっくりでいいから。
164 :1412011/06/06(月) 02:23:53.49
>>159
http://codepad.org/AoVEuUZE
>>117 はバブルソートではなく、選択ソートの一種だと思います。
169 :デフォルトの名無しさん2011/06/06(月) 04:28:40.26
>>130
汎用的にしたかったとしても、memcpyで目的を果たすことはわからないかな。
170 :デフォルトの名無しさん2011/06/06(月) 04:38:40.56
>>168
ご指摘感謝。肝心の部分が抜けていました。

>>159 バブルソートの範囲で速くするべく努めました。
http://codepad.org/ZvwXeaeg
114 :デフォルトの名無しさん2011/06/05(日) 20:24:35.62
[1] 授業単元:配列
[2] 問題文(含コード&リンク):
10人の身長(cm単位の実数)を入力させ、配列に記憶する。
その後、平均身長を求めて表示した後、10人分の身長を表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

115 :デフォルトの名無しさん2011/06/05(日) 20:44:35.87
>>114
#include <stdio.h>

const int PERSONS = 10;

int main()
{
  float heights[PERSONS];
  int i;
  float sum;


  for (i = 0; i < PERSONS; i++) {
    printf("%d人目の身長: ", i + 1);
    scanf("%f", &heights[i]);
  }


  sum = 0.0;
  for (i = 0; i < PERSONS; i++) {
    sum += heights[i];
  }


  printf("%d人の平均身長は%fcm\n", PERSONS, sum / PERSONS);
  for (i = 0; i < PERSONS; i++) {
    printf("%d人目は%fcm\n", i + 1, heights[i]);
  }


  return 0;
}
119 :デフォルトの名無しさん2011/06/05(日) 21:48:47.93
[1] 授業単元:配列の並び替え
[2] 問題文(含コード&リンク):
次の処理を順に行うプログラムを作成しなさい。
要素数5の整数型配列に、すべて異なる整数を入力させる。
入力された順に、配列の中身を表示しなさい。
次に、配列の中身を入れ替え、昇順に並び替えなさい。
並び替えた配列の中身を表示しなさい。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで
120 :デフォルトの名無しさん2011/06/05(日) 21:58:43.60
QZとはなにか?
122 : ◆QZaw55cn4c 2011/06/05(日) 22:02:08.08
124 :デフォルトの名無しさん2011/06/05(日) 22:06:08.64
>>122
消えろ屑
125 :デフォルトの名無しさん2011/06/05(日) 22:07:38.25
それからこの程度の問題にわざわざ関数ポインタを使ってqsort()と同じ形に
まとめる理由は?これ初学者が見たら絶対に意味分からないぞ
126 :デフォルトの名無しさん2011/06/05(日) 22:08:47.23
>>123>>125
QはIOCCCにでも提出するつもりなんだろうよ
132 :デフォルトの名無しさん2011/06/05(日) 22:33:33.48
でも糞◆QZaw55cn4cみたいに糞トリ付けたり金儲けしようとしたりしてない分マシ
136 :デフォルトの名無しさん2011/06/05(日) 22:59:47.10
ハル研究所がやってたプログラムコンテストみたいなスレってある?
137 :デフォルトの名無しさん2011/06/05(日) 23:41:54.13
◆QZ*氏はともかく、このスレに巣食っている精神異常者を
排除することが急務だな。
138 :デフォルトの名無しさん2011/06/05(日) 23:43:25.14
>>137
IDを表示するのが手っ取り早い。
140 :デフォルトの名無しさん2011/06/05(日) 23:51:53.25
[1] 授業単元:配列の並び替え
[2] 問題文(含コード&リンク):
次の処理を順に行うプログラムを作成しなさい。
要素数5の整数型配列に、すべて異なる整数を入力させる。
入力された順に、配列の中身を表示しなさい。
次に、配列の中身を入れ替え、昇順に並び替えなさい。
並び替えた配列の中身を表示しなさい。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

141 :デフォルトの名無しさん2011/06/06(月) 00:13:04.24
142 :デフォルトの名無しさん2011/06/06(月) 00:16:54.09
ID表示賛成、変な粘着を排除した方がいい
143 :デフォルトの名無しさん2011/06/06(月) 00:20:21.72
>>142
このスレのためだけにか?この板の住人全員の同意を得ろよ
勝手過ぎるぞ
145 :デフォルトの名無しさん2011/06/06(月) 00:29:48.63
粘着される方にも問題があると思いますけどね

粘着される奴が一人いるだけで粘着する奴が10人は現れる
どう考えても粘着されるような書き込みをする方が悪い
148 :デフォルトの名無しさん2011/06/06(月) 00:41:13.72
自治厨はスルーを覚えろよw
149 :デフォルトの名無しさん2011/06/06(月) 00:54:15.88
>>148
人のせいにばかりしないで少しは自分の悪い点も改善するよう努力しましょうね
263 :デフォルトの名無しさん2011/06/08(水) 15:29:12.24
>>149
書ききれなかったので補足です。
1つのTriangle構造体の変数を引数としてその構造体が表す関数、1つのTriangle構造体の変数と、
double型の2次元配列(2×2行列A)を引数として引数で与えた三角形を行列Aによって線形変換した後
の三角形(Triangle構造体)を返す関数、2つのTriangle構造体の変数を引数としてその構造体が
合同であれば1、合同でなければ0を返す関数を作成してください。
よろしくお願いします。
151 :デフォルトの名無しさん2011/06/06(月) 01:07:07.95
うんこを擁護してる奴はいない、うんこを叩いている奴を叩いている奴がいるだけだ。
154 :デフォルトの名無しさん2011/06/06(月) 01:11:56.28
>>151
うんこを叩く奴を叩く奴はそいつもうんこっぽい所があるんだろう
それしか考えられない
自分が叩かれているように感じるんだろうな
152 :デフォルトの名無しさん2011/06/06(月) 01:09:18.87
粘着相手に粘着するなって言っても聞くわけない
言えば言うほど、無駄なレスが増えて本人が荒らしになるという矛盾
153 :デフォルトの名無しさん2011/06/06(月) 01:10:12.63
だからQが出て行くのが一番効率がいい
Qが現れる以前は宿題スレは平和だったよな?
155 :デフォルトの名無しさん2011/06/06(月) 01:14:22.39
だから◆QZaw55cn4cが消えるのが一番いいんだよね
156 :デフォルトの名無しさん2011/06/06(月) 01:27:14.79
>>155
結論はそういう事
しかしQZは究極のKYなんで皆に嫌われている事がちっとも分からないらしく
厚かましく居座るからなあ

「俺にここに来るなと言うのは2chのガイドラインのどこに書いてありますか?」とか
また聞いて来そうだし
屁理屈はもう聞き飽きたよQZ・・・・消えてくれ

アスペはどこに行っても嫌われ者なんだよ
お前が無職なのもそのせいだ
157 :デフォルトの名無しさん2011/06/06(月) 01:54:14.28
>>156
QZはい続けるよ。
QZがど嫌いなら、嫌いな奴(自分)がスレから消えたほうが
自分自身のためだよ。精神が変になる前に自己防衛したほうが良い
ど嫌いな奴が居るスレへ来るなんって><
167 :デフォルトの名無しさん2011/06/06(月) 02:47:12.48
>>157
精神は変になりませんのでご安心を
それよりこれからもQZを執拗に叩き続けますよ
160 :デフォルトの名無しさん2011/06/06(月) 02:04:31.12
オーダーどうこう言って反論するからうざいだけ
166 :141, 1642011/06/06(月) 02:39:46.11
>>159
>>164 にはバグがありました。寄せられる方向を間違えていました。バブルソートにとどまる限り最速かなあ。
http://codepad.org/hmR172K7

>>160
んー、それはもうやめます。
161 :デフォルトの名無しさん2011/06/06(月) 02:07:14.67
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
162 :デフォルトの名無しさん2011/06/06(月) 02:10:36.61
>>161
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
163 :デフォルトの名無しさん2011/06/06(月) 02:21:29.33
>>162
>>161
165 :デフォルトの名無しさん2011/06/06(月) 02:24:21.71
>>161を書き込んだ結果が>>162-163なわけだ
余計な書き込みを誘発する効果はあっても、スレ違いの書き込みを減らす効果はないのにな
168 :デフォルトの名無しさん2011/06/06(月) 02:47:59.73
バカが最速とか口にすんなw
171 :デフォルトの名無しさん2011/06/06(月) 04:49:45.61
オーダー一緒だからとかいって全く変えようとしなかったくせに、
なにいまさらiとかflagとか追加してんの?
昔のままのクソコード貫けよw
173 :デフォルトの名無しさん2011/06/06(月) 05:09:59.41
バブルソートだと前にこのスレでもあがってた
void bsort(int *a, int n)
{
int i, j, k;
for(i = n - 1; i > 0; i = k) {
for(j = k = 0; j < i; j++) {
if(a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
k = j;
} } } }
が最速だろ
176 :デフォルトの名無しさん2011/06/06(月) 06:43:19.24
>>173
なるほど。
k より大きいところでは、入れ替え不要なんですね。
175 :デフォルトの名無しさん2011/06/06(月) 05:55:00.71
これ賞金最大10万円だぞ。やってみれば?


【囲碁?】囲連星のAIを作ってみよう【連珠?】
http://hibari.2ch.net/test/read.cgi/gamedev/1154589225/

http://irensei.com/html/ai.html
177 :デフォルトの名無しさん2011/06/06(月) 07:26:37.59
[1]C言語
[2]本文
文字列を置換するプログラム
<条件>
・右記の配列を使用 char str1[] str2[] syougou[] chikan[]
・str1を先頭からコピーしてstr2を作る
このときstr1にsyougouと一致する文字列があればその文字列を見つける毎に文字列chikanに置換
[3] 環境
 [3.1]Windows7
 [3.2]gcc
 [3.3]C言語
[4]明日まで
[5]string.h標準関数は使っておk
178 :デフォルトの名無しさん2011/06/06(月) 07:47:06.34
>>177です
追加補足です
実行例:
    対象文字列を入力してください(str1):aabcabb
    照合文字列を入力してください(syougou):ab
    置換文字列を入力してください(chikan):ABC
    結果文字列は aABCcABCb です
179 :デフォルトの名無しさん2011/06/06(月) 08:54:37.49
>>178
#include <string.h>
#include <stdio.h>
#define SIZE 1024
int main(){
char str1[SIZE], str2[SIZE], syougou[SIZE], chikan[SIZE];
char *it1 = str1, *it1_pre = str1, *it2 = str2;
printf("対象文字列を入力してください(str1):");
scanf("%s", str1);
printf("照合文字列を入力してください(syougou):");
scanf("%s", syougou);
printf("置換文字列を入力してください(chikan):");
scanf("%s", chikan);
while (it1 = strstr(it1_pre, syougou)) {
strncpy(it2, it1_pre, it1 - it1_pre);
it2 += it1 - it1_pre;
strcpy(it2, chikan);
it2 += strlen(chikan);
it1_pre = it1 + strlen(syougou);
}
strcpy(it2, it1_pre);
printf("結果文字列は%sです\n",str2);
return 0;
}
180 :デフォルトの名無しさん2011/06/06(月) 11:37:09.78
[1]C言語
[2]本文
ボウリングのスコアを計算するプログラム
<条件>
・scanfで1投毎のピンを倒した数を入力する。ストライクを出したらそのフレームの二投目は入力しない。 総合スコアを表示する。10フレームとする。
[3] 環境
[3.1]WindowsXP
[3.2]gcc
[3.3]C言語
[4]13時まで
[5]メイン関数一つの中で行いたい。
181 :デフォルトの名無しさん2011/06/06(月) 11:44:42.57
>>180
10フレーム目はどうしてほしい?
あとマルチ死ね
524 :デフォルトの名無しさん2011/06/13(月) 21:30:59.21
>>521
>>180
527 :デフォルトの名無しさん2011/06/13(月) 21:48:36.04
>>524
すみません。
>>180でも出てますが、これだと途中経過の点数を表示させる事が出来ないと言われました。
もし、違うプログラムがありましたら教えて頂けますか?宜しくお願いします。
529 :デフォルトの名無しさん2011/06/13(月) 21:57:13.38
>>527
テンプレ読んだか?
182 :デフォルトの名無しさん2011/06/06(月) 11:47:28.07
10フレーム目はストライクが出れば3回投げるようにしたいです。
183 :デフォルトの名無しさん2011/06/06(月) 12:19:53.61
185 :デフォルトの名無しさん2011/06/06(月) 17:26:53.04
C/C++言語の問題作るスレはあるか?
唯一の正解はなく、スコアを競う問題を作成して、それを解き競うスレ。
186 :デフォルトの名無しさん2011/06/06(月) 17:42:20.44
>>185
【C,C++】 ちょっと問題解いて行け 【勉強】
http://hibari.2ch.net/test/read.cgi/tech/1255277760/

ここでやればいいだろ
スレチ死ね
187 :デフォルトの名無しさん2011/06/06(月) 18:20:40.72
WindowsVista
マイクロソフトビジュアルスタジオ2008
C言語
うるう年を判定するプログラムを作成しなさい
明日まで

お願い致します(T人T*)
190 :デフォルトの名無しさん2011/06/06(月) 18:37:14.06
>>187
#include <stdio.h>
int main()
{
int y;
scanf("%d", &y);
printf("閏年%s\n", y % 400 ? y % 100 ? y % 4 ? "じゃない" : "です" : "じゃない" :"です");
return 0;
}
189 :デフォルトの名無しさん2011/06/06(月) 18:32:46.61
[1] 授業単元:配列の並び替え
[2] 問題文(含コード&リンク):
先手、後手の順番で、x=1,2,3 y=1,2,3の座標の整数値をx yの順番で与えると、その場所に先手ならO、後手なら@を表示して、3目並べを実現するプログラムを作成しなさい。
操作は、先手・後手が交互に座標の数値を1ずつ与えるものとし、入力ミスは考えない。
すでに指定済みの座標かどうかについては判定し、指定済みの座標を入力した場合は、「異常終了」と表示し、プログラムを終了することとする。
この段階では、勝ち負けの判定も行わない。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

191 :デフォルトの名無しさん2011/06/06(月) 18:51:39.56
>>189
#include <stdlib.h>
#include <stdio.h>
enum {SENTE = 'O', KOTE = '@', S = '-'};
int main()
{
char masu[3][3] = {{S, S, S}, {S, S, S}, {S, S, S}};
int i, j, k;
int x, y;
for (i = 0; i < 9; i++) {
scanf("%d%d", &x, &y);
if (masu[x - 1][y - 1] != S) {
fprintf(stderr, "異常終了\n");
return 1;
}
masu[x - 1][y - 1] = i % 2 ? KOTE : SENTE;
for (k = 0; k < 3; k++) {
for (j = 0; j < 3; j++) {
putchar(masu[j][k]);
}
putchar('\n');
}
}
return 0;
}
192 :デフォルトの名無しさん2011/06/06(月) 19:07:53.98
[1] 授業単元:配列の並び替え
[2] 問題文(含コード&リンク):
>>189のシステムを以下のように拡張する。
指定済みの座標を入力した場合、「先手の負け」または「後手の負け」と表示する。
全てのマスが埋まったら、「試合終了」と表示する。
この段階でも、勝ち負けの判定も行わない。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

193 :デフォルトの名無しさん2011/06/06(月) 19:22:43.81
>>191
あー「この段階では、勝ち負けの判定も行わない」の、この段階ってこの問題自体か
まあいいや
http://codepad.org/m7Ko5Iij
199 :デフォルトの名無しさん2011/06/07(火) 01:07:35.54
[1] 授業単元:C
[2] 問題文(含コード&リンク):
>>189のシステムを以下のように拡張する。
指定済みの座標を入力した場合、「先手の負け」または「後手の負け」と表示する。
全てのマスが埋まったら、「試合終了」と表示する。
この段階でも、勝ち負けの判定も行わない。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:今日まで

232 :デフォルトの名無しさん2011/06/07(火) 20:23:12.12
[1] 授業単元:配列の並び替え
[2] 問題文(含コード&リンク):
>>189のシステムを以下のように拡張する。
指定済みの座標を入力した場合、「先手の負け」または「後手の負け」と表示する。
全てのマスが埋まったら、「試合終了」と表示する。
この段階でも、勝ち負けの判定も行わない。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:今日まで

237 :デフォルトの名無しさん2011/06/07(火) 23:15:53.14
[1] 授業単元:配列の並び替え
[2] 問題文(含コード&リンク):
>>191のシステムを以下のように拡張する。
指定済みの座標を入力した場合、「先手の負け」または「後手の負け」と表示する。
全てのマスが埋まったら、「試合終了」と表示する。
この段階でも、勝ち負けの判定も行わない。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:今日まで

238 :デフォルトの名無しさん2011/06/07(火) 23:47:53.88
>>237
23:15で今日までって
240 :デフォルトの名無しさん2011/06/08(水) 00:01:17.67
>>237
修正部分だけ
//fprintf(stderr, "異常終了\n");
printf("%s\n",i % 2? "後手の負け":"先手の負け");



printf("試合終了\n");
return 0;
}
194 :デフォルトの名無しさん2011/06/06(月) 21:48:35.18
[1] プログラミング言語?
[2] 問題文(含コード&リンク):
ボタンを押して別の外部アプリケーション(.exeファイル)を実行するMFCソフトを作成せよ
[3] 環境
 [3.1] OS: win7 64bit
 [3.2] コンパイラ名とバージョン:VC2010
 [3.3] 言語:C++
[4] 期限: 16日まで
[5] その他の制限: 特にありません。.exeファイルは適当なもので構わないとの事です。
ShellExecute()を用いる事は調べてみて分かったのですがどの様に用いるのかがわからないです。
196 :デフォルトの名無しさん2011/06/06(月) 23:56:12.01
>>194
完成品のソース、一番シンプルな状態からメニューバーに test.exe を実行する項目追加した
MFCは共有DLLにしてる、ビルドして何か適当な test.exe って名前の実行ファイルを同ディレクトリに放り込めば動作確認できるはず。
パス: 194
ttp://www.rupan.net/uploader/download/1307371152.zip

これだけだと何なので上記ソースの作成手順も
----------メニュー作成手順-------------
1.何でもいいのでウィザードに任せて新規プロジェクト作成
2.リソースファイル(プロジェクト名.rc)を開く
3.リソースファイルのMenu項目の IDR_MAINFRAME に、新たにメニューを追加
  ※俺の場合だと、ヘルプの右に 外部の実行ファイル(&O) を追加し、
  そのサブメニューに test.exe を追加
4.サブメニュー test.exe のIDを分かりやすいIDにしておく
  ※プロパティの項目ID、俺の場合だと、ID_EXE1

-----------メニューと関数の紐付け手順----------
1.プロジェクト → クラスウィザード
2.クラス名はCXXXViewを選択
3.オブジェクト IDからサブメニュー test.exe のIDを選択
  ※俺の場合だと、ID_EXE1
4.メッセージは COMMAND を選択
5.ハンドラーの追加 ボタンを押下

-----------処理実装手順--------------------
1.CXXXViewに新たに関数が追加されているはず
  ※俺の場合は OnExe1
2.その中に ShellExecute(0, 0, L"test.exe", 0, 0, SW_SHOWNORMAL); を記述


メニューと関数の紐付け手順 はクラスウィザード使わない方法もあるけど、使った方が楽かも。
346 :1942011/06/09(木) 22:58:25.93
>>196
返信遅れましたがありがとうございました。
手順も分かりやすく、大変参考になりました。
198 :デフォルトの名無しさん2011/06/07(火) 00:22:12.11
[1] プログラミング言語C
[2] 問題文(含コード&リンク):
10個のデータを配列a[ ]に入力し、直接挿入法を用いて数値を小さい順に並べ替えて表示せよ

[3] 環境
 [3.1] OS: win7 64bit
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限: 8日
[5] その他の制限:
よろしくお願いします。
200 :デフォルトの名無しさん2011/06/07(火) 01:10:38.47
>>198
#include <stdio.h>

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

for(i = 0; i < 10; i++) scanf("%d", a + i);

for(i = 1; i < 10; i++) {
int temp = a[i];
for(j = i - 1; j >= 0 && temp < a[j]; j--) a[j + 1] = a[j];
a[j + 1] = temp;
}

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

return 0;
}
201 :デフォルトの名無しさん2011/06/07(火) 01:21:20.22
202 :デフォルトの名無しさん2011/06/07(火) 05:05:18.56
>>201
ありがとうございます。
すみません、数値をscanfで読み込む形にして貰えますか?
203 :デフォルトの名無しさん2011/06/07(火) 05:18:17.68
204 :デフォルトの名無しさん2011/06/07(火) 05:28:16.81
【質問テンプレ】
[1] 授業単元:プログラム言語
[2] 問題文:コマンドプロンプト上で名前と
国語、社会、数学、理科、社会の5科目の成績を入力して、
それをバイナリファイルで保存するプログラムを作成せよ。
保存するファイル名はこれらを入力する前、つまり一番最初に入力して
そのファイル名で保存するものとする。
30件の入力があるか、EOFの入力を持って入力を終了するものとする。
また、これとは別に入力して作成されたバイナリファイルを開く
プログラムを作成すること。
sample
保存したいファイル名:student.dat
名前:tanaka
国語:65
社会:80
数学:54
理科:71
英語:48
  ・
  ・
  ・
※30件かEOFの入力を持って終了
プログラムを開くほう
sample
オープンしたいファイル:student.dat
tanakaさんの成績 国語:65点 社会:80点 数学:54点 理科:71点 英語:48点
                      ・
                      ・
                      ・
208 :デフォルトの名無しさん 2011/06/07(火) 08:01:05.15
>>204
C言語久しぶりだし
デバッグもしてない
とりあえず書き込むプログラムだけ書いた間違いがあればよろしく
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Record{
char Name[256];
int Language;
int Social;
int Math;
int Science;
int English;
}Record;

int main()
{
char temp[256] = {'\0'};
FILE *fp;
char *p;
int i;
Record *rec;
printf("保存したいファイル名:");
fgets(temp,sizeof(temp),stdin);
if(p = strchr(temp,'\n'))
*p = '\0';
fp = fopen(temp,"wb");
214 :デフォルトの名無しさん2011/06/07(火) 08:43:47.61
205 :デフォルトの名無しさん2011/06/07(火) 05:30:33.60
長文投稿できなかったので2回に分けました。
[3] 環境
 [3.1] OS: Windows 7 Pro
 [3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語:C言語
[4] 期限: 2011年6月10日(金)17時まで
[5] その他の制限:fseek関数を使うこと。
よろしくお願いします。
206 :デフォルトの名無しさん2011/06/07(火) 07:41:27.27
バイナリファイルとしてオープンできないテキストファイルをQZさんが作ってくれるでしょう
209 :208 2011/06/07(火) 08:02:06.95
続き
for(i = 0;i<30;i++){
rec = realloc(rec,sizeof(Record)*(i+1));
printf("名前:");
fgets(temp,sizeof(temp),stdin);
if(p = strchr(temp,'\n'))
*p = '\0';
strcpy(rec[0].Name,temp);
printf("国語:");
fgets(temp,sizeof(temp),stdin);
rec[0].Language = atoi(temp);
printf("社会:");
fgets(temp,sizeof(temp),stdin);
rec[0].Social = atoi(temp);
printf("数学:");
fgets(temp,sizeof(temp),stdin);
rec[0].Math = atoi(temp);
printf("理科:");
fgets(temp,sizeof(temp),stdin);
rec[0].Science = atoi(temp);
printf("英語:");
fgets(temp,sizeof(temp),stdin);
rec[0].English = atoi(temp);
fwrite(&rec[0],sizeof(Record),i+1,fp);
puts("終了する場合はEOF(WindowsならCtrl+z)入力それ以外は何か押してください。");
if(EOF = getchar())
break;
}
fclose(fp);free(rec);return 0;
}
210 :デフォルトの名無しさん2011/06/07(火) 08:07:11.79
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org1685520.c
http://www.dotup.org/uploda/www.dotup.org1685521.c
上記2つのプログラムに示すベキ乗計算の関数は動作が異なる。
この動作の違いと仮引数を直接使うことの利便性と危険性について簡単に述べよ。
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語: c++
[4] 期限: 2011年6月9日10:00
[5] その他の制限: 特になし

おねがいします
218 :デフォルトの名無しさん2011/06/07(火) 09:01:58.53
>>210
違い:
dxのno乗を返す: 正しく動作しない。
dxのno乗を返す(第2版): 正しく動作する。
理由 両方とも不要な割り算が記述されているが、第2版では2つ目のwhileは条件が
成立しないために実行されずに、正しく動作する。

仮引数を直接使うことの利便性と危険性:
利便性: 不要な変数宣言を書かずに済む。メモリ使用量も少なくなる。
危険性: Cは値渡しなので全くない。
例えば第2版を仮引数を直接使わない↓のように変更しても動作は同一である。
double power(double dx, int no_)
{
int no = no_;
220 :デフォルトの名無しさん2011/06/07(火) 09:07:36.27
>>218
両方正しく動作しねーよ
これ書いた奴どんなアホだよ
223 :デフォルトの名無しさん2011/06/07(火) 10:39:09.80
>>220
no >= 0なら正しく動くだろ。
211 :デフォルトの名無しさん2011/06/07(火) 08:17:44.09
仮引数を使う問題じゃなくて、コードの見栄えを短くみせるために単項演算子を誤って使う問題で
これはプログラム以前のプログラマの性格や精神状態の問題だと
答えておけ
217 :デフォルトの名無しさん2011/06/07(火) 08:48:58.10
>>211
コードを短く書くことは、見通しを良くするので、旨くいけば美文として
すごく褒められるけど、
修正しにくくしたり、特に結果的に誤った場合はこっぴどくけなされるね
ま、要するに際どい技術というわけだ
221 :デフォルトの名無しさん2011/06/07(火) 09:14:24.85
>>217
そりゃ、カレーの香りがする奴を食べたら実はウンコだったら
怨念と憎悪がするのは当たり前だ(最大限ガードを甘く
している状態に強烈なカウンターだからね)w
212 :デフォルトの名無しさん2011/06/07(火) 08:22:49.10
なんで割ってるんだろう
216 :デフォルトの名無しさん2011/06/07(火) 08:47:58.58
>>212
noが負でも対応しようとして失敗してるんじゃね?
213 :すみません。面倒そうなのでお願いしたいのですが...2011/06/07(火) 08:25:03.76
[1] 授業単元:プログラミング:Windowsプログラミング演習
[2]  問題文(含コード&リンク):
GUIアプリケーション
メニューから任意のテキストファイルを読み取る
システム標準フォントとTextOut-APIを用いて、できるだけ小さなポイントで
そのテキストファイルの任意の文字をモノクロビットマップに書き出しそのピクセル
情報を元に、塗られているピクセルをそれがあらわす文字で、塗られていないピクセル
を空白で置き換えたテキストファイルを生成し、適当なファイル名で保存する。
(メッセージボックスでどのファイルで保存したのかを通知すること)
以上の処理を繰り返す。
[3]
[3-1]OS:Windows 7
[3-2]コンパイラ名とバージョン:Microsoft SDK
[3-3]言語:C++ (ただしMFCは使用しないこと)
[4] 期限:7/1まで
[5] その他の制限:UNIXのbannerコマンドに相当するものだそうです。全角・半角の扱いは見栄え良く
やれば任意だそうです。
215 :209 2011/06/07(火) 08:47:22.57
一応訂正
for(i = 0;i<30;i++){
rec = realloc(rec,sizeof(Record)*(i+1));
printf("名前:");
fgets(temp,sizeof(temp),stdin);
if(p = strchr(temp,'\n'))
*p = '\0';
strcpy(rec[i].Name,temp);
printf("国語:");
fgets(temp,sizeof(temp),stdin);
rec[i].Language = atoi(temp);
printf("社会:");
fgets(temp,sizeof(temp),stdin);
rec[i].Social = atoi(temp);
printf("数学:");
fgets(temp,sizeof(temp),stdin);
rec[i].Math = atoi(temp);
printf("理科:");
fgets(temp,sizeof(temp),stdin);
rec[i].Science = atoi(temp);
printf("英語:");
fgets(temp,sizeof(temp),stdin);
rec[i].English = atoi(temp);
puts("終了する場合はEOF(WindowsならCtrl+z)入力それ以外は何か押してください。");
if(EOF = getchar()) break;
getchar();
}
fwrite(rec,sizeof(Record),i+1,fp);
fclose(fp);free(rec);return 0;
}

231 :2042011/06/07(火) 19:49:53.62
>>214>>215
ありがとうございます!
219 :デフォルトの名無しさん2011/06/07(火) 09:07:03.08
問題として回答が 無い ってことはあまりないだろうから
多分うっかり引数を変更したことを忘れて使っちゃう可能性だろうか
224 :デフォルトの名無しさん2011/06/07(火) 10:40:20.27
>>219
それは引数に限らず変数でも起こる危険性。
225 :デフォルトの名無しさん2011/06/07(火) 13:43:58.84
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下記に記載
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011/6/10
国語と数学の2科目のテストの成績を処理するプログラムを作る。成績を3人分キーボードから入力した後、それを表示したい。これについて、次の手順でkadai8-1.cを作成しなさい。
1)次の構造体を利用する。
struct SEISEKI {
char name[50];
int kokugo;
int sugaku;
}
2) 次の配列を用意する。
struct SEISEKI score[3];
3) main関数で上記score[3]に次のようにデータをキーボード入力するようにする。
scanf("%s %d %d %s %d %d %s %d %d", 一人目の氏名, 一人目の国語の成績, 一人目の数学の成績, 二人目の氏名, 二人目の国語の成績,....);
ex. 入力例:
yamauchi 60 70 yamada 80 90 tougou 70 80
4)次の関数を定義する。
void print_score(struct SEISEKI a);
この関数は次のように成績を出力するものとする。
printf(" name: %s\n kokugo: %d\n sugaku: %d\n", ........);
表示例:
name: yamauchi
kokugo: 60
sugaku: 70
5) void print_score()を使って3人分の成績を列挙する。
よろしくお願いします。
229 :デフォルトの名無しさん2011/06/07(火) 17:37:38.45
質問テンプレ
[1] 授業単元:プログラミング
[2] 問題文:ニュートン・コーツの2点、3点、4点、5点公式を用いて
∫f(x)dx=∫(x^3+sin(πx))dx (範囲は両辺とも0〜2)
を計算するプログラムを作成しなさい。
[3] 環境[3.1] OS:Windows7?
[3.2] すいません、わかりません。
[3.3] 言語:C言語
[4] 期限:2011年6月8日 AM10:00 まで

よろしくお願いします!
243 :デフォルトの名無しさん2011/06/08(水) 01:37:30.33
>>229
できたけどしつこい奴のようなので貼るのは止めよう
245 :デフォルトの名無しさん2011/06/08(水) 02:11:05.42
246 :デフォルトの名無しさん2011/06/08(水) 02:29:27.99
>>243
すいません。
>>244
n=2→台形則
n=3→シンプソン第一則
n=4→シンプソン第二則
n=5→書いてありません
>>245
ありがとうございます。

他の方のプログラミングも見たいです。よろしくお願いします。
248 :デフォルトの名無しさん2011/06/08(水) 03:05:31.91
n=5はブール則だね

しかし>>245が短くてワロタ
俺の作っていた奴は長くなった
251 :デフォルトの名無しさん2011/06/08(水) 03:14:48.69
あ、>>250は>>246宛です
230 :229の追記です2011/06/07(火) 17:47:58.29
229の追記です。

厳密解
∫f(x)dx=∫(x^3+sin(πx))dx=[(x^4/4ー1/π)cos(πx)]=4,0
範囲はすべて0〜2です。

よろしくお願いします。
233 :デフォルトの名無しさん2011/06/07(火) 20:28:02.11
>[4] 期限:今日まで
いつ提出するんだよww
234 :デフォルトの名無しさん2011/06/07(火) 20:32:21.91
>>233

間違えたわ
明日だった

スマソ
235 :デフォルトの名無しさん2011/06/07(火) 21:20:34.04
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
キーボードから西暦を表す4桁の数字を数値として読み込み、閏年かどうか判定する。
入力された西暦年が1000年以上4000年いかでなければ、その旨を指示してプログラムを終了する。 
閏年の条件:4で割り切れるが100で割り切れない年を閏年とする。ただし400で割り切れる年を閏年とする。
それ以外の年は平年とする。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C言語
[4] 期限: 2011年6月7日26:00
[5] その他の制限: 特になし
236 :デフォルトの名無しさん2011/06/07(火) 22:30:52.22
>>235

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

int main(void)
{
  int year;
  printf("西暦を入力(1000 〜 4000) : ");
  scanf("%d", &year);

  if (!(year >= 1000 && year <= 4000)) {
    printf("西暦は1000 〜 4000年を入力して下さい。\n");
    exit(1);
  }


  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    printf("%d年は閏年です。\n", year);
  else
    printf("%d年は平年です。\n", year);
  

  return 0;
}
239 :デフォルトの名無しさん2011/06/07(火) 23:49:09.68
[1] 授業単元:配列の並び替え
[2] 問題文(含コード&リンク):
整数Nとしたとき、素数をN個リストアップするプログラムを作成しなさい。
※実行にあたり、Nの値を小さな値から慎重に変化させ、結果とプログラム動作の変化に注意すること
※N=1としたとき、答えは1ではありません
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

241 :デフォルトの名無しさん2011/06/08(水) 00:36:02.70
>>239
#include <stdio.h>
int main(void)
{
int i, n, s[100] = {2}, nn = s[0] + 1;
printf("N = ");
scanf("%d", &n);
while (n - 1) {
for (i = 0; s[i] && (nn % s[i]); i++);
if (!s[i]) {
s[i] = nn;
n--;
}
nn++;
} for (i = 0; s[i]; i++)
printf("%d ", s[i]);
return 0;
}
242 :デフォルトの名無しさん2011/06/08(水) 00:50:04.92
問テンプレ
[1] 授業単元:プログラミング
[2] 問題文:ニュートン・コーツの2点、3点、4点、5点公式を用いて
∫f(x)dx=∫(x^3+sin(πx))dx (範囲は両辺と 0〜2)
を計算するプログラムを作成しなさい
※厳密解 ∫f(x)dx=∫(x^3+sin(πx))dx=[(x^4/4ー1/ π)cos(πx)]=4,0
範囲はすべて0〜2です
[3] 環境[3.1] OS:Windows7?
[3.2] すいません、わかりません
[3.3] 言語:C言語
[4] 期限:2011年6月8日 AM10:00
244 :デフォルトの名無しさん2011/06/08(水) 01:41:55.43
ニュートン・コーツ公式においてn=1と置くと台形公式、n=2とおくとシンプソン公式になるよな
N=3〜5は何だ?
249 :デフォルトの名無しさん2011/06/08(水) 03:09:04.36
[1]C文解釈演習
[2]次のコードを並べ替えて正しく動作するようにしなさい。
return power(a,b+1)/a;
static double power(double a,int b){
sscanf(input,(isDouble)?"%lf":"%d",(isDouble)?&result.doubleValue:&result.intValue);
printf("%s",msg);
ret=readConsole("b=",0);
ret=readConsole("a=",1);
}
static char input[128];
return_value result;
}while(ret.doubleValue<0.0);
}
if(b==0)return 1.0;
int main(void){
return 0;
return result;
int intValue;
printf("a^b=%16.15lf\n",power(ret.doubleValue,ret.intValue));
double doubleValue;
return_value ret;
typedef union{
static return_value readConsole(char *msg,int isDouble){
#include <stdio.h>
if(b>0)return power(a,b-1)*a;
fgets(input,128,stdin);
}return_value;
}
do{
[3] Mac OSX 10.5/XCode/C
[4] 6/8 正午まで
[5]ゼミの課題です。この手の問題は苦手です。
253 :デフォルトの名無しさん2011/06/08(水) 03:30:26.22
254 :2492011/06/08(水) 03:37:02.83
>>253
感謝です。
255 :デフォルトの名無しさん2011/06/08(水) 06:58:26.62
>>249
この問題は正しく動作しない
一つの union 変数に実数と整数を代入してるから実数が上書きされて誤った答えとなる
256 :2532011/06/08(水) 07:54:10.37
>>255
いわれてみればそのとおりですね。書き直しておきましょうか。
http://codepad.org/aJ6zANlq
250 :デフォルトの名無しさん2011/06/08(水) 03:13:59.56
俺のは

http://fussy.web.fc2.com/algo/algo10-9.htm

から黙って借用したのでコピーライトかどうかは知らん
手元に科学技術計算ハンドブックがあるが定数が小数で書いてあるので
汚くなるからこっちを使った

http://codepad.org/ynoKj2Mp
252 :デフォルトの名無しさん2011/06/08(水) 03:23:13.66
[1] 授業単元:メモリアクセスと処理時間
[2] 問題文(含コード&リンク):
 以下のプログラム(http://ideone.com/RzU5e)は値を3倍し、また画像サイズを変えてコピーする時間を測定するというものです。
 測定方法はgcc -Wall -o2 -DCSQ(DCIP) ファイル名でコンパイルし、time a.outで消費時間を測定しました。
 画像サイズは10,20,50,100,200,500,1000,2000,5000,10000と変えていきました。
 (1)CSQとCIP形式ではなぜ違いが出るのか?
 (2)ループの順番を最も内側(k)のfor文を一番外側に移動(k,i,j)した場合はなぜ違いが出るのか?
 (3)ポインタを利用したコピーではなぜ違いが出るのか?
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C言語
[4] 期限:6月9日12時まで
[5] CSQとCIPの違いだけでも教えて頂ければ幸いです。
259 :デフォルトの名無しさん2011/06/08(水) 11:23:48.11
>>252
(1):CIPは同じセクタに書き込んだ回数分書き込みをするから遅い。1セクタが512バイトなら1バイト書き込む度に512バイト書き込まれる。
(2):不連続なメモリアクセスはキャッシュミスでペナルティが発生して遅くなる。
(3):ポインタの場合アドレスの算出が必要ないのと繰り返し少ない分早いとかそんなのかと。
258 :デフォルトの名無しさん2011/06/08(水) 11:08:27.18
誰か225,226わかりませんか?
260 :デフォルトの名無しさん2011/06/08(水) 11:35:25.61
>>258
struct SEISEKI
{
char name[50];
int kokugo;
int sugaku;
int kokugo_gokaku;
int sugaku_gokaku;
};
void print_score(struct SEISEKI a)
{
printf(" name: %s\n kokugo: %d\n sugaku: %d\n", a.name, a.kokugo, a.sugaku);
return;
}
void check_score(int borderline, struct SEISEKI *a)
{
a->kokugo > borderline ? a->kokugo_gokaku = 1 : a->kokugo_gokaku = 0;
a->sugaku > borderline ? a->sugaku_gokaku = 1 : a->sugaku_gokaku = 0;
return;
}
int main(void)
{
int i;
struct SEISEKI score[3];
scanf("%s %d %d %s %d %d %s %d %d", &score[0].name, &score[0].kokugo, &score[0].sugaku, &score[1].name, &score[1].kokugo, &score[1].sugaku, &score[2].name, &score[2].kokugo, &score[2].sugaku);
for (i = 0; i < 3; ++i)
{
check_score(60, &score[i]);
print_score(score[i]);
}
return 0;
}
261 :デフォルトの名無しさん2011/06/08(水) 11:41:55.56
262 :デフォルトの名無しさん2011/06/08(水) 15:23:58.98
[1] 授業単元:C言語
[2] 問題文:
構造体trinagleを typedef struct{
double x,y;
} Point;

typedey struct{
Point p1,p2,p3;
} Trinagle;
とする。
構造体の構成要素は3つの頂点のx座標、y座標をメンバとして持つ構造体Pointである。
任意の三角形の面積、その三角形を適当な2×2行列で線形変換した結果の三角形の座
標とその面積、任意の二つの三角形が合同かどうかを表示するプログラムを作りなさい。
[3] 環境
 [3.1] windows7
 [3.2] gcc
 [3.3] C
[4] 期限:明日の午後4時まで
[5] 特になし

265 :デフォルトの名無しさん2011/06/08(水) 18:06:17.57
266 :デフォルトの名無しさん2011/06/08(水) 18:36:01.78
>>262です
265さんありがとうございますm(_ _)m
264 :デフォルトの名無しさん2011/06/08(水) 17:12:13.22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ファイルlist0602_03.txtを読み込み、1行30文字に整形してファイル出力するプログラムkadai03.cを作成せよ。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:cygwin gcc-o
 [3.3] 言語: C
[4] 期限:出来れば本日中に
[5] その他の制限:
list0602_03.txt
http://www.dotup.org/uploda/www.dotup.org1686822.txt

構造体とポインタを習い始めたばかりです
他の問題ですが今の授業のレベルは↓くらいなので合わせてもらえると助かります
http://codepad.org/rTVuvjx6
267 :デフォルトの名無しさん2011/06/08(水) 20:18:31.67
>>264
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int output_count;
  int c;
  FILE *fp;
  if ((fp = fopen("list0602_03.txt", "r")) == NULL) {
    printf("ファイルを開けませんでした。");
    exit(1);
  }

  output_count = 0;
  while ((c = fgetc(fp)) != EOF) {
    if (c != '\n') {
      putchar(c);
      output_count++;
      if (output_count >= 30) {
        putchar('\n');
        output_count = 0;
      }
    }
  }

  fclose(fp);

  return 0;
}
268 :デフォルトの名無しさん2011/06/08(水) 20:38:10.55
>>267
ありがとうございます
269 :デフォルトの名無しさん2011/06/08(水) 22:12:11.70

[1] 授業単元:Cプログラミング
[2] 問題文:2つの正の整数値を入力させ四則演算の結果を表示させる。
[3] 環境[3.1] OS:Windows
[3.2] 
[3.3] 言語:C言語
[4] 期限:今日の24:00までです。
よろしくお願いします。
325 : ◆QZaw55cn4c 2011/06/09(木) 20:04:34.40
328 :デフォルトの名無しさん2011/06/09(木) 20:17:54.75
>>325
メモリリーク

確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
329 :デフォルトの名無しさん2011/06/09(木) 20:18:53.28
>>325
死ね
333 : ◆QZaw55cn4c 2011/06/09(木) 21:31:59.14
>>328
malloc()/free() を使っていないのにメモリーリークとはこれいかに?
335 :デフォルトの名無しさん2011/06/09(木) 21:57:39.74
>>333
sbrk呼んでる。

確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
337 : ◆QZaw55cn4c 2011/06/09(木) 22:09:14.20
>>335
それはmalloc()/free() 信者の基準でも、あなたの普通のコーディング時の基準でもなく、単にあなたが反証のために勝手に例示しただけの、私も相手にしていないところの、どうでもいい基準ですね。

それと、これは純粋な質問ですが、
今、K&R2 の 8.7 を見ていますが、sbrk() は malloc()/morecore() の中でしか呼び出されてないようですよ。それとも、普通はスタートアップで予備的にあらかじめ sbrk() を呼ぶものなんでしょうか?
270 :デフォルトの名無しさん2011/06/08(水) 22:18:50.80
[1] 授業単元:配列
[2] 問題文(含コード&リンク):
要素数10の整数型配列を作成し、初期化の時に10個の任意の数値を代入して置く。
1つの整数を入力させ、その整数が、配列の中に何個あるか、または、存在しないかを表示するプログラムを作成しなさい。
例:配列が{9, 1, 2, 3, 4, 5, 6, 7, 8, 9}のとき
1を入力したら、「1個あります」→終了
9を入力したら、「2個あります」→終了
10を入力したら、「存在しません」→終了
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:今日まで
272 :デフォルトの名無しさん2011/06/08(水) 23:06:05.77
273 :デフォルトの名無しさん2011/06/08(水) 23:41:34.86
[1] 授業単元:プログラミング?
[2] 問題文(含コード&リンク):
入力された整数値の絶対値を求める関数abs()を作成する。
?「処理概要」入力された整数値の絶対値を求める関数abs()を呼び出し、戻り値を出力する。
 「呼び出し形式」int main(void)
?「処理概要」引数で受け取った値の絶対値を返す。
「呼び出し形式」int abs (int dat)
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C言語
[4] 期限:6/9 9:00まで。
274 :デフォルトの名無しさん2011/06/08(水) 23:47:02.28
>>273
#include <stdio.h>

int abs(int dat)
{
  return (dat < 0) ? -dat : dat;
}

int main()
{
  int n;
  printf("正数値を入力: ");
  scanf("%d", &n);

  printf("|%d| = %d", n, abs(n));
  return 0;
}
275 :デフォルトの名無しさん2011/06/09(木) 00:08:18.01
>>274
ありがとうございます。
276 :デフォルトの名無しさん2011/06/09(木) 00:09:42.38
[1] 授業単元:組み込みプログラミング
[2] 問題文(含コード&リンク):得られた実験データを近似関数で表す
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: なし
[5] その他の制限:特に無し

http://ideone.com/xMqLt

関数を使ってループをさせているのですが、約二万回のループをすると
Segmentation faultになってしまいます

このループを100万回ほどさせたいのですが、Segmentation faultを回避する方法はありますか?
278 :デフォルトの名無しさん2011/06/09(木) 00:40:51.38
>>276
それ宿題依頼じゃなくプログラムのバグつぶしじゃないのか?
279 :デフォルトの名無しさん2011/06/09(木) 00:44:30.45
>>276
どのループ?
280 :デフォルトの名無しさん2011/06/09(木) 00:54:45.46
>>276
ぱっと見だけど、スタックが足りなくなってるんだと思う、
んで、スタックサイズ何だけど、オプション指定しないとデフォルトで1MBだったはず、

calculateは良いとして、
randamu と judgeが循環参照の再帰呼び出しになってて、
randamuは272byte、judgeは300byteのスタックサイズが必要、
1ループで572byte+α、100万回ループで572MB+αのスタックサイズが必要な計算。


ソースを未修正で実行させないなら、
コンパイルする時にスタックサイズを下記の様に指定して上げればいけるはず
※ちなみにスタックサイズのデフォルトは1MBだったはず

  gcc -Wl,--stack,600000000 hoge.cpp

↑は、hoge.cppをスタックサイズ600MB割り当ててコンパイルしている。




もしくは再帰ループをやめて普通のループに直すか。
283 :デフォルトの名無しさん2011/06/09(木) 00:59:07.44
>>278
あーやっぱそうですよね、ごめんなさい

>>279
randam→judge→randam→jugde→・・・
のループです

>>280
スタックサイズ?そんな概念があったのですか。
ヒントを元にコンパイルしてみます

ありがとうございました
284 :デフォルトの名無しさん2011/06/09(木) 01:16:33.69
>>283
同じく 21831 回でセグフォしました @ Mac OS X 64bit
ulimit -s unlimited したら 174738 回まで行けたよw

ソースコードきちんと読んでないけど、再帰をループに書き直すのが吉と思われます
277 :デフォルトの名無しさん2011/06/09(木) 00:20:12.31
[1] 授業単元:配列
[2] 問題文(含コード&リンク):
入力する値は0以上の整数とし、下記の動作するプログラムを作成しなさい。
要素数10の整数型配列を作成し、入力された0以外の数値のうち、これまで入力されていない値だけを追加、記憶させる。
追加登録を行った場合には、現在何個の数値が記憶されているかを表示させる。
0が入力された場合、または10個の値の登録が完了した場合は、記憶している全ての情報を表示して、プログラムを終了させる。
例:5                 例:1
  1個登録                1個登録
  5                   2
  既に登録あり              2個登録
  3                   …
  2個登録                10
  0                   10個登録
  [5 3]を登録しました          登録上限に到達
                      [1 2 3 4 5 6 7 8 9 10]
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:今日まで
288 :デフォルトの名無しさん2011/06/09(木) 02:24:06.89
318 :デフォルトの名無しさん2011/06/09(木) 16:14:18.92
>>288
題意を満たしてなくね?
最後の出力が
[1 2 3 4 5 6 7 8 9 10 2147344384 10 1 4199032 5457731 1245112 851035066 1 153598
64 15510096 18 ]

となってしまう
319 :デフォルトの名無しさん2011/06/09(木) 16:27:36.13
>>277
http://codepad.org/ezndsXqx
これでちゃんと動くと思う

>>288
ちゃんとデバッグしとけよ
320 :デフォルトの名無しさん2011/06/09(木) 16:29:40.05
>>319を修正
http://codepad.org/nIBolbdN

「登録上限に到達」が表示されなかった
323 :デフォルトの名無しさん2011/06/09(木) 16:55:35.89
>>277
#include <stdio.h>

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

for( i = 0; ; ) {
scanf("%d", &n);
if(n == 0) {
if(i) {
printf("[%d", a[0]);
for(j = 1; j < i; j++) printf(" %d", a[j]);
printf("]を登録\n"); }
break; }
for(j = 0; j < i; j++) if(a[j] == n) {
printf("既に登録あり\n");
goto L;}
a[i++] = n;
printf("%d個登録\n", i);
if(i == 10) {
printf("\t登録上限に到達\n[%d", a[0]);
for(j = 1; j < i; j++) printf(" %d", a[j]);
printf("]\n");
break; }
L:;}
return 0;
}
334 : ◆QZaw55cn4c 2011/06/09(木) 21:56:53.14
>>277
配列は使いませんでした。ごめんなさい。
C: http://codepad.org/fBP8wSHR
C++: http://codepad.org/AGDFXZF2
Java: http://ideone.com/fXHSh
338 :デフォルトの名無しさん2011/06/09(木) 22:19:31.54
>>334
さすが基地、題意完全無視
285 :デフォルトの名無しさん2011/06/09(木) 01:20:52.42

よくわからんのですが、gcc -Wl,--stack,600000000 hoge.cpp でコンパイルが
できなかったのでググッてみたのですが


>> Ubuntuでは(というかLinux全般、もしかしたらFreeBSDも?)そもそもldに
>> --stackオプションを与えても「そんなオプションは知らん」と言ってきます。

んで、コンパイル後に
ulimit -s ,600000000
と打ち込んで実行したところ動きました

286 :デフォルトの名無しさん2011/06/09(木) 01:32:50.50
>>285
>よくわからんのですが

関数を呼び出すごとに、メモリ上のスタック領域に関数の引数やローカル変数を
書き込んで行って、関数が終了する度にそれを解放して行きます。

関数の中で関数を読んで、更にまた関数を呼ぶというプログラムを書くと、
スタック領域のデータが解放されずにどんどん溜まって行きます。最終的には
スタック領域がいっぱいになって、プロセスが異常終了以上乙でした状態に
なってしまいます。

judge() も randomu() も自分の仕事が終わったら return する様にして、
main() の中で for とか while でループを作って judge() や randomu() を
呼び出す様にすると解決出来ると思います。
287 :デフォルトの名無しさん2011/06/09(木) 01:35:27.70
>>286
詳しい説明ありがとうございます。
基礎から勉強しなおします。
290 :デフォルトの名無しさん2011/06/09(木) 10:24:45.79
ここの住人を煽ったり罵倒したりすると、どうなるんですか?
僕は罵倒と煽りが趣味なんですがねぇ。
マジどうなるんすかねぇ^^;

やっぱり、ここの住民の抱腹は叩きじゃなくて
個人情報ばらまいたり、PCぶっ壊したりしちゃうんですか?
292 :デフォルトの名無しさん2011/06/09(木) 10:41:44.08
罵倒と煽りが趣味って、どんだけ惨めな人生おくったらそうなるんだろうな
あまりの哀れさに、涙が止まらない
293 :デフォルトの名無しさん2011/06/09(木) 10:46:20.13
入力された数が奇数か偶数かを判断するプログラムをswitch文で作成しなさい。
お願いします。
295 :デフォルトの名無しさん2011/06/09(木) 11:02:24.77
ありがとうございます。
もうひとつお願いします。
switch文で60より下なら不可、60〜69なら可、70〜79まで良、80〜100まで優という成績判定プログラムを作成しなさい。
お願いします。
298 :デフォルトの名無しさん2011/06/09(木) 12:35:27.59
>>295
それは本当にswitch文でいいのか
301 :デフォルトの名無しさん2011/06/09(木) 12:46:07.97
>>298
とり得る値の数だけ case 列挙する以外だと
条件式非成立で 0 とそれ以外の分岐を switch のネストで記述するぐらいかね?

switch (点数 <= 60) {
case 0:
 switch (点数 <= 69) {
 case 0:
  switch (点数 <= 79) {
  ・・・ 以下続く
  }
 default:
  /* 可*/
 }
 break;
default:
 /* 不可*/
}
303 :デフォルトの名無しさん2011/06/09(木) 13:01:15.45
>>295,298
これならどうだろ。
switch (n / 10) {
case 6:
printf("可¥n");
break;
case 7:
printf("良¥n");
break;
case 8:
printf("優¥n");
break;
case 9:
printf("優¥n");
break;
case 10:
printf("優¥n");
break;
default:
printf("不可¥n");
break;
304 :デフォルトの名無しさん2011/06/09(木) 13:10:17.89
>>303
優三つはまとめなよwwwww

問題の範囲外ではあるが1−100以外の点数を考えるとやっぱりswitch向きじゃないよなこの問題
308 :デフォルトの名無しさん2011/06/09(木) 13:36:00.14
>>304
奇数/偶数判定との対比で switch に向いた条件付けって何だろう と考えさせる為の問題だったらすごいな
296 :デフォルトの名無しさん2011/06/09(木) 11:04:11.25
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク): 中心座標(1.0 , 2.5)、半径 5.0 の円軌道上に存在する全ての x,y 座標を ”circle.csv”へ出力せよ。
尚、ラジアンの刻み幅は 0.01 ,π= 3.14 とする。また、csvファイルをExcelで開き、グラフで図形を確認すること。

X=5.0 * Sin(rad) + 1.0
Y=5 * Cos(rad) + 2.5
[ 0 ≦ rad < 2π ]

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C

[4] 期限: 6月15日09:00まで
[5] その他の制限: ありません。
297 :デフォルトの名無しさん2011/06/09(木) 12:32:31.14
>>296
#include <stdlib.h>
#include <math.h>
#define PI 3.14
int main()
{
double rad;
FILE * fp;
if (!(fp = fopen("circle.csv", "w"))) {
fprintf(stderr, "error\n");
return 0;
}
for (rad = 0; rad < 2.0 * PI; rad += 0.01) {
fprintf(fp, "%f, %f\n", 5.0 * sin(rad) + 1.0, 5 * cos(rad) * 2.5);
}
fclose(fp);
return 0;
}
300 :デフォルトの名無しさん2011/06/09(木) 12:36:05.62
305 :デフォルトの名無しさん2011/06/09(木) 13:18:27.95
>>297
>>300
素早い回答ありがとうございます!
321 :デフォルトの名無しさん2011/06/09(木) 16:32:30.92
>>300
C99で書かれているから for (double rad = の部分がコンパイルエラーになるんだが
VS2010 Cモード
306 :デフォルトの名無しさん2011/06/09(木) 13:24:51.28
文型IQ92くらいの僕がプログラマーになるって可能ですか?
学歴は脱糞高等学校主席(後ろから数えて)卒業。
趣味は脱糞と自慰行為。
好きな番組はテレフォンショッピング。
好きなサイトはカリビアンコム。

とある掲示板にて、プログラミングするには、
言語を勉強しないといけないと聞いたので、何言語を学べばいいか聞くと
「中国語」だと言ってました。本当ですか?
しかし、このスレを見ると英語に見えるんですがねぇ^^;
これは僕に対する、皆さんによる釣り行為ですかねぇ^^;
僕はこんな釣りに釣られるような馬鹿じゃないんですがねぇ。
おちょくってるんですか?なめんなよコラ^-^;
307 :デフォルトの名無しさん2011/06/09(木) 13:29:29.30
どうしてもswitch使えと言われたら、
スクリプトでcase 0から100まで生成するかなあw
310 :デフォルトの名無しさん2011/06/09(木) 13:43:38.81
まあ、軽くc++ってのを検索してきたけどさ。
余裕だな。
俺からすれば余裕
マスターするのに15年程度のレベル
311 :デフォルトの名無しさん2011/06/09(木) 13:47:32.40
たぶんfall throughの勉強させたいんじゃないの?
全部のcase書いて、breakの位置で処理分けするのが目的な気がする。
312 :デフォルトの名無しさん2011/06/09(木) 13:50:14.67
それなら0〜100である必要はないんじゃないか。無駄に多すぎる
もっと点数を減らすとか、アルファベットとかのほうが適当なはず
313 :デフォルトの名無しさん2011/06/09(木) 14:04:37.31
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク): ファイル ”test.txt”から文字列を読み込み、並びを逆にしてファイル ”sample.txt”に出力するプログラムを作成せよ。

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 6月16日12:00まで

[5] その他の制限: ”test.txt”の中身は ”Abcde1Fghij2Klmno3Pqrst4”です。
317 :デフォルトの名無しさん2011/06/09(木) 15:21:19.01
322 :デフォルトの名無しさん2011/06/09(木) 16:37:06.82
>>317
これも
for ( int i = の所でコンパイルエラー

VS2010 Cモード
315 :デフォルトの名無しさん2011/06/09(木) 14:05:43.06
60未満はdefaultで処理できるわけだから、caseはそんなに多いとは思えないけどなー。
課題なんだし。
316 :デフォルトの名無しさん2011/06/09(木) 14:53:21.35
switch((x>=60)+(x>=70)+(x>=80)+(x>100))
{
case 0: puts("不可"); break;
case 1: puts("可"); break;
case 2: puts("良"); break;
case 3: puts("優"); break;
default: puts("未定義"); break;
}
330 :デフォルトの名無しさん2011/06/09(木) 20:21:09.60
ゴミコードよりマシなコード書かれてトリップやめたはずなのに、
恥ずかしげもなくまたつけて解答者面かよw

自分に有利なルールにしたあげく、それすら守れないって根っからのクズだな
339 :デフォルトの名無しさん2011/06/09(木) 22:22:52.40
てめーはしかけた宗教戦争で負けたんだよ。敗者は勝者が押し付けたルールに従え。
・明示/暗黙を問わず、確保したメモリはプログラム終了前に必ず開放する事。
これがてめーが従うべきルールだ。これを守れない回答は許さない。

> 今、K&R2 の 8.7 を見ていますが、sbrk() は malloc()/morecore() の中でしか呼び出されてないようですよ。それとも、普通はスタートアップで予備的にあらかじめ sbrk() を呼ぶものなんでしょうか?
バカ丸出しだな。直接呼んでねーmalloc(sbrk)はカンケーねーとでも言う気なのだろうか?
340 : ◆QZaw55cn4c 2011/06/09(木) 22:30:37.94
>>339
おかしいですね。勝者であるあなたのルール(dangling pointer が発生しさえしなければ free() しなくてもいい)ならば喜んで従いますが(そのほーが楽だし)、あなたも守っていないルールを守る筋は、たとえ宗教論争に負けたとしてもないと思いますがね。
それはそうと、もう一度質問しますね。
スタートアップで予備的にあらかじめ sbrk() を呼ぶものなんでしょうか?
343 :デフォルトの名無しさん2011/06/09(木) 22:41:05.42
>>340
アヘン戦争にまけた秦は勝者が押し付けたルールに従ったよな。敗者っていうのはそういうもんだ。

> おかしいですね。勝者であるあなたのルール(dangling pointer が発生しさえしなければ free() しなくてもいい)ならば喜んで従いますが(そのほーが楽だし)、あなたも守っていないルールを守る筋は、たとえ宗教論争に負けたとしてもないと思いますがね。

言質取ったぞ。stdioなどのライブラリが確保したメモリもきちんと解放しろよ。大変だな。www

> それはそうと、もう一度質問しますね。
> スタートアップで予備的にあらかじめ sbrk() を呼ぶものなんでしょうか?
もう一回答えてやろう。
バカ丸出しだな。直接呼んでねーmalloc(sbrk)はカンケーねーとでも言う気なのだろうか?
344 :デフォルトの名無しさん2011/06/09(木) 22:48:22.64
>>339
あんたもトリ付けてくれんか、ブロックが楽になるから
345 : ◆QZaw55cn4c 2011/06/09(木) 22:52:04.24
>>343
ええと、アヘン戦争は宗教論争でしたでしょうか?

>言質取ったぞ。stdioなどのライブラリが確保したメモリもきちんと解放しろよ。大変だな。www
あのー、あなたのルール((dangling pointer が発生しさえしなければ free() しなくてもいい)になら従う、(少なくとも dangling pointer が発生しなければ文句はいわない)といっているだけですが。

>直接呼んでねーmalloc(sbrk)はカンケーねーとでも言う気なのだろうか?
これは教えを請うているのですが、sbtk() ってスタータップで呼ばれるものでしょうか?
349 :デフォルトの名無しさん2011/06/10(金) 01:43:30.08
>>345
てめーは確保したメモリはもれなく開放するというてめーのルールに従え。
敗者のくせに勝者と同じルールを使わせてもらえると思うな。カス。

確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww

> >直接呼んでねーmalloc(sbrk)はカンケーねーとでも言う気なのだろうか?
> これは教えを請うているのですが、sbtk() ってスタータップで呼ばれるものでしょうか?
二度も教えたのに、バカにはわからないようだ。
341 :デフォルトの名無しさん2011/06/09(木) 22:31:11.63
[よろしくお願いします・・(´・ω・`)

1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
整数aとbを入力すると、mylife.txt という名前のファイルを作り、その中にa+bの計算結果を記録する処理と、
続いてそのファイルを開いてデータを読み込み、ディスプレイ上に表示する処理をするプログラムを作りなさい。
(実行後mylife.txt の中身は

126

とだけ書かれている)

http://uproda.2ch-library.com/387865yc9/lib387865.jpg
実行例です。

http://uproda.2ch-library.com/387863Wqm/lib387863.jpg
ここまで出来て居ます
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:c++
[4] 期限: 明日の10時まで
[5] その他の制限
http://uproda.2ch-library.com/387863Wqm/lib387863.jpg
こんな感じのプログラムでお願いしたいです。
347 : ◆QZaw55cn4c 2011/06/10(金) 00:24:49.17
348 :デフォルトの名無しさん2011/06/10(金) 00:27:10.38
350 :デフォルトの名無しさん2011/06/10(金) 01:44:21.89
>>347
メモリリーク

確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
367 :デフォルトの名無しさん2011/06/10(金) 08:44:44.75
>>347>>348
ありがとうございます。
やってもらってとても嬉しいのですが、
http://uproda.2ch-library.com/387865yc9/lib387865.jpg この実行例と、

http://uproda.2ch-library.com/387866eaw/lib387866.jpg この実行例とちょっと違っています・・。

http://uproda.2ch-library.com/387863Wqm/lib387863.jpg  これの続きみたいな感じで、
scanfとかprintfを使う形でやってくださる方いないでしょうか・・(´・ω・`)

370 :デフォルトの名無しさん2011/06/10(金) 09:46:00.70
>>367
>>342は実行例と問題文が異なるが、問題文に合わせた。
http://codepad.org/Mb3s8Fz1
http://codepad.org/pR5OumUf

この回答を使用する利用条件。以下↓をこのスレに書き込むこと。

>>347死ね。
確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
371 :デフォルトの名無しさん2011/06/10(金) 09:48:28.27
>>370
死ね死ね
372 :デフォルトの名無しさん2011/06/10(金) 09:57:02.82
>>367
メッセージもまねるのか…
http://codepad.org/DDzgd1D8
利用条件は同じく、以下↓をこのスレに書き込むこと。

>>347死ね。
確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
373 :デフォルトの名無しさん2011/06/10(金) 10:08:32.26
>>370>>372
ごめんなさい。やってくださってありがとうございます。
実行したら実行例と同じ感じになったので、嬉しいです

スレに書き込むのはやわらかい表現でしますね

>>347ふざけないで。
確保したメモリを返さないのはメモリリークと呼ばれても
仕方ないですから(´・ω・`)
342 :デフォルトの名無しさん2011/06/09(木) 22:39:12.51
ごめんなさい。よろしくお願いします。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
学籍番号(整数)、身長(実数)、体重(実数)を入力すると、meibo.txt という名前のファイルを作り、その中に学籍番号、身長、体重を記録する処理と、
続いてそのファイルを開いてデータを読み込み、指定した番号の人のデータを以下のように表示する処理をするプログラムを作りなさい。
(実行後meibo.txt の中身は

1
168.000000
55.000000
2
170.000000
66.000000
3
158.000000
45.000000

と書かれている)

実行例です
http://uproda.2ch-library.com/387866eaw/lib387866.jpg

[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:c++
[4] 期限: 明日の10時まで
[5] その他の制限
http://uproda.2ch-library.com/387863Wqm/lib387863.jpg
違う問題ですが、このプログラム例と似た感じのプログラムでお願いいたします・・(´・ω・`)
357 :デフォルトの名無しさん2011/06/10(金) 02:14:09.83
どなたかお願いします。
C言語でデータを入力して4次行列式を計算するプログラムを作りたいんですが。プログラム教えて下さい。
どっかのってるサイトとかないですかね?
359 :デフォルトの名無しさん2011/06/10(金) 02:17:04.48
>>357
連立一次方程式を解くだけならガウス法かガウスジョルダン法でググれ
ピボット選択という方法で解けるようになる場合もある
反復法という全く別のアルゴリズムでも解ける
364 :デフォルトの名無しさん2011/06/10(金) 04:00:24.34
>>357
http://thira.plavox.info/blog/2008/06/_c.html
こんなのは?
ぐぐると一番上に出て来た
365 :デフォルトの名無しさん2011/06/10(金) 04:30:39.33
>>364さんありがと。
ただ最初データを打ち込みたいんだがそこはどうすればいいのか…
360 :デフォルトの名無しさん2011/06/10(金) 02:21:25.26
さすがQZだな。くっついてるキチガイが生き生きしてるわ。

標準ライブラリが確保したメモリ(って何指してんだよ、と思わなくも無いけれど)、
それを解放すべきとするならば、解放していないライブラリなりOSのバグとするのが筋で、
そのケツを拭く義務を背負う必要なんて無いだろ。
362 :デフォルトの名無しさん2011/06/10(金) 02:23:16.93
>>360
Cならfreeしてもすぐには返されないよ
379 :デフォルトの名無しさん2011/06/10(金) 15:58:37.19
>>360は◆QZaw55cn4cか
他人のフリしてちゃっかり印象操作
369 :デフォルトの名無しさん2011/06/10(金) 09:12:24.20
300回fopenしてfcloseしなかったら、アプリがcore-dumpして
落ちてOSも不安定になったのでshutdown -r now
しても正常にリブートされず、fsckが必要になった経験が
かなり最近のカーネルの某PC-UNIXでもあった
374 :デフォルトの名無しさん2011/06/10(金) 10:32:53.45
[1]授業単元:オペレーティングシステム論
[2]課題:適当な名前の大きさ100Mバイトのバイナリファイルを作成し、内容を乱数バイト配列とする。
それをクローズし、そのファイルを開き、すべてのビットを反転させた内容に置換する。
これを10万回繰り返すプログラムを作成し、HD、SSD、USBフラッシュメモリ等のデバイスの差
処理時間がどのくらい変わるかテストするプログラムを作成せよ
[3] OS:Windows IDE:Visual studio 2008 言語:C
[4] 6/15まで
[5] ディスクキャッシュが大きいとディスクに短期間では確実に書き込まれるとは限らないので、ファイルを100個作って1000回
繰り返すプログラムにしたほうが良い
とのことです。
コードだけでなく、実行時間もお願いします。
375 :デフォルトの名無しさん2011/06/10(金) 10:55:59.33
>>374
USBメモリの一般的な書き換え可能回数は数10万回程度なのに
100Mの乱数列を10万回書き込むとか
ウェアレベリングされているとはいえかなり劣化するぞ
376 :デフォルトの名無しさん2011/06/10(金) 11:02:45.03
>>374
作るのはいいが結果を用意しろと言われても困る
380 :デフォルトの名無しさん2011/06/10(金) 16:06:28.29
>>374
そもそもSSDなんて高価なモノは持ってない
378 :デフォルトの名無しさん2011/06/10(金) 14:12:04.59
[1] 授業単元:リストの操作&ノードの追加
[2] 問題文:メニューよりリストに対する様々な操作を行うプログラム。
双方向リストでお願いします。
・実行イメージ
----------------------------------------
|リストの操作
|1、ノードの追加
|2、全リストの表示
|3、データの削除
|4、ノードの挿入
| ・
|    ・
|9、プログラムの終了
|操作番号を入力してください []
[3.1] OS:(Windows7)
[3.2] Visual Stdio2008
[3.3] 言語:C
[4] 期限:2011年6月13日13:00まででお願いします。
[5] その他の制限 :お手数かけますが、コメントをつけてよろしくお願いします。
415 :デフォルトの名無しさん2011/06/11(土) 10:06:04.77
>>378
[分割版]
doubly_linked_list.h - http://codepad.org/0dqb5dHw
doubly_linked_list.c - http://codepad.org/Re26cYoi
main.c - http://codepad.org/LRbtt2Z4

[ひとまとめ]
http://ideone.com/qy55m
452 :デフォルトの名無しさん2011/06/11(土) 16:32:43.44
>>415
言語Cなら

doubly_linked_list *list_create();

ではなく

doubly_linked_list *list_create(void);

って書いてくれませんか

「プロトタイプ宣言のない関数の呼び出し」って警告が出ます
456 :4152011/06/11(土) 17:07:56.42
>>452の指摘に加えて、
list_removeの説明が間違っていました
×// リストから指定した値を削除する(最初に見つかった要素がひとつだけ削除される)
○// リストから指定した値をすべて削除する
465 :デフォルトの名無しさん2011/06/11(土) 19:11:28.85
>>415
378です!ありがとうございました。
382 :デフォルトの名無しさん2011/06/10(金) 17:51:53.10
んなわけねえよ
宿題を解いてもらう方が宿題を解く人にSSDを貸し出すのが筋
383 :デフォルトの名無しさん2011/06/10(金) 17:59:19.00
> ファイルを100個作って1000回
> 繰り返すプログラムにしたほうが良い
一つのファイルを10万回書き換えるのと等価になるのか?
384 :デフォルトの名無しさん2011/06/10(金) 18:02:56.59

[1] 授業単元:2次元配列の利用
[2] 問題文(含コード&リンク):
新幹線「のぞみ」の料金(ただし運賃との合計額)は以下の表の通りである。出発駅と到着駅をそれぞれ駅番号で入力し、料金を表示するプログラムを作成しなさい。
なお、駅番号は、東京が1、新横浜が2、名古屋が3、京都が4、新大阪が5とする。
但し、料金を表示してから後で、1を入力すると上記の処理を繰り返し、0を入力するとプログラムを終了するものとする。
    新大阪 京都  名古屋 新横浜
東京  14920 14390 11540  3180
新横浜 14600 13660 10910
名古屋 6840 6100
京都  3240
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:今日まで
389 :デフォルトの名無しさん2011/06/10(金) 20:50:41.28
アルゴリズム問題は久しぶりだな

>>384
ttp://ideone.com/V1oj0
413 :デフォルトの名無しさん2011/06/11(土) 08:45:21.64
>>389
ちょっと酷いな、三角行列の対称成分も埋めておけば min(), max() は不要だ
385 :デフォルトの名無しさん2011/06/10(金) 19:26:19.53
[1]授業単元:計画法
[2]パイロット2人、乗客100人積載可能な同一規格の航空機が以下のようにある。
空港 機数 パイロット人数
札幌 8 15
仙台 5 12
東京 4 4
静岡 4 6
名古屋 6 18
伊丹 6 8
広島 5 6
福岡 1 3
これを最終的に
札幌 5 12
仙台 3 8
東京 10 16
静岡 2 4
名古屋 5 8
伊丹 8 14
広島 2 4
福岡 4 6
にしたい。どのように運行すれば良いか。離着陸数をできるだけ少なくすること
空港間の移動は出来るものとするがパイロットは航空機で移動しなければならない。
[3]Mac-OS-X/Gcc/C言語
[4]無制限
390 :デフォルトの名無しさん2011/06/10(金) 21:39:59.81
QZの>>385の回答を期待
392 :デフォルトの名無しさん2011/06/10(金) 22:13:54.44
>>385の問題、パイロットは乗客として移動してもいいのかな?
396 :デフォルトの名無しさん2011/06/10(金) 22:51:38.45
>>392
> (2)は、まだ上手い発想が思いつきません。
こうすれば良い。

typedef struct bucket {
int data; /*登録する整数データ*/
struct bucket *next;
} Bucket;
Bucket *hash_table[TABLE_SIZE] = {0};
449 :デフォルトの名無しさん2011/06/11(土) 16:24:38.17
>>385
12回、でいいのだろうか
451 :デフォルトの名無しさん2011/06/11(土) 16:27:46.73
>>385
これは最小全域木の問題?
386 :デフォルトの名無しさん2011/06/10(金) 20:34:32.45
[1] 授業単元:課題
[2] 問題文:
読み込んだ2つの正整数の最大公約数を出力するプログラムを作成せよ.ただし,以下の関数 gcd() を再帰を用いて定義し,使用すること.
書式
int gcd(int m, int n);
返り値
正整数m, nの最大公約数
実行結果1
2正整数 > 8 12
4
実行結果2
2正整数 > 81 64
1
[3] 環境[3.1] OS:Linux
[3.2]  gcc
[3.3] 言語:C言語
[4] 期限:明日の24:00まで。
388 :デフォルトの名無しさん2011/06/10(金) 20:49:09.65
>>386
int gcd(int m, int n) {
if n
return gcd(n, m%n);
else
return m;
}
391 :デフォルトの名無しさん2011/06/10(金) 21:57:28.08
[1] 授業単元:アルゴリズム
[2] (1)乱数を多数発生させ、これらをハッシュ表に登録する
関数 int insert(int x)を作成せよ。

(2)ハッシュ表の
・登録データ総数
・衝突回数の総数
を画面に出力する関数void hash_property()を作成せよ。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6/12に完成、6/13に提出できるよう
[5] 内部ハッシュでプログラムを作成。

(1)は出来てるものの、登録失敗時に0が返されてない点が不安です。
(2)は、まだ上手い発想が思いつきません。

http://codepad.org/8pjfOQnM
393 :デフォルトの名無しさん2011/06/10(金) 22:31:32.17
>>391
Line28 予期しない動作になってない?
394 :デフォルトの名無しさん2011/06/10(金) 22:39:54.90
>>391
Line40 リハッシング時にハッシュ値を渡しているけどこれだとj>TABLE_SIZEで全体のチェックが行われている保証はないよ
Line59 rand関数の使い語って知ってる?
395 :デフォルトの名無しさん2011/06/10(金) 22:44:07.01
入力された月が何日かを調べるプログラムをif文を使って作成してください。
2月:28日か29日
1,3,5,7,8,10,12月:31日
2,4,6,9,11月:30日
400 :デフォルトの名無しさん2011/06/11(土) 00:02:12.38
401 :デフォルトの名無しさん2011/06/11(土) 00:12:39.38
>>400
switchを使わずにif文だけでお願いします。
406 :デフォルトの名無しさん2011/06/11(土) 00:36:23.02
>>402
>>395でif文指定してるんだから、問題に後から付け足しじゃないだろ
409 : ◆/91kCCQXBo 2011/06/11(土) 03:18:22.13
>>395
#include <stdio.h>
int main(void){
  int mon;
  while(1){
    printf("Month or X=");
    if(1 != scanf("%d", &mon)) exit(1);
    if(mon== 1) printf("31\n");
    if(mon== 2) printf("28 or 29\n");
    if(mon== 3) printf("31\n");
    if(mon== 4) printf("30\n");
    if(mon== 5) printf("31\n");
    if(mon== 6) printf("30\n");
    if(mon== 7) printf("31\n");
    if(mon== 8) printf("31\n");
    if(mon== 9) printf("30\n");
    if(mon==10) printf("31\n");
    if(mon==11) printf("30\n");
    if(mon==12) printf("31\n");
  }
}
411 :デフォルトの名無しさん2011/06/11(土) 08:10:38.45
>>395
これを使う場合はこのスレに「QZaw55cn4cって糞だよな。」と3回書き込むこと。
#include <stdio.h>
int main()
{
int m;
printf("何月? ");
if (scanf(" %d", &m) == EOF)
return 1;
if (m == 2)
printf("2月は28日か29日です。\n");
else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 ||
m == 10 || m == 12)
printf("%d月は31日です。\n", m);
else if(m == 4 || m == 6 || m == 9 || m == 11)
printf("%d月は30日です。\n", m);
else {
printf("%d月なんてありません。\n", m);
return 1;
}
return 0;
}
416 :デフォルトの名無しさん2011/06/11(土) 10:27:49.23
>>411
条件は認められませんでした。下げ
417 :デフォルトの名無しさん2011/06/11(土) 10:44:20.32
>>416
と、◆QZaw55cn4cの糞が申しております
無視しましょう
427 :デフォルトの名無しさん2011/06/11(土) 11:32:05.56
>>411
>if (scanf(" %d", &m) == EOF)
成立することあると思ってるの?
428 :デフォルトの名無しさん2011/06/11(土) 11:39:30.12
>>427
成立はするだろEOFでやるのはどうかと思うが
432 :デフォルトの名無しさん2011/06/11(土) 12:32:08.40
>>411
EOFになるのは、具体的にはどういう入力があったとき?
それから、数値以外の、例えばアルファベットが入力されたときは、どういう動きをする?
434 :デフォルトの名無しさん2011/06/11(土) 12:34:57.41
>>432
自分で調べろクズ。
437 :デフォルトの名無しさん2011/06/11(土) 12:42:29.34
>>432
EOF: WinならCtrl+Z、UNIX系ならCtrl+D
アルファベット: ASCII code
438 :デフォルトの名無しさん2011/06/11(土) 12:42:53.70
>>434
>何月? a
>1月は31日です。
442 :デフォルトの名無しさん2011/06/11(土) 12:49:28.38
>>434
何月? ^Z
^Z

キー入力の場合は、EOFになるのはこのケースだけのようですね。
397 :デフォルトの名無しさん2011/06/10(金) 23:53:37.19
九九の計算表を表示するプログラムをwhile文を使って作成したものと、
do-while文を使って作成したものを2つお願いします。
実行結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

398 :デフォルトの名無しさん2011/06/10(金) 23:54:47.46
[1] 授業単元:2次元配列の利用
[2] 問題文(含コード&リンク):
5つの要素を持つ、2つの1次元配列A、Bを用意する。
各配列の要素に、値を入力させる(0〜99の整数)。
値が入力された各配列の要素を掛け合わせた結果を5×5の2次元配列に格納する。
求めた2次元配列を表示する。
例 A0〜A4の5個の値を入力    5 4 3 2 1
  5 4 3 2 1      2 10 8 6 4 2
  B0〜B4の5個の値を入力  2 10 8 6 4 2
  2 2 0 1 1      0  0 0 0 0 0
               1 5 4 3 2 1
1 5 4 3 2 1
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:6/12まで

399 :デフォルトの名無しさん2011/06/10(金) 23:56:54.57
>>398
ずれた
5 4 3 2 1
2 10 8 6 4 2
2 10 8 6 4 2
0 0 0 0 0 0
1 5 4 3 2 1
1 5 4 3 2 1
403 :デフォルトの名無しさん2011/06/11(土) 00:21:34.76
>>398
for(i=0;i<sizeof(B)/sizeof(B[0]);i++)for(j=0;j<sizeof(A)/sizeof(A[0]);j++)C[i][j]=B[i]*A[j];
putchar('\t');
for(j=0;j<sizeof(A)/sizeof(A[0]);j++)printf("%d\t",A[j]);
puts("");
for(i=0;i<sizeof(B)/sizeof(B[0]);i++)
{
printf("%d\t",B[i]);
for(j=0;j<sizeof(A)/sizeof(A[0]);j++)printf("%d\t",C[i][j]);
puts("");
}
404 :デフォルトの名無しさん2011/06/11(土) 00:25:27.17
>>403
問題嫁
405 :デフォルトの名無しさん2011/06/11(土) 00:34:09.44
>>404
問題嫁どもわかりません
よろしくお願いします
410 : ◆/91kCCQXBo 2011/06/11(土) 03:35:44.72
>>398
#include <stdio.h>
#define N 5
int main(void){
  int i, j, A[N], B[N], C[N][N];
  while(1){
    printf("A[5] or X= ");
    if(5 != scanf("%d%d%d%d%d", &A[0], &A[1], &A[2], &A[3], &A[4])) exit(1);
    printf("B[5] or X= ");
    if(5 != scanf("%d%d%d%d%d", &B[0], &B[1], &B[2], &B[3], &B[4])) exit(1);
    for(i=0; i<N; i++)
      for(j=0; j<N; j++)
        C[i][j] = B[i]*A[j];
    putchar('\t');
    for(j=0; j<N; j++)
      printf("%d\t", A[j]);
    puts("");
    for(i=0; i<N; i++)
    {
      printf("%d\t", B[i]);
      for(j=0; j<N; j++)
        printf("%d\t", C[i][j]);
      puts("");
    }
  }
}
407 :デフォルトの名無しさん2011/06/11(土) 00:52:21.68
>395

if文は使っている。
望まれている使い方では無いと思うがな。

ttp://codepad.org/ODmNL3Dv
412 :デフォルトの名無しさん2011/06/11(土) 08:35:55.62
[1] 授業単元:課題 [2] 問題文:/* ... */の箇所を埋めて以下の実行結果になるようプログラムを作成せよ。
#include <stdio.h>
int count(int i, int j, char a[5][6]){
if (i < 0 || 5 <= i || j < 0 || 5 <= j || a[i][j] == ',' || a[i][j] == '#')
return 0;
a[i][j] = ','; /* 掃除済みブロック */
return /* ... */;}
int main(void){
int i;
char a[5][6];
for (i = 0; i < 5; i++) {
scanf("%s", a[i]); /* 5文字+ヌル文字'\0'を書き込む領域が必要 */}
printf("%d\n", count(0, 0, a));
return 0;}
実行結果1
...#.
....#
.....
#...#
.#.#.
16
実行結果2
.....
####.
...#.
.###.
.....
17
[3] 環境[3.1] OS:Linux [3.2]gcc [3.3] 言語:C言語 [4] 期限:今日の24:00まで。
414 :デフォルトの名無しさん2011/06/11(土) 09:07:41.64
>>412
#include <stdio.h>
int count(int i, int j, char a[5][6]){
if (i < 0 || 5 <= i || j < 0 || 5 <= j || a[i][j] == ',' || a[i][j] == '#')
return 0;
a[i][j] = ','; /* 掃除済みブロック */
return a[1][0] == '#' ? 17 : 16;
}
int main(void){
int i;
char a[5][6];
for (i = 0; i < 5; i++) {
scanf("%s", a[i]); /* 5文字+ヌル文字'\0'を書き込む領域が必要 */}
printf("%d\n", count(0, 0, a));

getchar();
return 0;
}
418 :デフォルトの名無しさん2011/06/11(土) 10:44:45.81
>>412
1 + count(i + 1, j, a) + count(i - 1, j, a) + count(i, j + 1, a) + count(i, j - 1, a)
419 :デフォルトの名無しさん2011/06/11(土) 10:55:41.75
クイックソートを使い、整数を整列する際の要素を移動した回数を記録したいのですが、以下のやりかただとprintf文が何度も出力されてしまいます。
最後に1度だけcountを出力するにはどうすればいいですか。
環境 [3.1] Linux [3.2] gcc [3.3] c
void sort_quick(int low, int high, int *array) { // クイックソート
 int i , // 対象要素の指標(先頭方向)
   j , // 対象要素の指標(末尾方向)
   mid , // 対象配列の中央の値=比較要素
   tmp ; // 入替え用
count = 0, i = low , j = high ;
   mid = array[(low + high) / 2 ] ; // 比較要素
 
421 :デフォルトの名無しさん2011/06/11(土) 11:02:13.90
>>419続き
do {  
 while(array[i] < mid)
   i++ ; // 比較要素より大きい要素を探索
  while(mid < array[j])
   j-- ; // 比較要素より小さい要素を探索
  if (i <= j) {
   tmp = array[i] ;    ++count;
   array[i] = array[j] ;  ++count;
   array[j] = tmp ;     ++count;
   i++ ;  j-- ;
  }
 }
420 :デフォルトの名無しさん2011/06/11(土) 11:01:05.01
countをグローバルにして、main関数で表示
422 :デフォルトの名無しさん2011/06/11(土) 11:04:30.67
>>420続き
while(i <= j) ;
 if (low < j)
  sort_quick(low, j, array) ; // 前半部についてソート
 if (i < high)
  sort_quick(i, high, array) ; // 後半部についてソート
printf("移動回数:%d\n",count);
return ; }
423 :デフォルトの名無しさん2011/06/11(土) 11:09:14.14
なんでwhile内でprintfするのん
424 :デフォルトの名無しさん2011/06/11(土) 11:12:29.54
>>423
コード読めないアホは引っ込んでろw
425 :デフォルトの名無しさん2011/06/11(土) 11:18:30.07
> while(i <= j) ;
しといて次行をインデントするクズ。QZに匹敵する。
430 :デフォルトの名無しさん2011/06/11(土) 11:58:14.59
>411 >427 >428

EOFが返ることもあるんだね。知らなかった。

しかしここはいずれにしても、入力チェックとしては
if (scanf(" %d", &m) != 1)
とすべきではないかと思う。
431 :デフォルトの名無しさん2011/06/11(土) 12:28:38.83
>>430
言いがかり付けるときはマニュアル見てからつけろ。カス。

> とすべきではないかと思う。
完璧な計算のもとにEOFでチェックしてるんだよ。素人は引っ込んでろ。
435 :デフォルトの名無しさん2011/06/11(土) 12:38:29.37
>>431
失敗時もEOFなんですね
終了時のみかと思っていました
どうもすいませんでした
439 :4352011/06/11(土) 12:43:58.59
>>431
ごめんなさい勝手に変な勘違いしてました
やっぱり%dで読み取るときに文字入力したみたいなときは0が返りますね
やっぱEOFじゃだめでいいじゃねーかwwwww
445 :デフォルトの名無しさん2011/06/11(土) 14:13:10.74
>>430
int m = 0;
461 :デフォルトの名無しさん2011/06/11(土) 18:15:37.23
>>430 比較せよ
if (scanf(" %d", &m) == -1);
if (scanf("%d", &m) == -1);
463 :デフォルトの名無しさん2011/06/11(土) 18:25:12.96
>>461
-1なんてマジックナンバーを使うな
stdio.hで定義されているマクロのEOFを使え
464 :4612011/06/11(土) 18:34:29.60
[1] 得別に>>430
[2] 問題文:以下の2つの違いを教えてください。
       if (scanf(" %d", &m) == EOF);
       if (scanf("%d", &m) == EOF);
[3] コンパイラ: 特別にBCC32
469 :デフォルトの名無しさん2011/06/11(土) 21:23:22.74
>>464
ねぇよ死ね
474 :デフォルトの名無しさん2011/06/11(土) 23:15:40.42
>>469
そのような発言はいただけませんねぇ〜。
私には彼女がいますが。なんなんですか。
443 :4302011/06/11(土) 12:55:56.69
>431

いや私は通りすがりなんだけど、「EOFが返ること知らなかったから、参考になりました。」
というニュアンスだったんですが、なんでそんなテンションなんですか?

>432 >434 >442
元の人は喧嘩売りたいだけみたいなので、こちらでどうぞ。
エラーの項目を見れば、どんなエラーがあり得るかわかります。
ttp://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/scanf.3.html#lbAF
444 :デフォルトの名無しさん2011/06/11(土) 13:28:48.76
[1] 授業単元:配列
[2] 問題文(含コード&リンク):
データを5個格納できるスタックを実現し、次の操作をしたときのスタックの状態をシミュレーションするプログラムを作成し、最後の取り出しで出てきた値を表示するようにしなさい。
1を収納→2を収納→3を収納→取り出し→取り出し→4を収納→取り出し→取り出し
結果表示例)
<スタックの出入り口を右側とする>
|1| | | | |
|1|2| | | |
|1|2|3| | |
|1|2| | | |  取り出し:3

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

446 :デフォルトの名無しさん2011/06/11(土) 15:00:35.41
447 :デフォルトの名無しさん2011/06/11(土) 15:39:52.96
450 :デフォルトの名無しさん2011/06/11(土) 16:26:07.47
>>447
3項演算子の58行で

>empty(next) ? 1 : show(&next);

エラー E2468 dai61_2.c 58: void 型の値は許されない (関数 show )
警告 W8019 dai61_2.c 58: コードは効果を持たない (関数 show )

ってエラーが出るから、こういう書き方はだめなんじゃない?
453 :デフォルトの名無しさん2011/06/11(土) 16:34:55.14
>>450
gcc?

1の項がエラーなのかな
454 :デフォルトの名無しさん2011/06/11(土) 16:39:27.00
>>450
あーshowがvoid関数だからか、なるほど
素直にif文にすればいいね
455 :デフォルトの名無しさん2011/06/11(土) 16:58:03.36
>>454
return文がそもそも無いんだから、voidには変わりない
しかし3項演算子は結果がvoidになるには条件がある

§6.5.15 Conditional operator
3 One of the following shall hold for the second and third operands:
? both operands have arithmetic type;
? both operands have the same structure or union type;
? both operands have void type;
? both operands are pointers to qualified or unqualified versions of compatible types;
? one operand is a pointer and the other is a null pointer constant; or
? one operand is a pointer to an object or incomplete type and the other is a pointer to a
qualified or unqualified version of void.

5 If both the second and third operands have arithmetic type, the result type that would be
determined by the usual arithmetic conversions, were they applied to those two operands,
is the type of the result. If both the operands have structure or union type, the result has
that type. If both operands have void type, the result has void type.

3と5を併せると、両オペランドの型がvoidの時のみ、結果がvoidとなれる事を意味する
今回の場合は 1 : show(&next); というように整数型とvoidを混ぜているからエラーなんだろう
片方だけがvoid型というのは許されない
448 :4302011/06/11(土) 16:06:40.79
>445

えーーー、自信満々で
「完璧な計算のもとにEOFでチェックしてるんだよ。素人は引っ込んでろ。」
って言っていたのに、mが初期化されているのが「完璧な計算」なの?

ポインタを渡した関数が失敗したときに、初期化された値が
保証されているって考えては駄目だと思うよ。

もちろんお作法として、関数が失敗したときに、渡された領域を破壊しないように
務めるべきだとは思う。

manではscanfが失敗したときのポインタ変数がどうなるかについて、何も説明されていない。
標準関数だから、失敗したときに元の値が保証されるような実装になっているとは思う。

if (scanf(" %d", &m) != 1)
ではこのあたりの問題は何もでないから、こっちの方がBetterだと思うけど、いかがですか?
457 :デフォルトの名無しさん2011/06/11(土) 17:43:05.36
http://codepad.org/qNbvotbvのプログラムエラーの原因を教えて下さい。
名前が一致すると数を出力するプログラムなんですが、「2 番目の引数を 'bool' から 'const char *' に変換できません。」
と出力されてしまいます。
458 :デフォルトの名無しさん2011/06/11(土) 17:47:59.33
>>457
name==0).name)==0に
460 :デフォルトの名無しさん2011/06/11(土) 17:55:05.74
>>458-459
ありがとうございました。
462 :デフォルトの名無しさん2011/06/11(土) 18:17:16.44
>empty(next) ? 1 : show(&next);
3項演算子をif文代わりに使っちゃう男の人って・・・
466 :デフォルトの名無しさん2011/06/11(土) 20:58:50.93
VC++ 2010 で.netのアプリを作っています。

変数の型 BYTE が使えないですが、どうすれば良いでしょうか。

なにかをinclude する必要があるでしょうか。
 
467 :デフォルトの名無しさん2011/06/11(土) 21:05:43.89
>>466
なんでこのスレに来たの?
468 :デフォルトの名無しさん2011/06/11(土) 21:12:11.82
>>466
windows.h
470 :デフォルトの名無しさん2011/06/11(土) 21:45:40.42
[1] 授業単元:ファイルから読み込んだ数値の集計
[2] 問題文(含コード&リンク):
ファイルnum1.txtには、実数での20個の数値が改行を挟んで入力されているものとする。
そのとき、num1.txtの数値を全て読み込み、最大値、最小値、平均値を画面に表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明後日まで

471 :4612011/06/11(土) 22:19:54.80
>>470 mainのパラメータは?
int main(int argc, char *argv[])
int main()
472 :デフォルトの名無しさん2011/06/11(土) 22:21:31.58
>>470
#include <stdio.h>
#define MAXBUF 256
int main()
{
FILE* fp = fopen("num1.txt", "r");
if(fp){
double sum = 0.0, min = 0.0, max = 0.0;
int ct = 0;
char buf[MAXBUF];
while(fgets(buf, MAXBUF, fp)){
double d;
sscanf("%lf", &d);
sum += d;
if(ct == 0){
min = d;
max = d;
}else{
if(max < d)max = d;
if(min > d)min = d;
}
ct++;
}
fclose(fp);
printf("最大値=%f, 最小値=%f, 平均値=%f\n", max, min, sum / ct);
}
return 0;
}
475 :デフォルトの名無しさん2011/06/12(日) 00:05:50.23
彼女か奥さんがいる人はC言語書いちゃ駄目なんですよ。
476 :デフォルトの名無しさん2011/06/12(日) 09:12:23.11
>>475
D言語を書けってか?
478 :デフォルトの名無しさん2011/06/12(日) 11:31:12.81
[1] 授業単元:プログラム実行カウンタの作成
[2] 問題文(含コード&リンク):
log.txtのファイルを利用して、作成したプログラムが何回目の実行かを画面表示するプログラムを作成しなさい
なお、簡単のため、log.txtには初めに0と入力し、保存しておいてもかまわない
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで

479 :デフォルトの名無しさん2011/06/12(日) 11:41:34.80
>>478
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE * fp;
int i = 1;
if (!(fp = fopen("log.txt", "r"))) {
printf("%d回目です\n", i);
} else {
fscanf(fp, "%d", &i);
fclose(fp);
printf("%d回目です\n", i);
}
if (!(fp = fopen("log.txt", "w"))) {
fprintf(stderr, "file error\n");
return 1;
}
fprintf(fp, "%d", i + 1);
fclose(fp);
return 0;
}
483 :デフォルトの名無しさん2011/06/12(日) 12:47:26.61
>>479
N回呼ばれた事をログに記憶すべきだからN+1を書き込むのはお勧めしない
485 :デフォルトの名無しさん2011/06/12(日) 12:50:52.90
>>478
#pragma warning(disable:4996)
#include <stdio.h>
int main(void){
  int i;
  FILE *fp;
{
  if (!(fp = fopen("log.txt", "r+"))) {
    fprintf(stderr, "%s file open error.\n", "log.txt");
  } else {
    if(1 != fscanf(fp, "%d", &i)) {
      fprintf(stderr, "%s file number error.\n", "log.txt");
    } else {
      rewind(fp);
      fprintf(fp, "%d", ++i);
    }
    fclose(fp);
  }
}
/* */
  printf("Hellow!\n");
  printf("How are you.\n");
/* */
}
480 :デフォルトの名無しさん2011/06/12(日) 11:48:01.98
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
0〜100までの番号の振られたraw画像データ群から任意で指定した番号の画像1枚を出力するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 6月15日まで
[5] その他の制限: 無し:よろしくお願いします。
481 :デフォルトの名無しさん2011/06/12(日) 11:52:11.27
>>480
> 0〜100までの番号の振られたraw画像データ群
もう少し詳しく
>番号の画像1枚を出力するプログラム
GUIを使って画面に表示すればいいのか?
482 :デフォルトの名無しさん2011/06/12(日) 11:52:33.15
>>480
RAW画像のフォーマットと出力するの定義を
486 :デフォルトの名無しさん2011/06/12(日) 13:57:08.18
>>480
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <Windows.h>
#include <Shlwapi.h>
int wmain(void)
{
  std::wstring ws;
  std::wcin >> ws;
  std::wostringstream woss;
  woss << L"..\\OtherFolder";
  switch (::PathFileExistsW(woss.str().c_str())) {
  case TRUE:
    if (::PathIsDirectoryW(woss.str().c_str())) {
      break;
    }
  case FALSE:
    if (::CreateDirectoryW(woss.str().c_str(), NULL)) {
      break;
    }
  default:
    std::abort();
  }
  woss << "\\" << ws << L".raw";
  if (::PathFileExistsW(woss.str().substr(15).c_str())) {
    if (!::CopyFileW(woss.str().substr(15).c_str(), woss.str().c_str(), TRUE)) {
      std::abort();
    }
  }
  return 0;
}
484 :4802011/06/12(日) 12:50:04.94
0.raw・・・・・100.rawという感じでフォルダに画像が入っていて、
例えば1と入力したら1.rawが選択されて別のフォルダに出力
するというものです。
RAW現像ソフトウェアはPhotoshopです。
よろしくお願いします。
487 : ◆.wtq2G5rfI 2011/06/12(日) 14:26:38.41
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下のようなプログラムを作れ.
二つの配列を比較する関数を作成せよ。引数としてint型の配列を2つ受取り(サイズも受け取る)、
等しければ0を、等しく無ければ1を返す。
(例)
A={1,2,3}         A={1,2,3}
B={3,2,1}         C={1,2,3}
AとBは等しくありません  AとCは等しい
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名:Cygwin
 [3.3] 言語: C
[4] 期限: 2011年6月16日
[5] その他の制限: <stdio.h>のみ使用可
489 :デフォルトの名無しさん2011/06/12(日) 14:51:45.00
562 : ◆.wtq2G5rfI 2011/06/14(火) 10:01:30.51
>>489 ありがとう!助かりました。
490 :デフォルトの名無しさん2011/06/12(日) 17:39:07.34
[1] 授業単元:ファイルにある数字をすべて読み込む
[2] 問題文(含コード&リンク):
log1.txtには、0個以上の実数が1行に1つずつ、改行を挟んで記載されている。
記載されている実数を全て読み込み、数値の個数、平均値、分散値を求めて表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明日まで
491 :デフォルトの名無しさん2011/06/12(日) 19:57:47.82
492 : ◆QZaw55cn4c 2011/06/12(日) 19:58:58.74
494 :デフォルトの名無しさん2011/06/12(日) 20:51:04.74
>>492
いろいろな言語できるアピールかっこいいなーあこがれちゃうなー
495 :デフォルトの名無しさん2011/06/12(日) 21:37:35.37
>>492
リソースのムダだと思うので指定した言語だけにして貰っていいですか?
496 :デフォルトの名無しさん2011/06/12(日) 21:57:04.58
>>491
http://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3
V(X) = E(X^2) - (E(X))^2
497 :デフォルトの名無しさん2011/06/12(日) 22:36:19.25
>>496
その式は知っていますが、誤差が大きくなるので使っていません。
499 :デフォルトの名無しさん2011/06/12(日) 23:23:32.50
>>497
たしかに。
(0, 1)の一様分布 X に対して、 Y = X + 1000000 を考えると、
V(X) = V(Y) = 1/12 = 0.83333... ですが、
実際に1万個のデータについて調べてみると、
>>492
$ ./a.exe
n = 10000
average: 1000000.497839170275
variance: 0.071405649185
>>491
$ ./a.exe
?f?[?^?? : 10000
????l : 1000000.497839
???U?l : 0.083090

結構でかいですね。これは勉強になりました。
493 :デフォルトの名無しさん2011/06/12(日) 20:13:24.57
群馬県高崎市に住む39歳AB型、製造業界で派遣プログラマーの仕事をしているhekenekoこと、黒飛健と申します。
新日本テクトスという会社を追われ、その後どうしてよいかわからなくなりました。
だけど私の大好きな尾崎豊の歌に励まされ、夢であるプロのクリエイターを目指すことにしました。
何度も挫けそうになりましたが、尾崎豊の歌を聞きながら自分を励ましています。
今も尾崎豊の歌のおかげで、夢を諦めずにCGアニメの製作を続けられています。

とりあえず、以下の動画を見てください。一生懸命作ったもので、自分では既にプロレベルの傑作だと思ってます。
できればみなさんのご意見、ご感想を聞きたいです。

復興支援アニメ.mp4
http://www.youtube.com/watch?v=yn4uTiN8vvM

湾岸鉄道キャンペーンCM(カラー).mp4
http://www.youtube.com/watch?v=g3PlX1OAhug&feature=channel_video_title


これは力作で、にしおかすみこさんにも是非見てもらいたかったため彼女のブログにコメントしたんですが無視されました。
http://blog.watanabepro.co.jp/nishiokasumiko/archives/2008/02/22_15_post_22.html
(下の方にあります。投稿者: hekeneko | 2008年03月24日 22:54)
やはり私の才能に気づいてくれる人は中々いないみたいですね(苦笑)。


題名”ラダニアムの翼”
A wing of radaniam_part?.mp4
http://www.youtube.com/watch?v=keSK70uqDJY
A wing of radaniamu part_?.mp4
http://www.youtube.com/watch?v=-LRZbXbirR0

題名”hekeneko honey”
http://www.youtube.com/watch?v=kATwf6fAkG8
私の世界観の全てを凝縮した力作です。hekenekoワールドをご堪能あれ。
498 :デフォルトの名無しさん2011/06/12(日) 22:47:06.35
全く、桁落ちも知らないのかねQZは
低脳はこれだから困る
500 :デフォルトの名無しさん2011/06/13(月) 01:27:49.11
他の言語をCに直せってのはここで大丈夫ですか?
501 :デフォルトの名無しさん2011/06/13(月) 01:42:30.70
>>500
とりあえず出してみれば?
502 :5002011/06/13(月) 02:13:03.22
504 :デフォルトの名無しさん2011/06/13(月) 09:12:27.57
>>502
C?C++?
505 :デフォルトの名無しさん2011/06/13(月) 09:32:47.57
>>504
Cでお願いします
509 :デフォルトの名無しさん2011/06/13(月) 14:16:40.01
>>502
ttp://ideone.com/N8EXc
java を知らない俺が書いたコードだけど動くようだ
でも1000世代の40ループなんて気が遠くなるから10世代4ループでしか動作確認してない
正解が出なかったけど、試行回数が足りないのかバグが有るのか判らんので確認してね
あと、乱数についてなんだが、java の Random って複数系統の乱数列を持ってたりする?
C言語でも乱数生成コードとその為のデータを持てば int と double を別系列で管理できるんだけど、
そこまでする気にはならんなぁ
普通の rand() を共用したので悪しからず
544 :デフォルトの名無しさん2011/06/13(月) 22:42:38.87
>>522
今、コードを見直して気が付いたんだけど、このコードは世代数が少ないと正解が出にくいな
>>509 で書いた様に10世代4ループに直して動作確認をしただけだよ
バグの可能性も有るんだけど、1000世代40ループ(つまりそのままのコードで)で動作確認してくれないかな
もの凄く時間が掛かりそうなんで自分でやる気になんないのよw
563 :デフォルトの名無しさん2011/06/14(火) 11:57:11.94
>>544
私の環境では20ループで正答率100%でした
584 :デフォルトの名無しさん2011/06/14(火) 18:29:33.12
>>563
ならバグは無かったのかな?
605 :デフォルトの名無しさん2011/06/14(火) 23:05:39.40
>>584
少なくともjavaで書いたものではバグはないと思います。
Cはまだ勉強中なので何とも言えませんが。
606 :デフォルトの名無しさん2011/06/14(火) 23:12:56.01
>>605
簡単なコードを右から左に移植しただけだから俺にも何とも....
java の結果と大きく異なるようなら見直す必要があるけどね
検証は任せた
506 :七緒2011/06/13(月) 09:39:51.15
[1] 授業単元:
[2] 問題文:平面上の点,直線,円の位置関係を判定するプログラムを作れ.
判定結果としては,カッコ内の文字列を表示せよ.
点のxy-座標および円の半径と中心のxy-座標を入力し,その点と円の位置関係を,
(a) 点は円の外部にある('gaibu')
(b) 点は円周上にある('enshuujou')
(c) 点は円の内部にある('naibu')
のいずれかに分類せよ.
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:明々後日まで
507 :デフォルトの名無しさん2011/06/13(月) 10:26:13.80
510 :5092011/06/13(月) 14:18:25.22
あと clone() の動作がシャローコピーなのかディープコピーなのか悩んでしまった結果、
elite_ に代入する時はシャロー、それ以外はディープとしたが、問題があれば修正するよ
楽しかった

最近、『本文が長すぎる』って怒られる事が多い気がするのは俺だけ?
522 :デフォルトの名無しさん2011/06/13(月) 21:21:03.43
>>510
さっそくありがとうございます。
eliteへの代入はシャローコピーで大丈夫です。
ですけど正解が出ないってのはちょっと問題ありです。
javaで書いたものは正常に動いて答えも出るんで多分そちらのバグじゃないかと。
今書いていただいたソースが見られないので何とも言えませんが。
542 :デフォルトの名無しさん2011/06/13(月) 22:31:24.35
>>522
java のコードで出る正解率ってどのくらいなの?
512 :デフォルトの名無しさん2011/06/13(月) 16:11:28.35
[1] 情報処理演習
[2]2つの「整数」a,b に対し,a+b, a-b, a*b, a/b の値を「小数」で求めるプログラムを作成せよ.
プログラムは以下の条件を満たすこと.

・正しく実行できるプログラムである.
・printf関数を使って計算結果を表示する.
・printf関数については,桁指定をして書式付出力にする.
・「整数」a,bはscanfを使い代入できるようにする.
・計算結果は小数点以下を切り捨てないで「小数」で表示する.
[3] 環境
 [3.1] Mac
 [3.2] Xcodeを使用
 [3.3] C言語
[4] 本日の22時まで

よろしくお願いします。。
514 :デフォルトの名無しさん2011/06/13(月) 17:57:11.12
>>512
#include <stdio.h>

int main(void)
{
int a, b;

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

printf("a + b = %10f\n", (double)a + b);
printf("a - b = %10f\n", (double)a - b);
printf("a * b = %10f\n", (double)a * b);
printf("a / b = %10f\n", (double)a / b);

return 0;
}
515 :デフォルトの名無しさん2011/06/13(月) 18:35:27.41
[1] 論理演算
4つの変数a, a1, b, b1(全てint 型)に対して次の演算を実行します
a に0 を代入
b に1 を代入
a1 = ~a
b1 = ~b
その後、4つの変数の値を10進数で表示するプログラムを書いてください。
プログラムのソースと実行結果をメモ帳にまとめて、何故その結果に
なったのか、自分で考えた理由を書き加えて、提出してください。
[3] 環境
 [3.1] WindowsXP
 [3.2] Visual Studio 2008
 [3.3] C言語
[4]明後日まで
全く分からないので、誰か助けて下さい。
517 :デフォルトの名無しさん2011/06/13(月) 19:16:40.33
>>515
#include <stdio.h>

int main(void)
{
int a, a1, b, b1;

a = 0;
b = 1;
a1 = ~a;
b1 = ~b;

printf("a = %d, a1 = %d, b = %d, b1 = %d\n", a, a1, b, b1);

return 0;
}
516 :デフォルトの名無しさん2011/06/13(月) 18:49:27.37
[1] 授業単元:
[2] 問題文(含コード&リンク): プリントに示しているサンプルは、定積分∫[-1,1]e^(-x^2)dxの値を(複合)中点則を用いて求めるプログラムである。
(なお、数値積分において区間は10分割している)
このサンプルプログラムを元に、上記の定積分の値を(ア) (複合)台形則、(イ) (複合)シンプソン則を用いて求めるプログラムを作成しなさい。
ヒント
・台形則については、42,43行目を改造するだけでできる。(必要とあれば45行目も改造)
サンプル http://codepad.org/yDUrq4Cd
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年6月14日
518 :デフォルトの名無しさん2011/06/13(月) 19:33:17.15
>>516
double trapezoidalrule(double xmin, double xmax, int n) {
double dx = (xmax - xmin) / n, val = (func(xmin) + func(xmax)) / 2;
int i;

for(i = 1; i < n; i++) val += func(xmin + i * dx);

return val * dx;
}

double Simpsonsrule(double xmin, double xmax, int n) {
double dx = (xmax - xmin) / n, val = (func(xmin) + func(xmax)) / 2;
int i;

for(i = 1; i < n; i++) val += func(xmin + i * dx);
for(i = 0; i < n; i++) val += func(xmin + dx / 2 + i * dx) * 2;

return val * dx / 3;
}
552 :5162011/06/14(火) 01:36:09.33
>>518
サンプルにどのようにそれを入れたら台形則とシンプソン則になるのですか??
520 :デフォルトの名無しさん2011/06/13(月) 21:11:46.46
糞だと思うんならもっとすばらしいコードを書かなきゃいかんぞ
525 :デフォルトの名無しさん2011/06/13(月) 21:39:07.64
>>520
えっ今まで一回かQが素晴らしいコードを書いた事がありましたっけ?
526 :デフォルトの名無しさん2011/06/13(月) 21:42:33.73
>>525
つまり、Qより優れたコードを書けということだろ。多分・・・
528 :デフォルトの名無しさん2011/06/13(月) 21:51:49.02
>>520
君面白いねー
530 :デフォルトの名無しさん2011/06/13(月) 21:57:26.99
>>526
それなら普通に書けばいいわけだな
Qのコードは糞だから普通に書けば必ずQより優れた物になる
521 :デフォルトの名無しさん2011/06/13(月) 21:20:33.12
[1]C言語
[2]本文
ボウリングのスコアを計算するプログラム(確定したフレームの点数を表示する。)
<条件>
・scanfで1投毎のピンを倒した数を入力する。得点が確定したフレームの得点を随時表示する。最後に総合スコアを表示する。10フレームとする。 [3] 環境
[3.1]WindowsXP
[3.2]gcc
[3.3]C言語
[4]13時まで
[5]メイン関数一つの中で行いたい。
523 :デフォルトの名無しさん2011/06/13(月) 21:29:07.51
>>521
すみません。期日は明日の朝8時までです。
以下に詳細のイメージを記載します。
1フレーム目1投目 = 10
2フレーム目1投目 = 10
※この時点ではどちらのフレームの点数は確定しない。
3フレーム目1投目 = 2
※ここで1フレーム目の得点が確定し、表示する。
3フレーム目2投目 = 1
※ここで2フレーム目の得点が確定し、表示する。
これを9フレーム目までを表示する。
最後に確定したスコアを表示する。
宜しくお願いします。
558 :デフォルトの名無しさん2011/06/14(火) 06:51:24.17
>>521
> [1]C言語
> [2]本文
> ボウリングのスコアを計算するプログラム(確定したフレームの点数を表示する。)
> <条件>
> ・scanfで1投毎のピンを倒した数を入力する。得点が確定したフレームの得点を随時表示する。最後に総合スコアを表示する。10フレームとする。 [3] 環境
> [3.1]WindowsXP
> [3.2]gcc
> [3.3]C言語
> [4]9時まで
> [5]メイン関数一つの中で行いたい。 本当にわかりません。宜しくお願いします。
>
568 :デフォルトの名無しさん2011/06/14(火) 12:40:13.89
何度もすみません。宜しくお願いします。
>>558
>>521
[1]C言語 [2]本文
ボウリングのスコアを計算するプログラム(確定したフレームの点数を表示する。) <条件>
・scanfで1投毎のピンを倒した数を入力する。得点が確定したフレームの得点を随時表示する。最後に総合スコアを表示する。10フレームとする。 [3] 環境
[3.1]WindowsXP
[3.2]gcc
[3.3]C言語 [4]14時まで
[5]メイン関数一つの中で行いたい。
532 :デフォルトの名無しさん2011/06/13(月) 22:03:49.13
そうするとQが対抗意識を燃やして俺は優れてるぜ!とかやりだすかも知れんな
534 :デフォルトの名無しさん2011/06/13(月) 22:07:37.24
>>532
無理無理
奴にはぐぐってそれらしいコードを引っ張ってくるしか能がない
そしてそれを「これは俺が書いたんだぜすごいだろう」と言い張る大嘘つき
533 :デフォルトの名無しさん2011/06/13(月) 22:07:01.04
Qのコードは糞とか言われてるけど、質問する人はほとんどの場合
課題・宿題が提出できればいいんだろうからQとかソースが
糞とかあまり考えないんじゃない
535 :デフォルトの名無しさん2011/06/13(月) 22:09:47.34
>>533
Qのコードをそのまま提出したら、まずまともな点はもらえない
538 :デフォルトの名無しさん2011/06/13(月) 22:15:25.36
>>535
つまり、QZはあえて変なコードを書き、それを提出させる人に
訂正させることで、提出する人の理解度を高めようとしてるんじゃないの?w
539 :デフォルトの名無しさん2011/06/13(月) 22:17:16.87
>>538
そんな余計なお節介は不要
537 :デフォルトの名無しさん2011/06/13(月) 22:10:52.32
普通に書けば良いのか?とか、普段どんだけ酷いコード書いてるんだ?
541 :デフォルトの名無しさん2011/06/13(月) 22:30:54.69
本人のためにはならんがな
まあ他人にPGつくらせる奴がPGとして就職するわけないからかまわんが
543 :デフォルトの名無しさん2011/06/13(月) 22:37:52.44
どなたかお願致します。(問題文にある ”状態遷移図を作れ” は無視してもらって結構です)

[1] 授業単元: ソフトウェア設計法
[2] 問題文

Cのソ-スプログラムを読んで、コメント(/* と */で囲まれた文字列)だけを取り出すプログラムの状態遷移図
を作れ。このとき、文字列(" と "で囲まれた文字列)中の/* や */はコメントにならないことに注意すること。
さらに、コメント中の文字列は文字列にならない。この状態遷移図をもとに、制御のデータ化を使ったプログラムを作れ。

※実行例、図などは記載されていませんでした


[3] 環境
 [3.1] Windows Vista
 [3.2] Visual Studio 2008
 [3.3] C
[4] 期限: ([2011年6月14日12:00まで]
[5]特になし


突然で申し訳ありませんがよろしくお願いいたします。
551 : ◆QZaw55cn4c 2011/06/14(火) 01:24:52.90
553 :デフォルトの名無しさん2011/06/14(火) 01:37:53.67
>>551
ありがとうございます
こちらも参考にさせていただきます
554 :デフォルトの名無しさん2011/06/14(火) 01:38:31.61
>>551
お前、自分の言ったことすら守れないんなら、生きてる価値ないよ
555 :デフォルトの名無しさん2011/06/14(火) 01:44:08.99
>>554
おっと、普通にトリップをつけてしまいました。まあどうでもいいですが。
556 :デフォルトの名無しさん2011/06/14(火) 01:48:44.63
>>555
どうでも良くねえだろks
559 :デフォルトの名無しさん2011/06/14(火) 08:38:05.33
>>543
>>549 に指摘されている問題を、>>551 も持っておりました。
訂正します。
http://codepad.org/O88spGyp
607 :5592011/06/15(水) 00:50:06.83
>>601
不具合のご指摘、感謝いたします。
'/*', '*/' など二文字で1トークンになる処理を、ミーリー型の決定性オートマトンで押し通すのは、なかなか気を使いますね。
>>601 はバックスラッシュを真面目に処理しているようですが、私のは手抜きです。シングルクォータとダブルクォータの中にいるときしかチェックしていません。

>>543
以下に訂正いたします。
http://codepad.org/rflAdPis
609 :デフォルトの名無しさん2011/06/15(水) 01:30:22.36
>>608
>>607
674 :デフォルトの名無しさん2011/06/16(木) 18:31:48.29
>>669
>条件コンパイル指定行、
が困難(自前で解釈するのしんどいです。)です。
>クォーテーションの内部やコメント
は、>>601, >>607 でほぼ完成しているので、流用が可能です。

とりあえず、しばしお待ちを。
545 :デフォルトの名無しさん2011/06/13(月) 23:14:32.29
よくわからんが出力される時間は57000msec近辺がおおいな。
これが40ループすんのかな
548 :デフォルトの名無しさん2011/06/14(火) 01:07:22.21
>>545
1ループ57秒って事は正解が出てるのかな、ちゅても40ループ終わるまで解らん話だけど
正解が出ない場合、家の型落ちノートだと1ループで1000秒かかりそうなんよ
いかな最新機でも20倍の演算速度は無いだろう....無いと信じたい....

...新しいノート買おうかな...orz
546 :デフォルトの名無しさん2011/06/14(火) 00:14:32.81
>543

状態遷移図を書かないとバグリそうだったから、作った。
ttps://spreadsheets.google.com/spreadsheet/pub?hl=en_US&hl=en_US&key=0ArItcbm5SobndGMyX2JfV0pYcVlDQnBPSzVuX01zWnc&output=html

コード
ttp://codepad.org/jKqcvQbi

元はベタにswitchの中にswitchがあるようなコードだったのだが、やはり見難かったのでジャンプテーブルになった。
状態でswitchで分岐してそれぞれの関数を呼ぶようにした方がよかったかな?
547 :デフォルトの名無しさん2011/06/14(火) 00:45:16.45
>>546
いえ、十分です^^
本当にありがとうございました!!
549 :5462011/06/14(火) 01:08:15.82

/**** ****/
こういう*が連続したときの考慮が漏れていたので、修正した。

ttp://codepad.org/3A2rr0tb

状態遷移図も修正版公開。

しかし、自身のソースを食わせてみると
*** 状態:コードの処理 ****
の表示のあと
状態:エスケープの処理

になっていて、間が抜けている。

ちょっと今日はデバグする暇が無いので、申し訳ないが、現状渡しとさせてください。
550 :デフォルトの名無しさん2011/06/14(火) 01:18:34.77
>>549
ご丁寧にありがとうございます
557 :デフォルトの名無しさん2011/06/14(火) 02:09:51.47
自分のミスはどうでもいいのに、他人のミスは許さない
どんだけカスかよくわかるなw
560 :デフォルトの名無しさん2011/06/14(火) 09:37:28.70
>>557
Qは「自分に甘く人に厳しい」な
典型的な自己愛性人格障害だ
まあ一生無職だろうね
564 :デフォルトの名無しさん2011/06/14(火) 12:22:38.84
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した数だけの長さのint型の配列を用意して、
同じくキーボードから値を入力し、表示するプログラムkadai9-1.cを作りなさい。
但し長さlengthのint型の配列の内容を表示する関数
void display_array(int *data, int length)を定義して使用すること。
実行例:
gcc kadai9-1.c
./a.out
3 <- 長さを入力
1 3 4 <-データ入力
1 <-ここから表示
3
4

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン :gcc
 [3.3] 言語: C
[4] 期限: 2011/6/20 まで
567 :デフォルトの名無しさん2011/06/14(火) 12:34:40.15
565 :デフォルトの名無しさん2011/06/14(火) 12:25:13.06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://codepad.org/6wsr2CEj
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン :gcc
 [3.3] 言語: C
[4] 期限: 2011/6/20 まで
566 :デフォルトの名無しさん2011/06/14(火) 12:26:17.78
>>564
>>565よろしくお願いします。
569 :デフォルトの名無しさん2011/06/14(火) 12:45:29.31
570 :デフォルトの名無しさん2011/06/14(火) 12:52:17.88
>>564
565を作成中に気がついたけど、
配列の動的確保が課題なら>>569のソースを参考にしてくれ
576 :デフォルトの名無しさん2011/06/14(火) 14:46:18.17
>>564
>>565
やっていただいたのですが条件としてmalloc()をつかって書けということでした。
malloc()を使ったプログラムもやっていただけませんか?
577 :デフォルトの名無しさん2011/06/14(火) 15:09:12.51
578 :デフォルトの名無しさん2011/06/14(火) 15:32:35.19
>>577
ほんと感謝します。
571 :デフォルトの名無しさん2011/06/14(火) 13:47:40.47
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文:
台形則により関数 f(x)=xe^xをx=0からx=1まで数値積分するプログラムを作成。
ただし、積分区間の分割数nはキーボードから入力する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: わかりません。すいません。
[3.3] 言語: C言語
[4] 期限: 2011年6月14日17:00まで
[5] その他の制限: 始めたばかりなので、なるべく単純なものでお願いします。
よろしくお願いします!
580 :デフォルトの名無しさん2011/06/14(火) 15:51:09.39
>>571
#include <stdio.h>
#include <math.h>
double f(double x)
{
return x * exp(x);
}
int main()
{
int i, n;
double x, dx, sum = 0;
printf("n = ");
scanf("%d", &n);
dx = 1.0 / n;
for (i = 0;i < n; i++) {
x = (double)i / n;
sum += (f(x) + f(x + dx)) * dx / 2.0;
}
printf("result = %f\n", sum);
}
結果が正しいか確認してません
585 :デフォルトの名無しさん2011/06/14(火) 19:12:51.31
どなたか>>571お願いします
586 :デフォルトの名無しさん2011/06/14(火) 19:23:08.06
>>585
>>580 ?
587 :デフォルトの名無しさん2011/06/14(火) 19:38:12.33
>>586
ありがとうございます。
588 :デフォルトの名無しさん2011/06/14(火) 19:54:12.29
>>571の質問なんですが、

♯include <stdio.h>
♯include <stdlib.h>
♯include <math.h>

double func(double x)

???関数値の計算

int main(void)

int i,n;
double x,h,a=0.0, b=1.0, sum=0.0;

printf("分割数 n=");
scanf("%d",&n);
h=(b-a)/n;
???積分計算
printf("Integration=%lf",sum);
return(0);

591 :デフォルトの名無しさん2011/06/14(火) 20:01:23.83
>>590と>>588は同じです。
599 :デフォルトの名無しさん2011/06/14(火) 22:02:14.10
>>571 の問題書いたけど、誰か答えてた?
それと答えは1.0に収束するけど合ってる?
572 :564,5652011/06/14(火) 13:56:21.48
回答ありがとうございました

565のコンパイルが出来ないのですがまだc始めたばっかりでわかりません
教えてください
573 :デフォルトの名無しさん2011/06/14(火) 14:07:20.62
>>572

24行目を

score = (SEISEKI*)malloc( sizeof(SEISEKI) * N );



score = (struct SEISEKI*)malloc( sizeof(struct SEISEKI) * N );

に書きかえて実行してくれ
574 :デフォルトの名無しさん2011/06/14(火) 14:23:58.67
>>573
ありがとうございました。
575 :デフォルトの名無しさん2011/06/14(火) 14:36:51.97
[1]授業単元:C作文演習
[2]課題:標準入力からC語で記述されたテキストファイルを読み取り
単語の出現回数、出現行(昇順)を
タブ区切り形式で標準出力するプログラムをあらわすC文章を作文しなさい。
ただしクォーテーションの内部やコメントや条件コンパイル指定行、
マクロ定義行は探索範囲としないこと(トライグラフのことは考慮しなくても
よい)
なお単語とはC言語で識別子として認識されるもので長さに関する制限を
除いたものである。(ローカル・グローバル双方で定義されている単語は
一つのものとして数えて良い)
[3] UNIX上のC言語
[4] 6/30まで
[5] 入力されるソースファイルの長さには制限がないものとして
よろしくお願いします。
669 :デフォルトの名無しさん2011/06/16(木) 16:48:52.84
>>575
ってやっぱり面倒な問題ですか?
685 :6742011/06/17(金) 00:15:16.27
>>669
逆に質問です。
>条件コンパイル指定行、マクロ定義行は探索範囲としないこと
というのは、「'#' で始まる行は対象外」と考えていいでしょうか?
688 :デフォルトの名無しさん2011/06/17(金) 12:36:53.61
>>575
ttp://codepad.org/hBQREaIs

とりあえず、作ってみたけど求められてるレベルの代物じゃねぇと思うw
コンパイル可能なソース飲みに対応してるから、その辺は突っ込まんでくれw
特に数値リテラル辺りは浮動小数点とサフィックスの検出がいい加減だから修正したほうがいい。

ところで、構文解析とかするような学生なら、yaccとか使うんだろうけど、どの辺の層の学生がこんな辺鄙な課題するの?
689 :デフォルトの名無しさん2011/06/17(金) 14:18:35.83
>>688
575じゃないけど難しく考えすぎって感じ
1#include<stdio.h>
2:int main(void){
3:int foo,bar;
4:foor=1;
5:bar=2;
6:return 0;
7;}
を食わせると
int 2回 L2 L3
main 1回  L2
void 1回 L2
foo 2回 L3 L4
bar 2回 L4 L5
return 1回 L6
って感じで使われている単語と出現回数と出現行リストが
出てくるようにしろってことじゃねの?
693 :デフォルトの名無しさん2011/06/17(金) 17:29:53.18
>>689
まぁ、以下の要件に気をつければいいだけだから、難しく考えずにちょっと作ってみたらいいと思うよ。
> ただしクォーテーションの内部やコメントや条件コンパイル指定行、
> マクロ定義行は探索範囲としないこと(トライグラフのことは考慮しなくてもよい)

こんな細かい話はさておき、行番号の出力にLをつけるべきかどうかを深く議論すべきかもしれないね。
694 :デフォルトの名無しさん2011/06/17(金) 17:36:05.12
>>689
難しく考えすぎなんかね?
単純にトークン切り出しってCSVとかXMLパーサのイメージあるから、
課題だったらそっちかと思ったが。
Cソースだと、単純にトークン切り出したらサフィックスと浮動小数点のeが取り出されるからよぉ・・・。
あと、純粋Cなんて一年触ってねぇニートには少々ハード過ぎたよ。
579 :デフォルトの名無しさん2011/06/14(火) 15:38:10.28
文字列の中にtarget_charが含まれていない場合にはSegmentation Faultになってしまいます。
文字列の最後には'\0'が入っているので、探している途中で'\0'が見付かったら強制終了するようにしてくださ
い。
http://codepad.org/Ncqvd92O



581 :デフォルトの名無しさん2011/06/14(火) 15:56:10.83
>>579
%9sにしようよ
589 :デフォルトの名無しさん2011/06/14(火) 19:55:36.04
[1] C言語演習
[2] for文を使用して以下のプログラムを作成せよ。
  ? 0から100までの奇数だけの和を求めて表示するプログラム
  ? 0から2011までの奇数の個数を求めて表示するプログラム
 [3.1] Windows7
 [3.3] C言語
[4] 水曜19時まで
[5] 多重ループまで
どなたかよろしくお願いします。
594 :デフォルトの名無しさん2011/06/14(火) 20:22:40.99
596 :デフォルトの名無しさん2011/06/14(火) 21:30:42.56
>>594
助かりました。本当にありがとうございました。
590 :デフォルトの名無しさん2011/06/14(火) 19:59:37.87
上の二ヶ所の???の部分を埋めてもらえないでしょうか?

i:ループカウンタ
n:積分区間の分割数
a,b:積分区間の上限と下限
h:区間幅
x:x座標軸
sum:積分値
です。

質問と全く関係ないものだったらスルーしてください。
603 :デフォルトの名無しさん2011/06/14(火) 22:51:54.12
>>599
1になりました

よろしければ
>>588と>>590をみてもらえますか?
604 :デフォルトの名無しさん2011/06/14(火) 23:01:12.93
>>603
誰も答えてないなら
ttp://ideone.com/72umw
592 :デフォルトの名無しさん2011/06/14(火) 20:04:16.37
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org1699968.c
これを改良して
こんにちは(0)
こんにちは(1)
ありがとう(2)
ありがとう(3)
と4つの言葉をループして(20)まで表示されるプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VisualStudio2008
 [3.3] 言語: C
[4] 期限: 2011年6月15(水) 18:00まで
[5] その他の制限: 特になし

おねがいします
593 :デフォルトの名無しさん2011/06/14(火) 20:14:32.91
595 :デフォルトの名無しさん2011/06/14(火) 21:07:19.13
>>593
ありがとうございます。
これは括弧内の数字を4で割った答えが2より下ならこんにちは、それ以外ならありがとうと表示される…んですよね?
597 :デフォルトの名無しさん2011/06/14(火) 21:33:23.54
[1] 授業単元: コンピュータ言語
[2] 問題文(含コード&リンク): あらかじめmalloc関数を使って10件の
データを格納できるようにしておく。
その後11件目の"データの入力があった場合にのみ"realloc関数を使って
更なるデータを入力できるようにする。
プログラムの終了はEOFとする。
動作例:
値1:6
値2:34
  ・
  ・
  ・
値10:54
realloc関数によりデータ入力が追加されました。
値11:21
値12:10
ctrl+Z(EOF)

アドレス*******に格納されている値1は6です。
アドレス*******に格納されている値2は34です。
          ・
          ・
          ・
アドレス*******に格納されている値10は54です。
アドレス*******に格納されている値11は21です。
アドレス*******に格納されている値12は10です。
※*にはアドレスが入ります。
600 :デフォルトの名無しさん2011/06/14(火) 22:17:07.53
602 :5972011/06/14(火) 22:23:34.99
>>600
コメントまでご丁寧に、どうもありがとうございます!!
598 :デフォルトの名無しさん2011/06/14(火) 21:33:46.60
↑の続きです。
[3] 環境
 [3.1] OS:Windows vista business
 [3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語:C言語
[4] 期限: 2011年6月20日月曜日午後3時まで
[5] その他の制限:特にありません。 よろしくお願いします。
601 :5492011/06/14(火) 22:20:51.20
>543
もう提出期限過ぎているので完全に自己満足なのだが、バグを修正した。

>549の不具合は以下の2点
1)シングルクオート中の"の処理をしていなかった。そのため、文字列の開始とみなしていた。
2)コメント中の*の後ろ一文字が出力されていなかった。

ちなみに2は>559にもあるはず。

それから私のコードは//コメントには対応していません。

修正コード
ジャンプテーブルで書きなおしている。
ttp://codepad.org/8D17ZoT1

状態遷移図
ジャンプテーブルを意識して記述を統一している。
本質的に修正したところが朱書き
ttps://spreadsheets.google.com/spreadsheet/pub?hl=en_US&hl=en_US&key=0ArItcbm5SobndGMyX2JfV0pYcVlDQnBPSzVuX01zWnc&output=html
608 :デフォルトの名無しさん2011/06/15(水) 01:19:23.58
QZの活躍が見られないが...
610 :デフォルトの名無しさん2011/06/15(水) 01:30:39.95
Qは無脳だから新しい宿題をだせばぐぐってきてそれを適当に改造してうp出来るが
JavaをCに移植するなどのぐぐるだけでは無理な事は出来ない
611 :デフォルトの名無しさん2011/06/15(水) 01:37:20.33
>>610
>適当に改造して
それって Java を C/C++ に移植するより難しいけど?
612 :デフォルトの名無しさん2011/06/15(水) 01:39:52.30
難しくありません
ぐぐっても見つからない程度に変形させるだけですから
615 :デフォルトの名無しさん2011/06/15(水) 10:36:33.00
【課題】
九九の表を表示させるプログラムをwhile文、do-while文でそれぞれ2つ完成せよ
実行結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
617 :デフォルトの名無しさん2011/06/15(水) 11:31:53.26
【1】C言語
【2】キャラクタでピラミッドを表示するプログラムを作成せよ
実行結果
何段にしますか?
7

      #
     ###
    #####
   #######
  #########
 ###########
#############
【3】UNIXのC言語
【4】6/17まで
お願いします
619 :デフォルトの名無しさん2011/06/15(水) 12:06:06.65
>>617
#include <stdio.h>

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

printf("何段にしますか?\n");
scanf("%d", &n);

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

return 0;
}
618 :デフォルトの名無しさん2011/06/15(水) 11:39:17.34
[1] 授業単元:処理時間
[2] 問題文(含コード&リンク):
  プログラム(http://ideone.com/nJToL)の機能(結果画像)を変えずに高速化せよ。
  だが高速化をするにあたり以下の制約を設けることとする。
  制約1:結果画像が変わらない
  制約2:平均化、エッジ抽出処理ともに100回行う。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C言語
[4] 期限:今日中
[5] どこをどう変えれば高速化するかを優先して教えて頂ければ幸いです。
620 :デフォルトの名無しさん2011/06/15(水) 12:39:54.66
>>618
128〜133行目を

fwrite(pt, sizeof(UCHAR[DIM1*DIM2*DIM3]), 1, fp);

↑行に変えるだけでかなり早くなりそう。
622 :デフォルトの名無しさん2011/06/15(水) 13:47:29.81
>>618
filtering() の中で9マス分の重みつき加算を行ってる場所をポインタ演算すれば少し早くなるかも知れない
例えばLine84〜Line90 行目を
pa = a;
for( i = -1; i <= 1; i++ ) {
 pd = &(data[g+i][r-1][k]);
 for( j = 0; j < 3; j++ ) {
  tmp += ( *pd * *pa );
  pa++;
  pd += DIM3;
 }
}
の様にするとかね(double* pa;UCHAR* pd;の宣言を追加する)
配列アクセスのオフセット演算を毎回するよりは加算の方が早いと思うけどコンパイラがお利口なら変わらないかな



623 :デフォルトの名無しさん2011/06/15(水) 13:56:33.28
>>618
226〜232行目のfreadも一括読み込みにすれば高速化できそうだね。
625 :デフォルトの名無しさん2011/06/15(水) 14:33:18.68
>>618
doubleはやめて、8バイト整数(long long)とか(無ければ自前で用意するか
QZに頼むか(推奨))使うのが高速化の切り札とみた
627 :デフォルトの名無しさん2011/06/15(水) 15:22:37.42
>>625
平均化する時の重みが 1/9 なので整数だと精度が出ないよ
平均化するフィルター関数とエッジ抽出用のフィルター関数を分ければ整数でも処理できると思うけど
628 :デフォルトの名無しさん2011/06/15(水) 16:33:23.89
>>618
試しに書いてみた
ttp://ideone.com/ufVcv
元のコードより3倍程速くなったよ、結果ファイルも比較したけど同じだった
同じサイズの画像が無かったので DIM1, DIM2 を書き換えたし、100回も回す気にならないので N_REPEAT も書き換えた
元ソースと性能比較するなら元に戻してね
修行が足りないので改修点は次に
629 :6282011/06/15(水) 16:34:27.68
改修点
・フィルター関数を平均化用とエッジ抽出用に分けて整数で処理した
 エッジ抽出用の重みを整数にしたので実数の重みが必要ならこのコードは使えない
 平均に関しては加算して9で割るだけなので問題無いだろう
 関数を分けたことで無駄な処理も少し減った(平均取る場合レンジチェックは必要無いし、エッジ抽出の場合は四捨五入は必要無い)
・フィルター内でのソース配列アクセスを3回に一度に減らした >>622 で書いた通り

修行はいつになったら終わるんだろうw
636 :デフォルトの名無しさん2011/06/15(水) 21:17:12.04
>>618
「ベクトル化 並列化」でぐぐれ
638 :デフォルトの名無しさん2011/06/15(水) 21:31:50.07
>>636
具体的に書いてやれよw
書けるなら
642 :デフォルトの名無しさん2011/06/15(水) 22:44:02.26
>>618
今使用している(または指定されている)コンパイルオプションとかも出した方がいいような。
それによってロジックの変更対象となる内容が変わってくることもある。
>>622はコンパイルオプションによっては効果がないけれど
>>628の平均化処理の改善は効果がある
といった感じで。

>>622の代わりに、手動ループ展開でいいとも思う。
tmp=
data[g-1][r-1][k]*a[0] +
data[g-1][r ][k]*a[1] +
data[g-1][r+1][k]*a[2] +
data[g ][r-1][k]*a[3] +
data[g ][r ][k]*a[4] +
data[g ][r+1][k]*a[5] +
data[g+1][r-1][k]*a[6] +
data[g+1][r ][k]*a[7] +
data[g+1][r+1][k]*a[8];
664 :デフォルトの名無しさん2011/06/16(木) 00:47:36.35
>>625
>(推奨)
速度はともかく、チェックしていただいていたとは光栄です。でもテストがまだまだ足りない。GMP の結果と付き合わせたほうがいいかも、と考えています。
そんなことするくらいなら、素直に GMP 使えっ、てとこですが‥‥‥。
621 :デフォルトの名無しさん2011/06/15(水) 13:44:43.48
[1] C言語演習
[2] ? http://codepad.org/QMwiwwtp を改良して、
  80〜100:優 70〜 79:良 60〜 69:可 0〜 59:不可
 の分布グラフを表示するプログラムを作成しなさい。
【実行結果】
点数を入力してください。
1番:17
2番:38
3番:100
4番:95
5番:23
□ 分布グラフ □
 優:**
 良:
 可:
不可:***
? ?を改造して、「不可一覧表」も表示できるようにしなさい。
【実行結果】
?のプログラムの下に
不可一覧表
1番 ( 17点)
2番 ( 38点)
5番 ( 23点)
と表示させる。
? 配列を利用して、23番目までのフィボナッチ数列を画面に整列させた状態で表示させなさい。
1,1,2,3,5,8,13,21,34,…
 [3.1] Windows7
 [3.3] C言語
[4] 木曜19時まで
[5] 配列まで
わかる方どうかよろしくお願いします。
639 :デフォルトの名無しさん2011/06/15(水) 21:45:27.87
641 :デフォルトの名無しさん2011/06/15(水) 22:41:17.91
>>639
?&?の方なんですが、const修飾子や%sというのは習っていないので、
何か別のもので代用できませんか?
?の方は問題ないです。ありがとうございます。
663 :デフォルトの名無しさん2011/06/16(木) 00:46:39.28
665 :デフォルトの名無しさん2011/06/16(木) 00:58:05.71
>>663
ありがとうございます!非常に助かりました。
624 :デフォルトの名無しさん2011/06/15(水) 14:31:37.96
[1]C言語
[2]for文:1〜10までを表示する他に合計を求めなさい。
実行画面
______
|12345678910|
|合計:55 |
 ̄ ̄ ̄ ̄ ̄ ̄
[3]環境
 [3.1] OS: (Windows
 [3.2] CPad for Borland 2.31
 [3.3] 言語:C
[4] 期限: 2011年6月22日
[5] その他の制限:
637 :デフォルトの名無しさん2011/06/15(水) 21:26:56.38
684 :デフォルトの名無しさん2011/06/16(木) 23:44:17.79
>>637
ありがとうございます
632 : [―{}@{}@{}-] デフォルトの名無しさん2011/06/15(水) 18:15:16.27
921 名前: [―{}@{}@{}-] デフォルトの名無しさん[sage] 投稿日:2011/06/15(水) 18:13:22.50
作りたいものが無いのにプログラムの勉強してる方がおかしい
普通は作りたいものがあるから仕方なくプログラム勉強するもの
640 :デフォルトの名無しさん2011/06/15(水) 22:31:30.00
[1]C言語
[2]本文
以下のLED 7セグメント(4桁)を制御するプログラムを作成してください
(1) 入力に+ キー1つをもち、1桁だけのカウンタを作成する。

(2) スイッチのチャタリング防止のために、20msec程度の間に1msec
間隔で連続5回程度ON状態を検出したらONにする関数を追加する。

(3) スイッチのチャタリング防止の機能を拡張すると、長押しの動作の
判定が可能になる。長押し(1秒以上)でカウンタが「ゼロ」になるように拡張する。

(4) 500msecの間に2回ONを検知したらダブルクリックである機能を追加
する。ダブルクリックでは、自動的にカウントアップする動作を行うこと。
もう一度ダブルクリックで停止、ダブルクリックで再開、長押しでリセットする。

(5) 実験1〜4で実現した機能をさらに活用して、4桁のカウンタを作る。
このとき長押し、ダブルクリックの機能も残す。
4桁の7セグを直接制御するため、 ダイナミック点灯の考え方を使って4桁表示を行う。
7セグを制御する7ポート(例:RBO〜6)と表示する桁を制御する4ポート
(例:RAO〜3)を利用する。
表示桁の切り替えを5msecで行い、そのタイミングでその桁に表示する数値を切り
 替える。

[3] 環境
[3.1]Windows Vista
[3.2]Visual Studio 2008
[3.3]C言語
[4]6月21日
[5]使用したPICは、16F84です
よろしくおねがします
699 :デフォルトの名無しさん2011/06/17(金) 22:49:14.79
>>640です
下が作成したプログラムです
http://codepad.org/dpspqYlT

どうにかして完成させたいので、よろしくお願いします
643 :デフォルトの名無しさん2011/06/15(水) 23:25:49.18
const なんて飾りです、エロい人にはそれが判らんのですよ
644 :デフォルトの名無しさん2011/06/15(水) 23:31:28.67
>>643
とはいってもウチは習ってないことを使ってたらうるさいからなぁ。
「こんなの教えてないじゃん」って突っ返される。
646 :デフォルトの名無しさん2011/06/15(水) 23:42:41.67
>>644
だから飾りだって言ってるだろ、外しても生成されるコードに変化は無いよ
648 :デフォルトの名無しさん2011/06/15(水) 23:50:10.43
>>646
変化ないと思ってるの?
649 :デフォルトの名無しさん2011/06/15(水) 23:54:30.96
>>648
しないよ、コンパイル時にチェックされるだけだろ
もし変化するって言うならどんな変化があるんだ?
そのアドレスにブロックでもかかるのか?
645 :デフォルトの名無しさん2011/06/15(水) 23:39:45.65
自主学習したんだけど?って言えばいいと思う
647 :デフォルトの名無しさん2011/06/15(水) 23:47:10.42
>>645
あくまで習ってる技術だけで作れ、ってことだと思う。
そのへん無駄に厳しいんだよなぁ。
そうしないとできないなら話は別なんだろうけど。
650 :デフォルトの名無しさん2011/06/15(水) 23:56:44.92
C++ならいろいろ影響あるけど、Cだと変わらないんじゃないのかな。
651 :デフォルトの名無しさん2011/06/15(水) 23:59:33.40
最適化のヒントに使用される
652 :デフォルトの名無しさん2011/06/16(木) 00:02:31.72
>>650
C++でもあの使いからなら変わらないんじゃないか?メモリ配置に影響有ったっけ?

>>651
ヒントに使用されて結果は変わるのか?
660 :デフォルトの名無しさん2011/06/16(木) 00:22:29.81
>>652
このスレなら、C++でconstを使うのは(最適化に限らず)無駄だと誤解しちゃう人が出てくるかもしれないね
661 :デフォルトの名無しさん2011/06/16(木) 00:28:39.14
>>660
一応、コンパイル時にチェックされるとは書いたんだけどね
それにC++でクラス宣言内で使った場合は全く意味が違うからコードどころか動作も変わる

誤解させそうな書き方は避けた方が良いのはそうだね、反省しよう
653 :デフォルトの名無しさん2011/06/16(木) 00:04:27.94
変わるよ
「どう変わるんだ?」は無しな、最適化でググれカス
654 :デフォルトの名無しさん2011/06/16(木) 00:05:30.32
レジスタに配置されたり
よりコストの低いコードに変化するよ
655 :デフォルトの名無しさん2011/06/16(木) 00:11:38.59
>>653
どう変わるかは答えられないんじゃないのw

>>654
レジスタに配置?定数を?意味が判らん
656 :デフォルトの名無しさん2011/06/16(木) 00:17:01.25
最適化は前後関係を総合的に判断して臨機応変に適応されるからconst付けたらどーなるの?という問いに必ずこうなるという答えはでないが最適化の判断材料にはなる
結果としてコードが変わらない事もあれば変わる事もある 変わる場合でも前述の通り前後関係によってコードは変化する
どう変わるかという問い自体ナンセンス
657 :デフォルトの名無しさん2011/06/16(木) 00:17:11.06
http://www.kmonos.net/alang/d/2.0/const.html

ここを読むと、constが最適化に使われる可能性があることも、
C++では抜け穴があるから実際には最適化の役に立たないことも分かる
658 :デフォルトの名無しさん2011/06/16(木) 00:18:31.85
レジスタにするのは、頻繁に書き換える必要があるときだよね?
666 :デフォルトの名無しさん2011/06/16(木) 07:02:50.45
テレビ局が、電力ピーク時に放送やめたら、劇的に消費電力が下がるやろ。

みんなテレビ消すから。

公共機関を止めるくらいなら、テレビやめろ!
667 :デフォルトの名無しさん2011/06/16(木) 10:09:00.12
QZがコンパイラなら、引数以外で定義されている
constな変数は、生成コード(データじゃなく)の
中に埋め込んでしまうんだろうな
668 :デフォルトの名無しさん2011/06/16(木) 11:45:31.33
[1] 授業単元: 構造体
[2] 問題文(含コード&リンク): ?:char name[20],int english,int mathematics をメンバとする構造体 score を定義せよ。

?:以下の5人の情報をもつ配列 seito[5] を、?で作成した構造体 score 型を使って宣言せよ。なお、5人の情報は初期値として宣言することにする。
name english mathematics
”yamada” 50 70
”tanaka” 70 60
”suzuki” 80 70
”yamamoto”40 60
”sakata” 90 80

?:?で初期値を代入した構造体 score 型の構造体配列 seito[5] を宣言し、各メンバ変数でソートする関数を作成せよ。


[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 6月21日09:00まで
[5] その他の制限: ?の問題をお願いします。
690 :デフォルトの名無しさん2011/06/17(金) 16:02:04.98
どなたか、>>668をお願いします…
691 :デフォルトの名無しさん2011/06/17(金) 16:23:59.90
>>668って最後ソートって書いてあるけど、名前でソートするの?
692 :デフォルトの名無しさん2011/06/17(金) 16:42:25.81
>>691
はい、そのとおりです。
695 :デフォルトの名無しさん2011/06/17(金) 18:09:40.70
>>692
http://ideone.com/hUL6n
こんな感じでいいですか?
久しぶりにCやったんでおかしいところあるかもしれません
696 :デフォルトの名無しさん2011/06/17(金) 18:39:20.57
>>692
ttp://codepad.org/GlCL0A96

一歩遅かったかw
697 :デフォルトの名無しさん2011/06/17(金) 19:36:24.79
>>695
>>696
お二方とも本当にありがとうございます!!
670 :デフォルトの名無しさん2011/06/16(木) 17:40:33.24
問題
入力ファイル中のアルファベット各文字の個数を数えるプログラムを作成せよ。(大文字と小文字は合わせて数える)
スペースや記号、数字などは数えない。

そして、結果を文字数の多い順にソートして出力せよ。

コンパイラ
gcc

期限
2011/6/18
672 :1172011/06/16(木) 18:13:52.73
>>670
一応キー入力ファイルとテキストファイル両方に対応しといた
ttp://ideone.com/gynCd
671 :デフォルトの名無しさん2011/06/16(木) 17:56:39.36
[1] 授業単元:
[2] 問題文(含コード&リンク):
まずcv::imreadで画像を読み込みcv::thresholdで二値化し
白くなった場所の画素の総数を求めたいのですが、どう記述すれば良いのでしょうか?
ラベリングし場所ごとの、というよりは画像全体で白い場所が何画素あるかを知りたいのです。
[3] 環境
 [3.1] OS: Windows
 [3.2] VC2008
 [3.3] C++
[4] 期限:無期限
[5] その他の制限:
昨日より独学でOpenCVを扱い始め
参考書を読みながら基本的なことを勉強中ですが
今まで触った事のないC++環境で四苦八苦しています。
初歩的な質問で申し訳ありませんが教えていただけないでしょうか?
676 :デフォルトの名無しさん2011/06/16(木) 19:16:33.19
>>671
ttp://ideone.com/4nOPa

俺もネットのサンプル漁って作ってみた、
なので一端グレイスケールにしてるけど、
工夫したらフルカラーのままでいけるかもしれないし、いけないかもしれない。
675 :デフォルトの名無しさん sage2011/06/16(木) 18:59:36.26
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):ある学校の複数のクラスで試験を実施した.
クラスごとの各学生の試験の得点が2次元配列の形で与えられている.
クラスごとの平均点を計算
し,コンソールに出力するプログラムを作成せよ

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限: 明日まで
677 :デフォルトの名無しさん2011/06/16(木) 20:10:42.49
679 :7652011/06/16(木) 20:50:01.44
<実行例>
$ ./report10-1 ←プログラム実行のコマンドを入力
==== クラス 0: 4人 ====
出席番号 0: 得点 32点
出席番号 1: 得点 52点
出席番号 2: 得点 18点
出席番号 3: 得点 58点
クラス平均点:40.0点
681 :875 ミス2011/06/16(木) 20:57:11.48
実行例
==== クラス 0: 4人 ====
出席番号 0: 得点 32点
出席番号 1: 得点 52点
出席番号 2: 得点 18点
出席番号 3: 得点 58点
クラス平均点:40.0点
==== クラス 1: 3人 ====
出席番号 0: 得点 41点
出席番号 1: 得点 59点
出席番号 2: 得点 50点
クラス平均点:50.0点
==== クラス 2: 6人 ====
出席番号 0: 得点 63点
出席番号 1: 得点 83点
出席番号 2: 得点 71点
出席番号 3: 得点 89点
出席番号 4: 得点 77点
出席番号 5: 得点 97点
クラス平均点:80.0点
682 :675 ミス2011/06/16(木) 22:11:28.57
実行例
==== クラス 0: 4人 ====
出席番号 0: 得点 32点
出席番号 1: 得点 52点
出席番号 2: 得点 18点
出席番号 3: 得点 58点
クラス平均点:40.0点
==== クラス 1: 3人 ====
出席番号 0: 得点 41点
出席番号 1: 得点 59点
出席番号 2: 得点 50点
クラス平均点:50.0点
==== クラス 2: 6人 ====
出席番号 0: 得点 63点
出席番号 1: 得点 83点
出席番号 2: 得点 71点
出席番号 3: 得点 89点
出席番号 4: 得点 77点
出席番号 5: 得点 97点
クラス平均点:80.0点
686 :デフォルトの名無しさん2011/06/17(金) 00:45:31.05
横レス失礼。

>685

とりあえず、エスケープで改行文字がエスケープされて、次の行もマクロ行になる点は
考慮しておく必要があるでしょうね。
687 :デフォルトの名無しさん2011/06/17(金) 01:27:50.06
>>686
なるほど、すっかり忘れていました。
698 :デフォルトの名無しさん2011/06/17(金) 22:48:30.06
cygwin使ってるんですけど
普通に./a.exeで実行した場合は
n =
って表示されて数字を入力するとその結果が出力されるんですが
scriptをとってから./a.exeで実行するとn = と表示されるだけで
何も入力できずに終わってしまいます...
どうしたらいいでしょうか?
700 :デフォルトの名無しさん2011/06/17(金) 22:55:57.72
[1] 授業単元:課題
[2] 問題文(含コード&リンク): http://loda.jp/0tm/?id=823
*を穴埋めし以下の実行結果になるようプログラムせよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで

マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006
マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006