08/12/17 14:13:45
[1] 授業単元:
[2] 問題文:
個人データを表す構造体personは、氏名、年齢、身長、体重、BMI(= 体重 / 身長^2)のメンバからなる。
BMIからは肥満度を判別することができる(プログラム中に場合分けしてあるのでそちらを参考)。
以上から、肥満度と標準体重(= 22 * 身長^2)を求めるプログラムを作成せよ。
ただし、(リダイレクト)入力した値とBMIを構造体メンバに格納し、それらメンバの値、肥満度、標準体重を出力すること。
また、BMIおよび標準体重を計算する関数と肥満度を計算する関数を作成して利用すること。
[3] 環境
[3.1] OS:win
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:リダイレクト処理を行ってプログラムを実行する。
頑張ってはみたものの、自分の力ではこれが精一杯でした。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
改善点など、助言をいただきたいです。
128:デフォルトの名無しさん
08/12/17 14:32:54
申し訳ないですが2問お願いしたいです。。。
while文を使うということは分かるのですが
①
キーボードから文字列を1行(改行するまで)読み込み、文字列を逆向きに出力するプログラムを作成しなさい。
【実行例】
文字列を入力: This is a pen.
逆向き出力 = .nep a si sihT
②
キーボードから文字列を1行(改行するまで)読み込み、つぎに検索する文字keyを1文字読み込む。
最初に入力した文字列の中に、文字keyと一致する文字が何文字あるかを数えて出力するプログラムを作成しなさい。
ただし、空白や記号などを全てカウントして構わない。
ただし、キーボードから文字を(文字列ではなく)1文字読み込むには、getchar文を使う。
char key;
key = getchar();
と記述すれば、キーボードから文字を1文字だけ読み込んで key の中に代入してくれる。
scanf("%c",&key);
を使っても構わない。
【実行例】
文字列を入力: This is a pen.
文字key:s
文字sの頻度=2
129:デフォルトの名無しさん
08/12/17 14:54:11
>>127
助言はちょっとめんどいので、とりあえず動きそうな感じに。
合ってるかは分からないけど
int level(person * p)
{
if (p->bmi < 18.5) return 0;
else if (p->bmi >= 18.5 && p->bmi < 25) return 1;
else if (p->bmi >= 25 && p->bmi < 30) return 2;
else if (p->bmi >= 30 && p->bmi < 35) return 3;
else if (p->bmi >= 35 && p->bmi < 40) return 4;
else return 5;
}
int main()
{
person p[N];
int i;
double NW;
char * hogehoge[] = { "Light", "Normal", "Heavy 1", "Heavy 2", "Heavy 3", "Heavy 4" };
for(i = 0; i < N; i++)
{
fscanf(stdin, "%s %d %lf %lf", p[i].name, &p[i].age, &p[i].height, &p[i].weight);
NW = func(p[i].height, p[i].weight, &p[i]);
printf("%10s %3d歳 %fcm %fkg | 肥満度は「%s」, 標準体重 = %fkg です。\n", p[i].name, p[i].age, p[i].height, p[i].weight, hogehoge[level(&p[i])], NW);
}
return 0;
}
130:デフォルトの名無しさん
08/12/17 15:09:04
[1] 授業単元:
[2] 問題文:
個人データを表す構造体personは、氏名、年齢、身長、体重、BMI(= 体重 / 身長^2)のメンバからなる。
BMIからは肥満度を判別することができる(プログラム中に場合分けしてあるのでそちらを参考)。
以上から、肥満度と標準体重(= 22 * 身長^2)を求めるプログラムを作成せよ。
ただし、(リダイレクト)入力した値とBMIを構造体メンバに格納し、それらメンバの値、肥満度、標準体重を出力すること。
また、BMIおよび標準体重を計算する関数と肥満度を計算する関数を作成して利用すること。
[3] 環境
[3.1] OS:win
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:リダイレクト処理を行ってプログラムを実行する。
頑張ってはみたものの、自分の力ではこれが精一杯でした。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
改善点など、助言をいただきたいです。
131:デフォルトの名無しさん
08/12/17 15:21:12
すみません、>>130はスルーして下さい(^^;
>>129
ありがとうございます。どうやら大丈夫そうです。
実は、関数で場合分けして数値を返して・・・というのは考えていたのですが、返り値をどうにか文字列にできないかとググり、真似したものが投稿したものです。
課題は>>129で提出しようと思いますが、もし文字列を返す関数で定義できるのであれば、教えていただきたいです。
132:デフォルトの名無しさん
08/12/17 15:28:31
>>131
char * level(person * p)
{
static char * hogehoge[] = { "Light", "Normal", "Heavy 1", "Heavy 2", "Heavy 3", "Heavy 4" };
if (p->bmi < 18.5) return hogehoge[0];
else if (p->bmi >= 18.5 && p->bmi < 25) return hogehoge[1];
else if (p->bmi >= 25 && p->bmi < 30) return hogehoge[2];
else if (p->bmi >= 30 && p->bmi < 35) return hogehoge[3];
else if (p->bmi >= 35 && p->bmi < 40) return hogehoge[4];
else return hogehoge[5];
}
133:デフォルトの名無しさん
08/12/17 15:35:30
>>131
もしかしたら見当はずれかもしれませんが、関数内でポインタ配列を定義しても、関数を抜けると消滅してしまうということはないのでしょうか??
134:デフォルトの名無しさん
08/12/17 15:37:48
>>133
staticだから大丈夫
135:デフォルトの名無しさん
08/12/17 15:41:49
>>134
そうなんですか!! (@o@
ちょっとstaticについてググってきます。ありがとうございました。
136:デフォルトの名無しさん
08/12/17 15:47:10
[1] 授業単元:
[2] 問題文(含コード&リンク):
aのx乗(a>0,a≠1,x∈Z)を求める関数power(a,x)を
作成してくなさい。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc32)
[3.3] 言語: (C)
[4] 期限: ([2008年12月20日18:00まで] )
[5] その他の制限: (なし)
137:デフォルトの名無しさん
08/12/17 15:50:22
>>136
返り値どうやって返せばいいの?
138:デフォルトの名無しさん
08/12/17 15:51:14
環境 unixだったけ? 言語: C 期限: 今日 12月17日16:30まで^^;
次のプログラムは、階乗計算の関数factを作りsin(x)をテーラー展開した式でsin(30°)をもとめるプログラムです、抜けている所があります。(___)を埋めて完成しなさい
2k-1
5 k-1 x
Σ (-1) ーーーーーー
k=1 (2k-1)!
※うまく指数が表せませんでした、見にくくて申し訳ないです。
#include<stdio.h>
#include<(____)>
int (___)(int m);
int main(void);
int main(void){
double x, s;
int k;
x =(___*________________)/180.0;
s =(__);
for( k=__; k <=__ k++){
s__ pow(___,___)*pow(__,_______)/fact(____);
}
printf("sin=%.7__\n",s);
return(0);
}
int fact(int m)
{
int s = 1, i;
if (m___0) return (__);
else for(i=1;i<=m;i++) s (___) i;
return (___);
}
139:デフォルトの名無しさん
08/12/17 15:56:25
授業中かよw
140:デフォルトの名無しさん
08/12/17 15:59:25
Unixな奴です。 C言語
1.正整数nを入力し、nまでで4で割り切れる数(4の倍数)の和を出力するfor文を利用したプログラムをつくりなさい
4+8+12+・・・・= ???
2.1の問題でfor文の変わりにWhile文を利用して作りなさい。
3.ある駐車場の駐車料金は、1時間(60分まで)350円で、以降15分ごとに90円です。
入庫時刻と出庫時刻を入力し、駐車料金を算出すプログラムを作りなさい。
次のプログラムは、階乗計算の関数factを作りsin(x)をテーラー展開した式でsin(30°)をもとめるプログラムです、抜けている所があります。(___)を埋めて完成しなさい
です、お願いします。なにもわからず瀕死状態です。テスト中です;;
141:デフォルトの名無しさん
08/12/17 16:05:10
>136
全然わからないんです。
ヒントに
A=aのx乗
両辺の対数をとる
loge A=xloge a
となり
A=eのloge a
となる
log xはlog(x)と書く.
と書いてありました。
142:デフォルトの名無しさん
08/12/17 16:16:40
>>136
#include <stdio.h>
double power(int a, int x)
{
if (x == 0) return 1.0;
if (x < 0) return power(a, x + 1) / a;
if (x > 0) return power(a, x - 1) * a;
}
int main()
{
printf("%g\n", power(2, -3));
return 0;
}
143:デフォルトの名無しさん
08/12/17 16:23:05
>>140
今テスト中なの?
144:テスト中
08/12/17 16:23:45
>>143
そうです>_<
145:デフォルトの名無しさん
08/12/17 16:24:24
すげえ。
146:デフォルトの名無しさん
08/12/17 16:25:50
そろそろタイムリミットなんじゃないの?テスト。
テスト中に2chリロードしまくってるとか超笑える
147:デフォルトの名無しさん
08/12/17 16:28:30
提出の余裕をもってる可能性も考慮しろ
148:テスト中
08/12/17 16:29:05
もう\(^o^)/ オワタ ...
149:テスト中
08/12/17 16:30:52
ぐは OUT のゴング(チャイム)
150:デフォルトの名無しさん
08/12/17 16:41:27
>>140 (1)
#include <stdio.h>
#define HOGE 4
int main(void)
{
int n=50;
int num;
int result = 0;
for (num = n / HOGE; num>0; num--)
result += num * HOGE;
printf("n=%d sum=%d\n", n, result);
return 0;
}
151:デフォルトの名無しさん
08/12/17 16:42:17
無茶しやがって・・・
152:デフォルトの名無しさん
08/12/17 16:42:42
>>140 (2)
#include <stdio.h>
#define HOGE 4
int main(void)
{
int n=50;
int result = 0;
int num = n / HOGE;
while (num>0)
result += num-- * HOGE;
printf("n=%d sum=%d\n", n, result);
return 0;
}
153:デフォルトの名無しさん
08/12/17 16:50:59
[1] 授業単元:プログラミング演習
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland
[3.3] 言語:C++
[4] 期限:2008年12月22日(12:00)までです。
よろしくお願いします。
154:デフォルトの名無しさん
08/12/17 16:57:45
>>128
1.
#include <stdio.h>
int main(void){
char c[100] = "";
int i;
printf("文字列を入力:");
gets(c);
printf("逆向き出力:");
for(i = 99; i >= 0; i--) putchar(c[i]);
putchar('\n');
return 0;
}
155:デフォルトの名無しさん
08/12/17 16:58:42
>>128
2.
include <stdio.h>
int main(void){
char c[100] = "";
char key;
int i, j = 0;
printf("文字列を入力:");
gets(c);
printf("文字key:");
key = getchar();
printf("文字%cの頻度=", key);
for(i = 0; i < 100; i++) if(c[i] == key) j++;
printf("%d\n", j);
return 0;
}
156:デフォルトの名無しさん
08/12/17 17:00:56
>>140 (3)
#include <stdio.h>
int main(void)
{
int time0, time1, temp;
int result = 350;
printf("入庫");
scanf("%2d:%2d", &time0, &temp);
time0 = time0 * 60 + temp;
printf("出庫");
scanf("%2d:%2d", &time1, &temp);
time1 = time1 * 60 + temp;
if (time0 >= time1)
return 1;
time1 -= (time0 + 60);
if (time1 > 0)
result += 90 * (time1 / 15 + 1);
printf("%d円\n", result);
return 0;
}
157:デフォルトの名無しさん
08/12/17 17:09:50
>>119です。
>>91をiostreamを使った型に>>95と>>120を参考に書き直してみたのですが以下
のようなエラーが出ます。
21行目は「t-2?(cin >> p >>i),p+=i*9:):++p;」なのですが)の前に;を入れた
ら余計に沢山エラー文が出てしまいます。どうかお助けください!
#include <iostream>
using namespace std;
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)
for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){a+=c;v=p;if(d)do m[v]=t,v+=r[i];
while(m[v]!=t);}}}
char*h="・○●\n";int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;
for(;;a=d=0){for(p=9;p<82;++p)k(),cout<<h[m[p]*2];
if(a)
for(d=a=s=p=8;a==8;k())
t-2?(cin>>p>>i),p+=i*9):++p;else if(s)s=0,cout<<"pass";
else break;
t=3-t;
}return 0;}
エラー文
In function 'int main()':last.cpp:21: error:expected primary-expression before ')' token
last.cpp:21: error: expected `;'before ')' token
158:デフォルトの名無しさん
08/12/17 17:14:35
あ、改行が多すぎて書き込めなくて改行を消したので21行目ではないですが、該当ヶ所は同じです。
宜しくお願いします!
159:デフォルトの名無しさん
08/12/17 17:17:57
括弧の数がおかしいじゃん
っつーか、やめとけ。
160:デフォルトの名無しさん
08/12/17 17:23:03
>>159
なにがやめとけなんですか?
161:デフォルトの名無しさん
08/12/17 17:23:44
そんなペースでやってるようじゃらちがあかんということ。
1年ぐらいかけるつもりなら止めないけど
162:デフォルトの名無しさん
08/12/17 17:26:30
レイアウトを整えて
変数の意味を理解し次第replaceして
短くするための記述方法を開く。i++*9とか。
理解してないうちにprintfをcoutにしてみました!とか何でそう無謀な方向に進むのかがわからんよ。
163:デフォルトの名無しさん
08/12/17 17:38:54
>>161-162
必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
どう直せばよろしいんでしょうか…('`)
164:デフォルトの名無しさん
08/12/17 17:44:24
>>163
>必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
その心意気が気に入ったのでコンパイル時にエラーが出ないようにしといた。
#include <iostream>
using namespace std;int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(
c&&m[v]==t){a+=c;v=p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n"
;int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0
){for(p=9;p<82;++p)k(),cout<<h[m[p]*2];if(a)for(d=a=s=p=8;a==8;k())t-2?(cin>>p
>>i),(p+=i*9):++p;else if(s)s=0,cout<<"pass"; else break;t=3-t;}return 0;}
165:デフォルトの名無しさん
08/12/17 17:48:59
>>163
元のソースは他人のだな。
スレリンク(tech板:1-25番)
21
166:デフォルトの名無しさん
08/12/17 17:54:08
前スレ868です。
遅くなってすみません。
970さん、ありがとうございました。
しかし、問題文が不十分だったため、もう一度お尋ねします。
すみませんが、よろしくお願いします。
[1] 授業単元:プログラミングII
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WinVista
[3.2] コンパイラ名とバージョン:VC++2008
[3.3] 言語:C言語
[4] 期限:2008年12月17日18:00
[5] その他の制限:問題文のテキストファイルに、例を載せておきました。
何度もすみませんが、どうかよろしくお願いします。
167:デフォルトの名無しさん
08/12/17 18:00:22
>>166
スレリンク(tech板:972番)
じゃね?
168:前スレ987
08/12/17 18:02:50
何度もすいません。自分では解らないので
再度、できる方がいればよろしくお願いしますm(-_-)m
[1] 授業単元: プログラミングⅡ
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 2008年12月17日3:00まで
[5] その他の制限:
課題2のみお願いします。
課題2で使う課題1のソースは自作して問題文に張っておいたので
それを使用して作成おねがいします。
169:デフォルトの名無しさん
08/12/17 18:03:46
>>154-155
ありがとうございます!
170:デフォルトの名無しさん
08/12/17 18:06:11
>>90
ほい。過去の資産流用。(笑)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
後から表示例見たんで、もうそのままにしてある。
表示ぐらいは何とかしてくれ。必要な要素は揃ってるはず。
後、整数で計算ということだが、作ったテストデータで都合が悪かったんで、
double でやってる。これも気に入らんかったら変えてくれ。
しかしお前、誤字多いな。w
171:デフォルトの名無しさん
08/12/17 18:06:57
>>164
ありがとうございます!
>>165
このスレの119代目で教えてもらいましたw
そのスレの中身も参考になりました。どうやって動くか分からなかったのでw
あ、>>162さんの短くする方法を使って申し訳ないんですがまた書いて欲しいです…学校で習った記述と違う部分があるので…
本当にすいません'`
172:デフォルトの名無しさん
08/12/17 18:15:15
>>163
なーんだ。じゃあそれが必修であるような学科に入ったのが間違いだよ
173:デフォルトの名無しさん
08/12/17 18:15:20
>>153
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 128
#define Y 15
#define H 5
int main(void)
{
char buff[N];
int year[Y], height[H];
int i, j;
FILE *fp = fopen("cshukudai.csv", "r");
for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < Y; ++i) height[i] = 0;
while (fgets(buff, N, fp) != NULL) {
strtok(buff, ",");
year[atoi(strtok(NULL, ",")) - 1975]++;
height[(atoi(strtok(NULL, ",")) - 166) / 5]++;
}
puts("生まれた年のヒストグラム");
for (i = 0; i < Y; ++i) {
printf("%4d:", 1975 + i);
for (j = 0; j < year[i]; ++j) putchar('*'); puts("");
}
puts("\n身長のヒストグラム");
for (i = 0; i < H; ++i) {
printf("%3d-%3d:", 166 + 5 * i, 170 + 5 * i);
for (j = 0; j < height[i]; ++j) putchar('*'); puts("");
}
fclose(fp);
return 0;
}
174:デフォルトの名無しさん
08/12/17 18:16:32
1箇所間違えてた
>for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < Y; ++i) height[i] = 0;
for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < H; ++i) height[i] = 0;
175:デフォルトの名無しさん
08/12/17 18:18:10
>>153
URLリンク(kansai2channeler.hp.infoseek.co.jp)
176:デフォルトの名無しさん
08/12/17 18:32:44
>>153です
>>174さん
すいません、書くのを忘れていましたが
読み込みファイル(cshukudai.csv)の数値を変えると、表示結果も変わるようにするんでしたorz
例えば、生まれた年の最低値は1975年ですが
cshukudai.csvの誰か一人の生まれた年を1970年に変更すると
ヒストグラムは、1970:* 1971: 1972:... と表示されるようにしたいんです。
分かりにくくてすいません。。。
177:デフォルトの名無しさん
08/12/17 18:41:44
>>176
>>175 のはそうなってる。レコード数は25で決めうちしてるけど
178:168
08/12/17 18:47:24
期限は18日3時の間違えです
すいません
179:デフォルトの名無しさん
08/12/17 19:19:41
なんで7行オセロを宿題に出すの?自由課題なの?
180:デフォルトの名無しさん
08/12/17 19:20:12
>>87
ありがとうございます、助かりました
181:デフォルトの名無しさん
08/12/17 19:53:23
>>179
なんでそんな、個人的などうでも良い質問をして
宿題に答えるのとは直接関係の無いレスしてんの?
馬鹿なの?野次馬なの?
182:前スレ866
08/12/17 19:54:31
[2] 問題文(含コード&リンク)
1.数式を入力する(例:x^2y^3 + 2x^2z^3 - y^5)
2.並び替える(優先順位:乗数が大きいものが先、乗数が同じ場合は係数が大きいものを優先する)
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] 言語:C
[4] 期限: 2008年12月17日
数式を読み込んで式を個別に別けるとこまでは出来たんですが、(x^2y^3, +2x^2z^3, -y^5)
この別けた式から係数と乗数をどのようにして摘出するかアドバイスもらえませんか?
183:デフォルトの名無しさん
08/12/17 19:54:37
>>181
無能ほど退屈
184:デフォルトの名無しさん
08/12/17 20:10:52
7行オセロとか変態的だからコピってもバレること請け合いなのに。
185:デフォルトの名無しさん
08/12/17 20:15:19
前スレの931の方
どうもありがとうございます。
186:デフォルトの名無しさん
08/12/17 20:17:17
[1]C
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]LINUX
C
[4]6時間後(木曜日午前2時)
よろしくお願いします。
187:デフォルトの名無しさん
08/12/17 20:18:27
>>181
じゃあお前が7行オセロの宿題に答えてやれよwww
188:デフォルトの名無しさん
08/12/17 20:23:41
>>182
係数、xの乗数、yの乗数をひとまとめにしてスタックに入れてやればいいんじゃね?
xの2乗と1乗が同時に出ることがないのならば。
189:デフォルトの名無しさん
08/12/17 20:23:53
>>181はコンパイルできなくてイライラがたまってきた質問者
190:デフォルトの名無しさん
08/12/17 20:35:01
>>187
> じゃあお前が
ここは個人を指定、名指しして答えてもらうスレでもないんだが、
マジでスレタイと>>1が読めるようになってから、社会に出ろよ、ガキ
191:デフォルトの名無しさん
08/12/17 20:35:48
[1] 授業単元: 暇潰し
[2] 問題文:
9桁までの素数で、
右から一桁ずつ桁数を減らしていった数が全て素数であるもの
を昇順に全て出力する (1行に1つずつ)。
最後に、1行空けて総数を出力すること。
出力先は、標準出力のこと。
例) 233 => 23x => 2xx
23 や 2 も上記条件を満たす素数である。
また、
「左」から一桁ずつ桁数を減らしていった数が全て素数であるもの
も同様に求めよ。
例) 223 => x23 => xx3
[3] 環境
OS,コンパイラは、特に指定しない。
言語は、 C/C++ のどちらでも。
[4] 期限: 12/25
[5] その他の制限:
プログラムの実行時間は、2秒以下とする。
192:182
08/12/17 20:37:29
>>188
どうしたらいいですかね?
^の後の数字にしたら乗数が2桁以上のときに対応できないし…
文字列から数字だけを抽出する方法とかないですか?
193:デフォルトの名無しさん
08/12/17 20:39:32
>>192
strto?()たとえば、strtol()で調べてみるといいよ。
194:デフォルトの名無しさん
08/12/17 20:40:02
>>192
^の後ろに続く数字は全部乗数(っていうんだっけ?)として扱えばいいんじゃない?
195:デフォルトの名無しさん
08/12/17 20:41:23
>>192
いや乗数が2桁のときはスタックの考え方でいけるだろ
例えば1つ目の数値があったとして2つ目の数値が来たら
1つ目の数値×10+2つ目の数値を記憶するとか。
196:デフォルトの名無しさん
08/12/17 20:47:39
[1] 授業単元:C++
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 2005
[3.3] 言語:C++
[4] 期限: 12月18日18:00迄
[5] その他の制限:strlenを使ってはいけない。for,if,while文は可。
よろしくお願いします。
197:デフォルトの名無しさん
08/12/17 20:49:12
>>196
同じ学校か?
>>154-155
198:デフォルトの名無しさん
08/12/17 20:52:44
>>197
!?
うわ、見てませんでした。すいません。
ありがとうございます。
199:デフォルトの名無しさん
08/12/17 21:13:14
>>196 きんもぉ~★なクソースでおじゃる。
他人と似たソースを提出したら、疑われるでおじゃるよ。
麻呂のソースを採用してたもう。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
200:デフォルトの名無しさん
08/12/17 21:15:44
>>199
これまた酷いクソースだなwww
201:デフォルトの名無しさん
08/12/17 21:15:52
>>191
1個目は166個?
202:201
08/12/17 21:19:29
83に訂正!
203:デフォルトの名無しさん
08/12/17 21:22:16
>>196 2つめのクソースでおじゃる。チムポファイルを使うでおじゃるよ。
さすれば、環境によるけど、文字数の制限は気にせず、チムポファイルの
許容範囲にまで広がるでもじゃる。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
204:デフォルトの名無しさん
08/12/17 21:24:31
>>199 >>203
いちいちファイルに読み書きしてるのかよ
205:デフォルトの名無しさん
08/12/17 21:30:41
>>204
いちいち文字配列に書き込むのは良いのかよ?
どちらにしろ、一時的に記憶領域を確保して記録している点は同じだろ。
意見するにしても、考えが浅はか過ぎるんだよ、未熟者ってのは。
自分がそうしないこと=ありえない、間違っているという考えは、
多様化する社会では通用しない、孤立する考え、思想。
206:デフォルトの名無しさん
08/12/17 21:33:11
まぁ、この世は不平等でも、C言語のライブラリは開発環境さえあれば、
誰でも同じものを共通して利用することが出来る。
しかし、経済力や技術力の差で、一般ピーポー君は
いくら高性能なエンジンを積んでも、混雑する路上を移動。
一方、金持ち、ヘリの免許とヘリを所有している大企業の社長は
昼食のために、ヘリで移動。費用は雲泥の差だがなw
そういうこと。
207:デフォルトの名無しさん
08/12/17 21:33:26
独走過ぎて他人に読めないソース書かれても困ったもんだがなw
個人的にはあのクソースはGJだとは思うがwww
208:191
08/12/17 21:36:53
>>202
83 で正解です。
因みに、最後(83番目)の素数は、73939133。
209:デフォルトの名無しさん
08/12/17 21:39:46
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
「果物名 単価 個数」の形式の取引のデータのファイルを読み込む。ファイルを読み込み終わった後に、「取引の総数」、
「合計の金額」、「金額が最大であった取引の(整数計算でする)」、「1取引あたりの平均金額(整数計算でする)」、
「金額の最大であった取引(最初を1とする)の番号」と「その金額」をprintfを用いて標準出力に表示するプログラムを作れ。
入力データファイルには /home/sample/PE1/2008/e12.txt を用いる。(ファイル名はfopenの因数に文字列定数として書いてよい)
ファイルの全データを格納できるような大きな配列を用いてはいけない。(平均は、金額の合計と取引の総数から計算できる)
個数と金額は、ゼロまたは府の値にならないとする。また、取引金額の最大値が複数の取引に現れることはないものとする。
出力の形式は次の実行結果の例。
取り引数10
合計金額6424円 合計個数57個
平均112円/個 642円/取引
最大の取引は6番目で2064円
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年12月17日23時59分
[5] その他の制限:制限なし
210:デフォルトの名無しさん
08/12/17 21:41:25
使えるものは使え。テンポラリーファイルだって、普通に使われているんだが?
技術力にしても、知識にしても、ここの連中はレベルが低すぎるんだよ。
211:デフォルトの名無しさん
08/12/17 21:54:03
>>172
そうなんですよねー
>>179
はいそうです。
>>184
なんとまぁ!w
ばれないように部分的に変えようと思うのでまた聞きにきますw
>>189
>>164でコンパイルできないんですか!?
まだ確かめられてなくて・・・
212:デフォルトの名無しさん
08/12/17 22:10:27
>>209
ちょーてきとー
#include<stdio.h>
int main(){
int max_i=0,max_total=0;
int i,num,cost;
int sum = 0;
int total_num = 0;
if(!freopen("/home/sample/PE1/2008/e12.txt","r",stdin)){
perror("/home/sample/PE1/2008/e12.txt");
return;
}
for(i=0;scanf("%*s%d%d",&num,&cost)!=EOF;++i){
int total = num*cost;
if(total > max_total){
max_total = total;
max_i = i;
}
sum += total;
total_num += num;
}
printf("取り引数%d\n",i);
printf("合計金額%d円 合計個数%d個\n",sum,total_num);
if(i)printf("平均%d円/個 %d円/取引\n",sum/total_num,sum/i);
printf("最大の取引は%d番目で%d円",max_i+1,max_total);
}
213:デフォルトの名無しさん
08/12/17 22:11:28
>>191
2個目は2166?
214:デフォルトの名無しさん
08/12/17 22:30:14
[1] 授業単元: 科学実習Ⅰ
[2] 問題文:
以下の配列を小さい順にならべ変えるプログラムを作れ。
int numbers{10} = {82,47,2,29,95,15,38,66,51.72}
[3] 環境
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン:gcc -o
[3.3] 言語: C言語
[4] 期限: 2008年12月31日23時59分
[5] その他の制限:特になし、お願いします。
215:デフォルトの名無しさん
08/12/17 22:33:06
>>214
ほい
#include <stdlib.h>
int compare(const int *a, const int *b)
{
return *a - *b;
}
main()
{
int numbers{10} = {82,47,2,29,95,15,38,66,51.72} ;
int i;
qsort(numbers, sizeof(numbers) / sizeof(int), sizeof(int), (int (*)(const void*, const void*))compare);
for (i = 0; i < 10; i++) {
printf("%d", data[i]);
}
printf("\n");
}
216:デフォルトの名無しさん
08/12/17 22:34:47
>>191
> プログラムの実行時間は、2秒以下とする。
CPUの性能で差が出るのに?
217:デフォルトの名無しさん
08/12/17 22:42:29
>>191
2166個目の数は999962683で合ってる?
2166個だとprint文で結構掛かりそう
218:202=213
08/12/17 22:51:55
>>217
実はちゃんと昇順で出してなかったから、最大値をはかってみたんだけど、999962683になってたよ。
2166なのは出るけど超遅い!これ2秒でできるのだろうか?
1個目は0.8秒(Core2Duo3Ghz)だけど2個目は40秒くらいかかる。。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
もしよかったらどう解いたか教えてください。
219:217
08/12/17 22:55:47
>>218
前の桁で求めた数値を利用するくらいしかしてない
自分の環境だとギリギリ2秒くらい
URLリンク(kansai2channeler.hp.infoseek.co.jp)
220:デフォルトの名無しさん
08/12/17 22:56:47
それまで求めた素数を使ってもおkなんでしょ?
右にずらす、つまり10で割っていった値がそれ以前に求めた素数に
該当すればおk。
221:デフォルトの名無しさん
08/12/17 23:00:13
なにいってんだ?
222:217
08/12/17 23:00:26
>>220の方法が最速っぽいな
223:デフォルトの名無しさん
08/12/17 23:01:08
>>221
だから理解力のない、日本語力もない馬鹿はレスするなつってんだよ、基地外
224:217
08/12/17 23:01:23
ん、右にずらす前の素数判定で時間食うか
225:デフォルトの名無しさん
08/12/17 23:01:46
>>221
それまで求めた値を使えば、わざわざ右にずらした値が
素数か、また求めなおす必要もないんだが?池沼は黙ってろよ。
226:デフォルトの名無しさん
08/12/17 23:02:41
>>224
エラトステネスの篩を使うのもありじゃね?ただ、いくら速度を求めても
最終的にはCPUの性能に左右される。
227:デフォルトの名無しさん
08/12/17 23:04:44
単純にふるいがけすると10億要素必要だからキツイ。
2 3の倍数を除いたとしても3億なのでキツイ。
9桁までの素数を配列に詰めて2分探索するのがいいと思う
228:デフォルトの名無しさん
08/12/17 23:06:17
>>227
それ言うと>>191の解をあらかじめテーブルに持っておきたくなるなw
229:デフォルトの名無しさん
08/12/17 23:07:47
[1] 授業単元: ネットワークプログラミング演習
[2] 問題文:
HTTP1.1プロトコルを満たすサーバとクライアントを作れ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
までは出来たんですが、
サーバが、fgetsしてクライアントの要求のGET /index.htmlを確認したら、残りの要求を無視するようにすると、ときどきパイプ破壊と表示されてプログラムが停止します。
これってどういう原因で起きてるんでしょう?(sarver.cの70行目前後です)
後、のこった要求を
while(fgets (str, STR_SIZE, ns_read));
で読もうとするとfgetsのところから進まなくなります。
これもなぜなんでしょう?
[3] 環境 Linux gcc
[4] 期限: 明日の昼頃まで
[5] その他の制限: とくになし
みにくいソースですけどよろしくお願いします。
他にも改善点などあれば教えていただきたいです。
230:デフォルトの名無しさん
08/12/17 23:08:23
処理の中で求めてその一覧をキャッシュして使うのは何も問題ないっしょ
9桁だからintにおさまるし、悪くはないと思う。
231:デフォルトの名無しさん
08/12/17 23:11:29
>>225
右にずらすって考え方がそもそもおかしい。
元の素数に数値を足してそれが素数か判定してくのが早い。
232:デフォルトの名無しさん
08/12/17 23:12:18
>>231
問題文がそうなんだが?いちいち五月蝿いなぁ、あんたは。
233:デフォルトの名無しさん
08/12/17 23:15:19
いやいや、>>231じゃないが、そういう順で判定を行えとは書かれてないよ。
そういう形の数であるかどうかだけなので、組み立てた結果そういう数字になっているというのもありだと思う。
が、そっちの方が速いかどうかは俺には分からん。
234:デフォルトの名無しさん
08/12/17 23:16:20
>>219
実行速度確認したかったけどコンパイルできなかった…
Borland C++なんですけど
235:デフォルトの名無しさん
08/12/17 23:17:28
long longをintにすれば?
236:デフォルトの名無しさん
08/12/17 23:18:16
それまで求めた素数を10倍して、10未満の素数を足してそれが素数か?
それを繰り返せばおkってか?
237:デフォルトの名無しさん
08/12/17 23:19:59
10未満の素数ではなく、1 3 7 9 について吟味すればいいんじゃないかな。
238:デフォルトの名無しさん
08/12/17 23:22:31
>>235
ありがとうございます!神よ!
239:デフォルトの名無しさん
08/12/17 23:37:43
[1]授業単元:C言語
[2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月18日AM7時30分まで
[5]特にありません,よろしくお願いします。
240:デフォルトの名無しさん
08/12/17 23:37:47
[1]授業単元:プログラミングC
[2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: gcc
[3.3]言語:C
[4]期限:2008年12月20日 18時30分
よろしくお願いします
241:デフォルトの名無しさん
08/12/17 23:40:55
[1] 授業単元:プログラミングⅡ
[2] 仕様に基づいたシミュレーションプログラムを作成し、シミュレーション結果をExcelでグラフにしなさい。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
[3.3] 言語:c言語
[4] 期限:12月18日
よろしくお願いします
242:191
08/12/17 23:48:08
レス遅くなりました ごめんなさい
>>213,217,218
ですね。
最後の素数は、 999962683 です。
桁制限を外せば、
全部で 4260 個で
最後の素数は、357686312646216567629137 (24桁)だそうです。
どちらも有限集合なんですね。
にしても、回答が速いですね。
すごい。
>>216
32ビット CPU 動作周波数1GHz 以上を想定してました。
>>233 さんの言う通り、
求め方を指定したつもりは無かったです。
>>219
一桁の素数はハードコーディングでもよかった・・・スミマセン
243:デフォルトの名無しさん
08/12/17 23:49:37
999962683 > 99996268 < ん?
244:デフォルトの名無しさん
08/12/17 23:51:43
9999626 < んん?
999962 < んんん?
99996 < んんんん?
9999 < んんんんん?
999 < んんんんんん?
99 < んんんんんんん?
9 < えっ!?
245:デフォルトの名無しさん
08/12/17 23:51:48
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
数学と英語の成績の2つのファイルを読んで処理する。
数学の成績ファイル math.txt の各行は「学生番号」「名前」「数学の得点」のデータがあり
英語の成績ファイル english.txt は「学生番号」「名前」「英語の得点」のデータがある。
2つのファイルの行数は同じ。原則的に学生も同じ順序だが、いくつかは間違っている。
2つのファイルを読み込み、両ファイルで学生番号が一致する学生は「2科目得点の和が140点以上」
かを判定し、そうなら「学生番号」「名前」「数学の得点」「英語の得点」「合計得点」を、
不一致ならば「<番号>と<番号>で一致せず」を1行でreport.txtという名のファイルに出力。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年12月18日12時00分
246:デフォルトの名無しさん
08/12/17 23:56:35
>>243
2種類あるから。。
247:デフォルトの名無しさん
08/12/17 23:57:47
>>242
へええ、有限なんだねぇ。
そりゃそうか、と納得する一方で、なんか残念な気持ちも。
248:デフォルトの名無しさん
08/12/18 00:14:45
麻呂の会社は有限でおじゃるが、残念でもないでおじゃるよ。
249:デフォルトの名無しさん
08/12/18 00:26:52
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 明日の12時まで
[5] その他の制限:特になし
250:デフォルトの名無しさん
08/12/18 01:20:48
URLリンク(p1-up.axfc.net)
[1] 授業単元:
[2] 構造体の配列を作った住所録(メニューを使った選択式)
関数を使ってプログラムの最初にファイルを呼び出し 入力ファイルから構造体を読み込む(readモード)
メニューから終了を選ぶと配列からファイルへ出力
[3] 環境:普通
[3.1] WindowsVista
[3.2] visualstudio 2005
[3.3] 言語 C
[4] 期限: ([2008年12月18日12:00まで]
[5]住所録のcppファイルは↓にうpしてあります キーワードは「C言語」です
URLリンク(p1-up.axfc.net)
251:デフォルトの名無しさん
08/12/18 02:08:15
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):下のレス
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年12月24日 13:00
[5] その他の制限: ヒントを使って作るらしいです。よろしくお願いします。
252:251
08/12/18 02:10:48
[2]問題文
下記プログラムは 文字列Tokyo を逆順に表示するプログラムである.
#include<stdio.h>
main()
{
static char string[ ]=“Tokyo”;
char *cp;
cp = string + 6;
while(--cp >= string)
putchar(*cp);
putchar(‘\n’);
}
実行結果
oykoT
上記プログラムを関数recpy()を作成して書き直しなさい.main関数をヒントに示す.データのやり取りにはポインタを用いること
253:251
08/12/18 02:11:20
関数作成のヒント
*ptr1 *ptr2 tempc の3つの変数を宣言して使用する.
逆に表示させるためには,文字の入れ替えをしなくてはならない.ソートプログラムを思い出す.
char *recpy(ptr)
char *ptr;
{
char *ptr1, *ptr2, tempc;
ptr1 = ptr2 = ■■■ ここは考える ■■■;
while(■■■ ここは考える ■■■){
■■■ ここは考える ■■■
}
--ptr2;
while(■■■ ここは考える ■■■)
{
文字列の入れ替え
}
254:デフォルトの名無しさん
08/12/18 02:24:43
スレ違いで申し訳ありませんが、>>191 の答えのソースはありますか?
自分でも作ってみましたが、83個でしたが、昇順に並べるところまでは出来なかったものでして。
255:デフォルトの名無しさん
08/12/18 02:54:25
どうスレ違いか分からないが、>>191が満足してるということはどこかにうまく動作するコードがあるだろう。
そのコードを入手、提出することで>>254 >>191のいずれかまたは両方の評価が下がるだろう。
256:デフォルトの名無しさん
08/12/18 02:55:32
>>255
> どうスレ違いか
宿題じゃないから。ある人が出した、突発的な課題だから。
257:デフォルトの名無しさん
08/12/18 02:56:38
授業単元が暇つぶしだw
258:デフォルトの名無しさん
08/12/18 02:58:12
>>255
> のいずれかまたは両方の評価が下がるだろう。
なんで評価が下がるか、こっちの方が分からんわ・・・
259:デフォルトの名無しさん
08/12/18 03:29:21
同じコードが複数提出されたらそりゃ減点だろ
260:デフォルトの名無しさん
08/12/18 03:31:45
>>191 なんか乗り遅れて悔しいぜ。 昇順にしてない分だけ >>219 より早いかもしれない
#include<stdio.h>
#include<time.h>
int isprime(int value){
int i;
if(value<=1) return 0;
if(value%2==0) return value==2;
for(i=3;i*i<=value;i+=2) if(value%i==0) return 0;
return 1;
}
void foo(int value, int digit, int maximum){
int i, next_value;
if(isprime(value)){
printf("%d\n", value);
if(value>=maximum/10) return;
next_value=value, digit*=10; // こっちが左から消しても素数
// next_value=value*10, digit=1; // こっちが右から消しても素数
for(i=1;i<=9;i++){
next_value+=digit;
if(next_value>maximum) return;
foo(next_value, digit, maximum);
}
}
}
int main(void){
int i;
clock_t s;
s=clock();
for(i=1;i<=9;i++) foo(i, 1, 1000000000);
printf("%.3f[sec]\n", (double)(clock()-s)/CLOCKS_PER_SEC);
return 0;
}
261:デフォルトの名無しさん
08/12/18 03:37:55
>>260
右からのは83個と少ないから速いね。自分のも>>260のも、自分の環境では
0 ~ 15ms で終了してるから、ほぼ処理時間は同じかな。自分も並び替えてはいないけど。
262:デフォルトの名無しさん
08/12/18 03:48:27
>>226
エラトステネスの篩でやってみた
10^9 以下の素数をすべて求める段階だけで 60 秒かかる (PentiumM 1.7GHz)
素数テーブルが完成した後から時間を計ると早い(0.10秒)けどねw
263:デフォルトの名無しさん
08/12/18 04:01:54
>>262
すまん、思いつきで言ったが、明らかに効率が悪いとすぐに分かったw
264:250
08/12/18 04:04:06
URLリンク(kansai2channeler.hp.infoseek.co.jp)
さっきつながらなかったので送れてしまいましたがうpしました。
お願いいたします
265:デフォルトの名無しさん
08/12/18 05:10:07
>>209=>>90
てんめぇ、せっかく人が作ってやってんのに、同じ宿題書き込んでんじゃねーよ。
10個程度しかレス見られないのかよ、カス。
266:デフォルトの名無しさん
08/12/18 05:51:12
同じ学校の別の生徒だろ
267:デフォルトの名無しさん
08/12/18 05:59:02
>>229
>>239
>>240
>>241
>>245
>>249
>>251
268:デフォルトの名無しさん
08/12/18 06:11:42
[1]授業単元:C言語
[2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月18日AM8時00分まで(それか昼まで・・)
[5]急で申し訳ないのですがよろしくおねがいします
269:デフォルトの名無しさん
08/12/18 06:24:24
>>268
#include<stdio.h>
int main(void)
{
unsigned int x=0x10fa; /*演算対象の初期化*/
unsigned int y=0x000F;
printf("%X AND %04X : %04X\n",x,y,x&y);
printf("%X OR %04X : %04X\n",x,y,x|y);
printf("%X XOR %04X : %04X\n",x,y,x^y);
printf("%X >> 2 : %04X\n",x,x>>2);
printf("%X << 2 : %04X\n",x,x<<2);
return 0;
}
270:デフォルトの名無しさん
08/12/18 06:25:12
スイマセン、どなたか
>>239 の方を解いてもらえないでしょうか?
271:デフォルトの名無しさん
08/12/18 06:38:13
>>239(あまり検証してない)
#include <stdio.h>
#define NINZU 3
#define KAMOKU 4
int main()
{
int ten[NINZU][KAMOKU]={ /*国語、算数、理科、社会の順に格納*/
{69,62,68,72}, /*伊藤くんの成績*/
{28,100,88,48}, /*田中さんの成績*/
{60,48,65,76}}; /*林くんの成績*/
int total = 0; /*合計点数*/
int i, j, all60over;
for (i=0; i<NINZU; i++) {
total = 0;
all60over = 1;
for (j=0; j<KAMOKU; j++) {
total += ten[i][j];
if (ten[i][j] < 60) all60over = 0;
}
if (total >= 260 || all60over) {
printf("OK\n");
} else {
printf("NG\n");
}
}
return 0;
}
272:デフォルトの名無しさん
08/12/18 06:55:16
>>268
っつか、演算子を使わずに実装しろってオチは無かろうな?
273:268
08/12/18 07:15:39
>>272
ハイ、それはないです。
274:デフォルトの名無しさん
08/12/18 07:53:27
>>240
それくらい短い問題文なら、upローダ使わなくて、直接書いても大丈夫だと思う。
#include <stdio.h>
int getTeenagerCount(int *age){
return *age<0?0:(*age/10==1)+getTeenagerCount(age+1);
}
int main(){
int age[] = {18,29,10,19,22,9,20,-1};
printf("The number of teenager:%d\n",getTeenagerCount(age));
}
275:デフォルトの名無しさん
08/12/18 09:12:37
>>264
どれ?
276:250
08/12/18 10:59:58
8391zip 住所録 と書いてあるものです
277:デフォルトの名無しさん
08/12/18 11:40:27
>>245のものですが
リミットが迫ってるので出来るだけ早くお願いします。
278:250
08/12/18 12:25:46
リミット過ぎてしまいましたが
もしよろしければ引き続きお願いたします<(_ _)>
279:デフォルトの名無しさん
08/12/18 12:37:59
「2科目得点の和が140点以上」かを判定したらどうするの?
入力はどんな形式のファイルになっているの?
入力は正しい形式になっていると仮定してもよいの?
280:デフォルトの名無しさん
08/12/18 12:43:50
>>277
URLリンク(kansai2channeler.hp.infoseek.co.jp)
281:166
08/12/18 12:44:27
>>167
習ってない関数が多いので、だめだと言われました・・・
すみませんが、もう一度お願いします。
282:デフォルトの名無しさん
08/12/18 12:53:25
>>280
ありがとうございます。
283:デフォルトの名無しさん
08/12/18 13:20:40
>>245
ファイル形式はcsvでよろしいでしょうか?
284:デフォルトの名無しさん
08/12/18 13:26:32
>>281
習ってない関数ってどれのことだよ
285:デフォルトの名無しさん
08/12/18 13:39:17
カマかけられたんじゃないの?
286:デフォルトの名無しさん
08/12/18 13:42:58
前スレ972のどこに習ってない関数が・・・
287:デフォルトの名無しさん
08/12/18 14:03:24
>>278
そもそも課題の内容が分からないし、
そのコンパイルも通らないファイルをどうしたいのかさえ
288:281
08/12/18 14:23:38
>>284
>>286
const、boolなどです。
というより、例あるのだから、それにあてはめてやれと言われました。
289:デフォルトの名無しさん
08/12/18 14:40:34
>>288
自分で当てはめればいいだろ
290:デフォルトの名無しさん
08/12/18 14:45:42
>>229をよろしくお願いします
291:デフォルトの名無しさん
08/12/18 14:59:36
>>290
はじめのは
GET /
が見つからなかったときに無限ループしてるんじゃないかと思った。
後のは、無限に読み込もうと待ってる気がする。
UNIXプログラムはうろ覚えだから的外れだったらごめんw
292:デフォルトの名無しさん
08/12/18 15:00:35
>>290
>後、のこった要求を
何が残る予定なんだ?
293:デフォルトの名無しさん
08/12/18 15:35:44
>>292
client側から以下(client.cの76,77行目)でGET /%s HTTP/1.1\r\nHOST: %s\r\n\r\nを送信します
size = sprintf (str, "GET /%s HTTP/1.1\r\nHOST: %s\r\n\r\n", url.path, url.host);
write (s, str, size+1);
server側はこれを受け取って処理するんですが
パスだけ取得できればいいんで、はじめは、fgets (str, STR_SIZE, ns_read);でGET /%s HTTP/1.1だけ読み込んで
そこからパスを取得してそれ以降の処理をしてました
でも、どうやらclient側から送信された文字列を全部受け取らずにそれ以降の処理に進むとパイプ破壊のエラーが出ることが分かったんで、
while(fgets (str, STR_SIZE, ns_read));でclient側から送信された文字列を全て(残りの”HOST: %s\r\n\r\n”の部分)取得しようとしたら、このwhile分の2回目のループのfgetsの部分で
止まってそれ以降プログラムが動かないみたいなんです
とりあえず、while(fgets (str, STR_SIZE, ns_read));をfgets (str, STR_SIZE, ns_read);に書き換えればパイプ破壊も起きず問題なく動くんですが、
ネット上のechoサーバサンプルコード見てても、特に何が原因でこうなってるのかよく分からなかったので質問させてもらいました
>>291
一応それ以降まで進んでることは確認してます
”HOST: %s\r\n”も読み込んで次に実行されたfgetsで止まってる見たいです
294:デフォルトの名無しさん
08/12/18 15:58:53
>>293
>止まってそれ以降プログラムが動かないみたいなんです
client側が次に何か送って来るのを待っているんだから
295:182
08/12/18 16:01:54
int i=0,j=0,//イテレータ
jousu[10],//乗数を格納
TEMP;//ソート用
char bunkatsu[10][NAGASA] = {},//別けた式を格納
TEMP_MOJI[10][NAGASA] = {};
for(i=0;i<tate-1;i++){
for (j=tate-1;j>i;j--){
if (jousu[j-1] < jousu[j]) {//前の要素のほうが大きいなら
//乗数配列の交換
TEMP = jousu[j];
jousu[j] = jousu[j-1];
jousu[j-1]= TEMP;
//分割式配列の交換
TEMP_MOJI[j] = bunkatsu[j];
bunkatsu[j] = bunkatsu[j-1];
bunkatsu[j-1] = TEMP_MOJI[j];
}
}
}
これでソートしようと思ってるんだけど、分割式配列の交換で代入できない型ってエラーが出ます。
char型で統一してるのに駄目なの?
296:デフォルトの名無しさん
08/12/18 16:05:17
>>295
プログラム全体を貼り付けてよ
できればうpろだに
297:デフォルトの名無しさん
08/12/18 16:10:53
>>293
>>291だけど、言いたかったのは>>293がうまく言ってくれたw
ns_readから読み込むと、普通のファイルと違ってパイプから読みこむから、読み込みたいときにパイプが空っぽだと、誰からパイプに入れてくれるのをずっと待ってるんだよ。
298:デフォルトの名無しさん
08/12/18 16:38:48
[1] 授業単元:
[2] 問題文(含コード&リンク):
「エラトステネスのふるい」は素数を求めるアルゴリズムです。
このアルゴリズムを用いて、100までの素数をすべて表示する
プログラムを作成してみよう。
(ヒント)
101個の配列aを用意して、添字2~100を数として扱います。
数2がふるいに入っている状態はa[2]=1、ふるいから取り
除かれた場合はa[2]=0となるようにします。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc32)
[3.3] 言語: (C)
[4] 期限: ([2008年12月20日18:00まで] )
[5] その他の制限: (なし)
299:デフォルトの名無しさん
08/12/18 16:50:55
[1] 授業単元:
[2] 問題文(含コード&リンク):
year年 month月のカレンダーを表示するプログラムを作成してみよう。
ヒント
次の関数を作ってカレンダーを作成してみよう。
int leap(int year) 閏年の判定
int days(int year,int month) year年(month-1)月終了時までの日数のずれ
void cal_print(int year,int month) year年month月の表示
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc32)
[3.3] 言語: (C)
[4] 期限: ([2008年12月20日18:00まで] )
[5] その他の制限: (なし)
300:デフォルトの名無しさん
08/12/18 17:05:54
>>299
URLリンク(kansai2channeler.hp.infoseek.co.jp)
301:デフォルトの名無しさん
08/12/18 17:11:15
>>298
#include <stdio.h>
int main(void)
{
int i, j;
int a[101];
for(i=2; i<101; i++)
a[i] = 1;
for(i=2; i<=10; i++){
for(j=i+1; j<101; j++){
if(j%i == 0){
a[j] = 0;
}
}
}
for(i=2; i<101; i++){
if(a[i]){
printf("%d\n", i);
}
}
return 0;
}
302:301
08/12/18 17:19:13
間違えた
for(i=2; i<=10; i++){
if(a[i]){
for(j=i+1; j<101; j++){
if(j%i == 0){
a[j] = 0;
}
}
}
}
303:デフォルトの名無しさん
08/12/18 17:20:18
>>301 ちょっとふいたw 答えは合っているが、ちょっと違う。
304:デフォルトの名無しさん
08/12/18 17:20:27
>>296
お願いします。
URLリンク(www.uploda.org)
パス:1111
305:デフォルトの名無しさん
08/12/18 17:20:38
>>229
クライアントの write (1, str, size+1);も変だな。サイズ大きすぎるだろ。
306:デフォルトの名無しさん
08/12/18 17:27:38
>>298
#include <stdio.h>
#define MAX 101
int main(void) {
int i,j,k;
int a[MAX]={0,0,1};
for(i=3; i<101; i++) a[i] = 1;
for(i=2; i<=10; i++) {
if(a[i]==1) for(k=i,j=i*2; j<101; j+=k) a[j] = 0;
}
for(i=2; i<101; i++)
if(a[i]) printf("%d ", i);
return 0;
}
307:デフォルトの名無しさん
08/12/18 17:29:03
>>298
#include <stdio.h>
#define MAX 101
int main(void) {
int a[MAX]={0,0,1},i,j,k;
for(i=3; i<MAX; i++) a[i] = 1;
for(i=2; i*i<=MAX; i++) { if(a[i]==1) for(k=i,j=i*2; j<101; j+=k) a[j] = 0; }
for(i=2; i<MAX; i++) if(a[i]) printf("%d ", i);
return 0;
}
308:デフォルトの名無しさん
08/12/18 17:38:51
struct Point
{
int x;
int y;
}p;
int length_vector(struct Point p)
{
int a,b,c,d;
a=pow(p.x , 2 );
b=pow(p.y , 2 );
c = a + b;
d =sqrt(c);
return d ;
}
int main(void)
{
struct Point p;
printf("Input Point X: ");
scanf("%lf", &p.x);
printf("Input Point Y: ");
scanf("%lf", &p.y);
print_v(p); /* print_vを使用して,座標の表示 */
printf("The length of vector: %f\n", length_vector(p) );
return 0;
}
なぜ動かん!
309:デフォルトの名無しさん
08/12/18 17:45:18
print_v()を定義していないし、整数型じゃなくて浮動小数点型を使うべき
310:デフォルトの名無しさん
08/12/18 18:03:36
>>300
ページを開くことができませんでした…
311:デフォルトの名無しさん
08/12/18 18:04:04
>>310 嘘は言わなくて良いから。
312:デフォルトの名無しさん
08/12/18 19:29:35
>>215
ありがとうございマス!
313:デフォルトの名無しさん
08/12/18 19:33:38
>>245の者ですが>>280で少し間違いがあったみたいなのでもう一度お願いします。
途中まで、あってるか確証はありませんが、自分でやったのでこの続きをお願いします。
#include<stdio.h>
int main(void)
{
FILE *fp1,*fp2, *fp3;
int num, math, eng, total;
char name[20];
fp1=fopen("/home/sample/PE1/2008/e12math.txt","r");
if(fp1==NULL){
printf("open error\n");exit(1);
}
fp2=fopen("/home/sample/PE1/2008/e12eng.txt","w");
if(fp2==NULL){
printf("open error\n");exit(1);
}
fp3=fopen("report.txt.","x");
while(fscanf(pf1,"%d %s %d",&num,name,&math)!=EOF){
314:デフォルトの名無しさん
08/12/18 19:48:12
>>313
どう間違えてたの?
315:デフォルトの名無しさん
08/12/18 19:51:22
>>314
一致せずが1つあるはずなのになかった
316:デフォルトの名無しさん
08/12/18 19:52:40
やり方も、できれば>>313のような漢字でお願いします
317:デフォルトの名無しさん
08/12/18 19:56:17
>漢字
感じ
318:デフォルトの名無しさん
08/12/18 20:07:35
何で英語が"w"ww
319:デフォルトの名無しさん
08/12/18 20:14:53
>>316
どこら辺が>>313っぽくなればいいのかが読み取れないなぁ。
別に>>280と大差あるように見えない。
変数名をtypoしたりcloseをOS任せにする辺りが特徴?
320:デフォルトの名無しさん
08/12/18 20:34:32
[1] 授業単元: 科学実習Ⅰ
[2] 問題文: 16進数を入力するプログラムを作れ。
[3] 環境
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン:gcc -o
[3.3] 言語: C言語
[4] 期限: 2008年12月31日23時59分
[5] その他の制限:scanfは使用禁止。よろしくお願いします。
321:デフォルトの名無しさん
08/12/18 20:37:55
>>320
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[1000];
int x;
fgets(s, 1000, stdin);
x = strtol(s, NULL, 16);
return 0;
}
322:デフォルトの名無しさん
08/12/18 20:40:15
>>320
#include <stdio.h>
int main()
{
char str[256];
unsigned int n;
fgets(str, 256, stdin);
sscanf(str, "%x", &n);
return 0;
}
323:デフォルトの名無しさん
08/12/18 21:23:54
>>313=315であると仮定して
検証に使った math.txt と eng.txt
そして実際にはどういう結果(出力)が欲しかったのか
それを示さないと何とも言えない。
324:デフォルトの名無しさん
08/12/18 21:29:24
math.txtに10人、eng.txtに11人あると最後の人が検出できなさそうにも見える
325:280
08/12/18 21:32:49
今気づいたが29行目くらいに else を漬け忘れているような気がする
>>324
問題文に > 2つのファイルの行数は同じ とあるので。
326:デフォルトの名無しさん
08/12/18 21:43:49
C言語にて、数列(12,43,17,23,57,50,17,41, 7,63)をクイックソートを用いて降順にソートしなさい。
なお、整列完了までの途中経過を表示せよ。
いろいろなサイトで公開されているクイックソート昇順のプログラムを弄ってみたのですが
どうしてもうまく行きません。よろしくお願いします。
また、このプログラムを改良し、左端・中央・右端の3要素の中をうちを枢軸
右端)とする
場合のプログラムを考えよ。
に関しては自分で考えてみるつもりなのですが、もし良ければお願いします
327:デフォルトの名無しさん
08/12/18 21:51:09
>>325
ほんとだ。よく見ず難癖つけてすまんかった>行数
328:デフォルトの名無しさん
08/12/18 22:14:16
>>326
URLリンク(kansai2channeler.hp.infoseek.co.jp)
329:デフォルトの名無しさん
08/12/18 22:24:35
>>326 途中経過の表示を追加
URLリンク(kansai2channeler.hp.infoseek.co.jp)
330:デフォルトの名無しさん
08/12/18 22:38:43
>>328,329
ありがとうございます。
ですが、今回は数列(12,43,17,23,57,50,17,41, 7,63)が指定されているので、
これをscanfでの入力もしくは、プログラム内に埋め込みという形で出来ないでしょうか?
331:デフォルトの名無しさん
08/12/18 22:40:26
授業単元:C言語
問題
0~9、+、-、×、÷、(、)、を使った整数式を
ポーランド記法を使ったツリー構造に変換し出力。
さらに計算し解を出力するプログラムを作成。
ただし整数式は標準入力から式ブロックで入力され"quit"が
入力されるまで繰り返し入力できるものとする
※割り算によって発生する小数部は切り捨ててよい
※入力式の誤り判定は不必要とする
※ただし-符号は考慮すること
環境:WS
コンパイラ:gcc
制約:breakは原則使用禁止(Selectcase文は除く)
scanfは使用禁止
以上です。お願いします
332:デフォルトの名無しさん
08/12/18 22:43:24
>>331
breakの代わりにgoto使ってもいい?