C/C++の宿題を片付け ..
21:デフォルトの名無しさん
07/07/16 08:54:14
[1] 授業単元:OS
[2] 問題文(含コード&リンク):
セマフォを使い親子プロセス間でのメッセージ通信を実現させよ。
親プロセスでメッセージを入力すると子プロセスで表示され、
子プロセスでメッセージを入力すると親プロセスで表示されるものとする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 今日
[5] その他:前スレで助けてもらい、それにいろいろ付け加えたらコンパイルエラーはなくなり、
以下のようなプログラムになりました
URLリンク(kansai2channeler.hp.infoseek.co.jp)
しかし、これだと親プロセス内だけでの通信となってしまいます。
どなたかお力を貸してください!
よろしくお願いします
22:デフォルトの名無しさん
07/07/16 09:05:21
名前:デフォルトの名無しさん[sage] 投稿日:2007/07/15(日) 09:55:51
[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク): 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
ソース:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語:C言語
[4] 期限:問題1は2007/07/17/12:00まで。問題2.3は2007/07/19の12:00まで。
[5] その他の制限:特になし
前スレがすぐ1000になってしまったので、もう一度書きこまさせていただきます。
23: ◆uaa3kJNAQA
07/07/16 10:01:22
[1] 授業単元: C言語
[2] 問題文
入力として英数文字(アルファベット、句読点等)の
文字列を受け取り、(入力終了はEOF)
その文字列の中の英大文字を英小文字に変換した文字列を出力
する。文字セットはASCII方式を用いるものとし、
<ctype.h>の関数は使用しない。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 18日の23:00まで
よろしくおねがいます。
24:デフォルトの名無しさん
07/07/16 10:55:39
#include <stdio.h>
int main(void){
int i;
char str[31];
printf("文字列入力\n");
fgets(str, 30, stdin);
printf("入力文字列は %s です\n", str);
for(i=0; i<31; i++){
if(str[i]>'A' && str[i]<'Z'){
str[i] += 32;
}
}
printf("変換文字列は %s です\n", str);
return 0;
}
25:デフォルトの名無しさん
07/07/16 11:12:42
>>22
課題と関係なしに趣味で組んでるが、駄目だよなw
つか、仕様だけ決めて課題出してくれればいいのに。
関数名とかロジックとか中途半端に決められてると萎える。
あと、このくらいのプログラムの規模になったらモジュール化しないと辛いんじゃね?
↓問題1のCPUのランダム対戦まで出来てる
URLリンク(kansai2channeler.hp.infoseek.co.jp)
26:デフォルトの名無しさん
07/07/16 12:41:25
>>24勝手に訂正
for(i=0; i<31; i++){
if(str[i]>='A' && str[i]<='Z'){
str[i] += 'a'-'A';
}
}
27:デフォルトの名無しさん
07/07/16 15:34:01
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
(URLリンク(kansai2channeler.hp.infoseek.co.jp))
次の手順で動作するプログラムmergesort.cを作成し,その動作を確認せよ.
まずファイルから保存されているデータ数nを読み込み,次にその数だけデータを読み込み格納する.
次に,保存されたデータについてマージソートを実行する関数mergesort()を呼び出し,データを整列する.
最後に,整列されたデータをディスプレイ上に表示しプログラムを終了する.
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: 7月22日
[5] その他の制限:結果がソートされていることをそれぞれのデータについて毎回確認すること. プログラム中で保存するデータは「ポインタを用いた線形リスト」で実現せよ.
解いてください。お願いします。
28:デフォルトの名無しさん
07/07/16 15:39:45
[1] 授業単元: プログラミング技術U
[2] 問題文(含コード&リンク):
プログラム中でm×nの2次元の動的メモリ確保を行い、
その確保された変数の[i][j]の要素に、数値(i×n+j)を代入し、
結果を表示するプログラムを作成せよ。
(実行例)
mの値を入力せよ:2
nの値を入力せよ:3
a[0][0]=0
a[0][1]=1
a[0][2]=2
a[1][0]=3
a[1][1]=4
a[1][2]=5
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限: 7/19(木)
[5] その他の制限: なし
29:デフォルトの名無しさん
07/07/16 15:48:38
[1] 授業単元: C言語基礎演習
[2] 問題文(含コード&リンク):
n個の文字列を読み込み、読み込んだ文字列を縦に読む
プログラムを作成せよ。
(空白、スペースを含む場合は空白、スペースを飛ばして表示)
但し、”ポインタのポインタ”をどこかに用いてプログラムすること。
「プログラムの動作」
何個の文字列を読み込みますか?:3
1番目の文字列:World
2番目の文字列:Cup
3番目の文字列:Soccer
1列目:WCS
2列目:ouo
3列目:rpc
4列目:lc
5列目:de
6列目:r
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限: 7/17までにお願いします。
期限ぎりぎりですがよろしくお願いします。
30:デフォルトの名無しさん
07/07/16 15:56:31
>>28
URLリンク(oshiete1.goo.ne.jp)
31:デフォルトの名無しさん
07/07/16 16:05:03
[1] 授業単元:プログラミングU演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年07月17日08:20まで
[5] その他の制限: 無し
よろしくお願いします。
32:デフォルトの名無しさん
07/07/16 16:21:27
>>31
そんなんで分かる訳無いだろ
33:デフォルトの名無しさん
07/07/16 16:24:10
C言語苦手だああああ
34:デフォルトの名無しさん
07/07/16 16:26:17
>>31
こんな幹事会。ちなみに中身はtgz。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
35:デフォルトの名無しさん
07/07/16 16:26:54
>>30
すいません、2次元配列さっぱり分からないもので、参考のページで
論議されている内容もさっぱり分かりません。
36:デフォルトの名無しさん
07/07/16 16:33:04
遅れましたが、前スレの748です
前スレ750さん、ありがとうございました
ただ、使い方が良くわからないのでできればご指導願います
37:デフォルトの名無しさん
07/07/16 16:39:19
>>34
queue.h の中の
static int qfirst = 0, qlast = 0, qcount = 0;
の行は queue.c に移動したほうがいいんじゃね?
38:デフォルトの名無しさん
07/07/16 16:42:35
>>37
そういやそうだね。あとmakefileも微妙だったりゴミが混じってたりするけど気にしないでくれ。
39:デフォルトの名無しさん
07/07/16 16:47:16
というか、このくらいの問題に手も足もでない、自力でできないくらいじゃ
単位やらなくてもいいんじゃない?と俺は思うよ。
40:デフォルトの名無しさん
07/07/16 16:52:34
それには同意だが、そんなこと知ったことじゃないし、暇つぶしになるから問題なし。
#include <stdio.h>
#include <stdlib.h>
int main(void){
int m,n,i,j,**a;
char buf[256];
printf("mの値を入力せよ:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&m);
printf("nの値を入力せよ:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&n);
a=(int**)calloc(m,sizeof(int*));
if(a==NULL){printf("メモリ確保失敗。\n");exit(1);}
for(i=0;i<m;i++){
a[i]=(int*)calloc(n,sizeof(int));
if(a[i]==NULL){printf("メモリ確保失敗。\n");exit(1);}
}
for(i=0;i<m;i++)for(j=0;j<n;j++){
a[i][j]=i*n+j;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
for(i=0;i<m;i++)free(a[i]);
free(a);
return 0;
}
41:デフォルトの名無しさん
07/07/16 17:04:25
このスレは宿題を淡々を片付けるスレだから
レベルが低かろうが高かろうがどうでもいいと思うぜ
42:デフォルトの名無しさん
07/07/16 17:14:32
[1] 授業単元:IT入門
[2] 問題文(含コード&リンク):
繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1
(1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに
入力した複素数すべての積を出力するプログラムを作成せよ.
なお,ユーザが入力する回数に制限はないものとする.
stdio.hの他にstdlib.hをインクルードしておく必要がある.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 最新版
[3.3] 言語: C
[4] 期限:2007年7月21日
[5] その他:参考プログラム(URLリンク(www-it.sci.waseda.ac.jp))を使ってください
43:デフォルトの名無しさん
07/07/16 17:15:08
>>40
ありがとうございます。
提出期限と同じ木曜日に出題されて今日まで連休中考えていたけど
配列はどうしても苦手で参考サイトを回ってみたけど、さっぱりでした。
>>39
それでも単位は欲しいのが大学生です。
44:42
07/07/16 17:15:52
URLリンク(www-it.sci.waseda.ac.jp)
もう一度リンクしておきます
45:デフォルトの名無しさん
07/07/16 17:32:14
どうでもいいけど直リンだと2chでお願いしてるのがバレバレだよ。
46:デフォルトの名無しさん
07/07/16 17:33:19
どうせ誰がコピッたかなんて分かるわけが…
ソース見りゃ分かるか。
47:デフォルトの名無しさん
07/07/16 17:39:27
>>29
ソース自体は書いたんだが、ポインタのポインタを有効に使う方法が思いつかないなぁ・・・。
48:47
07/07/16 17:50:22
>>29
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえずupしといたんで、ポインタのポインタ使用版に改良できる人いたらお願い。
49:デフォルトの名無しさん
07/07/16 17:56:33
gets使うなよ。
50:デフォルトの名無しさん
07/07/16 18:06:10
そういう事は言ってやるなよ。
宿題丸投げする奴への餞別のつもりだろ。
51:デフォルトの名無しさん
07/07/16 18:12:33
申し訳ありません。宜しくお願いします
【質問テンプレ】
[1] アプリ開発
[2] OS内にあるサウンド出力プログラム作成
[3.1] Windows
[3.2]eclipse バージョンは分かりません
[3.3] どちらでもイイらしいです
[4] 7/18(水)
[5] スタイルシートを自ら作りSQLで模擬エクセル作成、バックトラック法、動的計算法はやりました
52:デフォルトの名無しさん
07/07/16 18:16:04
>>51
接続部位のデバイス設定をやりたいのか
WAVとかmp3とかの出力ファイルを作りたいのか
メディアプレイヤーとかのアプリを作りたいのかはっきりしろw
意味が中途半端で分からんw
53:デフォルトの名無しさん
07/07/16 18:17:54
ecliってCコンパイラあったのか?
ちょっとしか触った事ないけどJava用IDEってイメージだった
54:デフォルトの名無しさん
07/07/16 18:18:36
>>51 eclipseならbccだろ?ちゃんと書いたほうがいいよ
55:36
07/07/16 18:18:48
すいませんがどなたか使い方教えてください・・・
750 :デフォルトの名無しさん [sage] :2007/07/12(木) 13:00:15
>>748 ショボイですが
暗号
#include <stdio.h>
#include <ctype.h>
static char alpha[53] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
static char table[53] = "zNFeYMljvJXKicfrGyDEOwQpHkCLbxhqRAPsnouVTaWIZdUmBStg";
int getindex(char *str, int ch){
int i;
for(i = 0; i < 52 && str[i] != ch; i++) ;
return i;
}
int main(int argc, char *argv[]){
FILE *fpin, *fpout;
int ch, op;
if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) exit(1);
while((ch = fgetc(fpin)) != EOF)
if(isalpha(ch)) fputc(table[getindex(alpha, ch)], fpout);
else fputc(ch, fpout);
fclose(fpin), fclose(fpout);
return 0;
}
56:デフォルトの名無しさん
07/07/16 18:18:59
>>27
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2重ポインタ版。
縦に表示なんて面倒な指定さえなければもっとメモリ節約できるけど。
57:56
07/07/16 18:19:44
安価ミス
>>27×
>>29○
58:デフォルトの名無しさん
07/07/16 18:23:31
>>55
「main」関数に「引数」があるわけだな
ぐぐってみろ
ぐぐってまったく意味不明だったら答えてやる
59:デフォルトの名無しさん
07/07/16 18:24:45
>>51 ちょwwwそれ宿題ってレベルじゃねーぞw どこの学校だよw
60:56
07/07/16 18:25:29
訂正、下の方の
putchar(str[j][i]);
の行を
if(str[j][i]!='\0')putchar(str[j][i]);
にしといて。
61:デフォルトの名無しさん
07/07/16 18:25:54
>>55
問題文もくれなきゃ何がしたいのかわからん。
ソース見る限り単一換字暗号?
62:デフォルトの名無しさん
07/07/16 18:27:31
>>42
URLリンク(kansai2channeler.hp.infoseek.co.jp)
63:デフォルトの名無しさん
07/07/16 18:33:17
>>51
多分これじゃダメなんだろうな
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
char cmd[10+FILENAME_MAX];
if(argc==2){
sprintf(cmd, "start %s", argv[1]);
system(cmd);
}
return 0;
}
64:デフォルトの名無しさん
07/07/16 18:37:24
>>61
任意の英文について、換字暗号表を用いて暗号化するプログラムと、
暗号化した文を同様の表を用いて解読するプログラムを作成せよ。
入力する文章と換字暗号表の形式は自由にしてよいものとする。(別に用意したテキストファイルから読み込む形のほうが好ましい)
例
abcd… という英文があったとき、換字暗号表がa→t b→y c→e d→k…だったなら、
tyek…と出力されるプログラム、またその逆操作するプログラム
という意味です。
という文章でお願いしたところ、>>55のような回答をいただきましたが、使い方がわかりませんでした
よろしくお願いします
65:51
07/07/16 18:37:46
すいません 組み込み系です。
>>52さんの言われている中では「接続部位のデバイス設定」になると思います
>>63すいません OS無しで作る方法を・・・・・
66:デフォルトの名無しさん
07/07/16 18:39:58
OS無しとは、一気に難易度が上がったな。
67:デフォルトの名無しさん
07/07/16 18:40:10
>>51
UNIX板行った方がいいと思うよ あっちは組み込み系だから・・・・・・
68:デフォルトの名無しさん
07/07/16 18:41:40
その誘導のしかたもどうかと思う。
69:デフォルトの名無しさん
07/07/16 18:41:54
>>56
スベース文字のスキップがない
70:デフォルトの名無しさん
07/07/16 18:42:24
>>51 ちょwwどこの学校だ・・・・・今後の参考に教えてくれないか?
71:デフォルトの名無しさん
07/07/16 18:46:30
>>51 マジレス:卒業したら年収700万で雇うから来てくれ
housurejiak2245589761045@hotmell〜
72:デフォルトの名無しさん
07/07/16 18:47:12
>>51 の学校で他人のソースコピペ無しで卒業なら、めちゃめちゃ優秀なマだな
73:デフォルトの名無しさん
07/07/16 18:52:43
>>51 君の学校は新しいOSを開発しているのか?
申し訳無いが、俺らはソフト屋だ。そっち側はまったく分からん
助けにならなくて申し訳ない
74:デフォルトの名無しさん
07/07/16 19:00:12
CPUの演算がどのように行われているのかをまず覚えよ
底辺マは出力結果にしか興味を持たない だからバグがでる
75:デフォルトの名無しさん
07/07/16 19:02:39
>>51
サウンドデバイスの IO の定義が無いとどうにもならない
最低限でも
1.音量設定の方法
2.周波数設定の方法
3.サウンドバッファへの書き込み&失敗検出の方法
くらいは必要だと思うよ
76:55
07/07/16 19:05:29
>>58
ぐぐってみましたが意味不明でした…
すいません、教えていただけますか?
77:デフォルトの名無しさん
07/07/16 19:06:56
>>63 が駄目ならこれも駄目ってことか
OS無しって難しすぎだろ
PlaySound("c:\\windows\\media\\chimes.wav", NULL, SND_SYNC | SND_FILENAME);
78:デフォルトの名無しさん
07/07/16 19:08:20
>>76
./a.out 変換元ファイル 変換後ファイル名
79:デフォルトの名無しさん
07/07/16 19:10:28
>>64
出てきたバイナリのコマンドラインに対象テキストファイル名と出力先ファイル名を追記。
例えばコンパイルして出てきたプログラムがa.exe、暗号化するテキストがbefore.txt、
出力先をafter.txtとするなら
a.exe before.txt after.txt
でafter.txtに暗号化済みのファイルが出力される。
逆操作は不可。そういう意味では>>55は要件を満たしていないね。
こんなとこに丸投げする人にいう事じゃないと思うけど
こんくらいのソース読めないでこれからやっていけると思ってる?
80:51
07/07/16 19:12:04
すいません
やっぱり 自分でやってみます
自分で考えて解決しなきゃ成長しませんもんね・・・・・
色々ありがとうございました。
>>71さん、心使いは嬉しいのですが学校で研究を続けるつもりなので・・・・
それと学校名は出せません。ごめんなさい
81:デフォルトの名無しさん
07/07/16 19:15:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 出来る限り単純な方法で回答して下さると助かります。
よろしくお願いします。
82:デフォルトの名無しさん
07/07/16 19:16:44
擁護するわけじゃないけど、コマンドライン引数の実際の使い方は教本によっちゃ物凄い投げやりだからな。
こんなんで分かればエスパーだろってぐらい。
で、分からんから後まわしにして課題出てくると四苦八苦するんだよな。
83:デフォルトの名無しさん
07/07/16 19:16:53
>>80
ここの方達が手上げてるのを完成させるの難しくない?
>>67の行ってるUNIX板行った方がよくない?
84:デフォルトの名無しさん
07/07/16 19:18:28
>>81
前スレに同じのがあったから見てくるといいと思うよ。
85:デフォルトの名無しさん
07/07/16 19:20:27
LL構文解析懐かしすぎる
86:デフォルトの名無しさん
07/07/16 19:27:12
>>29
だれかお願いします。
>>47,48ががんばってくれたけど「ポインタのポインタ」使用版でないと
駄目な課題なので分かる方お願いします。
>>47,48
ありがとうございます。
87:56=57=60
07/07/16 19:29:07
orz
88:51
07/07/16 19:32:53
自分も投げ出してたから人のこと言えないけど
時間かかってでも自分で考えて解決した方がいいと思う
89:デフォルトの名無しさん
07/07/16 19:34:51
>>88
秀同って事でスレ終了 乙です
90:デフォルトの名無しさん
07/07/16 19:45:35
>>78
その通りやっても出来ない・・・なぜでしょうか
91:デフォルトの名無しさん
07/07/16 19:57:19
>>90
次の一連のコマンドを打ち込んだ結果を晒してみて
echo hello>a.txt
./a.out a.txt b.txt
echo $?
cat b.txt
92:91
07/07/16 19:59:42
最後に追加
ls -l a.out a.txt b.txt
93:デフォルトの名無しさん
07/07/16 20:00:57
C:\Documents and Settings\******>echo hello>a.txt
C:\Documents and Settings\******>./a.out a.txt b.txt
'.' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
C:\Documents and Settings\******>echo $?
$?
C:\Documents and Settings\******>cat b.txt
cat: b.txt: No such file or directory
こうなりました
94:デフォルトの名無しさん
07/07/16 20:02:44
C:\Documents and Settings\******>ls -l a.out a.txt b.txt
ls: a.out: No such file or directory
ls: b.txt: No such file or directory
-rw-rw-rw- 1 user group 7 Jul 16 19:59 a.txt
追加の分はこうなりました
コマンドプロンプトで実行しました
95:91
07/07/16 20:05:31
>>93
linux じゃなかったのかよ!
echo hello>a.txt
.\a.exe a.txt b.txt
type b.txt
dir
96:デフォルトの名無しさん
07/07/16 20:08:41
笑った。
どうみてもコマンドプロンプトかcygwinとかだね。
97:デフォルトの名無しさん
07/07/16 20:21:17
>>86
皆さんの回答を参考にして作ってみた。これでどうかな。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
98:デフォルトの名無しさん
07/07/16 20:31:46
よく見てないけど。
if(buf[strlen(buf)-1] == '\n')
buf[strlen(buf)-1] = 0;
↑ifで判定する必要ない。
99:デフォルトの名無しさん
07/07/16 20:41:55
>>42
URLリンク(kansai2channeler.hp.infoseek.co.jp)
参考コードは一部使用していない
100:99
07/07/16 20:52:38
>>42
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一部訂正
101:デフォルトの名無しさん
07/07/16 21:00:34
>>42
コンパイルしていない
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _{ int r, i; } img;
static img *ary=NULL;
static int arysize;
static int arylen;
void putimg(img img){
if(arysize<=arylen){
arysize+=10;
ary=realloc(ary, sizeof(img)*arysize);
}
ary[arylen++]=img;
}
int main(void){
img m;
int i;
for(;;){
scanf("%d,%d", &m.r, &m.i);
if(m.r==1&&m.i==0) break;
putimg(m);
}
for(m.r=1, m.i=i=0;i<arylen;i++){
printf("%d+%d*i\n", ary[i].r, ary[i],i);
m.r=m.r*ary[i].r-m.i*ary[i].i;
m.i=m.r*ary[i].i+m.i*ary[i].r;
}
printf("%d+%di\n", m.r, m.i);
}
102:デフォルトの名無しさん
07/07/16 21:04:13
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):
• 区間[ a, b ]において連続なる関数f ( x) について,定積分の計算を行う
• 適用する公式は,シンプソンの公式
S=h/3{y(0)+y(2n)+4{y(1)+y(2)+....+y(2n-1)}+y(2)+y(4)+.....+y(2n-2)}
• f ( x)=1/(1+x2)
• a=0, b=10, e=0.0000001の場合の積分値とnの値を表示する
• 各変数(nを除く)の型はdoubleとする
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語:C++
[4] 期限:次の木曜まで
[5] その他の制限: これといって無し
リンク先に手順の例とかがあります
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえず自分でやってみたけど無理でした。この雑魚にどなたかご教授をorz
あと最後らへんのprintf文の、&nの&は無かったことに(´;ω;`)
103:デフォルトの名無しさん
07/07/16 21:05:06
>>97
ぜんぜん良いと思います。
ありがとうございます。
ポインタのポインタを使っていてちゃんと動作するものなら問題ないので。
104:デフォルトの名無しさん
07/07/16 21:09:42
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 7/17午前中
[5] その他の制限: なし
105:デフォルトの名無しさん
07/07/16 21:19:06
>>103
ベースは>>56さんのなので、よろ
106:デフォルトの名無しさん
07/07/16 21:34:45
>>102
#include <stdio.h>
double f(double x){
return 1.0/(1.0+x*x);
}
int main(void){
double a=0.0, b=10.0, h, sum;
long n=10000000, i;
h=(b-a)/n;
sum=f(a)+f(b);
for(i=1;i<n;i+=2) sum+=2*f(a+h*i);
for(i=2;i<n;i+=2) sum+=4*f(a+h*i);
sum*=h/3;
printf("Answer: %f\n", sum);
return 0;
}
107:デフォルトの名無しさん
07/07/16 22:14:38
>>106さん、ありがとうございます。工夫すればかなり短くなるんですね・・・
それと、問題文に抜けてしまったんですが
• s2は最新の計算結果,s1は一つ前の計算結果
• |s2-s1|<eとなるまで,nを1増やしながら,以下の
処理を繰り返す
- s1←s2
- s2を新しいnで計算する
というのはどうすれば出来るでしょうか?よろしければご教授お願いします
108:デフォルトの名無しさん
07/07/16 22:24:21
>>104
#include <stdio.h>
int main(void){
int masu[9], a, i, j, turn = 0;
char *koma[3] = {" 0 ", " X ", " * "};
for(i = 0; i < 9; i++) masu[i] = 2;
while(1){
do{
printf("?"), scanf("%d", &a);
if(a >= 9) continue;
}while(masu[a] != 2);
masu[a] = turn%2;
turn++;
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++) printf("%s", koma[masu[i*3 + j]]);
printf("\n");
}
if((masu[(a + 3)%9] == masu[a] && masu[(a + 6)%9] == masu[a]) ||
(masu[3*a/3 + (a + 1)%3] == masu[a] && masu[3*a/3 + (a + 2)%3] == masu[a]) ||
(a%4 == 0 && masu[0] == masu[a] && masu[4] == masu[a]&& masu[8] == masu[a]) ||
(a%2 == 0 && a%8 != 0 && masu[(a + 2)%8 + 2] == masu[a] && masu[(a + 4)%8 + 2] == masu[a])){
printf("%s\n", koma[masu[a]]);
break;
}else if(turn >= 9){
printf("draw\n");
break;
}
}
return 0;
}
109:デフォルトの名無しさん
07/07/16 22:29:18
一つでまとめますかw
あんたすごいよ。
110:21
07/07/16 22:30:37
どなたか>>21お願いします!
111:デフォルトの名無しさん
07/07/16 22:33:10
>>107
#include <stdio.h>
#include <math.h>
double f(double x){
return 1.0/(1.0+x*x);
}
int main(void){
double a=0.0, b=10.0, e=0.0000001, h, s1=0.0, s2;
long n, i;
int is_first=1;
for(n=2;;n+=2){ // アルゴリズムの関係で n は偶数
h=(b-a)/n;
s2=f(a)+f(b);
for(i=1;i<n;i+=2) s2+=2*f(a+h*i);
for(i=2;i<n;i+=2) s2+=4*f(a+h*i);
s2*=h/3;
if(!is_first && fabs(s2-s1)<e) break;
s1=s2;
is_first=0;
}
printf("n=%ld integral=%f\n", n, s2);
return 0;
}
112:デフォルトの名無しさん
07/07/16 22:46:56
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
CSVファイルからデータを読み込み、構造体に入れる。
CSVファイルの中身は、名前・住所・電話番号で、10件以内である。
構造体には、登録番号・名前・住所・電話番号を入れる。
登録番号は自分でつける。
最初に、登録番号と名前を表示し、入力された登録番号に応じて
名前住所電話番号を表示する。
[3] 環境
[3.1] OS:windows cygwin
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:特になし
色々かんがえたのですがわかりませんでした。。
よろしくおねがいします。
113:デフォルトの名無しさん
07/07/16 22:48:53
>>111さん
素早い回答ありがとうございました。おかげで次の宿題は出せそうです。ありがとうございました。
114:デフォルトの名無しさん
07/07/16 22:49:29
>>107
ごめん間違った
for(i=1;i<n;i+=2) s2+=2*f(a+h*i);
for(i=2;i<n;i+=2) s2+=4*f(a+h*i);
↓
for(i=1;i<n;i+=2) s2+=4*f(a+h*i);
for(i=2;i<n;i+=2) s2+=2*f(a+h*i);
115:デフォルトの名無しさん
07/07/16 22:50:12
あちゃー手遅れだったか
116:スモーク
07/07/16 22:50:23
多分岐型
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。
実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。
演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。
まだcaseになれていないのだろうか・・・。
教えてください。
117:スモーク
07/07/16 22:51:41
他にも。
多分岐型(2)
次の説明は冬季オリンピックの開催年についての説明である。
キーボードから変数year に入力された年号について、
開催された年に第何回大会が開催されたか
画面に表示するプログラムを作成しなさい。
また開催年でない場合は、画面にその旨メッセージを出力すること。
118:デフォルトの名無しさん
07/07/16 22:55:35
>>117
説明がneeeeeeeeeeeee
119:107
07/07/16 22:56:05
>>114さん、わざわざ丁寧にありがとうございます!(´;ω;`)ブワッ
120:デフォルトの名無しさん
07/07/16 22:57:52
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
文字列を置換するプログラムをつくれ。
どのような形でもいいので、置き換える文字列と置き換えられる文字列を受け取り
置換した文章を出力する。なるべくポインタを使うこと。試しにちゃんと動くか確認すること。
(例)”僕" を ”私” に置換する
僕は20才だ。僕の好きなたべものはお酒だ。
-> 私は20才だ。私の好きなたべものはお酒だ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:(gcc 2.95.3)
[3.3] 言語: C
[4] 期限: (2007年07月31日23:59まで )
[5] その他の制限: 無し
121:デフォルトの名無しさん
07/07/16 22:58:12
まぁ、感謝されたって力つかなきゃ意味無いし、暇つぶしの種にされてるだけだから考え物だけどな。
122:デフォルトの名無しさん
07/07/16 23:05:22
>>110
あれでできてるんじゃねえのか?
scanfの前に"c2p Message:","p2c Message:"とか
printfをいれて挙動をチェックしろ
123:デフォルトの名無しさん
07/07/16 23:11:52
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio .NET 2003
[3.3] 言語:C
[4] 期限:2007/7/17(火) 10:30
[5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。
どうかよろしくお願いします。
124:デフォルトの名無しさん
07/07/16 23:16:50
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): メンバx[]の値が定まっているPoint5Dのインスタンスを引数とし,
その2ノルムを計算して返す関数 Norm を書け.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:無し
問題の意味がいまいち分かりません…orz
よろしくお願いします。
125:デフォルトの名無しさん
07/07/16 23:17:09
>>120
#include <stdio.h>
#include <string.h>
void replace(char *sentence, char *src, char *dest){
char *ptr;
int src_len;
src_len=strlen(src);
for(;;){
ptr=strstr(sentence, src);
if(ptr==NULL) break;
printf("%.*s%s", ptr-sentence, sentence, dest);
sentence=ptr+src_len;
}
printf("%s", sentence);
}
int main(void){
char *sentence="僕は20才だ。僕の好きなたべものはお酒だ。";
char *src="僕", *dest="私";
replace(sentence, src, dest);
return 0;
}
126:デフォルトの名無しさん
07/07/16 23:18:52
>>120
#include <stdio.h>
int main(int argc, char **argv)
{
char *queue;
int c, qhead = 0, qtail = 0, qsize;
if (argc < 3)
return fprintf(stderr, "usage: %s from to\n", argv[0]), 1;
qsize = strlen(argv[1]);
queue = malloc(qsize);
while ((c = getchar()) != EOF) {
queue[qtail] = c;
qtail = (qtail + 1) % qsize;
if (qhead != qtail) continue;
if (memcmp(&queue[qhead], argv[1], qsize - qhead) == 0
&& memcmp(queue, argv[1] + qsize - qhead, qtail) == 0) {
fputs(argv[2], stdout);
qhead = qtail = 0;
} else {
putchar(queue[qhead]);
qhead = (qhead + 1) % qsize;
}
}
while (qhead != qtail) {
putchar(queue[qhead]);
qhead = (qhead + 1) % qsize;
}
free(queue);
return 0;
}
127:126
07/07/16 23:21:41
あ。
#include <stdlib.h>
#include <string.h>
もしといて。スマソ。
128:デフォルトの名無しさん
07/07/16 23:28:07
>>125
ありがとうございます。かなりきれいにできていますね。
自分もstrstr ()を使ったのですが、途中でつまってしまいました。
129:デフォルトの名無しさん
07/07/16 23:28:59
>>120 便乗
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[1024], rep[2048], word1[32], word2[32], *p = buf, *q = rep;
scanf("%[^\n]%s%s", buf, word1, word2);
while(*p){
if(!strncmp(p, word1, strlen(word1))) strcpy(q, word2), p += strlen(word1), q += strlen(word2);
else *q++ = *p++;
}
*q = '\0';
puts(rep);
return 0;
}
130:デフォルトの名無しさん
07/07/16 23:31:06
>>126
すごいですね。こんなやりかたもあったのですか。
131:デフォルトの名無しさん
07/07/16 23:38:44
>>129
検索単語がみつかったら単語の文字の数だけ前に進めてstrcpy()をつかうのですね。
それも考えていたのですが、できそうでできませんでした。
みなさん、ありがとうございました。
132:デフォルトの名無しさん
07/07/16 23:40:48
[1] 授業単元:情報基礎
[2] 問題文:
・1から9までの数字を一回ずつ使った9桁の数字を小町数という。
自乗した数が小町数となるような自然数をすべて求めるプログラムを作成し
その数と小町数の両方を出力せよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: (明日まで )
[5] その他の制限: 無し
C言語習いたてで、期限ぎりぎりまでがんばったんですけどダメでした
どなたかよろしくお願いします。
133:デフォルトの名無しさん
07/07/16 23:52:56
昔のスレに同じ質問あった気がするな
134:22
07/07/16 23:54:32
>>25
ありがとうございます。
なんですが、元々のソースを追記修正して今まできたので
一応そのような形でって事になってます。
制限なしと書いていましたが、現在のソースを
やっと作れるか作れないかぐらいのレベルなので
>>25さんのだとまだちょっとわからないことがいろいろとあります。
勉強してみます。ありがとうございました。
135:デフォルトの名無しさん
07/07/17 00:08:28
>>132
#include <stdio.h>
#include <string.h>
int check(unsigned long n)
{
char f[10] = { '0' };
for (n = n * n; n > 0; n /= 10)
f[n % 10] = '1';
return memcmp(f, "0111111111", 10) == 0;
}
int main(void)
{
unsigned long n;
/*
* 最小小町数 123456789, sqrt(123456789) = 11111.11...
* 最大小町数 987654321, sqrt(987654321) = 31246.96...
*/
for (n = 11111; n < 31428; ++n)
if (check(n))
printf("%lu * %lu = %lu\n", n, n, n * n);
return 0;
}
136:135
07/07/17 00:11:09
あ、コメント間違ってら
sqrt(987654321) = 31426.96...
ね、正しくは。
137:デフォルトの名無しさん
07/07/17 00:18:27
>>136
わざわざありがとうございます!
今できる環境にないので明日大学で試してみます
138:デフォルトの名無しさん
07/07/17 01:10:25
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し
よろしくお願いします。
139:デフォルトの名無しさん
07/07/17 01:50:51
>>108
ありがとうございます。
終了条件の部分大変参考になりました。
140:デフォルトの名無しさん
07/07/17 03:38:07
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):迷路の作成(探索)
2次元配列を用いて迷路をつくりSTARTからGOALまでの経路を視覚的にわかるように出力せよ。
(例)壁1 通路0 START8 GOAL9
データ
1 1 1 1 1 1 1 1 1 1
1 9 0 0 0 1 0 1 0 1
1 1 1 1 0 1 0 0 0 1
1 0 1 0 0 1 1 1 0 1
1 0 1 0 1 1 0 0 0 1
1 0 0 0 1 0 0 1 1 1
1 1 0 1 1 0 1 0 0 1
1 0 0 0 1 0 1 0 1 1
1 0 1 0 0 0 0 0 8 1
1 1 1 1 1 1 1 1 1 1
141:デフォルトの名無しさん
07/07/17 03:38:42
続きです
出力結果
**********
*G+++* * *
****+* *
* *++*** *
* *+** *
* ++* ***
**+** * *
* ++* * **
* *+++++S*
**********
[3] 環境
[3.1] OS:Mac
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し
現在奮闘中ですがなかなかできませんorz
よろしくお願いします。
142:デフォルトの名無しさん
07/07/17 04:26:02
>>142
#include <stdio.h>
#define X 10
#define Y 10
int map[X][Y]={ {1,1,1,1,1,1,1,1,1,1}, {1,9,0,0,0,1,0,1,0,1},
{1,1,1,1,0,1,0,0,0,1},{1,0,1,0,0,1,1,1,0,1},
{1,0,1,0,1,1,0,0,0,1},{1,0,0,0,1,0,0,1,1,1},
{1,1,0,1,1,0,1,0,0,1},{1,0,0,0,1,0,1,0,1,1},
{1,0,1,0,0,0,0,0,8,1},{1,1,1,1,1,1,1,1,1,1}};
char expr[]=" *+34567SG";
int next(int x, int y) {
if (map[x][y] == 0) map[x][y] = 2;
if (map[x-1][y] == 9 || map[x-1][y] == 0 && next(x-1, y)) return 1;
if (map[x][y-1] == 9 || map[x][y-1] == 0 && next(x, y-1)) return 1;
if (map[x+1][y] == 9 || map[x+1][y] == 0 && next(x+1, y)) return 1;
if (map[x][y+1] == 9 || map[x][y+1] == 0 && next(x, y+1)) return 1;
if (map[x][y] == 2) map[x][y] = 0;
return 0; }
int main() {
int x, y, r=0;
for (x=0; x<X; x++) for (y=0; y<Y; y++) if (map[x][y] == 8) next(x, y);
for (x=0; x<X; x++) {
for (y=0; y<Y; y++) putchar(expr[map[x][y]]);
putchar('\n');
}
return 0; }
143:142
07/07/17 04:30:54
安価ミスた.orz
144:デフォルトの名無しさん
07/07/17 04:46:27
URLリンク(ja.wikipedia.org)
145:デフォルトの名無しさん
07/07/17 08:50:03
>>138
URLリンク(kansai2channeler.hp.infoseek.co.jp)
146:デフォルトの名無しさん
07/07/17 09:22:08
>>112
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char num[128], name[128], adr[128], tel[128];
}Data;
int main(int argc, char *argv[])
{
Data x[10];
FILE *fp;
int i = 0, j;
char buf[1024], *p, search[128];
if(argc < 2) fprintf(stderr, "usage : %s string\n", argv[0]), exit(1);
if((fp = fopen(argv[1], "r")) == NULL) perror(argv[1]), exit(2);
while(fgets(buf, sizeof(buf), fp) != NULL){
printf("num : "), scanf("%s", x[i].num);
if((p = strtok(buf, ",")) != NULL) sscanf(p, "%s", x[i].name);
if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].adr);
if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].tel);
i++;
}
for(j = 0; j < i; j++)
printf("%s %s\n", x[j].num, x[j].name);
printf("search : "), scanf("%s", search);
for(j = 0; j < i; j++)
if(!strcmp(search, x[j].num))
printf("%s %s %s\n", x[j].name, x[j].adr, x[j].tel);
return 0;
}
147:デフォルトの名無しさん
07/07/17 11:28:50
[1] 授業単元:IT入門B1
[2] 問題文:繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1 (1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに入力した複素数すべての積を出力するプログラムを作成せよ.
なお,ユーザが入力する回数に制限はないものとする.
stdio.hの他にstdlib.hをインクルードしておく必要がある.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:2007年7月30日
[5] その他の制限: 特になし
参考プログラムです→URLリンク(www-it.sci.waseda.ac.jp)
よろしくお願いします。
148:デフォルトの名無しさん
07/07/17 11:38:25
>>147
検索して死ね
149:デフォルトの名無しさん
07/07/17 11:39:39
[1]授業単元:プログラミング技術III
[2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限:7/18まで
[5] その他の制限:特になし
よろしくお願いします
150:デフォルトの名無しさん
07/07/17 13:09:50
[1]授業単元:ゲームV
[2]問題文:数独(wiki参照Wikipedia項目リンク)解読プログラム
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限:7/20
[5] その他の制限:関数は2つ以下、#include <stdio.h>のみを使用すること
宜しくお願いします
151:デフォルトの名無しさん
07/07/17 13:22:11
>>150
URLリンク(www.techfinesse.com)
こんなのがあるようだぞ
その制限には引っかかるようだがなw
152:デフォルトの名無しさん
07/07/17 13:30:55
[1] データ構造論
[2]treeprintのプログラムを参考にして木をカッコ表記で表示するプログラムを作り、コマンド X で動作するようにせよ。
/* treeprint() : 2分探索木を根から順にすべて表示する(1行10個毎) */
int num; /* 1行のデータ個数を制御するための変数。*/
void treeprint(void)
{
num= 0;
/* 木の根ノードからサブ関数trprintを用いてプリント開始。*/
trprint(start->right);
}
int trprint(TNODE *p) /* trprint(p) : p の2分木を再帰的にプリント。*/
{
if(p != end){ /* p が終端ノードでないならば */
trprint(p->left); /* pの左部分木を再帰的にプリント。 */
printf("%5d%c",p->key, (++num % 10) ? ' ':'\n'); /* pのkey値を表示。 */
trprint(p->right); /* pの右部分木を再帰的にプリント。 */
}
}
[3.1] Linux [3.2] gcc 3.4 VC 6.0等 [3.3] C言語
[4] 2007年07月18日12:00まで]
[5] プログラムの中のtreeprintだけ問題文の載せています
よろしくお願いします
153:デフォルトの名無しさん
07/07/17 13:33:01
>>149
URLリンク(kansai2channeler.hp.infoseek.co.jp)
154: ◆Il0WZuGYWw
07/07/17 14:47:00
>>150
bsdのportsの中に入ってるお
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5379日前に更新/328 KB
担当:undef