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


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

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



1 名前:デフォルトの名無しさん [2007/09/21(金) 08:46:37 BE:340816166-2BP(12)]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 95代目
pc11.2ch.net/test/read.cgi/tech/1187944110/

71 名前:29 mailto:sage [2007/09/22(土) 18:08:29 ]
29です。

>>30 >>31
返信が遅くなってすみません。
一応こんな感じで書いて動作はしました。

#include<stdio.h>

int Factorial(int n);
int main(void)
{
int n;
printf("自然数を入力して下さい:");
scanf("%d",&n);
printf("%dの階乗は,%dです。\n",n,Factorial(n));

return 0;
}

int Factorial(int n)
{
printf("関数Factorial(%d)にはいりました。\n",n);
if(n>0)
{
return n*Factorial(n-1);
}
else
{
return 1;
}
}


72 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:09:05 ]
>>71
良かったね。さようなら。

73 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:10:11 ]
>>71
それで十分な気もするが

74 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:16:05 ]
>>35
if (sa>=11 || sa<=-11)


これでOK

75 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:18:24 ]
if (sa>=11 || sa<=-11)
printf("それらの差は%dで11以上です。",sa);
else
printf("それらの差は%dで10以下です。",sa);

76 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:21:56 ]
しつこいな
そんなにバカな答え書いてバカにされたのが悔しかったのか

77 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:23:14 ]
>>75
「それらの差」がマイナスの表示になってもいいの?

78 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:23:16 ]
絶対値?

79 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:23:30 ]
しつこさに思わず噴いた



80 名前:29 mailto:sage [2007/09/22(土) 18:27:04 ]
71です。

これ以外に関数Factorial(n)から出ます:Factorial(n)=再帰の途中経過
見たいなのを表示しなければならないんですよ・・・

どこに入れたら表示させらるのか分からないので教えてもらえませんか?

よろしくお願いします

81 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:28:13 ]
しつこいぞ。スレ違い。


82 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:29:41 ]
どういう表示をさせたいの?

83 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:29:46 ]
>>80
int Factorial(int n)
{
int ret;
printf("関数Factorial(%d)にはいりました。\n",n);
ret = n > 0 ? Factorial(n-1) * n : 1;
printf("関数Factorial(%d)は%dを返して終了します\n",n, ret);
return ret;
}
こんな感じでどうよ?

84 名前:29 mailto:sage [2007/09/22(土) 18:50:30 ]
>>83
ありがとうございます。
おかげさまで分かりました。
ホントにありがとうございました。

>>82
>>83さんのおかげで分かりました。

>>81
しつこくてすみませんでした。

何度もしつこく聞いてしまったのに親切に返信してくれた
方々ありがとうございました。

85 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 19:19:42 ]
>>77
どういうこと?

86 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 19:31:10 ]
>>85
sa=-11 のとき
「それらの差は-11で11以上です。」
というおかしな表示になるよ。

87 名前:>>16 mailto:sage [2007/09/22(土) 20:10:26 ]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void){
    double reg = 0, mem = 0;
    char buf[128] = {0}, *p;
    while(1){
        scanf("%127s", buf);
        if(!strcmp(buf, "end:")) break;
        else if(!strcmp(buf, "M+")) mem += reg;
        else if(!strcmp(buf, "M-")) mem -= reg;
        else if(!strcmp(buf, "MR")) reg = mem;
        else if(!strcmp(buf, "RC")) reg = 0;
        else if(!strcmp(buf, "MC")) mem = 0;
        else if(isalpha(*buf)) fprintf(stderr, "error\n");
        else{
            p = buf;
            reg += strtod(p, &p);
            while(*p != '=' && *p != '\0')
                switch(*p++){
                case '+' : reg += strtod(p, &p); break;
                case '-' : reg -= strtod(p, &p); break;
                case '*' : reg *= strtod(p, &p); break;
                case '/' : reg /= strtod(p, &p); break;
                default : reg = strtod(p, &p); break;
                }
        }
        printf("reg = %g \t mem = %g\n", reg, mem);
    }
    return 0;
}

88 名前:87 mailto:sage [2007/09/22(土) 20:24:14 ]
>>87は無しで……

89 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 20:34:32 ]
残念ながら無しにはできない。このスレにはずっと残るし
ログを残している人はいつでもそのレスを見ることが出来る。
つまり、有るってことで。



90 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 20:50:33 ]
>>16 他の人に期待
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4950.txt

91 名前:16 [2007/09/23(日) 12:44:46 ]
>>90
リンク先を利用させてもらったのですが、どうも計算が上手くいきません。
たとえば「5+5=」と打ち込んで、「end:」で終了させても答えは出ず、
「reg=-1 mem=0」といった感じにしか表示されません。
おそらくレジスタが−1でメモリが0であることを表していると思うのですが、
肝心の計算結果がわかりません。
このプログラムをどのように修正すればよいのでしょうか?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4950.txt

92 名前:デフォルトの名無しさん [2007/09/23(日) 13:21:49 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク):
読み込んだ非負の整数血を逆順に表示。
[3] 環境
 [3.1] OS: Win Bcc32 C
[4] 期限:[無期限]
[5] その他の制限: ないです。

93 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 13:36:41 ]
血...

94 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 14:26:07 ]
>>91
>90のソースをコンパイルしたら一箇所だけエラーが出たので、それを修正してコンパイルしてみた。
--
$ ./a.out
5+5=
reg = 10 mem = 0
end:

$
--
普通に動いているようだが。

95 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 14:28:16 ]
>>91
なんかわかんなくなってきたから、実行例をいくつかください

96 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:03:31 ]
>>92
#include <stdio.h>
#define n 10
int main(int c,char**v){
int i,a[n];
if(c==1)for(i=0;i<n;i++)scanf("%d",&a[i]);
c!=n+1?printf("%d ",main(c+1,c==1?(char**)a:v)):0;
return c==1?0:*((int*)v+c-2);
}

97 名前:デフォルトの名無しさん [2007/09/23(日) 15:06:32 ]
>>92
スタックの勉強でもしてるのかな?

#include <stdio.h>
#define S_MAX 500

int stack[S_MAX];
int top=-1;

void push(int x){
stack[++top] = x;
}
int pop(){
return stack[top--];
}
int main(){
int i=1;
while(i!=0){
printf("非負値の入力(0で終了):");
scanf("%d", &i);
if(i<0){
printf("非負値じゃないとダメです\n");
}else if(i!=0){
push(i);
}
}
printf("--- 結果 ---\n");
while(top!=-1){
printf("%d\n", pop());
}
return 0;
}

98 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:07:52 ]
かぶった・・・orz

99 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:09:26 ]
>>97
do whileを勉強しています。



100 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:11:59 ]
#include <stdio.h>
int main(void)
{
int num;

do {
printf("非負の整数:");
scanf("%d",&num);

if (num<0)
puts("その数は負の数です。");
} while (num<0);

printf("その数を逆から読むと、");

do {
printf("%d",num%10);
num=num/10;
} while (num>0);
puts("です。");
return (0);
}


101 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:12:12 ]
do while か。そのくらいだったら、逆にスタック使うと不自然だなw
>>96のforをdowhileに直した方がいいね

102 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:14:21 ]
>>100
ちょwwwそういう意味の問題だったのかwww

103 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:16:52 ]
ちょwwwちょwww

104 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:17:00 ]
ちょwwwだったのかwww

105 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:18:30 ]
ちょwwwが多すぎワロタwww

106 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 15:20:04 ]
>>16
電卓っぽく。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4952.txt

実行例書いてくれれば、あとで直す。

107 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 16:22:05 ]
>>106
1+1=
と打っても真っ暗だよ。

108 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 16:31:21 ]
>と打っても真っ暗だよ。
そりゃあんたの「お先」だろ。

109 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:00:54 ]
[1] 授業単元:GUIプログラミング
[2] 問題文(含コード&リンク):
エディットコントロールにアドレスを入れてボタンを押すと、
そのページを表示するプログラムを作れ。
[3] 環境
 [3.1] OS: WinXP
 [3.2] Borland C++ 5.5
 [3.3] C言語
[4] 期限:9月25日まで
[5] その他の制限: 要は超簡易ブラウザです。
オリジナリティをつけろとの事なので、表示しているページに何か変化があった場合、
(例えばリンクの移動だとか、ボタンクリックだとか、フォームに入力だとか)、
エディットコントロールに変化がありましたって表示するような感じの機能をつけてもらえると幸いです。



110 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:03:15 ]
>>109
どこの大学?

111 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:05:45 ]
大学というか専門学校。特定されるとあれなので・・・。

112 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:12:25 ]
>>109
GUI とネットワーク接続に関するライブラリは何を使ってよいの?

113 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:17:21 ]
>>112
特に指定はないです。むしろ大事なのはUIなんです。
使用者に使いやすい設計を心がける事って言われたんですが・・・。
それにしても1から作れって鬼杉。ある程度の機能もったブラウザをいじれって言うならまだしも。
で、あたふたしてると期限が近づいてきて俺涙目みたいな・・・

114 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:21:24 ]
俺涙目みたいな・・・

115 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:22:01 ]
>>113
有料のライブラリとか使ったらあんたが困るでしょ?

講義で過去に作ったプログラムなどがあったらそれを
アップしてもらうのが話が早くて楽なんだけどな。

116 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:22:44 ]
そんなこと言ったって、俺涙目みたいな・・・

117 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:23:31 ]
やっぱり俺涙目みたいな・・・

118 名前:デフォルトの名無しさん [2007/09/23(日) 18:26:37 ]
どうしても俺涙目みたいな・・・

119 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:27:47 ]
お前ら、俺涙目なのに、いじんな!



120 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:27:55 ]
っていうか、涙目みたいな

121 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:30:06 ]
>>115
なるほど、有料は確かに困ります。
講義で用意されたものは何もないのですが・・・。

一応自分でも色々と調べてみたのですが、IEコンポーネントを使うのが楽そうな感じでしたね。
ただ、VC++とかばかりでなかなか。Borlandじゃコンパイル出来なかったりしてもうワケワカラン状態です。
コンパイラはBorlandと書きましたが、実はこれは指定されてるわけではないです。学校のパソコンにはVisual Studio .netが
入ってますが、家にはBorlandを入れてます。さすがに有料はキツイって事で・・・。でも家でコーディングできないと不便なのでBorland。

122 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:32:01 ]
涙目みたいな・・・ってこんなにレスがつくとは思わなかった・・・
精神的な話だから、実際には泣いてないんだぜ。

123 名前:デフォルトの名無しさん [2007/09/23(日) 18:32:04 ]
もうワケワカラン状態で、さすがに有料はキツイって事で・・・俺涙目みたいな・・・

124 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:32:18 ]
VC++EEでも入れればいいじゃん

125 名前:109 mailto:sage [2007/09/23(日) 18:34:54 ]
>>124
一つのコンパイラで全部やろうって考え自体おかしいんですかね?
ノートなのであまり重たいのは入れたくないなと思ってBorlandにしてみました。
その後Turbo C++入れて、一気に重くなってげんなりしてます。

というか、コンパイラの違いってなんなんですか・・・どれがいいとかあるんですか?って質問はスレ違いですね

126 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:35:26 ]
ぐだぐだ質問してんじゃねえよ。

127 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:35:57 ]
>>125
スレ違いって分かってるんだったら、書き込むなよ。

128 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:36:06 ]
っていうか、俺涙目みたいな・・・

129 名前:109 mailto:sage [2007/09/23(日) 18:36:51 ]
では黙って片付くのを待ちます。。。
涙目です。



130 名前:デフォルトの名無しさん [2007/09/23(日) 18:36:55 ]
>>122
こいつアホだ。実際に泣いてるかどうかではなく、
そんなことを書き込むことを皆、からかってるのに。


131 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:48:08 ]
>>129
> そのページを表示する
って、一般的なサイト全て?
単純なボタンやフォーム程度なら自分でHTML解析してできるだろうけど、
そうじゃないならIEコンポやGecko使うしかないと思うよ

132 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:49:39 ]
せめて環境を固定してくれないと着手すらできんな。

133 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:02:33 ]
VCEEでいいじゃん
MFC使えないのかな

134 名前:109 mailto:sage [2007/09/23(日) 19:27:49 ]
すみません、飯を食べてました。

>>131-133
オリジナリティはもう少し練りたいと思います。ので、最低限の機能を持ったブラウザの実装をお願いします。
その後のUIやオリジナル機能は自分で頑張ってみます。とはいえ、時間はあまり残ってないのですが・・・。
IEコンポーネント使用で、コンパイラはBorlandC++5.5で出来る範囲でお願いします。
有料なものを使わなければ特に制限はないです。やりやすい形でお願いします。

もしBorlandじゃどうしてもダメというなら、私がVCを入れます。

135 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:29:00 ]
ちまちま、後だしするなよ。
最初にまとめて書け。

136 名前:109 mailto:sage [2007/09/23(日) 19:32:48 ]
申し訳ないです。
>>134でお願いします。

137 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:35:02 ]
最初から、依頼しなおしたほうがいいんじゃないか?

138 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:38:13 ]
>>109
最初からやり直せ。

139 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:38:24 ]
っていうか俺涙目・・・



140 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:38:45 ]
>>134
VC入れて、IEコンポでぐぐってサンプル拾ってコンパイル。

ここまではできるだろう。

141 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:40:07 ]
とりあえず依頼しなおします。

[1] 授業単元:GUIプログラミング
[2] 問題文(含コード&リンク):
エディットコントロールにアドレスを入れてボタンを押すと、
そのページを表示するプログラムを作れ。
[3] 環境
 [3.1] OS: WinXP
 [3.2] Borland C++ 5.5
 [3.3] C言語
[4] 期限:9月25日まで
[5] その他の制限: IEコンポーネントを使用。有料のものは使用しない事。

142 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:44:00 ]
>>140
VC++でIEコンポーネントのサンプルを置いてる良さそうなサイトはGoogleのトップに出てきたのですが、
Borlandだとインクルードファイルがなくて、コンパイル通らないですね。VC入れろと言われたら終わりですけど。
むしろそっちの方が幸せになれるのかな・・・

143 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:47:09 ]
>>142
依頼しなおしたのなら、黙ってろ。

144 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 19:50:25 ]
もうワケワカラン状態で、さすがに有料はキツイって事で・・・俺涙目みたいな・・・むしろそっちの方が幸せになれるのかな・・・

145 名前:16 [2007/09/23(日) 19:58:52 ]
>>106
1+1=
2 ←(計算毎に答えは出る)
3+3=
6
M+ ←(直前の計算結果がメモリに。この場合6)
MR+1=
7
end:(計算終了)
といった具合がベストだと思うのですが。
(問題には書いていなかったので、質問発言時に書けませんでした。
これも先生が望んでいる解答結果とはわかりませんが…)
度々申し訳ないのですが、よろしくお願いします。

146 名前:デフォルトの名無しさん [2007/09/23(日) 20:16:02 ]
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク):
キーボードからn+m,n-m,n*m,n/mを入力し、演算結果を出力せよ。
結果出力後は「再入力:」と出力し、再度計算できるように
ループさせる。
「off:」と入力することで計算を終了させる。

演算結果例:
 5+6
 11
 再入力:
 6*7
 42
 再入力:
 off:
 (計算終了)
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C言語)
[4] 期限: [2007年9月23日まで]
[5] その他の制限:特になし


147 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 20:19:36 ]
>>146
その形式以外の入力はないと仮定していいのか?

148 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 21:04:40 ]
>>146
>>16と共同で頑張れ

149 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 21:18:50 ]
みたところ、一桁の演算だけど、それだけいいのか?



150 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 22:02:41 ]
>>145
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4954.txt

151 名前:150 mailto:sage [2007/09/23(日) 22:06:13 ]
多分、先生が求めるのは>>106だけどな

152 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 22:11:32 ]
>>130
みんなかどうかは怪しいけどなw

153 名前:146 [2007/09/23(日) 23:19:02 ]
>>147
そうです。命令はn+m,n-m,n*m,n/m4つのみです。
>>149
桁数は指定はありませんでした。
先ほど書き忘れてしまったのですが、「n,mは実数」
という条件がありました。

154 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 23:25:01 ]
strtod使えば大した問題じゃない

155 名前: ◆hwUQ/UOPMQ mailto:sage [2007/09/23(日) 23:58:37 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク): クイックソートのプログラムを作成しなさい
・ソート対象は文字列配列
・引数でソート対象、ソート後の配列をしていする
[3] 環境
 [3.1] OS: XP
 [3.2] VC++ 2008
 [3.3] 言語: C
[4] 期限: なるべく早めに
[5] その他の制限: ソート以外の標準関数は使ってもよい

もう大方は作ってみたんですが、途中でエラーで終了してしまいます
協力お願いします
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
↑にうpしました。クイックソートと書いてるやつです

156 名前:16 [2007/09/24(月) 02:50:08 ]
>>106
>>150

ありがとうございます。助かりました。

157 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 06:32:53 ]
>>155
それなりに努力の跡は見えるんだが、なんとも……。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4956.txt

それにしてもVC2008か…ちょっと欲しい。orcasはいつ出るのかなぁ。


158 名前: ◆hwUQ/UOPMQ mailto:sage [2007/09/24(月) 08:17:35 ]
>>157
ありがとうございます!
できたら悪い点が沢山あったと思うので教えて欲しいです

あと、VC++2008はベータ版ならダウンロードできますよ

159 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:02:55 ]
>>157
比較関数が間違ってる。文字列の第一文字目だけで比較するそうな。

>>158
157じゃないけど

1. sort_array[0] が NULL かどうかを見てるのは再帰の一発目だけを
区別する目的だろうけれど、そんなのは再帰中にやらず、157 のように
別の関数に分けるべき。これが落ちる原因になっている。

2. それを直しても正しく動作しない。last の前後に分けるところがダメ。
pivot を特別扱いしたいのだろうけど、並べ替え中に pivot も動いてしまう。
ここは 157 のように、両側から同時にやるのが常套テクニック。
今の方法でも、pivot を必ず最後に選ぶようにすると、一応できる。

1 を小細工で対応し、2 を適当に修正したものを以下に示す。
実際の修正量は数行程度のはずだけれど、相当不自然なコードなので
もう一度自分で考えて書いたほうが勉強になると思う。



160 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:09:03 ]
>>158
続き。関係ないところは行をつめている。
!! つきのコメントのあるところが主な修正箇所。

int quick_sort(const char *array[], int left ,int right,char *sort_array[]) {
  int last = 0; int cnt = 0; int pivot = 0;
  if(array == NULL || left < 0 || right < 0 || sort_array == NULL) return 0; //引数チェック
  if(left >= right) return 1; //配列の要素が一つの場合

  if(sort_array[0] == NULL){ //sort_array[0]がNULLならarrayをコピー
    for(cnt = 0;cnt <= right;cnt++){
      sort_array[cnt] = (char *)malloc(256); // !!malloc で適当に確保してからコピーする
      strcpy(sort_array[cnt],array[cnt]);
    }
  }
  pivot = (right+left)/2; //基準値を決める
  change(sort_array, pivot, right); // !!pivot を最後に送りつける
  pivot = right;
  last = left;
  for(cnt = left; cnt <= right;cnt++){ // !![left,last) は pivot 以下
    if(sort_array[cnt][0] <= sort_array[pivot][0]){ // !!pivotが左側に入るために等号付き
      change(sort_array,cnt,last++); !! last++ と後置インクリメント
    }
  }
  quick_sort(array,left,last-2,sort_array); // !!array[last-1] が pivot なので抜く
  quick_sort(array,last,right,sort_array);
  return 1;
}

161 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:15:23 ]
大してレス読んでないけど文字列比較ならstrcmp使えばいいじゃん。

162 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:21:15 ]
>>161 的外れだよ ちゃんと読もうな

163 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:31:52 ]
[1] 授業単元: programming concepts
[2] 問題文(含コード&リンク): -Promt the user for the base value(int date type).
-Read the base value.
-Promt the user for the exponent value(int date type).
-Read the exponent value.
-using a <cmath> function.
-The following output should be displayed:
/* Enter the base: 3
Enter the exponent: 2
3 to the 2 power equals 9.
The square root of 3 equals 1.41
Press any key to continue*/
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC++
 [3.3] 言語: C++
[4] 期限: なるべく早くお願いします
[5] 習って4週間目です
めちゃめちゃですが自分のプログラムです
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4957.txt

164 名前: ◆hwUQ/UOPMQ mailto:sage [2007/09/24(月) 10:39:50 ]
>>159
ご指摘ありがとうございます!
クイックソートがまだつかめてない様なのでもう少し考えます

165 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:46:10 ]
>>163
'^' はビットXOR演算子であり、べき乗を処理する演算子はC言語にはない
pow() を使え

sqr() ではなく sqrt()

他にも突っ込み所はあるけどコンパイルすれば気付くと思うので触れない

166 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 11:19:02 ]
>>163
これくらいの英語はできなきゃ恥ずかしいくらいだけど、
日本語訳しておくくらいの心遣いをしなさい

167 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 11:20:07 ]
>>166
アホ? 矛盾してるけど。

168 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 11:22:25 ]
下手な訳で混乱させられるよりは、生の英文の方がマシ

169 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 11:57:43 ]
矛盾はしてないよ
併記しておけば問題ないし
ということで>>163は首を洗って出直してきなさい



170 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 11:59:39 ]
>>169
>>168


171 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:14:29 ]
>>170
自分の言葉でたのむわ

むしろ、依頼者が英語がわかんなくて適当にやって
さりげなく間違い訂正させてるのかもしれんし
油断は禁物だぞ

172 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:15:40 ]
>>171
>>168


173 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:19:38 ]
>>172
答えになってねーよ在日

かくいう俺は在日日本人だが

174 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:20:03 ]
>>163程度の英文が読めない奴は答えなくていいから

175 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:22:32 ]
>>174
英語は分かるがcが分からないんだ…

176 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:22:50 ]
翻訳しました

-ベース値(int日付のタイプ)のためのユーザのPromt。
-ベース値を読んでください。
-解説者値(int日付のタイプ)のためのユーザのPromt。
-解説者値を読んでください。
-<cmath>機能を使用します。
-以下の出力を表示するべきです:
/*はベースに入ります: 3
解説者に入ってください: 2
3 2と、パワーは9と等しいです。
3の平方根はいずれも*/を続けるために合わせる1.41Pressと等しいです。

177 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:25:26 ]
そして、cはわからないが√3は1.41ではないことは分かる!

178 名前: [2007/09/24(月) 14:39:17 ]
お助けください。

現在の地域時間から15時間後の日時を表示するプログラムを作成しなさい。
表示形式は日付と時間が表示されれば、自由とします。

179 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 14:41:15 ]
>>178
>>7



180 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 14:41:48 ]
間違えた
>>178
>>1

181 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 14:45:40 ]
#include <stdio.h>
#include <time.h>
int main() {struct tm tm; time_t now = time(NULL); tm = * localtime(& now); tm.tm_hour += 15; mktime(& tm); puts(asctime(& tm)); return 0;}

182 名前:汗2 [2007/09/24(月) 14:55:45 ]
[1] 授業単元: 通信物
[2] 問題文(含コード&リンク):
次のプログラムで本来入れるべき処理は何か。それを指摘しなさい。
 1:char*pstr;
2:
3:pstr=malloc(100)
4:sprintf(pstr,"123")
5:patr=malloc(10)
6:sprintf(pstr,"456")
7:free(pstr);

[3] 環境
 [3.1] OS: (Windows)
 [3.3] 言語: (C)
[4] 期限:早いと助かるス。


183 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 14:59:18 ]
2:char*pastr;
8:free(pastr);

184 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 15:00:00 ]
2:char*patr;
8:free(patr);

185 名前:デフォルトの名無しさん [2007/09/24(月) 15:04:33 ]
>>163
#include <iostream>
#include <cstdio>
#include <cmath>

int main()
{
using std::cin;
using std::printf;
using std::putchar;
char *str[4] = {"Enter the base: ",
"Enter the exponent: ",
"%d to the %d power equals %.0lf.",
"The square root of %d equals %1.2lf"};
int b,ex;
double p,r;
printf(str[0]);
cin >> b;
printf(str[1]);
cin >> ex;
printf(str[2],b,ex,pow(static_cast<double>(b),ex));
putchar('\n');
printf(str[3],b,sqrt(static_cast<double>(b)));
putchar('\n');

return 0;
}
The square root of 3 equals 1.41はおかしすぎる

186 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 15:54:34 ]
人並みにおごれや
だったな確か

187 名前:続・汗3 [2007/09/24(月) 16:03:22 ]
【1】以下のプログラムは、起動時に指定された2つのテキストファイルを比較し、
違う行があればその行番号を表示するプログラムです。空白部分(@〜D)を埋めて、
プログラムを完成させなさい。

1:/* インクルード /*
2:#include<stdio.h>
3:#include<string.h>
4:#include<errno.h>
5:
6:FILE*Fp1;
7:FILE* @ ;
8:
9:/* 関数宣言 /*
10:int main(int argc,char*argv[]);
11:
12:int Func_open(char*,int);
13:int Func_read(void);
14:


188 名前:続続・汗3 [2007/09/24(月) 16:04:59 ]
15:/* メイン関数 /*
16:int main(int argc,char*argv[])
17:{
18: int nrtn;
19: int ncnt;
20:
21: nrtn=Func_open(argv[1],1);
22: if(nrtn!=0)
23: return1;
24: nrtn=Func_open( A ,2);
25: if(nrtn!=0){
26: fclose( B );
27: return1;
28: }
29:
30: ncnt=0;
31: nrtn=0;
32: while(nrtn==0){
33: nrtn=Func_read();
34: ncnt++;
35: }


189 名前:続続続・汗3 [2007/09/24(月) 16:05:51 ]
36:
37: fclose(Fp1)
38: fclose(Fp2)
39:
40: if(nrtn<0)
41: printf("%sと%sは違う内容でした(%d行目)",
42: argv[1],argv[2],ncnt);
43: else
44: printf("%sと%sは同じ内容でした",
45: argv[1],argv[2])
46:
47: return(0);
48:}
49:
50:int Func_open(char*szfname,int nno)
51:{
52: errno=0;
53: if(nno==1)
54: Fp1=fopen(szfname,"r")
55: else
56: Fp2=fopen(szfname,"r")
57: if((Fp1==NULL&&nno==1)UU
58: (Fp2==NULL&&nno==2)){
59: printf("<%s>エラー:%s",szfname,strerror C ));
60: return(-1);
61: }
62:
63: return(0);
64:}



190 名前:続続続続・汗3 [2007/09/24(月) 16:06:42 ]
65:
66: int Func_read(void)
67:{
68: char*prtn1;
69: char*prtn2;
70: char szdat1[81];
71: char szdat2[81];
72: int nrtn;
73:
74: prtn=fgets(szdat1,81,Fp1);
75: prtn=fgets(szdat2,81,Fp2);
76: if(prtn1==NULL)UUprtn2==NULL)
77: return(9);
78:
79: nrtn=strcmp(szdat1,szdat2)
80: if(nrtn!= D ) 
81: return(-1);
82: return(0);
83:}

191 名前:続続続続続・汗3 [2007/09/24(月) 16:08:23 ]
【2】上記プログラムにおいてFunc_read関数はstrcmpを使用して読み込んだ
2つのレコードが同じかどうか判断しています。
これをmemcmpを利用したロジックに作り直しなさい。

当方、全く初心者なのでさっぱしです。ヨロシクお願いしますm(__)m

192 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 16:13:30 ]
ひでえコードだな

193 名前:デフォルトの名無しさん [2007/09/24(月) 16:15:27 ]
穴埋め問題はどうもやる気がおきんな

194 名前:へたれ [2007/09/24(月) 16:27:29 ]
C言語
Windows
EZ EDITOR
for文,1次元変数,do-while文,if-else文,doubleなどは習いました。
期限:今日中

問題
2次方程式の開放プログラム:a,b,cをそれぞれ入力し、axの2乗+bx+c=0の2つの解を表示するプログラムです。
こんな感じで大丈夫でしょうか?

195 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 16:35:41 ]
>>194
>こんな感じで大丈夫でしょうか?
なんて言う前に、>>1
EZ EDITORってエディタ?そんな情報いらん
コンパイラの方が重要だ

196 名前:へたれ [2007/09/24(月) 17:00:15 ]
>>195
コンパイラの意味がわかりません。Visualかなぁ?
WZ EDITORは関係なかったんですね。
PC初心者ですいません

197 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:16:03 ]
>EZ EDITOR
今でも使っている奴いるのか?

198 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:19:34 ]
プログラミングが上達するコツ
pc11.2ch.net/test/read.cgi/tech/1190555031/

199 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:42:41 ]
[1] 授業単元: C
[2] 問題文 19と打てば、2 4 6 8 10 12 14 16 18と表示するプログラム
[3] 環境
 [3.1] OS: XP
 [3.2] VC++ 2008
 [3.3] 言語: C
[4] 期限: なるべく早めに
[5] その他の制限:



200 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:45:22 ]
いや、問題分は「入力された数字までの偶数を出力するプログラム」だろ?

201 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:45:35 ]
WZ EDITORは今でも一応現役だな。
ほぼフルセットのC言語なマクロも使えるから、入門用の教材として使われるケースも希にある。
まあ、浮動小数点数とか使えないから、素直にVisualC++使っとけとも思うが。


202 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:45:35 ]
#include <stdio.h>

int main(void)
{
    int n;
    scanf("%d", &n);
    if (n == 19) {
        printf("2 4 6 8 10 16 18");
    }
    return 0;
}

203 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:45:37 ]
>>200
そうです。

204 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:45:54 ]
>>200でお願いします。

205 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:48:50 ]
#include <stdio.h>

int main(void)
{
int i, n;

scanf("%d", &n);

for(i=2; i<=n; i+=2) printf("%d ", i);

return 0;
}

206 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:00:22 ]
#include <stdio.h>
int main(void)
{
int num;
int dig;

dig=0;

scanf("%d",&num);

while (num>=dig+2) {
dig+=2;
printf("%d ",dig);
}

return (0);
}


207 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:19:55 ]
よかったな!これで4人分確保できたぞ!
#include <stdio.h>
int main(void)
{
int i, n;
printf("数値?"); scanf("%d", &n);n >>= 1;
for(i = 1; i <= n; i++) printf("%d ", n << 1);;
return 0;
}

208 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:31:23 ]
やったー、これで4Pできるね!

209 名前:163 mailto:sage [2007/09/24(月) 18:37:42 ]
皆さん本当にありがとうございます
自分のプログラムですが
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4960.txt
エラーがひとつ、どうしても消えません
修正可能な方よろしくお願いします




210 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:45:26 ]
>>209
エラーがひとつって…いくつも間違いあるぞ
cinでendlいらない
powやsqrtを自分で宣言してどうする

211 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:45:51 ]
--
int pow(int base,int exponent);
double sqrt(int base);
--
標準関数を自分勝手に宣言してはいけません。しかも、間違っています。
--
int result1;
result1=pow(base,exponent);
double result2;
result2=sqrt(base);
--
変数は定義と同時に初期化しましょう。そうしなければいけない理由がないのに
不定値のまま放置するのは阿呆のすることです。

212 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:46:18 ]
>>209
コンパイラ通してないけど、ぱっと見で見つけたエラー。
>cin >> base >> endl;
std::endlに何か入力させようとしてる…
>int pow(int base,int exponent);
>double sqrt(int base);
自分で関数内関数宣言?cmathをincludeしてるのに


213 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:48:02 ]
1] 授業単元:プログラミング
[2] 問題文:txtファイルdata.txtに
memo1.txt
memo2.txt
memo3.txt

と書かれているとする。
今main関数で、ファイルdata.txtの中身のファイル(memo*.txt)をぬきとる。
その中身のファイルを違う関数void functionに移してファイルオープンして
中身を表示せよ。
-----------
memo1.txtの中身は
2
4
5
memo2.txtの中身は
1
4
6
memo3.txtの中身は
4
5
とします。


[3] 環境
 LINUX
[4] 期限:はやければはやいほうがいいです。
[5] その他の制限:特になし

214 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:51:37 ]
>はやければはやいほうがいいです。
小学生?

215 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:52:29 ]
>>214
ファイルの中身のファイル?

216 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:53:01 ]
>>213
死ね。

217 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:55:43 ]
>>213 ここに直接書いてるのでコンパイルエラーとか知らない。
#include <stdio.h>
#include <string.h>
void function(char *filename)
{
  char command[1024];
  sprintf(command, "cat %s", filename);
  system(command);
}
int main(void)
{
  char filename[1001];
  FILE* fp = fopen("data.txt", "r");
  if( fp == NULL ) { return 1; }
  while( !feof(fp) ) {
    int len;
    fgets(filename, 1000, fp);
    len = strlen(filename);
    while( filename[len - 1] == '\n' ) filename[len - 1] = '\0';
    printf("%sの中身は\n");
    function(filename);
  }
  return 0;
}


218 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:56:37 ]
あ。data.txt閉じ忘れた……けどまぁいいや。

219 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:57:42 ]
data.txtにかかれてあるのが
memo1.txt
memo2.txt
memo3.txt

memo1.txtにかかれてあるのが
2
4
5

memo2.txtにかかれてあるのが
1
4
6

memo3.txtにかかれてあるのが
4
5
という意味です




220 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:00:32 ]
>>217
cat使ったのを書こうと思ったらかぶったよw

221 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:06:00 ]
>>219
え?

222 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:18:35 ]
>data.txtにかかれてあるのが
         ̄ ̄ ̄ ̄ ̄ ̄
どこの国の方ですか?

223 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:33:22 ]
うんこ星人です

224 名前:163 mailto:sage [2007/09/24(月) 19:40:29 ]
すいませんがまたチェックお願いします
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4961.txt
今度はエラー3とでましたが、、、

225 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:50:42 ]
Display呼び出し時の引数の数
pow(double, double)

226 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:53:03 ]
>>224
でたから何?

表示されたエラーを読めば解決する問題だよね?

227 名前:185 [2007/09/24(月) 20:13:14 ]
>>163
>>185で俺レスしてんだけど、無視?
関数使って処理するのがお好みなのかな

228 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 20:24:06 ]
お前の糞コードなんていらねえってよw

229 名前:163 mailto:sage [2007/09/24(月) 20:32:21 ]
>>185さん
無視なんてとんでもないです
ありがとうございますと言ったのは主に185さんに対してです
ただ全く習っていない解法でしたので、、、
ありがたく使わせてもらいます



230 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 20:36:21 ]
ほう、どう使うと言うのかね

231 名前:185 [2007/09/24(月) 20:51:31 ]
糞コードですいませんでした。
私がわるかったです。

232 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 20:56:54 ]
つーか、>163の支離滅裂な英語からすると>163が日本語に訳すことも無意味ならば>163がありがたく使うことも無意味だ。

233 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 21:00:04 ]
これが馬鹿さか…

234 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 21:04:05 ]
>>224
宣言時>void Display(int result1,double result2,int base,int exponent);
使用時>Display(result1,result2);
引数の数が合ってないのが悪い。

「エラー3」とかではなくて、何行目にどういうエラーがあるのかということを
出力するはずだから、どうせならそれを書いてくれ。

235 名前:デフォルトの名無しさん [2007/09/24(月) 21:21:00 ]
>>199
#include<stdio.h>

int main(void){
 int num;

 printf("=>");
 scanf("%d",&num);

 if(num == 19) printf("2 4 6 8 10 12 14 16 18\n");
 return 0;
}
問題文どおりならこうなる

236 名前:デフォルトの名無しさん [2007/09/24(月) 21:21:47 ]
>>199
#include<stdio.h>

int main(void){
 int num;

 printf("=>");
 scanf("%d",&num);

 if(num == 19) printf("2 4 6 8 10 12 14 16 18\n");
 return 0;
}
問題文どおりならこうなる

237 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 21:27:08 ]
>>199
#include<stdio.h>

int main(void){
 int num;

 printf("=>");
 scanf("%d",&num);

 if(num == 19) printf("2 4 6 8 10 12 14 16 18\n");
 return 0;
}
問題文どおりならこうなる

238 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 21:34:08 ]
>>235-237
そこまでして書き込みたいのか。

239 名前:デフォルトの名無しさん [2007/09/24(月) 21:40:55 ]
>>238
書き込めないと思ってたら100-200までを
表示した画面をブックマークしてた



240 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:25:07 ]
>>239
死ね。

241 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:32:38 ]
このスレ1人だけくそ基地外がいるな。

242 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:37:35 ]
オレのことか

243 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:48:17 ]
いや、俺のことだろ?

244 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 23:05:55 ]
>>224
というかわざわざCalcPower,CalcSquareRoot関数を作る必要がないだろ

245 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:02:09 ]
>>199は入力した数値以下の正の自然数の偶数を表示しろってことか?

246 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:10:50 ]
199はもう終わってるから

247 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:11:42 ]
なんすか、それ?お前はもう、終わっている みたいな。

248 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:14:41 ]
簡単な問題だから飛びつきたい気持ちはわかるが
他の人が回答済み

249 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:23:04 ]
それは分かっているんだよ。敢えて題意はそれで良いか、ただの疑問。
おまえもいちいちうるさいよ



250 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:24:12 ]
それも他の人が質問済み

251 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:25:01 ]
>>200,203-204
そこらへんも解決済み

252 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 00:26:10 ]
直後なのに見てないのかよ

253 名前:デフォルトの名無しさん [2007/09/25(火) 02:49:55 ]
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
ある2つのファイルがある。
この時1つのファイルには次元nの2つの整数ベクトルが書き込まれている。
この2つのベクトルを読み出し、内積を計算した後、
結果をもう1つのファイルに書き込むプログラムを作成せよ。
読み込むファイル、書き込むファイルどちらもファイル名を
任意に(キーボードから)指定できるようにする。
※なお、任意の大きさnのデータを処理できるようにする。
また、nはファイルの最初に置かれ、スペースによって要素は区切られる。
ベクトル要素のアクセスにはポインタを用いる。
[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C言語)
[4] 期限: ([07年9月26日] )
[5] その他の制限: なし

よろしくお願いします。

254 名前:デフォルトの名無しさん [2007/09/25(火) 03:20:59 ]
>>253
>ある2つのファイルがある。
>この時1つのファイルには次元nの2つの整数ベクトルが書き込まれている。
これを用意してくれ

255 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 03:36:52 ]
一応ファイルフォーマットは提示されてるようだが?
適当に2つ条件にあうファイルを作ればいいんだろう?

256 名前:デフォルトの名無しさん mailto:age [2007/09/25(火) 04:16:46 ]
 _______
(___ ___)
   ∇

257 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 04:37:20 ]
>>253
n次元整数ベクトルってのが何だったか思い出せなかったので適当に書いてみた。

#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE* fp; char filename[256];
int i, j, n, * vector[2], result = 0;
//ファイル読み込み
do{
printf("読み込むファイル?"); scanf("%s", filename);
}while((fp = fopen(filename, "r")) == NULL);
fscanf(fp, "%d", &n);{
for(i=0; i!=2; i++){
vector[i] = calloc(n, sizeof(int));
for(j=0; j!=n; j++)
fscanf(fp, "%d", (vector[i] + j));}
close(fp);}
//内積を求める
for(i=0; i!=n; i++) result += *(vector[0] + i) * *(vector[1] + i);
//ファイル書き込み
printf("書き込むファイル?"); scanf("%s", filename);
fp = fopen(filename, "w");
fprintf(fp, "%d", result);
close(fp); free(vector[1]); free(vector[0]);
return 0;}

258 名前:163 mailto:sage [2007/09/25(火) 06:06:24 ]
皆さんの助言のおかげでようやく完成しました
ありがとうございました
一応コード貼っておきます
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4964.txt
おさわがせしてごめんなさい

259 名前:デフォルトの名無しさん [2007/09/25(火) 06:17:32 ]
C言語
Windows
WZ EDITOR
gcc
for文,1次元変数,do-while文,if-else文,doubleなどは習いました。
期限:今日中

問題
2次方程式の開放プログラム:a,b,cをそれぞれ入力し、axの2乗+bx+c=0の2つの解を表示するプログラムです。




260 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 06:28:21 ]
>>259
他の質問者と同じ形式で書き込もうとは思わない?

261 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 06:34:10 ]
>>260
いちいちうるせーんだよ、答えもしないクズが

262 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 06:39:09 ]
>>259
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4965.c

263 名前:デフォルトの名無しさん [2007/09/25(火) 07:53:08 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク):
  main引数に格納されたtest.txt(ファイル名)を
  変更してtest.abc.txtとするコードを作成せよ。  
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 9/25
[5] その他の制限: なし


引数で得たファイル名の拡張子の前に「.abc」を入れるというものなのですが
うまく作成できません。よろしくお願いいたします。

264 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 08:00:20 ]
>>263
ファイルのリネームをしろってこと?
コピーを作れってこと?

265 名前:デフォルトの名無しさん [2007/09/25(火) 08:22:33 ]
>>264
ファイルのコピーを作って
リネームしろってことだと思います。

266 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 08:27:28 ]
>>265
Cygwin?MinGW?

267 名前:デフォルトの名無しさん [2007/09/25(火) 08:29:16 ]
>>266
すみません書き忘れでした
cygwinです

268 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 08:33:16 ]
>>263
複数拡張子(a.txt.bak) や拡張子無しはどうすれば?

269 名前:デフォルトの名無しさん [2007/09/25(火) 08:35:42 ]
>>268
とくにその辺は指定がないので
気にしなくて(ないものと考えて)
良いと思われます



270 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 08:41:06 ]
>>263
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int c,char**v){
char com[256]="./tmp.bat ";
strcat(com,v[1]);
FILE*fp=fopen("tmp.bat","w");
fprintf(fp,"%s","cp %1 tmp\nren tmp %~n1.abc.%~x1");
fclose(fp);
system("chmod 744 tmp.bat");
system(com);
system("rm tmp.bat");
return 0;
}

271 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 09:32:18 ]
>>263
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4966.c

272 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 09:35:48 ]
>>263 ちょい訂正。拡張子は . 以下3文字まで対応、だと思う。それ以外は知らん。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4967.c

273 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 09:40:50 ]
あと、きんもぉ〜☆クソースなんで、あしからずw

274 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 10:14:27 ]
>>263
#include <stdio.h>
#include <string.h>
#include <assert.h>
int main(int argc, char **argv)
{
char outname[256];
char *dot;
if( argc != 2 ){
printf("Usage:%s filename",argv[0]);
return 1;
}
if( (dot = strrchr(argv[1], '.')) == NULL ){
strcpy( outname, argv[1]);
strcat( outname, ".abc" );
}else{
int i;
for( i=0 ; argv[1][i] != *dot ; i++){
outname[i] = argv[1][i];
}
outname[i] = '\0';
strcat(outname, ".abc");
strcat(outname, dot);
}
if( rename( argv[1], outname ) == -1){
perror("Error");
return 1;
}
return 0;
}

275 名前:274 mailto:sage [2007/09/25(火) 10:20:17 ]
assert消し忘れた

276 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 10:51:49 ]
>>265


277 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 10:58:40 ]
ってことだと思います
~~~~~~~~~~~~~~~~~~~~~

278 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 11:06:43 ]
>>265

279 名前:デフォルトの名無しさん [2007/09/25(火) 11:13:33 ]
たくさんのレスありがとうございました
大変参考になりましたm(__)m



280 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 13:13:52 ]
>>263
#include<stdio.h>
#include<string.h>

int main(int argc, char *argv[]){
char *src_orig, dest_orig[FILENAME_MAX+1], *src, *dest, *ptr;

if(argc==2) src_orig=argv[1];
else src_orig="test.txt";

src=src_orig;
dest=dest_orig;
ptr=strrchr(src, '\\');
if(ptr==NULL) ptr=strrchr(src, '/');
if(ptr!=NULL) dest+=sprintf(dest, "%.*s", ptr-src+1, src), src=ptr+1;

ptr=strrchr(src, '.');
if(ptr==NULL) ptr=src+strlen(src);
sprintf(dest, "%.*s.abc%s", ptr-src, src, ptr);

printf("%s -> %s\n", src_orig, dest_orig);
if(rename(src_orig, dest_orig)!=0){
printf("Error : rename failed. %s -> %s\n", src_orig, dest_orig);
}

return 0;
}

281 名前:デフォルトの名無しさん [2007/09/25(火) 13:21:39 ]
1] 授業単元: C
[2] 問題文
機能の異なる加工機械が三種類M1・M2・M3(一台ずつ)があり、それぞれ加工経路の異なる三種類の製品A・B・Cの発注がランダムに来る。
発注が来てからスケジュールを行い、何日で完成するかを出すプログラムを作りなさい。
ただし、製品Aの加工順路はM1⇒M2⇒M3、加工時間はM1:5M2:10 M3:15時間
    製品Bの加工順路はM2⇒M3⇒M1、加工時間はM1:10M2:15 M3:5時間
    製品Cの加工順路はM3⇒M1⇒M2、加工時間はM1:15M2:5 M3:10時間
発注が来た時点で、使用したい加工機械が他の製品を加工中だった場合、その製品の加工が終了してから、
加工を開始するものとする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語: C
[4] 期限: 9/25
[5] その他の制限: なし

よろしくお願いします。

282 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 13:25:41 ]
>>263
#include<stdio.h>
char *addext(char *cs, int size, char *org, char *ext) {
 char *p;
 for (p = org; *p != '.' && *p != '\0'; p++)
  continue;
 strncpy(cs, org, (p - org));
 strncpy(cs + (p - org), ext, strlen(ext));
 strncpy(cs + (p - org) + strlen(ext), p, strlen(p));
 return cs;
}
int copy(char *from, char *to) {
 FILE *src = fopen(from, "r");
 if (!src) return -1;
 
 FILE *dst = fopen(to, "w");
 int c, n;
 for (n = 0; (c = getc(src)) != EOF; n++) {
  putc(c, dst);
 }
 fclose(src);
 fclose(dst);
 return n;
}
int main(int argc, char **argv) {
 int size = 256;
 char dst[size], *src = argv[1];
 if (1 < argc && 0 < copy(src, addext(dst, size, src, ".abc"))) {
  printf("copy `%s' -> `%s'", src, dst);
 }
}

283 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 13:31:05 ]
>>281
最短日数を答えるんだよね?アルゴリズムとか書いてない?

284 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 13:32:48 ]
>>281
1日24時間で計算し、常に稼動しているものとしておk?
入力するデータ形式はどんな感じ?
加工途中で追加の発注が割り込む可能性はある?
発注の最小時間単位は1時間?1分?1秒?
絶対遵守の納期設定はある?

285 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 13:34:22 ]
>>263人気杉w

286 名前:281 [2007/09/25(火) 13:40:41 ]
>283
アルゴリズムですか。。。
発注が着たら前詰めで、割り付けていくとしか書いてないんですけど。。。
例えば、製品Aの発注が来た時点で、M1が使用中で3時間後にその作業が終了するなら、
発注が来て三時間後に製品Aの加工を開始するって意味だと思うんですけど。。。
もちろん次のM2がまた使用中ならその作業が終了してから、M2での製品Aの加工を開始するって意味です。

よろしくお願いします。


287 名前:281 [2007/09/25(火) 13:48:32 ]
>284
1日24時間で計算し、常に稼動しているものとしておk?
⇒大丈夫です。
加工途中で追加の発注が割り込む可能性はある?
⇒他の製品の発注が来ることはありますが、同じ製品の追加はないです。
 早く来た発注がを最優先でお願いします。
発注の最小時間単位は1時間?1分?1秒?
⇒一時間でお願いします。
絶対遵守の納期設定はある?
⇒ありません。


288 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 13:50:01 ]
発注のタイミングや回数はどうやって決まるの?

289 名前:281 [2007/09/25(火) 13:55:37 ]
>288
発注のタイミングは、ランダムでお願いします。
終了条件書き忘れてました。各製品5回、発注が来たら終了でお願いします。

よろしくお願いします。



290 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 14:10:38 ]
>>281
仮に下のような2つの発注があった場合、解はどうなる?

#発注時(単位:時) 製品種別 注文コード(便宜上勝手に決めた)
0 製品A 000A
15 製品C 015C

経過時間順に
0 000A発注 000A-M1開始
5 000A-M1終了 000A-M2開始
15 000A-M2終了 000A-M3開始 015C発注 015C-M3開始 <- 発注時間と加工開始時間が重なる時リスケジューリングが先?

000A-M3 が優先になるか 015C-M3 が優先になるのかどっち?
000A-M3 が優先の時、総時間 60時間
015C-M3 が優先の時、総時間 55時間

291 名前:281 [2007/09/25(火) 14:22:06 ]
>290
000Aの発注が先なので、000Aを優先でお願いします。

よろしくお願いします。

292 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 14:59:28 ]
up.nm78.com/dl/37741.jpg
を表示するプログラムを教えて。

293 名前:デフォルトの名無しさん [2007/09/25(火) 15:56:53 ]
rand()%51にすれば、50までの数字が出ますけど、
例えば、ランダムで90〜110の数字を出すためにはどうしたらいいですか?
誰か教えてください。

294 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 16:01:35 ]
>>293
スレ違いだが、
90〜110 -> 90 + 0〜20

295 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 16:02:16 ]
>>293
rand()%21 にすると乱数の範囲は ???〜??? になります
それに ??? を足すと乱数の範囲は ???〜??? になります

296 名前:デフォルトの名無しさん [2007/09/25(火) 16:10:53 ]
>>294
51を90〜110 -> 90 + 0〜20 に書き換えればいいってことですか?

297 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 16:36:38 ]
aho

298 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 17:16:19 ]
(rand()%21) + 90
分かったら消えろ

299 名前:253 [2007/09/26(水) 00:56:25 ]
>>254
書き込まれているデータは例えば3次元整数ベクトルでしたら
 1 2 3
 4 5 6
のような数字のみであり、
1行目をベクトルa、2行目をベクトルbとしてそれを認識し内積を求め、
その結果を別のもう1つのファイルに書き込む。
と言ったイメージであると思います(問題には質問時に書いた事以上は
書かれていなかったのであくまで私の考えですが)。
ですから、おそらく問題にあるn次元の「n」は1つの行に書かれた数値の数
で決定し、データ(数値)はファイルの先頭から書かれているという条件があるので、
1行目と2行目を読み込むだけで、内積を求めるための要素は揃うという事だと思います。

申し訳ないのですが再度よろしくお願いします。



300 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:21:52 ]
その解釈はねーよ。nは最初に置いてあるって書いてるんだから
3
1 2 3
4 5 6
もしくは
3 1 2 3 4 5 6
のどっちかだろ。ってわけでその話は>>257でおしまい

301 名前:デフォルトの名無しさん [2007/09/26(水) 01:25:09 ]
科学技術系のライブラリで、C++のやつはありますか??
fortranとかだと結構見かけるんだけれども、C++はほとんど無い気がします。勿体無いですよね??

302 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:35:10 ]
スレ違い

303 名前:デフォルトの名無しさん [2007/09/26(水) 01:39:14 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4970.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2]
 [3.3] 言語: (C)
[4] 期限: 9/26
[5] その他の制限: なし
よろしくお願いします。

304 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:41:16 ]
他人の書いたコードの穴埋めは、自分で書くより辛いのう。

305 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:55:23 ]
>>303
【1】
(1) 38行目でFp2を閉じている。「Fp2」
(2) 起動時に指定された2つめをファイル名として与える。「argv[2]」
(3) 一つめのファイルを開くのには成功している。この時点で閉じなければならないのは「Fp1」
(4) strerrorはエラー番号を引数にしてエラーメッセージへのポインタを返す関数。「(errno)」
(5) strcmpは同じ文字列であれば0を返す。ここは同じでないときに-1を返す処理なので「0」
ただし4がそれで良いのかどうかは自信なし(汗

306 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 02:00:22 ]
>>281
期限過ぎてしもた
思ったよりもずっと難しかったし、1回全部作り直したのに見通しがよくならないし…
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4971.c

使うには標準入力から下のような文字列を与える
発注時間(整数で単位は hour) 製品種別(A,B or C))

0 A
14 C
15 A
15 B

EOFで発注を終了
./a.out -v のようにコマンドラインオプション -v をつけると詳細表示

307 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 02:03:42 ]
>>306 に追記
発注順序はソート済みとする

308 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 02:28:36 ]
>>303
【2】
memcmpでは\0が出現しても処理が継続される。
単純に置き換えても機能しない場合がある。
(ような気がする。fgetsで取得した文字数が指定以下だった場合、残りは'\0'でパディングされるんだったか?)
79行目を次の7行に置き換える。
loop:
nrtn = memcmp(szdat1, szdat2, 1);
if(*szdat1 == '\0' || *szdat2 == '\0') goto loop_end;
szdat1++;
szdat2++;
goto loop;
loop_end:


309 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 03:46:09 ]
>>306
むずいな……。
指針でも書いてくれないと追い辛いっす。



310 名前:デフォルトの名無しさん mailto:age [2007/09/26(水) 03:56:58 ]
  _____ 
  (すた☆らき)
   ̄ ̄\| ̄ 
www.freewebs.com/premiumtv/?X3/?STV=%E3%82%89%E3%81%8D+%E3%81%99%E3%81%9F


311 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 07:22:30 ]
>>309
>>306 に以下の3つの注文を与えるだけで、バグが発覚した…orz
0 B
0 C
0 A

データの流れはコマンドラインオプション -v をつけて表示される内容が全て。
簡単に説明すると -v オプションで表示される内容の内、
加工機械が加工を開始することが出来るのは一番左の中括弧の工程のみ

但し >>306 は加工が終わるたびに全工程を前詰めにしている (batch_restruct) が、
machine_t の process_t* を連動させていないためにバグってます

312 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 08:39:29 ]
>>281
>>306 の修正版
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4973.c

313 名前:デフォルトの名無しさん [2007/09/26(水) 12:16:23 ]
なにかIOCCC風な高度のテクニックを使っているプログラムを教えてください。
お題はなんでもいいです。

314 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 12:22:53 ]
>>313
IOCCC見てくればいいじゃん

315 名前:よこ ◆2LEFd5iAoc [2007/09/26(水) 12:27:16 ]
【質問テンプレ】
[1] 授業単元:システム演習
[2] 問題文(含コード&リンク):行列の乗算のプログラムを作ってみよ。大きな行列要素(1000×1000)でも実行できるように作っておくこと。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2007年09月26日17:00まで]
[5] その他の制限: 制限はないです。お願いします。

316 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 12:47:39 ]
>>315
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct tag_matrix_t{
int column, row;
double **data, *data_area;
}matrix_t;
matrix_t *matrix_alloc(int column, int row){
matrix_t *matrix;
int x, y;
matrix=malloc(sizeof(matrix_t));
matrix->column=column;
matrix->row=row;
matrix->data_area=malloc(sizeof(double)*column*row);
matrix->data=malloc(sizeof(double*)*column);
for(y=0;y<column;y++) matrix->data[y]=&matrix->data_area[y*row];
for(x=0;x<row;x++) matrix->data[0][x]=0.0;
for(y=1;y<column;y++) memcpy(matrix->data[y], matrix->data[0], sizeof(double)*row);
return matrix;
}
matrix_t *matrix_mul(matrix_t *a, matrix_t *b){
matrix_t *c;
int i, j, k, x;
if((x=a->row)!=b->column) return NULL;
c=matrix_alloc(a->column, b->row);
for(i=0;i<a->column;i++)
for(j=0;j<b->row;j++)
for(k=0;k<x;k++) c->data[i][j]+=a->data[i][k]*b->data[k][j];
return c;
}

317 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 12:59:34 ]
>>315が見えない。
どっかで暴れてた糞コテか?

318 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 13:15:15 ]
>>315 はトリップ #1111
安直だからどこかで誰かが使ったんでしょう

319 名前:デフォルトの名無しさん [2007/09/26(水) 13:36:18 ]
[1] 授業単元:基本プログラミング
[2] 問題文(含コード&リンク):30個以下の非負の数値データを入力したあとそれらのデータをそのまま出力する。次に1行あけて(改行を出力して)から今度は大きい順に出力する。
データ入力はキーボードから行い、適当な数値を数個入力したところでEOFを示すCtrl−Dを入力する。また、入力される数値データは必ず非負であると仮定してよい(つまりエラーチェックは不要)ただし30個以上の入力は受け付けないようにする。
プログラムは以下のステップで作成すること。
a:30個以下の数値入力データを配列に格納し、そのまま出力するプログラムを作成する。
b:n個の配列データを大きい順に出力するために、以下のことをn回繰り返す。
b1:配列データから最大値を持つ配列要素を探し、その添字を覚えておく。
b2:b1で覚えた添字のデータを出力し、同時にその要素に-1を代入する。
実行例
input number:1 2 3 4 6 32 34 56 21 11
1 2 3 4 6 32 34 56 21 11

56 34 32 21 11 6 4 3 2 1
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:明日
よろしくお願いします





320 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 14:27:41 ]
>>319
#include <iostream>
const int sanju=30;class hairetsu {private: int arr[sanju];
int n; void nyuuryoku(); void shutsuryoku() const;
int b1() const; void b2(int);public: void a(); void b();};
void hairetsu::a(){ nyuuryoku(); shutsuryoku();}
void hairetsu::nyuuryoku(){ int i; for(i=0; i<sanju; ++i){
if(!(std::cin >> arr[i])) break; } n=i-1;}
void hairetsu::shutsuryoku() const { for(int i=0; i<=n; ++i){
std::cout << arr[i] << ' '; }}
void hairetsu::b(){ for(int i=0; i<=n ; ++i){ b2(b1()); }}
int hairetsu::b1() const { int i,index=0; for(i=1;i<=n;++i){
if(arr[i]>arr[index])index=i; } return index;}
void hairetsu::b2(int index){ std::cout << arr[index] << ' ';
arr[index]=-1;}int main(){ hairetsu h; h.a(); std::cout
<< std::endl; h.b();}

321 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:41:15 ]
>>319
#include <iostream>
using namespace std;
int main() {
  int array[30], n = 0;
  while (n < 30 && cin >> array[n]) ++n;

  for (int i = 0; i < n; ++i) { // a
    cout << array[i] << ' ';
  }
  cout << endl << endl;

  for (int i = 0; i < n; ++i) { // b
    int k = 0; // index of maximum element
    for (int j = 0; j < n; ++j) // b1
      if (array[j] > array[k]) k = j;
    cout << array[k] << ' '; // b2
    array[k] = -1;
  }
  cout << endl;
}

322 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 16:20:58 ]
>>320
>>321
ありがとうございました

323 名前:デフォルトの名無しさん [2007/09/26(水) 19:41:12 ]
 1 授業問題 
 2 ポインタ 
 
 int data[10] ={10,20,30,40,50,60,70,80,-999} このようなint配列があります         配列の内容を実行結果のように表示するプログラムを作りなさい         -999になれば処理を終了します 
 ポインタを固定して表示させる処理とポインタを変化させて表示させる処理の2つ作成しなさい 
 この内容がわからないので教えて下さいお願い致します

324 名前:デフォルトの名無しさん [2007/09/26(水) 19:43:02 ]
ちなみに999}の最後に:がつきます  宜しくお願い致します

325 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:43:38 ]
>>323
テンプレ読んでからやりなおせ。アホ。

326 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:46:31 ]
>>325
お前、来なくて良いよ。アホとか書くな、アホっ

327 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:47:52 ]
>>323
>>1を読め。

328 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:49:22 ]
>>327 お前が >>323 を読まなきゃ良いだろ

329 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:04 ]
>>328
読まなくていいものを書き込むな。



330 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:24 ]
>>329 オマエモナー

331 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:42 ]
>>330
>>1を読め。

332 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:53 ]
まあ携帯だろうからそこは大目に見ようも
日本語はもうちょっと上手く使わないとね…

333 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:55 ]
テンプレ利用しろよ。

334 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:51:41 ]
>>323のようなやつはマナーを知らんな。

335 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:51:43 ]
>>331 >>330 を読むな

336 名前:デフォルトの名無しさん [2007/09/26(水) 19:52:07 ]
お前ら、テンプレ読まない奴はスルーしろ。

337 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:52:26 ]
>>334のような奴はスルーを知らんなw

338 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:52:57 ]
>>323
駄目な奴は何をやっても駄目

339 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:57:24 ]
>>331 >>329 >>327 <お前らが >>1 を読め。
> 気に入らない質問やその他や発言はスルーの方向で。



340 名前:デフォルトの名無しさん [2007/09/26(水) 20:15:19 ]
323 ですが すいませんバージョンとかわかりません でも 一応大丈夫なんじゃないんですか?教えて貰えたら光栄ですバカでもアホでもわからないので教えてもらえれば光栄なのでお願い致しますあとWindoを使ってることはわかります宜しくお願い致します

341 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:19:30 ]
323ですが、僕はアホです。っていうか涙目みたいな・・・っていうか俺ってマジやばいから。
俺怒らすと怖いですよ(ぉ っていうか、俺の友達なら知ってることだけどな。
お前ら知らんだろ。

342 名前:デフォルトの名無しさん [2007/09/26(水) 20:23:19 ]
ちなみに私は341ではないですなんせ・・・この点々は使ったことないです誰か教えてくださいお願いします

343 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:30:30 ]
>>341
あのなぁ、お前みたいな茶化したりする騙りなんてバレバレなんだよ。
なんでそう質問者をバカにするだけで質問に答える能力が無いくせに
このスレで、でけぇ面してんだ?鬱陶しいんだよ、他の回答者からしてみてもお前は

344 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:30:46 ]
>>323
#include<stdio.h>
int main(void){
int data[10]={10,20,30,40,50,60,70,80,-999};
int *ptr, i;
for(i=0,ptr=data;*(ptr+i)!=-999;i++) printf("%d\n", *(ptr+i));
for(ptr=data;*ptr!=-999;ptr++) printf("%d\n", *ptr);
return 0;
}

345 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:31:32 ]
>>344
もっと分かりやすく書けや。気に入らん奴は回答せんでええって。
俺、怒らすと怖いよ。

346 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:32:55 ]
>>323 マルチポストかよ!試験は実力で受けろカス!
ttp://pc11.2ch.net/test/read.cgi/tech/1188748806/970

347 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:33:07 ]
オレはツレから「キレたら怖い奴」って良く言われる それは自覚してるけど狼の血は止められない

348 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:41:59 ]
>>347
オオカミ少年乙

349 名前:デフォルトの名無しさん [2007/09/26(水) 20:49:42 ]
344さんありがとうございました 恩にきります また宜しくお願いいたします



350 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:52:43 ]
切られたなり!

351 名前:デフォルトの名無しさん [2007/09/26(水) 21:18:41 ]
[1] 授業: 教科書
[2] OS Windows VC60
[3]問題
int data[10] ={5,8,10,2,1,14,35,6,12}:
配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか?

期限9月27木曜です

352 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:21:31 ]
>>351
10分くらいするとマルチポストし始めるのでしょうか?

353 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:40:43 ]
>>351
#include<stdio.h>
int cmp_big(int a, int b){
return a>b;
}
int cmp_small(int a, int b){
return a<b;
}
int *search(int arr[], int arr_size, int (*cmp)(int,int)){
int i, index=0;
for(i=1;i<arr_size;i++)
if(cmp(arr[i], arr[index])>0) index=i;
return &arr[index];
}
int main(void){
int data[10]={5,8,10,2,1,14,35,6,12};
printf("maximum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_big));
printf("minimum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_small));
return 0;
}

354 名前:デフォルトの名無しさん [2007/09/26(水) 21:53:00 ]
352さんありがとうございました

355 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:54:15 ]
976 名前:デフォルトの名無しさん[] 投稿日:2007/09/26(水) 21:21:46
[1] 授業単元: 教科書
[2] OS Windows
[3]問題
int data[10] ={5,8,10,2,1,14,35,6,12}:
配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか?
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1188748806/

356 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:54:31 ]
>>353
こういうプログラムはいいな。
このまま提出したら質問主が疑われそうなもの。

357 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:59:29 ]
疑われるって?

358 名前:デフォルトの名無しさん [2007/09/26(水) 22:00:59 ]
>>305
>>308

感謝っす!

359 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:02:21 ]
maximum → 最大値
minimum → 最小値
でいいんじゃね



360 名前:デフォルトの名無しさん [2007/09/26(水) 22:05:48 ]
[1] 授業: 教科書
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です

361 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:06:54 ]
いまさらだけど、[1] 授業: 教科書。ワロタwww


362 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:18:34 ]
>>360
#include<stdio.h>
double get_average(double arr[], int arr_size){
double *ptr, average=893;
int i;
ptr=arr;
for(ptr=arr,i=0;i<arr_size;i++,ptr++)
average=(average*i+*ptr)/(i+1);
return average;
}
double get_sum(double arr[], int arr_size){
double *ptr;
ptr=arr;
return *ptr+((arr_size>0)?get_sum(ptr+1, arr_size-1):0);
}
int main(void)
{
double data[]={10.8,20.3,30,6.40,10.4,2.12};
printf("sum : %f\n", get_sum(data, sizeof(data)/sizeof(data[0])));
printf("average : %f\n", get_average(data, sizeof(data)/sizeof(data[0])));
return 0;
}

363 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:20:45 ]
親切なな人だね。
さすがにこれ以上は勘弁って感じだよ。

364 名前:デフォルトの名無しさん [2007/09/26(水) 22:21:08 ]
もぅすこし初心者的なのはありませんか?ワガママですみませんが宜しくお願いします

365 名前:デフォルトの名無しさん [2007/09/26(水) 22:23:34 ]
スレタイと直接関係ないんですけど
FOX-toolkitの話ってどこに行けば聞けますか?

366 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:24:00 ]
>>364
マルチしてんじゃねえよ

367 名前:>>281 1/4 mailto:sage [2007/09/26(水) 22:27:07 ]
struct machine {
 struct product *p;
 int value;
};
struct product {
 struct machine *ms[4];
 struct product *original;
};
struct machine *createm() {
 return (struct machine *)calloc(1, sizeof(struct machine));
}
struct product *createp(struct machine *first, struct machine *second, struct machine *last) {
 struct product *p = (struct product *)calloc(1, sizeof(struct product));
 p->ms[0] = first;p->ms[1] = second;p->ms[2] = last;p->original = p;
 return p;
}
struct product *clonep(struct product *original) {
 if (!original) return 0;
 struct product *p = (struct product *)calloc(1, sizeof(struct product));
 *p = *original;
 return p;
}
struct product *clonep_at_random(struct product **ps, int size) {
 return clonep(ps[rand() % size]);
}
int n_completed(struct product *original, struct product **ps, int size) {
 int i, n = 0;
 for (i = 0; i < size; i++) {
  if (ps[i]->original == original && !ps[i]->ms[0]) n++;
 }
 return n;
}

368 名前:>>281 2/4 mailto:sage [2007/09/26(水) 22:27:50 ]
int n_existed(struct product *original, struct product **ps, int size) {
 int i, n = 0;
 for (i = 0; i < size; i++) {
  if (ps[i]->original == original) n++;
 }
 return n;
}
struct product *waitingproduct(struct machine *m, struct product **ps, int size) {
 int i;
 for (i = 0; i < size; i++) {
  if (ps[i]->ms[0] == m) {
   return ps[i];
  }
 }
 return 0;
}
void shift(struct machine **ms) {
 ms[0] = ms[1];ms[1] = ms[2];ms[2] = ms[3];
}
int main() {
 struct machine *ms[4];
 ms[0] = createm();ms[1] = createm();ms[2] = createm();ms[3] = 0;
 struct product *p, *ps[4];
 ps[0] = createp(ms[0], ms[1], ms[2]);
 ps[1] = createp(ms[1], ms[2], ms[0]);
 ps[2] = createp(ms[2], ms[0], ms[1]);
 ps[3] = 0;
 int values[][3] = {{5, 10, 15}, {10, 15, 5}, {15, 5, 10}};
 
 int i, n, maxsize = 64, size = 0;
 struct product *products[maxsize];
 for (n = 0; ; n++) {

369 名前:>>281 3/4 mailto:sage [2007/09/26(水) 22:28:31 ]
  // 289:各製品5回、発注が来たら終了でお願いします。
  // = 各五個完成したら終了?
  if (
   5 <= n_completed(ps[0], products, size)
   && 5 <= n_completed(ps[1], products, size)
   && 5 <= n_completed(ps[2], products, size)
  ) break;
  // 289:各製品5回、発注が来たら終了でお願いします。
  // = 終了の条件とは別に、発注の回数も各五回?
  // 287:他の製品の発注が来ることはありますが、同じ製品の追加はないです。
  // = 作業中でない製品タイプの発注のみが来る?
  p = clonep_at_random(ps, 4);
  if (p && (
   (p->original == ps[0] && 5 <= n_existed(ps[0], products, size))
   || (p->original == ps[1] && 5 <= n_existed(ps[1], products, size))
   || (p->original == ps[2] && 5 <= n_existed(ps[2], products, size))
   || (ms[0]->p && ms[0]->p->original == p->original)
   || (ms[1]->p && ms[1]->p->original == p->original)
   || (ms[2]->p && ms[2]->p->original == p->original)
  )) {
   free(p);p = 0;
  }
  // 受注
  if (p && size < maxsize) products[size++] = p;
  // 各機械が処理する製品を決定
  for (i = 0; i < 3; i++) {
   if (!ms[i]->p && (ms[i]->p = waitingproduct(ms[i], products, size))) {
    ms[i]->value = values[(&ms[i] - &ms[0])][((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)];
   }
  }
  // 処理直前の状態。
  char cs[] = {'A', 'B', 'C', 'Q'};



370 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:30:14 ]
その長さなら>>1のうpロダを使って欲しい

371 名前:>>281 4/4 mailto:sage [2007/09/26(水) 22:30:56 ]
  printf("%3d",n);
  for (i = 0; i < 3; i++) {
   if (ms[i]->p) {
    printf(" [%c:%d]", cs[((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)], ms[i]->value);
   } else {
    printf(" []");
   }
  }
  printf("\n");
  // 処理と処理済処理
  for (i = 0; i < 3; i++) {
   if (ms[i]->p) {
    ms[i]->value--; // 加工
    if (ms[i]->value <= 0) {
     shift(ms[i]->p->ms);
     ms[i]->p = 0;
    }
   }
  }
 }
 printf("%dh", n);
}

// 根本的に何か勘違いしているような気もする。

372 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:33:06 ]
>>370 すんまそん。

373 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:33:25 ]
>>364 簡単にしてみた
#include<stdio.h>
double get_average(double arr[], int arr_size){
double average=0;
int i;
for(i=0;i<arr_size;i++,arr++)
average=(average*i+*arr)/(i+1);
return average;
}
double get_sum(double arr[], int arr_size){
return *arr+((arr_size>0)?get_sum(arr+1, arr_size-1):0);
}
int main(void){
double data[]={10.8,20.3,30,6.40,10.4,2.12};
printf("sum : %f\n", get_sum(data, 6));
printf("average : %f\n", get_average(data, 6));
return 0;
}

374 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:45:06 ]
>>355>>360
添え字演算子はポインタ演算のシンタックスシュガーにすぎないんだから、
結局[]だってポインタ使ってるじゃないですか!
って反抗するのもよいって本で言ってた。

375 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:46:04 ]
>>374
「言ってた」って子供の絵本か!

376 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:50:12 ]
>>313
Short Coding というのがあるよ。
有名な例だと、

main(n){gets(&n);putchar(n%85+5);}
これをコンパイルして実行して、
1 2
とか
3 6
と入力すれば、足される。


377 名前:デフォルトの名無しさん [2007/09/26(水) 22:59:22 ]
[1] 授業
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です

378 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:03:25 ]
>>377
>>373 のどこが分からないのか説明してくれ

379 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:15:30 ]
>>378
もう放置で…



380 名前:デフォルトの名無しさん [2007/09/26(水) 23:19:19 ]
どなたか>>377をお願いします

381 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:20:50 ]
>>380
マルチポスト

382 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:24:31 ]
[1] 授業
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の戦闘力と攻撃力を求めるプログラムをポインタを使って作成しなさい
誰か宜しくお願いします
ちなみに小心者です

383 名前:fubu ◆dFztVLlF36 mailto:sage [2007/09/26(水) 23:26:35 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
atoi関数と同様の処理をする関数を作成しなさい
[3] 環境
 [3.1] OS: (Windows2000)
 [3.2] コンパイラ名とバージョン: CPad forBorland C++Compiler Ver2.31
 [3.3] 言語: (C/C++ どちらでも可)
[4] 期限: ([2007年09月28日10:00まで]
[5] atoiは文字列を10進数に変換する処理をするということはわかるのですが、
関数の自作というのがわかりません、、よろしくお願いします!!

384 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:26:42 ]
クマー

385 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:31:40 ]
>>383
int my_atoi(const char *str){int n;sscanf(str,"%d",&n);return n;}

386 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:35:13 ]
int mein_atoi(const char *str){return atoi(str);}

387 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:44:47 ]
int my_atoi(const char *str){return (int)strtod(str, NULL);}

388 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:46:19 ]
>>386 ちょw

389 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:48:28 ]
int my_atoi(const char *str){int n;istringstream i(str);i>>n;return n;}



390 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:53:34 ]
空気を読まずにマトモなやつを
#include<ctype.h>
int atoi_(const char*str){
  int sign = 0;
  int value= 0;
  while(isspace(*str))++str;
  if(*str == '+')++str;
  else if(*str == '-')sign = 1,++str;
  for(;isdigit(*str);++str){
    value *= 10;
    value += *str-'0';
  }
  if(sign)value = -value;
  return value;
}

391 名前:デフォルトの名無しさん [2007/09/26(水) 23:56:16 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 下に記入します
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 9月27日21時
[5] その他の制限:制限などは問題文にあるとおりです。

問題
char型の配列を使用し、ABCDEFGHIJKLMNというリテラルで初期化しておく。その後、
整数kを入力すると、k>0ならば文字列を右にk個巡回シフト、k<0なら左にk個巡回
シフトするプログラムを作成せよ。kはEOF入力まで繰り返し入力できるようにすること。

【実行例】どれだけシフトしますか--> 3
     LMNABCDEFGHIJK
     どれだけシフトしますか--> 4
HIJKLMNABCDEFG
     どれだけシフトしますか--> -7
ABCDEFGHIJKLMN
 どれだけシフトしますか--> 17
LMNABCDEFGHIJK
どれだけシフトしますか--> (EOF入力で終了)

ちなみに実行例を見ればわかると思いますが、シフトは毎回ABC〜から始めるのではなく
前の結果から巡回シフトを開始します。
わかるかたよろしくお願い致します。

392 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:00:13 ]
夏休みの宿題を今からかよって感じだな

393 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:05:45 ]
int myatoi(const char *cs) {
 int a = 1, b = 0;
 const char *c = cs;
 if (*c == '-') {
  a *= -1;
  c++;
 }
 for (; *c != '\0'; c++) {
  if (*c >= '0' && *c <= '9')
   b = (b * 10) + *c - '0';
  else
   break;
 }
 return a * b;
}

394 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:07:06 ]
>>391
#include<string.h>
#include<iostream>
using namespace std;
int main(){
  char s[]="ABCDEFGHIJKLMN";
  int size = strlen(s);
  char*end = s + size;
  int shift;
  while(cout << "どれだけシフトしますか--> ",cin>>shift){
    shift %= size;
    if(shift < 0)shift += size;
    rotate(s,end-shift,end);
    cout << s << endl;
  }
  cout<<endl;
}

395 名前:394 mailto:sage [2007/09/27(木) 00:10:00 ]
あ、いけね。#include<algorithm>忘れてた。

396 名前:デフォルトの名無しさん [2007/09/27(木) 00:25:40 ]
[1] 授業単元: リスト
[2] 問題文:
問:対称に並んだ文字列を検出する関数

与えられた文字リストの中の数字(1桁)に対応する数をnとして、
その数字の前後
n文字が対称的である部分を見つけ、複製して返す関数mirror_ima
ge()を作成せよ。

ここで「対照的」とは文字リストのi(i=1,2,...)番目の要素a(i)が
数字であり、それに対応
する数をnとすれば、条件a(i-1)=a(i+1),a(i-2)=a(i+2),...a(i-n
)=a(i+n)を全て満たす事である。

対称的である部分が複数ある場合には、それらの内の最も長いもの
を返すこと。
ただし最長の部分が複数ある場合には、そのいずれかを返せばよい

対称的な部分がなければ空リストを返す事。

関数mirror_image()のプロトタイプ宣言は以下の通りである。
struct node *mirror_image(struct node*);

他の関数はこれで御願いします↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img
/4974.txt



397 名前:デフォルトの名無しさん [2007/09/27(木) 00:27:44 ]
他の関数はこれで御願いします↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4974.txt


このプログラムに、例えばP1P、abcde3edcxyad、ba1ax4xa1af、ab2
ba2abを与えると、
それぞれ(P1P)、(cde3edc)、(a1ax4xa1a)、(ab2ba)又は(ba2ab)が
印字される。
また、USA、P2P、short5trohなどを与えると()が印字される。


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 9月27日12:00まで
[5] その他の制限: リストを配列にコピーするのは御法度です。

よろしくおねがいします。



398 名前:デフォルトの名無しさん [2007/09/27(木) 01:18:40 ]
[1] 授業: 教科書
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です

399 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:22:55 ]
次からテンプレに「テンプレすら埋めれない池沼はお帰りください」って書こうぜ



400 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:26:37 ]
ポインタは危険だから気をつけろよ。

#include <stdio.h>
int main(void)
{
int i;
double data[5] ={10.8, 20.3, 30, 6.40, 10.4, 2.12}, max = 0;
char *p;

for (i = 0; i < 5; i++) {
max += data[i];
}
p = "max = %f, average = %f\n";
printf(p, max, max / 5);
return 0;
}

401 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:28:58 ]
危険なのはレーザーポインタ
ポインタ自身はそこまで危険じゃない

402 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:29:04 ]
問題文を読み返して思ったが

double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
だと変だな。
最後のコロンは置き換えたが、要素数が間違っているのまでは気づかなかった。
適当に修正してくれよ。


403 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:32:15 ]
>>399
テンプレに沿わない質問に答える気がないならお前が答えなくて良いよ
うっとうしいんだよ

404 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:37:14 ]
テンプレに沿わない質問がうっとおしい

405 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:41:43 ]
>>401>>400にマジレスしているのがかわいらしい


406 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:44:05 ]
>>403
無能乙www

407 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:58:34 ]
>>399が無能だろ。俺は普通に答えているわ、ボケが

408 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:08:18 ]
文字列いじる程度の簡単な奴だけだろw
ちょっと難しいのになると出てこないくせに

409 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:10:24 ]
テンプレに従ってなくても答えられるけど、従ってくれたほうが読みやすいことが多いね



410 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:24:52 ]
408 名前:デフォルトの名無しさん 投稿日:2007/09/27(木) 02:08:18
文字列いじる程度の簡単な奴だけだろw
ちょっと難しいのになると出てこないくせに
↑なんだこいつ?きめぇ。初歩的なもの以外、答えていないと思ってんのか?
お前がテンプレに沿った質問の仕方をしていないからって、答えないよと言っているだけで
テンプレに沿っていないけど初歩的ともいえる問題に答えることすら出来ないんだろ?w
gdgd言うなら別に答えなくて良いっつってんじゃん、ここはお前が主のスレじゃねーよ
答える側は任意

411 名前:デフォルトの名無しさん [2007/09/27(木) 02:26:46 ]
double data[5] ={10.8,20.3,30,6.40,10.4,2.12};

int main()
{
int last_index = sizeof(data)/sizeof(data[0]);
if (last_index-5)printf("This program is abnormal\n");// 平気か調べる。
for (double *p=data,sum=0.0;p!=data[last_index];p++){
sum+=*p;
}
char output_string[1024];
sprintf(output_string,"sum=%f,avg=%f",sum,sum/(float)last_index);
puts(output_string);
return 0;
}

死ね!

412 名前:デフォルトの名無しさん [2007/09/27(木) 02:49:45 ]
[1] 授業: 教科書
[2] OS Windows
[3]問題
double data[5] ={10.8,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です

413 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 03:01:06 ]
いいかげんこのネタやめろw

414 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 03:02:22 ]
>>396
node の定義や必要そうな include もこちらで補うのかい?

415 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 05:56:53 ]
>>396
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

struct node {
    char element;
    struct node *next;
};

int check(struct node *p, struct node *mid)
{
    int i, j, n = mid->element - '0';
    struct node *temp;
    for(i=0, temp = p; temp!=mid; i++, temp=temp->next);
    if(i!=n) return 0;
    for(i=0; i<n; i++, temp=temp->next) if(temp->next==NULL) return 0;
    for(i=0; i<n; i++, p=p->next) {
        for(temp=mid, j=0; j<n-i; j++, temp=temp->next);
        if(p->element != temp->element) return 0;
    }
    return 1;
}

416 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 05:59:16 ]
続き
struct node* mirror_image(struct node *list)
{
    struct node *p, *buf = NULL, *temp, *ret = (struct node*)malloc(sizeof(struct node));
    int max = 0;
    ret->next = NULL;
    for(p=list->next; p!=NULL; p=p->next) {
        for(temp=p->next; temp!=NULL; temp=temp->next) {
            if(isdigit(temp->element) && temp->element - '0' > max) {
                if(check(p, temp)) {
                    buf = p;
                    max = temp->element - '0';
                }
            }
        }
    }
    if(buf) {
        int i, l = 2 * max + 1;
        for(i=0, temp = ret; i<l; i++, buf = buf->next) {
            temp = temp->next = (struct node*)malloc(sizeof(struct node));
            temp->element = buf->element;
        }
        temp->next = NULL;
    }
    return ret;
}

417 名前:デフォルトの名無しさん [2007/09/27(木) 07:02:54 ]
>>396
眠いのに朝からやってやったお(^ω^)
ループ文なしでやってみたお。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4980.c

418 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 07:11:59 ]
- '0' とか意味無かったお・・・。冗長すぎワロタ欝出し脳

419 名前:デフォルトの名無しさん [2007/09/27(木) 11:01:25 ]
>>365



420 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:09:09 ]
>>396 1/2
char *createcs(struct node *list) {
 char *cs = 0;
 int i = 0;
 struct node *p;
 for (i = 0, p = list->next; p; i++, p = p->next) continue;
 cs = (char *)malloc(sizeof(char) * (i + 1));
 for (i = 0, p = list->next; p; i++, p = p->next) cs[i] = p->element;
 cs[i] = '\0';
 return cs;
}

421 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:09:41 ]
>>396 2/2
struct node *mirror_image(struct node *list) {
 char *cs = createcs(list);
 struct node *mirror = 0;
 int i, j, n, maxn_index = -1;
 for (i = 0; i < strlen(cs); i++) {
  if (!isdigit(cs[i])) continue;
  
  n = cs[i] - '0';
  if (i < n || (strlen(cs) - 1 - i) < n) continue; // 無理
  if (n < cs[maxn_index] - '0') continue; // 無駄
  for (j = 0; j < n; j++) { // n個チェック
   if (cs[i - (j + 1)] != cs[i + (j + 1)]) break;
  }
  if (n == j && cs[maxn_index] - '0' < n) maxn_index = i;
 }
 cs[maxn_index + (cs[maxn_index] - '0') + 1] = '\0';
 if (0 < maxn_index) {
  mirror = initclist(&cs[maxn_index - (cs[maxn_index] - '0')]);
 } else {
  mirror = (struct node *)calloc(1, sizeof(struct node));
 }
 free(cs);
 return mirror;
}

422 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:12:47 ]
>リストを配列にコピーするのは御法度です

423 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:20:08 ]
(ノ∀`) アチャー

424 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:22:00 ]
>>396
リストの先頭が空って、なんか気持ち悪くない?

425 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 13:34:59 ]
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク): 四則演算を関数としてもっているプログラム。
実数と整数の両方に対応し、式と結果を表示。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:10月1日
[5] その他の制限:scanfを使用、関数はPlus(float a,float b)。
main関数では2つの数字を入力、関数Plusを呼び出し。
考えでは↓
実数では、float c; c=a+b;
整数では、int d; d=(int)a+(int)b;
最後にprintfを使って表示します。

宜しくお願いします<(_ _)>

426 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 13:52:40 ]
>>425
#include <stdio.h>

float Plus(float,float);

int main()
{
float a,b;

printf("1つ目=>");
scanf("%f",&a);
printf("2つ目=>");
scanf("%f",&b);

printf("float:%f\nint:%d",Plus(a,b),(int)Plus((int)a,(int)b));
return 0;
}

float Plus(float a,float b)
{
return a+b;
}

C++でもいいなら関数オーバーロードを使った方がいいと思うよ

427 名前:デフォルトの名無しさん [2007/09/27(木) 15:00:40 ]
[1] ファイル入出力
[2] 引数で渡された文字列をファイルに出力する関数を作り、入力した文字列をファイルに出力する。
[3] 環境
 [3.1]WindowsXP
 [3.2]BorlandC++
 [3.3]C++

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

void sdata(char str);

void main(void)
{
char str[128];

scanf("%s",str);
}

void sdata(char str)
{
FILE *fp;

fp = fopen("Return.txt","w");

fwrite(str,sizeof(str),1,fp);
}
一応自分でこんな感じかなみたいのはあるんですが…ここからよく分からないのです。

428 名前:425 mailto:sage [2007/09/27(木) 16:14:56 ]
>>426さん ありがとうございます。
四則の問題があるので、Plus()関数に
int s;
printf("1.+ 2.- 3.* 4./ =>");
scanf("%d",&s);
if(1==s){return a+b;
}else if(2==s){
return a-b;
}else if(3==s){
return a*b;
}else if(4==s){
return a/b;
}
と追加してみたら
1つ目=>4
2つ目=>2
1.+ 2.- 3.* 4./ =>4
1.+ 2.- 3.* 4./ =>3
float:8.000000
int:2
と出力されました。
1.+ 2.- 3.* 4./ =>のところを1回だけ表示するにはどうすると良いでしょうか?

429 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 16:55:26 ]
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):読み込んだ整数の段数を持つピラミッドを表示するプログラム
例:3
  *
 ***
*****
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:10月1日
[5] その他の制限:scanf,forを使用



430 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:04:03 ]
#include <stdio.h>

int main(void)
{
int i, j, n;

scanf("%d", &n);

for(i=0; i<n; i++) {
for(j=0; j<n-1-i; j++) putchar(' ');
for(j=0; j<2*i+1; j++) putchar('*');
putchar('\n');
}

return 0;
}


431 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:25:37 ]
>>428
>int s;
>printf("1.+ 2.- 3.* 4./ =>");
>scanf("%d",&s);
をPlus関数からmain関数に移し、Plus関数は新たに引数としてsを受け取るようにする

432 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:27:04 ]
>>429
#include<stdio.h>
int main(int c,int v){
if(c==1){
scanf("%d",&v);
main(v+1,v);
}
else{
int i;
if(c!=2)main(c-1,v);
for(i=0;i<v-c+3/2;i++)printf(" ");
for(i=0;i<2*c-3;i++)printf("*");
printf("\n");
}
return 0;
}

433 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:36:09 ]
>>429
#include <stdio.h>
int padd(int n, char c) {
 if (!n) return;
 putchar(c);padd(n - 1, c);
}
void pyramid(int n, int m, char c) {
 if (n <= m) return;
 padd(n - m - 1, ' ');
 padd(2 * m + 1, c);
 puts("");
 pyramid(n, m + 1, c);
}
int main() {
 int n;
 scanf("%d", &n);
 pyramid(n, 0, '*');
}


434 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:36:19 ]
>>428 関数名が悪い
#include <stdio.h>
#include <stdlib.h>
float calc(float,float,int);
int main()
{
int i,s;
float a,b;
char mode[]="+-*/";
printf("1つ目の数=>");scanf("%f",&a);
printf("2つ目の数=>");scanf("%f",&b);
printf("演算子\n");
for(i = 0;i < sizeof(mode)-1;i++){
printf("%d.%c\n",i+1,mode[i]);
}
printf("=>");scanf("%d",&s);

printf("%f %c %f = %f",a,mode[s-1],b,calc(a,b,s));
return 0;
}

float calc(float a,float b,int s)
{
switch(s){
case 1:return a+b;
case 2:return a-b;
case 3:return a*b;
case 4:if(b == 0){printf("0では割れない");exit(1);
}else{return a/b;}
default:printf("演算子指定が正しくない");exit(1);
}
}

435 名前:425 mailto:sage [2007/09/27(木) 18:23:54 ]
>>431さん、>>434さん ありがとうございました。


436 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 20:34:23 ]
test

437 名前:デフォルトの名無しさん [2007/09/27(木) 23:08:36 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4982.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 9月28日18:00まで
[5] その他の制限: 特にないです

どちらか1つだけでも結構ですので、どうぞよろしくお願いします

438 名前:fubu ◆dFztVLlF36 mailto:sage [2007/09/27(木) 23:20:04 ]
>>390
ありがとうございますつД`)

439 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:29:36 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):構造体(詳細は下記)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: (C/C++ どちらでも可)
[4] 期限: [9/30]
[5] 問題文
「本」の商品名、価格、ページ数を10冊分入力し、
10冊分の価格の昇順・降順にソートするプログラムを作成しなさい。

よろしくお願いします



440 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:48:59 ]
>>439
それぞれの限界値は指定しないのか?

441 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:51:00 ]
>>439
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct bk{
string n;int v,p;
void r(){cin>>n>>v>>p;}
void w(){cout<<n<<" "<<v<<" "<<p<<endl;}
bool operator<(const bk&b)const{return v<b.v;}
};
int main(){
bk b[10];
for(int i=0;i<10;i++)b[i].r();
sort(b,b+10);
for(int i=0;i<10;i++)b[i].w();
return 0;
}

442 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:51:31 ]
>>437
1つ目 改行が多いって言われたのでこっちで
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4983.c

443 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 00:14:32 ]
>>440
すいません…
商品名[10]、価格[4]、ページ数[3]を入れるのを失念しておりました…
ですので、
>>441
ありがとうございます!!
こちらのソースを元になんとか自分で考えてみます。


444 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 00:45:51 ]
>>437
2つ目
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4984.txt

445 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 01:20:44 ]
>>437 先越されたけど2つ目 君の瞳に映った僕に乾杯
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4985.c

446 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 07:35:42 ]

----【即系サイト×優良サイト=即会い即やり!】-----------------------

優良出会い系サイトと即出会えるサイトを併用して使い、即会いライフを楽しんでいます。
これが面白いほど会える☆ 会った後は・・・
俺の場合、出会い系サイト3つで女の子と週2〜3で出会えてます。
これ以外にもお気にの女の子とは週1で会ってます。

今回は皆さんにも出会いを楽しんでもらいたいので、俺が使っている
登録後一日以内に出会えたサイトを紹介するブログ始めました。
皆も休日にエンジョイしてください!

↓↓↓
【即出会えるサイト紹介ブログ】
deaigets.blog97.fc2.com/

--------------------------------------------------------------------

447 名前:437 [2007/09/28(金) 09:35:59 ]
>>442
>>444
>>445
本当にありがとうございます
助かりました

448 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 11:20:28 ]
任意の長さの文字列(英字のみ)データをファイルから読み込み、辞書順に並べ替えて
最終結果のみを表示するプログラムを作成する宿題なんですが、ファイルを読み込もうと
するところでなぜか止まってしまいます。原因がよくわからないので助けてください…。

Cテキスト
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4986.txt

読み込みファイル用テキスト(これじゃなくてもOK)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4987.txt


細かい指定は、
・英字の大文字小文字に関しては凝らなくていい
・データ最大数は1000
・文字列の最大長は64
・データは改行で区切られている


449 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 11:28:03 ]
>>448
そういうときは、色々な変数の値をprintfで吐き出すと良いよ

> scanf("%s,in_filename");



450 名前:448 mailto:sage [2007/09/28(金) 12:01:37 ]
なんというくだらないミス\(^O^)/

申し訳ありませんでした……

451 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 12:50:24 ]
ファイル読めない時のエラーメッセージもだしとけよ

452 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 15:00:32 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
/****memo.txt********/
atsusa a ts u s a
au a u
awatadashii a w a t a d a sh i i
awa a w a
/*********************/

このmemo.txt というファイルがあるとして、
このファイルを読み込み、右の「a,ts,u,s,a」という単位で
かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目)
a
ts
u
s
a
と表示できるようにしなさい。

[3] 環境
 [3.1] OS:LINUX
 [3.3] 言語:C
[4] 期限:早いほうがいいです
[5] その他の制限:なし



453 名前: ◆EtzJSByuaQ mailto:sage [2007/09/28(金) 16:43:58 ]

【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):圧力P一定の下、温度変化量ΔTしたとき、1molの理想気体のガス容積の変化量ΔVを算出する関数を作成しなさい
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler
ver2.31
 [3.3] 言語:C++
[4] 期限:2007年09月28日20時くらいまで


本当にわからなくて困っています。よろしくお願い致します。

454 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:29:14 ]
[1] 授業単元: プログラミング演習
[3] 環境
 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
[4] 期限: 9月29日(土)午後9時まで
[5] その他の制限: ポインタ、構造体、配列、関数まで習ったので、この範囲内でお願いします。


[2] 問題文(含コード&リンク):
**発展課題**について【下に、発展課題の問題文、自分の作成したプログラムをのせます】、
各口座のデータをバイナリファイルに保存する機能(口座データが変更される度にfwriteで)
各口座のデータをバイナリファイルから読み込む機能(プログラム起動時に1 回のみfreadで)を追加せよ.実行例を下に示す。

% ./kadai13
口座データ読込み(1:ファイルから2:初期値を使用)? 1
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 20000
ありがとうございました.残高は518600 円です
口座データ保存(1:ファイルへ2:保存しない)? 1
口座番号を入力してください: ← 口座番号入力に戻る

発展課題の問題については>>455
それに対する自分のプログラムは>>456

455 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:29:46 ]
****************発展課題の問題文****************

ATM(Automated Teller Machine; 現金自動預け払い機) システムを実現するプログラムを作成する.
最初に,氏名,口座番号,暗証番号,預金残高を要素とする構造体を定義し,512 人分の口座が作成可能なようにせよ.
また,初期値として次のように構造体の内容を設定せよ.

• 田中太郎の口座番号は1234 で,預金残高を1,234,560 円に設定する.
• 山田花子の口座番号は5678 で,預金残高を 987,600 円に設定する.
• 鈴木一郎の口座番号は9012 で,預金残高を 538,600 円に設定する.
• 暗証番号は口座番号に1111 を足して10000 で割った余りに設定する.

このとき引出しの機能を実現せよ。具体的には,口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をするプログラムを作成せよ.
実行例を以下に示す

% ./kadai10
口座番号を入力してください: 5000 ← 存在しない
暗証番号を入力してください: 0123
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 5555 ← 間違っている
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 1000000 ← 預金額より多い
預金額が不足しています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 20000
ありがとうございました.残高は518600 円です.
口座番号を入力してください: ← 始めに戻る

456 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:35:06 ]
**********発展課題について自分が作成したプログラム***************
#include<stdio.h> #include<string.h> #define MAC 256
main(){
char save[MAC]; int account; int code; int draw; int i;
struct{
char name[MAC]; int account; int code; int balance;
}ATM[500];
strcpy(ATM[0].name,"田中太郎"); ATM[0].account=1234; ATM[0].code=(ATM[0].account+1111)%10000; ATM[0].balance=1234560;
strcpy(ATM[1].name,"山田花子"); ATM[1].account=5678; ATM[1].code=(ATM[1].account+1111)%10000; ATM[1].balance=987600;
strcpy(ATM[2].name,"鈴木一郎"); ATM[2].account=9012; ATM[2].code=(ATM[2].account+1111)%10000; ATM[2].balance=538600;
printf("あなたの口座番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&account);
for(i=0;i<=500;i++){ if(account==ATM[i].account) break; }
if(account!=ATM[i].account){ printf("そのような口座は存在しません.\n"); }
else{ printf("暗証番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&code);
for(i=0;i<=500;i++){ if(code==ATM[i].code) break; }
if(code==ATM[i].code){ printf("%s 様ですね.\n",ATM[i].name); printf("引出し金額を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&draw);
if(draw<0){ printf("ERROR!!\n"); }
else if(draw>ATM[i].balance){ printf("金額が不足しています.\n"); }
else if(draw<=ATM[i].balance){ printf("預金残高は %d 円です.\n",ATM[i].balance-draw); }}
else if(code!=ATM[i].code){ printf("認証に失敗しました.\n"); }}
return(0);
}

457 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:40:24 ]
長文で申し訳ないですが、是非ともよろしくお願いします。m(_ _)m

458 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 18:00:37 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):文字列AB、CD、EF、GHがある。キーボードから文字を入力しこの文字列があればそれを取り出す。
                  全部取り出したら終了する。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: BCC5.5
 [3.3] 言語:C
[4] 期限: 2007/10/1
[5] その他の制限:実行例
            現在:AB、CD、EF、GH
            文字を入力してください:AB
            ABはありました。
            現在:CD、EF、GH
            文字を入力してください:TR
            TRはありません。
            現在:CD、EF、GH
            文字を入力してください:
                ・
                ・
                ・
            現在:GH
            文字を入力してください:GH
            GHはありました。
            これで終了します。

459 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 18:46:37 ]
#include <stdio.h>
#include <string.h>
int main(void){
  char *a[]={"AB","CD","EF","GH"},b[9],c[]="現在:%s",d[]="、%s",*e;int i;
  while(1){
    e=c;
    for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
      if(a[i]){
        printf(e,a[i]);
        e=d;
      }
    }
    if(e==c) break;
    printf("\n文字を入力してください:");
    scanf(" %8[^\n]",b);
    for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
      if(a[i] && !strcmp(a[i],b)){
        printf("%sはありました。\n",b);
        a[i]=0;
        goto found;
      }
    }
    printf("%sはありません。\n",b);
    found:;
  }
  puts("これで終了します。 ");
  return 0;
}





460 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 19:02:44 ]
gotoかよw

461 名前:デフォルトの名無しさん [2007/09/28(金) 21:50:48 ]
[1]授業単元:プログラミング演習
[2]問題文:ポインタをつかって@変数aのアドレスを獲得する。A変数bのアドレスを変数aのアドレスの4バイト後方におきたい。B変数aのアドレスの4バイト後方に(a+90)の値を代入する。CA、Bの結果をprintf文で出力。
[3]環境
[3.1]Windows、Visual stdio Japan2005
(注)エラーが出ると思いますが、結果は出ます。
お願いします。

462 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 21:58:40 ]
変数の型は?

463 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 22:12:58 ]
一気に宿題されすぎでおれの宿題が答えられてないな。。。
おれも片付けに参加しようかね。

464 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 22:16:59 ]
どれ?

465 名前:デフォルトの名無しさん [2007/09/28(金) 22:48:52 ]
>>459 >>460

blogs.wankuma.com/jitta/archive/2007/09/27/98335.aspx
blogs.wankuma.com/jitta/archive/2007/09/28/98562.aspx

466 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:10:13 ]
>>452
どの程度自由度があるかわかんね.
"memo.txt"というファイル名に対して,a ts u saを表示するだけでいいの?
それとも,そのコメント風の部分も評価しなきゃいけないの?

467 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:28:39 ]
goto文使うとプログラム読みにくくなるしループとか抜け出すならbreakとかあるからな。
俺も極力使うなって言われたけど中にはそっちの方が分かりやすいって人もいるんじゃない?

468 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:35:31 ]
>467
この例だと分かりにくいぞw
判定ループは関数化して、戻り値で ありました/ありません 表示だろ、普通。

469 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:58:10 ]
条件判定部にsizeof(a)/sizeof(a[0])なんて書いてるのみると、
深い考えがあってgoto使ってるようには見えないけどな



470 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:05:25 ]
goto無しで作ってみるか?

471 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:18:17 ]
>>470
横槍で良く分かってないけど、コレで良いか?

for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
printf("%sはありました。\n",b);
a[i]=0;
break;
}
}
if(i==sizeof(a)/sizeof(a[0])) printf("%sはありません。\n",b);


472 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:22:35 ]
それだと、最後のifがムダだって言いたいんだろ

473 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:37:36 ]
じゃあこうか?

char *format;
・・・
format = "%sはありません。\n";
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
a[i]=0;
format = "%sはありました。\n";
break;
}
}
printf(format,b);

474 名前:452 mailto:sage [2007/09/29(土) 00:39:29 ]
/****memo.txt********/
atsusa a ts u s a
au a u
awatadashii a w a t a d a shi i
awa a w a
/*********************/
ちょっといろいろ考えてたんだけど。
このファイルを読み込み、右の「a,ts,u,s,a」という単位で
かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目)
a
ts
u
s
a
という風な形で、ファイル"output1.txt"と出力するようにしなさい。
ってのがいいかな。
”atsusa a ts u s a”のスペースがくるたびに改行して配列にいれて、その1つ目を無視して2つ目から
配列にいれて出力すればいんだけどどう書けばいいのかわからなくて。


475 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:48:16 ]
フラグ使って一つ目のスペースがくるまで飛ばせば?

476 名前:デフォルトの名無しさん [2007/09/29(土) 01:01:46 ]
>>461
型はintの整数です。

477 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 01:05:30 ]
変数bのアドレスは宣言時に決まるから、aのアドレスを得てからその4バイト後ろをbのアドレスにするってのは無理

478 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 01:17:52 ]
>>474
ファイルのフォーマットが今ひとつ分かんないので、チョー手抜き。
1行は254文字以下、行末にスペースが無い、単語間のスペースが1つという条件。
#include <stdio.h>
#include <string.h>
int main()
{
FILE *ifp, *ofp;
char line[256];
char *pos;
if((ifp = fopen("memo.txt", "r")) == NULL) { return 1; }
if((ofp = fopen("output1.txt", "w")) == NULL){ fclose(ifp); return 1; }
while(fgets(line, 256, ifp) != NULL){
if((pos = strchr(line, ' ')) != NULL){
for(pos++;*pos != '\0';pos++){
if(*pos == ' '){ fprintf(ofp, "\n"); }
else{ fprintf(ofp, "%c", *pos); }
}
}
}
fclose(ifp); fclose(ofp);
return 0;
}

479 名前:デフォルトの名無しさん [2007/09/29(土) 03:43:34 ]
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):
ファイルにN×Nの整数行列が2つ書き込まれている。この2つの行列積を求め、
解を違うファイルに書き込みなさい。
ただし、2つのN×N整数行列のデータは
3
1 2 3
5 6 7
1 2 3

3 2 1
3 4 5
6 7 8

のように書き込まれているとする。
(先頭の値で次元Nを指定している。)
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C言語)
[4] 期限: 07年9月30日まで
[5] その他の制限:入力ファイル、出力ファイルはともに任意のファイル名を
指定できるようにする。

「257」の方のプログラムが見た感じ似ていたので、挑戦してみたのですが
やはり無理でした…



480 名前:459 mailto:sage [2007/09/29(土) 04:58:00 ]
何か夜中にいろいろやりとりあったみたいやね。
とりあえず>>458はgotoまずかったらテキトーに直しといて。
1番いいのは>>468だけど、>>471>>473に置き換えてもいいんじゃないかな。
講師がソースろくすっぽ見ないってんなら関係ないけど。

481 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 05:17:34 ]
>>476
型が int なら
int a, b;
int b, a;
のいずれか(環境依存)で a の4バイト後ろに b が配置されるけど題意の様に
『a のアドレスを得てから』は無理だな
出題者は &b = (&a)++; が可能だとでも思ってるのかな

482 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 05:39:05 ]
>>474
strtok() 使えば簡単じゃね?禁止されてるなら

char buf[100]; // に "atsusa a ts u s a\n" が入ってると考えてね

char *top, *ptr;
top = strchr( buf, ' ' );
if( top ) {
  top++;
  while( 1 ) {
     ptr = strchr( top, ' ' );
     if( ptr ) *ptr = '\n';
     else break;
  }
  printf( "%s", top );
}
で出力できると思うけど、区切りの ' ' が複数連続すると余計な改行が発生するから30点くらい?




483 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 07:11:26 ]
>>479
>>316 に追加で
int main(void){
FILE *fp_in, *fp_out;
int N=0, column, row;
matrix_t *a, *b, *c;

fp_in=fopen("ファイル", "r");
if(fp_in==NULL) return 1;
fp_out=fopen("違うファイル", "w");
if(fp_out==NULL){
fclose(fp_in);
return 1;
}
fscanf(fp_in, "%d", &N);
a=matrix_alloc(N, N);
b=matrix_alloc(N, N);
for(column=0;column<N;column++)
for(row=0;row<N;row++) fscanf(fp_in, "%lf", &a->data[column][row]);

for(column=0;column<N;column++)
for(row=0;row<N;row++) fscanf(fp_in, "%lf", &b->data[column][row]);

c=matrix_mul(a, b);
for(column=0;column<N;column++){
for(row=0;row<N;row++) fprintf(fp_out, " %.0f", c->data[column][row]);
fprintf(fp_out, "\n");
}
fclose(fp_in);
fclose(fp_out);
return 0;
}

484 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 07:39:15 ]
>>474
#include<stdio.h>

int main(void)
{
char buf[1000];
FILE *fp=stdin;
int is_top=1;

while(1)
{
if(fscanf(fp, "%[^ \t\n]", buf)==1){
if(!is_top) printf("%s\n", buf);
is_top=0;
}
else if(fscanf(fp, "%[ \t]", buf)==1)
{
}
else if(fscanf(fp, "%1[\n]", buf)==1)
{
is_top=1;
}
else
{
break;
}
}
return 0;
}

485 名前:デフォルトの名無しさん [2007/09/29(土) 11:44:39 ]
>>454->456をお願いしますm(__)m

486 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 11:47:41 ]
>>453
double dv(double p,double dt){return 8.314/p*dt;}

487 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 12:05:27 ]
>>485
456の動きが455の表示の例と違うんだけど、それは無視して良いんかな?

488 名前:479 [2007/09/29(土) 12:19:43 ]
>>483
matrix_t *a, *b, *c; 部分でエラーが出てしまいます。
あと、ファイル指定は>>257の方のような、キーボードから行える形にしてもらいたいのですが・・・
よろしくお願いします。

489 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 12:31:35 ]
>>488
>>483 をよく読んでから
>>257 の必要な部分をコピペでおk
あと、変数名はどちらか合わせないといけない



490 名前:479 [2007/09/29(土) 14:50:00 ]
>>489
すみません。そのプログラムを作成してもらえないでしょうか?
力不足でプログラムを応用して完成することが無理なんです・・・

491 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 14:51:56 ]
それをやらなければ身につかんだろうが

492 名前:デフォルトの名無しさん [2007/09/29(土) 14:52:51 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): 下記
[3] 環境
 [3.1] OS: (Windows)
 [3.2]
 [3.3] 言語: (C)
[4]9/29
かなりの初心者でさっぱりです。ヨロシク願いします。

以下のプログラムは、入力された10個の数値を引き算し、その結果を表示するプログラムです。
9〜11行目を別の関数(関数名はFuncDev)とし、修正しなさい。
ただし、グローバル変数は使わないこと。また、FuncDev内のローカル変数名は任意とする。
FuncDev関数は以下の定義とする。

int FuncDEv(void)
FuncDev関数の戻り値は、画面入力されたint型データとする。

#include<stdio.h>
void main(void);
void main(void)
{
int n1,n2;
int nt;
nt=0;
for(n1=0;n1<10;n1++){
printf("0-9の数値を入力:");
scanf("%d,&n2");
nt-=n2;
}
printf("結果%dです"nt);
}

493 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 15:03:33 ]
#include<stdio.h>

int FuncDev(void)
{
int n2;
printf("0-9の数値を入力:");
scanf("%d", &n2);
return n2;
}

void main(void)
{
int n1,n2;
int nt;
nt=0;
for(n1=0;n1<10;n1++){
n2= FuncDev();
nt-=n2;
}
printf("結果%dです", nt);
}

494 名前: ◆vLIz8KOkPM [2007/09/29(土) 16:11:51 ]
>487
456のプログラムで大丈夫です。よろしくお願いしますm(__)m

495 名前:474 mailto:sage [2007/09/29(土) 17:37:56 ]
>478、484
ありがとうございました。
ちょっと作り替えて表示できました。
表示できたこの
a
ts
u
s
a

a
u

a
w
...
とできたのですが、これを
a a a
ts u w
u a
s t
a a
d
a
と言う風にchar型の二次元配列に格納したいんですけど。
このあとに列単位で違う関数に送りたいんですけど可能ですかね。

496 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 17:40:46 ]
>>494
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4991.txt

497 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 17:45:48 ]
>>461
>エラーが出ると思いますが、結果は出ます。
こういうこと?

#include <stdio.h>

int main(){
int a , *b;

printf("a?>");
scanf("%d" , &a);

b = &a + 1;
printf("Address:a=>%d , b=>%d\n" , &a , b);

*b = a + 90;
printf("Value:a=>%d , b=>%d" , a , *b);

return 0;
}
まあ、bのアドレスがaの4バイト先にあるわけじゃないけど、出題者はこういうことを言いたいんじゃね?
エラー出ないけどw

498 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 19:23:14 ]
>>495
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]){
    FILE *fp;
    int row = 0, col = 0, max_col = 0, i, j;
    char buf[128], *p, str[128][128][3] = {0};

    if(argc < 2 || (fp = fopen(argv[1], "r")) == NULL) return 0;

    while(fgets(buf, sizeof(buf), fp) != NULL){
        p = strtok(buf, " \n");
        while((p = strtok(NULL, " \n")) != NULL) strcpy(str[row][col++], p);
        row++, col = 0;
    }
    fclose(fp);

    for(i = 0; i < row; i++){
        for(j = 0; str[i][j][0] != '\0'; j++) ;
        if(j > max_col) max_col = j;
    }

    for(j = 0; j < max_col; j++){
        for(i = 0; i < row; i++)
            if(str[i][j][0] != '\0') printf("%2s ", str[i][j]);
            else printf("%*c", 3, 32);
        printf("\n");
    }

    return 0;
}

499 名前: ◆vLIz8KOkPM [2007/09/30(日) 01:55:24 ]
>>496
お返事遅れてすみません…
お陰様で助かりました。大変ありがとうございましたm(__)m



500 名前:452 mailto:sage [2007/09/30(日) 02:29:03 ]
>>495
作ってくれたのはありがたいんですけど、少々考え直しまして。
めんどくさいけど大量にファイルを出力してから、それを入力したほうが
作ってあるプログラムにあわせやすいので。
そこでちょっとまた疑問がでまして。
a
ts
u
s
a

a
w
a

a
u

というファイル(例えばalpa_file.txt)があるとして、この何もかかれていない
行にきたら、それまでの文字をファイル出力して、また次の行にいき、すすんでいって、何もかかれてない行にきたら
また違うファイルに出力みたいにしたいんですけど。

501 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 02:46:25 ]
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4992.txt
長くなったのでロダの方へ上げました
どうか皆様の知恵をお願いします

502 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 07:16:59 ]
>>501
>>1嫁。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
<略>
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。


ということでお前はもう質問禁止な方向に。


503 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 07:34:39 ]
>>502
>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。

504 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 08:46:53 ]
無限ループの予感。

505 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:39:56 ]
>>503
>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。


>>504
こうですかわかりません><

506 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:41:30 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):口頭で説明されたので問題文はありません。

入力した2文字のアルファベット4組(たとえば ae、bd、ac、ab)を
アルファベット順(上の例だったら ab、ac、ae、bd)に表示せよ
また数字でも同じことをせよ(3、4、2、1→1、2、3、4)

あとリスト構造を使えとか言ってました

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:学校のはよくわからんです
 [3.3] 言語:C
[4] 期限: 2007年10月3日まで
[5] その他の制限:とくにないです

よろしくおねがいします

507 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:50:16 ]
>>506
「リスト構造を使え」というのは、その問題に関しては何か不自然。
もういちど問題を確認することをお勧めする。

508 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:01:02 ]
リストのソートだろ?普通じゃね?

509 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:11:52 ]
>>508
要素数がたった4つに固定されていたら、
リストを使う意味は全く無いと思うけど。

俺は、要素数4つというのは単に説明の例で、
本当はもっと多いか不明のどちらかだと予想してる。



510 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:03:59 ]
>>509
すみません、聞いてみたら4つで固定とは言ってなかったとです。

511 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:55:31 ]
C言語で、二重ループを用いた20行以上のプログラムと二重ループと配列を使った20以上のプログラムをレポートで出されたのですが、何か知っていたら教えてください。
始まりの部分は、
#include<stdio.h>
int main(void)
{
でお願いします
携帯からですいません

512 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 18:04:41 ]
>>511
知るか(笑)

513 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 18:45:52 ]
どんだけ漠然としてるんだwwww

514 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 18:45:59 ]
>>506, >>510
入力はキーボードから。EOF (CTRL-D など)で入力終了。
エラーチェックは特にしていない。挿入ソート。

二文字文字列バージョン:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4994.c

整数値バージョン:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4995.c

515 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 18:54:29 ]
>>501
P^-1 は手で計算してよろしい?それとも
プログラム上で計算しないとダメ?

あと #include <stdio.h> だけど C++ でいいの?

516 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 19:43:45 ]
>>514
面白いな

517 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 20:32:33 ]
>>501
#include<stdio.h>

int main(void){
int i, j, n, num[9+1];

while(1)
{
printf("行数(1-9):");
scanf("%d", &n);
if(1<=n && n<=9) break;
printf("\nエラー\n");
}

num[0]=num[1]=1;
for(i=0;i<n;i++)
{
num[i+1]=0;
for(j=i;j>=0;j--) num[j+1]+=num[j];
for(j=0;j<=i+1;j++) printf(" %d", num[j]);
printf("\n");
}
return 0;
}

518 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 20:38:28 ]
言語間違えた orz
#include<iostream>

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

while(1){
std::cout << "行数(1-9):";
std::cin >> n;
if(1<=n && n<=9) break;
std::cout << std::endl << "エラー" << std::endl;
}

num[0]=num[1]=1;
for(i=0;i<n;i++){
num[i+1]=0;
for(j=i;j>=0;j--) num[j+1]+=num[j];
for(j=0;j<=i+1;j++) std::cout << num[j] << " ";
std::cout << std::endl;
}
return 0;
}

519 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 21:42:56 ]
>>500
日本語でおk
少し長い文章を書くと内容がめちゃくちゃになるようなので
何をしたいのか最初から箇条書きで書き直し



520 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 21:48:50 ]
>>515
自分で計算してOKです
そして言語ですが、確認したらCでもC++でも可能との事
問題文のソース例はCの場合でした

521 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 21:49:34 ]
>>511
>>517

522 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 21:57:28 ]
サンクス!

523 名前:500 mailto:sage [2007/09/30(日) 22:01:09 ]
以下のファイル(file1.txt)があるとします。
このファイルをfgetsで読み込んで、文字が書かれてない行にきたら
それまで読み込んだ文字を違うファイル(output_file1.txt)に出力します。
出力したらまた元のファイルの読み込みを始めます。そして文字が書かれてない行に
きたら、また違う別のファイル(output_file2.txt)に出力します。
読み込むファイルfile1.txtが
a
ts
u
s
a

a
w
a

a
u
とすると
出力するファイルoutput_file1.txtに
a
ts
u
s
a
また次の出力するファイルoutput_file2.txtに
w
a
と出力できるようにしたいということです。すみません説明できなくて



524 名前:500 mailto:sage [2007/09/30(日) 22:02:17 ]
>また次の出力するファイルoutput_file2.txtに
>w
>a

でなくて
a
w
a
です

525 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 22:25:40 ]
fout=0として書き込む前にチェックするのが普通だろうが、まあいいや。
#include <stdio.h>
int main(void){
char buff[256];int i=1;
FILE *fin=fopen("file1.txt","r"),*fout=fopen("output_file1.txt","w");
while(fgets(buff,sizeof(buff)/sizeof(buff[0]),fin)){
if(buff[0]=='\n'){
fclose(fout);
sprintf(buff,"output_file%d.txt",++i);
fout=fopen(buff,"w");
}else{
fputs(buff,fout);
}
}
fclose(fout);fclose(fin);
return 0;
}


526 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 22:29:03 ]
>>523-524
重要なのは
どんな入力に対して
どんな出力が必要か
を明記する事であって、ころころ変わるあなたの考える処理方法ではない

仮に、読み上げソフトか何かに与えて、同時発音させるのが目的ならば
あなたの考えはあと何回も変わるだろうし…
もう少し、何の為に何をどうしたいのかを整理して出直してきて下さい


[user]$ awk -f a.awk < memo.txt

#!/bin/awk -f
BEGIN{count=1}
!/^$/ && NF>1{
filename=sprintf("output_file%d.txt", count);
for(i=2;i<=NF;i++) print $i>> filename
count=count+1;
}

527 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:02:45 ]
未回答&&期限内の問題ってある?

528 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:06:49 ]
>>527 Hello Worldを表示せよ

529 名前:500 mailto:sage [2007/09/30(日) 23:14:39 ]
525
ありがとさん



530 名前:デフォルトの名無しさん [2007/09/30(日) 23:16:12 ]
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4998.txt
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限:10月1日午前1時まで
[5] その他の制限:C言語を習い始めてまだ3ヶ月程度です
         よろしくおねがいします

531 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:23:48 ]
>>530
課題1
#include <stdio.h>
int main( void )
{
int year;
int check;
scanf( "%d", &year );

if ( year % 400 == 0 ) {
check = 1;
}
else if ( year % 100 == 0 ) {
check = 0;
}
else if ( year % 4 == 0 ) {
check = 1;
}
else {
check = 0;
}

if ( check == 0 ) {
printf( "閏年ではありません" );
}
else {
printf( "閏年です" );
}

return 0;
}

532 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:33:35 ]
>>530
課題2(むりやりswitch使った悪い例)
#include <stdio.h>
int main( void ){
const char * const tv_name[] = {
"HBC", "NHK総合",
"STV", "NHK教育",
"TVH", "UHB",
"HTB",
};
int channel;
scanf( "%d", &channel );

switch ( channel ) {
case 1: channel = 0; break;
case 3: channel = 1; break;
case 5: channel = 2; break;
case 12: channel = 3; break;
case 17: channel = 4; break;
case 27: channel = 5; break;
case 35: channel = 6; break;
default: channel = -1; break;
}
if ( channel != -1 ) {
printf ( "%s", tv_name[ channel ] );
}
return 0;
}

533 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:35:40 ]
遅れたorz
#include <stdio.h>

int main(void){
int input;
char *channel=NULL;
scanf("%d",&input);
switch (input){
case 1:channel="HBC";break;
case 5:channel="STV";break;
case 12:channel="NHK教育";break;
case 17:channel="TVH";break;
case 27:channel="UHB";break;
case 35:channel="HTB";break;
default:channel="砂嵐";break;
}
printf("%s\n",channel);
return 0;
}

534 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:39:37 ]
#include <stdio.h>

int main(void)
{
int a;
printf("西暦を入力してください。");
scanf("%d",&a);

if((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
printf("%d年は閏年です。\n ",a);
else
printf("%d年は閏年じゃありません。\n",a);

return(0);
}


535 名前: ◆AsDEGV.0To [2007/10/01(月) 00:02:45 ]
[1] 授業単元:コンピュータとプログラミング
[2] 問題文(含コード&リンク):
年月日(YYYY MM DD)と10個の整数値をキーボードから入力し、それにの値を
バイナリファイルに保存するプログラムを作成すること。それぞれの値の形は、
年(short),月(short),日(short),入力した整数値(int)とすること。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限:2007年10月01日01:10まで
[5] その他の制限:ポインタ・ファイル入出力迄はやっています。

宜しくお願いします。

536 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 00:14:46 ]
バイナリで保存しなきゃだめなの?

537 名前:530 [2007/10/01(月) 00:19:17 ]
>>531
>>532
>>533
>>534
ありがとうございます

538 名前: ◆4Jr51i3qWE [2007/10/01(月) 00:21:27 ]
>>536
バイナリと指定されています

539 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 00:26:59 ]
>>535
#include<stdio.h>

int main(void)
{
short year, month, day;
int i, value[10], value_num=sizeof(value)/sizeof(value[0]);
FILE *fp;

printf("年:");
scanf("%hd", &year);
printf("月:");
scanf("%hd", &month);
printf("日:");
scanf("%hd", &day);
for(i=0;i<value_num;i++)
{
printf("%2d番目の数値入力:", i+1);
scanf("%d", &value[i]);
}

fp=fopen("binary.dat", "wb");
if(fp==NULL) return 1;

fwrite(&year, sizeof(year), 1, fp);
fwrite(&month, sizeof(month), 1, fp);
fwrite(&day, sizeof(day), 1, fp);
fwrite(value, sizeof(value[0]), value_num, fp);
fclose(fp);

return 0;
}



540 名前:デフォルトの名無しさん [2007/10/01(月) 00:29:37 ]

チョン、さっさと死ねや

541 名前: ◆4Jr51i3qWE [2007/10/01(月) 00:30:38 ]
>>539
有難うございました。

542 名前:デフォルトの名無しさん [2007/10/01(月) 00:32:55 ]

チョン、さっさと死ねや

543 名前:デフォルトの名無しさん [2007/10/01(月) 00:33:43 ]

チョン、さっさと死ねや

544 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 00:34:18 ]
キョンかと思った俺はハルヒ厨

545 名前: ◆4Jr51i3qWE [2007/10/01(月) 00:56:01 ]
2番目の問題もお願いします。

[1] 授業単元:コンピュータとプログラミング
[2] 問題文(含コード&リンク):
年月日(YYYY MM DD)と10個の整数値をキーボードから入力し、それにの値を
バイナリファイルに保存するプログラムを作成すること。それぞれの値の形は、
年(short),月(short),日(short),入力した整数値(int)とすること。

上記の問題で作成したファイルを読み込んで、内容をディスプレイに順番に表示するプログラムを作成する事。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限:2007年10月01日01:55まで
[5] その他の制限:ポインタ・ファイル入出力迄はやっています。

連続になりますが、お手数掛けます。

546 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 01:01:45 ]
>>545
#include<stdio.h>

int main(void)
{
short year, month, day;
int i, value[10], value_num=sizeof(value)/sizeof(value[0]);
FILE *fp;

fp=fopen("binary.dat", "rb");
if(fp==NULL) return 1;

fread(&year, sizeof(year), 1, fp);
fread(&month, sizeof(month), 1, fp);
fread(&day, sizeof(day), 1, fp);
fread(value, sizeof(value[0]), value_num, fp);
fclose(fp);

printf("%d %d %d\n", year, month, day);
for(i=0;i<value_num;i++)
{
printf("%2d番目の数値:%d\n", i+1, value[i]);
}

return 0;
}

547 名前: ◆4Jr51i3qWE [2007/10/01(月) 01:04:48 ]
ありがとうございます。

548 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 02:05:28 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4999.txt
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月1日23:00まで
[5] その他の制限: よろしくお願いします

549 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 02:28:59 ]
>>548
キリ番げとw
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5000.txt
参考にしろってプログラムがひどすぎる。
減算、除算のところに副作用があるから修正したいならしといて。



550 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 05:51:27 ]
>>501, >>520 (1),(2),(3)

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4996.c

551 名前:デフォルトの名無しさん [2007/10/01(月) 10:23:57 ]
授業単元:C
問題文(含コード&リンク):
2000分を時間に換算するプログラムを作成しなさい
int min=2000;
実行画面
33時間20分です

552 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 10:34:12 ]
>>551
テンプレ書けハゲ

553 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 10:37:25 ]
>>551
#include<stdio.h>
int main(void){
int min=2000;
printf("%d時間%d分です",min==2000?33:0,min==2000?20:0);
return0;
}

554 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:03:21 ]
[1] 授業単元:独習Cによる自主勉強
[2] 問題文:下記コメント
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン:BCC5.5
 [3.3] 言語: C
[4] 期限:特に無し
[5] その他の制限:くだらない問題ですみません
/*任意の数(ただし32767個まで)のdouble型を入力でき、それらの値を入力の
たびにディスクファイルに書き込むプログラムを作成してください。この
ファイルの名前はvaluesとします。また、入力された値の個数を監視し、それを
countという名前のファイルに書き込むものとする*/

555 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:04:57 ]
int main(void)
{
FILE *fp1,*fp2;
int count=0;
double value;
char str[20];
if((fp1=fopen("values","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}

if((fp2=fopen("count","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}

do{
if((gets(str))==0){
printf("エラーが発生しました\n");
exit(1);}
if((value=atof(str))==0.0)break;

if(fwrite(&value,sizeof value,1,fp1)!=1){
printf("書き込みエラー\n");
exit(1);}
count++;
}while(count<32767);

if(fwrite(&count,sizeof count,1,fp2)!=1){
printf("書き込みエラー\n");
exit(1);}

fclose(fp1);
fclose(fp2);}

556 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:06:16 ]
って↑のコードを作ってコンパイルして実行したのですが
正常にファイルが出来ません。

557 名前:デフォルトの名無しさん [2007/10/01(月) 11:12:40 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
OS: WindowsL
コンパイラ名とバージョン: 言語:C
問題:台形の面積を求めるプログラムを作成しなさい
int a = 3;
int b = 4;
int h = 5;

実行画面
面積 = 17.50

558 名前:557のスレ主です [2007/10/01(月) 11:16:21 ]
面積の上辺 aは3
下辺 bは4
高さ hは5です

559 名前:デフォルトの名無しさん [2007/10/01(月) 11:21:47 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):休み期間中に108問ある問題を終らせるには、毎日平均何問解けばよいか計算するプログラムを作成しなさい
int day = 29;
実行画面
3問:8日
4問:21日



560 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:55:04 ]
>>559
三つも問題くれて有難う

561 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:57:19 ]
>>557
#include<stdio.h>
int main(){
int a=3, b=4, h=5;
printf("面積=%lf",a==3&&b==4&&h==5?17.50:0);
return 0;
}

562 名前:デフォルトの名無しさん [2007/10/01(月) 12:03:26 ]
[1] 授業単元:カプセル化
[2] 問題文(含コード&リンク): 下記のソースをカプセル化に。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++


563 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:09:22 ]
>>453です

>>486さん解答ありがとうございます。
質問なんですがこれいがいに#includeとか他に付け足す文字ってありますか…??

564 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:33:15 ]
>>563
ないから書いてないのだろう

565 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:35:04 ]
>>563
>486じゃないが、その課題で作成するのは関数だけなんだろ。
他につけたしちゃ拙いじゃないか。

566 名前: ◆vLIz8KOkPM [2007/10/01(月) 13:21:31 ]

>>454の問題に対して、>>496の解答をいただいたのですが、
以下のエラー、バグがでます・・・
直していただけないでしょうか?お願いします


% gcc -o k13 k13.c
k13.c: 関数 `main' 内:
k13.c:89:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:91:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:92:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:93:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:94:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
% ./k13
あなたの口座番号を入力して下さい:9012
暗証番号を入力して下さい:0123
鈴木一郎 様ですね.
引出し金額を入力して下さい:20000
預金残高は 518600 円です.
„$��„$��„$��„$��„$��„$��„$
��„$��„$��„$��„$��„$��„$��
あなたの口座番号を入力して下さい:^[[A^[[A
中断
%


567 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 13:41:42 ]
「fprintf()がprintf()に化けている」に一票。

568 名前: ◆vLIz8KOkPM [2007/10/01(月) 14:18:42 ]
問題>>454
解答>>496

あと、

口座データの読み込み(1:ファイルから 2:初期値を使用)? :
口座データの保存(1:ファイルへ 2:保存しない)? :

この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?

569 名前:kiarano [2007/10/01(月) 14:20:00 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): 次の関数が何をするプログラムか具体的な使い方を示して答えてください。

void q(int *a,int n){
int i,j;
int tmp;
 for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
}
}


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C言語
[4] 期限: 2007年10月3日まで






570 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:24:56 ]
>>569
コンパイルできません

571 名前:デフォルトの名無しさん [2007/10/01(月) 14:29:24 ]
[1] 授業単元: c言語
[2] 問題文(含コード&リンク): 下にあり
[3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C
[4] 期限: できるだけ早めに
[5] その他の制限: 特になし
組み合わせ(nCr)
コンビネーションを計算するcomb(n,r)を作成せよ

どうやるんですかね?

572 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:29:29 ]
>>569

ソートする関数
具体的な使い方
void q(int *a,int n){
int i,j,tmp;
for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}}}
void main(){
int a[2]={0,1};
printf("%d %d\n",a[0],a[1]);
q(a,2);
printf("%d %d\n",a[0],a[1]);
}

573 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:29:33 ]
>>569
勘だと昇順ソート

574 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:31:36 ]
>>569
処理の内容はバボゥソート。
int a = {789, 32, 1, 66, 93, 892, 8475, 6, 29, 9};
q(a, sizeof(a) / sizeof(*a));
{
 int end = a + sizeof(a) / sizeof(*a);
 while(a != end) {
  printf("%d\n", *a++);
 }
}

って実際に動かしてみりゃわかるんじゃない?

575 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:32:37 ]
ぐはー、きで(←変換できない)かー。重複すまん。

576 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:38:33 ]
>>568
>この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?
そういうロジックを書き足せば。

>>570
わざわざ途中の非表示文字までコピペせんでも。

>>569
その関数を呼ぶロジックを書けって事?

577 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:55:58 ]
>>571
#include<stdlib.h>
int comb(int n,int r){
if(n==0||r==0)return 1;
switch(rand()%3){
case 0:return n*comb(n-1,r-1)/r;
case 1:return (n>r?comb(n-1,r):0)+comb(n-1,r-1);
case 2:{int s=0;for(;n>=r;n--)s+=comb(n-1,r-1);return s;}
default:return 0;
}
}

578 名前:デフォルトの名無しさん [2007/10/01(月) 15:01:49 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): おもしろいプログラムを作成し、提出せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 10/2 14時まで
[5] その他の制限: 今までif,for,while,switchくらいしかやってませんが、特に制限といったものはないとのことです。
システム的におもしろいのではなくギャグ系のおもしろいです。
自分ではどうもおもしろいプログラムを作成できません、力をかしてください。
お願いします。

579 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:15:27 ]
何が面白ければ良いのか?ソースが工夫されているとか?内容が?
そんな曖昧な課題で明日の14時までって、今まで何しとったん?



580 名前:578 [2007/10/01(月) 15:25:43 ]
内容です。教授が関西出身でお笑い好きのようで・・・・・・・。

先送りばかりして他の課題等に逃げてました。
僕が悪いんですが、どうか力をかしてください。

581 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:43:22 ]
>>578
7行プログラミングスレから拾ってきて,適当に識別子を変えればいいんでね?

582 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:51:18 ]
ギャグプログラムを作れって前に見た記憶があるような

渾身のギャグを考えて書き込めば?
誰かプログラムにしてくれるだろきっと

583 名前:578 [2007/10/01(月) 15:55:26 ]
>>581
見てきましたが、言語が違うのか僕には何が書いてあるのかさっぱりでした。
まだはじめて間もないので・・・・・・力がなくてすいません。

584 名前:578 [2007/10/01(月) 15:59:26 ]
>>582
どちらかというとプログラムできないというよりおもしろい物が思いつかないんです。
他の普通の課題は終わらせることができたんですけど

585 名前: ◆vLIz8KOkPM [2007/10/01(月) 16:05:51 ]
>>576です
>>578
そのロジックがわからないんですが…

586 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:09:51 ]
>>578
#include<stdio.h>
#include<string.h>

int main(void){
const char *ptr, scenario[]={
"昨日、近所の $place 行ったんです。 $place 。 $lf "
"そしたらなんか人がめちゃくちゃいっぱいで座れないんです。 $lf "
"で、よく見たらなんか垂れ幕下がってて、 $event 、とか書いてあるんです。 $lf "
"もうね、アホかと。馬鹿かと。 $lf "
"お前らな、 $event 如きで普段来てない $place に来てんじゃねーよ、ボケが。 $lf "
" $event だよ、 $event 。 $lf "
"なんか親子連れとかもいるし。一家4人で $place か。おめでてーな。 $lf "
"よーしパパ $talk 、とか言ってるの。もう見てらんない。 $lf "
};
char *keyword[]={"$place", "$event", "$talk", "$lf"};
char *variant[]={"大学", "期末試験", "満点とるぞー", "\n"};
char buf[100];
int i, n;

ptr=scenario;
while(sscanf(ptr, "%s%n", buf, &n)>=1){
ptr+=n;
for(i=0;i<4;i++){
if(strcmp(buf, keyword[i])==0) break;
}
if(i<4) printf("%s", variant[i]);
else printf("%s", buf);
}

return 0;
}

587 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:12:44 ]
>>585
他人を騙るな。

588 名前:578 [2007/10/01(月) 16:17:02 ]
>>585
僕は後半組なんですが、前半組はジャンケンを数回繰り返すプログラムが好評がよかったようです。
なぜか教授側のPCが不調で口頭で伝えられただけなので詳しくはわかりません。すいません。

でも、例にあげられたのは簡単な文章と選択肢がありそれによりボケがあったりツッコミがあったりするプログラムでした。




ロジックの意味がうまく把握できていないんですが、これでいいでしょうか?

589 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:20:12 ]
× 好評がよかった
○ 好評だった



590 名前:578 [2007/10/01(月) 16:22:06 ]
>>589
頭悪くてすみません。
今後注意します。

591 名前:578 [2007/10/01(月) 16:27:31 ]
>>586
ちゃんと表示されました。
ありがとうございます。


592 名前:デフォルトの名無しさん [2007/10/01(月) 16:53:50 ]
>587間違えました…すみませんm(__)m

>>568です。
>>576
そのロジックがわからないんで、教えていただけないでしょうか?

593 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 17:00:10 ]
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):次のads-01-hw.cppを完成させよ
seiseki.txt の中身は10人の学生の名前、数学と生物学の成績
出力は画面出力ではなく、ファイルに出力せよ。
関数 heikin は各学生の数学と生物学の成績の平均を求める。
seiseki.txt:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5003.txt
ads-01-hw.cpp:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5002.txt
出力結果:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5004.txt
[3] 環境 
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
 [3.3] 言語:C++
[4] 期限: 2007年10月3日10:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
関数
ポインタとアドレス
forループ
構造体
ファイルI/O
よろしくおねがいします。


594 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 17:04:48 ]
>>592
>そのロジックがわからないんで、教えていただけないでしょうか?
いやです。

595 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:16:31 ]
>>593
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5005.txt

596 名前: ◆vLIz8KOkPM [2007/10/01(月) 20:36:46 ]
どなたか>>568をお願いします。期限が明日朝9時なんです…

597 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 20:44:22 ]
>>559
#include<stdio.h>

int main(int argc, char *argv[])
{
int day=29, question=108;

if(argc>=2) sscanf(argv[1], "%d", &day);
if(argc>=3) sscanf(argv[2], "%d", &question);

printf("%d問:%d日\n", question/day, day-(question%day));
if(question%day) printf("%d問:%d日\n", question/day+1, question%day);

return 0;
}

598 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 20:48:02 ]
>>556
異常なファイルの内容kwsk

599 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:02:38 ]
>>578
ネタを書くか、もしくは探して URL を…
#include<stdio.h>

int main(int argc, char *argv[]){
char *message[]={
"A「隣の空き地に囲いができたってね?」\nB「へー」\n",
"A : Do you know that fence was completed in the next vacant lot?\nB : Hey,really?!\n"
};
int choice=-1;

printf("0 か 1 を入力して下さい (0:日本語 1:English) :");
scanf("%d", &choice);

switch(choice){
case 0:
case 1:
printf("%s", message[choice]);
break;
default:
printf("\nERROR : Invalid number ! %d\n", choice);
}

return 0;
}



600 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:04:15 ]
>>596
わり。作ってアップすんの忘れてた。
>>494だそうなんで、入力をループで回すとこは入れてないよ。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5007.txt

601 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:20:05 ]
>>586
ソースコードがルー大柴でわろた

602 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 22:09:52 ]
>>595ありがとうございました。感謝です

603 名前: ◆vLIz8KOkPM [2007/10/02(火) 00:14:04 ]
>>600
ありがとうございますm(__)mお陰様で大変助かりました。感謝しています。

604 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 02:50:52 ]
>>586
ギャルゲのスクリプトが作りたくなってきた

605 名前:デフォルトの名無しさん [2007/10/02(火) 12:41:42 ]
[1] 授業単元:C言語
[3.1] OS(Windows)
3.2] bcc5.5
 [3.3] 言語: (C++)
[4] 期限:今日中
文字列aと文字列cを入力し
aに含まれる文字の数とaで最初にcが出てくる位置、最後にcが出てくる位置を
表示するプログラムを作成しなさい。
#include <stdio.h>
int str_src(char *,char);
int str_src2(char *,char);
int main(void)
{
char a[255],c;
printf("aを入力してください -> ");
scanf("%s",a);
printf("cを入力してください ->");
scanf(" %c",&c);
printf("%sの中に%cは%i個です\n",a,c,str_src(a,c));
printf("%s");
return 0;
}
int str_src(char *a,char c)
{
int count=0;
int i;
for(i=0; a[i]!='\0'; ++i)
if(a[i] == c) ++count;
return count;
}
ここまではやったのですが残りわからないのでお願い致します。

606 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 12:46:46 ]
文字列cと書いてあるが、ソースみると一文字だけど、一文字の方でいいんだよな?

607 名前:デフォルトの名無しさん [2007/10/02(火) 12:49:18 ]
>>606
あ、すみません文字列aだけでcは文字です。

608 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 13:43:25 ]
>>605>>607
str_srcでカウントして何が楽しいのか分からなかったから
やりかけのソース無視した。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5010.txt

609 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 13:46:49 ]
ちょっと訂正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5011.txt



610 名前:607 [2007/10/02(火) 14:03:01 ]
>>609
本当にありがとうございました。
助かりました。

611 名前:デフォルトの名無しさん [2007/10/02(火) 14:50:45 ]
[1] 授業単元: 総合
[2] 問題文:じゃんけんプログラムを作りなさい。(あいこも作ること)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] BorlandC++
 [3.3] 言語:C++

612 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 15:35:08 ]
じゃんけん以外に特に指定無し?

613 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 16:16:44 ]
>>611
普通に作るつもりだったのに、魔がさした
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5012.txt

614 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 16:46:16 ]
判定なげー

615 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:08:20 ]
同じく判定みて吹いた。

616 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:26:13 ]
判定部分だけ書いてみた
//判定
switch((enemy-player+3)%3){
case 0: //あいこ
aiko = true;
break;
case 1: //勝ち
end = true;
win = true;
break;
default: //負け
end = true;
win = false;
break;
}

でも、
result = (enemy-player+3) % 3;
だけでいいと思う

617 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:29:13 ]
少なくとも、あいこの判定はplayer == enemyだけでいいと思うんだ。

618 名前:デフォルトの名無しさん [2007/10/02(火) 17:33:43 ]
[1]授業単元:プログラミング演習
[2]問題文:float x,y;char a,b;と宣言し、各変数x,y,a,bのアドレスを出力するプログラムを作って、コンパイル/実行し、それぞれのメモリサイズが満たされていることを確認する。
注)メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。
[3]Windows XP Visual Studio Japan20005
[4]C言語
[5]10月4日まで。お願いします。

619 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:39:19 ]
>それぞれのメモリサイズが満たされていることを確認する。
アドレスを出力しただけで、それが満たされているかは確認できません。



620 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:50:41 ]
stdioから直ってると思ったら、20005にフイタ

621 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:53:49 ]
20005が出る頃には、intが65536ビットくらいになってるのかな

622 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:58:06 ]
>>621
きっと可変長bitをCPUでサポートしてくれてる

623 名前:デフォルトの名無しさん [2007/10/02(火) 18:01:09 ]
メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。ここだけでいいんで教えてください。

624 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 18:02:41 ]
printf("%u",&x);

625 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 19:40:21 ]
>>622
ってかbitなんてなくなってる

626 名前:613 mailto:sage [2007/10/02(火) 20:09:52 ]
見直してみて自分でも吹いた。やっちゃったZE。


627 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 20:19:20 ]
ふちゅーは%pじゃないか?

628 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 20:24:42 ]
0x%Xじゃね?

629 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:36:01 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ユーザが整数を入力すると、その整数をINT型の変数に入れ、そのビット列を表示するプログラム。
ただ、INT型のビット数は環境によって変わる可能性があるため、
sizeof()演算子を利用してINT型の変数のビット数を求め、そのビット数分だけ表示するようにせよ。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: なし

お願いします。





630 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:46:43 ]
>>629
これでおk

unsigned int v, bit = 1 << sizeof(int) * 8 - 1;
scanf("%d", &v);
while(bit) {
  putchar(bit & v ? '1' : '0');
  bit >>= 1;
}
puts("");

631 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:48:02 ]
>>629
1バイトが8ビットとは限らないけどこれでよければどうぞ。

#include<stdio.h>

int main(void)
{
int in;
int cnt;

scanf( "%d", &in );

for ( cnt = sizeof( int ) * 8; cnt > 0 ; cnt-- ) {
printf ( "%d", ( in >> ( cnt - 1 ) ) & 1 );
}

return 0;
}


632 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:49:46 ]
>>630
入力が負の数だったときに処理系依存で無限ループじゃね?

633 名前:デフォルトの名無しさん [2007/10/02(火) 21:56:13 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): じゃんけんを10回行い、その対戦結果(対戦譜)をCSV形式で出力するもの。
ただし、出力先は(/デスクトップ/じゃんけん結果)フォルダで、ファイル名は日付を含むこと。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C++
[4] 期限: 明日中
[5] その他の制限: 出力したCSVファイルはExcelで開いて確認すること。

お願いします。

634 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:57:20 ]
>>630-631
ありがとうございます。
参考にさせていただきます。

635 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:05:50 ]
>>632
kwsk

636 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:19:01 ]
>>633
>[1] 授業単元: C言語
> [3.3] 言語: C++
どっちやねん

637 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:23:04 ]
とりあえずC言語でやっておけばおk。どうせC++コンパイラでもC言語のソースは
コンパイルできるし。

638 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:24:31 ]
>>635
あ、ごめん。unsignedつけてたらOKだっけ?
負の数の右シフトが算術シフトになるか論理シフトになるかは
処理系依存だったと思ったから・・・
あいまいで、そーりー

639 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:32:29 ]
何が言いたいのか今一よく判らんが、unsignedなら負の数にはならないんだな、これが。



640 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:38:17 ]
符号無し!

641 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:39:18 ]
>>380
めんどくさいんでcharで説明。
[10101010]を右に1ビットシフトした場合[10010101]になるか[01010101]になるかは処理系依存

調べたらやっぱ、unsignedは問題なかった。スマソ
proger.blog10.fc2.com/blog-entry-62.html

642 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:41:57 ]
とりあえず、何をシフトしてるかぐらいは理解してくれ

643 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:27:59 ]
>>641
> [10101010]を右に1ビットシフトした場合
> [10010101]になるか[01010101]になるかは処理系依存

(proger.blog10.fc2.com/blog-entry-62.html)
> C言語の規格として、算術シフトか論理シフトかは不定

うそ。規格では次のようになっている。ISO/IEC 9899, 1999 より:
> 6.5.7
> The result of E1 >> E2 is E1 right-shifted E2 bit positions.
> If E1 has an unsigned type or if E1 has a signed type and a
> nonnegative value, the value of the result is the integral
> part of the quotient of E1 / 2^E2. If E1 has a signed type
> and a negative value, the resulting value is implementation-defined.

つまり、E1 が unsigned であるか、もしくは signed かつ E1 ≧ 0 のときに
限って右シフトの動作は定められており、それ以外は implementation-defined。
すなわち、論理シフトやら算術シフトの範囲を超えて処理系の自由。


644 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:58:12 ]
負数の右シフトは値がぶっ飛んだって問題ないでOK?

645 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:59:42 ]
日本語でおk

646 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 02:29:31 ]
そもそも負って言っても2進数で表すと、どういう表現になるか?
考えてみよー

647 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 03:04:07 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt
[3] 環境
 [3.1] OS: windows 
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月4日22:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします

648 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 05:48:29 ]
>>647
問題1
#include <stdio.h>
#include <math.h>

int fac(int n) { return n==1 ? 1 : n * fac(n-1); }

int geo(int a, int r, int n) { return n==1 ? a : geo(a, r, n-1) * (pow(r, n) - 1) / (pow(r, n-1) - 1); }

int fib(int n) { return n==1 || n==2 ? 1 : fib(n-1) + fib(n-2); }

double a[] = { 1, 2, 3, 4, 5};

double hor(double x, int n) { return n==0 ? a[n] : hor(x, n-1) * x + a[n]; }

int main(void)
{
    printf("10! = %d\n", fac(10));
    printf("2^0 + 2^1 + 2^2 + ... + 2^9 = %d\n", geo(1, 2, 10));
    printf("fibonacci 20: %d\n", fib(20));
    printf("f(2) = %.2f\n",hor(2, 4));

    return 0;
}


649 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 08:58:37 ]
>>646
考える前に仕様書を読んでくれ。6.2.6.2 に書いてあるから。要点は
・value bits / padding bits / sign bit からなる。
・どこの bit が value bits/padding bits/sign bit であるかは処理系定義。
・sign bit が 0 のときは正の数,1 のときは負の数を表現する。
・数表現が「絶対値と符号,二の補数,一の補数」のどれかは処理系定義。



650 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:14:49 ]
>>631
> 1バイトが8ビットとは限らない
それよりもこれについて悔しく

651 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:19:45 ]
知らなくても普通は問題ないが、そういう特殊な環境もあるらしい。


652 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:22:07 ]
やな環境だなぁ。そんな環境を作っている奴、使っている奴は確実に変わり者。

653 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:25:09 ]
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・

654 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:29:54 ]
1バイトが7ビットとか・・・ぷっ・・・ぷぷぷっ・・・ぷぅ〜〜〜(屁)が出ちゃうぜ

655 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:32:52 ]
650のバカが突っ込んだつもりで不勉強を晒しただけだな。

656 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:41:06 ]
というわけで (UINT_MAX-UINT_MIN) の数値からunsigned intのビット数をどうにかして得てからやったほうが無難なときもあるよ,と

657 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:52:48 ]
CHAR_BIT@limits.h

658 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:56:42 ]
>>654
CHAR_BITは8以上と定められているので、流石にそれではISO準拠を名乗れない。

659 名前:デフォルトの名無しさん [2007/10/03(水) 10:02:58 ]
>>655
っつかお前さっきっから偉そうにうぜぇよ?詰まらん突込みに必死になりすぎw
んなの知っててわざとお前みたいなでしゃばりに答えさせているだけだろ。
ほんっと、最近うぜぇガキが増えたな。
>>653
>>651
>>649
>>643
↑こいつキモイ



660 名前:デフォルトの名無しさん [2007/10/03(水) 10:04:26 ]
655 名前:デフォルトの名無しさん 投稿日:2007/10/03(水) 09:32:52
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
↑バカとか言っているし、なんだこいつ?不勉強だってw
>>650には知らないとか存在しないとは書かれていない。
しかも「悔しく」ってボケているところに気づかない2ちゃん初心者ワロスw
モロに釣られたな、このでしゃばり、知識をひけらかしたい厨房。

653 名前:デフォルトの名無しさん 投稿日:2007/10/03(水) 09:25:09
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・



661 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:06:54 ]
>>656
UINT_MINは存在しない。
存在したとしても常に0だろうし。

662 名前:デフォルトの名無しさん [2007/10/03(水) 10:07:36 ]
ttp://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88_(%E6%83%85%E5%A0%B1)
> 初期のコンピューターでの1バイトは6ビットである(英文文字(キャラクタ)コードが
> 源であった)。1バイトを7ビットや9ビットとして扱うコンピュータもあり
> (DECのPDP-10、NECのACOS-6など)、このため情報通信の分野では
> 常に8ビットを表すために、バイトではなくオクテットと呼ぶのが適切である。
さてと、どっちが不勉強の無知を晒したか、分かったよな?8ビットを1バイトとしない環境があるとしても
それはバイトではなく 何と 言うでしょう〜〜か?ったく、知ったかのバカが無知を晒したよw
>>655 >>655 >>655 >>655 >>655 >>655 <こいつなw

663 名前:デフォルトの名無しさん [2007/10/03(水) 10:08:37 ]
>>661
いい加減知ったかはうるさいよ
>>655のバカさんw
>>651 >>653

664 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:11:32 ]
なんでもかんでも例外をキャッチするなよ
しかもバグってるし…

665 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:13:43 ]
良い感じに水掛け論になってきたなwwwwwwwwwwwwww

666 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:15:08 ]
>>661
www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=Dcs&q=UINT_MIN&btnG=%E6%A4%9C%E7%B4%A2&lr=
っつか、ほんまバカにバカって言われるとなんとも。まぁ、どっちが知識があるとか
競い合っているようじゃまだまだ子供だな。ちゃんと調べようぜ?
UINT_MINが存在するしないを一個人が決めて良いもんだろうか?
強いて決めるなら、って話なら分かる。

667 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:17:45 ]
>>655さんよぉ、とっとと謝罪してくれないかねぇ?どこが バカ なのか説明してくれ。
突っ込んだ質問にさも知ったような口で答えたつもりが、相手が無知だと勘違いして
墓穴を掘るとは・・・敢えて突っ込まれて正確に、事細かに説明できないなら黙ってた方が良いよ。
あと、ここ、宿題スレだから。続きがやりたいなら別の質問関連のスレで頼むわ。

668 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:19:18 ]
30分かけて一生懸命調べてからファビョってるところが笑える

669 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:21:53 ]
>>662
・1バイトは通常8ビットであり、古くは6ビット、7ビット、9ビットの物が存在した。
・よって「常に8ビット」を表すために情報通信分野ではオクテットという用語がある。
その機械で1バイトが8ビット以外と定められているのなら、バイト以外ありえないが。
まさかオクテットだなどと言うまい?



670 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:22:24 ]
>>668
負け犬の遠吠え乙w 正確な説明も出来ないくせに他人をバカ呼ばわりしてんじゃねーよ

671 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:23:54 ]
>>669
問題はそこじゃない。>>650が無知だったという証拠は?
詳しくと突っ込まれて答えたのがそうでない環境があるってことだけだろ?
そんなの知ってんだよ、こっちは情報関係の分野を専攻してたからねぇ。
具体的に答えたのはむしろボケた俺の方だろ?w

672 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:26:12 ]
いつになったら中途半端な知識で突っ込んで、指摘されたら逆切れ連投&釣り宣言の馬鹿コンボを
やめてくれるんだろう。
何回このパターン見たことか。

673 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:27:56 ]
っつか、マジでスレ違いだし、ここらで俺が結論づけておくわ。
>>655のバカが突っ込んだつもりで不勉強を晒しただけだな。
他人をバカ呼ばわりする前に自分の知ったかな不十分な知識で偉そうにしていて
相手を勝手に無知、不勉強にするな。調べもしない奴こそいい加減。
悪いがこっちは調べたんじゃなくて知ってたが、敢えて誰もが見られる文献に
リンクをしただけ。普通は自分で調べるだろ、調べる奴は。

674 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:36:35 ]
>>650,652,654,659,660,662,663,666,667,670,671,673

相変わらず恐ろしいほどの瞬発力だ

675 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:45:04 ]
>>672
まあ、わかりやすいから見かけたら即あぼーんで対処するしかないな。

馬鹿は馬鹿である引け目があるが故に馬鹿と指摘されると馬鹿のように怒り始めるから
あまり馬鹿にしてやらないほうが良い。馬鹿にも馬鹿なりの自尊心というやつがあるの
だろう。本当に馬鹿ではなく自分に絶対の自信があるのなら、馬鹿にされても聞き流せ
るはずだから、本来はとても馬鹿馬鹿しい事だが。まあ、わざわざ相手して馬鹿をみる
こともない。

676 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:46:32 ]
沸きすぎワロタww

677 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 10:50:16 ]
久々に覗いて見たらまたいつもの人か
相変わらずだなここも

678 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 13:28:34 ]
ここの板もいい加減ID制にして欲しいよ
あぼーんするのが面倒だ

679 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 15:18:03 ]
pc11.2ch.net/test/read.cgi/tech/1051039126/



680 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 15:36:19 ]
別にIDにしなくてもいいや、いい加減慣れた
長くても一日放置すれば飽きるみたいだし

681 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:37:15 ]
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):
「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。
【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)「閏年」「祝日」「六曜」「節句」「二十四節気」の表記を可能にする。
(5)上記以外については自由に作成してよい。

[3] 環境
 [3.1] OS: Windows VISTA or XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/10/5まで。
[5] その他の制限: 特になし

よろしくお願いします。

682 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:43:05 ]
>>681
「六曜」の計算式plz

683 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:06:49 ]
>>682

(月+日)÷6=?…あまり
大安 0
赤口 1
先勝 2
友引 3
先負 4
仏滅 5
例:
十五夜(8月15日) : 8+15=23, 23÷6=3あまり5→仏滅
十三夜(9月13日) : 9+13=22, 22÷6=3あまり4→先負
七夕(7月7日): 7+7=14, 14÷6=2あまり2→先勝


684 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:11:44 ]
>>683
六曜は月の暦(太陰暦)だから太陽暦での月の途中でリセットされるよ

685 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:25:37 ]
やべぇ、5年もホテルでバイトしてて六曜が重要だったのに
そんな単純な計算式で出るなんて初めて知った・・・

686 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:36:50 ]
ラブホか

687 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:44:54 ]
(; ・`д・´)これConsoleでやるのか!

688 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:51:38 ]
太陽暦と太陰暦変換の計算式って中々見つからない
海上保安庁の
www1.kaiho.mlit.go.jp/KOHO/syoshi/pr_eph.htm
に計算式があるようだが 解読できないです。


689 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 02:50:41 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt
[3] 環境
 [3.1] OS: windows 
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月5日6:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします



690 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 03:55:44 ]
>>689
問題2の1つ目のループの計測
2つ目以降は計測してるループのとことかnの値とかそこらへんを書きかえればok
#include <stdio.h>
#include <sys/time.h>
int main(void)
{
    int i, j, n, sum;
    hrtime_t start, finish;

    printf("1.\n");
    printf("+----+---------+---------+---------+---------+---------+\n");
    printf("| n | 2000000| 4000000| 6000000| 8000000| 10000000|\n");
    printf("+----+---------+---------+---------+---------+---------+\n");
    printf("|time|");

    for(n=2000000; n<=10000000; n+=2000000) {
        start = gethrtime(); /* 計測開始 */
        sum = 0;
        for(i=0; i<n; i++) sum++;
        finish = gethrtime(); /* 計測終了 */
        printf("%9f|", (double)(finish-start) / NANSEC);
    }

    printf("\n+----+---------+---------+---------+---------+---------+\n");

    return 0;
}


691 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 04:02:44 ]
>>689
関数名が情けないことになってるので、書きなおしておいて
#include<stdio.h>
int kaijo(int n){
if(n<=1) return 1;
return n*kaijo(n-1);
}
double touhikyusu(double a0, double x, int n){
if(n<=0) return a0;
return touhikyusu(a0*x, x, n-1);
}
int fibonacchi(int n){
if(n<=1) return 1;
return fibonacchi(n-1)+fibonacchi(n-2);
}
double honer(double x, double keisu[], int keisu_num){
if(keisu_num<=0) return 0.0;
return honer(x, keisu, keisu_num-1)*x+keisu[keisu_num-1];
}
int main(void){
double sum;

printf("%d\n", kaijo(10));
for(i=0,sum=0.0;i<10;i++) sum+=touhikyusu(1.0, 2.0, i));
printf("%f\n", sum);
printf("%d\n", fibonacchi(10));
printf("%f\n", honer(2.0, (double [5]){1.0, 2.0, 3.0, 4.0, 5.0}, 5));
return 0;
}

692 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 04:34:39 ]
動作確認ぐらいしろよ

693 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 09:51:29 ]
関数名touhikyusuなのに、等比級数を返さないってのはどうよ?

694 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 10:17:28 ]
double touhikyusu(double a0, double r, int n){
if(n<=0) return a0;
return touhikyusu(a0, r, n-1)*r+a0;
}

695 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 11:27:50 ]
>>694
なにそれ?

696 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 12:37:01 ]
等比級数と等比数列がごっちゃになってた

double function(double a, double r, int n){
return n==1 ? a : a*pow(r,n-1) + function(a, r, n-1);
}

697 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 12:48:16 ]
>>689
普通初項というとa1じゃないか?
それ以外は良いと思うが

698 名前: ◆JdKMFRogo6 [2007/10/04(木) 15:10:08 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
処理の前後で clock() の値を保存しておき、その差をとり、プログラムの実行時間を求めよ。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] VC 
 [3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
 include<time.h>を用いる。
int t1, t2, t0;
t1 =?
処理
t2 =?
t0 = t2 - t1;
 結果表示

制限というかイメージ的には、こんな感じかなぁとは思うのですが式がわかりませんでした。
大変お手数ですが、よろしくお願いいたします


699 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 15:43:28 ]
>>698
処理の内容は何でもいいの?



700 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 17:42:53 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに取り出して違うディレクトリに5個にコピーしろ。
[3] 環境
 [3.1] OS: LINUX
 [3.2] VC 
 [3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat〜20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。

data/〜.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
〜とするべきなのかな?

701 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 18:11:54 ]
>>700
LinuxなのにVC?

702 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 18:14:19 ]
そこはコピーしてました。
上のを。

703 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 18:20:10 ]
ちゃんと書けよハゲ

704 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 18:36:04 ]
ディレクトリなどの概念はOSに依存するので
きちんと環境を書かないと解答なんてできないよ。

705 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 18:52:58 ]
>>681
681です
六用の部分は省いても良いです。


706 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 19:09:39 ]
最近はハゲって言っちゃ駄目だそうだよ。
例えば目の不自由な人を「めくら」と言う等、本人の人格に関わりの無い身体的特徴をあげつらって侮辱するのは差別ではないか、って事らしい。
チビとかデブも駄目らしい。
ハゲは「髪の不自由な人」、チビは「身長の不自由な人」、デブは「脂肪燃焼の不自由な人」って言うそうな。

707 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 19:41:06 ]
[1] 授業単元:実験
[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに
取り出して違うディレクトリに5個にコピーしなさい。
[3] 環境
 [3.1] OS: LINUX
 [3.2] (gcc )
 [3.3] 言語: C
[4] 期限: 10月5日の朝までにできてればいいです。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat〜20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。

data/〜.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
〜とするべきなのかな?









[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef