[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/15 20:47 / Filesize : 260 KB / Number-of Response : 900
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2011/03/31(木) 15:35:33.04 ]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
codepad.org/ ←遅い時間は重い事があります
ideone.com/
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 146代目
hibari.2ch.net/test/read.cgi/tech/1296387672/

2 名前:デフォルトの名無しさん mailto:sage [2011/03/31(木) 15:43:29.31 ]
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です

3 名前:デフォルトの名無しさん mailto:sage [2011/03/31(木) 16:10:07.66 ]
>>1乙スレ立て直せ

4 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 14:24:00.11 ]
>>3
どうして?

5 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 14:39:31.00 ]
>>3==◆QZaw55cn4c

立て直す必要なし

6 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 15:05:03.83 ]
ああ、例のあの問題か。
もうすぐ春休みあけで商売がまわりだすんだろうな
ちょっと興味あるぜ
どれぐらい儲かってんだろ

7 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 17:59:52.95 ]
[1] 授業単元:暇つぶし
[2] 問題文(含コード&リンク):
下記のような2chへの書き込み時刻のログを標準入力より受け取り、
EOF がきたら現在の !ninja レベルがいくつであるか出力せよ

!ninja レベルについて
最初の書き込み時にはレベル1である
最後にレベルアップした書き込み時刻から24時間以上経過して書き込むと1レベルアップする

条件1 一番最初の書き込み時刻以前にはクッキーは存在しないものとする
条件2 ●無しとする
条件3 書き込み時刻のログは古いものから順に並んでいるものとする

2011/02/11 22:33:44
2011/02/12 01:23:45
2011/02/14 18:19:20

[3] 環境
 [3.1] OS: Windows & Linux 両方
 [3.2] コンパイラ名とバージョン: なんでも
 [3.3] 言語: どちらでも可
[4] 期限: [無期限]
[5] その他の制限: 特になし

8 名前: ◆QZaw55cn4c mailto:sage [2011/04/01(金) 21:04:54.02 ]
>>6
>どれぐらい儲かってんだろ
0 円です。

9 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 21:17:06.40 ]
>>8
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です

10 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 23:11:41.69 ]
JAVAでいうインターフェイスみたいなのってないの?



11 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 23:21:21.86 ]
>>8
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です

12 名前: ◆QZaw55cn4c mailto:sage [2011/04/01(金) 23:43:41.79 ]
>>6
間違えました。

>どれぐらい儲かってんだろ
0 モリタポです。

13 名前:デフォルトの名無しさん mailto:sage [2011/04/01(金) 23:59:21.43 ]
>>12
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です

14 名前:デフォルトの名無しさん mailto:sage [2011/04/02(土) 00:07:49.75 ]
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c

15 名前:デフォルトの名無しさん mailto:sage [2011/04/02(土) 00:08:34.78 ]
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c

16 名前:デフォルトの名無しさん mailto:sage [2011/04/02(土) 21:09:55.15 ]
vectorは要素の追加毎に全部を新しく更新
リストは繋げるだけだから早い

この解釈でおk?

17 名前:デフォルトの名無しさん mailto:sage [2011/04/03(日) 00:55:58.27 ]
更新というか、要素が追加されるごとに追加前の要素数+1の領域を確保しなおしてコピーしている

18 名前: 忍法帖【Lv=15,xxxPT】 mailto:sage [2011/04/03(日) 02:59:06.75 ]
おりゃ

19 名前:デフォルトの名無しさん mailto:sage [2011/04/03(日) 09:53:56.26 ]
Cってスレッドあったっけ?

20 名前: ◆QZaw55cn4c mailto:sage [2011/04/03(日) 10:28:45.07 ]
>>19
言語としては規定されていません。
各々の環境でスレッドを管理する関数を呼び出すことになります。(win32 や posix-thread など。)



21 名前:デフォルトの名無しさん mailto:sage [2011/04/03(日) 10:54:07.86 ]
>>20
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です

22 名前:デフォルトの名無しさん mailto:sage [2011/04/03(日) 11:31:07.87 ]
>>7 用サンプルデータ
s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/71.txt

23 名前:デフォルトの名無しさん mailto:sage [2011/04/03(日) 11:50:36.59 ]
>>7
#include <stdio.h>
#include <string.h>
#include <time.h>

int main(void){
time_t cur, last_levelup=0;
struct tm hoge={0};
char buf[256], *p;
int year, month, day, hour, min, sec, level=0;

while(fgets(buf, sizeof(buf), stdin)){
p=strchr(buf, '\n');
if(p) *p='\0';
sscanf(buf, "%d/%d/%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec);
hoge.tm_year=year-1900;
hoge.tm_mon=month-1;
hoge.tm_mday=day;
hoge.tm_hour=hour;
hoge.tm_min=min;
hoge.tm_sec=sec;

cur=mktime(&hoge);
if(difftime(cur, last_levelup)>=60*60*24){
printf("Level %d : %s\n", ++level, buf);
last_levelup=cur;
}
}
printf("\n現在のレベルは %d です\n", level);
return 0;
}

24 名前:デフォルトの名無しさん mailto:sage [2011/04/03(日) 18:05:28.72 ]
>>17
とは限らない

25 名前:デフォルトの名無しさん mailto:sage [2011/04/03(日) 23:15:54.87 ]
>>19
hibari.2ch.net/test/read.cgi/tech/1301773320/
hibari.2ch.net/test/read.cgi/tech/1246115922/
ってネタが真っ先に思いついた…orz
少し2chから離れよう

26 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 19:27:32.72 ]
> 各々の環境でスレッドを管理する関数を呼び出すことになります。(win32 や posix-thread など。)
なにこれ。素人さん?

27 名前: ◆QZaw55cn4c mailto:sage [2011/04/04(月) 20:28:35.40 ]
>>26
「API」「システムコール」といえばよかったですかね。

28 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 20:38:21.31 ]
>>27
「API」「システムコール」ってどういうものなの?

29 名前: ◆QZaw55cn4c mailto:sage [2011/04/04(月) 20:42:37.55 ]
>>28
ja.wikipedia.org/wiki/Windows_API
ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%B3%E3%83%BC%E3%83%AB

30 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 20:47:07.72 ]
>>29
人の記述を盗まず、自分の口で語って



31 名前:@問題 mailto:sage [2011/04/04(月) 21:29:54.24 ]
[1] 会社の新人教育で出された問題
[2] 次のコードにコメントを付けよ。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>/*処理系によりconio.h→console.h*/
char*h="・○●◇\n";
int p,t,a,d,c,v,i,e=10,s,o,z[255]={0},m[90]={0},r[]={-10,- 9,-8,-1,1,8,9,10};
void k()
{
if(m[p]==0)
for( i = 0 ; i < 8 ; i++ )
{
for ( c = 0 , v = p + r[i] ; m[v] == 3-t ; v+=r[i]) c++ ; if(c&&m[v] == t )
{
a+=c;
v=p;
if( d )
do m[v]=t,v+=r[i];
while(m[v]!=t);
}
}

}



32 名前:@問題part2 mailto:sage [2011/04/04(月) 21:30:56.95 ]
void b()
{
system("cls"); /* コマンドプロセッサを呼び出し、cmnd で指定したコマンドを実行する。 */
for( p = 9 ; p < 82 ; ++p )
a?a:k(),printf("%.2s",&h[m[p]*2]);
}



33 名前:@問題part3 mailto:sage [2011/04/04(月) 21:31:44.54 ]

int main()
{
for( 50[z] = 80[z] = 9,54[z] = 77[z] = m[40] = m[50] = t = s = i = 1
, 52[z] = 75[z] = -1
, 56[z] = 72[z] = -9
, m[41] = m[49] = 2
; i < e
; m[i++*9] = 4 );



34 名前:@問題part4 mailto:sage [2011/04/04(月) 21:32:38.05 ]

for( ; ; a = d = 0 )
{
b();
if( a )
for( d = a = s = p = 8 ; a == 8 ; k() )
if ( t - 2 )
{
o = e [m];
for( i = 0, e[m] = 3 ; i != 13 ; c = ( i = _getch() )[z])
{
if( c && e + c > 9 && e + c < 81 )
e[m] = o, o = ( e += ( (e+c)%9 ? c : c*2))[m], e[m] = 3;
b();
}
e[m] = o, i = e/9, p = e%9 + i*9;
}
else
++p;
else if
(s)s=0, printf("pass");
else break;
t=3-t;
}
return 0;
}


35 名前:@問題part5 mailto:sage [2011/04/04(月) 21:33:10.66 ]

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] VC++2005
 [3.3] 言語: (C言語)
[4] 期限: ([2011年4月8日まで]


36 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 21:43:45.38 ]
テストだからわざと読みにくくしてるだけだよな?
実際の仕事じゃこんなコードじゃないよな?

37 名前:@問題(補足) mailto:sage [2011/04/04(月) 21:50:17.35 ]
やはりそうなんですか。
そういえば先輩は「作り変えても良いよ」と言っていました。

オセロのソースです。



38 名前: ◆QZaw55cn4c mailto:sage [2011/04/04(月) 23:35:13.57 ]
>>30
>>19 に対する返答としては、
「スレッドに関する諸機能は OS が提供するものであり、C 言語には内包されていない。
C からスレッドを使用するには、OS により規定されている方法で OS の機能を使用しなければならない。
Windows ならば win32api (DLL の形で提供されている、最終的には不正命令による内部割込みだったはず。)、
unix ならばシステムコール(i386 上で実装されているLinux を含む種々の unix 系OS は、最終的にソフトウェア割込み(int 命令)だったはず。)を呼び出すことにより、OS 提供の機能を使用する。」
※i386コールゲートによるシステムコールの実装は寡聞にして知りません。教科書的にはこれが正だと思うのですが。

39 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 23:40:18.66 ]
◆QZaw55cn4cってなんでコテ付け続けてるの?
荒れたスレを演出したいの?

40 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 23:48:44.10 ]
>>39
私のコメントを読みたくない、という希望が少なからずあるので、そんな人のために専用ブラウザで弾けるようにしています。
あと、hibari.2ch.net/test/read.cgi/tech/1295273862/ の情報宣伝活動も兼ねています。



41 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 23:58:41.34 ]
僕はプログラムに対してとても詳しいんだ。by.QZ

>>19に対する返答としては、
Cの言語仕様にはスレッドはないけれど、各環境にはCから使うことのできるスレッド関連ライブラリが
提供されているので、たいていの場合はそれをつかってマルチスレッドアプリを作成する。
ぐらいでいいんでないの。

簡単なレスだと適切な用語を使えない。
小難しそうなレスの時はつぎはぎ感が出ているし内容もずれている。
細かく聞かれると、すぐに別サイトへのアンカーを貼る。
これじゃあ素人だといわれてもしょうがないよね。

どこがずれているか聞きそうだから書いておくよ。
>>38だとlinuxならシステムコールを自前で呼び出さないとスレッドを用いたアプリが実装できないように読める。
> C からスレッドを使用するには、OS により規定されている方法で OS の機能を使用しなければならない。
> unix ならばシステムコールを呼び出すことにより、OS 提供の機能を使用する。
と。pthreadどこいったの。Windowsはwin32apiを使えばいいって書いてるのにね。

そういうわけで、たたかれてるんだと思うよ。

42 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 00:00:47.59 ]
あー、OS提供の機能がpthreadなんです、ってことか。
めんどくせ。

43 名前: ◆QZaw55cn4c mailto:sage [2011/04/05(火) 00:10:47.79 ]
>>41
>ライブラリ
たしかにこの場合には極めて適切な言葉ですね。

>簡単なレスだと適切な用語を使えない。
>つぎはぎ感
>内容がずれている。
>pthreadどこいったの
ご指摘感謝。次の機会には適切な言葉で対処できるように検討します。
特に、pthread はシステムコールそのものではない点が致命的に違っていました。

>細かく聞かれると、すぐに別サイトへのアンカーを貼る。
これは確かに余計でした。失礼。

44 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 00:16:39.60 ]
おまえらは巣に引っ込んでろ

45 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 00:42:08.43 ]
>>40は◆QZaw55cn4cなの?
なんで外したの?

46 名前: ◆QZaw55cn4c mailto:sage [2011/04/05(火) 00:49:42.36 ]
>>45
単に付け忘れです。私の専ブラは自動でつけてくれないのです、それだけです。

47 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 01:03:51.67 ]
付け忘れるなら、書き込むな。荒れるだけだ

48 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 01:46:12.19 ]
見栄を張るなら、ボロを出さないように見栄を張れってことだな。
必死でぐぐってる姿は相手から見えないんだから。

49 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 06:43:25.93 ]
>>31
それ七行プログラミングのオセロに似てないか?
まぁ、else使ってる所とか、カスタマイズが甘いから、
七行ぎりぎりの初期のバージョンを改造してるのかな?
そのバージョンならググれば、変数を分かりやすくして
コメントが入ってるバージョンが見つかるはず。
あとは、ぱっと見、入力方法が違うくらいかな?

50 名前: 忍法帖【Lv=29,xxxPT】 mailto:sage [2011/04/05(火) 06:57:36.48 ]
適当にやったら負けたけど、ちょっと真面目にやったら半分ちょいで完勝したw



51 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 12:40:03.98 ]
>>50
全部走査して最初に置けるところに置く仕様なのに
負けるって、ある意味器用だなw

52 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 19:32:51.59 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
以下のような入力が与えられたときに
3
11010
01111
10101
01110
01100

01011
01010
00100
00110
10100

11110
01110
01101
01110
00001

以下のように出力されるプログラムを作成してください。よろしくお願いします。
4
3
8
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2011/4/9


53 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 19:49:00.90 ]
西日本も福島原発の放射能に曝される。

4/7 予測 up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 www.dwd.de/

54 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 21:23:45.75 ]
>>52
規則性が分からないんだがヒントはないの?

55 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 21:25:13.16 ]
>>54
16で割る。

56 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 21:35:14.71 ]
>>55
もっとヒントが欲しい

最初の数値は 5x5 の塊がいくつ続くかを示していて
11010
01111
10101
01110
01100
に 4 が対応

01011
01010
00100
00110
10100
に 3 が対応

11110
01110
01101
01110
00001
に 8 が対応しており、
3つの塊は互いに独立しているってとこまでは合ってる?

57 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 21:42:15.81 ]
これ以外の入力が行われたときについて何も指定がないんだから
常に438が出力されるコードを書けば題意を満たすことができる

58 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 21:43:21.61 ]
>>56
この問題おもしろいんだよね。前スレの最後の頃に
荒れて荒れてしょうがなかったから、話題を転じる
ためにルールを探すプログラムを書く問題をだした。
この問題も、あなたが、いくつかの問題の解法の
パターンを持っているとして、それを、これではどうかな?
これではだめかな?というふうに確かめていって、
全部解が当てはまったときに、これが多分解法の
プログラムでしょ、とソースを示す。というような問題と
して捉えるならば、面白いんだよね。

59 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 22:13:58.25 ]
>>52
#include <stdio.h>

int main(void){
printf("4\n3\n8\n");
return 0;
}

60 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 22:28:01.51 ]
>>58
ブラックボックスでやるにしてはサンプルが少ないし
独立性の確認もできないのではどうにもならんよ



61 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 22:35:20.56 ]
>>52
たぶん、あってるはず。
余裕あったらコメントつけて再うpする。
codepad.org/MV69Cf8m

62 名前:57 mailto:sage [2011/04/05(火) 22:40:52.58 ]
あ、間違いありまくりだ
焦りすぎた・・・

63 名前:61 mailto:sage [2011/04/05(火) 22:54:14.26 ]
修正版
codepad.org/GrIXAZD1
なぜだかレス番間違えた。

64 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 23:59:04.48 ]
ライフゲームが何世代で収束するかだろ
見ただけで分かったわ

65 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 00:06:31.77 ]
ソースがあがった1時間後に言われてもw

66 名前:61 mailto:sage [2011/04/06(水) 01:22:21.57 ]
改善およびコメント付記
codepad.org/B93gQFkN

・注意
これは俺が勝手に問題を解釈しただけで、題意と全然違う可能性もある。ライフゲームが正解なのかもしれんw
また、あえて簡単な解き方ではやってなくわかりづらいため、他の人のを待ったほうがいいかもかも

67 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 01:43:45.99 ]
ライフゲーム試したら上から4、8、13だったぞ
適当言うなやww

68 名前:61 mailto:sage [2011/04/06(水) 11:56:29.47 ]
codepad.org/EzE5e4WZ
もう1つのやり方を加えてみた
手打ちが面倒だったから、ランダム化してみた

春休みもそろそろ終わって宿題増えるかなぁ

69 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 22:54:49.17 ]
文字列を最初と最後から交互に入れ替える暗号プログラムを作ろうとしていますが上手く行きません
例「hello」→「holel」

#include<stdio.h>
#include<string.h>

int main(void){
char str[80];char str2[80];
int i,j,k=0;
printf("文字列を入力してください");
gets(str);
j=strlen(str);
for(i=0;i<strlen(str);i++){
if(!i%2)
str2[i]=str[k++];
else
str2[i]=str[j--];
}
printf(str2);

return 0;
}

70 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 23:15:34.65 ]
>>69
int main(void){
char str[80];char str2[80];
int i,j,k=0;
printf("文字列を入力してください");
gets(str);
j=strlen(str)-1;         //strlen(str)は'\0'の部分を指し、strlen(str)-1とすることで'o'を指す
for(i=0;i<strlen(str);i++){
if(!i%2)
str2[i]=str[k++];
else
str2[i]=str[j--];
}
str2[i]='\0';          //文字列の最後に'\0'
printf(str2);

return 0;
}




71 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 23:20:37.74 ]
ありがとうございます。
\0が入ってたからそこで文字列が終了してたのか・・・orz

72 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 23:21:15.11 ]
>if(!i%2)

73 名前: ◆/91kCCQXBo mailto:sage [2011/04/06(水) 23:21:30.45 ]
>>69
if(!(i%2))

74 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 23:21:36.57 ]
>>69
12345→15243
hello→hoellじゃないの?



75 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 23:24:54.36 ]
・・・・・・ごめんなさいごめんなさいごめんなさいorz

76 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 23:28:26.85 ]
>gets(str);

>for(i=0;i<strlen(str);i++){

>printf(str2);

77 名前:デフォルトの名無しさん [2011/04/07(木) 01:16:41.55 ]
[2] 問題文(含コード&リンク):
  前スレで質問したものを参考にしてステータスを入力するゲームを作っています。
  正常に動くんですが、ステータスを表示する時に0がはいってしまうのですが、なかなか直りません・
  以下ソースです。ビルドして以下のステータス〜の所で0がはいってしまいます。
  お力添えよろしくお願いします。
codepad.org/JgDVRSjp

[3]環境
  OS:Windows
 言語:C
[4] 期限:4月7日 
よろしくお願いします。

78 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 01:25:12.61 ]
>>77
conio.hとかどこのPC-98だよ

79 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 01:39:36.61 ]
>>77
void state()の中で
player[i].hpをplayer[i].hpCurrentに代入してない

80 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 01:42:05.87 ]
あ、俺が作ったやつだ。conio.hなんて書いたっけなぁ
俺の持ってるソースと照らし合わせてみたら、いくつか違う部分があったのだけれど改良した?
もしくは俺が改良してアップしてないだけなのかも。

いま問題なのは、HPが0でないのに0って表示されてしまうってことでおk?



81 名前:80 mailto:sage [2011/04/07(木) 01:46:26.33 ]
codepad.org/mcVEfHGA
一応、俺の持ってるの上げておくよー

82 名前:デフォルトの名無しさん [2011/04/07(木) 07:53:44.52 ]
>>79 指摘ありがとうございます。なってませんでした・・・

>>80 改良前のソース使ってたかもしれません。
原因がわかったので解決できました! ありがとうございました。

83 名前:デフォルトの名無しさん [2011/04/08(金) 16:29:14.44 ]
[1] 授業単元:整数演算
[2] 問題文(含コード&リンク):1個以上32個以下の正整数の最大・最小・最小公倍数・最大公約数を求めよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2011/04/09 24:00
[5] その他の制限:特になし

よろしくお願いします

84 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 18:04:06.51 ]
>>83
整数の桁制限とか何かないの?

85 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 18:44:32.83 ]
>>83
#include <stdio.h>

int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a / gcd(a, b) * b; }

int main(void)
{
int i, n, max, min, l, g, temp;

scanf("%d", &n);
if(n < 1 || 32 < n) return 0;

scanf("%d", &g);
max = min = l = g;

for(i = 1; i < n; i++) {
scanf("%d", &temp);
if(max < temp) max = temp;
else if(min > temp) min = temp;
l = lcm(l, temp);
g = gcd(g, temp);
}

printf("最大:%d 最小:%d 最小公倍数:%d 最大公約数:%d\n", max, min, l, g);

return 0;
}

86 名前:デフォルトの名無しさん mailto:sage [2011/04/09(土) 05:08:43.63 ]
5 6 7 8 9 10
↑個数を最初に入力する。

87 名前:デフォルトの名無しさん mailto:sage [2011/04/11(月) 01:31:09.50 ]
#include <stdio.h>

int main(int argc, int argv)
{
int n, i, *elements;
char ss[80];
gets(ss);
n = atoi(ss);
elements = (int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
gets(ss);
elements[i] = atoi(ss);
}
for(i=0;i<n;i++){
printf("%d, ", elements[i]);
}
return 0;
}

88 名前:デフォルトの名無しさん [2011/04/11(月) 09:41:23.56 ]
>>85
>>87
83です、有難うございました。
桁制限はなしです。

89 名前:デフォルトの名無しさん mailto:sage [2011/04/11(月) 23:15:04.44 ]
C+じゃなくてC言語ってconstなかったっけ?

90 名前:デフォルトの名無しさん [2011/04/11(月) 23:48:39.01 ]
誘導されてきました。
FIFOを配列を使って実現したいのですが、以下をもっと簡単にできないのでしょうか?

unsigned char box[10];

box[0] =1, box[1] =2,box[2] =3, box[3] =4,box[4] =5,
box[5] =6, box[6] =7, box[7] =8, box[8] = 9, box[10] =10;


この状態で次のキューがたまると

FIFOを配列を使って実現したいのですが、以下をもっと簡単にできないのでしょうか?

unsigned char box[10];

box[0] =2,box[1] =3, box[2] =4,box[3] =5,
box[4] =6, box[5] =7, box[6] =8, box[7] = 9, box[8] =10;

このようなFIFOを実現したいのですが、どうしたらよいのでしょうか?



91 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 00:02:38.66 ]
キューがたまってるのに要素が減るのも変な話だけど、memmoveでいいとおもうよ

92 名前:デフォルトの名無しさん [2011/04/12(火) 00:08:52.35 ]
そういった関数はつかわないでお願いします。

93 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 00:57:08.48 ]
>>90
>この状態で次のキューがたまると

たまったキューはどこにあるの?

94 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 01:21:19.68 ]
memmove禁止とか不思議だなぁ。
ループでまわせば?
for (i=0; i < queue_size - 1; ++i) box[i] = box[i+1];

95 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 19:31:45.52 ]
[1] 授業単元:整数演算
[2] 問題文(含コード&リンク):char 型配列 str[256]を宣言し、キーボードから入力された文字をこの配列に格納するプログラム
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2011/04/09 24:00
[5] その他の制限:特になし

よろしくお願いします

96 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 20:00:04.68 ]
#include <iostream>
#include <string>
int main()
{
char str[256];
std::string buff;
std::cin >> buff;
buff.copy(str, sizeof(str));
}

問題文の条件はクリアしてるが
本当はもっと条件あるだろ?

97 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 20:02:00.96 ]
>>95

ideone.com/jfDzU

// C++超久々に書いた
// 一番悩んだのは格納する「だけ」でいいのかということ
// どういう意図の課題なのかなあ以上チラ裏

98 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 20:24:23.25 ]
>>96-97
ありがとうございます

格納する「だけ」でいいです。
そうとしか書いてなかったので...


99 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 20:27:23.37 ]
[1] 授業単元:整数演算
[2] 問題文(含コード&リンク):以下の問題に答えなさい

50
Σ((3*i)/2) = A の計算式を計算できるプログラムを完成させなさい。
i=0

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2011/04/09 24:00
[5] その他の制限:特になし

参考書の問題ですが難しくて分かりません。
お願いします。

100 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 21:00:54.73 ]
>>99

ごめん、コードも書かずにつっこみしちゃうけど

「計算できる」とはどういう意味?

単に与えられた計算式をコードに落とせばいいの?
それだけではなく結果を出力する必要がある?
逆に正しい結果だけ出力すればいいなら std::cout << (答えをベタ打ち); というのもあり?

「分からない」んじゃなくて本当は「問題設定ができてない」んじゃないかなあ...



101 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 21:23:52.73 ]
99です。

計算式通りに計算して出力するプログラムです。
ループを使えとヒントに書いてありました。

102 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 21:41:44.72 ]
>>99
ideone.com/VxcOi

103 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 22:03:00.41 ]
>>102
ありがとうございました
おかげで何とかなりそうです

104 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 22:34:30.66 ]
[1] 授業単元:プログラムA
[2] 問題文(含コード&リンク):演習問題です。

1.for 文の2重ループを使って、九九の計算と出力を以下のようにするプログラムを作りなさい。

 __________________________________________
| 1 2 3 4 …
|1 1
|2
|3
|

2.float 型の変数a、およびb を引数とし、a がb よりも大きければ整数1 を、小さければ整数‐1 を、同じであれ
ば整数0 を返す関数を作りなさい。
3.ポインタ変数p にint 型変数x のアドレスを格納した後、ポインタ変数p の指す変数にint
型変数y の値を足し、ポインタ変数p の指す変数に格納するプログラムを完成させなさい。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2011/04/
[5] その他の制限:特になし

これら問題の解答がなくて困っています。模範解答をどなたか親切な方お願いします!

105 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 22:44:53.07 ]
実際にプログラム動かしてないけど>>105

1.
printf(" ");
for(j=1;j<=9;j++)
printf("%2d",j);
for(i=1;i<=9;i++){
printf("%d",i);
for(j=1;j<=9;j++)
printf("%2d",i*j);
printf("\n");
}

2.
int func(float a,float b)
{
if(a>b)return 1;
else if(b>a)return -1;
else return 0;
}

3.
int x,y;
int *p;
x=1;y=2;
p=&x;
*p=(*p)+y;

106 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 22:49:55.18 ]
>>100
頭悪そうだなぁ

107 名前:デフォルトの名無しさん [2011/04/12(火) 23:21:06.14 ]
すみません。質問させてください。
宿題ではないのですけど。

[microsoft visual c++ 2010 express]
をダウンロードしたのですが、
このソフトでc言語は動かせますか?

c++じゃなくて、cを習っていますので。

108 名前: ◆QZaw55cn4c mailto:sage [2011/04/12(火) 23:22:35.83 ]
>>106
どこからも文句のつけようがない完璧な仕様書がなければコーディングしない、というある意味すれた人達のひとりなのでしょう。
こういう風には死んでもなりたくない、と痛切に感じております。

109 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 23:25:13.70 ]
>>108
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です

110 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 23:29:59.45 ]
>>107
できるよ



111 名前:デフォルトの名無しさん [2011/04/12(火) 23:36:08.76 ]
>>110
ありがとうございます。
単に使い方を知らなかっただけみたいです。

112 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 02:13:39.55 ]
>>103
そのまま出すと減点されるぞw

113 名前: ◆QZaw55cn4c mailto:sage [2011/04/13(水) 08:16:00.13 ]
>>112
どこがおかしいのですか?

114 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 10:10:58.50 ]
◆QZaw55cn4cみたいなバカが書き込むと荒れるのでやめてもらえませんか

115 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 10:30:54.94 ]
それも分からないの?

116 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 11:53:33.03 ]
>>109,104
黙ってあぼん

117 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 12:44:53.35 ]
> みたいなちびまるこが書き込むと荒れるのでやめてもらえませんか
sum += i * 3. / 2;

118 名前:102 mailto:sage [2011/04/13(水) 13:24:41.97 ]
117が言うまでどこがおかしーんだろって思ってたよだめすぎる
勉強になりました ありがとう
ttp://ideone.com/HDDO7

119 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 14:39:19.28 ]
>>105
ありがとうございます
ただ、1の問題が

11 1 2 3 4 5 6 7 8 9
2 2 4 6 81012141618
3 3 6 9121518212427
4 4 812162024283236
5 51015202530354045
6 61218243036424854
7 71421283542495663
8 81624324048566472
9 91827364554637281
続行するには何かキーを押してください . . .

と出力されてしまいます。

120 名前:デフォルトの名無しさん [2011/04/13(水) 19:38:46.94 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
little endianおよびbig endianの両方に対応するように以下のローテーション関数を作れ。
b, w, dはローテートする値、nはローテートするbit数を表す。

BYTE rotateByteRight(BYTE b, BYTE n);
BYTE rotateByteLeft(BYTE b, BYTE n);
WORD rotateWordRight(WORD w, WORD n);
WORD rotateWordLeft(WORD w, WORD n);
DWORD rotateDwordRight(DWORD d, DWORD n);
DWORD rotateDwordLeft(DWORD d, DWORD n);

ただしlittle endianとbig endianのコードを切り替えは、以下のように行うものとする

#ifdef __LITTLE_ENDIAN__
// little endianのコード
#else
// big endianのコード
#endif

[3] 環境
 [3.1] OS:PPCおよびIA32のLinux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
標準ライブラリは使わない



121 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 20:19:59.10 ]
>>120
これ出題が間違ってない?
エンディアンによってローテイトの方法が変わるとは知らなんだ
普通、変数に格納された時点でエンディアンの問題は解決してるだろ

122 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 20:31:35.56 ]
>>119
失敬。確かに間違ってたわ。
ただ、間違って入るものの、119の出力にはならないな
2行目コピーし間違ってたりしない?

123 名前:デフォルトの名無しさん [2011/04/13(水) 20:53:57.46 ]
固定小数点の平方根を求め、その結果を固定小数点で返す関数

固定小数点は整数部なしとする

124 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 21:19:01.61 ]
>>122
すいません
コピペしたらできなかったので、勝手にいじりました

コピペした状態のままだと

1 2 3 4 5 6 7 8 91 1 2 3 4 5 6 7 8 9
2 2 4 6 81012141618
3 3 6 9121518212427
4 4 812162024283236
5 51015202530354045
6 61218243036424854
7 71421283542495663
8 81624324048566472
9 91827364554637281

と出力されます

125 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 21:23:20.31 ]
多少の表示の乱れくらい自分で直せよと思う
この程度の対処をできない奴がプログラムで単位を取るのは納得できない
でもそういうスレなんだよなあ・・・

126 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 21:49:11.17 ]
>>125
そこをなんとかお願いします


127 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 22:09:57.53 ]
>>124
この今の状況を下のようになるよう治したいよね。
124と下とはどこが違うか探してみようっ!
見つけたら、どう変更すればいいか考えてみようっ!

 1 2 3 4 5 6 7 8 9         ←この行の最初が全角になってるけど、実際は半角スペース2つでもおk
1 1 2 3 4 5 6 7 8 9
2 2 4 6 81012141618
3 3 6 9121518212427
4 4 812162024283236
5 51015202530354045
6 61218243036424854
7 71421283542495663
8 81624324048566472
9 91827364554637281

128 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 22:32:17.57 ]
>>121
ネットワークプログラミングすると割とよく。

>>127
その表示にしてもだめなんじゃない?罫線が。たぶん。

129 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 22:56:35.14 ]
>>127

#include<stdio.h>
int main(void)
{
int i,j;

printf(" |");
for(j=1;j<=9;j++){
printf("%5d",j);
}
printf("\n");
printf("---+---------------------------------------------------\n") ;

for(i=1;i<=9;i++){
printf("%2d|",i);
for(j=1;j<=9;j++){
printf("%5d",i*j);
}
printf("\n");
}


return 0;
}

これで良いのでしょうか?自身はありません

130 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 23:06:38.75 ]
ためそう。



131 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 23:09:17.53 ]
>>130
出力してみたところ>>127のようになりました
アドバイスありがとうございました

132 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 23:56:59.24 ]
>>90
一般的にFIFOを実装する場合、要素の入れ替えは行わない
プッシュ位置とポップ位置を変数として持っていれば良い
厳密にはポップ位置がプッシュ位置を追い越さない工夫が必要だが、十分な配列サイズが有れば気にする必要は無いと思う

133 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 00:27:58.69 ]
雑な例でも書くかと思って書き終わったらFILOだった。
自分のふがいなさを痛感し、また次回に。

134 名前: ◆QZaw55cn4c mailto:sage [2011/04/14(木) 01:18:35.63 ]
どぞー。
hibari.2ch.net/test/read.cgi/tech/1301773320/581

135 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 06:24:24.75 ]
はい、どうぞ。
codepad.org/esQqoiSN

136 名前:デフォルトの名無しさん [2011/04/14(木) 16:11:25.74 ]
[1] 授業単元:整数演算
[2] 問題文(含コード&リンク):ideone.com/vVzAK
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2011年4月16日24:00まで
[5] その他の制限: 特になし

お願いします

137 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 17:09:59.18 ]
上限は?

138 名前:デフォルトの名無しさん [2011/04/14(木) 17:15:43.78 ]
4月17日(日)0:00 です。

139 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 17:17:29.14 ]
Mの要素の上限じゃないの?

140 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 17:22:42.86 ]
#include <stdio.h>

#define N 10000

char M[N];

void func(int n)
{
if(n >= N || M[n]) return;
M[n] = 1;
func(2 * n + 1);
func(3 * n + 1);
func(5 * n + 1);
}
int main(void)
{
int i;
func(1);
for(i = 0; i < N; i++) if(M[i]) printf("%d ", i);
return 0;
}



141 名前:デフォルトの名無しさん [2011/04/14(木) 17:27:34.89 ]
だめでした。

142 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 17:43:05.98 ]
Mを以下の条件を満たす最小の集合とする。
・1∈M
・n∈Mならば2n+1∈M
・n∈Mならば3n+1∈M
・n∈Mならば5n+1∈M
Mの要素を小さい順に出力せよ。

1: 3 4 6
3: 7 10 16
4: 9 13 21
6: 13 19 31
7: 15 22 36
9: 19 28 46
10: 21 31 51
13: 27 40 46
15: 31 46 76

143 名前: ◆QZaw55cn4c mailto:sage [2011/04/14(木) 19:38:38.28 ]
>>142
hibari.2ch.net/test/read.cgi/tech/1295273862/386

144 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 19:43:05.22 ]
>>143
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です

145 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 21:35:47.55 ]
テクニックに酔ってるようなコードだし

146 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 21:40:35.91 ]
「どうだ、俺様ってスゴイだろう」って鼻から息をフーフー吹き出しているような
顔が脳裏に浮かぶようだなよ

気持ち悪いなナルシストってさ

147 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 21:56:29.91 ]
特にかわったことはしていませんが、どの点が「テクニックに酔っている」とお感じになったのですか?

148 名前:147 ◆QZaw55cn4c mailto:sage [2011/04/14(木) 22:01:10.45 ]
>>147=◆QZaw55cn4c

149 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 22:01:49.34 ]
典型的な構ってちゃんでその癖人の批評が苦痛でしょうがない典型的な自己愛性人格障害
放置放置

150 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 22:03:11.20 ]
巣にこもって両方でてくんな



151 名前:デフォルトの名無しさん mailto:sage [2011/04/14(木) 22:03:53.13 ]
議論に持ち込めば屁理屈で相手をやり込めると思っている固い信念を
持っているから下手にこいつのペースに乗せられる奴は馬鹿

152 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 02:46:18.52 ]
#define N 3225 // Binary sort
void push(struct node **root, int n) {
  struct node *p = *root;
  if (p == NULL) {
    p = malloc(sizeof(struct node));
    p->n = n;
    p->left = p->right = NULL;
    *root = p;
    return;
  }
  if (n != p->n) {
    if (n < p->n) {
      push(&p->left, n);
    } else {
      push(&p->right, n);
    }
  }
}
int pop(struct node **root) {
  struct node *p = *root;
  int n;
  if (p == NULL)
    return -1;
  if (p->left)
    return pop(&p->left);
  assert(p->left == NULL);
  n = p->n;
  *root = p->right;
  free(p);
  return n;
}

153 名前: ◆QZaw55cn4c mailto:sage [2011/04/15(金) 07:18:03.38 ]
>>152
ささいなことですが、
>struct node *p = *root;
これはありえません。
私なら、p は malloc() の返り値をうけるため *だけ* に使い、すでにpush() に入ったときからわかっている値は *root とかきます。
>>152 は p がすでにある *root の場合と *root == NULL のときに malloc() から得た値の場合との両方があり、読みにくくなってしまっています。
あとから読むときのことを考えたほうがいいと思います。

154 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 07:56:54.79 ]
人のプログラムにいちいちケチを付けるな
人には人の流儀がある
お前を中心に世の中が回ってるわけじゃない
小学生でも分かる事がわからないのか?
いいから巣に帰れ

155 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 08:06:59.08 ]
>>153
ささいなことですが、
> if (!*root)
> if (*root == NULL)
これはありえません。
どっちかの書き方に統一しろバカ

156 名前:152 mailto:sage [2011/04/15(金) 10:01:42.55 ]
> assert(p->left == NULL);
assert(!p->left);
だった▼よく見てなかった。

157 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 12:08:57.63 ]
再帰にする必要も、双方向にする必要もないな

158 名前: ◆QZaw55cn4c mailto:sage [2011/04/15(金) 12:29:23.08 ]
>>157
双方向ではなく二分木です。
そしてニ分木を非再帰で書くんですか?やってできないことはないでしょうけれども、それでどんな利益があるのでしょうか?

159 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 12:32:19.61 ]
と、>>143を必要もないのに二分木で書いている馬鹿が申しております
>>158はまるで自分自身に吐いた言葉のようですね

160 名前: ◆QZaw55cn4c mailto:sage [2011/04/15(金) 12:36:38.69 ]
>>155
統一するメリットは?



161 名前: ◆QZaw55cn4c mailto:sage [2011/04/15(金) 12:41:43.99 ]
>>159
生成された新しいデータを加えて全体を逐一ソートにかけるくらいなら、 Ο(logn) の二分木に放り込む方が効率がいいと考えています。

>必要もないのにニ分木で書いている
ではニ分木を使わないやり方を書けるのなら書いてみていただけませんか。その上で客観的に比較してみましょうか。

162 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 12:44:16.98 ]
効率で言うなら>>140のほうがよっぽどいいだろw

163 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 12:46:35.05 ]
>>160
>>153
>あとから読むときのことを考えたほうがいいと思います。

164 名前: ◆/91kCCQXBo mailto:sage [2011/04/15(金) 13:36:14.92 ]
a.out | sort | uniq | tail -n 3225

165 名前:デフォルトの名無しさん [2011/04/15(金) 13:55:06.27 ]
136です。
上限は適当な数で構わないと思います。
今更ですが>>138>>141は私ではないので答えさせて頂きました。

>>140
皆様
ありがとうございました。

166 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 16:47:26.06 ]
>>161
アホ
氏ね
誰もお前と競争したくないわけ
何が「客観的に比較してみましょうか」だよ
相手が「したい」か「面倒臭い」のかも聞かないで自分の意見に従わせる気か

167 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 17:33:33.99 ]
こんなもんでよかったんじゃね?

#include <stdio.h>
int main(void)
{
enum {n=100};
char M[500]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
int i=1;M[1]=1;
while(i<n){if(M[i]==1)M[i*2+1]=1;M[i*3+1]=1;M[i*5+1]=1;i++;}
for(i=1;i<n;i++)if(M[i]==1)printf("%3.3d ",i);
return 0;
}

168 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 17:54:23.76 ]
5倍も使うのは贅沢すぎるんじゃね?

169 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 18:18:35.79 ]
こんな感じ?

#include <stdio.h>
int main(void)
{
enum {n=100};char M[n]={0};int i=1;M[1]=1;
while(i<n){if(M[i]==1){
(i*2+1)<n?M[i*2+1]=1:0;
(i*3+1)<n?M[i*3+1]=1:0;
(i*5+1)<n?M[i*5+1]=1:0;
}i++;}
for(i=1;i<n;i++)if(M[i]==1)printf("%3.3d ",i);
return 0;
}


170 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 18:23:10.63 ]
必ず3回判定するのも無駄じゃね



171 名前: ◆QZaw55cn4c mailto:sage [2011/04/15(金) 19:20:04.09 ]
>>162
おっと。見落としていました。まあ、そうやるのが普通なんでしょうね。
>>161 は撤回します。

172 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 19:25:35.93 ]
>>171
客観的に比較するんじゃなくて、撤回するんだ?

173 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 20:07:46.95 ]
また恥を晒したか ◆QZa w55cn4c

そんなんでよく書き込みできるな
あ、恥の概念がないんでしたっけww

174 名前:デフォルトの名無しさん mailto:sage [2011/04/15(金) 23:04:08.53 ]
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):アスキーコード(0x21~0x7eまで)表を出力をするプログラムを作りなさい
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++ 2008
 [3.3] 言語: C++
[4] 期限:2011年4月18日
[5] その他の制限:なし

175 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 00:07:06.74 ]
>>174
出力する表はどんな形でもいいのか?

176 名前: ◆QZaw55cn4c mailto:sage [2011/04/16(土) 03:00:02.03 ]
>>167
>char M[500]={
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>};
static char M[500];
でOK。

177 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 07:06:13.06 ]
>>169

178 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 10:26:31.22 ]
すれ違い

179 名前: ◆6W4srb4nmo mailto:sage [2011/04/16(土) 11:47:36.44 ]
// CL /TP >>174
#include<stdio.h>
int main(void)
{
  int i,j;

  printf("+---------------------------------------------\n") ;
  printf("|Oct");
  for(j=1;j<=8;j++){
    printf("%5o",j);
  }
  printf("\n");

  for(i=0x20;i<0x80;i+=8){
    printf("|%3o",i);
    for(j=0;j<8;j++){
      if(i+j+1>=0x7f) break;
      printf("%5c",i+j+1);
    }
    printf("\n");
  }

  return 0;
}

180 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 11:56:39.40 ]
>>179
[3.3] 言語: C++



181 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 13:05:55.92 ]
>>179のどこがC++に違反してる?

182 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 13:13:38.02 ]
>>181
依頼者が求めていることに答えるのがこのスレの趣旨

183 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 13:16:42.27 ]
>>174
ttp://codepad.org/OuDr0ZDC
なんかめんどくさくなったからこれでいいや

184 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 13:17:15.30 ]
>>180
codepad.org/SSUDKHuw

185 名前:174 mailto:sage [2011/04/16(土) 15:38:22.55 ]
>>174です。遅くなりました
表の形は↓のような形でお願いします

 0x20 0x30 0x40 0x50 0x60 0x70
0     0   @   P   `    p
1  !    1  A  Q   a    q
2  "    2  B  R   b    r
3  #    3  C  S   c    s
4  $    4  D  T    d     t
5  %    5  E  U   e    u
6  &    6   F  V   f     v
7   '     7   G  W   g    w
8  (     8  H  X    h    x
9  )     9  I   Y   i     y
a  *     :   J  Z   j    z
b  +     ;  K  [   k    {
c  ,     <  L  \    l     |
d  -    =  M   ]  m     }
e   .    >  N   ^  n    〜
f  /     ?  O   _   o

あと書き忘れてましたが、問題文に「for文の連続ループを用いる」ようにと書いてありました。
忘れていて申し訳ありません
そしてありがとうございます

186 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 16:46:24.60 ]
codepad.org/Fh1Id2SZ
最初にいえよ・・・・

187 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 17:06:52.83 ]
>>186
本当に申し訳ありません
それと、このプログラムを<stdio.h>のみで作ることはできますか?

188 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 17:11:06.69 ]
>>182
ほら>>187のように結局はなるんだよ
わかったか
C++と書いてあっても大抵はC
classや継承を使う場合のみC++だと思って置けば大抵は間違いない

189 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 17:16:41.40 ]
>>188
依頼者の指示内容の誤りは、依頼者自身に言えよ。
間違ってても、指示通りに作れば良いんだよ。


面倒なら回答する必要無いんじゃない?


190 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 17:27:06.73 ]
>>189
>間違ってても、指示通りに作れば良いんだよ。
その通りだな。
疑問持ったなら依頼者に確認
勝手に仕様を俺俺変更するものじゃないよな



191 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 17:27:29.21 ]
その語尾が気に入った。

192 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 17:33:06.56 ]
>187
>このプログラムを<stdio.h>のみで作ることはできますか?

それマジで言ってる?
言語はC++なのに?

CはC++の「ほぼ」サブセットだから可能ではある。
しかしそれをC++のコードと言われると、モヤモヤする。

それにしても後出しで条件付けられると、手戻りが
ひどいことになるのだから、回答付けてくれた人に申し分ないと思わなきゃ。

>189さんの言うことも最もですが、>182さんの気持ちわかります。

193 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 17:36:30.05 ]
>>174は、立派な発注元になれるな

194 名前:デフォルトの名無しさん [2011/04/16(土) 18:24:49.95 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] 7
 [3.2] gcc
 [3.3] C
[4] 期限: 今日の20:00
[5] その他の制限:a[]など配列は使わない。



リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に
入れるという処理を10回繰り返しても10個とも全部最後に入力した名前に
なってしまいます・・・どうしてでしょうか?
山田 田中 佐藤 鈴木 村上
山本 裏山 田山 小島 島々

これだけの名前を先頭から順番に入れて,
printf("%s",P.first->name);
printf("%s",P.first->->next->name);
printf("%s",P.first->->next->next->name);


10個とも島々になってしまいます・・・何故でしょうか?
一番簡単なリスト構造で先頭に入れるプログラム作っていただきませんか?
ちなみにPはfirstを含む構造体です。firstは構造体NAMEへのポインタで、
最初first=NULLです。 name,nextはNAMEのメンバーです。

195 名前:Nursery school toddler mailto:sage [2011/04/16(土) 18:44:43.88 ]
>>187
>>186のパクリ
codepad.org/E4C7nTTx

196 名前:174 mailto:sage [2011/04/16(土) 18:52:07.23 ]
>>195
ありがとうございます

皆さまご迷惑をおかけしました
今後は皆様のご迷惑をかけないよう、努力していく所存でございます

197 名前: ◆S2mzliix4OVR mailto:sage [2011/04/16(土) 18:56:40.69 ]
// CL /clr >>187
using namespace System;

const int first = 0x21;
const int last = 0x7e;

const int height = 16;
const int begin = (first / height * height);
const int end = (last / height * height + height);
const int width = (end - begin) / height;

int main()
{
  int i, j;
  wchar_t c;

  Console::Write("{0}{0}{0}", L' ');
  for(i = begin; i < end; i += height)
    Console::Write(" 0x{0,2:x}", i);

  Console::WriteLine();
  for(i = 0; i < height; ++i){
    Console::Write("{0,2:x}", i);
    for(j = 0; j < width; ++j){
      c = begin + i + j * height;
      Console::Write("{0,5}", ((first<=c && c<=last) ? c : L' '));
    }
    Console::WriteLine();
  }
}

198 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 18:57:15.98 ]
>>194
hibari.2ch.net/test/read.cgi/tech/1295273862/387

199 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 19:25:14.77 ]
>>194
標準入力から名前を入力する形に直しました。
hibari.2ch.net/test/read.cgi/tech/1295273862/388

200 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 19:33:49.20 ]
なんでトリップ外してんだよ
/tech/1295273862/ もNGしなきゃならんじゃないか



201 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 19:35:56.86 ]
頼まれてもいないのに勝手にやって金払えか
どこのやくざだよ

202 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 19:39:19.04 ]
>>143みたいなゴミしか書けないのにな

203 名前: ◆QZaw55cn4c mailto:sage [2011/04/16(土) 19:57:25.92 ]
>>201
その心配はありません。情報宣伝活動の一環ですので、私が勝手に書く分については「ポリタポ」を請求することはありません。

>>200
じゃあトリップつけます。

>>202
ゴミすら書けないあなたよりましです。

204 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 20:22:29.51 ]
自分を批判する人間は自分より下って思い込みはどうにかしたほうがいい

205 名前: ◆QZaw55cn4c mailto:sage [2011/04/16(土) 20:27:16.76 ]
>>204
そのつもりはなく、いただいたコメントには真摯に対応しているつもりです。
そのような思い込みが感じられるとすれば、私の文面に問題があるのかもしれません。
もしよろしければ、どこがまずいのかポインタでもいただければありがたいです。

206 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 20:50:06.09 ]
人の嫌がることをすすんでやります

207 名前:194 [2011/04/16(土) 20:51:05.16 ]
>>205 yuzuru.2ch.net/test/read.cgi/idol/1298418299/l50

208 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 21:04:01.04 ]
>>202
そういうなら
ゴミじゃないコード晒さないとな

209 名前: ◆S2mzliix4OVR mailto:sage [2011/04/17(日) 00:55:10.96 ]
>>195
[3.3] 言語: C

210 名前: ◆QZaw55cn4c [2011/04/17(日) 02:13:20.89 ]
>>173
目先の端だか恥だかは気にしない性分なんです。それに、>>140 に比べて、>>143 には利点もあります。
常々使っている mygetline() もそうですが、C でちゃんとかくのなら、>>143 位は考慮しておきたいもの、と考えています。



211 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 03:49:52.01 ]
>目先の端だか恥だかは気にしない性分なんです。

こりゃ人に嫌われるわ
特に女に嫌われる
女は屁理屈大嫌いだからな
お前いい年して童貞だろ?

212 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 06:08:35.29 ]
[1]C言語演習
[2]問題文
次の形式のタブ区切りファイルがある。(行数は最大で1000万行とする)
生徒ID クラス名 国語得点 数学得点 英語得点
生徒IDは8桁の0から9で構成される文字列
クラス名は4桁の0から9で構成される文字列
国語得点、数学得点、英語得点は3桁の0から9で構成される文字列とする。

(1)各教科の得点の和が同じ生徒達のグループについて、そのグループが何人で何クラスの
生徒から構成されているかを、得点和毎に表出力せよ
ただし0人で構成されるグループについては出力する必要がない。
形式例
得点:123 人数:5人 グループ数:4
得点:128 人数:3人 グループ数:3
得点:214 人数:11人 グループ数:9
............

(2)それぞれの教科の得点が所属しているクラスの各教科の平均点の大小関係と
同じ生徒をリストアップせよ
ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
大小関係は不問として出力する。(3つが一致している場合はそのクラスの生徒全員
がリストアップされることになる
[3] OSはLinux,言語はCです。(C++は不可)
[4] 4/30まで
[5] stdlib.h stdio.h string.hをincludeしても良いがそれ以外は不可だそうです
よろしくお願いします。

213 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 06:22:37.60 ]
[1] 授業単元: 無し
[2] 問題文(含コード&リンク):
A,A+,B,B+,C,C+,D,D+,E,E+,F,F+と文字が並んでて、1つ文字を入力したときに
その文字が例えばAならA→B+→D→E+→A、D+ならD+→F→A+→C→D+というように
入力された文字から2つ飛ばしで最初の文字まで表示する
[3] 環境
 [3.1] OS: MAC OSX
 [3.2] コンパイラ名とバージョン: gcc 4.0.1
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 特になし

214 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 06:28:36.58 ]
D+って1つの文字って言えるのか?

215 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 06:43:08.68 ]
>>212
グループ数:xx ではなく クラス数:xx ではないかな。

216 名前:212 mailto:sage [2011/04/17(日) 07:30:53.46 ]
>>215
もしかすると写し間違いがあるかも知れません。

217 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 07:44:13.28 ]
>>214
文字じゃなくて文字列ですね
1つというのも、A〜F+までのなかから1つ選んで、ということです

218 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 07:52:45.63 ]
>>213
codepad.org/PivS0ly3

219 名前: ◆S2mzliix4OVR mailto:sage [2011/04/17(日) 08:07:24.47 ]
>>213
codepad.org/q0l9wGid
その上で客観的に比較してみましょうか。

220 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 08:30:34.73 ]
>213

cygwin gcc にて確認。使用方法はusageにてわかるとおもう。
ttp://codepad.org/s07YB57F



221 名前: ◆S2mzliix4OVR mailto:sage [2011/04/17(日) 08:35:03.45 ]
>>220
成績だなんて、問題には書いてないよ。

222 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 08:40:55.10 ]
>221
それはそうですね。
じゃkeyに読み替えてください。

変数に具体的な名前を与えたかっただけです。

223 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 08:57:06.24 ]
>213
>220

はじめの文字まで連続表示する、という部分が抜けていたので書き直しました。

ttp://codepad.org/IOSPQ8NQ

224 名前: ◆QZaw55cn4c [2011/04/17(日) 09:41:21.65 ]
>>212
グループ数というのは、問題文をみるかぎり「同一得点だった人数」だと思われますから、グループ要素数、くらいになるのでしょうかね。
それよりも(2)の日本語が全然わかりません。(2) の出力結果例を教えてください。

225 名前: ◆QZaw55cn4c [2011/04/17(日) 09:55:22.44 ]
>224
ちがいました。クラス数ですね。やはり。

226 名前: ◆S2mzliix4OVR mailto:sage [2011/04/17(日) 10:41:17.52 ]
>>219 VC 用に修正
char *mondai[]={"A","A+","B","B+","C","C+","D","D+","E","E+","F","F+",""};

227 名前: ◆6W4srb4nmo mailto:sage [2011/04/17(日) 12:38:41.77 ]
>>212
(2) 形式例

クラス:1212
クラスの平均点の高い順:国語90.5>英語60.0>数学40.5
   国語 英語 数学
A子 87 66 59
B男 90 87 80

クラス:1213
クラスの平均点の高い順:英語30.4>数学29.8>国語20.0
   英語 数学 国語
C子 86 67 55
D男 91 88 82
D子 90 88 87

228 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 13:14:01.59 ]
>>226
それをせずにすむ環境(または言語)はどちら?

229 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 13:20:18.33 ]
Sなんとかは正しく動作すらしないので、客観的には>>223がいいかな。警告もでなかったし。

230 名前:デフォルトの名無しさん [2011/04/17(日) 18:06:29.08 ]
>211
目端がきく、というイデオムを軽くバクったつもりですが、ご理解いただけなかったでしょうか?



231 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 18:26:06.82 ]
>>206
>人の嫌がることをすすんでやります

この評価が一番適切

232 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 19:09:45.68 ]
>>230
理解したくないね
独りよがりのパクリとかどこのナルシストだよ
分かりやすく言えないのかアホ

>>231
人の嫌がる事を進んでやります(・ω・)
人の嫌がる事を進んでやりまず<ヽ`∀´>←意味が違う

◆QZaw55 cn4c は在日チョンではないかと最近思い始めた

233 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 22:20:08.26 ]
>>212のような問題って、昔Cプログラマ適性検査として
入社後の配置決定試験の時に出された課題みたいな感じ
確か3時間で仕様通りのコードが書けなければ
3年以内退職を前提とした誓約書書かされたっけ
俺?見事失敗。その代わり3年間はオフィスに10時に
着いて、あとは喫煙室との往復だけで給料貰ったし
ボーナスも出たし結婚もしたし...
今は嫁のツテでIT関連学校の教師
この業界はよほどの素質かよほどのコネが無いと生きていくのは
無理なんじゃね?

234 名前: ◆QZaw55cn4c mailto:sage [2011/04/17(日) 23:41:25.49 ]
>>212
とりあえず (1) だけ。
hibari.2ch.net/test/read.cgi/tech/1301553333/397

>>233
3時間ですか?ちょっと無理ですねえ。

235 名前: ◆QZaw55cn4c mailto:sage [2011/04/17(日) 23:49:54.58 ]
リンクミスがありました。
>>212
とりあえず (1) だけ。
hibari.2ch.net/test/read.cgi/tech/1295273862/397

>>233
3時間ですか?ちょっと無理ですねえ。

236 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 23:49:58.89 ]
>234
お前仕事してんの?ニートだろ?

237 名前: ◆QZaw55cn4c mailto:sage [2011/04/18(月) 00:28:46.01 ]
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の大小関係は不問として出力する。

もし国語と数学のクラスの平均点が 50 、英語が 70 のとき、

生徒A 国語 100 数学 0 英語 69
生徒B 国語 0 数学 100 英語 71
生徒C 国語 100 数学 0 英語 49
生徒D 国語 0 数学 100 英語 51

この四人のうちどれが出力対象になるのでしょうか?
問題文だけでは、二つの教科の平均点が一致したとき、残りの教科をどう扱うかがはっきりしません。

238 名前: ◆6W4srb4nmo mailto:sage [2011/04/18(月) 00:38:40.07 ]
国語<英語 AND 数学<英語 の生徒。

239 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 00:47:15.14 ]
ま、このような時勢に4月末迄の期限のまだ余裕のある宿題を
日曜日がな一日潰して片付けてあげる人は偉大なのかそれとも...
ちなみに(1)と(2)はmainを共通にすべきじゃないかと...

240 名前:212 mailto:sage [2011/04/18(月) 04:45:54.88 ]
>>235
取り敢えずはお礼を申し上げます。どうもお手数をおかけしました。
実はこの問題研修終了試験の過去問の5重コピーくらいの劣悪な
コピーから写したものです。もういちど調べてみるとやっぱり
グループ数じゃなくてクラス数でした。
ただCodePadは無償じゃないそうなので開くのには躊躇しております。



241 名前:213 mailto:sage [2011/04/18(月) 06:29:36.20 ]
>>218,223,226
皆さんありがとうございました!

242 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 07:33:57.76 ]
>>239
自分の力を誇示したいだけだと思われます。そして>>235

>3時間ですか?ちょっと無理ですねえ。

からも分かるように本当はプログラマ適性がないにも関わらず脅迫的にプログラムに
取り憑かれています。変ですね。

243 名前: ◆QZaw55cn4c mailto:sage [2011/04/18(月) 07:41:53.59 ]
>>239
例のスレッドに誘導をはかるべく自分の力を誇示したいだけです。意図したとおりにはなっていませんが。

そして、>>235
>3時間ですか?ちょっと無理ですねえ。
からも分かるように職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
やっぱり変ですね。

244 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 08:20:49.62 ]
>212
これってどのくらいのレベルが想定ですか?
最大1000万レコードというあたりが、初学者向けとは思え無いので確認したいのです。

ちょろっと1000万レコード生成と読み込み処理だけコーディングしてみたけど、
IOの時間だけでも結構かかります。前データをオンメモリに展開すると250メガくらい
になります。
最近のPCではこのくらいは屁でもないですが、そこは富豪的アプローチでOK?

これが最大1000レコードで各教科100点満点なら初学者向けだと思います。
1000万レコード、999点満点となると、オーバーフローを気にしなきゃならなくなるので、
かなり注意が必要です。

と思って面倒そうだから見てたけど、どうでしょ>212さん。

245 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 08:57:38.37 ]
>235

1000万レコードのデータ食わせてみたら、とりあえずちゃんと動いているっぽいです。

コードをちゃんと追ってませんが、レコードをノードに展開しながら、
2分木にソートしながら突っ込んでいる感じでしょうか?
でも使用メモリ量は1.5M位だったようなので違うかな。

各関数に何をする関数かを示すヘッダコメントを書くと、だいぶコードが読みやすく
なるので、心がけていただけないでしょうか。

246 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 09:05:28.09 ]
1000万レコード全部合計点同じデータ食わせたらちゃんとうごかねえんじゃね?

247 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 09:58:04.20 ]
100万レコード全部合計点違うデータ食わせたら動かねえんじゃね??

248 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 10:52:00.93 ]
>>243
例のスレッドに誘導をはかるな。スレの邪魔だ。宣伝はあのスレでだけやれ。
他の人の迷惑だ。

>職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。

だから変だと思いませんか?なぜそんな趣味レベルの力しかないのにそれで強引に
金儲けをしようとするのですか?自分の力を過大評価しているとは思いませんか?
金儲けとはそんな甘い物じゃありませんよ。

どちらにしろ職業にする力量が明らかに不足しているのにそれで金儲けしようなどとは
いかにも図々しい話です。ナルシスティックで自分に酔っているとしか思えませんね。

249 名前:212 mailto:sage [2011/04/18(月) 11:07:29.36 ]
>>244
なんか凄い空気ですね...
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
ないかと...1000万行ってのは当時でもそれほど大きな
データじゃなかったようです。他の過去問にもそのような
数字が出ていますし。ちなみに現在うちの会社が扱っている
のは一案件10億とか100億とかのレコード数当たり前だそうで
す。


250 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 11:09:15.47 ]
>>212 (1) のみ
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_hoge_t{
long num;
unsigned long class_bits[(10000+32-1)/32];
}hoge_t;
int bit_count(const hoge_t *hoge){
int i, j, ret=0;
for(i=0;i<sizeof(hoge->class_bits)/sizeof(hoge->class_bits[0]);i++)
for(j=0;j<32;j++) if((hoge->class_bits[i]>>j)&1) ret++;
return ret;
}
int main(int argc, char *argv[]){
hoge_t *hoge=calloc(sizeof(hoge_t), 1000*3);
long i, student_id, class_id, japanese, math, english, score;
FILE *fp=NULL;
if(argc>1) fp=fopen(argv[1], "r");
if(hoge==NULL || fp==NULL) exit(1);
while(fscanf(fp, "%ld %ld %ld %ld %ld", &student_id, &class_id, &japanese, &math, &english)==5){
if(student_id<0 || 99999999<student_id) break;
if(class_id<0 || 9999<class_id) break;
if((japanese<0 || 999<japanese) || (math<0 || 999<math) || (english<0 || 999<english)) break;
score=japanese+math+english;
hoge[score].num++;
hoge[score].class_bits[class_id/32]|=1<<(class_id%32);
}
fclose(fp);
for(i=0;i<1000*3;i++)
if(hoge[i].num) printf("得点:%ld 人数:%ld人 クラス数:%d\n", i, hoge[i].num, bit_count(&hoge[i]));
return 0;
}



251 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 11:36:03.44 ]
>>244
富豪を仮定しないと面倒でない?

>>212 (1)だけ適当に。まともに動いてるのかよく分からん
codepad.org/hzssz9EV

252 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 11:37:51.41 ]
業務相手にお優しいこって

253 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 12:38:04.43 ]
>>212
codepad.org/Y5lMdhWZ

・(1)、(2)の両方。
・ただし、Windowsでの作成のためLinuxで動かすにはちょっと改変が必要(キャリッジリターンの部分)。
・科目の数が3つとなっているが、遊び心で勝手に3つ以外(5個とか100個とか)可能にした。
 そのため、入力するファイルが若干変わり、次のように入力してもらうようにした。
  例.
   国語\t数学\t英語\t・・・\t理科
   12345678\t9012\t345\t567\t・・・\t890
           以下略
 まぁ、科目増えた分の点数と、1行目に科目名入れるようにしたってだけ。
・テスト行うため、ファイル作成する関数導入(rand()使用、srand()は付けてない)。上記にしたがった書き込みを行う。
・malloc使い過ぎたときのエラー対策が不十分(freeがてけとー)。
・データは、例えばid(8桁)の場合、00011111のように0を省略せずに入力しないとプログラム終了させている。
・わかりやすくを心がけて作ったつもり(遊び心スイッチ入れた後はそんなこと気にしなかった。)。
・ということもあり、計算速度はすげぇ遅い。1000万行はやるな。

254 名前: ◆QZaw55cn4c mailto:sage [2011/04/18(月) 12:49:25.71 ]
>>245
テストありがとうござます。

二分木に突っ込んでいるのは、レコードそのものではなく、0+0+0〜999+999+999 の点数を単位としたデータ構造で、
点数ごとに同点数の人数とクラス名の線形リストを持っています。同一点ごとのクラス数は、線形リストに追加された要素の数を最後に勘定することで調べています。
レコードそのものをメモリに全部乗せるのは無理と踏みました。

>>246
プログラムのつくりとしては問題ありません。二分木に一つの要素が追加されるだけになります。

>>247
それは問題ですが、題意に沿うかぎり、0〜999+999+999 の計 3000通り弱ですので、メモリは足りるだろうと踏みました。

>>248
>なぜそんな趣味レベルの力しかないのにそれで強引に金儲けをしようとするのですか?
金儲けじゃありません。モリタポ儲けです。

255 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 12:55:41.24 ]
>>254
0-999が3組ある場合の組み合わせが3000通り弱なの?
国語が0点、算数が0-999の1000人と
国語が1点、算数が0-999の1000人と
国語が2点、算数が0-999の1000人で3000通りになってしまったよ。

256 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 12:59:10.20 ]
>>254
>金儲けじゃありません。モリタポ儲けです。

また屁理屈かよ
聞き飽きた

auction.moritapo.jp/
これがある以上、金儲けと言われても文句は言えない

257 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 14:10:25.18 ]
てゆーか、何でそんなにプログラミングが好きなのか
よくわからない
仕事とか勉強とかに必要だからいうのは兎も角

258 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 14:21:08.56 ]
暇つぶしに宿題やるのは悪くないと思ってる職業マならここに。
関係ない人が、目的もなく宿題をやるのは不思議。けどなんかやろうとしてたんだっけか。
日曜大工的なもんだと思えばいいんでないかな。

259 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 14:27:56.19 ]
>>258
少しでも、C言語の周りを活性にしようとしているだけだろ。
肝心のソースコードを晒す場所があまりないからここでということ。

260 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 14:38:03.12 ]
てか何でソースを晒したいの?



261 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 14:39:43.21 ]
>>259
日曜大工が趣味の人が、日曜大工の輪を広げたいがために
ホームセンターで展覧会を開いていると思えばよい?
それも、何度も拒絶されているにもかかわらず、懲りずに展覧会を開く。

262 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 14:42:27.49 ]
>>260
ヌードになる心境でしょう。

263 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 15:06:47.24 ]
>212

続々コードが上がってきましたね。
ちょっと読んでみます。

私もまずは1だけです。
ttp://codepad.org/DDlp8Quq

>249
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
>>中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
であれば、今上がっているようなコードではダメでしょうね。
すべてのデータをオンメモリに展開するわけにはいかないでしょうから。
点数別に読み込みながら集計して、出力の繰り返しかな?

>ちなみに現在うちの会社が扱っている
>のは一案件10億とか100億とかのレコード数当たり前だそうです。
そういう場合はDB使っているでしょうね。

264 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 15:20:00.37 ]
>>263
読んでねーのにけなすとか馬鹿じゃね

265 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 15:33:53.86 ]
自分のは兎も角、人が書いたC文書読んで面白いの?
てか最近はソフト頒布はオプソで原則が浸透しつつあ
るんで、読まざるを得ないことも少なくないけど

266 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 16:36:43.10 ]
C文書w

267 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 16:40:08.27 ]
>>265
他人のレスを読むのが面白いかどうかというとなんともいえないのと同じで、
反応するためには普通に読むでしょう

268 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 17:31:04.34 ]
こういう言葉のやりとりが面白くないから、少しはソースコードでも
載らないものかと思ってる人にサービスするためのスレ。
宿題であるかなんて関係もない。

269 名前: ◆QZaw55cn4c mailto:sage [2011/04/18(月) 18:46:03.39 ]
>>255
>>212
>各教科の得点の和が同じ生徒達のグループについて
国語・数学・英語の総和だけ考えればいいので、個別で0〜999 までなら、総和は 0〜2997 です。この2998通りについて、おのおの出現回数と出現したクラス名を記録しておけばいいわけです。

270 名前: ◆QZaw55cn4c mailto:sage [2011/04/18(月) 18:53:22.23 ]
>>256
そういう換金可能性は、どのような「もの」に対しても当てはまることです。
どんな「もの」に対しても当てはまる性質を理由にあげても(それはオークションにかければ理論上どんなものでも換金できます。)それによr営利目的か営利目的でないかを判断することはできないのではないでしょうか。



271 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 19:15:44.31 ]
>>270
対価とることがおかしいんだよ

272 名前: ◆QZaw55cn4c mailto:sage [2011/04/18(月) 19:32:21.15 ]
>>271
2ch で対価をとることを規制する規定はありますか?あるのなら URL を示してください。

以上、hibari.2ch.net/test/read.cgi/tech/1295273862/ での議論の要約でした。

273 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 19:46:24.17 ]
>>272
対価を取らずに宿題に答えるスレで、
対価を取るスレの宣伝行為はやめろ。
スレの進行の妨害だ

274 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 19:49:56.37 ]
マジレスするとこっちのスレで対価無しの回答してたらモリタポ儲け出来ないじゃん
出題者側もそれに気づいてるから専用スレに出題者が現れないんだろ


275 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 19:55:09.77 ]
>>274
有償スレへのリンクを貼り付ける行為がきわめて悪質。


276 名前: ◆QZaw55cn4c mailto:sage [2011/04/18(月) 20:10:55.13 ]
>>273
出題者の望む最大限の行動(すなわち動く C プログラムソースを作成し公開すること)を「妨害」と判断した根拠を示してください。

そういえば、あなたは私を糾弾するばかりで、ひとつもソースを公開していませんね。それこそこのスレの進行を妨害しているのではないでしょうか。
一度くらい、ソースを公開したその同じレスの中で私を批判してみてください。

277 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 20:19:17.31 ]
誰と戦ってるんだw

278 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 20:20:26.55 ]
お前らこっちでやれ。どっちも邪魔
hibari.2ch.net/test/read.cgi/tech/1295273862/

279 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 20:21:55.80 ]
>>276
巣に帰れカス

280 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 22:25:51.70 ]
>263です。

>250
コード読みました。
比較した中では一番シンプルでいいと思います。
読み込んだデータよりも、集計データの方をオンメモリで持ったほうが
小さくていいですね。しかも読みながらビンソートになっているから
パフォーマンスも一番です。

自分のコードも始めに読み込みデータと集計データを、オンメモリに
もつようにしていたのですが、ソートは必要だと思い込んでいました。
そうか、集計時にビンソートになっているから、読み込んだデータのソートは
不要ですね。ソートが必要だと思ったので、メモリ上に読み込んでいたので、
そのことに気づけなかったのは、自分が残念です。

クラス数の集計でビットカウントが使われているのが、私と全く同じだったので
少し親近感があります。
それだけに自分のコードが残念だ。





281 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 23:09:20.45 ]
>250を踏まえて>263を書き直しました。

ttp://codepad.org/9Jdz1qC2

本質的には>250と同じです。
投稿に収めるために、かなりコンパクトに書かれていたと思われるので、
あえて投稿しました。
やはり処理時間がダントツに違います。

282 名前:212 mailto:sage [2011/04/19(火) 06:58:15.81 ]
>>281,263さん
貴重な時間を割いて回答いただきありがとうございました。

283 名前:253 mailto:sage [2011/04/19(火) 10:51:11.25 ]
需要ないが、主に自己満足のため(あと、他に課題も相談もないようなので)、
>>253の改善をあっぷ。
codepad.org/bqK0m1aY

・キャリッジリターンなんて関係なかった。たぶんlinuxでも動く。
・つーか、便利な関数もっと使えばよかったと今更思う。
・メモリの開放をも少ししっかりやった。
・他いろいろ細かい部分の修正。
・遊び部分はそのまま。

284 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 13:23:09.15 ]
>>183
クラス名を"0000"〜"0009"に決め打ちしてない?
出力結果が何かおかしいんだけど

285 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 13:23:55.57 ]
あ、間違った
>>284>>283に対してです

286 名前:@ [2011/04/19(火) 17:47:07.29 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク):
エラトステネスの篩
第一引数にint型の変数m, 第二引数にint型の配列Pが与えられたとき、
配列Pにm以下のすべての素数を格納し、格納した素数の個数を返す関数
int eratosthenes(int m, intP[])
を作成せよ。
なお、格納した素数の個数がhの場合、素数の配列PのP[0]からP[h-1]に昇順に
格納されているものとする。
[[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2011/4
[5] その他の制限:なし

よろしくお願いします。


287 名前:A [2011/04/19(火) 17:48:05.50 ]
よろしくお願いします。


#include<stdio.h>
#define max_n 10000/

int eratosthenes(int m, int P[]);

int eratosthenes(int m, int P[]){
/* この部分を作成 */

}

main(void){
int i,n,h;
int P[max_n];

printf("Input n: ");
scanf("%d",&n);

h=eratosthenes(n,P);

printf("Primes not exceeding %d are :\n",n);
for(i=0; i<h; i++) printf("%d ",P[i]);
printf("\n");
}


288 名前:283 mailto:sage [2011/04/19(火) 18:38:54.67 ]
>>284
クラス数少なくするか、生徒数多くするかしないと、課題(2)の結果が1クラスあたり1人となってしまうため、クラス数を減らしてます。
#defineで10000に戻せば課題のどおりです。

289 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 18:59:57.54 ]
>>286

int eratosthenes(int m, int P[])
{
int i, j;

for(i = 0; i <= m; i++) P[i] = 0;
for(i = 3; i <= m; i += 2) P[i] = 1;
P[2] = 1;

for(i = 3; i * i <= m; i += 2) if(P[i]) for(j = i * i; j <= m; j += 2 * i) P[j] = 0;

for(i = j = 0; i <= m; i++) if(P[i]) P[j++] = i;

return j;
}

290 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 20:09:44.48 ]
篩として使った配列に、素数をつめなおすってなんか気持ち悪いなw



291 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 20:14:44.74 ]
>>290
ソートして結果を返すっていう関数もあるからね

292 名前: ◆QZaw55cn4c mailto:sage [2011/04/20(水) 01:18:00.02 ]
>>212 の (2)
hibari.2ch.net/test/read.cgi/tech/1295273862/419

>>253, >>283
不等号情報の仕様は等号の場合も含んでユニークにできておりすばらしいと思います。
今度、機会があればぜひ採用しようかと。

ただし今回は、
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
>大小関係は不問として出力する。
という仕様があるのですが、これには対応しているのでしょうか?

293 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 01:24:25.59 ]
292 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

294 名前: ◆QZaw55cn4c mailto:sage [2011/04/20(水) 01:29:13.90 ]
>>292
つづり間違いを訂正しました。
hibari.2ch.net/test/read.cgi/tech/1295273862/420

295 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 01:36:35.20 ]
294 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

296 名前: ◆QZaw55cn4c mailto:sage [2011/04/20(水) 02:06:39.92 ]
>>240
hibari.2ch.net/test/read.cgi/tech/1295273862/325

297 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 02:17:38.43 ]
C言語
ソースファイル

#include <stdio.h>

int main(void){
int ch;
FILE *sfp, *dfp;
char sname[64], dname[64]; /* ファイル名 */

printf("コピー元ファイル名:"); scanf("%s", sname);
printf("コピー先ファイル名:"); scanf("%s", dname);

if ((sfp = fopen(sname, "r")) == NULL) { /* コピー元をオープン */
printf("コピー元ファイルをオープンできません。\n");
} else {
if ((dfp = fopen(dname, "w")) == NULL) { /* コピー先をオープン */
printf("コピー先ファイルをオープンできません。\n");
} else {
while ((ch = fgetc(sfp)) != EOF) {
fputc(ch, dfp);
}
fclose(dfp); /* コピー先をクローズ */
}
fclose(sfp); /* コピー元をクローズ */
}

return 0;
}

298 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 02:18:24.57 ]
ファイルを連結するコマンド cat の自家版

次の処理を行うプログラムを作成します。

コマンド引数として,0個以上のファイル名を指定します。
コマンド引数で与えられた名前のファイルの内容を順次連結して、標準出力に出力します。
コマンド引数が与えられなかった場合、標準入力からのデータを標準出力に出力します。
エラーメッセージは、標準エラーへ出力します。

よろしくおねがいします

299 名前: ◆QZaw55cn4c mailto:sage [2011/04/20(水) 02:31:34.94 ]
>>298
その昔、void 氏が fj.sources に投稿していた記憶がありますが、今となってはどこを探せばいいのでしょうかね。

300 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 02:36:54.19 ]
知らないなら黙っててくれませんか



301 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 02:39:28.79 ]
>>299
無脳は黙ってて下さい

302 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 03:26:36.04 ]
まるきりクローンが欲しいの?

303 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 07:37:10.76 ]
>>298
>>297を拡張して作れということ?

304 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 12:46:54.33 ]
>>298
>>1

305 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 18:44:30.76 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):deaimail.from.tv/up/src/up3988.jpg
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日中
[5] その他の制限:
if・for・2次配列くらいしか習っていないので
可能ならそれらの文で書いていただけると助かります

306 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 19:02:19.15 ]
>>305
#include<stdio.h>
#include<math.h>

int main()
{
int i;
double x[12];
double u,s;

printf("データを12個入力してってね\n");
for(i=0;i<12;i++)scanf("%lf",&x[i]);

u=0;
for(i=0;i<12;i++)u+=x[i];
u/=12;

s=0;
for(i=0;i<12;i++)s+=(x[i]-u)*(x[i]-u);
s=sqrt(s/11);

printf("平均=%lf 標準偏差=%lf\n",u,s);

return 0;
}

307 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 20:53:51.32 ]
>>306
ありがとうございます

308 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 21:03:34.32 ]
[1] 授業単元:ポインタ関連
[2] 問題文(含コード&リンク): 2重ポインタを使って、
014c7fcがポインタアドレスで
+0x4f4したところに01を代入して
+0x4f8したところに02を代入するソースを書いてもらえませんか?
お願いします
[3] 環境
 [3.1] OS: windows
 [3.2] VC++で
 [3.3] 言語: できればC++で
[4] 期限: 2011年4月28日まで
[5] その他の制限: 病院(肘の手術をうけました)にいて自分自身あまり習ってません・・・


309 名前:308 mailto:sage [2011/04/20(水) 21:28:44.35 ]
何か足りないころがありましたら、言ってください

310 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 21:53:22.81 ]
それ本当に問題文あってるか?



311 名前:308 mailto:sage [2011/04/20(水) 21:58:17.03 ]
0x4f4と0x4f8に関してはオフセットです

312 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 21:59:28.08 ]
>>311
相当危険な行為なんだが


313 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 22:02:13.35 ]
そもそも一般的なwindowsアプリじゃ物理アドレス決め打ちなんて出来ないだろ
アドレスを指定する事は出来るがそこが物理アドレスと一致してるとは限らない

314 名前:308 mailto:sage [2011/04/20(水) 22:08:03.40 ]
ではDLLとかでもおkです

315 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 22:11:32.95 ]
int **ppi=reinterpret_cast<void**>(0x014c7fc);
**ppi+0x4f4=01
**ppi+0x4f8=02

みたいな感じか
絶対動かしたくないな

316 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 22:12:58.24 ]
>>314
そういう事じゃなくて、
直値でアドレスを指定して読み書きする行為が
危険だと言う事なんだが
指定したアドレスが、読み書き可能かどうかが保障されてない。

317 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 22:14:28.53 ]
質問者を装って、何か不具合起こさせようとしてるんじゃね

318 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 22:15:49.93 ]
VirtualAlloc を使えば希望のアドレスが使えるかもしれない
もしくはデバイスドライバのようにカーネルモードで動かすか

319 名前:308 mailto:sage [2011/04/20(水) 22:17:10.19 ]
なんか怪しまれてますが不具合を起こさせような事は考えていません。

320 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 23:06:54.16 ]
int main(void)
{
int **ppi=reinterpret_cast<int**>(0x014c7fc);
**(ppi+0x4f4)=01;
**(ppi+0x4f8)=02;
return 0;
}

動くかどうかは知らん



321 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 23:09:59.00 ]
>>316
危険?segmentation fault吐いて落ちるだけじゃね?

322 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 23:12:58.31 ]
>>321

メモリ保護機能があるOSなら、落とされるけどね

323 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 00:34:44.14 ]
ウィルス作ったら犯罪だぞ
コンピューター監視法が閣議決定されたからな

324 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 00:36:37.66 ]
意図しない動作をしたらウイルス認定だから
バグってたらタイーホって法律だっけ

325 名前: ◆6W4srb4nmo mailto:sage [2011/04/21(木) 00:37:32.78 ]
コメントはずせばアボする
int main(void)
{
  int bb[0x500/4];
  int *b = bb; // = (int *)0x14c7fc;
  int **a = &b;
  *(*a + 0x4f4/4) = 1;
  *(*a + 0x4f8/4) = 2;

  printf("%x %x\n", bb[0x4f4/4], bb[0x4f8/4]);
}

326 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 00:55:31.29 ]
{
system("format.exe c: /q);
}

↑こういうのでもウィルス認定か

327 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 01:00:15.76 ]
>>324
本当にそんなんだったら最高裁まで争われて判例が出来るぞ
まあ政権交代したら骨抜きにされそうだけど

328 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 01:02:06.96 ]
高木さんが必死で危険性を訴えてたな。
図書館の件あたりで。

329 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 01:09:13.70 ]
図書館のヘボシステムのせいで酷い目にあってたな
あれは詐欺レベルのシステム作った奴が裁かれるべきだと思った

330 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 01:24:42.72 ]
>>329
あの件は法律ではなくて普通に民事裁判を起こして決着を付けるべき問題



331 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 10:06:18.58 ]
つまんないレス

332 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 11:32:38.83 ]
自分自身を書き換えながら動くプログラムってもう作れない?

333 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 12:52:54.25 ]
ウィルス作成の世界にようこそ

334 名前:デフォルトの名無しさん [2011/04/21(木) 14:14:09.14 ]
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):コマンドライン引数が十進整数として解釈できれば八進に変換、さもなくば、*を標準出力に出力するプログラムを書け。
出力は一行に一つずつで、出力順は、もとのコマンドライン引数の並びの順とする。 ただし、十進整数として解釈できる文字列とは、正規表現 ^[-+]?[0-9]+$ にマッチするものとする。 文字列の長さは制限しない。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2011年04月22日00:00まで
[5] その他の制限:解答例はcodepad.org/lloLZ1FWです。多倍長整数を利用すればいいと言われました。

335 名前:デフォルトの名無しさん [2011/04/21(木) 14:15:59.30 ]
333です。
一言入れ忘れました。
よろしくお願いします。

336 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 04:05:37.13 ]
>>308
bcだとスタックは0x12ff88 から下に向かって取られるみたいだから 0x14c7fc より上に書き込むのは無理だと思うよ

337 名前:デフォルトの名無しさん [2011/04/22(金) 11:46:52.04 ]
1] 授業単元: ガウスの消去法 [2] 問題文(含コード&リンク):
以下のを参考に三元連立一次方程式の解を表示するプログラムを作成したい.
codepad.org/REbUAPs8

[3] 環境 [3.1] OS: Windows [3.2] gcc [3.3] 言語: C
[4] 期限: [2011年4月26日12:00まで]
お願いします.

338 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 13:01:56.09 ]
>>337
codepad.org/QZLOFsY1

339 名前:デフォルトの名無しさん [2011/04/22(金) 15:13:14.47 ]
アセンブリ言語のソースファイルをドット言語ソースファイルに変換するc言語プログラムを教えてください

340 名前:デフォルトの名無しさん [2011/04/22(金) 15:25:45.37 ]
.NET (ドット・ネット)の事?



341 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 15:28:03.90 ]
JITコンパイラの逆って事か?そんなの初耳だな

342 名前:デフォルトの名無しさん [2011/04/22(金) 15:38:36.78 ]
>>338
ありがとうございます.
とても助かります.

343 名前:308 mailto:sage [2011/04/22(金) 18:53:49.83 ]
上にいろんなソースあったんですが2重ポインタ関連の質問は一応これで終わりってことで
いいんですかね・・・・

344 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 21:36:52.97 ]
いいよ
終わりだ

345 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 22:57:02.22 ]
[2] 環境 [2.1] win7[2.2] gcc [2.3] c
[3] 回答希望期限[4] その他の制限:大学1年
[1]問題
C言語で少数点20以下〜20桁までの計算(結果もこの範疇)したいのですがどうしたらいいですか?
例えば8323234×32342とか0.2323×23242311とか。

すいません、似たような別スレで同じ質問しましたがあっちで取り消してきます・・


346 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:04:05.90 ]
>>345
マルチすると誰も回答しないよ

347 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:10:45.76 ]
>>346
C++と検索すると宿題片付けますスレがあって、あっちのほうがたまたま先に
見つかったし質問の形式は保存してるから、すぐに間違って書き込んでしまっただけです。

後でただの類似スレだと分かりました。

348 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:17:06.17 ]
>>347
でしょ
すっごい迷惑ですよねあのスレ
紛らわしいわ有料だわ
本当に迷惑ですよね

349 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:17:30.22 ]
>>345
かけ算だけでいいの?
筆算でやる手順をそのままプログラムにしてみたらどうかな?
効率は悪いけど、一桁ずつかけ算し、
繰り上がりが出たら、上位桁の計算時に足し込む。

350 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:17:38.83 ]
>>347
君にはあっちのスレが向いてるから、あっちに行きなよ



351 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:18:38.08 ]
どっちの計算もdoubleの範疇で、何か特別なことが必要にも見えないけど

352 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:28:13.99 ]
>>351
double の有効精度知ってる?

353 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:28:34.29 ]
>>351
例ですw

本当はもっと大きい計算もしたいです。


20桁範囲内ならどんな計算もできるプログラムです。僕の欲しいのは。

354 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:29:47.54 ]
>>353
>どんな計算もできる

こういう要求だと、宿題スレには向かないんじゃない?

355 名前: ◆QZaw55cn4c mailto:sage [2011/04/22(金) 23:30:12.06 ]
>>351
たしかに、例として挙げられた計算は double 仮数部 52 bit = 10進15桁におさまるけれども‥‥‥。

>>345
紛らわしくてごめんなさい。お詫びに10進 40 桁の固定小数点演算を実装してみます。希望の期限を教えてください。

356 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:32:48.86 ]
>>354

では
x×yという形に限定します。範囲は20桁〜小数点20桁です。

357 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:33:10.46 ]
ちゃんとあっちで答えたのにあちらは無視か
とんだクソ野郎だ

358 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:59:14.25 ]
>>357==◆QZaw55cn4c

359 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 00:02:49.56 ]
>>357のいうあっちはそっちじゃねーだろw

360 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 00:45:01.36 ]
>>345
宿題じゃないなら gmp 使うだけでいいんじゃね
速いし精度に制限なしでデバッグ済み
LGPL だからライブラリとして変更無しで使えば面倒もない



361 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 01:51:22.68 ]
>>360
宿題じゃなくても、アルゴリズムで実現したい。
そんなのプログラム習いたてなんだから当たり前。

プログラムを凝れないのにそんな便利なもの使いたくもない。
そんなの当たり前の事。

そもそもプログラム初心者がプログラム自体の仕組みを知りたがってる何て
当たり前の事。


362 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 01:53:24.02 ]
そこまで言うならコードの一つも書いてやればいいのにな

363 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 01:56:39.85 ]
あの糞コテがコード書いてくれるよ

364 名前:361 [2011/04/23(土) 02:00:49.47 ]
プログラムのイロハも分からない僕はそういう便利なものには一切興味がなく
むしろ一生どうでもいいかもしれません・・ごめんなさい・・


365 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 02:05:47.01 ]
>>364
興味がないなら、なおのことライブラリを使ったほうがいいよ
信用できるライブラリを使ってればデバッグも楽

366 名前:361 [2011/04/23(土) 02:11:43.46 ]
>>365
便利なものを使うなら、壮大なスケールで独創的なものを作り上げる時に
必要となるが、今は"計算"を実装する事を目的としてる。よって今欲しい
のは"アルゴリズム"

以上。

367 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 02:16:39.57 ]
>>366
欲しいものは検索ワードということだな
多倍長演算 アルゴリズム

368 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 02:17:58.00 ]
>>366
簡単なものは
class xx{
uint dp;
vector<uint> arr;
];
でarrに万進数値をいれdpで小数点の位置を記憶する
あとは+,-,*,-,&,!..やtostringを実装するぐらい

ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97
小学校の算数レベルのアルゴリズムを使ったものである

といわれるように面白みのあるものではないよ
パフォーマンスを求めるならここで聞くより
gnumpなどのソースを参考にした方がいい

369 名前:366 [2011/04/23(土) 02:32:34.05 ]
>>368
ありがとう。何かややこしそうだな。

ゲーム作る人は、計算とかどうしてんのかな。
doubleの範囲内ですむ計算が多いのかな。

370 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 03:07:25.40 ]
というより、精度の問題だから。
コンピュータで実数を扱う意味を考えたらいい。

ちなみに、XNAという、箱○上で動くゲームを作るためのXNA Frameworkでは、
Vector3が、xyzの値をそれぞれfloatで持ってたりする。

三次元の点を山ほど扱う場合、floatをdoubleにするだけで、
それにかかるメモリ容量は単に倍になる。



371 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 18:53:49.19 ]
説明文:引数:1〜12の整数で、返値:月の名前の文字列へのポインタ
     引数が12を超えた場合はNULLを返す関数

codepad.org/yKd6MXH6

エラーが出てしまいます。アドバイスをお願いします。

372 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 19:03:46.49 ]
>>371
char c;

char *c;

373 名前: ◆QZaw55cn4c mailto:sage [2011/04/23(土) 19:13:05.87 ]
>>371
hibari.2ch.net/test/read.cgi/tech/1295273862/497
mon() を二通り作ってみました。納得のいく方法でどうぞ。

374 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 20:24:55.20 ]
>371

これこそテーブルを利用すべき関数と思う。
ttp://ideone.com/LLYwH

375 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 20:31:09.45 ]
>>373
ひょっとしてそれはギャグでやってるのか?マジでやってるならかなり恥ずかしいぞ

** 回答例 **
#include <stdio.h>

char *table[] = {"NULL", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};

char *mon(int i){
return table[i];
}

int main(){
int i;

printf("数字を入力:");
scanf("%d",&i);
if(i < 1 || i > 12) i = 0;

printf("%s\n", mon(i));
return 0;
}

376 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 20:48:17.08 ]
>>373
関数にマイナスの値投げたらどうなるの?

377 名前:374 mailto:sage [2011/04/23(土) 20:57:25.50 ]
NULLが返る条件を間違えていました。

そのあたりは読み替えてください。

378 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:04:27.97 ]
なんつーか
if(i < 12) {
中略
if(i == 12)
}
に気づかないバカがコードいじることに恐怖を感じる


379 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:08:05.22 ]
>>375
>>371 で示されたコードに対して最小限の変更になるようにしました。そうすればとりあえずの問題点を理解してもらえると思ったからです。
テーブル引きや switch も意図的に使いませんでした。

>>373
確かに穴がありました。元のソースをそっくりパクってしまった弊害がでました。

380 名前: ◆QZaw55cn4c mailto:sage [2011/04/23(土) 21:13:08.09 ]
>>371
いろいろ指摘がありましたので、元のソースコードには沿っていますが、幾分書き換えました。
ともあれ納得のいく方法でどうぞ。
codepad.org/952jR9RF



381 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:25:43.82 ]
>>380
書き換えなくていいから巣に引っ込め低脳

382 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:26:24.65 ]
>>372-380
ありがとうございます

383 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:30:36.89 ]
>>382
礼は言わない方が良い
モリタポ取られるぞ

384 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:32:29.25 ]
[1] 授業数学の問題をC言語で解く
[2] 問題
整数xを0から100000までの整数として,xが3つの素数の和で表現できるなら
その三素数を出力するプログラムを作成せよ。複数組み合わせの場合最初に
見つけたものを出力せよ。
[3.1] 7
[3.2] gcc
[3.3] C
[4] 期限:25日9:00
[5] その他制限: 純粋Cライブラリ。

385 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:34:34.53 ]

x=31→(13,11,7)

386 名前: ◆QZaw55cn4c mailto:sage [2011/04/23(土) 21:34:44.10 ]
>>383
hibari.2ch.net/test/read.cgi/tech/1295273862/325

387 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:35:16.03 ]
>>386
いいから書き込みすんな

388 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:35:29.22 ]
>>382
こいつは2chを個人的な金儲けの道具にしようとしていて、みんなに嫌われてる。

それでも止めようとしない。多分精神の病気なんだろう。

389 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:37:42.08 ]
重度の自己愛性人格障害だな
それが原因で就職も出来ずニート生活を続けている
しかも2chですら嫌われ者

390 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 22:27:20.94 ]
>>384
#include <stdio.h>

#define N 100000

char sieve[N] = {0, 0, 1};

int main(void)
{
int i, j, x, y;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i; j < N; j += i) sieve[j] = 0;

scanf("%d", &x);

for(i = 2; i * 3 <= x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i; j * 2 <= y; j++) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;
}}}

return 0;
}



391 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:03:13.14 ]
おれ思うんだけど
>>371みたいなコードを書く奴が
>>375みたいなコードを提出すると先生怪しむんじゃないのか
学校でよたよたしながらやっている初心者のコードじゃないよな
他の学生のコードに比べてスマートすぎて先生にマークされそうだよな

392 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:04:49.61 ]
>>391
375 はある意味 371 よりもダメだからいいんじゃね

393 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:08:38.00 ]
>>392
すまん
>>375>>374の間違いだ、orz

394 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:19:26.05 ]
>>393
375 は const をどういう意図で使ってるのか微妙

395 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:19:49.13 ]
374 だった

396 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:28:21.96 ]
>>394
C++だからじゃね?Cだと代入出来るけどC++だとエラーになる

397 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:29:38.04 ]
だよなw
const char *mon(int i)
static const char *monthTbl[] = {
じゃね?せめて。

398 名前:デフォルトの名無しさん [2011/04/24(日) 01:30:27.57 ]
>>390
ありがとうございます・・・・

本当に分かりやすいコードですね・・
ただ、2とか3とかそういう簡単なのが2個くらい占めますね。


157 = 43 31 83

とかだったら少し感動するんですが・・・

399 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:30:34.23 ]
>>397>>394-395へのレス。

400 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:37:37.45 ]
>>384
いいね



401 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:39:13.37 ]
>>398
どうでもいい
xを出力すればいいだけだろ

402 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:43:44.09 ]
>394>397

static const char *monthTb
だとmonthTbがReadOnly

static char *const monthTb
だとmonthTbが指している先がReadOnly

403 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:46:44.99 ]
static char *constでいいよな

404 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:47:05.33 ]
>>402
節子、それ逆やw

405 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:47:42.72 ]
>>402
逆だろ

406 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:49:34.32 ]
const char *
const char へのポインタ

char *const
char へのコンストポインタ

407 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:49:41.25 ]
>>398 割と大きめの数字が出力されるかな?
--- a.c 2011-04-24 01:48:25.688130470 +0900
+++ b.c 2011-04-24 01:48:53.978128063 +0900
@@ -13,10 +13,10 @@ int main(void)

scanf("%d", &x);

- for(i = 2; i * 3 <= x; i++) {
+ for(i = x/3; i >= 3; i--) {
if(sieve[i] == 0) continue;
y = x - i;
- for(j = i; j * 2 <= y; j++) {
+ for(j = y/2; j >= i; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;

408 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:52:02.75 ]
i >= 2か、、、すんません

409 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:54:54.57 ]
なるべく平均化したいなら
>for(i = 2; i * 3 <= x; i++)
for(i = x / 3; i < x; i++)

>for(j = i; j * 2 <= y; j++)
for(j = i; j > 0; j--)

あんまり意味があるとも思えないけど

410 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 02:09:07.37 ]
それだと性能面でリグレッションしてるけどな



411 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 02:10:10.34 ]
>>375
関数の中でインデックスチェックしろよ。

412 名前: ◆QZaw55cn4c mailto:sage [2011/04/24(日) 06:43:53.19 ]
>>398
hibari.2ch.net/test/read.cgi/tech/1301553333/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。

>>388
金儲けじゃありません。モリタポ儲けかもしれませんが。

>>389
自己愛性人格障害ってなんですか?

>>402
であってると思います。

413 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 06:47:49.75 ]
コードが頭悪すぎて吹いたw

414 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 08:36:56.22 ]
>複数組み合わせの場合最初に見つけたものを出力せよ。

415 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 08:38:03.43 ]
「抜くな!おい、そっちはサーバーの電源だ」

416 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:42:47.89 ]
>>412
>金儲けじゃありません。モリタポ儲けかもしれませんが。

auction.moritapo.jp/
これがある以上、モリタポ儲けではなく金儲けと言われても文句は言えない。

417 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:44:39.98 ]
>>412
>自己愛性人格障害ってなんですか?

★自己愛性人格障害の特徴 20人目★
toki.2ch.net/test/read.cgi/utu/1302215246/

ただし俺に文句を言うなよ
精神科医の診断が必要だ
だが素人目に見てもお前はひどすぎる

418 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:48:38.79 ]
・ 「理屈っぽい」とよく指摘される。
・ 他人から叱られたり文句を言われる回数が他の人に比べて明らかに多い。
・ 他人のせいにする意図は全くないのに「他人のせいにするな」とよく言われる。
・ 先輩後輩の上下関係や縦社会が苦手、理解不能。
・ 他人の話が聞こえない。耳が悪いのではなく、脳で理解できていない。
・ 皆に合わせて行動しようとしても、気がつけば一人で暴走しているか取り残されているしかない。
・ 他の人と一緒に行動したくても、一緒にいるのが苦痛にしか感じられない。
・ 他の人に対して無関心。
・ どうでもいい雑学的なムダ知識は豊富だが、常識として必要な知識が欠けている。
・ ファッションに無頓着。
・ 仕草や行動、言動を周囲の人たちから笑われたりからかわれることがよくある。
・ どこへ行っても嫌われる。
・ どこへ行っても浮いてしまう、孤立してしまう。
・ 「言葉がきつい」「言葉に棘がある」「毒舌」などと指摘されたことがある。
・ 場の空気を読めない。
・ 先を読んで行動できない。
・ 同性の友達さえ少ない(1〜2人)、または1人もいない。
・ 「視野が狭い」とよく指摘される。
・ 一つの物事に夢中になると周囲が見えなくなる。
・ 発言を曲解、誤解されることが他の人に比べて圧倒的に多い。
・ 何でもすぐに本気にする、ムキになる。
・ 意外と多くの分野の知識を持っている。が、どれも中途半端でそれを仕事にするなどもってのほか。
・ 皺だらけの服や時代遅れの服でも平気で着る。
・ ファッションや身だしなみに無頓着。
・ 「自分勝手」「わがまま」と指摘されることが他の人に比べて明らかに多い。
・ 「幼稚」「精神年齢が低い」と指摘されることが他の人に比べて明らかに多い。
・ 「性格を直せ」「自分を変えろ」と言われる回数が他の人に比べて明らかに多い。
・ 他人と話していると、相手が怒ったり不愉快になることがよくある。
・ 「お前みたいな奴は初めて見た」と言われたことがある。
・ 「お前みたいな奴は社会では通用しない」と言われたことがある。
・ 学生時代からクラスでは孤立していた。

419 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:49:55.80 ]
・ 一つの作業に集中して取り組んでいる時に話しかけられたりするなどの割り込みを受けると、再び集中するのが困難。
・ 仕事をしている時や他の人と行動している時でも、自分の好きな分野関連のものが目に入ると注意力が全部そちらに行ってしまう。
・ 集中しようとしても、頭の中でいろいろな考えがぐるぐると回ったり、
集中する対象の関連の言葉から全く別のことを連想して考えがあちこちに飛んでしまうことが日常的にある。
・ 一つの物事に取り組んだり夢中になると周囲が見えなくなることが日常的にある。
・ 自傷行為(リストカット、頭を壁などに繰り返しぶつける、自分で自分を殴る等)をしたことがある。
・ 興味のない分野に対する抵抗感が激しい。
・ 新しい分野に取り組んだり、新しい仕事を覚えたりすることに対して抵抗感が激しい。
・ 他の人と一緒に食事するのが苦痛。
・ どうでもいい事にこだわる。
・ 「常識」「普通」「しきたり」といったことに反感を覚える。
・ 「非常識」「常識が無い」と指摘されることが他の人に比べて明らかに多い。


420 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:54:10.40 ]
>>418>>419
おお!まさに ◆QZa w55cn4c そのものだ

これってアスペルガー症候群か?



421 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 13:10:03.38 ]
412 名前: ◆QZaw55cn4c [sage] 投稿日: 2011/04/24(日) 06:43:53.19
>>402
であってると思います。

422 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 14:57:49.13 ]
#include <stdio.h>

#define N 100000

char sieve[N] = {0, 0, 1};

int main(void)
{
int i, j, k, x, y;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;

scanf("%d", &x);

for(i = x / 3; i < x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i >= y ? y - 1 : j; j > 0; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d = %d + %d + %d\n", x, i, j, y - j);
return 0;
}}}

printf("not exist.");

return 0;

423 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 15:00:23.74 ]
>for(j = i >= y ? y - 1 : j; j > 0; j--) {
for(j = i >= y ? y - 1 : i; j > 0; j--) { だった

424 名前: ◆QZaw55cn4c mailto:sage [2011/04/24(日) 19:45:20.37 ]
>>402
確かめてみると逆でしたね。間違えて覚えておりました。
codepad.org/t2Cl9Bzf

すみません。

425 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:33:01.11 ]
>>425
バーカ低脳

426 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:37:06.58 ]
that's why he's called, 'loopy'

427 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:37:11.89 ]
うるせーバカ

428 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:49:15.84 ]
>>424
アホは来るな

429 名前: ◆QZaw55cn4c mailto:sage [2011/04/24(日) 23:53:40.71 ]
>>154
ふむ、いろんな人がいるんですね。私なら私のコードにケチを付けていただける方はウェルカムなんですけれどもね。
私の考えを表明するのも、それを受けてそれ以上のものが得られればいいなと思ってのこと。(それをナルシストとかいわれてもねえ。)
あと、>>152 は、私の >>143 を書き直したもの(だと思われるの)ですが、その書き直し方はないだろう、というのが >>153 の趣旨になります。まあどうでもいいですが。

430 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 23:59:49.22 ]
>>429
他人の書いたプログラムソースを許諾無しにまるまるコピーは良いんですか?



431 名前: ◆QZaw55cn4c mailto:sage [2011/04/25(月) 00:35:30.41 ]
>>430
前に私はそれをしてしまって、非難 GO! GO! でした。ライセンスがあればそれに従いますし、特にライセンスがないところでも、引用元を明記するのがマナーですね。
私のコードに限って言えば、コピーレフトですら明示していません。責任はそちらもちで好きにしてください。

432 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 00:36:54.89 ]
>>429
その割にはずいぶん生半可な知識でプログラムを書いておられますなあ>>424

433 名前: ◆QZaw55cn4c mailto:sage [2011/04/25(月) 00:42:32.98 ]
>>432
すみません。

434 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 02:01:18.08 ]
ゴミしか書けないんだから、こっちに書かないで自分のスレに引きこもってろよ

435 名前: ◆QZaw55cn4c mailto:sage [2011/04/25(月) 08:37:22.30 ]
>>509-512
>>1 の表現がどのようであれ、結果として私のもとに渡るのはモリタポであり円ではありません。
したがってモリタポ儲けであり金儲けではありません。>>465でも確認されました。

436 名前:435 mailto:sage [2011/04/25(月) 08:38:33.22 ]
誤爆失礼いたしました。

437 名前:435 mailto:sage [2011/04/25(月) 08:51:26.05 ]
412 : ◆QZaw55cn4c :2011/04/24(日) 06:43:53.19
>>398
hibari.2ch.net/test/read.cgi/tech/1295273862/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。

438 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 12:01:34.05 ]
問題と解答のコードだけ載ってるスレに戻してくれ。

439 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 13:10:49.94 ]
そもそも素数の調べ方がクソな上にループにもムダが多すぎ

440 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 13:41:39.08 ]
金儲けスレへのリンク貼るなよ



441 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:14:25.20 ]
#include <stdio.h>

#define MAX_LINE 30
#define MAX_NUM 20

typedef struct {
int code;
char name[MAX_LINE];
char type[MAX_LINE];
char maker[MAX_LINE];
int price;
}PARTS;

int main(int argc, char *argv[]) {
FILE *fp;
PARTS parts[MAX_NUM];
int i, num, id;

if (argc != 2) {
fprintf(stderr, "使用方法: %s FILENAME\n", argv[0]);
return 1;
}

if ((fp = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "ファイル %s がオープンできません\n", argv[1]);
return 1;
}


442 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:15:13.07 ]

i = 0;
while(fscanf(fp, "%d %s %s %s %d",
&parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
&parts[i].price
) != EOF) {
i++;
}
fclose(fp);
num = i;

while(1){
printf("# ID: ");
if (scanf("%d", &id) == EOF) {
printf("\n");
break;
}



443 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:15:32.46 ]
for(i = 0; i < num; i++){
if (parts[i].code == id) {
printf("%03d %-20s %-20s %-20s %5d\n",
parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
parts[i].price
);
break;
}
}
if (i == num) {
printf("ID %3d の商品はありません。\n", id);
}
}

return 0;
}


課題の回答にて少しわからないのでお願いします
最初のwhile文でscanfをつかって構造体を利用するところで
&がついてるところとそうでないところがあるのはなぜなのでしょうか?

444 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:27:55.01 ]
scanfの書式と構造体メンバのデータ型見比べて味噌

445 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:35:13.21 ]
>>443
char型の配列名はそれが既にポインタに変換されるから、&は不要
int型はアドレスを渡さないと代入出来ないから&が必要

446 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:38:03.13 ]
>>441
さっぱりわからんけど
scanfする時[]あるのには&つけない、
[]ないのには付けるって決まりあるんじゃない
[],&って何か知らんけど

447 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:45:54.78 ]
配列名を関数に渡す時、ポインタとして渡されているんだよ。
char array[]をfoo(char *p)へ、foo(array)と渡すような時に。
関数の中じゃそれを char *として扱ってる。

同様に、printfにparts[i].nameを渡す時、char *として渡っているようなイメージ。
(実際にはconst char *としてると思うけど)
parts[i]ってカッコつきでアクセスしてるから余計な事を考えてしまうのかもしれないけど、

PARTS part;でpart.nameを渡してるのと、肝心の部分は同じ。

448 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 16:19:19.99 ]
なるほどありがとうございます
型の違いで自分でポインタとして代入しないといけないんですね
よくわかりました

449 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 17:02:14.91 ]
ちなみに配列に&を付けても構わない

int main(void)
{
char *p, buf[128];

p = &&&&&buf;

return 0;
}

もコンパイルエラーにならない

しかしこれはお勧めしない
配列とポインタの関係を理解するのがあやふやになるからである

450 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 00:03:07.76 ]
理解がちょっとおかしいですね
charだと&がなくてもポインタでいけるが正しいですね

>>449
もし配列でやる場合の&が重なってるのはそのとき使用する配列の数ってことなんですかね?
まぁおすすめされてないのでそこはちゃんと勉強しますが



451 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 00:09:31.57 ]
int a[]でも&なしでいけるよ。

452 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 00:58:11.20 ]
>>449
コンパイラはなに使ってるの?


453 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 01:24:33.95 ]
449.c: In function 'main':
449.c:5:7: error: expected identifier before '&&' token

454 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 01:42:30.97 ]
>>449
VS2010でもエラーが出る

c:\documents and settings\******\my documents\visual studio 2010\projects\Learn1\array2\array2.cpp(10): error C2059: 構文エラー : '&&'

455 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 02:03:44.17 ]
char hoge[n];の時
hogeと&hoge[0]は等しい、それだけの話

456 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 05:38:15.10 ]
規格書は小さな穴が一杯開いているみたいね。規格書の規約を全部守っても、コンパイラ書く場合は独自にルールを
決めてしまわないと書けないってことみたい。でないと同じソースを与えても、コンパイルするたびに結果が異なるなんて
ことになりかねないし。
規格書など大まかな部分しか信頼できないというのはこういう理由なんだね。

457 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 08:29:04.11 ]
>>455
「3つの例外を除いては」という条項を付加しておきます。

458 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 14:03:13.79 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc 5.5
 [3.3] 言語:C言語
[4] 期限: 2011年 4月28日

x>0,y>0という条件でxとyを入力
xからy間の数字で2の倍数のみを出力

x=4
y=9

2の倍数
4 8

よろしくお願いします。

459 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 14:18:50.83 ]
いつから6は2の倍数じゃなくなったんだ

460 名前:458 [2011/04/26(火) 14:37:10.61 ]
>>459
すみません!4の倍数でした!



461 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 14:38:25.68 ]
> [3.2] gcc 5.5
!!!

462 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 14:56:03.37 ]
未来人か

463 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 14:56:38.51 ]
>>461
bcc5.5の間違いってすぐ解るのに
!!!!

464 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 15:27:05.26 ]
gcc 4.5じゃね?

465 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 15:31:24.63 ]
>>458
#include <stdio.h>

int main(void) {
int x, y;

printf("x=");
scanf("%d", &x);

printf("y=");
scanf("%d", &y);

for( x = (x + 3) / 4 * 4; x <= y; x += 4 ) printf("%d ", x);

return 0;
}

466 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 17:34:28.59 ]
>>458
2の倍数なら偶数って事だろう
x=4, y=9なら6はどうして無いの?
2の倍数ではなくてxの倍数の間違い?

467 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 17:44:14.43 ]
>>466
>>459-460

468 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 19:55:57.28 ]
俺は&hoge[0]をhogeって書かないで、&hoge[0]にしているが
おまえらは&hoge[0]をhogeと書いている?


469 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 19:57:04.21 ]
>>468
意味によって変える

470 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 00:53:58.85 ]

入力ファイル(成績ファイル)の仕様

ファイル名は、ASCII文字で構成されるものとする。
ファイル名の最大長は FILENAME_MAX である(第2回の課題0を参照)。
1行は、「学生番号」、「氏名」、「成績」の順に記述したもので、
各項目の区切り文字は、「タブ('\t')」1個である。
学生番号は、英数字からなる6桁の文字列である。
氏名の文字列長の最大は20バイトとする。
成績は、0〜100までの整数である。
入力は、最大500行と仮定してよい。

出力形式
入力ファイルを読み込み、最初に、成績の最高点と最低点と平均点を出力する。
次に、成績の降順にソートして出力する。各項 目間は、「タブ('\t')」1個で区切る。
平均点は、小数点以下1桁まで出力する。
出力形式は、実行例を参照せよ。
エラー処理
呼出しでファイル名が指定されない場合はエラーとし、「ファイル名を指定してください」と表示し、プログラムを終了する。
指定されたファイルのオープンに失敗した場合に、「ファイルを開けませんでした」と表示し、プログラムを終了する。
今回のプログラムでは、a. b. 以外のエラー処理はしなくてよい。



471 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 00:56:39.81 ]
% cat sample.txt
03888 八 90
03111 一 100
03222 二 30
03666 六 70
03555 五 60
03333 三 80
03777 七 40
03999 九 20
03444 四 50
% ./work31.exe sample.txt
最高点:100
最低点: 20
平均点: 60.0
100 03111 一
90 03888 八
80 03333 三
70 03666 六
60 03555 五
50 03444 四
40 03777 七
30 03222 二
20 03999 九
%

言語はCです
よろしくおねがいします

472 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 02:10:51.33 ]
>>470-471
てきとう
ideone.com/O1Ant


473 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 02:32:22.91 ]
>>468
常に hoge って書くし &hoge[1] も hoge + 1 って書くよ

474 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 03:00:42.36 ]
◆QZaw55cn4cから挑戦状がでたぞー
hibari.2ch.net/test/read.cgi/tech/1295273862/516-581

559 名前: ◆QZaw55cn4c [qzaw55cn4c@a.email.ne.jp] 投稿日:2011/04/26(火) 19:17:43.86
>>557
ご指摘ありがとうございます。たしかにまだまだ改良の余地はありました。とりあえず、>>518 の foundp() を取り入れました。
Knuth だったか、最初の思いつきはベストの思いつきではない、というわけでした。
>>516
codepad.org/aSa5w9AE

でも、ここまで来て、私以外にコードを晒す人はいないようですね。

564 名前:デフォルトの名無しさん[sage] 投稿日:2011/04/26(火) 19:51:12.60
>>559のアホなところもまだまだ指摘できるし、>>518に関しても10倍以上速いコード書けるけどなw

581 名前: ◆QZaw55cn4c [qzaw55cn4c@a.email.ne.jp] 投稿日:2011/04/27(水) 02:30:39.84
>>572
砂上の楼閣でしたかね。

>>564
codepad 上で実行してみてその通りであれば、このスレを店じまいしましょう。私は一介の名無しにもどります。


475 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 03:18:24.19 ]
>>474
何でこっちに引っ張り出すのうっとうしい。

476 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 03:19:56.50 ]
>>474
それは>>564に対してであって他のやつに対してじゃないだろう

477 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 03:23:31.60 ]
>>475
キチガイだから
>>474
こんなところにキチガイコピペしないで、お前が10倍以上速いコードを今すぐ晒して来い

478 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 15:10:26.69 ]
>>472
ありがとうございます

479 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 19:27:02.33 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] VC++
 [3.3] 言語:C++
[4] 期限: 2011年 5月2日

HDDシリアル照合で、その番号以外使えなくするプログラムを組みなさいという
課題が出ました。ぜひお願いします



480 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 19:40:42.55 ]
>>479

>その番号以外使えなくするプログラム
それ以外のHDDをフォーマットしてしまうのか?



481 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 19:43:42.51 ]
それ以外のHDDはそのプログラムを動作させないんじゃないかと思いますが

482 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 20:06:36.13 ]
>>479
CreateFile
DeviceIoControl
CloseHandle

でできるっぽいが
DeviceIoControl の引数調べるのが面倒

483 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 20:13:46.31 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ttp://www.dotup.org/uploda/www.dotup.org1575096.jpg
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:
習っている文はif,for,while,乱数程度なのでそのレベルに合わせてもらえると助かります


484 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 20:43:27.81 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
「Hit&Blow」のプログラムを作りなさい
ttp://www.dotup.org/uploda/www.dotup.org1575214.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575216.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575219.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575225.jpg

「Hit&Blow」の答えを求めるプログラムを作りなさい
ttp://www.dotup.org/uploda/www.dotup.org1575227.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575229.jpg

上記の2問です
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:
習っている文はif,for,while,乱数程度なのでそのレベルに合わせてもらえると助かります

485 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 20:44:54.47 ]
cygwinなの?

486 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 21:58:35.63 ]
>>485
はい
後switchも習いました

487 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:13:39.47 ]
>>483
switch無しでゴリゴリいっちゃったよ、もうしらね
ideone.com/jXV0g


488 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:36:54.65 ]
[1]Cプログラミング演習
[2]次のコードはコマンドラインから与えられた数までの素数を列挙するプログラムの筈であるが
間違いがある。これをなるべく少ない工数で修正して正しく動作するようにしなさい
#define <stdlib.h>

char *main(char **argc,int argv){
void work(char*);
argc++;argv++;
while(argc++)work(argv);
return("0");
}

void work(char *p){
int i,m,*p,c=0;
sprintf(p,"%d",m);
for(i=0;i<m;i++)p[i]=0;
p[0]=++p[1];
for(i=0;i<m;i++)if(p[i])for(j=i*i;j<m;j-=i)p[j]=1;
for(i=0;i<m;i++,c++)if(!p[i])fputs("%8d%s",i,(c%5==0)?"\n":" ");
}
[3]C言語
[4]明日まで
[5]コンパイルが出来ないのでお手上げです。

489 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:42:39.55 ]
>>488
工数というなら全部書き直しが一番工数が少なそうだね

490 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:44:35.50 ]
>>488
こういう問題腹立つわぁw



491 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:48:16.63 ]
>>488
良門ですねw。言語教育は読解・修正作業が出発点で創造作業はその次の段階だし。

492 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:48:18.57 ]
>>489
お願いします

493 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:54:50.75 ]
俺も書き直した方が良いと思うわ。
出題者に従うだけが解答じゃないからね。

494 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:55:50.08 ]
>>487
ありがとうございます
どなたか>>484もお願いします

495 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:03:35.61 ]
>>493
でも、仕事では糞コードでも書き直ししないで最低限の修正ですますんでしょ

496 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:08:06.21 ]
>>495
糞コードは順次置き換えてるよ。

どうしても糞コードを生み出してしまう状況があるのは分かるから、
糞コードを書くなとは言わないけど、見つけたらなるべく直す様にしてる。

497 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:11:19.69 ]
>>488の問題のコードがウンコ味のカレーならば、
業務現場のコードはカレー味のウンコなんじゃね?

498 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:12:28.46 ]
触らぬコードに祟り無し

499 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:16:18.86 ]
char *main()って初めて見た・・・

500 名前:488 mailto:sage [2011/04/27(水) 23:18:37.22 ]
難しいのでしょうか、やはり...



501 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:19:20.95 ]
>>499
そえに対するreturn("0"); が素敵
で、
p[]って何をしようとしているんだ?

502 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:24:22.35 ]
>>500
いや、決して難しくはない
むしろ笑える

>>501
顔に見えるよなそれw

503 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:24:42.21 ]
俺が分かる所は
char *main(char **argc,int argv){
つint main(int argc, char **argv){

return("0");
つreturn 0;

504 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:33:45.65 ]
プロトタイプ宣言も忘れずにな

505 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:43:06.16 ]
俺のレベルで修正出来る範囲
#include <stdlib.h>
void work(char*);
int main(int argc, char **argv){

return 0;
}

506 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:55:10.08 ]
>>494
www23.atwiki.jp/homework/pages/11.html#id_257b264b

507 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:04:45.19 ]
>>506
習っていない文もありますし、もう少し簡単になりませんかね?
後答えを導くプログラムはどうすれば・・・

催促や文句ばかりで申し訳ないです

508 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:06:23.85 ]
素数って何?
計算量って何?

#include <stdbool.h>
#include <stdio.h>

bool is_prime();

int main(int argc, char *argv[]) {

  int val;
  sscanf(argv[1], "%d", &val);
  for(int i = 1; i < val; i++) {
    if(is_prime(i)) printf("%d¥n", i);
  }

}

bool is_prime(int val) {

  for(int i = 2; i < val - 1; i++) {
    if( (val % i) == 0) return false;
  }

  return true;

}

509 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:09:31.27 ]
>>507
答えを導くのは0-9999総当りでいいんじゃない?

510 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:11:31.84 ]
>>488
//#define <stdlib.h>
#include <stdlib.h>
//char *main(char **argc,int argv){
int main(int argc,char **argv){
void work(char*);
//argc++;argv++;
//while(argc++)work(*argv);
while(--argc)work(*++argv);
//return("0");
return 0;
}
char pp[100];
void work(char *p){
//int i,m,*p,c=0;
int i,j,m,c;
//sprintf(p,"%d",m);
m = atoi(p);
//for(i=0;i<m;i++)p[i]=0;
for(i=0;i<m;i++)pp[i]=1;
//p[0]=++p[1];
//for(i=0;i<m;i++)if(p[i])for(j=i*i;j<m;j-=i)p[j]=1;
for(i=2;i<m;i++)if(pp[i])for(j=i+i;j<m;j+=i)pp[j]=0;
printf("\n");
//for(i=0;i<m;i++,c++)if(!p[i])fputs("%8d%s",i,(c%5==0)?"\n":" ");
for(i=2,c=0;i<m;i++)if(pp[i]){printf("%8d%s",i,(c%5==4)?"\n":" ");c++;}
printf("\n");
}

こんなんでいいかなあ?



511 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:12:00.84 ]
>>484
ideone.com/IFlJ7

答えを導くのって単純な総当りからMin-Maxとか色んな解法があるけど本当に課題なの?
最後の2枚はダブりが無い4桁の整数を作るフローチャートだと思うんだけど・・・

512 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:17:29.68 ]
>>488
codepad.org/Sp1WYfdV

malloc, freeを追加したのが悔やまれるけど、あとはなるべく最小限の変更を努めた。

513 名前:512 mailto:sage [2011/04/28(木) 00:18:54.41 ]
>>510
先人がいたw
whileの解釈はそれかもだね。

514 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:22:32.90 ]
>>513
mallocは手抜きしたw

515 名前:488 mailto:sage [2011/04/28(木) 00:29:49.24 ]
>>510さん
>>512さん
ありがとうございます。
>>512さんのコードのほうが綺麗に修正されてますね。
これからコンパイルして正しく動作するか確かめてみます。
ところで、コンパイルはどうやってやればいいのか、実は
わかってません。

516 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:33:25.62 ]
>>515
古典的な方法としては命令に対応するマシン語を直接打ち込む方法もある
が普通はしない

517 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:49:43.56 ]
>>511
すみません、下のフローチャートは関係なさそうですね
フローチャート関係なしに答えを求めるものは出来そうですかね?

518 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 03:02:13.94 ]
>>517
いや、関係あるだろ。
そのフローチャートが提示されている意味は作成されるコードに影響を与えるよ。

519 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 11:57:18.49 ]
>>517
>>511のコードで、以下のようにansをテーブルとして持つのもあり?

ideone.com/aJ7TF

520 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 15:15:23.83 ]
「一行ごとに一単語(英単語)が書かれたファイルがある。
このとき、このファイルの内容をソートとして画面上に標準出力するプログラムを作成せよ。
ファイルの行数は不定とし、また上限を定めないこと。
また、ソートは降順あるいは、昇順のどちらにも対応できること。」
ちなみにファイルの読み込みは1回、単語格納のための配列は使ってはいけない、qsortは使ってはいけない
という条件付きです。誰かわかる人お願いします



521 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 15:17:58.65 ]
リストでも木でも

522 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 16:25:59.87 ]
>上限を定めないこと
世界最大の英語辞書をソートしろってことか
単語重複許すなら100万語超もありか

523 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 16:33:16.11 ]
>>520
#include<iostream>
#include<string>
#include<set>

int main(void)
{
std::string str;
std::set<std::string> dic;

while(std::getline(std::cin, str))
{
dic.insert(str);
}

for(std::set<std::string>::iterator it=dic.begin();it!=dic.end();++it)
{
std::cout << *it << std::endl;
}

return 0;
}

524 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 16:43:12.45 ]
>>520
int main() {
system("cat filename | sort");
return 0;
}

525 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 17:56:02.84 ]
>>524
おまえなぁ・・・





#include <stdlib.h>つけとけよ

526 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 18:11:27.55 ]
qsort()がだめならマージソートでいいじゃない
シェルソートでもいいし

527 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 20:32:23.09 ]
ボゴソート一択だろ

528 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 20:47:39.83 ]
>>527
ボゴソートでぐぐってみたんだけど何これwww
乱数にメルセンヌツイスタでも使わないと混合合同法では停止しないかも
しれないじゃないかwww

529 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 20:53:35.66 ]
>>528
要素数が10なら数十秒で終わるから問題ない。
20超えると丸一日で終わらなかったりするが

530 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 23:55:08.13 ]
質の悪いシャッフルなら要素数2でも終わらない可能性がある



531 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:01:20.32 ]
>>520
> 単語格納のための配列は使ってはいけない

これは何?ヒープにとろうが string を使おうが単語格納のための配列を利用する結果になると思うんだけど?

532 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:07:18.18 ]
>>531
配列がだめなら動的に確保すればいいじゃない
ってことでしょ

533 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:53:04.32 ]
>>520
テンプレ

534 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:55:09.40 ]
当然だがrewindでの読み直しもungetcでの読み戻しも不可だな

535 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 03:00:00.30 ]
>>531
当然外部ファイル書き出しも出来ないし、子プロセス作成も不可
だろね、やっぱり

536 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 03:04:20.22 ]
ファイルポインタの配列でも作るか

537 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 03:57:37.44 ]
>>534,>>535
そういう自縛的な発想が蔓延するから、プログラミング言語演習を
数学演習と同列にやることに反対する人が多くなるんじゃね?
この「問題(愚問)」の場合は、やはり◆QZaw55cn4cとか
が得意の二分木を使うのが良さげ
というわけで◆QZaw55cn4cが↓に登場します

538 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 05:22:56.10 ]
>>520
codepad.org/BR9gbdWg

>>537
ごめん、二分木使わなかった。。。

539 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 09:11:42.78 ]
>ファイルの行数は不定とし、また上限を定めないこと。

これは明らかに問題の不備だよな
無限のリソースを持っているコンピュータなど存在しない
しかもファイルポインタを外部ファイルにテンポラリとして書き出すのも駄目っぽいから
>>530程度でいいのではないかと思う

540 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 09:14:12.76 ]
しかしfseek()の連続でランダムアクセスの固まりだからディスクがさぞかしガリガリ
言うだろうなあ

SSDを使えればそうではないだろうが早く痛みそう

問題がそのような事を要求しているようなので仕方ないが



541 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 11:53:08.54 ]
>>539
静的に決め打ちするなって意味でしょ
ファイルの行数は不定であってもあくまで有限

542 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:22:42.96 ]
そういう問題があるから、プログラムの引数に扱うファイルやらバッファの情報を与えてもらうのがキホン
そうでなきゃ実行を拒否するコードにするのがセキュリティ対策の基本だとか
Windows APIとかに余計なパラメータが多いのはそのせい?

543 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:23:25.99 ]
>>541
でも>>538のプログラムは一旦ファイルを行単位で全部メモリに読み込んでない?
で行の配列へのポインタをソートしている

もしメモリを超えるサイズのファイルがあったら動かないよ

544 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:33:17.15 ]
メモリが足りなくなったら、一時ファイルか何かを使うしかないね。


545 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:47:55.27 ]
メモリが足りなくなったら… exit(1);

546 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 15:27:21.60 ]
>>523, >>538 のプは
ソートは降順あるいは、昇順のどちらにも対応しているの?

547 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 16:35:19.14 ]
>>546
プって何でしょうか?(プ

548 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:06:53.22 ]
>>543
行ごとにってか、一括で読んでみた

>>546
strcmpの条件反転すれば降順になる
fseekは乱発してないけど、reallocとmemmoveは乱発してるので遅いよ

549 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:08:13.88 ]
>>523 のは違う人が書いたコードだけど、リバースイテレータ使えば逆順にでるかと

550 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:20:04.25 ]
つまりコードを書き直して再コンパイルして対応と
なんか題意の読解力が有名コテと同じようなレベルだな



551 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:21:52.30 ]
>>550
フラグで分岐すればいいだけじゃね?

552 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:25:52.69 ]
>>550
その辺言い出すときりがないよ。caseをどうするかとか。
そうなると>>524=俺だけど、sortコマンド使いなよってなる。
コードの雑さでいろんなものを捨ててることぐらい読み取ってくれないか。

553 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:27:03.04 ]
それを最初からコードに書けってことだろ

554 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:28:44.24 ]
って、>>520の要件に入ってたorz
コード改訂しようか?いらないよね…

555 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:31:56.91 ]
520 がテンプレに沿って書き直すなら考える
C限定っぽい気がするけどよく分からん

556 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 18:02:03.82 ]
#include<iostream>
#include<string>
#include<set>

struct less{
static bool flag;
bool operator()(const std::string &x, const std::string &y) const{
return flag ? x < y : y < x;
}
};

bool less::flag = false;

int main(int argc, char* argv[]){
less::flag = argc < 2;

std::multiset<std::string, less> dic;

for(std::string str; std::getline(std::cin, str);)
dic.insert(str);

for(std::multiset<std::string, less>::iterator it = dic.begin(); it != dic.end(); ++it)
std::cout << *it << std::endl;
}

std::sort禁止じゃないし
やっぱCなんだろうな

557 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 19:19:18.29 ]
>>556
>>520宿題で制限事項等から出題者の意向を読解して、
学生に自前で作って欲しい部分は何かって考えると
ある程度はどうすべき気なのかって講義に出ていない奴でもわかるんじゃないか
本来、宿題プログラムは単に制限事項をクリアしたプログラムを作れば良いじないよな

sortに関してはソート関数(部分)は自前で実装して欲しいんだと思う
qsort(関数)でソートやったらソート部分を自分で作らなくても良いから禁止って事だろうな
ファイルの行数は不定、上限を定めない、配列禁止は動的メモリ割り当て・使い方を学んで欲しい
からじゃないか
と俺は解釈
プログラムコーディング以前の話になってしまったな

558 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 19:44:41.24 ]
テンプレ使ってない出題だしそういったことはあえて無視してるんじゃないの
俺はテンプレ使ってても制限特になしとかだったらそうする

559 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 20:24:31.64 ]
単語を格納する配列っていうのも、char words[10000][20];とかやらないでねってことなんだろう。

560 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 23:23:43.29 ]
そういう出題者の意図をエスパーするのが面倒だからテンプレがあるんだろ
テンプレ無し問題は的外れな回答が来ても文句は言えない



561 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:47:19.43 ]
皆さん色々と意見どうもありがとうございます。>>520です。とても参考になりました。
書き忘れてしまって申し訳ありませんが言語はC言語で、
自分はリストを作ってそこに単語を格納してソートの手順でしようと思っています。
しかし、上手くリストに単語を格納してソートするためにどうプログラムをくめばいいのかがわかりません。
2回目でスイマセンができれば引き続き教えてもらえないでしょうか

562 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:56:19.76 ]
謝らなくていいから>>1を読め

563 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:57:10.70 ]
>>561
緑、許さない絶対にだ 君
ここより
C言語何でも質問掲示板
chiebukuro
の方が良いんじゃね
立派なレス付いてるんだし

564 名前:デフォルトの名無しさん [2011/04/30(土) 03:57:03.56 ]
>>520 32の値をもう少し大きくして、読み終わった後に必要分だけreallocするのがベターかも。
ideone.com/8tneo

565 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 06:39:06.80 ]
だからこの問題は、ソース・デスティネーション共に無記憶ストリームな場合に
不定長さレコードを読み取って整列して出力するにはどうしたらいい?
ということなんだろうから、答えとしては多分恐らく、2分木か(それに類するもの)
が最適なんじゃないかと

566 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 06:53:04.77 ]
配列演算子まだ習ってませんとか
ポインタまだ習ってませんとか
は、この問題に限ってはあり得ないw

567 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 09:39:49.98 ]
>>565
ファイルのオフセット位置(単語の先頭)を2分木で大小比較しつつ記憶するってこと?

ストリーム的に処理するなら、システムで確保できる分のメモリ量で、ファイルの部分部分をソートしていって、
最後にファイルの部分部分同士をマージソートって気がするけど。

568 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:13:59.17 ]
シリアルデバイス(例えば今でもなぜか付いているPCが多いRS232Cとか)からテキストファイル
のバイトストリームを受け取ってそこへ送り戻すような場合を考えればいいんでねの?
(再送要求は基本的に撥ね付けられる)

バッファリング無しはそりゃ無理だろw
(相手が途中で送信を要求するというのは、送ってもいない情報を予測して送り返せ
というのに等しいのでそりゃ考える必要は無いだろw?)

メモリしか使えない状況じゃ配列に格納するしかないだろうけど、配列は禁止らしいから
やっぱし◆QZaw55cn4cさんのpush/popとか使って二分木に格納して、
相手の送信が終わったことを確認したら再帰呼び出しで一気にソーメン流しで
送り返すしかないだろうね。こういった場合は好きなやり方じゃないが、仕方が無い。
ただし相手の送信終了確認が難しいんだろうけど

569 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:24:40.38 ]
二分木つかうならせめて赤黒木使えや
糞な◆QZaw55cn4cの二分木ルーチンを見る度に「またこいつか」と思ってしまう

570 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:30:31.09 ]
>>537
召還されました。

>>520
問題文に不明瞭な点があるようなので、とりあえずこれを提出して反応を待つのはどうでしょうか。
codepad.org/liRVVqr9



571 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:34:41.89 ]
なんだかんだいっても◆QZaw55cn4cの人気はそれなりに高かった件

572 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:34:53.63 ]
>>569
ん、すみません。では次回は AVL 木で組んでみます。

573 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 13:29:07.34 ]
>>569
コードよろしく

574 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 13:46:05.03 ]
>>572、◆QZaw55cn4c

糞とか言っている先生に見本コードお願いしろよ


575 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 14:08:21.91 ]
>>574
そもそも書けない人にお願いしても無駄でしょう?自分で書きます。

576 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 14:28:09.48 ]
なんだなんだ。
レスが錯綜して登場人物が何人いるのかがわからない。
だれかユースケース図で説明して。
あとAVL木よりB木のコードがいいな。

577 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 14:55:31.80 ]
AVL木とかB木とか出てきたけど、それはどういう状況で使うのが最適なのか一度考えるべきじゃねの?
一度しか検索しない対象に対して木の高さを敢えて揃える意味があるのはどういう場合かとか..
俺にはわからないので教えてくれ.

578 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 18:12:50.29 ]
ここはメモリ使用量を考えてTrie木だろ

>>570いつも思うがおまいさんのコードは分かりにくいw
複数の行に同じ単語がある場合を想定してないが、問題にも書いてないしその場合はどうするんだろうな


579 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 18:27:17.89 ]
>>578
俺は分かりにくいとまでは思わないけど..
分かりにくいという声が出る一つの原因は、コードの本質的な
部分じゃなくて多分名前の取り方じゃないかと思ったりしてる。
push/popはスタックの為に予約されているわけでもなかろうが
でも、まぁ普通は先入後出の例のアレを指すわけ。
popで一気に入れた順番とは無関係に一気に出てくるってのは
まぁ確かにpopなんだろうけどw
FlushとかExplosionとかBlowUpとかそういった単語にすりゃ
いいのにと結構思ったりする

580 名前: ◆XEE2zLj0dE mailto:sage [2011/04/30(土) 19:04:23.34 ]
>>520
codepad.org/EcRfMZ1T
単純な2分木はQZが作ってるので、双方向リストで作ってみた。(正順逆順にも対応)
>>538とやってることは変わらないので、元データがすでに逆順ソートされている(またはそれに近い)場合は
速くなってるけど、根本的に遅いのは変わらないです。



581 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 20:35:16.02 ]
>>578
うーん、わかりにくいですか‥‥‥。

それは、malloc() で得たポインタを別んところで free() しているせいでしょうか?
それとも二重ポインタを使っているところでしょうか?
mygetline() の中身がわかりにくいのでしょうか。これは確かに改善したいものですが、アイディアが思いつきません。

>>570 では複数の行に同じ単語があれば、ソート後それらは連続して並びます。strcmp() の値が負か非負かでしかみてませんから。

>>579
名前ですか。確かにpush()/pop() はいまいちずれていますね。

582 名前: ◆XEE2zLj0dE mailto:sage [2011/04/30(土) 20:55:33.30 ]
Trie木ってなんだろ、とWikipediaをみて
ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Trie_example.svg
この絵から想像したアルゴリズムにしてみた。

多分斜め上だけど速度速くなったので貼っとく
codepad.org/nC3d47EJ

583 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:39:54.62 ]
>>581
コテ付けろよ
名無しだとQコテだってすぐに解らん

584 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:43:02.30 ]
>>583
hibari.2ch.net/test/read.cgi/tech/1295273862/582
>私は一介の名無しに戻ります。
hibari.2ch.net/test/read.cgi/tech/1295273862/592

585 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:44:21.45 ]
名無しに戻るより、二度と巣から出てくるなって言われてんのにな
どこまで自分に甘いんだよw

586 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:44:59.57 ]
トリ付けるかここから去るか、どちらかにしてくれ
できればトリつけてくれないかな、NGにしてるから

587 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:48:51.22 ]
コテつければコテうざいといわれ、コテはずせばコテつけろうざいといわれ、大変だな。

588 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:58:51.32 ]
自分の巣以外の場所に現れなきゃ誰も文句はないだろ

589 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:15:10.59 ]
>>585
自分に甘く、他人に厳しいのが自己愛性人格障害の特徴
最悪の性格と言えよう
精神科医も自己愛とボーダーの治療を一番嫌がるそうだ

590 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:15:41.33 ]
その巣も壊そうとしてたじゃん。
巣を追われたら他に出てくるのは自然の摂理。



591 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:29:26.21 ]
つまり◆QZaw55cn4cの言いたい事はこういう事か

「巣を壊したのはお前らだ。だから俺は宿題スレに出てくる権利がある」と

さすが義務を果たさず権利だけをやたらと主張する様はどこやら人とそっくり
ですね
強烈な他罰
自分を決して省みない厚かましさ

こんな奴を誰が好くというのか?

592 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:34:49.71 ]
問題も出さず、回答もせず、QZのコード批判に終始している人はなんなの?
そんなコード提出したらダメだよ!っていう正義感から?

593 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:38:21.09 ]
本人じゃね?

594 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:40:31.28 ]
なのかなぁ。頭おかしい人を観察するのが大好きだと言っている人がいたから、
同一人物ならいいんだけど、そうじゃないならそっちの方がよほどうっとうしいよね。
まとめて巣に入ればよし。

595 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:54:01.03 ]
問題も出さず、回答もせず、QZを批判する人を叩く>>592ってなんなの?

596 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:59:21.25 ]
ごめん、回答するとき以外もトリップつけた方がいいの?

597 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:01:11.21 ]
IDじゃなくて酉必須にするのがいいのかもね。
そうすれば出題者、回答者、それ以外と分けられる。

598 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:04:04.40 ]
どっちも掲示板利用者にとっては邪魔
QZが回答しながら勉強したいなら、全然問題ないし。
内容で十分でないところがあったにしても真面目に回答をしてるとは思うよ。
批判があるなら、書いてるコードの内容に対してすべき。

599 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:06:58.00 ]
こういうなんの効果もない無駄な自治も邪魔でしかないけどな

600 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:32:00.63 ]
一度トリップを使ってそれを覚えられてしまった場合は使い続ける
のがマナーじゃね?
グローバル変数定義しておいて実際にはそれへのポインタを
関数に与えて処理するコード書く人居るけどそれと似ていて
酷く読みにくかったりする。



601 名前:ぼるじょあ ◆yBEncckFOU mailto:sage [2011/04/30(土) 23:35:08.68 ]
(・3・) エェー じゃあこれでいくYO!

602 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:41:02.16 ]
ぼるじょあスレがあったころが懐かしいな
まあ、あの頃もいろいろ荒れてたけど

603 名前: ◆XEE2zLj0dE mailto:sage [2011/04/30(土) 23:45:54.68 ]
なんか速度計ったものの、書き込みにくい空気だなぁと思ってたら
指摘された感があったので修正ついでに測定結果を。
テストデータは7500行ぐらい(昇順ソート済み、降順ソート済み、ランダムの3種)
それぞれ昇順、降順ソートを10回
もっと速くできると思うんだけど、誰かお願い。

>>538
asc to asc 1.17
asc to desc 1.23
desc to asc 0.18
desc to desc 0.16
random to asc 0.72
random to desc 0.71
>>codepad.org/gtmuVD9m (グローバル変数いらなかったので改訂、ただしそもそもメモリをたくさん使う)
asc to asc 0.30
asc to desc 0.29
desc to asc 0.30
desc to desc 0.27
random to asc 0.36
random to desc 0.34
>>570
asc to asc 4.09
asc to desc 7.56
desc to asc 7.78
desc to desc 4.17
random to asc 0.09
random to desc 0.08

604 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 00:11:26.56 ]
>>603
>>570 についてだけコメント
>asc to asc 4.09
>asc to desc 7.56
>desc to asc 7.78
>desc to desc 4.17
ニ分木にとって入力データとしては最悪ですね。これは仕方がない。

>random to asc 0.09
>random to desc 0.08
ニ分木の左右にほぼ均一にデータが入るので、効率がよくなります。

まあデータ構造によって得意不得意がでるのは仕方がないでしょう。


605 名前: ◆XEE2zLj0dE mailto:sage [2011/05/01(日) 00:16:10.46 ]
>>604
うん、そう。qsortを使った場合でもソート済みのデータに対しては遅くなる。
同じく、自分が作ってる>>580のリストも、正順ソートされたデータに対して最悪のパフォーマンスになる。
データが増えた場合には>>603は仮想メモリを使用することになり、著しくパフォーマンスが落ちることが予想される。

>>577に、こういう偏ったデータの時に単純な2分木は不利になるってレスをしようと思ったまま忘れていた。

606 名前: ◆XEE2zLj0dE mailto:sage [2011/05/01(日) 00:20:17.43 ]
参考になるかどうかわからないけど、同じ条件での測定結果
>>580
asc to asc 1.65
asc to desc 1.63
desc to asc 0.01
desc to desc 0.01
random to asc 1.17
random to desc 1.24
>>564
asc to asc 1.71
desc to asc 8.04
random to asc 6.51

C++のと、>>524は除外。もちろん両方とも、俺やQZのより速い。

607 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 01:02:22.29 ]
>>520
codepad.org/cQhaxuN4
・ファイルの読み込みは1回?
・単語格納のための配列は使ってはいけない?
・このensure_capacityはJavaのVector#ensureCapacityとは挙動が異なる。
・realloc失敗したらいきなりexit(EXIT_FAILURE)
・一番素朴なバブルソート
・未保障

608 名前:ぼるじょあ ◆yBEncckFOU mailto:sage [2011/05/01(日) 02:38:35.82 ]
(・3・) アルェー 普通に挿入ソートするだけでも
            おまいらが作ったのよりずっと早いYO!
            もっと頑張れYO!

609 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 02:55:36.70 ]
>>520
正直、割と適当な記述だという自覚がある

・トライでの実装。パトリシア・ツリーも考えたが、さくっと書くのは回答者の技術的に無理だったw
・単語小文字のみ、降順表示のみ対応
・規格Cでは保証されていない文字の性質(a〜zの文字コードが連続している)を用いている
・最大単語長が126文字を仮定。課題的に問題があるのかは分からなかった
・正しい実装である保証はない
codepad.org/tDyLMi1J

610 名前: ◆XEE2zLj0dE mailto:sage [2011/05/01(日) 05:39:37.57 ]
うざがられそうだなぁと思いつつ、改訂版と測定結果を貼ってみる。

>>538の改良版
codepad.org/APIS2iA7
asc to asc 0.02
asc to desc 0.02
desc to asc 0.19
desc to desc 0.19
random to asc 0.11
random to desc 0.10
>>587を小文字限定にしたもの(単語長の制限はないまま)
codepad.org/2IuKE34U
asc to asc 0.04
asc to desc 0.03
desc to asc 0.03
desc to desc 0.03
random to asc 0.03
random to desc 0.03
>>609
asc to asc 0.06
asc to desc 0.07
desc to asc 0.06
desc to desc 0.06
random to asc 0.07
random to desc 0.07

>>608さんのコードもみてみたいです。



611 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:03:23.54 ]
>>610
いや、大いに参考になります。trie でソートする、という実装が表にでてくるのも、ひとえに >>610 の人徳でしょう。

>>608さんのコードもみてみたいです。
さて、どうでしょうかね。

612 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:15:19.49 ]
>>577
>>570 は単純な二分木、というだけではなく、それを再帰呼び出しで実装しているので、この上もなく悲惨なことが判明しました。
手元の環境では、大きなデータを食わせると予告もなく stack overflow で落ちます。(ダンプも吐かないとは‥‥‥。)
いくら malloc() の返り値をチェックして最低限の予防線を張っていても、stack overflow だけは検知できない。(こんなことは DOS 時代以来‥‥。)

>>569 のいうとおり、
1) 最低限、平衡二分木にする(AVL 木, 2-3 木, 2色木(赤黒木))
2) 可能ならば再帰呼び出しは行わない。

といったところでしょうか。

613 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:15:47.77 ]
トリついてなくても特定簡単すぎるw

614 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:17:10.55 ]
ある程度以上のものは再帰で処理できないのは常識。
パズルとかをプログラミングで解こうとするとよくわかる。

615 名前:ぼるじょあ ◆yBEncckFOU mailto:sage [2011/05/01(日) 18:24:10.81 ]
(・3・) エェー 挿入ソートのアルゴリズムは >>610 の一番上と同じだYO!
          qsort にすればもっともっと早くなるYO!

616 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:51:08.28 ]
ちなみに
”Cに慣れると何でも「いきなりのC」ができると思う癖がつきやすい”と、とある先輩が...
マイプログラムにいちいち仕様書書けとかいうんじゃなくて、実はもっと高級言語(C直系のものも多い)
を使ってアルゴリズムとか洗練させてからCで書き直さしたほうが無難(急がば回れ)、さもなくば泥沼に
嵌ることも多い
という意味

617 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 19:41:32.80 ]
>>607 修正
codepad.org/AjKZAS6o
・バブルソートを修正
・コムソートを実装(wikipediaからほぼ丸パクリ)
・コムソートって実装カンタンな割りに平均O(n log n)、最悪O(n log n)
・未保障

618 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:42:39.82 ]
[1] 授業単元:計算機実習
[2] 問題文(含コード&リンク):ttp://www.uproda.net/down/uproda293522.jpg
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 指定なし VC++でやってます
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: ポインタ一歩手前くらいです

619 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:45:01.15 ]
ここまでがんばりましたが、入力した数字が偶奇異なる場合でないと正しく動きません。助けてください。
#include <stdio.h>

int main(){

int i,j=0,num,child[1000],song,song2;

scanf("%d %d",&num,&song);
//子供たちに通し番号を付ける。
for(i=1;i<=num;i++){
child[i]=i;
}
song2=song;
while(j!=1){
while(song2>num){
song2=song2-num;
}

for(i=1;i<=num;i++){
if(child[i]!=0){
printf("%d",child[i]);
}
}

return 0;
}


620 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:47:31.69 ]
>>619じゃないです。こっちです。
#include <stdio.h>

int main(){

int i,j=0,num,child[1000],song,song2;

scanf("%d %d",&num,&song);
//子供たちに通し番号を付ける。
for(i=1;i<=num;i++){
child[i]=i;
}
song2=song;
while(j!=1){
while(song2>num){
song2=song2-num;
}

/*
printf("%d %d",song2,child[song2]);
getch();
*/



621 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:50:51.70 ]

child[song2]=0;
song2+=song;

//ループ脱出用。
j=0;
for(i=1;i<=num;i++){
if(child[i]!=0){//何人残ってるか数える
j++;
}
}

}

for(i=1;i<=num;i++){
if(child[i]!=0){
printf("%d",child[i]);
}
}

return 0;
}

622 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 03:15:43.32 ]
>>618
#include <stdio.h>

int main(void)
{
int i, j, n, l, start;
int child[1000];

scanf("%d%d", &n, &l);

for(i = 0; i < n; i++) child[i] = i + 1;

for(i = n, start = 0; i > 1; i--) {
start = (start + l - 1) % i;
printf("%d\n", child[start]);
for(j = start + 1; j < n; j++) child[j - 1] = child[j];
}

printf("%d\n", child[0]);

return 0;
}

623 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 03:47:56.46 ]
>>720
偶然、例の場合に答えが一致してるだけ
コメントはずしてsong2とchild[song2]を表示させれば順番おかしいことわかるだろ

624 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 03:56:39.71 ]
thx
コード美しすぎわろた

625 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 04:05:57.42 ]
0を入れてくバージョンも

#include <stdio.h>

int main(void)
{
int i, j, num, length, idx, child[1000 + 1];

scanf("%d%d", &num, &length);

for(i = 1; i <= num; i++) child[i] = 1;

for(i = num, idx = 1; i > 1; i--) {
for(j = 0; ; idx++) {
if(idx > num) idx = 1;
if(child[idx]) j++;
if(j == length) break;
}
printf("%d\n", idx);
child[idx] = 0;
}

for(i = 1; i <= num; i++) if(child[i]) printf("%d\n", i);

return 0;
}

626 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 08:45:30.71 ]
>>520

>>570 の改良版です。AVL木(平衡二分木の一種)を一部取り入れました。
codepad.org/F4X9iMw9

627 名前:626 mailto:sage [2011/05/02(月) 09:11:00.34 ]
こちらでの実測結果です。データは 10000行×120文字までのランダム長英大小文字列、10回反復して平均をとりました。

>>570
asc to asc: 6.00
asc to desc: 8.76
desc to asc: 7.57
desc to desc: 6.63
random to asc: 0.18
random to desc: 0.18
>>626
asc to asc: 0.16
asc to desc: 0.15
desc to asc: 0.21
desc to desc: 0.13
random to asc: 0.15
random to desc: 0.14
>>610の一つ目
asc to asc: 0.17
asc to desc: 0.14
desc to asc: 0.27
desc to desc: 0.27
random to asc: 0.20
random to desc: 0.21

628 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 09:12:28.63 ]
いつまでオナニー続けんだよ

629 名前:626 mailto:sage [2011/05/02(月) 10:17:25.66 ]
>>520

>>626 にはバグがありましたので、訂正します。
AVL木を一部採用しています。
ideone.com/ujGUY

630 名前:629 mailto:sage [2011/05/02(月) 10:29:37.11 ]
ベンチを取り直しました。条件は >>627 と一緒です。
>>570
asc to asc: 5.84
asc to desc: 8.61
desc to asc: 7.52
desc to desc: 6.68
random to asc: 0.18
random to desc: 0.17
>>629
asc to asc: 0.20
asc to desc: 0.17
desc to asc: 0.16
desc to desc: 0.17
random to asc: 0.18
random to desc: 0.20
>>610 の一つ目
asc to asc: 0.13
asc to desc: 0.13
desc to asc: 0.25
desc to desc: 0.29
random to asc: 0.19
random to desc: 0.20



631 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 10:35:04.82 ]
トリップはずしてもクソのままだな

632 名前: ◆XEE2zLj0dE mailto:sage [2011/05/02(月) 10:52:55.68 ]
回答ついた宿題のことを続けるなら別スレがいいと思うんよ。
とりあえず例のスレを使ってみようとしているけど……いいのか悪いのか
hibari.2ch.net/test/read.cgi/tech/1295273862/

633 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 11:03:13.81 ]
>>632
隔離場所にひっこんでいてもらいたい
俺はあほな誘導するのがうざかっただけだから

634 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 13:30:26.33 ]
>>631
糞は糞だよ
自己愛性人格障害は性格の病気だから一生治らん

>>630
いい加減に他のスレ行ってやれカス
空気が読めないのかアホ

635 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 23:08:09.94 ]
>>625
わざわざありがとう!
お世話様でした

636 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 18:11:39.70 ]
>>632
回答のついた過去の問題でも、解きたい人、解けた人ははどんどんコードをアップしていいとは思ってはいます。
今回、私が叩かれているのは別の理由だったと思いますし。

そのこころは、>>268

現在、赤黒木を試行中です。これはなかなか手ごわい。でも赤黒木の応用範囲が極めて広いことを考えると是非征服したいものです。
今年のゴールデンウィークは「赤黒木」がテーマになりました。

637 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 18:24:45.39 ]
いいわけねーだろ

638 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 22:27:16.93 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):デフォルトの場合は Alt+K 1(DEFAULT) 
               カスタムの場合は Alt+K 2(CUSTOM)
Alt+Kが押されたらカスタムのようにしてください。
ウィンドウまたはダイアログボックスに表示お願いします。
 
[3] 環境
 [3.1] OS:windows
 [3.2] VC++
 [3.3] 言語: C++
[4] 期限: 5月5日
[5] その他の制限: 制限なし


639 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 23:36:01.51 ]
>>638
カスタムの意味が不明だったのでAlt+Kだけだが
ttp://codepad.org/OSyJjum5

640 名前:308 mailto:sage [2011/05/04(水) 11:18:50.54 ]
まずデフォルトが表示されててそこから
Alt+Kを押すとデフォルトがカスタムに値を1から2に変更させたいです



641 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:23:59.42 ]
意味が分からん。

642 名前:308 mailto:sage [2011/05/04(水) 11:26:46.15 ]
まぁ同じところに表示されてデフォルトだと・Alt+K 1(DEFAULT)
Alt+Kが押されたら・Alt+K 2(CUSTOM)
こういう風になるようにできればオkだと思います

643 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:35:26.76 ]
>>642
つまり
1回目にAlt+K -> Alt+K 1(DEFAULT)
2回目にAlt+K -> Alt+K 2(CUSTOM)
を表示させるってことか?
とりあえずその分かりにくい日本語をなんとかしろw

644 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:42:57.39 ]
Alt+K 1
という表記が分からない
2アクションとして受け取ると
DEFAULTを実行する術がない

意味が分からん。

645 名前:308 mailto:sage [2011/05/04(水) 11:43:04.22 ]
>>643 そのとおりです。日本語おかしくてスイマセン・・・・

646 名前:308 mailto:sage [2011/05/04(水) 11:43:55.14 ]
1と2は値です

647 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:50:21.00 ]
>>646
意味が分からん。

648 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:52:07.80 ]
まず638は日本語を勉強してくること

俺のESPを駆使すると、ALT-Kで1と表示されたものが2に変わるくらいに思える

649 名前:308 mailto:sage [2011/05/04(水) 11:52:41.21 ]
643 :デフォルトの名無しさん:2011/05/04(水) 11:35:26.76
>>642
つまり
1回目にAlt+K -> Alt+K 1(DEFAULT)
2回目にAlt+K -> Alt+K 2(CUSTOM)
を表示させるってことか?

こういうこと

650 名前:308 mailto:sage [2011/05/04(水) 11:54:13.11 ]
とりあえずAlt+Kの位置も変わらず 1(DEFAULT)が2(CUSTOM)に変わるって事です。




651 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 12:53:32.42 ]
>>650
エスパーが質問に答えるスレ
hibari.2ch.net/test/read.cgi/tech/1187922645/

652 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 12:56:49.53 ]
ウィンドウやダイアログボックスはそもそもスレチだろ

653 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 13:01:51.35 ]
頭が悪いんだからしょうがねーだろ

654 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 14:38:10.15 ]
>>639 を直して欲しいわ。
loda.jp/_pluto_/?id=19


655 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 18:05:26.51 ]
>>652
それ本当なのか?

656 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 18:15:16.07 ]
答えたくないだけだろ

657 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 18:38:33.85 ]
気に入らない依頼に回答が付かないようにするためじゃね

658 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 19:03:43.79 ]
バカらしい答えてやろうぜこのスレの意味ないだろ


659 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 19:24:43.34 ]
[1] 授業単元:再帰プログラミング
[2] 問題文:n人でr個に分ける方法の数 nSrはStirling数という。関数Stirling 作成せよ。
ここで nSr = n-1Sr-1 + n-1Srr , nS0 = 0 , nS1 = 1, nSr = 0(r > n)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:5/4
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

ポインタは習っていません。よろしくお願いします。

660 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 19:27:17.61 ]
習ってないならまず習って来い



661 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 21:16:35.14 ]
ウィキったけど、第2種のようなそうでないような、
とりあえず問題分をそのまま当てはめてみた。

ちなみにWindows環境、一応MinGWで試した。
ttp://ideone.com/im132

662 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 21:51:24.89 ]
n-1Srrはn-1Srの誤字じゃないの?

663 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 23:23:01.74 ]
>>659 非再帰にしてみたが、即効で桁あふれするから無意味
#include <stdio.h>

#define N 8192
#define table(i, j) t[r * (i) + (j)]
long long stirling(unsigned int n, unsigned int r)
{
 static long long t[N];
 long long i, j;
 if ((n + 1) * (r + 1) >= sizeof(t)/sizeof(*t)) return -1;
 for (i = 0; i <= n; i++) for (j = 0; j <= r; j++) table(i, j) = 0;
 for (i = 0; i <= n; i++) table(i, 0) = 0; /** nS0 = 0 */
 for (i = 0; i <= n; i++) table(i, 1) = 1; /** nS1 = 1 */
 /** nSr = n-1Sr-1 + n-1Srr (n >= r) */
 for (i = 2; i <= n; i++)
   for (j = 2; j <= i && j <= r; j++)
     table(i, j) = table(i - 1, j - 1) + table(i - 1, j) * j;
 return table(n, r);
}

int main(void)
{
 long long n, r;
 if (scanf("%lld%lld%*c", &n, &r) != 2) {
   fprintf(stderr, "invalid input\n");
   return 1;
 }
 printf("%lld\n", stirling(n, r));
 return 0;
}

664 名前:デフォルトの名無しさん mailto:sage [2011/05/05(木) 03:54:56.18 ]
>>662
いや、おそらく (n-1Sr)r が正解だと思う。


665 名前:デフォルトの名無しさん mailto:sage [2011/05/06(金) 05:10:25.33 ]
int型で工夫することによって20桁同士の整数の掛け算を行い
char型で計算結果を出力せよ。

これをお願いします。困っています。

666 名前:デフォルトの名無しさん mailto:sage [2011/05/06(金) 05:36:40.97 ]
ヒント
0x1234 * 0xabcd =
0x12 * 0xab * 0x10000 + 0x12 * 0xcd * 0x100 + 0xab * 0x34 * 0x100 + 0x34 * 0xcd

667 名前:デフォルトの名無しさん mailto:sage [2011/05/06(金) 17:24:50.84 ]
>>665
intで40桁表せられるハードウェア作ればいんじゃね?

668 名前:355 mailto:sage [2011/05/06(金) 17:53:21.34 ]
>>345
>>665
codepad.org/PXA5JrGF

669 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 00:48:45.13 ]
[問題文]char型の配列の先頭ポインタ*cを引数として、
返数なしでcの指し示す配列にhogeを代入するプログラム

codepad.org/WYd2dorv
このプログラムだとエラーが出てしまいます
改善点を教えて下さい

670 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 00:54:44.26 ]
>>669
codepad.org/Tt57ftHa



671 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 01:27:24.56 ]
>>670
ありがとうございます
コピペしたところ、「識別子が見つかりませんでした」とエラーがでました

672 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:19:30.93 ]
>>671
#include <string.h>

673 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:22:45.40 ]
>>671
codepad.org/yv4B0Lo0

674 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:24:29.05 ]
ググればすぐ分かる事を教えてやることないのに

675 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:38:24.95 ]
>>672-674
ありがとうございました

676 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 17:03:40.24 ]
[1]授業単元:プログラミング2
[2]問題文:char型のポインタ配列の先頭ポインタ**cを引数とする
返数なしでcの指し示す配列に順に月の名前の文字列を代入

作成したプログラム(codepad.org/jf7lkdXu)だと
エラーが起きてしまいます。お願いします。

677 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 17:06:03.20 ]
char *name[6];
にしてみ。

678 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 17:10:13.64 ]
ねずみ?

679 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 18:10:28.30 ]
>>677
おお!できるようになりました
ポインタ配列とポインタのポインタはこうすればよかったのか
勉強になりました
ありがとうございました

680 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 18:06:11.25 ]
1]授業単元:プログラミング
[2]問題文:自己参照型構造体を用いて、以下の処理をするプログラムを作成せよ。

正の数入力→連結リストを辿り、初めて入力された数ならばカウンタを1増やす。同じ数が続けて入力されたらその数のカウンタをさらに1増やす。
負の数入力→負の数の絶対値と同じ回数入力された数のデータを削除(例えば、-3を入力し、それ以前に14が3回入力されていたら、それを削除)
0を入力→データを出力して終了。

データ出力→終了の流れはどうにかなりましたが、それ以外で上手い発想が思いつきません。

codepad.org/yayuXIUa

期限は明日までです。



681 名前: ◆XEE2zLj0dE mailto:sage [2011/05/09(月) 02:52:07.72 ]
>>680
codepad.org/f51zggbZ

回答がついてないのでやろうと思ったんだけど、正の数入力時の内容がどうにもわからず。
「正の数入力→入力された数の入力回数を保持する」と読み替えて作ったものをうp。
意図と違ってたら、もうちょっと細かく書いてみてください。

元コードと考えが違うところは、headは有効なノードではなく、ダミーノードにした点ぐらいのはず。

682 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 05:41:56.98 ]
>>681
いいんじゃね?
俺もずっと前にこの手のプログラムを山ほど作ったが
ダミーノードを使った方がプログラムの見通しが良くなった。

今はC++のコンテナ std::list とイテレータで何も考えなくて
良くなったが、Cは全部書かないといけないし free() の所で
バグりやすいから大変だね

683 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 14:14:21.20 ]
てんぷら全部埋めないのが流行ってるの?

684 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 19:19:48.27 ]
>>680>>681のコード質の差が激しすぎだな
小学生の工作宿題なんかを親が小学レベルに合わせずに親の基準(俺俺基準)
で作成したって感じだな。カンニングバレバレだろうな

>>681
>初めて入力された数ならばカウンタを1増やす
>同じ数が続けて入力されたらその数のカウンタをさらに1増やす
この2つの処理を
>正の数入力→入力された数の入力回数を保持する
に変更ってこと?

685 名前: ◆XEE2zLj0dE mailto:sage [2011/05/09(月) 20:51:41.38 ]
>>684
もとのコードは生かしたつもりだったけど、ダメだったかな。
変更内容はそのとおりで、元コードの構造体と、削除時の説明からそうしてみたけど、的外れですかね……
あとはリストの並び順とかも指定なかったので適当だったりで。
宿題ならこのほうがよくね?ってのがあるなら書いてくれると次書くときできるだけ反映します。

>>682
ありがとです。
一応、メモリリークの検査と、警告は全部潰す方向でやってます。
危うく見事にfreeまわりでバグってるとこでしたorz

686 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 21:53:00.11 ]
>>685
依頼主が何も言わないのなら、それで良いんじゃないか
少しはやる気ある依頼主みたいだから>>681を元に自分で俺様回答作成しているんじゃないか

687 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 00:19:48.64 ]
>>680の依頼主ですが、残念ながら宿題片付けはできなかったものの
自己参照型構造体のメカニズムについて少しずつ理解はしています。

C言語が得意な知人曰く、headはポインタ変数にせず普通の変数として扱い、
その中のポインタ変数であるhead.nextを使うとやりやすいとの事なので、
また考えて見ます。

688 名前:デフォルトの名無しさん [2011/05/10(火) 14:16:41.34 ]
平面上の位置座標(x, y)から相対的に(Δx, Δy)だけ移動した位置座標を求めたいとする。
(x, y)と(Δx, Δy)をそれぞれ配列として表現し、これを引数として受け取って求めたい座
標を返す関数void func1(double x[], double d[], double a[])を定義して、
その動作を確かめるプログラムkadai4-1.cを書きなさい。ただしx[]が元の位置座標、
d[]が移動分、そしてa[]に答え が代入されるものとする。
(x, y)と(Δx, Δy)はキーボードから次で入力するものとする。
scanf("%lf %lf %lf %lf", &A[0], &A[1],&B[0],&B[1]);
答えは以下で出力されるものとする。
printf("answer = (%lf, %lf)\n", C[0],C[1]);

よろしくおねがいします

689 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 14:21:32.07 ]
数学の問題と違って、解き方だけでなく書き方も重視されるのが
C言語の問題
だからかどうか知りませんが、点プレに沿って質問してくださいね

690 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 14:29:13.50 ]
>>688
#include <stdio.h>

void func(double x[], double d[], double a[])
{
a[0] = x[0] + d[0];
a[1] = x[1] + d[1];
}

int main(void)
{
double A[2], B[2], C[2];

scanf("%lf %lf %lf %lf", &A[0], &A[1],&B[0],&B[1]);
func(A, B, C);
printf("answer = (%lf, %lf)\n", C[0],C[1]);

return 0;
}



691 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 14:52:59.48 ]
>>689
書き方と解き方は結構繋がっているからな

692 名前:688 mailto:sage [2011/05/10(火) 15:04:40.28 ]
>>690ありがとう
2x2の行列A,Bの差を求める関数void func2(int A[][], int B[][], int C[][])を定義してその動作を確かめるプログラムkadai4-2.cを作りなさい。演算結果はC[][]に代入されて返されるものとする。
ただしAとBはキーボードから次で入力するものとする。
scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]);
答えは以下で出力されるものとする。
printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]);


693 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:12:04.51 ]
strSrcの文字列を逆にして,strDstに書き込むプログラムを作成してください.
 ただし,文字列の操作にはポインタ変数strDst, strSrc, pC, pDを用いることとし,strSrc[i] のような配列操作は用いないこととします.
 また,配列strSrc[]の1つ前の番地に0が入っていることを前提としないプログラムにしてください.

codepad.org/V7e6qsPC


694 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:14:05.10 ]
すいません、>>693です。
C言語勉強したてなのですが、このような課題が出来ません…
ここ数時間試行錯誤してるのですが、どうも上手く出来てないようなのでお力を貸してもらえると嬉しいです。

695 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:17:42.10 ]
strSrc strDst共に文字列リテラルへのポインタなんで
scanfや書き換えができるかどうかは処理系依存
殆どの処理系で禁止されている。
テンプレに嵌らない質問は別のスレで

696 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:19:53.04 ]
>>693
>>1 読んでテンプレ埋めろ

>>695
馬鹿は黙れ

697 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:27:05.91 ]
[1] 授業単元:プログラミング言語
[2] 問題文: >>693
[3] 環境
 [3.1] OS: windows7
 [3.3] 言語:C言語
[4] 期限: 2011/5/12(金)
[5] その他の制限: 授業では最近ポインタに入りました。ポインタの入ってから初めての課題です。
文字列のコピーは出来たのですが、どうしても文字列の反転が出来ません…。

698 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:28:07.88 ]
>693

ttp://codepad.org/3jbfqS2v

699 名前:698 mailto:sage [2011/05/10(火) 22:33:21.88 ]
>695

strSrc, strDstとも配列だから問題ない。

>697
コメントに書いたけど、scanfで読み取る文字列がstrSrcのバッファを溢れさせると
まずいことになる。

まぁ、課題の進み具合からして、あふれるような入力は無い前提で
構わないとは思うが。


700 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:40:35.13 ]
>>698
ありがとうございます!理解するのに少し時間がかかりそうですが、勉強してきます…



701 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:41:33.22 ]
>>697
>>693にはstrSrcとstrDstはポインタ変数とあるが配列でいいの?

702 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:48:15.48 ]
>>701
本当ですね…問題文は一切改変してないので、問題作成者側のミスかもしれません。
授業(口頭での課題の簡単な説明)ではstrSrc , strDstを配列として扱っていたので、配列だと思われます。確認してみます…。

703 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:52:20.65 ]
pC=strSrc;pD=strDst;
while(*pC)pC++;
if(pC>strSrc)pC--;
while(pC>strSrc){
*pD=*pC;
pC--;pD++;
}
pD=0;

704 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:58:02.96 ]
↑バグってる

705 名前:698 mailto:sage [2011/05/10(火) 23:02:37.42 ]
バグがあった。

>703さんのコードで3行目に当たるところの処理がまずい。
pC--;

if (pc > strSrc) {
pC--;
}

テストはほとんどしていないので、他にもあるかも。


706 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 23:13:42.89 ]
>>703
(#の後ろは無修正行を意味)

#pC=strSrc;pD=strDst;
#while(*pC)pC++;
#if(pC>strSrc)pC--;
while(pC>=strSrc){
#*pD=*pC;
#pC--;pD++;
#}
*pD=0;

これでおk?

707 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 00:56:53.90 ]
sizeofは覚えるとやたらと使いたくなる演算子の一つだが
むやみに使う癖を付けると後で泣きを見やすい(実体験)
バイトサイズオンリーで押していくシステム直属処理用の
もので理論・応用レベルのコードではなかなか取れない
やっかいなバグの温床になりがち

708 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 01:14:13.97 ]
>>707
エンディアンではまったのですか?yrskrb kwsk

709 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 01:16:29.13 ]
それとも、アラインメントですか?yrskrb kwsk

710 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 01:18:15.44 ]
馬鹿にするために聞くとは意地が悪いなw



711 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 02:00:16.99 ]
>>710
そんなことはありません。sizeof を避ける、という意見は初めて聞きましたので、理由をしりたいだけです。

アラインメントの問題をさけるために assert をバンバンいれたり fwrite(), fread() で構造体のメンバ変数を
ちまちま読み書きしたことがあります。

エンディアンのトラブルを避ける方法はちょっとよくわかりません。

712 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 02:07:18.55 ]
むしろsizeofからエンディアンに発展した経緯が知りたいわ

713 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 06:09:59.23 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ボウリングのスコア計算をするプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:
問題文はこれだけです
習った範囲は2次元配列、if、for、while、switchといった初歩的なものなので
可能ならばそれらでやっていただけると助かります

714 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 06:17:36.03 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
トランプのカード(1〜10,J,Q,K)が13枚ある。
まず、1枚のカードが表示されており、プレイヤーは次のカードが
その数字よりも大きいか小さいかを当てる。
間違えたらそこで試合終了(もう一回続けるかどうか尋ねる。)
予想が正しかったら次の予想を続けるゲームのプログラムを作りなさい。

また上記のゲームのプレイヤー側の思考プログラムを作りなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:
習った範囲は2次元配列、if、for、while、switchといった初歩的なものなので
可能ならばそれらでやっていただけると助かります

ゲームのプログラムと思考プログラムはそれぞれ別のファイルでお願いします。

715 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 06:44:47.86 ]
本日中ってもっと余裕もって質問しろよw
あと2つ目はわかったけど最初のボウリングの問題もっと具体的に

716 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 07:44:54.87 ]
>>715
何だか色々と申し訳ないです

ボーリングの問題なんですが本当に問題文これだけなんで
自分も詳しくは分からないのですがレーン毎に倒した本数を入力していく形式だと思います
一応今授業で乱数を学んでいるのですが特に関係なさそうですし…

717 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 08:22:37.56 ]
要するにストライクやスペアを取った時の処理がミソなんだろうな
あと最後の投球は3回になる可能性も考慮して

718 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 09:01:27.16 ]
>>716
ゴールデンウィークの前に出された問題ですか?

719 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 09:24:40.82 ]
>>718
気持ち悪いので隔離スレでやってくれ

720 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 11:13:25.50 ]
こんな感じで与えられるのかな?

int score[10][3];



721 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 11:58:48.19 ]
ストライクでたら後の2投加算で、スペアは1投加算だっけ?
単純に面倒だな

722 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:22:47.08 ]
>>713
int main()
{
const int score[10][2] = {{0, 0}, {10, 0}, {8, 2}, {10, 0}, {10, 0}, {10, 0}, {5, 3}, {8, 2}, {10, 0}, {10, 10}};
const int extra = 10;
int sum = 0;
int i;
for (i = 0; i < 9; i++) {
if (score[i][0] == 10) {
if (i != 8 && score[i + 1][0] == 10) {
sum += 10 + score[i + 1][0] + score[i + 2][0];
} else {
sum += 10 + score[i + 1][0] + score[i + 1][1];
}
} else if ((score[i][0] + score[i][1]) == 10) {
sum += 10 + score[i + 1][0];
} else {
sum += score[i][0] + score[i][1];
}
printf("%d\n", sum);
}
sum += score[i][0] + score[i][1] + extra;
printf("%d\n", sum);
}

合ってるかもよく分からりません

723 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:44:17.89 ]
>>714
#include <stdio.h>
#include <stdlib.h>

int main()
{
const char *card[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
const int random[6] = {1, 4, 6, 5, 12, 0};
int i, res = 0;
for (i = 0; ; i++, i %= 6) {
printf("次は%sより大きいと思うなら1, 小さいと思うなら0を入力してください\n", card[random[i]]);
scanf("%d", &res);
if ((res == 0 && random[(i + 1) % 6] < random[i]) || (res == 1 && random[i] < random[(i + 1) % 6])) {
printf("つぎは%sなので正解でした\n続けるなら1を入力してください\n", card[random[i + 1]]);
scanf("%d", &res);
if (res != 1)
break;
} else {
printf("不正解ですい\n");
break;
}
}

}


724 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:49:45.35 ]
>>714
#include <stdio.h>
int main()
{
int res;
printf("出されたカードはなんでしたか?数字で入力してください(J = 11, Q = 12, K = 13で)\n");
scanf("%d", &res);
printf("次のカードは今回より%sとおもいます\n", res < 8 ? "大きい" : "小さい");
}

725 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:33:14.90 ]
【質問テンプレ】
[1] 授業単元プログラミング
[2] 問題文(含コード&リンク):
2x2の行列A,Bの差を求める関数void func2(int A[][], int B[][], int C[][])を定義してその動作を確かめるプログラムkadai4-2.cを作りなさい。演算結果はC[][]に代入されて返されるものとする。
ただしAとBはキーボードから次で入力するものとする。
scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]);
答えは以下で出力されるものとする。
printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]);
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 13日まで
[5] その他の制限 特になし

よろしくおねがいします。

726 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:38:51.76 ]
>>725
まてその関数どうやっても作れねーよ

727 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:46:14.63 ]
#include <stdio.h>
void func2(int A[][2], int B[][2], int C[][2])
{
int i ,j;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
C[i][j] = A[i][j] - B[i][j];
}
int main()
{
int a[2][2], b[2][2], c[2][2];
scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]);
func2(a, b, c);
printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]);
}

728 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 14:12:18.39 ]
次の文を修正しなさい

>ポインタ変数宣言時における構文糖
>type *p=type型配列定数宣言
>例
>int const *p={1,2,3,4,5,6,7,8,9,10};
>は許可されないので
>int pbase[10]={1,2,3,4,5,6,7,8,9,10};
>int const *p=pbase;
>としなければならない。
>これでは冗長なのでpがconstである場合に限り
>int p[]={1,2,3,4,5,6,7,8,9,10};
>でconst ポインタ変数pが宣言されたとすることができる
>Cでは配列とポインタを意図的に区別をしていない
>していないからこそ処理系の裁量で「配列」が値渡し(配列的)
>できるか参照渡し(ポインタ的)しか出来ないか決定できる
>前者の場合は副作用の少ないすっきりとしたわかりやすい
>コードが書けるが、実際には動作できないようなコードも
>生み出しがち。後者は現在の標準(巨大データは参照渡)。

729 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 14:35:16.74 ]
>ポインタ変数宣言時における構文糖
>type *p=type型配列定数宣言
>例
>int const *p={1,2,3,4,5,6,7,8,9,10};
>は許可されないので
>int pbase[10]={1,2,3,4,5,6,7,8,9,10};
>int const *p=pbase;
>としなければならない。
>それはおいといて
>int p[]={1,2,3,4,5,6,7,8,9,10};
>はint型の配列pの宣言です
>Cでは配列を関数の引数に渡すと
>関数内ではポインタになります


730 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 15:48:32.56 ]
>>722
>>717が言及しているけど、最後の10フレーム目は、ストライクが2回続いているんで、もう1投あるね。
{10, 10, 8}



731 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 16:06:08.47 ]
あ、ごめん、よく見たら
const int extra = 10;
が10フレームの3投目か。

732 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 17:20:46.96 ]
>>722-724
ありがとうございます

それと申し訳ないんですが>>714のゲームプレイヤー側の思考プログラムなんですが
「ランダムに大小を選択するのではなくある程度思考して選択するように」との一文があったのですが大丈夫ですかね?

それとボーリングのプログラムを倒したピンの数を標準入力していって
スコアを算出するように出来ませんかね?

お手数かけて申し訳ないです

733 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 17:22:52.84 ]
「これからしばらく寝ます。」

734 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:14:57.05 ]
>>732
ランダムに選択していないし、ある程度かどの程度か分からないけれど、思考はしているように見えるよ。
「別の回答作ってるから少し待ってて」

735 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:19:44.77 ]
void func2(int A[][], int B[][], int C[][])
いまのCはint[][]ができるのか。良い時代になったな

>>727
[][2]と[][]は型が違うんじゃないか?

736 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:34:22.00 ]
Cでは別に禁止してないけど、実装上の理由からCコンパイラの多くが
許可していない(対応していない)というのも多いんじゃね?

737 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 19:14:32.07 ]
>>735
だって[][]とか不可能じゃん、こうするしかないじゃん
>>726=>>727だし

>>736
適当なこというなよ

738 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 19:27:41.45 ]
>>736
おいおいこれは「ジャグ配列」と言ってC/C++の二次元配列とは全く違うぞ

強いて言えば std::vector<std::vector<int> > に近い
つまり行ごとに列の要素数が違ってもいいわけだ

739 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 20:31:03.11 ]
>>732

あってるかどうかしらないけど
codepad.org/QdBVtj65


740 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 20:44:56.86 ]
10フレーム3投目がおかしくね?



741 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 20:48:02.57 ]
ポインタでない配列をNULLで初期化するのってあってるの?

742 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 21:03:13.23 ]
NULLはマクロ定義
0の場合が多いけど処理系によって違う

743 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 21:17:57.26 ]
>741
間違ってるだろうね。


Cの場合は
#define ((void *)0)
ってなっていることが多いとおもう。

#define 0
なら結果的に問題ないけど、終端文字をNULLって書くくらい、間違っている。

744 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 00:05:07.68 ]
>>742
どう定義されていようが、間違いには変わりない。

745 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 12:28:56.05 ]
[1] 授業単元:プログラム実習
[2] 問題文(含コード&リンク):
名前・身長・体重・血液型が記録されたメモ帳(ファイル)がある。
これを身長順にソートして並べ替えてコマンドプロンプト上に
表示させるプログラムを作成せよ。
なお、今回メモ帳はstudentsdata.txtという名前で保存されていることとする。

746 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 12:32:21.54 ]
[3] 環境
 [3.1] OS: Windows vista business
 [3.2] コンパイラ名とバージョン: visual basic
 [3.3] 言語:C言語
[4] 期限:2011年5月16日(月)午前9時まで
[5] その他の制限:
最後の行には身長・体重の平均、一番多い血液型を表示させること。
条件として構造体を使うこと。
長文で投稿できなかったので2回に分けました。
よろしくお願いします。

747 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 12:47:43.86 ]
>>745
で、ファイルは固定長?それとも何かの区切りがあるの?

>>746
つか、vbでCは無理
もう一度宿題を確認して来い

748 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 13:05:35.36 ]
名前・身長・体重・血液型の書式が指定されてるか確認した方がいいよ
勝手に決め打ちした書式でも文句は言えないぞ

749 名前:デフォルトの名無しさん [2011/05/12(木) 14:14:19.58 ]
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):codepad.org/a9fxM1w5
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2011年05月17日12:00まで
[5] その他の制限:codepad.org/wW5cjiF7を元にすること

どの部分で何をしているのかも分かりません。
よろしくお願いします。

750 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 15:48:58.26 ]
ttp://hibari.2ch.net/test/read.cgi/tech/1304304298/
このスレの896と897お願いします
困ってます




751 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 15:58:26.35 ]
[1] 授業単元:プログラミング
[2] 次の連立方程式を解け
  x1+2x2+3x3+4x4=30
2x1+3x2+4x3+x4=24
3x1+4x2+x3+2x4=22
4x1+x2+2x3+3x4=24



752 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:03:36.10 ]
751続き

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: visual basic
 [3.3] 言語: C++
[4] 期限: 2011年5月13日(金)
[5] できれば元の式のみを解くというだけでなく、他の数値等でも解けるように式自体を読み込まして解きたい。

数式がとても見辛いですがよろしくお願いします。ガウスの消去法です。


753 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:20:02.16 ]
visual basic

754 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:28:11.08 ]
>>751
ttp://www.geocities.jp/supermisosan/gauss.html
ここのコピペでやっときました

codepad.org/qs1bhQZW
できればとのことでしたので式での読み込みは対応してません


755 名前:764 mailto:sage [2011/05/12(木) 16:51:34.82 ]
大変失礼しました。
ファイルの中は
氏名 身長 体重 血液型
氏名 身長 体重 血液型
     ・
     ・
     ・
といった具合に並んでいます。
(空白はスペースです)
あと、visual basicではなく
visual studioの間違いでした。すみませんでした。

756 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:55:10.14 ]
>>755は746です。

757 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 17:40:32.25 ]
>>755
codepad.org/YSCWRuMX
データは

ito 157 50 B
sato 160 60 A
shiro 220 89 AB
itoo 170 49 AB

で試しました

758 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 17:53:16.34 ]
>>757
ありがとうございます!
助かります

759 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 23:09:33.05 ]
>>754
double a[N][N+1];

for (int i = 0; i < N;i++){
for (int j = 0; j < N + 1; j++){
printf("a[%d][%d] = ", i+1, j+1);
scanf("%lf", &a[i][j]);
}
}

760 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 23:58:57.58 ]
>>754
お礼が遅れてすみません。非常に助かります。
ありがとうございました!



761 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 00:30:28.83 ]
>>749
codepad.org/FAALZHkg

getopt() 周りは調べ物をせずに勘で書きましたので、はずれていたらごめんなさい。

762 名前:デフォルトの名無しさん [2011/05/13(金) 11:37:13.83 ]
[1] 授業単元: ニュートン法
[2] 問題文:与えられた実数(a,b,c,d)に対して,つぎの連立非線形方程式
の解をニュートン法を用いて,解くプログラムを作成しなさい.

f1(x,y)=y+ax^2-b=0
f2(x,y)=y^2+cx^2-d=0

ただし,初期値(a,b,c,d)を入力でき,上記の方程式の解が画面表示さ
れること

【自己チェック法】
(a, b, c, d)=(0.1, 5, 1, 100)→ (x, y)=(9.306, -3.661),(-9.306, -3.661)
,
[3] 環境
 [3.1] Windows
 [3.2] gcc
 [3.3] C言語
[4] 期限: 2011/5/15 18:00まで
[5] その他の制限: できるだけ簡単な関数で

よろしくお願いします.


763 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 12:22:07.41 ]
>>762
codepad.org/MqL6Rtek

764 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 12:22:54.06 ]
あとここからのほぼコピペです
ttp://www.geocities.jp/supermisosan/newtonhou.html


765 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 12:37:13.49 ]
(abcdじゃない方の)初期値も標準入力で入力できたほうが良かったでしょうか
そうしないと数値を変えてコンパイルしなおさないともう一つの解を出せないですし

ニュートン法の手法自体では解が一つしか出ないんですが
複数解についてなにか指示はありましたか?
一応初期値を複数とって比較すれば出せないこともないですが数学的にはかなりアレな方法な気がします

766 名前: ◆XEE2zLj0dE mailto:sage [2011/05/13(金) 13:08:08.81 ]
解は最大4つか

767 名前:デフォルトの名無しさん [2011/05/13(金) 13:31:49.67 ]
1] 授業単元:数値計算アルゴリズム
[2] 問題文:f(x)=e^-x -x^2=0の解(x>0)を原始反復法とニュートン法から求め、その収束の速さを比べよ。なお、解の精度は10^-6 とする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2011年5月13日18:00まで
[5] その他の制限:なし

よろしくお願いします。

768 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 19:06:25.30 ]
原始反復法が分からん
どんなんだっけ?

769 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 19:09:05.55 ]
知恵遅れwww
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1261759137

770 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 07:44:30.37 ]
>>767
原始反復法ってなんですか?



771 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 07:54:29.23 ]
原始反復法=反復法

772 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 11:33:02.88 ]
連立方程式の反復法なら分かるんだがなあ

773 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:46:44.72 ]
<問題文>キーボードから入力された商品名の価格を出力するプログラム。
入力された商品名がない場合は、「そのような商品はありません」と出力する。

codepad.org/DGGLOUGq
codepad.org/h7pGT49o

↑2つのパターンで作成したんですが、両方ともエラーになります。
どうすればいいのか教えて下さい。

バージョンは、VisualC++です。

774 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:52:10.88 ]
>>773
文字列の比較はstrcmpを使ってください
==ではだめです

775 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:54:27.51 ]
× char *name[3] = {"tree","cake"};
○ char *name[2][16] = {"tree","cake"};


776 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:56:21.32 ]
>>775
むしろ
char *name[] = {"tree","cake"}
でいいだろ
ていうかその◯のやつはなんなんだよwwwwww

777 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:57:56.33 ]
>773

直接エラーになっているのは
scanf("%s",&s); → scanf("%s",s);

文字列比較はstrcmpが必要になるのは>774の通り。

>775
何か勘違いしてませんか?

778 名前:773 mailto:sage [2011/05/14(土) 15:34:19.77 ]
strcmpなしではできないのでしょうか?

779 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 15:37:34.83 ]
>>778
できるよ
先頭から一文字づつ比較すればいい


780 名前:773 mailto:sage [2011/05/14(土) 15:42:22.33 ]
>>779
それはfor文を用いるのでしょうか?



781 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 16:00:18.52 ]
>>780
for文でも可能です

782 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 16:03:25.97 ]
>>781
やり方を教えて下さい

783 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 16:05:03.95 ]
>>782
ここは宿題すれだから、>>1のテンプレに従って
問題文と回答方法を書いてくれると早い。

784 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 17:35:15.95 ]
わかりました

[2] 問題文:キーボードから入力された商品名の価格を出力するプログラム。
入力された商品名がない場合は、「そのような商品はありません」と出力する。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限: 2011年5月18日
[5] その他の制限:strcmpは使用しない方向でお願いします

codepad.org/DGGLOUGq
codepad.org/h7pGT49o

785 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 18:13:31.83 ]
>>784
codepad.org/jem1X2Ay

786 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 18:33:02.91 ]
>>785
バカすぎるw

787 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 19:28:00.85 ]
>>785を修正してみた
ttp://codepad.org/PkghZAMd

788 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 20:05:38.40 ]
>>787
>const char *name[] = {"tree","cake"};
>const int price[] = {300,500};
なぜ static をはずした?

789 名前:787 mailto:sage [2011/05/14(土) 20:16:50.68 ]
いつもの癖で
質問で気付いたけど呼び出し毎のスタック確保&解放防止の為なのね、
付けた方が良いのかも

790 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 20:37:21.04 ]
787は中途半端すぎだろconstもつけろよwwwww
改変の危険と速度面から



791 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 20:37:49.38 ]
>>787じゃねぇ>>785

792 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 23:07:51.48 ]
>>784
codepad.org/sMyHxgqq

793 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 00:40:17.56 ]
本人がstrcmp使わないでとか自身で書いたコードがCなのにC++かいな、

ってか前もこの手の話なかったか?w

794 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 01:06:02.73 ]
>> [3.3] 言語: C++
仕様通り。問題無し。

795 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 03:19:24.77 ]
半端なC++化だな



796 名前: ◆6W4srb4nmo mailto:sage [2011/05/15(日) 03:28:10.33 ]
A Better C.

797 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 08:50:38.83 ]
コードも書かずに批評かよ…
本格的なC++化というのを見せてくれ。w

798 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 08:54:17.71 ]
>>797
本格的とかいわれてもwwwww
stringを使って簡略化したなら
末尾の検出のために手動で-1入れた配列とか使ってないでコンテナも使えばいいじゃんぐらいの話しよ

799 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 09:00:41.03 ]
hoge.cpp

800 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 09:29:08.10 ]
>>798
5月初旬じゃコンテナまで習ってないだろ。



801 名前: ◆XEE2zLj0dE mailto:sage [2011/05/15(日) 09:44:33.48 ]
本格的かどうかわからないけどやってみた。
codepad.org/lZa2IvaV
なんか商品がすごいなぁ

802 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:37:07.20 ]
>>800
出題者のこと考えるならそもそもstringも使うべきじゃないだろ
どうみてもCだもの

あくまで>>792が半端だなぁってだけだよ

803 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:45:00.34 ]
>>802
お題が、言語:C++、制約条件:strcmpは使用しない事とあるので、
std::string使えというのが出題者の意図と判断した。
もう一つの可能性(strcmpを自分で書く)は既に出ている。

質問テンプレに「これまで習った範囲」も入れた方が良いな。

804 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:45:06.08 ]
テンプレぐらいちゃんと書こうよって皮肉だと思う
あと、strcmpを使わないっていうのは、本来そんな制限はないけど、
出題者が思い込みで勝手につけた制限だと思う。宿題スレにはよくあること

805 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:50:25.42 ]
>>803
あぁなるほど
C++って描いてあるのに結局Cでやれってことかよって奴をちょくちょく見たので思い込んでた


806 名前: ◆/91kCCQXBo mailto:sage [2011/05/15(日) 11:13:20.99 ]
>>785
tree
tr
trees
rg
で試したけど全部300

807 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 13:39:45.23 ]
>>806
ご指摘ありがとうございます。
mystrcmp() に問題がありました。

>>784
バグがありました。以下に訂正いたします。
codepad.org/j4CqE1i7

808 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 13:51:40.71 ]
[1] C言語GW課題
[2] キーボードから128文字以内の文字列を読み取り
それが浮動小数点表現であるかどうかを検査する
プログラムを作りなさい。浮動小数点表現ならば
その数に1を足した数字を表示しなさい。
[3] Windows/Visual C++/C言語
[4] 5/13迄(遅れています)
[5] printf,scanfしか習ってません 
ボインタとかまだ習ってません
これ以外の関数は使えないと思います。
よろしくお願いします。

809 名前:784 mailto:sage [2011/05/15(日) 16:00:57.97 ]
784です。遅れてすいません
様々なプログラムをありがとうございました
参考にさせていただきます

810 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 16:33:51.45 ]
頑張ってC++してみた
ttp://codepad.org/2vOLnCEL



811 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 16:38:38.61 ]
>>810>>784のコードね

812 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 16:39:39.89 ]
>>808
codepad.org/UdQ3fBEH
習っていない表現があれば書き直しますので連絡ください。

813 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:22:11.31 ]
>>808
追加要望 hibari.2ch.net/test/read.cgi/tech/1295273862/869
に対応しました。あとバグをいくつかとりました。
codepad.org/m9T3sxmN

814 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:29:55.59 ]
>>813
エラー E2140 dai2.c 15: ここでは宣言はできない (関数 main )

またC99で書いたろカス

815 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:48:42.02 ]
あと、E大文字、とか。
それは出題者で出来るだろうから宿題。

816 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:52:46.47 ]
>>814
おっとご指摘感謝。

>>808
codepad.org/jbnR5QWF

817 名前:デフォルトの名無しさん [2011/05/15(日) 18:55:59.95 ]
>>814
だってQカスだもの

818 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 19:35:09.50 ]
>>808
codepad.org/QcnnVfwC
以下をテスト

819 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 19:42:20.95 ]
' 3.4' >>818

820 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 20:23:03.37 ]
>>808
>>818のバグ修正
codepad.org/Yygx9FfA

以下のパターンをテスト
1
-1
-100
+10
1.e
.1
1.0
1.-10
-1.F1
-1.e1
-1.e+1
-1.e.1
-10E10
-1.e2
1.0.
-
+
.
1.0 b
3.4 <= 行頭、行末が空白



821 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 20:25:43.42 ]
>>820
ついでにこれもテスト。
3.4 3.4

822 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 22:48:15.50 ]
>>820
整数.整数f+整数
という記法は無かったので、

int isexp(int c)
{
return c == 'E' || c == 'e';
}
に修正してくれ。コメントも合わせて要修正。

823 名前: ◆6W4srb4nmo mailto:sage [2011/05/15(日) 23:19:05.41 ]
浮動小数点 スペース 浮動小数点
は2個?それともエラー? >>808

824 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 23:30:33.35 ]
エラーだと思うけどなぁ

825 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 23:30:58.48 ]
もしくは、1つ目のみ処理対象

826 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 00:32:58.27 ]
なんか久々にまともにこのスレで議論してるとこ見た気がする

827 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 06:30:38.81 ]
以下のsscanfの仕様と同じように作ればいいんじゃないかな?

if( sscanf(buf, "%lf%s", &value, s) == 1 )
printf("%s + 1 = %f\n", buf, value + 1.0);

828 名前: ◆6W4srb4nmo mailto:sage [2011/05/16(月) 11:00:15.92 ]
>>808
#pragma warning (disable:4996)
// 処理:2つ以上の数は1つ目だけの処理
// 制限:scanf/printf だけを使う
// 目的:復興のための再開発
#include <stdio.h>
int main(void){
  double data;

  if(scanf("%lf", &data) == 1)
    printf("%f\n", ++data );
  else
    printf("error\n");
}

829 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 11:42:39.62 ]
>>828
それだと小数点も指数も無い整数が通っちゃう気がする

830 名前: ◆6W4srb4nmo mailto:sage [2011/05/16(月) 11:50:33.27 ]
ちなみに、もりたぽ有償くんのは、最初そのイメージだったけど、通るように直してた。
3e4とか。



831 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:09:47.86 ]
QZさんを糞呼ばわりしている人はQZさん以上のものが
書けたのかな?

832 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:15:05.98 ]
本人擁護乙

833 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:33:37.31 ]
本人擁護も糞呼ばわりもわりとどうでもいい。依頼に淡々と回答を書けばいい。

834 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:52:17.15 ]
なんか必死でスレ埋めてたな
多分こっちにも被害くるぜ

835 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:16:52.90 ]
新スレ立てるだろうし。わきまえて使えるかどうかで、それぞれの評価が決まるよ

836 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:33:53.10 ]
◆QZaw55cn4cまだいたのかw

837 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:41:21.16 ]
◆QZaw55cn4cを非難しているのは一人か二人だろうと本人が書いてたなw
幸せ回路全開だな
んなわけねーだろ

838 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:48:30.22 ]
>>834
そうだね
そうならないためにも◆QZaw55cn4cには消えてほしいね

839 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:53:16.69 ]
QZさん人気者w

840 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:59:17.07 ]
なんで最近またトリ付けてるの?
我慢できなくなっちゃった?



841 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:00:46.70 ]
>>840
無能の癖に自己顕示欲とプライドだけは無用に高いからなあw

842 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:14:43.73 ]
宿題スレ、二ついるようだね。お互い邪魔しないようにしてね

843 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:23:01.38 ]
なんでID強制表示に賛成してくんないの?

844 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:34:14.23 ]
>>843
過疎版になって事実上板が死ぬから

845 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:47:46.36 ]
そんなに嫌なら別スレでやれば?

846 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:52:59.19 ]
◆QZaw55cn4cって「わたしの10倍速いコードなど、ありえないだろう…(キリッ」って偉そうにしてたら、
あっさり100倍速いコード書かれて涙目でフェードアウトした人のこと?

847 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:56:05.85 ]
>>844
過疎りはしないと思うよ。単発が増えまくるだろうけど

848 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 15:56:41.13 ]
>>847
いや減る
ID制になった他の板を見てみろよ
全部減ってる
ID表示は投稿量を減らす効果がありますと書いてあるし

tiyu.to/permalink.cgi?file=1ch_gen

849 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:05:32.60 ]
ぶっちゃけ過疎って困る人がいるか?

850 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:10:06.66 ]
面白半分の煽りが減るから、ユーザーには良いことだね



851 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:32:21.15 ]
書き込みが減るのか。それは良い

852 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:52:58.09 ]
煽り専門でム板にいる俺は困るな

853 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 17:12:21.09 ]
たまにわく偽物とか居なくなるしね

854 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 17:46:55.69 ]
ID導入に賛成してる奴は一人か二人が自作自演してるだけだろ
嘘だと思うならアンケ取ってみな

vote1.fc2.com/poll?mode=browse&uid=10647472&no=1

アンケ板作って見たから様子を見てみるか

855 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:05:52.00 ]
通算で始めての投稿のIPにはIDを出さず,2回目以降は
都度異なるID(IPと時刻から決定される3桁英数字ハッシュコード)
+積算投稿回数(10回未満:1 100回未満:2 1000回未満:3
...)
がいいと思います
荒らしと認定されたものが多いIPは赤で表示してもらうとか

856 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:08:29.88 ]
>>855
ここの投票所はそれが使えないんですよ
何かいい投票所はないですか?
ちなみにコメント欄入力必須にしときましたので、
あまりいい加減なコメントばかりならこの投票所を消します
ちゃんと理由を記入してください

857 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:14:58.28 ]
他所でやれ、ゴミども

858 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:22:39.85 ]
でもこの投票所はつなぎ直してリモートホスト変えてクッキーも消せば自作自演し放題じゃん
やっぱり消すわこれ

859 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:26:00.67 ]
>>858
それはIDにも言える事で・・・

860 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:26:43.39 ]
>>856
投票所じゃなくてスレにそういうIDがでればいいのにって話じゃね?



861 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:27:45.95 ]
すぐ取り消すあたりQと似てるな

862 名前:808 mailto:sage [2011/05/16(月) 20:18:24.88 ]
>>812,813,816,818,820
友達が作ったプログラムを走らせてみると
こんな感じでした。
符号を入力してください(空入力で+とします):.
符号を入力してください(空入力で+とします):+
小数点以下0桁目を入力してください:3
3.000000000000000000
小数点以下1桁目を入力してください(空入力で終了):a
小数点以下1桁目を入力してください(空入力で終了):12
小数点以下1桁目を入力してください(空入力で終了):1
3.100000000000000089
小数点以下2桁目を入力してください(空入力で終了):4
3.140000000000000124
小数点以下3桁目を入力してください(空入力で終了):
exponent表現を使いますか<Y/N>?a
exponent表現を使いますか<Y/N>?y
符号を入力してください(空入力で+とします):-
exponent先頭1桁目を入力してください:1
0.314000000000000057
exponent先頭2桁目を入力してください(空入力で終了):
1.3140000000000001+1.0

でも、多分皆さんが作ってくださったコードが求めるものだと
思います。感謝致します。

863 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 20:29:31.84 ]
小数点記法って正規表現で表せるのか?
表せるのだったらNP完全だが、表せないんだったら
>>862みたいに自分で選ばせるしかないな

864 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 20:46:50.65 ]
>>863
Cの規格書ではBNFを使った文法を与えられているが、
たぶん正規表現でも書けると思う

865 名前:デフォルトの名無しさん [2011/05/16(月) 20:59:52.49 ]
実はこの課題は
浮動小数点表現を題材に俺なんちゃって正規表現を実装して
パターンマッチングせよって課題ってことか

866 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 21:04:10.86 ]
>>864
ならexponent表現を使いますかって選択肢は不要なはずだね

867 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 21:23:17.95 ]
問題文の解釈で理系か文系かが分かれるなw
ガチガチの(ちょっと叩けば粉々に崩れる)プログラマ脳か、
頓知しか出来ない俺なんちゃって脳か

868 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:34:09.84 ]
[1] プログラミング言語U
[2] 画像を拡大せよ(128×128→256×256)、なお拡大方法は自由とする
[3] windows/Visual C++ 2008 Express edition/C++
[4] 2011/05/18
[5] きれいに拡大できる線形補間法で拡大しようとしていますがなかなか上手くいきません。
なお、複雑なwindowsアプリケーションでなく簡単なコンソールアプリケーションで作成したいです。
よろしくお願いします。

869 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:40:50.56 ]
GetPixel, SetPixelでfor文ぐるぐるで終わりだと思うが

870 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:42:46.12 ]
>>868
画像形式は?
あとライブラリの使用はどの程度可能だ?VC2008についてる物なら何でも使っていいか
(もちろん画像処理そのものは別として)



871 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:45:24.81 ]
JPEG

872 名前:868 mailto:sage [2011/05/17(火) 01:00:43.17 ]
>>869
GetPixel等を用いずにやってみました。
codepad.org/vduTwrli
めちゃくちゃだと思いますが、このような感じで作成していきたいと思います。

>>870
bmpです。
ライブラリについて特に指定はありませんでした。

873 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:04:13.12 ]
問題を分割してみては

(1)画素配列 int [128][128]をint [256][256]に滑らかに補完して返す関数
int *hokan(int *src)
の作成

(2)指定されたファイルを探して画像ファイルかどうかを検出してint[128][128]配列に
して返す関数の作成
int **resdFile(char *);

(3)hokan,readFileを使ってコンソールからファイル名を読み取って256x256配列に
直してコンソールで指定されたファイルに書き込むint main(void)の作成

てな具合に
それぞれ別の人が担当すりゃ空気良くならね?

874 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:04:52.99 ]
>>872
bmp のヘッダとかフォーマットとか全く知らないのか?
その辺りがむちゃくちゃ

875 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:27:02.09 ]
>>873
聞かなきゃなんともならん部分聞いてるだけじゃねーかwwww

分割してなにが解決するんだよ

876 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:34:18.66 ]
>>875
失礼。このスレにも流れと空気があってその関係の話ですた。

877 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2011/05/17(火) 07:12:58.70 ]
GetPixel, SetPixelを使わないならそれに相当する関数を自分で作ることになるだけだが
とりあえずfopenで直接バイナリを見てやるならBMPのフォーマットを調べることからやらないと

878 名前:デフォルトの名無しさん [2011/05/17(火) 13:48:34.02 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した2つの文字列を連結する関数
void addstr(char str1[], char str2[], char ans[])を定義して、
この動作を確認するプログラムkadai5-1.cを作りなさい。
ただし、addstr()はstr1とstr2を連結したものをansに代入して終了するもの
とする。また、2つの文字列は次のように入力されるものとする。
scanf("%s", str1);
scanf("%s", str2);
答えは以下で出力されるものとする。
printf("answer = %s\n", answer);
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2011年5月19日18:00まで] または [無期限] のいずれか)



879 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 14:29:36.56 ]
#include <stdio.h>

void addstr(char str1[], char str2[], char ans[])
{
while(*str1) *ans++ = *str1++;
while(*ans++ = *str2++);
}

int main(void)
{
char str1[128], str2[125], answer[256];

scanf("%s", str1);
scanf("%s", str2);

addstr(str1, str2, answer);

printf("answer = %s\n", answer);

return 0;
}

880 名前:デフォルトの名無しさん [2011/05/17(火) 15:24:21.34 ]
もう1問おねがいします。


[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した文字列を逆向きの文字列に変換する関数
void reverse(char str[], char answer[])を作り、その動作を確認する
プログラムkadai5-2.cを作りなさい。
但し対象となる文字列はstr[]に。
答えはanswer []に代入されて返信されるものとする。
scanf("%s", str);
答えは以下で出力されるものとする。
printf("answer = %s\n", answer);

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2011年5月19日18:00まで] または [無期限] のいずれか)




881 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 15:40:54.31 ]
>>880
ttp://codepad.org/PcMDvWwY

882 名前:デフォルトの名無しさん [2011/05/17(火) 16:15:11.50 ]
[1]授業単元:プログラミング
[2]問題文
二次元配列に保存された10組の計測データ
x 23 34 45 21 34 56 68 78 89 45
y 22 28 55 17 42 56 60 87 91 39
に対して最小二乗法により直線近似した場合
の傾きと定数項を求めるプログラミングを作成しなさい。
※二つの変数の相関係数を求めて出力しなさい。


883 名前:882の続きです。 [2011/05/17(火) 16:17:13.47 ]
[3]環境
[3,1] OS:恐らくWindows7
[3,2] コンパイラ名とバージョン:すいません、わかりません。
[3,3] 言語:C
[4]期限:2011年5月18日10時00分まで

コマンドプロンプトと秀丸を使っています。
よろしくお願いします。

884 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 16:30:32.40 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ttp://www.dotup.org/uploda/www.dotup.org1645289.txt
(上記URL先)のプログラムを機能別に分けたプログラムを作成しなさい。
また、どの点に着目して改良したかを述べなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual C++ 2008 Express edition
 [3.3] 言語: C++
[4] 期限: 2011年5月18日(水)22:00
[5] その他の制限: 配列の章までの範囲でお願いします。

何が何と同時に実行されているのかを明確にして頂きたいのです。
また、部分ごとにどういうプログラムを実行しているか(人数の入力など)分けて頂けると嬉しいです。

885 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 17:17:17.59 ]
>>868
とりあえず暫定版
ttp://codepad.org/gvIqBgDD

・圧縮レベル0(BI_RGB)のみ対応
・画像データは1次元配列保持になっちゃった
・コード汚い
・画像サイズは128x128固定じゃない

試した画像
ttp://www1.axfc.net/uploader/Sc/so/235061
・test1bit.bmp  ← エラー出る
・test4bit.bmp  ← エラー出る
・test8bit.bmp
・test16bit.bmp
・test24bit.bmp
・test32bit.bmp

886 名前:885 mailto:sage [2011/05/17(火) 17:22:55.84 ]
ちなみに参考にしたサイトは下記
ttp://www.ruche-home.net/
ttp://msdn.microsoft.com/en-us/library/dd183376(VS.85).aspx

887 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 17:56:31.42 ]
>>882>>883

codepad.org/VKAy4eAf

このプログラムは直線近似だけでなく多項式近似も出来るようになっている
直線近似だけなら実はガウスジョルダン消去法は不要でたすき掛け演算で十分だが
分かりにくいのでこのようにしといた



888 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:05:48.63 ]
>>880
#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 128

void reverse( char str[] , char answer[] ) {
int index ;
char *pBuff ;
pBuff = str + strlen(str) -1 ;
for( index = 0 ; index < strlen(str) ; index++ ) {
answer[index] = *pBuff ;
pBuff-- ;
}
}

int main(int argc , char** argv ) {
char str[MAX_LENGTH] = {'\0'} ;
char answer[MAX_LENGTH] = {'\0'} ;
printf("input string:") ;
scanf("%s" , str ) ;
reverse( str , answer ) ;
printf("answer = %s\n" , answer ) ;

return 0 ;
}


889 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:11:49.67 ]
あたま悪いな

890 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:19:09.06 ]
>>887
ガウスジョルダン消去法は最小二乗法なのか?




891 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:33:41.51 ]
>>890
当然違う。

892 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:40:20.50 ]
>>890
曲線近似する時は連立一次方程式を解かなければならないだろ
いまはそれがxで終わっているからこんなおおげさな事はしなくていいのだが
つるかめ算をするとかえってプログラムが読みにくくなる

893 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:49:47.36 ]
クラメルの公式を使えばガウスジョルダン消去法は必要ない
元のプログラムはそうなっている

894 名前:882,883です。 [2011/05/17(火) 20:00:25.71 ]
>>882>>883です。
ホントにありがとうごさいます。

申し訳ないんですが、もう少し短くはなりませんか?

一応、学校で配られた二次元配列のプログラムを載せます。





895 名前:894の続きです。 [2011/05/17(火) 20:08:10.64 ]
問題がわかりませんが、

#include<stdio.h>
#include < stdlib.h>

int main(void)
{
int a[2][2], i, j ;

a[0][0]=1 ; a[0][1]=2 ;
a[1][0]=3 ; a[1][1]=4 ;

for(i=0; i<2; i++){
for(j=0; j<2; j++;){
printf(" a[%d][%d]=%d", i, j, a[i][j]);
}
printf("¥n");
}
return(0);
}

896 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 20:42:19.72 ]
>>895
回帰分析を回帰直線専用に簡略化したけどこれでも長いかな?
これ以上短くするのは難しいかも・・・

codepadが重いのでideoneに貼らせてもらいました

ideone.com/pe3hT

897 名前:895の続きです。 [2011/05/17(火) 21:11:53.66 ]
こんな感じです。

また別の例に
double型のデータを格納し、配列名をa、大きさを3×5とした場合
→double a[3][5]

と書いてあります。ド素人で全然わかりませんが、
よろしくお願いいたします。

898 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 21:18:10.73 ]
わけがわからないよ

899 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 21:27:54.18 ]
>>895>>897
課題と全然関係ないじゃん






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef