C/C++の宿題片付けます 126代目at TECH
C/C++の宿題片付けます 126代目 - 暇つぶし2ch1:デフォルトの名無しさん
09/05/18 23:06:51
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

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

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

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

前スレ
C/C++の宿題片付けます 125代目
スレリンク(tech板)

2:デフォルトの名無しさん
09/05/18 23:19:03
>>1
(・・)乙

3:デフォルトの名無しさん
09/05/18 23:37:58
                          刀、           , ヘ
                  /´ ̄`ヽ /: : : \_____/: : : : ヽ、
              ,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
               /: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
     ,. -─「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
    /: :.,.-ァ: : : |: : : : : : : : :    :\: : : : :: : : :ヽ  \   /: : : :/
    ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i  / /: : : : :/
     /: :     ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/  /: : : : :/         、
.    /: : /  . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : |  /: : : : :/            |\
   /: : ィ: : : : :.i: : |   \!___/ ヽ:: : : : : : :\|:.:.:.:/:!  ,': : : : /              |: : \
   / / !: : : : :.ト‐|-    ヽ    \: : : : : l::::__:' :/  i: : : : :{              |: : : :.ヽ
   l/   |: : :!: : .l: :|            \: : : l´r. Y   {: : : : :丶_______.ノ: : : : : :}
      l: : :l: : :ト、|         、___,ィ ヽ: :| ゝ ノ    '.: : : : : : : : : : : : : : : : : : : : : : /
      |: : :ト、: |: :ヽ ___,彡     ´ ̄´   ヽl-‐'     \: : : : : : : : : : : : : : : : : : イ
        !: :从ヽ!ヽ.ハ=≠' , ///// ///u /           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      V  ヽ|    }///  r‐'⌒ヽ  イ〉、
              ヽ、______ー‐‐' ィ´ /:/:7rt‐---、       こ、これは>>1乙じゃなくて
                  ィ幵ノ ./:/:./:.! !: : : : :!`ヽ     ポニーテールなんだから
              r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\   変な勘違いしないでよね!
               /: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\

4:デフォルトの名無しさん
09/05/20 12:45:44
[1] 授業単元: 中級C++
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: ウィンドウズ
 [3.2] コンパイラ名とバージョン: ビジュアルC++
 [3.3] 言語: C++
[4] 期限: 2009年5月21日朝まで
[5] その他の制限:
「もともと」ディレクトリは提供されたオリジナルのファイルです。
(1)は自力で出来ましたので一応添付しています。わからないのは(2)以降です。
具体的にどのようなアウトプットを求めているのか、問題の意味もあまりよくわかりません。
(3)、(4)になるとますます何を求めているのかわからないのですが、とりあえずいつも
問題が曖昧な先生なのでそれっぽいことをコードで示せば許してもらえます。
という訳で適当な感じでも構わないので(2だけでも結構ですので)よろしくおねがいします

5:デフォルトの名無しさん
09/05/20 16:00:30
[1] 授業単元: 上級者ためのC++(アルゴリズムとデータ構造)
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VisualC++2008 Express Edition
 [3.3] 言語: C++
[4] 期限: 2009年5月21日朝8:00まで
[5] その他の制限: 難易度高いと思いますがどなたかお願いします

6:6 ◆tr.t4dJfuU
09/05/20 18:06:23
【質問テンプレ】
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): URLリンク(d.pic.to)
・2つの数xとyはint型で定義し、キーボードから入力すること。
・掛けられる数(*の左側)はx,…,x+3まで変化させること。
・掛ける数(*の右側)はy,…,y+14まで変化させること。
・出力形式は写真実行例をそっくり真似ること。
・xとyの値の範囲は-9以上9以下とする。
・どんな値を入力しても桁がそろうようにすること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++2008
 [3.3] 言語: C++
[4] 期限: ([2009年5月20日23:59まで]
[5] その他の制限: scanf,printf,forを使ってやるようにとのことです

お願いします



7:デフォルトの名無しさん
09/05/20 18:14:48
>>5
行頭の判定のやり方が微妙だが他に思いつかなかったので
URLリンク(kansai2channeler.hp.infoseek.co.jp)

8:デフォルトの名無しさん
09/05/20 18:25:07
問題がzipだと見る気がしないでござる

9:デフォルトの名無しさん
09/05/20 18:31:48
>>6
#include <stdio.h>
int main(){
int x, y;
printf("x="); scanf("%d", &x);
printf("y="); scanf("%d", &y);
for(int i = y; i <= y+14; ++i){
for(int j = x; j <= x+3; ++j)
printf("[%2d]*[%2d]=[%4d],", j, i, i*j);
printf("\n");
} return 0;
}

10:デフォルトの名無しさん
09/05/20 19:44:36
よろしくお願いします。
授業単元ソフトウェア製作実習
osソラリス
コンパイラgcc
言語c
高さhが2で上底aと下底bが次のような値の台形4つの面積の合計を求めるプログラムをfor文を使って作成せよ。
表示形式
台形(1)a=0、b=4、h=2 面積=
台形(2)a=4,b=16h=2面積=
台形(3)a=16、b=36、h=2面積=
台形(4)a=36、b=64 h=2 面積=
4つの台形の面積の合計=


11:デフォルトの名無しさん
09/05/20 20:27:22
>>994
課題1
#include <stdio.h>
#include <unistd.h>

int rm(char *file)
{
int ret;
ret = unlink(file);
if (ret < 0){
perror(file);
}
return ret;
}

int main(int argc, char *argv[])
{
while (--argc > 0)
rm(*++argv);
return 0;
}


12:デフォルトの名無しさん
09/05/20 20:27:45
#include <stdio.h>

int main(void)
{
int a, b, i, area, total_area = 0;

for(i=1; i<=4; i++) {
a = (i-1) * (i-1) * 4;
b = i * i * 4;
area = a + b;
printf("台形(%d)a=%2d、b=%2d、h=2 面積=%d\n", i, a, b, area);
total_area += area;
}

printf("4つの台形の面積の合計=%d\n", total_area);

return 0;
}

13:デフォルトの名無しさん
09/05/20 20:43:48
>>010 0/4=0, 4/4=1, 16/4=4, 36/4=9, 64/4=16, .... なるほど感心するわ。
// gcc --input-charset=cp932 --exec-charset=cp932
#include <stdio.h>
int main() {
  int i;
  float daikei[][3] = {
    0,4,2,
    4,16,2,
    16,36,2,
    36,64,2,
    }, menseki, goukei = 0.0;

  for(i=0; i<sizeof(daikei)/sizeof(daikei[0]); i++) {
    menseki = (daikei[i][0] + daikei[i][1]) * daikei[i][2] / 2.0f;
    goukei += menseki;
    printf("a=%.0f b=%.0f h=%.0f 面積=%.0f\n",
      daikei[i][0], daikei[i][1], daikei[i][2], menseki);
  }
  printf("合計面積=%.0f", goukei);
  return 0;
}

14:5
09/05/21 01:56:09
>>7
すごいっす。有り難うございました。

15:デフォルトの名無しさん
09/05/21 01:59:13
>>12>>13
ありがとうございます。


16:デフォルトの名無しさん
09/05/21 08:31:11
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):CRUD操作及びファイル入出力の出来るデータベースを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年05月23日12:00まで

ソートする直前までは作ったのですが、正しく動きませんでした。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

17:デフォルトの名無しさん
09/05/21 08:55:16
そのソース、どこかのコピペやなw

18:4
09/05/21 09:56:52
期限過ぎてしまいましたが、どなたかお願いできないでしょうか?(o*。_。)oペコッ

19:デフォルトの名無しさん
09/05/21 10:53:31
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
整数を入力していき、「0」が入力されたらその1 つ前までに入力された数値の
平均値を求めるプログラムを、while 文を用いて作成せよ。
ここでは最低1 つの0 以外の数値が入力されるとしてよい。
平均値は小数点以下2 桁まで表示すること。

 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限:2009/5/21
[5] その他の制限:

20:デフォルトの名無しさん
09/05/21 11:10:10
1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
  正の整数nを入力し、1 から100 までの間にあるnの倍数をすべて表示す
 ると共に、それらnの倍数の和を表示するプログラムを作成せよ。

  例えば25を入力したら,その倍数である25, 50, 75, 100とそれらの和で
 ある250が表示されることになる。

  
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン gcc
 [3.3] 言語:C
[4] 期限: 2009年5月22日0:00まで
[5] その他の制限:以前にも書き込んだのですが、私の書き込みにミスがありましたのでもう一度書きます。よろしくお願いします。


21:デフォルトの名無しさん
09/05/21 11:23:13
>>19
#include <iostream>
#include <iomanip>
int main(void)
{
int i, n, sum;
n = sum = 0;
while(1)
{
std::cin >> i;
if (i == 0)
break;
sum += i;
n++;
}
std::cout << std::fixed << std::setprecision(2) <<
(double)sum / n << std::endl;
return 0;
}


22:デフォルトの名無しさん
09/05/21 11:26:13
>>20
#include <stdio.h>
int main(void)
{
int n, i, sum;
printf("正の整数nを入力せよ: ");
scanf("%d", &n);
sum = 0;
for(i = 1; i <= 100; i++)
{
if (i % n == 0)
{
printf("%d\n", i);
sum += i;
}
}
printf("%d\n", sum);
return 0;
}


23:デフォルトの名無しさん
09/05/21 12:02:10
[1] 授業単元: 社会情報入門
[2] 問題文(含コード&リンク):
次の無限等比級数の和を、各項を順に加算していくことにより求めるプログラムを書け。
1+(1/3)+(1/9)+(1/27)+.....
ただし、0.00001以下となる項を加えた時点で加算を終了することとする。 
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2009年5月22日12:50まで
[5] その他の制限:なし
 
よろしくお願いします。

24:デフォルトの名無しさん
09/05/21 12:06:59
>>16
相当直さないと動かないぞ。
createData()見ただけでも、メモリ確保とかポインタの使い方が変。

25:19
09/05/21 12:08:08
>>21
#include <iostream>
#include <iomanip>

std::cout << std::fixed << std::setprecision(2) <<
など習ってないことが多いのでもう少し簡単にできないでしょうか?

#include <stdio.h>で書いてもらえるとありがたいです


追記で
実行例

整数を入力: 9
整数を入力: 3
整数を入力: 8
整数を入力: 10
整数を入力: 7
整数を入力: 3
整数を入力: 0
平均値は 6.67

26:デフォルトの名無しさん
09/05/21 12:34:54
>>25
後出し氏ね

27:デフォルトの名無しさん
09/05/21 12:54:48
>>25
それはC言語というものなのだよ

28:デフォルトの名無しさん
09/05/21 13:06:59
>>25
#include <stdio.h>
int main()
{
int d, count = 0, sum = 0;
while (1) {
printf("整数を入力:"); scanf("%d",&d);
if (d == 0) break;
sum += d; count++;
}
printf("平均値は%.2lf\n",(double)sum/count);
return 0;
}

>[3.3] 言語: C++
って書いたら、当然C++で回答が書かれます
回答者に無駄な作業をさせないように依頼して下さい。



29:デフォルトの名無しさん
09/05/21 13:08:35
>>24
メモリ確保の仕方だけで構いませんので、教えていただけないでしょうか?

30:デフォルトの名無しさん
09/05/21 13:12:50
[1]C++言語初心者コース
[2]問題文:
C++コードではiostream、iomanipを必ず使わなければならないことを
示す例を作れ。無い場合はその旨50字以内に日本語仮名交じり文で
記述せよ
[3]OS:Windows/コンパイラ:GCC on CygWin/言語C++
[4]本日中

困ってます。よろしくです。

31:デフォルトの名無しさん
09/05/21 13:25:23
>>29
確保の仕方だけ教えたところで
ポインタ理解してなきゃ結局全部聞く羽目になるぞ
つか今ソース見たが、確保というより格納の仕方と言ったほうが正しいのかもしれん

>>30
アバウトすぎ
前後に問題あればそれも出した方が
問題の意図がわかるかもしれんが

32:デフォルトの名無しさん
09/05/21 13:58:20
>>29
 Create *Data;
 Data = (Create *)malloc(sizeof(Create));
 for(i=0;;i++){
  Data[i].id = ID;
  ID++;
  glob_DB[i] = Data[i];
  free(Data);
 }

これが変だという事が理解できないと、どこから説明したらいいのかなと思う。
動的に確保するのではなく、固定で大きな配列を用意し、
動くプログラムを書く位の力はあるかい?


33:デフォルトの名無しさん
09/05/21 14:12:36
>>32
mallocをループの中に入れた後、stdlib.hをインクルードしたところ警告は消えたのですが、
やはりそんなレベルの問題ではないのでしょうか?

34:デフォルトの名無しさん
09/05/21 14:19:31
>>28
ありがとうございます。
以後気をつけます

35:デフォルトの名無しさん
09/05/21 14:29:48
>>33
実行してみ?
PCが壊れる、ってことはないとは思うが自己責任でw

36:デフォルトの名無しさん
09/05/21 15:38:36
押し売りせずに信頼を得て、油外収益は地域トップクラスです。
油外おいしいです^^

37:デフォルトの名無しさん
09/05/21 16:08:41
>>33
>mallocをループの中に入れた後、stdlib.hをインクルードしたところ警告は消えたのですが、
警告が出ているうちは、間違いを指摘してくれているので良いが、
警告が消えたからって、正しく動く訳じゃない。正しいロジックで書いてないと動きません。
createData()を例にとれば、
Data[i].id = ID;←これはまずい。確保した領域は一つしかない。ワープします。
glob_DB[i] = Data[i];←これもまずい(左右とも)
free(Data); ←せっかく格納したデータは何処へ行くだろうか?

「添え字を使ってアクセス」が何を意味し、何処を指すのかを理解する必要があるよ。

入力したデータは何処に格納するのか。関数内の一時的格納か、それとも処理終了まで保持するのか。
格納領域はどのタイミングで確保するのか。確保した格納データはどうやって管理するのか。
確保した領域は、どのタイミングで解放するのか。この辺をちゃんと考えてみる必要がある。

動的に領域確保するのが難しいなら、glob_DBで1000件程度配列で確保し、
正常に動くプログラムをまず作ってみると良い。

38:デフォルトの名無しさん
09/05/21 16:13:07
CRUD操作の意味がわからん^^

39:デフォルトの名無しさん
09/05/21 16:18:31
【質問テンプレ】
[1] 授業単元:Cの基礎
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:XP 
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 一週間
[5] その他の制限: while文かdo-while文を使い、なるべく簡単にお願いします。

40:デフォルトの名無しさん
09/05/21 16:35:59
>>39
#include<stdio.h>
#include<math.h>

int main(void)
{
double si_1, si, x;

printf("実数 x : ");
scanf("%lf", &x);

si_1=1;
do
{
si=si_1;
si_1=(si+x/si)/2;
}
while(fabs(si_1-si)>=0.00001);
printf("sqrt(%f)=%f\n", x, si);

return 0;
}

41:デフォルトの名無しさん
09/05/21 16:38:20
>23
#include <stdio.h>
int main()
{
double sum = 0.0;
double e = 0.00001;
int x = 1;
double a;
while (1) {
a = 1.0 / x; sum += a;
if (a < e) break;
x *= 3;
}
printf("%.15lf\n", sum);
return 0;
}


42:デフォルトの名無しさん
09/05/21 17:35:01
>>38
Create Read Update Delete

43:デフォルトの名無しさん
09/05/21 19:41:13
よろしくお願いします。
授業単元アルゴリズム実習
osソラリス
言語 c
コンパイラ gcc
高さhが2で上底aと下底bが次のような値の台形4つの合計を求めるプログラムをfor文を使って作成せよ。
表示形式
台形(1)a=0、b=2^2、h=2、面積=
台形(2)a=2^2、b=4^2、h=2 面積=
台形(3)a=4^2、b=6^2、h=2 ,面積=
台形(4)a=6^2、b=8^2 h=2 面積=
4つの台形の面積の合計=


44:デフォルトの名無しさん
09/05/21 19:47:27
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:cc
 [3.3] 言語:C
[4] 期限:[2009年5月22日19:00まで]
[5] その他の制限:問題文と共に記述してあります.

45:デフォルトの名無しさん
09/05/21 19:53:23
>>43
>>10 >>12 >>13

46:デフォルトの名無しさん
09/05/21 20:06:44
>>43
#include <stdio.h>

int main(void)
{
int i, temp, s = 0;

for(i=0; i<4; i++) {
temp = 4 * i * i + 4 * (i+1) * (i+1);
printf("台形(%d)a=%d%s,b=%d^2,h=2,面積=%d\n", i+1, i*2, i?"^2":"", 2*(i+1), temp);
s += temp;
}

printf("4つの台形の面積の合計=%d", s);

return 0;
}

47:デフォルトの名無しさん
09/05/21 20:29:37
>>45
わかってます。今度のは二乗の計算をしなくてはいけないので。。。


48:デフォルトの名無しさん
09/05/21 20:44:01
表示が違うだけで計算内容は同じだけどな。

49:デフォルトの名無しさん
09/05/21 20:49:13
マルチになってしまいますが、後になってこちらのスレの存在に気付いたので
再び質問させていただきます。

以下のコードの流れについて知りたのですがよく分かりません。
行ごとに簡単に解説してくれると助かります。よろしくお願いします。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
Animations:nil context:nil];
[UIView setAnimationDuration:0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:selfcache:YES];
if ( enabled )
[[UIApplication sharedApplication] sendAction:@selector(buttonPushed:)
to:target from:self forEvent:event];
[UIView commitAnimations];

50:デフォルトの名無しさん
09/05/21 20:53:59
>>46さんありがとうございます。


51:デフォルトの名無しさん
09/05/21 20:58:39
>>49
Objective-Cはスレ違い

52:デフォルトの名無しさん
09/05/21 21:09:19
>>51
確かにそうなのですが、マイナーなので他に聞く場所がありません。
ここなら分かる方もいるのではないかと思い質問させていただきました。

53:デフォルトの名無しさん
09/05/21 21:17:21
>>52
お引き取り下さい

54:デフォルトの名無しさん
09/05/21 21:24:27
>>52
Objective-C [ObjC part:4];
スレリンク(tech板)l50

スレ立てるまでもない質問はここで 97刷
スレリンク(tech板)l50


55:デフォルトの名無しさん
09/05/21 21:27:07
せめて適当なうpローダーにきちんとインデントを付けたコードをうp
してくれればObjective-C/C++でもある程度は答えてくれる奴が
居そうな感じだが読みにくいコードベタ張りは論外。基本的には
専用スレがありそこが過疎ってなければそちらのほうで聞くのが無難

56:デフォルトの名無しさん
09/05/21 21:58:11
>>23をお願いします。

57:デフォルトの名無しさん
09/05/21 21:59:17
BCDライブラリ書かないと誤差がすごくて・・・

58:デフォルトの名無しさん
09/05/21 22:04:49
>>56
>>41

59:デフォルトの名無しさん
09/05/21 22:13:31
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
(1)キーボードから2整数を読み込んで読み込んだ順に標準出力にそれらの
値の10進数表現をスペース文字で区切って、1行に書き出し改行する。
読み込んだ1番目の整数の値が1000でなければ、次の2整数を読み込み
同様に書き出す。1番目の値が1000のときプログラムの実行を終了する。
このような仕様を満たすプログラムを作成せよ。(do-whileループで作成)

(2)キーボードから3整数を読み込み、小さい順に出力するようなプログラム
を作成せよ。(目的が達成されればどのようなプログラムでも構わない。)
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:5月22日 13:00まで
[5] (2)はなるべく簡単なものでお願いいたします。できたら数パターン
教えてくだされば幸いです。

60:デフォルトの名無しさん
09/05/21 22:23:49
>>22 (・∀・)ニヤァ~

61:デフォルトの名無しさん
09/05/21 22:39:40
>>59
(2)
#include <stdio.h>

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

scanf("%d%d%d", &a, &b, &c);

if(a < b) {
if(c < a) printf("%d %d %d", c, a, b);
else {
if(b < c) printf("%d %d %d", a, b, c);
else printf("%d %d %d", a, c, b);
}}
else {
if(c < b) printf("%d %d %d", c, b, a);
else {
if(c < a) printf("%d %d %d", b, c, a);
else printf("%d %d %d", b, a, c);
}}

return 0;
}

62:この板でいいの?
09/05/21 22:39:58
プログラミングは全くの初心者(CもJavaもなにも分からない)です。
質問があります。

ある資格試験の自動学習ソフト(将来的には自動学習ホームページ)を
作りたいと思っています。
そのための資料は既にあります。
A4で300頁程度で表、図もあります。
これを、
(1)順々に質問文をユーザに見せてから、回答ボタンをクリックすると答画面を示すモード
(2)樹系図的に内容を表示するモード
(3)画面の印刷を行うモード
を有して学習するソフトを作りたいのですが、どうしたらよいでしょうか?
とりあえず、試行的にテキストを貼り付けるだけで、質問画面と回答画面を表示できるソフトを
簡単に作れるようなものはないでしょうか?
ソフトを作れる人に作成を依頼するとどのくらい費用はかかるでしょうか?
よろしくお願いします。


63: ◆1xScF1fQr2
09/05/21 22:51:13
[1] 授業単元:C言語応用
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:2009年05月25日まで。
[5] その他の制限:階乗(n!)の計算とべき乗(xn)の計算には、再帰処理を使用する。

よろしくお願いします。

64:デフォルトの名無しさん
09/05/21 23:08:33
>>62
HTML+JavaScriptが一番簡単そう。
そしてもしそうするならスレ違い。

65:123to
09/05/21 23:10:53
はじめたばかりです
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
課題
 0~100の範囲で画面から入力された複数の数値の中で、最大値と最小値を
 表示するプログラムを作成する。
○ソフトウェア構成要求
 最大値と最小値はmain関数以外の一つの関数の中で求める(サブルーチン化する)。
○動作要求仕様
 -1が入力された場合は入力の終わりとする。
 入力された数値を記憶する配列の要素数は10とし、
 10個まで入力された場合は-1を入力されなくても最大値と最小値を出力する。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語: C
[4] 期限: 2009年5月25日12:00まで
[5] その他の制限:できるだけ簡単なもの

66:デフォルトの名無しさん
09/05/21 23:12:35
>>63
もしかして、その課題の後に自由課題ある?


67:デフォルトの名無しさん
09/05/21 23:17:52
>>62
有料なら考えてもいいが?
問題はどうやって連絡を取るかなんだが。

68:デフォルトの名無しさん
09/05/21 23:20:25
>>63
>>63
#include <stdio.h>
#include <math.h>
#define PI 3.14159

double power(double x, long int n);
double sine(double x);
long int kaijou(long int n);

int main(void){
double sinx,sinf,x=0.0,dif;
printf("+-------------------------------------+\n");
printf("| x | sine(x) | sin(x) | dif |\n");
printf("+-------------------------------------+\n");
do{
sinx=sine(x);
sinf=sin(x);
dif=sinx-sinf;
printf("| %.4lf | % .4lf | % .4lf | %.4lf |\n",x,sinx,sin(x),dif);
x+=PI/8;
}while(x<2*PI);
printf("+-------------------------------------+\n");
}

69:デフォルトの名無しさん
09/05/21 23:21:12

long int kaijyou(long int n){ //再帰処理
if(n==0){
return 1.0;
}
else{
return n*kaijyou(n-1); //再帰処理実行
}
}

double sine(double x){
long int i, n=5;
double ans=0.0;
for(i=0;i<n;++i){
ans+=power(-1,i)*power(x,2*i+1)/kaijyou(2*i+1);
}
return ans;
}


70:デフォルトの名無しさん
09/05/21 23:22:15

dif=sinx-sinf;
printf("| %.4lf | % .4lf | % .4lf | %.4lf |\n",x,sinx,sin(x),dif);
x+=PI/8;
}while(x<2*PI);
printf("+-------------------------------------+\n");
}

long int kaijyou(long int n){ //再帰処理
if(n==0){
return 1.0;
}
else{
return n*kaijyou(n-1); //再帰処理実行
}
}


71:デフォルトの名無しさん
09/05/21 23:23:11

double sine(double x){
long int i, n=5;
double ans=0.0;
for(i=0;i<n;++i){
ans+=power(-1,i)*power(x,2*i+1)/kaijyou(2*i+1);
}
return ans;
}

double power(double x, long int n){ //再帰処理
if(n==0){
return 1.0;
}
else{
return power(x,n-1)*x; //再帰処理実行
}
}

72:デフォルトの名無しさん
09/05/21 23:24:20
度数表示がないからやり直し

73:デフォルトの名無しさん
09/05/21 23:27:13
ごめん、微妙に作ったのと違った。

74:デフォルトの名無しさん
09/05/21 23:28:59
>>63
#include <stdio.h>
#include <math.h>

int fac(int i) { return i == 1 ? 1 : i * fac(i-1); }
double mypow(double x, int n) { return n == 0 ? 1 : x * mypow(x, n-1); }
double sine(double x)
{
int i, flg = 1;
double ret = 0;
for(i=0; i<5; i++, flg *= -1) ret += mypow(x, i*2+1) / fac(i*2+1) * flg;
return ret;
}

int main(void)
{
int i;

puts("+----------+----------+----------+----------+----------+");
puts("|x(degree) |x(radian) | sine(x) | sin(x) | dif |");
puts("+----------+----------+----------+----------+----------+");
for(i=0; i<=360; i+=15) {
double r = i * M_PI / 180;
double s1 = sine(r), s2 = sin(r);
printf("|%-10d|%8.4f |%8.4f |%8.4f |%8.4f |\n", i, r, s1, s2, fabs(s1-s2));
}
puts("+----------+----------+----------+----------+----------+");
return 0;
}

75:デフォルトの名無しさん
09/05/21 23:31:41
>>43
// gcc --input-charset=cp932 --exec-charset=cp932
#include <stdio.h>
int main() {
  int i;
  float daikei[][3] = {
    0,2,2,
    2,4,2,
    4,6,2,
    6,8,2,
    }, menseki, goukei = 0.0;

  for(i=0; i<sizeof(daikei)/sizeof(daikei[0]); i++) {
    menseki = (daikei[i][0]*daikei[i][0] + daikei[i][1]*daikei[i][1]) * daikei[i][2] / 2.0f;
    goukei += menseki;
    printf("(%d)a=%.0f^2 b=%.0f^2 h=%.0f 面積=%.0f\n",
      i, daikei[i][0], daikei[i][1], daikei[i][2], menseki);
  }
  printf("合計面積=%.0f", goukei);
  return 0;
}

76:デフォルトの名無しさん
09/05/21 23:40:32
>>59です。
>>61さん、ありがとうございます。

77:デフォルトの名無しさん
09/05/21 23:41:30
>>63
URLリンク(kansai2channeler.hp.infoseek.co.jp)

ついでに自由課題も。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

中部大学工学部情報工学科の岡崎明彦教授の講義ね。ぐぐったらすぐ出てきた。

78:デフォルトの名無しさん
09/05/21 23:46:59
>>63
>>68->>71は19年度の同じような課題で教授が殆ど作ったやつ。

79:デフォルトの名無しさん
09/05/21 23:50:24
>>77
ほんとだC言語応用 マクローリン展開でみつかった。
意外と簡単に見付かるんだね。

80:79
09/05/21 23:58:13
でも年代が違う問題が出てくるんやね。

81:デフォルトの名無しさん
09/05/22 00:00:12
スレチだが
マクローリン展開って2radぐらいまでならそんなに誤差無いんだな
意外だった

82:デフォルトの名無しさん
09/05/22 00:09:13
膜ろりン展開

83:デフォルトの名無しさん
09/05/22 00:10:09
>>79
「sinxの近似値を5項程度によるマクローリン展開で求める関数」でぐぐったら
2つめに今年のが出てきた

84:デフォルトの名無しさん
09/05/22 00:13:21
>>81
浮動小数点は積み残し誤差があるから計算して出たそれぞれの
項をソートして小さい方から順に足した方が誤差が少ないぞ

やってみ

85:デフォルトの名無しさん
09/05/22 00:16:01
そんな手間かけるならsin(x)使うわ
欲しいのは高速動作だ

86:デフォルトの名無しさん
09/05/22 00:19:28
いやそりゃそうだが
x86FPUにもFSINあるしな

ここは宿題スレだからマクローリン展開をコンピューターに
やらせてみましょうって事なんじゃない?

87:デフォルトの名無しさん
09/05/22 00:26:38
>>63>>74>>77どっちを使うんだろうね。
自分としては>>77の方が分かりやすいけど。

88:デフォルトの名無しさん
09/05/22 02:37:41
>>62
お手軽にするならゲームツクール系でいいと思う

89:デフォルトの名無しさん
09/05/22 02:53:17
>>87
メイン関数のループが迂遠な感じだな、77のは。

90:デフォルトの名無しさん
09/05/22 03:02:10
>>65 >できるだけ簡単なもの <それなりに>
#include <stdio.h>
void max_min(int *data, int num, int *max, int *min){
  int lmax = 0, lmin = 100;
  for(num--; num >= 0; num--) {
    if(data[num] > lmax) lmax = data[num];
    if(data[num] < lmin) lmin = data[num];
  }
  *max = lmax;
  *min = lmin;
}
int main() {
  int i, max, min, data[10];
  for(i=0; i<10; i++) {
    printf("%d:",i+1);
    if(scanf("%d", &data[i]) != 1) {
      scanf("%*s"); i--; continue;
    }
    if(data[i] == -1) break;
    if(data[i] < 0 || data[i] > 100) i--;
  }
  max_min(data, i, &max, &min);
  printf("max=%d min=%d\n", max, min);
  return 0;
}

91:kenco
09/05/22 03:06:33
[1] 授業単元:数値計算法
[2] 問題文(含コード&リンク):非線型方程式 f(x)=x^n-a=0 を考える。nは学生番号の下一桁の数字に2を加えたもの。aは誕生日の西暦の下2桁とする。
              f(x)=0の実数解の近似値xを以下の条件を満足させる精度でニュートン法を用いて求めよ。
              |f(x)-0|<1.0*10^(-8)     

[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: C-Compiler
 [3.3] 言語: どちらでも可
[4] 期限: 23日まで
[5] その他の制限: なるべく簡単なもので作ってください。

92:デフォルトの名無しさん
09/05/22 03:30:54
>>44
URLリンク(kansai2channeler.hp.infoseek.co.jp)


93:デフォルトの名無しさん
09/05/22 04:21:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 行列A={{0,1,2},{3,4,5},{6,7,8}}
 行列B={{100,200,300},{400,500,600},{700,800,900}}
  のとき、A+Bを表示するプログラムを作れ
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C++
[4] 期限: 5月25日
[5] その他の制限: 初心者に分かりやすいようにお願いします

94:デフォルトの名無しさん
09/05/22 04:59:18
>>91
#define N (8.0 + 2.0)
#define A 82.0
#define EPS 1e-08
#define LIMIT 50 /* 計算打ち切り回数 */
#include <stdio.h>
#include <math.h>
double f(double x)
{
return pow(x, N) - A;
}
double g(double x)
{
return N * pow(x, N - 1.0);
}
int main(void)
{
double x = 1.0, dx;
int i;
for (i = 0; i < LIMIT; i++) {
dx = x;
x -= f(x) / g(x);
if (fabs(x - dx) < fabs(dx) * EPS) {
printf("解 = %.8f\n", x);
break;
}
}
if (i == LIMIT)
printf("収束しませんでした\n");
return 0;
}

95:デフォルトの名無しさん
09/05/22 05:22:17
>>93
URLリンク(kansai2channeler.hp.infoseek.co.jp)

96:44
09/05/22 10:16:33
>>92
ありがとうございます。

97:デフォルトの名無しさん
09/05/22 14:46:03
[1] 授業単元:C言語プログラミング
[2] 問題文:10以上の種類の品物(果物など)を、その数が多い順にソートするプログラムを
      「バブルソート」を用いて作成せよ。
      ソート結果の表示にはどの品物が何個かも表示させること。
      品物の種類・個数は任意とするが、なるべくばらけさせること。
      品物が同じ個数だった場合の順番は特に指定しない。
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限:2009/5/25まで
[5] その他の制限:特に無し

98:デフォルトの名無しさん
09/05/22 16:04:42
>>97
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define numberof(s) (sizeof(s) / sizeof(s[0]))
typedef struct { char *name; int number;} ITEM;
ITEM item[] = {
{"めんたい味", 0},{"コーンポタージュ味", 0},{"なっとう味", 0},{"チーズ味", 0},{"テリヤキバーガー味", 0},
{"サラミ味", 0},{"やさいサラダ味", 0},{"チキンカレー味", 0},{"とんかつソース味", 0},{"エビマヨネーズ味", 0},
{"たこ焼味", 0},{"チョコレート味", 0},{"キャラメル味", 0},{"ココア味", 0},{"ぶたキムチ味", 0},{"牛タン塩味", 0}
};
int main()
{
int i, j;
srand(time(NULL));
for (i = 0; i < numberof(item); i++) {
item[i].number = (int)((rand() / ((double)RAND_MAX+1.0f)) * 99) + 1; printf("%s, %d\n",item[i].name,item[i].number);}
printf("---------------------------------------------------\n");
for (i = 0; i < numberof(item) - 1; i++) {
for (j = numberof(item) - 1; j > i; j--) {
if (item[j].number > item[j - 1].number) {ITEM tmp = item[j]; item[j] = item[j - 1]; item[j - 1] = tmp;}
}
}
for (i = 0; i < numberof(item); i++) printf("%s, %d\n",item[i].name,item[i].number);
return 0;
}


99:デフォルトの名無しさん
09/05/22 17:57:00
>>98
うまい棒?

100:デフォルトの名無しさん
09/05/22 19:30:11
10種類以上の果物名、思い付かん

101:デフォルトの名無しさん
09/05/22 19:35:54
>>100
リンゴの品種名だけでおk

102:デフォルトの名無しさん
09/05/22 20:12:26
アルプス乙女,ぐんま名月,ゴールデンデリシャス,シナノスイート,ジョナゴールド,
ジョナゴールド,つがる,デリシャス,ふじ,旭,王林,紅玉,国光,秋映,祝,
世界一,千秋,北斗,陽光,陸奥
20種類、ごく一部を除いて、どんなリンゴかはわからないw

103:デフォルトの名無しさん
09/05/22 20:32:15
ジョナゴールドが2個あるんすけど。

104:デフォルトの名無しさん
09/05/22 21:00:02
>ジョナゴールドが2個あるんすけど。

見逃した。済まない。
ー1 +7
さんさ,高嶺,スターキングデリシャス,ハックナイン,新世界,藤牧,シナノレッド


105:デフォルトの名無しさん
09/05/22 21:27:11
クイックソートなんですが

106:デフォルトの名無しさん
09/05/22 21:30:45
>>105
は?

107:デフォルトの名無しさん
09/05/22 21:36:31
>>105
依頼はバブルソートとあるが、
>>98はクイックソートなのか?

108:デフォルトの名無しさん
09/05/22 21:37:18
ご参考に

URLリンク(www.bohyoh.com)

109:デフォルトの名無しさん
09/05/22 22:25:48
>>98はバブルソートじゃないか
何を寝ぼけた事を言ってんの?

110:デフォルトの名無しさん
09/05/22 23:06:33
[1] 授業単元:
ヒューマンインターフェースとプログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Visual C++ 2008 Express Edition
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5/25
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
なし

よろしくおねがいします。具体的にあげられてる修正ポイントだけでもかまいません。

111:デフォルトの名無しさん
09/05/22 23:15:47
猫でもわかるキー入力www

112:デフォルトの名無しさん
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
丁寧に質問すれば、誰かが答えてくれる。


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