C/C++の宿題片付けます 126代目at TECH
C/C++の宿題片付けます 126代目 - 暇つぶし2ch112:デフォルトの名無しさん
09/05/22 23:20:32
>>110
気づいた一点だけ。
そこまでコンソールのgetsにこだわる必要は無いと思う。
たとえばトリガーキーを押すとモードメニューに入って、モードを選んで、開始。
そんな感じにならないかねぇ。
MYGETSがちょっと不細工に感じるのはまちがってるかなぁ。。。
あとプロポーショナルフォントを使うのは筋違いだと思う。

こんなとこかな。

113:デフォルトの名無しさん
09/05/23 00:03:44
MyGetsに入る前にその前の入力メッセージは棄てなあかんね。
WM_DESTROYでfpのnullチェックしてないので、モードに入る前に終了すると例外。
WM_QUITを受け取ったGetMessageは0を返すので、MyGetsはTRUEを返し、再びメッセージ待機(Windowがないので終われない)。

基本的に待機するような処理は別スレッドに作るべき。
また待機スレッドのSleepは本物のSleepではなくEventをWaitし、終了要求などではそのEventをシグナル状態にする。
じゃないとSleepが完了するまで終われなくなる。

114:113
09/05/23 00:08:34
>MyGetsに入る前にその前の入力メッセージは棄てなあかんね。
ちょっと書き方おかしかったかも。要は反応待ちに入る以前のキー押下は棄てないかんってこと。

115:デフォルトの名無しさん
09/05/23 00:24:38
[1] 授業単元:
[2] 問題文
今テキストファイルAが1つとBが10個あるとする。
Aには
haru
natsu
aki
fuyu
とかかれ
Bにはそれぞれのテキストに以下のような文字列がかかれている
wheiowfjhoiejwio2121oij3io12ji2oj3io2j3oijo
iouaiojoiajwioejio121j3oi1j2iojlajia
これらをまとめ
テキストCに
aki[tab]wheiowfjhoiejwio2121oij3io12ji2oj3io2j3oijo[改行]
natsu[tab]iouaiojoiajwioejio121j3oi1j2iojlajia[改行]
になるようなプログラムをかけ
ただし。Bのそれぞれのテキストは非常に長くても大丈夫にせよ。
[3] 環境 [3.1] OS:linux
 [3.2] gcc
 [3.3 C
[4] 期限: 5/23

116:デフォルトの名無しさん
09/05/23 00:27:50
>>115
問題文が意味不明
まとめ方のルールを明確にしないと誰も解けないよ


117:デフォルトの名無しさん
09/05/23 00:46:41
テキストCに

haru\tBのテキスト1つ目の中身\n
natsu\tBのテキスト2つ目の中身\n
aki\tBのテキスト3つ目の中身\n

のように書き込んでほしいのですが。
Bのテキストが非常に長いんです。1テキストファイル20kバイトくらいでして

118:デフォルトの名無しさん
09/05/23 00:55:31
>>117
Bのテキストファイルが10個ある、と言うことなら、B01~B10ってしていいかい?
Aのテキスト1行目と、B01の全体をタブで繋いで1行にし、Cに出力。
Aのテキスト2行目と、B02の全体をタブで繋いで1行にし、Cに追記。
これをB10まで繰り返す。これであってる?

119:デフォルトの名無しさん
09/05/23 00:59:32
要はBの1行がバッファサイズをオーバーするくらい長いってことじゃん?

120:デフォルトの名無しさん
09/05/23 01:02:08
テキストのサイズはそれほど重要ではないよ。
要は、何をして欲しいかを明確にする事。

121:デフォルトの名無しさん
09/05/23 01:05:28
>>115
後、期限が今日なら、締切時間も書いておいた方が良いかな。

122:デフォルトの名無しさん
09/05/23 01:12:37
>>117
だ~か~ら~、~のようにっていう表現は問題文にならないって。
テキストAとやらには4行しかないのにテキストBとやらは延べ10行あるんだろ?
5行目以降はどう纏めるんだい?

123:デフォルトの名無しさん
09/05/23 01:16:31
>>110
精度を上げるには「timeBeginPeriod~timeEndPeriod」や「QueryPerformanceCounter」を使う手がある。
ビジーループにしてGetAsyncKeyStateでキー状態を検知すればメッセージ処理のオーバーヘッドは避けられると思う。
スレッドの優先度を上げるという方法もあるといえばある。

124:デフォルトの名無しさん
09/05/23 01:18:33
>>118
そうです。
Bのテキストは長いんですけど1行です。
一番最後に改行がはいるだけです。

125:デフォルトの名無しさん
09/05/23 01:25:41
>>124
ファイル名は適当に決めておいていいかい?
>>122の指摘する危惧だけど、Aには10行データがある前提でいいかい?

126:デフォルトの名無しさん
09/05/23 01:45:56
Aには4行としまして
Bは1行に10行分くらい文字列がならんでるとおもってください。
で、Bは4ファイルあるとすればちょうどいいかと。

127:デフォルトの名無しさん
09/05/23 01:53:11
>>126
なんというか、まあ、久しぶりに絶句させてもらったよ。
課題が出されたんだよな?
それを一字一句変えずに、「全部」書けよ。

お前の頭の中ではちょうどいいかも知れんが、
お前が今までのやり取りではっきりさせたのは
ファイルAとやらが4行あるってことだけだぞ?


128:デフォルトの名無しさん
09/05/23 01:55:02
なんか杜撰な課題だな。ちゃんと投げられないだけか?

129:デフォルトの名無しさん
09/05/23 01:56:48
Bのテキストファイルが普通にコピーできないほどの長さだから
説明しにくい。

130:デフォルトの名無しさん
09/05/23 01:58:53
Bの長さはどうとにでもなってさっきから言ってるんだからから、
そこを無視して説明しろよ氏ね。

131:デフォルトの名無しさん
09/05/23 01:59:10
20KBで?

132:デフォルトの名無しさん
09/05/23 02:03:59
>>129
は?お前の説明は要らない。
課題をそのまま書き出せよ。

あとな、1行の長さなんてどうだって良いんだよ。
「一行の長さは不定です」
「あ、っそ」
で済むことなんだよ。

重要なのは、
「プログラムの実行前にどんなデータがあって」
「プログラムの実行後にどんなデータがあるか」
ってことなんだよ。

ファイルAには>>115にあるように4行分のデータがある。
これは分かった。
んでファイルBってのはなんだよ?


133:デフォルトの名無しさん
09/05/23 02:12:12
1行にコピーできないくらいの長さの文字列がある

134:デフォルトの名無しさん
09/05/23 02:12:46
ダメだこりゃ

135:デフォルトの名無しさん
09/05/23 02:17:53
何だ、Bは4つになったのかw
>>126
1行に10行分文字列があるって意味がわからんが。
2000文字位あると勝手に理解するけどいいね。
ソースをコンパイルして実行する環境はあるのか?

136:132
09/05/23 02:19:24
>>134
俺は>>133>>115でないって信じたいw
>>133
とりあえず、問題を明らかにしようか。

ファイルBは何個か存在する。
だからここでは後ろに番号をつけるとする。
例えば、ファイルBが3つある場合、
ファイルBのそれぞれをB1,B2,B3としよう。
そして、ファイルBの行番号をアンダースコアの後に数字をつけることで表そう。
例えばB1の1行目はB1_1、2行目はB1_2となる。
ついでにファイルAの一行目はA_1と表すようにしよう。

んで、ここからが本題。
ファイルCを作るにあたって、
A_1と同じ行になるファイルBの行は何か?選択肢から選べ

選択肢1:
A_1 B1_1 
A_1 B2_1
A_1 B3_1
・・・
A_1 Bi_1

選択肢2:
A_1 B1_1 
A_1 B1_2
A_1 B1_3
・・・
A_1 B1_j

選択肢3:上二つは違います。

137:デフォルトの名無しさん
09/05/23 02:20:33
ツンデレだねぇ。なんか後出しがあると思うけど

138:デフォルトの名無しさん
09/05/23 02:26:57
>>115
今の内に課題の条件をキチンと説明しておかないと
誰かが早とちりしてプログラムを書いてしまって後出しで
条件を付けても誰も相手にしてくれないかもしれんぞ

今までそういう事が何回もあった

後出し条件というのは相当嫌われる

139:デフォルトの名無しさん
09/05/23 02:28:31
Bはこういうファイルです

URLリンク(kansai2channeler.hp.infoseek.co.jp)

140:デフォルトの名無しさん
09/05/23 02:30:44
短いファイルでこれくらいです
これが60kバイトくらいです
最大で778kバイトくらいまで

141:デフォルトの名無しさん
09/05/23 02:34:18
>>140
だ~か~ら、長さはどうだっていい。
ファイルBは全部でいくつある?
ファイルB全ては1行しかないんだな?


142:デフォルトの名無しさん
09/05/23 02:34:52
そうです。

143:デフォルトの名無しさん
09/05/23 02:36:16
2行目にも答えろよwwwwwwww

144:デフォルトの名無しさん
09/05/23 02:37:17
っていうか、正確に言うとAの行数とBのファイル数は一致してるのか?
一致してるなら可変か固定か?
固定なら何個だ?

145:デフォルトの名無しさん
09/05/23 02:38:15
すいませんけど
>>124 >>126

146:デフォルトの名無しさん
09/05/23 02:40:17
これって釣りだよね?
と、思いたい。割と本気で。

147:デフォルトの名無しさん
09/05/23 02:40:56
もういいわ

148:デフォルトの名無しさん
09/05/23 02:43:13
>>139
Bが10個あると書いてあるのになんで一つだけなんだ?
10個ともまとめて貼れよ

Aはわかったらか

149:デフォルトの名無しさん
09/05/23 02:49:14
エスパーするとAの行数4つでBのファイル数が4つ。
Bは全て1行(改行一つ)だが、>>115主観で言うと通常の1行の10倍あるよ。

まぁ、エスパーするだけして違ってたらイヤだから手はつけんが。

150:デフォルトの名無しさん
09/05/23 02:52:37
>>145
これを試してみてくれ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

ファイル名は"A","B01"~"B04","C"としているが、適切な名前にするか、
実行時に対象ファイルをその名前にしてくれ。

で、要求とどう違うか書いてくれ。

151:デフォルトの名無しさん
09/05/23 02:57:17
すいません。Bを最後読み込み表示してAの単語をいれてを4回まわしたらいいだけでしたね


152:デフォルトの名無しさん
09/05/23 02:59:48
>>151
落ち着いて、相手に分かる言葉で頼む。

153:デフォルトの名無しさん
09/05/23 03:04:06
>>115
1つだけ聞かせてくれ。
これは、学校の講義で宿題として出されたものなのか?
自分がこういうことをやりたいだけなのか?

154:デフォルトの名無しさん
09/05/23 03:04:28
Aの単語表示\tBのファイルの全ての文字を読み込んで表示
を4回繰り返してテキストにとる

155:デフォルトの名無しさん
09/05/23 03:07:07
つまりBは10個あると書いてあるけど一個しかないんだね

156:デフォルトの名無しさん
09/05/23 03:14:53
>>145
もうあれだ、system関数でシェルスクリプト呼んじゃえ。
cat B0[1-4] | paste A - > C
でお望みのものができるから。


157:デフォルトの名無しさん
09/05/23 04:03:23
>>75さんありがとうございます。

158:デフォルトの名無しさん
09/05/23 04:06:05
>>95 ありがとうございました

この問題もわからないので教えてください
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 (1)[0,1]の一様乱数x,yを発生させるプログラムを作れ
 (2)[0,1]の一様乱数x,yを発生させ、x^2+y^2<1となる確立を求めろ
(一様乱数を発生させる試行を繰り返し、(上式を満たす回数)/(試行回数)から確立を求める)
またπの数値を求めろ
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C++
[4] 期限: 5月25日
宜しくお願いします


159:デフォルトの名無しさん
09/05/23 08:37:50
>>158
URLリンク(kansai2channeler.hp.infoseek.co.jp)

標準関数std::rand()はやや性能が悪いため
コンピュータ・アルゴリズム事典(奥村晴彦著)より乱数の改良を
行うようにした

160:デフォルトの名無しさん
09/05/23 12:02:48
>>059 (1) 提出期限過ぎてるけど、2整数か?の突っ込みは無しで。
#include <stdio.h>
int main() {
  int n, c;

  printf("2進数を1つ以上入力してください:最後は1000\n");
  do {
    for(n = 0; ;) {
      c = getchar();
      if (c == '0' || c == '1') {
        n <<= 1;
        n |= (c == '1') ? 1 : 0; /* 1/0 を入力 */
      } else if (c == EOF)
        return 1;
      else
        break;
    }
    printf("%d ", n);
    if(c == '\n') puts("");
  } while(n != 0x8); /* 1000 (binary) */
  return 0;
}

161:デフォルトの名無しさん
09/05/23 12:13:32
問題を誤読してる気がする。

162:デフォルトの名無しさん
09/05/23 12:19:46
[1] 授業単元: 情報リテラシー
[2] 問題文: 10から110までの乱数を100個作り、
同時ににアスキーコードで文字に変換して小文字だけを大文字にせよ
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: 富士通
 [3.3] 言語:C言語
[4] 期限:[2009年05月26日h:16:30まで]
[5] その他の制限: アスキーコードやら何やら今一良く分かりません。
よろしくお願いします。

163:デフォルトの名無しさん
09/05/23 12:44:55
>>162 珍しいコンパイラwww
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int main(void)
{
int i, x;
int max=110, min=10;

for(i=0;i<100;i++)
{
x=rand()%(max-min+1)+min;
if(islower(x)) x=toupper(x);
printf("%c", x);
}

return 0;
}

164:デフォルトの名無しさん
09/05/23 12:53:40
京大?

165:デフォルトの名無しさん
09/05/23 13:00:49
Faithless C compiler とか
>>163
種蒔かんで良いのか?


166:110
09/05/23 13:05:38
>>112
>>113
>>123
アドバイスありがとうございます。
課題中で具体的に示されてある修正点だけでいいので、どなたかプログラムを修正してもらえないでしょうか?
提出期限は明後日なのですが、実際にプログラムを動かして色々と考察を書かないといけないので・・
よろしくお願いしますm( _ _)m

167:デフォルトの名無しさん
09/05/23 13:20:58
後だしでなく必ず勝つ。
x=rand()/(RAND_MAX+1.0)*(max-min+1)+min;

168:デフォルトの名無しさん
09/05/23 17:07:20
>>151
// Usage: my_paste a1 b1 b2 b3 b4 ... > c1
// a: 行数はb(max)行 bの数と一致しない場合は途中まで処理する。
// b: 行数は1行のみ。改行で終わる。サイズは大きくても良い。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
  FILE *inA, *inB, *outC = stdout;
  char bufA[80]; // ファイルA読込用(1行を読込めるサイズが必要)
  char bufB[256]; // ファイルB読込用(複数回に分けて読み込むので適当で良い)
  int i, readsize;

  if(argc < 3) return -1;
  inA = fopen(argv[1], "r");
  if (inA == NULL) { fprintf(stderr, "Can't open %s\n", argv[1]); exit(1); }
  for (i = 0; i < argc-2; i++) {
    inB = fopen(argv[i+2], "r");
    if (inB == NULL) { fprintf(stderr, "Can't open %s\n", argv[i+2]); break; }
    // Aを1行読込み、改行を取り除き、末尾にTabをつけてCに出力
    if(fgets(bufA, sizeof(bufA), inA) == NULL) { fclose(inB); break; }
    bufA[strlen(bufA) - 1] = 0;
    fprintf(outC, "%s\t", bufA);
    // Bをバッファサイズ単位で読込み、Cに追記する(必要な回数繰返す)
    while ((readsize = fread(bufB, 1, sizeof(bufB), inB)) > 0) {
      fwrite(bufB, 1, readsize, outC);
    }
    fclose(inB);
  }
  fclose(inA);
  return 0;
}

169:デフォルトの名無しさん
09/05/23 17:18:34
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々) linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[5] その他の制限
問題文のプログラムはls -aslを実行するプログラムである。これを参考にオプション -a -F -l -dを引数とした場合に
lsコマンドと同じ動作をするようなプログラムmylsを作れ。

・statシステムコールではなくlstatシステムコールを用いる
・オプションは-aといった引数に続けて指定、-aFl、-laといった複数オプションにも順不同に対応
・myls - aといった場合にはUsageを表示する
・UID、GIDは数字のままでいい

オプション指定にgetopt関数を使って
while((option = getopt(argc, argv, "aFld")) != -1){
switch (option){
case...
って書こうとしてるんだけど、case 'a':を書こうとした時に下にあるvoid関数のどの部分で
ls -aと同じ動作をしているのかが分からない。どなたかお願いします。

170:デフォルトの名無しさん
09/05/23 17:40:37
>>169 Part125_994
URLリンク(kansai2channeler.hp.infoseek.co.jp)

171:162
09/05/23 17:48:45
>>163
ありがとうございます。

172:デフォルトの名無しさん
09/05/23 18:58:19
1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C++
[4] 期限: 5月25日
[5] その他の制限:条件の判定にif(1.0!=(1.0+e))のようなif文を用いる
eはεのこと

よろしくお願いします。

173:デフォルトの名無しさん
09/05/23 19:13:25
[1]授業単元:アルゴリズム
[2]問題文(含コード&リンク)

問7-6
12x12のセルを持つ迷路がある。
スタートからゴールまでの最短経路を探したい。

(1)フローチャートを書け。
(2)実際に最短経路を調べ、表示するプログラムを書け。

ヒント
迷路は二次元配列で出来ている。
スタートやゴールのセル、壁のセルは最初は分からないようになっている。
手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。

[3]:環境
[3.1]OS:XPsp2
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:5月26日8:00
[5]その他の制限:ソースコードにはしっかりコメントを記述すること、と言われました。
また迷路を生成するプログラムは無くても良いそうです。
C言語に関しては配列を学んだ所までです。(構造体やポインタはまだやってません。)


最悪フローチャートだけでも構いません。よろしくお願いします。

174:デフォルトの名無しさん
09/05/23 19:19:43
迷路探査は、ネット調べればソースごとあるぞ。

175:デフォルトの名無しさん
09/05/23 19:20:11
>>172 Part125_146
#include <stdio.h>
#include <float.h>
#include <math.h>
int main() {
double e1, e2;
unsigned int n;

e1 = 1.0;
printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON);
for(n=1; n<4294967295u; n++) {
e2 = e1 / 10.0;
if(1.0 == (1.0 + e2)) break;
e1 = e2;
}
printf("%.15e %d\n", e1, n-1);
}

176:173
09/05/23 19:35:12
>>174
言葉足らずで申し訳ありません……
迷路探索のソースはいくつか探すことが出来たのですが、
更に最短経路を探すものが見つからなくて今回お願いしました……

177:デフォルトの名無しさん
09/05/23 19:45:01
>>176
普通の迷路なら経路はただ一つなんじゃない?
経路が複数あるって、巡回路の最適解を求めるような問題?

178:173
09/05/23 19:57:20
>>177
上手く言えませんが壁の配置によっては経路が複数あります
袋小路とかも含めて総当たりで経路を調べる、のだとしたら巡回路の問題なのかもしれません
すみません、あまりよくわかってません……

179:デフォルトの名無しさん
09/05/23 20:01:59
>>173
再起関数で、深さをカウントしていって、144段(縦*横)以上になったら打ち切れば良いよ。
で手数をへらして検索。

180:デフォルトの名無しさん
09/05/23 20:48:53
>>173
最短経路が必要な場合は、2DRPGの最短移動アルゴリズムを使えばいいよ。

12x12の配列Aをワークとして用意する。型はintでいいや。
Aはすべて-1で初期化しておく。
まずスタート地点の決定。これは総当たりだから省略。
現在の探索深度を示すワーク int depth を用意して0に初期化する。
さて探索だけど、

1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。
2.Aを全探索して、値がdepthになっているものがあれば、
 その上下左右(斜めも移動できるなら斜めも)に移動可能かどうかを
 調べる。移動可能で、かつその位置に対応するAが-1なら、その位置に
 depth+1を書き込む。
 移動可能な位置がゴールなら終了。4へ。
3.A全体を操作し終わるまで調べて、ひとつもdepthがなければ終了。ゴールには到達できない。
 1つでもdepthがあれば、++depthして、2を繰り返す。

4.ここからが最短経路探索。
 まずゴールには到達しているから、ゴールのdepthは分かってる。
 そこから 上下左右のAの値が depth-1 になっている位置が最短経路。
 複数ある場合の処理は好きなようにすればいいが、今回は単純に最初に
 みつかった場所へ移動すればいいだろう。
5.これを繰り返してスタートに到達するまで続ける。なおスタートには必ず到達できる。

181:デフォルトの名無しさん
09/05/23 20:51:41
>>180
すまん

×1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。
○1.スタート地点に対応するAに0を代入する。

182:デフォルトの名無しさん
09/05/23 20:55:26
ちなみに医学部の卒業研究見学したけど、怖かった。

犬を生きたまま仰向けで四肢を固定し、毛を剃って電気メスで腹を切る。

肋骨をノコギリで切って、心臓にいろいろな電気信号を与えて生体の反応を調べる。

もちろん全身麻酔はしてるけど、生体の反応を損ねないようにギリギリの量にしてるから、ピクピク動いてた。


183:デフォルトの名無しさん
09/05/23 21:12:16
>>179
>>173
>手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。
を満たせなくね?

184:デフォルトの名無しさん
09/05/23 21:21:39
スタート地点も探索で見つけないといけない?
予め指定がないと、何処から始めたら良いものやら。

185:デフォルトの名無しさん
09/05/23 21:34:53
多分出題者が間違ってるんだろうが、バックトレースじゃなくてバックトラックだろうな。

186:デフォルトの名無しさん
09/05/23 21:35:20
流石にスタート地点は総当たりじゃないかなあ
そうでなかったらうーん

187:デフォルトの名無しさん
09/05/23 21:53:30
>>173
やってみた
基本的に >>180 の内容
URLリンク(kansai2channeler.hp.infoseek.co.jp)

188:デフォルトの名無しさん
09/05/23 22:19:36
>>187
「構造体やポインタはやってない」の制限にひっかかってるよw

189:185
09/05/23 22:22:45
ごめん。オレが勘違いしてたようだ。
バックトレースって、ゴールから逆にたどるって意味だなきっと。
>>180のやり方で良さそうだね。

190:187
09/05/23 22:24:36
>>173
>>188 の指摘を受けて >>187 の修正版
URLリンク(kansai2channeler.hp.infoseek.co.jp)

191:172
09/05/24 00:24:38
>>175
ありがとうございました

192:175
09/05/24 01:02:49
>>172 間違い。1.0!=1.0+εとなる最小のεではなかった。
#include <stdio.h>
#include <float.h>
#include <math.h>
int main() {
  double e1, e2;
  unsigned int n;

  e1 = DBL_MIN;
  printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON);
  for(n=1; n<4294967295u; n++) {
    e2 = e1 * 10;
    if(1.0 != (1.0 + e2)) break;
    e1 = e2;
  }
  printf("%.15e %d\n", e1, n-1);
}

193:172
09/05/24 11:56:33
>>175
>>192
訂正ありがとうございます

194:デフォルトの名無しさん
09/05/24 13:51:50
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C++
[4] 期限: 5月26日朝
[5] その他の制限:よろしくおねがいします

195:デフォルトの名無しさん
09/05/24 15:46:05
>>170
ありがとうございます。

196:デフォルトの名無しさん
09/05/24 16:44:53
>>194
なんでうpろだ使ったんだwwwww

197:デフォルトの名無しさん
09/05/24 16:57:13
wwwwwww
うけたwwwww

198:デフォルトの名無しさん
09/05/24 17:51:42
一行伝えるのに資源使いすぎw

199:デフォルトの名無しさん
09/05/24 18:47:24
宿題スレで分岐限定法の課題はあったでしょうか?
あったのであれば、教えてもらいたいです。

200:194 の心の声
09/05/24 19:38:49
>>196
ろだにあげておくとweb検索で引っかかりにくいし、
どういう問題を依頼したかスレのログに残らないから。
そんな事も分からないのに問題解けるのかよw

201:デフォルトの名無しさん
09/05/24 19:41:44
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5/26日午前9時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ポインタ配列まで習ってます

PCで規制が掛かっていたので携帯からの書き込みで申し訳ありません


202:デフォルトの名無しさん
09/05/24 19:57:33
>>201
課題1
my_sort_strings()は、どうやって並べ替える文字列を取得すれば良いですか?

203:デフォルトの名無しさん
09/05/24 20:08:03
引数を何にするのかも問題のうちだろ、jk

204:デフォルトの名無しさん
09/05/24 20:16:14
>>203
並べ替えの対象となるポインタ配列はmainのローカル変数
my_sort_strings()は引数なし

205:デフォルトの名無しさん
09/05/24 20:19:37
>>204
なんでそうなるんだ?

> 課題1
> 文字配列のソートを行って出力する以下のプログラムを完成させよ
> ただし、my_sort_stringsはポインタ配列とそのよう素数を因数として、
> 登録されている文字配列を昇順に並べ替える関数である。

因数は引数の間違いで
関数プロトタイプはこうなるだろ
void my_sort_strings(char **p,int n);


206:デフォルトの名無しさん
09/05/24 20:20:25
アホか、問題文では省略されてる引数を補って書くんだよw

207:デフォルトの名無しさん
09/05/24 20:21:23
わかるとは思うが206は204あてな

208:デフォルトの名無しさん
09/05/24 20:28:14
プロトタイプまで書かれていても、それを書き換えても良いのかね?
私なら、まず確認のためにどうするか聞くが。

209:デフォルトの名無しさん
09/05/24 20:38:21
そんなことより課題2を読む限り
課題1は先頭の一文字だけでソートするべきなのか?

210:デフォルトの名無しさん
09/05/24 20:39:24
みたいだね。
2見る前に書いたらmin_index()がまんま2の仕様になってたw

211:デフォルトの名無しさん
09/05/24 21:36:02
C++始めたばかりのド素人なんですが質問させてください。
「数直線上で4つの整数を入力して二種類の区画を指定し、その区画が重なるか否かを
 判定するプログラム」
【出力結果例

区画A:2 5
区画B:1 3
重なる    】

となるプログラムを作成してみたんですが、↓のでいいでしょうか?
正確な問題文や細かい所は都合により今は見れないので、不明瞭な点もあるかと思いますが、
よければ添削お願いします。あと、使うのはIf文のみでお願いします。

212:デフォルトの名無しさん
09/05/24 21:36:47
#include <iostream>
using namespace std;
int main()
{
int x1,x2,x3,x4;
cout << "区画A:”;
cin >> x1 >> x2;
cout <<"区画B:”;
cin >> x3 >> x4;

If(x4<x1 && x3<x1 && x4<x2 && x3<x2){
cout<<"重ならない”<<endl;
If(x2<x3 && x1<x3 && x2<x4 && x1<x4){
cout<<"重ならない”<<endl;
}
else{
cout<<"重なる”<<endl;
}
return 0;
}

213:デフォルトの名無しさん
09/05/24 21:40:57
テンプレに沿っていないので正規の質問とはみなされていない故
オブジェクション。
これは断じてC言語やC++言語の問題ぢゃなく、論理(ロジック)
の問題。

214:デフォルトの名無しさん
09/05/24 21:51:31
If文は使えないな

215:デフォルトの名無しさん
09/05/24 21:53:12
失礼しました。
授業単元:基本プログラミング
問題文:>>211
OS:Windows
コンパイラ名:g++
言語:C++
期限:明日の午後6時まで
その他の制限:If文のみ使用

です!
ロジックも含めて、文法が合ってるかや無駄な部分がないかなどの意見も頂けたらと思い
質問させて頂きました、スレ違いでしたら申し訳ないありませんでしたorz

216:デフォルトの名無しさん
09/05/24 21:57:58
1の右端が2の左端より大きくて1の左端が2の右端より小さいとき重なる

217:デフォルトの名無しさん
09/05/24 22:13:18
>>216の言うとおり、重なるときを考えた方がわかりやすい
あと、本当にx1<x2,x3<x4になってるか入力値のチェックも欲しい


218:211
09/05/24 22:30:14
>>216>>217
なるほど…
そっちのやり方も今試してみたんですが、x1x2x3x4の値はそれぞれ自由なので、
例えば出力結果

区画A:15 6
区画B:7 -8
重なる

にもなるようにしないといけないので、整数の入力値の場合分けがかなり面倒になって
プログラムが>>211より長くなってしまうかなと思ってるんんですがどうでしょう…
といっても、>>211のプログラムとロジックで矛盾や穴などが無いかも自分では自信が無いのですが…
なにぶん今はプログラムを実行できる環境にいないので机上の空論状態なんですorz

219:デフォルトの名無しさん
09/05/24 22:36:28
>>211
区間の両端の数値は区間の中なのか外なのかが決まってないと
区間A:1 4
区間B:4 6
のとき重なっていると見なすかどうかが決められない。
区間A:1 1
区間B:1 6
も同様。両端の値は区間の中なの?外なの?

220:デフォルトの名無しさん
09/05/24 22:38:07
>>219
>>212だとどちらも重なるだろ

221:デフォルトの名無しさん
09/05/24 22:41:38
>>218
x1,x2とx3,x4をそれぞれ小さい順に並べ替える
if ((x3 < x1 && x1 < x4 || x3 < x2 && x2 < x4) ||
(x1 < x3 && x3 < x2 || x1 < x4 && x4 < x2)) {
重なっている
}


222:デフォルトの名無しさん
09/05/24 22:46:00
>>218
先に大小みて入れ替えるほうが簡潔でわかりやすいと思うが
if(x1 > x2) { int temp = x1; x1 = x2; x2 = temp;}
if(x3 > x4) { int temp = x3; x3 = x4; x4 = temp;}
if(x1 < x4 && x2 > x3) cout << "重なる";
else cout << "重ならない";


223:デフォルトの名無しさん
09/05/24 22:51:40
>>219
あ、言葉足らずでごめんなさい、端が点と点で重なってる場合も重なってるとみなされます

>>221
おお、なるほど
それだとif文も一つで済んでいいですね!
参考になりました、ありがとうございます!

224:デフォルトの名無しさん
09/05/24 22:56:53
>>222
ごめんなさい、まだ授業でtempを習ってないもので…
でも後学のためになりました、ありがとうございます

225:デフォルトの名無しさん
09/05/24 22:56:56
すべての数が不一致であることを前提とする。4つの数で
最大の元が属する区画名をA,最小の元が属する区画名をBとする。
A=Bの時は重なる
A<>Bの場合、区画Aで4数最大のものでないものをy
区画Bの元で4数最小でないものをzとする。
重なるのはy<zの場合のみ

上のことをコーディングすれば良いんぢゃ?
(変数は常に値渡しされるとは限らないから関数内で
勝手に変更することはC++では許されない。念の為)

226:デフォルトの名無しさん
09/05/24 23:01:01
>>220 >>211 数値の型がわかんなかったのでテンプレで。数値の入力部分は好きにどうぞ。
#include <iostream>
template <class T> class Range {
public:
Range() {}
Range(const T& v0, const T& v1) { create(v0, v1); }
Range(const Range<T>& s) { *this = s; }
virtual ~Range() {}
const Range<T>& operator=(const Range<T>& s) { min_ = s.min_; max_ = s.max_; return *this; }
void create(const T& v0, const T& v1) { if(v0 < v1) { min_ = v0; max_ = v1; } else { min_ = v1; max_ = v0; } }
bool isIntersect(const Range<T>& s) const {
if(min_ <= s.min_) {
return max_ >= s.min_; // 接するのも交わりと見なす
//return max_ > s.min_; // 接するものは交わりとは見なさない
} else {
return s.isIntersect(*this);
}
}
private:
T min_;
T max_;
};
int main()
{
Range<int> r0(2,5);
Range<int> r1(1,3);
if(r0.isIntersect(r1)) {
cout << "重なる" << endl;
} else {
cout << "重ならない" << endl;
}
}

227:デフォルトの名無しさん
09/05/24 23:04:34
沢山のアドバイスありがとうございました!
色々と参考になりました
お陰様でいっぱしの形になって提出できそうです
これからも精進します(`・ω・´)

228:デフォルトの名無しさん
09/05/24 23:07:15
>>221
>>222
うっ、if文のみ使用って、判定にswitchとかを使うなという意味じゃないのか・・・
ごめん。

229:デフォルトの名無しさん
09/05/24 23:09:15
>>212 == >>216 で合ってる。医女

230:デフォルトの名無しさん
09/05/25 00:18:47
>>201 min_index() を使ってない my_strcmp() の使い方が分からなかったので strcmp() と同じだと仮定
課題1
void my_sort_strings(char **p,int n)
{
int i, j;

for(i=0;i<n;i++)
{
for(j=0;j+1<n-i;j++)
{
if(*p[j]>*p[j+1]) swap_strings(p, j, j+1);
}
}
}

課題2
void lexicograhic_sort(char **p,int n)
{
int i, j;

for(i=0;i<n;i++)
{
for(j=0;j+1<n-i;j++)
{
if(my_strcmp(p[j], p[j+1])>0) swap_strings(p, j, j+1);
}
}
}

231:デフォルトの名無しさん
09/05/25 01:09:02
自由課題:可憐な カレン ダーを作ってくれ


232:デフォルトの名無しさん
09/05/25 01:12:14
【質問テンプレ】
[1] テキストファイル
[2]Write a program to parse words onto separate lines; that is, locate
and write each word to its own line.(課題文は英文で与えられている)
[3] 環境
 
[3.1] OSWindows
 [3.2]VisualC++
 [3.3] 言語:C
[4] 期限: (2009年5月26日9:30)
[5] 制限はなし


233:デフォルトの名無しさん
09/05/25 01:26:18
>>232 合ってるかどうか分からんけど
#include<stdio.h>

int main(void){
char buf[100+1];

while(scanf("%100s", buf)==1){
puts(buf);
}
return 0;
}

234:デフォルトの名無しさん
09/05/25 01:42:40
>>232に追加 テキストファイルを作成する必要がある。


235:デフォルトの名無しさん
09/05/25 02:56:36
1111 aaaa ddd dddd-dfgg ddddd 9999. 2222 dddd ggg, gggg 444-
444 sss ddddd ccc -
ddd rrrr345 333 444. >>232
#include <stdio.h>
int main(){
  int c, cr = 1, minus = 0;

  while( (c = getchar()) != EOF ){
    if(c == ' ' || c == '\t') {
      if(minus == 1) ; /* minus_space_return */
      else if(cr != 0) putchar('\n'); /* space_minus_return */
      cr = 0;
    } else if(c == '\n') {
      if(minus == 1) ; /* minus_return */
      else if(cr != 0) putchar('\n');
      cr = 0;
      minus = 0;
    } else if(c == ',' || c == '.') {
      if(minus == 1) putchar('-');
      if(cr != 0) putchar('\n');
      cr = 0;
      minus = 0;
    } else if(c == '-') {
      minus = 1;
    } else {
      if(minus == 1) putchar('-'); /* minus_not return */
      putchar(c);
      cr = 1;
      minus = 0;
    }
  }
}

236:デフォルトの名無しさん
09/05/25 13:12:58
[1]数理物理
[2]問題文:
ルジャンドル多項式のゼロ点(Pn(x)=0を満たすx)を求めたい。

① n=4 の時 (解析解あり。)
② n=10の時 (解析解なし。)

の2つの場合についてニュートン法または2分法を用いて求めよ。

URLリンク(www.mns.kyutech.ac.jp)
[3]OS:Linux/コンパイラ:わかんね/言語C
[4]5/26まで

お願いします。

237:194
09/05/25 17:15:46
資源を使いすぎた者ですが、num_putファセットどなたか分かる方いませんか?
ぐぐっても日本語の文献がほとんどヒットしません。英語のは見つかりますがどれも例がめちゃ難しいのしかないです
問題の意味は、このファセットを使って230764530を出力すると1000単位でコンマをつけて出力するようにしろとのことです
なので「230,764,530」になるといいです よろしこおねがいします

238:デフォルトの名無しさん
09/05/25 17:53:00
std::locale locale_;
OutIt outit;
std::ios_base& format = ;

std::num_put<charT, OutIt>& hoge = std::use_faset<std::num_put<charT, OutIt>(locale_);
hoge.put(outit, format, char, value);

こんな感じで後は自分で設定すればいいよ

239:デフォルトの名無しさん
09/05/25 18:23:52
>>237
MSDNに載ってるじゃないか。英語だけど、丸写しでもうごいたぞ??

#include <iostream>
//URLリンク(msdn.microsoft.com)
//230764530

int main(){
    long Val = 230764530;
    std::locale Loc("japanese");

    std::cout.imbue(Loc);
    std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); 
    return 0;
}

240:194
09/05/25 18:33:33
>>239
すみません
エラー: ‘_Iter’は‘std::basic_ostream<char, std::char_traits<char> >’のメンバではありませんという
コンパイルエラーになるのですが何かわかりますでしょうか


241:デフォルトの名無しさん
09/05/25 18:53:40
>>240
_Iterはイテレータをtypedefしたものだと思うのだが、最初にアンダースコアが入ってるからベンダ定数かもしれん。
俺の使ってるコンパイラはVC9EE(VC2008)なんだが、おまいさんはなにをつかってるんだい?

うちではちゃんと通るし230,764,530とでる。

で、ちょっと改変してみた。これで動かなかったら俺の範疇外だ。
#include <iostream>
//URLリンク(msdn.microsoft.com)
//230764530

int main(){
    long Val = 230764530;
    std::locale Loc("japanese");
    //std::locale::global(std::locale("japanese"));
    

    std::cout.imbue(Loc);
    //std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); 
    std::use_facet<std::num_put<char>>(Loc).put(std::ostreambuf_iterator<char>(std::cout.rdbuf()),std::cout,' ',Val); 
    return 0;
}

242:194
09/05/25 19:13:16
>>241
大変失礼しました。
最初にVisualStudioを使っていますと書いておきながらg++でコンパイルしていました。
上記のコードも試したのですが
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
Abort trap
というエラーになりました。しかし、VC++2008で試したところ問題なく動いたので、これで十分です。
ありがとうございました。

243:デフォルトの名無しさん
09/05/25 19:27:47
[1] 授業単元: 上級者のためのC++
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: ウィンドウズXP
 [3.2] コンパイラ名とバージョン: VisualC++2008
 [3.3] 言語: C++
[4] 期限: 2009年5月28日朝まで
[5] その他の制限: 難しいですが何卒よろしくおねがいします

244:デフォルトの名無しさん
09/05/25 20:05:55
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 5月27日12:00
[5] その他の制限: 是非、よろしくお願いします

245:デフォルトの名無しさん
09/05/25 20:22:06
>>243
1 URLリンク(kansai2channeler.hp.infoseek.co.jp)

246:デフォルトの名無しさん
09/05/25 20:32:18
>>243
2 URLリンク(kansai2channeler.hp.infoseek.co.jp)

247:デフォルトの名無しさん
09/05/25 21:21:23
>>244
(1) URLリンク(kansai2channeler.hp.infoseek.co.jp)
(2) URLリンク(kansai2channeler.hp.infoseek.co.jp)

248:デフォルトの名無しさん
09/05/25 21:21:24
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++
[4] 期限: 明日5月26日 23:30まで
[5] その他の制限: 特にありません。

問題数が多いです。
お手数ですがどうかよろしくお願いいたします。


249:デフォルトの名無しさん
09/05/25 21:36:12
またフィボナッチ…

250:デフォルトの名無しさん
09/05/25 22:21:20
>>247さん、ありがとうございます。
ただ、(2)のプログラムの
#include <iterator>
#include <algorithm>
という2つのインクルードを初めてみました。これはどういう場合に使うのでしょうか?
やはりこれを使わないとプログラムは難しくなってしまうんですか?

251:デフォルトの名無しさん
09/05/25 22:23:31
ぐぐれ

252:デフォルトの名無しさん
09/05/25 22:26:41
>>250
ソート処理をstd::sort、出力をstd::ostream_iteratorに丸投げしているため。
これらを見たことないとなるとソートは自分で書きなさいってことなのかね

253:デフォルトの名無しさん
09/05/25 22:57:48
>>250 バブルソートで書き直してみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)

254:デフォルトの名無しさん
09/05/25 23:16:31
1] 授業単元:C++演習
[2] 問題文
以下のプログラムをもとに、入力された文字列に!があったら!?に置き換えよ
(ヒント s.insert(i,t)を用いよ)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:明日まで

プログラムを習い始めたばかりで、
よくわかってないのですがよろしくお願いします。


255:デフォルトの名無しさん
09/05/25 23:24:45
[1] 授業単元:ソフトウェア
[2] 問題文
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VisualC++
 [3.3] 言語:C
[4] 期限:明後日までにおねがいします。

256:243
09/05/26 00:12:33
>>245
>>246
助かりました!有難うございました。

257:デフォルトの名無しさん
09/05/26 00:15:55
>>252 >>253
ありがとうございます。調べてみたんですが、便利ですね・・・
今までこんな話は聞いたことなかったし、ソートの問題は自分で書いてました。
今回の問題でもソート・出力は自分でやったほうがいいかと思ってます。
でも、ひとつ勉強になりました。ありがとうございました。

258:デフォルトの名無しさん
09/05/26 00:20:19
>>255
URLリンク(kansai2channeler.hp.infoseek.co.jp)

259:デフォルトの名無しさん
09/05/26 00:36:48
>>230
ありがとうございます
もしまた頼る時があったらよろしくお願いします

260:デフォルトの名無しさん
09/05/26 01:03:31
>>259
姑息な最適化なら任せてくれ

261:デフォルトの名無しさん
09/05/26 01:17:02
おっと誤爆だったみたいだ

262:デフォルトの名無しさん
09/05/26 02:14:14
>>236
URLリンク(kansai2channeler.hp.infoseek.co.jp)

263:248
09/05/26 09:30:23
>>248です。

フィボナッチは解決いたしました。
(5_1)も出来そうなので、(5_3)以降をお願いいたします。

問題文(含コードンク)URLリンク(kansai2channeler.hp.infoseek.co.jp)

264:デフォルトの名無しさん
09/05/26 09:56:01
(5_3)
void binary(int n)
{
if(n>1) binary(n>>1);
printf("%d", n & 1);
}

265:デフォルトの名無しさん
09/05/26 10:13:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ゼロで初期化したint型変数,float型変数,double型変数をそれぞれ3個ずつ用意し,それぞれに1,0.1,0.01を1000回加えてそれぞれの結果を画面に出力するアルゴリズムを考え,それにしたがってプログラムを作成せよ.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:秀丸
 [3.3] 言語:C言語
[4] 期限:5月28日
[5] その他の制限: 関数はまだ習っていません。本当に基礎をやっています。


266:デフォルトの名無しさん
09/05/26 10:46:06
#include <stdio.h>

int main(void)
{
int i, a = 0, b = 0, c = 0;
float fa = 0, fb = 0, fc = 0;
double da = 0, db = 0, dc = 0;

for(i=0; i<1000; i++) {
a += 1;
b += 0.1;
c += 0.01;
fa += 1;
fb += 0.1;
fc += 0.01;
da += 1;
db += 0.1;
dc += 0.01;
}

printf("%d %d %d\n", a, b, c);
printf("%f %f %f\n", fa, fb, fc);
printf("%f %f %f\n", da, db, dc);

return 0;
}

267:デフォルトの名無しさん
09/05/26 11:47:50
>>262
ありがとうございます。
非常に助かりました。

268:デフォルトの名無しさん
09/05/26 15:20:55
>>248

(5_4)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(5_5)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(5_6)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(5_7)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

円盤の数は任意だが、ここでは5にしてある。


269:デフォルトの名無しさん
09/05/26 15:35:04
[1] プログラム演習
[2] 問題文
URLリンク(kansai2channeler.hp.infoseek.co.jp)
文字列を入力し空行が入力されたら、今まで入力されたものを表示する。
[3] 環境
[3.1] OSWindows
 [3.2]VisualC++
 [3.3] 言語:C++
[4] 期限: 今日中
[5] 制限はなし

途中までやっていたんですが、空行の時の条件がうまくできません。
よろしくお願いします。



270:デフォルトの名無しさん
09/05/26 16:09:24
>>269
getline(cin,s)使ってみたら?

271:デフォルトの名無しさん
09/05/26 16:46:56
>>270
ありがとうございました
できました
簡単なトコでのミスだったんですね

272:デフォルトの名無しさん
09/05/26 16:49:57
>>268 お疲れ様です。本当にありがとうございました!

273:daigaku1nen
09/05/26 18:26:48
プログラミングの授業で
a,b,c,d,eを cin でキーボードから読み取り
{a÷(b×c)+d×(b+3)}÷(e×2) の計算の答えを出力するプログラミングをつくる課題が出たのですが、

演算子の優先順を考慮すると、どう変換して書けばいいのか全く分かりません。
助けてください。
提出期限は今日の0時までです。。。

274:デフォルトの名無しさん
09/05/26 18:50:32
>>273
#include <iostream>
int main()
{
double a,b,c,d,e;
std::cout << "a:"; std::cin >> a;
std::cout << "b:"; std::cin >> b;
std::cout << "c:"; std::cin >> c;
std::cout << "d:"; std::cin >> d;
std::cout << "e:"; std::cin >> e;
std::cout << (a/(b*c)+d*(b+3))/(e*2) << std::endl;
return 0;
}


275:棚大生
09/05/26 18:51:13
C++の課題なのですが、教えてください。
提出期限は 5/28午前0時 です。

昨日、一昨日と2日間粘りましたがチンプンカンプンです。
問題は下記の通りです。

int i=99;と設定されていたら、
i/3 と i/3. では結果が異なる。
プログラミングを作成することによって、i/3 と i/3.を評価せよ。
(a,bを実数としてi/3 と i/3.をa,bに代入することとする。)

a=10, b=3, c=2 として
!aかつb>cの戻り値、!aまたはb>cの戻り値を求めるプログラムを作成せよ。

a=1,b=10,c=100のとき
c<b && b<a と c<b<a は同じものではない。
上記のことをプログラム化して確かめよ。

i=100で a=i++, a=++iの値を確かめるプログラムを作成せよ。

1から10までの和を計算するプログラムをインクリメント演算子を用いて、作成せよ。
デクリメント演算子を用いて、nCmを計算するプログラムを作成せよ。但し、n,mは cin を使って
キーボードから読み取ること。

お願いします!!!

276:daigaku1nen
09/05/26 18:59:50
>>274
本っっっっ当にありがとうございます。

また分からない課題が来たらここで質問しにきていいですか??

277:デフォルトの名無しさん
09/05/26 19:07:16
>>276
次からは質問テンプレ使ったほうがいいよ
cinというキーワードがあったからC++とわかったけど
ぜんぜん違う回答になってた可能性があるからね


278:デフォルトの名無しさん
09/05/26 19:09:12
>>276
丁寧に質問すれば、誰かが答えてくれる。

279:デフォルトの名無しさん
09/05/26 19:30:18
>>275
①の99って、問題文あってる?

280:棚大生
09/05/26 19:37:04
すいません!!!

101でした。

281:デフォルトの名無しさん
09/05/26 19:55:52
>>258
ありがとうございました。

282:デフォルトの名無しさん
09/05/26 20:46:43
>>275
#include <iostream>

int main()
{
int i = 101;
double a = i / 3;
double b = i / 3.;
std::cout << "101 / 3 = " << a << std::endl;
std::cout << "101 / 3. = " << b << std::endl;
return 0;
}


283:デフォルトの名無しさん
09/05/26 20:47:43
>>275 ①~④
#include <iostream>
int main()
{
// ②
int a=10,b=3,c=2;
std::cout << "\"!a && b > c\"=" << (!a && b > c) << std::endl;
std::cout << "\"!a || b > c\"=" << (!a || b > c) << std::endl;
// ③
a=1;b=10;c=100;
std::cout << "\"c<b && b<a\"=" << (c<b && b<a) << std::endl;
std::cout << "\"c<b<a\"=" << (c<b<a) << std::endl;
// ④
int i=100; a=i++;
std::cout << "a=i++:" << a << std::endl;
i=100; a=++i;
std::cout << "a=++i:" << a << std::endl;
return 0;
}


284:デフォルトの名無しさん
09/05/26 20:48:51
>>275 ⑤-1
#include <iostream>
int main()
{
int i =1, sum = 0;
for (i = 1; i <= 10; i++) // インクリメント演算子
sum += i;
std::cout << "sum:" << sum << std::endl;
return 0;
}


285:デフォルトの名無しさん
09/05/26 20:49:50
>>275 ⑤-2
#include <iostream>
int comb(int n, int r)
{
if (r == 0 || r == n) return 1;
n--; // デクリメント演算子
return comb(n, r - 1) + comb(n, r);
}
int main()
{
int i, n, r;
long x;
std::cout << "n:"; std::cin >> n;
std::cout << "r:"; std::cin >> r;
std::cout << "nCr=" << comb(n, r) << std::endl;
return 0;
}
こんなんで良いのかな。違うような気もするが。


286:棚大生
09/05/26 20:55:34
>>282
ありがとうございます!!!

面倒だと思いますが、②~⑤もお願いします。


287:棚大生
09/05/26 21:04:38
>>286 はすいません書き込むのが遅れました
>>283
②③に関してなんですが、coutでなぜ"\"というのが出てくるのですか?

288:棚大生
09/05/26 21:10:12
>>285
重ね重ねすいません。
⑤-2で、できれば combを使わない方法でお願いしたいのですが。。。

289:デフォルトの名無しさん
09/05/26 21:15:45
注文の多い料理店

290:デフォルトの名無しさん
09/05/26 21:56:26
>>275 ⑤-2 (combを使わない)
#include <iostream>
int main()
{
int i, n, r;
int x = 1;
std::cout << "n:"; std::cin >> n;
std::cout << "r:"; std::cin >> r;
for (i = n; i >= n - r + 1; i--) //デクリメント演算子
x *= i;
for (i = r; i >= 1; i--) //デクリメント演算子
x /= i;
std::cout << "nCr=" << x << std::endl;
return 0;
}
オーバーフローは全く考慮してないので注意。

291:デフォルトの名無しさん
09/05/26 22:01:42
[1] 授業単元:プログラミングⅠ
[2] 問題文(含コード&リンク):

1!~53!を計算して、それらの計算結果の一の位、十の位、…をそろえて(つまり右揃えで)
出力するプログラムを作成せよ。但し、その際
・適切にモジュール化、機能分割する
・53!≒4.27*10^69であることを考慮して階上値を入れる配列の大きさを決める

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: あさって
[5] その他の制限:
・配列の添え字がメモリ確保した配列要素の範囲を超えてはならない
・乗算を上の桁から行ってはいけない。
・53!の計算、出力の際に最初から1*2*3*...*53という風に、極端に
 処理効率を悪くしてはいけない。

292:デフォルトの名無しさん
09/05/26 22:10:34
>>291
むずいな

293:デフォルトの名無しさん
09/05/26 22:14:50
はぁ?

294:デフォルトの名無しさん
09/05/26 22:39:56
>>291
多倍長整数の乗算の実装をしろってことでおk?
制限の2つ目からもそんなニオイが感じられるし
3つ目の制限は 53!=52!(直前に計算済み)x53をしろってことかな

295:真面目に質問!
09/05/26 22:41:55
【授業】:C++

【問題文】:

①以下のプログラムを実行した際,戻り値として何が表示されるか。

#include <iostream>
int main()
{
int a,d,e;
a = 10;
d = a ==10;
e = a < 10;
cout << e <<"\t"<< d <<endl;
}

②a=10,b=3,c=4とすると、c>aかつc>bの戻り値、c>aまたはc>bの戻り値を出力するプログラムを作成せよ。

③②のプログラムを実行した際,戻り値として何が表示されるか。

【期限】:09.05.27 12:00


何の事を言っているのかサッパリです。。。
よろしくお願いします。

296:棚大生
09/05/26 22:45:00
>>290
どうもありがとうございました。
なんとかなりそうです。

297:デフォルトの名無しさん
09/05/26 22:56:50
>>291 なんとか1レスに納めた。修正ヨロ
#include<stdio.h>
#define MB_UNIT 10000
#define MB_SIZE 18
typedef struct tag_mb_t{ long data[MB_SIZE]; }mb_t;
mb_t mb_mul(mb_t a, int n){
long i, tmp, carry=0;
for(i=0;i<MB_SIZE;i++){
tmp=a.data[i]*n+carry;
a.data[i]=tmp%MB_UNIT;
carry=tmp/MB_UNIT;
}
return a;
}
int mb_sprint(char buf[MB_SIZE*4+1], mb_t a){
char i, *p=buf;
for(i=MB_SIZE-1;i>0 && a.data[i]==0;i--);
p+=sprintf(p, "%ld", a.data[i]);
for(i--;i>=0;i--) p+=sprintf(p, "%04ld", a.data[i]);
return p-buf;
}
int main(void){
char buf[MB_SIZE*4+1], i, len53;
mb_t x[54]={{{1}}};
for(i=1;i<=53;i++) x[i]=mb_mul(x[i-1], i);
len53=mb_sprint(buf, x[53]);
for(i=1;i<=53;i++){
mb_sprint(buf, x[i]);
printf("%*s\n", len53, buf);
}
return 0;
}

298: ◆XjTlXLIlH2
09/05/26 23:10:11
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
めもりのついていない4リットルの容器と、3リットルの容器があり、これらを使って4リットルの容器に2リットルをはかるプログラムをC言語で書く。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:
forやwhileなどを主に使ったプログラムにしたいのですがよくわからなかったのでよろしくお願いします。


299:デフォルトの名無しさん
09/05/26 23:14:51
>>298
4 0
1 3
1 0
0 1
4 1
2 3


300:デフォルトの名無しさん
09/05/26 23:21:16
>>299
0 3
3 0
3 3
4 2
0 2
2 0

301:デフォルトの名無しさん
09/05/26 23:35:34
>>295
(1) 0 1
(2)
#include <iostream>
int main()
{
int a,b,c,d,e;
a = 10; b = 3; c = 4;
d = c>a && c>b;
e = c>a || c>b;
cout << e <<"\t"<< d <<endl;
}
(3) 1 0
よほどおかしな環境でない限りはこうなるとは思うが、
コンパイラ/OSが書いてない以上実行結果は妄想。

302:デフォルトの名無しさん
09/05/26 23:42:15
>>291
#include <stdio.h>
#include <stdlib.h>
typedef struct tag_LINT{
  int sz_array;
  int* value;
} LINT;
LINT* create_lint(int keta){ // size:桁
  LINT* lint = (LINT*)malloc(sizeof(LINT));
  lint->sz_array = keta / 4 + 1;
  lint->value = (int*)calloc( sizeof(int), lint->sz_array);
  return lint;
}
LINT* copy_lint(LINT* lint){
  LINT* copy = (LINT*)malloc(sizeof(LINT));
  copy->sz_array = lint->sz_array;
  copy->value = (int*)calloc( sizeof(int), lint->sz_array);
  return copy;
}
LINT* mul_lint_int(LINT* l_num, int r_num){
  int carry = 0;
  //for (int i=l_num->sz_array-1; i>=0; i--){
  for (int i=0; i < l_num->sz_array; i++){
        int tmp = l_num->value[i] * r_num + carry;
    l_num->value[i] = tmp % 10000;
    carry = tmp / 10000;
  }
  return l_num;
}
>>303に続く

303:デフォルトの名無しさん
09/05/26 23:44:20
>>302の続き

void print_lint(LINT* l_num){
  for (int i=l_num->sz_array-1; i>=0; i--){
    printf("%04d", l_num->value[i]);
  }
  printf("\n");
}
int main(void){
  LINT* n = create_lint(70); // 53!≒4.27*10^69
  n->value[0] = 1;
  for (int i=1; i<=53; i++){
        mul_lint_int(n, i);
    printf("%2d!= ", i);
    print_lint(n);
  }
  return 0;
}

リロード忘れてて>>297で答えてたなorz
でもとりあえずw

304:デフォルトの名無しさん
09/05/26 23:50:43
+ ;
* ☆_+
: , xヾ:、__,..-‐‐:、、,へ.........._
         く '´::::::::::::::::ヽ
          /0:::::::::::::::::::::::', free議論が始まる前にf逃げて~!!!
       =  {o:::::::::(;´Д`):::}
         ':,:::::::::::つ:::::::つ
      =   ヽ、__;;;;::/
           し"~(__)

305:294=302=303
09/05/27 00:09:48
>>304 スマソw
>>302-303の修正
1. // size:桁 -> 消し忘れ
2. copy_lint関数 -> 使ってないから消して
3. 追加
LINT* delete_lint(LINT* lint){
  free(lint->value);
  free(lint);
}
4. 変更
main関数のreturn前に
  delete_lint(n);
を追加
5. 出力部分で先頭部分を空白にするならfor文を
bool f=true;
for (int i=l_num->sz_array-1; i>=0; i--){
  if (f && (0!=l_num->value[i]))  f=false;
  printf( (f? "    ": "%04d"), l_num->value[i]);
}
に変更

306:デフォルトの名無しさん
09/05/27 00:13:43
【質問テンプレ】
[1] 授業単元:C言語
[2]問題1 テキストファイルにある文字列を空白で区切って一行ごとに表示する
例 I have a pen とテキストファイルにかかれていたらほかのファイルに
I
have
a
pen
と表示する
問題2 問題1で1行ごとに表示した文字列の4行目の文字列をほかのファイルにコピーする
例の場合はpenをコピーし、また別のファイルにpenと出力させる。
問題3 問題1で作った文字列で区切る物を利用してアルファベット、スペース、数字の数を数えるプログラム
例 as 123 rtd xxとファイルに入力されていたらアルファベットは3こ、数字は2こ、スペースは3個と表示
1,2,3はそれぞれ別のプログラムですが2,3では1のものを利用します。
[3] 環境
 [3.1] OS: Windows
 [3.2] VisualC++
 [3.3] 言語: C
[4] 期限:5月29日まで



307:デフォルトの名無しさん
09/05/27 01:23:07
[1] 授業単元: C++演習
[2] 問題文(含コード&リンク):
  URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限: 27日まで
[5] その他の制限:vectorを習ったばかりです



308:デフォルトの名無しさん
09/05/27 01:53:29
>>306

問題1--------------------
#include <stdio.h>
int main(void)
{
int c, last;
for (; (c = getchar()) != EOF; ) {
if (c == ' ')
if (last == ' ') ;
else putchar('\n');
else
putchar(c);
last = c;
}
return 0;
}


309:デフォルトの名無しさん
09/05/27 01:54:38
>>306

問題2--------------------
#include <stdio.h>
#include <string.h>
#define MAXBUF 1000
int main(void)
{
unsigned char buf[MAXBUF];
int count = 0, continued = 0;
while (fgets(buf, sizeof(buf), stdin) != NULL) {
if (!continued) count++;
if (count == 4)
fputs(buf, stdout);
if (strlen(buf) == MAXBUF - 1 && buf[MAXBUF - 2] != '\n')
continued = 1;
else
continued = 0;
}
return 0;
}


310:デフォルトの名無しさん
09/05/27 01:55:22
>>306

問題3--------------------
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int c;
int found_digit = 0, found_alpha = 0;
int numeric_count = 0, alpha_count = 0, line_count = 0;
while((c = getchar()) != EOF) {
if (c == '\n') {
line_count++;
if (found_digit) numeric_count++;
if (found_alpha) alpha_count++;
found_digit = 0;
found_alpha = 0;
}
if (isdigit(c)) found_digit = 1;
if (isalpha(c)) found_alpha = 1;
}
printf("アルファベットは%d個、数字は%d個、空白は%d個です\n",
alpha_count, numeric_count, line_count - 1);
return 0;
}

311:307の間違い
09/05/27 01:56:20
URLリンク(kansai2channeler.hp.infoseek.co.jp)

312:デフォルトの名無しさん
09/05/27 02:00:58
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月初旬
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
現在できているプログラムですが、ツーペアの判定が上手くいきません。どなたか改善をお願いします。

313:デフォルトの名無しさん
09/05/27 02:07:23
>>306
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

314: ◆Xf1zvf6ius
09/05/27 02:51:52
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS:XP
 [3.2] textpad
 [3.3] 言語: C++
[4] 期限: 5月末
よろしくお願いします。

315:馬路
09/05/27 03:30:09
お願いします。

【授業】:プログラミング(C++)

【問題文】:

①以下のプログラムを実行した際,戻り値として何が表示されるか。

#include <iostream>
int main()
{
int a,d,e;
a = 10;
d = a ==10;
e = a < 10;
cout << e <<"\t"<< d <<endl;
}

②a=10,b=3,c=4とすると、c>aかつc>bの戻り値、c>aまたはc>bの戻り値を出力するプログラムを作成せよ。

③②のプログラムを実行した際,戻り値として何が表示されるか。

【期限】:09.05.27 12:00

316:デフォルトの名無しさん
09/05/27 04:11:24
>>315
>>301

317:デフォルトの名無しさん
09/05/27 04:23:45
>>314
URLリンク(kansai2channeler.hp.infoseek.co.jp)

問題文以上に余計な関数とか書いたから邪魔なら省いてくれ

318:307の間違い
09/05/27 04:36:18
>>298 再帰とか2分木とか考えてる暇がないのには理由がある、役不足。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

319:デフォルトの名無しさん
09/05/27 05:32:23
[1] 授業単元:プログラミング入門C++
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS:XP
 [3.2] Turbo C++
 [3.3] 言語: C++
[4] 期限: 今日18時まで
かなり初歩だと思いますがよろしくお願いいたします。



320:デフォルトの名無しさん
09/05/27 07:17:32
>>319
#include <iostream>
using namespace std;
int passMinutes(const int start, const int end) { return end - start; }
int main()
{
const int MIN_INADAY = 24*60;
int h1, m1, h2, m2;
cout << "開始時間(0-23):"; cin >> h1;
cout << "開始分(0-59):"; cin >> m1;
cout << "終了時間(0-23):"; cin >> h2;
cout << "終了時間(0-59):"; cin >> m2;
// 入力は省略。h1:m2 > h2:m2 の場合、h2:m2は翌日の時間だと判断する
// endは27:00等の入力も受け付けるが、startは、00:00~23:59の範囲に丸められる
int start = h1*60+m1;
int end = h2*60+m2;
if(start < 0) {
start = 0;
h1 = 0;
m1 = 0;
} else if(start >= MIN_INADAY) {
start = MIN_INADAY - 1;
h1 = 23;
m1 = 59;
}
int tm = (start <= end) ? passMinutes(start, end) : passMinutes(start, MIN_INADAY) + passMinutes(0, end);
cout << h1 << "時" << m1 << "分から" << h2 << "時" << m2 << "分までの時間" << endl;
cout << (tm / 60) << "時間" << (tm % 60) << "分です" << endl;
return 0;
}

321:デフォルトの名無しさん
09/05/27 07:24:17
>>319 ごめ。endが負の数になる場合のチェックを入れ忘れてた。
#include <iostream>
using namespace std;
int passMinutes(const int start, const int end) { return end - start; }
int main()
{
const int MIN_INADAY = 24*60;
int h1, m1, h2, m2;
cout << "開始時間(0-23):"; cin >> h1;
cout << "開始分(0-59):"; cin >> m1;
cout << "終了時間(0-23):"; cin >> h2;
cout << "終了時間(0-59):"; cin >> m2;
// 入力は省略。h1:m2 > h2:m2 の場合、h2:m2は翌日の時間だと判断する
// startは、00:00~23:59の範囲に丸められるがendは最小値だけが00:00に丸められる。
int start = h1*60+m1;
int end = h2*60+m2;
if(start < 0) {
start = h1 = m1 = 0;
} else if(start >= MIN_INADAY) {
start = MIN_INADAY - 1;
h1 = 23;
m1 = 59;
}
if(end < 0) { end = h2 = m2 = 0; }
int tm = (start <= end) ? passMinutes(start, end) : passMinutes(start, MIN_INADAY) + passMinutes(0, end);
cout << h1 << "時" << m1 << "分から" << h2 << "時" << m2 << "分までの時間" << endl;
cout << (tm / 60) << "時間" << (tm % 60) << "分です" << endl;
return 0;
}

322:デフォルトの名無しさん
09/05/27 07:51:14
>>306
>>313 訂正
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
0~9、A~Z、a~z以外の ( # ! などの対策を追加

323:デフォルトの名無しさん
09/05/27 09:18:12
>>312
ワンペアの判定結果を使う。
ツーペア判定関数の引数に、最初に見つけたワンペアカードを追加する。
ツーペア判定関数は、ワンペア以降から二組目のセットを見つけ、あればそのカード番号を返す。
ワンペアがなければ、そもそも呼ぶ必要もなさそう。

324: ◆UlBEcxSSxE
09/05/27 09:58:29
[1] 授業単元:プログラミング入門A
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Ubuntu Linux 8.
 [3.2] コンパイラ名とバージョン: gcc 4.2
 [3.3] 言語: C
[4] 期限: 5月29日17:00
[5] その他の制限: アップしたファイルに詳しく書いてあります。

いろいろやってみたのですが難しいです。再帰版はいろいろ調べてみて
何とかなるような気もするのですが、非再帰版はどうやったらいいのか
見当がつかず、あと2日で両方は無理そうです。よろしくお願いします。


325:デフォルトの名無しさん
09/05/27 10:04:19
すみません。 急ぎで知りたいことがあります。
unsigned int 型の数字が、ランダムで生成されて
すでに生成済みか、未生成かを知りたいです。
高速で省メモリにするにはどうしたらいいですか?

326:デフォルトの名無しさん
09/05/27 10:14:29
r(0), r(1), r(2), ... みたいに自然数からの関数rを使って「乱数列」を与える
ことができて、さらにrの逆関数が作れれば簡単。でもそんな乱数列は
あるのかなあ。

そうでなければ、生成した乱数を適当な集合を表すデータ構造(ハッシュか
何か)に突っ込んでおくという愚直な方法しか思いつかないや。でもこれだと
省メモリにはならないかも。




327:325
09/05/27 10:15:59
数字はたくさんあり、メモリに保存するとしたら数ギガになる場合がしりたいです。
メモリはたかだか30Mの使用で処理したいです。

328:デフォルトの名無しさん
09/05/27 10:16:03
>>325
スレ違い

ダブらない乱数を発生させたい(それはもう乱数じゃない)なら
 つスレリンク(tech板)l50
そうでないなら
【初心者歓迎】C/C++室 Ver.65【環境依存OK】
 つスレリンク(tech板)l50

329:デフォルトの名無しさん
09/05/27 10:35:10
>>325
30M*8bit=240M=240,000,000 MAX

330:デフォルトの名無しさん
09/05/27 10:37:29
>>326
ランダムの数字って言うのは、すでにハッシュ値(CRC,SHA)のことなんです。
質問のため言い換えました。
重複ファイルや重複URLを検出したいのですがいい方法ないかなとおもいました。
ググたところ、パトリシア トライ、ダブル配列あたりが使えそうなのでこのあたりでいってみます。

331:デフォルトの名無しさん
09/05/27 11:41:58
bitデータの2分木で、子がある1、子がない0として記録しておけばかなり縮む。探索は木の左からと決める。
一次元の配列に格納したらデータの更新が難しいが。 追加する部分以降を移動しなければいけない。

332:デフォルトの名無しさん
09/05/27 14:07:44
お願いします。
授業単元ソフトウェア製作実習
osソラリス
コンパイラ gcc
言語 c
制限 台形の面積を求めるのに(上底+下底)*高さ/2を使ってください
。できればいかにも初心者が書いたようなプログラムにしてくれる
と助かります。
高さhが2で上底aと下底bが次のような4つの合計を求めるプログラムをfor文をつかって作成せよ。
台形(1)a=0b=2^2h=2面積=
台形(2)a=2^2b=4^2h=2面積=
台形(3)a=4^2b=6^2h=2面積=
台形(4)a=6^2b=8^2h=2面積=
四つの台形の面積の合計=
以上でお願いします。

333:デフォルトの名無しさん
09/05/27 15:01:30
>>43

334:デフォルトの名無しさん
09/05/27 15:22:54
>>332

URLリンク(kansai2channeler.hp.infoseek.co.jp)

こんなんで良い? ちなみに解の妥当性までは確認してない

335:デフォルトの名無しさん
09/05/27 15:46:51
>>320>>321
ありがとうございました!

336:初心者
09/05/27 15:48:34
C++で
#include <iostream.h>
main()
{

int a=10,b=3,c=2,d=0,e=0;
d = !a && b>c;
e = !a || b>c;
cout << d <<"\t"<< e <<endl;
}
を実行した結果はどうなりますか?

337:デフォルトの名無しさん
09/05/27 15:53:05
実行してみりゃいいだろw

338:デフォルトの名無しさん
09/05/27 15:58:59
>>336
どっちも結果はbool型だと思うぞ。

339:初心者
09/05/27 16:00:09
>>337
いま環境が悪くて実行できないので、すいません。
お願いします。

340:デフォルトの名無しさん
09/05/27 16:02:10
あと1時間後に答えるからそれまで待ってろ

341:デフォルトの名無しさん
09/05/27 16:04:43
>>336
iostream.hとか存在しないからコンパイルエラー

342:デフォルトの名無しさん
09/05/27 16:07:41
>>341
いたた

343:デフォルトの名無しさん
09/05/27 16:09:36
>>341
それはない
環境依存ではあるが古い記述方法であることであるのは事実
intに対して論理否定やboolをintに入れているのはいががなモノかと
main()のintは省略してはならない、ゆえにnon-void関数である
cout, endlは、このスコープで定義されていない

344:初心者
09/05/27 16:19:06
#include <iostream>
int main()
{

int a=10,b=3,c=2,d=0,e=0;
d = !a && b>c;
e = !a || b>c;
cout << d <<"\t"<< e <<endl;
}

となればいいんですか?

結果はどうなるんですか??

345:デフォルトの名無しさん
09/05/27 16:22:45
>>344
ネームスペースがおかしいから、コンパイルエラー。

346:初心者
09/05/27 16:26:15
#include <iostream>
int main()
{

int a=10,b=3,c=2,d=0,e=0;
d = !a && b>c;
e = !a || b>c;
cout << d << e <<endl;
}
ですか?

締切が18:00までなので結果だけでも教えてください。

347:デフォルトの名無しさん
09/05/27 16:26:40
336のままならコンパイルできる環境もあるが、344だとコンパイルできない。

348:デフォルトの名無しさん
09/05/27 16:38:01
>>334
レスありがとうございます。申し訳ありませんが
台形(1)a=0,b=2^2,h=2面積=
台形(2)a=2^2,b=4^2,h=2面積=
台形(3)a=4^2,b=6^2h=2面積=
台形(4)a=6^2,b=8^2h=2面積=
四つの台形の面積の合計=
という表示形式でお願いできないでしょうか?


349:デフォルトの名無しさん
09/05/27 16:45:41
>>46

350: ◆XjTlXLIlH2
09/05/27 16:46:03
>>318
すごく助かりました、ありがとうございました!!

351:334
09/05/27 16:54:43
>>348
ほらよ
URLリンク(kansai2channeler.hp.infoseek.co.jp)


352:デフォルトの名無しさん
09/05/27 17:26:58
>>322
ありがとうございます。

353:デフォルトの名無しさん
09/05/27 18:04:25
>>351たすかりました。ありがとうございます。

354:デフォルトの名無しさん
09/05/27 18:27:30
[1] C言語
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] Windows
 [3.2] すみません、わかりません
 [3.3] C
[4] 明日まで

入力された文字列をリストに格納し、
そのリスト自体を入れ替えて辞書順に並べる関数を作っています。
その際先頭・最後尾・次のリストのアドレスを変えなくては
ならないのですが、その処理をどうやったらいいか悩んでいます。
(strcmpの下の行からがよくわかりません)

void jisyo(struct B *fp, struct B *ep, int list_sum){
//前からリストの先頭アドレス、リストの最後尾アドレス、リストの数
  です。main関数でjisyo(a.front_p, a.back_p, a.list_sum)と
  呼び出しています。

int n, i, m;
struct B *p;

355:デフォルトの名無しさん
09/05/27 18:28:50
>>354の続きです

for(n = 1; n < list_sum; n++){
pb = fp;
pb_b = ep;

for(i = 0; i < list_sum-1; i++){
if(strcmp(pb->str_p, pb->next_p->str_p) >= 1){
p = pb;
pb = pb->next-_p;
pb->next_p = p;

356:デフォルトの名無しさん
09/05/27 18:29:31
>>355の続きです

if(fp != pb){
fp = fp->next_p->next_p;
fp->next_p->next_p = fp->next_p;
fp->next_p = fp->next_p->next_p->next_p;

}else if(ep != pb_b){
ep = ep->next_p;
ep->next_p = ep->next_p->next_p->next_p;
ep->next_p->next_p->next_p = ep->next_p;

}else{
pb = pb->next_p->next_p;
pb->next_p = pb;
pb->next_p->next_p = pb->next_p;
}
}
pb = pb->next_p;
}
}
for(m = 0; m < list_sum; m++){
printf("%s\n", pb->str_p);
pb = pb->next_p;
}
}

357:307の間違い
09/05/27 19:14:21
>>307(9255) Vector勉強になった。 それとついでに>>324(9269) >>(9271) N-Queenを解くプログラム
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <time.h>
using namespace std;
struct student {
  string name;
  int score;
};
bool operator<(const student& x, const student& y) {
  return x.score < y.score;
}
int main(void) {
  int i;
  char buf[50];
  student s, t;
  vector<student> vecStudent;
vector<student>::iterator theIterator;
  srand((unsigned)time(0));
  for(i=0; i<20; i++) {
    sprintf(buf, "名前.%02d.名前", i+1); s.name = buf; s.score = rand() % 101;
    vecStudent.push_back(s);
  }
for (theIterator = vecStudent.begin(); theIterator != vecStudent.end(); theIterator++)
    cout << theIterator->name << ":" << theIterator->score << endl;
  cout<<endl; sort(vecStudent.begin(), vecStudent.end());
  for(i=0; i<20; i++)
    t = vecStudent[i], cout<<t.name<<":"<<t.score<<endl;
  return 0;
}

358:デフォルトの名無しさん
09/05/27 20:04:04
>>354-356
どのような構造体かわからなかったので妄想してコーディングした。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
兄ぃそこはらめぇー、とか。あぁ、酔ってるわ。

359:デフォルトの名無しさん
09/05/27 20:32:00
>>358
ありがとうございます。
でもコメントが文字化けしていて
どんな処理をしているのかわかりませんでしたorz

構造体は
struct A a{
struct B *front_p;
struct B *back_p;
int list_sum;
}

struct B b{
char *str_p;
struct B *next_p
}
です。
書き忘れすみません。
よろしくお願いします。

360:デフォルトの名無しさん
09/05/27 20:43:14
>>358
構造体は予想どおりだったか。

コメントの文字化けは知らんがな。
UTF-8だから、nkfかiconvでSJISにでもしてみてね。
それか、サクラエディタかnotepad++で読み込むとか。

私の考えでは、別にリストのポインタを入れ替えていく必要はないと。
つまり、文字列(char *)だけ入れ替えてやるだけで済むと。
ソートしたい対象が文字列(char *)なのにリストのポインタを替えていくなんて無駄な処理でしょ。
だから、文字列(char *)だけソートしたものが>>358なのよ。

361:307の間違い
09/05/27 20:44:16
>でもコメントが文字化けしていて
>どんな処理をしているのかわかりませんでしたorz
(9273)右クリックでファイルをダウンロードすれば読めるはず。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

362:デフォルトの名無しさん
09/05/27 21:11:55
>>360
文字列のみの入れ替えは完成していたのですが、
講師からリスト自体を入れ替えろと言われました…。

あとコメント見れました。

363:デフォルトの名無しさん
09/05/27 22:35:50
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2009年06月03日24:00まで]
[5] その他の制限: 特になし。
よろしくお願いします

364:デフォルトの名無しさん
09/05/28 00:25:36
[1] 授業単元:
[2] 問題文(含コード&リンク):1!~53!を計算して、それらを右揃えで出力するプログラムを
                  作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C言語
[4] 期限: [2009年6月2日17:00まで]
[5] その他の制限:・プログラムを幾つかの関数に分割する
URLリンク(kansai2channeler.hp.infoseek.co.jp)
↑途中まで作ったのですが空白にしたいところが0で埋まってしまって困っています。
よろしくお願いします


365:デフォルトの名無しさん
09/05/28 00:25:55
>>363
具体的にどこがわからんの?

366:デフォルトの名無しさん
09/05/28 00:39:17
>>364

print関数だけ。


void print(int a[],int N,int n)
{
    int i;
    int head;
        
    printf("%2d! = ",n);

    head = 0;
    for(i=N-1; i>=0; i--) {
        if (head)
            printf("%07d",a[i]);
        else if (a[i]) {
            printf("%7d",a[i]);
            head = 1;
        }
        else
            printf("       ");
    }
    printf("\n");
}

367:デフォルトの名無しさん
09/05/28 00:45:29
[1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: visual c++
 [3.3] 言語: C++
[4] 期限: 朝までに。すごく困っています
[5] その他の制限: 特になし
よろしくお願いします


368:デフォルトの名無しさん
09/05/28 00:52:30
>>366
ありがとうございます。
0は消えたんですが右揃えになりません。


369:デフォルトの名無しさん
09/05/28 00:56:08
>>366
すいません。なりました。本当にありがとうございました

370:デフォルトの名無しさん
09/05/28 01:01:49
>>367
greater()をstructの後に移動
if(a.point>b.point)

371:デフォルトの名無しさん
09/05/28 01:05:09
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):線形検索を使用して配列内の最大の要素を検索せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:来週火曜日
[5] その他の制限:制限はありません
まずアルゴリズムが全く思いつきません。
よろしくお願いします。

372:デフォルトの名無しさん
09/05/28 01:06:17
>>370

ありがとうございました。
昨日から悩んでいたのがやっと解決しました

373:デフォルトの名無しさん
09/05/28 01:19:43
[1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限:できるだけ早く

お願いします

374:デフォルトの名無しさん
09/05/28 01:39:22
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
(1)1からn番目までの奇数2n-1までの和をn=1からn=50まで求め、n,和(sum),
n~2の値を出力せよ。また、プログラムの中でsum=0;およびn--;が
 必要な理由を答えよ。
(2)原点を中心とした半径2の円を描くプログラムを作成せよ。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:今週金曜日
[5] (2)についての条件
  ①半径2の値はconst型で初期化しておき、実数型とする。
  ②円の方程式は平面極座標(r,φ)を用いてforループでφを0から
  2πまで変化させてガウス座標(x,y)を出力する。
  ③forループの制御変数はint型とする。
長くなってしまいすいません。よろしくお願いいたします。


375:デフォルトの名無しさん
09/05/28 01:46:08
[1] 授業単元: 最適化
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限: 5月30日
ランダム関数を使うらしいのですが全く分かりません。
よろしくお願いします。

376:デフォルトの名無しさん
09/05/28 02:10:13
>>373
URLリンク(kansai2channeler.hp.infoseek.co.jp)

377:デフォルトの名無しさん
09/05/28 02:36:04
>>371
URLリンク(kansai2channeler.hp.infoseek.co.jp)

378:デフォルトの名無しさん
09/05/28 02:37:09
[1] 授業単元: 情報処理入門
[2] 問題文(含コード&リンク):
   キーボードから実数 x を入力し、ニュートン法と呼ばれる次のような反
復の式を用いて、近似的に x の平方根を求めるプログラムを作成せよ。
--
 xの平方根は、次の計算を| s(i+1)-s(i) | < ε, i=1,2,...となるまで繰
り返すことによって求めることができる。εは収束判定数である。

  s(i+1) = ( s(i) + x / s(i)) / 2
ただし、s(1) = 1 とする。
 なお、ε=0.00001として計算すること。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年5月29日00:00まで
[5] その他の制限: なし

よろしくお願いします。


379:デフォルトの名無しさん
09/05/28 02:50:29
>>371
URLリンク(kansai2channeler.hp.infoseek.co.jp)

380:デフォルトの名無しさん
09/05/28 06:16:47
>>364
void print(int a[],int N,int n) {
int i;
printf("%2d! = ",n);
for(i=N-1; i>=0&&a[i]==0; i--) printf("%7c",' ');
printf("%7d",a[i]);
for(i--; i>=0; i--) printf("%07d",a[i]);
printf("\n");
}

381:243
09/05/28 06:36:52
>>245 246
先週は助けていただき有難うございました。
関連する問題になるのですが、以前複素数のクラスを作成しました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

このクラスもPass_Betterを使って値渡しにするよう言われたのですが、
どなたか分かる方いたらお願いします。
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限: 5月30日

382:デフォルトの名無しさん
09/05/28 09:26:42
>>374
問題文(1)の中の「n~2の値」、何を出力すればいい?

383:sage
09/05/28 10:11:18
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):番兵を利用して配列内の最大の要素を検索するプログラムを作りなさい
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:6月2日
[5] その他の制限:制限はありません
お願いします


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