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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:40:55 ]
あなたが解けない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++の宿題を片付けます 109代目
pc11.2ch.net/test/read.cgi/tech/1212895856/

610 名前:デフォルトの名無しさん [2008/06/24(火) 23:11:40 ]
1] 授業単元:基礎プログラミング
[2] 問題文
(1)標準入力からint 型引数に文字コード (ASCII) を読み込むと, その文字が小文字 (a〜z) であれば大文字のコードを返し
   そうでないならば受け取ったコードをそのまま返す関数を設計し, その関数を利用するプログラムを作成しなさい
(2)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列の逆順に 並べか替えた文字列を表示し
   何も返さない関数を設計し, その関数を利用するプログラムを作成しなさい.
(3)char 型の配列の名前を2つ引数 P, R に受け取ると, P に記憶されている文字列を逆順に並べか替えた文字列を R に記憶して
   何も返さない関数を設計し, その関数を利用するプログラムを作成しなさい.
(4)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列が回文ならば 1 を, そうでなければ 0 を返す関数を設計し
   その関数を利用するプログラムを作成しなさい. ただし,前問の関数を利用すること.
(5)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列が回文ならば 1 を, そうでなければ 0 を返す関数を設計し
   その関数を利用するプログラムを作成しなさい. ただし,前々問の関数を利用せず, 直接,文字列中の文字を先頭と末尾から比較する方針を用いること.
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン:(cygwin)
 [3.3] 言語:C
[4] 期限:(明日の15時まで)
[5] その他の制限:

611 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:12:48 ]
>>607
#include <stdio.h>
int main(void)
{
int i, j, sum;

for(i=1, sum=0; i<=100; i++) sum += i;
printf("1から100までの整数の和は%d\n", sum);

for(i=1, sum=0; i<=100; i+=2) sum += i;
printf("1から100までの奇数の和は%d\n", sum);

for(i=1; i<=20; i++) {
if(i<10) for(j=0; j<i; j++) putchar(' ');
else for(j=20; j>i; j--) putchar(' ');
printf("%d\n", i);
}

return 0;
}

612 名前:607 mailto:sage [2008/06/24(火) 23:26:48 ]
>>611
ありがとうございます

613 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:34:49 ]
2進数変換の問題を出されました。。。基本的な部分は作ってみたのですが、完璧にできません…小数変換の工程などは手ではできるのですが…
どなたかご助力宜しくお願いします。


[1] 授業単元:実験
[2] 問題文(含コード&リンク):
10進数を2進数に変換するプログラムを作成せよ。
その際、入力する10進数が小数点ありの数値(例:2.56)でも変換可能なものとする。

[3] 環境
 [3.1] OS:XP
 [3.3] 言語: C
[4] 期限: 08年06月27日
[5] その他の制限:
基本的に習ったことの利用がメインなので、特殊な関数などは使えません。原始的なアルゴリズムでないとだめなようです。
もちろん、構造体、配列、ポインタなどの基本は習いました。



614 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:35:34 ]
作ってみたプログラムです。(また、どうしてもMSBに0が羅列してしまって…変換した数値のみを表示させたいのですが…。つまり、000000000000000000010110とかではなく10110と。)

#include <stdio.h>
const int BitSize = sizeof(int) * 8; // 整数型のビットサイズを算出
void dtob(int x) {
int bit = 1,
i;
char c[BitSize];

for (i = 0; i < BitSize; i++) {
if (x & bit)
c[i] = '1';
else
c[i] = '0';
bit <<= 1;
} // 計算結果の表示
printf("2進数: ");
for ( i = BitSize - 1; i >= 0; i-- ) {
putchar(c[i]);
}
printf("\n");
}

int main(){
int x = 0;
do {
printf("10進数を2進数に変換します(0で終了)\n");
printf("xの値: ");
scanf("%d", &x);
dtob(x);
} while (x != 0);
return 0;}

615 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:36:38 ]
あ、すみません、

>613 = >614

です。

616 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:44:06 ]
for(i=BitSize-1; c[i]=='0'; i--); //最初に1が出るまでスルー
for( ; i>=0; i--) putchar(c[i]);  //後は普通に表示

617 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:55:50 ]
>616

レスありがとうございます!
なるほど〜ちょっと改良してみます。

あとは小数点が問題ですね。。。
やっぱりとりあえず、整数部分と小数点以下をわけてスキャンしなきゃだめですよね

618 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:01:46 ]
>>604
ん?>>603間違えてる?



619 名前:デフォルトの名無しさん [2008/06/25(水) 00:05:49 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し、登録人数分だけの動的メモリ確保をせよ。そして、データをファイルから入力せよ。
ファイルの形式は、先頭に登録する人数とし、そのあとに人数分のデータを登録番号、名前、年齢の順に書いていく(下の例を参照。登録番号は入力順に1,2,3,4,5,・・・とする。そして、入力した全員データを表示せよ。)

(ファイルの例)
3
1 田中 20
2 太田 40
3 井上 35

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語:C
[4] 期限: できるだけ早くお願いします。
[5]問題文でわかりにくいところがありましたら、聞いてください。

620 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:14:27 ]
>>614
んー?その課題ってそういう解き方を期待してるのかな。
それでもいいんだけど、初歩的な段階ということを考慮すると
整数部なら2で割ったあまりをせっせと詰めていくように思えた。
小数部は2倍したものの整数部を詰める、みたいな。

その段階でビット演算でできるという発想をしたなら優秀な
生徒さん(もしくは経験者)なんだなあって思う。
// 皮肉じゃないです。念のため

621 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:20:03 ]
何を習ったのかお前知ってるのかよw

622 名前:デフォルトの名無しさん [2008/06/25(水) 00:25:57 ]
[1] 授業単元:基礎プログラミング
[2] 問題文
キーボードから2つの自然数を入力し、入力した値が10以下で2の倍数なら足し算
それ以外はかけ算させた結果を表示させるプログラムを作成せよ。
但し、if文を用いて自然数以外を入力したらエラー文を表示させる。
[3] 環境
 [3.1] OS: Windows/linux
 [3.2] コンパイラ名とバージョン:VC++ 6.0/gcc
 [3.3] 言語: C
[4] 期限:6/27
[5] その他の制限:入力はscanf、出力はprintf stdio.h
よろしくお願いしますorz


623 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:26:37 ]
>>621
あーもーそういう煽りが欲しいわけじゃなくてな。
関数、ポインタ習いました。とか原始的なアルゴリズムで、とか前置きしなきゃならない段階でしょ?
その段階でビット演算を直感的に理解できる子は少ないでしょ。
わかんないかなー。

学生の頃周りがどうだったか、自分がどうだったか思い出しなよ。
学校では習ってません独学です、ならビット演算をスムーズに理解できたのはいつのことだった?

624 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:29:33 ]
>基本的に習ったことの利用がメイン
って書いてあるのに、ビット演算を習ってないと思うほうがおかしいだろ。

625 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:37:27 ]
ってか>>613にアドバイスしたらどうなん?

>>622
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7047.txt

626 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:38:02 ]
>623 >624 さん方

お二人ともすみません(汗)

自分の書き方がまぎらわしかったです・・・
ビット演算は習っていません。

柴田先生の本を読みまして、
内部表現とビット などの説明あたりを読んでいるときに
先生が以前ビット演算でやればサマートなんだけどな・・・ブツブツと
ボソっといってたのを思い出して、
それから少し自分で勉強してみました。

ですが、挫折しかけてこのサイトに、、です。(汗)

というか途中で疑問に思ったのですが、なんでC言語には2進数で表示する機能がないのでしょうか・・・?



627 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:40:40 ]
>>623
相手するだけ無駄
>>624
宿題解いてもらえなくて涙目なんですよね、わかります。
催促していいよw

628 名前:613 mailto:sage [2008/06/25(水) 00:41:18 ]
あ、ちなみに
原始的なアルゴリズム とはありますが、
たぶんビット演算くらいはOKかと思います。

先生は期待してはいないと思いますが…。

その、手計算でやるときのアルゴリズムと
まったくそのままのほうが、わかりやすいのだとは思うのですが、
違う方向性でやりはじめてしまったので…。

最終的にダメそうなら、ホントに原始的な方向でいくつもりですが。



629 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:51:30 ]
[1] 授業単元:プログラミング実験
[2] 問題文(含コード&リンク):
2題あります。
片方でも構いません。
上については、ソースに記載されてるpartitionって関数を使って、再帰でクイックソートです。
下については、ソースに記載されているmergeって関数を使って、再帰でマージソートです。
それぞれ、作成する部分にコメントがあるので、大体それと同じ行数でできるらしいです。
でも長くなっても構いません。
ifとforかwhileでできるみたいなことも言ってました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7048.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7049.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: CPad for Borland C++Compiler Version 2.31
 [3.3] 言語:C
[4] 期限: 2008年6月25日17:00まで できるだけ早く完成させたいです。提出は明日の夕方です。
[5] その他の制限: ポインタは使わない感じで授業やってます。再帰必須です。あとは上に書いた通りです。

よろしくお願いします。

630 名前:608 ◆k4INPBPZ3E [2008/06/25(水) 01:03:52 ]
ヘルプ!ヘールプ!!!

631 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:06:35 ]
>>629
void quicksort(int left, int right)
{
int i=0;

if(left >= right) return;

i = partition(left, right);

quicksort(left, i-1);
quicksort(i+1, right);
}

void mergesort(int l, int r)
{
int m;

if(l>=r) return;

m = (l + r) / 2;

mergesort(l, m);
mergesort(m+1, r);

merge(l, m, r);
}

632 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:11:17 ]
>>628
>>316


633 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:20:45 ]
>>631
あなたが神か
ありがとうございます!
超絶感謝!!!

634 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:20:49 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
(1)1つの整数を2進数に変換表示する関数convert(a)を作成せよ。そして、キーボードより任意の正の整数を入力し、
その整数の2進数が表示されるプログラムを作れ。

(2)1つの正の整数を素因数分解し表示する関数bunkai(a)を作成せよ。そして、キーボードから任意の正の整数を入力し、
その整数の素因数分解を表示するプログラムを作れ。
------表示例------
整数を入力: 50
50=2x25
25=5x5
5=5
5*5*2

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:関数についての演習です。実は(1)に関しては十分な実行結果は得られました。
蛇足があれば指摘していただきたいです。

635 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:21:56 ]
(1)の作成したプログラムです。(2)の参考になればよいのですが。
#include <stdio.h>
void convert(int n)
{
if(n>1)
convert(n/2);
if(n==1)
printf("1");
else
printf("%d",n%2);
}

void main()
{
int n;
printf("10進数を入力してください:");
scanf("%d",&n);
printf("2進数に変換すると\n");
convert(n);
}

636 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:45:23 ]
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
アスキーコードにより文字操作を行い、暗号化された文字列を解読するプログラム
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7050.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cyagwin gcc
 [3.3] 言語: C
[4] 期限: 6/26 午後3時まで

暗号文(アスキーコードをずらしただけ)を解読するプログラムを作成する課題です。
よく見る課題ですが、プログラム仕様が特殊で過去ログに該当するものがなかったので
どなたかお願いします。

637 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:54:37 ]
>>628
手作業で小数を2進数に変換することができることに加え、浮動小数点のビット列が
どのように構成されてるかを理解する必要があるよ
それでもビット演算しますか?(y/n)

638 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:12:06 ]
前回教えてくださったありがとうございます!!

以下のようなプログラミングはどのようにすればよいのでしょうか?

「組み合わせ」を求める数学の公式にコンビネーションがあります。このコンビネーションのプログラミングを教えてください!

nとrをscanf()で読み、nCrの値を計算して表示させます。
条件として、nとrの値はマイナスでなく、またゼロでなく、さらにここではn<=10であることを確認させて、正しい数値を入力させる。もし誤った数値を入力したら「入力ミスです」と表示させる。

0!=1も扱えるようにすることを忘れない。

これもよろしくお願いします



639 名前:613 mailto:sage [2008/06/25(水) 02:12:31 ]
>637
はい…そこなんですよ…。
それが頭いっぱいになって、ここにたどり着きました。。。

1年間アセンブリ言語をやっていたことがあって、
そのとき浮動小数点に苦労しました。。。

でも原始的なアルゴリズムよりもスマートに、短くできるんだったら
大変興味があります。なのでとりあえずやりたいと考えます。

640 名前:613 mailto:sage [2008/06/25(水) 02:23:50 ]
ちなみに
丸め誤差については特にいわれてないのですが、
4ビット程度表示できればいいかなぁと考えています。

641 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:24:42 ]
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7053.txt
[3] 環境
 [3.1] OS: WindowsXP SP2
 [3.2] コンパイラ名とバージョン: visual Studio NEt2003
 [3.3] 言語: C/C++/どちらでも可
[4] 期限:今週土曜まで
[5] その他の制限: 大域変数(グローバル変数)を使う。
今あるプログラムを改善した形で書き換えてくれるとありがたい。
(プログラムの授業ではなく数値解析なので変な形にはなっていると思うが
なるべくこのような形にしてもらいたい。)自分が理解しやすいのもあるが


642 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:32:20 ]
前スレの人?

643 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:36:55 ]
>>641
yを求めた時のiの値とxn[i],xn[i+1]とxの関係を考えてみろ。
っていうか前スレのヤツならなんできちんと写さない?

644 名前:613 mailto:sage [2008/06/25(水) 02:37:40 ]
>642

え、自分でしょうか??

自分はこのスレ、はじめてです。(検索で見つけました)

645 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:38:14 ]
いや641のこと。

646 名前:613 mailto:sage [2008/06/25(水) 02:38:42 ]
あ、すみません m()m

647 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:41:48 ]
東京高価万歳
凄いぞ東京高価

648 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 03:28:21 ]
>>611
(・∀・)ニヤニヤ



649 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 03:32:55 ]
ニヤニヤするぐらいならどこがおかしいか指摘ぐらいしたら?

650 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 03:38:15 ]
おかしくなんかないよ、ただ、おそらく等差数列の差を使うとか
一番最後は工夫すりゃif else 不要

651 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 03:41:48 ]
ループの中にムダな分岐つっこんで効率と可読性下げるより、あのままで十分だと思うけど。

652 名前:デフォルトの名無しさん [2008/06/25(水) 04:12:17 ]
>>619 お願いします。

653 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 05:17:34 ]
>>650
これでいいですか><?
for(i=1;i<=20;i++)
    printf("%*s%d\n",i<=10?i:20-i,"",i);

654 名前:590 mailto:sage [2008/06/25(水) 06:42:59 ]
>>600
えっと・・・完全2分木っていうのは葉以外の全てのノードが枝を2つ持っている事が必要十分条件ではないのですか?
それならば一部のパスだけが長いという場合も考えられますよね。
それとも左右対称の三角形みたいな形の木になることを意味しているんでしょうか。

655 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 06:49:09 ]
完全二分木は、「すべての葉の深さが等しい二分木」という定義が普通だと思う

656 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 06:51:23 ]
AVL木とか赤黒木なら回転を伴うが常にバランスした二分木が作れる
何も考えずに昇順に挿入したりするとリスト構造の高価なシミュレーションになる

657 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 06:54:56 ]
あ、質問の意図を誤解してたかも
NlogNじゃねーの?

658 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:01:24 ]
>親ノードから左右の
>子ノードの中身を比較することで、完全2分木中の任意のノードの探索が行えるとする
この意味が分からん
「左右の子ノードの中身を比較」ってどういうことだろう

普通の二分探索木なら簡単に解ける
完全二分木の高さをhとすると、N=2^h-1だから、h=log2(N+1)
比較回数の最大値は高さと同じだから、log2(N+1)回



659 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 08:39:21 ]
>>619
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7055.txt

660 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 08:45:17 ]
>fscanf(fp, "%s", p->name);

661 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 08:55:49 ]
#include<stdlib.h>いれろよ

662 名前:デフォルトの名無しさん [2008/06/25(水) 10:38:17 ]
[1] 授業単元: プロC演習
[2] 問題文(含コード&リンク):()
# 下記のようにキーボードから4桁の10進数の入力を2回受付ける.
Input the 1st value > 6479
Input the 2nd value > 1497

但し,4桁の各位の数は必ず互いに異なるものが入力されるとする.
# 入力された数値に対して,次のようにに定義する「ヒット数」と「ホームラン数」を求める.

* ホームラン数: 二つの数字を同じ位ごとに比較した場合,何ヶ所の位について一致してるかを表す.
* ヒット数: 二つの数字を異なる位同士で比較した場合,一致している組み合わせの数を表す.


1234と1234のとき,0ヒット4ホームラン
1234と4321のとき,4ヒット0ホームラン
6479と1497のとき,2ヒット1ホームラン


# ヒット数とホームラン数を下記のように表示する.
2 hit(s) 1 home run(s)
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] コンパイラ名とバージョン:Cygwin gcc
 [3.3] 言語: C
[4] 期限: 6月26日正午
[5] 現時点で習ってるのは、条件分岐、繰り返し、配列、ソート、ポインタまでです。

よろしくお願いします。

663 名前:デフォルトの名無しさん [2008/06/25(水) 10:54:32 ]
memcpy(n1,n1,sizeof(int)*2*3);
memcpy(n1+(2*3),n2,sizeof(int)*2*3);
これって何やってるの?
調べたんだけどよくわからないです…

664 名前:デフォルトの名無しさん [2008/06/25(水) 11:12:06 ]
だれか610を助けて…

665 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:53:36 ]
>>663
どうすれば調べきれないのかよくわからないです…
www.google.co.jp/search?complete=1&hl=ja&q=manpage+memcpy&lr=

666 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:30:32 ]
>>610
#include <stdio.h>
#include <string.h>
/*1)*/ int getUpper(){ int r=getchar(); return 'a'<=r && r<='z' ? (r-'a'+'A') : r; }
/*2)*/ void showReverse(char *s){ int i; for(i=strlen(s)-1; i>=0; putchar(s[i--])); putchar('\n'); }
/*3)*/ void letReverse(char *P, char *R){ int i,k; for(k=0, i=strlen(P)-1; i>=0; R[k++]=P[i--]); R[k]='\0';}
/*4)*/ int isCircular(char *s){ char *r=(char*)malloc(sizeof(char)*(strlen(s)+1)); int ret; letReverse(s,r); ret=strcmp(s,r)==0; free(r); return ret; }
/*5)*/
static int isCircular2s(char *s1, char *s2){ if(s1>=s2) return 1; else{if(*s1==*s2) return isCircular2s(s1+1, s2-1); else return 0; } }
int isCircular2(char *s){ return isCircular2s(s,s+strlen(s)-1); }

// なんか色々関数を利用するプログラム
void checkCircular(char *s){ printf("%s is %scircular string.\n", s, isCircular(s) ? " " : "not ");
int main(void){
  char rev[10];
  printf("Hit keyboard: ");fflush(stdout);
  printf("getUpper() is .. %c\n", getUpper());
    
  showReverse("abcde");
  letReverse("a1b2c3", rev);
  printf("reverse a1b2c3 = %s\n", rev);
  checkCircular("abcba"); checkCircular("12321");
  printf("12321 is %scircular string.\n", isCircular2("123321") ? " " : "not ");
}


667 名前:デフォルトの名無しさん [2008/06/25(水) 12:56:24 ]
>>666
神様ありがとう!
でも分けかからんww 勉強せねば…

668 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:11:11 ]
>>662
#include <stdio.h>

int main(void)
{
char value[2][5];
int i, j, hit = 0, homerun = 0;

printf("Input the 1st value > ");
scanf("%s", value[0]);
printf("Input the 2nd value > ");
scanf("%s", value[1]);

for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
if(value[0][i] == value[1][j]) {
if(i == j) homerun++;
else hit++;
}
}
}

printf("%d hit(s) %d home run(s)\n", hit, homerun);

return 0;
}




669 名前:デフォルトの名無しさん [2008/06/25(水) 14:53:44 ]
[1] 授業単元:計算機システム
[2] 問題文(含コード&リンク):擬似シェル(UNIX上で動く)を作る
必要な機能
・リダイレクト(>>、>、<)
・パイプ(|)
・パイプは複数つなげるように
・できればcdやaliaseも。

[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc 3.4.6
 [3.3] 言語: C
[4] 期限:明日の午前中
[5] その他の制限:
リダイレクトとパイプの実装ができません。
お願いします。

670 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:05:01 ]
【質問テンプレ】
[1] 授業単元:コンピュータアーキテクチャー
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7057.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: 六月二十九日
[5] その他の制限: 特にありません

よろしくお願いします

671 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:11:16 ]
> 1.gettimeofday関数を用いて、サイズ5000の配列を用い、 それを100000回程度繰り返して、 倍精度浮動小数乗算の演算性能を測定し、それをMFLOPSで求めよ。 
> また、使用したプログラムも提出せよ。 
におんごでおk

672 名前:670 mailto:sage [2008/06/25(水) 15:25:06 ]
>>671
すみません
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7058.txt
↑のようにサイズ5000の配列を用いて、それを100000回程度繰り返して、 倍精度浮動小数乗算の演算性能を測定し、それをMFLOPSで求めることです。


673 名前: ◆DuoCt8/SKk [2008/06/25(水) 15:41:19 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7059.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 6.0
 [3.3] 言語:C言語
[4] 期限:2008/06/28
[5] その他の制限:ポインタ,構造体は習っています.
全く分からないので,よろしくお願いします!

674 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:53:14 ]
>>625
if (a <= 10 && a % 2 == 0 && b <= 10 && b % 2 == 0)
(・∀・)ニヤニヤ

675 名前:634 mailto:sage [2008/06/25(水) 17:55:45 ]
一応途中まで作ってみました。
問題は最後の一行(素因数展開の表示:ex.「5*5*2」)なんですけど・・・
配列作って素数を入れてかないと駄目ですかね?

#include <stdio.h>
void bunkai(int n,int i)
{
if(i==n){
printf("%d=%d\n",n,n);
}
else if(n%i==0){
printf("%d=%dx%d\n",n,i,n/i);
bunkai(n/i,i);
}
else
bunkai(n,i+1);
}

void main()
{
int n,i=2;
printf("整数:");
scanf("%d",&n);
bunkai(n,i);
}

676 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:58:21 ]
うpロダー使えYO!

677 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:01:48 ]
>>676
すいませんでした。。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7060.c

678 名前:634 mailto:sage [2008/06/25(水) 18:07:06 ]
すいません、自己解決しました。



679 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:09:12 ]
[1] 授業単元:C 文字の処理
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7061.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Cygnus
 [3.3] 言語: C
[4] 期限: 明日の17:00まで
[5] その他の制限: 2問同時で申し訳ありませんが、なるべくシンプルなものをお願いします。

680 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:09:13 ]
いや、もうおせーYO!w

681 名前:637 mailto:sage [2008/06/25(水) 18:22:06 ]
>>613
>>639
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7062.txt
きれいではなくて申し訳ないんだけど、double型の構造を元に2進変換したつもりです。
負の場合どうするのか分からなかったので、とりあえず符号だけつけてます。

Windowsならリトルエンディアンきめうちで処理をしてもいいのかもしれないけれど、一応。

682 名前:637 mailto:sage [2008/06/25(水) 18:25:58 ]
補足で、doubleが8byteであることを期待したコードになってる箇所がいくつかあります。
sizeof(double)やってたりやってなかったりで汚いんですが、
そもそも8byte以外だった場合にビット構造がどうなるのか知らないので8byteな環境
以外でどうなるかわかりませんです。
誰か教えてくれるとありがたいです。

683 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:27:22 ]
637をテンプレに沿って清書すると

[1]回答レベル:検証済み?
[2] コード:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7062.txt

[3]環境 Linux?/Gcc/C

[4]コメント
きれいではなくて申し訳ないんだけど、double型の構造を元に2進変換したつもりです。
負の場合どうするのか分からなかったので、とりあえず符号だけつけてます。
Windowsならリトルエンディアンきめうちで処理をしてもいいのかもしれないけれど、一応。

684 名前:637 mailto:sage [2008/06/25(水) 18:38:29 ]
>>683
そうか、テンプレがw

>>613
[1]回答レベル:ある程度検証済み
[2] コード:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7062.txt
[3]環境 Windows/VC7/C およびLinux/gcc4.1.2
[4]コメント
きれいではなくて申し訳ないんだけど、double型の構造を元に2進変換したつもりです。
負の場合どうするのか分からなかったので、とりあえず符号だけつけてます。
Windowsならリトルエンディアンきめうちで処理をしてもいいのかもしれないけれど、一応。
正の整数についてはWindowsの電卓を使って検証しました。
小数についてもある程度検証してそれらしい結果を確認しています。
負数については、ごめんなさい><

685 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:48:08 ]
累計
   50 49 48 47 46
  45 44 43 42 41
   35 34 33 32 31
   30 29 28 27 26
  25 24 23 22 21
   20 19 18 17 16
  15 14 13 12 11
  10 9 8 7 6
  5 4 3 2 1
累計

を一次元配列のみを使ってどうやって書けますか?

686 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:49:07 ]
>>685
ずれてすみません
縦累計と横累計ということです><

687 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:57:14 ]
>>685
これと同じかな
pc11.2ch.net/test/read.cgi/tech/1212895856/850

pc11.2ch.net/test/read.cgi/tech/1212895856/920
このレスをしたの俺なんだが、ネタレスのつもりだったのに
感謝されて非常に困惑した記憶がある

688 名前:デフォルトの名無しさん [2008/06/25(水) 18:59:59 ]
x68000.q-e-d.net/~68user/net/c-ftp-1.html
をみてCでftpクライアントのプログラムを作成しましたが
サンプルソースの224行目が実行されて
「150 Opening ASCII mode data connection」がサーバから返却された後
226行目が実行されて
「226 Transfer complete」がサーバから返却されるまで180秒かかってしまいます。
何故でしょうか?

サーバはredhatlinux上でProFTPD 1.3.1が動いています。
クライアントは上記サーバと兼ねています。下記のようなログがでます。

<-- 220 ProFTPD 1.3.1 Server (ProFTPD Default Installation) [127.0.0.1]
--> USER ユーザ名
<-- 331 Password required for ユーザ名
--> PASS パスワード
<-- 230 User ユーザ名 logged in
--> PORT 127,0,0,1,229,242
<-- 200 PORT command successful
--> RETR ファイル名のフルパス
ファイルの中身
<-- 150 Opening ASCII mode data connection for ファイル名のフルパス (13 bytes)
<-- 226 Transfer complete(これが出るのは1つ上の行が出力されてから180秒後)
--> QUIT
<-- 221 Goodbye.



689 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:05:26 ]
>>688
なぜここに?
とりあえずサーバのログおよびパケットキャプチャをしてみて原因探るしか。

690 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:07:50 ]
>>687
あ、同じですね><
明日提出なんですがさっぱりなんです

691 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:14:21 ]
>>690
>>685
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7063.c

692 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:24:00 ]
>>691
ありがとうございます

まだ入門編なので、複雑でよく分かりません><
これ以上簡単に表現できないのですか?

693 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:30:17 ]
>>692
理解しようとする気があるならちゃんと授業中に理解しようね
教員には「沢山勉強してわかるようになりました」って言っておけばなんとかなる

694 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:33:53 ]
>>693
すみません
自力でやってみます
ありがとうございました><

695 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:38:57 ]
#define が見慣れないだけか?ROWを10にCOLを5に書き換えれば良いが
もちろんそれが分かっていれば、そんなことせんでROW と COL で定義し
後はそれらを変更することでそれに応じて結果を出すソースのままにしときゃええがな

696 名前:デフォルトの名無しさん [2008/06/25(水) 20:41:00 ]
[1] 授業単元:プログラミングT

[2] 問題: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7064.txt
 [3.1] OS: WindowsXp
 [3.2] コンパイラ名とバージョン:visualstdio 2008
 [3.3] 言語:C
[4] 期限:6月29日
[5] その他の制限:なし。

   よろしくお願いします.

697 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:45:22 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7065.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:無期限



698 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:48:41 ]
>>695
#defineは分かります!
tr,tcというのはトータルという事ですね。事故解決しました!
ありがとうございました



699 名前:デフォルトの名無しさん [2008/06/25(水) 20:52:03 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
構造体person型を自己参照的構造体(下の例を参照)にし、配列に入力していたデータを単方向連結リスト構造に入力せよ。
ファイルからデータを入力したリストの先頭を引数として、入力した年齢と一致する人物をリスト内から検索し、該当人物がいれば表示するプログラムを作れ。
自己参照的構造体とは、構造体のメンバの中に自分と同じ型の構造体のポインタ変数を持つ構造体のことである。
単方向連結リスト構造とは、自己参照的構造体で次の要素をポインタを使って一定の方向に辿るデータ構造である。

(読む込むファイルの例)
入力するリストの先頭
1 20 田中
2 40 大田
3 35 井上
7 60 斉藤
4 23 佐藤

(自己参照的構造体)
struct person{
int no,age;
char name[40];
struct person *next;
}

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語:C
[4] 期限: できるだけ早くお願いします。


700 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:36:28 ]
>>699
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7066.c

701 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:37:40 ]
>>699
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7067.c

702 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:42:07 ]
>>699
[1]コード品質:模範解答(丸写ししても、独力で同じ品質のコード
書いても提出すると心証悪くします。)

[2]コード
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7067.c

[3]普通の C処理系でコンパイルできます。

[4]品質を落としたコードを提出して下さいね。(難しいですけど)

703 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:45:49 ]
>>699
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7068.c

704 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:47:56 ]
>>700-703
なんでロダあらしてんの?ここのログも。
もうちょっと落ち着こw

705 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:52:02 ]
>>704
>[4] 期限: できるだけ早くお願いします。
じゃね?w

706 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:55:54 ]
>>704
意味が分からんけど >>702 は無関係


707 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:59:38 ]
>>704
ちょこちょこみてるけど>>700-703が同じソースだったので。
消しては次消しては次、と。なんじゃろ?
>>702は無関係なのですか。

708 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 22:06:50 ]
どなたか>>572お願いします




709 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 22:10:02 ]
[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク)

2^nの計算
n=0〜30に対して、2~nを計算して出力する。結果の最大桁数は10進数10桁であるので、
long int型の変数をしようすること。
なお、再帰法を用いてもよい


実行例
2** 0=1
2** 1=2
2** 2=4

 ・
 ・
2**30=1073741824

[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン: (visual studio 2005 )
 [3.3] 言語: (C言語)
[4] 期限:明日まで
[5] その他の制限: (シンプルなプログラムでお願いします)

710 名前:613 mailto:sage [2008/06/25(水) 22:15:54 ]
>>637
(>>684)

ありがとーございますっ!
自分もcygwin(windows)でコンパイルして、
それなりに検証しましたが、十分機能しているようです!

あとは自分で一文ずつ動きを見て、内部表現を書き出し、
改良していこうかと思います。

えっと、doubleは64bitの8byteであっていたかと思います。

なんにせよ、ありがとうございました!!






[ 続きを読む ] / [ 携帯版 ]

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

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