2
3 :
デフォルトの名無しさん :2006/06/28(水) 17:39:57
10行10列の行列を考える。 各要素に0〜99の範囲で乱数を入力する。 各行の要素の値について、合計値を表示する。 各列の要素の値について、合計値を表示する。 例) 0 5 3 2 10 3 8 6 0 17 2 3 6 4 15 1 4 7 9 21 6 20 22 15 補足) 乱数は rand() を使って発生させる。 この課題を教えてください。お願いしますm(__)m
[1] ポインタと配列 [2]試験の点数データ配列を用いて、10点間隔ごと及び満点(100点)にいくつのデータがあるか 書き出すプログラムhistgram.cを 書きなさい。 点数データ:int grade〔12〕={100、95、47、88、86、92、75、89、81、70、55、80}; 出力 0−9:0 10−19:0 20−29:0 30−39:0 40−49:1 50−59:1 60−69:0 70−79:2 80−89:5 90−99:2 100 :1 [3] 環境 [3.1] OS windowsXP: (Windows/Linux/等々) [3.2] Borland c++ compiler 5.5 [3.3] 言語:C [4] 期限: 今週の金曜日 [5] 今のところfor文とかポインタ配列程度の知識で 構造体とかそっちのほうは習っていません お願いします
なんでスレ立てたんだ?
いや高飛びは実際に砦内で使えちゃった 今後修正される保障はもちろん無いが・・・ そういうのが良い方向に行われた事って殆どないからな。
7 :
デフォルトの名無しさん :2006/07/05(水) 19:01:40
前スレが埋まったんでこっちを勃起age
69代目まだー?
9 :
デフォルトの名無しさん :2006/07/05(水) 19:04:10
[1] C言語入門 [2] file: 11.33 22.33 22.33 22.33 22.34 33.34 11.22 22.22 22.44 22.22 22.12 33.34 11.22 22.22 22.44 22.22 22.12 33.34 11.22 22.22 22.44 22.22 22.12 33.34 11.22 22.22 22.44 22.22 22.12 33.34 上のようなファイルにおいて このように一行が例えば、11.33から三個スペースその後数字 また三個スペースと続いているn行のファイルからsscanfを使って 読み込むプログラムを作れ。 [3] 環境 [3.1] OS: (Linux) [3.2] gcc [3.3] (C [4] 2006年 7月6日
なんで66代目ばかりを乱立するんだろう。66代目だけで5本目。
さぁ、学習能力や統率力の無い自分勝手な奴がスレ立てするかでそ
>>9 1行にいくつの数値があるかというのは固定なのか可変なのかどっちだ。
馬鹿ばっか
はじめまして 専門学校に通っています。 どうしてもわかりません。m(___ ___)m [1] C言語の授業 [2] FILE *fp; char s[256]; if ((fp = fopen("smpl.txt", "r")) == NULL) { printf("file open error!!\n"); exit(1); } while (fgets(s, 256, fp) != NULL) { printf("%s", s); } fclose(fp); [3] 環境 [3.1] Windows XP [3.2] gcc 3.4 VC 6.0 [3.3] C言語 [4] 2006年07月06日10:00まで 問題点:ファイルの入力をファイル名ではなく、フォルダに格納されている 複数のテキストファイルを読み込みたいのですが、どうしてもわかりません。 フォルダに格納されている、複数のテキストファイルを読み込むために、 ファイル名のところをフォルダのパスを記述すれば、自動でフォルダ内の テキストファイルを読み込んでくれるのでしょうか?
19 :
デフォルトの名無しさん :2006/07/05(水) 19:41:42
【質問テンプレ】 [1] 授業単元: オペレーティングシステム [2] 問題文(含コード&リンク): httpプロキシ(http_proxy)を作成せよ ・forkにより子プロセスを生成することでリクエストの並行処理をサポートすること [3] 環境 [3.1] OS: windowsXP,cygwin [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語:C言語 [4] 期限: ([2006年07月16日23:59まで] [5] その他の制限: ファイル入出力、プロセス制御、パイプ生成に 関してはシステムコールを用いること。
>>9 #include <stdio.h>
int main(void){
FILE *fp;
char str[250];
double n[6];
fp = fopen("test.txt", "r");
if (fp){
while(fgets(str, sizeof(str), fp)){
sscanf(str, "%lf %lf %lf %lf %lf %lf\n", &n[0], &n[1], &n[2], &n[3], &n[4], &n[5]);
printf("%.2f %.2f %.2f %.2f %.2f %.2f\n", n[0], n[1], n[2], n[3], n[4], n[5]);
}
fclose(fp);
}
return 0;
}
"dir\smpl.txt"とか
>>21 レスありがとうございます。
しかし "dir\smpl.txt"だと テキスト名も記述しちゃいますよね?
フォルダ内には複数のテキストファイルがあり、おのおの名前が違います。
smpl.txt/test.txt/AAA.txt/etc
このテキスト名を記述しないとやはり無理なんでしょうか?
フォルダのパスを記述して、後は自動でファイルを次々読み込んでくれるのが
目的なんです。
[1]C言語 [2] int eval[3]という1次元配列を用意して eval[0]には0〜60の数の個数 eval[1]には61〜80の数の個数 eval[2]には81〜100の数の個数 を格納するようにし、それらを出力するプログラムを作成しなさい。 [3] [3.1]Linux [3.2]Cコンパイラ [3.3]C++ [4]明日の朝の10:10まで。 [5]初歩的なことしか習ってません。
>>24 >0〜60の数の個数
何を数えるんだ。この場合は61でいいのか?
27 :
デフォルトの名無しさん :2006/07/05(水) 20:04:24
>>26 ありがとうございます。 参考にして勉強してみます!!
ここが本スレでおk?
29 :
デフォルトの名無しさん :2006/07/05(水) 20:31:40
[1] 授業単元: [2] 問題文(含コード&リンク): 0,1,2,3,4のいずれかの数字から成り立つ4桁の数を1桁目と4桁目、2桁目と3桁目をそれぞれ入れ替えて もとの数との和を表示するプログラムを作成しなさい。 つまり、1234と入力された場合1234と4321を足した5555を表示しなさい。 実行例 ./hoge 1234 5555 [3] 環境 [3.1] OS: (Windows/Linux/等々) linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc4.0 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) とくになし よろしくお願いします
30 :
24 :2006/07/05(水) 20:40:18
>>25 あ!初めに
34 57 45 21 89 63 39 48 78 68 76 84 92 53 62
って数字が書かれてたので、この中から数えるってことのよう
です。
これらの数値の意味がわけ解らなかったので講師のミスかと思って
書いてませんでした。すいません。
>>29 #include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[10];int n;char c;fgets(tmp,sizeof(tmp),stdin);n=atoi(tmp);
if(0<=n&&n<=9999){c=tmp[0];tmp[0]=tmp[3];tmp[3]=c;c=tmp[1];tmp[1]=tmp[2];tmp[2]=c;
printf("%d\n",n+atoi(tmp));}return 0;}
>>24 #include<stdio.h>
static int table[]={34,57,45,21,89,63,39,48,78,68,76,84,92,53,62,};
int main(void){int i,eval[3];for(i=0;i<sizeof(eval);i++)eval[i]=0;
for(i=0;i<sizeof(table);i++)if(0<=table[i]&&table[i]<=60)eval[0]++;
else if(61<=table[i]&&table[i]<=80)eval[1]++;else if(81<=table[i]&&table[i]<=100)eval[2]++;
for(i=0;i<sizeof(eval);i++)printf("eval[%d]=%d\n",i,eval[i]);return 0;}
[1] 授業単元: 順序データとリスト構造 [2] 問題文: 1.ばらばらの順に格納されたA,B,C,D,E,F,Gのアルファベットと次の場所を指すポインタを構造体の配列で表し、 A,B,C順に表示して、指定した文字を削除もしくは挿入するプログラムを作成せよ。 2.以下の文章を単語ごとに格納した構造体の配列で表現してから 出力し、指定された単語の削除や挿入を行うプログラムを作成せよ。 How was your weekend? It was great. What did you do? I went to Disneyland. I had a great time. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:07月06日まで [5] その他の制限:特になし お願いします
34 :
24 :2006/07/05(水) 20:58:55
37 :
976 :2006/07/05(水) 21:42:51
前スレの976です。 最後の方に書いたためレスがつかなかったので申し訳ないですが、もう一度 質問させて下さい。 [1]授業:プログラミング入門 [2]問題文:do-while文を用いてキーボードから入力された値が素数であるか どうかを判定するプログラムを作成せよ。入力された値が素数の 場合は「素数」と出力し、素数でない場合は最小の因数を出力せよ。 ヒント:余りを求める%を使用する。 [3.1]OS:UNIX [3.3]言語:たぶんC++です。 [4]期限:明日の11時までです。 [5]その他の制限:特にないですが、まだprintf,scanf,if,else,for,while, do-while,インクリ・ディクリ・四則演算、不等号ぐらい しか習ってないです。 よろしくお願いします。
38 :
デフォルトの名無しさん :2006/07/05(水) 21:45:17
前スレ923です。もらった回答
int push(int data, int *sp, int *STK){
if(0<*sp){*sp-=1;STK[*sp]=data;return 1;}
return 0;}
int pop(int *dataP, int *sp, int *STK){
if(*sp<N){*dataP=STK[*sp];*sp+=1;return 1;}
return 0;}
void dsp_stack(int top, int *a){
int i;for(i = top;i<N;i++){printf("%d: %d\n",i,a[i]);}}
眠い頭でやった。反省はしてない。
がコンパイルできないので、誰かもいちどお願いします。
[1] 授業単元:情報科学U
[2] 問題文(含コード&リンク):
http://www.s.kyushu-u.ac.jp/~z6ty02in/TEXT/mokuji.html ここの「11.ポインタと配列」の中の、「課題11(1/4)〜(4/4)」です
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年7月7日(金)8:40まで
[5] その他の制限:
よろしくお願いします。
>>38 9ページの、
/* 以下,関数 push, pop, dsp_stack の定義 */
の下にコピペしてコンパイルできない?
>>37 >printf,scanf,if,else,for,while,
printfがあるならCじゃね?
43 :
40 :2006/07/05(水) 22:06:31
>>38 今チェックしたら、9ページのソースからちょっと修正してたのを忘れてた
下から6行目、printf内の「“」を「"」に直すのと、
一番下「}」が足りないから付け足しておくように
>>42 まぁC++でも使えるには使えるが、それじゃcoutって書いていないからに言い換えよう
あと、scanfもあるし。C++ならcinを使うだろうし。
>>46 いちいちうぜぇよ、揚げ足取りでもしに来たか?意味が分からないなら黙ってろ。
>>37 の開発環境がCかC++かであって、言語の仕様がどうとかが論点じゃない。
C++に関する文献に目を向ければ、C++ではprintfは一般的ではないと明記されているものばかりだぞ。
>>47 >
>>37 の開発環境がCかC++かであって
そんなことお前が決めることじゃないよ。
質問者がC++だといってるんだから、それでいいじゃん。
42 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:02:53
>>41 は?
46 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:12:33
>>44-45 意味不明。
↑こいつナニが言いたいのか分からないが、分からないなら黙ってた方が身のためだな。
いちいちここで自分に知識がありませんって露呈しなくて良いから
ああ、いつもの奴か。 「露呈」で特定できた。
前スレ957より。 よろしくお願いします。 [1]ゲームプログラミング入門 [2]これまでに得た知識を元に、 今回よりいよいよゲーム的なプログラムの作成を実践する。 課題1-3:以下のような内容のプログラムを作成せよ 1:敵のキャラクタと自分のキャラクタが1対1で戦う形式のバトルゲーム 2:それぞれのキャラクタは「力」、「耐久力」、「素早さ」、「運」各4つの要素をもっている. 各キャラクタに初期状態で100のポイントがが与えられ、 これを各要素に合計が100になるように自由に振り分けることができる. 例: 力:20耐久力:50 すばやさ:10運:20 3:1回ごとの戦闘ではプレイヤーは攻撃するか防御するかを選択できる. 4:1回の戦闘で、自分と敵は攻撃か防御のどちらかを1回できる. 5:どちらが先に攻撃するかはランダムで決定されるが、素早さの数値が大きい程先に攻撃する確率が上昇する 6:敵の攻撃があたれば,相手の“力”分だけ耐久力の値が減少する. 7:素早さの値が大きければ、相手の攻撃を回避する確率が上昇.(素早さが10の場合は10%の確率で回避) 8:運の値はクリティカルの発生に影響を与え、高ければ確率が大きくなる(運が20であるならば20%の確率でクリティカルがでる) 9:また運の値が相手の運を上回っている場合、回避率に5%のボーナスを与える 10:クリティカルアタックは通常の攻撃の2倍の威力となる. 11:防御している場合、ダメージは半分になる. 12:体力の点数が先に0以下になった方を敗北とする. 13:敵の行動アルゴリズムはランダムである. 以上13個の要素を全て満たしたゲームを作りなさい. 主に構造体を利用すること. [3]環境:Linux gcc C言語 [4]7/6
>>49 >そんなことお前が決めることじゃないよ。
決めてないよ?たぶんって書かれていて疑問に思ったから
質問者に対して疑問をぶつけただけだが?少なくともお前が分からないなら黙ってろ。
>質問者がC++だといってるんだから、それでいいじゃん。
そうだよ?ナニが言いたいの?俺は別にどっちかはっきりしなきゃダメとか
そんなことは言ってないが、そことなくC言語であろうと思われる箇所を指摘したんだが?
とにかく指摘が分からないなら黙ってろ
54 :
デフォルトの名無しさん :2006/07/05(水) 22:20:01
>>51 いや、お前がいつもの揚げ足煽り厨だろ?
ろくに意見をせずに煽るだけで特定できた。
簡単に釣れるんだな、この自称プロって。
今、顔真っ赤です。
>>55 オマエガナーwwwww
>>42 で自分の無知を晒したのはバレバレ
42 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:02:53
>>41 は?
42 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:02:53
>>41 は?
42 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:02:53
>>41 は?
>>46 理解する頭のない奴の恥ずかしい無知晒しwww
46 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:12:33
>>44-45 意味不明。
46 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:12:33
>>44-45 意味不明。
46 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 22:12:33
>>44-45 意味不明。
ファビョった
まっ、UNIX使っているならgcc使ってC言語をコンパイルしているであろうと推測してみる 大学に行ったことの無い奴は、UNIXを使ったことがないから知らんのだろうけどw
頭に血が上ったらどんな正しい内容だろうと 相手を蔑むニュアンスを入れなきゃレス出来ないなのなら、 頼むからじっと堪えて黙っててくれ・・・
脳内大卒生乙。
-------------------- 以下大卒もそうで無い人も争い禁止 --------------------
>>60 それが出来る子ばかりなら、こうはならないのさ・・・・・・・
くだらんことに突っ込むくらいなら、解答を書きたまえ。
けど、これははっきりしているだろ。C++ではprintfとscanfは一般的ではない
もしC++でそれを使って教育をしているんであれば、ちょっと不適切な指導内容かと・・・
市販のC++の本を見ると、cout, cinが普通に使われているしな
>>42 が
>>37 じゃなく、実際のところを調べられない第三者なら黙ってろ
-------------------- だから争い禁止だってば --------------------
今、顔真っ赤です。
>>67 > けど、これははっきりしているだろ。C++ではprintfとscanfは一般的ではない
そんなこと無いと思うよ(個人的意見)。
まあ昨今の大学でC++を教えるときに、printfとcoutのどちらを使うのが一般的なのかは知らんけど。
72 :
38 :2006/07/05(水) 22:46:22
ヒドい自作自演を見た。
約束は守って欲しいなー。 273 名前:デフォルトの名無しさん[sage] 投稿日:2006/06/16(金) 03:02:28 そして無意味に自分の主張をしてしまった俺こそ無駄だと自覚している だからもうここへは来ない やはり、レベルの低い人間を相手にしても自分自身のレベルアップにはつながらない 自分のソースが初心者に伝わるか?理解させられるか? 腕試しをしにきても自由だろ?それすらいちいち否定される筋合いはない 要するに、既に述べたように、これは回答者同士の争い 回答者同士が争う必要はないのは言うまでもない そしてその争いの結果、トーマスが恥さらしに過ぎないことが露呈された それだけでも十分だ 性帝トーマスよ、お主の将来に幸あれ
ここは約束を守るスレでもなければそんな一個人の主張なんてどうでも良いじゃん
少なくとも守って欲しいなーって要望も無意味だな
分からない奴が来なきゃ一番良いだけ
っつかそれ
>>75 、ここへはって言うけどそのレスが書かれたのはこのスレじゃないだろ
ここが示す場所がはっきり書かれていないし
これでもし、プログラム板やそのスレとはっきり書かれていれば分かるが
小学生並みの論理
このスレには、少なくとも二人のクズがいる。 二人ともいらないから。
>>78 =
>>46 =
>>42 相変わらず知能が低い厨房乙。お前が黙ってろ、っつかうぜぇ
自称プロ名乗っているだけででけぇ態度がとれると思うなよw
>>78 =
>>76 を書いたこのスレに常駐する粘着
78 名前:デフォルトの名無しさん 投稿日:2006/07/05(水) 23:05:05
>>75 =
>>76 なのか?
違うんだったら、
黙 っ と け ク ズ
↑さぁ、低俗な人間の必死な姿をとくと見よ!
自分の思う通りに相手が動かないとキレるタイ(プ
今、顔真っ赤です。
>>82 のプロファイリング
自分が気に入った女性が自分が好きじゃない=自分が嫌いと勝手に決めつけ
自分が嫌いじゃないなら好きになれと言う危険人物
こういう奴は、ソースがまともに書けないとコンピュータに対してキレて
ディスプレイを壊すタイプ。ただ、PC本体は固い金属なため、以前殴って手を怪我して
痛い思いをしてからやらなくなった。痛みに対する学習能力はあるようだ
333 名前:デフォルトの名無しさん[] 投稿日:2006/06/18(日) 21:33:49 専門学校生乙。恥ずかしいからもう黙ってな。 筋の通った理論に基づいて話してなく、自分がバカだと思う奴がバカって 言っているだけだな。ご愁傷様。 2.0は 変数 ではなく 定数 なので、変数に使う型は関係ない。 問題は変数同士と、代入する変数の型だよ。 あの数式を見れば一目瞭然。さすがに初心者だからといって 理解力のないバカまで指導するスレじゃないんで、俺はこれで失礼するよ。 低俗な人間の問題煮まで相手にしてたら、こっちがバカになるw
-------------------- いいかげんに以下争い禁止 --------------------
>>84 粘着乙。関係ないスレでお前が理論を論破されて恥をかいたのを逆恨みしなくて良いからw
間違っていない理論に噛み付いている姿が痛々しい
87 :
670 :2006/07/05(水) 23:12:11
前スレで670に書いた問題をこのスレの19に書きました。 よろしくお願いします。
62 名前:デフォルトの名無しさん[] 投稿日:2006/06/26(月) 01:06:48
>>61 おいおい、何キレてんだよ?これだから 低レベル 低俗 な 低学歴 は困るぜ・・・ヤレヤレ
669 名前:デフォルトの名無しさん[sage] 投稿日:2006/06/16(金) 20:24:18
>>667-668 すげー、ここって煽りたがり屋が簡単に釣れるんですねw
要するに人を馬鹿にしたい人が集まっているってことか
低俗なクズ共めがw
い い か げ ん に し ろ
386 名前:デフォルトの名無しさん 投稿日:2006/06/19(月) 00:29:00
それからこれも答えてもらおうか。
>>381 >int型の変数に代入する際には、ちゃんと 2.0 に (int)2.0 と書いて下さいね(ニヤニヤ
>俺は2だってわかっている「定数」だったらわざわざ2.0なんて書かずに2って書くけどねw
2と2.0と書いた場合では、コンピュータの扱いが違うのだが。
>>340 >sizeof(2)=4
>sizeof(2.0)=8
わざわざ2と書かずに2.0と書くのには意味があるのか無いのか説明してもらおう。
>>89 はいはい、誰のレスを引用しているのか分からないけど
それはお前が気に入らなかったレスだろ?よっぽど自分の無知を晒して
釣られたのが悔しかったんだね、もうお前にはレスしないから
安心して永眠しな
>>91 あははは、スゲーよ、お前。それ確かに俺のコメントだわw
う ぜ ぇ
いい加減、アク禁にしてくれよ。
98 :
前937 :2006/07/05(水) 23:20:14
[1] 授業:プログラミング演習 [2] 問題文: ・100個のノードを生成する ・ノードに重みを適当に点ける(1〜100) ・任意のノードペアを選び、重みの和を取り、重みの和が100以上のノードペアにリンクを張る ・それぞれのノードの持つリンクの数を計算する ・リンクの数の分布 (リンクが1つ・・・○○、リンクが2つ・・・○○、・・・みたいな) [3] 環境:[Windows XP Borland C++ Compiler 5.5(BCC Developer) C言語 [4] 期限:一応ないので焦りませんが、早目がうれしいです。 [5] その他の制限:どんな方法を使っても大丈夫です。 後ろの方だったので再レスです。
[1]情報プログラム演習(C言語コース) [2]2つの複素数z = a + b i,w = c + d i (但し,iは虚数単位)を読み込み,足し算とかけ算を計算して印字するプログラムを作成せよ.但し,以下の仕様を満足するように作成すること. 複素数の実部と虚部を示す実数型変数をメンバとする構造体COMPLEXをtypedef文を用いて定義 足し算の関数COMP_ADD(z,w)とかけ算の関数COMP_MULT(z,w)を作成し,main関数ではこれらの関数を呼び出す. 実行例としては以下を参考しなさい 1つ目の複素数(実部):2 1つ目の複素数(虚部):3 2つ目の複素数(実部):4 2つ目の複素数(虚部):-2 足し算:(6) + (1) i かけ算:(14) +(8) i [3]OS:Linux コンパイラ:gcc 言語:C [4]7月6日 正午 荒れ気味のようですが・・・ よろしくお願いします
100 :
9 :2006/07/05(水) 23:21:55
>14 各行にある個数は固定です
101 :
デフォルトの名無しさん :2006/07/05(水) 23:25:54
お願いします 【質問テンプレ】 [1] 授業単元:基本プログラミング [2] 問題文(含コード&リンク): 角度(0度以上180度以下)と計算すべき項数を引数として、正弦値の値を近似する関数を宣言し、入力した角度に対し、指定した項数に対する近似値を出力するプログラムを作成せよ。 角度に0未満もしくは180より大きい数が入力されたときに終了する。 角度は、近似の関数内でラジアンに変換すること。出力はmain関数で行うこと。 (実行例) Input degree(0<=degree<=180):30 Input n:5 sin30=0.5 Input degree(0<=degree<=180):30 Input n:1 sin30=0.523598 Input degree(0<=degree<=180):30 Input n:2 sin30=0.499674 Input degree(0<=degree<=180):45 Input n:10 sin30=0.707106 Input degree(0<=degree<=180):-1 [3] 環境 [3.1] OS:UNIX [3.3] 言語:C++ [4] 期限:明後日 [5] その他の制限:if,for,whileなどまでやりました
102 :
976 :2006/07/05(水) 23:30:24
自分のせいでここまでの言い争いになってしまって申し訳ないです。 というか、CかC++か、はっきり書かずに申し訳ないです。 もしかしたらCかもしれません・・・。
>>102 あ、うん・・・
お前の気持ちは実に良く分かった
だから、今の所はもうおとなしくしていたほうがいい…
今来たけど、もしかしたらってなんなの? わからないの?
#include <stdio.h> int main(void) { printf("しー!静かに!"); return 0; }
ぶっちゃけ、Cの標準関数を使っとけば、CでもC++でもコンパイルできるコードは書けるから どっちでもいい。
うだうだ言わずにコード書け。3分で書けた。
>>37 #include <stdio.h>
int main()
{
int n, i;
printf("Input number: ");
scanf("%d", &n);
for (i = 2; i < n; i++) {
if (n % i == 0) {
printf("最小の因数 = %d\n", i);
return 0;
}
}
printf("素数\n");
return 0;
}
>>110 いや、その・・・do-whileを使って下さい・・・おながいします
#include <stdio.h> int main() { int n, i; printf("Input number: "); scanf("%d", &n); if (n == 2) { printf("素数\n"); return 0; } i = 2; do { if (n % i == 0) { printf("最小の因数 = %d\n", i); return 0; } i++; } while (i < n); printf("素数\n"); return 0; }
全角の引用符と等号を使う奴には要注意。
引用記号・・・・orz
このスレは、いろんな意味で特殊。
116 :
デフォルトの名無しさん :2006/07/06(木) 00:18:29
>>105 完璧に理解できてないのであれですが、たぶんあってます
本当にありがとうございます
また何かあったらレスしますので、よろしくおねがいします
俺も早く手伝う側に回りたい・・・
118 :
976 :2006/07/06(木) 00:22:43
>>112 解答ありがとうございます。
もし、また今度わからないことがあったら、曖昧な部分は、はっきりさせてから
質問します。
それでは、お騒がせしました。
>>110 また中学生レベルの数学も知らない(ry
>>117 さすがにそのコードじゃ見向きもされんだろう
>>120 わざわざrejectされるコードを書いておきながら、無視されたら逆切れですか。
思った以上に子供のようだ。
俺がスリムにしてやろうw #include<stdio.h> #include<limits.h> int prime[]={2, 3, 5,7}; int IsPrimenumber(int n){ for (int i=0; n>1 && prime[i]<=n*n; i++) { if (n%prime[i] == 0) { return prime[i]; } } return n;} int main(void){ int n,p; do { printf("整数(%dまで):",INT_MAX); scanf("%d",&n); p = IsPrimenumber(n); if (n == p) printf("素数\n"); else printf("最小の素因数:%d\n", p); }while(0); return 0; }
>>120-121 コードの意味がわからないくせに選別するようなクズに配慮する必要はありませんから。
トーマスも地に落ちたな
いつまでも中学生にこだわっているな、低学歴必死だなの奴と一緒だな 煽り、罵倒レスにはスルーが一番だな。レスが無くなったとたん静かになるしw
>>128 今頃気づいた?
ソートしろって宿題にqsortを使うような奴だから。
なんでそんな解答をわざわざ書き込むのか理解不能。
>>129 中学生レベルと中学生の区別が付かないかわいそうな人ですか?
>>130 ソートしろって宿題にqsort使うと何か問題あるの?
まだまだ、暴れたり無いようです。この人たち。
そろそろ通報、アク禁の要請が必要だな
「気に入らない」という理由でアク禁にできるという妄想はどこから湧いたんだろう。
| | | | /V\ ,J /◎;;;,;,,,,ヽ _ ム::::(;;゚Д゚)::| ジー ヽツ.(ノ::::::::::.:::::.:..|) ヾソ:::::::::::::::::.:ノ ` ー U'"U' | Hit! | ぱくっ| /V\ /◎;;;,;,,,,ヽ そんなエサで _ ム::::(,,゚Д゚)::| 俺様が釣られると思ってんのか!! ヽツ.(ノ:::::::::.:::::.:..|) ヾソ:::::::::::::::::.:ノ ` ー U'"U'
↓良いから黙ってろ、無駄レスするな。書き込むなら宿題の質問か回答だけにしろ
hoge
こんな時間にですけど、
どなかた
>>52 もお願いします・・・。
152 :
151 :2006/07/06(木) 02:21:33
47 -t.im = z.im * w.re + z.re + w.im; +t.im = z.im * w.re + z.re * w.im; 寝ぼけてたごめん。実行例合ってた。テポドンが落ちてこないかと 心配で眠れないので起きてたんです。
>>52 こんな大物を直前に持ってくるなボケ。
だいたいこの程度が自分でできねえならいますぐ退学しろ。
>>52 マンドクサ('A`)
神が降臨するまで待てよ。永遠にな。
>>52 待ってろぉ、俺が今やっている、けど期待はするな
一応、6日中に出せれば良いんだよな?
>>52 よ、体力はどうするんだ・・・耐久力が体力なのか?
あ、そうそう、淡い期待をしてるといけないからはっきり言っとくけど、 前スレの簡易DBの続きは、全くやる気無いので、自分でなんとか してください。>質問した人
160 :
デフォルトの名無しさん :2006/07/06(木) 06:30:22
163 :
52 :2006/07/06(木) 09:41:47
>>158-162 ありがとうございますっっ!
もう少しだけ時間に余裕が出来たので、
独自の要素の追加にも挑戦してみようと思います
>>156 う・・・、問題文そのままコピペでしたので、
恐らく耐久力のコピペだと思います・・・
>>163 ういっ、かなり粗いソースだが、所々を別々に関数にして重複している箇所とか
すっきりさせられるところはあるのだが、面倒だし急いでいるかもしれんので
それで勘弁。というか、丸投げだから細かいことは良いかw
165 :
9 :2006/07/06(木) 10:42:14
11.33 22.33 22.33 22.33 22.34 33.34 11.22 22.22 22.44 22.22 22.12 33.34 11.22 22.22 22.44 22.22 22.12 33.34 上のようなファイルにおいてこのように一行が例えば、11.33から三個スペースその後数字 また三個スペースと続いているn行のファイルからsscanfを使って読み込むプログラムを作れ。 →このように書き込みをしたら 20さんが以下のプログラムを教えてくださりほぼうまくいったのですが #include <stdio.h> int main(void){ FILE *fp; char str[250]; double n[6]; fp = fopen("test.txt", "r"); if (fp){ while(fgets(str, sizeof(str), fp)){ sscanf(str, "%lf %lf %lf %lf %lf %lf\n", &n[0], &n[1], &n[2], &n[3], &n[4], &n[5]); printf("%.2f %.2f %.2f %.2f %.2f %.2f\n", n[0], n[1], n[2], n[3], n[4], n[5]); } fclose(fp); } return 0; } 読み込みファイルの中身が一部分 11.22 □2.22 22.44 22.22 22.12 33.34 □のようにスペース一個分、桁が少ないときに 出力がずれてきてしまいます。 この対処は上のプログラムをどのように変えればいいでしょうか
112のプログラムって1でも素数って表示されないか? 1は素数じゃない希ガス
>>101 #include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define PI 3.1415926535
double fact(int n){double r=1;for(int i=0;i<(n-1);i++)r*=(n-i);return r;}
double mysin(double deg,int dep){double rad=deg*PI/180.0,res=0;
for(int n=0;n<=dep;n++)res+=(n&1?-1:1)/fact(2*n+1)*pow(rad,2*n+1);return res;}
int main(void){char tmp[100];double deg,s;int n;printf("Input degree(0<=degree<=180):");
fgets(tmp,sizeof(tmp),stdin);deg=atof(tmp);printf("Input n:");fgets(tmp,sizeof(tmp),stdin);
n=atoi(tmp);printf("sin%0.0f=%f\n",deg,mysin(deg,n));return 0;}
[1] 構造体 [2]下記参照 [3.1]XP [3.2]borlandC++compiler5.5 [3.3] 言語: (C [4] 期限: 明日 [5] その他の制限: ほとんど初心者でポインタ配列程度までしか習ってません。 ax^2+bx+c=0の係数a,b,cを読み込み解を求めるプログラムを作りなさい。ただし 次のような構造体Root用いること。 ・異なる2実数根の場合:typeは、real、r1,r2は実根 ・重根の場合:typeはdouble、r1,r2は重根 ・虚数根の場合:typeはcomplex、r1は実部、r2は虚部 typedef struct { char type[8]; double r1; double r2; }Root; main() {double a,b,c; Root x; GeCoefficients(&a,&b,&c);*/:scanfでa,b,cを読み込む。*/ SolveQuadratic(a,b,c,,&x);*/公式で解を求める*/ DisplayRoots(x);*/解をファイルに書き出す。虚根の場合はr1+r2i.,r1-r2と書く。*/
169 :
デフォルトの名無しさん :2006/07/06(木) 11:26:18
【質問テンプレ】 [1] 授業単元:情報処理演習 [2] 問題文(含コード&リンク): オークションアルゴリズム 入力:正整数n n×nの非負整数行列W=(w(i,j)) 出力:{1.2....n}の順列σで以下を最小にするもの Σ(i=1 からn) w(i,σ(i)) これを解くのに以下のアルゴリズムを用いる Step 0 M=(n+1)W, sigma(i)=-1 (i=1,2,...n)とする Step 1 任意のi,sigma(i)≠-1ならば終了 Step 2 sigma(i)=-1を満たす者を一つ選びi*とする。 m(i*,j)の値が行列Mの第i*行で最小となるjをj*とする(候補が複数ある場合は、それでも良いのでそのうち一つを選ぶ) 行列Mの第j*列の各要素に,1を加える。 Step 3 3-1 sigma(i')=j*となるi'が存在するならば、sigma(i')=-1,sigma(i*)=j*とする。 3-2 sigma(i')=j*となるi'が存在しないなら sigma(i*)=j*とする。 Step1に戻る [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: Borland [3.3] 言語: C [4] 期限: 明日 [5] その他の制限:ポインタは習ってません お願いします!
170 :
デフォルトの名無しさん :2006/07/06(木) 12:25:53
ランレングス法を使った文字列圧縮法 実行結果は 圧縮前文字列→AAABCCCCCCDDDEFGHHHHJJJ 圧縮前文字数→23 圧縮後文字列→AAAB@C6DDDEFG@H4JJJ 圧縮後文字数→19 という風になります。 sprintf(&cCnt,"%d",iCnt); cHairetu[soeji]=cCnt; を使うみたいです。 途中までやってみたのをとりあえず乗せてきます。 #include <stdio.h> void main() { int iCnt; int gokei; int i=0; int b=0,b2=0; char mojiretu[50] = "AAABCCCCCCCCDDDEFGHHHHJJJ"; char mojiretu2[50]; char taihi; i = 0; printf("圧縮前文字列 → "); while(mojiretu[i] != '\0'){ putchar(mojiretu[i]); i++; } putchar('\n'); printf("圧縮前文字数 → %d\n",i); お願いします
>>170 元の文字種の範囲が不明。英大文字限定なのかそうでないのか。
172 :
デフォルトの名無しさん :2006/07/06(木) 12:41:08
普通でいいと思います、 すいませんわかりづらくて・・・
>普通でいいと思います なにそれ。分からんわ
>普通でいいと思います、 わかるかボケ!
175 :
もはもは :2006/07/06(木) 13:03:32
HELPです!!!!! 1次元配列に 34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、 これらの平均値を求めよ。 さらに int eval[3]という1次元配列を用意して eval[0] には0〜60の数の個数 eval[1]には61〜80の数の個数 eval[2]には81〜100の数の個数 を格納するようにし、それらを出力するプログラムを作成せよ。 よろしくお願いします。
>>170 # include <stdio.h>
# include <string.h>
int main(void)
{
char mojiretu[50] = "AAABCCCCCCCCDDDEFGHHHHJJJ";
char mojiretu2[50];
int i = 0, n = 0, out = 0;
char c;
printf("圧縮前文字列→%s\n", mojiretu);
printf("圧縮前文字数→%d\n", strlen(mojiretu));
do {
if(c == mojiretu[i])
n++;
else
{
for(; n > 9; n -= 9)
out += sprintf(mojiretu2 + out, "@9%c", c);
if(n <= 3)
while(n--) mojiretu2[out++] = c;
else
out += sprintf(mojiretu2 + out, "@%d%c", n, c);
n = 1;
c = mojiretu[i];
}
}while(mojiretu[i++]);
mojiretu2[out++] = '\0';
printf("圧縮後文字列→%s\n", mojiretu2);
printf("圧縮後文字数→%d\n", strlen(mojiretu2));
return 0;
}
178 :
177 :2006/07/06(木) 13:10:00
補足。 数字が入力に含まれる可能性は考慮したが、@は無いと仮定した。
お前らはどうせ理髪店でも「普通でお願いします」って頼むタイプなんだろ
>>158 入力チェックするんなら、scanf使うのやめようよ。
>>177 それcを初期化する前に参照しちゃってるよ。
>>181 どんな値が入っていても正しく動く、というちょっとしたネタ。
183 :
デフォルトの名無しさん :2006/07/06(木) 14:00:19
プリモーフィズムってなんなんでしょうか?
辞書ひくかグーグル様に聞いてみなさい。
185 :
デフォルトの名無しさん :2006/07/06(木) 14:05:43
ぐぐった結果2つしかでなくて、結局わけわからんのです。 @一応レポートの課題なんでおねがいします。
ポリモーフィズム
ポリモーフィズムじゃないの
188 :
デフォルトの名無しさん :2006/07/06(木) 14:10:03
ポリモーフィズムで検索かけたら普通にでました。 ごめいわくかけてすみません
189 :
デフォルトの名無しさん :2006/07/06(木) 14:40:59
ポインタの単元です。 LinuxでC言 以下の条件で入力された2から1000までの全ての素数を求めるプログラムを作りなさい。 【条件】 ・素数を配列に格納すること ・素数を求める関数 void prime_number(int *p)を作ること ※ただし int *pは、素数を入れる配列のポインタ 明日までなので早めにお願いしたいです。
190 :
◆qbNb6Ma0MY :2006/07/06(木) 14:41:09
[1] 授業単元: ? [2] 問題文: ファイルから make made cook cooked run ran work work のように、単語を順次2つずつ読み込み、文字コードで大小関係を比較して、次のように大小関係を出力するプログラムを作成しなさい。 make < made cook > cooked run < ran work = work ただし、結果がモニタ画面上の他に、新たに結果を書き出すファイルを作成し、その中に結果を書き込むようにすること。 なお、プログラムの仕様は以下の通りです。 (1) 単語の最大長は各自で設定して構わない。 (2) 大小関係は、単語の先頭から順番に比較し、文字が異なった時点での文字コードの大小関係とする。例えば、make と made は ‘m’, ‘a’ については同じで、3文字目の‘k’ と ‘d’ に大小関係 k < d があるので、make < made となる。 (3) 文字サイズが異なり、どちらかが他方の先頭に完全に一致する場合には、短い方の単語の方が大小関係で大きくなるものとする。例えば、cook と cooked では、cook > cooked である。 (4) 全く同じ文字列の場合には同値である。例えば、work と work では、work = work となる。 (5) 文字の大小関係を比較する部分の計算は、main() 関数の外でべつに関数として記述すること。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: microsoft Visual C++ [3.3] 言語: C++ [4] 期限: 今日の20時までで [5] よくわからないので簡単なプログラムでおねがいします。
192 :
◆CUZLM8U3vI :2006/07/06(木) 15:10:36
/* 整数のべき乗を再帰を使って */ /* 計算するプログラム */ #include <stdio.h> int power(int base,int n); main() { int base, n; printf("べき乗 base^n を計算します\n"); printf("まず base を入力してください:"); scanf("%d",&base); printf("次に n を入力してください:"); scanf("%d",&n); printf("%d の %d 乗は = %d です\n", base, n, power(base,n) ); return 0; } /* 関数 power */ int power(int base,int n) { return base*power(base,n-1); } よろしくお願いします。
>>190 >結果を書き出すファイル
の指定方法は?
194 :
◆CUZLM8U3vI :2006/07/06(木) 15:16:56
すいません、できました('A`)
196 :
デフォルトの名無しさん :2006/07/06(木) 15:28:09
[1] 授業単元: 演習 [2] 問題文: (1) 1桁の乱数を得るとき、その総和が100を超えるまで表示する。超えたら終了する。 表示は得られた乱数とそこまでの総和を表示する。 (2) 構造体で定義した年齢(整数)、氏名(アルファベット)、趣味(アルファベット)のデータをn個入力した後、 趣味を入力したら同じ趣味の人の氏名を表示し、年齢を入力したら同じ年齢の人の氏名を表示するプログラムを作成せよ。 人数は数人でよい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C [4] 期限:できればすぐ! [5] その他の制限:特にありません。宜しくお願い致します。
197 :
◆CUZLM8U3vI :2006/07/06(木) 15:32:19
/* 2つの整数の最大公約数をユークリッドの互除法を使って */ /* 計算するプログラム */ #include <stdio.h> int gcd(int n,int m); main() { int n, m; printf("二つの整数の最大公約数を計算します\n"); printf("まず整数をひとつ入力してください:"); scanf("%d",&n); printf("もうひとつ整数を入力してください:"); scanf("%d",&m); printf("%d と %d の最大公約数は %d です\n", n, m, gcd(n,m)); return 0; } /* 関数 gcd */ int gcd(int n,int m) { int x; x=n%m; if(x==0){ return m; } else{ return gcd(n,x); } }
>>196 (1)
#include<stdio.h>
#include<stdlib.h>
int main(void){int sum=0;while(sum<100){sum+=rand()%10;printf("%d\n",sum);}return 0;}
199 :
◆CUZLM8U3vI :2006/07/06(木) 15:34:43
ユークリッドの互除法を使用し、 二つの整数の最大公約数を計算する関数gcdを作成しなさい よろしくお願いします。
200 :
デフォルトの名無しさん :2006/07/06(木) 15:40:28
>>197 >return gcd(n,x);
を
>return gcd(m,x);
にすれば大体大丈夫。
203 :
◆mfl6EhR6DM :2006/07/06(木) 15:45:24
[1] 授業単元:C言語プログラミング [2] 問題文: @ 下記のような9×9のマスを出力するプログラムを書く a b c d e f g h i 1 2 3 4 5 6 7 8 9 A @のプログラムに たとえば、【d→4→5】と打つと、下記のように出力されるプログラムを作る。 a b c d e f g h i 1 2 3 4 5 5 6 7 8 9
204 :
◆mfl6EhR6DM :2006/07/06(木) 15:45:56
・・・・・続き
B @にファイルを読み込ませ、下記のように数字を出力させる。
a b c d e f g h i
1 6 1
2 7 6 5
3 8 1 3 2
4 5 4 8
5 4 7 2 9
6 8 1 7
7 1 2 5 3
8 6 7 8
9 2 4
ttp://www.puzzle.jp/letsplay/sudokurule-j.html 数字の例えは、上のサイトから持ってきました。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:2006年7月7日12:00まで
[5] その他の制限:if〜else文、do〜while文、scanf文、ファイルの読み込み を習いました。
>>199 int gcd(int a,int b){return (a%b)==0?b:gcd(b,a%b);}
つーか、 >・素数を求める関数 void prime_number(int *p)を作ること >※ただし int *pは、素数を入れる配列のポインタ とてもじゃないがこんなクソ仕様にまともに回答する気になれない。
207 :
◆CUZLM8U3vI :2006/07/06(木) 15:54:06
ありがとうございました!
208 :
◆CUZLM8U3vI :2006/07/06(木) 16:10:57
/* 配列に入った整数をすべて times 倍する関数の作成 */ #include <stdio.h> #include <stdlib.h> times_all(int data[], int n, int times); main() { int num_data,data[10],times; char input_str[20]; int i; for (num_data=0; num_data < 10; num_data++){ printf("データを入力してください:"); gets(input_str); if (input_str[0] == NULL){ break; } data[num_data] = atoi(input_str); } printf("何倍するかを入力してください:"); scanf("%d",×); printf("\n\n\n"); /* 少しあける */ printf("%d 倍したデータは\n", times); for (i = 0; i < num_data; i++){ printf("%d \n", data[i]); } return 0; } /* 関数 times_all */ times_all(int data[], int n, int times) {
209 :
◆CUZLM8U3vI :2006/07/06(木) 16:12:08
data[]の値をすべてtimes倍する 関数times_allを作成しなさい よろしくお願いします・・・。
210 :
196 :2006/07/06(木) 16:18:50
済みません
>>198 のフローチャートも教えて頂けますでしょうか
>>209 void
times_all(int data[], int n, int times)
{
int i;
for (i = 0; i < n; i++) {
data[i] *= times;
}
}
>>208 void times_all(int data[],int n,int times){while(--n>=0)data[n]*=times;}
213 :
◆qbNb6Ma0MY :2006/07/06(木) 16:21:17
215 :
196 :2006/07/06(木) 16:22:22
>>190 #include<stdio.h>
#include<stdlib.h>
int mystrcmp(const char* s1,const char* s2){int i=0;
while(s1[i]&&s2[i]){if(s1[i]!=s2[i])return(s1[i]-s2[i]);i++;}
if(!s1[i])return s2[i]?1:0;else if(!s2[i])return -1;return 0;}
int main(void){char tmp[100],s1[100],s2[100];int c;FILE* fp;
if((fp=fopen("output.txt","w"))!=NULL){
while(fgets(tmp,sizeof(tmp),stdin)){sscanf(tmp,"%s %s",s1,s2);c=mystrcmp(s1,s2);
sprintf(tmp,"%s %c %s",s1,c>0?'>':c<0?'<':'=',s2);puts(tmp);fputs(tmp,fp);}
fclose(fp);}return 0;}
217 :
◆qbNb6Ma0MY :2006/07/06(木) 16:56:47
>>216 フフフフフと文字がでてきて比較できないです><
219 :
◆CUZLM8U3vI :2006/07/06(木) 17:05:30
>>211 ああああごめんなさい
再帰を使わないといけない問題でした
ごめんなさい
大学の教官って奇妙な問題作るよね。 しかも良くわからないチェックシステム作るし。 時間のチェックが厳しいですよとかチェックサムを調べてコピーかどうかを見ますよとか。 怖くて滅多な操作が出来ない。
222 :
◆mfl6EhR6DM :2006/07/06(木) 17:25:09
>>220 おおおお><
220さん、ありがとうございます!!
意味もなく「ただし、○○を使って…」とか条件を付けるような教官は全員クビでいいと思う。 どうしても○○を使わせたいなら「何でもいいから○○を有効に使ったプログラムを作れ」 みたいな課題を出せばいい。
Cで二次元配列の関数を使うとき、宣言ってどういう構文になる?
スレ違い
のびのびとやらせる、あるいは本人が持つ知識の範囲内でも結果を出させる というのは良いかもね。どんどん自発的に調べて学習しようとする生徒と そうでない生徒の差がはっきりしてくるしね
227 :
220 :2006/07/06(木) 17:49:18
[1]プログラミング [2]五人の学生の数学と英語と国語の成績を2次元配列に格納して、点数表と各人の平均点と各科目の平均点を表示するプログラムを作れ 全科目全員の点数を表示する関数,人毎の平均を計算し表示する関数,科目ごとの平均を計算し表示する関数を使うこと [3.1]windowsXP [3.2]bcc ver5.5 [3.3]c [4]7/11 [5]上記の通り関数を使うそうです。点数は初期化で与えるとのこと。
229 :
デフォルトの名無しさん :2006/07/06(木) 19:05:30
[1] 授業単元: ソフトウェア [2] 問題文(含コード&リンク):キーボードより10 以上、30 以下の偶数を入力し、これをn とする。 n=2 個の0 とn=2 の8 が表示されるようなプログラムを作れ。但し、if 文やswtich 文は用いては ならず、 printf ("%2d",x ) ; printf ("Yn" ) ; 以外にprintf やputs は用いてはならない。 (ヒント: 除算と乗算を使う。演算順序に注意。) (実行例) 下線部はキーボードより入力する。 整数を入力===>16 0000000088888888 [3] 環境 windowsXP [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 明日まで [5] その他の制限:
[1] 授業単元: C言語実習授業 [2] 問題文(含コード&リンク): 「abcde」・「aa」・「aab」・「aaa」・「abbcdef」の順番で表示される5つの文字列を アルファベット順に表示されるようにしなさい。 ただし、単純に順番を直しただけの文字列を「表示する」のは駄目である。 アルファベット順に直す過程のプログラミングを入れること。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:明日の午前中までです。 [5] その他の制限: 特にありませんが私はかなり初心者です…orz もし解いてくださる方がいてくださったらお願いします。
>>229 >n=2 個の0 とn=2 の8 が表示されるような
意味ワカンネ
234 :
デフォルトの名無しさん :2006/07/06(木) 19:53:04
>>231 おいっ、本当にいい加減にしとけよ。どこの教員か指導員か講師か知らんが
悪質過ぎ。自分の落ち度を指摘されてこんな場所で罵倒を続けていて恥ずかしくないか?
昨日みたいな荒れた状況にするわけにはいかないんで、今後はお前をスルーするが。
そろそろ強制IDも考えてもらわんとな。あとマジで悪質な煽りにはアク禁を要請する。
別に荒れてなかったと思うけどなぁ。スレ乱立するバカがいただけで。 丸投げ厨が余所のスレに漏れてなければ荒れてるとは言わないし。
本当にリアル中卒引きこもりなのかもね。彼。
中卒でもnの因数がたかだか√nまでであるということぐらいは知っていて然るべきだがな。
>>231 >>90 >>238 だろうね。2chで相手の素性が分からず、発言しても直接攻撃を受けないことを良いことに
煽ってくるが、実社会で人とまともに接していない奴か、自分勝手を押し通して
孤立している職員か生徒だろうね。とにもかくにも、
>>231 に気持ちよく思われなくても問題ないし
>>231 のご機嫌取りなんてする必要もないことに気づいて欲しいね。
√って中学校で習うっけ?
>>241 習うよ。2次方程式の解の公式にも入ってるし。
荒れてる?
いや別に。
>>240 >とにもかくにも、
>>231 に気持ちよく思われなくても問題ないし
>
>>231 のご機嫌取りなんてする必要もないことに気づいて欲しいね。
そのわりには、ほら、君の顔、真っ赤だよ。
>>243 ぉぉ ちょっと思い出した
√2とかも暗記した記憶がある・・・
そんなもん小学校で約数習った時点でわかるけどな
>>239 n の因数って n とか n/2 とか含まないのか?
n が素数かどうかを調べるには
高々√n までの素数で割れるかだけ調べればいいけど。
[1] 授業単元: プログラミング言語演習 [2] 問題文(含コード&リンク): 回答ansがb、r、gのいずれかの場合それぞれblue,red,greeと出力するプログラムを switch文による多分岐の方法で書け。b、r、g以外の文字が入力された場合 no colorと出力するようにせよ。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Borland c++ compiler [3.3] 言語: C [4] 期限:7/9まで [5] その他の制限:switch文を使うということ以外には特にはありません よろしくお願いします。
switch(ans){ case 'r': printf("red"); break; case 'g': printf("green"); break; case 'b': printf("blue"); break default: printf("no color"); }
だれか168をよろしくお願いします。
>>254 Root.type に文字列入れるという設計が気に入らない
一方的に自分の妄想を垂れ流し、突っ込まれたら、切れて勝利宣言。 いつものパターン。
>>257 丁寧にコメントまで…本当にありがとうございます!
259 :
9 :2006/07/06(木) 21:31:00
11.33 22.33 22.33 22.33 22.34 33.34 11.22 22.22 22.44 22.22 22.12 33.34 11.22 22.22 22.44 22.22 22.12 33.34 上のようなファイルにおいてこのように一行が例えば、11.33から三個スペースその後数字 また三個スペースと続いているn行のファイルからsscanfを使って読み込むプログラムを作れ。 →このように書き込みをしたら 20さんが以下のプログラムを教えてくださりほぼうまくいったのですが #include <stdio.h> int main(void){ FILE *fp; char str[250]; double n[6]; fp = fopen("test.txt", "r"); if (fp){ while(fgets(str, sizeof(str), fp)){ sscanf(str, "%lf %lf %lf %lf %lf %lf\n", &n[0], &n[1], &n[2], &n[3], &n[4], &n[5]); printf("%.2f %.2f %.2f %.2f %.2f %.2f\n", n[0], n[1], n[2], n[3], n[4], n[5]); } fclose(fp); } return 0; } 読み込みファイルの中身が一部分 11.22 □2.22 22.44 22.22 22.12 33.34 □のようにスペース一個分、桁が少ないときに 出力がずれてきてしまいます。 この対処は上のプログラムをどのように変えればいいでしょうか
262 :
9 :2006/07/06(木) 21:48:46
11.22 □2.22 22.44 22.22 22.12 33.34 □のようにスペース一個分、桁が少ないときや 11.22 □2.22 22.44 ー2.22 ー2.12 33.34 のようにマイナスのときに 出力がずれてきてしまいます。
>>261 スマソ よくわかってないで適当に答えた
>>262 じゃあ%6.2fにして、スペース文字を削れば?いろいろ自分で試してみろよ。
それから、sscanf()で読み取る時は、ホワイトスペース文字が2個続いて いようが100個続いていようが、書式指定にはスペース1個でいいからな。
267 :
デフォルトの名無しさん :2006/07/06(木) 22:02:34
[1] 授業単元: プログラム1 [2] 問題文(含コード&リンク): a*x*x+b*x+c=0の値をキーボードから読み込みその解を解の公式を使って解くプログラムを作成する。 b*b-4*a*cを計算する関数。b*b-4*a*cが正の場合を計算する関数。b*b-4*a*cが0の場合を計算する関数。b*b-4*a*cが負の場合に[no]と表示する関数。の4つをプログラム内に構成すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:明後日まで。 [5] その他の制限:関数を使って作成する。
>>262 % 5.2f という風に、% と 5の間にスペースを一個入れると、符号が離れて
印字されるようになるぞ。
>>253 即レスありがとうございます。
ちょっと改良してコンパイル出来る状態にしてみたのですが
実行すると初っぱなからno colorが出てきてしまいます。
scanfを使いrやらgやらbに上手く反応出来るようにさせたいのですが
どうすればいいかご教授ください
#include <stdio.h>
int main(){
int ans;
switch(ans){
case 'r':
printf("red");
break;
case 'g':
printf("green");
break;
case 'b':
printf("blue");
break;
default:
printf("no color");
break;
}
}
>>268 符号が離れるんじゃなくて、符号が正の時はスペースになるんだったorz
実は俺もよくわかってない。
273 :
デフォルトの名無しさん :2006/07/06(木) 22:29:06
>>270 ありがとうございます!!
274 :
デフォルトの名無しさん :2006/07/06(木) 22:30:25
RTFM
>>269 getcharじゃ駄目?
#include <stdio.h>
int main(void){
int ans;
ans=getchar();
switch (ans){
case 'r':
printf("red");
break;
case 'g':
printf("green");
break;
case 'b':
printf("blue");
break;
default:
printf("no color");
break;
}
return 0;
}
>>276 出来ました!
こんなに早く解決したのも答えてくださった方々のおかげです。
ありがとうございました!
278 :
デフォルトの名無しさん :2006/07/07(金) 00:26:05
279 :
デフォルトの名無しさん :2006/07/07(金) 02:12:10
[1] 授業単元: program [2] 問題文(含コード&リンク): 1〜100までの整数について、7で割り切れない数値、3と2で割り切れる数値、3と2の倍数で10より大きく50以下の数値を表示する1つのプログラムで3つ作動できるプログラムを作成する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:明日のお昼まで [5] その他の制限: 選択処理を使って。 お願いします。
280 :
デフォルトの名無しさん :2006/07/07(金) 02:17:04
[1] 授業単元:プログラミング2 [2] 問題文(含コード&リンク):a*x*x+b*x+c=0のa,b,cをキーボードから読み込んで解を求めるプログラムを作成する。しかし解がD=b*b-4*a*cの結果により複素数の時は画面にNOを、解はx=(-b+-ルートD)/2aを用いる。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限:午前中 [5] その他の制限:なるべく初歩的なプログラムでお願いできればありがたいです。
281 :
デフォルトの名無しさん :2006/07/07(金) 02:21:19
ぷろぐらむ3 等比数列a,ar,ar*r,ar*r*r,・・・・・a*rのn乗について、arnをキーボードから入れ、それらの総和を求めるプログラムを作成する。 windows gcc c言語 お昼の2時まで よろしくお願いします!
おー、学期末なのか盛況やねえ
>>278 アルゴリズムの検索してたら過去スレに同じ問題あったのだぜ?
>>280 ってか、解は計算結果を数値で出さずに分数で表した方が良かったのかな?
まぁそうでも自分でやれるでそ
[1] 授業単元: プログラミング演習T
[2] 問題文(含コード&リンク):
課題4-A2を変更して,以下の2つの処理をそれぞれユーザ定義関数として定義して,これを使うようにせよ.応用課題4-A2を行っていないものは,解答例のプログラムを用いてよい.
○一回の貯金の処理
・現在の貯金額の表示
・貯金額の問い合わせと入力受付
・入金処理を行い、処理後の貯金額を円単位で整数として返す
○金額の表示(金額を整数で受け取って,3桁区切り表示)
[3] 環境
[3.1] OS: WindowsXP SP2
[3.3] 言語: C++
[4] 期限: 07月07日12:00まで
[5] その他の制限: グローバル関数は使うなとのことです。↓課題4-A2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2277.txt
っつか、マジで質問者が増えたな・・・今までお前ら何を勉強してたんだと(ry
0からの状態で一ヶ月と半月の期間で200ページ近く進んでついていけません。><
あっ
>>291 にゴミ(無駄な変数)が残ってたけど、まぁ良いか
293 :
デフォルトの名無しさん :2006/07/07(金) 07:07:41
どなたか
>>208 の再帰を使った方法で解いてもらえますかorz
>>279 #include <stdio.h>
#define NUM 100
void func1(void){
int i;
for (i = 1; i <= NUM; i++) if ((i%7) != 0) printf("%d ", i);
}
void func2(void){
int i;
for (i = 1; i <= NUM; i++) if (((i%3)==0) && ((i%2)==0)) printf("%d ", i);
}
void func3(void){
int i;
for (i = 1; i <= NUM; i++) if (((i % 3)==0) && ((i%2)==0) && (i>10) && (i<=50)) printf("%d ", i);
}
int main(){
printf("7で割り切れない数値\n");
func1();
printf("\n\n");
printf("3と2で割り切れる数値\n");
func2();
printf("\n\n");
printf("3と2の倍数で10より大きく50以下の数値\n");
func3();
printf("\n");
return 0;
}
296 :
278 :2006/07/07(金) 09:24:04
>>283 過去スレ見てきました。
フラーリーのアルゴリズムは使われていないように見えるのですが、
今回の答えと一緒でしょうか?
300 :
デフォルトの名無しさん :2006/07/07(金) 10:41:54
[1] 授業単元: プログラム1
[2] 問題文(含コード&リンク): Kruscal法を用いて最小木を求めよ。
図
http://s.pic.to/1uw91 [3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 7月7日正午まで]
[5] その他の制限: (二次元配列を用いる。)
よろしくお願いします。
301 :
デフォルトの名無しさん :2006/07/07(金) 12:48:05
303 :
デフォルトの名無しさん :2006/07/07(金) 14:08:26
char cmojiretu[50] = "AAABCCCCCCCCDDDEFGHHHHJJJ"; char cmojiretu2[50]; int isoeji = 0; int icnt = 0; int out = 0; char ccnt; printf("\n圧縮前文字列→%s\n", cmojiretu); //圧縮前文字列の表示 printf("圧縮前文字数→%d\n", strlen(cmojiretu)); //圧縮前文字数の表示 do { if(ccnt == cmojiretu[isoeji]) icnt++; //icntを1つずつずらす else{ for(; icnt > 9; icnt -= 9) out += sprintf(cmojiretu2 + out, "@9%c", ccnt); if(icnt <= 3) while(icnt--) cmojiretu2[out++] = ccnt; else out += sprintf(cmojiretu2 + out, "@%c%d", ccnt, icnt); icnt = 1; ccnt = cmojiretu[isoeji]; } }while(cmojiretu[isoeji++]); cmojiretu2[out++] = '\0'; printf("\n圧縮後文字列→%s\n", cmojiretu2); //圧縮後文字列の表示 printf("圧縮後文字数→%d\n", strlen(cmojiretu2)); //圧縮後文字数の表示 return 0; //main関数を終了させる } このC言語のコメントがわかりません、わかる方コメントをお願いします。
あぁそれ日本人という民族が使ってる言語、日本語だよ
305 :
デフォルトの名無しさん :2006/07/07(金) 14:56:28
[1] 授業単元: 情報処理 [2] 問題文(含コード&リンク): n 個の整数からr 個の整数を取り出す組み合わせの数nCr を計算するプログラムを 作成し、実行しなさい。nCr は以下のように表される。 nCr = n-1Cr-1+n-1Cr , (nC0 = nCn = 1, nC1 = n) ただし、for ループ、while ループ、do-while ループが必要な場合は、それらを再帰関数によっ て実現すること。また、各自が定義し、使用する関数については、それらのプロトタイプを必ず 宣言すること。 <表示例> Please input n and r: 4 2 nCr = 6 [3] 環境 [3.1] OS: linux [3.3] 言語: C [4] 期限: 7月10日 [5] その他の制限: とくにございません、おねがいします
>>305 # include <stdio.h>
int normalize(int m, int n, int cm, int cn, int x, int y, int z, int w, int (*k)(int, int, int, int, int, int));
int combo_0(int, int, int, int);
int combo_1(int, int, int, int, int, int);
int combo_2(int, int, int, int, int, int);
int combo_3(int, int, int, int, int, int);
int main(void) {
int n, m;
printf("Please input n and r: ");
scanf("%d%d", &m, &n);
printf("nCr = %d\n", combo_0(m, n, 1, 1));
return 0;
}
int normalize(const int m, const int n, const int cm, const int cn, const int x, const int y, const int z, const int w, int (*const k)(int, int, int, int, int, int)) {
return cn ? normalize(m, n, cn, cm % cn, x, y, z, w, k) : k(m / cm, n / cm, x, y, z, w);
}
int combo_0(const int m, const int n, const int num, const int denom) {
return n ? normalize(m, n, m, n, num, denom, m, n, combo_1) : num;
}
int combo_1(const int cm, const int cn, const int num, const int denom, const int m, const int n) {
return normalize(num, cn, num, cn, denom, cm, m, n, combo_2);
}
int combo_2(const int num, const int cn, const int denom, const int cm, const int m, const int n) {
return normalize(denom, cm, denom, cm, num, cn, m, n, combo_3);
}
int combo_3(const int denom, const int cm, const int num, const int cn, const int m, const int n) {
return combo_0(m-1, n-1, num * cm, denom * cn);
}
309 :
デフォルトの名無しさん :2006/07/07(金) 21:00:48
[1]プログラミング [2]○×ゲーム ○×ゲームは、皆さん知っているとは思うが、3x3のマス目に○と×を交 互に置いて、縦横または斜めに3個早く並べた方を勝ちとするゲームであ る。 以下のような内容の、人間対コンピュータ○×ゲームのプログラムを作りな さい。 人間に自分が先手か後手かを入力させる。 人間の番のときは、打つ手を入力させる。 コンピュータの番のときは、盤のどこに打ったらコンピュータの勝 ち目が多そうか調べ、最も勝ち目が多そうなところに打つ。 2〜3を繰り返して、どちらかが勝つか、または、9マスすべて埋まっ た場合(すなわち引き分けの場合)に、結果を表示して終了。 以上の手順の中で最も難しいのは3.であろう。 この作り方の代表的なもの は、評価関数を用いた先読み方法であり、以下のような方法で作ることが 出来る。 盤のどこに打ったらコンピュータの勝ち目が多そうか(評価関数の作り方) コンピュータが次の一手を打つ場合、コンピュータ勝ち目の 最も高い場所に打つようにする。 しかし、対戦者も対戦者の勝 ち目の最も高い場所(コンピュータが最も負ける可能性の高い場所) に打とうとする。したがって、何手か先の組合せをすべて調べ、コ ンピュータの勝ち目の最も高い場所を探す必要がある。 今回は、簡単のためとりあえず「1手先読み」とする。コンピュー タの打てるすべての次の一手について、次のような基準で点数をつ ける。 そして、最も点数の高い手を採用する。 盤面を見て、縦横斜め8つのそれぞれの並びにおいて、 自分の記号が打たれたマス目1つと、まだ記号がないマス目2 つからなる『並び』は1点 自分の記号が打たれたマス目2つと、まだ記号がないマス目1 つからなる『並び』は5点 自分の記号が3個並んだ(つまり勝った)ら100点 を、コンピュータの点の場合は正で、対戦者の点は負として集計する。 [3] [3.1]mac OS X [3.2]gcc [3.3]C [4] 7/10 17:00 [5]特になし
310 :
デフォルトの名無しさん :2006/07/07(金) 21:04:05
312 :
デフォルトの名無しさん :2006/07/07(金) 21:41:35
[1] 授業単元:プログラミングI [2] 問題文(含コード&リンク): 2から100までの階乗を求めるプログラムを作成しなさい。 実行結果をレポートに記入すること。 (ヒント)100の階乗は高々200桁なので、200個の配列のを用意し、 ひとつの配列に一桁を当てはめること。 [3] 環境 [3.1] OS:Linux [3.3] 言語:C [4] 期限: 2006年7月10日10:00まで [5] その他の制限: まだ始めたばかりなので、if,switch,do,while,for文 しか習っていません。int型のやつを使って解くらしいです。 自分でやってみたんですが9桁以上の計算は結果がおかしくなりました。 初歩的なものかもしれませんが、よろしくお願いします。
つdouble
>>312 思ったより簡単でびっくりした。
#include <stdio.h>
#define N 200
main(){
int num[N]={1};
int i,j,flag;
for(i=2;i<=100;i++){
for(j=0;j<N;j++){num[j]*=i;}
for(j=0;j<N-1;j++){
if(num[j]>=10){num[j+1]+=num[j]/10;num[j]%=10;}
}
flag=0;
printf("%d! = ",i);
for(j=N-1;j>=0;j--){
if(flag || num[j]){printf("%1d",num[j]);flag=1;}
}
printf("\n");
}
}
315 :
312 :2006/07/07(金) 22:54:19
>>314 解答ありがとうございます。
今習ったのはint main(void) 〜 return(0)という形の
ものだけなのですが、main()というのはint main(void)の
代わりのものなんでしょうか?
316 :
デフォルトの名無しさん :2006/07/07(金) 23:00:10
[1] 授業単元:プログラミング2 [2] 問題文(含コード&リンク): しりとりするプログラムを作成せよ 入力はすべて標準入力から行う。 しりとりしたものが過去に出ていた場合はしりとりを成立させない。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 明日 [5] その他の制限: 特にないです
317 :
デフォルトの名無しさん :2006/07/07(金) 23:41:10
318 :
278 :2006/07/08(土) 00:06:56
どなたか
>>278 の問題をお願いできませんでしょうか・・・?
>>817 単なる中継機能だけであれば、次のような機能を実装すればよい。
・サーバは、とあるポート(8080)でlistenする。
・ブラウザからの接続要求で、URLに含まれるサーバへのコネクションを張る(port80で)。
・ブラウザから受信したデータをそのままHTTPサーバに送信する。
・HTTPサーバから受け取ったデータをそのままブラウザに送る。
ブラウザはプロキシの設定でlocalhostの8080番を指定する。
複数クライアントに対応する場合は、forkでもthreadでもお好きなように。
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 前問でキーボードの数字の配置では「1」の隣に「2」が来るが、 20回の試行のうち12あるいは21の並びが何回程度現れるかも確かめておきたい。 このためのプログラムを作成せよ。結果はnumber_12=***の形式で表示させること。 ちなみに『前問』というのは↓です。 サイコロを用いた賭けを行いたいのだが, 当のサイコロが無いことに気がついた。 そこで、この賭けには何も利害関係を持たないAさんをつかまえて別室に待機させ、 サイコロを振る必要が生じたときにAさんにその瞬間頭にひらめいた1〜6までの数字の 中で好きな数字を言わせ、その数字をもって「サイコロの目の代用」とすることを考えた い。しかし、例えば Aさんはとりわけ「3」という数字が好きで、3を他の5つの数字より も頻繁に言う傾向があるかもしれない。 これを確かめるための予備実験として1〜6までの数字120個を可能な限りでたらめに キーボードから入力すると、20回の試行のうち1が出た回数、2が出た回数、 …、6が出た回数、及び打ち込んだ数の総和を表示するプログラムを作成せよ。ただし、そのときの結果を number_1=***…sum_number=*****の形式で表示すること。 [3] 環境 [3.1] OS: (Windows/Linux/等々) WinXP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) もう過ぎてますが、なるべく早くだしたいです_| ̄|○ [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ポインタを使わないでお願いします!
[1] 授業単元: 計算機プログラミング [2] 問題文(含コード&リンク): 初期値0.1、a=4と選んだ場合のロジスティック写像: x(n+1) = ax(n)(1-x(n)) に対し、軌道: x(1),x(2),.... を生成させ、 それが区間: d_{k}=[k/M,(k+1)/M] (k=0,....,M-1)(Mは区間[0,1]の分割数)に落ちる回数をカウントし、 横軸にk/Mを縦軸にd_{k}に軌道が落ちた回数をgnuplotを用いてプロットせよ。 具体的には配布資料70ページの図10のような分布図を描くためのファイルを生成するプログラムを作成せよ。 ただし、ファイルの名前をdis100.datにすること。 ただし、M=100と選び、ロジスティック写像の繰り返し回数は10000にすること。 [3] 環境 [3.1] OS: (Windows/Linux/等々) winxp [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) LSI C 86試食版 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 1週間後 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) gnuplotは自分でやるので、落ちる回数をカウントする辺りをお願いします。 分かりづらくてすみませんm(__)m
>>320 その前問の模範解答なり、あなたの解答なりはないの?
>>322 合ってるかわかりませんが、一応やったのは↓です。
#include <stdio.h>
main(){
int i,a[6],n,sum,k;
printf("1〜6の数字を入力\n");
for (k=0;k<6;k++){a[k]=0;}
sum = 0;
for (i=0;i<120;i++){ scanf("%d", &n);
if (n == 1){a[0] = a[0]+1;}
else if (n==2){a[1]=a[1]+1;}
else if (n==3){a[2]=a[2]+1;}
else if (n==4){a[3]=a[3]+1;}
else if (n==5){a[4]=a[4]+1;}
else {a[5]=a[5]+1;}
sum += n;}
for (k=0;k<6;k++){printf("number_%d=%d\n", (k+1),a[k]);}
printf("sum_number=%d\n", sum);
return 0;
}
>>320 >1〜6までの数字120個を可能な限りでたらめにキーボードから入力すると、20回の試行のうち
120回なのか20回なのかどっちだべ
325 :
デフォルトの名無しさん :2006/07/08(土) 04:02:25
[1] 授業単元:C言語演習 [2] 問題文(含コード&リンク):素数pを入力して、その位数を求めるプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 7/8 よろしくお願いします。
327 :
326 :2006/07/08(土) 04:36:52
あ、math.h いらねーんだった 消しといておくれ
328 :
デフォルトの名無しさん :2006/07/08(土) 09:09:41
93 :ひよこ名無しさん :2006/03/28(火) 02:03:32 0 別に竹石圭佑がゲイでもホモでもどーでもいいだろ。関わらずに無視すりゃ良いだけだし。 大体、ほっとけば勝手に犯罪起こして、また逮捕されて社会から消えるような野郎だしな。
>>324 すいません(^_^;A
120回です。
お願いします!
330 :
デフォルトの名無しさん :2006/07/08(土) 11:16:20
[1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク): 自然対数の底(e)を計算し表示するプログラムを作成せよ。 正規分布の確率密度関数に現れるeのことである。 eは次の式で計算できる。 e=1+1/1!+1/2!+1/3!+1/4!…… [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 今日2006/7/8 [5] その他の制限:等比数列の和を求めるプログラム↓を修正し作成 #include <stdio.h> main() { float sum=1, x=1; int i; for (i=1; i<10; i++){ x/=2; sum+=x; printf("%d %f\n", i, sum); } } おながいします
>>330 #include <stdio.h>
#include <math.h>
main()
{
float sum=0;
int i;
for (i=1; i<10; i++){
sum += 1/tgamma(i);
printf("%d %f\n", i, sum);
}
}
暇だから、HTTPプロキシ作ってみるかなぁ。 でもこのスレに少なくとも二人欲しい人がいるんだよなぁ。 同じ学校だったら困るよね?
>>333 全く問題ないです。作っていただいたのを参考に自分で考えて作り直しますから。
何せ授業でプロキシについて全く役立つ説明がなかったもので・・・。
助かります。よろしくお願いします。
ふんふん。 じゃ、明日の夜までを目処に、forkパターンで作ってみる。
337 :
ラムちゃん :2006/07/08(土) 13:52:31
[1] C言語と数値計算法 [2] 問題文:5名分3教科のテスト結果が5×3の配列に入っているとき、 各教科ごとに点数の高い順に並び替えた配列を出力する関数とmain関数を作成せよ [3] 環境 [3.1] OS:windows [3.2] visual studio 2003 [4] 期限:7月14日 [5] 次の例文を参考に 5名分の英語、数学、国語の3教科のテスト結果が5×3の配列に入っている。 各教科の平均点を求めるための関数を、配列へのポインタを引数として作成する。 include<stdio.h> void get_ave(float *score, float *ave); void main(void){ float result[5][3] = {{50,65,45},{77,80,90},{30,40,50},{75,92,80},{65,69,90}}; /* 点数の5×3配列 */ float average[3]; /* 平均点の配列 */ get_ave(&result[0][0], average); /* ポインタ渡しで関数呼び出し */ printf("Average is %4.1f(Eng), %4.1f(Math), %4.1f(Jap)\n",average[0],average[1],average[2]); } void get_ave(float *score, float *ave) /* 関数本体 (引数はポインタ) */ { int i,j; float total[3]; for(i = 0; i < 3; ++i){ total[i] = 0.0; /* 配列total[3]の初期化 */ for(j = 0; j < 5; ++j) total[i] += *(score + 3*j + i); /* 各教科の合計点算出 */ } for(i = 0; i < 3; ++i) *(ave + i) = total[i] / 5.0; /* 各教科の平均点算出 */ } 大好きだっちゃ♪
338 :
333 :2006/07/08(土) 14:54:33
339 :
デフォルトの名無しさん :2006/07/08(土) 15:47:21
[1]プログラミング [2]チェスのナイト(knight)という駒は、将棋の桂馬の動きを4方向に拡張した下表のよう な動きができる。 m*nのマス目のチェス盤に対して解の求め方を、 1.出発点に戻らなくて良いので、全地点を巡回する 2.全地点を巡回してから出発点に戻る解を一つ求める 3.全地点を巡回してから出発点に戻る解を全て求める の順序で付け加えていき、プログラムを完成させなさい。 (ナイトのスタート地点はどこでもよいが、四隅のどこかにして おけばよい。 答えの表示は、m*nのマス目に訪問順番を書き込んだ形にせよ。) [3] [3.1]mac [3.2]gcc [3.3]C [4]7月11日 [5]ポインタは使わず お願いします
ナイトの動きは4方向ではなく、8方向あるが、それで解けばいいのか?
(桂馬+4)方向じゃね?
>>342 すまん 寝ぼけてた
(桂馬×4)方向 だな
>>338 ありがとうございます。その調子でお願いします。
345 :
333 :2006/07/08(土) 17:42:04
おそらくKeep-Aliveに対応しないと使い物にならない(テストすらできない) ことが判明したため、挫折 orz
M,N = 7,7 1 46 43 34 13 18 15 44 35 2 19 16 33 12 47 42 45 32 3 14 17 36 31 20 25 6 11 4 41 48 39 28 9 22 7 30 37 26 21 24 5 10 49 40 29 38 27 8 23 力技。 8x8でやろうとすると結構時間かかるな。 全パターン調査するなら、5x5くらいのサイズが適当か? でも、あんまり小さいと種発点に戻る解があるかどうか。 ちょっと風呂入ってくる。
n*mってことは汎用的につくれってことなのかのう ポインタなしだと、どうつくったらいいやら想像つかね
348 :
346 :2006/07/08(土) 18:07:58
>>346 を導いたソース
#include <stdio.h>
#define M 7
#define N 7
int matrix[M * N];
int next(int x, int y, int counter){
int index = x + y * M;
if(counter > M * N){
return 1;
}else if(x >= M || x < 0 || y >= N || y < 0 || matrix[index] != 0){
return 0;
}else{
static int d[][2] = {{2,1},{2,-1},{1,2},{1,-2},{-1,2},{-1,-2},{-2,1},{-2,-1}};
int i;
matrix[index] = counter;
for(i = 0 ; i < sizeof(d)/sizeof(d[0]); i++)
if(next(x + d[i][0], y + d[i][1], counter + 1)) return 1;
matrix[index] = 0;
return 0;
}
}
void print_matrix(void){
int i;
for(i = 0; i < N * M; i++){
printf("%2d", matrix[i]); putchar( i % M == M-1 ? '\n' : ' ' );
}
}
int main(){
if(next(0, 0, 1)) print_matrix();
else puts("impossible");
return 0;
>>347 まぁ、グローバルに配列でメモリをとっておけば、関数引数とかにポインタを使わずに書くことはできる。
もちろん、本質的にはポインタを使っていないとはいえないけど。
>>347 一次元配列を二次元配列に見立てればできる。
まあその場合でもarray[1024];とかとっとく必要があるが。
うーん、内部的にはそれでいいけど、 もしm,nをユーザーに選ばせるなら、 ポインタを使わずにどうやって入力さ せるかが悩みの種だなw
#include <stdio.h> #define M 6 #define N 5 int matrix[M * N]; void print_matrix(void){int i;for(i = 0; i < N * M; i++){printf("%2d%c", matrix[i], i % M == M-1 ? '\n' : ' ' );} void next(int x, int y, int counter){ int index = x + y * M; if(x >= M || x < 0 || y >= N || y < 0 || matrix[index] != 0) return; matrix[index] = counter; if(counter >= M * N){ static int n = 1; if((x==2 && y==1)||(x==1 && y==2)){ /* (0,0)へ回帰する解であるかどうかの判定 (全ての解を表示する場合、この判定をはずす)*/ printf("\n[%d]\n", n++); print_matrix(); /* exit(0); */ /* 最初の解だけでいい場合は、ここで終了 */ } }else{ static int d[][2] = {{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1}}; int i; for(i = 0 ; i < sizeof(d)/sizeof(d[0]); i++) next(x + d[i][0], y + d[i][1], counter + 1); } matrix[index] = 0; } int main(){ int x = 0, y = 0, n = 1; if(M == N){/* 正方形の場合、鏡面対称の解を除くために1手目を決めうちにする。*/ matrix[0] = 1; x = 2; y = 1; n++; } next(x, y, n); return 0; }
>>353 は、
>>339 への回答。
あと、コンパイルエラー。
print_matrix() の中の、for(..) { ← この中括弧削除してください。
5x5 だと、
全部で 152パターン (鏡面対称は除去)
一周して (0,0) へ戻ってくるパターンは無し。
6x5 だと、
全部で 4285パターン
一周して (0,0) へ戻ってくるのが 16パターン。
6x6だと、5分待っても処理が終わらないので中断した。
ちなみに、うちの環境は Pen||| 3GHz, メモリ1Gbyts;
355 :
1234 ◆bUBxjLJPpU :2006/07/09(日) 00:09:01
おねがいします [1]プログラミング基礎 [2]文字列に暗号をかける関数encode(a,b)と、暗号文を元に戻す関数decode(c,d)を作ってみましょう。 ただし、aとdは平文、bとcは暗号化された文字列です。本格的な暗号文は難しいので、 ここでは「文字コードに1を加える」という方法でいいことにします。 これでも、ちょっと見た目には暗号らしくなります。元に戻すには1を引けば良いわけですね。 さらに、学校ではこの課題に追加して→最大50字までの文字列について暗号化と復元が可能となるようにせよ。 main()の中でキーボードから元の文字列を読み込み、それを標準出力へ表示するとともに、 暗号化した結果の文字列も表示して、暗号化が指定どおり行われているか容易に確認できるようにせよ [3]環境 [3.1]windows xp [3.2]Microsoft visual c++ 6.0 [3.3]C++ [4]7月11日まで [5]基礎的な内容を習っています。標準ライブラリ、というものは知りません あと制限ではありませんが、最初の4行の問題文はサイエンス社、ザ・Cの210ページにあります。
>>355 適当だけど
#include <iostream>
using namespace std;
#define LIMIT_NUM 50
void encode(char s1[], char s2[]){
int i = 0;
while(s1[i]){
s2[i] = s1[i] + 1;
i++;
if (i >= LIMIT_NUM) break;
}
s2[i] = '\0';
}
void decode(char s1[], char s2[]){
int i = 0;
while(s1[i]){
s2[i] = s1[i] - 1;
i++;
if (i >= LIMIT_NUM) break;
}
s2[i] = '\0';
}
int main(){
char str1[250], str2[LIMIT_NUM+1], str3[LIMIT_NUM+1];
cin >> str1; cout << "\n元の文字列\n" << str1 << "\n\n";
encode(str1, str2); cout << "暗号化された文字列\n"<< str2 << "\n\n";
decode(str2, str3); cout << "復元した文字列\n" << str3 << "\n";
return 0;
}
357 :
デフォルトの名無しさん :2006/07/09(日) 01:31:41
[1] C言語と数値計算法 [2] 問題文:5名分3教科のテスト結果が5×3の配列に入っているとき、 各教科ごとに点数の高い順に並び替えた配列を出力する関数とmain関数を作成せよ [3] 環境 [3.1] OS:windows [3.2] visual studio 2003 [4] 期限:7月14日 [5] 次の例文を参考に 5名分の英語、数学、国語の3教科のテスト結果が5×3の配列に入っている。 各教科の平均点を求めるための関数を、配列へのポインタを引数として作成する。 include<stdio.h> void get_ave(float *score, float *ave); void main(void){ float result[5][3] = {{50,65,45},{77,80,90},{30,40,50},{75,92,80},{65,69,90}}; /* 点数の5×3配列 */ float average[3]; /* 平均点の配列 */ get_ave(&result[0][0], average); /* ポインタ渡しで関数呼び出し */ printf("Average is %4.1f(Eng), %4.1f(Math), %4.1f(Jap)\n",average[0],average[1],average[2]); } void get_ave(float *score, float *ave) /* 関数本体 (引数はポインタ) */ { int i,j; float total[3]; for(i = 0; i < 3; ++i){ total[i] = 0.0; /* 配列total[3]の初期化 */ for(j = 0; j < 5; ++j) total[i] += *(score + 3*j + i); /* 各教科の合計点算出 */ } for(i = 0; i < 3; ++i) *(ave + i) = total[i] / 5.0; /* 各教科の平均点算出 */ }
qsort使っていいの?
これは最悪だな void encode(char a[], char b[]) { int i = 0; while(a[i] != NULL) { ++a[i++]; } b = a; }
361 :
278 :2006/07/09(日) 02:04:10
どなたか
>>278 をお願いします・・・
月曜日まででかまいません
>>360 最悪なんだ・・・、そういうコードは趣味の中では良く書いてます orz
XOR使えばエンコードとデコードは同じ関数でよくね?
364 :
デフォルトの名無しさん :2006/07/09(日) 02:32:14
>>361 橋を求めるアルゴリズムは分る?
O(E)ですべて求められるらしいけど、私は知らないので
遅いアルゴリズム(O(VE))になってしまう。
1] プログラム [2] 以下のCプログラムは、あなたが使っているPCのCPUがBig EndianかLittle Endianかを判定するものです。 if文の条件部を埋めてプログラムを完成させてください。 main() { long data = 0x00000001; if ( ) printf("Big Endian\n"); else printf("Little Endian\n"); } [ 3] 環境 [3.1] WindowsXP [3.2] gcc [3.3] C [4] 明日 [5] 単位ギリギリだったんでバイトオーダーとかバイナリとかわけがわかりません・・・。 どうか御願いします。
>>365 *((char *)(&data)) == 0x00
助かりました('∀`) 有難う御座います。
long って1byteより大きいことって保証されてた?
369 :
デフォルトの名無しさん :2006/07/09(日) 04:29:47
1バイト≦char≦short≦int≦long ちょっと微妙だね。
1バイト=char=short=int=long=32ビット がありえるはず。
char は 1byte 固定じゃなかった?
>>361 やろうと思ったけど、自分の知ってるフラーリーのアルゴリズムと違っていたのでやめた。
373 :
デフォルトの名無しさん :2006/07/09(日) 05:05:33
まちがってるよね そのふらーりーあるごりずむ
374 :
デフォルトの名無しさん :2006/07/09(日) 10:14:09
クックルのくちばし。 じゃなくて集合の要素である。
376 :
278 :2006/07/09(日) 10:52:47
>>364 すみませんわかりません・・・。
遅くても全然かまいません。
>>372 授業で習ったのはこれなんですが、特にこの通りにやる必要は
ないので、お願いします。
ειναι
378 :
1234 ◆bUBxjLJPpU :2006/07/09(日) 11:39:56
>>355 を作ってくれた方ありがとうございます。助かりますた!
>>365 環境条件から考えるとif文の条件部に入れるべきは0だろ
>>369 >>371 が指摘したように
1バイト=char≦short≦int≦long
だったと思う
したがって
>>370 の言うようなlongに至るまで全て1バイトの場合も……
それどころか1バイト=1オクテットとかさえ
380 :
379 :2006/07/09(日) 12:12:29
あー、間違い 「したがって」は余計だった もし 1バイト≦char≦short≦int≦long だったとしてもそうなるね
処理系での1バイトがcharと等しいかどうかはわからんでしょ。 sizeof(char)は常に1を返すけど。
LONG_MAXの最小値が規定されている関係で、longは少なくとも32ビットだったと思う。
CHAR_BITS == 32と言うことも論理的には有り得る。
384 :
デフォルトの名無しさん :2006/07/09(日) 12:57:53
C++builderで点を左から右に移動させるだけの簡単なプログラムの作り方教えてください
暑くなると頭のおかしいのが出てくるね
あ、ほんとだ 標準C規格だとlongの幅は最低限32ビットあるね longが1オクテットというのは少なくとも標準規格ではありえないのか
>>384 int main(void){
int x=100,dx=10;
x+=dx;
return 0;
}
388 :
デフォルトの名無しさん :2006/07/09(日) 15:43:24
>>387 つづき
/*
これは C++builder でのみ使用してください!!!!!!!!!!!
*/
389 :
389 ◆VJk5KzZ21U :2006/07/09(日) 15:59:17
[1] C言語 [2] 10個の数字を入力して、最小値を返すというものです 仕様は以下なのですが、どうか宜しくお願いします。 ●main 関数 1. 要素数10個のint型配列data を宣言する 2. 繰り返しを用いて配列に10個のデータを入力する 3. getmin を用いて最小値を求め、int型ポインタ変数pos に代入する 4. pos が参照する位置の値を表示する ●getmin 関数 1. 第1引数(int型ポインタ)・ ・ ・ データが格納されている配列の先頭アドレス 2. 第2引数(int型)・ ・ ・ データの個数 3. 戻値(int型ポインタ)・ ・ ・ 最小値が格納されている要素のポインタ 4. 配列の最小値の位置を求める [3] WinXP、MS Visual Studio 2005 Version 8.0.50727.42 (RTM.050727-4200) Microsoft Visual C++ 2005 77972-233-0252147-41762 [4] 期限は今夜10時頃です [5] ポインタが理解出来なくて躓いています・・・orz
>>389 # include <stdio.h>
int *getmin(int *a, int n)
{
int min = a[0];
int *minptr = a;
int i;
for(i = 0; i < n; i++)
if(a[i] < min)
{
min = a[i];
minptr = &a[i];
}
return minptr;
}
int main(void)
{
int data[10];
int i;
int *pos;
for(i = 0; i < 10; i++)
{
printf("input: ");
scanf("%d", &data[i]);
}
pos = getmin(data, 10);
printf("min: %d\n", *pos);
return 0;
}
>390 おお、どうも有難う御座いました! 何とかポインタを理解できるよう頑張ります。
[1] 授業単元:合成、フレンド [2] 問題文(含コード&リンク): 以下のような制度を持つ学習塾に通学する学生の成績管理プログラムを作成する。 ・すべての学生が英語、国語、数学、社会、理科の5教科を受講する。 ・すべての学生は受講科目の試験を受ける。 ・5教科の総合得点が最も高かった学生に100万円の奨学金が支給される。 ・5教科の総合得点が450点以上の学生には報奨金として各1万円、400点以上の学生には各5000円が支給される。 (奨学金とは別に支給される) ・試験の結果は、以下の一覧を作成し、コンソールに表示する。 ・学生別科目別の得点と、各学生の総合得点および平均点、報奨金の一覧 ・科目別の平均と標準偏差 ・奨学金資金の学生の、氏名と総合得点および平均点 ・過去の試験結果については、考慮する必要はない。 ・学生は最大で100名入力できるようにする。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++ [4] 期限: 7月12日まで [5] その他の制限:クラスなどを使って、変更に強い仕様に。 自分でやってたら途中からこんがらがってきて・・。よろしくお願いします。
394 :
デフォルトの名無しさん :2006/07/09(日) 20:30:53
>>393 >・5教科の総合得点が最も高かった学生に100万円の奨学金が支給される。
同得点の場合が不明
395 :
デフォルトの名無しさん :2006/07/09(日) 21:07:18
>>395 int modpow(int a, int n, int p)
{
int m = 1;
for( int flag = 1 << 30 ; flag ; flag >>= 1 ) {
m = (m * m) % p;
if( flag & n ) m = (m * a) % p;
}
return m;
}
32bit符号付き整数限定。これで2^16=65536まではOKなはず。
使い方は
-a = pow(i,(p-1));
+a = modpow(i,(p-1),p);
397 :
デフォルトの名無しさん :2006/07/09(日) 21:41:36
[1] 授業単元:プログラミング言語 [2] 問題文(含コード&リンク): データを圧縮するプログラムを作成する.一般に,バイナリデータ(0か1で構成されたデータ)では,1や0が連続して出現する傾向がある. ここに注目してデータの量を減らす方法がある. たとえば,1111のように1が4つ連続して出現した場合,14のように表す. 同様に, 00000のように0が5つ連続して出現した場合,05のように表す. 例えば,111100000(計9文字)のようなデータは,1405 (4文字)と表されるので, 同じデータを少ない文字数で表すことができる. # プログラム名をcompressとする # 圧縮ファイル名をcompress.datとする [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 明日 お願いします。
あっ、、あー
400 :
デフォルトの名無しさん :2006/07/09(日) 22:15:22
>>396 すいません、何をしているのかよくわかりません。
int modpow(int a, int n, int p)なんですが、
aとnの引数をどんな値にしても、pへの引数がそのまま返されてしまいます。
例えば、p=3としたとき、
for(i=0;i<p;i++)
{
a = (i,(p-1),p);
printf("%d\n",a);
}
こうすると、3しか出力されないのですが。
使い方がおかしいのでしょうか?
401 :
デフォルトの名無しさん :2006/07/09(日) 22:25:29
>>400 そんなこというからプログラム組んで確認したじゃないか。
使い方が間違ってるはず。こっちではちゃんとでた。
そういや、微妙にC++方式使ってたのでその点だけ訂正。
-int m = 1;
-for( int flag = 1 << 30 ; flag ; flag >>= 1 ) {
+int m = 1, flag;
+for( flag = 1 << 30 ; flag ; flag >>= 1 ) {
403 :
デフォルトの名無しさん :2006/07/09(日) 22:31:12
>>402 本当に申し訳ございませんが、使い方がわかりません。
頭の-や+って何なのでしょうか?
こんなの初めて見るので・・
ヒント:- 削除、+ 追加
[1] 授業単元:オペレーションシステム [2] 問題文(含コード&リンク):Linux のコマンドを一つとりあげ,同様の動作をするプログラムを作成せよ. 簡略化された機能の実装や授業でとりあげたコマンドの改良でも構わない.システムコールは必ず使用すること. コマンド概要とプログラムについて説明すること. また,そのコマンドを実行するときに,OSがどのような処理を行い, 資源をどのように操作しているのか,具体的に説明せよ. 管理しているデータやどのような契機で動作するかなどについて記述することが具体的な説明となる. [3] 環境 [3.1] OS: WindowsXP Home.E [3.2] コンパイラ名とバージョン: Visual Studio C++ 6.0 [3.3] 言語: C++ [4] 期限: 2006/07/10/09:00 明日の朝ですorz ほんと放置しすぎでテンパリまくりです。留年かかってるのでどうか助けてやってくださいorz
406 :
405 :2006/07/09(日) 22:54:25
すいません。 誤 [3.2] コンパイラ名とバージョン: Visual Studio C++ 6.0 正 [3.2] gcc でした;;
>>400 for(i=0;i<p;i++)
{
a = (i,(p-1),p); // 関数名が無い。この「式」ではpが返ってくるのは当たり前。
printf("%d\n",a);
}
>>405 cat.cとかで検索したらソース転がってるべ
410 :
278 :2006/07/10(月) 00:19:33
>>278 をどなたかお願いいたします・・・。
火曜日まででけっこうです。
フラーリーのアルゴリズムは、違うやり方があればそれでもかまいません。
411 :
デフォルトの名無しさん :2006/07/10(月) 00:36:45
#ifndef DELETE #define DELETE(x);{ if( x != NULL ){ delete x; }x = NULL; }// C++スタイルのメモリ解放 #endif をグローバルで宣言して使ったらerror C2064: 1 引数を取り込む関数には評価されません。 とでました何がおかしいですか?
412 :
405 :2006/07/10(月) 00:49:07
>>407 すいません…Linuxですね。ちなみにRed Hutです。
>>409 それっぽいファイル名を適当に入れて検索かけてみます。
ただ当方Cを習い初めで「猫でもわかるC言語」を読み通した程度の知識しかなく、
関数なども調べながらなのでなかなか難しい現状ですorz
>>412 んじゃ、これで
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *fp;
int c;
if( argc > 1 ){
fp = fopen(argv[1], "r");
if( fp ){
while( (c = fgetc(fp)) != EOF )
putchar(c);
}
}
return 0;
}
>>411 >グローバルで宣言
この時点でおかしいわけだが
マクロを使用している部分のソースも欲しいところ
>>405 > [3.3] 言語: C++
>当方Cを習い初めで「猫でもわかるC言語」を読み通した程度の知識しかなく、
ォィ
418 :
405 :2006/07/10(月) 01:45:26
すいません…。
正しくは、
[1] 授業単元:オペレーションシステム
[2] 問題文(含コード&リンク):Linux のコマンドを一つとりあげ,同様の動作をするプログラムを作成せよ.
簡略化された機能の実装や授業でとりあげたコマンドの改良でも構わない.システムコールは必ず使用すること.
コマンド概要とプログラムについて説明すること.
また,そのコマンドを実行するときに,OSがどのような処理を行い,
資源をどのように操作しているのか,具体的に説明せよ.
管理しているデータやどのような契機で動作するかなどについて記述することが具体的な説明となる.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006/07/10/09:00 明日の朝ですorz
[5] その他の制限:「猫でも分かるC言語プログラミング」を一読した程度の知識。
だと思います;;
課題はLinuxで動くということなのですが自宅にはWindowsパソコンしかなく、
Visual Studio C++ 6.0 でソースを作成して明日の朝大学で動作確認しようと思い、
上記のような書き込みミスをしてしまいました。
>>416 CとC++の違いを未だ理解しておらず…すみません。
VS C++ 6.0 で、と思ってたのでC++と書き込みました。
>>418 Windows しかないなら、 Cygwin をインストールした方がいいよ。
421 :
405 :2006/07/10(月) 02:29:29
>>419 情報ありがとうございます。
調べてみます。
>>414 遅れましたがありがとうございます。
自分なりにこのソースを行ごとに考えてみたのですが、
L4の int c;
はchar型じゃないのかと思ったのですがintで合ってるのでしょうか?
失礼でしたらスミマセン;;
>>420 OSの仕組みを学ぶということで
「オペレーティングシステムの役割と構成,動作原理等について学び,
オペレーティング・システムの全体像を理解することを目的とする。」
とシラバスにはあります。
422 :
420 :2006/07/10(月) 02:33:51
とまあ、これだけじゃなんなので、system callを使ったcatを書いてみた。 この程度のコードで十分なのかどうなのか不明だけど。 じゃ頑張って。俺寝るから。 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <errno.h> int main(int argc, char* argv[]) { int fd; size_t size; char buf[128]; if (argc == 1) { fd = STDIN_FILENO; } else { fd = open(argv[1], O_RDONLY); if (fd == -1) { sprintf(buf, "file open error(%d)\n", errno); write(STDERR_FILENO, buf, strlen(buf)); return 1; } } while ((size = read(fd, buf, 1)) > 0) { write(STDOUT_FILENO, buf, 1); } close(fd); return 0; }
>>421 EOF受け取る必要があるので、intでおk
むしろcharだとここのみんなからぼっこぼこですお
あとシステムコール使用必須だったのね、読んでなかったスマソ
424 :
420 :2006/07/10(月) 02:39:18
あ、そうそう、 mycat foo.txt(ファイルをオープンして読み書きするパターン) ls | mycat(パイプで結合された標準入力から読み込むパターン) mycat < foo.txt(標準入力をリダイレクトされたパターン) mycat(端末の標準入力から読み込むパターン) あたりに関して説明するといいかもよ。 じゃ寝る。
>fgetc() は stream から次の文字を unsigned char として読み int にキャストして返す。 (;・∀・) シランカッタ
426 :
405 :2006/07/10(月) 02:57:47
>>421 なるほど。
>>425 のような仕様によりこれで良かったのですね。
ありがとうございます。
>>422 >>424 何から何まで…どうもです゚・(ノД`)・゚・
このソースに僕自身がやや追いついていない感がありますが頑張って一行一行咀嚼しながらレポ書きます(`・ω・´)
よくよく考えたら
>>305 はn-1Cr-1+n-1Crを使ってnとrを引いていって
n=r,r=0,r=1の条件で再帰を止めてnか1を戻して足していくようにするんだったんだね・・・
答えた後になって気づいたが、今からじゃもう遅いか・・・
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { double x,y; char buf[1024]; do { printf("実数1を入力してちょ: "); fgets(buf,1024,stdin); }while((sscanf(buf,"%lf",&x))!=1); do { printf("実数2を入力してちょ: "); fgets(buf,1024,stdin); }while((sscanf(buf,"%lf",&y))!=1); printf("和: %lf\n",x+y); printf("差: %lf\n",x-y); printf("積: %lf\n",x*y); printf("商: %lf\n",x/y); system("PAUSE"); return 0; } 値はscanf()で文字列として取り込み、 atof()で実数に変換するにはどうすればいいですか?
キチガイが現れた。 各自臨戦態勢へ移行せよ。
[1] 授業単元: [2] 問題文(含コード&リンク): 座標(50,50)(200,200)からその2点を結ぶ線分を求め、 (60,60)(70,70)と10刻みで点を表示したいのですが、 こういう関数を作る公式?が思い浮かびません。 なお、2点の座標は可変です。 (30,30)(60,120)の時の場合を考えて見ます。この時は (40,60)(50,90)(60,120)という3点を求められれば正解です。 つまり、x座標に対し10刻みにyの値を求めるような関数です。 [3] 環境 [3.1] OS: (Windows/Linux/等々) linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc4.0 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限:無期限 [5] その他の制限:とくになし 分かりづらい説明で申し訳ありませんが、出来そうな方よろしくお願いします。 仕様が曖昧な為、正確でなくても構いません。似たような処理が完成している ものであれば問題はないのです…
>>430 高校でやった直線の方程式のベクトル表示なんだけど。
>>430 あまり自信がないが。
# include <stdio.h>
int get_coord(int *x, int *y)
{
char line[100];
printf("Input coordinate: ");
fgets(line, 100, stdin);
if(sscanf(line, "(%d,%d)", x, y) != 2)
{
printf("Bad input\n");
return -1;
}
return 0;
}
int main(void)
{
int x0, x1, y0, y1;
int x;
if(get_coord(&x0, &y0) < 0 || get_coord(&x1, &y1))
return 1;
for(x = x0 + 10; x <= x1; x += 10)
{
int y = y0 + (y1 - y0) * (x - x0) / (x1 - x0);
printf("(%d,%d)\n", x, y);
}
return 0;
}
433 :
432 :2006/07/10(月) 12:00:59
> if(get_coord(&x0, &y0) < 0 || get_coord(&x1, &y1)) これでも正しいけど、どうせならこっちで。 > if(get_coord(&x0, &y0) < 0 || get_coord(&x1, &y1) < 0)
おぉ…すばらしい(ノ・ω・)ノ
Input coordinate: (20,40)
Input coordinate: (120,75)
と入力すると、
(30,43)
(40,47)... のようにズラズラーっと表示されました。
まさに期待したとおりの公式です。
int y = y0 + (y1 - y0) * (x - x0) / (x1 - x0);
ここの部分がミソですね!数学がさっぱりな僕にはこういうのが
スラスラっと出来る人がうらやましス もっと時間が掛かると思って
いたのですが(; ̄ー ̄)
>>432-433 ありがとうございました。
直線をドット打ちで引くプログラムを昔作ったの思い出した。
436 :
デフォルトの名無しさん :2006/07/10(月) 14:08:07
[1] 授業単元:C言語入門 [2] 問題文:120人分のテストの点数を10点記刻みのヒストグラムで表示せよ。 *により1人を表現して横向きのグラフとすること。また120人のテストの点はrandom関数を利用せよ [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン:BCC1.2.21 [3.3] 言語: Cのみ [4] 期限: 今週中でお願いします。 [5] その他の制限:if,for,while,do whileを習い今回はarrayの学習です。 誰か助けてください‥。お願いします
100点満点のテスト? 0点と100点はどう扱えばいいの?
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void){ int array[120], i, j; srand((unsigned)time(NULL)); for (i = 0; i < 120; i++){ array[i] = rand() % 101; printf("%3d:%3d点 ", i+1, array[i]); for (j = 0; j < array[i] / 10; j++) putchar('*'); printf("\n"); } return 0; }
#include <stdio.h> #include <stdlib.h> #include <time.h> void print_bar(int n){while(n--)putchar('*');putchar('\n');} int main(){ int a[120],b[11]={0},i,j; srand(time(NULL)); for(i=0;i<sizeof(a)/sizeof(a[0]);i++)a[i]=rand()%101; for(i=0;i<sizeof(a)/sizeof(a[0]);i++)b[a[i]/10]++; for(i=0;i<sizeof(b)/sizeof(b[0])-1;i++){ printf("%3d-%3d : ", i*10, i*10+9); print_bar(b[i]); } printf("100 : "); print_bar(b[i]); return 0; }
440 :
438 :2006/07/10(月) 14:58:01
442 :
436 :2006/07/10(月) 15:33:35
>437さん 100点満点です。点の区切りは0〜9、90〜100です。 >439さん。 ありがとうございます。でもちょっと高度すぎて怪しまれます(;^_^ もう少し幼稚なプログラムにしていただけないでしょうか?ごめんなさいm(_ _)m
443 :
@ :2006/07/10(月) 15:47:18
[1] 授業単元:C言語入門 [2] 問題文:つぎの問題のプログラムについて、各自気になった点を具体的に指摘せよ 問2次方程式ax2+bx+c=0 の解を求めるプログラム.ただし,プログラムは,main()に加えて次の4関数で構成されるものとします. 判別式を計算する関数(戻り値なしの型で,参照渡しによって引数を与えること). 判別式が0 の場合の解を計算する関数(戻り値ありの型で,解はmain()で出力させる.参照渡しによって引数を与えること). 判別式が正の場合の解を計算する関数(戻り値なしの型で,解はmain()で出力させる.参照渡しによって引数を与えること). 判別式が負の場合,「解無し」と表示する関数. ソース #include <stdio.h> #include <math.h> void func_discri(double *array, double *d_value); double zero_case(double *array); void positive_case(double *array, double *d_valuei, double *ans1, double *ans2); void negative_case(void); int main(void){ double coef_arr[3], v_discri, sol1, sol2; printf("Please input coefficients!"); printf("\na="); scanf("%lf", coef_arr); printf("b="); scanf("%lf", coef_arr+1); printf("c="); scanf("%lf", coef_arr+2); printf("Solutions of (%f)*x^2+(%f)*x+(%f) are calculated.\n", coef_arr[0], coef_arr[1], coef_arr[2]); func_discri(coef_arr, &v_discri); if (!v_discri) printf("Single solution: x=%.4f\n",zero_case(coef_arr)); else if (v_discri>0) { positive_case(coef_arr, &v_discri, &sol1,&sol2); printf("Double solutions\n\tFirst solution: x=%.4f\n", sol1); printf("\tSecond solution: x=%.4f\n",sol2); } else negative_case(); return 0; }
444 :
A :2006/07/10(月) 15:49:16
void func_discri(double *array, double *d_value){ *d_value=array[1]*array[1]-4*array[0]*array[2];} double zero_case(double *array){ return (-1)*array[1]/(2*array[0]);} void positive_case(double *array, double *d_valuei, double *ans1, double *ans2){ *ans1=((-1)*array[1]+sqrt(*d_valuei))/(2*array[0]); *ans2=((-1)*array[1]-sqrt(*d_valuei))/(2*array[0]);} void negative_case(void){ printf("No solutions due to negative discriminant value!\n");} [3] 環境 [3.1] OS: linux[3.2] コンパイラ名とバージョン:gcc[3.3] 言語: C[4] 期限: 7/12
// マジックナンバーだらけにしただけで幼稚かどうかは知らんが題意にあわせてみた #include <stdio.h> #include <stdlib.h> void print_rank(int st, int ed, int n) { printf("%3d - %3d:%3d:", st, ed, n); for (int ic = 0; ic < n; ++ic) { putchar('*'); } putchar('\n'); } int main() { int rank[11]={0}; for (int ic = 0; ic < 120; ++ic) { ++rank[(rand() % 101) / 10]; } for (int ic = 0; ic < 9; ++ic) { print_rank(ic * 10, ic * 10 + 9, rank[ic]); } print_rank(9 * 10, 9 * 10 + 10, rank[9] + rank[9 + 1]); return 0; }
447 :
デフォルトの名無しさん :2006/07/10(月) 17:56:12
[1]授業単元;IT入門 [2]問題文:No.2311 [3]環境 [3.1]OS:(Linux) [3.2]コンパイラ名とバージョン:(gcc3.4) [3.3]言語:C [4]期限:今日 [5]その他の制限:構造体まで一通り習いました。 よくわからないので、ご協力お願いします。助けてください。
無意味な自己主張うざ。
453 :
397 :2006/07/10(月) 18:44:26
397に書き込んだ者です。 もしわかる方いらっしゃったらお願いします。
454 :
9 :2006/07/10(月) 19:01:54
>272 意見ありがとうございます。
>>453 01は文字列で出力すればいいの?(´・ω・`)
457 :
397 :2006/07/10(月) 19:54:49
>>456 はい、文字列だと思います。実行例があったのでのせときます。 [xxxxxxxx]%cat compress.dat 1011111000010111100 [xxxxxxxx]%./compress 1101150411011402
458 :
デフォルトの名無しさん :2006/07/10(月) 19:55:21
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 2つの整数をキーボードから入力し, 大きい方を表示するプログラムを関数を用いて作って下さい。 [3] 環境 [3.1] OS: リナックス [3.2] コンパイラ名とバージョン: (gcc [3.3] 言語: (C [4] 期限: 明日 [5] その他の制限: 整数型引数が2つ,返り値が整数型の Int max_out(int a, int b){} 関数を作り,main()関数から呼びだす。
>>455 例えば、レコード番号1を指定したはずが番号3のが表示されるってのがまずいってことでいいの?
それなら point_line() の for 文のとこを for(i = 1; i < recno; i++) に
どなたか317をお願いできないでしょうか?
>>459 それでも、レコードを7個入力すると、どの番号を指定してもエラーになりますが。
[1]授業単元;IT入門 [2]問題文:二次方程式ax²+bx+c=0の係数a,b,cを入力し、 実数解、重解、虚数解にわけて解を求め表示するプログラムを作成せよ。 ただし「a≠0とする。 [3]環境 [3.1]OS:Windows XP [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C [4]期限:7/11 [5]その他の制限:特にないです
>>461 7個とはまた妙なバグを・・・と思ったら free_line() がバグってるだけじゃまいか
p = w->pnext; を p = w; に
464 :
462 :2006/07/10(月) 20:54:40
あ、授業単元は「IT入門」というものではありませんでした。
直前にあった
>>447 さんのものをコピペして参考に使わせてもらったのですが
そこを直し忘れました。授業単元は「プログラミング言語」です。
よろしくお願いします。
>>458 int max_out(int a,int b)
{
return a>b ?a :b;
}
ところで、Forum and Sourcepostって何? 初めて見たんだけど。
>>465 解ごとに実数解、虚数解、重解全部ちゃんと動作しました。
うpろだでのテキストアップでTABキーもつぶれていなく見やすくて、
コメントアウトもあって非常に流れがわかりやすかったです。
こんなに早くわかりやすく やってくださってありがとうございました!
471 :
デフォルトの名無しさん :2006/07/10(月) 21:51:22
[1] 授業単元:プログラム [2] 問題文(含コード&リンク):関数function()を使って, Main 1 Function 1 Main 2 Function 2 Main 3 Function 3 と表示するプログラムを作って下さい。 数字も正確に出力すること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: (gcc [3.3] 言語: c [4] 期限: 明日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ナシ
472 :
デフォルトの名無しさん :2006/07/10(月) 22:02:27
関数 function() って何?
473 :
デフォルトの名無しさん :2006/07/10(月) 22:03:46
>>471 ここはCかC++の宿題用だよ。
c なんて言語はスレ違い。
>>471 #include <stdio.h>
void function(int a);
main() {int i;
for(i=1; i<=3; i++) {printf("Main %d\n",i);function(i);}}
void function(int a) {printf("Function %d\n",a);}
#include <stdio.h> void function(int n){ printf("Function %d\n", n); } void main(void){ int i; void (*func_p)(int) = function; for(i=1;i<=3;i++){ printf("Main %d\n", i); (*func_p)(i); } }
476 :
デフォルトの名無しさん :2006/07/10(月) 23:00:06
[1] 授業単元:基礎プログラム2 [2] 問題文(含コード&リンク): 配列の加算 main関数で3つの配列array1[n],array2[n]とresult[n]を宣言、初期化する。array1とarray2における同一添え字 の要素の値を加算した結果をresultにある当該添え字の要素に格納する関数void add_array(int n,int array1[],int array2[],int result[])を作成せよ。 ただし、main関数の最後でresultの各要素の値を表示させること。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語: C [4]期限:明日の13時まで。 お願いします。
固定文だからputsでよくね? #include <stdio.h> int function(void){return puts("Main 1 \nFunction 1 \nMain 2 \nFunction 2 \nMain 3 \nFunction 3");} int main(void){return function();}
>>397 #include <stdio.h>
int main(void){
int c1,c2,n;
n = 1;
c1 = getchar(); /*1文字目ゲット*/
while(EOF != (c2 = getchar())){ /*文字列の最後に改行があることに注意*/
if(c1 == c2){ /*同じならばカウント*/
n++;
if(n==10){ /*9文字越えたら分割*/
printf("%c%c",c1,'9');
n=1;
}
}
else{ /*違ったら出力*/
printf("%c%c",c1,'0' + n);
n = 1;
c1 = c2;
}
}
printf("\n");
return 0;
}
>>455 if文から != (LIST *)NULL を省略すると
警告 W8060 ensyu.c 108: おそらく不正な代入(関数 disp_now )
になるのは何故でしょうか?省略できるはずですが。
>>479 当たり前だろ
不正かどうかはともかくなんで代入式をまんまif文の中に書いてんだよ
これはmallocがメモリ確保できたどうかを判断するためにNULLチェックしてるんだろ多分
そうでなきゃifの括弧内に書くな
朝鮮語でおk
while((c=getchar())!=EOF)とかは書いちゃだめですか
>>479 暴れられてもぬるぽなのでマジレス
警告はコンパイラがそれっぽいっていう文に対して出すだけなので実際に間違ってるか否かは場合による
この場合、文法的には問題はねーし gcc だと警告も出なかったりする
気になるなら警告レベルを下げてみれ
だから最終的に真偽式にしろってことだ
なんで簡単にはっきりと書かないのかわけわからん。 コンパイラが代入式に警告を出すようになったのは'=='のつもりで '='と書いてしまうのを防ぐため。デフォルトで出すか出さないかは コンパイラによる。
487 :
397 :2006/07/11(火) 00:19:24
>>478 ./compress のあとに圧縮ファイルがでてくるようにするにはプログラムに何をつけたせばいいのですか?
490 :
397 :2006/07/11(火) 01:07:21
>>489 すいませんリダイレクトって何ですか. . .?
[1] C言語入門 [2] scanf により10 個の3 桁の数をキー入力する。 この入力した整数の中で700 以上で 尚且つ偶数である数の個数を求めるプログラムを作成せよ。 ただし、if 文や、switch 文は用いてはならない。 ループも一回のみとする。また、3 桁か否かを判断する必要はないとする。 (ヒント:+= ????? * ( x / 700 ) ) (実行例) 下線部はキーボードより入力する。 整数を入力===>256 整数を入力===>189 整数を入力===>667 整数を入力===>328 整数を入力===>467 整数を入力===>980 整数を入力===>533 整数を入力===>315 整数を入力===>889 整数を入力===>662 700 以上の偶数は1 個です。 [3] 環境 [3.1] windowsXP [3.2] Visual Studio .NET2003 [3.3] C++ [4] 2006/07/11 つまり、今日です。 [5] 2重ループまで 制限に関しては上記の通り、if 文や、switch 文を使わない。 ループも一回のみとする。また、3 桁か否かを判断する必要はないとする。
>>491 for(i = 0; i < 10; i++){
scanf("%d", &x);
n += (!(x % 2)) * (x / 700);
}
493 :
デフォルトの名無しさん :2006/07/11(火) 02:38:03
>>492 ありがとう。
でもエラーでちゃいます・・
>>493 スマソ、インデントのために全角スペース入れてるという注意忘れてた
これを丸々コピペでどうか
#include <stdio.h>
int main(void)
{
int i, x, n;
n = 0;
for(i = 0; i < 10; i++){
printf("整数を入力===>");
scanf("%d", &x);
n += (!(x % 2)) * (x / 700);
}
printf("700以上の偶数は%d個です。", n);
return 0;
}
論理積を使ってみた #include <stdio.h> int main(void) { int i, x, n; n = 0; for(i = 0; i < 10; i++){ printf("整数を入力===>"); scanf("%d", &x); n += (!(x & 1)) * (x / 700); } printf("700以上の偶数は%d個です。", n); return 0; }
496 :
デフォルトの名無しさん :2006/07/11(火) 02:55:44
>>494 ありがとうございます。
理解しがたい部分もありますが、ノート見つつ理解していってみようと思います。
本当にありがとうございました。
497 :
デフォルトの名無しさん :2006/07/11(火) 03:50:39
[1]授業単元;プログラミング [2]問題文:配列に1〜16の数字を入れ、その中からランダムに 2つの数字を入れ替える。 さらに、その数字の間を全て逆順に入れ替え、出力するプログ ラムを作成せよ。 例えば、2と13が選ばれた場合、 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 ↓ 1,13,12,11,10,9,8,7,6,5,4,3,2,14,15,16 となるようにせよ。 [3]環境 [3.1]OS:Windows XP [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C [4]期限:7/11 よろしくお願いします。
499 :
デフォルトの名無しさん :2006/07/11(火) 07:16:05
500 :
デフォルトの名無しさん :2006/07/11(火) 10:11:06
C++でwaveformatについて詳しく書いてあるサイト知りませんか?
>>501 void count_list(LINK head)
{
static int count = 0;
if (head == NULL) printf("count = %d\n", count);
else {
count++;
count_list(head->next);
}
return;
}
>>501 こっちのほうがいいか。
void count_list(LINK head, int count)
{
if (head == NULL) printf("count = %d\n", count);
else {
count_list(head->next, count+1);
}
return;
}
呼び出しは
count_list(h, 0);
再帰ックフォース。
505 :
392 :2006/07/11(火) 20:28:53
どなたか解けませんか?
506 :
デフォルトの名無しさん :2006/07/11(火) 22:36:52
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 複素行列Aの一般化逆行列を求めよ ただし一般化逆行列とは次の4つの条件を満たすような行列Xのこと AXA=A, XAX=A, (AX)~*=AX, (XA)~*=XA A~*とはAの共役転置行列とする [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:Cのみ [4] 期限: ([2006年07月25日23:59まで) [5] その他の制限: なし [6コメント:頼む・・・ってこんなめんどくさいの誰もやってくれないかな? てか難しくない?俺の単位がかかってるのよ ネットでソース探したんだが、よくわからなかった
>>506 すんげー簡単そう
でも俺
って数
Cやっ
ないの
よね。
508 :
393 :2006/07/11(火) 22:46:48
>>394 返事送れてすいません・・(汗)。
最高得点の生徒が複数いた場合は、その全員に奨学金が支給される、ってコトでお願いします。
・・いや、実はその場合の指示がないんで、複数いる場合は想定しなくても良いです。
509 :
デフォルトの名無しさん :2006/07/11(火) 22:51:11
>507 くだらないレスしないでね
単位がかかってるとか言われるとネタに走りたくなるな
512 :
506 :2006/07/11(火) 23:21:21
ネタはやめてくれよw せっかく毎週授業に出たのに、結局成績は期末レポート重視 要はこの問題ができれば単位くれるのだが、、、、 っていうかやってくれるやつが居たら神だな・・・
513 :
デフォルトの名無しさん :2006/07/11(火) 23:26:41
[1]授業単元;情報活用基礎C [2]問題文;123...9の間に+か-をいくつか入れて、計算結果が100になるものをすべて求めるプログラム を作成せよ。たとえば、1+23-4+56+7+8+9はその解の一つである。 最初の1の前に-をつけることを許した場合と許さない場合について求めよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:Cのみ [4] 期限:明日の正午 [5] その他の制限:なし
>>506 A^TをAの転置行列として、一般化逆行列ってA^T * ( A * A^T )^-1でよかったっけ?
線形代数なんてもう忘却の彼方なので、複素行列の場合に成立したか自信ない
515 :
デフォルトの名無しさん :2006/07/11(火) 23:34:14
[1]授業単元:情報活用基礎C [2]問題文:キーボードから順次入力された正の整数を0が入力 されるまで、配列に順番に格納し、入力された(0を除く)値の平均値(実数として扱うこと)にもっとも近い値(平均との差が最小 になる値)が何番目に入力されたどういう値であるかを表示するプログラムを作成せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:明日の正午 [5] その他の制限:なし
516 :
506 :2006/07/12(水) 00:04:10
>514 すまない 質問しておきながら、実はよくわかっていない そういう式から導けるのかな・・・ 4つの条件式から連立方程式を作って解いていくのかと思っていた でもそれだと二次関数になるしな もしかしたら考えてくれる人がいるかもだし、明日の朝図書館で調べてくる
517 :
332 :2006/07/12(水) 00:18:30
どなたか、
>>332 を教えて下さい。
とりあえず、1のAと2のC、3のBだけでも良いので、お願いします。
519 :
518 :2006/07/12(水) 00:21:59
>int add(int x, int y) { return x + y; } >int sub(int x, int y) { return x - y; } 消し忘れでした。
[1] 授業単元:情報処理基礎演習 [2] 問題文:素数の表示 指定した数以下の全素数(例えば10以下の全素数は2,3,5,7) を表示するプログラムを、次のような3つの関数定義して 作成してください。ただし指定する数の入力は適切な値が 入力されるまで繰り返され、素数10個を表示するごとに 改行するようなプログラムとしてください。 (ア)指定した数が適切な範囲かどうかを検査し、適切ならば0、 不適切ならば1(逆の方が使いよければ逆でも可)を返す関数 (イ)適切な値が入力されるまで入力を繰り返し、最終的に 入力値を返す関数((ア)を利用) (ウ)引数に指定した数が素数なら1、素数でなければ0を返す関数 ヒント a)(ウ)で素数かどうかを判定するには、指定した数mが2〜m-1の 数値で割り切れるかどうかを判定し、ひとつも割り切れるものが なければ素数と判定します(素数の定義通り)。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年7月12日17時まで [5] その他の制限:初心者です。よろしくお願いします。
>>517 3-B
#include <stdio.h>
int main(void) { int n; scanf("%d", &n); n=(n+1)
>>1 ; printf("%d\n", n*n); return 0;}
"適切な値"ってなに? 入力できる値の制限ルールとかあんの?
やれやれ、出題者が馬鹿なのか、入力した香具師が馬鹿なのか。いや、両方だな。 >A.長方形の2辺の長さをキーボードから入力したときに、4編の和を求めるプログラムを作成せよ。 誤変換はあるし、「2辺の長さ」に対して「4辺の和」では用語が統一されていない。 > Long side = 50 (cm), Short side = 10 (cm), Total = 120 (cm) 入力単位はcmオーダと仮定していいのか悪いのか、明示しておくべきだろう。 >B.y=x(2)の値を0<x<10の範囲で1刻みで計算し表示するプログラムを作成せよ。(注:(2)は2乗のこと) >  ̄  ̄ まさか「≦」を知らないのか? (2)で2乗ってセンスも凄いけど。 >C.円周率Π(数学のパイ)を3.141593とし、半径を10(cm)としたときの、円周の長さと面積および、 「Π」と「π」を混同するな。円周の面積は常に0だ。 飽きたからこの辺で。
>「2辺の長さ」に対して「4辺の和」 長方形ですが、何か? >>円周の長さと面積および、 >円周の面積は常に0だ。 長さは円周について、 面積は円の面積だろ、この文脈では
>>525 >524は論って揶揄しているだけだから気にすんな。
#まぁ、普通は「4辺の長さの和」とするわな。
>>517 1のABCを解いてから注文が違うことに気がついた orz
1-A
#include<stdio.h>
int main(){int side1, side2, tmp;
printf("長方形の2辺の長さ:"); scanf("%d %d", &side1,&side2);
if(side1 < side2){tmp = side1;side1 = side2;side2 = tmp;}
printf("Long side = %d (cm), Short side = %d (cm), Total = %d (cm)\n",side1,side2,side1*2+side2*2);
return 0;}
2-C
#include<stdio.h>
int main(){int i;
for(i=1;i<=100;i++)if(i%7)printf("%d ",i);
printf("\n");
for(i=1;i<=100;i++)if(!(i%3||i%2))printf("%d ",i);return 0;}
3-B
#include<stdio.h>
int main(){int n,i,sum=0;
scanf("%d",&n);if(n%2){for(i=1;i<=n;i+=2)sum+=i;printf("%d",sum);}
else printf("偶数です"); return 0;}
なんか疲れてるから致命的な馬鹿をやってるかも。反省はしてない。
3-Bも最初は1+3+5=9って画面に表示させたり・・・ orz
529 :
392 :2006/07/12(水) 02:28:18
>>524 揚げ足が取りたいのか、自分が無知だと晒したいのか、はっきりしてくれ
俺としては君の意見の方が笑えるw
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 自然数をキーボードから入力し,昇順ソートして画面に出力する. 入力データ数は50個以下,各自然数は0以上9999以下とする. 出力は各行10個まで,それぞれの数について,右端を揃えること. これをバブルソートではなくクイックソートを使って動かせ.その際,基準値の取り方を工夫せよ. (工夫し過ぎると,その処理に時間がかかって却って遅くなることもある.) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [7/12が締め切りでヤバイです…。] [5] その他の制限: 特にありません。
あ、自分でクイックソートのコードも書けってことか?マンドクセッから後は その部分をご自分で適当にどぞ
535 :
332 :2006/07/12(水) 07:33:51
536 :
デフォルトの名無しさん :2006/07/12(水) 08:21:42
>>333 httpプロキシの作成を頼んだものですがkeep-Ariveの確認ができなくても良いのでプログラムを見せていただけないでしょうか。
お願いします。
[1] C言語プログラミング [2] 問題文(含コード&リンク): 要素数5の配列key[5]に、適当な初期値を用意し、単純交換法でソートするプログラムを作成せよ 要素が1つ決定されるたびに(前ページの流れ図のループ1の中で)、確認の為配列を画面に出力しなさい 初期値として、スライド・教科書の例を使い確認すること。 {58, 27, 6, 32, 13} 比較回数を数えて、最後に画面に出力しなさい 計算量の説明を参照して、確認すること 教科書・スライドの流れ図とプログラムで、要素番号の違いに注意する [3] 環境 [3.1] OS: XP [3.2] visual studio.2003 [3.3] 言語: C [4] 期限: 来週の火曜日まで [5] 配列、ループ、線形探索、二部探索、構造体
>>537 #include<stdio.h>
#define N 5
int main(){int key[N]={58,27,6,32,13},i,j,temp,count;
for(i=0;i<N-1;i++){for(j=N-1;j>i;j--){
if(key[j-1]>key[j]){temp=key[j-1];key[j-1]=key[j];
key[j] = temp;count++;}}}printf("%d",count);}
ぐぐって(元はJavaだったけど)ほとんどコピペ。反省はしてない。
えーっと、説明を参照して確認するのは自分でやってね?
count=0にするの忘れてた orz
なんだろう だいぶ疲れてるみたいだ 問題文読み飛ばしてた main以降を再度貼る int main(){int key[N]={58,27,6,32,13},i,j,temp,count=0; for(i=0;i<N-1;i++){for(j=N-1;j>i;j--){ if(key[j-1]>key[j]){temp=key[j-1];key[j-1]=key[j]; key[j] = temp;count++;}}printf("%d %d %d %d %d\n",key[0],key[1],key[2],key[3],key[4]);} printf("%d",count);return 0;} これで大丈夫・・・ そう信じたい・・・ orz
エロゲスレより エントロピはデータに本質的に内在されるもので データの外面性との関連はない データの性質が変わった瞬間にエントロピも変わる データの本質がかわらない可逆圧縮ではエントロピは変わらない データの本質が変化する可逆圧縮では内在するエントロピが変化する つまり、不可逆圧縮はエントロピ自体を削ることにより容量を少なくしている >可逆圧縮のとき、求められるエントロピーXの値に対して >非可逆圧縮で圧縮された値PがXを下回ることがない 可逆圧縮のXと比較している時点でおかしい。
[1] 授業単元:プログラミング技術 [2] 問題文(含コード&リンク):文字型配列を、"OKINAWA"と初期値として宣言し、 文字列を反転させて、"AWANIKO"と出力するプログラムを作りなさい。 [3] 環境 [3.1] Windows XP sp2 [3.2] BCC [3.3] C [4] 無期限 [5] なし よろしくおねがいします。
>>542 #include<stdio.h>
int main(){char s[]="OKINAWA",t;int i,j=0,k;
printf("%s\n",s);k=sizeof(s);
for(i=k-2;i>=(k/2);i--){t=s[i];s[i]=s[j];s[j]=t;j++;}
printf("%s\n",s);return 0;}
545 :
デフォルトの名無しさん :2006/07/13(木) 02:11:25
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):ビットごとのXOR演算子を用いて、文字列を暗号化するプログラムを作成せよ。ただし、プログラムは以下のの条件を満たすものとする。 条件@対象とする文字列は80文字以下とし、アルファベット小文字、スペース、ピリオド、コンマからなる。 条件A暗号化は、対象文字列を逆順にするとともに、各文字と0から9までの数字(キーナンバーとして打ち込んだもの)とのXORをとって完了する。ただし、スペース、ピリオド、コンマについてはXOR演算の対象としないこと。 条件B暗号化、復号化の処理は、それぞれ少なくとも1個ずつ関数を定義し実行させること。 <仕様>@ファイルoriginal.dat(ASCII形式)二保存されている文字列を暗号化対象として読み込む。original.datが存在しないときには、最初に対象文字列をそのファイルに書き込ませること。 A上記条件Aで示した方法によって、暗号化する。そして、キーナンバーと暗号化文字列をファイルcoded_wds.dat(ASCII形式)に書き込む。 B復号化の際は、coded_wds.datを読み込んで実行すること。まず、キーナンバーを打ち込ませる。誤ったキーナンバーを3回連続して打ち込んだ場合、処理を終了させること。正しいキーナンバーが打ち込まれた場合、復号化してその結果を表示させること。 <original.dat作成入出力例> MENU 1.Making a file 2.Coding 3.Decoding Please input number 1-3:ab←1〜3以外の文字は受け付けないようにする。 Try again! 1.Making a file 2.Coding 3.Decoding Please input number 1-3:1 Please input original words(The length is less than 80):i have a pen,you have a pencil. (以上が完了後、各自のホームディレクトリにoriginal.datが作成される) [3] 環境 [3.1] linux[3.2] gcc [3.3] C [4] 7/18[5]条件多いですがぜひともよろしくお願いします><
[1] 授業単元: [2] 問題文(含コード&リンク): テキストファイルを読み込み,ファイルの中のアルファベットを数え上げるプログラムを作成しなさい. キーボードからファイル名を入力すると,そのファイル名のテキストファイルを読み込み,アルファベット(大文字と小文字は区別しない)のみをそれぞれの文字ごとに数えるプログラムを作成しなさい. # ファイル名は256文字まで入力できるようにしなさい. # 出力は、printf("%3c:%d");の形で示しなさい. 実行例 ]%cat test.txt That the pretended power of suspending laws, or the execution of laws, by regal authority, without consent of parliament is illegal. ]%./charcount test.txt a:8 b:1 c:2 d:3 e:13 f:3 g:3 h:5 i:7 j:0 k:0 l:7 m:1 n:7 o:9 p:4 q:0 r:6 s:6 t:12 u:4 v:0 w:4 x:1 y:2 z:0 [3] 環境 [3.1] OS: (Windows/Linux/等々) linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 13日20時まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)なし よろしくおねがいします
547 :
デフォルトの名無しさん :2006/07/13(木) 13:54:32
[1] 授業単元: [2] 問題文(含コード&リンク): ファイル data1.txt には整数値が100個書かれているとする。 data1.txt から読み込んだデータを大きい順に並べ替えてdata2.txtに書き込むプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C [4] 期限: できればすぐ! [5] その他の制限:特にありません。宜しくお願い致します。
548 :
547 :2006/07/13(木) 14:01:12
すみません間違えました [1]業単元: プログラミング演習 [2] 問題文(含コード&リンク): data1.txt に100個の乱数を書き込むプログラムを作成し、data1.txt ファイルを作成する。 data1.txt から読み込んだデータを大きい順に並べ替えてdata2.txtに書き込むプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C [4] 期限: できればすぐ! [5] その他の制限:特にありません。宜しくお願い致します。
549 :
デフォルトの名無しさん :2006/07/13(木) 14:22:47
>>544 #include <stdio.h>
#include <stdlib.h>
#define N 10000
#define M 100
#define A 4.0
#define X0 0.1
int main(int argc, char **argv)
{
int i, n = argc > 1 ? (int)strtol(argv[1], NULL, 0) : N;
int d_cnt[M] = {};
double x = X0;
for (i = 1; i < n; i++) {
x = A * x * (1.0 - x);
d_cnt[(int)(x * M)]++;
}
for (i = 0; i < M; i++) {
printf("%d ", d_cnt[i]);
}
printf("\n");
return 0;
}
551 :
547 :2006/07/13(木) 15:12:51
>>550 申し訳ないです
本当にありがとうございます
552 :
デフォルトの名無しさん :2006/07/13(木) 15:30:53
[1] 授業単元: プログラミング演習1 [2] 問題文(含コード&リンク): 以下の2つの課題について,C言語でプログラムを作成し,プログラムおよび実行結果を示し,考察せよ. @キーボードから正整数を読み込み,その数を素因数分解した結果を画面に表示する.た だし,1つの整数を引数とし,その整数の最小の素因数を返す関数をユーザ定義関数として作成 し,この関数を使用すること. Aキーボードから7桁の整数を2つ読み込み,その積を表示する.ただし,整数型以外の 変数を用いてはならない. [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VisualStudio2003 [3.3] 言語: C [4] 期限: できるだけ早くお願いします。 [5] その他の制限: お願いします
久々に書き込みを見かけたと思ったらそれか・・・あんたほんっとワンパターンで詰まらん男だな
556 :
デフォルトの名無しさん :2006/07/13(木) 17:25:33
>>556 いますよ、ここに。桁の多い数値を扱う計算をするプログラムのソースは
俺の手元にあるけど、参考書の丸写しになっちゃうから
俺なりに書き換えが出来たらレスしちゃる
558 :
デフォルトの名無しさん :2006/07/13(木) 17:29:54
[1] 授業単元:プログラム1 [2] 問題文(含コード&リンク):Kruskal法を用いて最小木を求めよ。 1)乱数を0〜150の整数の範囲で100個発生させ、2つごとに、点のx座標,y座標とする。 つまり、50個の点をつくる。 例えば、乱数が 2,50,8,62,… であれば、 点0(2,50)、点2(8,62)… となる。 2)各点間の距離をはかり、配列に格納する。点aと点b (0≦a ,b≦49) の距離は、 (a, aのx座標, aのy座標, b, bのx座標, bのy座標, aとbの距離, 辺のチェック) の8項目が入るような配列とすること。 ※(x1,y1)と(x2,y2)の距離は、(x1-x2)^2+(y1-y2)^2としてよい。ルートは面倒なので。 3)Kruskal法を用いて、最小木を求める。 辺の出力は、<点番号 (x座標,y座標),点番号 (x座標,y座標)>とする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VisualStudio2003 [3.3] 言語: C [4] 期限: [2006年7月14日13:00まで] [5] その他の制限: 説明が下手ですがよろしくお願いします。
すんげー連発・・・学期末に今までまともに勉強してこなかった香具師のツケやな
そうか、もうそんな時期なのか
[1] C言語のプログラミング [2]下記 [3] 環境 [3.1] OS: (WindowsXP [3.2] gcc 3.4 [3.3] 言語: C言語 [4] 期限:今夜中に [5] その他の制限: 問題文の通りやれば基本的にはないです コインとスの関数coinflipを用いて表(head)、裏(tails)を書き出し三回続けてheadsが出たら 止めるプログラムcoinflip.cを書け。Randomizeを使うこと (main()部分が21行程度、関数string coinflip()が2行程度のコード) void Randomize(void) {stand((int)time(NULL)); } 出力例 tails heads heads heads 4 flips before 3cons どうかよろしくお願いします
うわぁ〜、こんだけ連発されると、逆に放置したくなるわw
>>567 > 黙って放置しろ。
お前ガナーwwww っつか命令するやつうぜー、氏ねよカスw
くだらん発言でスレを埋める奴の方がうざい。
>>565 coinflipの戻り値の型はstringなのか?
あとどうでもいいことだが、consってナニ?
>>569 > くだらん発言でスレを埋める奴の方がうざい。
だからお前だろ?w 黙ってろよ、うざいのはお前もだろ?w
>>569 何お前?質問者?そのレス見てむかついたし
ぜってー答えてやらねーから黙って指でもくわえてろよ?
>>570 戻り値はstringでいいと思います
consは自分もよく分からないのですが文脈三回続けて
表がでたってことじゃないでしょうか
>>572 勝手にしろ。俺は質問者じゃない。
回答者だと言うだけで偉くなった気になってる奴は痛すぎ。
>>549 ありがとうございます!!
でも12行目でエラーがでてしまいました(>_<)
>>543 助かりました!!どうも有難う御座いました!
>>573 あー、質問の仕方が悪かった。
言語はCで良いのか?Cにはstring型は無いぞ。C++にはあるが。
>>577 いやC言語限定なんで戻り値string型ではまずいですね・・・
579 :
549 :2006/07/13(木) 21:48:30
>>575 ={}; がダメなのかな? ={0}; なら大丈夫かも。
というかその上の行の strtol のところとか全然いらないんで、main
の始めは
int main(void) {
int i, d_cnt[M], n = N;
double x = X0;
for (i = 0; i < M; i++)
d_cnt[i] = 0;
とでもしておいて。
ただ、
俺も
>>555 を見て気づいたけどこれってとっくにやってあって、しかも
そっちのほうが出力とかにも気をつかってるんで、
>>326 のを頂いたほうがいいよ。
[1] 授業単元:c入門 [2] 問題文(含コード&リンク):いくつかの複素数を入力し、最後に1を入力して [Enter]キーを押すとそれまでに入力した複素数とそれらをすべてかけ算した結果を 表示するプログラムを作りなさい [3] 環境 [3.1] OS: unix [3.2] gcc [3.3] 言語: Cです [4] 期限: 2006年7月20日24:00まで [5] その他の制限:連結リストを必ず使わなければいけないそうです。よろしくお願いします
>>はっ(;´д`)!!
失礼しました…
>>579 、
>>326 {0}にしたらエラー出ませんでした。ありがとうございます!
582 :
sage :2006/07/13(木) 21:57:40
>>565 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void Randomize( void ){
srand((int)time(NULL));
}
char *coinflip( void ){
return rand()%2 ? "heads" : "tails";
}
int main( void )
{
int i=0, j=0;
char *s;
Randomize();
while( i < 3 ){
printf( "%s\n", s=coinflip() );
if( !strcmp( s, "heads" ) )i++; else i=0;
j++;
}
printf( "%d flips before 3coins", j );
return 0;
}
どなたか
>>546 への回答をお願いできないでしょうか?
<B><C>はやる気nothing
>>562 void bigger_data(int data1[],int data2[],int dest[]){
int i=0;while((data1[i]!=END)&&(data2[i]!=END)){
dest[i]=data1[i]>data2[i]?data1[i]:data2[i];i++;}
if(data1[i]==END){while(data2[i]!=END){dest[i]=data2[i];i++;}}
else{while(data1[i]!=END){dest[i]=data1[i];i++;}}dest[i] = END;}
エラー処理とかなにも考えてないけどこれで大丈夫なのかな・・・
>>586 sprintfの所もバグってるので直しといて。
590 :
デフォルトの名無しさん :2006/07/13(木) 22:42:16
[1] C言語のプログラミング [2]下記 [3] 環境 [3.1] OS: (WindowsXP [3.2] gcc 3.4 [3.3] 言語: C言語 [4] 期限:今夜中に [5] その他の制限: 問題文の通りやれば基本的にはないです Randomize()とRandomReak(0,1)を用いて0と1のかいだのランダムな実数を500回発生させ、 その平均値を書き出すプログラムrandomavg.cを書け。[7行程度のコード) void Randomize(void) {stand((int)time(NULL)); } double RandomReal(double low,double high) { double d; d=(double)rand()/((double)RAND_MAX+1); return(low+d*(high-low)); } 出力例 Number of trials:500 Average value of 500 trials:0.511900 これで最後です どうかよろしくお願いします
>>590 void main()
{
int i;
double sum = 0;
Randomize();
for (i = 0; i < 500; i++)
{
sum += RandomReal(0.0f, 1.0f);
}
printf("%f", sum / 500);
}
593 :
デフォルトの名無しさん :2006/07/13(木) 23:33:26
>>592 すいませんエラーがでるんですけど
外部シンボルRandomize RandomRealが未解決って
>>546 #include <stdio.h>
#include <errno.h>
#include <string.h>
#include <ctype.h>
#define AtoZ 26
int main( void )
{
char file[257];
FILE *fp;
int alpha[AtoZ], c, i;
scanf( "%s", file );
if( ( fp = fopen( file, "r" ) ) == NULL){
perror( file );
return 1;
}
memset( alpha, 0, sizeof( alpha[0] ) * AtoZ );
while( ( c=fgetc( fp ) ) != EOF )
if( c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' )
alpha[tolower( c )-'a']++;
for( i=0; i<AtoZ; i++ )printf( "%2c:%d", i+'a', alpha[i] );
return 0;
}
#include <stdio.h> #include <stdlib.h> #include <time.h> void Randomize(void){ srand((int)time(NULL)); } double RandomReal(double low,double high){ double d; d = (double)rand() / ((double)RAND_MAX + 1); return(low + d * (high - low)); } void main(){ Randomize(); int i; double sum = 0; for (i = 0; i < 500; i++){ sum += RandomReal(0.0f, 1.0f); } printf("Number of trials:500\n"); printf("Average value of 500 trials:%f\n", sum / 500); }
597 :
596 :2006/07/13(木) 23:38:20
すみません。どなたかは
>>523 を解いていただけないでしょうか?
599 :
デフォルトの名無しさん :2006/07/13(木) 23:41:33
>>597 14行めと
15行めはここでは宣言できないとエラーがでるんですが・・・
600 :
デフォルトの名無しさん :2006/07/13(木) 23:43:46
>>599 ですがint i;
double sum = 0;と
Randomize();の順番を入れ替えたらコンパイルできました
ありがとうございました
>>600 悪いな、俺のミスだ。
コンパイラ何使ってるか見てなかった。
[1]プログラミングT [2]得点データを読んで,平均点とヒストグラムを出力するようなプログラムの作成 得点データファイルの先頭行はデータ数nを示し,つづくn行に得点が格納 各得点は0以上100以下の整数である 200(得点データ数を示す) 50(ここから…) ・ ・(長いので省略) ・ 67 69(ここまでに0以上100以下の整数が200個存在する) ヒストグラムは「0〜9」「10〜19」...「90〜99」「100以上」の11区間とし 縦に区間、横にデータ数を下の出力例のように '*'を用いて表す 0- 9: 10-19:* (省略) 80-89:******************* 90-99:********* 100- :* 平均:75.3点 [3] [3.1] WindowsXP [3.2] Visual Studio 2005 コマンドプロンプト [3.3] C++ [4] 期限:明日中に [5] その他の制限:可能な限り基本的な制御文、型、関数でお願いします 特にvoid以降は使わないで欲しい(for文主体レベルで)
>>604 #include<iostream>
#include<fstream>
using namespace std;
int main(){int data[11],max,tmp,count=0,sum=0;
for(int i=0;i<11;i++)data[i]=0;
fstream fs("data.txt",ios::in);
if(fs.fail())return -1;
fs >> max;while(!fs.eof()&&(count<max)){
fs >> tmp;data[tmp/10]++;
sum+=tmp;count++;}for(int i=0;i<11;i++){
if(i*10+9>100)cout << i*10 << "- :";
else cout << i*10 << "-" << i*10+9 << ":";
for(int j=0;j<data[i];j++)cout << "*";
cout << endl;}cout << "平均点:" << sum/max << endl;
return 0;}
>>605 があるけどせっかくやったから貼ってみる
>>598 んー, これは
p2=fx1*(x-x2)*(x-x3)/((x1-x2)*(x1-x3))
+fx2*(x-x1)*(x-x3)/((x2-x1)*(x2-x3))
+fx3*(x-x1)*(x-x2)/((x3-x1)*(x3-x2));
この文をforで分割しろってことかな?
609 :
605 :2006/07/14(金) 01:16:47
あーC++っての見てなかった
>>608 はい、その通りです。
あと、p3もできればお願いします...
>>611 少なくとも朝までにやってくれる猛者はいないと思うんだぜ?
素直に適当なライブラリもってきて改変するが吉
>>612 適当なライブラリって?
現在進行形で教科書片手にがんばってはいるもののどうにも・・。
これができるかどうかで単位どころか留年が危ういんで藁にもすがる思いというか、なんというか(汗
とりあえず、続けます。
文字コード判別なんて 普通問題にしないだろw どうみてもまだほんの入門的はことしかやってないじゃん
616 :
デフォルトの名無しさん :2006/07/14(金) 02:59:27
619 :
611 :2006/07/14(金) 04:11:59
>>618 エラーが出ました。120行目のgetがおかしいみたいです。
複数の問題から選択式でこっちのが簡単ならこっちお願いします。
問題:
キーボードからの入力で指定されたファイルに書かれている数式を読み込み、数式を計算した結果を表示する。
ただし、数式に含まれる可能性がある記号は「0123456789*/+-()」のみで256記号以内とする。
また、計算結果が整数とならない場合は浮動小数点で計算結果を表示する。
>>619 キャストしたら?get((unsigned char*)buff);みたいに。
>>619 何故そっちを先に出さないのかと小一時間
622 :
611 :2006/07/14(金) 05:10:24
それは、まぁ、その、物理的にいろいろありまして・・・・・すいませんorz
623 :
611 :2006/07/14(金) 05:31:48
最後に
>>618 様のプログラム、
どういうプログラムなのか簡単に解説してもらえると助かります。
625 :
デフォルトの名無しさん :2006/07/14(金) 08:57:45
[1]プログラミング演習 [2] 下記 [3] 環境 [3.1] windouwXP [3.2]gcc 3.4 [3.3] C言語 [4] 期限:今日の昼まで [5]特になし キーボードから入力した文章を暗号化したあと解読するプログラムを書け 1.暗号化:文字が英字ならアルファベット上のその次の英字に(但しZはAにzはaに) (2)暗号化した文章をファイルとスクリーン上に出力する。 (3)ファイルの暗号内容を解読して別のファイルとスクリーン上に表示する。 #include<stdio.h> #include<ctype.h> int encode();/*暗号化*/ int dekode();/*解読*/ main() { intc; FILE*outfile*infile; outfile=fopen("encode.txt","w"); while((c=getchar())!='\n'){ putchar(........); fputc(.......);} fclose(outfile); infile=fopen("encode.txt,"r"); outfike=fopen("decode.txt","w"); while((c=getc(infile))!=EOF){ putchar(............); fputc(.............); fclose(infile); fclose(outfile);
どなた様か
>>560 をやっては頂けないでしょうか?
>>626 Kruskal法の解説、またはそのリンクを。
628 :
デフォルトの名無しさん :2006/07/14(金) 09:03:03
>>625 の続き
}
int encode(intc)
{
if(isalpa(c)){
swiich(c){
caze'Z':return('A');
case'z':return('a');
default:return(c+1);
}
}
if(isdigit(c)){
switch(c){
case'0':return('9');
default:return(c-1);
}
}
return(c);
}
>>625 int decode();/*解読*/ // typo
putchar(encode(c));
fputc(encode(c), outfile);
outfile=fopen("decode.txt","w"); // typo
putchar(decode(c));
fputc(decode(c),outfile);
if(isalpha(c)){ // typo
switch(c){ // typo
int decode(int c)
{
if(isalpha(c)){
switch(c){
caze'A':return('Z');case'a':return('z');default:return(c-1);
}}
if(isdigit(c)){
switch(c){
case'9':return('0');
default:return(c+1);
}}
return(c);
}
630 :
611 :2006/07/14(金) 09:32:37
実に申しわけないのですが 〆切、私の勘違いで正しくは再来週の28日。 ほんとすいませんでした。
631 :
デフォルトの名無しさん :2006/07/14(金) 09:45:05
>>629 すいませんエラーがいっぱいでるんですけど
2行目から7行目まで全部エラーがでます
>>631 空行までは貴様の書いたプログラムの変更すべき点。
空行以降を追加してからやってみそ
>>627 >>560 の追記
Kruscal法とは、
1)辺の長さを小さい順に並べる。
2)閉路ができないよう順次辺を加える。
だそうです。
ですが、今回の課題で閉路はできないので2)は考えなくてもいいと思います。
よろしくお願いします。
634 :
デフォルトの名無しさん :2006/07/14(金) 10:10:28
こんなんなりましたけどまだ一杯エラーがでるんですが・・・ include<ctype.h> int encode();/*暗号化*/ int decode();/*解読*/ main() { int c; FILE*outfile,*infile; outfile=fopen("encode.txt","w"); while((c=getchar())!='\n'){ putchar(encode(c)); fputc(encode(c), outfile); } fclose(outfile); infile=fopen("encode.txt,"r"); outfile=fopen("decode.txt","w"); // typo while((c=getc(infile))!=EOF){ putchar(decode(c)); fputc(decode(c),outfile); fclose(infile); fclose(outfile);
635 :
デフォルトの名無しさん :2006/07/14(金) 10:11:20
int encode(int c) { if(isalpa(c)){ swiich(c){ case'Z':return('A'); case'z':return('a'); default:return(c+1); } } if(isdigit(c)){ switch(c){ case'0':return('9'); default:return(c-1); }} return(c); } int decode(int c) { if(isalpha(c)){ switch(c){ case'A':return('Z'); case'a':return('z'); default:return(c-1); }} if(isdigit(c)){ switch(c){ case'9':return('0'); default:return(c+1); } } return(c);}
[1] 授業単元:アルゴリズム論 [2] 問題文: クイックソートの平均計算量T(n)が、ある定数c>0に対し、 T(n) = 0 (n = 0の時) T(n) = 2/n(for(i=0;i<=n-1;i++))T(i) + cn (その他の時) と表されるものとする。 (1)T(n) = 2c(n+1)Hn - 3cn(n≧1)を導け。Hn = (for(i=1;i<=n;i++))1/i (2)定義の再帰式からT(n)を正確に求めるプログラム(再帰的プログラムにする必要は無い)を 作成しなさい。ただし、c = 1, n=1,10,100,1000,10000とする。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:7/17まで [5] その他の制限:無し どなたかご教授お願いします。
637 :
デフォルトの名無しさん :2006/07/14(金) 11:20:32
お願いします 1:プログラミング 2:金額をキーボードから入力し、金額を金種別にわけるプログラミングを作れ。 金種は1万、5千、2千、千、500、50、10、5、1です。 3、1:UNIX 3、2:GCC 3、3:C 4:20日まで。 5:if.for.配列を使うこと。voidなどは不可です
(;´Д`) あれ、もしかしてJISの判別って0x1Bだけ見ればいいのかな・・・
[1] 授業単元: 計算機プログラミング1 [2] 問題文(含コード&リンク): 関数2/(1+x*x)について区間[-1,1]にわたる定積分を「台形公式」を用いて計算せよ。 [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) ?? [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/31 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ポインタを使ってお願いしますm(__)m
643 :
637 :2006/07/14(金) 12:17:13
使える文がif.for.while.char.getchar.switchなんです‥ printf.int.else.break.continueしか文字はならっていないので‥。
>>636 「正確に求める」って分数を使って表せってこと?
c=1, n=10000のとき4300桁くらいになるんだが。
どなた様か
>>560 をやっては頂けないでしょうか?
課題の追記は
>>633 (Kruskal法について)
よろしくお願い致します。
648 :
デフォルトの名無しさん :2006/07/14(金) 12:58:23
[1] C言語と数値計算法 [2] 問題文:5名分3教科のテスト結果が5×3の配列に入っているとき、 各教科ごとに点数の高い順に並び替えた配列を出力する関数とmain関数を作成せよ [3] 環境 [3.1] OS:windows [3.2] visual studio 2003 [4] 期限:7月18日 [5] 次の例文を参考に 5名分の英語、数学、国語の3教科のテスト結果が5×3の配列に入っている。 各教科の平均点を求めるための関数を、配列へのポインタを引数として作成する。 #include<stdio.h> void get_ave(float *score, float *ave); void main(void){ float result[5][3] = {{50,65,45},{77,80,90},{30,40,50},{75,92,80},{65,69,90}}; /* 点数の5×3配列 */ float average[3]; /* 平均点の配列 */ get_ave(&result[0][0], average); /* ポインタ渡しで関数呼び出し */ printf("Average is %4.1f(Eng), %4.1f(Math), %4.1f(Jap)\n",average[0],average[1],average[2]); } void get_ave(float *score, float *ave) /* 関数本体 (引数はポインタ) */ { int i,j; float total[3]; for(i = 0; i < 3; ++i){ total[i] = 0.0; /* 配列total[3]の初期化 */ for(j = 0; j < 5; ++j) total[i] += *(score + 3*j + i); /* 各教科の合計点算出 */ } for(i = 0; i < 3; ++i) *(ave + i) = total[i] / 5.0; /* 各教科の平均点算出 */ }
649 :
デフォルトの名無しさん :2006/07/14(金) 13:12:44
650 :
デフォルトの名無しさん :2006/07/14(金) 13:26:40
[1] プログラミング演習 [2] 以下のプログラムはfor文を用いて、1から50までの奇数の和を求めるものである。 下記の問いに答えなさい。 #include<stdio.h> main() {int 空白 for(i=1;空白) {if(空白)break; sum=sum+i;) printf("\n1+3;5;...+49=%d",空白);} 問1上記の空白を正しく埋めて、プログラムを完成しなさい。 問2上記のプログラムをwhile文を用いて書き換えなさい。 [3] 環境 [3.1] OS: (WindowsXP [3.2] ultraC [3.3] 言語:C [4] 期限:13時57分まで 単位かかってるのでおねがいします><
651 :
テスト中 :2006/07/14(金) 13:28:56
変数n に記憶されている数値327を整数327として画面に出力するには、 printf ( ) と書けばよい。 ( ) を教えてください>< 17 名前:テスト中 2 :2006/07/14(金) 13:20:21 2、 変数n に記憶されている数値327を変動少数点数327.0として画面に出力するには、 printf ( ) と書けばよい。 ( ) を教えてください>< 18 名前:テスト中 2 :2006/07/14(金) 13:21:50 変数n に記憶されている数値56.351を小数点以下第2位まで画面に出力するには、 printf ( ) と書けばよい。 ( ) を教えてください>< 19 名前:テスト中 4 :2006/07/14(金) 13:25:06 4、 変数n に記憶されている十進数値97を printf ( "%c",n) で入力すると画面には ( )が出力される。 ( ) を教えてください><
>>652 俺、お前のこと嫌いになりかけたけど、また好きになったよw
>>649 作ったよ^^
#include <iostream>
using namespace std;
int main(){
int a,b;
cin >>a;
cin >>b;
cout << a*b;
return 0;
}
>>642 #include <stdio.h>
double fnc1( double x ){
return 2/(1+x*x);
}
double fnc2( double x ){
return 1/(1+x*x);
}
double trapezoid( double min, double max, int n, double (*f)(double) )
{
double h, x, sum=0;
int i;
if( n == 0)return 0;
h = ( max - min ) / n;
for( i=1, x=min+h; i<n; i++, x+=h )
sum += ( *f )( x );
return h * ( ( *f )( min ) + ( *f )( max ) ) / 2 + h * sum;
}
int main( void )
{
printf( "a=%f\n", trapezoid( 0, 1, 10, fnc2 ) );
printf( "a=%f\n", trapezoid( -1, 1, 20, fnc1 ) );
return 0;
}
>>650 #include<stdio.h>
main(){
int i, sum = 0;
for(i=1; ; i = i + 2){
if(i >= 50) break;
sum=sum+i;
}
printf("\n1+3;5;...+49=%d", sum);
}
>>649 うおっ、やっぱまだ期待してた?あれから紹介した本のソースを見て
そのままじゃ君が求めているものには物足りなくて使えないから
独自で改造をしているんだが、ちと作業が止まっていて、すまそ
もちっと時間は掛かるけど、やってみるかな・・・期待されても困るがw
660 :
デフォルトの名無しさん :2006/07/14(金) 16:54:42
質問する場所がわからず新しくかきこみました。すみません orz プログラミングのテストを教えていただきたいのです。 授業単元:プログラミングのテスト 内容:西暦と月を入力し、その月のカレンダーを入力してください。 西暦yearと月monthを入力 西暦year年month月一日が何日目(days)かを計算する。 daysを7で割った余りに応じて空白を出力し、その後1,2,3、・・・と出力する。 このとき7つのデータを出力するごとに改行してください。 環境:C言語です 配列を習い始めたとこです。どうか教えてください。 orz
662 :
デフォルトの名無しさん :2006/07/14(金) 18:01:51
>>659 催促みたいになってすみません。本当にありがとうございます!!助かりました
663 :
デフォルトの名無しさん :2006/07/14(金) 19:45:33
誰か317のhttpプロキシ作ってください。 お願いします。
>>648 間違ってるかもしらんけど。
#include<stdio.h>
void print(float *result){
int i,j,k;
float temp;
for(i=0;i<3;i++)
for(j=0;j<5-1;j++)
for(k=5-1;k>j;k--)
if( *(result + 3*k + i) < *(result + 3*(k-1) + i) ){
temp = *(result + 3*k + i);
*(result + 3*k + i) = *(result + 3*(k-1) + i);
*(result + 3*(k-1) + i) = temp;
}
printf("Eng\tMath\tJap\n");
for(i=0;i<5;i++){
for(j=0;j<3;j++)
printf("%4.1f\t",*(result + 3*i + j));
printf("\n");
}
}
int main(void){
float result[5][3] = {{50,65,45},{77,80,90},{30,40,50},{75,92,80},{65,69,90}}; /* 点数の5×3配列 */
print(&result[0][0]);
return 0;
}
665 :
648 :2006/07/14(金) 20:31:50
>>664 のif文のところの比較が逆。
orz...
>>656 ありがとうございます!
多分2こめのaの方ででいいんですよね?
ここに宿題持ってくるのって大学一年?
669 :
デフォルトの名無しさん :2006/07/15(土) 02:10:25
老婆心ながら忠告すると、何やっているかわからんくらい勉強の意味がないなら 単位を捨ててもう一年授業を受け直すべきだな、うん
[1] マルチスレッド(図形の描画) [2] 問題文(含コード&リンク): 2本の線を別々に並行処理で、時間単位で直線を引いていきます。 2本の直線の合計がLになったら、描画を終わりにします。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:C++ builder3 [3.3] 言語: C++ [4] 期限: 2006年07月17日まで [5] その他の制限: 特に無し よろしくお願いします。
>>669 のプログラム読んでて思ったんだが、これってプロキシなん?
動かしてみた感じ、標準入力に直にHTTPメソッド書いて送信できるだけじゃね?
>>673 ぐぐってみて把握
listenやら任せられるのか
>>671 #include <stdio.h>
#define L 32
int main(void){
int i;
for(i=0;i<L/2;i++) printf("| |\n");
return 0;
}
676 :
デフォルトの名無しさん :2006/07/15(土) 10:45:22
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 5つの金額を入力しそれを10000 5000……10 5 1 に分ける金主計算を行います。 そしてそれを表にして表示させます 10000 5000 1000 500 100 50 10 1 金額1 金額2 金額3 金額4 金額5 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2006年07月24日まで [5] その他の制限: 基本的なことしか習っていません、if for while dowhile else tray よろしくお願いします
677 :
デフォルトの名無しさん :2006/07/15(土) 11:19:33
[1] 授業単元: 数値解析 [2] 問題文n×nの係数行列Aと右辺ベクトルbを適当に与えたとき、Ax=bの解xをLU分解により(AをLU分解して) 求めるプログラムを作る。そのプログラムにおいて、n=4、 |2 2 -6 3| |-0.5| A= |1 -4 2 2| b=| 8 | |2 1 -3 -5| | -9 | |1 -2 1 2 | | 6 | としたときの数値解を求め、出力する。なお、プログラムでは変数mを用いる。 ヒント:解はx4=1.5、x3=1、x2=-0.5、x1=1 [3] 環境 [3.1] LINUX [3.2] gcc [3.3] 言語: C [4] 期限: 7月20日 [5] その他の制限: 問題文分かりにくくてすみません。よろしくお願いします
681 :
679 :2006/07/15(土) 12:21:35
>>680 ぐぐって解けるようならここに書かんわいカス。
>>671 >>675 2本線を時間単位で延ばして、
描画していくって宿題?
わしも、C++勉強中だがJAVAでよくある同期、非同期とかの
マルチスレッドで紙芝居みたいに描画する導入問題じゃないじゃろか。
>>681 本当にぐぐったならそんな台詞はでてこねーよカス
684 :
679 :2006/07/15(土) 12:34:01
>>683 うるせー問題の答えを書く気がないならここに来るなカス。
685 :
679 :2006/07/15(土) 12:35:44
>>684 勝手に答えるな・゚・(つД`)・゚・ ヤメテヤメテ
>>684 答えが知りたくないやつはここに来るなカス
| \ __ / _ (m) _ピコーン |ミ| / `´ \ ('A`) そうか!こうすれば荒れないのか! ノヽノヽ くく \ / _ `゙`・;`' _バチュ--ン `゙`・;` / `´ \ ('A`) ノヽノヽ くく ('A`) ...なんだっけ ノヽノヽ くく (゚∀゚ )! そうだ 京都 行こう ノヽノヽ くく
>>684 グーグルでLU分解について調べなおして自力で解け、ということでしょうか?
25 -printf("x%d = % f\n", i, x[i]); -printf("x%d = % f\n", i, + 1, x[i]); でいいかな。
[1] 授業単元: 数値解析 [2] 問題文: 11個のデータ(1, 0.00)、(2, 0.60)、(3, 1.77)、(4, 1.92)、(5, 3.31),(6, 3.52),(7, 4.59), (8, 5.31),(9, 5.79),(10, 7.06),(11,7.50)がある。 最小二乗近似で当てはめた一次式を求める。 また、これらのデータのグラフを図示する。 [3] 環境 [3.1] LINUX [3.2] gcc [3.3] 言語:C [4] 期限: 7月17日 23時59分59秒 [5] その他の制限:
[1] 授業単元: 数値解析 [2] 問題文: 11個のデータ(1, 0.00)、(2, 0.60)、(3, 1.77)、(4, 1.92)、(5, 3.31),(6, 3.52),(7, 4.59), (8, 5.31),(9, 5.79),(10, 7.06),(11,7.50)がある。 最小二乗近似で当てはめた一次式を求める。 また、これらのデータのグラフを図示する。 [3] 環境 [3.1] LINUX [3.2] gcc [3.3] 言語:C [4] 期限: 7月17日 23時59分59秒 [5] その他の制限: C言語の基礎しか習ってません。(特に気にしないでください) 間違えて途中で送ってしまいました。2回送ってごめんなさい、お願いします
ぐぐると一番上にLU分解を解くプログラムがあったんだが・・・ よく見たら変数mとか使ってなかったしな 正直すまんかった
695 :
693 :2006/07/15(土) 13:44:11
すみません、また補足です・・・。 正規方程式を解いてc0とc1を解くそうです
>>693 中○大かな?
もし同じ教科書使っていたらスマソ。
去年と問題変わらんね…w
#include<stdio.h>
4 main(){
5 int x[11]={1,2,3,4,5,6,7,8,9,10,11};
6 double y[11]={0.0,0.60,1.77,1.92,3.31,3.52,4.59,5.31,5.79,7.06,7 .50};
7 int i;
8 double A,B,a=0.0,b=0.0,c=0.0,d=0.0,N=11.0;
9
10 for(i=0;i<N;i++){
11 a = a+x[i];
12 b = b+x[i]*x[i];
13 c = c+x[i]*y[i];
14 d = d+y[i];
15 }
16
17 A=(d-N*(c/a))/(a-N*(b/a));
18 B=(c-b*A)/a;
19 printf("A=%25.18e\n",A);
20 printf("B=%25.18e\n",B);
21 }
去年と微妙に問題が違う気するんだが、とりあえず去年のソース貼っておきますね。
>>690 このプログラムをもっと初心者が書くように回りくどく拙くすることってできますか?
>>697 ・実直にforに中括弧をつける。
・変数を一行に一つずつ宣言する。
・putchar(), puts()を使わず全てprintf()で。
これだけやってもどうせコンパイル結果は同じだ。
699 :
693 :2006/07/15(土) 13:57:09
>>696 「数値解析の基礎・基本」って教科書っす(`・ω・´)ゞ
700 :
693 :2006/07/15(土) 14:01:17
それの実習問題5Aっす(`・ω・´)ゞ
[1] 授業単元: プログラムA [2] 問題文:関数 int max_cluster_length(int array[], int n) の仕様 とコレを用いたmainもつくれ array[0], ..., array[n-1] の中で、隣り合う要素の数値の差が1以下であるような連続する部分の最大の長さを返す。 たとえば、 data = {4, 3, 5, 6, 6, 7, 6, 3, 5, 2, 3, 4}, n=12 のとき、赤い部分が「隣り合う要素の数値の差が1以下であるような連続する部分」で最も長いものであるから、その長さ 5 を返す。 [3] 環境 [3.1] LINUX [3.2] gcc [3.3] 言語:C [4] 期限: 7月17日 [5] その他の制限:
>>697 すまん出かけとった。
拙く?C言語はノーフォーマットなので、適当に行を崩して書けば
それらしくならんかな?特にポインタも使ってないし。LU分解と
解くルーチンは本から写したと言えばいいのでわ?
>>701 int max_cluster_length(int array[], int n){
int i, x, max;
for (i = 0, x = max = 1; i < n; i++) {
if(abs(array[i] - array[i + 1]) < 2) x++;
else {
if(max < x) max = x;
x = 1;
}
}
return max;
}
704 :
693 :2006/07/15(土) 15:19:04
>>696 先輩先輩、実は実習問題4Aも残ってるんだけど、文章じゃ説明しにくくてここで質問できなかったんです。
そっちの答えも分かりますか?
>赤い部分 ...って
>>705 ごめn。 data = {4, 3,” 5, 6, 6, 7, 6”, 3, 5, 2, 3, 4},
” ”で囲ってあるとこがあかいとこ
>>682 ですです。
どなたかよろしくお願いします。
>>704 4Aって何…w
去年はそれ、課題8といったのですが。
ごめ、そういえば去年はプリントだったんやけど今年から教科書使ってるんだっけ?
だとすれば、問題と照合しないことにはなんとも…。
あー、文章で説明しにくい課題って何だろう…? 正直、去年はんな問題なかったわけですよ。 もし必要なら、スキャナかデヂカメで撮影キボソ。 ちなみに、おそらく吉○担当の講義だと思うけど、課題出さなかったら定期試験より -30点減点だった筈。実力テストは80点以上で自動的にA。 住人の方、汚してスマソ
>>682 ですです。
よろしくお願いします。<(_ _)>
よし、俺が解ける宿題を出してくれ↓
[1] 授業単元:脳内 [2] 問題文(含コード&リンク):マージソートで整列するプログラムを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC++ [3.3] 言語: どちらでも可 [4] 期限: 2007年07月15日22:00まで [5] その他の制限:クイックソートまで習いました
715 :
デフォルトの名無しさん :2006/07/16(日) 00:12:30
誰かhttpプロキシをお願いします。 助けてください
>>713 #include<algorithm>
void mergeSort(int array[],int n){
if(n<=1)return;
mergeSort(array,n/2);
mergeSort(array+n/2,n-n/2);
std::inplace_merge(array,array+n/2,array+n);
}
[1] 授業単元: 数値解析 [2] 問題文: 下記の表とアルゴリズムA・Bを使って次のプログラムを作成する。 問1)誤差関数の表においてx0=1.0、x1=1.1、x2=1.2の3点の関数値を使って erf(1.14)の値を推測する。ただしアルゴリズムAとBを用いる。 問2)誤差関数の表においてx0=1.0、x1=1.1、x2=1.2、x3=1.3の4点の関数値を使って erf(1.14)の値を推測する。ただしアルゴリズムAとBを用いる [3] 環境 [3.1] LINUX [3.2] gcc [3.3] 言語:C [4] 期限: 7月17日 [5] その他の制限: 問題文長くてすみません。あとなるべく初歩的な知識でも理解できるようなのだと大助かりです。 よろしくお願いします
誤差関数の表 x erf(x) 1.0 0.84270079294971 1.1 0.88020506957408 1.2 0.91031397822964 1.3 0.93400794494065 1.4 0.95228511976265 1.5 0.96610514647531 1.6 0.97634838334464 1.7 0.98379045859077 1.8 0.98909050163573 1.9 0.99279042923526 2.0 0.99532226501895 アルゴリズムA(差分商の計算) for(i=0,1,・・・,n){ di ← f(xi) } for(k=1,2,・・・,n){ for(i=0,1,・・・,n−k){ di←( di+1 − di) / (xi+k − xi ) } } アルゴリズムB(v = pn (α)の計算) v ← d0 for(i=1,2,・・・,n) v←(α - xi ) v + di 表と使用するアルゴリズムA・Bです
>>718 ちょっと教えて欲しいのだが、アルゴリズムAは、ニュートンの差分商
補間アルゴリズムだと思うのだがアルゴリズムBは一体何という補間?
線形補間かな?あとラグランジュ補間、ネヴィル補間、スターリング補間
などいろいろあるが、αの意味がよくわからないため、どの補間公式なの
か選べずに困っている。
>>719 ニュートン補完です。ラグランジュは分かるけど
ネヴィル・スターリングは聞いたことないです。
>>720 あ、わかった。アルゴリズムAで差分商表を作り、アルゴリズムBで
その表を使って補間を行うって事だね。じゃすぐうpできるのでちと
待ってて。
723 :
デフォルトの名無しさん :2006/07/16(日) 11:19:01
>>677 分かる方どなたかおりませんか・・・('A`)
724 :
デフォルトの名無しさん :2006/07/16(日) 12:44:25
>>676 です。
>>678 さんありがとうございます。
書いてあるとおり私は基本的なことしかやっていませんし習ったことのみでプログラムを作ります。
プログラムの中にsizeof、coinというのがあったと思いますがこれは習っていません
一日、習ったことで表せないかと試行錯誤を繰り返していましたが、どうにもできません
sizeof、coinをif for while dowhile else tray などで表すことはできないでしょうか?
もうsizeを全部10に置き換えればいいんじゃないの
>>724 coinは変数です。
sizeofはサイズを調べてくれる演算子です。
sizeof(int)とすると、4を返してくれます。
sizeof(coin)とすると、40を返してくれます。
int coin[10]={1,5,10,50,100,500,1000,2000,5000,10000};
int i,j,n[5],size=10;
int res[10];
に変更すればできるはず。
727 :
デフォルトの名無しさん :2006/07/16(日) 13:26:31
>>725 >>726 ありがとうございます。sizeofについては解決いたしました。
しかし、coin resがいまだに理解しがたいです。
変数とはそもそもどんなものなのでしょうか?手持ちの参考書を読んでますが
coin や resは索引にもありません。
あちゃー・・・
これもゆとり教育の賜物です。 本当にありがとうございました。
730 :
デフォルトの名無しさん :2006/07/16(日) 13:34:13
>>729 確かにゆとり世代ですけどね・・・^^;
大体C言語とか学ぶ意味あるんですか?
しかも必修ですよ、わけわかんねぇ
必修であるならば、それがどんなものでもクリアすることこそが大人の態度だ。
>>730 大体英語とか中国語とか学ぶ意味あるんですか?
しかも必修ですよ、わけわかんねぇ
と思いながら大学卒業しました
自分だけ苦労してますみたいなこと言わないでください。
英語なんでセンター試験で20点切るダメさ加減でしたよ。
まぁ索引に思い至るのであれば、普通は「変数」を調べるわな。 変数の説明が無いような参考書は捨てちゃえ。
>>722 UPありがとうございます。
でも、struct Erf と const struct Erf と sizeof が分かりません・・・。
いじることすらできません・・・。
せっかくUPしてくれたのにすみません・・・・。_| ̄|○|||||
あと、問1の3点使うのと問2の4点使うのはこれを少し変えればできるんですか?
735 :
デフォルトの名無しさん :2006/07/16(日) 14:01:22
>>732 自分も20切ってました><
>>733 調べましたが、半理解?
なんでわざわざint coinとか複数作る必要があるんですか?
intとcoinは書き方が違うだけで同じいみなのですか?
??????????????????????????????
>>735 なんだと!20切っただと!
仕方ない問題やってやる
| \ __ / _ (m) _ピコーン |ミ| / `´ \ ('A`) そうか!こうすれば理解してもらえるのか! ノヽノヽ くく \ / _ `゙`・;`' _バチュ--ン `゙`・;` / `´ \ ('A`) ノヽノヽ くく ('A`) ...なんだっけ ノヽノヽ くく (゚∀゚ )! そうだ 京都 行こう ノヽノヽ くく
なんだもう答え出てて理解できなくて荒れてたのか
742 :
740 :2006/07/16(日) 21:27:05
全部です
親子間のメッセージって何をやり取りするんだ?
あー、3点と4点を使うというのが違っているわけか。 わかった。なら改造するからしばし待たれよ。
なんかすみません、2問もお願いして・・・
チラシスマソ。気になったので…
717氏の大学は、構造体とsizeofを後期に履修しまふ。
ちなみに、担当教員は創成Iと同じT氏なので覚悟すべし。
平気で50人・60人落とします
>>717
一ヶ所間違い発見。 -36 for (i = 0; i < N; i++) { +36 for (i = 0; i < n; i++) {
>>750 おそらくですが、717氏と同じ大学在籍です。
この担当教員は、えらく見る目が厳しく、去年はスペースが1つでも入ってズレていたら
即刻ダメだし受けてレポートを受け取ってもらえませんでした。
今思えば、当然っていえば当然ですが…。
個人的には結構厄介な教授にランクインしてまふw
あ、加えて「こんなん習ってないだろ!もっと簡単に書け!」とか言うことも((((;゚Д゚)))ガクガクガクブルブルブル
>>753 なんだと!本来フリーフォーマットのC言語に、書式の一致まで
強制する教官なのか。まあプログラムのチェック時に教官自身が
楽をしたいだけなんだろうが。
>>750 ありがとうございます!・゚・(つД`)・゚・
おかげさまで課題出さないだけで期末から-30点なんてことにならなくてすみそうです。
>>753 課題を出されたときにはよろしくお願いしますセンパイ_| ̄|○|||||ボクアノヒトキライ
ところで数値解析の授業のほうではこの問題は去年出なかったんですか?
よく思うのだが、そーいう教授に当たったときって 独学で学んでますのでとかじゃダメなん?
>>754 無駄に厳しいのは事実。
だで、普段viを推奨する大学ですがvimを使ったほうが良いかな。
あと、Cファイルの中に結果とか諸々詰め込まないとダメだし受けたりとか。
まぁ、未知の事を直すのは
>>717 の仕事として…。
>>755 あの。
>>750 だけど。係数を合わせて書いたら、デタラメな値が
出てきたので、これでいいと思うよ。
何か言われたら、「言われた通りにやったら結果がデタラメに
なったので、できるだけ出題の意図を崩さないように、正しい結果
が出るように修正しました」と言っておけばいいだろ。
ソースは当たっているが お前の態度が気に入らない
>>755 あと教官の機嫌を取るためのプログラムの修正は俺はわからない
ので、あとは自分で頼む。
>>759 教授本人!? (((((((( ;゚Д゚)))))))ガクガクブルブルガタガタブルガタガクガクガクガクガク
>>757 アンドゥしまくるならvimおぬぬめなんだぜ?
>>755 前にも言ったかもしれないが、去年は教科書じゃなくてプリント講義ですた。
教科書化したのは知っていたが、中身をちらほら変化してるみたいだな。
T教授?後期に大量に課題出すよwww
最終課題は「コンピュータと人間が対戦するゲームを何か作れ。(要するにAI)」で、
漏れは確か300行ぐらいに膨れ上がったイクナイプログラムを出した覚えがある。
764 :
717 :2006/07/17(月) 00:09:29
>>763 創成の授業でも思ったけど、T先生の授業のためだけに学校通ってるわけでなく
ほかにもいろいろと授業あって忙しい、って言うのは学生の言い訳なんでしょうか・・・?
(;´Д`)カダイガヒドイ
765 :
717 :2006/07/17(月) 00:13:41
>>760 教授の機嫌取りは課題とは別のところで無問題ですΣG(´∀` )本当にたすかりました
766 :
717 :2006/07/17(月) 00:14:38
教授の機嫌取りは課題とは別のところ「でするの」で無問題です
まぁスレ違いな話題はそのへんにしといてくれや
>>767 いやだね、なんで君にいちいちどうこう言われたり、命令をされなきゃならないんだよ?
しといてくれや?して下さいだろ?誰に向かって口聞いてんだ?
相手がヤクザや暴力団の子供だったらやばいよ?
まーたいつもの彼か
772 :
893 :2006/07/17(月) 01:39:39
>>768 よくわかったな。俺本物のヤクザだから背中に
#include<stdio.h>
main()
{
printf("hello world!);
}
って刺青ほってあるぜ?
うはっwwwwおまいら釣られすぎwwwwww俺がヤクザの子供なわけねーじゃんwwww
ださ。文字列が終わってない…
同じ大学の奴さー、学食かどっかで盛り上がってくれよ
お前らほんと学習能力ないな。 キチガイは完全スルーしろ、完全スルー。
>>770 なぜ彼だと決めつける?もしかすると彼女かもしれないぞ?
780 :
笹井奈琴/377 :2006/07/17(月) 13:43:48
781 :
デフォルトの名無しさん :2006/07/17(月) 14:17:46
[1] 授業単元: プログラミング [2] 問題文 for文によるループを使って、学生の点数を連続してキーボードから入力し 負の点数を入力したとき、プログラムを終了させ、最大値と最小値を求める 関数void maxmin(int [], int , int*, int*);を用いるものとする。引数は 左から、「点数の配列:tensu」、「学生数:gakusei」、「最大値;max」 「最小値;min」として、「最大値と「最小値」にポインタを用いて、結果的に 反値とさせている。 なお、点数の配列は99個準備する(ループの最大値99回) 実行結果の例 学生1:55 学生2:60 学生3:65 学生4:80 学生5:-999 学生4人の最大値:80 最小値:55 [3] 環境 [3.1] OS: knopix [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 7月20 [5]ほとんど初心者です、お願いします
782 :
笹井奈琴/377 :2006/07/17(月) 14:18:20
>>780 しまった、data_insert()のおわりに
free( dataT );
が抜けてた。
783 :
デフォルトの名無しさん :2006/07/17(月) 14:29:03
[1] 授業単元: プログラミング [2] 問題文 キーボードから2つの整数(n、r)を打ち込み、n個からr個を選ぶ順列の数 を求めるプログラムを作りなさい、ただし、順列の数を求めるのに、zyunretu という関数、階乗を求めるのにkaizyoという関数を利用するものとする(自分で作る なお、順列の数の計算は、nPr=n(n-1)(n-2)...(n-(r-1))=n!/(n-r)!である。 使用関数:int zyunretu(int, int), int kaizyou(int) 実行結果の例 5個から3個を選ぶ順列の数は、P(5,3)=60である 注意事項 なるべく簡単なプログラムにするため、使用関数をint型にしてあります。 大きな値(n:上限12)を入れるとおかしな結果になります。 [3] 環境 [3.1] OS: knopix [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 7月20 [5]2つもすいません
>>783 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
static int kaizyou(int num) {return round(tgamma(num + 1));}
static int zyunretu(int n, int r) {return kaizyou(n) / kaizyou(n - r);}
int main()
{
int n, r;
if (scanf("%d%d", & n, & r) == 2) {
printf("%d個から%d個を選ぶ順列の数は、P(%d,%d)=%dである\n",
n, r, n, r, zyunretu(n, r));
}
return 0;
}
785 :
笹井奈琴/377 :2006/07/17(月) 14:49:33
>>781 #include <stdio.h>
#include <stdlib.h>
void maxmin( int tensu[], int gakusei, int* max, int* min ) {
int i;
*max = *min = 0 < gakusei ? tensu[0] : -1;
for( i = 1; i < gakusei; i++ )
if( tensu[i] < *min )
*min = tensu[i];
else if( *max < tensu[i] )
*max = tensu[i];
}
int main3( int argc, const char* argv[] ) {
int tensu[99], i, max, min;
char buf[80];
for( i = 0; i < 99; i++ ) {
printf( "gakusei%d:",i+1 );
gets( buf );
tensu[i] = atoi( buf );
if( tensu[i] < 0 )
break;
}
maxmin( tensu, i, &max, &min );
printf( "gakusei %d nin no MAX:%d MIN:%dn", i, max, min );
return 0;
}
786 :
笹井奈琴/377 :2006/07/17(月) 14:51:15
>>785 1. main3 になってますが main に直してください
2. メッセージは全部ローマ字ですが、
これは(必要であれば)漢字に直してくださいね。
789 :
787 :2006/07/17(月) 16:57:28
ほんとだ…
>>740 すみませんでした
わかる方いませんか
いろんな意味でわかんないんだと思うよ
『問題の意味がわからない』ってのも含めてですかね
お願いします [1] プログラミング [2] y=xのe乗を2進展開して計算するプログラムを作れ。 [3] 環境 [3.1] Windows xp [3.2] Microsoft visual c++ 6.0 [3.3] C++ [4] 2006/7/18 AM11:00頃まで [5] ポインタがまだしっかり理解できていないので、できれば使わないようにしていただけるとうれしいです。
793 :
デフォルトの名無しさん :2006/07/17(月) 17:55:57
笹井奈琴/377さんありがとうございました!
そうそう、このコードだとセマフォがプログラムを実行するたびに 作られていくので、適当に手動で消してください。 $ ipcrm -s id
797 :
デフォルトの名無しさん :2006/07/17(月) 20:04:46
どなたか
>>677 できるかたおりませぬか・・・('A`)
パイプラインで詰まっているのですが、|を探してコマンドを整形した後
どのように繋いでいいかが分かりません。
pipeは1回だけでfdの中を保存して次々につなげていくみたいなことを
言われたのですが、どのようにすればいいでしょうか?
標準ライブラリ使っとるがな(´・ω・`)
不覚にもワロタ
非標準のライブラリは使っていいんだろうかw
803 :
677 :2006/07/17(月) 22:50:36
>>797 過去スレあさってみたのですが、3つ以上のパイプを順次繋いでいくことが
できなかったりして答えではないという感じでした。
どなたか問題文にあったの作れませんでしょうか('A`)
804 :
798 :2006/07/17(月) 22:58:57
C++?
>>803 その見つけたというのはどれなのか明記してみろ
807 :
デフォルトの名無しさん :2006/07/17(月) 23:36:24
「苦しんで覚えるC言語」のサイトを使って授業を受けています。 今、14章の「文字列を扱う方法 」まで習いました そこで宿題として出された問題がこちらです。 問題1.キーボードから63以下の2つの整数を変数a,bに入力して、a+bの結果がアスキーコードの対応する文字・記号となって出力されるプログラムを作れ。 問題2.キーボードから英字1つを入力し、その英字より2つ前の英字(または数字、記号)を出力するプログラムを作れ 問題3.2つの配列a,bに、キーボードから各々10字以内の文字列を 入力し、それらをabの順とbaの順に連結するプログラムを作れ。 問題4.問題3において、a,bに入力された文字列の各々の長さを比較し、長い文字列が先頭に、短い文字列がその後に連結するように出力するプログラムを作れ。 ただし、2つの文字列の長さが同じ倍にはa,bの順に連結する。 問題5.キーボードから2つの文字列(地名、氏名など)を入力し、アルファベット順に出力するプログラムを作れ。ただし、endが入力されたとき、プログラムが終了すること。 (たとえば、Tokyo,とSapporoが入力されたときは、Sapporo,Tokyoの順に出力する。) ヒント:文字の比較にはstrcmpを用いる。 OS: WindowsXP CPad for Borland C++ Compilerを使用 C言語 すみません期限が明後日までですので、いきなり問題を5つも載せてしまいました。 お願いします助けてください
808 :
longhon :2006/07/17(月) 23:39:03
どなたかC++のソースをCにできるかたいらっしゃいますか?
firefox を C で実装し直せと言うならお断りだ
811 :
longhon :2006/07/17(月) 23:49:42
>>811 gtkmm は GTK+ の C++ インターフェイスです。
814 :
677 :2006/07/18(火) 00:00:53
>>811 自分レス(
>>812 )で書いてあるように、
gtkmm.h自体がC++で書かれているから無理。
templateやnamespaceもある上に、
スタティックメソッドGtk::Main::run()がGtk::Windowのインスタンスを要求している。
そもそもスレ違い。
スレ違いだけど、gtkのC interfaceを使うよう書き換えてくれってことでしょ。 スレ違いだけど。
818 :
longhon :2006/07/18(火) 00:16:21
そうです。すれ違いですね。すみません。 list viewがどうもうまくいかなくてリファレンスは英語でてんてこ舞いに なってもうわけがわからなくなってしまったんです。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):英文字を一つ入力すると、それ以降のアルフ ァベットを終わりまで表示する。(ただし数字 を入力した時などは考えなくて良い。) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: 覚えてないです。 [3.3] 言語: C++ [4] 期限: 今日の夕方です。 [5] その他の制限: 習い始めたばっかりです。#includeは<stdio.h>のみ。 #include<stdio.h> main(){ int c,i; c=getchar(); for(i=c;i<='z';i++); putchar(i); ここあたりまでは頑張って考えてみました。ただ、これだと小文字の場合 だけですよね? 大文字の場合も出来ないといけないみたいですが・・・ここからは解りま せんので教えて頂けませんか?
>>819 #include<stdio.h>
main(){
int c,i;
c=getchar();
for(i=c;i!='z'+1&&i!='Z'+1;i++)putchar(i);
}
[1] 授業単元:プログラミングA [2] 問題文(含コード&リンク): 問題:西暦と月を入力し、その月のカレンダーを出力せよ 1.(year-1)-365を計算する 2.西暦year-1年12月31日までに何回閏年があったかを考える 3.mounth-1月までの日数と1を足す。このときyear年が閏年の場合は注意が必要 例:2006年1月1日(日)を計算すると 2005*365+[2005/4]-[2005/100]+[2005/400]+1=732312を7で割ると0になる dayを7で割った余り 0 1 2 3 4 5 6 曜日 日 月 火 水 木 金 土 プログラムの構成 1.西暦yearと月monthを入力 2.西暦year年month月1日が何日目(days)かを計算する 3.daysを7で割った余りに応じて空白を出力し、その後1,2,3,・・・と出力する。 このとき7つのデータを出力するごとに改行もする [3] 環境 [3.1] OS:WindowsXP [3.2] gcc3.4 [3.3] 言語:C言語 [4] 期限:2006年7月29日 [5] その他の制限:if文 for文 等初歩的な事 関数使用不可 過去ログにあった物は void showやint IsLeapYear(int year)、static const int days など習っていない記号があったので改めて質問しました お願いします(´・ω・`)
習ってない記号って… 関数を記号言うなw
関数使用不可?! Σ(゚д゚lll)
つまり、main()も使っちゃ遺憾のだよ。
>>821 showはなんでもできる基地外さん
IsLeapYearは記号と間違えられるメンヘルさん
daysは死ぬまでdaysな童貞さん
>>821 そもそも何をもって初歩的な事とするんだろうな
俺からすればマクロ形式関数なんて初歩的な訳で
関数がダメだというなら代わりにそれを使うまでだが
>>821 >関数使用不可
これは自分で定義した関数がダメってことじゃね?
関数使っちゃダメって書いてるわけだから 関数は全て使っちゃダメ!
じゃあ手続きってことで
831 :
819 :2006/07/18(火) 03:32:07
>>820 なるほど。
レスありがとうございました。
[1]授業:プログラミング(C言語) [2]問題文:外部ファイルから1000個の数字を読み込み、配列に格納する。 その数字をクイックソート法によって整列させ、整列した結果を別の外部ファイルに書き込むプログラムを作成する。 main関数とは別にクイックソートを行う関数を作成し、読み込みおよび書き込みの外部ファイル名はそれぞれ「indata.dat」、「outdata.dat」とする。 また、再帰を使用し、クイックソートを行う関数の引数にはポインタを使わないこと。 [3.1]OS:WindowsXP [3.2]Borland C++ 5.5.1 [3.3]言語:Cです。 [4]期限:今日の11時までです。 [5]その他の制限:特にないです。 よろしくお願いします。
>>832 #include <stdio.h> #include <string.h> #include <stdlib.h> #define SWAP(a,b) {int temp; temp = a; a = b; b = temp;}
void qsort_sub(int *data, int left, int right);void qsort_main(int *data, int size);
int main(void){ FILE *rfp, *wfp; char *delm = " \n\t"; char buff[1000] = {'\0'};
char *Integ; int i ; int elemnt[1000] = {0}; rfp = fopen("indata.dat","r");
wfp = fopen("outdata.dat","w"); for( i = 0; NULL != fgets(buff, sizeof(buff), rfp); i++){
Integ = strtok(buff, delm); elemnt[i] = atoi(Integ); }qsort_main(elemnt,1000);
for(i=0; i< 1000-1;i++){ fprintf(wfp, "%d\n",elemnt[i]); }
fclose(wfp);fclose(rfp);return 0;} void qsort_sub(int *data, int left, int right){
int lindex = left; int rindex = right; int piv = data[(left+right)/2];
while(lindex <= rindex){ for(; data[lindex] < piv; lindex++) for(; data[rindex] > piv; rindex--)
if(lindex <= rindex){ SWAP(data[lindex],data[rindex]); lindex++; rindex--;
}} if(rindex > left){ qsort_sub(data, left, rindex); } if(lindex < right){ qsort_sub(data, lindex,right);
}} void qsort_main(int *data, int size){ qsort_sub(data, 0, size - 1); }
ポインタを使うなの意味がわかんね
配列自体ポインタだし
おうおうおうおうおうおう、先日は娘をずいぶんと可愛がってくれたそうじゃないか 口の聞き方はきぃつけた方がええぞ?
>>832 が人気みたいだから漏れも漏れも
#include<stdio.h>
#define N 1000
void q_sort(int x[], int l, int r){int i, j, p, tmp;
i=l; j=r; p = x[(l+r)/2]; while(true){ while(x[i] < p)i++;
while(p < x[j])j--; if (i >= j)break; tmp=x[i]; x[i]=x[j]; x[j]=tmp;
i++; j--; } if (l < i-1) q_sort(x, l, i-1); if (j+1 < r) q_sort(x, j+1, r); }
int main(){FILE *fp; int i,data[N]; fp = fopen("indata.dat","r");
for(i=0;i<N;i++) fscanf(fp,"%d",&data[i]); fclose(fp);
q_sort(data,0,N-1); fp = fopen("outdata.dat","w");
for(i=0;i<N;i++) fprintf(fp,"%d\n",data[i]); fclose(fp); return 0; }
エラー処理とか考えるの忘れた orz
838 :
デフォルトの名無しさん :2006/07/18(火) 07:31:39
>>833 本当にありがとうございます!
提出日に間に合ってよかったです。
助かりました ありがとう×∞
840 :
677 :2006/07/18(火) 11:38:50
どうもうまく繋げないのですが、
>>677 のようにコマンドを整形している
場合、パイプを見つけてコマンドを順次実行していくにはどうすれば
いいんでしょうか?
>>840 いいかげんウザいぞ、お前。回答もう出てるだろ。
疑問点があったら、適当なスレで具体的に質問しろ。
842 :
デフォルトの名無しさん :2006/07/18(火) 12:45:15
1つのファイル(sample.txt)というファイルがあり 以下のように記述がされています。 Q1333.txt 0.500 0.000 -22000.000 A1455.txt 0.000 -0.500 -19000.000 ・ ・ これを、 Q1333.txtというファイル名で、記述内容は 0.500 0.000 -22000.000 A1455.txtというファイル名で 0.000 -0.500 -19000.000 ・ ・ という形で保存をしていきたいのですが、どのようにすればよいのでしょうか?
843 :
デフォルトの名無しさん :2006/07/18(火) 12:48:25
スレ違い おめースレタイも読めねーバカ?
844 :
デフォルトの名無しさん :2006/07/18(火) 13:03:26
C/C++で遠隔地のHTMLサーバに接続してhtml貰ってくる最低限のコードを教えて><
socketでサーバーに接続してページを要求するメッセージを送信する。
>>846 コード教えれっていってんだろうが、ボケナス
コード書けないんだったら黙っとけ
>>846 分かったかチンカス。いやマンカスかもしれんけどな。
[1] C言語 [2] 問題文 n Σ a^(k-1) k=1 aとnを入力して解を出力するプログラムを作る。 [3] 環境 [3.1] OS:Windows [3.2] VC 6.0? [3.3] C言語 [4] 期限:明朝 [5]習い始めたばかりです。 よろしくお願いします。
>>849 習い始めたばかりだとループも使わない方がいいかな?
#include <stdio.h>
#include <math.h>
main(){
double a;
int n;
scanf("%lf %d",&a,&n);
printf("%f\n",(1-pow(a,n))/(1-a));
}
>>850 こういう人って、なに考えて生きてるんだろうね
相手が知らないこと、間違えていることで 自分が知っていること、あるいは相手の失敗や不手際を指摘できるだけで 得意気に調子ぶっこいているキチガイが約2名。 こんな時間にそんなことしに来るなんて、どこの暇人だよ?w おおかた、クズ大学院生か低レベルな学校の教員だろ
853 :
667 :2006/07/18(火) 14:55:55
>>840 宿題についての内容なのですが、他のスレとかあるのでしょうか('A`)
具体的内容なのですが、
実行後、標準入力でコマンド受付→スペースを区切りとしてargmv[0],argmv[1]...
にコマンドが入っていくというところまで作られています。
ls -l | grep d | cat
というコマンドが来た場合、
argmv[0]=ls argmv[1]=-l argmv[2]=grep...というようになり、
最初自分でやってみたときは
|をNULLに置き換えてその場所を記録し、execvpで記録した場所からその数だけ実行し、
パイプを繋ぐということをやっていました。
この場合3つの場合、1つ目が標準出力の変更、2つ目が標準入力と出力の変更、3つ目が
標準入力の変更になるのですが、
for(コマンドの数だけ){
fork
2つ目、または最後のコマンドの場合は標準入力を変更
コマンドが2つ以上ある場合、最後のコマンド以外は標準出力を変更
パイプのある次の場所からexecvp
}
みたいな流れにしようと思っているのですがpipeをどこで呼び出すかと、どのように
繋ぐかが分かりません。今回は単純のため|がコマンドにくっついていない場合を考えた
のですがどんな感じにすればいいのでしょうか・・・
また、リダイレクションが混ざって入ってきた場合どのようにすればいいのでしょうか?
>>853 ここはあくまで宿題を片付けるスレッドであって、
宿題の内容について質問するスレッドじゃぁ無いと思うんだ
もうできませんでした。でいいだろ。
>>853 しつこいな、お前。回答のソース良く見ろ。
>>853 pipe作って、いらんものcloseして、dupかdup2だ。
つか、スレ違い。
スルーを知らず、何かと自分が気に入らない意見は叩かないと気が済まない キチガイが目立つな。所詮、お前らも低レベルな学校の卒業生か教員だろ? 痛々しいね、こういう自分より下のレベルの奴が質問すると 分かっている場所でなきゃでけぇ面できない小心者ってw リアルではまともに人と向き合って話が出来ないんだろうけどw
>>849 #include <stdio.h>
int main(){
int a,n,i,j,k,ans=0;
printf("a:"); scanf("%d",&a);
printf("n:"); scanf("%d",&n);
for(k=1;k<=n;k++){
j=1;
for(i=1;i<=k-1;i++)j*=a;
ans+=j;
}
printf("%d\n",ans);
return 0;
}
こんな感じだと思うけど数学苦手だし間違ってるかも
>>859 と、リアル高卒ニート引きこもりが申しております。
[1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク): 大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、単純選択法でソートするプログラムを作成せよ。 ただし、ソートの途中経過を画面に出力すること。 また、最後に比較回数を画面に出力すること。 【ヒント】 配列の大きさの指定 #define SIZE 20 単純選択法‥最小の要素を選び、未ソートの部分の先頭の要素と交換する 途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。 比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。 [3] 環 [3.1] OS: xp [3.2] visual studio2003 [3.3] 言語: C [4] 期限: 明日の朝までに。 [5] その他の制限: 配列、構造体、線形探索、ループなど習いました
何か言い返さないと気が済まない、自分が気に入らない意見を徹底的に叩く
その態度が痛々しいのだがw
ずっとはりついている割には、まともにソースを出して答えない奴が
何偉そうにしてんだよ?何、お前ここのスレの主?お前の主導のもとで
このスレが成り立ってんの?
ぐちぐち言ってねーで、ソースを出せばそれで良いだろ
いちいち質問者の気に入らない態度に対してネチネチ叩くな、うぜぇ
それから、やっぱりそうなんだろ?自分より下だと見下せる相手だと分かっている
この場所でだからこそ、解けない相手に対して煽りを入れる。そして
自分は煽るだけでソースを出さない、そういう奴が目立つんだよ。
ソースを出している奴は、質問者の細かい態度に対してケチをつけずに
書いたものを出してんだから、自分の主観や判断基準で
やりとりにケチしかつけないやつの方が断然うぜぇ
>>863 としか言えないお前が一番バカ
このスレで偉そうにしている奴の化けの皮がはがれてきたなw はいはい、いつまでも自分の基準で低レベルだと思う奴に対して 大きな態度をとるだけで満足してなさいw
>>862 #include<stdio.h>
#define SIZE 20
int main(){
int key[SIZE],i,j,k,tmp,count=0;
for(i=0;i<SIZE;i++)scanf("%d",&key[i]);
for(i=0; i<SIZE-1; i++){ k = i;
for(j=i+1; j<SIZE; j++){
if(key[k] > key[j]) k = j;}
tmp=key[i]; key[i]=key[k]; key[k]=tmp;
count++; for(j=0;j<SIZE;j++) printf("%d ",key[j]);
printf("\n"); } printf("交換回数:%d\n",count);
return 0; }
ファビョったw
どうせ、頭悪くてまともな質問もできない厨房が、自分の質問を邪険にされてファビョってるだけだろ。 相手にスンナ。
>>869 いや違うよ。こいつはかなりまえから宿題スレに常駐してるただの馬鹿。
こんな内容のレスしかしない。
ストレス発散でしょ。
しかも粘着w
いつも自分の煽り発言のせいで、スレが無駄に伸びるのにねぇ
ヒント:頭のおかしい人は相手しないようにしましょう
ぐちょぐちょ言うなら自分が書いたソースを出せよ、どこぞの教員さんw
そんなに嫌そうな顔しても、ここがぐちょぐちょ言ってるじゃないか
荒れてる?
俺のお気に入りは全部で9個 そのうち2個がカオスなんだが これってまだ幸せなほう?
[1] 授業単元: C言語入門 [2] 問題文(含コード&リンク):文字列を入力させる。その中にGSKという部分 文字列(連続)が含まれていればOK,そうでなけれ ばNO!と出力させる。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4] 期限: 7月19日の12時 [5] その他の制限: 標準ライブラリは使ってはいけない #include<stdio.h> main(){ char moji[256]; int n=0, flag=0; gets(moji); while(moji[n]!='\0'){ if(moji[n]=='G' && moji[n+1}=='S' && moji[n+2]=='K') flag=1; この続きを書けということなので、この続きをお願いします。
>>879 C++じゃなくてCだと思う。
標準ライブラリ使用禁止って、普通にstdio.h使ってるジャン
#include <stdio.h>
int main(void){
char moji[256];
int n=0,flag=0;
gets(moji);
while(moji[n] != '\0'){
if (moji[n] == 'G' && moji[n+1] == 'S' && moji[n+2] == 'K'){
flag=1;
break;
}
n++;
}
if (flag == 1){
puts("OK!");
}else{
puts("NO!");
}
return 0;}
>>877 荒れてないっすよ?ここを荒れさせたら大したもんだ
何なに?DQNという文字列が含まれているかどうか調べるって?
>>879 n++;}if(flag)puts("OK");else puts("NO!");}
一カ所(n+1のところ)閉じ括弧間違えてるけど
884 :
879 :2006/07/18(火) 22:29:29
>>880 解答ありがとうございます。
はい、Cでした。標準ライブラリの意味を理解してなかったです。
閉じ括弧間違えてしまいました。
3つもミスして申し訳ないです。
breakは、まだ習ってないのですが、breakを使わない方法ってないですか?
それと、
>>883 に書いてあるn++;}if(flag)puts("OK");else puts("NO!");} は
if (flag == 1)ではなくif(flag)っていう訂正ってことですか?
>>884 #include<stdio.h>
main(){
char moji[256];
int n=0, flag=0;
gets(moji);
while(moji[n]!='\0'){
if(moji[n]=='G' && moji[n+1]=='S'&& moji[n+2]=='K')flag=1;
n++;
}
if(flag)printf("OK");
else printf("NO");
}
886 :
880 :2006/07/18(火) 22:39:14
>>883 は俺じゃない。
(flag == 1)と(flag)は同じ意味。
本当に同じ意味かなかな?
>880 (flag) (flag != 0)
889 :
886 :2006/07/18(火) 22:56:17
>>889 間違ってるって言ったのは、下から三行目の
if(moji[n]=='G' && moji[n+1}=='S'
の話だよ
あ、なんかえらい勘違いしてたかも
892 :
デフォルトの名無しさん :2006/07/18(火) 23:03:58
1] 授業単元:プログラミング [2] 問題文(含コード&リンク):2つの数a,bをキーボードから入力し、縦がa文字、横がb文字 でできたしかっけいを表示するプログラムを作れ [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c言語 [4] 期限:できれば早めで;; [5] その他の制限:入門なのでまだif,for,while文しか習っていません・・・ 難しい単語は使えません お願いします
>>892 #include <stdio.h>
int main(void)
{
int a,b,i,j;
scanf("%d%d",&a,&b);
for (i=0;i < a;i++){
for (j=0;j < b;j++){
printf("*");
}
printf("\n");
}
return 0;
}
894 :
892 :2006/07/18(火) 23:10:19
>>893 voidというのはなにかに置き換えられますか?
int argc,char *argv[] に置き換えられる。
896 :
892 :2006/07/18(火) 23:17:11
ありがとうございました!
897 :
デフォルトの名無しさん :2006/07/18(火) 23:31:09
898 :
892 :2006/07/18(火) 23:32:04
ごめんなさい! さっきの問題に追加して #でできた四角形をつくれというものでした。 どのようにしたらよいですか?
それはギャグで言ってるのか?
900 :
892 :2006/07/18(火) 23:47:13
マジメです(´・ω・`)
この方も、もゆとり教育の被害者です。 ご愁傷様です。
902 :
にゃんぽん :2006/07/18(火) 23:48:58
こんにちは。 どうか、Windowのリサイズについてご教授ください。 画像を表示するプログラムを作成しています。 画面をマウスドラッグでサイズ変更をしているとき、 マウス移動の間、図形を連続的に再描画(縦横比を一定)しようとしています。 FormPaint内でClientWidth とClientheightの設定をしてもうまくいきません。 いい方法がありましたらご教授願います。
>>897 下から5行目のprintfの前にif(i%2)って入れるだけで終わりだよ
>>902 スレ違い
904 :
879 :2006/07/18(火) 23:59:49
どうもありがとうございました。
905 :
819 :2006/07/19(水) 00:05:52
>>820 さんが答えて下さったプログラムで今日の夕方に学校で実行してみたの
ですが、大文字を入力すると{が出力され小文字を入力すると[が出力されて
しまいます。
>>905 ちゃんとそのままコピペしてコンパイルしますたか?
まさか自分で手入力ってオチかね?
「もゆとり教育」?
908 :
819 :2006/07/19(水) 00:20:09
>>906 ちゃんと、そのままコピペしてコンパイルしました。
プログラム自体は、自分の問題の答になっているのですか?
それと、C++じゃなくてCでした。これが原因ですかね?
forの行の末尾にセミコロンがついている悪寒。
911 :
819 :2006/07/19(水) 00:46:28
>>910 forの行の末尾のセミコロンをとったら出来ました。
ありがとうございます。
って
>>819 のソースの一部を変えたんであって
やっぱ
>>820 を丸々コピペしてねーじゃんw
そりゃzかZの次の文字が来る罠
913 :
910 :2006/07/19(水) 00:50:21
漏れってエスパー?w つーか、>911あほすぎ。>908でよくぞ「そのままコピペ」と書いたもんだ。
コピペ=見ながら手打ち と思ってたとか
915 :
笹井奈琴/377 :2006/07/19(水) 02:26:49
>>792 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
double bp( double t, unsigned int i ) {
if( i == 0 ) {
return 1;
} else if( i == 1 ) {
return t;
} else {
double t2 = bp( t, i / 2 );
return t2 * t2 * bp( t, i % 2 );
}
}
double ebp( unsigned int i ) {
return bp( exp(1.0), i );
}
int main( int argc, const char** argv ) {
int x = atoi( argv[1] );
printf( "e^%d -> %lf(%lf)\n", x, ebp(x), exp(x) );
return 0;
}
おそくなった...
916 :
デフォルトの名無しさん :2006/07/19(水) 03:49:11
細かい事を言えば ×leaf ○leap な。leap year == うるう年。
920 :
916 :2006/07/19(水) 07:41:56
凄く助かりました。ありがとうございます。 これ出来なかったら単位落とす所でした… 本当に感謝です。
921 :
849 :2006/07/19(水) 08:05:19
>>860 遅レスですがありがとうござます、助かりました。
[1] 授業単元: 応用プログラミング [2] 問題文(含コード&リンク): 1辺の長さの正n角形の面積を求めなさい。但し、nは3から10までとする。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:C言語 [4] 期限:あと2時間です・・・ [5] その他の制限
>1辺の長さの正n角形 難しい問題だ。
すみません・・誤打です。。 問題・1辺が1の長さの正n角形でした(><)
あと1時間なんです(><;)
>>922 面積の公式まで求まっているなら、出した方が早いよ。
>>922 多分求まってるはず。
#include <stdio.h>
#include <math.h>
int main(void)
{
int n;
double pi = acos(-1.0), height, theta, s;
for(n=3;n<=10;n++) {
theta = pi / n;
height = 0.5 / tan(theta);
s = 0.5 * height * n;
printf("%d -> %f\n", n, s);
}
return 0;
}
#include <stdio.h> int c; int T(int n){ int i,tmp=0; if(n==0) return 0; else{ for(i=0; i<n; i++) tmp += T(i); return (tmp*2/n + c*n); } } int main(void){ int n; do{ printf("c = "); scanf("%d", &c); }while(c<=0); do{ printf("n = "); scanf("%d", &n); }while(n<0); printf("T(n) = %d\n", T(n)); return 0; } このプログラムの(配列を用いた)非再帰版を どなたか作っていただけませんか?自分の知識では難しくて作れないので。 よろしくお願いします。
>>928 >>644 にレスしてくれたらすぐにでも出せたのに。
証明も書いたのが残ってるから必要なら言ってくれ。
double t(int n, int c)
{
double sum = 0;
double v = 0;
int i;
for(i = 1; i <= n; i++)
{
v = 2.0 / i * sum + c * i;
sum += v;
}
return v;
}
ちなみに配列は要らない。
931 :
929 :2006/07/19(水) 14:26:48
>>928 のTと厳密に同じになるように書き直した。
int T(int n)
{
int sum = 0;
int v = 0;
int i;
for(i = 1; i <= n; i++)
{
v = 2 * sum / i + c * i;
sum += v;
}
return v;
}
932 :
928 :2006/07/19(水) 14:54:56
>>929 644にレスできなくてすいませんでした。
928のプログラムの処理の不具合を解消したかったのですが、
931のプログラムで、無事解消できました。
本当に感謝です。どうもありがとうございました。
ちなみに証明の方はもう片付いたので大丈夫です。
気にかけていただき、ありがとうございます。
934 :
デフォルトの名無しさん :2006/07/19(水) 16:32:45
[1] 授業単元: プログラミング通論 [2] 問題文(含コード&リンク): 与えられた文字列を辞書順に整列するマージソートのプログラムを作成せよ。 プロトタイプ宣言は, void mergesort(recordtype a[], int n); とする。 以下のプログラムは数字列を整列するプログラムです。 ただし、1からなので、0からできるような 関数mergesort() を考えてくださいませ。 #include <stdio.h> #include <string.h> typedef int keytype; /* → typedef char* keytype; */ typedef struct { keytype key; } recordtype; #define LIMIT 1000 recordtype a[LIMIT]; void mergesort(recordtype a[], int l, int r) { int i, j, k, m; recordtype b[LIMIT]; if (l<r) { m = (r + l) / 2; mergesort(a, l, m); mergesort(a, m+1, r); for (i = m; i >= l; i--) b[i] = a[i]; i = l; for (j = m+1; j <= r; j++) b[r+m+1-j] = a[j]; j = r; for (k = l; k <= r; k++) if (b[i].key < b[j].key) a[k] = b[i++]; /* → strcmp() を用いて */ else a[k] = b[j--]; } }
935 :
934 :2006/07/19(水) 16:34:48
void print_record(recordtype a[], int n) { int i; for (i=1; i<=n; ++i) { printf("%d\n", a[i].key); } } #define BUFLEN 128 #define N 5 int main(void) { char buf[BUFLEN]; int i; for (i=1; i<=N; i++) { fgets(buf, BUFLEN, stdin); sscanf(buf, "%d", &a[i].key); } mergesort(a, 1, N); print_record(a, N); } [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 7/21まで
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct list { char user[9]; int cnt; struct list *next; }NODE; NODE *head; void list_out(void); void main(void) { NODE *new,*back,*p; char user[9],access[23]; int rc; FILE *fp; if((fp = fopen("access.log","r")) == NULL) return; head = NULL; while(fscanf(fp,"%s %s",user,access) != EOF){ p = head; if(p == NULL || strcmp(user,p->user) @ 0){ new = (NODE *)malloc(sizeof(NODE)); strcpy(new->user,user); new->cnt = A; new->next = B; C = new; }
else{ while(p != NULL){ if((rc = strcmp(user,p->user)) D 0) break; back = p; p = E; } if(rc == 0) F; else{ new = (NODE *)malloc(sizeof(NODE)); strcpy(new->user,user); new->cnt = A; new->next = B; G = new; } } } list_out(); fclose(fp); } void list_out(void) { NODE *p; printf("ユーザ名 回数\n"); p = head; while(p != NULL){ printf("%-8s %4d\n",H,I); p = J; } }
[1] 授業単元:C
[2] 問題文(含コード&リンク):
)
ttp://ranobe.com/up/src/up123720.txt こちらのaccess.logを読み込んで
ユーザー名 回数
c3191001 2
c3191002 5
と昇順にする線形リストのプログラムです@〜Jを埋めてくださいお願いします
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: VB
[3.3] 言語: C
[4] 期限:無期限
[5] その他の制限: なし
>>936 ペントミノ解法プログラムの課題とはまた作り甲斐のあるものを。
2339通りの解があったはず。
942 :
デフォルトの名無しさん :2006/07/19(水) 20:25:15
[1] 授業単元:C言語(画像処理) [2] 問題文(含コード&リンク): 座標(x1,y1)(x2,y2)(x3,y3)(x4,y4)…(値は適当) が与えられていて、画像を読み込み、そこに(x1,y1)から(x2,y2) まで直線を画像にプロットし、次に(x2,y2)から(x3,y3)まで 直線を画像にプロットして、それを繰り返していくプログラム をつくる。 (画像読み込み部分はやらなくてよい) [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual C++ Developer 6 [3.3] 言語:C [4] 期限:2006年07月24日12:00まで [5] その他の制限:なし。 どうか宜しくおねがいします。
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 一行が一個の正の整数値と一つの文字列からなる以下のようなテキストファイルがある. この中から指定された番号をもつ行の文字列を表示するプログラムを作成せよ. ファイル名の指定および番号の指定はキーボードから行うものとする. また,ファイルの最後の行には番号として-1が入っているものとし,番号の重複はないものとする. (ファイルの中身) 44 あ 22 い 89 う -1 (実行結果) filename: data.txt index: 22 い [3] 環境 [3.1] OS: (Windows [3.2] コンパイラ名とバージョン: Visual Studio.NET2003 [3.3] 言語: C [4] 期限: なるべく早く [5] その他の制限: 特になし どうか、よろしくお願いします。
>>943 #include <stdio.h>
int main(void)
{
FILE *fp;
int sel,index;
char temp[256],str[256],filename[256];
scanf("%s",filename);
if ((fp=fopen(filename,"r")) == NULL){
fprintf(stderr,"error![file]\n");
return -1;
}
scanf("%d",&sel);
while (fgets(temp,256,fp)){
if (sscanf(temp,"%d%s",&index,str) != 2){
printf("error![read]\n");
break;
}
if (sel == index){
printf("%s\n",str);
break;
}
}
fclose(fp);
return 0;
}
[1] C言語
[2] 1個1000円の商品があります。この商品には、まとめて買うと割引があります。
割引率は10個未満=なし、10個以上100個未満=1割引、100個以上1000個未満=2割引、1000個以上はすべて3割引き
購入個数を与えると、購入金額を求めるプログラム。購入個数は700個とする。
pro1.とpro2.(while文とfor文)で作成した。各自でどちらを採用するか決め、理由を200時以内に適切に述べよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2407.txt [3] 環境
[3.1] Windows
[3.2] VC 6.0
[3.3] 言語:C言語
[4] 無期限
[5] その他の制限:なし
whileもforもやっている個とは同じだし、違いや長所短所が見つけられません。宜しくお願いします。
いや、マルチはどうだろ
1] プログラミング [2] "koike","kouno","suzaki","ishii","ishikawa","okano", "kaneko","kurosawa","saegusa","sasaki","shinohara", "sudoh","seki","takamura","hayashi","nakamura", "hosooka","matsumoto","mihajima","yoshimura","wada","wajima" 上記の文字列をポインタ配列に初期設定し、以下の仕様をはたすプログラムを組め。 アルファベットの小文字1字をキー入力する。 その文字で始まる名(文字列)があればすべて表示、なければその旨表示。 表示法は自由。 [3] 環境 [3.1] Windows xp [3.2] Microsoft visual c++ 6.0 [3.3] C++ [4] 7/21(金)まで [5] ポインタ配列を使うこと
>>945 pro1.
理由:pro2.は間違っているから(printf(%d 円, %d 個のとき\n",a,b);)
一瞬どこが間違ってるのかと思ったら"がないのか
>>940 うおぃ!神!ありがとうです!
でもみたことない単語がある(´・ω・`)
953 :
945 :2006/07/20(木) 00:59:29
そこは私のプログラム転記ミスです。
>>949 ありがとうございます
たすかりました。
>>952 見たこと無い単語って何?
defineなら文字を置き換えてるだけだから直接数字を書き込んでも大丈夫だよ
誰かお願いします>w<
>>945 whileは3回でforは4回回ってる気がするんだが気のせいか?
$ ./p1 1000 円, 700 個のとき 0%引き \700000 $ ./p2 1000 円, 700 個のとき 20%引き \560000 pro2かなw 問題の趣旨的に
>>959 いや、VCで実行してみたがそんな結果にはならなかったぞ?
> n=n++;
962 :
デフォルトの名無しさん :2006/07/20(木) 02:57:54
[1] 授業単元:繰り返し処理 [2] 問題文(含コード&リンク): 0以上の整数nを入力し、続いてn個の整数データを入力すると それらn個の整数のデータの最大値と最小値が出るようなプログラムを作りなさい [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (CPad) [3.3] 言語: (C++) [4] 期限: (2006年7月21日まで) [5] その他の制限: (if文とwhile文まで習いました)
>>962 #include<stdio.h>
int main(){
int n,a,max=0,min=65535;
scanf("%d",&n);
while(n>0){
scanf("%d",&a);
if(a>max)max=a;
if(a<min)min=a;
n--;
}
printf("最大値:%d 最小値:%d\n",max,min);
return 0;
}
眠い orz
964 :
デフォルトの名無しさん :2006/07/20(木) 03:15:00
>>962 #include<algorithm>
#include<iostream>
#include<limits>
int main(){
int n,
minimum=std::numeric_limits<int>::max(),
maximum=std::numeric_limits<int>::min();
for(std::cin>>n;n--;){
int v;
std::cin>>v;
minimum = std::min(v,minimum);
maximum = std::max(v,maximum);
}
std::cout << "min = " << minimum << " max = " << maximum << std::endl;
}
[1] 授業単元: プログラミング
[2] 問題文 キーボードで指定したファイルから単語を読み込み、出現回数をカウントして
最後にアルファベット順もしくは逆順に出力するプログラムを作成せよ。
ただし、以下の条件を満たすように設計すること。
1、アルファベット順に単語を管理するためには二進木をヘッダーファイルとして作成し使用すること。
2、表示の方法はアルファベットの昇順、降順に2種類があり、キーボードから指定した順番で表示する。
3、二進木への挿入、探索、表示は全て再帰関数を使用すること。
4、単語ファイルは以下のファイルを使用せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2412.txt また、以下のようなコマンドを受け付けるようにコマンド一覧(メニュー)を表示せよ
1、指定ファイルから単語を読み込み、出現回数を数え新たに二進木を作成する。
2、キーボードから入力した指定された単語の出現回数を表示する。
3、アルファベットの昇順または降順で全単語と出現回数を表示する。順序は指定すること。
4、キーボードから新しい単語を入力し、二進木に挿入する。
5、キーボードから入力した単語を二進木から削除する。
6、終了
[3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語:C++
[4] 期限: [2006年7月20日20:00まで]
[5] その他の制限:問題文に指定されている通りに作ること。
967 :
966 :2006/07/20(木) 14:39:33
自力では時間までに作れそうに無いのでどうかお力添えお願いします。
968 :
デフォルトの名無しさん :2006/07/20(木) 15:31:25
>>968 #include<iostream>
#include<fstream>
using namespace std;
int main(){
const int N = 10;
fstream fs("data.txt",ios::out);
if( fs.fail() ){
cout << "ファイルを開けませんでした" << endl;
return -1;
}
char data[256];
for(int i=0;i<N;i++){
cin >> data;
fs << data << endl;
}
return 0;
}
あれ、C++であってる?
970 :
お願いします・・ :2006/07/20(木) 16:54:42
まったくわかりません・・ [1] 授業単元: 中課題 [2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは とりあえず後回しで大丈夫です) <数独のルール> 1、空いているマスに、1から9までの数字のどれかを入れる。 2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の ブロック(それぞれ9マスあるブロックが9つある)のどれにも 1から9までの数字が一つずつ入る。 [3] 環境 [3.1] OS: UNIX [4] 期限: 明日の19時 [5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。 お願いします。。。。
>>970 とりあえずサンプルコードと入出力ファイルをうp
973 :
お願いします・・ :2006/07/20(木) 17:19:54
>>971 入出力ファイルは簡単な数字が適当にならんでありました。
サンプルコードは必要でしょうか?今ありません!
必要ならばすぐに学校行ってもって帰ります!
>>972 レポは自分で書くのです。まだかけていません・・
>>973 そのサンプルコードを参考にプログラムを作成しろって課題じゃないのか?
がんばって学校行って取ってこい。もちろん入出力ファイルも。
適当な数字を適当に出力すればいいのかw
サンプルコードはいらんよ、サンプルコードなんかに縛られたくない。 どうせ出力するだけのコードなんてたいしたもんじゃない。 入出力の形式だけ教えろ。
977 :
お願いします・・ :2006/07/20(木) 17:29:01
>>976 見た感じでは
6−−7−−12−
ー2ーー・・・・
・・・・・・・・
・・・・・・・・
という感じだったと思います。
わかりにくければ、学校に行って見てきます!
・・・・・・・
見るだけじゃなくてコピー取ってこい
979 :
お願いします・・ :2006/07/20(木) 17:30:15
>>974 今からすぐとりにいってきます!
45分ほどで帰ってきますので。
980 :
お願いします・・ :2006/07/20(木) 17:31:06
981 :
お願いします・・ :2006/07/20(木) 18:15:35
キーボードから7桁の整数を2つ読み込み、その積を表示する。ただし、整数型以外の変数を用いてはならない この問題がよく分からないのですがどうすればいいのでしょうか?
984 :
982 :2006/07/20(木) 18:33:31
すいませんでした [2] 問題文 キーボードから7桁の整数を2つ読み込み、その積を表示する。ただし、整数型以外の変数を用いてはならない [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual C++ 2005 ExpressEdition [3.3] 言語: C言語 [4] 期限: [5] その他の制限: 特にありません
988 :
お願いします・・ :2006/07/20(木) 19:18:27
見た感じ、出来そうでしょうか??
>>985 PC解除してくれないと見られない
いや見なくてもいい気もするんだけどさ
>>988 単純にバックトラックでいいのか?
うろ覚えだが、たしかアルゴリズムあった気がするんだよな・・・
課題出されるときに一緒にそーいう話聞いてない?
991 :
お願いします・・ :2006/07/20(木) 19:41:17
>>985 どういう意味でしょうか?どうすればよいのでしょう?
パソから見れると思いますが・・?
>>990 課題は自分のパソに問題文が送られるだけで説明はありませんでした。
同じ列には同じ数字がないように、かつ3×3の9マスにも同じ数字がない
ように並べるらしいです。
3×3の正方形が3×3個連なって、9かける9のマスになっています
992 :
お願いします・・ :2006/07/20(木) 19:42:23
>>991 あ、989は違う方に対してでした・・すみません
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。