C/C++の宿題を片付けます 96代目at TECH
C/C++の宿題を片付けます 96代目 - 暇つぶし2ch52:デフォルトの名無しさん
07/09/22 17:24:47
>>51
sa>=-10

53:デフォルトの名無しさん
07/09/22 17:25:42
>>48
-10 より saが小さい
よりと以上の違いが分からないなら数学止めた方が良いよ

54:デフォルトの名無しさん
07/09/22 17:25:48
質問者と回答者のレベルがほとんど同じだな

55:デフォルトの名無しさん
07/09/22 17:25:52
>>51-52
バカすぎ

56:デフォルトの名無しさん
07/09/22 17:27:32
>>52
&&

57:デフォルトの名無しさん
07/09/22 17:28:08
>>54
一応まともに答えてる38と44は除外してやれよw

58:デフォルトの名無しさん
07/09/22 17:28:33
アホ回答してるの>>37だろ。


59:デフォルトの名無しさん
07/09/22 17:32:43
>>35
if (sa<=10 || 0)
でおk

60:デフォルトの名無しさん
07/09/22 17:33:25
printf("それらの差は%dで10以下です。",sa);
else
printf("それらの差は%dで11以上です。",sa);
の順でやって。

61:デフォルトの名無しさん
07/09/22 17:35:24
-1,-2,-,3-,4
-1と-4は、-1のほうが大きい。


62:デフォルトの名無しさん
07/09/22 17:37:02
>>60
||を使えってのにその順番はないだろ

63:デフォルトの名無しさん
07/09/22 17:41:29
A&B = not(not A | not B)

64:デフォルトの名無しさん
07/09/22 17:43:56
>>60
差の値を表示しろなんて、元の問題文にも>>35にもないわけだが。

65:デフォルトの名無しさん
07/09/22 17:50:56
>>60
int sa = no1 - no2;
if(sa==-10||sa==-9||sa==-8||sa==-7||sa==-6||sa==-5||sa==-4||sa==-3||sa==-2||sa==-1||sa==0
||sa==1||sa==2||sa==3||sa==4||sa==5||sa==6||sa==7||sa==8||sa==9||sa==10)

66:デフォルトの名無しさん
07/09/22 17:54:49
if((unsigned int)(sa+10) <= 20)

67:デフォルトの名無しさん
07/09/22 17:56:05
どうでもいいけど、「それらの値の差」って言ったら一方の差の絶対値と解釈するよな

68:デフォルトの名無しさん
07/09/22 18:03:08
絶対値って何?

69:デフォルトの名無しさん
07/09/22 18:03:33
0からどれだけ離れているか。

70:デフォルトの名無しさん
07/09/22 18:06:21
>>68
せめて中学卒業してからおいで

71:29
07/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:デフォルトの名無しさん
07/09/22 18:09:05
>>71
良かったね。さようなら。

73:デフォルトの名無しさん
07/09/22 18:10:11
>>71
それで十分な気もするが

74:デフォルトの名無しさん
07/09/22 18:16:05
>>35
if (sa>=11 || sa<=-11)


これでOK

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

76:デフォルトの名無しさん
07/09/22 18:21:56
しつこいな
そんなにバカな答え書いてバカにされたのが悔しかったのか

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

78:デフォルトの名無しさん
07/09/22 18:23:16
絶対値?

79:デフォルトの名無しさん
07/09/22 18:23:30
しつこさに思わず噴いた

80:29
07/09/22 18:27:04
71です。

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

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

よろしくお願いします

81:デフォルトの名無しさん
07/09/22 18:28:13
しつこいぞ。スレ違い。


82:デフォルトの名無しさん
07/09/22 18:29:41
どういう表示をさせたいの?

83:デフォルトの名無しさん
07/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
07/09/22 18:50:30
>>83
ありがとうございます。
おかげさまで分かりました。
ホントにありがとうございました。

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

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

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

85:デフォルトの名無しさん
07/09/22 19:19:42
>>77
どういうこと?

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

87:>>16
07/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
07/09/22 20:24:14
>>87は無しで……

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

90:デフォルトの名無しさん
07/09/22 20:50:33
>>16 他の人に期待
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

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

93:デフォルトの名無しさん
07/09/23 13:36:41
血...

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

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

95:デフォルトの名無しさん
07/09/23 14:28:16
>>91
なんかわかんなくなってきたから、実行例をいくつかください

96:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/23 15:07:52
かぶった・・・orz

99:デフォルトの名無しさん
07/09/23 15:09:26
>>97
do whileを勉強しています。

100:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/23 15:12:12
do while か。そのくらいだったら、逆にスタック使うと不自然だなw
>>96のforをdowhileに直した方がいいね

102:デフォルトの名無しさん
07/09/23 15:14:21
>>100
ちょwwwそういう意味の問題だったのかwww

103:デフォルトの名無しさん
07/09/23 15:16:52
ちょwwwちょwww

104:デフォルトの名無しさん
07/09/23 15:17:00
ちょwwwだったのかwww

105:デフォルトの名無しさん
07/09/23 15:18:30
ちょwwwが多すぎワロタwww

106:デフォルトの名無しさん
07/09/23 15:20:04
>>16
電卓っぽく。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

107:デフォルトの名無しさん
07/09/23 16:22:05
>>106
1+1=
と打っても真っ暗だよ。

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

109:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/23 18:03:15
>>109
どこの大学?

111:デフォルトの名無しさん
07/09/23 18:05:45
大学というか専門学校。特定されるとあれなので・・・。

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

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

114:デフォルトの名無しさん
07/09/23 18:21:24
俺涙目みたいな・・・

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

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

116:デフォルトの名無しさん
07/09/23 18:22:44
そんなこと言ったって、俺涙目みたいな・・・

117:デフォルトの名無しさん
07/09/23 18:23:31
やっぱり俺涙目みたいな・・・

118:デフォルトの名無しさん
07/09/23 18:26:37
どうしても俺涙目みたいな・・・

119:デフォルトの名無しさん
07/09/23 18:27:47
お前ら、俺涙目なのに、いじんな!

120:デフォルトの名無しさん
07/09/23 18:27:55
っていうか、涙目みたいな

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

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

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

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

124:デフォルトの名無しさん
07/09/23 18:32:18
VC++EEでも入れればいいじゃん

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

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

126:デフォルトの名無しさん
07/09/23 18:35:26
ぐだぐだ質問してんじゃねえよ。

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

128:デフォルトの名無しさん
07/09/23 18:36:06
っていうか、俺涙目みたいな・・・

129:109
07/09/23 18:36:51
では黙って片付くのを待ちます。。。
涙目です。

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


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

132:デフォルトの名無しさん
07/09/23 18:49:39
せめて環境を固定してくれないと着手すらできんな。

133:デフォルトの名無しさん
07/09/23 19:02:33
VCEEでいいじゃん
MFC使えないのかな

134:109
07/09/23 19:27:49
すみません、飯を食べてました。

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

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

135:デフォルトの名無しさん
07/09/23 19:29:00
ちまちま、後だしするなよ。
最初にまとめて書け。

136:109
07/09/23 19:32:48
申し訳ないです。
>>134でお願いします。

137:デフォルトの名無しさん
07/09/23 19:35:02
最初から、依頼しなおしたほうがいいんじゃないか?

138:デフォルトの名無しさん
07/09/23 19:38:13
>>109
最初からやり直せ。

139:デフォルトの名無しさん
07/09/23 19:38:24
っていうか俺涙目・・・

140:デフォルトの名無しさん
07/09/23 19:38:45
>>134
VC入れて、IEコンポでぐぐってサンプル拾ってコンパイル。

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

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

143:デフォルトの名無しさん
07/09/23 19:47:09
>>142
依頼しなおしたのなら、黙ってろ。

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

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

146:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/23 20:19:36
>>146
その形式以外の入力はないと仮定していいのか?

148:デフォルトの名無しさん
07/09/23 21:04:40
>>146
>>16と共同で頑張れ

149:デフォルトの名無しさん
07/09/23 21:18:50
みたところ、一桁の演算だけど、それだけいいのか?

150:デフォルトの名無しさん
07/09/23 22:02:41
>>145
URLリンク(kansai2channeler.hp.infoseek.co.jp)

151:150
07/09/23 22:06:13
多分、先生が求めるのは>>106だけどな

152:デフォルトの名無しさん
07/09/23 22:11:32
>>130
みんなかどうかは怪しいけどなw

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

154:デフォルトの名無しさん
07/09/23 23:25:01
strtod使えば大した問題じゃない

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

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

156:16
07/09/24 02:50:08
>>106
>>150

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

157:デフォルトの名無しさん
07/09/24 06:32:53
>>155
それなりに努力の跡は見えるんだが、なんとも……。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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


158: ◆hwUQ/UOPMQ
07/09/24 08:17:35
>>157
ありがとうございます!
できたら悪い点が沢山あったと思うので教えて欲しいです

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

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

>>158
157じゃないけど

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

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

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

160:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 10:15:23
大してレス読んでないけど文字列比較ならstrcmp使えばいいじゃん。

162:デフォルトの名無しさん
07/09/24 10:21:15
>>161 的外れだよ ちゃんと読もうな

163:デフォルトの名無しさん
07/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週間目です
めちゃめちゃですが自分のプログラムです
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

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

sqr() ではなく sqrt()

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

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

167:デフォルトの名無しさん
07/09/24 11:20:07
>>166
アホ? 矛盾してるけど。

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

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

170:デフォルトの名無しさん
07/09/24 11:59:39
>>169
>>168


171:デフォルトの名無しさん
07/09/24 12:14:29
>>170
自分の言葉でたのむわ

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

172:デフォルトの名無しさん
07/09/24 12:15:40
>>171
>>168


173:デフォルトの名無しさん
07/09/24 12:19:38
>>172
答えになってねーよ在日

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

174:デフォルトの名無しさん
07/09/24 12:20:03
>>163程度の英文が読めない奴は答えなくていいから

175:デフォルトの名無しさん
07/09/24 12:22:32
>>174
英語は分かるがcが分からないんだ…

176:デフォルトの名無しさん
07/09/24 12:22:50
翻訳しました

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

177:デフォルトの名無しさん
07/09/24 12:25:26
そして、cはわからないが√3は1.41ではないことは分かる!

178:汗
07/09/24 14:39:17
お助けください。

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

179:デフォルトの名無しさん
07/09/24 14:41:15
>>178
>>7

180:デフォルトの名無しさん
07/09/24 14:41:48
間違えた
>>178
>>1

181:デフォルトの名無しさん
07/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
07/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:デフォルトの名無しさん
07/09/24 14:59:18
2:char*pastr;
8:free(pastr);

184:デフォルトの名無しさん
07/09/24 15:00:00
2:char*patr;
8:free(patr);

185:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 15:54:34
人並みにおごれや
だったな確か

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

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
07/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( ② ,2);
25: if(nrtn!=0){
26: fclose( ③ );
27: return1;
28: }
29:
30: ncnt=0;
31: nrtn=0;
32: while(nrtn==0){
33: nrtn=Func_read();
34: ncnt++;
35: }


189:続続続・汗3
07/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)¦¦
58: (Fp2==NULL&&nno==2)){
59: printf("<%s>エラー:%s",szfname,strerror ④ ));
60: return(-1);
61: }
62:
63: return(0);
64:}

190:続続続続・汗3
07/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)¦¦prtn2==NULL)
77: return(9);
78:
79: nrtn=strcmp(szdat1,szdat2)
80: if(nrtn!= ⑤ ) 
81: return(-1);
82: return(0);
83:}

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

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

192:デフォルトの名無しさん
07/09/24 16:13:30
ひでえコードだな

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

194:へたれ
07/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:デフォルトの名無しさん
07/09/24 16:35:41
>>194
>こんな感じで大丈夫でしょうか?
なんて言う前に、>>1
EZ EDITORってエディタ?そんな情報いらん
コンパイラの方が重要だ

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

197:デフォルトの名無しさん
07/09/24 17:16:03
>EZ EDITOR
今でも使っている奴いるのか?

198:デフォルトの名無しさん
07/09/24 17:19:34
プログラミングが上達するコツ
スレリンク(tech板)

199:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 17:45:22
いや、問題分は「入力された数字までの偶数を出力するプログラム」だろ?

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


202:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 17:45:37
>>200
そうです。

204:デフォルトの名無しさん
07/09/24 17:45:54
>>200でお願いします。

205:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 18:31:23
やったー、これで4Pできるね!

209:163
07/09/24 18:37:42
皆さん本当にありがとうございます
自分のプログラムですが
URLリンク(kansai2channeler.hp.infoseek.co.jp)
エラーがひとつ、どうしても消えません
修正可能な方よろしくお願いします


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

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


213:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 18:51:37
>はやければはやいほうがいいです。
小学生?

215:デフォルトの名無しさん
07/09/24 18:52:29
>>214
ファイルの中身のファイル?

216:デフォルトの名無しさん
07/09/24 18:53:01
>>213
死ね。

217:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 18:56:37
あ。data.txt閉じ忘れた……けどまぁいいや。

219:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 19:00:32
>>217
cat使ったのを書こうと思ったらかぶったよw

221:デフォルトの名無しさん
07/09/24 19:06:00
>>219
え?

222:デフォルトの名無しさん
07/09/24 19:18:35
>data.txtにかかれてあるのが
         ̄ ̄ ̄ ̄ ̄ ̄
どこの国の方ですか?

223:デフォルトの名無しさん
07/09/24 19:33:22
うんこ星人です

224:163
07/09/24 19:40:29
すいませんがまたチェックお願いします
URLリンク(kansai2channeler.hp.infoseek.co.jp)
今度はエラー3とでましたが、、、

225:デフォルトの名無しさん
07/09/24 19:50:42
Display呼び出し時の引数の数
pow(double, double)

226:デフォルトの名無しさん
07/09/24 19:53:03
>>224
でたから何?

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

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

228:デフォルトの名無しさん
07/09/24 20:24:06
お前の糞コードなんていらねえってよw

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

230:デフォルトの名無しさん
07/09/24 20:36:21
ほう、どう使うと言うのかね

231:185
07/09/24 20:51:31
糞コードですいませんでした。
私がわるかったです。

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

233:デフォルトの名無しさん
07/09/24 21:00:04
これが馬鹿さか…

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

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

235:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/24 21:34:08
>>235-237
そこまでして書き込みたいのか。

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

240:デフォルトの名無しさん
07/09/24 22:25:07
>>239
死ね。

241:デフォルトの名無しさん
07/09/24 22:32:38
このスレ1人だけくそ基地外がいるな。

242:デフォルトの名無しさん
07/09/24 22:37:35
オレのことか

243:デフォルトの名無しさん
07/09/24 22:48:17
いや、俺のことだろ?

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

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

246:デフォルトの名無しさん
07/09/25 00:10:50
199はもう終わってるから

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

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

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

250:デフォルトの名無しさん
07/09/25 00:24:12
それも他の人が質問済み

251:デフォルトの名無しさん
07/09/25 00:25:01
>>200,203-204
そこらへんも解決済み

252:デフォルトの名無しさん
07/09/25 00:26:10
直後なのに見てないのかよ

253:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/25 03:20:59
>>253
>ある2つのファイルがある。
>この時1つのファイルには次元nの2つの整数ベクトルが書き込まれている。
これを用意してくれ

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

256:デフォルトの名無しさん
07/09/25 04:16:46
 _______
(___ ___)
   ∇

257:デフォルトの名無しさん
07/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
07/09/25 06:06:24
皆さんの助言のおかげでようやく完成しました
ありがとうございました
一応コード貼っておきます
URLリンク(kansai2channeler.hp.infoseek.co.jp)
おさわがせしてごめんなさい

259:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/25 06:28:21
>>259
他の質問者と同じ形式で書き込もうとは思わない?

261:デフォルトの名無しさん
07/09/25 06:34:10
>>260
いちいちうるせーんだよ、答えもしないクズが

262:デフォルトの名無しさん
07/09/25 06:39:09
>>259
URLリンク(kansai2channeler.hp.infoseek.co.jp)

263:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/25 08:00:20
>>263
ファイルのリネームをしろってこと?
コピーを作れってこと?

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

266:デフォルトの名無しさん
07/09/25 08:27:28
>>265
Cygwin?MinGW?

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

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

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

270:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/25 09:32:18
>>263
URLリンク(kansai2channeler.hp.infoseek.co.jp)

272:デフォルトの名無しさん
07/09/25 09:35:48
>>263 ちょい訂正。拡張子は . 以下3文字まで対応、だと思う。それ以外は知らん。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

273:デフォルトの名無しさん
07/09/25 09:40:50
あと、きんもぉ~☆クソースなんで、あしからずw

274:デフォルトの名無しさん
07/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
07/09/25 10:20:17
assert消し忘れた

276:デフォルトの名無しさん
07/09/25 10:51:49
>>265


277:デフォルトの名無しさん
07/09/25 10:58:40
ってことだと思います
~~~~~~~~~~~~~~~~~~~~~

278:デフォルトの名無しさん
07/09/25 11:06:43
>>265

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

280:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/25 13:31:05
>>281
最短日数を答えるんだよね?アルゴリズムとか書いてない?

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

285:デフォルトの名無しさん
07/09/25 13:34:22
>>263人気杉w

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

よろしくお願いします。


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


288:デフォルトの名無しさん
07/09/25 13:50:01
発注のタイミングや回数はどうやって決まるの?

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

よろしくお願いします。

290:デフォルトの名無しさん
07/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
07/09/25 14:22:06
>290
000Aの発注が先なので、000Aを優先でお願いします。

よろしくお願いします。

292:デフォルトの名無しさん
07/09/25 14:59:28
URLリンク(up.nm78.com)
を表示するプログラムを教えて。

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

294:デフォルトの名無しさん
07/09/25 16:01:35
>>293
スレ違いだが、
90~110 -> 90 + 0~20

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

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

297:デフォルトの名無しさん
07/09/25 16:36:38
aho

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

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

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

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

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

302:デフォルトの名無しさん
07/09/26 01:35:10
スレ違い

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

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

305:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 02:00:22
>>281
期限過ぎてしもた
思ったよりもずっと難しかったし、1回全部作り直したのに見通しがよくならないし…
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

0 A
14 C
15 A
15 B

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

307:デフォルトの名無しさん
07/09/26 02:03:42
>>306 に追記
発注順序はソート済みとする

308:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 03:46:09
>>306
むずいな……。
指針でも書いてくれないと追い辛いっす。

310:デフォルトの名無しさん
07/09/26 03:56:58
  _____ 
  (すた☆らき)
   ̄ ̄\| ̄ 
URLリンク(www.freewebs.com)


311:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 08:39:29
>>281
>>306 の修正版
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

314:デフォルトの名無しさん
07/09/26 12:22:53
>>313
IOCCC見てくればいいじゃん

315:よこ ◆2LEFd5iAoc
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 12:59:34
>>315が見えない。
どっかで暴れてた糞コテか?

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

319:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 16:20:58
>>320
>>321
ありがとうございました

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

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

325:デフォルトの名無しさん
07/09/26 19:43:38
>>323
テンプレ読んでからやりなおせ。アホ。

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

327:デフォルトの名無しさん
07/09/26 19:47:52
>>323
>>1を読め。

328:デフォルトの名無しさん
07/09/26 19:49:22
>>327 お前が >>323 を読まなきゃ良いだろ

329:デフォルトの名無しさん
07/09/26 19:50:04
>>328
読まなくていいものを書き込むな。

330:デフォルトの名無しさん
07/09/26 19:50:24
>>329 オマエモナー

331:デフォルトの名無しさん
07/09/26 19:50:42
>>330
>>1を読め。

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

333:デフォルトの名無しさん
07/09/26 19:50:55
テンプレ利用しろよ。

334:デフォルトの名無しさん
07/09/26 19:51:41
>>323のようなやつはマナーを知らんな。

335:デフォルトの名無しさん
07/09/26 19:51:43
>>331 >>330 を読むな

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

337:デフォルトの名無しさん
07/09/26 19:52:26
>>334のような奴はスルーを知らんなw

338:デフォルトの名無しさん
07/09/26 19:52:57
>>323
駄目な奴は何をやっても駄目

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

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

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

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

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

344:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 20:31:32
>>344
もっと分かりやすく書けや。気に入らん奴は回答せんでええって。
俺、怒らすと怖いよ。

346:デフォルトの名無しさん
07/09/26 20:32:55
>>323 マルチポストかよ!試験は実力で受けろカス!
スレリンク(tech板:970番)

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

348:デフォルトの名無しさん
07/09/26 20:41:59
>>347
オオカミ少年乙

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

350:デフォルトの名無しさん
07/09/26 20:52:43
切られたなり!

351:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 21:21:31
>>351
10分くらいするとマルチポストし始めるのでしょうか?

353:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 21:53:00
352さんありがとうございました

355:デフォルトの名無しさん
07/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】
スレリンク(tech板)

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

357:デフォルトの名無しさん
07/09/26 21:59:29
疑われるって?

358:デフォルトの名無しさん
07/09/26 22:00:59
>>305
>>308

感謝っす!

359:デフォルトの名無しさん
07/09/26 22:02:21
maximum → 最大値
minimum → 最小値
でいいんじゃね

360:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 22:06:54
いまさらだけど、[1] 授業: 教科書。ワロタwww


362:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 22:20:45
親切なな人だね。
さすがにこれ以上は勘弁って感じだよ。

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

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

366:デフォルトの名無しさん
07/09/26 22:24:00
>>364
マルチしてんじゃねえよ

367:>>281 1/4
07/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
07/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
07/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:デフォルトの名無しさん
07/09/26 22:30:14
その長さなら>>1のうpロダを使って欲しい

371:>>281 4/4
07/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:デフォルトの名無しさん
07/09/26 22:33:06
>>370 すんまそん。

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

375:デフォルトの名無しさん
07/09/26 22:46:04
>>374
「言ってた」って子供の絵本か!

376:デフォルトの名無しさん
07/09/26 22:50:12
>>313
Short Coding というのがあるよ。
有名な例だと、

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


377:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/26 23:03:25
>>377
>>373 のどこが分からないのか説明してくれ

379:デフォルトの名無しさん
07/09/26 23:15:30
>>378
もう放置で…

380:デフォルトの名無しさん
07/09/26 23:19:19
どなたか>>377をお願いします

381:デフォルトの名無しさん
07/09/26 23:20:50
>>380
マルチポスト

382:デフォルトの名無しさん
07/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
07/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:デフォルトの名無しさん
07/09/26 23:26:42
クマー

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

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

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

388:デフォルトの名無しさん
07/09/26 23:46:19
>>386 ちょw

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

390:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/27 00:00:13
夏休みの宿題を今からかよって感じだな

393:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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
07/09/27 00:10:00
あ、いけね。#include<algorithm>忘れてた。

396:デフォルトの名無しさん
07/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*);

他の関数はこれで御願いします↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
/4974.txt



397:デフォルトの名無しさん
07/09/27 00:27:44
他の関数はこれで御願いします↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)


このプログラムに、例えば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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/27 01:22:55
次からテンプレに「テンプレすら埋めれない池沼はお帰りください」って書こうぜ

400:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/27 01:28:58
危険なのはレーザーポインタ
ポインタ自身はそこまで危険じゃない

402:デフォルトの名無しさん
07/09/27 01:29:04
問題文を読み返して思ったが

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


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

404:デフォルトの名無しさん
07/09/27 01:37:14
テンプレに沿わない質問がうっとおしい

405:デフォルトの名無しさん
07/09/27 01:41:43
>>401>>400にマジレスしているのがかわいらしい


406:デフォルトの名無しさん
07/09/27 01:44:05
>>403
無能乙www

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

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

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

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


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch