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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/09/21(木) 22:21:52
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 73代目
http://pc8.2ch.net/test/read.cgi/tech/1155355501/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0002デフォルトの名無しさん2006/09/21(木) 22:37:47
>>1
乙!

あげていこうぜイエイイエイ
0003デフォルトの名無しさん2006/09/21(木) 22:40:13
>>1
乙カレー
0004デフォルトの名無しさん2006/09/22(金) 00:22:28
乙ぬるぽ!
0005 ◆jG/Re6aTC. 2006/09/22(金) 08:17:25
[1] 授業単元:ネットワーク
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2679.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: ベターCとしてC++
[4] 期限: 2006年09月25日12:00まで
[5] その他の制限: Winsock2を使用します。
ライブラリは、Cの標準ライブラリとSTLは使って大丈夫です。
基本的にコンソールアプリになります。

コーディングに関してはほとんど教えられておらず、Winsock FAQやMSDNを参考にして組め、と言われています。
言語はC++ですが、別にstdio.hを使っても大丈夫です。cstdioでもいいです。
あと、Winsock2ってことですが、無理にWinsock2の新機能を使わなくても、Winsock1の機能の方が使いやすければそれでも大丈夫です。
どうか、よろしくお願いいたします!

(前スレに間違えて投稿してしまったので、移動してきました。すみません。)
0006デフォルトの名無しさん2006/09/22(金) 13:43:48
質問ですが、C++を使ってACCESSからデータを取り出す方法があるのでしょうか?
0007デフォルトの名無しさん2006/09/22(金) 13:52:04
>>6
テンプレ書いてくれ。
0008デフォルトの名無しさん2006/09/22(金) 14:03:43
>>7
すいません、自己解決しました。
0009(^-^) ◆MONSOON/qo 2006/09/22(金) 14:37:34
>>5
長い
無理
0010素人です2006/09/22(金) 14:53:50
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2682.txt
[3] 環境
 [3.1] OS:Linux (FodoraCore2)
 [3.2] コンパイラ名とバージョン: gcc バージョン不明
 [3.3] 言語: Cのみ
[4] 期限: 2006年09月29日午前中
[5] その他の制限: 入力、表示は自作関数使用すること。

エラー理由が分からなくって困ってます。よろしくお願い致します。
0011デフォルトの名無しさん2006/09/22(金) 15:07:18
念のために聞いておこう。
どんなエラーが出るんだ?
0012(^-^) ◆MONSOON/qo 2006/09/22(金) 15:12:03
>>10
関数MyGetAddressとMyOutputがない
0013デフォルトの名無しさん2006/09/22(金) 15:16:49
MyGetAddressをMyCountに置換すればコンパイルエラーは起こらなくなるけどさ
このプログラム、多分それだけじゃ正常な動作はしない。
0014デフォルトの名無しさん2006/09/22(金) 21:21:23
ひまなんで誰か問題ください
0015デフォルトの名無しさん2006/09/22(金) 21:36:38
>>5
テーブルってなんですか?DBでも連携させるのかな?
0016デフォルトの名無しさん2006/09/22(金) 21:50:41
>>5
それと仮IPと実IPの定義がわからない。
>「ホスト」から仮 MAC アドレスと仮 IP アドレスが送られてきたら
これはどういう意味でしょうか
0017デフォルトの名無しさん2006/09/22(金) 22:51:16
>>5
あと
>(注意)練習のため、サーバーはデフォルトポート(システムに指定させる)を使用して
ください。
これの意図するところがわかりません。
問題を作った人はSOCKETの知識はあるんですか?
0018デフォルトの名無しさん2006/09/22(金) 23:20:39
>>5
ゴメンよく読んだらほとんど書いてますね。
途中まで気づかずにコーディングしてて途中で気づいてやる気がなくなったので
とりあえず途中までうpします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2683.txt
0019デフォルトの名無しさん2006/09/22(金) 23:29:55
>>17
空いてるポート使うってだけでしょ
勝手にOSが割り当ててくれる
0020デフォルトの名無しさん2006/09/22(金) 23:41:51
>>19 ?えっ。。。。
0021デフォルトの名無しさん2006/09/23(土) 00:17:28
C言語で、自然数nを読み込んで、1/nを少数で割り切れたところまで表示するプログラムを教えてください。
0022デフォルトの名無しさん2006/09/23(土) 00:27:30
>>21
まぁまず>>1を読んで書き直せ
0023(^-^) ◆MONSOON/qo 2006/09/23(土) 01:00:33
>>21

#include <stdio.h>
#define keta 30
main(){
int i,s,n,m;
for(n=2;n<15;n++){
s=1;
printf("1/%d = 0.",n);
for(i=0;i<keta;){
while(1){
s*=10;
if(n<=s)break;
printf("0");i++;}
m=s/n;
printf("%d",m);
s-=m*n;i++;
if(s==0)break;}
printf("\n");}}
00245 ◆jG/Re6aTC. 2006/09/23(土) 03:41:45
>>9
すいません。確かに長いですね。

>>15
テーブルといってもDBではありません。
vectorやmapを使ってメモリ内に「概念的な」テーブルを作ります。
とにかくIP→MACの変換ができれば何でもいいと思います。

>>16
仮とか実っていうのは、自分もよくわかりません。
たぶん、仮というのは、そういうIPアドレスが存在するフリをする、って感じのことだと思います。
00255 ◆jG/Re6aTC. 2006/09/23(土) 03:42:49
>>17
デフォルトポートの意図に関しては、自分もよくわかりません。
0を指定したら自動的に割り当ててくれるっていうのを、知らしめたい(?)んでしょうか。

>>18
取り組んでくれたんですね!!
ありがとうございます。

正直言うと、ネットワークは自分の専門でもないので、こんな長々したプログラムやってる時間がなくなってしまったのです。
もし、ちょっと時間を割いていただける方や、ネットワークの得意な方などいらっしゃいましたら、超猛烈に大感謝です!!
0026デフォルトの名無しさん2006/09/23(土) 10:46:38
[1] 授業単元: アルゴリズム論
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2684.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:9月27日
[5] その他の制限:特になし

よろしくお願いします
0027デフォルトの名無しさん2006/09/23(土) 12:07:02
>>26
なんか問題文の日本語おかしいから、ちゃんと意味取れてるかわからんが、やるだけやった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2685.txt

コードはここを参考にした。
http://www2.starcat.ne.jp/~fussy/algo/algo7-3.htm
0028デフォルトの名無しさん2006/09/23(土) 15:57:46
>>27
ありがとうございます、動きました
でもよくわからないところがあるんですがこの「free(table)」って命令は何をやってるんですか?
0029デフォルトの名無しさん2006/09/23(土) 16:03:02
さすがは丸投げクオリティw
0030デフォルトの名無しさん2006/09/23(土) 16:47:27
後期なのに、「命令」とか言ったり標準関数のfree()を知らなかったり・・・
いますぐ大学辞めた方がいいぞ。
0031デフォルトの名無しさん2006/09/23(土) 17:52:04
どう見ても>>28は釣りだろう
0032デフォルトの名無しさん2006/09/23(土) 18:27:03
>>28
tableをfreedomしてます
動物愛護の精神です
0033デフォルトの名無しさん2006/09/23(土) 19:22:23
>>28
malloc で、確保したメモリを開放してる。

最近の OS はプログラム終了時メモリを強制的に開放するから、短いプログラムしか
書かない授業段階じゃ、一々 free() をさせてないんだろ。このスレじゃ珍しく
貰った答え読んで動作理解しようと努力してる奴をあんまり叩くなや><
0034デフォルトの名無しさん2006/09/23(土) 19:28:57
ゆとり教育
0035デフォルトの名無しさん2006/09/23(土) 19:39:18
なんでもかんでもゆとり教育のせいにするのはよくないと思います
0036デフォルトの名無しさん2006/09/23(土) 21:16:11
牛肉食って脳が腐り始めた人間が増え始めただけだろ
0037デフォルトの名無しさん2006/09/23(土) 21:18:20
ここで宿題教えてくれといったK、N、Y、I、I
お前ら単位やらないから俺の講義でなくていいぞ
0038デフォルトの名無しさん2006/09/23(土) 21:23:28
http://pc8.2ch.net/test/read.cgi/tech/1152253441/805

先生!落ち着いてください!
0039デフォルトの名無しさん2006/09/23(土) 23:15:13
>>38
ワロタ
0040デフォルトの名無しさん2006/09/23(土) 23:37:31
K,N,Y,I,Iってただ打ちやすい位置にキーがあっただけだろ。
0041デフォルトの名無しさん2006/09/24(日) 00:09:49
打ちにくい位置のキーってどんなのだろう・・・
Qとかかな?
0042デフォルトの名無しさん2006/09/24(日) 00:16:56
>>41
個人的にはZXCが苦手

リファクタリングとかやってると関数名や変数名にzxcの使用頻度が低い事に良く気が付く
0043デフォルトの名無しさん2006/09/24(日) 00:44:34
打ちやすいように腕と掌の位置をシフトさせるからそういうのはあんまり無いなぁ。
0044デフォルトの名無しさん2006/09/24(日) 13:04:08
_ |とかは?

そうでもないか。。
0045デフォルトの名無しさん2006/09/24(日) 13:23:01
俺は6かな左手で打つか右手で打つか迷う
0046デフォルトの名無しさん2006/09/24(日) 15:00:18
>>45
"6"は右手で打ちたいんだけど、MSナチュラルキーボード使ってるから強制的に左に…
0047デフォルトの名無しさん2006/09/24(日) 16:27:08
!をうつのが苦手
みんなどうやってうってるの?
左手小指でシフト、薬指で1を押してるんだけど…
0048デフォルトの名無しさん2006/09/24(日) 16:29:08
親指 - シフト
人差し指 - 1
0049デフォルトの名無しさん2006/09/24(日) 16:37:29
>>47
何故にそんな特殊な打ち方を・・・
0050デフォルトの名無しさん2006/09/24(日) 16:44:56
>>47
左小指でSHIFTを、左薬指を軽くTabに当てて姿勢制御、左中指で突き立てるように1を突く。
0051デフォルトの名無しさん2006/09/24(日) 16:51:20
>>49
例えば、
if(!
ってうつ場合、
(をうつときは左手の小指でシフト、右手中指で8を押して、
次に!をうつとき、左手の小指のシフトは押しっぱなしになるから、
薬指で1を押すことになっちまうんだよ><
どこかおかしいよね
0052デフォルトの名無しさん2006/09/24(日) 16:55:28
>>50
なれるまでは薬指でタブっちゃいそうだけど、
そっちのがよさげだね。
参考にさせてもらうよ
0053デフォルトの名無しさん2006/09/24(日) 18:05:03
右小指でShift、左薬指で1押す俺はきっと異端
0054デフォルトの名無しさん2006/09/24(日) 18:16:54
よお俺w
0055デフォルトの名無しさん2006/09/24(日) 18:25:05
本来はそれが正しいというかまともっぽいんだけどねえ
自分は右シフトの存在に気付く前に一通りタイピングを覚えちゃった
0056デフォルトの名無しさん2006/09/24(日) 18:58:21
左小指でSHIFT+左中指で1は俺だけじゃないはずだ
0057デフォルトの名無しさん2006/09/25(月) 00:01:06
それ上にあったような。。+俺もw
0058デフォルトの名無しさん2006/09/25(月) 00:31:56
C言語の宿題です。
インタフェースはvoid wait( int time )で、
引数 time で渡された遅延時間(msec単位)だけ待って
処理を上に返す仕様です。
処理待ちの関数を作る課題でどうやって処理待ちをするか困ってます。
CPU速度に依存しない(ポーリングは使わない)やり方があったら教えてください。

WindowsのBCC32コンパイラを使っています。
0059582006/09/25(月) 00:35:53
火曜日までなのでまた今晩来ます。
今日はもう寝ます、ごめんなさい
0060デフォルトの名無しさん2006/09/25(月) 00:38:42
Sleep()を実装しろということかな?
0061デフォルトの名無しさん2006/09/25(月) 06:00:33
>>58 これじゃダメ?
void wait(clock_t wait)
{
clock_t total = wait + clock();
while(total > clock());
}
0062素人です2006/09/25(月) 08:33:26
>>12
>>12
コンパイルの『ステータスは終了しました』という文は直りましたが、期待するものは得られませんでした。
精進します。どうもありがとうございました。
0063デフォルトの名無しさん2006/09/25(月) 08:45:40
案外、Sleep() 「で」 実装する、というのが正解だったりして。
0064デフォルトの名無しさん2006/09/25(月) 08:57:57
>>63
Cの宿題なのでたぶんそれはないでしょ。
0065デフォルトの名無しさん2006/09/25(月) 11:37:55
Cの標準ライブラリ&ポーリング無しでできるの?
0066デフォルトの名無しさん2006/09/25(月) 12:24:50
よろしくお願いいたします。
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://hp28.0zero.jp/diary/see_diary.php?dir=569&num=1&uid=akiyu0901&hiduke=20060925&now=0
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限:2006年09月30日
[5] その他の制限:なし
0067デフォルトの名無しさん2006/09/25(月) 12:52:06
>>58
ホントに宿題か? ゲーム作ろうとして一定時間でメインループを
まわす方法を調べてるんじゃないの?
0068デフォルトの名無しさん2006/09/25(月) 15:11:27
ならこれで1/60とかで回せる。

#include <windows.h>

void wait(DWORD r)
{
DWORD s = timeGetTime();
while(timeGetTime() - s < 1000 / r);
}

int main(void)
{
for(;;){ wait(60); }
return 0;
}
0069デフォルトの名無しさん2006/09/25(月) 15:15:57
1/60じゃなくてfps60だった。
1secあたり60回更新ね。
0070デフォルトの名無しさん2006/09/25(月) 15:21:49
平気でビジーループを作る人たち。
0071デフォルトの名無しさん2006/09/25(月) 15:35:26
void wait( int time ) { sleep(time); }

これが答えだったら出題者の釣りか罠だな。
0072デフォルトの名無しさん2006/09/25(月) 15:41:20
>>70
単なるサンプルなのにそこまで書くのめんどい。
Winでゲーム作る場合は、DoEvents()関数とか作ってイベント強制通知すればいい。
0073デフォルトの名無しさん2006/09/25(月) 19:48:16
>>68
wait(0)
0074デフォルトの名無しさん2006/09/26(火) 07:41:10
アッー!
0075デフォルトの名無しさん2006/09/26(火) 10:34:22
アッー!
0076デフォルトの名無しさん2006/09/26(火) 10:39:27
吹いたw
0077デフォルトの名無しさん2006/09/26(火) 11:47:41
>>73 ウゼー
0078デフォルトの名無しさん2006/09/26(火) 11:52:23
アッー!
0079デフォルトの名無しさん2006/09/26(火) 15:09:54
c言語の宿題なんですが
Word等のワープロソフトでは、
文章中の文字(単語)のミスや変更などをする場合、
その文字検索して置き換える(検索→置換)機能を持っている.
単語と単語の間には必ずスペースが入っているものとして考えて,
これはどのように処理しているんですか?
0080デフォルトの名無しさん2006/09/26(火) 15:16:06
>>79
文章の構成単語が、辞書に登録されているものと合致する、もしくは固有名詞としての体裁を整えているか確認。
0081デフォルトの名無しさん2006/09/26(火) 15:37:51
>>79
strstr()とかで検索してその部分を置き換えればいいんじゃないの?
0082デフォルトの名無しさん2006/09/26(火) 17:28:10
一瞬、形態素解析の話かとおもた
0083デフォルトの名無しさん2006/09/26(火) 17:47:44
[1] 授業単元:計算科学
[2] 問題文
ランダムウォークの長さ?
5
シード?
3098
とすると,3098 を seed として, 長さ 5 の1次元ランダムウォークを行い,

0 0    0
0 0--------|-------------------
0 0    *
1 -1     *
2 0    *
3 +1    *
4 +2    *
5 +1    *
のように表示するプログラムです.
(図がずれてる時の説明です)
基本の*はlの下にくる形になります
-1だったら左にずれて+1だったら右にずれる形です。
+2ならふたつ右にずれます。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio.NET2003
 [3.3] 言語: C
[4] 期限: 2006年10月02日09:00まで
0084デフォルトの名無しさん2006/09/26(火) 17:54:24
83はこれを参考にしてつくるそうです

#include <stdio.h>
#include <stdlib.h>/* 乱数を使うために include */
double get_uniform_random(void);
int main(int argc, char **argv){
int n;/* 繰り返し回数 */
unsigned int seed;/* 乱数のシード */
int i;
int s;
printf("繰り返し回数?\n");
scanf("%d",&n);
if(n<0){
n=0;
}
printf("シード?\n");
scanf("%d",&seed);
srand(seed);
for(i=0; i<n; i++){
if( get_uniform_random()<0.5 ){
s=-1;
} else {
s=+1;
}
printf("%d %+3d\n",i,s); /* %+d はいつでも+-をつける. %3d は3桁確保*/
}
return 0;/* 必ず何か返す */
}
double get_uniform_random(){
return ((double)rand())/((double)RAND_MAX+1.0);
}
0085デフォルトの名無しさん2006/09/26(火) 18:56:16
いい加減に書くが、こんな感じで伝わるだろうか?
標準関数使ってるから、関数の意味はググって調べてくれい。
#include <stdio.h>
#define ZERO_POINT 9
#define LENMAX 80
/* 中略 */
int* s;
s = malloc(n * sizeof(int));
/* ここで先のプログラム流用して、s[i]にそれぞれ累計が保存されてるとおもいねえ */
/* +1 -1 +1 +1 +1 という結果だったら s[0]=1, s[1]=0, s[2]=1, s[3]=2, s[4]=3となる感じでひとつ */
{
int i;
char exstr[LEXMAX+1];
char blankstr[]=" ";
for(i=0; i!=n; i++){
if(i==0){
/* <-------> ここのながさ、ZERO_POINT=9文字分
puts(" 0 0 0");
puts(" 0 0---------|-------------------");
puts(" 0 0 *");
continue;
}
strcpy(exstr, "");
strncpy(exstr, blankstr, ZERO_POINT + s[i]);
strcat(exstr, "*");
printf("%3d %+3d%s\n", i+1, s[i], exstr);
}
free(s);
}
0086デフォルトの名無しさん2006/09/26(火) 20:09:50
>>84
もう、答え貰ってるようだけど、とりあえずコピペでそのまま提出して動く ver.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2686.txt
0087デフォルトの名無しさん2006/09/26(火) 20:26:58
[1] 授業単元: 発展プログラミング
[2] 問題文(含コード&リンク): UNIXを今動かしていて、プログラムはCで書いています。

問題:echoクライアント・サーバとあり、echoサーバでクライアントから読み込んだ行を逆順にして返すようなサーバを作れ
。(プログラムを書け)
例えば、ABC\としたら\CBAのようになるようにプログラムを書き換えるということです。
ABC←打ち込む

CBA←表示    これは駄目である。

正しくは
ABC←打ち込む
CBA←表示     つまり改行してはならない。

echoサーバでは文字を逆にするプログラムをC言語で書き、echoクライアントでは、null等を使って改行を無くす。
注:echoサーバで文字を逆にするプログラムはreverse()を使い、buf,buf2を使うこと。
[3] 環境
 [3.1] OS: (Windows/Linux/等々)  XP(ちなみに家のPCはMEです)
 [3.2] コンパイラ名とバージョン: teletarm←UNIX  C言語を書いてるのはメモ帳
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)  C言語です
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
一応、C言語は浅く広く習っています。スレ違いかもしれませんが、よろしくお願いします。
0088デフォルトの名無しさん2006/09/26(火) 20:27:59
すいません・・・ageてしまいました。

echoクライアントのプログラムです

#include <stdio.h>
extern int errno;
#define LINEBUF 1024
main(argc,argv)
int argc;
char *argv[];
{ int s,n,oc,ic;
char buf[LINEBUF+1];
s=connectTCP(argv[1],argv[2]);
while(fgets(buf,LINEBUF+1,stdin)){
write(s,buf,oc=strlen(buf));
for(ic=0;ic<oc;ic+=n) {
n=read(s,&buf[ic],oc-ic);
if(n<0) errexit("socket read failed: %s\n",strerror(errno));
}
fputs(buf,stdout);
}
}
0089デフォルトの名無しさん2006/09/26(火) 20:29:19
echoサーバのプログラムです

#include<sys/types.h>
#include<sys/signal.h>
#include<sys/socket.h>
#include<sys/time.h>
#include<sys/resource.h>
#include<sys/wait.h>
#include<sys/errno.h>
#include<netinet/in.h>
#include<stdio.h>
#define QLEN 5
#define LINEBUF 4096
extern int errno;

main(argc,argv)
int argc;
char *argv[];
{struct sockaddr_in fsin;
int ms,ss,alen,cc;
char buf[LINEBUF];
int heaven();
0090デフォルトの名無しさん2006/09/26(火) 20:29:57
ms=passiveTCP(argv[1],QLEN);
signal(SIGCHLD,heaven);
while(1){
alen=sizeof(fsin);
ss=accept(ms,(struct sockaddr*)&fsin,&alen);
if(ss<0){
if(errno==EINTR) continue;
errexit("accept failed: %s\n",strerror(errno));}
switch(fork()){
case 0:
while(cc=read(ss,buf,LINEBUF)){
if(cc<0) errexit("echo read: %s\n",strerror(errno));
if(write(ss,buf,cc)<0) errexit("echo write: %s\n",strerror(errno));
}
exit(0);
default:
close(ss);
break;
case -1: errexit("fork: %s\n",strerror(errno));
}
}
}
heaven()
{ int status;
while(wait3(&status,WNOHANG,(struct rusage *) 0) >=0) ;
signal(SIGCHLD,heaven);
}
0091デフォルトの名無しさん2006/09/26(火) 20:30:32
>>87
[3]がめちゃくちゃだぞ。
推敲して再書き込みしろ。
0092デフォルトの名無しさん2006/09/26(火) 20:32:30
>>88-90
そのコードは何だ?
0093デフォルトの名無しさん2006/09/26(火) 20:58:58
>>91
[3] 環境
 [3.1] OS: (Windows/Linux/等々)  OSはWindowsXP(学校のです)
 [3.2] コンパイラ名とバージョン: C言語のコンパイラは使っていません。telatarmというソフトでワークステーションに
                     接続して、メモ帳に書いたC言語のプログラムをUNIX上に貼り付けて動かしています
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)  C言語

です。

>>92
上がechoクライアントのプログラムで、下がechoサーバのプログラムです。

echoクライアントは、端末から入力を貰い、echoサーバに送りつけて、echoサーバの返してきたものを端末に表示する
ものです。



0094デフォルトの名無しさん2006/09/26(火) 21:02:00
>>93
いや、コンパイラは使ってるだろうし、上のコードはどうみてもUnix/Linuxのものだぞ。
0095デフォルトの名無しさん2006/09/26(火) 21:21:14
>>94
例えば、コンパイラと言えばvisual studioのような物ですよね?授業では、telatarmというソフトとメモ帳しか使ってない
んですよね。telatarmを起動し接続してemacsで書くのがいつもで、特にvisual studioのようなC言語コンパイラは使って
ないんです。
0096デフォルトの名無しさん2006/09/26(火) 21:31:30
wWwWwWwW
0097デフォルトの名無しさん2006/09/26(火) 21:37:22
[1] 授業単元: 情報科学基礎
[2] 問題文(含コード&リンク): 2つの配列を作り,周波数の異なる2つの正弦波形
               を描くプログラムを書け。
 
[3] 環境  
 [3.1] OS: (Linux
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2006年9月27日)
[5] なし

したのプログラムの続きからお願いします。
#include<stdio.h>
#include<math.h>
int main(void){
int i;
float x[3600],y[3600];
0098デフォルトの名無しさん2006/09/26(火) 21:39:31
>>95
お前の知識レベルはわかったからもう環境に関して説明しなくていいよ。
ただ、reverse()というのが何者かわからないと、解けないから説明しろ。
0099デフォルトの名無しさん2006/09/26(火) 21:43:54
>>95
visual studioはコンパイラではなくIDE(統合開発環境)と呼ばれるものです。
これには、エディタ、コンパイラ、リンカ、デバッガ、UIデザイナなどソフトウェア開発に必要なもの一式が含まれます。

C言語のプログラムを実行するには、C言語のコンパイラか、C言語のインタープリタが必要になります。
一般にC言語のインタープリタが使われることは滅多にないので、普通はコンパイラを使います。

C言語のソースコードを実行ファイルに変換するときに"cc hogehoge.c"とか、"gcc hogehoge.c"とかのコマンドを実行していると思います。
この"cc"や"gcc"がコンパイラと呼ばれるものです。
0100デフォルトの名無しさん2006/09/26(火) 21:44:33
>>98
reverse()に関する説明があるので書きます。

echoサーバで、逆順に返すohceもちゃんと作るように。cでまともに手をいれる最初です。 バッファー用の配列をもう1つ作
って、逆順につめて戻す関数reverse()を作 成してそれを使うという手と、元の配列の上で逆順にしてしまう という手の2つ
が考えられます。
echoサーバは入力が文字列であることは仮定していません。ですから、reverse()するときは、文字数であるccも引数に
渡してやるべきです。reverse(buf,buf2,cc); さて、単純にリバースすると、今のクライアントから送られる文字列 としては
最後に改行コードがあるので、先頭に改行がきてあまり良くないです。 つまり、入力が"ABC\n"を単純にリバースすると
"\nCBA"となります。
そこで、最後の文字が改行だったら、それは折り返さないというtipsを入れることにして、 "ABC\n"を"CBA\n"となるように
するのは駄目です.
ということで、最終的には、エコー逆順は本当に逆順にするだけ。クライアントが送るときに改行はサーバーに送らずに、
戻ってきたら最後に改行も表示とします。
reverserを使わない例として書くと、 int i; char c;を仮定して for(i=0;i<cc/2;i++) {c=buf[i];buf[i]=buf[cc-1-i];buf[cc-1-i]=c;}
 で反転します。
クライアントは、fgets()でbufに読み込んだ時点で、最後が改行になっているから、 文字列の長さがstrlen(buf)で、bufの
最後の場所は長さ引く1だということに注意して、そこに'\0'を入れて やると、最後の改行がつぶせます。あとは逆順から
でも普通のエコーでもサーバに送ってやって 戻ってきたらその文字列を書いて、がfputs()あたりかな、その後ろに改行文
字を書き出す。つまり、putchar(`\n`);すれば いいと思います。
0101デフォルトの名無しさん2006/09/26(火) 21:47:06
>>99
すいません・・。ありがとうございます。ということは、デフォルトがtestとすればgcc test test.c〜のようにコンパイル
しています。
■ このスレッドは過去ログ倉庫に格納されています