C/C++の宿題片付けま ..
39:デフォルトの名無しさん
09/05/21 16:18:31
【質問テンプレ】
[1] 授業単元:Cの基礎
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 一週間
[5] その他の制限: while文かdo-while文を使い、なるべく簡単にお願いします。
40:デフォルトの名無しさん
09/05/21 16:35:59
>>39
#include<stdio.h>
#include<math.h>
int main(void)
{
double si_1, si, x;
printf("実数 x : ");
scanf("%lf", &x);
si_1=1;
do
{
si=si_1;
si_1=(si+x/si)/2;
}
while(fabs(si_1-si)>=0.00001);
printf("sqrt(%f)=%f\n", x, si);
return 0;
}
41:デフォルトの名無しさん
09/05/21 16:38:20
>23
#include <stdio.h>
int main()
{
double sum = 0.0;
double e = 0.00001;
int x = 1;
double a;
while (1) {
a = 1.0 / x; sum += a;
if (a < e) break;
x *= 3;
}
printf("%.15lf\n", sum);
return 0;
}
42:デフォルトの名無しさん
09/05/21 17:35:01
>>38
Create Read Update Delete
43:デフォルトの名無しさん
09/05/21 19:41:13
よろしくお願いします。
授業単元アルゴリズム実習
osソラリス
言語 c
コンパイラ gcc
高さhが2で上底aと下底bが次のような値の台形4つの合計を求めるプログラムをfor文を使って作成せよ。
表示形式
台形(1)a=0、b=2^2、h=2、面積=
台形(2)a=2^2、b=4^2、h=2 面積=
台形(3)a=4^2、b=6^2、h=2 ,面積=
台形(4)a=6^2、b=8^2 h=2 面積=
4つの台形の面積の合計=
44:デフォルトの名無しさん
09/05/21 19:47:27
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:cc
[3.3] 言語:C
[4] 期限:[2009年5月22日19:00まで]
[5] その他の制限:問題文と共に記述してあります.
45:デフォルトの名無しさん
09/05/21 19:53:23
>>43
>>10 >>12 >>13
46:デフォルトの名無しさん
09/05/21 20:06:44
>>43
#include <stdio.h>
int main(void)
{
int i, temp, s = 0;
for(i=0; i<4; i++) {
temp = 4 * i * i + 4 * (i+1) * (i+1);
printf("台形(%d)a=%d%s,b=%d^2,h=2,面積=%d\n", i+1, i*2, i?"^2":"", 2*(i+1), temp);
s += temp;
}
printf("4つの台形の面積の合計=%d", s);
return 0;
}
47:デフォルトの名無しさん
09/05/21 20:29:37
>>45
わかってます。今度のは二乗の計算をしなくてはいけないので。。。
48:デフォルトの名無しさん
09/05/21 20:44:01
表示が違うだけで計算内容は同じだけどな。
49:デフォルトの名無しさん
09/05/21 20:49:13
マルチになってしまいますが、後になってこちらのスレの存在に気付いたので
再び質問させていただきます。
以下のコードの流れについて知りたのですがよく分かりません。
行ごとに簡単に解説してくれると助かります。よろしくお願いします。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
Animations:nil context:nil];
[UIView setAnimationDuration:0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:selfcache:YES];
if ( enabled )
[[UIApplication sharedApplication] sendAction:@selector(buttonPushed:)
to:target from:self forEvent:event];
[UIView commitAnimations];
50:デフォルトの名無しさん
09/05/21 20:53:59
>>46さんありがとうございます。
51:デフォルトの名無しさん
09/05/21 20:58:39
>>49
Objective-Cはスレ違い
52:デフォルトの名無しさん
09/05/21 21:09:19
>>51
確かにそうなのですが、マイナーなので他に聞く場所がありません。
ここなら分かる方もいるのではないかと思い質問させていただきました。
53:デフォルトの名無しさん
09/05/21 21:17:21
>>52
お引き取り下さい
54:デフォルトの名無しさん
09/05/21 21:24:27
>>52
Objective-C [ObjC part:4];
スレリンク(tech板)l50
スレ立てるまでもない質問はここで 97刷
スレリンク(tech板)l50
55:デフォルトの名無しさん
09/05/21 21:27:07
せめて適当なうpローダーにきちんとインデントを付けたコードをうp
してくれればObjective-C/C++でもある程度は答えてくれる奴が
居そうな感じだが読みにくいコードベタ張りは論外。基本的には
専用スレがありそこが過疎ってなければそちらのほうで聞くのが無難
56:デフォルトの名無しさん
09/05/21 21:58:11
>>23をお願いします。
57:デフォルトの名無しさん
09/05/21 21:59:17
BCDライブラリ書かないと誤差がすごくて・・・
58:デフォルトの名無しさん
09/05/21 22:04:49
>>56
>>41
59:デフォルトの名無しさん
09/05/21 22:13:31
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
(1)キーボードから2整数を読み込んで読み込んだ順に標準出力にそれらの
値の10進数表現をスペース文字で区切って、1行に書き出し改行する。
読み込んだ1番目の整数の値が1000でなければ、次の2整数を読み込み
同様に書き出す。1番目の値が1000のときプログラムの実行を終了する。
このような仕様を満たすプログラムを作成せよ。(do-whileループで作成)
(2)キーボードから3整数を読み込み、小さい順に出力するようなプログラム
を作成せよ。(目的が達成されればどのようなプログラムでも構わない。)
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5月22日 13:00まで
[5] (2)はなるべく簡単なものでお願いいたします。できたら数パターン
教えてくだされば幸いです。
60:デフォルトの名無しさん
09/05/21 22:23:49
>>22 (・∀・)ニヤァ〜
61:デフォルトの名無しさん
09/05/21 22:39:40
>>59
(2)
#include <stdio.h>
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if(a < b) {
if(c < a) printf("%d %d %d", c, a, b);
else {
if(b < c) printf("%d %d %d", a, b, c);
else printf("%d %d %d", a, c, b);
}}
else {
if(c < b) printf("%d %d %d", c, b, a);
else {
if(c < a) printf("%d %d %d", b, c, a);
else printf("%d %d %d", b, a, c);
}}
return 0;
}
62:この板でいいの?
09/05/21 22:39:58
プログラミングは全くの初心者(CもJavaもなにも分からない)です。
質問があります。
ある資格試験の自動学習ソフト(将来的には自動学習ホームページ)を
作りたいと思っています。
そのための資料は既にあります。
A4で300頁程度で表、図もあります。
これを、
(1)順々に質問文をユーザに見せてから、回答ボタンをクリックすると答画面を示すモード
(2)樹系図的に内容を表示するモード
(3)画面の印刷を行うモード
を有して学習するソフトを作りたいのですが、どうしたらよいでしょうか?
とりあえず、試行的にテキストを貼り付けるだけで、質問画面と回答画面を表示できるソフトを
簡単に作れるようなものはないでしょうか?
ソフトを作れる人に作成を依頼するとどのくらい費用はかかるでしょうか?
よろしくお願いします。
63: ◆1xScF1fQr2
09/05/21 22:51:13
[1] 授業単元:C言語応用
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:2009年05月25日まで。
[5] その他の制限:階乗(n!)の計算とべき乗(xn)の計算には、再帰処理を使用する。
よろしくお願いします。
64:デフォルトの名無しさん
09/05/21 23:08:33
>>62
HTML+JavaScriptが一番簡単そう。
そしてもしそうするならスレ違い。
65:123to
09/05/21 23:10:53
はじめたばかりです
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
課題
0〜100の範囲で画面から入力された複数の数値の中で、最大値と最小値を
表示するプログラムを作成する。
○ソフトウェア構成要求
最大値と最小値はmain関数以外の一つの関数の中で求める(サブルーチン化する)。
○動作要求仕様
-1が入力された場合は入力の終わりとする。
入力された数値を記憶する配列の要素数は10とし、
10個まで入力された場合は-1を入力されなくても最大値と最小値を出力する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限: 2009年5月25日12:00まで
[5] その他の制限:できるだけ簡単なもの
66:デフォルトの名無しさん
09/05/21 23:12:35
>>63
もしかして、その課題の後に自由課題ある?
67:デフォルトの名無しさん
09/05/21 23:17:52
>>62
有料なら考えてもいいが?
問題はどうやって連絡を取るかなんだが。
68:デフォルトの名無しさん
09/05/21 23:20:25
>>63
>>63
#include <stdio.h>
#include <math.h>
#define PI 3.14159
double power(double x, long int n);
double sine(double x);
long int kaijou(long int n);
int main(void){
double sinx,sinf,x=0.0,dif;
printf("+-------------------------------------+\n");
printf("| x | sine(x) | sin(x) | dif |\n");
printf("+-------------------------------------+\n");
do{
sinx=sine(x);
sinf=sin(x);
dif=sinx-sinf;
printf("| %.4lf | % .4lf | % .4lf | %.4lf |\n",x,sinx,sin(x),dif);
x+=PI/8;
}while(x<2*PI);
printf("+-------------------------------------+\n");
}
69:デフォルトの名無しさん
09/05/21 23:21:12
long int kaijyou(long int n){ //再帰処理
if(n==0){
return 1.0;
}
else{
return n*kaijyou(n-1); //再帰処理実行
}
}
double sine(double x){
long int i, n=5;
double ans=0.0;
for(i=0;i<n;++i){
ans+=power(-1,i)*power(x,2*i+1)/kaijyou(2*i+1);
}
return ans;
}
70:デフォルトの名無しさん
09/05/21 23:22:15
dif=sinx-sinf;
printf("| %.4lf | % .4lf | % .4lf | %.4lf |\n",x,sinx,sin(x),dif);
x+=PI/8;
}while(x<2*PI);
printf("+-------------------------------------+\n");
}
long int kaijyou(long int n){ //再帰処理
if(n==0){
return 1.0;
}
else{
return n*kaijyou(n-1); //再帰処理実行
}
}
71:デフォルトの名無しさん
09/05/21 23:23:11
double sine(double x){
long int i, n=5;
double ans=0.0;
for(i=0;i<n;++i){
ans+=power(-1,i)*power(x,2*i+1)/kaijyou(2*i+1);
}
return ans;
}
double power(double x, long int n){ //再帰処理
if(n==0){
return 1.0;
}
else{
return power(x,n-1)*x; //再帰処理実行
}
}
72:デフォルトの名無しさん
09/05/21 23:24:20
度数表示がないからやり直し
73:デフォルトの名無しさん
09/05/21 23:27:13
ごめん、微妙に作ったのと違った。
74:デフォルトの名無しさん
09/05/21 23:28:59
>>63
#include <stdio.h>
#include <math.h>
int fac(int i) { return i == 1 ? 1 : i * fac(i-1); }
double mypow(double x, int n) { return n == 0 ? 1 : x * mypow(x, n-1); }
double sine(double x)
{
int i, flg = 1;
double ret = 0;
for(i=0; i<5; i++, flg *= -1) ret += mypow(x, i*2+1) / fac(i*2+1) * flg;
return ret;
}
int main(void)
{
int i;
puts("+----------+----------+----------+----------+----------+");
puts("|x(degree) |x(radian) | sine(x) | sin(x) | dif |");
puts("+----------+----------+----------+----------+----------+");
for(i=0; i<=360; i+=15) {
double r = i * M_PI / 180;
double s1 = sine(r), s2 = sin(r);
printf("|%-10d|%8.4f |%8.4f |%8.4f |%8.4f |\n", i, r, s1, s2, fabs(s1-s2));
}
puts("+----------+----------+----------+----------+----------+");
return 0;
}
75:デフォルトの名無しさん
09/05/21 23:31:41
>>43
// gcc --input-charset=cp932 --exec-charset=cp932
#include <stdio.h>
int main() {
int i;
float daikei[][3] = {
0,2,2,
2,4,2,
4,6,2,
6,8,2,
}, menseki, goukei = 0.0;
for(i=0; i<sizeof(daikei)/sizeof(daikei[0]); i++) {
menseki = (daikei[i][0]*daikei[i][0] + daikei[i][1]*daikei[i][1]) * daikei[i][2] / 2.0f;
goukei += menseki;
printf("(%d)a=%.0f^2 b=%.0f^2 h=%.0f 面積=%.0f\n",
i, daikei[i][0], daikei[i][1], daikei[i][2], menseki);
}
printf("合計面積=%.0f", goukei);
return 0;
}
76:デフォルトの名無しさん
09/05/21 23:40:32
>>59です。
>>61さん、ありがとうございます。
77:デフォルトの名無しさん
09/05/21 23:41:30
>>63
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ついでに自由課題も。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
中部大学工学部情報工学科の岡崎明彦教授の講義ね。ぐぐったらすぐ出てきた。
78:デフォルトの名無しさん
09/05/21 23:46:59
>>63へ
>>68->>71は19年度の同じような課題で教授が殆ど作ったやつ。
79:デフォルトの名無しさん
09/05/21 23:50:24
>>77
ほんとだC言語応用 マクローリン展開でみつかった。
意外と簡単に見付かるんだね。
80:79
09/05/21 23:58:13
でも年代が違う問題が出てくるんやね。
81:デフォルトの名無しさん
09/05/22 00:00:12
スレチだが
マクローリン展開って2radぐらいまでならそんなに誤差無いんだな
意外だった
82:デフォルトの名無しさん
09/05/22 00:09:13
膜ろりン展開
83:デフォルトの名無しさん
09/05/22 00:10:09
>>79
「sinxの近似値を5項程度によるマクローリン展開で求める関数」でぐぐったら
2つめに今年のが出てきた
84:デフォルトの名無しさん
09/05/22 00:13:21
>>81
浮動小数点は積み残し誤差があるから計算して出たそれぞれの
項をソートして小さい方から順に足した方が誤差が少ないぞ
やってみ
85:デフォルトの名無しさん
09/05/22 00:16:01
そんな手間かけるならsin(x)使うわ
欲しいのは高速動作だ
86:デフォルトの名無しさん
09/05/22 00:19:28
いやそりゃそうだが
x86FPUにもFSINあるしな
ここは宿題スレだからマクローリン展開をコンピューターに
やらせてみましょうって事なんじゃない?
87:デフォルトの名無しさん
09/05/22 00:26:38
>>63は>>74と>>77どっちを使うんだろうね。
自分としては>>77の方が分かりやすいけど。
88:デフォルトの名無しさん
09/05/22 02:37:41
>>62
お手軽にするならゲームツクール系でいいと思う
89:デフォルトの名無しさん
09/05/22 02:53:17
>>87
メイン関数のループが迂遠な感じだな、77のは。
90:デフォルトの名無しさん
09/05/22 03:02:10
>>65 >できるだけ簡単なもの <それなりに>
#include <stdio.h>
void max_min(int *data, int num, int *max, int *min){
int lmax = 0, lmin = 100;
for(num--; num >= 0; num--) {
if(data[num] > lmax) lmax = data[num];
if(data[num] < lmin) lmin = data[num];
}
*max = lmax;
*min = lmin;
}
int main() {
int i, max, min, data[10];
for(i=0; i<10; i++) {
printf("%d:",i+1);
if(scanf("%d", &data[i]) != 1) {
scanf("%*s"); i--; continue;
}
if(data[i] == -1) break;
if(data[i] < 0 || data[i] > 100) i--;
}
max_min(data, i, &max, &min);
printf("max=%d min=%d\n", max, min);
return 0;
}
91:kenco
09/05/22 03:06:33
[1] 授業単元:数値計算法
[2] 問題文(含コード&リンク):非線型方程式 f(x)=x^n-a=0 を考える。nは学生番号の下一桁の数字に2を加えたもの。aは誕生日の西暦の下2桁とする。
f(x)=0の実数解の近似値xを以下の条件を満足させる精度でニュートン法を用いて求めよ。
|f(x)-0|<1.0*10^(-8)
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: C-Compiler
[3.3] 言語: どちらでも可
[4] 期限: 23日まで
[5] その他の制限: なるべく簡単なもので作ってください。
92:デフォルトの名無しさん
09/05/22 03:30:54
>>44
URLリンク(kansai2channeler.hp.infoseek.co.jp)
93:デフォルトの名無しさん
09/05/22 04:21:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
行列A={{0,1,2},{3,4,5},{6,7,8}}
行列B={{100,200,300},{400,500,600},{700,800,900}}
のとき、A+Bを表示するプログラムを作れ
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:visual studio
[3.3] 言語:C++
[4] 期限: 5月25日
[5] その他の制限: 初心者に分かりやすいようにお願いします
94:デフォルトの名無しさん
09/05/22 04:59:18
>>91
#define N (8.0 + 2.0)
#define A 82.0
#define EPS 1e-08
#define LIMIT 50 /* 計算打ち切り回数 */
#include <stdio.h>
#include <math.h>
double f(double x)
{
return pow(x, N) - A;
}
double g(double x)
{
return N * pow(x, N - 1.0);
}
int main(void)
{
double x = 1.0, dx;
int i;
for (i = 0; i < LIMIT; i++) {
dx = x;
x -= f(x) / g(x);
if (fabs(x - dx) < fabs(dx) * EPS) {
printf("解 = %.8f\n", x);
break;
}
}
if (i == LIMIT)
printf("収束しませんでした\n");
return 0;
}
95:デフォルトの名無しさん
09/05/22 05:22:17
>>93
URLリンク(kansai2channeler.hp.infoseek.co.jp)
96:44
09/05/22 10:16:33
>>92
ありがとうございます。
97:デフォルトの名無しさん
09/05/22 14:46:03
[1] 授業単元:C言語プログラミング
[2] 問題文:10以上の種類の品物(果物など)を、その数が多い順にソートするプログラムを
「バブルソート」を用いて作成せよ。
ソート結果の表示にはどの品物が何個かも表示させること。
品物の種類・個数は任意とするが、なるべくばらけさせること。
品物が同じ個数だった場合の順番は特に指定しない。
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] 言語:C
[4] 期限:2009/5/25まで
[5] その他の制限:特に無し
98:デフォルトの名無しさん
09/05/22 16:04:42
>>97
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define numberof(s) (sizeof(s) / sizeof(s[0]))
typedef struct { char *name; int number;} ITEM;
ITEM item[] = {
{"めんたい味", 0},{"コーンポタージュ味", 0},{"なっとう味", 0},{"チーズ味", 0},{"テリヤキバーガー味", 0},
{"サラミ味", 0},{"やさいサラダ味", 0},{"チキンカレー味", 0},{"とんかつソース味", 0},{"エビマヨネーズ味", 0},
{"たこ焼味", 0},{"チョコレート味", 0},{"キャラメル味", 0},{"ココア味", 0},{"ぶたキムチ味", 0},{"牛タン塩味", 0}
};
int main()
{
int i, j;
srand(time(NULL));
for (i = 0; i < numberof(item); i++) {
item[i].number = (int)((rand() / ((double)RAND_MAX+1.0f)) * 99) + 1; printf("%s, %d\n",item[i].name,item[i].number);}
printf("---------------------------------------------------\n");
for (i = 0; i < numberof(item) - 1; i++) {
for (j = numberof(item) - 1; j > i; j--) {
if (item[j].number > item[j - 1].number) {ITEM tmp = item[j]; item[j] = item[j - 1]; item[j - 1] = tmp;}
}
}
for (i = 0; i < numberof(item); i++) printf("%s, %d\n",item[i].name,item[i].number);
return 0;
}
99:デフォルトの名無しさん
09/05/22 17:57:00
>>98
うまい棒?
100:デフォルトの名無しさん
09/05/22 19:30:11
10種類以上の果物名、思い付かん
101:デフォルトの名無しさん
09/05/22 19:35:54
>>100
リンゴの品種名だけでおk
102:デフォルトの名無しさん
09/05/22 20:12:26
アルプス乙女,ぐんま名月,ゴールデンデリシャス,シナノスイート,ジョナゴールド,
ジョナゴールド,つがる,デリシャス,ふじ,旭,王林,紅玉,国光,秋映,祝,
世界一,千秋,北斗,陽光,陸奥
20種類、ごく一部を除いて、どんなリンゴかはわからないw
103:デフォルトの名無しさん
09/05/22 20:32:15
ジョナゴールドが2個あるんすけど。
104:デフォルトの名無しさん
09/05/22 21:00:02
>ジョナゴールドが2個あるんすけど。
見逃した。済まない。
ー1 +7
さんさ,高嶺,スターキングデリシャス,ハックナイン,新世界,藤牧,シナノレッド
105:デフォルトの名無しさん
09/05/22 21:27:11
クイックソートなんですが
106:デフォルトの名無しさん
09/05/22 21:30:45
>>105
は?
107:デフォルトの名無しさん
09/05/22 21:36:31
>>105
依頼はバブルソートとあるが、
>>98はクイックソートなのか?
108:デフォルトの名無しさん
09/05/22 21:37:18
ご参考に
URLリンク(www.bohyoh.com)
109:デフォルトの名無しさん
09/05/22 22:25:48
>>98はバブルソートじゃないか
何を寝ぼけた事を言ってんの?
110:デフォルトの名無しさん
09/05/22 23:06:33
[1] 授業単元:
ヒューマンインターフェースとプログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Visual C++ 2008 Express Edition
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5/25
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
なし
よろしくおねがいします。具体的にあげられてる修正ポイントだけでもかまいません。
111:デフォルトの名無しさん
09/05/22 23:15:47
猫でもわかるキー入力www
112:デフォルトの名無しさん
09/05/22 23:20:32
>>110
気づいた一点だけ。
そこまでコンソールのgetsにこだわる必要は無いと思う。
たとえばトリガーキーを押すとモードメニューに入って、モードを選んで、開始。
そんな感じにならないかねぇ。
MYGETSがちょっと不細工に感じるのはまちがってるかなぁ。。。
あとプロポーショナルフォントを使うのは筋違いだと思う。
こんなとこかな。
113:デフォルトの名無しさん
09/05/23 00:03:44
MyGetsに入る前にその前の入力メッセージは棄てなあかんね。
WM_DESTROYでfpのnullチェックしてないので、モードに入る前に終了すると例外。
WM_QUITを受け取ったGetMessageは0を返すので、MyGetsはTRUEを返し、再びメッセージ待機(Windowがないので終われない)。
基本的に待機するような処理は別スレッドに作るべき。
また待機スレッドのSleepは本物のSleepではなくEventをWaitし、終了要求などではそのEventをシグナル状態にする。
じゃないとSleepが完了するまで終われなくなる。
114:113
09/05/23 00:08:34
>MyGetsに入る前にその前の入力メッセージは棄てなあかんね。
ちょっと書き方おかしかったかも。要は反応待ちに入る以前のキー押下は棄てないかんってこと。
115:デフォルトの名無しさん
09/05/23 00:24:38
[1] 授業単元:
[2] 問題文
今テキストファイルAが1つとBが10個あるとする。
Aには
haru
natsu
aki
fuyu
とかかれ
Bにはそれぞれのテキストに以下のような文字列がかかれている
wheiowfjhoiejwio2121oij3io12ji2oj3io2j3oijo
iouaiojoiajwioejio121j3oi1j2iojlajia
これらをまとめ
テキストCに
aki[tab]wheiowfjhoiejwio2121oij3io12ji2oj3io2j3oijo[改行]
natsu[tab]iouaiojoiajwioejio121j3oi1j2iojlajia[改行]
になるようなプログラムをかけ
ただし。Bのそれぞれのテキストは非常に長くても大丈夫にせよ。
[3] 環境 [3.1] OS:linux
[3.2] gcc
[3.3 C
[4] 期限: 5/23
116:デフォルトの名無しさん
09/05/23 00:27:50
>>115
問題文が意味不明
まとめ方のルールを明確にしないと誰も解けないよ
117:デフォルトの名無しさん
09/05/23 00:46:41
テキストCに
haru\tBのテキスト1つ目の中身\n
natsu\tBのテキスト2つ目の中身\n
aki\tBのテキスト3つ目の中身\n
のように書き込んでほしいのですが。
Bのテキストが非常に長いんです。1テキストファイル20kバイトくらいでして
118:デフォルトの名無しさん
09/05/23 00:55:31
>>117
Bのテキストファイルが10個ある、と言うことなら、B01〜B10ってしていいかい?
Aのテキスト1行目と、B01の全体をタブで繋いで1行にし、Cに出力。
Aのテキスト2行目と、B02の全体をタブで繋いで1行にし、Cに追記。
これをB10まで繰り返す。これであってる?
119:デフォルトの名無しさん
09/05/23 00:59:32
要はBの1行がバッファサイズをオーバーするくらい長いってことじゃん?
120:デフォルトの名無しさん
09/05/23 01:02:08
テキストのサイズはそれほど重要ではないよ。
要は、何をして欲しいかを明確にする事。
121:デフォルトの名無しさん
09/05/23 01:05:28
>>115
後、期限が今日なら、締切時間も書いておいた方が良いかな。
122:デフォルトの名無しさん
09/05/23 01:12:37
>>117
だ〜か〜ら〜、〜のようにっていう表現は問題文にならないって。
テキストAとやらには4行しかないのにテキストBとやらは延べ10行あるんだろ?
5行目以降はどう纏めるんだい?
123:デフォルトの名無しさん
09/05/23 01:16:31
>>110
精度を上げるには「timeBeginPeriod〜timeEndPeriod」や「QueryPerformanceCounter」を使う手がある。
ビジーループにしてGetAsyncKeyStateでキー状態を検知すればメッセージ処理のオーバーヘッドは避けられると思う。
スレッドの優先度を上げるという方法もあるといえばある。
124:デフォルトの名無しさん
09/05/23 01:18:33
>>118
そうです。
Bのテキストは長いんですけど1行です。
一番最後に改行がはいるだけです。
125:デフォルトの名無しさん
09/05/23 01:25:41
>>124
ファイル名は適当に決めておいていいかい?
>>122の指摘する危惧だけど、Aには10行データがある前提でいいかい?
126:デフォルトの名無しさん
09/05/23 01:45:56
Aには4行としまして
Bは1行に10行分くらい文字列がならんでるとおもってください。
で、Bは4ファイルあるとすればちょうどいいかと。
127:デフォルトの名無しさん
09/05/23 01:53:11
>>126
なんというか、まあ、久しぶりに絶句させてもらったよ。
課題が出されたんだよな?
それを一字一句変えずに、「全部」書けよ。
お前の頭の中ではちょうどいいかも知れんが、
お前が今までのやり取りではっきりさせたのは
ファイルAとやらが4行あるってことだけだぞ?
128:デフォルトの名無しさん
09/05/23 01:55:02
なんか杜撰な課題だな。ちゃんと投げられないだけか?
129:デフォルトの名無しさん
09/05/23 01:56:48
Bのテキストファイルが普通にコピーできないほどの長さだから
説明しにくい。
130:デフォルトの名無しさん
09/05/23 01:58:53
Bの長さはどうとにでもなってさっきから言ってるんだからから、
そこを無視して説明しろよ氏ね。
131:デフォルトの名無しさん
09/05/23 01:59:10
20KBで?
132:デフォルトの名無しさん
09/05/23 02:03:59
>>129
は?お前の説明は要らない。
課題をそのまま書き出せよ。
あとな、1行の長さなんてどうだって良いんだよ。
「一行の長さは不定です」
「あ、っそ」
で済むことなんだよ。
重要なのは、
「プログラムの実行前にどんなデータがあって」
「プログラムの実行後にどんなデータがあるか」
ってことなんだよ。
ファイルAには>>115にあるように4行分のデータがある。
これは分かった。
んでファイルBってのはなんだよ?
133:デフォルトの名無しさん
09/05/23 02:12:12
1行にコピーできないくらいの長さの文字列がある
134:デフォルトの名無しさん
09/05/23 02:12:46
ダメだこりゃ
135:デフォルトの名無しさん
09/05/23 02:17:53
何だ、Bは4つになったのかw
>>126
1行に10行分文字列があるって意味がわからんが。
2000文字位あると勝手に理解するけどいいね。
ソースをコンパイルして実行する環境はあるのか?
136:132
09/05/23 02:19:24
>>134
俺は>>133は>>115でないって信じたいw
>>133
とりあえず、問題を明らかにしようか。
ファイルBは何個か存在する。
だからここでは後ろに番号をつけるとする。
例えば、ファイルBが3つある場合、
ファイルBのそれぞれをB1,B2,B3としよう。
そして、ファイルBの行番号をアンダースコアの後に数字をつけることで表そう。
例えばB1の1行目はB1_1、2行目はB1_2となる。
ついでにファイルAの一行目はA_1と表すようにしよう。
んで、ここからが本題。
ファイルCを作るにあたって、
A_1と同じ行になるファイルBの行は何か?選択肢から選べ
選択肢1:
A_1 B1_1
A_1 B2_1
A_1 B3_1
・・・
A_1 Bi_1
選択肢2:
A_1 B1_1
A_1 B1_2
A_1 B1_3
・・・
A_1 B1_j
選択肢3:上二つは違います。
137:デフォルトの名無しさん
09/05/23 02:20:33
ツンデレだねぇ。なんか後出しがあると思うけど
138:デフォルトの名無しさん
09/05/23 02:26:57
>>115
今の内に課題の条件をキチンと説明しておかないと
誰かが早とちりしてプログラムを書いてしまって後出しで
条件を付けても誰も相手にしてくれないかもしれんぞ
今までそういう事が何回もあった
後出し条件というのは相当嫌われる
139:デフォルトの名無しさん
09/05/23 02:28:31
Bはこういうファイルです
URLリンク(kansai2channeler.hp.infoseek.co.jp)
140:デフォルトの名無しさん
09/05/23 02:30:44
短いファイルでこれくらいです
これが60kバイトくらいです
最大で778kバイトくらいまで
141:デフォルトの名無しさん
09/05/23 02:34:18
>>140
だ〜か〜ら、長さはどうだっていい。
ファイルBは全部でいくつある?
ファイルB全ては1行しかないんだな?
142:デフォルトの名無しさん
09/05/23 02:34:52
そうです。
143:デフォルトの名無しさん
09/05/23 02:36:16
2行目にも答えろよwwwwwwww
144:デフォルトの名無しさん
09/05/23 02:37:17
っていうか、正確に言うとAの行数とBのファイル数は一致してるのか?
一致してるなら可変か固定か?
固定なら何個だ?
145:デフォルトの名無しさん
09/05/23 02:38:15
すいませんけど
>>124 >>126
146:デフォルトの名無しさん
09/05/23 02:40:17
これって釣りだよね?
と、思いたい。割と本気で。
147:デフォルトの名無しさん
09/05/23 02:40:56
もういいわ
148:デフォルトの名無しさん
09/05/23 02:43:13
>>139
Bが10個あると書いてあるのになんで一つだけなんだ?
10個ともまとめて貼れよ
Aはわかったらか
149:デフォルトの名無しさん
09/05/23 02:49:14
エスパーするとAの行数4つでBのファイル数が4つ。
Bは全て1行(改行一つ)だが、>>115主観で言うと通常の1行の10倍あるよ。
まぁ、エスパーするだけして違ってたらイヤだから手はつけんが。
150:デフォルトの名無しさん
09/05/23 02:52:37
>>145
これを試してみてくれ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ファイル名は"A","B01"〜"B04","C"としているが、適切な名前にするか、
実行時に対象ファイルをその名前にしてくれ。
で、要求とどう違うか書いてくれ。
151:デフォルトの名無しさん
09/05/23 02:57:17
すいません。Bを最後読み込み表示してAの単語をいれてを4回まわしたらいいだけでしたね
152:デフォルトの名無しさん
09/05/23 02:59:48
>>151
落ち着いて、相手に分かる言葉で頼む。
153:デフォルトの名無しさん
09/05/23 03:04:06
>>115
1つだけ聞かせてくれ。
これは、学校の講義で宿題として出されたものなのか?
自分がこういうことをやりたいだけなのか?
154:デフォルトの名無しさん
09/05/23 03:04:28
Aの単語表示\tBのファイルの全ての文字を読み込んで表示
を4回繰り返してテキストにとる
155:デフォルトの名無しさん
09/05/23 03:07:07
つまりBは10個あると書いてあるけど一個しかないんだね
156:デフォルトの名無しさん
09/05/23 03:14:53
>>145
もうあれだ、system関数でシェルスクリプト呼んじゃえ。
cat B0[1-4] | paste A - > C
でお望みのものができるから。
157:デフォルトの名無しさん
09/05/23 04:03:23
>>75さんありがとうございます。
158:デフォルトの名無しさん
09/05/23 04:06:05
>>95 ありがとうございました
この問題もわからないので教えてください
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
(1)[0,1]の一様乱数x,yを発生させるプログラムを作れ
(2)[0,1]の一様乱数x,yを発生させ、x^2+y^2<1となる確立を求めろ
(一様乱数を発生させる試行を繰り返し、(上式を満たす回数)/(試行回数)から確立を求める)
またπの数値を求めろ
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:visual studio
[3.3] 言語:C++
[4] 期限: 5月25日
宜しくお願いします
159:デフォルトの名無しさん
09/05/23 08:37:50
>>158
URLリンク(kansai2channeler.hp.infoseek.co.jp)
標準関数std::rand()はやや性能が悪いため
コンピュータ・アルゴリズム事典(奥村晴彦著)より乱数の改良を
行うようにした
160:デフォルトの名無しさん
09/05/23 12:02:48
>>059 (1) 提出期限過ぎてるけど、2整数か?の突っ込みは無しで。
#include <stdio.h>
int main() {
int n, c;
printf("2進数を1つ以上入力してください:最後は1000\n");
do {
for(n = 0; ;) {
c = getchar();
if (c == '0' || c == '1') {
n <<= 1;
n |= (c == '1') ? 1 : 0; /* 1/0 を入力 */
} else if (c == EOF)
return 1;
else
break;
}
printf("%d ", n);
if(c == '\n') puts("");
} while(n != 0x8); /* 1000 (binary) */
return 0;
}
161:デフォルトの名無しさん
09/05/23 12:13:32
問題を誤読してる気がする。
162:デフォルトの名無しさん
09/05/23 12:19:46
[1] 授業単元: 情報リテラシー
[2] 問題文: 10から110までの乱数を100個作り、
同時ににアスキーコードで文字に変換して小文字だけを大文字にせよ
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: 富士通
[3.3] 言語:C言語
[4] 期限:[2009年05月26日h:16:30まで]
[5] その他の制限: アスキーコードやら何やら今一良く分かりません。
よろしくお願いします。
163:デフォルトの名無しさん
09/05/23 12:44:55
>>162 珍しいコンパイラwww
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main(void)
{
int i, x;
int max=110, min=10;
for(i=0;i<100;i++)
{
x=rand()%(max-min+1)+min;
if(islower(x)) x=toupper(x);
printf("%c", x);
}
return 0;
}
164:デフォルトの名無しさん
09/05/23 12:53:40
京大?
165:デフォルトの名無しさん
09/05/23 13:00:49
Faithless C compiler とか
>>163
種蒔かんで良いのか?
166:110
09/05/23 13:05:38
>>112
>>113
>>123
アドバイスありがとうございます。
課題中で具体的に示されてある修正点だけでいいので、どなたかプログラムを修正してもらえないでしょうか?
提出期限は明後日なのですが、実際にプログラムを動かして色々と考察を書かないといけないので・・
よろしくお願いしますm( _ _)m
167:デフォルトの名無しさん
09/05/23 13:20:58
後だしでなく必ず勝つ。
x=rand()/(RAND_MAX+1.0)*(max-min+1)+min;
168:デフォルトの名無しさん
09/05/23 17:07:20
>>151
// Usage: my_paste a1 b1 b2 b3 b4 ... > c1
// a: 行数はb(max)行 bの数と一致しない場合は途中まで処理する。
// b: 行数は1行のみ。改行で終わる。サイズは大きくても良い。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
FILE *inA, *inB, *outC = stdout;
char bufA[80]; // ファイルA読込用(1行を読込めるサイズが必要)
char bufB[256]; // ファイルB読込用(複数回に分けて読み込むので適当で良い)
int i, readsize;
if(argc < 3) return -1;
inA = fopen(argv[1], "r");
if (inA == NULL) { fprintf(stderr, "Can't open %s\n", argv[1]); exit(1); }
for (i = 0; i < argc-2; i++) {
inB = fopen(argv[i+2], "r");
if (inB == NULL) { fprintf(stderr, "Can't open %s\n", argv[i+2]); break; }
// Aを1行読込み、改行を取り除き、末尾にTabをつけてCに出力
if(fgets(bufA, sizeof(bufA), inA) == NULL) { fclose(inB); break; }
bufA[strlen(bufA) - 1] = 0;
fprintf(outC, "%s\t", bufA);
// Bをバッファサイズ単位で読込み、Cに追記する(必要な回数繰返す)
while ((readsize = fread(bufB, 1, sizeof(bufB), inB)) > 0) {
fwrite(bufB, 1, readsize, outC);
}
fclose(inB);
}
fclose(inA);
return 0;
}
169:デフォルトの名無しさん
09/05/23 17:18:34
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々) linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[5] その他の制限
問題文のプログラムはls -aslを実行するプログラムである。これを参考にオプション -a -F -l -dを引数とした場合に
lsコマンドと同じ動作をするようなプログラムmylsを作れ。
・statシステムコールではなくlstatシステムコールを用いる
・オプションは-aといった引数に続けて指定、-aFl、-laといった複数オプションにも順不同に対応
・myls - aといった場合にはUsageを表示する
・UID、GIDは数字のままでいい
オプション指定にgetopt関数を使って
while((option = getopt(argc, argv, "aFld")) != -1){
switch (option){
case...
って書こうとしてるんだけど、case 'a':を書こうとした時に下にあるvoid関数のどの部分で
ls -aと同じ動作をしているのかが分からない。どなたかお願いします。
170:デフォルトの名無しさん
09/05/23 17:40:37
>>169 Part125_994
URLリンク(kansai2channeler.hp.infoseek.co.jp)
171:162
09/05/23 17:48:45
>>163
ありがとうございます。
172:デフォルトの名無しさん
09/05/23 18:58:19
1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:visual studio
[3.3] 言語:C++
[4] 期限: 5月25日
[5] その他の制限:条件の判定にif(1.0!=(1.0+e))のようなif文を用いる
eはεのこと
よろしくお願いします。
173:デフォルトの名無しさん
09/05/23 19:13:25
[1]授業単元:アルゴリズム
[2]問題文(含コード&リンク)
問7-6
12x12のセルを持つ迷路がある。
スタートからゴールまでの最短経路を探したい。
(1)フローチャートを書け。
(2)実際に最短経路を調べ、表示するプログラムを書け。
ヒント
迷路は二次元配列で出来ている。
スタートやゴールのセル、壁のセルは最初は分からないようになっている。
手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。
[3]:環境
[3.1]OS:XPsp2
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:5月26日8:00
[5]その他の制限:ソースコードにはしっかりコメントを記述すること、と言われました。
また迷路を生成するプログラムは無くても良いそうです。
C言語に関しては配列を学んだ所までです。(構造体やポインタはまだやってません。)
最悪フローチャートだけでも構いません。よろしくお願いします。
174:デフォルトの名無しさん
09/05/23 19:19:43
迷路探査は、ネット調べればソースごとあるぞ。
175:デフォルトの名無しさん
09/05/23 19:20:11
>>172 Part125_146
#include <stdio.h>
#include <float.h>
#include <math.h>
int main() {
double e1, e2;
unsigned int n;
e1 = 1.0;
printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON);
for(n=1; n<4294967295u; n++) {
e2 = e1 / 10.0;
if(1.0 == (1.0 + e2)) break;
e1 = e2;
}
printf("%.15e %d\n", e1, n-1);
}
176:173
09/05/23 19:35:12
>>174
言葉足らずで申し訳ありません……
迷路探索のソースはいくつか探すことが出来たのですが、
更に最短経路を探すものが見つからなくて今回お願いしました……
177:デフォルトの名無しさん
09/05/23 19:45:01
>>176
普通の迷路なら経路はただ一つなんじゃない?
経路が複数あるって、巡回路の最適解を求めるような問題?
178:173
09/05/23 19:57:20
>>177
上手く言えませんが壁の配置によっては経路が複数あります
袋小路とかも含めて総当たりで経路を調べる、のだとしたら巡回路の問題なのかもしれません
すみません、あまりよくわかってません……
179:デフォルトの名無しさん
09/05/23 20:01:59
>>173
再起関数で、深さをカウントしていって、144段(縦*横)以上になったら打ち切れば良いよ。
で手数をへらして検索。
180:デフォルトの名無しさん
09/05/23 20:48:53
>>173
最短経路が必要な場合は、2DRPGの最短移動アルゴリズムを使えばいいよ。
12x12の配列Aをワークとして用意する。型はintでいいや。
Aはすべて-1で初期化しておく。
まずスタート地点の決定。これは総当たりだから省略。
現在の探索深度を示すワーク int depth を用意して0に初期化する。
さて探索だけど、
1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。
2.Aを全探索して、値がdepthになっているものがあれば、
その上下左右(斜めも移動できるなら斜めも)に移動可能かどうかを
調べる。移動可能で、かつその位置に対応するAが-1なら、その位置に
depth+1を書き込む。
移動可能な位置がゴールなら終了。4へ。
3.A全体を操作し終わるまで調べて、ひとつもdepthがなければ終了。ゴールには到達できない。
1つでもdepthがあれば、++depthして、2を繰り返す。
4.ここからが最短経路探索。
まずゴールには到達しているから、ゴールのdepthは分かってる。
そこから 上下左右のAの値が depth-1 になっている位置が最短経路。
複数ある場合の処理は好きなようにすればいいが、今回は単純に最初に
みつかった場所へ移動すればいいだろう。
5.これを繰り返してスタートに到達するまで続ける。なおスタートには必ず到達できる。
181:デフォルトの名無しさん
09/05/23 20:51:41
>>180
すまん
×1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。
○1.スタート地点に対応するAに0を代入する。
182:デフォルトの名無しさん
09/05/23 20:55:26
ちなみに医学部の卒業研究見学したけど、怖かった。
犬を生きたまま仰向けで四肢を固定し、毛を剃って電気メスで腹を切る。
肋骨をノコギリで切って、心臓にいろいろな電気信号を与えて生体の反応を調べる。
もちろん全身麻酔はしてるけど、生体の反応を損ねないようにギリギリの量にしてるから、ピクピク動いてた。
183:デフォルトの名無しさん
09/05/23 21:12:16
>>179
>>173
>手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。
を満たせなくね?
184:デフォルトの名無しさん
09/05/23 21:21:39
スタート地点も探索で見つけないといけない?
予め指定がないと、何処から始めたら良いものやら。
185:デフォルトの名無しさん
09/05/23 21:34:53
多分出題者が間違ってるんだろうが、バックトレースじゃなくてバックトラックだろうな。
186:デフォルトの名無しさん
09/05/23 21:35:20
流石にスタート地点は総当たりじゃないかなあ
そうでなかったらうーん
187:デフォルトの名無しさん
09/05/23 21:53:30
>>173
やってみた
基本的に >>180 の内容
URLリンク(kansai2channeler.hp.infoseek.co.jp)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5316日前に更新/150 KB
担当:undef