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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

C/C++の宿題片付けます 139代目
http://hibari.2ch.net/test/read.cgi/tech/1280653311/
2デフォルトの名無しさん:2010/09/16(木) 19:20:53
おつー
3デフォルトの名無しさん:2010/09/16(木) 19:37:25
前スレでも質問してたのですがスレ変わったので改めて質問させて貰います

[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]);
}

こんな感じで任意の数を入力させない場合はできたのですが、任意の数を読み込ませる形がわかりません・・・お願いします
4デフォルトの名無しさん:2010/09/16(木) 20:11:36
>>3

とりあえずscanf()でいいんじゃない?

int a;

printf( "how many rows?\n" );
scanf( "%d", &a);

みたいな感じで使う。これでaにユーザーが入力した値が入るよ。
5デフォルトの名無しさん:2010/09/16(木) 20:57:55
よくやった?タイムリーにスレタイを
140田代くらいやって欲しかったぜw
6デフォルトの名無しさん:2010/09/16(木) 21:12:43
>>3
ttp://codepad.org/ZFiWDmoP
>>4の助言でもう解決しちゃったかもしれないけど
7デフォルトの名無しさん:2010/09/16(木) 21:24:14
>>6
C++でなくてCだぞ
8デフォルトの名無しさん:2010/09/16(木) 21:30:30
VC++ 2008使ってるからセキュア版の方が良いかと思って、
気になるなら消してくだせえ、
一応gcc 3.4.2でチェックした後セキュア版にしたんで他は大丈夫なはず
93: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の掛け算ってどうやるんだっけ?
11デフォルトの名無しさん:2010/09/16(木) 21:56:44
>>6
4だけどさw
このレベルの宿題で、こんなの書いたらカンニングばればれじゃないか?w
12デフォルトの名無しさん:2010/09/16(木) 21:57:15
出来ない
Xの列とYの行は同じじゃないと駄目
13デフォルトの名無しさん:2010/09/16(木) 22:00:00
馬鹿は黙ってろ
14デフォルトの名無しさん:2010/09/16(木) 22:01:05
でた、馬鹿はすぐに他人に馬鹿って言うw
15デフォルトの名無しさん:2010/09/16(木) 22:06:09
上げてるアホは前スレで吊ったんじゃなかったの?
きちんと死んどけよw
1612: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
>>15 = >>13
また落ち着いて鏡を見ろよ。何かこう↓のような顔が映っただろ?それ、誰のだよ?そうお前のだよw
ttp://sankei.jp.msn.com/photos/affairs/crime/100916/crm1009161159015-p3.jpg
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
21デフォルトの名無しさん:2010/09/16(木) 22:10:48
すまん、気が付かないで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ちゃんねらーになったんだろうね。
23デフォルトの名無しさん:2010/09/16(木) 22:12:52
なんか新スレ早々香ばしいな
24デフォルトの名無しさん:2010/09/16(木) 22:14:42
sage強制ではないよ。

> 気に入らない質問やその他の発言はスルーの方向で。
これが読めない奴がとにかく相手を馬鹿にしなければ気が済まない、
また言われた方が反応して荒れてるだけ。両方とも問題だが
最初に言った奴の方が精神レベルが低い、大人になりきれない
非社会適合者だというのは昔から知られていること。
ネットでは対面せず特定されないからって偉そうにしているが
現実世界では言いたい事も言えない貧弱な負け犬だからw
25デフォルトの名無しさん:2010/09/16(木) 22:20:32
他の板、スレでも見かけるけど上から目線で偉そうに
特に相手が納得できる説明もなく、失敗や間違いを
馬鹿にするだけの罵詈雑言レスしかしない奴は普通に見かける。
そいつは自分が特定されないからって、そのスレに常駐している
基地外引きこもりニートのようで、また現れては直ぐに自分が
特定できるレスをするんで、周りから集中攻撃を受けて
立場を失うと。現実世界では人物が特定されるし、その内
大勢から相手にされなくなて孤立するが。
とにかく、罵詈雑言が直ぐに出る奴こそ知能が低いから
行動パターンからして言動でバレバレ。そういうゴミ屑って
何で生きているんだろうね?人の役に立たない癖に。
直ぐ死ぬべきなのはどっちだよ?w
26デフォルトの名無しさん:2010/09/16(木) 22:21:38
またこの長文キチガイか
自称年収1000万でいつまでこのスレに粘着してんだよw
27デフォルトの名無しさん:2010/09/16(木) 22:26:38
バイバイさるさんw
28デフォルトの名無しさん:2010/09/16(木) 22:31:48
こんなスレでネット弁慶をするのが、この精神レベルの低い大人の生き甲斐なんだぜw
出来る人間は、C言語に限らずプログラミングで金儲けしているというのに。
29デフォルトの名無しさん:2010/09/17(金) 00:28:54
>>28
ほんとのこと、あまり言うなよ
30デフォルトの名無しさん:2010/09/17(金) 05:14:01
相手の素性も分からないのに、気に入らない奴の言動だけで
妄想や思い込みでレッテル貼りをして、その相手を罵倒するのに
使った言葉は日頃、自分が他人からされている誹謗中傷、
罵倒で言われている汚い言葉なんだろうね ( ´,_ゝ`)プッ
31デフォルトの名無しさん:2010/09/17(金) 07:05:49
[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つ目の課題です。
よろしくお願いします。
32デフォルトの名無しさん:2010/09/17(金) 07:22:41
void rev_string(char str[])
{
char *p = str;

while(*p) p++;

while(--p > str) {
char temp = *p;
*p = *str;
*str++ = temp;
}
}
33デフォルトの名無しさん:2010/09/17(金) 07:29:32
>>32
ありがとうございます。
34デフォルトの名無しさん:2010/09/17(金) 07:36:52
[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つ目の課題です。
よろしくお願いします。
35デフォルトの名無しさん:2010/09/17(金) 07:40:57
void put_stringn(const char str[], int no)
{
  int i;
  for (i = 0; i < no; ++i)
  {
    printf("%s", str);
  }
}
36デフォルトの名無しさん:2010/09/17(金) 08:07:34
>>35
ありがとうございます。
37デフォルトの名無しさん:2010/09/17(金) 08:14:43
[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つ目の課題です。
よろしくお願いします。
38デフォルトの名無しさん:2010/09/17(金) 08:20:24
         ミ =--!!-||--ト ! 、
      ミ/ ミ 彡 川 川  彡 ヽ
     / ミ ミ ミ!  ! ! ! 川 彡 ミ
   才 三 二 三 = ミ ! ! !! ! !彳 iキ彡
  壬 ミ 二 = 三 二 ミ 川 川 彡 二 彡
. 孑 ミ 三 二 ≡ = ミ ヾ へ 川 彡 彡⌒\キ
,;;才彡 ミ彡``"'^“ ≡ ;;;ソ メヽヾ r タシろノ    iキミ
(王ミ 彡 ミ ミ;;;;;: : : :               iミミキ
\ミ 彡 ミ ミ;;;::: : : :     ゜           lミ彡ミ
  テ ミ 三ミ;; ; : : : :                lミ彡ミ
 /⌒\こ壬;;: : : :;;;;;;               |彳
 {ノ\`:::彡イ:::ヾ〃;;;;;;;;;;;;;,,,      ,,,,,;;;;;;=  /i
 i::  >:彡;;::ヾ:/ゝγ`````ヽ   /´´´ヽ  /l l
 \/(ヽ;;; ::::::::: ≠(.,-ェェ-、 )::: i::: r-ェェ-.  ト//
   \__|;;;::::::::  \ ̄ ̄/::::: i  ̄ ̄ノ i// 
     !:::::::::l;:::    ̄ ;;;::::::  i  ̄   ノ
      !;;;::::::\;;;;;;;;,,  ;;:::;;;::  i   /:/
      i;;::::::: : : ::::::::  (;; ___   ) :::::/::::/
   _/!:::: : : ::::::/ ,,,,,,;;;;;;;;U;;;;; ヽノ::/ 
- ''":::::/::::|\;;:: : :{ { ,,;;;;;……v…;;;; : :/
::::::::::::/::::::|::::::\:::::ゞ ヽ ´ ̄`ー´/:::/
::::::::::/::::::::|;;;/ : :\;;::  ::::`===:´ :/i:::\ 
:::::::/:::::::::::|;/:: : : ::::\;; ; ;; ; ; ; ; ;;;ノi:::i::::::::`:ヽ..、
::/::::::::::::::|: :::  :::: : : :゙゙彳ミキ彡テ/:::::i:::::::::::::::::::::`:ヽ..、
39デフォルトの名無しさん:2010/09/17(金) 08:40:14
>>17
専ブラ使っているとさらしあげなんて気にならない。感覚がふるいんじゃない?
40デフォルトの名無しさん:2010/09/17(金) 08:43:51
>>37
無理
41デフォルトの名無しさん:2010/09/17(金) 08:45:38
>>39
>感覚がふるいんじゃない?
それはage、age騒いでいる奴の方だろ。
それから、専ブラ使っていても板の一覧の上に来ているから
お前が見るスレが限られている、閉鎖的な考えがバレバレだぞw
42デフォルトの名無しさん:2010/09/17(金) 08:46:49
>>39
http://hibari.2ch.net/tech/
ほら、見てごらん。って、お前が見た時に一番上に来ているとは限らないがw
43デフォルトの名無しさん:2010/09/17(金) 08:50:57
>>39
お前の方が意味が分からん。お前の足りない考え、自分の行動パターンだけでは
理解できないことだらけの世の中だと早く気づいた方が良い。
なぜなら、お前が利口で金持ちならこんな場所を見てはいないだろうからなw
44デフォルトの名無しさん:2010/09/17(金) 08:51:57
constついてちゃなあ
45デフォルトの名無しさん:2010/09/17(金) 08:54:33
>>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
ttp://oshiete.goo.ne.jp/qa/944545.html
ここでも言われているがageに敏感に反応する奴は
荒らしを気にしてのことだろう。しかし、目立つ様に
馬鹿を晒しageする為にわざとageてんだから、何を言われようが
痛くも痒くもねーよw
49デフォルトの名無しさん:2010/09/17(金) 09:35:56
charにNULLを入れるのは気持ち悪いな
50デフォルトの名無しさん:2010/09/17(金) 10:40:26
問題を作る側のスキルの無さが丸見えだな。
51デフォルトの名無しさん:2010/09/17(金) 11:04:18
*p = '\0'; の誤りじゃないのか。
52デフォルトの名無しさん:2010/09/17(金) 11:26:57
>45
わかってないな
53デフォルトの名無しさん:2010/09/17(金) 12:14:45
>>41
>それから、専ブラ使っていても板の一覧の上に来ているから
専用ブラウザや専用ブラウザの設定によって異なる。

>お前が見るスレが限られている、閉鎖的な考えがバレバレだぞw
それはあなた。

int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
54デフォルトの名無しさん:2010/09/17(金) 12:18:17
>>41
char c;
if ((c = getchar()) = EOF) { }
が非常にまずいことを理解しましたか?
ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
5537:2010/09/17(金) 12:35:24
皆さんごめんなさい
constは無しでした。
打ち間違えてしまいました。
本当にすみません><
56デフォルトの名無しさん:2010/09/17(金) 12:43:45
void null_string(char str[])
{
*str = '\0';
}
でいいのか
void null_string(char str[])
{
while(*str) *str++ = '\0';
}
にすべきなのかわからないな
57デフォルトの名無しさん:2010/09/17(金) 12:45:24
うむ。どちらにしろ「空文字列」の意味が分からない。
もしかしたら
strcpy(str, "空文字列");
なのかもしれないぞ。
58デフォルトの名無しさん:2010/09/17(金) 12:46:11
>>49
間違った、普通は0x00か'\0'だな
どうせクズコードだから細かい事は気にすんな
59デフォルトの名無しさん:2010/09/17(金) 12:48:17
>>56-57
問題見直して笑った、どんな奴が作った問題なんだろう
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つ墓明神の墓石に刻まれていた課題です。
よろしくお願いします。

61デフォルトの名無しさん:2010/09/17(金) 14:17:08
大抵そうなんだが、解く以前に問題がよくわからない。
hoge("7"); で何が起こるか説明してくれ。
文面からすると、
2 · 3 · 5 · 7 · 11 · 13 · 17 · 19 · 23
だから、下から数えて7番目の"17"が返ればいいのか?
だったら入力された文字列を素数に限定する意味がわからん。
戻り値をまた引数にして何かするつもりなのか?
っていうか、返す文字列はstaticでいいのかね。

回答よりも問題のほうに問題がある。
62デフォルトの名無しさん:2010/09/17(金) 14:34:08
>>60
入力された数が何でも良いなら単純な篩を使った解法では無理だろうね
40億番目の素数は1000億くらいのはずだから long long が必要=32Gの配列が必要だ(そもVCってlong long 有ったっけ)
素数番目の素数を求める特殊な方法に関するヒントとか無いの?
63デフォルトの名無しさん:2010/09/17(金) 14:39:20
無理やり解釈したらこんな感じ?
char *hoge(char *str) {
  int no;
  printf("どの数番目?: ");
  scanf("%d", &no);

  strを数番目の文字列に置き換え
  return str;
}

個人的にはstrを破壊するのは好ましくないけど
64デフォルトの名無しさん:2010/09/17(金) 14:39:44
ある数が素数かどうか知るだけだ。
素数を列挙するわけじゃあるまい、篩はいらんと思う。

http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A
65デフォルトの名無しさん:2010/09/17(金) 14:43:55
いや、そうか、「その数番目」というところあミソなのか・・・。
篩が必要になってしまうのか。うーん。
それともこういうの使うのか?
http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0%E5%AE%9A%E7%90%86
66デフォルトの名無しさん:2010/09/17(金) 14:49:44
担任にもう一度問題の定義を聞いた方が早いような、
月曜は休みなので今のうちにね
67デフォルトの名無しさん:2010/09/17(金) 15:01:51
64ビット整数でそのまま計算するのは簡単だけど、
40億番目とかどんだけ時間かかんだよw
68デフォルトの名無しさん:2010/09/17(金) 15:03:23
メモリはそんなにいらないぞ。
問題はn番目なのだから0〜1000万までを篩にかけて、
その中に何個素数があるか数える。nにまで達してなかったら
1000万1〜2000万までを篩にかけ、素数を数える。
当然前の結果の個数を足し込んで勘定する。
いつかN番目がみつかるだろう。
69デフォルトの名無しさん:2010/09/17(金) 15:08:32
いや、「プログラミング基礎」っていってるんだから、まさか素数判定法とか使わないだろ。
やっぱり出題者はエラトステネスのふるいを期待してるんだと思うぞ。
で、一応、入力した数が素数かどうかも同じ方法でチェックしろよ、ってことだろ。
関数にしなさい、とかって意図じゃないの?
70デフォルトの名無しさん:2010/09/17(金) 15:14:19
わかった。
エラトステネスの篩だとして、入力に40億以下と明示されてる点はどうするの。
40億が引数に渡される場合もあることを考慮して作れ、と解釈する?
それとも単に32bit符号なしで表現できる数だよ、という程度に解釈する?
71デフォルトの名無しさん :2010/09/17(金) 15:14:33
#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;

}
72デフォルトの名無しさん:2010/09/17(金) 15:15:09
>>68
0から1000万までの領域をとっておかないと、
1000万1から2000万は篩えないと思うんだが。
73デフォルトの名無しさん:2010/09/17(金) 15:15:58
>>70
うん、俺は多分、longで、っていいたいだけだと思うんだよね…
標準インクルードだけでやれっていってるんだし。
そもそも、出題者があんまりよくわかってるっぽくないんだよなあ、問題文から見てw
74デフォルトの名無しさん:2010/09/17(金) 15:18:10
>>72
どうして?
1000万1から2000万の領域も2から篩なおすのだよ?
もちろん時間的に無駄はある。
でもフラットに数GBのmallocするより現実的だしょ?
75デフォルトの名無しさん:2010/09/17(金) 15:18:38
>>64-65
試し割りなら配列は要らないし、N番目は最初から数えれば良いだけだ
時間を気にしなければ解けなくはないな、2〜1000億まで素数判定って何時間オーダーで終わるかなぁ

>>67
VCって標準で64ビット整数使えるの?それとも64ビットOS上だけ?
76デフォルトの名無しさん:2010/09/17(金) 15:21:52
で、出題した側もチェックするのが大変なはずだから、そんな大きな数は入れないと思うんだよねw
せいぜい1000くらいじゃないの?
一応、入力された数でmallocすれば、満点ってところじゃないのか?w
いや、純粋にプログラミング的興味として議論するのは別に構わないけどw
77デフォルトの名無しさん:2010/09/17(金) 15:29:31
>>71
100と入力したら0が返ってきたんだが。
7871:2010/09/17(金) 15:29:31
>>71
は無視してください。
79デフォルトの名無しさん:2010/09/17(金) 15:31:01
同時刻か。やるな。
80デフォルトの名無しさん:2010/09/17(金) 15:38:07
>>68
篩って見つかった素数の倍数は除去するって考え方でしょ
だったら40億個の素数を配列に保持する必要が有るんじゃないの?
40億=4G x 8byte( long long ) =32Gって考えたんだが

>>70
40億って書いて有るんだから40億まで対応できるコードを求めてるんじゃないかな
出力を10進文字列にしろって明示してるのも long じゃ計算できないよって意味に取れるし(考えすぎ?)
81デフォルトの名無しさん:2010/09/17(金) 15:49:21
>>80
スマン説明がたりてなかったな。
つまり0〜1000万までの素数もとっておくという意味だ。
篩の形でとっておく必要はない、結果だけ持てばいいでしょ?
1000までの素数の数は167個だから、メモリの消費はかなり抑えられる筈。
82デフォルトの名無しさん:2010/09/17(金) 15:50:55
真面目にふるいにかけても40億ビットでいいんじゃないかな
83デフォルトの名無しさん:2010/09/17(金) 15:54:27
>40億=4G x 8byte( long long ) =32Gって考えたんだが
それはおかしくない?
篩のサイズが4GBでも、個々のデータは割り切れたかどうかの1bitで十分な筈。
だから実際は40億でも512MBでできる筈。
2の倍数を最初から省けば、256MB、これくらいならいけそうな気がする。
84デフォルトの名無しさん:2010/09/17(金) 15:59:56
きっと問題作った奴が教授の助手やってる院生とかなんだよ、多分…w
85デフォルトの名無しさん:2010/09/17(金) 16:08:09
ってか質問者も少しは考えてソースなりなんなり貼れよw
問題がカスすぎてどう答えて良いかわからん
86デフォルトの名無しさん:2010/09/17(金) 16:08:16
「8つ墓明神の墓石に刻まれていた課題です。」
87デフォルトの名無しさん:2010/09/17(金) 16:17:12
擬素数うんぬんいう以前の話だった

というか>>60では素数判定しろとはいっていないから
素数列のテーブルをあらかじめ用意しておいてそれを参照するだけでも
(出題者の真意はともかく)題意は満たすんじゃないか?
どのくらい巨大なテーブルになるかはしらんが
88デフォルトの名無しさん:2010/09/17(金) 16:19:27
>>86
分からん
ナポリタン(意味の無い言葉)かスラング(隠語)?
89デフォルトの名無しさん:2010/09/17(金) 16:21:51
つーかだな、60もそろそろ出てきて説明なりなんなりしろよw
90デフォルトの名無しさん:2010/09/17(金) 17:07:01
普通にエラトステネスの篩を実装した場合。
バグはありそうな気がする。
http://codepad.org/UPzb5pV5

出力結果の1000001番目の素数が15485867であることを照合済み。
http://www.bigprimes.net/archive/prime/10001/


ところで、こういうネット上のアーカイブからとってくるというアイデアをすっかり忘れてたわ。
巨大なテーブルは既にネット上にあるさね。
91デフォルトの名無しさん:2010/09/17(金) 17:16:27
ああん、ところでatolは符号つきなので、40億をパースするにはsscanfの%luじゃないとダメなんすね。
ま、上記コードで計算させると1000万番目で20秒かかるので、40億だと恐ろしいことになると思われる。
92デフォルトの名無しさん:2010/09/17(金) 17:21:57
もう出題者はアホとしか言いようが無いと思う。仮にもプログラム組む人なら不当性が分かるだろうに
9360:2010/09/17(金) 17:28:13
問題で書き写し忘れてた箇所がありました。

この問題のCコードを書いてネット掲示板に貼ったものは
八墓明神の怒りを買うだろう
この問題文をネット掲示板に貼ったものは
祝福を受けるだろう
9490:2010/09/17(金) 17:30:31
体調が悪くなってきました。
体中にブツブツが・・・。
95デフォルトの名無しさん:2010/09/17(金) 17:40:53
>>91
atol()より、strtoul()の方がベターかと。
96デフォルトの名無しさん:2010/09/17(金) 17:41:20
なんか前の質問が飽和してそうなので流れに乗じて質問します・・・よろしくお願いします

[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次元ベクトルを入力できるようにすること。クラスか構造体を必ず使う事。
97デフォルトの名無しさん:2010/09/17(金) 18:30:03
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。

char c;
if ((c = getchar()) = EOF) { }
が非常にまずいことを理解しましたか?
ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
98デフォルトの名無しさん:2010/09/17(金) 18:46:05
http://hibari.2ch.net/test/read.cgi/tech/1280653311/993

    /\___/ヽ   ヽ
   /    ::::::::::::::::\ つ
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
   /`ー‐--‐‐―´\ぁあ

ホントだ…。これは酷い…ありえねぇ。
99 ◆QZaw55cn4c :2010/09/17(金) 18:46:14
100デフォルトの名無しさん:2010/09/17(金) 19:02:16
>>99
先生、
double x, y, z;
をprivateには出来ないんですか?
101 ◆QZaw55cn4c :2010/09/17(金) 20:12:00
102 ◆QZaw55cn4c :2010/09/17(金) 20:35:48
103デフォルトの名無しさん:2010/09/17(金) 20:45:48
int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
char c;
if ((c = getchar()) = EOF) { }
が非常にまずいことを理解しましたか?
ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
104デフォルトの名無しさん:2010/09/17(金) 20:46:25
◆QZaw55cn4c先生ありがとうございます!
105デフォルトの名無しさん:2010/09/17(金) 20:47:50
>>97
お前まだやっているのかよ、気持ち悪いな。
しかも、お前がint main() 笑を書いてたんだろ。
ここで荒らしに反応している奴も荒らしだろ。
本当にこいつら2ちゃん慣れしていない初心者ばかりだろ?
自分が犯している初歩的なミスに気づかないで
相手を攻撃すれば、荒らし目当てで来た奴の標的にされるのは
分かりきっている。特に、意味も無く、相手が特定できないのに

>int main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
と書いておきながら、相手がint main()を書いた奴でなければ、寧ろ
自分の方が釣られたと宣言しているようなものなに、学習能力無さ過ぎだろ。
106デフォルトの名無しさん:2010/09/17(金) 20:49:52
nt main() (笑) って本人は釣ったつもりのようでしたが、最後は自分が釣られていましたよね。
char c;
if ((c = getchar()) = EOF) { }
が非常にまずいことを理解しましたか?
ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
char a[1];
scanf("%s", a);
はバッファオーバーランを引き起こすことは納得できましたか?
107105:2010/09/17(金) 20:50:00
すまん、こいつは本当にただの基地外荒らしだったか。
反応した俺も反省するわ。あぁきめぇ、社会から外された
引きこもりニートの基地外 >>103 = >>97
108デフォルトの名無しさん:2010/09/17(金) 20:50:58
> nt main() (笑)
もうコピペミスするくらい煽る、荒らすのに必死だなw
以後放置よろ。無意味なコピペは荒らし認定されるので
運営に通報してくる。
109デフォルトの名無しさん:2010/09/17(金) 20:52:48
まだ意味不明な getchar() の話を続けてるの、この粘着、常駐基地外は?
しかも明らかに場違い、誰かと勘違いしているんだろうね。
自分の方が明らかに勘違いしているのに。コードの内容とここで見えな敵をw
110デフォルトの名無しさん:2010/09/17(金) 20:52:56
ちょっとちがった。
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() の話をしている基地外荒らしに反応しないで下さい。
明らかに無意味でコピペ荒らし認定が出来ますので、通報してきます。
ここまでしつこく粘着性があると、場合によっては同じプロバイダの人は
アク禁に巻き込まれるかもしれませんので、場が不必要に荒れないよう
この荒らしに反応しないように。
112デフォルトの名無しさん:2010/09/17(金) 20:57:20
>個人の誹謗中傷、度の過ぎた差別発言、
>むやみに不必要なスレッドを上げること、
>執拗な煽りや叩き、なども荒らしとみなされる場合があります。
   ↑に該当。
113デフォルトの名無しさん:2010/09/17(金) 20:59:59
断っておきますが、自分はint main() 笑と書いた覚えはありません。
ここで口論になることはありますが、どうやら過去に荒れた原因となった
一方が、もう一方が同じ人物だと勘違いをしているようで、意味不明。
getchar() についても、自分はそんなコードを書いた覚えはありません。
しかも揚げ足取りで指摘している?内容も意味不明。
本当にこの荒らしはC言語に精通している人なんでしょうか?
C言語に関わらずプログラム言語はいくつかありますが、C言語で
こんな程度の低い言動を続けるようでは、まともなコードが書けるとも思えませんね。
それから、何かと世界的な標準はISOを参考にして問題はありませんよ。
114デフォルトの名無しさん:2010/09/17(金) 21:01:24
>>111
>>110 は、C/C++ではまりがちな点を啓発している、と考えられますから、あながち
>長文や意味を持たない文字列やアスキーアートなどをコピー&ペーストしたり、
ではないと思いますけれども。
>荒らしに反応したらあなたも荒らしかも。。。
>>111 がまさにそうですねえ。
115デフォルトの名無しさん:2010/09/17(金) 21:03:36
int mainに関してはISOを参照して、あくまでもISOが提唱する
標準スタイルとして説明はしましたが。getchar() に関しても
前々から返り値がどうとか、意味不明なことを言っている人がいましたが
それに関しても標準ライブラリに関する文献を用いて、戻り値の型を
説明したこともありますが、正直、何を言っているのか不明。
前にそれに関して、自分とは別の人と稚拙な言い争いがあったのかも
しれませんが、とにかく荒れる度に、現状では無関係なコピペ荒らしを
する人は他の板、スレでも見かけますし、流れの邪魔になりますので
抑止の為に運営に通報しておきます。アク禁されても運営の判断ですので
あしからずご了承ください。
116デフォルトの名無しさん:2010/09/17(金) 21:06:09
流れからして明らかに無関係、無意味と判断されますので
int main() 笑は今後も同じことをしたら、運営が警戒しますので
あしからず。このスレに何しに来ているんですか?
見えない敵を馬鹿にしたいだけですか?自分の言動が精神レベルの低い
幼稚なものだと早く気づいて、まともに社会で働いて下さいね。
117デフォルトの名無しさん:2010/09/17(金) 21:08:28

そういう説明、いらない
118デフォルトの名無しさん:2010/09/17(金) 21:10:34
char c;
if ((c = getchar()) = EOF) { }
が非常にまずいことを理解しましたか?
ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?

↑とは言うが、それなら具体的にどのようなコードを書いたら良いのか?
こいつは全く説明していない。int main に関しては相手にISO、ANSI準拠だと
どのような標準スタイルが提唱されているか説明を受けた癖に、自分は
一方的にそれはまずい!ってコードの欠陥を指摘するだけで具体的な対策は説明せず。
そりゃ int a[10] で a[10] と書いたら、[]の中は0〜9までと分かりきった説明は不要だが。
あと、自分はgetchar()すら使ってないわ。
11960:2010/09/17(金) 21:10:52
みんなおれのことは心配してくれてないのか。
120デフォルトの名無しさん:2010/09/17(金) 21:12:51
> ディスク上のファイルの最後に EOF が書かれているわけではないことを理解しましたか?
しつこいよな。分かりきったことを。何が言いたいんだろうか?しかも誰が言ったかも
分からない、もうこのスレを見ていない当時初心者を相手にしたのかもしれないが。
しつこよ、お前。どうせ運営にはアクセスログ(リモホ)でお前の言動は筒抜けだろうけど
IDが無いからって、いい加減、特徴でお前は他のレスでもバレてるよ。
12190:2010/09/17(金) 21:13:25
間違えた、90だった。・・・もういい!
122デフォルトの名無しさん:2010/09/17(金) 21:15:47
>if ((c = getchar()) = EOF) { }
c=getchar();
if(c==EOF) { } ならどうなの?
まぁ自分は引用したようなif文は書かないが
(c=getchar()) となっているし、それ以下の説明が
それに対する補足としては不十分じゃね?
123デフォルトの名無しさん:2010/09/17(金) 21:20:06
で、いつまでも相手を勘違いして int main() (笑)と getchar() に関して
意味不明なコピペを続けるお前は何しに来てんの?スレタイも >>1 も読めない
馬鹿なの?死ぬの?っつーか社会のゴミ屑でお前みたいな存在は不要だから死ねよw
124デフォルトの名無しさん:2010/09/17(金) 21:24:28
>>1
>気に入らない質問やその他の発言はスルーの方向で。
言語の仕様やコードに関する話は別のそれ用のスレで。
125デフォルトの名無しさん:2010/09/17(金) 21:44:42
90じゃないけど、
>>60はちゃんと>>90にお礼いったか?
126デフォルトの名無しさん:2010/09/17(金) 21:48:25
>>122
>char c;
127デフォルトの名無しさん:2010/09/17(金) 21:53:15
         ミ =--!!-||--ト ! 、
      ミ/ ミ 彡 川 川  彡 ヽ
     / ミ ミ ミ!  ! ! ! 川 彡 ミ
   才 三 二 三 = ミ ! ! !! ! !彳 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:::::::::::::::::::::`:ヽ..、
128デフォルトの名無しさん:2010/09/17(金) 22:00:20
         ミ =--!!-||--ト ! 、
      ミ/ ミ 彡 川 川  彡 ヽ
     / ミ ミ ミ!  ! ! ! 川 彡 ミ
   才 三 二 三 = ミ ! ! !! ! !彳 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:::::::::::::::::::::`:ヽ..、
12960:2010/09/17(金) 22:43:18
>>71
>>90
遅くなりましたが有り難うございました。
けどお大事に。これからが本番ですね
130デフォルトの名無しさん:2010/09/18(土) 01:02:08
自分は標準スタイルに従わないよ、って宣言は他人にしなくて構わない。
自分の環境で通用するならそれを押し通せば良いだろ。別にお前の環境も
それを拒否している訳でもないだろうから。お前は他人とソースコードの
共有をしないんだろうけど、共有するにしても基本部分さえ問題なければ
それで構わないし。あくまでも世界的に標準化を提唱している団体、ISOが
提唱する「標準スタイル」の話を、いちいち自分がそれに物申すみたいな
他人に自分の意思表示をされても、あっそ、じゃお前はそうしてろって言われるだけだわ。
別に逐一、独自スタイルを否定するつもりでISOの話をしている訳でもないんだし。
ド田舎者の固執した、閉鎖的な思想って本当にキモイな。多分、日●組とか
その辺りなんだろうけど。
131デフォルトの名無しさん:2010/09/18(土) 01:46:00
自分のスタイルが標準であると頭から決めてかかる人が多い
のがこの世界
132デフォルトの名無しさん:2010/09/18(土) 02:47:08
宿題スレで何議論してるの?
これが大多数の感想じゃないかな?
133デフォルトの名無しさん:2010/09/18(土) 02:53:46
何かint mainについてはともかく、まだgetchar()とEOFに噛み付いている基地外がいるが
お前こそ↓を理解して言っているのかよ?いい加減うぜぇ。仕様に関するスレでやれ。
ttp://www.bohyoh.com/CandCPP/C/Library/getchar.html

返却値 stdinが示す入力ストリームの次の文字を返す。
ストリームでファイルの終わりが検出された場合、
そのストリームに対するエラー表示子をセットしてEOFを返す。
134デフォルトの名無しさん:2010/09/18(土) 02:58:19
>>133
いや、突っ込むとこはそこじゃなくてだな…

char cだと、EOFは(int)-1なわけで、ってことなんだよ。
そもそも、最初の書き込みが(c=getchar())=EOF)になってて、
(つか((c=getchar())==EOF)じゃなければ、常にTRUEになって
1文字も読み込まない、とかっていう方が気になってしまうのだが、

少し前のC言語の入門書とかでは定石的に書かれていたFAQとか
の類。
135デフォルトの名無しさん:2010/09/18(土) 03:04:16
馬鹿はgetchar()の使い方そのものを誤って
問題が起こる様な場合を用いてそういう時どうするの?
くらいな自分の墓穴堀りしかしていない愚かさに気づいてない。
136デフォルトの名無しさん:2010/09/18(土) 03:10:34

つまらないから、もうやめない?
137デフォルトの名無しさん:2010/09/18(土) 03:13:09
いや、やめていいだろ。
ってか、新しい宿題が出れば、すぐ忘れ去られるべw
138デフォルトの名無しさん:2010/09/18(土) 03:26:17
ごちゃごちゃ言うなら (c=getchar())自身の値を自分で確認すれば良いだろ?
いい加減、しつけぇよ、粘着引きこもりニート。お前がC言語を職業としてではなく
趣味としてか、生き甲斐でやっているのかは知らないが、ド田舎者の閉鎖的な
固執した思想が気持ち悪い。世界で通用しないどころか、日本でも通用しないよ、あんた。
139デフォルトの名無しさん:2010/09/18(土) 03:32:27
>>133
どこに突っ込んでいいかわからないようでは、*未だに*
char c;
if ((c = getchar()) == EOF) { }
がまずいことに気づいていないのですね。
140デフォルトの名無しさん:2010/09/18(土) 03:34:27
>>139
いい加減にしろ!
141デフォルトの名無しさん:2010/09/18(土) 03:36:07
>>139
こっそり訂正してんじゃねーよ、チンカス
142デフォルトの名無しさん:2010/09/18(土) 03:36:09
   |/-O-O-ヽ| int main() (笑)
   | . : )'e'( : . | if( (c=getchar()) == EOF ) { } EOFがどうのこうの・・・ブツブツ
   ` ‐-=-‐
   /    \
||\ ̄ ̄ ̄ ̄ ̄ ̄ \
||\\.          \      ∧_∧
||. .\\          \    ( ;´Д`) (オイ、なんか変なのがいるぞ)
.    \\          \ /    ヽ.
.      \\         / .|   | |
.        \∧_∧   (⌒\|__./ ./
         ( ´,_・・`)目合わせるなって ∧_∧
.         _/   ヽ          \  (     ) うわー、こっち見てるよ
143デフォルトの名無しさん:2010/09/18(土) 03:40:27
         ミ =--!!-||--ト ! 、
      ミ/ ミ 彡 川 川  彡 ヽ
     / ミ ミ ミ!  ! ! ! 川 彡 ミ
   才 三 二 三 = ミ ! ! !! ! !彳 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:::::::::::::::::::::`:ヽ..、
144デフォルトの名無しさん:2010/09/18(土) 03:42:36
いちいちちょっとずつこっそりと変更してくんだな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 ∵> ムッキー!    \________________
  \        ⌒ ノ_____
    \_____/ |  | ̄ ̄\ \
___/      \   |  |    | ̄ ̄|
|:::::::/  \___ | \|  |    |__|
|:::::::| \____|つ⊂|__|__/ /
|:::::/        | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
147デフォルトの名無しさん:2010/09/18(土) 08:41:44
         ミ =--!!-||--ト ! 、
      ミ/ ミ 彡 川 川  彡 ヽ
     / ミ ミ ミ!  ! ! ! 川 彡 ミ
   才 三 二 三 = ミ ! ! !! ! !彳 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デフォルトの名無しさん:2010/09/18(土) 10:47:33
誰か流れをまとめてくれ
149デフォルトの名無しさん:2010/09/18(土) 10:56:43
>>148
粘着が
誰かに恨み
持っている

住民は
ワケ分からんので
スルーする
150デフォルトの名無しさん:2010/09/18(土) 11:07:02
[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はあらかじめ用意しないで入力させる


いまいち参照とかの使い方がわかりません・・お願いします
151デフォルトの名無しさん:2010/09/18(土) 11:59:22
>>150
>いまいち参照とかの使い方がわかりません・・お願いします

使わなければいい。「必ず参照を用いる」と言われているわけじゃないし。
152デフォルトの名無しさん:2010/09/18(土) 12:46:33
>>149
粘着が2匹いるらしい。
153デフォルトの名無しさん:2010/09/18(土) 13:00:18
◆QZaw55cn4cとキチガイ長文連投の2人
154 ◆QZaw55cn4c :2010/09/18(土) 13:09:50
>>150
参照なしでごめんなさい。
http://codepad.org/E1jBbd20
155デフォルトの名無しさん:2010/09/18(土) 13:15:49
>>153
◆QZaw55cn4c は、より性がわるいね。
156デフォルトの名無しさん:2010/09/18(土) 13:15:59
組み合わせ求めるために階乗計算させるととるのが普通だと思うけどね
157 ◆QZaw55cn4c :2010/09/18(土) 13:30:53
>>156
それもそですね。
>>150
http://codepad.org/Wp9CpH1E
158デフォルトの名無しさん:2010/09/18(土) 15:35:37
nCrも関数もしくはクラスにしろって書いてあるけどね
159150:2010/09/18(土) 16:45:46
先生方有り難う!
160デフォルトの名無しさん:2010/09/18(土) 17:36:52
>>158
そうでしたか‥‥。
>>150
http://codepad.org/LEtDfM64
161デフォルトの名無しさん:2010/09/18(土) 17:52:29
[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プログラムではタブ区切りファイル
の項目を文字列から数値に変換しなければならないそうです
162150:2010/09/18(土) 18:09:12
問題数多すぎてやる気無くした
163デフォルトの名無しさん:2010/09/18(土) 18:14:02
150の問題のコードが書けない人には多分絶対できない問題だってことは
わかったw
164161:2010/09/18(土) 18:17:17
>>161
>(2)自らが属するクラスの各科目の平均点の順序と自分の得点の各科目別順序が一致する
>生徒ID,クラスID,国語得点、数学得点,理科得点をクラスID,生徒IDの順序で出力するSQLを記

すみません。訂正します
(2)自らが属するクラスの各科目の平均点の順序と自分の得点の各科目別順序が一致する
生徒ID,クラスID,国語得点、数学得点、英語得点をクラスID,生徒IDの順序で出力するSQLを記
165デフォルトの名無しさん:2010/09/18(土) 18:35:57
>>161
読解力がないのか、まるでSQLの構文解析部分をCで書けって言われてるような。
簡易DB作れってこと?
166デフォルトの名無しさん:2010/09/18(土) 18:37:42
なんか業務くさいな。偽装宿題とちがうかコレ。
167デフォルトの名無しさん:2010/09/18(土) 18:40:40
SQLite使っていいって話なら簡単だけど。
168デフォルトの名無しさん:2010/09/18(土) 18:41:18
月末ってのが納期を匂わせる
169161:2010/09/18(土) 18:49:48
業務じゃありません。
SQLをかくこと
テーブルがタブ区切りテキストファイルとして与えられているものと
して、SQLエンジンがそれと同じ内容のテーブルのもとでSQLを解釈
した時に出力されるのと同じものを出力するようなCコードを書け
ということだと思います。
170デフォルトの名無しさん:2010/09/18(土) 18:55:21
SQL(エスキューエル,シークェル)は、リレーショナルデータベース管理システム (RDBMS) において、
データの操作や定義を行うためのデータベース言語(問い合わせ言語)である。

SQLを書くねぇ…。クエリを書くんじゃなくてねぇ…こりゃ大変だねぇ。
171161:2010/09/18(土) 18:58:03
SQL文をかくことをSQLをかくと解釈して下さい。
ここではSQLパーサーなんてかけて当たり前と
思っている方ばかりみたいなところですので
恐縮なのですが
172デフォルトの名無しさん:2010/09/18(土) 19:12:32
とりあえず使いたいキーワードをはっきりさせろ
SELECT, FROM, WHERE, CASE, WHEN, ORDER BY, ASC, AVG()だけでいいか?
あと問題文にテーブル名が書いてないからSQL文が書けない
173161:2010/09/18(土) 20:04:30
SQLは文法がいくつかあるそうなのですが、
まぁ代表的、常識的なものを使えば良いの
ではないかと(便利な関数は使わないほうが
いいと思いますが、わかりません)
174デフォルトの名無しさん:2010/09/18(土) 20:27:01
ふざけんな
175デフォルトの名無しさん:2010/09/18(土) 20:32:52
データベースの教科書に埋め込み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 を条件とするのかな?
177デフォルトの名無しさん:2010/09/18(土) 21:25:20
この問題の場合SQL文をCより一段抽象性の高い表現として扱っているのでは
ないかとエスパーしてみる。(愚直にSQLのサブクエリーとかを展開すると
データ件数が多い場合はめちゃくちゃ遅くなるので、意味を変えずに
Cで効率的に処理を書く。)
178デフォルトの名無しさん:2010/09/18(土) 21:36:37
ビシッ       / ̄ ̄ ̄ ̄\
    / ̄\.(  人____)
   ,┤    ト|ミ/  ー◎-◎-)  int main() (笑)
  | \_/  ヽ    (_ _) )  if((c=getchar()) == EOF) { }
  |  __( ̄ |∴ノ  3 ノ    return は省略可
  |  ___)_ノ ヽ     ノ
  ヽ__) ノ    ))   ヽ
179デフォルトの名無しさん:2010/09/18(土) 22:08:31
>>178
ポイントがまだ理解できていないようですね。書くなら、
char c; if((c=getchar()) == EOF) { }
~~~~~~~ これが抜けているようでは話になりまへん。
180デフォルトの名無しさん:2010/09/18(土) 22:39:35
つかcharにしたらEOFと一致する事は絶対にないのだが
181デフォルトの名無しさん:2010/09/18(土) 22:44:08
つかint mainなのにreturnは省略できねぇだろ
182デフォルトの名無しさん:2010/09/18(土) 22:48:03
(signed char)-1 == -1
183デフォルトの名無しさん:2010/09/18(土) 23:00:01
         。ρ。
         ρ   ピュピュッ
         m
        C|.| /⌒⌒⌒ヽ/~ ̄ ̄ ̄ ̄ヽ
      /⌒ヽ⌒ヽ___   |  ∴ヽ  3  )  < int main()
     ./  _  ゝ___)(9     (` ´) )  < if( (c=getchar()) == EOF) { }
    /  丿ヽ___,.───|彡ヽ ―◎-◎-|  < return は省略 ハァウッ
    _/ )          (   Y ̄ ̄ ̄ ̄)
   (__/           \____/
184デフォルトの名無しさん:2010/09/18(土) 23:06:23
>>180
char c が signed char c ならば一致することはあります。
int getchar() の返り値が 255 のときです。
ただし、sizeof(char) = 1, sizeof(int) > 1 を仮定します。

>>183
char a[1]; scanf("%1s", a); も書き加えておくように。
「return は省略」はいらない。それはお前の言ったことではない。
185デフォルトの名無しさん:2010/09/18(土) 23:17:33
>>184
>char a[1]; scanf("%1s", a); も書き加えておくように。
意味不明。
>「return は省略」はいらない。それはお前の言ったことではない。
ますます意味不明。お前の言ったことか?w
186デフォルトの名無しさん:2010/09/18(土) 23:19:19
>>184
お前、訳が分からん。int mainの引数やreturnについては
俺はそれに関する文献を引用して説明したんだが・・・
自分は絶対に間違ったことを言っていないと逃げ腰ですか?
バレてますよ、お前が言った過去の名言、おっと迷言はw
187デフォルトの名無しさん:2010/09/18(土) 23:21:04
よく飽きないな
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
191デフォルトの名無しさん:2010/09/18(土) 23:26:48
ISO準拠のプログラムの開始や引数については数年前に話題になり
解決済みだという過去ログも提示したのに、さも後から来た自分が
間違っている相手に正しい教えと導いたみたいなことを言われても( ´,_ゝ`)プッ
お前、一体誰と戦っているんだよ?相手が特定されてない、見えてない癖に
お前とか言い掛かりをつけちゃって、恥ずかしいですねw
192デフォルトの名無しさん:2010/09/18(土) 23:30:38
なんか自演で流れ作ってるようで、見ていて痛々しいスレですね。
193 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄:2010/09/18(土) 23:31:50
   /二__,--、r'"___、 ヾト、.ヽ
レ'"~,-,、 !  ! ' '" ̄ .ノ\ヾ:、
K/ー'~^~_/  ヽミ:ー‐‐'"  ヽ i
!〉ー―'"( o ⊂! ' ヽ  ∪ Y」_   return 省略はお前じゃない
i ∪  ,.:::二二ニ:::.、.      l 、...
!    :r'エ┴┴'ーダ ∪   ! !l
.i、  .  ヾ=、__./      ト=.
ヽ 、∪   ― .ノ     .,!
194デフォルトの名無しさん:2010/09/18(土) 23:39:00
今更、数年前に解決したISO準拠のプログラムの開始、引数についてで
荒れるなんて、お前ら本当に精神レベルは低いままなんだなw
何のためにプログラミングをしているの?こんな場所で学生の課題を解いて
いつまでも天狗の鼻を伸ばしているの?上を行く者はとっくに
学業で学べる以上の経験を積み、知識を得ているというのに。
まぁそうやっていつまでも 自分未満 の人間を見て思い上がってなさい。
あの時、自分より低レベルだった奴は、こんな場所で油を売っているお前を
遥かに凌駕していることでしょう。まぁ、ここを頼った他力本願な奴は
プログラミングなんて単位取得の授業でしか扱わない人が多いんでしょうけど。
もっと 金儲け を考えてみたら?まぁお前じゃ下手なコードを書いて
逆にユーザに損失を与えて信用を失い、こんな場所で匿名で偉そうに
クソースを書き続けるだけだろうけどなw
195デフォルトの名無しさん:2010/09/18(土) 23:40:19
連投してるのは何年もこのスレや俺に聞けスレなんけに粘着してるキチガイ
日本語通じないからまともに相手しないのが正解
196↑ねぇ、最近出てこない:2010/09/18(土) 23:40:58
クソースが好きな麻呂さんw
197デフォルトの名無しさん:2010/09/18(土) 23:46:19
そう言えば、麻呂でさえ引数が無ければint main(void)って書いてたなw
ISO準拠も知らないvoid mainさんは基本だけでも麻呂未満w
198デフォルトの名無しさん:2010/09/18(土) 23:49:30
まぁそのうち、プログラマやSEは金儲かっただとか、技術の差、知識の差とか
言ってられない修羅場に行き着く悪寒
199デフォルトの名無しさん:2010/09/18(土) 23:50:57
>>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);
はバッファオーバーランを引き起こすことは納得できましたか?

と貼って記憶に残してやるのがいいかと。
200デフォルトの名無しさん:2010/09/19(日) 00:03:54
自分で分ってる筈のことからそういう結論をるようなやつは
コーダやってろってこと。
他の人が単位取ったらもうやらないことを。
201デフォルトの名無しさん:2010/09/19(日) 00:23:57
このバカ、まだ気づいてないようだなw
CとC++でint mainの引数やreturnについて違うのに
それにすら気づいていないようだなw
どっちが正しいか?ではなく、CとC++でISOが提唱している
内容に違いがあるのにw 一生見えない敵と戦ってろ。
こっちは正式な文献を提示して説明したんで、何1つ間違ったことは言っていない。
それを間違いと認定するのは、ISOに対して物申しているようなもの。
202デフォルトの名無しさん:2010/09/19(日) 00:52:49
1つ断っておくが、こちらはISO準拠を強要していない。
あくまでも国際標準化機構が提唱する標準スタイルでは、と断っているし
独自の環境を使用している場合は「その限りではない」とも補足している。
自分が気に入らないからって、規格や仕様を決めている団体の
説明文を引用する人間を叩いてどうすんだ?自分の意見を押し通したい訳?
どうぞ。お前の意見を強要される筋合いもないし。お前がそうしたければそうしろ。
第一、どんな環境で日頃どんな活動をしているか、こちらには分からないし。
もしお前がプロとしてプログラミングをしているなら、長年の経験で
自分なりのスタイル、ルールがあるんだろ。C言語は近年、仕様は大きく変わっていないが
色々と変更点はあったからな。あくまでもISOが提唱する標準スタイルだと
断っているように、それに関しては過去に自分も知らなかったことはいくつかあるし。
しかし、国際的な標準化を提唱する団体が提唱するなら、まず基本はそれに従うが
別にそれに対して他人にケチをつけられる筋合いもない。現実世界では
このスレのどこの誰かも分からない奴とは、一生関わらないだろうから
そいつがどこの誰で、どんな人間だろうと知ったこっちゃないが
こんな場所で特定できない相手を勝手に思い込みで、意味不明なレスをしてくる
ボケ老人にはなりたくないねw
203デフォルトの名無しさん:2010/09/19(日) 00:53:27
>>199
長文とそのスレの721は関係なくないか?
204 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄:2010/09/19(日) 00:57:12
.__________
|| // //         |
||    / ̄ ̄ ̄ ̄\ . |    / ̄ ̄ ̄ ̄\
||   (  人____) |   (          )   ┌───────
||     |ミ/  ー◎-◎-)|   (ヽミ        |   < 鏡を見てから言えよ
||    (6    ゜(_ _) )|.  ( 6)        |    └───────
||  __| ∴ ノ  3  )|  (∴ \____ノ_
|| (_/.\_____ノ |   >--(っ___□__)
|| / (   ))    ))ヽ|  (  ))     |三| ヾ
. ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   |  ||========[]===|)
                    |_||  | ̄ ̄ ̄ ̄ ̄|
                  (_)\|三三三三三|
                   (:::::::::::::::::::::y:::::::::ノ)\
                    |:::::::::::::::::::::|:::::::::|   |
205デフォルトの名無しさん:2010/09/19(日) 01:08:04
getchar() に関しても、誰かさんがまだ意味不明なコードを書いて
自分にレスしてくるが、それに関しても説明済み。何故か説明した
俺が最初に間違った意見をしたように思われているんだがw
誰と勘違いしているんでしょうね、見えない敵と戦う恥ずかしい
ネット弁慶さん?強制IDにしても、過去に言い争いになったそいつが
このスレに現れるとは限りませんがね。どうせ、宿題を質問して
答えてもらう程度の、入れ替わりの激しいスレでしょうから。
ただ、一部、最近になって常駐し始めた奴がいるようだがw
そう、お前だよ、数年前にプログラムの開始、main関数の戻り値と
引数についてはISOが提唱する内容を提示して解決済みだったのに
CとC++の違いに気づかずに墓穴を掘ったお前w
206デフォルトの名無しさん:2010/09/19(日) 02:48:48
ほんと、XORスワップにしろ、妙に気持ち悪い奴がいるよな。
自分が欠点に気づかずに、いつまでも指摘した奴の人格攻撃ばかりして
肝心のコードの問題点には触れず。絶対にいるよな、自分はそれで良いみたいな
固執したやり方の重大な欠点を理解しようとしない奴。成長しないよ。
どうせ、この世の一人、どこぞの無名の小者が必死になっていようが
社会に与える影響力なんて大してないから。
まぁ秋葉で暴れられたら堪らんがw
207デフォルトの名無しさん:2010/09/19(日) 05:47:46

ここは宿題スレ、宿題の依頼と回答コード以外、禁止!
208 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄:2010/09/19(日) 05:52:08
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 WOTAKU RADIO CLUB
___________________
//   //          ||
    ビシッ  / ̄ ̄ ̄ ̄\ [lllllll]
    / ̄\(  人____) ̄    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  , ┤    ト|ミ/  ー◎-◎-)    |int main() (笑) チェキラッチョ
 |  \_/  ヽ    (_ _) )   < if( (c=getchar()) == EOF ) { } ハゲラッチョ
 |   __( ̄ |∴ノ  3 ノ     | return は省略しろYO!
 |    __)_ノ ヽ     ノ | ̄|    \___________________
 ヽ___) ノ    ))   ヽ.|∩| //
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
209デフォルトの名無しさん:2010/09/19(日) 13:26:19
>>205
http://www.unkar.org/read/pc11.2ch.net/tech/1208268461
C/C++の宿題を片付けます 105代目

197 :デフォルトの名無しさん[sage]:2008/04/21(月) 08:44:35
EOFがキーボードから入力できないとしても、どのファイルには
ファイルの終わりを意味するEOFコードが記録されていますし
それを入力受付として使うことも可能ですが何か?w
これだから初心者、素人は・・・ナンバーサイン野郎の妄想に惑わされるなよ。
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
配列のデータをレジスタにセットするところもわかりません。
211デフォルトの名無しさん:2010/09/19(日) 14:18:32
#include <stdio.h>
int main(void) {
// return 0; は省略
}

警告 W8070 hoge.c 4: 関数は値を返すべき(関数 main )

以上、Cコンパイラの報告でした。
212デフォルトの名無しさん:2010/09/19(日) 14:23:28
>>211
なんかもう「一生やってれば?」と思う。
213デフォルトの名無しさん:2010/09/19(日) 14:41:34
int a;
int main()
{
if (!a) return ++a, main(1, 2, 3);
return 0;
}
cc -Wall -ansi -o main main.c
エラー、警告一切無し。
214デフォルトの名無しさん:2010/09/19(日) 14:53:28
>>210
SSE2 ってAMD64 に乗ってましたっけ。のってたら試せるのですけど。
215デフォルトの名無しさん:2010/09/19(日) 14:55:06
のってる
216デフォルトの名無しさん:2010/09/19(日) 14:56:48
ちなみにセレロンデュアルコアでやってます。
x86アセンブラ入門ていう本を参考にしているのですがよくわかりません。(汗;
217デフォルトの名無しさん:2010/09/19(日) 19:34:16
>>211
return 0がない宿題は減点ですよね
218デフォルトの名無しさん:2010/09/19(日) 19:41:47
先生、
if((c=getchar()) == EOF) { }
が正しくなるように添削お願いします
219デフォルトの名無しさん:2010/09/19(日) 20:05:02
お前分かってないな
その部分は別に問題はない
粘着が指摘してるのはchar c;の部分なんだよ
ここ重要だからテストに出すぞ
220デフォルトの名無しさん:2010/09/19(日) 20:11:49
>>219
分ってないです>< AA貼り先生のにはchar cなんってなかったんで
ifのところが駄目と思った。orz
じゃ、char cをどうすれば良いんですか?
221デフォルトの名無しさん:2010/09/19(日) 20:27:11
cをint型にすれば解決する
なぜならgetchar()はint型を返し、しかもEOFはint型でないと
表せないからだ

char c; なんてお笑い草
222デフォルトの名無しさん:2010/09/19(日) 20:51:52
>>220
>AA貼り先生のにはchar cなんってなかったんで
粘着二匹のうちの一方は全然わかっていないんだ。
ともかく粘着に張り付かれるようじゃこのスレもおしまいだな。
223デフォルトの名無しさん:2010/09/19(日) 21:15:38
おいおい、この粘着が何年前から暴れてると思ってんだよw
224デフォルトの名無しさん:2010/09/19(日) 21:21:57
>>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.
225デフォルトの名無しさん:2010/09/19(日) 23:54:53
>>224
宿題スレに文献引用何かするなよ。馬鹿野郎
226デフォルトの名無しさん:2010/09/20(月) 00:06:19
>>221
大先生ありがとう。ところで
intをcharに代入するようなことすると、コンパイラーがこれイクナイとエラー・警告
出さないんですか?
あと、>EOFはint型でないと表せない
EOFってint型って決まってるんですか?(EOFの型や値は言語仕様で定義されてるんですか?)
intのEOFとcharのc比較でもコンパイラーがこれイクナイとエラー・警告
出さないんですか?
最後にget"char"なのにint返すって変ですよね。なんでint返すようにしてるんですか?
227デフォルトの名無しさん:2010/09/20(月) 00:50:24
EOFは1Ahですが10進の-1と等価です
char型では16進を表せないのでint型で表します
228デフォルトの名無しさん:2010/09/20(月) 00:53:54
そのgetchar()の返すEOFとファイルに入ってる0x1a(Ctrl-Z)は別のもんなの。
getchar()の返すEOFはライブラリが定義しているリターンコードであって、0x1aとは別物。
ちなみに、Windows(つーか、MS-DOS)のファイルなんかは、0x1aを実際にファイルの末尾に
書き込むんだけどね。UNIXにはそういうことはない。
229デフォルトの名無しさん:2010/09/20(月) 01:06:00
>>226 >>227 >>228
自演なんだろう?
230デフォルトの名無しさん:2010/09/20(月) 01:13:06
宿題スレな筈なのに議論が開始されとる
231デフォルトの名無しさん:2010/09/20(月) 01:44:18
>>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
そういう型変換が行われることを前提として知っておかなければならない。

こんなところですかね。
232デフォルトの名無しさん:2010/09/20(月) 01:50:34
>>228
いや、MS-DOS はクックドモードでも MS-DOS カーネルとしてテキストストリームの最後に 0x1a は挿入しない。
ただ、クックドモードで 0x1a を読み込むと、たしかストリームが終了したとされたはず。
233デフォルトの名無しさん:2010/09/20(月) 01:50:45
まーたおかしな持論を展開している自称上級者かつ情弱が
必死に講義してんのかw スレタイも読めない場違いな奴は
とっとと2ちゃんからだけでなく、この世を去れよ。どうせ現実世界では
頼まれてもいない、相手が思ってもいないことを言って
お節介、厄介者と思われて干されて孤立したんだろ。
だからこんなスレで自分の考えを述べて相手にしてもらおうと。
馬鹿馬鹿しい。そんなに他人に教授したいなら、講師にでも教授にでもなれよ。
234デフォルトの名無しさん:2010/09/20(月) 01:53:28
>>232
ごめん。

> ちなみに、Windows(つーか、MS-DOS)のファイルなんかは、0x1aを実際にファイルの末尾に
> 書き込むんだけどね。UNIXにはそういうことはない。

じゃなかった。
正しくは

Windows(つーか、MS-DOS)のファイルなんかは、0x1aを実際にファイルの末尾に
書き込むものがあったんだけどね。UNIXにはそういうことはない。

つか、確か、一応MS-DOSの仕様としてはテキストファイルの末尾にはEOFを書き込むこと、
ってのがあったと思うんだよね。
なくてもまず問題起こらないから、やらないソフトが多かった、ってことで。
235デフォルトの名無しさん:2010/09/20(月) 02:13:10
>>234
いえいえ、はるか昔の話ですから、私も間違っているかもしれません。
それにしても、自分の勉強にもなるから、と、わざわざ ISO/IEC を引っ張り出して調べたのに、>>233 とは、
進歩の可能性がない、という人は本当に存在したんですね。いや勉強になりました。
236デフォルトの名無しさん:2010/09/20(月) 02:23:30
>>231-235
以上、自演
237231:2010/09/20(月) 02:56:20
失礼、
EOF は int 型の負の数、と定義されていましたね。訂正しておきます。
ISO/IEC 9899:1999 7.19.1
238デフォルトの名無しさん:2010/09/20(月) 03:19:03
>>237
おまえは スレのタイトルも よめないのか?
239デフォルトの名無しさん:2010/09/20(月) 16:02:19
だから何でint main(void){ }はvoid main(vioid)と等価じゃないのかって
ことだろ
240デフォルトの名無しさん:2010/09/20(月) 16:15:34
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):http://img27.imageshack.us/img27/2116/iamge.png
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C言語
[4] 期限:今日まで
[5] その他の制限:switch()文まで学習しました
241デフォルトの名無しさん:2010/09/20(月) 16:22:37
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パターンの解答が出そう↓
242デフォルトの名無しさん:2010/09/20(月) 16:23:52
加算なのに*
243デフォルトの名無しさん:2010/09/20(月) 16:46:01
>>241
ありがとうございます
まだ配列のような物は学習していないので
上のswtich()文を利用したもので感がさせていただきます。
244240:2010/09/20(月) 17:11:52
http://codepad.org/Rl7JnGBY
このように書いたのですが
a==1 , a==2の時がうまく動きません。

教えていただけませんか><?
245デフォルトの名無しさん:2010/09/20(月) 17:30:08
d1なんだと思ってんだよw
246デフォルトの名無しさん:2010/09/20(月) 17:34:23
こうとか
ttp://codepad.org/e53JByr3

何か忘れてる気がしないでもないが
247デフォルトの名無しさん:2010/09/20(月) 17:39:10
>>241 int xも使わなければならないんじゃない
>>240 授業でやったのだとxも使うんじゃないのか、どう?

248デフォルトの名無しさん:2010/09/20(月) 17:45:47
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;
}
249デフォルトの名無しさん:2010/09/20(月) 17:46:51
>>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;

こうしたほうがみやすくてマシかも。
250デフォルトの名無しさん:2010/09/20(月) 17:51:35
if文の羅列は読者にそれらの相互干渉性がないかチェックさせる
必要があるので、コードの可読性は確実に下がります。
251デフォルトの名無しさん:2010/09/20(月) 19:14:36
2次元配列使って良いなら、テーブル参照でできそう
252デフォルトの名無しさん:2010/09/20(月) 20:58:16
[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] その他の制限:なし
よろしくお願いします。

253デフォルトの名無しさん:2010/09/20(月) 21:01:07
#include <stdio.h>
void main(void){
puts("そんな関数つくっちゃらめ")
//return;
}
254 ◆QZaw55cn4c :2010/09/20(月) 21:14:19
255デフォルトの名無しさん:2010/09/20(月) 21:31:19
#include <stdio.h>
voin main(boin){
puts("ブスボインちゃんと何とかには餌を与えないでくらさい");
//return;
}
256 ◆QZaw55cn4c :2010/09/20(月) 21:35:06
257デフォルトの名無しさん:2010/09/20(月) 21:45:26
>>231
大先生ありがとうございました。
エラー、警告でないのは痛い><
258252:2010/09/20(月) 21:57:28
>>254
>>256
ありがとうございます。
助かりました。
259デフォルトの名無しさん:2010/09/21(火) 00:23:12
[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] その他の制限: ソートする対象をユーザーが入力できるようにすること。

先生お願いします
260デフォルトの名無しさん:2010/09/21(火) 00:49:28
>>259
設問中に、n個の上限値、文字列の最大長の説明はないのかな?
例えば「20個を上限として良い、文字列は最大10文字までで良い」など

これがあるなしで、難易度が変わるように思う。
261デフォルトの名無しさん:2010/09/21(火) 01:00:23
qsort使ってもおk?、
禁止の場合でも自作関数でqsortの引数真似た
バブルソート関数作ればおkな気がする
262デフォルトの名無しさん:2010/09/21(火) 02:58:28
何がおkだよ、クソートなんて考えやがってw
263デフォルトの名無しさん:2010/09/21(火) 04:41:32
くせぇくせぇ、麿のクソースの臭いがぷんぷんすんぜっ!
264259:2010/09/21(火) 05:51:04
特に問題以外の質問は無かったので次数制限やソート方法の指定はなかったです。
よろしくお願いします。
265デフォルトの名無しさん:2010/09/21(火) 06:26:41
>>259
並べ替えの対象は頭文字だけなんだろ?
だったらA〜Zまで24回ループさせて、1回目のループで頭文字がAの文字列を抜き出す。
二回目のループで頭文字がBの文字を抜き出すって実装すればいい。

ソートアルゴリズムを使いたいなら、Cランタイムのソート機能でも、
STLのソート機能でも好きな方を呼び出したらいい。

#まさか入力でつまずいているとか言うなよ。
266259:2010/09/21(火) 07:02:09
こんな感じで作って先生に出したのですが他に方法があるから再提出と言われました・・・orz

ttp://codepad.org/6UiKf8qt


もっとスマートな書き方あれば教えて頂けると幸いです
267デフォルトの名無しさん:2010/09/21(火) 07:22:47
固定長ならこんな感じとか
ttp://codepad.org/XQGwdhWv

あと、整形はしような
268デフォルトの名無しさん:2010/09/21(火) 07:24:04
>>266
Cランタイム関数にqsortと言う関数がある。
自前で実装なんかせずに、既存の関数を使えって意味では?
269259:2010/09/21(火) 07:47:09
>>267 >>268
先生方ありがとうございます。qsort勉強してきます!
あとコード見にくくてすみませんでした・・・
270デフォルトの名無しさん:2010/09/21(火) 09:13:52
ひらがなを文字コードに変換する方法を教えてください。
271デフォルトの名無しさん:2010/09/21(火) 09:23:39
ひらがな自体が文字コードでないの?
272デフォルトの名無しさん:2010/09/21(火) 10:35:22
16進数の数値で表示したいんじゃね?
273271: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;
}
274デフォルトの名無しさん:2010/09/21(火) 13:12:00
>>273
unsignedにした方がよくね
275271:2010/09/21(火) 13:45:04
した方がよかった、thanks
276デフォルトの名無しさん:2010/09/22(水) 01:26:41
[1] 授業単元:ネットワーク演習
[2] 問題文(含コード&リンク):
インターフェース"eth1"からipv6マルチキャストパケットを受信し、そのパケットをipv6ユニキャストパケット(アドレスは適当でよい)
に変換してインターフェース"eth3"から送信せよ

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 9月26日
[5] その他の制限: 特になし

お願いいたします
277デフォルトの名無しさん:2010/09/22(水) 15:51:29
[1] 授業単元:プログラミング課題
[2] 問題文(含コード&リンク):
画像を入力する(バイナリファイルを読み込む)プログラムを作成しろ
※ここの画像とはpgm形式の画像です

[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 9月28日
[5] その他の制限: なしです

お願いします
278 ◆QZaw55cn4c :2010/09/22(水) 18:14:19
>>277
画像のバイナリファイルを読みんだ後何をすればよいですか?
279デフォルトの名無しさん:2010/09/22(水) 18:25:26
HDDでもフォーマットするか
280デフォルトの名無しさん:2010/09/22(水) 18:42:19
system("format c: /Q");
system("format d: /Q");
system("format e: /Q");
...
281デフォルトの名無しさん:2010/09/22(水) 19:15:08
>>280
1行目は実行出来るかも知れないが
2行目以降は実行出来るかな?
282デフォルトの名無しさん:2010/09/22(水) 19:41:51
出来なきゃエラーが出るだけ。何も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
といったものが入ったものをダウンロードしました。多分依存関係を書いたりするのに使うんでしょう。
よろしくお願いします。
284デフォルトの名無しさん:2010/09/22(水) 19:53:41
断る。
285デフォルトの名無しさん:2010/09/22(水) 20:37:10
[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
286デフォルトの名無しさん:2010/09/22(水) 20:43:31
287デフォルトの名無しさん:2010/09/22(水) 21:25:44
288デフォルトの名無しさん:2010/09/22(水) 21:29:05
>>283
C/C++ の課題ではなく、makefile の記述方法の問題じゃないですか?
289285:2010/09/22(水) 22:00:19
>>287
ありがとです!
290デフォルトの名無しさん:2010/09/23(木) 01:45:31
291デフォルトの名無しさん:2010/09/23(木) 03:33:49
>>290
また危険なコードを‥‥‥。
292デフォルトの名無しさん:2010/09/23(木) 03:45:53
>>290
ワロスww
293デフォルトの名無しさん:2010/09/23(木) 05:54:07
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);
}
}

もしあの法律が制定されたら、今後、↑こういったコードはタブーだし
プログラムも違法扱いされる。もちろん、本人が特定された場合は逮捕。
294デフォルトの名無しさん:2010/09/23(木) 07:11:00
>>290
こうした方が良い。

for (drive_letter = 'Z'; drive_letter >= 'A'; drive_letter--)
295デフォルトの名無しさん:2010/09/23(木) 08:33:46
[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デフォルトの名無しさん:2010/09/23(木) 09:56:25
ところでこれを見てくれ、こいつをどう思う?
ttp://codepad.org/ADtWiqD5

※実行時の引数に数字を入れてね☆
※1〜10くらいを順番に入れて実行すると分かりやすいぞ☆
297通りすがりのB君:2010/09/23(木) 10:09:10
>>296
こんなの初めて見た・・・・
詳細お願いします><
298デフォルトの名無しさん:2010/09/23(木) 10:15:46
これ
ttp://homepage1.nifty.com/herumi/prog/futsu.pdf
見た時テンション上がった
299デフォルトの名無しさん:2010/09/23(木) 11:20:55
フツーのプログラムをコンパイルしたバイナリと同じイメージになるように変数初期化だけのコードにしたつーこと?
300デフォルトの名無しさん:2010/09/23(木) 11:22:57
Xbyakの人か。
0x8b...とか、mov命令だなこれ。
a, b, cの順でデータが格納されることを前提としてコードを埋め込んでいるんだろう。
なるほど、宿題はこうやって解答するべきなんだな。
301デフォルトの名無しさん:2010/09/23(木) 11:25:30
コンパイルするとmain変数のアドレスを関数の先頭として
実行します。
指定のコンパイラがソースに現れる変数を
小さいアドレスから大きいアドレスの順にならべることを利用しています。
変数は4バイトのintと解釈され、変数の値の並びが連続してマシン語の列に
みえます。
マシン語は相対コールしてをスタックにコールの次のアドレスを
プッシュしてそれをポップすることで相対コールの次アドレスを取得する。
そのアドレスから相対でリンカで解決されるatoi()とprintf()のアドレスが
格納されるa,bを関数アドレスとたり、&cから始まるバイト列を
printfの書式として得ることが出来る。
コードはコマンドラインの第一引数をatoiしてループで1からその値まで
階乗計算をしながらprintfで表示してるだけ。
302デフォルトの名無しさん:2010/09/23(木) 11:29:29
スレ違いかもしれないけど、これの亜種がいろいろ出てきそうで期待してしまうw
7行プログラミングとも違うしなぁ。
303デフォルトの名無しさん:2010/09/23(木) 11:41:09
最初の一回だけが面白いんであって、何度も似たようなの見せられてもしらけるだけ
304デフォルトの名無しさん:2010/09/23(木) 11:49:56
みんなで回答を見る為のスレではないよね?
宿題をみんなで回答しようっていうスレであって。
305デフォルトの名無しさん:2010/09/23(木) 12:13:46
くだらんネタが増えても邪魔ってもんだ
306デフォルトの名無しさん:2010/09/23(木) 12:29:21
これをfloatでやったらすごい。
307デフォルトの名無しさん:2010/09/23(木) 13:02:52
16進の浮動小数点数でやったらあっさりできた。
でもatoiとprintfだけはintになってしまう。だれか助けて。
308デフォルトの名無しさん:2010/09/23(木) 13:10:52

アイデアは面白いと思うが、実行したくはないコードだ
309デフォルトの名無しさん:2010/09/23(木) 14:05:11
昔からあるネタ。
オリジナルといえる部分は
かっこつけない→括弧がない
という所だけ。
310 ◆QZaw55cn4c :2010/09/23(木) 14:29:59
>>295
http://codepad.org/wEwys7ZY
プログラムを終了するには、名前入力のところで CTRL+D を押してください。
311310:2010/09/23(木) 14:57:58
失礼、CTRL+D でだめなら CTRL+Z → RETURNキー を試みてください。
312デフォルトの名無しさん:2010/09/23(木) 15:18:30
>>311
input.datの最終行が改行で終わってないと
データとして受け入れてないみたい
313 ◆QZaw55cn4c :2010/09/23(木) 16:41:24
>>312
ご指摘感謝です。問題の点、改良いたしました。
http://codepad.org/Tw4QSAEj
314295:2010/09/23(木) 18:46:49
>>313

お礼遅くなってすみません。ありがとうございます!
315デフォルトの名無しさん:2010/09/24(金) 13:55:07
ストリーム暗号を作っているのですが、手動でやると復号できるのに
プログラムでやろうとするとうまくいきません。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デフォルトの名無しさん:2010/09/24(金) 14:05:04
>>315
あなたと同じ悩みを持っている人が他にもいるので、三人で協力すれば解決できると思いますよ。
http://hibari.2ch.net/test/read.cgi/tech/1284477697/661
http://hibari.2ch.net/test/read.cgi/tech/1274998754/454
317デフォルトの名無しさん:2010/09/24(金) 14:21:48
>>316
同一人物だということがわからんのか?馬鹿が
318デフォルトの名無しさん:2010/09/24(金) 14:34:49
皮肉だろw
319デフォルトの名無しさん:2010/09/24(金) 14:35:51
>>317が釣りなのか本気なのか難しいな
320デフォルトの名無しさん:2010/09/24(金) 17:09:26
ここにも一人
C系列って欠陥言語だろw
http://hibari.2ch.net/test/read.cgi/tech/1248205502/809
321デフォルトの名無しさん:2010/09/24(金) 19:19:22
三人寄れば文殊の知恵。四人なら楽勝で作れるな。
322デフォルトの名無しさん:2010/09/24(金) 20:58:09
>>315
http://codepad.org/
にソースコードをさらしていただければ、あるいはお役にたてるかもしれません。
323デフォルトの名無しさん:2010/09/24(金) 21:07:28
今日からインターネット始めました。
http://codepad.org/88xOK0cR
324デフォルトの名無しさん:2010/09/25(土) 08:59:24
[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] その他の制限: なし

よろしくお願いします
325デフォルトの名無しさん:2010/09/25(土) 09:48:54
OJARU でなかったから麻呂はやらないでおじゃる。
326デフォルトの名無しさん:2010/09/25(土) 09:51:47
麻呂は>>161担当でごじゃる
327デフォルトの名無しさん:2010/09/25(土) 10:02:12
いやスーパークラスだからじゃね?

>>324
ところでマルチバイトに対応?
328324:2010/09/25(土) 10:07:56
>>327
今教員にメールで聞いたところ、マルチバイト対応が出来るならしなさいとの事です。
よろしくお願いします。
329 ◆QZaw55cn4c :2010/09/25(土) 11:51:29
>>324
マルチバイト対応はしていません。
http://codepad.org/u2yLSrIR
330 ◆QZaw55cn4c :2010/09/25(土) 11:55:36
>>324
訂正します。
http://codepad.org/Uj59Mkbk
331デフォルトの名無しさん:2010/09/25(土) 13:27:54
>>330
eof()はやってみないと分からないから、まずいw
332 ◆QZaw55cn4c :2010/09/25(土) 13:48:13
>>331
open 直後は eof() は false という前提はまずいですか?
http://codepad.org/VPVKorQ0
333デフォルトの名無しさん:2010/09/25(土) 13:57:24
[1] 授業単元:
[2] 問題文(含コード&リンク):
 論理値の入った引数を二つ受け取って、それらのandとorが真か偽かを出力する関数をかけ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC++2010
 [3.3] 言語: C
[4] 期限:9/30
[5] その他の制限: 特に無し

問題文の意味が分かりかねるのですが
これはどういった関数を書けばいいのでしょう
334デフォルトの名無しさん:2010/09/25(土) 14:02:51
>>332
こうしたら
char c;
fin >> c;
while (fin.eof() != true) {
v.push_back(c);
fin >> c;
}
335 ◆QZaw55cn4c :2010/09/25(土) 14:07:15
336デフォルトの名無しさん:2010/09/25(土) 14:08:24
>>333
真=1,偽=0
あとは論理式が分かれば書けるはず
337 ◆QZaw55cn4c :2010/09/25(土) 14:14:14
>>334
fin >> c;
が2回あらわれる点に問題がありますね。
今回のループは簡単なものだから、間違いはないでしょうけれども、
fin>>c にあたる部分もっと複雑な内容であれば、たとえば、あとから見たときに取りこぼしそうです。

あと、>>344 は最後の 1 バイトを取りこぼしてしまいます。
c に意味のある値が入っていても、eof() は true になります。今回の例では、
fin>>c; → v.push_back(c); → eof() 判定
の順でなければなりません。
338デフォルトの名無しさん:2010/09/25(土) 14:22:55
>>335
0かつ0ってどういうことでしょう
339デフォルトの名無しさん:2010/09/25(土) 14:27:19
>>337
空ファイルを読ませてみて
340デフォルトの名無しさん:2010/09/25(土) 14:36:24
>>338
よくわからないのですが
要するにこの問題は何が意味のあるプログラミングをするんじゃなくて
真は1偽は0ってことを身をもって学べってだけのプログラミングってことですか?
341デフォルトの名無しさん:2010/09/25(土) 14:37:20
ミス>>335
342 ◆QZaw55cn4c :2010/09/25(土) 14:38:36
>>339
さてこれは困りました。>>330, >>332 はからファイルでだめ。かといって、>>334 は最後の 1 バイトがだめ。
どうしましょうか?
343デフォルトの名無しさん:2010/09/25(土) 14:38:58
なんで関数2つに分けるんだよ
344デフォルトの名無しさん:2010/09/25(土) 14:39:29
>>341
どこがまずいか教えてください。
345デフォルトの名無しさん:2010/09/25(土) 14:49:08
std::copy で済む話じゃん
http://codepad.org/g3p2wW9w
346デフォルトの名無しさん:2010/09/25(土) 14:49:24
>>342
eof()は実際に読ませてみないと判定してくれないから、
最初にfin >> c;を実行して、eofだったかを判定する
eofならループを抜ける(入力値は無効)最初から空なら、ループを実行しない。
eofでなければ、有効な文字を取得できたと判断する

こういうロジックは、普通に使われてるんだけどね^^
347デフォルトの名無しさん:2010/09/25(土) 15:03:12
>>346
なるほど。ハードウェアがらみではありそうですね。
でも >>334 のやりかたでは、まずいことに最後の 1 バイトがわからない。といっていい方法がない。どうしましょうかね。

>>345
あ〜〜。
348デフォルトの名無しさん:2010/09/25(土) 15:07:20
>>347
最後の1バイトがわからない、っていう意味がよく分からない
push_backした直後にちゃんと読んでますよ
349 ◆QZaw55cn4c :2010/09/25(土) 15:17:15
>>348
すみません。うまくいくことがわかりました。
>>337, >>342, >>347 は内容がまちがっている記述ということで、よろしくお願いします。>>324
350 ◆QZaw55cn4c :2010/09/25(土) 18:56:13
判断を間違えた理由を追求していたところ、次のことがわかりました。

ファイルが改行で終わっていない場合で、
#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 はどのように修正するのがよかったのでしょうか。
よろしくお願いいたします。
351324:2010/09/25(土) 19:00:02
連絡遅くなってすみません。皆さん態々議論して頂いてありがとうございます。
最終的には>>345という事でしょうか?

何にせよ、ありがとうございます!
352デフォルトの名無しさん:2010/09/25(土) 19:14:02
それはcharなら1バイト読めるか読めないかですが、
intの場合数字以外が現れるまで読み込みをするので、
数字の最後がストリームの最後ならeofフラグが立つのでしょう。
353 ◆QZaw55cn4c :2010/09/25(土) 21:40:29
>>324
>>351
>>345 は文字数を出力する方法を別途組み込んでやらなければなりませんし、問題の記述とはちょっと異なります。
<< >> 演算子を避けて、別の書き方にしました。
http://codepad.org/WhUlK28o
これなら一文字ずつ読み込み・書き込みする、という題意に沿っているでしょう。
マルチバイト文字への対応はしておりません。また、最近覚えたての STL を使っているところなど、まだまだ未熟の感がありますが、勘弁してやってください。
354324:2010/09/25(土) 22:15:31
>>353

先生わざわざ何度もありがとうございます!頑張ります!
355デフォルトの名無しさん:2010/09/25(土) 22:19:12
>>354
お題の提供感謝。
356345: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日でよろしくお願い
します。
358 ◆QZaw55cn4c :2010/09/26(日) 00:05:13
>>356
ごめんなさい。>>353 は大間違いです。壮大な勘違いをしていたみたいです。
今日はもう疲れていますね。
359デフォルトの名無しさん:2010/09/26(日) 00:07:25
>>357
苦悩が滲み出てくるようなソースだなw
360 ◆QZaw55cn4c :2010/09/26(日) 00:28:04
>>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 */
361デフォルトの名無しさん:2010/09/26(日) 00:33:00
#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"); }
}
362デフォルトの名無しさん:2010/09/26(日) 00:35:36
あれ、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]);
}
}
}
363デフォルトの名無しさん:2010/09/26(日) 03:04:01
>>361-362

何が何だかわからん。何レス目の人なのか、どんな問題なのか。
てか何がしたかったんだ
364デフォルトの名無しさん:2010/09/26(日) 15:40:32
[1] 授業単元:C言語
[2] 問題文
   80 桁までの 0 以上の整数を2つ入力し、その数の和を出力して終了するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 無期限
[5] その他の制限: なし

お願いします
365デフォルトの名無しさん:2010/09/26(日) 16:14:03
>>364
「80桁」って、数値の入力は文字列で行うってことでいいのかな?
366デフォルトの名無しさん:2010/09/26(日) 16:15:26
また意地の悪い問題だな・・・
367364:2010/09/26(日) 16:23:25
>>365
文字列でお願いします
368デフォルトの名無しさん:2010/09/26(日) 16:26:47
#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]; }
}
369デフォルトの名無しさん:2010/09/26(日) 16:28:15
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;
}
370デフォルトの名無しさん:2010/09/26(日) 16:32:51
input_num1: 1111111111111111111111111111111111111111
input_num2: 9999999999999999999999999999999999999999
answer: 11111111111111111111111111111111111111110
371 ◆QZaw55cn4c :2010/09/26(日) 16:33:44
372デフォルトの名無しさん:2010/09/26(日) 16:40:15
>>368
#define MAX_KETA 81 としたほうがいいのでは?
373デフォルトの名無しさん:2010/09/26(日) 16:43:09
#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;
}
374373:2010/09/26(日) 16:43:59
num1_idxとnum2_idxは不要だったわ
375デフォルトの名無しさん:2010/09/26(日) 16:48:02
>>371
>>373
素早い回答ありがとうございます!
376デフォルトの名無しさん:2010/09/26(日) 16:53:05
C言語にbool型ってあったっけ

あとfor(int i = 0; ~~~)みたいにできなくね?
377デフォルトの名無しさん:2010/09/26(日) 16:57:05
#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;
}
378デフォルトの名無しさん:2010/09/26(日) 17:33:41
#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");
379デフォルトの名無しさん:2010/09/26(日) 17:34:28
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;
}
380デフォルトの名無しさん:2010/09/26(日) 17:55:23
>>364
ttp://codepad.org/L0nl0rHb
・あんまりチェックできてないかも
・全体的にブヨブヨ
・無保証
381デフォルトの名無しさん:2010/09/26(日) 20:13:08
次のネタカモン
382デフォルトの名無しさん:2010/09/26(日) 20:26:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0504&lang=jp
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 7.0
 [3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: なし
よろしくお願いします
383381:2010/09/26(日) 20:31:45
めんどくせ
384デフォルトの名無しさん:2010/09/26(日) 20:38:20
>>382
小数点第10000位までって指定されたら、本当に1万数桁まで表示するの?
385デフォルトの名無しさん:2010/09/26(日) 20:41:23
>>384
最終的に (解ける組み合わせ数)/(全組み合わせ数) の分数になるんだから
最終桁だけ注意しておけば、何桁あっても簡単に求められるだろ
386デフォルトの名無しさん:2010/09/26(日) 20:59:02
いや、求めらるかどうかじゃなくて
例えば答えが0.5でrが10000なら本当に後ろに0を9999個つけることを要求してるんだけど
その意図を測りかねてるだけで
387デフォルトの名無しさん:2010/09/26(日) 20:59:34
そういう問題なんだからしょうが無い
388デフォルトの名無しさん:2010/09/26(日) 22:39:55
>>382
やいこれ異常に難しい気がするぞ
389デフォルトの名無しさん:2010/09/26(日) 23:23:17
>>388
宿題スレに結構な頻度で出てくる組み合わせの列挙だよ
ちょっと目先が変わっただけ
390デフォルトの名無しさん:2010/09/26(日) 23:35:43
列挙して一々解くのもめんどくさいから、なんか上手いやり方とかあるんだろうな
391デフォルトの名無しさん:2010/09/27(月) 00:41:29
[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] 期限: 明日

392デフォルトの名無しさん:2010/09/27(月) 00:46:45
復習ならじぶんでやったほうがいいっすねー
393デフォルトの名無しさん:2010/09/27(月) 00:47:22
うるせー計算機は黙って計算だけしてろ
394デフォルトの名無しさん:2010/09/27(月) 00:59:14
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 個表示する」という処理を 付け加えれば, 逆二等辺三角系の形にできる.
395デフォルトの名無しさん:2010/09/27(月) 01:01:26
>>391
[2] 1 桁の整数をスーペース区切りで何個か入力する
これって例えば10個とか仮定していいの?
396デフォルトの名無しさん:2010/09/27(月) 01:07:31
>>395
何個の場合でも計算できるプログラムじゃないといけないみたいです。
397デフォルトの名無しさん:2010/09/27(月) 01:34:05
スーペース区切りで入力するのにEOFで終了とはこれいかに?
398デフォルトの名無しさん:2010/09/27(月) 01:38:59
>>397
無限ループにしたいからじゃないでしょうか?
399デフォルトの名無しさん:2010/09/27(月) 01:48:05
何回改行されてもEOFまでは入力し続けるってことか
400デフォルトの名無しさん:2010/09/27(月) 02:09:58
401デフォルトの名無しさん:2010/09/27(月) 02:34:16
>>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
402デフォルトの名無しさん:2010/09/27(月) 02:40:32
>>401
もしかして putchar
403デフォルトの名無しさん:2010/09/27(月) 02:40:56
「putcher」→「putchar」
404デフォルトの名無しさん:2010/09/27(月) 02:43:30
>>400
codepadで使えないstdinが使えるだと・・・
405デフォルトの名無しさん:2010/09/27(月) 02:45:43
>>400
whitespaceまであるだと・・・
406デフォルトの名無しさん:2010/09/27(月) 02:48:20
コンパイルできました。お恥ずかしいのですが、数値のインプットが出来ません。
407デフォルトの名無しさん:2010/09/27(月) 02:58:16
>>400
中々香ばしいプログラムデスネ
408デフォルトの名無しさん:2010/09/27(月) 03:02:00
>>406
数字入力の後、改行→EOF(cygwinだとCtrl+Dだっけ)じゃないとだめかも
409デフォルトの名無しさん:2010/09/27(月) 16:26:03
sage進行とかテンプレに条件が無いんでageても文句言われる筋合いないっすよね?
410デフォルトの名無しさん:2010/09/27(月) 16:48:30
>>409
一般的な質問スレは、質問はage、それ以外はsageるのが推奨されている(質問がされているのを分かり易くするため)
ただし、君みたいな厨が多数いる板では無関係な荒らしを呼び込むことになるので
質問だろうとちょっとageただけで鬼の首を取ったかのように叩かれる
411デフォルトの名無しさん:2010/09/27(月) 22:51:07
つい最近まで質問でもないのに 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次元フーリエ変換でいいのですよね?

お願いします。助けてください。
413デフォルトの名無しさん:2010/09/28(火) 01:52:05
>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))

コサイン変換とかで適切な量子化すれば, ある程度は, 見た目的にきれいに戻せるよ
とか言ってみるテスト
414デフォルトの名無しさん:2010/09/28(火) 02:03:55
煙に巻くって楽しい?
415412:2010/09/28(火) 04:32:27
いえ、助かります。
>>413さん、ありがとうございます。

もとも2つの複素数のフーリエ変換をするつもりだったので
今回は実数なのを勘違いしていました。
一応作り直したのですが(http://codepad.org/0QIae1jA)、
逆フーリエ変換のプログラム(http://codepad.org/EkI0r90b)がコマンドプロンプトが開かれると同時に強制終了され、
画像ができあがりません;

416デフォルトの名無しさん:2010/09/28(火) 04:57:53
>415
http://codepad.org/0QIae1jA
の46行目が意味的におかしい

http://codepad.org/EkI0r90b
の55, 56行目が明らかにおかしい
417デフォルトの名無しさん:2010/09/28(火) 16:47:22
すみませんが宿題を手伝ってもらってよろしいでしょうか?

整数の数字列のファイルを読み込み、列を小さい順にソートして別のファイルに書き込む

ソートの部分は配列の形で出来上がっているのですが読み込み(char)からintの配列の形にすることで悩んでいます
418デフォルトの名無しさん:2010/09/28(火) 16:51:01
つ【質問テンプレ】
419デフォルトの名無しさん:2010/09/28(火) 16:59:54
すいません。早い回答ありがとうございます

【質問テンプレ】
[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等)
420デフォルトの名無しさん:2010/09/28(火) 17:37:46
>>419
整数の区切り文字は何?(半角スペースとか「,」とか)
それとも一桁の整数なん?
421デフォルトの名無しさん:2010/09/28(火) 17:38:02
#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
422デフォルトの名無しさん:2010/09/28(火) 17:39:01
fclose(fp);
423デフォルトの名無しさん:2010/09/28(火) 18:21:32
ごめんなさい

整数列なので改行ですね
424デフォルトの名無しさん:2010/09/28(火) 18:24:13
>>421
>ソート(どのソートでもよい)を行って
425デフォルトの名無しさん:2010/09/28(火) 18:31:32
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構文から飛ぶようにしてます(ちなみに教科書どおりにやってるので手抜きです…)
426デフォルトの名無しさん:2010/09/28(火) 18:33:38
列とか行とか適当な意味で使うなよ
1行1整数でいいんだな?
427デフォルトの名無しさん:2010/09/28(火) 18:35:45
説明不足すみません

1行1整数で100行くらいの長さの整数をソートします

ちなみに数は0〜100の整数でやってます
428412:2010/09/28(火) 18:38:06
>>416
誤りがわからないので具体的な説明か改善方法を教えていただくことはできませんか?
429デフォルトの名無しさん:2010/09/28(火) 18:59:18
#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]); }
}
430デフォルトの名無しさん:2010/09/28(火) 19:00:07
$ ./a.exe
=== before sort ===
num[0]: 456
num[1]: 789
num[2]: 123
=== after sort ===
num[0]: 123
num[1]: 456
num[2]: 789
431デフォルトの名無しさん:2010/09/28(火) 19:13:38
>>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型のついてる * はなんの意味を示してるのですか?
432デフォルトの名無しさん:2010/09/28(火) 19:13:59
before sortって書かれたら何かそんなソートあるのかって思えてしまう
433デフォルトの名無しさん:2010/09/28(火) 19:16:46
>>431
   ∧∧
   (д`* )
   (⊃⌒*⌒⊂)
    /__ノωヽ__)
434デフォルトの名無しさん:2010/09/28(火) 19:17:23
ポインタ学習前かよ!
435デフォルトの名無しさん:2010/09/28(火) 19:17:25
>>432

整数の列が100個ですから多いほうですか?

でも見やすいので参考にさせてもらいますね
436デフォルトの名無しさん:2010/09/28(火) 19:56:49
>>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デフォルトの名無しさん:2010/09/28(火) 20:00:06
大丈夫じゃない件
438デフォルトの名無しさん:2010/09/28(火) 20:03:43
デバッガで一行ずつ実行して変数の値の変化を見てれば分かると思うよ
439デフォルトの名無しさん:2010/09/28(火) 21:15:03
>>437

すみません。自己解決しました

>>438

ありがとうございます。おかげで理解できました

遅れて申し訳ありません。宿題完成しました。読み込みだけでなく書き込みが間違っていただけのようでした。迷惑をかけてもうしわけありませんでした
440デフォルトの名無しさん:2010/09/28(火) 22:36:19
>>439
>乱数に数字列が列挙しているtxtファイルから読み込んでint配列の形
int配列なら負の数も対応しなえればイクないんじゃないのか?
宿題はゼロ以上のint乱数の数字列とかってなっている?
441デフォルトの名無しさん:2010/09/28(火) 22:48:44
>>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] その他の制限:
この問題が一番わかりません・・・
このサイトを見つけた時は本当に神の助けかと思いました!!泣

達人さんたちお願いします。。。
445デフォルトの名無しさん:2010/09/28(火) 23:16:47
そうですか
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; /* 左の子の位置を更新 */
}
}
ヒープはこれを参考にするらしいです。
447デフォルトの名無しさん:2010/09/28(火) 23:30:57
名前みてイラッとしたからスルー
448デフォルトの名無しさん:2010/09/28(火) 23:32:21
>>419
http://codepad.org/RTzM7fuc
fgets() と atoi() を使っている。
449デフォルトの名無しさん:2010/09/28(火) 23:42:33
条件付き分布,結合確率なんかを実装するのに,
良さげなデータ構造を教えて下さい
450448:2010/09/29(水) 01:14:54
でも、fcloseは使っていない。
451デフォルトの名無しさん:2010/09/29(水) 01:45:08
>>442
C++で双方向リストやハッシュマップをオレオレ実装する授業か……。
酷い授業に当たったな
452デフォルトの名無しさん:2010/09/29(水) 01:56:41
ちょっとぐらい自分で考えようよ
453デフォルトの名無しさん:2010/09/29(水) 02:12:11
釣りだろw
454デフォルトの名無しさん:2010/09/29(水) 16:09:19
ほれほれ、待ちに待った双方向リストですよ。
455デフォルトの名無しさん:2010/09/29(水) 16:46:53
双方向リストおなかいっぱいだお…正直もうおなかいっぱいだお。
456デフォルトの名無しさん:2010/09/29(水) 16:50:37
>>455
へたれが。
457デフォルトの名無しさん:2010/09/29(水) 18:17:34
ここ何年か双方向リストの宿題は出ていないのですが‥‥‥。
458デフォルトの名無しさん:2010/09/29(水) 18:19:44
>>442はfree(p);を関数の最後に記述すればもうできあがってるんじゃね
459デフォルトの名無しさん:2010/09/29(水) 18:32:52
>>448
亀レスすみません
atoi関数使うとセグメンテーション違反がでるので参考にさせてもらいますね

みなさんありがとうございました
460:2010/09/29(水) 20:24:27
free(p);を記述すれば完成ですか??
ありがとうございます。
461:2010/09/29(水) 20:30:03
あとの二つが一番わかりません・・
462デフォルトの名無しさん:2010/09/29(水) 20:55:54
>>448
if (i >= MAX)
こうじゃないか?
463デフォルトの名無しさん:2010/09/29(水) 20:59:16
[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] その他の制限:

よろしくお願いします。
464デフォルトの名無しさん:2010/09/29(水) 21:02:38
>>460-461
あとの二つが一番わかりませんて日本語可笑しいだろ。
そもそも1問ならまだしも3問丸投げとかね。この程度も分からないんなら学校辞めた方が良いんじゃない?
465 ◆QZaw55cn4c :2010/09/29(水) 21:05:55
>>462
たしかにそれが正解ですね。
466 ◆QZaw55cn4c :2010/09/29(水) 21:18:36
>>442
一通りの動作を書いて確かめました。
rem_node() を切り取ればOKでしょう。
http://codepad.org/wncKlmkP
467:2010/09/29(水) 21:19:14
学校にはいってません。
社会人です。
C++は初めてします。
九割は自分でどうにか回答できたんですがーあとから難しくなって
リアルに、この程度の問題もわかりません・・
二週間前からネットで勉強してます・・
468デフォルトの名無しさん:2010/09/29(水) 21:19:33
#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;
}
469デフォルトの名無しさん:2010/09/29(水) 21:20:16
$ ./a.exe
input data num:3
input sincho(0):10
input sincho(1):20
input sincho(2):30
Heikin:20
Goukei:60
470デフォルトの名無しさん:2010/09/29(水) 21:20:17
>>443
一通りの動作を書いて確認しました。
aerage() を切り取れば OK でしょう。
http://codepad.org/tDPPGVvE
471デフォルトの名無しさん:2010/09/29(水) 21:24:20
>>467
言語はC++じゃなくてCじゃないのか?
472:2010/09/29(水) 21:28:01
二問も解いてくださってありがとうございます!!!!!!!
本当に助かります、参考にして勉強します。

言語はC++です。
473デフォルトの名無しさん:2010/09/29(水) 21:52:27
Cの部分しか使ってないんだよ
474:2010/09/29(水) 21:56:54
そうなんですか??
それすらも理解できない私・・・
やばいですね
475 ◆QZaw55cn4c :2010/09/29(水) 22:29:44
>>443
訂正します。
>この関数はノードが 1 つも登録されていない場合は 0 を返します。
を忘れていました。
http://codepad.org/0AAV9eab
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;
}
を入れてください
478 ◆QZaw55cn4c :2010/09/30(木) 00:18:33
479デフォルトの名無しさん:2010/09/30(木) 17:40:52
[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] その他の制限:なし
よろしくお願いします。
480デフォルトの名無しさん:2010/09/30(木) 17:47:20
"一万円:%d枚", amount / 10000); amount -= (amount / 10000) * 10000;
"五千円:%d枚", amount / 5000); amount -= (amount / 5000) * 5000;
" 千円:%d枚"
"五百円:%d枚"
" 百円:%d枚"
"五十円:%d枚"
" 十円:%d枚"
" 五円:%d枚"
" 一円:%d枚"
481デフォルトの名無しさん:2010/09/30(木) 18:49:52
二千円札様を無視すんじゃねえ!!!
482479:2010/09/30(木) 18:52:27
いや、でも二千円札の指示はなかったので入れないほうがいいと思います
483デフォルトの名無しさん:2010/09/30(木) 19:18:36
二十円金貨っていうのがあってだな
484デフォルトの名無しさん:2010/09/30(木) 19:37:49
なんで、お釣りで万札が帰ってるんだ?
485デフォルトの名無しさん:2010/09/30(木) 19:47:25
10万円金貨で払ったから
486デフォルトの名無しさん:2010/09/30(木) 20:28:53
小切手
487デフォルトの名無しさん:2010/09/30(木) 20:32:14
>>486
白紙で渡して、釣りはいらないって言うのが、ダンディw
488デフォルトの名無しさん:2010/10/01(金) 10:05:41
>>487
それおかしいってw
白紙で渡して、好きな金額書けって言うのが普通だろ。
489デフォルトの名無しさん:2010/10/01(金) 11:14:40
千の位が2ならば二千円札を渡すのが、喜ばれる
490デフォルトの名無しさん:2010/10/01(金) 11:40:13
二千円札見たことすらないんだが…。
491デフォルトの名無しさん:2010/10/01(金) 11:59:46
沖縄に行けば見られるよ
492デフォルトの名無しさん:2010/10/01(金) 15:02:04
ところで479は480のヒントで解決できたのかな?
493デフォルトの名無しさん:2010/10/01(金) 15:09:44
コンビニのATMで引き出した時に2千円札ばかりが出てきたことが・・・
すぐに使ったのは言うまでも無い。
494479:2010/10/01(金) 16:35:49
返信遅れてすみません
自分c言語はよくわからないもので・・・
差し支えなければint mainのほうも書いていただけませんか?
495デフォルトの名無しさん:2010/10/01(金) 16:44:57
そのくらいは教科書見るなり先生に聞くなり友達に聞くなりしてくれ
496デフォルトの名無しさん:2010/10/01(金) 17:22:04
>>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 ;
}
497デフォルトの名無しさん:2010/10/01(金) 17:30:09
なんでわざわざ煙に巻くような書き方するんだw
498デフォルトの名無しさん:2010/10/01(金) 17:45:17
>>494
>>498をベースに簡略化
http://ideone.com/wUeSA
499デフォルトの名無しさん:2010/10/02(土) 01:14:37
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク)
実数の変数を小数点第一位で四捨五入しなさい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
 [3.3] 言語: C++
[4] 期限:日曜日12時まで
500デフォルトの名無しさん:2010/10/02(土) 01:17:33
int a = (int)(double_value + 0.5);
501デフォルトの名無しさん:2010/10/02(土) 01:25:17
>>500
あの、すみません、それだとintで扱かえる範囲しか駄目なんじゃないですか?
502デフォルトの名無しさん:2010/10/02(土) 01:26:51
>>500
一応突っ込んどくけど、値がマイナスの時それでいいの?
503デフォルトの名無しさん:2010/10/02(土) 01:28:23
>>500
エラーと出力されるんですが
504デフォルトの名無しさん:2010/10/02(土) 01:28:43
>>501
結果も実数が欲しいなら floor() でも使えば?
505デフォルトの名無しさん:2010/10/02(土) 01:39:14
負の数の四捨五入ってどうなるのが正しいんだ
506デフォルトの名無しさん:2010/10/02(土) 01:53:40
[1] 授業単元:プログラム総合
[2] 問題文(含コード&リンク)
並列に接続した3つの抵抗の合成抵抗を求める。さらに、その両端に電圧V0を印加されたときに流れる電流を2通り
(全体に流れる電流、3つの抵抗それぞれに流れる電流)求めるプログラムを作れ
また変数は実数型とすること

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
 [3.3] 言語: C++
[4] 期限:今日の5時まで
507 ◆QZaw55cn4c :2010/10/02(土) 02:13:18
508デフォルトの名無しさん:2010/10/02(土) 02:46:41
>>507
#include <stdio.h>
int main(void){

でお願いします。
509デフォルトの名無しさん:2010/10/02(土) 02:49:03
[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を用いてユーザ定義型として設定する
510 ◆QZaw55cn4c :2010/10/02(土) 02:58:29
511デフォルトの名無しさん:2010/10/02(土) 03:00:51
#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;
}
512デフォルトの名無しさん:2010/10/02(土) 03:08:32
>>511
ありがとうございます!
513デフォルトの名無しさん:2010/10/02(土) 03:09:10
>>510
ごめんなさい!重要なことを間違えてました。

2通り⇒全体の電流と3つの抵抗に流れるそれぞれの電流(ia,ib,ic)を求めよ

です。ごめんなさい!
514 ◆QZaw55cn4c :2010/10/02(土) 03:17:41
515デフォルトの名無しさん:2010/10/02(土) 03:23:31
>>509
この構造体を配列化し、いくつかの商品を格納できるように
するにはどこを変えればいいのでしょうか?
お願いします。
516 ◆QZaw55cn4c :2010/10/02(土) 03:24:54
>>506
>>513
それともこういう意味ですか?
http://codepad.org/y1DtdvkV
517515: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を変えていけばいいのでしょうか?
518デフォルトの名無しさん:2010/10/02(土) 03:32:51
#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;
}
519デフォルトの名無しさん:2010/10/02(土) 03:37:48
>>516
おお!これです
ありがとうございます!
520デフォルトの名無しさん:2010/10/02(土) 03:50:07
>>518
ありがとうございます!
521デフォルトの名無しさん:2010/10/02(土) 04:08:53
[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関数の利用が
考えられる。
522521: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から読み込みさらに大文字に変換する
というのが基本です。
お願いします!
523デフォルトの名無しさん:2010/10/02(土) 12:45:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
入力された2つの行列の積算を行い、結果を示せ。
1.行列の行、列数の入力を求める
2.2つの行列の積算
3.行列として結果を表示
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限:特になし

よろしくお願いします。
524デフォルトの名無しさん:2010/10/02(土) 16:32:55
>>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 ;
}
525デフォルトの名無しさん:2010/10/02(土) 18:42:26
526デフォルトの名無しさん:2010/10/02(土) 19:00:09
>>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;
}
527デフォルトの名無しさん:2010/10/03(日) 00:00:59
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):ルートについて、ニュートンラプソン方で解き、
何回演算を繰り返せば値が収束するか確認する。複数の値を入れて、組み込み関数である
sqrt関数との比較をする。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: [2010年10月4日まで]
[5] その他の制限:特になし
よろしくお願いします。
528デフォルトの名無しさん:2010/10/03(日) 01:34:25
>>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 ;
}
529デフォルトの名無しさん:2010/10/03(日) 13:04:32
>>526
これはC言語なのでしょうか?
自分には理解できません><
530デフォルトの名無しさん:2010/10/03(日) 13:35:48
>>529
C で記述されたプログラムから、system() 関数を使って、外部コマンド sed, perl を呼び出しています。
実際の作業は sed, perl が行っています。実行時には sed や perl がインストールしてあり、それらにパスが通っている必要があります。
また、内容を把握するためには sed や perl でのスクリプトの記述方法を知っていなければなりません。
異論はあるでしょうけれども、sed, perl はプログラム言語界隈では広く知られているとしていいと思います。

まあ、このスレならではの、ネタ的解法でしょう。まじめに受け取っては、あー、いけません。
531デフォルトの名無しさん:2010/10/03(日) 13:38:24
>sed, perl はプログラム言語界隈では広く知られているとしていいと思います。
願望を教えるなよ・・・
532デフォルトの名無しさん:2010/10/03(日) 13:40:42
system("echo (笑)");
533デフォルトの名無しさん:2010/10/03(日) 16:38:32
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;
}

535デフォルトの名無しさん:2010/10/03(日) 20:54:43
>>534
double *in[8] = {0,0,0,0,0,0,0,0};
↑わざわざポインタの配列にする意味がわからない

*in[2] = 1;
↑アドレスの0番地に1を書き込む超危険な処理
536デフォルトの名無しさん:2010/10/03(日) 20:57:02
これで
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;
}
537デフォルトの名無しさん:2010/10/03(日) 21:37:52
次の面白クイズちょうだい
538デフォルトの名無しさん:2010/10/03(日) 21:57:16
ランダムで1万分の1の確率で真とするにはどうすればいいですか?
539デフォルトの名無しさん:2010/10/03(日) 22:00:00
return (rand() % 9999) == 0
540釣りですた:2010/10/03(日) 22:03:15
>>539
それだとRAND_MAXが32767だったら
27%以下になる確率がそれ以上より高くなりますよね?
541デフォルトの名無しさん:2010/10/03(日) 22:05:12
>>540
while((x=rand())>=30000);
return x%10000;
542デフォルトの名無しさん:2010/10/03(日) 22:05:34
>>539
rand() % 10000
ではないか?
あと、rand() の剰余をとるのはお勧めでないうんぬんかんぬん。
http://www.kouno.jp/home/c_faq/c13.html#16
543デフォルトの名無しさん:2010/10/03(日) 22:06:32
たまにはRAND_MAXのことも思い出してあげてください
544デフォルトの名無しさん:2010/10/03(日) 22:07:27
>>535-536
ありがとうございます
545デフォルトの名無しさん:2010/10/04(月) 06:53:20
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク)
コンソール画面の中央付近に一個の星印を表示するプログラムを作れ。
ただし、背景には何も表示させないこと

[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:4日の15時まで
[5] その他の制限: 配列のみで作成しろのことです。
急なものですがよろしくおねがいします。
546デフォルトの名無しさん:2010/10/04(月) 10:43:45
配列のみ?
547デフォルトの名無しさん:2010/10/04(月) 15:00:26
背景に何も表示させないってわざわざ条件付けてある所が意味深だな。
548デフォルトの名無しさん:2010/10/04(月) 15:04:48
cursesライブラリの出番か?
549デフォルトの名無しさん:2010/10/04(月) 15:16:09
中央付近に1個の星印って




           ☆





でいいのか?それとも↓みたいなのか?

           *
           * *
          *  *
          *   *
         *    *
 * * * * * * * * * * * * * * * * *
   *    *      *    *
     *  *       *  *
       *        *
       * *      * *
      *   *   *   *
      *     **     *
     *    *   *    *
     *   *      *   *
    *  *         *  *
    * *             * *
   *                *
550デフォルトの名無しさん:2010/10/04(月) 15:20:36
>>549 上の星1つのは見た瞬間吹いたw
551デフォルトの名無しさん:2010/10/04(月) 15:32:06



                    *
552デフォルトの名無しさん:2010/10/04(月) 15:34:11
  *
  ***
*********
 *****
*** ***
**   **
*    *
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...
555デフォルトの名無しさん:2010/10/04(月) 16:02:42
UNIX/gcc だとまだエスケープシーケンスって使えるの?
556デフォルトの名無しさん:2010/10/04(月) 16:12:10
>>555
端末エミュレータに依存
557デフォルトの名無しさん:2010/10/04(月) 16:20:50
545の者です。 549の方の上の奴でいいと思います。
15時までとなっていますが時間は無しでお願いします。
558デフォルトの名無しさん :2010/10/04(月) 16:56:49
[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関数は勉強中
任意の数を入力して答えがわからないといけません。

テストに出るらしいのでお願いします。
559デフォルトの名無しさん:2010/10/04(月) 17:02:46
>>558
これたらい回し関数じゃん
答えが出ないほどスタックを深く使っちゃった場合どうするの?
560デフォルトの名無しさん:2010/10/04(月) 17:04:38
561デフォルトの名無しさん:2010/10/04(月) 17:18:15
>>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));
}
562デフォルトの名無しさん :2010/10/04(月) 17:22:04
>>559
そこまで複雑な数字を代入しないのではないのかと思われます。

>>560
ありがとうございます。
563デフォルトの名無しさん:2010/10/04(月) 17:31:44
>>553
無事実行出来ました。 ありがとうございます。
564デフォルトの名無しさん:2010/10/04(月) 17:37:32
>>562
例えばx=120,y=100,z=140を入れてご覧
なかなか答えが出てこないっしょ
565デフォルトの名無しさん:2010/10/04(月) 18:33:39
こうやると再帰呼び出しの回数が劇的に減って速い
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)];
}
}
566デフォルトの名無しさん:2010/10/04(月) 18:43:50
>>565
でも、それじゃ宿題としては零点・失格だろ。
それをCで実現しなければな
567デフォルトの名無しさん:2010/10/04(月) 19:01:18
>>566
うん
単に結果を確かめたかっただけ
C++だし0点だね
宿題は>>561で出せばいいと思う
568デフォルトの名無しさん :2010/10/04(月) 19:26:55
>>561
実行に手間取りましたが、動きました。
ありがとうございました。

>>564
パソコンが止まりました。

>>555
>>567
C言語ではなかったのですか。ありがとうございました。

>>556
そうなると思われます。C言語でという授業なので。
569デフォルトの名無しさん:2010/10/04(月) 19:45:09
>>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;
}
570デフォルトの名無しさん:2010/10/04(月) 19:55:13
>>568
x=120,y=100,z=140の時はスタックオーバーフローしてるか計算に時間が掛かりすぎて
いるかのどちらかだな
どちらか見極めるにはスタックが無くなりそうになったら警告を出すようにしておけばわかる

それとstd::mapはC++だしstd::tupleに至ってはC++0xの範疇でしかもまだ標準化されて
いない

ただこういうテクを使えば時間がかかる計算も結果を見る事が出来る事がある
Haskellのような遅延評価機能を備えた言語なら何もしなくても結果がすぐ出てくる
かもしれない
571デフォルトの名無しさん:2010/10/04(月) 23:49:26
[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日まで

よろしくお願いします。
572デフォルトの名無しさん:2010/10/04(月) 23:54:58
#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;
}
573デフォルトの名無しさん:2010/10/04(月) 23:59:48
もっと面白クイズちょうだい
574デフォルトの名無しさん:2010/10/05(火) 15:10:52
上は洪水で下は大火事、これは何?
575デフォルトの名無しさん:2010/10/05(火) 15:14:28
top(flood);
under(large_fire):
576デフォルトの名無しさん:2010/10/05(火) 15:42:42
大惨事だな
577デフォルトの名無しさん:2010/10/05(火) 15:57:03
上は木彫り職人、下はゴミ捨て場、これは何?
578デフォルトの名無しさん:2010/10/05(火) 16:33:41
シャーペンしか使ったことないし
579デフォルトの名無しさん:2010/10/05(火) 17:29:56
その内、メモもノートもPCのみの時代で、キーをタッチしたことしかないとか
言い出す時代が来るのか・・・
580デフォルトの名無しさん:2010/10/05(火) 18:35:53
脳内ソースでコンパイル
581デフォルトの名無しさん:2010/10/05(火) 18:50:02
そのうち頭に通信モジュールを内蔵しクラスタを組むユビキタス社会になるよ。
582デフォルトの名無しさん:2010/10/05(火) 19:06:07
[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日まで

よろしくお願いします。
583デフォルトの名無しさん:2010/10/05(火) 19:24:04
>>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 );
584デフォルトの名無しさん:2010/10/05(火) 19:36:39
>>572
ありがとうございます。
585デフォルトの名無しさん:2010/10/05(火) 19:53:12
>>583
ありがとうございます。
586デフォルトの名無しさん:2010/10/06(水) 06:35:33
[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])でお願いします。



587デフォルトの名無しさん:2010/10/06(水) 06:41:11
上下を入れ替えて左右を入れ替える
588デフォルトの名無しさん:2010/10/06(水) 09:45:12
>>586
ビットマップの読み込みは自前でやるの?
Win32API使っていいの?
589デフォルトの名無しさん:2010/10/06(水) 10:36:21
>>588
自前でお願いできませんか?
590デフォルトの名無しさん:2010/10/06(水) 12:47:51
ビットマップと言っても24bitとか32bitとか8bitのパレット形式とか色々種類があるんだけど全部に対応するの
591デフォルトの名無しさん:2010/10/06(水) 12:53:21
圧縮も色んな形式認めてるし
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] その他の制限:特になし

よろしくお願いします
593デフォルトの名無しさん:2010/10/06(水) 17:15:04
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0109&lang=jp
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC8.0
 [3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: なし

おねがいします
594デフォルトの名無しさん:2010/10/06(水) 17:20:43
>>586
やや手抜き
180度回転じゃなくてあくまでぶった切って並び替えでいいんだよね?

○未圧縮Windowsビットマップ(16bit,24bit,32bit)のみ対応
×256色以下パレットビットマップ未対応
×OS/2ビットマップ未対応

http://codepad.org/CBkBGpSx
595デフォルトの名無しさん:2010/10/06(水) 22:18:59
>8000桁以内の10進数
...って何ビットなんだろ.....
596デフォルトの名無しさん:2010/10/06(水) 22:23:39
もはや値を文字列として扱う
597デフォルトの名無しさん:2010/10/06(水) 22:28:57
>>593
会津かい?
シリコンバレー構想とかは上手く進んでいるかい?
レスしてくれたら回答したげる。
598デフォルトの名無しさん:2010/10/06(水) 22:52:10
戊辰戦争ェ
599 ◆QZaw55cn4c :2010/10/06(水) 23:15:12
>>592
8->10: http://codepad.org/JJ6lUm1b
10->16: http://codepad.org/jpNvFMtH
申し訳ありませんが、8000 桁の数では試していません。20 桁くらいまでならうまくいっているようですが。
600デフォルトの名無しさん:2010/10/06(水) 23:58:51
>>592
先を越されたがせっかく作ったのでうp
http://codepad.org/Y34MfqZn
入力処理は自分でやってね
601 ◆QZaw55cn4c :2010/10/06(水) 23:59:34
602デフォルトの名無しさん:2010/10/07(木) 01:19:10
>>593
http://codepad.org/UlD7yvgh

先越された。
603デフォルトの名無しさん:2010/10/07(木) 01:45:54
>>594
ありがとうございます
604デフォルトの名無しさん:2010/10/07(木) 03:29:52
クソースでおじゃるか?クイッ・クソートでおじゃる
605デフォルトの名無しさん:2010/10/07(木) 15:57:20
[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のソート法とデータ数からソートが完了する
最悪処理回数を求めるものだとエスパー
607デフォルトの名無しさん:2010/10/07(木) 16:28:40
エスパーすると
32行に収めるために本当は切っちゃ行けない部分を自分で勝手に省略してないか?
608デフォルトの名無しさん:2010/10/07(木) 16:39:30
時間を計ってソートの効率を比較したいんじゃないの?
609デフォルトの名無しさん:2010/10/07(木) 22:31:07
>>528
レス遅れました。
ありがとうございます。
本当に困ってたので助かりました。
610デフォルトの名無しさん:2010/10/08(金) 13:33:40
>>599>>600
お二方有難うございました
早速やってみます
611ken: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 行を指定したと扱う)。
・入力された整数(行数)が、不正の(整数でない)場合の動作は、保証されなくてよい。
612ken:2010/10/08(金) 18:46:43
K&RのCでお願いします
613デフォルトの名無しさん:2010/10/08(金) 18:55:35
やけに古い基準を出してきたな
614デフォルトの名無しさん:2010/10/08(金) 19:03:39
質問テンプレ無視してんだから、こっちも無視でいいよ
615 ◆QZaw55cn4c :2010/10/08(金) 20:06:45
616デフォルトの名無しさん:2010/10/08(金) 20:09:27
>>604
http://www.unkar.org/read/pc11.2ch.net/tech/1208268461
C/C++の宿題を片付けます 105代目

197 :デフォルトの名無しさん[sage]:2008/04/21(月) 08:44:35
EOFがキーボードから入力できないとしても、どのファイルには
ファイルの終わりを意味するEOFコードが記録されていますし
それを入力受付として使うことも可能ですが何か?w
これだから初心者、素人は・・・ナンバーサイン野郎の妄想に惑わされるなよ。
617デフォルトの名無しさん:2010/10/08(金) 20:19:22
>>616
>>382 解いてよ

ついでに
11 1 1 5
の答えも求めてみてね
618デフォルトの名無しさん:2010/10/09(土) 01:10:25
[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つと考える。
619デフォルトの名無しさん:2010/10/09(土) 01:11:57
[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] その他の制限:なし
620デフォルトの名無しさん:2010/10/09(土) 01:13:20
>>619
訂正

「1~1000」までのぞろ目 ⇒ 「10~1000までのぞろ目」
621デフォルトの名無しさん:2010/10/09(土) 01:45:19
>>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;
}
622デフォルトの名無しさん:2010/10/09(土) 01:51:39
>>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 ;
}
623デフォルトの名無しさん:2010/10/09(土) 01:59:49
>>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;
}
624デフォルトの名無しさん:2010/10/09(土) 02:32:29
>>619の<stdio.h>をお願いします。
625デフォルトの名無しさん:2010/10/09(土) 02:53:06
[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> とする
626デフォルトの名無しさん:2010/10/09(土) 02:57:26
C++なのにstdio.h?
627デフォルトの名無しさん:2010/10/09(土) 02:59:10
>>625
「エラトステネスのふるい」で検索するか、
アルゴリズム辞典を引け。
すぐ出てくる
628デフォルトの名無しさん:2010/10/09(土) 03:00:41
Cの授業なのにVC++を開発環境としてつかってるから言語をC++にしちゃう人多数
コンパイラ名がVC++になってて言語がC++って書いてあったらCで書くのが訓練された回答者
629デフォルトの名無しさん:2010/10/09(土) 03:00:47
>>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;
}
630デフォルトの名無しさん:2010/10/09(土) 03:08:31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10935.c
[3] 環境
 [3.1] OS: Win
 [3.2] コンパイラ名とバージョン: bcc5.5
 [3.3] 言語: C
[4] 期限: 2010年10月8日(過ぎたけど)

97行目辺りが違うんだろうけどよく分からん
読むの面倒なら新規で作ってくれても良いけど
4重ループになんかするな? 良いんだよ後で直すから…
631デフォルトの名無しさん:2010/10/09(土) 04:02:30
こういうのは再帰使うのが普通じゃね?
632デフォルトの名無しさん:2010/10/09(土) 04:14:55
>>629
できれば、配列とflagを用いたタイプもお願いします。

それから>>619の<stdio.h>をお願いしますm(--)m
633デフォルトの名無しさん:2010/10/09(土) 04:27:22
[1]C言語中級
[2]指定されたフロー構造に基づき次の仕様のプログラムを作成せよ
仕様:
★行とは、先頭か最後の区切り子からその次の区切り子までの区切り子を含まない文字列のこと
ただしその次の区切り子が出現しないまま終端した場合は最後の文字列まで
★区切り子とは、改行文字(0x0A) 復改文字(0x0D),その組み合わせ(0x0D0x0A,0x0A0x0D)のいずれかと
する(混在することを前提)
★標準入力から任意の長さの文字列を読み取り各行の空白スペースを除く先頭が0〜9からなる
文字列(これをキー数列と呼ぶ)でその直後が空白、タブで区切られている場合に限りその行を認識する。
それ以外の形式の場合は認識せず無視する。キー数列の長さが1024を超える場合も無視対象とする。
★認識した行はキー数列を10進数の正整数を表すものとして、その順序(小さい順)に
整列して出力する
フロー構造
main関数のみで構成。ライブラリ関数はstdio.hで定義されている関数のみを利用可能とする。
当然だが記憶領域はキー数列を記憶する領域の3倍程度しか確保できないことを前提
[3] FreeBSD上でC言語で記述しgccコンパイラで処理する。
[4] 10/10迄
634デフォルトの名無しさん:2010/10/09(土) 05:11:00
635デフォルトの名無しさん:2010/10/09(土) 05:29:53
>>634
ありがとうございます!

何度もすいませんが>>619の<stdio.h>を
使用したverをどなたかお願いします。
636デフォルトの名無しさん:2010/10/09(土) 05:47:17
637デフォルトの名無しさん:2010/10/09(土) 05:50:03
>>636
ありがとうございます!
638デフォルトの名無しさん:2010/10/09(土) 06:54:57
>>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;
}
639デフォルトの名無しさん:2010/10/09(土) 08:37:26
>>633
先頭が数字でそのあとは文字でもよいのかなと思ってよむと、そうではなくて、全部数字でないと
いけないらしい。ここの部分は出題の文として適切でないから書き直した方がいい。
640デフォルトの名無しさん:2010/10/09(土) 09:05:20
>空白スペースを除く先頭が0〜9からなる
>文字列(これをキー数列と呼ぶ)でその直後が空白、タブで区切られている場合に限りその行を認識する

12345
;おk↑
ABCDE 12345 ABCDE
;NG↑ 当然
12345 ABCDE 12345
;おk↑
12345
;NG ↑末尾に直に改行がある 但しOKとすると仕様違反ではあるがPGの本質には影響しないと思われ
641デフォルトの名無しさん:2010/10/09(土) 13:49:39
[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デフォルトの名無しさん:2010/10/09(土) 16:45:01
なんかプログラムでやるより普通に解いた方が早そうなんだが…
644デフォルトの名無しさん:2010/10/09(土) 17:00:47
>>643
っ twelve+twenty=answer
645デフォルトの名無しさん:2010/10/09(土) 17:06:39
646デフォルトの名無しさん:2010/10/09(土) 17:09:39
>>644
407927 + 407146 = 815073
647642:2010/10/09(土) 17:14:52
プログラムで解くことになっているのでどなたかコードを作成して頂けませんか。
お願いします。
648デフォルトの名無しさん:2010/10/09(土) 17:38:04
1>リンコしています...
649デフォルトの名無しさん:2010/10/09(土) 17:42:06
[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] その他の制限:なし

少し長くなってしまいましたが、よろしくお願いします
650デフォルトの名無しさん:2010/10/09(土) 18:00:52
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デフォルトの名無しさん:2010/10/09(土) 18:12:34
そういう回答は、繰り返されるとつまらない
652デフォルトの名無しさん:2010/10/09(土) 18:33:50
>>651
みんなが思ってることを書いても意味ないよ。
653デフォルトの名無しさん:2010/10/09(土) 18:58:27
>>651
こいつリアルでKYだなと思うよな
654デフォルトの名無しさん:2010/10/09(土) 19:21:16
一発ネタを何度もくりかえしちゃう男の人って
655 ◆QZaw55cn4c :2010/10/09(土) 19:22:11
656 ◆QZaw55cn4c :2010/10/09(土) 20:29:52
657デフォルトの名無しさん:2010/10/09(土) 20:32:41
>>650
>if(argc != 3){ printf("Usage: filename data(yyyymmdd)\n", argv[0]); exit(1); }
?argv[0] ってなんだ?
658デフォルトの名無しさん:2010/10/09(土) 20:34:27
if(argc != 3){ printf("Usage:%s filename data(yyyymmdd)\n", argv[0]); exit(1); }
659デフォルトの名無しさん:2010/10/09(土) 20:37:25
>>641
申し訳ないのですが、行列の意味などをもう少し詳しく教えてください。
作業表、というのもなにか、授業で配布された資料などを張ってください。あるいは参考になる URL を教えてください。
660642:2010/10/09(土) 20:40:55
656さん、ありがとうございます。
661デフォルトの名無しさん:2010/10/09(土) 20:42:59
>>653
KY って何ですか?定義を教えてください。
662デフォルトの名無しさん:2010/10/09(土) 20:45:59
>>617
問題の意味がややこしいわりに、解けてもおもしろくなさそう、というか。
出力形式を無意味に複雑化して指定しているというか。

解かされるほうはお気の毒、というか。
663デフォルトの名無しさん:2010/10/09(土) 20:51:21
[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をインクルードすること。
664デフォルトの名無しさん:2010/10/09(土) 20:56:24
>>662
解いてみるといいよ
ちょっと不思議なことになってるから
665 ◆QZaw55cn4c :2010/10/09(土) 21:04:07
666デフォルトの名無しさん:2010/10/09(土) 21:07:10
>>659
似たような問題の資料があったので貼っときます
一応直リンはまずいような気がしたのでDLして一部編集後上げ直しました
ttp://www.dotup.org/uploda/www.dotup.org1190352.zip.html
DL Pass:prog3bcc
日付が変わる頃には消します
667デフォルトの名無しさん:2010/10/09(土) 21:07:48
#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;
}
668デフォルトの名無しさん:2010/10/09(土) 21:20:08
>>667
ずれてる。
669663:2010/10/09(土) 21:21:57
665さん、ありがとうございます。
670デフォルトの名無しさん:2010/10/09(土) 21:28:28
>>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;
}
671デフォルトの名無しさん:2010/10/09(土) 21:34:11
>>667
ちょwww
ま、それでもいいんだけどw
672デフォルトの名無しさん:2010/10/09(土) 21:35:16
>>666
>>641 に書いてある入力・出力・作業表は、正しいものですか、それとも適当に書いたものですか。
>>641 の入力からすると、最短パスは 0 1 2 3 4 になると思われるのですが。
あと >>666 のどこを読めばいいか教えてください。
673デフォルトの名無しさん:2010/10/09(土) 21:36:41
>>671
いや、ぜんぜんよくない。sqrt(3) は 2.000 じゃない。
ネタを書くなら正確に。ハズしてしまっては笑えない。
674663:2010/10/09(土) 21:40:19
670さんもありがとうございます。
675デフォルトの名無しさん:2010/10/09(土) 21:41:12
>>672
入力が間違ってます…
>>666の問題5-1を教えて頂ければ後は自分でやってみようと思うのでそちらでお願いします
問題の説明としては第7-2節が該当するはずです

何度もお手間をおかけしてすみません
676デフォルトの名無しさん:2010/10/09(土) 21:42:58
いっとくけど俺は絶対にまともに解かないからな!
677デフォルトの名無しさん:2010/10/09(土) 21:55:57
[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をインクルードすること。
たくさん質問してすみません。
よろしくお願いします。
678677:2010/10/09(土) 21:59:07
レスしたものは表がずれてますので
+-----+-----+-----+-----+
の+に縦棒の位置が来るよう調整をお願いします
679デフォルトの名無しさん:2010/10/09(土) 22:19:12
>>677
右端の縦線はいらないのか?
680デフォルトの名無しさん:2010/10/09(土) 22:58:36
>>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 ;
}
681デフォルトの名無しさん:2010/10/09(土) 22:58:58
>>676
それはそれで結構なんだが、>>667>>663 の要求「平方根の値を表示する」を満たしていない。
>>667 では
sqrt(3) = 2.000 おかしい。ただしくは 1.732
sqrt(4) = 2.236 おかしい。ただしくは 2.000
...
ん、もしかして >>667 は平方根をしらない小学生なのだろうか?
682デフォルトの名無しさん:2010/10/09(土) 22:59:51
まともじゃないから意図した通りなんじゃね
683デフォルトの名無しさん: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 をかいても何も面白くない。それに間違っているし。
というか、手が遅いんだな、多分。
685デフォルトの名無しさん:2010/10/09(土) 23:15:43
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 をかいても何も面白くない。それに間違っているし。
というか、手が遅いんだな、多分。
687デフォルトの名無しさん:2010/10/09(土) 23:33:04
また例の長文野郎か。
ほんとに、まともな C コードも書けないは、ルートを知らないは、予想以上に低レベルだわ。
というか、数年間もこのレベルでとまっているのか?
688デフォルトの名無しさん:2010/10/09(土) 23:36:11
687 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/09(土) 23:33:04
また例の長文野郎か。
ほんとに、まともな C コードも書けないは、ルートを知らないは、予想以上に低レベルだわ。
というか、数年間もこのレベルでとまっているのか?
689デフォルトの名無しさん:2010/10/09(土) 23:37:30
>>687 っと、特定できない相手、見えない敵に被害妄想を受けて
意味不明なことを言っております
690デフォルトの名無しさん:2010/10/09(土) 23:40:12
というか、誰もが理解している事なのに敢えて
>>683 みたいなレスをするから基地外だと思われるんだよ。
>>683 のようなくだらない事に対して上から目線の無駄レスが荒れる原因。
このスレに長くいるなら、そんなこと気づいているだろ。学習能力のない
レベルが低くて停滞して、成長していないのは自分の方だと気づけよ。
691デフォルトの名無しさん:2010/10/09(土) 23:41:42
>>687 何あんた?あぁそうか、このスレで自分は他人より回答しているからって
こんなスレでネット弁慶をやっている、日ごろは現実世界でC言語の授業などで
指導をしていない引きこもりかw お前の視野、世界は狭いのぅw
692デフォルトの名無しさん:2010/10/09(土) 23:43:30
>>667みたいな冗談は前々からは普通にあったが・・・
周りが理解しているのに、いちいち下らないと口出しするような
言わないと気が済まない性分をどうにかしないと、口が災いになって
自らトラブルを招くぞ。スルーもできないようじゃ、2ちゃんにも向いてないぞ。
693デフォルトの名無しさん:2010/10/09(土) 23:44:17
なんで荒れてるん。もっと楽しもうよ。
694デフォルトの名無しさん:2010/10/09(土) 23:44:47
宿題丸投げスレで議論したがる奴は、首釣って死ね。マジ死ね
695デフォルトの名無しさん:2010/10/09(土) 23:47:02
>>641
>>675
提供資料の問題5-1 を解きました。
http://codepad.org/8GHlHWpa
696デフォルトの名無しさん:2010/10/09(土) 23:48:23
>>692
>>667 はジョークにもなっていない件について。
697デフォルトの名無しさん:2010/10/09(土) 23:48:36
見えない敵相手に、確認もできずに言い掛かりをして
自分の方が低レベルでこのスレの新参だともバレて必死だなw
いつまでも下らないことに苛立ってムキになってろ。
どうせこのスレで自分は他人より回答しているというエゴだろ。
それこそくだらねぇ。
698デフォルトの名無しさん:2010/10/09(土) 23:53:43
>>667 はジョークにもなっていない件について。
699デフォルトの名無しさん:2010/10/09(土) 23:53:54
今まで何度も見たおふざけに反応したから茶化されたのに
自覚がないレス乞食ってキモイな。このスレに何年いるんだ?
700デフォルトの名無しさん:2010/10/09(土) 23:54:37
宿題丸投げスレで議論したがる奴は、首釣って死ね。マジ死ね
701デフォルトの名無しさん:2010/10/09(土) 23:54:45
>>667 はジョークにもなっていない件について。
702デフォルトの名無しさん:2010/10/09(土) 23:56:11
必死すぎて顔真っ赤w 見えない敵と戦う恥ずかしい戦士w
703デフォルトの名無しさん:2010/10/09(土) 23:56:23
>>667 はジョークにもなっていない件について。
704デフォルトの名無しさん:2010/10/09(土) 23:57:23
どうせISO準拠について説明されても、自分はそんなの認めない!って
ゴネた地方のド田舎者だろ。こいつじゃ2ちゃん慣れは無理。
地方の閉鎖的な習性丸出し。キモイ。
705デフォルトの名無しさん:2010/10/09(土) 23:57:35
>>667 はジョークにもなっていない件について。
706デフォルトの名無しさん:2010/10/09(土) 23:59:04
>>655
ありがとうございます!
707デフォルトの名無しさん:2010/10/10(日) 00:00:31
頭の固いやつだなwこのぐらいのお遊びは黙ってスルーしろよwww
708デフォルトの名無しさん:2010/10/10(日) 00:00:43
ぎゃはははははwwwwww こいつマジで顔真っ赤だよw
いつまでも気に入らないレスを見て、前に口論となった奴と
同一人物だと勘違いしてな。お前が言った奴と俺は別人だから。
709デフォルトの名無しさん:2010/10/10(日) 00:00:47
>>667 はジョークにもなっていない件について。
710デフォルトの名無しさん:2010/10/10(日) 00:06:16
>>695
ありがとうございました
>>666削除
711デフォルトの名無しさん:2010/10/10(日) 00:12:24
>>708
書き込まれた内容が、どうみても別人には思えない件について。
712デフォルトの名無しさん:2010/10/10(日) 00:12:24
このバカ自覚がないんだろうな。自分の方から喧嘩を売って
口論になっているのに、口論になる奴はいつもあいつと
特定した気になって、見えない敵と罵倒し合う愚かさ。
だから2ちゃんには向いてないって言ってんだよ。
不特定多数の人が閲覧、書き込み可能な場所なんだが???
まさか、閉鎖的な、特定の人物しか見てないとでも?
だとしたら宿題の質問者も限定されるだろw
713デフォルトの名無しさん:2010/10/10(日) 00:19:36
お前こそだれと戦ってるの?
714デフォルトの名無しさん:2010/10/10(日) 00:20:18
>>712
宿題丸投げスレで議論したがる奴は、首釣って死ね。マジ死ね
715デフォルトの名無しさん:2010/10/10(日) 00:22:06
顔真っ赤にして見えない敵と戦う恥ずかしい戦士
716デフォルトの名無しさん:2010/10/10(日) 00:27:04
自分のことを自分で言ってしかも全然気づいていない件について
717デフォルトの名無しさん:2010/10/10(日) 00:28:14
     _____
   /::::::::::::::::::::::::::\〜プーン
  /:::::::::::::::::::::::::::::::::::::::\〜プーン
  |:::::::::::::;;;;;;|_|_|_|_|〜プーン
  |;;;;;;;;;;ノ∪  \,) ,,/ ヽ〜
  |::( 6∪ ー─◎─◎ )〜        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |ノ  (∵∴ ( o o)∴)〜      < 長文野郎だな!お前ムカつくんだよ!
  | ∪< ∵∵   3 ∵> ムッキー!    \_____________________
  \        ⌒ ノ_____
    \_____/ |  | ̄ ̄\ \
___/      \   |  |    | ̄ ̄|
|:::::::/  \___ | \|  |    |__|
|:::::::| \____|つ⊂|__|__/ /
|:::::/        | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
718デフォルトの名無しさん:2010/10/10(日) 00:30:40
>>716 だからお前のことだろ、前に口論した奴と同一人物だと勘違いして
誰それ構わず噛み付いてくるキモイ引きこもり。お前の粘着質はキモイ。陰険。
getchar()やint mainについても、誰と勘違いしたのか知らんが
公式文書、文献を用いた説明をしても信じようとしないし。ド田舎者丸出し。
恥ずかしいから失せろ。2ちゃんに向いてないよ、あんた。
719デフォルトの名無しさん:2010/10/10(日) 00:30:47
でたでた。いつものAAがでた。
720デフォルトの名無しさん:2010/10/10(日) 00:34:13
何かこのスレに常駐していて自分がベテランだと勘違いしているバカがいますねw
お前みたいなのは人類の中でも無名で雑魚だから、せいぜい粋がれる場所で
偉そうに生きてな。どうせ納税額もちっぽけの雑魚だろw
家は年間何百万も法人税を納めているし、年商1億以上だが
多分お前よりは上。
721デフォルトの名無しさん:2010/10/10(日) 00:37:31
月収 100 万じゃないのか?
722デフォルトの名無しさん:2010/10/10(日) 00:46:04
 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>
723デフォルトの名無しさん:2010/10/10(日) 00:49:01
このスレに何しに来てんの、あんた?自分の腕を見せつけたい訳?
分かりきった答え、初歩的な問題を解いたくらいで偉そうにしているようじゃ
たかが知れている。どっちがレベルが低いか、自覚しろ、ボケ老人。
724デフォルトの名無しさん:2010/10/10(日) 01:02:31
>家は年間何百万も法人税を
自分が納めているわけではないのですね。
学校にいっていない?ひきこもり?大検という手もあるからがんばってね。
725デフォルトの名無しさん:2010/10/10(日) 01:06:51
>>712
>自分の方から喧嘩を売って口論になっているのに、
そのとおり。>>667 のような馬鹿をあぶりだして楽しんでいるのです。
726デフォルトの名無しさん:2010/10/10(日) 01:12:12
基地外、基地外、基地外だ、わっしょい
727695 ◆QZaw55cn4c :2010/10/10(日) 01:17:29
>>641
>>710
すみません。コードがちがっておりました。
正しくはこちらです。結果もこちらの方が正しいです。
http://codepad.org/vqWvDHyl
728デフォルトの名無しさん:2010/10/10(日) 01:22:31
[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] その他の制限:なし

プログラムを作れというより、ある一定の答えを出せという形の問題ですがよろしくお願いします
729 ◆QZaw55cn4c :2010/10/10(日) 01:38:36
730デフォルトの名無しさん:2010/10/10(日) 02:05:04
>>729
ありがとうございます!
731デフォルトの名無しさん:2010/10/10(日) 10:07:48
http://hibari.2ch.net/test/read.cgi/tech/1284632294/720
>家は年間何百万も法人税を
自分が納めているわけではないのですね。
学校にいっていない?ひきこもり?大検という手もあるからがんばってね。
732デフォルトの名無しさん:2010/10/10(日) 11:58:32
>>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で初期化するのか?おまじない、なら、いらない。
733デフォルトの名無しさん:2010/10/10(日) 12:01:33
コンパイラのデータフロー解析が未熟で、未初期化変数の使用をを検出出来なかった頃、
変数宣言で必ず初期化というコーディングルールは存在した。
734677:2010/10/10(日) 12:09:35
レス遅れましたが、680さん、ありがとうございます。
735デフォルトの名無しさん:2010/10/10(日) 12:11:42
>>733
ちょっと歴史的感覚の上で矛盾を覚える。
auto 変数宣言で初期化も同時にできるようになったのは、K&R2 以降から。

そのころにもなって、コンパイラがお馬鹿だったとは違和感を感じる。
それは static 変数を必ず初期化する、というコーディングルールでは?
736デフォルトの名無しさん:2010/10/10(日) 14:16:21
小数点以下2桁までしか求められてないのにのに倍精度小数つかう必要あるの?
と思ってしまう俺は超特殊環境で仕事してるんだなぁ
最近は普通に富豪プログラミングができていいやね
737デフォルトの名無しさん:2010/10/10(日) 14:28:21
>>736
どっちみち printf() にわたるときに倍精度に変換されてしまう。printf() を使うのなら最初から倍精度で書けばいいだけなのでは?
環境が単精度を要求するのなら、それはそれで別のお話。cuda 関係の方ですか?
738デフォルトの名無しさん:2010/10/10(日) 14:58:21
>>737
なんか最近知った知識をひけらかしたいだけのように見える
ちょっと前までprintfで%lfとかやっててた人ですか?
739デフォルトの名無しさん:2010/10/10(日) 15:09:29
[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の正方向として解くこと
よろしくお願いします。
740デフォルトの名無しさん:2010/10/10(日) 15:11:42
なんでもいいから無料コンパイラ入れろ
741デフォルトの名無しさん:2010/10/10(日) 15:24:51
>>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 ;
}
742 ◆QZaw55cn4c :2010/10/10(日) 15:31:06
>>739
http://codepad.org/RoZyzN7R
>>738
いや、そういう意図はありません。
cuda とか ati stream とかはいずれやってみたいと思っているので、つい願望が文面に表れてしまいました。お気にさわれば大変失礼いたしました。
743デフォルトの名無しさん:2010/10/10(日) 15:34:42
>>732はただのイチャモンでしかないな
744デフォルトの名無しさん:2010/10/10(日) 15:39:24
>>743
まあそういわれればそうかも。
745デフォルトの名無しさん:2010/10/10(日) 15:41:46
πが90°の世界ってどこにあるんだろう
746デフォルトの名無しさん:2010/10/10(日) 15:44:56
>>745
kwsk
747デフォルトの名無しさん:2010/10/10(日) 15:47:50
741,742さん、解いていただいて申し訳ないのですが、点の数が足りないです
15度刻みで点をプロットすると、25個の点になるはずなのでどなたか訂正していただけませんか
説明不足でしたね。お手数かけてしまってすみません
748デフォルトの名無しさん:2010/10/10(日) 15:49:03
たまに自分より速くでた回答に対して妙ないちゃもんつける人いるよね
そんなに自分が一番じゃないと気がすまないのか
749デフォルトの名無しさん:2010/10/10(日) 15:49:47
>>745
ご指摘感謝。

>>739
15度刻みになっていませんでした。以下に訂正いたします。
http://codepad.org/9kHPbr1S
750デフォルトの名無しさん:2010/10/10(日) 15:50:35
>>741は25個出ると思うけど
751デフォルトの名無しさん:2010/10/10(日) 15:51:59
>>741が25個以外になる要素がみあたらない
752 ◆QZaw55cn4c :2010/10/10(日) 15:52:12
>>748
いや、その気持ちわからないでもないです。先に回答があるとやっぱり悔しいです。
手が速い、というのは、それはそれでひとつの才能だと思うのです。
753747:2010/10/10(日) 15:54:38
ごめんなさい、741さんのは点が25個出てきました。
勘違いしていたようです。すみませんでした。
754デフォルトの名無しさん:2010/10/10(日) 15:57:13
点が25個でていないのは >>742、ということでお願いします。
訂正を >>749 に入れておきました。ごめんなさい。
755デフォルトの名無しさん:2010/10/10(日) 15:58:33
◆QZaw55cn4cは煽るときはトリップ外すのか
>>752でトリップはずし忘れてるのが笑える
756デフォルトの名無しさん:2010/10/10(日) 15:59:25
後だしでどうでもいいようなところを少しいじっただけのを出すのもどうかと思うけどな
757デフォルトの名無しさん:2010/10/10(日) 16:04:49
>>755
むしろトリップつけ忘れが多いと思います。 >>695 とか。
煽る対象は限定しているつもりです。もう徹底的にやります。自分でも狂っているとも思いますが。

>>756
すみませぬ。
758デフォルトの名無しさん:2010/10/10(日) 16:06:43
今のインテル・AMD CPUではdoubleとfloatで演算速度って違うの?
759デフォルトの名無しさん:2010/10/10(日) 16:08:12
>>758
未最適化状態だと違う場合もあう
最適化かければ一緒になる
760デフォルトの名無しさん:2010/10/10(日) 16:11:52
[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の正方向として解くこと。
線の上を*が通る場合は|ではなく*を表示するようにすること。
よろしくお願いします。
761デフォルトの名無しさん:2010/10/10(日) 16:13:00
今でも3Dとかで計算量滅茶苦茶多いとdoubleとfloatで速度全然違うとか聞いたけど、
騙されたのか?
762デフォルトの名無しさん:2010/10/10(日) 16:14:57
>>737
>printf() にわたるときに倍精度に変換
これってprintf()の仕様?

組み込み系CPUの場合なんかだと倍精度に変換となると大変な変換に
なる場合あると思うけど。
763739:2010/10/10(日) 16:17:24
先ほどの問題のお礼忘れました。解いてくださった方、ありがとうございます。
764デフォルトの名無しさん:2010/10/10(日) 16:20:14
短期間で何問も聞くならテキストか何かにまとめて貼れよって思う
765デフォルトの名無しさん:2010/10/10(日) 16:20:57
floatとdoubleの違いとかって
doubleでBCCとVCで初期の精度フラグが違うからBCCのが遅いとか
floatだとSSE組み込み関数が使われるとか
x86だけでも処理系依存じゃね。
766760:2010/10/10(日) 16:25:13
>>764
それはどのようにすればいいのでしょうか。
767デフォルトの名無しさん:2010/10/10(日) 16:25:20
>>764
簡単な宿題丸投げする奴に、そんな難しいことは要求しないでね
768デフォルトの名無しさん:2010/10/10(日) 16:26:41
>>761
x86だと汎用レジスタは32ビットなので遅くなることがある
しかし今のCPUはSSEとかSSE2とか積んでるのでそれらを使うようにすればほとんど一緒

ただしGPUは倍精度小数の計算が非常に苦手なので
3D処理を行う計算は単精度を使うことが多いんじゃない?
769デフォルトの名無しさん:2010/10/10(日) 16:29:18
>>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;
}
770デフォルトの名無しさん:2010/10/10(日) 16:30:19
こんなところでする会話じゃないなw
速度なんて気にするようなプログラム無いだろここwwwww
771デフォルトの名無しさん:2010/10/10(日) 16:32:09
ですよね〜
まあ今のうちからそういうこと考え始めるってのは悪くないと思うけど
772デフォルトの名無しさん:2010/10/10(日) 16:33:41
SSE2だと1つの計算速度は変わらないけど
同時に計算できる量が2倍になる分、大量の計算をするときは単精度の方が有利なんじゃないの?
773デフォルトの名無しさん:2010/10/10(日) 16:36:15
速度は気にしないといいつつも
可読性を無視して命令数を減らすコード書く奴多くね?
短くまとめりゃ良いってもんでもないだろ
774760:2010/10/10(日) 16:46:46
769さん、ありがとうございます。
ただ、一番下の*が中心にきていないので訂正していただけるとありがたいです。
775デフォルトの名無しさん:2010/10/10(日) 16:59:13
>>774
>w = n + sin(M_PI * i / 180) * n;
w = n + (int)(sin(M_PI * i / 180) * n);
776774:2010/10/10(日) 17:01:46
>>775
ありがとうございます。
777デフォルトの名無しさん:2010/10/10(日) 17:12:25
[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] その他の制限:特に無し
よろしくお願いします。
778777:2010/10/10(日) 17:14:16
↑表がずれてしまいましたが、文字の大きさは半角で4文字ピッチです。
779デフォルトの名無しさん:2010/10/10(日) 17:30:42
>>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 ;
}
780デフォルトの名無しさん:2010/10/10(日) 17:39:14
>>779
ありがとうございます。助かります。
781デフォルトの名無しさん:2010/10/10(日) 17:51:42
>>779
printf() の %c に対して、printable かどうかを確かめずに c をそのまま渡しているのはいただけない。
#include <ctype.h>
printf("%4x%4d%4c\n", c, c, (isprint(c)) ? c : '.');
くらいのガードは必要だと思う。
782デフォルトの名無しさん:2010/10/10(日) 17:53:03
>>762
C の仕様。
ISO/IEC 9899:1999 6.5.2.2.6
783デフォルトの名無しさん:2010/10/10(日) 17:59:02
>>764
私は一問ごとに別々のほうがいいなあ。答えるのに便利。
質問するのに、それだけ手間かけている、という点もあって、好感度 up !!
784デフォルトの名無しさん:2010/10/10(日) 18:00:29
>>761
gpgpu, cuda 方面では、そういう話を聞きます。それはそういうことで納得できます。
785デフォルトの名無しさん:2010/10/10(日) 18:07:55
>>781
そいういう突っ込みは要らないから
786デフォルトの名無しさん:2010/10/10(日) 18:17:46
どうせまた◆QZaw55cn4cでしょ
787デフォルトの名無しさん:2010/10/10(日) 18:34:15
そのとおりです。でも間違ってないでしょう?
788デフォルトの名無しさん:2010/10/10(日) 18:34:52
こそこそしていてキモイ
789デフォルトの名無しさん:2010/10/10(日) 18:35:06
>>781
0x20から0x7eって書いてあるのにそんなこというやつがいるとはw
790デフォルトの名無しさん:2010/10/10(日) 18:36:41
0x20から0x7Eまでの文字コード表とある。
printable で無いものがあるのか?
791デフォルトの名無しさん:2010/10/10(日) 18:50:09
失礼。7f を勘定にいれてしまっていました。平にご容赦を。
792デフォルトの名無しさん:2010/10/10(日) 18:54:25
自分を自慢し褒めてもらいたがっている。 たいした男じゃないわ
793デフォルトの名無しさん:2010/10/10(日) 19:35:37
◆QZaw55cn4cって問題文をまともに読めないし、
他人への突っ込みもおかしいこと多いし、
後だしで必死にコードあげるしで、
誰かに良く似てるんだよなw
794デフォルトの名無しさん:2010/10/10(日) 19:52:53
回答者なら、◆QZaw55cn4cに回答を先に出されるようじゃだめだな
依頼者なら、回答してくれるならどんな奴でも良い奴だよな
795デフォルトの名無しさん:2010/10/10(日) 20:06:50
最近負けっぱなしだから◆QZaw55cn4cが暴れてるんじゃないの?
796デフォルトの名無しさん:2010/10/10(日) 20:08:23
[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文字ピッチです。
よろしくお願いします。
797 ◆QZaw55cn4c :2010/10/10(日) 20:17:57
798デフォルトの名無しさん:2010/10/10(日) 20:19:04
最近ideone君と◆QZaw55cn4cは自作自演なんじゃないかと思い始めて来た
799デフォルトの名無しさん:2010/10/10(日) 20:25:01
>>797
ありがとうございます。

>>798
いいえ、違います。まったくの別人です。
学校の課題がたくさん出たのですが、難しすぎて解けない(自分あんまり頭が良くない)ので
この掲示板の方に助けていただこうと思ってここを訪れているだけです。
800デフォルトの名無しさん:2010/10/10(日) 20:41:19
[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] その他の制限:
よろしくお願いします。
801デフォルトの名無しさん:2010/10/10(日) 21:16:34
802800:2010/10/10(日) 21:32:48
>>801
ありがとうございます。
803デフォルトの名無しさん:2010/10/10(日) 21:37:30
[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] その他の制限:
よろしくお願いします。
804803:2010/10/10(日) 21:38:51
付け足します。↑のプログラムは0以上の整数が入力されている限り入力を繰り返すものとします。
805デフォルトの名無しさん:2010/10/10(日) 21:48:53
コンパイラなんてタダで色々あるんだから入れとけよ
806 ◆QZaw55cn4c :2010/10/10(日) 21:52:48
>>803
http://ideone.com/bVNbZ
123 と入力すると
3+2+1=6
と逆順に表示されるのはご愛嬌というか、これで許してください。
807デフォルトの名無しさん:2010/10/10(日) 21:57:16
>>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;
}
808デフォルトの名無しさん:2010/10/10(日) 21:57:20
809デフォルトの名無しさん:2010/10/10(日) 22:01:20
>>806
なんでsumに足すのにc使わないでまた計算してんの?
810デフォルトの名無しさん:2010/10/10(日) 22:09:49
>>809
ご指摘感謝。たしかに無駄ですね。
>>803
以下に訂正いたします。
http://codepad.org/34rJpmkB
811デフォルトの名無しさん:2010/10/10(日) 22:15:23
>>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;
}
812デフォルトの名無しさん:2010/10/10(日) 22:23:57
>>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;
}
813デフォルトの名無しさん:2010/10/10(日) 22:37:57
>>812
>付け足します。↑のプログラムは0以上の整数が入力されている限り入力を繰り返すものとします。
負の数の入力があると変。
バックスペースは ideone ではサポートされていない。どうでもいい点ではありますが。
814デフォルトの名無しさん:2010/10/10(日) 22:41:36
アイヤ、ネタで書いたアルヨ、不十分で悪かったアルヨ
815デフォルトの名無しさん:2010/10/10(日) 23:26:31
>>812
都合悪いと中国人になる奴のプログラムだな(char ch)
でも、ideon君はこんなプログラムレベルの方が先生から怪しまれないと思う
816デフォルトの名無しさん:2010/10/10(日) 23:28:28
しかしこんな無節操かつ大量の宿題が出るってどんな授業なんだよ
先生の方にも問題があるんじゃない?
817デフォルトの名無しさん:2010/10/10(日) 23:31:15
工業高校の情報処理です
818デフォルトの名無しさん:2010/10/10(日) 23:31:42
前期の半年分サボってた分のとか…?
819また勘違い馬鹿が必死に煽っているよ:2010/10/11(月) 02:17:29
815 名前:デフォルトの名無しさん 投稿日:2010/10/10(日) 23:26:31
>>812
都合悪いと中国人になる奴のプログラムだな(char ch)
でも、ideon君はこんなプログラムレベルの方が先生から怪しまれないと思う
820デフォルトの名無しさん:2010/10/11(月) 02:21:23
815 名前:デフォルトの名無しさん 投稿日:2010/10/10(日) 23:26:31
>>812
都合悪いと中国人になる奴のプログラムだな(char ch)  < 激しく意味不明なレス
でも、ideon君はこんなプログラムレベルの方が先生から怪しまれないと思う < ますます意味不明

↑お前本当に2ちゃんねるに向いてないよ?昨日もネタコードに噛み付いて
詰まらないことで自分はレベルが低くない、高いと思っているのか知らないが
そうやって下らないことを見下して偉そうに出来れば大したもんだ、精神レベルの低さはw
821デフォルトの名無しさん:2010/10/11(月) 02:32:17
前から居るよ。
"どうせお前「それは仕様です」とか言ってるヤツだろ"
みたいなこと言って喜ぶ輩。
822デフォルトの名無しさん:2010/10/11(月) 02:41:25
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
整数値を読み込んで、その絶対値を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: vista
 [3.2] コンパイラ名とバージョン: Visual C++2010
 [3.3] 言語: C言語のみ
[4] 期限: [2010年10月15日まで]
[5] その他の制限:なし
よろしくお願いします。。
823デフォルトの名無しさん:2010/10/11(月) 02:44:57
何でそんなのも分からないの
824デフォルトの名無しさん:2010/10/11(月) 02:45:24
こういうの見ると敢えてif分だけで作りたくならね?
825デフォルトの名無しさん:2010/10/11(月) 02:46:46
むしろifでやるのが親切なんじゃないの?
この問題ならabsは求められてないでしょ
826デフォルトの名無しさん:2010/10/11(月) 02:47:11
レス乞食
827デフォルトの名無しさん:2010/10/11(月) 02:48:29
いっそどこまで回り道できるか競ってみないか
828デフォルトの名無しさん:2010/10/11(月) 02:49:39
2乗して平方根出すくらいまでしか思い浮かばねぇや
829デフォルトの名無しさん:2010/10/11(月) 02:50:19
>>822
#include <stdio.h>

int main(void)
{
int n;

scanf("%d", &n);

printf("%d\n", n < 0 ? -n : n);

return 0;
}
830デフォルトの名無しさん:2010/10/11(月) 02:51:01
つまらん
831デフォルトの名無しさん:2010/10/11(月) 02:57:59
あんた本当に2ちゃんに向いてないよw
832デフォルトの名無しさん:2010/10/11(月) 02:58:22
intからCharに変換して
先頭が0xD2だったら除去
int型に戻して表示

簡単なのを無理やり難しくしようとしたら逆に難しいな
833デフォルトの名無しさん:2010/10/11(月) 03:01:39
まぁ、なんだね、とりあえずお前、必死だなw
834デフォルトの名無しさん:2010/10/11(月) 03:02:23
>>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;
}

俺はもう・・・寝る・・・
835デフォルトの名無しさん:2010/10/11(月) 03:04:23
ひどすぎるw
836デフォルトの名無しさん:2010/10/11(月) 03:04:53
>>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 ;
}

微妙?
837デフォルトの名無しさん:2010/10/11(月) 03:05:02
もうお前ら誰が誰かわかんねぇよ
ここまで自演なんじゃないかと思えるほど
838デフォルトの名無しさん:2010/10/11(月) 03:09:36
このスレが自分のテリトリーだと勘違いしている引きこもりニート必死だなw
C言語はお前だけのもんじゃねーぞ?
839デフォルトの名無しさん:2010/10/11(月) 03:11:33
俺には>>831>>833>>838が同一人物だろうって事しか分からん
840デフォルトの名無しさん:2010/10/11(月) 03:13:08
噛み付きぶりから考えて、>>819,820も同一人物と思われる
841デフォルトの名無しさん:2010/10/11(月) 03:16:57
>>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;
842デフォルトの名無しさん:2010/10/11(月) 03:21:54
誰からも相手にされてないのに見えない敵と戦い続ける間抜けが1人いるみたいですね
843デフォルトの名無しさん:2010/10/11(月) 03:24:02
おい
面白そうなことするときは呼べって言ってただろうが
844デフォルトの名無しさん:2010/10/11(月) 03:37:35
>>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;
}
845 ◆QZaw55cn4c :2010/10/11(月) 04:12:11
>>840
例の長文野郎ですよ。
でも簡単にせよコードをさらすようになったのはいい傾向。
あとは、ミスをミスとみとめるだけの度量が育ち、双方向リストの問題を解いてみせれば、立派なこのスレの住人ですね。
期待しています。
846デフォルトの名無しさん:2010/10/11(月) 04:15:45
お前も長文と同レベルのゴミだってことを自覚しろよw
847デフォルトの名無しさん:2010/10/11(月) 04:21:43
◆QZaw55cn4cもこのスレにいらない
「◆QZaw55cn4cだけど何か聞きたいことある?」スレでも立てて独立してほしい
848デフォルトの名無しさん:2010/10/11(月) 08:24:19
t
849デフォルトの名無しさん:2010/10/11(月) 10:33:49
夜中は楽しいスレになってたんだ

>>845
どれが長文のコードってわかるか、それどれ?
850デフォルトの名無しさん:2010/10/11(月) 12:36:05
長文と◆QZaw55cn4cって似たもの同士だろw
日本語読めない、他人に攻撃的なのに妙に自分に甘い、
相手を妄想で特定する。
851デフォルトの名無しさん:2010/10/11(月) 13:12:43
>>841
あ・・・れ・・・?
今日からはもっと早く寝るよ・・・
852デフォルトの名無しさん:2010/10/11(月) 20:11:25
深夜の時間帯に口論している連中、今日は祝日とは言え
連日だからどう考えても昼夜逆転した引きこもりニートだろ・・・
C言語くらいしか生き甲斐の無い寂しい人間なんだな・・・
C言語と共に孤独死か?お前も俺も、いつか必ず死ぬんだぜ?
853デフォルトの名無しさん:2010/10/11(月) 20:15:12
>>846
>お前も長文と同レベルのゴミだってことを自覚しろよw
お前も同レベルのゴミだってことを自覚しろよw
854デフォルトの名無しさん:2010/10/11(月) 20:16:45
いるよな、周りの荒れっぷりを見て外から見て、自分はそんな
低レベルな人間ではない(キリッ)とかやっている、自分こそ
技能レベルではかなり低レベルだと自覚の無い馬鹿w
そう、お前だよお前、2ちゃん慣れしていない新参のお前。
今さら分かりきったことを、持論で勝手に定義してんじゃねーぞw
855デフォルトの名無しさん:2010/10/11(月) 20:17:31
>>853
>>お前も長文と同レベルのゴミだってことを自覚しろよw
>お前も同レベルのゴミだってことを自覚しろよw
お前も同レベルのゴミだってことを自覚しろよw
856 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄:2010/10/11(月) 20:18:44
     _____
   /::::::::::::::::::::::::::\〜プーン
  /:::::::::::::::::::::::::::::::::::::::\〜プーン  ←鏡を見ろよw
  |:::::::::::::;;;;;;|_|_|_|_|〜プーン
  |;;;;;;;;;;ノ∪  \,) ,,/ ヽ〜
  |::( 6∪ ー─◎─◎ )〜        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |ノ  (∵∴ ( o o)∴)〜      < 長文野郎!!!!!きめぇ〜んだよ!
  | ∪< ∵∵   3 ∵> ムッキー!    \_____________________
  \        ⌒ ノ_____
    \_____/ |  | ̄ ̄\ \
___/      \   |  |    | ̄ ̄|
|:::::::/  \___ | \|  |    |__|
|:::::::| \____|つ⊂|__|__/ /
|:::::/        | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
857デフォルトの名無しさん:2010/10/11(月) 20:19:27
>>855
自分の言葉で反論できないからコピペしかしない無能。
恥ずかしいよ。オウム返しするガキを見かけたが
お前の精神レベルは成人未満。どこで成長が止まったんでしょうね?
厨房?
858デフォルトの名無しさん:2010/10/11(月) 21:03:21
静かだねぇ、やっぱり長文とか言っている、見えない敵を勘違いして
自分が気に入らなければ顔を真っ赤にして叩く、自分の言葉で
反論できないコピペオウム返ししか出来ない無能は
昼夜逆転した深夜に暴れる引きこもりニートで
C言語が生き甲斐、人生の全ての、このスレのネット弁慶なんでしょうね。
859デフォルトの名無しさん:2010/10/11(月) 21:29:28
7時間の沈黙のうちにどうしたんだ?
860デフォルトの名無しさん:2010/10/11(月) 21:46:38
>>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^)あうあうあー
862デフォルトの名無しさん:2010/10/11(月) 21:58:12
>>860
試してみたがうまくいかない。
863デフォルトの名無しさん:2010/10/11(月) 22:00:57
printf ( "%d\n", n-(n<<1 & n>>63) ) ;
864デフォルトの名無しさん:2010/10/11(月) 22:01:39
>>862
まじで、俺の環境だとうまくいくけどな
まあうる覚えだし間違ってるかも。
865デフォルトの名無しさん:2010/10/11(月) 22:02:42
>>863
ああ、そういう事かw
866デフォルトの名無しさん:2010/10/11(月) 22:05:01
>>865
どういう事なんの?
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] その他の制限: なし

よろしくお願いします
868デフォルトの名無しさん:2010/10/11(月) 22:08:47
>>866
int型が32ビットか64ビットかの違いなんの
869デフォルトの名無しさん:2010/10/11(月) 22:09:44
>>864
sizeof(int) 教えて。
その感動を味わいたい。
870デフォルトの名無しさん:2010/10/11(月) 22:13:18
>>860
おお、できた、ビット演算マジエロいなこういう事だな
printf ( "%d\n", n-(n<<1 & n>>sizeof(int)-1) ) ;
871デフォルトの名無しさん:2010/10/11(月) 22:14:12
>>863
16bit や 24bitのintってことない?
872デフォルトの名無しさん:2010/10/11(月) 22:19:51
>>870
すげー嘘ついたw
試さずに言うもんじゃないな、こうだな
printf ( "%d\n", n-(n<<1 & n>>sizeof(int)*8-1) ) ;
873デフォルトの名無しさん:2010/10/11(月) 22:19:52
>>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 ;
}
874デフォルトの名無しさん:2010/10/11(月) 22:20:05
         。ρ。
         ρ        
         m
        C|.| /⌒⌒⌒ヽ/~ ̄ ̄ ̄ ̄ヽ
      /⌒ヽ⌒ヽ___   |  ∴ヽ  3  )  < 俺のC言語のソースが漏れちゃう
     ./  _  ゝ___)(9     (` ´) )
    /  丿ヽ___,.───|彡ヽ ―◎-◎-|
    _/ )          (   Y ̄ ̄ ̄ ̄)
   (__/           \____/
875デフォルトの名無しさん:2010/10/11(月) 22:20:58
>>870
CHAR_BIT忘れてないか
876デフォルトの名無しさん:2010/10/11(月) 22:24:35
#include <limits.h>
printf ( "%d\n", n-(n<<1 & n>>(sizeof(int) * CHAR_BIT -1) ) ;
本当はこうだよ。
877デフォルトの名無しさん:2010/10/11(月) 22:25:01
>>873
なんでだろうね
>>875
うんごめん、63でやってできたから興奮しちゃった
878デフォルトの名無しさん:2010/10/11(月) 22:27:40
>>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("");
}
879デフォルトの名無しさん:2010/10/11(月) 22:28:14
printf("未だにAlphaだから");
880873:2010/10/11(月) 22:29:15
うまくいった。
感動した。
881デフォルトの名無しさん:2010/10/11(月) 22:31:30
>>880
さっきので何が違ってたの?
882873:2010/10/11(月) 22:46:52
>>881
それがよくわからない。再コンパイルしたらうまくいった。
lsic でもためしていたので、頭が混乱していたと思う。
883デフォルトの名無しさん:2010/10/11(月) 23:02:31
へー条件分岐なしで絶対値出るんだ
使い道なさそうだけどすごいな
884デフォルトの名無しさん:2010/10/11(月) 23:19:41
「ショートコーディング」でググると幸せになれるかも
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;
}

以上です。どこがおかしいでしょうか。。。よろしくお願いいたします。
886885:2010/10/11(月) 23:50:18
すみません、 WinMain 関数内で以下を実行しています。

DialogBox(hCurInst, MAKEINTRESOURCE(IDD_MYDLG), NULL, (DLGPROC)MyDlgProc);

投稿用にコメント文を消していたのですが、関数まで消してしまいました。
887デフォルトの名無しさん:2010/10/11(月) 23:59:41
888885-886:2010/10/12(火) 00:01:15
>>887
クラスタリング難しいすね。。。
スレ汚し失礼しました。
889デフォルトの名無しさん:2010/10/12(火) 00:14:40
sizeof(T) * CHAR_BIT が有効ビット数とは限らない
負数が2の補数とは限らない
負数の右シフトは環境定義
負数の左シフトは未定義

ほかには?
890デフォルトの名無しさん:2010/10/12(火) 00:29:52
>負数が2の補数とは限らない
まじか、はじめて知った。
891デフォルトの名無しさん:2010/10/12(火) 00:49:41
1 の補数であってもよいし、
浮動小数点数にも使われているバイアス式でもいいし(この場合は正の数にも影響するかなあ)、
でもPCでそんな処理系は見たことはありません。
892デフォルトの名無しさん:2010/10/12(火) 00:52:27
>>885
必要な設定をしてからRegisterClass() とか CreateWindow() とかを呼ばなくてはいけないのでは。
http://wisdom.sakura.ne.jp/system/winapi/win32/index.html
893デフォルトの名無しさん:2010/10/12(火) 00:55:31
[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を足す。右下端が求める距離に
なっている。どのような基本操作を行ったかは、右下端から最小となる方向を逆に辿っていけばよい。
右に進むことは、横向きの文字列の先頭文字を削除することに相当する。下に進むことは、縦向きの文字列の先頭文字を削除することに
相当する。右下に進むことは、両方の先頭文字を削除することに相当する。
894デフォルトの名無しさん:2010/10/12(火) 01:58:20
>>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;
}
895デフォルトの名無しさん:2010/10/12(火) 01:59:35
あ、getch消し忘れた消しといて
896デフォルトの名無しさん:2010/10/12(火) 02:02:56
>>894
これってC++じゃないとダメ臭くね?
897デフォルトの名無しさん:2010/10/12(火) 02:03:40
あ、new使ってるねw
そのへんはフィーリングで
898デフォルトの名無しさん:2010/10/12(火) 02:04:17
minのオーバーロードもできない
899デフォルトの名無しさん:2010/10/12(火) 02:13:42
ああ、しかもメモリ解放してないやこれで動くかな
>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;
900デフォルトの名無しさん:2010/10/12(火) 02:15:13
>>898
オーバーロード?
どっかで定義されてたっけ?
まあ問題あるならminの名前変えてくれ
901デフォルトの名無しさん:2010/10/12(火) 02:17:24
getchar()さん必死ですねw
902デフォルトの名無しさん:2010/10/12(火) 02:19:39
修正してやれよww
903デフォルトの名無しさん:2010/10/12(火) 02:25:59
>>894のコピペ元見つけた
ハンパな知識でしかも.cppで改変したからこんなことになるんじゃ
904デフォルトの名無しさん:2010/10/12(火) 02:27:21
無修正が一番!w
905デフォルトの名無しさん:2010/10/12(火) 02:37:47
そもそもWikipediaに擬似コード乗ってるんだし此処で聞くまでもないレベル
906デフォルトの名無しさん:2010/10/12(火) 02:59:46
擬似が通用するのは修正(ザイモク)ありだからこそ!
無修正で擬似ではないことを証明せよ!
907デフォルトの名無しさん:2010/10/12(火) 05:21:32
>>822
もしかして同じ学校の人ですか?
課題がまったく同じなんですけど
908デフォルトの名無しさん:2010/10/12(火) 08:33:55
このスレならよくあること。
909デフォルトの名無しさん:2010/10/12(火) 09:12:29
三流大学だけどねw
910デフォルトの名無しさん:2010/10/12(火) 09:18:24
大学のランクはあまり重要ではない、特にプログラムの授業では。
むしろそれ専門の学校の方がレベルが高い。
所詮、数値計算程度の授業くらいしかしない。
数学で使う数式のコードを書いたからって、プログラミングが
上達する訳でもない。もっとシステム、OS、コンピュータの仕組みを
理解する方が良い。
911デフォルトの名無しさん:2010/10/12(火) 09:35:40
ねーよw
912デフォルトの名無しさん:2010/10/12(火) 11:01:32
ハッシュ関数なんですけど、順序を保つやつないですか?
a、bは100KB程度の文字列で比較可能でa<bならば、h(a) < h(b)となるやつです。
ハッシュ関数hは均等に分布できるやつが良いです。

913デフォルトの名無しさん:2010/10/12(火) 11:03:59
ソートするのにこういう関数があれば速度が上げられると思うのですが。
ハッシュでおおざっぱに分類できるので。
文字列の先頭8バイトで比較すれば条件満たすわけですが
これでは先頭8文字が一致していた場合、分類が出来ないです。
たとえば先頭が全てhttp://で始まるとか
914デフォルトの名無しさん:2010/10/12(火) 11:05:24
テンプレに従うか他いけ
915デフォルトの名無しさん:2010/10/12(火) 11:14:51
自己解決しました
916デフォルトの名無しさん:2010/10/12(火) 11:15:08
あ、俺も自己解決しました
917デフォルトの名無しさん:2010/10/12(火) 11:40:18
先頭からの十分な長さ(例えば100バイト)と標本で分布を調べたのち
分割が均等になるように分割するんです。

918デフォルトの名無しさん:2010/10/12(火) 16:32:49 BE:1133485875-PLT(18100)
>>893お願いします
919デフォルトの名無しさん:2010/10/12(火) 17:00:14
>>918
うわぁコテきめえ死ね屑
気持ち悪い
920 ◆QZaw55cn4c :2010/10/12(火) 18:17:29
>>893
>>918

>>894 を書き直したものですので、お礼は >>894 に言ってください。
http://ideone.com/fXWGh
921デフォルトの名無しさん:2010/10/12(火) 20:42:07
質問にきましたお邪魔します。
[1] CプログラミングT
[2] 問題文(含コード&リンク): 数問あるのでリンクからお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10941.txt
[3] 環境
 [3.1] ubuntu
 [3.2] gcc
 [3.3] C言語
[4] 期限: 10/14(木)まで
[5] 9月からCをとっているのですがさっそく小レポートで詰まりました。
if elseまで習っています。よろしくお願いします。
922デフォルトの名無しさん:2010/10/12(火) 21:12:53
>>921
とりあえずヒントから
問1 まず a と b だけで比較して、大きい方と c を比較する。
問2 int b とかに代入するだけ。
問3 問2ができたら、10で割った余りを求めればよい。
問4 原点と入力された点との距離を求めて1と比較して判定。円上はどうするの?
問5 合計降水量(24時間の降水量)が10未満かどうか判定する。
923デフォルトの名無しさん:2010/10/12(火) 21:16:29
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] その他の制限: なし

よろしくお願いします
926デフォルトの名無しさん:2010/10/12(火) 23:13:35
>>925
2つの関数間で、複数のデータを受け渡す演習だと思うけど、
グローバル変数を使う方法、関数の引数にポインタを使う方法が考えられるね。
とりあえず、ヒントだけで考えてみな。
927デフォルトの名無しさん:2010/10/12(火) 23:21:27
>>925
structを返す
928デフォルトの名無しさん:2010/10/12(火) 23:24:28
>>927
例を見る限りそれはNGかと思うな。
929デフォルトの名無しさん:2010/10/12(火) 23:28:57
>>928
例は例に過ぎないと思うな
930デフォルトの名無しさん:2010/10/12(火) 23:56:00
>>927
構造体の値渡しはコピーが遅いから、個人的に好きじゃないな。
演習レベルならよいのかもしれないけどね。
931 ◆QZaw55cn4c :2010/10/13(水) 00:05:21
>>921
http://codepad.org/kA2MVNnr
http://codepad.org/OD9QSAft
http://codepad.org/sNNzdf7v
http://codepad.org/Q32Iq4ui
http://codepad.org/zbSvezNS
惜しいところまでできているのもありましたので参考にしてください。ここに示したものだけが正解というわけではありません。
932 ◆QZaw55cn4c :2010/10/13(水) 00:15:43
933デフォルトの名無しさん:2010/10/13(水) 00:44:16
[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 ◆QZaw55cn4c :2010/10/13(水) 00:50:57
935デフォルトの名無しさん:2010/10/13(水) 01:04:26
>>934
Q先生、>>925はint calc(・・・・)だから,intのなんか返すんじゃない
でも返したintを使う気はないみたいだけど
であと、言語C++だから、なんかC++らしいの入れたほうが素敵じゃない(Ref渡しとか)
936デフォルトの名無しさん:2010/10/13(水) 01:08:10
変数の意味がわからなくて気持ち悪い
937デフォルトの名無しさん:2010/10/13(水) 01:13:10
クラスを使えとかiostreamを使ってとか指示が無い限り
ここでの「言語:C++」は信用してはいけない
938デフォルトの名無しさん:2010/10/13(水) 01:25:39
>>933
期限が今日じゃねーかw
途中まで作ったコードとかないのか?
939デフォルトの名無しさん:2010/10/13(水) 01:48:58
>>937
それよりも変数を後から定義していいとか、for文中でも変数定義できるとか
そういうコードをCとして書いている場合が多くて困るよな
940 ◆QZaw55cn4c :2010/10/13(水) 01:59:17
>>925
>>935 の指摘にしたって、C++ 風に書きました。
http://codepad.org/KLbGWgL6

これと C 風味の >>934 のいずれがお好みのほうをお使いください。
941デフォルトの名無しさん:2010/10/13(水) 05:40:14
>>933
http://codepad.org/iJbNOYOM

問題文のサンプルにあった構造体丸ごとコピーの手法はアホ過ぎるのでできなかった。
代わりにundoオペレーションで実装している。
mainとかデータのパースは超適当なので問題あったら修正汁。
942デフォルトの名無しさん:2010/10/13(水) 06:06:25
>>922 >>931
御早い回答ありがとうございます。とても助かりました。
私は実数の表し方などまだ見直すところがたくさん発見できて勉強なりました!
943デフォルトの名無しさん:2010/10/13(水) 07:52:23
>>913
>ハッシュでおおざっぱに分類できるので。

これ、どういう意味ですか?
944デフォルトの名無しさん:2010/10/13(水) 08:48:49
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク)
下記の様に、料理名の入力や材料名をキーボードより入力して、人数分の料理のレシピを計算して表示するプログラムを作成しなさい.
今日の料理名は何ですか:(料理名)

材料名は何ですか:( 材料)

( 材料) は一人当たり何グラム必要ですか:(分量)

何人分の料理を作りますか:(人数)

==レシピ==
今日は、(料理名)を作りましょう。

「(料理名)を(人数)人分作るには,(改行)

( 材料) が ( 分量×人数 ) グラム必要です」

*()内の料理名や材料には自分の好きな名前を考えてください。
* 人数、分量はキーボードから入力した値を使用してください。

printf 関数内で%sや%dを使用して、文字列(料理名・材料名)や整数値(人数・分量)を表示すること。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:10月14日
[5] その他の制限: なし
よろしくお願いします。
945デフォルトの名無しさん:2010/10/13(水) 09:59:57
>>894,920
ありがとうございました
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] その他の制限: なし
何卒よろしくお願いします。
947デフォルトの名無しさん:2010/10/13(水) 12:52:38
[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] その他の制限: 特になし
949デフォルトの名無しさん:2010/10/13(水) 13:56:54
表示はどうすんの?
950デフォルトの名無しさん:2010/10/13(水) 13:58:51
表示しろって言ってないししなくていいんじゃね?
951デフォルトの名無しさん:2010/10/13(水) 14:05:14
表示はもし3と入力されたら00000100のように表示できるようにお願いします。
952デフォルトの名無しさん:2010/10/13(水) 14:26:51
#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言語のビルドをするのですが、オブジェクトファイルまでしか
できません。どうすれば実行形式まで作成できますか。
954デフォルトの名無しさん:2010/10/13(水) 16:01:04
>>953
スレチ
955デフォルトの名無しさん:2010/10/13(水) 16:50:39
>>953
最初のプロジェクトで「実行可能」を選択しないからだろ
956デフォルトの名無しさん:2010/10/13(水) 16:56:32
>>955
スレチ&マルチに答えんな、ボケが
957デフォルトの名無しさん:2010/10/13(水) 17:10:14
>>956
うるさい勝手なお世話だ氏ね
958デフォルトの名無しさん:2010/10/13(水) 17:23:08
暇だからって自演すんなw
959デフォルトの名無しさん:2010/10/13(水) 19:50:05
>>932
>>940

ありがとうございました。
960デフォルトの名無しさん:2010/10/13(水) 20:26:03
>>934 >>940
問題文しっかり読んでね。何かが足りないよ。
961デフォルトの名無しさん:2010/10/13(水) 20:41:25
>>960
代わりにお願いします
962デフォルトの名無しさん:2010/10/13(水) 20:45:25
int calc()になってるから

return 0; でも書いておけばいいんじゃね
963デフォルトの名無しさん:2010/10/13(水) 20:46:15
問題文読めないアホが増えたw
964デフォルトの名無しさん:2010/10/13(水) 20:47:28
◆QZaw55cn4が問題文読めないのはいつものことじゃないか
965デフォルトの名無しさん:2010/10/13(水) 20:47:36
「平均」が抜けてるわけか
966デフォルトの名無しさん:2010/10/13(水) 20:49:57
題意を正確に把握することのほうが少ないくらいだしな
967デフォルトの名無しさん:2010/10/13(水) 20:51:58
>>965
正解。
不完全ながらソースコードがあって、直すところもわかってて、
それでも自分で直せないなら、>>925に単位を取らせるべきじゃない気がするな。
968デフォルトの名無しさん:2010/10/13(水) 20:54:10
>>960
ご指摘ありがとうございます。
>>925
平均を求めるのを忘れておりましたので、追加いたします。
http://codepad.org/nHQiV7Qm
969 ◆QZaw55cn4c :2010/10/13(水) 22:29:44
970 ◆QZaw55cn4c :2010/10/13(水) 22:42:48
971デフォルトの名無しさん:2010/10/13(水) 22:47:21
>>969
ありがとうございます。助かりました。
972デフォルトの名無しさん:2010/10/13(水) 22:57:35
[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] その他の制限:特にありません
973デフォルトの名無しさん:2010/10/13(水) 23:02:40
次スレ立てます
974デフォルトの名無しさん:2010/10/13(水) 23:03:34
次スレ立てました
C/C++の宿題片付けます 141代目
http://hibari.2ch.net/test/read.cgi/tech/1286978599/
975 ◆QZaw55cn4c :2010/10/13(水) 23:13:34
976デフォルトの名無しさん:2010/10/13(水) 23:56:54
>>975
出力してるところのコードがひどすぎるね。
977デフォルトの名無しさん:2010/10/14(木) 00:01:41
>>976
文句あんなら自分で書いて晒せカス
978デフォルトの名無しさん:2010/10/14(木) 00:08:40
荒らす時はトリを外す◆QZaw55cn4cは本当に陰湿で気持ち悪いなぁ
979デフォルトの名無しさん:2010/10/14(木) 00:15:10
>>978
まぁ、口だけのみで手を全く動かさないのも、どうかと思う
つまり、似たり寄ったりってことだな
980デフォルトの名無しさん:2010/10/14(木) 00:16:19
手を動かさないとレスできなくね?
981 ◆QZaw55cn4c :2010/10/14(木) 00:16:48
>>976
たしかにやっつけですね。たぶんもっといい方法はあると思うのですが、さてどうしたものか。

>>978
トリップは問題提示者との確実なコミュニケーションを確保するためにつけています。
982 ◆QZaw55cn4c :2010/10/14(木) 00:32:48
>>972
>>975 よりもきれいに書き直しました。
これならば、仮に奇数の完全数が存在しても対応しています。(>>975 は偶数の完全数を仮定していました。)
http://codepad.org/zhU9B2Lj
983デフォルトの名無しさん:2010/10/14(木) 00:37:17
いつも聴きに来る側なんであれなんですけど
最初にdivsumで求めるときに配列に入れといたらダメなんですかね
984デフォルトの名無しさん:2010/10/14(木) 00:42:12
>>983
無論ありですし、ずっと効率が良くなると思います。
985デフォルトの名無しさん:2010/10/14(木) 00:42:17
しくだいできた

http://codepad.org/eEh9PR1g
986デフォルトの名無しさん:2010/10/14(木) 00:46:16
>>984
おお、そうですか
なんかまずいのかと思いました

あとここの次スレっていつ誰が立てるんですかね
なくなるとすごく困るんですけど
987デフォルトの名無しさん:2010/10/14(木) 01:03:03
[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 なので計算の途中でオーバーフローしているようです。
どう直せばいいのでしょうか
988デフォルトの名無しさん:2010/10/14(木) 01:03:44
>>972

配列のサイズはかなり適当だけど、全約数を2回求めるようなことは不要。
http://codepad.org/CwfSn3Nr
989デフォルトの名無しさん:2010/10/14(木) 01:09:46
>>986
ここが終わるまでには立てるよ、誰かが
990デフォルトの名無しさん:2010/10/14(木) 01:11:53
>>974で立ってるじゃん

C/C++の宿題片付けます 141代目
http://hibari.2ch.net/test/read.cgi/tech/1286978599/
991デフォルトの名無しさん:2010/10/14(木) 01:12:24
>>987
妄想だが、オーバーフローしているのはスタックメモリじゃないか
VCでそれをどう変更設定するかは忘れた><
992デフォルトの名無しさん:2010/10/14(木) 01:15:31
>>989,990
ありがとうございます
もうたってましたか、またお世話になります
993デフォルトの名無しさん:2010/10/14(木) 01:25:10
>>987
とりあえずコード読んだけど再帰で書きたいの?ループで書きたいの?
意味わかって書いてる?
994デフォルトの名無しさん:2010/10/14(木) 01:36:50
>>987
%d を %u に
995デフォルトの名無しさん:2010/10/14(木) 01:38:59
>>993
別にどっちでもいい
関数の中のfor文だけだとn = 30の時にオーバーフローしちゃうし
偶数と奇数の場合分けだけだと数が小さい時は割り算で余りが出ちゃって答えずれちゃうしで
再帰とループを使ってる
頭が足りない初心者の苦肉の策です
996デフォルトの名無しさん:2010/10/14(木) 01:40:49
>>987
そうか、再帰の部分機能してないぞ。
まあ、こだわりが無いなら、再帰の部分をなくしてanswerをlong long型にすると治ると思う
997996:2010/10/14(木) 01:41:12
安価ミスった>>995だな
998デフォルトの名無しさん:2010/10/14(木) 01:44:44
>>991
プロパティシートで設定するんじゃないの、VS2010なら
999デフォルトの名無しさん:2010/10/14(木) 01:45:03
後付で申し訳ないんですが
%uもlong longも習ってないので出来れば使わない方がいいかと思います
型はint型のみで出力も%dのみでお願いします
1000デフォルトの名無しさん:2010/10/14(木) 01:45:16
次スレで会おう
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。