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


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

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



1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ]
あなたが解けない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++の宿題を片付けます 97代目
pc11.2ch.net/test/read.cgi/tech/1193150915/

348 名前:デフォルトの名無しさん [2007/11/12(月) 11:50:13 ]
297のプログラムわかるひといらっしゃいませんか?
よろしくお願いします.


349 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:50:48 ]
[2]の問題文がリンクだけだったら何をプログラムしていいか分からない。
だから簡単な説明を入れたほうがいいと思う。
例えば、


[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/0000.txt
巡回セールスマン問題を解く


とか、一行程度の説明が欲しい。
っていうのをテンプレに入れてはどうでしょう。

350 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:05:53 ]
リンクだけだとなかなか見る気にならんからねえ。

351 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:24:42 ]
>>297 >>348
要するに、通信経路の計算とかは全然関係なく、
下のようなテキストファイルの値を読み込め、という言う事なのか?


source-node destination-node packet-loss-rate
a b 0.3
a c 0.1
.
.
z w 0.9

352 名前:デフォルトの名無しさん [2007/11/12(月) 14:36:10 ]
[1] 授業単元: プログラミング言語・配列

[2] 問題文(含コード&リンク): 文字の出現回数を数える
標準入力から入力された 'a' から 'z' までの文字の出現回数を数えるプログラムを作成せよ。
各文字の出現回数は、大きさ 26 の配列 kaisuu に格納するものとする。初期化を忘れずに!
また、'a' から 'z' までの小文字の英字以外はカウントせず、無視するものとする。

以下のプログラムを参考にせよ。
char c;
...
while ( (c=getchar()) != '\n' ){ /* リターンが押されるまで読み込む */
/* ここに 'a' から 'z' のどれが出現したかを数えるプログラムを */
/* 書くこと */
}
/* どの文字が何個あったかを出力する */
ヒント 文字変数 c は、 c - 'a' を計算すれば、要素の番号になる。
例えば、 c に 'a' が入っていれば、 c - 'a' は、0 になる。

日本語が含まれない C 言語のプログラムのソースを読ませてみて、うまく動くか確かめてみること。

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
[4] 期限: 11月19日
[5] その他の制限: 特になし

参照URL:www.wakhok.ac.jp/biblion/1995/CC/subsection3.18.4.html





353 名前:デフォルトの名無しさん [2007/11/12(月) 15:22:39 ]
#include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */
#include NMAX 20
/* リストの構成要素となる構造体 node_tag */
struct node_tag {
int num; /* 月を格納する整数 */
char name[NMAX]; /* 名前を格納する配列 */
??????? /* 自己参照:次のデータへのポインタ next */
};
int main(void)
{
/* 12の要素をもつ構造体配列の定義 */
struct node_tag Month[12] = { {1, "January", NULL},
{2, "February", NULL},
{3, "March", NULL} };
struct node_tag *p; /* ポインタ p */
/* 各要素をつなぐ (以下の図を参考に)*/
???????
p=&Month[0];
while (p!=NULL){ /* p を用いてリストの表示 */
printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */
p=??????? /* p を p の next とする */
}
return 0;
}
-----------------------------------------------------------------
忙しいところすみませんが、どうかよろしくお願いします。
今回書き込みは、初めてなので、至らない点がありましたら、よろしくお願いします。

354 名前:デフォルトの名無しさん [2007/11/12(月) 15:23:56 ]

課題 A:

「 月(整数) と 月名(文字) と 次の要素を指すポインタ 」を要素に持つ自己参照構造体を定義する.
この構造体を利用して線形リストを作成し,月と月名を表示させるプログラムを完成せよ.

* 以下のプログラムの各行にコメントを付加すること.

* 以下のプログラムのコメントを参考にすること.

355 名前:デフォルトの名無しさん [2007/11/12(月) 15:26:51 ]
#include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */
#define MAX 20
#define MMAX 100
/* リストの構成要素となるセルの構造体 node_tag */
struct node_tag {
int num; /* 配列の番号を格納する整数 */
char name[NMAX]; /* 名前を格納する配列 */
??????? /* 自己参照:次のデータへのポインタ */
};
int main(void)
{
struct node_tag Meibo[MMAX]; /* 構造体配列の定義 */
int n=0; /* 配列の番号を格納する整数 n,初期値は 0 */
struct node_tag *head, *p; /* リストの先頭を指すポインタ head,新しく追加するノードを指すポインタ p */
head=NULL;
while ( scanf("%s", ???????) != EOF ){
Meibo[n].next=???????; /* 新しく追加するノード(Meibo[n]) の next が指すものは? */
head=???????; /* 先頭データ(head)は どこを指すか? */
???????=n++; /* Meibo[n] の num に配列番号を格納する整数を入れる */
}
p=head;
while (p!=NULL){ /* リストの表示 */
printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */
p=???????; /* p を p の next とする */
}
return 0;
}

2門続けてすみません。行き詰まってます。よろしくお願いします。

356 名前:デフォルトの名無しさん [2007/11/12(月) 15:27:58 ]

課題 B:

「 標準入力 (キーボード) から入力されたアルファベットの文字列 と 配列の番号 」を要素に持つ自己参照構造体を定義する.
この構造体を利用して線形リストを作成し,アルファベットの文字列と配列の番号を表示させるプログラムを完成せよ.

以下のプログラムのコメントに従ってプログラムを完成させること.適宜コメントを追加すること.

付け加えです。よろしくおねがいします。



357 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 15:31:58 ]
>>353->>356

>>1にテンプレがあります。
それに沿って書き込むと、回答が多くなります。

358 名前:デフォルトの名無しさん [2007/11/12(月) 15:40:25 ]
ありがとうございます。

359 名前:デフォルトの名無しさん [2007/11/12(月) 15:45:54 ]
>>353->>356の者です。

[1] 授業単元:プログラミング言語2
[2] 問題文(含コード&リンク):先ほどの二つです
[3] L
 [3.1] OS: (/Linux/)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (Cです)
[4] 期限: ([2007年11月15日17:00まで] )
[5] その他の制限: リスト構造ぐらいまで

いろいろ御迷惑かけましてすみませんでした
よろしくお願いします。

360 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:15:02 ]
>>353-356
微妙な問題だなあ……
配列とリスト併用して、それで順不同ならまだしもnextが指すのはすぐ次の要素だし……

リストの演習やるなら、もっとリストの利点が分かる物にしたらよかろうに
こんなんじゃ、ちょっとできるやつから「何でわざわざリストを使うんですか?」なんて質問されるぞ

361 名前:デフォルトの名無しさん [2007/11/12(月) 16:21:31 ]
課題の雛型なので、変えることが出来ないので。
申し訳ありません。

362 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:31:17 ]
J科生乙

363 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:32:55 ]
>#include <stdio.h> /* おまじない */
こんなことを書いて恥ずかしくないんかね。

364 名前:デフォルトの名無しさん [2007/11/12(月) 16:37:20 ]
>>363
それ書いたの担当の女だよ。
しょうがないんだよ餓えてるから少しでも男連中にアピールしてるんでしょ
かわいさアピール?

365 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:40:34 ]
時にはややこしいことを隠して教えることも大事。うふ。


366 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:48:48 ]
コメントにほぼ答えが書いてある穴埋め問題が解けないって奴はなんなんだろうな。



367 名前:デフォルトの名無しさん [2007/11/12(月) 16:49:21 ]
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
いま、要素数N(N≧1)のint型の配列a[]があり、適当な値がセットされている。以下の要求を満たすfor文を書け。
要素数NはマクロNとして定義されているものとする。要素数NはマクロNとして定義されているものとする。

●直前・直後の配列要素が存在し、それら2つの値の平均よりも大きな値を持つ要素をすべて印字する。
●配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が等しいとき、
それらの要素の添え字のうち小さな方を印字する。ただしおなじ添え字は1度しか出力しないこと。

[3] 環境
 [3.1] OS:VineLinux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 11月13日まで
[5] その他の制限: 特になし


368 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:26:32 ]
>>367
>配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素
これは先頭からi番目の要素と、先頭からN-i番目の要素を比較しろということだよな?

あと、このような特殊な計算をどこに使うのか是非とも教えて欲しい

369 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:35:25 ]
>>367
for(i=1; i<N-1; i++) if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n", i);

for(i=0; i<N/2; i++) if(a[i]==a[N-1-i]) printf("%d\n", i);

370 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:54:23 ]
>>367先越された
#include<stdio.h>
void prArry(const int a[const], size_t sz)
{
size_t idx = 1;
while( idx != sz - 2 )
{
if( 2*a[idx] > a[idx-1] + a[idx+1] ) printf("%d\n",a[idx]);
++idx;
}
return;
}
void prHeqT(const int a[const], size_t sz)
{
size_t idx = 0;
while( 2*idx <= sz )
{
if( a[idx] == a[sz-1-idx] ) printf("%d\n",idx);
++idx;
}
return;
}

int main(void)
{
const int a[] = {1,2,4,1,55,32,1,4,7,6};
prArry(&a[0],sizeof(a)/sizeof(int));
prHeqT(&a[0],sizeof(a)/sizeof(int));
return 0;
}



371 名前:367 [2007/11/12(月) 18:07:48 ]
>>368
そうです、誤字すいません。
トレーニング用だと思われます。。。
まだCを始めたばかりで難しくて・・・
アドバイスいただければ幸いです。

>>369
#include <stdio.h>
#define N 10
int main(void)
{
int a[N];
char buf[80];
int i;

for(i=1;i<N-1;i++)
{
fgets(buf,80,stdin);
sscanf(buf,"%d",&a[i]);
}
if(a[i]*2>a[i-1]+a[i+1])
printf("%d\n",i);
}

とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。
どんな数字を入れても9になってしまいます・・・

>>370
ごめんなさい、基礎プログラミングなので、そこまで高度な技術は分かりません^^;

372 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:09:21 ]
どこら辺が高度?修正するけど。

373 名前:367 [2007/11/12(月) 18:18:16 ]
わざわざすいません、テンプレに書くべきだったのですが、
自分はまだ制御構造のwhile文までくらいのコマンドくらいしか分からないので・・・

お勧めの入門書などがあれば教えてもらいたいです。

374 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:20:59 ]
独習C

375 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:27:46 ]
>とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。
>どんな数字を入れても9になってしまいます・・・

if(a[i]*2>a[i-1]+a[i+1])
printf("%d\n",i);
だとそりゃ9がでる。

for( i = 0; i != N; ++i )
{
if(a[i]*2>a[i-1]+a[i+1])
printf("%d\n",i);
}


376 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:31:49 ]
>>371
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main(void)
{
int a[N];
int i;
for( i = 0; i != N; ++i) { scanf("%d",&a[i]); }
printf("--------------------------\n");
for( i=0; i != N; ++i )
{
if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i);
}

}




377 名前:デフォルトの名無しさん [2007/11/12(月) 18:35:29 ]
何度も同じ質問すみません
[1] 授業単元:アルゴリズム
[2] 問題文:巡回セールスマン問題を解く(厳密解)プログラムを作成しなさい。
     (解=最小値とその最小値を出す通路)
巡回セールスマン問題のデータファイルは次のデータ形式とする。1行目に頂点数、2行目以下に距離行列。例えば、次のようなもの。
5
0 3 2 99 4
3 0 99 12 99
2 99 0 5 6
99 12 5 0 16
4 99 6 16 0

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc
 [3.3] 言語: Cのみ
[4] 期限: 15日
[5] その他の制限: 全列挙を利用して



本当に列挙だけで最小値だけを出すということができません

378 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:42:41 ]
[1] アルゴリズムとデータ構造
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5252.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限: 21日まで

問題の解きがいがないかもしれませんが
よろしくお願いします。

379 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:48:00 ]
for (i=0; i<kosu; i++)
printf("%s\n", data[i];

のところで
printf("%s\n", data[i] ) ;
カッコが抜けてる

380 名前:デフォルトの名無しさん [2007/11/12(月) 18:54:28 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
・ニュートン法と二分法の両方を用いて、直線 y = x + 1/2 と単位円 x^2 + y^2 = 1 の交点の座標の近似解(小数点以下第6位まで)を求めよ。
・一つのプログラムに書くこと
・二分法を用いる初期値は、 [a,b] = [-1,1] とせよ。
・ニュートン法で用いる初期値は、2つとも0とせよ。その際、1つの関数は収束しない。収束しない場合は、求められないとわかった時点でやめるように工夫せよ。
・ニュートン法も二分法もともに何回で収束したかがわかるようにしておくこと。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc(バージョン不明です)
 [3.3] 言語:C++
[4] 期限: [2007年11月21日まで(22日提出です)]
[5] その他の制限:
・見てわかりやすいように説明文なども各自付加しろ、と指示がありました。
・デスクトップ環境: GNOME 2.4.2

よろしくお願いします。

381 名前:367 [2007/11/12(月) 18:58:25 ]
>>374,375,376
ありがとうございます!

382 名前: ◆wFVK8h9bmM mailto:sage [2007/11/12(月) 19:09:28 ]
ものすごく遅くなってしまいましたが、>>289ありがとうございました。
考えて下さった、279、280、281、284のみなさんもありがとうございました。
ちなみに>>284の質問の答えが返ってきましてV=V0/E=1.000が正しいらしいです。

383 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:23:58 ]
>>377
巡回セールスマン問題については、
最適解(厳密解)を求めるアルゴリズム自体が、2007年現在、未だに確立されていません。
近似解を用いるのが一般的です。
最適解(厳密解)を求めるアルゴリズムを考え出すのはほとんど無理です。

384 名前:378 mailto:sage [2007/11/12(月) 19:27:58 ]
>>379
ありがとうございます。
問2に関しても自己解決できました。

385 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:29:25 ]
>>383
・・・へぇ

386 名前: ◆a3LMU3qR26 [2007/11/12(月) 19:29:33 ]
頂点数が5個程度なら全列挙で解が得られるのではないでしょうか?



387 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:30:27 ]
すいません
377です

388 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:40:48 ]
ファイルから読み込むプログラムで
#include<stdio.h>
#define MAXN (100)
#define YES (1)
#define NO (0)
int n, a[MAXN], used[MAXN];
int adj[MAXN][MAXN];
void perm(int d);
void minimum(int s);
int main(int argc, char **argv){
int i, j;
FILE *fp;
if (argc != 2) {
printf("Usage: %s <filename>\n", argv[0]);
exit(1);
}
fp = fopen(argv[1],"r");
if (fp == NULL) {
printf("File not found.\n");
exit(1);
}
fscanf(fp, "%d", &n);
if ((n > MAXN) || (n < 0)) {
printf("Out of range: n.\n");
exit(1);
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
fscanf(fp, "%d", &adj[i][j]);
}
}
fclose(fp);

389 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:43:37 ]
printf("%d\n",n);
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
printf("%d ",adj[i][j]);
}
printf("\n");
}
printf("\n");
for(i = 0; i < n; i++) used[i]=NO;
perm(0);
return(0);
}
void perm(int d)
{
int i,j;
int s = 0;
if(d == n){
for(j = 0; j < n-2; j++) s+=adj[a[j]][a[j+1]];
s+=adj[a[0]][a[n-1]];
printf("%d\n",s);
}
else{
for (i = 0; i < n; i++) {
if (used[i] == NO) {
a[d] = i;
used[i] = YES;
perm(d + 1);
used[i] = NO;
}
}
}
}

390 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:45:39 ]
スレ汚しスマソ
ここまではできてるんですけどこれだけだと和の列挙にしかなりません
ここから最小値を取り出して出力させるには何を付け加えたらいいのか教えてください

391 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:16:37 ]
>>390
TSPのアルゴリズムそのものを付け足せばいい

392 名前:334 [2007/11/12(月) 20:44:16 ]
>>391
ググってみたけどもわからないんですけど
具体的にどういう風にすればいいのですか?

393 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 20:45:08 ]
すみません
>>334=>>337です


394 名前:デフォルトの名無しさん [2007/11/12(月) 21:00:16 ]
授業名:アルゴリズム
問題:
次の問題の題意を日本語で説明し問題の解答を与えるプログラムを作成せよ。
For what value of integer N is 10NlgN>2N^2?
環境:C言語でコンパイラはgcc
期限:来週の月曜まで

よろしくおねがいします。

395 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:01:09 ]
>>394
せめて日本語で説明する部分くらいやってもいいのでは?

396 名前:デフォルトの名無しさん [2007/11/12(月) 21:13:26 ]
>>395
自分の日本語訳は
整数Nはなんのために10NlgN>2N^2ですか?
みたいな感じなんですけどあってるんでしょうか・・・
初めての英語問題で面食らってます



397 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:25:29 ]
>>377
ほらよ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5253.c

>>383
馬鹿か?

398 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:32:48 ]
>>396
どんな値の範囲で10NlgN>2N^2が成り立ちますか?
じゃないかFor = 範囲

399 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:39:57 ]
10NlogN - 2N*N = 0を満たすNをもとめりゃいい。

400 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:42:41 ]
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆【一番クリックした国が優勝】参加者求ム!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 イギリス人天才プログラマが運営する前代未聞の無料ブラウザゲーム、clickclickclick.com/
 ただひたすらクリックし、国別の総クリック数を世界中で競い合う!
 究極にバカバカしくそして意味がなく、ひたすら時間の無駄でなんの得にもならない、だがそれが(・∀・)イイ!

 ライバルはハンガリー、そして台湾!! GAME2から参戦し、現在GAME27開催中!
 VIPで発祥し現在2ch全土から結集したクリック兵達で日本チームは戦っている!
 意味のない事に全力を傾ける、それが2ちゃんねるクオリティ!!

 独自のクリックツール開発競争も熱く、各国のプログラマが全力で優秀な兵器開発をしている!!
 日本の技術力の高さを世界に見せつけてやろうぜ!
 プログラマ、Flashゲーム製作者、動画職人、AA職人、絵師、DJ、wiki編集blog編集者、データ分析者etcも募集中!
 ツール放置参加もできるので、PCのスペックに自身のある奴、CPUに空きのある奴、時間が余ってる奴もぜひ参加してくれ!

 本スレッド
 【簡単多重】一番クリックした国が優勝【8砲門】
 wwwww.2ch.net/test/read.cgi/news4vip/1194741194/l50
 ※落ちているときはここから1発検索
 www.clickjapan.jp/find2ch.php

 日本チームの有志によるまとめサイトポータル
 www.clickjapan.jp/ 
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

401 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:22:09 ]
>>394
#include<stdio.h>
#include<math.h>

typedef double (*SingleFun)( double );
double newton(SingleFun fun,SingleFun fprime, double x)
{
double fx;
double fp;
double xprev;
do
{
fx = fun(x);
fp = fprime(x);
if(fp == 0) fp = 1;
xprev = x;
x -= fx / fp;
} while( x != xprev );
return x;
}

double fN(double N) { return 10.0 * N * log( N ) - 2*N*N; }
double dfdN(double N) { return 10.0 * log( N ) - 4.0 * N + 10.0; }

int main(void)
{
double res = newton( fN, dfdN, 1.0 );
printf("result = %1lf\n",res );
printf("10Nlog(N) > 2N^2 is true for N > %lf\n",res);
return 0;
}

402 名前:デフォルトの名無しさん [2007/11/12(月) 22:25:38 ]
>>398-399
ありがとうございます。やっと理解できました
>>401
ありがとうございます。

403 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:27:58 ]
>>402
結果を実数で返してしまった。整数に直してくれ。
だから答えとしてはN > 1だな。

404 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:36:44 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ライブラリ関数atofと同じ動作を行う関数
double strtof(const char *nptr) {/*・・・*/}
を作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc3.4
 [3.3] C言語
[4] 11/15まで

お願いします

405 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:43:07 ]
#include<stdio.h>
#include<stdlib.h>

double strtof_ (const char *nptr)
{
return strtod_ (nptr, (char **) NULL);
}


406 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:44:11 ]
間違えた。
ていうか衝突するからstrtofって名前使わないほうがいいと思う。
#include<stdio.h>
#include<stdlib.h>
double strtof_ (const char *nptr)
{
return strtod (nptr, (char **) NULL);
}




407 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:52:40 ]
>>406
すいません、条件を書き忘れました
申し訳ありません
標準ライブラリ関数を使わないでお願いします

408 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:52:52 ]
>>404
double strtof(const char *nptr)
{
double ret = 0, div = 10, f = 1;

if(*nptr=='-') {
f = -1;
nptr++;
}
else if(*nptr=='+') nptr++;

while('0' <= *nptr && *nptr <= '9') ret = ret * 10 + *nptr++ - '0';

if(*nptr++!='.') return f * ret;

while('0' <= *nptr && *nptr <= '9') {
ret += (*nptr++ - '0') / div;
div *= 10;
}

return ret * f;
}


409 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:35:54 ]
double strtof(const char *nptr)
{
const char *p;
int s, n, d;

s = 1;
n = 0;
d = 0;
for (p = nptr; *p != '\0'; p++)
if (*p == '+' || *p == '-') {
if (p != nptr)
break;
if (*p == '-')
s = -1;
} else
if (*p == '.')
d = 1;
else
if (*p >= '0' && *p <= '9') {
n = n * 10 + *p - '0';
d = d * 10;
} else
break;
if (d == 0)
d = 1;
return (double)s * (double)n / (double)d;
}

410 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:44:32 ]
>>408>>409
つ[EBCDIC]

411 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:48:22 ]
EBCDICは0〜9の並びについては保証されてるよ
アルファベットがいけない

412 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:06:07 ]
>>397
これ厳密解じゃないよ
しかもnodeを30とかにすると解くのに時間かかりすぎ
やり直してきたほうがいいのでは?

413 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:54:05 ]
再帰じゃそんなもんざます

414 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 08:19:37 ]
>>409
いろいろとひどいな

415 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:14:07 ]
[1] 授業単元: プログラム演習
[2] 問題文:
ここに書きました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5255.txt
[3] 環境
 [3.1] OS: LINUX
 [3.2] 言語: C
[4] 期限: 11月13日24時まで
[5] その他の制限: 特にありません
お願いします。


416 名前:デフォルトの名無しさん [2007/11/13(火) 16:25:41 ]
学校からのカキコミです。
わからないので教えてください。

課題25 1からキーボードで入力した値までの合計を求めるプログラムを作りなさい

>kadai25
いくつまで合計しますか> 10 /*10と入力
合計は55


↑こうしたいのですが、よろしくお願いします。
ちなみにscanfとforを使うみたいです



417 名前:デフォルトの名無しさん [2007/11/13(火) 16:29:14 ]
351さん、そうです。 そのやり方がよくわからないのです。

418 名前:デフォルトの名無しさん [2007/11/13(火) 16:44:09 ]
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞
は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新
聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ
の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。
[3] 環境
 [3.1] OS: Windows
 
 [3.3] 言語: C/C++
[4] 期限: 11月18日
[5] その他の制限:なし
よろしくお願いします。


419 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:44:33 ]
>>415
勝手にテンプレ省略すんなハゲ

420 名前:こまった [2007/11/13(火) 17:08:34 ]
初歩の初歩の質問で本当にごめんなさい。
まったくわからなくって本当にこまってます。
問題:四則演算する電卓を作りなさい。また、あまりも出しなさい。
例:%a.out 5+8
5+8=13
式を入れれば自動計算するようにしたいのですが///さっぱりわからないのです。
すみません。

421 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:13:54 ]
お前の質問も全くわからん

422 名前:こまった [2007/11/13(火) 17:22:26 ]
式を打ち込めば四則演算をしてくれて、かつ、あまりがあれば、それも表示してくれるプログラミング
なんですけど(;△;)
どうしたらよいのでしょう。

423 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:56:16 ]
>>422
とりあえずがんばってみたら?
だめなら、ダメなりに、どこがどういうことで行き詰ったかかかなあかんよ

424 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:02:44 ]
mapのデータ部分にクラスを利用する?ことができるらしいんですがイマイチどうすればいいか
わかりません・・・

425 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:05:28 ]
>>424
普通の型と同じでおk

426 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:09:39 ]
>>425
例えばDATAっていうクラスがあったとしたら
map<key,DATA>でいいってことですか?



427 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:40:02 ]
[1] 基礎プログラミング
[2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を
求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも
のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか
ったときは「なし」と印字せよ。
なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、
奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。
 [3.1]Linux
 [3.3]C言語
[4]できれば今日中
[5] 配列

428 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:45:57 ]
【質問テンプレ】
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5256.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月20日
[5] その他の制限:if文、if-else文、switch文まで習いました

429 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:00:14 ]
>>426
その通り
ついでにスレ違い

430 名前:デフォルトの名無しさん [2007/11/13(火) 21:33:40 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 第1項・第2項の値を1とし、
直前の2つの項の和を項の値とする数列を「フィボナッチ数列」と言う。
この数列のi番目の項を計算する関数は、
以下のように再帰的に記述することができる。

f(i) = f(i-1) + f(i-2) (i > 1のとき)
f(i) = 1 (i = 1のとき)
f(i) = 0 (i = 0のとき)

キーボードから数字を入力して変数aに格納し、
フィボナッチ数列・第a項の値を計算するプログラムを作成せよ。

項の計算は上の定義を使い、
再帰的な呼び出しを実行する関数
int F(int n)
を作成して呼び出すこと。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで

431 名前:デフォルトの名無しさん [2007/11/13(火) 21:35:17 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): キーボードから入力した数値(10進数)を
2進数に変換して画面に出力するコードを作成しなさい。

また,キーボードから入力した2進数の数値を
10進数に変換して画面に出力するコードを作成しなさい。

また、必要に応じて再帰を使っても使わなくてもよい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで

432 名前:380 mailto:sage [2007/11/13(火) 21:35:40 ]
>>380です。単位かかってるレポなんでどなたかお願いします。

433 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:35:40 ]
>>428
if(a==0) {
if(b==0) {
if(c==0) printf("It is trivial!\n");
else printf("Boo-boo!\n");
}
else {
x1 = -c / b;
printf("x=%.2f\n", x1);
}
}
else {
D = b * b - 4 * a * c;
if(D >0) {
x1 = (-b+sqrt(D)) / (2 * a);
x2 = (-b-sqrt(D)) / (2 * a);
printf("x=%.2f,%.2f\n", x1, x2);
}
else if(D==0) {
x1 = -b / (2 * a);
printf("x=%.2f\n", x1);
}
else printf("There exist no real-valued solutions.\n");
}
return 0;
}


434 名前:デフォルトの名無しさん [2007/11/13(火) 21:36:01 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ハノイの塔を解くプログラムを作成する。
キーボードから円盤の枚数を入力し、
円盤を移動する手順を画面に表示すること。


・円盤は小さい物から順に1から番号で示す
・柱はL・C・Rで示し、円盤全体をLからRへ移すとする
・可能ならば手順の回数も表示すること


【実行結果(枚数を3と入力した場合)】
円盤枚数を入力 3

円盤1をL→Rへ移す
円盤2をL→Cへ移す
円盤1をR→Cへ移す
円盤3をL→Rへ移す
円盤1をC→Lへ移す
円盤2をC→Rへ移す
円盤1をL→Rへ移す
(終了)

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで

435 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:42:19 ]
>>433
ありがとうございました。

436 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:49:56 ]
>>434
Hanoiだし再帰使っていいよね?
#include<stdio.h>
void hanoi(int L,int C,int R,int n){
    if(n==0)return;
    hanoi(L,R,C,n-1);
    printf("円盤%dを%c→%cへ移す\n",n,L,R);
    hanoi(C,L,R,n-1);
}
main(){
    int n;
    printf("円盤枚数を入力");
    scanf("%d",&n);
    hanoi('L','C','R',n);
    printf("手順の回数 %d\n",~(~0<<n));
}



437 名前:shin [2007/11/13(火) 21:54:59 ]
[1]授業単元: 関数入門
[2]問題文:

100点満点の試験を入力して、5段階評価を返す関数 hyouka を作成せよ。
5段階評価は、100〜90までは5、89〜80は4、79〜70は3、69〜60は2、60未満は1とする。
この関数を利用して、学生10人の試験の点数を入力して、
それぞれの5段階評価を求め一覧表を表示するプログラム quality.cpp を作成せよ。

[3]環境
 [3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++

[4]期限: 2007年11月14日 17:00 まで
[5]その他の制限: 関数の作り方、使い方が分からないので、そこを教えていただけるだけでも結構です(´`;)

よろしくおねがいします!

438 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:46 ]
ウィルスつくってください
anonm4@yahoo.co.jp

439 名前:デフォルトの名無しさん [2007/11/13(火) 22:18:09 ]
[1] 授業単元:プログラミング、関数基礎
[2] 問題文(含コード&リンク):
メイン関数において、2つの放物線
 y=ax2+bx+c
 y=px2+qx+r
の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。
関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし
てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場
合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が
有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数
から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個
存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。

[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限: 2007年11月19日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
C言語の基礎しか習っていません。
どなたかよろしくお願いします。

440 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:23:38 ]
>>430
#include <stdio.h>
int F(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else
return F(n-1) + F(n-2);
}
main()
{
int a,x;
printf("数字を入力:");
scanf("%d",&a);
x = F(a);
printf("フィボナッチ数列第%d項 = %d\n",a,x);
return;
}

441 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:35:55 ]
>>440
それだと末尾最適化されないはず
こっちで
#include<stdio.h>
#include<stdlib.h>

typedef unsigned int uint;

uint iter(uint a, uint b, uint n) { return n == 0 ? 1 : n == 1 ? a : iter(a+b,a,n-1); }
uint fibonacci(uint n) { return iter(1,1,n); }

int main(void)
{
size_t idx = 0;
for( ; idx != 10; ++idx)
printf("%d: %d\n",idx,fibonacci(idx));
return EXIT_SUCCESS;
}


442 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:37:18 ]
すまん。大元の問題読んでなかった。
>>440でいいね。

443 名前:46 mailto:sage [2007/11/13(火) 22:46:48 ]
どなたか>>46をお願いします

444 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:53:23 ]
>>443
使っているライブラリは何?よくわからないけど興味あるから勉強してみたい。
で、もしできたら答える。

445 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:59:41 ]
>>444
意味わからん。

446 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:10:15 ]
>>444
とりあえずforkをぐぐるところから始めるといいと思うよ



447 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:16:14 ]
>>443, >>444
そんなおまいらに、
ttp://www.ipa.go.jp/security/awareness/vendor/programming/b07_04_main.html

448 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:28:57 ]
当方の環境は、WindowsXP / 処理系は gcc 3.4.4 です。
プログラムを起動すると、名前と点数を聞いてきます。
10人分入力すると、名前と評価(level)を表示します。
入力した名前が 1024 文字以上だと、バグります。ごめんなさい。

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







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

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

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