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

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

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

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

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 146代目
http://hibari.2ch.net/test/read.cgi/tech/1296387672/
2デフォルトの名無しさん:2011/03/31(木) 15:43:29.31
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
3デフォルトの名無しさん:2011/03/31(木) 16:10:07.66
>>1乙スレ立て直せ
4デフォルトの名無しさん:2011/04/01(金) 14:24:00.11
>>3
どうして?
5デフォルトの名無しさん:2011/04/01(金) 14:39:31.00
>>3==◆QZaw55cn4c

立て直す必要なし
6デフォルトの名無しさん:2011/04/01(金) 15:05:03.83
ああ、例のあの問題か。
もうすぐ春休みあけで商売がまわりだすんだろうな
ちょっと興味あるぜ
どれぐらい儲かってんだろ
7デフォルトの名無しさん: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 :2011/04/01(金) 21:04:54.02
>>6
>どれぐらい儲かってんだろ
0 円です。
9デフォルトの名無しさん:2011/04/01(金) 21:17:06.40
>>8
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
10デフォルトの名無しさん:2011/04/01(金) 23:11:41.69
JAVAでいうインターフェイスみたいなのってないの?
11デフォルトの名無しさん:2011/04/01(金) 23:21:21.86
>>8
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
12 ◆QZaw55cn4c :2011/04/01(金) 23:43:41.79
>>6
間違えました。

>どれぐらい儲かってんだろ
0 モリタポです。
13デフォルトの名無しさん:2011/04/01(金) 23:59:21.43
>>12
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
14デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/02(土) 21:09:55.15
vectorは要素の追加毎に全部を新しく更新
リストは繋げるだけだから早い

この解釈でおk?
17デフォルトの名無しさん:2011/04/03(日) 00:55:58.27
更新というか、要素が追加されるごとに追加前の要素数+1の領域を確保しなおしてコピーしている
18 忍法帖【Lv=15,xxxPT】 :2011/04/03(日) 02:59:06.75
おりゃ
19デフォルトの名無しさん:2011/04/03(日) 09:53:56.26
Cってスレッドあったっけ?
20 ◆QZaw55cn4c :2011/04/03(日) 10:28:45.07
>>19
言語としては規定されていません。
各々の環境でスレッドを管理する関数を呼び出すことになります。(win32 や posix-thread など。)
21デフォルトの名無しさん:2011/04/03(日) 10:54:07.86
>>20
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
22デフォルトの名無しさん:2011/04/03(日) 11:31:07.87
23デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/03(日) 18:05:28.72
>>17
とは限らない
25デフォルトの名無しさん:2011/04/03(日) 23:15:54.87
>>19
http://hibari.2ch.net/test/read.cgi/tech/1301773320/
http://hibari.2ch.net/test/read.cgi/tech/1246115922/
ってネタが真っ先に思いついた…orz
少し2chから離れよう
26デフォルトの名無しさん:2011/04/04(月) 19:27:32.72
> 各々の環境でスレッドを管理する関数を呼び出すことになります。(win32 や posix-thread など。)
なにこれ。素人さん?
27 ◆QZaw55cn4c :2011/04/04(月) 20:28:35.40
>>26
「API」「システムコール」といえばよかったですかね。
28デフォルトの名無しさん:2011/04/04(月) 20:38:21.31
>>27
「API」「システムコール」ってどういうものなの?
29 ◆QZaw55cn4c :2011/04/04(月) 20:42:37.55
30デフォルトの名無しさん:2011/04/04(月) 20:47:07.72
>>29
人の記述を盗まず、自分の口で語って
31@問題: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: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: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: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: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デフォルトの名無しさん:2011/04/04(月) 21:43:45.38
テストだからわざと読みにくくしてるだけだよな?
実際の仕事じゃこんなコードじゃないよな?
37@問題(補足):2011/04/04(月) 21:50:17.35
やはりそうなんですか。
そういえば先輩は「作り変えても良いよ」と言っていました。

オセロのソースです。

38 ◆QZaw55cn4c :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デフォルトの名無しさん:2011/04/04(月) 23:40:18.66
◆QZaw55cn4cってなんでコテ付け続けてるの?
荒れたスレを演出したいの?
40デフォルトの名無しさん:2011/04/04(月) 23:48:44.10
>>39
私のコメントを読みたくない、という希望が少なからずあるので、そんな人のために専用ブラウザで弾けるようにしています。
あと、http://hibari.2ch.net/test/read.cgi/tech/1295273862/ の情報宣伝活動も兼ねています。
41デフォルトの名無しさん:2011/04/04(月) 23:58:41.34
僕はプログラムに対してとても詳しいんだ。by.QZ

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

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

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

そういうわけで、たたかれてるんだと思うよ。
42デフォルトの名無しさん:2011/04/05(火) 00:00:47.59
あー、OS提供の機能がpthreadなんです、ってことか。
めんどくせ。
43 ◆QZaw55cn4c :2011/04/05(火) 00:10:47.79
>>41
>ライブラリ
たしかにこの場合には極めて適切な言葉ですね。

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

>細かく聞かれると、すぐに別サイトへのアンカーを貼る。
これは確かに余計でした。失礼。
44デフォルトの名無しさん:2011/04/05(火) 00:16:39.60
おまえらは巣に引っ込んでろ
45デフォルトの名無しさん:2011/04/05(火) 00:42:08.43
>>40は◆QZaw55cn4cなの?
なんで外したの?
46 ◆QZaw55cn4c :2011/04/05(火) 00:49:42.36
>>45
単に付け忘れです。私の専ブラは自動でつけてくれないのです、それだけです。
47デフォルトの名無しさん:2011/04/05(火) 01:03:51.67
付け忘れるなら、書き込むな。荒れるだけだ
48デフォルトの名無しさん:2011/04/05(火) 01:46:12.19
見栄を張るなら、ボロを出さないように見栄を張れってことだな。
必死でぐぐってる姿は相手から見えないんだから。
49デフォルトの名無しさん:2011/04/05(火) 06:43:25.93
>>31
それ七行プログラミングのオセロに似てないか?
まぁ、else使ってる所とか、カスタマイズが甘いから、
七行ぎりぎりの初期のバージョンを改造してるのかな?
そのバージョンならググれば、変数を分かりやすくして
コメントが入ってるバージョンが見つかるはず。
あとは、ぱっと見、入力方法が違うくらいかな?
50 忍法帖【Lv=29,xxxPT】 :2011/04/05(火) 06:57:36.48
適当にやったら負けたけど、ちょっと真面目にやったら半分ちょいで完勝したw
51デフォルトの名無しさん:2011/04/05(火) 12:40:03.98
>>50
全部走査して最初に置けるところに置く仕様なのに
負けるって、ある意味器用だなw
52デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/05(火) 19:49:00.90
西日本も福島原発の放射能に曝される。

4/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
54デフォルトの名無しさん:2011/04/05(火) 21:23:45.75
>>52
規則性が分からないんだがヒントはないの?
55デフォルトの名無しさん:2011/04/05(火) 21:25:13.16
>>54
16で割る。
56デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/05(火) 21:42:15.81
これ以外の入力が行われたときについて何も指定がないんだから
常に438が出力されるコードを書けば題意を満たすことができる
58デフォルトの名無しさん:2011/04/05(火) 21:43:21.61
>>56
この問題おもしろいんだよね。前スレの最後の頃に
荒れて荒れてしょうがなかったから、話題を転じる
ためにルールを探すプログラムを書く問題をだした。
この問題も、あなたが、いくつかの問題の解法の
パターンを持っているとして、それを、これではどうかな?
これではだめかな?というふうに確かめていって、
全部解が当てはまったときに、これが多分解法の
プログラムでしょ、とソースを示す。というような問題と
して捉えるならば、面白いんだよね。
59デフォルトの名無しさん:2011/04/05(火) 22:13:58.25
>>52
#include <stdio.h>

int main(void){
printf("4\n3\n8\n");
return 0;
}
60デフォルトの名無しさん:2011/04/05(火) 22:28:01.51
>>58
ブラックボックスでやるにしてはサンプルが少ないし
独立性の確認もできないのではどうにもならんよ
61デフォルトの名無しさん:2011/04/05(火) 22:35:20.56
>>52
たぶん、あってるはず。
余裕あったらコメントつけて再うpする。
http://codepad.org/MV69Cf8m
6257:2011/04/05(火) 22:40:52.58
あ、間違いありまくりだ
焦りすぎた・・・
6361:2011/04/05(火) 22:54:14.26
修正版
http://codepad.org/GrIXAZD1
なぜだかレス番間違えた。
64デフォルトの名無しさん:2011/04/05(火) 23:59:04.48
ライフゲームが何世代で収束するかだろ
見ただけで分かったわ
65デフォルトの名無しさん:2011/04/06(水) 00:06:31.77
ソースがあがった1時間後に言われてもw
6661:2011/04/06(水) 01:22:21.57
改善およびコメント付記
http://codepad.org/B93gQFkN

・注意
これは俺が勝手に問題を解釈しただけで、題意と全然違う可能性もある。ライフゲームが正解なのかもしれんw
また、あえて簡単な解き方ではやってなくわかりづらいため、他の人のを待ったほうがいいかもかも
67デフォルトの名無しさん:2011/04/06(水) 01:43:45.99
ライフゲーム試したら上から4、8、13だったぞ
適当言うなやww
6861:2011/04/06(水) 11:56:29.47
http://codepad.org/EzE5e4WZ
もう1つのやり方を加えてみた
手打ちが面倒だったから、ランダム化してみた

春休みもそろそろ終わって宿題増えるかなぁ
69デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/06(水) 23:20:37.74
ありがとうございます。
\0が入ってたからそこで文字列が終了してたのか・・・orz
72デフォルトの名無しさん:2011/04/06(水) 23:21:15.11
>if(!i%2)
73 ◆/91kCCQXBo :2011/04/06(水) 23:21:30.45
>>69
if(!(i%2))
74デフォルトの名無しさん:2011/04/06(水) 23:21:36.57
>>69
12345→15243
hello→hoellじゃないの?

75デフォルトの名無しさん:2011/04/06(水) 23:24:54.36
・・・・・・ごめんなさいごめんなさいごめんなさいorz
76デフォルトの名無しさん: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がはいってしまいます。
  お力添えよろしくお願いします。
http://codepad.org/JgDVRSjp

[3]環境
  OS:Windows
 言語:C
[4] 期限:4月7日 
よろしくお願いします。
78デフォルトの名無しさん:2011/04/07(木) 01:25:12.61
>>77
conio.hとかどこのPC-98だよ
79デフォルトの名無しさん:2011/04/07(木) 01:39:36.61
>>77
void state()の中で
player[i].hpをplayer[i].hpCurrentに代入してない
80デフォルトの名無しさん:2011/04/07(木) 01:42:05.87
あ、俺が作ったやつだ。conio.hなんて書いたっけなぁ
俺の持ってるソースと照らし合わせてみたら、いくつか違う部分があったのだけれど改良した?
もしくは俺が改良してアップしてないだけなのかも。

いま問題なのは、HPが0でないのに0って表示されてしまうってことでおk?
8180:2011/04/07(木) 01:46:26.33
http://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デフォルトの名無しさん:2011/04/08(金) 18:04:06.51
>>83
整数の桁制限とか何かないの?
85デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/09(土) 05:08:43.63
5 6 7 8 9 10
↑個数を最初に入力する。
87デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/12(火) 00:02:38.66
キューがたまってるのに要素が減るのも変な話だけど、memmoveでいいとおもうよ
92デフォルトの名無しさん:2011/04/12(火) 00:08:52.35
そういった関数はつかわないでお願いします。
93デフォルトの名無しさん:2011/04/12(火) 00:57:08.48
>>90
>この状態で次のキューがたまると

たまったキューはどこにあるの?
94デフォルトの名無しさん:2011/04/12(火) 01:21:19.68
memmove禁止とか不思議だなぁ。
ループでまわせば?
for (i=0; i < queue_size - 1; ++i) box[i] = box[i+1];
95デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/12(火) 20:02:00.96
>>95

http://ideone.com/jfDzU

// C++超久々に書いた
// 一番悩んだのは格納する「だけ」でいいのかということ
// どういう意図の課題なのかなあ以上チラ裏
98デフォルトの名無しさん:2011/04/12(火) 20:24:23.25
>>96-97
ありがとうございます

格納する「だけ」でいいです。
そうとしか書いてなかったので...
99デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/12(火) 21:00:54.73
>>99

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

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

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

「分からない」んじゃなくて本当は「問題設定ができてない」んじゃないかなあ...
101デフォルトの名無しさん:2011/04/12(火) 21:23:52.73
99です。

計算式通りに計算して出力するプログラムです。
ループを使えとヒントに書いてありました。
102デフォルトの名無しさん:2011/04/12(火) 21:41:44.72
103デフォルトの名無しさん:2011/04/12(火) 22:03:00.41
>>102
ありがとうございました
おかげで何とかなりそうです
104デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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 :2011/04/12(火) 23:22:35.83
>>106
どこからも文句のつけようがない完璧な仕様書がなければコーディングしない、というある意味すれた人達のひとりなのでしょう。
こういう風には死んでもなりたくない、と痛切に感じております。
109デフォルトの名無しさん:2011/04/12(火) 23:25:13.70
>>108
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
110デフォルトの名無しさん:2011/04/12(火) 23:29:59.45
>>107
できるよ
111デフォルトの名無しさん:2011/04/12(火) 23:36:08.76
>>110
ありがとうございます。
単に使い方を知らなかっただけみたいです。
112デフォルトの名無しさん:2011/04/13(水) 02:13:39.55
>>103
そのまま出すと減点されるぞw
113 ◆QZaw55cn4c :2011/04/13(水) 08:16:00.13
>>112
どこがおかしいのですか?
114デフォルトの名無しさん:2011/04/13(水) 10:10:58.50
◆QZaw55cn4cみたいなバカが書き込むと荒れるのでやめてもらえませんか
115デフォルトの名無しさん:2011/04/13(水) 10:30:54.94
それも分からないの?
116デフォルトの名無しさん:2011/04/13(水) 11:53:33.03
>>109,104
黙ってあぼん
117デフォルトの名無しさん:2011/04/13(水) 12:44:53.35
> みたいなちびまるこが書き込むと荒れるのでやめてもらえませんか
sum += i * 3. / 2;
118102:2011/04/13(水) 13:24:41.97
117が言うまでどこがおかしーんだろって思ってたよだめすぎる
勉強になりました ありがとう
ttp://ideone.com/HDDO7
119デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/13(水) 20:19:59.10
>>120
これ出題が間違ってない?
エンディアンによってローテイトの方法が変わるとは知らなんだ
普通、変数に格納された時点でエンディアンの問題は解決してるだろ
122デフォルトの名無しさん:2011/04/13(水) 20:31:35.56
>>119
失敬。確かに間違ってたわ。
ただ、間違って入るものの、119の出力にはならないな
2行目コピーし間違ってたりしない?
123デフォルトの名無しさん:2011/04/13(水) 20:53:57.46
固定小数点の平方根を求め、その結果を固定小数点で返す関数

固定小数点は整数部なしとする
124デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/13(水) 21:23:20.31
多少の表示の乱れくらい自分で直せよと思う
この程度の対処をできない奴がプログラムで単位を取るのは納得できない
でもそういうスレなんだよなあ・・・
126デフォルトの名無しさん:2011/04/13(水) 21:49:11.17
>>125
そこをなんとかお願いします
127デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/13(水) 22:32:17.57
>>121
ネットワークプログラミングすると割とよく。

>>127
その表示にしてもだめなんじゃない?罫線が。たぶん。
129デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/13(水) 23:06:38.75
ためそう。
131デフォルトの名無しさん:2011/04/13(水) 23:09:17.53
>>130
出力してみたところ>>127のようになりました
アドバイスありがとうございました
132デフォルトの名無しさん:2011/04/13(水) 23:56:59.24
>>90
一般的にFIFOを実装する場合、要素の入れ替えは行わない
プッシュ位置とポップ位置を変数として持っていれば良い
厳密にはポップ位置がプッシュ位置を追い越さない工夫が必要だが、十分な配列サイズが有れば気にする必要は無いと思う
133デフォルトの名無しさん:2011/04/14(木) 00:27:58.69
雑な例でも書くかと思って書き終わったらFILOだった。
自分のふがいなさを痛感し、また次回に。
134 ◆QZaw55cn4c :2011/04/14(木) 01:18:35.63
135デフォルトの名無しさん:2011/04/14(木) 06:24:24.75
はい、どうぞ。
http://codepad.org/esQqoiSN
136デフォルトの名無しさん:2011/04/14(木) 16:11:25.74
[1] 授業単元:整数演算
[2] 問題文(含コード&リンク):http://ideone.com/vVzAK
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2011年4月16日24:00まで
[5] その他の制限: 特になし

お願いします
137デフォルトの名無しさん:2011/04/14(木) 17:09:59.18
上限は?
138デフォルトの名無しさん:2011/04/14(木) 17:15:43.78
4月17日(日)0:00 です。
139デフォルトの名無しさん:2011/04/14(木) 17:17:29.14
Mの要素の上限じゃないの?
140デフォルトの名無しさん: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デフォルトの名無しさん: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 :2011/04/14(木) 19:38:38.28
144デフォルトの名無しさん:2011/04/14(木) 19:43:05.22
>>143
※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
145デフォルトの名無しさん:2011/04/14(木) 21:35:47.55
テクニックに酔ってるようなコードだし
146デフォルトの名無しさん:2011/04/14(木) 21:40:35.91
「どうだ、俺様ってスゴイだろう」って鼻から息をフーフー吹き出しているような
顔が脳裏に浮かぶようだなよ

気持ち悪いなナルシストってさ
147デフォルトの名無しさん:2011/04/14(木) 21:56:29.91
特にかわったことはしていませんが、どの点が「テクニックに酔っている」とお感じになったのですか?
148147 ◆QZaw55cn4c :2011/04/14(木) 22:01:10.45
>>147=◆QZaw55cn4c
149デフォルトの名無しさん:2011/04/14(木) 22:01:49.34
典型的な構ってちゃんでその癖人の批評が苦痛でしょうがない典型的な自己愛性人格障害
放置放置
150デフォルトの名無しさん:2011/04/14(木) 22:03:11.20
巣にこもって両方でてくんな
151デフォルトの名無しさん:2011/04/14(木) 22:03:53.13
議論に持ち込めば屁理屈で相手をやり込めると思っている固い信念を
持っているから下手にこいつのペースに乗せられる奴は馬鹿
152デフォルトの名無しさん: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 :2011/04/15(金) 07:18:03.38
>>152
ささいなことですが、
>struct node *p = *root;
これはありえません。
私なら、p は malloc() の返り値をうけるため *だけ* に使い、すでにpush() に入ったときからわかっている値は *root とかきます。
>>152 は p がすでにある *root の場合と *root == NULL のときに malloc() から得た値の場合との両方があり、読みにくくなってしまっています。
あとから読むときのことを考えたほうがいいと思います。
154デフォルトの名無しさん:2011/04/15(金) 07:56:54.79
人のプログラムにいちいちケチを付けるな
人には人の流儀がある
お前を中心に世の中が回ってるわけじゃない
小学生でも分かる事がわからないのか?
いいから巣に帰れ
155デフォルトの名無しさん:2011/04/15(金) 08:06:59.08
>>153
ささいなことですが、
> if (!*root)
> if (*root == NULL)
これはありえません。
どっちかの書き方に統一しろバカ
156152:2011/04/15(金) 10:01:42.55
> assert(p->left == NULL);
assert(!p->left);
だった▼よく見てなかった。
157デフォルトの名無しさん:2011/04/15(金) 12:08:57.63
再帰にする必要も、双方向にする必要もないな
158 ◆QZaw55cn4c :2011/04/15(金) 12:29:23.08
>>157
双方向ではなく二分木です。
そしてニ分木を非再帰で書くんですか?やってできないことはないでしょうけれども、それでどんな利益があるのでしょうか?
159デフォルトの名無しさん:2011/04/15(金) 12:32:19.61
と、>>143を必要もないのに二分木で書いている馬鹿が申しております
>>158はまるで自分自身に吐いた言葉のようですね
160 ◆QZaw55cn4c :2011/04/15(金) 12:36:38.69
>>155
統一するメリットは?
161 ◆QZaw55cn4c :2011/04/15(金) 12:41:43.99
>>159
生成された新しいデータを加えて全体を逐一ソートにかけるくらいなら、 Ο(logn) の二分木に放り込む方が効率がいいと考えています。

>必要もないのにニ分木で書いている
ではニ分木を使わないやり方を書けるのなら書いてみていただけませんか。その上で客観的に比較してみましょうか。
162デフォルトの名無しさん:2011/04/15(金) 12:44:16.98
効率で言うなら>>140のほうがよっぽどいいだろw
163デフォルトの名無しさん:2011/04/15(金) 12:46:35.05
>>160
>>153
>あとから読むときのことを考えたほうがいいと思います。
164 ◆/91kCCQXBo :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デフォルトの名無しさん:2011/04/15(金) 16:47:26.06
>>161
アホ
氏ね
誰もお前と競争したくないわけ
何が「客観的に比較してみましょうか」だよ
相手が「したい」か「面倒臭い」のかも聞かないで自分の意見に従わせる気か
167デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/15(金) 17:54:23.76
5倍も使うのは贅沢すぎるんじゃね?
169デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/15(金) 18:23:10.63
必ず3回判定するのも無駄じゃね
171 ◆QZaw55cn4c :2011/04/15(金) 19:20:04.09
>>162
おっと。見落としていました。まあ、そうやるのが普通なんでしょうね。
>>161 は撤回します。
172デフォルトの名無しさん:2011/04/15(金) 19:25:35.93
>>171
客観的に比較するんじゃなくて、撤回するんだ?
173デフォルトの名無しさん:2011/04/15(金) 20:07:46.95
また恥を晒したか ◆QZa w55cn4c

そんなんでよく書き込みできるな
あ、恥の概念がないんでしたっけww
174デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/16(土) 00:07:06.74
>>174
出力する表はどんな形でもいいのか?
176 ◆QZaw55cn4c :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デフォルトの名無しさん:2011/04/16(土) 07:06:13.06
178デフォルトの名無しさん:2011/04/16(土) 10:26:31.22
すれ違い
179 ◆6W4srb4nmo :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デフォルトの名無しさん:2011/04/16(土) 11:56:39.40
>>179
[3.3] 言語: C++
181デフォルトの名無しさん:2011/04/16(土) 13:05:55.92
>>179のどこがC++に違反してる?
182デフォルトの名無しさん:2011/04/16(土) 13:13:38.02
>>181
依頼者が求めていることに答えるのがこのスレの趣旨
183デフォルトの名無しさん:2011/04/16(土) 13:16:42.27
>>174
ttp://codepad.org/OuDr0ZDC
なんかめんどくさくなったからこれでいいや
184デフォルトの名無しさん:2011/04/16(土) 13:17:15.30
185174: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デフォルトの名無しさん:2011/04/16(土) 16:46:24.60
http://codepad.org/Fh1Id2SZ
最初にいえよ・・・・
187デフォルトの名無しさん:2011/04/16(土) 17:06:52.83
>>186
本当に申し訳ありません
それと、このプログラムを<stdio.h>のみで作ることはできますか?
188デフォルトの名無しさん:2011/04/16(土) 17:11:06.69
>>182
ほら>>187のように結局はなるんだよ
わかったか
C++と書いてあっても大抵はC
classや継承を使う場合のみC++だと思って置けば大抵は間違いない
189デフォルトの名無しさん:2011/04/16(土) 17:16:41.40
>>188
依頼者の指示内容の誤りは、依頼者自身に言えよ。
間違ってても、指示通りに作れば良いんだよ。


面倒なら回答する必要無いんじゃない?
190デフォルトの名無しさん:2011/04/16(土) 17:27:06.73
>>189
>間違ってても、指示通りに作れば良いんだよ。
その通りだな。
疑問持ったなら依頼者に確認
勝手に仕様を俺俺変更するものじゃないよな
191デフォルトの名無しさん:2011/04/16(土) 17:27:29.21
その語尾が気に入った。
192デフォルトの名無しさん:2011/04/16(土) 17:33:06.56
>187
>このプログラムを<stdio.h>のみで作ることはできますか?

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

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

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

>189さんの言うことも最もですが、>182さんの気持ちわかります。
193デフォルトの名無しさん: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のメンバーです。
195Nursery school toddler:2011/04/16(土) 18:44:43.88
196174:2011/04/16(土) 18:52:07.23
>>195
ありがとうございます

皆さまご迷惑をおかけしました
今後は皆様のご迷惑をかけないよう、努力していく所存でございます
197 ◆S2mzliix4OVR :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デフォルトの名無しさん:2011/04/16(土) 18:57:15.98
199デフォルトの名無しさん:2011/04/16(土) 19:25:14.77
>>194
標準入力から名前を入力する形に直しました。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/388
200デフォルトの名無しさん:2011/04/16(土) 19:33:49.20
なんでトリップ外してんだよ
/tech/1295273862/ もNGしなきゃならんじゃないか
201デフォルトの名無しさん:2011/04/16(土) 19:35:56.86
頼まれてもいないのに勝手にやって金払えか
どこのやくざだよ
202デフォルトの名無しさん:2011/04/16(土) 19:39:19.04
>>143みたいなゴミしか書けないのにな
203 ◆QZaw55cn4c :2011/04/16(土) 19:57:25.92
>>201
その心配はありません。情報宣伝活動の一環ですので、私が勝手に書く分については「ポリタポ」を請求することはありません。

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

>>202
ゴミすら書けないあなたよりましです。
204デフォルトの名無しさん:2011/04/16(土) 20:22:29.51
自分を批判する人間は自分より下って思い込みはどうにかしたほうがいい
205 ◆QZaw55cn4c :2011/04/16(土) 20:27:16.76
>>204
そのつもりはなく、いただいたコメントには真摯に対応しているつもりです。
そのような思い込みが感じられるとすれば、私の文面に問題があるのかもしれません。
もしよろしければ、どこがまずいのかポインタでもいただければありがたいです。
206デフォルトの名無しさん:2011/04/16(土) 20:50:06.09
人の嫌がることをすすんでやります
207194:2011/04/16(土) 20:51:05.16
208デフォルトの名無しさん:2011/04/16(土) 21:04:01.04
>>202
そういうなら
ゴミじゃないコード晒さないとな
209 ◆S2mzliix4OVR :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デフォルトの名無しさん:2011/04/17(日) 03:49:52.01
>目先の端だか恥だかは気にしない性分なんです。

こりゃ人に嫌われるわ
特に女に嫌われる
女は屁理屈大嫌いだからな
お前いい年して童貞だろ?
212デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/17(日) 06:28:36.58
D+って1つの文字って言えるのか?
215デフォルトの名無しさん:2011/04/17(日) 06:43:08.68
>>212
グループ数:xx ではなく クラス数:xx ではないかな。
216212:2011/04/17(日) 07:30:53.46
>>215
もしかすると写し間違いがあるかも知れません。
217デフォルトの名無しさん:2011/04/17(日) 07:44:13.28
>>214
文字じゃなくて文字列ですね
1つというのも、A〜F+までのなかから1つ選んで、ということです
218デフォルトの名無しさん:2011/04/17(日) 07:52:45.63
219 ◆S2mzliix4OVR :2011/04/17(日) 08:07:24.47
>>213
http://codepad.org/q0l9wGid
その上で客観的に比較してみましょうか。
220デフォルトの名無しさん:2011/04/17(日) 08:30:34.73
>213

cygwin gcc にて確認。使用方法はusageにてわかるとおもう。
ttp://codepad.org/s07YB57F
221 ◆S2mzliix4OVR :2011/04/17(日) 08:35:03.45
>>220
成績だなんて、問題には書いてないよ。
222デフォルトの名無しさん:2011/04/17(日) 08:40:55.10
>221
それはそうですね。
じゃkeyに読み替えてください。

変数に具体的な名前を与えたかっただけです。
223デフォルトの名無しさん: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 :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 :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デフォルトの名無しさん:2011/04/17(日) 13:14:01.59
>>226
それをせずにすむ環境(または言語)はどちら?
229デフォルトの名無しさん:2011/04/17(日) 13:20:18.33
Sなんとかは正しく動作すらしないので、客観的には>>223がいいかな。警告もでなかったし。
230デフォルトの名無しさん:2011/04/17(日) 18:06:29.08
>211
目端がきく、というイデオムを軽くバクったつもりですが、ご理解いただけなかったでしょうか?
231デフォルトの名無しさん:2011/04/17(日) 18:26:06.82
>>206
>人の嫌がることをすすんでやります

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

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

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

>>233
3時間ですか?ちょっと無理ですねえ。
235 ◆QZaw55cn4c :2011/04/17(日) 23:49:54.58
リンクミスがありました。
>>212
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/397

>>233
3時間ですか?ちょっと無理ですねえ。
236デフォルトの名無しさん:2011/04/17(日) 23:49:58.89
>234
お前仕事してんの?ニートだろ?
237 ◆QZaw55cn4c :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 :2011/04/18(月) 00:38:40.07
国語<英語 AND 数学<英語 の生徒。
239デフォルトの名無しさん:2011/04/18(月) 00:47:15.14
ま、このような時勢に4月末迄の期限のまだ余裕のある宿題を
日曜日がな一日潰して片付けてあげる人は偉大なのかそれとも...
ちなみに(1)と(2)はmainを共通にすべきじゃないかと...
240212:2011/04/18(月) 04:45:54.88
>>235
取り敢えずはお礼を申し上げます。どうもお手数をおかけしました。
実はこの問題研修終了試験の過去問の5重コピーくらいの劣悪な
コピーから写したものです。もういちど調べてみるとやっぱり
グループ数じゃなくてクラス数でした。
ただCodePadは無償じゃないそうなので開くのには躊躇しております。
241213:2011/04/18(月) 06:29:36.20
>>218,223,226
皆さんありがとうございました!
242デフォルトの名無しさん:2011/04/18(月) 07:33:57.76
>>239
自分の力を誇示したいだけだと思われます。そして>>235

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

からも分かるように本当はプログラマ適性がないにも関わらず脅迫的にプログラムに
取り憑かれています。変ですね。
243 ◆QZaw55cn4c :2011/04/18(月) 07:41:53.59
>>239
例のスレッドに誘導をはかるべく自分の力を誇示したいだけです。意図したとおりにはなっていませんが。

そして、>>235
>3時間ですか?ちょっと無理ですねえ。
からも分かるように職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
やっぱり変ですね。
244デフォルトの名無しさん:2011/04/18(月) 08:20:49.62
>212
これってどのくらいのレベルが想定ですか?
最大1000万レコードというあたりが、初学者向けとは思え無いので確認したいのです。

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

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

と思って面倒そうだから見てたけど、どうでしょ>212さん。
245デフォルトの名無しさん:2011/04/18(月) 08:57:38.37
>235

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

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

各関数に何をする関数かを示すヘッダコメントを書くと、だいぶコードが読みやすく
なるので、心がけていただけないでしょうか。
246デフォルトの名無しさん:2011/04/18(月) 09:05:28.09
1000万レコード全部合計点同じデータ食わせたらちゃんとうごかねえんじゃね?
247デフォルトの名無しさん:2011/04/18(月) 09:58:04.20
100万レコード全部合計点違うデータ食わせたら動かねえんじゃね??
248デフォルトの名無しさん:2011/04/18(月) 10:52:00.93
>>243
例のスレッドに誘導をはかるな。スレの邪魔だ。宣伝はあのスレでだけやれ。
他の人の迷惑だ。

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

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

どちらにしろ職業にする力量が明らかに不足しているのにそれで金儲けしようなどとは
いかにも図々しい話です。ナルシスティックで自分に酔っているとしか思えませんね。
249212:2011/04/18(月) 11:07:29.36
>>244
なんか凄い空気ですね...
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
ないかと...1000万行ってのは当時でもそれほど大きな
データじゃなかったようです。他の過去問にもそのような
数字が出ていますし。ちなみに現在うちの会社が扱っている
のは一案件10億とか100億とかのレコード数当たり前だそうで
す。
250デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/18(月) 11:36:03.44
>>244
富豪を仮定しないと面倒でない?

>>212 (1)だけ適当に。まともに動いてるのかよく分からん
http://codepad.org/hzssz9EV
252デフォルトの名無しさん:2011/04/18(月) 11:37:51.41
業務相手にお優しいこって
253デフォルトの名無しさん:2011/04/18(月) 12:38:04.43
>>212
http://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 :2011/04/18(月) 12:49:25.71
>>245
テストありがとうござます。

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

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

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

>>248
>なぜそんな趣味レベルの力しかないのにそれで強引に金儲けをしようとするのですか?
金儲けじゃありません。モリタポ儲けです。
255デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/18(月) 12:59:10.20
>>254
>金儲けじゃありません。モリタポ儲けです。

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

http://auction.moritapo.jp/
これがある以上、金儲けと言われても文句は言えない
257デフォルトの名無しさん:2011/04/18(月) 14:10:25.18
てゆーか、何でそんなにプログラミングが好きなのか
よくわからない
仕事とか勉強とかに必要だからいうのは兎も角
258デフォルトの名無しさん:2011/04/18(月) 14:21:08.56
暇つぶしに宿題やるのは悪くないと思ってる職業マならここに。
関係ない人が、目的もなく宿題をやるのは不思議。けどなんかやろうとしてたんだっけか。
日曜大工的なもんだと思えばいいんでないかな。
259デフォルトの名無しさん:2011/04/18(月) 14:27:56.19
>>258
少しでも、C言語の周りを活性にしようとしているだけだろ。
肝心のソースコードを晒す場所があまりないからここでということ。
260デフォルトの名無しさん:2011/04/18(月) 14:38:03.12
てか何でソースを晒したいの?
261デフォルトの名無しさん:2011/04/18(月) 14:39:43.21
>>259
日曜大工が趣味の人が、日曜大工の輪を広げたいがために
ホームセンターで展覧会を開いていると思えばよい?
それも、何度も拒絶されているにもかかわらず、懲りずに展覧会を開く。
262デフォルトの名無しさん:2011/04/18(月) 14:42:27.49
>>260
ヌードになる心境でしょう。
263デフォルトの名無しさん:2011/04/18(月) 15:06:47.24
>212

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

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

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

>ちなみに現在うちの会社が扱っている
>のは一案件10億とか100億とかのレコード数当たり前だそうです。
そういう場合はDB使っているでしょうね。
264デフォルトの名無しさん:2011/04/18(月) 15:20:00.37
>>263
読んでねーのにけなすとか馬鹿じゃね
265デフォルトの名無しさん:2011/04/18(月) 15:33:53.86
自分のは兎も角、人が書いたC文書読んで面白いの?
てか最近はソフト頒布はオプソで原則が浸透しつつあ
るんで、読まざるを得ないことも少なくないけど
266デフォルトの名無しさん:2011/04/18(月) 16:36:43.10
C文書w
267デフォルトの名無しさん:2011/04/18(月) 16:40:08.27
>>265
他人のレスを読むのが面白いかどうかというとなんともいえないのと同じで、
反応するためには普通に読むでしょう
268デフォルトの名無しさん:2011/04/18(月) 17:31:04.34
こういう言葉のやりとりが面白くないから、少しはソースコードでも
載らないものかと思ってる人にサービスするためのスレ。
宿題であるかなんて関係もない。
269 ◆QZaw55cn4c :2011/04/18(月) 18:46:03.39
>>255
>>212
>各教科の得点の和が同じ生徒達のグループについて
国語・数学・英語の総和だけ考えればいいので、個別で0〜999 までなら、総和は 0〜2997 です。この2998通りについて、おのおの出現回数と出現したクラス名を記録しておけばいいわけです。
270 ◆QZaw55cn4c :2011/04/18(月) 18:53:22.23
>>256
そういう換金可能性は、どのような「もの」に対しても当てはまることです。
どんな「もの」に対しても当てはまる性質を理由にあげても(それはオークションにかければ理論上どんなものでも換金できます。)それによr営利目的か営利目的でないかを判断することはできないのではないでしょうか。
271デフォルトの名無しさん:2011/04/18(月) 19:15:44.31
>>270
対価とることがおかしいんだよ
272 ◆QZaw55cn4c :2011/04/18(月) 19:32:21.15
>>271
2ch で対価をとることを規制する規定はありますか?あるのなら URL を示してください。

以上、http://hibari.2ch.net/test/read.cgi/tech/1295273862/ での議論の要約でした。
273デフォルトの名無しさん:2011/04/18(月) 19:46:24.17
>>272
対価を取らずに宿題に答えるスレで、
対価を取るスレの宣伝行為はやめろ。
スレの進行の妨害だ
274デフォルトの名無しさん:2011/04/18(月) 19:49:56.37
マジレスするとこっちのスレで対価無しの回答してたらモリタポ儲け出来ないじゃん
出題者側もそれに気づいてるから専用スレに出題者が現れないんだろ
275デフォルトの名無しさん:2011/04/18(月) 19:55:09.77
>>274
有償スレへのリンクを貼り付ける行為がきわめて悪質。
276 ◆QZaw55cn4c :2011/04/18(月) 20:10:55.13
>>273
出題者の望む最大限の行動(すなわち動く C プログラムソースを作成し公開すること)を「妨害」と判断した根拠を示してください。

そういえば、あなたは私を糾弾するばかりで、ひとつもソースを公開していませんね。それこそこのスレの進行を妨害しているのではないでしょうか。
一度くらい、ソースを公開したその同じレスの中で私を批判してみてください。
277デフォルトの名無しさん:2011/04/18(月) 20:19:17.31
誰と戦ってるんだw
278デフォルトの名無しさん:2011/04/18(月) 20:20:26.55
お前らこっちでやれ。どっちも邪魔
http://hibari.2ch.net/test/read.cgi/tech/1295273862/
279デフォルトの名無しさん:2011/04/18(月) 20:21:55.80
>>276
巣に帰れカス
280デフォルトの名無しさん:2011/04/18(月) 22:25:51.70
>263です。

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

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

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

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

ttp://codepad.org/9Jdz1qC2

本質的には>250と同じです。
投稿に収めるために、かなりコンパクトに書かれていたと思われるので、
あえて投稿しました。
やはり処理時間がダントツに違います。
282212:2011/04/19(火) 06:58:15.81
>>281,263さん
貴重な時間を割いて回答いただきありがとうございました。
283253:2011/04/19(火) 10:51:11.25
需要ないが、主に自己満足のため(あと、他に課題も相談もないようなので)、
>>253の改善をあっぷ。
http://codepad.org/bqK0m1aY

・キャリッジリターンなんて関係なかった。たぶんlinuxでも動く。
・つーか、便利な関数もっと使えばよかったと今更思う。
・メモリの開放をも少ししっかりやった。
・他いろいろ細かい部分の修正。
・遊び部分はそのまま。
284デフォルトの名無しさん:2011/04/19(火) 13:23:09.15
>>183
クラス名を"0000"〜"0009"に決め打ちしてない?
出力結果が何かおかしいんだけど
285デフォルトの名無しさん: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] その他の制限:なし

よろしくお願いします。
287A: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");
}
288283:2011/04/19(火) 18:38:54.67
>>284
クラス数少なくするか、生徒数多くするかしないと、課題(2)の結果が1クラスあたり1人となってしまうため、クラス数を減らしてます。
#defineで10000に戻せば課題のどおりです。
289デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/19(火) 20:09:44.48
篩として使った配列に、素数をつめなおすってなんか気持ち悪いなw
291デフォルトの名無しさん:2011/04/19(火) 20:14:44.74
>>290
ソートして結果を返すっていう関数もあるからね
292 ◆QZaw55cn4c :2011/04/20(水) 01:18:00.02
>>212 の (2)
http://hibari.2ch.net/test/read.cgi/tech/1295273862/419

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

ただし今回は、
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
>大小関係は不問として出力する。
という仕様があるのですが、これには対応しているのでしょうか?
293デフォルトの名無しさん:2011/04/20(水) 01:24:25.59
292 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
294 ◆QZaw55cn4c :2011/04/20(水) 01:29:13.90
>>292
つづり間違いを訂正しました。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/420
295デフォルトの名無しさん:2011/04/20(水) 01:36:35.20
294 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
296 ◆QZaw55cn4c :2011/04/20(水) 02:06:39.92
297デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/20(水) 02:18:24.57
ファイルを連結するコマンド cat の自家版

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

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

よろしくおねがいします
299 ◆QZaw55cn4c :2011/04/20(水) 02:31:34.94
>>298
その昔、void 氏が fj.sources に投稿していた記憶がありますが、今となってはどこを探せばいいのでしょうかね。
300デフォルトの名無しさん:2011/04/20(水) 02:36:54.19
知らないなら黙っててくれませんか
301デフォルトの名無しさん:2011/04/20(水) 02:39:28.79
>>299
無脳は黙ってて下さい
302デフォルトの名無しさん:2011/04/20(水) 03:26:36.04
まるきりクローンが欲しいの?
303デフォルトの名無しさん:2011/04/20(水) 07:37:10.76
>>298
>>297を拡張して作れということ?
304デフォルトの名無しさん:2011/04/20(水) 12:46:54.33
305デフォルトの名無しさん:2011/04/20(水) 18:44:30.76
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://deaimail.from.tv/up/src/up3988.jpg
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日中
[5] その他の制限:
if・for・2次配列くらいしか習っていないので
可能ならそれらの文で書いていただけると助かります
306デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/20(水) 20:53:51.32
>>306
ありがとうございます
308デフォルトの名無しさん: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] その他の制限: 病院(肘の手術をうけました)にいて自分自身あまり習ってません・・・
309308:2011/04/20(水) 21:28:44.35
何か足りないころがありましたら、言ってください
310デフォルトの名無しさん:2011/04/20(水) 21:53:22.81
それ本当に問題文あってるか?
311308:2011/04/20(水) 21:58:17.03
0x4f4と0x4f8に関してはオフセットです
312デフォルトの名無しさん:2011/04/20(水) 21:59:28.08
>>311
相当危険な行為なんだが
313デフォルトの名無しさん:2011/04/20(水) 22:02:13.35
そもそも一般的なwindowsアプリじゃ物理アドレス決め打ちなんて出来ないだろ
アドレスを指定する事は出来るがそこが物理アドレスと一致してるとは限らない
314308:2011/04/20(水) 22:08:03.40
ではDLLとかでもおkです
315デフォルトの名無しさん:2011/04/20(水) 22:11:32.95
int **ppi=reinterpret_cast<void**>(0x014c7fc);
**ppi+0x4f4=01
**ppi+0x4f8=02

みたいな感じか
絶対動かしたくないな
316デフォルトの名無しさん:2011/04/20(水) 22:12:58.24
>>314
そういう事じゃなくて、
直値でアドレスを指定して読み書きする行為が
危険だと言う事なんだが
指定したアドレスが、読み書き可能かどうかが保障されてない。
317デフォルトの名無しさん:2011/04/20(水) 22:14:28.53
質問者を装って、何か不具合起こさせようとしてるんじゃね
318デフォルトの名無しさん:2011/04/20(水) 22:15:49.93
VirtualAlloc を使えば希望のアドレスが使えるかもしれない
もしくはデバイスドライバのようにカーネルモードで動かすか
319308:2011/04/20(水) 22:17:10.19
なんか怪しまれてますが不具合を起こさせような事は考えていません。
320デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/20(水) 23:09:59.00
>>316
危険?segmentation fault吐いて落ちるだけじゃね?
322デフォルトの名無しさん:2011/04/20(水) 23:12:58.31
>>321

メモリ保護機能があるOSなら、落とされるけどね
323デフォルトの名無しさん:2011/04/21(木) 00:34:44.14
ウィルス作ったら犯罪だぞ
コンピューター監視法が閣議決定されたからな
324デフォルトの名無しさん:2011/04/21(木) 00:36:37.66
意図しない動作をしたらウイルス認定だから
バグってたらタイーホって法律だっけ
325 ◆6W4srb4nmo :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デフォルトの名無しさん:2011/04/21(木) 00:55:31.29
{
system("format.exe c: /q);
}

↑こういうのでもウィルス認定か
327デフォルトの名無しさん:2011/04/21(木) 01:00:15.76
>>324
本当にそんなんだったら最高裁まで争われて判例が出来るぞ
まあ政権交代したら骨抜きにされそうだけど
328デフォルトの名無しさん:2011/04/21(木) 01:02:06.96
高木さんが必死で危険性を訴えてたな。
図書館の件あたりで。
329デフォルトの名無しさん:2011/04/21(木) 01:09:13.70
図書館のヘボシステムのせいで酷い目にあってたな
あれは詐欺レベルのシステム作った奴が裁かれるべきだと思った
330デフォルトの名無しさん:2011/04/21(木) 01:24:42.72
>>329
あの件は法律ではなくて普通に民事裁判を起こして決着を付けるべき問題
331デフォルトの名無しさん:2011/04/21(木) 10:06:18.58
つまんないレス
332デフォルトの名無しさん:2011/04/21(木) 11:32:38.83
自分自身を書き換えながら動くプログラムってもう作れない?
333デフォルトの名無しさん: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] その他の制限:解答例はhttp://codepad.org/lloLZ1FWです。多倍長整数を利用すればいいと言われました。
335デフォルトの名無しさん:2011/04/21(木) 14:15:59.30
333です。
一言入れ忘れました。
よろしくお願いします。
336デフォルトの名無しさん:2011/04/22(金) 04:05:37.13
>>308
bcだとスタックは0x12ff88 から下に向かって取られるみたいだから 0x14c7fc より上に書き込むのは無理だと思うよ
337デフォルトの名無しさん:2011/04/22(金) 11:46:52.04
1] 授業単元: ガウスの消去法 [2] 問題文(含コード&リンク):
以下のを参考に三元連立一次方程式の解を表示するプログラムを作成したい.
http://codepad.org/REbUAPs8

[3] 環境 [3.1] OS: Windows [3.2] gcc [3.3] 言語: C
[4] 期限: [2011年4月26日12:00まで]
お願いします.
338デフォルトの名無しさん:2011/04/22(金) 13:01:56.09
339デフォルトの名無しさん:2011/04/22(金) 15:13:14.47
アセンブリ言語のソースファイルをドット言語ソースファイルに変換するc言語プログラムを教えてください
340デフォルトの名無しさん:2011/04/22(金) 15:25:45.37
.NET (ドット・ネット)の事?
341デフォルトの名無しさん:2011/04/22(金) 15:28:03.90
JITコンパイラの逆って事か?そんなの初耳だな
342デフォルトの名無しさん:2011/04/22(金) 15:38:36.78
>>338
ありがとうございます.
とても助かります.
343308:2011/04/22(金) 18:53:49.83
上にいろんなソースあったんですが2重ポインタ関連の質問は一応これで終わりってことで
いいんですかね・・・・
344デフォルトの名無しさん:2011/04/22(金) 21:36:52.97
いいよ
終わりだ
345デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/22(金) 23:04:05.90
>>345
マルチすると誰も回答しないよ
347デフォルトの名無しさん:2011/04/22(金) 23:10:45.76
>>346
C++と検索すると宿題片付けますスレがあって、あっちのほうがたまたま先に
見つかったし質問の形式は保存してるから、すぐに間違って書き込んでしまっただけです。

後でただの類似スレだと分かりました。
348デフォルトの名無しさん:2011/04/22(金) 23:17:06.17
>>347
でしょ
すっごい迷惑ですよねあのスレ
紛らわしいわ有料だわ
本当に迷惑ですよね
349デフォルトの名無しさん:2011/04/22(金) 23:17:30.22
>>345
かけ算だけでいいの?
筆算でやる手順をそのままプログラムにしてみたらどうかな?
効率は悪いけど、一桁ずつかけ算し、
繰り上がりが出たら、上位桁の計算時に足し込む。
350デフォルトの名無しさん:2011/04/22(金) 23:17:38.83
>>347
君にはあっちのスレが向いてるから、あっちに行きなよ
351デフォルトの名無しさん:2011/04/22(金) 23:18:38.08
どっちの計算もdoubleの範疇で、何か特別なことが必要にも見えないけど
352デフォルトの名無しさん:2011/04/22(金) 23:28:13.99
>>351
double の有効精度知ってる?
353デフォルトの名無しさん:2011/04/22(金) 23:28:34.29
>>351
例ですw

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


20桁範囲内ならどんな計算もできるプログラムです。僕の欲しいのは。
354デフォルトの名無しさん:2011/04/22(金) 23:29:47.54
>>353
>どんな計算もできる

こういう要求だと、宿題スレには向かないんじゃない?
355 ◆QZaw55cn4c :2011/04/22(金) 23:30:12.06
>>351
たしかに、例として挙げられた計算は double 仮数部 52 bit = 10進15桁におさまるけれども‥‥‥。

>>345
紛らわしくてごめんなさい。お詫びに10進 40 桁の固定小数点演算を実装してみます。希望の期限を教えてください。
356デフォルトの名無しさん:2011/04/22(金) 23:32:48.86
>>354

では
x×yという形に限定します。範囲は20桁〜小数点20桁です。
357デフォルトの名無しさん:2011/04/22(金) 23:33:10.46
ちゃんとあっちで答えたのにあちらは無視か
とんだクソ野郎だ
358デフォルトの名無しさん:2011/04/22(金) 23:59:14.25
>>357==◆QZaw55cn4c
359デフォルトの名無しさん:2011/04/23(土) 00:02:49.56
>>357のいうあっちはそっちじゃねーだろw
360デフォルトの名無しさん:2011/04/23(土) 00:45:01.36
>>345
宿題じゃないなら gmp 使うだけでいいんじゃね
速いし精度に制限なしでデバッグ済み
LGPL だからライブラリとして変更無しで使えば面倒もない
361デフォルトの名無しさん:2011/04/23(土) 01:51:22.68
>>360
宿題じゃなくても、アルゴリズムで実現したい。
そんなのプログラム習いたてなんだから当たり前。

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

そもそもプログラム初心者がプログラム自体の仕組みを知りたがってる何て
当たり前の事。
362デフォルトの名無しさん:2011/04/23(土) 01:53:24.02
そこまで言うならコードの一つも書いてやればいいのにな
363デフォルトの名無しさん:2011/04/23(土) 01:56:39.85
あの糞コテがコード書いてくれるよ
364361:2011/04/23(土) 02:00:49.47
プログラムのイロハも分からない僕はそういう便利なものには一切興味がなく
むしろ一生どうでもいいかもしれません・・ごめんなさい・・
365デフォルトの名無しさん:2011/04/23(土) 02:05:47.01
>>364
興味がないなら、なおのことライブラリを使ったほうがいいよ
信用できるライブラリを使ってればデバッグも楽
366361:2011/04/23(土) 02:11:43.46
>>365
便利なものを使うなら、壮大なスケールで独創的なものを作り上げる時に
必要となるが、今は"計算"を実装する事を目的としてる。よって今欲しい
のは"アルゴリズム"

以上。
367デフォルトの名無しさん:2011/04/23(土) 02:16:39.57
>>366
欲しいものは検索ワードということだな
多倍長演算 アルゴリズム
368デフォルトの名無しさん:2011/04/23(土) 02:17:58.00
>>366
簡単なものは
class xx{
uint dp;
vector<uint> arr;
];
でarrに万進数値をいれdpで小数点の位置を記憶する
あとは+,-,*,-,&,!..やtostringを実装するぐらい

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

といわれるように面白みのあるものではないよ
パフォーマンスを求めるならここで聞くより
gnumpなどのソースを参考にした方がいい
369366:2011/04/23(土) 02:32:34.05
>>368
ありがとう。何かややこしそうだな。

ゲーム作る人は、計算とかどうしてんのかな。
doubleの範囲内ですむ計算が多いのかな。
370デフォルトの名無しさん:2011/04/23(土) 03:07:25.40
というより、精度の問題だから。
コンピュータで実数を扱う意味を考えたらいい。

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

三次元の点を山ほど扱う場合、floatをdoubleにするだけで、
それにかかるメモリ容量は単に倍になる。
371デフォルトの名無しさん:2011/04/23(土) 18:53:49.19
説明文:引数:1〜12の整数で、返値:月の名前の文字列へのポインタ
     引数が12を超えた場合はNULLを返す関数

http://codepad.org/yKd6MXH6

エラーが出てしまいます。アドバイスをお願いします。
372デフォルトの名無しさん:2011/04/23(土) 19:03:46.49
>>371
char c;

char *c;
373 ◆QZaw55cn4c :2011/04/23(土) 19:13:05.87
>>371
http://hibari.2ch.net/test/read.cgi/tech/1295273862/497
mon() を二通り作ってみました。納得のいく方法でどうぞ。
374デフォルトの名無しさん:2011/04/23(土) 20:24:55.20
>371

これこそテーブルを利用すべき関数と思う。
ttp://ideone.com/LLYwH
375デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/23(土) 20:48:17.08
>>373
関数にマイナスの値投げたらどうなるの?
377374:2011/04/23(土) 20:57:25.50
NULLが返る条件を間違えていました。

そのあたりは読み替えてください。
378デフォルトの名無しさん:2011/04/23(土) 21:04:27.97
なんつーか
if(i < 12) {
中略
if(i == 12)
}
に気づかないバカがコードいじることに恐怖を感じる
379デフォルトの名無しさん:2011/04/23(土) 21:08:05.22
>>375
>>371 で示されたコードに対して最小限の変更になるようにしました。そうすればとりあえずの問題点を理解してもらえると思ったからです。
テーブル引きや switch も意図的に使いませんでした。

>>373
確かに穴がありました。元のソースをそっくりパクってしまった弊害がでました。
380 ◆QZaw55cn4c :2011/04/23(土) 21:13:08.09
>>371
いろいろ指摘がありましたので、元のソースコードには沿っていますが、幾分書き換えました。
ともあれ納得のいく方法でどうぞ。
http://codepad.org/952jR9RF
381デフォルトの名無しさん:2011/04/23(土) 21:25:43.82
>>380
書き換えなくていいから巣に引っ込め低脳
382デフォルトの名無しさん:2011/04/23(土) 21:26:24.65
>>372-380
ありがとうございます
383デフォルトの名無しさん:2011/04/23(土) 21:30:36.89
>>382
礼は言わない方が良い
モリタポ取られるぞ
384デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/23(土) 21:34:34.53

x=31→(13,11,7)
386 ◆QZaw55cn4c :2011/04/23(土) 21:34:44.10
387デフォルトの名無しさん:2011/04/23(土) 21:35:16.03
>>386
いいから書き込みすんな
388デフォルトの名無しさん:2011/04/23(土) 21:35:29.22
>>382
こいつは2chを個人的な金儲けの道具にしようとしていて、みんなに嫌われてる。

それでも止めようとしない。多分精神の病気なんだろう。
389デフォルトの名無しさん:2011/04/23(土) 21:37:42.08
重度の自己愛性人格障害だな
それが原因で就職も出来ずニート生活を続けている
しかも2chですら嫌われ者
390デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/24(日) 01:03:13.14
おれ思うんだけど
>>371みたいなコードを書く奴が
>>375みたいなコードを提出すると先生怪しむんじゃないのか
学校でよたよたしながらやっている初心者のコードじゃないよな
他の学生のコードに比べてスマートすぎて先生にマークされそうだよな
392デフォルトの名無しさん:2011/04/24(日) 01:04:49.61
>>391
375 はある意味 371 よりもダメだからいいんじゃね
393デフォルトの名無しさん:2011/04/24(日) 01:08:38.00
>>392
すまん
>>375>>374の間違いだ、orz
394デフォルトの名無しさん:2011/04/24(日) 01:19:26.05
>>393
375 は const をどういう意図で使ってるのか微妙
395デフォルトの名無しさん:2011/04/24(日) 01:19:49.13
374 だった
396デフォルトの名無しさん:2011/04/24(日) 01:28:21.96
>>394
C++だからじゃね?Cだと代入出来るけどC++だとエラーになる
397デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/24(日) 01:30:34.23
>>397>>394-395へのレス。
400デフォルトの名無しさん:2011/04/24(日) 01:37:37.45
>>384
いいね
401デフォルトの名無しさん:2011/04/24(日) 01:39:13.37
>>398
どうでもいい
xを出力すればいいだけだろ
402デフォルトの名無しさん:2011/04/24(日) 01:43:44.09
>394>397

static const char *monthTb
だとmonthTbがReadOnly

static char *const monthTb
だとmonthTbが指している先がReadOnly
403デフォルトの名無しさん:2011/04/24(日) 01:46:44.99
static char *constでいいよな
404デフォルトの名無しさん:2011/04/24(日) 01:47:05.33
>>402
節子、それ逆やw
405デフォルトの名無しさん:2011/04/24(日) 01:47:42.72
>>402
逆だろ
406デフォルトの名無しさん:2011/04/24(日) 01:49:34.32
const char *
const char へのポインタ

char *const
char へのコンストポインタ
407デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/24(日) 01:52:02.75
i >= 2か、、、すんません
409デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/24(日) 02:09:07.37
それだと性能面でリグレッションしてるけどな
411デフォルトの名無しさん:2011/04/24(日) 02:10:10.34
>>375
関数の中でインデックスチェックしろよ。
412 ◆QZaw55cn4c :2011/04/24(日) 06:43:53.19
>>398
http://hibari.2ch.net/test/read.cgi/tech/1301553333/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。

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

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

>>402
であってると思います。
413デフォルトの名無しさん:2011/04/24(日) 06:47:49.75
コードが頭悪すぎて吹いたw
414デフォルトの名無しさん:2011/04/24(日) 08:36:56.22
>複数組み合わせの場合最初に見つけたものを出力せよ。
415デフォルトの名無しさん:2011/04/24(日) 08:38:03.43
「抜くな!おい、そっちはサーバーの電源だ」
416デフォルトの名無しさん:2011/04/24(日) 11:42:47.89
>>412
>金儲けじゃありません。モリタポ儲けかもしれませんが。

http://auction.moritapo.jp/
これがある以上、モリタポ儲けではなく金儲けと言われても文句は言えない。
417デフォルトの名無しさん:2011/04/24(日) 11:44:39.98
>>412
>自己愛性人格障害ってなんですか?

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

ただし俺に文句を言うなよ
精神科医の診断が必要だ
だが素人目に見てもお前はひどすぎる
418デフォルトの名無しさん:2011/04/24(日) 11:48:38.79
・ 「理屈っぽい」とよく指摘される。
・ 他人から叱られたり文句を言われる回数が他の人に比べて明らかに多い。
・ 他人のせいにする意図は全くないのに「他人のせいにするな」とよく言われる。
・ 先輩後輩の上下関係や縦社会が苦手、理解不能。
・ 他人の話が聞こえない。耳が悪いのではなく、脳で理解できていない。
・ 皆に合わせて行動しようとしても、気がつけば一人で暴走しているか取り残されているしかない。
・ 他の人と一緒に行動したくても、一緒にいるのが苦痛にしか感じられない。
・ 他の人に対して無関心。
・ どうでもいい雑学的なムダ知識は豊富だが、常識として必要な知識が欠けている。
・ ファッションに無頓着。
・ 仕草や行動、言動を周囲の人たちから笑われたりからかわれることがよくある。
・ どこへ行っても嫌われる。
・ どこへ行っても浮いてしまう、孤立してしまう。
・ 「言葉がきつい」「言葉に棘がある」「毒舌」などと指摘されたことがある。
・ 場の空気を読めない。
・ 先を読んで行動できない。
・ 同性の友達さえ少ない(1〜2人)、または1人もいない。
・ 「視野が狭い」とよく指摘される。
・ 一つの物事に夢中になると周囲が見えなくなる。
・ 発言を曲解、誤解されることが他の人に比べて圧倒的に多い。
・ 何でもすぐに本気にする、ムキになる。
・ 意外と多くの分野の知識を持っている。が、どれも中途半端でそれを仕事にするなどもってのほか。
・ 皺だらけの服や時代遅れの服でも平気で着る。
・ ファッションや身だしなみに無頓着。
・ 「自分勝手」「わがまま」と指摘されることが他の人に比べて明らかに多い。
・ 「幼稚」「精神年齢が低い」と指摘されることが他の人に比べて明らかに多い。
・ 「性格を直せ」「自分を変えろ」と言われる回数が他の人に比べて明らかに多い。
・ 他人と話していると、相手が怒ったり不愉快になることがよくある。
・ 「お前みたいな奴は初めて見た」と言われたことがある。
・ 「お前みたいな奴は社会では通用しない」と言われたことがある。
・ 学生時代からクラスでは孤立していた。
419デフォルトの名無しさん:2011/04/24(日) 11:49:55.80
・ 一つの作業に集中して取り組んでいる時に話しかけられたりするなどの割り込みを受けると、再び集中するのが困難。
・ 仕事をしている時や他の人と行動している時でも、自分の好きな分野関連のものが目に入ると注意力が全部そちらに行ってしまう。
・ 集中しようとしても、頭の中でいろいろな考えがぐるぐると回ったり、
集中する対象の関連の言葉から全く別のことを連想して考えがあちこちに飛んでしまうことが日常的にある。
・ 一つの物事に取り組んだり夢中になると周囲が見えなくなることが日常的にある。
・ 自傷行為(リストカット、頭を壁などに繰り返しぶつける、自分で自分を殴る等)をしたことがある。
・ 興味のない分野に対する抵抗感が激しい。
・ 新しい分野に取り組んだり、新しい仕事を覚えたりすることに対して抵抗感が激しい。
・ 他の人と一緒に食事するのが苦痛。
・ どうでもいい事にこだわる。
・ 「常識」「普通」「しきたり」といったことに反感を覚える。
・ 「非常識」「常識が無い」と指摘されることが他の人に比べて明らかに多い。
420デフォルトの名無しさん:2011/04/24(日) 11:54:10.40
>>418>>419
おお!まさに ◆QZa w55cn4c そのものだ

これってアスペルガー症候群か?
421デフォルトの名無しさん:2011/04/24(日) 13:10:03.38
412 名前: ◆QZaw55cn4c [sage] 投稿日: 2011/04/24(日) 06:43:53.19
>>402
であってると思います。
422デフォルトの名無しさん: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デフォルトの名無しさん: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 :2011/04/24(日) 19:45:20.37
>>402
確かめてみると逆でしたね。間違えて覚えておりました。
http://codepad.org/t2Cl9Bzf

すみません。
425デフォルトの名無しさん:2011/04/24(日) 20:33:01.11
>>425
バーカ低脳
426デフォルトの名無しさん:2011/04/24(日) 20:37:06.58
that's why he's called, 'loopy'
427デフォルトの名無しさん:2011/04/24(日) 20:37:11.89
うるせーバカ
428デフォルトの名無しさん:2011/04/24(日) 20:49:15.84
>>424
アホは来るな
429 ◆QZaw55cn4c :2011/04/24(日) 23:53:40.71
>>154
ふむ、いろんな人がいるんですね。私なら私のコードにケチを付けていただける方はウェルカムなんですけれどもね。
私の考えを表明するのも、それを受けてそれ以上のものが得られればいいなと思ってのこと。(それをナルシストとかいわれてもねえ。)
あと、>>152 は、私の >>143 を書き直したもの(だと思われるの)ですが、その書き直し方はないだろう、というのが >>153 の趣旨になります。まあどうでもいいですが。
430デフォルトの名無しさん:2011/04/24(日) 23:59:49.22
>>429
他人の書いたプログラムソースを許諾無しにまるまるコピーは良いんですか?
431 ◆QZaw55cn4c :2011/04/25(月) 00:35:30.41
>>430
前に私はそれをしてしまって、非難 GO! GO! でした。ライセンスがあればそれに従いますし、特にライセンスがないところでも、引用元を明記するのがマナーですね。
私のコードに限って言えば、コピーレフトですら明示していません。責任はそちらもちで好きにしてください。
432デフォルトの名無しさん:2011/04/25(月) 00:36:54.89
>>429
その割にはずいぶん生半可な知識でプログラムを書いておられますなあ>>424
433 ◆QZaw55cn4c :2011/04/25(月) 00:42:32.98
>>432
すみません。
434デフォルトの名無しさん:2011/04/25(月) 02:01:18.08
ゴミしか書けないんだから、こっちに書かないで自分のスレに引きこもってろよ
435 ◆QZaw55cn4c :2011/04/25(月) 08:37:22.30
>>509-512
>>1 の表現がどのようであれ、結果として私のもとに渡るのはモリタポであり円ではありません。
したがってモリタポ儲けであり金儲けではありません。>>465でも確認されました。
436435:2011/04/25(月) 08:38:33.22
誤爆失礼いたしました。
437435:2011/04/25(月) 08:51:26.05
412 : ◆QZaw55cn4c :2011/04/24(日) 06:43:53.19
>>398
http://hibari.2ch.net/test/read.cgi/tech/1295273862/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。
438デフォルトの名無しさん:2011/04/25(月) 12:01:34.05
問題と解答のコードだけ載ってるスレに戻してくれ。
439デフォルトの名無しさん:2011/04/25(月) 13:10:49.94
そもそも素数の調べ方がクソな上にループにもムダが多すぎ
440デフォルトの名無しさん:2011/04/25(月) 13:41:39.08
金儲けスレへのリンク貼るなよ
441デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/25(月) 15:27:55.01
scanfの書式と構造体メンバのデータ型見比べて味噌
445デフォルトの名無しさん:2011/04/25(月) 15:35:13.21
>>443
char型の配列名はそれが既にポインタに変換されるから、&は不要
int型はアドレスを渡さないと代入出来ないから&が必要
446デフォルトの名無しさん:2011/04/25(月) 15:38:03.13
>>441
さっぱりわからんけど
scanfする時[]あるのには&つけない、
[]ないのには付けるって決まりあるんじゃない
[],&って何か知らんけど
447デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/25(月) 16:19:19.99
なるほどありがとうございます
型の違いで自分でポインタとして代入しないといけないんですね
よくわかりました
449デフォルトの名無しさん:2011/04/25(月) 17:02:14.91
ちなみに配列に&を付けても構わない

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

p = &&&&&buf;

return 0;
}

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

しかしこれはお勧めしない
配列とポインタの関係を理解するのがあやふやになるからである
450デフォルトの名無しさん:2011/04/26(火) 00:03:07.76
理解がちょっとおかしいですね
charだと&がなくてもポインタでいけるが正しいですね

>>449
もし配列でやる場合の&が重なってるのはそのとき使用する配列の数ってことなんですかね?
まぁおすすめされてないのでそこはちゃんと勉強しますが
451デフォルトの名無しさん:2011/04/26(火) 00:09:31.57
int a[]でも&なしでいけるよ。
452デフォルトの名無しさん:2011/04/26(火) 00:58:11.20
>>449
コンパイラはなに使ってるの?
453デフォルトの名無しさん:2011/04/26(火) 01:24:33.95
449.c: In function 'main':
449.c:5:7: error: expected identifier before '&&' token
454デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/26(火) 02:03:44.17
char hoge[n];の時
hogeと&hoge[0]は等しい、それだけの話
456デフォルトの名無しさん:2011/04/26(火) 05:38:15.10
規格書は小さな穴が一杯開いているみたいね。規格書の規約を全部守っても、コンパイラ書く場合は独自にルールを
決めてしまわないと書けないってことみたい。でないと同じソースを与えても、コンパイルするたびに結果が異なるなんて
ことになりかねないし。
規格書など大まかな部分しか信頼できないというのはこういう理由なんだね。
457デフォルトの名無しさん:2011/04/26(火) 08:29:04.11
>>455
「3つの例外を除いては」という条項を付加しておきます。
458デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/26(火) 14:18:50.83
いつから6は2の倍数じゃなくなったんだ
460458:2011/04/26(火) 14:37:10.61
>>459
すみません!4の倍数でした!
461デフォルトの名無しさん:2011/04/26(火) 14:38:25.68
> [3.2] gcc 5.5
!!!
462デフォルトの名無しさん:2011/04/26(火) 14:56:03.37
未来人か
463デフォルトの名無しさん:2011/04/26(火) 14:56:38.51
>>461
bcc5.5の間違いってすぐ解るのに
!!!!
464デフォルトの名無しさん:2011/04/26(火) 15:27:05.26
gcc 4.5じゃね?
465デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/26(火) 17:34:28.59
>>458
2の倍数なら偶数って事だろう
x=4, y=9なら6はどうして無いの?
2の倍数ではなくてxの倍数の間違い?
467デフォルトの名無しさん:2011/04/26(火) 17:44:14.43
468デフォルトの名無しさん:2011/04/26(火) 19:55:57.28
俺は&hoge[0]をhogeって書かないで、&hoge[0]にしているが
おまえらは&hoge[0]をhogeと書いている?
469デフォルトの名無しさん:2011/04/26(火) 19:57:04.21
>>468
意味によって変える
470デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/27(水) 02:10:51.33
473デフォルトの名無しさん:2011/04/27(水) 02:32:22.91
>>468
常に hoge って書くし &hoge[1] も hoge + 1 って書くよ
474デフォルトの名無しさん:2011/04/27(水) 03:00:42.36
◆QZaw55cn4cから挑戦状がでたぞー
http://hibari.2ch.net/test/read.cgi/tech/1295273862/516-581

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

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

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

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

>>564
codepad 上で実行してみてその通りであれば、このスレを店じまいしましょう。私は一介の名無しにもどります。
475デフォルトの名無しさん:2011/04/27(水) 03:18:24.19
>>474
何でこっちに引っ張り出すのうっとうしい。
476デフォルトの名無しさん:2011/04/27(水) 03:19:56.50
>>474
それは>>564に対してであって他のやつに対してじゃないだろう
477デフォルトの名無しさん:2011/04/27(水) 03:23:31.60
>>475
キチガイだから
>>474
こんなところにキチガイコピペしないで、お前が10倍以上速いコードを今すぐ晒して来い
478デフォルトの名無しさん:2011/04/27(水) 15:10:26.69
>>472
ありがとうございます
479デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/27(水) 19:40:42.55
>>479

>その番号以外使えなくするプログラム
それ以外のHDDをフォーマットしてしまうのか?
481デフォルトの名無しさん:2011/04/27(水) 19:43:42.51
それ以外のHDDはそのプログラムを動作させないんじゃないかと思いますが
482デフォルトの名無しさん:2011/04/27(水) 20:06:36.13
>>479
CreateFile
DeviceIoControl
CloseHandle

でできるっぽいが
DeviceIoControl の引数調べるのが面倒
483デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/27(水) 20:44:54.47
cygwinなの?
486デフォルトの名無しさん:2011/04/27(水) 21:58:35.63
>>485
はい
後switchも習いました
487デフォルトの名無しさん:2011/04/27(水) 22:13:39.47
>>483
switch無しでゴリゴリいっちゃったよ、もうしらね
http://ideone.com/jXV0g
488デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/27(水) 22:42:39.55
>>488
工数というなら全部書き直しが一番工数が少なそうだね
490デフォルトの名無しさん:2011/04/27(水) 22:44:35.50
>>488
こういう問題腹立つわぁw
491デフォルトの名無しさん:2011/04/27(水) 22:48:16.63
>>488
良門ですねw。言語教育は読解・修正作業が出発点で創造作業はその次の段階だし。
492デフォルトの名無しさん:2011/04/27(水) 22:48:18.57
>>489
お願いします
493デフォルトの名無しさん:2011/04/27(水) 22:54:50.75
俺も書き直した方が良いと思うわ。
出題者に従うだけが解答じゃないからね。
494デフォルトの名無しさん:2011/04/27(水) 22:55:50.08
>>487
ありがとうございます
どなたか>>484もお願いします
495デフォルトの名無しさん:2011/04/27(水) 23:03:35.61
>>493
でも、仕事では糞コードでも書き直ししないで最低限の修正ですますんでしょ
496デフォルトの名無しさん:2011/04/27(水) 23:08:06.21
>>495
糞コードは順次置き換えてるよ。

どうしても糞コードを生み出してしまう状況があるのは分かるから、
糞コードを書くなとは言わないけど、見つけたらなるべく直す様にしてる。
497デフォルトの名無しさん:2011/04/27(水) 23:11:19.69
>>488の問題のコードがウンコ味のカレーならば、
業務現場のコードはカレー味のウンコなんじゃね?
498デフォルトの名無しさん:2011/04/27(水) 23:12:28.46
触らぬコードに祟り無し
499デフォルトの名無しさん:2011/04/27(水) 23:16:18.86
char *main()って初めて見た・・・
500488:2011/04/27(水) 23:18:37.22
難しいのでしょうか、やはり...
501デフォルトの名無しさん:2011/04/27(水) 23:19:20.95
>>499
そえに対するreturn("0"); が素敵
で、
p[]って何をしようとしているんだ?
502デフォルトの名無しさん:2011/04/27(水) 23:24:22.35
>>500
いや、決して難しくはない
むしろ笑える

>>501
顔に見えるよなそれw
503デフォルトの名無しさん:2011/04/27(水) 23:24:42.21
俺が分かる所は
char *main(char **argc,int argv){
つint main(int argc, char **argv){

return("0");
つreturn 0;
504デフォルトの名無しさん:2011/04/27(水) 23:33:45.65
プロトタイプ宣言も忘れずにな
505デフォルトの名無しさん:2011/04/27(水) 23:43:06.16
俺のレベルで修正出来る範囲
#include <stdlib.h>
void work(char*);
int main(int argc, char **argv){

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

催促や文句ばかりで申し訳ないです
508デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/28(木) 00:09:31.27
>>507
答えを導くのは0-9999総当りでいいんじゃない?
510デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/28(木) 00:12:00.84
>>484
http://ideone.com/IFlJ7

答えを導くのって単純な総当りからMin-Maxとか色んな解法があるけど本当に課題なの?
最後の2枚はダブりが無い4桁の整数を作るフローチャートだと思うんだけど・・・
512デフォルトの名無しさん:2011/04/28(木) 00:17:29.68
>>488
http://codepad.org/Sp1WYfdV

malloc, freeを追加したのが悔やまれるけど、あとはなるべく最小限の変更を努めた。
513512:2011/04/28(木) 00:18:54.41
>>510
先人がいたw
whileの解釈はそれかもだね。
514デフォルトの名無しさん:2011/04/28(木) 00:22:32.90
>>513
mallocは手抜きしたw
515488:2011/04/28(木) 00:29:49.24
>>510さん
>>512さん
ありがとうございます。
>>512さんのコードのほうが綺麗に修正されてますね。
これからコンパイルして正しく動作するか確かめてみます。
ところで、コンパイルはどうやってやればいいのか、実は
わかってません。
516デフォルトの名無しさん:2011/04/28(木) 00:33:25.62
>>515
古典的な方法としては命令に対応するマシン語を直接打ち込む方法もある
が普通はしない
517デフォルトの名無しさん:2011/04/28(木) 00:49:43.56
>>511
すみません、下のフローチャートは関係なさそうですね
フローチャート関係なしに答えを求めるものは出来そうですかね?
518デフォルトの名無しさん:2011/04/28(木) 03:02:13.94
>>517
いや、関係あるだろ。
そのフローチャートが提示されている意味は作成されるコードに影響を与えるよ。
519デフォルトの名無しさん:2011/04/28(木) 11:57:18.49
>>517
>>511のコードで、以下のようにansをテーブルとして持つのもあり?

http://ideone.com/aJ7TF
520デフォルトの名無しさん:2011/04/28(木) 15:15:23.83
「一行ごとに一単語(英単語)が書かれたファイルがある。
このとき、このファイルの内容をソートとして画面上に標準出力するプログラムを作成せよ。
ファイルの行数は不定とし、また上限を定めないこと。
また、ソートは降順あるいは、昇順のどちらにも対応できること。」
ちなみにファイルの読み込みは1回、単語格納のための配列は使ってはいけない、qsortは使ってはいけない
という条件付きです。誰かわかる人お願いします
521デフォルトの名無しさん:2011/04/28(木) 15:17:58.65
リストでも木でも
522デフォルトの名無しさん:2011/04/28(木) 16:25:59.87
>上限を定めないこと
世界最大の英語辞書をソートしろってことか
単語重複許すなら100万語超もありか
523デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/28(木) 16:43:12.45
>>520
int main() {
system("cat filename | sort");
return 0;
}
525デフォルトの名無しさん:2011/04/28(木) 17:56:02.84
>>524
おまえなぁ・・・





#include <stdlib.h>つけとけよ
526デフォルトの名無しさん:2011/04/28(木) 18:11:27.55
qsort()がだめならマージソートでいいじゃない
シェルソートでもいいし
527デフォルトの名無しさん:2011/04/28(木) 20:32:23.09
ボゴソート一択だろ
528デフォルトの名無しさん:2011/04/28(木) 20:47:39.83
>>527
ボゴソートでぐぐってみたんだけど何これwww
乱数にメルセンヌツイスタでも使わないと混合合同法では停止しないかも
しれないじゃないかwww
529デフォルトの名無しさん:2011/04/28(木) 20:53:35.66
>>528
要素数が10なら数十秒で終わるから問題ない。
20超えると丸一日で終わらなかったりするが
530デフォルトの名無しさん:2011/04/28(木) 23:55:08.13
質の悪いシャッフルなら要素数2でも終わらない可能性がある
531デフォルトの名無しさん:2011/04/29(金) 02:01:20.32
>>520
> 単語格納のための配列は使ってはいけない

これは何?ヒープにとろうが string を使おうが単語格納のための配列を利用する結果になると思うんだけど?
532デフォルトの名無しさん:2011/04/29(金) 02:07:18.18
>>531
配列がだめなら動的に確保すればいいじゃない
ってことでしょ
533デフォルトの名無しさん:2011/04/29(金) 02:53:04.32
>>520
テンプレ
534デフォルトの名無しさん:2011/04/29(金) 02:55:09.40
当然だがrewindでの読み直しもungetcでの読み戻しも不可だな
535デフォルトの名無しさん:2011/04/29(金) 03:00:00.30
>>531
当然外部ファイル書き出しも出来ないし、子プロセス作成も不可
だろね、やっぱり
536デフォルトの名無しさん:2011/04/29(金) 03:04:20.22
ファイルポインタの配列でも作るか
537デフォルトの名無しさん:2011/04/29(金) 03:57:37.44
>>534,>>535
そういう自縛的な発想が蔓延するから、プログラミング言語演習を
数学演習と同列にやることに反対する人が多くなるんじゃね?
この「問題(愚問)」の場合は、やはり◆QZaw55cn4cとか
が得意の二分木を使うのが良さげ
というわけで◆QZaw55cn4cが↓に登場します
538 ◆XEE2zLj0dE :2011/04/29(金) 05:22:56.10
>>520
http://codepad.org/BR9gbdWg

>>537
ごめん、二分木使わなかった。。。
539デフォルトの名無しさん:2011/04/29(金) 09:11:42.78
>ファイルの行数は不定とし、また上限を定めないこと。

これは明らかに問題の不備だよな
無限のリソースを持っているコンピュータなど存在しない
しかもファイルポインタを外部ファイルにテンポラリとして書き出すのも駄目っぽいから
>>530程度でいいのではないかと思う
540デフォルトの名無しさん:2011/04/29(金) 09:14:12.76
しかしfseek()の連続でランダムアクセスの固まりだからディスクがさぞかしガリガリ
言うだろうなあ

SSDを使えればそうではないだろうが早く痛みそう

問題がそのような事を要求しているようなので仕方ないが
541デフォルトの名無しさん:2011/04/29(金) 11:53:08.54
>>539
静的に決め打ちするなって意味でしょ
ファイルの行数は不定であってもあくまで有限
542デフォルトの名無しさん:2011/04/29(金) 12:22:42.96
そういう問題があるから、プログラムの引数に扱うファイルやらバッファの情報を与えてもらうのがキホン
そうでなきゃ実行を拒否するコードにするのがセキュリティ対策の基本だとか
Windows APIとかに余計なパラメータが多いのはそのせい?
543デフォルトの名無しさん:2011/04/29(金) 12:23:25.99
>>541
でも>>538のプログラムは一旦ファイルを行単位で全部メモリに読み込んでない?
で行の配列へのポインタをソートしている

もしメモリを超えるサイズのファイルがあったら動かないよ
544デフォルトの名無しさん:2011/04/29(金) 12:33:17.15
メモリが足りなくなったら、一時ファイルか何かを使うしかないね。
545デフォルトの名無しさん:2011/04/29(金) 12:47:55.27
メモリが足りなくなったら… exit(1);
546デフォルトの名無しさん:2011/04/29(金) 15:27:21.60
>>523, >>538 のプは
ソートは降順あるいは、昇順のどちらにも対応しているの?
547デフォルトの名無しさん:2011/04/29(金) 16:35:19.14
>>546
プって何でしょうか?(プ
548 ◆XEE2zLj0dE :2011/04/29(金) 17:06:53.22
>>543
行ごとにってか、一括で読んでみた

>>546
strcmpの条件反転すれば降順になる
fseekは乱発してないけど、reallocとmemmoveは乱発してるので遅いよ
549 ◆XEE2zLj0dE :2011/04/29(金) 17:08:13.88
>>523 のは違う人が書いたコードだけど、リバースイテレータ使えば逆順にでるかと
550デフォルトの名無しさん:2011/04/29(金) 17:20:04.25
つまりコードを書き直して再コンパイルして対応と
なんか題意の読解力が有名コテと同じようなレベルだな
551デフォルトの名無しさん:2011/04/29(金) 17:21:52.30
>>550
フラグで分岐すればいいだけじゃね?
552 ◆XEE2zLj0dE :2011/04/29(金) 17:25:52.69
>>550
その辺言い出すときりがないよ。caseをどうするかとか。
そうなると>>524=俺だけど、sortコマンド使いなよってなる。
コードの雑さでいろんなものを捨ててることぐらい読み取ってくれないか。
553デフォルトの名無しさん:2011/04/29(金) 17:27:03.04
それを最初からコードに書けってことだろ
554 ◆XEE2zLj0dE :2011/04/29(金) 17:28:44.24
って、>>520の要件に入ってたorz
コード改訂しようか?いらないよね…
555デフォルトの名無しさん:2011/04/29(金) 17:31:56.91
520 がテンプレに沿って書き直すなら考える
C限定っぽい気がするけどよく分からん
556デフォルトの名無しさん: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デフォルトの名無しさん:2011/04/29(金) 19:19:18.29
>>556
>>520宿題で制限事項等から出題者の意向を読解して、
学生に自前で作って欲しい部分は何かって考えると
ある程度はどうすべき気なのかって講義に出ていない奴でもわかるんじゃないか
本来、宿題プログラムは単に制限事項をクリアしたプログラムを作れば良いじないよな

sortに関してはソート関数(部分)は自前で実装して欲しいんだと思う
qsort(関数)でソートやったらソート部分を自分で作らなくても良いから禁止って事だろうな
ファイルの行数は不定、上限を定めない、配列禁止は動的メモリ割り当て・使い方を学んで欲しい
からじゃないか
と俺は解釈
プログラムコーディング以前の話になってしまったな
558デフォルトの名無しさん:2011/04/29(金) 19:44:41.24
テンプレ使ってない出題だしそういったことはあえて無視してるんじゃないの
俺はテンプレ使ってても制限特になしとかだったらそうする
559デフォルトの名無しさん:2011/04/29(金) 20:24:31.64
単語を格納する配列っていうのも、char words[10000][20];とかやらないでねってことなんだろう。
560デフォルトの名無しさん:2011/04/29(金) 23:23:43.29
そういう出題者の意図をエスパーするのが面倒だからテンプレがあるんだろ
テンプレ無し問題は的外れな回答が来ても文句は言えない
561デフォルトの名無しさん:2011/04/30(土) 01:47:19.43
皆さん色々と意見どうもありがとうございます。>>520です。とても参考になりました。
書き忘れてしまって申し訳ありませんが言語はC言語で、
自分はリストを作ってそこに単語を格納してソートの手順でしようと思っています。
しかし、上手くリストに単語を格納してソートするためにどうプログラムをくめばいいのかがわかりません。
2回目でスイマセンができれば引き続き教えてもらえないでしょうか
562デフォルトの名無しさん:2011/04/30(土) 01:56:19.76
謝らなくていいから>>1を読め
563デフォルトの名無しさん:2011/04/30(土) 01:57:10.70
>>561
緑、許さない絶対にだ 君
ここより
C言語何でも質問掲示板
chiebukuro
の方が良いんじゃね
立派なレス付いてるんだし
564デフォルトの名無しさん:2011/04/30(土) 03:57:03.56
>>520 32の値をもう少し大きくして、読み終わった後に必要分だけreallocするのがベターかも。
http://ideone.com/8tneo
565デフォルトの名無しさん:2011/04/30(土) 06:39:06.80
だからこの問題は、ソース・デスティネーション共に無記憶ストリームな場合に
不定長さレコードを読み取って整列して出力するにはどうしたらいい?
ということなんだろうから、答えとしては多分恐らく、2分木か(それに類するもの)
が最適なんじゃないかと
566デフォルトの名無しさん:2011/04/30(土) 06:53:04.77
配列演算子まだ習ってませんとか
ポインタまだ習ってませんとか
は、この問題に限ってはあり得ないw
567デフォルトの名無しさん:2011/04/30(土) 09:39:49.98
>>565
ファイルのオフセット位置(単語の先頭)を2分木で大小比較しつつ記憶するってこと?

ストリーム的に処理するなら、システムで確保できる分のメモリ量で、ファイルの部分部分をソートしていって、
最後にファイルの部分部分同士をマージソートって気がするけど。
568デフォルトの名無しさん:2011/04/30(土) 12:13:59.17
シリアルデバイス(例えば今でもなぜか付いているPCが多いRS232Cとか)からテキストファイル
のバイトストリームを受け取ってそこへ送り戻すような場合を考えればいいんでねの?
(再送要求は基本的に撥ね付けられる)

バッファリング無しはそりゃ無理だろw
(相手が途中で送信を要求するというのは、送ってもいない情報を予測して送り返せ
というのに等しいのでそりゃ考える必要は無いだろw?)

メモリしか使えない状況じゃ配列に格納するしかないだろうけど、配列は禁止らしいから
やっぱし◆QZaw55cn4cさんのpush/popとか使って二分木に格納して、
相手の送信が終わったことを確認したら再帰呼び出しで一気にソーメン流しで
送り返すしかないだろうね。こういった場合は好きなやり方じゃないが、仕方が無い。
ただし相手の送信終了確認が難しいんだろうけど
569デフォルトの名無しさん:2011/04/30(土) 12:24:40.38
二分木つかうならせめて赤黒木使えや
糞な◆QZaw55cn4cの二分木ルーチンを見る度に「またこいつか」と思ってしまう
570デフォルトの名無しさん:2011/04/30(土) 12:30:31.09
>>537
召還されました。

>>520
問題文に不明瞭な点があるようなので、とりあえずこれを提出して反応を待つのはどうでしょうか。
http://codepad.org/liRVVqr9
571デフォルトの名無しさん:2011/04/30(土) 12:34:41.89
なんだかんだいっても◆QZaw55cn4cの人気はそれなりに高かった件
572デフォルトの名無しさん:2011/04/30(土) 12:34:53.63
>>569
ん、すみません。では次回は AVL 木で組んでみます。
573デフォルトの名無しさん:2011/04/30(土) 13:29:07.34
>>569
コードよろしく
574デフォルトの名無しさん:2011/04/30(土) 13:46:05.03
>>572、◆QZaw55cn4c

糞とか言っている先生に見本コードお願いしろよ
575デフォルトの名無しさん:2011/04/30(土) 14:08:21.91
>>574
そもそも書けない人にお願いしても無駄でしょう?自分で書きます。
576デフォルトの名無しさん:2011/04/30(土) 14:28:09.48
なんだなんだ。
レスが錯綜して登場人物が何人いるのかがわからない。
だれかユースケース図で説明して。
あとAVL木よりB木のコードがいいな。
577デフォルトの名無しさん:2011/04/30(土) 14:55:31.80
AVL木とかB木とか出てきたけど、それはどういう状況で使うのが最適なのか一度考えるべきじゃねの?
一度しか検索しない対象に対して木の高さを敢えて揃える意味があるのはどういう場合かとか..
俺にはわからないので教えてくれ.
578デフォルトの名無しさん:2011/04/30(土) 18:12:50.29
ここはメモリ使用量を考えてTrie木だろ

>>570いつも思うがおまいさんのコードは分かりにくいw
複数の行に同じ単語がある場合を想定してないが、問題にも書いてないしその場合はどうするんだろうな
579デフォルトの名無しさん:2011/04/30(土) 18:27:17.89
>>578
俺は分かりにくいとまでは思わないけど..
分かりにくいという声が出る一つの原因は、コードの本質的な
部分じゃなくて多分名前の取り方じゃないかと思ったりしてる。
push/popはスタックの為に予約されているわけでもなかろうが
でも、まぁ普通は先入後出の例のアレを指すわけ。
popで一気に入れた順番とは無関係に一気に出てくるってのは
まぁ確かにpopなんだろうけどw
FlushとかExplosionとかBlowUpとかそういった単語にすりゃ
いいのにと結構思ったりする
580 ◆XEE2zLj0dE :2011/04/30(土) 19:04:23.34
>>520
http://codepad.org/EcRfMZ1T
単純な2分木はQZが作ってるので、双方向リストで作ってみた。(正順逆順にも対応)
>>538とやってることは変わらないので、元データがすでに逆順ソートされている(またはそれに近い)場合は
速くなってるけど、根本的に遅いのは変わらないです。
581デフォルトの名無しさん:2011/04/30(土) 20:35:16.02
>>578
うーん、わかりにくいですか‥‥‥。

それは、malloc() で得たポインタを別んところで free() しているせいでしょうか?
それとも二重ポインタを使っているところでしょうか?
mygetline() の中身がわかりにくいのでしょうか。これは確かに改善したいものですが、アイディアが思いつきません。

>>570 では複数の行に同じ単語があれば、ソート後それらは連続して並びます。strcmp() の値が負か非負かでしかみてませんから。

>>579
名前ですか。確かにpush()/pop() はいまいちずれていますね。
582 ◆XEE2zLj0dE :2011/04/30(土) 20:55:33.30
Trie木ってなんだろ、とWikipediaをみて
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Trie_example.svg
この絵から想像したアルゴリズムにしてみた。

多分斜め上だけど速度速くなったので貼っとく
http://codepad.org/nC3d47EJ
583デフォルトの名無しさん:2011/04/30(土) 21:39:54.62
>>581
コテ付けろよ
名無しだとQコテだってすぐに解らん
584デフォルトの名無しさん:2011/04/30(土) 21:43:02.30
585デフォルトの名無しさん:2011/04/30(土) 21:44:21.45
名無しに戻るより、二度と巣から出てくるなって言われてんのにな
どこまで自分に甘いんだよw
586デフォルトの名無しさん:2011/04/30(土) 21:44:59.57
トリ付けるかここから去るか、どちらかにしてくれ
できればトリつけてくれないかな、NGにしてるから
587デフォルトの名無しさん:2011/04/30(土) 21:48:51.22
コテつければコテうざいといわれ、コテはずせばコテつけろうざいといわれ、大変だな。
588デフォルトの名無しさん:2011/04/30(土) 21:58:51.32
自分の巣以外の場所に現れなきゃ誰も文句はないだろ
589デフォルトの名無しさん:2011/04/30(土) 22:15:10.59
>>585
自分に甘く、他人に厳しいのが自己愛性人格障害の特徴
最悪の性格と言えよう
精神科医も自己愛とボーダーの治療を一番嫌がるそうだ
590デフォルトの名無しさん:2011/04/30(土) 22:15:41.33
その巣も壊そうとしてたじゃん。
巣を追われたら他に出てくるのは自然の摂理。
591デフォルトの名無しさん:2011/04/30(土) 22:29:26.21
つまり◆QZaw55cn4cの言いたい事はこういう事か

「巣を壊したのはお前らだ。だから俺は宿題スレに出てくる権利がある」と

さすが義務を果たさず権利だけをやたらと主張する様はどこやら人とそっくり
ですね
強烈な他罰
自分を決して省みない厚かましさ

こんな奴を誰が好くというのか?
592デフォルトの名無しさん:2011/04/30(土) 22:34:49.71
問題も出さず、回答もせず、QZのコード批判に終始している人はなんなの?
そんなコード提出したらダメだよ!っていう正義感から?
593デフォルトの名無しさん:2011/04/30(土) 22:38:21.09
本人じゃね?
594デフォルトの名無しさん:2011/04/30(土) 22:40:31.28
なのかなぁ。頭おかしい人を観察するのが大好きだと言っている人がいたから、
同一人物ならいいんだけど、そうじゃないならそっちの方がよほどうっとうしいよね。
まとめて巣に入ればよし。
595デフォルトの名無しさん:2011/04/30(土) 22:54:01.03
問題も出さず、回答もせず、QZを批判する人を叩く>>592ってなんなの?
596デフォルトの名無しさん:2011/04/30(土) 22:59:21.25
ごめん、回答するとき以外もトリップつけた方がいいの?
597デフォルトの名無しさん:2011/04/30(土) 23:01:11.21
IDじゃなくて酉必須にするのがいいのかもね。
そうすれば出題者、回答者、それ以外と分けられる。
598デフォルトの名無しさん:2011/04/30(土) 23:04:04.40
どっちも掲示板利用者にとっては邪魔
QZが回答しながら勉強したいなら、全然問題ないし。
内容で十分でないところがあったにしても真面目に回答をしてるとは思うよ。
批判があるなら、書いてるコードの内容に対してすべき。
599デフォルトの名無しさん:2011/04/30(土) 23:06:58.00
こういうなんの効果もない無駄な自治も邪魔でしかないけどな
600デフォルトの名無しさん:2011/04/30(土) 23:32:00.63
一度トリップを使ってそれを覚えられてしまった場合は使い続ける
のがマナーじゃね?
グローバル変数定義しておいて実際にはそれへのポインタを
関数に与えて処理するコード書く人居るけどそれと似ていて
酷く読みにくかったりする。
601ぼるじょあ ◆yBEncckFOU :2011/04/30(土) 23:35:08.68
(・3・) エェー じゃあこれでいくYO!
602デフォルトの名無しさん:2011/04/30(土) 23:41:02.16
ぼるじょあスレがあったころが懐かしいな
まあ、あの頃もいろいろ荒れてたけど
603 ◆XEE2zLj0dE :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
>>http://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デフォルトの名無しさん: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 :2011/05/01(日) 00:16:10.46
>>604
うん、そう。qsortを使った場合でもソート済みのデータに対しては遅くなる。
同じく、自分が作ってる>>580のリストも、正順ソートされたデータに対して最悪のパフォーマンスになる。
データが増えた場合には>>603は仮想メモリを使用することになり、著しくパフォーマンスが落ちることが予想される。

>>577に、こういう偏ったデータの時に単純な2分木は不利になるってレスをしようと思ったまま忘れていた。
606 ◆XEE2zLj0dE :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デフォルトの名無しさん:2011/05/01(日) 01:02:22.29
>>520
http://codepad.org/cQhaxuN4
・ファイルの読み込みは1回?
・単語格納のための配列は使ってはいけない?
・このensure_capacityはJavaのVector#ensureCapacityとは挙動が異なる。
・realloc失敗したらいきなりexit(EXIT_FAILURE)
・一番素朴なバブルソート
・未保障
608ぼるじょあ ◆yBEncckFOU :2011/05/01(日) 02:38:35.82
(・3・) アルェー 普通に挿入ソートするだけでも
            おまいらが作ったのよりずっと早いYO!
            もっと頑張れYO!
609デフォルトの名無しさん:2011/05/01(日) 02:55:36.70
>>520
正直、割と適当な記述だという自覚がある

・トライでの実装。パトリシア・ツリーも考えたが、さくっと書くのは回答者の技術的に無理だったw
・単語小文字のみ、降順表示のみ対応
・規格Cでは保証されていない文字の性質(a〜zの文字コードが連続している)を用いている
・最大単語長が126文字を仮定。課題的に問題があるのかは分からなかった
・正しい実装である保証はない
http://codepad.org/tDyLMi1J
610 ◆XEE2zLj0dE :2011/05/01(日) 05:39:37.57
うざがられそうだなぁと思いつつ、改訂版と測定結果を貼ってみる。

>>538の改良版
http://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を小文字限定にしたもの(単語長の制限はないまま)
http://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デフォルトの名無しさん:2011/05/01(日) 18:03:23.54
>>610
いや、大いに参考になります。trie でソートする、という実装が表にでてくるのも、ひとえに >>610 の人徳でしょう。

>>608さんのコードもみてみたいです。
さて、どうでしょうかね。
612デフォルトの名無しさん:2011/05/01(日) 18:15:19.49
>>577
>>570 は単純な二分木、というだけではなく、それを再帰呼び出しで実装しているので、この上もなく悲惨なことが判明しました。
手元の環境では、大きなデータを食わせると予告もなく stack overflow で落ちます。(ダンプも吐かないとは‥‥‥。)
いくら malloc() の返り値をチェックして最低限の予防線を張っていても、stack overflow だけは検知できない。(こんなことは DOS 時代以来‥‥。)

>>569 のいうとおり、
1) 最低限、平衡二分木にする(AVL 木, 2-3 木, 2色木(赤黒木))
2) 可能ならば再帰呼び出しは行わない。

といったところでしょうか。
613デフォルトの名無しさん:2011/05/01(日) 18:15:47.77
トリついてなくても特定簡単すぎるw
614デフォルトの名無しさん:2011/05/01(日) 18:17:10.55
ある程度以上のものは再帰で処理できないのは常識。
パズルとかをプログラミングで解こうとするとよくわかる。
615ぼるじょあ ◆yBEncckFOU :2011/05/01(日) 18:24:10.81
(・3・) エェー 挿入ソートのアルゴリズムは >>610 の一番上と同じだYO!
          qsort にすればもっともっと早くなるYO!
616デフォルトの名無しさん:2011/05/01(日) 18:51:08.28
ちなみに
”Cに慣れると何でも「いきなりのC」ができると思う癖がつきやすい”と、とある先輩が...
マイプログラムにいちいち仕様書書けとかいうんじゃなくて、実はもっと高級言語(C直系のものも多い)
を使ってアルゴリズムとか洗練させてからCで書き直さしたほうが無難(急がば回れ)、さもなくば泥沼に
嵌ることも多い
という意味
617デフォルトの名無しさん:2011/05/01(日) 19:41:32.80
>>607 修正
http://codepad.org/AjKZAS6o
・バブルソートを修正
・コムソートを実装(wikipediaからほぼ丸パクリ)
・コムソートって実装カンタンな割りに平均O(n log n)、最悪O(n log n)
・未保障
618デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/02(月) 03:47:56.46
>>720
偶然、例の場合に答えが一致してるだけ
コメントはずしてsong2とchild[song2]を表示させれば順番おかしいことわかるだろ
624デフォルトの名無しさん:2011/05/02(月) 03:56:39.71
thx
コード美しすぎわろた
625デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/02(月) 08:45:30.71
>>520

>>570 の改良版です。AVL木(平衡二分木の一種)を一部取り入れました。
http://codepad.org/F4X9iMw9
627626: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デフォルトの名無しさん:2011/05/02(月) 09:12:28.63
いつまでオナニー続けんだよ
629626:2011/05/02(月) 10:17:25.66
>>520

>>626 にはバグがありましたので、訂正します。
AVL木を一部採用しています。
http://ideone.com/ujGUY
630629: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デフォルトの名無しさん:2011/05/02(月) 10:35:04.82
トリップはずしてもクソのままだな
632 ◆XEE2zLj0dE :2011/05/02(月) 10:52:55.68
回答ついた宿題のことを続けるなら別スレがいいと思うんよ。
とりあえず例のスレを使ってみようとしているけど……いいのか悪いのか
http://hibari.2ch.net/test/read.cgi/tech/1295273862/
633デフォルトの名無しさん:2011/05/02(月) 11:03:13.81
>>632
隔離場所にひっこんでいてもらいたい
俺はあほな誘導するのがうざかっただけだから
634デフォルトの名無しさん:2011/05/02(月) 13:30:26.33
>>631
糞は糞だよ
自己愛性人格障害は性格の病気だから一生治らん

>>630
いい加減に他のスレ行ってやれカス
空気が読めないのかアホ
635デフォルトの名無しさん:2011/05/02(月) 23:08:09.94
>>625
わざわざありがとう!
お世話様でした
636デフォルトの名無しさん:2011/05/03(火) 18:11:39.70
>>632
回答のついた過去の問題でも、解きたい人、解けた人ははどんどんコードをアップしていいとは思ってはいます。
今回、私が叩かれているのは別の理由だったと思いますし。

そのこころは、>>268

現在、赤黒木を試行中です。これはなかなか手ごわい。でも赤黒木の応用範囲が極めて広いことを考えると是非征服したいものです。
今年のゴールデンウィークは「赤黒木」がテーマになりました。
637デフォルトの名無しさん:2011/05/03(火) 18:24:45.39
いいわけねーだろ
638デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/03(火) 23:36:01.51
>>638
カスタムの意味が不明だったのでAlt+Kだけだが
ttp://codepad.org/OSyJjum5
640308:2011/05/04(水) 11:18:50.54
まずデフォルトが表示されててそこから
Alt+Kを押すとデフォルトがカスタムに値を1から2に変更させたいです
641デフォルトの名無しさん:2011/05/04(水) 11:23:59.42
意味が分からん。
642308:2011/05/04(水) 11:26:46.15
まぁ同じところに表示されてデフォルトだと・Alt+K 1(DEFAULT)
Alt+Kが押されたら・Alt+K 2(CUSTOM)
こういう風になるようにできればオkだと思います
643デフォルトの名無しさん:2011/05/04(水) 11:35:26.76
>>642
つまり
1回目にAlt+K -> Alt+K 1(DEFAULT)
2回目にAlt+K -> Alt+K 2(CUSTOM)
を表示させるってことか?
とりあえずその分かりにくい日本語をなんとかしろw
644デフォルトの名無しさん:2011/05/04(水) 11:42:57.39
Alt+K 1
という表記が分からない
2アクションとして受け取ると
DEFAULTを実行する術がない

意味が分からん。
645308:2011/05/04(水) 11:43:04.22
>>643 そのとおりです。日本語おかしくてスイマセン・・・・
646308:2011/05/04(水) 11:43:55.14
1と2は値です
647デフォルトの名無しさん:2011/05/04(水) 11:50:21.00
>>646
意味が分からん。
648デフォルトの名無しさん:2011/05/04(水) 11:52:07.80
まず638は日本語を勉強してくること

俺のESPを駆使すると、ALT-Kで1と表示されたものが2に変わるくらいに思える
649308: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)
を表示させるってことか?

こういうこと
650308:2011/05/04(水) 11:54:13.11
とりあえずAlt+Kの位置も変わらず 1(DEFAULT)が2(CUSTOM)に変わるって事です。
651デフォルトの名無しさん:2011/05/04(水) 12:53:32.42
>>650
エスパーが質問に答えるスレ
http://hibari.2ch.net/test/read.cgi/tech/1187922645/
652デフォルトの名無しさん:2011/05/04(水) 12:56:49.53
ウィンドウやダイアログボックスはそもそもスレチだろ
653デフォルトの名無しさん:2011/05/04(水) 13:01:51.35
頭が悪いんだからしょうがねーだろ
654デフォルトの名無しさん:2011/05/04(水) 14:38:10.15
>>639 を直して欲しいわ。
http://loda.jp/_pluto_/?id=19
655デフォルトの名無しさん:2011/05/04(水) 18:05:26.51
>>652
それ本当なのか?
656デフォルトの名無しさん:2011/05/04(水) 18:15:16.07
答えたくないだけだろ
657デフォルトの名無しさん:2011/05/04(水) 18:38:33.85
気に入らない依頼に回答が付かないようにするためじゃね
658デフォルトの名無しさん:2011/05/04(水) 19:03:43.79
バカらしい答えてやろうぜこのスレの意味ないだろ
659デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/04(水) 19:27:17.61
習ってないならまず習って来い
661デフォルトの名無しさん:2011/05/04(水) 21:16:35.14
ウィキったけど、第2種のようなそうでないような、
とりあえず問題分をそのまま当てはめてみた。

ちなみにWindows環境、一応MinGWで試した。
ttp://ideone.com/im132
662デフォルトの名無しさん:2011/05/04(水) 21:51:24.89
n-1Srrはn-1Srの誤字じゃないの?
663デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/05(木) 03:54:56.18
>>662
いや、おそらく (n-1Sr)r が正解だと思う。
665デフォルトの名無しさん:2011/05/06(金) 05:10:25.33
int型で工夫することによって20桁同士の整数の掛け算を行い
char型で計算結果を出力せよ。

これをお願いします。困っています。
666デフォルトの名無しさん:2011/05/06(金) 05:36:40.97
ヒント
0x1234 * 0xabcd =
0x12 * 0xab * 0x10000 + 0x12 * 0xcd * 0x100 + 0xab * 0x34 * 0x100 + 0x34 * 0xcd
667デフォルトの名無しさん:2011/05/06(金) 17:24:50.84
>>665
intで40桁表せられるハードウェア作ればいんじゃね?
668355:2011/05/06(金) 17:53:21.34
669デフォルトの名無しさん:2011/05/07(土) 00:48:45.13
[問題文]char型の配列の先頭ポインタ*cを引数として、
返数なしでcの指し示す配列にhogeを代入するプログラム

http://codepad.org/WYd2dorv
このプログラムだとエラーが出てしまいます
改善点を教えて下さい
670デフォルトの名無しさん:2011/05/07(土) 00:54:44.26
671デフォルトの名無しさん:2011/05/07(土) 01:27:24.56
>>670
ありがとうございます
コピペしたところ、「識別子が見つかりませんでした」とエラーがでました
672デフォルトの名無しさん:2011/05/07(土) 02:19:30.93
>>671
#include <string.h>
673デフォルトの名無しさん:2011/05/07(土) 02:22:45.40
674デフォルトの名無しさん:2011/05/07(土) 02:24:29.05
ググればすぐ分かる事を教えてやることないのに
675デフォルトの名無しさん:2011/05/07(土) 02:38:24.95
>>672-674
ありがとうございました
676デフォルトの名無しさん:2011/05/07(土) 17:03:40.24
[1]授業単元:プログラミング2
[2]問題文:char型のポインタ配列の先頭ポインタ**cを引数とする
返数なしでcの指し示す配列に順に月の名前の文字列を代入

作成したプログラム(http://codepad.org/jf7lkdXu)だと
エラーが起きてしまいます。お願いします。
677デフォルトの名無しさん:2011/05/07(土) 17:06:03.20
char *name[6];
にしてみ。
678デフォルトの名無しさん:2011/05/07(土) 17:10:13.64
ねずみ?
679デフォルトの名無しさん:2011/05/07(土) 18:10:28.30
>>677
おお!できるようになりました
ポインタ配列とポインタのポインタはこうすればよかったのか
勉強になりました
ありがとうございました
680デフォルトの名無しさん:2011/05/08(日) 18:06:11.25
1]授業単元:プログラミング
[2]問題文:自己参照型構造体を用いて、以下の処理をするプログラムを作成せよ。

正の数入力→連結リストを辿り、初めて入力された数ならばカウンタを1増やす。同じ数が続けて入力されたらその数のカウンタをさらに1増やす。
負の数入力→負の数の絶対値と同じ回数入力された数のデータを削除(例えば、-3を入力し、それ以前に14が3回入力されていたら、それを削除)
0を入力→データを出力して終了。

データ出力→終了の流れはどうにかなりましたが、それ以外で上手い発想が思いつきません。

http://codepad.org/yayuXIUa

期限は明日までです。
681 ◆XEE2zLj0dE :2011/05/09(月) 02:52:07.72
>>680
http://codepad.org/f51zggbZ

回答がついてないのでやろうと思ったんだけど、正の数入力時の内容がどうにもわからず。
「正の数入力→入力された数の入力回数を保持する」と読み替えて作ったものをうp。
意図と違ってたら、もうちょっと細かく書いてみてください。

元コードと考えが違うところは、headは有効なノードではなく、ダミーノードにした点ぐらいのはず。
682デフォルトの名無しさん:2011/05/09(月) 05:41:56.98
>>681
いいんじゃね?
俺もずっと前にこの手のプログラムを山ほど作ったが
ダミーノードを使った方がプログラムの見通しが良くなった。

今はC++のコンテナ std::list とイテレータで何も考えなくて
良くなったが、Cは全部書かないといけないし free() の所で
バグりやすいから大変だね
683デフォルトの名無しさん:2011/05/09(月) 14:14:21.20
てんぷら全部埋めないのが流行ってるの?
684デフォルトの名無しさん:2011/05/09(月) 19:19:48.27
>>680>>681のコード質の差が激しすぎだな
小学生の工作宿題なんかを親が小学レベルに合わせずに親の基準(俺俺基準)
で作成したって感じだな。カンニングバレバレだろうな

>>681
>初めて入力された数ならばカウンタを1増やす
>同じ数が続けて入力されたらその数のカウンタをさらに1増やす
この2つの処理を
>正の数入力→入力された数の入力回数を保持する
に変更ってこと?
685 ◆XEE2zLj0dE :2011/05/09(月) 20:51:41.38
>>684
もとのコードは生かしたつもりだったけど、ダメだったかな。
変更内容はそのとおりで、元コードの構造体と、削除時の説明からそうしてみたけど、的外れですかね……
あとはリストの並び順とかも指定なかったので適当だったりで。
宿題ならこのほうがよくね?ってのがあるなら書いてくれると次書くときできるだけ反映します。

>>682
ありがとです。
一応、メモリリークの検査と、警告は全部潰す方向でやってます。
危うく見事にfreeまわりでバグってるとこでしたorz
686デフォルトの名無しさん:2011/05/09(月) 21:53:00.11
>>685
依頼主が何も言わないのなら、それで良いんじゃないか
少しはやる気ある依頼主みたいだから>>681を元に自分で俺様回答作成しているんじゃないか
687デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/10(火) 14:21:32.07
数学の問題と違って、解き方だけでなく書き方も重視されるのが
C言語の問題
だからかどうか知りませんが、点プレに沿って質問してくださいね
690デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/10(火) 14:52:59.48
>>689
書き方と解き方は結構繋がっているからな
692688: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デフォルトの名無しさん:2011/05/10(火) 22:12:04.51
strSrcの文字列を逆にして,strDstに書き込むプログラムを作成してください.
 ただし,文字列の操作にはポインタ変数strDst, strSrc, pC, pDを用いることとし,strSrc[i] のような配列操作は用いないこととします.
 また,配列strSrc[]の1つ前の番地に0が入っていることを前提としないプログラムにしてください.

http://codepad.org/V7e6qsPC
694デフォルトの名無しさん:2011/05/10(火) 22:14:05.10
すいません、>>693です。
C言語勉強したてなのですが、このような課題が出来ません…
ここ数時間試行錯誤してるのですが、どうも上手く出来てないようなのでお力を貸してもらえると嬉しいです。
695デフォルトの名無しさん:2011/05/10(火) 22:17:42.10
strSrc strDst共に文字列リテラルへのポインタなんで
scanfや書き換えができるかどうかは処理系依存
殆どの処理系で禁止されている。
テンプレに嵌らない質問は別のスレで
696デフォルトの名無しさん:2011/05/10(火) 22:19:53.04
>>693
>>1 読んでテンプレ埋めろ

>>695
馬鹿は黙れ
697デフォルトの名無しさん:2011/05/10(火) 22:27:05.91
[1] 授業単元:プログラミング言語
[2] 問題文: >>693
[3] 環境
 [3.1] OS: windows7
 [3.3] 言語:C言語
[4] 期限: 2011/5/12(金)
[5] その他の制限: 授業では最近ポインタに入りました。ポインタの入ってから初めての課題です。
文字列のコピーは出来たのですが、どうしても文字列の反転が出来ません…。
698デフォルトの名無しさん:2011/05/10(火) 22:28:07.88
699698:2011/05/10(火) 22:33:21.88
>695

strSrc, strDstとも配列だから問題ない。

>697
コメントに書いたけど、scanfで読み取る文字列がstrSrcのバッファを溢れさせると
まずいことになる。

まぁ、課題の進み具合からして、あふれるような入力は無い前提で
構わないとは思うが。
700デフォルトの名無しさん:2011/05/10(火) 22:40:35.13
>>698
ありがとうございます!理解するのに少し時間がかかりそうですが、勉強してきます…
701デフォルトの名無しさん:2011/05/10(火) 22:41:33.22
>>697
>>693にはstrSrcとstrDstはポインタ変数とあるが配列でいいの?
702デフォルトの名無しさん:2011/05/10(火) 22:48:15.48
>>701
本当ですね…問題文は一切改変してないので、問題作成者側のミスかもしれません。
授業(口頭での課題の簡単な説明)ではstrSrc , strDstを配列として扱っていたので、配列だと思われます。確認してみます…。
703デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/10(火) 22:58:02.96
↑バグってる
705698:2011/05/10(火) 23:02:37.42
バグがあった。

>703さんのコードで3行目に当たるところの処理がまずい。
pC--;

if (pc > strSrc) {
pC--;
}

テストはほとんどしていないので、他にもあるかも。
706デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/11(水) 00:56:53.90
sizeofは覚えるとやたらと使いたくなる演算子の一つだが
むやみに使う癖を付けると後で泣きを見やすい(実体験)
バイトサイズオンリーで押していくシステム直属処理用の
もので理論・応用レベルのコードではなかなか取れない
やっかいなバグの温床になりがち
708デフォルトの名無しさん:2011/05/11(水) 01:14:13.97
>>707
エンディアンではまったのですか?yrskrb kwsk
709デフォルトの名無しさん:2011/05/11(水) 01:16:29.13
それとも、アラインメントですか?yrskrb kwsk
710デフォルトの名無しさん:2011/05/11(水) 01:18:15.44
馬鹿にするために聞くとは意地が悪いなw
711デフォルトの名無しさん:2011/05/11(水) 02:00:16.99
>>710
そんなことはありません。sizeof を避ける、という意見は初めて聞きましたので、理由をしりたいだけです。

アラインメントの問題をさけるために assert をバンバンいれたり fwrite(), fread() で構造体のメンバ変数を
ちまちま読み書きしたことがあります。

エンディアンのトラブルを避ける方法はちょっとよくわかりません。
712デフォルトの名無しさん:2011/05/11(水) 02:07:18.55
むしろsizeofからエンディアンに発展した経緯が知りたいわ
713デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/11(水) 06:44:47.86
本日中ってもっと余裕もって質問しろよw
あと2つ目はわかったけど最初のボウリングの問題もっと具体的に
716デフォルトの名無しさん:2011/05/11(水) 07:44:54.87
>>715
何だか色々と申し訳ないです

ボーリングの問題なんですが本当に問題文これだけなんで
自分も詳しくは分からないのですがレーン毎に倒した本数を入力していく形式だと思います
一応今授業で乱数を学んでいるのですが特に関係なさそうですし…
717デフォルトの名無しさん:2011/05/11(水) 08:22:37.56
要するにストライクやスペアを取った時の処理がミソなんだろうな
あと最後の投球は3回になる可能性も考慮して
718デフォルトの名無しさん:2011/05/11(水) 09:01:27.16
>>716
ゴールデンウィークの前に出された問題ですか?
719デフォルトの名無しさん:2011/05/11(水) 09:24:40.82
>>718
気持ち悪いので隔離スレでやってくれ
720デフォルトの名無しさん:2011/05/11(水) 11:13:25.50
こんな感じで与えられるのかな?

int score[10][3];
721デフォルトの名無しさん:2011/05/11(水) 11:58:48.19
ストライクでたら後の2投加算で、スペアは1投加算だっけ?
単純に面倒だな
722デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/11(水) 13:38:51.76
>>725
まてその関数どうやっても作れねーよ
727デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/11(水) 15:48:32.56
>>722
>>717が言及しているけど、最後の10フレーム目は、ストライクが2回続いているんで、もう1投あるね。
{10, 10, 8}
731デフォルトの名無しさん:2011/05/11(水) 16:06:08.47
あ、ごめん、よく見たら
const int extra = 10;
が10フレームの3投目か。
732デフォルトの名無しさん:2011/05/11(水) 17:20:46.96
>>722-724
ありがとうございます

それと申し訳ないんですが>>714のゲームプレイヤー側の思考プログラムなんですが
「ランダムに大小を選択するのではなくある程度思考して選択するように」との一文があったのですが大丈夫ですかね?

それとボーリングのプログラムを倒したピンの数を標準入力していって
スコアを算出するように出来ませんかね?

お手数かけて申し訳ないです
733デフォルトの名無しさん:2011/05/11(水) 17:22:52.84
「これからしばらく寝ます。」
734デフォルトの名無しさん:2011/05/11(水) 18:14:57.05
>>732
ランダムに選択していないし、ある程度かどの程度か分からないけれど、思考はしているように見えるよ。
「別の回答作ってるから少し待ってて」
735デフォルトの名無しさん:2011/05/11(水) 18:19:44.77
void func2(int A[][], int B[][], int C[][])
いまのCはint[][]ができるのか。良い時代になったな

>>727
[][2]と[][]は型が違うんじゃないか?
736デフォルトの名無しさん:2011/05/11(水) 18:34:22.00
Cでは別に禁止してないけど、実装上の理由からCコンパイラの多くが
許可していない(対応していない)というのも多いんじゃね?
737デフォルトの名無しさん:2011/05/11(水) 19:14:32.07
>>735
だって[][]とか不可能じゃん、こうするしかないじゃん
>>726=>>727だし

>>736
適当なこというなよ
738デフォルトの名無しさん:2011/05/11(水) 19:27:41.45
>>736
おいおいこれは「ジャグ配列」と言ってC/C++の二次元配列とは全く違うぞ

強いて言えば std::vector<std::vector<int> > に近い
つまり行ごとに列の要素数が違ってもいいわけだ
739デフォルトの名無しさん:2011/05/11(水) 20:31:03.11
>>732

あってるかどうかしらないけど
http://codepad.org/QdBVtj65
740デフォルトの名無しさん:2011/05/11(水) 20:44:56.86
10フレーム3投目がおかしくね?
741デフォルトの名無しさん:2011/05/11(水) 20:48:02.57
ポインタでない配列をNULLで初期化するのってあってるの?
742デフォルトの名無しさん:2011/05/11(水) 21:03:13.23
NULLはマクロ定義
0の場合が多いけど処理系によって違う
743デフォルトの名無しさん:2011/05/11(水) 21:17:57.26
>741
間違ってるだろうね。


Cの場合は
#define ((void *)0)
ってなっていることが多いとおもう。

#define 0
なら結果的に問題ないけど、終端文字をNULLって書くくらい、間違っている。
744デフォルトの名無しさん:2011/05/12(木) 00:05:07.68
>>742
どう定義されていようが、間違いには変わりない。
745デフォルトの名無しさん:2011/05/12(木) 12:28:56.05
[1] 授業単元:プログラム実習
[2] 問題文(含コード&リンク):
名前・身長・体重・血液型が記録されたメモ帳(ファイル)がある。
これを身長順にソートして並べ替えてコマンドプロンプト上に
表示させるプログラムを作成せよ。
なお、今回メモ帳はstudentsdata.txtという名前で保存されていることとする。
746デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/12(木) 12:47:43.86
>>745
で、ファイルは固定長?それとも何かの区切りがあるの?

>>746
つか、vbでCは無理
もう一度宿題を確認して来い
748デフォルトの名無しさん:2011/05/12(木) 13:05:35.36
名前・身長・体重・血液型の書式が指定されてるか確認した方がいいよ
勝手に決め打ちした書式でも文句は言えないぞ
749デフォルトの名無しさん:2011/05/12(木) 14:14:19.58
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):http://codepad.org/a9fxM1w5
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2011年05月17日12:00まで
[5] その他の制限:http://codepad.org/wW5cjiF7を元にすること

どの部分で何をしているのかも分かりません。
よろしくお願いします。
750デフォルトの名無しさん:2011/05/12(木) 15:48:58.26
ttp://hibari.2ch.net/test/read.cgi/tech/1304304298/
このスレの896と897お願いします
困ってます
751デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/12(木) 16:20:02.16
visual basic
754デフォルトの名無しさん:2011/05/12(木) 16:28:11.08
>>751
ttp://www.geocities.jp/supermisosan/gauss.html
ここのコピペでやっときました

http://codepad.org/qs1bhQZW
できればとのことでしたので式での読み込みは対応してません
755764:2011/05/12(木) 16:51:34.82
大変失礼しました。
ファイルの中は
氏名 身長 体重 血液型
氏名 身長 体重 血液型
     ・
     ・
     ・
といった具合に並んでいます。
(空白はスペースです)
あと、visual basicではなく
visual studioの間違いでした。すみませんでした。
756デフォルトの名無しさん:2011/05/12(木) 16:55:10.14
>>755は746です。
757デフォルトの名無しさん:2011/05/12(木) 17:40:32.25
>>755
http://codepad.org/YSCWRuMX
データは

ito 157 50 B
sato 160 60 A
shiro 220 89 AB
itoo 170 49 AB

で試しました
758デフォルトの名無しさん:2011/05/12(木) 17:53:16.34
>>757
ありがとうございます!
助かります
759デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/12(木) 23:58:57.58
>>754
お礼が遅れてすみません。非常に助かります。
ありがとうございました!
761デフォルトの名無しさん:2011/05/13(金) 00:30:28.83
>>749
http://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デフォルトの名無しさん:2011/05/13(金) 12:22:07.41
764デフォルトの名無しさん:2011/05/13(金) 12:22:54.06
あとここからのほぼコピペです
ttp://www.geocities.jp/supermisosan/newtonhou.html
765デフォルトの名無しさん:2011/05/13(金) 12:37:13.49
(abcdじゃない方の)初期値も標準入力で入力できたほうが良かったでしょうか
そうしないと数値を変えてコンパイルしなおさないともう一つの解を出せないですし

ニュートン法の手法自体では解が一つしか出ないんですが
複数解についてなにか指示はありましたか?
一応初期値を複数とって比較すれば出せないこともないですが数学的にはかなりアレな方法な気がします
766 ◆XEE2zLj0dE :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デフォルトの名無しさん:2011/05/13(金) 19:06:25.30
原始反復法が分からん
どんなんだっけ?
769デフォルトの名無しさん:2011/05/13(金) 19:09:05.55
770デフォルトの名無しさん:2011/05/14(土) 07:44:30.37
>>767
原始反復法ってなんですか?
771デフォルトの名無しさん:2011/05/14(土) 07:54:29.23
原始反復法=反復法
772デフォルトの名無しさん:2011/05/14(土) 11:33:02.88
連立方程式の反復法なら分かるんだがなあ
773デフォルトの名無しさん:2011/05/14(土) 12:46:44.72
<問題文>キーボードから入力された商品名の価格を出力するプログラム。
入力された商品名がない場合は、「そのような商品はありません」と出力する。

http://codepad.org/DGGLOUGq
http://codepad.org/h7pGT49o

↑2つのパターンで作成したんですが、両方ともエラーになります。
どうすればいいのか教えて下さい。

バージョンは、VisualC++です。
774デフォルトの名無しさん:2011/05/14(土) 12:52:10.88
>>773
文字列の比較はstrcmpを使ってください
==ではだめです
775デフォルトの名無しさん:2011/05/14(土) 12:54:27.51
× char *name[3] = {"tree","cake"};
○ char *name[2][16] = {"tree","cake"};
776デフォルトの名無しさん:2011/05/14(土) 12:56:21.32
>>775
むしろ
char *name[] = {"tree","cake"}
でいいだろ
ていうかその◯のやつはなんなんだよwwwwww
777デフォルトの名無しさん:2011/05/14(土) 12:57:56.33
>773

直接エラーになっているのは
scanf("%s",&s); → scanf("%s",s);

文字列比較はstrcmpが必要になるのは>774の通り。

>775
何か勘違いしてませんか?
778773:2011/05/14(土) 15:34:19.77
strcmpなしではできないのでしょうか?
779デフォルトの名無しさん:2011/05/14(土) 15:37:34.83
>>778
できるよ
先頭から一文字づつ比較すればいい
780773:2011/05/14(土) 15:42:22.33
>>779
それはfor文を用いるのでしょうか?
781デフォルトの名無しさん:2011/05/14(土) 16:00:18.52
>>780
for文でも可能です
782デフォルトの名無しさん:2011/05/14(土) 16:03:25.97
>>781
やり方を教えて下さい
783デフォルトの名無しさん:2011/05/14(土) 16:05:03.95
>>782
ここは宿題すれだから、>>1のテンプレに従って
問題文と回答方法を書いてくれると早い。
784デフォルトの名無しさん: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は使用しない方向でお願いします

http://codepad.org/DGGLOUGq
http://codepad.org/h7pGT49o
785デフォルトの名無しさん:2011/05/14(土) 18:13:31.83
786デフォルトの名無しさん:2011/05/14(土) 18:33:02.91
>>785
バカすぎるw
787デフォルトの名無しさん:2011/05/14(土) 19:28:00.85
>>785を修正してみた
ttp://codepad.org/PkghZAMd
788デフォルトの名無しさん:2011/05/14(土) 20:05:38.40
>>787
>const char *name[] = {"tree","cake"};
>const int price[] = {300,500};
なぜ static をはずした?
789787:2011/05/14(土) 20:16:50.68
いつもの癖で
質問で気付いたけど呼び出し毎のスタック確保&解放防止の為なのね、
付けた方が良いのかも
790デフォルトの名無しさん:2011/05/14(土) 20:37:21.04
787は中途半端すぎだろconstもつけろよwwwww
改変の危険と速度面から
791デフォルトの名無しさん:2011/05/14(土) 20:37:49.38
>>787じゃねぇ>>785
792デフォルトの名無しさん:2011/05/14(土) 23:07:51.48
793デフォルトの名無しさん:2011/05/15(日) 00:40:17.56
本人がstrcmp使わないでとか自身で書いたコードがCなのにC++かいな、

ってか前もこの手の話なかったか?w
794デフォルトの名無しさん:2011/05/15(日) 01:06:02.73
>> [3.3] 言語: C++
仕様通り。問題無し。
795デフォルトの名無しさん:2011/05/15(日) 03:19:24.77
半端なC++化だな

796 ◆6W4srb4nmo :2011/05/15(日) 03:28:10.33
A Better C.
797デフォルトの名無しさん:2011/05/15(日) 08:50:38.83
コードも書かずに批評かよ…
本格的なC++化というのを見せてくれ。w
798デフォルトの名無しさん:2011/05/15(日) 08:54:17.71
>>797
本格的とかいわれてもwwwww
stringを使って簡略化したなら
末尾の検出のために手動で-1入れた配列とか使ってないでコンテナも使えばいいじゃんぐらいの話しよ
799デフォルトの名無しさん:2011/05/15(日) 09:00:41.03
hoge.cpp
800デフォルトの名無しさん:2011/05/15(日) 09:29:08.10
>>798
5月初旬じゃコンテナまで習ってないだろ。
801 ◆XEE2zLj0dE :2011/05/15(日) 09:44:33.48
本格的かどうかわからないけどやってみた。
http://codepad.org/lZa2IvaV
なんか商品がすごいなぁ
802デフォルトの名無しさん:2011/05/15(日) 10:37:07.20
>>800
出題者のこと考えるならそもそもstringも使うべきじゃないだろ
どうみてもCだもの

あくまで>>792が半端だなぁってだけだよ
803デフォルトの名無しさん:2011/05/15(日) 10:45:00.34
>>802
お題が、言語:C++、制約条件:strcmpは使用しない事とあるので、
std::string使えというのが出題者の意図と判断した。
もう一つの可能性(strcmpを自分で書く)は既に出ている。

質問テンプレに「これまで習った範囲」も入れた方が良いな。
804デフォルトの名無しさん:2011/05/15(日) 10:45:06.08
テンプレぐらいちゃんと書こうよって皮肉だと思う
あと、strcmpを使わないっていうのは、本来そんな制限はないけど、
出題者が思い込みで勝手につけた制限だと思う。宿題スレにはよくあること
805デフォルトの名無しさん:2011/05/15(日) 10:50:25.42
>>803
あぁなるほど
C++って描いてあるのに結局Cでやれってことかよって奴をちょくちょく見たので思い込んでた
806 ◆/91kCCQXBo :2011/05/15(日) 11:13:20.99
>>785
tree
tr
trees
rg
で試したけど全部300
807デフォルトの名無しさん:2011/05/15(日) 13:39:45.23
>>806
ご指摘ありがとうございます。
mystrcmp() に問題がありました。

>>784
バグがありました。以下に訂正いたします。
http://codepad.org/j4CqE1i7
808デフォルトの名無しさん:2011/05/15(日) 13:51:40.71
[1] C言語GW課題
[2] キーボードから128文字以内の文字列を読み取り
それが浮動小数点表現であるかどうかを検査する
プログラムを作りなさい。浮動小数点表現ならば
その数に1を足した数字を表示しなさい。
[3] Windows/Visual C++/C言語
[4] 5/13迄(遅れています)
[5] printf,scanfしか習ってません 
ボインタとかまだ習ってません
これ以外の関数は使えないと思います。
よろしくお願いします。
809784:2011/05/15(日) 16:00:57.97
784です。遅れてすいません
様々なプログラムをありがとうございました
参考にさせていただきます
810デフォルトの名無しさん:2011/05/15(日) 16:33:51.45
頑張ってC++してみた
ttp://codepad.org/2vOLnCEL
811デフォルトの名無しさん:2011/05/15(日) 16:38:38.61
>>810>>784のコードね
812デフォルトの名無しさん:2011/05/15(日) 16:39:39.89
>>808
http://codepad.org/UdQ3fBEH
習っていない表現があれば書き直しますので連絡ください。
813デフォルトの名無しさん:2011/05/15(日) 18:22:11.31
>>808
追加要望 http://hibari.2ch.net/test/read.cgi/tech/1295273862/869
に対応しました。あとバグをいくつかとりました。
http://codepad.org/m9T3sxmN
814デフォルトの名無しさん:2011/05/15(日) 18:29:55.59
>>813
エラー E2140 dai2.c 15: ここでは宣言はできない (関数 main )

またC99で書いたろカス
815デフォルトの名無しさん:2011/05/15(日) 18:48:42.02
あと、E大文字、とか。
それは出題者で出来るだろうから宿題。
816デフォルトの名無しさん:2011/05/15(日) 18:52:46.47
>>814
おっとご指摘感謝。

>>808
http://codepad.org/jbnR5QWF
817デフォルトの名無しさん:2011/05/15(日) 18:55:59.95
>>814
だってQカスだもの
818デフォルトの名無しさん:2011/05/15(日) 19:35:09.50
>>808
http://codepad.org/QcnnVfwC
以下をテスト
819デフォルトの名無しさん:2011/05/15(日) 19:42:20.95
' 3.4' >>818
820デフォルトの名無しさん:2011/05/15(日) 20:23:03.37
>>808
>>818のバグ修正
http://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デフォルトの名無しさん:2011/05/15(日) 20:25:43.42
>>820
ついでにこれもテスト。
3.4 3.4
822デフォルトの名無しさん:2011/05/15(日) 22:48:15.50
>>820
整数.整数f+整数
という記法は無かったので、

int isexp(int c)
{
return c == 'E' || c == 'e';
}
に修正してくれ。コメントも合わせて要修正。
823 ◆6W4srb4nmo :2011/05/15(日) 23:19:05.41
浮動小数点 スペース 浮動小数点
は2個?それともエラー? >>808
824デフォルトの名無しさん:2011/05/15(日) 23:30:33.35
エラーだと思うけどなぁ
825デフォルトの名無しさん:2011/05/15(日) 23:30:58.48
もしくは、1つ目のみ処理対象
826デフォルトの名無しさん:2011/05/16(月) 00:32:58.27
なんか久々にまともにこのスレで議論してるとこ見た気がする
827デフォルトの名無しさん: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 :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デフォルトの名無しさん:2011/05/16(月) 11:42:39.62
>>828
それだと小数点も指数も無い整数が通っちゃう気がする
830 ◆6W4srb4nmo :2011/05/16(月) 11:50:33.27
ちなみに、もりたぽ有償くんのは、最初そのイメージだったけど、通るように直してた。
3e4とか。
831デフォルトの名無しさん:2011/05/16(月) 12:09:47.86
QZさんを糞呼ばわりしている人はQZさん以上のものが
書けたのかな?
832デフォルトの名無しさん:2011/05/16(月) 12:15:05.98
本人擁護乙
833デフォルトの名無しさん:2011/05/16(月) 12:33:37.31
本人擁護も糞呼ばわりもわりとどうでもいい。依頼に淡々と回答を書けばいい。
834デフォルトの名無しさん:2011/05/16(月) 12:52:17.15
なんか必死でスレ埋めてたな
多分こっちにも被害くるぜ
835デフォルトの名無しさん:2011/05/16(月) 13:16:52.90
新スレ立てるだろうし。わきまえて使えるかどうかで、それぞれの評価が決まるよ
836デフォルトの名無しさん:2011/05/16(月) 13:33:53.10
◆QZaw55cn4cまだいたのかw
837デフォルトの名無しさん:2011/05/16(月) 13:41:21.16
◆QZaw55cn4cを非難しているのは一人か二人だろうと本人が書いてたなw
幸せ回路全開だな
んなわけねーだろ
838デフォルトの名無しさん:2011/05/16(月) 13:48:30.22
>>834
そうだね
そうならないためにも◆QZaw55cn4cには消えてほしいね
839デフォルトの名無しさん:2011/05/16(月) 13:53:16.69
QZさん人気者w
840デフォルトの名無しさん:2011/05/16(月) 13:59:17.07
なんで最近またトリ付けてるの?
我慢できなくなっちゃった?
841デフォルトの名無しさん:2011/05/16(月) 14:00:46.70
>>840
無能の癖に自己顕示欲とプライドだけは無用に高いからなあw
842デフォルトの名無しさん:2011/05/16(月) 14:14:43.73
宿題スレ、二ついるようだね。お互い邪魔しないようにしてね
843デフォルトの名無しさん:2011/05/16(月) 14:23:01.38
なんでID強制表示に賛成してくんないの?
844デフォルトの名無しさん:2011/05/16(月) 14:34:14.23
>>843
過疎版になって事実上板が死ぬから
845デフォルトの名無しさん:2011/05/16(月) 14:47:46.36
そんなに嫌なら別スレでやれば?
846デフォルトの名無しさん:2011/05/16(月) 14:52:59.19
◆QZaw55cn4cって「わたしの10倍速いコードなど、ありえないだろう…(キリッ」って偉そうにしてたら、
あっさり100倍速いコード書かれて涙目でフェードアウトした人のこと?
847デフォルトの名無しさん:2011/05/16(月) 14:56:05.85
>>844
過疎りはしないと思うよ。単発が増えまくるだろうけど
848デフォルトの名無しさん:2011/05/16(月) 15:56:41.13
>>847
いや減る
ID制になった他の板を見てみろよ
全部減ってる
ID表示は投稿量を減らす効果がありますと書いてあるし

http://tiyu.to/permalink.cgi?file=1ch_gen
849デフォルトの名無しさん:2011/05/16(月) 16:05:32.60
ぶっちゃけ過疎って困る人がいるか?
850デフォルトの名無しさん:2011/05/16(月) 16:10:06.66
面白半分の煽りが減るから、ユーザーには良いことだね
851デフォルトの名無しさん:2011/05/16(月) 16:32:21.15
書き込みが減るのか。それは良い
852デフォルトの名無しさん:2011/05/16(月) 16:52:58.09
煽り専門でム板にいる俺は困るな
853デフォルトの名無しさん:2011/05/16(月) 17:12:21.09
たまにわく偽物とか居なくなるしね
854デフォルトの名無しさん:2011/05/16(月) 17:46:55.69
ID導入に賛成してる奴は一人か二人が自作自演してるだけだろ
嘘だと思うならアンケ取ってみな

http://vote1.fc2.com/poll?mode=browse&uid=10647472&no=1

アンケ板作って見たから様子を見てみるか
855デフォルトの名無しさん:2011/05/16(月) 18:05:52.00
通算で始めての投稿のIPにはIDを出さず,2回目以降は
都度異なるID(IPと時刻から決定される3桁英数字ハッシュコード)
+積算投稿回数(10回未満:1 100回未満:2 1000回未満:3
...)
がいいと思います
荒らしと認定されたものが多いIPは赤で表示してもらうとか
856デフォルトの名無しさん:2011/05/16(月) 18:08:29.88
>>855
ここの投票所はそれが使えないんですよ
何かいい投票所はないですか?
ちなみにコメント欄入力必須にしときましたので、
あまりいい加減なコメントばかりならこの投票所を消します
ちゃんと理由を記入してください
857デフォルトの名無しさん:2011/05/16(月) 18:14:58.28
他所でやれ、ゴミども
858デフォルトの名無しさん:2011/05/16(月) 18:22:39.85
でもこの投票所はつなぎ直してリモートホスト変えてクッキーも消せば自作自演し放題じゃん
やっぱり消すわこれ
859デフォルトの名無しさん:2011/05/16(月) 18:26:00.67
>>858
それはIDにも言える事で・・・
860デフォルトの名無しさん:2011/05/16(月) 18:26:43.39
>>856
投票所じゃなくてスレにそういうIDがでればいいのにって話じゃね?
861デフォルトの名無しさん:2011/05/16(月) 18:27:45.95
すぐ取り消すあたりQと似てるな
862808: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デフォルトの名無しさん:2011/05/16(月) 20:29:31.84
小数点記法って正規表現で表せるのか?
表せるのだったらNP完全だが、表せないんだったら
>>862みたいに自分で選ばせるしかないな
864デフォルトの名無しさん:2011/05/16(月) 20:46:50.65
>>863
Cの規格書ではBNFを使った文法を与えられているが、
たぶん正規表現でも書けると思う
865デフォルトの名無しさん:2011/05/16(月) 20:59:52.49
実はこの課題は
浮動小数点表現を題材に俺なんちゃって正規表現を実装して
パターンマッチングせよって課題ってことか
866デフォルトの名無しさん:2011/05/16(月) 21:04:10.86
>>864
ならexponent表現を使いますかって選択肢は不要なはずだね
867デフォルトの名無しさん:2011/05/16(月) 21:23:17.95
問題文の解釈で理系か文系かが分かれるなw
ガチガチの(ちょっと叩けば粉々に崩れる)プログラマ脳か、
頓知しか出来ない俺なんちゃって脳か
868デフォルトの名無しさん: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 [―{}@{}@{}-] デフォルトの名無しさん:2011/05/17(火) 00:40:50.56
GetPixel, SetPixelでfor文ぐるぐるで終わりだと思うが
870デフォルトの名無しさん:2011/05/17(火) 00:42:46.12
>>868
画像形式は?
あとライブラリの使用はどの程度可能だ?VC2008についてる物なら何でも使っていいか
(もちろん画像処理そのものは別として)
871デフォルトの名無しさん:2011/05/17(火) 00:45:24.81
JPEG
872868:2011/05/17(火) 01:00:43.17
>>869
GetPixel等を用いずにやってみました。
http://codepad.org/vduTwrli
めちゃくちゃだと思いますが、このような感じで作成していきたいと思います。

>>870
bmpです。
ライブラリについて特に指定はありませんでした。
873デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/17(火) 01:04:52.99
>>872
bmp のヘッダとかフォーマットとか全く知らないのか?
その辺りがむちゃくちゃ
875デフォルトの名無しさん:2011/05/17(火) 01:27:02.09
>>873
聞かなきゃなんともならん部分聞いてるだけじゃねーかwwww

分割してなにが解決するんだよ
876デフォルトの名無しさん:2011/05/17(火) 01:34:18.66
>>875
失礼。このスレにも流れと空気があってその関係の話ですた。
877 [―{}@{}@{}-] デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/17(火) 15:40:54.31
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
に対して最小二乗法により直線近似した場合
の傾きと定数項を求めるプログラミングを作成しなさい。
※二つの変数の相関係数を求めて出力しなさい。
883882の続きです。:2011/05/17(火) 16:17:13.47
[3]環境
[3,1] OS:恐らくWindows7
[3,2] コンパイラ名とバージョン:すいません、わかりません。
[3,3] 言語:C
[4]期限:2011年5月18日10時00分まで

コマンドプロンプトと秀丸を使っています。
よろしくお願いします。
884デフォルトの名無しさん: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デフォルトの名無しさん: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
886885:2011/05/17(火) 17:22:55.84
ちなみに参考にしたサイトは下記
ttp://www.ruche-home.net/
ttp://msdn.microsoft.com/en-us/library/dd183376(VS.85).aspx
887デフォルトの名無しさん:2011/05/17(火) 17:56:31.42
>>882>>883

http://codepad.org/VKAy4eAf

このプログラムは直線近似だけでなく多項式近似も出来るようになっている
直線近似だけなら実はガウスジョルダン消去法は不要でたすき掛け演算で十分だが
分かりにくいのでこのようにしといた

888デフォルトの名無しさん: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デフォルトの名無しさん:2011/05/17(火) 18:11:49.67
あたま悪いな
890デフォルトの名無しさん:2011/05/17(火) 18:19:09.06
>>887
ガウスジョルダン消去法は最小二乗法なのか?
891デフォルトの名無しさん:2011/05/17(火) 18:33:41.51
>>890
当然違う。
892デフォルトの名無しさん:2011/05/17(火) 18:40:20.50
>>890
曲線近似する時は連立一次方程式を解かなければならないだろ
いまはそれがxで終わっているからこんなおおげさな事はしなくていいのだが
つるかめ算をするとかえってプログラムが読みにくくなる
893デフォルトの名無しさん:2011/05/17(火) 18:49:47.36
クラメルの公式を使えばガウスジョルダン消去法は必要ない
元のプログラムはそうなっている
894882,883です。:2011/05/17(火) 20:00:25.71
>>882>>883です。
ホントにありがとうごさいます。

申し訳ないんですが、もう少し短くはなりませんか?

一応、学校で配られた二次元配列のプログラムを載せます。



895894の続きです。: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デフォルトの名無しさん:2011/05/17(火) 20:42:19.72
>>895
回帰分析を回帰直線専用に簡略化したけどこれでも長いかな?
これ以上短くするのは難しいかも・・・

codepadが重いのでideoneに貼らせてもらいました

http://ideone.com/pe3hT
897895の続きです。:2011/05/17(火) 21:11:53.66
こんな感じです。

また別の例に
double型のデータを格納し、配列名をa、大きさを3×5とした場合
→double a[3][5]

と書いてあります。ド素人で全然わかりませんが、
よろしくお願いいたします。
898デフォルトの名無しさん:2011/05/17(火) 21:18:10.73
わけがわからないよ
899デフォルトの名無しさん:2011/05/17(火) 21:27:54.18
>>895>>897
課題と全然関係ないじゃん
900デフォルトの名無しさん:2011/05/17(火) 22:54:37.33
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): aprioriを実装しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] Visual C++ 2010 Express edition

 [3.3] 言語: c
[4] 期限: 2011年 5月22日
[5] その他の制限:配列まででできるのならそこまででお願いします。
部分ごとにどういう意味があるのかをコメントもできればお願いしたいです。
901デフォルトの名無しさん:2011/05/17(火) 23:01:51.87
>>900
"apriori" がなにかよくわかりません。説明している URL とかありませんか?
902デフォルトの名無しさん:2011/05/17(火) 23:16:09.77
903デフォルトの名無しさん:2011/05/17(火) 23:36:02.57
コマンドを自作するにはどうすればいいですか?
例えばcatに似たmycatってコマンドを作りたい場合。
904デフォルトの名無しさん:2011/05/18(水) 00:33:38.16
>903 何が疑問なのか今ひとつ不明だが、、、。
#include <stdio.h>

#define LINE_SIZE (1024)

int main(int argc, char **argv)
{
FILE *pIn;
char buf[LINE_SIZE];

/* 引数チェック */
if (argc < 2) {
/* 引数指定がなければとりあえずなにもしない */
return -1;
}

pIn = fopen(argv[1], "r");

if (pIn == NULL) {
/* ファイルが開けなければ、とりあえずなにもしない */
return -1;
}

while (fgets(buf, LINE_SIZE, pIn) != NULL) {
/* 無加工で出力 */
printf("%s", buf);
}

fclose(pIn);

return 0;
}
905894:2011/05/18(水) 01:50:24.77
ありがとうございました!
906885:2011/05/18(水) 05:14:24.50
>>868
>>885の続き
ttp://ideone.com/G2SCk

・1bit画像に対応 ← new
・4bit画像に対応 ← new
これで画像すべて成功するはず


あと、なんかごめん、完全に自己満になった
907749:2011/05/18(水) 14:59:36.47
>>761さん有難うございました。
908デフォルトの名無しさん:2011/05/18(水) 17:12:57.77


[1] 授業単元:計算機プログラミング
[2] 問題文:ttp://www.dotup.org/uploda/www.dotup.org1648258.pdf.html
        リンク先の問題2
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: teraterm pro
 [3.3] 言語: C
[4] 期限: [2011年5月22日まで]
[5] その他の制限:数値はキーボードから入力する形でお願いします

よろしくお願いします
909デフォルトの名無しさん:2011/05/18(水) 17:17:59.02
>>908
 [3.2] コンパイラ名とバージョン: teraterm pro
まぁきっとgccだよね
910デフォルトの名無しさん:2011/05/18(水) 19:13:19.63
オリジナリティか・・・
911デフォルトの名無しさん:2011/05/18(水) 19:26:52.27
>>908
そこまでオリジナリティはないけど
ttp://ideone.com/wLAVv
912デフォルトの名無しさん:2011/05/18(水) 20:18:31.82
>>901
http://ibisforest.org/index.php?Apriori 
こことかもありますのでお願いします。
913デフォルトの名無しさん:2011/05/18(水) 20:18:47.95
この場合のオリジナリティとは「同級生のコピペで無い事」 JK
914908:2011/05/18(水) 20:25:45.13
>>911
ありがとうございます
恐縮ですが処理の流れも教えていただけますでしょうか?
915デフォルトの名無しさん:2011/05/18(水) 20:31:18.70
.>>914
WindowsならVisual C++ Express Editionインストールして
デバッグモードで1行ずつ処理を追っていけばはかどるぞ
916868:2011/05/18(水) 22:52:00.43
>>885
遅れましたが、ありがとうございました。
917デフォルトの名無しさん:2011/05/19(木) 02:00:05.28
清少納言のメルアド推測
[email protected]
918917:2011/05/19(木) 02:20:43.50
スレ違い誤爆デス
919884:2011/05/19(木) 08:53:22.38
すみません誰か>>884をお願いします。
追記。
List5-13のプログラムを機能別に完全に分けたプログラムを作成しなさい.
1 人数の入力
2 データの入力 tensu[]へのデータ入力
3 分布の計算 bunpu[11] の計算
4 分布の出力
920デフォルトの名無しさん:2011/05/19(木) 10:19:12.85
多分だれにも解けないよ
理由は言わないでおくが
921884:2011/05/19(木) 11:59:47.20
うp先消えてた…orz
すみません改めてお願いします。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org1651097.txt
(上記URL先)のプログラムを機能別に完全に分けたプログラムを作成しなさい。
1 人数の入力
2 データの入力 tensu[]へのデータ入力
3 分布の計算 bunpu[11] の計算
4 分布の出力
また、どの点に着目して改良したかを述べなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual C++ 2008 Express edition
 [3.3] 言語: C++
[4] 期限: 2011年5月19日(水)16:00
[5] その他の制限: 配列の章までの範囲でお願いします。
922デフォルトの名無しさん:2011/05/19(木) 12:30:39.71
>>921
[5]がお前にしか分からないから無理だな
923884,921:2011/05/19(木) 12:46:52.93
>>922
ああ、そうか…すみません
特に指定してません
924デフォルトの名無しさん:2011/05/19(木) 13:02:01.11
完全に分けるって事は関数使用するって事でいいのかな?
関数ならった?
925>>884,921:2011/05/19(木) 13:09:17.22
関数習ってないです…ていうか使ってダメなのかもわかんないです
課題出された授業で別のプログラムを機能別にこういう風(↓)に分けたので、
この通りにしたらいいと思うんですが全く分かってないんで…
http://www.dotup.org/uploda/www.dotup.org1651215.c

http://www.dotup.org/uploda/www.dotup.org1651216.c
926デフォルトの名無しさん:2011/05/19(木) 13:42:45.00
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):午前四時から正午までは Good Morning!、正午から午後八時まではGood Afternoon!、
午後八時から午前四時までは Good Evening!と表示するプログラムを書け。ただし、境界の時刻は前の時間帯に含まれる。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限:2011年5月22日24:00まで
[5] その他の制限:特になし

お願いします
927デフォルトの名無しさん:2011/05/19(木) 14:09:58.22
928926:2011/05/19(木) 14:18:41.54
>>927
迅速な対応恐れ入ります。
929921:2011/05/19(木) 15:18:04.98
どなたかやってくださってるんでしょうか…?
説明不足で分かんないことがあったら言ってください
930デフォルトの名無しさん:2011/05/19(木) 15:24:17.23
頻繁な催促は自分の首をしめるだけだぞ
すでに手遅れかもしれないが
931921:2011/05/19(木) 15:29:48.40
すみません…
932デフォルトの名無しさん:2011/05/19(木) 15:37:41.84
>>925
こういう事か?
http://codepad.org/j3ptnJOQ
":"がなぜか消えるな。

> また、どの点に着目して改良したかを述べなさい。
同時に行っていた点数の入力と分布の計算を分離した。
933921:2011/05/19(木) 15:48:14.50
>>932
ありがとうございます。
「:」が消えるのは実行結果でのことでしょうか?自分のにはちゃんと表示されますけれども…。
934デフォルトの名無しさん:2011/05/19(木) 15:55:11.85
オレのブラウザの問題かも。表示されてるなら気にスンナ。
935デフォルトの名無しさん:2011/05/19(木) 17:15:23.50
[1] プログラミング実習
[2]
長さが32の0と1の列
se7e6e5…e1e0d1d2…d22d23
を入力してこのビット列の表す実数値(実数表現の仕方はIEEE規格754に従うものと仮定する)

(-1)^s*(1+M)*2^E if-127<E<128
(-1)^s*M*2^(E+1) ifE=-127
Inf ifE=128,M=0
NaN ifE=128,M≠0

を出力するCプログラムを作成せよ。またこのプログラムの場合、使用した計算機の実数表現方式がIEEE規格754に従っているのなら、
計算結果として得られた実数値はコンピュータ内部では入力したビット列で表されているはずであるが、これをGDBのxコマンドを用いて調べてみよ。

[3] 環境 unix 言語 C
[4] 2011 5.20 16:00
936908:2011/05/19(木) 17:44:50.12
http://codepad.org/M66nV3HP
自分なりにやってみたところ、リンク先のような形にまでは出来ましたが
関数を用いて平均を求めるのとファイルに出力するのがどうしてもわかりませんでした
リンク先のものに付け足す形で平均の関数とファイルへの出力をお願いします
937デフォルトの名無しさん:2011/05/19(木) 21:23:15.40
938デフォルトの名無しさん:2011/05/19(木) 21:29:26.26
>>935
http://codepad.org/p1VWkOGH

> 計算結果として得られた実数値はコンピュータ内部では入力したビット列で表されているはずであるが、これをGDBのxコマンドを用いて調べてみよ。
(gdb) break 47
Breakpoint 1 at 0x400928: file 935.c, line 47.
(gdb) run
Starting program: /home/u/work/935
input binary data? 00000000010000000000000000000000 (1)
00000000010000000000000000000000 = 5.877472e-39

Breakpoint 1, ieee754_bin32 (b=4194304) at 935.c:47
(gdb) x/t &frac
0x7fffffffd99c: 00000000010000000000000000000000 (1)と一致
(gdb) c
Continuing.
input binary data? 00111111100000000000000000000000 (2)
00111111100000000000000000000000 = 1.000000e+00

Breakpoint 1, ieee754_bin32 (b=1065353216) at 935.c:47
(gdb) x/t &frac
0x7fffffffd99c: 00111111100000000000000000000000 (2)と一致
(gdb)
939デフォルトの名無しさん:2011/05/19(木) 21:48:11.51
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力された3つの整数を引数として受け取り、その中で最も小さい値を返す関数を定義し、以下の処理をするプログラムを作りなさい。
ただし、値の入出力はmain関数内で行うようにすること
(↓から実行中の画面の一例。)キーボード入力は、整数1:〜整数3:まで。

3つの整数を入力してください。
整数1:67
整数2:34
整数3:45
最も小さい値は34です。

[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン: VS2007
 [3.3] 言語:Visual C++ 2008 Express edition
[4] 期限: 2011年 5月20日 金曜日 午後1時まで
[5] その他の制限
Vmain( ) {最小値を探す}
return 結果 をmain へ?
main関数内で行う。

全然分からなくて、お力を借りたいです。
よろしくお願いします。
940デフォルトの名無しさん:2011/05/19(木) 21:49:33.68
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力された配列の要素数と各要素を引数として受け取り、要素の順番を逆に並び替える関数を定義し、以下の処理をするプログラムを作りなさい。ただし、値の入出力はmain関数内で行うようにすること
(↓から実行中の画面の一例。)キーボード入力は、要素数を入力してくださいからva[0]〜va[4]までの変換前の手前まで。
要素数を入力してください(10個まで):5
va[0]=32
va[1]=65
va[2]=34
va[3]=45
va[4]=12
変換前
va[0]=32
va[1]=65
va[2]=34
va[3]=45
va[4]=12
変換後
va[0]=12
va[1]=45
va[2]=34
va[3]=65
va[4]=32
整数1:67
整数2:34
整数3:45
最も小さい値は34です。
[5] その他の制限:入出力関数を用いて解答すること。ごめんなさい。全然わからず困ってます・・(´・ω・`)お願いします。
941デフォルトの名無しさん:2011/05/19(木) 21:55:11.39
942デフォルトの名無しさん:2011/05/19(木) 21:55:47.45
>939
[5]制限の意味がさっぱり分らないです。
エスパーすると、最小値を探す関数を作成して、mainではそれを呼ぶこと、みたいな感じかな。
943デフォルトの名無しさん:2011/05/19(木) 22:04:19.41
関数を定義しろって問題文に書いてあるのが読めない人がいるようです
944デフォルトの名無しさん:2011/05/19(木) 22:05:27.93
>>940
http://codepad.org/U1Ydaxq7

>整数1:67
>整数2:34
>整数3:45
>最も小さい値は34です。
???
945941:2011/05/19(木) 22:09:18.83
946デフォルトの名無しさん:2011/05/19(木) 22:09:32.87
>>885
http://www1.axfc.net/uploader/Sc/so/235704.zip
の結果を見て笑って欲しい
dlキーワードはbitmap
947デフォルトの名無しさん:2011/05/19(木) 22:09:53.34
>939

ttp://codepad.org/y8WM3xIq

>943
>関数を定義しろって問題文に書いてある
いやそりゃ読めるけど、[5]とつながらないでしょ、って話だよ。

948デフォルトの名無しさん:2011/05/19(木) 22:12:10.93
>>939
Vmainは関数名?

#include <stdio.h>

int Vmain(int a, int b, int c)
{
if(a < b) {
if(a < c) return a;
return c;
}
if(b < c) return b;
return c;
}

int main(void)
{
int a, b, c;

printf("3つの整数を入力してください。\n");
printf("整数1:");
scanf("%d", &a);
printf("整数2:");
scanf("%d", &b);
printf("整数3:");
scanf("%d", &c);

printf("最も小さい値は%dです。\n", Vmain(a, b, c));

return 0;
}
949デフォルトの名無しさん:2011/05/19(木) 22:39:36.83
[1] 授業単元: Cプログラミング演習
[2] 問題文:文字列ABCDを変数に代入し、ポインタを用いて次のように表示するプログラムを作成せよ

ABCD
BCD
CD
D


[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C++
[4] 期限: 5月20日12:00まで
[5] その他の制限:ありません
950885:2011/05/19(木) 22:42:49.95
>>946
Oh…
951939:2011/05/19(木) 22:45:40.73
>>939>>940教えてくださった方、ありがとうございます
>>948さんみたいなプログラムは構造とかscanfとかが授業内容的にもあってたので嬉しかったです(・ω・)

>>942>>944>>947
最後の整数1:とかの所は消し忘れミスです・・
制限の意味は、
↓整数1:67  }
main ↓整数2:34  }Vmain( ){最小値を探す}
↑ ↓整数3:45  }
  ↑ 
return 結果

の図があって、それを文章にしたものです。わかりにくくてごめんなさい・・
>>944さんのプログラムをscanfに直せるかちょっとやってみます。
規制中で、代行の方にお願いしてるのでレス遅れちゃうかもです(´・ω・`)
952デフォルトの名無しさん:2011/05/19(木) 22:48:03.05
>>949
○ >[1] 授業単元: Cプログラミング演習
× >[3.3] 言語: C++
???

http://codepad.org/XYAnHJkH
953デフォルトの名無しさん:2011/05/19(木) 23:05:17.71
>949 

#include<stdio.h>

int main(void)
{
char a[] = "ABCD";
char *p;

for (p = a; *p != '\0'; p++) {
printf("%s\n", p);
}

return 0;
}
954デフォルトの名無しさん:2011/05/19(木) 23:09:57.61
>>952
とってもありがとうございます。

言語のところも、テンプレート通りに作ったと思うのですが…。
955デフォルトの名無しさん:2011/05/19(木) 23:10:38.02
>>953さんも、ありがとうございます。
956952:2011/05/19(木) 23:12:45.23
>>954
C と C++ はべつですよ。C で書きました。
957デフォルトの名無しさん:2011/05/19(木) 23:17:27.12
最後に /* end */ と入れる癖は ◆QZaw55cn4c 特有の物だな
C++も分からない癖に
「Cで書きました」じゃなくて「C++が分かりません」だろ
958940:2011/05/19(木) 23:26:11.18
教えていただいてとても嬉しいのですが、
>>944さんのを実行したらエラーが出てしまいます。
>>940
整数1:67
整数2:34
整数3:45
を消した問題をもう一度教えて頂けないでしょうか(´・ω・`)
できれば>>947さんや>>948さんみたいな形式だと嬉しいです。
ごめんなさい。
959940:2011/05/19(木) 23:28:37.14
教えていただいてとても嬉しいのですが、
>>944さんのを実行したらエラーが出てしまいます。
>>940
整数1:67
整数2:34
整数3:45
を消した問題をもう一度教えて頂けないでしょうか(´・ω・`)
できれば>>947さんや>>948さんみたいな形式だと嬉しいです。
ごめんなさい。

[3.1] OS:windows7
[3.2] コンパイラ名とバージョン: VS2007
[3.3] 言語:Visual C++ 2008 Express edition
[5] その他の制限
入出力関数を用いて解答すること。C++で。

ファイル→新規作成→Win32コンソールアプリケーション→Win32アプリケーションウィザード→空のプロジェクトをチェック→完了
ソリューションエクスプローラ内のソースファイルの上で右クリック→追加→新しい項目→c++ファイル
960デフォルトの名無しさん:2011/05/19(木) 23:41:53.72
>>940
#include <stdio.h>

void rev(int *va, int n) {
int i, temp;
for(i = 0; i < --n; i++) {
temp = va[i];
va[i] = va[n];
va[n] = temp; }}

int main(void)
{
int i, n, va[10];

printf("要素数を入力してください(10個まで):");
scanf("%d", &n);
for(i = 0; i < n; i++) {
printf("va[%d] = ", i);
scanf("%d", va + i); }

printf("変換前\n");
for(i = 0; i < n; i++) printf("va[%d] = %d\n", i, va[i]);

rev(va, n);

printf("変換後\n");
for(i = 0; i < n; i++) printf("va[%d] = %d\n", i, va[i]);

return 0;
}
961デフォルトの名無しさん:2011/05/19(木) 23:47:11.61
962デフォルトの名無しさん:2011/05/19(木) 23:52:29.33
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  while分を用いて、金利が1%の銀行に10000円を預金した場合、
  預金額(deposit)が15000円になるのに何年(year)かかるかを表示するプログラムを作成せよ

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2011/5/31

宜しくお願いします
963デフォルトの名無しさん:2011/05/19(木) 23:54:13.32
> C++ http://ideone.com/UaHnB
面白いw
964デフォルトの名無しさん:2011/05/20(金) 00:04:18.82
すみませんもう1問お願いします;

[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
for文の二重ループを用いて、下の実行結果のように0〜9までの数字を
  0から1個ずつ増やしながら10行表示するプログラムを作成せよ
  
  0
  01
  012
  0123
  01234
  012345
  0123456
  01234567
  012345678
  0123456789

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2011/5/31
965デフォルトの名無しさん:2011/05/20(金) 00:22:57.32
>>961
Q先生でいらっしゃいますか?
C++でC配列って、おじさんどうなの
966940:2011/05/20(金) 00:34:19.43
>>960>>961
ありがとうございます!
>>960さんのはわかりやすかったです(・ω・)
967デフォルトの名無しさん:2011/05/20(金) 00:39:11.19
>>964
#include <stdio.h>

int main(void)
{
int i, j;

for(i = 0; i < 10; i++) {
for(j = 0; j <= i; j++) printf("%d", j);
putchar('\n');
}

return 0;
}
968デフォルトの名無しさん:2011/05/20(金) 00:40:00.40
C++ならvectorとalgotithmのreverseもしくはreverse_iterator位使おうな◆QZaw55cn4c

あ、C++が分からない硬い頭では無理か
969デフォルトの名無しさん:2011/05/20(金) 00:41:06.50
>要素数を入力してください(10個まで):5
これを見て配列の要素数を1024にするバカに何を言ってもムダだろう
970デフォルトの名無しさん:2011/05/20(金) 00:42:13.21
それから

>[5] その他の制限:入出力関数を用いて解答すること。

と書いてあるのですが、C++で入出力関数が使われてないように見えますけど
971デフォルトの名無しさん:2011/05/20(金) 00:43:19.06
コンテナである必要がなければ配列でもいいんじゃない
要素数1024はどうかと思うけど
972デフォルトの名無しさん:2011/05/20(金) 00:44:25.05
C++「らしい」プログラムを書こうよ
それから return 0; はmain()では不要ですよ
973デフォルトの名無しさん:2011/05/20(金) 00:46:48.05
>>972
頭の悪さがにじみ出てるな
974デフォルトの名無しさん:2011/05/20(金) 00:47:19.11
>>972
1行目は分かるが
2行目はナンクセかと
975デフォルトの名無しさん:2011/05/20(金) 00:50:26.44
>>974
Qか?悔しいのか?std::cinとstd::coutはクラスだからcin.operator<<() と cout..operator>>() を
使っているわけだから入出力関数は使っていると言えるが、出来たら別関数にしてみなw

出来るか?

vector使えよ
976デフォルトの名無しさん:2011/05/20(金) 00:53:28.27
逆だ逆

cin.operator>>() と cout.operator<<()

しかしこれはメンバ関数だから、題意は多分自分で入出力用関数を作れという事だと思う
977デフォルトの名無しさん:2011/05/20(金) 00:53:32.32
>>962
#include <stdio.h>

int main(){
int money = 10000;
int counter = 0;

while (money <= 15000)
{
money *= 1.01;
counter++;
}

printf("year = %d\n", counter);
return 0;

}
978デフォルトの名無しさん:2011/05/20(金) 00:59:44.73
>>975
ごめん、他人

int main() {return 0;}

int main() {}
とする事で得られるものを
名無しにも分かるように説明してみ
979885:2011/05/20(金) 01:04:05.08
>>946
直った、.>>906から、
390行〜455行(2倍にコピーする処理)
を修正した。

ttp://ideone.com/LSI76
980デフォルトの名無しさん:2011/05/20(金) 01:06:06.75
>>978
タイプ量の減少
981デフォルトの名無しさん:2011/05/20(金) 01:14:47.35
>>980
C++でゴルフ(笑)って事なら分かるけどそれはないわ
テンプレや補完使ってないの?
982デフォルトの名無しさん:2011/05/20(金) 01:16:52.99
>>981
確かにタイプ量は減少してると思うが?
>>978に対して「得られるもの」をちゃんと答えたぞ
文句あんのか
983デフォルトの名無しさん:2011/05/20(金) 01:17:34.96
>>982
テンプレや補完使ってないの?
984デフォルトの名無しさん:2011/05/20(金) 01:20:04.90
>>983
そんな事は最初聞いてなかったろ
後出しジャンケンは無視する
985デフォルトの名無しさん:2011/05/20(金) 01:28:41.55
× C++でゴルフ(笑)って事なら分かるけどそれはないわ
○ C++でゴルフ(笑)って事なら分かるけどそれはないわな

>>984
>> タイプ量の減少
> テンプレや補完使ってないの?
>> 確かにタイプ量は減少してると思うが?
> テンプレや補完使ってないの?
>> 後出しジャンケンは無視する

時系列が・・・
986デフォルトの名無しさん:2011/05/20(金) 01:30:44.24
>>985
>>981の時点で既に後出しジャンケン
「得られるもの」だけ答えればそれでいい
987デフォルトの名無しさん:2011/05/20(金) 01:51:25.38
>>986
ホンマモノですか
なんだか、ごめんなさい
988デフォルトの名無しさん:2011/05/20(金) 02:20:44.90
◆QZaw55cn4cは糞だよなぁ
989 ◆XEE2zLj0dE :2011/05/20(金) 02:43:57.66
>>959
http://codepad.org/3PDTfbjY
乗り遅れた感が半端ない
990 ◆XEE2zLj0dE :2011/05/20(金) 02:50:35.86
あ、、、reverseの引数はポインタにすべきだった。
恥を忍んで修正版を…スレ汚しごめんなさい。
http://codepad.org/GWNhhutb
991デフォルトの名無しさん:2011/05/20(金) 03:39:47.82
>std::vector<int>(va->rbegin(), va->rend()).swap(*va);

これが気に入った
992936:2011/05/20(金) 09:57:22.23
問題が消えていたようなので……
ttp://www.dotup.org/uploda/www.dotup.org1652809.pdf.html
問題2です
993デフォルトの名無しさん:2011/05/20(金) 10:38:38.60
>>992
http://ideone.com/UYJ8c
平均を求める場所はまとめて関数にしたほうがいいんだろうか、平均を求める関数でよかったんだろうか
あと要素の先頭のポインタと個数渡すほうが普通だよなと作ってから思った(むしろこれ規格に厳密に考えると問題あるよね)
994デフォルトの名無しさん:2011/05/20(金) 10:44:00.87
>>993
ごめん間違えました
これは忘れてください
995デフォルトの名無しさん:2011/05/20(金) 11:33:41.62
うめ
996デフォルトの名無しさん:2011/05/20(金) 11:33:51.57
うめ
997デフォルトの名無しさん:2011/05/20(金) 11:34:07.56
うめ
998デフォルトの名無しさん:2011/05/20(金) 11:46:53.26
産め
999デフォルトの名無しさん:2011/05/20(金) 11:47:35.52
卯女
1000デフォルトの名無しさん:2011/05/20(金) 11:48:35.03
誰か次スレお願いシマウマ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。