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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【過去ログ検索】
http://chomework.sakura.ne.jp/
【wiki】
http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 78代目
http://pc8.2ch.net/test/read.cgi/tech/1165190320/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=0&H=&view=table&link2ch=on&shw=2000&D=tech
2デフォルトの名無しさん:2006/12/13(水) 02:12:54
2げとずざ
3デフォルトの名無しさん:2006/12/13(水) 02:26:16
>>2ああん
4ともやん:2006/12/13(水) 10:38:26
始めまして。
いきなりなんですが、どうしてもできないプログラムがあります。
「ある打撃点から目標に向かって的狙を行い、命中させるゲームプログラム。
打撃点から目標到達点までの距離、障害もでの距離、高さ、風速を初期設定条
件とし、ゲームを行う者には目標点もでの距離と風速のみ知らされる。打撃点
からの玉の発射角、初速を設定すると、玉到達距離を計算し、目標との差を表示する。」
というものです。
よろしくおねがいします。
5デフォルトの名無しさん:2006/12/13(水) 10:39:24
>>4
お前は文字読めないのか?
6ともやん:2006/12/13(水) 10:40:13
>>5
読む気がないだけです
7ともやん:2006/12/13(水) 10:41:56
↑の質問
[3] 環境
 [3.1] OS: Windows
 [3.2] 言語: C++
[4] 期限: 2006年12月20日9:30まで

8デフォルトの名無しさん:2006/12/13(水) 10:51:14
>>4
打撃点と目標の高さは同じなのか?
障害にぶつかった場合に跳ね返ることも考慮するのか?
跳ね返るとしたら反発係数は?
9デフォルトの名無しさん:2006/12/13(水) 10:53:37
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 有効長 n の配列 arr[] の最大要素の位置を求める関数 int arr_max_pos(int arr[], int n) を再帰法で定義する。最大要素が複数ある場合は、前の方の位置を返す。
初期条件 n=1 のとき、最大要素は arr[0] であるから、位置 0 を返す。そうでないとき、有効長 n-1 で関数を適用した結果と、最後の配列要素 arr[n-1] とを比較して、大きい方の位置を返す。

[3] 環境
 [3.1] OS: windows xp
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C言語
[4] 期限:2006/12/13 18:00
[5] その他の制限:
10デフォルトの名無しさん:2006/12/13(水) 11:04:20
>>9
int arr_max_pos(int arr[],int n){return n-1?(arr[arr_max_pos(arr,n-1)]>=arr[n-1]?arr_max_pos(arr,n-1):n-1):0;}
119:2006/12/13(水) 11:34:12
その他のところで書くべきだったのですが。


//====================================================================
// 前処理
//====================================================================

//====================================================================
// 大域宣言
//====================================================================

//====================================================================
// メイン関数
//====================================================================
int main(void) {
//---- 宣言
//---- 入力
//---- 計算
//---- 出力
//---- 終了
return 0;
}
//====================================================================
// ユーザ関数
//====================================================================


こういう形式で出力できるようにプログラムを書いていただけませんか;;
12デフォルトの名無しさん:2006/12/13(水) 11:38:16
>>9
付け足し禁止。テンプレ嫁。
13デフォルトの名無しさん:2006/12/13(水) 11:40:27
>>11
#includeや配列の宣言、最後のprintfくらい自分で書いてくれー
そしたら追加してやるから
14デフォルトの名無しさん:2006/12/13(水) 11:44:02
>>11
それは少なくとも「C言語」ではない何かだなぁ。
//コメントはC++のものだ。
まぁbccでは通してくれるのかもしれないが。
Cといいつつそんな下らないフォーマットの指定と
誤ったコメントのつけ方を指定する教官はアフォだな。
15デフォルトの名無しさん:2006/12/13(水) 11:49:54
[1] 授業単元:C言語
[2] 問題文:以下の通り関数を作成せよ。
文字列を格納した配列をポインタ引数で受け取りデコードする。
文字列中に%があれば、その後ろ二文字(数字です)を2桁の16進数とみなし、コードに変換する。
変換して出来た文字列は元の配列に上書きするものとする。


[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4
[3.3] 言語: どちらでも可
[4] 期限: 16日

宜しくお願いします
1614:2006/12/13(水) 11:50:53
と思ったけど、普通にC99という考え方もあるか。C99なら//もOKだな。
普段C99なんか使ってないから凝り固まってたyo。
カナブンよりもごめんなさい。
17デフォルトの名無しさん:2006/12/13(水) 11:56:50
すみません、問題文2と1の内容が同じでした、気づかずすみませんでした。
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3161.txt 問題文1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3176.txt 問題文2

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3127.txt 元のプログラム
上記の問題文1と2に従って元のプログラムを修正する課題です。問題文1と2の2つのプログラムを作成します。
あと問題文2に例外があって、二分木のイメージを表示するプログラムが元プログラムにあるのですが、問題文2にそる形で二分木イメージの元プログラムを問題文2で二分探索木イメージで出力するようにお願いします。

[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語: C
[4] 期限: 明日までに
[5] その他の制限: 特になし

よろしくお願いします
18デフォルトの名無しさん:2006/12/13(水) 11:58:47
[1]関数
[2]
関数を用いて、200x200ピクセルの画像の中心に幅50、
高さ50の四角を書き、画像を平行移動させる関数を作成
して画像をx方向に30、y方向に60だけ平行移動するプロ
グラムを作成しましょう。
?? プロジェクト名:11move ファイル名:11move.c
?? 画像を移動する関数
関数名: move
引数:画像データ,x方向の移動量,y方向の移動量
戻り値:なし
/* 11move.c (2006/12/13) */
/* 学籍番号氏名*/
#include <stdio.h>
#include <stdlib.h>
#define MS 200
void move( unsigned char *, int, int );
main()
{
char fi[50];
int i, j;
FILE *fp;
unsigned short header[13] = {0x4d42, 54490, 1, 0, 0, 26, 0, 12, 0, 200, 200, 1, 24};
unsigned char *bmp;
の続きをお願いします。
詳しくはhttp://mobiledatabank.jp/s/src/MDBS1087.pdfの練習問題です
よろしくお願いします。
[3]windowsXP
19デフォルトの名無しさん:2006/12/13(水) 12:03:58
中心点Pからの角度AとBの比較ですが、
どちらが反時計回り方向にあるか比較したいのです。

単純にラジアンの大きさで比較すりゃいいじゃんと言われても
角度0を挟んだ場合、比較がおかしくなってしまいます。
C++だとどう書いたらいいでしょうか?
20デフォルトの名無しさん:2006/12/13(水) 12:04:49
>>15
#include <ctype.h>

char *percent_decode(char *s)
{
#define ISHEX(c) (isdigit(c) || (c) >= 'A' && (c) <= 'F')
#define HEXDEC(c) (isdigit(c) ? (c) - '0' : (c) - 'A' + 10)
#define HEXCHAR(hi,lo) (((hi) << 4) + (lo))

    char *p, *q;
    for (p = q = s; p[0]; ) {
        if (p[0] == '%' && ISHEX(p[1]) && ISHEX(p[2])) {
            *q++ = HEXCHAR(HEXDEC(p[1]), HEXDEC(p[2]));
            p += 3;
/*
        } else if (p[0] == '+') {
            *q++ = ' ';
            ++p;
*/
        } else {
            *q++ = *p++;
        }
    }
    *q = '\0';
    return s;
}
21デフォルトの名無しさん:2006/12/13(水) 12:39:41
>>19
>>1
ついでにもっとわかりやすく
22デフォルトの名無しさん:2006/12/13(水) 12:49:31
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
「m個の数字集合からn(0〜m)個の組み合わせを比較し、指定値X以上かつ最小の組み合わせを求める。」


インプット
 数字集合:5,7,10,12,15
 指定値:18

 ↓数字集合の組み合わせで、『指定値』以上かつ最小の組み合わせを求める。

アウトプット
 最小合計値の組み合わせ:7+12=19

[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: Visual C++6.0
 [3.3] 言語: C
[4] 期限:特になし

よろしくおねがいします。
23デフォルトの名無しさん:2006/12/13(水) 12:58:48
>>22
mは何個くらい?
24デフォルトの名無しさん:2006/12/13(水) 13:02:50
>>23
mが何個でも対応できるようにしたいのです。
もちろん、個数が多ければ計算時間が膨大になるので算出限界の個数(予想では20個ぐらい?)はあるのでしょうが。
25デフォルトの名無しさん:2006/12/13(水) 13:08:49
>>24
じゃあ総当りでの算出限界(=待てる限界?)の個数以下で考えればいいの?
2619:2006/12/13(水) 13:09:32
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
中心点P からの角度 A と B があります。
AとB、どちらが反時計回り方向にあるか判定したい。

中心 P は(X Y) の 2D 点、
角度 A、角度 B はラジアンで取得済み

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名: VC 6.0
 [3.3] 言語: C++
[4] 期限: [2006年12月13日14:00まで
[5] その他の制限: 特になし
27デフォルトの名無しさん:2006/12/13(水) 13:20:11
>>24
nってのは予め指定されるの?
任意?
28デフォルトの名無しさん:2006/12/13(水) 13:25:34
>>22
数字集合には負の値は含まれるのか?
29デフォルトの名無しさん:2006/12/13(水) 13:28:36
>>28
0 〜 m って書いてあるし正数でしょ
30前988:2006/12/13(水) 13:29:06
BCDコードの質問をしたものです。989さん、解答有難うございます!!!
31デフォルトの名無しさん:2006/12/13(水) 13:33:52
>>29
0〜m と書いてあるのは組み合わせの個数であって数字集合の範囲ではない
32デフォルトの名無しさん:2006/12/13(水) 13:34:43
[1] 授業単元:Cプログラミング
[2] 問題文:
  次の値をバイトオーダ(BigEndian<->Little Endian)に変換するプログラムを
  示しなさい。
  short value = 0x1234;
int value = 0x12345678;
[3] 環境
[3.1] OS: (Windows)
 [3.2] bcc
 [3.3] C言語
 [4] 期限: 無期限
[5] その他の制限:

宜しくお願い致します。

3322:2006/12/13(水) 13:36:25
>>28
負の値は数字集合に無い前提です。
34デフォルトの名無しさん:2006/12/13(水) 13:40:19
>>32
#include <stdio.h>
#include <windows.h>
int main() {
short value = 0x1234;
int value2 = 0x12345678;
printf("0x%x->0x%x\n", value, htons(value));
printf("0x%x->0x%x\n", value2, htonl(value2));
return 0;
}
3522:2006/12/13(水) 13:45:03
>>25
最適アルゴリズムなら総当りアルゴリズムより計算時間が短縮されると思うので、
mの限界値も大きく取れてより良いのですが、不可能でしたら総当りでも構いません。

>>27
nは任意です。
詳しく言うと、最小合計値の組み合わせに使われた数字の個数がnです。
36デフォルトの名無しさん:2006/12/13(水) 13:48:10
>>22
数字集合に実数は許される?
37デフォルトの名無しさん:2006/12/13(水) 13:49:51
つーか入力されるものがわからねえ。

例では n は入力されてないようだが、0 〜 m すべてを走ると思ってよいのか?
38デフォルトの名無しさん:2006/12/13(水) 14:01:39
>>36
例の通り、入力するのは実数です。


>>37
nが0 〜 m のどれになるかは分かりません。
例は7+12の組み合わせが解になり、nは2でしたが、
もし、5+7+10等の組み合わせが解になればnは3になります。

もし、0 〜 m すべてを走って比較した結果、求めるというのでしたらその認識であっています。
39デフォルトの名無しさん:2006/12/13(水) 14:02:31
>>22
酷いソースだけど書けた
#include <stdio.h>
#define N 5
int a[N] = {5, 7, 10, 12, 15};
int x = 18;
int ansf[N];
int mini;
void search(int f[], int sum, int idx) {
if(sum >= x && sum < mini) {
int i;
mini = sum;
for(i=0;i<N;i++) ansf[i] = f[i];
return;
}
if(sum >= mini || idx == N)
return;
search(f, sum, idx+1);
f[idx] = 1;
search(f, sum+a[idx], idx+1);
f[idx] = 0;
}
int main() {
int i, f[N] = {0};
for(i=0;i<N;i++) mini += a[i];
mini++;
search(f, 0, 0);
for(i=0;i<N;i++) {
if(ansf[i]) printf("%d ", a[i]);
}
return 0;
}
40デフォルトの名無しさん:2006/12/13(水) 14:05:23
>>38
いや、例は整数で、整数制約があるかどうかは大きく効いてくるんだが
4122:2006/12/13(水) 14:08:31
>>40
整数であることが前提です。

>>39
ありがとうございます。
試してみます!
42デフォルトの名無しさん:2006/12/13(水) 14:21:38
#include <stdio.h>
#define MAXSIZE 256
#define M 5
int xs[M] = {5, 7, 10, 12, 15}, X = 18;
int main() {
  int i, j, sum = 0;
  int table[MAXSIZE], prev[MAXSIZE]; /* sum < MAXSIZE */
  for (i = 0; i < M; ++i) 
    sum += xs[i];
  for (i = 0; i <= sum; ++i) 
    table[i] = prev[i] = 0;
  table[0] = 1;
  for (i = 0; i < M; ++i) {
    for (j = sum; j >= 0; --j) {
      if (table[j]) {
        table[j + xs[i]] = 1;
        prev[j + xs[i]] = xs[i];
      }
    }
  }
  for (j = X; j <= sum; ++j) 
    if (table[j]) break;
  if (j > sum) {
    printf("no solution\n");
  } else {
    for (i = j; i > 0; i -= prev[i]) 
      printf("%d ", prev[i]);
    printf("-> %d\n", j);
  }
}
43デフォルトの名無しさん:2006/12/13(水) 14:22:30
[1] 授業単元:Cプログラミング
[2] 問題文: 行単位で、3個以下の単語を入力する。単語の順序を逆にして出力する。
4個以上の入力には、無効メッセージを出す。単語の区切りは、空白である。
空行の入力で処理を終了する。
[3] 環境
[3.1] OS: (Windows)
 [3.2] bcc 32
 [3.3] C言語
 [4] 期限: 無期限
 [5] その他の制限:入力処理は、関数 gets() と sscanf() で行い、入力数を調べる。
各単語を格納する変数を逆順に出力する。
44デフォルトの名無しさん:2006/12/13(水) 14:24:50
nとmが固定なら簡単なんだけど、nとm入力させるとめんどくさくなるな。
4542:2006/12/13(水) 14:25:10
>>42 は整数制約のある場合の別解。
>>39 は O(2^m)、これは O(m S) (S は入力の合計) なので
どちらがよいかは m のサイズと S のサイズによる。
46デフォルトの名無しさん:2006/12/13(水) 14:30:32
>>44
ならん。n はそもそも入力させないし、
m が入力になったところで十分大きなサイズの配列を
用意するだけでしょ。
4722:2006/12/13(水) 14:44:44
>>45
どうもありがとうございます。
>>39の方がmを限界まで大きく出来るみたいです
mが27個までは10秒以内に算出できました。
4845:2006/12/13(水) 14:54:57
まあ >>45 は入力総和大きかったらさっぱりだしな。
せっかくだから入力晒してくれ。
49デフォルトの名無しさん:2006/12/13(水) 14:59:37
>>48
#define N 27
int a[N] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,900,619,630,630,940,945,999,1365,567,609,840,1470};
int x = 6999;

こんな感じでやってみました。
50デフォルトの名無しさん:2006/12/13(水) 15:11:46
>>47
関係ないが14:44:44
5145:2006/12/13(水) 15:24:49
>>49
すまん、同じ値を何度も使うバグがあった。
訂正したものをアップロードした。
一応、その入力に対して1秒未満で解を出す。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3177.c
52デフォルトの名無しさん:2006/12/13(水) 15:29:09
53デフォルトの名無しさん:2006/12/13(水) 15:38:46
>>51
うわ、凄いです。
mが100個超えても即座に出ますね。

総当りアルゴリズムでないんですね。
このアルゴリズムをソースから勉強します。
54デフォルトの名無しさん:2006/12/13(水) 15:41:52
>>18
適当なんで、微調整必要ならして下さい.

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3179.c
5532:2006/12/13(水) 16:12:24
>>34
解答ありがとうございます!!
56デフォルトの名無しさん:2006/12/13(水) 16:17:14
>26
p0, p1, p2 が反時計回りの時に正、時計回りの時に負の整数を返す関数である。一直線上に 3 点があれば 0 が返る。

int ccw(point_t p0, point_t p1, point_t p2)
{
int dx1, dx2, dy1, dy2;
dx1 = p1.x - p0.x;
dy1 = p1.y - p0.y;
dx2 = p2.x - p0.x;
dy2 = p2.y - p0.y;
if (dx1*dy2 > dy1*dx2) { return +1; }
if (dx1*dy2 < dy1*dx2) { return -1; }
if ((dx1*dx2 < 0) || (dy1*dy2) < 0) return -2;
if ((dx1*dx1+dy1*dy1) < (dx2*dx2+dy2*dy2)) return +2;
return 0;
}
57デフォルトの名無しさん:2006/12/13(水) 16:17:18
[1] 授業単元:Cプログラミング
[2] 問題文:
  以下の構造を定義しなさい。
従業員のデータを管理するための構造。
・氏名(最大8文字)、年齢、生年月日、性別('M':男性、'F':女性)
・入社日、社員番号(最大5桁)、所属事業部コード(最大5桁)、
所属事業部名称(最大20文字)

※typedefを使用して定義すること。
※アラインメントは、8バイトバウンダリとすること。

[3] 環境
[3.1] OS: (Windows)
 [3.2] bcc
 [3.3] C言語
 [4] 期限: 無期限
[5] その他の制限:

宜しくお願い致します。

58デフォルトの名無しさん:2006/12/13(水) 16:18:17
>56
あ・・・座標じゃなく角度だったか。失敬
59デフォルトの名無しさん:2006/12/13(水) 16:28:19
>>57
一日にいくつ質問するつもりだよw
60デフォルトの名無しさん:2006/12/13(水) 16:33:50
>>57
お礼ぐらいほしいもんだぜ
61デフォルトの名無しさん:2006/12/13(水) 16:34:12
>>32
>>43
>>57
そろそろ死ね
6243:2006/12/13(水) 16:50:28
>>52のプログラムには入力個数に関して、書かれていないのですが、どのようにすれば
入力個数の確認についても触れていただきたいです。
63デフォルトの名無しさん:2006/12/13(水) 16:54:04
入力個数はsscanfが値を返す。この場合、4個以上入力したら4が返ってくるから
文字列分割のところのifで判定してる。
64デフォルトの名無しさん:2006/12/13(水) 16:57:59
>58
ありがとうございます。
座標を基に角度を算出していましたので、これでも全然OKです。
気になってCCWで検索かけたら、意味が判りました。
本当にありがとう御座いました。
6543:2006/12/13(水) 17:02:53
>>63なるほど、ありがとうございました。
どうにか提出できそうです。
66デフォルトの名無しさん:2006/12/13(水) 17:39:47
どうにかって何か不満でもありましたか・・・?
67デフォルトの名無しさん:2006/12/13(水) 19:08:45
すみません。
for(i=0;i<50000;i++){
ntest=calc_n(psi);
}
みたいなループの中で関数calc_n(psi)を呼んで中で
int calc_n(double *psi){
int x;
int n;
double rnd1,rnd2;
rnd1=(double)rand()/RAND_MAX; //0から1までの乱数
x=(int)(rnd1*N);        //0からN−1までの乱数
rnd2=(double)rand()/RAND_MAX;  //0から1までの別の乱数
if(rnd2>psi[x]/psi[N/2]){  //rnd2がpsi[x]/psi[N/2]より多い場合
n=calc_n(psi);     // 残念でした、またどうぞ
}
else{         // そうじゃなけりゃ
return n;       // nを返してね
}
}
みたく、calc_nの中でcalc_n呼んでみたらエラーがでました。
68デフォルトの名無しさん:2006/12/13(水) 19:09:53
ああ、で質問は、どうしたら良いでしょうか?という事です。
ついでに上げるのも忘れました
69デフォルトの名無しさん:2006/12/13(水) 19:13:16
n?
70デフォルトの名無しさん:2006/12/13(水) 19:19:44
>>67
psiの宣言はどうなってるの?
というか全部見せて
71デフォルトの名無しさん:2006/12/13(水) 19:20:24
>67
何がしたい関数なのかさっぱりわからんが、returnが足りないのとnに値が入ってない。
72デフォルトの名無しさん:2006/12/13(水) 19:23:28
>>54
ありがとうございます♪
7367:2006/12/13(水) 19:41:01
簡単に言うと、psi[n] (nは0からN-1まで)に比例した乱数をはじき出す
関数を作りたいのです。(はじき出したい場所は最初に書いたループ内)
まず、0から(N-1)までの偏りのない乱数をだします(xがそれ)。その値
をpsi[n]に代入して、psi[N/2]で割ります。これはpsi[n]がN/2で最大値だと
過程してるからです。で、その分数は割合を示します。これを別に用意した
0から1までの乱数と比べて、その乱数が今言った割合より少ないときだけ、
xを・・・あれ???ごめん、間違った。nじゃ無くてxを返します。
74デフォルトの名無しさん:2006/12/13(水) 19:51:49
>psi[n] (nは0からN-1まで)に比例した乱数をはじき出す
すまんが意味がよくわからん。
具体的な動作で説明してくれ。
75デフォルトの名無しさん:2006/12/13(水) 19:54:19
>>73
psiってのは double の配列ってことでいいのか?
76デフォルトの名無しさん:2006/12/13(水) 19:55:36
>その値 をpsi[n]に代入して
どこで?
77デフォルトの名無しさん:2006/12/13(水) 20:03:17
>>67
まず
if(rnd2>psi[x]/psi[N/2]){
n=calc_n(psi);
return ・・・・・; ← ここの戻り値は何になる?
}
else{
return n; ← ここは x ってことだな
}

あと psi(整数もしくは実数として)の配列は初期値として何が入ってる?
0 だと if(rnd2>psi[x]/psi[N/2]) ここで 0 による除算でエラーになる
7867:2006/12/13(水) 20:08:33
はい。psi[n] てのをpsi 対 nでプロットしたら山型になてて丁度
真ん中が最高値となってます。(psi[N/2]が最高値ってのはその意味です)
xてのは0からN-1まで、均等に乱数がでます。つまり、0が出る確率も
N-1が出る確率も、N-3が出る確率もみんな、1/(N-1)ですよね。それを
真ん中らへん(N/2あたり)が出る確率を大きくして、端っこ(0とか
N-1あたり)が出る確率を小さくしたいのです。つまり、確立も山型に
したいのです。それで、xをpsi[n]に代入すればその乱数値xでのpsiが出され、
psi[n]の最大値、psi[N/2]で割ると割合がでます、その割合を均等に出た乱数値r2
と比べるとうまくいくんじゃ無いかなぁと。
例えばpsi[x]/psi[N/2]の割合が0.3だとします。山でいったらフモト近くですね。
つまり、そこのnが出る確率を少なくしたいのです。で、それを均等に出された
乱数と比べたら・・・0.3以下が出る確率は少ないですよね。だから、もしr2が
これ以上の値を出したら却下したいのですわ。
79デフォルトの名無しさん:2006/12/13(水) 20:15:24
>>67
1. 以下のような要素数N+1の配列sumpsiを作る.
sumpsi[0] = 0.0
sumpsi[1] = psi[0]
sumpsi[2] = psi[0]+psi[1]
sumpsi[3] = psi[0]+psi[1]+psi[2]
...
sumpsi[N] = psi[0]+psi[1]+psi[2]+...+psi[N-1]

2. 0以上sumpsi[N]未満の乱数rndをとる.

3. sumpsi[k] <= rnd < sumpsi[k+1]となるようなkを返す.(返り値は[0, N-1]の整数値)

こんなアルゴリズムでどう?
80デフォルトの名無しさん:2006/12/13(水) 20:18:40
。。。確率的に止るプログラムはイカンと思う。。。
8167:2006/12/13(水) 20:21:32
>>75
その通りで。宣言は double psi[N]; となっています。
Nは #define N 100 としてます。
>>76
う〜ん、話せば長くなるけど、最終的にはpsi[n]を安定値にもってく
感じです。
>>77 最初のリターン使って、関数の最初に戻ろうかと。。。無理?
そう、後のリターン値はxです。
psiの初期値はこうなってます。
  int n;
for(n=0;n<N/2;n++){
psi[n]=pow((2/L),1.5)*n*dx;
}
for(n=N/2;n<N;n++){
psi[n]=-pow((2/L),1.5)*n*dx+pow((2/L),1.5);
}
82デフォルトの名無しさん:2006/12/13(水) 20:29:21
>>81
>関数の最初に
func(...)
{
…@
if(rnd2>psi[x]/psi[N/2]){
n=calc_n(psi);  ←ここで代入される n はどこで使われる?
@に戻る
}
else{
return x;
}

ということか?
}

とはいえ確率によって無限ループになる可能性もあるわけだが
8367:2006/12/13(水) 20:38:36
誤解多くてごめん。自分がしたい事は

@
if(rnd2<psi[x]/psi[N/2]){
return x;
}else....
もしそうじゃなけりゃ、@に戻る。

つまり、if(rnd2<psi[x]/psi[N/2])の条件が出るまで
関数calc_n内でx,psi[x],rnd2を計算し続ける、という事です。
84デフォルトの名無しさん:2006/12/13(水) 20:43:28
だったら再帰じゃなくてもよくない?
っていうかその結果を破棄するのに再帰にする意味がわからん。
85デフォルトの名無しさん:2006/12/13(水) 20:48:13
/^o^\フッジサーワ
http://x25.peps.jp/azurenamoon
86デフォルトの名無しさん:2006/12/13(水) 20:50:41
>>67
再帰じゃなくてこれでいいだろ
int calc_n(double *psi)
{
int x;
double rnd1, rnd2;
do{
rnd1 = (double)rand() / RAND_MAX;
x = (int)(rnd1 * N);

rnd2 = (double)rand() / RAND_MAX;
}while(rnd2 > psi[x] / psi[N/2]);

return x;
}
87デフォルトの名無しさん:2006/12/13(水) 20:50:54
>>83
結構適当だけど、こんなのどう?

double sum_psi; // psi[]の和

double get_rand() {
int i;
double rnd=(double)rand()/RAND_MAX;
for(i=0;i<N;i++) {
if(rnd <= 0)
return i;
rnd -= psi[i]/sum_psi;
}
}
88デフォルトの名無しさん:2006/12/13(水) 20:55:57
>>83
int calc_n(double *psi){
int x;
int n;
double rnd1,rnd2;
while(1)
{
rnd1=(double)rand()/RAND_MAX;
x=(int)(rnd1*N);
rnd2=(double)rand()/RAND_MAX;
if(rnd2>psi[x]/psi[N/2]){
return x;
}
}
こうか?
結論から言えばやはり 確率的に無限ループするコードはよろしくない
89デフォルトの名無しさん:2006/12/13(水) 20:57:52
DOSプロンプトで一発でCの実行ファイルがあるところに行けるソフトの
ソフトの作り方をおしえて。
90デフォルトの名無しさん:2006/12/13(水) 21:02:50
>>89
Cの実行ファイルがあるところ
どうやって判断するんだ?
まぁ俺はカレントに cd 特定のパス ってbatファイル作ってある
91デフォルトの名無しさん:2006/12/13(水) 21:03:53
>>89
explorerのフォルダをプロンプトにD&D
92デフォルトの名無しさん:2006/12/13(水) 22:08:20
前スレの749で質問をして解答を頂いた者ですが、重要な
間違いをしていました。
「ソートにはバブルソートを用い」と書きましたが
「ソートには選択ソートを用い」でした。
前スレの796さんが下さった解答の
ソートの関数の部分だけ訂正すれば良いと思うのですが
解りません。
93デフォルトの名無しさん:2006/12/13(水) 22:20:51
>>90

場所は分かってるんですが、毎回c:\windowsとなるので煩わしいです。
batファイルってcd 特定のパスを書いてどうすればいいのでしょうか?

>>91

本当に大丈夫ですか?ネタっぽいんですが。
94デフォルトの名無しさん:2006/12/13(水) 22:22:46
>>93
俺は>>91じゃないけど、あえて言わせてもらう。

なんでその程度のことすぐに試してみないんだ?
95デフォルトの名無しさん:2006/12/13(水) 22:30:00
>>93
あ、説明悪かった
現在のドライブと行き先が同じドライブの場合
cd と打ってからD&D
ドライブが違う場合
ドライブ名: と打ってからEnter
それからcd + D&D

まぁ面倒だな
96デフォルトの名無しさん:2006/12/13(水) 22:30:10
[1] 授業単元:Cプログラミング演習
[2] 問題文:50個の整数データを読み込み、それらを小さい順に出力する
      cプログラムを作成せよ。バブル整列法は使ってはいけない。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2006年12月23日12:00まで

よろしくお願いします
マジで分からないです


97デフォルトの名無しさん:2006/12/13(水) 22:32:20
>96
データはどっから読み込むの?
98デフォルトの名無しさん:2006/12/13(水) 22:33:47
>>94

コマンド入力してないのが怖いです。ファイルが壊れたりしないですか?
99デフォルトの名無しさん:2006/12/13(水) 22:45:43
>>96
http://pc8.2ch.net/test/read.cgi/tech/1165190320/913-
913 名前:デフォルトの名無しさん[] 投稿日:2006/12/12(火) 21:15:14
[1] 授業単元:Cプログラミング演習
[2] 問題文:50個の整数データを読み込み、それらを小さい順に出力する
      cプログラムを作成せよ。バブル整列法は使ってはいけない。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2006年12月23日12:00まで

よろしくお願いします。

914 名前:デフォルトの名無しさん[sage] 投稿日:2006/12/12(火) 21:19:39
>913
前スレにも書いた?

939 名前:デフォルトの名無しさん[] 投稿日:2006/12/13(水) 01:18:43
>>913
何個か書いていただいたのですが
コンパイルはできるものの題意を満たすように
実行できません 間違いとか分からないんで
教えてください 


同じやつか?問題をもっと詳しく書かないと話がループするぞ。
100デフォルトの名無しさん:2006/12/13(水) 22:48:25
>>96
読み込むデータの形式は?どのように記述された数値?
出力するのはプログラム実行中の画面?それとも並び替えたファイルを
最初読み込んだファイルと同じような形式でファイルに保存?
そこをはっきりしないと、誰もあんたが求めるものを書いてくれないよ。
すでにある手法の中からあんたが適切に選べば良いことなんだが。
101デフォルトの名無しさん:2006/12/13(水) 22:49:02
並び替えた数値データを って書くべきだったか、訂正。
102デフォルトの名無しさん:2006/12/13(水) 22:51:29
>>93
>DOSプロンプト
コマンドプロンプトのことだよな?
ショートカットのプロパティ開いて作業フォルダに 「場所」 を入れてやればいい
103デフォルトの名無しさん:2006/12/13(水) 22:53:03
>>95

OKです!立ち上げ直すたびに憂鬱だったんですが払拭されました。
104デフォルトの名無しさん:2006/12/13(水) 22:57:40
>>102

確認したら分かりました。確かに設定ありますね。
こっちの方が良さそうなんでこっちを採用させて頂きます。
またクソ質問しますのでよろしく!!
105デフォルトの名無しさん:2006/12/13(水) 23:04:55
>>104
もう来るな
106デフォルトの名無しさん:2006/12/13(水) 23:05:27
そういうのは宿題関係ないだろ
初心者質問スレでやれ
107デフォルトの名無しさん:2006/12/13(水) 23:27:56
[1] Cプログラミング
[2] 文字配列を使い100桁以上同士の数値にも対応させた
  除算と乗算を行うプログラムを書け。
[3] 環境
 [3.1] Fedora Linux
 [3.2] gcc4.0
 [3.3] C
[4] 2006/12/15まで
108デフォルトの名無しさん:2006/12/13(水) 23:32:46
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):最大カット問題を解くプログラムを作成せよ。
以下の図のグラフに対する最大カット問題の解を表示せよ。
最大カット数と、そのときのカット方法を表示するプログラムを表示するプログラムを作成せよ。
http://up.spawn.jp/file/up58326.jpg
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C
[4] 期限: 年内
[5] その他の制限:標準ライブラリはなしで
109デフォルトの名無しさん:2006/12/13(水) 23:49:59
>>108
データ形式を教えてくれ
勝手に作ったんでいいのか?
11092:2006/12/13(水) 23:55:42
ネットで選択ソートについて調べて同じ様にしたりしたのですが、
整数に関してじゃないためか、コンパイルが通らなかったり、
ちゃんと動作しなかったりして完成できません。
提出期限が明日の朝11時00分までなので
解答お願いできないでしょうか?
111デフォルトの名無しさん:2006/12/14(木) 00:07:21
>>110
void sortArea(int iLine, char** ppArea )
{
int i, j, k;
for( i = 0; i < iLine-1; i++ ){
k = i;
for( j = i + 1; j < iLine; j++ )
if( strcmp( ppArea[k], ppArea[j] ) > 0 ) k = j;
swapPtr( ppArea + i, ppArea + k );
}
}

まったく動かしてないから保証は無しで
112デフォルトの名無しさん:2006/12/14(木) 00:24:44
>>109
おまかせします
113デフォルトの名無しさん:2006/12/14(木) 00:56:19
[1] 授業単元:プログラミングC
[2] 問題文:ガウスの消去法を用いて、n次元連立1次方程式を作成せよ。
ただし、標準入力から次元数n(上限も決める)と係数行列の値を入力せよ。
また、ベクトルx,bとして1次元配列を,行列Aとして2次元配列を動的メモリ確保せよ。
[3] 環境
 [3.1] OS:VineLinux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年12月14日12:00まで
[5]その他の制限:Cについての基本的なことは全て学びました、標準ライブラリはなしで。

どうかよろしくお願いします。
114デフォルトの名無しさん:2006/12/14(木) 00:57:28
>>113
標準ライブラリなしとは高度な宿題ですね
115デフォルトの名無しさん:2006/12/14(木) 01:07:57
>>113
scanfとかprintfもなしってことだよね?
116デフォルトの名無しさん:2006/12/14(木) 01:20:26
113さんに便乗で、初心者から質問
printfとかscanfと同じ動作をする関数を、自分で作れるんですか?
アセンブラとかで書く、特殊な関数だと思ってました。
117113:2006/12/14(木) 01:22:36
ごめんなさい、普通に間違えました。
標準ライブラリはもちろんありでお願いします。
118デフォルトの名無しさん:2006/12/14(木) 01:25:39
じゃあ何が無しなんだよ!
119デフォルトの名無しさん:2006/12/14(木) 01:41:15
最近難しい問題が増えたな
120デフォルトの名無しさん:2006/12/14(木) 01:44:15
>>119
課題自体より質問文のほうが難解
121デフォルトの名無しさん:2006/12/14(木) 01:58:56
さいていすぎるらいしゅうよこく
122デフォルトの名無しさん:2006/12/14(木) 02:24:53
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
通常課題6-1の構造体に,身長,体重,肥満度のメンバ(いずれも浮動小数点数)を加えた構造体を新たに定義する.
また,あらかじめ5名分の学生番号と氏名のデータ(任意、実際の学生番号と一致する必要は全くない)で初期化しておく.
まず,この5名のデータにキーボードから身長[m],体重[kg]のデータ(任意)を入力する.
次に,個人ごとの構造体データへのポインタを受け取り,身長,体重から肥満度[%] を計算する関数を作成し,その関数を用いて各人の肥満度を表示するプログラムを作成しなさい.
ただし,肥満要注意の人(肥満度30%以上)には,任意の注意マークをつけること.
肥満度は次の式で計算され,0%のとき標準体重,正の値は肥満型,負の値は痩せ型を表わす(BMI (Body Mass Index)の計算式より).
肥満度[%] = {体重/(身長×身長×22)}×100−100
[3] 環境
 [3.1] OS:XP SP2
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語:C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3181.txt
前スレ236さんの作ですがabs,strcpy,memcpy,strncmp,strlenが識別子は、因数依存照合を使用しても見つかりません。と表示されます。
123デフォルトの名無しさん:2006/12/14(木) 02:31:12
>>122
くだんねえ質問投げる前にヘッダ確認しろよカスこのカス
エラーでてる関数使おうと思えばどんなヘッダがいるんだよカスカスカス
124デフォルトの名無しさん:2006/12/14(木) 02:42:36
>>122
まぁ無知を攻めるのもなんだから...
abs, strcpy 等のヘルプページを見れば必須 include ファイルと必須 lib ファイルが解るはず。
エラーが出てる関数に必須ライブラリは無いみたいだけどね。
大雑把に言って mem??? は <stdlib.h> を str??? は <string.h> を必要とする。
125デフォルトの名無しさん:2006/12/14(木) 09:31:50
>>17 お願いします!!
126デフォルトの名無しさん:2006/12/14(木) 09:57:50
[1] 授業単元:
[2] 問題文(含コード&リンク):

長さ n の実数列 a = [a_0, ..., a_n-1] と正の実数 h が
与えられたとき、|max - min| < h なる最長の区間 [a_i, ..., a_j] を
求める効率の良いプログラムを作成せよ。

[3] 環境
 [3.1,3.2] OS、コンパイラ問わず
 [3.3] 言語: どちらでも可
[4] 期限: 2006年12月16日
[5] その他の制限: 特になし
127デフォルトの名無しさん:2006/12/14(木) 10:03:04
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
次のプログラムは、画像の画素数を入力し、その画像の縦と横の画素数を推定する者の一部である。
なるべく正方形に近いような形で、横の方が縦よりも長いものを推定結果としているプログラムを完成させよ。

次のプログラムと実行例
http://proxy.f3.ymdb.yahoofs.jp/bc/2c87921a/bc/9710/c.txt?bcbcKgFB8urvF5rG[3] 環境
 [3.1] OS: WinXP Pro
 [3.2] Visual Studio .NET 2005
 [3.3] 言語: C
[4] 期限: 明日までに
[5] その他の制限: ポインタ演習での問題。
128デフォルトの名無しさん:2006/12/14(木) 10:25:34 BE:67935375-2BP(202)
>>127
>なるべく正方形に近いような形で、横の方が縦よりも長いものを推定結果としている

日本語でおk
12992:2006/12/14(木) 10:26:05
レスありがとうございます。
でも実行したらセグメントエラーとなるのですが…
コンパイルは通りました。
130129:2006/12/14(木) 10:35:55
実行できました。
ただのタイプミスでした。
色々と本当にありがとうございました。
131デフォルトの名無しさん:2006/12/14(木) 10:54:42
>>108
結果があってるかは知らん。計算量は O(V^2 2^V)。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3184.c
132デフォルトの名無しさん:2006/12/14(木) 10:56:57
>>128
正方形になる場合には正方形に。
ならない場合は正方形にできるだけ近づける。ただし、w>hになるように。
とのことでは?
133131:2006/12/14(木) 10:58:39
>>131 上のほうにある c[VMAX][1 << VMAX] は消してくれ。
134デフォルトの名無しさん:2006/12/14(木) 11:01:36
135デフォルトの名無しさん:2006/12/14(木) 11:16:19
>>127
見れない
136デフォルトの名無しさん:2006/12/14(木) 12:03:16
#include <stdio.h>

int guess(int n,int*w,int *h){
//ここに追加

}

int main(void){
int pixels;
int gw,gh;

printf("画素数:");
scanf("%d",&pixels);
guess(pixels,,);
printf("推定値 w:%d X h:%d\n",gw,gh);
return 0;
}
137136:2006/12/14(木) 12:04:29

>>135ね。
実行例 []の中はユーザーが入力した値
ハイフンは各処理結果の隔壁を表わす

--------------------------
画素数:[100]
w:10 X h:10
--------------------------
画素数:[600]
w:25 X h:24
--------------------------
画素数:[1000]
w:40 X h:25
--------------------------
138デフォルトの名無しさん:2006/12/14(木) 12:10:30
つまり find (w,h) s.t. n = w*h, minimize |w-h|, w ≧ h ってことか。
139デフォルトの名無しさん:2006/12/14(木) 12:14:17
>>136を参考にした
int guess(int n,int*w,int *h){int i;for(i=sqrt(n);n%i;i++);*w=i;*h=n/i;}
140デフォルトの名無しさん:2006/12/14(木) 12:19:00
>136
mainの中のguessに引数でgwとghのアドレスを渡さないと
141デフォルトの名無しさん:2006/12/14(木) 12:20:12
>>126
問題のレベル高ぇ...本当に宿題なの?
なんか業務の匂いがするんだけど。
142デフォルトの名無しさん:2006/12/14(木) 12:26:28
アルゴリズム系の定番っぽいけどな
書けないが
143デフォルトの名無しさん:2006/12/14(木) 12:45:43
>>139
未完成プログラムに載っていないmath.hは使わないようにお願いします。
144デフォルトの名無しさん:2006/12/14(木) 12:49:54
>>126
効率は良くないかも

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

const double eps = 1E-6;

int main()
{
double a[] = {5, 3, 12, 16, 13, 14, 20};
double h = 3.1;
int len = sizeof(a)/sizeof(double);
int s = 0, e = 0;
int i = 0, j;
for(j=1;j<len;j++) {
if(fabs(a[j]-a[i]) < h)
continue;
s = i;
e = j-1;
while(fabs(a[++i]-a[j]) - h >= -eps);
}
if(e == 0)
e = j-1;
printf("%d to %d", s, e);

return 0;
}
145144:2006/12/14(木) 12:52:26
ちょっとぼけてた
書き直す
146デフォルトの名無しさん:2006/12/14(木) 12:55:14
>>126
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3189.cpp
O(n log n)。
妙に複雑だけど、一応動いてるっぽい。
147144:2006/12/14(木) 12:57:57
最長区間が複数の場合はiが小さい方を優先
#include <stdio.h>
#include <math.h>

const double eps = 1E-6;

int main()
{
double a[] = {5, 3, 12, 16, 13, 14, 20, 21, 18};
double h = 3.1;
int len = sizeof(a)/sizeof(double);
int s = 0, e = 0;
int i = 0, j;
for(j=1;j<len;j++) {
if(fabs(a[j]-a[i]) < h)
continue;
if(j-1-i > e-s) {
s = i;
e = j-1;
}
while(fabs(a[++i]-a[j]) - h >= -eps);
}
if(j-1-i > e-s) {
s = i;
e = j-1;
}
printf("%d to %d", s, e);

return 0;
}
148デフォルトの名無しさん:2006/12/14(木) 13:05:52
>>147
反例。(1, 5)が正解だけどそのコードだと(1, 11)が返る。
6.05385 8.52025 15.8029 15.2049 10.5501 11.904 2.34999 10.0731 0.270519 4.03088 2.27745 13.3459
max_diff = 8.58708
149デフォルトの名無しさん:2006/12/14(木) 13:09:38
>>148
指摘thx
途中の最大値最小値保存してなかった
ミスばっかりだ
150デフォルトの名無しさん:2006/12/14(木) 13:10:38
というかiを初期化しただけで変更してないのはまずいのでは。
151150:2006/12/14(木) 13:11:33
ごめん。勘違い。
152デフォルトの名無しさん:2006/12/14(木) 13:31:48
>>126 まだバグあるかも。自信はない。
#include <stdio.h>
#include <math.h>
const double eps = 1E-6;
int main() {
double a[] = {6.05385, 8.52025, 15.8029, 15.2049, 10.5501, 11.904, 2.34999, 10.0731, 0.270519, 4.03088, 2.27745, 13.3459};
double h = 8.58708;
int len = sizeof(a)/sizeof(double);
int s = 0, e = 0, i = 0, j, mx = 0, mn = 0;
for(j=1;j<len;j++) {
if(a[j] > a[mx]) mx = j;
if(a[j] < a[mn]) mn = j;
if(fabs(a[mx]-a[mn]) < h) continue;
if(j-1-i > e-s) {
s = i;
e = j-1;
}
mx = mn = j;
for(i=j-1;;i--) {
if(a[i] > a[mx]) mx = i;
if(a[i] < a[mn]) mn = i;
if(fabs(a[mx]-a[mn]) - h >= -eps) break;
}
i++;
}
if(j-1-i > e-s) {
s = i;
e = j-1;
}
printf("%d to %d", s, e);
return 0;
}
153デフォルトの名無しさん:2006/12/14(木) 13:45:09
154デフォルトの名無しさん:2006/12/14(木) 14:52:05
>>127
int guess(int n,int*w,int *h){
int width, height;
for( height=1; height<=n; height++ ) {
width = n / height;
if( width < height ) break;
if( n > width*height ) continue;
*w = width;
*h = height;
}

return 0;
}

int main(void){
int pixels;
int gw,gh;

printf("画素数:");
scanf("%d",&pixels);
guess(pixels,&gw,&gh);
printf("推定値 w:%d X h:%d\n",gw,gh);
return 0;
}
155デフォルトの名無しさん:2006/12/14(木) 15:43:30
>>152
そのプログラムで毎回最大値最小値をとっているところをヒープまたは二分木で
管理してやれば O(n log n) になる.これは >>146 のコードと本質的には同じ.
#include <iostream>
#include <set>
using namespace std;
int main() {
  const double a[] = {6.05385, 8.52025, 15.8029, 15.2049, 10.5501, 
    11.904, 2.34999, 10.0731, 0.270519, 4.03088, 2.27745, 13.3459};
  const int n = sizeof(a)/sizeof(a[0]);
  const double h = 8.58708;
  int I = 0, J = 0;
  multiset< double, greater<double> > gS;
  multiset< double, less<double> > lS;
  for (int i = 0, j = 0; i < n; ++i) {
    gS.insert(a[i]);
    lS.insert(a[i]);
    for (; *gS.begin() - *lS.begin() > h; ++j) {
      gS.erase(gS.find(a[j]));
      lS.erase(lS.find(a[j]));
    }
    if (i - j > I - J) {
      I = i;
      J = j;
    }
  }
  cout << J << "," << I << endl;
}
156デフォルトの名無しさん:2006/12/14(木) 16:01:32
宿題スレの宿題が、まるで解ける気がしなくなってきた…
157デフォルトの名無しさん:2006/12/14(木) 16:11:27
>>156
無理に解かなくても良いんだぜ
158デフォルトの名無しさん:2006/12/14(木) 16:27:41
>>155
凄いな。
見通しを持って理解してる人間の手にかかればここまで簡潔になるのか。
159デフォルトの名無しさん:2006/12/14(木) 16:50:53
[1] 授業単元: プログラミング言語
[3] 環境
 [3.1] OS: Unix
 [3.2] コンパイラ名とバージョン: gccと打ってコンパイラしてます
 [3.3] 言語: C
[2] 問題文: 1字ずつ入力を読み込んで、アルファベットの場合
小文字なら大文字に大文字なら小文字にして出力するプログラム。(数字や記号はそのまま出力)
おそらく大体はできていると思うのですが、どこが悪いのでしょうか?
今のままだと入力aの出力がAでなくそのままaと出てしまいますorz

#include <stdio.h>
#include <ctype.h>

void char_encoder(int a){
if (a >= 'a' && a <= 'z')
toupper(a);
else tolower(a);
putchar(a);
}

int main(void) {
int a;
while((a = getchar()) != EOF){
char_encoder(a);
}
return(0);
}
160デフォルトの名無しさん:2006/12/14(木) 16:55:23
>>159
toupperとtolowerの使い方が間違ってる
161159:2006/12/14(木) 16:58:09
ほんとだ…ググってみたところ変換した値を返す関数ってなってますね。
a = toupper(a);でしたか。ありがとうございました。
162159:2006/12/14(木) 17:09:07
というか変な値が入ってるならまだしも
値を投げっぱなしの159の状態でもコンパイラって通ってしまうんですねorz
163デフォルトの名無しさん:2006/12/14(木) 17:35:55
>>157
いや…ここの宿題を演習問題代わりにしてたんだけど、最近のはエロイ人が答え見ても
164デフォルトの名無しさん:2006/12/14(木) 17:37:11
>>157
いや、そうなんだけどね。
俺、ここの宿題を演習問題代わりにしてたんだけど、最近のはエロイ人が出した答え見ても、数時間頭抱えてるような状態なんだよね。
センス無いみたい。
165デフォルトの名無しさん:2006/12/14(木) 17:37:25
>>162
関数の返値を何かに代入とかしないといけないわけじゃないからね。
例えばprintfとかの返値は普段使ってないでしょ?
166デフォルトの名無しさん:2006/12/14(木) 17:38:06
宿題スレで、連呼で弱音吐いてる俺キモス
激しく吊ってくる…
167デフォルトの名無しさん:2006/12/14(木) 17:47:49
>>155
シンプルで綺麗なソースですね
setの使い方なども参考になります
168デフォルトの名無しさん:2006/12/14(木) 18:28:54
>>166
繰り返していればいずれ慣れるさ。
169デフォルトの名無しさん:2006/12/14(木) 18:34:43
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
ファイル「kyotocity.txt」には、
京都市の区ごとの人口(人)と面積(平方キロメートル)が記述されている。
これらの情報を格納する構造体 struct division を宣言しなさい。
struct division {
 char name[20];
 int population;
 double area;
}
struct division型の配列 kyoto[11]を用意し、
ファイルからデータを読んで、配列に入力しなさい。
入力した構造体の配列を調べて、以下の情報を出力しなさい。
人口が最大の区と最小の区の、名前と人口。
面積が最大の区と最小の区の、名前と面積。
人口密度が最大の区と最小の区の、名前と人口密度。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3192.txt 京都データ
[3] 環
 [3.1] OS: XP
 [3.2] visual studio2003
 [3.3] 言語: C
[4] 期限: あさって
[5] その他の制限: 特になし
170デフォルトの名無しさん:2006/12/14(木) 18:51:31
>169
昔みたな
171デフォルトの名無しさん:2006/12/14(木) 18:55:35
>>96
読み込む実数値は自分で入力します
結果はプログラム実行中の画面に出力って意味です
言葉が足りなくてすみません
172デフォルトの名無しさん:2006/12/14(木) 18:58:00
50個を自分で入力か
頑張れ
173デフォルトの名無しさん:2006/12/14(木) 19:00:15
>>171
整数なのか実数なのか
174デフォルトの名無しさん:2006/12/14(木) 19:11:27
>96
#include <stdio.h>
#include <stdlib.h>
int comp(const void*a,const void*b){
  return *(int*)a<=*(int*)b;
}
int main(void){
  int i,a[5];
  for(i=0;i<5;i++){
    scanf("%d",a+i);
  }
  qsort(a,5,sizeof(int),comp);
  for(i=0;i<5;i++){
    printf("%d ",a[i]);
  }
  return 0;
}
175デフォルトの名無しさん:2006/12/14(木) 19:15:38
>>176
何回もすみません。。
整数です 正負は問いません
あと、50個自分で入力って自分もびっくりしてます
176デフォルトの名無しさん:2006/12/14(木) 19:25:55
>175
5のところは50に変えてね
177デフォルトの名無しさん:2006/12/14(木) 19:27:41
>>174
qsort に渡す関数って 負数 ゼロ 正数 の三種を返すべきでは?
178デフォルトの名無しさん:2006/12/14(木) 19:34:11
>177
そうみたいだね。普段使わないから知らなかった。
ぶっちゃけネタ回答だし…qsortは反則でしょ
179デフォルトの名無しさん:2006/12/14(木) 19:35:54
>>178
禁止されているのはバブル整列法だけだから良いんじゃね?
180デフォルトの名無しさん:2006/12/14(木) 19:42:37
とんち問答なら正解だが、
講師も人間であることを
考慮すると、qsortはは
なはだ疑問である。
181デフォルトの名無しさん:2006/12/14(木) 19:55:54
#include<stdio.h>
#define N 50
void q_sort(int numbers[], int left, int right){
int l_hold = left, r_hold = right, pivot = numbers[left];
while (left < right){
while ((numbers[right] >= pivot) && (left < right)) right--;
if (left != right){
numbers[left] = numbers[right];
left++;}
while ((numbers[left] <= pivot) && (left < right)) left++;
if (left != right){
numbers[right] = numbers[left];
right--;}}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot) q_sort(numbers, left, pivot-1);
if (right > pivot) q_sort(numbers, pivot+1, right);}
int main(void){
int i,a[N];
for(i=0;i<N;i++)
scanf("%d",a+i);
q_sort(a,0,N-1);
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;}
宿題の解答ならこんな感じか
182デフォルトの名無しさん:2006/12/14(木) 21:02:34
>>176-181
いろいろありがとうございます
明日やってみます

ちなみにq_sortってのは私はじめて見るんで
それ使わなくてもできるやり方はあるみたいです
暇でしたら参考に書いてください 
183デフォルトの名無しさん:2006/12/14(木) 21:11:35
>>182
>>181がそうなんだがね。自分で書いてる。
184デフォルトの名無しさん:2006/12/14(木) 21:22:31
CorC++で質問です。
malloc or newで確保した3次元配列を指すポインタ
***prt
を関数の引数に取るにはどうすればよいのでしょうか。
単に
func(***ptr)では駄目らしいですが。
185デフォルトの名無しさん:2006/12/14(木) 21:34:26
いつからここは質問スレになったんだ?
186デフォルトの名無しさん:2006/12/14(木) 21:36:36
一次元配列のポインタ *ptr
二次元配列のポインタ *ptr
三次元配列のポインタ *ptr
187デフォルトの名無しさん:2006/12/14(木) 22:46:46
駄目な意味が分からない
普通にいけると思うけど
どうしても無理なら>>186でおk
188デフォルトの名無しさん:2006/12/14(木) 23:07:10
>>184
質問が不明瞭だけど func( ***ptr ) って受け側?呼び側?
受け側なら func( 型*** ptr ) でOK。
呼び側なら func( ptr )
189デフォルトの名無しさん:2006/12/14(木) 23:42:09
>>126 が気になったので書いてみた。
C++で回答してる人がいるけど std 良く知らないので同じロジックだったら恥ずかしいけど。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3193.txt

main() が2つあるけど、前の奴は 0〜100で乱数を1000個作って結果をcsv出力してる奴で、
後者が >>148 のデータを使用したもの。
190デフォルトの名無しさん:2006/12/15(金) 00:05:29
[1] 情報論
[2] 1)
N×Nマス目のフロアを前後左右に移動することができるロボットがある。
  スタート地点は常に左上(x,y)=(0,0)であり、全マス目を一度だけ通り、通った順序を表示するプログラムを作りなさい。
  フロアには障害物を置けるようにし、障害物は##で表せ。
  
2)
一筆書きで通れないものは2回目に通るマス目をできるだけ少なくし、 全マス目を少なくとも緯度は必ず通る探索経路を表示するプログラムを作成せよ。(2回通ったマスには2回目の探索順序を記載する)
[3] 環境
 [3.1] Linux
 [3.2] gcc 4.0
 [3.3] 言語:C
[4] 期限: 一週間後
[5] その他の制限: 特になし。

どうかお願いします
191c_cpp_cs ◆ew.HP.dat. :2006/12/15(金) 00:06:03
192デフォルトの名無しさん:2006/12/15(金) 00:16:55
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 4
int main(){
int Number[N],In[N];
int i,j,hit,blow;
srandom((unsigned) time(0));
for(i=0;i<N;i++){Number[i]=random()%10;In[i]=0;}
do{
printf("%d桁の数を入力!:",N);

for(i=0;i<N;i++){if((In[i]=getchar()) ==EOF) break; // この部分 //
In[i]-='0';}

fflush(stdin);hit=0,blow=0;
for(i=0;i<N;i++){if(Number[i]==In[i]) hit++;}
for(i=0;i<N;i++){for(j=0;j<N;j++){if(Number[i]==In[j]) {
blow++;
break;
}}}
for(i=0;i<N;i++) printf("%d-",In[i]);
printf("(%dHit,%dBlow)\n",hit,blow-hit);
}while(hit!=N);
for(i=0;i<N;i++)printf("%d",Number[i]);
puts("\nComplete!!");
}
193192:2006/12/15(金) 00:18:53
[1] 授業単元:計算機演習2
[2] 問題文(含コード&リンク):上記のfor文で数を読み取る部分をscanfの型に直す。
今のままだと、getcharで取り込んだ数が不具合を起こして、入力した数が正常に表示されません。
このプログラムでは一回試行する毎にランダムの数が書き変わってしまいます。
数を言い当ててComplete!が表示されるまで、設定された数が書き変わらないようにしてください。
四つの数は全て異なっていなければなりません。
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc -o
 [3.3] 言語: C
[4] 期限: 2006.12.16

よろしくお願いします。
194デフォルトの名無しさん:2006/12/15(金) 00:19:50
>>190
>2回目に通るマス目をできるだけ少なくし
と2回目に限定してるけど、
2回通るマス目が2つあるのと、4回通るマス目が1つあるのでは、
どちらを優先すればよいのだろう?
マス目の数にこだわれば後者だし、無駄な回数にこだわれば前者だよね
195デフォルトの名無しさん:2006/12/15(金) 00:23:40
>>194
すいません。通れるのは最大2回までとなってます。
196デフォルトの名無しさん:2006/12/15(金) 00:34:57
>>195
2回じゃ全マス通れない場合は?

□□□##
##□##
□□□□□
##□##
##□##
197デフォルトの名無しさん:2006/12/15(金) 00:43:49
>>196
「解なし」で大丈夫だと思います!
198デフォルトの名無しさん:2006/12/15(金) 00:48:34
[1] 授業単元:Cプログラミング
[2] 問題文: ttp://ehoba.mydns.jp/phpuploader/img/pup1555.rar
[3] 環境
 [3.1] OS:fedoracore6
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:C
[4] 期限:2006/12/20 (水)
[5] その他の制限:なし

よろしくお願いいたします。
199デフォルトの名無しさん:2006/12/15(金) 00:51:04
>>197
眠いので明日以降気が向いたらやるわ
200122:2006/12/15(金) 00:51:19
>>124
stdlib.hとstring.h加えたけどエラー数が悪化したorz
もうだめかもしれない・・・
201デフォルトの名無しさん:2006/12/15(金) 00:57:17
>>200
>[構成プロパティ]-[全般]-[文字セット]を 「マルチバイト文字セットを使用する」
この辺はやってる?
202デフォルトの名無しさん:2006/12/15(金) 01:10:06
203デフォルトの名無しさん:2006/12/15(金) 01:14:18
>>189
入力列がランダムのとき,O(n) で動くアルゴリズムだね.

これまでに同じアルゴリズムは出ていないけれど,
152,155 で最小値・最大値を更新するタイミングを最小値・最大値が
抜けたときだけにするものと本質的に同じものになる
(これが O(n) になるのは適度な演習問題).

しかし,最悪計算量の意味ではやはり O(n^2) であって,
例えば単調増加する n = 100000 くらいの列を食わせると終わらない.
155 とどちらがよいかは,状況によるところだと思う。
204デフォルトの名無しさん:2006/12/15(金) 02:31:26
205デフォルトの名無しさん:2006/12/15(金) 02:45:19
206189:2006/12/15(金) 02:55:00
>>203
0(n) にまで減らないとは思うけどパッと考えたのはアレくらい。

単調増加/減少の場合、調査起点のスキップができないからなぁ。
うーん無理。
207184:2006/12/15(金) 04:01:47
質問の意図が不明瞭ですみませんでした。
2次元配列の例で説明しますと,例えば

int array1 = [N][M];
と配列で宣言した場合,これを引数に取る関数funcでarrayの要素を使うためには,
func (int i, int j, int array[][M]) {
  array[i][j]
}
と,あらかじめMを決めておかなければいけませんよね。
それに対して,

int **array2 = (int **)malloc(nrows * sizeof(int *));
  for(i = 0; i < nrows; i++) {
    array1[i] = (int *)malloc(ncolumns * sizeof(int));
  }
とポインタのポインタで確保した場合,
func (int i, int j, int **array2]) {
  array2[i][j]
}
と書いておけば,各要素[i][j]に正しくアクセスできるかどうか知りたいのです。
208デフォルトの名無しさん:2006/12/15(金) 04:26:40
>>207
なぜここでそんな話をしてるんだ
ここが宿題を片付けるスレだと分かってないのか?
209デフォルトの名無しさん:2006/12/15(金) 04:56:25
>>207
>と,あらかじめMを決めておかなければいけませんよね。
はい。
>と書いておけば,各要素[i][j]に正しくアクセスできるかどうか知りたいのです。
実験すればいいじゃない。

ということで
ttp://pc8.2ch.net/test/read.cgi/tech/1164376287/
210デフォルトの名無しさん:2006/12/15(金) 07:34:03
>>206
入力がランダムな場合,平均又はならし計算量の意味で O(n) になってるよ.

略証:nextP がどこまでいくかを評価する.入力はランダムと仮定する.
func で伸ばした区間の長さを m としたとき,nextP が区間の左から k 番目
である確率は 1/m.よって nextP の期待値は Σk/m 〜 O(m).
したがって毎回 func で伸ばした長さ分程度消費するので全体で O(n).
211sage:2006/12/15(金) 07:40:04
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3199.txt
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語:C
[4] 期限: 本日10時
[5] その他の制限: とくになし

よろしくお願いします・・・!
212デフォルトの名無しさん:2006/12/15(金) 07:42:42
ぬつりw
213デフォルトの名無しさん:2006/12/15(金) 07:53:21
10時までだからって焦りすぎw
214デフォルトの名無しさん:2006/12/15(金) 08:03:43
誤字多すぎですねorz
数学の得点と物理の得点です
215デフォルトの名無しさん:2006/12/15(金) 09:28:45
>>205
ありがとうございます。
216デフォルトの名無しさん:2006/12/15(金) 10:05:50
>211
10時過ぎたけど
int main(void)
{
int i, j, sum, ave[3] = {0};
int a[5][3] ={{70, 60, 80},{50, 60, 50},{70, 90, 100},{90, 100, 50},{40, 70, 80}};

printf(" ____________________________________________\n");
printf("|学籍番号| 英語 | 数学 | 物理 | 合計 |\n");
printf("| ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄|\n");
for(i=0; i<5; i++) {
printf("|  %d  ", i+1);
for(j=0, sum=0; j<3; j++) {
printf("| %3d  ", a[i][j]);
sum += a[i][j];
ave[j] += a[i][j];
}
printf("| %3d  |\n", sum);
printf("|________|________|________|________|________|\n");
printf("|    |    |    |    |    |\n");
}
printf("| 平均 ");
for(i=0; i<3; i++) printf("| %3d  ",ave[i]/5);
printf("|    |\n|________|________|________|________|________|\n");
return 0;
}
217デフォルトの名無しさん:2006/12/15(金) 10:39:10
>>216

まにあいそうです!
超感謝です。ありがとうございました
218デフォルトの名無しさん:2006/12/15(金) 11:01:38
[1]授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
1)直線回帰の式を導出せよ。
2)決定係数の式を導出せよ。
3)1)の式を用いて「汎用性の高い直線回帰を行うプログラム」を開発せよ。
4)3)で開発したプログラムに2)の決定係数を算出する式を加えよ。
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: gcc3.4
 [3.3] 言語:C
[4] 期限: 2006.12.18
[5] その他の制限: とくになし


お手数かもしれませんが、よろしくお願いします・・・!
219デフォルトの名無しさん:2006/12/15(金) 11:08:10
マルチポストかよ
220デフォルトの名無しさん:2006/12/15(金) 13:07:48
[1]授業単元:プログラミング
[2] 問題文
前スレで出した宿題なんですが。
コード&乱数生成の標準ライブラリ関数を利用し、150以上200以下の整数を10個生成して画面に出力しなさい。
という問題で下のプログラムを組んでもらったのですが、現在のコードでは150から200までの値を等しい確率で生成できません。
スライドを参考に作り直しましょう。
と、言われまして、修正お願いします。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, air;
     /*
scanf("%d", &air);
srand(air);
*/
printf("150?ȏ㲰0?ȉ??̗???\n");
for(i = 0; i < 10; i++){
printf("%d\n", 150+rand()%51);
}
return 0;
}
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語:C
[4] 期限: 2006.12.17
[5] その他の制限: とくになし
221デフォルトの名無しさん:2006/12/15(金) 13:10:24
すみません文字化けしてました
>>220
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, air;

/*
scanf("%d", &air);
srand(air);
*/
printf("150以上200以下の乱数\n");
for(i = 0; i < 10; i++){
printf("%d\n", 150+rand()%51);
}

return 0;
}

222デフォルトの名無しさん:2006/12/15(金) 13:18:10
>220
スライドは?
223デフォルトの名無しさん:2006/12/15(金) 13:23:55
>>220
常に同じ乱数が出力されるのを変更したいって事?
それとも rand() 以外の擬似乱数を実装しろって事?
224デフォルトの名無しさん:2006/12/15(金) 13:24:31
>>220
rand() % 10 とかで 0 〜 9 の乱数を生じると結構偏りが多いらしいから同じ理由かな。
150 + rand() % 51
の所を
150 + (int)( (double)rand() / (double)RAND_MAX * 51.0 )
に変えて試してみて。
225デフォルトの名無しさん:2006/12/15(金) 13:35:36
>224
それだと201までにならない?
226デフォルトの名無しさん:2006/12/15(金) 13:51:58
>>225
けど、* 50.0 にしちゃうと 200 の出現確立が極端に低くなるよね。
つまり
150 + (int)( (double)rand() / (double)( RAND_MAX + 1 ) * 51.0 )
が正解か。
227220:2006/12/15(金) 14:00:38
問題文はその文面ですべてです。
プログラムは前スレで作ってもらったものです

150-200の数値を乱数で完全ランダムで10個出力するみたいです。
228220:2006/12/15(金) 14:28:13
スライドのほうですが、
ttp://www.borujoa.org/upload.php
の9381にアップしました。
PPTです
229デフォルトの名無しさん:2006/12/15(金) 14:57:21
なぜか乱数で%よく使われるよなw
FF4も確か0〜255までを返す乱数に対して%100して
パーセンテージを計算するというとんでもないことをやっていた
230デフォルトの名無しさん:2006/12/15(金) 15:04:12
>>229
????????????????
231デフォルトの名無しさん:2006/12/15(金) 15:33:28
>>230
余算式 % の事だと思われ
232デフォルトの名無しさん:2006/12/15(金) 15:42:05
>>220
スライド見たよ。>>226 で良かったみたいだね。
ちゅかあのスライド見れば解るだろうに...
重要なのは rand() がバラつきを保障するのは 0 〜 RAND_MAX での位置で有って、
下一桁とか二桁に着目したときのバラつきを保障してないって事だね。
特に rand() の下一桁はひどい偏りが有るらしい。

>>229
ちゅことは 0〜55がそれ以外の5割り増しで出るわけか。
クリティカルヒットの確立が有利だと気分は良いかも知れない。
233デフォルトの名無しさん:2006/12/15(金) 18:00:33
#include <stdio.h>
#include <string.h>

#define COLSIZE 80
#define NAMSIZE 20

int main(int argc, char *argv[])
{
char buffer[COLSIZE + 1];
char fname_in[NAMSIZE + 1];
FILE *fp;

fgets(fname_in, COLSIZE + 1, stdin);
fname_in[strlen(fname_in-1)] = '\0';

fp = fopen(fname_in, "r");

while(fgets(buffer, COLSIZE + 1, fp) != NULL){
printf("%s", buffer);
}
fclose(fp);

return 0;
}


これどこがへんですか教えてください
234デフォルトの名無しさん:2006/12/15(金) 18:02:14
>>233
fname_in[strlen(fname_in-1)] = '\0';
235デフォルトの名無しさん:2006/12/15(金) 18:03:41
- fname_in[strlen(fname_in-1)] = '\0';
+ fname_in[strlen(fname_in)-1] = '\0';
236デフォルトの名無しさん:2006/12/15(金) 18:04:55
下一桁は規則的で、0と1が交互に出てくる。
下位の数ビットはシフトして捨てるといい。
237デフォルトの名無しさん:2006/12/15(金) 18:08:15
解決しましたありがとうございました
2スレまえで同じような問題の質問があったけど絶対同じ学校のやつですね
238デフォルトの名無しさん:2006/12/15(金) 18:36:43
>>233
× fgets(fname_in, COLSIZE + 1, stdin);
○ fgets(fname_in, NAMSIZE + 1, stdin);

fgets() は最大 (size-1) のデータを読み込み終端に '\0' を追加するので、
fname_in[strlen(fname_in-1)] = '\0'; は無駄。
239デフォルトの名無しさん:2006/12/15(金) 18:41:46
C++の宿題やりたい
240デフォルトの名無しさん:2006/12/15(金) 18:42:35
>>238のは細かすぎる
241デフォルトの名無しさん:2006/12/15(金) 18:43:17
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3200.txt

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語: C
[4] 期限: 12月19日
[5] その他の制限: 特になし
242238:2006/12/15(金) 18:54:38
>>240
そうかぁ?
>>235 の方が細かいだろ。要らない行への駄目出しなんだから。
243デフォルトの名無しさん:2006/12/15(金) 18:59:22
>242
あっても問題ない行とあるとおかしい行の区別はつけような
244デフォルトの名無しさん:2006/12/15(金) 19:00:33
明らかにおかしな値になることへの駄目出しと、冗長な手順に対する駄目出し(結果として致命的なミスしてる式が消える)。
丸投げスレ的には、>>238で十分だけど、致命的な間違いをしてる式を教えてあげておいたほうが親切だとオモ。
ってか、丸投げスレより、質問スレ向けなネタだね。
245デフォルトの名無しさん:2006/12/15(金) 19:12:18
[1] 授業単元: Cプログラミング基礎
[2] 問題文(含コード&リンク): 問題文 ttp://www.geocities.jp/c_prog2011/bitmap_1.txt
途中まで自分で作ったソース ttp://www.geocities.jp/c_prog2011/file_2.txt
[3] 環境
 [3.1] OS: Windows XP Home Edition
 [3.2] コンパイラ名とバージョン: Visual Studio 2005 Academic Edition
 [3.3] 言語: Cのみ
[4] 期限: 2006年12月20日23:59
[5] その他の制限: ファイル操作に関しては習ったばかり。

よろしくおねがいします。
246238:2006/12/15(金) 19:30:17
まぁ解ってるとは思うけど念の為。

fgets(fname_in, COLSIZE + 1, stdin);

これは致命的問題。
スタックが下から上に積まれる環境において、NAMSIZE + 4 以上の文字数が入力された場合、
fgets() からのリターンアドレスを失い暴走する可能性がある。
バッファオーバーランを起こすとあらぬ場所で落ちる(様に見える)から追うのが面倒なんだよなぁ。
247デフォルトの名無しさん:2006/12/15(金) 19:32:12
>>246 同意
fgets(fname_in, sizeof(fname_in), stdin)
にしてくれると安心だ;
248デフォルトの名無しさん:2006/12/15(金) 19:46:21 BE:87345195-2BP(202)
>>244
>冗長な手順に対する駄目出し(結果として致命的なミスしてる式が消える)。

違うだろ。>>235をよく読んで[ ]の中の値が何になるか少ない脳みそで考えてみ。
249デフォルトの名無しさん:2006/12/15(金) 20:18:26
[1] 授業単元: C基礎
[2] 問題文(含コード&リンク):
入力された2つの整数(負数も可)の差の絶対値を求める。
最大8桁、−の場合は−を含め9桁まで有効としそれ以降は無視する。

また次のプロトタイプ宣言を持ち、絶対値を戻す関数を使用すること。

int absolute( int n1, int n2);

<エラー仕様>
整数以外の入力   "整数以外の入力"
'-'のみまたは改行のみ  "改行のみまたは'-'のみの入力"

[3] 環境
[3.1] OS: Windows XP Home Edition
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: Cのみ
[4] 期限: 2006年12月22日
[5] その他の制限: ポインタはまだ習ってないです。

250デフォルトの名無しさん:2006/12/15(金) 20:39:03
>>248
何がどう違うのかはっきり説明しないと、ここでは相手にされないぞ。
251デフォルトの名無しさん:2006/12/15(金) 20:41:48
>250
さすがにそれがわからないのはまずくないか?
252デフォルトの名無しさん:2006/12/15(金) 20:45:53
>>250
丸投げする側の人かな?
253デフォルトの名無しさん:2006/12/15(金) 20:50:52
>>1すら読まないような奴はまともに相手にされなくて当然では?
254デフォルトの名無しさん:2006/12/15(金) 20:52:36
>>251
わからないから教えてください。
255デフォルトの名無しさん:2006/12/15(金) 20:58:24
>>251-252
>>250は言葉通りに一般的な意味で>>248に助言してるだけかもしれないだろ。
他人の立場を推測して発言するのがそんなに不自然か?
256デフォルトの名無しさん:2006/12/15(金) 21:09:04
配列サイズ以下の入力だったときに改行文字を\0に変換してんだろ?
サイズ一杯に入ったときと場合わけしてないからおかしいことになってるけどな。
257デフォルトの名無しさん:2006/12/15(金) 21:30:40
>>256
どっちみちサイズ以上のときも後ろが無視されるわけだから
ぴったりに入った時1文字削られてもいいんじゃない?
258デフォルトの名無しさん:2006/12/15(金) 21:32:43
>>257
改行文字を含むファイル名は作れない

常に fopen が失敗する
259デフォルトの名無しさん:2006/12/15(金) 21:34:58
アンカーが違ったorz
260デフォルトの名無しさん:2006/12/15(金) 21:38:17
>257
例えばfgets(fname_in, 10, stdin)で一杯に入るとstrlen(fname_in)は9。
このときfname_in[8]は\0じゃないけど\0にすることになってまずいだろ。
261デフォルトの名無しさん:2006/12/15(金) 21:38:48
整理します
発端は>>238の fname_in[strlen(fname_in-1)] = '\0'; は無駄 という発言 …@
>>240>>238 の指摘は細かいと発言
>>238 それなら>>235の方が細かいだろと発言
ここで問題発生
>>238的には「そもそもいらない処理に指摘するなんて」と思う(この時点でこの処理@の不正さに気づいていたかは不明)
>>243としてはこの処理があった場合、strlen(fname_in-1)とstrlen(fname_in)-1の違いによって文字数の計算に支障をきたすからよくないと思う
>>244はアンカーが無いため誰に対する発言かがあいまい
明らかにおかしな値になることへの駄目出しと(235のことだろう)…A
冗長な手順に対する駄目出し(結果として致命的なミスしてる式が消える)(238のことだろう・244はこのコードの不正さに気づいている)…B
それに対して>>248(243側の人)が244の本来238に対しての発言Bを235への発言としてとってしまった

で、よろしいでしょうか(アンカーが多すぎるって怒られたので一部消しています)
違うなら・・・・・・ゴメンナサイ
262257:2006/12/15(金) 21:47:39
>>260
いや、だからさー

その場合でも標準入力に10文字を指定すると1文字は読み取られずに残っちゃうでしょ
つまりifで分岐してもファイル名は9文字までって制約がついちゃうなら

無条件に'\0'を代入してファイル名は8文字までって制約でも
いいんじゃないかというはなし
263デフォルトの名無しさん:2006/12/15(金) 21:50:20
ああ、スマン
fname_in[strlen(fname_in-1)] = '\0';が無駄とか言ってる阿呆と勘違いした。
264デフォルトの名無しさん:2006/12/15(金) 21:54:32
うわコピペするとこ間違えた。
fname_in[strlen(fname_in)-1] = '\0';な。
265デフォルトの名無しさん:2006/12/15(金) 22:00:30
結局 >>233 のおかしいところは

fgets(fname_in, COLSIZE + 1, stdin);
fname_in[strlen(fname_in-1)] = '\0';

fgets(fname_in, sizeof(fname_in), stdin);
if(fname_in[strlen(fname_in)-1] == '\n') fname_in[strlen(fname_in)-1] = '\0';

fp = fopen(fname_in, "r");

fp = fopen(fname_in, "r");
if(fp==NULL) return 1;

ってことでおk?
266デフォルトの名無しさん:2006/12/15(金) 22:19:00
>>265
ついでに FILENAME_MAX を使って欲しいくらいかな
267238:2006/12/15(金) 23:41:23
ちょっとガンプラ作ってたんでレスがおくれますた。
いやーなんか恥ずかしいな。
確かに \n を \0 にする意図が読めんかったんで的外れな事を書いちゃったみたいだね。
言い訳させてもらうと
>>240 の指摘は意味不明なので無視すべきだね。
>>243 の指摘は正しいけどもう少し説明してくれる方が親切だと思う。
で、>>258 が有効な説明をくれたという事でこの話終わって良い?

ここで又ネタを振るようで悪いんだけど、
fname_in[strlen(fname_in)-1] = '\0';
これは
char* ptr;
ptr = strchr( fname_in, '\n' );
if( ptr ) *ptr = '\0'
にすべきではないかなぁ。
良いコードはコメントが無くても意図が読める物だと思う...多くは語らないけど。
まぁ意図が読めなかったバカの独り言ですけどね。
268デフォルトの名無しさん:2006/12/15(金) 23:57:55
[1] 授業単元: オートマトン
[2] 問題文(含コード&リンク):
任意の決定性有限オートマトン(DFA,弱い決定性も含む)を模倣するプログラムをかけ。
外部のファイルで定義されたDFAを読み込むことにより、任意のDFAを模倣するものとする。
*注意
入力アルファベットは少なくとも英数字までは対応可にする。
状態数は少なくとも100個までは対応できるようにする。
[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 月曜までによろしくおねがいします。
[5] その他の制限:
269デフォルトの名無しさん:2006/12/16(土) 00:19:22
>>268
外部ファイルの定義は?
270デフォルトの名無しさん:2006/12/16(土) 00:25:40
>>192
数値を入れてしばらくすると
「セグメンテーション違反です」って
表示されて中止されます。どうしたらいいのですか?
271268:2006/12/16(土) 00:29:08
>>269

定義ファイル
ファイルのフォーマットは何でも可。

初期状態
最終状態の集合
状態遷移関数((状態、記号、次の状態)の3項組みで与える


-----begin DFA def----
0
12
0a1
0b1
1a2
1b1
2a0
----end DFA def------
「simulate DFA def」で起動後、例えば、aaaaを与えれば「受理しました」を、aabを与えれば「受理できませんでした」を出力。


272デフォルトの名無しさん:2006/12/16(土) 00:30:37
>>270
まずポインタや配列の添え字あたりをチェック
273デフォルトの名無しさん:2006/12/16(土) 00:32:19
>>272
早速ありがとうございます
スレ違いかもしれませんが関連して一つ、
セグメンテーション違反ってなんですか?
274デフォルトの名無しさん:2006/12/16(土) 00:34:55
275デフォルトの名無しさん:2006/12/16(土) 00:37:27
メモリ上でアクセスしちゃいけないとこにアクセスしようとしたってこと。
276デフォルトの名無しさん:2006/12/16(土) 00:40:26
なるほど ありがとうございます
あと、セグメンテーション違反が出たのは>>182のことです
間違えてすみません
277デフォルトの名無しさん:2006/12/16(土) 00:41:14
>>181ですw
278デフォルトの名無しさん:2006/12/16(土) 00:58:42
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
前スレでプログラムを作ってもらったのですが、つき返されました。

配列に格納されたデータをソートするプログラムを作成するにあたり、以下の機能を持つ関数を作成しなさい。
乱数を生成し配列要素に格納する
 init_array(int *pa, int n)
配列要素を1行で画面に出力する
 output_array(int *pa, int n)
指定された2つアドレスのデータを交換する
 swap(int *x, int *y)
↓前スレで作っていただいたプログラム
void init_array(int *pa, int n){
for(n--;n>=0;n--)
pa[n]=rand();
}
void output_array(int *pa, int n){
for(n--;n>=0;n--)
printf("%d ",pa[n]);
}
void swap(int *x, int *y){
*x^=*y^*x^=*y;
}
つき返されたコメント:乱数の生成手順を守りましょう。
for文も正しくないと言ってよいレベルです。ごく普通に、0からn-1まで処理しましょう。
[3] 環境
 [3.1] OS: windows xp
 [3.2] コンパイラ名とバージョン: visualstudio2003
 [3.3] 言語: C言語
[4] 期限:2006/12/16 18:00
[5] その他の制限:なし
よろしくお願いします。
279デフォルトの名無しさん:2006/12/16(土) 01:01:03
>>278
なぜこうしたのか聞かれなかった?
質問に答えられた?
280デフォルトの名無しさん:2006/12/16(土) 01:04:01
つーか自分でやらなかったのがバレてんじゃねーの?
281デフォルトの名無しさん:2006/12/16(土) 01:04:32
>>278
>乱数の生成手順
って学校で指定でもされたものがあんの?
条件がはっきりしない。
>ごく普通に、0からn-1まで処理
先頭から順に配列に入れていけという指示でもあったん?
282デフォルトの名無しさん:2006/12/16(土) 01:06:41
乱数の生成手順ってsrand()使うのかな?
283デフォルトの名無しさん:2006/12/16(土) 01:07:14
乱数の発生手順って、そもそもrand();だけじゃ毎回同じパターンの
乱数でしかなかった気がするが、それが指摘されたとか?
srand(time(NULL));と<time.h>を追加するとか?
284デフォルトの名無しさん:2006/12/16(土) 01:09:31
>>278
それくらい自分で直せよ。
285デフォルトの名無しさん:2006/12/16(土) 01:13:22
>for文も正しくないと言ってよいレベル
どこがどう正しくないのか質問してみたら?
286デフォルトの名無しさん:2006/12/16(土) 01:14:32
逆順に印字してるからだろ
287デフォルトの名無しさん:2006/12/16(土) 01:18:02
>>284 はい、自分でプログラムします。
288デフォルトの名無しさん:2006/12/16(土) 01:55:58
swapもだけど、嫌がらせのように他人に丸投げしたのがバレバレなコードだなw
嫌みなんだろうけど、スレ的も問題的にも、何ら問題は無いんだよね。
突き返された本当の理由は、明らかに他人の手を借りてるのがバレバレだから自分でやれってこと。
for文の中身の意味はわかる?あれを逆順にして、初期化を0にして、nにならないようにしてやれば良い(n-1まではインクリメントして、その後止まるように)。
289デフォルトの名無しさん:2006/12/16(土) 02:17:52
>>278
void init_array(int *pa, int n){
srand(time(NULL));
for(int i=0;i<=n-1;++i)pa[i]=rand();
}
void output_array(int *pa, int n){
for(int i=0;i<=n-1;++i)printf("%d ",pa[i]);
}
2901:2006/12/16(土) 02:32:18
[1] 授業単元: コンピュータ実習
[2] 問題文(含コード&リンク):
/home/staff/public/yokoyama/sample/ にある data.txt, data2.txt, data3.txt
をソートするプログラムを作成する。以下の雛形を用いてもよい。
ソートした結果の上位10個の要素を表示するようにしなさい。
---------------------雛形( kadai19_file_malloc_org.c)-----------
#include <stdio.h>
int *data;
int main(int argc, char *argv[])
{
int n;
int num;
char inFileName[64];
if (argc > 1) strcpy (inFileName, argv[1]);
else { printf("File name ? : ");
scanf("%s", inFileName);
}
num = read_data_file( inFileName );
291デフォルトの名無しさん:2006/12/16(土) 02:32:54
でも、srandはinit_arrayに入れちゃだめだとおもうんだよなー
こんなコード書いたら同じ値が出る可能性高いし
int main(){
  int i,d[5];
  for(i=0;i<10;i++){
    init_array(d,5);
    output_array(d,5);
    printf("\n");
  }
  return 0;
}
2922:2006/12/16(土) 02:32:58
// sort_func ( data, num);
for (n=0; n<10; n++) printf("%3d %d\n",n+1, data[n]);
free( (int *)data);
}
int read_data_file( char inFileName[])
{
char str[256];
FILE *fp;
int n, num;
if ( ( fp=fopen(inFileName, "r") )== NULL)
{ perror("fopen"); exit(1); }
num = 0;
while( fgets(str,256,fp) ) num++;
if ( (data = *************************) {
perror("malloc"); exit(1);
}
rewind(fp);
n = 0;
while( fgets(str, 256, fp) ) {
data[n++] = atoi(str);
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 12月20日
[5] その他の制限: mallocを必ず使用する
293デフォルトの名無しさん:2006/12/16(土) 02:36:28
>>290
data.txt, data2.txt, data3.txt は?
294デフォルトの名無しさん:2006/12/16(土) 03:41:21
>>290
おざなりなmalloc
#include<stdio.h>
#include<stdlib.h>
#define PRINTNUM 10
void maxinsertionsort(int data[],size_t count,int number){
  int i;
  for(i=0;i<count;i++){
    if(data[i]<number)break;
  }
  if(i==count)return;
  for(;i<count;i++){
    int tmp=data[i];
    data[i]=number;
    number=tmp;
  }
}
int main(int argc,char *argv[]){
  char buf[32];
  int i,*data=malloc(PRINTNUM*sizeof(int));
  if(!data) perror("malloc"),exit(1);
  memset(data,0,PRINTNUM*sizeof(int));
  for(i=1;i<argc;i++){
    FILE *fp=fopen(argv[i],"r");
    if(!fp)continue;
    while(fgets(buf,sizeof(buf),fp)) maxinsertionsort(data,PRINTNUM,atoi(buf));
    fclose(fp);
  }
  for(i=0;i<PRINTNUM;i++) printf("%d\n",data[i]);
  free(data);
  return 0;
}
295デフォルトの名無しさん:2006/12/16(土) 03:43:43
>>291
初期化済みフラグを static で持つとか?
296246:2006/12/16(土) 08:30:18
なんかこのスレ面白くないな。
NAMESIZE+4 に食いてく奴を期待してたんだけど....
がっかりだよ。
297デフォルトの名無しさん:2006/12/16(土) 08:52:14
宿題丸投げスレでスタックフレームを意識しても
29857:2006/12/16(土) 11:32:06
面目ない、ゆえあってスレから離れていました。
いちどきに多数の質問、ソーリー。
そして答えてくれた方々ベリーサンキューありがとお!!!
299 ◆23iJ.6jzS6 :2006/12/16(土) 12:17:46
[1] 授業単元: C言語

[2] 問題文(含コード&リンク):辺の長さを入力(2〜9) その長さに対応したひし
形と六角形を*で表示

[3] 環境

 [3.1] OS: Windows

 [3.2] コンパイラ名とバージョン: VC6.0

 [3.3] 言語: どちらでも可

[4] 期限:17日10時
300デフォルトの名無しさん:2006/12/16(土) 12:52:53
よろしくおねがいします。

[1] 授業単元: C言語
[2] 問題文(含コード&リンク): nの値を入力して、rが1〜9のときのnCrを表示せよ。ただし、com(m,q)、fact(m)を定義すること。

[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12/22迄
[5] その他の制限: 口頭において、「n=10,20を入力。n=20はn=10を修正して。」と言っていました。
301192:2006/12/16(土) 15:24:47
>>270
わたしもよく分かりません。
このプログラムはランダムで精製された四桁の数(数は全て異なっていなければならない)を当てる数当てゲーム。
四桁の整数を入力して、場所と数の両方で合っているのならhit、そうでなければblowを表示して、最終的に全ての数を当てたらcompleteで終了する。
一連の動作中にcompleteが表示されるまで最初にランダムで設定された数は書き換わらないという物なのですが・・・。
皆さんでも分かりませんか・・・?
302デフォルトの名無しさん:2006/12/16(土) 15:41:39
>301
for(i=0;i<N;i++){if((In[i]=getchar()) ==EOF) break; // この部分 //
In[i]-='0';}
ここがおかしい
303デフォルトの名無しさん:2006/12/16(土) 15:59:20
[1] C++ プログラミング
[2] 問題 int t=read(fail_name.c_str());で関数内へ持って行きデータを読み込む関数を作る

↓自分が作成したもの
int read(string fname)
{
ifstream fin(fname.c_str());
}
[3] 環境
 [3.1] OS: Windows
 [3.2] VC++2005ExpressEdition
 [3.3] C++
[4] 12/16
[5]
 「1番目の引数に対して既定の引数がありません。」と表示されてしまいます。
コンパイルエラーの原因がなんだか分らなくて困っています・・・
ifstreamの後はこのような感じでいいんでしょうか・・・・
304123 ◆oSFr1044HU :2006/12/16(土) 16:48:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):次に示すデータに関して以下の計算を行え
              一次式に当てはめてその式を示す。同時に2乗累積誤差Eを求める。
              二次式に当てはめ上と同じことを行う。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:どちらでも可
[4] 期限:[2006年12月22日12:00まで]
[5] その他の制限:ガウスジョルダン法にデータを引き渡して計算する。

x -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6
y 13.4, 7.2, 2.7, 1.2, 0.6, 3.1, 6.9, 12.5, 20.8, 31.7, 44.0

助けてください。
305デフォルトの名無しさん:2006/12/16(土) 16:52:17
306123 ◆oSFr1044HU :2006/12/16(土) 16:54:42
コンパイラはbccでした。
すみません。
307デフォルトの名無しさん:2006/12/16(土) 17:16:05
>>181
どこを直せばいいのですか?
308デフォルトの名無しさん:2006/12/16(土) 17:53:51
[1] 授業単元:計算機演習
[2] 問題文(含コード&リンク):乱数のプログラムのアルゴリズムを答えよ

[3] 環境[3.1] OS:Linux[3.2] コンパイラ名とバージョン:gcc  [3.3] 言語:C言語
[4] 期限: [2006年12月19日12:00まで][5] その他の制限:無し
309デフォルトの名無しさん:2006/12/16(土) 18:21:10
308
こちらがプログラムです
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 4
int main(){
int Number[N],In[N];                 //関数の宣言
int i,j,hit,blow,flag;
srand(time(NULL));             //実行のたびに同じ擬似乱数を発生させる
for(i=0;i<N;i++)
{
Number[i]=rand()%10;     //Number[i]が重ならないように乱数にする
flag=1;
while(flag) {                 //繰り返す
flag=0;
for(j=0;j<i;j++) {
while(Number[i]==Number[j]) {      
Number[i]=rand()%10; //乱数を繰り返す
flag=1;                 
}
//printf("交換 %d\n",Number[i]); }}}
310308:2006/12/16(土) 18:22:14
309の続き
}
}
}


printf("%d,%d,%d,%d\n", Number[0],Number[1],Number[2],Number[3]);

do{
printf("%d桁の数を入力!:",N);         

scanf("%d,%d,%d,%d",&In[0],&In[1],&In[2],&In[3]); //数字を表示させる



hit=0,blow=0;                  //数字の初期化
for(i=0;i<N;i++){if(Number[i]==In[i]) hit++;} //Number[i]とIn[i]が同じ値のとき
関数を繰り返す
for(i=0;i<N;i++){for(j=0;j<N;j++){if(Number[i]==In[j]) { //Number[i]とIn[j]同じ値のとき
blow++;                  関数を繰り返す
 
break;
}}}

printf("%dHit,%dBlow\n",hit,blow-hit);    //hitとblowを表示
}while(hit!=N); //hitを繰り返す

for(i=0;i<N;i++) printf("%d",Number[i]);

puts("\nComplete!!");
}
311デフォルトの名無しさん:2006/12/16(土) 18:31:31
とりあえず関数について勉強してきた方がいいと思う
312デフォルトの名無しさん:2006/12/16(土) 18:34:42
>>308
で、何を知りたい?
rand() の中身?
>>309 の動作説明?
313デフォルトの名無しさん:2006/12/16(土) 18:37:51
>>300
次のサイトに貼り付けて解凍すること:http://www.geocities.jp/c_cpp_cs/code/code.html

n=10の場合。
VY7BDoIwEETPkPAPEwxJK6hwhnrxN7wQCrEJbaWAF+O/uxXQeNrtTN/s7JRp+lm2qMZJKnu8naMwCpW
Z0NXNxPyiOZ5RGKgOTEMI5ByunWZnUJSkt/3YboLGfuE0Dig42a8trrF6Scvgx7CErtzCcJx+9PB9DX
85ulaGPaySayuSDASKPIPzdTrrwJxXSjhUZNBMU05WcHf0vWNxIi+JFIm8mjiDITD71PMb98e2Wrk//
AY=

n=20の場合。
VY7BDoIwEETPkvAPEwxJK1WpV6gXf8MLoRCb0CIFvBj/3daCxtPuzu6bna0ydTfLBuU4SdUfbuc4iiN
lJrRVPRHfaIpnHG1UC6IhBHIK20yzNeCF05tubFZBYxc4jT04devXalf3Orgx+DIE04ULDMXxRw/faf
jz0ZUy5NEruaRykoHAKWewPk7bWxDrFF7AogTPXc0y6labu3XnLUlSeUmlSOXVJAzGgewTz3fUP1tj5
f7xGw==
314308:2006/12/16(土) 18:39:26
申し訳ないですが両方お願いします・・・
315デフォルトの名無しさん:2006/12/16(土) 18:45:18
316デフォルトの名無しさん:2006/12/16(土) 19:07:29
>>303
どう考えても
int read(char* fname)
{
ifstream fin(fname);
だわな
317308:2006/12/16(土) 19:09:40
>>315
有難うございます
318デフォルトの名無しさん:2006/12/16(土) 20:58:13
>>315
↓によると、Linux の rand() はもはや線形合同法ではないらしい。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/rand.3.html
319デフォルトの名無しさん:2006/12/16(土) 21:03:21
>>268
おねがいします。
320 ◆23iJ.6jzS6 :2006/12/16(土) 21:13:43
>>299
よろしくお願いします。
321デフォルトの名無しさん:2006/12/16(土) 21:33:43
>>181
どこが間違ってますか?
322デフォルトの名無しさん:2006/12/16(土) 21:40:28
>>321
どこか間違ってるか?
323デフォルトの名無しさん:2006/12/16(土) 21:43:41
>>320
無理。
辺の長さだけではひし形を決定できない。
日曜に提出ってへんな学校。
324デフォルトの名無しさん:2006/12/16(土) 21:44:55
>>321
俺の目が節穴でなければ,181におかしいところはない.

>>299
#include <stdio.h>
void drawdiamond(int l){ int i,j;
for (i=0; i<l; i++){
for (j=0; j<l; j++) putchar(i+j==l-1? '*' : ' ');
for (j=1; j<l; j++) putchar(i==j? '*' : ' ');
putchar('\n'); }
for (i=1; i<l; i++){
for (j=0; j<l; j++) putchar(i==j? '*': ' ');
for (j=1; j<l; j++) putchar(i+j==l-1? '*' : ' ');
putchar('\n'); }}
void drawhexagon(int l){ int i,j;
for (i=0; i<l; i++){
for (j=0; j<l; j++) putchar(i+j==l-1? '*' : ' ');
for (j=1; j<l; j++) putchar(i==0? '*' : ' ');
for (j=1; j<l; j++) putchar(i==j? '*' : ' ');
putchar('\n'); }
for (i=1; i<l; i++){
for (j=0; j<l; j++) putchar(i==j? '*' : ' ');
for (j=1; j<l; j++) putchar(i==l-1? '*' : ' ');
for (j=1; j<l; j++) putchar(i+j==l-1? '*' : ' ');
putchar('\n'); }}
int main(){ int l;
printf("input l (2-9): "); scanf("%d", &l);
if (l<2 || l>9) { printf("out of range\n"); return 0; }
drawdiamond(l); putchar('\n'); drawhexagon(l); }
325デフォルトの名無しさん:2006/12/16(土) 21:53:30
>>324
セグメンテーション違反って出る。。。
326796:2006/12/16(土) 22:07:06
[1] 授業単元:プログラミング演習
[2] 問題文
品物の大きさ, 価値, 品数, そしてナップサックの大きさを引数として, 最適解(価値の合計)を
返す関数knapsackとmain関数を作成せよ. ここでの各品物が取りうる数は, 0または1とする(つまり0,1整数
変数とする). 必要ならば関数knapsackに新たな引数を追加してもよい.

int knapsak(int size[], int price[], int n, int knapsize);

TEST_DATA

ナップサック容量 : 8

品数 : 5

品物 大きさ 価値

0 4 45

1 5 55

2 2 20

3 1 10

4 6 60

[3] 環境[3.1] OS:Linux[3.2] コンパイラ名とバージョン:gcc  [3.3] 言語:C言語
[4] 期限: [2006年12月17日まで]
327デフォルトの名無しさん:2006/12/16(土) 22:49:16
>>320 ひし形? main() とかは自分で書いてね。
static void drawDia( int n )
{
int i, j;

for( i = n - 1; i > 0; i-- ) {
for( j = 0; j < i; j++ ) putchar( ' ' );
for( j = 0; j < ( n - i ) * 2 - 1; j++ ) putchar( '*' );
printf( "\n" );
}
for( j = 0; j < n * 2 - 1; j++ ) putchar( '*' );
printf( "\n" );
for( i = 1; i <= n - 1; i++ ) {
for( j = 0; j < i; j++ ) putchar( ' ' );
for( j = 0; j < ( n - i ) * 2 - 1; j++ ) putchar( '*' );
printf( "\n" );
}
}
328デフォルトの名無しさん:2006/12/16(土) 22:50:03
>>320 六角?
static void drawHex( int n )
{
int i, j;

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

329デフォルトの名無しさん:2006/12/16(土) 22:50:09
>>325
出なかったよ…
ソースはコピペした?見て自分で書いた?
330デフォルトの名無しさん:2006/12/16(土) 23:09:24
>>181って>>96の答えだよね?
331デフォルトの名無しさん:2006/12/16(土) 23:33:08
>>329
見て書きました
明日もう一度確認してきます
332デフォルトの名無しさん:2006/12/16(土) 23:50:36
>>331
ならたぶんソースの写し間違い
コピペするよろし
333デフォルトの名無しさん:2006/12/16(土) 23:52:04
>>190
どうかお願いします<(_ _)>
334デフォルトの名無しさん:2006/12/17(日) 00:06:33
>>333
1) の場合と 2) の場合の2つ作れということね
>フロアには障害物を置けるようにし、障害物は##で表せ
任意に置けるってことだよね
経路が存在しない場合、または以下の状態になるときは解なしでいいね
1) 2回以上通らなければいけない道が存在する
  1回も通らない場所が存在する
2) 3回以上通らなければいけない道が存在する
  1回も通らない場所が存在する

暇つぶしにやるつもりなので回答できないかもしれない
335デフォルトの名無しさん:2006/12/17(日) 00:10:51
>>334
>2) 3回以上通らなければいけない道が存在する
繋がってさえいれば必ず2回で十分。
全ての道を二本に分裂させると考えれば、全ての頂点から出る
辺の数が偶数になるので、一筆書き可能。
336デフォルトの名無しさん:2006/12/17(日) 00:13:33
337L ◆FTiifLi0KU :2006/12/17(日) 00:21:21
[1] 授業単元: プログラミング演習
[2] 問題文
キーボードから元金、返済回数、利率を入力し、支払い額、利息、残高を表示する。
http://ranobe.com/up/src/up158197.jpg のように表示をしろとのことです。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語:C++
[4] 期限: 12月18日
[5] その他の制限:制限というかコンソールアプリケーションまでしか習ってません。

経営学部の人間なのですが、お手上げ状態ですのでなにとぞお願いします。
338デフォルトの名無しさん:2006/12/17(日) 00:23:02
>>337
プリントスクリーンを知らないのか?
339L ◆FTiifLi0KU :2006/12/17(日) 00:23:58
はい、聞いたことないです。
340デフォルトの名無しさん:2006/12/17(日) 00:28:32
>>339
キーボードの右上のほうにPrintScreenってないか?
コマンドプロンプトをアクティブにした状態で
Alt + PrintScreen
と押せ
341デフォルトの名無しさん:2006/12/17(日) 00:29:49
押しても何も起こりませんっ!ってレス予想
342デフォルトの名無しさん:2006/12/17(日) 00:30:36
>>341
鬼才現る
343デフォルトの名無しさん:2006/12/17(日) 00:31:17
すまん、あげちまった
344L ◆FTiifLi0KU :2006/12/17(日) 00:36:27
あ〜少しヒヨってました。結果の表示が見づらいってことでしょうか?
これは授業中に教授のを撮ったヤツなのでスクリーンショットを撮っても今は無いんです。

写メでうつってる結果表示は

元金?
支払い回数?
利率(%)?
回数 支払額 利息 残高
□  □□□ □□ □□


な感じになってます。
色々とすみません。
345デフォルトの名無しさん:2006/12/17(日) 00:38:02
PrintScreenのキーはPrtScなどと略されてる場合もある。
それを押したらペイントを起動して貼り付けて保存。
346デフォルトの名無しさん:2006/12/17(日) 00:45:47
>>337
支払額の算出ルールが解らんなぁ。
普通に考えると
1)最終回以外は均一
2)支払い総額最低
だと思うんだけど、写真では毎回支払い金額が異なるしなぁ。
なんか条件無いの?
347L ◆FTiifLi0KU :2006/12/17(日) 00:50:23
何も聞かされてません。
問題文と画像を見せられて作ってきて、って言われただけでした。
多分、そこら辺は適当でよいのかもしれません。

楽なプログラムの方で構いませんのでよろしくお願いしますm(__)m
348デフォルトの名無しさん:2006/12/17(日) 00:50:31
>>337
#include<stdio.h>
int main(void){
long gankin, zandaka, risoku, siharai,risoku_total=0L, siharai_total=0L;
int i, kaisuu, nokori_kaisuu;
double riritu;

printf("元金?");
scanf("%ld", &gankin);
printf("支払回数?");
scanf("%d", &kaisuu);
printf("利率(%)?");
scanf("%lf", &riritu);
riritu/=100.0;

zandaka=gankin;
printf("%4s %8s %8s %10s\n", "回数", "支払額", "利息", "残高");
for(i=1;i<=kaisuu;i++){
nokori_kaisuu=kaisuu+1-i;
risoku=zandaka*riritu;
siharai=zandaka/nokori_kaisuu+risoku;
zandaka+=risoku;
zandaka-=siharai;
printf("%4d %8ld %8ld %10ld\n", i, siharai, risoku, zandaka);
risoku_total+=risoku;
siharai_total+=siharai;
}
printf("%4s %8ld %8ld\n", "計", siharai_total, risoku_total);

return 0;
}
349L ◆FTiifLi0KU :2006/12/17(日) 00:54:15
自分を除く>>338〜348の方々

速急な対応ありがとうございました。
お陰で単位を落とさずに済みそうです。

謝謝ですm(__)m
350デフォルトの名無しさん:2006/12/17(日) 00:55:57
>>349
>>348 を出すのか?写真の入力だと支払い総額が200万を超えるけど。
351L ◆FTiifLi0KU :2006/12/17(日) 01:00:35
写真の元金が3(2?)5万って書いてあるっぽいんので多分大丈夫かと・・・
352デフォルトの名無しさん:2006/12/17(日) 01:05:25
もし必要ならこれを追加すればおk
riritu=pow(riritu+1.0, 1./12)-1.0;
353デフォルトの名無しさん:2006/12/17(日) 01:05:37
利率を12で割ればいい感じになるっぽい
354デフォルトの名無しさん:2006/12/17(日) 01:07:30
本当だ。複利じゃなくて単利みたいだね。
355L ◆FTiifLi0KU :2006/12/17(日) 01:09:05
>>352-354
最後のツメまでありがとうございます。
356デフォルトの名無しさん:2006/12/17(日) 01:15:51
SSと数値が 1 違うみたい
計算過程で切り捨てられちゃったかな?
SSの方が正解だけどね
357デフォルトの名無しさん:2006/12/17(日) 01:21:19
計算途中に
1.0/3*3
相当の部分があるからそこで切り捨てられてると思われ
358350:2006/12/17(日) 01:32:06
なんかコード書いてるうちに >>348 が改善されたっぽいので不要かも知れないけど。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3203.txt

>>346 で書いたルールにより算出。(バカっぽいやり方だけど)
写真より少し支払い総額が減った。
359デフォルトの名無しさん:2006/12/17(日) 01:46:34
360デフォルトの名無しさん:2006/12/17(日) 04:11:36
問題:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3204.txt
 OS:Windows
言語:C/C++どちらでも可
期限:12月20日
よろしくお願いします。
361デフォルトの名無しさん:2006/12/17(日) 05:32:45
>>360
#include <stdio.h>
int main(void){
    unsigned char filepath[256];
    unsigned int numchar,i;
    FILE *fp;
    printf("Please input the file name ... ");scanf("%s",filepath);
    printf("Please input the number of characters ... ");scanf("%u",&numchar);
    fp=fopen(filepath,"rb");
    if(fp==NULL) return 1;
    for(i=0;;){
        int c=fgetc(fp);
        if(feof(fp)) break;
        if(!(c=='\n'||c=='\r'||c==' '||c=='\t')){fputc(c,stdout);if(++i%numchar==0){i=0;fputc('\n',stdout);}}
    }
    fclose(fp);
    return 0;
}
362デフォルトの名無しさん:2006/12/17(日) 06:23:51
>>359
元金 % 回数 != 0 のときに…
363デフォルトの名無しさん:2006/12/17(日) 06:32:18
>>358
処理できない場合が多いみたい
回数を24回から23回に変更したときとか
364358:2006/12/17(日) 10:39:14
>>363
7行目がバグってた。
正しくは

start = (int)( ( (double)rent * rate * time ) + (double)rent ) / time + 1;

借入金額が極端に少ない場合も処理できないけど、これは仕様。

365デフォルトの名無しさん:2006/12/17(日) 10:46:09
明らかに使い物にならないソフトでも、仕様と言えば通ると思ってる
やつを量産した MS の罪は重いな。
366358:2006/12/17(日) 10:57:10
>>365
まぁ500円を24回払いで年利2.9% とか言われたら計算できないよ。
600円なら計算できたけど...まぁガキの貸し借りには使えないソフトだな。

ちなみに回数を36回で年利120%にするとトイチの計算になるが、元金の2.5倍以上の金利が
かかるのな。儲かるわけだわ。
367デフォルトの名無しさん:2006/12/17(日) 10:58:29
[1] 授業単元:ネットワークプログラミング
[2] 問題文(含コード&リンク):ttp://ehoba.mydns.jp/phpuploader/img/pup1607.rar
[3] 環境
 [3.1] OS:Redhat9
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:C
[4] 期限:2006/12/20
[5] その他の制限:なし。

お願いいたします。
368デフォルトの名無しさん:2006/12/17(日) 11:27:33
>>348
ケインズの乗数定理を使えばもっと簡潔にできるんではあるまいか
369326:2006/12/17(日) 13:04:19
自分のプログラムもぜひお願いします
370268:2006/12/17(日) 13:38:41
私のもおねがいします!
371デフォルトの名無しさん:2006/12/17(日) 13:53:54
>>326
>ここでの各品物が取りうる数は, 0または1とする(つまり0,1整数変数とする).

とあるけど各品物は1つしか入れられないって事?
だったら簡単そうだけど。
372326:2006/12/17(日) 14:01:49
たぶんそうだと思います
373デフォルトの名無しさん:2006/12/17(日) 14:03:26
>>372
#include <stdio.h>
#define MAXSIZE 100
#define INF 99999999
int knapsak(int size[], int price[], int n, int knapsize) {
  int i, x, ret;
  int table[MAXSIZE];
  for (i = 0; i <= knapsize; ++i)
    table[i] = -INF;
  table[0] = 0;
  for (i = 0; i < n; ++i) 
    for (x = knapsize - size[i]; x >= 0; --x) 
      if (table[x + size[i]] < table[x] + price[i])
        table[x + size[i]] = table[x] + price[i];
  ret = 0;
  for (x = 0; x <= knapsize; ++x)
    if (ret < table[x]) ret = table[x];
  return ret;
}
int main() {
  int knapsize = 8;
  int n = 5;
  int size[] = {4,5,2,1,6};
  int price[] = {45,55,20,10,60};
  printf("%d\n", knapsak(size, price, n, knapsize));
}
374326:2006/12/17(日) 14:05:23
>>373
ほんとにありがとうございます
375デフォルトの名無しさん:2006/12/17(日) 14:06:25
>>371
何個でも使ってよい場合は 373 で次のように書き換えるだけ。
before: for (x = knapsize - size[i]; x >= 0; --x)
after: for (x = 0; x <= knapsize - size[i]; ++x)
376デフォルトの名無しさん:2006/12/17(日) 14:06:35
>>372
もう1つ質問。
品物の種類数 n の最大値を 32 にして良い?
そうじゃないと非常に難しい。
組み合わせ数が 2^32 以上になると unsigned int でループを回せなくなるので。
377372:2006/12/17(日) 14:11:38
大丈夫だと思います
378デフォルトの名無しさん:2006/12/17(日) 14:19:58
>>373
の回答がエレガントなので書くの止めます。
いまいち理解できてないけど。
379デフォルトの名無しさん:2006/12/17(日) 14:40:56
>>370
弱い決定性って何?
380360:2006/12/17(日) 14:45:17
<<361遅くなってすみません、ありがとうございました。
381デフォルトの名無しさん:2006/12/17(日) 14:47:37
問題:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3207.txt
 OS:Windows
言語:C/C++どちらでも可
期限:12月20日
よろしくお願いします。
382245:2006/12/17(日) 15:12:07
どなたかお願いします
383デフォルトの名無しさん:2006/12/17(日) 15:45:52
タイマー等の実行中のプログラムにスタート、ストップ機能をつけるという宿題が出たのですが
割り込みはどうすればよいのでしょうか?
384デフォルトの名無しさん:2006/12/17(日) 16:01:13
>>383
ここの決まり事くらい守ってもらおうか?
385デフォルトの名無しさん:2006/12/17(日) 16:21:45
386デフォルトの名無しさん:2006/12/17(日) 17:55:31
[1] 授業単元:情報工学
[2] 問題文:以下に示したプログラムを改良して、前にある配列よりも小さい値を羅列せよ。
       (最小値を求める問題ではない)

動作はこんな感じだと思います。
入力するランダム配列:50 30 50 10 80 20
出力される配列:30 10

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] gcc
 [3.3] 言語:C言語
[4]特になし

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
/*--- 要素数nの配列aの要素の最小値を求める ---*/
int minof(const int a[], int n)
{
int i;
int min = a[0];/* 最小値 */

for (i = 0; i < n; i++)
if (a[i] < min) min = a[i];
return (min);
}
387デフォルトの名無しさん:2006/12/17(日) 18:20:32
>386
20は出力されないの?
388デフォルトの名無しさん:2006/12/17(日) 18:34:06
20 ≧ 10 ってことでしょ
389デフォルトの名無しさん:2006/12/17(日) 18:43:37
>>381
こちらでいかがでしょうか?
http://sa-wiki.com/upload/src/up0082.txt
390デフォルトの名無しさん:2006/12/17(日) 18:45:35
>386
void f(int a[], int n)
{
int i, min = a[0];

for(i=0; i<n; i++) {
if(a[i]<min) {
printf("%d ", a[i]);
min = a[i];
}
}
}
391デフォルトの名無しさん:2006/12/17(日) 19:06:21
>>390を参考にしたところうまく実行できました
ありがとうございます
392デフォルトの名無しさん:2006/12/17(日) 19:48:50
環境:windows xp、c、gcc
(1) 3 桁の整数で,各桁の数字の3 乗和がもとの数と等しくなるものをすべて求めなさい。
(2) 整数nを読み込み素因数分解、すなわちnを素数の積に分解しなさい。
簡単な関数のみでおねがいします。
全然わかりません。
393デフォルトの名無しさん:2006/12/17(日) 20:48:21
>392
(1)
#include<stdio.h>
#include <math.h>
int f(int n){
int sum = 0;
while(n) {
sum += pow(n%10, 3);
n /= 10;}
return sum;}
int main(void){
int i;
for(i=100; i<1000; i++) if(i==f(i)) printf("%d\n",i);
return 0;}
394デフォルトの名無しさん:2006/12/17(日) 20:58:56
>>392
(2)
#include <stdio.h>
int main() {
  int p, n;
  scanf("%d", &n);
  for (p = 2; p*p < n; ++p) 
    for (; n % p == 0; n /= p)
      printf("%d ", p);
  if (n > 1) printf("%d", n);
}
395デフォルトの名無しさん:2006/12/17(日) 21:06:04
396デフォルトの名無しさん:2006/12/17(日) 21:06:25
× for (p = 2; p*p < n; ++p)
○ for (p = 2; p*p <= n; ++p)
397デフォルトの名無しさん:2006/12/17(日) 21:21:30
>>395
何故かMS-Windowsのビットマップはデータの上下が反転しているので
こうじゃあるまいか?
tmp[w*3 + (HEIGHT-1-h)*WIDTH*3] = (bitmap[w+h*WIDTH] &255 );
tmp[w*3+1 + (HEIGHT-1-h)*WIDTH*3] = ((bitmap[w+h*WIDTH] &65280) /256 );
tmp[w*3+2 + (HEIGHT-1-h)*WIDTH*3] = ((bitmap[w+h*WIDTH] &16711680) /(256*256));
398デフォルトの名無しさん:2006/12/17(日) 21:25:05
>>394
なんか変です、1がたくさん出てきます
399デフォルトの名無しさん:2006/12/17(日) 21:32:59
>>398
「なんか変です」 じゃなくて何を入力したら何が出たかをきちんと書こうな。
400デフォルトの名無しさん:2006/12/17(日) 21:35:55
$ ./a.exe
88
22211

となってます
401デフォルトの名無しさん:2006/12/17(日) 21:37:59
>>400
2*2*2*11=88
402395:2006/12/17(日) 21:38:31
>>397
ああ 全部塗りつぶしで試したから気づかなかった
403デフォルトの名無しさん:2006/12/17(日) 21:44:00
>>401
死にます



ありがとうございました
404デフォルトの名無しさん:2006/12/17(日) 21:51:23
ある数値を渡されると、その数値の 2 乗を求め、
その値を return する関数 pow を作る。

main 関数において、1 から 10 までの数値の
2 乗を pow 関数を呼び出して求め、それぞれの値とその合計を表示する。
このソースコードをおしえてください。
405デフォルトの名無しさん:2006/12/17(日) 22:04:10
#include <iostream>
using namespace std;

int pow(int x){
return x * x;
}

int main(){
int sum = 0;

for(int i = 1;i <= 10;i++){
int p = pow(i);
cout << p << endl;
sum += p;
}

cout << sum << endl;

return 0;
}
406デフォルトの名無しさん:2006/12/17(日) 22:07:28
問題:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3207.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3204.txt
 OS:Windows visual studio 2005
言語:C++
期限:12月20日
以前に教えていただいたんですがうまくコンパイルできなかったのでもう一度教えてください、お願いします。
407デフォルトの名無しさん:2006/12/17(日) 22:11:51
>>406
コンパイルできなかったからゼロからやりなおせって?
コンパイルできない原因をつきとめろよ。
408デフォルトの名無しさん:2006/12/17(日) 22:14:12
>>406
>うまくコンパイルできなかったので
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
409デフォルトの名無しさん:2006/12/17(日) 22:28:09
>>408詳しく書かなくてすみませんでした。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3204.txtは
error C2664: 'fopen' : 1 番目の引数を 'unsigned char [256]' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)
1>指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
ていうエラーが出ました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3207.txt
こちらのほうは書き込んだんですが教えていただけなかったので一緒にしてしまいました。
>>409
見たまんまじゃないかwwwwwwww

reinterpret_cast<const char *>(buf)

とか
(const char*)

とか付けて明示的にキャストして渡せばおk


でもunsigned charな時点でちょっと痛い
411デフォルトの名無しさん:2006/12/17(日) 22:40:16
>>406>>409
ここに聞くまでも無くコンパイラさんが答えを言ってるじゃないか。
アホか。
412367:2006/12/18(月) 00:09:29
私のもぜひお願いいたします。
413デフォルトの名無しさん:2006/12/18(月) 00:34:57
rarが怖くて開けない漏れはヘタレ
414デフォルトの名無しさん:2006/12/18(月) 00:59:27
じゃあ俺もヘタレ
415デフォルトの名無しさん:2006/12/18(月) 01:07:38
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):最大カット問題を解くプログラムを作成せよ。
以下の図(ノードとエッジの数はあらかじめ入力されている)のグラフに対する最大カット問題の解を表示せよ。
最大カット数と、そのときのカット方法を表示するプログラムを表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限: 年内
416367:2006/12/18(月) 01:09:28
rarでは怖いとのことなので、

[1] 授業単元:ネットワークプログラミング
[2] 問題文(含コード&リンク):ttp://www.newsstation.info/up/img/ns16361.c
               ttp://www.newsstation.info/up/img/ns16362.c
[3] 環境
 [3.1] OS:Redhat9
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:C
[4] 期限:2006/12/20
[5] その他の制限:なし。

お願いいたします。
417デフォルトの名無しさん:2006/12/18(月) 01:11:15
418デフォルトの名無しさん:2006/12/18(月) 01:12:05
C言語怖いガクガク(((( ;゚Д゚))))ブルブル
419デフォルトの名無しさん:2006/12/18(月) 01:14:22
.cも怖い
420デフォルトの名無しさん:2006/12/18(月) 01:28:07
>>416
俺の勉強不足なのかもしれんが・・・
ARQリクエストってナニ?
421デフォルトの名無しさん:2006/12/18(月) 01:28:54
>>393
どなたか
int f(int n){
int sum = 0;
while(n) {
sum += pow(n%10, 3);
n /= 10;}
return sum;}
int main(void){
int i;
for(i=100; i<1000; i++) if(i==f(i)) printf("%d\n",i);
return 0;}
この意味を説明してください
難しくてわかりません、、
422デフォルトの名無しさん:2006/12/18(月) 01:32:33
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):ラプラシアンフィルターを実現させる関数laplacianを作成せよ
void laplacian (int data[][Y_SIZE][3],int width,int height);
また、3点を与えると三角形を描く関数riangleを作成せよ。y1<y2<y3と仮定してよい
void triangle(int data[][Y_SIZE][3],int x1,int y1,int x2,int y2,int x3,int y3); main関数を以下のようにせよ
void main{
int image [X_SIZE][Y_SIZE][3]; init_image(image,X_SIZE,Y_SIZE);
triangle(int image[][Y_SIZE][3],64,5,120,30,20,100);
save_bmp("temp1.bmp",image,X_SIZE,Y_SIZE); laplacian(image,X_SIZE,Y_SIZE); save_bmp("test2.bmp",image,X_SIZE,Y_SIZE); }
[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:12月22日
423デフォルトの名無しさん:2006/12/18(月) 01:59:59
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):ソースを(表示方法)参考にして2次元ライフゲームを作成せよ。
ルール:2次元に並んだセルに対し以下のルールでセルの生死を決定する。ただし、セルの周囲とは上下左右に加え斜めも含んだ8個のセルのこと
1. 死んでいるセルの周囲に3つのセルが生きているセルがあれば次の世代は生きる。2.生きているセルの周囲に2つか3つの生きているセルがあれば次の世代でも生きる。3.1,2以外の場合なら次の世代で死ぬ
#include<stdio.>
#include<stdlib.h>
#include<time.h>
#include<windows.>
#define X_size 75
#define Y_size20
void cell_dispO();
int data[X_size][Y_size];
void main{
int i,j; srand(time(0)); while(1){for(j=0;J<Y_size;j++)
for(i=0;i<X_size;i++) if(rand()%10==0) data[i][j]=1; else data[i][j]=0;
cell_disp(); Sleep(300); } }
void cell_disp(){
int i,j; printf("\r"); for(j=0;J<Y_size;j++){for(i=0;i<X_size;i++)
if(data[i][j]==1) printf("*"); else printf(" "); printf("\n"); } }
[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:12月22日
424デフォルトの名無しさん:2006/12/18(月) 02:04:00
>>421
プログラムするなら脳内デバッガは必須だぞ。
まぁそれが出来ないから丸投げしてるんだろうが…
少しでも自分で考えた結果を見せたほうがいいぞ。
425デフォルトの名無しさん:2006/12/18(月) 02:05:02
ここはそんなスレじゃありません
426デフォルトの名無しさん:2006/12/18(月) 02:06:57
>まぁそれが出来ないから丸投げしてるんだろうが…
全てはこの一語に尽きる。
カスに何を言っても無駄・・。
427デフォルトの名無しさん:2006/12/18(月) 02:09:01
>>421
いつもならググれというトコロだけど、明日休みだから暇つぶしがてら・・・
int f(int n){
 int sum = 0;
 while(n) { // nがゼロでない間ループ
  sum += pow(n%10, 3); // これまでの sum に、 nを10で割ったあまりを3乗したものを足し合わせて、sumに代入
  n /= 10;}
 return sum;} // 結果としてsumを返す

int main(void){
 int i;
 for(i=100; i<1000; i++) if(i==f(i)) printf("%d\n",i); // ループ中にiの値とf(i)の値が等しくなったら、iの値を表示
 return 0;}
ってトコだわね。あとは自分で考えて。
428デフォルトの名無しさん:2006/12/18(月) 02:10:02
>>424
上2行は調べました^^;
ちなみにわからないところが
whileの意味以外ほとんどなので丸投げさせてください、、
429デフォルトの名無しさん:2006/12/18(月) 02:10:52
>>427
ありがとうございます!!!
430デフォルトの名無しさん:2006/12/18(月) 02:14:25
>421
一の位は元の数を10で割った余り
十の位は元の数を10で割ったときの商をさらに10で割った余り
百の位は元の数を10で割ったときの商をさらに10で割ったときの商を10で割った余り
431デフォルトの名無しさん:2006/12/18(月) 03:00:40
>>426
プログラム知らなきゃ誰でも最初はカスだと思うんだが…。
真にカスなのは思考の片鱗すら見せず問題を丸投げする馬鹿。

>>428
>上2行は調べました^^;
これ最初に書いてた方が印象も大分変わると思うよ。

+=は加算代入演算子。その名の通り右辺値を左辺値に足し合わせる。
a+=b;はa = a+b;と等価。/=も除算代入演算子で説明は+=と殆ど一緒。

forはwhileに似たループ式。
for(a;b;c){
}
とあったらまずaを1度だけ実行して(初期化式)bを評価する(条件式)。
評価した結果が真なら(0以外なら){ }ブロックを1回実行。
実行が終わったらcを1回実行。んでまたbを評価して
真なら{ }を1回実行、んでcを1回実行してbを評価して…
これを延々続ける。

for(i=A;i<B;i++)ていうforループはiをAからB-1まで動かしながら
(B-A)回ループを行うっていうある種のセオリー。
for(i=100; i<1000; i++)なら100〜999まで動かすループを900回、ね。
432426:2006/12/18(月) 03:07:23
>>431
>プログラム知らなきゃ誰でも最初はカスだと思うんだが…。
尤も。
>真にカスなのは思考の片鱗すら見せず問題を丸投げする馬鹿。
最近そう思える奴が多くてイライラしてた。すまん。
433デフォルトの名無しさん:2006/12/18(月) 03:21:07
>>423
お前さんの文章がちょっと変なのでルールが違うかも知れない。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3215.txt

初期配置で 10% 位にするとすぐ全滅する。
25% だと6世代くらいで変化しなくなる。
まぁ好きに弄んでくれ。
434デフォルトの名無しさん:2006/12/18(月) 06:34:27
[1] 授業単元:情報工学実験
[2] 問題文: 4つのデータ列(3,8,11,19,24,30,37,43)、(5,13,24,31),(1,6,4),(,6,7)を
        2つずつマージするプログラムを作成せよ。
        また、データ列が増えた場合にも対応できること。
        (番兵法、ポインタを使用すること)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] gcc
 [3.3] 言語:C言語
 [4]今日のPM6:00まで

すべてのデータ列を1つのリストとみなして、()内の最初の値と最後の値にポインタを割り振ったり、
()をスタックポインタとして、隣のスタックポインタの先頭要素を取り出してマージしたりと、
考えてみるものの、ポインタや構造体について深く学んでいないためプログラムが書けません・・・
どなたか、ご教授お願いします。
435デフォルトの名無しさん:2006/12/18(月) 06:39:16
>>434よく見たら問題分の配列間違ってました
訂正、及び動作を以下に示します

(3,8,11,19,24,30,37,43)、(5,13,24,31),(1,4.6),(,6,7)
        ↓       ↓      ↓  ↓
  (3.5.8.11.13.24.24.30.31.37.43)    (1.4.6.6.7)
          ↓               ↓
         (      整列済みデータ列      )
436デフォルトの名無しさん:2006/12/18(月) 09:52:17
>>434
alloc系使って良いかどうかわからなかったんで、こんなんでどうよ?

void merge( int *dest, int *src1, int *src2 )
{
while ( *src1 && *src2 ) *dest++ = ( *src1 <= *src2 ) ? *src1++ : *src2++;
while ( *src1 ) *dest++ = *src1++;
while ( *src2 ) *dest++ = *src2++;
}

void datprint( int *src )
{
while ( *src ) printf( "%d, ", *src++ );
printf( "\n" );
}

void main( void )
{
int dat[ 7 ][ 20 ] = { { 3, 8, 11, 19, 24, 30, 37, 43 }, { 5, 13, 24, 31 }, { 1, 4, 6 }, { 6, 7 } };
merge( dat[ 4 ], dat[ 0 ], dat[ 1 ] );
merge( dat[ 5 ], dat[ 2 ], dat[ 3 ] );
merge( dat[ 6 ], dat[ 4 ], dat[ 5 ] );
datprint( dat[ 6 ] );
}
437デフォルトの名無しさん:2006/12/18(月) 09:59:30
[1] 授業単元:
[2] 問題文(含コード&リンク):ガウスの消去法で連立一次方程式を作成せよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3216.txt
ここまで作ったがエラーが出て実行されません。
どこが間違っているかがわかりません
[3] 環境
 [3.1] OS: Windows
 [3.2] bcc
 [3.3] 言語: C
[4] 期限: 今日の12時まで
[5] その他の制限:
438デフォルトの名無しさん:2006/12/18(月) 10:20:40
>>437
とりあえずな、エラー文読め。
for が fo になっている点が1つ、{ と } が合ってない点が2つある。
439デフォルトの名無しさん:2006/12/18(月) 10:39:15
>>432
カリカリしちゃうなら、俺に聞けスレに行くと良いよ
あちらは質問スレだからね
こっちはただ宿題を片付けるスレ
440デフォルトの名無しさん:2006/12/18(月) 11:12:25 BE:67935757-2BP(202)
そういうこと。ここはカスを隔離してまとめて掃除するためのスレ。
441デフォルトの名無しさん:2006/12/18(月) 11:38:56
カスをまとめるだけまとめて掃除しないスレだろ
442デフォルトの名無しさん:2006/12/18(月) 12:55:02 BE:23292162-2BP(202)
まあ、まとまってさえいれば掃除してなくても大きな問題はない。
443デフォルトの名無しさん:2006/12/18(月) 13:20:30
[1] C言語
[2] キーボードから入力された文字列に指定した文字が
  何個含まれているか表示するプログラムを作りなさい。
  
 動作例:
   キーから文字を数文字入力してください=alpha-dog
   調べる文字を入力してください= a
   入力された文字列の中に a は 2 個ありました。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ:Visual C++
 [3.3] 言語: C++
[4] 期限: 12/18 17:00
[5] その他の制限:動作例に合うようにお願いします。
          
         
444デフォルトの名無しさん:2006/12/18(月) 13:22:47
[1] 授業単元:プログラム理論
[2] 問題文(含コード&リンク):√xの定積分(積分範囲0〜1)をモンテカルロ法を用いて計算せよ
生成点数は10万点と1千万点とする。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 2.96
 [3.3] 言語: C
[4] 期限: 2006年12月19日12:00まで
[5] その他の制限:
445デフォルトの名無しさん:2006/12/18(月) 13:41:16
名前: デフォルトの名無しさん
E-mail:
内容:
[1] 授業単元:コンピュータ概論
[2] 問題文:30個の整数を入力データファイルに用意して、
その中から2番目に大きい整数を求めるプログラムを作成せよ
入力データは最大値を求める30個の整数の最大値を求めるプログラムと同じものを使用する
表示メッセージは全て独自のものに書き換える
入力リダイレクトで実行する
出力結果は出力リダイレクトで保存する
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:??
 [3.3] 言語: C
[4] 期限: 2006年12月18日17:00まで
[5] その他の制限:
最大値を求めるプログラム↓

#include<stdio.h>
main(void){
int i, m, x[30];
printf("最大から二番目の数字を求めます\n");
for (i = 0; i < 30; i++){
printf("%d番目の数=", i + 1);
scanf("%d", &(x[i]));
}
m = 0;
for (i = 1; i < 30; i++){
if (x[i] > x[m]) m = i;
}
printf("%d番目の数が最大値%d\n", m + 1, x[m]);
}
446デフォルトの名無しさん:2006/12/18(月) 13:42:53
>>443
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
int main(){
std::cout<<"キーから文字を数文字入力してください=";
std::string s;std::cin>>s;
std::cout<<"調べる文字を入力してください=";
char c;std::cin>>c;
std::cout<<"入力された文字列の中に"<<c<<"は"<<std::count(s.c_str(),s.c_str()+s.size(),c)<<"個ありました。";
return 0;
}
447デフォルトの名無しさん:2006/12/18(月) 13:45:21
最近宿題投稿増えてねぇ?
448デフォルトの名無しさん:2006/12/18(月) 13:45:32
入力データ↓

5 49 -9 1 38 -56 2 6 23 -97 12 47 6 10 -28
37 47 1 -45 -9 -2 3 12 7 21 -33 0 61 -4 6

上のプログラムを元にしてやるのですが,
最大から二番目の数がどうしてもできません。
よろしくお願いします。
449デフォルトの名無しさん:2006/12/18(月) 13:51:48
上って?
450デフォルトの名無しさん:2006/12/18(月) 14:01:49
>>395>>397
ありがとうございました。おかげさまで何とか次の課題もできそうです。
451デフォルトの名無しさん:2006/12/18(月) 14:02:10
>448
二番目に多い数の添え字sを用意する。
x[0]とx[1]で大きい方の添え字をm、小さい方の添え字をsに代入する。
i=2からループを回してx[i]とx[s]を比較する
x[i]がx[s]より大きかったらさらにx[i]とx[m]を比較する。
x[i]がx[m]より大きければ、sにmをmにiを代入する。
そうでなければsにiを代入する
ループが終了したらsとx[s]を表示する
452デフォルトの名無しさん:2006/12/18(月) 14:07:27
>>444
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(i,v){
int*cnt=(int*)v;
*cnt=0;
srand(time(NULL));
for(i=0;i<100000;i++){
double x=(double)rand()/RAND_MAX,y=(double)rand()/RAND_MAX;
if(y<=sqrt(x))(*cnt)++;
}
printf("%lf\n",*cnt/100000.0);
*cnt=0;
for(i=0;i<10000000;i++){
double x=(double)rand()/RAND_MAX,y=(double)rand()/RAND_MAX;
if(y<=sqrt(x))(*cnt)++;
}
printf("%lf\n",*cnt/10000000.0);
return 0;
}
453デフォルトの名無しさん:2006/12/18(月) 14:45:46
>>449
上とは>>445です

>>451
すみません,プログラムの形にして頂けるとありがたいのですが;;
454デフォルトの名無しさん:2006/12/18(月) 14:50:47
>>453
ifとforだけだ
がんばれ
455デフォルトの名無しさん:2006/12/18(月) 14:56:31
>>454
ヒントトンクス がんばってみる
456デフォルトの名無しさん:2006/12/18(月) 15:51:24
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 宝くじの抽選番号のあたり調べをし結果を表示するプログラムを作成
最初に当選番号を入力し、買った宝くじの番号を入力しあたりかはずれか表示する
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 今週の水曜日
[5] その他の制限: ・バラ・連番より選択可にする
・連番の場合先頭の番号を入力するだけにする
・枚数チェック、文字チェックを行う。数字以外は入力できないようにする
・上位の等が当たったら下位の等は当たらない
・繰り返し入力できるように何かキーを入力したら終了できるようにする
・買った宝くじは何度でも入力できるようにする
・1等は6桁、2等5桁、3等4桁、4等3桁、5等2桁、6等1桁です
457デフォルトの名無しさん:2006/12/18(月) 16:20:20
458デフォルトの名無しさん:2006/12/18(月) 16:29:23
はい。そうです。
459デフォルトの名無しさん:2006/12/18(月) 16:57:27
関数へのポインタってどう使うのか分かりません。
int gf[4]={0,1,2,3},count;
int f1(int x,int y){
int f;
f=gf[mlt(x,y)]^gf[x]^1;
if(f==0) count++;
return count;
}
int f2(int x,y){...}
int f3(int x,y){...}
...
int f100000(x,y){...}

main(){
int x,y;
for(x=0;x<4;x++){for(y=0;y<4;y++)f1(x,y)}
print("%d\n",count);
count=0;
for(...){ for(...) f2(...) }
print("%d\n",count);
}
.......
for....{ f100000 }
print(...);
}
こんな書き方してますが、これを関数を要素にもつ配列と定義できないでしょうか?
またこのとき関数に値を渡す方法が分からないのですがどなたか教えてくださいませ。
460デフォルトの名無しさん:2006/12/18(月) 17:01:35
>459
宿題じゃないならスレ違い
こっちで聞きな
C言語なら俺に聞け(入門篇) Part 5
http://pc8.2ch.net/test/read.cgi/tech/1165022193/
461デフォルトの名無しさん:2006/12/18(月) 17:07:15
http://pc8.2ch.net/test/read.cgi/tech/1165022193/611
書いてみたけどどうだろう…?

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

int main(void)
{
    int no, answer;

    srand(time(NULL));

    do {
        answer = rand() % 10;

        printf("数字を入力して下さい:");
        scanf("%d", &no);

        if ( answer == no )
            puts("正解です。");
        else if ( answer > no )
            puts("大きいです。");
        else
            puts("小さいです。");
    } while ( answer != no );

    return 0;
}
462デフォルトの名無しさん:2006/12/18(月) 17:48:50
>>461
一つの答えに対して答えるチャンスは一回きり?
(どちらに対してどちらが大きいのか分かりにくいかも)
463461:2006/12/18(月) 18:02:11
>>462
確かに自分で見直して勘違いしてしまいました;;
アドバイスありがとうございます。

int main(void)
{
    int no, answer;

    srand(time(NULL));

    answer = rand() % 10;

    do {
        printf("数字を入力して下さい:");
        scanf("%d", &no);

        if ( answer == no )
            puts("正解です。");
        else if ( answer > no )
            puts("小さいです。");
        else
            puts("大きいです。");
    } while ( answer != no );

    return 0;
}

言葉からソースにするのって難しいですね;;
464デフォルトの名無しさん:2006/12/18(月) 18:39:49
すまん、偉大な藻前らに聞きたいんだ。
↓はウイルスか?踏んだっていう奴が多くて困ってるんだが、俺じゃわからなんだ。
ttp://www.vipper.net/vip145805.jpg.html

とりあえず、既存のウイルスで検出はされなかったんだが。
465デフォルトの名無しさん:2006/12/18(月) 18:46:40
>>464
良くあるブラクラじゃないか。
466デフォルトの名無しさん:2006/12/18(月) 19:05:04
[1] 授業単元: 二分探索木の追加削除
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3218.txt
[3] 環境
 [3.1] OS: UNIX
 [3.3] 言語: C
[4] 期限: 2006年12月19日12時40分
[5] その他の制限

ノードのアドレス表示をしないといけないのですが、そもそもこれが何をやっているのかがまったくわかりません。
一応自分でやってみたのですが、中身がわからないので解説を求められると答えることができません。
どなたか各箇所にコメント分で説明をつけてもらえないでしょうか。
よろしくお願いします。ノードのアドレス表示も問題あったら教えていただけると幸いです
467デフォルトの名無しさん:2006/12/18(月) 19:55:59
×一応自分でやってみたのですが、中身がわからないので
○一応他人にやってもらったのですが、
468デフォルトの名無しさん:2006/12/18(月) 20:21:52
× ×一応自分でやってみたのですが、中身がわからないので
× ○一応他人にやってもらったのですが
○ ○一応他人にやってもらったのですが、中身がわからないので
469デフォルトの名無しさん:2006/12/18(月) 20:23:30
>>467
一応自分でやってみた=一応自分で実行させてみた の意と思われ
470デフォルトの名無しさん:2006/12/18(月) 20:24:50
ここは日本語教室か
471466:2006/12/18(月) 21:37:17
>>467~>>469
はい、実行させてみたってことです。変な言い方してしまってすみません。
プログラム自体は自分で作れてないです。まったくわからないです。
472デフォルトの名無しさん:2006/12/18(月) 22:29:50
>>464
セキュ板行けよ。
宿題どころかCすら関係ねーじゃねーかw
473デフォルトの名無しさん:2006/12/18(月) 23:04:39
[2] 問題文(含コード&リンク):キーボードより0〜9の数値文字を10回入力し、
その出現回数を表示せよ。
ナオ、出現回数はint型の配列要素b[0]〜b[9]に
カウントするものとする。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
期限は明日までです。 よろしくお願いします。
474デフォルトの名無しさん:2006/12/18(月) 23:05:40
>>452
ありがとうございました。
475デフォルトの名無しさん:2006/12/18(月) 23:14:04
>>473
#include<stdio.h>
int main(){
int i,n,b[10];
for(i=0;i<10;i++)b[i]=0;
for(i=0;i<10;i++){
scanf("%d",&n);
b[n]++;
}
for(i=0;i<10;i++)printf("%d %d回\n",i,b[i]);
return 0;
}
476デフォルトの名無しさん:2006/12/18(月) 23:27:55
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
べき乗を求める関数を製作し、それを利用してべき乗を求めるプログラムを製作せよ。
関数は下記の通りとする。なお、オーバーフローは考慮せずともよい。
int beki(int in,int exp)
in    入力値
exp   指数値(入力値をexp乗する)
戻り値 計算結果

入力に関して
   キーボードから、入力値と指数値をスペース1つ開けて1行で入力する
出力に関して
   結果+改行のみ出力
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: 言語:C
[4] 期限: 2006/12/19

お願いします>、<
477デフォルトの名無しさん:2006/12/18(月) 23:36:38
[1] 授業単元:コンピューター演習4
[2] 問題文(含コード&リンク):数字を入力する画面1つと+、=ボタンで3つの数字の足し算を可能にしなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C++
[4] 期限: 今週木曜


478デフォルトの名無しさん:2006/12/18(月) 23:37:54
>>476
#include<stdio.h>
int beki(int in,int exp){
if(exp<2) return in;
return in * beki(in,exp-1);
}
int main(){
int in,exp;
scanf("%d %d",&in,&exp);
printf("%d\n",beki(in,exp));
return 0;
}

0とか-とかは考えるの忘れてた
479デフォルトの名無しさん:2006/12/18(月) 23:41:17
>>476
#include <stdio.h>

int beki(int in,int exp)
{
int i=1;
for(;exp>0;exp--)
i*=in;
return i;
}


int main(void)
{
int in,exp;
scanf("%d %d",&in,&exp);
printf("%d\n",beki(in,exp));
return 0;
}
480デフォルトの名無しさん:2006/12/18(月) 23:44:11
うへ
遅かった上に、exp<2の時考えてなかった。
481デフォルトの名無しさん:2006/12/18(月) 23:48:27
>>478のbeki(int in,int exp)のすぐ後ろに
if(exp==0) return 1;
をつければ、0には対応できるぞ
-は見なかったことにした。intだし。
482sage:2006/12/18(月) 23:57:38
[1] 授業単元:応用情報処理
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3220.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:bcc5.5
 [3.3] 言語:C++
[4] 期限:今週の水曜まで
[5] その他の制限:問題文ではべき乗は^を使って書いてあります。
(1)(2)の2問ありますが別々のプログラムでよろしくお願いします。
483デフォルトの名無しさん :2006/12/19(火) 00:12:26
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):20個の整数データを読み込んで
直接挿入法を用いて小さい順に整数を並べて出力するCプログラム
を作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2006年12月20日13:00まで]
[5] その他の制限: 実際に読み込む、20個の整数データは適当な整数データを
catコマンドを使って作成して、実際に実行するときに標準入力のリダイレクション
機能を使って入力する。よって整列化のプログラムを作ることになる。
q_sortやsort関数は使用不可、バブル整列化とは違うことをふまえて考えてください。

さっぱりです。皆さんの力を貸してください
484デフォルトの名無しさん:2006/12/19(火) 00:15:22
>>478-481
お二方有難うございます〜
485デフォルトの名無しさん:2006/12/19(火) 00:20:58
>>482
10^-5|x|って10^(-5*|x|)か?それとも(10^-5)*|x|なのか?

>>483
#include<stdio.h>
#define N 5
int main(){
int i, j, temp, ptr[N];
for(i=0;i<N;++i)scanf("%d",&ptr[i]);
for(i=1;i<N;++i)for(j=i;j>0&&ptr[j-1]>ptr[j];--j){
temp = ptr[j];
ptr[j] = ptr[j-1];
ptr[j-1] = temp;}
for(i=0;i<N;++i)printf("%d ",ptr[i]);
return 0;}
486 ◆GJenck4cmw :2006/12/19(火) 00:20:59
[1] 授業単元: 情報処理T
[2] 問題文:[x=b^2-4ac]の式より解の数を戻り値として返却する関数を
      作成し、解の個数を表示せよ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Borland C++Compiler 5.5
 [3.3] 言語: C++
[4] 期限:2006年12月19日 AM 8:00 まで
[5] その他の制限:C言語を習い始めて3ヶ月と19日です。
         構造化プログラミングを習っているところなので
         構造化プログラミングを使用した形で
         よろしくお願いします。
487デフォルトの名無しさん:2006/12/19(火) 00:22:53
>>485
#define N 5 は20に変更してくれ 忘れてた
488デフォルトの名無しさん:2006/12/19(火) 01:01:11
きっと>>190が最も難題だと思います。やってみてください
489デフォルトの名無しさん:2006/12/19(火) 01:03:46
>>488
難題だから土曜日にならないと解けないわ
490デフォルトの名無しさん:2006/12/19(火) 01:04:59
>>485
ごめんなさい、(10^-5)*|x|です。
491 ◆80OwMUC5eE :2006/12/19(火) 01:19:07
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3221.txt

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

よろしくお願いします。
492デフォルトの名無しさん:2006/12/19(火) 02:16:51
493デフォルトの名無しさん:2006/12/19(火) 04:27:46
丸投げじゃないんですけど、vector型の一番最後に入っている要素を取り出したいんですがどう書けばよいのでしょう?
end = vec[vec.size()-1]じゃエラーなんですよね・・・。
助けてください><
494デフォルトの名無しさん:2006/12/19(火) 04:43:16
>>493
おっとすいません!これでできるっぽいです。エラーは他のとこででてました><
495デフォルトの名無しさん:2006/12/19(火) 06:26:48
>>488
N の上界は?
496デフォルトの名無しさん:2006/12/19(火) 07:00:55
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC2005 C++
 [3.3] 言語: (C++
[4] 期限: 火曜日以内
[5] その他の制限:

3つの要素x、y、zを持つ標準テンプレート vector をzの要素だけを見て小さい順にソートしてください。
3つの要素をもつクラスは
class XYZ{
public:
int x,y,z;
IJFlag(int a, int b, int c) {x=a; y=b; z=c; }
};
と定義しておきました。
ポインタを使ったサブ関数を作っていただきたいので
void XYZsort(vector<XYZ>& xyz)
{
このカッコの中をお願いします、先生方!!
}
497デフォルトの名無しさん:2006/12/19(火) 07:09:14

[1] 授業単元:ソフトウェア工学U
[2] 問題文
挿入法のアルゴリズムで,100個の数値データを昇順にソート(整列)する
プログラムをC言語で作成

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Visual C++ 6.0
 [3.3] 言語:C
[4] 期限:[2006年12月20日23:00まで]

お願いします
498466:2006/12/19(火) 07:38:51
やはり「コメントつけて解説してくれ」っていうのはスレ違いだったんでしょうか・・・?
499デフォルトの名無しさん :2006/12/19(火) 07:40:25
>>485
>>487
ありがとうございます。
早速試してみます。
500デフォルトの名無しさん:2006/12/19(火) 08:15:25
>>498
わからないときはどこがわからないのかを書け
includeやmainからなんて解説してらんない
501女子大1年生:2006/12/19(火) 08:46:12
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):2つの文字列の大小を比較する関数strcmp()のプログラムを作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C
[4] 期限: [2006年12月19日18:00まで]


ここにいる先生方にとっては簡単なことかもしれませんが、
アフォな私には難しいんです。どなたか助けてください。


502デフォルトの名無しさん:2006/12/19(火) 08:48:00
503デフォルトの名無しさん:2006/12/19(火) 09:16:29
>>486
void input( double *a, double *b, double *c )
{
printf( "a * x * x + b * x + c = 0\n" );
printf( "a = " ); scanf( "%lf", a );
printf( "b = " ); scanf( "%lf", b );
printf( "c = " ); scanf( "%lf", c );
}

double truth( double a, double b, double c )
{
return ( b * b - 4 * a * c );
}

void equation( double a, double b, double c )
{
int t = truth( a, b, c );
if ( t > 0 ) {
printf( "実数解で、解は2つです.\n" );
} else if ( t < 0 ) {
printf( "虚数解で、解は2つです.\n" );
} else {
printf( "実数解で、解は1つです.\n" );
}
}

void main( void )
{
double a, b, c;
input( &a, &b, &c );
equation( a, b, c );
}
504デフォルトの名無しさん:2006/12/19(火) 09:28:05
このままだと留年するかも・・・
助けてください・・・

1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):年賀葉書の抽選番号の当たり調べをして結果を表示するプログラムを作成せよ

[3] 環境
 [3.1] OS: Windows
 [3.3] 言語:C
[4] 期限: [2006年12月20日16:00まで]
[5] 備考: 桁数チェックと文字チェックを行う数字以外は入力を受付けないようにする
1等6桁、2等下5桁、3等下4桁、4等下2桁
何度でも自分の葉書の抽選番号が入力できるようにして何かキーを入力したら終了できるようにする

助けてくださいOTL
505デフォルトの名無しさん:2006/12/19(火) 10:24:56
よろしくお願いします

[1]数値計算学
[2]以下の計算問題と解くプログラムを作成せよ

1-2
正方形の領域0≦x≦1、0≦x≦1においてラプラス方程式
冰=-1、境界条件:u(x,1)=0, u(x,0)=0, u(0,y)=0, u(1,y)=0 を
ガウスーザイデル法及びSOR法を用いて解け

1-3
問1-2の結果を0から1まで0.01おきに等高線に描け
ただしx、y方向の格子間隔hはともに1/20
また解の収束条件は|u(k+1) - u(k)| < 10^(-10)
              11,11  11,11

[3]C言語、OSはLinux、Winどちらでも
[4]12月21日12:00まで
[5]構造体やポインタなどといった基本事項は一通り学んでいます
506デフォルトの名無しさん:2006/12/19(火) 10:43:21
507デフォルトの名無しさん:2006/12/19(火) 10:46:51
>>505
ラプラス方程式、ガウスーザイデル法及びSOR法、格子間隔h、解の収束条件とか
正直ワカンネ
508デフォルトの名無しさん:2006/12/19(火) 10:53:38
はは
俺も数値計算法の講義は取らなかったからなぁ
509デフォルトの名無しさん:2006/12/19(火) 11:02:21
wiki読んでも∂の意味すら分らない俺 ノ⌒匙
510デフォルトの名無しさん:2006/12/19(火) 11:48:33
511初心:2006/12/19(火) 12:58:14
ある数値を渡されると、その数値の 2 乗を求め、
その値を return する関数 pow を作る。

main 関数において、1 から 10 までの数値の
2 乗を pow 関数を呼び出して求め、それぞれの値とその合計を表示する。
このソースコードをおしえてください。
これをC言語でお願いします。
512デフォルトの名無しさん:2006/12/19(火) 12:59:23
[1] 授業単元:計算機演習
[2] 問題文(含コード&リンク):数独(ナンバープレース)を解くプログラムを作りなさい
4×4のますめの数字をファイルから入力。
1〜4の数字を配置。
各行、各列、2×2の小領域で各数字は1つだけ使用。
例:
1000
0200
3001
0004
(数字の無いところは0)

1342
4213
3421
2134

[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: ([2007年1月16日12:00まで]
[5] その他の制限:特に無し

宜しくお願いします。
513デフォルトの名無しさん:2006/12/19(火) 13:19:34
[1] 授業単元:計算機演習2
[2] 問題文(含コード&リンク):4×4のマス目の数字をファイルから入力
1〜4の数字を配置
各行、各列、2×2の小領域で各数字はちょうど1個
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: ([2007年1月23日12:00まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
カンニングとみなされるので、512とは違う方法のプログラムでお願いします。
514デフォルトの名無しさん:2006/12/19(火) 13:19:47
515デフォルトの名無しさん:2006/12/19(火) 13:21:29
カンニングったって、実際にすることになるじゃん・・・素直に認めて他人任せは
すべてカンニング竹山とみなすw
516513:2006/12/19(火) 13:21:56
補足… 実行例:
1000
0200
3001
0004
(数字の無いところは0)

1342
4213
3421
2134
となるようにおねがいします
517デフォルトの名無しさん:2006/12/19(火) 13:30:15
>>513
随分図々しいな
518デフォルトの名無しさん:2006/12/19(火) 13:49:46
先生にバレてもいい覚悟の奴だけ丸投げするべきだろ
実際見てる先生もいるみたいだしな
519497:2006/12/19(火) 14:01:16
>>510
ありがとうございました
520デフォルトの名無しさん:2006/12/19(火) 14:06:37
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):2 次方程式 x2 + ax + b = 0 の実数解を求め,画面表示するプログラムを作成しなさい.ただし,
以下に示した条件を満たすこと.
係数a,b の条件: 実数型とし,キーボードから入力させること.
関数の条件: プロトタイプ: int solve( float, float, float *, float * )
第1 引数: x の係数 第2 引数: 定数項
第3 引数: 第1 解へのポインタ 第4 引数: 第2 解へのポインタ
返り値: 解の個数
画面表示の条件: 関数からの返り値を利用し,画面表示を適切に変化させること.
平方根を計算するためには,関数「double sqrt(double)」を使用することができる.ただし,プログラ
ムの冒頭に「#include math.h」と記述し,コンパイルオプションとして「-lm」を指定すること.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C

よろしくお願いします。
521デフォルトの名無しさん:2006/12/19(火) 14:07:09
>>514
やりすぎw
二乗を返すだけだから、引数は一つで 引数*引数返すだけ。
522デフォルトの名無しさん:2006/12/19(火) 14:08:44
523デフォルトの名無しさん:2006/12/19(火) 14:17:00
>>521
そういう主観は一切要らない、そう思うなら自分のやり方でレスすりゃ良いだろ。
汎用性を考えたやり方が気に入らないならそうと言え、お前のレベルはその程度だ
で一蹴されるよ。
524512:2006/12/19(火) 14:22:36
>>522
素早い対応ありがとうございます。
私の表記に少し説明不足がありましたので追記致します。
1000
0200
3001
0004
等のかかれたtxtファイルを読み取り、そのtxtの問題を解くプログラムを
作って頂けないでしょうか?
たびたび申し訳ありません。
525504:2006/12/19(火) 14:23:39
>>504です。
少しだけでいいので教えてください・・・
526デフォルトの名無しさん:2006/12/19(火) 14:33:31
>>524
>>1
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
527デフォルトの名無しさん:2006/12/19(火) 14:34:50
>>523
汎用性高いし、良いコードだと思うよ。
気に触ったならごめん。
528デフォルトの名無しさん:2006/12/19(火) 14:36:01
>>511
ちょうど勉強してるところと似てたので書いてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3228.c
529デフォルトの名無しさん:2006/12/19(火) 14:37:58
>>525
それじゃ少しだけ

forとifと配列使えばできるよ
53045:2006/12/19(火) 14:40:04
シェーカーソートで昇順に並べるプログラムを教えてください。あと移動回数もわかるやつでおねがいします。


531デフォルトの名無しさん:2006/12/19(火) 14:42:24
>>523
ある数値を渡すと、二乗(固定)を返す関数を作れと言われて、
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
勝手に仕様変えるのイクナイ
532デフォルトの名無しさん:2006/12/19(火) 14:45:58
533デフォルトの名無しさん:2006/12/19(火) 14:51:50
>>483
お前>>96やろ
534デフォルトの名無しさん:2006/12/19(火) 14:52:46
>>530
ぼるじょあがC/C++の宿題を片づけますYO! 67代目
http://pc8.2ch.net/test/read.cgi/tech/1165718021/150
535ピンチ:2006/12/19(火) 15:07:30
[1] 授業単元: 分散処理
[2] 問題文(含コード&リンク):親プロセスは 1+2+・・・+20の計算と印字、子プロセスは、1+2+・・・+60の計算と印字、孫プロセスは1+2+・・・+120の計算と印字を行うプログラムを作りなさい
               尚大切と考えられる部分と説明も述べよ 
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2003
 [3.3] 言語: C
[4] 期限: 限りなく早くに
[5]特になし
536デフォルトの名無しさん:2006/12/19(火) 15:27:00
限りなく早くに という選択肢はありません
質問を却下します
537デフォルトの名無しさん:2006/12/19(火) 15:30:06
ファイル入出力でstring型の文字列は使えますか
538デフォルトの名無しさん:2006/12/19(火) 15:31:18
>>537
使えるんじゃね?
539デフォルトの名無しさん:2006/12/19(火) 15:36:53
〜.open("file.txt");の"file.txt"の代わりに
string型の変数を入れても大丈夫でしょうか

540デフォルトの名無しさん:2006/12/19(火) 15:40:48
>>539
いちいち人に聞かないとなにもできないのか?
541デフォルトの名無しさん:2006/12/19(火) 15:42:13
>>539
やってみれば良いと思うよ。(0x0)
542デフォルトの名無しさん:2006/12/19(火) 15:51:07
>>539
c_str()
543デフォルトの名無しさん:2006/12/19(火) 16:22:57
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):まず1 次元整数型配列(配列名data,要素数は任意)を準備する.キーボードから任意個の整数デ
ータを入力させ,入力されたデータの @最大値,A最小値,B平均,C標準偏差 を求めて画面表
示するプログラムを作成しなさい.ただし,上記の4 つの処理について,それぞれ下記の条件を満た
す関数を作成すること.
@ 最大値: int max( int *, int )
第1 引数: 配列アドレス 第2 引数: データ数 返り値: 最大値
A 最小値: int min( int *, int )
第1 引数: 配列アドレス 第2 引数: データ数 返り値: 最小値
B 平均: float average( int *, int )
第1 引数: 配列アドレス 第2 引数: データ数 返り値: 平均値
C 標準偏差: float std_dev( int *, int )
第1 引数: 配列アドレス 第2 引数: データ数 返り値: 標準偏差
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)

分かる方、お願いします。
544デフォルトの名無しさん:2006/12/19(火) 16:31:42
.open,.closeとfopen,fcloseって何が違うんでしょうか?
545デフォルトの名無しさん:2006/12/19(火) 16:37:24
名前
546デフォルトの名無しさん:2006/12/19(火) 16:42:51
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):2つのint型配列a,bと、その大きさを受け取り、全要素を入れ替える関数
        void swap(int *a, int *b, int n)を作成しなさい。
swap関数実行前
a[0] = 0 b[0] = 3
a[1] = 1 b[1] = 4
a[2] = 2 b[2] = 5

swap関数実行後
a[0] = 3 b[0] = 0
a[1] = 4 b[1] = 1
a[2] = 5 b[2] = 2


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 金曜
[5] その他の制限:main()関数側で結果を表示すること。配列a,bの要素数は同じとする。

作ったけど入れ替えしてくれません
お願いします
547デフォルトの名無しさん:2006/12/19(火) 16:46:21
void swap( int *a, int *b, int n ) { int i; for ( i = 0; i < n; i++ ) a[ i ] ^= b[ i ] ^= a[ i ] ^= b[ i ]; }
548504:2006/12/19(火) 16:52:44
>>504です。
>>529さんもう少し分かりやすいヒントを・・・・
549デフォルトの名無しさん:2006/12/19(火) 16:56:40
>>504
とりあえず1等から4等の当たり番号を教えれば良いと思うよ。
550初心者修行中:2006/12/19(火) 17:36:34
>>543
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3230.txt
間違ってるかもしれない。

気が向いた方、誰か添削してください。
こうした方が良いよとか、教えていただけると有難いです。
標準偏差自信なし。
551デフォルトの名無しさん:2006/12/19(火) 17:38:31
>>550
Cってforの中で変数宣言できたっけ?
552デフォルトの名無しさん:2006/12/19(火) 17:45:20
>>550
間違ってはいないが,標準偏差の計算が非効率.
average(arr,num) が合計 num 回呼ばれるので,
計算量が O(num^2) になっている.

あらかじめ変数にでもキャッシュしておけば
O(num) になってハッピー.
553初心者修行中:2006/12/19(火) 18:11:23
>>543
先輩方のお知恵をいただいて、手直してみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3231.txt

>>551
あ!
これからは気をつけます。
ありがとうございました。

>>552
うわわ
凄く酷いコード書いてました。
ありがとうございました。

554デフォルトの名無しさん:2006/12/19(火) 18:18:35
>>547
このアホなトリックを使うやつ後を絶たんが、
実行結果が未定義であることを理解してるのかね
555デフォルトの名無しさん:2006/12/19(火) 18:32:47 BE:23292443-2BP(202)
代入演算子の左右の評価順が不定、ってやつな。
オプチマイズかけたら消されそうだし。
556デフォルトの名無しさん:2006/12/19(火) 18:50:37
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):音声再生コマンドを含んだ情報を(メール)送信し、
              クライアント側で自動的に再生させるプログラムを作成
              せよ。
[3] 環境 vc++(win32コンソールアプリケーション)
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:vc 6.0
 [3.3] 言語: c++
[4] 期限:2006年12月28日
[5] その他の制限:特になし
557デフォルトの名無しさん:2006/12/19(火) 18:57:10
>>556
10万くらいくれるならやってあげてもいいかなってレベルだな
558デフォルトの名無しさん:2006/12/19(火) 19:04:53
Cでメーラーから作成か。
559 ◆GJenck4cmw :2006/12/19(火) 19:11:37
>>503
   ありがとうございます。
   期限過ぎてますが、がんばってみます。
   

   
560デフォルトの名無しさん:2006/12/19(火) 19:18:19
>>556
宿題ってレベルじゃねーぞ!
561デフォルトの名無しさん:2006/12/19(火) 19:59:09
>>556
15万だな
562デフォルトの名無しさん:2006/12/19(火) 20:03:56
すまん、教えてくれ
LINUX gcc だが次のように

int func(int inum)
{
char cDtata[inum];

:
:
:
}

のように auto変数の配列サイズを 引数で動的に
指定するのは OK?

563デフォルトの名無しさん:2006/12/19(火) 20:07:38
俺の知る限り無理
C99とかだったらできるのかもしれない・・・・しらんけど
564デフォルトの名無しさん:2006/12/19(火) 20:08:04
>>562
スレ違い
OKかOKじゃないかはやってみればすぐわかることだろ
565562:2006/12/19(火) 20:15:53
すまん、すまん、すまん、

core 解析してたら、この記述にぶちあたってしまた、
俺も、こんな記述したことないから C++ の拡張 にでもあるかな?
とオモって、調べたがわからなかった。。。

たぶん、core の 最初のトリガは

int func( int im char * cp)
{
char cData[i];

で、 cData に 文字 iバイト転送 & ヌルバイト を書いて
その NULLバイト が cData[i+1] を壊し、それが めぐりめぐって
core となったようなかんじなのだが
そもそも auto 変数のサイズを 動的に 変数で指定OK?????????
566デフォルトの名無しさん:2006/12/19(火) 20:19:10
いやだからスレ違いだって
宿題ですらないだろ?
567デフォルトの名無しさん:2006/12/19(火) 20:20:16
>>562
だからすれ違いだと。
それはC99にある。
568562:2006/12/19(火) 20:23:26
すまん、

ちょっとあせってる、「俺に聞け」でいいのかな?

thnks bye
569デフォルトの名無しさん:2006/12/19(火) 20:38:22
いや、おそらく>>562は、C99を知らないのではないのか?
570デフォルトの名無しさん:2006/12/19(火) 20:49:03
うるせえボケ
571デフォルトの名無しさん:2006/12/19(火) 21:56:33
>>531
お前さぁ、いい加減自分基準での他人への意見がうざい
言いたいことがあるとしても、自分で答えたソースを提出すりゃ良いだろ
何もお前の発言権を妨害しているわけじゃないんだから
お前は他人への批判しかしていないってことに気づけ
それから、
>>511を良く読み直してから出直せ。

ぶっちゃけ、math.h に定義されている pow ライブラリを知っていれば
自分で実装なんてしなくても済むんだが、それに似たものを作れって課題だろ。
ttp://www.bohyoh.com/CandCPP/C/Library/pow.html
本来の pow を使うんだったら double 型で使うようになるが
初心者じゃそこまで頭が回らんだろうけど。
572デフォルトの名無しさん:2006/12/19(火) 22:12:14
>>571
蒸し返す方がうざい
スルーできないのかと

>汎用性を考えたやり方が気に入らないならそうと言え、お前のレベルはその程度だ
> で一蹴されるよ。

十分あんたも自分基準だ
573デフォルトの名無しさん:2006/12/19(火) 22:16:48
他のヤツらがスルーしてるにもかかわらず
574デフォルトの名無しさん:2006/12/19(火) 22:17:47
>>572
はぁ?どこが?自分基準で何が悪い?問題はそれで他人を否定することだろ?
んじゃお前の書いたソースはお前の基準で書いてないのかよ?w
悪いがもっとうえの世界基準ってのを知れば、自ずと幅広い基準に従うようになっちゃうんだよw
だから固有の環境でしか通用しないものが低レベルと思われるし
その程度の考えでより優れたものを批判するから馬鹿にされるw
お前も黙ってろ、カス
575デフォルトの名無しさん:2006/12/19(火) 22:19:57
>>531
531 名前:デフォルトの名無しさん 投稿日:2006/12/19(火) 14:42:24
>>523
ある数値を渡すと、二乗(固定)を返す関数を作れと言われて、
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
勝手に仕様変えるのイクナイ

数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
勝手に仕様変えるのイクナイ
勝手に仕様変えるのイクナイ

いつ誰が何の仕様を変えたんだよwwww
質問者が引数の数を指定していないにもかかわらずwwww
>>531が頭が悪いのはヨーク分かった、お前基準は低レベルだから黙ってろよ、な?
低学歴必死だなw
576デフォルトの名無しさん:2006/12/19(火) 22:21:57
>二乗(固定)を返す関数
>二乗(固定)二乗(固定)二乗(固定)二乗(固定)二乗(固定)二乗(固定)二乗(固定)
だから#defineで固定してあんじゃんw
汎用性の意味も理解していないなら、自分で作って自分の答えをレスしてやりゃ良いだろ。
誰もお前の単に引き継いだ値同士を掛けるだけのライブラリを否定してないってw
577デフォルトの名無しさん:2006/12/19(火) 22:22:37
[1] 授業単元:C言語基礎
[2] 問題文
 各行の最初の要素が数値、二番目の要素がその2乗値、3番目の要素が3乗値になる5×3の配列を初期化する。
 次にこれらの数値をタブ区切りで画面に表示させる。
[3] 環境
 [3.1] OS:linux
 [3.2] 分かりません・・
 [3.3] 言語: c
[4] 期限:今日中
[5] その他の制限:特になし

ここまで作ったんですが、初期値の出力の方法がどうしてもうまくいきません、教えてください(_ _)
くだらない問題だったらすみません

#include <stdio.h>

int main(void)
{
int cube[][3] = {
{1, 1, 1},
{2, 4, 8},
{3, 9, 27},
{4, 16, 64},
{5, 25, 125}
};
 たぶんこのへんに初期値の出力

return 0;
}
578デフォルトの名無しさん:2006/12/19(火) 22:26:40
>>577
p行q列目はprintf("%d",cube[p][q]);で出力できるよ
579デフォルトの名無しさん:2006/12/19(火) 22:31:17
>>576
マクロ使っても、パラメータ一つ渡すはずの仕様からは外れてんだろ。
カリカリすんな。
580デフォルトの名無しさん:2006/12/19(火) 22:34:00
>577
int i;
for(i=0; i<5; i++) printf("%d\t%d\t%d\n", cube[i][0], cube[i][1], cube[i][2]);
581デフォルトの名無しさん:2006/12/19(火) 22:37:16
3つあります。お願いします。
[1] 授業単元: 基本プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3234
[3] 環境
 [3.1] OS:windows
 [3.3] 言語:C++
[4] 期限: 明日


582577:2006/12/19(火) 22:38:47
できました、ありがとうございました!!

もっと早く聞いていればよかった。悩んでた数時間がもったいなかったですorg
583デフォルトの名無しさん:2006/12/19(火) 22:40:25
>>579
>パラメータ一つ渡すはずの仕様
どこにその1つしか渡さないという指定があるの?
質問者のレスをよーーーーく読み返してから自分で作ったものを提出しろや。
批判しかしない無能な野党と同じだぞお前?w
たかが同じ値を掛けるだけのものをいちいち関数にして渡して戻してなんて
やっていること自体無駄だと思うけどなw
584デフォルトの名無しさん:2006/12/19(火) 22:44:40
>>511には ある数値を渡されると と書かれているが
ある数値が1つであるとは書かれていないのに気づけ。
585デフォルトの名無しさん:2006/12/19(火) 22:46:54
>581
前にも書かなかった?
586デフォルトの名無しさん:2006/12/19(火) 22:55:45
>>583-584
君が必死なのはわかったが、せめて連書きくらいはしないようにしてくれ。
587デフォルトの名無しさん:2006/12/19(火) 23:03:41
>>583
ここのスレタイ100回読み直せ
588デフォルトの名無しさん:2006/12/19(火) 23:06:22
>>587
お前が質問を1万回読み直せよ、文盲w
あっ、お前日本語も理解できない在日朝鮮人か?
頼むから祖国に帰って核実験失敗に巻き込まれて消滅してくださいね♠
589デフォルトの名無しさん :2006/12/19(火) 23:08:55
なんだよ>>577簡単そうだからやったらレスついてたよ。
でも、カキコしてあげチャオ
#include <stdio.h>

int main()
{
int num[5][3] = {0};
int temp[5] = {0};
int temp2[5] ={0};

for(int i = 0; i < 5; i++){
num[i][0] = i + 2;
temp[i] = num[i][0];
temp2[i] = temp[i];
}
for(int j = 0; j < 5; j++){
for(int i = 1; i < 3; i++){
temp[j] *= temp2[j];
num[j][i] = temp[j];
}
}
for(int j = 0; j < 5; j++){
for(int i = 0; i < 3; i++){
printf("%d ",num[j][i]);
}
putchar('\n');
}
putchar('\n');
return 0;
}
590デフォルトの名無しさん:2006/12/19(火) 23:11:44
>589
>これらの数値をタブ区切りで画面に表示させる
591589:2006/12/19(火) 23:17:17
はいすいません
printf("%d\t",num[j][i]);
ですね。
ずびませんでじだ!!
592デフォルトの名無しさん:2006/12/19(火) 23:18:30
>>581
とりあえず簡単なところから.
最小公倍数を返す関数名の指定がgcd(int, int)なのは嫌がらせですか?

/* 最小公倍数 */
#include <stdio.h>
int gcd(int m, int n) {
int q = m, r = n, w;
while(r){w=q%r; q=r; r=w;}
return m*n/q; }
int main() {
int m, n;
printf("input m: "); scanf("%d", &m);
printf("input n: "); scanf("%d", &n);
printf("lcm: %d\n", gcd(m, n)); }
593デフォルトの名無しさん:2006/12/19(火) 23:29:16
お忙しいかとは思いますが、
482をよろしくお願いします。

問題文の10^-5|x|は(10^-5)*|x|です。
594デフォルトの名無しさん:2006/12/19(火) 23:36:33
>>588
ふぁびょ〜ん
595デフォルトの名無しさん:2006/12/19(火) 23:43:32
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
構造体を用いて以下のプログラムを作成せよ
1 3人分の学籍番号、氏名(ローマ字)をそれぞれ構造体に格納する。
  
2 画面に以下のメッセージを表示し、キーボードからの入力を待つ。
  (1)学籍番号を入力して下さい
  (2)終了する
3 選択した学籍番号に応じた氏名を画面に表示する。
4 2に戻り(2)を選択するまで処理を繰り返す。



[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限: 12月21日
[5] その他の制限: 学籍番号と氏名は
 015:tanaka 037:sato 054:suzukiでお願いします。
596デフォルトの名無しさん:2006/12/19(火) 23:43:51
>>594
うっとうしい、宿題に答える気がないなら失せろ
お前なりのソースを書いてから意見しろ、無能クズニート
597デフォルトの名無しさん:2006/12/19(火) 23:57:48
言い争ってる暇があったら未回答の片付けろ
598デフォルトの名無しさん:2006/12/20(水) 00:00:08
>>556
できあがったプログラム見てみたいなぁ
あ、おれ556じゃないからw
599デフォルトの名無しさん:2006/12/20(水) 00:10:03
何この高度な宿題と、低度なレスw
ワロタ
600デフォルトの名無しさん:2006/12/20(水) 00:19:08
そんなに難しいの?
601デフォルトの名無しさん:2006/12/20(水) 00:23:00
>>600
有名なウイルス
602デフォルトの名無しさん:2006/12/20(水) 00:29:52
>>595
#define MAX_NUMBER 3
#include <stdio.h>
#include <string.h>


int main()
{
  char buf[4];
  int i;
  struct meibo
  {
    char key[4];
    char name[7];
  } ;

  struct meibo gakuseki_list[MAX_NUMBER] = { "015", "tanaka", "037", "sato", "054", "suzuki" };

  while (printf("(1)学籍番号を入力して下さい\n(2)終了する\n"), strcmp(gets(buf), "2"))
  {
    for (i=0 ; i<MAX_NUMBER ; i++)
      if (!strcmp(gakuseki_list[i].key, buf))
        printf("%s\n", gakuseki_list[i].name);
  }

  return 0;
}
603デフォルトの名無しさん:2006/12/20(水) 00:46:19
[1] 授業単元:プログラミング(C言語)
[2] 問題文:英語の文章のtxtファイルを読み込み、次のように分析するようなプログラムを作りなさい。
      @単語の総数を調べるA一番つづりが長い単語を表示するB単語の頭のアルファベットの中で一番多いものを表示する。   
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: 今年中
[5] その他の制限:
#include <stdio.h>
int main(void)
{
int c;
FILE *fp;
fp=fopen("test.txt","r");
if (fp==NULL) {
printf("ファイルが見つかりません。\n");
return 0;
}
while ((c=fgetc(fp))!=EOF)
{
...............................
}
fclose(fp);
return 0;
}
このような感じでお願いします。本当にお願いします。

604デフォルトの名無しさん:2006/12/20(水) 00:48:11
どなたか>>505もお願いします・・・
605デフォルトの名無しさん:2006/12/20(水) 00:49:10
>>546もお願いします
606デフォルトの名無しさん:2006/12/20(水) 00:55:02
>>601
ますます見てみたいw
607デフォルトの名無しさん:2006/12/20(水) 01:01:17
>>606
>>596が、エレガントで可搬性が高く、様々なパラメータでオプションを指定できる形で実装してくれるから、それを待て。
608デフォルトの名無しさん:2006/12/20(水) 01:13:19
>546
void swap(int *a, int *b, int n){
int t;
while(n) {
t = a[--n];
a[n] = b[n];
b[n] = t;
}
609デフォルトの名無しさん:2006/12/20(水) 01:17:16
>>593
(1)をやってみたけど問題文の値と結果が全然異なるから違ってたらスマン
あとぼるじょあをよろしく

#include <iostream>
#include <cmath>
#define sgn(a)((a) == 0.0 ? 0.0 : (a) < 0.0 ? -1.0 : 1.0)
//f(x) = (x^2-x+1)^2 - x^2(2x+log x)
double func(double x)
{
return pow((x*x - x + 1.0), 2) - x*x * (2*x + log(x));
}
//f'(x) ≒ f(x+ε)-f(x-ε) / 2ε
double func2(double x)
{
double eps = pow(10.0, -5) * sgn(x)*x;
return func(x + eps) - func(x - eps) / 2*eps;
}
int main()
{
using namespace std;

cout << " x f'(x) true f'(x)" << endl;
for (double x = 0.1; x < 4.1; x += 0.1) {
printf("%.1f %10.5f %10.5f¥n", x, func(x), func2(x));
}
return 0;
}
610デフォルトの名無しさん:2006/12/20(水) 01:30:08
>>602
ありがとうございました
611デフォルトの名無しさん:2006/12/20(水) 01:40:19
>>596
571 :デフォルトの名無しさん :2006/12/19(火) 21:56:33
>>531
お前さぁ、いい加減自分基準での他人への意見がうざい
言いたいことがあるとしても、自分で答えたソースを提出すりゃ良いだろ
何もお前の発言権を妨害しているわけじゃないんだから
お前は他人への批判しかしていないってことに気づけ
それから、
>>511を良く読み直してから出直せ。
  ぶっちゃけ、math.h に定義されている pow ライブラリを知っていれば
自分で実装なんてしなくても済むんだが、それに似たものを作れって課題だろ。
ttp://www.bohyoh.com/CandCPP/C/Library/pow.html
本来の pow を使うんだったら double 型で使うようになるが
初心者じゃそこまで頭が回らんだろうけど。
583 :デフォルトの名無しさん :2006/12/19(火) 22:40:25
>>579
>パラメータ一つ渡すはずの仕様
どこにその1つしか渡さないという指定があるの?
質問者のレスをよーーーーく読み返してから自分で作ったものを提出しろや。
批判しかしない無能な野党と同じだぞお前?w
たかが同じ値を掛けるだけのものをいちいち関数にして渡して戻してなんて
やっていること自体無駄だと思うけどなw

お前このスレに向いてないよ。
無駄だろうがなんだろが、出題者は、言語への理解を深めるための課題を出してるだけだろう。
ここは実務の場所じゃなく、課題出された者への回答を与える場だ。
無駄とかいうなら、このスレ自体も、人の営みも、壮大な無駄だ。
エントロピーは増大し、全ては壊れていく世界で、意味のあることなんて無い。
意味は、意味を見出すものが与えるだけ。
無駄とか無駄じゃないとかは、主観的な意見だ。
612デフォルトの名無しさん:2006/12/20(水) 01:42:44
自作自演?二重人格?
613デフォルトの名無しさん:2006/12/20(水) 01:44:34
>自作自演?二重人格?
違うだろ
614デフォルトの名無しさん:2006/12/20(水) 01:45:23
本人はわからないらしいからね。
615デフォルトの名無しさん:2006/12/20(水) 01:46:04
>>546
#define ARRAY_SIZE  3

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

void swap(int *a, int *b, int n)
{
  int *c;
  c = (int*)malloc(n);
  memcpy(c, a, n * sizeof(int));
  memcpy(a, b, n * sizeof(int));
  memcpy(b, c, n * sizeof(int));
}

int main()
{
  int a[ARRAY_SIZE], b[ARRAY_SIZE], i;
  a[0] = 0;  b[0] = 3;
  a[1] = 1;  b[1] = 4;
  a[2] = 2;  b[2] = 5;

  swap(a, b, ARRAY_SIZE);

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

  return 0;
}
616デフォルトの名無しさん:2006/12/20(水) 01:50:01
>615
>c = (int*)malloc(n);
617デフォルトの名無しさん:2006/12/20(水) 01:58:38
>>609
f'(x)のところで,(f(x+e)-f(x-e))/2e が f(x+e)-f(x-e)/2e になってるからまずい.
>>482 (2)
#include <iostream>
#include <cmath>
using namespace std;
#define EPSILON 1.0E-5
#define LOOPMAX 50
double f(double x)
{ return (x*x-x+1)*(x*x-x+1) - x*x*(2*x+log(x)); }
double approx_df(double x)
{ return (f(x+EPSILON*fabs(x))-f(x-EPSILON*fabs(x)))/(2*EPSILON*fabs(x)); }
double next_x(double x)
{ return x - (f(x)/approx_df(x)); }
int main(){
int i, loop;
double x0, x1;
for (i=1; i<=40; i++) {
loop = 0; x0 = 0.1*i; cout << "start x=" << x0 << "\t";
while(1){
x1 = next_x(x0);
if (fabs(x0-x1)<EPSILON){
cout << "converged: x=" << x1 << endl; break;
}else if (x1 <= 0.0){
cout << "x goes negative\n"; break;
}else if (++loop == LOOPMAX){
cout << "not converged\n"; break; }
x0 = x1; } } }
618デフォルトの名無しさん:2006/12/20(水) 02:02:38
>>615
すいません、a[0]=0〜〜ってのは例です
中身は自分で入力です
あと↓のは習ってません
#include <stdlib.h>
#include <memory.h>
619デフォルトの名無しさん:2006/12/20(水) 02:08:13
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
620デフォルトの名無しさん:2006/12/20(水) 02:11:35
本当にごめんなさい
#include<stdio.h>しか知らないもんで
621デフォルトの名無しさん:2006/12/20(水) 02:13:54
>608はスルーですか?
622デフォルトの名無しさん:2006/12/20(水) 02:19:20
>>611
>お前このスレに向いてないよ。
それお前にそっくりそのまま返すよ。お前が答えたソースすら示してないじゃん。
このスレの>>1と趣旨を理解して、二度と来るな、失せろバカ低学歴
悔しかったらお前の書いたソースを提示して何も言うなw

↓以下、ただの屁理屈バカのレス
579 名前:デフォルトの名無しさん 投稿日:2006/12/19(火) 22:31:17
>>576
マクロ使っても、パラメータ一つ渡すはずの仕様からは外れてんだろ。

531 名前:デフォルトの名無しさん 投稿日:2006/12/19(火) 14:42:24
>>523
ある数値を渡すと、二乗(固定)を返す関数を作れと言われて、
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
勝手に仕様変えるのイクナイ

521 名前:デフォルトの名無しさん 投稿日:2006/12/19(火) 14:07:09
>>514
やりすぎw
二乗を返すだけだから、引数は一つで 引数*引数返すだけ。
623デフォルトの名無しさん:2006/12/20(水) 02:19:34
>>621
mainの方がうまくいってないんで今やってるところです
624 ◆80OwMUC5eE :2006/12/20(水) 02:20:29
>>492
ありがとうございます。
625デフォルトの名無しさん:2006/12/20(水) 02:21:02
>>611
>課題出された者への回答を与える場だ。
だったらなおさらお前のぐちゃぐちゃうぜぇレスこそいらねーよな?
いい加減、専門学校程度のクズがうぜぇ〜んだよ、失せろやバカ

>無駄とかいうなら、このスレ自体も、人の営みも、壮大な無駄だ。
>エントロピーは増大し、全ては壊れていく世界で、意味のあることなんて無い。
>意味は、意味を見出すものが与えるだけ。
>無駄とか無駄じゃないとかは、主観的な意見だ。
もう言っていることがわけわからんね〜〜^wwwバカじゃねこいつ?何が言いたいんだ?
良いか、もうこれ以上お前みたいな馬鹿には付き合わないから、これだけは理解しろ。
お前の答えたソースを提示しろ、でなきゃお前はただのバカ
626デフォルトの名無しさん:2006/12/20(水) 02:22:50
さっ、答えもしていないで他人のソースを批判するだけの
性帝トーマス並のバカは >>511 をちゃんと読んで
自分なりのソースを書いて示しましょうねぇ〜〜〜
出来なきゃお前を今後晒し続ける
627デフォルトの名無しさん:2006/12/20(水) 02:30:29
>>622
おいっ、どうした?答えろよ?どうせ
int pow(int n) { return n*n; } を書くだけだろ?w
そんなの分かってて、敢えてそれ以上のべき乗に対応させたものに
いちいちいちゃもんつけて自分のソースは提出せずか?
宿題を答える気がないなら、チキン野郎は二度とこのスレに来るなよw
628デフォルトの名無しさん:2006/12/20(水) 02:37:06
なんだなんだ?トーマスは自分のソースを提示してちゃんと意見したぞ?w
いちいち自分が気に食わないやり方をしている奴を批判して
「そんなこと気にする”必要”があるのかよ?」とか
「お前はバカだ」とか言ってきたぞ?w
629デフォルトの名無しさん:2006/12/20(水) 02:40:05
お前ら邪魔
630デフォルトの名無しさん:2006/12/20(水) 02:46:29
>>608>>615を参考になんとかできました
ありがとうございます
631デフォルトの名無しさん:2006/12/20(水) 02:53:40
632デフォルトの名無しさん:2006/12/20(水) 02:59:37
ふぁびょってるのが居るが…
こいつ、もしかして自分にレスしてる奴は一人だけだとか思ってんのか?
すげぇなw
この板で初めてふぁびょってる奴見たよ
633デフォルトの名無しさん:2006/12/20(水) 03:00:38
>>632
だからお前のソースを提示しろやタコ
634デフォルトの名無しさん:2006/12/20(水) 03:05:27
>>633
何のソースだよw
ふぁびょってる奴へのレスにソースも何もneeeeeeee
635デフォルトの名無しさん:2006/12/20(水) 03:06:28
>>634
けけけけけ、お前も宿題に答える気がないくせにこのスレに来ているのか?
失せろ、答えもしないで批判だけする奴は
636デフォルトの名無しさん:2006/12/20(水) 03:09:33
637デフォルトの名無しさん:2006/12/20(水) 03:14:34
638デフォルトの名無しさん:2006/12/20(水) 03:15:35
みなさん、>>603をお願いします。
本当にまずいので・・・・・・
639デフォルトの名無しさん:2006/12/20(水) 03:18:34
>>638
宿題に答える気満々な>>635にお願いしなさい
640デフォルトの名無しさん:2006/12/20(水) 03:21:02
>>639
ここはホストクラブとかキャバクラや教習所じゃねーんだから、指名なんてねーよw
641デフォルトの名無しさん:2006/12/20(水) 03:26:03
642デフォルトの名無しさん:2006/12/20(水) 03:27:15
643デフォルトの名無しさん:2006/12/20(水) 03:28:21
>638
単語数や単語の文字数に制限はないの?
644デフォルトの名無しさん:2006/12/20(水) 03:31:09
>643
それほど長い文章ではないです。だいたいtxtで5行〜7行ぐらいです。
645デフォルトの名無しさん:2006/12/20(水) 03:33:52
同一単語のチェックはしなくていいの?
646デフォルトの名無しさん:2006/12/20(水) 03:36:17
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):πの近似解を、台形公式、シンプソン公式を用いて算出せよ。
ただし、別々のプログラムに分けてはならず、プログラム実行後にtを入力すれば台形公式
sを入力すればシンプソン公式が選択されるようにする。分割数は100とする。
[3] 環境
 [3.1] OS: WINXP
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: どちらも可
[4] 期限: 無期限
[5] その他の制限: 特に無し

問題分の説明が下手なのとこんな流れの中ですがお願いします
647デフォルトの名無しさん:2006/12/20(水) 03:36:57
>645
同一単語のチェックとは?
単語の出現回数のことでしたら必要ありません。
648デフォルトの名無しさん:2006/12/20(水) 03:37:12
>>640
>失せろ、答えもしないで批判だけする奴は

お前のことだな
自分で言ってりゃ世話無いな
649デフォルトの名無しさん:2006/12/20(水) 03:38:41
よそでやれ
650デフォルトの名無しさん:2006/12/20(水) 03:46:22
>647
同じ単語が2回出てきたら2個として数えるってわけね。
651デフォルトの名無しさん:2006/12/20(水) 03:47:59
>>648
はぁ?俺は昨日答えたけど?すべてに着手してもらえると思うなよw
652デフォルトの名無しさん:2006/12/20(水) 03:48:00
>650
@の単語の総数のことですね。その通りです。
653デフォルトの名無しさん:2006/12/20(水) 03:48:49
>>648
いちいちうぜーんだよ、だったらお前が答えれば良いだろ?アホじゃね?
氏ねよカス、っつーかこのスレに来るなって。何他人を煽るだけにここへ来てんだよ?
悔しかったらお前のソースを提出しろや無能池沼w
654デフォルトの名無しさん:2006/12/20(水) 03:50:46
>>648
はいっ?答えたし批判もしてないけど?ちゃんとべき乗のソースを出しただろ?
俺のソースにいちゃもんしかつけないバカは結局自分のソースを出さずに
ごちゃごちゃと自分の判断基準でしかそれは必要がないとしか言ってないじゃんw
655デフォルトの名無しさん:2006/12/20(水) 04:11:12
>>648
宿題を答えたほかの人への批判をした覚えはありませんが何か?
656デフォルトの名無しさん:2006/12/20(水) 04:42:48
>603
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main(void){
char ch, temp[32], longest[32];
int alpha[26] = {0}, i =0, max, on = 0, count = 0;
FILE *fp;
fp = fopen("test.txt", "r");
if((fp=fopen("test.txt", "r"))==NULL) exit(1);
while((ch=fgetc(fp))!=EOF) {
if(isspace(ch) || ispunct(ch)) {
if(on) {
temp[i] = '\0';
count++;
on = 0;
if(strlen(temp)>strlen(longest)) strcpy(longest, temp);
i = 0;}} else {
if(!on) {
alpha[tolower(ch)-'a']++;
on = 1;
temp[i] = ch;
} else temp[i] = ch;
i++;}}
if(on) count++;
fclose(fp);
for(i=1; i<26; i++) if(alpha[i]>alpha[max]) max = i;
printf("単語数:%d最長単語:%s最多アルファベット:%c\n", count, longest, max+'a');
return 0;}
657デフォルトの名無しさん:2006/12/20(水) 04:48:44
>656
ありがとうございます。なんとかがんばってみますが、できれば#include <stdio.h>だけでプログラムは組めませんかね?
なんどもすいません。
658デフォルトの名無しさん:2006/12/20(水) 05:15:40
exitをretrunにすれば<stdlib.h>はいらない。

if(isspace(ch)||ispunct(ch))をif(ch==' '||ch=='\t'||ch=='\n'||....||ch=='区切り文字')にして
アルファベットが小文字のみならalpha[tolower(ch)-'a']をalpha[ch-'a']にして<ctype.h>はいらない。

maxを0で初期化してif(strlen(temp)>strlen(longest)) strcpy(longest, temp)を
if(i>max) {
max = i;
for(i=0; i<max+1; i++) longest[i] = temp[i];
}
にすれば<string.h>もいらない
659デフォルトの名無しさん:2006/12/20(水) 05:17:33
>658
なるほど。一応組みなおしてみます。
理解できました。本当にありがとうございました!!
660デフォルトの名無しさん:2006/12/20(水) 05:19:04
>658
でも一応組みなおしていただけませんか?
正直知識が不足で不安なので・・・すいません。
661デフォルトの名無しさん:2006/12/20(水) 05:31:57
組みなおすも何も指定の部分を入れ替えるだけなんだが。
#include <stdio.h>
int main(void){
char ch, temp[32], longest[32];
int alpha[26] = {0}, i =0, max = 0, on = 0, count = 0;
FILE *fp;
if((fp=fopen("test.txt", "r"))==NULL) return 1;
while((ch=fgetc(fp))!=EOF) {
if(ch==' '||ch=='\n'||ch=='\t'||ch==','||ch=='.') {
if(on) {
temp[i] = '\0';
count++;
on = 0;
if(i>max) {
max = i;
for(i=0; i<max+1; i++) longest[i] = temp[i];
}
i = 0;}} else {
if(!on) {
alpha[ch-'a']++;
on = 1;
temp[i] = ch;
} else temp[i] = ch;
i++;}}
if(on) count++;
fclose(fp);
for(i=1; i<26; i++) if(alpha[i]>alpha[max]) max = i;
printf("単語数:%d最長単語:%s最多アルファベット:%c\n", count, longest, max+'a');
return 0;}

よく見たら処理が不十分だな
どこが不十分かは自分で考えるように
662デフォルトの名無しさん:2006/12/20(水) 05:35:42
for(i=1; i<26; i++) → for(i=1,max=0; i<26; i++) に修正
663デフォルトの名無しさん:2006/12/20(水) 05:36:59
>661
何度もありがとうございました。本当に助かりました。
664デフォルトの名無しさん:2006/12/20(水) 06:07:43
うpロダ使おうぜ?
665デフォルトの名無しさん:2006/12/20(水) 07:16:08
さて、まだ解かれてない問題はどれかな?
666デフォルトの名無しさん:2006/12/20(水) 07:44:24
>>646
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3238.cpp

被積分関数が指定されていなかったので f(x) = √(1 - x^2) を用いた.
s,t 以外が入れられたときは何もしない.
667デフォルトの名無しさん:2006/12/20(水) 07:57:31
>>665
>>505解いてあげてよ。俺には無理だ。
668デフォルトの名無しさん:2006/12/20(水) 08:14:09
>>581
(1) は上にあったので省略.
(2)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3239.cpp
(3)
(ア) = " n-1 C r + "
漸化式の終端条件が一つ足りないので適当に補った.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3240.cpp
669デフォルトの名無しさん:2006/12/20(水) 09:23:41
>>505
(1)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3241.c

結果のチェックのために分割数が #define N 10 となってるが,20 にしてくれ.
あと,ガウスザイデルは SOR の緩和パラメタを 1 に設定したものなので省略.

(2) は C でやるのは手間なので省略.gnuplot か何かでどうぞ.
670:2006/12/20(水) 10:12:16
今はC言語でキッチンタイマー作っています。
ストップ機能の部分はどうすれば良いか教えて下さい…
すいません
671デフォルトの名無しさん:2006/12/20(水) 10:13:10
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):ラプラシアンフィルターを実現させる関数laplacianを作成せよ
void laplacian (int data[][Y_SIZE][3],int width,int height);
また、3点を与えると三角形を描く関数riangleを作成せよ。y1<y2<y3と仮定してよい
void triangle(int data[][Y_SIZE][3],int x1,int y1,int x2,int y2,int x3,int y3); main関数を以下のようにせよ
void main{
int image [X_SIZE][Y_SIZE][3]; init_image(image,X_SIZE,Y_SIZE);
triangle(int image[][Y_SIZE][3],64,5,120,30,20,100);
save_bmp("temp1.bmp",image,X_SIZE,Y_SIZE);
laplacian(image,X_SIZE,Y_SIZE);
save_bmp("test2.bmp",image,X_SIZE,Y_SIZE); }
[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:12月24日
672デフォルトの名無しさん:2006/12/20(水) 10:16:03
>>670
スレ違い
673t_n:2006/12/20(水) 10:17:45
>>4の問題をお願いします。
打撃点と目標の高さは同じです。
障害にぶつかった場合に跳ね返ることは考慮しないです。
お願いします。
674デフォルトの名無しさん:2006/12/20(水) 10:17:57
>>671
>>422
save_bmp は与えられた関数?
それとも、それも自分で作る?
675デフォルトの名無しさん:2006/12/20(水) 10:24:03
>>673
>>1読んで書き直し。
後で付け足しをすることないようにしっかり書いてくれ
676t_n:2006/12/20(水) 10:25:35
>>675
すみませんでした。
[1] 授業単元: プログラミング
[2] 問題文:ある打撃点から目標に向かって的狙いを行い、命中させるゲームプログラムを作成せよ。
      打撃点から目標までの距離、障害までの距離、障害の幅と高さ、および風速を初期設定条
      件とし、ゲームを行う者には、目標までの距離と風速のみが知らされる。打撃点からの玉
      の発射角、初速を設定すると、玉到達距離を計算し、目標点との差を表示する。
      到達距離は
x=(Vocosθ+W)t=Vxt
y=Votsinθ -gtA/2=Vgt-4.9tA
       A=二乗の事です。
      障害を越えること、そして、障害を越えたときの打撃距離を計算し、目標との差を表示する
      ようにする。障害を越えなければ、障害激突などと表示するようにする。
       です。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C++
[4] 期限:できるだけ早めでお願いします。
[5] その他の制限:ありません。
677デフォルトの名無しさん:2006/12/20(水) 10:32:03
>>671
int width,int heightは何?
678デフォルトの名無しさん:2006/12/20(水) 10:38:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):

配列に格納されたデータをソートするプログラムを作成するにあたり、
以下の機能を持つ関数を作成しプログラムを完成させなさい。

乱数を生成し配列要素に格納する
 init_array(int *pa, int n)
配列要素を1行で画面に出力する
 output_array(int *pa, int n)
指定された2つアドレスのデータを交換する
 swap(int *x, int *y)


[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語: C
[4] 期限:今日のお昼12時前までにお願いします
[5] その他の制限: 特になし

一時間程度しかないのですが、どうかお願いします
679デフォルトの名無しさん:2006/12/20(水) 10:38:29
>>676
全然駄目。

ゲームというが、そもそも CUI か GUI かもわからん。
数式があるが、各記号の意味が定義されていない。

障害物も、x 方向に幅のない障害物でよいのか
きちんと形状を考えないといけないかとかもわからん。
680デフォルトの名無しさん:2006/12/20(水) 10:41:24
>>678
>>278 のプログラム。278 は付き返されたようだが、
プログラムはその仕様を満たしている。
681デフォルトの名無しさん:2006/12/20(水) 10:41:55
>>674save_bmpはこんなかんじです
save_bmp(char *bmpName,int data[][Y_SIZE][3],int width,int height)
{
FILE *fp;
int i,j,k;
bmpHeader[2]=sizeof(bmpHeader)+3*width*height;
bmpHeader[34]=3*width*height;
bmpHeader[18]=width;
bmpHeader[22]=height;
fp=fopen(bmpName,"wb");
for(i=0;i<sizeof(bmpHeader);i++)
{
fputc(bmpHeader[i],fp);
}
for(i=0;i<Y_SIZE;i++)
for(j=0;j<X_SIZE;j++)
for(k=0;k<3;k++)
fputc(data[i][j][k],fp);
fclose(fp);
}
682デフォルトの名無しさん:2006/12/20(水) 10:46:10
>>671
bmpHeader って何よ。
なんかいろいろ足りてないものがありそうなので、
与えられたものを全部まとめてアップローダ池。

他にも、講義ノートをとっていれば該当部をアップしたほうが
無駄なやり取りがなくなってスムースに答えが出ぞ。
683デフォルトの名無しさん:2006/12/20(水) 10:58:47
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
>>169です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3242.txt
↑前に作ってもらったプログラムに、他2つの計算も付け加えてもらっていいですか。>>169の問題文にある
人口が最大の区と最小の区の、名前と人口。
面積が最大の区と最小の区の、名前と面積。
人口密度が最大の区と最小の区の、名前と人口密度。
の中の1つ分しか計算するプログラムが作成されてないので。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3192.txt 京都データ
[3] 環
 [3.1] OS: XP
 [3.2] visual studio2003
 [3.3] 言語: C
[4] 期限: 今日11時30まで
[5] その他の制限: 特になし

よろしくお願いします。
684デフォルトの名無しさん:2006/12/20(水) 11:01:57
>>680 そのまま提出するわけにはいかなかったんで、完成したプログラムにしていたただけませんでしょうか。
685デフォルトの名無しさん:2006/12/20(水) 11:02:20
11時半ってもしかして授業中か?
686デフォルトの名無しさん:2006/12/20(水) 11:05:29
あと25分強しかない
687デフォルトの名無しさん:2006/12/20(水) 11:22:41
688デフォルトの名無しさん:2006/12/20(水) 11:28:48
>>677
int widthはビットマップの幅,int heightはビットマップの高さです
689デフォルトの名無しさん:2006/12/20(水) 11:30:10
>>685 はい、実習中です。
690デフォルトの名無しさん:2006/12/20(水) 11:30:41
[1]関数
[2]関数を用いて、200x200ピクセルの画像に背景が青色、半径40の
円を1つは中心の座標(-50, 0)で赤色、もう1つは中心の座標(50,
0)で緑色の画像を作成しよう。
?? プロジェクト名:12add ファイル名:12add.c
?? 四角を作成する関数
void rect(unsigned char *bmp, int x0, int y0, int w, int h, int r, int g, int b)
引数:画像データ,左上のx座標,左上のy座標,幅,高さ,色(赤,緑,青)
?? 円を作成する関数
void circle(unsigned char *bmp, int x0, int y0, int r0, int r, int g, int b)
引数:画像データ,中心のx座標,中心のy座標,半径,色(赤,緑,青)
?? 画像を保存する関数
int save(unsigned char *bmp)
引数:画像データ
戻り値:オープンに成功(0),失敗(1)
詳しくはhttp://mobiledatabank.jp/s/src/MDBS1108.pdfの練習問題
[3]XP
[4]特になし
[5]特になし
よろしくお願いします。
691デフォルトの名無しさん:2006/12/20(水) 11:30:51
12時が提出締め切りです
692デフォルトの名無しさん:2006/12/20(水) 11:38:21
>>678>>278
めちゃめちゃ簡単だがほっとこ。
693デフォルトの名無しさん:2006/12/20(水) 11:53:42
[1] 授業単元:
[2] 問題文(含コード&リンク):

長さ n の実数列 [a_0, ..., a_n-1] が与えられる。
各 i について、a_i が [a_0, ..., a_i] の中で何番目に
小さいかを求める効率のよいプログラムを作成せよ。
なお、同じ値が複数ある場合は最も小さい順位を表示すること。

例: a = [3,1,4,1,5] → output = [1,1,3,1,5]
(3 は [3] の中で 1 位、1 は [3,1] の中で 1 位
 4 は [3,1,4] の中で 3 位、…。)

[3] 環境
 [3.1,3.2] OS、コンパイラ問わず
 [3.3] 言語: どちらでも可
[4] 期限: 2006年12月23日
[5] その他の制限: 特になし
694デフォルトの名無しさん:2006/12/20(水) 12:11:53
>581
(3)
ア = (n-r+1)/r
long combi(int n, int r) {
return r==0 ? 1 : combi(n,r-1) * (n-r+1) / r ;
}
695デフォルトの名無しさん:2006/12/20(水) 12:12:21
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):2 次方程式 x2 + ax + b = 0 の実数解を求め,画面表示するプログラムを作成しなさい.ただし,
以下に示した条件を満たすこと.
係数a,b の条件: 実数型とし,キーボードから入力させること.
関数の条件: プロトタイプ: int solve( float, float, float *, float * )
第1 引数: x の係数 第2 引数: 定数項
第3 引数: 第1 解へのポインタ 第4 引数: 第2 解へのポインタ
返り値: 解の個数
画面表示の条件: 関数からの返り値を利用し,画面表示を適切に変化させること.
平方根を計算するためには,関数「double sqrt(double)」を使用することができる.ただし,プログラ
ムの冒頭に「#include math.h」と記述し,コンパイルオプションとして「-lm」を指定すること.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C

よろしくお願いします。
696デフォルトの名無しさん:2006/12/20(水) 12:14:10
>>689
それは宿題って言わないだろ
697デフォルトの名無しさん:2006/12/20(水) 12:19:42
698デフォルトの名無しさん:2006/12/20(水) 12:22:59
>>689 いえ、実習とは別で宿題がだされてたんで
699デフォルトの名無しさん:2006/12/20(水) 12:24:25
>>697
それは特に効率が良いわけではないような
700デフォルトの名無しさん:2006/12/20(水) 12:47:30
>695
int solve(float a, float b, float *x, float *y){
float d;
d = a * a - 4 * b;
if(d<0) return 0;
else if(d==0) {
*x = -a/2;
return 1;
}else {
*x = sqrt(d)/2 - a/2;
*y = -sqrt(d)/2 - a/2;
return 2;}}
701デフォルトの名無しさん:2006/12/20(水) 12:48:55
>>693
実数って整数だけ?
702デフォルトの名無しさん:2006/12/20(水) 13:04:08 BE:108696487-2BP(202)
>>701
日本語でおk
703デフォルトの名無しさん:2006/12/20(水) 13:14:14
>>682
#include<stdlib.h>
#include<stdio.h>
#define X_SIZE 128
#define Y_SIZE 128
Char bmpHeader[54]={ ‘B’,’M’ /*[0]ファイルタイプ*/ 0,0,0,0, /*[2]ファイルサイズ*/ 0,0,0,0, /*[6]予約*/
0x36,0,0,0, /*[10]ビートマップデータのシーク数*/ 0x28,0,0,0, /*[14]ここから始まるヘッダの長さ*/ 0,0,0,0, /*[18]ビートマップの幅*/
0,0,0,0, /*[22]ビートマップの高さ*/ 0x01,0, /*[26]プレーン数*/
0x18,0, /*[28]1ピクセルあたりのビット数(1,4,8,24)*/ 0,0,0,0, /*[30]a圧縮タイプ(0=非圧縮)*/
0,0,0,0, /*[34]ビートマップの長さ*/ 0x20,0x2e,0,0, /*[38]水平解像度*/
0x20,0x2e,0,0, /*[42]垂直解像度*/ 0,0,0,0, /*[46]カラーインデックス数*/
0,0,0,0, /*[50]重要なカラーインデックス数*/ };
void init_image(int data[][Y_SIZE][3],int width,int height);
void save_bmp(char *bmpName,int data[][Y_SIZE][3],int width,int height);
void main() { int i,j,k; int image[X_SIZE][Y_SIZE][3];
init_image(image,X_SIZE,Y_SIZE); save_bmp(“test.bmp”,image,X_SIZE,Y_SIZE); }
void init_image(int data[][Y_SIZE][3],int width,int height) { int i,j,k;
for(i=0;i<Y_SIZE;i++)
for(j=0;j< X_SIZE;j++)
for(k=0;k<3;k++)
data[i][j][k]=255; }
save_bmp(char *bmpName,int data[][Y_SIZE][3],int width,int height) /*ファイル名bmpNameとしてwidth,heightのビットマップ画像を作成する*/ { FILE *fp; int i,j,k;
/*BMPファイルのヘッダを作る*/
bmpHeader[2]=sizeof(bmpHeader)+3*width*height; bmpHeader[34]=3*width*height;
bmpHeader[18]=width; bmpHeader[22]=height;
fp=fopen(bmpName,"wb"); /*BMPファイルを作る*/
for(i=0;i<sizeof(bmpHeader);i++) /*BMPファイルのヘッダを出力する*/ {
fputc(bmpHeader[i],fp); }
for(i=0;i<Y_SIZE;i++) /*ビットマップデータを出力する*/
  for(j=0;j<X_SIZE;j++)
    for(k=0;k<3;k++)
fputc(data[i][j][k],fp); fclose(fp); }
704デフォルトの名無しさん:2006/12/20(水) 13:19:15
>>682 講義で使ったものです。これでわかると思います。(間違いがあってので訂正したものを載せました)
#include<stdlib.h>
#include<stdio.h>
#define X_SIZE 128
#define Y_SIZE 128
Char bmpHeader[54]={ ‘B’,’M’ /*[0]ファイルタイプ*/ 0,0,0,0, /*[2]ファイルサイズ*/ 0,0,0,0, /*[6]予約*/
0x36,0,0,0, /*[10]ビートマップデータのシーク数*/ 0x28,0,0,0, /*[14]ここから始まるヘッダの長さ*/ 0,0,0,0, /*[18]ビートマップの幅*/
0,0,0,0, /*[22]ビートマップの高さ*/ 0x01,0, /*[26]プレーン数*/
0x18,0, /*[28]1ピクセルあたりのビット数(1,4,8,24)*/ 0,0,0,0, /*[30]圧縮タイプ(0=非圧縮)*/
0,0,0,0, /*[34]ビートマップの長さ*/ 0x20,0x2e,0,0, /*[38]水平解像度*/ 0x20,0x2e,0,0, /*[42]垂直解像度*/
0,0,0,0, /*[46]カラーインデックス数*/  0,0,0,0, /*[50]重要なカラーインデックス数*/ };
void init_image(int data[][Y_SIZE][3],int width,int height);
void save_bmp(char *bmpName,int data[][Y_SIZE][3],int width,int height);
void main() { int i,j,k; int image[X_SIZE][Y_SIZE][3];
init_image(image,X_SIZE,Y_SIZE); save_bmp(“test.bmp”,image,X_SIZE,Y_SIZE); }
void init_image(int data[][Y_SIZE][3],int width,int height) { int i,j,k;
for(i=0;i<Y_SIZE;i++)
for(j=0;j< X_SIZE;j++)
for(k=0;k<3;k++)
data[i][j][k]=255; }
save_bmp(char *bmpName,int data[][Y_SIZE][3],int width,int height) /*ファイル名bmpNameとしてwidth,heightのビットマップ画像を作成する*/ { FILE *fp; int i,j,k;
/*BMPファイルのヘッダを作る*/
bmpHeader[2]=sizeof(bmpHeader)+3*width*height; bmpHeader[34]=3*width*height;
bmpHeader[18]=width; bmpHeader[22]=height;
fp=fopen(bmpName,"wb"); /*BMPファイルを作る*/
for(i=0;i<sizeof(bmpHeader);i++) /*BMPファイルのヘッダを出力する*/ {
fputc(bmpHeader[i],fp); }
for(i=0;i<Y_SIZE;i++) /*ビットマップデータを出力する*/
  for(j=0;j<X_SIZE;j++)
    for(k=0;k<3;k++)
fputc(data[i][j][k],fp); fclose(fp); }
705デフォルトの名無しさん:2006/12/20(水) 13:33:59
実数は小数も含む
706デフォルトの名無しさん:2006/12/20(水) 13:42:56
>>693の問題文には実数と書いてあるが、
例には整数しか出てこないし>>697も整数型でやってる。
>>701はそれを疑問に思ったのだろう。
707697:2006/12/20(水) 13:59:08
おーすまん。実数だったのね。
全部のintをdoubleにして、%dを%fにすれば大丈夫だと思うよ。

それより「効率の良い」のほうを誰か提案してくれ。

708デフォルトの名無しさん:2006/12/20(水) 14:08:53
>>693
初心者なんで、効率いいかは分かりませんが
#include<stdio.h>
#define N 10
int main(){
int i,j,rank[N];
double min,a[N]={3.2,1.1,5.4,5.7,1.6,5.4,3.2,1.1,5.7,6.2};
min = a[0];

printf("[");for(i=0;i<N;i++){printf(" %.1lf ",a[i]);rank[i]=1;}printf("]\n");

printf("[ %03d ",rank[0]);for(i=1;i<N;i++){
if(min>=a[i]) min = a[i];
else{ for(j=i-1;j>=0;j--) if(a[j]<a[i]) rank[i]++;}
printf(" %03d ",rank[i]);
}printf("]\n");

return 0;
}
709デフォルトの名無しさん:2006/12/20(水) 15:08:26
710デフォルトの名無しさん:2006/12/20(水) 15:30:47
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):ラプラシアンフィルターを実現させる関数laplacianを作成せよ
void laplacian (int data[][Y_SIZE][3],int width,int height);
また、3点を与えると三角形を描く関数riangleを作成せよ。y1<y2<y3と仮定してよい
void triangle(int data[][Y_SIZE][3],int x1,int y1,int x2,int y2,int x3,int y3); main関数を以下のようにせよ
void main{
int image [X_SIZE][Y_SIZE][3]; init_image(image,X_SIZE,Y_SIZE);
triangle(int image[][Y_SIZE][3],64,5,120,30,20,100);
save_bmp("temp1.bmp",image,X_SIZE,Y_SIZE);
laplacian(image,X_SIZE,Y_SIZE);
save_bmp("test2.bmp",image,X_SIZE,Y_SIZE); }
[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:12月24日
711デフォルトの名無しさん:2006/12/20(水) 15:33:47
712デフォルトの名無しさん:2006/12/20(水) 15:43:13
>>693
>>709 と全く同じ解法だけど,せっかく書いたので.

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3248.cpp
713デフォルトの名無しさん:2006/12/20(水) 15:43:42
>>711
マルチではないです
714デフォルトの名無しさん:2006/12/20(水) 16:19:06
期限が違う以外にはまったく同じに見えるけどマルチじゃないのかな・・・
715デフォルトの名無しさん:2006/12/20(水) 16:29:44
716デフォルトの名無しさん:2006/12/20(水) 16:31:01
>>715のスレをもうちょっと先まで読むのもいいかも。
717709:2006/12/20(水) 16:36:05
>>693
>>712を読んでいたら間抜けな間違いに気づいたので修正。
愚かにも重複のある場合のテストをしていなかった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3249.c
718デフォルトの名無しさん:2006/12/20(水) 16:42:08
すげーな、AVL木ってこんな短く書けるのか。
719デフォルトの名無しさん:2006/12/20(水) 17:35:22
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):3点を与えると三角形を描く関数riangleを作成せよ。y1<y2<y3と仮定してよい
void triangle(int data[][Y_SIZE][3],int x1,int y1,int x2,int y2,int x3,int y3); main関数を以下のようにせよ
void main{
int image [X_SIZE][Y_SIZE][3]; init_image(image,X_SIZE,Y_SIZE);
triangle(int image[][Y_SIZE][3],64,5,120,30,20,100);
save_bmp("test1.bmp",image,X_SIZE,Y_SIZE);

[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:12月24日
720デフォルトの名無しさん:2006/12/20(水) 17:37:06
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):ラプラシアンフィルターを実現させる関数laplacianを作成せよ
void laplacian (int data[][Y_SIZE][3],int width,int height);
また、3点を与えると三角形を描く関数riangleを作成せよ。y1<y2<y3と仮定してよい
void triangle(int data[][Y_SIZE][3],int x1,int y1,int x2,int y2,int x3,int y3); main関数を以下のようにせよ
void main{
int image [X_SIZE][Y_SIZE][3]; init_image(image,X_SIZE,Y_SIZE);
triangle(int image[][Y_SIZE][3],64,5,120,30,20,100);
save_bmp("test1.bmp",image,X_SIZE,Y_SIZE);
laplacian(image,X_SIZE,Y_SIZE);
save_bmp("test2.bmp",image,X_SIZE,Y_SIZE); }
[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:今週中
721デフォルトの名無しさん:2006/12/20(水) 17:37:07
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
n本の線分の交差を列挙するプログラム。
1.線分は上端点のx、yと下端点のx、yで与えられる。
2.ヒープと二分探索木を利用した走査線計画。
3.交差は三角形符号つき面積で判断。
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc 3.4
 [3.3] 言語:C
[4] 期限:12月24日


クラス中がお手上あげ状態。よろしくおねがいます。
722デフォルトの名無しさん:2006/12/20(水) 17:38:20
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):ラプラシアンフィルターを実現させる関数laplacianを作成せよ
void laplacian (int data[][Y_SIZE][3],int width,int height);
また、3点を与えると三角形を描く関数riangleを作成せよ。y1<y2<y3と仮定してよい
void triangle(int data[][Y_SIZE][3],int x1,int y1,int x2,int y2,int x3,int y3);
[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:12月24日
723デフォルトの名無しさん:2006/12/20(水) 17:48:21
ラプラシアンUZEEEE
724デフォルトの名無しさん:2006/12/20(水) 17:50:01
うざいね。
俺はもう絶対解かない事に決めてる。
725デフォルトの名無しさん:2006/12/20(水) 17:50:28
わかんないだけ
726デフォルトの名無しさん:2006/12/20(水) 17:54:44
>>721
データは決まっているの?
適当でおk?
727721:2006/12/20(水) 18:00:14
>>726
線分のデータでしょうか?
それならてきとうでもOKです。
728デフォルトの名無しさん:2006/12/20(水) 18:55:23
配列に「HelloWorld!」と表示されるプログラムをマシン語で格納し、
その配列に格納されたプログラムを呼び出すことによって「HelloWorld!」と
表示させるプログラムを書け。

って言われたんですけど。配列はどう定義すればいいですか?
後呼び出しはどうすればよいですか?


729デフォルトの名無しさん:2006/12/20(水) 18:57:42 BE:46584746-2BP(202)
730デフォルトの名無しさん:2006/12/20(水) 21:25:43
>>728
まんま回答だが。。。
ttp://d.hatena.ne.jp/shinichiro_h/20061219#1166489566
# さぞ Binary Hacker ぞろいの学校なんだな。でなければそうとうの(ry
731デフォルトの名無しさん:2006/12/20(水) 21:48:08
回答と解答の違いを教えてl下さいお願いします!
732デフォルトの名無しさん:2006/12/20(水) 21:52:02
733デフォルトの名無しさん:2006/12/20(水) 21:57:00
"回答" == { 0x89F1, 0x939A }
"解答" == { 0x89F0, 0x939A }
734デフォルトの名無しさん:2006/12/20(水) 22:26:08
>>485
それってバブル整列法じゃ??
735デフォルトの名無しさん:2006/12/20(水) 23:00:20
>>617
助かりました。
どうもありがとうございました。
736デフォルトの名無しさん:2006/12/20(水) 23:43:38
>>734
バブルソートは
for(i=1;i<=N-1;++i)
for(j=0;j<N-i;++j)
if(ptr[j]>ptr[j+1]){
temp=ptr[j];
ptr[j]=ptr[j+1];
ptr[j+1]=temp;}
737デフォルトの名無しさん:2006/12/21(木) 00:49:37
>>485はどこがバブル整列法じゃないの?
738デフォルトの名無しさん:2006/12/21(木) 01:02:02
>>737
バブルソートと挿入ソートはインプレースで書くと違いが
わかりづらいけど、非インプレースで書くとわかる。
>>458 がどっちかは悩むところだけど、for の操作が必ず
手前で閉じているあたりで挿入ソートと判断する。

bubbleSort(a) {
  while (満足するまで) {
    a を改良
  }
  return a
}
insertSort(a) {
  b = [];
  for (i = 0; i < n; ++i)
    b に a[i] を挿入
  return b;
}
739デフォルトの名無しさん:2006/12/21(木) 01:05:47
740デフォルトの名無しさん:2006/12/21(木) 01:06:01
>>738
なるほど どうもありがとう
741485:2006/12/21(木) 01:09:30
>>739
ごめんなさい ゚・(ノД`)
742デフォルトの名無しさん:2006/12/21(木) 01:26:02
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3252.txt

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語: C
[4] 期限: 12月22日
[5] その他の制限: 特になし

よろしくお願いします
743デフォルトの名無しさん:2006/12/21(木) 01:36:32
744デフォルトの名無しさん:2006/12/21(木) 01:45:51
>742
問題1
#include <stdio.h>
int main(void){
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *p, i, sum = 0;
p = a;
for(i=0; i<10; i++, p++) sum += *p;

printf("合計:%d\n", sum);

return 0;}
問題2
#include <stdio.h>
int main(void){
int a[5], *p;
int i, min, max, sum = 0;
for(i=0; i<5; i++) scanf("%d", &a[i]);
p = a;
min = max = *p;
for(i=0; i<5; i++,p++) {
if(*p<min) min = *p;
if(*p>max) max = *p;
sum += *p;}
printf("最小:%d 最大:%d 平均:%f\n", min, max, (double)sum/5);
return 0;}
745デフォルトの名無しさん:2006/12/21(木) 03:15:50
内容:
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
スタックを使ってグラフの経路を全て出力するプログラムを作りなさい
グラフのつながりは
A->B A->C B->D B->E C->F C->G C->H D->I E->J E->K G->L
H->M H->N K->O M->O となっています
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc ?
 [3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:
出力は A-B-D-I の形にする
経路が出力される順番は問わない
XからYへ辿れるという情報からYからZへ辿れるという情報を検索できれば良い
スタックを使って先に来たデータを後回しで処理(AからはBへもCへも行けるが、
Cを後回しにしてBヘ行く経路を処理する等)

お願いします
746デフォルトの名無しさん:2006/12/21(木) 11:23:52
747デフォルトの名無しさん:2006/12/21(木) 11:40:20
実行したファイル名を除いたコマンド ライン引数に、複数個指定したすべてのファイルの内容を
標準出力に表示するプログラムを記述してください。
これわかりますか??
748デフォルトの名無しさん:2006/12/21(木) 11:42:32
UNIX の grep コマンドと同様に、1 つめの引数に示された文字列を持つ行を、
2 つめの引数で示されたファイル内から抜き出して表示するプログラムを作ってください。
strlength 関数と strinclude 関数に関しては宣言だけよし。
749デフォルトの名無しさん:2006/12/21(木) 11:45:24
>>1も読めない馬鹿にソース書いても解答として気がつくかどうか。
750デフォルトの名無しさん:2006/12/21(木) 11:52:00
>>747-748
>>1のテンプレにのっとって書け
751デフォルトの名無しさん:2006/12/21(木) 11:54:36
携帯だとめんどくせーんだよ
752デフォルトの名無しさん:2006/12/21(木) 12:02:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
UNIX の grep コマンドと同様に、1 つめの引数に示された文字列を持つ行を、
2 つめの引数で示されたファイル内から抜き出して表示するプログラムを作ってください。


[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:
strlength 関数と strinclude 関数に関しては宣言だけよし。
753デフォルトの名無しさん:2006/12/21(木) 12:06:05
>>752
>strlength 関数と strinclude 関数
なんですか、その関数?
754デフォルトの名無しさん:2006/12/21(木) 12:11:26
>>749
お前みたいな答えられない、答える気がないのにこのスレに来て
他人のソースにいちゃもんをつけるだけの馬鹿がバカって言うなよ?
良いから気に入らない奴をどうこう言うくらいならお前がここへ来るなよ、な?
分かったら回線切って首も(ry
755デフォルトの名無しさん:2006/12/21(木) 12:15:23
>>754
まともな質問にはちゃんと答えてますよ?
756デフォルトの名無しさん:2006/12/21(木) 12:17:39
>>754
答えられない、答える気がないのにこのスレに来るな
757デフォルトの名無しさん:2006/12/21(木) 12:20:14
>>756
そういうレスをいちいちするなよ?答えもしない低レベルなガキがw
黙ってろよ?これ以上レスしてもお前みたいな馬鹿は相手にせぬ
758デフォルトの名無しさん:2006/12/21(木) 12:22:08
こういう症状を火病って言うのだろうな
759デフォルトの名無しさん:2006/12/21(木) 12:26:51
>>757
(^ω^) フヒヒwwバカだぉwwバカだぉwwwwwwうぇwwww
760デフォルトの名無しさん:2006/12/21(木) 12:32:38
こないだ夜中にふぁびょってた奴だろ
自分がグダグタほざいてるくせに、他人が同じことすると消えろとか、首も(ry
とか
761デフォルトの名無しさん:2006/12/21(木) 12:33:42
何このスレ…
762デフォルトの名無しさん:2006/12/21(木) 12:36:57
さっさと答えろ
いつまで待たせやがるんだ
煽り合いは電話でやれ
763デフォルトの名無しさん:2006/12/21(木) 12:39:31
質問なんですが、2008年の5月6日は祝日になるんですか?
祝日法の定義でいけば6日は平日のはずなんですが・・・
764デフォルトの名無しさん:2006/12/21(木) 12:42:07
うん。
765デフォルトの名無しさん:2006/12/21(木) 12:42:27
>>760
>こないだ
やっぱてめぇか、日本語もロクに理解できない在日朝鮮人
とっとと祖国に帰って核実験の失敗に巻き込まれて消滅しろや
>>763
つ ttp://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
祝日って法律で定められているから
766デフォルトの名無しさん:2006/12/21(木) 12:45:00
>>765
おいおい、在日朝鮮人がきいたら怒るぞ。
767デフォルトの名無しさん:2006/12/21(木) 12:48:39
でもでも、カレンダー上は5月6日は火曜日なんすよ。
で、5月4日は日曜なんすよ。

4日は祝日ではなく休日扱いのはずなんすよ。
休日が日曜日になってもその振り替えは発生しないと思うんすよ。



と思ったら来年法改正があるじゃねーかーーー!!!
なるほど。5月4日は祝日になるのか。。。

知りませんでした・・・・
768デフォルトの名無しさん:2006/12/21(木) 12:49:01
>>765
自分を批判する人間は一人しか居ないと思い込めるのですね
幸せな人だ
769デフォルトの名無しさん:2006/12/21(木) 12:50:11
振り替えになるかってことか?
770デフォルトの名無しさん:2006/12/21(木) 12:52:26
在日って日本語ぺらぺらの人しか知らない。
771デフォルトの名無しさん:2006/12/21(木) 12:54:49
>>767
何でここで聞くんだ
スレタイも読めないのかお前は
772デフォルトの名無しさん:2006/12/21(木) 12:54:50
そんなことはどうでもいいから問題消化しようぜ。
773デフォルトの名無しさん:2006/12/21(木) 13:01:37
>>768
ものすごく鬱陶しいよ?スルーできないお前も同罪、まとめて失せろ
っつーかこんなスレに来るな
774デフォルトの名無しさん:2006/12/21(木) 13:08:04
>>773
つ鏡
775デフォルトの名無しさん:2006/12/21(木) 13:12:45
公園にダンボールで小屋作って、俺の家を壊すな!帰れ!って叫んでる乞食のようだ。
776デフォルトの名無しさん:2006/12/21(木) 13:14:23
>747
for(i=1; i<argc;i++) {
fp=fopen(argv[i],"r");
while((ch=fgetc(fp))!=NULL) putchar(ch);
fclose(fp);}
777デフォルトの名無しさん:2006/12/21(木) 13:22:28
間違えた
while((ch=fgetc(fp))!=NULL) → while((ch=fgetc(fp))!=EOF)
778デフォルトの名無しさん:2006/12/21(木) 13:23:27
>>774
いや、だからいい加減にしろって。お前批判する人間は一人しか居ないと思い込めるのですね
幸せな人だ
779デフォルトの名無しさん:2006/12/21(木) 13:26:55
まさにかおす
780迷えるアヒル:2006/12/21(木) 13:41:11
内容:
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
2次元配列 city[4][7]={"TOKYO","OSAKA","KOBE","KYOTO"}の
各文字列要素を文字列ごとに出力する。

1.char型配列a[][7]に格納された文字列をmax個の文字列分だけ出力する void型関数 hyoji(char a[][7],int max)を作成する

2.main()関数内で関数hyoji()を用いてcity[4][7]の各文字列要素を文字列ごとに出力する

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualvasic (?)
 [3.3] 言語: C
[4] 期限:今日中
[5] その他の制限: ポインタは使わない
781デフォルトの名無しさん:2006/12/21(木) 13:43:09
>>780
1の出力例を書いてくれ
782デフォルトの名無しさん:2006/12/21(木) 13:49:03
>>780
VisualBasicの事かああああああ!!
783デフォルトの名無しさん:2006/12/21(木) 13:49:20
>780
#include <stdio.h>

void hyoji(char p[][7], int max)
{
int i;
for(i=0; i<max; i++) puts(p[i]);
}

int main(void)
{
char city[4][7]={"TOKYO","OSAKA","KOBE","KYOTO"};

hyoji(city,4);

return 0;
}
784迷えるアヒル:2006/12/21(木) 13:58:02
ありがとうございます!うまく出力できました+。:.゚ヽ(*´∀)ノ゚.:。+゚

まだまだ初心者で問題の意味から考えてた始末でしたorz
785困ってます。:2006/12/21(木) 14:55:01
次のような課題が出たのですが、どうしても解けません。。よろしくお願いします。

数n を入力し、幅 n で高さ n の以下のような直角三角形を2つ並べて画面に表示するプログラムを書け。
これは n が3の場合の例。 (*は半角のスペースである。)

**S
*SS
SSS
**S
*SS
SSS
786デフォルトの名無しさん:2006/12/21(木) 14:56:14
>>785
断る。
787デフォルトの名無しさん:2006/12/21(木) 15:00:09 BE:81522476-2BP(202)
788デフォルトの名無しさん:2006/12/21(木) 15:02:35
>785
#include <stdio.h>

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

scanf("%d", &n);
for(i=0; i<2; i++) {
for(j=0; j<n; j++) {
for(k=0; k<n-j-1; k++) putchar(' ');
for(k=0; k<=j; k++) putchar('*');
putchar('\n');
}
}
return 0;
}
789デフォルトの名無しさん:2006/12/21(木) 15:06:48
790デフォルトの名無しさん:2006/12/21(木) 15:10:21
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3254.txt
このプログラムが何をしているか説明しなさい
という問題なんですが
実行結果が意味不明な数字の羅列でよくわかりません
恐らく数学的な意味だとは思うんですが
良かったら教えて下さい
791デフォルトの名無しさん:2006/12/21(木) 15:16:35
難しいのでわかりません
792迷える子羊:2006/12/21(木) 15:20:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
UNIX の grep コマンドと同様に、1 つめの引数に示された文字列を持つ行を、
2 つめの引数で示されたファイル内から抜き出して表示するプログラムを作ってください。


[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:

793初心者@携帯:2006/12/21(木) 15:34:16
>>785
int main(void)
{
int n,count,i;
scanf("%d",&n);
for(count=1;count<=n;count++) {
for(i=0;i<(n-count);i++)
printf(' ');
for(i=0;i<count;i++)
printf('S');
printf('\n');
}
return 0;
}
794793:2006/12/21(木) 15:37:00
>>785
>>793は見なかったことにしてくださいorz
二回繰り返すの忘れてたし、激しく遅レスだった。
795デフォルトの名無しさん:2006/12/21(木) 15:43:35
>>790
mainの中の40を小さい数字にすれば分かると思うよ
796デフォルトの名無しさん:2006/12/21(木) 15:48:35
#include <stdio.h>
#include <string.h>
#define PRINT(i,sbuf) {int k=(i);memset((sbuf),' ',k);(sbuf)[k]=0;for(;k>0;sbuf[--k]='*',printf("%s\n",sbuf));}
int main(void){
    unsigned int i; char *sbuf;
    printf("input i:");scanf("%u",&i);
    if(i>0 && (sbuf=malloc(sizeof(char)*i+1))!=NULL){
        PRINT(i,sbuf)
        PRINT(i,sbuf)
    }
}

汚くしてみた
797デフォルトの名無しさん:2006/12/21(木) 15:50:28
>>795
ありがとうございます、やってみます
ちなみに数学的な意味で間違いないでしょうか?
例えば「円の面積を求めるプログラム」という風に具体的に書けますか?
ぶっきらぼうにコレやってこいって渡されたので
課題プログラム間違ってんじゃないかと
オロオロしてまして・・・・
年末でその方には提出日まで会えませんし
798デフォルトの名無しさん:2006/12/21(木) 15:50:44
>>796
こっちだな
#include <stdio.h>
#include <string.h>
#define PRINT(i,sbuf) do{int k=(i);memset((sbuf),' ',k);(sbuf)[k]=0;for(;k>0;sbuf[--k]='*',printf("%s\n",sbuf));}while(0)
int main(void){
    int i; char *sbuf;
    printf("input i:");scanf("%d",&i);
    if(i>0 && (sbuf=malloc(sizeof(char)*i+1))!=NULL){ PRINT(i,sbuf); PRINT(i,sbuf); }
}
799デフォルトの名無しさん:2006/12/21(木) 15:52:31
>>797
ぶっちゃけるとプログラミング言語に日本語のような高度な説明力はない
最悪「〜を○回繰り返した値を×に一度記憶して…」みたいなベタな説明でも"説明"になる
「プログラムは思ったとおりに動かない、書いたとおりに動く」ならその一番gdgdな説明でも事足りるんだよ
800デフォルトの名無しさん:2006/12/21(木) 15:59:09
>>797
何をするプログラムなのかは一言で言える
どれくらいの説明を求められているかはわからないが、
tとcの関数の意図とmain関数の4つのforループで何をしているかを書ければ問題ないだろう
801デフォルトの名無しさん:2006/12/21(木) 16:02:57
もうどうみても階乗ds
802迷える子羊:2006/12/21(木) 17:03:22
792教えてください・・・

803デフォルトの名無しさん:2006/12/21(木) 17:20:54
>>792
手抜き検索
#include "stdio.h"
int main(int argc, char *argv[]) {
if (argc < 2) { printf("few arguments\n"); return 1; }
FILE *head = fopen(argv[2], "r");
FILE *tail = fopen(argv[2], "r");
if (!head || !tail) { printf("file opening error\n"); return 1; }
int found, i, rc=0;
while (rc != EOF){
found = 0; i = 0;
while ((rc = fgetc(head)) != EOF){
if (argv[1][i] == '\0') { found = 1; i = 0; }
if (rc == '\n') break;
if (argv[1][i] == rc) i++; else i = 0; }
while ((rc = fgetc(tail)) != EOF){
if (found) putchar(rc); if (rc == '\n') break; } }
putchar('\n'); }
804803:2006/12/21(木) 17:25:33

ゴメン,やっぱダメだ
"abc"の検索時に"ababcd"を見逃す.
805デフォルトの名無しさん:2006/12/21(木) 17:43:02
>>799-800
ありがとうございます
具体的に明記しなさいという事なので再度質問させて貰いました

40を任意定数としたら
1*2*3*4*5*・・・n!とわかりました
>>801
答えありましたね;
どうもです
806デフォルトの名無しさん:2006/12/21(木) 17:58:18
>>792
これで大丈夫かな.まだ問題あるかも
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
if (argc < 2) { printf("few arguments\n"); return 1; }
FILE *head = fopen(argv[2], "r");
FILE *tail = fopen(argv[2], "r");
if (!head || !tail) { printf("file opening error\n"); return 1; }
int i, j, len = strlen(argv[1]), found, rc;
int *jump = malloc(len*sizeof(int));
if (!jump) { printf("memory error\n"); return 1; }
for (i=0; i<len; i++) jump[i] = 0;
for (i=1; i<len; i++) for (j=i; j<len-i; j++)
if (strncmp(argv[1], argv[1]+j, i)==0) jump[i+j] = i;
while (rc != EOF){
found = 0; i = 0;
while ((rc = fgetc(head)) != EOF){
if (argv[1][i] == '\0') { found = 1; i = 0; }
if (rc == '\n') break;
while (i && argv[1][i] != rc) i = jump[i];
if (argv[1][i] == rc) i++; }
while ((rc = fgetc(tail)) != EOF){
if (found) putchar(rc); if (rc == '\n') break; } }
putchar('\n'); }
807デフォルトの名無しさん:2006/12/21(木) 18:13:12
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):ラプラシアンフィルターを実現させる関数laplacianを作成せよ
void laplacian (int data[][Y_SIZE][3],int width,int height);
また、3点を与えると三角形を描く関数riangleを作成せよ。y1<y2<y3と仮定してよい
void triangle(int data[][Y_SIZE][3],int x1,int y1,int x2,int y2,int x3,int y3); main関数を以下のようにせよ
void main{
int image [X_SIZE][Y_SIZE][3]; init_image(image,X_SIZE,Y_SIZE);
triangle(int image[][Y_SIZE][3],64,5,120,30,20,100);
save_bmp("test1.bmp",image,X_SIZE,Y_SIZE);
laplacian(image,X_SIZE,Y_SIZE);
save_bmp("test2.bmp",image,X_SIZE,Y_SIZE); }
[3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++
[4] 期限:12月24日
808デフォルトの名無しさん:2006/12/21(木) 18:32:34
>>807
その根気強さと粘りと執念深さがあれば今からプログラミング覚えても間に合う
809デフォルトの名無しさん:2006/12/21(木) 18:44:44
>>808
普通はそうなんだけど、>>807は人間的に問題があるから・・
810デフォルトの名無しさん:2006/12/21(木) 20:03:22
喪前ら......もちつけ
(^ω^) フヒヒwwクリスマスだぉww正月だぉwwwうぇwwwwもちつきだぉ
811デフォルトの名無しさん:2006/12/21(木) 20:04:44
すまん、誤爆したorz
812デフォルトの名無しさん:2006/12/21(木) 20:07:15
なにやってんだよw
813デフォルトの名無しさん:2006/12/21(木) 20:20:17
>>810
特定しますたフヒヒwwww
814デフォルトの名無しさん:2006/12/21(木) 20:52:13
int型のa=3とb=2があって、
a/bの結果が1.500000となるにはどのような式を書けばいいのでしょうか?
fortranだとDBLE(a)/DBLE(b)という感じになるのですが。
815デフォルトの名無しさん:2006/12/21(木) 20:53:28
(double)a/(double)b
816814:2006/12/21(木) 20:55:25
>>815
ありがとうございます。
817デフォルトの名無しさん:2006/12/21(木) 20:56:30
(double)a/b
818デフォルトの名無しさん:2006/12/21(木) 21:16:40
1.*a/b
819デフォルトの名無しさん:2006/12/21(木) 21:22:49
a/1./b
820デフォルトの名無しさん:2006/12/21(木) 23:21:39
お初です。お力をお貸しください。
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
Edit Box に一辺の長さを入力してその値を atof関数 を使用して実数に変換。
そして正三角形を描画するものです。
visual c++ 6.0でダイアログベースで作成してます。

仕様:
1)入力する一辺の長さの範囲を0から1の間の実数とする。

2)入力された辺の長さによって、ピクチャーボックスに描画される図形の
サイズも変化させる。(1が入力された場合には枠一杯に描画する)

3)描画領域および EditBox 全てをクリアするボタンをつける。
[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン: (VC 6.0++)
 [3.3] 言語: (どちらでも可)
[4] 期限: (2006年12月26日まで)
[5] その他の制限:
821デフォルトの名無しさん:2006/12/21(木) 23:24:09
自然対数ってどうやって表せば良いのでしょうか?

log2.71828(x) とか log2.719(x) っていう風にすれば良いのでしょうか?
822デフォルトの名無しさん:2006/12/21(木) 23:26:24
スレチだったので質問スレに書き込むことにします。すいません
823デフォルトの名無しさん:2006/12/22(金) 02:17:57
>>721
1. 二分探索木は平衡する必要はある?
2. 具体的な交点を求める必要はある?(あるなら符号付面積は二度手間だが?)
3. 計算量は項点数を k として O( (n+k) log n ) でないと駄目?
4. どれくらい縮退に対して対応する必要がある?

4 を十分対処して 3 を満たさないプログラムは比較的簡単にできる.
3 を満たさせるためには,俺には 4 を相当捨てないと無理.
824デフォルトの名無しさん:2006/12/22(金) 06:02:31
>>792
っ strstr
825デフォルトの名無しさん:2006/12/22(金) 10:49:32
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
キーボードから入力されるすべての文字をカウントし、入力が終了したら、
以下の内容を表示してください。

- すべての文字の文字数
- 小文字のアルファベットの文字数
- 大文字のアルファベットの文字数
- 行数

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限:今日中
[5] その他の制限:
826デフォルトの名無しさん:2006/12/22(金) 10:55:15
>>825
入力の終了ってEOF?改行?
827デフォルトの名無しさん:2006/12/22(金) 12:53:18
二重積分ってどうかんがえればいいの?
簡単なヒントください><
828デフォルトの名無しさん:2006/12/22(金) 12:58:21
y=sekibunn(sekibunn(x));
829デフォルトの名無しさん:2006/12/22(金) 13:04:10
すれ違いだからでしょうか。>827は質問スレの方でします。失礼しました。
830デフォルトの名無しさん:2006/12/22(金) 13:06:46
>>829
もういないかもしれないがスレ違いとか気にする前に>>1を読め
どこのスレでも同じだ
831デフォルトの名無しさん:2006/12/22(金) 13:23:05
【質問テンプレ】
[1] 基礎情報工学T:
[2] 問題文(含コード&リンク):
被積分関数xyについて積分区間を各々0〜1として
面積を求めよ。共に実数である。

つまりxy座標平面上において原点を頂点の一つとする、一辺が1の正方形の面積を求めるプログラムを
作りたいのです。解析的な答えは「1」となります。
座標変換を用いて1重積分に落とすことは出来ますが、それはしてはいけないことになっています。
自分で考えた限りではforの中にforを作ればいいと思ったのですが、関数名の取り扱いでこんがらがってしまって
さっぱりわかりません。
どうかよろしくお願いします。

[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン: visual studio2003
 [3.3] 言語: (C++)
[4] 期限: (23日日曜日まで)
[5] その他の制限: (2週間ぐらい前に始めて1重積分はできました。)
832デフォルトの名無しさん:2006/12/22(金) 14:10:06
826>>EOFです。
833デフォルトの名無しさん:2006/12/22(金) 14:13:48
834721:2006/12/22(金) 14:50:18
>>823
1. 二分探索木は平衡する必要はある?
:ないです。
2. 具体的な交点を求める必要はある?(あるなら符号付面積は二度手間だが?)
:最終的には交点の数だけほしいです。(交点を求めないのなら走査線が止まるイベントポイントが得られないかも?)
3. 計算量は項点数を k として O( (n+k) log n ) でないと駄目?
:O( (n+k) log n )ですね。
4. どれくらい縮退に対して対応する必要がある?
:3を満たさせるなら4はお任せします。

お手数おかけします
835デフォルトの名無しさん:2006/12/22(金) 14:56:08
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
実行したファイル名を除いたコマンド ライン引数に、
 複数個指定したすべてのファイルの内容を標準出力に
 表示するプログラムを記述してください。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日中
836デフォルトの名無しさん:2006/12/22(金) 15:48:20
>>835
#include<stdio.h>
int main(int argc, char *argv[]){
while(argc>1){
argc--;
printf("%s\n",argv[argc]);}
return 0;}
837836:2006/12/22(金) 15:51:22
というかだいぶ問題勘違いしてた ごめん吊ってくる
838デフォルトの名無しさん:2006/12/22(金) 16:05:41
[1] 宿題ではないのですが
[2]

a[1],a[2],…,a[100]に実数が入っていて、csvファイルに下記のように
記録するにはどのようにすればいいのでしょうか。

a[1],a[2],…,a[20]
a[21],a[22],…,a[40]
・・・
a[81],a[82],…,a[100]

[3] 環境
 [3.1] Windows&Linux
 [3.2] gcc VC++ 6.0 (コンパイラに依存しないプログラムが欲しいです)
 [3.3] C
[4] 期限: [無期限] ですが可能であれば数日以内にはお願いします。
[5] その他の制限:
839デフォルトの名無しさん:2006/12/22(金) 16:05:55
>>835
int main(int argc,char *argv[]){
FILE *fp;
int c;
while(argc>1){
if((fp=fopen(argv[--argc],"r"))==NULL)exit(1);
while((c=fgetc(fp))!=EOF)putchar(c);
fclose(fp);}
return 0;}
こんな感じか?まだ勘違いしてるかも orz
840デフォルトの名無しさん:2006/12/22(金) 16:08:58
>>838
宿題じゃないけど期限あるってどんな状況?
あと、配列はa[0]〜a[99]じゃないのか?

for(i=0;i<5;i++){
for(j=0;j<20;j++)printf("%lf,",a[i*20+j]);
printf("\n");
}
841838:2006/12/22(金) 16:28:44
>>840ありがとうございます。
配列はa[0]〜a[99]の間違いでした。
プログラムそのものには期限はないのですが卒論の期限がありまして
早めに回答していただけたら・・・という状況です。

842デフォルトの名無しさん:2006/12/22(金) 16:34:03
>>840
2回もforする必要なくね?
for(i=0;i<100;i++){
fprintf(fp,"%lf",a[i]);
if(!((i+1)%20))fprintf(fp,"\n");
}
843デフォルトの名無しさん:2006/12/22(金) 16:36:36
[1] 授業単元:プログラミング
[2] 問題文:

文字列を入力し、その文字数を調べて表示するプログラムを作成せよ。
ただし、文字列ライブラリ関数strlen()などは使用せず、ループを使って文字数
を調べる関数str_len()を自作すること。
---------------------------
int str_len(char *p);
返却値:文字数
引数 :文字列へのポインタ
---------------------------

入力文字列に対する妥当性チェックはしなくてよい。


Enter String : ABCDE
Length of ABCDE = 5

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2006年12月24日
[5] その他の制限:問題文にもありますが、文字列ライブラリ関数strlen()などは使わず、ループを使うそうです。
844デフォルトの名無しさん:2006/12/22(金) 16:49:29
#include <stdio.h>
int str_len(char *p){
int i;
for(i=0; *p; i++,p++);
return i;}
int main(void){
char a[256];
printf("Enter String:");
scanf("%s", a);
printf("Length of %s = %d\n", a, str_len(a));
return 0;}
845デフォルトの名無しさん:2006/12/22(金) 16:51:03
>>843
int str_len(char *p)
{
int count=0;
while(*p) {
p++;
count++;
}
return count;
}
846デフォルトの名無しさん:2006/12/22(金) 17:00:53
>>844,>>845
ありがとうございます!
ループはforかwhileか、効率的な方法を考えてみます。
847デフォルトの名無しさん:2006/12/22(金) 17:29:28
国語が 60 点以上でかつ、数学と理科のどちらか一方でも 60 点以上なら合格.
cでお願いします
848デフォルトの名無しさん:2006/12/22(金) 17:31:34
>>1も読めない>>847は0点
849デフォルトの名無しさん:2006/12/22(金) 17:34:03
>831
y=sekibunn(sekibunn(x));
850デフォルトの名無しさん:2006/12/22(金) 17:45:38
>>847
inline bool hantei(int kokugo, int suugaku, int rika)
{ return kokugo >= 60 && (suugaku >= 60 || rika >= 60); }
C99でコンパイルすること!
851838:2006/12/22(金) 17:58:06
>>842ありがとうございます。
こちらのプログラムでもうまくいきました。
852デフォルトの名無しさん:2006/12/22(金) 19:26:13
ここってPAD書けって宿題も受付てますか?
853デフォルトの名無しさん:2006/12/22(金) 19:54:48
>>852
CかC++限定のスレだから受け付けてない
854デフォルトの名無しさん:2006/12/22(金) 21:55:33
>>853
Cで書かれててこれのPAD書けってヤツなんだけど
855デフォルトの名無しさん:2006/12/22(金) 22:54:48
>>854
ここはC/C++で書くことが前提のスレだから、残念ながら他を当たってくれ。
856デフォルトの名無しさん:2006/12/22(金) 23:21:20
>>854
PADで書かれてて、Cで書けって宿題なら大歓迎だ
857デフォルトの名無しさん:2006/12/22(金) 23:29:35
>>851
>>840だと行の最後に不要な , が入らないか?
>>842は数字の間に , 入らないし
面倒なので>>842使って改良

for(i=0;i<100;i++){
if(!((i+1)%20))fprintf(fp,"%lf\n",a[i]);
else fprintf(fp,"%lf,",a[i]);
}
858デフォルトの名無しさん:2006/12/22(金) 23:50:35
こう一回ごとにifで判定するのとループを二重に回すのってどっちが効率いいの?
859デフォルトの名無しさん:2006/12/22(金) 23:58:16
>>842
せっかくだから出番の少ない%cに愛の手を
for(i=0;i<100;i++){
fprintf(fp,"%lf%c",a[i],(i+1)%20?',':'\n');
}
860デフォルトの名無しさん:2006/12/23(土) 00:02:23
>>858
どっちも比較は2回してるからそう大して違わないんじゃないかと
861デフォルトの名無しさん:2006/12/23(土) 00:04:18
[1] 授業単元:C++
[2] 問題文(含コード&リンク):非線形最小自乗法
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.2.2.5)
 [3.3] 言語: C++のみでお願いします
[4] 期限: 12/25 13:00 まで
[5] その他の制限: (標準ライブラリ、テンプレート、継承は使ってはいけない)



問題は↓です。専ブラで見やすいようにjpgと 一応zipでうpしました

http://kjm.kir.jp/pc/index.php?p=27017.jpg  1枚目
http://kjm.kir.jp/pc/index.php?p=27016.jpg  2枚目
http://kjm.kir.jp/pc/index.php?p=27015.jpg  3枚目
http://kjm.kir.jp/pc/index.php?p=27014.jpg  4枚目


zipの方はこちら
http://www.uploda.org/uporg626661.zip.html
受信パス:kadai


ここで、(A6)より α1=0.023 α2=5.2とありますが 課題3の1) をすると解析値(手計算)では α1=0.023  α2=5.612 です。
追加条件で 

(A12) 、(A13) からクラメルでξ1, ξ2 を求めよ。

プログラミングは2枚目の(A1)からということになります
期限内に解いていただけたら一番良いのですが期限が過ぎた後でも回答いただければ嬉しいです。よろしくお願いします
862860:2006/12/23(土) 00:04:25
>>858
違った
ループ2重は101回の比較か
ifだと201回の比較だな
863859:2006/12/23(土) 00:04:34
ってちがう
>>857宛だった
864860:2006/12/23(土) 00:13:11
>ループ2重は101回の比較
これも違った
ループ2重は106回の比較だった
865デフォルトの名無しさん:2006/12/23(土) 00:21:13
>>864
(5+1)+(20+1)*5
866デフォルトの名無しさん:2006/12/23(土) 00:36:03
>>865
最初のループの5回分足すの忘れてた
もう寝るわorz
867デフォルトの名無しさん:2006/12/23(土) 00:47:47
>>861
クラメルって何?クラメルの公式の事?
掃き出し法とかガウスの消去法は使っちゃだめって事?
868デフォルトの名無しさん:2006/12/23(土) 01:03:04
>>834
二分木を平衡させないと O( (n+k) log n ) は達成できないような
869861:2006/12/23(土) 01:12:12
>>867
すいませんそうです。(A12) 、(A13)から行列に直してクラメルの公式でってことです
2行2列で簡単なのでクラメルの公式を用いるとのことです
メールが届いてたみたいで課題の指示がありました

(受信メールです)
--------------------------------------------------------------------------
余裕のある人は
。数値計算により初期値を見出す方法を実装する。
。ガウス関数群(Lorenz関数群でも可)が重畳している曲線を非線形最小自乗法
 で分離する。数値計算により測定データをつくってから、手で誤差を与え、 それを実測データとみなす。
というチャレンジテーマがありえます。その他を自分で考えてください。
---------------------------------------------------------------------------

とあるので ガウス関数群というのがガウスの消去法のことであればそちらで解いていただいてもかまいませんが
掃き出しを使うならクラメルの公式でって指示がありました

もし高等な解法に慣れていて クラメルに不慣れであれば2元連立1次については↓
http://www.ee.fit.ac.jp/~kudou/1mathA/01/01-2.html  がすごくわかりやすかったです
870デフォルトの名無しさん:2006/12/23(土) 01:19:45
>>869
ガウス関数群はガウス消去法とは全然別物。
exp(-x^2) の仲間をガウス関数、1/(1 + x^2) の仲間をローレンツ関数という。

上から二つ目の課題は、こいつらの足し合わせで書かれる曲線について
どういうふうに足しあわされてるかを最小自乗で特定せよ、という意味。
871デフォルトの名無しさん:2006/12/23(土) 01:26:29
>>869
わかったよー
俺も線形代数の本持ってるから、クラメルの公式については既知。
872861:2006/12/23(土) 01:36:35
>>870
ググってきました。
クラメルと両方あれば勉強になってありがたいですが 
チャレンジ課題は面倒なことを依頼することになりそうなので お任せ致します!


>>871
超感謝です! よろしくです
873861:2006/12/23(土) 01:59:04
すいません訂正です・・・

解析値(手計算)では α1 = 0.02114   α2 = 5.612 でした
874721:2006/12/23(土) 02:20:58
>>868
バカですみません_| ̄|○
二分木を平衡させないと O( (n+k) log n ) は達成できないのなら、平衡でお願いします。
875デフォルトの名無しさん:2006/12/23(土) 04:23:23
>>861
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3258.txt

これは課題4の(1)のみです。文の中に「〜をクリアすること」と書いて
ありますが、上書きしているので省略しています。
表の計算や、正規方程式の作成というコメントがついている所の
printf()のコメントを外すと、表と正規方程式の係数が表示できます。

(2)と(3)はプロットする方法がわからないので書いてありませんが、
(1)を適当に変更すればできると思います。(4回で収束してしまうので
繰り返し回数も糞もないと思いますが・・・・)
876デフォルトの名無しさん:2006/12/23(土) 04:30:27
う・・・・C++のみか。どうすっかな。そんなに変わらないんだけど

#include <cstdio>
#include <cmath>
using namespace std;

int main()
{

とすれば最小限の変更でC++になるかな。
877デフォルトの名無しさん:2006/12/23(土) 04:34:56
「暇な人はセミコロンを1つしか書かずに、char配列の文字列が一致するかどうかを見る関数を作ってみてください」
と言われました。どうでも良いですが教えてください。
878デフォルトの名無しさん:2006/12/23(土) 04:44:01
int comp(char *a, char *b)
{
return !strcmp(a, b);
}
879デフォルトの名無しさん:2006/12/23(土) 04:53:22
for文で既にセミコロンを最低2つ使うしな。
標準ライブラリを使うなという事になると結構難問だ。
880デフォルトの名無しさん:2006/12/23(土) 05:12:42
int hoge(char *a. char *b){
  return (*a==*b) ? ((*a==0 || *b==0) && hoge(a+1,b+1)): 0;
}

こんなん?
(酒入ってだめぽ)
881デフォルトの名無しさん:2006/12/23(土) 05:15:54
いや、こうだな

int hoge(char *a, char *b){ return (*a==*b) ? ((*a==0 || *b==0) || hoge(a+1,b+1)): 0;}
882デフォルトの名無しさん:2006/12/23(土) 12:52:36
*a>=0x80 *b>=0x80 のときは考慮しないことにして char が signed char のとき限定
int hoge(char *a, char *b){return (*a=='\0' || *b=='\0')?(*b-*a):hoge(a+1, b+1);}
883861:2006/12/23(土) 13:51:44
またメールが届いてたのですが 提出者が1人もおらず標準ライブラリを使わずにという条件だと難易度が余計にあがってしまうということで
その条件は解除されました!

>>875
ありがとうございます! ありがたくいただきますね



途中まで標準ライブラリを使わずにやってみたんですが どうもP'iの値が違っててわからないですね・・・
884デフォルトの名無しさん:2006/12/23(土) 14:52:37
[1] 授業単元:Cプログラミング
[2] 【問題】:入出力ライブラリ関数「fgets()」を使用して文字列を入力し、その文字列をそのまま
printf()で表示するプログラムを作成せよ。
10文字を超える入力があった場合には、11文字以降を切り捨てるようにfgets()を使う
こと。
この時、10文字以上の入力を行った場合と、10文字未満の入力を行った場合で、各々
入力文字列格納先にはどのような文字が格納されるのかをレポートせよ。

※この課題では、表示結果は必ずしも実行例と同じでなくてよい。
ただし、fgets()での入力により、文字数に依存して配列にどのような文字が格納
されるかをレポートすること

【実行例】
Enter : abc lmn xyz ←空白も入力可能
You entered abc lmn xy. ←意図的に末尾にピリオドを表示させています
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2006/12/25
885デフォルトの名無しさん:2006/12/23(土) 15:04:34
>>884
#include<stdio.h>
int main(){
char c[11];
printf("Enter : ");
fgets(c,11,stdin);
printf("You entered %s.",c);
return 0;}
レポートは自分でやれ
886デフォルトの名無しさん:2006/12/23(土) 16:15:32
内容:
[1] 授業単元:Cプログラミング演習
[2] 問題文:学籍番号(5桁の英数文字列)、英、数、国の得点(各100点満点)を
      次々に読み込んで、各人の総得点を計算の上、@読み込んだ順に
      各人のデータを、A各人の平均と標準偏差を次の形に出力する
      cプログラムを作成せよ。

      但し、プログラム作成においては
      ・学生の人数は100人以下で不定とする。(100人以下なら何人でも、
       プログラムを修正せずにうまく対処しなければならない)
      ・学生一人のデータは構造体としてまとめて、それにStudentという
       データ型名をつけること。
      ・Student型を要素とする配列を用意してプログラムを組むこと。 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2007年1月10日12:00まで
その他:得点データはファイルから読み込みます。./a.out<ファイル名 といった風に

よろしくお願いします

887デフォルトの名無しさん:2006/12/23(土) 16:17:37
>>886
以下のような形で出力してください
Id-No Eng Math Jap Total
----- --- ---- --- -----
G0342 44 65 51 160
G0343 83 100 84 267
G0344 58 30 57 145
.
.
.
G3621 85 80 90 255
G3622 74 100 65 239
------------------------------
Ave 72.5 75.8 68.1 216.4
Dev 15.3 19.6 12.4 33.3
888デフォルトの名無しさん:2006/12/23(土) 16:18:34
>>887
少しずれてますが好意的に解釈して
ください。。すみません
889デフォルトの名無しさん:2006/12/23(土) 16:35:10
簡単すぎてやる気が起きない(´・ω・`)
890デフォルトの名無しさん:2006/12/23(土) 16:38:51
標準偏差の求め方を調べる気が起きない(´・ω・`)
891デフォルトの名無しさん:2006/12/23(土) 16:41:49
>>883
済まん。元々標準ライブラリの使用もできないという制限があった
ようですね。
しかしpow関数を使えないとなると、log関数を使いたくなるけどそれも
だめで、テーラー展開しかなくなりますが1e-7の誤差に収めるとなると
相当高い次数まで展開しなければいけなくなるし。

本来の計算の意義が失われてしまうかも、ですね。条件が解けて
よかったですね。
892デフォルトの名無しさん:2006/12/23(土) 17:02:36
[1] 授業単元: Cプログラミング基礎
[2] 問題文(含コード&リンク): 問題文 ttp://www.geocities.jp/c_prog2011/file_3_t.txt
途中まで自分で作ったソース ttp://www.geocities.jp/c_prog2011/file_3.txt
[3] 環境
 [3.1] OS: Windows XP Home Edition
 [3.2] コンパイラ名とバージョン: Visual Studio 2005 Academic Edition
 [3.3] 言語: Cのみ
[4] 期限: 2006年12月31日23:59
[5] その他の制限:

よろしくおねがいします。
893デフォルトの名無しさん:2006/12/23(土) 18:44:45
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3259.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2003
 [3.3] 言語: C
[4] 期限: 2006年12月25日
[5] その他の制限: 特になし。よろしくお願いします。

894デフォルトの名無しさん:2006/12/23(土) 19:13:00
895デフォルトの名無しさん:2006/12/23(土) 20:08:09
質問です。圧力の単位の換算表をしらべてもあてはまらないのがあります。
pa(=N/m2) kgf/cm3 atm Torr(=mmhg) H2O(m)at15℃水柱(Aq)
1   1.0197*10-5 7.5006*10-3 1.0206*10-4
98066.5の時のatm H2O
101325のときのkgf/cm2 Torrがわかりません。おねがいします
896デフォルトの名無しさん:2006/12/23(土) 20:14:41
すれ違い
897デフォルトの名無しさん:2006/12/23(土) 20:22:50
>>886
得点データX0 X1 X2 X3....XN-1の標準偏差ρは

ρ=√(1/NΣXi^2-μ^2) μは得点の平均です

Σの上はN-1、下はi=0です。
898デフォルトの名無しさん:2006/12/23(土) 21:30:35
>>897 合ってる?
ρ=√(1/NΣ(Xi-μ)^2)
899デフォルトの名無しさん:2006/12/23(土) 22:09:36
ρ=√(1/NΣ(Xi^2-μ^2))
ってことです。。
900デフォルトの名無しさん:2006/12/23(土) 22:15:30
>>899
一般に通用する標準偏差の定義と違うから >>897 で用語を定義してるってことでおk?
901デフォルトの名無しさん:2006/12/23(土) 22:17:48
ごく普通の標準偏差だろ。分散の平方根。
902デフォルトの名無しさん:2006/12/23(土) 22:32:52
オーケイです よろしくお願いします
903デフォルトの名無しさん:2006/12/23(土) 22:33:49
>>900
あなたの中の標準偏差で結構です
904デフォルトの名無しさん:2006/12/23(土) 22:43:40
>>897の定義で進めて、
実装を丸投げするにも
設計の段階で混入したバグは勝手に排除されないということを
学んでもらおうではないか?
905デフォルトの名無しさん:2006/12/23(土) 23:03:41
前スレの>>962のプログラムでmapを使わないでやる方法ってあるんでしょうか?
906デフォルトの名無しさん:2006/12/23(土) 23:09:01
>>897 を次のように解釈すればおk
ρ=√((1/NΣ(Xi^2))-(μ^2)) μは得点の平均

括弧をどういうふうにつけるかによるね
907デフォルトの名無しさん:2006/12/23(土) 23:11:39
>>905
そりゃあるんじゃない?
908デフォルトの名無しさん:2006/12/23(土) 23:14:58
>>905
質問するときは、どうして使わない方法があるかを知りたいのか理由も書き添えるといいと思うよ
普通にあると思うけど。
909886:2006/12/23(土) 23:35:40
標準偏差だけでこんなに難しいんですね
標準偏差を確実に定義しないとプログラミングは不可ですか?
910デフォルトの名無しさん:2006/12/23(土) 23:48:01
>>909
当たり前だろ。
何を作って欲しいのか分からずに出来てくるとでも?
911デフォルトの名無しさん:2006/12/24(日) 00:30:58
>>886
書きなおし途中で挫けたけど、このままでもおk。
標準偏差は世間一般で使われている定義のものを採用した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3262.c
912デフォルトの名無しさん:2006/12/24(日) 00:31:01
>>908さん、ありがとうございます
mapを講義で使ってなかったので
使ってはいけないようです
よろしければ、使わない方向でどなたか教えていただけませんか?
913デフォルトの名無しさん:2006/12/24(日) 00:38:03
>>910
そんなことないです
改めて実感したってコトです
914デフォルトの名無しさん:2006/12/24(日) 00:52:07
>>912
>>908ではないが。実は前スレの元のコード書いたの俺なんだわ。
map使わない版書いたぞ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3263.txt

性能はもとより大分悪いだろうけど、宿題だし、どうでもいいよなw
915デフォルトの名無しさん:2006/12/24(日) 01:22:29
>>911
どうもありがとう
 >>886
他にもあったらお願いします
916デフォルトの名無しさん:2006/12/24(日) 01:46:37
917デフォルトの名無しさん:2006/12/24(日) 04:01:07
>>914さん、ありがとうございます
918デフォルトの名無しさん:2006/12/24(日) 05:43:00
どなたかこの問題といてください、5時間かかっても解けない。おねがいします。
struct final{
int max;
int min;
int strat;
int end;
}
vector<fianal>final_data;
vector<double>time;
vector<int>data;
の時、今現在timeとdataに値が入っていてその配列数はおなじである。
timeを時間としてある特定の時間から特定の時間まで(0〜1000や500〜700など)を、
100おき、または300おきと特定の範囲で区切り
その特定の範囲で一番初めをstrat最後をend最大をmax最小をminとしてfinal_dataを完成するさせるには?
ただし100おきとした場合でもtimeは途中がない場合や初めがない場合もある
この場合max等はすべて0を入れること


919デフォルトの名無しさん:2006/12/24(日) 06:26:44
テンプレ
920918:2006/12/24(日) 06:47:46
【質問テンプレ】
[1] 職場での出題
[2] >>918の通り
[3] 環境
 [3.1] OS:Windows
 [3.2] VC2005
 [3.3] 言語:STL MFCいずれも可能
[4] 期限: 今年中
です。よろしくお願いします
今現在してるのは
vector<double>time;
vector<int>data;
を昇順で並び替えてあります。
921デフォルトの名無しさん:2006/12/24(日) 07:45:43
>>920
問題の概要が掴みきらない。
time.at(i) と data.at(i) は対応してるのか?
time は double だけど strat, end は int。 さて、どう格納する?いや、それ以前にstrat→startだろ。
min と max は、指定時間範囲における data の値?
「timeは途中がない場合や初めがない場合」後者はワカランでもないが、前者はワケワカラン。1個でもデータがあれば max = min = そのデータ じゃないの?
922918:2006/12/24(日) 08:39:30
>time.at(i) と data.at(i) は対応してるのか?
そうです
それなら初めから構造体にすればいいというのは、なしで。
この状態から少ない処理(早いスピード)でするのが目的なので
そしてfinalに入るのはすべてdataのほうです。
例として
time data
100 110
110 105
130   5
範囲時間10〜100で区切り10の場合
fianl[0]から[7]max等すべて0で [8]はすべて110
範囲時間110〜130で区切り10の場合
final[0]すべて105で [1]すべて0で [2]はすべて5となります

923デフォルトの名無しさん:2006/12/24(日) 09:59:29
>>922
それだと [min,max) じゃなくて [min,max] ってことになるけどいいの?
924923:2006/12/24(日) 10:52:24
s/min/start/g
s/max/end/g
だったorz
925デフォルトの名無しさん:2006/12/24(日) 11:08:33
閉じカッコの違いで別の意味があるのかとw
926デフォルトの名無しさん:2006/12/24(日) 11:12:54
開区間、閉区間でググってちょ
927デフォルトの名無しさん:2006/12/24(日) 11:15:31
>>925
数学的に細かい話は抜きにして
[...)だと以上〜未満の区間
[...]だと以上〜以下の区間
()は範囲に含まないけど[]は範囲に含む
928デフォルトの名無しさん:2006/12/24(日) 11:18:00
釣りじゃないのか…
中学校で習うレベルだと思ったが
929デフォルトの名無しさん:2006/12/24(日) 11:18:56
このまま、以上、以下、未満の区別が・・・
とか言い出しそうな勢いだな。
930デフォルトの名無しさん:2006/12/24(日) 11:31:20
プログラム組んでたら <= と < の違いに反応してしまうようになってしもた
931デフォルトの名無しさん:2006/12/24(日) 11:45:07
高校の数学でさんざんやったろうに・・・
932デフォルトの名無しさん:2006/12/24(日) 11:49:50
ゆとり世代はそんなのやらないんです><
933デフォルトの名無しさん:2006/12/24(日) 12:18:29
40年前の中学でも高校でもやらなかったなあ
934デフォルトの名無しさん:2006/12/24(日) 12:23:36
開区間、閉区間なんか大学で初めてやったぞ
935デフォルトの名無しさん:2006/12/24(日) 12:44:34
幼稚園の数学でさんざんやったろうに・・・
936デフォルトの名無しさん:2006/12/24(日) 12:46:33
もう覚えてねーよ
937デフォルトの名無しさん:2006/12/24(日) 12:48:15
おままごとかYO!>幼稚園
938お願いします:2006/12/24(日) 13:25:39
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
キーボードから入力されるすべての文字をカウントし、入力が終了したら、
以下の内容を表示してください。

- すべての文字の文字数
- 小文字のアルファベットの文字数
- 大文字のアルファベットの文字数
- 行数

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: 今日中
[5] その他の制限:
入力終了を示すEOFは先頭で入力する。このEOFのみの行は行数に含めません。
939デフォルトの名無しさん:2006/12/24(日) 13:48:52
>入力終了を示すEOFは先頭で入力する。
これの意味がわからない。
940お願いします:2006/12/24(日) 13:53:42
入力終了を示すEOFは先頭で入力する。は間違いでした。
すいません。
941デフォルトの名無しさん:2006/12/24(日) 14:12:23
>>938
#include<stdio.h>
int main(){
int c,i=0,j=0,k=0,l=0,n=0;
while(1){c=getchar();if(c=='\n'){if(n){
printf("すべての文字の文字数 %d\n",i);
printf("小文字のアルファベットの文字数 %d\n",j);
printf("大文字のアルファベットの文字数 %d\n",k);
printf("行数 %d\n",l);return 0;}
n=1;l++;}else{n=0;i++;
if('a'<=c&&c<='z')j++;
if('A'<=c&&c<='Z')k++;}}}
よくわかんなかったから、先頭で改行した場合入力終了にしてみた
942デフォルトの名無しさん:2006/12/24(日) 14:16:24
>>941
初期値はn=1に変更して 何も入力せず改行したとき変な動作に orz
943お願いします:2006/12/24(日) 14:24:30
941をconvert 関数ではできませんか??
944デフォルトの名無しさん:2006/12/24(日) 14:26:59
convert関数って何する関数?
945デフォルトの名無しさん:2006/12/24(日) 14:28:59
EOFに対応するようにや、スペースは文字じゃないだろーってことで除外するようにしたり
全角が入力された場合はどうすればいいんだとか悩んでる所なんだけど

convert 関数ってなに?
946861:2006/12/24(日) 14:42:37
誰か>>816の課題3お願いします
課題4は>>875さんが解いていただいたのを使わせていただきます

恐縮ですが流れてるみたいなのでもう一度お知らせしました
よろしくです
947デフォルトの名無しさん:2006/12/24(日) 14:46:54
そもそも宿題は自分でやるものだ
だれもやってくれなかったからといって文句言うな!
お前は最低だ!

で、816の3ってなに?
948デフォルトの名無しさん:2006/12/24(日) 14:54:16
>>886
もう回答はありませんか?
949デフォルトの名無しさん:2006/12/24(日) 14:59:31
なんで複数の回答が必要なんだろうか
950デフォルトの名無しさん:2006/12/24(日) 15:02:37
>>947
すいません>>861の間違いです
ずっとやってるのですが途中で値がおかしなことになってできません・・・


課題3はこちら
http://kjm.kir.jp/pc/index.php?p=27015.jpg

問題文一式はzipでこちらです
http://www.uploda.org/uporg626661.zip.html
受信パス:kadai
951デフォルトの名無しさん:2006/12/24(日) 15:18:08
>>950
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3271.txt

こういう事でしょうか。つまり、与えられたpと、計算で求めたa1とa2を
使って近似した場合の差を出力するという題意のように思えます。

誤差は±5e-5程度程度で、この誤差をhの関数としてプロットすると
いう意味だと思います。
952デフォルトの名無しさん:2006/12/24(日) 15:33:18
>>951
>こういう事でしょうか。つまり、与えられたpと、計算で求めたa1とa2を
>使って近似した場合の差を出力するという題意のように思えます。

題意もやっていただきたいこともその通りです


というか、きちんと読むと課題4の2)、3)以外はすべて
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3271.txt
で解決されてるみたいでしたね。すいません

プロットっていうのはLinuxでgnu(?)コマンドか何かでしたかね・・?
とりあえず後は自分でやってみます
お騒がせしましてすいません、ありがとうございました!
953デフォルトの名無しさん:2006/12/24(日) 15:39:03
>>952
>>951
/* 係数と実際のpとの差を調べる */
って所で、入力値とフィッティング値の差も出力していますので、これと
pとフィッティング値と差をプロットすれば(3)の課題は解けた事になるはず。
954デフォルトの名無しさん:2006/12/24(日) 15:50:08
回答たくさんあるといろいろ
学べるとか
955デフォルトの名無しさん:2006/12/24(日) 15:53:25
>>953
詳しく説明までしていただいてありがとうございます!
956デフォルトの名無しさん:2006/12/24(日) 15:54:44
>>955
この部分は以前にうpしたソースには無かったと思うよ。
さっき付け加えたんだから。
957721:2006/12/24(日) 21:06:03
>>721
提出が迫ってきました。
どうかよろしくおねがいします。
958デフォルトの名無しさん:2006/12/24(日) 21:27:08
クラス中がお手上げの中お前ができてたら・・・
959デフォルトの名無しさん:2006/12/24(日) 21:30:19
>>957
すまん。三日くらいやってみたが、どうにも縮退に対処しきれなかった。
960デフォルトの名無しさん:2006/12/24(日) 21:32:46
>>958
えっへん
どうだぼくってすごいだろ
けらいになるならうつさせてやってもいいよ
961721:2006/12/24(日) 22:02:34
>>959
いえ、ありがとうございました。
よければでいいのですが、未完のもアップしていただけないでしょうか?
今夜いっぱい頑張ってみたいので。
962デフォルトの名無しさん:2006/12/24(日) 22:51:50
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):整数型の配列 a[10] に,キーボードから10個のデータを入力し,その10個のデータの偶数と奇数の個数を調べるプログラムを作成し提出しなさい.
なお,10個のデータをすべて入力し終わってから,偶数と奇数の個数を調べること.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年12月28日21:00まで
[5] その他の制限:配列まで習いました。

未熟者ですがどうか救いの手を差し伸べてください。
963デフォルトの名無しさん:2006/12/24(日) 22:52:07
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3272.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:27日まで
964デフォルトの名無しさん:2006/12/24(日) 23:15:19
>>961
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3273.c

できてないこと:
 ・本当は insert したときにそれと隣接する木上の要素だけ見れば
  よいはずだが,同一点で複数個交わる場合の処理を書ききれなかったので
  全部調べた.これにより計算量は O( (n+l) log n ) である.ただし l は
  平面走査線に乗る線分の個数の上界.

 ・上の対処により交差イベントを処理する必要が無くなっており,
  交点を求めるルーチンは不要であるが,最初にどうせ交点が必要に
  なるだろうと思って書いた交差判定ルーチンを使いまわしているので
  「交差を符号付き面積で判定している」とはいえない.
965デフォルトの名無しさん:2006/12/24(日) 23:17:31
C/C++の宿題を片付けます 80代目
http://pc8.2ch.net/test/read.cgi/tech/1166969820/
966デフォルトの名無しさん:2006/12/24(日) 23:18:24
>>965
967デフォルトの名無しさん:2006/12/24(日) 23:20:03
>>962
#include <stdio.h>
int main() {
  int i, even, odd;
  int a[10];
  for (i = 0; i < 10; ++i) {
    scanf("%d", &a[i]);
  }
  even = odd = 0;
  for (i = 0; i < 10; ++i) {
    if (a[i] % 2 == 0) ++even;
    else               ++odd;
  }
  printf("even: %d, odd %d\n", even, odd);
  return 0;
}
968962:2006/12/25(月) 00:02:06
>>967
ありがとうございます。おかげで助かりました。
969デフォルトの名無しさん:2006/12/25(月) 03:20:49
>>963
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3274.c
tab使って書いたんだけど、各行の説明文がバラバラになっちゃったんで
必要なら自分で訂正しといて。2は面倒くさいんでやってないっす。
あと、srandを使うためのstdlib.hがないから追加しといたっす。
970デフォルトの名無しさん:2006/12/25(月) 03:52:15
>>969 訂正
>xを100で割った値をxに代入
割った余りを書き忘れてた
971721:2006/12/25(月) 07:05:36
>>964
お礼を言うのが遅くなってすみません。
ありがとうございました。
972デフォルトの名無しさん:2006/12/25(月) 10:08:18
>>922
問題を次のように読解したんだけど正しい?

time[i] のときの値を data[i] とする。

時間の範囲 [a,b] と時間区切り T を与えたとき、
各細区間 [ a + k T, a + (k+1) T ] において
最初に定義されている time[x], 最後に定義されている time[y],
その区間内の min data[z], max data[w] を計算せよ。
973デフォルトの名無しさん:2006/12/25(月) 10:24:27
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):
コマンド ライン引数に指定されたファイルすべてに対して、
改行文字以外の各行を、逆さまにして表示するプログラムを書いてください。
なお、対象のファイルには英数字などの半角文字のデータのみが入っている
ものとし、漢字などの全角文字は含まれていないものとします。

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C/)
[4] 期限: 今日中
[5] その他の制限:
このプログラムを a.out とすると実行結果としては、以下のようになります

% cat text
text1
text2
text3
% ./a.out text
1txet
2txet
3txet
974デフォルトの名無しさん:2006/12/25(月) 10:42:13
新言語シースラッシュ
975デフォルトの名無しさん:2006/12/25(月) 10:53:25
ew
976デフォルトの名無しさん:2006/12/25(月) 11:06:28
すいません。言語がCです。974

977デフォルトの名無しさん:2006/12/25(月) 11:51:41
>>916
ありがとうございます。
実行してみたのですが、include ファイルを開けません。'test.h': No such file or directory
と出ました。どこを修正したらよいでしょうか?何度もすみません。
978デフォルトの名無しさん:2006/12/25(月) 11:59:25
>>977
3268.txt を test.h として保存したか?
979デフォルトの名無しさん:2006/12/25(月) 12:47:49
>>969
ありがとうございます
stdlib.hは習ってないし問題文にもありませんでした
980デフォルトの名無しさん:2006/12/25(月) 13:02:20
>>979
習ってないから…ってお前は小中学生か
981デフォルトの名無しさん:2006/12/25(月) 13:11:59
>>980
でも問題文に無いものを追加するのはまずいんじゃないか?
982デフォルトの名無しさん:2006/12/25(月) 13:20:26
>>981
問題文が間違ってる場合はいいんじゃね?
983デフォルトの名無しさん:2006/12/25(月) 15:10:35
>>979
stdlib.hを入れなきゃsrand()入れてるとエラーメッセージが出るはずだが・・・
ちゃんとコンパイルできたん?
984デフォルトの名無しさん:2006/12/25(月) 15:16:03
>>979
ttp://www.geocities.jp/ky_webid/c/041.html
あとな、符号なしで宣言したものにscanfを使う場合
%u を使うらしいぞ。どこの誰が出した課題だね?
ずいぶんと知識の浅い講師がやっているとしか思えん・・・
985デフォルトの名無しさん:2006/12/25(月) 15:18:33
お願いします!
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 二つの複素数を読み込み、その和、差、積、商を計算して表示するプログラムを作れ。
               複素数には構造体を自分で定義して用いること。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語: C
986デフォルトの名無しさん:2006/12/25(月) 16:23:48
>973
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
int i, j;
char buf[1024];
FILE *fp;
for(i=1; i<argc; i++) {
fp=fopen(argv[1], "r");
while((fgets(buf, sizeof buf, fp))!=NULL) {
for(j=strlen(buf)-2; j>=0; j--) putchar(buf[j]);
putchar('\n');}
fclose(fp);}
return 0;}

987デフォルトの名無しさん:2006/12/25(月) 17:32:06
>>983
Cなら無くてもコンパイルできるはずだが。
988デフォルトの名無しさん:2006/12/25(月) 17:32:17
989デフォルトの名無しさん:2006/12/25(月) 18:30:41
>988
計算結果をポインタで渡してるのにtempって必要なの?
990デフォルトの名無しさん:2006/12/25(月) 18:41:06
要らんねぇ。ついでに言えば、引き算がDecになっている。
#subtractionかdifferなら判るが。
991デフォルトの名無しさん:2006/12/25(月) 18:48:07
>>988
そのまま提出して、もし教官ここチェックしてたらあぼーん
という高度な釣りですね
992デフォルトの名無しさん:2006/12/25(月) 19:29:59
どうして動かないのか見てもらいたいんだけど、それってここでいいのですか?
993デフォルトの名無しさん:2006/12/25(月) 19:32:28
問題文とエラー文、書きかけのコード含めてテンプレに沿ってあげたら
いいんじゃないか
994デフォルトの名無しさん:2006/12/25(月) 20:41:03
[1] 授業単元:基礎情報工学
[2] 問題文(含コード&リンク):
2数の差を求めて、それが1以下なら判定に用いた数字各々を並列出力する。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: 2003.net
 [3.3] 言語: C++
[4] 期限: 明日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

まずは足がかりとして自分でここまで書きました。
ところがいきなりつまずいてしまいました。将来的にはf(n)やg(i)といった変数関数を用いるのですが、とりあえず今は
自然数で考えてみようと思ったのです。
結果としては
1 1
2 2
3 3
...
10 10
となってほしいのですが、1 1でとまってしまいます。どうかよろしくお願い致します。

for(int n=1; n<=10; n++){
   for(int i=1; i<=10; i++){
      if (abs(n - i) < 1){
      break;}
      else{
      i = -1;}
   }
   cout << n <<" "<< i << endl;
}
995デフォルトの名無しさん:2006/12/25(月) 20:46:40
i = -1
996デフォルトの名無しさん:2006/12/25(月) 20:47:31
>>どこまで習っているか
知るかボケ
>>標準ライブラリは使ってはいけない
オマエが使ってるのは何なんかと
997デフォルトの名無しさん:2006/12/25(月) 20:48:35
>996
テンプレのコピペに切れるのは斬新だな
998デフォルトの名無しさん:2006/12/25(月) 21:04:35
for(int n=1; n<=10; n++){
for(int i=1; i<=10; i++){
if (abs(n - i) < 1){
cout << n <<" "<< a << endl;
}
}
}
999デフォルトの名無しさん:2006/12/25(月) 21:07:40
1000デフォルトの名無しさん:2006/12/25(月) 21:12:23
cなんて使ってらんないよ。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。