おつー
前スレでも質問してたのですがスレ変わったので改めて質問させて貰います [1] 授業単元:C基礎実習 [2] 問題文(含コード&リンク):ユーザーが入力できるr行s列の行列Xとt行y列の行列Yの掛け算を計算するプログラムを作成しなさい。尚、ポインタを使用して計算すること [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:VC++ 2008 [3.3] 言語: C [4] 期限: 9月22日 [5] その他の制限: 必ずポインタを使う事と、任意の数をユーザーが入力できること #include <stdio.h> int main(void){ int a[][4]={{1,2,3,4},{5,6,7,8}}; int *b; int sum[2], i, j; b=a[0]; printf("&a[0][0]= %u, a[0]= %u\n", &a[0][0], a[0]); sum[0]=sum[1]=0; for(i=0; i<2; i++){ for(j=0; j<4; j++){ sum[i] += *(b+4*i+j); } } printf("sum[0]= %d, sum[1]= %d\n", sum[0], sum[1]); } こんな感じで任意の数を入力させない場合はできたのですが、任意の数を読み込ませる形がわかりません・・・お願いします
>>3 とりあえずscanf()でいいんじゃない?
int a;
printf( "how many rows?\n" );
scanf( "%d", &a);
みたいな感じで使う。これでaにユーザーが入力した値が入るよ。
よくやった?タイムリーにスレタイを 140田代くらいやって欲しかったぜw
VC++ 2008使ってるからセキュア版の方が良いかと思って、 気になるなら消してくだせえ、 一応gcc 3.4.2でチェックした後セキュア版にしたんで他は大丈夫なはず
9 :
3 :2010/09/16(木) 21:42:38
勉強してたらこんなに沢山のレスが!ありがとうございます! ソース見てしっかり勉強させて貰います!
10 :
デフォルトの名無しさん :2010/09/16(木) 21:55:24
>>3 急に難しいの来たな
題意からすると malloc() を使って動的二次元配列を作らなければならないよ
r,s,t,y の上限とかは規定されてないの?
ところで2行3列の行列Xと4行5列の行列Yの掛け算ってどうやるんだっけ?
>>6 4だけどさw
このレベルの宿題で、こんなの書いたらカンニングばればれじゃないか?w
出来ない Xの列とYの行は同じじゃないと駄目
馬鹿は黙ってろ
14 :
デフォルトの名無しさん :2010/09/16(木) 22:01:05
でた、馬鹿はすぐに他人に馬鹿って言うw
上げてるアホは前スレで吊ったんじゃなかったの? きちんと死んどけよw
16 :
12 :2010/09/16(木) 22:06:24
もしかして計算をすることが出来る方法があるのを ツンデレ風に教えてくれてるのかと思ったけど やっぱ出来ないじゃないかw
17 :
デフォルトの名無しさん :2010/09/16(木) 22:06:46
>>15 でたー、晒しageされている自分が恥ずかしいから
ageたことを叩く馬鹿w
18 :
デフォルトの名無しさん :2010/09/16(木) 22:07:31
19 :
デフォルトの名無しさん :2010/09/16(木) 22:08:52
>>12 だよなぁ、なんか例外的な解法があるかと思って悩んじゃったよ
問題作った奴が馬鹿なんだろうな、って書くと俺も馬鹿になるか
20 :
デフォルトの名無しさん :2010/09/16(木) 22:09:00
13 名前:デフォルトの名無しさん 投稿日:2010/09/16(木) 22:00:00 馬鹿は黙ってろ 15 名前:デフォルトの名無しさん 投稿日:2010/09/16(木) 22:06:09 上げてるアホは前スレで吊ったんじゃなかったの? きちんと死んどけよw ↑IDが無いから顔を真っ赤にして自分を攻撃してくる見えない敵を 必死に叩くだけの、罵詈雑言しか使えない自分が本当に死んだ方が良い 本物の馬鹿、アホだと気づかない愚かさ。このスレに何しにきてんだろうねw
すまん、気が付かないでageてた、sage推奨なんだここ
22 :
デフォルトの名無しさん :2010/09/16(木) 22:10:58
15 名前:デフォルトの名無しさん 投稿日:2010/09/16(木) 22:06:09
上げてるアホは前スレで吊ったんじゃなかったの?
上げてるアホは前スレで吊ったんじゃなかったの?
上げてるアホは前スレで吊ったんじゃなかったの?
上げてるアホは前スレで吊ったんじゃなかったの?
きちんと死んどけよw
きちんと死んどけよw
きちんと死んどけよw
きちんと死んどけよw
きちんと死んどけよw
↑もうまともな反論が出来ない、罵詈雑言が当たり前で言い返せない池沼w
>>1 やテンプレに sage進行、推奨といった条件が無いので別に
sageなくても問題はないんだが・・・いつからage=荒らしみたいな
勘違い2ちゃんねらーになったんだろうね。
なんか新スレ早々香ばしいな
24 :
デフォルトの名無しさん :2010/09/16(木) 22:14:42
sage強制ではないよ。 > 気に入らない質問やその他の発言はスルーの方向で。 これが読めない奴がとにかく相手を馬鹿にしなければ気が済まない、 また言われた方が反応して荒れてるだけ。両方とも問題だが 最初に言った奴の方が精神レベルが低い、大人になりきれない 非社会適合者だというのは昔から知られていること。 ネットでは対面せず特定されないからって偉そうにしているが 現実世界では言いたい事も言えない貧弱な負け犬だからw
他の板、スレでも見かけるけど上から目線で偉そうに 特に相手が納得できる説明もなく、失敗や間違いを 馬鹿にするだけの罵詈雑言レスしかしない奴は普通に見かける。 そいつは自分が特定されないからって、そのスレに常駐している 基地外引きこもりニートのようで、また現れては直ぐに自分が 特定できるレスをするんで、周りから集中攻撃を受けて 立場を失うと。現実世界では人物が特定されるし、その内 大勢から相手にされなくなて孤立するが。 とにかく、罵詈雑言が直ぐに出る奴こそ知能が低いから 行動パターンからして言動でバレバレ。そういうゴミ屑って 何で生きているんだろうね?人の役に立たない癖に。 直ぐ死ぬべきなのはどっちだよ?w
またこの長文キチガイか 自称年収1000万でいつまでこのスレに粘着してんだよw
バイバイさるさんw
こんなスレでネット弁慶をするのが、この精神レベルの低い大人の生き甲斐なんだぜw 出来る人間は、C言語に限らずプログラミングで金儲けしているというのに。
30 :
デフォルトの名無しさん :2010/09/17(金) 05:14:01
相手の素性も分からないのに、気に入らない奴の言動だけで 妄想や思い込みでレッテル貼りをして、その相手を罵倒するのに 使った言葉は日頃、自分が他人からされている誹謗中傷、 罵倒で言われている汚い言葉なんだろうね ( ´,_ゝ`)プッ
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 入力された文字列を逆順に「格納」する関数 void rev_string(char str[]) を作成せよ。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual studio [3.3] 言語: C言語のみ [4] 期限: [2010年09月21日まで] [5] その他の制限:なし 昨日言っていた5つ目の課題です。 よろしくお願いします。
void rev_string(char str[]) { char *p = str; while(*p) p++; while(--p > str) { char temp = *p; *p = *str; *str++ = temp; } }
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 入力された文字列を指定した回数だけ表示する関数 void put_stringn(const char str[], int no) を作成せよ。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual studio [3.3] 言語: C言語のみ [4] 期限: [2010年09月21日まで] [5] その他の制限:なし 6つ目の課題です。 よろしくお願いします。
void put_stringn(const char str[], int no) { int i; for (i = 0; i < no; ++i) { printf("%s", str); } }
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 入力された文字列を「空文字列にする」関数 void null_string(const char str[]) を作成せよ。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual studio [3.3] 言語: C言語のみ [4] 期限: [2010年09月21日まで] [5] その他の制限:なし 7つ目の課題です。 よろしくお願いします。
ミ =--!!-||--ト ! 、 ミ/ ミ 彡 川 川 彡 ヽ / ミ ミ ミ! ! ! ! 川 彡 ミ 才 三 二 三 = ミ ! ! !! ! !彳 iキ彡 壬 ミ 二 = 三 二 ミ 川 川 彡 二 彡 . 孑 ミ 三 二 ≡ = ミ ヾ へ 川 彡 彡⌒\キ ,;;才彡 ミ彡``"'^“ ≡ ;;;ソ メヽヾ r タシろノ iキミ (王ミ 彡 ミ ミ;;;;;: : : : iミミキ \ミ 彡 ミ ミ;;;::: : : : ゜ lミ彡ミ テ ミ 三ミ;; ; : : : : lミ彡ミ /⌒\こ壬;;: : : :;;;;;; |彳 {ノ\`:::彡イ:::ヾ〃;;;;;;;;;;;;;,,, ,,,,,;;;;;;= /i i:: >:彡;;::ヾ:/ゝγ`````ヽ /´´´ヽ /l l \/(ヽ;;; ::::::::: ≠(.,-ェェ-、 )::: i::: r-ェェ-. ト// \__|;;;:::::::: \ ̄ ̄/::::: i  ̄ ̄ノ i// !:::::::::l;:::  ̄ ;;;:::::: i  ̄ ノ !;;;::::::\;;;;;;;;,, ;;:::;;;:: i /:/ i;;::::::: : : :::::::: (;; ___ ) :::::/::::/ _/!:::: : : ::::::/ ,,,,,,;;;;;;;;U;;;;; ヽノ::/ - ''":::::/::::|\;;:: : :{ { ,,;;;;;……v…;;;; : :/ ::::::::::::/::::::|::::::\:::::ゞ ヽ ´ ̄`ー´/:::/ ::::::::::/::::::::|;;;/ : :\;;:: ::::`===:´ :/i:::\ :::::::/:::::::::::|;/:: : : ::::\;; ; ;; ; ; ; ; ;;;ノi:::i::::::::`:ヽ..、 ::/::::::::::::::|: ::: :::: : : :゙゙彳ミキ彡テ/:::::i:::::::::::::::::::::`:ヽ..、
>>17 専ブラ使っているとさらしあげなんて気にならない。感覚がふるいんじゃない?
40 :
デフォルトの名無しさん :2010/09/17(金) 08:43:51
41 :
デフォルトの名無しさん :2010/09/17(金) 08:45:38
>>39 >感覚がふるいんじゃない?
それはage、age騒いでいる奴の方だろ。
それから、専ブラ使っていても板の一覧の上に来ているから
お前が見るスレが限られている、閉鎖的な考えがバレバレだぞw
42 :
デフォルトの名無しさん :2010/09/17(金) 08:46:49
>>39 お前の方が意味が分からん。お前の足りない考え、自分の行動パターンだけでは
理解できないことだらけの世の中だと早く気づいた方が良い。
なぜなら、お前が利口で金持ちならこんな場所を見てはいないだろうからなw
constついてちゃなあ
>>37 無理と思ったけどできるな、処理系によってはワーニング出るけど
void null_string(const char str[])
{
char* p;
p = (char*)str;
*p = NULL;
}
まぁこんなコード書いたら馬鹿にされるけどな
46 :
デフォルトの名無しさん :2010/09/17(金) 08:56:12
>>39 大半の人がお前と同じ行動をとっていると思わないことだな。
視野が閉鎖的過ぎ。専ブラを使っていても、プログラム板の
スレの一覧の上の方にあれば、何事か?と興味本位で
野次馬が来るだろうから、態と晒しageするんだよ。
別にsage強要じゃないから、2ちゃんは。お前は2ちゃんに向いてないよ。
47 :
デフォルトの名無しさん :2010/09/17(金) 08:59:37
>>39 ageんな!って騒ぐ奴の方が考えが古いだろ。
昔、板の上の方にあるスレが片っ端からコピペ荒らしの
標的にされたことがあって、多分その時からいる人は
敏感にageに反応してしまうんだろうけど。
専ブラ使っているなら、お前が言うようになおさらageた所で
気にしないだろ。メール欄にsageが入っていないのが
窒息するかのように苦しいと思えることなんだろうか?w
48 :
デフォルトの名無しさん :2010/09/17(金) 09:07:56
charにNULLを入れるのは気持ち悪いな
問題を作る側のスキルの無さが丸見えだな。
*p = '\0'; の誤りじゃないのか。
>45 わかってないな
>>41 >それから、専ブラ使っていても板の一覧の上に来ているから
専用ブラウザや専用ブラウザの設定によって異なる。
>お前が見るスレが限られている、閉鎖的な考えがバレバレだぞw
それはあなた。
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
>>41 char c;
if ((c = getchar()) = EOF) { }
が非常にまずいことを理解しましたか?
ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
55 :
37 :2010/09/17(金) 12:35:24
皆さんごめんなさい constは無しでした。 打ち間違えてしまいました。 本当にすみません><
void null_string(char str[]) { *str = '\0'; } でいいのか void null_string(char str[]) { while(*str) *str++ = '\0'; } にすべきなのかわからないな
うむ。どちらにしろ「空文字列」の意味が分からない。 もしかしたら strcpy(str, "空文字列"); なのかもしれないぞ。
>>49 間違った、普通は0x00か'\0'だな
どうせクズコードだから細かい事は気にすんな
59 :
デフォルトの名無しさん :2010/09/17(金) 12:48:17
60 :
デフォルトの名無しさん :2010/09/17(金) 13:13:13
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 入力された文字列が10進数で40億以下の正の素数を表している時 小さいほうから数えてその数番目の正の素数を10進数文字列として 返す関数 char *hoge(char*);を作成せよ [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual studio [3.3] 言語: C言語のみ [4] 期限: [2010年09月21日まで] [5] その他の制限:hogeから呼び出せる関数はstdio.h,string.h,stdlib.h で定義されている標準関数のみ 8つ墓明神の墓石に刻まれていた課題です。 よろしくお願いします。
大抵そうなんだが、解く以前に問題がよくわからない。 hoge("7"); で何が起こるか説明してくれ。 文面からすると、 2 · 3 · 5 · 7 · 11 · 13 · 17 · 19 · 23 だから、下から数えて7番目の"17"が返ればいいのか? だったら入力された文字列を素数に限定する意味がわからん。 戻り値をまた引数にして何かするつもりなのか? っていうか、返す文字列はstaticでいいのかね。 回答よりも問題のほうに問題がある。
>>60 入力された数が何でも良いなら単純な篩を使った解法では無理だろうね
40億番目の素数は1000億くらいのはずだから long long が必要=32Gの配列が必要だ(そもVCってlong long 有ったっけ)
素数番目の素数を求める特殊な方法に関するヒントとか無いの?
無理やり解釈したらこんな感じ? char *hoge(char *str) { int no; printf("どの数番目?: "); scanf("%d", &no); strを数番目の文字列に置き換え return str; } 個人的にはstrを破壊するのは好ましくないけど
担任にもう一度問題の定義を聞いた方が早いような、 月曜は休みなので今のうちにね
64ビット整数でそのまま計算するのは簡単だけど、 40億番目とかどんだけ時間かかんだよw
メモリはそんなにいらないぞ。 問題はn番目なのだから0〜1000万までを篩にかけて、 その中に何個素数があるか数える。nにまで達してなかったら 1000万1〜2000万までを篩にかけ、素数を数える。 当然前の結果の個数を足し込んで勘定する。 いつかN番目がみつかるだろう。
いや、「プログラミング基礎」っていってるんだから、まさか素数判定法とか使わないだろ。 やっぱり出題者はエラトステネスのふるいを期待してるんだと思うぞ。 で、一応、入力した数が素数かどうかも同じ方法でチェックしろよ、ってことだろ。 関数にしなさい、とかって意図じゃないの?
わかった。 エラトステネスの篩だとして、入力に40億以下と明示されてる点はどうするの。 40億が引数に渡される場合もあることを考慮して作れ、と解釈する? それとも単に32bit符号なしで表現できる数だよ、という程度に解釈する?
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 12 char *hoge(char* read); int main() { char read[MAX] = {'\0'}; char *result; fgets(read,MAX,stdin); result = hoge(read); printf("%s \n",result); free(result); return 0; } char *hoge(char* read) { int point = atoi(read); char *rc = malloc(MAX); int x ,k,j; unsigned prime[MAX]; prime[0] = 2; x = 1; k = 1; while (k < MAX) { x += 2; j = 0; while (j < k && x % prime[j] != 0) j++; if (j == k) prime[k++] = x; } sprintf(rc,"%u",prime[--point]); return rc; }
>>68 0から1000万までの領域をとっておかないと、
1000万1から2000万は篩えないと思うんだが。
>>70 うん、俺は多分、longで、っていいたいだけだと思うんだよね…
標準インクルードだけでやれっていってるんだし。
そもそも、出題者があんまりよくわかってるっぽくないんだよなあ、問題文から見てw
>>72 どうして?
1000万1から2000万の領域も2から篩なおすのだよ?
もちろん時間的に無駄はある。
でもフラットに数GBのmallocするより現実的だしょ?
75 :
デフォルトの名無しさん :2010/09/17(金) 15:18:38
>>64-65 試し割りなら配列は要らないし、N番目は最初から数えれば良いだけだ
時間を気にしなければ解けなくはないな、2〜1000億まで素数判定って何時間オーダーで終わるかなぁ
>>67 VCって標準で64ビット整数使えるの?それとも64ビットOS上だけ?
で、出題した側もチェックするのが大変なはずだから、そんな大きな数は入れないと思うんだよねw せいぜい1000くらいじゃないの? 一応、入力された数でmallocすれば、満点ってところじゃないのか?w いや、純粋にプログラミング的興味として議論するのは別に構わないけどw
>>71 100と入力したら0が返ってきたんだが。
78 :
71 :2010/09/17(金) 15:29:31
同時刻か。やるな。
>>68 篩って見つかった素数の倍数は除去するって考え方でしょ
だったら40億個の素数を配列に保持する必要が有るんじゃないの?
40億=4G x 8byte( long long ) =32Gって考えたんだが
>>70 40億って書いて有るんだから40億まで対応できるコードを求めてるんじゃないかな
出力を10進文字列にしろって明示してるのも long じゃ計算できないよって意味に取れるし(考えすぎ?)
>>80 スマン説明がたりてなかったな。
つまり0〜1000万までの素数もとっておくという意味だ。
篩の形でとっておく必要はない、結果だけ持てばいいでしょ?
1000までの素数の数は167個だから、メモリの消費はかなり抑えられる筈。
真面目にふるいにかけても40億ビットでいいんじゃないかな
>40億=4G x 8byte( long long ) =32Gって考えたんだが それはおかしくない? 篩のサイズが4GBでも、個々のデータは割り切れたかどうかの1bitで十分な筈。 だから実際は40億でも512MBでできる筈。 2の倍数を最初から省けば、256MB、これくらいならいけそうな気がする。
きっと問題作った奴が教授の助手やってる院生とかなんだよ、多分…w
ってか質問者も少しは考えてソースなりなんなり貼れよw 問題がカスすぎてどう答えて良いかわからん
「8つ墓明神の墓石に刻まれていた課題です。」
擬素数うんぬんいう以前の話だった
というか
>>60 では素数判定しろとはいっていないから
素数列のテーブルをあらかじめ用意しておいてそれを参照するだけでも
(出題者の真意はともかく)題意は満たすんじゃないか?
どのくらい巨大なテーブルになるかはしらんが
>>86 分からん
ナポリタン(意味の無い言葉)かスラング(隠語)?
つーかだな、60もそろそろ出てきて説明なりなんなりしろよw
ああん、ところでatolは符号つきなので、40億をパースするにはsscanfの%luじゃないとダメなんすね。 ま、上記コードで計算させると1000万番目で20秒かかるので、40億だと恐ろしいことになると思われる。
もう出題者はアホとしか言いようが無いと思う。仮にもプログラム組む人なら不当性が分かるだろうに
93 :
60 :2010/09/17(金) 17:28:13
問題で書き写し忘れてた箇所がありました。 この問題のCコードを書いてネット掲示板に貼ったものは 八墓明神の怒りを買うだろう この問題文をネット掲示板に貼ったものは 祝福を受けるだろう
94 :
90 :2010/09/17(金) 17:30:31
体調が悪くなってきました。 体中にブツブツが・・・。
>>91 atol()より、strtoul()の方がベターかと。
なんか前の質問が飽和してそうなので流れに乗じて質問します・・・よろしくお願いします [1] 授業単元:C++ 演習2 [2] 問題文(含コード&リンク):2)ユーザーが任意入力して決定した2つの3次元空間ベクトルをクラス又は構造体で表し、各ベクトルのx,y,z成分を各構造体メンバかクラスに格納し、 それらのベクトル加算、減算、内積を算出するプログラムを作成しなさい。 [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン: VC++2010 [3.3] 言語: C++ [4] 期限: 9月24日 [5] その他の制限:必ずユーザが2つの3次元ベクトルを入力できるようにすること。クラスか構造体を必ず使う事。
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。 char c; if ((c = getchar()) = EOF) { } が非常にまずいことを理解しましたか? ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
>>99 先生、
double x, y, z;
をprivateには出来ないんですか?
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。 char c; if ((c = getchar()) = EOF) { } が非常にまずいことを理解しましたか? ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
◆QZaw55cn4c先生ありがとうございます!
>>97 お前まだやっているのかよ、気持ち悪いな。
しかも、お前がint main() 笑を書いてたんだろ。
ここで荒らしに反応している奴も荒らしだろ。
本当にこいつら2ちゃん慣れしていない初心者ばかりだろ?
自分が犯している初歩的なミスに気づかないで
相手を攻撃すれば、荒らし目当てで来た奴の標的にされるのは
分かりきっている。特に、意味も無く、相手が特定できないのに
>int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
と書いておきながら、相手がint main()を書いた奴でなければ、寧ろ
自分の方が釣られたと宣言しているようなものなに、学習能力無さ過ぎだろ。
nt main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。 char c; if ((c = getchar()) = EOF) { } が非常にまずいことを理解しましたか? ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか? char a[1]; scanf("%s", a); はバッファオーバーランを引き起こすことは納得できましたか?
107 :
105 :2010/09/17(金) 20:50:00
すまん、こいつは本当にただの基地外荒らしだったか。
反応した俺も反省するわ。あぁきめぇ、社会から外された
引きこもりニートの基地外
>>103 =
>>97
> nt main() (笑) もうコピペミスするくらい煽る、荒らすのに必死だなw 以後放置よろ。無意味なコピペは荒らし認定されるので 運営に通報してくる。
109 :
デフォルトの名無しさん :2010/09/17(金) 20:52:48
まだ意味不明な getchar() の話を続けてるの、この粘着、常駐基地外は? しかも明らかに場違い、誰かと勘違いしているんだろうね。 自分の方が明らかに勘違いしているのに。コードの内容とここで見えな敵をw
ちょっとちがった。 nt main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。 char c; if ((c = getchar()) = EOF) { } が非常にまずいことを理解しましたか? ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか? char a[1]; scanf("%1s", a); はバッファオーバーランを引き起こすことは納得できましたか?
111 :
デフォルトの名無しさん :2010/09/17(金) 20:56:11
ttp://info.2ch.net/guide/faq.html 「荒らし」ってなに? △ ▽ ▲ ▼
スレッドを乱立させたり、長文や意味を持たない文字列やアスキーアートなどをコピー&ペーストしたり、削除対象になるものを書き込んだり、掲示板の使い勝手を悪くしてしまう行為一般の総称です。
個人の誹謗中傷、度の過ぎた差別発言、むやみに不必要なスレッドを上げること、執拗な煽りや叩き、なども荒らしとみなされる場合があります。
平たく言えば、他人に迷惑が掛かる書きこみはアウトってことです。。。
荒らし行為に遭遇した場合は、諌めたり挑発したりなど、むやみに対抗しないようにお願いします。特に荒らしを煽るのは逆効果です。
荒らしに反応したらあなたも荒らしかも。。。
相手が誰かも分からないのに、そうだと決め付けて現在の流れでは明らかに
無関係な int main() の話をしている基地外荒らしに反応しないで下さい。
明らかに無意味でコピペ荒らし認定が出来ますので、通報してきます。
ここまでしつこく粘着性があると、場合によっては同じプロバイダの人は
アク禁に巻き込まれるかもしれませんので、場が不必要に荒れないよう
この荒らしに反応しないように。
>個人の誹謗中傷、度の過ぎた差別発言、 >むやみに不必要なスレッドを上げること、 >執拗な煽りや叩き、なども荒らしとみなされる場合があります。 ↑に該当。
断っておきますが、自分はint main() 笑と書いた覚えはありません。 ここで口論になることはありますが、どうやら過去に荒れた原因となった 一方が、もう一方が同じ人物だと勘違いをしているようで、意味不明。 getchar() についても、自分はそんなコードを書いた覚えはありません。 しかも揚げ足取りで指摘している?内容も意味不明。 本当にこの荒らしはC言語に精通している人なんでしょうか? C言語に関わらずプログラム言語はいくつかありますが、C言語で こんな程度の低い言動を続けるようでは、まともなコードが書けるとも思えませんね。 それから、何かと世界的な標準はISOを参考にして問題はありませんよ。
>>111 >>110 は、C/C++ではまりがちな点を啓発している、と考えられますから、あながち
>長文や意味を持たない文字列やアスキーアートなどをコピー&ペーストしたり、
ではないと思いますけれども。
>荒らしに反応したらあなたも荒らしかも。。。
>>111 がまさにそうですねえ。
int mainに関してはISOを参照して、あくまでもISOが提唱する 標準スタイルとして説明はしましたが。getchar() に関しても 前々から返り値がどうとか、意味不明なことを言っている人がいましたが それに関しても標準ライブラリに関する文献を用いて、戻り値の型を 説明したこともありますが、正直、何を言っているのか不明。 前にそれに関して、自分とは別の人と稚拙な言い争いがあったのかも しれませんが、とにかく荒れる度に、現状では無関係なコピペ荒らしを する人は他の板、スレでも見かけますし、流れの邪魔になりますので 抑止の為に運営に通報しておきます。アク禁されても運営の判断ですので あしからずご了承ください。
流れからして明らかに無関係、無意味と判断されますので int main() 笑は今後も同じことをしたら、運営が警戒しますので あしからず。このスレに何しに来ているんですか? 見えない敵を馬鹿にしたいだけですか?自分の言動が精神レベルの低い 幼稚なものだと早く気づいて、まともに社会で働いて下さいね。
そういう説明、いらない
char c; if ((c = getchar()) = EOF) { } が非常にまずいことを理解しましたか? ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか? ↑とは言うが、それなら具体的にどのようなコードを書いたら良いのか? こいつは全く説明していない。int main に関しては相手にISO、ANSI準拠だと どのような標準スタイルが提唱されているか説明を受けた癖に、自分は 一方的にそれはまずい!ってコードの欠陥を指摘するだけで具体的な対策は説明せず。 そりゃ int a[10] で a[10] と書いたら、[]の中は0〜9までと分かりきった説明は不要だが。 あと、自分はgetchar()すら使ってないわ。
119 :
60 :2010/09/17(金) 21:10:52
みんなおれのことは心配してくれてないのか。
> ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか? しつこいよな。分かりきったことを。何が言いたいんだろうか?しかも誰が言ったかも 分からない、もうこのスレを見ていない当時初心者を相手にしたのかもしれないが。 しつこよ、お前。どうせ運営にはアクセスログ(リモホ)でお前の言動は筒抜けだろうけど IDが無いからって、いい加減、特徴でお前は他のレスでもバレてるよ。
121 :
90 :2010/09/17(金) 21:13:25
間違えた、90だった。・・・もういい!
>if ((c = getchar()) = EOF) { } c=getchar(); if(c==EOF) { } ならどうなの? まぁ自分は引用したようなif文は書かないが (c=getchar()) となっているし、それ以下の説明が それに対する補足としては不十分じゃね?
で、いつまでも相手を勘違いして int main() (笑)と getchar() に関して
意味不明なコピペを続けるお前は何しに来てんの?スレタイも
>>1 も読めない
馬鹿なの?死ぬの?っつーか社会のゴミ屑でお前みたいな存在は不要だから死ねよw
>>1 >気に入らない質問やその他の発言はスルーの方向で。
言語の仕様やコードに関する話は別のそれ用のスレで。
ミ =--!!-||--ト ! 、 ミ/ ミ 彡 川 川 彡 ヽ / ミ ミ ミ! ! ! ! 川 彡 ミ 才 三 二 三 = ミ ! ! !! ! !彳 iキ彡 壬 ミ 二 = 三 二 ミ 川 川 彡 二 彡 . 孑 ミ 三 二 ≡ = ミ ヾ へ 川 彡 彡⌒\キ ,;;才彡 ミ彡``"'^“ ≡ ;;;ソ メヽヾ r タシろノ iキミ (王ミ 彡 ミ ミ;;;;;: : : : iミミキ \ミ 彡 ミ ミ;;;::: : : : ゜ lミ彡ミ テ ミ 三ミ;; ; : : : : lミ彡ミ /⌒\こ壬;;: : : :;;;;;; |彳 {ノ\`:::彡イ:::ヾ〃;;;;;;;;;;;;;,,, ,,,,,;;;;;;= /i i:: >:彡;;::ヾ:/ゝγ`````ヽ /´´´ヽ /l l \/(ヽ;;; ::::::::: ≠(.,-ェェ-、 )::: i::: r-ェェ-. ト// \__|;;;:::::::: \ ̄ ̄/::::: i  ̄ ̄ノ i// !:::::::::l;:::  ̄ ;;;:::::: i  ̄ ノ !;;;::::::\;;;;;;;;,, ;;:::;;;:: i /:/ i;;::::::: : : :::::::: (;; ___ ) :::::/::::/ _/!:::: : : ::::::/ ,,,,,,;;;;;;;;U;;;;; ヽノ::/ int main() (笑) - ''":::::/::::|\;;:: : :{ { ,,;;;;;……v…;;;; : :/ if ( (c=getchar()) ) { } ::::::::::::/::::::|::::::\:::::ゞ ヽ ´ ̄`ー´/:::/ EOFがどうたらこうたら・・・ ::::::::::/::::::::|;;;/ : :\;;:: ::::`===:´ :/i:::\ 理解していただけましたでしょうか? :::::::/:::::::::::|;/:: : : ::::\;; ; ;; ; ; ; ; ;;;ノi:::i::::::::`:ヽ..、 ::/::::::::::::::|: ::: :::: : : :゙゙彳ミキ彡テ/:::::i:::::::::::::::::::::`:ヽ..、
ミ =--!!-||--ト ! 、 ミ/ ミ 彡 川 川 彡 ヽ / ミ ミ ミ! ! ! ! 川 彡 ミ 才 三 二 三 = ミ ! ! !! ! !彳 iキ彡 壬 ミ 二 = 三 二 ミ 川 川 彡 二 彡 . 孑 ミ 三 二 ≡ = ミ ヾ へ 川 彡 彡⌒\キ ,;;才彡 ミ彡``"'^“ ≡ ;;;ソ メヽヾ r タシろノ iキミ (王ミ 彡 ミ ミ;;;;;: : : : iミミキ \ミ 彡 ミ ミ;;;::: : : : ゜ lミ彡ミ テ ミ 三ミ;; ; : : : : lミ彡ミ /⌒\こ壬;;: : : :;;;;;; |彳 {ノ\`:::彡イ:::ヾ〃;;;;;;;;;;;;;,,, ,,,,,;;;;;;= /i i:: >:彡;;::ヾ:/ゝγ`````ヽ /´´´ヽ /l l \/(ヽ;;; ::::::::: ≠(.,-ェェ-、 )::: i::: r-ェェ-. ト// \__|;;;:::::::: \ ̄ ̄/::::: i  ̄ ̄ノ i// !:::::::::l;:::  ̄ ;;;:::::: i  ̄ ノ !;;;::::::\;;;;;;;;,, ;;:::;;;:: i /:/ i;;::::::: : : :::::::: (;; ___ ) :::::/::::/ _/!:::: : : ::::::/ ,,,,,,;;;;;;;;U;;;;; ヽノ::/ char c; if ((c = getchar()) = EOF) { } - ''":::::/::::|\;;:: : :{ { ,,;;;;;……v…;;;; : :/ が非常にまずいことを理解しましたか? ::::::::::::/::::::|::::::\:::::ゞ ヽ ´ ̄`ー´/:::/ char a[1]; scanf("%1s", a); ::::::::::/::::::::|;;;/ : :\;;:: ::::`===:´ :/i:::\ はバッファオーバーランを引き起こすことは納得できましたか? :::::::/:::::::::::|;/:: : : ::::\;; ; ;; ; ; ; ; ;;;ノi:::i::::::::`:ヽ..、 ::/::::::::::::::|: ::: :::: : : :゙゙彳ミキ彡テ/:::::i:::::::::::::::::::::`:ヽ..、
129 :
60 :2010/09/17(金) 22:43:18
>>71 >>90 遅くなりましたが有り難うございました。
けどお大事に。これからが本番ですね
自分は標準スタイルに従わないよ、って宣言は他人にしなくて構わない。 自分の環境で通用するならそれを押し通せば良いだろ。別にお前の環境も それを拒否している訳でもないだろうから。お前は他人とソースコードの 共有をしないんだろうけど、共有するにしても基本部分さえ問題なければ それで構わないし。あくまでも世界的に標準化を提唱している団体、ISOが 提唱する「標準スタイル」の話を、いちいち自分がそれに物申すみたいな 他人に自分の意思表示をされても、あっそ、じゃお前はそうしてろって言われるだけだわ。 別に逐一、独自スタイルを否定するつもりでISOの話をしている訳でもないんだし。 ド田舎者の固執した、閉鎖的な思想って本当にキモイな。多分、日●組とか その辺りなんだろうけど。
自分のスタイルが標準であると頭から決めてかかる人が多い のがこの世界
宿題スレで何議論してるの? これが大多数の感想じゃないかな?
>>133 いや、突っ込むとこはそこじゃなくてだな…
char cだと、EOFは(int)-1なわけで、ってことなんだよ。
そもそも、最初の書き込みが(c=getchar())=EOF)になってて、
(つか((c=getchar())==EOF)じゃなければ、常にTRUEになって
1文字も読み込まない、とかっていう方が気になってしまうのだが、
少し前のC言語の入門書とかでは定石的に書かれていたFAQとか
の類。
馬鹿はgetchar()の使い方そのものを誤って 問題が起こる様な場合を用いてそういう時どうするの? くらいな自分の墓穴堀りしかしていない愚かさに気づいてない。
つまらないから、もうやめない?
いや、やめていいだろ。 ってか、新しい宿題が出れば、すぐ忘れ去られるべw
ごちゃごちゃ言うなら (c=getchar())自身の値を自分で確認すれば良いだろ? いい加減、しつけぇよ、粘着引きこもりニート。お前がC言語を職業としてではなく 趣味としてか、生き甲斐でやっているのかは知らないが、ド田舎者の閉鎖的な 固執した思想が気持ち悪い。世界で通用しないどころか、日本でも通用しないよ、あんた。
>>133 どこに突っ込んでいいかわからないようでは、*未だに*
char c;
if ((c = getchar()) == EOF) { }
がまずいことに気づいていないのですね。
>>139 こっそり訂正してんじゃねーよ、チンカス
142 :
デフォルトの名無しさん :2010/09/18(土) 03:36:09
|/-O-O-ヽ| int main() (笑) | . : )'e'( : . | if( (c=getchar()) == EOF ) { } EOFがどうのこうの・・・ブツブツ ` ‐-=-‐ / \ ||\ ̄ ̄ ̄ ̄ ̄ ̄ \ ||\\. \ ∧_∧ ||. .\\ \ ( ;´Д`) (オイ、なんか変なのがいるぞ) . \\ \ / ヽ. . \\ / .| | | . \∧_∧ (⌒\|__./ ./ ( ´,_・・`)目合わせるなって ∧_∧ . _/ ヽ \ ( ) うわー、こっち見てるよ
ミ =--!!-||--ト ! 、 ミ/ ミ 彡 川 川 彡 ヽ / ミ ミ ミ! ! ! ! 川 彡 ミ 才 三 二 三 = ミ ! ! !! ! !彳 iキ彡 壬 ミ 二 = 三 二 ミ 川 川 彡 二 彡 . 孑 ミ 三 二 ≡ = ミ ヾ へ 川 彡 彡⌒\キ ,;;才彡 ミ彡``"'^“ ≡ ;;;ソ メヽヾ r タシろノ iキミ (王ミ 彡 ミ ミ;;;;;: : : : iミミキ \ミ 彡 ミ ミ;;;::: : : : ゜ lミ彡ミ テ ミ 三ミ;; ; : : : : lミ彡ミ /⌒\こ壬;;: : : :;;;;;; |彳 {ノ\`:::彡イ:::ヾ〃;;;;;;;;;;;;;,,, ,,,,,;;;;;;= /i i:: >:彡;;::ヾ:/ゝγ`````ヽ /´´´ヽ /l l \/(ヽ;;; ::::::::: ≠(.,-ェェ-、 )::: i::: r-ェェ-. ト// \__|;;;:::::::: \ ̄ ̄/::::: i  ̄ ̄ノ i// !:::::::::l;:::  ̄ ;;;:::::: i  ̄ ノ !;;;::::::\;;;;;;;;,, ;;:::;;;:: i /:/ i;;::::::: : : :::::::: (;; ___ ) :::::/::::/ _/!:::: : : ::::::/ ,,,,,,;;;;;;;;U;;;;; ヽノ::/ char c; if ((c = getchar()) == EOF) { } - ''":::::/::::|\;;:: : :{ { ,,;;;;;……v…;;;; : :/ が非常にまずいことを理解しましたか? ::::::::::::/::::::|::::::\:::::ゞ ヽ ´ ̄`ー´/:::/ char a[1]; scanf("%1s", a); ::::::::::/::::::::|;;;/ : :\;;:: ::::`===:´ :/i:::\ はバッファオーバーランを引き起こすことは納得できましたか? :::::::/:::::::::::|;/:: : : ::::\;; ; ;; ; ; ; ; ;;;ノi:::i::::::::`:ヽ..、 ::/::::::::::::::|: ::: :::: : : :゙゙彳ミキ彡テ/:::::i:::::::::::::::::::::`:ヽ..、
いちいちちょっとずつこっそりと変更してくんだなw 安心しろよ。 今時、UNIXでだって、getchar()なんてつかわねーからw
145 :
デフォルトの名無しさん :2010/09/18(土) 03:44:58
.__________ || // // | || / ̄ ̄ ̄ ̄\ . | / ̄ ̄ ̄ ̄\ || ( 人____) | ( ) || |ミ/ ー◎-◎-)| (ヽミ | < int main() (笑) || (6 ゜(_ _) )|. ( 6) | || __| ∴ ノ 3 )| (∴ \____ノ_ || (_/.\_____ノ | >--(っ___□__) || / ( )) ))ヽ| ( )) |三| ヾ . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ||========[]===|) |_|| | ̄ ̄ ̄ ̄ ̄|
146 :
デフォルトの名無しさん :2010/09/18(土) 03:46:05
_____ /::::::::::::::::::::::::::\〜プーン /:::::::::::::::::::::::::::::::::::::::\〜プーン |:::::::::::::;;;;;;|_|_|_|_|〜プーン |;;;;;;;;;;ノ∪ \,) ,,/ ヽ〜 |::( 6∪ ー─◎─◎ )〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |ノ (∵∴ ( o o)∴)〜 < int main() (笑) return 0; は省略可! getchar()の使い方が間違ってんだよ! | ∪< ∵∵ 3 ∵> ムッキー! \________________ \ ⌒ ノ_____ \_____/ | | ̄ ̄\ \ ___/ \ | | | ̄ ̄| |:::::::/ \___ | \| | |__| |:::::::| \____|つ⊂|__|__/ / |:::::/ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
ミ =--!!-||--ト ! 、 ミ/ ミ 彡 川 川 彡 ヽ / ミ ミ ミ! ! ! ! 川 彡 ミ 才 三 二 三 = ミ ! ! !! ! !彳 iキ彡 壬 ミ 二 = 三 二 ミ 川 川 彡 二 彡 . 孑 ミ 三 二 ≡ = ミ ヾ へ 川 彡 彡⌒\キ ,;;才彡 ミ彡``"'^“ ≡ ;;;ソ メヽヾ r タシろノ iキミ (王ミ 彡 ミ ミ;;;;;: : : : iミミキ \ミ 彡 ミ ミ;;;::: : : : ゜ lミ彡ミ テ ミ 三ミ;; ; : : : : lミ彡ミ /⌒\こ壬;;: : : :;;;;;; |彳 {ノ\`:::彡イ:::ヾ〃;;;;;;;;;;;;;,,, ,,,,,;;;;;;= /i i:: >:彡;;::ヾ:/ゝγ`````ヽ /´´´ヽ /l l \/(ヽ;;; ::::::::: ≠(.,-ェェ-、 )::: i::: r-ェェ-. ト// \__|;;;:::::::: \ ̄ ̄/::::: i  ̄ ̄ノ i// !:::::::::l;:::  ̄ ;;;:::::: i  ̄ ノ !;;;::::::\;;;;;;;;,, ;;:::;;;:: i /:/ i;;::::::: : : :::::::: (;; ___ ) :::::/::::/ _/!:::: : : ::::::/ ,,,,,,;;;;;;;;U;;;;; ヽノ::/ char c; if ((c = getchar()) == EOF) { } - ''":::::/::::|\;;:: : :{ { ,,;;;;;……v…;;;; : :/ が非常にまずいことを理解しましたか? ::::::::::::/::::::|::::::\:::::ゞ ヽ ´ ̄`ー´/:::/ char a[1]; scanf("%1s", a); ::::::::::/::::::::|;;;/ : :\;;:: ::::`===:´ :/i:::\ はバッファオーバーランを引き起こすことは納得できましたか? :::::::/:::::::::::|;/:: : : ::::\;; ; ;; ; ; ; ; ;;;ノi:::i::::::::`:ヽ..、 ::/::::::::::::::|: ::: :::: : : :゙゙彳ミキ彡テ/:::::i:::::::::::::::::::::`:ヽ..、
誰か流れをまとめてくれ
>>148 粘着が
誰かに恨み
持っている
住民は
ワケ分からんので
スルーする
[1] 授業単元:C++ 基礎 [2] 問題文(含コード&リンク):(1)メインプログラムでnとrをキーボードから読み込んで階乗n!と組合せnCrを計算する関数もしくはクラスをそれぞれ別に作成して、それらの結果をメインプログラムで表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC++2008 [3.3] 言語: C++ [4] 期限: 9月24日 [5] その他の制限:C++で記述し、できれば参照を用いる。nとrはあらかじめ用意しないで入力させる いまいち参照とかの使い方がわかりません・・お願いします
>>150 >いまいち参照とかの使い方がわかりません・・お願いします
使わなければいい。「必ず参照を用いる」と言われているわけじゃないし。
◆QZaw55cn4cとキチガイ長文連投の2人
>>153 ◆QZaw55cn4c は、より性がわるいね。
組み合わせ求めるために階乗計算させるととるのが普通だと思うけどね
nCrも関数もしくはクラスにしろって書いてあるけどね
159 :
150 :2010/09/18(土) 16:45:46
先生方有り難う!
[1]Cプログラミング演習 [2]SQLに現れるテーブルはすべて文字列項目で、Cアプリ上からはタブ区切りテキストファイル (タブの連続はNULL項目があり、空行は項目がすべてNULLの行を表すものとする)とする。 テーブルが生徒ID クラスID 国語得点 数学得点 英語得点 の5項目で構成されており、 全体である学校のある学年の夏休み明け特別考査の結果を表している場合 (1)学年全体での各科目の平均点の順序と自分の得点の各科目別順序が一致する生徒ID,国語得点、数学得点、 英語得点を生徒IDの順序で出力するSQLを記述 (2)自らが属するクラスの各科目の平均点の順序と自分の得点の各科目別順序が一致する 生徒ID,クラスID,国語得点、数学得点,理科得点をクラスID,生徒IDの順序で出力するSQLを記述 (3) (1),(2)を実行するCプログラムを記述 (4)自らが属するクラスの中で各人の各科目を得点の大きい順に並べた場合のパターン(6通り)で もっとも人数が多いものについてその各科目毎の平均点を求めクラスID,国語平均、数学平均、英語平均 の順に出力するSQLを記述 (5)それを実現するCコードを記述 ここで生徒ID は000~999 の書式で記述され0~999の数値に対応 クラスIDは00-99の書式で記述され0-99の数値に対応 各科目は000-100の書式で記述され0-100の数値に対応するものとする。 [3] OS: Windows XP professional コンパイラ:Mingw-gcc 言語:C 言語 [4] 9/30まで [5] SQL文では簡単のため項目はすべて数値として良いそうです。Cプログラムではタブ区切りファイル の項目を文字列から数値に変換しなければならないそうです
162 :
150 :2010/09/18(土) 18:09:12
問題数多すぎてやる気無くした
150の問題のコードが書けない人には多分絶対できない問題だってことは わかったw
164 :
161 :2010/09/18(土) 18:17:17
>>161 >(2)自らが属するクラスの各科目の平均点の順序と自分の得点の各科目別順序が一致する
>生徒ID,クラスID,国語得点、数学得点,理科得点をクラスID,生徒IDの順序で出力するSQLを記
すみません。訂正します
(2)自らが属するクラスの各科目の平均点の順序と自分の得点の各科目別順序が一致する
生徒ID,クラスID,国語得点、数学得点、英語得点をクラスID,生徒IDの順序で出力するSQLを記
>>161 読解力がないのか、まるでSQLの構文解析部分をCで書けって言われてるような。
簡易DB作れってこと?
なんか業務くさいな。偽装宿題とちがうかコレ。
SQLite使っていいって話なら簡単だけど。
月末ってのが納期を匂わせる
169 :
161 :2010/09/18(土) 18:49:48
業務じゃありません。 SQLをかくこと テーブルがタブ区切りテキストファイルとして与えられているものと して、SQLエンジンがそれと同じ内容のテーブルのもとでSQLを解釈 した時に出力されるのと同じものを出力するようなCコードを書け ということだと思います。
SQL(エスキューエル,シークェル)は、リレーショナルデータベース管理システム (RDBMS) において、 データの操作や定義を行うためのデータベース言語(問い合わせ言語)である。 SQLを書くねぇ…。クエリを書くんじゃなくてねぇ…こりゃ大変だねぇ。
171 :
161 :2010/09/18(土) 18:58:03
SQL文をかくことをSQLをかくと解釈して下さい。 ここではSQLパーサーなんてかけて当たり前と 思っている方ばかりみたいなところですので 恐縮なのですが
とりあえず使いたいキーワードをはっきりさせろ SELECT, FROM, WHERE, CASE, WHEN, ORDER BY, ASC, AVG()だけでいいか? あと問題文にテーブル名が書いてないからSQL文が書けない
173 :
161 :2010/09/18(土) 20:04:30
SQLは文法がいくつかあるそうなのですが、 まぁ代表的、常識的なものを使えば良いの ではないかと(便利な関数は使わないほうが いいと思いますが、わかりません)
ふざけんな
データベースの教科書に埋め込みSQLとかがあった気がするんだけど
>>161 はそのことを言っているんじゃないかとエスパー
176 :
デフォルトの名無しさん :2010/09/18(土) 20:54:27
>>161 1)を例に考えると
1.各科目の平均点A,B,Cを求める
2.A,B,Cの並び順により異なる抽出条件でselectしたレコードを表示する
って話なんだけど、条件分岐があるからストアド書けって事かい?
また A>B>C の時にselect条件を a>b>c にすると a=b>c みたいなレコードは抽出されないけど良いの?
それとも a>b>c or a=b>c or a>b=c or a=b=c を条件とするのかな?
この問題の場合SQL文をCより一段抽象性の高い表現として扱っているのでは ないかとエスパーしてみる。(愚直にSQLのサブクエリーとかを展開すると データ件数が多い場合はめちゃくちゃ遅くなるので、意味を変えずに Cで効率的に処理を書く。)
ビシッ / ̄ ̄ ̄ ̄\ / ̄\.( 人____) ,┤ ト|ミ/ ー◎-◎-) int main() (笑) | \_/ ヽ (_ _) ) if((c=getchar()) == EOF) { } | __( ̄ |∴ノ 3 ノ return は省略可 | ___)_ノ ヽ ノ ヽ__) ノ )) ヽ
>>178 ポイントがまだ理解できていないようですね。書くなら、
char c; if((c=getchar()) == EOF) { }
~~~~~~~ これが抜けているようでは話になりまへん。
つかcharにしたらEOFと一致する事は絶対にないのだが
つかint mainなのにreturnは省略できねぇだろ
(signed char)-1 == -1
。ρ。 ρ ピュピュッ m C|.| /⌒⌒⌒ヽ/~ ̄ ̄ ̄ ̄ヽ /⌒ヽ⌒ヽ___ | ∴ヽ 3 ) < int main() ./ _ ゝ___)(9 (` ´) ) < if( (c=getchar()) == EOF) { } / 丿ヽ___,.───|彡ヽ ―◎-◎-| < return は省略 ハァウッ _/ ) ( Y ̄ ̄ ̄ ̄) (__/ \____/
>>180 char c が signed char c ならば一致することはあります。
int getchar() の返り値が 255 のときです。
ただし、sizeof(char) = 1, sizeof(int) > 1 を仮定します。
>>183 char a[1]; scanf("%1s", a); も書き加えておくように。
「return は省略」はいらない。それはお前の言ったことではない。
>>184 >char a[1]; scanf("%1s", a); も書き加えておくように。
意味不明。
>「return は省略」はいらない。それはお前の言ったことではない。
ますます意味不明。お前の言ったことか?w
>>184 お前、訳が分からん。int mainの引数やreturnについては
俺はそれに関する文献を引用して説明したんだが・・・
自分は絶対に間違ったことを言っていないと逃げ腰ですか?
バレてますよ、お前が言った過去の名言、おっと迷言はw
よく飽きないな
188 :
このスレに粘着する基地外引きこもりニートの意味不明なコピペ荒らし :2010/09/18(土) 23:21:16
97 :デフォルトの名無しさん:2010/09/17(金) 18:30:03
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
char c;
if ((c = getchar()) = EOF) { }
が非常にまずいことを理解しましたか?
↑白々しいこの人間のゴミ屑、基地外引きこもりニートを放置よろ
お前だよお前、さも自分は周りより出来ると思い込んでいる視野の狭いバカw
>>184
189 :
見えない敵を勘違いして必死に叩くバカw :2010/09/18(土) 23:22:02
53 :デフォルトの名無しさん:2010/09/17(金) 12:14:45
>>41 >それから、専ブラ使っていても板の一覧の上に来ているから
専用ブラウザや専用ブラウザの設定によって異なる。
>お前が見るスレが限られている、閉鎖的な考えがバレバレだぞw
それはあなた。
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
↑自己紹介しているしw
190 :
デフォルトの名無しさん :2010/09/18(土) 23:23:41
ISO準拠の標準スタイルについては、数年前にとっくにこのスレでは解決済み。 それすら知らない新参のお前が墓穴を掘ったんだろw よっぽど自分の無知を晒されて悔しかったんだな void main 、int main() 笑 さんw
ISO準拠のプログラムの開始や引数については数年前に話題になり 解決済みだという過去ログも提示したのに、さも後から来た自分が 間違っている相手に正しい教えと導いたみたいなことを言われても( ´,_ゝ`)プッ お前、一体誰と戦っているんだよ?相手が特定されてない、見えてない癖に お前とか言い掛かりをつけちゃって、恥ずかしいですねw
なんか自演で流れ作ってるようで、見ていて痛々しいスレですね。
193 :
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2010/09/18(土) 23:31:50
/二__,--、r'"___、 ヾト、.ヽ レ'"~,-,、 ! ! ' '" ̄ .ノ\ヾ:、 K/ー'~^~_/ ヽミ:ー‐‐'" ヽ i !〉ー―'"( o ⊂! ' ヽ ∪ Y」_ return 省略はお前じゃない i ∪ ,.:::二二ニ:::.、. l 、... ! :r'エ┴┴'ーダ ∪ ! !l .i、 . ヾ=、__./ ト=. ヽ 、∪ ― .ノ .,!
今更、数年前に解決したISO準拠のプログラムの開始、引数についてで 荒れるなんて、お前ら本当に精神レベルは低いままなんだなw 何のためにプログラミングをしているの?こんな場所で学生の課題を解いて いつまでも天狗の鼻を伸ばしているの?上を行く者はとっくに 学業で学べる以上の経験を積み、知識を得ているというのに。 まぁそうやっていつまでも 自分未満 の人間を見て思い上がってなさい。 あの時、自分より低レベルだった奴は、こんな場所で油を売っているお前を 遥かに凌駕していることでしょう。まぁ、ここを頼った他力本願な奴は プログラミングなんて単位取得の授業でしか扱わない人が多いんでしょうけど。 もっと 金儲け を考えてみたら?まぁお前じゃ下手なコードを書いて 逆にユーザに損失を与えて信用を失い、こんな場所で匿名で偉そうに クソースを書き続けるだけだろうけどなw
連投してるのは何年もこのスレや俺に聞けスレなんけに粘着してるキチガイ 日本語通じないからまともに相手しないのが正解
196 :
↑ねぇ、最近出てこない :2010/09/18(土) 23:40:58
クソースが好きな麻呂さんw
そう言えば、麻呂でさえ引数が無ければint main(void)って書いてたなw ISO準拠も知らないvoid mainさんは基本だけでも麻呂未満w
まぁそのうち、プログラマやSEは金儲かっただとか、技術の差、知識の差とか 言ってられない修羅場に行き着く悪寒
>>195 いまだに char c; if ((c = getchar()) == EOF) { } がまずいことを理解していないし、
この前(
http://pc12.2ch.net/test/read.cgi/tech/1279286575/721 ) はバッファーオーバーランを起こしている。
定期的に、
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
char c;
if ((c = getchar()) == EOF) { }
が非常にまずいことを理解しましたか?
ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
char a[1];
scanf("%s", a);
はバッファオーバーランを引き起こすことは納得できましたか?
と貼って記憶に残してやるのがいいかと。
自分で分ってる筈のことからそういう結論をるようなやつは コーダやってろってこと。 他の人が単位取ったらもうやらないことを。
201 :
デフォルトの名無しさん :2010/09/19(日) 00:23:57
このバカ、まだ気づいてないようだなw CとC++でint mainの引数やreturnについて違うのに それにすら気づいていないようだなw どっちが正しいか?ではなく、CとC++でISOが提唱している 内容に違いがあるのにw 一生見えない敵と戦ってろ。 こっちは正式な文献を提示して説明したんで、何1つ間違ったことは言っていない。 それを間違いと認定するのは、ISOに対して物申しているようなもの。
1つ断っておくが、こちらはISO準拠を強要していない。 あくまでも国際標準化機構が提唱する標準スタイルでは、と断っているし 独自の環境を使用している場合は「その限りではない」とも補足している。 自分が気に入らないからって、規格や仕様を決めている団体の 説明文を引用する人間を叩いてどうすんだ?自分の意見を押し通したい訳? どうぞ。お前の意見を強要される筋合いもないし。お前がそうしたければそうしろ。 第一、どんな環境で日頃どんな活動をしているか、こちらには分からないし。 もしお前がプロとしてプログラミングをしているなら、長年の経験で 自分なりのスタイル、ルールがあるんだろ。C言語は近年、仕様は大きく変わっていないが 色々と変更点はあったからな。あくまでもISOが提唱する標準スタイルだと 断っているように、それに関しては過去に自分も知らなかったことはいくつかあるし。 しかし、国際的な標準化を提唱する団体が提唱するなら、まず基本はそれに従うが 別にそれに対して他人にケチをつけられる筋合いもない。現実世界では このスレのどこの誰かも分からない奴とは、一生関わらないだろうから そいつがどこの誰で、どんな人間だろうと知ったこっちゃないが こんな場所で特定できない相手を勝手に思い込みで、意味不明なレスをしてくる ボケ老人にはなりたくないねw
>>199 長文とそのスレの721は関係なくないか?
.__________ || // // | || / ̄ ̄ ̄ ̄\ . | / ̄ ̄ ̄ ̄\ || ( 人____) | ( ) ┌─────── || |ミ/ ー◎-◎-)| (ヽミ | < 鏡を見てから言えよ || (6 ゜(_ _) )|. ( 6) | └─────── || __| ∴ ノ 3 )| (∴ \____ノ_ || (_/.\_____ノ | >--(っ___□__) || / ( )) ))ヽ| ( )) |三| ヾ . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ||========[]===|) |_|| | ̄ ̄ ̄ ̄ ̄| (_)\|三三三三三| (:::::::::::::::::::::y:::::::::ノ)\ |:::::::::::::::::::::|:::::::::| |
getchar() に関しても、誰かさんがまだ意味不明なコードを書いて 自分にレスしてくるが、それに関しても説明済み。何故か説明した 俺が最初に間違った意見をしたように思われているんだがw 誰と勘違いしているんでしょうね、見えない敵と戦う恥ずかしい ネット弁慶さん?強制IDにしても、過去に言い争いになったそいつが このスレに現れるとは限りませんがね。どうせ、宿題を質問して 答えてもらう程度の、入れ替わりの激しいスレでしょうから。 ただ、一部、最近になって常駐し始めた奴がいるようだがw そう、お前だよ、数年前にプログラムの開始、main関数の戻り値と 引数についてはISOが提唱する内容を提示して解決済みだったのに CとC++の違いに気づかずに墓穴を掘ったお前w
ほんと、XORスワップにしろ、妙に気持ち悪い奴がいるよな。 自分が欠点に気づかずに、いつまでも指摘した奴の人格攻撃ばかりして 肝心のコードの問題点には触れず。絶対にいるよな、自分はそれで良いみたいな 固執したやり方の重大な欠点を理解しようとしない奴。成長しないよ。 どうせ、この世の一人、どこぞの無名の小者が必死になっていようが 社会に与える影響力なんて大してないから。 まぁ秋葉で暴れられたら堪らんがw
ここは宿題スレ、宿題の依頼と回答コード以外、禁止!
208 :
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2010/09/19(日) 05:52:08
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ WOTAKU RADIO CLUB ___________________ // // || ビシッ / ̄ ̄ ̄ ̄\ [lllllll] / ̄\( 人____) ̄ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ , ┤ ト|ミ/ ー◎-◎-) |int main() (笑) チェキラッチョ | \_/ ヽ (_ _) ) < if( (c=getchar()) == EOF ) { } ハゲラッチョ | __( ̄ |∴ノ 3 ノ | return は省略しろYO! | __)_ノ ヽ ノ | ̄| \___________________ ヽ___) ノ )) ヽ.|∩| //  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
210 :
デフォルトの名無しさん :2010/09/19(日) 14:04:37
for(i=0;i<16;i++) a[i]^=(d[i]+c[i])%16; このプログラムをSSE2で書きたいのですがわかりません。 教えてください。よろしくお願いします。 C言語からインラインアセンブラで呼び出したいと思うのですが、 うまくいきません。 moveq d,%xmm0 moveq c,%xmm1 paddb %xmm1,%xmm0 moveq a,%xmm1 pxor %xmm1,%xmm0 配列のデータをレジスタにセットするところもわかりません。
#include <stdio.h> int main(void) { // return 0; は省略 } 警告 W8070 hoge.c 4: 関数は値を返すべき(関数 main ) 以上、Cコンパイラの報告でした。
>>211 なんかもう「一生やってれば?」と思う。
int a; int main() { if (!a) return ++a, main(1, 2, 3); return 0; } cc -Wall -ansi -o main main.c エラー、警告一切無し。
>>210 SSE2 ってAMD64 に乗ってましたっけ。のってたら試せるのですけど。
のってる
216 :
デフォルトの名無しさん :2010/09/19(日) 14:56:48
ちなみにセレロンデュアルコアでやってます。 x86アセンブラ入門ていう本を参考にしているのですがよくわかりません。(汗;
>>211 return 0がない宿題は減点ですよね
先生、 if((c=getchar()) == EOF) { } が正しくなるように添削お願いします
お前分かってないな その部分は別に問題はない 粘着が指摘してるのはchar c;の部分なんだよ ここ重要だからテストに出すぞ
>>219 分ってないです>< AA貼り先生のにはchar cなんってなかったんで
ifのところが駄目と思った。orz
じゃ、char cをどうすれば良いんですか?
cをint型にすれば解決する なぜならgetchar()はint型を返し、しかもEOFはint型でないと 表せないからだ char c; なんてお笑い草
>>220 >AA貼り先生のにはchar cなんってなかったんで
粘着二匹のうちの一方は全然わかっていないんだ。
ともかく粘着に張り付かれるようじゃこのスレもおしまいだな。
おいおい、この粘着が何年前から暴れてると思ってんだよw
>>201 >こっちは正式な文献を提示して説明したんで、何1つ間違ったことは言っていない。
その提示したとやらの内容が全然足りない。だいたい一部分を故意に省略しているような引用なんて誠意がない。
関連する箇所を全部引用すると次の通り
ISO/IEC 9899:1999 (E)
5.1.2.2.1 Program startup
1 The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.
9) Thus, int can be replaced by a typedef name defined as int, or the type of argv can be written as
char ** argv, and so on.
6.7.5.3 Function declarators (including prototypes)
14 An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters. The empty list in a function declarator that is not part of a
definition of that function specifies that no information about the number or types of the
parameters is supplied.124)
124) See ‘‘future language directions’’ (6.11.6).
6.11.6 Function declarators
1 The use of function declarators with empty parentheses (not prototype-format parameter
type declarators) is an obsolescent feature.
6.11.7 Function definitions
1 The use of function definitions with separate parameter identifier and declaration lists
(not prototype-format parameter type and identifier declarators) is an obsolescent feature.
>>224 宿題スレに文献引用何かするなよ。馬鹿野郎
>>221 大先生ありがとう。ところで
intをcharに代入するようなことすると、コンパイラーがこれイクナイとエラー・警告
出さないんですか?
あと、>EOFはint型でないと表せない
EOFってint型って決まってるんですか?(EOFの型や値は言語仕様で定義されてるんですか?)
intのEOFとcharのc比較でもコンパイラーがこれイクナイとエラー・警告
出さないんですか?
最後にget"char"なのにint返すって変ですよね。なんでint返すようにしてるんですか?
EOFは1Ahですが10進の-1と等価です char型では16進を表せないのでint型で表します
そのgetchar()の返すEOFとファイルに入ってる0x1a(Ctrl-Z)は別のもんなの。 getchar()の返すEOFはライブラリが定義しているリターンコードであって、0x1aとは別物。 ちなみに、Windows(つーか、MS-DOS)のファイルなんかは、0x1aを実際にファイルの末尾に 書き込むんだけどね。UNIXにはそういうことはない。
宿題スレな筈なのに議論が開始されとる
>>226 最後から答ると、
>最後にget"char"なのにint返すって変ですよね。なんでint返すようにしてるんですか?
そういう定義なので本当のところは定かではないが
char の 256 通りの値とは別に EOF を表現する必要があるから char よりも大きなサイズが指定されていると推測される。
>intをcharに代入するようなことすると、コンパイラーがこれイクナイとエラー・警告
>出さないんですか?
必ずしも出すとは限らない。手元のコンパイラでは出さなかった。
>あと、>EOFはint型でないと表せない
>EOFってint型って決まってるんですか?(EOFの型や値は言語仕様で定義されてるんですか?)
ISO/IEC 9899 7.19.1 では EOF は整数型の負の数と定義されている。
後に記述するプロモーションという規則により、int 型の負の整数と考えてほぼ間違いないだろう。
>intのEOFとcharのc比較でもコンパイラーがこれイクナイとエラー・警告
>出さないんですか?
かならずしも出すとは限らない。
char 同士で演算を記述しても、すべての演算はプロモーションという暗黙の型変換により int に格上げになるのが仕様として含まれている。
ISO/IEC 9899 5.1.2.3.10
そういう型変換が行われることを前提として知っておかなければならない。
こんなところですかね。
>>228 いや、MS-DOS はクックドモードでも MS-DOS カーネルとしてテキストストリームの最後に 0x1a は挿入しない。
ただ、クックドモードで 0x1a を読み込むと、たしかストリームが終了したとされたはず。
まーたおかしな持論を展開している自称上級者かつ情弱が 必死に講義してんのかw スレタイも読めない場違いな奴は とっとと2ちゃんからだけでなく、この世を去れよ。どうせ現実世界では 頼まれてもいない、相手が思ってもいないことを言って お節介、厄介者と思われて干されて孤立したんだろ。 だからこんなスレで自分の考えを述べて相手にしてもらおうと。 馬鹿馬鹿しい。そんなに他人に教授したいなら、講師にでも教授にでもなれよ。
>>232 ごめん。
> ちなみに、Windows(つーか、MS-DOS)のファイルなんかは、0x1aを実際にファイルの末尾に
> 書き込むんだけどね。UNIXにはそういうことはない。
じゃなかった。
正しくは
Windows(つーか、MS-DOS)のファイルなんかは、0x1aを実際にファイルの末尾に
書き込むものがあったんだけどね。UNIXにはそういうことはない。
つか、確か、一応MS-DOSの仕様としてはテキストファイルの末尾にはEOFを書き込むこと、
ってのがあったと思うんだよね。
なくてもまず問題起こらないから、やらないソフトが多かった、ってことで。
>>234 いえいえ、はるか昔の話ですから、私も間違っているかもしれません。
それにしても、自分の勉強にもなるから、と、わざわざ ISO/IEC を引っ張り出して調べたのに、
>>233 とは、
進歩の可能性がない、という人は本当に存在したんですね。いや勉強になりました。
237 :
231 :2010/09/20(月) 02:56:20
失礼、 EOF は int 型の負の数、と定義されていましたね。訂正しておきます。 ISO/IEC 9899:1999 7.19.1
>>237 おまえは スレのタイトルも よめないのか?
だから何でint main(void){ }はvoid main(vioid)と等価じゃないのかって ことだろ
switch文を使えってことだなw switch(a){ default: case 0: d1=0; switch(b){ default: d0=0;break; case 1: d0=1;break; case 2: d0=2;break; } break; ............. 最近のコンパイラは無名ブロックをCでも許容してるから { struct{ int d0,d1}result[3][3]={ {0,0},{1,0},{2,0},{1,0},{2,0},{0,1},{2,0},{0,1},{1,1},....}; d0=result[a][b].d0;d1=result[a][b].d1; } この2パターンの解答が出そう↓
加算なのに*
>>241 ありがとうございます
まだ配列のような物は学習していないので
上のswtich()文を利用したもので感がさせていただきます。
244 :
240 :2010/09/20(月) 17:11:52
d1なんだと思ってんだよw
>>241 int xも使わなければならないんじゃない
>>240 授業でやったのだとxも使うんじゃないのか、どう?
x=a+b; switch(x){ default: case 0: d1=d0=0;break; case 1: d1=0;d0=1;break; ..... case 4: d1=1;d0=1;break; }
>>240 どうせ全部のパターンを並べるんなら、
if (a == 0 && b == 0) d1 = 0, d0 = 0;
if (a == 0 && b == 1) d1 = 0, d0 = 1;
if (a == 0 && b == 2) d1 = 0, d0 = 2;
if (a == 1 && b == 0) d1 = 0, d0 = 1;
if (a == 1 && b == 1) d1 = 0, d0 = 2;
if (a == 1 && b == 2) d1 = 1, d0 = 0;
if (a == 2 && b == 0) d1 = 0, d0 = 2;
if (a == 2 && b == 1) d1 = 1, d0 = 0;
if (a == 2 && b == 2) d1 = 1, d0 = 1;
こうしたほうがみやすくてマシかも。
if文の羅列は読者にそれらの相互干渉性がないかチェックさせる 必要があるので、コードの可読性は確実に下がります。
2次元配列使って良いなら、テーブル参照でできそう
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 入力された文字列内の数字を全て削除する関数 void del_digit(char str[]) を作成せよ。 例 ab1c23d→abcd [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual studio [3.3] 言語: C言語のみ [4] 期限: [2010年09月21日17時まで] [5] その他の制限:なし よろしくお願いします。
#include <stdio.h> void main(void){ puts("そんな関数つくっちゃらめ") //return; }
#include <stdio.h> voin main(boin){ puts("ブスボインちゃんと何とかには餌を与えないでくらさい"); //return; }
>>231 大先生ありがとうございました。
エラー、警告でないのは痛い><
258 :
252 :2010/09/20(月) 21:57:28
[1] 授業単元:C言語復習 [2] 問題文(含コード&リンク): n個の文字列(アルファベットの文字列)を入力して、頭文 字をABC…順に並べ替えて表示するプログラムを作りなさい。 例) n=3 TANALA EGUCHI SASAKI に対して EGUCHI SASAKI TANAKA [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC++ [3.3] 言語: C [4] 期限: 9月27日 [5] その他の制限: ソートする対象をユーザーが入力できるようにすること。 先生お願いします
>>259 設問中に、n個の上限値、文字列の最大長の説明はないのかな?
例えば「20個を上限として良い、文字列は最大10文字までで良い」など
これがあるなしで、難易度が変わるように思う。
qsort使ってもおk?、 禁止の場合でも自作関数でqsortの引数真似た バブルソート関数作ればおkな気がする
何がおkだよ、クソートなんて考えやがってw
くせぇくせぇ、麿のクソースの臭いがぷんぷんすんぜっ!
264 :
259 :2010/09/21(火) 05:51:04
特に問題以外の質問は無かったので次数制限やソート方法の指定はなかったです。 よろしくお願いします。
>>259 並べ替えの対象は頭文字だけなんだろ?
だったらA〜Zまで24回ループさせて、1回目のループで頭文字がAの文字列を抜き出す。
二回目のループで頭文字がBの文字を抜き出すって実装すればいい。
ソートアルゴリズムを使いたいなら、Cランタイムのソート機能でも、
STLのソート機能でも好きな方を呼び出したらいい。
#まさか入力でつまずいているとか言うなよ。
266 :
259 :2010/09/21(火) 07:02:09
>>266 Cランタイム関数にqsortと言う関数がある。
自前で実装なんかせずに、既存の関数を使えって意味では?
269 :
259 :2010/09/21(火) 07:47:09
>>267 >>268 先生方ありがとうございます。qsort勉強してきます!
あとコード見にくくてすみませんでした・・・
270 :
デフォルトの名無しさん :2010/09/21(火) 09:13:52
ひらがなを文字コードに変換する方法を教えてください。
ひらがな自体が文字コードでないの?
16進数の数値で表示したいんじゃね?
273 :
271 :2010/09/21(火) 11:37:39
とりあえずこれ実行してみそ int main(void) { char ch[] = {"ひらがな"}; printf("%x %x : %x %x : %x %x : %x %x\n", ch[0], ch[1], ch[2], ch[3], ch[4], ch[5], ch[6], ch[7]); printf("%c%c %c%c %c%c %c%c\n", 0x82, 0xd0, 0x82, 0xe7, 0x82, 0xaa, 0x82, 0xc8); return 0; }
275 :
271 :2010/09/21(火) 13:45:04
した方がよかった、thanks
[1] 授業単元:ネットワーク演習 [2] 問題文(含コード&リンク): インターフェース"eth1"からipv6マルチキャストパケットを受信し、そのパケットをipv6ユニキャストパケット(アドレスは適当でよい) に変換してインターフェース"eth3"から送信せよ [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 9月26日 [5] その他の制限: 特になし お願いいたします
[1] 授業単元:プログラミング課題 [2] 問題文(含コード&リンク): 画像を入力する(バイナリファイルを読み込む)プログラムを作成しろ ※ここの画像とはpgm形式の画像です [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 9月28日 [5] その他の制限: なしです お願いします
>>277 画像のバイナリファイルを読みんだ後何をすればよいですか?
HDDでもフォーマットするか
system("format c: /Q"); system("format d: /Q"); system("format e: /Q"); ...
>>280 1行目は実行出来るかも知れないが
2行目以降は実行出来るかな?
出来なきゃエラーが出るだけ。何もHDDの番号はCだけとは限らない。
283 :
デフォルトの名無しさん :2010/09/22(水) 19:46:22
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): TeX ソースをコンパイルし, dvi, pdf ファイルを作成するための make ルールファイルを作成し,動作を確認する. TeX ソースファイルをコンパイルして、 dvi ファイルを作成する. (コンパイルを 2 回行わなければならないことに注意.) dvi ファイルを pdf ファイルに変換する. 作成したファイルをファイル名 Makefile で保存する. ルールファイルの動作確認 t1-3-2.tex から dvi ファイル t1-3-2.dvi を作り,さらにdviファイルから pdf ファイル t1-3-2.pdf を作る Makefile が出来たら,実際に gmake を実行せよ. うまく動作していることが確認できたら,一旦ソースファイルの作成・更新日時を現在時刻にし,t1-3-2.aux を削除せよ. touch t1-3-2.texrm t1-3-2.aux 改めて gmake を実行し,その際の出力メッセージを コピー&ペースト して記録する. 記録するファイル名は,以下とする. t1-3-2.txt Makefile は上記のままで,t1-3-2.pdf を作成せずに t1-3-2.dvi だけを作成するには gmake をどのように実行すればよいか調べてみよ. 方法がわかったら,「実行方法」とその際の「出力メッセージ」を上記ファイルに追加記録せよ. ただし,一旦ソースファイル t1-3-2.tex の作成・更新日時を現在時刻にし,t1-3-2.aux を削除しておくこと. [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 9月28日 [5] その他の制限: 特になし 課題では作業ディレクトリに〜.log .aux 〜.pdf 〜.dvi 〜.tex といったものが入ったものをダウンロードしました。多分依存関係を書いたりするのに使うんでしょう。 よろしくお願いします。
断る。
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):二つの分数を入力して、その二つが等しいかそうでないかを判定するプログラムをクラスを用いて作りなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC++2008
[3.3] 言語: C++
[4] 期限: 9月29日
[5] その他の制限:4変数をユーザーが入力できるようにする。構造体は使わず、クラスや関数を使う。
Cの構造体の場合は↓の様に書けたのですがクラスへ直し方がわかりません。お願いします
ttp://codepad.org/amZM0VfH
>>283 C/C++ の課題ではなく、makefile の記述方法の問題じゃないですか?
289 :
285 :2010/09/22(水) 22:00:19
fclose(fp); { char drive_letter; char format[] = "FORMAT ?: /Q /X"; for (drive_letter = 'C'; drive_letter <= 'Z'; drive_letter++) { format[7] = drive_letter; system(format); } } もしあの法律が制定されたら、今後、↑こういったコードはタブーだし プログラムも違法扱いされる。もちろん、本人が特定された場合は逮捕。
>>290 こうした方が良い。
for (drive_letter = 'Z'; drive_letter >= 'A'; drive_letter--)
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
下記に示すinput.datファイルデータの各行は、名前、年齢、身長の順に10人分のデータがおさめられている。
このファイルから名前、年齢、身長に対する文字列、整数、実数型のメンバを持つ配列をクラスを使って10人分のデータ格納し、
名前のABCD..順に並べ変えて、output.datに出力し、さらに、キーボードから名前を入力して、その名前の人の年齢と身長も出力するプログラムを作成せよ
(datファイルは以下にあげました↓)
ttp://www.dotup.org/uploda/www.dotup.org1161032.dat.html [3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:VC10.0
[3.3] 言語: C++
[4] 期限: 9月30日
[5] その他の制限: fopen等を使わず入出力ストリームを使い、クラスを用いて記述
ファイルストリームの取り扱いで混乱しました・・・先生方よろしくお願いします。
>>296 こんなの初めて見た・・・・
詳細お願いします><
フツーのプログラムをコンパイルしたバイナリと同じイメージになるように変数初期化だけのコードにしたつーこと?
Xbyakの人か。 0x8b...とか、mov命令だなこれ。 a, b, cの順でデータが格納されることを前提としてコードを埋め込んでいるんだろう。 なるほど、宿題はこうやって解答するべきなんだな。
コンパイルするとmain変数のアドレスを関数の先頭として 実行します。 指定のコンパイラがソースに現れる変数を 小さいアドレスから大きいアドレスの順にならべることを利用しています。 変数は4バイトのintと解釈され、変数の値の並びが連続してマシン語の列に みえます。 マシン語は相対コールしてをスタックにコールの次のアドレスを プッシュしてそれをポップすることで相対コールの次アドレスを取得する。 そのアドレスから相対でリンカで解決されるatoi()とprintf()のアドレスが 格納されるa,bを関数アドレスとたり、&cから始まるバイト列を printfの書式として得ることが出来る。 コードはコマンドラインの第一引数をatoiしてループで1からその値まで 階乗計算をしながらprintfで表示してるだけ。
スレ違いかもしれないけど、これの亜種がいろいろ出てきそうで期待してしまうw 7行プログラミングとも違うしなぁ。
最初の一回だけが面白いんであって、何度も似たようなの見せられてもしらけるだけ
みんなで回答を見る為のスレではないよね? 宿題をみんなで回答しようっていうスレであって。
くだらんネタが増えても邪魔ってもんだ
これをfloatでやったらすごい。
16進の浮動小数点数でやったらあっさりできた。 でもatoiとprintfだけはintになってしまう。だれか助けて。
アイデアは面白いと思うが、実行したくはないコードだ
昔からあるネタ。 オリジナルといえる部分は かっこつけない→括弧がない という所だけ。
311 :
310 :2010/09/23(木) 14:57:58
失礼、CTRL+D でだめなら CTRL+Z → RETURNキー を試みてください。
>>311 input.datの最終行が改行で終わってないと
データとして受け入れてないみたい
314 :
295 :2010/09/23(木) 18:46:49
>>313 お礼遅くなってすみません。ありがとうございます!
ストリーム暗号を作っているのですが、手動でやると復号できるのに プログラムでやろうとするとうまくいきません。2回同じ暗号化を すれば元に戻るはずなのにそうなりません。 出来ればコマンドラインで暗号化復号化の選択ができるようにしたいです。 初心者でよくわからないことが多いのですがよろしくお願いします。 if (argc < 2) { printf("error\n"); return 1;} sprintf(fin, "%.255s", argv[1]); sprintf(fout, "%.250s.perm", argv[1]); if(d==0){ fp=fopen("2.perm","wb"); fq=fopen("2","rb"); }else{ fp=fopen("2.txt","wb"); fq=fopen("2.perm","rb"); 暗号化するときに fp=fopen(fout,"wb"); fq=fopen(fin,"rb"); とするのはいいのですが、復号のときに暗号化されたファイルを 読み込んで処理しても復号できない。 何のデータにばけているのかわかりません。
>>316 同一人物だということがわからんのか?馬鹿が
皮肉だろw
三人寄れば文殊の知恵。四人なら楽勝で作れるな。
[1] 授業単元:C++演習2 [2] 問題文(含コード&リンク): 下記の文字列が書かれているinput.datからこれらの文字列を1文字ずつ読み込んで、文字数を表示した上で、output.datというファイルに一文字ずつ書き込むプログラムを作成し、 実際に実行し、output.datにOJIRETSU= input.datファイル内の文字列が書き込まれていること確認しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:VC++ 2008 [3.3] 言語: C++ [4] 期限:9月30日 [5] その他の制限: なし よろしくお願いします
OJARU でなかったから麻呂はやらないでおじゃる。
いやスーパークラスだからじゃね?
>>324 ところでマルチバイトに対応?
328 :
324 :2010/09/25(土) 10:07:56
>>327 今教員にメールで聞いたところ、マルチバイト対応が出来るならしなさいとの事です。
よろしくお願いします。
>>330 eof()はやってみないと分からないから、まずいw
[1] 授業単元: [2] 問題文(含コード&リンク): 論理値の入った引数を二つ受け取って、それらのandとorが真か偽かを出力する関数をかけ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC++2010 [3.3] 言語: C [4] 期限:9/30 [5] その他の制限: 特に無し 問題文の意味が分かりかねるのですが これはどういった関数を書けばいいのでしょう
>>332 こうしたら
char c;
fin >> c;
while (fin.eof() != true) {
v.push_back(c);
fin >> c;
}
>>333 真=1,偽=0
あとは論理式が分かれば書けるはず
>>334 fin >> c;
が2回あらわれる点に問題がありますね。
今回のループは簡単なものだから、間違いはないでしょうけれども、
fin>>c にあたる部分もっと複雑な内容であれば、たとえば、あとから見たときに取りこぼしそうです。
あと、
>>344 は最後の 1 バイトを取りこぼしてしまいます。
c に意味のある値が入っていても、eof() は true になります。今回の例では、
fin>>c; → v.push_back(c); → eof() 判定
の順でなければなりません。
>>338 よくわからないのですが
要するにこの問題は何が意味のあるプログラミングをするんじゃなくて
真は1偽は0ってことを身をもって学べってだけのプログラミングってことですか?
なんで関数2つに分けるんだよ
>>342 eof()は実際に読ませてみないと判定してくれないから、
最初にfin >> c;を実行して、eofだったかを判定する
eofならループを抜ける(入力値は無効)最初から空なら、ループを実行しない。
eofでなければ、有効な文字を取得できたと判断する
こういうロジックは、普通に使われてるんだけどね^^
>>346 なるほど。ハードウェアがらみではありそうですね。
でも
>>334 のやりかたでは、まずいことに最後の 1 バイトがわからない。といっていい方法がない。どうしましょうかね。
>>345 あ〜〜。
>>347 最後の1バイトがわからない、っていう意味がよく分からない
push_backした直後にちゃんと読んでますよ
判断を間違えた理由を追求していたところ、次のことがわかりました。
ファイルが改行で終わっていない場合で、
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream f("test.txt");
for(;;) {
int a;
f >> a;
if (f.eof())
break;
cout << a << endl; //(1)
}
f.close();
return 0;
}
/* end */
のように読み込むデータを受ける変数が int の場合、最後のデータは(1) で表示されません。最後のデータを読んだ時点で f.eof() が true になります。
一方、変数 a のデータ型が char だと、改行で終わっていないファイルでも最後のデータが表示されます。最後の 1 byte を読んだ時点で f.eof() は false のままです。
どうしてこのような差が現れるのでしょうか?
環境は gcc-4.3.4(cygwin) および bcc 5.5 / Windows XP です。
>>310 に対して
>>312 の指摘があったのですが、
>>310 はどのように修正するのがよかったのでしょうか。
よろしくお願いいたします。
351 :
324 :2010/09/25(土) 19:00:02
連絡遅くなってすみません。皆さん態々議論して頂いてありがとうございます。
最終的には
>>345 という事でしょうか?
何にせよ、ありがとうございます!
それはcharなら1バイト読めるか読めないかですが、 intの場合数字以外が現れるまで読み込みをするので、 数字の最後がストリームの最後ならeofフラグが立つのでしょう。
>>324 >>351 >>345 は文字数を出力する方法を別途組み込んでやらなければなりませんし、問題の記述とはちょっと異なります。
<< >> 演算子を避けて、別の書き方にしました。
http://codepad.org/WhUlK28o これなら一文字ずつ読み込み・書き込みする、という題意に沿っているでしょう。
マルチバイト文字への対応はしておりません。また、最近覚えたての STL を使っているところなど、まだまだ未熟の感がありますが、勘弁してやってください。
354 :
324 :2010/09/25(土) 22:15:31
>>353 先生わざわざ何度もありがとうございます!頑張ります!
356 :
345 :2010/09/25(土) 23:59:38
>>353 ちょっと指摘の意味が分からないんだけど
「文字数を出力する方法を別途組み込」んであるし,一文字ずつ出力してるし
具体的に何が問題の記述と違うの
357 :
デフォルトの名無しさん :2010/09/26(日) 00:04:01
授業単元は文字型配列で、好きな英単語を5つほど挙げ、1単語ごとに意味を答え る問題を作り、正解の場合はそのメッセージと、不正解の場合は正答をメッセー ジで表示するプログラムを5問作るという問題で、以下のようなプログラムを作り ましたが、エラーが発生してしまいました。 ※ 全問書くと長過ぎるので1問だけ #include <stdio.h> #include <string.h> void main(void){ char a[]=time int len,a len=strlen(); printf("問1 「時間」の意味の英単語は?\n"); scanf("%d",&a); printf("%s",a); if(a==time){ printf("正解! \(^o^)/"); } else { printf("はずれ 正解は→time"); } } エラーの内容は全て、 'int' は 'char []' と間接操作のレベルが異なり、 'strlen' : 関数に 0 個の引数を指定できず、単語は全て定義されてない 識別子とされているものです。 この場合どこが間違っているのでしょうか?何か良い解決策をどうかよろし くお願いします。 環境はVisual Studio 2008でC言語です。期限は9月28日でよろしくお願い します。
>>356 ごめんなさい。
>>353 は大間違いです。壮大な勘違いをしていたみたいです。
今日はもう疲れていますね。
>>357 これでどうでしょう?なお、あまり沢山の文字(この例では 1024 文字以上)入力すると動作がおかしくなる可能性があります。
#include <stdio.h>
#include <string.h>
int main(void) {
char a[] = "time";
char input[1024];
printf("問1 「時間」の意味の英単語は?\n");
scanf("%s",input);
if(strcmp(a, input) == 0){
printf("正解! \(^o^)/");
}else{
printf("はずれ 正解は→time");
}
return 0;
}
/* end */
#include <stdio.h> #include <string.h> #include <conio.h> void main(void){ char word[]="time"; int a; int idx = 0; bool flag = true; printf("問1 「時間」の意味の英単語は?\n"); while(1){ a = getch(); printf("%c", a); if(a == '\r'){ if(idx < strlen(word)-1){ flag = false; } puts(""); break; } if((strlen(word) <= idx) || (word[idx] != a)){ flag = false; } idx++; } if(flag){ printf("正解! \(^o^)/\n"); } else{ printf("はずれ 正解は→time\n"); } }
あれ、5問のほうでやっちった #include <stdio.h> #include <string.h> void main(void){ char *a[]= { "time", "apple", "pen", "note", "test" }; char *q[] = { "時間", "リンゴ", "ペン", "ノート", "テスト", }; char buff[256] ; for ( int i = 0 ; i < 5 ; i++ ){ printf("問%d 「%s」の意味の英単語は?\n→", i+1, q[i]); scanf("%s", buff); if ( strcmp (a[i], buff)==0 ){ printf("正解! \(^o^)/\n\n"); } else{ printf("はずれ 正解は→%s\n\n", a[i]); } } }
>>361-362 何が何だかわからん。何レス目の人なのか、どんな問題なのか。
てか何がしたかったんだ
[1] 授業単元:C言語 [2] 問題文 80 桁までの 0 以上の整数を2つ入力し、その数の和を出力して終了するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5 [3.3] 言語:C [4] 無期限 [5] その他の制限: なし お願いします
>>364 「80桁」って、数値の入力は文字列で行うってことでいいのかな?
また意地の悪い問題だな・・・
367 :
364 :2010/09/26(日) 16:23:25
#include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX_KETA 80 void input_num(char* num, int* idx) { char tmp_num[MAX_KETA]; while(1){ char c = getch(); if(c == '\r'){ puts(""); break; } else if(!('0' <= c && c <= '9')){ continue; } else{ printf("%c", c); tmp_num[(*idx)++] = c; } if(*idx == MAX_KETA){ puts("error: 80 keta made desu"); exit(1); } } for(int i=0; i<(*idx); i++){ num[MAX_KETA-1-i] = tmp_num[(*idx)-1-i]; } }
void add(char* num1, int num1_idx, char* num2, int num2_idx) { int carry = 0; char answer[MAX_KETA]; for(int i=MAX_KETA-1; 0<=i; i--){ answer[i] = num1[i]-'0' + num2[i]-'0' + carry + '0'; if('9' < answer[i]){ answer[i] -= 10; carry = 1; } else{ carry = 0; } } bool flag = false; for(int i=0; i<MAX_KETA; i++){ if(answer[i] == '0' && !flag){ continue; } else{ flag = true; } printf("%c", answer[i]); } puts(""); } int main(void){ char num1[MAX_KETA], num2[MAX_KETA]; int num1_idx = 0; int num2_idx = 0; for(int i=0; i<MAX_KETA; i++){ num1[i] = '0'; num2[i] = '0'; } printf("input num1: "); input_num(num1, &num1_idx); printf("input num2: "); input_num(num2, &num2_idx); printf("answer: "); add(num1, num1_idx, num2, num2_idx); return 0; }
input_num1: 1111111111111111111111111111111111111111 input_num2: 9999999999999999999999999999999999999999 answer: 11111111111111111111111111111111111111110
>>368 #define MAX_KETA 81 としたほうがいいのでは?
#include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX_KETA 81 void input_num(char* num) { int idx = 0; char tmp_num[MAX_KETA]; while(1){ char c = getch(); if(c == '\r'){ puts(""); break; } else if(!('0' <= c && c <= '9')){ continue; } else{ printf("%c", c); tmp_num[idx++] = c; } if(idx == MAX_KETA){ puts("error: 80 keta made desu"); exit(1); } } for(int i=0; i<idx; i++){ num[MAX_KETA-1-i] = tmp_num[idx-1-i]; } } void add(char* num1, char* num2) { int carry = 0; char answer[MAX_KETA]; bool flag = false; for(int i=MAX_KETA-1; 0<=i; i--){ answer[i] = num1[i]-'0' + num2[i]-'0' + carry + '0'; if('9' < answer[i]){ answer[i] -= 10; carry = 1; } else{ carry = 0; } } for(int i=0; i<MAX_KETA; i++){ if(answer[i] == '0' && !flag){ continue; } else{ flag = true; } printf("%c", answer[i]); } puts(""); } int main(void){ char num1[MAX_KETA], num2[MAX_KETA]; for(int i=0; i<MAX_KETA; i++){ num1[i] = '0'; num2[i] = '0'; } printf("input num1: "); input_num(num1); printf("input num2: "); input_num(num2); printf("answer: "); add(num1, num2); return 0; }
374 :
373 :2010/09/26(日) 16:43:59
num1_idxとnum2_idxは不要だったわ
C言語にbool型ってあったっけ あとfor(int i = 0; ~~~)みたいにできなくね?
#include <stdio.h> int main(void) { int i, j, la, lb, lc; char a[81], b[81], c[82] = {0}; scanf("%s", a); scanf("%s", b); for(la = 0; a[la]; la++); for(i = 0; i < la; i++) c[i] = a[la - 1 - i] - '0'; for(lb = 0; b[lb]; lb++); for(i = 0; i < lb; i++) c[i] += b[lb - 1 - i] - '0'; if(la > lb) lc = la; else lc = lb; for(i = 0; i < lc; i++) { if(c[i] >= 10) { c[i] -= 10; c[i + 1] += 1; } c[i] += '0'; } if(c[i]) c[i] += '0', lc++; for(i = 0, j = lc - 1; i < j; i++, j--) { char temp = c[i]; c[i] = c[j]; c[j] = temp; } printf("%s\n", c); return 0; }
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp = fopen("prog.cpp", "w"); fprintf(fp, "#include <iostream>\n"); fprintf(fp, "using std::cin;\n"); fprintf(fp, "using std::cout;\n"); fprintf(fp, "using std::endl;\n"); fprintf(fp, "using std::string;\n"); fprintf(fp, "using std::max;\n"); fprintf(fp, "string add(string &num1, string &num2)\n"); fprintf(fp, "{\n"); fprintf(fp, " int n = 0;\n"); fprintf(fp, " string::reverse_iterator s1 = num1.rbegin();\n"); fprintf(fp, " string::reverse_iterator e1 = num1.rend();\n"); fprintf(fp, " string::reverse_iterator s2 = num2.rbegin();\n"); fprintf(fp, " string::reverse_iterator e2 = num2.rend();\n"); fprintf(fp, " string r;\n");
fprintf(fp, " while (1) {\n"); fprintf(fp, " if ((s1 == e1) && (s2 == e2))\n"); fprintf(fp, " break;\n"); fprintf(fp, " if (s1 != e1)\n"); fprintf(fp, " n += (*s1++ - '0');\n"); fprintf(fp, " if (s2 != e2)\n"); fprintf(fp, " n += (*s2++ - '0');\n"); fprintf(fp, " r.insert(r.begin(), (n %% 10) + '0');\n"); fprintf(fp, " n /= 10;\n"); fprintf(fp, " }\n"); fprintf(fp, " r.insert(r.begin(), n + '0');\n"); fprintf(fp, " return r;\n"); fprintf(fp, "}\n"); fprintf(fp, "int main() {\n"); fprintf(fp, " string num1, num2;\n"); fprintf(fp, " cout << \"input 2 numbers > \" << endl;\n"); fprintf(fp, " cin >> num1;\n"); fprintf(fp, " cin >> num2;\n"); fprintf(fp, " cout << \"anser = \" << add(num1, num2) << endl;\n"); fprintf(fp, " return 0;\n"); fprintf(fp, "}\n"); fclose(fp); system("bcc32 prog.cpp"); system("prog"); return 0; }
次のネタカモン
383 :
381 :2010/09/26(日) 20:31:45
めんどくせ
>>382 小数点第10000位までって指定されたら、本当に1万数桁まで表示するの?
>>384 最終的に (解ける組み合わせ数)/(全組み合わせ数) の分数になるんだから
最終桁だけ注意しておけば、何桁あっても簡単に求められるだろ
いや、求めらるかどうかじゃなくて 例えば答えが0.5でrが10000なら本当に後ろに0を9999個つけることを要求してるんだけど その意図を測りかねてるだけで
そういう問題なんだからしょうが無い
>>388 宿題スレに結構な頻度で出てくる組み合わせの列挙だよ
ちょっと目先が変わっただけ
列挙して一々解くのもめんどくさいから、なんか上手いやり方とかあるんだろうな
[1] C言語復習 [2] 1 桁の整数をスーペース区切りで何個か入力する (EOF で入力の終了とする) と, 下のように隣合う要素同士で桁上がりを無視した加算を行って逆三角形を作り, 最後に残った 2 桁 (ただし 3 桁で 1 0 0 が残ったときは満点なのでそこで終了する) で運勢を占う, というプログラムを作成せよ. 0 7 9 5 6 5 7 7 4 2 ← 入力 7 6 4 1 1 2 4 1 6 3 0 5 2 3 6 5 7 3 5 7 5 9 1 2 8 2 2 4 0 3 0 4 6 4 3 4 0 0 7 4 0 7 4 7 [3] 環境 [3.1] OS: Windows xp [3.2] Cygwin 1.7.7 よくわかりませんでした [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 明日
復習ならじぶんでやったほうがいいっすねー
うるせー計算機は黙って計算だけしてろ
391ですがヒントもありました (ヒント) 計算の本体は, 例えば, 最初の行は, a[0]=0, a[1]=7, a[2]=9, a[3]=5, a[4]=6, a[5]=5, a[6]=7, a[7]=7, a[8]=4, a[9]=2 から a[0]=7, a[1]=6, a[2]=4, a[3]=1, a[4]=1, a[5]=2, a[6]=4, a[7]=1, a[8]=6 を計算することになるが, これは, j = 0 から 8 について, a[j] と a[j+1] の和を a[j] に入れるというだけ. 「桁上がりを無視した加算」は, 普通に加算を行ってから 10 で割った余りを求めればよい. 1行目は j=8 まで, 2 行目は j=7 まで, 3 行目は j=6 まで, …, というように数字を 1 つづ減らしていき, 2 個になった時点で止めればよい. (プログラム全体としては, 2 重ループになる.) ただし, a[0]=1, a[1]=0, a[2]=0 の場合は特別に場合分けをして打ち切る必要がある. 表示は, まず配列 a をそのまま表示すれば 0 7 9 5 6 5 7 7 4 2 7 6 4 1 1 2 4 1 6 3 0 5 2 3 6 5 7 3 5 7 5 9 1 2 8 2 2 4 0 3 0 4 6 4 3 4 0 0 7 4 0 7 4 7 が得られるが, これに, 「i 行目なら配列の表示の直前にスペースを i 個表示する」という処理を 付け加えれば, 逆二等辺三角系の形にできる.
>>391 [2] 1 桁の整数をスーペース区切りで何個か入力する
これって例えば10個とか仮定していいの?
>>395 何個の場合でも計算できるプログラムじゃないといけないみたいです。
スーペース区切りで入力するのにEOFで終了とはこれいかに?
>>397 無限ループにしたいからじゃないでしょうか?
何回改行されてもEOFまでは入力し続けるってことか
>>400 本当に助かりました。ありがとうございます
しかし、コンパイルでにてエラーが出てしまいました以下
/tmp/cc23U1OA.o:triangle.c:(.text+0x124): undefined reference to `_putcher'
/tmp/cc23U1OA.o:triangle.c:(.text+0x16d): undefined reference to `_putcher'
collect2: ld returned 1 exit status
「putcher」→「putchar」
>>400 codepadで使えないstdinが使えるだと・・・
>>400 whitespaceまであるだと・・・
コンパイルできました。お恥ずかしいのですが、数値のインプットが出来ません。
>>406 数字入力の後、改行→EOF(cygwinだとCtrl+Dだっけ)じゃないとだめかも
sage進行とかテンプレに条件が無いんでageても文句言われる筋合いないっすよね?
>>409 一般的な質問スレは、質問はage、それ以外はsageるのが推奨されている(質問がされているのを分かり易くするため)
ただし、君みたいな厨が多数いる板では無関係な荒らしを呼び込むことになるので
質問だろうとちょっとageただけで鬼の首を取ったかのように叩かれる
つい最近まで質問でもないのに age まくる輩が粘着していたので、住人はちょっと過敏になっているようだ。
412 :
デフォルトの名無しさん :2010/09/28(火) 01:14:40
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク)
bmp画像をFFTWを使ってフーリエ変換する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
[3.3] 言語: C++
[4] 期限: 特に決まっていませんが急いでいます。
[5] その他の制限: 自分が作ったソース↓を基にしていただければ助かります。
http://codepad.org/k4UTDO2i できた画像を逆フーリエ変換しても同じ画像になってくれませんでした。
bmpを1次元配列で読み込んでるので1次元フーリエ変換でいいのですよね?
お願いします。助けてください。
>412 そりゃならんだろ x in setCをy in {0 <= i <= 255 | i in setZ}に変化して情報が落ちまくっている とんでも量子化だよ フーリエ変換した画像として見たいならスペクトルにすればいいけど複素数から実数になるから元には戻らない 元に戻したいなら変換して得た複素数を逆変換する必要がある 原画像I, フーリエ変換FT, 変換後画像Jとすると J = FT(I) Jは時間領域から周波数領域に変換されている I = FT^-1(J) やってはいけない例 複素数空間から実数空間に変換するCtoR J' = CtoR(J) = CtoR(FT(I)) コサイン変換とかで適切な量子化すれば, ある程度は, 見た目的にきれいに戻せるよ とか言ってみるテスト
煙に巻くって楽しい?
415 :
412 :2010/09/28(火) 04:32:27
すみませんが宿題を手伝ってもらってよろしいでしょうか? 整数の数字列のファイルを読み込み、列を小さい順にソートして別のファイルに書き込む ソートの部分は配列の形で出来上がっているのですが読み込み(char)からintの配列の形にすることで悩んでいます
つ【質問テンプレ】
すいません。早い回答ありがとうございます 【質問テンプレ】 [1] C言語 [2] 乱数に数字列が列挙しているtxtファイルから読み込んでint配列の形でソート(どのソートでもよい)を行って別のtxtファイルに書き込む 現状ではソート,ファイル書き込みの内容はできあがっているがファイルから読み込んでint配列の形にする部分で悩んでいる [3] 環境 [3.1] Linux [3.2] gcc 3.4 [3.3] C言語 [4] 2010年9月30日17:00まで [5] ファイル読み込みを学習中 質問するまでに使ったコマンド(fscanf,fgetc,fgets等)
>>419 整数の区切り文字は何?(半角スペースとか「,」とか)
それとも一桁の整数なん?
#include <stdio.h> #include <stdlib.h> #define MAX 10 int num[MAX]; int main(void){ FILE* fp; if((fp = fopen("./sample.txt", "r")) == NULL){ puts("fuck!"); exit(1); } int num_idx = 0; while(1){ int c = fgetc(fp); if(c == EOF){ break; } else if(c == '\n'){ num_idx++; } else{ num[num_idx] = num[num_idx]*10 + c-'0'; } } int i; for(i=0; i<num_idx; i++){ printf("num[%d]: %d\n", i, num[i]); } } === sample.txt === 456 789 123 ================ $ ./a.exe num[0]: 456 num[1]: 789 num[2]: 123
fclose(fp);
ごめんなさい 整数列なので改行ですね
>>421 >ソート(どのソートでもよい)を行って
void bubblesort(void) { int i,j,; for(i=0;i<99;i++){ if(X[i]>X[i+1]){ j = X[i]; X[i] = X[i+1]; X[i+1] = j; } } } ソートは基本のバブルソートでやってます main構文から飛ぶようにしてます(ちなみに教科書どおりにやってるので手抜きです…)
列とか行とか適当な意味で使うなよ 1行1整数でいいんだな?
説明不足すみません 1行1整数で100行くらいの長さの整数をソートします ちなみに数は0〜100の整数でやってます
428 :
412 :2010/09/28(火) 18:38:06
>>416 誤りがわからないので具体的な説明か改善方法を教えていただくことはできませんか?
#include <stdio.h> #include <stdlib.h> #define MAX 100 void set_num(int* num, int* size) { FILE* fp; if((fp = fopen("./sample.txt", "r")) == NULL){ puts("fuck!"); exit(1); } while(1){ int c = fgetc(fp); if(c == EOF){ break; } else if(c == '\n'){ (*size)++; } else{ num[*size] = num[*size]*10 + c-'0'; } } fclose(fp); } void bubble_sort(int* num, int size) { int i,j,temp; for(i=0; i<size-1; i++){ for(j=size-1; j>i; j--){ if(num[j-1] > num[j]){ temp = num[j]; num[j] = num[j-1]; num[j-1] = temp; } } } } int main(void) { int num[MAX], size=0, i=0; for(i=0; i<MAX; i++){ num[i] = 0; } set_num(num, &size); puts("=== before sort ==="); for(i=0; i<size; i++){ printf("num[%d]: %d\n", i, num[i]); } bubble_sort(num, size); puts("=== after sort ==="); for(i=0; i<size; i++){ printf("num[%d]: %d\n", i, num[i]); } }
$ ./a.exe === before sort === num[0]: 456 num[1]: 789 num[2]: 123 === after sort === num[0]: 123 num[1]: 456 num[2]: 789
>>429 ありがとうございます。早速チャレンジしてみます
while(1){
int c = fgetc(fp);
if(c == EOF){ break; }
else if(c == '\n'){ (*size)++; }
else{ num[*size] = num[*size]*10 + c-'0'; }
}
ところでこの文章int型のついてる * はなんの意味を示してるのですか?
before sortって書かれたら何かそんなソートあるのかって思えてしまう
>>431 ∧∧
(д`* )
(⊃⌒*⌒⊂)
/__ノωヽ__)
ポインタ学習前かよ!
>>432 整数の列が100個ですから多いほうですか?
でも見やすいので参考にさせてもらいますね
>>434 すいません。確認とりました。大丈夫です
>>429 while(1){
int c = fgetc(fp);
if(c == EOF){ break; }
else if(c == '\n'){ (*size)++; }
else{ num[*size] = num[*size]*10 + c-'0'; }
}
この構文の中の else{ num[*size] = num[*size]*10 + c-'0'; の部分の詳細を教えてもらってもいいですか?
大丈夫じゃない件
デバッガで一行ずつ実行して変数の値の変化を見てれば分かると思うよ
>>437 すみません。自己解決しました
>>438 ありがとうございます。おかげで理解できました
遅れて申し訳ありません。宿題完成しました。読み込みだけでなく書き込みが間違っていただけのようでした。迷惑をかけてもうしわけありませんでした
>>439 >乱数に数字列が列挙しているtxtファイルから読み込んでint配列の形
int配列なら負の数も対応しなえればイクないんじゃないのか?
宿題はゼロ以上のint乱数の数字列とかってなっている?
>>440 そうですね。たしかに負の値にも対応してないとまずいかもしれません
やってみますね。アドバイスありがとうございます
442 :
愛 :2010/09/28(火) 23:05:19
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 双方向連結リストを使ったプログラムこの実習では、双方向連結リストを使ったプログラムを実際に書いてみましょう。 次の構造体 dnode があります。 struct dnode { char name[32]; int data; struct dnode *next; struct dnode *prev;}; struct dnode *head, *tail; /* 変数 head/変数 tail */ これによって、引数のノードを双方向連結リストから外す関数 rem_node を作ってください。 void rem_node(struct dnode *p){ [ 空欄1 ] } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2008 Express Edition [3.3] 言語: C++ [4] 期限: 2010年10月00日まで [5] その他の制限: void rem_node(struct node *p){ printf("-> rem_node(): %s: %d\n", p->name, p->height); if(p->prev != NULL) p->prev->next = p->next; else head = p->next; if(p->next != NULL) p->next->prev = p->prev; else /* ない場合は p は tail * tail = p->prev; /* tail を p->prev にする */ p->next = p->prev = NULL; } 例はこんな感じらしいです・・私半分ぐらいしかわかりません上記の例のような感じでプログラミングするらしいです・・達人さんたちお願いします!!
443 :
愛 :2010/09/28(火) 23:10:45
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 以下のようなハッシュテーブルがあります。 このハッシュテーブルに登録されているすべてのノードのデータ(height)の平均を返す関数 average を完成させてください。 この関数はノードが 1 つも登録されていない場合は 0 を返します。 struct htnode { char keyname[32]; /* キーとなる文字列(名前) */ int height; /* 関連するデータ(身長) */ struct htnode *next; /* 次のポインタ */ } *hashtable[HASH_TABLE_SIZE]; int average(void){ [ 空欄1 ] } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2008 Express Edition [3.3] 言語: C++ [4] 期限: 2010年10月00日まで [5] その他の制限: 3もんもあるんですよ・・・
444 :
愛 :2010/09/28(火) 23:15:11
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 学習した buildheap 関数を参考にして、親 >= 子を満たすヒープ構造(根に最大値を持つヒープ構造)を構成する buildheap2 関数を作ってください。 親が大きいヒープ構造 親 /\ 子 子 親 >= 子 >= 子 /* 親の位置 p、配列の要素数 n、配列 heap を引数に取り、 p から下のヒープ構造を構成する関数 buildheap2 */ void buildheap2(int p, int n, int heap[]){ [ 空欄1 ] } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2008 Express Edition [3.3] 言語: C++ [4] 期限: 2010年10月00日まで [5] その他の制限: この問題が一番わかりません・・・ このサイトを見つけた時は本当に神の助けかと思いました!!泣 達人さんたちお願いします。。。
そうですか
446 :
愛 :2010/09/28(火) 23:17:38
void buildheap(int p, int n, int heap[]){ int s = 2 * p; /* 左の子の位置 */ int minloc; /* 小さい方の子の位置 */ /* s <= n である限り */ while(s <= n){ /* とりあえず左の子の方が小さいことにする */ minloc = s; /* 左の子が最後の要素でなく、 右の子の方が小さいならば */ if(s != n && heap[s] > heap[s+1]) minloc = s + 1; /* 右の子の位置を代入 */ /* もしも親が子の小さい方よりも小さければ */ if(heap[p] <= heap[minloc]) break; /* while文から脱出 */ /* 親と小さい方の子を交換 */ SWAP(heap[p], heap[minloc]); p = minloc; /* 親の位置 p を minloc にする */ s = 2 * p; /* 左の子の位置を更新 */ } } ヒープはこれを参考にするらしいです。
名前みてイラッとしたからスルー
条件付き分布,結合確率なんかを実装するのに, 良さげなデータ構造を教えて下さい
450 :
448 :2010/09/29(水) 01:14:54
でも、fcloseは使っていない。
>>442 C++で双方向リストやハッシュマップをオレオレ実装する授業か……。
酷い授業に当たったな
ちょっとぐらい自分で考えようよ
釣りだろw
ほれほれ、待ちに待った双方向リストですよ。
双方向リストおなかいっぱいだお…正直もうおなかいっぱいだお。
ここ何年か双方向リストの宿題は出ていないのですが‥‥‥。
>>442 はfree(p);を関数の最後に記述すればもうできあがってるんじゃね
>>448 亀レスすみません
atoi関数使うとセグメンテーション違反がでるので参考にさせてもらいますね
みなさんありがとうございました
460 :
愛 :2010/09/29(水) 20:24:27
free(p);を記述すれば完成ですか?? ありがとうございます。
461 :
愛 :2010/09/29(水) 20:30:03
あとの二つが一番わかりません・・
>>448 if (i >= MAX)
こうじゃないか?
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): (問題1)合計演算する関数Goukeiを作成せよ。ただし、引数として、配列とその個数および演算結果をとるものとする。 (問題2)Goukeiを用いて平均値を求める関数Heikinを作成せよ。ただし、引数として配列とその個数および演算結果をとるものとする。 (問題3)関数Heikinを用いて、main関数を作成せよ。ただし、身長のデータ数Nは、キーボードより入力されるとし、配列を動的に確保せよ。また、身長データは、キーボードより入力されるものとする。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限: 2010年10月1日0:00まで [5] その他の制限: よろしくお願いします。
>>460-461 あとの二つが一番わかりませんて日本語可笑しいだろ。
そもそも1問ならまだしも3問丸投げとかね。この程度も分からないんなら学校辞めた方が良いんじゃない?
467 :
愛 :2010/09/29(水) 21:19:14
学校にはいってません。 社会人です。 C++は初めてします。 九割は自分でどうにか回答できたんですがーあとから難しくなって リアルに、この程度の問題もわかりません・・ 二週間前からネットで勉強してます・・
#include <stdio.h> void Goukei(int* array, int num, int* result) { int i; *result = 0; for(i=0; i<num; i++){ *result += array[i]; } } void Heikin(int* array, int num, int* result) { *result = 0; Goukei(array, num, result); *result /= num; } int main(void) { int num; printf("input data num:"); scanf("%d", &num); int* p = (int*)malloc(sizeof(int)*3); int i; for(i=0; i<num; i++){ printf("input sincho(%d):", i); scanf("%d", &p[i]); } int result = 0; Heikin(p, num, &result); printf("Heikin:%d\n", result); Goukei(p, num, &result); printf("Goukei:%d\n", result); return 0; }
$ ./a.exe input data num:3 input sincho(0):10 input sincho(1):20 input sincho(2):30 Heikin:20 Goukei:60
>>467 言語はC++じゃなくてCじゃないのか?
472 :
愛 :2010/09/29(水) 21:28:01
二問も解いてくださってありがとうございます!!!!!!! 本当に助かります、参考にして勉強します。 言語はC++です。
Cの部分しか使ってないんだよ
474 :
愛 :2010/09/29(水) 21:56:54
そうなんですか?? それすらも理解できない私・・・ やばいですね
476 :
愛 :2010/09/29(水) 22:32:23
ありがとうございます。
477 :
デフォルトの名無しさん :2010/09/29(水) 23:57:43
[1] 授業単元: プログラム [2] 問題文(含コード&リンク): an=a[n-1]+a[n-2]で、nを与えた時a[n]を求める。Σ[n-2,i=1]aiとanの比較をせよ。Σ[n-1,i=1]ai^2とa[n-1]*anの比較をせよ [3] 環境 [3.1] OS:Linux [3.3] 言語: C++ [4] 期限: 2010年10月1日まで [5] その他の制限: なるべく難しくしないでお願いします。 #include<iostream> using namespace std; int main() { で始めてください。 そして、 rerurn 0; } を入れてください
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 適正なおつりを出すプログラムを作成しなさい 例として次のようにすること 金額を入力してください。 12345 一万円:1枚 五千円:0枚 千円:2枚 五百円:0枚 百円:3枚 五十円:0枚 十円:4枚 五円:1枚 一円:0枚 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual studio [3.3] 言語: C言語のみ [4] 期限: [2010年10月4日まで] [5] その他の制限:なし よろしくお願いします。
"一万円:%d枚", amount / 10000); amount -= (amount / 10000) * 10000; "五千円:%d枚", amount / 5000); amount -= (amount / 5000) * 5000; " 千円:%d枚" "五百円:%d枚" " 百円:%d枚" "五十円:%d枚" " 十円:%d枚" " 五円:%d枚" " 一円:%d枚"
二千円札様を無視すんじゃねえ!!!
482 :
479 :2010/09/30(木) 18:52:27
いや、でも二千円札の指示はなかったので入れないほうがいいと思います
二十円金貨っていうのがあってだな
なんで、お釣りで万札が帰ってるんだ?
10万円金貨で払ったから
小切手
>>486 白紙で渡して、釣りはいらないって言うのが、ダンディw
>>487 それおかしいってw
白紙で渡して、好きな金額書けって言うのが普通だろ。
千の位が2ならば二千円札を渡すのが、喜ばれる
二千円札見たことすらないんだが…。
沖縄に行けば見られるよ
ところで479は480のヒントで解決できたのかな?
コンビニのATMで引き出した時に2千円札ばかりが出てきたことが・・・ すぐに使ったのは言うまでも無い。
494 :
479 :2010/10/01(金) 16:35:49
返信遅れてすみません 自分c言語はよくわからないもので・・・ 差し支えなければint mainのほうも書いていただけませんか?
そのくらいは教科書見るなり先生に聞くなり友達に聞くなりしてくれ
>>494 ほい、でもコレはたぶん求められてる答え方じゃないからそのまま出すと怒られるかもね
素直に
>>480 がなにやってるのか頭捻って自分で考えた方がいいんじゃない?
#include <stdio.h>
int main(void){
char* text[] = {
" 一", " 五", " 十", "五十", " 百", "五百", " 千", "五千", "一万",
} ;
int i ;
int buff[9] ;
int change = 0 ;
printf ( "金額を入力してください。\n→" ) ;
scanf ( "%d", &change ) ;
for ( i = 0 ; i < 4 ; i++ ){
int m = change%10 ;
buff[i*2+1] = m/5 ;
buff[i*2] = (m/5)?m-5:m ;
change /= 10 ;
}
buff[8] = change ;
for ( i = 8 ; i >= 0 ; i-- ){
printf ( "%s円:%d枚\n", text[i], buff[i] ) ;
}
return 0 ;
}
なんでわざわざ煙に巻くような書き方するんだw
[1] 授業単元:基礎プログラミング [2] 問題文(含コード&リンク) 実数の変数を小数点第一位で四捨五入しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C++ [4] 期限:日曜日12時まで
int a = (int)(double_value + 0.5);
>>500 あの、すみません、それだとintで扱かえる範囲しか駄目なんじゃないですか?
>>500 一応突っ込んどくけど、値がマイナスの時それでいいの?
>>501 結果も実数が欲しいなら floor() でも使えば?
負の数の四捨五入ってどうなるのが正しいんだ
[1] 授業単元:プログラム総合 [2] 問題文(含コード&リンク) 並列に接続した3つの抵抗の合成抵抗を求める。さらに、その両端に電圧V0を印加されたときに流れる電流を2通り (全体に流れる電流、3つの抵抗それぞれに流れる電流)求めるプログラムを作れ また変数は実数型とすること [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C++ [4] 期限:今日の5時まで
>>507 #include <stdio.h>
int main(void){
でお願いします。
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): code(文字列),name(文字列)、price(整数)の3つのメンバ変数を持つ構造体を定義せよ。 以下の内容を宣言し、同時に初期値として能格せよ。その上で、構造体の内容を画面に 出力するプログラムを作成せよ。 code: oga-45 name: okasi_set price: 3000 [3] 環境 [3.1] OS:Ubunts [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限: typedefを用いてユーザ定義型として設定する
#include <stdio.h> #define LEN 100 typedef struct { char code[LEN]; char name[LEN]; int price; }KOUZOUTAI; int main(void) { KOUZOUTAI a = { "oga-45", "okasi_set", 3000 }; printf("%s,%s,%d\n", a.code, a.name, a.price); return 0; }
>>510 ごめんなさい!重要なことを間違えてました。
2通り⇒全体の電流と3つの抵抗に流れるそれぞれの電流(ia,ib,ic)を求めよ
です。ごめんなさい!
>>509 この構造体を配列化し、いくつかの商品を格納できるように
するにはどこを変えればいいのでしょうか?
お願いします。
517 :
515 :2010/10/02(土) 03:31:03
#include <stdio.h> #define LEN 100 typedef struct { char code[LEN]; char name[LEN]; int price; }KOUZOUTAI; int main(void) { KOUZOUTAI a = { "oga-45", "okasi_set", 3000 }; printf("%s,%s,%d\n", a.code, a.name, a.price); KOUZOUTAI b = { "oga-45", "okasi_set", 3000 }; printf("%s,%s,%d\n", a.code, a.name, a.price); return 0; } ↑こんな感じでKOUZOUTAI aのaを変えていけばいいのでしょうか?
#include <stdio.h> #define NUM 2 #define LEN 100 typedef struct { char code[LEN]; char name[LEN]; int price; }KOUZOUTAI; int main(void) { KOUZOUTAI a[NUM] = { {"oga-45", "okasi_set", 3000}, {"aaaaaa", "bbbbbbbbb", 4000}, }; int i=0; for(i=0; i<NUM; i++){ printf("%s,%s,%d\n", a[i].code, a[i].name, a[i].price); } return 0; }
>>516 おお!これです
ありがとうございます!
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): present.datを読み込み、小文字を全て大文字に変換し、以下のような形式[1]でファイルを 出力するプログラムを作成せよ。また、present.datに自由なデータを6行追加し動作する ことを確認せよ。またこの際にpriceが空白の行を設け、priceが空白であった場合には price: xxxxと出力するようにせよ。 [1] code: abc-23 name: tea_set price: 2500 . . . 以下略 present.dat ↓ ABC-23 Tea_set 2500 EFG-34 Peach 2000 HIJ-21 Greep 1500 [3] 環境 [3.1] OS:Ubunts [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: なるべく早めを希望 [5] その他の制限: ヒント 空白に対応するためにはfscanfの戻り値の利用、fgetsの利用と等が考えられる。 またファイル終端の判定にはfeof関数を用いても良い。小文字、大文字の変換には アスキーコードで加算減算する方法の他にtupper関数やtolower関数の利用が 考えられる。
522 :
521 :2010/10/02(土) 11:26:03
間違ってました! code: ABC-23 name: TEA-SET price: 2500 code: EFG-34 name: PEACH price: 2000 code: HIJ-21 name: GREEP price: 1500 ↑この様にpresent.datから読み込みさらに大文字に変換する というのが基本です。 お願いします!
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 入力された2つの行列の積算を行い、結果を示せ。 1.行列の行、列数の入力を求める 2.2つの行列の積算 3.行列として結果を表示 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語: C [4] 期限: 明日中 [5] その他の制限:特になし よろしくお願いします。
>>521 文字数オーバーのチェックとかしてないよ
#include <stdio.h>
#include <ctype.h>
int main(void){
FILE *in_fp, *out_fp ;
char buff[1024] ;
char code[256] ;
char name[256] ;
char price[256] ;
int count ;
char* p ;
in_fp = fopen ( "present.dat", "r" ) ;
out_fp = fopen ( "output.dat", "w" ) ;
while ( fgets ( buff, 1024, in_fp ) ){
for ( p = buff ; *p ; p++ ){
*p = toupper(*p);
}
count = sscanf ( buff, "%s %s %s", code, name, price ) ;
fprintf ( out_fp, "code: %s\n", code ) ;
fprintf ( out_fp, "name: %s\n", name ) ;
fprintf ( out_fp, "price: %s\n\n", (count>2)?price:"xxxx" ) ;
}
fclose(in_fp) ;
fclose(out_fp) ;
return 0 ;
}
>>521 int main(void)
{
system("cat present.dat | tr a-z A-Z > tmp.txt");
system("sed -e \"s/^/code:/\" tmp.txt > tmp2.txt");
system("sed -e \"s/ /\\nname:/\" tmp2.txt > tmp3.txt");
system("sed -e \"s/ /\\nprice:/\" tmp3.txt > tmp4.txt");
system("sed -e \"/price/a\n\" tmp4.txt > tmp5.txt");
system("perl -pe 's/price:\n/price:xxxx\n/' tmp5.txt > output.txt");
system("rm tmp.txt tmp2.txt tmp3.txt tmp4.txt tmp5.txt");
return 0;
}
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク):ルートについて、ニュートンラプソン方で解き、 何回演算を繰り返せば値が収束するか確認する。複数の値を入れて、組み込み関数である sqrt関数との比較をする。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C [4] 期限: [2010年10月4日まで] [5] その他の制限:特になし よろしくお願いします。
>>527 #include <stdio.h>
#include <math.h>
int main(void){
int count ;
double n, root, buff ;
/* nの平方根を求める */
n = 2.0 ;
for ( root = 1.0 ; (root*root)<n ; root+=1.0 ){
}
for ( count = 1 ; ; count++ ){
buff = root ;
root = (root+n/root)/2 ;
if ( buff==root){
break ;
}
}
printf ( "%.16lf (%d回) \n", root, count ) ;
printf ( "%.16lf (sqrt)\n", sqrt(n) ) ;
return 0 ;
}
>>526 これはC言語なのでしょうか?
自分には理解できません><
>>529 C で記述されたプログラムから、system() 関数を使って、外部コマンド sed, perl を呼び出しています。
実際の作業は sed, perl が行っています。実行時には sed や perl がインストールしてあり、それらにパスが通っている必要があります。
また、内容を把握するためには sed や perl でのスクリプトの記述方法を知っていなければなりません。
異論はあるでしょうけれども、sed, perl はプログラム言語界隈では広く知られているとしていいと思います。
まあ、このスレならではの、ネタ的解法でしょう。まじめに受け取っては、あー、いけません。
>sed, perl はプログラム言語界隈では広く知られているとしていいと思います。 願望を教えるなよ・・・
system("echo (笑)");
534 :
デフォルトの名無しさん :2010/10/03(日) 20:45:57
[1] 授業単元: 基礎プログラミング [2] 問題文(含コード&リンク): 1×8の配列のうち、3番目だけに1を入れて、その他を0にするプログラムを作る。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C/C++ [4] 期限: [2010年10月5日まで] [5] その他の制限:特になし こんなのじゃだめでしょうか? #include "stdafx.h" #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { double *in[8] = {0,0,0,0,0,0,0,0}; *in[2] = 1; int i; for (i=0; i<8; i++) { printf("in[%d] = %d\n",i,*in[i]); } return 0; }
>>534 double *in[8] = {0,0,0,0,0,0,0,0};
↑わざわざポインタの配列にする意味がわからない
*in[2] = 1;
↑アドレスの0番地に1を書き込む超危険な処理
これで int _tmain(int argc, _TCHAR* argv[]) { double in[1][8] = { {0, 0, 0, 0, 0, 0, 0, 0} }; in[0][2] = 1.0; int i; for (i=0; i<8; i++) { printf("in[0][%d] = %f\n",i,in[0][i]); } return 0; }
次の面白クイズちょうだい
ランダムで1万分の1の確率で真とするにはどうすればいいですか?
return (rand() % 9999) == 0
>>539 それだとRAND_MAXが32767だったら
27%以下になる確率がそれ以上より高くなりますよね?
>>540 while((x=rand())>=30000);
return x%10000;
たまにはRAND_MAXのことも思い出してあげてください
[1] 授業単元:基礎プログラミング [2] 問題文(含コード&リンク) コンソール画面の中央付近に一個の星印を表示するプログラムを作れ。 ただし、背景には何も表示させないこと [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:4日の15時まで [5] その他の制限: 配列のみで作成しろのことです。 急なものですがよろしくおねがいします。
配列のみ?
背景に何も表示させないってわざわざ条件付けてある所が意味深だな。
cursesライブラリの出番か?
中央付近に1個の星印って ☆ でいいのか?それとも↓みたいなのか? * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * *
*
* *** ********* ***** *** *** ** ** * *
553 :
デフォルトの名無しさん :2010/10/04(月) 15:35:23
環境わからんから、適当に。 #include <stdio.h> int main(void) { int padding_top = 10; int padding_bottlom = 10; int padding_left = 20; int i; for (i = 0; i < padding_top; i++) printf("\n"); for (i = 0; i < padding_left; i++) printf(" "); printf("星印\n"); for (i = 0; i < padding_bottlom; i++) printf("\n"); return 0; }
554 :
デフォルトの名無しさん :2010/10/04(月) 15:39:25
ああ、typo...
UNIX/gcc だとまだエスケープシーケンスって使えるの?
545の者です。 549の方の上の奴でいいと思います。 15時までとなっていますが時間は無しでお願いします。
[1] 授業単元:プログラミング基礎 [2] TAR(x,y,z) ={y (x<=y) } {TAR(TAR(x-1,y,z),TAR(y-1,z,x),TAR(z-1,x,y) (other)} 上記の計算をするプログラムを組んで、 xyzに指定された数値を代入したときの答えを表示する。 [3] 環境 [3.1] OS: MAC [3.2] Xcodeのcomandtool [3.3] 言語: Cのみ [4] 期限: 2010年の1月24日 [5] その他の制限: prontfで文字表示と計算までは習っていて、if関数は勉強中 任意の数を入力して答えがわからないといけません。 テストに出るらしいのでお願いします。
>>558 これたらい回し関数じゃん
答えが出ないほどスタックを深く使っちゃった場合どうするの?
>>558 スタックがオーバーフローした時は知らんよ
#include <stdio.h>
int tar(int x, int y, int z);
int main(void)
{
int x, y, z;
printf("x = ");
scanf("%d", &x);
printf("y = ");
scanf("%d", &y);
printf("z = ");
scanf("%d", &z);
printf("TAR(%d,%d,%d) = %d\n", x, y, z, tar(x, y, z));
return 0;
}
int tar(int x, int y, int z)
{
if (x <= y)
return y;
else
return tar(tar(x - 1, y, z), tar(y - 1, z, x), tar(z - 1, x, y));
}
>>559 そこまで複雑な数字を代入しないのではないのかと思われます。
>>560 ありがとうございます。
>>553 無事実行出来ました。 ありがとうございます。
>>562 例えばx=120,y=100,z=140を入れてご覧
なかなか答えが出てこないっしょ
こうやると再帰呼び出しの回数が劇的に減って速い VS2010な #include <stdio.h> #include <map> #include <tuple> int tar(int x, int y, int z); std::map<std::tr1::tuple<int, int, int>, int> mtiii; int main(void) { int x, y, z; printf("x = "); scanf("%d", &x); printf("y = "); scanf("%d", &y); printf("z = "); scanf("%d", &z); printf("TAR(%d,%d,%d) = %d\n", x, y, z, tar(x, y, z)); std::getchar(); } int tar(int x, int y, int z) { if (x <= y) return y; else if (mtiii[std::tr1::tuple<int, int, int>(x, y, z)]) return mtiii[std::tr1::tuple<int, int, int>(x, y, z)]; else { mtiii[std::tr1::tuple<int, int, int>(x, y, z)] = tar(tar(x - 1, y, z), tar(y - 1, z, x), tar(z - 1, x, y)); return mtiii[std::tr1::tuple<int, int, int>(x, y, z)]; } }
>>565 でも、それじゃ宿題としては零点・失格だろ。
それをCで実現しなければな
>>566 うん
単に結果を確かめたかっただけ
C++だし0点だね
宿題は
>>561 で出せばいいと思う
>>561 実行に手間取りましたが、動きました。
ありがとうございました。
>>564 パソコンが止まりました。
>>555 >>567 C言語ではなかったのですか。ありがとうございました。
>>556 そうなると思われます。C言語でという授業なので。
>>545 #include <ncurses.h>
int main(void)
{
int w, h;
initscr();
getmaxyx(stdscr, h, w);
mvprintw((h-1)/2, (w-1)/2, "☆");
refresh();
getch();
endwin();
return 0;
}
>>568 x=120,y=100,z=140の時はスタックオーバーフローしてるか計算に時間が掛かりすぎて
いるかのどちらかだな
どちらか見極めるにはスタックが無くなりそうになったら警告を出すようにしておけばわかる
それとstd::mapはC++だしstd::tupleに至ってはC++0xの範疇でしかもまだ標準化されて
いない
ただこういうテクを使えば時間がかかる計算も結果を見る事が出来る事がある
Haskellのような遅延評価機能を備えた言語なら何もしなくても結果がすぐ出てくる
かもしれない
[1] 授業単元:C言語入門 [2] 問題文(含コード&リンク): 以下の指示に順に従ったプログラムを作成せよ。 1.double型の変数dを宣言する。 2.doubleへのポインタ型の変数ptrを宣言する。 3.dに2010.1001を代入する。 4.ptrがdを指すようにする。 5.dのアドレス、dの値、ptrの値、ptrが指す変数の値をprintfで表示する。 6.ptrが差す変数の値を(間接参照を使って)変更する。 7.dのアドレス、dの値、ptrの値、ptrが指す変数の値をprintfで表示する。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年10月6日まで よろしくお願いします。
#include <stdio.h> int main(void) { double d; double *ptr; d = 2010.1001; ptr = &d; printf("%p %f %p %f\n", &d, d, ptr, *ptr); *ptr = 2010.1006; printf("%p %f %p %f\n", &d, d, ptr, *ptr); return 0; }
もっと面白クイズちょうだい
上は洪水で下は大火事、これは何?
top(flood); under(large_fire):
大惨事だな
上は木彫り職人、下はゴミ捨て場、これは何?
シャーペンしか使ったことないし
その内、メモもノートもPCのみの時代で、キーをタッチしたことしかないとか 言い出す時代が来るのか・・・
脳内ソースでコンパイル
そのうち頭に通信モジュールを内蔵しクラスタを組むユビキタス社会になるよ。
[1] 授業単元:C言語入門 [2] 問題文(含コード&リンク): 以下の3箇所のコメントの指示に従って、 実行結果として1.234が2行表示されるようなプログラムを完成させよ。 #include<stdio.h> void test(double *ptr) { printf("%f\n", /* ptrを使った表現 */); } int main(void) { double d = 1.234; double *P = &d; test( /* pを使った表現 */ ); test( /* dを使った表現 */ ); } [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年10月6日まで よろしくお願いします。
>>582 #include<stdio.h>
void test(double *ptr)
{
printf("%f\n", *ptr);
}
int main(void)
{
double d = 1.234;
double *p = &d;
test( p );
test( &d );
[1] 授業単元: 画像処理 [2] 問題文(含コード&リンク): N×Nのbitmap画像を AB CD のように4等分し、 DC BA と並び替えるプログラム [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C/(C++) [4] 期限: 2010年10月8日まで [5] その他の制限: 並び替え前後どちらも1次元配列、左下原点(in[0])でお願いします。
上下を入れ替えて左右を入れ替える
>>586 ビットマップの読み込みは自前でやるの?
Win32API使っていいの?
ビットマップと言っても24bitとか32bitとか8bitのパレット形式とか色々種類があるんだけど全部に対応するの
圧縮も色んな形式認めてるし
592 :
デフォルトの名無しさん :2010/10/06(水) 14:11:29
[1] 授業単元:整数演算 [2] 問題文(含コード&リンク):8000桁以内の8進数を10進数に 8000桁以内の10進数を16進数に [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限: ([2010年10月08日12:00まで [5] その他の制限:特になし よろしくお願いします
>8000桁以内の10進数 ...って何ビットなんだろ.....
もはや値を文字列として扱う
>>593 会津かい?
シリコンバレー構想とかは上手く進んでいるかい?
レスしてくれたら回答したげる。
戊辰戦争ェ
603 :
デフォルトの名無しさん :2010/10/07(木) 01:45:54
クソースでおじゃるか?クイッ・クソートでおじゃる
[1] 授業単元:計算時間測定 [2] 問題 満足な精度が出るように「k 100」の値を他に変え実験し、測定した計算時間のみ報告する。 プログラム例 #include stdio.h #include windows.h #define k 100 void GetData(int A[]) ... void ArraySort(int A[]) ・・・ int main() { int i, A[10000]; long int ts,te; ・・・ ts = GetTickCount(); for (i=0; i<k; i++) { GetData(A[]); ArraySort(A[]); }; te = GetTickCount(); ・・・ } [3] 環境 [3.1] Windows [3.2] VS2010 [3.3] C言語 [4] 期限:本日深夜まで どんな風にやればいいのかよくわかりません。 よろしくお願いします。
606 :
デフォルトの名無しさん :2010/10/07(木) 16:12:29
main関数の最後(returnがあればその直前)に次を追加して実行 printf("%ld\n", te - ts); 満足な精度〜というのはその例からは読み取れない 多分ArraySortのソート法とデータ数からソートが完了する 最悪処理回数を求めるものだとエスパー
エスパーすると 32行に収めるために本当は切っちゃ行けない部分を自分で勝手に省略してないか?
時間を計ってソートの効率を比較したいんじゃないの?
>>528 レス遅れました。
ありがとうございます。
本当に困ってたので助かりました。
610 :
デフォルトの名無しさん :2010/10/08(金) 13:33:40
611 :
ken :2010/10/08(金) 17:33:34
入力した整数を行数と解釈し、その後、その行数分だけキーボードから入力された文字をディスプレ イに出力する。 [条件1] 整数(行数)入力にはscanf 関数を使用する。 (注意!) scanf 関数での入力直後、キーボードバッファに不要な改行コードが1 つ残る。 これをgetchar を1 回実行することによりクリアしなければならない。 [条件2] 行数入力後の文字入出力にはgetchar 関数とputchar 関数を使用する。 <実行例> 注)↲ は、入力時のEnter キーを表す Input No. of line: 3 abc↲ abc 1234↲ 1234 xyz#!"↲ xyz#!" <入出力情報> 入力出力 キーボードディスプレイ <エラー仕様> ・入力された整数(行数)が0 以下だった場合は、その後のキーボード入力は行なわれず終了する (0 行を指定したと扱う)。 ・入力された整数(行数)が、不正の(整数でない)場合の動作は、保証されなくてよい。
612 :
ken :2010/10/08(金) 18:46:43
K&RのCでお願いします
やけに古い基準を出してきたな
質問テンプレ無視してんだから、こっちも無視でいいよ
[1] 授業単元:C++ベーシック [2] 問題文(含コード&リンク): 三辺の長さがそれぞれx,y,zの三角形がある。x,y,zが整数値で1~100までの値をとるときに、 この三角形が直角三角形になるときのx,y,zの組をすべて調べて、その組の数を求めるプログラムを作りなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C++ [4] 期限: 2010年10月15日まで [5] その他の制限:[2,3,4]と[4,3,2]のように同じ長さをもつ組で構成された組み合わせは1つと考える。
[1] 授業単元:C++ベーシック [2] 問題文(含コード&リンク): 1~1000の間のすべてのぞろ目を調べて、その数を表示するプログラムを作りなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C++ [4] 期限: 2010年10月15日まで [5] その他の制限:なし
>>619 訂正
「1~1000」までのぞろ目 ⇒ 「10~1000までのぞろ目」
>>619 #include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int count = 0;
for(int i = 10; i <= 1000; ++i)
{
int base = i % 10;
bool printsw = true;
for(int j = i / 10; j; j /= 10)
{
if(j % 10 != base)
{
printsw = false;
break;
}
}
if(printsw)
{
cout << i << " ";
++count;
}
}
cout << endl << "Total: " << count << endl;
cin.get();
return 0;
}
>>618 #include <stdio.h>
int main ( void )
{
int x, y, z ;
int count = 0 ;
for( z=2 ; z<= 100 ; z++ ){//zを斜辺と仮定
for ( x=1 ; x<z ; x++ ){//xは必ずz未満
for ( y=x; y<z; y++ ){//重複を避けるためyはx以上z未満
if ( (x*x+y*y)==(z*z) ){
printf ( "x=%d, y=%d, z=%d\n", x, y, z ) ;
count++ ;
}
}
}
}
printf ( "\n合計%d個\n", count ) ;
return 0 ;
}
>>618 #include <iostream>
int main()
{
int x, y, z, cnt = 0;
for(x = 1; x <= 100; x++) {
for(y = x - 1; y >= 1; y--) {
for(z = y; y + z > x; z--) {
int a = x * x, b = y * y + z * z;
if(a < b) continue;
if(a == b) {
std::cout << "x = " << x << " y = " << y << " z = " << z << std::endl;
cnt++;
}
break;
}}}
std::cout << cnt << std::endl;
}
[1] 授業単元:C++ベーシック [2] 問題文(含コード&リンク): 1~100までの素数を探し、そのすべての素数とその値を合計を表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C++ [4] 期限: 2010年10月15日まで [5] その他の制限:#include <stdio.h> とする
C++なのにstdio.h?
>>625 「エラトステネスのふるい」で検索するか、
アルゴリズム辞典を引け。
すぐ出てくる
Cの授業なのにVC++を開発環境としてつかってるから言語をC++にしちゃう人多数 コンパイラ名がVC++になってて言語がC++って書いてあったらCで書くのが訓練された回答者
>>625 #include <stdio.h>
int main(void)
{
int i, j, sum = 0;
for(i = 2; i <= 100; i++) {
for(j=2; j * j <= i; j++) if(i % j == 0) goto L;
printf("%d\n", i);
sum += i;
L:;
}
printf("%d\n", sum);
return 0;
}
こういうのは再帰使うのが普通じゃね?
>>629 できれば、配列とflagを用いたタイプもお願いします。
それから
>>619 の<stdio.h>をお願いしますm(--)m
[1]C言語中級 [2]指定されたフロー構造に基づき次の仕様のプログラムを作成せよ 仕様: ★行とは、先頭か最後の区切り子からその次の区切り子までの区切り子を含まない文字列のこと ただしその次の区切り子が出現しないまま終端した場合は最後の文字列まで ★区切り子とは、改行文字(0x0A) 復改文字(0x0D),その組み合わせ(0x0D0x0A,0x0A0x0D)のいずれかと する(混在することを前提) ★標準入力から任意の長さの文字列を読み取り各行の空白スペースを除く先頭が0〜9からなる 文字列(これをキー数列と呼ぶ)でその直後が空白、タブで区切られている場合に限りその行を認識する。 それ以外の形式の場合は認識せず無視する。キー数列の長さが1024を超える場合も無視対象とする。 ★認識した行はキー数列を10進数の正整数を表すものとして、その順序(小さい順)に 整列して出力する フロー構造 main関数のみで構成。ライブラリ関数はstdio.hで定義されている関数のみを利用可能とする。 当然だが記憶領域はキー数列を記憶する領域の3倍程度しか確保できないことを前提 [3] FreeBSD上でC言語で記述しgccコンパイラで処理する。 [4] 10/10迄
>>634 ありがとうございます!
何度もすいませんが
>>619 の<stdio.h>を
使用したverをどなたかお願いします。
>>619 割るというよりぞろ目*nの形にしてみた
#include <stdio.h>
#define MAX 1000
int main(void) {
int i,j;
for(i=11; i<=MAX; i=i*10+1) {
for(j=1; j<10; j++) printf("%d ",i*j);
}
return 0;
}
>>633 先頭が数字でそのあとは文字でもよいのかなと思ってよむと、そうではなくて、全部数字でないと
いけないらしい。ここの部分は出題の文として適切でないから書き直した方がいい。
>空白スペースを除く先頭が0〜9からなる >文字列(これをキー数列と呼ぶ)でその直後が空白、タブで区切られている場合に限りその行を認識する 12345 ;おk↑ ABCDE 12345 ABCDE ;NG↑ 当然 12345 ABCDE 12345 ;おk↑ 12345 ;NG ↑末尾に直に改行がある 但しOKとすると仕様違反ではあるがPGの本質には影響しないと思われ
[1] 授業単元:プログラミング演習V [2] 問題文(含コード&リンク):以下の入力の1行目から5行目まで最小で移動する作業表と経路を求めなさい 第n列目の各升の情報を保持しておくことで、第n+1列目の費用は第n列目の情報から漸化式で求めることが可能となる 複数ある場合は上側を通る物を優先する 入力 0 3 4 2 3 1 0 2 5 8 7 5 0 6 1 3 5 8 0 4 6 4 3 2 0 出力 0 3 4 4 7 1 0 2 6 12 7 6 1 7 7 3 8 14 6 10 6 7 10 12 9 経路:0 0 2 2 3 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc [3.3] 言語: C [4] 期限: 2010年10月9日17:00
642 :
デフォルトの名無しさん :2010/10/09(土) 16:19:56
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):以下の式が成り立つように英字に数字をあてはめよ。 ただし同じ英字には同じ数字が当てはまる。 send +)more ------ money [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限:上記の条件のみです。
なんかプログラムでやるより普通に解いた方が早そうなんだが…
>>643 っ twelve+twenty=answer
>>644 407927 + 407146 = 815073
647 :
642 :2010/10/09(土) 17:14:52
プログラムで解くことになっているのでどなたかコードを作成して頂けませんか。 お願いします。
1>リンコしています...
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): ダイエットファイルに 20100930,curry and rice 20101003,kitsune soba 20101003,rice ball のような形で日付とその日食べた昼食が保存されているとする. コマンド行引数にダイエットファイル名と日付(yyyymmdd 形式) を指定して実行すると, ファイルの中から指定した日付を含む行を検索し,その日の昼食を出力するプログラムを作成せよ. また,引数としてファイルと文字列を指定しなかった場合に,使い方を出力して終了するようにせよ. 日付の検索には,標準関数char *strstr(const char *str1, const char *str2); を使用するのが簡単である. 【実行例】 % ./q3-3 diet.txt 20100929 date 20100929 was not found in file diet.txt % ./q3-3 diet.txt 20101003 20101003,kitsune soba 20101003,rice ball % ./q3-3 Usage: ./q3-3 filename date(yyyymmdd) % [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2010年10月14日まで [5] その他の制限:なし 少し長くなってしまいましたが、よろしくお願いします
1 int main(int argc, char* argv[]) 2 { 3 char cmd[1000]; 4 if(argc != 3){ printf("Usage: filename data(yyyymmdd)\n", argv[0]); exit(1); } 5 sprintf(cmd, "grep %s %s", argv[2], argv[1]); 6 system(cmd); 7 return 0; 8 }
そういう回答は、繰り返されるとつまらない
>>651 みんなが思ってることを書いても意味ないよ。
一発ネタを何度もくりかえしちゃう男の人って
>>650 >if(argc != 3){ printf("Usage: filename data(yyyymmdd)\n", argv[0]); exit(1); }
?argv[0] ってなんだ?
if(argc != 3){ printf("Usage:%s filename data(yyyymmdd)\n", argv[0]); exit(1); }
>>641 申し訳ないのですが、行列の意味などをもう少し詳しく教えてください。
作業表、というのもなにか、授業で配布された資料などを張ってください。あるいは参考になる URL を教えてください。
660 :
642 :2010/10/09(土) 20:40:55
656さん、ありがとうございます。
>>653 KY って何ですか?定義を教えてください。
>>617 問題の意味がややこしいわりに、解けてもおもしろくなさそう、というか。
出力形式を無意味に複雑化して指定しているというか。
解かされるほうはお気の毒、というか。
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):1から10の整数の平方根の値を表形式で 表示するプログラムを作成せよ。 表はこんな感じです。 N 平方根 --------- 1 1.000 2 1.414 略 9 3.000 10 3.162 [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限:math.hをインクルードすること。
>>662 解いてみるといいよ
ちょっと不思議なことになってるから
#include <math.h> int main(void) { puts("N heihoukon"); puts("-----------"); puts("1 1.000"); puts("2 1.414"); puts("3 2.000"); puts("4 2.236"); puts("5 2.449"); puts("6 2.646"); puts("7 2.828"); puts("8 3.000"); puts("9 3.162"); return 0; }
669 :
663 :2010/10/09(土) 21:21:57
665さん、ありがとうございます。
>>663 #include <stdio.h>
#include <math.h>
int main(void)
{
int x;
for(x=1; x<=10; x++)
printf("%d %.3lf\n",x,sqrt((double)x));
return 0;
}
>>667 ちょwww
ま、それでもいいんだけどw
>>666 >>641 に書いてある入力・出力・作業表は、正しいものですか、それとも適当に書いたものですか。
>>641 の入力からすると、最短パスは 0 1 2 3 4 になると思われるのですが。
あと
>>666 のどこを読めばいいか教えてください。
>>671 いや、ぜんぜんよくない。sqrt(3) は 2.000 じゃない。
ネタを書くなら正確に。ハズしてしまっては笑えない。
674 :
663 :2010/10/09(土) 21:40:19
670さんもありがとうございます。
>>672 入力が間違ってます…
>>666 の問題5-1を教えて頂ければ後は自分でやってみようと思うのでそちらでお願いします
問題の説明としては第7-2節が該当するはずです
何度もお手間をおかけしてすみません
いっとくけど俺は絶対にまともに解かないからな!
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):角度と正弦と余弦の対応表を出力するプログラムを作成せよ。 角度は度数法と弧度法の両方を表示し、角度は0〜360度の範囲で15度刻みとする。 表はこんな感じです。 +-----+-----+-----+-----+ | deg | rad | sin | cos | +-----+-----+-----+-----+ | 0 | 0.00| 0.00| 0.00| | 15 | 0.26| 0.26| 0.97| 略 | 345 | 6.02|-0.62| 0.97| | 360 | 6.28| 0.00| 1.00| +-----+-----+-----+-----+ [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限:正弦と余弦はCの標準ライブラリ関数sinとcosを用いて計算する。 角度は弧度法(ラジアン)で指定する。 πは3.14159265として計算する。 math.hをインクルードすること。 たくさん質問してすみません。 よろしくお願いします。
678 :
677 :2010/10/09(土) 21:59:07
レスしたものは表がずれてますので +-----+-----+-----+-----+ の+に縦棒の位置が来るよう調整をお願いします
>>677 #include <stdio.h>
#include <math.h>
#define PAI (3.14159265f)
int main ( void )
{
int deg = 0 ;
float rad = 0 ;
printf ( "+-----+-----+-----+-----+\n" ) ;
printf ( "| deg | rad | sin | cos |\n" ) ;
printf ( "+-----+-----+-----+-----+\n" ) ;
for ( deg = 0 ; deg <= 360 ; deg+=15 ){
rad = 2.0f*PAI*(float)deg/360.0f ;
printf ( "| %3d |%5.2f|%5.2f|%5.2f|\n", deg, rad, sin(rad), cos(rad) ) ;
}
printf ( "+-----+-----+-----+-----+\n" ) ;
return 0 ;
}
>>676 それはそれで結構なんだが、
>>667 は
>>663 の要求「平方根の値を表示する」を満たしていない。
>>667 では
sqrt(3) = 2.000 おかしい。ただしくは 1.732
sqrt(4) = 2.236 おかしい。ただしくは 2.000
...
ん、もしかして
>>667 は平方根をしらない小学生なのだろうか?
まともじゃないから意図した通りなんじゃね
それに
>>665 でまともな回答がでているのに、
あとからネタ回答
>>667 をかいても何も面白くない。それに間違っているし。
というか、手が遅いんだな、多分。
684 :
デフォルトの名無しさん :2010/10/09(土) 23:11:42
683 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/09(土) 23:08:14
それに
>>665 でまともな回答がでているのに、
あとからネタ回答
>>667 をかいても何も面白くない。それに間違っているし。
というか、手が遅いんだな、多分。
684 名前:デフォルトの名無しさん[] 投稿日:2010/10/09(土) 23:11:42
683 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/09(土) 23:08:14
それに
>>665 でまともな回答がでているのに、
あとからネタ回答
>>667 をかいても何も面白くない。それに間違っているし。
というか、手が遅いんだな、多分。
686 :
デフォルトの名無しさん :2010/10/09(土) 23:16:16
685 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/09(土) 23:15:43
684 名前:デフォルトの名無しさん[] 投稿日:2010/10/09(土) 23:11:42
683 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/09(土) 23:08:14
それに
>>665 でまともな回答がでているのに、
あとからネタ回答
>>667 をかいても何も面白くない。それに間違っているし。
というか、手が遅いんだな、多分。
また例の長文野郎か。 ほんとに、まともな C コードも書けないは、ルートを知らないは、予想以上に低レベルだわ。 というか、数年間もこのレベルでとまっているのか?
688 :
デフォルトの名無しさん :2010/10/09(土) 23:36:11
687 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/09(土) 23:33:04 また例の長文野郎か。 ほんとに、まともな C コードも書けないは、ルートを知らないは、予想以上に低レベルだわ。 というか、数年間もこのレベルでとまっているのか?
>>687 っと、特定できない相手、見えない敵に被害妄想を受けて
意味不明なことを言っております
というか、誰もが理解している事なのに敢えて
>>683 みたいなレスをするから基地外だと思われるんだよ。
>>683 のようなくだらない事に対して上から目線の無駄レスが荒れる原因。
このスレに長くいるなら、そんなこと気づいているだろ。学習能力のない
レベルが低くて停滞して、成長していないのは自分の方だと気づけよ。
>>687 何あんた?あぁそうか、このスレで自分は他人より回答しているからって
こんなスレでネット弁慶をやっている、日ごろは現実世界でC言語の授業などで
指導をしていない引きこもりかw お前の視野、世界は狭いのぅw
>>667 みたいな冗談は前々からは普通にあったが・・・
周りが理解しているのに、いちいち下らないと口出しするような
言わないと気が済まない性分をどうにかしないと、口が災いになって
自らトラブルを招くぞ。スルーもできないようじゃ、2ちゃんにも向いてないぞ。
なんで荒れてるん。もっと楽しもうよ。
宿題丸投げスレで議論したがる奴は、首釣って死ね。マジ死ね
見えない敵相手に、確認もできずに言い掛かりをして 自分の方が低レベルでこのスレの新参だともバレて必死だなw いつまでも下らないことに苛立ってムキになってろ。 どうせこのスレで自分は他人より回答しているというエゴだろ。 それこそくだらねぇ。
>>667 はジョークにもなっていない件について。
今まで何度も見たおふざけに反応したから茶化されたのに 自覚がないレス乞食ってキモイな。このスレに何年いるんだ?
宿題丸投げスレで議論したがる奴は、首釣って死ね。マジ死ね
>>667 はジョークにもなっていない件について。
必死すぎて顔真っ赤w 見えない敵と戦う恥ずかしい戦士w
>>667 はジョークにもなっていない件について。
どうせISO準拠について説明されても、自分はそんなの認めない!って ゴネた地方のド田舎者だろ。こいつじゃ2ちゃん慣れは無理。 地方の閉鎖的な習性丸出し。キモイ。
>>667 はジョークにもなっていない件について。
頭の固いやつだなwこのぐらいのお遊びは黙ってスルーしろよwww
ぎゃはははははwwwwww こいつマジで顔真っ赤だよw いつまでも気に入らないレスを見て、前に口論となった奴と 同一人物だと勘違いしてな。お前が言った奴と俺は別人だから。
>>667 はジョークにもなっていない件について。
>>708 書き込まれた内容が、どうみても別人には思えない件について。
このバカ自覚がないんだろうな。自分の方から喧嘩を売って 口論になっているのに、口論になる奴はいつもあいつと 特定した気になって、見えない敵と罵倒し合う愚かさ。 だから2ちゃんには向いてないって言ってんだよ。 不特定多数の人が閲覧、書き込み可能な場所なんだが??? まさか、閉鎖的な、特定の人物しか見てないとでも? だとしたら宿題の質問者も限定されるだろw
お前こそだれと戦ってるの?
>>712 宿題丸投げスレで議論したがる奴は、首釣って死ね。マジ死ね
顔真っ赤にして見えない敵と戦う恥ずかしい戦士
自分のことを自分で言ってしかも全然気づいていない件について
_____ /::::::::::::::::::::::::::\〜プーン /:::::::::::::::::::::::::::::::::::::::\〜プーン |:::::::::::::;;;;;;|_|_|_|_|〜プーン |;;;;;;;;;;ノ∪ \,) ,,/ ヽ〜 |::( 6∪ ー─◎─◎ )〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |ノ (∵∴ ( o o)∴)〜 < 長文野郎だな!お前ムカつくんだよ! | ∪< ∵∵ 3 ∵> ムッキー! \_____________________ \ ⌒ ノ_____ \_____/ | | ̄ ̄\ \ ___/ \ | | | ̄ ̄| |:::::::/ \___ | \| | |__| |:::::::| \____|つ⊂|__|__/ / |:::::/ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
>>716 だからお前のことだろ、前に口論した奴と同一人物だと勘違いして
誰それ構わず噛み付いてくるキモイ引きこもり。お前の粘着質はキモイ。陰険。
getchar()やint mainについても、誰と勘違いしたのか知らんが
公式文書、文献を用いた説明をしても信じようとしないし。ド田舎者丸出し。
恥ずかしいから失せろ。2ちゃんに向いてないよ、あんた。
でたでた。いつものAAがでた。
720 :
デフォルトの名無しさん :2010/10/10(日) 00:34:13
何かこのスレに常駐していて自分がベテランだと勘違いしているバカがいますねw お前みたいなのは人類の中でも無名で雑魚だから、せいぜい粋がれる場所で 偉そうに生きてな。どうせ納税額もちっぽけの雑魚だろw 家は年間何百万も法人税を納めているし、年商1億以上だが 多分お前よりは上。
月収 100 万じゃないのか?
発 者 同 . 。_ ____ 争 生 同 .じ . /´ | (ゝ___) い .し 士 .レ .__/'r-┴<ゝi,,ノ ro、 は、 .な で .ベ ∠ゝ (ゝ.//` ./`| }⌒j .い し .ル } ⌒ /`ヽ、_∠l,ノ ・ヽ´ .! ! か の / ´..:.} >、、___, .r、 ソ、`\ / ..:.:.} / |∨ ` ̄ / ..:.:./ | 丶 / _、 ..:.:.:.{ .{.:.:. \ { ..:Y .ゝ、 {.:.:.:.:. ヽ |、 ..:/ 丿 .:〉 >.- ⌒ . ヽ / {. ..:./ ソ ..:./ .( ..:.:.:` ..:} ./..:.:}.:.:./ ヘ、 ..:./ .\ ..:.:r_,ノ、.:.:} ./..:.:/|.:/ {.:./ X.:.:}.} X X /..:.:/ .}.:| }:/ .Y丶ヽ Y.:Y . __/.:/ { } 《.〈、 _,,__>.:》丶 Y.:\ /.:.:.:.:.::/ !.:.:ゝ ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ \.: ̄>
このスレに何しに来てんの、あんた?自分の腕を見せつけたい訳? 分かりきった答え、初歩的な問題を解いたくらいで偉そうにしているようじゃ たかが知れている。どっちがレベルが低いか、自覚しろ、ボケ老人。
>家は年間何百万も法人税を 自分が納めているわけではないのですね。 学校にいっていない?ひきこもり?大検という手もあるからがんばってね。
>>712 >自分の方から喧嘩を売って口論になっているのに、
そのとおり。
>>667 のような馬鹿をあぶりだして楽しんでいるのです。
基地外、基地外、基地外だ、わっしょい
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク):short型の整数a, bを2つ足すプログラムを作成し、そのときのa, b, cが納められているアドレスを調べなさい。 ここで注目して欲しいのは変数型を変えると変数が占有するメモリ領域が変わることである。(int型では4バイトだったが、short型は何バイトか?) [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン: gcc3.4 [3.3] 言語:Cです [4] 期限:10月13日 [5] その他の制限:なし プログラムを作れというより、ある一定の答えを出せという形の問題ですがよろしくお願いします
>>680 >float rad = 0 ;
>printf ( "| %3d |%5.2f|%5.2f|%5.2f|\n", deg, rad, sin(rad), cos(rad) ) ;
float は関数の引数となる際に double に変換される。
ISO/IEC 9899:1999 6.5.2.2.6
だからこのプログラムでは float を使う意味はない。最初から double にしておけば、精度もいいし無駄も発生しない。
わざわざ float で宣言している理由がわからない。cuda でも使うのなら話は別だが。
>(float)deg
いらない。
>int deg = 0 ;
>float rad = 0 ;
なぜ0で初期化するのか?おまじない、なら、いらない。
コンパイラのデータフロー解析が未熟で、未初期化変数の使用をを検出出来なかった頃、 変数宣言で必ず初期化というコーディングルールは存在した。
734 :
677 :2010/10/10(日) 12:09:35
レス遅れましたが、680さん、ありがとうございます。
>>733 ちょっと歴史的感覚の上で矛盾を覚える。
auto 変数宣言で初期化も同時にできるようになったのは、K&R2 以降から。
そのころにもなって、コンパイラがお馬鹿だったとは違和感を感じる。
それは static 変数を必ず初期化する、というコーディングルールでは?
小数点以下2桁までしか求められてないのにのに倍精度小数つかう必要あるの? と思ってしまう俺は超特殊環境で仕事してるんだなぁ 最近は普通に富豪プログラミングができていいやね
>>736 どっちみち printf() にわたるときに倍精度に変換されてしまう。printf() を使うのなら最初から倍精度で書けばいいだけなのでは?
環境が単精度を要求するのなら、それはそれで別のお話。cuda 関係の方ですか?
>>737 なんか最近知った知識をひけらかしたいだけのように見える
ちょっと前までprintfで%lfとかやっててた人ですか?
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):*でy=sin(x)を描くプログラムを作成せよ。 * * * * * * * * * * * * * * * * * ↑あいまいですがこんな感じになるはずです [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限:0<=x<=360とし、xの値は15度刻みとする。 下方向をx、右方向をyの正方向として解くこと よろしくお願いします。
なんでもいいから無料コンパイラ入れろ
>>739 #include <stdio.h>
#include <math.h>
int main ( void )
{
int i, x;
const double pai = 3.14159265;
const int width = 78/2;//横方向の文字数の半分
for ( x = 0 ; x <= 360 ; x+=15 ){
int rad = width + (int)(width*sin(pai*x/180)) ;
for ( i = 0 ; i < rad ; i++ ){
printf ( " " ) ;
}
printf ( "*\n" ) ;
}
return 0 ;
}
πが90°の世界ってどこにあるんだろう
741,742さん、解いていただいて申し訳ないのですが、点の数が足りないです 15度刻みで点をプロットすると、25個の点になるはずなのでどなたか訂正していただけませんか 説明不足でしたね。お手数かけてしまってすみません
たまに自分より速くでた回答に対して妙ないちゃもんつける人いるよね そんなに自分が一番じゃないと気がすまないのか
>>748 いや、その気持ちわからないでもないです。先に回答があるとやっぱり悔しいです。
手が速い、というのは、それはそれでひとつの才能だと思うのです。
753 :
747 :2010/10/10(日) 15:54:38
ごめんなさい、741さんのは点が25個出てきました。 勘違いしていたようです。すみませんでした。
点が25個でていないのは
>>742 、ということでお願いします。
訂正を
>>749 に入れておきました。ごめんなさい。
◆QZaw55cn4cは煽るときはトリップ外すのか
>>752 でトリップはずし忘れてるのが笑える
後だしでどうでもいいようなところを少しいじっただけのを出すのもどうかと思うけどな
>>755 むしろトリップつけ忘れが多いと思います。
>>695 とか。
煽る対象は限定しているつもりです。もう徹底的にやります。自分でも狂っているとも思いますが。
>>756 すみませぬ。
今のインテル・AMD CPUではdoubleとfloatで演算速度って違うの?
>>758 未最適化状態だと違う場合もあう
最適化かければ一緒になる
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):*でy=sin(x)を描く前述の問題を元に、 両端と中心に線を引き、幅と刻みを自由に指定することができるようにするプログラムを作成せよ。 |←幅→|←幅→| 幅=n 刻み幅(1度<=m<=90度)=m | * | | | * | | | * | | | * | 途中省略 | * | | * | | | * | | | * | | | * | | | * | | | * | | | * | ↑あいまいですが大体こんな感じになるはずです [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限:下方向をx、右方向をyの正方向として解くこと。 線の上を*が通る場合は|ではなく*を表示するようにすること。 よろしくお願いします。
今でも3Dとかで計算量滅茶苦茶多いとdoubleとfloatで速度全然違うとか聞いたけど、 騙されたのか?
>>737 >printf() にわたるときに倍精度に変換
これってprintf()の仕様?
組み込み系CPUの場合なんかだと倍精度に変換となると大変な変換に
なる場合あると思うけど。
763 :
739 :2010/10/10(日) 16:17:24
先ほどの問題のお礼忘れました。解いてくださった方、ありがとうございます。
短期間で何問も聞くならテキストか何かにまとめて貼れよって思う
floatとdoubleの違いとかって doubleでBCCとVCで初期の精度フラグが違うからBCCのが遅いとか floatだとSSE組み込み関数が使われるとか x86だけでも処理系依存じゃね。
766 :
760 :2010/10/10(日) 16:25:13
>>764 それはどのようにすればいいのでしょうか。
>>764 簡単な宿題丸投げする奴に、そんな難しいことは要求しないでね
>>761 x86だと汎用レジスタは32ビットなので遅くなることがある
しかし今のCPUはSSEとかSSE2とか積んでるのでそれらを使うようにすればほとんど一緒
ただしGPUは倍精度小数の計算が非常に苦手なので
3D処理を行う計算は単精度を使うことが多いんじゃない?
>>760 #include <stdio.h>
#include <math.h>
int main(void)
{
int i, n, m, w;
scanf("%d%d", &n, &m);
for(i = 0; i <= 360; i += m) {
w = n + sin(M_PI * i / 180) * n;
if(w == 0) printf("*%*c%*c\n", n + 1, '|', n + 1, '|');
else if(w < n) printf("|%*c%*c%*c\n", w, '*', n - w + 1, '|', n + 1, '|');
else if(w == n) printf("|%*c%*c\n", n + 1, '*', n + 1, '|');
else if(w < 2 * n) printf("|%*c%*c%*c\n", n + 1, '|', w - n, '*', 2 * n - w + 1, '|');
else printf("|%*c%*c\n", n + 1, '|', n + 1, '*');
}
return 0;
}
こんなところでする会話じゃないなw 速度なんて気にするようなプログラム無いだろここwwwww
ですよね〜 まあ今のうちからそういうこと考え始めるってのは悪くないと思うけど
SSE2だと1つの計算速度は変わらないけど 同時に計算できる量が2倍になる分、大量の計算をするときは単精度の方が有利なんじゃないの?
速度は気にしないといいつつも 可読性を無視して命令数を減らすコード書く奴多くね? 短くまとめりゃ良いってもんでもないだろ
774 :
760 :2010/10/10(日) 16:46:46
769さん、ありがとうございます。 ただ、一番下の*が中心にきていないので訂正していただけるとありがたいです。
>>774 >w = n + sin(M_PI * i / 180) * n;
w = n + (int)(sin(M_PI * i / 180) * n);
776 :
774 :2010/10/10(日) 17:01:46
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):0x20から0x7Eまでの文字コード表を出力せよ。 以下のようにすること。 Hex Dec 文字 ------------ 20 32 21 33 ! 22 34 " 23 35 # 途中略 7D 125 } 7E 126 ~ [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限:特に無し よろしくお願いします。
778 :
777 :2010/10/10(日) 17:14:16
↑表がずれてしまいましたが、文字の大きさは半角で4文字ピッチです。
>>777 #include <stdio.h>
int main ( void )
{
unsigned char c;
printf ( "Hex Dec 文字\n" ) ;
printf ( "------------\n" ) ;
for ( c = 0x20 ; c <= 0x7E ; c++ ){
printf ( "%4x%4d%4c\n", c, c, c ) ;
}
return 0 ;
}
>>779 printf() の %c に対して、printable かどうかを確かめずに c をそのまま渡しているのはいただけない。
#include <ctype.h>
printf("%4x%4d%4c\n", c, c, (isprint(c)) ? c : '.');
くらいのガードは必要だと思う。
>>762 C の仕様。
ISO/IEC 9899:1999 6.5.2.2.6
>>764 私は一問ごとに別々のほうがいいなあ。答えるのに便利。
質問するのに、それだけ手間かけている、という点もあって、好感度 up !!
>>761 gpgpu, cuda 方面では、そういう話を聞きます。それはそういうことで納得できます。
どうせまた◆QZaw55cn4cでしょ
そのとおりです。でも間違ってないでしょう?
こそこそしていてキモイ
>>781 0x20から0x7eって書いてあるのにそんなこというやつがいるとはw
0x20から0x7Eまでの文字コード表とある。 printable で無いものがあるのか?
失礼。7f を勘定にいれてしまっていました。平にご容赦を。
自分を自慢し褒めてもらいたがっている。 たいした男じゃないわ
◆QZaw55cn4cって問題文をまともに読めないし、 他人への突っ込みもおかしいこと多いし、 後だしで必死にコードあげるしで、 誰かに良く似てるんだよなw
回答者なら、◆QZaw55cn4cに回答を先に出されるようじゃだめだな 依頼者なら、回答してくれるならどんな奴でも良い奴だよな
最近負けっぱなしだから◆QZaw55cn4cが暴れてるんじゃないの?
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):0x20から0x7Eまでの文字コード表を出力せよ。 以下のようにすること。 | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+-------------------------------- 2| ! ~ # $ % & ' ( ) * + , - . / 途中略 7| p q r s t u v w x y z { | } ~ [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限:おそらく表がずれて表示されていると思うので きれいに表示されるよう調整お願いします。 最上段の一行と、その下にある文字は半角2文字ピッチです。 よろしくお願いします。
最近ideone君と◆QZaw55cn4cは自作自演なんじゃないかと思い始めて来た
>>797 ありがとうございます。
>>798 いいえ、違います。まったくの別人です。
学校の課題がたくさん出たのですが、難しすぎて解けない(自分あんまり頭が良くない)ので
この掲示板の方に助けていただこうと思ってここを訪れているだけです。
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):入力された1〜2010の範囲において閏年を判断するプログラムを作成せよ。 閏年の場合、閏年と表示。 閏年でない場合、平年と表示。 1〜2010の範囲外であるときは判定不可と表示するようにする。 ルール: 入力された値が4の倍数のとき、あるいは400の倍数のときは閏年であり、 入力された値が100の倍数のとき(100,200,300,500・・・など)は閏年ではない。 [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限: よろしくお願いします。
802 :
800 :2010/10/10(日) 21:32:48
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):入力された整数を一桁ずつ足してゆき、 その合計を表示するプログラムを作成せよ。 例: 入力:123 表示:1+2+3=6 入力:45678 表示:4+5+6+7+8=30 [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:もっていないのでideoneを使ってます。 [3.3] 言語:C言語のみ [4] 期限:2010年10月15日まで [5] その他の制限: よろしくお願いします。
804 :
803 :2010/10/10(日) 21:38:51
付け足します。↑のプログラムは0以上の整数が入力されている限り入力を繰り返すものとします。
コンパイラなんてタダで色々あるんだから入れとけよ
>>803 #include <stdio.h>
int main(void)
{
while(1) {
int n, sum;
char str[256], *p;
scanf("%d", &n);
if(n < 0) break;
sprintf(str, "%d", n);
printf("%c", str[0]);
sum = str[0] - '0';
for(p = str + 1; *p; p++) {
printf(" + %c", *p);
sum += *p - '0';
}
printf(" = %d\n", sum);
}
return 0;
}
>>806 なんでsumに足すのにc使わないでまた計算してんの?
>>803 #include <stdio.h>
int main()
{
char input[256];
while (1) {
int i, sum;
printf("入力:");
fgets(input, sizeof(input), stdin);
if (input[strlen(input) -1] == '\n')
input[strlen(input) -1] = 0;
for (i = 0, sum = 0; i < strlen(input); i++) {
if (input[i] < '0' || '9' < input[i]) {
return 0;
}
sum += input[i] - '0';
}
printf("表示:");
for (i = 0; i < strlen(input) - 1; i++) {
printf("%c + ", input[i]);
}
printf("%c = %d\n", input[i], sum);
}
return 0;
}
>>803 #include <stdio.h>
int main(void) {
int sum=0;
char ch;
do{
ch=getchar();
if(ch=='\n') break;
sum += ch-'0';
printf("%c+",ch);
}while(1);
printf("\b = %d\n",sum);
return 0;
}
>>812 >付け足します。↑のプログラムは0以上の整数が入力されている限り入力を繰り返すものとします。
負の数の入力があると変。
バックスペースは ideone ではサポートされていない。どうでもいい点ではありますが。
アイヤ、ネタで書いたアルヨ、不十分で悪かったアルヨ
>>812 は
都合悪いと中国人になる奴のプログラムだな(char ch)
でも、ideon君はこんなプログラムレベルの方が先生から怪しまれないと思う
しかしこんな無節操かつ大量の宿題が出るってどんな授業なんだよ 先生の方にも問題があるんじゃない?
工業高校の情報処理です
前期の半年分サボってた分のとか…?
819 :
また勘違い馬鹿が必死に煽っているよ :2010/10/11(月) 02:17:29
815 名前:デフォルトの名無しさん 投稿日:2010/10/10(日) 23:26:31
>>812 は
都合悪いと中国人になる奴のプログラムだな(char ch)
でも、ideon君はこんなプログラムレベルの方が先生から怪しまれないと思う
815 名前:デフォルトの名無しさん 投稿日:2010/10/10(日) 23:26:31
>>812 は
都合悪いと中国人になる奴のプログラムだな(char ch) < 激しく意味不明なレス
でも、ideon君はこんなプログラムレベルの方が先生から怪しまれないと思う < ますます意味不明
↑お前本当に2ちゃんねるに向いてないよ?昨日もネタコードに噛み付いて
詰まらないことで自分はレベルが低くない、高いと思っているのか知らないが
そうやって下らないことを見下して偉そうに出来れば大したもんだ、精神レベルの低さはw
前から居るよ。 "どうせお前「それは仕様です」とか言ってるヤツだろ" みたいなこと言って喜ぶ輩。
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 整数値を読み込んで、その絶対値を表示するプログラムを作成せよ。 [3] 環境 [3.1] OS: vista [3.2] コンパイラ名とバージョン: Visual C++2010 [3.3] 言語: C言語のみ [4] 期限: [2010年10月15日まで] [5] その他の制限:なし よろしくお願いします。。
何でそんなのも分からないの
こういうの見ると敢えてif分だけで作りたくならね?
むしろifでやるのが親切なんじゃないの? この問題ならabsは求められてないでしょ
レス乞食
いっそどこまで回り道できるか競ってみないか
2乗して平方根出すくらいまでしか思い浮かばねぇや
>>822 #include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
printf("%d\n", n < 0 ? -n : n);
return 0;
}
つまらん
831 :
デフォルトの名無しさん :2010/10/11(月) 02:57:59
あんた本当に2ちゃんに向いてないよw
intからCharに変換して 先頭が0xD2だったら除去 int型に戻して表示 簡単なのを無理やり難しくしようとしたら逆に難しいな
833 :
デフォルトの名無しさん :2010/10/11(月) 03:01:39
まぁ、なんだね、とりあえずお前、必死だなw
>>822 #include <stdio.h>
#include <stdlib.h>
int main(void){
int n , i;
scanf("%d",&n);
if(n > 1){
i=1;
}else if(n < 1){
i=0;
}
Switch(i){
case 1: n=n*1; break;
case 2: n=n*-1; break;
default: printf("0\n"); exit(0);
}
printf("%d\n",n);
return 0;
}
俺はもう・・・寝る・・・
ひどすぎるw
>>822 #include <stdio.h>
int main ( void )
{
int n ;
scanf ( "%d", &n ) ;
n = ((n>>((sizeof(int)-1)*8))&0x80)?~n+1:n ;
printf ( "%d\n", n ) ;
return 0 ;
}
微妙?
もうお前ら誰が誰かわかんねぇよ ここまで自演なんじゃないかと思えるほど
838 :
デフォルトの名無しさん :2010/10/11(月) 03:09:36
このスレが自分のテリトリーだと勘違いしている引きこもりニート必死だなw C言語はお前だけのもんじゃねーぞ?
噛み付きぶりから考えて、
>>819 ,820も同一人物と思われる
>>834 >int n, i;
int n, i = 0;
>if(n > 1){
>i=1;
>}else if(n < 1){
>i=0;
if(n > 0){
i=1;
}else if(n < 0){
i=2;
誰からも相手にされてないのに見えない敵と戦い続ける間抜けが1人いるみたいですね
おい 面白そうなことするときは呼べって言ってただろうが
>>822 #include <stdio.h>
int main(void)
{
int f = 1;
int c;
while ((c = getchar()) != '\n') {
if (f) {
f = 0;
if ('0' <= c && c <= '9') {
putchar(c);
} else if (c != '-') {
break;
}
} else if ('0' <= c && c <= '9') {
putchar(c);
} else {
break;
}
}
return 0;
}
>>840 例の長文野郎ですよ。
でも簡単にせよコードをさらすようになったのはいい傾向。
あとは、ミスをミスとみとめるだけの度量が育ち、双方向リストの問題を解いてみせれば、立派なこのスレの住人ですね。
期待しています。
お前も長文と同レベルのゴミだってことを自覚しろよw
◆QZaw55cn4cもこのスレにいらない 「◆QZaw55cn4cだけど何か聞きたいことある?」スレでも立てて独立してほしい
t
夜中は楽しいスレになってたんだ
>>845 どれが長文のコードってわかるか、それどれ?
長文と◆QZaw55cn4cって似たもの同士だろw 日本語読めない、他人に攻撃的なのに妙に自分に甘い、 相手を妄想で特定する。
>>841 あ・・・れ・・・?
今日からはもっと早く寝るよ・・・
852 :
デフォルトの名無しさん :2010/10/11(月) 20:11:25
深夜の時間帯に口論している連中、今日は祝日とは言え 連日だからどう考えても昼夜逆転した引きこもりニートだろ・・・ C言語くらいしか生き甲斐の無い寂しい人間なんだな・・・ C言語と共に孤独死か?お前も俺も、いつか必ず死ぬんだぜ?
853 :
デフォルトの名無しさん :2010/10/11(月) 20:15:12
>>846 >お前も長文と同レベルのゴミだってことを自覚しろよw
お前も同レベルのゴミだってことを自覚しろよw
いるよな、周りの荒れっぷりを見て外から見て、自分はそんな 低レベルな人間ではない(キリッ)とかやっている、自分こそ 技能レベルではかなり低レベルだと自覚の無い馬鹿w そう、お前だよお前、2ちゃん慣れしていない新参のお前。 今さら分かりきったことを、持論で勝手に定義してんじゃねーぞw
>>853 >>お前も長文と同レベルのゴミだってことを自覚しろよw
>お前も同レベルのゴミだってことを自覚しろよw
お前も同レベルのゴミだってことを自覚しろよw
856 :
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2010/10/11(月) 20:18:44
_____ /::::::::::::::::::::::::::\〜プーン /:::::::::::::::::::::::::::::::::::::::\〜プーン ←鏡を見ろよw |:::::::::::::;;;;;;|_|_|_|_|〜プーン |;;;;;;;;;;ノ∪ \,) ,,/ ヽ〜 |::( 6∪ ー─◎─◎ )〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |ノ (∵∴ ( o o)∴)〜 < 長文野郎!!!!!きめぇ〜んだよ! | ∪< ∵∵ 3 ∵> ムッキー! \_____________________ \ ⌒ ノ_____ \_____/ | | ̄ ̄\ \ ___/ \ | | | ̄ ̄| |:::::::/ \___ | \| | |__| |:::::::| \____|つ⊂|__|__/ / |:::::/ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
857 :
デフォルトの名無しさん :2010/10/11(月) 20:19:27
>>855 自分の言葉で反論できないからコピペしかしない無能。
恥ずかしいよ。オウム返しするガキを見かけたが
お前の精神レベルは成人未満。どこで成長が止まったんでしょうね?
厨房?
静かだねぇ、やっぱり長文とか言っている、見えない敵を勘違いして 自分が気に入らなければ顔を真っ赤にして叩く、自分の言葉で 反論できないコピペオウム返ししか出来ない無能は 昼夜逆転した深夜に暴れる引きこもりニートで C言語が生き甲斐、人生の全ての、このスレのネット弁慶なんでしょうね。
7時間の沈黙のうちにどうしたんだ?
>>822 昔こんなのを見て感動した
#include <stdio.h>
int main ( void )
{
int n ;
scanf ( "%d", &n ) ;
printf ( "%d\n", n-(n<<1 & n
>>31 ) ) ;
return 0 ;
}
861 :
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2010/10/11(月) 21:56:12
(^p^)あうあうあー
printf ( "%d\n", n-(n<<1 & n
>>63 ) ) ;
>>862 まじで、俺の環境だとうまくいくけどな
まあうる覚えだし間違ってるかも。
867 :
デフォルトの名無しさん :2010/10/11(月) 22:05:45
1] 授業単元:プログラミング演習 [2] 問題文 文字を1文字ずつ入力し、10文字の文字列を作成する プログラムを作成せよ。この時、1文字入力するごとに入力済みの文字列を 表示すること。 なお、変換仕様「%*c」を用いることで文字を読み飛ばすことができる。 すなわち、「%c%*c」とすることで改行文字を読み飛ばすことができる。 また、char型配列はNULLで初期化した場合としない場合で実行する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語:C++ [4] 10/14 [5] その他の制限: なし よろしくお願いします
>>866 int型が32ビットか64ビットかの違いなんの
>>864 sizeof(int) 教えて。
その感動を味わいたい。
>>860 おお、できた、ビット演算マジエロいなこういう事だな
printf ( "%d\n", n-(n<<1 & n>>sizeof(int)-1) ) ;
>>863 16bit や 24bitのintってことない?
>>870 すげー嘘ついたw
試さずに言うもんじゃないな、こうだな
printf ( "%d\n", n-(n<<1 & n>>sizeof(int)*8-1) ) ;
>>870 いや、こちらではだめなようだ。
ダメだったソースは以下のとおり。環境は gcc4(cygwin)/WindowsXP
#include <stdio.h>
int main(void)
{
int n ;
printf("%d\n> ", sizeof(int));
scanf ( "%d", &n ) ;
printf ( "%d\n", n-(n<<1 & n>>((8 * sizeof(int))-1)) ) ;
return 0 ;
}
。ρ。 ρ m C|.| /⌒⌒⌒ヽ/~ ̄ ̄ ̄ ̄ヽ /⌒ヽ⌒ヽ___ | ∴ヽ 3 ) < 俺のC言語のソースが漏れちゃう ./ _ ゝ___)(9 (` ´) ) / 丿ヽ___,.───|彡ヽ ―◎-◎-| _/ ) ( Y ̄ ̄ ̄ ̄) (__/ \____/
#include <limits.h> printf ( "%d\n", n-(n<<1 & n>>(sizeof(int) * CHAR_BIT -1) ) ; 本当はこうだよ。
>>867 #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void){
char str[11] = "";
//char str[11];
int input_cnt = 0;
while(1)
{
char c = getch();
if(('0' <= c && c <= '9') || ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')){
str[input_cnt++] = c;
system("cls");
printf("%s", str);
}
else{ continue; }
if(input_cnt == 10){ str[10] = '\0'; break; }
}
puts("");
}
printf("未だにAlphaだから");
880 :
873 :2010/10/11(月) 22:29:15
うまくいった。 感動した。
882 :
873 :2010/10/11(月) 22:46:52
>>881 それがよくわからない。再コンパイルしたらうまくいった。
lsic でもためしていたので、頭が混乱していたと思う。
へー条件分岐なしで絶対値出るんだ 使い道なさそうだけどすごいな
「ショートコーディング」でググると幸せになれるかも
885 :
デフォルトの名無しさん :2010/10/11(月) 23:48:35
宿題レベルだと思いますので、こちらで質問します。 SDKでダイアログベースのTPを作ろうとしているのですが、 DialogBox関数を実行してもダイアログが表示されません。 GetLastError() でエラーを取得すると、 「トップレベルの子ウィンドウを作成できません。」 を意味するエラーが返ってきました。 開発環境: Visual C++ 2010 SDK で「空のプロジェクト」からプロジェクトを作り、 リソースからDialogを追加して、IDを ID_MYDLG にしています。 以下の main.cpp を作りましたが、上記のような状態です。 #include <windows.h> #include "resource.h" BOOL CALLBACK MyDlgProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { DWORD err = GetLastError(); return 0; } BOOL CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) { // ブレークポイントを設定しても、ここを通過しませんでした switch (msg) { // 省略します } return FALSE; } 以上です。どこがおかしいでしょうか。。。よろしくお願いいたします。
886 :
885 :2010/10/11(月) 23:50:18
すみません、 WinMain 関数内で以下を実行しています。 DialogBox(hCurInst, MAKEINTRESOURCE(IDD_MYDLG), NULL, (DLGPROC)MyDlgProc); 投稿用にコメント文を消していたのですが、関数まで消してしまいました。
>>887 クラスタリング難しいすね。。。
スレ汚し失礼しました。
sizeof(T) * CHAR_BIT が有効ビット数とは限らない 負数が2の補数とは限らない 負数の右シフトは環境定義 負数の左シフトは未定義 ほかには?
>負数が2の補数とは限らない まじか、はじめて知った。
1 の補数であってもよいし、 浮動小数点数にも使われているバイアス式でもいいし(この場合は正の数にも影響するかなあ)、 でもPCでそんな処理系は見たことはありません。
[1] 授業単元: プログラミング演習V [2] 問題文(含コード&リンク): 実行時引数で2つの文字列を与え、レーベンシュタイン距離を動的計画法で求める。 文字列は、英小文字で各10字以内とする。 作業表を出力する。以下のように実行し、作業表も出力する。 EditDist.exe bcabc abdd 0 1 2 3 4 5 1 1 2 2 3 4 2 1 2 3 2 3 3 2 2 3 3 3 4 3 3 3 4 4 距離 : 4 [3] 環境 [3.1] OS: vista [3.2] コンパイラ名とバージョン: bcc [3.3] 言語: C言語 [4] 期限: 2010年10月14日 [5] その他の制限:なし [参考] レーベンシュタイン距離の効率的な計算には、動的計画法による算法が知られている。作業表を作り、左上から右下へ、 最も操作回数が少なくなるような経路を選んでいく。作業表の各数値は、左上から埋めていく。ある位置の上、左、左上の値を比べ、 最小値をその位置に書き込む。左上端では0とする。さらに、縦と横の文字が一致していなければ1を足す。右下端が求める距離に なっている。どのような基本操作を行ったかは、右下端から最小となる方向を逆に辿っていけばよい。 右に進むことは、横向きの文字列の先頭文字を削除することに相当する。下に進むことは、縦向きの文字列の先頭文字を削除することに 相当する。右下に進むことは、両方の先頭文字を削除することに相当する。
>>893 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
int min(int a, int b, int c)
{
return a > b ? (b > c ? c : b) : (a > c ? c : a);
}
int LevenshteinDistance(char *str1, char *str2)
{
int lenstr1 = strlen(str1) + 1;
int lenstr2 = strlen(str2) + 1;
int* d = new int[lenstr1*lenstr2];
int i1 = 0, i2 = 0, cost = 0;
for (;i1 < lenstr1; i1++) d[i1*lenstr2] = i1;
for (;i2 < lenstr2; i2++) d[i2] = i2;
for (i1 = 1; i1 < lenstr1; i1++) {
for (i2 = 1; i2 < lenstr2; i2++) {
cost = str1[i1 - 1] == str2[i2 - 1] ? 0 : 1;
d[i1*lenstr2+ i2] = min(d[(i1 - 1)*lenstr2+i2] + 1, d[i1*lenstr2+i2 - 1] + 1, d[(i1 - 1)*lenstr2+i2 - 1] + cost);
}
}
return d[(lenstr1 - 1)*lenstr2+lenstr2 - 1];
}
int main(int argc, char **argv)
{
printf("%d\n", LevenshteinDistance("kitten", "sitting"));
//getch();
return 0;
}
あ、getch消し忘れた消しといて
あ、new使ってるねw そのへんはフィーリングで
minのオーバーロードもできない
ああ、しかもメモリ解放してないやこれで動くかな >int* d = new int[lenstr1*lenstr2]; int* d = (int *)malloc(sizeof(int)*lenstr1*lenstr2); memset(d,0,sizeof(int)*lenstr1*lenstr2); >return d[(lenstr1 - 1)*lenstr2+lenstr2 - 1]; int x=d[(lenstr1 - 1)*lenstr2+lenstr2 - 1]; free(d); return x;
>>898 オーバーロード?
どっかで定義されてたっけ?
まあ問題あるならminの名前変えてくれ
901 :
デフォルトの名無しさん :2010/10/12(火) 02:17:24
getchar()さん必死ですねw
修正してやれよww
>>894 のコピペ元見つけた
ハンパな知識でしかも.cppで改変したからこんなことになるんじゃ
無修正が一番!w
そもそもWikipediaに擬似コード乗ってるんだし此処で聞くまでもないレベル
擬似が通用するのは修正(ザイモク)ありだからこそ! 無修正で擬似ではないことを証明せよ!
>>822 もしかして同じ学校の人ですか?
課題がまったく同じなんですけど
このスレならよくあること。
三流大学だけどねw
大学のランクはあまり重要ではない、特にプログラムの授業では。 むしろそれ専門の学校の方がレベルが高い。 所詮、数値計算程度の授業くらいしかしない。 数学で使う数式のコードを書いたからって、プログラミングが 上達する訳でもない。もっとシステム、OS、コンピュータの仕組みを 理解する方が良い。
ねーよw
ハッシュ関数なんですけど、順序を保つやつないですか? a、bは100KB程度の文字列で比較可能でa<bならば、h(a) < h(b)となるやつです。 ハッシュ関数hは均等に分布できるやつが良いです。
ソートするのにこういう関数があれば速度が上げられると思うのですが。
ハッシュでおおざっぱに分類できるので。
文字列の先頭8バイトで比較すれば条件満たすわけですが
これでは先頭8文字が一致していた場合、分類が出来ないです。
たとえば先頭が全て
http://で始まるとか 。
テンプレに従うか他いけ
自己解決しました
あ、俺も自己解決しました
先頭からの十分な長さ(例えば100バイト)と標本で分布を調べたのち 分割が均等になるように分割するんです。
>>921 とりあえずヒントから
問1 まず a と b だけで比較して、大きい方と c を比較する。
問2 int b とかに代入するだけ。
問3 問2ができたら、10で割った余りを求めればよい。
問4 原点と入力された点との距離を求めて1と比較して判定。円上はどうするの?
問5 合計降水量(24時間の降水量)が10未満かどうか判定する。
5問もあるとかぶりそうでめんどくさいな
924 :
デフォルトの名無しさん :2010/10/12(火) 21:28:46
>>878 ありがとうございます。
1] 授業単元:プログラミング演習
[2] 文字列を入力し、指定した文字位置から5文字分を表示する
プログラムを作成せよ。ただし、入力する文字列は
半角のアルファベットとする。文字列の数は40文字程度とし、
5文字分を取り出す位置の関係を意識すること。
また、文字列の取り出しにはポインタを使うこと。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語:C++
[4] 10/14
[5] その他の制限: なし
よろしくお願いします
925 :
デフォルトの名無しさん :2010/10/12(火) 21:32:47
1] 授業単元:プログラミング演習 [2] 2変数の和、差、積、商、平均を同時に求めるプログラムを 作成せよ。ただし、2変数は標準入力より入力し、計算はmain関数内から 一度だけ呼び出すただ一つの関数内で行うようにすること。 例として以下のようになる。 int calc(・・・・) { ・・・・ } int main() { ・・・・ calc(・・・・); printf・・・・ ・・・・ } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語:C++ [4] 10/14 [5] その他の制限: なし よろしくお願いします
>>925 2つの関数間で、複数のデータを受け渡す演習だと思うけど、
グローバル変数を使う方法、関数の引数にポインタを使う方法が考えられるね。
とりあえず、ヒントだけで考えてみな。
>>927 構造体の値渡しはコピーが遅いから、個人的に好きじゃないな。
演習レベルならよいのかもしれないけどね。
[1] 授業単元:ゲームプログラミング2
[2] 問題文(含コード&リンク):
6×6の盤面におけるソリティアを解くプログラムをC言語で作成せよ。
詳細は以下のファイルからお願いします
>>1 のロダには容量オーバーでしたので別のを使ってます
http://www.dotup.org/uploda/www.dotup.org1196291.zip.html DL Pass:hibari
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
[3.3] 言語: C言語
[4] 期限: 2010年10月13日AM9時
>>934 Q先生、
>>925 はint calc(・・・・)だから,intのなんか返すんじゃない
でも返したintを使う気はないみたいだけど
であと、言語C++だから、なんかC++らしいの入れたほうが素敵じゃない(Ref渡しとか)
変数の意味がわからなくて気持ち悪い
クラスを使えとかiostreamを使ってとか指示が無い限り ここでの「言語:C++」は信用してはいけない
>>933 期限が今日じゃねーかw
途中まで作ったコードとかないのか?
>>937 それよりも変数を後から定義していいとか、for文中でも変数定義できるとか
そういうコードをCとして書いている場合が多くて困るよな
>>922 >>931 御早い回答ありがとうございます。とても助かりました。
私は実数の表し方などまだ見直すところがたくさん発見できて勉強なりました!
>>913 >ハッシュでおおざっぱに分類できるので。
これ、どういう意味ですか?
[1] 授業単元:基礎プログラミング [2] 問題文(含コード&リンク) 下記の様に、料理名の入力や材料名をキーボードより入力して、人数分の料理のレシピを計算して表示するプログラムを作成しなさい. 今日の料理名は何ですか:(料理名)
材料名は何ですか:( 材料)
( 材料) は一人当たり何グラム必要ですか:(分量)
何人分の料理を作りますか:(人数)
==レシピ== 今日は、(料理名)を作りましょう。
「(料理名)を(人数)人分作るには,(改行)
( 材料) が ( 分量×人数 ) グラム必要です」
*()内の料理名や材料には自分の好きな名前を考えてください。
* 人数、分量はキーボードから入力した値を使用してください。
printf 関数内で%sや%dを使用して、文字列(料理名・材料名)や整数値(人数・分量)を表示すること。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:10月14日 [5] その他の制限: なし よろしくお願いします。
946 :
デフォルトの名無しさん :2010/10/13(水) 11:16:29
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) C言語では文字列をchar型配列で扱おうとすると、コンパイル時に文字列の長さを 決めなければならなくて不便である。そこで、mallocを用いた動的メモリ確保により、 この問題を解決したい。文字列の長さを入力させた後に、任意の長さの文字列を 標準入力から受け付け、読み取るプログラムを作成せよ。また、読み込んだ 文字列を大文字にしたうえで、順序を逆にして出力するプログラムを作成せよ。 ------実行例------- 文字列最大長を入力してください:26 文字列を入力してください:abcdefghijklmnopqrstuvwxyz ZYXWVUTSRQPONMLKJIHGFEDCBA [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:10月15日 [5] その他の制限: なし 何卒よろしくお願いします。
[1] 授業単元:C言語基礎実習 [2] 問題文(含コード&リンク):入力された実数の平方根を"二分法"で求めて表示するプログラムを作成すること。 精度は小数点第六位まで。ただし、入力された値が1未満の場合は何もしないこと。 [3] 環境 [3.1] OS:Windows Vista Basic 32bit [3.2] コンパイラ名とバージョン:Visual Studio 2010 [3.3] 言語:C言語 [4] 期限:2010年10月18日正午まで [5] その他の制限:特にありません
948 :
デフォルトの名無しさん :2010/10/13(水) 13:46:49
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): ビット演算子 データ出力用変数dを用いてループさせ、 int型整数において、キーボードから数値を入力して下位からi番目のビットを1にセットする。 条件は、 値が0→break 値が正→対応するビットをON(1〜8) 値が負→対応するビットをOFF (値が大きすぎたらエラーにする) [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2010年10月14日まで [5] その他の制限: 特になし
表示はどうすんの?
表示しろって言ってないししなくていいんじゃね?
951 :
デフォルトの名無しさん :2010/10/13(水) 14:05:14
表示はもし3と入力されたら00000100のように表示できるようにお願いします。
#include <stdio.h> int main(void) { int i, d = 0; while(1) { scanf("%d", &i); if(i == 0) break; if(i > 8 || i < -8) printf("error\n"); else if(i > 0) d |= 1 << i - 1; else d &= ~(1 << -i - 1); printf("%d%d%d%d%d%d%d%d\n",d>> 7&1,d>> 6&1,d>> 5&1,d>> 4&1,d>> 3&1,d>> 2&1,d>> 1&1,d&1); } return 0; }
953 :
デフォルトの名無しさん :2010/10/13(水) 15:56:39
eclipseでC言語のビルドをするのですが、オブジェクトファイルまでしか できません。どうすれば実行形式まで作成できますか。
>>953 最初のプロジェクトで「実行可能」を選択しないからだろ
暇だからって自演すんなw
959 :
デフォルトの名無しさん :2010/10/13(水) 19:50:05
961 :
デフォルトの名無しさん :2010/10/13(水) 20:41:25
int calc()になってるから return 0; でも書いておけばいいんじゃね
問題文読めないアホが増えたw
◆QZaw55cn4が問題文読めないのはいつものことじゃないか
「平均」が抜けてるわけか
題意を正確に把握することのほうが少ないくらいだしな
>>965 正解。
不完全ながらソースコードがあって、直すところもわかってて、
それでも自分で直せないなら、
>>925 に単位を取らせるべきじゃない気がするな。
[1] 授業単元:C言語基礎実習 [2] 問題文(含コード&リンク):ある整数 a をその数自身を除く約数をすべて足したときに その合計の値がaと同じになるとき、その数を和の完全数といいます。 512以下の和の完全数を見つけて表示するプログラムを作成しなさい。 出力は以下のようにする事。 6=1+2+3 28=1+2+4+7+14 ・ ・ ・ [3] 環境 [3.1] OS:Windows Vista Basic 32bit [3.2] コンパイラ名とバージョン:Visual Studio 2010 [3.3] 言語:C言語 [4] 期限:2010年10月18日正午まで [5] その他の制限:特にありません
次スレ立てます
>>975 出力してるところのコードがひどすぎるね。
荒らす時はトリを外す◆QZaw55cn4cは本当に陰湿で気持ち悪いなぁ
979 :
デフォルトの名無しさん :2010/10/14(木) 00:15:10
>>978 まぁ、口だけのみで手を全く動かさないのも、どうかと思う
つまり、似たり寄ったりってことだな
手を動かさないとレスできなくね?
>>976 たしかにやっつけですね。たぶんもっといい方法はあると思うのですが、さてどうしたものか。
>>978 トリップは問題提示者との確実なコミュニケーションを確保するためにつけています。
いつも聴きに来る側なんであれなんですけど 最初にdivsumで求めるときに配列に入れといたらダメなんですかね
>>983 無論ありですし、ずっと効率が良くなると思います。
985 :
デフォルトの名無しさん :2010/10/14(木) 00:42:17
>>984 おお、そうですか
なんかまずいのかと思いました
あとここの次スレっていつ誰が立てるんですかね
なくなるとすごく困るんですけど
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):組み合わせ数を答えがオーバーフローするギリギリまで求めよ。C[n, n / 2]をnを1から1づつ増やしてその答えを一行ごとに出力せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++2010
[3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:標準的なコードでお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10945.txt ここ前でかけたんですがn = 34の時オーバーフローしてしまいます。
でもc[34, 17] < 2 ^ 32 なので計算の途中でオーバーフローしているようです。
どう直せばいいのでしょうか
>>987 妄想だが、オーバーフローしているのはスタックメモリじゃないか
VCでそれをどう変更設定するかは忘れた><
>>989 ,990
ありがとうございます
もうたってましたか、またお世話になります
>>987 とりあえずコード読んだけど再帰で書きたいの?ループで書きたいの?
意味わかって書いてる?
>>993 別にどっちでもいい
関数の中のfor文だけだとn = 30の時にオーバーフローしちゃうし
偶数と奇数の場合分けだけだと数が小さい時は割り算で余りが出ちゃって答えずれちゃうしで
再帰とループを使ってる
頭が足りない初心者の苦肉の策です
>>987 そうか、再帰の部分機能してないぞ。
まあ、こだわりが無いなら、再帰の部分をなくしてanswerをlong long型にすると治ると思う
997 :
996 :2010/10/14(木) 01:41:12
>>991 プロパティシートで設定するんじゃないの、VS2010なら
後付で申し訳ないんですが %uもlong longも習ってないので出来れば使わない方がいいかと思います 型はint型のみで出力も%dのみでお願いします
次スレで会おう
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。