08/10/23 22:53:58
ここってGUIも受け付けてもらえますか?
625:デフォルトの名無しさん
08/10/23 22:56:54
受け付けてもらえます
626:611
08/10/23 22:57:38
>>622
ありがとうございます。
講義内でも問題文に書かれた以上のことは言われなかったのですが、簡略版で大丈夫です。
とりあえず、「力まかせの探索」でなければ大丈夫とのことでした。
627:デフォルトの名無しさん
08/10/23 22:58:21
[1] 授業単元: 信号解析
[2] 問題文(含コード&リンク):
一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル
Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、
τdx/dt = -dV/dx + ξ(t)
< ξ(t)ξ(t') > = A * б (t - t')
< ξ(t) > = 0 …①
で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル
V (x; t) は、時間と共に周期的にその形を変える:
V(x,t) = Vo(x) - f(t)x
= -1/2*ax^2 + 1/4*bx^4 - hxcos(wt)
で与えられる。
a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。
t = 0 において、玉はx = 10 にあるとする。
τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。
①式を時間発展させて、玉の位置と周期的な外力f(t)に比例する量である10cos(ωt)をグラフに表せ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年10月24日23:59まで
[5] その他の制限: 特になし
よろしくお願いします
628:デフォルトの名無しさん
08/10/23 23:00:13
>>624
では書きます。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ファイルを開く・保存のコモンダイアログを使い、選択されたファイルをテキストに書き出すプログラムを作れ。
ファイルは複数選択される場合もある。
express版の場合、外部のリソースエディタは用いてかまわない。
出力されるファイル
test.bmp
data.wav
data2.wav
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual studio 2008
[3.3] 言語: C or C++
[4] 期限: 2008年10月26日
[5] その他の制限
629:デフォルトの名無しさん
08/10/23 23:02:11
>>627 問題文修正しました
[1] 授業単元: 信号解析
[2] 問題文(含コード&リンク):
一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル
Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、
τdx/dt = -dV/dx + ξ(t)
< ξ(t)ξ(t') > = Aб(t - t')
< ξ(t) > = 0 …①
で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル
V (x; t) は、時間と共に周期的にその形を変える:
V(x,t) = Vo(x) - f(t)x
= -1/2*ax^2 + 1/4*bx^4 - hxcos(wt)
で与えられる。
a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。
t = 0 において、玉はx = 10 にあるとする。
τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。
①式を時間発展させて、玉の位置と周期的な外力 f(t) に比例する量である 10cos(ωt) をグラフに表せ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年10月24日23:59まで
[5] その他の制限: 特になし
よろしくお願いします
630:デフォルトの名無しさん
08/10/23 23:03:31
この分野では、Sunday のアルゴリズムが究極では?
表 : 実行結果
: 時間 (秒) : 比較回数
-------------------------------
力任せ : 0.133 : 149,938
BM 法 : 0.046 : 30,168
BMH 法 : 0.041 : 29,728
quick : 0.033 : 25,094
URLリンク(www.geocities.jp)
631:デフォルトの名無しさん
08/10/24 00:41:06
名前を変えるほど改良されてる訳でもない気がしないでもない
632:デフォルトの名無しさん
08/10/24 01:09:30
Quick Search algorithm URLリンク(www-igm.univ-mlv.fr)
The C code
void preQsBc(char *x, int m, int qsBc[]) {
int i;
for (i = 0; i < ASIZE; ++i)
qsBc[i] = m + 1;
for (i = 0; i < m; ++i)
qsBc[x[i]] = m - i;
}
void QS(char *x, int m, char *y, int n) {
int j, qsBc[ASIZE];
/* Preprocessing */
preQsBc(x, m, qsBc);
/* Searching */
j = 0;
while (j <= n - m) {
if (memcmp(x, y + j, m) == 0)
OUTPUT(j);
j += qsBc[y[j + m]]; /* shift */
}
}
633:デフォルトの名無しさん
08/10/24 01:11:48
[1] 授業単元:C
[2] 問題文: (1)1~50までの整数の中から異なるいくつかをえらんび、
掛け合わせても一の位が0にならないようにする。選ぶことができる整数は40個。
上の文をプログラムで出力せよ。
(2)1~50までの全てを掛け合わせると末尾の0を数えるプログラムを書け。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 10月24日8:00
[5] その他の制限:特になし
(1)は2の倍数、5の倍数が少なくとも1個ずつ入ったときにだけ1の位が0になる
ので2の倍数と5の倍数が同居しないように計算します。
634:デフォルトの名無しさん
08/10/24 02:25:39
>>633
(2)
#include <stdio.h>
int main(void)
{
int i, c1 = 0, c2 = 0;
for(i=1; i<=50; i++) {
int temp = i;
for(; !(temp%2); c1++) temp /= 2;
for(; !(temp%5); c2++) temp /= 5;
}
printf("%d", c1 < c2 ? c1 : c2);
return 0;
}
635:デフォルトの名無しさん
08/10/24 02:55:22
>>634
あたまいいなあ
636:デフォルトの名無しさん
08/10/24 03:09:59
(2)は50を5^nで割った商を足してけばいいと思う
int cnt=0,t;
for(t=5;50/t;t*=5){
cnt+=50/t;
}
printf("%d\n",cnt);
637:デフォルトの名無しさん
08/10/24 03:12:31
理由は素因数として2より5の方が少ないから。
数字を並べてみて1~50までに因数の5がいくつあるか数えるには?
638:デフォルトの名無しさん
08/10/24 03:36:40
理由はもっともだが>>636にはハテナがたくさんだ
639:デフォルトの名無しさん
08/10/24 04:41:46
>>623
期限は10月24日(金)の11:00でした。
書き間違えてすみません。
よろしくお願いします。
640:639
08/10/24 06:35:26
期限はアメリカ東海岸時間(EST)の10月24日(金)の11:00です
日本時間だと10月25日の11:00になります。
再再度訂正すみません
641:デフォルトの名無しさん
08/10/24 06:43:17
すいません、C/C++以外の課題を聞けるスレってあります?
642:デフォルトの名無しさん
08/10/24 06:59:49
[1] 授業単元: C
[2] 問題文:
2つの固有値から2×2の行列を求めるプログラムを作りなさい。
固有値は整数のみとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2]コンパイラ名とバージョン:Visual studio
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:特になし
643:デフォルトの名無しさん
08/10/24 11:03:10
620をお願いします
644:デフォルトの名無しさん
08/10/24 11:44:17
[1] 授業単元:C言語 (ポインタ)
[2] 問題文(含コード&リンク):出力例のように キーボードから0~9 の数字d と,正の整数n を読み込み,n 以下の整数x で,
x とx の2 乗の10 進数表示の両方にd を含むものをすべて出力するプログラムをつくりなさい。
ただし,次のプロトタイプ宣言で示すように,整数x とd を仮引数として,
x とx の2 乗の10 進数表示の両方にd を含む場合に1,そうでない場合に0 を返す
関数hit_digit を作成しなさい。
int hit_digit(int x, int d);
▼出力例
0~9 の数字d を入力して下さい:7
正の整数n を入力して下さい:100
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:08年10月25日24:00まで
[5] その他の制限:C言語の基本的な関数のみでお願いします。
645:デフォルトの名無しさん
08/10/24 12:04:13
>>639
和訳くらいしたらどうなの・・・
646:602
08/10/24 12:33:22
>>612
回答ありがとうございます!
助かりました。
647:デフォルトの名無しさん
08/10/24 12:41:56
>>644
#include <stdio.h>
int hit_digit(int x,int d);
int main(void) {
int d,n,x;
printf("0~9 の数字d を入力して下さい:");
scanf("%d",&d);
printf("正の整数n を入力して下さい:");
scanf("%d",&n);
for(x=0;x<=n;x++) if(hit_digit(x,d)) printf("%d\n",x);
return 0;
}
int hit_digit(int x,int d) {
int y,z;
y=x;
z=x*x;
for(;y;y/=10) if(y%10==d) for(;z;z/=10) if(z%10==d) return 1;
return 0;
}
648:デフォルトの名無しさん
08/10/24 13:34:34
>>591
レス返信遅くなりました。
最大値というよりは極大値という感じですね。
飛び抜けて大きな値ってのは (平均値+5*ρ) 以上の値のことを指し示すのですが
ρってのが平均値の標準偏差です(たぶん)。
グラフで飛び出した点を求めたら、並べ替えなくていいそうです。
てかコンパイル通したら、peak.txtが出力されませんでした。今、プログラム解読中です(汗)
649:デフォルトの名無しさん
08/10/24 14:39:57
[1] 授業単元: C言語
[2] 問題文:縦軸「|」横軸「-」グラフ「*」
を使って±√xのグラフを書け
[3] 環境
[3.1] OS:mac
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: 10月26日
[5] その他の制限: 基本的な関数のみでお願いします
650:デフォルトの名無しさん
08/10/24 15:36:43
>>649
#include <stdio.h>
int main()
{
int x, y;
for (y = -4; y < 5; y++)
{
putchar('|');
for (x = 0; x < y * y; x++)
{
putchar(' ');
}
putchar('*');
putchar('\n');
}
return 0;
}
651:デフォルトの名無しさん
08/10/24 15:37:15
横軸忘れた
652:デフォルトの名無しさん
08/10/24 16:05:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
トランプを切る方法の1つとして、トランプを2つにわけて両手でぱらぱらと切る方法がある。
今、トランプは、ジョーカーを除いた52枚とする。もし、切り方のうまい人がいて、トランプ
を正しく半分(26枚)にして、かつ交互に1枚ずつ切れるとする。
この方法では、何回か行うと元に戻ることが知られている。さて、何回で元に戻るでしょうか。
これを計算するプログラムを作成してください。
与えられたヒント
52個の要素をもつ配列P,Qを用意します。最初は、Pi←i+1(i=0,2,3,…,51)とデータをセットします。
そして、Q2i←Pi(i=0,1,2,…,25)およびQ 2(i-26)+1←Pi(i=26,27,…,51)を行う。もし、Qの要素が
1,2,3,…,52になっていたら終了であるが、そうでなければ、P←Qを行い、同じ手順を繰り返す。
[3] 環境
[3.1] OS: Windows (cygwin使用)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 10月27日18:00時まで
[5] その他の制限: for文かwhile文でお願いします
653:デフォルトの名無しさん
08/10/24 16:27:02
株式会社損害保険ジャパン
スレリンク(saku2ch板)
1 名前:新甚 博史 広報室 室長代理 [HShinjin@sompo-japan.co.jp] :2007/07/27(金) 12:38 HOST:ZP144243.ppp.dion.ne.jp<8080><3128><8000><1080>
対象区分:[法人/団体]管理人裁定待ち
削除対象アドレス:
URLリンク(www2.2ch.net)
654:デフォルトの名無しさん
08/10/24 16:29:57
>>652
8回で戻ったけどあってる?
655:デフォルトの名無しさん
08/10/24 16:35:11
>>649
縦軸と横軸ってxyグラフ?実数と複素数?
±√abs(x)、もしくはx>=0 でxyグラフならできる。
実数と複素数でもできるけど、グラフの意味合いが違ってくるからなー。
その場合 x>0 Im=0の軸だけにプロット、 x<0 Re=0の軸だけにプロットになっちゃう。
656:デフォルトの名無しさん
08/10/24 16:54:14
>>652
311,875,200
657:デフォルトの名無しさん
08/10/24 17:01:32
>>650
ありがとうございました
横軸は自分で入れてみます
>>655
xyグラフです。
abs関数って絶対値を返すんでしたっけ・・・
658:デフォルトの名無しさん
08/10/24 17:02:19
>>652
#include <stdio.h>
int main(void)
{
int P[52], Q[52];
int i, c, x;
for(i=0; i<52; i++)
P[i] = i+1;
c=0;
while(1) {
for(i=0; i<26; i++)
Q[2*i] = P[i];
for(i=26; i<52; i++)
Q[2*(i-26)+1] = P[i];
c++;
for(i=x=0; i<52; i++)
if(Q[i] != i+1)
x=1;
if(x!=0)
for(i=0; i<52; i++)
P[i] = Q[i];
else
break;
}
printf("%d times looped.\n", c);
}
本当は終了条件判断後の代入と最初の代入だとかを一緒にすべきだよな。でもここでは文意どおりに…。
659:デフォルトの名無しさん
08/10/24 17:02:24
>>652
URLリンク(kansai2channeler.hp.infoseek.co.jp)
660:デフォルトの名無しさん
08/10/24 17:24:05
>>649
#include <stdio.h>
#include <math.h>
#define START_X -30
#define START_Y -10
#define WIDTH 60
#define HEIGHT 20
int main(void)
{
int x,y,p;
int max_width = START_X + WIDTH;
int max_height = START_Y + HEIGHT;
for(y = max_height; y > START_Y; y--) {
putchar(y?'|':'0');
for(x = START_X; x < max_width; x++) {
p = (int) sqrt(fabs(x));
putchar((p == abs(y))?'*':' ');
}
putchar('\n');
}
putchar('+');
for(x = START_X; x < max_width; x++) {
putchar(x?'-':'0');
}
putchar('\n');
return 0;
}
y=±sqrt(abs(x))のグラフを書きます。 START_X=0で使ってくれ。
661:デフォルトの名無しさん
08/10/24 17:42:34
1] 授業単元:情報処理Ⅲ
[2] 問題文:JPEGファイルを読んでブロック(マーカ単位)で表示するプログラム(16進)
[3] 環境
[3.1] OS:Windows(cygwin使用)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 10月30日16:30まで
[5] その他の制限:基本的な関数のみでお願いします。
662:デフォルトの名無しさん
08/10/24 18:53:17
>>647
丁寧な回答ありがとうございました!
663:デフォルトの名無しさん
08/10/24 20:49:17
>>551 のつづきです。
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
①と②は>>551
③ (平均値+5*ρ)以上の値を最大値(極大値)とするように変更させなさい。ρを標準偏差とする。
④ ①で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
③で求めた各々の最大値(極大値)の周波数を [周波数]最大値 となるように②で出力したpeak.txtに
出力できるように変更させなさい。
例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
[38]3.4255342 [72]3.214283 [98]2.434924390・・・・
・
・
・
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年10月26日23:59まで
[5] その他の制限: 特になし
よろしくお願いします。
664:デフォルトの名無しさん
08/10/24 22:44:49
[1] 授業単元:if文
[2] 問題文:3つの整数を入力し,それらを比較して,大,中,小を判定しなさい.
3つの整数が同じ値の場合,あるいは2つの整数が同じ値の場合でも
正確に判定ができるように対応すること.
全ての条件を場合分けするプログラムは不可とする.
できるだけ少ない条件分けで対応できるよう工夫すること。
例 9 5 2 → 大:9 中:5 小:2
例 6 6 6 → 大:6,6,6 3つの数は等しい
例 6 6 3 → 大:6,6 小:3
例 6 6 9 → 大:9 小:6,6
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 10/30 13時
[5] その他の制限: 特になし
よろしくお願いします
665: ◆O2tO.pRmks
08/10/25 00:55:24
[1] 授業単元:配列
[2] 問題文:配列a[10] = {53,68,9,55,42,70,43,66,97,84}の要素の最大値・最小値・平均値を調べ、結果を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] gcc
[3.3] 言語:C
[4] 期限:2008年10月25日まで
[5] その他の制限:特になし
666:デフォルトの名無しさん
08/10/25 01:05:55
>>665
#include <stdio.h>
int main(){
int a[10] = {53, 68, 9, 55, 42, 70, 43, 66, 97, 84};
int max, min, i;
float ave = 0.0;
max = a[0];
min = a[0];
for(i = 1; i < 10; i++){
if(max < a[i])
max = a[i];
if(min > a[i])
min = a[i];
ave += (float)a[i];
}
ave /= 10.0;
printf("最大値: %d\n", max);
printf("最小値: %d\n", min);
printf("平均値: %.1f\n", ave);
}
667:デフォルトの名無しさん
08/10/25 01:24:51
>>664
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
int num[3],w,cnt,i;
for(cnt=0;cnt<3;cnt++)
scanf("%d",&num[cnt]);
for(cnt=0;cnt<2;cnt++)
{
for(i=cnt+1;i<3;i++)
{
if(num[cnt]<num[i])
{
w=num[cnt];
num[cnt]=num[i];
num[i]=w;
}
}
}
668:デフォルトの名無しさん
08/10/25 01:25:26
>>664
printf("大:%d",num[0]);
if(num[0]==num[1])
printf(",%d",num[1]);
else
{
if(num[1]==num[2])
{
printf(" 小:%d,%d",num[1],num[2]);
exit(0);
}
else
printf(" 中:%d",num[1]);
}
if(num[0]==num[2])
printf(",%d 3つの数は等しい",num[2]);
else
printf(" 小:%d",num[2]);
}
gcc知らない…
669:デフォルトの名無しさん
08/10/25 01:37:48
>>664
#include <stdio.h>
int main(){
int i, j, tmp;
int count = 0;
int a[3];
scanf("%d%d%d", &a[0], &a[1], &a[2]);
/* 降順にソート */
for(i = 0; i < 3; i++){
for(j = i + 1; j < 3; j++){
if(a[i] < a[j]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
670:デフォルトの名無しさん
08/10/25 01:38:17
>>664 続き
/* 1個目と2個目を比較して値が違ったら「大」が決定 */
if(a[0] != a[1]){
printf("大: %d ", a[0]);
/* 2個目と3個目を比較して「中・小」を決定 */
if(a[1] != a[2])
printf("中: %d 小: %d\n", a[1], a[2]);
else
printf("小: %d, %d\n", a[1], a[2]);
}
/* 1個目と2個目が一緒なら2個目と3個目を比較して「大・小」を決定 */
else{
if(a[1] != a[2])
printf("大: %d, %d 小: %d\n", a[0], a[1], a[2]);
else
printf("大: %d, %d, %d 3つの数は等しい\n", a[0], a[1], a[2]);
}
return 0;
}
671:669-670
08/10/25 01:40:07
>>667-668で既に回答出てたな・・
672:デフォルトの名無しさん
08/10/25 01:45:44
>>671
俺のは手抜きです^^;
673:デフォルトの名無しさん
08/10/25 01:52:31
>>672
結局同じようなことやってるからあまり変わらないっしょー
674:デフォルトの名無しさん
08/10/25 02:09:28
>>663
結局1番と2番は日本語の意味が理解できなかった。
2番は1番の意味がわかればできるけど1番は何回読んでもわからない・・・
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define isOuter(val,ave,sd) ((val)> (ave) + 5*(var))
int main(){
FILE *fp,*fout;
char buf[1024],*cp;
double data[1024],ave,sum=0,sum2=0,var,sd;
int cnt=0,i,k=0;
if((fp = fopen("data.txt", "r")) == NULL) return 1;
if((fout = fopen("peak.txt", "w")) == NULL) return 1;
while((cp = fgets(buf,sizeof(buf),fp)) != NULL){
while((cp = strtok(cp," \t\r\n")) != NULL){
data[cnt] = atof(cp); sum += data[cnt]; sum2 += data[cnt]*data[cnt];
if(++cnt == 1024){
ave = sum / 1024.0; var = sum2 / 1024.0 - ave*ave; sd = sqrt(var);
for(i=0;i<1024;i++) if(isOuter(data[i] , ave, sd)) fprintf(fout,"[%d]%f ", i+1,data[i]);
fprintf(fout,"\n");
cnt = sum = sum2 = 0;
}
cp = NULL;
}
}
fclose(fp); fclose(fout);
}
675:デフォルトの名無しさん
08/10/25 04:36:38
>>620
URLリンク(kansai2channeler.hp.infoseek.co.jp)
676:675
08/10/25 04:44:02
>>620
>>675
ミスった、スマン
一つ前の古いのをUPしてしまった…
URLリンク(kansai2channeler.hp.infoseek.co.jp)
677:デフォルトの名無しさん
08/10/25 05:36:07
[1] 授業単元:趣味プログラム
[2] 問題文(含コード&リンク):
URLリンク(sony.squares.net)
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:最新版Cygwinのgcc
[3.3] 言語:C
[4] 期限: [無期限]
[5] その他の制限:リンク先に記載。
重複を取り除きながらの挿入ソートでは10分経っても終わりませんでした。O(n^2) = O(366051^2)
重複を取り除きながらでも早いソートを実現したいです。お願いします。
678:デフォルトの名無しさん
08/10/25 06:28:59
>>677
URLリンク(kansai2channeler.hp.infoseek.co.jp)
条件Xってのがいまいち不明だったので手抜きで、最後に入ってる場所だけ分かる。
679:デフォルトの名無しさん
08/10/25 06:43:50
>>677
あれ、条件2ってどういうこと?
最大値が分かれば1から順に並べればいいってこと、、、なのか?
ソートっていってるからそうじゃないような気がするんだが。
680:デフォルトの名無しさん
08/10/25 09:50:58
値の範囲がわかってるなら、nが現れた行番号をその配列のn番目に入れればいいから、ソートする必要ない気がする
681:デフォルトの名無しさん
08/10/25 13:10:37
>>678
ありがとうございます。参考にさせて貰います。
>>679-680
すいません、本来のプログラムでは未ソート時点では最大値や点の数が分かっていませんでした。
682:デフォルトの名無しさん
08/10/25 14:21:22
それが分かってないなら>>678
は使えないな、まさしく>>680
の手法だから
一旦二分木に移していく感じでならO(nlogn)でソートできるんじゃないかな
c++のsetで試したからcのソース無いけど
683:デフォルトの名無しさん
08/10/25 15:00:23
Quickソートでいいんじゃない?
684:デフォルトの名無しさん
08/10/25 15:25:56
クイックソートしてから重複除いても>>677でやったのよりそっちのほうが速いよね
685:初心者
08/10/25 15:26:11
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
★下記の仕様を満たすプログラムをC言語で作成しなさい
【仕様】 表計算ソフト簡易プログラム
▽ Excelのように2次元配列で10人分の3教科の素点表示する。なお、素点は100点満点でランダムに作るものとする。
▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から順に)を表示する。なお平均は少数第1位までの表示とする。
▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の行を作り、各行についてそれぞれ求めて表示する。
(表示例:空欄にはそれぞれ計算結果が入ることになる)
番号| 国語 数学 英語 |合計 |平均 |順位
1 | 75 35 40 | | |
2 | 69 75 82 | | |
(中 略)
10 | 57 48 36 | | |
---------------------------------------------------
合計 |
平均 |
最高 |
最低 |
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: 分かりません
[3.3] 言語: C言語
[4] 期限: 来週中ぐらい
[5] その他の制限: 繰り返し、条件処理、配列を勉強しました。
これらを使ってお願いします。
初心者なので初心者でも分かるようなプログラムを
お願いします。
686:デフォルトの名無しさん
08/10/25 22:03:03
>>685
こんな感じでいいのか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
687:686
08/10/25 22:07:11
あ、変な改行いれちまった。
79行目の最後の「\」と改行を消して80行目とつなげてくれ
688:611
08/10/25 22:32:12
提示したプラグラムを補う感じで、>>611お願いいたします。。
689:デフォルトの名無しさん
08/10/25 22:43:40
やだ
690:デフォルトの名無しさん
08/10/25 22:49:55
[1]C
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]C言語
[4]来週の水曜
[5](2)はライブラリ関数のqsortを使うようお願いします
よろしくお願いします。
691:デフォルトの名無しさん
08/10/26 01:50:39
C言語で長門がやってたみたいにゲームの改造とかできますか?
692:デフォルトの名無しさん
08/10/26 02:23:02
>>690
答え合ってるか分からん。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
693:デフォルトの名無しさん
08/10/26 02:36:10
>>674
まず①番目の問題は、二次元配列で出力されている値のファイルを読み込むこと。
その値を1024個を一つのくくりとする。つまり1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。
この1024個の値の平均値と平均値から飛び出している値=最大値(極大値)を求める。
最初の1024個の最大値(極大値)を求めたら、次の1024個の最大値(極大値)を求める。
次の1024個とは1個目[206][0],2個目[206],[1],・・・,1024個目[411][3]とする。これをファイルの最後の値まで繰り返し行う。
こんな感じです。わかりやすく説明したつもりなんですけど・・・どうでしょうか?
プログラムよろしくお願いします。
694:デフォルトの名無しさん
08/10/26 02:59:59
>>693
>1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。
なんで1024が[205][3]なの?
1024個ごとに平均値と最大値を出力すればいいのか?
695:デフォルトの名無しさん
08/10/26 03:00:12
>>691
長門裕之がゲームの改造をしていたのは知らなかったがプログラミング言語Cを用いてゲームの改造ならできるよ
696:デフォルトの名無しさん
08/10/26 03:02:33
>>694
209921行だからじゃない?
697:デフォルトの名無しさん
08/10/26 03:04:49
だけど「209921行5列」なのに「2097152個」ってなんかへんじゃね?
698:デフォルトの名無しさん
08/10/26 03:14:14
やっぱ理解できんわ
699:デフォルトの名無しさん
08/10/26 03:36:28
実際にデータを見ると209920行なわけだが。。。
700:デフォルトの名無しさん
08/10/26 03:38:18
>>694
> 1024個ごとに平均値と最大値を出力すればいいのか?
そう書いてある
701:デフォルトの名無しさん
08/10/26 03:43:30
>>693は出題者だったか。
であれば、array[206][5]という2次元配列に読ませる必要があるのかどうかを知りたい。
別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ?
それと、「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、
じゃあ最初の課題では極大値の判定はどうやってやればいい?
702:デフォルトの名無しさん
08/10/26 05:09:52
>>611 >>688
簡易ボイヤームーア法で良ければこれで
URLリンク(kansai2channeler.hp.infoseek.co.jp)
完全版はアルゴリズムが理解できん
703:デフォルトの名無しさん
08/10/26 05:18:45
URLリンク(ja.wikipedia.org)
ボイヤームーア
704:デフォルトの名無しさん
08/10/26 08:49:35
友達からC++のプログラムもらって家でコンパイルしたら
strcpy_s()関数が使えません、という警告が出て、コンパイルが成功しませんでした。
調べてみたらstrcpy_sはstrcpyの拡張版らしくて、うちのコンパイラが若干古いので、strcpy_sは使えないみたいなんです。
それでプログラムのstrcpy_sをすべてstrcpyに置き換えたら、またエラーが出ました。
strcpy_sは引数の数が三個で、strcpyは二個なんで、その警告が出ました。
strcpy_sを、strcpyと同様の動作をさせる関数として定義すればうまくいくと思ったのですが、どのような関数を定義すればよいでしょうか。
705:デフォルトの名無しさん
08/10/26 08:53:42
>>704
例えば
void strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource) {
strcpy(strDestination, strSource);
}
マクロでもいいと思うけど、というか、他にもいろいろ問題出てこないの?って気がしなくもない。
706:デフォルトの名無しさん
08/10/26 08:55:15
>>704
って糞マルチかよ。スレチだけどいいかと思って答えた俺のバカー
707:デフォルトの名無しさん
08/10/26 08:58:18
>>706
マルチだからといって無碍に切り捨てるのも問題かと。
708:デフォルトの名無しさん
08/10/26 09:02:56
マルチだと分かっていて回答するならふさわしいスレで回答できるじゃん。
今回はここかな。
スレリンク(tech板:499番)
宿題スレおよび以下はスレチでしょ
スレリンク(tech板:681番)
709:デフォルトの名無しさん
08/10/26 09:53:26
>>708
御意
710:デフォルトの名無しさん
08/10/26 11:48:59
コンソールからファイルを引数として渡すと、そのファイルのパーミッションと
ディレクトリ種別などを取得するようにしたいです。→(例drwxr-xr-x)
以下のコードで、st_modeを8進数で表示してみたところ
#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
struct stat abc;
if(stat(argv[1], &abc)==-1){
perror("stat");
exit(EXIT_SUCCESS);
}
printf("%o\n", abc.st_mode);
}
パーミッション644のファイルが「100644」と表示されます。
これを100644の代わりに-rw-r--r--と表示するように実装するにはどのように
書けばよいか教えて下さい。宜しくお願いします。
711:デフォルトの名無しさん
08/10/26 12:07:41
abc.st_mode | 0777
って文字列にすんのかよ。
printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-');
printf("%c" (abc.st_mode & S_IRUSR) ? 's' : 'r');
printf("%c" (abc.st_mode & S_IWUSR) ? 's' : 'r');
printf("%c" (abc.st_mode & S_IXUSR) ? 's' : 'r');
以下略
712:デフォルトの名無しさん
08/10/26 12:08:33
なんかひどいコピペミスをしたようだ。。。
printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-');
printf("%c" (abc.st_mode & S_IRUSR) ? 'r' : '-');
printf("%c" (abc.st_mode & S_IWUSR) ? 'w' : '-');
printf("%c" (abc.st_mode & S_IXUSR) ? 'x' : '-');
以下略
713:デフォルトの名無しさん
08/10/26 12:17:48
printfよりもputcharがよくね?
714:デフォルトの名無しさん
08/10/26 12:31:30
そだね。putcharの方がよかた。
っていうかカンマも抜けてるし何このグダグダ感orz
715:デフォルトの名無しさん
08/10/26 12:32:45
('ー')
716:デフォルトの名無しさん
08/10/26 12:41:28
>>712
出来ました。ありがとうございます。
ちなみにディレクトリがdでなく-になってしまうのですがまだ他に
何か必要でしょうか?
717:デフォルトの名無しさん
08/10/26 12:52:23
横から口だし失礼
ボイヤームーアってどのくらい速いんですか?
ソートの種類で例えるとどのソートに匹敵する実用的なアルゴリズムなんでしょうか?
718:デフォルトの名無しさん
08/10/26 12:54:30
>>717
つ URLリンク(www.google.co.jp)
719:デフォルトの名無しさん
08/10/26 12:59:00
setuidbit, setgidbit, stickybitなどを考慮するともっとひどいコードに。
720:デフォルトの名無しさん
08/10/26 13:10:37
Visual Studio使ってる人ってVisual C++ Express Edition ?
721:デフォルトの名無しさん
08/10/26 13:10:49
>>719
なるほど。あんまし大変になりそうであればとりあえずこんな感じで十分
なのでいいです。ありがとうございました。
722:デフォルトの名無しさん
08/10/26 14:02:41
[1] 授業単元:構造体
[2] 問題文:1,名簿ファイルを読み込み、生年月日の順に並べる、苗字の順に並べる、名前の順に並べる、mail addressの順に並べるプログラムを作れ。ただし、文字列の大小を比較する関数として、strcmpを用いよ。
#include <string.h>
int strcmp(char str1, char str2);
------------------------
str1>str2 → 0より小さな整数 ,str1==str2 → 0 ,str1<str2 → 0より大きい整数
関数 void SortData1(struct person *person, int *index, int n); /* 生年月日の順番に並べる */
関数 void SortData2(struct person *person, int *index, int n); /* 名の順番に並べる */
関数 void SortData3(struct person *person, int *index, int n); /* 姓の順番に並べる */
関数 void SortData4(struct person *person, int *index, int n); /* mail-addressの順番に並べる */ をそれぞれ作り、 結果を表示せよ。
2,県の郵便番号のリスト(メンバーの数約5000個)を配列の大きさだけを変えて、これを郵便番号順、読み仮名順に並べ替えるプログラムを作れ。
[3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C
[4] 期限:2008年10月27日16:00まで
[5] その他の制限:1の関数の宣言は以下のようにする。
関数 void ReadData(struct person *person, int *index, int *n);
関数 void PrintData(struct person *person, int *index, int n);
関数ReadData、PrintDataでは、
while(scanf(“%d %s %s %s %s”,&person[i].birth, person[i].first_name,
person[i],last_name, person[i].mail_addr, person[i].thema)!=EOF){
index[i]=i;
i++; }
-------------------------------------------------------------
for(i=0;i<n;i++){
printf(“%d %s %s %s %s\n”,person[index[i]].birth, person[index[i]].first_name,
person[index[i]].last_name, person[index[i]].mail_addr,person[index[i]].thema); }
とりあえず、問題1の並び替えがうまく出来ませんorz
お願いします。
723:デフォルトの名無しさん
08/10/26 14:09:02
[1] 授業単元:プログラミング
[2] 問題文:
Newton--Raphson法を用いて
X*X*X-7X*X+16X-10=0
の解を求めよ。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:10/24
[5] その他の制限:初心者です。なるべく基本的な構造でお願いします。
>>474
以前お願いしたのですがうまくいきません。どなたか問題点を指摘
していただきたいです。また初歩的な30行程度のプログラムにしたいと
思っています。
724: ◆1xFXRhO/iQ
08/10/26 14:26:39
[1] 授業単元:離散数学
[2] 問題文(含コード&リンク):
重みつき無向グラフを隣接行列で表現し、縮約を行うプログラムを実装せよ。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年10月30日まで
[5] その他の制限: 期限が近めですが、なんとか、宜しくお願いします。
725:デフォルトの名無しさん
08/10/26 14:29:14
>>723
#include <stdio.h>
#include <math.h>
#define EPS0 1.0e-5
double fnc(double x);
double dfnc(double x);
main()
{
double x0, x1;
x0 = 0;
x1 = 10;
while(fabs(x1 - x0) > EPS0)
{
x0 = x1;
x1 = x0 - fnc(x0)/dfnc(x0);
}
printf("x = %lf\n", x1);
}
double fnc(double x)
{
return x*x*x - 7*x*x + 16*x - 10;
}
double dfnc(double x)
{
return 3*x*x - 14*x + 16;
}
726:デフォルトの名無しさん
08/10/26 14:36:19
>>725
ありがとうございます。ものすごく早い回答がいただけて
とてもうれしいです。早速じっこうしてみましたが「関数の
値を返すべき」という警告がでるのでぜひ解除して
いただきたいです。本当にお願いします。
727:デフォルトの名無しさん
08/10/26 14:38:31
>>726
main()の最後に return 0; を付ければいい
728:デフォルトの名無しさん
08/10/26 14:42:17
CodeGear C++ 5.92 for Win32 Copyright (c) 1993, 2007 Code
kadai5z.c:
警告 W8070 kadai5z.c 20: 関数は値を返すべき(関数 main )
警告 W8066 kadai5z.c 30: 実行されないコード(関数 dfnc )
エラー E2378 kadai5z.c 31: Return文に ; がない(関数 dfnc
*** コンパイル中に 1 個のエラーが発生しました ***
このような表示になります。
729:デフォルトの名無しさん
08/10/26 14:49:47
縮約のアルゴリズムってこんな感じ?面倒だから実装はしないけど
縮約関数:
func(G, v, w)
意味:
グラフGに於ける点(v,w)で結ばれる辺を縮約する
仕様:
グラフGに於ける点wを削除し、点wに接続する全有向辺を点vに接続し直す(有向辺を追加する)
ただし、重複している場合は追加しない
(点wを削除するためには、新規にグラフG’を作成?)
730:デフォルトの名無しさん
08/10/26 14:51:18
辺v,wの削除も
731:デフォルトの名無しさん
08/10/26 14:51:36
hairanai
732:デフォルトの名無しさん
08/10/26 14:52:48
無向グラフだ
733:デフォルトの名無しさん
08/10/26 15:29:11
[1] 授業単元:プログラミング
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:途中まで作成はしたのですが上手くいきません。
よろしくお願いします。
734:デフォルトの名無しさん
08/10/26 15:40:32
>>733
#include<stdio.h>
#define N 100
main()
{
int t;
double a, x[N+1];
printf("成長パラメーターの入力");
scanf("%lf", &a);
x[0] = 0.5;
for (t=0;t<=N-1;t++)
{
x[t+1] = a * x[t] * (1.0 - x[t]);
}
for (t=0;t<=N;t++)
printf("t=%dのとき人口は%lgです。\n",t,x[t]);
return 0;
}
735:724 ◆1xFXRhO/iQ
08/10/26 15:42:27
>>729
はい、ただ重複している場合は追加しないのではなく、
重みを足す事になっています。
なんとか、実装して頂けると嬉しいです。。
736:デフォルトの名無しさん
08/10/26 16:07:21
>>735
やってみる
737:724 ◆1xFXRhO/iQ
08/10/26 16:21:56
>>736
ありがとうございます!
738:デフォルトの名無しさん
08/10/26 16:38:30
[1] 授業単元:プログラミング
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:MacOSX→Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:10/28
[5] その他の制限: 初心者ながらいろんなところでヘルプを得ながら必死に
書き上げたのですが、実はMacOSX上でしか動作しないことがわかりました。
Linux上でコンパイルするとエラーになってしまいもはやデバッグのしようが
わかりません。Linux上での動作が条件なので書き直したいのですが、どなたか
助けてください。
739:デフォルトの名無しさん
08/10/26 16:47:47
>>738
NetBSDでも動作するよ。
740:デフォルトの名無しさん
08/10/26 16:48:10
>>738
linuxでも動いた。
コンパイルするシステムのヘッダファイルとかそういうの次第。
741:デフォルトの名無しさん
08/10/26 16:56:58
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年10月27日10:00
742:デフォルトの名無しさん
08/10/26 16:59:28
[1] 授業単元:C言語 「分野:ポインタ演習」
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
の7858.txtです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:08年10月27日24:00まで
[5] その他の制限:お手数ですが、C言語の基本的な関数のみでお願いします。
743:デフォルトの名無しさん
08/10/26 16:59:33
>>737
出来た。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
744:デフォルトの名無しさん
08/10/26 17:10:49
>>742
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
double horner(double x, double *a, int n);
main()
{
int i, n;
double x, *a;
printf("Horner の方法で多項式を計算します!\n");
printf("次数n を入力して下さい:");
scanf("%d", &n);
a = (double*)malloc(sizeof(double) * (n + 1));
printf("実数係数を順に入力して下さい:\n");
for(i = n; i >= 0; i--){
printf("a[%d] = ", i);
scanf("%lf", &a[i]);
}
printf("x の値を入力して下さい:");
scanf("%lf", &x);
printf("多項式の値 = %lg\n", horner(x, a, n));
free(a);
return 0;
}
double horner(double x, double *a, int n)
{
if (n == 0) return a[0];
return x * horner(x, a + 1, n - 1) + a[0];
}
745:724 ◆1xFXRhO/iQ
08/10/26 17:27:55
>>743
こんなに早く出来るなんて、思ってませんでした。。
本当にありがとうございました!
746:デフォルトの名無しさん
08/10/26 17:45:25
>>739>>740
そうですか。確認有り難うございました。ある特定のLinuxの環境での実行が条件
なので、とにかくそこの環境でコンパイルしたいのですが、以下のエラーって
どう変えればいいかとかわかったりしますでしょうか?エラーになる環境がないと
難しいかも知れませんが。。(エラーになるLinuxの環境が何のディストリビューション
かもわからず、すみません。Linuxクラスタだとか聞きましたが)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
747:デフォルトの名無しさん
08/10/26 17:49:18
>>746
#include <unistd.h>
748:デフォルトの名無しさん
08/10/26 17:54:21
鼻血が止まらん
749:デフォルトの名無しさん
08/10/26 17:54:44
すまん。誤爆だ。
750:デフォルトの名無しさん
08/10/26 17:57:50
>>747
ありがとうございます。追加しましたが、どうやらエラーは変わらないようです
751:デフォルトの名無しさん
08/10/26 18:11:45
>>750
ディストロがわからないのはつらいね。
#include <sys/types.h>
では?
752:デフォルトの名無しさん
08/10/26 18:15:28
自分が今使ってるOSがなんだか分からんの?
753:デフォルトの名無しさん
08/10/26 18:27:04
>>751
有り難うございました。半分くらい減りました。残るエラーはこちらです↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>752
すみません、自分の管理している環境じゃないもので、テルネットして実行しています。
uname -aは打てますが、これが有益な情報かどうか不明です。。
(ちなみに打ったところ最後がi686 GNU/Linuxとなってました。)
754:デフォルトの名無しさん
08/10/26 18:55:06
>>753
その uname -a 結果ください。
755:デフォルトの名無しさん
08/10/26 19:04:56
>>754
Linux XXXX 2.6.18-6-686-bigmem #1 SMP MM DD hh:mm:ss 2008 i686 GNU/Linux
と出ました。
それとぐぐって出て来たヘッダファイル(fcntl.hとか)を適当に追加しましたが駄目でした。
S_IFMT, S_IFBLKとかって何に定義されてるんでしょうか
756:デフォルトの名無しさん
08/10/26 19:06:19
すみません。Debian。ですかね。
757:デフォルトの名無しさん
08/10/26 19:09:50
>>734
ありがとうございました!
758:デフォルトの名無しさん
08/10/26 19:17:16
[1] 授業単元:プログラミング
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:式の部分が上手くいきません。
よろしくお願いします。
759:デフォルトの名無しさん
08/10/26 19:38:23
こうやって見ると数式のプログラムばかりだね
理学部やならいいけど、工学部情報学科ならば実務とはかけ離れてるのも大概にしろと
760:デフォルトの名無しさん
08/10/26 19:38:56
プログラム演習は数式遊びの場じゃない
761:デフォルトの名無しさん
08/10/26 19:40:09
東大のプログラムの授業なんかは
ユニックスのパイプコマンドを作成しろとか
サーバー通信なんちゃらの実務的なのが多い
762:デフォルトの名無しさん
08/10/26 20:03:15
>>761
東大じゃありませんが、1990年ごろの情報系学部演習ですでに、
ごく簡単なシェル/パイプを実装, (fork() +exec*()+pipe())
をやっていました。シグナルとかセマフォとかも。無論、当時の私には極悪・試行錯誤の連続で泊り込む勢いでした。
バークレーソケットは3年次後半でしました。
それはそうと、ロジスティック方程式を解いて(がんばれば高校数学でできます。)解析解に代入する、とかはどうでしょう。やっぱりだめですか。
つURLリンク(ja.wikipedia.org)
数値解析部門は、それはそれで習得しなければならないと思います。
763:デフォルトの名無しさん
08/10/26 20:17:24
MATLBAでやったら全部一発
764:デフォルトの名無しさん
08/10/26 20:34:52
>>755
私の環境は WindowsXP/cygwin なんですが、エラーはでませんでした。(警告によるとキャストが必要なものはありましたが、まあ問題ない)
さて、S_* などは、私の環境では sys/stat.h にあるのですが、(実体は /usr/include/sys/stat.h) >>755さんの環境でも、
インクルードファイルをみつけているようですね。(インクルードパスがちがっておれば、みつけられない、ってでてくると思います。)
すると、暗黙の #define が unix(posix) 用になっていないのかもしれません。
gcc -v ソース.c 2> mes.txt
として、mes.txt の内容をください。
2>
がうまくいかないのであれば、その旨書き込んでください。
765:デフォルトの名無しさん
08/10/26 20:56:37
>>764
レス有り難うございます。mes.txtをアップ致しました。
thread modelというのはposixになっているようですが。。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
766:デフォルトの名無しさん
08/10/26 21:27:10
>>765
では、
gcc -Dunix -v ソース.c 2> mes2.txt
の結果をください。
/usr/include/sys/stat.h の内容もください。
そ れ と、
このソースファイルをコンパイルしたいな、と思った動機を教えてください。というか白状してください。(笑)
もし演習の課題ならば、コンパイルできない、という事態に陥らないよう、教官がいろいろ陰で配慮してくださるはず。
うまくいかないのは、課題を出した教官が怠慢だったのか、ということもあるかもしれませんが、
私の見るところ、自主的に今ある環境で自分のやりたいことをやってみた、という気がします。
その意気やよし!
最後まで付き合います。ただし今日は徹夜を覚悟してください。
767:デフォルトの名無しさん
08/10/26 21:40:07
[1] 授業単元:データ構造とアルゴリズム演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 10月28日まで
[5] その他の制限: 特になし
よろしくお願いします
768:デフォルトの名無しさん
08/10/26 21:50:29
>>766
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
アップ致しました。本当に課題です。文系なのに間違って海外の理系の学校に
来てしまい毎日半端ない宿題に追われているところです。なので、自主的に、
といいたいところですが今はとにかくコンパイルすることしか頭にありません。。
助けばかり乞うのは自分のためによくないのですが最近はあまりに半端ない分量の
ため依存率が高くなってきました。
769:デフォルトの名無しさん
08/10/26 22:06:22
>>768
なんだか、教官が手抜きなんですねぇ。それは大変。
では、
gcc -v -D__USE_BSD -v ソース.c 2> mes3.txt
として mes3.txt の内容をください。
あと、コンパイルできたかどうか、コンパイルできたのなら実行結果
(おそらくは ./a.out . > mes4.txt
として mes4.txt に結果が入ると思います。)
を教えて下さい。
あるいは教官に「コンパイルできないよ!」と主張してください。(そちらは昼ですか?)
30分後にのぞきます。
770:デフォルトの名無しさん
08/10/26 22:11:05
>>767
1-1:
struct cell *cell2 = cell1->next;
struct cell *cell3 = cell2->next;
printf("%d\n%d\n%d\n", cell1->element, cell2->element, cell3->element);
1-2:
struct cell *c;
for (c = cell1; c != NULL; c = c->next) {
printf("%d\n", c->element);
}
771:デフォルトの名無しさん
08/10/26 22:18:55
>>769
原因が判明しました。怒らないで下さい。いつもメイクファイルを使用しているのですが、
常にgccのオプションは-Wall -std=c99としています。先程たまたま-std=c99を取ったらコンパイル
出来てしまいました!(なんでMacの環境だと同じメイクファイルでエラーにならないんだろう。。)
なぜかの原因究明はもう辞めて寝ます。徹夜したところなので。。ちなみに教官にMac OSXの環境で
つくったからこれで勘弁して!って言ったら駄目だと言われました。厳しい世の中ですね。
色々とサポート有り難うございました。
以上
772:デフォルトの名無しさん
08/10/26 22:19:20
2-1:
void append(struct cell **cell1, int e)
{
struct cell *cell2 = (*cell1)->next;
(*cell1)->next = malloc(sizeof(struct cell));
(*cell1)->next->element = e;
(*cell1)->next->next = cell2;
}
2-2:
void prepend(struct cell **cell1, int e)
{
struct cell *cell0 = malloc(sizeof(struct cell));
cell0->element = e;
cell0->next = *cell1;
*cell1 = cell0;
}
使い方:
append(&cell1, /* 新しい element */)
prepend(&cell1, /* 新しい element */)
773:デフォルトの名無しさん
08/10/26 22:45:12
>>771
んー、それはそれで謎なんですが‥‥‥。
-std=c99
は、直近のCの規格でコンパイルする、ということでしかないので、今回は特に影響がないはず。
c99とすると、でインクルードするヘッダがかわるのでしょうか?c++ 風に <iostream> と.h がない書き方にしないといけないのでしょうか?よくわかりません。
このあたりは識者からのコメントをお待ちいたします。
実行結果を教えてくださるとありがたいです。ともあれ、おやすみなさい。
774:デフォルトの名無しさん
08/10/26 23:03:46
gccの場合、-std使うとたしかそれに合わせて標準のヘッダの中身も
変化する(#ifdefなどを使って)から、その影響はあると思う。
775:デフォルトの名無しさん
08/10/26 23:06:18
[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。
AX=I(Iは単位行列)となることをしめしてください、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれるmat_auxに含まれる補助関数を使ってください。
[3] 環境
[3.1] OS:inux
[3.2] コンパイラ名とバージョン:gc
[3.3] 言語:C
[4] 期限: ([2008年11月6日まで]
776:デフォルトの名無しさん
08/10/26 23:10:01
>>666
遅れましたが、ありがとうございました。
777: ◆ojvIN3PEqY
08/10/26 23:31:37
[1] 授業単元:プログラミング
[2] 問題文:ビットマップディスプレイの原理を用いて、入力した整数(0~1000000)を、ビットマップ式に表示するプログラムをつくれ。
例
357111
*** *** *** * * *
* * * * * *
*** *** * * * *
* * * * * *
*** *** * * * *
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年10月27日まで
[5] その他の制限:配列の基礎まで習いました。
お願いいたします
778: ◆ojvIN3PEqY
08/10/26 23:33:36
例がおかしくなってしまったので無視してください(*_*)
779:デフォルトの名無しさん
08/10/26 23:40:11
[1] 授業単元:ハードウェア設計
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限: 10月28日まで
[5] その他の制限: 特になし
よろしくお願いします。
780:775
08/10/26 23:43:32
問題文に間違いがあったので修正します。
[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。
AX=I(Iは単位行列)となることをしめしてください、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれるmat_auxに含まれる補助関数を使ってください。
[3] 環境
[3.1] OS:inux
[3.2] コンパイラ名とバージョン:gc
[3.3] 言語:C
[4] 期限: ([2008年11月6日まで]
781:デフォルトの名無しさん
08/10/26 23:44:21
>>777
#include <stdio.h>
#include <stdlib.h>
int
main()
{
char s[81];
int i = 357111;
sprintf(s, "banner %d", i);
return system(s);
}
782:デフォルトの名無しさん
08/10/26 23:48:42
>>774
んー、では 64bit がらみですか?それとも <sys/stat.h> の内容が変わったのか?
ちょっと調べてみましたが、最近は stat(2) 返り値の st_mode の判別方法として、
if (S_ISBLK(infobuf.st_mode))
printf("block device.\n");
というマクロが定義されているようですね。
私は、
if ((infobuf.st_mode & S_IFMT) == S_IFBLK)
printf("block device.\n");
しかしらなかったのですが。
ひきつづき識者のコメントをいただけたら、と思います。
783:デフォルトの名無しさん
08/10/27 00:09:30
基本情報スレからきました
784:デフォルトの名無しさん
08/10/27 00:17:26
>>777
#include<stdio.h>
#include<string.h> // memset
#define WIDTH (4*7)
#define HEIGHT (5)
void numset(char screen[HEIGHT][WIDTH], int x, int y, int num){
static const char font[][4*10+1]={ // 0123456789 の順に 3x5 で文字+数字間と末尾に一文字空白入れる
"*** * *** *** * * *** *** *** *** *** ",
"* * * * * * * * * * * * * * ",
"* * * *** *** *** *** *** * *** *** ",
"* * * * * * * * * * * * * ",
"*** * *** *** * *** *** * *** *** ",
};
int ix, iy;
for(iy=0;iy<5;iy++)
for(ix=0;ix<4;ix++) screen[y+iy][x+ix]=font[iy][num*4+ix];
}
void display_number(long value){
char screen[HEIGHT][WIDTH];
long div, x, y=0;
if(value<0 || value>1000000) return;
memset(screen, '\0', sizeof(screen));
for(div=1;value/div>=10;div*=10);
for(x=0;div>0;div/=10,x+=4) numset(screen, x, y, (value/div)%10);
for(y=0;y<HEIGHT;y++) printf("%s\n", screen[y]);
}
int main(int argc, char *argv[]){
int num=123456;
if(argc==2) sscanf(argv[1], "%d", &num);
display_number(num);
return 0;
}
785:デフォルトの名無しさん
08/10/27 00:37:21
>>782
ヘッダ見ればいいんじゃ、とおもうんだけど。。。
786:デフォルトの名無しさん
08/10/27 00:50:25
円周率3より悲惨な事実w
572 名前:名無し検定1級さん 投稿日:2008/10/27(月) 00:48:29
と思ったけど、今の大学3年以下のゆとり教育課程では
方程式を高校で初めて学ぶんだったねw
ありえんwww
複素数無くなったしw
787:デフォルトの名無しさん
08/10/27 00:53:46
二次方程式 / 複素数平面 じゃないかね
788:デフォルトの名無しさん
08/10/27 00:54:39
>>779
URLリンク(kansai2channeler.hp.infoseek.co.jp)
問題2についてはなんか違う気もするけど仕様を満たせばいいかな。
gccでコンパイルできるかなぁ
789:デフォルトの名無しさん
08/10/27 00:58:40
1,
1,2,
3,2,1,
1,2,3,4,
5,4,3,2,1,
.
.
.
これらの規則的な数字を配列のvd[1~100]に順番に入れていきたいんですけどどうしたらいいでしょう。
あとその反対の
1,
2,1,
1,2,3,
4,3,2,1,
1,2,3,4,5,
.
.
.
をvm[1~100]に順番に入れたいのですが、
ループさせてうまく配列に入れられないでしょうか。
わかるかた教えてください。
お願いします。
790:デフォルトの名無しさん
08/10/27 01:07:17
[1] 授業単元:構造体
[2] 問題文:1,名簿ファイルを読み込み、生年月日の順に並べる、苗字の順に並べる、名前の順に並べる、mail addressの順に並べるプログラムを作れ。ただし、文字列の大小を比較する関数として、strcmpを用いよ。
#include <string.h>
int strcmp(char str1, char str2);
------------------------
str1>str2 → 0より小さな整数 ,str1==str2 → 0 ,str1<str2 → 0より大きい整数
関数 void SortData1(struct person *person, int *index, int n); /* 生年月日の順番に並べる */
関数 void SortData2(struct person *person, int *index, int n); /* 名の順番に並べる */
関数 void SortData3(struct person *person, int *index, int n); /* 姓の順番に並べる */
関数 void SortData4(struct person *person, int *index, int n); /* mail-addressの順番に並べる */ をそれぞれ作り、 結果を表示せよ。
2,県の郵便番号のリスト(メンバーの数約5000個)を配列の大きさだけを変えて、これを郵便番号順、読み仮名順に並べ替えるプログラムを作れ。
[3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C
[4] 期限:2008年10月27日16:00まで
[5] その他の制限:1の関数の宣言は以下のようにする。
関数 void ReadData(struct person *person, int *index, int *n);
関数 void PrintData(struct person *person, int *index, int n);
関数ReadData、PrintDataでは、
while(scanf(“%d %s %s %s %s”,&person[i].birth, person[i].first_name,
person[i],last_name, person[i].mail_addr, person[i].thema)!=EOF){
index[i]=i;
i++; }
-------------------------------------------------------------
for(i=0;i<n;i++){
printf(“%d %s %s %s %s\n”,person[index[i]].birth, person[index[i]].first_name,
person[index[i]].last_name, person[index[i]].mail_addr,person[index[i]].thema); }
とりあえず、問題1の並び替えがうまく出来ませんorz
お願いします。
791:デフォルトの名無しさん
08/10/27 01:08:57
>>787
もちろん一次のこと
さらに複素数も無限級数もやらなくなった
792:デフォルトの名無しさん
08/10/27 01:09:34
IT業界だけじゃないけど、これから日本のエンジニアは大変なことになる
大量に採用するなら今年までにしとけ
再来年からはヤバイ奴らが入社してくるぞww
793:デフォルトの名無しさん
08/10/27 01:10:28
>>790
名簿ファイル下さい
794:デフォルトの名無しさん
08/10/27 01:13:49
>>791
んじゃ中学で何習うのorz
795:デフォルトの名無しさん
08/10/27 01:24:26
>>793
名簿ファイルはリアルに教授の名前載ってるから、あげるの無理なんです
すみません
796:デフォルトの名無しさん
08/10/27 01:25:49
>>795
せめて構造体の中身教えてな
themaには何が入ってるんだ?
研究テーマか何かか?
797:775
08/10/27 01:26:48
>>780をお願いします。
798:デフォルトの名無しさん
08/10/27 01:37:20
>>796
名簿はこんな感じ
19670712 namae a aaaaaa@xxx.aaaaaa.ac.jp Uchu
19790102 namae b bbbbbb@xxx.bbbbbb.ac.jp Kotaidenshi
19300303 namae c cccccc@xxx.cccccc.ac.jp Uchu
----------------------------------------------------
themaには研究テーマが入ってます
宜しくお願いします
799:デフォルトの名無しさん
08/10/27 02:27:33
[1] 授業単元:プログラミング
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:何度もすいません・・・
式がやはりネックです
800:デフォルトの名無しさん
08/10/27 02:38:23
>>701
>別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ?
そういうことです。
>「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、 じゃあ最初の課題では極大値の判定はどうやってやればいい?
平均値以上の値を最大値(極大値)としなきゃいけないんですOTL
801:デフォルトの名無しさん
08/10/27 03:00:37
>>790
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえず、1番だけ。
2番は問題の意味がよくわからない。
もっと詳しく書いてくれ。
必要なデータとかあればそれもよろしく。
今日はもう寝る。
802:デフォルトの名無しさん
08/10/27 03:17:59
>>663 問題修正
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
① 5行209921列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と(平均値+5*ρ)以上の値を最大値(極大値)を求めなさい。ρを標準偏差とする。
最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。この作業をファイルの最後の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
URLリンク(kissho6.xii.jp)
DLKey:data
② 求めた最大値をpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を表示させ、2行目からは次の1024個中から求めた最大値を表示させなさい。
③ ①で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
①で求めた各々の最大値の周波数を [周波数]最大値 となるように②で出力したpeak.txtに出力できるように変更させなさい。
例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
[38]3.4255342 [72]3.214283 [98]2.434924390・・・・
・
・
・
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年10月27日午後5時
[5] その他の制限: 特になし
よろしくお願いします。
803:デフォルトの名無しさん
08/10/27 03:20:10
>>802 補足説明
まず①番目の問題は、二次元配列で出力されている値のファイルを読み込むこと。
その値を1024個を一つのくくりとする。つまり1個目[0][0],2個目[0][1],・・・,5個目[0][4],6個目[1][0],・・・,1024個目[205][3]とする。このとき個数=周波数の値でもある。
この1024個の値の平均値と最大値(極大値)を求める。
最初の1024個の最大値(極大値)を求めたら、次の1024個の最大値(極大値)を求める。
次の1024個とは1個目[206][0],2個目[206],[1],・・・,1024個目[411][3]とする。これをファイルの最後の値まで繰り返し行う。
よろしくお願いします。
804:デフォルトの名無しさん
08/10/27 03:57:31
[1] 授業単元:配列
[2] 問題文:10人分の2科目の試験得点(100点満点)を2次元配列に初期化しておく。2次元配列vの宣言と初期化は以下のとおり
int v[2][10]={{55,67,45,78,89,91,73,50,80,69}
{44,59,87,92,60,51,77,89,64,53}};
この10人分の科目別得点の平均を求めなさい。ただし、2科目の科目別平均は次の1次元配列に格納する。
double mean[2]
doubleという型名で配列の名前がmean
《実行結果》
科目1の平均=69.700000
科目2の平均=67.600000
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:10/27 午後1時
[5] その他の制限:出来るだけ短く
どうかよろしくお願いします
805:デフォルトの名無しさん
08/10/27 03:57:47
>>785
そう、だから >>768 で sys/stat.h を貼ってもらって、それをみたんですが、
くだんの#define は
#if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN
の下で定義されていました。
mac osx = darwin ≒ FreeBSD+mach? であっても、
-std=c99 とすると、この上のどれも #define されず、
それでいて-std= を指定しなければ、この上のどれかが #define される
ということ、かつ >>774 より-std で#define の内容がかわる、ということですから、そんなことがあっても不思議でない、ということです。
単にそれだけですが。
806:デフォルトの名無しさん
08/10/27 04:19:58
>>805
失礼。認識間違いしていました。
>>768の環境では__USE_BSD も __USE_MISC も __USE_XOPEN もどれも #define されないようですね。
でも手元のVine Linux 4.2 では __USE_BSD と __USE_MISC が #define されています。(#error で確認)
したがって >>768 の環境に問題があるのでしょうか。debian な人にお願いするしかないですね。
807:デフォルトの名無しさん
08/10/27 04:24:18
>>806
手元の Vine Linux 4.2 で -std=c99 をコンパイルすると、>>768 と同じ現象が再現しました。
じゃ、いったいなにが #define されているのでしょうか‥‥‥。
808:デフォルトの名無しさん
08/10/27 08:13:30
【質問テンプレ】
[1] 構造体:
[2] 英文なので翻訳します。
この宿題の中で、僕はFieldとScreenという2つのクラスを持っています。
Screen というクラスはField というクラスを80個持ちます。
で、問題はここからなのですが
教授は「Screenが無制限にFieldを持つようにプログラムを作れば、ボーナス点をやる」
とか言いだしたのでどうやるか教えてください。
[3] 環境
[3.1] うぃんどーず
[3.2] ぼーらんど
[3.3] C++
[4] 一週間後
[5] 制限:new とか使う感じです。
809:デフォルトの名無しさん
08/10/27 08:13:42
>>801
ありがとうございます
問題2は
郵便番号 区(漢字で) 町(カタカナで) 町(漢字で)
の順に並んだ名簿のファイルを読み込んで並び変えます
810:デフォルトの名無しさん
08/10/27 08:21:13
>>808
[3] 環境
[3.1] うぃんどーず
[3.2] ぼーらんど
Windowsもborlandも読めないだろうと馬鹿にしてるんだな
811:デフォルトの名無しさん
08/10/27 08:28:46
>>810
いやwwwwwそういうわけじゃないです。。。
教えてくださいお願いします!
812:デフォルトの名無しさん
08/10/27 08:56:43
>>808
URLリンク(kansai2channeler.hp.infoseek.co.jp)
std::vectorを使ったがnew/deleteでも同じようにいけるはず
誰かに任せた
813:デフォルトの名無しさん
08/10/27 08:57:50
#include <iterator>
#include <functional>
は不要なので削除して下さい
814:デフォルトの名無しさん
08/10/27 08:59:31
>>789
int i, j, k, flag, vm[100];
for(i=1,k=0,flag=1; flag; i++) {
for(j=1; j<2*i-1 && flag; j++) {
vm[k++] = j;
if(k==100) flag = 0;
}
for(; j>0 && flag; j--) {
vm[k++] = j;
if(k==100) flag = 0;
}
}
下の場合は
for(j=1; j<2*i&& flag ; j++) {
815:デフォルトの名無しさん
08/10/27 09:07:36
>>812
ありがとうございます。
でもnew/delete使う感じでお願いしたいんです。
vectorが何のこっちゃ分かりません。すみません・・・
816:デフォルトの名無しさん
08/10/27 09:09:19
[1] 授業単元: 配列
[2] 問題文(含コード&リンク)
身長について処理をするプログラムの作成
最大20とする整数nをキーボードから入力する。
次に、n人分の実数(身長)をキーボードから入力しその平均身長をもとめ、
さらにそのそれぞれの人の身長と、平均身長との差を一人一行ずつ出力しなさい。
小数点以下は無視していい。
例)
n=3の場合
170.0 0.0
165.0 -5.0
175.0 5.0
[3] Windows
VC 6.0
言語:C++
[4] 期限:今日中
[5] その他の制限:特になし
c言語を侮っていてさぼり気味だったつけがまわり、気がついたら全くわからなくなってました。
ヒントだけでもいいのでどうかお願いします。
817:デフォルトの名無しさん
08/10/27 09:20:11
>>815
URLリンク(kansai2channeler.hp.infoseek.co.jp)
わかるかな?これ以上簡単に書けんよ
818:デフォルトの名無しさん
08/10/27 09:24:37
>>817
ありがとうございます!
819:デフォルトの名無しさん
08/10/27 09:49:54
[1] 授業単元: プログラミング基礎
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: 10月27日 21:00まで
よろしくお願いします
820:デフォルトの名無しさん
08/10/27 10:20:56
スレリンク(gamedev板)
Syntax Error. しかしらないキチガイが現れました
821:デフォルトの名無しさん
08/10/27 10:26:09
>>816
#include <stdio.h>
int main(void)
{
int i, n;
int sincho[20];
int sum, heikin;
printf("n? ");
scanf("%d", &n);
if (n >= 20) {
printf("nが大きすぎます。\n");
return 1;
}
for(i = 0; i < n; i++)
{
printf("%d人目の身長: ", i+1);
scanf("%d", &sincho[i]);
}
sum = sincho[0];
for(i = 1; i < n; i++)
{
sum += sincho[i];
}
heikin = sum / n;
for(i = 0; i < n; i++)
{
printf("%d %d\n", sincho[i], sincho[i] - heikin);
}
return 0;
}
822:デフォルトの名無しさん
08/10/27 10:31:06
>>816
#include <stdio.h>
int main(int argc, char *argv[])
{
double height[20], sum, avg;
int n, i;
printf("n の値を入力してください: ");
scanf("%d%*[^\n]", &n);
if (n > 20) {
puts("大きすぎます");
return 1;
}
sum = 0.0;
for (i = 0; i < n; i++) {
printf("身長を入力してください: ");
scanf("%lf%*[^\n]", &height[i]);
sum += height[i];
}
avg = sum / n;
for (i = 0; i < n; i++) {
printf("%.1f %.1f\n", height[i], height[i] - avg);
}
return 0;
}
823:デフォルトの名無しさん
08/10/27 10:32:36
>>819
#include<stdio.h>
int main(void){
char str[100],big[100];
int i,k;
printf("文字列を入力して下さい:");
scanf("%s",str);
k=0;
for(i=0; str[i]!='\0'; i++){
switch(str[i]){
case 'a':
case 'i':
case 'u':
case 'e':
case 'o':continue;
default:{big[k]=str[i]-32;
k++;
}
}
}
big[k]='\0';
printf("入力:%s\n",str);
printf("出力:%s\n",big);
}
824:デフォルトの名無しさん
08/10/27 10:34:06
忘れた
return 0;
825:デフォルトの名無しさん
08/10/27 10:35:03
#include <stdio.h>
int main(void){
char str[100],big[100];
int i, j;
printf("文字列を入力して下さい:");
scanf("%s",str);
for(i=0, j=0; str[i]!='\0'; i++){
if (str[i]>='a' && str[i]<='z'){
big[j]=str[i]-('a'-'A');
if (big[j] == 'A' || big[j] == 'I' ||
big[j] == 'U' || big[j] == 'E' ||
big[j] == 'O')
{
;
}else j++;
}else if (str[i] == 'A' || str[i] == 'I' ||
str[i] == 'U' || str[i] == 'E' ||
str[i] == 'O')
{
;
}else {
big[j] = str[i];
j++;
}
}
big[j]='\0';
printf("入力:%s\n",str);
printf("出力:%s\n",big);
return 0;
}
826:デフォルトの名無しさん
08/10/27 11:38:02
>>788さん
ありがとうございます!
大変助かりました!
827:デフォルトの名無しさん
08/10/27 12:27:23
>>820 = ID:FJ+86jwr ?
数字も読めないのか
828:デフォルトの名無しさん
08/10/27 12:30:57
[1] 授業単元:プログラミング
[2] 問題文:な簡単な単語検索を行うプログラムを作成
せよ.
1. 3 つの単語を入力し,これを検索対象のデータと
する.
2. 検索したい単語を入力すると,それが覚えた単語
の中に含まれていれば“YES!”,含まれていなけ
れば“NO!”と出力する.
3. -1 が入力されるまで,繰り返し検索できるように
する.
条件
3 つの単語は,2 次元配列str1[3][100] に格納する.
(str1 には99 文字までの単語を3 つ格納できる)
実行例
$ ./q2-4
Input 3 words:
<-- "aaa"
<-- "bbbb"
<-- "ccccc"
Search word: <-- "aaa"
YES!
Search word: <-- "dd"
NO!
Search word: <-- "-1"
$ (終了)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:10月30日 木曜日
[5] その他の制限: 標準関数strcmp(str *, str *) を使うということです
よろしくお願いします
829:デフォルトの名無しさん
08/10/27 12:50:45
>>828
URLリンク(kansai2channeler.hp.infoseek.co.jp)
830:デフォルトの名無しさん
08/10/27 13:20:59
>>820
どう見てもキチガイはID:FJ+86jwrだな
831:デフォルトの名無しさん
08/10/27 13:54:18
>>790
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2番も1番と同じ要領でやってみた。
832:デフォルトの名無しさん
08/10/27 14:15:40
>>802 問題文修正しました。
>>663 問題修正
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
① 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と(平均値+5*ρ)以上の値を最大値(極大値)を求めなさい。ρを標準偏差とする。
最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。この作業をファイルの最後の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
URLリンク(kissho6.xii.jp)
DLKey:data
② 求めた最大値をpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を表示させ、2行目からは次の1024個中から求めた最大値を表示させなさい。
③ ①で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
①で求めた各々の最大値の周波数を [周波数]最大値 となるように②で出力したpeak.txtに出力できるように変更させなさい。
例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
[38]3.4255342 [72]3.214283 [98]2.434924390・・・・
・
・
・
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年10月28日午後1時
[5] その他の制限: 特になし
よろしくお願いします。
833:デフォルトの名無しさん
08/10/27 15:17:14
>>744
ありがとうございました!
834:デフォルトの名無しさん
08/10/27 15:17:14
>>832
①と②までは↓もうプログラムはあります。
URLリンク(kissho1.xii.jp)
DLkey : foo
あとは③番目の問題をやるだけです。
プログラムよろしくお願いします。
835:デフォルトの名無しさん
08/10/27 15:54:45
>>832
URLリンク(kansai2channeler.hp.infoseek.co.jp)
peak.txtが例の通りにならないんだが、これでいいのだろうか。
>>834を読んでなかった…。
836:デフォルトの名無しさん
08/10/27 16:08:27
3と4はもう答え書いたのに(´・ω・`)
837:デフォルトの名無しさん
08/10/27 16:09:06
[1] 授業単元:プログラミング
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:
838:デフォルトの名無しさん
08/10/27 16:12:59
>>835
ありがとうございます。
しかし、peak.txtが出力されませんでした。どうしてなんだろう?
コンパイルはgccですよね?
839:デフォルトの名無しさん
08/10/27 16:17:46
>>836
コンパイルはとおったのですが、peak.txtが出力できませんでした。
かなり格闘したのですが、手に負えなくて・・・OTL
840:デフォルトの名無しさん
08/10/27 16:20:25
>>835
fprintf(fpout, "[%d]%lf ", j + 1, a[j]);
は正しくは
fprintf(fpout, "[%d]%f ", j + 1, a[j]);
ね
841:デフォルトの名無しさん
08/10/27 16:22:01
>>840
そうだった^^;
842:デフォルトの名無しさん
08/10/27 16:28:46
>>836
というか、旧③が現①なんだよねたぶん。
843:デフォルトの名無しさん
08/10/27 16:41:51
>>842
はい、そうです。なんか旧①と旧③の問題が重複(分かりにくい)ということだったので
旧③の問題文を現①の問題文に含みました。
よろしくお願いします。
844:デフォルトの名無しさん
08/10/27 16:52:32
>>838
peak.txtのファイルすらできないってこと??
845:デフォルトの名無しさん
08/10/27 17:05:02
>>844
はい、そうです。ファイルができませんOTL
gccのオプションは -o だけでいいのですか?
846:デフォルトの名無しさん
08/10/27 17:09:16
まさかコンパイルしただけでファイルが出来るとか思ってないよな
847:デフォルトの名無しさん
08/10/27 17:10:11
>>845
gcc hoge.c -o hoge.exe
ってな感じにコンパイルして実行すれば良いと思うけど。。。
コンパイルは通るんだよね?
848:デフォルトの名無しさん
08/10/27 17:20:14
>>846
あ・・・できると思ってました><
どうすればファイルを作成することが出来るのでしょうか?
>>847
コンパイルは通ります。フォルダの中にpeak.txtが出来てないだけです。
849:デフォルトの名無しさん
08/10/27 17:23:00
>>848
実行しろよ
Linuxなら
./a.out
で
850:デフォルトの名無しさん
08/10/27 17:23:06
>>848
コンパイルしてできた実行ファイルを実行する。
同じフォルダにdata.txtを置いておくこと。
851:デフォルトの名無しさん
08/10/27 17:24:26
ひどいな・・・
赤ちゃんかよ・・
852:デフォルトの名無しさん
08/10/27 17:40:17
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): f(x)=1/(2+sinx+cosx) の積分を[π,-π]の範囲でSimpsonの1/3公式で求め、分割数と誤差を表示させよ。
[3] 環境
[3.1] OS:Windows
[3.2] 言語:C言語
[4] 期限: 2008.10.29
お願いします。
853:デフォルトの名無しさん
08/10/27 17:40:26
目が点になるっていうのはこういう事か
854:デフォルトの名無しさん
08/10/27 17:48:32
>>852
誤差って、真値は?
855:デフォルトの名無しさん
08/10/27 18:02:09
>>549->>551
すみませんでした。ちと、ボケてましたwww
うまく出力できました。
ありがとうございました。
856:デフォルトの名無しさん
08/10/27 18:06:50
>>854
あっ、すいません
√2×πです。
857:デフォルトの名無しさん
08/10/27 18:12:03
[1] 授業単元:C
[2] 問題文(含コード&リンク):課題1:2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,原点からの距離を求める関数 length_vectorを作成する.
構造体 Point型を使用して,平面の点を表示する関数 print_vを作成する.
2:2次元平面上の点を表す構造体 Point 型と構造体配列を定義して,座標平面上の2点に関する計算を行うプログラムを作成したい.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,要素2つの構造体配列 arrayを定義する.
構造体配列 arrayに,平面の点を代入する関数 input_pointを作成する.
構造体配列 arrayに格納されている2点の長さを求める関数 length_vector2を作成する.
二乗の計算には pow ,ルートの計算には sqrtを使用
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 任意
[3.3] 言語: C
[4] 期限: ([2008年10月28日17:00まで]
??????の部分を問題文に従ってうめていただけると助かります
858:デフォルトの名無しさん
08/10/27 18:19:44
>>856
#include <stdio.h>
#include <math.h>
double f(double x)
{
return 1. / (2. + sin(x) + cos(x));
}
int main(void)
{
int k, n;
double h, a = -M_PI, b = M_PI, fo, fe, sum;
while (1) {
printf("分割数 N (0 = END) = ");
scanf("%d", &n);
if (n == 0)
break;
h = (b - a) / (2. * n);
fo = fe = 0.;
for (k = 1; k <= 2 * n - 3; k += 2) {
fo += f(a + h * k);
fe += f(a + h * (k + 1));
}
sum = (f(a) + f(b) + 4. * (fo + f(b - h)) + 2 * fe) * h / 3.;
printf("分割数 = %d, 誤差 = %.10g\n", n, sum - sqrt(2.) * M_PI);
}
return 0;
}
859:デフォルトの名無しさん
08/10/27 18:20:47
うーん積み残し誤差も考慮しないといけんかな・・・・
860:775
08/10/27 19:16:14
お願いします。
[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。
AX=I(Iは単位行列)となることをしめしてください、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれるmat_auxに含まれる補助関数を使ってください。
[3] 環境
[3.1] OS:inux
[3.2] コンパイラ名とバージョン:gc
[3.3] 言語:C
[4] 期限: ([2008年11月6日まで]
861:デフォルトの名無しさん
08/10/27 21:35:39
>>549
二つ目のですが整数を入力すると入力した逆の単項式が出てしまうので入力した順に出力されるようにして欲しいのですがそれだと変化しないのですが・・・
862:デフォルトの名無しさん
08/10/27 21:49:46
>>861
双方向リストにするか、再帰を使うか。
863:デフォルトの名無しさん
08/10/27 22:00:12
>>821>>822
お二人とも丁寧に有り難う御座います。ホントに助かりました。
864:デフォルトの名無しさん
08/10/27 22:09:35
[1] プログラミング入門言語
[2] 五人分の点数(0~100点まで)を入力し、点数の高い順に並べ替えさせるプログラム
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] C
[4] 期限:制限なし
初心者なので困ってます><お願いします!!
865:デフォルトの名無しさん
08/10/27 22:19:29
#include<stdio.h>
int main(void){
int score[5], temp, i, j;
for(i=0;i<5;i++){ //点数入力
printf("%d人目の点数: ", i+1);
scanf("%d", &score[i]);
}
for(i=0;i<5;i++){ //並べ替え
for(j=4;j>i;j--)
if(score[i] < score[j]){
temp = score[j];
score[j] = score[i];
score[i] = temp;
}
}
for(i=0;i<5;i++)
printf("%d ", score[i]);
putchar('\n');
return 0;
}
866:865
08/10/27 22:22:22
馬鹿みたいにタブ使ったから空白作れてないな。しくじった。
#include<stdio.h>
int main(void){
int score[5], temp, i, j;
for(i=0;i<5;i++){ //点数入力
printf("%d人目の点数: ", i+1);
scanf("%d", &score[i]);
}
for(i=0;i<5;i++){ //並べ替え
for(j=4;j>i;j--)
if(score[i] < score[j]){
temp = score[j];
score[j] = score[i];
score[i] = temp;
}
}
for(i=0;i<5;i++)
printf("%d ", score[i]);
putchar('\n');
return 0;
}
867:デフォルトの名無しさん
08/10/27 22:47:26
>>831
有難う御座います
868:デフォルトの名無しさん
08/10/27 22:53:22
>>866
早速の回答ありがとうございます!!
もう一問わからないのが><
どなたかお願いします><
[1] プログラミング入門言語
[2] 3人分の3教科の素点を表示する。素点は100点満点でランダムに作る。
またその時、
・3教科の合計・平均点を計算し、それぞれ素点の右の列に表示する。
・合計点の高い学生から順に表示する。
・平均点は小数第一までの表示とする。
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] C
[4] 期限:なし。
869:デフォルトの名無しさん
08/10/27 23:36:38
OSはlinux
期限はとくになし
素数を数えて落ち着くプログラム
おながいします。
870:デフォルトの名無しさん
08/10/28 00:49:26
>>858
ありがとうございます。
すいませんが、積分範囲は自分で入力するようにしたいんですよ・・・言葉足らずで申し訳ありません。
一応自分で考えたんですけどうまく出力されません・・・間違っている場所の指摘お願いします。
871:デフォルトの名無しさん
08/10/28 00:50:16
>>858
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main(void)
{
FILE *fo;
double a, b;
int n, i;
double h, s, x;
double fa, fb, fx;
double sinx, cosx, sina, cosa, sinb, cosb;
if((fo = fopen("ans7.txt", "w")) == NULL){
printf("Do not open file\n");
exit(1);
}
872:デフォルトの名無しさん
08/10/28 00:50:53
つづき・・・
printf("積分区間a,bを入力してください.\n");
scanf("%lf%lf",&a, &b);
printf("分割数nを入力してください.\n");
scanf("%d",&n);
fx = 1/(2+sinx+cosx);
fa = 1/(2+sina+cosa);
fb = 1/(2+sinb+cosb);
h = (b-a)/n;
s = fa+fb;
x=a;
i=1;
x=x+h;
if(i%2 == 0){
s = s+2*fx;}
else{
s = s+4*fx;}
i = i+1;
while(i>n){
s = h/3*s;}
printf("分割数nは%d回です。\n", n);
printf("誤差は%lfです。\n", s);
fprintf(fo, "分割数nは%d回です。\n", n);
fprintf(fo, "誤差は%lfです。\n",s);
fclose(fo);
}
お願いします。
873:デフォルトの名無しさん
08/10/28 01:14:31
>>870
修正点が多すぎるので>>858を修正しました。
あとは適当にいじって下さい。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
874:デフォルトの名無しさん
08/10/28 01:26:51
>>868
構造体使わないようにと思って。。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
875:デフォルトの名無しさん
08/10/28 02:27:04
フィボナッチ数列を・・・43024項まで求めるプログラムが出来た。
この調子で、8月に発見されたメルセンヌ素数をはじき出す
プログラムを作るぜ。戯言すまそ。
876:しろうと
08/10/28 10:04:34
初心者です。シグナルハンドリングについて勉強しているとこです。
kill -9 [pid]
ってkillがpidを殺すコマンドで-9は深く考えた事無かったけどこれって
実はkill自体はシグナルを単に送るだけで、-9にkillみたいな意味があるって
認識を改めた。ここまで正しいですか?
877:デフォルトの名無しさん
08/10/28 10:12:36
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月29日まで
よろしくお願いします。
878:デフォルトの名無しさん
08/10/28 10:15:54
どなたか857の解答期限迫ってきてるんでお願いします
問題が見づらいようなら言ってください
879:デフォルトの名無しさん
08/10/28 11:04:05
>>857
課題1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* (x,y)-平面の点を座標で表す構造体 */
struct Point{
double x, y;
};
/* 原点からの長さを求める関数 */
double length_vector(struct Point *p){
return sqrt(pow(p->x, 2) + pow(p->y, 2));
}
/* 平面の点を表示する関数 */
void print_v(struct Point *p){
printf("(%f, %f)\n", p->x, p->y);
}