C/C++の宿題を片付け ..
[2ch|▼Menu]
357:デフォルトの名無しさん
07/05/18 00:38:08
[1] 授業単元:構文解析
[2] 問題文(含コード&リンク):
次のプログラムを書き換えて、自然数の足し算を行うプログラムを作成せよ。
また、自然数の足し算、引き算そして掛け算を行えるよう拡張せよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007/05/18
[5] その他の制限: スタックやキューまで

358:デフォルトの名無しさん
07/05/18 00:45:32
【質問テンプレ】
[1] 情報基礎論演習
[2] 課題1:2つの正方行列の和・差・積を求め、計算結果を見やすく画面に表示するプログラムを作成せよ。
      ただし、両行列の要素はプログラム実行時にキー入力するものとする。(scanf)また、行列のサイズは4×4とする。
  課題2:1で作成したプログラムを以下のように修正せよ。
      ・行列の要素はキー入力ではなくファイルから読み込む。(入力ファイルは自分で作成)
      ・計算結果は画面でなくファイルに出力すること。
[3] 環境
 [3.1] Windows
 [3.2] cygwin
 [3.3] C
[4] 期限:5月18日
[5] 特になし

231で書いたのですが、課題2を1つのmain関数内に入れてできないでしょうか?できるだけわかりやすくポインタを使わずに作って欲しいです。どうかよろしくお願いします。

359:デフォルトの名無しさん
07/05/18 00:49:06
わかりやすくして欲しいのにmain関数だけで書けとは・・・

360:358
07/05/18 01:03:32
すいません。
課題1をmain関数だけで書いてしまったもので・・・
矛盾してるかもしれないけどよろしくお願いします。


361:>358
07/05/18 01:15:12
コマンドラインで
 も前の作ったプログラム.exe < 入力ファイル > 出力ファイル

ではいかんのか?

362:デフォルトの名無しさん
07/05/18 01:23:29
プログラムを修正しろという制限があるから厳しいのでは?

363:デフォルトの名無しさん
07/05/18 01:25:33
>>358
main()の先頭をこんな感じに汁。
その後は、課題1と全く同じでOKのはずだ。

int main(int argc, char **argv)
{
    if (argc < 3 || !freopen(argv[1], "r", stdin)
                 || !freopen(argv[2], "w", stdout))
        return 1;

364:358
07/05/18 01:30:03
まず、入力ファイルの作り方がわかりません。
後、ファイルを読み込む時のプログラムと書き込む時のプログラムがどのように書けばいいのか分かりません。

C言語初心者なんですみません。
なにかわかりやすい例やサイトなどでもあったら紹介してください。よろしくお願いします。


365:357
07/05/18 01:30:14
>>357
よろしくお願いします。

366:>364
07/05/18 01:34:16
>363 試したか?

367:デフォルトの名無しさん
07/05/18 01:43:58
>>364
cygwinということだが
cygwinのbash(シェル)だとかgcc(コンパイラ)だとかの使い方は分かるのか?

> まず、入力ファイルの作り方がわかりません
ということは、それ以前の問題のようだが

368:デフォルトの名無しさん
07/05/18 01:51:07
>>360
> 課題1をmain関数だけで書いてしまったもので・・・
えーと、つまり、漏れがやった課題1はガン無視っつう事でゴザルですか?

369:デフォルトの名無しさん
07/05/18 01:58:45
無視とは最低な奴だな
スルーでいこ

370:364
07/05/18 02:07:46
すみません学校から帰ってたもので書き込み遅くなってしまいました

371:364
07/05/18 02:09:49
368さん
void関数やforループを参考にさせていただきました。ありがとうございます。
ただ自分には高度なやり方だったのですべてを理解することができませんでした。すみません。

今から363さんのをやってみたいと思います。

372:364
07/05/18 02:14:01
367さん
コンパイルなどの仕方は分かります。

ただ要素の入ったファイルはどのように書けばいいのか分からないのです。

373:デフォルトの名無しさん
07/05/18 02:17:26
>>251
やっとできた。これだけ共通化すれば文句ないだろう・・・

int ct[] = {
    6166,1803,30,32,37,34,39,36,43,35,25,1155,1157,1162,1159,1164,
    1161,1168,1160,27,1245,49307,1252,1249,2008,1251,2009,1250,1848,
    1200,43322,1207,1204,1209,1206,1874,1205,1008,910,29901303,
};
int pt[][2] = {
    {0,0},{0,82},{0,69},{0,73},{0,67},{0,72},{0,78},{0,83},{0,65},
    {0,89},{0,79},{0,71},{0,75},{0,85},{0,74},{0,66},{0,80},
    {0,90},{0,77},{9,13},{12,13},{2,6},{8,6},{8,20},{9,23},
    {14,19},{7,21},{5,24},{1,10},{5,8},{6,3},{6,22},{7,22},
    {9,10},{11,10},{12,19},{31,8},{33,6},{4,5},{28,20},{38,3},
    {7,26},{16,16},{29,40},{42,24},
};

void Print(int n, unsigned char **b)
{
    int *p;

    for (  ; n; n /= 45)
        if (*(p = pt[n % 45])) Print(p[0], b), Print(p[1], b);
        else *(*b)++ = p[1];
}

void PrintTok(int n, unsigned char **b)
{
    Print(n, b); *(*b)++ = ' ';
}


374:デフォルトの名無しさん
07/05/18 02:18:40
>>372
っつーか、要素の入ったファイルの形式は?どのようにファイルに書き出せば良いのか
こっちがわからん。4行4列って指定があるから、単純に上から4行4列ずつ
8行4列に空白なりで区切られた値のファイルを読み込めば良いノカー

375:373
07/05/18 02:20:13
void Yomiage1000(int num, unsigned char **buf)
{
    int i, n, d;

    for (i = 27, n = 1000; n; i -= 9, num %= n, n /= 10)
        if((d = num / n) != 0) PrintTok(ct[i + d], buf);
}


unsigned char *Yomiage(int num, unsigned char *buf)
{
    int i, n, d;
    unsigned char *b = buf;

    if (num == 0) Print(ct[0], &b);
    else {
        if(num < 0) PrintTok(ct[39], &b), num = -num;
        for (i = 38, n = 100000000; n; i --, num %= n, n /= 10000)
            if ((d = num / n) != 0) {
                Yomiage1000(d, &b);
                if (1 < n) PrintTok(ct[i], &b);
            }
    }
    *b = '\0';
    return buf;
}


376:373
07/05/18 02:20:59
int main(void)
{
    unsigned char buf[1000];

    printf("%s\n", Yomiage(123456789, buf));
    return 0;
}


377:デフォルトの名無しさん
07/05/18 02:23:00
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
  課題1:4行4列の行列Aの各要素を入力して、その転置行列A’を計算して出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:わかりません
 [3.3] 言語: C++
[4] 期限: 2007年5月18日10:00まで

課題あること忘れててヤバイです。お願いします。m(__)m


378:372
07/05/18 02:26:18
ファイルの中身は自分でテキトーに決めていいらしいので上から4行4列ずつ
8行4列に空白などで区切られた値のファイルを読み込めるようにしていただければ大丈夫だと思います。

363を試したのですがエラーがたくさん出てしまいよくわからない状態になってしましました。

379:デフォルトの名無しさん
07/05/18 02:26:54
書き込みエラー。なぜ。。。

380:デフォルトの名無しさん
07/05/18 02:27:59
行多すぎか。めんどい。
>> 357

最初の?

        {
            char hoge[]={
                '+',
                '-',
                '*'
            };

            char IsOperation=0;
            while(i < sizeof(hoge)/sizeof(hoge[0])) {
                if(hoge[i] == c) {
                    IsOperation=1;
                    break;
                }
                ++i;
            }
            if(!IsOperation) {
                continue;
            }
        }

381:372
07/05/18 02:28:43
学校のはCなんですが家ではC++なんですが影響ありますかね?

382:デフォルトの名無しさん
07/05/18 03:14:06
>>358
っつーか5月18日までって、今日までやん。。。きんもぉ〜★な俺のソースでも提出するか?
今やってるけどw

383:372
07/05/18 03:16:19
とりあえず助けて欲しいです!よろしくおねがいします。

384:デフォルトの名無しさん
07/05/18 04:02:33
>>358
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
こっ、こぉ〜〜れでええんか?課題1のプログラムを実行して入力した行列を
save1.txtに書き出して、課題2で使うプログラムを実行するとsave1.txtに書かれた
2つの4x4の行列の結果をsave2.txtに出力。読込んだ行列を表示するようにしてあるんで
不要なら消しておくべし。にしても、自分でもきんもぉ〜〜★なソースになっちまったぜい!w

385:デフォルトの名無しさん
07/05/18 04:14:22
あっ、入力の際に 1: ってゴミが残っているから消しておいて orz

386:デフォルトの名無しさん
07/05/18 04:31:19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)Windows
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語: C
[4] 期限: 5/23
[5] その他の制限: 配列までです、初心者ですどうかよろしくおねがいします。

387:デフォルトの名無しさん
07/05/18 05:33:12
>>344 >>345なやつっていつもの屁理屈反論厨だよね?w
いっていることを見ると、やっぱこいつらANSI、ISO準拠すら理解してなさそうだし
話の論点がまったく理解できていないみたいだし。誰かさんがANSI、ISOの
標準の話を持ち出したにもかかわらず、そういう関数があるよと言っているのは分かるが
標準的なmain関数の記述がされていないのが ぶふふふぅ〜〜(吹いてまうぅ〜って)
って話なのよw

388:デフォルトの名無しさん
07/05/18 05:39:50
321 名前:デフォルトの名無しさん 投稿日:2007/05/17(木) 22:31:02
>>318
tmpfile()がANSI/ISO C標準関数であることを知らないのではあるまいな
>>317
> int main()

(ダイバスターの隊員が驚く時の音を4回鳴らしながら)
ANSI/ISO C標準関数 int main() ANSI/ISO C標準関数 int main()
ANSI/ISO C標準関数 int main() ANSI/ISO C標準関数 int main()
mainも当然関数ですから〜〜!残念(ジャカジャンッ!
これだとANSI、ISOの標準スタイルではない 斬り!

拙者、こんなことを言っても、稼業でプログラマーなんてやっていない
趣味でやっているだけのただの一般人ですから、切腹!

389:デフォルトの名無しさん
07/05/18 05:42:36
ぶふふふぅ〜〜(吹いてまうぅ〜)

390:デフォルトの名無しさん
07/05/18 05:53:12
自分が理解していなかったことを指摘されると、無関係なことを持ち出して
お前これ分かってねーみたいな揺さぶりは通用しない。第一、まず先に
標準関数って言っておきながら、mainそのものの記述が標準スタイルではないという
なんとも頭かくして尻隠さずな発言がワロスなのさ

391:デフォルトの名無しさん
07/05/18 05:59:21
どう見てもtmpfile()が標準なことを知らなかったのをごまかすために、
int main()に話をすり替えてるだけにしか見えん。

392:デフォルトの名無しさん
07/05/18 06:11:18
>>386
URLリンク(kansai2channeler.hp.infoseek.co.jp)
fも0又は1で表現される画像なら、問題自体(というか式(1))がおかしい。

393:デフォルトの名無しさん
07/05/18 06:37:43
>>377
ごめん。4行4列の行列の転置行列を表示するのに計算要るのか?
どういう計算するん?

394:デフォルトの名無しさん
07/05/18 06:47:51
添字の付け替えじゃないの?

395:デフォルトの名無しさん
07/05/18 06:51:17
それ計算言うて良いのか?>添え字の付け替え

396:デフォルトの名無しさん
07/05/18 06:56:53
tmpfile()って便利だな

397:デフォルトの名無しさん
07/05/18 07:25:11
>>391
どうみても標準って言葉と実装を理解しておらず、墓穴を掘ったことを
int mainの指摘をした相手がtmpfileを知らなかったことにしたいらしいw
っつーか、知っている知っていないはともかく、int mainの括弧の中は
敢えてANSI、ISOを持ち出した標準を謳うんであれば、なおさら準拠した
記述をすべきであって、していないからといって別に悔やむことはないぞw

398:デフォルトの名無しさん
07/05/18 09:42:32
>>392
fはこんな感じだったと思います。原因が入力画像の端も対象にしてました。
迅速に答えていただきありがとうございました。

399:デフォルトの名無しさん
07/05/18 10:18:05
まだやってるのか。

400:357
07/05/18 11:34:36
>>357
よろしくお願いします。

401:247
07/05/18 11:41:38
#include<stdio.h>
void chg(int *cnt){
*cnt *= *cnt%2 ? 5 : 10;
}
int main(){
int cnt;
printf("Cnt =>");
scanf("%d",&cnt);
if(cnt<0 && 9<cnt) return 1;
chg(&cnt);
printf("cnt(chg後)  :%d\n",cnt);
return 0;
}
mainでscanfを使わずにgetcharでかく方法を教えてください。

402:デフォルトの名無しさん
07/05/18 11:47:43
>>401
- scanf("%d",&cnt);
+ cnt = getchar() - '0';
とでも汁

403:デフォルトの名無しさん
07/05/18 11:48:46
>>400
>>380でレスがついてないか

404:デフォルトの名無しさん
07/05/18 11:49:45 BE:34938836-2BP(222)
>>400
入力が定義されてないのでこれで。
URLリンク(c-kadai.sakura.ne.jp)

405:357
07/05/18 13:30:51
>>380
ありがとうございます。
でも何か上手く動かないです…。
二つ目の???に何か入れないとダメなんですかね?

>>403
ありがとうございました。

>>404
どういうことでしょうか?

406:デフォルトの名無しさん
07/05/18 15:59:48
【質問テンプレ】
[1] 前進オイラー法
[2] 熱伝導方程式の初期値協会値問題を陽的差分法で解くためのプログラムを作成せよ。
  初期値(δu/δt)=(δ^2 u/δx^2)
u(0,t)=u(1,t)=0 (t>0)
u(x,0)=f(x) (0≦x≦1)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名 cc
 [3.3] 言語: C++
[4] 期限: 2007年5月18日17時

お願いします。


407:デフォルトの名無しさん
07/05/18 16:08:10
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] 不明
 [3.3] 言語: C言語
[4] 期限: ([2007年05月18日18:00
[5] プログラム全く分かりません。

以下になります。

(1)配列を使ってキューを実装したい。キューの先頭を管理する変数を
head、末尾を管理する変数をtail、データを格納すr配列をentry[]と
して、データ構造を考えなさい。ただし、格納するデータは文字(char)
のみとし、格納する最大個数はMAXSIZEとしてとしてdefineされているも
のとする。

(2)上記のデータ構造を用いてキューを実現しなさい。

(3)連結リストを使ってキューを実現しなさい。(教科書無いんで無視)

(4)(2)の配列による実装と(3)の連結リストによる実装を比較的考察し、
各々の特徴を整理しなさい。

以上です。よろしくお願いいたします。

408:デフォルトの名無しさん
07/05/18 16:22:57
3はやるのか

409:デフォルトの名無しさん
07/05/18 16:43:03 BE:48525555-2BP(222)
ていうか3をやらないと課題の意味が無い気が。

410:デフォルトの名無しさん
07/05/18 17:11:49
[1] 授業単元:
[2] 問題文(含コード&リンク):
以下のように10個のますに3つの白いコインと3つの黒いコインが配置されている。
・・□・
・・●・
・・●・
□○●□
・○・・
・○・・
・□・・
※「□」は空白を表す。「・」は完全に無視して下さい。
各コインは隣のますが空白であれば一度に一つずつ動かすことができる。
例えば、一番下の●は、右のますが空白であるので、
・・□・
・・●・
・・●・
□○□●
・○・・
・○・・
・□・・
のように動かすことができる。この手順を繰返し、
以下の最終状態の配置にする最短の手順を求めよ。

・・○・
・・○・
□●○□
・●・・
・●・・
・□・・



411:デフォルトの名無しさん
07/05/18 17:12:35
また、ますは
・・F・
・・G・
・・H・
ABIJ
・C・・
・D・・
・E・・
のようなラベルを用い、例の移動であったら、
「IJ」と表示すること。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限: 5月20日まで
[5] 制限はとくにありません。
幅優先探索が適していると思うのですが、コードを書くとなると混乱
してしまいます。自分なりに頑張ったつもりですがお手上げです↓
どうかよろしくお願いします。


412: ◆kqWkheFZ3g
07/05/18 17:22:57
1授業単元:プログラミング実習
2問題文:配列を用いてn個までの値を入力し、その最大値、最小値、及び
全体の平均点を出すプログラムを作成せよ。
3環境:Linux3.2
gcc
C
4 2007年5月22日17時
5 ifやwhile、そして今日配列まで習いました。

よろしくお願いします!!


413:デフォルトの名無しさん
07/05/18 17:52:16
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
こうですか?>>407


414:デフォルトの名無しさん
07/05/18 18:09:49
C言語の入門らしいですがさっぱりです…
何らかの10進数を入力するとそれに1を加えた数を表示するプログラムをお願いします

Cygwin?を使ってます

415:デフォルトの名無しさん
07/05/18 19:07:55
めちゃくちゃ入門じゃん
とりあえずテンプレで書け

416:デフォルトの名無しさん
07/05/18 19:26:12 BE:54348847-2BP(222)
>>414
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[256];fgets(tmp,256,stdin);printf("%d\n",atoi(tmp)+1);return 0;}

417:デフォルトの名無しさん
07/05/18 20:21:19
>>410
それ、取りうる状態の数が結構限られているだろ?
全ての状態をメモリ上に書き出せるんじゃないの?


418:デフォルトの名無しさん
07/05/18 21:40:35
>>417
最短の手順を求めるのが目的だから、
状態全部書き出せるかどうかはあんま関係ない気もするけど

ループ検出のハッシュでコリジョンを防ぎ易い、とかその辺の話?

419:デフォルトの名無しさん
07/05/18 21:42:40
最終状態からの距離を求めるのが
簡単ということでしょ

420:デフォルトの名無しさん
07/05/18 21:56:41
>>410
URLリンク(kansai2channeler.hp.infoseek.co.jp)
パフォーマンスのことは全然考えてないけど、一応答えは出る。

421:デフォルトの名無しさん
07/05/18 22:37:16
いきなりなんですけど

 if(0 < x > 60)

ってありですか?

422:デフォルトの名無しさん
07/05/18 22:38:59
>>421
ありだが、つねに偽になる

423:デフォルトの名無しさん
07/05/18 22:42:07
>>422
ありがとうございます!

424:デフォルトの名無しさん
07/05/18 22:46:58
>>423
if(0 < x < 60)
なら常に真になる

理由
【1】.まず 0 < x が評価されて 0 または 1 になる
【2】.次に (【1】の評価結果) < 60 が評価されいずれの場合でも真になる

誤解の無いように!

425:デフォルトの名無しさん
07/05/18 22:50:35
>>424
ありがとうございますッ><
これでこの部分は完璧!!!!!!!!!!!!!!!!1111

426:デフォルトの名無しさん
07/05/18 23:18:20
>>424
スゲー
なんかCの罠って感じだな

427:デフォルトの名無しさん
07/05/18 23:20:37
Cに限ったことじゃないんだけどね

428:デフォルトの名無しさん
07/05/18 23:27:23
それをどの部分で使うのか?>>425

429:デフォルトの名無しさん
07/05/19 00:14:34
バグを仕込む時

430:デフォルトの名無しさん
07/05/19 00:20:05
>>429
納得

431:デフォルトの名無しさん
07/05/19 01:34:54
URLリンク(www.youtube.com)
C言語怖いんか〜

432:デフォルトの名無しさん
07/05/19 02:26:06
>>431
大きくスレ違い!

433:デフォルトの名無しさん
07/05/19 08:21:08
[1] 授業単元:入力2
[2] 問題文(含コード&リンク):文字列を10回入力して、最も大きな文字列を表示する。
[3] 環境
 [3.1] OS:Windows2000
 [3.2] コンパイラ名とバージョン: LSI C-86
 [3.3] 言語:C言語
[4] 期限: (2007年5月20日まで)
[5] その他の制限:入力はscanf関数ではなく、getchar関数を使用する。
文字列の比較はstrcmp関数を使用する。


434:デフォルトの名無しさん
07/05/19 08:35:27
> 最も大きな文字列
何のこっちゃ?文字の大きさの基準は?

435:デフォルトの名無しさん
07/05/19 08:39:21
>>433
VC++6でしか確認してねーけど。こういうこと?

#include <stdio.h>
#include <string.h>
void main(void) {
int i=0, c=0;
char max;
while ( i<10 ) {
c = getchar();
if ( (c>='a' && c<='z') || (c>='A' && c<='Z') ) {
if ( strcmp( &max, &((char)c) )>0 ) max=c;
++i;
}
}
printf( "MAX: %c\n", max );
}


436:デフォルトの名無しさん
07/05/19 09:08:10
>>434
文字の大きさの基準は、課題にそれ以上のことが書かれていなかったので
正直なところよくわかりません。
想像だとstrcmp関数の戻り値で判断、文字コード順で比較して
最も大きな文字列を表示ではないかと……。

>>435
ありがとうございます。
1度LSI C-86で動かしてみます。

437:デフォルトの名無しさん
07/05/19 09:12:10
>>433 strcmpつかったけど、文字列の長さで大小関係が決められるのではなく、
一致しなかった場合は一致しなかった場所の文字同士の文字コードの比較で、
コードの値の大小関係で正か負が決定されてしまい、文字列の長さは考慮せず。
例えば、aBcdef と abcd を比較した場合、Bとbが不一致でbの方がコードの値が
大きいんで、文字列は短いけどabcDの方が大きいという結果に。

URLリンク(www.psl.ne.jp)

#include <stdio.h>
#include <string.h>
int main(void) {
char ch,strmax[256]={"\0"},buf[256];
size_t i,j;

for(i=0; i<3; i++) {
j=0;
do{
ch=getchar();
if(ch=='\n') break;
else buf[j++]=ch;
}while(1);
buf[j]='\0';
if( strcmp(strmax,buf) < 0 ) {
strcpy(strmax,buf);
}
}
puts(strmax);
return 0;
}

438:デフォルトの名無しさん
07/05/19 09:18:21
>>437の訂正
for(i=0; i<3; i++) {  は i<10に。

439:デフォルトの名無しさん
07/05/19 10:48:26
>>437
ありがとうございます。
助かりました。
文字列の長さについてはふれられてなかったので、大丈夫だと思います。


440:デフォルトの名無しさん
07/05/19 11:58:31
[1] 授業単元:
[2] 問題文(含コード&リンク):
  URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++2005
 [3.3] 言語: C++
[4] 期限: 2007/ 5/ 19/ 23:59 まで
[5] その他の制限: map と list を用いる

問題文が少々長いですが、どうかよろしくお願いします

441:デフォルトの名無しさん
07/05/19 11:58:44
>>436
>435は文字の大きさを比較しているので要注意。
しかし、ほんとにLSI-C86使っているのか?
とんでもないな。

442:デフォルトの名無しさん
07/05/19 12:06:13
>>440
くそぅAccess使っていいならすぐなんだがな

443:デフォルトの名無しさん
07/05/19 12:56:40
>>440
リレーションPを構造体で作れ、と言ってるのにサンプルはクラスなんだが、
クラスで良いんだよな?

444:デフォルトの名無しさん
07/05/19 13:12:36
>>440
はいクラス使ってです

445:デフォルトの名無しさん
07/05/19 14:23:31
>>420
パフォーマンス云々以前に
malloc(0) を呼ぶと NULL が返ってくる可能性があることを
全く考慮していないだろ?


446:デフォルトの名無しさん
07/05/19 15:06:30
>>440
URLリンク(kansai2channeler.hp.infoseek.co.jp)

lzhの中身はソース1つとP.txt、SPJ.txt

クオリティ低い・・・。
仕事でこんなコード書いてたら殴られそうだ。

447:デフォルトの名無しさん
07/05/19 15:15:04
>>445
mallocがNULLを返した時点で即座に終了するようになっていることを失念していたw
指摘ありがとう。

URLリンク(kansai2channeler.hp.infoseek.co.jp)
ついでに、キューが空のときpushが誤動作するのを修正。この問題では顕在化しないけど。

448:デフォルトの名無しさん
07/05/19 15:32:37
>>446
ありがとうございました ホントに助かります
殴られたら耐えます

449:#
07/05/19 17:42:46
[1] 授業単元:アルゴリズム
[2] 問題文:
レポート課題内容: 実行時引数として算術式を前置記法で与える。演算子は + と *,演算数は英字1字とする。
その算術式を表す二分木を作り,その先行順,中央順,後行順,レベル順での走査して,つぎのように出力するプログラムを作れ。
 例: ./a.out "*+a**bc+def"
    * + a * * b c + d e f
    a + b * c * d + e * f


[3] 環境
 [3.1] OS:Windows/XP
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語:C
[4] 期限: 5月21日
[5] その他の制限: リンクによるリスト処理の形
どなたかお願いします

450:デフォルトの名無しさん
07/05/19 21:15:34
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):20元ほどの連立方程式を部分ピボット選択法をとりいれて解けるプログラムをつくりなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio.net 2003
 [3.3] 言語: C
[4] 期限: 5月21日22時まで
[5] その他の制限:特に無し。

お願いします。


451:デフォルトの名無しさん
07/05/19 21:52:33
>>449
URLリンク(kansai2channeler.hp.infoseek.co.jp)

リンクによるリスト処理の形というのが何のことかイマイチ分からない・・・

>>450
プログラム云々というより数学がorz

452:デフォルトの名無しさん
07/05/19 22:44:45
>>450
部分ピボット選択法って何だ?ガウスの消去法の事か?

453:デフォルトの名無しさん
07/05/20 00:47:44
>>452
そうです。説明不足すみません。

454:デフォルトの名無しさん
07/05/20 01:03:19
>>450
URLリンク(kansai2channeler.hp.infoseek.co.jp)

455:デフォルトの名無しさん
07/05/20 01:41:37
>>454
本当にありがとうございます!

456:デフォルトの名無しさん
07/05/20 08:56:46
【質問テンプレ】
[1] Basic プログラミング
[2] 次の4つの関数を作りなさい:
  
1.Integerのみで構成されたArrayの中から、ユーザー任意のIntegerのみを
  消去する(複数個ある場合も考えること)
2.ArrayAとArrayBがあるとして、Aの中のIntegerが全てBの中に含まれているかを
  調べ、含まれていたらメッセージをOutputする。
3.Arrayを小さいIntegerから大きいIntegerの順に並び変える。
4.Arrayを大きいIntegerから小さいIntegerの順に並び変える。
  
[3] 環境
 [3.1] OS: Windows 
 [3.2] 不明です
 [3.3] 言語: C++
[4] 期限: 5/29/07までお願いします
[5] その他の制限:まだ初めて2ヶ月目なのであまり進んだことは使えません。
  Forループ、if、Switchを習い終えたレベルです。
  どうかよろしくお願いします。

457:デフォルトの名無しさん
07/05/20 08:59:36
BasicプログラミングでC++とはこれ如何に?

458:456
07/05/20 09:00:56
期限: 5/19/07まででした、訂正します。

459:456
07/05/20 09:02:17
あーーまた間違えてしまった 期限: 5/23/07までです。何回も申し訳ありません。

460:456
07/05/20 09:04:25
>>457

紛らわしくてすみません、アメリカの大学に在学してまして
クラスの名前がBasic Programingなのです。プログラミングの最初に取る基本のクラスです。

461:デフォルトの名無しさん
07/05/20 09:14:15
まあ、宿題には変わりないからそこらへんは気にしない。

462:デフォルトの名無しさん
07/05/20 09:14:38
っつーか、大学の名前出せ。こんなところを頼っているようじゃ
そんな生徒はとっとと日本に帰国させた方が良いと通報しとくからw

463:デフォルトの名無しさん
07/05/20 09:43:06
>>456
ホームシックだからって、宿題を装ってまでして気を紛らわそうとするなよw
もっと構ってくれる板たくさんあるぞ!

464:デフォルトの名無しさん
07/05/20 09:52:06
御託はいいからさっさと宿題処理しろよハゲ。

465:デフォルトの名無しさん
07/05/20 10:52:52
>456
消去するって具体的にはどうすんの?
値を0にするだけ?それともそこに後ろの値を詰めるの?

466:456
07/05/20 11:20:02
>>465
ただ消去しろ、とのことなので
0でも詰めるのでもないと思います。
空きのArrayにしろと言う事だと思いますが、そのようなことは可能なのでしょうか?

467:デフォルトの名無しさん
07/05/20 11:21:31
該当するデータがあったら抹消、空いたところに数値を先頭に向かって詰めろと?
不要になった部分のメモリも開放しろと?

468:デフォルトの名無しさん
07/05/20 11:22:07
空きのArrayなんか存在しません。

469:デフォルトの名無しさん
07/05/20 11:25:29
>>467
不要になった部分のメモリも開放しろということだと思います

>>468
無知なもので、すみません。
たとえばサイズ5のArrayに4つまでしかDataをインプットしなかったら
最後の一個は空きにはならないのでしょうか?

470:デフォルトの名無しさん
07/05/20 11:35:58
っつーか、最初に格納するデータの要素の個数は決まってない?
データを入力しながら動的にメモリを確保していくやり方で良いんかい?

471:デフォルトの名無しさん
07/05/20 11:38:49
URLリンク(www.geocities.jp)
こういった内容も授業でやったん?

472:デフォルトの名無しさん
07/05/20 11:40:09
最初にユーザー任意でサイズは決めるものと思ってもらって大丈夫です。

473:デフォルトの名無しさん
07/05/20 11:42:02
>>471
いえ、Delete Operatorは、まだ習っていません。


474:デフォルトの名無しさん
07/05/20 11:43:52
もしDeleteやその他を使わなければいけない、もしくは使ったほうが遥かに楽
などでしたら、使っても差し支えないと思います。

475:デフォルトの名無しさん
07/05/20 11:49:31
とりあえず、配列の取り扱いが分かれば
あとは並び替えなんてのはありきたりなソートのライブラリを使ってしまえば良いし。
C++はさっぱりだから俺はパス、すまそ orz

476:デフォルトの名無しさん
07/05/20 11:57:11
ライブラリを使うのは多分ダメなので
ループを使ってチェックをするやり方だと思います。
皆さんにとっては簡単な問題なのに、尋ね方が悪く手間取らせてすいませんでした。

477:デフォルトの名無しさん
07/05/20 12:06:13
いーやいやいやいやいや、自分で定義したライブラリを。
っつーか、使えるものを使うってのは当たり前じゃね?
変に条件を絞るってなら、その条件を言ってもらわんと。
ソートのアルゴリズムの指定もありか?

478:デフォルトの名無しさん
07/05/20 12:12:52
迷惑かけて申し訳ありません。
今、調べたらソートのアルゴリズムの指定がありました。

大きい順に並べる時、
A B C D E F
まずAと(BCDEF)を比べて、Aより大きいものがあれば交換。
つぎにBと残りを比べて大きいものがあれば交換、CでDで
という感じです。

479:デフォルトの名無しさん
07/05/20 12:20:21
要するに基本選択法ね。
URLリンク(www.miyagi-ct.ac.jp)



480:デフォルトの名無しさん
07/05/20 12:35:58
アドレスが切れてるみたいですが、基本選択法で間違いありません。
それと何回も申し訳ないのですが、Pointerはまだ習っていないので使えません。
よろしくお願いします。

481:デフォルトの名無しさん
07/05/20 12:42:02
切れてるって、冒頭のh抜きってだけやん・・・あんたやばいよ。
情報処理の取り扱いに慣れてないな。今すぐ専攻している学問をやめて
ほかの路線を考えた方が良いぜ?こんな俺でも3流以下の大学中退だからw

482:デフォルトの名無しさん
07/05/20 13:02:54
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク):
if文、 if~else~文、 if~else if~else文、 switch文、 三項演算子、をすべて用いてクイズを作成しなさい
反復文は使えないものとし、同じ問題はでないものとする
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] visual studio2005
 [3.3] 言語: C++
[4] 期限: 5/25まで
[5] その他の制限: 特になし

よろしくお願いします。

483:デフォルトの名無しさん
07/05/20 13:13:02
>>481
すみません言葉が足りませんでした
教えていただいたページが存在しなかったので
アドレスのリンクが切れていると言ったつもりでしたが・・・


484:デフォルトの名無しさん
07/05/20 14:05:53
期限: 5/23/07
とりあえず現地時刻のってことだろうから、ワシントンD.Cの時刻を参考にした場合
URLリンク(www.worldtimeserver.com)
日本時間から13時間差し引いた時刻となるから、まぁ、日本時間でその期日で間に合っていりゃ良いか。
誰か頼む。俺はちと寝る。時差ぼけじゃ〜〜なくてただの徹夜明け orz

485:デフォルトの名無しさん
07/05/20 14:09:18
バブルソート

486:デフォルトの名無しさん
07/05/20 14:11:00
>>485
違うって、そりゃ各々の隣接する要素同士の比較、交換やろ?w

487:デフォルトの名無しさん
07/05/20 14:15:34
>>456>>466
deleteは習ってない、ソートする課題がある、ということは、
Arrayは固定長で、要素を消す時は前詰めして
要素数を別変数で管理する方法だと思うがどうか?

488:デフォルトの名無しさん
07/05/20 14:32:06
>Forループ、if、Switchを習い終えたレベルです
なんかVBくさい

489:デフォルトの名無しさん
07/05/20 14:44:33
>>484
日本時間で23日の午後4時までです。
お疲れのところすみませんでした。


490:デフォルトの名無しさん
07/05/20 14:52:09
>>487

>Arrayは固定長で、要素を消す時は前詰
はい長さは固定で、消した後については特に指定がないので
前詰めで大丈夫だと思います。

>要素数を別変数で管理
理解が足りなくてすみません
array[i]のようにした後、iと固定サイズでループを作ったりすることでしょうか?

491:デフォルトの名無しさん
07/05/20 15:02:10
>要素数を別変数で管理
num = 有効な要素の数
ってことじゃないの?
a[0] = 100
a[1] = 200
a[2] = 300
a[3] = 400
num = 4
↓a[1]を消して詰める
a[0] = 100
a[1] = 300
a[2] = 400
a[3] = 400
num = 3

492:デフォルトの名無しさん
07/05/20 15:15:43
面倒なので全部algorithmでやってしまえ〜

493:デフォルトの名無しさん
07/05/20 15:22:41
小生の環境では>>479はきちんと表示される

494:デフォルトの名無しさん
07/05/20 15:46:15
国外からのアクセスを拒否ってるんじゃない?

495:デフォルトの名無しさん
07/05/20 15:52:57
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク):
下記@Aの銀行に「一億円」を預けた場合、何年と何ヵ月後にAの銀行の預金額を@の銀行の預金額が超えるか
@利率0.08% (複利)の銀行
A利率0.09% (単利)の銀行
反復文を用いて@A双方の毎月の預金額を表示し、Aの銀行の預金
額を@の銀行の預金額を超えた時点で反復文を終了後、「@の銀行は
●年●ヵ月後にAの銀行の預金額を超える」と表示しなさい。

また、上記@の銀行に「1億円」、Aの銀行に「9999万円」を預けた場合、
どちらが先に「1億200万円」になるか、前問と同じ処理を行い、最後に
「●の銀行が●年●ヵ月後に先に1億200万円貯まる」と表示しなさい。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] visual studio2005
 [3.3] 言語: C++
[4] 期限: 5/26まで
[5] その他の制限: 特になし

よろしくお願いします。

496:デフォルトの名無しさん
07/05/20 15:54:20
[1] 授業単元:C実習
[2]問題文
下記の実行結果になるプログラムを作成せよ。
1〜nまでの整数合計を求めるプログラム。
※while文を使用すること!
変数は下記を使用
int i ループカウンタ
int n 最終数を入力するエリア
int ans 合計算出エリア
<実行結果>
1からnまでの和を計算します
nを入力してください:(例5)

1から5までの和は(例15)です。

[環境3]
 [3.1] OS: WindowsXP
 [3.2] visual studio2005
 [3.3] 言語: C++

よろしくおねがいします

497:496
07/05/20 15:56:44
期限は今日の夕方まででお願いしたいです

498:デフォルトの名無しさん
07/05/20 16:09:51
>>496

#include "stdio.h"
int main(){
int i,n,ans=0;
printf("1からnまでの和を計算します\nnを入力してください:");
scanf("%d",&n);
i=n;
while(i)ans+=i--;
printf("1から5までの和は%dです。\n",ans);
return 1;
}

499:デフォルトの名無しさん
07/05/20 16:10:26
>>496
#include <iostream>
using namespace std;
int main(void)
{
int n;
cout << "1からnまでの和を計算します。" << endl;
cout << "nを入力してください。" << endl;
cin >> n;
int ans = 0;
int i = 1;
while (i <= n) {
ans += i++;
}
cout << "1から" << n << "までの";
cout << "和は" << ans << "です。" << endl;
return 0;
}


500:デフォルトの名無しさん
07/05/20 16:51:09
>>498,499さん感謝です

501:デフォルトの名無しさん
07/05/20 16:54:58
正直、入門書終わったらネットで勉強が常ですか?

502:デフォルトの名無しさん
07/05/20 16:55:36
うん

503:デフォルトの名無しさん
07/05/20 17:00:52
( ̄〜 ̄;)なるほど、、本よりネットがメリットあるんですね

504:デフォルトの名無しさん
07/05/20 17:02:38
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):

16進数の足し算表と掛け算表を作成せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: なし
[5] その他の制限: なし

よろしくお願いします

505:デフォルトの名無しさん
07/05/20 17:03:01
俺は入門からしてネットだったけどな。

506:デフォルトの名無しさん
07/05/20 17:15:52
C言語は入門からこのスレで宿題解いて勉強したぜ

507:デフォルトの名無しさん
07/05/20 17:25:10
しかしみさなんはいかほどまでに上達なさってるんすか?

508:デフォルトの名無しさん
07/05/20 17:28:08
烏賊にはかないません

509:デフォルトの名無しさん
07/05/20 17:29:06
今職業プログラマ 見習いだけど

510:505
07/05/20 17:36:45
俺も職業プログラマ。今年で3年目。
C/C++/C#/J2ME/J2SEやってる。

511:デフォルトの名無しさん
07/05/20 17:40:24
プログラマしんどいんですか??
人並に働ける会社なんですかね皆さんは

512:デフォルトの名無しさん
07/05/20 17:58:22
>>511
人並みっていうのは終電までには帰れる
とかそういうこと?

513:デフォルトの名無しさん
07/05/20 18:06:54
家でもプログラミングする変態だから参考にならないかもしれないけど
そんなにしんどくないよ
終電には間に合うし

514:デフォルトの名無しさん
07/05/20 18:11:05
だ、誰か・・・そろそろあの言葉を>>511へ言ってやってくれ

515:デフォルトの名無しさん
07/05/20 18:13:00
>>495
長くなってしまった。すまん。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

516:デフォルトの名無しさん
07/05/20 18:51:00
[1] 授業単元:
[2] 問題文:
@. ハノイの塔のボトムアップ(反復形)のプログラムを作れ。
プログラムは,maink関数と,hanoi関数(ともに再帰を含まない)とで構成する。
./a.out N の形に円盤の枚数 N を十九時引数として指定すると,N枚の円盤の山を右回りに隣の柱に移す最短手順を出力するようにせよ。

A.アジア地区予選の問題Gをお願いします
URLリンク(www.acm-japan.org)

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

[4] 期限: 5月21日23時
よろしくお願いします

517:デフォルトの名無しさん
07/05/20 19:01:39
再帰無しのハノイは(;´Д`)ハァハァだな

518:デフォルトの名無しさん
07/05/20 19:01:41
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク):
反復文を用いて、トランプゲーム(ババ抜き、7ならべなど)を実現するプログラムを作成しなさい
ゲームの種類はなんでもよい

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] visual studio2005
 [3.3] 言語: C++
[4] 期限: 5/26まで
[5] その他の制限: 特になし

よろしくお願いします。

519:デフォルトの名無しさん
07/05/20 19:11:41
>枚数 N を十九時引数として指定

にほんごでおけ

520:デフォルトの名無しさん
07/05/20 19:30:10
非再帰のハノイは昔このスレに書いた記憶があるが、見付からん

521:デフォルトの名無しさん
07/05/20 19:38:25
>>519
>516 はローマ字打ちと予測する
>枚数 N を十九時引数として指定
実行時引数
jikkoujihikisuu
jikk ujihikisuu
じっくじひきすう
十九時引数


522:デフォルトの名無しさん
07/05/20 20:12:35
非再帰ハノイは6から塔の番号を引いたり、何か変な工夫が
必要だった気がする。

523:sage
07/05/20 20:27:09
[1] 授業単元: プログラミング
[2] 問題文: 
       以下に与えられたg(x)に対して、与えられた「x」の最初の値「x0」から出発して、
       x=g(x)の形の方程式の解を不動点反復法によって求めよ。
       (1) g(x)=1/3*(x^2+1), x0=1
       (2) g(x)=3-(1/x), x0=1
       (3) g(x)=1/(x^2+1), x0=1
[3] 環境 
 [3.1] OS: (WindowsXP) 
 [3.2] コンパイラ名とバージョン: UNIX 
 [3.3] 言語: C言語 
[4] 期限: 5月21日:午前10時まで 

よろしくお願いします。 


524:デフォルトの名無しさん
07/05/20 20:42:09
>>523
#include <stdio.h>
#include <math.h>

#define EPS 1.0e-5
#define KMAX 1000

int main(void)
{
int ct = 0;
double x, xn;

x = 1; /* ここにx0を入れる */
while (1) {
ct++;
printf("%3d : %f\n", ct, x);
xn = 1. / 3 * (x * x + 1); /* ここにg(x)を入れる */
if (fabs(xn - x) < EPS) {
printf("Solution found.\n");
break;
}
if (ct > KMAX) {
printf("Error.\n");
break;
}
x = xn;
}

return 0;
}

525:デフォルトの名無しさん
07/05/20 20:59:00
ハノイの塔の手順を書き出してじっくり眺めると、
動かす円盤の番号と手順の2進数のビットパターンに関連があることが判る。
つまり、奇数手目には必ず最上位の円盤を動かすわけで、これが最下位ビット(bit0)に相当する。
同様に二手目、六手目などに第二位の円盤を動かすのが第二ビット(bit1)、四手目に第三ビット(bit2)……
従って、この方法を使えば任意の手数番目にどの円盤を動かすかは簡単に得られる。
そこまで判れば、どこからどこへ動かすかも同様に定数時間で得られる。

526:デフォルトの名無しさん
07/05/20 21:12:23
なんとか思い出せた。

>>516
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>525
まさにその方法だ。

527:デフォルトの名無しさん
07/05/20 21:13:09
>>524
ありがとうございます!とても速いです!あこがれます!

528:デフォルトの名無しさん
07/05/20 21:20:18
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
入力した二つの値の掛け算を筆算形式で計算せよ。
ただし入出力ともに16進数とし符号なしとする。

[3] 環境
 [3.1] OS: Vine Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 5/22 21:00
[5] その他の制限: 特になし

よろしくお願いします。

529:デフォルトの名無しさん
07/05/20 21:22:05
>>524
早撃ちジャックと呼んであげようw

530:デフォルトの名無しさん
07/05/20 21:57:13
>>516
2006年のでいいの?

531:デフォルトの名無しさん
07/05/20 22:19:13
>>504
#include <stdio.h>
int add(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }
void prtable(int (*op)(int, int))
{
    int i, j;
    putchar(' ');
    for (j = 1; j < 0x10; ++j)
        printf("%3X", j);
    putchar('\n');
    for (i = 1; i < 0x10; ++i) {
        printf("%X", i);
        for (j = 1; j < 0x10; ++j)
            printf("%3X", (*op)(i, j));
        putchar('\n');
    }
}
int main(void)
{
    prtable(add);
    putchar('\n');
    prtable(mul);
    return 0;
}


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4176日前に更新/299 KB
担当:undef