11/11/18 19:32:43.34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(codepad.org)
[3] 環境
[3.1] OS:Linux Ubuntu 10.04
[3.2] コンパイラ名とバージョン:不明ですが恐らくgccだと思います。
[3.3] 言語:C
[4] 期限:11/25
384:デフォルトの名無しさん
11/11/18 19:46:58.93
>364
ごめん。>358じゃないんだけど、reverse_wordってちゃんと動く?
少なくとも俺の環境だとダメ。VC2010(に入ってるcl.exe)とMinGWのgccの両方で試したけどダメ。
>366の発言が関係してる?
385:デフォルトの名無しさん
11/11/18 20:07:37.69
>>384
VC2010のC++はC89なのでC99はコンパイル通らないよ
gccならバージョンにも寄るがだいたい通る
つーか宿題にC99書くなって
Linux上のgccならC99でもいいっていう考えだろうけど、使うなよ
こんなクソ言語
386:デフォルトの名無しさん
11/11/18 20:58:29.77
>>383
採草地w ちゃんと写せよ
387:デフォルトの名無しさん
11/11/18 21:00:22.81
すなわちの前後が全く繋がってないような気がするんだが
388:デフォルトの名無しさん
11/11/18 21:14:54.23
>>384
変数宣言を移動しても、s3の処理で落ちる
389:デフォルトの名無しさん
11/11/19 00:28:11.38
[1] 授業単元:計算機アルゴリズムⅠ
[2] 問題文(含コード&リンク):
設問1-1
プログラム例9.4.4で「a_p=&a[0]; b_p=&b[0]; c_p=&c[0];」を「a_p=&a[4]; b_p=&b[4]; c_p=&c[4];」に置き換えた場合、同じ表示となるようにfor(・・・){・・・}を書換えなさい。
プログラム例9.4.4
URLリンク(www.dotup.org)
設問1-2
配列
float a[7] = {2.10, 3.21, 5.43, 6.54, 7.65, 8.76, 9.87}について、
(1)ポインタ変数を用いて、すべての要素を表示するプログラムを作成せよ。
(2)ポインタ変数を用いて、奇数の添字の要素を表示するプログラムを作成せよ。
(a_p+=2を使用すること。)
(3)ポインタ変数を用いて、すべての要素を逆の順に、a[6]からa[0]まで表示するプログラムを作成せよ。
ただし、ポインタ変数には最初a[6]のアドレスを記憶させるようにする。
(--a_pまたはa_p--を使用すること。)
[3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語:C
[4] 期限:[2011年11月25日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数
条件分岐if文、要素番号idx使用の書換、データの入れ替え
条件分岐・論理演算子を用いたif文の条件、if文、else if文
switch文、ポインタ変数・演算子*と&は習いました。
宜しくお願いします。
390:384
11/11/19 00:37:32.01
>358,364,385,388
reverse_wordだけ自分で書いてみた。stdioだけしか使わないようにしてみた。
URLリンク(ideone.com)
Cはほぼ初心者に近いけど、この問題はポインタとかアルゴリズムとかの勉強になって良いね。
無駄な部分が多分あると思うから、それは是非指摘してほしい。
391:デフォルトの名無しさん
11/11/19 00:59:42.73
>>389
設問1-1 URLリンク(codepad.org)
設問1-2
(1) URLリンク(codepad.org)
(2) URLリンク(codepad.org)
(3) URLリンク(codepad.org)
392:デフォルトの名無しさん
11/11/19 02:44:15.53
>>384
うーんreverse_word()の中でqがオーバーランしてるかな。
最後のreverse(s, q - 2 - s)で壊す。
393:デフォルトの名無しさん
11/11/19 03:00:00.82
調子にのっちゃダメー
394:384, 390
11/11/19 06:00:57.11
>392
確認なんだけど、
このレスはあくまでも>384へのレスであって、>390へのレスじゃないよね?
395:デフォルトの名無しさん
11/11/19 06:57:01.70
>>394
>>392は>>364のコードのことです。
396:394
11/11/19 09:58:09.26
失礼しました。アンカーミスりました。
了解です。
397:デフォルトの名無しさん
11/11/19 19:01:13.51
(3)だけ
int find(char *s, int n){ while(*(s+n)!=' ' && n<strlen(s)) ++n; return n; }
int reverse_word(char *s)
{
if (strlen(s)<1) return 0;
int i,n;
for(i=n=0; i<strlen(s); i=n+1){ n=find(s,i); reverse2(s, i, n-1); }
reverse(s, strlen(s)-1);
return 1;
}
398:デフォルトの名無しさん
11/11/19 19:02:06.45
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
アフィン変換で画像を変換せよ。ただし回転の中心は画像の中心であるである
URLリンク(codepad.org)
ここまでできたのですが画像の中心で回転してくれません。
[3] 環境
[3.1] OS:windowsxp
[3.2] コンパイラ名とバージョン:windows visual studio 2008
[3.3] 言語:c
[4] 期限:11/20
[5] その他の制限:見づらいプログラムですいません。画像を中心に回転するようにしたいです
399:デフォルトの名無しさん
11/11/19 21:59:36.82
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):URLリンク(i.imgur.com)
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/15 10:00
[5] その他の制限: そこまで複雑な関数は習ってません
詰んでます
お願いします
400:デフォルトの名無しさん
11/11/19 23:23:18.68
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
入力された数値が素数か否かを判定し,結果を画面に出力せよ.ただし
①ループ命令を使う方法
②再帰処理を使う方法
③上記のどちらも使わない方法
のいずれについても解答する事.
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/27 23:00
[5] その他の制限: 初心者向けにお願いします
401:デフォルトの名無しさん
11/11/19 23:51:01.44
>>400
③ だけ
URLリンク(codepad.org)
402: ◆QZaw55cn4c
11/11/19 23:51:26.08
>>400
① URLリンク(ideone.com)
② URLリンク(ideone.com)
③ うーん、困りました。わかりません。
403:デフォルトの名無しさん
11/11/20 00:13:49.80
>>400
>>401 を縮めた
URLリンク(codepad.org)
404:デフォルトの名無しさん
11/11/20 00:15:58.06
>>391
有難う御座います
405:デフォルトの名無しさん
11/11/20 00:31:18.16
398ですがコメント文が間違ってたので投稿し直します
1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
アフィン変換で画像を変換せよ。ただし回転の中心は画像の中心であるである
URLリンク(codepad.org)
ここまでできたのですが画像の中心で回転してくれません。
[3] 環境
[3.1] OS:windowsxp
[3.2] コンパイラ名とバージョン:windows visual studio 2008
[3.3] 言語:c
[4] 期限:11/21 20:00
[5] その他の制限:見づらいプログラムですいません。画像を中心に回転するようにしたいです
406:デフォルトの名無しさん
11/11/20 01:35:45.40
>>403
奇数だけチェックするようにしてビットパターンの方も間引いたわけですか
407:デフォルトの名無しさん
11/11/20 01:41:02.34
>>405
src_x=(dest_x-dest_width/2)*cos(-theta)-(dest_y-dest_height/2)*sin(-theta)+src_width/2;
src_y=(dest_x-dest_width/2)*sin(-theta)+(dest_y-dest_height/2)*cos(-theta)+src_height/2;
でおk
408:デフォルトの名無しさん
11/11/20 01:41:20.74
>>403
5以上の素数は 6n±1 に限られるから、もっと少なくできるんじゃない?
409: ◆QZaw55cn4c
11/11/20 01:42:07.62
>>403
>>401
んーんーなるほど。
410:デフォルトの名無しさん
11/11/20 01:46:53.92
>>409
死んでもgoto使いたくないのか
411: ◆QZaw55cn4c
11/11/20 02:05:06.43
>>410
そんなことはないんですけど、今回はやめときました。
URLリンク(hibari.2ch.net) >>479
URLリンク(codepad.org)
412:デフォルトの名無しさん
11/11/20 02:05:23.27
>>399誰かたのんます・・・
413:デフォルトの名無しさん
11/11/20 02:22:04.60
>>412
放置されたら諦めろ。
URLリンク(codepad.org)
414:デフォルトの名無しさん
11/11/20 03:48:44.47
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
整数nを入力、2以上nイカの全ての素数およびその素数の累積を表示(while文を使用)
例) n=15の時:
素数:2,3,5,7,11,13 累積:41
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:今日の22時まで
[5] while文使用でお願いします
415:デフォルトの名無しさん
11/11/20 04:40:23.12
>>400
main(i,n){scanf("%d",&n);_:if(n*(n>1)%++i)goto _;puts("not prime"+(i==n)*4);}
416:デフォルトの名無しさん
11/11/20 04:53:30.16
>>415
トリッキー過ぎるだろw
417: ◆QZaw55cn4c
11/11/20 04:58:29.46
>>412
>>399
残念。
URLリンク(codepad.org)
418: ◆QZaw55cn4c
11/11/20 05:03:18.15
>>415
>(n>1)
細やかな心遣いですね。
419:デフォルトの名無しさん
11/11/20 05:03:56.45
>>417
413 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/08(水) 04:58:51
典型的な自己愛性人格障害だな
治療不能
就職も出来ず一生ニート
416 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/08(水) 12:32:05
>>413
同属嫌悪ってやつか、自己紹介乙。
叩いているお前も十分基地外、池沼だよ。
そんなことしている暇があるんだろ?
便利な詭弁だよな
そうやって自分の問題から逃げていれば楽だもんだなあ
468 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/13(月) 21:08:24
Pen III 500MHz を2003年の夏まで使用していましたが
今はC2D、C2Qのを使用してますです!
Core iシリーズはVistaのごとくスルーしてます ><;
スクリーンショットマダァ?(・∀・ )っ/凵⌒☆チンチン
420:デフォルトの名無しさん
11/11/20 05:05:33.45
n;main(i){for(scanf("%d",&n);n%++i&&i<n;);puts("not prime"+(i==n)*4);}
421: ◆EiEUm/qHNk
11/11/20 06:18:42.24
[1] 授業単元:C言語
[2] 問題文:ガウスの消去法を使ってn元連立方程式を解け
URLリンク(ideone.com)
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C言語
[4] 期限:11月21日まで
[5] その他の制限:math.h や #difine などは習っていないので使えません。
アップロダに初めてソースを上げてみたのですが、学校では値が出ました、
あとは、ゼロを入力した場合、値がおかしくなるので、行交換?などをしたいのですが
どうすればいいのかわかりません。
422:デフォルトの名無しさん
11/11/20 06:30:24.07
部分ピボット選択なら簡単
423:デフォルトの名無しさん
11/11/20 06:34:32.94
>>421
例えばこんな感じ
URLリンク(ideone.com)
424:デフォルトの名無しさん
11/11/20 06:36:11.32
math.hを習ってないという事はfabs()を自作しないといかんね
それから#defineが使えないならC99の可変長配列を使わないといけない
425: ◆EiEUm/qHNk
11/11/20 06:48:19.27
fabs?などというのも習っていません、自作というのもしてわいけないと思います。
配列ぐらいまでの範囲しか習っていませんので、、、
友人はif文を使うなどと言っているのですが、どこに入れれば良いのかもわかりません。
426:デフォルトの名無しさん
11/11/20 07:05:27.87
>>425
いや、
>あとは、ゼロを入力した場合、値がおかしくなるので、行交換?などをしたいのですが
>どうすればいいのかわかりません。
なんでしょ?じゃピボット選択をするしかない
fabsの自作をしてはいけないというのなら三項演算子でも使ってプログラム内でやるよ
if文でもいいけど
427:デフォルトの名無しさん
11/11/20 07:11:29.83
URLリンク(ja.wikipedia.org)
>対角成分が 0 になる場合には、枢軸選択(ピボット選択)という式の交換を行う必要がある。
>対角成分が 0 になる場合以外でも、対角成分が絶対値が最大の係数になるように枢軸選択を
>行ったほうが、解の丸め誤差が少なくなる。ただし、これは行列要素の絶対値が同程度の大きさの
>場合のみ成り立ち、スケーリングを行わずに枢軸選択を行うとむしろ精度が悪化する場合もあるため、
>注意が必要である
つまり絶対値が最大の係数になるようにピボット選択をしなければならない
そのためにはfabs()が必要不可欠であるが、使用不可、自作も不可というのならプログラム内に
関数ではなく直書きするしかない
428: ◆EiEUm/qHNk
11/11/20 07:20:28.79
ピポッド選択をするのにif文、for文だけで対処できないのでしょうか?
先ほど私がロダにあげたソースに付け足していただけるとありがたいのですが、、
429:デフォルトの名無しさん
11/11/20 07:23:42.07
>>428
いやできるよ
ちょっと待って今他の作業をしてるもんで
他の人があげてくれるかもしれんし
それより心配なのはC99の可変長配列を関数間で受け渡し出来るのかという問題だ
可変長配列はalloca()の糖衣構文だと聞いているので、受け渡した時の書き方が
よくわからん
C89/C++ばかりやってるもんで
430:デフォルトの名無しさん
11/11/20 07:29:00.82
URLリンク(seclan.dll.jp)
(3) 関数引数での使用
関数ブロックの中に、可変長配列を宣言することができますが、もちろん関数の引数にも
使うことができます。例えば、(1)のようにして使用します。可変長配列の中に使う変数は、
そこで使用する以前に他で宣言されていて、コンパイラに対して可視になっている必要が
あります。したがって、void sumup(int data[m][n], int m, int n){ ... } のような関数定義は、
ファイルスコープレベルで m や n という整数変数が宣言されていない限りエラーになります。
なんじゃこりゃ
使えんなー
全部main()内に書くか
431: ◆EiEUm/qHNk
11/11/20 07:44:36.16
>>429
うーん、よくわからないですけど
C言語ならったばっかりの学生に
作らせているので、main()のなかまでは
干渉しないとは思うのですが、、
すいません、よくわからないことをいって
しまって
432:デフォルトの名無しさん
11/11/20 07:48:27.24
>>399 >>412
URLリンク(codepad.org)
妥当な短さで汚いコードどうぞ。
433:デフォルトの名無しさん
11/11/20 09:09:40.18
やっと作業終わった・・・
>>421
URLリンク(ideone.com)
c99でかつfabs()を使わない部分ピボット選択ならこんな感じになるよ
434: ◆EiEUm/qHNk
11/11/20 09:14:05.77
>>433
作業お疲れ様です。
学校で試してみます!
本当にありがとうございました
435:デフォルトの名無しさん
11/11/20 09:15:02.50
>>430
書いてあるようにvoid sumup(int m, int n, int data[m][n])ならおkって意味だろ
436:デフォルトの名無しさん
11/11/20 09:15:49.91
>>432
出力結果が変だぞ
tensu ::::
8001 78 64 88 90
8004 34 40 52 67
8013 83 77 89 93
8025 98 81 69 77
8062 56 63 47 23
Student Average::::
8001 : 80.00
8004 : 48.00
8013 : 85.00
8025 : 81.00
8062 : 47.00
Subject Average::::
Mat : 69.8
Phys : 1.034023498044222881300000000000000000000e+291
Chem : +NAN
Eng : 70.0
437:デフォルトの名無しさん
11/11/20 09:18:42.28
>>435
void sumup(int data[*][*]. int m, int n);
プロトタイプ宣言で先に可変長配列を持ってきたい時はこう書く必要があるみたいだな
438:デフォルトの名無しさん
11/11/20 09:21:00.62
>>432
>>436の原因が分かった
sumSubjectの初期化がされていない
double sumSubject[4] = {0.0, 0.0, 0.0, 0.0};
439:デフォルトの名無しさん
11/11/20 18:05:09.98
>>407
for(i =0; i < x; i++){
for(j =0; j < y; j++){
v=i/2*cos(-15*PI/180)-j/2-*sin(-15*PI/180)+x/2;
w=-i/2*sin(-15*PI/180)+j/2*cos(-15*PI/180)+y/2;
image_out4[v][w] =image1[i][j];}}
一応こんな感じにやって見ましたが大丈夫でしょうか?
440:デフォルトの名無しさん
11/11/20 18:29:15.04
cos(-15*PI/180)とsin(-15*PI/180)の結果自体はループ外で求めておいたら?
441:デフォルトの名無しさん
11/11/20 18:53:36.30
>>439
逆にしないと絵に穴が開くのと
有効範囲かどうかのチェックが必要
442:デフォルトの名無しさん
11/11/20 19:01:35.94
>>439
>>407 で -theta にしてるのは dest を基準に考えると逆回転になるよって意味だからね
443:デフォルトの名無しさん
11/11/20 22:04:08.54
>>414は「nイカ」は「n以下」です。すいません
444:デフォルトの名無しさん
11/11/20 22:14:59.92
>>442
ありがとうございます。理解しました
445:デフォルトの名無しさん
11/11/20 23:20:51.73
>>414
#include <stdio.h>
int main(){
int n, sum = 2, i = 2, j;
printf("n = ");
scanf("%d", &n);
printf("素数:");
while (i++ < n) {
j = 2;
while ((i % j) && j * j <= i)
j++;
if (i % j) {
printf("%d,", i);
sum += i;
}
}
printf(" 累積:%d¥n", sum);
return 0;
}
446:デフォルトの名無しさん
11/11/20 23:54:05.16
>>445
そういう処理ならエラトステネスのふるいを使ってみるとか
447:デフォルトの名無しさん
11/11/21 00:06:21.94
>>445
累積が間違ってるな
448:デフォルトの名無しさん
11/11/21 00:16:15.20
>>445
とってもありがとうございます
>>447
多分合ってると思います。15入力してちゃんと41とでるので
449:デフォルトの名無しさん
11/11/21 00:34:47.74
多分素数の2が表示されてないからじゃね
450:デフォルトの名無しさん
11/11/21 00:34:49.52
>>448
X printf("素数:");
O printf("素数:2 ");
451:デフォルトの名無しさん
11/11/21 01:01:05.52
雑談すまん。
小さいコードなんで処理を追えるから勉強になります。
452:デフォルトの名無しさん
11/11/21 01:34:13.40
>>414
エラトステネスのふるいで。
URLリンク(ideone.com)
453:デフォルトの名無しさん
11/11/21 02:19:10.47
>>452
ありがとうございます!
454:デフォルトの名無しさん
11/11/21 02:32:02.30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
線形リスト構造で、整数を1つ入れる度にソートし、出力するプログラムを作成せよ
配列はitem[11]とnext[11]を用意する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C言語
[4] 期限:22日まで
[5] その他の制限:構造体はなるべく分かりやすくお願いします
よろしくお願いします
455:デフォルトの名無しさん
11/11/21 02:58:47.20
>>454
問題に書き写し間違いは無い?
>配列はitem[11]とnext[11]を用意する。
なら
int item[11];
int next[11];
>[5] その他の制限:構造体はなるべく分かりやすくお願いします
だと
struct list{
int item;
strruct list *next;
}data[11];
のように、やり方が互いに違うと思うんだが。
456:デフォルトの名無しさん
11/11/21 03:06:24.45
>>454
structとポインタ習ってます?
457:デフォルトの名無しさん
11/11/21 08:40:13.50
>>455-456
すみません。構造体云々は間違えてす
ポインタでした。
構造体はまだ習ってないです。
458:デフォルトの名無しさん
11/11/21 08:56:51.98
え、ポインタ?構造体を使わずにポインタを使う線形リスト?
459:デフォルトの名無しさん
11/11/21 09:04:00.57
>>457
それだと配列nextの扱いはどうなるんだ?
配列itemと内容が同じになりそうなんだが。
460:デフォルトの名無しさん
11/11/21 09:13:04.92
>>459
勘違いした。
461:デフォルトの名無しさん
11/11/21 09:15:29.05
item[]はただのコンテナで、next[]に次のitemの要素のインデックスを
保持するとかなするんじゃ?
とにかくリストのデータ構造が実現されていれば別に構造体じゃなくてもいい。
462:454
11/11/21 10:12:33.80
わかりづらくてホントにすみません。
言いたいことは、>>461さんのであってると思います。
463:デフォルトの名無しさん
11/11/21 10:39:56.99
>>454
ポインター(int *p など)は使っていない。
URLリンク(ideone.com)
464:デフォルトの名無しさん
11/11/21 11:12:33.86
挿入ソートかなこれ
C99じゃないとコンパイルエラーが出るな
465:デフォルトの名無しさん
11/11/21 13:54:05.05
>>442
理解したと思っていましたが出できた画像が回転でなくせん断された画像なんですがこのdestっていうのはなんですか?
466:デフォルトの名無しさん
11/11/21 14:45:31.32
>>465
dest は destination の略
式に変なアレンジしなければ大丈夫
467:デフォルトの名無しさん
11/11/21 15:20:30.58
>>466
変にアレンジしてました。今度こそ大丈夫です。ありがとうございました
468:デフォルトの名無しさん
11/11/21 16:20:09.76
>>464
gcc -std=c89
でコンパイル通るけど、エラーメッセージは?
469:デフォルトの名無しさん
11/11/21 18:08:42.75
gccじゃなくてbcc32を使ってた
初期化の部分で最低一個データを入れないとエラーになった
Eclipse CDTからMinGWで -std=c89 でやると確かにエラーが出ない
bcc32が間違ってるのか
470:デフォルトの名無しさん
11/11/21 18:25:16.15
[2]つぎの関数をつくる
void zeroSuppress(char *src, char *dst, char pos, char flg)
posは小数点を挿入する位置で1なら1桁目と2桁目の間に
小数点があるものとしてゼロサプレスします。
文字数<=posの場合処理しない。
動きの例
src = "0123456"、 pos = 1 →dst = "123456"
src = "0012500" pos = 2 →dst ="12500"
src = "0000001" pos = 3 →dst ="0001"
src = "000B12" pos = 2 →dst ="000"(Bとそれ以降は無視)
flg = 1だと\0でうめる
src = "0000001" pos = 3 →dst = "\0\0\00001"
471:デフォルトの名無しさん
11/11/21 18:55:57.69
何がしたいのか良く判らんのだけど
src = "0012500" pos = 3 の場合は?
472:デフォルトの名無しさん
11/11/21 20:11:39.05
>>470 宿題じゃなさげな・・・
引数にchar使うよーなのは・・・・かなり特殊な環境に思うんだが。
flg=1だと・・・"\0" "\0" "\000" "01"と解釈でいいんかしら?
473:デフォルトの名無しさん
11/11/21 20:20:05.80
>>472
宿題ではなさそうってのは同意だが、NULLで埋めて右詰って用途が謎だ
nullnullnull0001 って話だと思うよ
でもなんか仕様が良く判らんな、 >>471 への回答も無いし flg による動作に一貫性が無い
上司に要求仕様をちゃんと確認した方が良い
474:デフォルトの名無しさん
11/11/21 20:39:29.03
んー。エスパーしてみるが。
7セグメントLED(小数点付き)の出力用。。。
nulは非表示・・・。
文字数固定。
475:454
11/11/21 21:32:43.27
>>463
ありがとうございます。
諸事情で今はWinVCしか使用出来ないのですが、
これだとiとjとnextが定義されないのですが、iとjとnextを初期化してもエラーになるのはどうしてでしょうかね?
476:デフォルトの名無しさん
11/11/21 21:50:35.50
>>470
Bがある場合と、0埋めが判らないので、作りかけ。
URLリンク(ideone.com)
477: ◆EiEUm/qHNk
11/11/21 22:30:36.83
[1] 授業単元:C言語
[2] 問題文:3*3の逆行列Aをもとめよ
URLリンク(ideone.com)
[3] 環境
[3.1] OS: linux
[3.2] コンパイラとバージョン: gcc
[3.3] 言語:C言語
[4] 期限:11月22日まで
[5] その他の制限:math.h や #difine などは習っていないので使えません。
アップロダにてソースを上げてみたのですが、学校では値が出ました、
あとは、ゼロを入力した場合、値がおかしくなるので、行交換?などをしたいのですが
どうすればいいのかわかりません。
先日、ガウスの消去法で、行交換のしかたを教えてもらったのですが、上記にあげた
ソースにも行交換をしていただけるとありがたいです
478:デフォルトの名無しさん
11/11/21 22:54:28.63
>>477
3x3 の逆行列なら公式を使うという手もあるぞ
使っちゃダメかもしれないがw
479:454
11/11/21 23:11:12.33
宣言初期化全て出来ました
お騒がせしてすみません
480:デフォルトの名無しさん
11/11/21 23:31:31.09
[1] 授業単元:プログラミング技法、配列とポインタ
[2] 問題文(含コード&リンク):整数型配列a[10]とb[10]を宣言し、a[10]に任意で数値を10個入力する。
b[10]は初期値として0を代入しておく。
任意で入力された10個の整数のうち、奇数のみ抜き出してb[0]から順番に代入する。
最後に配列bの中身を出力し終了する。このとき0は表示されないようにすること。
[3] 環境
[3.1] OS:win764bit
[3.2] コンパイラ名とバージョン:cpad ver2.31
[3.3] 言語:c
[4] 期限:11月22日18:00
[5] その他の制限:お願いします
481:デフォルトの名無しさん
11/11/22 00:21:56.67
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):(1,10,5) (1,20,10)...というテキストデータを読み込み、一番左の数字(ここでいう1と1)を一つの配列として表示と書きこみをするプログラム。(真ん中も右の数字も同じように処理する)
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) c言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 11月23日 15時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 何でもおk
482:デフォルトの名無しさん
11/11/22 00:53:34.84
>>480
URLリンク(ideone.com)
>>481
テキストの仕様は一行なのか、複数行なのか、また数字は必ず3つの組?
一つの配列として表示とはどのように? 書きこみとはどこに?
483:デフォルトの名無しさん
11/11/22 00:59:30.49
>>482
すみません。
数字は必ず三つの組で、テキストは(1,10,5)改行(1,20,10)と続いていきます。
一つの配列として表示とは、「1,1,1,1,1,1,1,1...]みたいな感じだと思います。
書きこみ先は、新規のファイルにだと思います。
484:デフォルトの名無しさん
11/11/22 01:46:05.56
>>480
#include <stdio.h>
#include <memory.h> //だっけ?
int main(void)
{
int a[10],b[10];
int i,j;
memset(b,0,10);
for(i=0;i<10;i++){scanf("%d",a[i]);}
for(i=j=0;i<10;i++,j++){
if(a[i]&1)b[j]=a[i]);
printf("%d\n",b[j]);
}
return(0);
}
485:デフォルトの名無しさん
11/11/22 03:21:57.86
>>481
まさかこんなに手間取るとは思わなかった…。
URLリンク(ideone.com)
486:デフォルトの名無しさん
11/11/22 03:31:32.09
>>481
すまない。>>485はバグ有り。
URLリンク(ideone.com)
487:デフォルトの名無しさん
11/11/22 03:41:11.76
>>481
URLリンク(ideone.com)
./a.out <input で画面出力
./a.out <input >output でファイル出力
テケトーですまん。
488:デフォルトの名無しさん
11/11/22 04:03:58.50
>>486
本当にありがとうございます。
すみませんが、./a.out [infile] [outfile]で実行しても、outfileに書きこまれないのですがやり方が悪いのでしょうか?
489:デフォルトの名無しさん
11/11/22 04:05:37.40
>>487
本当にありがとうございます。
申し訳ないのですが、配列の表示の仕方は縦ではなくて横が良かったのですが変更はできますか?
490:デフォルトの名無しさん
11/11/22 04:08:39.61
>>481ですが
付けたしになってしまって本当に申し訳ないのですが、書きこみは左、真ん中、右と一つずつ分けてそれぞれ3つのファイルに出力しないといけないみたいです。すみません。
491:デフォルトの名無しさん
11/11/22 04:16:00.35
>>490
URLリンク(ideone.com)
ファイル開けない理由はよくわからない。
残念ながらこっちの環境では成功してる。
492:デフォルトの名無しさん
11/11/22 04:18:56.73
>>491 バグ有り。またやってしまった。
初期化部分修正。
URLリンク(ideone.com)
493:デフォルトの名無しさん
11/11/22 04:25:23.29
>>491
ありがとうございます!
空のテキストファイルをoutfileにしてるのですが、実行しても何も書きこまれません。
環境は同じはずなのに何でだろう・・・
494:デフォルトの名無しさん
11/11/22 04:35:10.99
#include<stdio.h>
int main(int a,char** b){
FILE* fp;
if(a>1&&fp=fopen(b[1],"w")){ fprintf(fp,"test\n"); fclose(fp); }
return 0;
}
これ
./a.out outfile
で文字は入ります?
495:デフォルトの名無しさん
11/11/22 04:35:28.81
>>481
URLリンク(ideone.com)
496:495
11/11/22 04:37:35.16
すまん、俺もバグったw
497:デフォルトの名無しさん
11/11/22 04:38:10.24
間違えました。ごめんなさい。
#include<stdio.h>
int main(int a,char** b){
FILE* fp;
if(a>0){
if(fp=fopen(b[1],"w")){ fprintf(fp,"test\n"); fclose(fp); }}
return 0;
}
498:495
11/11/22 04:40:25.34
>>481
URLリンク(ideone.com)
499:デフォルトの名無しさん
11/11/22 04:51:13.82
>>497
文字入りました!
500:デフォルトの名無しさん
11/11/22 05:27:12.86
>>481
これでダメならもうお手上げです…。
URLリンク(ideone.com)
485=486=491=492=494=497でした。
501:デフォルトの名無しさん
11/11/22 05:36:36.47
>>500
何度もありがとうございます。
ただ、上手くいきません・・・
自分で変える部分は、13行目のfilenameとmodeの部分だけですよね?
502: ◆EiEUm/qHNk
11/11/22 05:46:49.54
だ、だれか逆行列のピボット選択のしかたを教えてください、、、
503:デフォルトの名無しさん
11/11/22 05:55:11.87
>>501
fcloseをfix。
URLリンク(ideone.com)
何も変更せずにそのままコンパイルしてください。
コンパイル後の使用方法 (読み込みファイルがtest.txtの場合)
./a.out text.txt test1.txt test2.txt test3.txt
504:デフォルトの名無しさん
11/11/22 05:56:03.12
致命的なtypo
コンパイル後の使用方法 (読み込みファイルがtest.txtの場合)
./a.out test.txt test1.txt test2.txt test3.txt
505:デフォルトの名無しさん
11/11/22 07:42:39.22
>>477
URLリンク(ideone.com)
一応行列Aが潰れていないか(正則であるか)のチェックを入れた
不要だったらカットして下さい
506:デフォルトの名無しさん
11/11/22 07:44:39.27
>>502
遅れてすみません
昨晩早く寝たもんで
507:デフォルトの名無しさん
11/11/22 08:48:51.75
>>471
src = "0012500" pos = 3 → dst = "12500"
flg = 1なら"\0\012500"
>>474
すごいです。当たりです。
508:デフォルトの名無しさん
11/11/22 08:51:53.71
>>507
posが何を意味しているのかわからない。
509:508
11/11/22 08:53:04.46
>>507
言葉で説明して下さい。
510:デフォルトの名無しさん
11/11/22 09:13:37.55
>>507
クイズかよw
511:デフォルトの名無しさん
11/11/22 09:36:01.49
>>508
posは小数点が挿入される位置です。
src = "0012500" pos = 3 → dst = "12500"
これだと12.500となるため頭の02つは消えます。
flg=1だと\0でうめるので0が\0になります。
512:508
11/11/22 09:43:01.14
>>511
ごめんなさい。わかりました。
513:デフォルトの名無しさん
11/11/22 12:08:22.93
>>470,511
'Bとそれ以降は無視'が不明なので作りかけ。
・英字が含まれていたらpos,flg無効?
URLリンク(ideone.com)
514:デフォルトの名無しさん
11/11/22 12:17:09.18
>>513
数字以外だとその文字とそれ以降を無視します。
たとえば
"0234YB00"だと"0234"の文字数4として扱います。
flgは有効です。このときposが1なら"234"
posが3なら"0234"となります。
515:デフォルトの名無しさん
11/11/22 12:59:18.96
>>514
もしかしたら、'n桁目'というのは右から数えてる?
516:デフォルトの名無しさん
11/11/22 13:06:07.92
>>515
yes
517:デフォルトの名無しさん
11/11/22 13:09:30.49
>>516
了解。
>>数字以外だとその文字とそれ以降を無視します。
これで左からだと解釈してた。
518: ◆EiEUm/qHNk
11/11/22 14:15:05.99
>>505
ありがとうございます
519:デフォルトの名無しさん
11/11/22 16:10:22.23
>>470,516
URLリンク(ideone.com)
520:デフォルトの名無しさん
11/11/22 16:39:34.64
>>>470,516,519
バグ修正
URLリンク(ideone.com)
521:481
11/11/22 16:41:15.63
>>503
ありがとうございます!
何も変更しなかったら成功しました!本当にありがとうございました。
522:デフォルトの名無しさん
11/11/22 17:21:51.36
>>519
ありがとう。
523:デフォルトの名無しさん
11/11/22 18:04:19.44
>>482
>>484
ありがとうございました
524:デフォルトの名無しさん
11/11/22 18:13:37.81
>>519
おーいバグってるぞ
ポインタがさかのぼりすぎ
Error 00001. 0x140300 (Thread 0x04D8):
Pointer arithmetic underrun: 0x0012FF1F-4, that is at offset 3-4 in local
block 0x0012FF1C(=[ebp-0x70] @dai45.exe:0x01:00040A) (size 100).
| dai45.c line 36:
| *pd++ = *ps++;
| *pd = '\0';
|> pd -= (pos - '0'+2);
|
| while (pd >= dst) { /* 不要な0をnullにする */
Call Tree:
0x004012AA(=dai45.exe:0x01:0002AA) dai45.c#36
0x0040140A(=dai45.exe:0x01:00040A) dai45.c#63
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)
------------------------------------------
Error 00002. 0x140300 (r) (Thread 0x04D8):
Pointer arithmetic underrun: 0x0012FF1F-4, that is at offset 3-4 in local
block 0x0012FF1C(=[ebp-0x70] @dai45.exe:0x01:00048A) (size 100).
| dai45.c line 36:
| *pd++ = *ps++;
| *pd = '\0';
|> pd -= (pos - '0'+2);
|
| while (pd >= dst) { /* 不要な0をnullにする */
Call Tree:
0x004012AA(=dai45.exe:0x01:0002AA) dai45.c#36
0x0040148A(=dai45.exe:0x01:00048A) dai45.c#72
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)
525:デフォルトの名無しさん
11/11/22 18:18:09.52
URLリンク(codepad.org)の実数の出力が上手くいきません
どうしても「5」ではなく「0」と出力されてしまいます
教えて下さい
526:デフォルトの名無しさん
11/11/22 18:49:35.28
>>525
X Jissu(double j) : Fukusosu() {}
O Jissu(double j) : Fukusosu(j,0) {}
527:デフォルトの名無しさん
11/11/22 19:52:24.02
>>526
なるほど!そういうことでしたか
ありがとうございます
528:デフォルトの名無しさん
11/11/22 20:06:47.97
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(iup.2ch-library.com)
URLリンク(iup.2ch-library.com)
URLリンク(iup.2ch-library.com)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2011年11月24日
[5] 解答例がある課題はそれをそのまま使っていただけたらと思います。
よろしくお願いします。
529:デフォルトの名無しさん
11/11/22 20:20:47.32
>>528 できれば、画像ファイルじゃなくて文字でくださいな。
530:デフォルトの名無しさん
11/11/22 20:46:07.43
>>528
そのまま使っていただけたらって、打ち込めって事?
531:デフォルトの名無しさん
11/11/22 20:48:23.68
[1] 授業単元:プログラミングI
[2] 問題文(含コード&リンク):角度0度から90度までのsin(x)の値を1度刻みで表示する
プログラムを作りなさい。
πの値は3.141592ではなく、M_PIを用いること。
[3] 環境
[3.1] OS: (Windows/Linux/等々) windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) c言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2011年11月22日 23:50まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) for文またはwhile文を用いて答える。
プログラミング初心者です。いろいろ調べたのですが、答えが出ないので教えてください。お願いします。
532:デフォルトの名無しさん
11/11/22 20:51:53.69
テーブルにあらかじめデータを格納しておいて順番に表示
533:528
11/11/22 20:54:47.30
>>529 >>530
すいません!訂正しました。よろしくお願いします。
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(iup.2ch-library.com)
URLリンク(iup.2ch-library.com)
解答例等>>534
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2011年11月24日
[5] 解答例がある課題はそれをそのまま使っていただけたらと思います。
534:528
11/11/22 20:55:47.56
課題2 解答例
struct cell *makeNullList(void)
{
struct cell *list;
list = (struct cell*)malloc(sizeof(struct cell));
if (list == (struct cell*)NULL) {
fprintf(stderr, "makeNullList: can not allocate memory for new list.\n");
exit(1);
}
list->next = (struct cell*)NULL;
return list;
}
課題3 解答例
struct cell *nextCell(struct cell *target, struct cell *list)
{
struct cell *next = (struct cell*)NULL;
if (target != (struct cell*)NULL) {
next = target->next;
}
return next;
}
535:デフォルトの名無しさん
11/11/22 20:55:52.15
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
逆アフィン変換で幾何学変換を行うプログラムを作成せよ。2つの補間法(バイリニア,バイキュービック)を使用すること
URLリンク(codepad.org)
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ名とバージョン: windows visual studio2008
[3.3] 言語: c++
[4] 期限:2011年11月24日 13:00
[5] バイリニアはなんとか作成ができたのですがバイキュービックが全然理解できません。
貼ってあるのはバイリニアのプログラムです。
536:528
11/11/22 20:56:42.46
>>534の続き
課題9 解答例
struct cell *locateCell(int data, struct cell *list)
{
struct cell *current;
current = firstCell(list);
while ((current != (struct cell*)NULL)
&& (retrieveCell(current, list) != data)) {
current = nextCell(current, list);
}
return current;
}
プロトタイプ宣言
struct cell *makeNullList(void);
struct cell *nextCell(struct cell *, struct cell *);
struct cell *firstCell(struct cell *);
struct cell *endCell(struct cell *);
struct cell *previousCell(struct cell *, struct cell *);
struct cell *insertCell(int, struct cell *, struct cell *);
struct cell *deleteCell(struct cell *, struct cell *);
int retrieveCell(struct cell *, struct cell *);
struct cell *locateCell(int, struct cell *);
void deletelist(struct cell *);
void printlist(struct cell *);
537:デフォルトの名無しさん
11/11/22 20:58:22.39
>>531
こういうこと?
URLリンク(ideone.com)
538:デフォルトの名無しさん
11/11/22 21:06:46.15
>>537
はい!これを探してました!
助かりました、ありがとうございます。
539:デフォルトの名無しさん
11/11/22 21:07:26.57
探すw
540:デフォルトの名無しさん
11/11/22 21:11:39.21
>>538
出遅れた orz
一応貼っておく。 URLリンク(ideone.com)
541:デフォルトの名無しさん
11/11/22 21:28:37.68
[1] プログラミング応用
[2]問1 キーボードからUser構造体の情報(ID、ニックネーム、生年月日)を1名分入力し、
その内容を表示するプログラムを作成せよ
注:ニックネームにスペースを含めてはいけない
scanf()中の文字列変数の指定方法に注意
指定方法
User A;
scanf("%s %s %d/%d/%d",
A.ID, A.name,
&A.year, &A.month, &A.day);
問2 問1のプログラムを改造し、複数名のユーザー情報をキーボードから入力し、
最初のユーザーと同じ誕生月のユーザーの、「生年月」とニックネーム
の一覧を出力するプログラムを作成せよ
注:入力するユーザー数は固定値でよい(5名程度)
入力する情報はダミーでよい
[3] 環境
[3.1] W7
[3.2] Visual C++ 2010 Express
[3.3] どちらでも可
[4] 2011年11月25日22:00
よろしくお願いします。
542:デフォルトの名無しさん
11/11/22 21:44:21.02
>>531
#include <math.h>
#ifndef M_PI
#define M_PI 3.1415926
#endif
int main(void)
{
int i;
for (i = 0; i <= 90; i++)
printf("%d %f\n", i, sin(i / 180.0 * M_PI);
return 0;
}
コンパイルはgcc a.c -o a.out -lm
実行は./a.outで。
543:542
11/11/22 21:45:54.21
あー。ミスってるけどいいやw
544:デフォルトの名無しさん
11/11/22 21:55:34.15
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):5 つの要素を持つdouble 型配列vx[] に対し
て,その各要素の正負を反転するプログラムを,
ポインタ演算を用いて作成せよ.例えばvx[] が
{1.1, 2.2, -3.3, 4.4, -5.5}であったとき,プログ
ラムの結果vx[] は{-1.1, -2.2, 3.3, -4.4, 5.5}
となる.ただし,プログラムは以下の要件を満たすこと
とする.
解答例等
5 つの実数を入力してください
vx[0] = 1.1
vx[1] = 2.2
vx[2] = -3.3
vx[3] = 4.4
vx[4] = -5.5
正負を反転させました。
vx[0] = -1.100000
vx[1] = -2.200000
vx[2] = 3.300000
vx[3] = -4.400000
vx[4] = 5.500000
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2011年11月24日 9:00
[5] double 型配列vx[] はmain 関数内で宣言し,以下
の実行例のように各要素の値をユーザに入力させよ
545:デフォルトの名無しさん
11/11/22 21:56:30.19
>>544
続き
[5]
• main 関数内でポインタ変数vxp を宣言し,vxp を
用いたポインタ演算によって配列vx[] の各要素の
値を書きかえること.
• ポインタ演算で正負を反転させる際には,添字演
算子[] は使用しないこと.
• vx[] の5 つの要素すべてを書きかえてから,最後
にその結果を表示すること
546:デフォルトの名無しさん
11/11/22 21:58:59.18
なんで今日はこんなに宿題おおいん
547:デフォルトの名無しさん
11/11/22 22:03:42.97
>>541
値チェック無し。
1. URLリンク(ideone.com)
2. URLリンク(ideone.com)
548:デフォルトの名無しさん
11/11/22 22:07:29.00
1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
text.txtを読み取って0なら空白を、1なら*を表示するプログラム(test.c)がある。
これを改良してtest.txtをtext.bmpに変換するプログラムを作れ。
(ただし、0を白色、1を黒色とする。)
test.c
URLリンク(codepad.org)
/********test.txtの中身**********
11 6
0 1 1 1 1 1 0 0 0 0 0
0 1 0 1 1 0 1 0 0 0 1
0 1 1 1 1 1 0 0 0 0 0
0 1 0 0 1 1 0 1 0 0 1
0 1 1 1 0 1 0 0 0 0 0
0 1 1 0 0 1 0 0 0 0 0
******************************/
[3] 環境
[3.1] OS:windows7 32bit
[3.2] コンパイラ名とバージョン: Borland5.51
[3.3] 言語: c
[4] 期限:2011年11月27日 17:00
[5] windouwsAPIなど、複雑なものは使わずにお願いします。
549:デフォルトの名無しさん
11/11/22 22:08:00.42
>>546
明日休みだからじゃね?
550:デフォルトの名無しさん
11/11/22 22:15:56.77
>>544
こんな感じでどうでしょう?
URLリンク(ideone.com)
551:デフォルトの名無しさん
11/11/22 22:28:27.17
>>>544付け加えときます。すいませんポインタの問題です
552:デフォルトの名無しさん
11/11/22 22:34:44.64
>>548
bmpのフォーマットは?
553:デフォルトの名無しさん
11/11/22 22:35:54.81
>>544
URLリンク(ideone.com)
554:デフォルトの名無しさん
11/11/22 22:36:46.02
>>551,>>544
URLリンク(ideone.com)
555:デフォルトの名無しさん
11/11/22 22:38:21.08
>>544
URLリンク(ideone.com)
556:デフォルトの名無しさん
11/11/22 22:41:05.68
>>552
4bitでお願いします
557:デフォルトの名無しさん
11/11/22 23:10:52.76
>>528
URLリンク(ideone.com)
558:デフォルトの名無しさん
11/11/22 23:15:30.35
>>556
構造体は自前?ヘッダ?
559:デフォルトの名無しさん
11/11/23 00:03:06.03
>>558
borland5.11にあるヘッダファイルなら使ってもいいと思います
560:デフォルトの名無しさん
11/11/23 00:04:33.19
>>558
自前で簡単にできそうなら、できればそれでお願いします
561:デフォルトの名無しさん
11/11/23 00:46:12.24
>>546
いや、嫌がらせだよ。
562:デフォルトの名無しさん
11/11/23 01:26:51.10
>>560
一応聞いておくけどbmpのフォーマットはwindows用でいいんだよね…?
563:デフォルトの名無しさん
11/11/23 01:41:41.66
>>562
はい、windowsでお願いします
564:デフォルトの名無しさん
11/11/23 04:30:34.72
>>563
URLリンク(ideone.com)
bcc32コンパイル動作確認済み。
565:デフォルトの名無しさん
11/11/23 04:44:13.43
>>564
すまない、白と黒が逆だった
URLリンク(ideone.com)
566:デフォルトの名無しさん
11/11/23 09:05:42.47
[1] 授業単元:プログラミング演習 2
[2] 問題文(含コード&リンク)
行列の積を計算する関数multの関数プロトタイプ宣言が以下のように記述されている
void mult(double *ma, double *mb, double *mc, int n);
いま、定数Nの値がmain関数の外で#define N 3 と定義されている。N×Nの正方行列maとmb,そしてmcはmain関数の中で
double ma[N][N];
double mb[N][N];
double mc[N][N] = { 0.0 } ;
と定義されている。このとき関数multを次のように呼び出して行列の積mc=ma • mb を計算したい。
mult((double *)ma, (double *)mb, (double *)mc, N);
関数multをブラケット演算子[]なしで書き上げなさい。
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月23日(出来れば早めにお願いします)
567:デフォルトの名無しさん
11/11/23 10:54:47.22
>>565
ありがとうございます!
でもそのプログラムはどうやって使えばいいのでしょうか?
test.txtと同じディレクトリでコンパイルして実行しても
usage: program.exe file-IN file-OUTと出るだけです。
568:デフォルトの名無しさん
11/11/23 11:41:40.55
>>566
URLリンク(ideone.com)
569:デフォルトの名無しさん
11/11/23 11:50:38.44
>>566
>>568さんのとは少し違う方法で
URLリンク(codepad.org)
570:デフォルトの名無しさん
11/11/23 11:55:56.47
>>557
ありがとうございます!
571:デフォルトの名無しさん
11/11/23 14:46:23.20
>>567
変えました…。これでいけるはずです…。
URLリンク(ideone.com)
ちなみに前のは、cmd.exeから、
cd [プログラムの入ってるフォルダの絶対パス]
[プログラムの名前] test.txt test.bmp
とやることで入力、出力を指定できます。
572:デフォルトの名無しさん
11/11/23 15:17:02.93
>>571
できました、ありがとうございます!
ちなみにwindef.hを使えばもっと簡単にできるのですか?
573:デフォルトの名無しさん
11/11/23 15:23:35.21
すべての環境でビットマップ用にヘッダ群が用意されてるわけじゃないだろうからねぇ・・・
WindowsSDKが入ってるならWingdi.hにBITMAPINFOHEADER等が用意されているけど。
574:デフォルトの名無しさん
11/11/23 16:30:43.65
>>573
そうなんですか、ありがとうございました!
575:デフォルトの名無しさん
11/11/23 17:39:05.18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):変数内の文字列変換
URLリンク(www.kent-web.com)
[3] 環境
[3.1] OS:指定なし
[3.2] コンパイラ名とバージョン:指定なし
[3.3] 言語:C
[4] 期限:2011年11月24日
[5] その他の制限:
よろしくお願いします
576:デフォルトの名無しさん
11/11/23 17:54:22.29
>>575
こういうこと? URLリンク(codepad.org)
577:デフォルトの名無しさん
11/11/23 17:55:04.04
>>575
解いてみようと思ったけど、shift-JIS?みたいで読めないな。
テンプレにあるアップローダーならokだと思うが。
578:デフォルトの名無しさん
11/11/23 19:49:44.56
>>577
>解いてみようと思ったけど、shift-JIS?みたいで読めないな。
んなこたぁない
579:566
11/11/23 19:54:21.48
>>568の方のwarningを消すにはどうすればいいでしょうか?
580:デフォルトの名無しさん
11/11/23 20:04:22.37
[1] 授業単元: 実数型変数の精度
[2] 問題文(含コード&リンク): 実数型の形式は以下のものとする
符号部(1ビット) 指数部(nビット) 仮数部(mビット)
以下のプログラムの実行結果から実数型変数の形式を類推する方法の検討
URLリンク(ideone.com)
[3] 環境
[3.1] OS:unix
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: c
[4] 期限:
581:デフォルトの名無しさん
11/11/23 20:09:52.13
>>579
URLリンク(ideone.com)
582:デフォルトの名無しさん
11/11/23 20:26:29.99
>>580
>>373,382
583:デフォルトの名無しさん
11/11/23 21:47:07.73
>>582
ありがとうございます
あと、指数部を符号なし整数としてオフセットを用いて
表現する方法を教えてください。
584:デフォルトの名無しさん
11/11/23 21:55:45.61
初心者です、お願いします。
新規にフォームアプリケーションプロジェクトを作成すると
左のソリューションエクスプローラーの中に、
「ソースファイル」と「ヘッダーファイル」があります。
map関数を使いたいのですが、
#include <map>は「stdafx.h」に書けばいいですか?
また、
「Debug::WriteLine」を使いたいので「using namespace System::Diagnostics;」と書きたいのですが、
「stdafx.h」に書けばいいですか?
585:デフォルトの名無しさん
11/11/23 21:56:48.69
>>584
>>1
586:584
11/11/23 22:03:04.02
相談室に行ってきます。
587:583
11/11/23 22:08:10.25
追記:wikiではよく分からなかったので、噛み砕いて教えて下さい
588:デフォルトの名無しさん
11/11/23 23:02:02.66
>>587 1)Wikipediaの当該箇所をコピペ
(宿題を提出する上では理解する必要なない)
2)奇数から偶数になるときの値から-1~+1で提出すればよし。
だいぶ噛み砕いたつもり。
589:デフォルトの名無しさん
11/11/23 23:15:45.09
>>588
wikiのだとオフセットを用いて表現する、という条件が満たされていないような・・・
590:デフォルトの名無しさん
11/11/23 23:17:50.19
オフセット=バイアスね。
591:デフォルトの名無しさん
11/11/23 23:36:01.60
>>590
ありがとうございます
あと、
>>580
のfloatをlong doubleに変えた場合も同じやり方でいいんでしょうか?
592:デフォルトの名無しさん
11/11/23 23:56:39.38
>>591
あたり前だけど、試してから質問すればいいんでないかい?
593:デフォルトの名無しさん
11/11/24 00:05:41.71
>>592
試してみたら、仮数部が63ビットとかになったんですが。
多分合ってないと思うんですけど、どうでしょうか?
594:デフォルトの名無しさん
11/11/24 00:14:38.70
>>587
X wiki
O Wikipedia
595:デフォルトの名無しさん
11/11/24 00:26:01.85
sizeof(long double)
がおいらの環境で16(128ビット)なんでアリなんじゃないですかねぇ。
596:デフォルトの名無しさん
11/11/24 00:32:53.27
ああ、宿題の範囲こえてるからどーでもいーんじゃw?
printf("%Lf", long_double_value);
ってしないと正しく表示しないかも。
597:デフォルトの名無しさん
11/11/24 00:33:59.93
[1]データ構造とアルゴリズム
[2]
以下の関数を作成しなさい。
llist_t reverse(const llist_t ls);
連結リストlsの要素を逆順に並べ替えた連結リストを新たに作成して返す。
補足:
typedef struct node {
int data;
struct node *next;
} node_t;
typedef node_t *llist_t;
[3] Windows
[3.1]windows 7
[3.2] EasyIDEC Ver 0.0.9.0
[3.3] C言語
[4] 11月25日
[5] 再帰呼び出しを必ず用いる。
598:デフォルトの名無しさん
11/11/24 00:40:22.85
>>595
色々と調べたら仮数部は113ビットらしいんですが・・・
>>596
どういうことですか?
599:デフォルトの名無しさん
11/11/24 00:41:48.28
>>597
多分、ノード作成用の関数を教わっているはずなので教えてくださいな。
600:デフォルトの名無しさん
11/11/24 00:43:33.70
>>599
すみません書き忘れてました。
int *allocInt(void){
return (int *)malloc(sizeof(int));
}
です。
601:デフォルトの名無しさん
11/11/24 00:44:02.73
printf("%d", [charからint]);
printf("%f", [floatかdouble]);
printf("%Lf", [long double]);
ということ。
602:デフォルトの名無しさん
11/11/24 00:49:48.21
>>599
ごめんなさい
node_t *allocNode(){
return (node_t *)malloc(sizeof(node_t));
}
でした。
603:デフォルトの名無しさん
11/11/24 00:54:38.19
>>601
%Lf でやっても変わりませんでした。
604:デフォルトの名無しさん
11/11/24 00:57:50.54
>>603
コードの良し悪しの場合はコード全部UPすべし
605:デフォルトの名無しさん
11/11/24 01:01:44.88
【質問テンプレ】
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):標準出力から文字型の配列str[3][20]に3つの文字列を入力し入力した順番に標準出力する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C
[4] 期限: 2011年11月4日8時まで
[5] その他の制限: 入力ではscanfでなくfgetsとsscanfを利用しないといけないみたいです。
それでは宜しくお願いします
606:デフォルトの名無しさん
11/11/24 01:05:18.97
>>605
URLリンク(ideone.com)
607:デフォルトの名無しさん
11/11/24 01:06:17.35
ごめん、sscanf使ってないから>>606は無かったことにして下さい。
608:デフォルトの名無しさん
11/11/24 01:22:09.73
>>605
マルチ?
C言語なら俺に聞け(入門編)Part 92
スレリンク(tech板)
#545,557
609:デフォルトの名無しさん
11/11/24 01:26:14.15
>>604
URLリンク(ideone.com)
ちなみにunixで実行したらsizeofは16ビットでした
610:デフォルトの名無しさん
11/11/24 01:50:27.64
【質問テンプレ】
[1] 授業単元:情報技術Ⅱ
[2] 問題文(含コード&リンク):
以下の2つの要件を満たす、3行3列の行列の積を計算し、表示するプログラムmultiply.cを作成せよ。
(1)整数型の行列A,Bおよびそれらの行列積A*Bを、以下の配列名で宣言する(A,Bの値は各個人で自由に設定)。
int matrix_a[3][3]={{1,2,3},{4,5,6},{7,8,9}};/*行列A*/
int matrix_b[3][3]={{10,11,12},{13,14,15},{16,17,18}};/*行列B*/
int matrix_multiply_a_by_b[3][3]={{0,0,0},{0,0,0},{0,0,0}};/*計算結果代入用の行列*/
(2)行列の積A*Bのi行j列目の要素の計算を、for文を用いて行うこと。
[3] 環境
[3.1] OS: Wiンdows Vista
[3.2] 不明
[3.3] 言語: C
[4] 期限: 11月25日
お願いします
611:575
11/11/24 02:37:26.92
>>576
作成ありがとうございました
でもこれって型を変えて表示しているだけですよね
ASCIIコードから対応する文字に変換ってできませんかね?
612:デフォルトの名無しさん
11/11/24 03:13:22.18
>>610
#include <stdio.h>
#define f(x) for (x = 0; x < 3; x++) {
int main(void)
{
int matrix_a[3][3]={{1,2,3},{4,5,6},{7,8,9}};/*行列A*/
int matrix_b[3][3]={{10,11,12},{13,14,15},{16,17,18}};/*行列B*/
int matrix_multiply_a_by_b[3][3]={{0,0,0},{0,0,0},{0,0,0}};/*計算結果代入用の行列*/
int i,j,k;
f(i)f(j)f(k)
matrix_multiply_a_by_b[i][j] = matrix_a[i][k] * matrix_b[k][j];
}}}
f(j)f(i)printf("%5d", matrix_multiply_a_by_b[i][j]);}
printf("\n");}
}
613:デフォルトの名無しさん
11/11/24 03:25:54.90
>>597
URLリンク(ideone.com)
なんか美しくない
614:デフォルトの名無しさん
11/11/24 03:36:23.35
>>613
こんな夜中までありがとうございます
参考にさせてもらいます
615:デフォルトの名無しさん
11/11/24 06:01:53.55
>>587
>>373のコードだけではわかりにくいと思うので自分の勉強も兼ねて以下のような
コードを書いてみた
URLリンク(ideone.com)
(dec)はdecimal(10進数)、(bin)はbinary(2進数)の意味なのでよろしく
616:デフォルトの名無しさん
11/11/24 07:28:18.76
ちょっと前のほうのレスを見て
宿題片付けますwiki なんてものが存在するのかと一瞬勘違いした
617:デフォルトの名無しさん
11/11/24 10:06:41.81
>>605
こういう事?
#include <stdio.h>
int main(void){
char str[3][20], s[100];
int i, w;
printf("3つの文字列を入力して下さい(例:abc defgh ijkl)¥n");
fgets(s, sizeof(str[i]), stdin);
w = sscanf(s, "%s %s %s", str[0], str[1], str[2]);
printf("¥n");
for (i = 0; i < 3 && i < w; i++)
printf("入力した文字列の%d番目は%sです¥n", i, str[i]);
return 0;
}
618:デフォルトの名無しさん
11/11/24 10:17:07.28
\を¥で書く奴はいつもアホなコードだなあ
619:デフォルトの名無しさん
11/11/24 10:30:42.17
>>615
なんか例外吐いて落ちるんですけど(Windows XP + VC)
620:デフォルトの名無しさん
11/11/24 11:04:01.58
>>611
snprintfとprintfを使う問題ですよね?
ASCIIコードから対応する文字に直接変換出来ないこともないけど、
それだとsnprintfを使う必要性がないと思います。
問題の趣旨がsnprintfを使って変換することなので、これでいいのではないのですか?
621:デフォルトの名無しさん
11/11/24 11:33:34.44
>>619
どんな例外かわかる? 数値があふれるのを放置してあるからかなあ?
ループの範囲を小さくしてあふれない程度でやってみるとか...
622:デフォルトの名無しさん
11/11/24 11:35:08.39
何処でオーバーフローするかを確認する宿題なんじゃねぇの?
例外ハンドラーを組み込むとかすれば良いんじゃね?
623:デフォルトの名無しさん
11/11/24 11:49:19.50
>>621
CodeGuardのログ貼ってみますね
Error 00001. 0x400000 (Thread 0x0780):
Exception 0xC0000091:
| dai52.c line 75:
| printf("%.1f => frac (bin) 1+.%s, exp (dec) %d-127=%d\n",
| x, fracstr, ie3f.ff.exp, decexp);
|> printf("((dec) %.1f = (bin) 1.%s*10^%s)\n\n", x, fracstr, expstr);
| }
|
Call Tree:
0x00401378(=dai52.exe:0x01:000378) dai52.c#75
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)
Exception 0xC0000091というのは浮動小数点オーバーフロー
624:デフォルトの名無しさん
11/11/24 17:52:48.94
[1] 授業単元:リスト構造体
[2] 問題文(含コード&リンク):
enqueue()とdequeue()を用いて実行結果が
Please input E(登録) or D(削除): E
Input number and name: 8 Nakamura
Please input E(登録) or D(削除): E
Input number and name: 3 Saito
Please input E(登録) or D(削除): D
Number=8 Name=Nakamura
Please input E(登録) or D(削除): D
Number=3 Name=Saito
Please input E(登録) or D(削除): D
No Data!
Please input E(登録) or D(削除): E
・
・
・
のように動作するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:VC2008
[3.3] 言語:C
[4] 期限:11月25日
[5] その他の制限:
625:デフォルトの名無しさん
11/11/24 17:55:25.48
[1] 授業単元:C言語
[2] 問題文:123, 1.23, 1.2.3という数字を入力したとき、
整数、小数、使用できない数字という分類に分けよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C言語
[4] 期限:[2011/12/5]
よろしくお願いいたします
626:デフォルトの名無しさん
11/11/24 18:40:10.39
>>625
URLリンク(ideone.com)
627:デフォルトの名無しさん
11/11/24 19:53:51.73
>>626
ありがとうございます!
ちなみに、もしC++の場合だとどう変更になりますでしょうか?
出来たらやるという課題としてC++の場合があるのですが……
628:デフォルトの名無しさん
11/11/24 19:55:21.14
>>624
FIFOだな
・ポインタリンクで書くべきか配列のリングバッファで書くべきか判断できる?
・名前の文字数は無制限?
629:デフォルトの名無しさん
11/11/24 20:18:55.27
>>628
ポインタリンクで
名前の文字数は半角10文字までです
リスト構造体って難しい
630:デフォルトの名無しさん
11/11/24 21:58:51.42
>>627
URLリンク(ideone.com)
631:デフォルトの名無しさん
11/11/24 21:59:41.37
>>630
重ね重ね感謝いたします
ありがとうございました!
632:デフォルトの名無しさん
11/11/24 22:06:39.78
>>629
見ての通りFIFOのルートをグローバル変数としている
回避するには enqueue() と dequeue() に node** pptop を渡せば良い、お勉強する気が有るなら書き直すのも良いだろう
URLリンク(codepad.org)
633: ◆QZaw55cn4c
11/11/24 22:16:03.67
>>624
スレリンク(tech板:25番)
634:デフォルトの名無しさん
11/11/24 22:23:40.74
>>632
なるほど
さて、明日参考書を買ってくるか
635:デフォルトの名無しさん
11/11/24 22:25:41.16
問
処理系によってはdoubleとlong double(さらに、処理系によってはfloatとdoubleとlong double)の形式が同一のものがあるが、そのようにするメリットについて述べよ。
636:デフォルトの名無しさん
11/11/24 22:28:26.92
>>635 コンパイラ作るときに楽だから。
637:デフォルトの名無しさん
11/11/24 22:38:05.90
>>622
>例外ハンドラーを組み込むとかすれば良いんじゃね?
確かにそうなんだがかなり環境依存っぽいので、やる気なくしたw
詳しい人がいたら、例外処理を加えていただけるとw
>>623
なんか行数が変わってるw Winでコンパイルするのに#includeとか足してある?
もしprintfを呼んだ時点で死んでるなら、FLT_MAXと比較してprintfを呼ばないように
すればいいかも?
638:635
11/11/25 00:10:19.22
>>636
レポートにまとめるんで、出来れば具体的にお願いします。
639:デフォルトの名無しさん
11/11/25 00:43:20.24
>635
そういうコンパイラあるの?
640:デフォルトの名無しさん
11/11/25 01:17:29.83
>>635 質問テンプレでそーゆーのは書こうね。
1)C言語は処理系依存
2)処理系が自然に扱える不動小数点数が限られている場合がある。
3)C言語処理系の作成者は環境にな形式を選択できる。
↓
4)コンパイラ製作者が楽をでき、処理系も素直になる。
5)どーしても特定のフォーマットが欲しければプログラマが作ればよい。
具体的に書いた。プログラム書く以外はあまりコメしたくないのん。
まとめるのは>>638さんがやるよーに受け取った。
「処理系依存」とか「未定義」がなぜC言語に存在するかも調べると、
理解深まるよ。
641:デフォルトの名無しさん
11/11/25 03:22:56.80
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
半径5cmの円の面積[cm^2]を求めるプログラムを作成し、
小数点以下5桁まで解を求めよ。
[3] 環境
[3.1] OS: Windows7
[3.2] gcc
[3.3] 言語:C
プログラミング初心者です。よろしくお願いいたします。
642:デフォルトの名無しさん
11/11/25 04:00:13.58
>>641
#include <stdio.h>
#define PI 3.14159265358979323846
#define menseki(r) ((PI)*r*r)
int main()
{
double r = 5;
printf("半径5cmの円の面積 = %.5lf\n",menseki(r));
return 0;
}
643: ◆QZaw55cn4c
11/11/25 08:28:40.46
>>642
>%.5lf\n
l は不要。
644: ◆QZaw55cn4c
11/11/25 08:31:46.59
>>617
>printf("3つの文字列を入力して下さい(例:abc defgh ijkl)¥n");
>fgets(s, sizeof(str[i]), stdin);
i が未初期化。
というかループに書くのわすれたんですね。
645: ◆QZaw55cn4c
11/11/25 08:35:24.39
>>612
>printf("\n");
普通 putchar('\n'); とかく。
というか、なんだかすごいマクロの使い方ですね。せめて { の数をあわさないと、うちのくそエディタが狂うんですけど。
646:デフォルトの名無しさん
11/11/25 10:15:23.24
c言語の自由課題でトランプゲームやろうと思うんですけどいい案ないですか?
647:デフォルトの名無しさん
11/11/25 10:25:45.13
戦争
648:デフォルトの名無しさん
11/11/25 10:28:52.98
>>646
・ポーカーの点数計算
・七並べで、複数プレーヤーが最善手を選択した時の順位
・神経衰弱で、3手前しか覚えてないPCとの対戦
649:デフォルトの名無しさん
11/11/25 10:29:19.46
>>647
どうやればうまくいきます?
650:デフォルトの名無しさん
11/11/25 10:31:09.31
>>648
その中だったら七並べやりたいんですけど初心者で。詳しく教えてください。
651:デフォルトの名無しさん
11/11/25 10:34:28.82
>>650
【初心者歓迎】C/C++室 Ver.76【環境依存OK
スレリンク(tech板)
652:デフォルトの名無しさん
11/11/25 10:41:11.26
>>646
C言語でトランプゲームを作りたい
スレリンク(tech板)
653:デフォルトの名無しさん
11/11/25 11:14:40.01
643 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
644 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
645 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
654: ◆QZaw55cn4c
11/11/25 12:28:05.59
>>653
へー、そういう書き込みでレス削除されたことになる専用ブラウザがあるんだ?
655:デフォルトの名無しさん
11/11/25 12:35:27.21
654 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
656:デフォルトの名無しさん
11/11/25 12:38:34.34
自己愛の奴はあぼーんされると一番こたえるらしいな
657:デフォルトの名無しさん
11/11/25 12:49:05.54
>>653,655-656
餌をやるな
658:デフォルトの名無しさん
11/11/25 12:56:53.68
プログラマーの美意識?
URLリンク(aakitekucha.seesaa.net)
659:デフォルトの名無しさん
11/11/25 13:58:28.16
[1] 授業単元:(文字列)
[2] 問題文(含コード&リンク):文字列st の中に含まれる文字ch の個数(含まれて
いなければ0 とする)を返す関数
int str_chnum(const char st[], int ch)
を作成せよ.以下の実行例のように,関数の動作を確認
できるmain 関数も作成すること.
【注意】scanf で文字列を入力させた後にgetchar 関
数で文字を入力させたい場合,getchar で文字を入力
させる前に
scanf("%*c");
などとして,バッファに残った改行コードを読み捨て
ておく必要がある.
のように動作するプログラムを作成せよ
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11月25日 17:00
[5]例 文字列を入力してください:KoKo
検索する文字を入力してください:o
その文字は2 個含まれています。
その他の制限: ポインタは習っていません
660:デフォルトの名無しさん
11/11/25 14:06:32.01
#include <stdio.h>
int str_chnum(const char st[], int ch)
{
int i, num;
for(i = num = 0; st[i]; i++) if(st[i] == ch) num++;
return num;
}
int main(void)
{
char st[256];
int num, ch;
printf("文字列を入力してください:");
scanf("%s", st);
scanf("%*c");
printf("検索する文字を入力してください:");
ch = getchar();
num = str_chnum(st, ch);
printf("その文字は");
if(num) printf("%d 個含まれています。\n", num);
else printf("含まれていません。\n");
return 0;
}
661:デフォルトの名無しさん
11/11/25 15:23:02.55
>>659
問題張る前にスレの中読まないの?
662:デフォルトの名無しさん
11/11/25 15:59:16.98
【質問テンプレ】
[1] 授業単元:プログラミング入門(C)
[2] 問題文(含コード&リンク):
無限ループを用い、 1~100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。
ただし、for文は用いず、while文で。度数分布は5等分して表示せよ。(例えば1~20に4個 21~40に3個 41~60に2個 61~80に1個 81~100に0個)
[3] 環境
[3.1] OS:(Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 今週末
[5] その他の制限:for文を使わずwhile文でやれと言われています。度数分布は5等分で
始めたばかりなので、初心者同然の知識しかなく、プログラミング入門レベルです。
よろしくお願いします。
663:デフォルトの名無しさん
11/11/25 16:00:50.48
もうしわけありません記入漏れがありました
OS環境はおそらくLinuxではないかと思うのですが、よくわかりません
よろしくお願いします。
664:デフォルトの名無しさん
11/11/25 16:50:21.43
>>662
URLリンク(ideone.com)
665:デフォルトの名無しさん
11/11/25 19:08:07.59
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
図のように33個の節点が抵抗で繋がれた電気回路がある。 ただし、全ての抵抗の抵抗値は同じである。
ここで、AB間に5Vの電源を接続し、Aの電位を5V、Bの電位の0Vとしたとき、残りの31点の電位を計算せよ。
URLリンク(iup.2ch-library.com)
(注)
回答は、
V0=ww
V1=xx
V2=yy
V3=zz
...
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011/12/01
[5] その他の制限: キルヒホッフの法則・ガウスの消去法を使う
666:デフォルトの名無しさん
11/11/25 22:38:13.87
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
為替レート(rate)、円(yen)、ドル(doll)、セント(cent)(いずれも整数)からなる構造体moneyの
ポインタを引数とし円からドルへの変換を行う関数exchangeを作成せよ.
関数exchangeのプロトタイプ宣言
void exchange(struct money *mp);
上の関数を使ってrateが80円のときの25800円のドルとセントを求めるプログラムを作成せよ。
なお、メインプログラム内に以下のような初期値つきの構造体変数宣言を使うこと.
struct money m = { 80, 25800, 0, 0 };
実行例
$./kadai1
322 doll 50 cent
ヒント
「
struct money {
// メンバー
};
exchange(&m); // 擬似的参照渡しになるので,結果はmoneyに返る
」
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2011年11月27日まで
[5] その他の制限:
問題文で使われている宣言とヒントとして提示されているものを使っての解答をよろしくお願いします。
667:デフォルトの名無しさん
11/11/26 00:04:26.81
>>662
#include <stdio.h>
#include <string.h>
const int kParameter = 100;
const int kRange = 20;
#define NELEMS(array) (sizeof(array) / sizeof(array[0]))
int main() {
int i;
int count = 0;
int dist[kParameter / kRange];
memset(dist, 0, sizeof(dist));
while (1) {
int n = rand() % kParameter;
printf("%d\n", n + 1);
++dist[n / kRange];
if (++count >= 10) break;
}
for (i = 0; i < NELEMS(dist); ++i) {
printf("%3d - %3d: %d\n", kRange * i + 1, kRange * (i + 1), dist[i]);
}
return 0;
}
668:デフォルトの名無しさん
11/11/26 00:04:41.67
>>666
#include <stdio.h>
struct money {
int rate;
int yen;
int doll;
int cent;
};
void exchange(struct money *mp) {
mp->doll = mp->yen / mp->rate;
mp->cent = 100 * (mp->yen % mp->rate) / mp->rate;
}
void print(struct money *mp) {
printf("%d doll %d cent\n", mp->doll, mp->cent);
}
int main() {
struct money m = { 80, 25800, 0, 0 };
exchange(&m);
print(&m);
return 0;
}
669:デフォルトの名無しさん
11/11/26 00:43:55.98
[1] 授業単元:PIC制御
[2] 問題文(含コード&リンク):16f819にてAD変換せよ
[3] 環境
[3.1] OS: Windows
[3.2] 不明(PicKit2でPICに書き込みしてます)
[3.3] 言語: C
[4] 期限: 11/28
[5] その他の制限
#include<16f819.h>
#device ADC=10
#use delay (clock=8000000)
#define A_ANALOG 0x80
void port_ini(void);
float data;
void main()
{
#byte OSCCON=0x8f
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(A_ANALOG);
port_ini();
while(1)
{
省略
}
void port_ini(void)
{
set_tris_a(0b00000110);
set_tris_b(0b00000000);
}
コンパイルしたら成功しますがPICに書き込み成功後、AD変換できてません。
プログラム上の間違いがありましたら指摘お願いします。
670:デフォルトの名無しさん
11/11/26 00:49:19.04
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
#include<stdio.h>
int main(void)
{
int i=0;
char *ptr;
char str[128];
ptr = str;
scanf("%s",&str);
while(*ptr++){
i++;
}
printf("%d\n",i);
}
上記の入力したテキストの文字数を表示するプログラムの読み込み部分をファイル処理に変更せよ。
fgetc() 関数を使用し、コマンドラインにファイル名が指定できるようにすること。
ただし、ファイル名を指定しない場合は標準入力とする。
ファイルが見つからなかった時はエラーメッセージを出し、プログラムを終了する。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ:gcc
[3.3] 言語:C言語
[4] 期限:2011年11月27日(日曜) 23:59
[5] その他の制限:読み込むテキストファイル数は1つです。よろしくお願いします。
671:デフォルトの名無しさん
11/11/26 01:28:58.74
>>670
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i = 0;
char *ptr;
char str[128];
FILE *fin;
if (argc == 1) {
ptr = str;
scanf("%s", str);
while (*ptr++) i++;
} else {
if ((fin = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "Input file open error\n");
exit(EXIT_FAILURE);
}
while (fgetc(fin) != EOF) i++;
fclose(fin);
}
printf("%d\n", i);
return 0;
}
672:デフォルトの名無しさん
11/11/26 10:36:19.21
[1] 授業単元: C言語プログラミング(文字列生成・操作)
[2] 問題文(含コード&リンク):
以下の実行例のように,姓と名を入力すると,2 つの
間にスペースを入れて連結した文字列を生成するプロ
グラムを作成せよ.姓と名はそれぞれ配列family[] と
first[] に,連結した文字列は配列fullname[] に格納
すること.入力できる姓と名の長さはそれぞれ30 字ま
でとする.
実行例.
Family name: Roku
First name: Dai
Roku Dai
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2011年11月27日まで
[5] その他の制限:
問題文で使われている宣言とヒントとして提示されているものを使っての解答でお願いします
ポインタは習っていません
673:デフォルトの名無しさん
11/11/26 10:50:35.35
>>672
URLリンク(ideone.com)
674:デフォルトの名無しさん
11/11/26 11:58:04.62
>>673
scanf で30文字以上入力されたらどうなる?
675:デフォルトの名無しさん
11/11/26 12:27:39.48
>>674
30文字以上入れた奴が悪い
676: ◆QZaw55cn4c
11/11/26 12:28:43.56
>>674
それをいうと、題意から一歩踏み出してポインタを使わざるを得ない。
URLリンク(ideone.com)
677:デフォルトの名無しさん
11/11/26 12:48:08.85
fgetsでやればいいんじゃないの?
678:デフォルトの名無しさん
11/11/26 12:51:46.10
>>674
URLリンク(ideone.com)
679:デフォルトの名無しさん
11/11/26 12:57:59.65
>>677
fgets() でもバッファサイズは有限だよ
680:デフォルトの名無しさん
11/11/26 13:03:52.87
>>679
サイズをはみ出してるかをチェックして、捨てればいい。
681:デフォルトの名無しさん
11/11/26 13:09:48.96
>>672
URLリンク(ideone.com)
682:デフォルトの名無しさん
11/11/26 15:44:28.74
>>680
そういう意味じゃなくてバッファより入力文字数が多かったらストリームにゴミが残るからって話なんだけど...
fflush() すれば良いだけの話だなw
683:デフォルトの名無しさん
11/11/26 15:45:19.56
>>682
バカは手に負えないな
684:デフォルトの名無しさん
11/11/26 15:52:29.48
stdinに対するfflushは(略
685: ◆QZaw55cn4c
11/11/26 15:57:57.90
>>682
fflush() では入力ストリームに対しては未定義。
ISO/IEC 9899:1999 7.19.5.2.2
686:デフォルトの名無しさん
11/11/26 16:05:07.02
>>685
そうだっけ?
URLリンク(msdn.microsoft.com)
stdin からの入力なんて滅多に使わないから細かい仕様に興味がないもんでねw
687:686
11/11/26 16:12:07.34
もし fflush() が望む機能を実現できない環境で有れば、バッファ中に \n が出現するまで fgets() を繰り返せば良い
少なくとも捨てて良いデータの為に realloc() を繰り返す様なコードは書きたくないなw
688:デフォルトの名無しさん
11/11/26 16:22:21.62
依頼者は、「コンパイラ名とバージョン:gcc」と書いてるんだから、
その環境で大丈夫かどうか、だな
689: ◆QZaw55cn4c
11/11/26 17:01:14.56
>>687
realloc() の繰り返しを避けたいのであれば、避けたいというその気持ちの強さに応じて、static char 配列のサイズを大きめにすればよい、そういう風には作ったつもり。
URLリンク(ideone.com)
#define BUFFSIZE 65536 /* >= 2 */
char *mygetline(FILE *fp) {
static char inbuff[BUFFSIZE];
690:デフォルトの名無しさん
11/11/26 17:44:30.69
>>689
とはいえ malloc() も realloc() も使う必要が無い処理であることには変わりない
691: ◆QZaw55cn4c
11/11/26 17:49:50.13
>>690
不定長に対応するつもりがないのなら、ね。
>>689 は不定長に対応することを目的とした汎用コード。
692:デフォルトの名無しさん
11/11/26 17:54:45.48
何これあぼーんだらけ
693:デフォルトの名無しさん
11/11/26 17:57:34.69
>>692
興味があるなら、あぼーん設定を外してみれ
694:デフォルトの名無しさん
11/11/26 18:03:12.92
>>691
不定長に対応する必要が無い処理に使うのは無駄だと言っている
自己満足のコードはサンデープログラマの特権だけど現場では迷惑
695:デフォルトの名無しさん
11/11/26 18:03:14.25
>>693
ああ、またQか
こいつ文句を垂れ始めたな
696:デフォルトの名無しさん
11/11/26 18:14:10.63
>>692-693,695
餌やんな
697: ◆QZaw55cn4c
11/11/26 18:18:28.91
>>694
ま、C++ の考え方に慣れきったものでして、string クラスやvector/deque/map コンテナの思想くらいは、C で書くときも心がけているだけだけどね。
これは業務に携わっている方にお聞きしたいのではあるが、固定長のプロトコルを前提にコードを製造することは、今でもあるものだろうか?
>>695
fflush(stdin) のまずさを指摘された >>682 が逆切れしているだけなのでは?
698:デフォルトの名無しさん
11/11/26 18:22:13.97
ここまで来たら立派な荒らしだな
699:デフォルトの名無しさん
11/11/26 18:52:46.55
>>697
C/Sなら可変長電文の方が少ないよ
IP電話の制御電文や音声データも固定長だ
データファイルも構造体をバイナリで出力することが多いから固定長が多い、レコード数は可変だけどね
700:デフォルトの名無しさん
11/11/26 19:20:23.14
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
問題1で作成したプログラムに、スライド番号8にあるトーンカーブ(ネガポジ)を、画像の濃度値を変換する関数としてを追加し、任意の画素数をもつpgm画像のコントラストを変更するプログラムを作成せよ.コントラスト変換後の画像はpgm画像として保存すること.
URLリンク(codepad.org)
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:windows visual studio2008
[3.3] 言語:C++
[4] 期限:2011年11月28日まで
[5] その他の制限:
よろしくお願いします
701:デフォルトの名無しさん
11/11/26 20:20:29.44
>>665
途中まで書いたが、力尽きた。
エロイ人頼む。
URLリンク(ideone.com)
702: ◆QZaw55cn4c
11/11/26 20:23:30.68
>>699
ありがとうございます。
703:デフォルトの名無しさん
11/11/26 20:41:55.58
>>701
これ直すと動くんじゃね?
Error 00001. 0x130700 (Thread 0x0814):
Access overrun: Attempt to access 8 byte(s) at 0x0012DBDC+8712, that is at
offset 0+8712 in local block 0x0012DBDC(=[ebp-0x23B0] @dai57.exe:0x01:000585)
which is only 8712 bytes long.
| dai57.c line 104:
| for (i = 0; i <= N; i++) {
| for (j = 0; j <= N; j++) {
|> m[i][j] = 0;
| v[i]=0;
| }
Call Tree:
0x00401585(=dai57.exe:0x01:000585) dai57.c#104
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)
------------------------------------------
Error 00002. 0x130700 (r) (Thread 0x0814):
Access overrun: Attempt to access 8 byte(s) at 0x0012DBDC+8712, that is at
offset 0+8712 in local block 0x0012DBDC(=[ebp-0x23B0] @dai57.exe:0x01:000585)
which is only 8712 bytes long.
| dai57.c line 104:
| for (i = 0; i <= N; i++) {
| for (j = 0; j <= N; j++) {
|> m[i][j] = 0;
| v[i]=0;
| }
Call Tree:
0x00401585(=dai57.exe:0x01:000585) dai57.c#104
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)
704:デフォルトの名無しさん
11/11/26 20:44:41.65
一応これも貼っておくね
Error 00003. 0x130700 (Thread 0x0814):
Access overrun: Attempt to access 8 byte(s) at 0x0012FDE8+264, that is at
offset 0+264 in local block 0x0012FDE8(=[ebp-0x1A4] @dai57.exe:0x01:00059F)
which is only 264 bytes long.
| dai57.c line 105:
| for (j = 0; j <= N; j++) {
| m[i][j] = 0;
|> v[i]=0;
| }
| }
Call Tree:
0x0040159F(=dai57.exe:0x01:00059F) dai57.c#105
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)
705:デフォルトの名無しさん
11/11/26 21:02:15.66
>>703
便乗質問で申し訳ないですが、このエラーメッセージは何かツールを使って出してるんでしょうか?
自分の環境(Mac,gcc4.1)では出なかったもので。
706:デフォルトの名無しさん
11/11/26 21:02:42.59
>>668
ありがとうございました
707:デフォルトの名無しさん
11/11/26 21:04:37.08
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
名前(char name[20])と点数(int score)からなる構造体の配列を作る.
件数(10以下)をキーボード入力後、その件数だけ名前と点数をキーボード入力して配列に格納し,
点数の平均点と、平均点以上の学生の名前を表示するプログラムを作成せよ.
なお,文字列aと整数bを同時にキーボード入力するには、scanf("%s %d",a,&b)とすればよい(文字列変数には&がいらない).
実行例
$./kadai
n? 5
name score? taro 52
name score? jiro 84
name score? saburo 38
name score? hanako 63
name score? youko 72
Average:61
Above average:jiro hanako youko
ヒント
struct student {
char name[20];
int score;
} student;
scanf("%s %d",student.name, &student.score);
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] その他の制限:
問題文で使われている宣言とヒントとして提示されているものを使っての解答をよろしくお願いします。
708:デフォルトの名無しさん
11/11/26 21:15:37.03
>>705
これはDelphi/C++Builder XE2に付属しているCodeGuardというバグ検出ツール
これだけのために買い続けてる
実際の仕事はVC10でやってるけど
709: ◆QZaw55cn4c
11/11/26 21:16:52.93
>>705
多分、Borland C/C++ ver 6 の codeguard
評価版をインストールして、 bcc32 -v -vG (だったかな)でコンパイルし、生成したバイナリを実行すればよいはず。
710:デフォルトの名無しさん
11/11/26 21:20:09.71
評価版か
無職は金ないから買えないもんな
711:デフォルトの名無しさん
11/11/26 21:39:12.20
[1] 授業単元:リスト構造
[2] 問題文(含コード&リンク):
malloc関数とリスト構造を使い、ファイルから二行の多桁整数を読み取る。
それを4桁ずつリスト構造に格納し、加算を行うプログラムを作れ。
口頭で出題された問題なので、おかしい部分があったらすみません。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/28の正午まで
[5] その他の制限: ありません
712:デフォルトの名無しさん
11/11/26 22:04:54.33
[1] 授業単元: C言語実習
[2] 問題文(含コード&リンク):
整数値を読み取り,4桁毎に 兆,億,万 を挿入して表示せよ.
例
入力:114514
出力:11万4514
入力:810
出力:810
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2011年11月27日まで
[5] その他の制限:
初心者ですが頑張ります