C/C++の宿題を片付けます 79代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/12/13(水) 02:11:49【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
0002デフォルトの名無しさん
2006/12/13(水) 02:12:540003デフォルトの名無しさん
2006/12/13(水) 02:26:160004ともやん
2006/12/13(水) 10:38:26いきなりなんですが、どうしてもできないプログラムがあります。
「ある打撃点から目標に向かって的狙を行い、命中させるゲームプログラム。
打撃点から目標到達点までの距離、障害もでの距離、高さ、風速を初期設定条
件とし、ゲームを行う者には目標点もでの距離と風速のみ知らされる。打撃点
からの玉の発射角、初速を設定すると、玉到達距離を計算し、目標との差を表示する。」
というものです。
よろしくおねがいします。
0005デフォルトの名無しさん
2006/12/13(水) 10:39:24お前は文字読めないのか?
0006ともやん
2006/12/13(水) 10:40:13読む気がないだけです
0007ともやん
2006/12/13(水) 10:41:56[3] 環境
[3.1] OS: Windows
[3.2] 言語: C++
[4] 期限: 2006年12月20日9:30まで
0008デフォルトの名無しさん
2006/12/13(水) 10:51:14打撃点と目標の高さは同じなのか?
障害にぶつかった場合に跳ね返ることも考慮するのか?
跳ね返るとしたら反発係数は?
0009デフォルトの名無しさん
2006/12/13(水) 10:53:37[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] その他の制限:
0010デフォルトの名無しさん
2006/12/13(水) 11:04:20int 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;}
00119
2006/12/13(水) 11:34:12//====================================================================
// 前処理
//====================================================================
//====================================================================
// 大域宣言
//====================================================================
//====================================================================
// メイン関数
//====================================================================
int main(void) {
//---- 宣言
//---- 入力
//---- 計算
//---- 出力
//---- 終了
return 0;
}
//====================================================================
// ユーザ関数
//====================================================================
こういう形式で出力できるようにプログラムを書いていただけませんか;;
0012デフォルトの名無しさん
2006/12/13(水) 11:38:16付け足し禁止。テンプレ嫁。
0013デフォルトの名無しさん
2006/12/13(水) 11:40:27#includeや配列の宣言、最後のprintfくらい自分で書いてくれー
そしたら追加してやるから
0014デフォルトの名無しさん
2006/12/13(水) 11:44:02それは少なくとも「C言語」ではない何かだなぁ。
//コメントはC++のものだ。
まぁbccでは通してくれるのかもしれないが。
Cといいつつそんな下らないフォーマットの指定と
誤ったコメントのつけ方を指定する教官はアフォだな。
0015デフォルトの名無しさん
2006/12/13(水) 11:49:54[2] 問題文:以下の通り関数を作成せよ。
文字列を格納した配列をポインタ引数で受け取りデコードする。
文字列中に%があれば、その後ろ二文字(数字です)を2桁の16進数とみなし、コードに変換する。
変換して出来た文字列は元の配列に上書きするものとする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4
[3.3] 言語: どちらでも可
[4] 期限: 16日
宜しくお願いします
001614
2006/12/13(水) 11:50:53普段C99なんか使ってないから凝り固まってたyo。
カナブンよりもごめんなさい。
0017デフォルトの名無しさん
2006/12/13(水) 11:56:50[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] その他の制限: 特になし
よろしくお願いします
0018デフォルトの名無しさん
2006/12/13(水) 11:58:47[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
0019デフォルトの名無しさん
2006/12/13(水) 12:03:58どちらが反時計回り方向にあるか比較したいのです。
単純にラジアンの大きさで比較すりゃいいじゃんと言われても
角度0を挟んだ場合、比較がおかしくなってしまいます。
C++だとどう書いたらいいでしょうか?
0020デフォルトの名無しさん
2006/12/13(水) 12:04:49#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;
}
0021デフォルトの名無しさん
2006/12/13(水) 12:39:41>>1
ついでにもっとわかりやすく
0022デフォルトの名無しさん
2006/12/13(水) 12:49:31[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] 期限:特になし
よろしくおねがいします。
0023デフォルトの名無しさん
2006/12/13(水) 12:58:48mは何個くらい?
0024デフォルトの名無しさん
2006/12/13(水) 13:02:50mが何個でも対応できるようにしたいのです。
もちろん、個数が多ければ計算時間が膨大になるので算出限界の個数(予想では20個ぐらい?)はあるのでしょうが。
0025デフォルトの名無しさん
2006/12/13(水) 13:08:49じゃあ総当りでの算出限界(=待てる限界?)の個数以下で考えればいいの?
002619
2006/12/13(水) 13:09:32[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] その他の制限: 特になし
0027デフォルトの名無しさん
2006/12/13(水) 13:20:11nってのは予め指定されるの?
任意?
0028デフォルトの名無しさん
2006/12/13(水) 13:25:34数字集合には負の値は含まれるのか?
0029デフォルトの名無しさん
2006/12/13(水) 13:28:360 〜 m って書いてあるし正数でしょ
0030前988
2006/12/13(水) 13:29:060031デフォルトの名無しさん
2006/12/13(水) 13:33:520〜m と書いてあるのは組み合わせの個数であって数字集合の範囲ではない
0032デフォルトの名無しさん
2006/12/13(水) 13:34:43[2] 問題文:
次の値をバイトオーダ(BigEndian<->Little Endian)に変換するプログラムを
示しなさい。
short value = 0x1234;
int value = 0x12345678;
[3] 環境
[3.1] OS: (Windows)
[3.2] bcc
[3.3] C言語
[4] 期限: 無期限
[5] その他の制限:
宜しくお願い致します。
0034デフォルトの名無しさん
2006/12/13(水) 13:40:19#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;
}
003522
2006/12/13(水) 13:45:03最適アルゴリズムなら総当りアルゴリズムより計算時間が短縮されると思うので、
mの限界値も大きく取れてより良いのですが、不可能でしたら総当りでも構いません。
>>27
nは任意です。
詳しく言うと、最小合計値の組み合わせに使われた数字の個数がnです。
0036デフォルトの名無しさん
2006/12/13(水) 13:48:10数字集合に実数は許される?
0037デフォルトの名無しさん
2006/12/13(水) 13:49:51例では n は入力されてないようだが、0 〜 m すべてを走ると思ってよいのか?
0038デフォルトの名無しさん
2006/12/13(水) 14:01:39例の通り、入力するのは実数です。
>>37
nが0 〜 m のどれになるかは分かりません。
例は7+12の組み合わせが解になり、nは2でしたが、
もし、5+7+10等の組み合わせが解になればnは3になります。
もし、0 〜 m すべてを走って比較した結果、求めるというのでしたらその認識であっています。
0039デフォルトの名無しさん
2006/12/13(水) 14:02:31酷いソースだけど書けた
#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;
}
0040デフォルトの名無しさん
2006/12/13(水) 14:05:23いや、例は整数で、整数制約があるかどうかは大きく効いてくるんだが
0042デフォルトの名無しさん
2006/12/13(水) 14:21:38#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);
}
}
0043デフォルトの名無しさん
2006/12/13(水) 14:22:30[2] 問題文: 行単位で、3個以下の単語を入力する。単語の順序を逆にして出力する。
4個以上の入力には、無効メッセージを出す。単語の区切りは、空白である。
空行の入力で処理を終了する。
[3] 環境
[3.1] OS: (Windows)
[3.2] bcc 32
[3.3] C言語
[4] 期限: 無期限
[5] その他の制限:入力処理は、関数 gets() と sscanf() で行い、入力数を調べる。
各単語を格納する変数を逆順に出力する。
0044デフォルトの名無しさん
2006/12/13(水) 14:24:50004542
2006/12/13(水) 14:25:10>>39 は O(2^m)、これは O(m S) (S は入力の合計) なので
どちらがよいかは m のサイズと S のサイズによる。
0046デフォルトの名無しさん
2006/12/13(水) 14:30:32ならん。n はそもそも入力させないし、
m が入力になったところで十分大きなサイズの配列を
用意するだけでしょ。
0049デフォルトの名無しさん
2006/12/13(水) 14:59:37#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;
こんな感じでやってみました。
0050デフォルトの名無しさん
2006/12/13(水) 15:11:46関係ないが14:44:44
005145
2006/12/13(水) 15:24:49すまん、同じ値を何度も使うバグがあった。
訂正したものをアップロードした。
一応、その入力に対して1秒未満で解を出す。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3177.c
0052デフォルトの名無しさん
2006/12/13(水) 15:29:09http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3178.c
0053デフォルトの名無しさん
2006/12/13(水) 15:38:46うわ、凄いです。
mが100個超えても即座に出ますね。
総当りアルゴリズムでないんですね。
このアルゴリズムをソースから勉強します。
0054デフォルトの名無しさん
2006/12/13(水) 15:41:52適当なんで、微調整必要ならして下さい.
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3179.c
005532
2006/12/13(水) 16:12:24解答ありがとうございます!!
0056デフォルトの名無しさん
2006/12/13(水) 16:17:14p0, 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;
}
0057デフォルトの名無しさん
2006/12/13(水) 16:17:18[2] 問題文:
以下の構造を定義しなさい。
従業員のデータを管理するための構造。
・氏名(最大8文字)、年齢、生年月日、性別('M':男性、'F':女性)
・入社日、社員番号(最大5桁)、所属事業部コード(最大5桁)、
所属事業部名称(最大20文字)
※typedefを使用して定義すること。
※アラインメントは、8バイトバウンダリとすること。
[3] 環境
[3.1] OS: (Windows)
[3.2] bcc
[3.3] C言語
[4] 期限: 無期限
[5] その他の制限:
宜しくお願い致します。
0058デフォルトの名無しさん
2006/12/13(水) 16:18:17あ・・・座標じゃなく角度だったか。失敬
0059デフォルトの名無しさん
2006/12/13(水) 16:28:19一日にいくつ質問するつもりだよw
0060デフォルトの名無しさん
2006/12/13(水) 16:33:50お礼ぐらいほしいもんだぜ
0061デフォルトの名無しさん
2006/12/13(水) 16:34:12>>43
>>57
そろそろ死ね
0063デフォルトの名無しさん
2006/12/13(水) 16:54:04文字列分割のところのifで判定してる。
0064デフォルトの名無しさん
2006/12/13(水) 16:57:59ありがとうございます。
座標を基に角度を算出していましたので、これでも全然OKです。
気になってCCWで検索かけたら、意味が判りました。
本当にありがとう御座いました。
0066デフォルトの名無しさん
2006/12/13(水) 17:39:470067デフォルトの名無しさん
2006/12/13(水) 19:08:45for(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呼んでみたらエラーがでました。
0068デフォルトの名無しさん
2006/12/13(水) 19:09:53ついでに上げるのも忘れました
0069デフォルトの名無しさん
2006/12/13(水) 19:13:160070デフォルトの名無しさん
2006/12/13(水) 19:19:44psiの宣言はどうなってるの?
というか全部見せて
0071デフォルトの名無しさん
2006/12/13(水) 19:20:24何がしたい関数なのかさっぱりわからんが、returnが足りないのとnに値が入ってない。
0072デフォルトの名無しさん
2006/12/13(水) 19:23:28ありがとうございます♪
007367
2006/12/13(水) 19:41:01関数を作りたいのです。(はじき出したい場所は最初に書いたループ内)
まず、0から(N-1)までの偏りのない乱数をだします(xがそれ)。その値
をpsi[n]に代入して、psi[N/2]で割ります。これはpsi[n]がN/2で最大値だと
過程してるからです。で、その分数は割合を示します。これを別に用意した
0から1までの乱数と比べて、その乱数が今言った割合より少ないときだけ、
xを・・・あれ???ごめん、間違った。nじゃ無くてxを返します。
0074デフォルトの名無しさん
2006/12/13(水) 19:51:49すまんが意味がよくわからん。
具体的な動作で説明してくれ。
0075デフォルトの名無しさん
2006/12/13(水) 19:54:19psiってのは double の配列ってことでいいのか?
0076デフォルトの名無しさん
2006/12/13(水) 19:55:36どこで?
0077デフォルトの名無しさん
2006/12/13(水) 20:03:17まず
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 による除算でエラーになる
007867
2006/12/13(水) 20:08:33真ん中が最高値となってます。(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が
これ以上の値を出したら却下したいのですわ。
0079デフォルトの名無しさん
2006/12/13(水) 20:15:241. 以下のような要素数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]の整数値)
こんなアルゴリズムでどう?
0080デフォルトの名無しさん
2006/12/13(水) 20:18:40008167
2006/12/13(水) 20:21:32その通りで。宣言は 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);
}
0082デフォルトの名無しさん
2006/12/13(水) 20:29:21>関数の最初に
func(...)
{
…�@
if(rnd2>psi[x]/psi[N/2]){
n=calc_n(psi); ←ここで代入される n はどこで使われる?
�@に戻る
}
else{
return x;
}
ということか?
}
とはいえ確率によって無限ループになる可能性もあるわけだが
008367
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を計算し続ける、という事です。
0084デフォルトの名無しさん
2006/12/13(水) 20:43:28っていうかその結果を破棄するのに再帰にする意味がわからん。
0085デフォルトの名無しさん
2006/12/13(水) 20:48:13http://x25.peps.jp/azurenamoon
0086デフォルトの名無しさん
2006/12/13(水) 20:50:41再帰じゃなくてこれでいいだろ
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;
}
0087デフォルトの名無しさん
2006/12/13(水) 20:50:54結構適当だけど、こんなのどう?
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;
}
}
0088デフォルトの名無しさん
2006/12/13(水) 20:55:57int 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;
}
}
こうか?
結論から言えばやはり 確率的に無限ループするコードはよろしくない
0089デフォルトの名無しさん
2006/12/13(水) 20:57:52ソフトの作り方をおしえて。
0090デフォルトの名無しさん
2006/12/13(水) 21:02:50Cの実行ファイルがあるところ
どうやって判断するんだ?
まぁ俺はカレントに cd 特定のパス ってbatファイル作ってある
0091デフォルトの名無しさん
2006/12/13(水) 21:03:53explorerのフォルダをプロンプトにD&D
0092デフォルトの名無しさん
2006/12/13(水) 22:08:20間違いをしていました。
「ソートにはバブルソートを用い」と書きましたが
「ソートには選択ソートを用い」でした。
前スレの796さんが下さった解答の
ソートの関数の部分だけ訂正すれば良いと思うのですが
解りません。
0093デフォルトの名無しさん
2006/12/13(水) 22:20:51場所は分かってるんですが、毎回c:\windowsとなるので煩わしいです。
batファイルってcd 特定のパスを書いてどうすればいいのでしょうか?
>>91
本当に大丈夫ですか?ネタっぽいんですが。
0094デフォルトの名無しさん
2006/12/13(水) 22:22:46俺は>>91じゃないけど、あえて言わせてもらう。
なんでその程度のことすぐに試してみないんだ?
0095デフォルトの名無しさん
2006/12/13(水) 22:30:00あ、説明悪かった
現在のドライブと行き先が同じドライブの場合
cd と打ってからD&D
ドライブが違う場合
ドライブ名: と打ってからEnter
それからcd + D&D
まぁ面倒だな
0096デフォルトの名無しさん
2006/12/13(水) 22:30:10[2] 問題文:50個の整数データを読み込み、それらを小さい順に出力する
cプログラムを作成せよ。バブル整列法は使ってはいけない。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 2006年12月23日12:00まで
よろしくお願いします
マジで分からないです
0097デフォルトの名無しさん
2006/12/13(水) 22:32:20データはどっから読み込むの?
0098デフォルトの名無しさん
2006/12/13(水) 22:33:47コマンド入力してないのが怖いです。ファイルが壊れたりしないですか?
0099デフォルトの名無しさん
2006/12/13(水) 22:45:43http://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
何個か書いていただいたのですが
コンパイルはできるものの題意を満たすように
実行できません 間違いとか分からないんで
教えてください
同じやつか?問題をもっと詳しく書かないと話がループするぞ。
0100デフォルトの名無しさん
2006/12/13(水) 22:48:25読み込むデータの形式は?どのように記述された数値?
出力するのはプログラム実行中の画面?それとも並び替えたファイルを
最初読み込んだファイルと同じような形式でファイルに保存?
そこをはっきりしないと、誰もあんたが求めるものを書いてくれないよ。
すでにある手法の中からあんたが適切に選べば良いことなんだが。
0101デフォルトの名無しさん
2006/12/13(水) 22:49:020102デフォルトの名無しさん
2006/12/13(水) 22:51:29>DOSプロンプト
コマンドプロンプトのことだよな?
ショートカットのプロパティ開いて作業フォルダに 「場所」 を入れてやればいい
0103デフォルトの名無しさん
2006/12/13(水) 22:53:03OKです!立ち上げ直すたびに憂鬱だったんですが払拭されました。
0104デフォルトの名無しさん
2006/12/13(水) 22:57:40確認したら分かりました。確かに設定ありますね。
こっちの方が良さそうなんでこっちを採用させて頂きます。
またクソ質問しますのでよろしく!!
0105デフォルトの名無しさん
2006/12/13(水) 23:04:55もう来るな
0106デフォルトの名無しさん
2006/12/13(水) 23:05:27初心者質問スレでやれ
0107デフォルトの名無しさん
2006/12/13(水) 23:27:56[2] 文字配列を使い100桁以上同士の数値にも対応させた
除算と乗算を行うプログラムを書け。
[3] 環境
[3.1] Fedora Linux
[3.2] gcc4.0
[3.3] C
[4] 2006/12/15まで
0108デフォルトの名無しさん
2006/12/13(水) 23:32:46[2] 問題文(含コード&リンク):最大カット問題を解くプログラムを作成せよ。
以下の図のグラフに対する最大カット問題の解を表示せよ。
最大カット数と、そのときのカット方法を表示するプログラムを表示するプログラムを作成せよ。
http://up.spawn.jp/file/up58326.jpg
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C
[4] 期限: 年内
[5] その他の制限:標準ライブラリはなしで
0109デフォルトの名無しさん
2006/12/13(水) 23:49:59データ形式を教えてくれ
勝手に作ったんでいいのか?
011092
2006/12/13(水) 23:55:42整数に関してじゃないためか、コンパイルが通らなかったり、
ちゃんと動作しなかったりして完成できません。
提出期限が明日の朝11時00分までなので
解答お願いできないでしょうか?
0111デフォルトの名無しさん
2006/12/14(木) 00:07:21void 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 );
}
}
まったく動かしてないから保証は無しで
0112デフォルトの名無しさん
2006/12/14(木) 00:24:44おまかせします
0113デフォルトの名無しさん
2006/12/14(木) 00:56:19[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についての基本的なことは全て学びました、標準ライブラリはなしで。
どうかよろしくお願いします。
0114デフォルトの名無しさん
2006/12/14(木) 00:57:28標準ライブラリなしとは高度な宿題ですね
0115デフォルトの名無しさん
2006/12/14(木) 01:07:57scanfとかprintfもなしってことだよね?
0116デフォルトの名無しさん
2006/12/14(木) 01:20:26printfとかscanfと同じ動作をする関数を、自分で作れるんですか?
アセンブラとかで書く、特殊な関数だと思ってました。
0117113
2006/12/14(木) 01:22:36標準ライブラリはもちろんありでお願いします。
0118デフォルトの名無しさん
2006/12/14(木) 01:25:390119デフォルトの名無しさん
2006/12/14(木) 01:41:150120デフォルトの名無しさん
2006/12/14(木) 01:44:15課題自体より質問文のほうが難解
0121デフォルトの名無しさん
2006/12/14(木) 01:58:560122デフォルトの名無しさん
2006/12/14(木) 02:24:53[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が識別子は、因数依存照合を使用しても見つかりません。と表示されます。
0123デフォルトの名無しさん
2006/12/14(木) 02:31:12くだんねえ質問投げる前にヘッダ確認しろよカスこのカス
エラーでてる関数使おうと思えばどんなヘッダがいるんだよカスカスカス
0124デフォルトの名無しさん
2006/12/14(木) 02:42:36まぁ無知を攻めるのもなんだから...
abs, strcpy 等のヘルプページを見れば必須 include ファイルと必須 lib ファイルが解るはず。
エラーが出てる関数に必須ライブラリは無いみたいだけどね。
大雑把に言って mem??? は <stdlib.h> を str??? は <string.h> を必要とする。
0125デフォルトの名無しさん
2006/12/14(木) 09:31:500126デフォルトの名無しさん
2006/12/14(木) 09:57:50[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] その他の制限: 特になし
0127デフォルトの名無しさん
2006/12/14(木) 10:03:04[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] その他の制限: ポインタ演習での問題。
>なるべく正方形に近いような形で、横の方が縦よりも長いものを推定結果としている
日本語でおk
012992
2006/12/14(木) 10:26:05でも実行したらセグメントエラーとなるのですが…
コンパイルは通りました。
0130129
2006/12/14(木) 10:35:55ただのタイプミスでした。
色々と本当にありがとうございました。
0131デフォルトの名無しさん
2006/12/14(木) 10:54:42結果があってるかは知らん。計算量は O(V^2 2^V)。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3184.c
0132デフォルトの名無しさん
2006/12/14(木) 10:56:57正方形になる場合には正方形に。
ならない場合は正方形にできるだけ近づける。ただし、w>hになるように。
とのことでは?
0134デフォルトの名無しさん
2006/12/14(木) 11:01:36問題1
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3185.c
0135デフォルトの名無しさん
2006/12/14(木) 11:16:19見れない
0136デフォルトの名無しさん
2006/12/14(木) 12:03:16int 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;
}
0137136
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
--------------------------
0138デフォルトの名無しさん
2006/12/14(木) 12:10:300139デフォルトの名無しさん
2006/12/14(木) 12:14:17int guess(int n,int*w,int *h){int i;for(i=sqrt(n);n%i;i++);*w=i;*h=n/i;}
0140デフォルトの名無しさん
2006/12/14(木) 12:19:00mainの中のguessに引数でgwとghのアドレスを渡さないと
0141デフォルトの名無しさん
2006/12/14(木) 12:20:12問題のレベル高ぇ...本当に宿題なの?
なんか業務の匂いがするんだけど。
0142デフォルトの名無しさん
2006/12/14(木) 12:26:28書けないが
0143デフォルトの名無しさん
2006/12/14(木) 12:45:43未完成プログラムに載っていないmath.hは使わないようにお願いします。
0144デフォルトの名無しさん
2006/12/14(木) 12:49:54効率は良くないかも
#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;
}
0145144
2006/12/14(木) 12:52:26書き直す
0146デフォルトの名無しさん
2006/12/14(木) 12:55:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3189.cpp
O(n log n)。
妙に複雑だけど、一応動いてるっぽい。
0147144
2006/12/14(木) 12:57:57#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;
}
0148デフォルトの名無しさん
2006/12/14(木) 13:05:52反例。(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
0149デフォルトの名無しさん
2006/12/14(木) 13:09:38指摘thx
途中の最大値最小値保存してなかった
ミスばっかりだ
0150デフォルトの名無しさん
2006/12/14(木) 13:10:380151150
2006/12/14(木) 13:11:330152デフォルトの名無しさん
2006/12/14(木) 13:31:48#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;
}
0153デフォルトの名無しさん
2006/12/14(木) 13:45:09問題2
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3191.c
0154デフォルトの名無しさん
2006/12/14(木) 14:52:05int 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;
}
0155デフォルトの名無しさん
2006/12/14(木) 15:43:30そのプログラムで毎回最大値最小値をとっているところをヒープまたは二分木で
管理してやれば 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;
}
0156デフォルトの名無しさん
2006/12/14(木) 16:01:320157デフォルトの名無しさん
2006/12/14(木) 16:11:27無理に解かなくても良いんだぜ
0158デフォルトの名無しさん
2006/12/14(木) 16:27:41凄いな。
見通しを持って理解してる人間の手にかかればここまで簡潔になるのか。
0159デフォルトの名無しさん
2006/12/14(木) 16:50:53[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);
}
0160デフォルトの名無しさん
2006/12/14(木) 16:55:23toupperとtolowerの使い方が間違ってる
0161159
2006/12/14(木) 16:58:09a = toupper(a);でしたか。ありがとうございました。
0162159
2006/12/14(木) 17:09:07値を投げっぱなしの159の状態でもコンパイラって通ってしまうんですねorz
0163デフォルトの名無しさん
2006/12/14(木) 17:35:55いや…ここの宿題を演習問題代わりにしてたんだけど、最近のはエロイ人が答え見ても
0164デフォルトの名無しさん
2006/12/14(木) 17:37:11いや、そうなんだけどね。
俺、ここの宿題を演習問題代わりにしてたんだけど、最近のはエロイ人が出した答え見ても、数時間頭抱えてるような状態なんだよね。
センス無いみたい。
0165デフォルトの名無しさん
2006/12/14(木) 17:37:25関数の返値を何かに代入とかしないといけないわけじゃないからね。
例えばprintfとかの返値は普段使ってないでしょ?
0166デフォルトの名無しさん
2006/12/14(木) 17:38:06激しく吊ってくる…
0167デフォルトの名無しさん
2006/12/14(木) 17:47:49シンプルで綺麗なソースですね
setの使い方なども参考になります
0168デフォルトの名無しさん
2006/12/14(木) 18:28:54繰り返していればいずれ慣れるさ。
0169デフォルトの名無しさん
2006/12/14(木) 18:34:43[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] その他の制限: 特になし
0170デフォルトの名無しさん
2006/12/14(木) 18:51:31昔みたな
0171デフォルトの名無しさん
2006/12/14(木) 18:55:35読み込む実数値は自分で入力します
結果はプログラム実行中の画面に出力って意味です
言葉が足りなくてすみません
0172デフォルトの名無しさん
2006/12/14(木) 18:58:00頑張れ
0173デフォルトの名無しさん
2006/12/14(木) 19:00:15整数なのか実数なのか
0174デフォルトの名無しさん
2006/12/14(木) 19:11:27#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;
}
0175デフォルトの名無しさん
2006/12/14(木) 19:15:38何回もすみません。。
整数です 正負は問いません
あと、50個自分で入力って自分もびっくりしてます
0176デフォルトの名無しさん
2006/12/14(木) 19:25:555のところは50に変えてね
0177デフォルトの名無しさん
2006/12/14(木) 19:27:41qsort に渡す関数って 負数 ゼロ 正数 の三種を返すべきでは?
0178デフォルトの名無しさん
2006/12/14(木) 19:34:11そうみたいだね。普段使わないから知らなかった。
ぶっちゃけネタ回答だし…qsortは反則でしょ
0179デフォルトの名無しさん
2006/12/14(木) 19:35:54禁止されているのはバブル整列法だけだから良いんじゃね?
0180デフォルトの名無しさん
2006/12/14(木) 19:42:37講師も人間であることを
考慮すると、qsortはは
なはだ疑問である。
0181デフォルトの名無しさん
2006/12/14(木) 19:55:54#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;}
宿題の解答ならこんな感じか
0182デフォルトの名無しさん
2006/12/14(木) 21:02:34いろいろありがとうございます
明日やってみます
ちなみにq_sortってのは私はじめて見るんで
それ使わなくてもできるやり方はあるみたいです
暇でしたら参考に書いてください
0183デフォルトの名無しさん
2006/12/14(木) 21:11:35>>181がそうなんだがね。自分で書いてる。
0184デフォルトの名無しさん
2006/12/14(木) 21:22:31malloc or newで確保した3次元配列を指すポインタ
***prt
を関数の引数に取るにはどうすればよいのでしょうか。
単に
func(***ptr)では駄目らしいですが。
0185デフォルトの名無しさん
2006/12/14(木) 21:34:260186デフォルトの名無しさん
2006/12/14(木) 21:36:36二次元配列のポインタ *ptr
三次元配列のポインタ *ptr
0187デフォルトの名無しさん
2006/12/14(木) 22:46:46普通にいけると思うけど
どうしても無理なら>>186でおk
0188デフォルトの名無しさん
2006/12/14(木) 23:07:10質問が不明瞭だけど func( ***ptr ) って受け側?呼び側?
受け側なら func( 型*** ptr ) でOK。
呼び側なら func( ptr )
0189デフォルトの名無しさん
2006/12/14(木) 23:42:09C++で回答してる人がいるけど std 良く知らないので同じロジックだったら恥ずかしいけど。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3193.txt
main() が2つあるけど、前の奴は 0〜100で乱数を1000個作って結果をcsv出力してる奴で、
後者が >>148 のデータを使用したもの。
0190デフォルトの名無しさん
2006/12/15(金) 00:05:29[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] その他の制限: 特になし。
どうかお願いします
0191c_cpp_cs ◆ew.HP.dat.
2006/12/15(金) 00:06:03http://www.geocities.jp/c_cpp_cs/
0192デフォルトの名無しさん
2006/12/15(金) 00:16:55#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!!");
}
0193192
2006/12/15(金) 00:18:53[2] 問題文(含コード&リンク):上記のfor文で数を読み取る部分をscanfの型に直す。
今のままだと、getcharで取り込んだ数が不具合を起こして、入力した数が正常に表示されません。
このプログラムでは一回試行する毎にランダムの数が書き変わってしまいます。
数を言い当ててComplete!が表示されるまで、設定された数が書き変わらないようにしてください。
四つの数は全て異なっていなければなりません。
[3] 環境
[3.1] OS: Linux
[3.2] gcc -o
[3.3] 言語: C
[4] 期限: 2006.12.16
よろしくお願いします。
0194デフォルトの名無しさん
2006/12/15(金) 00:19:50>2回目に通るマス目をできるだけ少なくし
と2回目に限定してるけど、
2回通るマス目が2つあるのと、4回通るマス目が1つあるのでは、
どちらを優先すればよいのだろう?
マス目の数にこだわれば後者だし、無駄な回数にこだわれば前者だよね
0195デフォルトの名無しさん
2006/12/15(金) 00:23:40すいません。通れるのは最大2回までとなってます。
0196デフォルトの名無しさん
2006/12/15(金) 00:34:572回じゃ全マス通れない場合は?
□□□##
##□##
□□□□□
##□##
##□##
0197デフォルトの名無しさん
2006/12/15(金) 00:43:49「解なし」で大丈夫だと思います!
0198デフォルトの名無しさん
2006/12/15(金) 00:48:34[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] その他の制限:なし
よろしくお願いいたします。
0199デフォルトの名無しさん
2006/12/15(金) 00:51:04眠いので明日以降気が向いたらやるわ
0200122
2006/12/15(金) 00:51:19stdlib.hとstring.h加えたけどエラー数が悪化したorz
もうだめかもしれない・・・
0201デフォルトの名無しさん
2006/12/15(金) 00:57:17>[構成プロパティ]-[全般]-[文字セット]を 「マルチバイト文字セットを使用する」
この辺はやってる?
0202デフォルトの名無しさん
2006/12/15(金) 01:10:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3194.txt
割り算ちょっとひよった
0203デフォルトの名無しさん
2006/12/15(金) 01:14:18入力列がランダムのとき,O(n) で動くアルゴリズムだね.
これまでに同じアルゴリズムは出ていないけれど,
152,155 で最小値・最大値を更新するタイミングを最小値・最大値が
抜けたときだけにするものと本質的に同じものになる
(これが O(n) になるのは適度な演習問題).
しかし,最悪計算量の意味ではやはり O(n^2) であって,
例えば単調増加する n = 100000 くらいの列を食わせると終わらない.
155 とどちらがよいかは,状況によるところだと思う。
0204デフォルトの名無しさん
2006/12/15(金) 02:31:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3197.zip
0205デフォルトの名無しさん
2006/12/15(金) 02:45:19ミスった
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3198.zip
0206189
2006/12/15(金) 02:55:000(n) にまで減らないとは思うけどパッと考えたのはアレくらい。
単調増加/減少の場合、調査起点のスキップができないからなぁ。
うーん無理。
0207184
2006/12/15(金) 04:01:472次元配列の例で説明しますと,例えば
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]に正しくアクセスできるかどうか知りたいのです。
0208デフォルトの名無しさん
2006/12/15(金) 04:26:40なぜここでそんな話をしてるんだ
ここが宿題を片付けるスレだと分かってないのか?
0209デフォルトの名無しさん
2006/12/15(金) 04:56:25>と,あらかじめMを決めておかなければいけませんよね。
はい。
>と書いておけば,各要素[i][j]に正しくアクセスできるかどうか知りたいのです。
実験すればいいじゃない。
ということで
つ ttp://pc8.2ch.net/test/read.cgi/tech/1164376287/
0210デフォルトの名無しさん
2006/12/15(金) 07:34:03入力がランダムな場合,平均又はならし計算量の意味で O(n) になってるよ.
略証:nextP がどこまでいくかを評価する.入力はランダムと仮定する.
func で伸ばした区間の長さを m としたとき,nextP が区間の左から k 番目
である確率は 1/m.よって nextP の期待値は Σk/m 〜 O(m).
したがって毎回 func で伸ばした長さ分程度消費するので全体で O(n).
0211sage
2006/12/15(金) 07:40:04[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] その他の制限: とくになし
よろしくお願いします・・・!
0212デフォルトの名無しさん
2006/12/15(金) 07:42:420213デフォルトの名無しさん
2006/12/15(金) 07:53:210214デフォルトの名無しさん
2006/12/15(金) 08:03:43数学の得点と物理の得点です
0215デフォルトの名無しさん
2006/12/15(金) 09:28:45ありがとうございます。
0216デフォルトの名無しさん
2006/12/15(金) 10:05:5010時過ぎたけど
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;
}
0217デフォルトの名無しさん
2006/12/15(金) 10:39:10まにあいそうです!
超感謝です。ありがとうございました
0218デフォルトの名無しさん
2006/12/15(金) 11:01:38[2] 問題文(含コード&リンク)
1)直線回帰の式を導出せよ。
2)決定係数の式を導出せよ。
3)1)の式を用いて「汎用性の高い直線回帰を行うプログラム」を開発せよ。
4)3)で開発したプログラムに2)の決定係数を算出する式を加えよ。
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語:C
[4] 期限: 2006.12.18
[5] その他の制限: とくになし
お手数かもしれませんが、よろしくお願いします・・・!
0219デフォルトの名無しさん
2006/12/15(金) 11:08:100220デフォルトの名無しさん
2006/12/15(金) 13:07:48[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] その他の制限: とくになし
0221デフォルトの名無しさん
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;
}
0222デフォルトの名無しさん
2006/12/15(金) 13:18:10スライドは?
0223デフォルトの名無しさん
2006/12/15(金) 13:23:55常に同じ乱数が出力されるのを変更したいって事?
それとも rand() 以外の擬似乱数を実装しろって事?
0224デフォルトの名無しさん
2006/12/15(金) 13:24:31rand() % 10 とかで 0 〜 9 の乱数を生じると結構偏りが多いらしいから同じ理由かな。
150 + rand() % 51
の所を
150 + (int)( (double)rand() / (double)RAND_MAX * 51.0 )
に変えて試してみて。
0225デフォルトの名無しさん
2006/12/15(金) 13:35:36それだと201までにならない?
0226デフォルトの名無しさん
2006/12/15(金) 13:51:58けど、* 50.0 にしちゃうと 200 の出現確立が極端に低くなるよね。
つまり
150 + (int)( (double)rand() / (double)( RAND_MAX + 1 ) * 51.0 )
が正解か。
0227220
2006/12/15(金) 14:00:38プログラムは前スレで作ってもらったものです
150-200の数値を乱数で完全ランダムで10個出力するみたいです。
0228220
2006/12/15(金) 14:28:13ttp://www.borujoa.org/upload.php
の9381にアップしました。
PPTです
0229デフォルトの名無しさん
2006/12/15(金) 14:57:21FF4も確か0〜255までを返す乱数に対して%100して
パーセンテージを計算するというとんでもないことをやっていた
0230デフォルトの名無しさん
2006/12/15(金) 15:04:12????????????????
0231デフォルトの名無しさん
2006/12/15(金) 15:33:28余算式 % の事だと思われ
0232デフォルトの名無しさん
2006/12/15(金) 15:42:05スライド見たよ。>>226 で良かったみたいだね。
ちゅかあのスライド見れば解るだろうに...
重要なのは rand() がバラつきを保障するのは 0 〜 RAND_MAX での位置で有って、
下一桁とか二桁に着目したときのバラつきを保障してないって事だね。
特に rand() の下一桁はひどい偏りが有るらしい。
>>229
ちゅことは 0〜55がそれ以外の5割り増しで出るわけか。
クリティカルヒットの確立が有利だと気分は良いかも知れない。
0233デフォルトの名無しさん
2006/12/15(金) 18:00:33#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;
}
これどこがへんですか教えてください
0234デフォルトの名無しさん
2006/12/15(金) 18:02:14fname_in[strlen(fname_in-1)] = '\0';
0235デフォルトの名無しさん
2006/12/15(金) 18:03:41+ fname_in[strlen(fname_in)-1] = '\0';
0236デフォルトの名無しさん
2006/12/15(金) 18:04:55下位の数ビットはシフトして捨てるといい。
0237デフォルトの名無しさん
2006/12/15(金) 18:08:152スレまえで同じような問題の質問があったけど絶対同じ学校のやつですね
0238デフォルトの名無しさん
2006/12/15(金) 18:36:43× fgets(fname_in, COLSIZE + 1, stdin);
○ fgets(fname_in, NAMSIZE + 1, stdin);
fgets() は最大 (size-1) のデータを読み込み終端に '\0' を追加するので、
fname_in[strlen(fname_in-1)] = '\0'; は無駄。
0239デフォルトの名無しさん
2006/12/15(金) 18:41:460240デフォルトの名無しさん
2006/12/15(金) 18:42:350241デフォルトの名無しさん
2006/12/15(金) 18:43:17[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] その他の制限: 特になし
0243デフォルトの名無しさん
2006/12/15(金) 18:59:22あっても問題ない行とあるとおかしい行の区別はつけような
0244デフォルトの名無しさん
2006/12/15(金) 19:00:33丸投げスレ的には、>>238で十分だけど、致命的な間違いをしてる式を教えてあげておいたほうが親切だとオモ。
ってか、丸投げスレより、質問スレ向けなネタだね。
0245デフォルトの名無しさん
2006/12/15(金) 19:12:18[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] その他の制限: ファイル操作に関しては習ったばかり。
よろしくおねがいします。
0246238
2006/12/15(金) 19:30:17fgets(fname_in, COLSIZE + 1, stdin);
これは致命的問題。
スタックが下から上に積まれる環境において、NAMSIZE + 4 以上の文字数が入力された場合、
fgets() からのリターンアドレスを失い暴走する可能性がある。
バッファオーバーランを起こすとあらぬ場所で落ちる(様に見える)から追うのが面倒なんだよなぁ。
0247デフォルトの名無しさん
2006/12/15(金) 19:32:12fgets(fname_in, sizeof(fname_in), stdin)
にしてくれると安心だ;
0249デフォルトの名無しさん
2006/12/15(金) 20:18:26[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] その他の制限: ポインタはまだ習ってないです。
0250デフォルトの名無しさん
2006/12/15(金) 20:39:03何がどう違うのかはっきり説明しないと、ここでは相手にされないぞ。
0251デフォルトの名無しさん
2006/12/15(金) 20:41:48さすがにそれがわからないのはまずくないか?
0252デフォルトの名無しさん
2006/12/15(金) 20:45:53丸投げする側の人かな?
0253デフォルトの名無しさん
2006/12/15(金) 20:50:520254デフォルトの名無しさん
2006/12/15(金) 20:52:36わからないから教えてください。
0255デフォルトの名無しさん
2006/12/15(金) 20:58:24>>250は言葉通りに一般的な意味で>>248に助言してるだけかもしれないだろ。
他人の立場を推測して発言するのがそんなに不自然か?
0256デフォルトの名無しさん
2006/12/15(金) 21:09:04サイズ一杯に入ったときと場合わけしてないからおかしいことになってるけどな。
0257デフォルトの名無しさん
2006/12/15(金) 21:30:40どっちみちサイズ以上のときも後ろが無視されるわけだから
ぴったりに入った時1文字削られてもいいんじゃない?
0258デフォルトの名無しさん
2006/12/15(金) 21:32:43改行文字を含むファイル名は作れない
↓
常に fopen が失敗する
0259デフォルトの名無しさん
2006/12/15(金) 21:34:580260デフォルトの名無しさん
2006/12/15(金) 21:38:17例えばfgets(fname_in, 10, stdin)で一杯に入るとstrlen(fname_in)は9。
このときfname_in[8]は\0じゃないけど\0にすることになってまずいだろ。
0261デフォルトの名無しさん
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への発言としてとってしまった
で、よろしいでしょうか(アンカーが多すぎるって怒られたので一部消しています)
違うなら・・・・・・ゴメンナサイ
0262257
2006/12/15(金) 21:47:39いや、だからさー
その場合でも標準入力に10文字を指定すると1文字は読み取られずに残っちゃうでしょ
つまりifで分岐してもファイル名は9文字までって制約がついちゃうなら
無条件に'\0'を代入してファイル名は8文字までって制約でも
いいんじゃないかというはなし
0263デフォルトの名無しさん
2006/12/15(金) 21:50:20fname_in[strlen(fname_in-1)] = '\0';が無駄とか言ってる阿呆と勘違いした。
0264デフォルトの名無しさん
2006/12/15(金) 21:54:32fname_in[strlen(fname_in)-1] = '\0';な。
0265デフォルトの名無しさん
2006/12/15(金) 22:00:30fgets(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?
0266デフォルトの名無しさん
2006/12/15(金) 22:19:00ついでに FILENAME_MAX を使って欲しいくらいかな
0267238
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'
にすべきではないかなぁ。
良いコードはコメントが無くても意図が読める物だと思う...多くは語らないけど。
まぁ意図が読めなかったバカの独り言ですけどね。
0268デフォルトの名無しさん
2006/12/15(金) 23:57:55[2] 問題文(含コード&リンク):
任意の決定性有限オートマトン(DFA,弱い決定性も含む)を模倣するプログラムをかけ。
外部のファイルで定義されたDFAを読み込むことにより、任意のDFAを模倣するものとする。
*注意
入力アルファベットは少なくとも英数字までは対応可にする。
状態数は少なくとも100個までは対応できるようにする。
[3] 環境
[3.1] OS: Mac
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 月曜までによろしくおねがいします。
[5] その他の制限:
0269デフォルトの名無しさん
2006/12/16(土) 00:19:22外部ファイルの定義は?
0270デフォルトの名無しさん
2006/12/16(土) 00:25:40数値を入れてしばらくすると
「セグメンテーション違反です」って
表示されて中止されます。どうしたらいいのですか?
0271268
2006/12/16(土) 00:29:08定義ファイル
ファイルのフォーマットは何でも可。
初期状態
最終状態の集合
状態遷移関数((状態、記号、次の状態)の3項組みで与える
例
-----begin DFA def----
0
12
0a1
0b1
1a2
1b1
2a0
----end DFA def------
「simulate DFA def」で起動後、例えば、aaaaを与えれば「受理しました」を、aabを与えれば「受理できませんでした」を出力。
0272デフォルトの名無しさん
2006/12/16(土) 00:30:37まずポインタや配列の添え字あたりをチェック
0273デフォルトの名無しさん
2006/12/16(土) 00:32:19早速ありがとうございます
スレ違いかもしれませんが関連して一つ、
セグメンテーション違反ってなんですか?
0274デフォルトの名無しさん
2006/12/16(土) 00:34:550275デフォルトの名無しさん
2006/12/16(土) 00:37:270276デフォルトの名無しさん
2006/12/16(土) 00:40:26あと、セグメンテーション違反が出たのは>>182のことです
間違えてすみません
0277デフォルトの名無しさん
2006/12/16(土) 00:41:140278デフォルトの名無しさん
2006/12/16(土) 00:58:42[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] その他の制限:なし
よろしくお願いします。
0279デフォルトの名無しさん
2006/12/16(土) 01:01:03なぜこうしたのか聞かれなかった?
質問に答えられた?
0280デフォルトの名無しさん
2006/12/16(土) 01:04:010281デフォルトの名無しさん
2006/12/16(土) 01:04:32>乱数の生成手順
って学校で指定でもされたものがあんの?
条件がはっきりしない。
>ごく普通に、0からn-1まで処理
先頭から順に配列に入れていけという指示でもあったん?
0282デフォルトの名無しさん
2006/12/16(土) 01:06:410283デフォルトの名無しさん
2006/12/16(土) 01:07:14乱数でしかなかった気がするが、それが指摘されたとか?
srand(time(NULL));と<time.h>を追加するとか?
0284デフォルトの名無しさん
2006/12/16(土) 01:09:31それくらい自分で直せよ。
0285デフォルトの名無しさん
2006/12/16(土) 01:13:22どこがどう正しくないのか質問してみたら?
0286デフォルトの名無しさん
2006/12/16(土) 01:14:320287デフォルトの名無しさん
2006/12/16(土) 01:18:020288デフォルトの名無しさん
2006/12/16(土) 01:55:58嫌みなんだろうけど、スレ的も問題的にも、何ら問題は無いんだよね。
突き返された本当の理由は、明らかに他人の手を借りてるのがバレバレだから自分でやれってこと。
for文の中身の意味はわかる?あれを逆順にして、初期化を0にして、nにならないようにしてやれば良い(n-1まではインクリメントして、その後止まるように)。
0289デフォルトの名無しさん
2006/12/16(土) 02:17:52void 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]);
}
02901
2006/12/16(土) 02:32:18[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 );
0291デフォルトの名無しさん
2006/12/16(土) 02:32:54こんなコード書いたら同じ値が出る可能性高いし
int main(){
int i,d[5];
for(i=0;i<10;i++){
init_array(d,5);
output_array(d,5);
printf("\n");
}
return 0;
}
02922
2006/12/16(土) 02:32:58for (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を必ず使用する
0293デフォルトの名無しさん
2006/12/16(土) 02:36:28data.txt, data2.txt, data3.txt は?
0294デフォルトの名無しさん
2006/12/16(土) 03:41:21おざなりな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;
}
0295デフォルトの名無しさん
2006/12/16(土) 03:43:43初期化済みフラグを static で持つとか?
0296246
2006/12/16(土) 08:30:18NAMESIZE+4 に食いてく奴を期待してたんだけど....
がっかりだよ。
0297デフォルトの名無しさん
2006/12/16(土) 08:52:14029857
2006/12/16(土) 11:32:06いちどきに多数の質問、ソーリー。
そして答えてくれた方々ベリーサンキューありがとお!!!
0299 ◆23iJ.6jzS6
2006/12/16(土) 12:17:46[2] 問題文(含コード&リンク):辺の長さを入力(2〜9) その長さに対応したひし
形と六角形を*で表示
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: どちらでも可
[4] 期限:17日10時
0300デフォルトの名無しさん
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を修正して。」と言っていました。
0301192
2006/12/16(土) 15:24:47わたしもよく分かりません。
このプログラムはランダムで精製された四桁の数(数は全て異なっていなければならない)を当てる数当てゲーム。
四桁の整数を入力して、場所と数の両方で合っているのならhit、そうでなければblowを表示して、最終的に全ての数を当てたらcompleteで終了する。
一連の動作中にcompleteが表示されるまで最初にランダムで設定された数は書き換わらないという物なのですが・・・。
皆さんでも分かりませんか・・・?
0302デフォルトの名無しさん
2006/12/16(土) 15:41:39for(i=0;i<N;i++){if((In[i]=getchar()) ==EOF) break; // この部分 //
In[i]-='0';}
ここがおかしい
0303デフォルトの名無しさん
2006/12/16(土) 15:59:20[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の後はこのような感じでいいんでしょうか・・・・
0304123 ◆oSFr1044HU
2006/12/16(土) 16:48:36[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
助けてください。
0306123 ◆oSFr1044HU
2006/12/16(土) 16:54:42すみません。
0307デフォルトの名無しさん
2006/12/16(土) 17:16:05どこを直せばいいのですか?
0308デフォルトの名無しさん
2006/12/16(土) 17:53:51[2] 問題文(含コード&リンク):乱数のプログラムのアルゴリズムを答えよ
[3] 環境[3.1] OS:Linux[3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語
[4] 期限: [2006年12月19日12:00まで][5] その他の制限:無し
0309デフォルトの名無しさん
2006/12/16(土) 18:21:10こちらがプログラムです
#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]); }}}
0310308
2006/12/16(土) 18:22:14}
}
}
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!!");
}
0311デフォルトの名無しさん
2006/12/16(土) 18:31:310312デフォルトの名無しさん
2006/12/16(土) 18:34:42で、何を知りたい?
rand() の中身?
>>309 の動作説明?
0313デフォルトの名無しさん
2006/12/16(土) 18:37:51次のサイトに貼り付けて解凍すること: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==
0314308
2006/12/16(土) 18:39:260315デフォルトの名無しさん
2006/12/16(土) 18:45:18http://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E5%90%88%E5%90%8C%E6%B3%95
0316デフォルトの名無しさん
2006/12/16(土) 19:07:29どう考えても
int read(char* fname)
{
ifstream fin(fname);
だわな
0317308
2006/12/16(土) 19:09:40有難うございます
0318デフォルトの名無しさん
2006/12/16(土) 20:58:13↓によると、Linux の rand() はもはや線形合同法ではないらしい。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/rand.3.html
0319デフォルトの名無しさん
2006/12/16(土) 21:03:21おねがいします。
0320 ◆23iJ.6jzS6
2006/12/16(土) 21:13:43よろしくお願いします。
0321デフォルトの名無しさん
2006/12/16(土) 21:33:43どこが間違ってますか?
0322デフォルトの名無しさん
2006/12/16(土) 21:40:28どこか間違ってるか?
0323デフォルトの名無しさん
2006/12/16(土) 21:43:41無理。
辺の長さだけではひし形を決定できない。
日曜に提出ってへんな学校。
0324デフォルトの名無しさん
2006/12/16(土) 21:44:55俺の目が節穴でなければ,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); }
0325デフォルトの名無しさん
2006/12/16(土) 21:53:30セグメンテーション違反って出る。。。
0326796
2006/12/16(土) 22:07:06[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日まで]
0327デフォルトの名無しさん
2006/12/16(土) 22:49:16static 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" );
}
}
0328デフォルトの名無しさん
2006/12/16(土) 22:50:03static 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" );
}
}
0329デフォルトの名無しさん
2006/12/16(土) 22:50:09出なかったよ…
ソースはコピペした?見て自分で書いた?
0330デフォルトの名無しさん
2006/12/16(土) 23:09:240331デフォルトの名無しさん
2006/12/16(土) 23:33:08見て書きました
明日もう一度確認してきます
0332デフォルトの名無しさん
2006/12/16(土) 23:50:36ならたぶんソースの写し間違い
コピペするよろし
0333デフォルトの名無しさん
2006/12/16(土) 23:52:04どうかお願いします<(_ _)>
0334デフォルトの名無しさん
2006/12/17(日) 00:06:331) の場合と 2) の場合の2つ作れということね
>フロアには障害物を置けるようにし、障害物は##で表せ
任意に置けるってことだよね
経路が存在しない場合、または以下の状態になるときは解なしでいいね
1) 2回以上通らなければいけない道が存在する
1回も通らない場所が存在する
2) 3回以上通らなければいけない道が存在する
1回も通らない場所が存在する
暇つぶしにやるつもりなので回答できないかもしれない
0335デフォルトの名無しさん
2006/12/17(日) 00:10:51>2) 3回以上通らなければいけない道が存在する
繋がってさえいれば必ず2回で十分。
全ての道を二本に分裂させると考えれば、全ての頂点から出る
辺の数が偶数になるので、一筆書き可能。
0336デフォルトの名無しさん
2006/12/17(日) 00:13:33>>196
0337L ◆FTiifLi0KU
2006/12/17(日) 00:21:21[2] 問題文
キーボードから元金、返済回数、利率を入力し、支払い額、利息、残高を表示する。
http://ranobe.com/up/src/up158197.jpg のように表示をしろとのことです。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio2003
[3.3] 言語:C++
[4] 期限: 12月18日
[5] その他の制限:制限というかコンソールアプリケーションまでしか習ってません。
経営学部の人間なのですが、お手上げ状態ですのでなにとぞお願いします。
0338デフォルトの名無しさん
2006/12/17(日) 00:23:02プリントスクリーンを知らないのか?
0339L ◆FTiifLi0KU
2006/12/17(日) 00:23:580340デフォルトの名無しさん
2006/12/17(日) 00:28:32キーボードの右上のほうにPrintScreenってないか?
コマンドプロンプトをアクティブにした状態で
Alt + PrintScreen
と押せ
0341デフォルトの名無しさん
2006/12/17(日) 00:29:490342デフォルトの名無しさん
2006/12/17(日) 00:30:36鬼才現る
0343デフォルトの名無しさん
2006/12/17(日) 00:31:170344L ◆FTiifLi0KU
2006/12/17(日) 00:36:27これは授業中に教授のを撮ったヤツなのでスクリーンショットを撮っても今は無いんです。
写メでうつってる結果表示は
元金?
支払い回数?
利率(%)?
回数 支払額 利息 残高
□ □□□ □□ □□
な感じになってます。
色々とすみません。
0345デフォルトの名無しさん
2006/12/17(日) 00:38:02それを押したらペイントを起動して貼り付けて保存。
0346デフォルトの名無しさん
2006/12/17(日) 00:45:47支払額の算出ルールが解らんなぁ。
普通に考えると
1)最終回以外は均一
2)支払い総額最低
だと思うんだけど、写真では毎回支払い金額が異なるしなぁ。
なんか条件無いの?
0347L ◆FTiifLi0KU
2006/12/17(日) 00:50:23問題文と画像を見せられて作ってきて、って言われただけでした。
多分、そこら辺は適当でよいのかもしれません。
楽なプログラムの方で構いませんのでよろしくお願いしますm(__)m
0348デフォルトの名無しさん
2006/12/17(日) 00:50:31#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;
}
0349L ◆FTiifLi0KU
2006/12/17(日) 00:54:15速急な対応ありがとうございました。
お陰で単位を落とさずに済みそうです。
謝謝ですm(__)m
0350デフォルトの名無しさん
2006/12/17(日) 00:55:57>>348 を出すのか?写真の入力だと支払い総額が200万を超えるけど。
0351L ◆FTiifLi0KU
2006/12/17(日) 01:00:350352デフォルトの名無しさん
2006/12/17(日) 01:05:25riritu=pow(riritu+1.0, 1./12)-1.0;
0353デフォルトの名無しさん
2006/12/17(日) 01:05:370354デフォルトの名無しさん
2006/12/17(日) 01:07:300356デフォルトの名無しさん
2006/12/17(日) 01:15:51計算過程で切り捨てられちゃったかな?
SSの方が正解だけどね
0357デフォルトの名無しさん
2006/12/17(日) 01:21:191.0/3*3
相当の部分があるからそこで切り捨てられてると思われ
0358350
2006/12/17(日) 01:32:06ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3203.txt
>>346 で書いたルールにより算出。(バカっぽいやり方だけど)
写真より少し支払い総額が減った。
0359デフォルトの名無しさん
2006/12/17(日) 01:46:34写真と一致
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3206.txt
0360デフォルトの名無しさん
2006/12/17(日) 04:11:36OS:Windows
言語:C/C++どちらでも可
期限:12月20日
よろしくお願いします。
0361デフォルトの名無しさん
2006/12/17(日) 05:32:45#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;
}
0362デフォルトの名無しさん
2006/12/17(日) 06:23:51元金 % 回数 != 0 のときに…
0363デフォルトの名無しさん
2006/12/17(日) 06:32:18処理できない場合が多いみたい
回数を24回から23回に変更したときとか
0364358
2006/12/17(日) 10:39:147行目がバグってた。
正しくは
start = (int)( ( (double)rent * rate * time ) + (double)rent ) / time + 1;
借入金額が極端に少ない場合も処理できないけど、これは仕様。
0365デフォルトの名無しさん
2006/12/17(日) 10:46:09やつを量産した MS の罪は重いな。
0366358
2006/12/17(日) 10:57:10まぁ500円を24回払いで年利2.9% とか言われたら計算できないよ。
600円なら計算できたけど...まぁガキの貸し借りには使えないソフトだな。
ちなみに回数を36回で年利120%にするとトイチの計算になるが、元金の2.5倍以上の金利が
かかるのな。儲かるわけだわ。
0367デフォルトの名無しさん
2006/12/17(日) 10:58:29[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] その他の制限:なし。
お願いいたします。
0368デフォルトの名無しさん
2006/12/17(日) 11:27:33ケインズの乗数定理を使えばもっと簡潔にできるんではあるまいか
0369326
2006/12/17(日) 13:04:190370268
2006/12/17(日) 13:38:410371デフォルトの名無しさん
2006/12/17(日) 13:53:54>ここでの各品物が取りうる数は, 0または1とする(つまり0,1整数変数とする).
とあるけど各品物は1つしか入れられないって事?
だったら簡単そうだけど。
0372326
2006/12/17(日) 14:01:490373デフォルトの名無しさん
2006/12/17(日) 14:03:26#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));
}
0374326
2006/12/17(日) 14:05:23ほんとにありがとうございます
0375デフォルトの名無しさん
2006/12/17(日) 14:06:25何個でも使ってよい場合は 373 で次のように書き換えるだけ。
before: for (x = knapsize - size[i]; x >= 0; --x)
after: for (x = 0; x <= knapsize - size[i]; ++x)
0376デフォルトの名無しさん
2006/12/17(日) 14:06:35もう1つ質問。
品物の種類数 n の最大値を 32 にして良い?
そうじゃないと非常に難しい。
組み合わせ数が 2^32 以上になると unsigned int でループを回せなくなるので。
0377372
2006/12/17(日) 14:11:380378デフォルトの名無しさん
2006/12/17(日) 14:19:58の回答がエレガントなので書くの止めます。
いまいち理解できてないけど。
0379デフォルトの名無しさん
2006/12/17(日) 14:40:56弱い決定性って何?
0380360
2006/12/17(日) 14:45:170381デフォルトの名無しさん
2006/12/17(日) 14:47:37OS:Windows
言語:C/C++どちらでも可
期限:12月20日
よろしくお願いします。
0382245
2006/12/17(日) 15:12:070383デフォルトの名無しさん
2006/12/17(日) 15:45:52割り込みはどうすればよいのでしょうか?
0384デフォルトの名無しさん
2006/12/17(日) 16:01:13ここの決まり事くらい守ってもらおうか?
0385デフォルトの名無しさん
2006/12/17(日) 16:21:45エラー処理は不完全
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3210.c
0386デフォルトの名無しさん
2006/12/17(日) 17:55:31[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);
}
0387デフォルトの名無しさん
2006/12/17(日) 18:20:3220は出力されないの?
0388デフォルトの名無しさん
2006/12/17(日) 18:34:060389デフォルトの名無しさん
2006/12/17(日) 18:43:37こちらでいかがでしょうか?
http://sa-wiki.com/upload/src/up0082.txt
0390デフォルトの名無しさん
2006/12/17(日) 18:45:35void 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];
}
}
}
0391デフォルトの名無しさん
2006/12/17(日) 19:06:21ありがとうございます
0392デフォルトの名無しさん
2006/12/17(日) 19:48:50(1) 3 桁の整数で,各桁の数字の3 乗和がもとの数と等しくなるものをすべて求めなさい。
(2) 整数nを読み込み素因数分解、すなわちnを素数の積に分解しなさい。
簡単な関数のみでおねがいします。
全然わかりません。
0393デフォルトの名無しさん
2006/12/17(日) 20:48:21(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;}
0394デフォルトの名無しさん
2006/12/17(日) 20:58:56(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);
}
0395デフォルトの名無しさん
2006/12/17(日) 21:06:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3214.zip
0396デフォルトの名無しさん
2006/12/17(日) 21:06:25○ for (p = 2; p*p <= n; ++p)
0397デフォルトの名無しさん
2006/12/17(日) 21:21:30何故か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));
0398デフォルトの名無しさん
2006/12/17(日) 21:25:05なんか変です、1がたくさん出てきます
0399デフォルトの名無しさん
2006/12/17(日) 21:32:59「なんか変です」 じゃなくて何を入力したら何が出たかをきちんと書こうな。
0400デフォルトの名無しさん
2006/12/17(日) 21:35:5588
22211
となってます
0401デフォルトの名無しさん
2006/12/17(日) 21:37:592*2*2*11=88
0403デフォルトの名無しさん
2006/12/17(日) 21:44:00死にます
ありがとうございました
0404デフォルトの名無しさん
2006/12/17(日) 21:51:23その値を return する関数 pow を作る。
main 関数において、1 から 10 までの数値の
2 乗を pow 関数を呼び出して求め、それぞれの値とその合計を表示する。
このソースコードをおしえてください。
0405デフォルトの名無しさん
2006/12/17(日) 22:04:10using 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;
}
0406デフォルトの名無しさん
2006/12/17(日) 22:07:28ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3204.txt
OS:Windows visual studio 2005
言語:C++
期限:12月20日
以前に教えていただいたんですがうまくコンパイルできなかったのでもう一度教えてください、お願いします。
0407デフォルトの名無しさん
2006/12/17(日) 22:11:51コンパイルできなかったからゼロからやりなおせって?
コンパイルできない原因をつきとめろよ。
0408デフォルトの名無しさん
2006/12/17(日) 22:14:12>うまくコンパイルできなかったので
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
0409デフォルトの名無しさん
2006/12/17(日) 22:28:09ttp://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
こちらのほうは書き込んだんですが教えていただけなかったので一緒にしてしまいました。
0410・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2006/12/17(日) 22:38:00見たまんまじゃないかwwwwwwww
reinterpret_cast<const char *>(buf)
とか
(const char*)
とか付けて明示的にキャストして渡せばおk
でもunsigned charな時点でちょっと痛い
0411デフォルトの名無しさん
2006/12/17(日) 22:40:16ここに聞くまでも無くコンパイラさんが答えを言ってるじゃないか。
アホか。
0412367
2006/12/18(月) 00:09:290413デフォルトの名無しさん
2006/12/18(月) 00:34:570414デフォルトの名無しさん
2006/12/18(月) 00:59:270415デフォルトの名無しさん
2006/12/18(月) 01:07:38[2] 問題文(含コード&リンク):最大カット問題を解くプログラムを作成せよ。
以下の図(ノードとエッジの数はあらかじめ入力されている)のグラフに対する最大カット問題の解を表示せよ。
最大カット数と、そのときのカット方法を表示するプログラムを表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C++
[4] 期限: 年内
0416367
2006/12/18(月) 01:09:28[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] その他の制限:なし。
お願いいたします。
0417デフォルトの名無しさん
2006/12/18(月) 01:11:15>>108
0418デフォルトの名無しさん
2006/12/18(月) 01:12:050419デフォルトの名無しさん
2006/12/18(月) 01:14:220420デフォルトの名無しさん
2006/12/18(月) 01:28:07俺の勉強不足なのかもしれんが・・・
ARQリクエストってナニ?
0421デフォルトの名無しさん
2006/12/18(月) 01:28:54どなたか
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;}
この意味を説明してください
難しくてわかりません、、
0422デフォルトの名無しさん
2006/12/18(月) 01:32:33[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日
0423デフォルトの名無しさん
2006/12/18(月) 01:59:59[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日
0424デフォルトの名無しさん
2006/12/18(月) 02:04:00プログラムするなら脳内デバッガは必須だぞ。
まぁそれが出来ないから丸投げしてるんだろうが…
少しでも自分で考えた結果を見せたほうがいいぞ。
0425デフォルトの名無しさん
2006/12/18(月) 02:05:020426デフォルトの名無しさん
2006/12/18(月) 02:06:57全てはこの一語に尽きる。
カスに何を言っても無駄・・。
0427デフォルトの名無しさん
2006/12/18(月) 02:09:01いつもならググれというトコロだけど、明日休みだから暇つぶしがてら・・・
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;}
ってトコだわね。あとは自分で考えて。
0428デフォルトの名無しさん
2006/12/18(月) 02:10:02上2行は調べました^^;
ちなみにわからないところが
whileの意味以外ほとんどなので丸投げさせてください、、
0429デフォルトの名無しさん
2006/12/18(月) 02:10:52ありがとうございます!!!
0430デフォルトの名無しさん
2006/12/18(月) 02:14:25一の位は元の数を10で割った余り
十の位は元の数を10で割ったときの商をさらに10で割った余り
百の位は元の数を10で割ったときの商をさらに10で割ったときの商を10で割った余り
0431デフォルトの名無しさん
2006/12/18(月) 03:00:40プログラム知らなきゃ誰でも最初はカスだと思うんだが…。
真にカスなのは思考の片鱗すら見せず問題を丸投げする馬鹿。
>>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回、ね。
0432426
2006/12/18(月) 03:07:23>プログラム知らなきゃ誰でも最初はカスだと思うんだが…。
尤も。
>真にカスなのは思考の片鱗すら見せず問題を丸投げする馬鹿。
最近そう思える奴が多くてイライラしてた。すまん。
0433デフォルトの名無しさん
2006/12/18(月) 03:21:07お前さんの文章がちょっと変なのでルールが違うかも知れない。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3215.txt
初期配置で 10% 位にするとすぐ全滅する。
25% だと6世代くらいで変化しなくなる。
まぁ好きに弄んでくれ。
0434デフォルトの名無しさん
2006/12/18(月) 06:34:27[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つのリストとみなして、()内の最初の値と最後の値にポインタを割り振ったり、
()をスタックポインタとして、隣のスタックポインタの先頭要素を取り出してマージしたりと、
考えてみるものの、ポインタや構造体について深く学んでいないためプログラムが書けません・・・
どなたか、ご教授お願いします。
0435デフォルトの名無しさん
2006/12/18(月) 06:39:16訂正、及び動作を以下に示します
(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)
↓ ↓
( 整列済みデータ列 )
0436デフォルトの名無しさん
2006/12/18(月) 09:52:17alloc系使って良いかどうかわからなかったんで、こんなんでどうよ?
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 ] );
}
0437デフォルトの名無しさん
2006/12/18(月) 09:59:30[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] その他の制限:
0438デフォルトの名無しさん
2006/12/18(月) 10:20:40とりあえずな、エラー文読め。
for が fo になっている点が1つ、{ と } が合ってない点が2つある。
0439デフォルトの名無しさん
2006/12/18(月) 10:39:15カリカリしちゃうなら、俺に聞けスレに行くと良いよ
あちらは質問スレだからね
こっちはただ宿題を片付けるスレ
0441デフォルトの名無しさん
2006/12/18(月) 11:38:560443デフォルトの名無しさん
2006/12/18(月) 13:20:30[2] キーボードから入力された文字列に指定した文字が
何個含まれているか表示するプログラムを作りなさい。
動作例:
キーから文字を数文字入力してください=alpha-dog
調べる文字を入力してください= a
入力された文字列の中に a は 2 個ありました。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ:Visual C++
[3.3] 言語: C++
[4] 期限: 12/18 17:00
[5] その他の制限:動作例に合うようにお願いします。
0444デフォルトの名無しさん
2006/12/18(月) 13:22:47[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] その他の制限:
0445デフォルトの名無しさん
2006/12/18(月) 13:41:16E-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]);
}
0446デフォルトの名無しさん
2006/12/18(月) 13:42:53#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;
}
0447デフォルトの名無しさん
2006/12/18(月) 13:45:210448デフォルトの名無しさん
2006/12/18(月) 13:45:325 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
上のプログラムを元にしてやるのですが,
最大から二番目の数がどうしてもできません。
よろしくお願いします。
0449デフォルトの名無しさん
2006/12/18(月) 13:51:480451デフォルトの名無しさん
2006/12/18(月) 14:02:10二番目に多い数の添え字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]を表示する
0452デフォルトの名無しさん
2006/12/18(月) 14:07:27#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;
}
0454デフォルトの名無しさん
2006/12/18(月) 14:50:47ifとforだけだ
がんばれ
0455デフォルトの名無しさん
2006/12/18(月) 14:56:31ヒントトンクス がんばってみる
0456デフォルトの名無しさん
2006/12/18(月) 15:51:24[2] 問題文(含コード&リンク): 宝くじの抽選番号のあたり調べをし結果を表示するプログラムを作成
最初に当選番号を入力し、買った宝くじの番号を入力しあたりかはずれか表示する
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 今週の水曜日
[5] その他の制限: ・バラ・連番より選択可にする
・連番の場合先頭の番号を入力するだけにする
・枚数チェック、文字チェックを行う。数字以外は入力できないようにする
・上位の等が当たったら下位の等は当たらない
・繰り返し入力できるように何かキーを入力したら終了できるようにする
・買った宝くじは何度でも入力できるようにする
・1等は6桁、2等5桁、3等4桁、4等3桁、5等2桁、6等1桁です
0457デフォルトの名無しさん
2006/12/18(月) 16:20:20http://pc8.2ch.net/test/read.cgi/tech/1165718021/74
これおまえ?
0458デフォルトの名無しさん
2006/12/18(月) 16:29:230459デフォルトの名無しさん
2006/12/18(月) 16:57:27int 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(...);
}
こんな書き方してますが、これを関数を要素にもつ配列と定義できないでしょうか?
またこのとき関数に値を渡す方法が分からないのですがどなたか教えてくださいませ。
0460デフォルトの名無しさん
2006/12/18(月) 17:01:35宿題じゃないならスレ違い
こっちで聞きな
C言語なら俺に聞け(入門篇) Part 5
http://pc8.2ch.net/test/read.cgi/tech/1165022193/
0461デフォルトの名無しさん
2006/12/18(月) 17:07:15書いてみたけどどうだろう…?
#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;
}
0462デフォルトの名無しさん
2006/12/18(月) 17:48:50一つの答えに対して答えるチャンスは一回きり?
(どちらに対してどちらが大きいのか分かりにくいかも)
0463461
2006/12/18(月) 18:02:11確かに自分で見直して勘違いしてしまいました;;
アドバイスありがとうございます。
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;
}
言葉からソースにするのって難しいですね;;
0464デフォルトの名無しさん
2006/12/18(月) 18:39:49↓はウイルスか?踏んだっていう奴が多くて困ってるんだが、俺じゃわからなんだ。
ttp://www.vipper.net/vip145805.jpg.html
とりあえず、既存のウイルスで検出はされなかったんだが。
0465デフォルトの名無しさん
2006/12/18(月) 18:46:40良くあるブラクラじゃないか。
0466デフォルトの名無しさん
2006/12/18(月) 19:05:04[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] その他の制限
ノードのアドレス表示をしないといけないのですが、そもそもこれが何をやっているのかがまったくわかりません。
一応自分でやってみたのですが、中身がわからないので解説を求められると答えることができません。
どなたか各箇所にコメント分で説明をつけてもらえないでしょうか。
よろしくお願いします。ノードのアドレス表示も問題あったら教えていただけると幸いです
0467デフォルトの名無しさん
2006/12/18(月) 19:55:59○一応他人にやってもらったのですが、
0468デフォルトの名無しさん
2006/12/18(月) 20:21:52× ○一応他人にやってもらったのですが
○ ○一応他人にやってもらったのですが、中身がわからないので
0469デフォルトの名無しさん
2006/12/18(月) 20:23:30一応自分でやってみた=一応自分で実行させてみた の意と思われ
0470デフォルトの名無しさん
2006/12/18(月) 20:24:500471466
2006/12/18(月) 21:37:17はい、実行させてみたってことです。変な言い方してしまってすみません。
プログラム自体は自分で作れてないです。まったくわからないです。
0472デフォルトの名無しさん
2006/12/18(月) 22:29:50セキュ板行けよ。
宿題どころかCすら関係ねーじゃねーかw
0473デフォルトの名無しさん
2006/12/18(月) 23:04:39その出現回数を表示せよ。
ナオ、出現回数はint型の配列要素b[0]〜b[9]に
カウントするものとする。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
期限は明日までです。 よろしくお願いします。
0474デフォルトの名無しさん
2006/12/18(月) 23:05:40ありがとうございました。
0475デフォルトの名無しさん
2006/12/18(月) 23:14:04#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;
}
0476デフォルトの名無しさん
2006/12/18(月) 23:27:55[2] 問題文(含コード&リンク):
べき乗を求める関数を製作し、それを利用してべき乗を求めるプログラムを製作せよ。
関数は下記の通りとする。なお、オーバーフローは考慮せずともよい。
int beki(int in,int exp)
in 入力値
exp 指数値(入力値をexp乗する)
戻り値 計算結果
入力に関して
キーボードから、入力値と指数値をスペース1つ開けて1行で入力する
出力に関して
結果+改行のみ出力
[3] 環境
[3.1] OS: Windows
[3.3] 言語: 言語:C
[4] 期限: 2006/12/19
お願いします>、<
0477デフォルトの名無しさん
2006/12/18(月) 23:36:38[2] 問題文(含コード&リンク):数字を入力する画面1つと+、=ボタンで3つの数字の足し算を可能にしなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++
[4] 期限: 今週木曜
0478デフォルトの名無しさん
2006/12/18(月) 23:37:54#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とか-とかは考えるの忘れてた
0479デフォルトの名無しさん
2006/12/18(月) 23:41:17#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;
}
0480デフォルトの名無しさん
2006/12/18(月) 23:44:11遅かった上に、exp<2の時考えてなかった。
0481デフォルトの名無しさん
2006/12/18(月) 23:48:27if(exp==0) return 1;
をつければ、0には対応できるぞ
-は見なかったことにした。intだし。
0482sage
2006/12/18(月) 23:57:38[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問ありますが別々のプログラムでよろしくお願いします。
0483デフォルトの名無しさん
2006/12/19(火) 00:12:26[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関数は使用不可、バブル整列化とは違うことをふまえて考えてください。
さっぱりです。皆さんの力を貸してください
0484デフォルトの名無しさん
2006/12/19(火) 00:15:22お二方有難うございます〜
0485デフォルトの名無しさん
2006/12/19(火) 00:20:5810^-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;}
0486 ◆GJenck4cmw
2006/12/19(火) 00:20:59[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日です。
構造化プログラミングを習っているところなので
構造化プログラミングを使用した形で
よろしくお願いします。
0487デフォルトの名無しさん
2006/12/19(火) 00:22:53#define N 5 は20に変更してくれ 忘れてた
0488デフォルトの名無しさん
2006/12/19(火) 01:01:110489デフォルトの名無しさん
2006/12/19(火) 01:03:46難題だから土曜日にならないと解けないわ
0490デフォルトの名無しさん
2006/12/19(火) 01:04:59ごめんなさい、(10^-5)*|x|です。
[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] その他の制限: なし
よろしくお願いします。
0492デフォルトの名無しさん
2006/12/19(火) 02:16:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3222.txt
0493デフォルトの名無しさん
2006/12/19(火) 04:27:46end = vec[vec.size()-1]じゃエラーなんですよね・・・。
助けてください><
0494デフォルトの名無しさん
2006/12/19(火) 04:43:16おっとすいません!これでできるっぽいです。エラーは他のとこででてました><
0495デフォルトの名無しさん
2006/12/19(火) 06:26:48N の上界は?
0496デフォルトの名無しさん
2006/12/19(火) 07:00:55[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)
{
このカッコの中をお願いします、先生方!!
}
0497デフォルトの名無しさん
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まで]
お願いします
0498466
2006/12/19(火) 07:38:510499デフォルトの名無しさん
2006/12/19(火) 07:40:25>>487
ありがとうございます。
早速試してみます。
0500デフォルトの名無しさん
2006/12/19(火) 08:15:25わからないときはどこがわからないのかを書け
includeやmainからなんて解説してらんない
0501女子大1年生
2006/12/19(火) 08:46:12[2] 問題文(含コード&リンク):2つの文字列の大小を比較する関数strcmp()のプログラムを作成しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] 期限: [2006年12月19日18:00まで]
ここにいる先生方にとっては簡単なことかもしれませんが、
アフォな私には難しいんです。どなたか助けてください。
0502デフォルトの名無しさん
2006/12/19(火) 08:48:000503デフォルトの名無しさん
2006/12/19(火) 09:16:29void 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 );
}
0504デフォルトの名無しさん
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
0505デフォルトの名無しさん
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]構造体やポインタなどといった基本事項は一通り学んでいます
0506デフォルトの名無しさん
2006/12/19(火) 10:43:21不完全だけど
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3224.txt
0507デフォルトの名無しさん
2006/12/19(火) 10:46:51ラプラス方程式、ガウスーザイデル法及びSOR法、格子間隔h、解の収束条件とか
正直ワカンネ
0508デフォルトの名無しさん
2006/12/19(火) 10:53:38俺も数値計算法の講義は取らなかったからなぁ
0509デフォルトの名無しさん
2006/12/19(火) 11:02:210510デフォルトの名無しさん
2006/12/19(火) 11:48:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3225.c
0511初心
2006/12/19(火) 12:58:14その値を return する関数 pow を作る。
main 関数において、1 から 10 までの数値の
2 乗を pow 関数を呼び出して求め、それぞれの値とその合計を表示する。
このソースコードをおしえてください。
これをC言語でお願いします。
0512デフォルトの名無しさん
2006/12/19(火) 12:59:23[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] その他の制限:特に無し
宜しくお願いします。
0513デフォルトの名無しさん
2006/12/19(火) 13:19:34[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とは違う方法のプログラムでお願いします。
0514デフォルトの名無しさん
2006/12/19(火) 13:19:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3226.c
0515デフォルトの名無しさん
2006/12/19(火) 13:21:29すべてカンニング竹山とみなすw
0516513
2006/12/19(火) 13:21:561000
0200
3001
0004
(数字の無いところは0)
↓
1342
4213
3421
2134
となるようにおねがいします
0517デフォルトの名無しさん
2006/12/19(火) 13:30:15随分図々しいな
0518デフォルトの名無しさん
2006/12/19(火) 13:49:46実際見てる先生もいるみたいだしな
0520デフォルトの名無しさん
2006/12/19(火) 14:06:37[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
よろしくお願いします。
0521デフォルトの名無しさん
2006/12/19(火) 14:07:09やりすぎw
二乗を返すだけだから、引数は一つで 引数*引数返すだけ。
0522デフォルトの名無しさん
2006/12/19(火) 14:08:44ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3227.txt
0523デフォルトの名無しさん
2006/12/19(火) 14:17:00そういう主観は一切要らない、そう思うなら自分のやり方でレスすりゃ良いだろ。
汎用性を考えたやり方が気に入らないならそうと言え、お前のレベルはその程度だ
で一蹴されるよ。
0524512
2006/12/19(火) 14:22:36素早い対応ありがとうございます。
私の表記に少し説明不足がありましたので追記致します。
1000
0200
3001
0004
等のかかれたtxtファイルを読み取り、そのtxtの問題を解くプログラムを
作って頂けないでしょうか?
たびたび申し訳ありません。
0526デフォルトの名無しさん
2006/12/19(火) 14:33:31>>1
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0527デフォルトの名無しさん
2006/12/19(火) 14:34:50汎用性高いし、良いコードだと思うよ。
気に触ったならごめん。
0528デフォルトの名無しさん
2006/12/19(火) 14:36:01ちょうど勉強してるところと似てたので書いてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3228.c
0529デフォルトの名無しさん
2006/12/19(火) 14:37:58それじゃ少しだけ
forとifと配列使えばできるよ
053045
2006/12/19(火) 14:40:040531デフォルトの名無しさん
2006/12/19(火) 14:42:24ある数値を渡すと、二乗(固定)を返す関数を作れと言われて、
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
勝手に仕様変えるのイクナイ
0532デフォルトの名無しさん
2006/12/19(火) 14:45:58ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3229.txt
0534デフォルトの名無しさん
2006/12/19(火) 14:52:46ぼるじょあがC/C++の宿題を片づけますYO! 67代目
http://pc8.2ch.net/test/read.cgi/tech/1165718021/150
0535ピンチ
2006/12/19(火) 15:07:30[2] 問題文(含コード&リンク):親プロセスは 1+2+・・・+20の計算と印字、子プロセスは、1+2+・・・+60の計算と印字、孫プロセスは1+2+・・・+120の計算と印字を行うプログラムを作りなさい
尚大切と考えられる部分と説明も述べよ
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: C
[4] 期限: 限りなく早くに
[5]特になし
0536デフォルトの名無しさん
2006/12/19(火) 15:27:00質問を却下します
0537デフォルトの名無しさん
2006/12/19(火) 15:30:060538デフォルトの名無しさん
2006/12/19(火) 15:31:18使えるんじゃね?
0539デフォルトの名無しさん
2006/12/19(火) 15:36:53string型の変数を入れても大丈夫でしょうか
0540デフォルトの名無しさん
2006/12/19(火) 15:40:48いちいち人に聞かないとなにもできないのか?
0541デフォルトの名無しさん
2006/12/19(火) 15:42:13やってみれば良いと思うよ。(0x0)
0542デフォルトの名無しさん
2006/12/19(火) 15:51:07c_str()
0543デフォルトの名無しさん
2006/12/19(火) 16:22:57[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)
分かる方、お願いします。
0544デフォルトの名無しさん
2006/12/19(火) 16:31:420545デフォルトの名無しさん
2006/12/19(火) 16:37:240546デフォルトの名無しさん
2006/12/19(火) 16:42:51[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の要素数は同じとする。
作ったけど入れ替えしてくれません
お願いします
0547デフォルトの名無しさん
2006/12/19(火) 16:46:210549デフォルトの名無しさん
2006/12/19(火) 16:56:40とりあえず1等から4等の当たり番号を教えれば良いと思うよ。
0550初心者修行中
2006/12/19(火) 17:36:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3230.txt
間違ってるかもしれない。
気が向いた方、誰か添削してください。
こうした方が良いよとか、教えていただけると有難いです。
標準偏差自信なし。
0551デフォルトの名無しさん
2006/12/19(火) 17:38:31Cってforの中で変数宣言できたっけ?
0552デフォルトの名無しさん
2006/12/19(火) 17:45:20間違ってはいないが,標準偏差の計算が非効率.
average(arr,num) が合計 num 回呼ばれるので,
計算量が O(num^2) になっている.
あらかじめ変数にでもキャッシュしておけば
O(num) になってハッピー.
0553初心者修行中
2006/12/19(火) 18:11:23先輩方のお知恵をいただいて、手直してみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3231.txt
>>551
あ!
これからは気をつけます。
ありがとうございました。
>>552
うわわ
凄く酷いコード書いてました。
ありがとうございました。
0554デフォルトの名無しさん
2006/12/19(火) 18:18:35このアホなトリックを使うやつ後を絶たんが、
実行結果が未定義であることを理解してるのかね
オプチマイズかけたら消されそうだし。
0556デフォルトの名無しさん
2006/12/19(火) 18:50:37[2] 問題文(含コード&リンク):音声再生コマンドを含んだ情報を(メール)送信し、
クライアント側で自動的に再生させるプログラムを作成
せよ。
[3] 環境 vc++(win32コンソールアプリケーション)
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:vc 6.0
[3.3] 言語: c++
[4] 期限:2006年12月28日
[5] その他の制限:特になし
0557デフォルトの名無しさん
2006/12/19(火) 18:57:1010万くらいくれるならやってあげてもいいかなってレベルだな
0558デフォルトの名無しさん
2006/12/19(火) 19:04:530559 ◆GJenck4cmw
2006/12/19(火) 19:11:37ありがとうございます。
期限過ぎてますが、がんばってみます。
0560デフォルトの名無しさん
2006/12/19(火) 19:18:19宿題ってレベルじゃねーぞ!
0561デフォルトの名無しさん
2006/12/19(火) 19:59:0915万だな
0562デフォルトの名無しさん
2006/12/19(火) 20:03:56LINUX gcc だが次のように
int func(int inum)
{
char cDtata[inum];
:
:
:
}
のように auto変数の配列サイズを 引数で動的に
指定するのは OK?
0563デフォルトの名無しさん
2006/12/19(火) 20:07:38C99とかだったらできるのかもしれない・・・・しらんけど
0564デフォルトの名無しさん
2006/12/19(火) 20:08:04スレ違い
OKかOKじゃないかはやってみればすぐわかることだろ
0565562
2006/12/19(火) 20:15:53core 解析してたら、この記述にぶちあたってしまた、
俺も、こんな記述したことないから C++ の拡張 にでもあるかな?
とオモって、調べたがわからなかった。。。
たぶん、core の 最初のトリガは
int func( int im char * cp)
{
char cData[i];
で、 cData に 文字 iバイト転送 & ヌルバイト を書いて
その NULLバイト が cData[i+1] を壊し、それが めぐりめぐって
core となったようなかんじなのだが
そもそも auto 変数のサイズを 動的に 変数で指定OK?????????
0566デフォルトの名無しさん
2006/12/19(火) 20:19:10宿題ですらないだろ?
0567デフォルトの名無しさん
2006/12/19(火) 20:20:16だからすれ違いだと。
それはC99にある。
0568562
2006/12/19(火) 20:23:26ちょっとあせってる、「俺に聞け」でいいのかな?
thnks bye
0569デフォルトの名無しさん
2006/12/19(火) 20:38:220570デフォルトの名無しさん
2006/12/19(火) 20:49:030571デフォルトの名無しさん
2006/12/19(火) 21:56:33お前さぁ、いい加減自分基準での他人への意見がうざい
言いたいことがあるとしても、自分で答えたソースを提出すりゃ良いだろ
何もお前の発言権を妨害しているわけじゃないんだから
お前は他人への批判しかしていないってことに気づけ
それから、
>>511を良く読み直してから出直せ。
ぶっちゃけ、math.h に定義されている pow ライブラリを知っていれば
自分で実装なんてしなくても済むんだが、それに似たものを作れって課題だろ。
ttp://www.bohyoh.com/CandCPP/C/Library/pow.html
本来の pow を使うんだったら double 型で使うようになるが
初心者じゃそこまで頭が回らんだろうけど。
0572デフォルトの名無しさん
2006/12/19(火) 22:12:14蒸し返す方がうざい
スルーできないのかと
>汎用性を考えたやり方が気に入らないならそうと言え、お前のレベルはその程度だ
> で一蹴されるよ。
十分あんたも自分基準だ
0573デフォルトの名無しさん
2006/12/19(火) 22:16:480574デフォルトの名無しさん
2006/12/19(火) 22:17:47はぁ?どこが?自分基準で何が悪い?問題はそれで他人を否定することだろ?
んじゃお前の書いたソースはお前の基準で書いてないのかよ?w
悪いがもっとうえの世界基準ってのを知れば、自ずと幅広い基準に従うようになっちゃうんだよw
だから固有の環境でしか通用しないものが低レベルと思われるし
その程度の考えでより優れたものを批判するから馬鹿にされるw
お前も黙ってろ、カス
0575デフォルトの名無しさん
2006/12/19(火) 22:19:57531 名前:デフォルトの名無しさん 投稿日:2006/12/19(火) 14:42:24
>>523
ある数値を渡すと、二乗(固定)を返す関数を作れと言われて、
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
勝手に仕様変えるのイクナイ
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
数値の他に指数も渡さなきゃいけない関数作るのは、どうかと…
勝手に仕様変えるのイクナイ
勝手に仕様変えるのイクナイ
いつ誰が何の仕様を変えたんだよwwww
質問者が引数の数を指定していないにもかかわらずwwww
>>531が頭が悪いのはヨーク分かった、お前基準は低レベルだから黙ってろよ、な?
低学歴必死だなw
0576デフォルトの名無しさん
2006/12/19(火) 22:21:57>二乗(固定)二乗(固定)二乗(固定)二乗(固定)二乗(固定)二乗(固定)二乗(固定)
だから#defineで固定してあんじゃんw
汎用性の意味も理解していないなら、自分で作って自分の答えをレスしてやりゃ良いだろ。
誰もお前の単に引き継いだ値同士を掛けるだけのライブラリを否定してないってw
0577デフォルトの名無しさん
2006/12/19(火) 22:22:37[2] 問題文
各行の最初の要素が数値、二番目の要素がその2乗値、3番目の要素が3乗値になる5×3bフ配列を初期化bキる。
試氓ノこれらの数鋳lをタブ区切りbナ画面に表示さbケる。
[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;
}
0578デフォルトの名無しさん
2006/12/19(火) 22:26:40p行q列目はprintf("%d",cube[p][q]);で出力できるよ
0579デフォルトの名無しさん
2006/12/19(火) 22:31:17マクロ使っても、パラメータ一つ渡すはずの仕様からは外れてんだろ。
カリカリすんな。
0580デフォルトの名無しさん
2006/12/19(火) 22:34:00int i;
for(i=0; i<5; i++) printf("%d\t%d\t%d\n", cube[i][0], cube[i][1], cube[i][2]);
0581デフォルトの名無しさん
2006/12/19(火) 22:37:16[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] 期限: 明日
0582577
2006/12/19(火) 22:38:47もっと早く聞いていればよかった。悩んでた数時間がもったいなかったですorg
0583デフォルトの名無しさん
2006/12/19(火) 22:40:25>パラメータ一つ渡すはずの仕様
どこにその1つしか渡さないという指定があるの?
質問者のレスをよーーーーく読み返してから自分で作ったものを提出しろや。
批判しかしない無能な野党と同じだぞお前?w
たかが同じ値を掛けるだけのものをいちいち関数にして渡して戻してなんて
やっていること自体無駄だと思うけどなw
0584デフォルトの名無しさん
2006/12/19(火) 22:44:40ある数値が1つであるとは書かれていないのに気づけ。
0585デフォルトの名無しさん
2006/12/19(火) 22:46:54前にも書かなかった?
0586デフォルトの名無しさん
2006/12/19(火) 22:55:45君が必死なのはわかったが、せめて連書きくらいはしないようにしてくれ。
0587デフォルトの名無しさん
2006/12/19(火) 23:03:41ここのスレタイ100回読み直せ
0588デフォルトの名無しさん
2006/12/19(火) 23:06:22お前が質問を1万回読み直せよ、文盲w
あっ、お前日本語も理解できない在日朝鮮人か?
頼むから祖国に帰って核実験失敗に巻き込まれて消滅してくださいね♠
0589デフォルトの名無しさん
2006/12/19(火) 23:08:55でも、カキコしてあげチャオ
#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;
}
0590デフォルトの名無しさん
2006/12/19(火) 23:11:44>これらの数値をタブ区切りで画面に表示させる
0591589
2006/12/19(火) 23:17:17printf("%d\t",num[j][i]);
ですね。
ずびませんでじだ!!
0592デフォルトの名無しさん
2006/12/19(火) 23:18:30とりあえず簡単なところから.
最小公倍数を返す関数名の指定が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)); }
0593デフォルトの名無しさん
2006/12/19(火) 23:29:16482をよろしくお願いします。
問題文の10^-5|x|は(10^-5)*|x|です。
0594デフォルトの名無しさん
2006/12/19(火) 23:36:33ふぁびょ〜ん
0595デフォルトの名無しさん
2006/12/19(火) 23:43:32[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でお願いします。
0596デフォルトの名無しさん
2006/12/19(火) 23:43:51うっとうしい、宿題に答える気がないなら失せろ
お前なりのソースを書いてから意見しろ、無能クズニート
0597デフォルトの名無しさん
2006/12/19(火) 23:57:480598デフォルトの名無しさん
2006/12/20(水) 00:00:08できあがったプログラム見てみたいなぁ
あ、おれ556じゃないからw
0599デフォルトの名無しさん
2006/12/20(水) 00:10:03ワロタ
0600デフォルトの名無しさん
2006/12/20(水) 00:19:080601デフォルトの名無しさん
2006/12/20(水) 00:23:00有名なウイルス
0602デフォルトの名無しさん
2006/12/20(水) 00:29:52#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;
}
0603デフォルトの名無しさん
2006/12/20(水) 00:46:19[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;
}
このような感じでお願いします。本当にお願いします。
0604デフォルトの名無しさん
2006/12/20(水) 00:48:110605デフォルトの名無しさん
2006/12/20(水) 00:49:100606デフォルトの名無しさん
2006/12/20(水) 00:55:02ますます見てみたいw
0607デフォルトの名無しさん
2006/12/20(水) 01:01:17>>596が、エレガントで可搬性が高く、様々なパラメータでオプションを指定できる形で実装してくれるから、それを待て。
0608デフォルトの名無しさん
2006/12/20(水) 01:13:19void swap(int *a, int *b, int n){
int t;
while(n) {
t = a[--n];
a[n] = b[n];
b[n] = t;
}
0609デフォルトの名無しさん
2006/12/20(水) 01:17:16(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;
}
0610デフォルトの名無しさん
2006/12/20(水) 01:30:08ありがとうございました
0611デフォルトの名無しさん
2006/12/20(水) 01:40:19571 :デフォルトの名無しさん :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
お前このスレに向いてないよ。
無駄だろうがなんだろが、出題者は、言語への理解を深めるための課題を出してるだけだろう。
ここは実務の場所じゃなく、課題出された者への回答を与える場だ。
無駄とかいうなら、このスレ自体も、人の営みも、壮大な無駄だ。
エントロピーは増大し、全ては壊れていく世界で、意味のあることなんて無い。
意味は、意味を見出すものが与えるだけ。
無駄とか無駄じゃないとかは、主観的な意見だ。
0612デフォルトの名無しさん
2006/12/20(水) 01:42:440613デフォルトの名無しさん
2006/12/20(水) 01:44:34違うだろ
0614デフォルトの名無しさん
2006/12/20(水) 01:45:230615デフォルトの名無しさん
2006/12/20(水) 01:46:04#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;
}
0616デフォルトの名無しさん
2006/12/20(水) 01:50:01>c = (int*)malloc(n);
0617デフォルトの名無しさん
2006/12/20(水) 01:58:38f'(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; } } }
0618デフォルトの名無しさん
2006/12/20(水) 02:02:38すいません、a[0]=0〜〜ってのは例です
中身は自分で入力です
あと↓のは習ってません
#include <stdlib.h>
#include <memory.h>
0619デフォルトの名無しさん
2006/12/20(水) 02:08:130620デフォルトの名無しさん
2006/12/20(水) 02:11:35#include<stdio.h>しか知らないもんで
0621デフォルトの名無しさん
2006/12/20(水) 02:13:540622デフォルトの名無しさん
2006/12/20(水) 02:19:20>お前このスレに向いてないよ。
それお前にそっくりそのまま返すよ。お前が答えたソースすら示してないじゃん。
このスレの>>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
二乗を返すだけだから、引数は一つで 引数*引数返すだけ。
0623デフォルトの名無しさん
2006/12/20(水) 02:19:34mainの方がうまくいってないんで今やってるところです
ありがとうございます。
0625デフォルトの名無しさん
2006/12/20(水) 02:21:02>課題出された者への回答を与える場だ。
だったらなおさらお前のぐちゃぐちゃうぜぇレスこそいらねーよな?
いい加減、専門学校程度のクズがうぜぇ〜んだよ、失せろやバカ
>無駄とかいうなら、このスレ自体も、人の営みも、壮大な無駄だ。
>エントロピーは増大し、全ては壊れていく世界で、意味のあることなんて無い。
>意味は、意味を見出すものが与えるだけ。
>無駄とか無駄じゃないとかは、主観的な意見だ。
もう言っていることがわけわからんね〜〜^wwwバカじゃねこいつ?何が言いたいんだ?
良いか、もうこれ以上お前みたいな馬鹿には付き合わないから、これだけは理解しろ。
お前の答えたソースを提示しろ、でなきゃお前はただのバカ
0626デフォルトの名無しさん
2006/12/20(水) 02:22:50性帝トーマス並のバカは >>511 をちゃんと読んで
自分なりのソースを書いて示しましょうねぇ〜〜〜
出来なきゃお前を今後晒し続ける
0627デフォルトの名無しさん
2006/12/20(水) 02:30:29おいっ、どうした?答えろよ?どうせ
int pow(int n) { return n*n; } を書くだけだろ?w
そんなの分かってて、敢えてそれ以上のべき乗に対応させたものに
いちいちいちゃもんつけて自分のソースは提出せずか?
宿題を答える気がないなら、チキン野郎は二度とこのスレに来るなよw
0628デフォルトの名無しさん
2006/12/20(水) 02:37:06いちいち自分が気に食わないやり方をしている奴を批判して
「そんなこと気にする”必要”があるのかよ?」とか
「お前はバカだ」とか言ってきたぞ?w
0629デフォルトの名無しさん
2006/12/20(水) 02:40:050630デフォルトの名無しさん
2006/12/20(水) 02:46:29ありがとうございます
0631デフォルトの名無しさん
2006/12/20(水) 02:53:40>>507
0632デフォルトの名無しさん
2006/12/20(水) 02:59:37こいつ、もしかして自分にレスしてる奴は一人だけだとか思ってんのか?
すげぇなw
この板で初めてふぁびょってる奴見たよ
0633デフォルトの名無しさん
2006/12/20(水) 03:00:38だからお前のソースを提示しろやタコ
0634デフォルトの名無しさん
2006/12/20(水) 03:05:27何のソースだよw
ふぁびょってる奴へのレスにソースも何もneeeeeeee
0635デフォルトの名無しさん
2006/12/20(水) 03:06:28けけけけけ、お前も宿題に答える気がないくせにこのスレに来ているのか?
失せろ、答えもしないで批判だけする奴は
0636デフォルトの名無しさん
2006/12/20(水) 03:09:33>>635
>>635
>>635
0638デフォルトの名無しさん
2006/12/20(水) 03:15:35本当にまずいので・・・・・・
0639デフォルトの名無しさん
2006/12/20(水) 03:18:34宿題に答える気満々な>>635にお願いしなさい
0640デフォルトの名無しさん
2006/12/20(水) 03:21:02ここはホストクラブとかキャバクラや教習所じゃねーんだから、指名なんてねーよw
0641デフォルトの名無しさん
2006/12/20(水) 03:26:030642デフォルトの名無しさん
2006/12/20(水) 03:27:150643デフォルトの名無しさん
2006/12/20(水) 03:28:21単語数や単語の文字数に制限はないの?
0644デフォルトの名無しさん
2006/12/20(水) 03:31:09それほど長い文章ではないです。だいたいtxtで5行〜7行ぐらいです。
0645デフォルトの名無しさん
2006/12/20(水) 03:33:520646デフォルトの名無しさん
2006/12/20(水) 03:36:17[2] 問題文(含コード&リンク):πの近似解を、台形公式、シンプソン公式を用いて算出せよ。
ただし、別々のプログラムに分けてはならず、プログラム実行後にtを入力すれば台形公式
sを入力すればシンプソン公式が選択されるようにする。分割数は100とする。
[3] 環境
[3.1] OS: WINXP
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: どちらも可
[4] 期限: 無期限
[5] その他の制限: 特に無し
問題分の説明が下手なのとこんな流れの中ですがお願いします
0647デフォルトの名無しさん
2006/12/20(水) 03:36:57同一単語のチェックとは?
単語の出現回数のことでしたら必要ありません。
0648デフォルトの名無しさん
2006/12/20(水) 03:37:12>失せろ、答えもしないで批判だけする奴は
お前のことだな
自分で言ってりゃ世話無いな
0649デフォルトの名無しさん
2006/12/20(水) 03:38:410650デフォルトの名無しさん
2006/12/20(水) 03:46:22同じ単語が2回出てきたら2個として数えるってわけね。
0651デフォルトの名無しさん
2006/12/20(水) 03:47:59はぁ?俺は昨日答えたけど?すべてに着手してもらえると思うなよw
0652デフォルトの名無しさん
2006/12/20(水) 03:48:00�@の単語の総数のことですね。その通りです。
0653デフォルトの名無しさん
2006/12/20(水) 03:48:49いちいちうぜーんだよ、だったらお前が答えれば良いだろ?アホじゃね?
氏ねよカス、っつーかこのスレに来るなって。何他人を煽るだけにここへ来てんだよ?
悔しかったらお前のソースを提出しろや無能池沼w
0654デフォルトの名無しさん
2006/12/20(水) 03:50:46はいっ?答えたし批判もしてないけど?ちゃんとべき乗のソースを出しただろ?
俺のソースにいちゃもんしかつけないバカは結局自分のソースを出さずに
ごちゃごちゃと自分の判断基準でしかそれは必要がないとしか言ってないじゃんw
0655デフォルトの名無しさん
2006/12/20(水) 04:11:12宿題を答えたほかの人への批判をした覚えはありませんが何か?
0656デフォルトの名無しさん
2006/12/20(水) 04:42:48#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;}
0657デフォルトの名無しさん
2006/12/20(水) 04:48:44ありがとうございます。なんとかがんばってみますが、できれば#include <stdio.h>だけでプログラムは組めませんかね?
なんどもすいません。
0658デフォルトの名無しさん
2006/12/20(水) 05:15:40if(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>もいらない
0659デフォルトの名無しさん
2006/12/20(水) 05:17:33なるほど。一応組みなおしてみます。
理解できました。本当にありがとうございました!!
0660デフォルトの名無しさん
2006/12/20(水) 05:19:04でも一応組みなおしていただけませんか?
正直知識が不足で不安なので・・・すいません。
0661デフォルトの名無しさん
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;}
よく見たら処理が不十分だな
どこが不十分かは自分で考えるように
0662デフォルトの名無しさん
2006/12/20(水) 05:35:420663デフォルトの名無しさん
2006/12/20(水) 05:36:59何度もありがとうございました。本当に助かりました。
0664デフォルトの名無しさん
2006/12/20(水) 06:07:430665デフォルトの名無しさん
2006/12/20(水) 07:16:080666デフォルトの名無しさん
2006/12/20(水) 07:44:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3238.cpp
被積分関数が指定されていなかったので f(x) = √(1 - x^2) を用いた.
s,t 以外が入れられたときは何もしない.
0667デフォルトの名無しさん
2006/12/20(水) 07:57:31>>505解いてあげてよ。俺には無理だ。
0668デフォルトの名無しさん
2006/12/20(水) 08:14:09(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
0669デフォルトの名無しさん
2006/12/20(水) 09:23:41(1)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3241.c
結果のチェックのために分割数が #define N 10 となってるが,20 にしてくれ.
あと,ガウスザイデルは SOR の緩和パラメタを 1 に設定したものなので省略.
(2) は C でやるのは手間なので省略.gnuplot か何かでどうぞ.
0670繭
2006/12/20(水) 10:12:16ストップ機能の部分はどうすれば良いか教えて下さい…
すいません
0671デフォルトの名無しさん
2006/12/20(水) 10:13:10[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日
0672デフォルトの名無しさん
2006/12/20(水) 10:16:03スレ違い
0673t_n
2006/12/20(水) 10:17:45打撃点と目標の高さは同じです。
障害にぶつかった場合に跳ね返ることは考慮しないです。
お願いします。
0674デフォルトの名無しさん
2006/12/20(水) 10:17:57>>422
save_bmp は与えられた関数?
それとも、それも自分で作る?
0675デフォルトの名無しさん
2006/12/20(水) 10:24:03>>1読んで書き直し。
後で付け足しをすることないようにしっかり書いてくれ
0676t_n
2006/12/20(水) 10:25:35すみませんでした。
[1] 授業単元: プログラミング
[2] 問題文:ある打撃点から目標に向かって的狙いを行い、命中させるゲームプログラムを作成せよ。
打撃点から目標までの距離、障害までの距離、障害の幅と高さ、および風速を初期設定条
件とし、ゲームを行う者には、目標までの距離と風速のみが知らされる。打撃点からの玉
の発射角、初速を設定すると、玉到達距離を計算し、目標点との差を表示する。
到達距離は
x=(Vocosθ+W)t=Vxt
y=Votsinθ -gt�A/2=Vgt-4.9t�A
�A=二乗の事です。
障害を越えること、そして、障害を越えたときの打撃距離を計算し、目標との差を表示する
ようにする。障害を越えなければ、障害激突などと表示するようにする。
です。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語:C++
[4] 期限:できるだけ早めでお願いします。
[5] その他の制限:ありません。
0677デフォルトの名無しさん
2006/12/20(水) 10:32:03int width,int heightは何?
0678デフォルトの名無しさん
2006/12/20(水) 10:38:28[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] その他の制限: 特になし
一時間程度しかないのですが、どうかお願いします
0679デフォルトの名無しさん
2006/12/20(水) 10:38:29全然駄目。
ゲームというが、そもそも CUI か GUI かもわからん。
数式があるが、各記号の意味が定義されていない。
障害物も、x 方向に幅のない障害物でよいのか
きちんと形状を考えないといけないかとかもわからん。
0680デフォルトの名無しさん
2006/12/20(水) 10:41:24>>278 のプログラム。278 は付き返されたようだが、
プログラムはその仕様を満たしている。
0681デフォルトの名無しさん
2006/12/20(水) 10:41:55save_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);
}
0682デフォルトの名無しさん
2006/12/20(水) 10:46:10bmpHeader って何よ。
なんかいろいろ足りてないものがありそうなので、
与えられたものを全部まとめてアップローダ池。
他にも、講義ノートをとっていれば該当部をアップしたほうが
無駄なやり取りがなくなってスムースに答えが出ぞ。
0683デフォルトの名無しさん
2006/12/20(水) 10:58:47[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] その他の制限: 特になし
よろしくお願いします。
0684デフォルトの名無しさん
2006/12/20(水) 11:01:570685デフォルトの名無しさん
2006/12/20(水) 11:02:200686デフォルトの名無しさん
2006/12/20(水) 11:05:290687デフォルトの名無しさん
2006/12/20(水) 11:22:41ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3243.txt
0688デフォルトの名無しさん
2006/12/20(水) 11:28:48int widthはビットマップの幅,int heightはビットマップの高さです
0689デフォルトの名無しさん
2006/12/20(水) 11:30:100690デフォルトの名無しさん
2006/12/20(水) 11:30:41[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]特になし
よろしくお願いします。
0691デフォルトの名無しさん
2006/12/20(水) 11:30:510692デフォルトの名無しさん
2006/12/20(水) 11:38:21めちゃめちゃ簡単だがほっとこ。
0693デフォルトの名無しさん
2006/12/20(水) 11:53:42[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] その他の制限: 特になし
0694デフォルトの名無しさん
2006/12/20(水) 12:11:53(3)
ア = (n-r+1)/r
long combi(int n, int r) {
return r==0 ? 1 : combi(n,r-1) * (n-r+1) / r ;
}
0695デフォルトの名無しさん
2006/12/20(水) 12:12:21[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
よろしくお願いします。
0696デフォルトの名無しさん
2006/12/20(水) 12:14:10それは宿題って言わないだろ
0697デフォルトの名無しさん
2006/12/20(水) 12:19:42こんなのでどう?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29004
0698デフォルトの名無しさん
2006/12/20(水) 12:22:590699デフォルトの名無しさん
2006/12/20(水) 12:24:25それは特に効率が良いわけではないような
0700デフォルトの名無しさん
2006/12/20(水) 12:47:30int 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;}}
0701デフォルトの名無しさん
2006/12/20(水) 12:48:55実数って整数だけ?
日本語でおk
0703デフォルトの名無しさん
2006/12/20(水) 13:14:14#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); }
0704デフォルトの名無しさん
2006/12/20(水) 13:19:15#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); }
0705デフォルトの名無しさん
2006/12/20(水) 13:33:590706デフォルトの名無しさん
2006/12/20(水) 13:42:56例には整数しか出てこないし>>697も整数型でやってる。
>>701はそれを疑問に思ったのだろう。
0707697
2006/12/20(水) 13:59:08全部のintをdoubleにして、%dを%fにすれば大丈夫だと思うよ。
それより「効率の良い」のほうを誰か提案してくれ。
0708デフォルトの名無しさん
2006/12/20(水) 14:08:53初心者なんで、効率いいかは分かりませんが
#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;
}
0709デフォルトの名無しさん
2006/12/20(水) 15:08:26O(n log n)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3246.c
0710デフォルトの名無しさん
2006/12/20(水) 15:30:47[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日
0711デフォルトの名無しさん
2006/12/20(水) 15:33:47http://pc8.2ch.net/test/read.cgi/tech/1165718021/166
マルチ
0712デフォルトの名無しさん
2006/12/20(水) 15:43:13>>709 と全く同じ解法だけど,せっかく書いたので.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3248.cpp
0713デフォルトの名無しさん
2006/12/20(水) 15:43:42マルチではないです
0714デフォルトの名無しさん
2006/12/20(水) 16:19:060715デフォルトの名無しさん
2006/12/20(水) 16:29:44http://pc8.2ch.net/test/read.cgi/tech/1165718021/166-167
0716デフォルトの名無しさん
2006/12/20(水) 16:31:010717709
2006/12/20(水) 16:36:05>>712を読んでいたら間抜けな間違いに気づいたので修正。
愚かにも重複のある場合のテストをしていなかった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3249.c
0718デフォルトの名無しさん
2006/12/20(水) 16:42:080719デフォルトの名無しさん
2006/12/20(水) 17:35:22[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日
0720デフォルトの名無しさん
2006/12/20(水) 17:37:06[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] 期限:今週中
0721デフォルトの名無しさん
2006/12/20(水) 17:37:07[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日
クラス中がお手上あげ状態。よろしくおねがいます。
0722デフォルトの名無しさん
2006/12/20(水) 17:38:20[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日
0723デフォルトの名無しさん
2006/12/20(水) 17:48:210724デフォルトの名無しさん
2006/12/20(水) 17:50:01俺はもう絶対解かない事に決めてる。
0725デフォルトの名無しさん
2006/12/20(水) 17:50:280726デフォルトの名無しさん
2006/12/20(水) 17:54:44データは決まっているの?
適当でおk?
0728デフォルトの名無しさん
2006/12/20(水) 18:55:23その配列に格納されたプログラムを呼び出すことによって「HelloWorld!」と
表示させるプログラムを書け。
って言われたんですけど。配列はどう定義すればいいですか?
後呼び出しはどうすればよいですか?
0730デフォルトの名無しさん
2006/12/20(水) 21:25:43まんま回答だが。。。
ttp://d.hatena.ne.jp/shinichiro_h/20061219#1166489566
# さぞ Binary Hacker ぞろいの学校なんだな。でなければそうとうの(ry
0731デフォルトの名無しさん
2006/12/20(水) 21:48:080732デフォルトの名無しさん
2006/12/20(水) 21:52:02>>1
0733デフォルトの名無しさん
2006/12/20(水) 21:57:00"解答" == { 0x89F0, 0x939A }
0734デフォルトの名無しさん
2006/12/20(水) 22:26:08それってバブル整列法じゃ??
0735デフォルトの名無しさん
2006/12/20(水) 23:00:20助かりました。
どうもありがとうございました。
0736デフォルトの名無しさん
2006/12/20(水) 23:43:38バブルソートは
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;}
だ
0737デフォルトの名無しさん
2006/12/21(木) 00:49:370738デフォルトの名無しさん
2006/12/21(木) 01:02:02バブルソートと挿入ソートはインプレースで書くと違いが
わかりづらいけど、非インプレースで書くとわかる。
>>458 がどっちかは悩むところだけど、for の操作が必ず
手前で閉じているあたりで挿入ソートと判断する。
bubbleSort(a) {
while (満足するまで) {
a を改良
}
return a
}
insertSort(a) {
b = [];
for (i = 0; i < n; ++i)
b に a[i] を挿入
return b;
}
0739デフォルトの名無しさん
2006/12/21(木) 01:05:47http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88
概要を理解してからソースを書け。ソースだけで判断しようとせずに。
0740デフォルトの名無しさん
2006/12/21(木) 01:06:01なるほど どうもありがとう
0742デフォルトの名無しさん
2006/12/21(木) 01:26:02[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] その他の制限: 特になし
よろしくお願いします
0743デフォルトの名無しさん
2006/12/21(木) 01:36:32ttp://homepage3.nifty.com/mmgames/c_guide/15-05.html
ttp://www.geocities.jp/ky_webid/c/028.html
0744デフォルトの名無しさん
2006/12/21(木) 01:45:51問題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;}
0745デフォルトの名無しさん
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ヘ行く経路を処理する等)
お願いします
0746デフォルトの名無しさん
2006/12/21(木) 11:23:52おなかへった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3253.txt
0747デフォルトの名無しさん
2006/12/21(木) 11:40:20標準出力に表示するプログラムを記述してください。
これわかりますか??
0748デフォルトの名無しさん
2006/12/21(木) 11:42:322 つめの引数で示されたファイル内から抜き出して表示するプログラムを作ってください。
strlength 関数と strinclude 関数に関しては宣言だけよし。
0749デフォルトの名無しさん
2006/12/21(木) 11:45:240750デフォルトの名無しさん
2006/12/21(木) 11:52:00>>1のテンプレにのっとって書け
0751デフォルトの名無しさん
2006/12/21(木) 11:54:360752デフォルトの名無しさん
2006/12/21(木) 12:02:16[2] 問題文(含コード&リンク):
UNIX の grep コマンドと同様に、1 つめの引数に示された文字列を持つ行を、
2 つめの引数で示されたファイル内から抜き出して表示するプログラムを作ってください。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:
strlength 関数と strinclude 関数に関しては宣言だけよし。
0753デフォルトの名無しさん
2006/12/21(木) 12:06:05>strlength 関数と strinclude 関数
なんですか、その関数?
0754デフォルトの名無しさん
2006/12/21(木) 12:11:26お前みたいな答えられない、答える気がないのにこのスレに来て
他人のソースにいちゃもんをつけるだけの馬鹿がバカって言うなよ?
良いから気に入らない奴をどうこう言うくらいならお前がここへ来るなよ、な?
分かったら回線切って首も(ry
0755デフォルトの名無しさん
2006/12/21(木) 12:15:23まともな質問にはちゃんと答えてますよ?
0756デフォルトの名無しさん
2006/12/21(木) 12:17:39答えられない、答える気がないのにこのスレに来るな
0757デフォルトの名無しさん
2006/12/21(木) 12:20:14そういうレスをいちいちするなよ?答えもしない低レベルなガキがw
黙ってろよ?これ以上レスしてもお前みたいな馬鹿は相手にせぬ
0758デフォルトの名無しさん
2006/12/21(木) 12:22:080759デフォルトの名無しさん
2006/12/21(木) 12:26:51(^ω^) フヒヒwwバカだぉwwバカだぉwwwwwwうぇwwww
0760デフォルトの名無しさん
2006/12/21(木) 12:32:38自分がグダグタほざいてるくせに、他人が同じことすると消えろとか、首も(ry
とか
0761デフォルトの名無しさん
2006/12/21(木) 12:33:420762デフォルトの名無しさん
2006/12/21(木) 12:36:57いつまで待たせやがるんだ
煽り合いは電話でやれ
0763デフォルトの名無しさん
2006/12/21(木) 12:39:31祝日法の定義でいけば6日は平日のはずなんですが・・・
0764デフォルトの名無しさん
2006/12/21(木) 12:42:070765デフォルトの名無しさん
2006/12/21(木) 12:42:27>こないだ
やっぱてめぇか、日本語もロクに理解できない在日朝鮮人
とっとと祖国に帰って核実験の失敗に巻き込まれて消滅しろや
>>763
つ ttp://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
祝日って法律で定められているから
0766デフォルトの名無しさん
2006/12/21(木) 12:45:00おいおい、在日朝鮮人がきいたら怒るぞ。
0767デフォルトの名無しさん
2006/12/21(木) 12:48:39で、5月4日は日曜なんすよ。
4日は祝日ではなく休日扱いのはずなんすよ。
休日が日曜日になってもその振り替えは発生しないと思うんすよ。
と思ったら来年法改正があるじゃねーかーーー!!!
なるほど。5月4日は祝日になるのか。。。
知りませんでした・・・・
0768デフォルトの名無しさん
2006/12/21(木) 12:49:01自分を批判する人間は一人しか居ないと思い込めるのですね
幸せな人だ
0769デフォルトの名無しさん
2006/12/21(木) 12:50:110770デフォルトの名無しさん
2006/12/21(木) 12:52:260771デフォルトの名無しさん
2006/12/21(木) 12:54:49何でここで聞くんだ
スレタイも読めないのかお前は
0772デフォルトの名無しさん
2006/12/21(木) 12:54:500773デフォルトの名無しさん
2006/12/21(木) 13:01:37ものすごく鬱陶しいよ?スルーできないお前も同罪、まとめて失せろ
っつーかこんなスレに来るな
0774デフォルトの名無しさん
2006/12/21(木) 13:08:04つ鏡
0775デフォルトの名無しさん
2006/12/21(木) 13:12:450776デフォルトの名無しさん
2006/12/21(木) 13:14:23for(i=1; i<argc;i++) {
fp=fopen(argv[i],"r");
while((ch=fgetc(fp))!=NULL) putchar(ch);
fclose(fp);}
0777デフォルトの名無しさん
2006/12/21(木) 13:22:28while((ch=fgetc(fp))!=NULL) → while((ch=fgetc(fp))!=EOF)
0778デフォルトの名無しさん
2006/12/21(木) 13:23:27いや、だからいい加減にしろって。お前批判する人間は一人しか居ないと思い込めるのですね
幸せな人だ
0779デフォルトの名無しさん
2006/12/21(木) 13:26:550780迷えるアヒル
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] その他の制限: ポインタは使わない
0781デフォルトの名無しさん
2006/12/21(木) 13:43:091の出力例を書いてくれ
0782デフォルトの名無しさん
2006/12/21(木) 13:49:03VisualBasicの事かああああああ!!
0783デフォルトの名無しさん
2006/12/21(木) 13:49:20#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;
}
0784迷えるアヒル
2006/12/21(木) 13:58:02まだまだ初心者で問題の意味から考えてた始末でしたorz
0785困ってます。
2006/12/21(木) 14:55:01数n を入力し、幅 n で高さ n の以下のような直角三角形を2つ並べて画面に表示するプログラムを書け。
これは n が3の場合の例。 (*は半角のスペースである。)
**S
*SS
SSS
**S
*SS
SSS
0786デフォルトの名無しさん
2006/12/21(木) 14:56:14断る。
0788デフォルトの名無しさん
2006/12/21(木) 15:02:35#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;
}
0789デフォルトの名無しさん
2006/12/21(木) 15:06:48http://pc8.2ch.net/test/read.cgi/tech/1165167516/451
0790デフォルトの名無しさん
2006/12/21(木) 15:10:21このプログラムが何をしているか説明しなさい
という問題なんですが
実行結果が意味不明な数字の羅列でよくわかりません
恐らく数学的な意味だとは思うんですが
良かったら教えて下さい
0791デフォルトの名無しさん
2006/12/21(木) 15:16:350792迷える子羊
2006/12/21(木) 15:20:27[2] 問題文(含コード&リンク):
UNIX の grep コマンドと同様に、1 つめの引数に示された文字列を持つ行を、
2 つめの引数で示されたファイル内から抜き出して表示するプログラムを作ってください。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:
0793初心者@携帯
2006/12/21(木) 15:34:16int 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;
}
0795デフォルトの名無しさん
2006/12/21(木) 15:43:35mainの中の40を小さい数字にすれば分かると思うよ
0796デフォルトの名無しさん
2006/12/21(木) 15:48:35#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)
}
}
汚くしてみた
0797デフォルトの名無しさん
2006/12/21(木) 15:50:28ありがとうございます、やってみます
ちなみに数学的な意味で間違いないでしょうか?
例えば「円の面積を求めるプログラム」という風に具体的に書けますか?
ぶっきらぼうにコレやってこいって渡されたので
課題プログラム間違ってんじゃないかと
オロオロしてまして・・・・
年末でその方には提出日まで会えませんし
0798デフォルトの名無しさん
2006/12/21(木) 15:50:44こっちだな
#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); }
}
0799デフォルトの名無しさん
2006/12/21(木) 15:52:31ぶっちゃけるとプログラミング言語に日本語のような高度な説明力はない
最悪「〜を○回繰り返した値を×に一度記憶して…」みたいなベタな説明でも"説明"になる
「プログラムは思ったとおりに動かない、書いたとおりに動く」ならその一番gdgdな説明でも事足りるんだよ
0800デフォルトの名無しさん
2006/12/21(木) 15:59:09何をするプログラムなのかは一言で言える
どれくらいの説明を求められているかはわからないが、
tとcの関数の意図とmain関数の4つのforループで何をしているかを書ければ問題ないだろう
0801デフォルトの名無しさん
2006/12/21(木) 16:02:570802迷える子羊
2006/12/21(木) 17:03:220803デフォルトの名無しさん
2006/12/21(木) 17:20:54手抜き検索
#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'); }
0804803
2006/12/21(木) 17:25:33ゴメン,やっぱダメだ
"abc"の検索時に"ababcd"を見逃す.
0805デフォルトの名無しさん
2006/12/21(木) 17:43:02ありがとうございます
具体的に明記しなさいという事なので再度質問させて貰いました
40を任意定数としたら
1*2*3*4*5*・・・n!とわかりました
>>801
答えありましたね;
どうもです
0806デフォルトの名無しさん
2006/12/21(木) 17:58:18これで大丈夫かな.まだ問題あるかも
#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'); }
0807デフォルトの名無しさん
2006/12/21(木) 18:13:12[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日
0808デフォルトの名無しさん
2006/12/21(木) 18:32:34その根気強さと粘りと執念深さがあれば今からプログラミング覚えても間に合う
0809デフォルトの名無しさん
2006/12/21(木) 18:44:44普通はそうなんだけど、>>807は人間的に問題があるから・・
0810デフォルトの名無しさん
2006/12/21(木) 20:03:22(^ω^) フヒヒwwクリスマスだぉww正月だぉwwwうぇwwwwもちつきだぉ
0811デフォルトの名無しさん
2006/12/21(木) 20:04:440812デフォルトの名無しさん
2006/12/21(木) 20:07:150813デフォルトの名無しさん
2006/12/21(木) 20:20:17特定しますたフヒヒwwww
0814デフォルトの名無しさん
2006/12/21(木) 20:52:13a/bの結果が1.500000となるにはどのような式を書けばいいのでしょうか?
fortranだとDBLE(a)/DBLE(b)という感じになるのですが。
0815デフォルトの名無しさん
2006/12/21(木) 20:53:280817デフォルトの名無しさん
2006/12/21(木) 20:56:300818デフォルトの名無しさん
2006/12/21(木) 21:16:400819デフォルトの名無しさん
2006/12/21(木) 21:22:490820デフォルトの名無しさん
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] その他の制限:
0821デフォルトの名無しさん
2006/12/21(木) 23:24:09log2.71828(x) とか log2.719(x) っていう風にすれば良いのでしょうか?
0822デフォルトの名無しさん
2006/12/21(木) 23:26:240823デフォルトの名無しさん
2006/12/22(金) 02:17:571. 二分探索木は平衡する必要はある?
2. 具体的な交点を求める必要はある?(あるなら符号付面積は二度手間だが?)
3. 計算量は項点数を k として O( (n+k) log n ) でないと駄目?
4. どれくらい縮退に対して対応する必要がある?
4 を十分対処して 3 を満たさないプログラムは比較的簡単にできる.
3 を満たさせるためには,俺には 4 を相当捨てないと無理.
0824デフォルトの名無しさん
2006/12/22(金) 06:02:31っ strstr
0825デフォルトの名無しさん
2006/12/22(金) 10:49:32[2] 問題文(含コード&リンク):
キーボードから入力されるすべての文字をカウントし、入力が終了したら、
以下の内容を表示してください。
- すべての文字の文字数
- 小文字のアルファベットの文字数
- 大文字のアルファベットの文字数
- 行数
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限:今日中
[5] その他の制限:
0826デフォルトの名無しさん
2006/12/22(金) 10:55:15入力の終了ってEOF?改行?
0827デフォルトの名無しさん
2006/12/22(金) 12:53:18簡単なヒントください><
0828デフォルトの名無しさん
2006/12/22(金) 12:58:210829デフォルトの名無しさん
2006/12/22(金) 13:04:100830デフォルトの名無しさん
2006/12/22(金) 13:06:46もういないかもしれないがスレ違いとか気にする前に>>1を読め
どこのスレでも同じだ
0831デフォルトの名無しさん
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重積分はできました。)
0832デフォルトの名無しさん
2006/12/22(金) 14:10:060833デフォルトの名無しさん
2006/12/22(金) 14:13:480834721
2006/12/22(金) 14:50:181. 二分探索木は平衡する必要はある?
:ないです。
2. 具体的な交点を求める必要はある?(あるなら符号付面積は二度手間だが?)
:最終的には交点の数だけほしいです。(交点を求めないのなら走査線が止まるイベントポイントが得られないかも?)
3. 計算量は項点数を k として O( (n+k) log n ) でないと駄目?
:O( (n+k) log n )ですね。
4. どれくらい縮退に対して対応する必要がある?
:3を満たさせるなら4はお任せします。
お手数おかけします
0835デフォルトの名無しさん
2006/12/22(金) 14:56:08[2] 問題文(含コード&リンク):
実行したファイル名を除いたコマンド ライン引数に、
複数個指定したすべてのファイルの内容を標準出力に
表示するプログラムを記述してください。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日中
0836デフォルトの名無しさん
2006/12/22(金) 15:48:20#include<stdio.h>
int main(int argc, char *argv[]){
while(argc>1){
argc--;
printf("%s\n",argv[argc]);}
return 0;}
0837836
2006/12/22(金) 15:51:220838デフォルトの名無しさん
2006/12/22(金) 16:05:41[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] その他の制限:
0839デフォルトの名無しさん
2006/12/22(金) 16:05:55int 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
0840デフォルトの名無しさん
2006/12/22(金) 16:08:58宿題じゃないけど期限あるってどんな状況?
あと、配列はa[0]〜a[99]じゃないのか?
for(i=0;i<5;i++){
for(j=0;j<20;j++)printf("%lf,",a[i*20+j]);
printf("\n");
}
0841838
2006/12/22(金) 16:28:44配列はa[0]〜a[99]の間違いでした。
プログラムそのものには期限はないのですが卒論の期限がありまして
早めに回答していただけたら・・・という状況です。
0842デフォルトの名無しさん
2006/12/22(金) 16:34:032回もforする必要なくね?
for(i=0;i<100;i++){
fprintf(fp,"%lf",a[i]);
if(!((i+1)%20))fprintf(fp,"\n");
}
0843デフォルトの名無しさん
2006/12/22(金) 16:36:36[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()などは使わず、ループを使うそうです。
0844デフォルトの名無しさん
2006/12/22(金) 16:49:29int 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;}
0845デフォルトの名無しさん
2006/12/22(金) 16:51:03int str_len(char *p)
{
int count=0;
while(*p) {
p++;
count++;
}
return count;
}
0847デフォルトの名無しさん
2006/12/22(金) 17:29:28cでお願いします
0848デフォルトの名無しさん
2006/12/22(金) 17:31:340849デフォルトの名無しさん
2006/12/22(金) 17:34:03y=sekibunn(sekibunn(x));
0850デフォルトの名無しさん
2006/12/22(金) 17:45:38inline bool hantei(int kokugo, int suugaku, int rika)
{ return kokugo >= 60 && (suugaku >= 60 || rika >= 60); }
C99でコンパイルすること!
0852デフォルトの名無しさん
2006/12/22(金) 19:26:130853デフォルトの名無しさん
2006/12/22(金) 19:54:48CかC++限定のスレだから受け付けてない
0854デフォルトの名無しさん
2006/12/22(金) 21:55:33Cで書かれててこれのPAD書けってヤツなんだけど
0855デフォルトの名無しさん
2006/12/22(金) 22:54:48ここはC/C++で書くことが前提のスレだから、残念ながら他を当たってくれ。
0856デフォルトの名無しさん
2006/12/22(金) 23:21:20PADで書かれてて、Cで書けって宿題なら大歓迎だ
0857デフォルトの名無しさん
2006/12/22(金) 23:29:35>>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]);
}
0858デフォルトの名無しさん
2006/12/22(金) 23:50:350859デフォルトの名無しさん
2006/12/22(金) 23:58:16せっかくだから出番の少ない%cに愛の手を
for(i=0;i<100;i++){
fprintf(fp,"%lf%c",a[i],(i+1)%20?',':'\n');
}
0860デフォルトの名無しさん
2006/12/23(土) 00:02:23どっちも比較は2回してるからそう大して違わないんじゃないかと
0861デフォルトの名無しさん
2006/12/23(土) 00:04:18[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)からということになります
期限内に解いていただけたら一番良いのですが期限が過ぎた後でも回答いただければ嬉しいです。よろしくお願いします
0864860
2006/12/23(土) 00:13:11これも違った
ループ2重は106回の比較だった
0865デフォルトの名無しさん
2006/12/23(土) 00:21:13(5+1)+(20+1)*5
0866デフォルトの名無しさん
2006/12/23(土) 00:36:03最初のループの5回分足すの忘れてた
もう寝るわorz
0867デフォルトの名無しさん
2006/12/23(土) 00:47:47クラメルって何?クラメルの公式の事?
掃き出し法とかガウスの消去法は使っちゃだめって事?
0868デフォルトの名無しさん
2006/12/23(土) 01:03:04二分木を平衡させないと O( (n+k) log n ) は達成できないような
0869861
2006/12/23(土) 01:12:12すいませんそうです。(A12) 、(A13)から行列に直してクラメルの公式でってことです
2行2列で簡単なのでクラメルの公式を用いるとのことです
メールが届いてたみたいで課題の指示がありました
(受信メールです)
--------------------------------------------------------------------------
余裕のある人は
。数値計算により初期値を見出す方法を実装する。
。ガウス関数群(Lorenz関数群でも可)が重畳している曲線を非線形最小自乗法
で分離する。数値計算により測定データをつくってから、手で誤差を与え、 それを実測データとみなす。
というチャレンジテーマがありえます。その他を自分で考えてください。
---------------------------------------------------------------------------
とあるので ガウス関数群というのがガウスの消去法のことであればそちらで解いていただいてもかまいませんが
掃き出しを使うならクラメルの公式でって指示がありました
もし高等な解法に慣れていて クラメルに不慣れであれば2元連立1次については↓
http://www.ee.fit.ac.jp/~kudou/1mathA/01/01-2.html がすごくわかりやすかったです
0870デフォルトの名無しさん
2006/12/23(土) 01:19:45ガウス関数群はガウス消去法とは全然別物。
exp(-x^2) の仲間をガウス関数、1/(1 + x^2) の仲間をローレンツ関数という。
上から二つ目の課題は、こいつらの足し合わせで書かれる曲線について
どういうふうに足しあわされてるかを最小自乗で特定せよ、という意味。
0871デフォルトの名無しさん
2006/12/23(土) 01:26:29わかったよー
俺も線形代数の本持ってるから、クラメルの公式については既知。
0872861
2006/12/23(土) 01:36:35ググってきました。
クラメルと両方あれば勉強になってありがたいですが
チャレンジ課題は面倒なことを依頼することになりそうなので お任せ致します!
>>871
超感謝です! よろしくです
0873861
2006/12/23(土) 01:59:04解析値(手計算)では α1 = 0.02114 α2 = 5.612 でした
0874721
2006/12/23(土) 02:20:58バカですみません_| ̄|○
二分木を平衡させないと O( (n+k) log n ) は達成できないのなら、平衡でお願いします。
0875デフォルトの名無しさん
2006/12/23(土) 04:23:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3258.txt
これは課題4の(1)のみです。文の中に「〜をクリアすること」と書いて
ありますが、上書きしているので省略しています。
表の計算や、正規方程式の作成というコメントがついている所の
printf()のコメントを外すと、表と正規方程式の係数が表示できます。
(2)と(3)はプロットする方法がわからないので書いてありませんが、
(1)を適当に変更すればできると思います。(4回で収束してしまうので
繰り返し回数も糞もないと思いますが・・・・)
0876デフォルトの名無しさん
2006/12/23(土) 04:30:27#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
とすれば最小限の変更でC++になるかな。
0877デフォルトの名無しさん
2006/12/23(土) 04:34:56と言われました。どうでも良いですが教えてください。
0878デフォルトの名無しさん
2006/12/23(土) 04:44:01{
return !strcmp(a, b);
}
0879デフォルトの名無しさん
2006/12/23(土) 04:53:22標準ライブラリを使うなという事になると結構難問だ。
0880デフォルトの名無しさん
2006/12/23(土) 05:12:42return (*a==*b) ? ((*a==0 || *b==0) && hoge(a+1,b+1)): 0;
}
こんなん?
(酒入ってだめぽ)
0881デフォルトの名無しさん
2006/12/23(土) 05:15:54int hoge(char *a, char *b){ return (*a==*b) ? ((*a==0 || *b==0) || hoge(a+1,b+1)): 0;}
0882デフォルトの名無しさん
2006/12/23(土) 12:52:36int hoge(char *a, char *b){return (*a=='\0' || *b=='\0')?(*b-*a):hoge(a+1, b+1);}
0883861
2006/12/23(土) 13:51:44その条件は解除されました!
>>875
ありがとうございます! ありがたくいただきますね
途中まで標準ライブラリを使わずにやってみたんですが どうもP'iの値が違っててわからないですね・・・
0884デフォルトの名無しさん
2006/12/23(土) 14:52:37[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
0885デフォルトの名無しさん
2006/12/23(土) 15:04:34#include<stdio.h>
int main(){
char c[11];
printf("Enter : ");
fgets(c,11,stdin);
printf("You entered %s.",c);
return 0;}
レポートは自分でやれ
0886デフォルトの名無しさん
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<ファイル名 といった風に
よろしくお願いします
0887デフォルトの名無しさん
2006/12/23(土) 16:17:37以下のような形で出力してください
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
0888デフォルトの名無しさん
2006/12/23(土) 16:18:34少しずれてますが好意的に解釈して
ください。。すみません
0889デフォルトの名無しさん
2006/12/23(土) 16:35:100890デフォルトの名無しさん
2006/12/23(土) 16:38:510891デフォルトの名無しさん
2006/12/23(土) 16:41:49済まん。元々標準ライブラリの使用もできないという制限があった
ようですね。
しかしpow関数を使えないとなると、log関数を使いたくなるけどそれも
だめで、テーラー展開しかなくなりますが1e-7の誤差に収めるとなると
相当高い次数まで展開しなければいけなくなるし。
本来の計算の意義が失われてしまうかも、ですね。条件が解けて
よかったですね。
0892デフォルトの名無しさん
2006/12/23(土) 17:02:36[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] その他の制限:
よろしくおねがいします。
0893デフォルトの名無しさん
2006/12/23(土) 18:44:45[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] その他の制限: 特になし。よろしくお願いします。
0894デフォルトの名無しさん
2006/12/23(土) 19:13:00ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3260.txt
後は任せた
0895デフォルトの名無しさん
2006/12/23(土) 20:08:09pa(=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がわかりません。おねがいします
0896デフォルトの名無しさん
2006/12/23(土) 20:14:410897デフォルトの名無しさん
2006/12/23(土) 20:22:50得点データX0 X1 X2 X3....XN-1の標準偏差ρは
ρ=√(1/NΣXi^2-μ^2) μは得点の平均です
Σの上はN-1、下はi=0です。
0898デフォルトの名無しさん
2006/12/23(土) 21:30:35ρ=√(1/NΣ(Xi-μ)^2)
0899デフォルトの名無しさん
2006/12/23(土) 22:09:36ってことです。。
0900デフォルトの名無しさん
2006/12/23(土) 22:15:30一般に通用する標準偏差の定義と違うから >>897 で用語を定義してるってことでおk?
0901デフォルトの名無しさん
2006/12/23(土) 22:17:480902デフォルトの名無しさん
2006/12/23(土) 22:32:520903デフォルトの名無しさん
2006/12/23(土) 22:33:49あなたの中の標準偏差で結構です
0904デフォルトの名無しさん
2006/12/23(土) 22:43:40実装を丸投げするにも
設計の段階で混入したバグは勝手に排除されないということを
学んでもらおうではないか?
0905デフォルトの名無しさん
2006/12/23(土) 23:03:410906デフォルトの名無しさん
2006/12/23(土) 23:09:01ρ=√((1/NΣ(Xi^2))-(μ^2)) μは得点の平均
括弧をどういうふうにつけるかによるね
0907デフォルトの名無しさん
2006/12/23(土) 23:11:39そりゃあるんじゃない?
0908デフォルトの名無しさん
2006/12/23(土) 23:14:58質問するときは、どうして使わない方法があるかを知りたいのか理由も書き添えるといいと思うよ
普通にあると思うけど。
0909886
2006/12/23(土) 23:35:40標準偏差を確実に定義しないとプログラミングは不可ですか?
0910デフォルトの名無しさん
2006/12/23(土) 23:48:01当たり前だろ。
何を作って欲しいのか分からずに出来てくるとでも?
0911デフォルトの名無しさん
2006/12/24(日) 00:30:58書きなおし途中で挫けたけど、このままでもおk。
標準偏差は世間一般で使われている定義のものを採用した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3262.c
0912デフォルトの名無しさん
2006/12/24(日) 00:31:01mapを講義で使ってなかったので
使ってはいけないようです
よろしければ、使わない方向でどなたか教えていただけませんか?
0913デフォルトの名無しさん
2006/12/24(日) 00:38:03そんなことないです
改めて実感したってコトです
0914デフォルトの名無しさん
2006/12/24(日) 00:52:07>>908ではないが。実は前スレの元のコード書いたの俺なんだわ。
map使わない版書いたぞ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3263.txt
性能はもとより大分悪いだろうけど、宿題だし、どうでもいいよなw
0915デフォルトの名無しさん
2006/12/24(日) 01:22:29どうもありがとう
>>886
他にもあったらお願いします
0916デフォルトの名無しさん
2006/12/24(日) 01:46:37test.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3267.txt
test.h
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3268.txt
これじゃダメ?
0917デフォルトの名無しさん
2006/12/24(日) 04:01:070918デフォルトの名無しさん
2006/12/24(日) 05:43:00struct 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を入れること
0919デフォルトの名無しさん
2006/12/24(日) 06:26:440920918
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;
を昇順で並び替えてあります。
0921デフォルトの名無しさん
2006/12/24(日) 07:45:43問題の概要が掴みきらない。
time.at(i) と data.at(i) は対応してるのか?
time は double だけど strat, end は int。 さて、どう格納する?いや、それ以前にstrat→startだろ。
min と max は、指定時間範囲における data の値?
「timeは途中がない場合や初めがない場合」後者はワカランでもないが、前者はワケワカラン。1個でもデータがあれば max = min = そのデータ じゃないの?
0922918
2006/12/24(日) 08:39:30そうです
それなら初めから構造体にすればいいというのは、なしで。
この状態から少ない処理(早いスピード)でするのが目的なので
そして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となります
0923デフォルトの名無しさん
2006/12/24(日) 09:59:29それだと [min,max) じゃなくて [min,max] ってことになるけどいいの?
0924923
2006/12/24(日) 10:52:24s/max/end/g
だったorz
0925デフォルトの名無しさん
2006/12/24(日) 11:08:330926デフォルトの名無しさん
2006/12/24(日) 11:12:540927デフォルトの名無しさん
2006/12/24(日) 11:15:31数学的に細かい話は抜きにして
[...)だと以上〜未満の区間
[...]だと以上〜以下の区間
()は範囲に含まないけど[]は範囲に含む
0928デフォルトの名無しさん
2006/12/24(日) 11:18:00中学校で習うレベルだと思ったが
0929デフォルトの名無しさん
2006/12/24(日) 11:18:56とか言い出しそうな勢いだな。
0930デフォルトの名無しさん
2006/12/24(日) 11:31:200931デフォルトの名無しさん
2006/12/24(日) 11:45:070932デフォルトの名無しさん
2006/12/24(日) 11:49:500933デフォルトの名無しさん
2006/12/24(日) 12:18:290934デフォルトの名無しさん
2006/12/24(日) 12:23:360935デフォルトの名無しさん
2006/12/24(日) 12:44:340936デフォルトの名無しさん
2006/12/24(日) 12:46:330937デフォルトの名無しさん
2006/12/24(日) 12:48:150938お願いします
2006/12/24(日) 13:25:39[2] 問題文(含コード&リンク):
キーボードから入力されるすべての文字をカウントし、入力が終了したら、
以下の内容を表示してください。
- すべての文字の文字数
- 小文字のアルファベットの文字数
- 大文字のアルファベットの文字数
- 行数
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 今日中
[5] その他の制限:
入力終了を示すEOFは先頭で入力する。このEOFのみの行は行数に含めません。
0939デフォルトの名無しさん
2006/12/24(日) 13:48:52これの意味がわからない。
0940お願いします
2006/12/24(日) 13:53:42すいません。
0941デフォルトの名無しさん
2006/12/24(日) 14:12:23#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++;}}}
よくわかんなかったから、先頭で改行した場合入力終了にしてみた
0942デフォルトの名無しさん
2006/12/24(日) 14:16:24初期値はn=1に変更して 何も入力せず改行したとき変な動作に orz
0943お願いします
2006/12/24(日) 14:24:300944デフォルトの名無しさん
2006/12/24(日) 14:26:590945デフォルトの名無しさん
2006/12/24(日) 14:28:59全角が入力された場合はどうすればいいんだとか悩んでる所なんだけど
convert 関数ってなに?
0946861
2006/12/24(日) 14:42:37課題4は>>875さんが解いていただいたのを使わせていただきます
恐縮ですが流れてるみたいなのでもう一度お知らせしました
よろしくです
0947デフォルトの名無しさん
2006/12/24(日) 14:46:54だれもやってくれなかったからといって文句言うな!
お前は最低だ!
で、816の3ってなに?
0948デフォルトの名無しさん
2006/12/24(日) 14:54:16もう回答はありませんか?
0949デフォルトの名無しさん
2006/12/24(日) 14:59:310950デフォルトの名無しさん
2006/12/24(日) 15:02:37すいません>>861の間違いです
ずっとやってるのですが途中で値がおかしなことになってできません・・・
課題3はこちら
http://kjm.kir.jp/pc/index.php?p=27015.jpg
問題文一式はzipでこちらです
http://www.uploda.org/uporg626661.zip.html
受信パス:kadai
0951デフォルトの名無しさん
2006/12/24(日) 15:18:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3271.txt
こういう事でしょうか。つまり、与えられたpと、計算で求めたa1とa2を
使って近似した場合の差を出力するという題意のように思えます。
誤差は±5e-5程度程度で、この誤差をhの関数としてプロットすると
いう意味だと思います。
0952デフォルトの名無しさん
2006/12/24(日) 15:33:18>こういう事でしょうか。つまり、与えられたpと、計算で求めたa1とa2を
>使って近似した場合の差を出力するという題意のように思えます。
題意もやっていただきたいこともその通りです
というか、きちんと読むと課題4の2)、3)以外はすべて
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3271.txt
で解決されてるみたいでしたね。すいません
プロットっていうのはLinuxでgnu(?)コマンドか何かでしたかね・・?
とりあえず後は自分でやってみます
お騒がせしましてすいません、ありがとうございました!
0953デフォルトの名無しさん
2006/12/24(日) 15:39:03>>951の
/* 係数と実際のpとの差を調べる */
って所で、入力値とフィッティング値の差も出力していますので、これと
pとフィッティング値と差をプロットすれば(3)の課題は解けた事になるはず。
0954デフォルトの名無しさん
2006/12/24(日) 15:50:08学べるとか
0955デフォルトの名無しさん
2006/12/24(日) 15:53:25詳しく説明までしていただいてありがとうございます!
0956デフォルトの名無しさん
2006/12/24(日) 15:54:44この部分は以前にうpしたソースには無かったと思うよ。
さっき付け加えたんだから。
0958デフォルトの名無しさん
2006/12/24(日) 21:27:080959デフォルトの名無しさん
2006/12/24(日) 21:30:19すまん。三日くらいやってみたが、どうにも縮退に対処しきれなかった。
0960デフォルトの名無しさん
2006/12/24(日) 21:32:46えっへん
どうだぼくってすごいだろ
けらいになるならうつさせてやってもいいよ
0961721
2006/12/24(日) 22:02:34いえ、ありがとうございました。
よければでいいのですが、未完のもアップしていただけないでしょうか?
今夜いっぱい頑張ってみたいので。
0962デフォルトの名無しさん
2006/12/24(日) 22:51:50[2] 問題文(含コード&リンク):整数型の配列 a[10] に,キーボードから10個のデータを入力し,その10個のデータの偶数と奇数の個数を調べるプログラムを作成し提出しなさい.
なお,10個のデータをすべて入力し終わってから,偶数と奇数の個数を調べること.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年12月28日21:00まで
[5] その他の制限:配列まで習いました。
未熟者ですがどうか救いの手を差し伸べてください。
0963デフォルトの名無しさん
2006/12/24(日) 22:52:07[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:27日まで
0964デフォルトの名無しさん
2006/12/24(日) 23:15:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3273.c
できてないこと:
・本当は insert したときにそれと隣接する木上の要素だけ見れば
よいはずだが,同一点で複数個交わる場合の処理を書ききれなかったので
全部調べた.これにより計算量は O( (n+l) log n ) である.ただし l は
平面走査線に乗る線分の個数の上界.
・上の対処により交差イベントを処理する必要が無くなっており,
交点を求めるルーチンは不要であるが,最初にどうせ交点が必要に
なるだろうと思って書いた交差判定ルーチンを使いまわしているので
「交差を符号付き面積で判定している」とはいえない.
0965デフォルトの名無しさん
2006/12/24(日) 23:17:31http://pc8.2ch.net/test/read.cgi/tech/1166969820/
0966デフォルトの名無しさん
2006/12/24(日) 23:18:24乙
0967デフォルトの名無しさん
2006/12/24(日) 23:20:03#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;
}
0969デフォルトの名無しさん
2006/12/25(月) 03:20:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3274.c
tab使って書いたんだけど、各行の説明文がバラバラになっちゃったんで
必要なら自分で訂正しといて。2は面倒くさいんでやってないっす。
あと、srandを使うためのstdlib.hがないから追加しといたっす。
0970デフォルトの名無しさん
2006/12/25(月) 03:52:15>xを100で割った値をxに代入
割った余りを書き忘れてた
0972デフォルトの名無しさん
2006/12/25(月) 10:08:18問題を次のように読解したんだけど正しい?
time[i] のときの値を data[i] とする。
時間の範囲 [a,b] と時間区切り T を与えたとき、
各細区間 [ a + k T, a + (k+1) T ] において
最初に定義されている time[x], 最後に定義されている time[y],
その区間内の min data[z], max data[w] を計算せよ。
0973デフォルトの名無しさん
2006/12/25(月) 10:24:27[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
0974デフォルトの名無しさん
2006/12/25(月) 10:42:130975デフォルトの名無しさん
2006/12/25(月) 10:53:250976デフォルトの名無しさん
2006/12/25(月) 11:06:280977デフォルトの名無しさん
2006/12/25(月) 11:51:41ありがとうございます。
実行してみたのですが、include ファイルを開けません。'test.h': No such file or directory
と出ました。どこを修正したらよいでしょうか?何度もすみません。
0978デフォルトの名無しさん
2006/12/25(月) 11:59:253268.txt を test.h として保存したか?
0979デフォルトの名無しさん
2006/12/25(月) 12:47:49ありがとうございます
stdlib.hは習ってないし問題文にもありませんでした
0980デフォルトの名無しさん
2006/12/25(月) 13:02:20習ってないから…ってお前は小中学生か
0981デフォルトの名無しさん
2006/12/25(月) 13:11:59でも問題文に無いものを追加するのはまずいんじゃないか?
0982デフォルトの名無しさん
2006/12/25(月) 13:20:26問題文が間違ってる場合はいいんじゃね?
0983デフォルトの名無しさん
2006/12/25(月) 15:10:35stdlib.hを入れなきゃsrand()入れてるとエラーメッセージが出るはずだが・・・
ちゃんとコンパイルできたん?
0984デフォルトの名無しさん
2006/12/25(月) 15:16:03ttp://www.geocities.jp/ky_webid/c/041.html
あとな、符号なしで宣言したものにscanfを使う場合
%u を使うらしいぞ。どこの誰が出した課題だね?
ずいぶんと知識の浅い講師がやっているとしか思えん・・・
0985デフォルトの名無しさん
2006/12/25(月) 15:18:33[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 二つの複素数を読み込み、その和、差、積、商を計算して表示するプログラムを作れ。
複素数には構造体を自分で定義して用いること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: C
0986デフォルトの名無しさん
2006/12/25(月) 16:23:48#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;}
0987デフォルトの名無しさん
2006/12/25(月) 17:32:06Cなら無くてもコンパイルできるはずだが。
0988デフォルトの名無しさん
2006/12/25(月) 17:32:17ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3279.txt
0989デフォルトの名無しさん
2006/12/25(月) 18:30:41計算結果をポインタで渡してるのにtempって必要なの?
0990デフォルトの名無しさん
2006/12/25(月) 18:41:06#subtractionかdifferなら判るが。
0991デフォルトの名無しさん
2006/12/25(月) 18:48:07そのまま提出して、もし教官ここチェックしてたらあぼーん
という高度な釣りですね
0992デフォルトの名無しさん
2006/12/25(月) 19:29:590993デフォルトの名無しさん
2006/12/25(月) 19:32:28いいんじゃないか
0994デフォルトの名無しさん
2006/12/25(月) 20:41:03[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;
}
0995デフォルトの名無しさん
2006/12/25(月) 20:46:400996デフォルトの名無しさん
2006/12/25(月) 20:47:31知るかボケ
>>標準ライブラリは使ってはいけない
オマエが使ってるのは何なんかと
0997デフォルトの名無しさん
2006/12/25(月) 20:48:35テンプレのコピペに切れるのは斬新だな
0998デフォルトの名無しさん
2006/12/25(月) 21:04:35for(int i=1; i<=10; i++){
if (abs(n - i) < 1){
cout << n <<" "<< a << endl;
}
}
}
1000デフォルトの名無しさん
2006/12/25(月) 21:12:2310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。