[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/13 08:24 / Filesize : 133 KB / Number-of Response : 421
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2009/01/15(木) 23:21:27 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題を片付けます 121代目
pc11.2ch.net/test/read.cgi/tech/1230678123/

231 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:54:02 ]
>>227
そもそも>>219は計算が間違ってるwww

232 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 14:09:51 ]
計算しなければどうということはない

233 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 14:18:21 ]
[1] 授業単元: アルゴリズムと数値計算
[2] ニュートン法とオイラー法で√2の近似値を計算するプログラムを作れ
ただし、計算は50ステップ行い、それぞれの初期値とsqrt(2)との差を表示する事。
初期値は各々が定めてよい
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC2005EE
 [3.3] 言語:C
[4] 期限:09/02/04迄
[5] その他の制限:
文字表示・繰り返し文・条件判断とオイラー法の計算は分かります


234 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 14:58:41 ]
>>233
オイラー法ってこんなか?
#include <stdio.h>
#include <math.h>
double newton(){
double x=1.0;
int i;
for(i=0;i<50;i++){
x=x-(x*x-2)/(2*x);
}
return x;
}
double euler(){
int n=50;
double x=1.0,h=(double)(2-1)/n;
int i;
for(i=0;i<n;i++){
x=x+h/(2*x);
}
return x;
}
int main(){
double temp=newton();
printf("sqrt(2):%f,newton:%f,差:%f\n",sqrt(2),temp,sqrt(2)-temp);
temp=euler();
printf("sqrt(2):%f,euler:%f,差:%f\n",sqrt(2),temp,sqrt(2)-temp);
return 0;
}


235 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 15:19:50 ]
>>227
VBに触れたから呪われたんだな

236 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 16:04:45 ]
>>234
ありがとうございます!
for文の中身1行で表せるんですね。
初期値表示と(double)(2-1)を2.0-1.0など軽く置き換えて完成しました。

237 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:48:11 ]
>>193
O(N^2)じゃなくO(NlgN)だ

238 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 20:41:50 ]
だいたい、プログラム入れてみるとxln(x)が定数なしで自己相関関数に一致してるくらいだな。
つまり、O(NlnN)だな。でも、NlogNだと思ってて、N^2だったってよりよくない?

239 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 20:51:59 ]
うん。



240 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:18:36 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
 角度はラジアン単位(rad),度単位(degree)【°】で表される.さらに 度単位は 32.4°と10進小数表示する場合と
32度24分と度分秒で表示する場合がある.(60秒で1分, 60分で1度)

@2つの角度(度単位)を10進小数点2桁 でキーボードから入力し(例  69.21° と 33.73° ) 
 それらを度分秒単位で 表示させるプログラムを作成しなさい.

Aさらに度分秒単位で表示された2つの角度の差を求め,度分秒単位で表示しなさい.
 計算は度分秒単位のまま引き算すること(60進法の引き算アルゴリズムを作成すること).

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年2月4日 13:00
[5] その他の制限: よろしくお願いします

241 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:25:50 ]
キーボードから入力し(例  69.21° と 33.73° )
2バイト文字か?まずその入力ができるかが問題だ。
Alt+半角で全角打てるけど、(例 69.21 と 33.73)の間違えだと言ってくれ。

242 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:37:58 ]
>>241
すみません
半角です

243 名前:デフォルトの名無しさん [2009/02/03(火) 22:03:28 ]
>>211のものですが、>>219をコンパイルしたら
和と差が計算できなかったのですが、どうすれば
いいでしょうか?

どなたか教えてください。

244 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:18:25 ]
A.son *= B.mom; B.son *= A.mom; A.mom=B.mom=(A.mom*B.mom); // 通分(約分せず)
GCD = gcd(A.mom,A.son+B.son);
printf("和:%d / %d\n",(A.son+B.son)/GCD,A.mom/GCD);
GCD = gcd(A.mom,A.son-B.son);
printf("差:%d / %d\n",(A.son-B.son)/GCD,A.mom/GCD);

245 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:23:43 ]
分母: mom
分子: son
っていうネーミングセンスが素敵だ

246 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:36:37 ]
辞書片手に英語にしまくったら単語の意味を忘れて自分で読めないというのは聞かなくもないけれど、
日本語の一部を切り出して英語にするっていうのは新しい。

247 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:40:47 ]
>>240
誤差がぁぁぁ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8809.c

248 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:42:30 ]
>>240
#include<stdio.h>
#include<math.h>
typedef struct { int deg, min, sec; } Degree;
void rad2deg(Degree *pdeg, double rad) {
pdeg->deg = (int)rad;
rad = (fabs(rad) - fabs(pdeg->deg)) * 60;
pdeg->min = (int)rad;
rad = (rad - pdeg->min) * 60;
pdeg->sec = (int)rad;
}
void print_deg(const Degree *pdeg) {
printf("%d度%02d分%02d秒\n", pdeg->deg, pdeg->min, pdeg->sec);
}
void degsub(Degree *pdiff, const Degree *pdeg1, const Degree *pdeg2) {
pdiff->sec = pdeg1->sec - pdeg2->sec;
pdiff->min = pdeg1->min - pdeg2->min;
pdiff->deg = pdeg1->deg - pdeg2->deg;
if (pdiff->sec < 0) { pdiff->sec += 60; pdiff->min --; }
if (pdiff->min < 0) { pdiff->min += 60; pdiff->deg --; }
}
int main() {
double rad1, rad2;
Degree deg1, deg2, degdiff;
printf("radian1="); scanf("%lf", &rad1);
printf("radian2="); scanf("%lf", &rad2);
rad2deg(°1, rad1); printf("degree1="); print_deg(°1);
rad2deg(°2, rad2); printf("degree2="); print_deg(°2);
degsub(°diff, °1, °2); printf("degree1-degree2="); print_deg(°diff);
return 0;
}

249 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:55:09 ]
>>240の人気に嫉妬
#include <stdio.h>
#include <math.h>
struct ds_t { int d; int m; int s;};
struct ds_t dec2ds(double dd){
  struct ds_t ds;
  ds.d = floor(dd);
  ds.m = floor(60*(dd - ds.d) + 0.5/60);
  ds.s = floor(3600*(dd - ds.d) - 60*ds.m + 0.5);
  return ds;
}
void print_ds(struct ds_t *ds){
  printf("%d.%d\'%d\"\n", ds->d, ds->m, ds->s);
}
struct ds_t sub_ds(struct ds_t *ds1, struct ds_t *ds2){
  struct ds_t ds3;
  ds3.d = ds1->d - ds2->d;
  ds3.m = ds1->m - ds2->m;
  ds3.s = ds1->s - ds2->s;
  if(ds3.s < 0) ds3.s += 60, ds3.m--;
  if(ds3.m < 0) ds3.m += 60, ds3.d--;
  return ds3;
}
int main(void){
  double dd1, dd2;
  struct ds_t ds1, ds2, ds3;
  scanf("%lf%lf", &dd1, &dd2);
  ds1 = dec2ds(dd1); ds2 = dec2ds(dd2);
  print_ds(&ds1); print_ds(&ds2);
  ds3 = sub_ds(&ds1, &ds2);
  return 0;
}



250 名前:248 mailto:sage [2009/02/03(火) 22:57:35 ]
degsubの符号の扱いが全然だめだった。>>248は取り下げます。

251 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:58:00 ]
>>243
そのコードはクズだ。捨てろ。

252 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:00:11 ]
[1] 授業単元:ループ
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8810.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2]コンパイラ名とバージョン:C++ Compiler 5.5/Turbo Debugger
 [3.3] 言語:C
[4] 期限:一ヶ月以内
[5] その他の制限:2重ループを使うらしいですが使わなくてもいいそうです。

253 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:01:15 ]
>>244
そこで上書きして残りの積と商をどうするツモリだ。

254 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:03:53 ]
>>253
分母と分子に同じ数掛けてるから大丈夫

255 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:16:22 ]
そうだよね。>>253は2/4拍子と3/6拍子の違いが分かってらっしゃる。
#include<stdio.h>
int main(){
int i,j,tmp,data[5+1];
for(i=0;i<10;i++){
printf("%d人目",i);
scanf("%d",&tmp);
data[tmp]++;
}
for(i=1;i<=5;i++){
printf("\n%d",i);
for(j=0;j<data[i];j++) printf("*");
}
return 0;
}

256 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:16:46 ]
どなたか>>134をお願いいたします。ググってもわかりません。。。

257 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:21:21 ]
>>256
一番上に書く名前が分かりません><

マジレスはお断りしておきます

258 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:23:35 ]
>>247
degree[i][1] = (int)((input[i] - (int)input[i]) * 10) * 6;
degree[i][2] = (int)((input[i] * 10 - (int)(input[i] * 10)) * 10) * 6;
この計算式は何なのか、後でAAで提出するように。


259 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:23:40 ]
5秒で答えにたどり着いたけど
134は馬鹿なの?死ぬの?



260 名前:240 mailto:sage [2009/02/03(火) 23:28:32 ]
>>247-249
ありがとうございました

261 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:34:09 ]
>>256
フローチャートは詳しくないが日本語にそれらしく訳してくと
開始
ファイルをfpiに読み込む
ファイルの先頭からデータ数をnへ代入
ループ iをn回 配列xのi番目にi番目のデータを代入
ループ iをn-1回 (中身jループ)
/* */ ループ jをi+1からnまで
/* */ /* */ 分岐 x[i]>x[j] --YES--> x[i]とx[j]を交換 -->jループへ
/* */ /* */ --NO-->jループへ
ループ iをn回 iとx[i]を表示
終了

262 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:50:17 ]
>>134
オフィスを入れてなかった。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8811.zip

263 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:55:15 ]
>>262
力作乙
だが、extention error だ
名前と実体が異なっている

264 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:01:47 ]
>>263
そんな突っ込みは想定していない。

OpenOfficeの操作覚えようかな……。

265 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:25:25 ]
>>252
#include <stdio.h>

int main(void)
{
int a[10], c[5], i, j;
for (i = 0; i < 9; ++i) scanf("%d,", &a[i]); scanf("%d", &a[9]);
for (i = 0; i < 5; ++i) c[i] = 0;
for (i = 0; i < 10; ++i) c[a[i] - 1]++;
for (i = 0; i < 5; ++i) {
printf("%d", 5 - i);
for (j = 0; j < c[4 - i]; ++j) printf("*");
printf("\n");
}
return 0;
}

266 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:56:37 ]
>>172
コンソールアプリでいいんだよね?
言語はCとC++どっち?

267 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:13:27 ]
>>266
>[5] その他の制限: まだ基礎段階なので、なるべく簡単なプログラムがいいです。         画像の取り込みとかはせずに、文章で表示すればいいらしいです。 Visual c++がよくわからないので、よろしくお願いします
C++のWindowアプリケーションを望んでいるようには見えない。
求めてるのは”なるべく簡単”でしょ。

268 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:27:20 ]
[1] 授業単元: プロムラミング演習2
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8813.txt
 [3.1] OS: Windows
 [3.3] 言語:C言語
[4] 期限:2月5日まで

[5] その他の制限:すみません自力ではわかりません.ご指導お願いします

269 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:46:26 ]
void bitpart(int x)
{
char str[33]="";
for(b=31;b>=0;b--){
sprintf(str,"%s%d",(x>>b)&1);
return str;
}
> jprintf(bit pattern=%s\n",bitpart(x,bit));
なんかちがう



270 名前:897です mailto:sage [2009/02/04(水) 14:51:10 ]
すみません...
打ち間違いでした
printf("bit pattern =%s\n", bitpart(x,bit));
です.すみません

271 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:51:44 ]
>>268
char*bitpart(int x,char *bit)
{
int b;
bit[32] = '\0';
for(b=31;b>=0;b--){
sprintf(&bit[31-b],"%d",(x>>b)&1);
}
return bit;
}

272 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 15:00:15 ]
>>271
早い返事ありがとうございます
助かりました

273 名前:897 mailto:sage [2009/02/04(水) 17:01:19 ]
[1] 授業単元: C言語
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8814.txt
 [3.1] OS: Windows
 [3.3] 言語:C言語
[4] 期限:2月5日まで

[5] その他:お願いします

274 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:17:20 ]
>>273
void insert(int num, struct node *p)
{
struct node *n;

while (p->next != NULL && p->next->key < num) {
p = p->next;
}

n = (struct node *)malloc(sizeof *n);
n->key = num;
n->next = p->next;
p->next = n;
}

275 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:27:54 ]
>>274
ありがとうございます!!
なんとかいけそうです

276 名前:デフォルトの名無しさん [2009/02/04(水) 17:46:14 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8815.txt
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: ([2009年02月05日12:00まで]
[5] その他の制限:

よろしくお願いします。

277 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:01:53 ]
>>276
#include <stdio.h>

int main(void)
{
int kinshu[10] = { 10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1 };
int i, j, c, n;
printf("金額を入力してください: "); scanf("%d", &n);

for (i = 0; i < 10; ++i) {
for (c = 0; n / kinshu[i]; ++c) n -= kinshu[i];
printf("%5d円: %d枚\n", kinshu[i], c);
}
return 0;
}


278 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:10:45 ]
> for (c = 0; n / kinshu[i]; ++c) n -= kinshu[i];
c=n/kinshu[i]; n-= c*kinsyu[i];

279 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:37:30 ]
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8817.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.3] 言語: C
[4] 期限: 2009年02月05日まで
問題多いですがよろしくお願いします。



280 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:38:16 ]
[1] 授業単元: C言語
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8816.txt
 [3.3] 言語:C言語
[4] 期限:2月5日まで
[5] その他: 違うところで同様の質問をして,いろいろヒントをもらった
 のですが,いまいちわかりません.その時こちらを紹介されたので,
 どうかお願いします

281 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:52:39 ]
>>280
int pop(void)
{
struct node *n = TOP.next;

if (n == NULL) {
fprintf(stderr, "no stack\n");
return 0;
}
else {
int num = n->key;
TOP.next = n->next;
free(n);
return num;
}
}

int main(void)
{
TOP.next = NULL;

push(21);
push(42);

printf("%d\n", pop());
printf("%d\n", pop());

return 0;
}

282 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 19:29:50 ]
>>279
どんだけ丸投げだよ。

283 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 19:37:05 ]
丸投げスレなんだから当然だろ?


ってこれは・・・w

284 名前:280 mailto:sage [2009/02/04(水) 19:46:00 ]
>>281
ありがとうございます
助かりました!!

285 名前:Rm [2009/02/05(木) 00:09:41 ]
[1] 計算システム(C言語)
[2] N×Nの行列A,Bに大して、次のようなプログラムを作成せよ。
・A+B、A−B、A×Bを出力するプログラム

・Aの逆行列を出力するプログラム(ピボット選択法)

ただし
・Nはdefineで4と定義する。
・A,Bそれぞれの成分データはdouble型配列に保存する。
・行列A,Bの各成分のデータは時間に依存した種から与えられる疑似関数により自動生成する。

mathweb.sc.niigata-u.ac.jp/~yamada/system/wed/kadai.htm

実際ほかの課題もわかりません。1は出来ましたが。

[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 5日


よろしくお願いいたします。



286 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:52:15 ]
>>273
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8819.txt

287 名前:280 です mailto:sage [2009/02/05(木) 02:14:54 ]
>>281 さんの方から解答をいただいたのですが
main関数の所がいまいちわかりません
できたらもう一度お願いします.

288 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:24:30 ]
>>287
わかりませんもなにも見たまんまpushしてpopしてるだけだと思うが
もう一度といわれてもこれ以外書きようがないと思うべ?
どこがどうわからないか考え直してきなさい

289 名前:280 です mailto:sage [2009/02/05(木) 02:39:14 ]
push(21);
push(42);
これがよくわかりません
コンパイルしてもこれしかでないのですが・・・

mainは、任意個数の数字を入力させてそれをpushし、
EOFになったら逆にpopで値を取り出して画面に表示する
みたいな感じにしたいのですが・・



290 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:57:53 ]
>>289
>pushとpopが正常に動作をしているか確かめられるプログラムを作成してください
といわれて>>289の下半分の内容を読み取れなんてエスパーじゃない限り無理
int main(void)
{
TOP.next = NULL;

int d;
while(scanf("%d", &d)!=EOF) push(d);
while(TOP.next) printf("%d\n", pop());
return 0;
}

291 名前:280 です mailto:sage [2009/02/05(木) 03:03:11 ]
>>290
言葉足らずですみません
夜遅くわざわざありがとうございます


292 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:06:14 ]
十分テストコードになってると思うんだけどな。

293 名前:デフォルトの名無しさん [2009/02/05(木) 03:23:22 ]
while(1)
{         
     wakeup;
     static int day;
     int time = wakeuptime();
     while(1)
     {
          2ch;
          if(time == Daytime())
          {
              lunch;
          };
          if(time == nighttime())
          {
              supper;
          };
          if( time == sleeptime();)
          {
              break;
          }
          time++;
     }
      day++;
     sleep;
}

こんな毎日、無限ループって怖いよな;;




294 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:48:10 ]
>>285
和、差、積のやつ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8821.c

295 名前:285 [2009/02/05(木) 04:09:48 ]
>>294

ありがとうございます。よろしければ逆行列プログラムもお願いします。

296 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 04:54:22 ]
>>295
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8822.c

297 名前:285 [2009/02/05(木) 05:24:02 ]
>>296

このような時間帯にわざわざありがとうございます。
おかげ様で助かりました。

298 名前:279 mailto:sage [2009/02/05(木) 06:58:42 ]
>>282
>>283
確かにこれはひどいですよね…
1問でもいいのでお願いしたいです。
一応自分でもやっていますが、数学が苦手なもので…

299 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 12:42:16 ]
>>167です。
自己解決したので取り下げます。スレ汚し失礼しました。



300 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 13:13:46 ]
1] 授業単元: C言語
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8823.txt
 [3.1] OS: Windows
 [3.3] 言語:C言語
[4] 期限:2月6日まで

[5] その他:お願いします

301 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:25:46 ]
[1] 授業単元:C言語プログラミング
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8824.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで
[5] その他の制限:与えられたプログラムを改造(付け足し)する

302 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:16:54 ]
>>301
#include <stdio.h>

int main(void)
{
int i, j, c;
char seq[] = "tion";

i = 0;
while ((c = getchar()) != EOF) {
if (c == seq[i]) {
i++;
if (i == sizeof(seq) - 1) {
break;
}
}
else {
for (j = 0; j < i; j++) {
putchar(seq[j]);
}
i = 0;
putchar(c);
}
}

return 0;
}

303 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:18:39 ]
300 の問題って リダイレクトじゃだめなのか?

304 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:26:50 ]
>>300
#define INPUT_FILE_NAME "foo.in"
#define OUTPUT_FILE_NAME "bar.out"
int main(void)
{
struct student A[Nmax];
double avg=0;
int i;
FILE *fin, *fout;
fin = fopen(INPUT_FILE_NAME, "r");
if (fin == NULL) { perror(INPUT_FILE_NAME); return 1; }
for( i=0; i<Nmax; i++){
fscanf (fin, "%d %d %d %s", &A[i].sc1,&A[i].sc2,&A[i].sc3,A[i].name);
}
fclose(fin);
fout = fopen(OUTPUT_FILE_NAME, "w");
if (fout == NULL) { perror(OUTPUT_FILE_NAME); return 1; }
fprintf(fout, "Score Name\n");
fprintf(fout, "-------------------------------------------\n");
for(i = 0;i <Nmax; i++){
A[i].total =(A[i].sc1+A[i].sc2)*0.4+A[i].sc3;
A[i].res =(A[i].total>=60)?"A": "F";
avg += A[i].total;
fprintf(fout, "%6.1f %s %s\n", A[i].total,A[i].res, A[i].name);
}
fprintf(fout, "---------------------------------------------\n");
fprintf(fout, "%6.1f (Avg)\n",avg/Nmax);
fclose(fout);
return 0;
}

305 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:09:19 ]
>>302 "ttion"
>>301
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8825.txt

306 名前: ◆g8eVFLrbyk [2009/02/05(木) 16:49:09 ]
[1] 授業単元:C++言語プログラミング
[2] 問題文:www.s.kyushu-u.ac.jp/~z6st02in/repo2008z/repo2008kprob.html
問題2と3をおねがいします。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++言語
[4] 期限:明日まで
[5] その他の制限:与えられたプログラムを改造(付け足し)する


307 名前:suzuki mailto:sage [2009/02/05(木) 16:59:16 ]
君は不可だ!
調査した上で厳正に処理するから首を洗っとれ

308 名前:302 mailto:sage [2009/02/05(木) 17:09:27 ]
>>305
あ、ホントだ。俺の間違ってたね。

309 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:27:29 ]
スレチですいません。
今日面接でプログラミングの手書きのテストをやってきました。
テスト終わって家に帰ってから効率のいいコードの書き方を思い出しました。
テスト中は時間のことが気になって思い出せずとりあえず動くコードで書きました。

テストの場合は白紙や書き途中で提出するくらいなら、
とりあえず動くコードで書いておけば特に問題はないですよね?



310 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:30:05 ]
宿題やテストの採点思想次第だわな

311 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:25:48 ]
>>309
「動かないよりマシ」って言って欲しいんだろうけど、
採点者が何を見ているか次第なんじゃね?

Fizz-Buzz問題って日本でも実施してるのかな?

ナベアツ問題は、このスレでも何度か回答されてるよね。

プログラマーなら「FizzBuzz問題」解けるよな?
pc11.2ch.net/test/read.cgi/prog/1209467166/
Fizz Buzz(ウィキペディア)
ja.wikipedia.org/wiki/Fizz_Buzz
どうしてプログラマに・・・プログラムが書けないのか?
www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

312 名前:301 mailto:sage [2009/02/05(木) 20:15:18 ]
>>305
すみません。問題が間違ってました
正しくはkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8826.txtでした

313 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:23:27 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
データファイル(kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8827.txt) には,1000 人の「学籍番号,科目A,科目B,科目C の各点数」が学籍番号順に並んでいる.
そのデータファイルを元に,キーボードから入力された学籍番号の学生の成績(含:3科目の合計点の順位)を表示するプログラムを作れ.
探索は二分探索を使い,ソートにはクイックソートを使うこと.
合計点が同じになる学生はいないということは既知とせよ.
学籍番号が存在しない場合は,”No data ”と表示するようにせよ.
表示は以下のようにせよ.

Input A Student Number: 14【Enter】

Ranking : #269 /*最高得点は1位とせよ.*/
Subject A : 86
Subject B : 59.1
Subject C : 220.42
Total : 365.52
[3] 環境
 [3.1] OS:Win
 [3.2] gcc
 [3.3] C
[4] 2月6日23:59

おねがいします。

314 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:03:57 ]
>>312
#include<stdio.h>
#include<string.h>

int main(void){
int c, i;
char history[4*2]="";

for(i=0;(c=getchar())!=EOF;i++){
history[i%4]=history[(i%4)+4]=c;
printf("%c", c);
if(strncmp(&history[(i+1)%4], "tion", 4)==0) break;
}
return 0;
}

315 名前:305 mailto:sage [2009/02/05(木) 21:07:49 ]
上のプログラムに、入力列としてt、i、o、nの並びが与えられた場合にも入力を終了する機能を追加せよ
例 This is important information for me! の場合 This is important informaと出力
This scene is romantic の場合 This scene is romantic (tionの並びでないのでそのまま出力)

上のプログラムに、入力列としてt、i、o、nの並びが与えられた場合にも入力を終了する機能を追加せよ
例 This is important information for me! の場合 This is important informationと出力
This scene is romantic の場合 This scene is romantic (tionの並びでないのでそのまま出力)

316 名前:305 mailto:sage [2009/02/05(木) 23:50:36 ]
>>314 その手があったか。参ったのでソース貼り付け。
#include<stdio.h>

#define LEN 4
char tion[LEN + 1] = "tion";

int main(void)
{
  int c = '\0', k = 0;

  while ((c = getchar()) != EOF && k < LEN) {
    if (c == tion[0])
      k = 1;
    else if (k > 0) {
      if (c == tion[k])
        k++;
      else
        k = 0;
    }
    putchar(c);
  }
  return 0;
}

317 名前:301 mailto:sage [2009/02/06(金) 00:46:55 ]
皆さんありがとうございました

318 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 02:48:49 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
ニュートン法と二分法の両方を用いて,直線y = x + 1/2 と単位円
x2 + y2 = 1 の交点の座標の近似解(小数点以下第6位まで)を求めよ.
1つのプログラムに書くこと(ニュートン法と二分法に関する箇所はmain
関数から独立させよ)
ニュートン法も二分法もともに何回で収束したかが分かるようせよ.
関数へのポインタは必ず使うこと.
表記は例えば以下のようにすること:

Newton method:
Lower part: count : ????
sol :( ?????, ????? )
Upper part: count : ????
sol :( ?????, ????? )

二分法で用いる初期値は[a,b]= [-1,1]とせよ
ニュートン法で用いる初期値は2つとも0とせよ。その際,1つの関数は
収束しない.収束しない場合は,求められないと分かった時点で計算を終了
するように工夫せよ.また,そのときは以下のように表記せよ.
sol : Not converge
収束しない場合は,なぜ収束しないのかをコメントとして書くこと.
[3] 環境
 [3.1] OS: windows
 [3.2]gcc
 [3.3] 言語: C
[4] 2月6日の夜まで

期限がせまっていて申し訳ありませんが自分でできなかったためよろしくおねがいします><

319 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:27:02 ]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *crypt(const char *key, const char *salt);
#define MAXLEN 16
#define TRIPLEN 10
#define PATH "trip.out"
typedef unsigned char uchar;
int get_saltc_old(uchar c){
if(c < '.' || c > 'z') return '.';
if(c >= ':' && c <= '@') return c - ':' + 'A'; // :;<=>?@ - ABCDEFG
if(c >= '[' && c <= '`') return c - '[' + 'a'; // [\]^_` - abcdef
return c;
}
int gen_trip(uchar *o, int n, uchar *w){
uchar sal[3];
uchar *t;
sal[0] = get_saltc_old(n > 1 ? w[1] : 'H');
sal[1] = get_saltc_old(n > 2 ? w[2] : '.');
sal[2] = '\0';
t = crypt(w, sal);
strncpy(o, t + strlen(t) - TRIPLEN, TRIPLEN);
return 0;
}




320 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:34:04 ]
int gen_combination(uchar *o, int n, int m, uchar *pos){
int i;
for(i = 0; i < n; i++) o[i] = pos[i];
for(i = n - 1; i >= 0; i--){
if(pos[i] < m - 1){
pos[i]++;
return 1;
}else{
pos[i] = 0;
}
}
return 0;
}
int gen_word_list(uchar *w, int n, int m, uchar *s){
static uchar *pos = NULL;
int i;
if(!pos){
pos = (uchar *)malloc(sizeof(uchar) * n);
for(i = 0; i < n; i++) pos[i] = 0;
}
if(gen_combination(w, n, m, pos)){
for(i = 0; i < n; i++) w[i] = s[w[i]];
w[n] = '\0';
return 1;
}
if(pos){
free(pos);
pos = NULL;
}
w[0] = '\0';
return 0;
}

321 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:34:39 ]
int sout(char *path, char *s, int f){
FILE *fp;
if(f)
if((fp = fopen(path, "ab+")) != NULL){
fprintf(fp, "%s\n", s);
fclose(fp);
}
fprintf(stdout, "%s\n", s);
return 0;
}
int scantrip(int n, int m, uchar *s, uchar *f){
uchar *w, *t;
char buf[4096];
w = (uchar *)malloc(sizeof(uchar) * n + 1); w[n] = '\0';
t = (uchar *)malloc(sizeof(uchar) * TRIPLEN + 1); t[TRIPLEN] = '\0';
sprintf(buf, "'%s' in len %d", f, n); sout(PATH, buf, 1);
while(gen_word_list(w, n, m, s)){
gen_trip(t, n, w);
int b = n - 2;
if(w[n - 1] == '.' && (w[b] == '.' || w[b] == 'U')){ sprintf(buf, "%4d #%s %s %s", n, w, "----------------------------------------", t); sout(PATH, buf, 0); }
if(strstr(t, f)){ sprintf(buf, "%4d #%s %s", n, w, t); sout(PATH, buf, 1); }
}
if(t) free(t);
if(w) free(w);
return 0;
}

322 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:35:06 ]
int main(int ac, char *av[]){
uchar *s="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
uchar *f="Linux";
int i;
for(i = 1; i < MAXLEN; i++) scantrip(i, strlen(s), s, f);
return 0;
}

323 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 05:07:28 ]
>>318
> 二分法で用いる初期値は[a,b]= [-1,1]とせよ
その間に、解が二つある気がする。

> ニュートン法で用いる初期値は2つとも0とせよ。その際,1つの関数は
> 収束しない.収束しない場合は,求められないと分かった時点で計算を終了
> するように工夫せよ.また,そのときは以下のように表記せよ.
> sol : Not converge
> 収束しない場合は,なぜ収束しないのかをコメントとして書くこと.
オレの知らないニュートン法?

324 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 05:54:45 ]
>>313をやってみたんだけど
gccだと動作がおかしい
VCだと正常に動く
誰か原因を教えてくれ・・・・orz

gcc
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8828.c

VC
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8829.txt

325 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 08:25:43 ]
8828.c をVCに掛けてみたらどうなる。

326 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 08:39:11 ]
>>325
そのままかけてみたが正常に動作した

gccだと標準入力を促すところまで行くが
直後のsscanfでプログラムが終了してしまう
一応OSはXPです

327 名前:318 mailto:sage [2009/02/06(金) 08:44:17 ]
>>323
交差する点2つありますよね。両方とも求めるんだと思います。
二分法のアルゴリズムは
Step 1
f (a) < 0 かつf (b) > 0(または, f (a) > 0 かつf (b) < 0)を満たす
ような変数a, b の値を設定し,十分小さい正数ε を設定する.
Step 2
c = (a + b)/2 とし,
f (c) = 0 であれば,【Step 3】に移る.
f (c) > 0 であれば,b をc で置き換える.
f (c) < 0 であれば,a をc で置き換える.
|a-b| < 2ε であれば,【Step 3】に移る.
Step 3
c を解とする.

という感じらしいです。ニュートン法は反復の限界値を決めて(100回くらいに)
反復回数がそれを超えたら停止してほしいのですが・・。

328 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 11:30:38 ]
>>324
sscanf(buf, "%d%lf%lf%lf",&(st[i].number),&(st[i].ascore),&(st[i].bscore),&(st[i].cscore));

"%d,%lf,%lf,%lf" に

329 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 12:48:40 ]
>>327
> 二分法のアルゴリズムは
つまり、1セットの初期値からは、一つの解しか見つからないし・・・
xの式、f(x)=0になるxを探すワケだけど、f(a)とf(b)の符号が逆じゃなきゃいけないんだよね。
区間に二つ解があるということは、つまり、f(1)とf(-1)の符号はおんなじなわけだけど・・・?

> という感じらしいです。ニュートン法は反復の限界値を決めて(100回くらいに)
> 反復回数がそれを超えたら停止してほしいのですが・・。
初期値が二つといっているのだから、解の一つごとに初期値をおくように思うが、両方0にしろと言う。
オレの知っているニュートン法ではないようだ。



330 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:28:17 ]
にぶんほう?

331 名前:デフォルトの名無しさん [2009/02/06(金) 14:24:29 ]
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): www.logos.ic.i.u-tokyo.ac.jp/icpc2007/jp/index.html
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2009年2月10日13:00まで
[5] その他の制限:特になし
ACM国際大学対抗プログラミングコンテスト国内予選2007問題Bです
既出だったらすまん
お頼みもうします






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<133KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef