C/C++の宿題を片付けます 66代目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けない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://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
C/C++の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
2デフォルトの名無しさん:2006/07/05(水) 19:29:09
いいかげんにしろ
3デフォルトの名無しさん:2006/07/05(水) 19:33:11
                   _ _     .'  , .. ∧_∧
          ∧  _ - ― = ̄  ̄`:, .∴ '     (    )キャイン
         , -'' ̄    __――=', ・,‘ r⌒>  _/ / ← >>1
        /   -―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒i
       /   ノ                 |  /  ノ |
      /  , イ )                 , ー'  /´ヾ_ノ
      /   _, \               / ,  ノ
      |  / \  `、            / / /
      j  /  ヽ  |           / / ,'
    / ノ   {  |          /  /|  |
   / /     | (_         !、_/ /   〉
  `、_〉      ー‐‐`            |_/
4デフォルトの名無しさん:2006/07/06(木) 10:34:32

だぶったのか?

若返ったのか?

5デフォルトの名無しさん:2006/07/20(木) 19:55:54
実質67ですね
6デフォルトの名無しさん:2006/07/20(木) 20:03:26
数独を解くプログラム。
出題者のソースを読まずに回答
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2415.c

ただのバックとラックです。
ポイントは、重複チェックをstrchrでやってるとこ。たいしたもんじゃないけど。
7デフォルトの名無しさん:2006/07/20(木) 20:11:21
んじゃ俺も吸う毒〜

#include<stdio.h>
char block[9][9];
int flag[3][9];
int solve(int,int);
int next(int x,int y,int i){
    char tmp = block[y][x];
    if((flag[0][x]>>i|flag[1][y]>>i|flag[2][x/3*3+y/3]>>i)&1)return 0;
    flag[0][x]|=1<<i;flag[1][y]|=1<<i;flag[2][x/3*3+y/3] |= 1<<i;
    block[y][x] = i+'0';
    if(solve(x+1,y))return 1;
    block[y][x] = tmp;
    flag[2][x/3*3+y/3]&=~(1<<i);flag[1][y]&=~(1<<i);flag[0][x]&=~(1<<i);
    return 0;
}
int solve(int x,int y){
    int i;
    if(x == 9)x=0,++y;if(y == 9)return 1;
    if(block[y][x]!='_')return next(x,y,block[y][x]-'0');
    for(i=1;i<=9;++i)if(next(x,y,i))return 1;
    return 0;
}
int main(){
    int y,x;
    for(y=0;y<9;++y)for(x=0;x<9;++x)scanf(" %c",&block[y][x]);
    solve(0,0);
    for(y=0;y<9;++y){
        for(x=0;x<9;++x)putchar(block[y][x]);
        putchar('\n');
    }
}
8デフォルトの名無しさん:2006/07/20(木) 20:21:37
あー、なるほど。1〜9の有無チェックだからフラグ立てていけるんだ。
9デフォルトの名無しさん:2006/07/21(金) 02:22:27
[1] 授業単元:計算機実習
[2] 問題文(含コード&リンク):

●次の覆面算を解くプログラム

    SEND
+)  MORE
----------
  MONEY

各アルファベットは重複しない0以外の一桁の数字

●上が出来れば任意の覆面算を解くプログラム

[3] 環境
 [3.1] OS: とくになし
 [3.2] コンパイラ名とバージョン: とくになし
 [3.3] 言語: C99
[4] 期限: 2006/07/23
[5] その他の制限: とくになし


おながいします。
10デフォルトの名無しさん:2006/07/21(金) 10:28:12 BE:81522667-#
>>5
いや、実質72。66が5本ある。
11デフォルトの名無しさん:2006/07/21(金) 12:31:52
ちょっとageますよ。
12お願いします・・:2006/07/22(土) 00:32:07
まったくわかりません・・
[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
[3] 環境
 [3.1] OS: UNIX
[4] 期限: 月曜に伸ばしてもらいました。
[5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。
お願いします。。。。

今日提出しにいったところ、サンプルコードから続きを書けと
いうことでした。。 
また入出力ファイルは
imput.dat quiz1.dat quiz2.dat quiz3.dat
とあり、gcc してから ./a.out
をすると ファイルを選択する画面になって、
例えばquiz1.dat と入力すれば、その空白を埋めるようになります。
どなたかどうかお願いします。
本用にお願いします。。

13お願いします・・:2006/07/22(土) 00:33:03
上の補足ですが
imput.dat
__6_____1
_7__6__5_
8__1_32__
__5_4_8__
_4_7_2_9_
__8_1_7__
__12_5__3
_6__7__8_
2_____4__


quiz3.dat
2__67____
__6___2_1
4_____8__
5____93__
_3_____5_
__28____7
__1_____4
7_8___6__
____53__8
サンプルコードは1のリンクしてあるところにはってあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

14お願いします・・:2006/07/22(土) 00:33:42
まったくわかりません・・
[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
[3] 環境
 [3.1] OS: UNIX
[4] 期限: 月曜に伸ばしてもらいました。
[5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。
お願いします。。。。

今日提出しにいったところ、サンプルコードから続きを書けと
いうことでした。。 
また入出力ファイルは
imput.dat quiz1.dat quiz2.dat quiz3.dat
とあり、gcc してから ./a.out
をすると ファイルを選択する画面になって、
例えばquiz1.dat と入力すれば、その空白を埋めるようになります。
どなたかどうかお願いします。
本用にお願いします。。

15お願いします・・:2006/07/22(土) 00:35:29
14無視してください すみません。
サンプルコードからでなくとも
./a.outとしたときに
ファイルの選択画面をでるようにならないとダメということでした・・
よろしくお願いします・
16デフォルトの名無しさん:2006/07/22(土) 02:17:18
なんかどっかで見たことあるような
もしかしてマルチってやつ?
17デフォルトの名無しさん:2006/07/22(土) 03:09:30
はわわ…
18デフォルトの名無しさん:2006/07/22(土) 03:58:31
にはは
19デフォルトの名無しさん:2006/07/22(土) 09:38:53
まったくわかりません・・
[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を作る
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
<問題作成時のルール>
1、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
数字が3箇所埋まっている状態にする。
[3] 環境
 [3.1] OS: UNIX
[4] 期限: 明日の19時
[5] 答えが複数ある問題を作らないように気を付けよとのことです
お願いします。。。。

20てんぷれ:2006/07/22(土) 12:19:20
1 2 3  4 5 6  7 8 9
4 5 6  7 8 9  1 2 3
7 8 9  1 2 3  4 5 6

2 3 1  5 6 4  8 9 7
5 6 4  8 9 7  2 3 1
8 9 7  2 3 1  5 6 4

3 1 2  6 4 5  9 7 8
6 4 5  9 7 8  3 1 2
9 7 8  3 1 2  6 4 5

あとは各ブロックから6個消せ
21デフォルトの名無しさん:2006/07/22(土) 22:21:49
それだと答え二つ以上出来る場合が出てきますよ
22デフォルトの名無しさん:2006/07/22(土) 22:25:04
それよりも、作られる問題の解が常に同じというのは問題がないか?w
23デフォルトの名無しさん:2006/07/22(土) 23:39:41
対角線方向にも1-9が1個ずつあるとカッコイイかも
24デフォルトの名無しさん:2006/07/22(土) 23:43:25
1 2 3  4 5 6  7 8 9
4 5 6  7 8 9  1 2 3
7 8 9  1 2 3  4 5 6

3 1 2  6 4 5  9 7 8
6 4 5  9 7 8  3 1 2
9 7 8  3 1 2  6 4 5

2 3 1  5 6 4  8 9 7
5 6 4  8 9 7  2 3 1
8 9 7  2 3 1  5 6 4
25デフォルトの名無しさん:2006/07/23(日) 00:03:39
┏━┳━┳━┳━┳━┳━┳━┳━┓
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃○┃●┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃●┃○┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┻━┻━┛
26デフォルトの名無しさん:2006/07/23(日) 00:04:39
オセロ?
27デフォルトの名無しさん:2006/07/25(火) 19:05:14
だれかこれ実装してくれろ

神武天皇即位紀元年数ノ四ヲ以テ整除シ得ヘキ年ヲ閏年トス但シ紀元年数ヨリ六百六十ヲ減シテ百ヲ以テ整除シ得ヘキモノノ中更ニ四ヲ以テ商ヲ整除シ得サル年ハ平年トス
28デフォルトの名無しさん:2006/07/25(火) 23:40:30
日本語でおk
29デフォルトの名無しさん:2006/07/26(水) 00:35:13
時代掛かってるけどいちおう日本語か
30デフォルトの名無しさん:2006/07/26(水) 03:13:45 BE:38820454-2BP
皇紀の年が4で割れる年は閏年。
ただし、660を引いて100で割り切れた場合、その商が24で割り切れない年は平年。
つまり、西暦で普通に閏年を計算して最後に年に660を足せば完了。
31デフォルトの名無しさん:2006/07/26(水) 10:30:59
>>30
うざいぞ、お前
32デフォルトの名無しさん:2006/07/26(水) 13:09:15 BE:95109577-2BP
>>31
じゃあお前が死ねよ^^
33助けてください!:2006/07/26(水) 22:47:48
[5]期限は7月31日です。どうか助けてください。
34デフォルトの名無しさん:2006/07/26(水) 23:03:23
27か?
神武天皇即位はB.C.660年。普通の閏年とかわらん。ぐぐれ
35助けてください!:2006/07/26(水) 23:12:57
[1]授業単元;レポート
[2]問題文(含コード&リンク)西暦と月を入力し、その月のカレンダーを出力してください。
 曜日は「月、火、水、木、金、土、日、月、火、水・・・」と周期的に繰り返されます。もしある月の一日が月曜日なら
 、次の月曜日は八日、その次の月曜日は十五日と七日ずつ違ってくる。つまり一日が日曜日である月のday日が何曜日であるかはdayを七で
 割った余りを計算することでわかる。例えば十八日の場合七で割った余りが四なので木曜日になります。
プログラムの構成:西暦yearと月monthを入力します。
         西暦year年month月一日が何日目(days)かを計算します。
         daysを七で割った余りに応じて空白を出力し、その後1,2,3...と出力します。このとき七つのデータを出力するごとに改行して頂ければ.....
[3]環境:C言語です
[4]お願いします。スルーしないでください。助けてくださいorz
期限は7月31日です。助けてください。
36デフォルトの名無しさん:2006/07/26(水) 23:16:51
37デフォルトの名無しさん:2006/07/27(木) 00:03:33
三角関数を使っているソースファイルasdf.cをコンパイルして実行ファイルasdfを作るには
cc[ ]asdf asdf.c[ ]とする
[ ]には何が入るか

何か入るのか?
38デフォルトの名無しさん:2006/07/27(木) 00:14:12
環境によるが、cc -o asdf asdf.c -lm かなあ
39デフォルトの名無しさん:2006/07/27(木) 00:29:11
>>38
まじサンクス!!
この先1週間あんたへの感謝わすれないYO!!
40デフォルトの名無しさん:2006/07/27(木) 12:31:46
本当にポインタが理解できないとかいるの?
出来なかったら本物だと思うんだけど。
41デフォルトの名無しさん:2006/07/27(木) 16:20:15
そもそも理解出来ないひとがいるのは確かだけど

それを抜きにして

出来てるつもりで分かってないひとは多い
42デフォルトの名無しさん:2006/07/27(木) 19:45:04
嫌みだなw
43デフォルトの名無しさん:2006/07/28(金) 09:57:27
[1] 授業単元:IT入門
[2] 問題文(含コード&リンク):何個かの複素数を入力した後、最後に1を入力して[Enter]キーを押すとそれまでに入力した複素数とそれらをすべてかけ算した結果を表示するプログラムを作れ。なお、連結リストを必ず用いること。
[3] 環境
 [3.1] OS: unix
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2006年7月29日23:59まで
[5] その他の制限:連結リストを必ず使用

どなたかよろしくお願いします。
44デフォルトの名無しさん:2006/07/28(金) 09:57:29
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから正整数を読み込み,その数を素因数分解した結果を画面に表示する.
ただし,1つの整数を引数とし,その整数の最小の素因数を返す関数をユーザ定義関数として作成し,この関数を使用すること.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:できるだけ早く
[5] その他の制限: 特になし
どうか、よろしくお願いします。
45デフォルトの名無しさん:2006/07/28(金) 14:34:41
46デフォルトの名無しさん:2006/07/28(金) 14:34:55
ageますよ
47デフォルトの名無しさん:2006/07/28(金) 14:46:59
このスレに統合しましょう。

【前スレ】
C/C++の宿題を片付けます 69代目
http://pc8.2ch.net/test/read.cgi/tech/1152095097/

【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
48デフォルトの名無しさん:2006/07/28(金) 14:58:29
すいません。
[1]2単位
[2]キーボードから円の直径dを入力し,文字を使って直径dの円を表示するプログラム
を作成して下さい。ただし入力する半径の範囲は2から79に制限して下さい。
[3.1]OS(windowsxp)
[3.3]C言語
[4]後,3時間です。
[5]do-while文,for文をつかって下さい。
コンパイラとバージョンはなんでもいいです。
ほんとにお願いします。
49デフォルトの名無しさん:2006/07/28(金) 14:59:29
ここは実質73代目ぐらいなのかね
50デフォルトの名無しさん:2006/07/28(金) 15:00:23
>>48
画面もピッチを教えてください
51デフォルトの名無しさん:2006/07/28(金) 15:00:26
do-while と for は両方使う?
52デフォルトの名無しさん:2006/07/28(金) 15:00:43
何でもいいって
どこに絵を書けばいいんだよ
53デフォルトの名無しさん:2006/07/28(金) 15:01:59 BE:38820645-2BP(200)
ここもまだ生きてる。
ぼるじょあがC/C++の宿題を片づけますYO! 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
54デフォルトの名無しさん:2006/07/28(金) 15:02:18
>>48
実行例とか無いのか
55デフォルトの名無しさん:2006/07/28(金) 15:04:22
>>48
直径dで入力は半径なの?
56デフォルトの名無しさん:2006/07/28(金) 15:09:59
制限する範囲が半径なだけで入力するのは直径であってるのか・・・
57デフォルトの名無しさん:2006/07/28(金) 15:16:54
入力は直径ですね。
実行例というか出力は
      *****
***********
*****************
**********************
************************
**********************
********************
****************
************
********
こんな感じになります。
例題ではdo-whileとforをつかってます。
58デフォルトの名無しさん:2006/07/28(金) 15:17:34
>>57
例題ってなんだ例題って
59デフォルトの名無しさん:2006/07/28(金) 15:20:42
>コンパイラとバージョンはなんでもいいです。

すげえ。金持ちだな。
60デフォルトの名無しさん:2006/07/28(金) 15:24:20 BE:119815564-2BP(200)
   test
61デフォルトの名無しさん:2006/07/28(金) 15:25:28
コマンドプロンプト上に表示します。
62デフォルトの名無しさん:2006/07/28(金) 15:25:36
>>57
ふざけんなボケ
Windowsプログラムと思って今書いてたのに
63デフォルトの名無しさん:2006/07/28(金) 15:25:36 BE:269584496-2BP(200)
1/4の円ならこんな感じ

#include <stdio.h>
#include <math.h>

int main(int argc, char argv[])
{
    int n;
    int x, y;
    int r;

    printf("直径>");
    if (scanf("%d", &n) < 1) {
        return 0;
    }
    r = n / 2;

    for (x = 0; x <= r; ++x) {
        for (y = 0; y <= r; ++y) {
            if (sqrt(x * x + y * y) < r) {
                putchar('*');
            }
            else {
                break;
            }
        }
        putchar('\n');
    }

    return 0;
}
64デフォルトの名無しさん:2006/07/28(金) 15:27:53
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define BUF_LEN 4096
#define R_MAX 40
#define C_MAX 360
#define PI 3.14159265358979323846

int circle(int r)
{
char m[R_MAX][R_MAX];
int x, y, t;
for(x = 0; x < R_MAX; x++){
for(y = 0; y < R_MAX; y++){
m[y][x] = ' ';
}
}
for(t = 0; t < C_MAX; t++){
x = (int)(r * sin((double)t * PI / C_MAX) + R_MAX / 2) % R_MAX;
y = (int)(r * cos((double)t * PI / C_MAX) + R_MAX / 2) % R_MAX;
m[y][x] = '*';
}
for(x = 0; x < R_MAX; x++){
for(y = 0; y < R_MAX; y++){
fprintf(stdout, "%c", m[y][x]);
}
fprintf(stdout, "\n");
}
return 0;
}
65デフォルトの名無しさん:2006/07/28(金) 15:28:47
int main(void)
{
int c;
char buf[BUF_LEN];
int r;

do{
fprintf(stdout, "r(2-79) = ");
fgets(buf, BUF_LEN - 1, stdin);
sscanf(buf, "%d", &r);
fprintf(stdout, "r = %d\n", r);
if(r < 2 || r > R_MAX - 1)
fprintf(stdout, "r must be in 2 - %d\n", R_MAX - 1);
else
circle(r);
}while(r);
return 0;
}
66デフォルトの名無しさん:2006/07/28(金) 15:33:13
>>12
内の大学の課題じゃん
自分でやれよ
67デフォルトの名無しさん:2006/07/28(金) 15:34:06
x = (int)(r * sin((double)t * 2.0 * PI / C_MAX) + R_MAX / 2) % R_MAX;
y = (int)(r * cos((double)t * 2.0 * PI / C_MAX) + R_MAX / 2) % R_MAX;
68デフォルトの名無しさん:2006/07/28(金) 15:34:43
前スレ >>799 は無視でつかそうでつか
69デフォルトの名無しさん:2006/07/28(金) 15:38:54
>>68
文字化けしたけど同じ課題だなw
70デフォルトの名無しさん:2006/07/28(金) 15:42:38
ごめん画面サイズの横幅79まででないと改行が入ってみにくいので半径38まででおねがい
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define BUF_LEN 4096
#define R_MAX 79
#define C_MAX 360
#define PI 3.14159265358979323846

int circle(int r)
{
char m[R_MAX][R_MAX];
int x, y, t;

for(x = 0; x < R_MAX; x++)
for(y = 0; y < R_MAX; y++)
m[y][x] = ' ';
for(t = 0; t < C_MAX; t++){
x = (int)(r * sin((double)t * 2.0 * PI / C_MAX) + R_MAX / 2) % R_MAX;
y = (int)(r * cos((double)t * 2.0 * PI / C_MAX) + R_MAX / 2) % R_MAX;
m[y][x] = '*';
}
for(x = 0; x < R_MAX; x++){
for(y = 0; y < R_MAX; y++){
fprintf(stdout, "%c", m[y][x]);
}
fprintf(stdout, "\n");
}
return 0;
}
71デフォルトの名無しさん:2006/07/28(金) 15:43:29
int main(void)
{
int c;
char buf[BUF_LEN];
int r;

do{
fprintf(stdout, "r(2-%d) = ", R_MAX / 2 - 1);
fgets(buf, BUF_LEN - 1, stdin);
sscanf(buf, "%d", &r);
fprintf(stdout, "r = %d\n", r);
if(r < 2 || r > R_MAX / 2 - 1)
fprintf(stdout, "r must be in 2 - %d\n", R_MAX / 2 - 1);
else
circle(r);
}while(r);
return 0;
}
72デフォルトの名無しさん:2006/07/28(金) 15:47:16
コマンドプロンプトの画面バッファサイズを上げるんだ
73デフォルトの名無しさん:2006/07/28(金) 15:48:08
前スレ799のだとXPで動かないんだもん
74デフォルトの名無しさん:2006/07/28(金) 15:51:47
>>12-15は東工大の情報工学科
75デフォルトの名無しさん:2006/07/28(金) 15:54:37
まったくわかりません・・
[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を作る
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
<問題作成時のルール>
1、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
数字が3箇所埋まっている状態にする。
[3] 環境
 [3.1] OS: UNIX
[4] 期限: 明日の19時
[5] 答えが複数ある問題を作らないように気を付けよとのことです
お願いします。。。。
76デフォルトの名無しさん:2006/07/28(金) 15:55:47
>>74
ちょwこんなところに東工大がいるのか
77デフォルトの名無しさん:2006/07/28(金) 15:57:21
>>12-15の解答としてここに掲載されたものがそのまま提出されたら×としますね。
78デフォルトの名無しさん:2006/07/28(金) 16:02:58
せんせい、単純なバックトラックだとだいたい同じ解答になりませんか?
変数名と関数名を細工すればおk?
79デフォルトの名無しさん:2006/07/28(金) 16:04:03
だめです
80デフォルトの名無しさん:2006/07/28(金) 16:07:33 BE:159753784-2BP(200)
>>75
mixiで同じ質問してるやつ見たな。。。
81デフォルトの名無しさん:2006/07/28(金) 16:08:57
     )、._人_人__,.イ.、._人_人_人
   <´  せんせい、できません!>
    ⌒ v'⌒ヽr -、_  ,r v'⌒ヽr ' ⌒
// // ///:: <   _,ノ`' 、ヽ、_ ノ  ;;;ヽ  //
///// /::::   (y○')`ヽ) ( ´(y○')    ;;|  /
// //,|:::     ( ( /    ヽ) )+     ;| /
/ // |:::     +  ) )|~ ̄ ̄~.|( (       ;;;|// ////
/// :|::       ( (||||! i: |||! !| |) )      ;;;|// ///
////|::::    +   U | |||| !! !!||| :U   ;;; ;;;| ///
////|:::::       | |!!||l ll|| !! !!| |    ;;;;;;| ////
// / ヽ:::::       | ! || | ||!!|    ;;;;;;/// //
// // ゝ:::::::: :   | `ー----−' |__////
82デフォルトの名無しさん:2006/07/28(金) 16:34:06
[1]授業単元: 中課題
[2]問題文(含コード&リンク):CプログラムソースBがAのコピー&ペーストによる
産物かどうかを調べるプログラムを作成し類似の度合いにより優・良・可・不可に
分類してください。
[3]環境
 [3.1] OS: UNIX
[4] 期限: 明日の19時
[5] よろしくお願いします。
83デフォルトの名無しさん:2006/07/28(金) 16:42:47
これ出せないとほぼ留年確定だお
84デフォルトの名無しさん:2006/07/28(金) 16:48:36
変数名と関数名を細工したようなのを検出するとしたら

とりあえずトークンに分けて変数の数とか関数の数と引数とかのパターンチェックかな。

{ } の位置だけ比較するとかでもかなり分かりそう。
85デフォルトの名無しさん:2006/07/28(金) 16:51:11
だから数独ならここにいっぱいあるといってるだろうが
ttp://sourceforge.net/search/?words=sudoku&type_of_search=soft&limit=150
86デフォルトの名無しさん:2006/07/28(金) 16:56:30
gcc -S の diff とったらかなり正確にばれるね
87デフォルトの名無しさん:2006/07/28(金) 17:38:35
創価?
88デフォルトの名無しさん:2006/07/28(金) 17:46:54
パターンマッチングか。正規表現でも使えよ。
89デフォルトの名無しさん:2006/07/28(金) 17:58:23
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
ファイル abc.dat から40名分の成績を読み込み,
以下の出力例のような度数分布表を表示するプログラムを作成し,ソースコードを投稿せよ.
ただし,出力例と同じ表示(スペースなど)になるよう注意せよ.
-----出力例-----
0- 9:
10-19:
20-29: * 1
30-39: ** 2
40-49: ** 2
50-59: **** 4
60-69: ****** 6
70-79: *********** 11
80-89: ******** 8
90-99: ***** 5
100: * 1
ファイル def.dat に40名分3科目の成績が以下のように記録されている.
各行は1名の3科目の成績を表している.今,各人は,各科目50点以上をとっていて,かつ,3科目の合計が180点以上である場合に合格であるとした場合,
40名のうちの合格者が何人かを判定し出力するプログラムを作成,ソースコードを投稿せよ.
----ファイルの中身----
54 53 44
43 54 69
70 76 64
72 85 73
:
----出力例----
合格者は,XX名
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日まで
90デフォルトの名無しさん:2006/07/28(金) 18:06:50
>>75
作ってみたけどすげー遅いです。どうやったらはやくなりますかおしえてせんせい!
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2476.txt
91デフォルトの名無しさん:2006/07/28(金) 18:09:26
>>90
Intelのコンパイラ買う
92デフォルトの名無しさん:2006/07/28(金) 18:20:16
>>90
それ、gcc -O2で最悪でも4秒程度、icc -fastで0.2秒程度なんだけどどこが「すげー」遅いの?
#遅いときとそうでないときの差が大きいのは気になるけどね。
9390:2006/07/28(金) 18:23:44
うへ、メモリぶっこわしてたorz
最適化わすれてましたthx
9492:2006/07/28(金) 18:30:42
おまけ。
乱数系列初期化をsrand(argc > 1 ? atoi(argv[1]) : time(NULL));に変更して、
たまたま./a.out 6すると妙に時間が掛かった。ついでに、iccもそんなに速くなかった。
gcc -O2: 0m6.790s
gcc -O3: 0m4.840s
icc -fast: 0m2.450s
95830:2006/07/28(金) 19:05:14
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2465.txt
前スレの830です。
とりあえずになってしまいますが、小難しいことは抜きで、
左辺と右辺の値を算出するためのプログラムを書いていただけないでしょうか…。
(1つの方法につき1つのプログラムを作る形でよくて、両方を一気に処理する必要はないようです。)

また、しっかりと考えてくださっている方がいらっしゃったので、
とりあえずで済ませてもいかんと思い、まず1つ目の方法に関してみやすいように絵にしてまとめました。
もう一つの方法の絵は、明日あたりに作るつもりです。
ttp://gaibusyou.mine.nu/file/img/KURO_429.png

↓これは前スレででた質問に答えたものです
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2468.txt
9692:2006/07/28(金) 19:08:59
うはは、某PDA(CPUは68000相当)でも数秒で解けちまったぜ。
やっぱ>90のアルゴリズム自体が遅いんだな。
#さーて、この週末はちっとは頭使ってみるか。
9790:2006/07/28(金) 19:14:14
メモリ破壊はまづーなのでとりあえず修正した。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2477.txt
完成したボードから間引く処理が遅いんだよねえ。。。
9890:2006/07/28(金) 19:18:13
!!!あ、わかったかも
99デフォルトの名無しさん:2006/07/28(金) 19:18:54
ほほえましいな
がんばれ>>90
100デフォルトの名無しさん:2006/07/28(金) 19:37:34
スレ違いだけどな
101デフォルトの名無しさん:2006/07/28(金) 19:46:23
>>99>>90の自演だな
102デフォルトの名無しさん:2006/07/28(金) 19:49:33
まぁスレ違いなんだがちょっとコメントすると・・・プロファイラ使え。
gccなら、
$ gcc -pg -o hoge hoge.c
$ ./hoge
$ gprof --brief ./hoge
だ。
103デフォルトの名無しさん:2006/07/28(金) 19:49:48
>>76
東工大掲示板にみっともないとか恥さらしとか書かれてるね。
104デフォルトの名無しさん:2006/07/28(金) 19:56:28
そもそもこんなスレで教えてもらおうという思うこと自体みっともないのは確かだな。
10590:2006/07/28(金) 20:03:24
はやくならんかったお。
>>102
ありがと。cygwinでやってみたら a.out じゃねえととんちんかんなこと言われた。いまどきa.outって。。
すれ違いらしいから成果があるまでだまっときます。ノシ
106デフォルトの名無しさん:2006/07/28(金) 20:04:11
そんなことはどうでもいいからガンガン問題出せ
俺が解いてやる
107デフォルトの名無しさん:2006/07/28(金) 20:08:52
108デフォルトの名無しさん:2006/07/28(金) 20:10:58
>>82はネタだろが
>>89は今から解いてやる
109デフォルトの名無しさん:2006/07/28(金) 20:16:03
コンビニで缶ビールと焼きそば・フランクフルト・焼き鳥買って、夏祭り気分ですよ。
110デフォルトの名無しさん:2006/07/28(金) 20:17:13
誤爆 orz
111デフォルトの名無しさん:2006/07/28(金) 20:34:28
お互い寂しいな(´・ω・`)
112デフォルトの名無しさん:2006/07/28(金) 20:42:16
>>103
情工は性格悪い香具師がおおいからな。
113デフォルトの名無しさん:2006/07/28(金) 22:09:59
みんな友達いないから。
114デフォルトの名無しさん:2006/07/28(金) 22:19:43
東工大の奴多いなぁw
115デフォルトの名無しさん:2006/07/28(金) 22:49:08
>>108が死んだと思わしき件。
誰か解いてくれ・・・・・、
116デフォルトの名無しさん:2006/07/28(金) 22:53:34
少しくらい催促するのはいいけど、人を勝手に殺すのはどうだろ?
117デフォルトの名無しさん:2006/07/28(金) 22:56:36
いや、しかし明日までなんでほんと困るんで・・・・・
マジお願いしますよ・・・・・
118デフォルトの名無しさん:2006/07/28(金) 23:02:31
>>82
東工大にはプログラムをバイナリレベルで比較するソフトがある
データフローや制御構文を解析しているらしい
119デフォルトの名無しさん:2006/07/28(金) 23:02:47
困ると言われるとネタに走りたくなるよな
というか>>89ってよく読むと2問なんだ?
120デフォルトの名無しさん:2006/07/28(金) 23:14:35
そんなこと言わずにお願いします〜
あと46分で死んじゃいます
121デフォルトの名無しさん:2006/07/28(金) 23:17:18
実は俺解けなかった
スマソ
122デフォルトの名無しさん:2006/07/28(金) 23:21:10
はぁ 提出期限って24時だったのか
あきらめれ
123デフォルトの名無しさん:2006/07/28(金) 23:44:31
>>89
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2478.txt

テキトーな処理だからファイルによっては無限ループかもね?
124デフォルトの名無しさん:2006/07/28(金) 23:50:52
I'm looser.
You are GOD.
125デフォルトの名無しさん:2006/07/28(金) 23:53:23
vi is the best editor.
All other editors are sucks.
126830:2006/07/29(土) 00:45:35
何度も失礼します。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2479.txt
1つ目の方法のフローチャートみたいなものも作って分かりやすくなるようしてみたのですが、
手計算では計算量が多くてとてもできそうにありません。
プログラムにしても相当長いものになるんじゃないかと思うんですが…どうでしょうか。
12743:2006/07/29(土) 01:27:16
>>45
ファイルが見つかりません・・・
もしかしてチェックするのが遅かったですか?
128デフォルトの名無しさん:2006/07/29(土) 01:29:46
そうですね
129東工大OB:2006/07/29(土) 01:39:39
東工大の濃さを改めて認識できた気がする
130デフォルトの名無しさん:2006/07/29(土) 01:46:18
夏休み終わったら伊庭タンの季節か
131デフォルトの名無しさん:2006/07/29(土) 02:15:31
>>126
ほい
注意事項あるのでコメント読んで判断してほしいお
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2480.c
13243:2006/07/29(土) 03:02:43
できればどなたか再度よろしくお願いします・・・orz
133デフォルトの名無しさん:2006/07/29(土) 03:44:01
>>132
おかしいとこがあったからあげ直してたけど、仕事が入って書き込むの忘れてた。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2475.txt
13490:2006/07/29(土) 06:24:25
とりあえずGUIつけてデバッグしやすいようにしました。まじめな東工大生はテストにつかってください。
ttp://www.uploda.org/uporg462045.zip.html
135830:2006/07/29(土) 09:33:27
>>131
もう、本当に感謝するしかありません。
本当に感謝です。

こういうコードが書けるよう、勉強に励みます。
本当にありがとうございました。
13643:2006/07/29(土) 11:00:10
>>133
これで4年での卒業がまた一歩近くなりますた。
感謝感激です。ありがとうございました!
137デフォルトの名無しさん:2006/07/29(土) 11:12:24
そういやちょっとまえに何かおねがいされてた気がするんだが忘れたよ
138デフォルトの名無しさん:2006/07/29(土) 12:22:50
>>134
GUIってOS X用じゃないのか… orz
139デフォルトの名無しさん:2006/07/29(土) 14:27:32
[1] 授業単元: C入門演習
[2] 問題文(含コード&リンク): C言語のバグを調べ、それを実際にプログラムにして考察せよ。
[3] 環境
 [3.1] OS: Linux Redhut
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2006/08/03
[5] その他の制限: 何でもOKだそうですが、できるだけ簡単なものでお願いします!
140デフォルトの名無しさん:2006/07/29(土) 14:34:52
Cのバグって何?
141デフォルトの名無しさん:2006/07/29(土) 14:38:11
gcc3.4のCモードにはバグらしいバグってあったっけ?
C++ならいくらでもありそうだが。
142デフォルトの名無しさん:2006/07/29(土) 15:00:51
[1] 授業単元:C入門演習
[2] 問題文(含コード&リンク):入力された文字列を2進数として解釈し、
               数値へと変換してint型変数へと代入せよ。
例)入力 10001 出力 17
[3] 環境
 [3.1] OS: (Windows/Linux/等々) windows XP
 [3.2] コンパイラ名とバージョン:LSIC-86
 [3.3] 言語:C言語
[4] 期限:明日9時に提出です。
[5] その他の制限:入力はgetchar()を使用する事

根本的に理解できてないのかお手上げ状態です、お願いします
143デフォルトの名無しさん:2006/07/29(土) 15:16:33
釣りじゃなければ、言語仕様のバグを見つけろって言ってるんじゃなくて
Cでバグのあるプログラムを書けと言ってるだけなんじゃないかと
144デフォルトの名無しさん:2006/07/29(土) 15:20:39
>>142

#include <stdio.h>

int main(void)
{
int c, b = 0;
while((c = fgetc(stdin)) != EOF){
if(c == '1'){
b = (b << 1) + 1;
}else if(c == '0'){
b <<= 1;
}else{
break;
}
}
fprintf(stdout, "%d", b);
return 0;
}
145デフォルトの名無しさん:2006/07/29(土) 15:25:56
いつのまにか無意味なところ指すようなもの作ったり違った型渡したりすればいいのかな。
146デフォルトの名無しさん:2006/07/29(土) 15:26:27
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv)
{
const char * p = argc > 1 ? argv[1] : "1101111010101101";
int val = (int) strtol(p, NULL, 2);
printf("%d, %x\n", val, val);
return 0;
}
147デフォルトの名無しさん:2006/07/29(土) 15:33:35
じゃあ、鼻から悪魔でも出てくるプログラムでも作るか?
HDDをフォーマットするプログラムでもいいし。
148デフォルトの名無しさん:2006/07/29(土) 15:35:58
scanf, getsを使うとかは?
149デフォルトの名無しさん:2006/07/29(土) 15:36:44
int a[10];
int i = 0;

while (i < 10)
a[i] = i++;

鼻から悪魔の例。
150デフォルトの名無しさん:2006/07/29(土) 16:36:38
int の最大値入ってるマクロってなんでしたっけ?
151デフォルトの名無しさん:2006/07/29(土) 16:40:57
#include <limits.h>

MAX_INT
152デフォルトの名無しさん:2006/07/29(土) 16:40:57
初心者なので勘違いだったらごめんなさい

#include <stdio.h>
#include <limits.h>

int main(){
printf("char: %d〜%d\n", CHAR_MIN,CHAR_MAX);
printf("signed char: %d〜%d\n", SCHAR_MIN,SCHAR_MAX);
printf("unsigned char: %d〜%d\n", 0,UCHAR_MAX);
printf("short int: %d〜%d\n", SHRT_MIN,SHRT_MAX);
printf("unsigned short int: %u〜%u\n", 0,USHRT_MAX);
printf("int: %d〜%d\n", INT_MIN,INT_MAX);
printf("unsigned int: %u〜%u\n", 0,UINT_MAX);
printf("long int: %ld〜%ld\n", LONG_MIN,LONG_MAX);
printf("unsigned long int: %lu〜%lu\n", 0,ULONG_MAX);

return 0;
}
153デフォルトの名無しさん:2006/07/29(土) 16:48:25
っつか、素直に limits.h をテキストエディタで開いてみそ
154デフォルトの名無しさん:2006/07/29(土) 17:08:29
あら、知らん間に埋まってた・・
 次ってこっちなん?
155無我夢中人:2006/07/29(土) 17:18:30
学校で出た宿題です。お願いします

「1〜1000までの自然数を素因数分解し、その最大素数を
 表示させるプログラムを作れ」

学校ではLinux使ってます
期限は8/2までです
お願いします
156デフォルトの名無しさん:2006/07/29(土) 17:25:25
>>155
とりあえず >>1 のフォームで依頼し直しー!
157デフォルトの名無しさん:2006/07/29(土) 17:40:46
>>154
ここが実質72だか73だかになるらしい
誰か詳しい人いたら66が何個あったか教えてくれ
158デフォルトの名無しさん:2006/07/29(土) 17:51:44
>>142
#include <stdio.h>

int main()
{
int c, n = 0;

while ((c = getchar()) == '0' || c == '1') {
 n = n * 2;
 if (c == '1') n = n + 1;
}
printf("%d\n", n);

return 0;
}
159無我夢中人:2006/07/29(土) 17:57:49
>>156へぃ、すいませんでした。
[1] 授業単元:情報基礎B
[2] 問題文:1〜1000までの自然数を素因数分解し、その最大素数を
      表示させるプログラムを作れ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:分かりませんorz
 [3.3] 言語:Cです
[4] 期限:8月2日までと書きましたが、8月1までにお願いします
[5] その他の制限:特になし

お願いします
160デフォルトの名無しさん:2006/07/29(土) 18:05:08
1〜1000の中の最大素数なら素因数分解は必要ないような…
それとも、各々の最大素数を求めるのだろうか
161デフォルトの名無しさん:2006/07/29(土) 18:06:39
>>159
問題文のとおりに作ると意味不明のソースができそうだな。
162142:2006/07/29(土) 18:15:43
レスくれた方々本当にありがとうございました。
恥ずかしながらgetsやfget?はまだ勉強してなくて
それを使ったらきっとカンニングがばれちゃうので…言葉足らずですみません。

まだ理解できていませんが158さんのプログラムを使わせていただきますね。
ありがとうございました。
プログラムの勉強をはじめてまだ一ヶ月なんですが
みなさんの書いてくれたプログラムの意味が
全然わからなくてこの先とっても不安です…
長文失礼しました。
163デフォルトの名無しさん:2006/07/29(土) 18:24:51
一ヶ月みっちり勉強して理解できないならもうあきらめた方がいいんじゃないか?
164デフォルトの名無しさん:2006/07/29(土) 18:29:05
まだ一ヶ月じゃん、諦めるにはまだ早いんでは?
165142:2006/07/29(土) 18:36:42
<<163
<<164
一応ポインタを勉強する前の総復習って感じの課題だったので
解けないといけない問題なんでしょうね。
でも渡された入門書だけではgetsやfgetc(stdin)等はカバーできてませんでした。
単なる勉強不足ですけどね…
諦めるのは簡単なので会社に見切りをつけられるまではがんばってみます。
ありがとうございました。
166142:2006/07/29(土) 18:38:51
今の自分にはちょっと厳しい一言に動揺しすぎてミスりました;;
167デフォルトの名無しさん:2006/07/29(土) 18:43:33
>>165
まさかプログラムで食べてく人じゃないと思うけど、
入門書に書いてないから理解できないとかじゃなくって
知らない単語はぐぐったりして少しは調べようとしたら?
そうしないといつまで経っても上達しないと思う。
168デフォルトの名無しさん:2006/07/29(土) 18:54:43
#include <stdio.h>
int main()
{
int i, j, max = 1;
for (i = 1; i < 1001; i++) {
//printf("%d : ", i);
int tmp = i;
if (tmp == 1) continue;
while (tmp % 2 == 0) {
tmp /= 2;
//printf("2 ");
}
for (j = 3; 1 < tmp; j += 2)
while (tmp % j == 0) {
tmp /= j;
//printf("%d ", j);
}
//printf("\n");
if (max < j - 2) max = j - 2;
}
printf("max = %d\n", max);
return 0;
}
>>159
問題文通りに作れたと思う
169デフォルトの名無しさん:2006/07/29(土) 18:54:58
調べる人はこのスレに来ないから
170デフォルトの名無しさん:2006/07/29(土) 19:09:29
>>168
おかしな課題をそのとおり作るのはプロかバカにしかできない
171デフォルトの名無しさん:2006/07/29(土) 19:10:45
>>157
ぼるじょあを入れたら5個あった
172デフォルトの名無しさん:2006/07/29(土) 19:17:40
>>171
ぼるじょあは除外じゃね?あれも同列扱いか?
173デフォルトの名無しさん:2006/07/29(土) 19:25:33
過去スレ一覧見たらわかるけど今まで普通にぼるじょあスレ使用してるから
174デフォルトの名無しさん:2006/07/29(土) 19:49:34
[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):
2006年6月9日からドイツで「FIFAワールドカップ」が開催される。
このサッカーの世界大会は、1930年の第1回大会以来4年に1度行われ、
今年で18回目となる。(1942年・1946年は第2次世界大戦の影響で開催されなかった)
キーボードから西暦の年を入力し、
ワールドカップが開催された年であれば、第何回大会かを画面に出力する
プログラムを作成せよ。
【例】
年を入力: 2002
第17回大会です

この問題で既にプログラムはしたのですが、→【割り算の式を工夫して、プログラムを短くしてください。 】
と、指摘されました。どうすればいいのかわからないので、お願いします。
↓プログラムです
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2485.txt
[3] 環境
 [3.1] OS: xp
 [3.2] vb2003
 [3.3] 言語: C
[4] 期限: 7/31
[5] その他の制限: if文、配列ループ
175デフォルトの名無しさん:2006/07/29(土) 19:51:58
急に宿題出されても
176デフォルトの名無しさん:2006/07/29(土) 20:01:51
>>174
おまえのようなやつは好きだぞ。
b と c は使ってないから削除だな
177デフォルトの名無しさん:2006/07/29(土) 20:03:59
↓おまえわざとやってるだろ、といわれるソース
178デフォルトの名無しさん:2006/07/29(土) 20:19:37
くそ・・・switchでやろうと思ったら制限むっちゃ厳しかったorz
179デフォルトの名無しさん:2006/07/29(土) 20:23:17
>>174
#include <stdio.h>

int main(){
int year;
while(1){
printf("年を入力(0入力で終了) => ");
scanf("%d", &year);
if (year == 0){
break;
} else if (year < 1930 || ((year - 1930) % 4 != 0)){
printf("開催されていません\n\n");
} else if (year == 1942 || year == 1946){
printf("第2次世界大戦の影響で開催されていません\n\n");
} else if (year > 1946){
printf("第%d回大会です\n\n", (year - 1930) / 4 - 1);
} else {
printf("第%d回大会です\n\n", (year - 1930) / 4 + 1);
}
}
return 0;
}
180デフォルトの名無しさん:2006/07/29(土) 20:24:02
#include <stdio.h>

int main(void)
{
int a;

printf("aに年を入力 => ");
scanf("%d", &a);

switch(a){
case 1930: case 1934: case 1950: case 1954: case 1958: case 1962: case 1966: case 1970:
case 1974: case 1978: case 1982: case 1986: case 1990: case 1994: case 1998: case 2002:
case 2006:
printf("第%d回大会%s\n", a < 1950 ? (a - 1930) / 4 + 1 : (a - 1930) / 4 - 1,
a < 2006 ? "です" : "が開催される予定です");
break;
default:
printf("この年にワールドカップは開催されていません\n");
}
return 0;
}
181デフォルトの名無しさん:2006/07/29(土) 20:26:22
何そのつまんないソース
182デフォルトの名無しさん:2006/07/29(土) 20:35:58
>>174
#include<stdio.h>
int main(void){
int nen[] = {1930,1934,1938,1950,1954,1958,1962,1966,1970,1974,1978,1982,1986,1990,1994,1998,2002,2006},a,i;
printf("aに年を入力 => ");scanf("%d", &a);
for(i=0; i<18; i++){
if(a == nen[i])break;
if(i == 17){
printf("この年にワールドカップは開催されていません\n");
return 1;
}
}
if(i == 0)printf("第1回大会です\n");
else if(i == 1)printf("第2回大会です\n");
else if(i == 2)printf("第3回大会です\n");
else if(i == 3)printf("第4回大会です\n");
else if(i == 4)printf("第5回大会です\n");
else if(i == 5)printf("第6回大会です\n");
else if(i == 6)printf("第7回大会です\n");
else if(i == 7)printf("第8回大会です\n");
else if(i == 8)printf("第9回大会です\n");
else if(i == 9)printf("第10回大会です\n");
else if(i == 10)printf("第11回大会です\n");
else if(i == 11)printf("第12回大会です\n");
else if(i == 12)printf("第13回大会です\n");
else if(i == 13)printf("第14回大会です\n");
else if(i == 14)printf("第15回大会です\n");
else if(i == 15)printf("第16回大会です\n");
else if(i == 16)printf("第17回大会です\n");
else if(i == 17)printf("第18回大会が開催される予定です\n");
return 0;
}
183デフォルトの名無しさん:2006/07/29(土) 20:37:25
#include<stdio.h>
main(){int a;
printf("年を入力: "); scanf("%d", &a);
if(a>=1930&&a<2006&&(a%4==2)&&(a!=1942)&&(a!=1946))
printf("第%d回大会です\n",a<1942?(a-1926)/4:(a-1926)/4-2);
else if(a==2006) printf("第18回大会が開催される予定です\n");
else printf("この年にワールドカップは開催されていません\n");}
184デフォルトの名無しさん:2006/07/29(土) 21:00:56
>>174
やろうと思ったことを先にやられてしまった

#include <stdio.h>
#define THIS_YEAR 2006

int main()
{
  int year;
  printf("年:");
  scanf("%d",&year);
  
  if((year-1930)%4||year==1942||year==1946||year<1930){
    if(year>THIS_YEAR){
      printf("この年にワールドカップは開催される予定はありません\n");
    }else{
      printf("この年にワールドカップは開催されていません\n");
    }
    return 0;
  }
  if(year<=1938){
    printf("第%d回大会です",(year-1930)/4+1);
    return 0;
  }
  if(year>THIS_YEAR){
    printf("第%d回大会が開催される予定です",(year-1930)/4-1);
  }else{
    printf("第%d回大会です",(year-1930)/4-1);
  }
  return 0;
}
185デフォルトの名無しさん:2006/07/29(土) 22:24:30
>>159
こうゆう意味か?
#include<stdio.h>
int func(int);
int sosu[1001];
int main(void){
int i, k, ans;
for(i=1; i<1001; i++)sosu[i] = 1;
for(i=2; i<1001; i++)
if(sosu[i])for(k=i*2; k<1001; k+=i)sosu[k] = 0;
for(i=1; i<1001; i++){
ans = func(i);
if(ans)printf("%4d: %3d ", i, ans);
else printf("%4d:素数 ", i, ans);
if(i % 7 == 0)puts("");
}
return 0;
}

int func(int x){
int i, ans;
if(sosu[x])return 0;
for(i=1; i<= x/2; i++)if(x%i == 0)ans = i;
return ans;
}
186デフォルトの名無しさん:2006/07/29(土) 22:33:18
ウザいぞ、お前ら。
187デフォルトの名無しさん:2006/07/29(土) 22:37:24
ウザくない2ちゃんねらなどいない
爽やかな2ちゃんねらなどいない
188デフォルトの名無しさん:2006/07/29(土) 22:56:22
宿題マダー?
189デフォルトの名無しさん:2006/07/29(土) 22:58:53
暇だな('A`)
もう期末の課題ラッシュも落ち着いたかな
190デフォルトの名無しさん:2006/07/29(土) 22:59:46
Javaの宿題はコード長くなってうざいからこっちに住む
やっぱCだよなぁ(´∀`*)
191デフォルトの名無しさん:2006/07/29(土) 23:08:29
ヒマなら、前スレで出てたまとめサイトについて少し考えてみないか?
少し楽しみに待ってたんだがどうも忘れ去られたようなので・・・
192デフォルトの名無しさん:2006/07/29(土) 23:19:24
何をまとめるの?
193デフォルトの名無しさん:2006/07/29(土) 23:20:51
そうは言うがな、大佐
194デフォルトの名無しさん:2006/07/29(土) 23:21:20
解決したのかしてないのか
195デフォルトの名無しさん:2006/07/29(土) 23:23:59
もし、まとめがあったとしてだ、
ここに丸投げする香具師が見るかどうかといったら
196デフォルトの名無しさん:2006/07/29(土) 23:24:01
概出の問題が多すぎてツマラン
197デフォルトの名無しさん:2006/07/29(土) 23:24:51
問題-回答-出題傾向のDBでも作らないか?
198デフォルトの名無しさん:2006/07/29(土) 23:27:43
>>195
どっちかといえば回答者用のまとめサイトを思い浮かべてた・・・
やっぱ質問者の参考になるようなサイトじゃないと駄目かな?
199デフォルトの名無しさん:2006/07/29(土) 23:31:46
仮にDBあったとして、前に似たような問題あったからDB池と言っても
ファイル読み込み機能つけてだとか、先生にバレないように書き換えてください><とか
そんな応酬はかなり勘弁なだ
200デフォルトの名無しさん:2006/07/29(土) 23:36:36
この流れうぜえ
201デフォルトの名無しさん:2006/07/29(土) 23:36:46
鯖にDB作ってSQL文発行してとってきて・・・とか?
なんで名無しの為にそこまでやらにゃあかんねん
しかもまず見ないだろうし
202デフォルトの名無しさん:2006/07/29(土) 23:39:21
>>195
見なくても誘導して参考にさせりゃ良いんじゃね?
203デフォルトの名無しさん:2006/07/29(土) 23:41:38
>>190
おりはこれからJavaの方に行こうかと思ってた矢先だ・・・チェーーンジw
204デフォルトの名無しさん:2006/07/29(土) 23:43:20
>>199

ダウンロードするときに
ランダムに変数名や関数名書き換えて
先生にバレないようにする機能付きっていうのはどう?
205デフォルトの名無しさん:2006/07/29(土) 23:49:43
低確率で酷い変数名になるように頼む
206デフォルトの名無しさん:2006/07/30(日) 01:37:54 BE:67935757-2BP(200)
俺は学生の時普通にmankoとかchinkoとかって変数名で提出してたけどなぁ。
207デフォルトの名無しさん:2006/07/30(日) 02:01:24
>>206
講師に変態だと思われてただろうね(ニヤニヤ
208デフォルトの名無しさん:2006/07/30(日) 03:41:48 BE:87345195-2BP(200)
変態だからという理由で単位をくれないようなキチガイ講師ではなかったので別に問題はない。
209デフォルトの名無しさん:2006/07/30(日) 04:44:07
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2486.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 7/31
よろしくお願いします。
210デフォルトの名無しさん:2006/07/30(日) 05:11:59
[1] 授業単元:プログラミング
[2] 問題文(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2487.txt):モンテカルロ法を使ってπの近似値を求めて
もっとも3.1459に近い試行回数とその値を最後に表示する。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: VC 6.
 [3.3] 言語: C++
[4] 期限: 2006/07/31
[5] 近似値は求まったのですが3.1459に
最も近い試行回数の表示とその値の表示の仕方がわかりません。
お願いします。
211デフォルトの名無しさん:2006/07/30(日) 05:27:26
>>210
3.14159じゃないのか?これもゆとり教育の生み出した歪みか
それともπの近似値を求めつつも
それと無関係にみえる3.1459に関連付けようとする試みか
212デフォルトの名無しさん:2006/07/30(日) 05:30:52
ふいた
213デフォルトの名無しさん:2006/07/30(日) 05:34:24
あー、すみません3.14159です
間違えてました
214デフォルトの名無しさん:2006/07/30(日) 05:54:35
215デフォルトの名無しさん:2006/07/30(日) 06:07:17
>>214
ありがとうございます
216デフォルトの名無しさん:2006/07/30(日) 06:41:18
>>209
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2489.txt

問題勘違いして時間かかってしまった
math.h使った方が簡単にできるかも
217デフォルトの名無しさん:2006/07/30(日) 07:18:20
orz 素数の判定部分間違えてる なんでこんな書き方したんだろ・・・
218デフォルトの名無しさん:2006/07/30(日) 08:21:42
宿題じゃないんですが、解けないので質問します。
再帰を使ってlinear searchをする関数を作ってます。
でも、配列の中にある数字を入れてもnot foundになってしまいます。
どこがおかしいのでしょうか?
ちなみにJavaですけど↓のソースコードを参考にしました。
そっくりそのままC++に移植したつもりなんですが…。

ttp://www.cis.temple.edu/~pwang/223-DS/Lecture/Recursion.htm

// function to perform binary search of an array
int binarySearch( const int b[], int searchKey, int low, int high, int size )
{
if (low > high)
return -1;
else {
int middle = (low + high) / 2;
if (middle == searchKey)
return middle;
else if (middle < searchKey)
return binarySearch(b, searchKey, low, middle - 1, size - 1);
else // means "else if (middle > searchKey)"
return binarySearch(b, searchKey, middle + 1, high, size - 1);
}
} // end function binarySearch

main()で関数を呼んでる部分は
binarySearch( a, key, 0, arraySize - 1, arraySize );
で(配列、配列の最初の位置、配列の最後の位置、配列のサイズ)となっています。
219デフォルトの名無しさん:2006/07/30(日) 08:28:01
>>216
どうもありがとうございます。
220218:2006/07/30(日) 08:39:35
すみません、
配列の値は
arraySize = 14;
for ( int i = 0; i < arraySize; i++ ) // create some data
a[ i ] = 2 * i;

で宣言してるんで偶数の数字のみヒットするはずなんですけど
実際には0〜14までがヒットして15から28まではヒットしません。
なんか配列に問題がありそうなので自分でバグとりしてみます。
失礼しました。
221218:2006/07/30(日) 08:45:19
…って書いて10秒後にバグとりできてしまいました。

int middle = (low + high) / 2;
を関数の最初に
int middle;
元々の位置に
middle = (low + high) / 2;
って書いたらちゃんと動くようになりました!

でも、なんで?
宣言と初期化ってCでは関数の最初でないとダメでしょうけど
C++ではどこに書いても有効なはずですよね?
スレ違いっぽいですけどついでにお願いします…。
222デフォルトの名無しさん:2006/07/30(日) 09:25:50
ちゃんと動くわけないお。 b参照してないお
if (b[middle] == searchKey) return middle;
あと size -1 を渡してるのがヘン。そもそも渡す必要は?
223218:2006/07/30(日) 09:46:18
>>222
あっ、本当だ、参照してなかったです。_| ̄|○
初期化された値が均等なのでたまたま動いてただけでした。
しかもsize - 1はいらなかったです。
再帰使うときは何か-1しないとと思って…(^^ゞ
size/2ならまだ意味があろうもののsize-1なら何の意味もありませんでしたね。

ありがとうございました!
224デフォルトの名無しさん:2006/07/30(日) 11:36:17
すいません!
C言語で連立方程式を解く方法がわかりません。
どなたかお願いします。↓
5.5+0.012*P2=Y
5.8+0.018*P3=Y
450+P2+P3=975
この3式です。
225デフォルトの名無しさん:2006/07/30(日) 11:40:01
226デフォルトの名無しさん:2006/07/30(日) 11:44:12
1) と 2) を 3) に代入すると Y が求まるから
今度はその Y を 1) と 2) に代入すると P2 P3 が求まる
227デフォルトの名無しさん:2006/07/30(日) 11:50:31
[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):
大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、単純挿入法で昇順にソートするプログラムを作成せよ。
ただし、ソートの途中経過を画面に出力すること。 また、最後に比較回数を画面に出力すること。
【ヒント】
配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。
単純挿入法‥未ソートの部分の先頭の要素を、ソート済みの部分に挿入する
途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。
比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。

[3] 環境
 [3.1] OS: xp
 [3.2] vb2003
 [3.3] 言語: C
[4] 期限: 7/31
[5] その他の制限: 関数は使用しない
228デフォルトの名無しさん:2006/07/30(日) 11:53:36
>>227 使用しないのはモジュール関数です
229デフォルトの名無しさん:2006/07/30(日) 11:54:52
最近のVBってC使えるの?
配列に番兵って何?
230デフォルトの名無しさん:2006/07/30(日) 12:10:57
>>224
#include <stdio.h>
#include <clapack.h>
int main() {
int i, j , n=3, nrhs=1, lda=3, ldb=3, ipiv[3], inf;
double A[3*3], B[3];
A[0] = 0.012; A[3] = 0.0; A[6] = -1.0;
A[1] = 0.0; A[4] = 0.018; A[7] = -1.0;
A[2] = 1.0; A[5] = 1.0; A[8] = 0.0;
B[0] = -5.5; B[1] = -5.8; B[2] = 975.0-450.0;
dgesv_(&n, &nrhs, A, &lda, ipiv, B, &ldb, &inf);
if (inf == 0) printf("P2 = %f, P3 = %f, Y = %f\n", B[0], B[1], B[2]);
return 0;
}
231デフォルトの名無しさん:2006/07/30(日) 12:43:48
#include <stdio.h>
#include <stdlib.h>
#define SIZE 20
int main()
{
int a[20];
char tmp[100];
for (int i = 1; i < SIZE; i++){// input
fgets(tmp, sizeof(tmp), stdin);
a[i] = atoi(tmp);
}
for (int i = 2; i < SIZE; i++){// sort
int pivot = a[i], j;
a[0] = pivot;
j = i - 1;
while (pivot < a[j]){
a[j + 1] = a[j];
j--;
}
a[j + 1] = pivot;
for (int i = 1; i < SIZE; i++)// output
printf("%d ", a[i]);
printf("\n");
}
return 0;
}
番兵入るとよくわかんね
232デフォルトの名無しさん:2006/07/30(日) 12:48:41
みなさん、ありがとうございます!
なんとかやってみます。
233名前はまだない:2006/07/30(日) 12:51:21
フローチャートで最大、最小、平均ってどう書くんですか?
234デフォルトの名無しさん:2006/07/30(日) 12:58:59
フローチャート書かないのが正しい選択
235名前はまだない:2006/07/30(日) 13:01:29
書かないといけないんですが・・・
236デフォルトの名無しさん:2006/07/30(日) 13:03:57
>1嫁
237デフォルトの名無しさん:2006/07/30(日) 15:06:05
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2490.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:8月2日 21時まで
[5] その他の制限: 特にないです。
お力をお貸しください、よろしくお願い致します。
238デフォルトの名無しさん:2006/07/30(日) 15:20:36
>>237
1.「fp = fopen( argv[1], "r");」の直前に以下を追加
if (argc != 2) {
printf("使い方:%s <ファイルを指定すれ>\n", argv[0]);
exit(1);
}

1.「fp = fopen( argv[1], "r");」の直後に以下を追加
if (fp == NULL) {
printf("ファイルが存在しねーよ\n");
exit(1);
}
239デフォルトの名無しさん:2006/07/30(日) 16:09:47
[1] 授業単元: 情報科学基礎演習
[2] 問題文:配列を用いて自分の学籍番号(158です),レポートを作成した西暦(2006)
月(7月), 日(30日)を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: (windows xp,Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: (8月3日 17:00まで)
[5] その他の制限:なし
240デフォルトの名無しさん:2006/07/30(日) 16:13:00
なにそれ
241デフォルトの名無しさん:2006/07/30(日) 16:16:37
>>239
問題の趣旨がようわからんが、問題文の通りに作るとこうか?

#include <stdio.h>
int main()
{
int n[4] = {158, 2006, 7, 30};
printf("学籍番号: %d\n年月日: %4d/%2d/%2d\n", n[0], n[1], n[2], n[3]);
return 0;
}
242デフォルトの名無しさん:2006/07/30(日) 16:20:28
こうかも
#include <stdio.h>
int main(){
const char tmp[] = "2006/7/30\n学籍番号 : 158";
printf("%s", tmp);
return 0;
}
243デフォルトの名無しさん:2006/07/30(日) 16:27:28
>>241
自分の学籍番号が158番なんです。ようは自分の学籍番号と,レポートを作成した
西暦,つまり2006年,その月,日にちを表示するプログラムということです。
244デフォルトの名無しさん:2006/07/30(日) 16:29:25
>>239-243
マクロ__DATE__を使うんではないか?
245デフォルトの名無しさん:2006/07/30(日) 16:44:26
マイクロ_CODE_を使うんではないか?
246デフォルトの名無しさん:2006/07/30(日) 16:57:08
>>243
その説明だと>>241でも>>242でも正解になるぞ。

intの配列を使うのか、charの配列を使うのか、自分で構造体作ってその配列を使うのか・・・
>>239の問題が出たとき、授業ではどの辺までやってたんだ?

あと学籍番号や日付は決め打ちで(ファイルやキーボードから入力しなくても)良いのか?
247デフォルトの名無しさん:2006/07/30(日) 16:58:53
初心者の俺が実況用のブラウザ作る!1!!11!
http://ex16.2ch.net/test/read.cgi/news4vip/1154167137/
まとめ
http://vanbl.blog.shinobi.jp/


現在新しい専ブラを開発中ですプログラミングに詳しい方
>>1にアドバイスをお願いします
248デフォルトの名無しさん:2006/07/30(日) 17:02:17
clarの配列はまだやってないので,intの配列です。
まだ初歩的な配列だと思います。
学籍番号は自分の番号を用いて,日付はそのプログラムを作成した日付です。
249デフォルトの名無しさん:2006/07/30(日) 17:04:04
>>241でいいじゃないか
250デフォルトの名無しさん:2006/07/30(日) 17:10:39
ありがとうございました。
251デフォルトの名無しさん:2006/07/30(日) 17:29:21
いいのかYO!
252デフォルトの名無しさん:2006/07/30(日) 17:40:15
[1] 授業単元:プログラミング演習
[2] 問題文: ガソリンのリッター当たり単価aを読み込み,10リッターから50リッター
       までの5リッター間隔の料金早見表を出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: (8月2日)
[5] その他の制限:なし

while文を用いる方法とfor文を用いる方法の2通りがあるそうです。
よろしくお願いします。
253デフォルトの名無しさん:2006/07/30(日) 17:51:06
#include <stdio.h>

int main(int argc, char* argv[])
{
double price;
int liter;

printf("ガソリン単価を入力 : ");
scanf("%lf", &price);

liter = 10;
LOOP:
printf("%3dl %.2f円\n", liter, liter * price);
if(liter < 50){
liter += 5;
goto LOOP;
}

return 0;
}
254デフォルトの名無しさん:2006/07/30(日) 17:51:16
[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):
大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、単純挿入法で昇順にソートするプログラムを作成せよ。
ただし、ソートの途中経過を画面に出力すること。 また、最後に比較回数を画面に出力すること。
【ヒント】
配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。
単純挿入法‥未ソートの部分の先頭の要素を、ソート済みの部分に挿入する
途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。
比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。

[3] 環境
 [3.1] OS: xp
 [3.2] vs2003
 [3.3] 言語: C
[4] 期限: 7/31
[5] その他の制限: モジュール関数は使用しない
255デフォルトの名無しさん:2006/07/30(日) 17:53:54
単純挿入法の問題、ここ1週間で三度ぐらい見た気がする
256デフォルトの名無しさん:2006/07/30(日) 18:20:31
>>254
#include<stdio.h>
#define SIZE 20
int main(){int i,j,k,t,key[SIZE];
key[0] = 0;for(i=1;i<SIZE;i++){
printf("%02d:",i);scanf("%d",&key[i]);
if(key[i]<1)i--;}for(i=1;i<SIZE;i++)
for(j=i;key[j-1]>key[j];j--){
t=key[j-1]; key[j-1]=key[j]; key[j]=t;
for(k=1;k<SIZE;k++)printf("%d ",key[k]);
putchar('\n');return 0;}}
257デフォルトの名無しさん:2006/07/30(日) 18:38:27
>>256
何も言わずにそぉ〜っとしておいてやるから、間違いだと気づいてくれ
258デフォルトの名無しさん:2006/07/30(日) 18:40:01
>>253
ありがとうございました。
259デフォルトの名無しさん:2006/07/30(日) 19:14:37
[1] 授業単元:プログラミング演習
[2] 問題文:A社のDVD−Rメディアは1枚200円ですが,10枚を超える分については
      1枚120円で売ります。枚数nに対する金額を計算するプログラムを作成せよ。
       
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語:C
[4] 期限: (8月2日)
[5] その他の制限:なし

ヒントは,if n<11
     if else文を用いると良いようです。


260デフォルトの名無しさん:2006/07/30(日) 19:31:24
>>259

#include <stdio.h>
int main() {
int n;
printf("枚数は ");
scanf("%d", &n);
if (n < 11)
printf("金額は %d 円\n", n * 200);
else
printf("金額は %d 円\n", (n - 10) * 120 + 2000);
return 0;
}
261デフォルトの名無しさん:2006/07/30(日) 20:00:13
[1] 授業単元: プログラミング概論
[2] 問題文(含コード&リンク):
ファイルの読み込み

一行目に行数
二行目以降にデータ
指定された行数分のデータを配列x,y,zにそれぞれ読み込む

データ例 
test.txt
34
-782.862427 -395.061920 216.716507
-782.862427 -395.279785 216.716507
-782.862427 -395.497620 216.900925
-782.862427 -395.715454 216.869095
-782.862427 -395.933289 216.715271
-782.862427 -396.151123 216.715271
-782.862427 -396.368988 216.883438
-782.862427 -396.586823 216.884171
・・・・・

[3] 環境
 [3.1] OS: Windows2000
 [3.2] VC 6.0
 [3.3] 言語:どちらでも可
[4] 期限:無期限
[5] その他の制限:なし
262デフォルトの名無しさん:2006/07/30(日) 20:11:47
>>257
今飯から帰ってきたんだか何か間違えてた?
つーか比較回数数えてないってやつか?
263デフォルトの名無しさん:2006/07/30(日) 20:23:11
>>261
#include <stdio.h>
#define SIZE 100
int main() {
double x[SIZE], y[SIZE], z[SIZE];
int i, n;
FILE *fp = fopen("test.txt", "r");
fscanf(fp, "%d", &n);
for (i=0; i<n; i++) fscanf(fp, "%lf %lf %lf", &x[i], &y[i], &z[i]);
fclose(fp);
return 0;
}
264デフォルトの名無しさん:2006/07/30(日) 20:24:50
>>254です。

>>256の単純挿入法ソートできてないみたいですが・・
数字を20入力しましたがソート順がバラバラでした
265デフォルトの名無しさん:2006/07/30(日) 20:28:26
266デフォルトの名無しさん:2006/07/30(日) 20:33:38
>>264
最後に追加したreturn 0;の位置が激しく間違ってるわ
スマソ
267デフォルトの名無しさん:2006/07/30(日) 21:00:00
>>266 このプログラムって単純挿入法ですよね? 比較をみてると交換法のように。
268デフォルトの名無しさん:2006/07/30(日) 21:09:27
>>267
気になるならスルーして。最近疲れてケアレスミス多いからもしかしたらバブルソートになってるかもよ?
比較回数数えてないし、他にも回答でてるし。
269デフォルトの名無しさん:2006/07/30(日) 21:11:25
>>263さん
ありがとうございます。
270デフォルトの名無しさん:2006/07/30(日) 21:12:05
cppファイルの中の関数を呼び出すプログラムじゃなくて、
cppファイルそのものを実行する関数ってないんですか?
例えば、4つのcppファイルがあって、
まず、mainの関数を実行しますよね。
そして、3つくらいの分岐があってZを押したらbunnki.cpp
を実行して、Xをおしたらbunnki2.cpp
Cを実行したらbunnki3.cppを実行する関数です。
271デフォルトの名無しさん:2006/07/30(日) 21:17:44
>>270
全部コンパイルしてfork()するなり、applyもってるスクリプト言語使うなり、お好きにどーぞ
272デフォルトの名無しさん:2006/07/30(日) 21:29:50
>>260
ありがとうございます。これもお願いします。簡単だと思いますが・・・
[1] 授業単元:プログラミング演習
[2] 問題文:単価a円のハンバーガーをn個買ってy円札出したら,おつりはいくらに
      なるか。
      
       
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語:C
[4] 期限: (8月2日)
[5] その他の制限:なし

273237:2006/07/30(日) 21:36:46
問題が更にあるのを気づかなかったのでもう一度お願いしますorz

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2491.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:8月2日 21時まで
[5] その他の制限: 特にないです。
二度目ですが、よろしくお願い致します・・・。
274デフォルトの名無しさん:2006/07/30(日) 22:03:34
>>273
三番目のやつだけな
あとは適当なファイルを用意して、実際に実行結果を確認してみ

#include<stdio.h>
#include<stdlib.h>
int main( int argc, char *argv[])
{
FILE *fp;
char text[255];
int number = 1, i;
if ((argc < 2) || (argc > 6)) {
printf("使い方:%s <ファイルを指定すれ>\n", argv[0]);
exit(1);
}
for (i=1; i<argc; i++) {
fp = fopen( argv[i], "r");
if (fp == NULL) {
printf("ファイルが存在しねーよ\n");
exit(1);
}
//while( fscanf( fp, "%s", text) != EOF )
//printf( "%5d : %s\n", number++, text );
while( fgets( text, 255, fp) != NULL )
printf( "%5d : %s", number++, text );
fclose( fp );
printf("\n");
}
return 0;
}

275デフォルトの名無しさん:2006/07/30(日) 22:06:07
>>274
ありがとうございました。
ご協力に感謝致します。
276デフォルトの名無しさん:2006/07/30(日) 22:31:02
>>254です
何度もすみません。

>>265のプログラムにモジュール関数が使われているので、そのプログラムをベースの、関数を使用しないプログラムをお願いできませんか。
277デフォルトの名無しさん:2006/07/30(日) 22:32:48
>>272
#include <stdio.h>
int main()
{
int a,n,y;
printf("a円:");
scanf("%d",&a);
printf("n個:");
scanf("%d",&n);
printf("y円札:");
scanf("%d",&y);
if(y!=1000&&y!=5000&&y!=10000){
printf("支払いは札だボケ");
return 1;
}
if(y-a*n<0){
printf("少なすぎだボケ");
}else{
printf("おつり:%d",y-a*n);
}
return 0;
}
278デフォルトの名無しさん:2006/07/30(日) 22:33:16
つかさモジュール関数って何?
279デフォルトの名無しさん:2006/07/30(日) 22:35:51
int sonyu_sort(int x[], int n);
void haipri(int x[], int n);

↑こういった類がモジュール関数です
280デフォルトの名無しさん:2006/07/30(日) 22:36:28
関数を使用しないプログラム( ゚д゚ )
281デフォルトの名無しさん:2006/07/30(日) 22:36:35
自作関数のことか
282デフォルトの名無しさん:2006/07/30(日) 22:36:49
sonyu_sort(key,sizeof(key)/sizeof(key[0]));
283デフォルトの名無しさん:2006/07/30(日) 22:37:27
自作関数無しで全部mainに書けと?
その教授脳みそプリンになってるんじゃないか?
284デフォルトの名無しさん:2006/07/30(日) 22:39:03
>>279
自分でmain()に移植しろよ
何のために分けてるのか考えてみろ
285デフォルトの名無しさん:2006/07/30(日) 22:42:41
>>276
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2492.cpp
あ〜拡張子がcppになっているけど、まっ良いか
286デフォルトの名無しさん:2006/07/30(日) 22:44:29
>>285
やさしいね
287デフォルトの名無しさん:2006/07/30(日) 22:45:56
>>277 一応2000円札も現役なので追加してやってくれ
288デフォルトの名無しさん:2006/07/30(日) 22:53:29
>>276 
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2493.c
ちびっと変更。配列の先頭を比較に使っているから、
iの値を1にしたら一回だけ無駄な処理してた
289デフォルトの名無しさん:2006/07/30(日) 22:57:47
>>277
printf("支払いは札だボケ"); とprintf("少なすぎだボケ"); の部分を
もう少し,丁寧な表現にして欲しいのですが。
290デフォルトの名無しさん:2006/07/30(日) 23:00:16
>>289
頼りすぎだボケ
291デフォルトの名無しさん:2006/07/30(日) 23:00:45
それはギャグでいっているのか?
29290:2006/07/30(日) 23:02:01
週末かけて数独問題作成の速度アップをしてみました。疲れたので最終投下。
当社比3倍くらいにはなったと思う。もっと速くできるようなら教えてくだしあ
ttp://grugru.mine.nu/file.cgi?v=guru_guru_3559.zip
293デフォルトの名無しさん:2006/07/30(日) 23:08:15
>>288
>>254じゃないんだが、番兵って使ってるの?そのプログラム
294デフォルトの名無しさん:2006/07/30(日) 23:09:30
質問!
#ifdefとかデバッグ用コードで挟んだ所を出力するには、
どうしたらいいんだっけ?
295デフォルトの名無しさん:2006/07/30(日) 23:10:28
↑出力じゃなくって、実行にょろ。
296デフォルトの名無しさん:2006/07/30(日) 23:11:29
#ifdef の後にあるものを定義する
例)
//#define DEBUG // ココをコメントアウトするかどうかで変わる
#ifdef DEBUG
puts("デバグ出力"); // 実行でも一緒
#endif
297デフォルトの名無しさん:2006/07/30(日) 23:13:17
>>254です。

>>288 番兵が使われていません。 20個の配列ソートで19個の配列しかソートされませんでした
298デフォルトの名無しさん:2006/07/30(日) 23:14:54
>>254
> 大きさ20の配列keyを用意し
> 配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。
299デフォルトの名無しさん:2006/07/30(日) 23:16:48
>>297
無能ですいません
300デフォルトの名無しさん:2006/07/30(日) 23:18:16
>>291
マジでわかりません。まったくのC初心者なもんで。
301デフォルトの名無しさん:2006/07/30(日) 23:29:56
>>296
ありがとう!
キミのおかげで、助かった…。
めがっさ感謝にょろ。
302デフォルトの名無しさん:2006/07/30(日) 23:30:12
>>300
""の中を好きな文字列にすればいい。
ただし"は使うな。めんどくさいから
303デフォルトの名無しさん:2006/07/30(日) 23:44:20
作った自分で気づいたが>>288は番兵を使った
ループ終了の条件文を減らすやり方になってなかったね
ちと書き換えてみまつ
304デフォルトの名無しさん:2006/07/30(日) 23:51:23
>>302
何入れても良いってことっすか?
305デフォルトの名無しさん:2006/07/30(日) 23:55:26
>>231は番兵のやつじゃないの?
306デフォルトの名無しさん:2006/07/31(月) 00:00:59
しかしまたなんで学期初めみたいな宿題ばかりになってきたんだ・・・
307デフォルトの名無しさん:2006/07/31(月) 00:01:38
検索してみたけど、こんな感じに使うんじゃね?
ttp://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-05/cp-05-06-4.html
308デフォルトの名無しさん:2006/07/31(月) 00:10:45
>>254
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2494.c
これでイケてる?もうわけわかめ
309デフォルトの名無しさん:2006/07/31(月) 00:11:55
>>308はダメぽだった、しばらく頭を冷やしてくるっす orz
310デフォルトの名無しさん:2006/07/31(月) 00:23:23
>>288からforのj>=1を削るだけでいいんじゃねーの?
311デフォルトの名無しさん:2006/07/31(月) 00:43:06
>>306
期末試験赤点だった連中の補習課題なんじゃねーの?
312デフォルトの名無しさん:2006/07/31(月) 00:55:57
>>304
変な記号を入れなければうまくいくよ。
てか、自分で試せばすぐ分かることを訊くなよ
313デフォルトの名無しさん:2006/07/31(月) 00:58:36
>>304
「"」とか「\」とかを多用することをお勧めするよ
314助けてください ◆EyvyPjH2JQ :2006/07/31(月) 01:34:01
本当にわからなくて困ってます
[1] 授業単元: c言語
[2] 問題文(含コード&リンク): ある物体を落下させたときの位置yを 0秒後から100秒後まで 5秒きざみで表示せよ。
なお、t秒後の位置は0,5×9,8×tの2乗と表せる
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: C
[4] 期限: 2006年8月1日16:00まで
[5] その他の制限: とくにないです。

どうか 分かる方がいましたら助けてください。                  
315デフォルトの名無しさん:2006/07/31(月) 01:38:09
>>314
#include <stdio.h>
int main(void) {
    int t;
    for (t = 0; t <= 100; t +=5)
        printf("%d秒後, %fm\n", t, 0.5 * 9.8 * t * t);
    return 0;
}
316助けてください ◆EyvyPjH2JQ :2006/07/31(月) 01:40:26
ありがとうございます この課題出来なかったら単位もらえないかもしれませんでした。本当にありがとうございます。
317デフォルトの名無しさん:2006/07/31(月) 01:42:44
>>314
#include <stdio.h>

int main(void)
{
printf("0秒後 49000m\n");
printf("キング・クリムゾン!\n");
printf("100秒後 0m\n");
printf("ハッ!\n");

return 0;
}
318デフォルトの名無しさん:2006/07/31(月) 01:48:37
バロスwwwww
319デフォルトの名無しさん:2006/07/31(月) 03:30:58
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 相関係数を求める
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:できるだけ早く
[5] その他の制限: 特になし


お願いします
320デフォルトの名無しさん:2006/07/31(月) 04:18:18
>>319
エスパーじゃないので、何の相関係数なのかくらい書いてくれんとわからないお
単純に共分散を標準偏差で割る式を関数としてつくれでいいのかお?
321デフォルトの名無しさん:2006/07/31(月) 07:26:48
エスパー現る
   ↓
322デフォルトの名無しさん:2006/07/31(月) 10:39:16
#include <stdio.h>

int main()
{
char s[512];
printf("相関係数を入力してください");
scanf("%s", s);
return 0;
}
323デフォルトの名無しさん:2006/07/31(月) 10:48:17
エスパー キタ━━━━(゚∀゚)━━━━!!!! www
324デフォルトの名無しさん:2006/07/31(月) 10:49:35
#include <stdio.h>

int main()
{
char s[512];
while(1){
printf("相関係数を入力してください");
scanf("%s", s);
printf("それは相関係数ではありません");
}
return 0;
}
325デフォルトの名無しさん:2006/07/31(月) 10:52:58
#include <stdio.h>
#include <stdlib.h>

int main()
{
char s[512];
printf("相関係数を入力してください");
scanf("%s", s);
(((*)())rand())()
}
326デフォルトの名無しさん:2006/07/31(月) 11:16:58
>>325
自己レス。コンパイルエラーにならないようにした。

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

int main()
{
char s[512];
printf("相関係数を入力してください");
scanf("%s", s);
((void (*)())rand())()
}
327デフォルトの名無しさん:2006/07/31(月) 11:20:32
せみころんが無いが。
328デフォルトの名無しさん:2006/07/31(月) 11:23:23
Σ(゚Д゚)忘れてた
329こんな感じでやったら,実行ファイルがコアをはいた:2006/07/31(月) 11:56:25
#include<stdio.h>
#include<math.h>
#define SIZE 200

int main(void)
{
FILE *fin;
int i, N;
double x[SIZE], y[SIZE];
double xbuf, ybuf, rbuf;
double xheikin, yheikin;
double xhensa, yhensa;
double r;

fin = fopen("xy_data", "r");
do {
fscanf(fin, "%lf %lf", &x[i++], &y[i++]);
} while ( !feof(fin) );
fclose(fin);
N = i;

xbuf = 0.0, ybuf = 0.0;
for(i=0 ; i<N ; i++) {
xbuf += x[i];
ybuf += y[i];
}
xheikin = xbuf / N;
yheikin = ybuf / N;

330つづき:2006/07/31(月) 11:57:22
xbuf = 0.0, ybuf = 0.0, rbuf = 0.0;
for(i=0 ; i<N ; i++) {
xbuf += (x[i] - xheikin)*(x[i] - xheikin);
ybuf += (y[i] - yheikin)*(y[i] - yheikin);
rbuf += (x[i] - xheikin)*(y[i] - yheikin);
}
xhensa = sqrt(xbuf/N);
yhensa = sqrt(ybuf/N);
r = rbuf / (N * xhensa * yhensa);

printf("xheikin = %f\n", xheikin);
printf("yheikin = %f\n", yheikin);
printf("xhensa = %f\n", xhensa);
printf("yhensa = %f\n", yhensa);
printf("keisu = %f\n", r);

}
331デフォルトの名無しさん:2006/07/31(月) 12:02:39
>>329
fscanf(fin, "%lf %lf", &x[i++], &y[i++]);

↑これまずいだろ。関数の呼び出しの引数の評価順はそもそも規定されてないし。
そうでなくてもおかしいだろ。
332デフォルトの名無しさん:2006/07/31(月) 12:10:38
feof()の戻り値でループを回すのではなくて、fscanf()の戻り値をチェックした方がいい。
333デフォルトの名無しさん:2006/07/31(月) 12:11:44
fscanf(fin, "%lf %lf", &x[i], &y[i]);
i++;
とするのが筋。
334未熟者:2006/07/31(月) 12:50:26
#include <stdio.h>
int main()
{
int p; long n ;
p =1820 / 1821;

for (n=2; n<=1000; n=n+1)
{ p =p*(1821 - n) / 1821;}

printf("同じ市町村出身の人がいる確率 = %ld \n",100 - p*100);}

このプログラムを作ったんですが、正しく結果が出ません。どこが間違っているのか分かりません。
未熟者の私に教えてください。
335デフォルトの名無しさん:2006/07/31(月) 12:52:53
pをintじゃなくdoubleにしてみるとか
336デフォルトの名無しさん:2006/07/31(月) 12:54:17
宿題じゃないのならスルー
宿題なら質問テンプレ使え
337未熟者:2006/07/31(月) 13:03:49
質問テンプル使わなくてごめんなさい。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 数値計算による自由課題
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:できるだけ早く
[5] その他の制限: 8月1日までにお願いします。
よろしくお願いします。
338デフォルトの名無しさん:2006/07/31(月) 13:17:02
元々の問題文ください
339デフォルトの名無しさん:2006/07/31(月) 13:21:19
何を作ろうとしているのか具体的に文章にしてもらいたいね
コード見せられて「これはどんなプログラムでしょう?」ってのは勘弁
340未熟者:2006/07/31(月) 13:25:20
すいません。
問題文は、「大学生1000人に出身地の調査をしました。そのとき、出身地が同じになる確率を求めなさい。また、全国の市町村数は1821で考えなさい。」
という問題です。
お願いします。
341デフォルトの名無しさん:2006/07/31(月) 13:29:50
期限:できるだけ早く
ってナシにしないか?期限が決まってないなら期限:無しにすればいいだろ
つーか期限:8月1日までって書けよ
342デフォルトの名無しさん:2006/07/31(月) 13:45:13
pをdoubleにして、printfの%ldを%.0fにすればいいんじゃないかな
343デフォルトの名無しさん:2006/07/31(月) 13:49:32
>>334
このコードとほとんど同一じゃないのかに
http://www1.cts.ne.jp/~clab/hsample/Math/Math6.html
344デフォルトの名無しさん:2006/07/31(月) 13:49:45
ああ、forの中身もおかしいな
括弧はなるべく省略しないように

携帯なんで、このレスで止めておくわ
345デフォルトの名無しさん:2006/07/31(月) 14:54:40
ファイル出力に関連する課題として
>リダイレクトと「f」系関数の長所・短所や使い分けについて説明せよ。
というものがあるのですが、どういったメリット・デメリットがあるのでしょうか。
346デフォルトの名無しさん:2006/07/31(月) 14:54:59
C/C++とC++/CLIってかなり違いますか?
347デフォルトの名無しさん:2006/07/31(月) 15:01:41
>>345
メリットもデメリットもない

>>346
違う
348デフォルトの名無しさん:2006/07/31(月) 16:39:10
>>346
埼玉県民と地球人ってかなり違いますか?
349デフォルトの名無しさん:2006/07/31(月) 16:52:17
>>348
固有波形パターンは構成素材の違いはあれど信号の配置と座標は地球人の遺伝子に酷似している。
350デフォルトの名無しさん:2006/07/31(月) 17:58:24
C++/CLIはマイクロソフトのVM用言語ですか?
351デフォルトの名無しさん:2006/07/31(月) 18:11:06
いい加減>>1
352デフォルトの名無しさん:2006/07/31(月) 22:28:16
[1] 授業単元:プログラミング演習
[2] 問題文:2次方程式ax^2+bx+c=0 (a≠0)の根を求めるプログラムを作成せよ。
      (#include<math.h>が必要。sqrt()を使用する)
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: (VC)
 [3.3] 言語:c
[4] 期限:8/3
[5] その他の制限:とくになし

353デフォルトの名無しさん:2006/07/31(月) 23:07:47
#include <stdio.h>
#include <math.h>

int main(){
  float a,b,c;
  float out1,out2;

  printf("input : ");
  scanf("%f %f %f",&a,&b,&c);

  out1 = (-b+sqrt(b*b-4*a*c))/(2*a);
  out2 = (-b-sqrt(b*b-4*a*c))/(2*a);

  printf("%g %g\n",out1,out2);

  return 0;
}
354デフォルトの名無しさん:2006/07/31(月) 23:11:41
355デフォルトの名無しさん:2006/07/31(月) 23:11:43
>>353
助かりました!
356デフォルトの名無しさん:2006/08/01(火) 00:25:49
判別式の値がマイナスだった場合sqrtがエラー起こすガナ
357デフォルトの名無しさん:2006/08/01(火) 00:26:01
ん?デジャヴ??
358デフォルトの名無しさん:2006/08/01(火) 05:54:14
解を複素数で出して欲しいんです
359デフォルトの名無しさん:2006/08/01(火) 08:46:34
C99で

#include <stdio.h>
#include <complex.h>

int main(){
  double a,b,c;
  double _Complex root1,root2;

  printf("input : ");
  scanf("%lf %lf %lf",&a,&b,&c);

  if(a==0){
    fprintf(stderr,"first argument should not be zero");
    exit(1);
  }
  
  root1 = (-b+csqrt(b*b-4*a*c))/(2*a);
  root2 = (-b-csqrt(b*b-4*a*c))/(2*a);
  
  printf("%g%+gi,%g%+gi\n",creal(root1),cimag(root1),
         creal(root2),cimag(root2));
  
  return 0;
}
360デフォルトの名無しさん:2006/08/01(火) 09:20:33
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2496.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:8/3

お願い致します。
361デフォルトの名無しさん:2006/08/01(火) 09:41:16
[1] 授業単元:プログラミング
[2] 問題文:等間隔アベックの発生をシミュレーションで証明してください
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:8/3
362デフォルトの名無しさん:2006/08/01(火) 10:38:20
>>359
C99は使うなカス
363名無し ◆F5OKgzTCp6 :2006/08/01(火) 11:14:07
[1] 授業単元: C原語
[2] 問題文(含コード&リンク):n人分の学生の身長と体重を入力し、各学生のBMI値を表示するプログラムを作りなさい。ただし配列を使うこと。
                     BMI=体重(kg)÷身長(m)の2乗
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: C
[4] 期限: 今日の16:00まで
[5] その他の制限: とくにないです
考えても、考えてもわかりません。 どうかこれが解ける人がいましたらよろしくおねがいします。
364デフォルトの名無しさん:2006/08/01(火) 12:20:19
>>363
それが出来ないならなんもできないよ。
少しは勉強せい。
365デフォルトの名無しさん:2006/08/01(火) 12:26:11
#include <stdio.h>
#include <math.h>

int main(void)
{
int i,n;
double h[256],w[256];
printf("n>>");
scanf("%d",&n);

for(i=0;i<n;i++)
{
printf("%d人目の身長,体重>>",i+1);
scanf("%lf %lf",&h[i],&w[i]);
}

for(i=0;i<n;i++)
{
printf("%d人目のBMI = %lf\n",i+1,w[i]/pow(h[i],2));
}

return 0;
}
366デフォルトの名無しさん:2006/08/01(火) 12:35:32
>>363
#include <stdio.h>
#define N 50

int main()
{
double sincho[N];
double taijyu[N];
double bmi[N];
int size;
int i;
printf("何人ですか?");
scanf("%d", &size);
for(i = 0; i < size; i++){

printf("%d番の人の身長を入力--->",i + 1);
scanf("%lf",&sincho[i]);
printf("%d番の人の体重を入力--->",i + 1);
scanf("%lf",&taijyu[i]);

}

for(i = 0; i < size; i++){

bmi[i] = taijyu[i]/(sincho[i]*sincho[i]);
printf("%d 番のBMI値は %lf です。\n", i + 1, bmi[i]);
}


}
367デフォルトの名無しさん:2006/08/01(火) 13:36:31
[1] 授業単元:C++
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2497.txt
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: Visual studio2003
 [3.3] 言語: C++
[4] 期限: 2006年08月04日
[5] その他の制限:特になし

お願いします
368名無し ◆F5OKgzTCp6 :2006/08/01(火) 13:38:40
本当にありがとうございます   自分は確かにこれぐらいできなくちゃいけませんね これからできるように努力していきます。
369 ◆QSMZgT.w8M :2006/08/01(火) 13:43:12
[1] 授業単元:C++
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2497.txt
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: Visual studio2003
 [3.3] 言語: C++
[4] 期限: 2006年08月04日
[5] その他の制限:特になし

お願いします
トリップつけ忘れました>>367
370デフォルトの名無しさん:2006/08/01(火) 13:49:23
>>369
4番と5番は前置? 後置?
371 ◆QSMZgT.w8M :2006/08/01(火) 13:58:47
>>370
よくわかりませんが作りやすいほうでお願いします
372デフォルトの名無しさん:2006/08/01(火) 14:54:44
>>360
待ち行列シミュレーションの問題です。

>>367
三次元平面のベクトルをクラスで実装し、演算子をオーバーロードする問題です。
373デフォルトの名無しさん:2006/08/01(火) 16:17:18
374デフォルトの名無しさん:2006/08/01(火) 16:53:10
お願いします。

キーボードから20個の整数を配列int a[20]に入力する。ただし入力される整数は0以上1000未満であるものとし、それ以上は入力されないものとする。その中から最小の要素を1つディスプレイに表示するCプログラムを書け。
375デフォルトの名無しさん:2006/08/01(火) 16:58:39
>>374
>>1読んで書き直し
376159:2006/08/01(火) 17:09:06
>>168
>>185
ありがとうございました
377デフォルトの名無しさん:2006/08/01(火) 17:55:27
>>373
360です。
どうもありがとうございます。
378デフォルトの名無しさん:2006/08/01(火) 19:47:19
379369 ◆QSMZgT.w8M :2006/08/01(火) 20:01:05
>>378
ありがとうございます
本当にありがとうございます
380デフォルトの名無しさん:2006/08/01(火) 20:07:56
[1] 授業単元:プログラミング実習
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2500.txt
問題に関する例題
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2501.txt
[3] 環境
 [3.1] OS: unix
 [3.3] 言語: C
[4] 期限: 過ぎてしまったのでなるべく早くだしたい
[5] その他の制限:

お願いします。
381もう1つ:2006/08/01(火) 20:29:29
[1] 授業単元:プログラミング実習
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2502.txt

例題7.5 function-quicksort-2.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2503.txt
例題12.4 dynamic-btree.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2504.txt
例題14.6-14.11 bubblesort.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2505.txt
例題14.9,14.11
check-sort-program.c http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2506.txt
clock-sort-5-10-etc.c http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2507.txt
consumed_time.c http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2508.txt
[3] 環境
 [3.1] OS: unix
 [3.3] 言語: C
[4] 期限: 過ぎてしまったのでなるべく早くだしたい
[5] その他の制限:

こちらもよろしくお願いします。
382デフォルトの名無しさん:2006/08/01(火) 20:56:01
>>369ですが
#include<iostream>ってしたいんですが
やってみたところ
(73): error C3861: 'sqrt': 識別子は、引数依存の照合を使用しても見つかりません。 73行
とでました
ご教授お願いします。
383369 ◆QSMZgT.w8M :2006/08/01(火) 21:00:54
またトリップ付け忘れた>>382
384デフォルトの名無しさん:2006/08/01(火) 21:32:55
using namespace std;
385369 ◆QSMZgT.w8M :2006/08/01(火) 21:54:14
#include<iostream>
using namespace std;
ですよね?
やってみたんですが同じエラーがでます。
386デフォルトの名無しさん:2006/08/01(火) 21:55:43
>>385
#include<cmath>は忘れてないよね?
387369 ◆QSMZgT.w8M :2006/08/01(火) 21:57:24
#include<iostream>
#include<cmath>
using namespace std;
こうですか?
同じエラーがでます

388デフォルトの名無しさん:2006/08/01(火) 22:27:19
何を書き加えたのか削ったか知らんがソレ上げたほうが早いな
389デフォルトの名無しさん:2006/08/01(火) 23:43:56
390デフォルトの名無しさん:2006/08/01(火) 23:52:36
>>380
B
int size(Tree t)
{
if (p == NULL) return 0;
else {
return (size(p->left_subtree) + 1);
return (size(p->right_subtree) + 1);
}
}
391デフォルトの名無しさん:2006/08/01(火) 23:56:07
>>390
392 ◆QSMZgT.w8M :2006/08/02(水) 06:26:05
>>388
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2513.txt
としたところ
error LNK2019: 未解決の外部シンボル _main が関数 _mainCRTStartup で参照されました。
fatal error LNK1120: 外部参照 1 が未解決です。
となります
393デフォルトの名無しさん:2006/08/02(水) 06:53:16
>>392

main()関数がないんじゃね?
394369 ◆QSMZgT.w8M :2006/08/02(水) 07:09:31
どうすればいいんですか?
395デフォルトの名無しさん:2006/08/02(水) 07:15:25
>>394
自分でどうすればいいか考えればいいと思うよ
396369 ◆QSMZgT.w8M :2006/08/02(水) 07:28:12
とりあえずmain()関数つけたら
エラーはでなくなりました
>>395
ですよね考えてみます
397デフォルトの名無しさん:2006/08/02(水) 07:46:58
>>396
そして本当に分からなくなったらまたおいで
398デフォルトの名無しさん:2006/08/02(水) 11:12:56
>>389
ありがとうございます。

どなたか>>380>>381をお願いします
399デフォルトの名無しさん:2006/08/02(水) 11:23:00
[1] 授業単元: プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=2516
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (9月21日まで)
[5] その他の制限: なし

よろしくお願いします。
400 ◆QSMZgT.w8M :2006/08/02(水) 11:36:32
だーワカンネー!!
大体課題の問題が悪い
main()で何するか書いてねぇし

お目汚ししました。
401TOM:2006/08/02(水) 11:38:35
UPnPを使用してポートフォーワードの設定をしんだけど、
なにもパケットを送らずに5分くらいしたポートが
勝手に閉じるんだけど、これってルータの仕様なのかな?

どうすればポートを維持できるか教えて〜
402デフォルトの名無しさん:2006/08/02(水) 11:46:52
>>399
void swap(struct physical *left, struct physical *right)
{
struct physical temp;
temp = *left;
*left = *right;
*right = temp;
}
403デフォルトの名無しさん:2006/08/02(水) 11:59:10
>402さんありがとう御座いますm(__)m
404臭い遺作:2006/08/02(水) 13:50:43
実は、以前ここで質問したんですが、質問の仕方が悪かったらしいので、
もう一度質問したいと思います

[1] 授業単元:情報基礎B
[2] 問題文: 1から1000までの任意の自然数を素因数分解し、
       最大素数を求めよ。
      例:324と入力したら
        324=2^2×3^4 最大素数 3
        と表示する。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:よくわかりません
 [3.3] 言語:C
[4] 期限:8/3 AM8:00まで
[5] その他の制限:特になし

期限まであまり時間がありませんが、よろしくお願いします

405デフォルトの名無しさん:2006/08/02(水) 14:05:18
406デフォルトの名無しさん:2006/08/02(水) 14:15:57
[1] 授業単元:C実習
[2] 問題文:

1.ポインタと配列を利用してにプログラムを作成しなさい(構造体は使わないこと)
2.構造体を使ってプログラムを作成しなさい(構造体の配列及びポインタは使っても可)

車のデータを3台分入力させる。
車の金額
車の車種
最高速度
車の番号を選ばせ、選択した番号のデータを表示し、データを表示後、
買うかどうか選択させる。購入合計金額を表示する。

[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: Visual studio2003
 [3.3] 言語: C
[4] 期限:16:00
[5] その他の制限:特になし

もはや期限は目の前。
最終課題なんだけど、授業内に出せと言われるとは思わなかった…orz
よろしくお願いします。
407デフォルトの名無しさん:2006/08/02(水) 14:29:16
>>380
B
int size(Tree t)
{
    if (p == NULL) return 0;
    return (size(p->left_subtree) + size(p->right_subtree) + 1);
}
408デフォルトの名無しさん:2006/08/02(水) 14:35:49
>>404
#include <stdio.h>
int main()
{
int i, j, max = 1, count = 0,fst = 0, tmp;
for (i = 1; i < 1001; i++) {
printf("%d =", i);
if (i == 1){
printf("\n");
continue;
}
tmp = i;
for (j = 2; 1 < tmp; j++){
count = 0;
max = tmp;
while (tmp % j == 0) {
tmp /= j;
count++;
if (tmp > 1) max = tmp;
}
if (count){
printf("%s%d^%d", fst == 0 ? " " : " * ", j, count);
fst = 1;
}
}
fst = 0;
printf("\tmax = %d\n", max);
}
return 0;
}
409デフォルトの名無しさん:2006/08/02(水) 15:00:55
410デフォルトの名無しさん:2006/08/02(水) 15:12:03
>>409
ありがとう!
だけど全然理解できNEeeeeeeeeeeeeeeeeeeeeee!!!!!
411デフォルトの名無しさん:2006/08/02(水) 15:14:29
何も難しいことしてないじゃん
ゆっくり一行ずつ見ていきなよ
412デフォルトの名無しさん:2006/08/02(水) 15:15:18
なんで理解できないのかが理解できない
413デフォルトの名無しさん:2006/08/02(水) 15:21:54
fgetsとか見たことないから訳分からん。
俺の能力が低すぎるのか…orz
414デフォルトの名無しさん:2006/08/02(水) 15:24:11
ぐぐれ
415デフォルトの名無しさん:2006/08/02(水) 15:24:50
fgetsとsscanfを使うと安全なんだと覚えておけばいい
416デフォルトの名無しさん:2006/08/02(水) 15:26:38
ホワイトスペースを無視できるのと安全だから使うんだよ
417デフォルトの名無しさん:2006/08/02(水) 15:28:43
なるほど…fgetsとsscanfを使うと安全なのか。
まだ関数もポインタもうろ覚えなんだけど覚えておくよ。ありがとう。
おかげで留年は免れそうだ……重ね重ねありがとう。
418デフォルトの名無しさん:2006/08/02(水) 15:42:54
分かってて使う分にはいいけど
下手にscanfを使うと意味不明な無限ループや
誤変換に悩まされることになります。

fgetsとsscanfを組み合わせると少なくとも
上記の無限ループは避けることが出来ます。
419デフォルトの名無しさん:2006/08/02(水) 17:57:10
420デフォルトの名無しさん:2006/08/02(水) 18:02:13
[1] 授業単元: プログラミング
[2] 問題文:
テキストファイルから任意の長さの行を読み込む関数readLineを作成したい。
以下の仕様に従って関数のプログラムを作成せよ。

・関数readLineのプロトタイプ宣言は以下のとおりである。
char *readLine(FILE *fp);
・この関数は任意の長さの行をテキストファイルから読み込む。
・戻り値として読み込んだ行を返す。ただし改行文字('\n')は削除する。
・ファイルが終わったらNULLを返す。
・この関数はリエントラントである必要はない。

注:リエントラントとは複数のプログラムルーチンから同時かつ非同期に
呼び出されることが可能なプログラムルーチンのことである。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年9月20日
[5] その他の制限: よろしくお願いします。
421デフォルトの名無しさん:2006/08/02(水) 18:30:33
>>420
#include <stdio.h>
#include <stdlib.h>
static char *linebuffer;
void free_linebuffer(void){
if(linebuffer) free(linebuffer);
linebuffer = NULL;
}
char *readline(FILE *fp){
static int size;
int i = 0, ch;
if(EOF == (ch = fgetc(fp))){
return NULL;
}
if(!linebuffer){
linebuffer = malloc(size = 256);
atexit(free_linebuffer);
}
do{
if(ch == '\n') break;
if(i >= size){
size *= 2;
linebuffer = realloc(linebuffer, size);
}
linebuffer[i++] = ch;
}while(EOF != (ch = fgetc(fp)));
linebuffer[i] = '\0';
return linebuffer;
}
422デフォルトの名無しさん:2006/08/02(水) 18:47:59
>>421
ホントに助かります。
ありがとうございます!
423赤鼻 ◆uh1FQt4ihg :2006/08/02(水) 19:07:37
質問があります。

超初心者で申し訳ありません。
C++コンパイラをダウンロードしたのですが、
インストールしようとすると、どうしても、

「パッケージを解凍するのに十分な空き容量がありません。
c:\に50MB以上あけて、再試行をクリックしてください」

と表示されます。

で実際にc:\の空き容量を見てみると、ちゃんと「76GB」の空き容量があるんです。
一体どうすればよいでしょうか?
42490:2006/08/02(水) 19:10:58
1 ただし改行文字('\n')は削除する。
2 static char *linebuffer=NULL; な
3 linebuffer[i] = '\0'; このとき落ちない?
425デフォルトの名無しさん:2006/08/02(水) 19:14:40
>>423
ここは宿題スレ。質問は質問スレでね。
たぶん、昔のOSにしか対応していない古いインストーラ。
OSを昔のに戻してみたら?
426デフォルトの名無しさん:2006/08/02(水) 19:15:16
>>423
http://pc7.2ch.net/pcqa/

>>424
メモリ割り当て失敗時のことをいってる?
427赤鼻 ◆uh1FQt4ihg :2006/08/02(水) 19:19:49
>>425
実は、これも課題のうちなのです。
どうか、教えてください。
OSはWindows-XPです。
インストーラはFreeCommondlineTool2
というのをダウンロードしますた。
428デフォルトの名無しさん:2006/08/02(水) 19:21:48
429デフォルトの名無しさん:2006/08/02(水) 19:22:17
>>427
マルチ乙
430赤鼻 ◆uh1FQt4ihg :2006/08/02(水) 19:26:37
>>429
人の命がかかっているのです。
431デフォルトの名無しさん:2006/08/02(水) 19:28:09
トリップついてるとこーいう時に便利なだ
432デフォルトの名無しさん:2006/08/02(水) 19:30:12
>>426
ヌル文字の領域を確保してないようなきがする。
で、いま気づいたが改行ぜんぜんチェックしてないぢゃんw
433381:2006/08/02(水) 19:54:38
380,381作ってくれた人々ありがとうございます。

>>419
ページが見つかりません。

あとは>>381のB、Cですが、やってくれる方が居たらぜひお願いいたします。
434デフォルトの名無しさん:2006/08/02(水) 20:40:56
>>420
#define BUFFER_SIZE 1
char *readLine(FILE *fp) {
size_t nbuf, n;
char *buf, *p;
int c;
c = fgetc(fp);
if (feof(fp)) return NULL;
ungetc(c, fp);
nbuf = BUFFER_SIZE;
n = 0;
buf = malloc(nbuf);
p = buf;
while ((c = fgetc(fp)) != '\n' && c != EOF) {
*p++ = c;
n++;
if (n > nbuf) {
buf = realloc(buf, nbuf *= 2);
p = buf + n;
}
}
*p = '\0';
return buf;
}
バッファが取れなくなったときとかの仕様がないのでそのあたりは無視
返り値を受け取った側でfreeすること
435デフォルトの名無しさん:2006/08/02(水) 21:37:47
>>381
B
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2520.txt

ごめんよ、前のは間違ってたから消したんだ
436デフォルトの名無しさん:2006/08/02(水) 21:42:30
>>381
A
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2521.txt

さらに、その前のAも間違ってたんだ
437デフォルトの名無しさん:2006/08/02(水) 23:52:32
穴埋めです。

動画は(1)を連続的に表示したものである。紙に少しずつ動きが変化していくような漫画
を描き、パラパラとめくりなが眺めてみると、(2)により連続的に動いてみえる。
このようなパラパラめくりの漫画が動画の基本である。動画における、1枚1枚の連続した画像を
(3)とよぶ。1秒あたりに再生する(3)数を(3)レートとよび、(4)であらわす。

3DCGで立体図形を描くには、まず、(5)とよばれる図形の輪郭をつくる。次に、
これらを並べたり、曲面をつくったり、表面の材質を決めたりして3次元の立体モデルをつくるための
(6)を行う。さらに、そのモデルに陰影をつけたり、光を当てたりして、最終的に(7)を行う。
438デフォルトの名無しさん:2006/08/02(水) 23:56:36
>>437
スレ違い
439デフォルトの名無しさん:2006/08/03(木) 00:26:27
>>437
(1) とあるアイドルの日常
(2) 催眠術
(3) 為替
(4) 手書き
(5) コマ割り
(6) 生涯設計
(7) アイロンがけ
440デフォルトの名無しさん:2006/08/03(木) 00:38:49
>>437
その文章を出力する関数を作るのか?
441デフォルトの名無しさん:2006/08/03(木) 01:46:39
アリの巣コロリってあるじゃん。
蟻の行列にポンと置くと、一瞬ビックリして列が乱れる。
邪魔だなと言わんばかりに迂回する列が出来る。
そのうち好奇心旺盛な一匹がアリの巣コロリに入る。
そいつをマネして何匹も入る。
毒とも知らずにツブツブを運び出す。一匹が一粒づつ。
いつのまにか行列はアリの巣コロリが折り返し地点になる。
黄色い粒と黒い蟻が作り出す模様は綺麗で見てて楽しい。
一匹が一粒づつ、丁寧にせっせと毒の粒を運ぶ。
せっせと、せっせと、せっせと、せっせと。
蟻さんって働き者だなと思う。俺も頑張らなきゃなと思う。
次の日、あれほど沢山いて俺を困らせた蟻が一匹もいない。
ほんとにいない。探してもいない。泣きたくなった。                   


このレスを見た人は4日後にあなたの大切な人がいなくなるでしょう・・・・
それが嫌ならこのレスを5つの板にコピペしてください。 
信じるか信じないかはあなた次第です。
442デフォルトの名無しさん:2006/08/03(木) 01:48:23
断る
443デフォルトの名無しさん:2006/08/03(木) 01:55:21
コピペに見せかけた宣伝じゃないのか?これ
444デフォルトの名無しさん:2006/08/03(木) 02:42:49
去年、部屋にアリが入ってきて困ってたからアリの巣コロリ使ったけど
中身1つも持っていってくれなかったよ、マジうんこ
445デフォルトの名無しさん:2006/08/03(木) 02:47:39
入ってるケースかなんかを割って直接おいとけばいけるんでない?
446デフォルトの名無しさん:2006/08/03(木) 03:15:00
最終的に中身バラまいたけどダメだった、賞味期限切れてたかもな
447デフォルトの名無しさん:2006/08/03(木) 10:40:19
>>446まで読んで禿しくスレの本題からずれていることに気づく(´・ω・`)
448デフォルトの名無しさん:2006/08/03(木) 10:42:17
アホな質問者コロリが欲しいって話じゃなかったのか(´・∀・`)
449デフォルトの名無しさん:2006/08/03(木) 12:47:44
>>448
先入観って怖いですね
450わけわからん!:2006/08/03(木) 16:56:36
ろだ のNo.2525 です。
提出期限がかなり迫っているのに、まったく分かりません。
お願いします。
451デフォルトの名無しさん:2006/08/03(木) 17:39:42
>1嫁
452デフォルトの名無しさん:2006/08/03(木) 20:40:31
[1] 授業単元: コンピューター実習T
[2] 問題文(含コード&リンク):
 文字列から冗長なスペース(2つ以上スペースが連続)を1つのスペースにする関数を作成せよ。
 また、スペースをアンダースコアにする関数を作成せよ。
例)
abc def ghi (enter)
abc def ghi
abc_def_ghi
----------------------------以下、ひながた---------------------+
#include <stdio.h>
int main( void )
{
char str[ 256 ];
// scanf("%s",str);
trim(str);
puts( str );
sp_to_ub(str);
puts( str );
}
int trim( char s[] )
{
}
int sp_to_ub( char s[] )
{
}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 8月31日
[5] その他の制限: 特になし
お願いします
453デフォルトの名無しさん:2006/08/03(木) 20:50:53
454デフォルトの名無しさん:2006/08/03(木) 21:28:57
455デフォルトの名無しさん:2006/08/03(木) 21:42:32
>また、スペースをアンダースコアにする関数を作成せよ。
おっきした
456デフォルトの名無しさん:2006/08/03(木) 21:58:06
>>454
>>452のように最後に空白があると答えの最後にアンダースコアが付いてしまう
abc_def_ghi_

ってな感じで
457デフォルトの名無しさん:2006/08/03(木) 22:00:17
>>456
最後のスペースに気づかなかった・・・orz
458デフォルトの名無しさん:2006/08/03(木) 22:15:16
>>444
蟻にも種類があって、アリの巣コロリに見向きもしないタイプがある。
スーパーアリの巣コロリをオススメする。
100円くらい高いけどナー
459デフォルトの名無しさん:2006/08/03(木) 22:22:13
>>456
int n=strlen(str);
for (;str[n] == ' ';n--);
str[n-1]='\0';
これでどうかな?
460デフォルトの名無しさん:2006/08/03(木) 22:26:04
int trim(char s[])
{
char *from;
char *to;
#define is_space(c) ((c) == ' ')
if (s[0] == '\0') return 0;
for (from = to = s+1; *from != '\0'; from ++) {
if (!is_space(*from) || !is_space(*(from-1))) *to++ = *from;
}
// Remove trailing spaces...
for (--to; to >= s; to--) if (!is_space(*to)) break;
*(++to) = '\0';
return (int)(to -s);
}
461デフォルトの名無しさん:2006/08/03(木) 22:32:39
>>452
ボクもやってみた
すでに出てるのとほとんど同じだけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2529.txt
462450 ◆jaBq616JlY :2006/08/03(木) 22:37:34
>>451申し訳ない。

単元:プログラミング演習
環境:WindowsXP
言語:Visual C++


課題内容

Q1:30個の整数を乱数により生成し、単純ソートを行うプログラムを作成せよ。

Q2:単純ソート、バブルソート、クイックソートの考え方に基づきソートを行い、結果と
各々のプログラムでデータの交換の回数(上の単純ソートのプログラムではSwapDataを
呼び出した回数)、データの比較の回数(data[i] > data[j]を行った回数 )を表示する
プログラムを作成しなさい。

ポインタからファイル処理の基本までしか分からない状態でして手が出ません。
宜しくお願いします。

463デフォルトの名無しさん:2006/08/03(木) 22:52:36
>>462
いや、読んでないだろお前
464デフォルトの名無しさん:2006/08/03(木) 23:01:23
単純ソートとバブルソートって違うんだっけ?
465デフォルトの名無しさん:2006/08/03(木) 23:03:46
>>462
>>1
それに単純ソートってなんだ?
単純選択ソート、単純選択ソート、単純交換ソートなら聞いたことがあるが
単純ソートというのは聞いたことが無いな
466デフォルトの名無しさん:2006/08/03(木) 23:06:20
>>462
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void swap(int*, int*);

int main(void){
int num[30], i, k;
srand((unsigned int)time(NULL));
for(i=0; i<30; i++){
num[i] = rand();
}
for(i=0; i<29; i++){
for(k=i+1; k<30; k++){
if(num[i] > num[k])swap(&num[i], &num[k]);
}
}
for(i=0; i<30; i++){
printf("%d\n", num[i]);
}
return 0;
}

void swap(int *x, int *y){
int sw;
sw = *x;
*x = *y;
*y = sw;
}
467 ◆jaBq616JlY :2006/08/03(木) 23:07:26
単純ソート:最初に最も小さなデータを順番に探し出して並べること
らしいです。(昇順に並べること)
468デフォルトの名無しさん:2006/08/03(木) 23:17:42
バブルだの
469 ◆jaBq616JlY :2006/08/03(木) 23:22:02
>>466さん ありがとうございます。Q1確認できました。
470デフォルトの名無しさん:2006/08/03(木) 23:52:30
471デフォルトの名無しさん:2006/08/04(金) 04:56:49
#include <stdio.h>

int main(void)
{
float baz[10] = {7.64, 3.26, 6.85, 1.25, 4.18, 5.65, 9.72, 4.17, 5.63, 4.26};
int i, n, sum;
n = 10;
sum = 0.;
for (i = 0; i < n; i++)
{
sum += baz[i];
}
printf("総和は : %7.2f\n", sum);
return 0;
}

コレを実行しても 計算結果のところが0.00って出てしまいます。
どうしたら正しい計算結果が表示されますか?
472デフォルトの名無しさん:2006/08/04(金) 04:58:15
>>471
int sum;
%7.2f
473デフォルトの名無しさん:2006/08/04(金) 05:04:17
>>472
やはり実行結果は0.00になってしまいました・・
小数点以下の計算が出来ないのかなぁ?
474デフォルトの名無しさん:2006/08/04(金) 05:04:46
float sum;
475デフォルトの名無しさん:2006/08/04(金) 05:08:14
>>474
出来ました^^
ありがとです。
476デフォルトの名無しさん:2006/08/04(金) 05:39:13
学期末のラッシュは終わった?
477デフォルトの名無しさん:2006/08/04(金) 05:46:21
夏休みの宿題でデカいの来るんじゃないの?
478デフォルトの名無しさん:2006/08/04(金) 07:11:24
最近面白い問題が少なくてさびしいです。
479デフォルトの名無しさん:2006/08/04(金) 07:12:20
次のラッシュは8月末
480デフォルトの名無しさん:2006/08/04(金) 07:37:13
俺もはよCまでやりたいよぉ〜〜〜〜
481デフォルトの名無しさん:2006/08/04(金) 07:44:17
5人の学生の科目1, 2, 3の成績は表に示す通りである。
 学生    科目1  科目2  科目3  総得点  平均点
  1    62   85   73   *    *
  2    74   70   77   *    *
  3    76   82   65   *    *
  4    54   64   45   *    *
  5    87   90   78   *    *
科目の平均点 *    *    *

 2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。

順調に進んでいた宿題もここで足止め食らってます^^;
宜しくお願いしますです^^
482デフォルトの名無しさん:2006/08/04(金) 07:53:12
5人の学生の科目1, 2, 3の成績は表に示す通りである。
 学生   科目1 科目2 科目3 総得点 平均点
  1    62   85   73   *    *
  2    74   70   77   *    *
  3    76   82   65   *    *
  4    54   64   45   *    *
  5    87   90   78   *    *
科目平均点  *    *    *

 2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
483デフォルトの名無しさん:2006/08/04(金) 07:54:17
5人の学生の科目1, 2, 3の成績は表に示す通りである。
 学生   科目1 科目2 科目3 総得点 平均点
  1    62   85   73   *    *
  2    74   70   77   *    *
  3    76   82   65   *    *
  4    54   64   45   *    *
  5    87   90   78   *    *
科目平均点*   *   *

 2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
484デフォルトの名無しさん:2006/08/04(金) 07:55:04
連スレ申し訳ありません><
宜しくおねがいします^^;
485デフォルトの名無しさん:2006/08/04(金) 07:56:26
5人の学生の科目1, 2, 3の成績は表に示す通りである。
 学生   科目1 科目2 科目3 総得点 平均点
  1    62   85   73   *    *
  2    74   70   77   *    *
  3    76   82   65   *    *
  4    54   64   45   *    *
  5    87   90   78   *    *
科目平均点*   *   *

 2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
486デフォルトの名無しさん:2006/08/04(金) 09:16:38
>>481-485
>>1読んで書き直し
487デフォルトの名無しさん:2006/08/04(金) 09:50:35
はい、次
488デフォルトの名無しさん:2006/08/04(金) 09:54:55
おにゃのこの身体測定の結果を自動的に算出して
なおかつ測定しているときの状況を説明をしてくれるプログラムをおながいします↓
489デフォルトの名無しさん:2006/08/04(金) 10:04:16
>>1読んで書き直せ
490デフォルトの名無しさん:2006/08/04(金) 10:36:18
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
5人の学生の科目1, 2, 3の成績は表に示す通りである。
 学生   科目1 科目2 科目3 総得点 平均点
  1    62   85   73   *    *
  2    74   70   77   *    *
  3    76   82   65   *    *
  4    54   64   45   *    *
  5    87   90   78   *    *
科目平均点*   *    *

 2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語: C言語
[4] 期限:8月7日(月)
[5] その他の制限:while文 for文 配列あたりまで

宜しくお願いします^^
491デフォルトの名無しさん:2006/08/04(金) 10:54:13
>score[0][0]は使っていないことに注意する。
score[5][0]もscore[0][3]も使ってないことに注意したら
気持ち悪くて書けないよ。
492デフォルトの名無しさん:2006/08/04(金) 13:15:08
[1] 授業単元:プログラミング演習

[2] 問題文(含コード&リンク):
2chの任意のスレを複数登録・管理し、有益な情報が投稿されたときのみ通知、
所定のレスを指定して 2ch viewer 等を起動するプログラムをつくれ。

[3] 環境
 [3.1] OS:特になし
 [3.2] コンパイラ名とバージョン:特になし
 [3.3] 言語: C言語

[4] 期限:8月28日(月)

[5] その他の制限:
スレの登録・管理についてはDBを使用しても構いませんし、
単純なテキストファイルでも問題ありません。
viewer のお気に入りと連動出来ると得点うpされます。

「有益な情報」の判定には、コテハン、あぽ〜んリストはもちろん、
自動文脈解析の手法等を用いて流れを嫁れば得点うpされます。

493デフォルトの名無しさん:2006/08/04(金) 13:31:57
>>490
先生はFortran使いですか
494デフォルトの名無しさん:2006/08/04(金) 14:47:46
>>485

int  score[6][4] = {
  { 0,  0,  0,  0, },
  { 0, 62, 85, 73, },
  { 0, 74, 70, 77, },
  { 0, 76, 82, 65, },
  { 0, 54, 64, 45, },
  { 0, 87, 90, 78, },
};
int  i, j, sum;

for( i = 1; i < 6; i++ ){
  sum = 0;
  printf( "%d ", i );
  for( j = 1; j < 4; j++ ){
    printf( "%d ", score[i][j] );
    sum += score[i][j];
  }
  printf( "%d %d\n", sum, sum / 3 );
}

printf( "  " );
for( j = 1; j < 4; j++ ){
  sum = 0;
  for( i = 1; i < 6; i++ ){
    sum += score[i][j];
  }
  printf( "%d ", sum / 5 );
}
495お願いします:2006/08/04(金) 17:40:28
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 0〜99までの数がランダムに代入されているよう素数100個の配列を作成し、
10語とのヒストグラムを表示するプログラムを作れ。==A==の部分を埋めよ。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int source[100];
int i;

srand( (unsigned int)time(NULL) );
for(i=0;i<100;i++)
source[i] = rand()%100;
==A==
}

[3] 環境
 [3.1] 指定なし
 [3.2] 指定なし
 [3.3] 言語: C
[4] 期限: 8月6日まで
[5] その他の制限: 表示例↓
    +====
 0- 9|****
10-19|**
   〜
90-99|******
496デフォルトの名無しさん:2006/08/04(金) 17:42:03
[1] 授業単元:演習C
[2] 問題文(含コード&リンク):
標準入力より入力された逆ポーランド表記の演算式を線形連結リストを
用いて演算するプログラムを作成せよ。

[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: よくわからないです。
 [3.3] 言語: C
[4] 期限: 8月7日まで
[5] その他の制限: 特にないはずです。

お願いします。
497デフォルトの名無しさん:2006/08/04(金) 17:59:15
[1] プログラミング演習
[2] 問題文(含コード&リンク):
aキーを押すと長方形が縮み、音が鳴って元に戻る。それを1つ以上並べる。

┌─┐      ⌒             ┌─┐
│  │ →   ⌒  〜♪   →  │  │
│  │    ┌─┐           │  │
└─┘    └─┘           └─┘
     aキー

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:特になし。
 [3.3] 言語: C言語
[4] 期限: 8月8日(火)まで
[5] その他の制限: 特にないはずです。

宜しくお願いします。
498デフォルトの名無しさん:2006/08/04(金) 18:05:47
何年か前、俺もよくここで答えをレスしていた。
しかし、ずっとプログラムを書いていなかったため
かなり忘れてしまったので、もう答えを書けない。
>>1さんに以前頼んでおいた
499デフォルトの名無しさん:2006/08/04(金) 18:14:25
>>495
int source[100];
int histogram[10];
int i, j;

srand( (unsigned int)time(NULL) );
for(i=0;i<100;i++)  source[i] = rand()%100;

//==A==
for( i = 0; i < 10; i++ )  histogram[i] = 0;
for( i = 0; i < 100; i++ )  histogram[source[i]/10]++;
printf( "  +==============================\n" );
for( i = 0; i < 10; i++ ){
  printf( "%2d-%2d|", i * 10, i * 10 + 9 );
  for( j = 0; j < histogram[i]; j++ ){
    printf( "*" );
  }
  printf( "\n" );
}

こんなんでどうでっしゃろ?
出力時のズレ頑張って直してくれ
500デフォルトの名無しさん:2006/08/04(金) 21:27:48
501デフォルトの名無しさん:2006/08/04(金) 21:33:10
printf("\a");
でビープ音鳴るの普通に知らなかった
502長々とすみまそん:2006/08/04(金) 22:57:33
[1] 授業単元: データ構造
[2] 問題文(含コード&リンク):データ(名前と数字)を任意の数、入力していって
CTRL+Dで入力終了したらLIFOのように後にいれたもん順から出力されるプログラムがある。
データを入力し終わってからある名前を検索したいんだが、それがみつかれば新しいデータをそのデータの次にいれる。
みつからなければその新しいデータを先頭にいれるようにする。

<自分が作ったプログラム>
#include<stdio.h>
#include<malloc.h>
#include <string.h>

struct tfield{
char name[20]; /*名前*/
char tel[20]; /*電話番号*/
struct tfield *pointer; /*次のデータへのポインタ*/
};
struct tfield *talloc(void);

int main(void)
{
struct tfield *head,*p,*q,*r;
char *neim,ter,*word;
head = NULL;

q = talloc();
while(p=talloc(),scanf("%s %s",p->name,p->tel)!=EOF){
p->pointer=head;
head=p;
}
r=talloc();
printf("探索したいデータを入力しなさい\n");
scanf("%s %s",r->name,r->tel);
503長々とすみまそん:2006/08/04(金) 23:01:37
p=head;
while(p!=NULL){
if (strcmp(r->name, p->name)==0){
printf("find %s\n",p->name);
word = p->name;
printf("追加データを入力する");
scanf("%s %s", q->name, q->tel);
q->pointer = p->pointer;
p->pointer = q;
}
p=p->pointer;
}
if(word != r->name){
printf("%s が見つからないので先頭に追加する\n", q->name);
r->pointer = head;
head = r;
}
p=head;/*表示*/
while(p!=NULL){
printf("%15s%15s\n",p->name,p->tel);
p=p->pointer;}
}
struct tfield *talloc(void) /*記憶領域の取得*/
{ return((struct tfield *)malloc(sizeof(struct tfield)));
}
504長々とすみまそん:2006/08/04(金) 23:02:19
<みつからなかったときの出力結果>
aaa 111
bbb 222
ccc 333
ddd 444
探索したいデータを入力しなさい
sfs 342
が見つからないので先頭に追加する
sfs 342
ddd 444
ccc 333
bbb 222
aaa 111
<みつかったときの結果>
aaa 111
bbb 222
ccc 333
ddd 444
探索したいデータを入力しなさい
ccc 333
find ccc
追加データを入力するeee 555
eee が見つからないので先頭に追加する
ccc 333
ddd 444
ccc 333
eee 555
bbb 222
aaa 111
という風にみつかったときもみつからなかったときも「eee が見つからないので
先頭に追加する」の文が出てしまうんですよ。このみつからないのでのif文の部分はどこにおけばうまいこと出力できますかね?
505デフォルトの名無しさん:2006/08/04(金) 23:05:09
>>502-504
できれば丸投げの宿題の方がうれしい
ついでにプログラムやデータは>>1に書いてあるアップローダーを使ってもらうと見やすい
506デフォルトの名無しさん:2006/08/04(金) 23:13:04
おいらは丸投げじゃないほうが好きだぞ。既出すぎる課題のときは特にな。
507長々とすみまそん:2006/08/04(金) 23:14:27
#include<stdio.h>
#include<malloc.h>

struct tfield{
char name[20]; /*名前*/
char tel[20]; /*電話番号*/
struct tfield *pointer; /*次のデータへのポインタ*/
};
struct tfield *talloc(void);

int main(void){
struct tfield *head,*p;
head = NULL;
while(p=talloc(),scanf("%s %s",p->name,p->tel)!=EOF){
p->pointer=head;
head=p; }
p=head;
while(p!=NULL){
printf("%15s%15s\n",p->name,p->tel);
p=p->pointer; }
}
struct tfield *talloc(void) /*記憶領域の取得*/
{
return((struct tfield *)malloc(sizeof(struct tfield)));
}
元のプログラムはこれで,出力結果がこれ
aaa 111
bbb 222
ccc 333
ccc 333
bbb 222
aaa 111
508長々とすみまそん:2006/08/04(金) 23:16:40
変数の型がごちゃごちゃになっててすみません
リンク変数3つもつかってしまって

前判定のループだから、ループの中にはいれるわけにはいかないし
後判定のほうがいいのかなあ
509デフォルトの名無しさん:2006/08/04(金) 23:35:28
型が云々以前に、解説文とソースがごちゃごちゃ書き込まれてて読む気になれない。
簡潔に問題点を書いてくれ。
510デフォルトの名無しさん:2006/08/04(金) 23:43:00
見つかったら何を入れるって? 日本語が怪しいぞ。
511あばよ:2006/08/04(金) 23:46:04
pがさしているリストの中のnameとtelがあるんだが
nameと、入力した語とが一致した場合は
その後に新しくリストにいれたい語をいれる。
一致しなかった場合はリストの先頭に、新しくリストにいれたい語をいれるんだけど

pのループ中に一致する場合の動作は当然ループの中にいれないとだめですけども
一致しなかった場合はループが終わってからループの中に
いれるべきなんですよね?
でもループ終わった後に入れた場合、一致した場合も一致しなかった場合も
どっちも一致しなかった動作をしてしまうことになるんですよ。

この一致しなかった場合の動作のプログラムをどこにいれるか迷ってるんです
512デフォルトの名無しさん:2006/08/04(金) 23:49:06
>pのループ中に一致する場合の動作は当然ループの中にいれないとだめですけども
>一致しなかった場合はループが終わってからループの中に
>いれるべきなんですよね?
>でもループ終わった後に入れた場合、一致した場合も一致しなかった場合も
>どっちも一致しなかった動作をしてしまうことになるんですよ。


日本語がスパゲッティなんですけどwwww
513あばよ:2006/08/04(金) 23:55:28
問題点は

探索したい語が一致しなかった場合の処理を
pのループ中にするのか
終わった後にするのか
これにつきます。
while文だとpがNULLになった瞬間に外にでるので
ループの中に、一致しない処理をいれるわけにはいかない

かといってループの外で処理させると
一致した場合も一致しない場合も処理してしまうんです
514デフォルトの名無しさん:2006/08/04(金) 23:58:53
ループの外で、検索Hitしたかどうかを判定すればいいじゃん。
515デフォルトの名無しさん:2006/08/04(金) 23:59:19
>while文だとpがNULLになった瞬間に外にでるので
p->pointerを見ればいいだけのことじゃね?
516デフォルトの名無しさん:2006/08/05(土) 00:00:14
とりあえず見つからなかったことの判定を if (p == NULL) にしてみたら?
あと混乱してるようだからきれいに書き直したほうがいいね。
517デフォルトの名無しさん:2006/08/05(土) 00:02:22
検索Hitしたら何もせずに break;
で抜けたあとに、pがNULLなら一致なし時の処理、pがNULL出なければ一致ありの処理。
で、いい。
518デフォルトの名無しさん:2006/08/05(土) 00:16:20
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=2544
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 9月23日まで
[5] その他の制限: 特にありません

よろしくお願いします
519デフォルトの名無しさん:2006/08/05(土) 00:19:42
>>518
修正前のソースも晒してね。
520デフォルトの名無しさん:2006/08/05(土) 00:27:36
>>519
すみません、忘れてました。
今、アップしときました。
問題文が長くて申し訳ないです。
521デフォルトの名無しさん:2006/08/05(土) 00:57:16
[1] 授業単元: ソフトウェア演習
[2] 問題文(含コード&リンク):
以下要求仕様に従って「家計簿アプリケーション」を作成せよ。

要求仕様
●UNIXの環境上で動作し、主開発言語としてC言語を用いる。
●1レコード中に 商品名、商品を買った日付、価格、分類の各項目を持つ。分類とは 食費、光熱費、
 学費、交通費、レクレーション等の項目を表す。
●家計簿として以下の機能を有する。
  ― 週間 及び 月間の予算が入力できる。
  ― 買った商品のデータを追加保存、読み出しができる。
  ― 誤って入力したデータの任意の項目に対して、修正が可能である。
  ― あらかじめ設定されている分類項目の他に、新たな分類項目を追加、削除できる。
  ― レコード内の任意の項目をキーとして検索、ソート(昇順、降順)が可能である。
  ― 週間及び 月間の支出について、分類毎に集計できる。
  ― 週間 及び 月間の 予算残額等を表示できる。
  ― 以上の機能を任意に選択し、実行できる。
●上記の機能に対して、創意工夫がなされている。もしくは、新たに機能を追加してある。(機能拡張)


[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C言語
[4] 期限: 8月8日まで
[5] その他の制限: 特に無いと思います。

丸投げですがよろしくお願いします
522デフォルトの名無しさん:2006/08/05(土) 01:15:23
(1) 授業単元:プログラム演習
(2) 問題文
2〜10,000までの完全数をすべて求めて出力するプログラムを作成せよ。
完全数とは自分自身を除く約数の和がその数に等しいもので
たとえば6は自分自身を除いた約数の和が1+2+3=6で完全数。

(3) 条件:C言語でお願いします
(4) 期限:8月6日夕方まで
(5) その他とくになし
523デフォルトの名無しさん:2006/08/05(土) 02:01:56
>>522
#include<stdio.h>
int main(){int i,j,sum;
for(i=2;i<=10000;i++){sum=0;
for(j=1;j<i;j++)if(i%j==0)sum+=j;
if(sum==i)printf("%d ",i);}
return 0;}

なんか効率が悪そうだけど反省してない。
524デフォルトの名無しさん:2006/08/05(土) 02:47:06
>>150
MAX_INT か INT_MAX じゃない?
525デフォルトの名無しさん:2006/08/05(土) 02:51:18
526デフォルトの名無しさん:2006/08/05(土) 03:19:59
527デフォルトの名無しさん:2006/08/05(土) 07:31:19
528527:2006/08/05(土) 07:49:10
無駄にループしてるのがきにくわなかったので更新。2549でも問題ないけど。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2550.c
529デフォルトの名無しさん:2006/08/05(土) 09:23:50
>>527
>>528
どうもありがとうございましたm(__)m
530デフォルトの名無しさん:2006/08/05(土) 10:30:18
[1] 授業単元: プログラムC言語
[2] 問題文(含コード&リンク):
2つの分数の値を入力し、入力された分数の四則演算を行うプログラムを
関数を用いて作れ。分数は分母分子を分けて入力し、出力も計算結果の分数がわかるように出力。
[3] 環境
 [3.1] OS: 指定なし
 [3.2] コンパイラ名とバージョン: 指定なし
 [3.3] 言語: C
[4] 期限: 8/7
[5] その他の制限: 授業テーマは「関数」 です。

よろしくお願いします。
531デフォルトの名無しさん:2006/08/05(土) 13:59:47
>>501
俺らのところじゃ"\7\7\7 "とかやたらと書いてたなw
(\a〜=\7)
532デフォルトの名無しさん:2006/08/05(土) 14:09:04
>(\a〜=\7)
いいえ。それはたまたまASCIIのときに成立するだけです。
533デフォルトの名無しさん:2006/08/05(土) 15:06:17
日下部スレかとおもた
534デフォルトの名無しさん:2006/08/05(土) 15:17:22
535デフォルトの名無しさん:2006/08/05(土) 15:31:33
536デフォルトの名無しさん:2006/08/05(土) 15:48:13
sub $1,$2

(゚д゚ )
537デフォルトの名無しさん:2006/08/05(土) 18:46:01
[1] 授業単元: プログラミング演習
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2558.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:8/7

どうかお願い致します。
538デフォルトの名無しさん:2006/08/05(土) 18:53:28
うpろーだに上げるほどの問題かよ
539デフォルトの名無しさん:2006/08/05(土) 20:09:02
じゃあ、サクっと答えてやれ
540デフォルトの名無しさん:2006/08/05(土) 20:54:03
>>537
交換法則や結合法則で互いに変形できる解も個別にカウントする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2559.c
541540:2006/08/05(土) 20:59:59
ごめん、数え漏れがあった。
542540:2006/08/05(土) 21:47:40
543デフォルトの名無しさん:2006/08/05(土) 22:14:22
>>542
ありがとうございます!
544デフォルトの名無しさん:2006/08/05(土) 22:30:48
[1] 授業単元: プログラミング演習C言語(関数)
[2] 問題文:ふたつの整数a,bの最大公約数をgcd(a,b)とする。
gcd(a,b) = {
 ・a= (b=0)
 ・gcd(b, a mod b) (b>0)
である。これを利用し、2数の最大公約数と最小公倍数の両方を求める
プログラムを関数を用いて作成せよ。
[3] 環境
 [3.1] OS: 指定無し
 [3.2] コンパイラ名とバージョン: 指定無し
 [3.3] 言語: C
[4] 期限:8月7日

545デフォルトの名無しさん:2006/08/05(土) 22:32:24
[1] 授業単元: プログラミング演習C言語(関数)
[2] 問題文:
mとnを引数とし、m個のものからn個のものを選ぶ組み合わせ mCnを求める
プログラムを関数を用いて作成せよ。このプログラムを再起を用いた場合
と用いない場合の両方を作成しそれぞれの特徴について考察せよ。

※参考
・mCn = m! / n!(m-n)! (直接計算)
・mCn = m-1Cn + m-1Cn-1 , mC0 = mCm = 1 (漸化式を用いた式)
[3] 環境
 [3.1] OS: 指定無し
 [3.2] コンパイラ名とバージョン: 指定無し
 [3.3] 言語: C
[4] 期限:8月7日

2つ続けてレスさせてもらいました。どうかおねがいします。


546デフォルトの名無しさん:2006/08/05(土) 22:44:51
>>545
#include<stdio.h>

int main(void){
int m, n, num1=1, num2=1, i;
printf("m?:"); scanf("%d", &m);
printf("n?:"); scanf("%d", &n);
for(i=1; i<=m; i++){
num1 *= i;
}
for(i=1; i<=n; i++){
num2 *= i;
}
for(i=1; i<=m-n; i++){
num2 *= i;
}
printf("%dC%d = %d\n", m, n, num1/num2);
return 0;
}
547デフォルトの名無しさん:2006/08/05(土) 22:47:57
>>545
#include<stdio.h>

int func(int m, int n);

int main(void){
int m, n;
printf("m?:"); scanf("%d", &m);
printf("n?:"); scanf("%d", &n);
printf("%dC%d = %d\n", m, n, func(m, n));
return 0;
}

int func(int m, int n){
if(m==n || n==0)return 1;
return func(m-1, n) + func(m-1, n-1);
}
548デフォルトの名無しさん:2006/08/05(土) 22:48:42
>>544
式の意味がよくわからない
549デフォルトの名無しさん:2006/08/05(土) 23:03:08
>>544
#include<stdio.h>
int gcd(int a, int b){
int t;
if(b==0) return a;
if(b>0) return gcd(b,a%b);
}

int lcm(int a, int b){
return a*b/gcd(a,b);
}

int main(){
int a=17,b=11;
printf("gcd(%d,%d)=%d\n",a,b,gcd(a,b));
printf("lcm(%d,%d)=%d\n",a,b,lcm(a,b));
return 0;
}
テキトー 検算よろ
550デフォルトの名無しさん:2006/08/05(土) 23:03:14
>>548
>ふたつの整数a,bの最大公約数をgcd(a,b)とすると、
>                            ~~~~~
>        ・a= (b=0のとき)
>gcd(a,b) = {
>        ・gcd(b, a mod b) (b>0のとき)
>
>である。

です。書き方がまずかったですかね・・・すいませんm(_ _)m
551デフォルトの名無しさん:2006/08/05(土) 23:10:25
>>549のgcdは
int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}
これで平気みたい?つかtとかどこにも使ってねえよ
552デフォルトの名無しさん:2006/08/06(日) 02:47:51
[1] 授業単元: プログラミング実習
[2] 問題文:

整数 m と n をキーボードから入力し、
m <= n の場合は m から n までの和を出力し、
新たに m n の入力を促し上記動作を繰り返す。
m > n の場合はエラーを表示して終了する。

[3] 環境
 [3.1] OS: 特になし
 [3.2] コンパイラ名とバージョン: 特になし
 [3.3] 言語: C
[4] 期限:8月8日

よろしくお願いします。
553デフォルトの名無しさん:2006/08/06(日) 02:57:35
>>552
#include<stdio.h>

int main(void){
int m, n, sum, i;
while(1){
printf("m:"); scanf("%d", &m);
printf("n:"); scanf("%d", &n);
if(m > n){
puts("ERROR!");
break;
}
sum = 0; i = m;
while(i <= n){
sum += i;
i++;
}
printf("%d〜%dの和:%d\n", m, n, sum);
}
return 0;
}
554デフォルトの名無しさん:2006/08/06(日) 03:01:34
>>552
既に回答でてるが>>553より高速な事が自慢だ

#include<stdio.h>

int main(void){
int m, n;
while(1){
printf("m:"); scanf("%d", &m);
printf("n:"); scanf("%d", &n);
if(m > n){
puts("( ^ω^)=3プッ");
break;
}

printf("%d〜%dの和:%d\n", m, n, (m+n)*(n-m+1)/2);
}
return 0;
}
555デフォルトの名無しさん:2006/08/06(日) 03:02:36
あ〜確かに・・・そんな式あったね中学の頃
忘れてた
556デフォルトの名無しさん:2006/08/06(日) 03:26:15
>>554を俺なりに改造してみたのが自己満足だ
printf("%d〜%dの和:%d\n", m, n, ((n*(n+1))/2) - (((m-1)*(m)) /2));
原理は1〜nまでの和が n(n+1)/2 で表せて、その式をつかって
1〜m-1までの和を求めて引いてみた
557デフォルトの名無しさん:2006/08/06(日) 03:28:10
プ
558デフォルトの名無しさん:2006/08/06(日) 05:23:56
うわっ、くせっ。誰だよ、屁をこいた香具師は?
559デフォルトの名無しさん:2006/08/06(日) 05:31:59
オ、オレじゃないぞっ!
560デフォルトの名無しさん:2006/08/06(日) 07:11:38
っつか等差数列の和の公式、初項a、公差d、末項l、項数nにおいて
Sn = n/2(a+l) = n/2{2a+(n-1)d}を使うとか
561デフォルトの名無しさん:2006/08/06(日) 07:49:28
>>560
それを使ったのが >>554 では?
562デフォルトの名無しさん:2006/08/06(日) 09:45:18
まぁ安全性から言うと >>553 の方が上なんですけどね
563デフォルトの名無しさん:2006/08/06(日) 10:17:19
Cスレはいつも低レベルですね
564デフォルトの名無しさん:2006/08/06(日) 10:23:35
だいたい、問題の条件が公式を使うのか、順に計算をさせていくやり方でやるのか
明白に書いてないから、可能な手段でソースが出されて当然
自分の基準でレベルを決めている奴は論外
そいつ自身が知っていることだけでレベルを判断するからますます基準が曖昧
565デフォルトの名無しさん:2006/08/06(日) 13:42:39
出題者の意図を推測すれば、十中八九 ループ+足し上げ を期待しているだろうな。
単なる式だけじゃプログラミングの演習としての価値は低いし、
中学校卒業してりゃ三角形の面積の公式なんぞ知らない訳がない。

でもまあ、問題文に特に明記されているわけでもないから、出題者も多少の例外は承知してるんだろ。
結論:好きに書け。

>>562
詳しく。
566デフォルトの名無しさん:2006/08/06(日) 14:03:45
/*
演習3−5
*/

#include <stdio.h>

int main(void)
{
int n1, n2, n3, min;

puts("三つの整数を入力してください:");
printf("整数1:");scanf("%d", &n1);
printf("整数2:");scanf("%d", &n2);
printf("整数3:");scanf("%d", &n3);


min = n1;
if (min > n2) min = n2;
if (min > n3) min = n3;

printf("最小値は%dです。\n", min);

return(0);
}


これをif文ではなく、条件演算子を用いて書き換えるのが分かりません。
助け舟を出していただきたいです。 お願いします。
567デフォルトの名無しさん:2006/08/06(日) 14:08:51
>>566
序受け演算子って?のことか?
568デフォルトの名無しさん:2006/08/06(日) 14:11:44
#include <stdio.h>

int main(void)
{
int n1, n2, n3, min;

puts("三つの整数を入力してください:");
printf("整数1:");scanf("%d", &n1);
printf("整数2:");scanf("%d", &n2);
printf("整数3:");scanf("%d", &n3);


//min = n1;
//if (min > n2) min = n2;
//if (min > n3) min = n3;
min = n1 > n2 ? n2: n1;
min = min > n3 ? n3 : min;

printf("最小値は%dです。\n", min);
return(0);
}
569デフォルトの名無しさん:2006/08/06(日) 14:20:53
>>567
序受け演算子って単語がまだ分かりません。 ごめんなさい

>>568
そういうことでしたか。  勉強しなおしてきます。
どうも、ありがとうございました。
570デフォルトの名無しさん:2006/08/06(日) 14:22:01
条件演算子を打ち間違えただけorz
571デフォルトの名無しさん:2006/08/06(日) 14:35:36
//そうか、Cでも使えるんだね。。てっきりjavaだけかとおもたよ(?:)
572デフォルトの名無しさん:2006/08/06(日) 14:52:55
歴史が違うわ!小僧が!
573デフォルトの名無しさん:2006/08/06(日) 15:01:50
javaがパク(ry
574562:2006/08/06(日) 15:10:43
答えてもいいが
puts("( ^ω^)=3プッ");
が気に入らん
575デフォルトの名無しさん:2006/08/06(日) 17:42:44
>>565

>>562 じゃないけど (m+n)*(n-m+1)/2 の場合は
分子の (m+n)*(n-m+1) 部分が int の max を
超えてオーバーフローする可能性がループで
単純に足しこむ場合に比べて高いからってことでは
576 ◆oBVIHc0QSg :2006/08/06(日) 19:21:11
【質問テンプレ】
[1] 授業単元: アナグラム 擬似英文
[2] 問題文(含コード&リンク): 以下3つから一つ選べ(難易度はA<B<C)
A mss 長さn(n>=1)の整数列a0,a1,,,,,an-1が与えられたとき
その部分列の和で最小のものを求める問題
(部分列の和 a1+a2+,,,aj(0=<j<n)
例、-8+3+-65+20+10→-8+3+-65)
B /usr/share/dict/wordsの単語で構成されるアナグラムの数を数えるプログラム
を作成せよ(関数だけでなく結果も出せるようにする)
(大文字と小文字は区別しない。アナグラムの数とは互いにアナグラム
になっている単語の集合の個数とする)
C擬似英文。擬似英文をランダムに生成するプログラムを作成せよ。
(マルコフ鎖を利用するとよい。統計データは実際の英文を利用すること。
擬似英文とは実際のウィ文における単語のつながりかたの統計に
もとずいて英単語をもっともらしくならべたものである。)
[3] 環境 UNIX
 
[4] 期限:明日5時
どれか一つでよいということです。よろしくお願いします
577 ◆oBVIHc0QSg :2006/08/06(日) 19:25:16
すみません Aの問題について少し書き間違いをしました・・
もう一つの例では
-31 41 -59 -26 53 -58 -97 93 23 -84
→-59+-26+53+-58+-97
となります 
部分列の和とは ai+a(i+1)+....+aj(0=<i=<j<n)
でした a0から始まる決まりはありますせん
578デフォルトの名無しさん:2006/08/06(日) 22:00:54
>>576
Aの回答
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2561.txt

俺も初心者だからみんなどんどんツッコミいれてくれるとありがたい

規制の巻き込みうぜー
579デフォルトの名無しさん:2006/08/06(日) 22:29:30
俺もA
#include <stdio.h>
int main(){
int a[] = {-1,-3,8,-4,-7,3,-5,3,2,-4,5,7};
int L, R, sum = 0, min, minL, minR;
sum = minL = minR = 0; min = a[0];
for(L = 0; L < sizeof(a)/sizeof(a[0])-1; L++){
for(R = L; R < sizeof(a)/sizeof(a[0]); R++){
if((sum += a[R]) < min){
min = sum; minL = L; minR = R;
}
}
sum -= a[L];
}
printf("ans : L=%d, R=%d, sum=%d\n", minL, minR, min);
return 0;
}
580579:2006/08/06(日) 22:31:28
sumクリアし忘れた。コレジャダメダ。
581デフォルトの名無しさん:2006/08/06(日) 23:45:12
>>576
回答が欲しいなら、B/Cについては
・/usr/share/dict/words
・統計データ作成に用いる英文

この2つを用意するべきだと思うがどうか
582デフォルトの名無しさん:2006/08/06(日) 23:54:38
A. 最小の部分和の問題。

relmin(int *a, int n, int *off, int *end) {
 int min = a[0], sum = 0, cur = 0, i;
 *off = *end = 0;
 for(i=0; i < n; i++) {
  sum += a[i];
  if(min > sum) { min = sum; *off = cur; *end = i; }
  if(sum >= 0) { cur = i+1; sum = 0; }}}

void main() {
 int S[] = {21,-8,-4,67,-9,8,-18,2,64};
 int m1, m2;
 relmin(S, sizeof(S) / sizeof(*S), &m1, &m2);
 printf("区間 [%d, %d] で(゚听)Mi(b^-゜)n", m1, m2);
}
583デフォルトの名無しさん:2006/08/07(月) 00:34:04
う〜〜む、そろそろうpロダを使ってやりとりしてくれい
ちょっとスレがごちゃごちゃし始めてる
584デフォルトの名無しさん:2006/08/07(月) 00:51:27
>>581
どちらも質問者に聞くのは酷というものだ
585 ◆oBVIHc0QSg :2006/08/07(月) 01:29:46
どうもありがとうございました!!
早速移させてもらいます!
>>581問題文はこれで全てなのでわかりません。。
586582:2006/08/07(月) 01:58:38
あちゃー、合計表示させるの忘れてた。もし使うなら直しといて。
暇がとれたのでBもやってみた。Cは難しい。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2562.c
587デフォルトの名無しさん:2006/08/07(月) 02:21:52
>>586
質問者でもなんでもないんですが、興味があってコンパイルしてみて、
abc
bca
bbb
cdab
cbaa
というデータを与えてみたところ4になりました。
これ、2が正解じゃないんでしょうか?(そもそも「アナグラムの数」ってのが良くわからないんですが・・・)
588デフォルトの名無しさん:2006/08/07(月) 02:23:20
あ、集合の個数か・・・。
だとしたら、1が正解だと思うんですが。
589586:2006/08/07(月) 02:34:01
>>587
とりあえず俺はこれに従って作ったよ。
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%8A%E3%82%B0%E3%83%A9%E3%83%A0

同じ文字で構成された文字列、のことじゃないの?
abc -> abc
bca -> abc
bbb -> bbb
cdab -> abcd
cbaa -> aabc

とソートしてみて、重複(互いにアナグラム)は(abc, bca)だけだから、4が答え。違うかな???
590デフォルトの名無しさん:2006/08/07(月) 02:41:41
>>589
コード読まずにごめんね。

>とソートしてみて、重複(互いにアナグラム)は(abc, bca)だけだから、4が答え。違うかな???

うん、そう。だから答えは1じゃないかなって。
bbb, cdab, cbaaはアナグラムなし。
591デフォルトの名無しさん:2006/08/07(月) 02:43:35
ちなみに手持ちの辞書でやってみたら、以下のようになってビビッたので、小さいデータで試してみたんです。

アナグラムの数は 105809 だよ〜っっ!(b^-゜)
real 0m1.224s
user 0m1.170s
sys 0m0.078s
592589:2006/08/07(月) 02:49:16
俺はまず、C言語より日本語勉強した方がいいな…。

>>590
その通りでした。ご指摘サンクスです。
再うp
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2566.c
593SDL:2006/08/07(月) 02:50:01
[1] SDLでのゲーム作成
[2] SDLでトランプゲームのスピードを作成。対コンピュータ対戦。
スピードのルール
  http://www.page.sannet.ne.jp/mikotan/cardgame/spead.htm
  作成したCプログラムとヘッダファイル
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2565.txt
  先生が作ったトランプ用Cプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2564.txt

[3] 環境
 [3.1] OS: WindowsXPでCygwinを使用
 [3.2] gcc SDL
 [3.3] 言語:C
[4] 期限:8/8
[5] その他の制限: 特になし

関連のサイトを参考にしたりして作成してみました。
作成したプログラムとヘッダと先生が作ったプログラムを合わせて
コンパイルしています。エラーメッセージは出てません。
ゲームが始まって、山札をシャッフルし、手札や場札を置いて
どんどんゲームは進めていけるのですが、ある程度ゲームが進むと
必ずゲーム途中でエラーが起こり画面が消えて終了してしまいます。
わかりにくい説明で申し訳ないですが、いくら考えても
原因が分からないので教えてください。お願いします。
594デフォルトの名無しさん:2006/08/07(月) 02:56:26
>>592
乙です。手持ちの辞書でも(多分)正しい値になりました。

アナグラムの数は 44597 だよ〜っっ!(b^-゜)
real 0m1.239s
user 0m1.186s
sys 0m0.046s

なぜこんなに爆速でチェックできるのか、ゆっくりとコードを見させていただきます。
595デフォルトの名無しさん:2006/08/07(月) 03:37:35
>>593
もうちょっとヒントくれないときついな。bmpファイル含めて全部晒すかgdbの出力晒すかしてくんなきゃ。
596デフォルトの名無しさん :2006/08/07(月) 04:25:43
少し変わった問題になりますが、いいでしょうか?
1)以下の連結リストに関するプログラムを処理内容はそのままで「新規入力データの連結リストへの挿入」に関する処理の効率が向上するよう改善したい。
  プログラムのどの部分をどのように変更すればよいか。(必要に応じて新たな変数を定義してよい)

2)同様に、「新しく入力されたデータを連結リストの変更に加える(挿入する)」ように修正したい時、(以下同文)
597デフォルトの名無しさん :2006/08/07(月) 04:26:14
static struct list head;

void display_data(){
struct list *p
p=head.next;

while(p!=NULL){
printf("%3d →”,p->score);
p=p->next;
}
printf("\n");
}
void add_data(){
struct list *new_p,*p,*q;

new_p=(struct list *)malloc(sizeof(struct list));
printf("データー"); scanf("%d",&new_p->score);
new_p->next=NULL;

q=&head; p=q->next;
while(p!=NULL){
q=p;
p=p->next;
}

q->next=new_p;
}
598デフォルトの名無しさん :2006/08/07(月) 04:28:02
void main(void){
int flag;
head.next=NULL;

while(1){
printf("新しくデータを入力しますか?(1:はい、0:いいえ\n");scanf("%d",&flag);
if(flag==0)break;

add_data();
}
printf("データの一覧を表示します\n");
display_data();
}



プログラム最上部に以下の文が抜けてました。
#include<stdio.h>
#include<stlib.h>

struct list{
int score;
struct list *next;
};
599デフォルトの名無しさん:2006/08/07(月) 04:33:58
最後尾にあるデータを指すポインタを付け加えればいいだろ。
600デフォルトの名無しさん:2006/08/07(月) 04:34:28
おい皆聞いたか!?日本Microsoftがニートの為に新しく開発環境を出すんだと!!
その名も "Visual Studio .NEET 2007"
Vistaには .NEET Framework v1.0が組み込まれるらしい。。
601デフォルトの名無しさん:2006/08/07(月) 04:36:45
激しくつまんねから、次の宿題丸投げの人どうぞ
602デフォルトの名無しさん:2006/08/07(月) 04:36:52
いいから寝ろ
603デフォルトの名無しさん:2006/08/07(月) 04:40:05
こんな時間からしょうもない
604SDL 593:2006/08/07(月) 04:49:22
>>595
GDBを知らなくて調べてみたんですが、通常のプログラムは分かるんですが、
gcc -o speed speed.c trump2.c `sdl-config --cflags --libs`
こんな感じでSDLで2つのファイルをコンパイルしてるんですが
こういう場合ってどうやってGDBを使えばいいんですか?
重ねて質問して申し訳ないですが・・。

画面イメージは↓こんな感じで
http://www2.spline.tv/bbs/marujyuu/grpview.php/6757.1154893123.jpg
手札は左からz,x,c,vキー、場札は左から←,→キーで
手札と場札のキーを同時に押してカードを出します。
605デフォルトの名無しさん:2006/08/07(月) 04:49:56
>>593
既に書かれてるがコンパイルして実行できる完全な形で一式上げるか
デバッガの出力書くべきだな
ライブラリ使ってるから、ライブラリの使い方を間違ってのエラーなのか
そもそもライブラリと全く関係ない所でとちってるのかも切り分けないとダメだしな
606デフォルトの名無しさん:2006/08/07(月) 05:20:50
>>604
コマンドに-gをプラスで
gdbの使い方はぐぐればマニュアル見つかるのでその辺から
607デフォルトの名無しさん:2006/08/07(月) 06:16:34
アニメから映画、ゲーム実況まで何でもある
みんなでvip実況スレを盛り上げよう

ニュー速VIP
ttp://ex16.2ch.net/news4vip/

FF4→5→6 リレー実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154895492/
ゲームセンターCX ttp://ex16.2ch.net/test/read.cgi/news4vip/1154888213/
エロゲ実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154839702/
おまいらが指定したゲーム実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154896516/
RPG実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154857556/
女神転生とかを実況  ttp://ex16.2ch.net/test/read.cgi/news4vip/1154776872/
実況!アニメ流すぜ!3本目 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154877307/
【東方】弾幕実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154852500/
ファミコンジャンプ実況スレ ttp://ex16.2ch.net/test/read.cgi/news4vip/1154878214/
エロゲ実況すればいいじゃねーか ttp://ex16.2ch.net/test/read.cgi/news4vip/1154885750/
大神実況してみる その4ttp://ex16.2ch.net/test/read.cgi/news4vip/1154880537/
ICO実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154896258/
好きなゲームを実況するスレ ttp://ex16.2ch.net/test/read.cgi/news4vip/1154861584/
ToHeart2系実況ttp://ex16.2ch.net/test/read.cgi/news4vip/1154774247/
かまいたちの夜x3を実況してみるttp://ex16.2ch.net/test/read.cgi/news4vip/1154863755/
映画実況するのかも ttp://ex16.2ch.net/test/read.cgi/news4vip/1154895107/
FF4→5→6→7 リレー実況  ttp://ex16.2ch.net/test/read.cgi/news4vip/1154898127/
608デフォルトの名無しさん:2006/08/07(月) 07:02:43
とんでもない誤爆はさておき、次の方どうぞ
609デフォルトの名無しさん:2006/08/07(月) 07:34:39
>>576
○○大掲示板に晒しておきました。
610SDL 593:2006/08/07(月) 08:24:03
>>595 >>605 >>606
3つのファイル合体させてgdbやってみました。
Program received signal SIGSEGV, Segmentation fault.
0x00401a80 in draw_trump (trump1=0x407740) at g.c:352
352 trump[index].x = trump1->x;
(gdb)
こうなりました。先生の作ったトランプ用プログラムのなかの
draw_trump関数のtrump[index].x = trump1->x;でセグメントエラーがでてるみたいです。
途中までは普通に動作するのになぜ急にここで引っかかっちゃうんでしょうか?
611デフォルトの名無しさん:2006/08/07(月) 09:15:02
カンだけど手札が4枚未満になったときの描画じゃないかな。
trump1->suiteかnumberが-1になってるとか。gdbで where でトレースみれるのと
あと p だか print だか忘れたけど変数値が表示できるはず。がんがれ。
612デフォルトの名無しさん:2006/08/07(月) 09:16:32
index = (trump1->card->suit-1)*13 + (trump1->card->number-1);/*1次元配列への変換*/
/*printf("%d %d %d\n",index,trump1->card->suite,trump1->card->number);*/


ここの printf の結果は見た?
613デフォルトの名無しさん:2006/08/07(月) 12:06:53
>>576
Aはプログラムを作れという問題ではなく、講義で
説明したプログラムについて説明しろという問題だよ。
614デフォルトの名無しさん:2006/08/07(月) 14:50:57
意味分からん
615SDL 593:2006/08/07(月) 19:05:08
>>611 >>612
まさしくそこでした!
GDBで変数表示してみたら、4枚未満になったときに-1になってたので
とりあえずdraw_trump関数にif(trump1->card->number == -1) { return; }
を入れてみたら最後までゲームを進めることができました。
簡単なことなのに全然思いつかなかったな〜。
ありがとうございます。
616デフォルトの名無しさん:2006/08/07(月) 21:00:29
int型の変数a,bの値がそれぞれ176、36のとき、式a│bの値は何か?
教えてください!
617デフォルトの名無しさん:2006/08/07(月) 21:03:06
自分で確かめろ!
618デフォルトの名無しさん:2006/08/07(月) 21:07:14
>>616
アクセサリの電卓使え
619デフォルトの名無しさん:2006/08/07(月) 21:09:58
やりかたがわかりません。。解き方だけでもお願いします
620デフォルトの名無しさん:2006/08/07(月) 21:13:14
>>619
スタート→プログラム→アクセサリ→電卓
表示から関数電卓にチェックを付けてあとは計算
621デフォルトの名無しさん:2006/08/07(月) 21:13:43
1
622デフォルトの名無しさん:2006/08/07(月) 21:22:39
2
623デフォルトの名無しさん:2006/08/07(月) 21:46:28
>>616
そんなのも解らないやつはプロ1(E)の単位は取れなくても仕方ないよね。
624デフォルトの名無しさん:2006/08/07(月) 22:52:20
10110000
00100100

10110100
625デフォルトの名無しさん:2006/08/07(月) 23:04:56
>>616
http://www.atmarkit.co.jp/icd/root/76/72584476.html
↑ここみたらOR演算についてわかると思う。
それから>>624みたらわかるんでない。
626デフォルトの名無しさん:2006/08/08(火) 00:13:23
| が or だと分からなかったとか・・?

ごめんなんでもない・・
627デフォルトの名無しさん:2006/08/08(火) 03:24:03
はじめまして。
プログラミング超初心者です。
こんなプログラムが作りたいのですがどなたかヒントをください。
バイナリーファイルのデータを取り込み、データの16進数を10進数にして
テキストに書き出したいのです。

バイナリーデータを取り込み、バイナリーファイルのままで書き出す
ことはできましたが、どうしてもテキスト形式になりません。

if ((fd = open(argv[1], O_RDONLY|O_BINARY)) < 0) {
printf("not found :%s\n",argv[1]);
return -1;

この記述はおかしいでしょうか?
628デフォルトの名無しさん:2006/08/08(火) 03:31:52
スレタイが読めない時点で頭の方がおかしい
629デフォルトの名無しさん:2006/08/08(火) 03:35:11
>>627
あまり質問スレ化は歓迎しないのだが、課題の助言ほしいってのなら>>1に沿ってな
あとコードは全部提示、部分的に出すとロクなことにならん
630デフォルトの名無しさん:2006/08/08(火) 03:47:41
というかfreadしたら(ry
631デフォルトの名無しさん:2006/08/08(火) 11:31:03
[1] プログラミング

[2] それぞれ1024個の時間データtaとyaデータのアレイ(配列) を用意する。
  周波数f=2.0Hzとすると、1秒間に2回振動を繰り返す。
  サンプリング間隔△t=1/1024のとき、1秒間に1024個のデータがとれる。(つまり、1Hzを512個サンプリング)
  時間変動データ:  ya=sin(2πft);  t=i*△t
  各自周波数fとサンプリング間隔△tを決め、時系列データを計算し、ファイルに納め、終了したのち、Excelを開いて描画しなさい。

[3] 環境
 [3.1] WindowsXP
 [3.2]
 [3.3] C++
[4] 9/1まで
[5] 特にありません

C言語初心者で、全く分かりません。
宜しくお願いします。
632デフォルトの名無しさん:2006/08/08(火) 12:18:52
cなのかc++なのか…
633デフォルトの名無しさん:2006/08/08(火) 13:21:56
>>631
確保したtaは放置プレイ?
Excelを開いて描画するところまでプログラミングさせる問題ではないよね?

#include <fstream>
#include <math>
using namespace std;
int main() {
double const f = 2.0; // 周波数
double const dt = 1.0 / 1024.0; // サンプリング間隔
char const filename[] = "sin.dat"; // ファイル名
int const BUFSIZE = 1024;
double ta[BUFSIZE], ya[BUFSIZE];
for (int i = 0; i < BUFSIZE; i++) {
double t = i * dt;
ya[i] = sin(2.0 * M_PI * f * t);
}
fstream fs(filename, ios::out);
if(fs.fail()) return 1;
for (int i = 0; i < BUFSIZE; i++) {
fs << ya[i] << endl;
}
fs.close();
return 0;
}
634633:2006/08/08(火) 13:24:50
ごめん、時間も出力したほうがExcelで書きやすいよね

#include <fstream>
#include <math>
using namespace std;
int main() {
double const f = 2.0; // 周波数
double const dt = 1.0 / 1024.0; // サンプリング間隔
char const filename[] = "sin.csv"; // ファイル名
int const BUFSIZE = 1024;
double ta[BUFSIZE], ya[BUFSIZE];
for (int i = 0; i < BUFSIZE; i++) {
double t = i * dt;
ya[i] = sin(2.0 * M_PI * f * t);
}
fstream fs(filename, ios::out);
if(fs.fail()) return 1;
for (int i = 0; i < BUFSIZE; i++) {
double t = i * dt;
fs << t << "," << ya[i] << endl;
}
fs.close();
return 0;
}
635633:2006/08/08(火) 13:33:46
もしかしてtaって時間の配列なのかな?もしそうなら、
一つ目のfor文の中の
double t = i * dt;
ya[i] = sin(2.0 * M_PI * f * t);

ta[i] = i * dt;
ya[i] = sin(2.0 * M_PI * f * ta[i]);
にして、
二つ目のfor文の中の
double t = i * dt;
を削除して、
fs << t << "," << ya[i] << endl;

fs << ta[i] << "," << ya[i] << endl;
に修正。
636デフォルトの名無しさん:2006/08/08(火) 14:05:24
637631:2006/08/08(火) 17:53:54
>>633
>>634
>>635
>>636
皆さん、どうもありがとうございました。
本当に助かりました。
638638:2006/08/08(火) 18:07:58
礼には及ばん。
639デフォルトの名無しさん:2006/08/08(火) 22:00:05
確かこの辺に自己レスして自己満足してる人がいたと思ったんですが・・・はて、どこかな?
640デフォルトの名無しさん:2006/08/08(火) 22:44:44
[1] プログラミング演習
[2] 100円から100円刻みの価格の商品を扱っている店で1000円札、500円玉、100円玉を使い
  おつりのないように、商品を買う。使用できるコイン(100円玉、500円玉)の合計枚数が
  何枚以下と制限されているときに、商品の値段とコインの制限枚数、を入力して可能な支払い方法を
  すべて出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: 指定無し
 [3.2] コンパイラ名とバージョン: 指定無し
 [3.3] 言語: C
[4] 期限: 8月9日水曜日いっぱい
[5] その他の制限: ループ文を使う

よろしくお願いします
641デフォルトの名無しさん:2006/08/08(火) 23:10:26
1000円はいくらでも使える?
642デフォルトの名無しさん:2006/08/08(火) 23:15:35
>>641
1000円札はお札でコインではないって意味だとおもいますので、OKかと。
643デフォルトの名無しさん:2006/08/08(火) 23:37:10
[1] 授業単元:気象学特論
[2] 16進数のバイナリーデータ(240×240)を10進数(240×240)に直し、
txtまたはcsv形式にするプログラムを書きなさい。
また、読み込むバイナリーデータのファイルが10個あるとし、それらを
一度に処理できるプログラムに書き換えなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ指定なし
 [3.3] 言語:C言語を使用
[4] 期限:2006年8月12日までに、メールに添付ファイルで提出
[5] その他の制限:なし

どうしたらいいのか。。よろしくお願いいたします。
644デフォルトの名無しさん:2006/08/08(火) 23:41:06
>>643
バイナリデータの形式くやしく
1byteのが240*240なのか、4byteのが詰まってるのかとか
645デフォルトの名無しさん:2006/08/08(火) 23:43:32
>>644

サイズは 2byte 240*240個と書いてありました。
646デフォルトの名無しさん:2006/08/08(火) 23:46:30
240個ごとに何か挟まってたりするのかお?
それとも2byteのが240*240個だーっと並んでるのかお?
647デフォルトの名無しさん:2006/08/08(火) 23:49:06
>>646

データは左上を先頭にして右へと続いている
と書いてあります。
多分ダーッとならんでいるという事なのではないかと
思います。

私は超初心者なので、半月前から本読んでるのですが
全くわからなくって・・・・。
648デフォルトの名無しさん:2006/08/08(火) 23:52:44
自分が受けた講義の課題なんだから、
超初心者であることがおかしいということに気づいた方がいい。
649デフォルトの名無しさん:2006/08/08(火) 23:54:50
宿題というかレポート課題・・・おねがいしますm(_ _)m

[1] C言語
[2] 整数をint型で入力し、上位桁から順番に書く桁の英語読みを出力するプログラムを
  配列を使って作成  (例) 123を入力したらone two three と出力 負の数の時は「minus」と出力
[3] C言語 他にとくになし
[4] 〜8/10
[5] 英語読みの出力にはSwitch文を利用
650デフォルトの名無しさん:2006/08/08(火) 23:58:04
>>648
はい。ぜんぜんできなくてごめんなさい。
今後は努力します。
私、文系学部から理系の大学院に入学したのですが、
プログラミングに関しては全く触っていないのです。
他の院生の皆さんは今まで講義でやったことがあるようですが。
この講義は気象学なのになんでプログラムを組んでるんだろう
と思いながら、いろいろやったのですが、全くわかりません。
ごめんなさい。
651デフォルトの名無しさん:2006/08/09(水) 00:02:30
そのバイナリデータは手元にないのか
652デフォルトの名無しさん:2006/08/09(水) 00:06:18
バイナリーデータはサンプルがひとつ手元にあるのですが、
開き方がわからずに中がみれません。。
653デフォルトの名無しさん:2006/08/09(水) 00:07:42
バイナリうp
654デフォルトの名無しさん:2006/08/09(水) 00:08:48
どうやってあげればいいのでしょうか?
アップローダラウンジを使用してもいいですか?
655デフォルトの名無しさん:2006/08/09(水) 00:09:36
中3女0:30までに500いったらおっぱいうpします
http://ex16.2ch.net/test/read.cgi/news4vip/1155047968/
656デフォルトの名無しさん:2006/08/09(水) 00:11:32
いいんじゃないか、宿題なんだし
657デフォルトの名無しさん:2006/08/09(水) 00:15:34
[1] 情報工学演習
[2] 15ゲームを作れ。1から15までの数字が書かれた駒を4×4の盤面に置き、一つの
  移動用の空いたマスを使って移動させ、最終的に1〜15までの順番通りに持っていく。
  ゲームは適当な初期盤面を表示し、続いてプレイヤーが指定した駒(1〜15)を移動し
  最終盤面に到達すれば終わりにするようにせよ。
  ルール
   ・初期盤面は実行するごとに違うものを出すようにせよ。乱数(rand関数を使え)
    必ず最終盤面に到達できるような初期盤面を作ること
   ・プレーヤーは毎回1から15までの数を入力するようにせよ。それ以外の数が入力されたら
    再入力をするように促せ。また動かせない場合はエラーメッセージを出すようにせよ。
   ・正しい駒番号を入力した場合は次の盤面を表示せよ。盤面は次のようなもので十分である。

+----+----+----+----+
| 1 | 12 | 3 | 10 |
+----+----+----+----+
| 2 | 6 | 8 | 9 |
+----+----+----+----+
| 13 | 7 | 4 | 5 |
+----+----+----+----+
| 11 | 15 | 14 | |
+----+----+----+----+

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:今月いっぱい
[5] その他の制限: 特になし

今の僕のレベルでは分かりません・・・よろしくお願いします。
658デフォルトの名無しさん:2006/08/09(水) 00:16:59
↑すいません・・・大いにずれてしまいましたm(--)m
659デフォルトの名無しさん:2006/08/09(水) 00:18:44
ろだにあげました
バイナリーデータ  643 - 2006/08/09(Wed) 00:17 No.2568
です。よろしくお願いいたします。
660デフォルトの名無しさん:2006/08/09(水) 00:40:06
661デフォルトの名無しさん:2006/08/09(水) 00:42:09
あひゃ、scanf+sprintfじゃなくて、普通に
getsもしくはfgetsでよかったかも・・・
662デフォルトの名無しさん:2006/08/09(水) 00:44:03
>>661
あぁ投稿しようと思ったら負けた。。。

>[2] 整数をint型で入力し、
scanfのが問題の趣旨にあってるんじゃないw 
663デフォルトの名無しさん:2006/08/09(水) 00:44:34
gets使っちゃダメだよ
664デフォルトの名無しさん:2006/08/09(水) 00:45:24
665デフォルトの名無しさん:2006/08/09(水) 01:22:53
分からんのでお願いします
ss[10]="abc"
tt[10]="あいう"
2つの文字列を連結して"abあいう"をつくる(cを消す) にはどうしたらいい??
strncatでできるかな??
666デフォルトの名無しさん:2006/08/09(水) 01:26:25
>>665

strcpy(&ss[2], tt);
667デフォルトの名無しさん:2006/08/09(水) 01:26:59
>>665 スレ違いだからこれ以上は別の質問スレで。
ttp://www.bohyoh.com/CandCPP/C/Library/strcat.html
細かいが、cを消すの意味をはっきりした方が良い。
結合する文字列の1つめの一番後ろの文字を消すのか
c という文字が含まれていたらそれを削除してから結合させるのか。
それによってアルゴリズムも変わってくるしね。
668665:2006/08/09(水) 01:40:36
>>666 
あざーす

>>667
よく分からなかったのは
半角文字列と全角文字列を連結する方法。
半角文字列の一部と全角文字列
全角文字列の一部と半角文字列
の2つのパターンをどう処理するか。
説明不足&すれ違いすまそ。
669デフォルトの名無しさん:2006/08/09(水) 02:00:35
宿題が終わらない・・・。
670デフォルトの名無しさん:2006/08/09(水) 02:02:06
丸投げすればいいじゃない
671デフォルトの名無しさん:2006/08/09(水) 04:12:26
[1] 基盤演習
[2]以下のserver.c client.cを修正してサーバが時刻を返すプログラムを作成せよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2571.zip
 [3.1] OS:Solaris
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:8月10日
[5] その他の制限: 特になし
よろしくお願いします
672デフォルトの名無しさん:2006/08/09(水) 04:20:55
>>657
特定した。
673デフォルトの名無しさん:2006/08/09(水) 05:12:32
>>657
http://ccfa.info/cgi-bin/up/src/up33363.html
俺にしてやれることはこれくらいだ・・・C言語じゃないが
674デフォルトの名無しさん:2006/08/09(水) 05:19:07
>>673
ありがとうございます。しかしどうにかC言語では無理でしょうか?
675デフォルトの名無しさん:2006/08/09(水) 05:23:10
>>674
ん?理屈や言語の仕様、制御できるものからして、C言語でも出来るよん。
ただ、まんどっちぃから俺はパスw
676デフォルトの名無しさん:2006/08/09(水) 06:09:35
CUIで盤面作るのがまんどくさい
677デフォルトの名無しさん:2006/08/09(水) 06:30:55
>>657は数字の周りに盤面も表示させるのか・・・面倒くさいのぉ・・・やってみようかのぉ・・・
> 今月いっぱい
とのことだから、とりあえず待つべし
678デフォルトの名無しさん:2006/08/09(水) 07:01:29
盤面表示(二次元配列の場合)
int x, y;
int grid[4][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0};
printf("\033[2J");
printf("\033[0;0H");
for (y = 0; y < 4; y++) {
printf("+----+----+----+----+\n");
for (x = 0; x < 4; x++) {
if (grid[y][x] > 0) {
printf("| %2d ", grid[y][x]);
} else {
printf("| ");
}
}
printf("|\n");
}
printf("+----+----+----+----+\n");
679デフォルトの名無しさん:2006/08/09(水) 07:25:17
>>673
クリアするのにちょっくら時間かかったぜ
680デフォルトの名無しさん:2006/08/09(水) 09:04:31
681デフォルトの名無しさん:2006/08/09(水) 09:37:27
>>680 キターーーー!けど、やっぱCUIは操作性が悪いのぉ・・・
682デフォルトの名無しさん:2006/08/09(水) 11:33:44
操作性を改善してみた。みなさんの環境で動くかどうかはしらね。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2574.c
683デフォルトの名無しさん:2006/08/09(水) 13:19:39
>>682
キモい・・・
684デフォルトの名無しさん:2006/08/09(水) 13:46:58
>>680
>>681
ありがとうございます!って今外にいるんであれなんですけどこれは
Linuxで動くんですよね??
685デフォルトの名無しさん:2006/08/09(水) 14:50:19
>>640-642の課題、どなたか教えていただけませんか
今日が締め切りなのですができません・・・orz おながいします
686デフォルトの名無しさん:2006/08/09(水) 14:51:06
いや自分でも解けよと
687デフォルトの名無しさん:2006/08/09(水) 15:23:27
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
データファイルから国語の点と数学の点の平均値を求める関数があり、
それぞれ男女別に計算される
ただし、関数の第一引数は構造体TEST、第二引数は国語・数学を区別するフラグ(国語0、数学1)、
第3引数は性別(男性1、女性0)、返し値は算出された平均値(double型)とする
データファイル(datファイル)は
番号 国語 数学 男女(男1、女0)
1 40 50 0
2 50 43 1
3 56 56 0
という感じです
[3] 環境
 [3.1] OS:linix
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 今日中

お願いします!
688デフォルトの名無しさん:2006/08/09(水) 15:51:59
>>687
揚げ足取るが、結局課題は何なんだ?
689デフォルトの名無しさん:2006/08/09(水) 15:53:05
宿題というかただのこういう関数があります、という報告
690デフォルトの名無しさん:2006/08/09(水) 16:04:09
>>687
まぁ関数を作れって課題なんだろうけど、TEST構造体がワカンネ
691デフォルトの名無しさん:2006/08/09(水) 16:10:38
すいません、もう一度自分で考えてみます…
すいませんでした
692デフォルトの名無しさん:2006/08/09(水) 16:15:15
>>691
名前つけないと>>685>>687判別つかないから
693デフォルトの名無しさん:2006/08/09(水) 16:19:54
>>685
#include <stdio.h>
#define NUM 2
int main(){
int price, coin[NUM] = {500, 100}, coin_n[NUM], i, coin_max[NUM], tmp, j, k;
printf("値段 = ");
scanf("%d", &price);
while (price / 1000) price %= 1000;
for (i = 0; i < NUM; i++) {
printf("%d円硬貨の枚数 = ", coin[i]);
scanf("%d", &coin_n[i]);
coin_n[i] = coin_n[i] > price / coin[i] ? price / coin[i] : coin_n[i];
}
printf("お釣り : \n");
if (price / coin[1] == coin_n[1]) printf("%d円 %d枚\nor\n", coin[1], coin_n[1]);
for (i = 0; i < NUM; i++)
if (price / coin[i]){
printf("%d円 %d枚\n", coin[i], price / coin[i]);
price %= coin[i];
}
return 0;
}

694デフォルトの名無しさん:2006/08/09(水) 16:23:56
691=687です。たびたびすいません
695デフォルトの名無しさん:2006/08/09(水) 16:40:01
宿題に対してコード出す人って本職?
作ろうとしたけど全然レベルが違う(´・ω・`)
696デフォルトの名無しさん:2006/08/09(水) 16:48:06
本職の人も居るだろうな。
俺は違うけど。
697デフォルトの名無しさん:2006/08/09(水) 16:51:55
>>693
やってること滅茶苦茶じゃないか?
698デフォルトの名無しさん:2006/08/09(水) 16:58:06
どのへんが?
699デフォルトの名無しさん:2006/08/09(水) 16:59:34
while(price / 1000) price %= 1000;
(´Д`;)
700デフォルトの名無しさん:2006/08/09(水) 17:06:41
1000円ていくらでもつかえるんじゃね
701デフォルトの名無しさん:2006/08/09(水) 17:10:35
・コインの枚数は合計枚数
・おつりはなし
702デフォルトの名無しさん:2006/08/09(水) 17:11:20
#include <stdio.h>

void hikaku_irekae(int a, int b);

int main(void){

int x, y;

printf("Please input an integer\n");
scanf("%d", &x);
printf("Please input an integer\n");
scanf("%d", &y);
printf("[before]x=%d, y=%d\n",x, y);
hikaku_irekae(x, y);

printf("[after ]x=%d, y=%d\n",x, y);

return 0;
}

void hikaku_irekae(int a, int b){

int tmp;

if ( a < b ){
tmp = a;
a = b;
b = tmp;
}
}
までつくったのはいいけど結果が[before]x=5, y=10[after ]x=5, y=10にならないのはどうしてですか?
誰かどうかお願いいたします!!!11
703デフォルトの名無しさん:2006/08/09(水) 17:13:55
>>702
>>1読んで書き直し
704デフォルトの名無しさん:2006/08/09(水) 17:13:57
>>698
・制限されるのは使用できるコインの「合計」枚数。
・「お釣り」って表示が意味不明
・千円札を最大まで使わない払いかたが考慮されない。
705デフォルトの名無しさん:2006/08/09(水) 17:18:44
>>702

hikaku_irekae(&x, &y);

void hikaku_irekae(int* a, int* b){

int tmp;

if ( *a < *b ){
tmp = *a;
*a = *b;
*b = tmp;
}
}
706デフォルトの名無しさん:2006/08/09(水) 17:20:51
>>705
甘やかすとつけあがるぞ
707デフォルトの名無しさん:2006/08/09(水) 17:21:58
#include <stdio.h>
void hikaku_irekae(int a, int b, int c);
int main(void){
int i, data[3];
for (i=0; i<3; i++){
printf("Please input an integer\n");
scanf("%d", &data[i]);}
printf("[before]x=%d, y=%d, z=%d\n",data[0], data[1], data[2]);
hikaku_irekae(data[0], data[1], data[2]);
printf("[mid]%d\n",data[1]);
return 0;}
void hikaku_irekae(int a, int b, int c){
int i, j, tmp, data[3];
data[0]= a;data[1]= b;data[2]= c;
for (i=0; i<3; i++){
for (j=i+1; j<3; j++){
if (data[i]<data[j]){
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}}}
data[1]=-999;
}
キーボードから入力される3つの整数について,その中央値を出力することを意図して作成された.しかし,正しく動作しない.
  (1)正しく動作しない理由を分かりやすく説明しなさい。(図を用いるなど、説明方法は自由)
  (2)関数部分をint型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
  (3)関数部分をvoid型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
  (4)(関数部分をvoid型とした)同様のプログラムで、ソート(並べ替え)プログラムを作成しなさい。ソートの方法は特に指定しない

どうか今日中にお願い致します。
708デフォルトの名無しさん:2006/08/09(水) 17:26:51
>>702
before>void hikaku_irekae(int a, int b);
after>void hikaku_irekae(int *a, int *b);

before>hikaku_irekae(x, y);
after>hikaku_irekae(&x, &y);

あとhikaku_irekae関数のなかの a,bを *a ,*bとする。

709デフォルトの名無しさん:2006/08/09(水) 17:28:15
>>707
だから>>1読めっての
[1]〜[5]まで埋めろっての
710707:2006/08/09(水) 17:29:19
>>703-706
>>1を半年ROMります
ごめんなさい
>>705
本当にありがとうございます!
711デフォルトの名無しさん:2006/08/09(水) 17:31:11
>>685

#include <stdio.h>

int main(int argc, char* argv[])
{
int price, max_coins, n, i, j, k, l;

do{
printf("値段を入力してください:");
scanf("%d",&price);
}while(price % 100);

printf("合計を入力してください:");
scanf("%d",&max_coins);

for(i = price / 100, j=0; i >= 0; i-=5, j++)
for(k=j, l=0; k>=0; k-=2, l++)
if(i+k0 <= max_coins)
printf("100円 %d枚, 500円 %d枚, 1000円 %d枚\n", i, k, l);
return 0;
}
712デフォルトの名無しさん:2006/08/09(水) 17:35:18
趣味
713デフォルトの名無しさん:2006/08/09(水) 17:36:31
$_ = s/\t/  /g;

(´・ω・`)
714711:2006/08/09(水) 17:37:10
>>711
変なところに0がはいってる。
if(i+k0 <= max_coins)は正しくはif(i+k <= max_coins)ね
715デフォルトの名無しさん:2006/08/09(水) 17:57:40
int c=0;
printf(c/c++);

答えは?
A.0
B.1
C.∞
716707:2006/08/09(水) 18:01:28
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): キーボードから入力される3つの整数について,その中央値を出力することを意図して作成された.しかし,正しく動作しない.
  (1)正しく動作しない理由を分かりやすく説明しなさい。(図を用いるなど、説明方法は自由)
  (2)関数部分をint型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
  (3)関数部分をvoid型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
  (4)(関数部分をvoid型とした)同様のプログラムで、ソート(並べ替え)プログラムを作成しなさい。ソートの方法は特に指定しない

[3] 環境
 [3.1] OS: linax
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: ポインタ、関数
717デフォルトの名無しさん:2006/08/09(水) 18:01:48
不定
718デフォルトの名無しさん:2006/08/09(水) 18:03:28
>>715
十中八九segmentationFaultで異常終了する。
仮にprintf("%d", c / c++)だったとすると、divisionByZeroで異常終了。
719デフォルトの名無しさん:2006/08/09(水) 18:05:53
ArithmeticException
720デフォルトの名無しさん:2006/08/09(水) 18:17:11
>>718
なんで零除算の前にsegmentation faultが発生するんだ?
721718:2006/08/09(水) 18:19:01
>>720
いかん、そう言えばそうだ。
722デフォルトの名無しさん:2006/08/09(水) 18:51:30
>>707

#include <stdio.h>

void hikaku_irekae(int *data, int size);
int lt_int(void *a, void *b);

int main(void)
{
    int i, data[3];
    for (i = 0; i < 3; i++) {
printf("Please input an integer\n");
scanf("%d", &data[i]);
    }
    printf("[before]x=%d, y=%d, z=%d\n", data[0], data[1], data[2]);
    hikaku_irekae(data, sizeof(data) / sizeof(int));
    printf("[after]x=%d, y=%d, z=%d\n", data[0], data[1], data[2]);
    printf("[mid]%d\n", data[1]);
    return 0;
}

void hikaku_irekae(int *data, int size) {
    qsort(data, size, sizeof(int), lt_int);
}

int lt_int(void *a, void *b) {
    return *(int *)a - *(int *)b;
}
723デフォルトの名無しさん:2006/08/09(水) 19:31:53
643です。
どなたかお願いします!!
ヒントだけでもください。
724デフォルトの名無しさん:2006/08/09(水) 19:49:30
>>723
そのバイナリデータなんだけど、ファイルサイズから見ても2x250x256なんだよね。
単純に2x240x240だとファイルが余るし、データの規則性が崩れるんだけど
どんなフォーマットで入ってるの?
#例えば256ライン分のデータがあって、先頭に必ず10バイトのヘッダがあるとか。
その辺が判らないとなんともならんよ。
##そもそも-266だらけで何をどうしていいのやら。
725デフォルトの名無しさん:2006/08/09(水) 20:24:12
>>724
どうもありがとうございます。
先生から答えになるものも渡されていて、それを見ると
たしかに-266ばかりです。
そちらもろだにあげてみます。
726643:2006/08/09(水) 20:28:18

バイナリーを変換した答え  643 - 2006/08/09(Wed) 20:26 No.2576

2576.zip でろだをお借りしました。
どうぞよろしくお願いいたします。
csvで入っています。
727デフォルトの名無しさん:2006/08/09(水) 21:15:49
>>726のはこんな感じ?
#include <stdio.h>
#define SIZE 240 * 240
int main()
{
short data[SIZE];
FILE *fp;
if ((fp = fopen("PR20060526-13.pol", "rb")) == NULL) return -1;
fread(data, sizeof(data[0]), sizeof(data) / sizeof(data[0]), fp);
fclose(fp);
if ((fp = fopen("output.txt", "w")) == NULL) return -1;
int i = 0;
while (i < SIZE)
fprintf(fp,"%d%c", data[i++], i % 240 ? ',' : '\n');
fclose(fp);
return 0;
}
728デフォルトの名無しさん:2006/08/09(水) 21:21:33
別解答
件のデータは末尾にゴミがついてるみたいね

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

struct Wether {
  short elem[240][240];
};

int main() {
  struct Wether *wether;
  int i;
  int j;
  wether = (struct Wether *)malloc(sizeof(struct Wether));
  fread(wether, sizeof(struct Wether), 1, stdin);
  for (i = 0; i < 240; i++) {
    for (j = 0; j < 240; j++) {
      fprintf(stdout, "%d", wether->elem[i][j]);
      if (j < 240 - 1)
        fprintf(stdout, ",");
    }
    fprintf(stdout, "\n");
  }
  free(wether);
}
729デフォルトの名無しさん:2006/08/09(水) 21:22:55
ミスった、ごめん

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

struct Wether {
  short elem[240][240];
};

int main() {
  struct Wether *wether;
  int i;
  int j;
  wether = (struct Wether *)malloc(sizeof(struct Wether));
  fread(wether, sizeof(struct Wether), 1, stdin);
  for (i = 0; i < 240; i++) {
    for (j = 0; j < 240; j++) {
      fprintf(stdout, "%d", wether->elem[i][j]);
      if (j < 240 - 1)
        fprintf(stdout, ",");
    }
    fprintf(stdout, "\n");
  }
  free(wether);
}
730643:2006/08/09(水) 21:30:45
>>727
>>728
>>729
うわあ、、すごくはやい。
ありがとうございます!
自分でもやってみます。

ずうずうしいのですが、もうひとつの
10ファイルを連続で読み込むプログラムは
どういう方向性で考えたらいいのでしょうか?
731デフォルトの名無しさん:2006/08/09(水) 21:32:42
>>730
引数でファイル名を10個以下受け取って、その数だけ同じことを繰り返す。
732643:2006/08/09(水) 21:32:55
さらにもうひとつですが

先生にメールで問い合わせたところ、
私のバイナリーデータは125*512のものが間違って
きている可能性があるそうです・・・。
なので、ご指摘に間違いはありませんでした。
ありがとうございました。
733643:2006/08/09(水) 21:35:58
引数で?
それはDOS窓から名前を打ち込む感じですか?
734デフォルトの名無しさん:2006/08/09(水) 21:43:16
#include <stdio.h>

void convert_csv(char *filename) {
    printf("convert %s\n", filename);
    /* がんばる */
}

int main(int argc, char **argv) {
    int i;
    for (i = 1; i < argc; i++) {
        convert_csv(argv[i]);
    }
}
735デフォルトの名無しさん:2006/08/09(水) 21:45:37
usage: convert_csv [FILE1] [FILE2] ...
736デフォルトの名無しさん:2006/08/09(水) 21:47:35
Windowsだとこれドラッグ・アンド・ドロップでいけるかも。
今これLinuxだから確認できん。
737707:2006/08/09(水) 22:02:14
>>722
ありがとうございました!これでなんとか単位とれそうです!!

これって何番の解答ですか?
738643:2006/08/09(水) 22:03:12
連続って想像がつかないです・・・。
明日の朝まで自力でがんばってみます。

さらにずうずうしいのですが、
どなたか、
「コマンドラインからファイル名を指定し、指定したファイル10個を
連続で変換するプログラム」
をお願いいたします。
739デフォルトの名無しさん:2006/08/09(水) 22:08:57
740デフォルトの名無しさん:2006/08/09(水) 22:10:05
>>737
最後の問題。
741デフォルトの名無しさん:2006/08/09(水) 22:11:52
なんかここ小学生相手してるみたいで面白いね。
でも単位は諦めたほうがいいと思うよ。
742707:2006/08/09(水) 22:26:57
>>741
プログラミングさっぱりわからなくて、きっと小学生以下ですねありがとうございました。

できれば(1)〜(3)も教えていただけますか、お願いします。
743デフォルトの名無しさん:2006/08/09(水) 22:35:40
最近の大学はペーパーテストやらないのかね
744707:2006/08/09(水) 22:46:31
>>743
プログラミングの授業だけレポートだけでいいのです。
こんなに難しいなんて思わなかった・・・
745デフォルトの名無しさん:2006/08/09(水) 22:56:03
いや、どうみても無茶苦茶楽なレポートです。単に書くのがメドイだけ。
1)はスコープが違うから2),3)はそれぞれ適当に書き換えるだけ。
まぁ、わからんなら単位落としたほうが世のためと思う。
746デフォルトの名無しさん:2006/08/09(水) 23:08:52
s/メドイ/メンドイ/
にゃはは(^Д^) 間違えちった。
747デフォルトの名無しさん:2006/08/09(水) 23:15:48
>>745
>まぁ、わからんなら単位落としたほうが世のためと思う。

大学行ってない奴って、こういうこと言いがちだよね。
748707:2006/08/09(水) 23:21:19
>>745
そんなこと言わずにどうかお願いいたします。

>>747
フォローありがとう;;
749デフォルトの名無しさん:2006/08/09(水) 23:23:02
>>747
大学行ってる奴だが、わからないなら落とした方がいいと思うよ
1教科くらい落としても余裕だろ
750デフォルトの名無しさん:2006/08/09(水) 23:25:13
>>749
取れるなら取ったほうがいいだろ。
お前の周りも、わからないのに単位取りまくりな奴だらけのはずだ。
751デフォルトの名無しさん:2006/08/09(水) 23:27:04
>>750
うちの大学はレベルが低いから、わからないやつはガンガン単位落としてるぜ
752デフォルトの名無しさん:2006/08/09(水) 23:31:07
相変わらず盛り上がってるのかと思ったら、もう答え出てるじゃまいか
レポート部分は、このスレじゃあまりやる人がいない+自分の言葉で書いておかないと
ボロが出るだけだから、適当に埋めちまえ
753デフォルトの名無しさん:2006/08/09(水) 23:33:45
>>751
レベルが低いからじゃなくて、怠惰だからでしょ。
754デフォルトの名無しさん:2006/08/09(水) 23:36:26
人に解かせて単位を取得するのは怠惰じゃないとでも言いたいのかな
755643:2006/08/09(水) 23:36:26
>>727
少しだけ書き換えました。
これで正常にコンパイルできました。

#include <stdio.h>
#define SIZE 240 * 240
int main()
{
int i;
short data[SIZE];
FILE *fp;

if ((fp = fopen("PR20060526-134600.pol", "rb")) == NULL) return -1;
fread(data, sizeof(data[0]), sizeof(data) / sizeof(data[0]), fp);
fclose(fp);
if ((fp = fopen("output.txt", "w")) == NULL) return -1;


i=0;
while (i < SIZE)
fprintf(fp,"%d%c", data[i++], i % 240 ? ',' : '\n');
fclose(fp);
return 0;
}

ただ、一番初めの数字が139が一個だけ上の行になってしまうのですが、
どこを書き換えればいいのでしょうか?
756デフォルトの名無しさん:2006/08/09(水) 23:38:16
>>754
そのようなことすらしなくて、単位を落とすことを怠惰だと言ってるんだけど。
757707:2006/08/09(水) 23:40:19
>>750
ありがとう、750さんの優しさ身にしみます

>>752
(1)はいいんですが(2)(3)がまだわからないんです。
そんなレベルなんです><
758デフォルトの名無しさん:2006/08/09(水) 23:40:28
>>756
まぁ落としても卒業できなくなるわけじゃないし
他の勉強に回して捨てる人が多いね
759745:2006/08/09(水) 23:45:37
まぁ亀レスだけど一応
>>746
誰?
760デフォルトの名無しさん:2006/08/09(水) 23:45:57
「分からないポイントを理解したい」じゃなくて、「分からなくていいから、答えだけ欲しい」って感じがしまくりなのが笑える。
761デフォルトの名無しさん:2006/08/09(水) 23:48:20
>>716
(1) hikaku_irekae関数は、ローカル変数である配列"data"入れ替えているだけであり、
mainから渡した実引数の配列"data"は入れ替わっていないために正しく動かない。

(2) hikaku_irekae関数で渡されたa, b, cの中央値を返却するようにすれば、正しい結果を得る事ができる。
hikaku_irekae関数の配列"data"は並び替えられているので、その中央値data[1]を返却するようにする。
(以下の通りにコードを修正すること)
int i, data[3];

int i, data[3], mid;

hikaku_irekae(data[0], data[1], data[2]);
printf("[mid]%d\n", data[1]);

mid = hikaku_irekae(data[0], data[1], data[2]);
printf("[mid]%d\n", mid);

void hikaku_irekae(int a, int b, int c)

int hikaku_irekae(int a, int b, int c)

data[1] = -999;

return data[1];
762デフォルトの名無しさん:2006/08/09(水) 23:49:14
>>760
このスレの趣旨を理解するよう、半年ROMっとけ
763デフォルトの名無しさん:2006/08/09(水) 23:49:27
ここは分かるように説明してあげるスレじゃないと思うんだがな・・・
764デフォルトの名無しさん:2006/08/09(水) 23:49:41
i % 240

(i + 1) % 240
765デフォルトの名無しさん:2006/08/09(水) 23:50:18
>>758
お前、脳内大学生だろ。
766デフォルトの名無しさん:2006/08/09(水) 23:51:40
さっきから大学生にコンプレックス持ちまくりの奴が喚いてるのが笑える。
767671:2006/08/09(水) 23:52:24
すいません、どなたか
>>671
をお願いします。
768デフォルトの名無しさん:2006/08/09(水) 23:52:25
>>765
わるかったな もう単位取り終わったからほとんど引きこもってるぜ
769デフォルトの名無しさん:2006/08/09(水) 23:53:31
脳内大ってどこのFランク大?
770デフォルトの名無しさん:2006/08/09(水) 23:54:05
関東のFランだぜ
771デフォルトの名無しさん:2006/08/09(水) 23:54:34
>>716
(3) hikaku_irekae関数で、直接引数を入れ替えるよう、ポインタを使用し修正する。
void hikaku_irekae(int a, int b, int c);

void hikaku_irekae(int *a, int *b, int *c);

hikaku_irekae(data[0], data[1], data[2]);

hikaku_irekae(&data[0], &data[1], &data[2]);

void hikaku_irekae(int *a, int *b, int *c)
{
int i, j, tmp, data[3];
data[0] = *a;
data[1] = *b;
data[2] = *c;
for (i = 0; i < 3; i++) {
for (j = i + 1; j < 3; j++) {
if (data[i] < data[j]) {
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
}
*a = data[0];
*b = data[1];
*c = data[2];
}
772デフォルトの名無しさん:2006/08/09(水) 23:56:21
あとは適当に文章変えたり、肉付けしたりしてね♥
773707:2006/08/10(木) 00:02:30
>>760
そのとおりですw
>>761 771
どうもありがとうございます、お手数おかけしました。
助かります本当にありがとうございました。
774デフォルトの名無しさん:2006/08/10(木) 00:02:57
しかし、C言語って一般教養に向いていないような気がするなぁ。
Rubyとかの高級言語のほうが身に付けやすく、利用価値も高いだろうに。
必要な理系の学生だけ、あとからC言語やるほうが良い気がする。
775643:2006/08/10(木) 00:04:15
>>764
うおおお!できてる!

ありがとうございました。
がんぱります!
776デフォルトの名無しさん:2006/08/10(木) 00:08:08
>>773
回答する気全く無かったんだが(簡単なので)、アホな>>745のおかげで答える気になった。
>>745にも感謝しとけ。
777デフォルトの名無しさん:2006/08/10(木) 00:08:55
>>774
手続き型言語はどれも大差ないと思うけど
C言語は教材が豊富で教えやすいんじゃないかな
778デフォルトの名無しさん:2006/08/10(木) 00:09:32
煽った私にも感謝して!そしておっぱいうp!
779デフォルトの名無しさん:2006/08/10(木) 00:09:34
>>774
RubyやPythonを採用するところも増えてるよ。
780デフォルトの名無しさん:2006/08/10(木) 00:14:46
情報系ならC/C++、数学・物理系ならJavaとか。FORTRANは…。
781デフォルトの名無しさん:2006/08/10(木) 00:19:40
>>780
俺情報工学科だけど、FortranもPascalもアセンブリもやったよ。
782デフォルトの名無しさん:2006/08/10(木) 00:26:43
>>748
悪いが同じ大学生として恥ずかしいから言っているのだよ
783デフォルトの名無しさん:2006/08/10(木) 00:28:30
>>782
まだ粘着するの?w
784デフォルトの名無しさん:2006/08/10(木) 00:28:57
>>780
数学・物理系ってJavaなの?
785デフォルトの名無しさん:2006/08/10(木) 00:30:00
文学部史学科考古学専攻の方はCOBOLをw
786デフォルトの名無しさん:2006/08/10(木) 00:31:22
俺の時代はFortranだったが、今でもそうだと思う。
Javaもやるかもしれんけど。
787デフォルトの名無しさん:2006/08/10(木) 00:32:29
>>782
同じ大学生として、お前が恥ずかしいよ。
788デフォルトの名無しさん:2006/08/10(木) 00:33:08
同じ日本人として恥ずかしいニダ
789707:2006/08/10(木) 00:35:03
>>776
そんな心中の変化があったんですか、最終的に答えてくださってありがとうございます

>>745
ほんとにどうもありがとうございましたf^^;
でも単位の関係で苦手な教科も取らなければいけないこともあるって覚えといてください
790デフォルトの名無しさん:2006/08/10(木) 00:35:13
>>781
いや、始めに習うといいと思える言語っていう意味で並べた。
Cを学ぶことの強みは、プログラミングの基礎だけでなく
コンピュータに関する様々な知識も(並行して)会得出来るのことだと思う。
ある程度内部的な構造に関わっていた方が後からアセンブリやらなんやらを学ぶときにいいだろうし。

関係ないけど、情報系の学部って大学によってレベルの差ありすぎ。
MARCH以下の情報系学部って機能してるのか?w 宿題丸投げとかあり得〜ん。

>>784
俺の理想。
791デフォルトの名無しさん:2006/08/10(木) 00:38:03
>>774
アルゴリズムの勉強をするなら言語を選ばんでも良いし
あまり複雑だと教える側も面倒になるし。
数値計算程度なら手軽に導入できるもので良いんじゃね?
792デフォルトの名無しさん:2006/08/10(木) 00:38:13
たまーに有名大学の丸投げもあったような・・・ どことは言わないけど・・・
793デフォルトの名無しさん:2006/08/10(木) 00:38:31
ここに宿題丸投げしてるのは、情報系以外の奴らでしょ。
ちなみに俺は電通大卒だけど、入ったばかりのときはドシロウトが結構いたぞ。
最初のうちは丸投げに近いことやってたみたいだ。
794デフォルトの名無しさん:2006/08/10(木) 00:39:46
>>790
今のところうちの大学の宿題やってくれってのはないな〜
795デフォルトの名無しさん:2006/08/10(木) 00:41:10
>>793
情報系で丸投げあったら将来が不安だな・・・
でも中にはやってるやつもいそうで怖い
796デフォルトの名無しさん:2006/08/10(木) 00:43:35
情報系でも、全員が将来プログラミングをする職業に就くとは限らんからな。
それに工業系の単科国立大学の場合は、偏差値で選ぶ地元の奴も結構いるよ。
だからドシロウトも混じる。
選択肢が少ないからな。
797デフォルトの名無しさん:2006/08/10(木) 00:44:55
一番不憫なのは周りに教えてくれる友達がいないあたりか
798デフォルトの名無しさん:2006/08/10(木) 00:45:48
東工大の奴も、そんな感じじゃないか?
東大には入れないけど、地元の国立に行きたい奴とか。
799デフォルトの名無しさん:2006/08/10(木) 00:46:09
でも、情報系学部出て来てるくせに全然わかってないやつとか普通にいるからなぁ。
プログラムがどうとかじゃなくて、物事への取り組み方の考えが違うのかもしれない。
800デフォルトの名無しさん:2006/08/10(木) 00:47:40
いい加減スレ違いなんですが
801デフォルトの名無しさん:2006/08/10(木) 00:48:31
>>799
お前みたいな奴もよくいるよな。
802デフォルトの名無しさん:2006/08/10(木) 00:52:30
>>800
ああスマン。もうやめる。
803643:2006/08/10(木) 02:23:10
ああ、できない。
どうしてもできない。。。
804デフォルトの名無しさん:2006/08/10(木) 02:28:49
>>795
丸投げされているのが見つかって
このスレが授業中に晒されたことがある。
805724:2006/08/10(木) 02:54:28
>>803
ありゃ、未だ解決していなかったのか。
遣り取りしていたみたいだから終わったもんかとw
で、餓鬼じゃないんだから「できないできない」言ってないでデータとコードを晒してみたら?
#でも漏れはもう寝る。
806デフォルトの名無しさん:2006/08/10(木) 02:54:25
double型の小数部分だけを取り出すには、

double a,b;
a=1.2354;

b=a-(int)a;

でだいじょぶでしょうか?
C++でキャスト使ったほうがいいんでしょうか?
807デフォルトの名無しさん:2006/08/10(木) 02:58:40
>>806
大丈夫だと思うが、負の値には使えないので要注意。
後は明示的キャストを使うとかfloor()を使うとかtrunc()を使うとか。
808デフォルトの名無しさん:2006/08/10(木) 03:11:17
>>807
ありがとうございます。
実は2次元配列(行列)で小数点以下が合う要素を抽出するプログラムを
作ってるんですが、うまくいきません。
コード載せるのでみていただけますか?
小数点第一位までのdouble型2次元配列 a[i][j]で小数点以下の数値を実数で渡されているときのものです。
抽出したものをdouble型の配列に突っ込みたいです。

void tyusyutu(const Matrix a, int m, int n, int o, const Vector b) //引数(対象行列、行数、列数、取り出したい小数点以下の数値、出力するベクトル)
{
int i,j,k;
double l;
for(i = 0; i < m; i++){
for(j = 0; j < n; j++){
l=a[i][j]-(int)a[i][j]; //小数点以下への変換
k = l*10 //整数へ
if(k == o) b[i] = a[i][j];
}
}
}
809デフォルトの名無しさん:2006/08/10(木) 03:14:05
ちょっと説明わるかったので書き直しします。
a[][]は 1.1 1.2 1.3 1.4
    2.1 2.2 2.3 2.4
みたいな感じなのですが、
例えば.3だけ会うものを抽出したいときには
o=3
となります。
よろしくお願いします。
810デフォルトの名無しさん:2006/08/10(木) 03:15:26
[1] システム演習
[2]次の加算プログラムに除算、乗算、減算を追加してそれぞれの結果が出る
四則演算をするプログラムを作りなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2577.zip
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:8月11日
[5] その他の制限: 特になし
よろしくお願いたします
811デフォルトの名無しさん:2006/08/10(木) 03:45:19
>>809
小数点以下1桁だけが対象なら
l=(int)(a[i][j] * 10) % 10;
が楽で正確かも。
812808:2006/08/10(木) 03:55:39
自己解決しました。
どうやら丸めが問題だったみたいです。
l=a[i][j]-(int)a[i][j]; //小数点以下への変換
k = l*10 //整数へ
の部分を

k=((a[i][j]-(int)a[i][j])+0.05)*10
で小数点以下第2位を四捨五入することで解決しました。
どうもありがとうございました。
813808:2006/08/10(木) 04:00:29
>>811さん
811さんの方法でもいけましたっ!
やっぱりfloat扱うときの丸めの重要性にきづきました。
ほんとにありがとうございました。
814643:2006/08/10(木) 04:30:19
>>734さんのを使わせてもらおうとがんばりましたが
その方法ではわからなくって自分で作ったらこんな風になりました。

#include <stdio.h>
#define SIZE 240 * 240

int main(int argc, char **argv) {
int i;
short data[SIZE];
FILE *fp;
for (i = 1; i < argc; i++) {

/*ファイルのオープン*/
fp = fopen( argv[i] , "rb");
if(fp == NULL){
// ファイルが開けなかった場合
fprintf(stderr,"cannot output to file.\n");
return 0;}

fread(data, sizeof(data[0]), sizeof(data) / sizeof(data[0]), fp);
fclose(fp);
if ((fp = fopen(argv[i] .csv , "w")) == NULL) return -1;

i=0;
while (i < SIZE)
fprintf(fp,"%d%c", data[i++], (i + 1) % 240 ? ',' : '\n');
fclose(fp);
return 0;

だけど、ファイルの書き込みのところができません。argv[i]にファイル名が
入っているので同じ名前で拡張子だけ変えて出力すればいいのですが・・
間に合わない予感がする・・・・。
815デフォルトの名無しさん:2006/08/10(木) 05:28:09
>>734のだとこんな感じかな
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define VECSZ 240
#define MATSZ VECSZ * VECSZ
int bin2csv(char *fname)
{
int i;
char *outname;
short data[MATSZ];
FILE *fp;
if ((fp = fopen(fname, "rb")) == NULL) return -1;
fread(data, sizeof(data[0]), MATSZ, fp);
fclose(fp);
outname = (char*)malloc(strlen(fname) + strlen(".cvs") + 1);
strcpy(outname, fname);
strcat(outname, ".cvs");
if ((fp = fopen(outname, "w")) == NULL) return -1;
for (i = 0; i < MATSZ; i++) fprintf(fp,"%d%c", data[i], (i + 1) % VECSZ ? ',' : '\n');
fclose(fp);
free(outname);
return 0;
}
int main(int argc, char **argv) {
int i;
for (i = 1; i < argc; i++)
bin2csv(argv[i]);
return 0;
}

816724:2006/08/10(木) 11:29:47
>>815
・「拡張子を変える」とあるからその名前のつけ方は拙かろう。
・メモリリークしている。
// 最初のfclose(fp);の後から
char * ext = strchr(fname, '.');
if (ext == NULL) ext = strchr(fname, '\0'); // 拡張子がなかったときの対策
char * outname = malloc(ext - fname + sizeof(".csv"));
sprintf(outname, "%.*s.csv", ext - fname, fname);
fp = fopen(outname, "w");
free(outname); // outnameはfopen()してしまえば用済み
if (fp == NULL) return -1;
// 次のfopen()の辺りまで
817643:2006/08/10(木) 21:47:32
>>815
ありがとうございます。
コンパイルできました。

>>816
おっしゃるとおり改造してみましたが
char * ext = strchr(fname, '.');

char * outname = malloc(ext - fname + sizeof(".csv"));
がここでは宣言できません
となり、コンパイルできません。
どうしたらいいでしょうか?
818デフォルトの名無しさん:2006/08/10(木) 21:57:07
C言語だから
819デフォルトの名無しさん:2006/08/10(木) 22:01:50
>>817
宿題レベルの話だから、
char outname[128];
strcpy(outname, fname);
memcpy(&outname[strlen(fname) - 3], "csv", 3);
でいいじゃない?malloc(), free()なんか使わずに。

>>816
sizeof(".csv")ってなんだよ?
820デフォルトの名無しさん:2006/08/10(木) 22:12:51
>>816
拡張子以外のパスに"."が含まれる場合正常に動作しない
特にディレクトリ名に"."を含む場合に悲惨

>>819
3文字以外の拡張子及び拡張子なし場合に正常に動作しない
ファイル名が3文字未満だと目も当てられない
821デフォルトの名無しさん:2006/08/10(木) 22:15:17
>>820
>3文字以外の拡張子及び拡張子なし場合に正常に動作しない
>ファイル名が3文字未満だと目も当てられない

まぁそうなんだけど、宿題なんだからさ。
「拡張子」なんてポワポワしたものを扱う場合は、特に割りきりが必要じゃない?
入力ファイルが、
data.001
data.002
...
なんて可能性もあるわけだし。
822816:2006/08/10(木) 22:16:57
>>817
あーごめん、C99前提で書く癖がついてて。
それぞれ前方で宣言しておいて。

>>818
C99はCですが。

>>819
見たままですが。

>>820
確かに。
んじゃ、strchr()の代わりにstrrchr()で。

#帰宅しても混乱してたら今度は関数丸ごと書かないとダメだな。
823デフォルトの名無しさん:2006/08/10(木) 22:20:28
>>822
見たままってどういうこと?
824デフォルトの名無しさん:2006/08/10(木) 22:22:18
なんか816って痛い・・・
825デフォルトの名無しさん:2006/08/10(木) 22:24:48
>>821
素直に
hogehoge → hogehoge.csv
hogehoge.dat → hogehoge.dat.csv
hogehoge.001 → hogehoge.001.csv
がいいと思うけどなぁ。

それか出力ファイル名もコマンドラインから受け取るか。
826デフォルトの名無しさん:2006/08/10(木) 22:25:05
C99だとmalloc(ext - fname + sizeof(".csv"))って意図通りの意味になるのか?
827デフォルトの名無しさん:2006/08/10(木) 22:27:17
_MAX_PATH
828デフォルトの名無しさん:2006/08/10(木) 22:27:48
>>825
俺だったら前者のようにするけど、拡張子を変える必要があるみたいだよ。
前者のやりかたでも、変えるっちゃ変えるんだけど。
829デフォルトの名無しさん:2006/08/10(木) 22:29:38
C89だろうとC99だろうと、書き込みファイル名分のメモリ確保になるんでない?
少なくとも漏れの環境ではsizeof(".csv")は5になったよ。
830643:2006/08/10(木) 22:31:14
コマンドラインから名前を入力する際に
正確に.datまでファイル名を打ち込まないと
読み込んでくれませんが、
これの解決方法ってあるのでしょうか?

これ、明日までの宿題・・・
今日も徹夜でがんばらないと・・。
831デフォルトの名無しさん:2006/08/10(木) 22:31:31
突然環境依存のシンボルを持ち出す痛い粘着がいる件
832デフォルトの名無しさん:2006/08/10(木) 22:33:02
>>827
Windowsじゃ、それ使うだけじゃダメなんだけどな
833デフォルトの名無しさん:2006/08/10(木) 22:34:14
>>830
曖昧に打ち込んだファイル名から類推させるんですか?
かなり難しいと思いますw
834デフォルトの名無しさん:2006/08/10(木) 22:35:28
>>829
sizeof(pointer)と間違えてるんだろ
835819:2006/08/10(木) 22:38:56
>>834
うお、素で間違えてた・・・。何年も・・・ orz
836643:2006/08/10(木) 22:39:02
>>833
ありがとうございます。
そうですかサンプルのバイナリーデータが
PP20060526-1343.datとかすごく長いので
コマンドラインから打ち込むのをなるべく短縮できないかな?
と思ったものですから。。。
こんなながい名前10個打ち込むのつらい気がして。。。
837デフォルトの名無しさん:2006/08/10(木) 22:39:14
文字列リテラルの型って配列だったのか。しらなんだ。
838デフォルトの名無しさん:2006/08/10(木) 22:40:07
>>830
.dat決め打ちでいいなら入力ファイル名の末尾調べて付け足し
sample.datとsampleとどっちもあるときどーすんだとかめどいので
課題に含まれてないなら妙なことはやらんほうが身のためだとは思うが
839デフォルトの名無しさん:2006/08/10(木) 22:40:38
>>823
俺は816ではないけど、
Cにおいて文字列リテラルの型はchar配列。(ただし内容を書き換えしようとしたらその挙動は未定義)
つまり".csv"はchar [5]型となり、sizeof (".csv")は5を返す。

ちなみにC++だとconst char配列。
840デフォルトの名無しさん:2006/08/10(木) 22:42:02
うはは、俺もsizeof(文字列リテラル)って必ずpointerのサイズだと思ってたよ・・・ or2
841デフォルトの名無しさん:2006/08/10(木) 22:43:08
>>836
your_program.exe PP*.dat
とかワイルドカード使えば?
842643:2006/08/10(木) 22:44:02
>>838
なるほど。
そうですね。どっちもあるときはできなくなりますね。
そうか・・・。
入力ファイル名の末尾調べてつけたしって
「文字列をくっつける」のを使えればできるのですね?
843デフォルトの名無しさん:2006/08/10(木) 22:45:02
文字列リテラルのアドレスも取れたりするんだな。
知らなかったのが恥ずかしい。
844643:2006/08/10(木) 22:46:05
>>841
ワイルドカードですか?
いままで必死に調べてみたらネット上に
そんな記述があったのですが
私の持ってるC言語の本にはまったく書いてなくて
わかりませんでした。
ワイルドカードってどうやったら使えるのですか?
すごく興味あります。
845デフォルトの名無しさん:2006/08/10(木) 22:48:14
んー
846デフォルトの名無しさん:2006/08/10(木) 22:49:24
もう誰か回答をスパッと書いてやれよ。
俺は書かないけどw
847デフォルトの名無しさん:2006/08/10(木) 22:51:14
書かないんじゃなくて書けない
848デフォルトの名無しさん:2006/08/10(木) 22:51:53
ちうかWinでもXP辺りのDOSプロンプトはTab補完できなかったっけ?
849デフォルトの名無しさん:2006/08/10(木) 22:52:21
>>844
ファイル名の補完とか、複数ファイルの指定(所謂ワイルドカード)なんて仕事は本来コマンドインタプリタの仕事。
#Unix系ではシェルが該当する。
残念ながらWindowsではcmd.exeがそこまでやってくれないのでエクスプローラからDrag&Dropするくらいしか手がない。
#まさかファイル名補完のロジックなんて今から書いてられないだろ?
850デフォルトの名無しさん:2006/08/10(木) 22:52:55
あ〜、Windowsのシェルってワイルドカードの展開やってくれないみたいね。
bashのつもりで話してたから、ワイルドカードの話は諦めて。
exeにドラッグアンドドロップでいいかも。
851デフォルトの名無しさん:2006/08/10(木) 22:56:03
つか、>>815でいいじゃん。
メモリリークなんか気にしなくていいよ。すぐにプログラム終わっちゃうんだから。
852デフォルトの名無しさん:2006/08/10(木) 23:00:10
使うためのプログラムならメモリリークしてもいいけど、提出用なんだろ?
853643:2006/08/10(木) 23:00:30
>>816のやり方がすごく気になります。
どなたか、正解を教えてくださいm(_ _)m
854643:2006/08/10(木) 23:02:40
提出用です。
だけど、なるべく実用的なものを作るように
と言われました。
お願いいたします。
855デフォルトの名無しさん:2006/08/10(木) 23:05:20
このグダグダ感がたまらない。
だから完成されたコードは書かない。
856デフォルトの名無しさん:2006/08/10(木) 23:06:11
char型って処理系依存だっけ?
857デフォルトの名無しさん:2006/08/10(木) 23:06:47
>>854
>822

>>816は帰ったのか?w
858デフォルトの名無しさん:2006/08/10(木) 23:07:02
>>853
いい加減ウザいぞ。
816が帰宅したら回答を書くそうだから、おとなしく待っとけ
859デフォルトの名無しさん:2006/08/10(木) 23:07:46
>>853
宣言部に以下を追加
char *ext, char *outname;
>>816中の下2行は以下のように書き換えてから追加
char * ext = strchr(fname, '.'); → ext = strchr(fname, '.');
char * outname = malloc(ext - fname + sizeof(".csv")); → outname = malloc(ext - fname + sizeof(".csv"));

中身読んでないので動くかは知らん
860643:2006/08/10(木) 23:12:52
>>859
ありがとうございます。
おっしゃるとおりにしてみましたが
データの入ってないCSVファイルができました。
データはいずこに・・・・。
861デフォルトの名無しさん:2006/08/10(木) 23:14:36
UWAAAAAAAAAAAAAAA
UZEEEEEEEEEEEEEEEEE
862デフォルトの名無しさん:2006/08/10(木) 23:15:12
200レス以上もなにやってんだw
まぁ、がんばれよ。
863デフォルトの名無しさん:2006/08/10(木) 23:18:20
>>861
嫌なら来なくて良いんですよ?このスレに強制的に来るように誰かに指示、命令されてるの?
864デフォルトの名無しさん:2006/08/10(木) 23:18:46
>>863
643乙
865デフォルトの名無しさん:2006/08/10(木) 23:22:33
>>643
ここは宿題を丸投げして回答するスレであって、QAスレではない。
866デフォルトの名無しさん:2006/08/10(木) 23:23:20
>>860
ああ、宣言部に持ってくればいいという話ではなかったかスマソ
読むのめどいし>>816が帰ってくるのを待ってておくれ
867デフォルトの名無しさん:2006/08/10(木) 23:23:57
放置や任意って言葉を知らないキチガイ共か。お前らみたいなのが
自分勝手な価値観で相手を不必要に罵倒して、後で世間から冷ややかな目で見られるんだよねw
868デフォルトの名無しさん:2006/08/10(木) 23:24:06
816には是非とも逃亡していただきたいw
869デフォルトの名無しさん:2006/08/10(木) 23:25:09
>>867
別にいいんじゃないの?
ここ2chだし。
870643:2006/08/10(木) 23:25:34
皆様、お騒がせして申し訳ありません。
おとなしく、自習しながら待っております。。
ごめんなさい。
では、どなたか思いついたらどうぞよろしくお願いいたします。
871デフォルトの名無しさん:2006/08/10(木) 23:25:59
>>869
そう、”来なくても”良いんだよ。分かった?
872デフォルトの名無しさん:2006/08/10(木) 23:26:54
>>867

 ま た お 前 か
873デフォルトの名無しさん:2006/08/10(木) 23:29:54
>>872
 ま た お 前 か
874デフォルトの名無しさん:2006/08/10(木) 23:30:33
>>871
お前も来なくていいよ
875デフォルトの名無しさん:2006/08/10(木) 23:31:07
相変わらず、このスレには自分が気に食わないって理由だけで
丸投げに対してのレスをしないで、うぜぇだの自己主張しかしない
ガイキチが根付いているんだな。みっともないね、何しにこのスレに来てんの?w
876デフォルトの名無しさん:2006/08/10(木) 23:31:49
>>874
いや、そういうことをいちいち言うお前が来なくて良いんだよ。
他に回答している人からしてみりゃ、答える気もないのに
質問者が気に食わないってことをいちいち言う方がUZEEEEんだが?
877デフォルトの名無しさん:2006/08/10(木) 23:33:59
>>875
お前がいなかった間は、お前ほどのキチガイは来なかったがな。
878デフォルトの名無しさん:2006/08/10(木) 23:40:08
>>874-875
こいつ、マジでうぜぇ
879デフォルトの名無しさん:2006/08/11(金) 00:00:23
叩く奴の神経が理解できん。楽しいか?
いずれにしても叩きたいなら止めないが。
880デフォルトの名無しさん:2006/08/11(金) 00:31:23
楽しいよ〜w。真性のバカを叩くのはww
881643:2006/08/11(金) 01:00:44
やはり終わらない・・・。
882デフォルトの名無しさん:2006/08/11(金) 01:07:02
>>878-880
こいつら、マジでうぜぇ、煽る、荒らすだけなら来るなバカ共
883デフォルトの名無しさん:2006/08/11(金) 01:07:53
643乙
884デフォルトの名無しさん:2006/08/11(金) 01:29:03
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Wether {
  short elem[240][240];
};

int convert_csv(char *infilename) {
  struct Wether *wether;
  int i;
  int j;
  FILE *infile;
  FILE *outfile;
  char *outfilename;
  char *outext;
  wether = (struct Wether *)malloc(sizeof(struct Wether));
  infile = fopen(infilename, "r");
  fread(wether, sizeof(struct Wether), 1, infile);
  fclose(infile);
885デフォルトの名無しさん:2006/08/11(金) 01:30:20
  outext = ".csv";
  outfilename = (char *)malloc(strlen(infilename) + strlen(outext) + 1);
  sprintf(outfilename, "%s%s", infilename, outext);
  outfile = fopen(outfilename, "w");
  free(outfilename);
  for (i = 0; i < 240; i++) {
    for (j = 0; j < 240; j++) {
      fprintf(outfile, "%d", wether->elem[i][j]);
      if (j < 240 - 1)
        fprintf(outfile, ",");
    }
    fprintf(outfile, "\n");
  }
  fclose(outfile);
  free(wether);
}

int main(int argc, char **argv) {
  int i;
  for (i = 1; i < argc; i++)
    convert_csv(argv[i]);
}
886643:2006/08/11(金) 05:06:22
おお!
できてる!すごいです。。>>884さんありがとうございます。
質問ですが>>885
convert_csv(argv[i]);のあとにreturn 0;
をつけても問題ないでしょうか?
887643:2006/08/11(金) 05:08:01
んで、こんな風に変えてみました。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Wether {
short elem[240][240];
};
int convert_csv(char *infilename) {
struct Wether *wether;
int i;
int j;
FILE *infile;
FILE *outfile;
char *outfilename;
char *outext;
wether = (struct Wether *)malloc(sizeof(struct Wether));//メモリ確保
if( wether == NULL ) /* 領域確保に失敗したか */{
printf( "%dバイトの領域確保に失敗", sizeof(struct Wether) );
return 1;
}
infile = fopen(infilename, "r");

if(infile == NULL){
fprintf(stderr,"cannot output to file.\n");//ファイルがないとき
return 0;
}
fread(wether, sizeof(struct Wether), 1, infile);
fclose(infile);
outext = ".csv";
888643:2006/08/11(金) 05:08:48
outfilename = (char *)malloc(strlen(infilename) + strlen(outext) + 1);
sprintf(outfilename, "%s%s", infilename, outext);
outfile = fopen(outfilename, "w");
free(outfilename);//メモリーの解放

for (i = 0; i < 240; i++)
{
for (j = 0; j < 240; j++)
{
fprintf(outfile, "%d", wether->elem[i][j]);

if (j < 240 - 1)
fprintf(outfile, ",");
}
fprintf(outfile, "\n");
}
fclose(outfile);
free(wether);//メモリーの解放
return 0;
}
/*メイン*/
int main(int argc, char **argv) {
int i;
for (i = 1; i < argc; i++)
convert_csv(argv[i]);
return 0;
}

889デフォルトの名無しさん:2006/08/11(金) 05:45:36
>>884じゃないけど、return 0;つけても問題ない
でも、最初のmalloc、fopenはエラーの処理やってるのに、二回目は何でやってないん?
あと、関数の戻り値が正常に終わった場合と途中で終わった場合で一緒になってる…のはどうでもいいか
890816:2006/08/11(金) 06:47:24
おー、解決したようで何より。
エラーチェックするならこの辺かな。
・fread()の戻り値でサイズ分読めたか
・malloc()の戻り値でメモリ確保できたか
・出力ファイルのfopen()の戻り値でファイルを作れるか
・fprintf()とfclose()でファイルを書けたか
まぁ、fopen()以外は致命的ではないか。
891643:2006/08/11(金) 07:12:56
>>816>>889さん
どうもありがとうございました。

もうひとつ気になることがありまして・・
もらったプリントのデータの型のところに
「符号なし整数」と書いてあります。
でも結果のデータを見ると
-2048とか-266とかばかり出てきてるのですが
これって結果としておかしいですか?
892816:2006/08/11(金) 07:27:54
>>891
それならshortをunsigned shortにすればよろしい。
それと、fprintf()の%dを%uも忘れずに。
#そのデータだと-2048→63488、-266→65270になって意味不明だけどね。
893デフォルトの名無しさん:2006/08/11(金) 07:29:53
>>891
そのデータの宣言にunsignedってつければいいんじゃないの?
int ⇒ ungigned int みたいな感じで。
ソース読んでないから知らないけど。
894816:2006/08/11(金) 07:40:04
>>893
それだけだと出力のfprintf()の%dで負になってしまう。
895デフォルトの名無しさん:2006/08/11(金) 07:50:06
>>894
いや、だから読んでないって言ってるじゃん。
そんな得意げに言われても…。
896デフォルトの名無しさん:2006/08/11(金) 07:52:06
ホルホル
897816:2006/08/11(金) 08:05:10
>>895
いや、だから読んでないことを得意げに語られても困るんだけど。
>893自体、漏れが既に>892で書いていることなんだし。
898デフォルトの名無しさん:2006/08/11(金) 08:09:25
ロダにあがってる答えには負値あるんだけどな
899デフォルトの名無しさん:2006/08/11(金) 08:13:47
>>897
ごめん。君、痛い。
900643:2006/08/11(金) 08:39:23
あの答えは、先生が作ったプログラムらしいのですが、
先生自体、気象の方でプログラム専門にやってる方では
ないのです。
バイナリデータ自体は実際に観測されてる
機械からとってるものだということで
そのデータ型が書いてある説明書を見たら
「符号なし整数 2byte 240*240」
と書いてあったのですが・・・
先生がまちがってるのだろうか・・・・。
901デフォルトの名無しさん:2006/08/11(金) 08:49:41
実際の機械から取ったデータとなると、ここで聞いたりしても
ファイルフォーマット合ってるのかどーかを知るのは絶望的だとおも
あとは先生に問いただすなりなんなりで
902デフォルトの名無しさん:2006/08/11(金) 14:12:50
[1] 授業単元: プログラミング及び演習4
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2579.zip
 wav_conc.cを修正し、
ヘッダ長にかかわらず複数のwavファイルを1つにできるようにせよ。
(ヘッダ長は読み込んだファイルのまま利用する。)
という問題です。
[3] 環境
 [3.1] OS: WindowsXPsp2,Vine3.2
 [3.2] コンパイラ名とバージョン:Visualstudio02,gcc3.3?
 [3.3] 言語: C
[4] 期限: なし
[5] その他の制限: なるべく関数は1つで。
読み込むファイルは、長さ・バイト数以外の値(stereo,16bit,44100Hzなど)は、
全て同一ということ前提だそうです。

※今のままでは58,44byte長のヘッダ形式しか結合できません。
丁度、サウンドレーコーダで録音したタイプと、Mediaフォルダ内にある物にあたります。
903デフォルトの名無しさん:2006/08/11(金) 14:42:43
宿題スレで「業務レベル?」のエラー処理を求めてもなぁ。

今までなんでscanf()には文句言わなかったんだ?
エラーチェックしてないコードなんて山のようにあっただろ?

つか、うざいよ、君。
904デフォルトの名無しさん:2006/08/11(金) 14:58:33
>>903
>>854
誰に対して書いているのか知らんが、少しはスレを読んでくれ。
905デフォルトの名無しさん:2006/08/11(金) 15:14:26
>>904
「実用的」ってとこか?
>>815のどこが実用的じゃなかったんだ?
906デフォルトの名無しさん:2006/08/11(金) 15:29:10
てか、>>884-885ってエラー処理なんかしてないじゃん。
それと「実用的な」エラー処理って、エラーメッセージを出すものなんだよ。
エラーコードをチェックしたって、何も言わずにプログラムが終わっちゃったら困るでしょ。
907816:2006/08/11(金) 15:36:46
うぁーははは、漏れが通して書き直さなかった所為か?
でも痛い香具師が書いたってまた叩かれるだろうからもう知らね。
908デフォルトの名無しさん:2006/08/11(金) 15:40:43
909デフォルトの名無しさん:2006/08/11(金) 15:41:51
>>902
全部読んだ。
疲れた。

WAVファイルの構造なんて普通知らんから、参考情報つけといて欲しい。
http://www2.tokyo-ct.ac.jp/~j/staff/kosaka/for_students/LectWAVE/LectWAVE.html
910デフォルトの名無しさん:2006/08/11(金) 15:45:21
>>907
いや、お前が>>816でくだらんチャチャを入れたせいだ。
911デフォルトの名無しさん:2006/08/11(金) 16:11:13
>>909
漏れも仕組み分からんな。。
 てかそこ開かなくね?
912デフォルトの名無しさん:2006/08/11(金) 16:16:07
>>911
俺も開けない。
つーか、wavの構造くらいだったらググれば他にあるだろうが、やる気が出ない。
913デフォルトの名無しさん:2006/08/11(金) 16:23:47
>>912
単純に連結させただけだと、一瞬間が空きそうなことぐらいしか。。
ファイル操作は苦手でね…orz

何か利用価値ありそうな物な気がするんだが。。
914デフォルトの名無しさん:2006/08/11(金) 16:26:57
え、wavファイルって基本的には時間軸に沿ったサンプリング値が並んでるだけじゃないの?

とか、構造を全く知らない俺が妄想してみた。
915デフォルトの名無しさん:2006/08/11(金) 16:49:31
>>911
たった数分のうちにサーバが落ちているようだ。
どこだ、このショボイ大学。
916デフォルトの名無しさん:2006/08/11(金) 19:14:27
>>914
ヘッダとかヘッダとか、ヘッダとか色々あるだろ。
俺もよく知らないけど、サンプリングレートとか違うファイル同士結合するのとか激しく面倒くさそうだ。
917デフォルトの名無しさん:2006/08/11(金) 19:18:52
よく読んでなかった。全て同一が前提か。誰が得するんだこの課題は。
918デフォルトの名無しさん:2006/08/11(金) 19:27:34
なんで損得なんか考えるんだ?
919デフォルトの名無しさん:2006/08/11(金) 21:16:31
>>912
どーせ形式決め打ちだし、ヘッダの雛形書いて、dataチャンクまで読み捨てて連結じゃダメかのう
920デフォルトの名無しさん:2006/08/11(金) 21:17:17
ミスorz
上のレスは>>902宛ね
921デフォルトの名無しさん:2006/08/11(金) 23:28:49
問題
DynamicProgrammingでプログラムを作成しなさい。対象とする問題は各自検討して下さい。
アルゴリズムの説明、プログラム、プログラムの説明、実行結果、考察等をまと
めて報告書とすること
922ど素人:2006/08/11(金) 23:35:15
こんばんは。よろしくお願いします。
[1] 授業単元:情報C
[2] 問題文1→”ABC=”という文字列に、0001から5000までの数字を
  順番に結合しファイルに記入するプログラムを作れ。
ex)ABC=0001 ABC=0002…ABC=5000
[3] 環境 Borland 5.6
 [3.1] OS: WindowsXP
 [3.2] ポインタを使用すること
 [3.3] 言語: Cのみ
[4] 期限 8月21日
[5]
923デフォルトの名無しさん:2006/08/11(金) 23:56:57
>>921
>>1を見てやり直し

>>922
ごめん、悪いけど問題文そのままコピペお願い
何がしたいのか分からない
924デフォルトの名無しさん:2006/08/12(土) 00:01:38
#include <stdio.h>
int main() { int i; for (i = 1; i <= 5000; i++) fprintf(stdout, "ABC=%04d\n", i);}
925デフォルトの名無しさん:2006/08/12(土) 00:02:48
>>922
これでいいのかな?
int main(void) {
int i;
FILE *fp;
fp = fopen("abc.txt", "w");
if(fp == NULL) {
return 0;
}

for(i = 1; i <= 5000; i++) {
fprintf(fp, "ABC=%04d\n", i);
}
fclose(fp);
return 0;
}
926デフォルトの名無しさん:2006/08/12(土) 00:04:53
strcat使えってことじゃね?
927ど素人:2006/08/12(土) 00:15:47
なんだかよくわからなかったのですが、
授業ではstrcatが出てきました。
文字列を結合させるとか足すとかするやつですよね?

その授業の後にさっきの問題を口頭で言われたのですが
自分で調べても全くわかりません。
strcatって難しいですね。
928デフォルトの名無しさん:2006/08/12(土) 00:19:44
strcatをポインタ使って作れか
929デフォルトの名無しさん:2006/08/12(土) 00:30:49
strcatよりfprintfの法が安全だな。
930ど素人:2006/08/12(土) 00:45:34
strcatを使ったやり方をどなたかお願いします!!
931デフォルトの名無しさん:2006/08/12(土) 00:53:24
それより何より抜けてる[5]が気になって眠れない。
932デフォルトの名無しさん:2006/08/12(土) 01:20:17
933デフォルトの名無しさん:2006/08/12(土) 01:29:29
>>932
 strcatを無理やり使うとそうなるわな。
でもそれなら>>925の方がすっきりしているという・・・。
fpもポインタなんだし、>>922の問題の条件は、
strcatを使わなくても満たされるように思う。
 というか、この問題でstrcatを無理やり使わせるのはアホ。
934932:2006/08/12(土) 01:35:49
>>932のソース return 0;の一行上にfclose(fp); をいれといてー
935デフォルトの名無しさん:2006/08/12(土) 01:37:56
>>932
いや、さすがにそれはダメでしょう。
936デフォルトの名無しさん:2006/08/12(土) 01:38:21
sにstrcatは流石に不味いと思う。 >>932

とりあえず、問題の条件や意図が判らなさ過ぎだな。
937デフォルトの名無しさん:2006/08/12(土) 01:45:04
真面目に答えてるつもりなんだか、ネタなんだか
938デフォルトの名無しさん:2006/08/12(土) 01:48:20
>>933
> strcatを無理やり使うとそうなるわな。

ならねーよ!w
939643:2006/08/12(土) 02:43:37
遅くなりましたが、回答を下さったみなさま
ありがとうございました。
提出しました・・・。
いったいどうなるのか不安ですが。
どうもありがとうございました〜。
940デフォルトの名無しさん:2006/08/12(土) 02:47:06
>>932
試してみたら俺の環境では正常に動いたわw
sが書込み禁止領域に置かれるような環境ではうまく動かんから>922は注意しろよ
941デフォルトの名無しさん:2006/08/12(土) 02:49:43
>>940
職業プログラマならすぐさま辞めろ。
プログラマを目指しているなら、あきらめろ。
ただの素人なら、いつまでも勘違いしてろ。
942デフォルトの名無しさん:2006/08/12(土) 02:54:52
>>932
死ね
943デフォルトの名無しさん:2006/08/12(土) 02:55:42
>>932=>>940でそ
944デフォルトの名無しさん:2006/08/12(土) 03:03:38
ウザいなぁ。ほらよ。

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

int main(void)
{
int i;
char buf[10], s[16] = "ABC=";
FILE *fp;

if ((fp = fopen("abc.txt", "w")) == NULL) {
exit(1);
}

for (i = 1; i <= 5000; i++) {
snprintf(buf, sizeof buf, "%04d", i);
strcat(s, buf);
fprintf(fp, "%s\n", s);
s[4]='\0';
}
fclose(fp);

return 0;
}
945932:2006/08/12(土) 03:25:46
>>942
イミフ
>>943
ちがいます。
946ど素人:2006/08/12(土) 04:04:21
ありがとうございます。友達に聞いてみたら続きがあったんです・・・。
[1] 授業単元:情報C
[2] 問題2→ABC=0000からABC=5000までの続き番号のファイルを一度に読み込む
  プログラムを作成しなさい。
  さらにファイルの中身を積算しなさい。
  ファイルの中には2*20の数値データが入っているものとする。
ex)ABC=0001 ABC=0002…ABC=5000
[3] 環境 Borland 5.6
 [3.1] OS: WindowsXP
 [3.2] ポインタを使用すること
 [3.3] 言語: Cのみ
[4] 期限 8月21日
[5]
947デフォルトの名無しさん:2006/08/12(土) 04:07:54
>>946
>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。

それと問題文が意味不明ですお
948デフォルトの名無しさん:2006/08/12(土) 04:10:46
まだ続きがあるかもしれないから、友達に10回確認しておけ。
949ど素人:2006/08/12(土) 04:43:22
申し訳ありません。
講義中に口頭での宿題の提示だったので
意味がわからない箇所が多いと思います。
もう一度、、
[1] 授業単元:情報C
[2] 問題2→ABC=0000からABC=5000までの続き番号のファイルを
一度に読み込みデータを積算処理するプログラムを作成しなさい。
    ファイルの中には2*20の数値データが入っているものとする。
[3] 環境 Borland 5.6
 [3.1] OS: WindowsXP
 [3.2] ポインタを使用すること
 [3.3] 言語: Cのみ
[4] 期限 8月21日
[5]
950デフォルトの名無しさん:2006/08/12(土) 04:44:19
超能力者に任せた
951デフォルトの名無しさん:2006/08/12(土) 04:59:12
>>949
言わんとしていることは分からないでも無いが
具体的にどういうファイルなのかを出して貰わないことにはどうしようもない
952デフォルトの名無しさん:2006/08/12(土) 05:05:16
5000 * 2 * 20個のデータを読み込んでから、積を求めるのか
953デフォルトの名無しさん:2006/08/12(土) 05:06:50
問題1との関連性がまったくなさそうなのが気になる
954ど素人:2006/08/12(土) 05:49:48
>>952
多分同じ項目同士を全部足し算しろ
という事ではないかと思います。
955ど素人:2006/08/12(土) 05:56:56
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2582.txt

こんなデータらしいですが・・・。
956デフォルトの名無しさん:2006/08/12(土) 06:18:14
意味がわからないのは口頭だからではなく、
お前が理解していないからだろうが。
957デフォルトの名無しさん:2006/08/12(土) 06:45:08
>>954
同じ項目ってのは何だ?
958ど素人:2006/08/12(土) 06:50:33
>>957
おはようございます。

一番目のファイルの1番目のデータと二番目以降のファイルの
1番目のデータをどんどんたしていく。
同じく一番目のファイルの2番目のデータと二番目以降のファイルの
2番目のデータをどんどんたしていく。
これを5000まで繰り返す。

つまり2*2番目は2*2番目同士全部たす。
2*4800番目は2*4800番目同士全部たす。
そして結果を出力すると言う意味ではないかと思います。
959デフォルトの名無しさん:2006/08/12(土) 06:56:30
iMonaなんでデータまでは確認してないが、20行2列で書かれてる
連番ファイルを読んで尿i1と尿i2を別々に出すのか、尿ijを出すのかはっきりしろ
960959:2006/08/12(土) 07:02:03
>>958
つまり各ファイルを2×50の行列とみて、行列の総和をとれってことか?
961デフォルトの名無しさん:2006/08/12(土) 07:20:34
積算処理って話はどうなった
962ど素人:2006/08/12(土) 07:23:15
尿ijを出すようです。
同じところにあるの数字をたしていくようです。
そうです。言ってみれば行列の総和を5000個とるんですね。
各ファイルのデータは2*20だそうです。
963デフォルトの名無しさん:2006/08/12(土) 07:26:56
煤i´A `i)j
964デフォルトの名無しさん:2006/08/12(土) 07:33:50
お前は何を言ってるんだ
もうサンプルをどうすりゃいいのか結果で示せ
965デフォルトの名無しさん:2006/08/12(土) 07:37:03
>>955
1. データがあるなら最初からだせ
2. そのデータは、途中から一行に三つの値が登場するようになるが、正しいのか?
966ど素人:2006/08/12(土) 07:53:44
967デフォルトの名無しさん:2006/08/12(土) 08:02:50
>>966
積算処理ってのは勘違いだったのかとか、最初にあげたデータは間違ってたのかとか
ちゃんと答えてくれ、結局おまいの書き込みのどれを信じればいいのかさっぱりだ
つか問題文ごとまとめなおしてくれ
968デフォルトの名無しさん:2006/08/12(土) 08:05:52
積算というのは和を取るってことだろ。
969デフォルトの名無しさん:2006/08/12(土) 08:11:03
>>958
>つまり2*2番目は2*2番目同士全部たす。

お願いだから、日本語を喋ってくれ。
970デフォルトの名無しさん:2006/08/12(土) 08:12:18
>>968
俺のほうが勘違いしすぎてたようだorz
スマソ
971デフォルトの名無しさん:2006/08/12(土) 08:14:25
>>949
どういうフォーマットのファイルがいくつあって、何をどのように計算するのか
もう一回まとめろ。
「ABC=0000からABC=5000までの続き番号のファイル」なんて、意味不明もいいところだ。
それから、0000なのか0001なのかもはっきりさせろ。
972デフォルトの名無しさん:2006/08/12(土) 08:26:19
>>949
質問テンプレの[3.2]はコンパイラ名とバージョンなわけだが
973デフォルトの名無しさん:2006/08/12(土) 08:37:39
お前ら、相手はドシロウトなんだから、そんなにいじめるな。
どうプログラミングするのかわからないから、説明に戸惑ってるというのもあるんだろう。
要領を得ない相手から、必要な情報を引き出すのも、要求工学だ。精進しろ。

俺は答える気ないから、質問しないけど。
974ど素人:2006/08/12(土) 08:51:19
ごめんなさい。
ええと、先ほど例としてあげた
データファイルの名前が、ABC=0000.txtから
ABC=0001.txt ABC=0002.txt ABC=0003.txt ABC=0004.txt
という風にABC=5000.txtまであるときに
それらのファイルの同じ要素ずつをすべて
積算する(和をとる)プログラム
を作っていただきたいのです。
多分先生がおっしゃってるのはそういう事ではないかと思います。
975デフォルトの名無しさん:2006/08/12(土) 09:02:17
例えば、以下のようなファイルがある場合、具体的な計算式を書いてみて。
5000ファイルとか20行とかは忘れて、3ファイルでそれぞれ2行の場合ね。

[ABC=0001.txt]
02107
0.12076

[ABC=0002.txt]
4.22096
4.32063

[ABC=0003.txt]
26.32087
26.42133
976デフォルトの名無しさん:2006/08/12(土) 09:04:19
訂正。

[ABC=0001.txt]
0     2107
0.1  2076

[ABC=0002.txt]
4.2  2096
4.3  2063

[ABC=0003.txt]
26.3  2087
26.4  2133
977ど素人:2006/08/12(土) 09:11:16
[ABC=0001.txt]
02107  2423
0.12076 2653

[ABC=0002.txt]
4.22096 2564 
4.32063 5946

[ABC=0003.txt]
26.32087 2659
26.42133 4579

[ABC.txt]
D E
F G

計算結果がABC.txtにり、データの位置がD、E、F、Gなら
Dには02107 +4.22096 +26.32087 の答えが入る。
Eには2423+2564+2659の答え
Fには0.12076 +4.32063 +26.42133 の答え
Gには2653+5946+4579の答えが入る。
つまり同じ位置の数値が5000ファイル分足される。。。。
978デフォルトの名無しさん:2006/08/12(土) 09:17:13
ははぁ、やっとわかった。
その計算に意味があるのかどうかと、5000ファイルを一度に読み込む必要が
あるのかどうかが俺にはわからないが、時間があればやってみよう。
他の誰かが解答したらやらないけど。
979ど素人:2006/08/12(土) 09:22:53
おそらく、大量のファイルを一度に処理できる
と言うところがおいしいところなのではないかと
思います。。。。
おいしいとは思いますが、
ど素人にはむしろ難しく・・・。

どうぞよろしくお願いいたします。
980デフォルトの名無しさん:2006/08/12(土) 09:26:56
981978:2006/08/12(土) 09:29:58
>>980
うーん、そういうのでいいんだろうか・・・
という疑問を残しつつ、テストデータ作成プログラムを。

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

int main()
{
FILE* fp;
int i;
int j = 0;
char buf[16];

for (i = 0; i < 5000; i++) {
sprintf(buf, "ABC=%04d.txt", i + 1);
fp = fopen(buf, "w");
for (j = 0; j < 20; j++) {
fprintf(fp, "%.1f %d\n", j / 10.0 + i * 2, rand() % 3000);
}
fclose(fp);
}

return 0;
}
982978:2006/08/12(土) 09:32:35
あ、0000〜5000が正解か。
for文の5000を5001に変更。
983978:2006/08/12(土) 09:33:55
だと駄目だな orz
これで。

for (i = 0; i < 5001; i++) {
sprintf(buf, "ABC=%04d.txt", i);
fp = fopen(buf, "w");
for (j = 0; j < 20; j++) {
fprintf(fp, "%.1f %d\n", j / 10.0 + i * 2, rand() % 3000);
}
fclose(fp);
}
984980:2006/08/12(土) 09:34:08
標準出力でなくABC.txtに出力するように修正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2587.c

>>981
>うーん、そういうのでいいんだろうか・・・
何かおかしいところがある?
985978:2006/08/12(土) 09:36:49
>>984
それだと逐次的に読み込んで処理するということになるから、題意に沿ってるのかなぁと。
まあ「ど素人」(失礼)の言うことなので、それでいいのかも。
986980:2006/08/12(土) 09:42:32
「一度に」は「プログラムの一回の実行で」くらいの意味に取ったんだが。
それとも、Windowsでは5001ファイルを同時に開けるのか?
987ど素人:2006/08/12(土) 09:43:20
ありがとうございます。

プロまたは玄人のみなさんからすると
この問題おかしいですか?
ど素人からすると、
一気に5000個のファイルを処理できるおいしい
プログラムに思えますが・・・・。
988978:2006/08/12(土) 09:46:50
>>986
質問者がいいというのだからいいのでしょう。
989ど素人:2006/08/12(土) 09:52:00
ど素人なので、どういうものが標準なのか
よくわかりません。。。
本当に°素人です
990デフォルトの名無しさん:2006/08/12(土) 09:55:05
>>986
君も素人でしょ。
二行目が特に。
991ど素人:2006/08/12(土) 09:59:01
>>980にゃ。。
問題1の答えありがとうございました。

問題2の方もよろしくお願いいたします。
992デフォルトの名無しさん:2006/08/12(土) 10:00:28
それ本気で言ってるのか?

騙りか?
993980:2006/08/12(土) 10:07:02
>>990
俺も素人だが、だからなんだ?
994デフォルトの名無しさん:2006/08/12(土) 10:09:56
別に〜w
995デフォルトの名無しさん:2006/08/12(土) 10:13:59
誰か次スレ立てろ。
次は74代目らしいぞ。
996デフォルトの名無しさん:2006/08/12(土) 10:15:35
じゃぁ俺たててみる
997デフォルトの名無しさん:2006/08/12(土) 10:25:42
ぼるじょあがC/C++の宿題を片づけますYO! 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149349035/

このスレは使い回さないのか?
998デフォルトの名無しさん:2006/08/12(土) 13:05:39
次スレ
C/C++の宿題を片付けます 73代目
http://pc8.2ch.net/test/read.cgi/tech/1155355501/

スレ番修正済み
999デフォルトの名無しさん:2006/08/12(土) 13:40:50
なんで74じゃないんだろ
1000デフォルトの名無しさん:2006/08/12(土) 13:49:58
jふぁ;おれhぎlhヴぁ:いおえfじゃ:おりjが@いhgら
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。