C/C++の宿題を片付けます 81代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/01/13(土) 13:51:48【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 80代目
http://pc10.2ch.net/test/read.cgi/tech/1166969820/
0002デフォルトの名無しさん
2007/01/13(土) 14:52:03,:'/:::::::::::::::::/u , , ``-;ヽ
,:':/:::::::::::::::::/ '⌒`ー‐'| | |`ー-‐、u|::|
,:'/:::::::::::::::::/u /⌒ヽ /⌒ヽ !::! ;
,' l--、:::::::/ l O | lj | O | '、l ,:
/´,―、ヽ:/ ヽ、,r‐'-、:::::::::ゝ--く l ;
.;'/ /ニ_ノ | ..::::::::{ r,、 ヽ / ,r-, ノ::.. '、;
; | l '-, / ヽ !},. ---'し'_,ヘ :..ヽ':,
':,! `‐' u ヽ ,. -'"´_,. ----,、 ヽ、u l ;
':,ヽ_ノ u ノ'" ,. -''" ̄ ̄ ̄ ヽ. ヽ |
.,: | lj / /_,. ---、,. -----、| | / ;.,
--―'ヽ / '-------―――‐''" ノ /``ー- 、_
ヽ、u '`ljー-----―――
0003デフォルトの名無しさん
2007/01/13(土) 15:28:31[2] 問題文(含コード&リンク):
優先的選択モデルによるSFN(Scale Free Network)の生成
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3373.txt
↑の/* 自分で書いてください*/の部分の穴埋め
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C++
[4] 期限: 1/15
[5] その他の制限:
使用する方法:ソート、再帰的アルゴリズム、線形リスト、動的なメモリの確保
再度投稿しますが、どうか宜しくお願いいたします。
長いので面倒かも知れませんが、ヒントだけでも戴ければと…。
0004デフォルトの名無しさん
2007/01/13(土) 18:06:17>void swap(int*x,int*y){if(x!=y)*x^=*y^=*x^=*y;}
スマートでもなんでもない。これは正しくないプログラム。
ひとつの式の中で同じ変数を複数回書き換えたとき、結果は未定義になる。
常識だから下くらいは読んどけ。
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0005デフォルトの名無しさん
2007/01/13(土) 18:10:17人に教えるプログラムにXORはやめてほしい
0006デフォルトの名無しさん
2007/01/13(土) 18:12:38[2] 問題文(含コード&リンク):
課題1のプログラムに、さらに、検索キーとして年齢を入力し、
入力と一致した場合、そのデータの直後に新しい要素を挿入するプログラム
を追加する。
また、検索キーとして、名前を入力し入力と一致した場合、
そのデータを削除するプログラムを作成する。
[3] 環境
[3.1] OS: (Windows/Linux/等々) WinXP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) BorlandC++5.5
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)次の月曜日
00076
2007/01/13(土) 18:16:01#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef struct {
char *name;
int age;
} Card;
typedef struct _tree{
Card card;
struct _tree *next;
struct _tree *prev;
} Tree;
Card meibo[] = {{ "Takahashi", 14 },{ "Kobayashi", 15 },{ "Hosokawa", 17 },
{ "Sugimoto", 18 },{ "Sawai", 19 },{ "Itou", 20 },{ "Kawai", 22 },{ "Ishikura", 24 },
{ "Oda", 25 },{ "Nakamura", 28 },};
int main(void) {
Tree* root = NULL;
Tree* p;
Tree* a;
int i, k;
int n = sizeof(meibo)/sizeof(meibo[0]);
int age;int head, tail, mid;
00086
2007/01/13(土) 18:16:38p=(Tree*)malloc(sizeof(Tree));
p->card = meibo[i];
p->next = root;
if(root != NULL){
root->prev = p ;
}
else{a = p;}
root = p;
}
p = root;
while (p != NULL){
printf("%20s %d\n", p->card.name, p->card.age);
p = p->next;
}
printf("---------------------------\n");
p = a;
while (p != NULL){
printf("%20s %d\n", p->card.name, p->card.age);
p = p->prev;
}
return 0;
}
0009デフォルトの名無しさん
2007/01/13(土) 19:28:12http://www.geocities.jp/c_cpp_cs/code/code.html
0010デフォルトの名無しさん
2007/01/13(土) 19:29:490011デフォルトの名無しさん
2007/01/13(土) 19:31:07[2] 問題文(含コード&リンク): ファイルを読み込み、英字のみか、先頭が
英字で二文字目以降が英字または数字である
文字列を出力するプログラムを作りなさい。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: mingw
[3.3] 言語:C++
[4] 期限: 1/17
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
よろしくお願いします
0012デフォルトの名無しさん
2007/01/13(土) 19:39:39#include <iostream>
#include <cctype>
using namespace std;
int main()
{
for (int c = cin.get(); cin.good(); c = cin.get()) {
if (isalpha(c)) {
cout.put(c);
for (c = cin.get(); cin.good() && isalnum(c); c = cin.get())
cout.put(c);
if (cin.good()) cin.unget();
cout.put('\n');
}
}
return 0;
}
0013前スレ972
2007/01/13(土) 19:40:31コンパイラの未定義処理とか初めて知ったよ
教えてくれてありがとう。
>>5
並列処理にするとどちらの処理が先に終わるかによって結果がかわるから
並列処理不可能なのか。それも知らなかった。
0014デフォルトの名無しさん
2007/01/13(土) 19:47:10[2] 問題文(含コード&リンク): テキストファイルを読み込み、文字列を配列に代入せよ
[3] 環境
[3.1] OS:Windowsxp
[3.2] コンパイラ名とバージョン:.NET ver1.1
[3.3] 言語: C
[4] 期限: 2007年1月14日
[5] その他の制限:ファイルポインタ程度まで習っていますよろしく願いします
0015デフォルトの名無しさん
2007/01/13(土) 19:53:03int main(int ac, char **av)
{
int c;
char a[1];
if (ac > 1 && freopen(av[1], "r", stdin) == NULL) {
perror(av[1]);
return 1;
}
if ((c = getchar()) != EOF)
a[0] = (char)c;
return 0;
}
0016デフォルトの名無しさん
2007/01/13(土) 19:56:56ありがとうございます
ただそのあとソートしたいので配列一つ一つに一文字ずつアルファベットを入れたいんです
注文多くてすみません
0017デフォルトの名無しさん
2007/01/13(土) 19:58:00>>1
>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0018デフォルトの名無しさん
2007/01/13(土) 19:59:460019デフォルトの名無しさん
2007/01/13(土) 20:01:04テンプレしっかり読まずに書きこんでしまい申し訳ありません
ありがとうございました
0020デフォルトの名無しさん
2007/01/13(土) 20:41:55そのサイトの管理者さん?
そういう独自形式でソースを圧縮すると、そのサイトがつぶれた時に解読できなくなって
情報価値がなくなるから止めれ。どうしてもやるならせめてgzipヘッダか何か付けてくれ。
他の皆さんも >9 は使わないようにお願いします。
0021デフォルトの名無しさん
2007/01/13(土) 20:45:27TS8obJaHp6V0v4/osaPwuMaRc/qzHXrtFawuIjmodPjdHWZlPyvWASCk5zZrySbko79L6Y0mMKCHxSB
/8zz8hEuKdose4Ggkxb9Jpky0sCqdERgycTomZVlemWz68Fpu49BMX/zPYipDSrxYTCizQV9qT+/Nas
xShdJxNzX3i1tow2zvcP6CJaAyNr4giH1pdRcS5jSndsbS73SpWV3aTm2C7hjK93R2PeCnyL8r2Ue3o
udY5cfwdR24m/WBjh1DOLw==
0022デフォルトの名無しさん
2007/01/13(土) 20:47:37TS8obJaHp6V0v4/osaPwuMaRc/qzHXrtFawuIjmodPjdHWZlPyvWASCk5zZrySbko79L6Y0mMKCHxSB
/8zz8hEuKdose4Ggkxb9Jpky0sCqdERgycTomZVlemWz68Fpu49BMX/zPYipDSrxYTCizQV9qT+/Nas
xShdJxNzX3i1tow2zvcP6CJaAyNr4giH1pdRcS5jSndsbS73SpWV3aTm2C7hjK93R2PeCnyL8r2Ue3o
udY5cfwdR24m/WBjh1DOLw==?
0023デフォルトの名無しさん
2007/01/13(土) 20:48:120024デフォルトの名無しさん
2007/01/13(土) 20:48:37普通にうpロダ使えって。まぁそういうとトーマスはファイル化するのが
面倒くせぇだの言うが、嫌なら答えなくて良いから
0025デフォルトの名無しさん
2007/01/13(土) 21:00:27ついでになんか注意書きをつけてくれると嬉しい
0026デフォルトの名無しさん
2007/01/13(土) 21:00:37少なくとも携帯端末やコンソールなどのあまり強くない
環境から見るのにはとても不向きだし、プログラムで処理を
かけるのにも不向き。
0027デフォルトの名無しさん
2007/01/13(土) 21:03:539 で変換してうpする位なら、そのままうpした方がいいのでは。
0028デフォルトの名無しさん
2007/01/13(土) 21:08:08うpロダ使え、以上。
0029デフォルトの名無しさん
2007/01/13(土) 21:14:41今世紀最大の釣り
0031デフォルトの名無しさん
2007/01/13(土) 21:25:08マジレスですか?
0032デフォルトの名無しさん
2007/01/13(土) 21:25:550033デフォルトの名無しさん
2007/01/13(土) 21:27:59> そのサイトがつぶれた時に解読できなくなって
情報失われるのはロダ使っても全く同じじゃね?
0034デフォルトの名無しさん
2007/01/13(土) 21:28:40うpしたほうがいいと思われ
0035デフォルトの名無しさん
2007/01/13(土) 21:31:05仮に手元に圧縮されたコードがあってそれを解読するのに
独自形式じゃ解読困難または不可能って事だろ
そういう意味でgzipっていってるんじゃないのか?
まあどちらにしろソース圧縮の意味を見出せないけどな俺は
0036デフォルトの名無しさん
2007/01/13(土) 21:33:150037デフォルトの名無しさん
2007/01/13(土) 21:35:200038デフォルトの名無しさん
2007/01/13(土) 21:36:11JavaScriptだからフツーにそのページから落とせるけどな。
そのサイトのオーナが書いたコードではなく、元は
ttp://www.onicos.com/staff/iz/amuse/javascript/expert/
みたいよ。
zlibの圧縮解凍アルゴリズムと基本的には同じっぽいが、
gzipヘッダをつけてなかったりと、要するに互換性が無いようだ。
0039デフォルトの名無しさん
2007/01/13(土) 21:36:44ってだけでしょ。それでも使うなら文句は言わんよ。
0040デフォルトの名無しさん
2007/01/13(土) 21:37:020041デフォルトの名無しさん
2007/01/13(土) 21:38:200042デフォルトの名無しさん
2007/01/13(土) 21:38:25gzip -c foo.c | base64
したのならおk?
0043デフォルトの名無しさん
2007/01/13(土) 21:40:220044デフォルトの名無しさん
2007/01/13(土) 21:41:520045デフォルトの名無しさん
2007/01/13(土) 21:42:04004620
2007/01/13(土) 21:42:25個人的には、アルゴリズム公開と言ったレベルではなく、
解凍プログラムが普及してる位のレベルを望みたい。
>>42
漏れ的には許容範囲だけど、>26 あたりの意見も酌んでほしい。
0047デフォルトの名無しさん
2007/01/13(土) 21:42:560048デフォルトの名無しさん
2007/01/13(土) 21:44:11もう一度レス読み直したら俺もなんだか可笑しくなってきたwwww
0049デフォルトの名無しさん
2007/01/13(土) 21:44:500050デフォルトの名無しさん
2007/01/13(土) 22:00:350051デフォルトの名無しさん
2007/01/13(土) 22:54:46[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
下記の二分木探索の非再帰版を書きなさい。(再帰版は K&R に乗っているコード)
ttp://users.kyoto-kcg.ac.jp/~k-konishi/Program/CProgram/section6-5.htm
[3] 環境
[3.1] OS: (Windows/Linux/等々) ALL
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) ALL
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
2007年01月15日23:59まで 以降、ペナルティ
[5] その他の制限:
0052869 ◆xkG5F/RZlA
2007/01/13(土) 23:27:54[2] 問題文(含コード&リンク):
・9×9の数独の問題を表示させ、マウスとキーボードを使い解答する。
・解答後に、誤っている部分(数字)を強調させる。
・全て正解の場合は、その旨を表示させる。
・解答時間を計測できるようにし、ランキング表示可能にする。
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: Borland C++ 5.02
[3.3] 言語: C言語
[4] 期限: 2007/01/15
[5] その他の制限:
担任は、GUIを使うと楽だよ。
とか言ってました。
GUIに関しては、必要なのでしょうか?
必要なければ、使わなくても大丈夫だと思います。
よろしくお願いします。
0053デフォルトの名無しさん
2007/01/13(土) 23:29:56>GUIに関しては、必要なのでしょうか?
GUIを使わずに、どうやって
>マウスとキーボードを使い
という条件を満たすつもりなの?
0054デフォルトの名無しさん
2007/01/13(土) 23:37:020055デフォルトの名無しさん
2007/01/14(日) 00:27:01[2] 点データから,凸包の辺を求める効率の良いプログラムを作成せよ
[3] 環境
[3.1] OS: Windows Xp
[3.2] gcc 3.4
[3.3] C
[4] 期限: 1月19日(金曜日)
0056デフォルトの名無しさん
2007/01/14(日) 00:33:15[2] ソートプログラムのうち次を作成せよ
その上で、速度を測定し、どのような違いがあるか述べよ
・バブルソート
・クイックソート
[3] 環境
[3.1] OS: MACOS
[3.2] gcc
[3.3] C
[4] 期限: 1月15日
[5] その他の制限:
バブルソートはできましたが
クイックソートがうまく動かず断念しました。
よろしければ、作成時に再帰に関して、コメントを付けていただければ幸いです。
速度はn^2とn log nですよね。
間違っていたら、これも教えていただけると助かります。
0057デフォルトの名無しさん
2007/01/14(日) 01:11:29[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3378.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] 期限:2007/01/14 20:00
[5] その他の制限:特になし
よろしくお願いいたします。
0058デフォルトの名無しさん
2007/01/14(日) 01:14:21できたバブルソートってのを見せてくれるとうれしい
0059デフォルトの名無しさん
2007/01/14(日) 01:25:18[2] 問題文
(1) (2) (3) (4) (5)
A1 10 45 30 10 10
A2 20 15 10 20 18
A3 30 25 30 40 15
A4 18 15 30 10 18
(1)〜(n)のタスクと、A1〜Amの人がいます。
例えば、4人いて、タスクが5つあるとき、(1)〜(5)を実行するのにかかるコストが
上の表の通り与えられています。
そして、それぞれの人は、1つだけタスクを担当することができます。
但し、タスクが人の数より少ない場合は、タスクが与えられない人がいても構いません。
また、人の数がタスクの数より少ない場合は、余ったタスクがあっても構いません。
ただし、できるだけ多くの仕事をこなさなければなりません。
(この場合はタスクが5つ、仕事4つなので、A〜D全員が受け持たなければならない。)
このとき、コストを最小にする選択を見つけるようなプログラムを書きなさい。
[3] 環境 … Visual C++ (Visual Studio2005 Express Edition)
[4] 期限 … 2007/01/15 00:00
[5] STL使用禁止だそうです。
------------------------------------------------------------
効率のよいアルゴリズムを教えていただけないでしょうか。
よろしくお願いします。
0060デフォルトの名無しさん
2007/01/14(日) 02:06:37> 効率のよいアルゴリズムを教えていただけないでしょうか。
コストが超増加性をもつなら話は別かもしれないけど
準NPにこの発言は鬼門
というわけで総当りが妥当
0061デフォルトの名無しさん
2007/01/14(日) 02:42:29なんか少し前にも似たようなセリフ聞いたなあ。
0062869 ◆xkG5F/RZlA
2007/01/14(日) 02:47:32問題文にGUIの記載が無かったので、必要ないのかも?と思いました。
どのように、マウスとキーボードを使うのかが分からず、困っています。
0063デフォルトの名無しさん
2007/01/14(日) 04:00:38[2] 問題文(含コード&リンク):
入力される整数をカンマ編集した文字列に変換する
char edit[15];
int n;
scanf("%d", &n);
:
:カンマ編集処理
:
puts(edit);
(例)
入力が1234なら1,234
入力が-1234567890なら-1,234,567,890
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2007年1月19日まで]
[5] その他の制限:
基本的な事しか習ってません。
できる限り簡単な(初級者でもわかりやすい)ものでお願いします。
0064デフォルトの名無しさん
2007/01/14(日) 04:13:37[2] 問題文(含コード&リンク):
・データファイル(in.dat)から全体の人数、英語、数学、理科の3教科の得点を読み込む。
・各自の3科目合計点を求める。
・全体の合計、平均を英語、数学、理科、合計点について求める。
・3科目および合計点について標準偏差を求めよ。
・各自の3科目および合計について標準偏差を計算せよ。
・結果をファイル(out.dat)に保存せよ。
・データは50人分以上作成すること。
・出力結果に入れるもの
・各自の英数理合計の得点および偏差値
・全体の英数理合計の平均点および標準偏差
・全体の人数
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
[3.3] 言語: C++
[4] 期限: 可能なら、1/15 00:00 まで(過ぎてもいいです
[5] その他の制限:入出力データファイルはdat形式のみ
入力用データファイルは
50人 (全体の人数として
50 50 50 (各教科の点数 横:科目 縦:人数
51 51 51
・
・
・
100 100 100
という内容で作ってあります(これすらも正しく作れてるか分からないので、不備があれば指摘してください)
長文で申し訳ないですが、どう手をつければいいかすら分からないので、どうかよろしくお願いします
0065デフォルトの名無しさん
2007/01/14(日) 05:27:43n = n.gsub(/(\d)(?=\d{3}+$)/, '\\1,')
p n
0066デフォルトの名無しさん
2007/01/14(日) 07:30:00それは「割り当て問題」と呼ばれることもある有名最適化問題。
(普通割り当て問題というと n = m のことが多いけれど)
基本的な解法は、人を左側、タスクを右側に置き、各人と各タスクの間に
コストを重みとする辺を張って二部グラフを構成する。
そして二部グラフの最小重みマッチングを解けば解が求まる。
二部グラフの最小重みマッチングは最小費用流問題に帰着でき、
最小費用流問題は多項式時間で解けるので、多項式時間で解ける。
>>60
授業単元だけ読んで回答するのは止めようぜ。
0067デフォルトの名無しさん
2007/01/14(日) 07:37:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3381.txt
>>63
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3382.c
0068デフォルトの名無しさん
2007/01/14(日) 08:44:56カーナビソフトみたいで面白かったが、仕様理解能力の欠如で頓挫m(_ _)m
イメージ的には最大五差路の交差点を繋いでいくような感じだが
ノードの動的な発生がいつなのか掴めなかった
新らしい交差点の生成時にノードをメモリ上に作るのか?
交差点は既に在って名前(key)を付けていくだけなのか?
そもそも初期化部で最大ノード数分確保してしまうのは動的? ってな感じに始まり
root-key�@-key�A-key�B-・・・・とやっていくとノード毎に必ずlinkが2発生するが
このときはリンクを作らず番号振りだけ?
randで無作為に選択した2ノードのリンク張る場合に初めてリンクが発生するのか?
ノードのメモリ開放部分がcallされないが、作り込み部分はある
どこぞで関数内で自前で呼べってことか???? といった具合
再帰の形にすればかなりスッキリするがスタックは意識しなくていい????
先輩方諸氏に任せたm(_ _)m
0069デフォルトの名無しさん
2007/01/14(日) 09:31:47[2] 問題文:AのテストとBのテストそれぞれ5人分の点数を入力し、AとBそれぞれの
合計、平均、最高得点者とその番号、最低得点者とその番号を出力せよ
[3] 環境
[3.1] OS: XP home
[3.2] コンパイラ名とバージョン:djgpp
[3.3] 言語: C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: if,while,for.乱数,配列まで習ってます
最低得点者の出し方と番号の出し方がわからず挫折しましたorz
どうかよろしくお願いします
007051
2007/01/14(日) 10:24:13ありがとうございます。
厚手がましいですが
void treeprint(struct tnode *p) の右側のツリーを表示する、
非再帰版のコードをお願いできないでしょうか?
void treeprint(struct tnode *p)
{
if( p != NULL){
treeprint(p->left);
printf("%4d %s\n", p->count, p-> word);
treeprint(p->right);
}
}
>>51で提示したページの再帰版コードのtreeprint()はleftしかなかった・・・
007151
2007/01/14(日) 10:26:48×右側のツリー"を"表示する
○右側のツリー"も"表示する
すみませんがよろしくお願いします。
0072デフォルトの名無しさん
2007/01/14(日) 12:05:17ソース見てないが、最低値の初期値が間違ってるだけと思われ
limits.hをインクルードして
a_min=INT_MAX;
b_min=INT_MAX;
と初期化すれば良いだけと思う
一応書いてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3383.txt
0073デフォルトの名無しさん
2007/01/14(日) 12:08:13[2] 問題文(含コード&リンク):
構造体とポインタを用いてスタックを実現せよ。ただし、スタックが保持するデータは整数とする。
プログラムはキーボードから入力された文字により以下のように動作する。
i : スタックにデータの挿入(PUSH)。
d : スタックの先頭データを削除(POP)。スタックが空ならその旨を表示。
p : スタックにあるデータを先頭から順に表示。
q : 終了。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: LSI C-86
[3.3] 言語: C
[4] 期限: 2007年1月15日まで
[5] その他の制限: 特になし
試しに色々作ってみたんですが、なんかどれも思い通りに動いてくれなくて困ってます。
途中まで作ったやつをうpしておくので、こちらの意図を汲み取っていただければ幸いです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3384.txt
007469
2007/01/14(日) 12:21:55わざわざ書いてくださって
ありがとうございます
でも、授業では本当に基本的にな事しか習っていないので
limits.hとか難しいのを使わずに
出来る方法はありますか・・・?
ここまでは一応書けました・・・
ttp://up.spawn.jp/file/up65616.txt
0075デフォルトの名無しさん
2007/01/14(日) 12:38:57何点満点かワカランが100点満点だとすると
kokugo_saitei=0;
sugaku_saikou=0;
を
kokugo_saitei=100;
sugaku_saikou=100;
としておけばINT_MAXでなくていい
0076デフォルトの名無しさん
2007/01/14(日) 12:39:49ごめ
sugaku_saikouではなくてsugaku_saiteiな
007769
2007/01/14(日) 12:45:21わかりにくい変数でもうしわけないですorz
えっと、問題文を読む限りだと点数の上限が書かれていないのですが、
そういう場合だと、どのようにすればよろしいんでしょうか・・?
0078デフォルトの名無しさん
2007/01/14(日) 12:46:29おれも判らなかったからINT_MAXにしたw
0079デフォルトの名無しさん
2007/01/14(日) 12:49:230080デフォルトの名無しさん
2007/01/14(日) 12:51:16最初の人の点数でもいれとけばOKっぽい
0081デフォルトの名無しさん
2007/01/14(日) 12:52:15課題1ってどこ?
0084デフォルトの名無しさん
2007/01/14(日) 12:56:35>>79
0085デフォルトの名無しさん
2007/01/14(日) 12:58:58いぁいぁfor文の中で最初に入力されたときのみにsaiteiに値を入れる
メンドイから直ししてUPする しばし待たれよ
0087デフォルトの名無しさん
2007/01/14(日) 13:20:21おまたせ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3385.txt
0088デフォルトの名無しさん
2007/01/14(日) 13:24:49>>6-8
ですorz
0090デフォルトの名無しさん
2007/01/14(日) 14:06:50[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3386.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし
よろしくお願いします
0091デフォルトの名無しさん
2007/01/14(日) 14:10:46うちの身内かもしれないwwwwwwww
研修?
009251
2007/01/14(日) 14:45:38再質問時に元質問と情報が断片化してしまったので再度整理します。
回答は、すでに>>67様がお答え下さり感謝しております。
私のミスで元の問題に不手際がありました。
念のため、参照先させて頂いたページが悪いとは言っていません。
作者の意図でオリジナルとは違うもの(学習用に穴埋め)となっていました。
-----再度---------------------------------------------------------
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
下記の二分木探索の非再帰版を書きなさい。(再帰版は K&R に乗っているコード)
【訂正】ttp://stuff.mit.edu/iap/c/week2_day1/tree.c
【訂正】この二分木のtreeprint()の非再帰版を記述せよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) ALL
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) ALL
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
2007年01月15日23:59まで 以降、ペナルティ
[5] その他の制限:
お手数おかけしますがよろしくお願いします。
0093デフォルトの名無しさん
2007/01/14(日) 14:48:25#include <stdio.h>
#include <ctype.h>
int main()
{
int c;
while ((c = getchar()) != EOF) {
if (isalpha(c)) {
putchar(toupper(c));
while ((c = getchar()) != EOF && isalpha(c))
putchar(c);
ungetc(c, stdin);
} else {
putchar(c);
}
}
return 0;
}
0094デフォルトの名無しさん
2007/01/14(日) 15:02:10>4.宣言した変数名にコメントを書く。(意味がわかる名前を付けよう) (3点)
なのか。
変数一個しか使ってないし、こんなのにコメントつけてもマヌケなだけだが。
int c; /* getchar()の戻り値(入力された文字またはEOF)を格納する。 */
とでもしてくれ。
0096デフォルトの名無しさん
2007/01/14(日) 15:11:22よくわからんが treeprint だけ答えればいいのか?
#define MAXSIZE 1000
void treeprint(struct tnode *p)
{
int top = 0;
struct tnode *stack[MAXSIZE];
stack[top++] = p;
while (top > 0) {
p = stack[--top];
if (!p) continue;
if (p->count > 0) {
stack[top++] = p->left;
p->count *= -1;
stack[top++] = p;
} else {
p->count *= -1;
printf("%4d %s\n", p->count, p->word);
stack[top++] = p->right;
}
}
}
009751
2007/01/14(日) 15:19:33どうもありがとうございます!
たどってきたノードをスタックに記憶すればOKですね。
難しく考えてました。
参考にさせていただきます。
0098デフォルトの名無しさん
2007/01/14(日) 15:22:51>7-8でアヤシイとこがある
Crad構造体のnameがポインタ宣言になっていて実体は初期化時にはとられるが
初期化以外ではアドレス格納エリアしかないが?挿入時には別メモリを確保するのか?
メンドイから20Byte在るものして書いた char *name; ⇒ char name[20];
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3387.c
0099デフォルトの名無しさん
2007/01/14(日) 15:24:15複雑杉。
こっちのほうが簡単。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int c, pc = 0;
while ((c = getchar()) != EOF) {
if (! isalpha(pc))
c = toupper(c);
putchar(c);
pc = c;
}
return 0;
}
010051
2007/01/14(日) 15:28:22たびたびすみません。
お答えを頂いておきながら恐縮ですが
p->countを比較する理由がよくわかりません。
どういう順番で表示されるのでしょうか?
制限があるPCなので試せないのでスミマセン。
0101デフォルトの名無しさん
2007/01/14(日) 15:37:50もとの再帰のプログラムを見れば分かるが、再帰中の
頂点 p の状態には以下の二つが存在する:
1. 次に左側頂点を見る
2. 次に右側頂点を見る
スタックを用いてループ展開をするには、いまどちらの
状態にあるのかを管理しないといけない。そこでこの情報を
count の正負をフラグとして用いて覚えている。
0102デフォルトの名無しさん
2007/01/14(日) 16:01:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3388.txt
0103デフォルトの名無しさん
2007/01/14(日) 16:40:543つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□派遣先の社員の意見にはたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われている
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異や問題を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
010473
2007/01/14(日) 16:42:44ありがとうございます!
自分で考えていたものよりもはるかにコンパクトで、無駄がないって感じですごいです。
「先頭から表示」っていうのがこちらの意図したものと逆になっていたので、自分で修正してみます。
精進します。ありがとうございました。
0105デフォルトの名無しさん
2007/01/14(日) 16:54:47[2] 問題文:試験でのN人分の成績を読み込んで、平均点、最高点、最低点を出力しなさい。
また、100点満点で60点以上を合格とし、合格者数と不合格者数を表示しなさい。
[3] 環境
[3.1] OS: XP home
[3.2] コンパイラ名:gcc
[3.3] 言語:c言語
[4] 期限: 本日中で是非よろしくおねがいします。
0106デフォルトの名無しさん
2007/01/14(日) 16:59:25[2] 問題文: データを読み込んで最小値と中心値をもとめる問題です
「データを格納する配列をつくり、forループを使い、fscanf関数でデータを順次読み込んでいく。
その後y軸データについて順次解析を行う。最小値を求めるには、最小値を入れる変数を宣言しておき、
これに十分大きい数を代入して、順次データと比較、データが小さい場合はそのデータを最小値の
変数に代入する。これを全ての変数で行う。」
データの構造は、最初にx軸、次にy軸に対応するデータ(2500個)が入ってる→http://www.uploda.org/uporg653775.dat.html
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: 分かりません・・
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:
・for(i=0; i<2501; i++) {
fscanf(fp, "%lf%lf", &num1[i], &num2[i])
} というのを使うのですがどう使ったらいいか、num1[]num2[]をどう定義したらいいか
・配列をx軸のデータとy軸のデータをどう区別して格納するのか
・積分に関してはまったくわかりません、よろしくお願いします。
0107デフォルトの名無しさん
2007/01/14(日) 17:05:21[2] 問題文(含コード&リンク): 自動販売機のプログラム
アルゴリズムから自動販売機の一連の流れを見て、
プログラムせよ・・・だとか・・・。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:わかりません・・・
[3.3] 言語: C
[4] 期限: 1月末まで
[5] その他の制限: ある程度までは制限していいらしいけど、何をどう制限していいのやら・・・
ずっと考えてるのですが全然わからないです・・・。
全体的にわかっていないので、どなたかご教授お願いしします・・・
0108デフォルトの名無しさん
2007/01/14(日) 17:06:470109デフォルトの名無しさん
2007/01/14(日) 17:49:54こんなんでいいのか?w
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3389.txt
ちなみに硬貨種別や貨幣の判断とか
ある程度時間たったら自動的に釣り銭排出とか
そういうの一切やってないぞ。
0110デフォルトの名無しさん
2007/01/14(日) 18:08:130111デフォルトの名無しさん
2007/01/14(日) 18:26:02漏れには問題が理解できないから訂正だけ・・・
for(i=0; i<2500; i++) {
fscanf(fp, "%lf%lf", &num1[i], &num2[i]);
}
0112デフォルトの名無しさん
2007/01/14(日) 18:31:12[2] 問題文(含コード&リンク):
文字列 s が与えられる。s の中に含まれる二回以上出現する
部分文字列の中で最長のものを効率よく求めよ。ただし同じ長さの
ものが複数ある場合は、どれかひとつだけ求めればよい。
例: s = "abaaabadcabacaabaaacb" --> "abaaa"
[3] 環境
[3.1,3.2] OS, コンパイラ: 問わず
[3.3] 言語: どちらでも可
[4] 期限: 1月16日程度
[5] その他の制限: 特になし
0113112
2007/01/14(日) 18:34:35s = "aaaaa" ならば "aaaa" が解となる。
0114デフォルトの名無しさん
2007/01/14(日) 19:04:53>効率よく
ここをもちっと具体的に・・・
0115デフォルトの名無しさん
2007/01/14(日) 19:08:34[2] 問題文(含コード&リンク):
tanx-20x+5をニュートン法で解くプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] bcc
[3.3] C言語
[4] 期限: 10月30日の12時まで
[5] その他の制限: 特に無し。
お願いします
0116112
2007/01/14(日) 19:17:19もっともナイーブな解法はすべての部分文字列を生成してチェック
することですが、これは O(n^3) かかります。そこで、これよりも計算量が
小さい解法をとりあえず「効率のよい」と言っています。
0117デフォルトの名無しさん
2007/01/14(日) 19:34:51とりあえずKMP法でやってみた。
#include<string>
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
std::vector<int> makeIndex(const std::string& s ){
const char*str = s.c_str();
std::vector<int> index(s.size()+1);
int txt = 1 , pat = 0;
while(txt < index.size()){
if(str[txt] == str[pat]) index[++txt] = ++pat;
else if(pat != 0)pat = index[pat];
else index[++txt] = 0;
}
return index;
}
int main(){
std::string line;
std::getline(std::cin,line);
std::vector<int> index(makeIndex(line.c_str()));
std::vector<int>::iterator it(std::max_element(index.begin(),index.end()));
std::cout << line.substr(it-index.begin() - *it,*it) << std::endl;
}
0118デフォルトの名無しさん
2007/01/14(日) 19:37:260119デフォルトの名無しさん
2007/01/14(日) 19:45:28成績の読み込み方はファイルかキーボードか、
形式はどんな形か
0120デフォルトの名無しさん
2007/01/14(日) 19:52:57よくわからないのですが、
点数を一人ぶんずつ打ち込んで行って、
最後に適当な数を打ち込めばfor文とかのループが終わって
結果が出力されるような形式を想像してるのですが、、、
言ってる事わかるでしょうか?^^;
意味不明だったらすみません。
0121デフォルトの名無しさん
2007/01/14(日) 19:53:41入力に bddebbcbba を食わせると invalid memory reference で落ちた
わけのわからないところにある c_str() を外したら b とだけ表示された
0122デフォルトの名無しさん
2007/01/14(日) 19:57:13>index[++txt]
配列に++って言語仕様的にまずいと思うんだが
0123デフォルトの名無しさん
2007/01/14(日) 20:00:000124デフォルトの名無しさん
2007/01/14(日) 20:22:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3392.txt
0126124
2007/01/14(日) 20:35:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3393.txt
適当な数ってのが今理解できた
0127デフォルトの名無しさん
2007/01/14(日) 20:47:56ありがとうございます!!
すごくわかりやすいです!
助かりました^^!
0128デフォルトの名無しさん
2007/01/14(日) 20:51:23それがまずいのはindex[++txt] = txt; みたいな副作用完了点内に
インクリメント/デクリメントを付けた変数とそうでない変数が混在
している場合。普通に考えたら不定となりそうだが、実際は未定義
とされており、つまり鼻から悪魔。
0129デフォルトの名無しさん
2007/01/14(日) 20:54:28index[++txt] = --txt; のようなのも未定義だから、副作用完了点内に
インクリメント/デクリメントを付けた変数が一つでもあれば、それ以外に
同一の変数があった場合は未定義となる、か。
0130デフォルトの名無しさん
2007/01/14(日) 20:55:52[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3394.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし
よろしくお願いします
0131デフォルトの名無しさん
2007/01/14(日) 20:57:02ループの後ろにif(n == 0) return 1;
とか入れておかないといきなり-1とか入力したときエラーになるな orz
0132デフォルトの名無しさん
2007/01/14(日) 21:02:22>それがまずいのはindex[++txt] = txt; みたいな副作用完了点内に
ま、どうでもいいんだけどさ。
「点内」って言葉に疑問を持った事はないかい?
0133デフォルトの名無しさん
2007/01/14(日) 21:07:16いらっしゃいませ〜こんにちわ〜
0134デフォルトの名無しさん
2007/01/14(日) 21:07:53まあ確かに日本語がおかしいな。
0135デフォルトの名無しさん
2007/01/14(日) 21:14:08あっ なるほど
丁寧にありがとうございます!
0137デフォルトの名無しさん
2007/01/14(日) 21:37:27O(n^2*log(n))だけど,少し粗っぽい感じもする.もっと賢い方法があるかもしれない.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int my_strcmp(const void *l, const void *r)
{ return strcmp(*(char **)l, *(char **)r); } /* キモい */
int main(int argc, char *argv[]) {
int i, j, maxi = -1, maxj = 0;
int len = strlen(argv[1]);
char **heads = malloc(len * sizeof(char *));
for (i=0; i<len; i++) heads[i] = &argv[1][i];
qsort (heads, len, sizeof(char *), my_strcmp);
for (i=0; i<len-1; i++) {
j = 0; while (heads[i][j] == heads[i+1][j]) j++;
if (j > maxj) { maxi = i; maxj = j; } }
if (maxi>=0)
{ heads[maxi][maxj] = '\0'; printf("%s\n", heads[maxi]); } }
01383
2007/01/14(日) 21:40:45問題の補足として出されたのですが、
(1)ノードをNmax個生成する
(2)No(<<Nmax)のノードに対して、kNo本のリンクをランダムに張る
(3)残りのNmax−No個のノードそれぞれに対してk本ずつのリンクを張る。
このとき、どのノードとリンクを張るかは、ノードnが有するリンク数L(n)
に応じた確率によるものとする。すなわち、ある未リンクノードが、
ノードnとリンクされる確率は
L(n)/(�@=1〜Nmax)L(i)である
(4)全てのノードに対して(3)の処理を繰り返す。
No=10、Nmax=10000、k=5とした時、各ノードのリンク数に応じてソートする。
という事らしいです。いかがでしょうか?
必修科目でこれ落とすと留年もありえるので、何とかお願いしますm(_ _)m
途中までのでも、続きは自分で考えますのでアップして頂けると嬉しいです。
013963
2007/01/14(日) 22:57:13作成していただきたい内容は完璧で、正常に動きました。
しかし、私の説明不足ですが、ポインタはまだ習っていないのです・・・。
ですから、もしよろしければポインタを使わないやり方でお願いできないでしょうか?
よろしくお願いします。
0140デフォルトの名無しさん
2007/01/14(日) 22:57:33ループを回す順番を工夫するだけでO(n^2)にはなる。
int solve(const char *chs, int len, int *r_begin, int *r_len)
{
int i, gap, max_begin, max_len = 0;
for(gap = 1; gap < len; gap++)
{
int begin, matching = 0;
for(i = 0; i < len - gap; i++)
if(chs[i] == chs[i + gap])
{
if(!matching)
{
begin = i;
matching = 1;
if(i - begin + 1 > max_len)
{
max_begin = begin;
max_len = i - begin + 1;
}
}
else
matching = 0;
}
if(!max_len) return 0;
*r_begin = max_begin;
*r_len = max_len;
return 1;
}
# include <stdio.h>
int main(void) { int a, b; char m[] = "bddebbcbba"; solve(m, sizeof m - 1, &a, &b); printf("%.*s\n", b, m + a); return 0; }
0141デフォルトの名無しさん
2007/01/14(日) 22:57:59友達の見せてもらえよ
情報学科じゃなくて電気学科卒だけど、友達の丸写しとか
しょっちゅうだったぞ
ま、おかげで大学でなんにも身に付かなかったけどな
0142140
2007/01/14(日) 22:58:28matching = 1;
の後に
}
が要る。
0143デフォルトの名無しさん
2007/01/14(日) 23:11:09[2] 問題文
1,各ノードがint型の値と次のノードへのリンクからなる連結リストを自己参照構造体を用いて
実現したい。この連結リストに適した自己参照構造体を記せ。ただし、構造体名をnodeとすること。
2,1の問題で定義した自己参照構造体を用いて連結リストを実現したい。以下の問に答えなさい。
(a)連結リストの先頭に新しいノードを追加する関数add_topを記述せよ。
【注意】いずれも、関数を記述する問題であるが、引数の数、引数の型、return値の型などを明確に
書いていない。これらを適切に設定することも問いの一部である。
(b)データ要素を検索する(整数nを仮引数の1つとして受け取ると、連結リストの中にnを保持する
ノードがあればそのポインタを、なければNULLを返す)関数searchを記述せよ。ただし、nを保持する
ノードが複数ある場合は、それらのいずれか1つのポインタを返す。
[3] 環境
[3.1] OS: windowsXp
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 明日
どうかよろしくお願いします。
0144デフォルトの名無しさん
2007/01/14(日) 23:17:10ここは友達のいない人が丸投げするスレだから
そんなこと言ってもしょうもない
0145デフォルトの名無しさん
2007/01/14(日) 23:18:47計算量はいいはずなのに 137 のほうがだいぶ早いな
0146デフォルトの名無しさん
2007/01/14(日) 23:20:06作ったデータうpしる
0147デフォルトの名無しさん
2007/01/14(日) 23:35:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3395.cpp
137 とアルゴリズムは同じ.ただし suffix array の構成を
手を抜かずにまじめにやったので計算量は O(n log n).
ここは理論上 O(n) でできるが,俺には実装しきれん.
結構複雑なことをやっているので,多少のサイズの
問題では 137 に速度負けする.というか qsort-strcmp が
計算量に比べて早すぎる.std::sort-strcmp ではそんなこと
無いんだけど,何でだろう.
0148デフォルトの名無しさん
2007/01/15(月) 00:22:10実質的な計算量は O(kn*log(n)) (kは最長一致の長さ)で,
十分にランダムなデータではO(n*log(n))に近い.
aaa...a
みたいな同じ文字の羅列が最悪ケースで,これだと140が逆転する.
147のコードで試したけど,同じ文字の羅列だと140の結果が違ってる.
7行目の
i < len - gap
を
i <= len - gap
にすればいいのかな.
0149デフォルトの名無しさん
2007/01/15(月) 00:39:200150デフォルトの名無しさん
2007/01/15(月) 00:45:57[2] 問題文:数独を解くプログラムを作成しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 1月16日午後2時まで
[5] その他の制限: 数独の問題はファイルを用意して読み込むよりもコンパイルした
時に自分で入力するタイプにした方がいいそうです。よろしくお願いします。結構調べたのですが
ネット上にあるプログラムは難しすぎて私には理解できませんでした。
0151デフォルトの名無しさん
2007/01/15(月) 00:50:390153デフォルトの名無しさん
2007/01/15(月) 01:12:29[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3396.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし
よろしくお願いします
0155デフォルトの名無しさん
2007/01/15(月) 02:30:58[2] 問題文(含コード&リンク):
整数専用の足し算電卓です。
=が入力されたら計算を終了し、結果を表示します。
記号は半角で入力してください
整数値を入力してください
+か=を入力してください
(反復)
合計は○○です
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ名とバージョン: BorlandC++5.5
[3.3] 言語: C
[4] 期限:なるべく早めにお願いします
[5] その他の制限:while文と文字列を使ってお願いします
わからなくなってしまったんでどうかよろしくお願いします
0156デフォルトの名無しさん
2007/01/15(月) 03:45:01#include <stdio.h>
int main() {
int sum = 0, n, c;
while(1) {
if(scanf("%d", &n)) sum += n;
else if((c = getchar()) == '=') break;
else if(c != '+') abort();
}
printf(" %d\n", sum);
return 0;
}
0157デフォルトの名無しさん
2007/01/15(月) 05:24:16[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3397.txt
[3] 環境
[3.1] OS: windowsXP
[3.2] VC++6.0
[3.3] どちらでも可
[4] 期限:2007/1/16
[5] その他の制限: ポインタ・構造体辺りまで学習しました。stdio.hも利用可です
よろしくおねがいします。
0158デフォルトの名無しさん
2007/01/15(月) 09:11:270159デフォルトの名無しさん
2007/01/15(月) 09:11:51cin >> ninzuu;
を
ninzuu = getint(cin, cout);
におきかえる。
同様に、
cin >> str[count].name;
などを、
getstring(cin, cout, str[count].name, sizeof(str[count].name));
などに置き換えるか、
そもそもchar[]ではなくstringにしてしまう。
getint(), getstring()の実装は↓参照。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3399.txt
0160デフォルトの名無しさん
2007/01/15(月) 12:54:01[2] 問題文(含コード&リンク):
ある先生が、 開講していたとき、次週も開講する確立は70%
休講していたとき、次週も休講する確立が10%
長期的に見て、この先生が開講している確立は何%か、
モンテカルロ法で求めるプログラムを作成しなさい。
また、解析的に求めた値と比較しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 01月17日(水)
[5] その他の制限:得になし
0161助けてください
2007/01/15(月) 13:14:160162デフォルトの名無しさん
2007/01/15(月) 13:23:10#include <stdio.h>
const int max = 1000000;
int teacher(void)/* 開講: 1, 休講: 0 */
{
static int st = 1;
if (st == 0 && rand() % 10 != 0)
st = 1;
if (st == 1 && rand() % 10 < 3)
st = 0;
return st;
}
int main(int argc, char* argv[])
{
int i, count;
srand(time(NULL));
for (i = 0; i < max; i++) {
if (teacher()) { count++; }
}
printf("%d (%lf%%)¥n", count, (double)count / max * 100);
return 0;
}
0163デフォルトの名無しさん
2007/01/15(月) 13:39:09そりゃねーだろ
0164デフォルトの名無しさん
2007/01/15(月) 13:59:04説明が不足していました。 下に例を出しました
整数値を入力してください。 と表示
10 整数を入力させる。
+か=を入力してください と表示
+なら再度整数の入力
=なら終了
合計は○○です と表示
0165助けてください
2007/01/15(月) 14:39:030166デフォルトの名無しさん
2007/01/15(月) 15:01:16#include <stdio.h>
int main(void){
int n , sum = 0;
char ch;
do {
printf("整数を入力してください\n");
scanf("%d", &n);
sum += n;
printf("+か=を入力してください\n");
scanf(" %c", &ch);
if(!(ch=='+' || ch=='=')) return 1;
}while(ch=='+');
printf("合計は%dです", sum);
return 0;}
0167150
2007/01/15(月) 15:30:42誰か150をお願いします
0168デフォルトの名無しさん
2007/01/15(月) 15:54:09ありがとうございました。
理解しつつ実装していきたいと思います。
0169デフォルトの名無しさん
2007/01/15(月) 17:26:13countが初期化されていない。
関数teacher()内の二つ目のifの前にはelseが必要。
<time.h><stdlib.h>がインクルードされてない。
mainの引数は不要。
rand()%10は乱数として微妙。
0170デフォルトの名無しさん
2007/01/15(月) 18:49:30[2] 問題文(含コード&リンク): 入力された文字列を逆から表示するプログラムを作成し、
そのプログラムの特徴、性能を説明せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 1月16日
[5] その他の制限: コメントも付けていただけると助かります。
0171デフォルトの名無しさん
2007/01/15(月) 19:02:58>>151じゃダメなの?
0172デフォルトの名無しさん
2007/01/15(月) 19:34:41#include <stdio.h>
void output(void) {
int c = getchar();
if (c != EOF) {
output();
putchar(c);
}
}
int main(void) {
output();
return 0;
}
特徴:コードが短い。単純。再帰を使っている。
性能:再帰を使っているため、かなり悪い。字数は可変である。
0173デフォルトの名無しさん
2007/01/15(月) 19:53:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3400.txt
誰かがUPしてたが2chは規制で書き込めなかった模様w
0174デフォルトの名無しさん
2007/01/15(月) 21:05:54出来たらお願いします
0176869 ◆xkG5F/RZlA
2007/01/15(月) 21:31:49です。
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
・9×9の数独の問題を表示させ、マウスとキーボードを使い解答する。
・解答後に、誤っている部分(数字)を強調させる。
・全て正解の場合は、その旨を表示させる。
・解答時間を計測できるようにし、ランキング表示可能にする。
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: Borland C++ 5.02
[3.3] 言語: C言語
[4] 期限: 2007/01/18
[5] その他の制限:
期限が延期になりました。
どなたか、お願いします。
9×9のマスを表示させ、マウスとキーボードから数字を入力する部分だけでも構いませんので、よろしくお願いします。
0177デフォルトの名無しさん
2007/01/15(月) 22:03:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3402.txt
適当に直して使って。
0178デフォルトの名無しさん
2007/01/15(月) 22:34:00どうもです。
0179デフォルトの名無しさん
2007/01/15(月) 22:36:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3404.txt
>>177さんと被ったようだw
0180デフォルトの名無しさん
2007/01/15(月) 22:43:42(゚∀゚)アヒャヒャヒャヒャ
http://a-draw.com/uploader/src/up11461.png
0181デフォルトの名無しさん
2007/01/15(月) 22:45:06VCLを使ってはいけないというのはキツイ制限だな
0182デフォルトの名無しさん
2007/01/15(月) 22:51:430183デフォルトの名無しさん
2007/01/15(月) 22:58:31>>146
作ったデータファイルをうpしてくれ
0184デフォルトの名無しさん
2007/01/15(月) 22:59:47[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3406.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2007年01月17日14:00まで]
[5] その他の制限:特にありません
よろしくお願いします
0185デフォルトの名無しさん
2007/01/15(月) 23:22:56[2] 問題文(含コード&リンク):
2つのintの値をjとkに受け取り、
j≧kならj-k、j<kならk-jを
関数値として戻すintの関数big_subを書きなさい
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: BorlandC++5.5
[3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:特にありません
0186デフォルトの名無しさん
2007/01/15(月) 23:25:190187185
2007/01/15(月) 23:27:59どうもありがとうございます
0188デフォルトの名無しさん
2007/01/15(月) 23:31:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3407.c
mean[100]のところはmean[50]に直してくれ。
0189デフォルトの名無しさん
2007/01/15(月) 23:31:39作れないので聞いているのですが。
もしくはうpしろっていうのの意味が違ったらすみません。
0190869 ◆xkG5F/RZlA
2007/01/15(月) 23:32:21Visual C++のインストールが認められているので、Visual C++対応できますでしょうか?
0191869 ◆xkG5F/RZlA
2007/01/15(月) 23:33:35Visual C++のインストールが認められているので、Visual C++で対応できますでしょうか?
なにか必要なモノがあれば、随時インストールしてよいと言われています
0192デフォルトの名無しさん
2007/01/15(月) 23:35:43>>64
>入力用データファイルは
>(中略)
>という内容で作ってあります
この作ってある奴をうpしてって言ってるんだけど、実際は作ってないの?
0193デフォルトの名無しさん
2007/01/15(月) 23:36:38それぐらい瞬殺だろ。。。
0194デフォルトの名無しさん
2007/01/15(月) 23:38:11作ってないです。申し訳ないです。入力用データファイルが、すでにあるって言うことです。
プログラミング自体はさっぱり分かりません。
0195デフォルトの名無しさん
2007/01/15(月) 23:38:46[2] 問題文(含コード&リンク):二重ループを用いて九九の表を作れ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明後日の10時まで
ネットを参考にしながら何とか考えたら
#include <stdio.h>
main(void){
int i, j;
printf(" ");
for(j=1;j<10;j++){
printf("%3d", j);
}
printf("\n");
for(i=1;i<10;i++){
printf("%d", i);
for(j=1;j<10;j++)
printf("%3d", i*j);
printf("\n");
}
return 0;
}
という感じになって九九の表を作れたのですが、
ここでのiとjの説明についてなんですが、
iは列方向のカウンタ変数
jは行方向のカウンタ変数
だと違いますかね?
0196デフォルトの名無しさん
2007/01/15(月) 23:39:28>入力用データファイルが、すでにある
いや、その入力用データファイルが欲しいって言ってるんだけど
プログラミングは関係ないだろ
0197デフォルトの名無しさん
2007/01/15(月) 23:43:48入力データの読み込みを、$./a.out<入力データ と、いう風にして実行しろと
指示がありました。データはまだコピーの許可が下りていません。
データというのは、得点データが入ってるものです。
0198デフォルトの名無しさん
2007/01/15(月) 23:45:59コピーの許可が下りてないのね、了解
0199デフォルトの名無しさん
2007/01/15(月) 23:46:530200デフォルトの名無しさん
2007/01/15(月) 23:49:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3408.txt
0201デフォルトの名無しさん
2007/01/15(月) 23:49:58無断でコピーしちゃえよ
0202デフォルトの名無しさん
2007/01/15(月) 23:52:38どうも サンクスです。
0203お願いしますm(_ _)m
2007/01/15(月) 23:58:56[2] 問題文(含コード&リンク):
�T)以下の条件に合うプログラムを作成せよ。
�@main()の中で2つの整数a,bを入力する
�A入力された2つの整数を別の関数(名前は任意)に渡す
�B値を渡された関数では2つの値を入れ替えるが、main()側でも入れ替わるようにする
※ポインタを使用すること
�Cmain()に戻ったら、2つの変数の値を表示させ、入れ替わったことがわかるようにすること
�U)2次元の配列を用いて、3次正方行列の積を求めるプログラムを作成せよ。
※繰り返し文を使って3重ループで計算すること
�V)以下のプログラムを作成せよ。
�@文字型の配列s[11],t[11]を確保
�Aキーボードから「s」に半角10文字以内の文字列を入力させる
�B「t」に「s」を反対にしたものを代入する(appleだったらelppa)
※ポインタを使用する
�C「t」を表示させる
※繰り返し文を用いる
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: 習った範囲は
�@if else文 �Awhile、do〜whileによる繰り返し
�Bfor文による繰り返し �Ccontinue文、break文
�D関数(作り方、呼び出し方、他モジュールにある関数、変数の扱い、記憶クラスと適応範囲)
�E1次、2次以上の配列、文字列の配列
�Fポインタ(使い方、配列との関係、関数との値の受け渡し) �G構造体、共用体
0204デフォルトの名無しさん
2007/01/16(火) 00:03:050206デフォルトの名無しさん
2007/01/16(火) 00:33:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3409.txt
同じファイルに三問とも書いた
0207デフォルトの名無しさん
2007/01/16(火) 08:54:50データのコピーは気にするのに宿題丸投げを気にしないとは是如何に
0208デフォルトの名無しさん
2007/01/16(火) 11:02:31度まで、それに対応する華氏温度を計算し,
下記のような対応表を作成しなさい。
F=5/9C+32.0
出力は、左右に2列に摂氏温度と華氏温度が{表}になるようにしなさい。
この問題が分からないのですが、よかったら誰か教えてくださいorz
0209デフォルトの名無しさん
2007/01/16(火) 11:04:46よかったら>>1をしっかり読んで書き直してください
後で条件を付け足す必要が無いようにしっかり書いてね
0210デフォルトの名無しさん
2007/01/16(火) 11:07:59[2] n点の凸包の計算
n個の点データがファイルに保存されている.
http://www.geocities.jp/programxxxxx/points.dat
ファイルは1行目はデータの数,
2行目以降はそのデータ数分の点データである.
点データは1列目が点番号,2,3列目が点のx,y座標である.
この点データから,凸包の辺を求める効率の良いプログラムを作成し,
入力データ数に対する実行時間の挙動について調査せよ.
ただし,ここで言う「効率の良いプログラム」とは,
Graham 走査法,逐次構成法の一つを使う。
報告事項は,そのプログラムのアルゴリズムを
フローチャート等により示したもの,プログラムソースファイル,
および実行時間である.
実行時間については,できれば包装法についても同じ表に結果を記入し
比較すると良い(横軸に入力線分数.縦軸に実行時間としたグラフを作成し
実行時間について明らかに違う挙動を表すことがわかるようにせよ.)
[3] 環境
[3.1] OS: Windows Xp
[3.2] gcc 3.4
[3.3] C
[4] 期限: 1月19日(金曜日)
0211デフォルトの名無しさん
2007/01/16(火) 11:12:47>>173
0212デフォルトの名無しさん
2007/01/16(火) 11:27:39また「効率の良い」の人か
0213デフォルトの名無しさん
2007/01/16(火) 11:36:440214デフォルトの名無しさん
2007/01/16(火) 11:41:08ソートの安定性 の検索結果 約 1,710 件中 1 - 10 件目 (0.33 秒)
0215デフォルトの名無しさん
2007/01/16(火) 11:42:45英 数 理 合 英偏 数偏 理偏 合偏の順番で出力してる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3411.txt
0216デフォルトの名無しさん
2007/01/16(火) 11:48:28ちがうよ これまでに何度か出てる「効率の良い」の人とは別だよ
0217デフォルトの名無しさん
2007/01/16(火) 12:21:44[2] 問題文:
摂氏温度(C)と華氏温度(F)は、次の式で変換できる。摂氏温度-30度から、5度刻みに、105度まで、それに対応する華氏温度を計算し、下記のような対応表を作成しなさい。
F = 9/5C + 32.0
出力は、左右に2列に摂氏温度と華氏温度が「表」になるようにしなさい。
出力例
0.0℃ = 32.00°F 5.0℃ = 41.00°F
10.0℃ = 50.00°F 20.0℃ = 59.00°F
・・・
100.0℃ = 212.00°F 105.0℃ = 221.00°F
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語:C++
[4] 期限:明日まで
[5] その他:
ちなみに自分ではさっぱり分からないです。
何か不明な点があったら聞いて下さい、お願いします。
0218デフォルトの名無しさん
2007/01/16(火) 12:24:38× 20.0℃ = 59.00°F
○ 15.0℃ = 59.00°F
0219デフォルトの名無しさん
2007/01/16(火) 12:27:49例では0.0℃から始まっていますが実際は-30.0℃からです
0220デフォルトの名無しさん
2007/01/16(火) 12:49:13>>173を改悪して作った
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3412.txt
0221デフォルトの名無しさん
2007/01/16(火) 13:14:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3413.txt
0222デフォルトの名無しさん
2007/01/16(火) 13:20:59まちがっとるやんw
0223デフォルトの名無しさん
2007/01/16(火) 13:33:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3414.txt
0224デフォルトの名無しさん
2007/01/16(火) 13:34:10[2] 問題文:数独のプログラム作成。
・4×4のマス目の数字をファイルから入力(数字の無いところは0を表示)。
1000
0200
3001
0004
・配置できる数字は1から4まで。
・各行、各列、2×2の小領域において、各数字は丁度一個しか使用できない。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ:gcc -o
[3.3] 言語: C
[4] 期限: 2007年1月19日
[5] その他の制限: 特になし。
どうか宜しくお願いします。
0225デフォルトの名無しさん
2007/01/16(火) 13:35:39[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3415.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし
よろしくお願いします
0226デフォルトの名無しさん
2007/01/16(火) 13:46:32お前等倉木麻衣好きなんだな。
0227デフォルトの名無しさん
2007/01/16(火) 13:48:23気楽に行こうってことか?そうはいかんざき!
0228デフォルトの名無しさん
2007/01/16(火) 13:50:14[2] 問題文(含コード&リンク):以下に示した構造体の型を利用して,分数を扱う構造体変数f1,f2 を宣言する.それぞれの構造
体変数の分子部,分母部の係数をキーボードから入力し,分数の和,差,積,商を演算して画面表
示するプログラムを作成しなさい.ただし,以下に示すプロトタイプを利用し,分数の四則演算を行
う関数をそれぞれ作成すること.
構造体の型
struct frac {
int numerator;
int denominator;
};
関数のプロトタイプ
void frac_wa( struct frac, struct frac, struct frac * );
void frac_sa( struct frac, struct frac, struct frac * );
void frac_seki( struct frac, struct frac, struct frac * );
void frac_sho( struct frac, struct frac, struct frac * );
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
宜しくお願いします。
0229デフォルトの名無しさん
2007/01/16(火) 13:59:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3416.txt
コメントは自分でつけてくれ、変数3つしか使ってないから。
0230217
2007/01/16(火) 14:04:26助かりました
ありがとうございます!
0232デフォルトの名無しさん
2007/01/16(火) 15:27:51[2] 問題文(含コード&リンク): 1 リストを意味するデータ構造を、配列を使わずに定義せよ
2配列を整列するプログラムを二種類以上の方法で実装せよ。 また、その計算量について数学的に考察せよ。
3ハッシュを用いて、英単語を日本語に翻訳するプログラムを作れ。
4トライを用いて、英単語を日本語に変換するプログラムで補完機能のついたものを作れ。
5出発地から目的地への最短経路を示すプログラムをJavaアプレットとして実装せよ。 (アプレットはウェブで公開し、レポート提出の際にそのアドレスを通知すること。)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: どちらでも可
[4] 期限: 過ぎてるので早めにお願いしたいです 。こんなの無理!って感じでしたorz
[5] その他の制限: なし
0233デフォルトの名無しさん
2007/01/16(火) 15:59:125番とかどう見てもJavaの宿題なんだけど、本当にC言語演習?
0234デフォルトの名無しさん
2007/01/16(火) 16:00:24Java?
0235228
2007/01/16(火) 16:03:500236デフォルトの名無しさん
2007/01/16(火) 16:08:32[2] 問題文(含コード&リンク):
・25個の値をrand関数(乱数)によって発生させ、一旦5×5の2次元配列に格納する(値は1から100の範囲)
・入力された値が配列内に存在するか探索する。
*存在する場合その値が格納されている配列の添え字を表示すること
*存在しない場合は、その旨を表示する
・値の一覧もあわせて表示し、これらの結果をすべてファイルに出力する。
・レポートの実行結果には、出力したテキストファイルの内容も記載すること。
・必ず自作関数を使ったプログラムにすること
・繰り返しは何度でも探索できるようにする。その際、必ず終了する場合の入力値を示せ。
[3] 環境
[3.1] OS: (Windows等々)
[3.2] コンパイラ名とバージョン: ( VC ++6.0)
[3.3] 言語: C++
[4] 期限: ([2007年1月16日23:30まで]
[5] その他の制限: C言語の初歩は習いました。
急ぎですが、お願いします!!!
0237デフォルトの名無しさん
2007/01/16(火) 16:20:003番と4番、まさかすべての単語を網羅しろってことはないと思うけど
使う単語と訳をよろしく
0238デフォルトの名無しさん
2007/01/16(火) 16:35:33Win32 Console APIを使わせる気か
0239デフォルトの名無しさん
2007/01/16(火) 16:37:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3417.txt
0240デフォルトの名無しさん
2007/01/16(火) 16:38:18【問題】
「計算式対応電卓」
・計算式を文字列として入力すると、その計算を行い、結果を出力するプログラムを
作成せよ。
-入力文字列を解析し、数値と演算子に分けて計算する。
-例:計算する式を入力してください。終了:end
使用可能演算子:四則演算(+-*/)
1+2
答えは3です。
・必ず四則演算のほかに、使用可能な演算子を追加せよ。
入力する際の演算子記号は任意にきめてよい。
-例:あまりを求める %
二乗を求める
・繰り返し何度も計算できるようにする。
その際、終了する場合の入力文字列を示せ。
【質問テンプレ】
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク): 上記
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C++
[4] 期限: 2007年1月19日am0:00まで
[5] その他の制限:
よろしくお願いします!!
0241デフォルトの名無しさん
2007/01/16(火) 17:03:52[2] 問題文(含コード&リンク): 以下に示した「氏名」と「英語」,「数学」,「物理」の得点を構造体の配列を用いて格納する.各科目
について得点の高い順にソートを行う関数 「void sort_score ( struct SCORE *, int )」 を作成し,ソ
ート関数呼び出し後に画面表示するプログラムを作成しなさい (ソート,画面表示は3 回繰り返さ
れる).関数の第1 引数には構造体配列を,第2 引数には整数値をとり,第2 引数の値が0 の場合
には英語,1 の場合には数学,2 の場合には物理をキーにしてソートを行うこと.ただし,構造体の
型は以下に示したものを利用し,各データは構造体の「初期化」により格納しておくこと.また,ソー
トを行う場合には,必ず構造体の要素の入れ替えを行うこと.
得点表
氏名 英語 数学 物理
小野妹子 82 93 56
菅原道真 89 87 91
源頼朝 56 76 45
豊臣秀吉 62 83 65
徳川家康 78 56 87
構造体の型
struct SCORE {
char name[20];
int english;
int mathematics;
int physics;
};
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
分かる方、よろしくお願いします。
0242デフォルトの名無しさん
2007/01/16(火) 17:04:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3418.txt
0244デフォルトの名無しさん
2007/01/16(火) 18:05:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3419.txt
結構いい加減な感じ
0245デフォルトの名無しさん
2007/01/16(火) 18:11:09演算子の優先順位ってそんな適当でいいんかね。
0247デフォルトの名無しさん
2007/01/16(火) 18:52:17[2] 問題文:ID番号(int型)と名前(char型20個)をメンバーに持つ構造体を定義し、
その構造体の変数を2個の配列で宣言する。
2件分のID番号と名前を入力し、それを逆順に表示するプログラムを関数を用いて作成せよ。
データを格納する構造体変数はmain()関数にて宣言する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2007年1月18日
お願いします。
0248デフォルトの名無しさん
2007/01/16(火) 19:01:14struct{
int id;
char name1,name2,name3,name4,name5,name6,name7,name8,name9,name10,
name11,name12,name13,name14,name15,name16,name17,name18,name19,name20;
};
0249244
2007/01/16(火) 19:01:26ごめんなさい。
さっきの間違えてました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3420.txt
(ただ、変な数式をはじく処理とか、
0divとか一切考慮してません。)
0250デフォルトの名無しさん
2007/01/16(火) 19:08:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3421.txt
0251デフォルトの名無しさん
2007/01/16(火) 19:18:37#include <stdio.h>
#include <string.h>
typedef struct IDNAME{
int ID;
char name[20];
}IDNAME;
int main()
{
IDNAME obj[2];
char buff[20];
int i;
for(i = 0; i < 2; i++){
puts("ID入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
sscanf(buff,"%d",&obj[i].ID);
memset(buff,'\0',sizeof(buff));
puts("name入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
strcpy(obj[i].name,buff);
memset(buff,'\0',sizeof(buff));
}
for(i = 1; i >=0 ; i--){
printf("%d, %s \n",obj[i].ID,obj[i].name);
}
return 0;
}
0252デフォルトの名無しさん
2007/01/16(火) 19:19:430253デフォルトの名無しさん
2007/01/16(火) 19:33:57[2] 問題文(含コード&リンク):"in_file"という名前のファイルの中に多数の整数データが空白や
改行コードで区切られて並んでいることを仮定した上で、このファイルの中のデータを
1行に5個ずつきれいに並べて"out_file"という名前のファイルに出力するcプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:1月29日
例えば、入力ファイル"in_file"の内容が
11111111 3333333 44444 32 35 34 24 53 242
254 35 532 5235 3452 3545 34
63 54
の時には、このプログラムは次のような出力ファイル"out_file"に書き出す。
11111111 33333333 44444 32 35
34 24 53 242 254
35 532 5235 3452 3545
34 63 54
0254247
2007/01/16(火) 19:35:060255253
2007/01/16(火) 19:35:39見てください。書き方が下手でスミマセン。
0256デフォルトの名無しさん
2007/01/16(火) 19:48:36#include <stdio.h>
int width(int n)
{
int w = 1;
while ((n /= 10) > 0)
++w;
return w;
}
int main()
{
int i, d, w, colsize[5] = { 0 };
if (!freopen("in_file", "r", stdin)) {
perror("in_file");
return 1;
}
for (i = 0; scanf("%d", &d) == 1; i = (i+1)% 5) {
w = width(d);
if (w > colsize[i])
colsize[i] = w;
}
rewind(stdin);
for (i = 0; scanf("%d", &d) == 1; i = (i+1)% 5) {
printf("%*d ", colsize[i], d);
if (i == 4) putchar('\n');
}
if (i)
putchar('\n');
return 0;
}
0257251
2007/01/16(火) 20:42:06#include <stdio.h>
#include <string.h>
typedef struct IDNAME{
int ID;
char name[20];
}IDNAME;
void input_data(IDNAME *obj, int size);
int main()
{IDNAME obj[2];int i;
input_data(obj, (int)sizeof(obj)/sizeof(IDNAME));
for(i = 1; i >=0 ; i--)
printf("%d, %s \n",obj[i].ID,obj[i].name);
return 0;}
void input_data(IDNAME *obj, int size)
{
char buff[20];int i;
for(i = 0; i < size; i++){
puts("ID入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
sscanf(buff,"%d",&obj[i].ID);
memset(buff,'\0',sizeof(buff));
puts("name入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
strcpy(obj[i].name,buff);
memset(buff,'\0',sizeof(buff));
}
}
0258デフォルトの名無しさん
2007/01/16(火) 20:52:34#include "stdio.h"
#include "ctype.h"
void main(void){
char ch,wk[10],*p;
FILE *rfp,*wfp;
int cnt;
  if ( NULL != ( rfp=fopen ("in.file","r") ) ){
    if ( NULL != ( wfp=fopen ("out.file","w") ) ){
      p=wk;
      *p='\0';
      cnt=0;
      while ( EOF!=(ch=fgetc(rfp)) ){
        if (isdigit(ch) )
          *p++ =ch;
        else if( '\0'!=wk[0] ){
          fprintf(wfp,"%9s",wk);
          cnt++;
          p=wk;
        }
        *p='\0';
        if (5==cnt){
          fprintf(wfp,"\n");
          cnt=0;
        }
      }
      fprintf(wfp,"\n");
      fclose(wfp);
    }
    fclose(rfp);
  }
}
0259デフォルトの名無しさん
2007/01/16(火) 21:05:07別のところの話ね。 ここで回答書いてる人ってコンパイルまでしてやってる??
0260デフォルトの名無しさん
2007/01/16(火) 21:06:40桁数決めうちなのは題意に反するだろうな。
>>256はちゃんと計算してフォーマットしてる。
それと、 にはセミコロンをつけてくれないか。
ブラウザによっては解釈できないから。
0261デフォルトの名無しさん
2007/01/16(火) 21:14:55するよ。
だって、恥ずかしいじゃん
0262251
2007/01/16(火) 21:15:37俺は、ちょっとした確認するためのソース用の使い捨てプロジェクトフォルダ一個
あるから、そのプロジェクトにソースファイル追加して一応コンパイルと実行してはみている。
っていうか、レス書くウィンドウに書けるくらいの簡単なのでも、やっぱかきずらい。
0263デフォルトの名無しさん
2007/01/16(火) 21:15:560264デフォルトの名無しさん
2007/01/16(火) 21:23:34[2] 問題文(含コード&リンク):
引数をとる以下のマクロを、標準関数 ( isdigit、isalpha 等 ) を使わずに
すべて記述してください。例で示すように条件として使えるようにしてください。
マクロ1. 引数が大文字のアルファベットかどうか調べるマクロIS_UPPER
マクロ2. 引数が数字を表す文字かどうか調べるマクロIS_NUMBER
マクロ3. 引数がアルファベットかどうか調べるマクロIS_ALPHA
マクロ4. 引数がスペースまたはタブまたは改行かどうか調べるマクロIS_SPACE
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし
0265デフォルトの名無しさん
2007/01/16(火) 21:25:230266デフォルトの名無しさん
2007/01/16(火) 21:25:47[2] 問題文(含コード&リンク):
ある文字列の中に特定の文字が含まれているかを検索する関数 str_chr を書いてください。仕様は次のとおりです。
char ポインタ型の引数 s と int 型の引数 c をとり、char ポインタ型 s が示す文字列を先頭から調べて、引数 c
が示す文字と同じものがあればその文字のアドレスを、なければ NULL を返します。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし
0267デフォルトの名無しさん
2007/01/16(火) 21:33:32char* str_chr(char* s, char c)
{
while (*s){
if (c == *s){
return s;
}
s++;
}
return NULL;
}
0268デフォルトの名無しさん
2007/01/16(火) 21:46:34所詮256も表示時に可変で渡してるが桁数取得部が10桁決めうち
てか32bit幅なら10桁でOK
0269デフォルトの名無しさん
2007/01/16(火) 21:57:47おいおい、桁数決め打ちだと>>253の出力例のようにならんだろ。
それと、>>256は「10桁決め打ち」なのではなく、単にintのサイズに
依存してるだけだ。
負数には対応してないがな。
0270デフォルトの名無しさん
2007/01/16(火) 21:59:27[2] 問題文(含コード&リンク):
入力したグレースケール(白黒)画像[256×256画素、8ビット256階調]を
8枚のビットプレーンに分解し、それぞれのプレーンを出力するプログ
ラムを作成せよ。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限:1/17 19:00
[5] その他の制限:なし
0271デフォルトの名無しさん
2007/01/16(火) 22:22:29入力ファイルの形式は?出力先は?
0272251
2007/01/16(火) 22:28:19なんかえらく長くなっちったからロダにあげた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3422.txt
0273270
2007/01/16(火) 22:43:17入力ファイルはnotファイルです。出力先は特に指定されてないのでprintfで結果を表示すればよいと思います。
説明足らずですみませんでした。
0274デフォルトの名無しさん
2007/01/16(火) 22:48:24毎回期待通りに動くかどうかデバッグまでやるよ
たまにミスに気づかずアップして後で訂正することがあるけど orz
そこまでしてるのにたまにコンパイルできないとか言われて ヽ(`Д´)ノ
0275デフォルトの名無しさん
2007/01/16(火) 23:33:16[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3423.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/18
[5] その他の制限:特になし
よろしくお願いします
0276デフォルトの名無しさん
2007/01/16(火) 23:49:12[1] 授業単元: 情報論
[2] 問題文(含コード&リンク):
優先的選択モデルによるSFN(Scale Free Network)の生成
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3373.txt
↑の/* 自分で書いてください*/の部分の穴埋め
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限: 2007年1月17日19:00まで
[5] その他の制限:
使用する方法:ソート、再帰的アルゴリズム、線形リスト、動的なメモリの確保
(1)ノードをNmax個生成する
(2)No(<<Nmax)のノードに対して、kNo本のリンクをランダムに張る
(3)残りのNmax−No個のノードそれぞれに対してk本ずつのリンクを張る。
このとき、どのノードとリンクを張るかは、ノードnが有するリンク数L(n)
に応じた確率によるものとする。すなわち、ある未リンクノードが、
ノードnとリンクされる確率は
L(n)/(�@=1〜Nmax)L(i)である
(4)全てのノードに対して(3)の処理を繰り返す。
No=10、Nmax=10000、k=5とした時、各ノードのリンク数に応じてソートする
0277デフォルトの名無しさん
2007/01/16(火) 23:58:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3424.txt
0278デフォルトの名無しさん
2007/01/17(水) 00:03:05ありがとうございます
0279195
2007/01/17(水) 00:04:090280デフォルトの名無しさん
2007/01/17(水) 00:08:49[2] 問題文(含コード&リンク):
2元連立非線形方程式
x^2+y^2-2=0
x^2-y^2-1=0
を解く以下のプログラムhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3425.cppを例に、
3元連立非線型方程式
x1^2+x2^2+x3^2-4=0
x1^2-2x1+x2^2+x3-2=0
x1^2+sin^2(x2)+x3^2-3=0
を解くニュートン法のC++プログラムを作り、領域0<x1,x2,x3<2にある解を求めよ。
やだし、ヤコビアンの計算に必要となる変動関数は数値微分により計算し、
連立一次方程式の解法にはガウスの消去法あるいはLU分解法を用いる事。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C++
[4] 期限: ([07年1月17日10:00まで]
[5] その他の制限:特になし
さっぱり分からないのでどなたかご教示願います。
0281デフォルトの名無しさん
2007/01/17(水) 00:23:52あってるよ
0282デフォルトの名無しさん
2007/01/17(水) 00:54:26[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3426.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし
よろしくお願いします
0284デフォルトの名無しさん
2007/01/17(水) 02:22:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3427.txt
酔っぱらいだから間違っててもキニシナイ
0285デフォルトの名無しさん
2007/01/17(水) 02:24:36[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
配列dataに10個の整数データを保存している。
その中の最大値を探すプログラムを完成せよ
#include <stdio.h>
void main()
{
int k,max=0;;
int data[10]={20,87,56,90,87,34,18,98,65,87};
よろしくお願いします。
0286デフォルトの名無しさん
2007/01/17(水) 02:43:42for(k=0;k<10;k++)if(max<data[k])max=data[k];
printf("%d\n",max);
}
0287デフォルトの名無しさん
2007/01/17(水) 02:46:30if(data[k]>max)
max=data[k];
}
0288デフォルトの名無しさん
2007/01/17(水) 02:50:08#include <stdio.h>
void main()
{
int k,max=0;
int data[10]={20,87,56,90,87,34,18,98,65,87};
for(k=0; k<sizeof(data)/sizeof(data[0]); k++) {
if(max < data[k]) max=data[k];}
printf("最大 : %d ",max);
}
0289デフォルトの名無しさん
2007/01/17(水) 02:59:33最後にもう1個だけお願いします。
次の10個の整数データを降順に並べ替えて出力するプログラムを作成せよ
#include <stdio.h>
void main()
{
int k;
int data[10]={20,87,56,90,87,34,18,98,65,87};
0290デフォルトの名無しさん
2007/01/17(水) 03:14:15int i,max;
for(k=0;k<10;k++){
max = k;
for(i=k+1;i<10;i++)if(data[max]<data[i])max=i;
if(k!=max){
data[k] ^= data[max];
data[max] ^= data[k];
data[k] ^= data[max];
}
}
for(k=0;k<10;k++)printf("%d ",data[k]);
降順って大きい順だったよな?ようやく酔いが覚めてきた
0291デフォルトの名無しさん
2007/01/17(水) 09:00:01ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3428.cpp
0292デフォルトの名無しさん
2007/01/17(水) 09:55:26[2] 問題文(含コード&リンク):
引数をとる以下のマクロを、標準関数 ( isdigit、isalpha 等 ) を使わずに
すべて記述してください。例で示すように条件として使えるようにしてください。
マクロ1. 引数が大文字のアルファベットかどうか調べるマクロIS_UPPER
マクロ2. 引数が数字を表す文字かどうか調べるマクロIS_NUMBER
マクロ3. 引数がアルファベットかどうか調べるマクロIS_ALPHA
マクロ4. 引数がスペースまたはタブまたは改行かどうか調べるマクロIS_SPACE
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし
0293デフォルトの名無しさん
2007/01/17(水) 10:05:07[2] 問題文(含コード&リンク):
次に一部が空欄になっている関数 mem_set を示します。
この関数は、s で指定されたアドレスから n バイト分を c で
埋め、返り値として、s を返します。呼び出し側の参考例を示します。
呼び出し側
char str[128];
int i;
mem_set(str, 0, 128); /* すべてのバイトを0に初期化 */
mem_set(&i, 0, 4); /* すべてのバイトを0に初期化 */
/*
関数mem_set
渡されたvoidポインタ型の引数sの示すアドレスからnバイト分 c で埋める。
返り値は s
*/
void *mem_set(void *s, int c, int n){
int i = 0;
char *p = ([ 空欄1 ])s;
for(i = 0; i < [ 空欄2 ] ; i++)
*(p + i) = [ 空欄3 ];
return [ 空欄4 ];
}
この空欄をうめてプログラムを完成させてください。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 明日
[5] その他の制限:なし
0294デフォルトの名無しさん
2007/01/17(水) 10:31:33[2] 問題文(含コード&リンク):
下に示すように、1から読み込んだ正の整数値までの和を求めるプログラムを作成せよ。
実行結果
正の整数を入力してください:10
1から10までの足した値は55です。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (VC6.0)
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:なし
0295デフォルトの名無しさん
2007/01/17(水) 10:55:05#include<stdio.h>
int main(){
int i,n,sum=0;
printf("正の整数を入力してください:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum += i;
printf("1から%dまでの足した値は%dです。\n",n,sum);
return 0;
}
0296デフォルトの名無しさん
2007/01/17(水) 10:55:18void *mem_set(void *s, int c, int n)
{
int i = 0;
char *p = (char *)s;
for(i = 0; i < n; i++)
*(p + i) = c;
return s;
}
0297デフォルトの名無しさん
2007/01/17(水) 10:58:45#define IS_UPPER( x ) ( (x) >= 'A' && (x) <= 'Z' )
#define IS_NUMBER( x ) ( (x) >= '0' && (x) <= '9' )
#define IS_ALPHA( x ) (((x) >= 'A' && (x) <= 'Z' ) || ((x) >= 'a' && (x) <= 'z') )
#define IS_SPACE( x ) ( (x) == ' ' || (x) =='\t' || (x) =='\n' || (x) =='\r' )
0298247
2007/01/17(水) 11:48:30247で質問した者ですが、
「ID番号(int型)と名前(char型20個の配列)をメンバーに持つ構造体を定義し、
その構造体の変数を2個の配列で宣言する。
2件分のID番号と名前を入力し、それを逆順に表示するプログラムをデータを格納する構造体配列はmain()関数にて宣言し、データの入力は別関数により行う。」
例えば入力処理関数の例として、
void inp_data(構造体配列へのポインタ, int 入力個数);
が挙げられていたのですが、この問題を5人分のデータに変更するときはどのようなプログラムになりますか?
難しいことは習っていないので、できるだけ簡単なプログラムでお願い致します。
0299デフォルトの名無しさん
2007/01/17(水) 12:26:32>>257のmain関数を改造
変更したいサイズを5とすると下みたいな感じ?
#define ID_MAX 5 ←main関数の前にこの一行を追加
(今後、サイズを変えたい場合はここを変える)
int main()
{
IDNAME obj[ID_MAX];int i; ←ここ変更
input_data(obj, (int)sizeof(obj)/sizeof(IDNAME));
for(i = ID_MAX - 1; i >=0 ; i--) ←ここ変更
printf("%d, %s \n",obj[i].ID,obj[i].name);
return 0;
}
0300251
2007/01/17(水) 12:42:26それと質問するときは、ぶつ切りで聞かずに全部聞いて
#include <stdio.h>
#include <string.h>
typedef struct IDNAME{
int ID;
char name[20];
}IDNAME;
void input_data(IDNAME *obj, int size);void show_data(IDNAME *obj, int size);void rshow_data(IDNAME *obj, int size);
int main(){IDNAME obj[100];int i;input_data(obj, (int)sizeof(obj)/sizeof(IDNAME));show_data(obj, (int)sizeof(obj)/sizeof(IDNAME));rshow_data(obj, (int)sizeof(obj)/sizeof(IDNAME));
return 0;}
void input_data(IDNAME *obj, int size){char buff[20];int i;
for(i = 0; i < size; i++){puts("ID入力: ");fgets(buff, sizeof(buff),stdin);buff[strlen(buff)-1] = '\0';
sscanf(buff,"%d",&obj[i].ID);memset(buff,'\0',sizeof(buff));puts("name入力: ");fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';strcpy(obj[i].name,buff);memset(buff,'\0',sizeof(buff));}}
void show_data(IDNAME *obj, int size){
int i;puts("順方向で表示");
for(i = 0; i < size; i++)
printf("%d %s \n",obj[i].ID,obj[i].name);}
void rshow_data(IDNAME *obj, int size){
int i;puts("逆方向で表示");
for(i = size - 1; i >=0; i--)
printf("%d %s \n",obj[i].ID,obj[i].name);}
0301デフォルトの名無しさん
2007/01/17(水) 12:47:29ありがとうございます。
0302デフォルトの名無しさん
2007/01/17(水) 12:49:20#include <stdio.h>
#define ID_MAX (5) //人数
typedef struct IDNAME{
int ID;
char name[20];
}IDNAME;
void input_data(IDNAME *obj, int size)
{
while(size--){
printf("ID入力: ");
scanf("%d",&obj->ID);
printf("name入力: ");
scanf("%s",obj->name);
obj++;
}
}
int main()
{
IDNAME obj[ID_MAX];
int i;
input_data( obj, ID_MAX );
for(i=ID_MAX-1; i >=0; i--)
printf("%d, %s \n",obj[i].ID,obj[i].name);
for(i=0; i<ID_MAX; i++)
printf("%d, %s \n",obj[i].ID,obj[i].name);
return 0;
}
0303247
2007/01/17(水) 12:59:41gccでコンパイルすると
int i;puts("順方向で表示");
int i;puts("逆方向で表示");
にエラーが現れるようなのですが・・・?
エラーが初めて見るものでよく意味が分からないのですが、unknown escape sequence :'\216'
と、どちらも書いてありました。。。
0304デフォルトの名無しさん
2007/01/17(水) 13:02:42[2] 問題文(含コード&リンク):
下に示すように、読み込んだ整数値の個数だけ * を縦に連続して表示するプログラムを作成せよ。
なお、0以下の整数が入力された場合は、何も表示しないこと。
実行結果
正の整数を入力してください:3
*
*
*
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (VC++2005)
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:なし
0305247
2007/01/17(水) 13:02:49あーー!とっても分かりやすい!!
大変ありがとうございます!!!!!!
0306デフォルトの名無しさん
2007/01/17(水) 13:10:27#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
int dat;
char buf[256];
while (1){
printf("正の整数を入力して下さい:");
if (NULL != fgets(buf, 255, stdin)){
if (1 == sscanf(buf, "%d\n", &dat)){
break;
}
printf("数字じゃないようですが?\n");
}
}
for (i = 0; i < dat; i++){
printf("*\n");
}
}
0307デフォルトの名無しさん
2007/01/17(水) 13:22:40ありがとうございます
0308デフォルトの名無しさん
2007/01/17(水) 13:25:35エラーにしないと(数字以外を入力しないと)延々聞かれるのか?w
0309デフォルトの名無しさん
2007/01/17(水) 13:27:01正常入力まで延々と聞かれるだけyo
0310デフォルトの名無しさん
2007/01/17(水) 13:43:23なんとなくだが…
ShiftJIS で保存してて
文字 "表" の 2btye目 が実は '\' と同じで
gcc が ShiftJIS非対応でエスケープと勘違いした
とか。 一旦漢字一切無しでやってみそ
0311デフォルトの名無しさん
2007/01/17(水) 15:27:34gccのオプションに
-finput-charset=sjis -fexec-charset=sjis
を追加汁
0312デフォルトの名無しさん
2007/01/17(水) 15:30:54単位おとしちまう
0313デフォルトの名無しさん
2007/01/17(水) 16:01:13どれ?
落とせばいいだろ。クズが。
0315デフォルトの名無しさん
2007/01/17(水) 16:05:05期限過ぎてから解いてやるからどの課題か教えてくれ
0316270
2007/01/17(水) 16:35:29よろしくお願いします。
0317デフォルトの名無しさん
2007/01/17(水) 16:36:33[2] 問題文(含コード&リンク):
Ctr+C を押すだびに、ログファイルに、日付時間情報と、プログラム実行開始からの
経過時間(秒数)をを記録していくプログラムを作成する。
プログラム本体は無限ループでとまらない(Ctr+\でとめる)ようにする。
ログファイル名は特に指定しない。
雛形( main 部分だけ)
#include <stdio.h>
#include <signal.h>
#include <time.h>
time_t startTime;
int main( void )
{
int onsignal();
time( &startTime );
puts("Ctr+c is ignored. Press Ctr+\\ to stop.");
signal( ??????????????? );
while(1);
exit( 0 );
}
int onsignal( int sig )
{
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1月24日
[5] その他の制限:特になし
0318デフォルトの名無しさん
2007/01/17(水) 16:59:50[2] 問題文(含コード&リンク):
以下のような構造体を定義する。
typedef struct _Student Student;
struct _Student {
char name[10]; // 名前(英名)
int pt1; // 数学の得点
int pt2; // 英語の得点
}
データ数numを入力し、
num人分のデータを端末から tommy 87 64 のように入力し、
構造体の各メンバーに格納する。
合計点の高い方から順に出力する。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] 期限:1月24日
[5] その他の制限:特になし
0319デフォルトの名無しさん
2007/01/17(水) 17:03:11助かりました!!
本当にありがとうございましたm(_)m
0320デフォルトの名無しさん
2007/01/17(水) 18:23:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3429.txt
0321251
2007/01/17(水) 18:54:04俺も出来たからはっちゃお
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3430.txt
0322デフォルトの名無しさん
2007/01/17(水) 18:58:01>>321のは無し
こっち
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3431.txt
0323デフォルトの名無しさん
2007/01/17(水) 19:10:09using namespace std;
int main(void)
{
unsigned char x,y;
cout << "2つの値を入力してください。\n";
cin >> x >> y;
x -= '0';
y -= '0';
int a = x + y;
int b = x * y;
printf("x = %d, y = %d, x + y = %d, x * y = %d",x,y,a,b);
return 0;
}
これで出力したら10以上の数値が出ないんですが、
どうしたら出るようになるか教えてください。
0324デフォルトの名無しさん
2007/01/17(水) 19:13:38buff[strlen(buff)-1] = '\0'; これは?どんな意味があるんだ?w
0325デフォルトの名無しさん
2007/01/17(水) 19:14:31Linux環境が手元に無いのでアレなのだが……
onsignal()の関数型は
void onsignal(int)
が正しいと思う。
main()のsignal()の呼び出しは
signal(SIGINT, onsignal);
のようにする、onsignal()の実装は↓のような感じで。
void onsignal(int sig)
{
time_t now;
struct tm *local;
FILE *fp;
time(&now);
local = localtime(&now);
fp = fopen("a.log", "a");
fprintf(fp, "%04d/%02d/%02d %02d:%02d:%02d %d seconds elapsed.\n",
local->tm_year + 1900, local->tm_mon+1, local->tm_mday,
local->tm_hour, local->tm_min, local->tm_sec,
now - startTime);
fclose(fp);
/* ↓ this may be needless */
signal(SIGINT, onsignal);
}
0326デフォルトの名無しさん
2007/01/17(水) 19:15:53誰にレスしてるんだよw
0327デフォルトの名無しさん
2007/01/17(水) 19:16:34unsigned charじゃなくintで受けたら?
0328デフォルトの名無しさん
2007/01/17(水) 19:18:36宿題で『unsigned char』と『printf』ははずせないんです…。
0329デフォルトの名無しさん
2007/01/17(水) 19:21:53とりあえず>>1に従って、問題を書いて。
どういう条件の問題なのか分からないと…。
0330デフォルトの名無しさん
2007/01/17(水) 19:22:58x, yのことなら、そのやり方なら一桁の整数しか受けられないのは当たり前
x + y, x * yが10以上になる場合は、それできちんと出力されるぞ
0331デフォルトの名無しさん
2007/01/17(水) 19:28:342つの値を入力しunsigned char 型の変数x,yに代入してください。
また、a = x + y, b = x * yの計算を実施し、表示してください。
※aとbは、オーバーフローに気を付け作ること
printf関数を使い
x = 1, y = 10 , x + y = 11 , x * y = 10
と出力すること
0332デフォルトの名無しさん
2007/01/17(水) 19:32:10#include <iostream>
using namespace std;
int main(void)
{
int a, b;
unsigned char x, y;
cin >> a >> b;
x = a;
y = b;
printf("x = %d, y = %d, x + y = %d, x * y = %d\n",
x, y, x + y, x * y);
return 0;
}
0333332
2007/01/17(水) 19:34:19#include <cstdio>
#include <iostream>
using namespace std;
int main(void)
{
int a, b;
unsigned char x, y;
cin >> a >> b;
x = a, y = b;
printf("x = %d, y = %d, x + y = %d, x * y = %d\n",
x, y, a = x + y, b = x * y);
return 0;
}
0334デフォルトの名無しさん
2007/01/17(水) 19:36:42fgets()はgets()と違って末尾に'\n'を追加する仕様になっているからだと思われる。
7.19.7.2 The fgets function
2 The fgets function reads at most one less than the number of characters specified by n
from the stream pointed to by stream into the array pointed to by s. No additional
characters are read after a new-line character (which is retained) or after end-of-file. A
null character is written immediately after the last character read into the array.
0335デフォルトの名無しさん
2007/01/17(水) 19:37:34助かりました。ありがとうございます。
0336デフォルトの名無しさん
2007/01/17(水) 19:40:53ファイル末尾が改行で終端してない場合や行長がバッファサイズを越えた場合は
\n がつかないから、決めうちで削るのは良くないんだけどな。
if (p = strchr(buff, '\n'))
*p = '\0';
とでもしたほうがよい。
0337203
2007/01/17(水) 20:32:45ありがとうございます!
0338デフォルトの名無しさん
2007/01/17(水) 20:36:41[2] 問題文(含コード&リンク):
次のプログラムは、コマンドライン引数の文字数をそれぞれ調べて表示するものです。
#include <stdio.h>
/* 文字列の長さを調べる関数str_len */
int str_len(char *p){
int len = 0;
for(; [ 空欄 1 ] != [ 空欄 2 ] ; [ 空欄 3 ])
[ 空欄 4 ]++;
return len;
}
int main(int argc, char *argv[]){
int i = 0;
for(i = 0; i < argc; i++)
printf("%s: %d\n", argv[i], str_len(argv[i]));
return 0;
}
空欄を埋めて関数 str_len を完成させてください。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし
0339デフォルトの名無しさん
2007/01/17(水) 20:37:16それって'\n'を見つけて'\0'にしてるだけで
fgets()の使用上、>>324に書いてる書き方と
大差ねーんじゃねーの?
てか、バッファサイズ越えた時の対処の仕方を書いてやれよ。
バッファ超えしない限り、終端が'\n''\0'っていう並びになるのはfgets()使う限り
あたりまえの事だしよ。
0340デフォルトの名無しさん
2007/01/17(水) 20:41:54int str_len(char *p){
int len = 0;
for(; p[len] != '\0' ; )
len++;
return len;
}
0341デフォルトの名無しさん
2007/01/17(水) 20:44:00[2] 問題文(含コード&リンク):
-----------------
% ./a.out
I'm
ready.
%
------------------
include <stdio.h>
int main(void){
char str[] = "I'm ready.\n";
char *argv[3];
char **ap = NULL;
str[[ 空欄 1 ]] = '\0';
str[[ 空欄 2 ]] = '\0';
argv[0] = [ 空欄 3 ] ;
argv[1] = [ 空欄 4 ];
argv[2] = [ 空欄 5 ] ;
ap = [ 空欄 6 ] ;
/* 各文字列を表示 */
for(; *ap != NULL; ap++)
printf("%s\n", *ap);
return 0;
}
実行すると、上記の結果になるようにプログラムの空欄を埋めてください。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし
0342デフォルトの名無しさん
2007/01/17(水) 20:46:54>てか、バッファサイズ越えた時の対処の仕方を書いてやれよ。
>>336がまさにそれだろ。
改行があるときだけそれを潰している。
0343デフォルトの名無しさん
2007/01/17(水) 20:51:26str[3] = '\0';
str[10] = '\0';
argv[0] = &str[0];
argv[1] = &str[4];
argv[2] = NULL;
ap = argv;
0344デフォルトの名無しさん
2007/01/17(水) 21:59:12>バッファ超えしない限り、終端が'\n''\0'っていう並びになるのはfgets()使う限り
>あたりまえの事だしよ。
そんなことはない。ファイルからリダイレクトで食わせた場合などはそうならない。
0345デフォルトの名無しさん
2007/01/17(水) 22:15:44[2] 問題文(含コード&リンク):
DEBUG が定義されている場合には、引数名と引数の示す値を10進数で表すマクロ dprintf が有効に
なるように空欄を埋めてください。その際、ファイル名、行数の出力が行われるようにしてください
また、必ずヒントに記述されている方法を利用してください。
dprintf の期待される結果は、次のとおりです。
ファイル名(行番号): 変数名 = 変数の示す値
#ifdef [ 1 ]
#define dprintf(x) [ 2 ]
#else
#define dprintf(x) /* 定義しない */
#endif
ヒント====
#include <stdio.h>
/* 変数名とその値を10進数で表示 */
#define printparam(x) printf("%s = %d\n", #x, x)
int main(void){
int i = 3;
printparam(i);
return 0;
}
実行結果
% ./a.out
i = 3
%
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: 1月19日
[5] その他の制限:なし
0346デフォルトの名無しさん
2007/01/17(水) 22:28:211.>>338 >>341 >>345 が同一人物
2.宿題が新人教育の一環
1.2.が共に真ならば、
できる人間の足を引っ張るプログラマができあがって、
会社からすると、いないほうがマシなクズが一丁上がり
0347デフォルトの名無しさん
2007/01/17(水) 22:36:220348デフォルトの名無しさん
2007/01/17(水) 22:43:33そんな穴埋め問題を丸投げにしてるようじゃ先が思いやられるなあ
#ifdef DEBUG
#define dprintf(x) printf("%s(%d): %s = %d\n", __FILE__, __LINE__, #x, (x))
#else
#define dprintf(x) /* 定義しない */
#endif
いまから道を変えても遅くないと思うよ
0349デフォルトの名無しさん
2007/01/17(水) 23:00:25課題お願いしたいんですけど・・・。
0350デフォルトの名無しさん
2007/01/17(水) 23:03:28誰も答えてくれる保証は無いけど、とりあえず書いてみたら?
案外Javaスレの方が分かる人多そうだな・・・
0351349
2007/01/17(水) 23:13:51[1] 授業単元: インタフェース
[2] 問題文(含コード&リンク):
人に説明することを想定して簡明に説明をつけること。
1:正規表現のプログラムを作成しなさい。
内容、取り扱うクラス、作成するプログラム数、プログラムの長さなどは自由
2:MatchEvaluator デリゲートに関するプログラムを作成しなさい。
内容、取り扱うクラス、作成するプログラム数、プログラムの長さなどは自由。
3:Point構造体ならびにSize 構造体と(ほぼ)同機能の
PointCクラスならびにSizeCクラスを作成しなさい。
作成する新クラス名は自由。
[3] 環境
[3.1] OS: Win
[3.2] Visual Studio.NET
[3.3] C#
[4] できれば早めに
[5] なし
よろしくお願いします。
0352デフォルトの名無しさん
2007/01/17(水) 23:22:561番と2番はこれじゃ駄目なのかい?
http://www.atmarkit.co.jp/fdotnet/basics/regex02/regex02_03.html
0354デフォルトの名無しさん
2007/01/18(木) 00:41:28このスレを利用できるのはバレたときに開き直れる勇気と根性を持ってる香具師だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3435.txt
適当に削って使ってくれ
0355 ◆ZKcfds8GQA
2007/01/18(木) 00:46:03[2] 問題文(含コード&リンク):
・9×9のマスを表示する。
・マウスクリックで対象のマスをアクティブにし、キーボードから数字を入力。
・マスは、キーボードのカーソルキーで移動できるようにする。
・入力された数字は、2次元配列に格納させる。
[3] 環境
[3.1] OS:Windoes Xp
[3.2] コンパイラ名とバージョン: Borland C++ 5.02
[3.3] 言語:C言語
[4] 期限: 2007/01/20 17;00
[5] その他の制限:GUIを使うこと。
エディタは、VC++を使ってます。
よろしくお願いします。
0356デフォルトの名無しさん
2007/01/18(木) 00:49:54[1] 授業単元:C言語 プログラムの流れの繰返し
[2] 問題文(含コード&リンク):
(1)非負の整数値を読み込んで、その数を逆順に表示するプログラムを作成せよ。 負の値を読み込んだ場合は、再入力を促すこと。なお複合代入演算子/=を用いて解きなさい。
実行結果
非負の整数を入力してください:1963
1963を逆から読むと3691です。
(2)段数を読み込んで、縦横に * を並べて右上側が直角となる直角三角形を表示するプログラムを作成よ。
実行結果
何段ですか?:5
*****
****
***
**
*
(3)下に示すように、読み込んだ整数の段数をもつピラミッドを表示するプログラムを作成せよ。
実行結果
ピラミッドを作りましょう。
何段ですか?:3
*
***
*****
[3] 期限: 明日
よろしくお願いします。
0357354
2007/01/18(木) 00:50:16{
this.Offset(pt.X, pt.Y);
}
public void Offset(Int32 dx, Int32 dy)
{
this.x += dx;
this.y += dy;
}
おっと、忘れてた。PointCに追加
0359デフォルトの名無しさん
2007/01/18(木) 01:17:26(1)
#include <stdio.h>
int main(void)
{
int num;
do {
printf("悲負の整数を入力してください:");
scanf("%d", &num);
} while ( num < 0);
printf("%dを逆から読むと", num);
do {
printf("%d", num % 10);
num /= 10;
} while (num > 0);
puts("です。");
return 0;
}
0360デフォルトの名無しさん
2007/01/18(木) 01:18:14#include <stdio.h>
int main(void)
{
int i, j, num;
printf("何段ですか?:");
scanf("%d", &num);
for (i=num; i>0; i--) {
for (j=0; j<i; j++) {
printf("*");
}
putchar('\n');
}
return 0;
}
0361デフォルトの名無しさん
2007/01/18(木) 01:19:15#include <stdio.h>
int main(void)
{
int i, j, num;
printf("何段ですか?:");
scanf("%d", &num);
for (i=0; i<num; i++) {
for (j=0; j<=i; j++) {
printf("*");
}
putchar('\n');
}
return 0;
}
0362デフォルトの名無しさん
2007/01/18(木) 01:21:360363デフォルトの名無しさん
2007/01/18(木) 01:31:15#include <stdio.h>
int main(void) {
int n = 6;
int i, j;
printf("ピラミッドを作りましょう。\n何段ですか?:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++) printf(" ");
for (j = 0; j < 2 * i + 1; j++) printf("*");
printf("\n");
}
return 0;
}
0364デフォルトの名無しさん
2007/01/18(木) 01:32:56(3)(>>363)に続いて(2)
#include <stdio.h>
int main(void) {
int n = 6;
int i, j;
printf("何段ですか?:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < i; j++) printf(" ");
for (j = 0; j < n - i; j++) printf("*");
printf("\n");
}
return 0;
}
0365デフォルトの名無しさん
2007/01/18(木) 01:36:31[2] 問題文(含コード&リンク):
名簿を作るプログラムを構造体関数ポインタで書くにはどうしたらよいですか教えてください。
書き込むほうをinputo、表示するほうをoutputでおねがいします。
struct meibo{
char name[15];
char address[40];
char tel[15];
};
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] できれば早く
[5] その他の制限:特になし
0366デフォルトの名無しさん
2007/01/18(木) 01:39:38その"inputo"は冗談だよな?
0367356
2007/01/18(木) 01:43:11本当にありがとうございます。
0368デフォルトの名無しさん
2007/01/18(木) 01:44:07> "構造体関数ポインタ" の検索結果 約 13 件中 1 - 8 件目 (0.88 秒)
0370デフォルトの名無しさん
2007/01/18(木) 09:16:09構造体(内) の 関数ポインタ
構造体関数 の ポインタ (C++ でメンバ関数のポインタ?)
構造体 をとる 関数 で 引数はポインタ
etc....
色々解釈できるな
0371デフォルトの名無しさん
2007/01/18(木) 09:19:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3438.zip
borland5.02とか使ったことないので、
ちゃんとmakeできるかどうか知りません。
0372デフォルトの名無しさん
2007/01/18(木) 10:11:09toupperを使ってできますか?
よろしくでお願いします
0373デフォルトの名無しさん
2007/01/18(木) 10:45:00できるよ
0374デフォルトの名無しさん
2007/01/18(木) 11:01:45でませんよ
>>372
0375デフォルトの名無しさん
2007/01/18(木) 11:05:23[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3439.txt
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限:2007/01/18
お願いします
0376デフォルトの名無しさん
2007/01/18(木) 12:18:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3441.txt
0377デフォルトの名無しさん
2007/01/18(木) 12:21:40設問 (2) が微妙だけど、その実装は 1+1/1!+ … +1/k! … +1/10! だよね。
>>375
1+1/1! + 1+1/2! + ・・・+1/10!
~~~~ こいつは誤植なのかどうなのか?
0378デフォルトの名無しさん
2007/01/18(木) 12:26:310380デフォルトの名無しさん
2007/01/18(木) 13:10:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3442.txt
0381デフォルトの名無しさん
2007/01/18(木) 13:13:120382デフォルトの名無しさん
2007/01/18(木) 13:14:470383デフォルトの名無しさん
2007/01/18(木) 13:14:55教えてください。
toupperを使ってのプログラムを
0384デフォルトの名無しさん
2007/01/18(木) 13:15:42>>99でいいんじゃないか?
0385デフォルトの名無しさん
2007/01/18(木) 13:21:12#include <stdio.h>
#include <ctype.h>
int main(void)
{
int c;
while ((c = getchar()) != EOF)
putchar(toupper(c));
return 0;
}
0386デフォルトの名無しさん
2007/01/18(木) 13:21:180387デフォルトの名無しさん
2007/01/18(木) 13:43:450388デフォルトの名無しさん
2007/01/18(木) 14:40:560389デフォルトの名無しさん
2007/01/18(木) 14:52:120390デフォルトの名無しさん
2007/01/18(木) 14:59:360391デフォルトの名無しさん
2007/01/18(木) 15:30:07[2] 問題文(含コード&リンク):
・テキストファイルを読み込んで指定した文字または文字列が何行目にあるか検索する。
・読み込むテキストファイルはコマンドライン引数から得る
・検索する文字、文字列はscanf()から得る
・scanf()から得た文字、文字列の配列はヒープで確保
・検索する文字、文字列がなければエラーメッセージを出して
再び文字、文字列を指定して再検索
・指定した文字、文字列がみつかれば、「○○は○行目にあります。」と表示する
・and検索、or検索もできるようにする
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1月20日に提出
[5] その他の制限:
何を習ったかはここを見てください!学校バレますがw
http://ylb.jp/c/
http://ylb.jp/2006b/proc/index.html
http://www.kyoto-su.ac.jp/%7Eyamada/programming/programmingB.html
自由製作課題なんで、習ってないやつを多少使っても大丈夫です!
よろしくお願いします!
0392デフォルトの名無しさん
2007/01/18(木) 15:49:30聞いたところによると、四千万人らしいぜ
[2] 問題文(含コード&リンク):
windowsマシンとLinuxマシンでのネットワークプログラミング
windowsマシンでコンピュータ名、ログインユーザ名を取得し、LAN内のLinuxマシンに送信。
Linuxマシンは送信されたデータを標準出力に表示するとともに、ファイルにも書き込む。
というものですが、windows側で取得した情報をLinux側に送信するとLinux側のプロンプトでは1文字だけしか表示されません。
文字コードの違いによるものらしいのですが、調べてもいまいちわかりませんでした。
windowsマシンでは TCHAR 型の文字列でこの情報を送信し、Linux側は char 型で受信しています。
できればwindows側でLinuxに対応した文字コードに変換したいのですが、何かいい方法はないでしょうか。
よろしくお願いします。
[3] 環境
[3.1] OS: Windows : XP Pro/Linux : Turbolinux Personal
[3.2] コンパイラ名とバージョン: Visual C++ 2005 Express Edition/cc
[3.3] 言語: C
[4] 期限: 2007年1月20日、正午まで
[5] その他の制限: 特になし
0394デフォルトの名無しさん
2007/01/18(木) 15:51:12この条件だけでやる気失せた。
こんなクソ課題出す教官はいますぐ死ね。
0396デフォルトの名無しさん
2007/01/18(木) 16:20:47一見簡単そうに見えて難しいことを要求しているのか(標準入力の巻き戻し?)
大きさを 決め打ちしてヒープで 受けろ ということなのか
0397デフォルトの名無しさん
2007/01/18(木) 16:46:44これの指定は?
0398デフォルトの名無しさん
2007/01/18(木) 16:48:35unsigned int sjis2euc(unsigned int sjis)
{
unsigned int hib, lob;
hib = (sjis >> 8) & 0xff;
lob = sjis & 0xff;
hib -= (hib <= 0x9f) ? 0x71 : 0xb1;
hib = (hib << 1) + 1;
if (lob >= 0x9e) {
lob -= 0x7e;
hib++;
} else if (lob > 0x7f) lob -= 0x20;
else lob -= 0x1f;
hib |= 0x80;
lob |= 0x80;
return (hib << 8) | lob;
}
0399デフォルトの名無しさん
2007/01/18(木) 17:19:040401デフォルトの名無しさん
2007/01/18(木) 17:23:14>>1
0402デフォルトの名無しさん
2007/01/18(木) 17:25:32and検索 or検索 は 指定が方法が不明なので未実装w
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3443.txt
0403デフォルトの名無しさん
2007/01/18(木) 17:27:46#include <stdio.h>
int main()
{
int c;
while ((c = getchar()) != EOF) {
putchar(c);
if (c == '.')
putchar('\n');
}
return 0;
}
0404デフォルトの名無しさん
2007/01/18(木) 17:36:28[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):
リバーシ(オセロ)を作れ。なおreverse(石を反す)、evalate(評価)、Tentative(仮置き)
turn(順番)、terminate(終了判定)、diffcrence(得失点差)、AlfaBeta(最良手)、Display(盤面データ)
Input(入力)、Level(レベル設定)等の関数を使い作成し、作成過程を3〜4段階にわけてレポートにすること。(コメントが明瞭な場合には加点する)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2007年1月23日、正午まで
[5] その他の制限: 最終的に3,4個のファイルが必要になります。授業では二分木やMin-MaX法、α−β法、リスト構造などを習いました。
基礎的なC言語の知識もあります。よろしくお願いします
0405デフォルトの名無しさん
2007/01/18(木) 17:36:310406デフォルトの名無しさん
2007/01/18(木) 17:37:250407デフォルトの名無しさん
2007/01/18(木) 17:45:15ttp://hp.vector.co.jp/authors/VA015468/platina/algo/
0408デフォルトの名無しさん
2007/01/18(木) 18:19:480409デフォルトの名無しさん
2007/01/18(木) 18:41:53[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3445.txt
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: な し
[5] その他の制限: よろしくお願いします
0410デフォルトの名無しさん
2007/01/18(木) 19:25:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3446.txt
0411355 ◆ZKcfds8GQA
2007/01/18(木) 19:42:43ありがとうございます。
やっぱり、エラー出てしまいました…
0412デフォルトの名無しさん
2007/01/18(木) 19:42:51名前にCRLFが混在するかもよw
で生年月はbuffから書式付きで食わせてるから NULL削除イラネ
0413デフォルトの名無しさん
2007/01/18(木) 19:45:00NULLじゃね〜〜 改行削除だったorz 颯爽と退場
0414デフォルトの名無しさん
2007/01/18(木) 20:02:47すいません。教えてください。
CRLFってWindowsの改行コードのことだと思うんですけど、
混在するとどの部分で問題になるんですか?
(すいません。
プログラムの練習のつもりでここで回答してるので
そういう詳しいところ良く分かんないんです…)
0415デフォルトの名無しさん
2007/01/18(木) 20:04:07とりあえずエラーメッセージ書いて
0416デフォルトの名無しさん
2007/01/18(木) 20:20:53[2] 問題文(含コード&リンク):
木構造の木とは、階層関係にあるデータを表現する構造です。
木は節点(ノード)と呼ばれる要素を階層状に関係つけたものになっている。
入力されたデータを2分探索木で作成し、その内容を表示するプログラムを作れ。
穴埋め形式の問題で自分なりに埋めてみましたがうまく動きません…。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3447.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007/01/20 PM01:00まで
[5] その他の制限: 上記のファイルを修正する形でお願いします。
0417デフォルトの名無しさん
2007/01/18(木) 20:37:00とりあえず明らかにおかしそうなのは、この辺だな。
- root = makeNode(p->left, w);
+ p = makeNode(p->left, w);
- root = makeNode(p->right, w);
+ p = makeNode(p->right, w);
- printf("%s\n", root);
+ printf("%s\n", p->word);
0418デフォルトの名無しさん
2007/01/18(木) 20:46:34- p = makeNode(p->left, w);
- p->left = makeNode(p->left, w);
- p = makeNode(p->right, w);
+ p->right = makeNode(p->right, w);
かな?
0419デフォルトの名無しさん
2007/01/18(木) 21:00:19[2] 問題文(含コード&リンク):
�T)double型のメンバ2つを要素とする構造体(名前は適当で)をつくり、
メンバをx座標、y座標と考えて3点の値を入力させ、その3点を頂点とする
三角形の重心を計算し、出力する。
�U)キーボードから1行入力すると、、その行が「output」という名前のファイルに
出力されるプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: 習った範囲は
�@if else文 �Awhile、do〜whileによる繰り返し
�Bfor文による繰り返し �Ccontinue文、break文
�D関数(作り方、呼び出し方、他モジュールにある関数、変数の扱い、記憶クラスと適応範囲)
�E1次、2次以上の配列、文字列の配列
�Fポインタ(使い方、配列との関係、関数との値の受け渡し) �G構造体、共用体
0421355 ◆ZKcfds8GQA
2007/01/18(木) 21:37:35エラーの内容です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3449.txt
お願いします。
0422デフォルトの名無しさん
2007/01/18(木) 22:03:54ごめん。俺には分からん
0423デフォルトの名無しさん
2007/01/18(木) 22:26:44bcc5.5.1ならコンパイルできたぞ
bcc5.02なんてやめてバージョンアップしちゃだめなのか?
0424デフォルトの名無しさん
2007/01/18(木) 22:40:03[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3450.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:bcc55
[3.3] 言語:C++
[4] 期限:2007/1/19
複数文ありますが、よろしくお願いします
0425355 ◆ZKcfds8GQA
2007/01/18(木) 22:40:28明日、bcc5.5.1にバージョンアップしてみます。
0426419
2007/01/18(木) 23:01:030427デフォルトの名無しさん
2007/01/18(木) 23:01:561)
#include<iostream>
#include<algorithm>
#include<functional>
#include<numeric>
using namespace std;
int main(){
const int size = 10;
int data[size];
for(int i=0;i<size;++i)
std::cin >> data[i];
int pos[size],neg[size];
int pos_size = remove_copy_if
(data,data+size,pos,bind2nd( less<int>(),0)) - pos;
int neg_size = remove_copy_if
(data,data+size,neg,bind2nd(greater<int>(),0)) - neg;
cout
<< "正の数の個数 = " << pos_size << " 和 = "
<< std::accumulate(pos,pos+pos_size,0) << endl;
cout
<< "負の数の個数 = " << neg_size << " 和 = "
<< std::accumulate(neg,neg+neg_size,0) << endl;
}
0428デフォルトの名無しさん
2007/01/18(木) 23:03:152)
#include<bitset>
#include<iostream>
#include<limits>
using namespace std;
int main(){
int n;cin >> n;
bitset<numeric_limits<unsigned int>::digits> sets(n);
for(int i=sets.size();i-->0;){
cout << sets[i];
if(!(i&3))cout << (i?' ':'\n');
}
}
0429デフォルトの名無しさん
2007/01/18(木) 23:27:24#include <stdio.h>
#define input(p) printf(#p ": "),scanf("%lf %lf", &p.x, &p.y)
#define output(p) printf(#p ": %f %f", p.x, p.y)
struct Point { double x, y; };
int main(void) {
struct Point a, b, c;
input(a);
input(b);
input(c);
struct Point g = { (a.x + b.x + c.x) / 3, (a.y + b.y + c.y) / 3 };
output(g);
return 0;
}
0430デフォルトの名無しさん :
2007/01/18(木) 23:42:25[2] 問題文(含コード&リンク):
学籍番号(5桁の英数文字列)、英、数、国の得点(各100点満点)を
次々に読み込んで、各人の総得点を計算して出力せよ。
前スレと同じですが平均や偏差はいりません。
・学生の人数は100人以下で不定とする。(100人以下なら何人でも、
プログラムを修正せずにうまく対処しなければならない)
・学生一人のデータは構造体としてまとめて、それにStudentという
データ型名をつけること。
・Student型を要素とする配列を用意してプログラムを組むこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年1月21日) 構造体は用意しました。これを使ってください。
#include<stdio.h>
#include<math.h>
typedef struct {
charid[6];
inttotal, jap, math, eng,}
Student;
皆さんお願いします。
0431デフォルトの名無しさん
2007/01/18(木) 23:46:25[2] 問題文(含コード&リンク):
英文を入力しアルファベットa〜z(大文字と小文字の区別なし)の出現回数を表示するプログラム
まだ、stdio.hしか習ってません。
過去ログも検索しましたが、標準ライブラリなどを使ってたのでダメでした。
アルファベット数だけ配列を用意し、文字列を順番にチェックして、その配列にカウントするらしいですが
文字列のチェックがわかりませんでした…。
よろしくです。
0432デフォルトの名無しさん
2007/01/18(木) 23:51:27[2] 問題文(含コード&リンク):
配列のデータを昇順で並び替えるプログラムを作成せよ
ただし、次の誕生日をデータとし、月と日を2つの配列に入力してから
関数を呼び出して、並び替えなさい。
なお、入力形式は月/日として、/をデータの区切りとして、以下五件の
データを入力しなさい。
09/15,03/21,12/31,05/05,04/29
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:すいません。分かりませんので
色々書いときます…
visual C++ win32 コンソールアプリケーション
[3.3] 言語: C
等々)
[5]手順としてはまずデータを文字列配列で入力して、ポインタ配列でそれを
数字に変換し、その後ポインタ配列を使って並び替えると思うのですが、
プログラムが作れません。ヒントでも結構ですので、ご教授ください。
0433デフォルトの名無しさん :
2007/01/18(木) 23:56:21[2] 問題文(含コード&リンク):
非負整数h、m、sを入力して、h時間m分s秒に相当する
時間の長さを秒単位に変換して出力せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2007/1/22
0434デフォルトの名無しさん
2007/01/18(木) 23:56:46出力形式の指定がないから適当だが、こんな感じかね。
#include <stdio.h>
#define ALPHABETS 26
int main(void) {
int c, count[ALPHABETS] = {}, i;
while((c = getchar()) != EOF) {
if('a' <= c && c <= 'z') count[c - 'a']++;
else if('A' <= c && c <= 'Z') count[c - 'A']++;
}
for(i = 0; i < ALPHABETS; i++) {
printf("%c\t%d\n", i + 'A', count[i]);
}
return 0;
}
0435430
2007/01/18(木) 23:59:060436431
2007/01/19(金) 00:05:54ありがとうございます!!!
0437デフォルトの名無しさん
2007/01/19(金) 00:06:08そのくらい自分でがんばれよ
#include <stdio.h>
int main(void) {
int h, m, s;
printf("h: ");scanf("%d", &h);
printf("m: ");scanf("%d", &m);
printf("s: ");scanf("%d", &s);
printf("%dh %dm %ds = %ds", h, m, s, (h * 60 + m) * 60 + s);
return 0;
}
0438デフォルトの名無しさん
2007/01/19(金) 00:07:26printf("%u",h*60*60+m*60+s);
これだけでわかるだろ
0439デフォルトの名無しさん
2007/01/19(金) 00:20:47>>427-428さん本当にありがとうございました。
ただ、制限を書いていない問題のほうをアップしてしまっていて。。。
制限を修正したものが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3452.txt
こちらになります。
もし宜しければ再度よろしくお願いします。
0440355 ◆ZKcfds8GQA
2007/01/19(金) 00:23:04bcc5.5.1にバージョンアップして見ましたが、エラーが出てしまいます。
エラーの内容は、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3453.txt
です。
よろしくお願いします。
0441デフォルトの名無しさん
2007/01/19(金) 00:23:59ありがとうございます!!
あとはなんとかやってみます!!
0442デフォルトの名無しさん
2007/01/19(金) 00:26:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3454.txt
0443デフォルトの名無しさん
2007/01/19(金) 00:27:57インクルードファイルのパスがおかしいんじゃね?
0444デフォルトの名無しさん
2007/01/19(金) 00:36:23442さんありがとうございます。
まだ習ってない物が一杯で正直意味不明ですが、デバックなしで開始して
教授に見せれば良いので、考えてどうしてもわからなかったら
これで乗り切らせていただきます。
本当にありがとうございました。
今からこちらを参考にして何とか習った範囲で自力で作ってみます!!
0445デフォルトの名無しさん
2007/01/19(金) 00:44:15始めに何語で検索するかをscanfで得る→1語ならそのまま検索
→2語以上ならandまたはor検索をどちらか選択し検索
としたいのですが・・・説明不足ですみません。
0446355 ◆ZKcfds8GQA
2007/01/19(金) 00:49:07stdlib.hを入れなおして見ました。
stdlib.hに関するエラーは消えたと思います。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3456.txt
よろしくお願いします。
0447デフォルトの名無しさん
2007/01/19(金) 00:49:30とりあえずマルチはやめれ
0448デフォルトの名無しさん
2007/01/19(金) 01:08:02ちょっと確認だけど、borland5.5って、どこに入れたの?
>>440見ると、C:\BC5\INCLUDE\ってなってて
デフォルトのパスと違うみたいだけど、
これはこれであってるのかな?
あとbcc32.cfgの設定とかも大丈夫?
0449デフォルトの名無しさん
2007/01/19(金) 01:22:02[2](1)キーボードから5個の整数を配列に入力し、それらの平均を求める
プログラムを作成せよ、ただし次の関数を作成し用いること。
void average(int *in double *result);
in 入力する整数の配列
result 合計結果
戻り値 なし
(2)(1)のプログラムをメモリの動的確保を行うことでN個の整数を配列に
格納し平均を求めるプログラムに改良せよ。
[3.1]Windows
[3,2]bcc
[3.3]言語 C++
[4]1月19日15時まで
0450355 ◆ZKcfds8GQA
2007/01/19(金) 01:24:01borland5.5は、C:\BC5に入れました。
デフォルトと違うのは、旧バージョンのコンパイラがC:\BC5\だったので、アップデート用のbcc5.5を上書きしてみました。
bcc32.cfgは、
-IC:\BC5\INCLUDE
-LC:\BC5\LIB
となっています。
0451デフォルトの名無しさん
2007/01/19(金) 02:02:40[2] 問題文(含コード&リンク):
1.整数値を受取り、戻り値として階乗を返す関数int factorial(int m)を作成しなさい
2.上記1の関数を利用して以下の式を計算し計算結果を表示するプログラムを完成させなさい
1+1/1!+1/2!・・・+1/10!
ここでk!はkの階乗を表す
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: study C
[3.3] 言語: C
[4] 期限: 今日の7時まで
[5] その他の制限: 特になし
よろしくお願いします
0452デフォルトの名無しさん
2007/01/19(金) 02:58:25>>375とおんなじじゃねぇかよ
階乗の問題だけ抜けてるだけだし
なに?はやってんの?
俺が書いたソースは>>380
それより先にソースアップしたのが>>376さん
だからそれらのリンク先を見ろ
0454デフォルトの名無しさん
2007/01/19(金) 03:12:12int factorial(int m) {
int x;
for(x=m; m>1; x*=(--m));
return x;}
>>380の
int factorial(int n){
int i; if(n == 0 || n == 1) return 1;
呼び出される回数が少ないにしろ、不必要な判別までする必要はない。
0455デフォルトの名無しさん
2007/01/19(金) 03:26:44#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define EXPANDS_SIZE 32
void average(int *in, double *result)
{
int t = 0;
for(int i = 0; in[i] != NULL; ++i){ t += in[i];}
*result = (double)t / ((i > 0) ? (i) : (1));
}
int main(void)
{
int *p = (int*)malloc(sizeof(int) * (EXPANDS_SIZE + 1));
int elemsize = EXPANDS_SIZE, count = 0;
char buf[64];
while(fgets(buf, sizeof(buf), stdin)[0] != '\n'){
if(count >= elemsize){
p = (int*)realloc(p, sizeof(int) * (elemsize + EXPANDS_SIZE + 1));
elemsize += EXPANDS_SIZE;
}
p[count++] = atoi(buf);
}
p[count] = NULL;
double ave;
average(p, &ave);
printf("average: %lf\n", ave);
free(p);
return 0;
}
0457デフォルトの名無しさん
2007/01/19(金) 03:59:23使わなきゃイイじゃん
0458デフォルトの名無しさん
2007/01/19(金) 04:05:440459デフォルトの名無しさん
2007/01/19(金) 04:06:470460デフォルトの名無しさん
2007/01/19(金) 04:16:330461デフォルトの名無しさん
2007/01/19(金) 04:26:39・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
0462デフォルトの名無しさん
2007/01/19(金) 04:43:30>>380は動いたぞ
0463デフォルトの名無しさん
2007/01/19(金) 05:05:53>>380って色んなものくっついてない?
どれを削ればいいのかわからんから一から作ってるんだけど
プロトタイプ宣言なしに関数が開かれようとしてますとか関数の型が一致しませんって出る・・・
0465デフォルトの名無しさん
2007/01/19(金) 07:33:33それコンパイラやのうてインタプリタ
0466デフォルトの名無しさん
2007/01/19(金) 07:40:06std使ってないし、CPPにする必要ないんじゃ・・・
素直に<std.io.h>と<stdlib.h>に変更して
//#include <iostream>
//using namespace std;
#include <stdio.h>
#include <stdlib.h>
for文のカウンタ( i )の宣言場所を変えればいいだけなんだが
//for( int i=・・・・
int i;
for( i=・・・・・
わざわざCPPにしてるのは?何か問題あるのか?
それと回答者側には今更言うまでも無い事だが
using を使う場合には
空間名を使用する直前で個々に付けるようにして欲しい
http://www.ksky.ne.jp/~seahorse/cpp/using.html
http://www.geocities.jp/bleis_tift/cpp/badstd.html
0468デフォルトの名無しさん
2007/01/19(金) 08:54:51using を全体にかけるのが良くないというのはまともな開発での話し。
高々100行程度で、全体が容易に見通せるようなプログラムであれば
何の問題も発生しない。
実際あなたが紹介している二つ目のサイトには
>これの問題は、 超広大なstd名前空間がそのファイル内で
>グローバル(となんら変わらないもの) になってしまう点です。
と書いてあるが、ここの回答のプログラムはほとんど 1 ファイルで
完結するので、この問題点の指摘は該当しない。
0469デフォルトの名無しさん
2007/01/19(金) 09:29:15>グローバル(となんら変わらないもの) になってしまう点です。
この1点の意味を考えれば「1ファイル完結なら指摘は該当しない」とのレスは出来ないはず
C++でも他言語でも他オブジェクトから使う物は、
その根拠を個々に示すのが正しいし言語仕様で規制されてるものもある
なんといっても、ゆくゆくはバグ原因の排除に繋がる
0470デフォルトの名無しさん
2007/01/19(金) 10:03:12こんなテストコードで名前空間汚染なんか関係ねー
0471デフォルトの名無しさん
2007/01/19(金) 10:05:460472デフォルトの名無しさん
2007/01/19(金) 10:15:14> ゆくゆくはバグ原因の排除に繋がる
たかが宿題の回答に「ゆくゆく」って、何言ってんだw
んなこと分かってるけど「ここで気にする必要は無い」から
タイプ量減らすために
using namespace std;
してるんだろ。
TPOを考えれ。
0473デフォルトの名無しさん
2007/01/19(金) 10:19:47つっこみどこ満載の回答もあるw
質問者は回答者を選べないしウンに任せるしかないがw
回答者側には、その程度のスキルはあるし判ってやってるのも理解できる
が、宿題の回答としては些細なモノでもマナーは守るべきではないかな
システム開発従事者であればなおさら・・・
0474デフォルトの名無しさん
2007/01/19(金) 10:26:26> つっこみどこ満載の回答もあるw
ここだけは同意。後は同意せんな。
> システム開発従事者であればなおさら・・・
なぜそう思うのか?あんたは休日にもスーツを着ているのか?
教育的であることが将来のマシな同業者の育成につながるかもしれないから、
と考えているなら一つだけ言っておく。
宿題を丸投げするような奴が「マシな同業者」になるとでも思ってるのか。
丸投げされた宿題に答えてやることが本人のためになるとでも思ってるのか。
良く考えるんだな。いかに自分がマヌケなことを言っているのかを。
0475デフォルトの名無しさん
2007/01/19(金) 10:35:12もちろん、休日にスーツを着る事もあるし平日の夜中にパジャマでコード直すこともあるorz
システムは止まらない!
まるなげ結構!質問して回答を得る、貰ったソースを実行してみる、
それだけでも学校行ってから丸写しする奴よか何倍もマシ
0476デフォルトの名無しさん
2007/01/19(金) 10:35:18名前空間に気をつけるのは宿題程度のプログラムに要求されるマナーではない。
0477デフォルトの名無しさん
2007/01/19(金) 10:40:16>名前空間に気をつけるのは宿題程度のプログラムに要求されるマナーではない。
これは初耳ですw ソースキボンw
0478デフォルトの名無しさん
2007/01/19(金) 10:41:54常識ないッスかwww
0479474
2007/01/19(金) 10:42:42比喩を全く解していないようだな。
要するにあんたは頭が固いのだろう。だからどこでも「いつもの俺様のやり方」
を通そうとする。
Brian KernighanやBjarne Stroustrupはあんたほど頭が固くは無いから、
hello, worldの例のmainの宣言は
main()
だし、using namespace std だって平気で使う。それも教科書でだ。
0480デフォルトの名無しさん
2007/01/19(金) 10:46:570481デフォルトの名無しさん
2007/01/19(金) 10:47:12能無しSEにはTPOという単純な概念すら理解不能らしい。
0482デフォルトの名無しさん
2007/01/19(金) 10:49:23おれも頭固いかもしれんが、コンパイラはもっと頭かたいぞw
要は知っててやってる事なのか、より明示的に書いた方が親切なのかって事さ
動きゃイイってソースを何万回も読んでると
根源で絶てるものなら芽を摘んでおきたいw
0483デフォルトの名無しさん
2007/01/19(金) 10:58:43プログラムを作りたいっ暇つぶしのネタが欲しいっ!
ああんもっと!質問ください!プログラムを作りたい欲求を満足させてください!
もうダメっ!ああ!イク!イクーーーー^^^^^
0485デフォルトの名無しさん
2007/01/19(金) 11:06:450486デフォルトの名無しさん
2007/01/19(金) 11:10:21できない人に文章で説明するのは時間と手間と場所がかかる。
できる人をとっ捕まえて小一時間説明してもらったほうが早い。
0487404
2007/01/19(金) 11:23:25やっぱり手間がかかりすぎますか・・・・。
もうぶっちゃけ僕の中で
宿題完成>>>>>>理解>>>>>プライド
なので、宿題をお願いします。
15回の授業で理解できなかった実績があるので理解は春休みに回すことにします
0488デフォルトの名無しさん
2007/01/19(金) 11:27:13[2] 問題文(含コード&リンク):
三次元空間中の点の集合 a = [a_1, ..., a_n] が与えられる。
これらを全て含む最小の球(中心と半径)を効率よく求めよ。
#効率は入力としてランダムな 10000 個程度の点を与えたとき
#それほど長時間待たずに結果が出れば十分とする。
[3] 環境
[3.1,3.2] OS, コンパイラ: 問わず
[3.3] 言語: どちらでも可
[4] 期限: 1月21日程度
[5] その他の制限: 特になし
0489デフォルトの名無しさん
2007/01/19(金) 12:16:21点 包含 最小 球 - Google 検索
0490デフォルトの名無しさん
2007/01/19(金) 12:37:02VS2005 VC++ MFCダイアログベースでちょっとしたアプリケーションを作ったんですが、ウィンドウやボタンが古い表示形式に
なっています。これをXP風のボタンやウィンドウにするにはどうしたらいいでしょうか?よろしくお願いします。
0491デフォルトの名無しさん
2007/01/19(金) 12:41:01黙れボケ
0492デフォルトの名無しさん
2007/01/19(金) 13:04:05スレ違い
0493デフォルトの名無しさん
2007/01/19(金) 13:42:12[2]問題文(含コード&リンク): 1番からn番までの番号のついた点が
平面上に与えられているとする。座標データが配列などにしまわれて
いるが、その詳細は関係ないとする。これらの点のいくつかを頂点と
する凸多角形を、頂点番号を反時計回りに格納した配列p[]と、頂点
数を表す変数kにより表現することにするとにする。この方式により、
配列p1[]と変数k1により表現された凸多角形P1、および配列p2[]と変
数k2により表現された凸多角形P2が与えられたとする。ここで、P1は
完全にP2の左側にある、すなわちP1のどの頂点のx座標も、P2のどの
頂点のx座標よりも小さいものと仮定する。さらに、P1とP2の上側共
通接線が点p1[u1]と点p2[u2]を結ぶものであり、下側共通接線が
点p1[d1]と点p2[u2]を結ぶものであるとするとき、u1、u2、d1、d2の
値が既に求まっているものとする。
これらの仮定の下に、P1とP2の頂点集合をあわせた点集合の凸包を求め
て、配列p[]および変数kで表現するアルゴリズムをCの記法で記述せよ。
また、入力データは以下のものとする。
k1=6 p1の内容:5、7、3、8、9、1
k2=9 p2の内容:11、17、15、13、16、12、18、20、14
u1=2、u2=7、d1=5、d2=3
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2007年1月23日 正午まで
その他の制限:特になし
0494デフォルトの名無しさん
2007/01/19(金) 13:44:460495デフォルトの名無しさん
2007/01/19(金) 13:54:18[2] 問題文(含コード&リンク) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3458.txt
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:vs2003
[3.3] 言語: C
[4] 期限:1.23
[5] その他の制限:特になし
0496デフォルトの名無しさん
2007/01/19(金) 15:46:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3459.txt
題意では t = log2n - 1 となっているが、これを log(2n) - 1 と読むと
N = 10では間隔が 1 になってしまい、シェルソートの意味が無くなって
しまうので、勝手に log(2)(2n) - 1 と読み替えた。
0497デフォルトの名無しさん
2007/01/19(金) 16:00:37じゃあちょっと改造する。
0498デフォルトの名無しさん
2007/01/19(金) 16:09:30>>495
まぁ別解
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3460.c
こっちはlog2 (n-1)でやってる
>>496の推察のほうが正しそうだが
0499デフォルトの名無しさん
2007/01/19(金) 16:14:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3462.txt
作りかえた。
>>496のは間違えないように消去してあります。
0500デフォルトの名無しさん
2007/01/19(金) 16:21:44ちなみに後者の方法でやると交換回数が減る。一回目の間隔が
広すぎて無意味になるからだろう。
0501496
2007/01/19(金) 16:32:39さらに修正。
Nが10固定なのに変動させていてしまったバグ(>>499で混入)を
修正。
0502デフォルトの名無しさん
2007/01/19(金) 17:18:290503デフォルトの名無しさん
2007/01/19(金) 18:07:55これの答え教えてもらえませんか?
0504デフォルトの名無しさん
2007/01/19(金) 18:08:410505503
2007/01/19(金) 18:26:26誘導ありがとうございます。
では改めて
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3455.txt
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:NoEditor Ver4.4.3
[3.3] 言語: C
[4] 期限: 07/01/19 23:59
[5] その他の制限:特になし
今の今までこっちに貼ることに気づかず…こんな時期になってしまいました。
可能でありましたら、今日中に答えを教えていただきたいです。
長文&スレ汚し申し訳ないです。
0506デフォルトの名無しさん
2007/01/19(金) 18:30:350507デフォルトの名無しさん
2007/01/19(金) 18:30:470508デフォルトの名無しさん
2007/01/19(金) 18:33:100509デフォルトの名無しさん
2007/01/19(金) 18:36:48タブ式エディタってでる
0510デフォルトの名無しさん
2007/01/19(金) 18:37:31ttp://www.yokkasoft.net/download/
0511デフォルトの名無しさん
2007/01/19(金) 18:59:43#include <stdio.h>
#define KEIO "慶応"
#define MEIJI "明治"
#define TAISHO "大正"
#define SHOWA "昭和"
#define HEISEI "平成"
#define output(g, y) (y == 1 ? printf("%s元年\n", (g)) : printf("%s%d年\n", (g), (y)))
int main(void) {
int y;
scanf("%d", &y);
if(y < 1868 || 2006 < y) return 1;
if(y == 1868) output(KEIO, 3), output(KEIO, 4), output(MEIJI, 1);
else if(y <= 1872) output(MEIJI, y - 1868), output(MEIJI, y - 1867);
// ここまで天保暦
else if(y <= 1911) output(MEIJI, y - 1867);
else if(y == 1912) output(MEIJI, 45), output(TAISHO, 1);
else if(y <= 1925) output(TAISHO, y - 1911);
else if(y == 1926) output(TAISHO, 15), output(SHOWA, 1);
else if(y <= 1988) output(SHOWA, y - 1925);
else if(y == 1989) output(SHOWA, 64), output(HEISEI, 1);
else output(HEISEI, y - 1988);
return 0;
}
0512デフォルトの名無しさん
2007/01/19(金) 19:25:170513デフォルトの名無しさん
2007/01/19(金) 19:45:19#include <stdio.h>
int main()
{
int sei,wa;
char *wareki[4]={"明治","大正","昭和","平成"};
printf("1868〜2006年までの西暦を入力。 \n");
scanf("%d",&sei);
if(sei >= 1868 && 1912 > sei){
wa = sei - 1867;
printf("%s%d年\n",wareki[0],wa);}else if(sei == 1912){
wa = sei - 1867;
printf("%s%d年%s%d年\n",wareki[0],wa,wareki[1],1);}else if(sei > 1912 && 1926 > sei){
wa = sei - 1911;
printf("%s%d年\n",wareki[1],wa);}else if(sei == 1926){
wa = sei - 1911;
printf("%s%d年%s%d年\n",wareki[1],wa,wareki[2],1);}else if(sei > 1926 && 1989 > sei){
wa = sei - 1925;
printf("%s%d年\n",wareki[2],wa);}else if(sei == 1989){
wa = sei - 1925;
printf("%s%d年%s%d年\n",wareki[2],wa,wareki[3],1);}else if(sei > 1989 && 2007 > sei){
wa = sei - 1988;
printf("%s%d年\n",wareki[3],wa);}else{
printf("入力は1868〜2006年までです。");}
return 0;}
0514ぐ
2007/01/19(金) 20:22:09わからないので片付けてもらえませんか。
お願いします。
http://jbbs.livedoor.jp/bbs/read.cgi/business/5385/1168697014/4
0515デフォルトの名無しさん
2007/01/19(金) 20:33:29[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3466.txt
] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1/22
[5] その他の制限: PADが無理ならヒントでいいです
0516203.419
2007/01/19(金) 21:04:51誰っすか?(´・ω・`)
>>429さんありがとうございます!
>>203の(�U)の問題に追加なんですが、
最初に整数を18個入力してから積を求めるプログラムお願いします。
0517デフォルトの名無しさん
2007/01/19(金) 21:13:25#include <stdio.h>
#include <math.h>
double f(double x)
{
return pow(4.0 - x * x, 0.5);
}
int main(void)
{
int i, n, first = 1;
const double a = 0., b = 2.;
double h, s, x, res;
n = 200;
h = (b - a) / n;
for (i = 1, s = 0., x = a; i <= n - 1; i++) {
x += h;
s += f(x);
}
res = h * ((f(a) + f(b)) / 2. + s);
printf("∫[x = %e, %e] (4 - x^2)^(1/2)dx = %.10g\nin %d loops\n", a, b, res, n);
return 0;
}
PADはわからんゴメン
0518デフォルトの名無しさん
2007/01/19(金) 21:28:27それヒントに頑張ってみます
PADばっかり書かせる教授って普通ですか?
授業で大して触れなかったくせにレポートはPADばっかり
0520516
2007/01/19(金) 21:55:200521433
2007/01/19(金) 22:30:090522デフォルトの名無しさん
2007/01/19(金) 22:40:07[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3469.txt
[3] 環境
[3.1] OS: TurboLinux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年01月23日12:00
[5] その他の制限: 特になし
お願いします。
0523デフォルトの名無しさん
2007/01/19(金) 23:03:24[2] 2 次元平面上の点 (x,y) を, 原点を中心に半時計回りに r_degree 度だけ
回転させた点に変換する関数 void rotate(double* x, double* y, double r_degree) を作成せよ
[3] 環境
[3.1] Windows
[3.2] cygwin
[3.3] C
[4] 期限: 2007年1月22日
[5] 小数点はinclude<math>の中に入ってる奴でおk。メインから呼び出すから関数だけでいいです
よろしくです
0524355 ◆ZKcfds8GQA
2007/01/19(金) 23:03:42[2] 問題文(含コード&リンク):
・数独を完成させよ。
・マスが全て埋まったら、自動的に答え合わせを行う。
・間違っている箇所は、強調表示する。
・正解までの時間を表示すること。
・問題は、mondaiファイルを読み込ませる。
・mondaiファイルは、自分で作ること。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:bcc5.5.1
[3.3] 言語:C言語
[4] 期限:2007/01/22 12:00マデ
[5] その他の制限:以前作ったプログラムを元に完成させること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3438.zip
(↑このスレで作っていただきました。)
この時点でのエラーは、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3456.txt
よろしくお願いします。
0525デフォルトの名無しさん
2007/01/19(金) 23:04:21専門分野特有の課題になりつつあるねぇ〜w
0526107
2007/01/19(金) 23:06:39[2] 問題文(含コード&リンク): 自動販売機のプログラム
http://rich-mania.com/newpage1.html
ここまではおかげさまで作れたけど、売り切れの時のランプ点灯・ボタン受付拒否
120円切ったときの取引可能のランプ消灯、お釣りの金種計算・払い出し(500円以上は500円玉が1枚、100円玉が何枚とか・・・)
がわからない・・・。間違えも多いと思いますし・・・まず120円以上のとき、がわかってないです・・・。
どなたか完成してもらえないでしょうか??
期限が迫ってきたので、大変恐縮ですがお願いします・・・
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:わかりません・・・
[3.3] 言語: C
[4] 期限: 1月末まで
[5] その他の制限: ある程度までは制限していいらしいけど・・・
他力本願で申し訳ないですが、よろしくお願いします!
0527デフォルトの名無しさん
2007/01/19(金) 23:09:12[2] 問題文(含コード&リンク):
テキストファイルを1ページ当たり15行で印刷するプログラムを作成せよ。
なお、各ページに作成者氏名、テキスト名、印刷日時、ページ番号等のヘッディングをつけ
各行には行番号を付けなさい。
処理するテキストファイル↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3470.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1-25
[5] その他の制限:特になし
1ページ当たり15行で印刷っていうのがどうやればいいか分かりません。
ご教授お願いします
0528デフォルトの名無しさん
2007/01/19(金) 23:20:22void rotate(double* x, double* y, double r_degree){
double old_x, old_y, theta;
old_x=*x;
old_y=*y;
theta=M_PI/180.0*r_degree;
*x=old_x*cos(theta)-old_y*sin(theta);
*y=old_x*sin(theta)+old_y*cos(theta);
}
0529デフォルトの名無しさん
2007/01/19(金) 23:29:49変数名が気に入らない
というよりネットで稼ぐが気になる
0530デフォルトの名無しさん
2007/01/19(金) 23:44:41#include<string.h>
struct eisei{ char *name; /*衛星名*/ int kode; /*光度*/ double shuki; /*周期*/};
#define N 5
int main(){
static struct eisei jupitar [ ] = {{"Callisto", 6,16.6890},{"Europa", 6, 3.5512},{"Ganymede", 5, 7.1545},{"Io", 5, 1.7691},{ NULL, 0, 0.0 }};
struct eisei *pj;
int sort[N];
int a,b,c,d,tmp;
pj = &jupitar[0]; /*(pj=jupitar)*/
for(a=0;(pj->name) != NULL;++a) /*初期化*/ sort[a]=a;
for(c=0;c<a;++c) /*バブルソート*/
for(b=c;b<a;++b){
if(pj[b]->shuki>pj[b+1]->shuki){
tmp=sort[b]; sort[b]=sort[b+1]; sort[b+1]=tmp;
}
}
printf("(1)の解答\n");
for(d=0;d<=a;++d) printf("%10s%3d%8.4f\n", pj[sort[d]]->name, pj[sort[d]]->kode, pj[sort[d]]->shuki); /*(1)+/
/*(2)*/
for(a=0;(pj->name) != NULL;++a) /*初期化*/ sort[a]=a;
for(c=0;c<a;++c) /*バブルソート*/
for(b=0;b<a;++b){
if( strlen(pj[b]->name) > strlen(pj[b+1]->name) ){
tmp=sort[b]; sort[b]=sort[b+1]; sort[b+1]=tmp;
}
}
printf("(2)の解答\n");
for(d=0;d<=a;++d) printf("%10s%3d%8.4f\n", pj[sort[d]]->name, pj[sort[d]]->kode, pj[sort[d]]->shuki); /*(2)+/
return 0;
}
0531デフォルトの名無しさん
2007/01/20(土) 00:04:35動作はともかく実際現場でこういう書き方してるマがいるのはゾッっとする
0532デフォルトの名無しさん
2007/01/20(土) 00:11:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
makeできなくても知りません。
問題&解答ファイルは自分で作ってください。
0533デフォルトの名無しさん
2007/01/20(土) 00:33:01pj = &jupitar[0]; /*(pj=jupitar)*/
for(a=0;(pj->name) != NULL;++a) /*初期化*/ sort[a]=a;
0534デフォルトの名無しさん
2007/01/20(土) 00:38:40>>530 はおそらく動作確認をしてない
バブルソートの部分も…
0535デフォルトの名無しさん
2007/01/20(土) 00:51:12fp = popen("lpr", "w");
のようにlprへのパイプを開いて、後は普通に
fprintf()で行数を数えながら出力していけばよい。
0536355 ◆ZKcfds8GQA
2007/01/20(土) 00:57:30ありがとうございました。
makeはできませんでした。
[1] 授業単元:演習 其の3
[2] 問題文(含コード&リンク):
・数独を問題選択可能にする。
・起動時に、100問から自由に選べるようにする。
・解答チェックは、解放プログラムを組み込むこと。
・正解した時に、「正解です」と表示させる。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:bcc5.5.1
[3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。
よろしくお願いします。
0537ぐ
2007/01/20(土) 01:02:52よろしくお願いします。
[1] 授業単元: 人工知能
[2] 問題文(含コード&リンク): http://jbbs.livedoor.jp/bbs/read.cgi/business/5385/1168697014/4
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年1月28日hh:mmまで
[5] その他の制限: どこまで習っているか 基本的な文法 ポインタ等
0538デフォルトの名無しさん
2007/01/20(土) 02:11:45さて、リンク先に図がないわけだが。
0539107
2007/01/20(土) 03:55:12すまん、めんどくさかったから自分のホームページにアップしたんだよ・・・
稼ごうとしてるんじゃないから!
マジでわからんのよ・・・
変数が気に入らないとか言われても素人レベルの俺にはさっぱりだよ・・・
ここにいる人たちが最後の希望なんだよ・・・
0540デフォルトの名無しさん
2007/01/20(土) 03:56:40言語指定はCなのにソースがJavaで書かれてるのはいったい・・・
>>その他の制限: ある程度までは制限していいらしいけど・・・
イミフ
>>531
禿同
まぁ>>522のソースも相当ひどいけどな
0541522
2007/01/20(土) 08:01:55ソースは課題のプリントをそのまま書き写したのです。
結局、>>530は間違いなのですか?
他にも解法をお待ちしていますので。
よろしくお願いします。
0542デフォルトの名無しさん
2007/01/20(土) 09:30:40オレ的経験則
ポインタで宣言されたものを配列で扱ってるソースはアヤシイ、その逆もアヤシイ
動作はシラネ
0543537
2007/01/20(土) 11:08:25よろしくお願いします。
[1] 授業単元: 人工知能
[2] 問題文(含コード&リンク): http://syoukenhikaku.web.fc2.com/aaa.png
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年1月28日hh:mmまで
[5] その他の制限: どこまで習っているか 基本的な文法 ポインタ等
0544デフォルトの名無しさん
2007/01/20(土) 11:36:05とりあえず自分はこんなかんじになった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3478.txt
>>542
そんな経験則を得るようなところには行きたくないもんだ。
0545デフォルトの名無しさん
2007/01/20(土) 12:24:29[2] 問題文(含コード&リンク): 連結な無向グラフが一筆書き可能である、すなわち各枝をちょうど
一回だけ通るような道が存在するための必要十分条件は、すべての
節点が偶数次であるか、もしくは奇数次の節点がちょうど二つある
ことである。連結な無向グラフが一筆書き可能かどうかを調べ、更
に可能であるときには、その軌道を実際に見つけ出すプログラムを
つくれ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:1月23日まで]
[5] その他の制限:制限はないです。どうかよろしくお願いします。
0546デフォルトの名無しさん
2007/01/20(土) 12:45:18//int JupiterSat_OrderPrint(char *Title, int (*OrderFunc)(SATELLITE_T *a, SATELLITE_T *b))
void JupiterSat_OrderPrint(char *Title, int (*OrderFunc)(SATELLITE_T *a, SATELLITE_T *b))
int main()
{
// JupiterSat_OrderPrint("(1) Cycle Order", JupiterSat_CycleOrder);
JupiterSat_OrderPrint("(1) Cycle Order", (int(*)())JupiterSat_CycleOrder);
printf("\n");
// JupiterSat_OrderPrint("(2) Name Length Order", JupiterSat_NameLengthOrder);
JupiterSat_OrderPrint("(2) Name Length Order", (int(*)())JupiterSat_NameLengthOrder);
return 0;
}
SEはPGを選べない、レビューしてるのか教育してるのかワカラン現実がある
0547デフォルトの名無しさん
2007/01/20(土) 14:34:51[2] 問題文(含コード&リンク):
次の構造体 dnode があります。
struct dnode {
char name[32];
int data;
struct dnode *next;
struct dnode *prev;
};
struct dnode *head, *tail; /* 変数 head/変数 tail */
これによって、引数のノードを双方向連結リストから外す関数 rem_node を作ってください
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語: (どちらでも可)
[4] 期限: 明日
[5] その他の制限:
0548デフォルトの名無しさん
2007/01/20(土) 14:52:07伊庭さんとかのしか見つからなくて
0549デフォルトの名無しさん
2007/01/20(土) 14:55:570550デフォルトの名無しさん
2007/01/20(土) 15:09:40void rem_node(struct dnode *node) {
if(node == head && node == tail) {
head = tail = NULL;
} else if(node == head) {
head = node->next;
node->next->prev = NULL;
node->next = NULL;
} else if(node == tail) {
tail = node->prev;
node->prev->next = NULL;
node->prev = NULL;
} else {
node->prev->next = node->next;
node->next->prev = node->prev;
node->next = node->prev = NULL;
}
}
0551デフォルトの名無しさん
2007/01/20(土) 15:09:42void rem_node(int n) {
struct dnode *p = head;
while(n>0) {
if(p==tail) return;
p = p->next;
n--;
}
p->prev->next = p->next;
p->next->prev = p->prev;
}
0552デフォルトの名無しさん
2007/01/20(土) 15:42:17void rem_node(struct dnode *head, struct dnode *tail, struct dnode *node)
{
if ( head==node && end==node ) {
head->next = tail;
tail->prev = head;
}
else if ( head==node ) {
head->next = node->next;
node->next->prev = head;
}
else if ( tail==node ) {
tail->prev = node->prev;
node->prev->next = tail;
}
else {
node->prev->next = node->next;
node->next->prev = node->prev;
}
}
0553デフォルトの名無しさん
2007/01/20(土) 15:45:06void rem_node(struct dnode *head, struct dnode *tail, struct dnode *node)
{
if ( head==node && tail==node ) {
head->next = tail;
tail->prev = head;
}
else if ( head==node ) {
head->next = node->next;
node->next->prev = head;
}
else if ( tail==node ) {
tail->prev = node->prev;
node->prev->next = tail;
}
else {
node->prev->next = node->next;
node->next->prev = node->prev;
}
}
0554デフォルトの名無しさん
2007/01/20(土) 16:56:11確かにループ乱用プログラムは見難いよな
変数名はまあ宿題なら多少は多めに見るけど
0555デフォルトの名無しさん
2007/01/20(土) 17:42:03[2] 問題文
プログラムの穴埋め問題です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3480.txt
[3] 環境 … Visual C++ (VC 6.0 だと思います)
[4] 期限 … 無し
[5] よろしくお願いします。
0556デフォルトの名無しさん
2007/01/20(土) 21:33:08[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3481.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 1月21日の23:00まで
[5] その他の制限: ポインタは習ってないので、できれば使わないでお願いします。
0557デフォルトの名無しさん
2007/01/20(土) 21:40:480558355 ◆ZKcfds8GQA
2007/01/20(土) 21:42:31[2] 問題文(含コード&リンク):
・数独を問題選択可能にする。
・起動時に、100問から自由に選べるようにする。
・解答チェックは、解放プログラムを組み込むこと。
・正解した時に、「正解です」と表示させる。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:bcc5.5.1
[3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。
よろしくお願いします。
0559デフォルトの名無しさん
2007/01/20(土) 23:52:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3482.txt
入力のチェックと検算はしてないので間違ってても怒らないでね
0560デフォルトの名無しさん
2007/01/20(土) 23:57:28http://hp.vector.co.jp/authors/VA015468/platina/algo/
0561デフォルトの名無しさん
2007/01/21(日) 00:07:390562デフォルトの名無しさん
2007/01/21(日) 00:10:51うまく空白を挿入してくれない・・・ orz いろんな人に怒られそうな書き方だな
0563デフォルトの名無しさん
2007/01/21(日) 00:31:350564デフォルトの名無しさん
2007/01/21(日) 00:35:41誰かが作ったとしても、同じ事を書きこむだけだろ
「全然分からないので」ってのは釣りじゃないならやめてくれ
0565デフォルトの名無しさん
2007/01/21(日) 00:36:420566デフォルトの名無しさん
2007/01/21(日) 00:38:16やめたやめた
0567デフォルトの名無しさん
2007/01/21(日) 00:42:57文章書けないだろうから厳しいだろ
0568537
2007/01/21(日) 01:05:08これで大丈夫だと思いますお願いします。
[1] 授業単元: 人工知能
[2] 問題文(含コード&リンク): http://jbbs.livedoor.jp/bbs/read.cgi/business/5385/1168697014/5
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年1月28日hh:mmまで
[5] その他の制限: どこまで習っているか Cの基本的な文法 ポインタ等
(´Д`;) 何度もゴメンナサイ・・・
∨)
((
(;´Д`) ホントスミマセン
( 八)
〉 〉
(´Д`;)、 コノトオリデス
ノノZ乙
0569デフォルトの名無しさん
2007/01/21(日) 01:06:352 拡張子YUVの画像を何かしらの方法を使い圧縮する
3.1 windowsXP
3.2 cygwin
3.3 C言語
4 1月22日正午
5 なし
お願いします。
0570デフォルトの名無しさん
2007/01/21(日) 01:14:140571デフォルトの名無しさん
2007/01/21(日) 01:46:36http://radagast.se/othello/zebra.tar.gz
できたよー
0572デフォルトの名無しさん
2007/01/21(日) 02:04:430573デフォルトの名無しさん
2007/01/21(日) 03:33:17[2] 下の部分に手を加え、棒グラフに折れ線グラフを追加せよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3483.txt
http://bbs.freedeai.com/src/up0227.gif
の様に出力するようにする
[3] 環境
[3.1] OS: MAC OS X
[3.2] gcc
[3.3] C
[4] 期限: 1月22日
どのように手を加えれば、画像のように折れ線が出力されるのかわかりません。
よろしくお願いいたします。
0574デフォルトの名無しさん
2007/01/21(日) 03:51:08多分、線を描く命令とか点を描く命令があると思うんだが、
最悪 G_RECTANGLE で点を打って線にしないといけない…
もっと情報キボン
0575デフォルトの名無しさん
2007/01/21(日) 03:56:44ttp://www.img.is.ritsumei.ac.jp/~hachi/CG/graphic.html
g_line ( x1, y1, x2, y2, color) しか無いみたいだけど
0576デフォルトの名無しさん
2007/01/21(日) 04:22:59void draw_pixel(int x, int y, int color){
G_RECTANGLE(x, y, x, y, color, 1);
}
void draw_line(int x1, int y1, int x2, int y2, int color){
int x, y, dx, dy, d, sx, sy, cx, cy, i;
dx=x2-x1;dy=y2-y1;
sx=(dx>0)?1:(dx<0?-1:0);
sy=(dy>0)?1:(dy<0?-1:0);
dx*=sx;dy*=sy;
d=(dx>dy)?dx:dy;
cx=cy=d/2;
x=x1;y=y1;
for(i=0;i<=d;i++){
draw_pixel(x, y, color);
cx+=dx;cy+=dy;
if(cx>=d){cx-=d;x+=sx;}
if(cy>=d){cy-=d;y+=sy;}
}
}
int i,j;
↓
int i,j,prev_x,prev_y;
G_RECTANGLE(ix0,iy1,ix2,iy2,col[i],1);
↓
G_RECTANGLE(ix0,iy1,ix2,iy2,col[i],1);
if(i>0) draw_line(prev_x, prev_y, ix2, (iy1+iy2)/2, Blue);
prev_x=ix2;
prev_y=(iy1+iy2)/2;
0577デフォルトの名無しさん
2007/01/21(日) 04:28:54>>567
レポートはソースプログラムを出すので、説明はコメントがあればより高得点に
なるだけで別になくても問題はないです。
完成品さえあればこちらで適当に何段階かに分けます
0578デフォルトの名無しさん
2007/01/21(日) 04:34:570579デフォルトの名無しさん
2007/01/21(日) 04:47:09明日の「教えてクン」を目指す、若き戦士達に以下の文章を捧げる。
日々精進し、パソコンヲタクどもの親切を蹂躙してやれ。
1. 努力を放棄すること
いやしくも「教えてクン」たるもの、努力をしてはならない。
過去ログを読んだり、検索してはいけない。
「英語は苦手なので、分かりません。」は、高く評価できる。
辞書片手にマニュアルやReadMeを読むなど、決してしてはならない。
他力本願と言われようと、自分で調べたり試行錯誤したりせず、他人の努力の結果を搾取するのが、正しい「教えてクン」である。
また、「もう何が悪いのかサッパリ分かりません。」と言ってふてくされるのも有効である。
「サッパリ」という単語が「やる気の無さ」を効果的に表現している。
「原因を特定するには、何をすべきでしょうか?」と訊いてしまうと自己の積極性が現れてしまうので、「教えてクン」失格である。
2. 情報を開示しないこと
使用OSや、機器構成などの必須の情報を知らせてはならない。
マザーボード名やBIOSのバージョンも同様だ。
具体的なアプリ名やバージョンも隠蔽すべきだ。
「DVD再生ソフト」のように曖昧に表記しておけばよい。
反対に「前から欲しいと思っていた○○」とか「安売りされていた ○○」等の「どうでもいい情報」は、どんどん書いてやれ。
トラブルの場合は、状況を正確に記述してはならない。
「なんだかうまく動きません。」とか「エラーが出ます。」等と具体的なことは何も書かないことが重要である。
また、自分の試してみた事も具体的に書いてはいけない。
考えられる組合せのマトリックスを作成し、状況を整理するなどもってのほかである。
最悪の場合、それだけで問題が解決してしまうこともあるのだ。
「いろいろやってみたけど、動きません。」が理想的だ。
0580デフォルトの名無しさん
2007/01/21(日) 04:47:41「教えてクン」は、孤高の戦士である。
相手のことを考えるようでは教えてクン失格というものだ。
以下のような行動が、望ましい。
初心者であることを高らかに宣言し、初心者向けの丁寧で分かりやすい説明を強要する。
専門用語の使用を禁じておくとさらに効果的である。
簡潔な説明を禁じられたヲタクどもは、同じ内容を説明するのに、何倍もの労力を強いられる。
自分は努力せず、相手には多大な努力をさせることこそが「教えてクン」の真骨頂である。マルチポストも有効である。
そのBBSを信用していないことを明確に示せる。
「どうせ、お前らじゃ分からんだろう。」という意志表示として高く評価できる。
もちろんマルチポストの非礼をあらかじめ詫びてはならない。
それでは、単なる「急いでいる人」になってしまう。
それは、教えてクンではない。質問のタイトルは、「教えてください。」で良い。
タイトルを読んだだけでは「何に関する質問」か全く分からない。
そういう努力は、答える人間にさせれば良いのだ。
とにかく、答える人間が答えやすいように気を使って質問してはならない。
傲慢で不遜な態度が必須である。「聞きたいことがあります。」など、プロの仕事であろう。
最後に、言うまでも無いことだとは思うが、答えてくれた人達に礼の言葉を返すなど言語道断である。
せっかく「教えてクン」を貫いてきたのに、最後にお礼を言っているようでは、画竜点睛を欠いていると言わざるを得ない。
質問だけしておいて、後はシカトが基本である。
上級テクニックとして、「そんなことはもう試しました。」とか、「そこまで初心者じゃありません。」などと言って、回答者の神経を逆なでしておけば完璧である。
以上のことを踏まえて質問すれば、君も立派な「教えてクン」である。
ビバ!教えてクン! 教えてクンに栄光あれ!!
0581デフォルトの名無しさん
2007/01/21(日) 05:25:390582デフォルトの名無しさん
2007/01/21(日) 06:03:080583デフォルトの名無しさん
2007/01/21(日) 06:45:460584573
2007/01/21(日) 07:56:18void G_INIT(void) グラフィックスを初期化する。以下のグラフィック関数を使う前に,必ずこの関数を呼び出す。
void G_CLS(void) 画面を消去する。呼び出すと画面が消えます。
void G_LINE(int ix,int iy,int jx,int jy) 始点(ix,iy)、終点(jx,jy)の2点間を直線で引く
void G_COLOR(int ic)
色番号icを指定する。この関数を呼び出した後に線や図形の関数呼び出しを行うことにより,
指定した色で描かれる。代表的な色番号は以下のようになる。
黒(15) 青(3) 赤(5) マゼンタ(7) 緑(9) シアン(11) 黄(13) 白(0)
void G_PSET(int ix, int iy, int ic)点(ix,iy)に色番号icの点を打つ。
int G_POINT(int ix, int iy, int ic)点(ix,iy)の色番号を得る。
void G_PAINT(int ix, int iy, int md, int ic, int icb)
開始点位置(ix,iy)から始めて,境界の色がicbである閉じた領域をicの色で塗りつぶす。
mdには任意の数値を入れる。
void G_PALLET(int ic, int red, int green,int blue)
色番号icの色を,red,green,blueで指定する。
0585デフォルトの名無しさん
2007/01/21(日) 10:16:58[2] 問題文(含コード&リンク):
以下のようなハッシュテーブルがあります。 このハッシュテーブルに登録されているすべてのノードのデータ(height)の平均を返す関数 average を完成させてください。 この関数はノードが 1 つも登録されていない場合は 0 を返します。
struct htnode {
char keyname[32]; /* キーとなる文字列(名前) */
int height; /* 関連するデータ(身長) */
struct htnode *next; /* 次のポインタ */
} *hashtable[HASH_TABLE_SIZE];
int average(void){
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名バージョン: (gcc 3.4)
[3.3] 言語: (どちらでも可)
[4] 期限: 明日
[5] その他の制限:
0586デフォルトの名無しさん
2007/01/21(日) 11:33:22[2] 問題文(含コード&リンク):
次のアルゴリズムを説明せよ
#include<stdio.h>
#include<stdlib.h>
//int main(int argc, char **argv){ //argvはコマンドライン引数のこと
int main(void){
int i,j,m,n,k1,k2;
int blank;
int hint[4];
int total;
FILE *data;
int initial[4][4];
if((data = fopen("prob4-1.txt", "r"))==NULL) {
printf("ファイルを開くことはできません\n");
exit(1);}
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:20071月23日まで
[5] その他の制限: なし
0587586
2007/01/21(日) 11:35:10for(j=0;j<4;j++){
fscanf(data,"%d",&initial[i][j]);}
blank=0; }
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%4d",initial[i][j]);
printf("\n");} printf("\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(initial[i][j]==0)
blank++;} }
printf("initial\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%2d" ,initial[i][j]);}
printf("\n"); }
while(blank!=0){
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(initial[i][j]==0){
for(m=0;m<5;m++)
//printf("%d", m);
hint[m]=0;
for(n=0;n<4;n++){
if(initial[i][n]!=0)
hint[initial[i][n]]=1;}
for(n=0;n<4;n++){
if(initial[n][j]!=0)
hint[initial[n][j]]=1;}
0588デフォルトの名無しさん
2007/01/21(日) 11:36:25}
for(i=0;i<5-1;i++){
G_LINE(seiseki[i].total,iy0+i*wid,seiseki[i+1].total,iy0+(i+1)*wid);
}
|彡 サッ
0589586
2007/01/21(日) 11:36:53k1*=2;
k2=j/2;
k2*=2;
for(m=k1;m<k1+2;m++)
for(n=k2;n<k2+2;n++){
if(initial[m][n]!=0)
hint[initial[m][n]]=1;}
total=(hint[1]+hint[2]+hint[3]+hint[4]);
for(m=1;m<5;m++)
if(total==3&&hint[m]==0){
initial[i][j]=m;
blank--; }}}
printf("result\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%4d",initial[i][j]);
printf("\n");}
書ききれないので追加しました。お願いします
0590デフォルトの名無しさん
2007/01/21(日) 11:39:30ここ使え
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0591デフォルトの名無しさん
2007/01/21(日) 11:39:570592586
2007/01/21(日) 11:40:15fclose(data);
return 0;
}
0593デフォルトの名無しさん
2007/01/21(日) 11:41:06>>587
for(m=0;m<5;m++)
//printf("%d", m);
hint[m]=0;
このコメントアウトは何?物凄く不安になるんだけど。
0594586
2007/01/21(日) 11:41:56有難うございました
0595デフォルトの名無しさん
2007/01/21(日) 12:03:53int average(void){
int cnt, taotal=0;
struct htnode *p;
for ( cnt=0,p=hashtable; cnt<HASH_TABLE_SIZE && NULL!=p; p = p->next,cnt++ )
total += p->height;
return ( total/cnt );
}
0596デフォルトの名無しさん
2007/01/21(日) 12:14:55int average(void){
int i, cnt=0, total=0;
struct htnode *p;
for ( i=0; i<HASH_TABLE_SIZE; i++ ){
p = hashtable[i];
while( NULL != p ){
total += p->height;
cnt++;
p = p->next;
}
}
if( cnt==0 ) return 0;
return ( total/cnt );
}
0597デフォルトの名無しさん
2007/01/21(日) 12:25:450598デフォルトの名無しさん
2007/01/21(日) 13:09:530599355 ◆ZKcfds8GQA
2007/01/21(日) 13:11:00[2] 問題文(含コード&リンク):
・数独を問題選択可能にする。
・起動時に、100問から自由に選べるようにする。
・解答チェックは、解放プログラムを組み込むこと。
・正解した時に、「正解です」と表示させる。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:bcc5.5.1
[3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。
よろしくお願いします。
0600デフォルトの名無しさん
2007/01/21(日) 14:09:06好きなのを使うが良い
0601デフォルトの名無しさん
2007/01/21(日) 14:12:02何やりたのかサーーパリw
すんげ〜読み辛い
つか、これファイルから読み込んだ数値によっては壊れんだろw
While文の中の"if(initial[i][j]==0)"が効いて0が無かったら動くが
0値が格納されてたらhintが4個しかエリアが無いにも拘らず
hint[initial[i][n]]でファイルから読込んだ値の位置に1を格納しようとしてる
0602デフォルトの名無しさん
2007/01/21(日) 14:28:40このスレの回答者が100問、問題作らなければいけない、
という時点でやる奴いねーだろw
てか、問題くらい自分で作れるだろうが。
0603デフォルトの名無しさん
2007/01/21(日) 14:29:56[2] 問題文:
�@myComplex setComplex(){ myComplex temp;
temp.real = x; temp.image = y; return temp;}
関数は、クラスのオブジェクトを返す(正確にはオブジェクトのコピーを返す)関数になっているが、無駄が多い。オブジェクトのポインタを返すように変えてみよう。
�AmyComplex setComplex(){ myComplex temp;
temp.real = r*cos(theta); temp.image=r*sin(theta);
return temp; }
関数も、クラスのオブジェクトを返す(正確にはオブジェクトのコピーを返す)関数になっているが、無駄が多い。オブジェクトのポインタを返すように変えてみよう。
�Bclass DeComplex:myComplex{・・・・・・・}
というクラスはmyComplexクラスの派生クラスとして定義されているが、基本クラスの性質を反映していない。定義を変えよう。
�Cclass PoComplex:myComplex{・・・・・・・}
というクラスはmyComplexクラスの派生クラスとして定義されているが、基本クラスの性質を反映していない。定義を変えよう。
�DmyComplex型オブジェクトを返す関数がsetComplex()であるが、一種のオブジェクト変換を示している。myComplex型オブジェクトからDeComplex型オブジェクトに変換する関数をつくる。
[3] 環境
[3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++
[4] 期限:2007年1月21日19:00まで
[5] その他の制限:できるだけ初心者でもわかりやすい解答をお願いできたらと思います。よろしくお願いします!
0604107
2007/01/21(日) 14:38:370605デフォルトの名無しさん
2007/01/21(日) 14:52:51Cなのか?C++なのか?まずはそこからだ
0606デフォルトの名無しさん
2007/01/21(日) 14:53:38問題文が良く分からん
(1)と(2)のsetComplexはどっちも引数がsetComplex(double, double)だから
同時に実装できない
(3),(4)の
というクラスはmyComplexクラスの派生クラスとして定義されているが、
基本クラスの性質を反映していない。定義を変えよう。
てのは俺には何を言ってるのか分からん
問題文はこれで全てなのか?
0607デフォルトの名無しさん
2007/01/21(日) 14:54:57>>526を見るとJavaだなぁ
0608603
2007/01/21(日) 14:58:40問題文は他には無いですね・・。
おそらくアバウトな答えで良いんだと思います。
0609デフォルトの名無しさん
2007/01/21(日) 15:08:36そうなんだよw C++じゃね〜orz
CなのかJavaなのかと書こうとしたw
ま本人が気づくまで放置w
0610603
2007/01/21(日) 15:14:06のP.48〜51が問題でした;
0612デフォルトの名無しさん
2007/01/21(日) 15:19:46よくわからんがこうかな?
#include <iostream>
#include <cmath>
using namespace std;
class DeComplex;class PoComplex;
class myComplex{
public:
int real;int image;
myComplex& setComplex(int, int);
myComplex& setComplex(int, double);
operator DeComplex();
};
myComplex& myComplex::setComplex(int real, int image){
this->real = real; this->image = image;
return *this;
}
myComplex& myComplex::setComplex(int r, double theta){
this->real = (int)(r * cos(theta));
this->image = (int)(r * sin(theta));
return *this;
}
class DeComplex : public myComplex{};
class PoComplex : public myComplex{};
myComplex::operator DeComplex(){
DeComplex tmp;
tmp.setComplex(this->real, this->image);
return tmp;
}
0613デフォルトの名無しさん
2007/01/21(日) 15:22:02ほらやっぱり
なめてんのか
0615デフォルトの名無しさん
2007/01/21(日) 15:27:28>>612はもうなんの役にもたたん・・・
0616デフォルトの名無しさん
2007/01/21(日) 15:28:40>>603はもうなんの役にもたたん・・・
0617603
2007/01/21(日) 15:30:26まじすか・・・
0618デフォルトの名無しさん
2007/01/21(日) 15:33:040619デフォルトの名無しさん
2007/01/21(日) 15:39:060620デフォルトの名無しさん
2007/01/21(日) 15:41:460621デフォルトの名無しさん
2007/01/21(日) 16:58:380622430です。
2007/01/21(日) 17:07:560623デフォルトの名無しさん
2007/01/21(日) 17:11:03読み込むって言うのは、コンソールから?それともファイルからなのか?
0624430です。
2007/01/21(日) 17:16:37例えば$ ./a.out < 読み込むデータファイル名
ちなみに読み込むデータは作ってあります。
0625355 ◆ZKcfds8GQA
2007/01/21(日) 17:22:57[2] 問題文(含コード&リンク):
・数独を問題選択可能にする。
・起動時に、100問から自由に選べるようにする。
・解答チェックは、解放プログラムを組み込むこと。
・正解した時に、「正解です」と表示させる。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:bcc5.5.1
[3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。
問題100問は、自分で作ります。
よろしくお願いします。
0626デフォルトの名無しさん
2007/01/21(日) 17:26:02その読み込むデータをうp
0627デフォルトの名無しさん
2007/01/21(日) 17:26:18どなたかよろしくお願いします。
0628デフォルトの名無しさん
2007/01/21(日) 17:27:42そのファイル自体、もしくはそのファイルフォーマットを示せ。
0629デフォルトの名無しさん
2007/01/21(日) 17:31:08普通の先生なら両方とも単位落とすと思うんだけどどうかな
0630デフォルトの名無しさん
2007/01/21(日) 17:31:15[2] 問題文(含コード&リンク):
"in_file"という名前のファイルの中に多数の整数データ
が空白や改行コードで区切られて並んでいると仮定した上で、
この入力ファイルの中のデータを1行に5個ずつきれいに並べて
"out_file"という名前のファイルに出力するCプログラム
入力ファイル"in_file"の内容が
-2121 333 4444 5555 6 9 10 8 7 987654
のときは次のような内容を出力ファイル"out_file"に書き出す。
-2121 333 4444 5555 6
9 10 8 7 987654
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年1月22日 午前10時まで]
0631630
2007/01/21(日) 17:33:25皆さんよろしくお願いします。
0632627
2007/01/21(日) 17:36:29よし、>>404話し合おうじゃないか。学籍番号の下3桁教えてくれ
0633630
2007/01/21(日) 17:36:33-2121 333 4444 5555 6
9 10 8 7 987654
0634630
2007/01/21(日) 17:38:06ということです。
0635デフォルトの名無しさん
2007/01/21(日) 17:39:560636デフォルトの名無しさん
2007/01/21(日) 17:41:16int main(void) {
FILE *fin;
int i, column = 0;
if((fin = fopen("in_file", "r")) != NULL) {
while(fscanf(fin, "%d", &i) > 0)
printf("%12d%s", i, ++column % 5 ? " " : "\n");
fclose(fin);
}
}
0637デフォルトの名無しさん
2007/01/21(日) 17:44:56いいんじゃね?
0638デフォルトの名無しさん
2007/01/21(日) 17:48:36学科は言わなくていいよな?
034
0639636
2007/01/21(日) 17:58:41int main(void) {
FILE *fin;
int i, column = 0;
if((fin = fopen("in_file", "r")) != NULL) {
while(fscanf(fin, "%d", &i) > 0)
printf("%12d%s", i, ++column % 5 ? "" : "\n");
fclose(fin);
} else return 1;
return 0;
}
0640デフォルトの名無しさん
2007/01/21(日) 18:00:02ファイルに出力してない
0641デフォルトの名無しさん
2007/01/21(日) 18:10:51int main(void) {
int i, column = 0;
FILE *fin, *fout;
if((fin = fopen("in_file", "r")) == NULL) return 1;
if((fout = fopen("out_file", "w")) == NULL) return 1;
while(fscanf(fin, "%d", &i) > 0)
fprintf(fout, "%12d%s", i, ++column % 5 ? "" : "\n");
fclose(fout);
fclose(fin);
return 0;
}
0645デフォルトの名無しさん
2007/01/21(日) 18:46:11ファイル形式とかじゃなくて、
====seiseki.data====
磯野カツオ,100,100
磯野ワカメ,70,70,70
磯野波平,80,80,80
==================
こんな感じの内容とかを知りたいということの予感。
0646デフォルトの名無しさん
2007/01/21(日) 18:54:25その情報から何をしろと
0647624
2007/01/21(日) 19:12:54前スレより引用、こんな感じで出力してください。
Id-No Eng Math Jap Total
----- --- ---- --- -----
G0342 44 65 51 160
G0343 83 100 84 267
G0344 58 30 57 145
.
.
.
G3621 85 80 90 255
G3622 74 100 65 239
0648デフォルトの名無しさん
2007/01/21(日) 19:17:410649デフォルトの名無しさん
2007/01/21(日) 19:19:08磯野カツオはそんなに頭よくない
0650デフォルトの名無しさん
2007/01/21(日) 19:19:10出力は判ってる!
リダイレクトするファイルはどうなんだ?w
エスパーで作れってか?
0651デフォルトの名無しさん
2007/01/21(日) 19:19:14留学生の方ですか?
0652デフォルトの名無しさん
2007/01/21(日) 19:20:42そこかー!!
しかし、俺の知人の磯野カツオはなかなか賢い
0653デフォルトの名無しさん
2007/01/21(日) 19:23:36Modula-2がスキでした
0654624
2007/01/21(日) 19:39:51./a.out < seiseki.data
入力データであるseiseki.data
はすでに、別な場所に保管しています。
0655デフォルトの名無しさん
2007/01/21(日) 19:41:490656デフォルトの名無しさん
2007/01/21(日) 19:43:46seiseki.dataの中身がどんなファイルだったかを聞いてるんだ
中身見てないの?
0657デフォルトの名無しさん
2007/01/21(日) 19:48:390658624
2007/01/21(日) 19:50:37先日の講義のときに配布されましたが、
中身は見てません・・。
0659デフォルトの名無しさん
2007/01/21(日) 19:54:44やる気ねえな
0660デフォルトの名無しさん
2007/01/21(日) 19:55:33,:'/:::::::::::::::::/u , , ``-;ヽ
,:':/:::::::::::::::::/ '⌒`ー‐'| | |`ー-‐、u|::|
,:'/:::::::::::::::::/u /⌒ヽ /⌒ヽ !::! ;
,' l--、:::::::/ l O | lj | O | '、l ,:
/´,―、ヽ:/ ヽ、,r‐'-、:::::::::ゝ--く l ;
.;'/ /ニ_ノ | ..::::::::{ r,、 ヽ / ,r-, ノ::.. '、;
; | l '-, / ヽ !},. ---'し'_,ヘ :..ヽ':,
':,! `‐' u ヽ ,. -'"´_,. ----,、 ヽ、u l ;
':,ヽ_ノ u ノ'" ,. -''" ̄ ̄ ̄ ヽ. ヽ |
.,: | lj / /_,. ---、,. -----、| | / ;.,
--―'ヽ / '-------―――‐''" ノ /``ー- 、_
ヽ、u '`ljー-----―――
0661デフォルトの名無しさん
2007/01/21(日) 19:59:52もう放置でいいんじゃ
0662624
2007/01/21(日) 20:01:250664デフォルトの名無しさん
2007/01/21(日) 20:03:390665デフォルトの名無しさん
2007/01/21(日) 20:05:210666107
2007/01/21(日) 20:06:50正直、Cでもjavaでも、俺は素人に毛がはえた程度だから全然わからないよ・・・。
わがまま言えばCでしてもらいたい・・・
申し訳ない
0668デフォルトの名無しさん
2007/01/21(日) 20:44:37先生に言えよ
0669デフォルトの名無しさん
2007/01/21(日) 20:49:45[2] 問題文(含コード&リンク):
画面より任意の整数を入力し、その整数の各桁を、数字の0から9を意味する英単語
(zerp,one.....nine)により表示するようなプログラムを作成しなさい。ただし、数字
の0から9を意味する英単語は、文字列定数の配列(char*number[10])として初期化・
宣言すること。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: C
[4] 期限: 1月22日
[5] その他の制限:とくになし
よろしくお願いします
0671デフォルトの名無しさん
2007/01/21(日) 20:56:42それ、
10 → ten
なのか?
10 → one zero
でいいのか?
0672デフォルトの名無しさん
2007/01/21(日) 20:58:110673デフォルトの名無しさん
2007/01/21(日) 21:07:260674デフォルトの名無しさん
2007/01/21(日) 21:13:02int main()
{
static char *number[10] = { "zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine" };
int n;
while (scanf("%1d", &n) == 1)
printf("%s\n", number[n]);
return 0;
}
0675デフォルトの名無しさん
2007/01/21(日) 21:16:48#include<stdio.h>
int main(void)
{
char*number[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
char str[256]={0};
int i=0;
printf("数字を入力:");
scanf("%s",&str);
while(str[i]!=0){
if(str[i]<'0'||str[i]>'9'){
printf("数字じゃない");
}else{
printf("%s\t",number[str[i]-'0']);
}
i++;
}
return 0;
}
0676デフォルトの名無しさん
2007/01/21(日) 21:16:55入力する整数は一桁じゃないと思うんだぜ
0677デフォルトの名無しさん
2007/01/21(日) 21:18:57#include<stdio.h>
int main(){
int c;
char* number[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
while((c=getchar()) != EOF){
if('0'<=c && c<='9') printf("%s ", number[c-'0']);
else break;
}
return 0;
}
0678デフォルトの名無しさん
2007/01/21(日) 21:20:301one
2two
3three
4four
5five
6six
7seven
8eight
9nine
0679669
2007/01/21(日) 21:22:33期限が明日に迫っていたので本当に助かりました。
0680デフォルトの名無しさん
2007/01/21(日) 21:22:410681デフォルトの名無しさん
2007/01/21(日) 21:24:06別に何桁入力されても動くんだぜ
0682デフォルトの名無しさん
2007/01/21(日) 21:34:32[2] 問題文(含コード&リンク):
中心の要素は a[(left+right)/2] で求めることができます。
この要素を左側の要素と交換すれば、同じプログラムを利用できます。
クイックソートの軸として、中心の要素の値を使うことが一般的です。
quicksort 関数を変更してください。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: (明後日)
[5] その他の制限:
0683デフォルトの名無しさん
2007/01/21(日) 21:39:07元となるquicksort関数をうp
0684224
2007/01/21(日) 21:42:43どなたか答えてくれる方がいたら、お願いします。
明日の五時くらいまでに回答を頂けたら助かります。
あと、追加として、数独が書き込まれたファイルとプログラム実行ファイルは別でお願いします。
0685デフォルトの名無しさん
2007/01/21(日) 21:53:24>・4×4のマス目の数字をファイルから入力(数字の無いところは0を表示)。
上記の部分が意味分からん
0686デフォルトの名無しさん
2007/01/21(日) 22:03:36もしかして>586〜の見づらいソースと同じ人?
0687デフォルトの名無しさん
2007/01/21(日) 22:26:13おねがいします
0688デフォルトの名無しさん
2007/01/21(日) 22:30:36∨)
((
0690デフォルトの名無しさん
2007/01/21(日) 23:21:05[1] 授業単元:基本プログラミング
[2] 問題文(含コード&リンク): ある数nを考えたとき、nを除いた約数の和がnと等しくなる自然数のことを完全数と言う。
例えば、6=1+2+3 28=1+2+4+7+14などである。完全数を探索する最大値をmとしたとき、m以下の全ての完全数とその個数を出力するプログラムを作成せよ。ただしmはプログラムの実行時に読み込むものとする。
実行例
input m:50
6 is a perfect number
28 is a perfect number
the number of perfect numbers:2
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明日
0691デフォルトの名無しさん
2007/01/21(日) 23:28:296=1+2+3=1*2*3、みたいな
0692デフォルトの名無しさん
2007/01/21(日) 23:31:06#include<stdio.h>
int main(){
int i,j,k=0,sum,m;
printf("input m:");
scanf("%d",&m);
for(i=2;i<=m;i++){
sum=0;
for(j=1;j<i;j++)if(i%j==0)sum+=j;
if(sum==i){
printf("%d is a perfect number\n",i);
k++;}}
printf("the number of perfect numbers:%d\n",k);
return 0;}
0693デフォルトの名無しさん
2007/01/21(日) 23:35:16それができるのは6だけ
ゆえに一番美しい数字は6
そして一番不安定な数字は3
0694デフォルトの名無しさん
2007/01/21(日) 23:36:09入力する数値を10000までにしておいた方がええで。
これとは別にメルセンヌ素数を使ったやり方があるが、そっちの方が
明らかに求める上限を大きくしたときの処理時間が↓より短いが。
#include <iostream>
using namespace std;
int main() {
int i,j,m,c=0,sum;
cout << "input m : ";
cin >> m;
for(i=2; i<=m; i+=2) {
sum=0;
for(j=1; j<=i/2; j++) {
if(i%j==0) sum+=j;
}
if(sum==i) {
cout << i << " is a perfect number \n";
c++;
}
}
cout << "the number of perfect numbers : " << c << endl;
return 0;
}
0695デフォルトの名無しさん
2007/01/21(日) 23:37:070696デフォルトの名無しさん
2007/01/21(日) 23:39:180697デフォルトの名無しさん
2007/01/21(日) 23:40:39ttp://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E7%B4%A0%E6%95%B0
ウィッキーさんより
0698デフォルトの名無しさん
2007/01/22(月) 00:02:41[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3485.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年1月24日まで
不束者ですがよろしくお願いします。
0699デフォルトの名無しさん
2007/01/22(月) 00:06:31素数関連はWeb上にも過去ログにもほんとに腐るくらいあるから探しな
探すのめんどいから作ってくださいor替わりに探してきてください
ってのはなしだぜ
0700デフォルトの名無しさん
2007/01/22(月) 00:12:39#include<stdio.h>
int IsPrime(int n){
int i;
if(n<2) return 0;
else if(n==2) return 1;
if(n%2==0) return 0;
for(i=3;i*i<=n;i+=2) if(n%i==0) return 0;
return 1;}
int main(){
int i,j=0,n,prime[1000];
for(i=2;j<1000;i++)
if(IsPrime(i)){
prime[j]=i;
j++;}
scanf("%d",&n);
printf("%d\n",prime[n-1]);
return 0;}
0701デフォルトの名無しさん
2007/01/22(月) 00:17:240703デフォルトの名無しさん
2007/01/22(月) 00:39:41こんな方法も。
#include <cmath>
bool isPerfectNumber(int n) {
int s1 = 0, s2 = 1;
for (int i = 1; i < n - 1; ++i) s1 += i * (n / i);
for (int i = 1; i < n; ++i) s2 += i * ((n - 1) / i);
return s1 == s2;
}
#include <iostream>
int main(void) {
int m, n = 0;
std::cout << "input m:" << std::flush;
std::cin >> m;
for (int i = 1; i <= m; ++i)
if (isPerfectNumber(i)) {
std::cout << i << " is a perfect number" << std::endl;
++n;
}
std::cout << "the number of perfect numbers:" << n << std::endl;
return 0;
}
0704デフォルトの名無しさん
2007/01/22(月) 00:44:30ありがとうございました!
0705355 ◆ZKcfds8GQA
2007/01/22(月) 00:51:05[2] 問題文(含コード&リンク):
・数独を問題選択可能にする。
・起動時に、100問から自由に選べるようにする。
・解答チェックは、解放プログラムを組み込むこと。
・正解した時に、「正解です」と表示させる。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:bcc5.5.1
[3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑ココで作って頂いたものでお願いします。
問題100問は、自分で作ります。
よろしくお願いします。
0706デフォルトの名無しさん
2007/01/22(月) 00:53:35int main()となってるものが結構ありますが、
int main(void)じゃなくvoidを省略しても宜しいんでしょうか?
0707デフォルトの名無しさん
2007/01/22(月) 01:01:51C++なら完全に合法で、標準的なスタイル。
Cだとどうだっけ。規格に詳しい人よろしく。
0708デフォルトの名無しさん
2007/01/22(月) 01:01:54おkです
0710デフォルトの名無しさん
2007/01/22(月) 01:06:33[2] 問題文(含コード&リンク):角度dgreeを入力し、この角度をラジアン角xに変換してsinxの近似式を出力するプログラムを作成せよ。sinxの近似式は以下の式で与えるとし、最後の項の絶対値が0.000001より大きい間は項を足し続けるものとする。
sinx=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!・・・
実行例
input degree:45
sin(45)=0.707106
input degree:30
sin(30)=0.5
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明後日
[5] その他の制限:漸化式を利用することとし、数学関数powの使用は不可
0711706
2007/01/22(月) 01:07:55ありがとうございました。
0712224
2007/01/22(月) 01:09:11上で一緒に乗せている4×4の数独を、あらかじめ別のファイルに作成しておく。
その時点で、実際にプログラムを起動して数を入れるマスには0を記入する、と言う事です。
分かり辛くてスミマセンでした;
0713デフォルトの名無しさん
2007/01/22(月) 01:32:05#include <iostream>
double sin(double degree) {
double x = degree * 3.1415926535897932384626433832795 / 180, d = x, n = 1, s = 0;
while (d > 0.000001 || d < -0.000001) {
s += d;
d *= -x * x / (n + 1) / (n + 2);
n += 2;
}
return s;
}
int main() {
double d;
for (; ; ) {
std::cout << "input degree:" << std::flush;
std::cin >> d;
std::cout << "sin(" << d << ")=" << sin(d) << std::endl;
}
}
0714デフォルトの名無しさん
2007/01/22(月) 01:43:18#include <stdlib.h>
#define PI 3.1415926535
#define LOWER 1e-6
double degree_to_radian(int);
double sin(double);
double degree_to_radian(int degree)
{
return (degree * (2.0 * PI) / 360.0);
}
double sin(double x)
{
double lower;
double term;
double val;
double i;
term = x;
val = 0;
i = 2;
while(term > LOWER || term < -LOWER)
{
val += term;
term *= - (x * x) / (i * (i + 1));
i+=2;
}
return val;
}
int main()
{
printf("%g\n",sin(degree_to_radian(30)));
}
0716デフォルトの名無しさん
2007/01/22(月) 01:44:40可視性のためとはいっても全角スペースとか入れるとコピペが大変になるよ
0717デフォルトの名無しさん
2007/01/22(月) 01:46:13問題文を見るとインターフェースだけじゃなくて
実装も与えられてそうなんだが
ライブラリとか
0718573
2007/01/22(月) 01:52:06学校の仕様で、
windows用のコンパイラで動かすのを、
無理やりmacでコンパイラさせるために、
>GUCC互換のラッパー関数を介して、X11グラフィックスライブラリを呼び出す仕組みで実現している
らしいのです。
ですから、どうすれば、折れ線を上手い具合に画像のように
表示させられるのかについて助言をいただけるとありがたいのですが・・・・
複雑で申し訳ないです。
0719デフォルトの名無しさん
2007/01/22(月) 01:57:08G_LINEっていううってつけの関数があるんだから
それ使えばいいだろうが
0722573
2007/01/22(月) 02:12:17一本目の棒グラフから、隣の棒グラフの最大値に、
折れ線を引くためにはG_LINE()のカッコのなかをどうおけばいいのか分からないのです。
色々と試したのですが、上手くいきませんでした。
0723デフォルトの名無しさん
2007/01/22(月) 02:54:290724デフォルトの名無しさん
2007/01/22(月) 03:43:240725デフォルトの名無しさん
2007/01/22(月) 05:32:44[2] 問題文
1,各ノードがint型の値と次のノードへのリンクからなる連結リストを自己参照構造体を用いて
実現したい。この連結リストに適した自己参照構造体を記せ。ただし、構造体名をnodeとすること。
2,1の問題で定義した自己参照構造体を用いて連結リストを実現したい。以下の問に答えなさい。
(a)連結リストの先頭に新しいノードを追加する関数add_topを記述せよ。
【注意】いずれも、関数を記述する問題であるが、引数の数、引数の型、return値の型などを明確に
書いていない。これらを適切に設定することも問いの一部である。
(b)データ要素を検索する(整数nを仮引数の1つとして受け取ると、連結リストの中にnを保持する
ノードがあればそのポインタを、なければNULLを返す)関数searchを記述せよ。ただし、nを保持する
ノードが複数ある場合は、それらのいずれか1つのポインタを返す。
(c)連結リスト中の正のノードの個数を返す関数count_nodesを記述せよ。
(d)連結リストを指すポインタと、削除対象ノードの直前のノードへのポインタpが引数として与えられたとき
削除対象ノードを連結リストから除外したあと、そのノードへのポインタを戻り値として返す関数を作成せよ。
関数名を withdraw とする。
(e)正整数nを引数として受け取り、n個のノードからなる連結リストを構築して、その連結リスト
へのポインタ(ダミーノードへのポインタ)を返す関数を作成せよ。関数名を make_list とする。
(f)正整数nを仮引数の1つとして受け取ると、連結リストを先頭から見ていき、保持する値が最初に
n以下になるノードがあればそのポインタを、なければNULLを返す関数search_geを記述せよ。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限:明後日
0726デフォルトの名無しさん
2007/01/22(月) 08:25:18正のノードの定義って?正の整数?ダミーノードじゃないってこと?
0727デフォルトの名無しさん
2007/01/22(月) 09:33:29一応それっぽいのは作ったけど、(d)の意義がよくわからない・・・誰か解説して・・・
0728デフォルトの名無しさん
2007/01/22(月) 09:37:17>>588
0729デフォルトの名無しさん
2007/01/22(月) 09:55:43>>576 >>588
0730デフォルトの名無しさん
2007/01/22(月) 09:58:190732355 ◆ZKcfds8GQA
2007/01/22(月) 10:22:08[2] 問題文(含コード&リンク):
・数独を問題選択可能にする。
・起動時に、100問から自由に選べるようにする。
・解答チェックは、解放プログラムを組み込むこと。
・正解した時に、「正解です」と表示させる。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:bcc5.5.1
[3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑ココで作って頂いたものでお願いします。
問題100問は、自分で作ります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3487.txt
↑用意した問題
よろしくお願いします。
0733624
2007/01/22(月) 10:32:49$ cut seiseki.data
T2001 77 55 10
T2002 64 45 23
T2003 53 31 99
T2104 56 55 80
T2105 91 67 58
T2106 41 55 33
T2207 78 71 85
T2208 21 51 37
T2210 85 54 18
0734デフォルトの名無しさん
2007/01/22(月) 10:47:31順番は国語数学英語か?
それとも英語数学国語か?
0735デフォルトの名無しさん
2007/01/22(月) 11:22:35>>733
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3488.txt
返事がないので英数国で処理した。ちなみにmath.hは使ってない。
0736デフォルトの名無しさん
2007/01/22(月) 11:36:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3489.txt
一応修正しておいた
0737デフォルトの名無しさん
2007/01/22(月) 13:01:39[2] 問題文(含コード&リンク): http://sund1.sakura.ne.jp/uploader/source/up1417.pdfの48〜51ページ
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限: ([2007年1月23日10時まで]
[5] その他の制限:とくになし
0738デフォルトの名無しさん
2007/01/22(月) 13:06:51>>603
>>610
0739デフォルトの名無しさん
2007/01/22(月) 13:13:34[2] 問題文(含コード&リンク):
Write a program that inputs three integers from the keyboard and prints the sum, average, product, smallest and largest of these numbers. The screen dialog should appear as follows:
Input three different integers: 13 27 14
Sum is 54
Average is 18
Product is 4914
Smallest is 13
Largest is 27
が、問題文ですが、数字三つをインプットして、その数字の和、平均、積、一番小さい、一番大きい数字の5を求めるのですが、
最後の一番小さい、大きい、数字の出し方で悩んでいます。初歩的ですが、補助お願いします。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Digitalmars, or Borland 5.5C++
[3.3] 言語:C++
[4] 期限: ([2007年01月26日まで] または [無期限] のいずれか)
[5] その他の制限: なし
0740デフォルトの名無しさん
2007/01/22(月) 13:18:01#include <stdio.h>
#define STUDENT_MAX (100)
typedef struct{
char id[6];
int eng, math, jap, total;
}Student;
int main(){
char buf[256];
int cnt=0;
Student *p,st[STUDENT_MAX];
p=st;
while ( NULL!=gets(buf) ) {
if ( 4==sscanf( buf,"%s %d %d %d", p->id, &p->eng,&p->math,&p->jap) ) {
p->total = p->eng + p->math + p->jap;
cnt++;
if ( STUDENT_MAX == cnt )
break;
p++;
}
}
printf("Id-No Eng Math Jap Total\n----- --- ---- --- -----\n");
for(p=st;0<cnt;cnt--,p++)
printf("%5s %3d %3d %3d %3d\n",p->id,p->jap,p->math,p->eng,p->total);
return 0;
}
0741デフォルトの名無しさん
2007/01/22(月) 13:24:20#include<stdio.h>
int main(){
int a,b,c,m;
printf("Input three different integers:");
scanf("%d %d %d",&a,&b,&c);
printf("Sum is %d\n",a+b+c);
printf("Average is %d\n",(a+b+c)/3);
printf("Product is %d\n",a*b*c);
m = a;
if(m > b) m = b;
if(m > c) m = c;
printf("Smallest is %d\n",m);
m = a;
if(m < b) m = b;
if(m < c) m = c;
printf("Largest is %d\n",m);
return 0;
}
0742デフォルトの名無しさん
2007/01/22(月) 14:15:45#include<stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0)
for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=
p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i=
1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++
p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d"
,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}
ぐぐってたらオセロ見つけたぞ
0743デフォルトの名無しさん
2007/01/22(月) 14:28:45即答どうもです、しかし是はCをいただきました。課題はC++でした。とりあえず感謝です。
0744デフォルトの名無しさん
2007/01/22(月) 14:37:44>>743
#include<iostream>
using namespace std;
int main(){
int a,b,c,m;
cout<<"Input three different integers:";
cin>>a>>b>>c;
cout<<"Sum is "<<a+b+c<<endl;
cout<<"Average is "<<(a+b+c)/3<<endl;
cout<<"Product is "<<a*b*c<<endl;
m = a;
if(b < m) m = b;
if(c < m) m = c;
cout<<"Smallest is "<<m<<endl;;
m = a;
if(b > m) m = b;
if(c > m) m = c;
cout<<"Largest is "<<m<<endl;
return 0;
}
よく読まないでごめんなさい orz
0746デフォルトの名無しさん
2007/01/22(月) 15:43:260747733
2007/01/22(月) 16:12:31すいません!。順番は>>735の物で問題ありません。
遅れましたがありがとうございます。
早速試してみたいと思います。色々と迷惑かけてすみませんでした。
0749デフォルトの名無しさん
2007/01/22(月) 16:25:36>603を読んだが、酷い教材だな。
0750デフォルトの名無しさん
2007/01/22(月) 16:26:48説明が下手すぎて、どういう仕様の入力を与えてどういう出力が得られればいいか判らない。
0751デフォルトの名無しさん
2007/01/22(月) 16:30:13うるせーよバーカ
0752デフォルトの名無しさん
2007/01/22(月) 16:37:17簡単だが綺麗にコーディングしようと思うと難しい。
ちょっと待ってろ
0753デフォルトの名無しさん
2007/01/22(月) 16:37:50どれでも好きなの持ってお行き
数独 C言語 の検索結果 約 577 件中 1 - 10 件目 (0.14 秒)
0755デフォルトの名無しさん
2007/01/22(月) 16:41:25回答者のプライドをくすぐるとは、なかなか釣りが上手いな
まぁがんがれや( ´_ゝ`)
0756224
2007/01/22(月) 16:42:53頑張ります!!
0758デフォルトの名無しさん
2007/01/22(月) 16:48:310760デフォルトの名無しさん
2007/01/22(月) 17:02:57ニセモノ気取るならせめて面白くなきゃな
0761224
2007/01/22(月) 17:08:180762デフォルトの名無しさん
2007/01/22(月) 17:17:060763デフォルトの名無しさん
2007/01/22(月) 17:31:49>>762自演してないでそっちでも頑張れ
0764224
2007/01/22(月) 17:38:24#include<stdlib.h>
int main(int argc,char **argv)
int initial[4][4];
最初はやはりこの形式なのでしょうか。
別に、これ以外でも全然問題は無いのですが、この先が分かりません;
0765737
2007/01/22(月) 18:07:03是非お願いします。
0766デフォルトの名無しさん
2007/01/22(月) 18:27:54ここで答えるのは人の将来なんてしらんという無責任な人たちだけだ
0767デフォルトの名無しさん
2007/01/22(月) 18:35:13誤 ここで答えるのは人の将来なんてしらんという無責任な人たちだけだ
↓
正 ここに依頼する奴は自分の将来なんか知らんというバカな人たちだけだ
0768デフォルトの名無しさん
2007/01/22(月) 18:38:36別に質問した奴のことなんてどうでも良い、出された宿題が自分には解けるか?
腕試しする目的で見ている俺モイル
0769デフォルトの名無しさん
2007/01/22(月) 18:54:48[2] 問題文(含コード&リンク):
2分木探索プログラムの改良
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3490.txt
(* ここに解答を書き加える *)の穴埋め
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限: 2007年01月26日まで
[5] その他の制限: なし
よろしくおねがいします
0770デフォルトの名無しさん
2007/01/22(月) 19:05:59問題文見てみたけど具体性に欠け意味不明。教科書持ってるか授業を受けてないと
分からないような書き方になってる希ガス。
0771デフォルトの名無しさん
2007/01/22(月) 19:11:280772769
2007/01/22(月) 19:17:05いつも使っているブログの事情でUTF-8で常時保存してるの忘れてました
Shift_JISで上げ直したほうがいいですかね?
それと、今の課題の状況なのですが
一つ目の穴には
return((BinNode *)calloc(500,sizeof(BinNode)));
二つ目の穴には
p->count++;
としてみて動かしてみたところ、実際より表示される累計数が1つが少ないので
初期化をどうやればいいのだろう、と構造体の復習をしているところです
0773デフォルトの名無しさん
2007/01/22(月) 19:27:09IEか?
0774752
2007/01/22(月) 19:32:45でけたよー。久々に頭使った
#include<stdio.h>
unsigned i,g[]={0x7C88,0xBC44,0xD322,0xE311,0xC788,0xCB44,0x3D22,0x3E11,0x887C
,0x44BC,0x22D3,0x11E3,0x88C7,0x44CB,0x223D,0x113E},b[16],m,p;int main(){for(;i
<16;i++)scanf("%1u",&b[i]),m=m<<1|b[i]!=0;for(;p<16;p++){if(m>>15-p&1)continue
;n:if(++b[p]>4){b[p]=0;do if(!p--)return fputs("no solution found.",stderr),1;
while(m>>15-p&1);p--;}else for(i=0;i<16;i++)if((g[p]>>15-i&1)&&b[i]==b[p])goto
n;}for(i=0;i<16;i++)printf("%d%s",b[i],i%4-3?"":"\n");return 0;}
0775デフォルトの名無しさん
2007/01/22(月) 19:40:47めんどいからDLしてEditreに任せたw
これでどや?
BinNode *AllocNode(void)
{
//(* ここに解答を書き加える *)
// 単元9の課題番号1では return((BinNode *)calloc(1,sizeof(BinNode))); の一行でした
BinNode *p;
if(NULL!=(BinNode)calloc(1,sizeof(BinNode))){
p->count=1;
p->left =NULL;
p->right=NULL;
}
return( p );
}
0776デフォルトの名無しさん
2007/01/22(月) 19:42:52K&Rにはcallocが先だったらしいけど。
0777デフォルトの名無しさん
2007/01/22(月) 19:42:54BinNode *AllocNode(void)
{
//(* ここに解答を書き加える *)
// 単元9の課題番号1では return((BinNode *)calloc(1,sizeof(BinNode))); の一行でした
BinNode *p;
if ( NULL!=(p=(BinNode*)calloc(1,sizeof(BinNode))) ){
p->count=1;
p->left =NULL;
p->right=NULL;
}
return( p );
}
0778デフォルトの名無しさん
2007/01/22(月) 19:43:52オレもmallocばっかり使ってる
0779デフォルトの名無しさん
2007/01/22(月) 19:47:52callocはmallocと違ってゼロクリアされるから、
メンバの多い構造体を初期化するときに、
s->foo=0やs->bar=NULLを書かなくてすむようになる
0780769
2007/01/22(月) 19:48:43正解でした
ありがとうございました
プログラミングってむずかしい
先が思いやられる(´・д・`)
0781224
2007/01/22(月) 19:49:25ファイルから入力って書いたはずだったんですけど、伝わらなかったのか;
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char **argv)
{
int initial[4][4];
int ;
int blank;
int hint[5];
int total;
FILE *fp;
if((fp=fopen(argv[1],"r"))==NULL)
多分、序盤の出だしはこれじゃないかと思うのですが・・・;
この先はどうすればよいですか?
0782デフォルトの名無しさん
2007/01/22(月) 19:53:07標準入力版でもファイルから入力はできるが。
0783デフォルトの名無しさん
2007/01/22(月) 19:59:16実行ファイルを ./a.out とした時、
./a.out < data.txt
とすればファイル data.txt から読み込む。
0784224
2007/01/22(月) 19:59:441000
0200
3001
0004
上記のような数を記したファイルを、前もって作成しておく。
プログラムは、このファイルの数値を読み込み、0の部分に1から4までの数を置き換えて数独を完成するもの。
各行、各列、2×2の小領域において、一回使った数字は再使用できない。
以上です。重ね重ねすみません;
0785デフォルトの名無しさん
2007/01/22(月) 19:59:56[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。
このとき0と1の並びに着目し、データ圧縮することを考える。例えば1.datというファイルに11111110000000000000000000000001E
というように0と1がならんでいるとき、7 1 24 0 1 1
と圧縮できる。すなわちこれは7個の1、24個の0、1個の1を順に意味する。このとき圧縮結果には格数値間に空白を挟むことに注意する。
上記の圧縮方法に従って任意の0と1から成るデータを圧縮し、圧縮結果を表示するプログラムを作成せよ。ただしデータはリダイレクションによってchar型変数に1文字ずつ繰り返し読み込まれるものとする。
またEが読み込まれたときに「圧縮完了」というメッセージを出し、プログラムを終了させるものとする。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明日
0787デフォルトの名無しさん
2007/01/22(月) 20:01:27アホすぎるぞ
面白いけど
0788224
2007/01/22(月) 20:05:55[j0603901@IMS228 2006531039_3]$ gcc -o a main.c
[j0603901@IMS228 2006531039_3]$ ./a < prob4-1.txt
1111
1211
3111
1114
やってみたんですが、こんな感じに;
0789デフォルトの名無しさん
2007/01/22(月) 20:14:19#include <stdio.h>
main()
{
int c, c_, cnt;
while ((c = getchar()) != EOF && c != 'E') {
if (c == '0' || c == '1') {
for (cnt = 1, c_ = c; (c = getchar()) != EOF && c == c_; ++cnt)
;
ungetc(c, stdin);
printf("%d %c ", cnt, c_);
} else {
printf("フォーマットエラー\n");
exit(1);
}
}
printf("\n圧縮完了\n");
}
0790224
2007/01/22(月) 20:20:590が全部1に置き換えられてます。
どうすりゃいいんだか・・・orz
0791776
2007/01/22(月) 20:23:50また規格厨かとか言われそうだけど
ゼロクリアされてもそれが即ヌルポインタ、文字列終端記号になるとは限らない。処理系による。
基本型にしても浮動小数点なら全てのビットが0ならイコール0.0とは限らない。
再現性の薄いバグを出さないという意味ではいいかもしれないけど
それにしてももっと分かりやすいデータ(0xEBとか)で埋めたほうがバグの検出がしやすいと思う。
そもそも引数二つとってそれを掛けた大きさをメモリ確保、っていう仕様も意味不明。
0792デフォルトの名無しさん
2007/01/22(月) 20:25:31>>789難しくネ?
#include<stdio.h>
int main()
{
int ch,keep=0,cnt=0;
while ( EOF!=(ch=getchar()) ) {
if ( ch != keep ){
printf("%d %c ", cnt, keep);
keep=ch;
cnt=1;
}
else
cnt++;
}
return 0;
}
0793デフォルトの名無しさん
2007/01/22(月) 20:26:10同様にfwrite()やfread()は醜いと感じる
まぁ古いだけあってlibcのインタフェースは糞なのが多いわな
0794デフォルトの名無しさん
2007/01/22(月) 20:27:51Eで終わらして「圧縮完了」を忘れないでやってくれ
0795デフォルトの名無しさん
2007/01/22(月) 20:29:14失敬m(_ _)m
0796デフォルトの名無しさん
2007/01/22(月) 20:30:180797デフォルトの名無しさん
2007/01/22(月) 20:34:30それだと最初に1を読み込んだ時に0 0が出力される気がしなくもない
0798デフォルトの名無しさん
2007/01/22(月) 20:34:56g[0]&1あたりで判別して、バイトオーダを整えないと
0799デフォルトの名無しさん
2007/01/22(月) 20:36:13別にいいんじゃね?
無駄だけど…
0800デフォルトの名無しさん
2007/01/22(月) 20:36:47そりゃすまんかった
>>785
#include <iostream>
using namespace std;
int main()
{
int c, c_, cnt;
streambuf* sb = cin.rdbuf();
while ((c = sb->sbumpc()) >= 0 && c != 'E') {
if (c == '0' || c == '1') {
for (cnt = 1, c_ = c; (c = sb->sbumpc()) >= 0 && c == c_; ++cnt)
;
sb->sungetc();
cout << cnt << static_cast<char>(c_);
} else {
cout << flush;
cerr << "フォーマットエラー" << endl;
exit(1);
}
}
cout << "\n圧縮完了" << endl;
return 0;
}
0801デフォルトの名無しさん
2007/01/22(月) 20:36:51うっ Cppでもないし 颯爽と退場orz
0802800
2007/01/22(月) 20:39:18- cout << cnt << static_cast<char>(c_);
+ cout << cnt << static_cast<char>(c_) << ' ';
0803800
2007/01/22(月) 20:41:47+ cout << cnt << ' ' << static_cast<char>(c_) << ' ';
だ。スマソ。
0804デフォルトの名無しさん
2007/01/22(月) 21:33:274213
3421
2134
0805デフォルトの名無しさん
2007/01/22(月) 21:36:27解いてくださったらわずかですが謝礼も払います。
0806デフォルトの名無しさん
2007/01/22(月) 21:38:45NGワード言っちゃいましたね( ̄ー ̄)ニヤリッ
0807デフォルトの名無しさん
2007/01/22(月) 21:41:49原因をここで聞くのはありですか?
0808デフォルトの名無しさん
2007/01/22(月) 21:43:28カモン
0809デフォルトの名無しさん
2007/01/22(月) 21:46:47必ず誰かが相談に乗ってくれる借金生活相談室24って・・・そんな相談乗ってくれるのか
0810デフォルトの名無しさん
2007/01/22(月) 21:55:38…
0811737
2007/01/22(月) 21:56:07放置されてるんで是非お願いします!
0813デフォルトの名無しさん
2007/01/22(月) 22:02:05この辺嫁
>>749
>>770
0814807
2007/01/22(月) 22:02:38単語数を数えるレポートなのですが・・・アルファベットが出たらカウントを1増やして
アルファベットが続く限りファイルを進めるという風にしてるつもりが無限ループしてしまいます・・・
#include<stdio.h>
char fileName[]="abk.c";/*元のcプログラムファイル*/
int main(void)
{
FILE *input;
int c,count;
/*------------ファイルを開く------------*/
input=fopen(fileName,"r");
while(1){
c=fgetc(input);
if(c==EOF)break;
if(65<=c&&c<=90){
if(97<=c&&c<=122)count++;
while(65<=c&&c<=90){
if(97<=c&&c<=122)
c=fgetc(input);
}
}
}fclose(input);
printf("単語数:%d",count);return 0;
}
0815807
2007/01/22(月) 22:04:58ファイル中の単語数をカウントするプログラムを作成せよ。単語の切れ目はアルファベット以外の文字
0816デフォルトの名無しさん
2007/01/22(月) 22:05:40>while(65<=c&&c<=90){
>if(97<=c&&c<=122)
>c=fgetc(input);
>}
この部分で while に入ったが最後抜けられない
0817デフォルトの名無しさん
2007/01/22(月) 22:07:38[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3491.txt
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:24日まで
0819デフォルトの名無しさん
2007/01/22(月) 22:10:49if(97<=c&&c<=122)
c=fgetc(input);
}
ここでcが97〜122の範囲に無かったら無限ループ。
というかこのif文の意図は何だ。アルファベットが続く間
fgetcを続けて入力を進めたいなら
while((65<=c&&c<=90)||(97<=c&&c<=122)){
c=fgetc(input);
}
ungetc(c,input);
だ。
0820デフォルトの名無しさん
2007/01/22(月) 22:12:38それは読み込んじゃっていいか。ラストのungetcは要らんな。
0821デフォルトの名無しさん
2007/01/22(月) 22:17:23[2] 問題文(含コード&リンク):ttp://www.geocities.jp/sweety_lemonade の「基地局プログラムの開発の進め方」にある1〜6の機能を持つプログラムの作成をお願いいたします。
[3] 環境
[3.1] OS:redhat9 & fedoracore6
[3.2] コンパイラ名とバージョン:gcc3.4
[3.3] 言語:Cのみ
[4] 期限:2007/1/24(水)
[5] その他の制限: 特にありません。
必要な呼制御メッセージやその役割は「参考スライド」に書いてあります。
どうか、どうかよろしくお願いいたします。
0822807
2007/01/22(月) 22:18:01if文がおかしいのはその二つ同時に条件に入れるやり方がわからなかっただけですたorz
0823デフォルトの名無しさん
2007/01/22(月) 22:21:51isalpha 使うと楽だよ。(#include<ctype.h> 追加して)
使っちゃダメなのかもしれんが
0824デフォルトの名無しさん
2007/01/22(月) 22:21:57[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3492.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/25
[5] その他の制限:説明も加えてください
0825807
2007/01/22(月) 22:22:320827デフォルトの名無しさん
2007/01/22(月) 22:28:37isalpha を使うとこんな感じ
#include<stdio.h>
#include<ctype.h>
char fileName[]="abk.c";
int main(void){
FILE *input;
int c,flag_prev_is_alphabet=0,count=0;
input=fopen(fileName,"r");
while(1){
c=fgetc(input);
if(c==EOF)break;
if(isalpha(c) && !flag_prev_is_alphabet)
count++;
flag_prev_is_alphabet=isalpha(c);
}
fclose(input);
printf("単語数:%d",count);return 0;
}
0829デフォルトの名無しさん
2007/01/22(月) 23:09:48[2] 問題文(含コード&リンク):相手にメールを送り、受け取った人がそれを開くと
自動的にドレミファソラシドの音を繰り返すプログラムを作成せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C/C++どちらでも可
[4] 期限:2007/2/4
[5] その他の制限:音階は特に気にしなくていいです
受信者側のパソコンで、メールを開くと音が出るようにします。
0830デフォルトの名無しさん
2007/01/22(月) 23:12:140831デフォルトの名無しさん
2007/01/22(月) 23:12:510832デフォルトの名無しさん
2007/01/22(月) 23:21:210833デフォルトの名無しさん
2007/01/22(月) 23:24:50助けてください
0834デフォルトの名無しさん
2007/01/22(月) 23:30:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3493.zip
0835デフォルトの名無しさん
2007/01/22(月) 23:36:08[2] 問題文(含コード&リンク):
アカウント名とパスワードのデータ管理をするために、チェイン法を用いたハッシュ表をつくり、辞書操作(データ削除、検索、挿入)とリスト長のヒストグラム表示
[3] 環境
[3.1] OS: Mac OSX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:今週中にお願いします。
[5] その他の制限:
アカウント名、1〜6文字で構成される英子文字
ハッシュ内でアカウント名の重複はダメ
パスワード、1〜10文字で構成される英数字
よろしくお願いします。
0836デフォルトの名無しさん
2007/01/22(月) 23:36:49この書き方だとメーラ(受信側)を作れとも聞こえる
メール受信→開く→メーラが音を出す(音で知らせる意味が無いけど)
メールにプログラムを添付?開いただけじゃ実行されないよね・・・
>>831の言うようにHTMLメールで?でもその場合C/C++は関係ないんじゃ・・・
0837デフォルトの名無しさん
2007/01/22(月) 23:46:350838デフォルトの名無しさん
2007/01/23(火) 00:07:140839デフォルトの名無しさん
2007/01/23(火) 00:15:520840デフォルトの名無しさん
2007/01/23(火) 00:18:300841デフォルトの名無しさん
2007/01/23(火) 00:22:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3495.cpp
0842デフォルトの名無しさん
2007/01/23(火) 00:45:25これやる奴いるのかよw
0843355 ◆ZKcfds8GQA
2007/01/23(火) 00:48:49助かりました。
ありがとうございました。
0844デフォルトの名無しさん
2007/01/23(火) 00:51:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3496.txt
0845844
2007/01/23(火) 00:54:54以下の箇所を直しといてくれ。
-if (term > max)
+if (fabs(term) > max)
0846デフォルトの名無しさん
2007/01/23(火) 01:02:10exp(-x)じゃねえの?
0848デフォルトの名無しさん
2007/01/23(火) 01:07:48exp(x)のべき級数展開してない?
0849デフォルトの名無しさん
2007/01/23(火) 01:09:390850844
2007/01/23(火) 01:15:21-int power(double base, int n)
+double power(double base, int n)
だな。
0851デフォルトの名無しさん
2007/01/23(火) 01:15:26>相手にメールを送り、受け取った人がそれを開くと自動的にドレミファソラシドの音を繰り返すプログラムを作成せよ
>受信者側のパソコンで、メールを開くと音が出るようにします
・作成したプログラム(メーラー)で開いたら、とりあえず音が出るだけという無意味なプログラム(メーラー)を作るのか
(Windowsでいうと開くというアクションにサウンドを割り当てるって感じだね)
・メール受信時、相手の指定した音が出るプログラム(メーラー)を作るのか(この場合送信側も必要になる)
・送受信されるメールそのものに細工を施すのか
以上のようにどういったものが作りたいのかが曖昧です
よって
<結論>
意味わかんないから無理です
0852355 ◆ZKcfds8GQA
2007/01/23(火) 01:16:56makeに失敗してしまいます。
どのようにコンパイルすればよいのでしょうか?
0853デフォルトの名無しさん
2007/01/23(火) 01:18:08日本語を普通に読み取れば、
>相手にメールを送り
と書いてあるある以上、送信側のプログラムを作るんだろ?
データ生成はこれが自由に行えるから、無論メールに細工をするのが
本質なわけだ。
まぁ、こんなことが出来たら、メールを開けたらディスクがフォーマットされる
ようなメールを送れそうだがな。
0854デフォルトの名無しさん
2007/01/23(火) 01:19:00cc exp.c -lm
数学関数を使う場合は、-lmを指定してlibm.aをリンクするのを忘れずに。
0855デフォルトの名無しさん
2007/01/23(火) 01:20:24#include<stdio.h>
#include<math.h>
intmain(void){
int n;
double ans=1.0, kou=1.0, t=0.0, x=10.0, e;
printf("%.10f %.10f\n", kou, ans);
for(n=1;n<40;n++){
kou*=-x/n;
if(fabs(t)<fabs(kou)) t=kou;
ans+=kou;
printf("%.10f %.10f\n", kou, ans);
}
printf("t=%.10f\n", t);
e=fabs(ans-exp(-x));
printf("exp(%.1f)=%.10f\n", -x, exp(-x));
printf("e=%.10f\n", e);
return 0;
}
0856デフォルトの名無しさん
2007/01/23(火) 02:10:35>>855
動きません
あとxはscanf使うんだと思います
0857デフォルトの名無しさん
2007/01/23(火) 02:15:05試しに俺も。
#include <iostream>
int main() {
char oldc, newc;
int counter = 0;
for (; ; ) {
for (; ; ) {
std::cin >> newc;
if (++counter == 1) oldc = newc;
if (oldc != newc) break;
}
std::cout << --counter << ' ' << oldc << ' ';
if (newc == 'E') break;
counter = 1;
oldc = newc;
}
std::cout << "圧縮完了" << std::endl;
return 0;
}
0858デフォルトの名無しさん
2007/01/23(火) 02:15:39・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0859デフォルトの名無しさん
2007/01/23(火) 02:29:010860デフォルトの名無しさん
2007/01/23(火) 02:30:48#include<stdio.h>
#include<math.h>
float t=0,sum=0;
float Factrial(float n){
if(n<=0) return 1;
return n*Factrial(n-1);
}
float exp_Mac(float x,float n){
float Paragraph;
if(n<=0){
sum+=1;
printf("第 1項:1.0000000000\tここまでの合計:%10.10f\n",sum);
return 1;
}
Paragraph=pow(x,n)/Factrial(n);
sum+=Paragraph;
if(fabs(Paragraph)>t) t=fabs(Paragraph);
printf("第%3.f項:%10.10f\tここまでの合計:%10.10f\n",n+1,Paragraph,sum);
return Paragraph+exp_Mac(x,n-1);
}
int main(void){
float x,n,s,e;
printf("xを入力:");scanf("%f",&x); printf("nを入力:");scanf("%f",&n);
s=exp_Mac(x,n),e=s-exp(x);
printf("マクローリン展開の値:%10.10f\n",s);
printf("誤差:%10.10f\n",e);
printf("最大の絶対値:%10.10f",t);
return 0;
}
0861デフォルトの名無しさん
2007/01/23(火) 03:02:13[2] 問題文(含コード&リンク):
先日行われたセンター試験、数学II/Bの第6問にある
「二分法を用いて5の3乗根の近似値を計算するプログラム」
をCでできるだけ簡潔に書き直せ。
ここから---------------------------------
100 LET A=0
110 LET B=2
120 INPUT N
130 FOR I=1 TO N
140 LET C=(A+B)/2
150 LET D=C*C*C-5
160 IF D<0 THEN LET A=C
170 IF D>=0 THEN LET B=C
180 NEXT I
190 PRINT A
200 PRINT B
210 END
---------------------------------ここまで
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:2006/01/30
[5] その他の制限:stdio.hとmath.hのみ使用可
オリジナルの問題はこちらにあります(p.15)
http://proxy.ymdb.yahoofs.jp/edu/center/quest_sugaku_2b.pdf?jeWyktFBTTcEVsIK
よろしくおねがいします。
0862デフォルトの名無しさん
2007/01/23(火) 03:10:22完璧です
ありがとうございます
0863デフォルトの名無しさん
2007/01/23(火) 03:16:54#include <stdio.h>
int main(){
int N;
double a=0,b=2,c;
scanf("%i",&N);
for(;N>0;N--)c=(a+b)/2,c*c*c-5<0?a=c:(b=c);
printf("%f\n%f\n",a,b);
return 0;
}
0864デフォルトの名無しさん
2007/01/23(火) 03:20:50int main(void) {
int i,n;
double a=0,b=2,c,d;
scanf("%d",&n);
for(i=1;i<=n;i++) {
c=(a+b)/2;
d=c*c*c-5;
if(d<0) a=c;
if(d>=0) b=c;
}
printf("%f\n",a);
printf("%f\n",b);
return 0;
}
0865デフォルトの名無しさん
2007/01/23(火) 06:39:25[2] 問題文(含コード&リンク):
(dy/dx)=2xyなる微分方程式がある.y(0)=1とすれば元の関数はy=exp(x^2)であることは明らかであるが,ホイン法を用いてこの近似解を求めるプログラムを作れ.
[3] 環境
[3.1] OS:Windows XP pro SP2
[3.2]Visual Studio .NET 2003(学生ライセンス版)
[3.3] 言語: C
[4] 期限: 宿題ではないので各自考えてみなさい.故に無制限であると思います.オイラー法は講義で説明を受けました.
[5] その他の制限: 配列とポインタ(講義中にy[i]のような表記を使わなくてもとけると言う文言がありました.)
これに対して
#include <stdio.h>
#include <math.h>
double func( double x, double y){ return 2*x*y}
int main()
{
double x0=0.0,xend=1.0;
int i,n=50;/*ステップ*/
double y0=1.0;
double h,x,y,k1,k2;
h=fabs(xend-x0)/n;/*幅*/
y=y0;x=x0;
for(i=0;i<=n;i++){
k1=f(x,y);y=y+h*k1;
k2=func(x+h,y); y=y+(k1+k2)*h/2.0;
printf("%16.15f %16.15f %16.15f %16.15f\n",k1,k2,x,y);
x+=h;
}
return 0;
}
としたのですが誤差がどんどん大きくなってしまいオイラー法よりもあまりにひどい精度となってしまっています。ご助力等お願いします。
0866デフォルトの名無しさん
2007/01/23(火) 07:03:01[2] 問題文(含コード&リンク): http://pc10.2ch.net/test/read.cgi/tech/1168663908/867
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2007年1月28日まで
[5] その他の制限: どこまで習っているか C文法一通り習ってます
0867デフォルトの名無しさん
2007/01/23(火) 07:03:48ここで、右下角は何も置けないようになっている。この状態から、次のルールに従ってパネルを移動して目標状態にする問題を考える。
●4つの隣接するパネルを時計回りに回転させることができる。
●4つの隣接するパネルの和が5の倍数のときには回転させることができない。
例えば、図1(b)の場合、移動前の状態から左上の4枚(5,8,2,3)を時計回りに回転させると、移動後の状態になる。
なお、移動前の状態では他に右上の4枚(8,1,3,7)も回転されることは可能であるが、右下の4枚(2,3,6,4)は合計が5の倍数になるので、回転させることはできない。
図1
http://cocoa.gazo-ch.net/bbs/18/img/200701/1198816.jpg
(1).問題を定式化せよ。
(2).(1)に基づいて、目標状態に至るまでの手順を縦型探索、横型探索、A*(エースター)アルゴリズムにより探索するプログラムを作成せよ。
ヒューリスティック値は各自でいろいろ設定してみて、最適なものを探してみること。
言語はCを用いること。また、状態を保持するリストは配列のように保持可能な要素数が固定されるものでなく、ポインタなどを利用して保持可能な要素数を動的に変更可能なものを使用すること。
各探索における結果や時間や記憶領域に関する計算量の実測値を比較したり、設定したヒューリスティックが有効であったかどうか、その理由も考察してみること。
ながいですがよろしくお願いします。だれか教えてください。
0868821
2007/01/23(火) 08:16:30お願いいたします。
0869デフォルトの名無しさん
2007/01/23(火) 09:17:12漸化式が違う気がする。
for(i=0;i<=n;i++){
y=y+(k1+k2)/2.0;
k1=h*func(x,y);
k2=h*func(x+h,y+k1);
printf("%16.15f %16.15f %16.15f %16.15f\n",k1,k2,x,y);
x+=h;
}
0870デフォルトの名無しさん
2007/01/23(火) 09:50:25[2] 問題文(含コード&リンク) :問題 10人の名前,年齢,電話番号の入ったファイルを作り、それを読み出すプログラムを作れ。そのとき、ファイル名は画面上で自由に設定でき、ファイルの拡張子はdatとなるようにせよ。再度ファイル名の入力を要請できるようにせよ。
上のファイルに新たに1人のデータを追加するためのプログラムを作れ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C言語
[4] 期限:1月26日
[5] その他の制限: どこまで習っているか 一通り習いましたが、できるだけ簡単な文法でお願いします。
よろしくお願いします。
0871デフォルトの名無しさん
2007/01/23(火) 09:50:40[2] 問題文(含コード&リンク): 距離の単位としてメートルとヤードがある。距離のメートルを入力するとヤードに、ヤードを入力するとメートルに変換するプログラムを作成せよ。
入力した単位はメートルならmを、ヤードならyを入力する。ただし距離を変換する部分は以下のような関数transを定義し、main関数で呼び出して使用すること。
関数名 trans
第1引数 char 距離の単位(mかy)
第2引数 double 距離の値
小数点以下の計算があるので返値はdouble型とする。
またメートルあるいはヤードの値はmain関数で距離の単位にEが読み込まれるまで繰り返し読み込み、メートルあるいはヤードに変換した距離の値をmain関数で出力すること。1ヤード=0.914メートルとすること。
実行例
meter or yard:m
input data:270.5
270.5 meter-->295.952 yard
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明日
0872デフォルトの名無しさん
2007/01/23(火) 10:02:19> 10人の名前,年齢,電話番号の入ったファイルを作り
ここまでは自分でやれ
0873デフォルトの名無しさん
2007/01/23(火) 10:05:25#include <iostream>
using namespace std;
void trans(char&c,double&d,double&d2){d2=c=='m'?d/0.914:d*0.914;}
int main(){
while(1){
char c;
double d,d2;
cout << "meter or yard:";cin >> c;
if(c=='E')break;
cout << "input data:";cin >> d;
trans(c,d,d2);
cout << d << (c=='m'?" meter-->":" yard-->") << d2 << (c=='y'?" meter":" yard") << endl;
}
return 0;
}
0874デフォルトの名無しさん
2007/01/23(火) 11:00:29[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3497.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 1月27日まで]
[5] その他の制限:
0875デフォルトの名無しさん
2007/01/23(火) 11:38:53ウルトラどうもです。たすかります。
0876デフォルトの名無しさん
2007/01/23(火) 12:46:38[2] 問題文(含コード&リンク):
入力される文字列を編集する
・先週の連続する空白を削除
・以降の連続する空白を1つにする
char bun[80];
gets(bun); 文字列を入力
:
: 空白削除処理
:
puts(bun); 編集後の文字列を出力
↑
末尾にヌル文字が必要
例
処理前 [ This is C Program . ]
処理後 [This is C Program . ]
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:?
[3.3] 言語:C
[4] 期限:今日14時まで
[5] その他の制限:
0877デフォルトの名無しさん
2007/01/23(火) 12:50:30[2] 問題文(含コード&リンク):
入力される整数を
カンマ編集した文字列に変換する
char edit[20];
int n;
scanf("%d", &n);
:
: カンマ編集処理
:
puts(edit);
例
入力 出力
123 123
1234 1,234
1234567890 1,234,567,890
0 0
-123 -123
-1234 -1,234
-1234567890 -1,234,567,890
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:?
[3.3] 言語:C
[4] 期限:今日14時まで
[5] その他の制限:
0878デフォルトの名無しさん
2007/01/23(火) 12:51:26急な課題で非常に申し訳ありませんが、
以上の二題、
一時間以内で、
できたらよろしくおねがいしますm(__)m
0879865
2007/01/23(火) 13:10:40そのままコンパイルしたらk1の定義がおかしいとコンパイラに怒られましたので
y=y+(k1+k2)/2.0;
k1=h*func(x,y);
k2=h*func(x+h,y+k1);
の部分を少しいじったらうまく行けそうです.有り難うございました.
0880デフォルトの名無しさん
2007/01/23(火) 13:13:09先週と・以降の意味がわからない
0881デフォルトの名無しさん
2007/01/23(火) 13:14:56scanf("%d", &n);
: カンマ編集処理
sprintf(edit, "%'d",n);
puts(edit);
0882デフォルトの名無しさん
2007/01/23(火) 13:16:44#include <stdio.h>
#include <string.h>
int main(void)
{
char bun[80];
if (NULL != fgets(bun, 79, stdin)){
while (1){
char* p = strstr(bun, " ");
if (NULL != p){
strcpy(p, p + 1);
}
else {
break;
}
}
if (' ' == bun[0]){
strcpy(bun, &bun[1]);
}
puts(bun);
}
return 0;
}
0883デフォルトの名無しさん
2007/01/23(火) 13:17:33#include <stdio.h>
#include <string.h>
int main(void)
{
int hasuu;
int num;
char bun[80];
if (NULL != fgets(bun, 79, stdin)){
if (1 == sscanf(bun, "%d", &num)){
sprintf(bun, "%d", num);
hasuu = strlen(bun) % 3;
for (int i = 0; i < strlen(bun); i++){
if (i % 3 == hasuu && i != 0){
putc(',', stdout);
}
putc(bun[i], stdout);
}
}
}
return 0;
}
0884デフォルトの名無しさん
2007/01/23(火) 13:23:50#include<stdio.h>
#include<stdlib.h>
void comma_format(int value, char *buf){
int value_abs, divide_value, len;
value_abs=abs(value);
for(divide_value=1;value_abs/divide_value>=1000;divide_value*=1000)
;
len=sprintf(buf, "%d", value/divide_value);
for(divide_value/=1000;divide_value>0;divide_value/=1000)
len+=sprintf(&buf[len], ",%03d", (value_abs/divide_value)%1000);
}
int main(void){
char edit[20];
int n;
scanf("%d", &n);
comma_format(n, edit);
puts(edit);
return 0;
}
0885デフォルトの名無しさん
2007/01/23(火) 13:54:45教官にgets()なんて使わせるなこのハゲとでも言っておけ。
理由は
ttp://www.kouno.jp/home/c_faq/c12.html#23
参照。
#include <stdio.h>
int main()
{
int c, pc;
for (pc = '\n'; (c = getchar()) != EOF; pc = c) {
if (c == ' ') {
if (pc != '\n' && pc != ' ')
putchar(c);
} else
putchar(c);
}
return 0;
}
0886876,877
2007/01/23(火) 13:58:37先週→先頭でした・・・orz
>>881-884
習ってないコマンドがたくさん出てきてるようですが・・・・
とりあえずありがとうございます!!
0887876,877
2007/01/23(火) 14:00:39たしかに、こんな変なの使いたくないですよね・・・
どうもです、参考にします。
0888835
2007/01/23(火) 14:15:580889デフォルトの名無しさん
2007/01/23(火) 14:15:580891デフォルトの名無しさん
2007/01/23(火) 15:02:25[2] 問題文:
1)1〜4999までの整数をローマ記法に変換するプログラムを作成せよ。 1,2,4,8,32,64,128,・・・・,4096を変換した結果を確認しなさい。
2)1000までの素数をエラトステネスの方法で計算するプログラムを作成せよ。
エラトステネスの方法とは 1000 までの奇数のうち 3 の倍数 6,9,12,・・・ を全て消す。
次に残った数のうち最小の 5 の倍数 10,15,20,25,・・・・を消す。 これを 7,11,13,17,・・・・・と1000の平方根を越えるまで続ける(31まで)。
これで 2 及び消されなかった数が素数である。
3)直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,
その点が物体の内部に落ちるかどうかを判定する。内部に落ちる確率が体積に比例することから体積が見積もれる。
4)ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。単語の切れ目はアルファベット以外の文字、
行の終わりは改行文字またはファイルの終端とします。この課題のソースファイルで動作確認をしてください。
5)2進16桁の2の補数表示のデ−タと10進数を相互に変換するプログラム。
6)HDD上の英文のテキストファイルを読んで、使用されている単語を抽出し、アルファベット順に整理して書き出すプログラム。
7)30のファクトリアル(30!=1*2*3*4*5*6*7*8*9*10*...*28*29*30)を計算する。intやlong型で は桁数が不足する。double型では計算精度が足りない。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C言語
[4] 期限: 1月27日
[5] その他の制限:
この中からいくつでもいいのでどうかよろしくお願いします
0892デフォルトの名無しさん
2007/01/23(火) 15:14:45[2] 問題文(含コード&リンク):
(1).ファイルの中身を16進数で表記したテキストファイルを作成する。
入力はコマンドラインから引数で渡し1行目に格納する。出力ファイル名は拡張子をTXTに変えたものとする。
ファイル名入力時に拡張子が"txt"の時は"txtファイルです"とメッセージを表示し終了する事。
例
hello.c
----------------------
#include <stdio.h>
main()
{printf("Hello World\n");}
------------------------
これを下記のようにする
hello.txt
-----------------------------------------
hello.c
23696E636C756465203C737464696F2E683E0D0A6D61696E28290D0A7B7072696E7466282248656C6C6F20576F726C645C6E22293B7D0D0A
-----------------------------------------
(2).上記(1)で作成したテキストファイルを元に戻すプロブラムを作成する。
hello.txt ⇒ hello.c
[3] 環境
[3.1] OS: WindowsXP Pro SP2
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1 for Win32
[3.3] 言語: C
[4] 期限: 2007年01月24日
[5] その他の制限: 標準ライブラリ関数
宜しくお願い致します
0893デフォルトの名無しさん
2007/01/23(火) 15:17:14>>888
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3498.txt
入力時のエラーチェックを(面倒になって)していないのでよろしく
0894デフォルトの名無しさん
2007/01/23(火) 15:22:09鹿児島大学?
0895デフォルトの名無しさん
2007/01/23(火) 15:25:07>拡張子をTXT
とあるのに他ではtxtと書いてあるのだが、どっち?
#どっちでも同じように扱えるが、それとこれとは別問題。
0896デフォルトの名無しさん
2007/01/23(火) 15:28:03改行コードはODOAにするの?
0897デフォルトの名無しさん
2007/01/23(火) 15:28:28ローマ記法でググった?
0898デフォルトの名無しさん
2007/01/23(火) 15:30:57そこはあえて触れんどいてね。まじ留年かかってるんで教えてください。
0899デフォルトの名無しさん
2007/01/23(火) 15:34:31すいません 書込みの時に大文字にしてしまいました
例が正しく小文字です
0900デフォルトの名無しさん
2007/01/23(火) 15:38:130901デフォルトの名無しさん
2007/01/23(火) 15:40:07入力ファイル次第では?
0902デフォルトの名無しさん
2007/01/23(火) 15:43:43そこをなんとかm(__)m
ばれるばれないの前にこのままだと留年確実ですorz
0903デフォルトの名無しさん
2007/01/23(火) 15:47:511)
#include <stdio.h>
void to_roman(int n){
char roman[7] = {'M','D','C','L','X','V','I'};
int num[7] = {1000, 500, 100, 50, 10, 5, 1};
int i, j;
for(i=0; n; i++) {
if(i%2) {
if(n/num[i+1]==9) {
printf("%c%c", roman[i+1],roman[i-1]);
n -= 9 * num[i+1];}
else if(n/num[i+1]==4) {
printf("%c%c", roman[i+1],roman[i]);
n -= 4 * num[i+1];}}
for(j=0; j<n/num[i]; j++) putchar(roman[i]);
n %= num[i];}
putchar('\n');}
int main(void)
{
int i;
for(i=1; i<5000; i*=2) {
printf("%4d:", i);
to_roman(i);
}
return 0;
}
0904デフォルトの名無しさん
2007/01/23(火) 15:52:41ありがとうございます
気がむいたら他のもやっちゃってください
0905デフォルトの名無しさん
2007/01/23(火) 16:18:452)
#include <stdio.h>
#include <string.h>
#include <math.h>
int buf[1001];
int main(void)
{
int ptr;
memset(buf, 0x0, sizeof(int) * 1001);
buf[0] = 1;
buf[1] = 1;
for (int i = 0; i < sqrt(1000); i++){
if (1 != buf[i]){
for (ptr = i + i; ptr <= 1000; ptr += i){
buf[ptr] = 1;
}
}
}
}
0906デフォルトの名無しさん
2007/01/23(火) 16:24:05お疲れ様です^ ^
0907デフォルトの名無しさん
2007/01/23(火) 16:26:01[2] 問題文(含コード&リンク):
コマンドライン引数から、1つのファイル名を受け、
そのファイルの内容をすべて表示する。
(ただし、テキストファイルしか、引数にしないものとする。)
[3] 環境
[3.1] OS:windows XP
よろしくお願いします。
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C++
[4] 期限:1月23日
[5] その他の制限:
0908デフォルトの名無しさん
2007/01/23(火) 16:27:197)
#include<stdio.h>
#define NITEM(array) (sizeof(array)/sizeof(array[0]))
#define DATA_UNIT_MAX 10000
void print_factrial(int n)
{
long data[30]={1}, carry;
int i, j;
for(i=1;i<=n;i++){
carry=0;
for(j=0;j<NITEM(data);j++){
data[j]=data[j]*i+carry;
carry=data[j]/DATA_UNIT_MAX;
data[j]%=DATA_UNIT_MAX;
}
}
for(i=NITEM(data)-1;data[i]<=0 && i>0;i--)
;
printf("%ld", data[i]);
for(i--;i>=0;i--) printf("%04ld", data[i]);
printf("\n");
}
int main(void){
print_factrial(30);
return 0;
}
0909デフォルトの名無しさん
2007/01/23(火) 16:30:323)
#include <stdio.h>
#include <stdlib.h>
#define TIMES 100000
int main(void)
{
int i;
double cnt;
double x;
double y;
srand((int)time(NULL));
cnt = 0;
for (i = 0; i < TIMES; i++){
x = (double)(rand() % 1000) / 1000;
y = (double)(rand() % 1000) / 1000;
if ((x - 0.5) * (x - 0.5) + (y - 0.5) * (y - 0.5) <= 0.25){
cnt++;
}
}
printf("%f\n", cnt / TIMES);
return 0;
}
0910デフォルトの名無しさん
2007/01/23(火) 16:32:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3499.txt
拡張子を変更するあたりの処理がマズイような気もするけど、キニシナイ
0911デフォルトの名無しさん
2007/01/23(火) 16:44:104)
#include <stdio.h>
#include <string.h>
char* conv[] =
{
"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111",
};
int main(void)
{
int num = 10;
char buf[256];
int i;
num = ~num;
sprintf(buf, "%x", num);
for (i = 0; i < strlen(buf); i++){
sscanf(&buf[i], "%1x", &num);
printf("%s", conv[num]);
}
return 0;
}
0912デフォルトの名無しさん
2007/01/23(火) 16:44:470913デフォルトの名無しさん
2007/01/23(火) 16:47:02しつこいからだれかやってヤレ
0914デフォルトの名無しさん
2007/01/23(火) 16:51:12[2] 問題文(含コード&リンク):
public:
float x,y ;
myComplex setComplex(){
myComplex temp;
temp.real = x ; temp.image = y ;
return temp;
}
DeComplex(){x = 0.0 ; y = 0.0 ; }
~DeComplex(){x = 0.0 ; y = 0.0 ; }
};
をポインタを使って値を返す。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc
[3.3] 言語: (C++
[4] 期限: ([今日中まで]
[5] その他の制限:なし
0915デフォルトの名無しさん
2007/01/23(火) 16:52:33#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COLUMN 310
void fact(int num, char * buf)
{
if (num > 1) {
int ic;
int len = strlen(buf);
char tmp[MAX_COLUMN + 1];
int carry = 0;
if (len == MAX_COLUMN) exit(EXIT_FAILURE);
strcpy(tmp, buf);
for (ic = 0; ic < len || carry; ++ic) {
if (ic < len) carry += (tmp[ic] - '0') * num;
buf[ic] = carry % 10 + '0';
carry /= 10;
}
buf[ic] = '\0';
fact(num - 1, buf);
}
}
void factrial(int num, char * buf) {buf[0] = '1'; buf[1] = '\0'; fact(num, buf);}
int main(int argc, char ** argv)
{
char buf[MAX_COLUMN + 1];
factrial(atoi(argv[1]), buf);
printf("%s\n", buf);
return 0;
}
0916デフォルトの名無しさん
2007/01/23(火) 16:53:56おまえがやってやれよ
0917デフォルトの名無しさん
2007/01/23(火) 16:53:57#include <stdio.h>
#include <string.h>
void main(int argc, char *argv[])
{
char *p,filename[256];
int ch;
FILE *rfp,*wfp;
if (argc==2 && NULL!=(rfp=fopen( argv[1],"rb"))) {
if( NULL==strstr(argv[1], ".txt") ){
strcpy(filename,argv[1]);
if ( NULL!=(p=strchr(filename,'.')) ) {
*p='\0';
strcat(filename,".txt");
}
if (NULL!=(wfp=fopen( filename,"wb"))) {
fprintf(wfp,"%s\n",argv[1]);
while ( EOF!=(ch=fgetc(rfp)) )
fprintf(wfp,"%02X", ch );
fclose(wfp);
}
}
else
printf("txtです\n");
fclose(rfp);
}
}
0918デフォルトの名無しさん
2007/01/23(火) 16:54:27#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *p,filename[256];
int ch;
FILE *rfp,*wfp;
if ( argc==2 && NULL!=(rfp=fopen( argv[1],"rb"))) {
if ( NULL!=strstr(argv[1], ".txt") ){
if (NULL!=fgets(filename,sizeof(filename),rfp)) {
for (p=filename;*p!=NULL;p++)
if(*p=='\n')*p=0;
if ( NULL!=(wfp=fopen( filename,"wb"))) {
while( EOF!=fscanf(rfp,"%2x",&ch) )
fputc( ch,wfp );
fclose(wfp);
}
}
}
else
printf("txtではありません\n");
fclose(rfp);
}
}
0919デフォルトの名無しさん
2007/01/23(火) 16:56:45×982
○>892
0921デフォルトの名無しさん
2007/01/23(火) 17:03:456)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int word_cmp(const void *a, const void *b){
char **pa, **pb;
pa=a;pb=b;
return strcmp(*pa, *pb);
}
int main(int argc, char *argv[]){
FILE *fp;
char word_buf[1024], **word_list=NULL;
long i, ret, word_list_size=0, word_list_member=0;
fp=fopen(argv[1], "r");
if(fp==NULL) return 1;
while(!feof(fp)){
fscanf(fp, "%*[^A-Za-z]");
ret=fscanf(fp, "%1023[A-Za-z]", word_buf);
if(ret!=1) continue;
if(word_list_member>=word_list_size){
word_list_size+=1024;
word_list=realloc(word_list, sizeof(char *)*word_list_size);
}
word_list[word_list_member++]=strdup(word_buf);
}
fclose(fp);
qsort(word_list, word_list_member, sizeof(char*), word_cmp);
for(i=0;i<word_list_member;i++) printf("%s\n", word_list[i]);
return 0;
}
0922デフォルトの名無しさん
2007/01/23(火) 17:09:43ありがとうございます
0923感謝されない>915の代理w
2007/01/23(火) 17:10:54#define MAX_COLUMN 310
static void fact(int num, char * buf, char * tmp)
{
if (num > 1) {
int ic; int len = strlen(buf); int carry = 0;
if (len == MAX_COLUMN) exit(EXIT_FAILURE);
strcpy(tmp, buf);
for (ic = 0; ic < len || carry; ++ic) {
if (ic < len) carry += (tmp[ic] - '0') * num;
buf[ic] = carry % 10 + '0';
carry /= 10;
}
buf[ic] = '\0';
fact(num - 1, buf, tmp);
}
}
static void reverse(char * buf)
{
int ic; int len = strlen(buf);
for (ic = 0; ic < len / 2; ++ic) {char tmp = buf[ic]; buf[ic] = buf[len - 1 - ic]; buf[len - 1 - ic] = tmp;}
}
const char * factrial(int num)
{
static char buf[MAX_COLUMN + 1];
char tmp[MAX_COLUMN + 1];
buf[0] = '1'; buf[1] = '\0';
fact(num, buf, tmp);
reverse(buf);
return buf;
}
int main(int argc, char ** argv) { printf("%s\n", factrial(atoi(argv[1]))); return 0;}
0924デフォルトの名無しさん
2007/01/23(火) 17:19:17#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *fin;
int c;
if(argc != 2 || (fin = fopen(argv[1], "r")) == NULL) return 1;
while((c = getc(fin)) != EOF) putchar(c);
return 0;
}
0925デフォルトの名無しさん
2007/01/23(火) 17:21:524)
#include <stdio.h>
#include <ctype.h>
int main()
{
int c, pc, nc, nw, nl;
for (pc = nc = nw = nl = 0; (c = getchar()) != EOF; pc = c) {
++nc;
if (c == '\n')
++nl;
else if (isalpha(c) && !isalpha(pc))
++nw;
}
if (pc != '\n')
++nl;
printf("%d chars, %d words, %d lines\n", nc, nw, nl);
return 0;
}
0926デフォルトの名無しさん
2007/01/23(火) 17:21:58ありがとうございます
0927デフォルトの名無しさん
2007/01/23(火) 17:28:36C++とあるぞ
>>907
#include <iostream>
#include <fstream>
int main(int argc, char **argv)
{
if (argc == 1) {
std::cerr << "filename is needed" << std::endl;
return 1;
}
std::ifstream fin(argv[1]);
if (!fin.is_open()) {
std::cerr << "can't open " << argv[1] << std::endl;
return 2;
}
std::cout << fin.rdbuf();
return 0;
}
0928デフォルトの名無しさん
2007/01/23(火) 17:54:15そーだよな
でもそーいうプログラム作れという学校はどうなんだろう・・・
学校の宿題じゃないのかもしれない
0929デフォルトの名無しさん
2007/01/23(火) 17:57:58if (!fin.is_open()
としなくても
if (!fin)
だけでいいお。
0930デフォルトの名無しさん
2007/01/23(火) 18:04:29次スレから催促禁止をテンプレに入れてもらいたい。
0931デフォルトの名無しさん
2007/01/23(火) 18:05:580932デフォルトの名無しさん
2007/01/23(火) 18:06:28たまに見逃してることもあるから、一律禁止は厳しすぎるかも
1日1回までとか。
0933デフォルトの名無しさん
2007/01/23(火) 18:07:52> 1日1回
それ十分ウザい
0934デフォルトの名無しさん
2007/01/23(火) 18:08:340935デフォルトの名無しさん
2007/01/23(火) 18:09:370936デフォルトの名無しさん
2007/01/23(火) 18:10:470937デフォルトの名無しさん
2007/01/23(火) 18:13:18それならアンカーだけでいいな。
0938デフォルトの名無しさん
2007/01/23(火) 18:21:32なかなかの名案だ。
未回答まとめるのは結構めんどい
0939デフォルトの名無しさん
2007/01/23(火) 18:39:17それいいな
0940デフォルトの名無しさん
2007/01/23(火) 19:35:29教官のサイトやメルアドでも教えてくれ
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3501.txt
[3] 環境
[3.1] OS: Mac OS X(gcc)
[3.2] コンパイラ名とバージョン: gcc 4.0.1
[3.3] 言語: C
[4] 期限: 2007年1月24日12:00まで
[5] その他の制限: ポインタを使う、構造体不可、文字取得はscanf()
よろしくお願いします。
0942デフォルトの名無しさん
2007/01/23(火) 20:24:320943デフォルトの名無しさん
2007/01/23(火) 20:26:370944デフォルトの名無しさん
2007/01/23(火) 22:01:15int push(int data, int *sp, int *STK){
if(*sp <= 0) return 0;
STK[--(*sp)] = data;
return 1;
}
int pop(int *dataP, int *sp, int *STK){
if(*sp >= N) return 0;
*dataP = STK[(*sp)++];
return 1;
}
void dsp_stack(int top, int *a){
while(top++ < N)
printf("%d: %d\n",top-1, a[top-1]);
}
「ここまでできています」を信じてたのに・・・ orz 一カ所間違ってるよ
0945821
2007/01/23(火) 22:11:59やはり無理ですか・・・
0946デフォルトの名無しさん
2007/01/23(火) 22:13:11&つけろ と言ってやれw
0947デフォルトの名無しさん
2007/01/23(火) 22:18:54[2] 問題文(含コード&リンク): 一単語一行の入力テキストを、指定された桁数(70)以内で、
できるだけ少ない行数に納まるように調整して出力する。
ただし、単語の途中で改行してはいけない。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC++ 2005
[3.3] 言語: C++
[4] 期限:1月25日
[5] その他の制限:特に指定されていません
よろしくお願いします
0948デフォルトの名無しさん
2007/01/23(火) 22:23:21>>936
0949デフォルトの名無しさん
2007/01/23(火) 22:28:22速攻でマルチか?
何考えてんだお前
0950デフォルトの名無しさん
2007/01/23(火) 22:40:18#include <iostream>
#include <string>
using namespace std;
const int maxcol = 70;
int main()
{
string s;
int ncol = 0;
while (cin >> s) {
if (s.size() > maxcol) {
cout << flush;
cerr << "Too long word: " << s << endl;
} else if (ncol == 0) {
cout << s;
ncol += s.size();
} else if (ncol + s.size() + 1 < maxcol) {
cout << ' ' << s;
ncol += s.size() + 1;
} else {
cout << '\n' << s;
ncol = s.size();
}
}
cout << endl;
return 0;
}
0951デフォルトの名無しさん
2007/01/23(火) 23:12:30>>947の者です。答えてもらってありがとうございました。
すいません、950では、const, cerrをまだ習っていない(それ以外は使っても大丈夫なんですが)ので、それで提出するとマズイので、もうちょっと初心者っぽくお願いできないでしょうか?
0952デフォルトの名無しさん
2007/01/23(火) 23:14:42cerrはcoutに置き換えてしまえばいい。
0953デフォルトの名無しさん
2007/01/23(火) 23:25:44ありがとうございます。
ちょっとお聞きしたい事があるんですが、教官が用意したテキストファイルをプログラム中で開いたものを読み込んで処理しないといけないことになってるんですが、どの辺でファイルを開いたらいいでしょうか?
0954デフォルトの名無しさん
2007/01/23(火) 23:32:360955デフォルトの名無しさん
2007/01/23(火) 23:35:33[2] 問題文(含コード&リンク):
コンソール上で入力した数だけ、ファイルを読み込み、
ファイル内に記された全ての数値の平均値を算出するプログラムを作成せよ。
なお、読み込むファイル名もコンソール上から指定した任意の名前のもの
(最低三種類)を読み込めるようにし、計算を行うこと。
また、一つのファイルには3個の任意の数値を記すこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C言語
[4] 期限: 2007年01月26日まで
[5] その他の制限:無いです
例えば、printf,scanfを用いてコンソール上で「5」を入力した場合、
aa1.txt〜aa5.txt、bb1.txt〜bb5.txt及びcc1.txt〜cc5.txtを読み込み、
そのファイル(aa1.txt〜cc5.txt)に記された全ての数値を読み込んで平均値を計算する、というものです。
この時読み込むファイルの名称、aa□、bb□、cc□もコンソール上で入力した任意のものを
読み込む、といった形にしていただきたいです。拡張子は全て.txtです。
一つのファイル内には
10 20 30 といった3つの数値が並んでいます。
問題文も補足も分かりづらくてすみません。
この場合ファイルの入出力をどのように記述すればいいのか分からず困っています。
宜しくお願いします。
0956デフォルトの名無しさん
2007/01/23(火) 23:38:04>783
0957デフォルトの名無しさん
2007/01/23(火) 23:38:070958デフォルトの名無しさん
2007/01/23(火) 23:42:32[2]問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3504.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2007年1月24日午後11時まで
その他の制限:特になし
0959デフォルトの名無しさん
2007/01/23(火) 23:45:50>>954
0960デフォルトの名無しさん
2007/01/23(火) 23:47:160961デフォルトの名無しさん
2007/01/24(水) 00:05:56# include <stdio.h>
# define SIZE 100
int part(int *out, const int *source, int begin, int end, int size) {
int o = 0;
int i = begin;
while(i != end) {
out[o++] = source[i];
if(++i == size) i = 0;
}
out[o++] = source[i];
return o;
}
int show(const int *a, int n) {
while(n-- > 0) printf("%d ", *a++);
printf("\n");
}
int main(void) {
const int k1 = 6;
const int p1[] = {5, 7, 3, 8, 9, 1};
const int k2 = 9;
const int p2[] = {11, 17, 15, 13, 16, 12, 18, 20, 14};
const int u1 = 2, u2 = 7, d1 = 5, d2 = 3;
int p[SIZE];
int k = part(p, p1, u1, d1, k1);
k += part(p + k, p2, d2, u2, k2);
show(p, k);
return 0;
}
0962デフォルトの名無しさん
2007/01/24(水) 00:14:53#include <stdio.h>
int main()
{
const int set = 3;
const int alparamset = 6;
float x[set],y[set],x2[alparamset],y2[alparamset];
x[1] = 3.0; x[2] = 4.0;x[3] = 5.0;
y[1] = 2.0;y[2] = 7.0;y[3] = -3.0;
int counter,counter2,num,num2;
counter = 0;counter2 = 0;
num = 0;num2 = 0;
while(counter2 == alparamset){
if (num == set){
num = num2 + 1;
++num2; }
x2[counter2] = x[num2] + x[num];
y2[counter2] = y[num2] + y[num];
printf("%f %f\n",x2[counter2],y2[counter2]);
++num;
++counter2; }
return 0;}
よかったらお願いします。
0963デフォルトの名無しさん
2007/01/24(水) 00:17:110964デフォルトの名無しさん
2007/01/24(水) 00:17:15意味がわかんねけど こんなかんじ?
#include <stdio.h>
int main()
{
int ch,k,n,a,b,c,cnt=0;
char name[16],buf[256];
double total=0.0;
FILE *fp;
printf("input number:");
scanf("%d",&k);
for(ch='a';ch<='c';ch++){
for(n=1;n<=k;n++){
sprintf( name,"%c%c%d.txt",ch,ch,n);
if(NULL!=(fp=fopen(name,"r"))){
while( NULL!=fgets(buf,sizeof(buf),fp)){
if( 3==sscanf( buf,"%d %d %d",&a,&b,&c) ){
total += ( a+b+c );
cnt +=3;
}
}
fclose( fp);
}
}
}
if( cnt !=0 )
printf("ave:%.2f\n",total/cnt);
return 0;
}
0965デフォルトの名無しさん
2007/01/24(水) 00:22:20バグがあるようなんでがすが正常にコンパイルされよるし
だけど結果が出力されてこんのですばい
0966デフォルトの名無しさん
2007/01/24(水) 00:24:21>>965
#include <stdio.h>
int main(){
const int set = 3;
const int alparamset = 6;
float x[set],y[set],x2[alparamset],y2[alparamset];
x[0] = 3.0; x[1] = 4.0; x[2] = 5.0;
y[0] = 2.0; y[1] = 7.0; y[2] = -3.0;
int counter,counter2,num,num2;
counter = 0;num = 0;num2 = 0;
while(counter < alparamset){
if(num < set){
num = num2 + 1;
++num2;}
x2[counter] = x[num2] + x[num];
y2[counter] = y[num2] + y[num];
printf("%f %f\n",x2[counter],y2[counter]);
++num;++counter;}
return 0;}
こんな感じか?
もし本当に教えて貰いたいという気があるなら>>1を読んでテンプレ埋めれ
0967デフォルトの名無しさん
2007/01/24(水) 00:33:14何をしたいプログラムかよくわからんが、
if (num == set){ はそのままでよかったっぽいな
0968デフォルトの名無しさん
2007/01/24(水) 00:36:55[2] 問題文(含コード&リンク):なし
[3] 環境
[3.1] OS: Mac OS X 10.3
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限: [2007年1月24日午前10:00]
[5] その他の制限: なし
0970デフォルトの名無しさん
2007/01/24(水) 00:41:19gnuplot で表示しようと思ってる。
0971デフォルトの名無しさん
2007/01/24(水) 00:44:12> while(counter2 == alparamset){
counter2 の初期値 0
alparamsetの初期値 6
while文一回も実行しないで終わる
0972デフォルトの名無しさん
2007/01/24(水) 01:04:50ありがとうございました。
0973デフォルトの名無しさん
2007/01/24(水) 01:07:56いや
while( counter < alparamset)
こっち
0974デフォルトの名無しさん
2007/01/24(水) 01:10:570975デフォルトの名無しさん
2007/01/24(水) 01:14:44そんなことは無い
キミのコードと自分のコードを比較してるが
違いを見つけられなかったんだ、きっと
0976デフォルトの名無しさん
2007/01/24(水) 01:18:23ないのですか?
0977デフォルトの名無しさん
2007/01/24(水) 01:25:19!=はcounterとalparamsetが等しくない場合を、
<はcounterがalparamsetより小さい場合を指している
0978デフォルトの名無しさん
2007/01/24(水) 01:25:290979デフォルトの名無しさん
2007/01/24(水) 01:34:460980デフォルトの名無しさん
2007/01/24(水) 01:39:24のときwhileはcounterは6の時にroopをやめるということはcounter < alparamset
とおなじではないのですか?
0981デフォルトの名無しさん
2007/01/24(水) 01:45:130982デフォルトの名無しさん
2007/01/24(水) 01:47:180983デフォルトの名無しさん
2007/01/24(水) 01:51:42同じってことでいいけど
0984デフォルトの名無しさん
2007/01/24(水) 02:00:140985デフォルトの名無しさん
2007/01/24(水) 02:01:050986デフォルトの名無しさん
2007/01/24(水) 02:03:10┌─────────┐
│ 基地外警報!!! |
│ 基地外警報!! |
└―――──――――┘
ヽ(´ー`)ノ
( へ)
く
0987デフォルトの名無しさん
2007/01/24(水) 02:22:45わかった、二度と来ないことを約束するだけでいいよ
0988デフォルトの名無しさん
2007/01/24(水) 02:26:45http://pc10.2ch.net/test/read.cgi/tech/1165718021/
0989デフォルトの名無しさん
2007/01/24(水) 02:34:330990デフォルトの名無しさん
2007/01/24(水) 03:03:290991デフォルトの名無しさん
2007/01/24(水) 03:05:28C/C++の宿題を片付けます 82代目
http://pc10.2ch.net/test/read.cgi/tech/1169575464/
0992デフォルトの名無しさん
2007/01/24(水) 03:09:58乙
0993958
2007/01/24(水) 05:10:08ありがとうございます。
これでテスト乗り切れそうです。
0994デフォルトの名無しさん
2007/01/24(水) 05:42:56[2] 問題文(含コード&リンク):
<C/C++ソースコード整形ツール>
1.インデントができること
中括弧のない if for なども、インデントをつけて文を次の行に出力すること(; だけでも)
switch 文の case の深さは switch と同じか一段下げること
インデントは タブ文字 or 2文字スペース or 4文字スペースのいずれかで統一すること
2.コメント部分は残し、なるべく変更しないこと
3.一行コメント // にも対応すること
4.関数と関数の間には空行を2ついれること
5.入力ファイルは標準入力(リダイレクト)から与えられるものとし、標準出力に出力すること
6.後は自分が見やすいと判断する基準でよろしく。(中括弧を行末にいれるか、次行に中括弧だけの行を作るか等)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc,g++
[3.3] 言語: どちらでも可
[4] 期限: スレが埋まるまで
[5] その他の制限: ソースコードが1レスに収まること。(出来れば一行の文字数が100文字以内)
0995デフォルトの名無しさん
2007/01/24(水) 06:23:16おつ
0996デフォルトの名無しさん
2007/01/24(水) 06:23:490997デフォルトの名無しさん
2007/01/24(水) 06:25:060998デフォルトの名無しさん
2007/01/24(水) 06:26:390999デフォルトの名無しさん
2007/01/24(水) 06:28:141000デフォルトの名無しさん
2007/01/24(水) 06:28:13誰かやるの?
うちの庭の梅が咲いてる
埋め
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。