トップページ⇒tech
1001コメント358KB

宿題手伝います

■ このスレッドは過去ログ倉庫に格納されています
0001RinaNGNG
夏休みなので厨対策に新スレ立てました.
前スレ:http://pc3.2ch.net/test/read.cgi/tech/1026138039/

前スレより抜粋.

1 :かおる :02/07/08 23:20
こんにちは。えれなの妹のかおるです。

前スレは恭祐さんの「ほう、宿題とはな。」です。
http://pc.2ch.net/test/read.cgi/tech/1024592344/
それ以前の人たちは、>>2-10あたりにかかれるでしょう。

宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること
・質問内容がちゃんと日本語になっていること
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。このスレだけのおつきあいですが、よろしくおながいします。

2 :デフォルトの名無しさん :02/07/08 23:21
手助けはするな、助言はしてやれ。

3 :かおる :02/07/08 23:22
登場人物&過去スレ 1/2

●お姉さん
あなたの宿題、お姉さんが答えます
http://piza.2ch.net/tech/kako/972/972032579.html
で登場。

●麻衣
お兄ちゃんの宿題、私が答えるよ
http://pc.2ch.net/tech/kako/982/982853418.html
で初登場。可愛い妹キャラ

●お兄ちゃん(名称不明)
宿題見てやるよ
http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
で初登場。しかし、女性がいいという影の圧力により
1以外には登場せず。

●怜
宿題みてあげるっ
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
で初登場。お兄ちゃんの恋人。
結構親切に答えてくれる年上キャラ。
0002デフォルトの名無しさんNGNG
にげっとかな?
0003デフォルトの名無しさんNGNG
>>1
乙
対応が早いね。
0004Rina ◆tI333vNE NGNG
1です.
前スレ常駐してたわけではないので,
常連さんで気がついたリンクあったら書き足しておいてください.
0005デフォルトの名無しさんNGNG
>>4
前スレの内積、
 if (n == 0) {
  return 0.0;
 }
↑これいらなくない?
0006Rina ◆tI333vNE NGNG
ちなみにRinaはJavaとCとPHPぐらいしかできません.
C/C++の宿題は専用スレがあるのでこちらへどうぞ.
  http://pc3.2ch.net/test/read.cgi/tech/1021862587/l50
0007Rina ◆tI333vNE NGNG
>>5 ボタン押してから気がついたので突っ込まないようにw
0008デフォルトの名無しさんNGNG
前スレは『かおる』ですが何か?
0009おねがいします!NGNG
大学の課題でどーしてもわからないのがあります。
(問題)数を12個読み込む。それぞれが車の月間売り上げ数だとする。
売り上げが一番多かった月、売り上げが一番伸びた月を見つけて印刷する
プログラム(Hanbai)を書きなさい。というものです。おそらく配列を使う
らしいのですが。言語はjavaです。

言語はjavaです。
0010デフォルトの名無しさんNGNG
印刷するの?
0011デフォルトの名無しさんNGNG
>>10
多分日本人に理解しやすいように和訳してくれてるんだと思われ。
0012デフォルトの名無しさんNGNG
一月の売上の伸びが分からないという罠
0013おねがいします!NGNG
印刷というか多分それを書き出すプログラム?なのかなあ。
自分でもよくわかりません。はあーー。
0014デフォルトの名無しさんNGNG
(・∀・)
0015デフォルトの名無しさんNGNG
>>14
ワラタ
0016デフォルトの名無しさんNGNG
>>9
どこがわからないんだ。(複数可)
1) 数の読み込み
2) 12個の読み込み
3) 売り上げの一番多かった月の見つけ方
4) 売り上げの一番伸びた月の見つけ方
5) 3) 4) の結果の印刷(標準出力への表示でいいのか?)の仕方
6) Javaのコンパイル、実行
7) Javaのソースの書き方

配列は1)2)で読み込んだ月間売り上げ数を保持するのに使用し、
それを3)4)で使う。
0017名無しさん@カラアゲうまうまNGNG
売り上げの伸びって前月比? だと>>12の問題がある。
0018デフォルトの名無しさんNGNG
>>17
無論、1月は除外でしょ?って解釈は駄目なん?
0019名無しさん@カラアゲうまうまNGNG
>>18
つーことを明確にしてない問題が欠陥仕様。
0020デフォルトの名無しさんNGNG
「仕様が不明確です」と言うかどうかも採点対象という罠
0021デフォルトの名無しさんNGNG
書き込もうと思ったら改行が多すぎって突っ込まれた罠.
0022デフォルトの名無しさんNGNG
すまん、sage忘れた. 意ってきます.
0023デフォルトの名無しさんNGNG
普段Javaをメインで使っている人物が、今は出払っている罠
0024Rina ◆tI333vNE NGNG
いや、テケトーに作ったのがあるんだけど書き込めない…(汗
いっそ改行とっぱらって書き込もうか…。
0025デフォルトの名無しさんNGNG
>>24
いくつかのレスに分けたらよいのでは?
0026Rina ◆tI333vNE NGNG
import java.io.*;

//エラー処理は一切してない.
public class Hanbai {
/**
* 12ヶ月分のデータを読む.
*
* データフォーマットの指定がなかったので, 1行につき1月分の
* 売り上げが書き込まれたテキストファイルだと仮定.
*/
public static int[] readData(String dataFileName) {
BufferedReader in = null;
// 開ける
try {
FileReader fileReader =
new FileReader(dataFileName);
in = new BufferedReader(fileReader);
} catch (Exception e) {
e.printStackTrace();
System.out.println("も、もうだめぽ…");
System.exit(1);
}

// 読む
int[] result = new int[12];
for (int i = 0 ; i < result.length ; i++) {
try {
String tmp = in.readLine();
result[i] = Integer.parseInt(tmp);
} catch (Exception e) {
e.printStackTrace();
System.out.println("データファイルがなってねーよ, ハゲ");
System.exit(1);
}
}

// 閉じる
try {
in.close();
} catch (Exception e) {
// do nothing.
}

return result;
}
0027Rina ◆tI333vNE NGNG
// main
public static void main(String[] args) {
int[] tmp = readData("datafile");

printMax(tmp);

printMaxDiff(tmp);
}

/**
* 最大売り上げの月を表示
*/
public static void printMax(int[] data) {
System.out.println("売り上げが最大なのは");
System.out.print(" ");

int max = data[0];
for (int i = 1 ; i < data.length ; i++) {
if (data[i] > max) {
max = data[i];
}
}

for (int i = 0 ; i < data.length ; i++) {
if (data[i] == max) {
System.out.print((i + 1) + "月 ");
}
}
System.out.println();
}


/**
* 差分が最大な月を求める.
*/
public static void printMaxDiff(int[] data) {
System.out.println("売り上げの伸びが最大なのは");

int maxDiff = data[1] - data[0];
for (int i = 1 ; i < data.length - 1 ; i++) {
int diff = data[i + 1] - data[i];
if ( diff > maxDiff) {
maxDiff = diff;
}
}

for (int i = 0 ; i < data.length - 1 ; i++) {
if ((data[i + 1] - data[i]) == maxDiff) {
System.out.println(" " + (i + 1) + "月 -> " + (i + 2) + "月");
}
}
}
}
0028デフォルトの名無しさんNGNG
けっこう長くなるんだね。
0029Rina ◆tI333vNE NGNG
もっと短く, かつ効率的にできるけどやってない.
コメントの分もあると思われ.
必要なら>>9がやるでしょう.
0030デフォルトの名無しさんNGNG
てか、配列使う必要性あんの?
0031おねがいします!NGNG
ありがとうございます!!
かなり助かりました。ちょっと感動。。。
0032Rina ◆tI333vNE NGNG
使わない方法教えて, 気になる.
使った方がコードの見通しがいいと思ったんだけど.
0033デフォルトの名無しさんNGNG
>>32
最大値の候補だけ保持しとくとか?
0034デフォルトの名無しさんNGNG
>>33
売上の最大の月が複数あったらどうすんだ ? 結局配列が必要だよ。
0035Rina ◆tI333vNE NGNG
>>34
だよね…あせったよw
0036デフォルトの名無しさんNGNG
>>35
脱げ
0037Rina ◆tI333vNE NGNG
マジですか(汗
当方、ぶちゃいくなので止めといたほうがいいと思われ.
0038デフォルトの名無しさんNGNG
>>37
ブス専もいるんだよ。この世には。
0039Rina ◆tI333vNE NGNG
ガクガクブルブルΣ((((゜Д゜)))ガクガクブルブル
0040デフォルトの名無しさんNGNG
>配列
Collections Framework を使えということではないか?
0041Rina@Nethack ◆tI333vNE NGNG
…納得.
0042Rina ◆tI333vNE NGNG
実は私が厨だというワナ
0043おねがいします!NGNG
もう一つ。日付けを2つ記入して、その間の日数を書き出すプログラム(Nissuu.Java)を作りなさい。
という問題です。何度もごめんなさい。
実行例はこんなかんじらしい。
日付けを2つ記入してください。
何年? 2002
何月? 7
何日? 27
何年? 2003
何月? 7
何日? 27
日数は365日です。
その年はうるう年かどうかを考えなきゃいけないし。。。
何月は何日あるのかということは、
int month[]=new int[12];
month[0]=31; month[1]=28; month[2]=31; month[3]=30;
month[4]=31; month[5]=30; month[6]=31; month[7]=31;
month[8]=30; month[9]=31; month[10]=30; month[11]=31;
でたぶん配列を使うのかなー。
こうしておくとX月Y日が1月1日から数えて何日目かは、
days=0;
for(i=0; i< x-1; i++)days= days+month[i];
days=days+y-1;
2002年の4月1日と2002年の7月27日の間に何日あるかは、2002年の
4月1日が1月1日からP日あって、2002年の7月27日がQ日あるとすると
Q-Pで求まると書いてあります。
0044デフォルトの名無しさんNGNG
>>43
素直にtimeに頼りなさい。
0045Rina ◆tI333vNE NGNG
今Windows起動しててJavaかけないんで
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Calendar.html
これで我慢してください。
0046▽・w・▽NGNG
いつのまにか新しくなってる・・。
0047デフォルトの名無しさんNGNG
>>43
それだけ分かってれば書けるだろ?
何が分からないんだ?
0048おねNGNG
閏年の時はどうすればいいかわからなかった(泣)
0049Rina ◆tI333vNE NGNG
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
// うるう年
}
0050デフォルトの名無しさんNGNG
何故Winを起動しえいたらJavaが書けないのだ?
0051Rina ◆tI333vNE NGNG
>>50
Windows版のSDKが入ってなかったり、デュアルブートだから
再起動が面倒だったり、Meadowの使い心地がイマイチだったり。
0052デフォルトの名無しさんNGNG
>>51
この程度のコードにコンパイル確認なんかいらんだろ。
0053Rina ◆tI333vNE NGNG
メモ帳で打つのも嫌。
ごめんなさい、emacsマンセーなんです。
0054デフォルトの名無しさんNGNG
xyzzyを薦めてみる・・・
0055デフォルトの名無しさんNGNG
>>53
俺なんかココでお試しコード書くときは、このテキストエリアに
直書きするぞ(藁
0056デフォルトの名無しさんNGNG
環境に優しい>>55のいるスレ
0057Rina ◆tI333vNE NGNG
>>54
これいいね。五目並べまでついてるのは笑ったw

んじゃー早速コードを。

import java.util.*;

public class Nissuu {
public static void main(String[] args) {
hoge();
}

public abstract void hoge();
}

これを継承すれば問題ない。

・・・すんません、ネタです。ご飯食べたら書きますので
何卒ご容赦を。
0058デフォルトの名無しさんNGNG
Cです。

int i;
if(&i) ;

この条件式が必ず真となることを証明せよ。


全然分かりません・・・
0059デフォルトの名無しさんNGNG
>>58

・auto変数はスタックに確保される
・そのアドレスは当然ながら、NULL(0)ではない
0060デフォルトの名無しさんNGNG
if(&i)はif(&i!=0)と等価です。
0はpointerとしてはヌルポインタを表すため、&iがヌルポインタで
ないことを判定しているわけです。ヌルポインタはいかなるオブジェクトも
指し示さないポインタであることが保証されているためiというオブジェクト
を指す&iとは絶対に一致しません。よってif(&i)は真となります。
0061デフォルトの名無しさんNGNG
>>58

つーか、こんなのを課題に出す意図がちょっと不明。
「C言語」そのものを学ぶことにどういう必要性があるんだろう?
0062デフォルトの名無しさんNGNG
>>61
どういう授業の課題かにもよるんじゃない?
0063Rina ◆tI333vNE NGNG
Athron1G,メモリ256での結果。
Java>gcc>.NET 71回
Java=gcc>.Net 6回
gcc>Java>.Net 23回

とりあえず100回やってみました。

じゃークライアントから電話掛かってきたのでお仕事いってきます。
…行きたくない。
0064Rina ◆tI333vNE NGNG
誤爆しました、逝ってきます。
0065デフォルトの名無しさんNGNG
>>63
スレチガイ
0066デフォルトの名無しさんNGNG
>>1に長文書くな
このスレ立てた香具師は回線で首吊って氏ね
0067デフォルトの名無しさんNGNG
>>66
さっきまでいたけどお仕事に出かけていったよ
0068デフォルトの名無しさんNGNG
強気な女(・∀・)イイ!!
>>1
ケコーンしてください。
0069デフォルトの名無しさんNGNG
66はRinaに構ってもらいたいんだね、きっと (・∀・)ニヤニヤ
0070デフォルトの名無しさんNGNG
まあ、ネカ(以下略
0071デフォルトの名無しさんNGNG
Rinaさんって女性なの?
じつは稲川亮二→R・inaとか?
0072デフォルトの名無しさんNGNG
>じつは稲川亮二→R・inaとか?
いやーん
0073デフォルトの名無しさんNGNG
すいません私も丸書きさせてもらいます。本当に分かりません。
誰か助けてください。
「x円(x>=0)を1円玉、5円玉、10円玉、50円玉、100円玉、500円玉 
で両替する方が何通りあるかを調べるプログラムを作成せよ。」
0円を両替する方法は1通り、マイナスの金額を両替する方法は0通りにしろ
とのヒントがついています。どなたかよろしくお願いします。
0074デフォルトの名無しさんNGNG
言語は?
0075デフォルトの名無しさんNGNG
すいません73、C言語です
0076デフォルトの名無しさんNGNG
500円から割っていって、その個数を1ずつ減らしていけば
いいんじゃない...?
007773NGNG
すいません、、、なんとか書いていただけないでしょうか。
ずうずうしいこと言って本当にすいません。
0078デフォルトの名無しさんNGNG
数式書いてよ。
そしたら、実装するよ。
0079こんなんどう?NGNG
#include <stdio.h>


int ryogae(int x, int coin, int d)
{
if( coin <= 1 ) return 1;

int c = 0;

int max_i = x / coin;

int i;
for(i = 0; i <= max_i; ++i)
{
c += ryogae(x - coin * i, coin / d, 7 - d);
}

return c;
}


int ryogaesousuu(int x)
{
if( x <= 0 ) return 1;

return ryogae(x, 500, 5);
}


int main()
{
int x = 0;

scanf("%d", &x);

printf("%d\n", ryogaesousuu(x));

return 0;
}
008079NGNG
あ、だめっぽいすまん
008179NGNG
いや、あっているとおもう
0082分かりやすさ優先NGNG
>>73
#include <stdio.h>

int exchange(int x){
int c=0,y1,y5,y10,y50,y100,y500;

if(c<0) return 0 ;

for(y500=0;y500<=x;y500+=500)
for(y100=0;y500+y100<=x;y100+=100)
for(y50=0;y500+y100+y50<=x;y50+=50)
for(y10=0;y500+y100+y50+y10<=x;y10+=10)
for(y5=0;y500+y100+y50+y10+y5<=x;y5+=5)
for(y1=0;y500+y100+y50+y10+y5+y1<=x;y1+=1)
if(y500+y100+y50+y10+y5+y1==x) c++;

return c ;
}

int main(){
int x;
printf("いくら?");scanf("%d",&x);
printf("%d通り\n",exchange(x)) ;
return 0 ;
}
0083デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

static int coins[] = { 1, 5, 10, 50, 100, 500 };
static int n_coins = sizeof(coins)/sizeof(coins[0]);

int countup( int x, int n ) {
if ( x == 0 ) return 1;
if ( x < 0 || n < 0 ) return 0;
return countup( x - coins[n], n ) + countup( x, n - 1 );
}

int main( int argc, char **argv ) {
int x, ans;
if ( argc != 2 )
return 1;
x = atoi( argv[1] );
if ( x < 0 )
ans = 0;
else
ans = countup( x, n_coins - 1 );
printf( "%d\n", ans );
return 0;
}
008479NGNG
いまさらながら、さっきの直した。
#include <stdio.h>

int ryogae(int x, int coin, int d)
{
if( coin <= 1 ) return 1;

int c = 0;

int max_i = x / coin;

int i;
for(i = 0; i <= max_i; ++i) c += ryogae(x - coin * i, coin / d, 7 - d);

return c;
}

int ryogaesousuu(int x) { if( x < 0 ) return 0; return ryogae(x, 500, 5); }

int main()
{
int x = 0;

scanf("%d", &x);

printf("%d\n", ryogaesousuu(x));

return 0;
}
0085デフォルトの名無しさんNGNG
forの6重ループ。
ここに直で書いてたら、もう出てたという罠。
008683NGNG
if ( x < 0 )
ans = 0;
else
これいらないやゴメン
008779NGNG
>他の回答者さんたち
テストがてら、各xに対する組み合わせ数でもはりませんか?
008883NGNG
あってるかな?
x = 10 => 4
x = 50 => 37
x = 100 => 159
x = 150 => 451
x = 500 => 19162
008979NGNG
>>88(>>83)
同じになりました!
009082NGNG
x=10 => 4
x=50 => 37
x=100 => 159
x=150 => 451
x=500 => 19162
009179NGNG
をを!いいかんじ。
ただ、>>73はどこにいったのか?
009282NGNG
しかしなんというか…、つっこみたくなる
> 7 - d
009379NGNG
>>92
だめっすか?
009483NGNG
(;´∀`)=3 よかった。ってSchemeで書いてあった見本をCに翻訳しただけなんだけど
x = 1000 => 248908
5000とか入れると止まっちゃうねえ。もっと速いアルゴリズムないのかな
009582NGNG
いや…、よく気づくね
009679NGNG
>>95
思いついたときはうれしかったっす。
0097デフォルトの名無しさんNGNG
再帰と7-dによる>>79と、6重ループの>>82では、
どっちが評価高いんでしょ。
cの宿題的には、>>79もありかもネ。
009879NGNG
速さは>>82が一番だろうね。
009982NGNG
いやいや>>82は一番遅い。

82を5重ループにすれば、
オーダーで言えば再帰にしろループにしろ
全てカウントするタイプだからどれも同じ程度
010082NGNG
と思ったら>>83もそのままだと>>82程度だった
010179NGNG
他人の宿題ながら、なんだか楽しかった。
■ このスレッドは過去ログ倉庫に格納されています