[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 01/02 08:45 / Filesize : 213 KB / Number-of Response : 531
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 90代目
pc11.2ch.net/test/read.cgi/tech/1181802185/

331 名前:デフォルトの名無しさん [2007/06/27(水) 00:03:30 ]
綺麗なソースを作ろうと思い、セオリーを守ってる(グローバル変数を極力使わないようにしてる・・・etc)が
実に汚いソースになる。
汚いと分かっていながらどこをどの様に修正すれば良いのか皆目検討つかないから困る。

助けて・・・。

332 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:08:28 ]
>>324
ありがとう
できればもう少し詳しく説明して欲しいです

333 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:17:42 ]
>>331
広域変数は悪じゃない
staticで外部モジュールから参照できないようにするとか
きっちり管理さえすれば忌み嫌うものではない
むしろ広域変数を無理に避けようとして余計マズい設計になることの方が、本来避けるべき

>>332
これ以上詳しく説明しろといわれてもな
Cで使ってる以上は、constにさえ気をつければ初期化も代入もそんな大層な差はない
C++だとまた話が変わってくるんだけど
具体例見るのが一番手っ取り早いから、いろいろ調べてみ

334 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:18:49 ]
>>308 1と2をとりあえず先に
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4414.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4415.c

335 名前:332 mailto:sage [2007/06/27(水) 00:26:28 ]
>>333
わかりました
色々ありがとうございました!


336 名前:331 [2007/06/27(水) 00:28:34 ]
>>333
うん。
今日、指摘された。
staticのスコープは定義された箇所のみが有効範囲だよね?
でもアドレス渡ししたらスコープ外の場所でも値を書き換えたり出来る?

多分、出来たとしてもやっちゃ駄目なんだろうけど・・・。




337 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:38:00 ]
どうでもよいが>>331よ。それは宿題の話なのか。
C言語に関する一般的な相談事ならスレ違いだぞよ。

338 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:41:11 ]
>>336
そう、staticは参照の範囲を同一のファイル内だけに限定できる。
そして、指摘の通り

int g_data = 0;  // 広域変数
int *getGlobal(void) { return &g_data; }

みたいなのも、手法としてはある。
利点は、広域変数をモジュールの中に置ける事で、Cでオブジェクト指向もどきな設計ができること。
反面、C++のgetterと違ってポインタを取得できてしまうから、それを通じて外から値を書き換えてしまうこともできる。
でもgotoと一緒で使いどころさえ間違えなければ大丈夫。

339 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:52:26 ]
>>320
再帰で(3)
int arr_max_pos(int arr[], int n){return n?arr[n-1]>arr[arr_max_pos(arr,n-1)]?n-1:arr_max_pos(arr,n-1):0;}



340 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:57:16 ]
>>320 (1)
int div_pow(int n,int p){return n%p?0:div_pow(n/p,p)+1;}
int div_quo(int n,int p){return n%p?n:div_quo(n/p,p);}

341 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:59:12 ]
>>308
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4414.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4415.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4416.c

342 名前:デフォルトの名無しさん [2007/06/27(水) 06:44:44 ]
関数内で宣言したstatic変数(下の例ではa__)を自在にいじりたいなら…
下品だけどねw

static int a;

int hoge(){
  static int a__ = 123;
  a = a__;
  return(0);
}

int getglobal(){
  a+=10;
  return(a);
}

int main(){
  hoge();
  printf("%d", getglobal());
  return(0);
}

343 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 06:50:26 ]
意味分らん

344 名前:デフォルトの名無しさん [2007/06/27(水) 07:25:54 ]
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):
以下の式のおいて、刻み幅が0.2のときの解析解をオイラー法で求めよ。

y(0)=0 y'(0)=0
y'=z
z'=-z-2y+cosx

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc-2.95
 [3.3] 言語: C、C++どちらでも良い
[4] 期限:6/27
[5] その他の制限:

お手上げ状態です。よろしくお願いします。

345 名前:デフォルトの名無しさん [2007/06/27(水) 08:43:25 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 多次元配列
次の表は今年の全日本大学野球選手権における
早稲田大学の試合結果である。

2回戦 1 2 3 4 5 6 7 8 9
 早稲田大 0 0 1 0 1 0 0 0 0
九州国際大 0 0 0 0 0 0 0 0 1
準々決勝
 早稲田大 0 5 4 0 0 0 0 0 7
関西国際大 0 0 0 0 3 0 0 0 0
準決勝
  創価大 1 0 0 0 0 0 0 0 0
 早稲田大 6 0 0 1 0 1 0 2 0
決勝
 早稲田大 1 0 0 2 0 0 1 0 0
  東海大 0 0 0 0 0 1 0 0 0
それぞれの試合について各回の得点と失点(表裏ではないので注意)を 2×9の2次元配列に格納するものとする。
試合分のデータがあるので、4×2×9の3次元配列scoreを用意して、得失点を配列の宣言と同時に初期値として格納しなさい。
また以下の内容を計算して出力しなさい。
4試合の平均得点と平均失点
各回ごと(1から9回)の4試合の平均得点と平均失点
多次元配列の要素を参照するには‥多重ループを使う
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C [4] 期限:来週まで
[5] その他の制限: 特になし
お願いします


346 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:11:52 ]
クソ簡単やないか
なめとんか

347 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:15:34 ]
>>344
y' = z とう条件は不要なんじゃないかと思うが

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

#define N 100

double f(double y, double z)
{
 return -z - 2.0 * y + cos(y);
}

int main(void)
{
 double y[N], z[N], dx = 0.2;
 int i;

 y[0] = z[0] = 0.0;

 for (i = 0; i < N; i++) {
  y[i] = y[0] + i * dx;
  z[i + 1] = z[i] + dx * f(y[i], z[i]);
  printf("y = %f, z = %f\n", y[i], z[i]);
 }

 return 0;
}

348 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:20:12 ]
>>347
師匠。

349 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:23:34 ]
やべえ
 double y[N], z[N], dx = 0.2;

 double y[N + 1], z[N + 1], dx = 0.2;
に直しておいてくれ。

あとf()のcos(y)は題意ではcos(x)になっているが間違いだよな?



350 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:24:42 ]
問題には cosx ってあるが cos y で宜しいんかな?

351 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:27:55 ]
cos x だったとしたら解けん。

352 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:40:57 ]
>>319
#include <stdio.h>
int mycmp(char *m1 ,char *m2)
{
while (*m1 != '\0')
if(*m1++ != *m2++)
return 0;

if(*m1 == *m2)
return 1;
}
int main(int argc, char *argv[])
{
char m1[256], m2[256];
FILE *fp;
fp = fopen(argv[1], "r");
fgets(m1,256,fp);
fgets(m2,256,fp);
fclose(fp);
if(mycmp(m1, m2))
puts("yes");
else
puts("no");
return 0;
}
エラー処理はしてないにょ。動かしてもいないけど、これ以上は自分で。
ちゃんと授業を受けるか、さもなくばIT関連の就職先はあきらめろ。


353 名前:デフォルトの名無しさん [2007/06/27(水) 11:36:26 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
「在庫問題」
ある倉庫を考える。この倉庫は営業開始時において、毎日Sトンの初期在庫量を有する。1日の注文量rが確率的に発生するとき、営業終了時間の最終在庫量(S>rの場合)、不足量(S<rの場合)とする。
注文量rが正規分布N(100,20^2);すなわち平均100、標準偏差20の正規分布に従う乱数と仮定する。

平均100、標準偏差20の正規分布に従う乱数は以下で求められる。
0以上、1以下の一様実数乱数をUiとする。それを次式に代入することによって、標準正規乱数Xとなる。
X=U1+U2+……U12-6
Xを次式に代入することによってY(標準偏差20の正規分布に従う乱数)となる。
Y=20X+100

維持費:1トンにつき120円(最終在庫量に対して)
品切損失:1トンにつき180円(不足量に対して)
補充経費:1回につき15000円(補充量に依存せず)
総経費:維持費+品切損失+補充経費

(1)補充発注に関して、自分の採用した決定方法を述べよ。
   これは、
   2日目以降の初期在庫量が毎回200トンになるようにする。
   例えば、第一日目の初期在庫量が125トンだから、その日の注文量が100だとすると125−100=25で最終在庫量25トンだから、その日の
   補充量は200−25=175で175トン発注するというふうにする。
(2)そのような補充を行い、1000日間の、初期在庫量、最終在庫量、補充量、総経費について、1日あたりの平均値を求めよ。
   なお、第一日目の初期在庫量を125トンとする。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: どちらでも可
[4] 期限: 2007年06月28日12:00まで
[5] その他の制限: なし

度々すいませんm(__)m

354 名前:デフォルトの名無しさん [2007/06/27(水) 13:07:42 ]
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
1.まず、 pwd を実行し、成功すれば、 ls を実行する。
ただし、コマンドライン引数はすべてls にそのまま渡すものとする。
2.オプション -c があれば、 date を実行し、その後、 cal を実行する。
オプションを指定しなければ、 date だけを実行する。
ただし、オプション -z timezone があれば、 環境変数TZの値をtimezoneに設定して、各コマンドを実行する。
3.findコマンドを呼び出して、指定されたディレクトリ
(複数可。指定がない場合は、カレントディレクトリ)
以下にあるディレクトリ(指定されたディレクトリ自身も含む)を表示する。
↓サンプルプログラム
pwdを実行し、成功すれば、その後、ls -lを実行するプログラム
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4420.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4421.c
[3] 環境
 [3.1] OS:Vine Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:来週まで
[5] その他の制限:なし

よろしくお願いします。

355 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 13:35:02 ]
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク):
 インサートソートに関する問題
 左からつめる方式の昇順アルゴリズムである次のソートプログラムを、右からつめる
降順に書き直せ。
ソートプログラム
 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4422.txt
 inp1.datというファイルには、20個の2桁の整数が入っているものとする。
[3] 環境
 [3.1] OS:Windows XP
 [3.3] 言語:C言語
[4] 期限:6月28日(木)まで

 お願いします


356 名前:バケツ mailto:age [2007/06/27(水) 13:50:59 ]
[1] 授業単元:C言語演習2
[2] 問題文(含コード&リンク):
バケツ法-並び替え(詳細は後述)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限: できれば早いほうがいいです。
[5] その他の制限: 特にありません

357 名前:バケツ mailto:age [2007/06/27(水) 13:53:03 ]
aka
ao
kuro
これら三つのデータをアルファベット順に並び替える。
この場合、akaの後ろには半角スペースが1つあり、
aoの場合は2つあると考えて並び替える。

1  2  3  4
ao ao aka ao
aka aka ao aka
kuro kuro kuro kuro

優先順位としては
スペース>アルファベットです。


358 名前:バケツ mailto:age [2007/06/27(水) 13:55:07 ]
1は語尾の文字列に焦点を合わせ、
2は前から三番目、3は前から二番目、4は頭文字に焦点を合わせて並び替える。

説明すると、1ではaoはスペース、akaはスペース、kuroはoなので
上記のような順になる。

このようにして最終結果(頭文字の並び替え)がでるまでこの作業を繰り返し、
出力する。

説明不足かもしれませんが、よろしくおねがいします
katori
nakata
murata
hanada
sakata
tanaka
を配列の要素として作成してください。

scanfを用いて作成してもらってもかまいません。

359 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 14:00:26 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 次のプログラムをユーザー関数を用いて、階層化せよ。
 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4423.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:c言語
[4] 期限:6月28日(木)

 リンク先のプログラムは一つ前の問題を自分で書いたものですが、
コンパイルできることを確認しています。
 よろしくお願いします。



360 名前:TKO48 [2007/06/27(水) 14:20:23 ]
ゲーミング
今回からあつかう問題は営業時間から翌日の営業時間の間の補充量を
可変とし、補充量決定方法をけんとうする。
もっとも単純な考え方として@営業終了時の最終在庫量A経費の合計
から翌日の初期在庫量(補充量)を決定
ただし、今回は補充発注1回ごと(補充量によらない)に一定の経費を
支払うものとする

発注する経費は以下のとうりである
維持費:1tにつき120円(最終在庫量にたいして)
品切れ損失:1tにつき180円(不足量にたいして)
補充量:1回につき15.000円(補充量によらない)




課題
 注文量が正規分布N(100,20^2);すなわち平均100,標準偏差20
の正規分布に従う乱数と仮定し、毎の補充量を入力することで1000日間
の経過を調べる。
(1)補充発注に関して自分の採用した決定方法を述べよ。
(2)そのような補充を行い、初期在庫量、最終在庫量、補
   充量、総経費について、1日あたりの平均値を求めよ。なお、第1日の
   初期在庫を125tとする。


お願いします。。。(´・ω・`)


361 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 15:03:15 ]
>>353
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int xrand()
{
    double i, x = 0;
    for (i = 1; i <= 12; i++)
        x += (double)rand() / RAND_MAX;
    return 20 * (x - 6) + 100;
}
int main(void)
{
    double fstock_sum = 0, estock_sum = 0, supply_sum = 0, cost_sum = 0;
    int i, stock = 125, supply;
    srand(time(0));
    for (i = 0; i < 1000; i++) {
        fstock_sum += stock;
        stock -= xrand();
        cost_sum += (stock > 0 ? 120 : 180) * abs(stock) + 15000;
        if (stock < 0) stock = 0;
        estock_sum += stock;
        supply = (stock > 200 ? 0 : 200 - stock);
        supply_sum += supply;
        stock += supply;
    }
    printf("平均初期在庫: %g\n", fstock_sum / 1000);
    printf("平均最終在庫: %g\n", estock_sum / 1000);
    printf("平均補充量 : %g\n", supply_sum / 1000);
    printf("平均総経費 : %g\n", cost_sum / 1000);
    return 0;
}

362 名前:308 mailto:sage [2007/06/27(水) 16:00:14 ]
>>341
ありがとうございます。危うく最後の動画のコメントの奴そのままで出しそうでした。

363 名前:デフォルトの名無しさん [2007/06/27(水) 16:05:52 ]
>>353
>>361
ありがとうございます!m(__)m
本当に悪いんですが、補充発注を1日置きごとすることは出来ませんか?
すいません…
1日目にしたら、次は3日目、次は5日目というふうに


364 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:07:05 ]
>>360
>>353と同じ問題だな。
>>353は(1)について、補充方法を自分で書いている。その場合の解が>>361ね。
君はどうしたいのかな。それも回答者に決めて欲しいの?

365 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:13:15 ]
>>363
- int i, stock = 125, supply;
+ int i, stock = 125, supply, f = 0;
-----------------------------------------
        estock_sum += stock;
+       if (!f) {
            supply = (stock > 200 ? 0 : 200 - stock);
            supply_sum += supply;
            stock += supply;
+       }
+       f = !f;
    }



366 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:25:30 ]
これの戦略を無駄に考えてみたけど、
一切補充しないという、
ずっと品切れ作戦が実装の楽さの割りに結構いい感じという結論が出た。

367 名前:デフォルトの名無しさん [2007/06/27(水) 16:43:31 ]
>>365
早速ありがとうございます!
助かりました

368 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:03:56 ]
>>367
すまん。補充しない日も補充費を計上してたので修正。
>>366のレスで気づいたw

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4426.txt

369 名前:デフォルトの名無しさん [2007/06/27(水) 17:12:05 ]
>>368
ありがとうございます!
こちらこそスイマセンでした



370 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:12:47 ]
さらにすまん。
- cost_sum += 15000;
+ if (supply > 0) cost_sum += 15000;


吊ってくる。

371 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:20:38 ]
二分木を表示するプログラムについて教えてください。

なんらかの木を作ったあと、その木へのポインタを引数にして
木を表示したいと思っています。単純にデータだけを、行きがけ順などで
表示するのではなくぱっと見で木とわかるようなものがいいです。

よろしくお願いいたします。

372 名前:デフォルトの名無しさん [2007/06/27(水) 17:31:29 ]
>>370
いえいえ、とんでもないです!
頼んでいるのは私の方なんですから

373 名前:デフォルトの名無しさん [2007/06/27(水) 18:45:07 ]
fmod()を使って10進数を2進数に変えたいんです。C++
なかなかうまくいかなくて

374 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 18:58:52 ]
>>371
graphviz用の入力ファイル(ただのテキスト)を作るのが楽かも
↓みたいな感じで
でも、宿題だとそれじゃ不可かな

#include <stdio.h>
typedef struct node {
    char *label;
    struct node *left, *right;
} node;
void tprint(node *n) {
    if (!n) return;
    if (n->left)
        printf("%s -> %s;\n", n->label, n->left->label);
    if (n->right)
        printf("%s -> %s;\n", n->label, n->right->label);
    tprint(n->left);
    tprint(n->right);
}
int main() {
    struct node tree[] = {
        { "a", &tree[1], &tree[2] }, { "b", &tree[3], &tree[4] },
        { "c", &tree[5], &tree[6] }, { "d", &tree[7], 0 },
        { "e", 0, &tree[8] }, { "f", 0, 0 }, { "g", 0, 0 },
        { "h", 0, 0 }, { "i", 0, 0 }
    };
    printf("digraph test {\n");
    tprint(&tree[0]);
    printf("}\n");
}

375 名前:デフォルトの名無しさん [2007/06/27(水) 19:01:31 ]
あの・・・
>>354
をお願いできますか?

376 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:05:51 ]


            ヾヽ'::::::::::::::::::::::::::'',    / 時 .あ ま ヽ
             ヾゝ:::::::::::::::::::::::::::::{     |  間 .わ だ  |
             ヽ::r----―‐;:::::|    | じ て    |
             ィ:f_、 、_,..,ヽrリ    .|  ゃ る     |
              L|` "'  ' " ´bノ     |  な よ     |
              ',  、,..   ,イ    ヽ い う    /
             _ト, ‐;:-  / トr-、_   \  な   /
       ,  __. ィイ´ |:|: ヽ-- '.: 〃   `i,r-- 、_  ̄ ̄
      〃/ '" !:!  |:| :、 . .: 〃  i // `   ヽヾ
     / /     |:|  ヾ,、`  ´// ヽ !:!     '、`
      !      |:| // ヾ==' '  i  i' |:|        ',
     |   ...://   l      / __ ,   |:|::..       |
  とニとヾ_-‐'  ∨ i l  '     l |< 天  ヾ,-、_: : : .ヽ
 と二ヽ`  ヽ、_::{:! l l         ! |' 夂__ -'_,ド ヽ、_}-、_:ヽ




377 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:08:37 ]
>>373
なんでfmod()使わないといけないの?

378 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:04:00 ]
>>359
中途半端になってしまった
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4428.txt

379 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:07:46 ]
>>362 >>308
>>341 の3つめのreturn 0; の前に free(mvt); を忘れとった・・・もう見てへんよな・・・まぁ良いっか・・・
知〜らねっ ^^;



380 名前:デフォルトの名無しさん [2007/06/27(水) 20:51:20 ]
fmod()を使うよう指定されました(泣)

381 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 21:13:32 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 下記のプログラムで
a[3][3] = {{2.4, -3, 6.1}, {-1.1, 2, 3.5}, {0.5, 0, 3.2}}
b[3][3] = {{1.9, -4.7, 2.5}, {2, 0.9, 5.4}, {2.7, 0.6, 3.5}}
c[3][3] = {{-2, -3.5, 0}, {1.4, 7.3, -1}, {2.1, 0.4, 6.2}}
に置き換えたとき、この要素で与えられる行列を求め出力するプログラムを作成せよ。
#include <stdio.h>
int main(void)
{
int i, j, n;
double b[3][3] = {{3.2, -1.5, 3.9}, {3.8, 4, -1.8}, {1.9, -3, 0}};
double c[3] = {-5, 2.7, 1.5};
double a[3] = {1, 5.1, 6.2};
n = 3;
for (i=0; i<n; i++) {
for (j=0; j<n; j++) {
a[i] +=b[i][j] * c[j];
}
printf("y[%d]=%f\n", i, a[i]);
}
return 0;
}

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: C
[4] 期限: 6月30日16:30まで
すみません、よろしくお願いします。

382 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:50:20 ]
>>371 どっかの木構造を解説してるサイトにあったのをパクったやつ
typedef struct tagTree{
    int no;
    struct tagTree *left, *right;
}Tree;

void PrintTree(Bin *root, int depth)
{
    depth++;
    if (root != NULL) {
        int i;
        PrintTree(root->left, depth);
        for (i = 0; i < depth; i++)
            printf("   ");
        printf("%3d\n", root->no);
        PrintTree(root->right, depth);
    }
}

mainで呼ぶときはdepthを0にすればおk

383 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:53:56 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
getchar関数を使用し、コマンドラインからの数字を10回入力し、
入力の中でもっとも大きな数字を表示しなさい。
※入力桁数のエラーについて対処する事

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: CPAD、LSI C-86 Ver 3.30
 [3.3] 言語: C
[4] 期限: できれば今週中
すみません、どなたか分かる方、よろしくお願いします。

384 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:57:07 ]
>>383
実行例くらい書いてくれ。

385 名前:382 mailto:sage [2007/06/27(水) 23:00:19 ]
>>382
しまった……
typedef struct tagBin{
    int no;
    struct tagBin *left, *right;
}Bin;
に修正plz

386 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:22:21 ]
>>384
すいません。恥ずかしくてのせてませんでした。
初心者のため、おかしい点等をびしびしあげていただければと思います。

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

void hikaku(int *pX,int *pY);
int main(void){
int x= 0;
int y,i,j;
char str[100];
printf("数字を入力してください。\n");
for(i=1 ; i < 11; i++){
for(j=0; str[j-1] != '\n'; j++){
str[j] = getchar();}
if(j-1 >= 5){
printf("5桁以上は入力桁数エラーです。0にします。\n");}
else{y = atoi(str);
if(y == 0 && str[0] != '0'){
printf("数字以外は入力できません。0にします。\n");}
else {hikaku(&x ,&y);}}}
printf("最大値は%dです。\n",x);
return 0;}
void hikaku(int *pX,int *pY){
if(*pY > *pX){
*pX = *pY;}}


387 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:25:02 ]
>>386
それは実行例じゃないだろ

388 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:26:12 ]
>>386 それができていてなぜ質問したん?w

389 名前:デフォルトの名無しさん [2007/06/28(木) 00:19:51 ]
簡単やん



390 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:22:52 ]
>>355
をお願いしたいのですが

391 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:40:33 ]
>>390
while(j>=0 && x[j]>t) { を
while(j>=0 && x[j]<t) { に変更するだけじゃ駄目かな?
inp1.datとか用意するのだるいからまともに見てないけど

392 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:50:17 ]
>>387
すいません、実行例とは何でしょうか?
>>388
自分でここまでは作ったのですが、最初にアルファベットを打ったときなど
特殊な対応が出来ません。また、全く自信がないためです。


393 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:54:23 ]
今、コンパイルが出来ない環境なので確認できないのですが、いまいち右からつめる
降順の解釈の仕方がわからないんです。
左を右に、昇順を降順にしなくてはいけないので、while(j>=0 && x[j]<t) {の変更
だけでは出来ないと思うのですが。

394 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:56:53 ]
>>392
実行例は例えばこのプログラムを実行するとこういう出力になって欲しいんですよ、的な内容。
入力に関しては、一回charに入れた時点で数字かどうか判定すれば?
どの程度のレベルかわからんが、学校授業で4月開始なら上等なレベルかと。



395 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:00:55 ]
>>392 こんなのはどうかな。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    int c, max = -1, m, n, nc = 0, f, sign = 1;
    while ((c = getchar()) != EOF) {
        if (isdigit(c)) {
            n = f = 0;
            do {
                if ((m = n * 10 + c - '0') < n) f = 1;
                n = m;
            } while ((c = getchar()) != EOF && isdigit(c));
            ungetc(c, stdin);
            if (f) puts("桁あふれしますた");
            else {
                n *= sign;
                printf("%d\n", n);
                if (n > max) max = n;
                if (++nc == 10) break;
            }
        }
        else if (c == '-') { sign = -1; }
        else sign = 1;
    }
    if (max != -1) printf("最大値: %d\n", max);
    return 0;
}

396 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:10:04 ]
>>393
ああ、右からつめるってそういうことか
単に降順にすればいいだけかと思ってた

めんどくさいからパス。せめてdatファイルがあればなぁ

397 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:16:17 ]
datファイルでなくても、テキストファイルに整数を入れてinp.txtとしても大丈夫だと思うのですが。


398 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:18:19 ]
>>392
ありがとうございます。
10回数字を入力して(ただし、アルファベット、空欄など数字でないやつははじく。また、小数点にも対応する)
桁数は自分で設定し(私のやつは適当に5桁)、最大値を出力する。

>>入力に関しては、一回charに入れた時点で数字かどうか判定すれば?
ずばり、バッファリングの理解が甘く、そこのプログラムが打てず悩んでいます。
分かる方、どうかやり方をご教授願います。

>>392
すいません。書き忘れてしまったのですが、入力の終了はEOFではなく改行でといわれています。


399 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:19:44 ]
>>398
アンカーのつけかたを覚えなさい。全部自分へのレスになってるよ



400 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:21:49 ]
>>398
全て自分に安価する君に惚れたwww
atoi関数に渡す前に
if ( '0' <= str[ j ] && str[ j ] <= '9' ) {
とかでいいんじゃない?
ソースあんま読んでないから、的外れだったらスマソ。

401 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:22:13 ]
>>397
それを用意するのがだるいんだ
まぁやる気が無いだけなんだけどさ

402 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:22:23 ]
>>399
あせってコピペしてしまいました。大変申し訳ありませんでした。

403 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:23:45 ]
>>378
元のプログラムをあまり書き換えないでお願い出来ますか。
注文ばかりですいません。

404 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:28:23 ]
>>400
atoiの前にif ( '0' <= str[ j ] && str[ j ] <= '9' ) {

??????
すいません意味が分かりません。どういうプログラムになるのでしょうか?

405 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:29:31 ]
>>401
無理を言って申し訳ありません。
では、左からつめるを右からに書き換えるにはどうすればいいでしょうか。

406 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:39:11 ]
>>405
左端が0 右端がn-1
今はj=0とかi=1からだんだん加算されていってn-1までループしているのを
n-1から減算していって0までループさせればいい

407 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:47:17 ]
>>355 >>405
for(i=n-2;i>=0;i--) {
t=x[i];
j=i+1;
while(j<=n-1 && x[j]>t) {
x[j-1]=x[j];
j++;
}
x[j-1]=t;
}
てきとー まさかどこと差し替えればいいかなんか聞くなよ?

408 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:49:57 ]
ttp://www.infonet.co.jp/ueyama/ip/glossary/ebcdic.html
EBCDICでも0〜9は連続したコードに登録されているからおkだお ^ω^

409 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:59:50 ]
>>404
ちょっと無理矢理だけど例えば、str[j] = getchar();に下に次の1文を入れてみる。
if ( (str[j] < '0' || '9' < str[j]) && str[j] != '\n' ) j--;
今回getchar関数によって入力された文字が数字じゃなければ、読み込まなかったことにする。
ただ、改行コードもはじかれちゃうのでそれはOKにしておく。

極力、今のソースに手を加えないで変更しようとしたらこんなのになってゴメン・・・orz



410 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:01:29 ]
>>406>>407
ありがとうございます。参考にさせていただきます。
もうひとつ>>359についてお願いできますか?
>>378さんが答えて下さっているのですが、元のプログラムの値をあまり
書き換えないで欲しいのですが。


411 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 06:01:56 ]
[1] 授業単元:プログラミング
[2] 問題文:
 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4430.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:c言語
[4] 期限:6月30日(木)


412 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:34:40 ]
>411
(1)
#include <stdio.h>
#include <stdlib.h>

void putchar_n(char c1, char c2, int num){
if(num <= 0){
return;
}
putchar(c1);
putchar_n(c1,c2,num-1);
putchar(c2);
}

int main(int argc, char* argv[]){
if(argc != 4){
return 1;
}

putchar_n(argv[1][0],argv[2][0],atoi(argv[3]));

printf("\n");
return 0;
}


413 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:44:04 ]
>>411
(2)
#include <stdio.h>

int main(){
int i = 0;

for(i = 0 ; i+31 < 126+1 ; i++){
printf("%c %d %o %x\n",i+31,i+31,i+31,i+31);
if(i%8 == 7){
printf("--------------------\n");
}

}
return 0;
}

414 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:10:46 ]
>>409
ありがとうございます。
ただやってみたのですが、例えば「fsa256」や「256faj」などを入れるとそれも256として
反映されてしまいます。
何とかはじく方法があればと思うのですが・・・。

415 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:14:22 ]
>>410ですが、>>378さんの書いてくださったプログラムをコンパイルしてみたところ、
35以上でかつ95未満の要素の数の処理は出来たのですが、countの要素の合計の処理が
0となり、うまく処理出来ませんでした。

416 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:39:07 ]
getcharじゃなきゃだめなの?

417 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:46:53 ]
まあそれはいいとして
atoi使わずに
www.bohyoh.com/CandCPP/C/Library/strtol.html
使えば済む話だと思う

418 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:55:29 ]
>>415
main()だけ修正

int main(void) {
    int i, *x, n, size, count[11] = { 0 }, sum;
    setp(&x, array(&size));
    for (set(&i,0); less(i,size); inc(&i)) {
        set(&n,div(at(x,i),10));
        if (less(10,n)) set(&n,10);
        inc(&count[n]);
    }
    for (set(&i,0); less(i,10); inc(&i))
        printf("%3d台: %d\n", mul(i,10), at(count,i));
    set(&sum,0);
    for (set(&i,0); less(i,11); inc(&i))
        set(&sum,pls(sum,at(count,i)));
    printf("countの要素の合計は%d\n",sum);
    if (eq(sum,size))
        printf("総和は正しいです\n");
    else
        printf("総和が違います\n");
    for (set(&n,0),set(&i,0); less(i,size); inc(&i))
        if (and(less(34,at(x,i)),less(at(x,i),95))) inc(&n);
    printf("35以上でかつ95未満の要素の数は%d\n", n);
    return 0;
}

419 名前:418 mailto:sage [2007/06/28(木) 10:57:07 ]
すまん、化けたか?
int main(void) {
    int i, *x, n, size, count[11] = { 0 }, sum;
    setp(&x, array(&size));
    for (set(&i,0); less(i,size); inc(&i)) {
        set(&n,div(at(x,i),10));
        if (less(10,n)) set(&n,10);
        inc(&count[n]);
    }
    for (set(&i,0); less(i,10); inc(&i))
        printf("%3d台: %d\n", mul(i,10), at(count,i));
    set(&sum,0);
    for (set(&i,0); less(i,11); inc(&i))
        set(&sum,pls(sum,at(count,i)));
    printf("countの要素の合計は%d\n",sum);
    if (eq(sum,size))
        printf("総和は正しいです\n");
    else
        printf("総和が違います\n");
    for (set(&n,0),set(&i,0); less(i,size); inc(&i))
        if (and(less(34,at(x,i)),less(at(x,i),95))) inc(&n);
    printf("35以上でかつ95未満の要素の数は%d\n", n);
    return 0;
}



420 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:02:03 ]
>>414
後から細々と注文をつけるんなら、「正しい入力」を正確に定義汁。
最初に正確に仕様を述べないから、>>1で言う
>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
の状況に結果的にはなっている。

正規表現で言うと、
^-?[0-9]{0,5}$
以外はエラーと思っていいのかな。
負値はどうする?マイナスの場合の桁数の処理は?スペースも許さない?
00004
は正常?

421 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:30:41 ]
-0や00や-000はどうか?という問題もある。
^(0|[1-9][0-9]{0,4}|-[1-9][0-9]{0,3})$
こうか?

422 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:01:40 ]
>>374>>382

早速のレスありがとうございます。ためしにやってみたのですが、うまくいきませんでした。

できれば、
       1
      /\
    /     \
   2        3
  /\      /\
  4  5     6  7

このように表示できたらいいです。表示するデータは3桁の整数です。

おねがいいたします。


423 名前:デフォルトの名無しさん [2007/06/28(木) 12:36:11 ]
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
コマンドライン引数から十進整数値として解釈できる文字列のみを選び、
値が小さい順に並べ替えて、一行に一つずつ標準出力に出力するプログラムを書け。
ただし、十進整数値として解釈できる文字列とは、正規表現 ^[-+]?[0-9]+$ に
マッチするものとする。
ヒント:小さい順に並べ替えるには、 qsort()が便利です。
こちらも、使い方は、manコマンドで調べることができます。

コマンドライン引数すべてについて、 含まれるアルファベットすべてを対応する大文字に置き換えて、
一行にコマンドライン引数一つずつ標準出力に出力するプログラム。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4431.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4432.c
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:今週中
[5] その他の制限: 特になしです

どうかよろしくお願いします。


424 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:44:31 ]
>>419さん、>>378さんのプログラムと変更が無いようなのですが。
コンパイルしても変わりませんでした。

425 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:48:03 ]
>>423
#include <stdio.h>
int main(int argc, char **argv)
{
    FILE *fp = popen("egrep '^[-+]?[0-9]+$' | sort -n", "w");
    while (*++argv)
        fprintf(fp, "%s\n", *argv);
    pclose(fp);
    return 0;
}

426 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:50:09 ]
>>424
もう一度確認してみろ。

427 名前:デフォルトの名無しさん [2007/06/28(木) 13:53:21 ]
[1]単元:プログラミング技術
[2]問題文:ローダーのNo.4433にアップしました。
[3]環境
OS:リナックス
コンパイラ:cc
言語:C
[4]期限:できれば本日14時30分ごろまでにお願いします。

どうぞよろしくお願いします。




428 名前:デフォルトの名無しさん [2007/06/28(木) 13:54:15 ]
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題1
文字型の配列変数mojiに設定されている文字数を答えなさい
char moji[] = "ABCDEFG";
実行画面
文字数:7


429 名前:デフォルトの名無しさん [2007/06/28(木) 13:55:39 ]
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題1
文字列を入力して偶数番目の要素数と奇数番目の要素を別の配列に格納し、文字列として表示しなさい
実行画面
文字列入力==>ABC123def
偶数要素:AC2df
奇数要素:B13e




430 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:40:31 ]
>>427
#include <stdio.h>
#include <string.h>

void search(char *s1, char *s2)
{
    int i;
    char *p = s1;
    while((p = strstr(p, s2)) != NULL){
        *p++ = '#';
        for(i = 0; i < strlen(s1) - 1; i++)
            *(p + i) = *(p + i + strlen(s2) - 1);
    }
}

int main(void)
{
    char text[1024], word[1024];
    printf("Please input text : ");
    gets(text);
    printf("text = %s\n", text);
    printf("Please input search word : ");
    gets(word);
    search(text, word);
    printf("text = %s\n", text);
    return 0;
}

431 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:44:40 ]
このスレでgets()使うと袋叩きにあうよ。

432 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:45:32 ]
>>427
void search(char *s1, char *s2)
{
    while((s1 = strstr(s1, s2)) != NULL){
        *s1++ = '#';
        strcpy(s1, s1 + strlen(s2) - 1);
    }
}

433 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:46:56 ]
>>431
俺だって使いたかねーけど、問題文に指定してあるからな。

434 名前:デフォルトの名無しさん [2007/06/28(木) 14:54:08 ]
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題
文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換えなさい
実行画面
文字列(m1)入力==>ABCDEFAABCDABC
削除文字==>A
置換文字==>*

結果文字列(m1):BCDEF**BCD*BC



435 名前:デフォルトの名無しさん [2007/06/28(木) 15:06:21 ]
授業単元 関数

言語 C言語

引数の階乗(1*2*3*....*n)を関数を作れ

お願いします

436 名前:デフォルトの名無しさん [2007/06/28(木) 15:09:45 ]
int kaijo(int a)
{
   if(a == 1){
       return 1;
   }
   return a*kaijo(a-1);
}

437 名前:デフォルトの名無しさん [2007/06/28(木) 15:13:47 ]
int kaijo(int a)
{
   int i, result=1;
   for(i=1; i<a; i++){
       result *= i;
   }
   return result;
}

438 名前:デフォルトの名無しさん [2007/06/28(木) 15:14:47 ]
授業単元 関数

言語 C言語

引数の階乗(1*2*3*....*n)を返す関数を作れ

の間違いでした 申し訳ありません

439 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:20:43 ]
>>378はネタだろw



440 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:21:44 ]
>>422
適当だし、エクスプローラ風の樹形図になっちゃうけど、それでよければ

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4434.txt

441 名前:デフォルトの名無しさん [2007/06/28(木) 15:24:36 ]
428 429何方かお願いします

442 名前:デフォルトの名無しさん [2007/06/28(木) 15:30:51 ]
>>428

int main()
{
   char moji[] = "ABCDEFG";
   int i;
   for(i=0; moji[i] != '\0'; i++);

   printf("文字数:%d\n", i);
}

443 名前:デフォルトの名無しさん [2007/06/28(木) 16:11:45 ]
マイナスの引数でエラーを出さない平方根を返す関数を作れ

C言語でお願いします

444 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:14:43 ]
>>443
>>1

445 名前:デフォルトの名無しさん [2007/06/28(木) 16:23:53 ]
授業単元 関数

問題文 マイナスの引数でエラーを出さない平方根を返す関数を作れ

環境
LINUX
C言語
期限 いつでも

>>1 よんでおらず申し訳ありませんでした

446 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:04 ]
負の数が入ったときの動作は?

447 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:05 ]
>>439
もしネタだとしたら、真面目にお願いしたいのですが。

448 名前:デフォルトの名無しさん [2007/06/28(木) 16:30:52 ]
>>446

例として2の 平方根 だと 1.4142135...
ー2 の 平方根 だと -1.4142135...

となるようにです

449 名前:デフォルトの名無しさん [2007/06/28(木) 16:33:41 ]
マイミクしてください!
mixi.jp/show_friend.pl?id=3356659



450 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:00:35 ]
>>448

double exsqrt(double x)
{
if(x<0){
x=-x;
return -sqrt(x);
}
return sqrt(x);
}



451 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:01:37 ]
>>447 まじめにやってもこの程度だが
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4435.txt

452 名前:デフォルトの名無しさん [2007/06/28(木) 17:14:08 ]
あ〜〜fmod()を使って10進数を2進数に変えたいんです。C++


453 名前:デフォルトの名無しさん [2007/06/28(木) 17:17:17 ]
[1] 授業単元:多次元配列
[2] 問題文(含コード&リンク):
 以下のステップに従って,行列表示及び演算を行う関数群を作成し,3行3列の行列A,Bのかけ算を行い,結果を表示するプログラムを作成してください.なお,行列AとBは,キーボードから値を入力するようにしてください.

1.3行3列の行列を表示する関数hyoujiを作成
(メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてhyoujiを呼び出し,内容を表示させ,動作確認を行う)
2.3行3列の行列A,Bの足し算を行い,結果を行列Cに代入する関数tasizanを作成
(メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてtasizanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う)
3.tasizanをコピー・雛形にして,3行3列の行列A,Bのかけ算を行い,結果を行列Cに代入する関数kakezanを作成
(メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてkakezanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う)
4.キーボードから3行3列の行列に見立てた配列に数値を入力する関数nyuryokuを作成
(メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてnyuryokuを呼び出し,関数hyoujiにより行列Aを表示させ,動作確認を行う)
kakezanのヒント:3重ループにすると効率よくプログラムできます
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名:Borland
 [3.3] 言語:C
[4] 期限:7月10日まで
[5] その他の制限:多次元配列までならってます


454 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:30:44 ]
>>451
迅速な返答ありがとうございます。無事実行の確認ができました。

455 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:00:07 ]
>>453

void hyouji(int array[][3])
{
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%3d",array[i][j]);
putchar('\n');
}
}

void tasizan(int A[][3],int B[][3],int C[][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
C[i][j]=A[i][j]+B[i][j];
}

456 名前:455 mailto:sage [2007/06/28(木) 19:04:02 ]
続き

void kakezan(int A[][3],int B[][3],int C[][3])
{
int i,j,k;
for(i=0;i<3;i++)
    for(j=0;j<3;j++)
    for(k=0;k<3;k++)
    C[i][j]+=A[i][k]*B[k][j];
}

void nyuryoku(int A[][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++){
printf("A%d%d:",i,j);
scanf("%d",&A[i][j]);
}
}

457 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:04 ]
[1] 授業単元:C++
[2] 問題文:
メイン関数で整数numに0が入力されるまでキー入力を繰り返し実行する。
負の値も有効とし、0も有効な値とする。
入力が終了した時点での入力値の最大値上位3つと最小値下位3つを画面に出力する。
[3] 環境
 [3.1] OS:窓
 [3.3] 言語:C++
[4] 期限:明日
[5] その他の制限:出力にはprintf、入力にはscanfの使用

習い始めなため、出来るだけ簡単な物にしてくれると助かる。
お願いします。

458 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:46 ]
>>453
#include <stdio.h>
void hyouji(double a[3][3]){
    int i, j;
    for(i = 0; i < 3; i++){
        for(j = 0; j < 3; j++) printf("%4.1f", a[i][j]);
        printf("\n");
    }
}
void tasizan(double a[3][3], double b[3][3], double c[3][3]){
    int i, j;
    for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) c[i][j] = a[i][j] + b[i][j];
}
void kakezan(double a[3][3], double b[3][3], double c[3][3]){
    int i, j, k;
    for(i = 0; i < 3; i++)
        for(j = 0; j < 3; j++){
            c[i][j] = 0;
            for(k = 0; k < 3; k++) c[i][j] += a[i][k]*b[k][j];
        }
}
void nyuryoku(double a[3][3]){
    int i, j;
    for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", &a[i][j]);
}
int main(void){
    double a[3][3], b[3][3], c[3][3];
    nyuryoku(a); nyuryoku(b);
    tasizan(a, b, c); hyouji(c);
    kakezan(a, b, c); hyouji(c);
    return 0;
}

459 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:46:35 ]
[1] 授業単元:C言語実習基礎
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4436.txt
数字を昇順でソートできるようにする。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語: C
[4] 期限: 6/29正午まで
[5] その他の制限: 挿入ソート、選択ソートまで習っています。



460 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:04:14 ]
それはソースコードであって問題文ではない。

461 名前:デフォルトの名無しさん [2007/06/28(木) 20:43:32 ]
[1] 授業単元:C++研究
[2] 問題文
あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。
このとき、0と1の並びに着目し、データを圧縮することを考える。
ここでは、0と1のそれぞれが何個連続して並んでいるかを記録することで圧縮を行う。
たとえば、digit1.datというファイルに
111110000000000000000000000001E
というように0と1が並んでいるとき、
7 1 24 0 1 1
と圧縮できる。このとき圧縮結果に空白を挟むことに注意する。
上記の圧縮方法に従って、任意の0と1から成るデータを圧縮するプログラムを作成せよ。
ただしデータはリダイレクションを使用し、char型変数の1文字ずつ繰り返し世も困れるものとする。
最後には「圧縮完了」と表示のこと。

3] 環境
 [3.1] OS:windowsXP
 [3.2] cygwin
 [3.3] 言語:C++
[4] 期限:明日
[5] その他の制限:C++です。よろしくお願いします

462 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:51:54 ]
[1] 授業単元: プログラミング序論
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4437.txt
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 29日まで
よろしくお願いします

463 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:52:00 ]
>繰り返し世も困れる
読み込まれる?

464 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:58:31 ]
>>460
申し訳ありませんでした。
このソースコードを昇順でソートできるように直しなさい。
という問題です。


465 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:07:00 ]
>>462
(1)
#include <stdio.h>
int main(void) {
int array[7] = {4, 5, 0, 6, 2, 2, 4};
int i, sum = 0;
for(i=0;i<7;i++) sum += array[i];
printf("%d", sum);
return 0;
}

466 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:14:41 ]
>>461
#include <iostream>
using namespace std;
int main()
{
    streambuf *sb = cin.rdbuf();
    int c, cc, n;
    const char *sep = "";
    while ((c = sb->sbumpc()) >= 0 && c != 'E') {
        for (n = 1; (cc = sb->sbumpc()) >= 0 && cc == c; ++n) {}
        sb->sungetc();
        cout << sep << n << " " << static_cast<char>(c);
        sep = " ";
    }
    cout << "\n圧縮完了\n";
}

467 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:20:17 ]
>>462
(2)
#include <stdio.h>
int main(void) {
int array[7] = {4, 5, 0, 6, 2, 2, 4};
int array2[7] = {0};
int i;
for(i=0;i<7;i++) array2[i] = array[6-i];
for(i=0;i<7;i++) printf("%d", array[i]);
putchar('\n');
for(i=0;i<7;i++) printf("%d", array2[i]);
return 0;
}

468 名前:453 [2007/06/28(木) 21:40:36 ]
>>455さんありがとうございます

469 名前:462 mailto:sage [2007/06/28(木) 21:59:36 ]
>>465
>>467
ありがとうございます



470 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:45:46 ]
>>457
(1)
#include <iostream>
#include <math.h>
#define BUF_MAX 64
#define DATA_MAX 128

char datanum=0;
long data[DATA_MAX];

void seikei(char*);
long henkan(char*);
void touroku(long);
void sort();
void output();


471 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:47:05 ]
(2)
int main() {
char i, sign, buf[BUF_MAX];
long input;

do {
input = 0;

for(i=0; i<BUF_MAX; i++)
buf[i] = NULL;

printf("input number\n> ");
scanf("%s", buf);

if(buf[0]==45) sign = 1;
else sign = 0;

seikei(buf);
input = henkan(buf);

if(input==0) break;
else if(sign==1) input = 0-input;

touroku(input);
} while(1);

sort();
output();

return 0;
}

472 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:47:53 ]
(3)
void seikei(char *buf) {
char i, j, max, str[BUF_MAX];

for(i=0; i<BUF_MAX; i++)
str[i] = NULL;

max = (char)strlen(buf);
for(i=0, j=0; i<max; i++) {
if(!(48>buf[i] && buf[i]<57)) {
str[j] = buf[i]-48;
j++;
}
}

for(i=0; i<BUF_MAX; i++)
buf[i] = str[i];

return;
}

long henkan(char *buf) {
char i, figure;
long input=0;

figure = (char)strlen(buf)-1;
for(i=0; buf[i]!=NULL; i++)
input += buf[i] * pow((double)10, (double)figure-i);

return input;
}


473 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:49:12 ]
(4)
void touroku(long input) {

if(datanum<DATA_MAX) {
data[datanum] = input;
datanum++;
}

return;
}

void sort() {
char i, j, higher;
long tmp;

for(i=0; i<datanum; i++) {
for(j=i+1, higher=i; j<datanum; j++) {
if(data[higher]<=data[j]) higher = j;
}

tmp = data[higher];
data[higher] = data[i];
data[i] = tmp;
}

return;
}

474 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:50:56 ]
(5)
void output() {
char i;

for(i=0; i<3; i++) {
if(data[i]==NULL) break;
printf("上位%d位: %d\n", i+1, data[i]);
}

for(i=datanum-1; i>(datanum-4); i--) {
if(data[i]==NULL) break;
printf("下位%d位: %d\n", datanum-i, data[i]);
}
}

単純なデータ構造にしたつもり。
殴り書きでsorry

475 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:19:21 ]
1] 授業単元:c言語
[2] 問題文: 8個の配列データa={1,2,4,6,8,4,5,9}の和WAおよび平均値MA
を求めるプログラムを配列およびfor文を用いて作成せよ。

[3] 環境
 [3.1] OS:XP
[3.2] Visual studio.2005

 [3.3] 言語:C
[4] 期限:6月29日:3時まで
[5] その他の制限:特になし
よろしくお願いします

476 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:19:34 ]
宿題じゃないんだが
01011010みたいに
日付が4桁4桁になってる
8桁の数字を生成するのはどうするん?



477 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:24:49 ]
宿題スレじゃなくてC/C++質問スレで頼むわ

478 名前:デフォルトの名無しさん [2007/06/28(木) 23:26:16 ]
>>345
お願いします

479 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:28:41 ]
>>475

#include <stdio.h>

int main(void){
double MA;
int i, WA=0;
int a[8] = {1, 2, 4, 6, 8, 4, 5, 9};

for(i=0; i<8; i++){
WA += a[i];
}
MA = WA/8.0;

printf("和 : %d", WA);
printf("平均値 : %lf", MA);

return 0;
}

直接書いてコンパイルとかしてないからエラーでたらおせーてね☆



480 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:35:04 ]
>>478
345の結果ってさ、準決勝で早稲田が下になってるやんか、
あれって逆にしてもええのん?
あかんのやったらあかんでええけど、

481 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:36:28 ]
ああごめんよく読んでなかったわ
得点と失点を記録するんやね

482 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:06:37 ]
>>478
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4438.txt

483 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:08:44 ]
defineにこだわってる所為で汚くなってるじゃんとか言わないでね


484 名前:デフォルトの名無しさん [2007/06/29(金) 01:02:03 ]
わからねえよボケ!去ね!

485 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:06:28 ]
>>470-474
サンクス。
ただ、素人がここまで書いてしまうと逆に相手に怪しまれると思うのですよ。
問題文を多少屁理屈で変えてもいいので、もう少し短く簡単にして頂ければ幸いです。

加えてもう一問。

[1] 授業単元:C++
[2] 問題文:
メイン関数a,bに任意の値を入力する。
変数aと変数bで加算と乗算を行い計算結果を表示する。
整数の範囲(-2147483648〜2147483648)で正常な計算が行えることを確認する。
実数(float,double)は変数やキャスト等で一切使用しない。
[3] 環境
 [3.1] OS:窓
 [3.3] 言語:C++
[4] 期限:明日の午後
[5] その他の制限:出力にはprintf、入力にはscanfの使用

図々しいことは百も承知ですが、よろしくお願いします。

486 名前:デフォルトの名無しさん [2007/06/29(金) 01:10:38 ]
お願いします。
[1]C言語
[2]ファイルを読み込む
I am C.
CAT and ...
を別のファイルに下のように書き込む
1: I am C.
2: CAT and ...
 [3.1] OS:Linux
 [3.2] gcc 3.4
 [3.3] 言語: C
[4]今日の午前中

487 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:20:49 ]
>>486
#include <stdio.h>

int main(void) {
FILE *fop,*fsv;
char buf[32];
int ch;

printf("読み込むファイル名を入力 > ");
scanf("%s",buf);
fop=fopen(buf,"r");
if( fop==NULL ) return 1;

printf("書き込むファイル名を入力 > ");
scanf("%s",buf);
fsv=fopen(buf,"w");
if( fsv==NULL ) { fclose(fop); return 1; }

while( (ch=fgetc(fop))!=EOF ) {
fprintf(stdout,"%c",ch);
fprintf(fsv,"%c",ch);
}

fclose(fop);
fclose(fsv);

return 0;
}

488 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:26:08 ]
[1] 授業単元:情報系ゼミ
[2] 問題文:www.ipsj.or.jp/07editj/promenade/4407.pdf
 上記URLの文中「逆方向のスキャンによる枝刈り(P759)」「ビット列の長さによる枝刈り」
 の二項を聞いてる素人にも判る様に説明、解説する。という課題を受けました
 しかし今まで習った内容とは明らかにレベルが違いすぎるため、
 また、周りが自分を含めプログラムはズブの素人ばかりなので全く理解できず、
 一同困惑しています
 お時間のある方、この範囲のプログラム文の一行一行がどういう機能を果たしているのかを
 馬鹿にも判るように解説して頂けないでしょうか?
 よろしくお願いします
[3] 環境
 [3.1] OS:Windows 
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語:C++
[4] 期限:[2007年07月01日まで
[5] その他の制限: まったく習っていない段階

489 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:29:47 ]
あ、書き込むときに
1: 〜
2: 〜
のように数字をつけたいんです、3行とか4行とかにも対応できるように…。
もしよければおねがいします



490 名前:デフォルトの名無しさん [2007/06/29(金) 01:34:37 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4439.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: どちらでも可
[4] 期限: 2007年07月01日23:00まで
[5] その他の制限: なし

491 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:41:48 ]
>>489>>487さんへのレスです。

492 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:53:19 ]
491です。解決しました。あともう一門わからないのがあるので
もしよければお願いします
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
テキストファイルをよみこんでたとえばファイルに
cccchaa
というのがかいてあったら下のような感じで画面とテキストファイルに表示する
c→4h→1a→2
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:明日

493 名前:492 mailto:sage [2007/06/29(金) 01:59:20 ]
[2]の例追加
abdcdoddooffffoo

abc→1 df→4 o→5

494 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:01:36 ]
>>491 >>489
>>487 の一部だけ変更。変更部分は↓の一番上と下が一致するところの中
if( fsv==NULL ) { fclose(fop); return 1; }

i=1;
fprintf(stdout,"%d:",i);
fprintf(fsv,"%d:",ch);
while( (ch=fgetc(fop))!=EOF ) {
fprintf(stdout,"%c",ch);
fprintf(fsv,"%c",ch);
if( ch=='\n' ) {
i++;
fprintf(stdout,"%d:",i);
fprintf(fsv,"%d:",ch);
}
}
fclose(fop);


495 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:06:46 ]
>>494 訂正
fprintf(fsv,"%d:",ch);  < の2箇所を
fprintf(fsv,"%d:",i);  < ,i に変更

496 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:07:39 ]
>>495 じゃなくて、2箇所ある
fprintf(fsv,"%d:",ch);  < これを って意味ね。出力結果がおかしいから分かるだろうけど。

497 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:31:05 ]
[1] 授業単元: プログラミング基礎A
[2] 問題文(含コード&リンク):
奇数かどうか判定する関数および,偶数かどうか判定する関数を作成しなさい.
  ◎以下を参考の事
奇数判定: int isOdd(int i)
数字iが奇数の場合1,
偶数の場合0を返す関数

偶数判定: int isEven(int i)
数字iが偶数の場合1,
奇数の場合0を返す関数

main関数ではif文を使って正しく動いているかどうか
チェックしてください.
※戻り値にはboolを利用してもOKです


[3]
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
 [3.3] 言語:C++
[4] 期限:2007年6月29日10時30分
[5] その他の制限:出来るだけ複雑ではなく簡単(初歩的)なものにすること。

よろしくおねがいします。

498 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:33:07 ]
>>497
int isOdd(int i){return i%2;}
int isEven(int i){return i%2==0;}

499 名前:492 mailto:sage [2007/06/29(金) 05:10:44 ]
テンプレわかりづらかったので、もっかい質問します
是非、教えてください、お願いします。

[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
テキストファイルをよみこんでたとえばファイルに
cccchaa
というのがかいてあったら下のような感じで画面とテキストファイルに表示する
c→4h→1a→2
ほかの例は
abdcdoddooffffoo
の場合
abc→1 df→4 o→5
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:5時間後くらい




500 名前:492 mailto:sage [2007/06/29(金) 05:13:41 ]
>>494-496さん本当にありがとうございます!!

501 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 06:03:57 ]
>>499
#include <stdio.h>

int main(void)
{
  int c, nc[256] = {0}, nmax = 0, n, found;

  while ((c = getchar()) != EOF) {
    nc[c]++;
    if (nc[c] > nmax)
      nmax = nc[c];
  }
  for (n = 1; n <= nmax; n++) {
    found = 0;
    for (c = 0; c < 256; c++) {
      if (nc[c] == n) {
        putchar(c);
        found = 1;
      }
    }
    if (found)
      printf("→%d", n);
  }
  printf("\n");
  return 0;
}

502 名前:492 mailto:sage [2007/06/29(金) 06:27:59 ]
>>501さんありがとうございます。
けどコンパイルしてみたらエラーがたくさん表示されて…。
あとファイルから読み込んで結果を画面に表示してファイルに書き込む
プログラムをつくりたいです。またもしよければアドバイスおねがいします

503 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:02:16 ]
>>500 そういや、int i; も追加だったっけ・・・ってできた?ようだから良いか。

504 名前:492 mailto:sage [2007/06/29(金) 07:07:45 ]
>>503さんのをアレンジしたらできました!ありがとうございました!!
もしよければ>>499を教えてほしいです…何度もすいません。

505 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:24:24 ]
>>501は全角スペースが入っているからでそ
#include <stdio.h>

int main(void)
{
 int c, nc[256] = {0}, nmax = 0, n, found;

 while ((c = getchar()) != EOF) {
  nc[c]++;
  if (nc[c] > nmax)
   nmax = nc[c];
 }
 for (n = 1; n <= nmax; n++) {
  found = 0;
  for (c = 0; c < 256; c++) {
   if (nc[c] == n) {
    putchar(c);
    found = 1;
   }
  }
  if (found)
   printf("→%d", n);
 }
 printf("\n");
 return 0;
}

506 名前:492 mailto:sage [2007/06/29(金) 07:32:56 ]
これにファイルポインタとか使いしていけばいいんですかね?
これだけだと動きませんでしたので・・・

507 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:38:07 ]
>>506
題意が良くわからないんだが、要するに文字列の中の各アルファベットの数を数えろってことかね?

508 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:39:33 ]
492と493の例だと表示順がわからないんだけど。
出てきた順番でもないし、アルファベット順でも個数順でもない。

509 名前:492 mailto:sage [2007/06/29(金) 07:44:45 ]
>>507さん、そうですねアルファベット順にしたいです。
cccchaaの例はちょっと間違って書いてましたすいません…。
もうひとつ例としては
aaabcddddee
の場合は
a→3 bcd→4 e→2
です。何度もすいません…アルゴリズムがいまいち思いつかないので…。



510 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:01:13 ]
アルファベットの数を数える部分はできたが、同じ数のものを並べてってのが面倒やな・・・
もう少しで出来そうだが、そこんとこで手詰まり中。まぁ、なんとかなるさ。

511 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:09:25 ]
>>459
ソースコードを昇順ソートできるようにするという問題です。
何度もすみません。

512 名前:デフォルトの名無しさん [2007/06/29(金) 08:23:46 ]
>>381お願いします

513 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:13:21 ]
>>509 >>506 >>504 >>499 >>492
汚いソースだが我慢せい
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4441.c

514 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:15:32 ]
>>509 >>506 >>504 >>499 >>492  訂正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4442.c

515 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:10 ]
>>509 >>506 >>504 >>499 >>492  さらにマクロでシェイプアップ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4443.c

516 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:58 ]
>>515 っつか str[1024], <これ要らなかった、削除プリーズ

517 名前:459 mailto:sage [2007/06/29(金) 12:12:43 ]
時間延長してもらいました。
順を追って試してるんですがうまくいかないです・・・

518 名前:デフォルトの名無しさん [2007/06/29(金) 12:41:20 ]
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
↓*ndPtrPtr が指すリストの n 番目のノード(ノード番号は 0 番から始まる)を削除する.
削除したノードに割り当てられていたメモリは解放される.ただし,リスト中のノード数が
n 以下で,n番目のノードがない場合には,何もしない.
戻り値は,n番目のノードが削除できたときには SUCCESS,
n番目のノードが存在せず,削除できなかったときには FAILURE を返す.
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4444.c

上のnodeInsertを改良して,指定された挿入場所のインデックス n が負のときには,
新しく挿入されたノードがリストの末尾から数えて -n 番目になるようにせよ.
(たとえば,n == -1 のときには,末尾に挿入される)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:月曜日まで
[5] その他の制限: なし

よろしくお願いします。

519 名前:デフォルトの名無しさん [2007/06/29(金) 12:43:12 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  3d^2x/dt^2+dx/dt+2x=4
x(t=0)=0
dx/dt(t=0)=0

上記の微分方程式をルンゲークッタ法を用いて解け
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C言語
[4] 期限: ([2007年7月1日まで
[5] その他の制限: なし

お願いします





520 名前:デフォルトの名無しさん [2007/06/29(金) 12:58:22 ]
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ふたつあります。
@文字列strをno回だけ連続して表示する関数
void put_stringn(const char str[], int no){/*…*/}を作成せよ。
A以下に示した関数をもとにして、文字列を後ろから逆に表示する("SEC"を受けたら"CES"と表示する)関数put_rstringを作成せよ。
#include <stdio.h>
void put_string(const char str[])
{
unsigned i = 0;
while(str[i])
putchar(str[i++]);
}
int main(void)
{
char str[100];
printf("文字列を入力してください:");
scanf("%s", str);
put_string(str);
putchar(!\n!);
return(0);
}
[3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限:今日中なるべく早く
[5] その他の制限: 明解C言語入門編テキスト使用
お手数おかけしますがどうかよろしくお願いします。


521 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:03:46 ]
明解C言語入門編
ttp://www.bohyoh.com/Books/MeikaiA01/
これか?

522 名前:デフォルトの名無しさん [2007/06/29(金) 13:04:27 ]
>>521さん
そうです。

523 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:04:39 ]
[1] 授業単元:C++研究
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4262.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt
上記2つのプログラムのクラス(設計図)のインスタンス生成部分をnew演算子を用いた
ものに修正しなさい(すべての個所)。もちろんこのインスタンスをdelete演算子
で削除することを忘れないこと。

[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語: C++
[4] 期限: ([2007年7月1日12:00まで]
[5] その他の制限:特になし

よろしくお願いします。


524 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:06:42 ]
>>520
#include <string.h>
void put_string(const char str[])
{
unsigned i = strlen(str)-1;
while(str[i])
putchar(str[i--]);
}

525 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:09:21 ]
>>520 なんか全角が入ってたり putchar の括弧の中がおかしいから全部書くわ
#include <stdio.h>
#include <string.h>
void put_string(const char str[]) {
unsigned i = strlen(str)-1;
while(str[i])
putchar(str[i--]);
}

int main(void) {
char str[100];
printf("文字列を入力してください:");
scanf("%s", str);
put_string(str);
putchar('\n');
return(0);
}

526 名前:デフォルトの名無しさん [2007/06/29(金) 13:15:04 ]
>>525さん
ありがとうございます。
void put_stringをvoid put_rstringにすればいいんですかね?#include <string.h>て
習っていないのですが…
もしよろしければ問題@のほうもよろしくお願いします


527 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:23:43 ]
内容:
[1] 授業単元:C++
[2] 問題文:
#include <stdio.h>
#define NUM4
#define NAME_LENGTH 20
struct seiseki{
char name[NAME_LENGTH];
int jpn;
int eng;
int math;
/*A*/
}
int main(void){
struct seiseki i06[NUM];
double max;
int max_i;
int i;
for(i=0;i<NUM;i++){
printf("%d番目の名前を入れてください",i);
scanf("%s",i06[i].name);
printf("%d番目の国語の成績を入れてください",i);
scanf("%d",i06[i].jpn);
printf("%d番目の英語の成績を入れてください",i);
scanf("%d",i06[i].eng);
printf("%d番目の数学の成績を入れてください",i);
scanf("%d",i06[i].math);
}
/*B*/
}


528 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:36 ]
>>520
#include <stdio.h>
void put_stringn(const char str[], int no) {
int i;
for(i=0; i<no; i++)
printf("%s \n",str);
}
void put_string(const char str[]) {
int i = 0;
while(str[i]!='\0') i++;
while(i-->0)
putchar(str[i]);
}

int main(void) {
char str[100];
int no;

printf("文字列を入力してください:");
scanf("%s", str);

printf("@文字列strをno回だけ連続して表示する関数 no > ");
scanf("%d",&no);
put_stringn(str,no);

printf("A以下に示した関数をもとにして、文字列を後ろから逆に表示\n");
put_string(str);
putchar('\n');
return(0);
}

529 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:59 ]
以下のプログラムに構造体を各人の名前と合計点を格納できるように拡張し、最終的には合計点が一番よい学生の名前を出力するプログラムを作成せよ。/*A*/ /*B*/に入れよ
また、成績のAランク(成績が80以上100以下)の個数を格納する変数に変更して、Aランクの数が一番多い学生の名前を出力するプログラムを作成せよ。/*A*/にAランクの数
[3] 環境
[3.1] OS:窓
[3.3] 言語:C++
[4] 期限:明日
[5] その他:制限 構造体 他にはとくになかったです。
よろしくお願いします。




530 名前:デフォルトの名無しさん [2007/06/29(金) 13:34:25 ]
>>528さん
ありがとうございます。
すみません、@とAの問題は別物なんです
ややこしくかいてしまってすみません
>>528にかいていただいたものをどうわければいいのでしょうか…
本当にすみませんorz






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<213KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef