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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:08:18 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

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

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

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

前スレ
C/C++の宿題片付けます 130代目
pc12.2ch.net/test/read.cgi/tech/1250204272/

2 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 02:17:13 ]
気に入らない質問やその他や発言はスルーの方向で。

3 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 02:33:05 ]
相変わらずその日本語おかしいままか

4 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 02:48:40 ]
52代目から続く伝統の誤字なんだから、軽々しく変えていいわけねーだろw

5 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 03:37:23 ]
質問や発言は で良いかな?その他発言か?

6 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 04:11:33 ]
>>3 が何

7 名前:前スレ未解決問題 mailto:sage [2009/10/17(土) 05:32:22 ]
>>993  文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか判別
>>986(9982)  bitmap(BMP)ファイルの上に円を書く
>>923-925(CODE)  ナップサック問題のプログラムを利用し、グラフ彩色問題に当てはめる
>>883  Turbo C CUI画面制御 5問。
>>882  イテレータを使って微分方程式を解きたい

8 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 09:03:15 ]
>>993

#include <iostream>
using namespace std;
void main()
{
char str;
cin>>str;
if('a'<=str&&'z'>=str){
cout<<"小文字"<<endl;
}
else if('A'<=str&&'Z'>=str){
cout<<"大文字"<<endl;
}
else if('0'<=str&&'9'>=str){
cout<<"数字"<<endl;
}
else{
cout<<"それ以外"<<endl;
}
}

9 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 09:05:20 ]
charの変数名にstrってw

10 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 09:14:33 ]
cctypeは使わないのか。



11 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:39:25 ]
>>986
FILE *fp = fopen("bitmapfile.bmp", "w+");
fprintf(fp, "円");
fclose(fp);

12 名前: ◆/91kCCQXBo mailto:sage [2009/10/17(土) 13:30:07 ]
>>883 問1 C:\>gcc -mno-cygwin
#include <windows.h>
#include <stdio.h>
#include <conio.h>

int main(void) {
  HANDLE hStdout;
  WORD wAttributes;
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  COORD coord={0,0}, coord1;
  DWORD num, i;

  hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleScreenBufferInfo(hStdout, &csbi);
  FillConsoleOutputAttribute(hStdout, 0, 25*80, coord, &num);
  wAttributes = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY; SetConsoleTextAttribute(hStdout, wAttributes);
  for(i=0;i<10;i++) {
    coord1.X = 29; coord1.Y = i+7;
    SetConsoleCursorPosition(hStdout, coord1);
    printf("                      ", wAttributes);
  }// printf("1234567890123456789012345678901234567890", wAttributes);
  getch();
  wAttributes = BACKGROUND_RED | BACKGROUND_INTENSITY; SetConsoleTextAttribute(hStdout, wAttributes);
  for(i=0;i<14;i++) {
    coord1.X = 25; coord1.Y = i+5;
    SetConsoleCursorPosition(hStdout, coord1);
    printf("                              ", wAttributes);
  }// printf("1234567890123456789012345678901234567890", wAttributes);
  getch();
  SetConsoleTextAttribute(hStdout, csbi.wAttributes);
  return 0;
}

13 名前:デフォルトの名無しさん [2009/10/17(土) 14:17:49 ]
>>11


14 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:57:39 ]
pc12.2ch.net/test/read.cgi/tech/1250204272/986
私の環境は Windows XP, 処理系は gcc 4,.3.2(cygwin) です。
codepad.org/oTgc5AyC
日の丸になりました。

15 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 19:24:24 ]
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9983.zip
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
 [3.3] 言語: C++
[4] 期限: ([2009年10月19日23:59まで]
[5] その他の制限:特にありません

課題が2つありましたので、ZIPです。
よろしくお願いします。

16 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 19:44:35 ]
>>15
ないのですが。

17 名前:15 mailto:sage [2009/10/17(土) 19:59:01 ]
>>16
申し訳ございませんです。
リンク間違えました。
一度違うものを上げてしまったもので・・・
正しくは、こちらです。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9984.zip
本当すいません。
よろしくお願いします。

18 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 20:32:26 ]
>>15
過去問の焼き直しで細かな仕様は満たしていないかもしれません。
codepad.org/EhlsRrWo

19 名前:デフォルトの名無しさん [2009/10/17(土) 20:40:26 ]
前スレの993です。

ご回答してくださった方ありがとうございました。
参考にさせていただきます。

20 名前:15 mailto:sage [2009/10/17(土) 20:47:01 ]
>>18
ありがとうございます。
いいえ、十分です。
本当にありがとうございました。
課題2は、課題1に()を使えるようにしただけですので
その部分を削って提出します。
助かりました。



21 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 21:13:32 ]
>>14
986です。ありがとうございました!

22 名前:デフォルトの名無しさん [2009/10/18(日) 00:41:06 ]
1 c=(x1+x2)/2となる
2 f(x1)*f(c)<0→f(x1)とf(c)は同符号.x1とcの間に解は無し。x1=cとする。
f(x1)*f(c)<0だと、f(x1)とf(c)は異符号
x1とcの間に解が存在
x2=cとなる

x1-x2が十分小さくなれば(10^-5)終了する

例 cos(x/2)の解

#include <iostream>
#include <cmath>
using namespace std;
int main() {

までは行きますが…

出力はcout
入力はcinでお願いします

23 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 01:05:03 ]
そこは行くとかそういう問題じゃないw

24 名前:デフォルトの名無しさん [2009/10/18(日) 01:19:02 ]
>>23
すみません。これ分かる人いますか
C++です

25 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 01:19:52 ]
要するに二分法でしょ
C++は関係無い

26 名前:デフォルトの名無しさん [2009/10/18(日) 01:20:24 ]
>>24
そうです。すみません

27 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 01:22:38 ]
全くできてないものを貼って、ここまでは行きますとか言われてもな。
そんなんだったら、何も書かない方がマシ。

28 名前:デフォルトの名無しさん [2009/10/18(日) 01:22:40 ]
>>25でした

29 名前:デフォルトの名無しさん [2009/10/18(日) 01:27:38 ]
>>27
ここまでは行きます
というか
始まりはこの文からです
っていう意味です…

30 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 09:58:29 ]
質問者は中学生なんだから、少しはいたわれw



31 名前: ◆/91kCCQXBo mailto:sage [2009/10/18(日) 10:35:04 ]
/*2分法の処理を行う関数*/
www.geocities.jp/supermisosan/nibunhou.html
ヒント:C→C++ に置換
cout<<"範囲の左の値を入力してください.\n"; cin>>x1;
cout<<"範囲の右の値を入力してください.\n"; cin>>x2;
cout<<"解の値は "<<c<<"\n収束するのに "<<count<<" 回かかりました.\n";

32 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:37:55 ]
教育は若いうちにやるほうが効果が高い

33 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:43:20 ]
>>22
まずはテンプレート >>1 にそって問題を整理してください。書きなぐり?では他の人間に伝わりません。
日本語を磨くこともプログラミングでは重要です。我々は日本語を使って思考しているわけですから。

34 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:45:08 ]
>>32
そうですか。もう私らではだめですかね。(TT)

35 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:11:45 ]
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9988.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
 [3.3] 言語: C++
[4] 期限: ([2009年10月20日23:59まで]
[5] その他の制限:特にありません

よろしくお願いします。

36 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:22:50 ]
>>035 // 適当〜なので。
int main(void) {
  while(1)
    printf(" %.16g\n", e());
  return 0;
}

37 名前:35 mailto:sage [2009/10/18(日) 19:39:56 ]
>>36
ありがとうございました。
本当に助かりました。

38 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:26:02 ]
[1] 授業単元: 数値計測演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9989.txt

問題文 
fx = exp(x)- 3x において 区間{0,1}の根を二分法で求めよ
ただし、収束判定条件には|b-a|<εを用いて ε=10^-5
また根の収束の様子を見るために反復ごとにc、fc の値の変化を調べよ


visual C++でのエラーメッセージ
c(11) : error C2059: 構文エラー : 'サフィックスが無効です
c(11) : error C2146: 構文エラー : ';' が、識別子 'x' の前に必要です。

あと指定されたファイルが見つからないとかでファイルを実行できないです

[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: visual C++
 [3.3] 言語: C
[4] 期限: ([2009年10月20日23:59まで]
[5] その他の制限:特にありません


まったく解決方法がわからないです
よろしくお願いします



39 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:47:08 ]
3x → 3*x

40 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:03:29 ]
>>39 に加えて、途中の printf() の引数を間違えています。(表示がおかしい)
printf("%d:f(%20.16f)=%9.2e\n", i, c ,fc); に修正してください。i に対応する書式が足りない。



41 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 00:32:23 ]
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):
コンソール画面上に点@を打つ関数 putpixcelを使って
水平方向に線を書く h_line(int x1,int y1,int x2)
垂直方向に線を描く v_line(int x1,int y1,int y2)
斜めの線を描く line(int x1,int y1,int x2,int y2)
を作りこれらを使ってコンソール画面上に図形を書きなさい
但し、line関数において因数はx1<x2,y1<y2,|x2-x1|>|y2-y1|の場合に限定して良い。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: xemacs
 [3.3] 言語: (C)
[4] 期限: (2009年10月19日13:00まで])
いろいろ考えましたが、全く分りませんでした、どうかお願いします。

42 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 00:42:06 ]
[1] 授業単元:c言語
[2] 問題文
問1
文字を一文字入力して、文字コードが一個次の文字を表示するプログラムを作成せよ。
問2
文字を一文字入力して、入力文字が a-z の範囲のときのみ、次のアルファベットを表示すプログラムを作成せよ。ただし、zを入力した場合は a を表示し、a-z以外の文字を入力した場合は入力した文字をそのまま表示すること。
例:
aを入力 → b を出力
bを入力 → c を出力
zを入力 → a を出力
3を入力 → 3 を出力
$を入力 → $ を出力
Aを入力 → A を出力
問3
文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか別して、判別結果を表示するプログラムを作成せよ。

[3] 環境
Windows,
言語:C++
[4] 期限:12月1日
よろしくお願いします。


43 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 01:08:42 ]
>>42
codepad.org/dQmOOKYi

44 名前:43 mailto:sage [2009/10/19(月) 01:09:55 ]
問2
あとはこれを参考に考えて下さい。

45 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 01:11:10 ]
>>41
e-lisp でしないといけないのですか?そうならばすれ違いですね。

46 名前:43 mailto:sage [2009/10/19(月) 01:19:51 ]
>>43
間違えた。こちらに訂正します。
codepad.org/wX3ZzxvN

47 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 07:20:25 ]
>>32
物事をよく理解できない、勘違いでも丸暗記では意味がない。
教育の意味にもよるが、死ぬまで勉強。
生きている内に知ることは多い、時代も変わっていくしね。
そして、於いて朽ち果てていく己を知るのじゃ〜〜wwww

48 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:18:31 ]
せめて漢字変換くらいまともにできるようになってからにしろよ、そういう寝言はよw

49 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:23:31 ]
wつけといてよくいえるな。。。

50 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:34:07 ]
>>45
emacs画面でする作業の事を、emacsで何々すると言う。例えばコンパイル&デバッガ。



51 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:35:31 ]
>。。。
こんな句点の使い方は日本語にゃねーよw

52 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 09:23:59 ]
 ど っ ち も ど っ ち 

53 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 09:47:05 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9990.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9991.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語:C++
[4] 期限: 2009年10月22日

自分なりに考えてみましたがわかりませんでした。
宜しくお願い致します。

54 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 12:32:09 ]
>>50
なるほど。
emacsでデバッガする
ですね

55 名前:デフォルトの名無しさん [2009/10/19(月) 15:36:52 ]
[1] 授業単元:プログラム言語論
[2] 問題文(含コード&リンク):

設問1.C言語、またはC++言語で、割り算を計算するdev(int x,int y)関数(*)を作成しなさい。ただし、不変表明(assert)を使って、0で除算を実行した場合にエラーを出力するようにすること。(*)関数devは、int型の返値を持ち、x/yを計算するものとする。

[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C言語、またはC++言語
[4] 期限: 2009年10月20日(火曜)

よろしくお願いします

56 名前:デフォルトの名無しさん [2009/10/19(月) 16:26:11 ]
>>55
#include <stdio.h>
#include <assert.h>
int dev(int x, int y) { assert(y != 0); return x / y; }
int main(void)
{
printf("%d\n", dev(2, 0));
return 0;
}

57 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 17:41:30 ]
[1] 授業単元:プログラミング2演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9992.txt
複素数x+iyをR*e^iθという指数表示にするプログラムを作れ。

作れるところまで作ったのがリンク先のプラグラムです。
しかしこれではx,yに何を入れてもてもR=0.0 θ=0.784902になってしまいます。
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] Borland C++ Compiler 5.5
 [3.3] 言語:C++
[4] 期限: ([2009年10月20日12:50まで])

よろしくお願いします

58 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 18:17:04 ]
>>55
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9993.c
むかしZ80で割り算ルーチンを書いてたのに忘れてた。
ググってやっと書けたけど、ほんとにむかし出来てたのか心配になった。

59 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 18:54:10 ]
>>57
%f→%lf

60 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 18:54:58 ]
あとshisu()の位置もおかしいな



61 名前:デフォルトの名無しさん [2009/10/19(月) 19:28:37 ]
1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: c言語
[4] 期限: 2009年10月20日16:00まで
[5] その他の制限:簡単めのコードでお願いします。

62 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 19:30:52 ]
>61
Brain F*ckの処理系作ればいいのか

63 名前:sage [2009/10/19(月) 19:54:50 ]
>>61 すみません、書き忘れました。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9994.txt
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: c言語
[4] 期限: 2009年10月20日16:00まで
[5] その他の制限:簡単めのコードでお願いします。

64 名前:デフォルトの名無しさん [2009/10/19(月) 21:36:30 ]
前のスレの最後の方にユーグリッドの互除法のプログラムがあったはずなんですが、
ここに貼ってもらえませんか?
>>900番代後半だった気がするんですが

65 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 21:43:48 ]
ユークリッド

66 名前:デフォルトの名無しさん [2009/10/19(月) 22:49:40 ]
#include <iostream>
using namespace std;

int main(){
double x1, x2, c, a;

cout << "x1: ";
cin >> x1;
cout << "x2: ";
cin >> x2;
while(x2 - x1 > 0.00001){
c = (x1 + x2) / 2;
if (cos(x1 / 2) * cos(c / 2) >= 0) x1 = c;
else x2 = c;}
cout << "x = " << x1 << endl;

return 0;
}

二分法のプログラムこれどこが違うんですか

67 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:57:33 ]
>>66
質問の仕方が違うんじゃないの?

cos(x1/2)*cos(x2/2)>0 とか

68 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:59:01 ]
>>48
うわ〜〜、変換ミスくらいで突っ込む、絶対にソースコードも
コンパイルするまでエラーしたことがない完璧主義者ですね?
カッコいいです!尊敬します!だから早く老いて死んでくれw

69 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:01:12 ]
>>51
もはやこういった場所では正式な文書より喋り言葉が一般的なんだが
その程度のことを気にするお前は時代には乗り遅れる。
そもそも、文化は現在も人間が作っている。正式に認められていなければ
それは間違いというのは、文化の衰退を招く。少しは理解する頭を持て。
で、三点リーダーって・・・ではなく…を使うのが正しいとかなんとか。
所詮、自分が知っている 日本語も一部 だと気づくんだな。

70 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:07:35 ]
>>69
と、偉そうなことを言っているが実はよくわかっていない馬鹿な>>69なのであった



71 名前:254 [2009/10/19(月) 23:14:10 ]
[2] 内容
通信のパケットを解析してコードに応じた処理を行いなさい。
ただしコードは必ず2回確認して2回とも同じだった場合のみ処理を行うこと。
コードが2回以上続けて来ても処理は1回のみとする。0XFFが来たら処理を終了すること
※ コード例  0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x02, 0x02・・・・・・・・・・0xFF, 0xFF;

なので、こんな感じのソースにしてみました。
static int PreCode = 0xFF;
unsigned int Code = 0;
void Function(unsigned int Code){
if(PreCode != Code){
switch(Code){
case 0x00:
if(Cnt++ >= 1){
/* 1の処理 */
Cnt=0;
PreCode = Code;
}
break;
/* 中略(上記と同じ様にしてcaseの値を変える) */
case 0xFF:
if(Cnt++ >= 1){
/* 終了処理 */
Cnt=0;
PreCode = Code;
}
break;
default:
return;
}}}
[3] 環境  OS:WindowsXp、Vc++6.0
これでは、0x00が来た後に0x01が来た場合に1回目のチェックで処理に入ってしまいます。これを上手く動く様にするにはどうすれば良いかソースの改良をお願いします。

72 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:14:18 ]
実際>>69の日本語も相当なもんだしな。

73 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:15:28 ]
>>71
> 2回確認して2回とも同じだった場合のみ処理を行うこと。
この辺が釈然としない

74 名前:デフォルトの名無しさん [2009/10/19(月) 23:17:08 ]
>>48
いやぁ〜ごめーん、ついうっかり。こういった場所や数学に関する話を他でするもんで
〜に於いてと記入することがあるんで、つい変換ミスしてたのに気づかなくって
ごっめーん、ついでに若くてごめーん、すいすいすいましぇーん

75 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:22:20 ]
> こういった場所や数学に関する話を他でする
なんだって?

それと、数学で「〜に於いて」って使う?適当なアンカー希望

76 名前:デフォルトの名無しさん [2009/10/19(月) 23:29:15 ]
>>48

77 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:09:57 ]
ファイルがバイナリかテキストかを判別する
プログラムはどうしたらいいですか?

78 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:16:34 ]
バイナリモードで開いてテキストじゃない文字があればバイナリファイル

79 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:21:45 ]
テキストファイルはバイナリファイルの部分集合

80 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:21:54 ]
[1] 授業単元:c言語
[2] 問題文
問1
文字を一文字入力して、文字コードが一個次の文字を表示するプログラムを作成せよ。
問2
文字を一文字入力して、入力文字が a-z の範囲のときのみ、次のアルファベットを表示すプログラムを作成せよ。ただし、zを入力した場合は a を表示し、a-z以外の文字を入力した場合は入力した文字をそのまま表示すること。
例:
aを入力 → b を出力
bを入力 → c を出力
zを入力 → a を出力
3を入力 → 3 を出力
$を入力 → $ を出力
Aを入力 → A を出力
問3
文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか別して、判別結果を表示するプログラムを作成せよ。

[3] 環境
Windows,
言語:C++
[4] 期限:12月1日
1回やってもらったんですがわからないんでお願いします。




81 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:24:31 ]
cなのかc++なのか、それが問題になるかも知れないし、環境もWindowsだけではちょっと。
って期限ながっっっ

82 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:29:40 ]
>>80
問1
#include <stdio.h>

int main()
{
char a;
scanf("%c",&a);
printf("%c\n", a+1);
return 0;
}


83 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:45:10 ]
>>77
制御コードの割合。

#include <stdio.h>
#define BOUND 0.02
double bincnt( char *q , unsigned int size) {
unsigned int bin=0, ascii=0, n;
unsigned char *p=(unsigned char*)q;
for(n=0; n<size; n++) {
if( p[n] < 32 && p[n] !=9 && p[n] !=10 && p[n] !=13 && p[n] !=27 ) bin++; else ascii++; }
return (double)bin/ascii; }

#define STRLEN 25
int main() {
double x;
char ch[STRLEN+1] = "abcdefghijk0123456789ABCD";
printf("Input = %s\n", ch);
x = bincnt( ch, STRLEN);
if( x > BOUND ) printf("Binary\n"); else printf("Not Binary\n");
getchar(); }

84 名前:デフォルトの名無しさん [2009/10/20(火) 00:50:00 ]
>>80
問2
#include <stdio.h>

int main()
{
char a,b;
scanf("%c",&a);

if(a == 'z')
printf("a\n");

else if(a >= 'A')
printf("%c\n",a);

for(b = 'a'; b < 'z'; b++){
if(b == a)
printf("%c\n", a+1);
}

return 0;
}


85 名前:84 [2009/10/20(火) 00:54:07 ]
else if(a >= 'A')
printf("%c\n",a);

じゃなくて

else if(a < 'a' || a >= 'z')
printf("%c\n",a);

だった

86 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:01:57 ]
>>80
問3
#include <stdio.h>

int main()
{
char a,b;
int c= 0;
scanf("%c",&a);

for(b = 'A'; b <= 'Z'; b++)
if(b == a) c = 1;

for(b = '0'; b <= '9'; b++)
if(b == a) c = 2;

for(b = 'a'; b <= 'z'; b++)
if(b == a) c = 3;

switch(c){
case 1: printf("大文字です\n"); break;
case 2: printf("数字です\n");break;
case 3: printf("小文字です\n"); break;
default: printf("それ以外です\n");break;
}

return 0;
}


そして俺の宿題はわけわかめ

87 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:10:55 ]
>>86
今見たら終わってる・・・w
本当にありがとうございます(´;ω;`)


88 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:30:46 ]
前スレにも同じ問題あったな

89 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:41:32 ]
>>84
forにしなくてもelseでいいんでない?
ぱっと見動くように見えるからいいけど。

それと、多分'a'から'z'までが連続している保証はないというツッコミも来るだろうけど、
宿題だからでスルーしてもいいと思う。

90 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:39:34 ]
int main() (笑)



91 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:42:37 ]
なにかおかしいかな?
引数ちゃんと書けってこと?

92 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:48:57 ]
いや、問題ないよ
>>90の勘違いじゃないかな

93 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:59:15 ]
>>92
int main() (笑)

94 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:06:15 ]
>>93

95 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:06:28 ]
わからん。
int main(void)
と書かないとダメとか程度の低い勘違いをしてるんじゃないよな?

96 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:13:51 ]
>言語:C++
これが読めない文盲なんだろ。

97 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:14:19 ]
アワレだな

98 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:23:17 ]
>>96
>>84
問2
#include <stdio.h>

int main() (笑)

99 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:29:34 ]
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。

文盲(笑) 差別用語(笑) 池沼レベルの発言(苦笑)

100 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:38:52 ]
Cでint main()がダメだという人って多いよね。
どこでそんな知識得たの?



101 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:58:05 ]
>>80
[1] 授業単元:c言語
言語:C++

問2
#include <stdio.h>

int main() (笑)


102 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:03:44 ]
Xeno091017 正式版
koreawatcher.at.infoseek.co.jp/janexeno.htm
・正式版として最初のリリース。
・Jane終了時の挙動のみ091015試作品から変更された。
───────────────────────
予告どおり、正式版をリリースしました。×ボタンのツールチップ
ヒントに関して、真魚のソースを参考にして修正を試みました。
JaneNidaの開発は事実上終了です。2chの仕様変更などで
対応するかもしれません。

103 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:04:03 ]
> [1] 授業単元:c言語
> 言語:C++
(苦笑)

104 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:40:11 ]
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。

>>80
> [1] 授業単元:c言語
これが読めない文盲なんだろ。

105 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:58:56 ]
>>90
int main() (笑)?

106 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 05:19:56 ]
相変わらずすごい粘着力だw

107 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 07:35:21 ]
Cならint main(void){}
C++ならint main(){}またはint main(void){}お好みで。

108 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 08:31:11 ]
#include <stdio.h>
int main() (笑)

109 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 08:33:12 ]
ビルダで言われるがままにしか作ったことないんだろ。
逆に可哀相な奴なんだから気にすることない。

110 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:01:57 ]
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。

#include <stdio.h>  < はい注目!

>>96はこれが見えない文盲なんだろ。



111 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:40:57 ]
別にそれでもC++としてコンパイルできるけど。

112 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 12:01:36 ]
C++でstdio.hをインクルードしてもまったく問題ないと思うけど
>>113はどう思う

113 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 12:13:26 ]
単に質問者が間違えただけだろ
いちいち揚げ足とんな>>90

114 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 12:53:25 ]
>>81で早々にツッコミ入ってるのに

115 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:05:36 ]
>>53
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9996.txt

116 名前:デフォルトの名無しさん [2009/10/20(火) 17:14:46 ]
>>63
期限は10/21の16:00でお願いします。

117 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:20:30 ]
特定のプラットフォーム限定のコード書いてコンパイラの独自機能
使いまくりなのに、標準を気にするなんておかしいね。
ターゲットようのコンパイラに通りゃなにやったって正義。

118 名前:C初心者 [2009/10/20(火) 18:36:06 ]
Unix、C言語のみで、はじめにユーザーに整数入力を要求し、
その入力された整数を次の一行にその整数とHexに変換されたもの
を出力、その次の行には、はじめに入力された整数を少数にして
それをまたHexに変換。
もしユーザーが数字以外を入力した場合にエラーと表示させ、
”0”と打ち込めば終了。
というプログラムです。一行目はきちんと出てくるのですが、
入力された値を2行目で少数に変換し、それをまたHexにかえる
というのがわかりません。

こんな感じで出したいのですが、、

>1
    1 0x00000001
 1.00 0x3F800000

> 

どうぞよろしくお願いいたします。

119 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 19:37:27 ]
>>118 template 無いから、これでいいか。
#include <stdio.h>
int main(void) {
  union{
    float a;
    unsigned char c[4];
  } data;
  int i, b;

  b = 1;
  data.a = b;
  for(i=3;i>=0;i--) {
    printf("%02X", data.c[i]);
  }
}

120 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:17:13 ]
>>90 >>93 >>98 >> 101 >>105 >>108
pc12.2ch.net/test/read.cgi/tech/1250204272/940

>ANSI以前との互換性のために、ANSI-Cではプロトタイプ宣言の時だけは引数にvoidを
>明示しないとならないことになっている。
>定義ではvoidの明示は不要。
>C++ではプロトタイプ宣言でも関数定義でもvoidの明示は不要。
>
>つまり、ANSI-Cで引数の無いmain関数のプロトタイプを書く場合だけは、引数の型を
>voidとするのが正式。それ以外の場所は省略しても正式。




121 名前:C初心者 [2009/10/20(火) 20:23:21 ]
>119さん
返信ありがとうございます。初心者過ぎてコードが読めないんですが、
forループの中ではHexのみをプリントアウトするようになっていますか?
scanfでユーザーの入力を読み込んで、それを整数からHEXへ、少数から
Hexへ変換して表示させるにはどうしたらよいのでしょうか。
それが、unionというものをまだ習っていないので、出来れば使いたくな
いのですが、sizeof(int), sizeof(float)を使ってどのように変換したら
良いのでしょうか?

printf("> %d", n);
if("%d" == char) //CHARではCharを読むことは出来ないんですね?
printf("error");
else if ("%d" == "0"); //これも違いました、、、
return 0;
else{
printf("%10d 0x%08x", n, n);
printf("%10.2f 0x%08X", f, n);
}

よろしくお願いいたします。

122 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:29:07 ]
>>121
何かしたいのかがわからん

123 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:40:58 ]
>>120
なんでそんな、この宿題スレの過去ログでも争って結論が出たのを
今更蒸し返してんの?w
C言語とC++についてもISO、ANSI準拠の標準スタイルについて
説明されていたよ。で、あんたはC++で#include <stdio.h>とするのね?w

124 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:43:24 ]
>>123
するだろ?
C++の規格のどこかにCのライブラリを用いてはならないって書いてあった?

125 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:45:45 ]
>>124
このキチガイさんは<cstdio>って書いて欲しいんだよ

126 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:46:53 ]
>>120
なんか引っかき回してすまないんだが、
mainのプロトタイプってどこかに書かれてる?
無いなら、最初に出てきた時、つまりmainの定義を以て宣言とする挙動になるはずだよね。

127 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:48:57 ]
ANSI-Cにおいて、int main()が非合法であるかの確認をしたいです。

128 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:54:16 ]
>>126
宣言のときなんていってなくね?
プロトタイプ宣言の時なんだから実体の定義を伴う宣言とは別だろ

129 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:55:20 ]
>>118 unionを知らなくても、FILE*は知ってるだろう。もしscanfの使い方知りたいなら別のスレいけ。
#include <stdio.h>
int main(void) {
  int i, b;
  float a;
  unsigned char c[4];
  FILE *fp;

  b = 1;
  a = b;
  fp = fopen("a.txt", "wb");
  if(fp == NULL) {puts("ERR"); return 1;}
  fwrite(&a, 4, 1, fp);
  fclose(fp);

  fp = fopen("a.txt", "rb");
  if(fp == NULL) {puts("ERR"); return 1;}
  fread(&c, 4, 1, fp);
  fclose(fp);

  for(i=3;i>=0;i--) {
    printf("%02X", c[i]);
  }
  return 0;
}

130 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:07:21 ]
>>128
void hoge(void);
void hoge() {}
int main() { hoge(1); return 0; }

このコードの1行目が無ければコンパイルできるじゃん。
それは、関数の定義内容を元にプロトタイプ宣言と見なしているってことじゃないの?



131 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:08:41 ]
C++です。

  x[0] = rand()%6;
  x[1] = rand()%6;
  x[2] = rand()%6;
  y =x[0] + x[1] + x[2];
  z[y] = z[y]+1;

変数がわかりにくくてすみません。
xの配列に0〜5の値を保存して合計してyに入れます。
それからzの配列(15こぶん)に入れたいのですが、うまくできません。

たとえば、yが3のとき、z[3]に入れたいのですが・・・。
最終的にどの値が何回出たか表示するためにzの配列に保存しています。

この部分の記述は間違っていないでしょうか??

132 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:10:15 ]
>>131
いいよ。
z[y]++;
にしてもいい。

133 名前:132 mailto:sage [2009/10/20(火) 22:11:49 ]
あ。zは0-15までの16個ぶん必要だよ。

134 名前:>>118 mailto:sage [2009/10/20(火) 22:24:40 ]
>>131
// C言語です。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
  int i, x[3], y, z[15];

  srand(time(0));
  for(i=0;i<15;i++) z[i] = 0;
  for(i=0;i<100;i++) {
    x[0] = rand()%6;
    x[1] = rand()%6;
    x[2] = rand()%6;
    y = x[0]+x[1]+x[2];
    z[y] = z[y] + 1;
  }

  for(i=0;i<15;i++) printf("%2d %2d\n", i, z[i]);
  return getc(stdin);
}

135 名前:>>118 mailto:sage [2009/10/20(火) 22:26:23 ]
int i, x[3], y, z[16];

136 名前:>>118 mailto:sage [2009/10/20(火) 22:29:08 ]
for(i=0;i<16;i++) z[i] = 0;
for(i=0;i<16;i++) printf("%2d %2d\n", i, z[i]);
ソーリー

137 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:30:33 ]
>>132
ありがとうございます。
この場合変数の宣言はどのようにするのがよいのでしょうか?

138 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:32:05 ]
>>137
今まで通りでいいよ。

139 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:34:23 ]
C言語です

「キーボードから数を入力して、当たればHIT、はずれはMISSEDを表示し、はずれた場合に限り
正しい数はなんであったかも表示する」

という課題なのですが、自分で↓のようなプログラムを作ったのですがうまくいかずどこがいけないのかがわかりません・・・
どうかよろしくお願いします

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x,y;
srand(time(0));

x=(rand()%3)+1;

printf("imput number=?"); scanf("%d",&y);

if(x=y)
printf("HIT");
else {
printf("MISSED\n");
printf("correct number=x");
}
return(0);
}

140 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:34:54 ]
>>134
>>138
できました!ありがとうございます。

配列の宣言部分がおかしかったようです。



141 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:35:41 ]
>>139
if(x=y)って大入試気になってね?

142 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:36:10 ]
代入式!ええい・・・糞IMEめ

143 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:39:08 ]
そこを直しても、ミスったときの表示はおかしいけどな

144 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:40:50 ]
惜しかったなぁ。
まぁ、ここまで作れたならそれは大丈夫でしょう。

145 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:42:19 ]
代入式・・・?

>>141-144
すみません初心者で・・・

146 名前:デフォルトの名無しさん [2009/10/20(火) 22:44:50 ]
>>145
x = yだとxにyの値が入っちゃうので
x == yにしないといけないよって言う話

147 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:45:02 ]
>>145
=でつないじゃったら右を左に入れるだから
==じゃないとだめよ

148 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:46:11 ]
あとはずれた場合に正解を表示させないとね

149 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:48:07 ]
>>146-147
そうでしたか!なるほど・・・
どうもありがとうございます!

>>148
そっちにも問題がありそうですねorz
ちょっと試行錯誤してみます!

150 名前:デフォルトの名無しさん [2009/10/20(火) 22:50:39 ]
>>149
まぁ'='と'=='の勘違いは誰もが通る道だから
気にしなくていいよ



151 名前:139 mailto:sage [2009/10/20(火) 22:56:39 ]
>>150
ありがとうございます!


無事にプログラムが完成しました!

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x,y;
srand(time(0));

x=(rand()%3)+1;

printf("imput number=?"); scanf("%d",&y);

if(x==y)
puts("HIT");
else {
printf("MISSED\n");
printf("correct number=%d",x);
}
return(0);
}


こうしなければいけなかったのですね

大変お世話になりました!

152 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:56:59 ]
その上気づきにくい、、、が、コンパイラが警告出してくれてると思うよ。
警告 : 条件文書くとこで代入してるけど、これ意図して書いてる?
みたいなの。

153 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:58:01 ]
おめでとう。imputはご愛嬌。

154 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:03:19 ]
>>152
英語が苦手で警告文を解読するのも一苦労です・・・

>>153
ぶはw
これは恥ずかしいです・・・

155 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:48:47 ]
C++のソースコードを書きます(キリッ)
#include <stdio.h>
int main()
{
return 0;
}
できますた!C++コンパイラでコンパイルして下さい!(キリッ)

156 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:53:45 ]
>>155
問題なくコンパイルできますね。(g++, bcc32)


157 名前:デフォルトの名無しさん [2009/10/20(火) 23:54:45 ]
>>155の何が面白いのか真剣にわからない

158 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:08:41 ]
宿題の答えくれなくて自暴自棄になってるんだと思う。

159 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:10:19 ]
この粘着はCスレによく出没する頭のおかしい人だから、スルーしてください。

160 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:26:52 ]
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):
  問1、符号無し整数xを右にnビット回転した値を返す関数
     unsigned right(unsigned x,int n)
{
}
を作成せよ

[3] 環境
 [3.1] mac
 [3.2] gcc?(よくわかりません)
 [3.3] C言語
[4] 期限: 2009年10月22日(木)
よろしくお願いします。



161 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:30:49 ]
右シフトしたのと左シフトしたのの和でいこう。

162 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:43:35 ]
乱数を使って半径rの球面上に一様に点をうつ方法を分かりやすく教えてください。
指向性を考える必要があるため割と難しい問題だと感じます。

163 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:46:34 ]
>>162
質問スレでどうぞ
(ヒント:極座標[0,2π]x[0,π])

164 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:48:33 ]
>>162
極座標使ったら簡単じゃねーの?

165 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:51:53 ]
>>160
unsigned right(unsigned x, int n)
{
reutrn x >> n | x << (sizeof(unsigned) * 8 - n);
}

166 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 01:26:01 ]
C++でsetwやsetprecisionで指定した桁数を解除するためにはどうしたらいいんでしょうか?

167 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 07:30:33 ]
>>162
多分 [0, 4πr^2) の一様乱数を座標に変換するのがいいとは思うんだけど難しいね

168 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 18:24:38 ]
>>126
main() のプロトタイプをわざわざかくのであれば、それは

 int main(void);

のでしょうが、普通はプロトタイプなぞかかずに

int main()
{
return 0;
}

と main() を定義しますよね。main() の定義であれば int main() と買いて、規格に沿っていない記法とはならないわけです。

169 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:00:39 ]
>>168
C++ならそうだね

170 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:14:41 ]
>>162 合ってるかどうか自信は無い
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

double uniformed_rand(void)
{
return (double)rand()/(RAND_MAX+1);
}

int main(void)
{
double theta, phi;
double r=5.0, x, y, z;
int i;

for(i=0;i<100;i++)
{
phi=asin(uniformed_rand()*2-1);
theta=uniformed_rand()*2*M_PI;
x=r*cos(theta)*cos(phi);
y=r*sin(theta)*cos(phi);
z=r*sin(phi);
printf("x=%f y=%f z=%f\n", x, y, z);
}

return 0;
}



171 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:17:35 ]
>>168
んだから、プロトタイプが書かれていない場合はint main()をプロトタイプだと見なすんじゃないのって話
で、そうなればvoidの省略は許されないよね。
どこかで
 int main(void);
という宣言がされていれば、定義時はint main()で問題ないよね。

その上で、int main()の定義がANSI-Cにおいて完全合法であるからには、どこかで宣言されているか、
またはmainが特殊であるかのいずれかだと思うんだ。

172 名前:170 mailto:sage [2009/10/21(水) 19:22:02 ]
>>170 は間違ってた

173 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:43:42 ]
>>171
プロトタイプ宣言は「実体と伴わない関数の宣言」だろ
int main()って書かれてその後に実体がそのまま書かれてるなら「実体を伴う関数の宣言」なのだからプロトタイプじゃないだろ。


174 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:48:50 ]
>>173
そっか。プロトタイプじゃないか。

プロトタイプ宣言はされてるのかなぁ

175 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:51:27 ]
あ、プロトタイプ宣言があっては困るか。

つまるところint main()は完全合法ってことになるのね

176 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:57:02 ]
ANSIから外れた記述であるわけは無かろうと思っていたのに、C++だから合法みたいなレスが
いっぱいついてどうしようかと思った。

177 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:50:11 ]
>>175
いや、べつに main() のプロトタイプを書いてもいいんですよ。無意味ですが。

178 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:52:44 ]
>>177
え?
どう書くの

179 名前:170 mailto:sage [2009/10/21(水) 20:54:10 ]
やっぱり >>172 が間違ってるのかも
もう数学なんて分からん orz

180 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 21:43:26 ]
>>178
「プロトタイプ」の意味、理解してる?



181 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:30:10 ]
[1] 授業単元:C言語とアルゴリズム
[2] 問題文:
 キーボードから自然数を入力し1から入力した数までの自然数の中から、
3の倍数と3のつく数字をすべて出力するプログラムを作成しなさい。ただし、
3の倍数と3のつく数字を入力したときに真(非0)、それ以外の場合は偽(0)を返す関数
(関数名は任意)を作成し、それをmain関数内から呼び出して使用すること

{実行例}
自然数を入力して下さい.
100
1から100までで3の倍数と3のつく数字は以下の通りです.
3 6 9 12 13
15 18 21 23 24
27 30 31 32 33
34 35 36 37 38
39 42 43 45 48
51 53 54 57 60
63 66 69 72 73
75 78 81 83 84
87 90 93 96 99

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

182 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:55:13 ]
#include <stdio.h>

int f(int n)
{
if(n % 3 == 0) return 1;

while(n) {
if(n % 10 == 3) return 1;
n /= 10;
}

return 0;
}

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

printf("自然数を入力して下さい.");
scanf("%d", &n);

printf("1から%dまでで3の倍数と3のつく数字は以下の通りです. \n", n);

for(i=1,cnt=0; i<=n; i++) if(f(i)) printf("%d%c", i, ++cnt % 5 ? ' ' : '\n');

return 0;
}

183 名前:162 mailto:sage [2009/10/21(水) 23:08:13 ]
>>170
考えて頂いてありがとうございます。

結局点が選ばれる確率を1/4πとして,極座標表示での微小領域に点が入る確率の積分が1になることを利用し,
微小領域の確率を変形して無理やり乱数を使える形にしました。省略しすぎた説明ですいません。

結局 ( theta, phi ) = ( arccos(r1), 2*pi*r2 ) という式を導きました。
但し,r1:[-1, 1],r2:[0, 1]で,theta:[0, pi],phi:[0, 2*pi]で考えています。

184 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:51:24 ]
>>178
難しく考えすぎ。

#include <iostream>

int main( );

int main( )
{
std::cout << "Hello World" << std::endl;

return 0;
}

185 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:07:52 ]
>>175
プロトタイプ宣言がどうとか、独自の環境なら話は別。
もう少し言葉の意味を理解する頭を持ってくれよ。
ANSI、ISO準拠では条件もしっかり明記されている。
main関数を プログラムの開始 とする。
自分でソースの中から開始の関数を指定できるなら
もはやISO、ANSI準拠にあらず、ご自由にどうぞ。
で、ANSI、ISO準拠の 標準スタイル ではC言語は引数がないなら
int main(void)としている。従うか従わないから各個人の任意にお任せ。
int main()でも良いじゃないか?どうぞどうぞ。別にそれが
間違っているなんて誰も言ってませんよ?

186 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:09:21 ]
>>181
世界のアツナベキターーーーー!

187 名前:デフォルトの名無しさん [2009/10/22(木) 00:41:34 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
問1
行列のかけ算を使って幅20、高さ140の長方形の横に3.3倍、縦に0.4倍の拡大率で表示をするプログラムを作成せよ。

問2
サンプルプログラムを参考にして、画面の中心に幅80、高さ50の長方形を原点を中心にπ/8だけ回転させた長方形を描くプログラムを作成せよ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9995.txt

問3
画面上に描かれた長方形がキー入力によって原点を中心に回転するアニメーションを実現するプログラムを作成せよ。キーの「1」と「3」で回転角度が増減するようにせよ。

 [3.1] WindowsXP
 [3.2] Turbo c++ 4.0
 [3.3] C++
[4] 今週の金曜日まで
お願いいたします。

188 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:45:45 ]
>>185
int main() { return 0; } は完全に ANSI 準拠ですけれども、何がおっしゃりたいのでしょうか?

>>184
int main(void);
int main() { return 0; }
ではなかろうかと。プロトタイプには void が必要となるのが ANSI 準拠です。

189 名前:188 mailto:sage [2009/10/22(木) 00:47:27 ]
>>184
失礼、C++ で書いてありましたね。ごめんなさい。

190 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 02:11:06 ]
>>185
ああ、そういうこと?
K&Rなんかは、合法だが標準じゃないスタイルで記述された、それだけの話か。

標準じゃないからといってint main()がひたすらに叩かれる理由がよく分からんけど、とりあえず理解した。



191 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 02:25:22 ]
こいつに触っちゃダメ

192 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 02:57:43 ]
こいつ?そいつ?

193 名前:デフォルトの名無しさん [2009/10/22(木) 12:56:02 ]
>>191
お前に触れない方が良いことは分った。理解力のない池沼めw

194 名前:デフォルトの名無しさん [2009/10/22(木) 12:58:51 ]
>>188
> 何がおっしゃりたいのでしょうか?
分らないならレスするなよ、バカw
準拠ですけれども?意味不明。前提条件もあってのことだが???
だから敢えて細かく説明されてんじゃん。いい加減、この手の話は
過去ログで決着がついているから、後は自分で調べろ。

> int main() { return 0; }
激しく意味不明な指摘w

195 名前:デフォルトの名無しさん [2009/10/22(木) 13:05:54 ]
>>185はプロトタイプ宣言についてじゃないぞ?
ANSI、ISO準拠のmain関数の記述の「標準スタイル」についてだぞ?
mainに関係なくプロトタイプ宣言にvoidが必要だのって、そういう話じゃない。
int main(void)かint main()か?だから上の方でC言語 int main() (笑)とか
言われてたんだろ。
後で必死に反発したつもりなのか、C++が読めない「文盲」なんて
人を見下す差別用語を平気で使うならず者が出てくるし。
C++なんて突っ込むから #include <stdio.h> についてさらに突っ込まれてやんの。
もう支離滅裂。話の主題、論点が分らないならレスしないで構わんよ。
自分が無知だとばれますよ?

196 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:17:12 ]
>>194
そりゃそこだけ抜けば意味不明な指摘になる
プロトタイプのとこだとおもうよ

ANSI-Cにおけるint main(){return 0;}は合法であるという旨のレスをいくつかしたんだけど
>>176の通り、C++なら大丈夫だよ!というのが混ざってくるから話がこじれたんじゃないか?
C++は関係ない、で捨てようにも、「C++なら」ってことはCではダメだという風に取れちゃうし。

197 名前:デフォルトの名無しさん [2009/10/22(木) 13:26:15 ]
ISO、ANSI準拠では プログラムの開始をmain関数 としているわけだが
それをプロトタイプ宣言とか言い出したら意味不明だわw
いい加減、プロトタイプ宣言から離れろ

198 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:37:53 ]
なんだ、いつもの話をずらして粘着する人か

199 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 15:59:01 ]
HANDLE a;
…ハンドル取得…
HDC b = (HDC)a;

これってダメなんだっけ?w

200 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:06:52 ]
>>199
aは何のハンドルですか?



201 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:07:36 ]
フォントです

202 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:53:18 ]
>>201
フォントのハンドルをHDCにキャストするのは、ダメです。
使い方が間違っています。

203 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:55:38 ]
>199
typedef struct hcd {
 foo_t foo;
} *HDC;
typedef struct handle {
 struct hcd hdc;
 bar_t bar;
} *HANDLE;
typedef struct font {
 struct handle handle;
 baz_t baz;
} *FONT;
とかなっているんだったら、いいでそ
もしかしてHDCって、Windowsのあれかな。

typedef void *HANDLE;
typedef struct hdc {
 foo_t foo;
} *HDC;
typedef struct font {
 struct hdc hdc;
 bar_t bar;
} *FONT;
こんなのでもいいわ。
もう、typedef void *HANDLE, *HDC, *FONT;でもいいわ。
どういう風に宣言なり定義なりされているのかわからないと何とも言えない。

204 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 17:30:19 ]
HDCとかHANDLEとかWindowsのあれでしょ
Windowsのスレへどうぞ
void*をむやみにキャストしてもだめということだろうが


205 名前:デフォルトの名無しさん [2009/10/22(木) 21:57:18 ]
[1] プログラミング演習
[2]以下のプログラムの図形を画面の中心に平行移動をしてから表示するように改造せよ。
結果として画面の中央(320, 240)を中心とした回転移動の角度をキー入力によって増減するようにせよ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9998.txt
 [3.1]WindowsXP
 [3.2] turbo c++ 4.0
 [3.3] c++
[4] 明日中

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

206 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 22:11:56 ]
>>199
大体の流れとして。

HDC hdc;
PAINTSTRUCT ps;
hFont = CreateFont(…);
hdc = BeginPaint(hWnd, &ps);

SelectObject(hdc, hFont);

じゃないの。それぞれ宣言場所違うけどね。
デバイスコンテキストハンドル2つ生成してSelectObjectすればそれっぽいんじゃないか?。

207 名前:デフォルトの名無しさん [2009/10/22(木) 23:55:47 ]
Visual StudioでC++をやり始めたんですが
実行してもすぐに
コマンドプロンプトが閉じてしまって結果が見れません
対処法を教えてください。

208 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:01:21 ]
僕の肛門も出すものを出したら直ぐに閉じてしまいます ><;

209 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:01:29 ]
右クリック→設定 で
「終了後に自動的に閉じる」のチェックを外す。

210 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:13:56 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
[1 2 0] [3 2 0 1] [3 4 0 2 1]みたいな同じ数字を使わない任意の長さでランダムな数列の作成するプログラム。

[3] 環境
 [3.1] OS: vista
 [3.2] コンパイラ名とバージョン: gcc ?
 [3.3] 言語: C
[4] 期限: 来週の木曜日

rand()、switchでごり押しくらいしか思いつかないです…



211 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:20:49 ]
>>210
カードシャッフルのアルゴリズムと同じ

212 名前:デフォルトの名無しさん [2009/10/23(金) 00:23:11 ]
>>211
論より証拠。口先よりソースコード。

213 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:46:22 ]
>>210

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int c, char **v)
{
int n,*a,i;
if (c<2)return 0;
a=malloc((n=atoi(v[1]))*sizeof(int));
if (a==NULL)return 1;
srand(time(NULL));

for (int i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (int i = 0; i < n; ++i) {
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


214 名前:デフォルトの名無しさん [2009/10/23(金) 00:46:40 ]
>>209
207なですがどこで右クリックすればいいのか
教えてもらえないでしょうか。

215 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:51:33 ]
>>214
.pif ファイル。
つーか、単に main の最後に getchar() か何か付け足して、
エンターで終了ってことにしとけば良いんじゃね?

216 名前:213 mailto:sage [2009/10/23(金) 00:54:49 ]
これで出来てる?
携帯だから自分で確認できないんだが。


217 名前:デフォルトの名無しさん [2009/10/23(金) 00:55:53 ]
>>215さんありがとうございました
今日から勉強始めて
まったく分からない状況だったので助かりました

218 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 01:54:50 ]
int main(int c, char **v)  (笑)
srand(time(NULL));  (苦笑)
for (int i = 0; i < n; ++i) a[i] = i; (爆笑)
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]); (大爆笑)
putchar(8); (失笑)

219 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 02:18:55 ]
修正

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;
srand(time(NULL));

for (i = 0; i < n; ++i) a[i] = i+1;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


220 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 02:29:22 ]
問題よくみたら0からだった。
修正しといてくれ。



221 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 02:32:41 ]
つーことで修正

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;

srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


222 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 04:31:04 ]
前から抜くより、後ろからの方が足し引きすくないよ。

for(i=n; i; ) {
k = rand() % i--;

223 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 04:55:38 ]
じゃあ修正
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;

srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i=n; i;){
k = rand() % i--;
printf(i?"%d ":"%d", a[k]);
a[k] = a[i];
}
putchar(']');
return 0;
}


224 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 05:03:45 ]
個人的には
for (i = 0; i < n; i++){
k = rand() % (n-i);

a[k] = a[n-i];
}
とするのが好きだな。

225 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 05:07:10 ]
a[k] = a[n-i-1]じゃね?

226 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 05:17:47 ]
おぉーーっと、ここでうpロダ君のロングパス!

227 名前:C初心者 [2009/10/23(金) 06:26:19 ]
>129, 135, 136さん
御礼が遅くなりました。
ありがとうございました。

228 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 06:48:23 ]
>>223
ループの中で場合わけするなら、]もつけちゃえばいいのに。

229 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 08:10:48 ]
>>210
#include <stdio.h>
#include <stdlib.h>

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

srand(time(NULL));

scanf("%d", &n);
p = malloc(n * sizeof(int));

for(i=0; i<n; i++) {
j = rand() / (RAND_MAX + 1.0) * (i + 1);
p[i] = p[j];
p[j] = i;
}

printf("[%d", p[0]);
for(i=1; i<n; i++) printf(" %d", p[i]);
printf("]\n");

free(p);

return 0;
}

230 名前:デフォルトの名無しさん [2009/10/23(金) 11:44:38 ]
【質問テンプレ】
[1] 授業単元:プログラミング言語C
[2] 問題文:
以下のプログラムの『考える』ところを直し、キーボードから1を入力したらRed2ならGreen、3ならBlueの文字列が画面表示されるようにせよ。またそれ以外の数字が入力されたら『終了します』と画面表示されプログラムが終了するようにせよ


#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;

scanf("%d",&input);


if(考える)            {
printf("%s\n", colors[考える]);
};
return 0;

}
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:VC ++
 [3.3] 言語: C
[4] 期限:早く出せば点数が上がるので出来るだけ早くお願いします
[5] その他の制限:


よろしくお願いします



231 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 11:49:39 ]
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
scanf("%d",&input);
if(1 <= n && n <= 3) {
printf("%s\n", colors[n - 1]);
}else {
printf("終了します\n");
}
return 0;
}


232 名前:デフォルトの名無しさん [2009/10/23(金) 11:54:19 ]
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;

while(1){
scanf("%d",&input);
if(input>0&&input<4){
printf("%s\n", colors[input-1]);
}else{
printf("終了します\n")
break;
}
}
return 0;
}

233 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:36:50 ]
int main() (笑)

234 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:41:02 ]
>>230

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3"};
char b[80];

gets(b);
for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else{
printf("終了します\n");
}
return 0;
}


235 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:56:45 ]
>>230

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];

gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=0;input<11;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else if(input<10){
printf("終了します\n");
}
return 0;
}


236 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:05:54 ]
つまんね

237 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:08:44 ]
こうだろ。

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];

gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=3;input<11;input++)if(strstr(b,nums[input]))printf("終了します\n"),return 0;

for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}
return 0;
}


238 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:37:15 ]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input, i;
char buf[1024];
char *num[] = {"0","1","2","3","4","5","6","7","8","9"};
char *num2[] = {"零","一","二","三","四","五","六","七","八","九"};
fgets(buf, 1024, stdin);
input = atoi(buf);
for(i = 0; i < 10; i++) if (strncmp(buf, num[i]) == 0) input = i;
for(i = 0; i < 10; i++) if (strncmp(buf, num2[i]) == 0) input = i;
if (input <= 0 || input >= 4) printf("終了します\n");
printf("%s\n", colors[input]);
return 0;
}

239 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:43:12 ]
__declspec(dllimport) extern int printf(const char *s, ...);
__declspec(dllimport) extern int scanf(const char *s, ...);
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input;
char b[80];
gets(b);
input = atoi(b);
if (input <= 0 || input >= 4) printf("終了します\n");
else printf("%s", colors[input - 1]);
return 0;
}

240 名前:210 mailto:sage [2009/10/23(金) 13:47:52 ]
>>211
ありがとうございます。
検索ワードが思い浮かばず困っていた面もありました。
時間はあるのでじっくりググって煮詰めようと思います。

>>213=>>219=>>221=>>223
>>229
ありがとうございます。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10000.txt
自分でも布団の中で考えn個の中から1つを選ぶ、n-1個の(ryみたいな感じでやってみましたが比べると無駄が多い…
参考に改善しようと思います。






241 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:52:09 ]
knuthやfisher-yatesでググると参考になる。

242 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:05:23 ]
putchar(8) って何? バグ?

243 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:11:29 ]
asciiコードぐらい自分で調べろよw

244 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:23:37 ]
さぁとっととリストの課題こいや〜!麻呂のミートクソースをお見舞いしてやんよでおじゃる?
カレンダー出力も来るでおじゃる!

245 名前:デフォルトの名無しさん [2009/10/23(金) 16:45:24 ]
いやっほー!

246 名前:麻呂専用 mailto:sage [2009/10/23(金) 16:55:35 ]
[1] C言語中級
[2] 8X8のオセロの全局面をリスト構造で列挙しそれを適当なファイルに保存するプログラム
次の問いの答えも添付すること
(1)先手必勝、後手必勝かの決定
(2)平行初期値と通常初期値(回転対称、鏡映は同一視)それぞれの
場合において到達可能な葉は全部の場合の何パーセント程度であるか?

[3] Windows 2000/Visual-C++ 6.0/C言語(厳守)
★置く場所が無い場合に限りパスが認められる。
★FileMappingやVirualAllocateのWindowsの機能を利用し、
メモリがパンクしないように留意すること。メモリの搭載は128M程度
を仮定する。
[4]来週月曜日迄(厳守)

247 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:21:25 ]
全文を書くと大変なことになるのと(300行以上)、
どこから、どこまでを引っこ抜いてきて書けばいいかが分からないので、とりあえず下記を抜粋しました。
この部分で文法的に間違ってる文章はありますでしょうか?
nはdefine済みです。よろしくお願いします。

int i, l, s, c, k, d[n];

srand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(rand() * n);
c = i;
for(l=0; l<10; l++){
s = floor(rand() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}


248 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:28:02 ]
>>1
>【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)

249 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 19:09:34 ]
【質問テンプレ】
[1] 授業単元: 情報演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10001.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
うpろだお借りしました。
10001.txtの中の
int i, l, s, c, d[n];

init_genrand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(genrand_real2() * n);
c = i;
for(l=0; l<10; l++){
s = floor(genrand_real2() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}
for(c=0; c<n; c++){
printf(" %d\n", d[c]);
}
}
が手間取っている部分です。どうしてもうまく動作しません。
よろしくお願いします

250 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 19:42:46 ]
>>249
何がどうなって欲しいの?



251 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 20:10:44 ]
プログラム全体でやっていることは、
隣接行列を作る。
強連結か判定。
ページランクの測定。
です。
>>249では有向グラフで出発点をランダムにとり、
そこからランダムウォークをして、何回か移動したとき、各点にどれだけ移動したかを測定しようとしています。


252 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 20:25:40 ]
ランダムウォークじゃなくて全部歩くべきなんじゃないの?

253 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 22:28:46 ]
>249
値を返していない関数がある
245行目で初期化されていない変数を使っている

254 名前:デフォルトの名無しさん [2009/10/24(土) 00:55:05 ]
[1] 授業単元:プログラミングV
[2] 問題文(含コード&リンク):外部ファイルより整数を読み込み、棒グラフを描くプログラムを
作る。外部ファイルはコンストラクタで配列に読み込め。使う関数はヘッダーファイルに
publickに定義する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:2009年10月29日10時
[5] その他の制限:特にないです。


255 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 03:12:57 ]
問題文って本当にそれだけ?


256 名前:デフォルトの名無しさん [2009/10/24(土) 09:13:10 ]
mathematicaなんですが、関数を作れとのことなので
ここに投稿させてもらいます。
暇がある方お願いします。

2変量のデータ {{x1, y1}, {x2, y2}, ... , {xn, yn}} を引数として,散布図と相関係数を出力する関数を作成せよ.


257 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 09:49:53 ]
お断りします

258 名前:デフォルトの名無しさん [2009/10/24(土) 14:40:31 ]
テストの平均点を出して小数第2位を四捨五入したいんだけどどうすればいいの?
平均点は出てます。


259 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 14:46:52 ]
%とfの間に「.1」だっけ?

260 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:12:39 ]
>>258
main(){
float a = 1.56;
int b;
b = a*10+0.5;
a = b/10.0;
printf("%f",a);
return 0;
}



261 名前:デフォルトの名無しさん [2009/10/24(土) 15:15:44 ]
#include <math.h>
float round(float val, int decimal)
{
val += pow(5.0, -(decimal+1));
long tmp = val * pow(10.0, decimal);

return tmp/pow(10.0, decimal);
}

262 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 16:58:52 ]
テキストから"n 100"みたいな文字列を読み込んで、プログラム内でnに100を代入するにはどうすればいいでしょうか?

263 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 17:14:17 ]
それがコンパイラだよ。

264 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 17:17:56 ]
>>262
プログラム書くか、>>1を読めばいい。

265 名前:デフォルトの名無しさん mailto:age [2009/10/24(土) 19:07:42 ]
[1] 授業単元:変数の基礎
[2] 問題文(含コード&リンク):このプログラムのどこかに変数における間違いがあります。
  その間違いを探しなさい。  kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10002.txt

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: visual studio2008
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 明後日まで
[5] その他の制限: 特になし


266 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:27:11 ]
>265
使われていない変数がある
値を返していない関数がある

267 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:41:18 ]
>265
outputが開放されていない

引数が使われていない
未定義動作の式が存在する

268 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:45:31 ]
意図のわからない名前をつけちゃだめ

269 名前:265 mailto:age [2009/10/24(土) 20:22:15 ]
>>266>>267

ありがとうございます。
もし良ければ何行目あたりかを教えてください。(スルーでも大丈夫です)


270 名前:デフォルトの名無しさん [2009/10/24(土) 21:24:20 ]
>>265
これすごいなw
実装したやつ天才すぎるw
つか宿題じゃねーだろこれ?



271 名前:デフォルトの名無しさん [2009/10/24(土) 21:25:44 ]
こういうスレにいると
問題と回答の両方があるから
勉強になるよね☆

272 名前:265 mailto:age [2009/10/24(土) 21:28:20 ]
専門学校の宿題です
長いプログラムですが間違えてる所は最初〜真ん中らへんにあるって言ってました

関数や引数のことがよく分かっていないんで詳しく説明できる人がいればお願いいたします


273 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:32:43 ]
>>265
このコード自体くそ
はじめから書き直せ
素人丸だし

274 名前:デフォルトの名無しさん [2009/10/24(土) 21:37:18 ]
>>272
宿題なのかこれ・・・
これ先生が書いたの?
突っ込みどころ満載なんだがwww

275 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:43:59 ]
>>265
プログラムを見た瞬間目が回った
これだけやる気をなくすプログラムも珍しいな

276 名前:デフォルトの名無しさん [2009/10/24(土) 21:46:35 ]
うちの学校の講師はプログラミングテストで合格しないとなれないみたいだから
>>265みたいなひどいコードはないな

277 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:46:57 ]
とりあえず何をしたいプログラムか分らないと途中経過を追うのが怠すぎる…

278 名前:265 mailto:age [2009/10/24(土) 21:47:08 ]
>>274

先生が書きました とりあえず自力でがんばってみます。
一応明後日までみなさんの詳しい答え待ってます。おやすみなさい

279 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:13:01 ]
>265
>266, 267
とりあえず、機械的に解析してもらった結果から出したんだけど
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10003.txt

280 名前:デフォルトの名無しさん [2009/10/24(土) 22:30:47 ]
>>279

ってか機械的に解析ってどうやんの?プログラマーの俺に教えてちょww






281 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:36:15 ]
lintと違うん?

282 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:36:15 ]
>>280
ツール使うだけ
lint とか

283 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:36:27 ]
>>265
こんなん教えてる専門学校は今すぐ辞めるべき


284 名前:デフォルトの名無しさん [2009/10/24(土) 22:37:48 ]
lintかー あざーす

285 名前:デフォルトの名無しさん mailto:age [2009/10/24(土) 22:43:15 ]
lintってフリーソフトなん?

286 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:48:36 ]
>>285
ググれよw

287 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:00:02 ]
ググって見たけど最近のコンパイラなら必要なさそうだな

288 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:09:13 ]
>265

まぁみんなつっこんでるので繰り返しになるが、
問題文自体が間違ってないか。

「このプログラムのどこかに変数における間違いがあります。」

いや、変数の問題じゃ無いんだが、、、。
こんなコードをデバッグさせようとすること自体が間違いでしょ。

専門学校の宿題か。
その講師の言うことは宛にならないと思う。



289 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:20:24 ]
lintとかを使えるようにしようっていう意図なんじゃないかと深読み

290 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:22:06 ]
>>265
これはひどい。
うちの会社なら、これ書いた奴の上司が社長室に呼びつけられるなw



291 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:24:59 ]
>>265
こんなコードを人に見せるなんて恥ずかしくて切腹ものですね。
先生、あさってには死んでるかもしれないんじゃないですか。

292 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:29:09 ]
プログラマが書いたコードじゃなくて数学屋が書いたコードだろ
やつらこんなの書くぞ

293 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:31:58 ]
講師が学生のバイトで、そいつが研究課題でプログラム組んだけどミスがある。
でも自分ではわからないから、バイト先の連中にやらせちゃえ
って感じな気がする。


294 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:36:18 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10004.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明後日

295 名前:デフォルトの名無しさん [2009/10/25(日) 00:08:00 ]
>>293
確かにw
そんな感じするw

296 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:19:37 ]
>>294
#include <stdio.h>
void rotate(int *p, int size)
{
int i, temp;
for(i=0,size--; i<size; i++, size--) {
temp = p[i];
p[i] = p[size];
p[size] = temp;
} }
int main(void)
{
int a[10], i, length, n;
printf("整数列をローテーションします.\n整数列の長さを入力してください:");
scanf("%d", &length);
if(length <= 0 || 11 <= length) return printf("error");
printf("整数列を入力してください(スペース区切り):");
for(i=0; i<length; i++) scanf("%d", a + i);
printf("ローテーション数を入力してください:");
scanf("%d", &n);
while(n >= length) n -= length;
rotate(a, length - n);
rotate(a + length - n, n);
rotate(a, length);
printf("結果 [ ");
for(i=0; i<length; i++) printf("%d ", a[i]);
printf("]\n");
return 0;
}

297 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:20:00 ]
>>294
もっと単純に書いちゃだめなのこれ?
for (i = 0; i < len; ++i)
{
  arr1[ (i + n) % len ] = arr0[ i ];
}
とかさ。

298 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:40:55 ]
>>296
関数の名前はrotateじゃなくてreverseのほうが正しくね?

299 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:21:30 ]
>294
どこかで見たことあるアルゴリズムだと思ったら、「珠玉のプログラミング」にあった奴だ。

問題の仕様には完全に合わせていないけど、
肝心の部分は、reverseを使ってこんな感じ。

void rightRotation(int *pInt, size_t size, size_t shift)
{
while (shift > size) {
/* シフトがサイズを超えたら、さらに一周させる */
shift -= size;
}

if (shift == size) {
/* シフトとサイズが同じなら変化無し */
return;
}

/* 先頭からsize - shiftサイズ分を逆順にする */
reverse(pInt, size - shift);
/* 残り部分を逆順にする */
reverse(&pInt[size - shift], shift);

/* 全体を逆順にする */
reverse(pInt, size);
}



300 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:28:40 ]
>>294
codepad.org/WglVP0uB
scanf()追放信者が書くとこうなってしまいました。



301 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:33:22 ]
せめて関数のエラー回避をw

302 名前:300 mailto:sage [2009/10/25(日) 01:38:45 ]
>>301
うーん、malloc()のエラー回避はしていますが、やっぱり足りないですか?

303 名前:294 mailto:sage [2009/10/25(日) 01:40:49 ]
実は関数を習ってないので、その部分は回答を参考に書き替えたら
正しい結果になりました。回答ありがとうございました

304 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 03:24:18 ]
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増えるよ。

305 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 03:29:01 ]
乞食は死ね

306 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 04:10:02 ]
>>304
PDFからテキスト抽出とかどっかで見たことあるからpostscriptからも普通にありそうなもんだけど

307 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:37:59 ]
[1] 授業単元:独学
[2] 問題文(含コード&リンク):www.ioi-jp.org/joi/2006/2007-yo-prob_and_sol/2007-yo-problems/2007-yo-t3/2007-yo-t3.html
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:Visual Basic
 [3.3] 言語: C
[4] 期限: 無期限


308 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:39:20 ]
>>307
ぁ、Windowsです
お願いします!

309 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:43:57 ]
VBて。
しかも独学て。
独りで学んでないじゃん。

310 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:47:06 ]
VBじゃ駄目ですか?

独学以外に何と書けば良いかわからなかったので・・・。



311 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:49:30 ]
>>310
Visual Studioのことを言いたいのかい?

312 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:50:48 ]
>>311

あ・・・はい。
そうです。すいません

313 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:58:34 ]
>>308ではないのですが、
A〜Zまで配列にして
forで文字列を1文字ずつ取り出し
さらにforで配列との比較を行い一致したら
x,y,z以外だったら文字比較forのカウント変数に3を加算
x,y,zならa,b,cをそれぞれを出力用配列の内側配列に格納
という風に考えたんですが
これよりスマートなやり方を教えてください。


314 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:15:51 ]
スマートかどうか知らんが
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main(int argc, char **argv)
{
char *p;

if (argc != 2) exit(EXIT_FAILURE);
if (strlen(argv[1]) > 1001) exit(EXIT_FAILURE);
for (p = argv[1]; *p != '\0'; p++) {
if (!isupper(*p)) {
exit(EXIT_FAILURE);
}
}

for (p = argv[1]; *p != '\0'; p++) {
putchar(((*p) - 'A' + 26 - 3) % 26 + 'A');
}
putchar('\n');

exit(EXIT_SUCCESS);
}

315 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:21:10 ]
あ。'A'〜'Z'が連続しているコードが前提です。

316 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:52:13 ]
>307
hashとかmapが使えるとすげー楽なのだけれど、Cには無いので代わりの方法をやってみた。
要はD→A、C→Z・・・の写像を定義してあげればよい。mapだとそのままこの写像が定義できる。
Cではできないので、インデックスに変換してあげている感じ。
#include <stdio.h>
#include <string.h>
#define ELENUM(array) (sizeof(array) / sizeof(array[0]))
/* A, B, C...,Zを0, 1, 2, .. 25に変換。 変換できない場合-1 */
int alphIndexing(char ch)
{
char alph[] = "ABCDEFCHIJKLMNOPQRSTUVWXYZ";
int idx;
for (idx = 0; idx < ELENUM(alph); idx++) {
if (alph[idx] == ch) {
return idx;
}
}
return -1;
}
int main(int argc, char **argv)
{
const char aCaesarTbl[] = "*XYZABCDEFCHIJKLMNOPQRSTUVW";
const char *pConvert = (aCaesarTbl + 1);
int idx;
printf("input : %s\n", argv[1]);
printf("encoded: ");
for (idx = 0; idx < strlen(argv[1]); idx++) {
putchar(pConvert[alphIndexing(argv[1][idx])]);
}
putchar('\n');
return 0;
}

317 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 11:12:48 ]
>>314
>>316
共にエラーが出る・・・

318 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 11:16:01 ]
>>317
へぇ。

319 名前:316 mailto:sage [2009/10/25(日) 11:42:44 ]
引数入力してないでしょ。
入力チェック省いていたから。

ちょっと改善して入力チェックも入れた。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10005.txt

320 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 11:55:03 ]
#include <stdio.h>
int main(){
 int c;
 while((c=getchar()) != EOF){
  if('D' <= c && c <= 'Z') putchar(c-3);
  else if('A' <= c && c <= 'C') putchar(c+23);
  else putchar(c);
 }
 return 0;
}



321 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 13:54:52 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10006.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10007.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限: 2009年10月30日

私なりに考えてみましたがわかりませんでした。
どなたかお解りになる方がいましたら宜しくお願い致します。

322 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:09:43 ]
>321

ポインタがわかっていないようですね。その点は要復習。
第3、第4引数がポインタ渡しか参照渡しか、曖昧ですが、
一応参照渡しでやってみた。
doubleの余りとか適当。

void div(int op1, int op2, int& sho, int& amari)
{
sho = op1 / op2;
amari = op1 % op2;
}

void div(double op1, double op2, double& sho, double& amari)
{
sho = int(op1 / op2);
amari = op1 - sho * op2;
}

323 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:10:12 ]
インラインアセンブラでidivとか言ったら怒られるだろうか。

324 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:22:58 ]
>>254
codepad.org/kbfG5GKd
プログラムの最初に想定しているファイル形式と出力を書いておきます。

325 名前:324 mailto:sage [2009/10/25(日) 21:26:09 ]
書き直しました。
codepad.org/Yi4G9x0S

326 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:39:30 ]
[1] 授業単元:C言語とアルゴリズム
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10008.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで

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

327 名前:デフォルトの名無しさん [2009/10/25(日) 21:53:33 ]
[1] 授業単元: C言語プログラミング演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10009.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 
 [3.3] 言語: C
[4] 期限: 2009年10月28日 16:00まで


328 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:57:20 ]
>>326 問題1−2
#include<stdio.h>

char *ul2a(char buf[40], unsigned long value){
int i;
char *p;
for(i=31,p=buf;i>=0;i--){
*p++=((value>>i)&1)+'0';
if(i%4==0) *p++=' ';
}
*--p='\0';
return buf;
}

int main(int argc, char *argv[]){
char buf[40];
unsigned long x=0, y=0;

printf("符号なし32bit整数2つを入力してください.\n");
scanf("%lu %lu", &x, &y);
printf("%lu は2進表示で %s ,\n", x, ul2a(buf, x));
printf("%lu は2進表示で %s です.\n", y, ul2a(buf, y));
printf("~%lu は2進表示で %s ,\n", x, ul2a(buf, ~x));
printf("~%lu は2進表示で %s です.\n", y, ul2a(buf, ~y));
printf("%lu << 1は2進表示で %s ,\n", x, ul2a(buf, x<<1));
printf("%lu >> 1は2進表示で %s です.\n", y, ul2a(buf, y>>1));
printf("%lu & %lu は2進表示で %s です.\n", x, y, ul2a(buf, x&y));
printf("%lu | %lu は2進表示で %s です.\n", x, y, ul2a(buf, x|y));
printf("%lu ^ %lu は2進表示で %s です.\n", x, y, ul2a(buf, x^y));

return 0;
}

329 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:23:33 ]
>>326
問題1: codepad.org/f8POt06D
問題2: codepad.org/IObqxmMY

330 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:41:19 ]
>>326です
>>328、329さんありがとうございます。
問題1−1なんですが>>328さんの問題1−2のようにもう少し簡単になりませんか?




331 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:43:38 ]
すげー煽りだw

332 名前:329 mailto:sage [2009/10/25(日) 22:51:03 ]
>>330
>>328 ではポインタを使っていますが、>>329 ではポインタを使わず、算術演算(割り算と余り演算子)で処理しています。
あるいは、わかりやすいように配列にいったん結果をいれるようにしています。4桁ごとのくぎりも普通にかいています。
>>329 も簡単だと思いますが( >>328 を否定しているわけではありません)、やっぱり短く書いたほうがわかりやすいでしょうか?

333 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:37:00 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10010.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10012.zip
[3] 環境
 [3.1] OS: Windows?
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (2009年10月30日17;50まで

うまく実行できません。おねがいいたします。

334 名前: ◆pGt6/pVDLk mailto:sage [2009/10/25(日) 23:40:45 ]



335 名前:333 ◆F8HqQ.0zX2 mailto:sage [2009/10/25(日) 23:43:07 ]
見にくいですが、宜しくおねがいします。

336 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:03:32 ]
>327
気が向いただけ、ただ気が向いただけ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10013.zip
s/foo.zip/foo.tar.gz/

337 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:40:51 ]
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増える。

338 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:47:46 ]
ちょっとした質問なんですが、

123

この数列を配列に

321

と、格納するにはどうすれば良いですか?

339 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:54:04 ]
a[0]=1,a[1]=2,a[2]=3;
tmp=a[0],a[0]=a[2],a[2]=tmp; //swap(a,b)
a[2]=1,a[1]=2,a[0]=3;
ちょっと横道に

340 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:55:46 ]
>>339
説明不足でした

scanfから数字を入力して、
その数字を>>338みたいにするにはどうすれば良いですか?



341 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:09:21 ]
後ろから順に前に入れていけばいい。

342 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:11:38 ]
そのやり方がよく・・・

343 名前:デフォルトの名無しさん [2009/10/26(月) 01:25:30 ]
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10014.txt
[3] 環境
 [3.1] OS: (Windows/Linux)
 [3.2] gcc 3.4
 [3.3] 言語: C

お願いしますm(_ _)m


344 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:27:01 ]
意味がよくわからんけどこういうことかな
int a[3];
int i;
for (i = 0; i < 3; i++) scanf("%d", &a[2-i]);


345 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:27:58 ]
>>344>>340へのレスね


346 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:38:59 ]
>>345

123 って入力したときに、
配列に
_____
|3|2|1|
ーーーーー
って格納させる方法です・・・
国語力無くて申し訳ない

347 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:31:10 ]
>>346
#include <stdio.h>

int main(void){
int i;
int x;
int a[3];

scanf("%d",&x);

for(i=0;i<3;i++){
a[i] = x%10;
x /= 10;
}

for(i=0;i<3;i++) printf("a[%d] = %d\n",i,a[i]);

return 0;
}

348 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:44:17 ]
なるほど。数字のみなら>>347もありか。

文字もokな一般的なものを考えてみたのが↓。
>>346
#include <stdio.h>
int main(void){
  int pt1 = 0 , pt2 = 0;
  char s[101] = "", tmp;

  printf("input  : ");
  scanf("%s", s);
  
  while(s[pt2 + 1]!='\0'){
    pt2++;
  }
  while(pt1 < pt2){
    tmp = s[pt1];
    s[pt1] = s[pt2];
    s[pt2] = tmp;
    pt1++;
    pt2--;
  }

  printf("output : %s\n", s);
  return 0;
}

349 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:46:11 ]
>343
一応作ったけど、凝り始めると終わらない

350 名前:333 mailto:sage [2009/10/26(月) 09:42:08 ]
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10010.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10015.zip
[3] 環境
 [3.1] OS: Windows?
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年10月30日17;50まで

すいません。少し補足させていただきますm(。._.)m



351 名前:デフォルトの名無しさん [2009/10/26(月) 12:50:45 ]
>>304
ps2textというのがある。
www.asahi-net.or.jp/~yw3t-trns/namazu/windows/ps2text/

352 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:27:19 ]
>>351
それは、ゴーストスクリプトという専用ツールを呼び出すだけ。
遅いし、確実には抽出できなかったよ。


動作環境:
PerlActivePerl
ghostscript日本語ghostscript, (ghostscript 8.11 以降推奨)

353 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:04:58 ]
postscriptのフォーマット概要がここに書いてあるけど、これだけでは抽出できないみたい。
バージョンが1〜4.2くらいてまであって、それぞれに対応しないと駄目みたい。
www.bunmeisha.co.jp/LaTeX2e/pskihonF.html
こっちは開発元資料へのリンクあり
fontforge.sourceforge.net/ja/bibliography.html

354 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:40:10 ]
>>350
問題の前半が省かれてるっぽいのでよくわからんが、
set_mapがコメントの内容とあってない。

コメントが正しいなら
//マップ内なら数値を代入
void set_map(int n, int x, int y, double v) {
if (x >= 0 && X > x && y >= 0 && Y > y) {
map_q[n][y][x] = v;
}
}
upされたやつだとy=-1とかでもmap_qに値をセットしてたから
それでsegmentaition fautになってる

あと mainの中でcountの初期化がされてない



355 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:11:19 ]
[1] 授業単元:C言語とアルゴリズム
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10016.txt
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:早めに。。

よろしくお願いします!

356 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:31:21 ]
>>355
@
#include <stdio.h>
#include <ctype.h>

int main(void)
{
int l = 0, u = 0, d = 0;
char str[256], *p;

printf("文字列を入力して下さい.\n");
scanf("%s", str);

for(p=str; *p; p++) {
if(islower(*p)) l++;
else if(isupper(*p)) u++;
else if(isdigit(*p)) d++;
}

printf("入力文字列は %s で\n", str);
printf("小文字は%d文字,大文字は%d文字,数字は%d文字です.\n", l, u, d);

return 0;
}

357 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:38:43 ]
>>355
A
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(void)
{
char surname[21], firstname[21], fullname[41], *p;

printf("姓を入力して下さい.\n");
scanf("%s", surname);

printf("名を入力して下さい.\n");
scanf("%s", firstname);

strcpy(fullname, surname);
strcat(fullname, firstname);

printf("入力した氏名は%sです.\n", fullname);

for(p=fullname; *p; p++) {
if(islower(*p)) *p += ('A' - 'a');
else if(isupper(*p)) *p += ('a' - 'A');
}

printf("小文字と大文字の交換後の文字列は%sです.\n", fullname);

return 0;
}

358 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:10:17 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
(1)ライプニッツの公式を用いて円周率の近似値を求める時、その値が3.14から3.15の間になるまで
nを増やしていき、そのnの値(繰り返し回数)を求めるプログラムを作成せよ。

(2)ライプニッツの公式を用いて円周率の近似値を以下の条件で求めよ。
nの値が増えるにつれ、それまでの近似値の平均値を求め、近似値と平均値の差が平均値の1%におさまるまで繰り返す。
(最初にfor文を使って計算を繰り返すたびに平均値も出力するプログラムを作成する。
そしてforをwhileに置き換えたプログラムを作成する。そのときdo()whileを使え。)

[3] 環境
 [3.1] OS: WindowsVista
 [3.2] コンパイラ gcc
 [3.3] 言語: C
[4] 期限: 09年10月28日20:00まで
[5] その他の制限: (1)に関してはif elseを使った文。(2)に関しては問題文通りです。

大学の授業ですが、全くならってない範囲を出題されました…
お願いします。

359 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:20:30 ]
単純なループだから習ってないとは思えない。
応用がきかないのか数学的知識がないだけかググることすらできないのか。

360 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:43:24 ]
>>358
(1)
#include <stdio.h>

int main(void)
{
int n;
double d = 0;

for(n=0; d < 3.14 || 3.15 < d; n++) {
if(n & 1) d -= 4.0 / (n * 2 + 1);
else d += 4.0 / (n * 2 + 1);
}

printf("%d回", n);

return 0;
}



361 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:52:15 ]
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10010.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10017.zip
[3] 環境
 [3.1] OS: Windows?
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年10月30日17;50まで

何度も何度も申し訳ないです。
自分の分からないところだけ載せてました。
それだけでは分かりづらいですね。
(B)が分かりませんお願いします。

362 名前:デフォルトの名無しさん [2009/10/26(月) 17:57:57 ]
>>349
ありがとうございます。
動けば十分ですので、貼ってもらえると嬉しいですm(_ _)m

363 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 18:02:14 ]
>362
O(N^2)だから遅すぎて、お兄たん泣きたくなった、プロファイルかけたらqsort()の300倍の遅さ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10018.c

364 名前:デフォルトの名無しさん [2009/10/26(月) 18:09:16 ]
>>363
ありがとうございます!今から解読して勉強します。。

365 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 18:36:31 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10019.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2009年10月27日 昼12時
[5] その他の制限:

すみませんが宜しくお願い致します。

366 名前:333 ◆F8HqQ.0zX2 mailto:sage [2009/10/26(月) 19:51:00 ]
>>354
ありがとうございます。
実行して出力はできるようになりましたが、
100試行ごとの出力ができません。
ご教授をい願いします。

367 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 21:24:57 ]
>>365
#include <stdio.h>

double f(double x) { return 3 * x * x; }

#define N 1000
int main()
{
  int i;
  double sum = 0.0;
  for (i = 0; i < N; i++)
    sum += 1.0 / N * f((double)i / N);
  printf("S = %lf\n", sum);
  return 0;
}
/* end */


368 名前:333 ◆F8HqQ.0zX2 mailto:sage [2009/10/26(月) 21:45:12 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10020.txt

ここまでできました。
実行して出力したときに、
countを1000にするとうまく表示されるのですが、
countを100にしたときに、どうして壁を突き破るのか教えてください。
また、100にしても壁を突き破らない方法を教えてください。


369 名前:デフォルトの名無しさん [2009/10/26(月) 21:54:15 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10021.txt
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008
 [3.3] 言語:C
[4] 期限:2009年10月28日
[5] その他の制限:特に無いです。

よろしくお願いします。

370 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 21:58:38 ]
>>347->>348
ありがとうございました!!!!!!



371 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:37:06 ]
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ニュートン法を用いて三次方程式の解を求める。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 2009/10/28
[5] その他の制限:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10022.txt
どこが悪いのかわかりません…。
ググりましたが自分の考えたアルゴリズムを尊重したいので、参考になりませんでした。

372 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:47:56 ]
>>371
なんでa,b,c,d,x1,y1を整数にするの?浮動小数点数でいいじゃん

373 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:53:11 ]
>>371
ニュートン法はお前の考えたアルゴリズムじゃねえだろw

374 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:00:51 ]
ワシが育てた

375 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 00:32:40 ]
>>359
すいませんが、教えてもらってないので何とも言えません(´・ω・`)

>>360
ありがとうございます。助かりました。
(2)に関しては教授にきいてみます

376 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 02:38:37 ]
>>358,375

#include <stdio.h>
#include <math.h>

int main(void){
  int n;
  double d = 0, sum = 3;
  
  for(n = 0; (sum / n - d) > 0.01; n++) {
    if(n & 1) d -= 4.0 / (n * 2 + 1);
    else d += 4.0 / (n * 2 + 1);
    sum += d;
    printf("%d 回目 , 平均 = %f\n",n,sum/n);
  }
  
  return 0;
}

377 名前:デフォルトの名無しさん [2009/10/27(火) 02:39:56 ]
[1] 授業単元:数値計算演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10023.c
上のソースコードのうち、行列計算を行うmatmul_blockが正しい結果を返しません
どこが間違っているのかご指摘お願いします
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2009年10月27日19時まで

378 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:36:11 ]
>>371
アルゴリズムはあっていると思います。 >>372 の指摘のとおり、 a, b, c, x1, y1 を double にするとうまくいきます。
じゃあ、なにがまちがっているかというと、私にもわかんないんですが。

379 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:40:18 ]
多次元配列はCではあまり使わないほうが良い。
ポインタと相性が合わないから

380 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:17:00 ]
>>377
68行目の第3引数cでとりあえず普通に警告@VC2008



381 名前:デフォルトの名無しさん [2009/10/27(火) 09:37:03 ]
>>379-380
計算に与えられる行列はこのような配列で表せということだったんで・・・
デバッガで追いかけてみても、matmul_cacheのcは想定された動きしてるんで問題はないんじゃないかと思うんですが

382 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 11:19:07 ]
いったん別の言語で書き直してみると良いかも
(GPCとかFPCとか)

383 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 12:18:21 ]
三角形と四角形がぶつかったときの当たり判定をとりたいのですがどうすればよいでしょうか


384 名前:デフォルトの名無しさん [2009/10/27(火) 12:34:38 ]
PostScriptをPDFに変換してからテキスト抽出すればいいと思うけど。

385 名前:デフォルトの名無しさん [2009/10/27(火) 12:37:29 ]
>>383
BeginPath(hdc);
Polyline(hdc, ..., 3);
EndPath(hdc);
hRgn1 = PathToRegion(hdc);

BeginPath(hdc);
Polyline(hdc, ..., 4);
EndPath(hdc);
hRgn2 = PathToRegion(hdc);

hRgn = CreateRectRgn(0, 0, 0, 0);
if (CombineRgn(hRgn, hRgn1, hRgn2, RGN_AND) == NULLREGION) {
...
} else {
...
}


386 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 12:43:19 ]
>>385
せっかく書いていただいたのにすみません
全て計算で求めなくてはいけないので関数は使用できないんです…

387 名前:デフォルトの名無しさん [2009/10/27(火) 13:10:14 ]
>>386
後出しじゃ判らんだろ。
前提として得られる情報がどれだけ有るか(x,y座標など)、を書くべし。

388 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 13:57:34 ]
詳細に書くと内外判定で三角形の中に四角形が入っているか(触れている場合も“入っている”と認識)どうかを検査したいのです
XY座標は毎回変動します。関数は使わずに計算のみで求めなくてはならないので困っています

389 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 14:43:41 ]
>>388
四角形の頂点が全て、三角形の内側にある事。
三角形の内側にある <--- 三辺をベクトルとみなして、各ベクトルから見て同じ側にある事。

390 名前:デフォルトの名無しさん [2009/10/27(火) 14:44:44 ]
四角形の辺と三角形の辺と交わっているか、
四角形の内部に三角形があるか、
三角形の内部に四角形があるかのどれかだろう。




391 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 14:54:35 ]
>>390
三角形と四角形とが、互いに離れている場合もあり得る。

392 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:18:06 ]
>>367
ありがとうございました!助かりました。

393 名前:デフォルトの名無しさん [2009/10/27(火) 15:20:18 ]
線分の当たり判定
totoki.my.land.to/pgm/001.html
三角形、多角形による包含判定
www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Hougan.htm

394 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:21:48 ]
>>389
完全に三角形のなかに含まれている場合はそれで良いのですが一部分でも触れている場合値を返すようにしたいのです
四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます

395 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:24:23 ]
繰り返しますが、関数は使わずに計算のみで求めなくてはならないので困っています

396 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:28:40 ]
[1] 授業単元:卒業研究
[2] 問題文(含コード&リンク):白黒濃淡画像[0-255]をカラー画像に変換
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語:C
[4] 期限: ([2010年1月10日24:00まで])
[5]その他の制限:
・色をユーザーから指定することはできない。
・画像はできればppm形式

様々な本や書類に目を通し、ネットを用いて一通り調べたつもりですが、一向に見つかりません。
難題だとは思います。最低限情報のある場所だけでも教えてもらえれば幸いです。

どうか御願い致します。

397 名前:デフォルトの名無しさん [2009/10/27(火) 15:29:06 ]
>>395
自分で作った関数もダメですか?

398 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:34:08 ]
>>397
それは大丈夫です

399 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:06:23 ]
入力ファイルからデータを読み込みロジック部分を関数化し、
qsort関数以外を使用して番号順にソートしたいのですが何かいい方法を教えてください。

読み込んだデータの例)
F016   C002
C002   C015
H001   F016
C015   H001
H009   H009


左のデータをソートし、右のように並び替えたいです。



400 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:09:04 ]
sort関数



401 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:43:57 ]
>396
通常は原理的に不可能です。
なぜなら、カラー画像は一般的に3つの独立したベクトルが張る色空間で表現されます。
ここで、色空間をRGB、濃淡をGrayとすると、明らかにベクトルが足りないので、色空間を変換できません。
よって、GrayからRGBへの色空間の変更ができないので、濃淡画像をカラー画像に変換することは*通常*できないことが示された。

疑似カラー画像に変換したり、ユーザか適当に色を配置してそれを元にカラー画像にすることは既に研究されています。
グレースケール画像に色差情報をこっそり埋め込んだり埋め込まなかったりって、最近僕が研究したんだけど。

402 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:51:38 ]
>>399
すきなソートアルゴリズムを関数化すればいいだけじゃね?

403 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 17:25:05 ]
>>394
> 四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます
四角形の頂点が全て内側or三角形の辺上、という前提で、↑ってどんな状況だろう?
まさか3次元以上?
あと、課題だったらテンプレに沿って、課題文をそのまま載せて欲しいんだが。

404 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:03:04 ]
3角形の中に四角形の点が1つ以上あれば、でよくね

405 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:04:09 ]
ああだめか。
結局交点も必要か

406 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:54:32 ]
何気に難しいな

407 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:02:32 ]
四角形のいずれの頂点も三角形の外側にあり、かつ、交点がない
以外は全部触れてるんじゃないの

408 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:23:11 ]
四角形に4点だけで判定すると三角形の先っちょが刺さってる状態だと触れていると判定されないんだな

409 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:44:18 ]
完全に数学の話題也
三角形の一点が原点になるように平行移動
三角形の原点を含む一辺がx軸になるように回転変換
原点を含みx軸と一致しない辺のy軸へ正射影
原点を含む2つの辺の長さが一致するように、y軸方向もしくは
x軸方向へのスカラー変換
これを行い三角形を直角二等辺三角形に変換して考える。
四角形に対しても同じ操作を行う。(四角形は四角形に移る)
交点を持つ条件は四角形の2つの頂点を結ぶ6個の直線が
x軸、y軸、直線x+y=1と交わる点の座標の値でわかる。

410 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:05:23 ]
>>409
よくわからないが、それは速いのか?



411 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:07:42 ]
>>410
とりあえず、見るからに誤差が大きそう

412 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:30:49 ]
こういう話は数学に詳しくないと難しいな

413 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:33:16 ]
離散数学しかやってないからな…

414 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:48:33 ]
>>401

>>396です
丁寧にお答えいただきありがとうございます。
ユーザーから色は指定できないので、とりあえず疑似カラーについて調べてみたのですが、いまいちよくわかりませんでした。
何か参考になる文献やサイトがあれば教えていただきたいです。

415 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:27:07 ]
>414
・疑似カラー化について
0710g36やnakatani1.pdfをクエリにして検索する

・ユーザ指定色について
colorization-siggraph04をクエリにして検索する

・色差情報の埋め込みについて
色差情報 埋めこみ カラー 復元をクエリにして検索する

ちなみに僕がやったのは、3つ目の色差情報を埋め込む方法ね
あとは自分で適当な単語を選べば見付かると思う、CiNiiとかでね

416 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:32:17 ]
>>407,408

>>389では「四角形の頂点が全て、三角形の内側にある事」が判定条件。


417 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:44:29 ]
>>416
意図が見えん。

418 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:47:28 ]
>>415
わざわざURLまで貼っていただきありがとうございます。
明日URLを参考にしてプログラムを作ってみたいと思います。

419 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 22:56:02 ]
>>383
イメージはこれでOK?
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10024.zip

420 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:06:39 ]
>>408
これで、どうだろ。
三角形の頂点が全て、四角形の外にある。 and
四角形の頂点が全て、三角形の外にある。




421 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:20:56 ]
>>419
左側のNGをOKにしたらイメージ通りです

422 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:26:40 ]
[1] 授業単元: c言語
[2] 問題文
課題1 整数 n を入力すると n から1 までを出力する
プログラムを作成せよ。
課題2 整数 n を入力すると1からn まで出力する。
ただし、3の倍数か、5の倍数の時には数字の右側に* と表示すること。
プログラムを作成せよ。
課題3 整数 n を入力すると1 から n までの間の、
3か5いずれかの倍数の個数を数えて表示するプログラムを作成せよ。
[3.1] OS: Windows
[4] 期限: 2009年10月29日まで
よろしくお願いします!!


423 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:27:45 ]
それくらい自分でやれよ
どこが出来ないんだよ

424 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:29:09 ]
>>420
2sen.dip.jp/cgi-bin/upgun/up1/source/up34168.gif

425 名前:デフォルトの名無しさん [2009/10/28(水) 01:50:05 ]
>>422
同じ大学キタ――(゚∀゚)――!!

#include <stdio.h>
int main()

スタートでお願いしたほうがいいよ

426 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 02:11:19 ]
>>422
/* 課題1 */
#include <stdio.h>
int main() {
int n;
printf("整数を入力 > ");
scanf("%d", &n);
while (n > 0) {
printf("%d\n", n);
n--;
}
return 0;
}


427 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 02:13:06 ]
>>422
/* 課題2 */
#include <stdio.h>
int main() {
int n, i;
printf("整数を入力 > ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("%d", i);
if ((i % 3 == 0) || (i % 5 == 0))
printf("*");
printf("\n");
}
return 0;
}


428 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 02:13:45 ]
>>422って大学なんだ…

429 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 02:14:23 ]
>>422
/* 課題3 */
#include <stdio.h>
int main() {
int n, i;
printf("整数を入力 > ");
scanf("%d", &n);
i = 0;
while (n > 0) {
if ((n % 3 == 0) || (n % 5 == 0))
i++;
n--;
}
printf("3か5の倍数の個数 = %d\n", i);
return 0;
}


430 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 03:23:32 ]
>>428
後期授業の出だしならこんなもんだろ。



431 名前:デフォルトの名無しさん [2009/10/28(水) 10:54:18 ]
エクセルのマクロの問題ってここで質問しても無駄ですか??

駄目ならどこで質問したらいいですか?

432 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 11:31:34 ]
Excel VBA質問スレ Part13
pc12.2ch.net/test/read.cgi/tech/1254281104/

433 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 11:45:45 ]
>>428
大学に通ったことの無いお前じゃ、大学でどんな授業が行われているか知らんのだろうね・・・
あと、何もC言語は専門分野の学生しか受けない授業でもないから。

434 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 16:57:45 ]
>>383
四角形は三角形2つに分割出来るので三角形と三角形の衝突判定を作ればいい
2つの三角形のそれぞれの辺のベクトル方向の1次元に全ての頂点を射影して
分離軸が1本でも引けたら衝突してない。引けなかったら衝突してる。

435 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 17:30:35 ]
>>433
大学生ですが

436 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 18:24:53 ]
>>433
一般学生に C を教えるのは大変でしょうね。当時は pascal が使われていましたが、今はなんでしょうか?

437 名前:デフォルトの名無しさん [2009/10/28(水) 18:54:36 ]
普通科の高校でC言語からやるか?

そしたら大学で基本中の基本からやるにきまってるだろ

438 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 19:08:39 ]
いまだと文系のパンキョーでもCの講義あったりするんかね

439 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 19:09:24 ]
時々お世話になるFラン大学生だけどハローワールドとかからやったよ
1単元90分×15コマで3単元に渡ってやって

四則演算プラスアルファ
入出力:printf scanf
制御文:if switch for do while
配列
ファイル入出力:fopen fclose fprintf fscanf
乱数:rand() srand()
自作関数

くらいやった

440 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 19:09:38 ]
最近の高校って数学でプログラム習うんじゃないの?



441 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 19:18:38 ]
それはエクセルとかじゃね?
工業高校出身だけどBasicから始まってC言語に行ってたな。
大学でもCから教え始めるから内容かぶって単位余裕でした、みたいな感じで萎えた。

442 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 21:37:31 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10025.txt
「スコアー,ステージナンバー,名前」が入っているファイルがあるとする。

降順にソート済みのスコアーデータのファイルから、上位10件を配列に読み込み、
新たに11件目のスコアーデータを入力後、スコアーの大きい順に並び替えを行い、
上位10件のデータを再度書き込むプログラムを作成せよ

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C言語
[4] 期限: 特にありません
[5] その他の制限:特にありません


宜しくお願い致します。

443 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 21:49:14 ]
出力結果をコピーする方法って無いですか?

444 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 21:56:08 ]
>>443
まうすでえらぶ

445 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 21:57:25 ]
キーボードのプリントスクリーンでクリップボードにコピーされるよ!

446 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 22:06:01 ]
リダイレクトすれば?

447 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 01:10:57 ]
>>443
Windows7なら普通にコピペ出来る!買うんだ。

448 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 04:30:25 ]
>>447
Meもできるからオススメ

449 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 11:51:37 ]
[1] 授業単元:C++実習2
[2] 問題文(含コード&リンク):
-関数テンプレート-
配列へのポインタと要素数を渡すと昇順にソートする関数を作成せよ。
但し,関数テンプレートにより作成すること。想定する配列の型は文字列以外とする。
ソートのアルゴリズムはバブルソート(単純交換法)とする。また,関数をテストする適切なmain関数も作成し提出すること。
関数名前名は b_sort とし,第1引数は配列へのポインタ, 第2引数はint型で配列の要素数, 戻値は無しとする。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C++
[4] 期限:[2009年11月1日23:00(日)まで]
よろしくお願いします。

450 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 14:51:32 ]
>>449
#include <iostream>
using namespace std;
template <typename T> void b_sort(T a[], int n)
{
for (int i = 0; i < n - 1; ++i) {
for (int j = n - 1; j > i; --j) {
if (a[j - 1] > a[j]) {
T temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp;
}
}
}
}

int main()
{
int a[] = { 3, 8, 1, -1, 9, 8, 7 };
double b[] = { 3.09, 2.1, -9.27, 8.0, 3.11, -6.5 };
b_sort(a, 7);
for (int i = 0; i < 7; ++i) cout << a[i] << ' '; cout << endl;
b_sort(b, 6);
for (int i = 0; i < 6; ++i) cout << b[i] << ' '; cout << endl;
return 0;
}



451 名前:デフォルトの名無しさん [2009/10/29(木) 15:55:37 ]
www.dotup.org/uploda/www.dotup.org315213.docx.html

【質問テンプレ】
[1] 授業単元:計算機実習応用
[2] 問題文(含コード&リンク):
   www.dotup.org/uploda/www.dotup.org315213.docx.html
[3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョンVC++
 [3.3] 言語: (C
[4] 期限: ([2009年10月30日10:00まで]
[5] その他の制限:

明日の1限の授業中に出される課題です。
授業時間内に提出すれば評価が高くなるのでお願いします。


452 名前:デフォルトの名無しさん [2009/10/29(木) 16:28:33 ]
>>451
お断りします。

453 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 16:41:00 ]
>>442
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10028.txt

454 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 19:46:40 ]
>>451
どうやって問題文を読めばいいのかわかりません。

455 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 20:06:26 ]
新井さん?

456 名前:378 mailto:sage [2009/10/29(木) 21:23:19 ]
>>371
ちょっとみなおしてみました。
問題は x1, y1 を整数で宣言したことでしょうね。

457 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 22:05:13 ]
>>451
問1
return x*x+y*y
c = function1(a, b);
printf("%d\n", c);

問2
#include<stdio.h>
#include<math.h>

void wasasekisho(double x, double y, double* pwa, double* psa, double* pseki, double* psho);

int main(){
double a, b;
double lpwa, lpsa, lpseki, lpsho;
printf("a...");
scanf("%lf", &a);
printf("b...");
scanf("%lf", &b);
wasasekisho(a, b, &lpwa ,&lpsa, &lpseki, &lpsho);
printf("wa...%.0lf, sa...%.0lf, seki...%.0lf, sho...%.0lf",lpwa ,lpsa, lpseki, floor(lpsho));
}

void wasasekisho(double x, double y, double* pwa, double* psa, double* pseki, double* psho)
{
*pwa = x+ y;
*psa = x - y;
*pseki = x * y;
*psho = x / y;
}


458 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 22:37:17 ]
問3
どういう確率分布にしたがっているのかがわからん。本来解けないはず?。
たぶんそれぞれ独立な事象で確率1/5だとして、期待値==平均(kekka)になるのかなとおもったが、

#include <stdio.h>
#include <math.h>
double heikin(int n, double x[]){
int i;
double sum;
sum=0.0;
for(i=1;i<=n;i++){
sum += x[i-1];
};
return sum/n;
}
int main(){
static double data[]={3.1, 5.8, 4.1, 1.0, 8.3};
double kekka=0.0, bunsan = 0.0;
kekka=heikin(5,data);
bunsan= pow(0.2, 2) *(kekka * 5.0) - pow(kekka, 2);

printf("データの平均は %lf\n",kekka);
printf("データの分散は %lf\n",bunsan);
return 0;
}
と書くと分散が負になってしまいましたとさw
問4
関数の中身を定義する前に,先に関数の引数の型および返り値の型だけをあらかじめ宣言しておくこと。

459 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 22:58:10 ]
>>444->>448
どうもありがとうございました!!!

460 名前:458 mailto:sage [2009/10/29(木) 23:11:24 ]
>>451

#include <stdio.h>
#include <math.h>
double heikin(int n, double x[]){
int i;
double sum;
sum=0.0;
for(i=1;i<=n;i++){
sum += x[i-1];
};
return sum/n;
}
int main(){
static double data[]={3.1, 5.8, 4.1, 1.0, 8.3};
double kekka=0.0, bunsan = 0.0;
double vx=0.0;
kekka=heikin(5,data);
for(int i = 0; i < 5; i++)
vx += pow(data[i], 2)*0.2;
bunsan = vx - pow(kekka, 2);

printf("データの平均は %lf\n",kekka);
printf("データの分散は %lf\n",bunsan);
return 0;
}

なんか例と値違うけど…さっきとちがって式はあってるはず



461 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 22:15:43 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10031.txt

問題1:整数表記を <integer>::= <digit> {<digit>|'_'}*に書き換える。
正の整数をdigitだけではなく、'_'もトークンの一部として判別させてやるようにプログラムを書きかえる
例えば、10_23と仮に有った場合は10=整数値、_=識別子、23=整数値という風に判別されるのではなく10_23=1023=整数値となるようにしなさい。

問題2:以下のようなトークンも判別できるようにしてみる。
句切り文字:'(',
句切り文字:'(',
句切り文字:';',
演算子:'='

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C言語
[4] 期限: 2009年11月5日
[5] その他の制限: とくにないです。よろしくお願いします。

462 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 18:45:36 ]
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):キューをC言語で作成する
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 2009/11/2
[5] その他の制限:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10032.txt

463 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 18:49:04 ]
>>462ですが@とAの部分を改変してください。よろしくお願いします。

464 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 21:34:41 ]
>462

境界条件が曖昧なので適当にやらせてもらった。
dequeueできないときは0が返るようにしたけど、よかったのか?

標準Cにあわないところは修正しておいた。VSにしたって、void main()はどうかと思ったので。

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

465 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 21:50:06 ]
>461
問題1:整数表記を <integer>::= <digit> {<digit>|'_'}*に書き換える。
問題の意味が全くわからない。問題文はこれで全部なの?

#例えば、10_23と仮に有った場合は10=整数値、_=識別子、23=整数値という風に判別されるのではなく10_23=1023=整数値となるようにしなさい。
というの10_23を引数に与えたらどうなればよい?

リンク先のコードに食わせると下みたいになった。

$ ./main 10_23
整数定数: 10 (2文字)
識別子: _23 (3文字)
トークン数は2個!


466 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 22:18:04 ]
>>465
それBNF表記っていって

たとえば
10_23_23=102323
10_______23=1023
になるようにしろってことだよ。


467 名前:466 mailto:sage [2009/10/31(土) 22:24:07 ]
BNF記法だった.
<変数>…<変数>で変数を表す。
{変数}…{変数}の変数を省略するか、一回以上繰り返し用いることを表す。
|…または を表す
::=…左辺の変数が、右辺で定義されることを表す。


あ、おれ解けないんでw


468 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 01:30:56 ]
>461

問1だけ

ほとんどテストしていないのであしからず
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10035.txt

469 名前:464 mailto:sage [2009/11/01(日) 01:33:21 ]
>462

ごめ。違うのあげてた。

ファイル消えているのですぐにはできない。
思い出しながら書いてみる。

470 名前:464 mailto:sage [2009/11/01(日) 01:43:01 ]
>462

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



471 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 20:56:25 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク):メニューを表示し選択された処理を行なう。各機能ごとに関数にし,各関数へのポインタは配列に格納しておきメニュー選択に応じて動的に呼び出す。
実行例:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10037.txt


472 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 20:58:45 ]
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限: 2009年11月3日

どなたか出来る方がいましたらお願い致します。

473 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 21:06:48 ]
>>450
遅れましたが回答ありがとうございました

474 名前: ◆DfRWmhgSjg [2009/11/01(日) 21:28:36 ]
[1] 授業単元:OS入門
[2] 問題文(含コード&リンク):
マルチプロセスを利用しfork(),セマフォ,メッセージをすべて使用したシステムの開発,結果を以下の項目にまとめ報告
1. システムの要求仕様
3. 上記プログラムの簡単な解説,特に fork(),メッセージ,セマフォの周辺について
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: [2009年11月5日08:00まで]
[5] その他の制限:

よろしくお願いします

475 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 21:30:13 ]
>>474
設計と要求仕様までこっちで定義しろって馬鹿だろw

476 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 21:48:32 ]
>>471>>472
VS2008環境で作った
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10039.txt
#include <String>は消しといてね

477 名前:474 [2009/11/01(日) 21:54:55 ]
>>475
私もそう思いましたが、
「本当に簡単なものでいいから作ってください。こういうにはあなたたちのインスピレーションしだいですので」
といわれてしまい・・・。

478 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 21:55:48 ]
>>477
いや、教授とか講師とかがじゃなくってお前がねーよwww

479 名前:474 [2009/11/01(日) 22:01:25 ]
すみません。
要求仕様など考えてから出直してきます。

480 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 22:58:19 ]
>>471-472
「関数へのポインタを配列に」いれろとのことですので、そのようにしました。
codepad.org/pe70YBZf



481 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:16:02 ]
[1]C言語初級
[2] 次のプログラムから仕様書を起こして、全く異なるアルゴリズム
で同じ処理をするものに書き換えよ
codepad.org/FjM5LBs9
[3] Windows XP/Visual studio 2005/C
[4] 11/10迄

482 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:23:47 ]
ああwww
関数のポインタとか見逃してた。
ごめん

483 名前:471 mailto:sage [2009/11/02(月) 00:36:52 ]
>>480
ありがとうございます
しかしVS2008でエラーが出るのですがどうしたらよいでしょうか?

484 名前:474 [2009/11/02(月) 01:07:11 ]
<<474
<<479
入力されたメッセージ1文字をキューにいれるプログラム
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10041.txt
キューからメッセージを取り出し表示をするプログラム
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10042.txt
を参考にして送信用プログラムにfork()を付け加え文字を重複送信するようにするプログラム。
またセマフォを用いてアクセスを制限する。
理解が浅いため本当にこれでいいの不安なのですがよろしくお願いします。

485 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 03:03:19 ]
>>481
codepad.org/Ooo9fZ4r

3の倍数と3の付く数字を
10000*10000までの範囲で列挙する。

文字列型で10を出力すると
アスキーコードでは改行の意味に。
同等の処理は\nで行った。

各位の和が3の倍数であれば
その数は3の倍数であることを使い求めた。

486 名前:satoshi [2009/11/02(月) 03:04:56 ]
double型の引数を2つ持ち、aつの引数の積の絶対値を返す、
double型の戻値を持つ関数 absmul() を作成した上で、動作の
確認の出来るプログラムとして作成せよ。という問題と

標準入力からの入力に対して、アルファベットを全て空白文字
に変更して出力するプログラムを作成せよ。という問題がわかりません。

どなたかお願いします

487 名前:satoshi [2009/11/02(月) 03:06:50 ]
aつ が 2つの間違いです。

488 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 07:13:30 ]
>>483
エラーを全部貼ってください。

489 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 07:15:11 ]
>>486
>>1

490 名前:satoshi [2009/11/02(月) 11:45:59 ]
[1] プログラミング
[2] double型の引数を2つ持ち、2つの引数の積の絶対値を返す、
double型の戻値を持つ関数 absmul() を作成した上で、動作の
確認の出来るプログラムとして作成せよ。という問題と

標準入力からの入力に対して、アルファベットを全て空白文字
に変更して出力するプログラムを作成せよ
[3] 環境
 [3.1] OS: (Windowsxp)
 [3.2] コンパイラ名とバージョン:UNIX 2.1.4
 [3.3] 言語: (C言語)
[4] 期限: (11月3日 13時
[5] その他の制限: (特になし)



491 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:07:11 ]
>>490
#include<stdio.h>

double absmul(double a, double b){
short x=0x1234;
double c;
unsigned char *p, *q;

c=a*b;
p=(unsigned char*)&x;
q=(unsigned char*)&c;
if(*p==0x12) q[0]&=0x7f;
else q[sizeof(double)-1]&=(~0)^0x80;

return c;
}


int main(void){
double a=2.0, b=-3.0;

printf("%f\n", absmul(a, b));

return 0;
}

492 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:31:03 ]
>>490
#include<stdio.h>

int main(void)
{
int c, map[256];
unsigned char *p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

for(c=0;c<256;c++) map[c]=c;
for(;*p;p++) map[*p]=' ';

while((c=getchar())!=EOF)
{
putchar(map[c]);
}

return 0;
}

493 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:38:10 ]
アルゴリズムにsortというのがりますが、配列をsortするときにもとの配列番号が
何番に変わったか知る方法はありますか?ソートした配列を参考に別の配列も並び替えたいです。

494 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:44:27 ]
ソートする配列と同じ長さの配列用意して、ソートする前にそこへコピーしとけば良いじゃん
あとはその二つを比較するだけ

495 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:06:44 ]
>>493
構造体で例えば

sruct abc {
double a;
int n;
};

としといて、aにバラバラの値を入れ、nに連番を入れて置きます
その後構造体でqsort(比較基準はabc.a)を掛ければ、nに
どのようにバラバラになったか順列が入ります

496 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:20:40 ]
こんな感じ

struct abc {
double a;
int n;
};
int comp(const void *a, const void *b)
{
struct abc x = *(struct abc *)a, y = *(struct abc *)b;

return (x.a < y.a) ? -1 : (x.a > y.a) ? 1 : 0;
}
int main(void)
{
struct abc aa[10];
int i;

srand((unsigned)time(NULL));

for (i = 0; i < 10; i++) {
aa[i].a = rand();
aa[i].n = i;
}

qsort(aa, 10, sizeof(aa[0]), comp);

for (i = 0; i < 10; i++)
printf("%d ", aa[i].n);
putchar('\n');

return 0;
}

497 名前:デフォルトの名無しさん [2009/11/02(月) 13:38:02 ]
【問題】0から40までの数字で3のつく数字と3の倍数を表示するプログラムを作成せよ

お願いいたします。

498 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:39:43 ]
>>497
>>1

499 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:47:20 ]
>>497
#include <stdio.h>
int main(void)
{
printf("0 3 6 9 12 13 15 18 21 23 24 27 30 31 32 33 34 35 36 37 38 39");
return 0;
}

500 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:47:39 ]
もうネタとしか思えなくなってきた



501 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:50:08 ]
>>499
わろたw

502 名前:デフォルトの名無しさん [2009/11/02(月) 13:53:31 ]
>>497
#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char buf[32];
for(i = 0; i <= 40; i++) {
sprintf(buf, "%d", i);
if (i % 3 == 0 || strchr(buf, '3') != NULL) printf("%d ", i);
}
return 0;
}


503 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 15:10:59 ]
>>490
アルファベットとは何ぞやということになるな。

504 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 17:50:16 ]
ハングルはアルファベットなのか(字母と方塊字で扱いは違うのか?)なんてのは
さすがに考えないとして、ウムラウトやセディーユのついた文字はどうするのかね。

505 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 18:00:43 ]
isalphaで判定できるものでいいだろ、常識的に考えて

506 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 19:11:19 ]
>>483
VC++2008EE をインストールして確かめました。なるほどねえ、VC は構造体タグの name space は独立していないんですね。
codepad.org/nMou5Xbk

507 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 20:01:57 ]
[1] 授業単元: C++
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10044.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10045.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VS2008
 [3.3] 言語: C++
[4] 期限: 2009/11/07

問題が2つあります。それぞれ違うファイルにしてもらえたならば幸いです。
宜しくお願い致します。

508 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 23:25:57 ]
>508

コードは書いてやるから、仕様は自分でだせ。

509 名前:sage [2009/11/03(火) 01:38:41 ]
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10047.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
 [3.3] 言語: C++
[4] 期限: [2009年11月5日23:59まで]
[5] その他の制限:途中までのソースコードがありますので、そちらに追記お願いします。


510 名前:デフォルトの名無しさん [2009/11/03(火) 01:57:30 ]
[1] プログラミング入門
[2] 文字列sを逆に並べる関数reverse(s) を書け。
さらにこの関数を使って、入力を行ごとに反転させるプログラムを作成せよ。という問題です。
[3] 
[3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: [2009年11月3日12:00まで]
[5]if文 while文などを勉強中です。
初心者用のプログラムでお願いします。



511 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 06:49:25 ]
>>510
EUCに対応しているはず
codepad.org/zGzKjJfu

512 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 10:30:46 ]
>510

こんな感じでよいか?
ワイド文字は考慮していません。

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

513 名前:デフォルトの名無しさん [2009/11/03(火) 12:03:20 ]
あ」

514 名前:デフォルトの名無しさん [2009/11/03(火) 12:30:32 ]
[1] 授業単元: c言語プログラミング実習
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10051.txt

[3] 環境
 [3.1] OS: (Linux)
[4] 期限: (11/4)
[5] その他の制限: (大学1ねんで、まだc言語の授業は5回目です。)

わかりにくい質問で申し訳ありませんがよろしくお願いします。

515 名前:デフォルトの名無しさん [2009/11/03(火) 12:42:05 ]
[1] 授業単元: c言語プログラミング実習
[2] 問題文 

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10052.txt
[3] 環境
 [3.1] OS: (Linux)
[4] 期限: (11/4)
[5] その他の制限: (大学1ねんで、まだc言語の授業は5回目です。)

どうぞよろしくお願いいたします。

516 名前:デフォルトの名無しさん [2009/11/03(火) 12:47:24 ]
1] 授業単元: c言語プログラミング実習
[2] 問題文 
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10053.txt
[3] 環境
 [3.1] OS: (Linux)
[4] 期限: (11/4)
[5] その他の制限: (大学1ねんで、まだc言語の授業は5回目です。)


こちらもよろしくお願いいたします。

517 名前:デフォルトの名無しさん [2009/11/03(火) 12:50:55 ]
上の514,515,516はmewを使用して作成します。

518 名前:デフォルトの名無しさん [2009/11/03(火) 12:52:05 ]
間違えました、Emacsです

519 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 13:06:21 ]
Emacsってコンパイラついてたっけ・・・


520 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 14:29:18 ]
>>515
(1) (A)に同じ文を入れて考える
#include<stdio.h>
int main(void){
int i=0 j=0 k=0;
int n=0;
i=0;
while(i<100){
while(j<100){
while(k<100){
  n++;
(A)
k++;
}
(A)
j++;
}
(A)
i++;
}
printf("n=%d",n);
}



521 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 14:30:13 ]
>>515 (B)に同じ式を入れて考える
#include<stdio.h>
int main(void){
int i=0 j=0 k=0;
int n=0;
i=0;
while( (B) && (i<100){
while((B) &&(j<100)){
while((B) &&(k<100)){
  n++;
k++;
}
j++;
}
i++;
}
printf("n=%d",n);
}

522 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 14:31:11 ]
>>515
(3) (C)、(D)に適当な文を入れる
#include<stdio.h>
int main(void){
int i=0 j=0 k=0;
int n=0;
i=0;
while(i<100){
while(j<100){
while(k<100){
  n++;
(C)
k++;
}
j++;
}
i++;
}
(D)
printf("n=%d",n);
}

523 名前:510 [2009/11/03(火) 15:04:23 ]
>>511・511さん
遅れましたが回答ありがとうございました。

524 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:19:44 ]
>>516
#include <stdio.h>

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

scanf("%d", &n);

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

return 0 ;
}

525 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:36:15 ]
逆数を求めるプログラミングなんですが、どうしてもコンパイルできません。
間違いがあったらエロい人、、指摘してください。

#include <stdio.h>

main(){
int i;
float j = 1/i;
for(i = 1; ;i++){
printf("%f\n" , j);
}
return 0;
}

526 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:42:08 ]
509です。
sageをミスって申し訳ございませんでした。
どなたか、お願いできませんでしょうか?
よろしくお願いします。


527 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:47:03 ]
>>525
正常に動作しないだけで、コンパイルは通ると思うが。

528 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:48:56 ]
>>527
float j = 1/i; で未初期化の変数を参照がエラーか警告になるかも

529 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:51:46 ]
>>525
jを計算する場所が違う。
コンパイルができない、というのはエラーが出るのか警告が出るのか、
あるいは実行時エラーなのか、はっきりしてくれ。

530 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:52:23 ]
初期化に変数は使えないとか。



531 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:56:50 ]
>525

gccに食わせたけど、警告は出るけどコンパイルはできるよ。

たぶんやりたいことはこうじゃない?
#include <stdio.h>

int main(void)
{
int i;

for (i = 1; i < 10; i++) {
printf("%f\n" , 1.0 / i);
}

return 0;
}


532 名前:デフォルトの名無しさん [2009/11/03(火) 15:57:42 ]
[2]問題: 標準入力からの入力に対して、アルファベットを全て空白文字に変更して
出力するプログラムを作成せよ。という問題です。
[3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: [2009年11月4日9:00まで]
かなりの初心者です
codepad.org/nrbnRlD3
自分で作ってみたのですが、エラーが出ました。
何が足りないか、何が間違っているか改良をお願いします。




533 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:00:51 ]
>509

元のコードがでかいので、デバッガでコードを追いたかったのだが、
gcc + insightでは開こうとしたとたんに落ちてしまう。
実行自体はできるのだけれど。

#conio.hがあるとコンパイルできないのだが、使っているところがないので
削った。
もう少しおってみるかな。


534 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:05:16 ]
>>532
大文字

535 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:08:56 ]
大文字を小文字に修正しても希望の動作にはならないけどなw

536 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:09:53 ]
最初の while で標準入力食いつぶすしねw

537 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:17:35 ]
#include <stdio.h>
#include <ctype.h>
int main(){
int c;
while((c=getchar())!=EOF)putchar(isalpha(c)?' ':c);
return 0;}

538 名前:509 mailto:sage [2009/11/03(火) 16:21:37 ]
>533
すいません。
よろしくお願いします。



539 名前:533 mailto:sage [2009/11/03(火) 17:41:45 ]
>509

デバッガが使えないのでコードリーディングに手こずっている。
出題主、以下の情報ください。

1)BCalculationの仕様
コメント、mainでの使い方からして
入力"+ 6 3 " 戻り値9みたいな
ものを想定していた。でも動かしてみたらそうじゃないし、
どう動いて欲しいのかわからない。

どんな入力に対してどういう戻り値を期待している?

2)MtoBの仕様
以下のようなものを想像しているが、あっているか?
入力 "6 + 3 * 3"
戻り値 "+ 6 * 3 3" (BCalculationのinputになれるもの)


540 名前:506 mailto:sage [2009/11/03(火) 18:27:31 ]
>>539
つ「逆ポーランド記法」
6 3 +
6 3 3 * +

デバッガは無料で手に入る VC++2008EE IDE はいかが?



541 名前:509 mailto:sage [2009/11/03(火) 18:29:38 ]
>533
返答が遅くなり、すいません。
ご迷惑をおかけします。

1)BCalculationの仕様
回答の所で使用していますので、お考えであっていると思います。
ただ、"63+" の "9"と思っていました。
的外れな回答でしたら申し訳ありません。

2)MtoBの仕様
その通りです。
こちらも、"633*+"と思っていました。

実は、最初は”回答”の上に
printf("変換:%s\n",str.str);
を入れていました。
しかし、課題内容にはないため外しました。
変換後の結果が出るものです。


542 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 18:30:12 ]
>>514
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10054.txt

543 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 18:52:20 ]
一回目はちゃんと漢字じゃないとw

544 名前:533 = 539 mailto:sage [2009/11/03(火) 19:35:51 ]
>509 >541, >540

逆ポとLispを勘違いしてたみたい。
だけど6 3 +も + 6 3両方試したけど
元のコードでは期待通り動いていないみたいだよ。

とりあえず逆ポの関数書いてみた。命名則は自分流なので
reversePolishNotationが元のBCalculationと思ってください。

エラーは適当にアボートしちゃっていますが、動作は期待通りでしょうか?

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

545 名前:509 mailto:sage [2009/11/03(火) 20:30:17 ]
>533=539=544
返事が遅くなり申し訳ございません。

残念ながら動作しませんでした。
コンパイルは出来たでですが、実行すると
何も入力する前に、
「問題が発生したため、muda.exe を終了します。 ご不便をおかけして申し訳ありません。」
と出て終了してしまいました。

新しくコードを書いて頂いたようで、申し訳ございません。
しかし、一度前のものを提出し追加課題として「エラーを検知させよ」
だった為、条件として
[5] その他の制限:途中までのソースコードがありますので、そちらに追記お願いします。
と記載しておりました。
できましたら、追記でお願いしたいのですが無理でしょうか?

宿題を解いて頂いているのに、文句言って本当にすいません。


546 名前:540 mailto:sage [2009/11/03(火) 20:56:58 ]
>>545
ソースをみる限り第一引数に逆ポーランド式を指定しないとダメです。
たとえば、
foo.exe "1 1 +"
とします。

>>544
おかしいですね。私のところでは、BCalculation はうまく動いていますが。(bcc32/gcc/VC++2008)


547 名前:509 mailto:sage [2009/11/03(火) 21:30:57 ]
>540
逆ポーランド部分は出来ていると、自分の中では信じきっていました・・・
そうでしたか、もう一度考えてみます。


548 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:54:18 ]
>>547
代数式(中置式)→逆ポーランド式(後置式)の変換は、定番の方法がありまして、
コンパイラ(とか数理言語)の教科書をみればたいてい説明されています。
ソースを得たいのであれば、
www.amazon.co.jp/dp/4874084141
にそのものがあります。ダウンロードは
oku.edu.mie-u.ac.jp/~okumura/algo/archive/
からできます。これを気に書き直されるのも一興かと思います。

549 名前:548 mailto:sage [2009/11/03(火) 21:57:12 ]
×気に
○機に


550 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:58:19 ]
>546 >547
mainを下記のように書き直して試してみた。

int main(void)
{
struct NewStr str;
printf("式を入力\n");

gets(str.str);
printf("\n");

// str = MtoB(str.str);

printf("回答:%4.2lf\n\n",BCalculation(str.str));



return 0;
}

例えば"6 3 +"を入力していて解答6となっておかしい、と思っていた。
コードを追っかけてみて"6 3 + "(最後にスペースが入っている)と入力すると上手く行くことがわかった。

これは仕様制限ということでよいのですよね?

そういう前提でもう一度見てみる。
確認するけど、基本的に正常系の動作はしていて、
>演算不可能な場合は、エラー表示させること。
>例:6+3**  9//  9-5)  8+(  
という部分の実装が漏れている、ということなのかな。



551 名前:546=548 mailto:sage [2009/11/03(火) 22:12:06 ]
>>550
>>509 の代数式→逆ポ変換 (MtoB()) は力作でして、(多分)うまく動いているのですが、
括弧の処理をとくにリカーシブに書いているところもあり、私もなかなか把握しきれないでいます。異常系の切り分けも難しい。
いずれ、どうあがいても、リカーシブに書かざるを得ないとは思いますが、ここで、心機一転、定石をお勧めしたしだいです。
MtoB() を自力でここまで書いたのであれば、尊敬に値します。少なくとも私にはできません。

552 名前:509 mailto:sage [2009/11/03(火) 22:34:48 ]
>550
はい、その通りです。
>演算不可能な場合は、エラー表示させること。
>例:6+3**  9//  9-5)  8+( 
の部分が抜けています。

>551
しかし、一度提出してる手前、再度初めからとなると
このエラーを表示させる課題ごと意味が無くなってしいます。

この課題に取り掛かって、1ヶ月ほど助言を受けたり、書いては
書き直ししているうちに段々訳がが分からなくなってきて気が付くと
この形でした。


553 名前:551 mailto:sage [2009/11/03(火) 22:44:07 ]
>>552
なるほど。
定石をお勧めしたい気持ちはやまやまなのですけれども。
ちょっと説明していただけますか?たとえば、
char stack[STR_MAX], str[STR_MAX], tempstr[STR_MAX*2];
int newstr_pos=0, i, flg=0, parentheses_flg=0, str_pos=0, minus_flg=0, tempstr_pos=0, stack_pos=-1;
の各バッファ、各 pos の意味合いとか、どうしてこういう仕掛けを作ったかとか。

554 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 00:51:43 ]
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10056.txt
[3] 環境
 [3.1] OS:Windows/vista
 [3.2] コンパイラ名とバージョン: Visual C++ 2008
 [3.3] 言語: C++
[4] 期限: 2009年11月6日
[5] その他の制限: 問題を乗せているテキストに進め方があるのでそれに沿ってもらえれば。

よろしくお願いします。


555 名前:509, 553 mailto:sage [2009/11/04(水) 01:21:51 ]
こっちで持っている解答を示しておきます。
codepad.org/ziaFqKsi
定石の代数式→逆ポーランド変換を行いつつ、同時に各項の値を計算させています。

556 名前:509 mailto:sage [2009/11/04(水) 02:12:30 ]
>551
申し訳ありません。逆ポーランドの所が出来ていなかったので
自分で考えると言った手前考えていましたらいつの間にか
こんな時間になっており、質問が来ているのに気が付きませんでした。
533さんに書いて頂いたコードと548さんに紹介して頂いたサイトのコードを
参考に逆ポーランドの部分も間違いが直す事ができ、課題も完了する事が
出来ました。

皆様本当にありがとうございました。


557 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 02:23:14 ]
処理時間を計る関数の中で、最も最小単位まで計れる関数は何でしょうか?
教えてください

558 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 02:47:09 ]
QueryPerformanceCounter

559 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 11:42:51 ]
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):ユークリッド互除法を使って二つの数字の最大公約数を求める。ただし、マイナスの数も求められるようにする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: Gcc3.4(MinGW)
 [3.3] 言語: C言語
[4] 期限: 今日中
[5] その他の制限: 特になし

よろしくお願いいたします。


560 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 13:06:15 ]
>>559
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10058.txt



561 名前:デフォルトの名無しさん [2009/11/04(水) 20:08:57 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10060.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 11/13 16:00まで
[5] その他の制限: 特になし

よろしくお願いします。

562 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:30:08 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10061.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 11/6 12:00まで
[5] その他の制限: 特になし
おねがいします

563 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 23:32:32 ]
[1] 授業単元:ソフトウェア工学
[2] 問題文(含コード&リンク):
(π/4) = tan^-1(1) = 1 - (1/3) + (1/5) - … + (-1)^k * (1/(2k+1)) + …
の公式を用いて、第n項までの多項式近似により円周率を求め、その誤差と計算時間を測定するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:オールインワンエクリプス
 [3.3] 言語:C
[4] 期限:できれば明日までに
[5] その他の制限:特になし

564 名前:デフォルトの名無しさん [2009/11/05(木) 00:29:07 ]
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文
問題文1
整数 n を入力すると 'a' から n個目までのアルファベットを全て表示するプログラムを作成せよ。 (例:n=6 の時 abcdefを表示)

問題文2
整数 n を入力すると1からn までの間で 3の倍数か、
5の倍数のどちらかであるような数の和を表示するプログラムを作れ。
(例:n=10 の時 3+5+6+9+10=33)

問題文3
次のプログラムの (a)-(j)の部分をfor 文を使って書き直せ。 #include<stdio.h> int main() { int a[10]; double sum,ave; sum=0; a[0]=1; a[1]=5; a[2]=7; a[3]=2; a[4]=4; a[5]=1; a[6]=9; a[7]=4; a[8]=20; a[9]=5; sum=sum+a[0];
/* (a) ここ */ sum=sum+a[1]; /* (b) ここ */ sum=sum+a[2]; /* (c) ここ */ sum=sum+a[3]; /* (d) ここ */ sum=sum+a[4]; /* (e) ここ */ sum=sum+a[5]; /* (f) ここ */ sum=sum+a[6]; /* (g) ここ */ sum=sum+a[7];
/* (h) ここ */ sum=sum+a[8]; /* (i) ここ */ sum=sum+a[9]; /* (j) ここ */ ave=sum/10; printf("総和は %d です。平均は %d です。\n",sum, ave); }

問題文4
整数を5個入力すると、まずそのまま表示し、次に逆順で表示するプログラムを作れ。
実行例: 数を入力して下さい: 3 数を入力して下さい: 7 数を入力して下さい: 1 数を入力して下さい: 2 数を入力して下さい: 5
そのまま表示 3 7 1 2 5 逆順に表示 5 2 1 7 3 プログラムのテキストをコピーして下のテキスト入力フィールドへ出力結果と共に貼り付けて提出すること。

[3] 環境
 [3.1] OS: XP
 [3.3] 言語: C++
[4] 期限: 明日まで
[5] その他の制限
#include <stdio.h>
int main()
スタートでお願いします。

565 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 00:48:10 ]
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10062.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月05日18:00まで
[5] その他の制限: 問題文どおりです

566 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 00:53:39 ]
[1]授業単元 C言語実習
[2]コマンドラインで指定された英数字と空白、タブ、改行記号
のみから構成されるテキストファイルに含まれる単語の頻度を
アルファベット順に出力するプログラム。
単語とは英数字のみで構成されているものを指す。
一つの単語が1回現れた時は部分単語すべてが現れたものとする。
部分単語とは、その単語の連続する部分文字列のことである。
授業で述べた多重ハッシュテーブルを利用すること。
行の長さ、行の総数、単語の長さに制限は無いが、頻度は
32bit整数(符号付き)で正の範囲に表せるものとする。
[3] Linux/gcc 4.0/C言語
[4] 今週の金曜日夕方18:00迄



567 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:03:37 ]
先ず答える前に問題の水準を誰かが大まかに分類しそれぞれの
水準別に解答貼付け専用スレを立ててそこに誘導したほうが
良くね?高校生レベルの問題と大学院修士課程レベルの問題とかが
混在したら回答者の精神衛生に問題が生じる可能性があるから

568 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:05:55 ]
>>563
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10063.txt

569 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:33:33 ]
[1] 授業単元:ソフトウェア工学
[2] 問題文(含コード&リンク):
台数近似を用いて、分割数nに対する I = ∫[1,2]ln(x)dx の値を求めるプログラムを作成し、誤差を求めよ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:オールインワンエクリプス
 [3.3] 言語:C
[4] 期限:今日中
[5] その他の制限:特になし

570 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:42:04 ]
やれるやつがやる
分類の必要なし
各人のスキルは違う
高校生が大学院生よりプログラムできることはある



571 名前:566 mailto:sage [2009/11/05(木) 02:02:07 ]
条件が一つ抜けてました。
《追加条件》
ファイルを読み込んでいる間に、記憶している単語別頻度の順位に変更が発生したら、その時点でアルファベット順に都度出力すること

572 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 02:04:18 ]
授業で述べた多重ハッシュテーブル

これわからん

573 名前:566 mailto:sage [2009/11/05(木) 02:16:21 ]
>>572
お答え下さいましてとりあえずありがとうございます。

わたしも良くわからないんですが、ハッシュテーブルが
衝突だったら別のハッシュ関数でその下にテーブルを
作るとかかなんとかだったと記憶してますけど...
ノートには次のように写してます。(板書写しなんで
間違ってるかもです)
if( array[ hash1(string) ] = NIL )
array[ hash1(string) ] := string;
else if array[hash1(string)][ hash2(strin) ]=NIL
array[hash1(string)][hash2(string)]:=string;
else ........

574 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 05:28:40 ]
ch[n]がcharとしてpを素数として

ch[0] + p * ch[1] + p^2 * ch[2]  +  ・・・ + の上か下の何ビットかをハッシュにしたらいいのでは。

異なるハッシュがいくらでも作れる。

575 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 08:57:24 ]
>>565
ひでーやり方だなw

576 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:03:31 ]
なぜかヴァニラアイスのスタンド思い出した

577 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:34:47 ]
>>565
for(i=p; i<=q; i++) a[i] = b[j] < c[k] ? b[j++] : c[k++];

578 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:50:27 ]
>>564
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1132363616
配列は使わなくて良いのでしょうか。

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

579 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 10:42:21 ]
>>564
問題文1が間違っている。
'f' は 'a' から 5 個目だろ。


580 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 10:43:06 ]
'a'を1個目として数えてるんだろ



581 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 12:35:48 ]
>>562
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10065.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10066.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10067.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10068.c

582 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 14:34:01 ]
アルファベットって順序があるんだ・・

583 名前:デフォルトの名無しさん [2009/11/05(木) 16:43:05 ]
[1] 授業単元:ネットワークプログラミング
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10069.zip
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] c
[4] 期限: 11月6日まで

問題はreadme.txtの中に書いておきました
よろしくお願いします

584 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 16:58:20 ]
>>565
その埋めるところ以外ってまさかもとから問題として書かれてるわけじゃないよな?
565が自分で書いてみただけだよな?

585 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 17:52:41 ]
>>577
SENTINELは全く出てこないが...

586 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 17:59:20 ]
SENTINELは不要?
for(i=p,j=k=0;i<=q;i++)
if( j>m-p) a[i]=c[k++];
else if( k>=q-m) a[i]=b[j++];
else if(c[k]<b[k]) a[i]=c[k++];
else a[i]=b[j++];
}

587 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 17:59:38 ]
SENTINELの意味わかってねーだろw

588 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:00:30 ]
565のマージソートは致命的な欠陥があるw

589 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:04:58 ]
>>586
>else if(c[k]<b[k]) a[i]=c[k++];
>else if(c[k]<b[k]) a[i]=c[k++];
>else if(c[k]<b[k]) a[i]=c[k++];
>else if(c[k]<b[k]) a[i]=c[k++];

else if(c[k]<b[j]) a[i]=c[k++];
じゃね?

590 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:06:45 ]
わずかなミスでそんなに嬉しそうに揚げ足とらなくてもw



591 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:11:17 ]
>>588
どこ?おしえて

592 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:29:20 ]
>>567
水準は兎も角、意外に奥の深い問題と学習確認クイズは
区別されたほうが良いかもな

593 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:33:25 ]
>>590
プログラミングではわずかなミスが致命的なバグとなる事がよくある

594 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:35:00 ]
嬉しかったのは否定しないんだw

595 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 18:55:30 ]
>>593
589の問題は嬉しそうに挙げ足をとっていることなんだけど
改行厨みたいで迷惑

596 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 19:19:55 ]
[1] 授業単元:
アルゴリズムとプログラミング
[2] 問題文(含コード&リンク):
下のアドレスのプログラムに追加して、ダイクストラ法のプログラムを完成させてください
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10070.txt
プログラムに使用するデータファイル↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10071.txt
[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まで] または [無期限] のいずれか)
11月10日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません

よろしくお願いします。

597 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 19:59:34 ]
>>569
台形公式のことですよね。
codepad.org/XRuQqaF0

598 名前:初心者 ◆.6Hqkk7dyk [2009/11/05(木) 21:06:28 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 2つの整数値と1つの文字を、例えば「4+2」のように入力し、
                   入力に応じた四則演算を行って結果を出力するプログラムを作成しなさい。
                   ただし、中央の文字に四則演算の記号以外の文字が入力された時のことも考慮しなさい。
[3] 環境
 [3.1] OS: UNIXのemacs
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2009年11月7日17時まで

まだまだ初心者でよくわかりませんorz
よろしくお願いします。

599 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 21:51:19 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10073.txt

[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月13日まで
[5]無し

構造体とポインタの問題です、よろしくお願いします。

600 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 03:11:52 ]
>>507
誰もやらないから最初の問題だけやってみた
提出あさってじゃんね

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



601 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 08:26:53 ]
>>599
1問目
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10075.txt

2問目
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10076.txt


602 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 13:20:08 ]
>>565
N*2が並び替える配列のサイズであるとしたら、
最初に呼び出したときにSENTINELがb[N]、c[N]の範囲外に代入されてしまう。

再帰関数を呼び出すごとにb[N],c[N]を確保するのは領域の無駄以外の何者でもない。

603 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 15:43:27 ]
>>602
codepad.org/JEJ72Jb5

604 名前:デフォルトの名無しさん [2009/11/06(金) 22:56:50 ]
#include <iostream>
using namespace std;

int main() {

int i,goukei=0;
int kokugo[5];
float heikin;

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n";
cin >> kokugo[i];
goukei = goukei + kokugo[i];
}

heikin = (float)goukei/5.0;
cout << "平均点は" << heikin << "点です\n";

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i];
cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n";
}

return 0;

}

これを
数学の点数も入力する
数学の平均も出力する
国語と数学の総合的な平均点も出力する
ようにするにはどうすればいいんですか?

605 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 23:01:32 ]
>>1を読む

606 名前:604 [2009/11/06(金) 23:21:34 ]
ごめんなさい
C++です

607 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 23:45:10 ]
じゃなくてちゃんとテンプレに従った形で書けって事
プログラムはろだにうpしろ

608 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 00:08:45 ]
>>604
小学生でも出来るレベルだぞ・・・それ

609 名前:609 mailto:sage [2009/11/07(土) 02:02:45 ]
#include <iostream>
using namespace std;
int main() {
  int goukei_k = 0, goukei_s = 0;
  int kokugo[5], suugaku[5];
  float heikin_k, heikin_s, heikin;

  for(int i=0; i<5; i++) {
    cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n";
    cin >> kokugo[i];
    goukei_k += kokugo[i];
    cout << "同じく数学の成績を入力してください\n";
    cin >> suugaku[i];
    goukei_s += suugaku[i];
  }
  heikin_k = (float)goukei_k/5.0;
  cout << "国語の平均点は" << heikin_k << "点です\n";
  heikin_s = (float)goukei_s/5.0;
  cout << "数学の平均点は" << heikin_s << "点です\n";
  heikin = (float)(goukei_k + goukei_s)/5.0;
  cout << "合計の平均点は" << heikin << "点です\n";
  for(int i=0; i<5; i++) {
    cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i];
    cout << "点で、平均との差は" << heikin_k - kokugo[i] << "です\n";
    cout << "同じく数学の成績は" << suugaku[i];
    cout << "点で、平均との差は" << heikin_s - suugaku[i] << "です\n";
    cout << "同じく合計の成績は" << kokugo[i] + suugaku[i];
    cout << "点で、平均との差は" << heikin - (kokugo[i]+suugaku[i]) << "です\n";
  }
  return 0;
}

610 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:36:26 ]
[1] 授業単元:オペレーティングシステム実習
[2] 問題文
マルチプロセスを利用したシステムの開発を行い,結果を以下の項目にまとめ報告せよ. fork(),セマフォ,メッセージをすべて使用すること.
・システムの要求仕様
・プログラムのソースファイル
・上記プログラムの簡単な解説,特に fork(),メッセージ,セマフォの周辺について
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: Gcc
 [3.3] 言語: C言語
[4] 期限: 11/9いっぱい
[5] その他の制限:なし

フォーク、セマフォの作り方がよくわからないのでよろしくおねがいします。



611 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:48:39 ]
>>610
>>474-479

612 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:31:27 ]
>>598
なにか異常な状況になると、なにもせずに終わります。
codepad.org/kU1vQSYE

613 名前:デフォルトの名無しさん [2009/11/07(土) 21:44:16 ]
>>609
ありがとうございました

614 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:13:11 ]
>>598
↓空白が入った場合は考慮していない(1 + 2など)。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10077.c

615 名前:デフォルトの名無しさん [2009/11/07(土) 23:42:13 ]
C++で10進数を2進数に変換するプログラムを配列使って
順番通りに表示できるようにするのってどうするんですか
#include <iostream>
using namespace std;

int main() {
で始まる感じで(もしかしたらcmathとか使うかもしれないですが)
最後は
return 0;
}です

616 名前:デフォルトの名無しさん [2009/11/08(日) 00:52:50 ]
>>608
へぇ〜ほぉ〜小学校でC言語やプログラミングって習うんだぁ。どこ?

617 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:56:18 ]
冥途市立地獄小学校

618 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:34:55 ]
>>616
小学校は難しいとしても、勘のいい人なら普通の人でもできる内容かもね。
国語を算数に変えたら算数になることは分かるだろうし。

619 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:39:12 ]
出来ようが出来まいがプログラミング言語を小学生がやるのは愚の骨頂

620 名前:620 mailto:sage [2009/11/08(日) 01:42:22 ]
#include <iostream>
using namespace std;
int main() {
  int i, n, bin[32];

  cout << "Number:"; cin >> n;
  cout << "Binary:";
  for(i=0; i<32; i++) {
    bin[i] = n & 1;
    n >>= 1;
  }
  for(i=31; i>=0; i--)
    cout << bin[i];
  return 0;
}



621 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:47:24 ]
>>619
小学生がやるのは個人の好き勝手だと思うし、愚かだとは思わない。
よしんば愚かだと思ってもそれが骨頂の愚かな行為とまでは思えない。

622 名前:デフォルトの名無しさん [2009/11/08(日) 01:52:07 ]
>>620
19を2進数にすると10011だと思うんですが
その前に0が沢山並ぶのはOKなんでしょうか?

623 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:04:07 ]
>>621
プログラミングというのは本来、プログラミング言語自体を
作りながらやるもの。これは到底小学生に出来る世界じゃない。

出来合のプログラミング言語解釈疑似実行プログラム(=コンパイラ)
を使って遊ぶことは、実はプログラミングとは言うのはかなり
恥ずかしい。

有害無益とまでは言わないが、商業的には兎も角、教育的な意味で
有益にするのはかなり難しい。
相当に優秀な教師でも居ない限りね。

624 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:14:49 ]
>>623
たとえば何の言語作ったの?

625 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:20:48 ]
Cはそれなりに安定した多方面に応用されている信頼できる言語の
ひとつだが万能な言語じゃない。万能な言語など無い。

626 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:22:36 ]
Cが万能じゃないことなどプログラマなら誰でも知ってる。
それはそうと、俺は言語作ったこと無いけどみんなはあるの?

627 名前:デフォルトの名無しさん [2009/11/08(日) 02:26:47 ]
>>623
プログラム言語だってコンパイラだって出来合いのをコンパイルしたもんだろ
機械語に直接翻訳するようなのを自分で作るなら話は別だが

628 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:28:20 ]
>>623

>プログラミングというのは本来、プログラミング言語自体を
>作りながらやるもの。

そもそもこの定義はどこから来たのw?

629 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:30:18 ]
比喩が理解出来なくなってる段階で、すっかりプログラム
されちゃってるなw

630 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:01:49 ]
比喩なんてもんじゃない、ただのバカだろw



631 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:03:10 ]
俺にはどれが何の比喩表現なのかが分からない

632 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:05:38 ]
バカなプログラマは、コードにバグが無いと信じ、言語にバグがあると信じ込む。だから言語を作れるんだみたいな傲慢なことを言う。

優秀なプログラマは、天賦な言語にバグなどないと敬虔に信じ
救われる。

633 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:23:30 ]
彼は言語を作れるんだなんて言ってない。
プログラミングとは言語を作ることだと言っている。
つまり、プログラマと名乗る以上、優秀であろうとそうでなかろうと言語を作っているはずなんだよ

だから俺はプログラマじゃないの。

634 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:25:48 ]
プログラムをされている方なんですね...わかります

635 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:27:24 ]
行ってることが意味不明
C言語でおk

636 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:27:26 ]
文法とかの理解も妖しいのに言語なんか作れるのか?

637 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 04:23:01 ]
文法など理解出来るしろものじゃないからこそ言語を天賦の
ものじゃないと考えるわけだ。

638 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 05:23:26 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):ソケット通信を用いたチャットの作成
(mikilab.doshisha.ac.jp/dia/research/report/2003/0714/006/report20030714006.html)
にある2.1、2.2のクライアント、サーバのプログラム(出来れば簡単な解説もお願いします)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2009年11月08日23:00まで
[5] その他の制限: なし


639 名前:620 mailto:sage [2009/11/08(日) 07:55:58 ]
 >>620
 19を2進数にすると10011だと思うんですが
 その前に0が沢山並ぶのはOKなんでしょうか?
620は○△先生じゃないから、質問されても答えられない。
-9を2進数にすると幾つだと思うか?!

640 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 09:03:53 ]
>>616
東京にIQ130以上の子供だけを入園させることが出来る幼稚園(だっけな?)とかなかったかな
確かそこでプログラミングしてたはず

それに近頃の、ませた小学生がプログラミングに興味を持ってるのもいるしなぁ。



641 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 09:34:41 ]
>>596お願いします><

642 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:47:03 ]
俺、小学生の時、パソコン買って、プログラミングしてたよ。
簡単なお絵描きプログラムなんですが、
BASICの本のサンプルみたいなのを、機能拡張しながら使ってた。
そのときはテープも使えず、フロッピーディスクなんてのもないから、
覚えてしまったコードを毎回入力してたけど、毎回すこしずつ違ったコードでした。


643 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:49:24 ]
>>639
負の数を2進数にする時のためにも、最初に全体のビット数は
何ビットなのかはっきりさせておかなければ

2進数では大抵負の数は2の補数という表現を取り、最上位
ビットは1になる

644 名前:デフォルトの名無しさん [2009/11/08(日) 20:09:22 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10079.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11/13まで
[5] その他の制限: 特になし

645 名前:デフォルトの名無しさん [2009/11/08(日) 20:35:07 ]
[1] 授業単元: 画像情報工学
[2] 問題文:ブレゼンハムのアルゴリズムを用いて、ウィンドウ内に線分を描画するプログラムを
      作成しなさい。(以下の仕様で作成せよ)

      ■仕様(マウスの右と左のボタンを使用する。候補線の表示なし。)
       マウスの左ボタンクリック      線分の始点座標の指定
       マウスの右ボタンクリック      線分の終点座標の指定及び線分の描画

[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: Visual C++ 2008
 [3.3] 言語: C++
[4] 期限:2009年11月17日まで
[5] その他の制限:特になし

646 名前:デフォルトの名無しさん [2009/11/08(日) 21:52:25 ]
>>639
○△先生ってなんですか?

647 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:55:28 ]
丸さんかっけー

648 名前:デフォルトの名無しさん [2009/11/08(日) 23:32:22 ]
>>647
意味わからないですよね?
普通に読むとそうですが

649 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:45:32 ]
>>639
#include <iostream>
#define TRUE (1==1)
using namespace std;
int main() {
  int i = 0, n, bin[sizeof(int) * 8];
  
  cout << "Number:"; cin >> n;
  cout << "Binary:";
  while(TRUE){
    bin[i] = n & 1;
    if ((n >>= 1) == 0){break;}
    i++;
  }
  while(i >= 0){
    cout << bin[i--];
  }
  cout << '\n';
  return 0;
}

650 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:05:27 ]
つーか直書きやめてcodepad使おうぜ



651 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:27:39 ]
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):
正の整数nの2乗の数に、2種類の数字しか現れない
4桁の正の整数 n をすべて挙げなさい
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: c言語
[4] 期限: 2009年11月13日13:00まで
[5] その他の制限:なるべく簡単にお願いします
よろしくお願いします

652 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:40:56 ]
>>651
#include<stdio.h>
int main(void){
puts("1000 2000 3000 3114");
return 0;
}

653 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:44:06 ]
>>652
求めるプログラムお願いします

654 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:09:50 ]
>>596
ダイクストラ法の部分だけ実装しています。シミュレーション部分は、そもそもなんのシミュレーションなのかわからないので
放っています。
codepad.org/bxTi0dpv
何をシミュレートしているのか詳しくおしえていただければ、あるいは続きを書けるかもしれません。

655 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:41:35 ]
>>651
()を適当に埋めて整数の桁に現れる数を数え上げる関数
count(int n)を作ってこれを使って完成させな

int count( int n ){
int i,c[10],d;
for(i=0;i<(?);i++) c[i]=( );
while(?){ c[(?)]++;n/=10; }
for(i=d=0;i<10;i++) d+=(c[i]==0)?(?):(?);
return (?);
}

656 名前:656 mailto:sage [2009/11/09(月) 01:42:47 ]
#include <stdio.h>
int main(void){
  int i, j, ii, count, digit[10];
  for(i=1000; i<10000; i++){ // sqrt(1000) = 31.6227
    for(j=0;j<10;j++) digit[j]=0;
    ii = i*i;
    for(j=0;j<8;j++) { // 10,000*10,000 = 100,000,000
      digit[ii%10] = 1;
      ii /= 10;
      if(ii==0) break;
    }
    count = 0;
    for(j=0;j<10;j++)
      if(digit[j] == 1) count++;
    if(count==2) {//printf("-->");
      printf("%d %d %d\n", i, count, i*i);
    }
  }
}

657 名前:デフォルトの名無しさん [2009/11/09(月) 03:47:58 ]
[1] 授業単元: C言語のポインタ、配列、ファイルの問題です
[2] 問題文(含コード&リンク):
n件のデータを配列に入力しその平均値を出力するプログラムをつくり、
実行部において添字演算子は用いず、*(p+i)と*p++それぞれを用いるパターンを作る
ただし、入出力処理をファイル処理に、入出力ファイル名はコマンドラインで指定する
[3] 環境
 [3.1] OS: とくになし
 [3.2] コンパイラ名とバージョン: とくになし
[3.3] 言語: c言語
[4] 期限: 2009/11/09日中
[5] その他の制限:途中まで出来ている部分を使ってください。
#include<stdio.h>
int main(void)
{
int A[100];
int a,b,i,n,*p;

*p=A[0];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",*(p+i));
}
for(i=0;i<n;i++){
b+=*(p+i);
}
a=b/n;
printf("%d",a);
return(0);
}
です。よろしくお願いします。

658 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 05:50:29 ]
>>655-656
ありがとうございます.コンパイルしてみます

659 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:20:08 ]
>>651
#include <stdio.h>

int check(int n)
{
int i, a[2], temp, c = 0;

while(n) {
temp = n % 10;
for(i=0; i<c; i++) if(a[i]==temp) break;
if(i==2) return 0;
if(i == c) a[c++] = temp;
label:
n /= 10;
}
return 1;
}

int main(void)
{
int i;

for(i=1000; i<10000; i++) if(check(i*i)) printf("%d\n", i);

return 0;
}

660 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:21:02 ]
ゴミが残った
label:は消しといて



661 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:29:06 ]
>>659
バグってるぞ

実行結果

1000
2000
3000
3114


662 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:33:09 ]
お前は何を言ってるんだ?

663 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:36:33 ]
>>652>>656も答えはその4つなんだが、どこがバグってるんだろ
表示するのは4桁の整数の方だし

664 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:34:07 ]
正の整数 nの2乗の数に、「10の倍数でなく、
10進数表記で、3種類以上の数字が現れる、
もしくは1種類の数字しか現れない」という
ことが無いものをすべて挙げなさい

665 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:35:27 ]
正の整数 nで、その2乗が10の倍数でなく、
「「10進数表記で、3種類以上の数字が現れる、
もしくは1種類の数字しか現れない」という
ことが無いもの」をすべて挙げなさい

666 名前:656 mailto:sage [2009/11/09(月) 10:37:30 ]
4桁までの数。
int main(void)
{
  int i;
  for(i=1; i<10000; i++) if(check(i*i)) printf("%04d\n", i);
  return 0;
}

667 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:52:35 ]
で、勝手に問題書き換えてバグがないものをバグって言い張るつもり?

668 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:56:46 ]
>>665>>661とは無関係
>>652への追加課題

669 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:59:29 ]
問題出したきゃ、大学でも専門学校でもどこでもいいから講師になってからにしろよw

670 名前:656 mailto:sage [2009/11/09(月) 11:01:05 ]
書き換えてないぞ。柿加えた。10の倍数を含まない。
int main(void) {
  int i;
  for(i=1; i<10000; i++) if(i%10) if(check(i*i)) printf("%4d %d\n", i, i*i);
  return 0;
}



671 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:02:37 ]
恥ずかしい突込みをした661が話を逸らそうとして必死にしか見えないんだがw

672 名前:656 mailto:sage [2009/11/09(月) 11:07:19 ]
1回だけのは除く。
for(i=4; ......


673 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:08:21 ]
講師は問題を解いて説明する
生徒はそれを写す
んだろ?

674 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:12:54 ]
656なら他人の関数使ってないで、自分が書いたやり方でやれよw

675 名前:656 mailto:sage [2009/11/09(月) 11:34:26 ]
>>670 で、数字が1種類でも動くようにcheck()を改良せよ。

676 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:39:58 ]
>>661
で、どこがバグってるの?

677 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:40:22 ]
>>656
出来ないの?

678 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:50:08 ]
>>675
お前はなんで自分にレスしてんだよw

679 名前:613 mailto:sage [2009/11/09(月) 14:32:26 ]
関数ポインタをconstで宣言したいんですがー

const int(*func)(void*) = ...
のように宣言すると、funcの挙動としてconstが定義されて(戻り値がconst int型となり)
変数func自体はconst化されず、プログラム中でポインタの書き換えが行えてしまいます。

関数の挙動としては戻り値にconstをつけず、ポインタ自体にconstを当てはめたいのですがー
どなたかいい手法をご存知ないでしょうか?

680 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:35:30 ]
多分 int(* const func)(void*)



681 名前:679 mailto:sage [2009/11/09(月) 14:42:37 ]
>>680
早レスありがとうございます。が、だめでしたora

682 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:42:39 ]
やってみた

#include <stdio.h>

int func(void)
{
return 1;
}

int main(void)
{
int (* const fun)(void) = func;

printf("%d\n", fun());

return 0;
}

出力結果
1

683 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:44:50 ]
ちなみに

#include <stdio.h>

int func(void)
{
return 1;
}

int func2(void)
{
return 2;
}

int main(void)
{
int (* const fun)(void) = func;

printf("%d\n", fun());

fun = func2;

return 0;
}

const_func2.c: In function 'main':
const_func2.c:19: error: assignment of read-only variable 'fun'

684 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:44:59 ]
そもそも なぜそのようなことをするのか
という疑問のほうが...

685 名前:679 mailto:sage [2009/11/09(月) 14:47:55 ]
>>680
早レスありがとうございます。が、だめでしたora

686 名前:679 mailto:sage [2009/11/09(月) 14:49:30 ]
>>680
と思ったら右辺のほうも書き換えないといけないんですね。
両方(*const func)で解決致しました。ありがとうございます。

687 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:49:56 ]
コンパイラ何?ってかそろそろスレ違いなんで

【初心者歓迎】C/C++室 Ver.69【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1256022655/

ここあたりに行こうぜ

688 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:19:21 ]
funcに一度値を設定したら書き換えることが出来ないんだろ?
どういう状況でfuncという変数を使うのか知ってみたい

689 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:27:38 ]
int Stage1( void );
int Stage2( void );
int Stage3( void );

int (* const func[])(void) = { Stage1, Stage2, Stage3 };

{
 while(1) func[now_stage];
}

690 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:45:19 ]
趣味の問題ね()



691 名前:656 mailto:sage [2009/11/09(月) 16:37:19 ]
>>659 待った?
int check(int n) {
  int i, a[2], temp, c = 0;

  while(n) {
    temp = n % 10;
    for(i = 0; i < c; i++)
      if(a[i] == temp) break;
    if(i == 2) return 0; // check NG
    if(i == c) a[c++] = temp;
    n /= 10;
  }
  if(c == 2) return 1; // check OK
  return 0;
}

692 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:45:16 ]
659は関係ないだろw

693 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:49:14 ]
おいおい、>>675の名前欄は656、つまりお前自身じゃねーかよw
自演で何やってんだよw

694 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:05:46 ]
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
  ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。
  動作の仕様は2通りの中から選びなさい。(どちらでもよい)

  仕様1(マウスの左ボタンと右ボタンを使用する。候補線を表示はなし。)
  マウスの左ボタンクリック   線分の始点座標の指定
  マウスの右ボタンクリック   線分の終点座標の指定及び線分の描画

  仕様2(マウスの左ボタンだけで操作する。候補線を表示する。)
  マウスの左ボタンクリック   線分の始点座標の指定、及び線分の描画開始
  マウスの移動         始点から線分を絶えず候補として描画。(古い線分は消す)
  マウスの左ボタンクリック   線分の終点座標の確定。線分を描画。

ただし、ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ: Microsoft Visual C++ 2008 Express Edition
 [3.3] 言語: C++
[4] 期限: 09年11月11日(水)
[5] その他の制限: 特になし

仕様は1と2どちらでもOKなので、簡単なほうで構いません。
よろしくお願いします。


695 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:36:14 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):不定方程式が解を持つか判断して、持つ場合には解を求めるプログラムを作れ
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: Visual C++ 2008
 [3.3] 言語:C++
[4] 期限: 明日まで
[5] その他の制限: 特になし

もしどなたかやっていただけるならばお願いしますm(_)m




696 名前:デフォルトの名無しさん [2009/11/09(月) 19:30:06 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10081.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC2003
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: 特になし

697 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:58:10 ]
>>654
ありがとうございます!
シミュレーション内容について詳しく書いたファイルを↓に上げました。
よければよろしくお願いします。

[1] 授業単元:
アルゴリズムとプログラミング
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10082.txt
プログラムに使用するデータファイル↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10071.txt
[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まで] または [無期限] のいずれか)
11月17日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません

698 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:59:12 ]
>>696
buf[4] = '\0';

699 名前:デフォルトの名無しさん [2009/11/09(月) 20:37:11 ]
#include <iostream>
using namespace std;

int main() {
int a[100],b=-9999;
int i=0,j;

do {
cout << "整数値を入力してください\n";
cin >> a[i];
b += a[i];
i++;
}while( a[i-1] != 9999);

cout << b << '\n';

for(j=0;j<i-1;j=j+1)
cout << a[j] * 3 << '\n';

return 0;
}

このプログラムってループを抜ける条件は9999と入れた時だけですか?

700 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:02:19 ]
>>699
いえ、他にも、100回を超えても何度も何度も操作を続けて
書き込み禁止のメモリに到達したときにも抜けます(異常終了という形で)。



701 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:27:03 ]
>>694
仕様2で
ttp://codepad.org/IeQFbfNo

702 名前:デフォルトの名無しさん [2009/11/09(月) 21:29:26 ]
>>700
ありがとうございます

703 名前:604 [2009/11/09(月) 21:37:51 ]
国語と数学の総合的な平均点も出力する
っていう言葉の意味が分からないんですが、これは、合計を5で割ればいいんですかね?
10で割ればいいんですかね?

704 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:41:36 ]
国語の合計と数学の合計の合計を10で割るのが一番正確だが
国語の平均と数学の平均の合計を2で割ってもまぁ良い

705 名前:デフォルトの名無しさん [2009/11/09(月) 21:44:31 ]
[1] 授業単元:データ構造とアルゴリズム設計
[2] 問題文(含コード&リンク):
入力された小文字のアルファベットを,リストを用いて順次格納する.
’−’が入力された時に文字の入力を終了し,それまでに格納された全ての文字を表示するプログラムを作成
せよ.
ただし,リストに格納する際,リストの最後に追加するようにせよ.
例(a, b, c, - と順に入力したときa,b,cと出力される)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:特に無し
[5] その他の制限:双方向リストは使わない。
ヘッダは#include <stdio.h>以外は使わない

706 名前:604 [2009/11/09(月) 21:45:16 ]
>>704
つまり、これは総合的平均っていうのは100を越すことはないという事ですか?


707 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:07:35 ]
>705
制限付きで面白そうなのでやってみようかな

708 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:22:25 ]
>>706
そういうことになるな。

709 名前:デフォルトの名無しさん [2009/11/09(月) 23:24:36 ]
>>708
ありがとうございました

710 名前:デフォルトの名無しさん [2009/11/09(月) 23:35:40 ]
10進数を2進数に変換するプログラムを 順番通りに表示できるようにするプログラムを配列を使って作るんですが

#include <iostream>
using namespace std;
int main() {
int i,n,bin[32];

cout << "10進数:";
cin >> n;
cout << "2進数:";
for(i=0; i<32; i++) {
bin[i] = n & 1;
n >>= 1;
}
for(i=31; i>=0; i--)
cout << bin[i];
return 0;
}
結局これは、0がいっぱい出てくるから、ダメですかね?
それとも負の数も考慮に入れたから、こういう事になったんですか?








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<214KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef