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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

前スレ
C/C++の宿題片付けます 136代目
http://pc12.2ch.net/test/read.cgi/tech/1274827528/
2デフォルトの名無しさん:2010/06/18(金) 06:28:44
前スレ最後で騒いでしまい、埋まってしまったので立てました。
3デフォルトの名無しさん:2010/06/18(金) 06:45:53
#include <linux/kernel.h>
#include <linux/syscalls.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/percpu.h>
#include <linux/slab.h>
#include <linux/capability.h>
#include <linux/blkdev.h>
#include <linux/file.h>
#include <linux/quotaops.h>
#include <linux/highmem.h>
#include <linux/module.h>
4デフォルトの名無しさん:2010/06/18(金) 06:52:42
> (解読可能であるかどうかの厳格な判定は知られていない)
まれに複数の復号結果が生まれるかもしれないけど、一意になる可能性は結構高いのかもしれない。
復号化は昼休みにでも挑戦。
5デフォルトの名無しさん:2010/06/18(金) 07:08:03
次の問題を解くプログラムを再帰を使って実装せよ。
問題 コインの種類として、1,5,8,10,15の5種類を与える。与えられた金額m
に対して、最小枚数のコインでmを支払うときの枚数を求めよ。
6デフォルトの名無しさん:2010/06/18(金) 07:36:59
>>5
#include <stdio.h>

int coins[5] = {15,10,8,5,1};
int mod(int m, int coin)
{
int a, b;
if(coins[coin]==1)
{
return m;
}
a = m / coins[coin];
b = m % coins[coin];
return (mod(b, ++coin) + a);
}

int main(int argc, char ** argv)
{
int m;
printf("m=?\n");
scanf("%d", &m);
printf("%d mai.\n", mod(m, 0));
return 0;
}
7デフォルトの名無しさん:2010/06/18(金) 07:44:43
解答ありがとうございます。
プログラムは、「再帰を使って」、
出力は、「最小枚数」でお願いします。
(例えば、m=33のときは、5枚ではなく3枚を出力)
8デフォルトの名無しさん:2010/06/18(金) 07:58:09
何年か前にそんな感じの問題見たなあ
9:2010/06/18(金) 08:09:01
33円の時は15円が2枚、1円が3枚で、5枚が最小だと思うんだが、そう言う問題じゃなくて?
再帰はしてるよ
10デフォルトの名無しさん:2010/06/18(金) 08:16:13
33円のときは、15円、10円、8円それぞれ1枚ずつで3枚。
こっちのほうが最小ですよね?
11デフォルトの名無しさん:2010/06/18(金) 08:20:17
#include <stdio.h>

int mincoin(int num, int n, int idx, int *coins, int maxidx);

int main(){
int coins[] = {1,5,8,10,15};
int num=33;
int n = mincoin(num, 0, 0, coins, sizeof(coins)/sizeof(coins[0]));

printf("%d", n);
return 0;
}

int mincoin(int num, int n, int idx, int *coins, int maxidx){
int i, min, res, rest;

if(num == 0){
return n;
}

min = 10000000;
for(i = idx;i < maxidx;i++){
rest = num-coins[i];
if(rest < 0) break;
res = mincoin(rest, n+1, i, coins, maxidx);
if(res < min){
min = res;
}
}
return min;
}
12デフォルトの名無しさん:2010/06/18(金) 08:27:19
>>11
エラーがでます
13デフォルトの名無しさん:2010/06/18(金) 08:30:15
そりゃよかったね
14:2010/06/18(金) 08:42:01
>11
なるほど。。賢いやり方だ。
15デフォルトの名無しさん:2010/06/18(金) 10:52:18
>>11,14
Dynamic Programming だね。
16デフォルトの名無しさん:2010/06/18(金) 11:06:27
数が大きくなるととんでもなく処理時間かかるし、賢いやり方とはいえないと思うが
17デフォルトの名無しさん:2010/06/18(金) 11:25:37
>>5
#include <stdio.h>
int min;
void count(int n, int idx, int cnt, int *coin)
{
int i, temp = coin[idx];

if(n % temp == 0) {
cnt += n / temp;
if(cnt < min) min = cnt;
return;
}

for(i = 0; i * temp < n; i++) count(n - i * temp, idx-1, cnt + i, coin);
}
int main(void)
{
int coin[] = {1, 5, 8, 10, 15}, n;

scanf("%d", &n);

min = n;

count(n, sizeof coin / sizeof *coin - 1, 0, coin);

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

return 0;
}
18デフォルトの名無しさん:2010/06/18(金) 11:27:18
>>16
もっといい方法が在るなら、コードか参考urlをどうぞ。
1917:2010/06/18(金) 11:50:26
ちょっと改良
#include <stdio.h>
int min;
void count(int n, int idx, int cnt, int *coin)
{
int i, temp = coin[idx];
if(min <= cnt) return;
if(n % temp == 0) {
cnt += n / temp;
if(cnt < min) min = cnt;
return;
}
for(i = n / temp; i >= 0; i--) count(n - i * temp, idx - 1, cnt + i, coin);
}

int main(void)
{
int n, coin[] = {1, 5, 8, 10, 15};

scanf("%d", &n);
min = n;

count(n, sizeof coin / sizeof *coin - 1, 0, coin);

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

return 0;
}
20>>3-4:2010/06/18(金) 12:03:12
961 :デフォルトの名無しさん :2010/06/18(金) 01:29:00
[1]授業単元:暗号理論(大学専門コース)
[2]問題文(含コード&リンク)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10714.lzh
[3]環境
[3-1] OS:C/C++処理系があれば何でも可
[3-2] コンパイラ:gccに近い処理系が理想
[3-3] 言語:C/C++どちらでも可
[4] 9/15迄(夏休み終了まで)
[5] 難しいそうです。無理しないほうがいいそうです。ただ出来たら
テストの点に無関係に単位をくれるそうです
21デフォルトの名無しさん:2010/06/18(金) 14:03:32
解いた奴には天地の怒りの鉄槌と災厄が降り掛かるだろう系の
問題ぢゃね?
22デフォルトの名無しさん:2010/06/18(金) 14:14:25
/がアルファベットに変換されるのってコメントとの関係なのかな
23デフォルトの名無しさん:2010/06/18(金) 14:43:47
> (解読可能であるかどうかの厳格な判定は知られていない)
デクリプトには答えが有るとは言ってない、に読める。

エンクリプトは何とか完成できたが、iii と iik, ijk, ijj の区別をつけるデクリプトは無理。
1番目の文字が、仮に、デクリプトするれば i と分かっても、
2通目の文字に j があれば ii と ij の2通り以上、46通り以下に可能性が分かれる。

なら、次文字から推測できる全候補をプログラムで表示するようにすればいいんではないだろうか。
24デフォルトの名無しさん:2010/06/18(金) 15:22:00
解読したら正解のコードになるんだったら面白かったのにそうでもないっぽいよね
25デフォルトの名無しさん:2010/06/18(金) 15:43:05
>>24
まあ一週間くらい待ってて
26デフォルトの名無しさん:2010/06/18(金) 15:49:55
>>25
作ってるなら途中のコードキボンヌ
27デフォルトの名無しさん:2010/06/18(金) 16:43:46
>>26
動くのはエンコードだけだからいらんだろ
28デフォルトの名無しさん:2010/06/18(金) 18:06:31
とりあえずここまで
#include <linux/kernel.h>
#include <linux/syscalls.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/percpu.h>
#include <linux/slab.h>
#include <linux/capability.h>
#include <linux/blkdev.h>
#include <linux/file.h>
#include <linux/quotaops.h>
#include <linux/highmem.h>
#include <linux/module.h>
#include <linux/writeback.h>
#include <linux/hash.h>
#include <linux/suspend.h>
#include <linux/buffer_head.h>
#include <linux/task_io_accounting_ops.h>
#include <linux/bio.h>
#include <linux/notifier.h>
#include <linux/cpu.h>
#include <linux/bitops.h>
#include <linux/mpage.h>
#include <linux/bit_spinlock.h>

static int fsync_buffers_list(spinlock_t *lock, struct list_head *list);

#define BH_ENTRY(list) list_entry((list), struct buffer_head
29デフォルトの名無しさん:2010/06/18(金) 18:14:16
>>23
解読できた単語を配列に保存していって、iiとijとかのように区別しにくいい単語に出あったら、保存した中にある単語を優先する、とかはどうだろう。
30デフォルトの名無しさん:2010/06/18(金) 18:28:33
#include <stejo.h>
kou malp(vpmf){
nqv qnborc_krrsd_lvgesftgp_mswt_iqghui;
rvx sdjtwuekv_jywx_zjyzfAg;
wxB xyCu_vowDEh_ztyyxnk;
fyu(zplAvm_oAzAn_pzhowpBqB_qBFC_lChrCs=0;
DqtDxu_rEDEv_sAiwyxFyE_tFGG_mFizGA<=11234;
HrBGzC_uIHID_vBjEAFJGH_wJHK_nIjHKI++)
gLB(JfoKLLgpM_kACD_BJIJiKj=5;
NhqOMPirQ_lCEF_DKLMkNl<=223456; RjsSNTktU_mEGH_FLOPmQn++)
hMC( VWRN_OsPSTo_XDIOQxM=6;
YZUR_StTVWp_aEJPUyN<345677;
bcXV_WuXYZq_dFKQYzO++)
pGeRai("%d %d %d %d",
fgbZ_avbcdr_hHLScAP,
ijed_ewffgs_kIMTgBQ,
llumUnmvo_nGNO_HRhitju,hxSpJT_CiVWU_DPkVKWXXq_Ejkk_wrkYYZ);
LvlQMZ 7;
}
31デフォルトの名無しさん:2010/06/18(金) 18:31:32
>>29
全検索すると候補の数が一万を超えることも多いので
辞書使わないと厳しいです
32デフォルトの名無しさん:2010/06/18(金) 18:49:55
これ見てよ↓
http://livedoor.blogimg.jp/tekepo/imgs/3/4/3414dfca.jpg
ばらまこうぜ!
33デフォルトの名無しさん:2010/06/18(金) 18:56:54
>>30
#include <stdio.h>
int main(void){
int omaira_konna_kudaranai_koto_higana;
int ichinichi_jyuu_yattete;
int iito_omotte_irunoka;
for(omaira_konna_kudaranai_koto_higana=0;
omaira_konna_kudaranai_koto_higana<=10000;
omaira_konna_kudaranai_koto_higana++)
for(ichinichi_jyuu_yattete=0;
ichinichi_jyuu_yattete<=123456; ichinichi_jyuu_yattete++)
for( iito_omotte_irunoka=0;
iito_omotte_irunoka<234567;
iito_omotte_irunoka++)
printf("%d %d %d %d",
iito_omotte_irunoka,
iito_omotte_irunoka,
ichinichi_jyuu_yattete,omaira_konna_kudaranai_koto_higana);
return 0;
}
34デフォルトの名無しさん:2010/06/18(金) 19:02:03
>>33
すげぇ。じゃデコーダーほぼ出来てるんだ


ん?
35デフォルトの名無しさん:2010/06/18(金) 19:13:22
C言語の構文からマクロを乱用してないとして
void
for
return
を手がかりに逆算したい
36デフォルトの名無しさん:2010/06/18(金) 19:18:47
>>35
do と goto と continue も追加で
37デフォルトの名無しさん:2010/06/18(金) 19:21:52
if もだ
3833:2010/06/18(金) 20:06:02
>>34
全然できてないよ
>>33 はかなりの部分人力で解いたものw
39デフォルトの名無しさん:2010/06/18(金) 20:28:21
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10717.txt
とりあえず1行目だけのデコード結果をうpしたからエンコーダのデバッグにでも使ってくれ
2行目までもデコードしてみたがファイルが1G越えたから途中でやめた

効率的にデコードするには構文解析するといいかもしれない
たとえば#w7 -> #include, w3( -> if(, w5( -> while( (w:文字、その後の数字は文字の個数)
などのヒントをあらかじめ与えておき正しく変換できないときは枝狩する
また、シンボルテーブルを作り、シンボルテーブルにない変数を使用しようとしたら枝狩するなど
構文解析によりかなりの枝狩ができると思われる(#define HOGE forとかされると死ぬが)

40デフォルトの名無しさん:2010/06/18(金) 20:31:24
>>20 のlinuxのディストリビューション分かる人いませんか?
手元にある VineLinux3.2 kernel2.4 を見てみたけど違うみたいでした
41デフォルトの名無しさん:2010/06/18(金) 20:57:47
前にエラー文字列で検索したら、どうもこれに近い。
ttp://www.google.com/codesearch/p#8lz4Axekcxw/fs/buffer.c

あと、prob.txtの引数の間のtabはなんなんだろう。
ソースコードを整形したのかな。
42デフォルトの名無しさん:2010/06/18(金) 21:03:50
>>40
別にそれは関係ないと思うよ。
復号したコードをコンパイルするとかいう話でもないしね。
43デフォルトの名無しさん:2010/06/18(金) 21:04:24
>>41
static void buffer_io_error(struct buffer_head *bh)

までは手動で頑張ったのにw
4440:2010/06/18(金) 21:07:55
>>42
識別子を辞書登録するのが大変なので
include しているファイルの中身も読ませようと思っていたのです

が、>>41 のおかげで対応が分かるので必要なくなりました
45デフォルトの名無しさん:2010/06/18(金) 21:08:59
復号したらそのままコンパイル出来るものを、添付書類無し
で再頒布するのはGPLに抵触しかねないから、
コメントとか外したりいろいろ細工してる可能性もあるだろ
46デフォルトの名無しさん:2010/06/18(金) 21:15:28
>>44
ああー、なるほど。そういう理由だったのか。スマソ。
47デフォルトの名無しさん:2010/06/18(金) 21:57:17
この行より前は >>41 と一致する
YCvXRg("クォートされた部分も暗号化対象外\n",wYkyL);
48デフォルトの名無しさん:2010/06/18(金) 21:58:17
>>45
この場合頒布してるのは質問者?回答者?
49デフォルトの名無しさん:2010/06/18(金) 22:12:23
該当箇所に printf("", inode); を挿入したら完全に一致した
50デフォルトの名無しさん:2010/06/18(金) 22:38:46
[1] 授業単元:オブジェクトプログラミング
[2] 問題文(含コード&リンク):図1のプログラムを参考に、文字配列とアドレスの関係、すなわち、
char str[ ] = “abc”とアドレスの関係を調べよ。特にアドレスが幾つずつ変化するかを理解すること。
尚、char型変数へのポインタ変数は、char *ptr;になることを注意すること。
[3] 環境
 [3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月19日[5] その他の制限:int main(void){から始まる
図1
#include<stdio.h>

int main(void){

int a[4];
int *p;
p = &a[0];
for(i=0;i<4;i++){
a[i] = i;
}
for(i=0;i<4;i++){
printf(“a[%d]=%d\n”i,a[i]);
printf(“p = %p\n”,p);
printf(“*p = $d\n\n”, *p);
}
}

51デフォルトの名無しさん:2010/06/18(金) 22:40:07
>>50
図1の実行例

a[0]=0
p = 0x22ccd0
*p = 0

a[1]=1
p = 0x22ccd4
*p = 2

a[2]=2
p = 0x22ccd8
*p = 2

a[3]=3
p = 0x22ccdc
*p = 3

つまり、int型では4byteずつ変化する。これをchar型は1byteずつ変化するということを示しなさいということです。
52デフォルトの名無しさん:2010/06/18(金) 22:43:49
>>51
charに変えるのが出来ないっていってますか?
53デフォルトの名無しさん:2010/06/18(金) 22:50:29
>>52
そうです。
それから、もうひとつ
図1をdouble型に変えるのもお願いします。
54デフォルトの名無しさん:2010/06/19(土) 01:54:57
こういうこと?
#include <stdio.h>
int main(void) {
char str[] = "abc", *ptr;
int i;

ptr = &str[0];

for(i = 0; str[i]; i++, ptr++) {
printf("str[%d] = %c\n", i, str[i]);
printf("ptr = %p\n", ptr);
printf("*ptr = %c\n\n", *ptr);
}

return 0;
}
55デフォルトの名無しさん:2010/06/19(土) 02:49:18

[1] 授業単元:
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10719.zip
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: ([2010年06月20日23:59まで]
[5] その他の制限:
56デフォルトの名無しさん:2010/06/19(土) 03:00:29
>>55
#include <stdlib.h>
#include <time.h>

void random_format(int num_data, int array[])
{
int i;
srand(time(NULL));
for(i = 0; i < num_data; i++)
array[i] = (int)( (double)rand() / RAND_MAX * 100.0 );
}
57デフォルトの名無しさん:2010/06/19(土) 05:15:59
>>55
0〜99の数値が全て1回ずつ必要なら、以下でok。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NMAX 100

int main(void)
{
    int i, a[NMAX], tmp, w;

    srand(time(NULL));
    for (i = 0; i < NMAX; i++)
a[i] = i;

    for (i = 0; i < NMAX; i++) {
w = rand() % (NMAX - i) + i;
tmp = a[w];
a[w] = a[i];
a[i] = tmp;
    }

    return 0;
}
58デフォルトの名無しさん:2010/06/19(土) 05:33:12
>11
>min = 10000000;
10000000って数字はどっから出てきたの?
59デフォルトの名無しさん:2010/06/19(土) 06:19:17
>>58
有り得ないほどの大きい数字なら何でも良かったんじゃないかな?
min = num/coins[0];
でいいと思う。
60デフォルトの名無しさん:2010/06/19(土) 12:42:30
>>28
バージョンは分からんが、Linuxカーネルのfs/buffer.cをエンコードしてるのか?
61デフォルトの名無しさん:2010/06/19(土) 12:43:06
for(i = 0; i < NMAX; i++) {
w = rand() % (i + 1);
a[i] = a[w];
a[w] = i;
}
62デフォルトの名無しさん:2010/06/19(土) 12:48:14
>>20
一応MFCでデコードしながら、分からなくなったらユーザに聞いてくるアプリにしてみた。
コメントとかリテラルとか、まだ一回も動いてないコードとか有るし、
デコードした文字列をエディットに出力して、ユーザが判断する材料にさせてるんだが、
うまくエディットコントロールスクロールさせられなくて面倒くさくなって放置してる。
(メインスレッドでループしながらエディットに出力して、且つスクロールさせようってのがダメなんだろうが。。)
需要があればうpします。
一旦入力した候補はhistファイルに取っておくので、これを使って地道にやってけばいずれデコード出来ると思う。
63デフォルトの名無しさん:2010/06/19(土) 16:02:35
>>20 のエンコード部分
typedef unsigned char uchar;

void encode_output(int moji)
{
static int is_first=1;
static uchar next_table[256], table[256];

if(is_first)
{
int i;

for(i=0;i<256;i++) next_table[i]=table[i]=i;

for(i='A';i<'Z';i++) next_table[i]=i+1;
next_table[i]='a';
for(i='a';i<'z';i++) next_table[i]=i+1;
next_table[i]='A';
for(i='0';i<'9';i++) next_table[i]=i+1;
next_table[i]='0';
is_first=0;
}

putchar(table[moji]);
table[moji]=next_table[table[moji]];
}
64デフォルトの名無しさん:2010/06/19(土) 16:26:50
>>54
ありがとうございました。
65デフォルトの名無しさん:2010/06/19(土) 16:49:54
[1] 授業単元:オブジェクトプログラミング
[2] 問題文(含コード&リンク):以下のプログラムをdouble型にせよ。
尚、double型変数へのポインタ変数は、double *ptr;になることに注意すること。
[3] 環境
 [3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月19日[5] その他の制限:int main(void){から始まる

#include<stdio.h>
int main(void){
int a[4];
int *p;
p = &a[0];

for(i=0;i<4;i++){
a[i] = i;
}

for(i=0;i<4;i++){
printf(“a[%d]=%d\n”i,a[i]);
printf(“p = %p\n”,p);
printf(“*p = $d\n\n”, *p);
}
}

実行例は>>51と同じです
66023:2010/06/19(土) 17:08:52
#include <stdio.h>
void encode_output(int moji);
int main(void){  int c, slash = 0;
while((c = getchar()) != EOF) {
  if(c>='a' && c<='z' || c>='A' && c<='Z' || c>='0' && c<='9'){
    if(slash){ /* /X は、同じ文字で2回出力 */
      encode_output(c); slash = 0; }
    encode_output(c);
  } else if(c == '*') {
    if(slash){ /* /*のコメントは読み飛ばす */
      do { while(getchar() != '*'); } while(getchar() != '/');
      slash = 0;
    } else putchar(c);
  } else if(c == '/') {
    if(slash) { /* // comment は、そのまま出力 */
      putchar(c);
      do putchar(c); while((c = getchar()) != '\n');
      putchar(c);
      slash = 0;
    } else slash = 1;
  } else if(c == '"') { /* "string" は、そのまま出力 */
    if(slash) {slash = 0; putchar(c);} /* /X は、同じ文字で2回出力 */
    do {
      if(c == '/') {slash = 1; continue;}
      if(slash) {slash = 0; putchar(c);}
      putchar(c);
    } while((c = getchar()) != '"');
    putchar(c);
  } else {
    if(slash) {slash = 0; putchar(c);} /* /X は、同じ文字で2回出力 */
    putchar(c); }
}}
67デフォルトの名無しさん:2010/06/19(土) 18:05:22
>>5
亀ですがこういうのはどうなんでしょう?
#include <stdio.h>
int coin(int m,int i,int sum)
{ int a[]={1,5,8,10,15};
sum=sum+m/a[i];m=m%a[i];
if (m==0)return sum;
if (!i){sum+=m;return sum;}
if ((m%a[i]==3||m%a[i]==4)&&(sum)){sum--;m=m+a[i];}
return coin(m,i-1,sum);}
int main(void){
int x;
printf("金額を入力してください:");
scanf("%d",&x);
printf("最小枚数は%d枚です。\n",coin(x,4,0));
return 0;}
68デフォルトの名無しさん:2010/06/19(土) 21:15:54
>>62
見せて見せて
6962:2010/06/19(土) 21:54:03
>>68
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10721.zip
うpしました。

input.txtに暗号化された内容をおいておきます。
hist.txtは履歴の入力。実行するとhistout.txtができるので、それをhist.txtに書き換えればおk。
deb.txtにデバッグログ
dec.txtに復号化したもの
enc.txtは今のところ何も出ない。

です。
一応7行目くらいまでやって放置してます。
バグもいっぱいあると思うんで、実行しながら候補を入れていき、バグ取りしてけば・・というレベルです。
70デフォルトの名無しさん:2010/06/19(土) 21:55:47
>>67
興味深いな。
> if ((m%a[i]==3||m%a[i]==4)&&(sum)){sum--;m=m+a[i];}
3,4になるプロセスが判らない。
71デフォルトの名無しさん:2010/06/19(土) 22:22:38
特定の組み合わせ限定だからだろ
72デフォルトの名無しさん:2010/06/19(土) 22:56:00
>>65です
誰かよろしくお願いします。
73デフォルトの名無しさん:2010/06/19(土) 23:02:49
>>70
最初の3,4以外の、8以上のm%5で3,4になる数字は最小枚数を求める時必ず8が入るので
15と10で割り過ぎないように先に8で割るようにしました。
7473:2010/06/19(土) 23:07:36
×先に8で割るように ○後で8で割れるように
75デフォルトの名無しさん:2010/06/19(土) 23:12:30
>>65
#include<stdio.h>
int main(void){
int i;
double a[4];
double *p;
p = a;

for(i = 0; i < 4; i++){
a[i] = i;
}

for(i = 0; i < 4; i++, p++){
printf("a[%d]=%f\n", i, a[i]);
printf("p = %p\n", p);
printf("*p = %f\n\n", *p);
}
return 0;
}
76デフォルトの名無しさん:2010/06/20(日) 01:10:03
>>73
なるほど。
オーソドックスな解法は、>>17のようなDPだろうけど、>>67でも出来る、
という事は、条件付きで数学的に等価なのかもな。
77デフォルトの名無しさん:2010/06/20(日) 02:55:07
>>75
ありがとうございました
78デフォルトの名無しさん:2010/06/20(日) 02:57:10
[1] 授業単元:オブジェクトプログラミング
[2] 問題文(含コード&リンク):以下のプログラムをdouble型について調べるプログラムを作成せよ。
尚、単純ポインタが指す値をprintf(“%p) =0x%x\n”, ptr_d, *ptr_d);
を用いて表示すると図1のような実行結果を得るが、図2のように表示をするようにしなさい。
[3] 環境
 [3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月20日[5] その他の制限:int main(void){から始まる
79デフォルトの名無しさん:2010/06/20(日) 02:58:58
#include <stdio.h>
int main(void){
char src[32], dst[32];
char *ptr_c;
int *ptr_i, *ptr;
double *ptr_d;
int i;
// src[i]配列にデータを格納
for(i=0; i<32; i++){
src[i] = i;
}
// dst[i]配列へのコピー
for(i=0; i<32; i++){
dst[i] = src[i];
}
//配列の出力
for(i=0; i<32; i++){
printf("dst[%d]=0x%x\n", i, dst[i]);
}
// ptr_cにsrcの先頭アドレスをコピー
ptr_c = src;
// ptrを使用してsrc[i]のデータを内容を出力する。
for(i=0; i<32; i++){
printf("%p) = 0x%x\n", ptr_c, *ptr_c);
ptr_c++;
  }
}
80デフォルトの名無しさん:2010/06/20(日) 03:00:45
図1
0x22ccc0) = 0.3020100
0x22ccc8) = 0.b0a0306
0x22ccd0) = 0.13121110
0x22ccd8) = 0.1b1a1918

図2
ptc_d:0x22ccc0) = 0.3020100
   0x22ccc4) = 0.7060504
ptr_d:0x22ccc8) = 0.b0a0306
 0x22cccc) = 0.f0e0d0e
ptr_d:0x22ccd0) = 0.13121110
0x22ccd4) = 0.17161514
ptr_d:0x22ccd8) = 0.1b1a1918
0x22ccdc) = 0.1f1e1d1c
81023:2010/06/20(日) 13:34:27
>>069
VS2005で動かしてみました。
ゲームとしては7行くらいでゲームオーバーでもかまいません。
ただ、/を入れた後の文字選択が2回必要なのはなぜでしょうか。
82デフォルトの名無しさん:2010/06/20(日) 14:57:39
>>78です
どなたか、よろしくお願いします。
83デフォルトの名無しさん:2010/06/20(日) 15:06:53
以前のヤツからそうなんだけど、書いてあるコード実行しても図の例と同じにはならないんだよな
84デフォルトの名無しさん:2010/06/20(日) 15:49:25
すみません。説明不足でした。
ソースコードは、int型で書かれています。これを、double型に書き換えていただきたいんです。
そして、double型に書き換えたものを実行すると、図2のように表示せよという問題です。
よろしくお願いします。
85デフォルトの名無しさん:2010/06/20(日) 16:16:30
>>78
#include<stdio.h>
#define SIZE 4
int main(void){
int i;
double src[SIZE], dst[SIZE];
double *ptr_d;
// データ格納?
for (i = 0; i < SIZE; i++) {
src[i] = i;
dst[i] = src[i];
}
// 配列の内容を出力
for (i = 0; i < SIZE; i++) {
printf("%p) = %f\n", &dst[i], dst[i]);
}
// ポインタと配列を使って内容を出力
for (ptr_d = src, i = 0; i < SIZE; ptr_d++, i++) {
printf("ptr_d :%p) = %f\n", ptr_d, *ptr_d);
printf("src[%d]:%p) = %f\n", i, &src[i], src[i]);
}
return 0;
}

すいません。
問題のゴールが明確には分からなかったので適当に書いてます。
大枠はこれでいいと思うので書き換えて使ってください。
8662:2010/06/20(日) 16:49:11
>>81
入力しても時々無視されちゃってます。
バグですが、もう一度入れれば入るみたいなんで、無視しちゃってください。
(直して^^;)
87023:2010/06/20(日) 17:16:35
int ch, ch2, ch3;
bool slash = false;
/****/
try{
/****/
while(1){
  ch = skip();
  if(ch == EOF) break;
  plane_put(ch);
  kouhosu = 0;
  bslash = 0;
  ch2 = fgetc(fp1);
  if(!kigou(ch2) && (ch2 == ch + 1)){
    bslash=1;}
  ungetc(ch2, fp1);
  if(slash) { // add 2010.6.20
    ch = ch3;
    slash = false;
  }else{
    ch = fukugou(ch);}
  dec_put(ch);
  fputc(ch, fp3);
  if(ch=='/'){
    ch3 = fukugou(ch2 - 1);
    angou(ch3);
    slash = true; // add 2010.6.20
  }else{
    deb("angou=%c\n",ch);
    angou(ch);
  }
}}
8862:2010/06/20(日) 18:08:56
>>87
ありがとうございます!!

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10722.zip
に更新しました。
スクロール出来なくて今何をデコードしてるのか分からなくなってた問題は
別スレッドのポップアップウインドにしたので解消しました。


なんか'/'の扱いが難しいすね。よく考えると、'/'と見なしたら、その次の文字を-1して復号化するんだけど、
その復号化において、さらに、'/'と見なすべき場合は再帰でやらないと出来ないんじゃないだろうか。。という気がしてきた。
8962:2010/06/20(日) 18:31:48
っていうか、ほぼ毎回、候補が複数出てくる。
これほとんど無理だよねw
90デフォルトの名無しさん:2010/06/20(日) 20:24:13
?1から10までの積を計算するプログラムを書け。このとき,whileループを用いて、
画面に 1*2*3*・・・・*10 = という風に表示されるようにすること。

期限は6/22までです。お願いします。
91デフォルトの名無しさん:2010/06/20(日) 20:24:33
与えられた零以上の実数(a,b,c,d)と正の実数(e,f)に対して
つぎのロンバーグ表と積分値を求めるプログラムを作成せよ
(分割数:n=2^k≧16,推定回数:m≧3)

I=∫ 1/(a*x^3+b*x^2+c*x+d)dx (e≦x≦f)

ただし、キーボードから(a,b,c,d,e,f)を入力すれば
上記の定積分のロンバーグ表の値と積分値が画面表示
されるようなプログラムを作ること。

この問題を解ける方教えていただけませんか?
92デフォルトの名無しさん:2010/06/20(日) 20:35:12
>>90
#include <stdio.h>
int main(void)
{
int i=10,sum=1;
while(i--)printf(i?"%d*":"%d=%d\n",i+1,sum*=(i+1));
return 0;
}
93デフォルトの名無しさん:2010/06/20(日) 20:41:29
>>1
>>1
大事なことなので2回言いました。最近守らないやつが多すぎる。
94デフォルトの名無しさん:2010/06/20(日) 20:44:42
>>78
char src[32], dst[32];
int *ptr_i,*ptr;
double *ptr_d;
int i;
// src[i]配列にデータを格納
for(i=0; i<32; i++){
src[i] = i;
}
// dst[i]配列へのコピー
for(i=0; i<32; i++){
dst[i] = src[i];
}
// ptr_cにsrcの先頭アドレスをコピー
ptr_d = (double *)src;
// ptrを使用してsrc[i]のデータを内容を出力する。
for(i=0; i<4; i++){
printf("ptc_d:%#6x) = 0.%x\n", ptr_d, *ptr_d);
ptr_i = (int *)ptr_d;
printf(" :%#6x) = 0.%x\n", (ptr_i+1), *(ptr_i+1));
ptr_d++;
}
図2 ptr_d:0x22ccc8) = 0.b0a0306 は>>79のソース内容から外れるので考慮していない
9591:2010/06/20(日) 20:58:11
[1] 授業単元:数値計算法
[2] 問題文(含コード&リンク):
与えられた零以上の実数(a,b,c,d)と正の実数(e,f)に対して
つぎのロンバーグ表と積分値を求めるプログラムを作成せよ
(分割数:n=2^k≧16,推定回数:m≧3)

I=∫ 1/(a*x^3+b*x^2+c*x+d)dx (e≦x≦f)

ただし、キーボードから(a,b,c,d,e,f)を入力すれば
上記の定積分のロンバーグ表の値と積分値が画面表示
されるようなプログラムを作ること。
[3] 環境
 [3.1] OS:vista
[4] 期限: 無期限
96デフォルトの名無しさん:2010/06/21(月) 05:37:05
>>89
適当に選ぶと正解じゃない場合は常に行き詰まる模様
97デフォルトの名無しさん:2010/06/21(月) 07:33:49
エロゲの選択肢よりシビアだな
98023:2010/06/21(月) 09:02:14
decrypt 窓が、文字の無いところを表示するから、常に横スクロールが必要。
99デフォルトの名無しさん:2010/06/21(月) 13:31:35
10087 の修正を修正:2010/06/21(月) 16:05:27
int ch, ch2, ch3;
bool slash = false;
/****/
try{
while(1){
  ch = skip();
  if(ch == EOF) break;
  plane_put(ch);
  scroll(IDC_EDIT3); // add 2010.6.21 他のscroll()呼び出しは削除
  kouhosu = 0;
  bslash = 0;
  ch2 = fgetc(fp1);
  if(!kigou(ch2) && (ch2 == ch + 1)){
    bslash=1;}
  ungetc(ch2, fp1);
  if(slash) { // add 2010.6.20
    ch = ch3;
    slash = false;
  }else{
    ch = fukugou(ch);}
  dec_put(ch);
  fputc(ch, fp3);
  if(ch=='/'){
    kouhosu = 0; // add 2010.6.10 候補を消す
    ch3 = fukugou(ch2 - 1);
    angou(ch3);
    slash = true; // add 2010.6.20
  }else{
    deb("angou=%c\n",ch);
    angou(ch);
  }
}}
101デフォルトの名無しさん:2010/06/21(月) 16:08:25
そろそろ別にスレでも作ってそっち行ってくんないかな
102デフォルトの名無しさん:2010/06/21(月) 16:17:56
>>99
間違ってるぞw
103デフォルトの名無しさん:2010/06/21(月) 16:33:42
>>102
本からの丸写しなんだが。間違ってる点があるなら指摘よろしく
104デフォルトの名無しさん:2010/06/21(月) 16:37:28
本当に丸写しなら、出版社に言って謝礼をもらうべきw
どうせ問題にあわせていじったところでミスってるだけだろうけど。
105デフォルトの名無しさん:2010/06/21(月) 16:38:51
>>104
嫌味なら誰にでも言える
どこがどう間違っているのか具体的に指摘よろしく
それかお前が正しいプログラムを書いて示せ
106デフォルトの名無しさん:2010/06/21(月) 16:40:47
間違いの存在教えてもらっただけでも感謝して、自分で探せよw
107デフォルトの名無しさん:2010/06/21(月) 16:41:28
まあどこが間違っているか示せないだろうけどな

>>99は何度も検証したし結果も合ってる

ただケチを付けてみたいだけだろう>>102
108デフォルトの名無しさん:2010/06/21(月) 16:45:23
そんな検証の仕方じゃ話になんないなw
109デフォルトの名無しさん:2010/06/21(月) 16:45:57
以降放置勝手に言ってろ
110デフォルトの名無しさん:2010/06/21(月) 16:46:36
>h = b - a;
これはなんですか?w
111デフォルトの名無しさん:2010/06/21(月) 16:49:57
>>110
それで合ってんだよ
112デフォルトの名無しさん:2010/06/21(月) 16:52:32
え?w
113デフォルトの名無しさん:2010/06/21(月) 16:53:29
>>20 の問題だけでスレ立てるのもアレなのでこちらでどうぞ

スレ立てるまでもない質問はここで 106匹目
http://pc12.2ch.net/test/read.cgi/tech/1276215571/
114デフォルトの名無しさん:2010/06/21(月) 16:53:29
wてなに
115デフォルトの名無しさん:2010/06/21(月) 16:53:30
どうせ台形公式とかルンゲ・クッタ法のhと混同してるんだろうこの馬鹿は
ロンバーグ積分も知らない馬鹿は口出しすんな
116デフォルトの名無しさん:2010/06/21(月) 16:58:01
ロンバーグ積分は台形公式利用するものだし、hの意味は同じなんだがw

aとbは係数として関数に渡すもので、始点・終点じゃない
h = f - e;
が正しい。
117デフォルトの名無しさん:2010/06/21(月) 17:05:21
>>99のやり方はミス抜かしてもロンバーグ積分としては微妙だけどな。
毎回台形公式で求めなおしてるから計算回数無駄に多いし。
118デフォルトの名無しさん:2010/06/21(月) 17:06:54
>>116
確かにその通りだスマン

>>117
だから文句タラタラ言うなら自分でプログラムを書いて示せっつーの
119デフォルトの名無しさん:2010/06/21(月) 17:09:36
スマンですますなよ、この低脳がw
教えてくださいって土下座しろよこのマヌケ
120デフォルトの名無しさん:2010/06/21(月) 17:11:47
>>110で指摘されてもなお>>111と言える心の強さは素晴らしい
121デフォルトの名無しさん:2010/06/21(月) 17:14:36
>>113
まともに機能してるスレに関係ないもの誘導すんなよ。
過疎ってるスレがいくらでもあまってるんだから、そっちにしようぜ。

例えば
C言語を勉強しあおう
http://pc12.2ch.net/test/read.cgi/tech/1190599975/
とかさ
122デフォルトの名無しさん:2010/06/21(月) 17:15:12
そこまで言わなくてもいいと思うが、丸写しした本を教えてほしい。
それから、
> 何度も検証したし結果も合ってる
というところも詳しく。
123デフォルトの名無しさん:2010/06/21(月) 17:30:15
台形公式で刻み数を倍にするときは前回の計算結果を利用して、
関数の計算回数を減らすのが普通。
減らすって言っても、前回の計算がなかったとして直接計算したときと同じなんだけど。
少なくとも、前回の計算分丸々計算しなおすよりはマシになる。
124デフォルトの名無しさん:2010/06/21(月) 18:01:03
>>123
だから言葉で言わずにプログラムで書けっつーの
ここはプログラム板だ
125デフォルトの名無しさん:2010/06/21(月) 18:03:59
ググれカス
126デフォルトの名無しさん:2010/06/21(月) 18:05:22
>>124
先に>>122の質問に答えたら?
127デフォルトの名無しさん:2010/06/21(月) 18:25:50
>>90
#include <stdio.h>
int main(void)
{
    int i = 1, sum = 1;
    while (i < 10) {
sum *= i;
printf("%d*", i);
i++;
    }
    printf("%d = %d\n", i, sum *= i);

    return 0;
}
128113:2010/06/21(月) 20:05:45
>>121
了解した

>>20 の問題に関しては是非こちらへ

C言語を勉強しあおう
http://pc12.2ch.net/test/read.cgi/tech/1190599975/168-
129デフォルトの名無しさん:2010/06/22(火) 00:46:57
wってなに?
130デフォルトの名無しさん:2010/06/22(火) 01:03:40
waraiのw
131デフォルトの名無しさん:2010/06/22(火) 04:04:39
sumって変数名に乗算の結果を入れるのは気持ち悪い
132デフォルトの名無しさん:2010/06/22(火) 10:09:40
product
133デフォルトの名無しさん:2010/06/22(火) 11:05:37
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
[1] 授業単元:
char buf[80];
int main(int ac, char ** av)
{
int i;
buf[0] = '\0';
for(i = 1; i < ac; i++){
printf("%3d \"%s\"\n", strlen(av[i]), av[i]);
strcat(buf, av[i]);
}
printf("%3d \"%s\"\n", strlen(buf), buf);

これを入力した文字列を逆順に表示できるように書き換えよ
[3] 環境
 [3.1] Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日三時
[5] その他の制限:なし

おねがいします

134デフォルトの名無しさん:2010/06/22(火) 11:39:40
for(i = strlen(buf) - 1; i >= 0; i--) printf("%c", buf[i]);
135デフォルトの名無しさん:2010/06/22(火) 11:49:15
配列a[n],配列b[n] と配列の大きさn を渡すと配列の
要素を入れ換えるプログラムをポインタを用いて作成せよ.
例えば,a[3]={1,2,3},b[3]={101,102,103}とすると
き,結果として,a[3]={101,102,103},b[3]={1,2,3}と
なるようにせよ.

よろしくお願いします!
136デフォルトの名無しさん:2010/06/22(火) 11:50:29
void f(int *a, int *b, int size)
{
while(size--) {
int temp = *a;
*a++ = *b;
*b ++ = temp;
}
}
137デフォルトの名無しさん:2010/06/22(火) 12:06:39
>>136
早速の回答感謝します
ありがとうございました!
138デフォルトの名無しさん:2010/06/22(火) 14:55:24
1] 授業単元:システムコール
[2] 問題文(含コード&リンク):
コマンドライン引数で指定された文字列のいずれかと一致する名前の環境変数についてのみ、
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
main()
{
char **p;
for (p = environ; *p != NULL; p ++) {
printf("%s\n", *p);}
return 0;}

#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[], char *envp[])
{
char **p;
for (p = envp; *p != NULL; p ++) {
printf("%s\n", *p);}
return 0;}
のように変数名と値を表示するプログラムを書け。
ただし、コマンドライン引数に重複があっても、対応する環境変数について複数回表示してはならない
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2010年5月24日12:59まで
[5] その他の制限:特になし
よろしくお願いします
139デフォルトの名無しさん:2010/06/22(火) 15:05:45
期限が過ぎているのでスキップされました
140デフォルトの名無しさん:2010/06/22(火) 15:17:58
>>138
すいません!期限6/24です
141デフォルトの名無しさん:2010/06/22(火) 17:56:42
ワイルドカードのマッチを、正規表現使って行うにはどう変換すればいいですか。
. や * や ? で機能が違うのですが。

142デフォルトの名無しさん:2010/06/22(火) 18:01:55
ワイルドカード → 正規表現
? → .
* → .*
143デフォルトの名無しさん:2010/06/22(火) 18:05:12
サンクス。あと正規表現の特殊文字に\つけとけばいいですかね。
144デフォルトの名無しさん:2010/06/22(火) 18:47:03
[1] 授業単元:C・プログラミング
[2] 問題文(含コード&リンク):
深さ優先探索をリスト表現で表すプログラムを作成せよ。
制限は特にないです。
[3] 環境
 [3.1] Windows 7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2010年6月25日迄
よろしくお願いします。
145デフォルトの名無しさん:2010/06/22(火) 19:41:07
>.144
めっちゃ抽象的だな…
146デフォルトの名無しさん:2010/06/22(火) 19:44:08
まずは要件定義から始めること。



という実践的な問題なんだろ。
147デフォルトの名無しさん:2010/06/22(火) 20:09:28
>>138
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int
main(int argc, char *argv[], char *envp[])
{
char **p, **v;
int lth;
for (p = envp; *p != NULL; p++) {
lth = strchr(*p, '=') - *p;
for (v = argv; *v != NULL; v++) {
if (!strncmp(*p, *v, lth)) {
printf("%s\n", *p);
*p = '\0';
break;
}
}
}

return 0;
}
148デフォルトの名無しさん:2010/06/22(火) 20:30:24
[1] 応用プログラミング
[2] 問題文(含コード&リンク):構造体の基礎
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10733.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visualstadio 2008
 [3.3] 言語:C
[4] 期限:24日まで
[5] その他の制限:プログラミングやってまだ半年しか経ってません。
         構造体の授業の宿題です。
         どうか宜しくお願いします。
149 ◆QZaw55cn4c :2010/06/22(火) 20:43:07
150デフォルトの名無しさん:2010/06/22(火) 22:25:31
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):三目並べを作成せよ。ポインタとクラスを使用。
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C++
[4] 期限:6/23(水)8時半まで
[5] その他の制限:C++触り始めた所です。どうかお願いします。
151デフォルトの名無しさん:2010/06/22(火) 22:27:42
>>150
GUIでいいのか
152デフォルトの名無しさん:2010/06/22(火) 22:30:13
>>151
言い忘れてた。CUIでお願いします。

こんな感じにしてほしいです。
  1 2 3






○の横座標を入力してください:
○の縦座標を入力してください:
153デフォルトの名無しさん:2010/06/22(火) 23:04:32
154デフォルトの名無しさん:2010/06/22(火) 23:16:46
>>153
出来ればクラスとメソッドをしっかりと分けてほしいです。

クラスの中にメソッドが入ってる感じなのでこう分けてくれると助かります。

class game{
public:
void init();
bool Player(int x, int y);
};

void Game::init()
{
・・・
}

他のメソッドもこんな感じに処理毎に分けてくれると助かります。あと○に座標だけでなく
×の座標も入力できるようにしてほしいです。
155デフォルトの名無しさん:2010/06/22(火) 23:18:02
www
156デフォルトの名無しさん:2010/06/22(火) 23:18:30
>>154
ミス。「○に座標」じゃなくて「○の座標」でした。

入力した座標をポインタで受け取る感じにしてほしいです。

申し訳ありません。
157デフォルトの名無しさん:2010/06/22(火) 23:31:38
座標をポインタで受け取りたいってのがよくわからんが。。

ってかドローゲーム忘れてたw
158デフォルトの名無しさん:2010/06/22(火) 23:39:19
>>157
自分の中のイメージとしてg.player(&width, &height)って感じでメソッド呼び出して
座標データを取得したいのですが。。。。。

すいません。なかなか上手く説明できないです。初心者なので。。。。。。

159デフォルトの名無しさん:2010/06/22(火) 23:42:24
クラスとメソッドを分けてほしいって表現がすごいけど、その例を書けるんならそんぐらい直せw
160デフォルトの名無しさん:2010/06/22(火) 23:45:28
>>159
クラスとメソッド分けるのちょっとやってみます。

挫折したらすみません。あと途中で解説欲しくなるかもしれないです。
161デフォルトの名無しさん:2010/06/22(火) 23:48:40
>>158
こんなんでどう?
get_posってヤツで座標を取るんで、これなら意味分かるわ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10735.txt
162デフォルトの名無しさん:2010/06/22(火) 23:52:37
>>161
おおおおおおおおおおお。けっこうスマートになってるwwww

助かります。ちょっとソースコード読んでみます。解説欲しくなったら言うので。
163デフォルトの名無しさん:2010/06/22(火) 23:54:19
どんだけ上から言ってんだよw

ってかもうねる。
164デフォルトの名無しさん:2010/06/23(水) 00:01:03
>>163
乙。

釣りなのかと思っちゃうよね。
165デフォルトの名無しさん:2010/06/23(水) 00:15:45
インライン関数は使わない流儀
166デフォルトの名無しさん:2010/06/23(水) 03:27:12
[1] 授業単元:プログラミング応用  ;構造体
[2] 問題文(含コード&リンク):
以下コピペ
表示例のように,名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を 表示するプログラムを作成しなさい.
プログラムでは,名前,性別,身長,体重,腹囲をまとめて 個人データとして表すための構造体を定義して利用すること.
注意
" 体重はkg, 身長,腹囲はcmで入力する.
" 性別は 1 で男性,2で女性を表す.
" BMI値 = 体重(kg) / 身長(m)2
" 男性は腹囲85cm以上,女性は腹囲90cm以上でメタボリック症候群の疑い がある

表示例
データ1を入力してください
名前: Hanako
性別: 2
身長: 156.4
体重: 65.3
腹囲: 93.4
名前: Hanako, 性別: 女, 身長: 156.4, 体重: 65.3, 腹囲: 93.4, BMI: 26.7, メタボリック症候群の疑いがあります
コピペ終わり
本当はデータ3つです。改行制限で割愛
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (cc 3.4)
 [3.3] 言語: (どちらでも可)
[4] 期限: (6月23日15時まで)
[5] その他の制限: (構造体でデータを個々で格納してお願いします。)

よろしくお願いします。
167デフォルトの名無しさん:2010/06/23(水) 10:51:24
168デフォルトの名無しさん:2010/06/23(水) 11:20:14
169デフォルトの名無しさん:2010/06/23(水) 12:33:36
>>167
>>168
ありがとうございました。参考にさせていただきます。
170デフォルトの名無しさん:2010/06/23(水) 15:18:36
【質問テンプレ】
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
1.関数sqrtを使って1〜10までの二乗根の和を求めなさい。
2.16進数ABC.DEを10進数にしなさい。
[3] 環境
 [3.1] OS: Windows XP
 [ [3.3] 言語: C言語
[4] 期限: 6月24日15時まで
よろしくお願いします。
171デフォルトの名無しさん:2010/06/23(水) 15:33:07
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10737.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6月28日まで
[5] その他の制限:なし
よろしくお願いします
172デフォルトの名無しさん:2010/06/23(水) 15:55:30
【質問テンプレ】
[1] 授業単元: プログラミングB
[2] 問題文(含コード&リンク):実行したい処理を選ぶことが可能なプログラムを作りなさい。このとき、実
行できる処理は以下の三つとする。

処理1:複数の2択問題への回答に応じた結果を表示する。(例:職種選択、旅行先選び

処理2:文字コード一覧表を出力する。(文字コード32~126を一行に8文字ずつ)

処理3:本のページ数を入力し、その本を読み切るために必要な日数を表示
    する。このとき、初日は10ページ、2日目は20ページ,,,と読むページ
    数は増加するものとする。

以下の仕様で作成すること

キーボードから入力された数に応じて、switch文で各処理に移動する。
処理1:if文を使って
処理2:for文を使って
処理3:while文またはdo・while文を使って。

[3] 環境
 [3.1] OS: WindowsXP
 [3.3] 言語: C言語
[4] 期限: 6月25日まで
よろしくお願いします。
173デフォルトの名無しさん:2010/06/23(水) 16:03:04
>>171
(1)j-1
(2)printf("   ");
174デフォルトの名無しさん:2010/06/23(水) 16:07:11
>>170
1.
#include <stdio.h>
#include <math.h>

int main(void)
{
int i;
double sum = 0;

for(i = 1; i <= 10; i++) sum += sqrt(i);

printf("%f\n", sum);

return 0;
}
175デフォルトの名無しさん:2010/06/23(水) 16:45:32
176デフォルトの名無しさん:2010/06/23(水) 17:34:30
>>172
自己解決しました。
177デフォルトの名無しさん:2010/06/23(水) 21:05:54
>>149
ありがとうございました、参考にさせていただきました。
それにしてもわずか10分でするとは…
178デフォルトの名無しさん:2010/06/23(水) 21:17:16
質問させてください
当方、エントロピー値の計算するプログラムをperlで作成したのですが
わけあってC++に書き直すことになりました
しかし、C++にはハッシュ(連想配列)などは自分で作らなければならなく
どうしてもうまく行きませんでした・・・
perlで作ったプログラムをここに張るのは良くない思うのですが
どうかC++動くようにご教授お願いします
179デフォルトの名無しさん:2010/06/23(水) 21:20:11
こちらがperlのプログラムです
#! c:/perl/bin/perl

open(FILE,"IPsource.txt"); #ファイル読み込み
use strict;
use warnings;
use utf8;
print "Content-type: text/html\n\n";
my $count;
my $t;
my $key;
my $ref_freq;
my %ref_freq;
my @x;
my $v;

$count = 0; #全体IPカウント
while ($t = <FILE>){ #IPファイル展開

#IP集計
if($t) {
$count += 1; #全体IPカウント
++$ref_freq{$t};
}
}




180デフォルトの名無しさん:2010/06/23(水) 21:21:17

@x = values %ref_freq;

print"@x \n";

close(IN);


#my @x= map $_ ,$key;
#エントロピー計算
my $y=$count;
my $num;
my @pi = map $_ / $y, @x;
my $i;
print"@pi \n"; #テスト用プリント
#print"@x \n";
for($i=0;$i<=$#pi;$i++){
$num += -($pi[$i]*log($pi[$i]) / log(2));
}


#print"@pi\n\n";
print "-Σpi*log2(pi) = $num \n";
181デフォルトの名無しさん:2010/06/23(水) 21:27:16
std::hash_map, std::mapはC++にもある
182178:2010/06/23(水) 21:32:30
プログラムの動きですが
>>179でtxtに入れられたIPアドレスの種類と数をカウントします
ここでハッシュ(連想配列)を用いています
ここを出力するとこのようになります

IP    数
202.・・・ 20

そして>>180でエントロピー計算を行います
エントロピーの計算方法はlog(対数)とΣ(for文)で
my $y=$count;
my $num;
my @pi = map $_ / $y, @x;
この部分に先ほどカウントしたIPが入り
for($i=0;$i<=$#pi;$i++){  ←カウントしたIP分だけループさせ
$num += -($pi[$i]*log($pi[$i]) / log(2));  ←エントロピーの計算をします
}

183デフォルトの名無しさん:2010/06/23(水) 21:36:16
文字列をキーとした連想配列はmapで代用できる。
もちろん、>>181の言うようにhash_mapでもいい。(あれば)
184デフォルトの名無しさん:2010/06/23(水) 21:39:16
std::tr1::unordered_map も忘れないでください。
185デフォルトの名無しさん:2010/06/23(水) 21:55:08
>>178
元のコードにできるだけ合わせたつもり
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10740.cpp
186デフォルトの名無しさん:2010/06/23(水) 22:17:25
CでなくC++でよかったな
187デフォルトの名無しさん:2010/06/23(水) 22:18:45
余計な言い訳せずにC++のコードくださいって言えばいいのにね。
188185:2010/06/23(水) 22:54:11
>>185 の訂正
途中で @x 相当の変数使うの忘れてたw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10741.cpp
189178:2010/06/23(水) 23:11:42
>>181、183、184
ご指摘ありがとうございます
その範囲を調べてみます。

>>185
わざわざコードを作っていただき
本当にありがとうございます
このコードを参考に勉強させていただきます。
190デフォルトの名無しさん:2010/06/24(木) 00:22:32
モンテカルロ法で√2の近似値を求めたいのですが、
ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・
どなたか教えてくださいませ
191デフォルトの名無しさん:2010/06/24(木) 00:33:17
[sin θ]0〜PI に近い
192デフォルトの名無しさん:2010/06/24(木) 00:37:45
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
問題1:char name[20], int english, int mathematicsをメンバとする構造体 score を定義せよ
問題2:以下の5人の情報をもつ配列 seito[5] を、問題1で作成した構造体 score 型を使って宣言せよ。なお、5人の情報は初期値として宣言することにする。
name  english mathematics
"yamada" 50 70
"tanaka" 70 60
"suzuki" 80 70
"yamamoto" 40 60
"sakata" 90 80
問題3:問題2で初期値を代入した構造体 score 型の構造体配列 seito[5] を宣言し、各メンバ変数をソートする関数を作成せよ。
[3] 環境
 [3.1] OS:Win Vista
 [3.2] コンパイラ名とバージョン:VB 2008
 [3.3] 言語:C
[4] 期限:2010年6月25日まで
[5] その他の制限:無し

よろしくお願いします
193デフォルトの名無しさん:2010/06/24(木) 01:36:43
>>173ありがとうございます。助かりました!
194デフォルトの名無しさん:2010/06/24(木) 01:42:16
>>190
#include <stdio.h>
#include <stdlib.h>
#define NN 10000

int
main(void)
{
int i, w, cnt = 0, n;

printf("input sample no(cf.1000)=");
scanf("%d", &n);

for (i = 0; i < n; i++) {
w = rand() % NN;
w *= w;
if (w < NN * NN / 2)
cnt++;
}
printf("PI neary equal = %f", (double) cnt * 2 / n);

return 0;
}
195デフォルトの名無しさん:2010/06/24(木) 11:48:13
[1] 授業単元:情報処理
[2] 問題文:ガウスの消去法のプログラムをピボット対応と
      ピボット非対応の2つ作成し、連立方程式の解を求めよ。
     (ただし解くべき連立方程式は5元1次方程式で、ピボットの
      発生するものと発生しないものの2種類とする)
       
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C++
お願いします。
196デフォルトの名無しさん:2010/06/24(木) 13:44:31
演習6-1

複数の文字列を読み込み,それらの文字列を空白を入れて繋ぎ合わせるプログラムを作成せよ.

【実行例】

何個の文字列を入力しますか?:3
入力文字列[1]:A
入力文字列[2]:B
入力文字列[3]:C

結果:A B C

演習6-3

入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
【実行例】

% ./a.out
tataatccg ← 入力し,リターンを押して ^D
Thymine (t) : 3
Cytosine (c) : 2
Adenine (a) : 3
Guanine (g) : 1
%

よろしくお願いします!
197デフォルトの名無しさん:2010/06/24(木) 15:07:11
>>196
演習6-1

#include <stdio.h>

int main(void)
{
char buff[32], str[1024], *p, *q;

int i, n;

printf("何個の文字列を入力しますか?:");
scanf("%d", &n);

for(i = 1, p = str; i <= n; i++) {
printf("入力文字列[%d]:", i);
scanf("%s", buff);
for(q = buff; *q; q++, *p++) *p = *q;
*p++ = ' ';
}
*(p - 1) = '\0';

printf("\n結果:%s\n", str);

return 0;
}
198デフォルトの名無しさん:2010/06/24(木) 17:15:46
ファイルkadai.txt に記述された数行の数値を表す文字列を読み込み、整数に変更して数値として表示
するプログラムを作成せよ。関数としてstrtol()を使用すれば問題ないが、同じ機能の関数を作成すること。
基数の設定に関する引数は必要なくデフォルト(先頭が0 なら8 進、それ以外は10 進、16 進は使用しな
い)とする
お願いします!
199デフォルトの名無しさん:2010/06/24(木) 19:22:26
>>197
助かりました!本当にありがとうございます!
>>196の演習6-3は無事、自己解決致しました。
ありがとうございました〜
200デフォルトの名無しさん:2010/06/24(木) 20:10:46
201デフォルトの名無しさん:2010/06/24(木) 21:08:03
バブルソートでは, 配列のデータがすでに適正な順序, あるいはそれに近い順序で並んでいても
n-1回の走査をしなければならない. すなわち, n(n-1)/2回の比較が行われなければならない. そこで, 各回の走査の終わりに,
交換が行われたか否かをチェックするようにし, 交換が行われていなければそれ以上走査の必要はないのでソートを完了するようなプログラムを作成しなさい.
sizeofは使わない。
↓のような出力結果になるようにする。
初期状態: 10, 3, 1, 15, 2, 7
[1回目の走査]
1回目の交換: 3, 10, 1, 15, 2, 72回目の交換: 3, 1, 10, 15, 2, 73回目の交換: 3, 1, 10, 2, 15, 74回目の交換: 3, 1, 10, 2, 7, 15
[2回目の走査]
1回目の交換: 1, 3, 10, 2, 7, 15 2回目の交換: 1, 3, 2, 10, 7, 15 3回目の交換: 1, 3, 2, 7, 10, 15
[3回目の走査]
1回目の交換: 1, 2, 3, 7, 10, 15
[4回目の走査]

最終状態: 1, 2, 3, 7, 10, 15
202デフォルトの名無しさん:2010/06/24(木) 21:09:51
#include <stdio.h>
int main(void) {

int str[100]={0};
int i,j, temp,x;
x=0;

printf("値の上限を設定してください:");
scanf("%d",&x);

for(i=0;i<x;i++){
printf("%d番目の値を入力してください:",i+1);
scanf("%d", &str[i]);
}
printf("初期状態:");
for(i=0;i<x;i++){
if(i==x-1){
printf("%d\n ",str[i]);
}else{
printf("%d, ",str[i]);
}
}
203デフォルトの名無しさん:2010/06/24(木) 21:11:02
for (i = 1; i<x; i++) {
for(j=x-1; j>=i; j--){
if (str[i-1] > str[i]){
temp = str[i-1];
str[i-1] = str[i];
str[i] = temp;

}
}
}
for (i = 0; i < x; i++){
if(i==x-1){
printf("%d\n", str[i]);
}else{
printf("%d, ", str[i]);
}
}
return 0;
}

ここまで作りましたが出力結果が上のようになりません。
誰か助けてください!お願いします。
204デフォルトの名無しさん:2010/06/24(木) 21:50:07
#include <stdio.h>
int main(void) {
  int i, j, temp, x=0, f;

  printf("初期状態: %d", str[0]);
  for(i=1;i<x;i++)
    printf(", %d", str[i]);
  printf("\n");

  for (i = 1; i<x; i++) {
    f = 1;
    for(j=x-1; j>=i; j--){
      if (str[j-1] > str[j]){
        temp = str[j-1];
        str[j-1] = str[j];
        str[j] = temp;
        f = 0;
      }
    }
    if(f != 0) break;
    printf("%d回目の走査: %d", i, str[0]);
    for(j=1;j<x;j++)
      printf(", %d", str[j]);
    printf("\n");
  }
  printf("最終状態: %d", str[0]);
  for(i=1;i<x;i++)
    printf(", %d", str[i]);
  printf("\n");
  return 0;
}
205 ◆QZaw55cn4c :2010/06/24(木) 22:05:02
206デフォルトの名無しさん:2010/06/24(木) 22:05:49
&nbsp;使うとインデント表現できるんだね
207デフォルトの名無しさん:2010/06/24(木) 22:08:25
>>206
s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g
208270:2010/06/24(木) 22:09:47
すみません、間違えました。
s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g
209208:2010/06/24(木) 22:11:50
んー、うまくいかない。
s/\&/\&amp;/g
s/ /\&nbsp;/g
s/"/\&quot;/g
s/</\&lt;/g
s/>/\&gt;/g
こうか?
210sage:2010/06/24(木) 22:51:25
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
再帰呼び出しを使い、入力した値の階乗を求めるプログラムを書きなさい。
なお、出来る限り大きな値の計算を出来るように工夫しなさい。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1
 [3.3] 言語: C言語
[4] 期限: 6月中
[5] その他の制限:指定なし
211 ◆QZaw55cn4c :2010/06/24(木) 23:12:33
>>210
なんの工夫もしていません。
http://codepad.org/31sqsbvL
212デフォルトの名無しさん:2010/06/25(金) 00:18:02
[1] 授業単元: 数値解析
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10745.txt
ニュートン・ラフソン法についての問題です。教科書に例題として載っていたプログラミングに今回問題となっている方程式の当てはめ方がわかりません(おそらく初歩的な事だと思われます)
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限:2010年6月25日16:00まで
[5] その他の制限: 半年前に教養の授業として数時間C言語の授業があった程度の知識しかありません
周囲もそのような人ばかりなので深いC言語の知識が必要な問題ではないと思われます
どうかよろしくお願い致します
213デフォルトの名無しさん:2010/06/25(金) 02:14:39

[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):

以下に示す2階の定係数線形同次微分方程式につ
いて,初期値y(0)=a, y’(0)=bをキーボードから入力し,
t=4における値を出力するプログラムを作成する.

y''(t)+2y'(t)+2y(t)=0
条件 y(0)=2 , y'(0)=-2

答え y(4)=-0.02394

[3] 環境
 [3.1] OS: (Windows/Linux/等々) vista
[4] 期限:6月30日まで
214デフォルトの名無しさん:2010/06/25(金) 10:25:17
>>213
精度を考慮してルンゲ・クッタ法で解いた

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10746.txt
215デフォルトの名無しさん:2010/06/25(金) 11:43:42
[1] 授業単元: 画像処理

[2] 問題文(含コード&リンク):
入力した2値白黒画像をハフ変換して直線および円を検出し、結果を表示するプログラムを作成せよ。
直線の式はρ= xcosθ + ysinθを、円の式はr2= (x-a)2 + (y-b)2をそれぞれ使用する。

なお、直線について処理後のρθ平面を濃淡画像として出力せよ。
円については処理後のabrパラメータ空間をGnuplotを用いて、
1点のエッジに対する軌跡(円錐)と2点以上のエッジに対する軌跡(円錐)を出力せよ。

また、円と直線両方について、3種類以上に閾値を変化させた実験結果を逆変換し、
その結果を原画像に投影した画像も出力せよ。
 
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

[4] 期限: [2010年06月25日23:50まで]

[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
画像として出力というくだりについては、RGBそれぞれの値を
変数名[画像サイズ].r/.g/.bという要素を持つ構造体を使って格納してください。
216デフォルトの名無しさん:2010/06/25(金) 14:26:22
>>147
亀ですがありがとうございました!
217デフォルトの名無しさん:2010/06/25(金) 14:32:43
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
午前四時から正午までは Good Morning! と、
正午から午後八時までは Good Afternoon! と、
午後八時から午前四時までは Good Evening! と、表示するプログラムを書け。ただし、境界の時刻は前の時間帯に含まれるものとする

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2010年6月30日23:55
[5] その他の制限: 特になし

お願いします
218デフォルトの名無しさん:2010/06/25(金) 16:58:06
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): 番号 国語 数学 英語のメンバを持っている構造体を作って各教科の平均値と、全平均値を求めてください。(人数は4人とか5人で行ってください。あと番号っていうのは、番号は、4人なら1〜4までで5人なら1〜5までです)
[3] 環境
 [3.1] OS: linux
 [3.3] 言語: C++
[4] 期限: ([2010年6月26日まで]
[5] その他の制限:
#include <iostream>
using namespace std;
struct score {
で始めて、
return文で終わってください
219デフォルトの名無しさん:2010/06/25(金) 17:13:52
>>214
ありがとうございました^^
220デフォルトの名無しさん:2010/06/25(金) 17:59:13
221218:2010/06/25(金) 21:51:05
>>218ですが忘れてました。なるべく簡単にしてください。
あと配列を使います。
222デフォルトの名無しさん:2010/06/26(土) 01:08:39
>>217
#include <stdio.h>
#include <time.h>

int main()
{
time_t now = time(NULL);
struct tm* local_now = localtime( &now );
const int hour = local_now->tm_hour;

if ( hour>4 && hour<=12 )
printf( "Good Morning!" );
else if ( hour>12 && hour<=20 )
printf( "Good Afternoon!" );
else // ( hour>20 && hour<=4 )
printf( "Good Evening!" );

return 0;
}
223デフォルトの名無しさん:2010/06/26(土) 02:27:00
【質問テンプレ】
[1] 授業単元:画像処理
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10749.txt
[3] 環境
 [3.1] OS: (指定なし)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2010年06月28日14:50まで] )
[5] その他の制限:ヘッダファイル"bmp.h"はこちらです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10669.txt

よろしくお願いします。
224 ◆C/HmxiIl0o :2010/06/26(土) 02:42:14
[1] 授業単元: 解析

[2] 問題文(含コード&リンク):
x=1.0, 1.1,...,3.9, 4.0が与えられた時のlogxの値をラグランジュ補間で求め、
その近似値とlogxの真値をそれぞれ出力せよ。
また、求めた値と真値との誤差(絶対値)も求め、一次多項式の誤差と2次多項式の誤差を
それぞれ出力せよ。

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

[4] 期限: 本日(26日)中にお願いします

宜しくお願いいたします。
225デフォルトの名無しさん:2010/06/26(土) 02:59:03
>>223
http://codepad.org/D3nsJwKm
簡単に試したけど多分こんなん。
226デフォルトの名無しさん:2010/06/26(土) 03:40:45
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
構造体Triangleを下のように定義する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10750.txt
この構造体により一つの三角形を表現する。
Triangle構造体の構成要素は、三つの頂点のx座標、y座標をメンバとして持つ構造体Pointである。
このTriangle構造体を用いて、以下の使用に従う関数を作成し、任意の三角形の面積、その三角形を適切な2×2行列で線形変換した結果の三角形の座標とその面積、および任意の二つの三角形が合同であるかどうかを表示するプログラムを実装しなさい。
・一つのTriangle構造体の変数を引数とし、その構造体が表す三角形の面積を返す関数。
・一つのTriangle構造体の変数と、double型の二次元配列(2×2行列Aとする)を引数とし、引数で与えた三角形を行列Aによって線形変換した後の三角形を返す関数。
・二つのTriangle構造体の変数を引数とし、その構造体が合同であれば1を、合同でなければ0を返す関数。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月28日まで
[5] その他の制限:特にありません。よろしくお願いします。

227デフォルトの名無しさん:2010/06/26(土) 07:07:19
double area(Triangle t) {
return fabs((t.p2.x - t.p1.x) * (t.p3.y - t.p1.x) - (t.p2.y - t.p1.x) * (t.p3.x - t.p1.x));
}

Triangle linear(Triangle t, double a[2][2]) {
Triangle ret;
ret.p1.x = a[0][0] * t.p1.x + a[0][1] * t.p1.y;
ret.p1.y = a[1][0] * t.p1.x + a[1][1] * t.p1.y;
ret.p2.x = a[0][0] * t.p2.x + a[0][1] * t.p2.y;
ret.p2.y = a[1][0] * t.p2.x + a[1][1] * t.p2.y;
ret.p3.x = a[0][0] * t.p3.x + a[0][1] * t.p3.y;
ret.p3.y = a[1][0] * t.p3.x + a[1][1] * t.p3.y;
return ret;
}

int isCongruence(Triangle t1, Triangle t2) {
double l1[3], l2[3];
int i, j;
l1[0] = (t1.p1.x - t1.p2.x) * (t1.p1.x - t1.p2.x) - (t1.p1.y - t1.p2.y) * (t1.p1.y - t1.p2.y);
l1[1] = (t1.p2.x - t1.p3.x) * (t1.p2.x - t1.p3.x) - (t1.p2.y - t1.p3.y) * (t1.p2.y - t1.p3.y);
l1[2] = (t1.p3.x - t1.p1.x) * (t1.p3.x - t1.p1.x) - (t1.p3.y - t1.p1.y) * (t1.p3.y - t1.p1.y);
l2[0] = (t2.p1.x - t2.p2.x) * (t2.p1.x - t2.p2.x) - (t2.p1.y - t2.p2.y) * (t2.p1.y - t2.p2.y);
l2[1] = (t2.p2.x - t2.p3.x) * (t2.p2.x - t2.p3.x) - (t2.p2.y - t2.p3.y) * (t2.p2.y - t2.p3.y);
l2[2] = (t2.p3.x - t2.p1.x) * (t2.p3.x - t2.p1.x) - (t2.p3.y - t2.p1.y) * (t2.p3.y - t2.p1.y);
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) if(l1[i] == l2[j]) { l2[j] = 0; break;}
if(j == 3) return 0;}
return 1;
}
228デフォルトの名無しさん:2010/06/26(土) 11:36:43
ラグランジュ補間で log(x) を求める。?
229 ◆C/HmxiIl0o :2010/06/26(土) 12:07:55
>>228
問題にはそう書いてありました。
log2=0.6931,log3=1.0986 1次多項式で近似
log2=0.6931,log3=1.0986,log4=1.3863 2次多項式で近似

2点(2,0.6931)(3,1.0986)を用いてlog2.5を推定する
logxの1次多項式による補間では、x0=2,x1=3より、
L-zero(x)=(x-3)/(2-3)
L-one(x)=(x-2)/(3-2)
であるから、p1(x)=1.0986(x-2)-0.6931(x-3)
p1(2.5)=1.0986(2.5-2)-0.6931(2.5-3)=0.89585

3点(2,0.6931)(3,1.0986)(4,1.3863)を用いてlog2.5を推定する
logxの1次多項式による補間では、x0=2,x1=3より、
L-zero(x)=(x-3)(x-4) / (2-3)(2-4)
L-one(x)=(x-2)(x-4) / (3-2)(3-4)
L-two(x)=(x-2)(x-3) / (4-2)(4-3)
であるから、p2(x)=0.34655(x-3)(x-4)-1.0986(x-2)(x-4)-0.6931(x-2)(x-3)
p1(2.5)=0.919575

真値=0.91629

誤差を求める式は
e-k(x)=f(x) - p-k(x) = (f^(k+1)(クサイ) / (k+1)!)*(x-x0)・・・(x-xk)
だそうです。

宜しくお願いします。
230デフォルトの名無しさん:2010/06/26(土) 12:17:47
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):三目並べのプログラムにCPとの対戦をつけろ。
http://codepad.org/wfwkEbVP
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C++
[4] 期限:6/27(水)8時半まで
[5] その他の制限:C++初心者です。インライン関数は使わない方向でお願いします。

実行結果としてはこんな感じにしてほしいです。
1Pと2Pとの交互に対戦しますか?
1Pとコンピュータとの対戦にしますか?
プレイヤ同士の対戦なら1を、コンピュータとの対戦なら2を入力してください:

こんな感じで選らばせて対戦できるようにしてほしいです。

※1Pのマスは○でコンピュータのマスは×でお願いします。
231デフォルトの名無しさん:2010/06/26(土) 12:19:15
>>230
ミス。

6/27(月)でした
232デフォルトの名無しさん:2010/06/26(土) 12:20:03
>>231

日曜でした。すいませんでした。
233デフォルトの名無しさん:2010/06/26(土) 14:54:26
> であるから、p2(x)=0.34655(x-3)(x-4) - 1.0986(x-2)(x-4) - 0.6931(x-2)(x-3)
> p1(2.5)=0.919575
であるから、p2(x)=0.34655(x-3)(x-4) - 1.0986(x-2)(x-4) + 0.6931(x-2)(x-3)
p1(2.5)=0.9105875
物理のかぎしっぽ:計算物理学:補間法:ラグランジュ補完
http://moondial0.net/archives/www12.plala.or.jp/ksp/computPhys/lag-hokan/index.html
234デフォルトの名無しさん:2010/06/26(土) 15:11:16
[1]授業単元:システムプログラミング
[2]課題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10751.txt
[3] OS:Windows Vista コンパイラ:CygWin上のgcc 言語 C
[4] 7/1迄
[5] 授業は殆ど出ておらず単位を落としそうですんでよろしくお願いしまつ
235デフォルトの名無しさん:2010/06/26(土) 21:49:42
>>229
ラグランジュ補間は手持ちの本「科学技術計算ハンドブック」に
掲載されているので、一次補間も二次補間も意味はわかるけど、
logxの近似をしたかったら、x=1.0から4.0まで近似したいなら、
もっと数表x[], y[]の標本が必要だよ

というのは、ラグランジュ補間は極めて振動しやすいという欠点を
持っていて、その欠点を埋め合わせるには数表の取り方を工夫
しなければならない

少なくとも、[x,y]の組み合わせが多数欲しい

今1.0〜4.0の範囲で近似しようとしているのだから、xが0.0から5.0
の範囲で5点ほどは欲しい
236デフォルトの名無しさん:2010/06/26(土) 21:58:22
> 今1.0〜4.0の範囲で近似しようとしているのだから、
x=2.5 のだけで。
237デフォルトの名無しさん:2010/06/26(土) 22:13:54
>>218を誰か簡単にお願いします
238デフォルトの名無しさん:2010/06/26(土) 22:31:31
239デフォルトの名無しさん:2010/06/26(土) 22:39:35
>>229
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10752.txt

数表が与えられていないので勝手に作ったよ。
logxはx=1.0未満になるとぐっとマイナスの方へ振れてしまい
標本としてはあまり好ましくないので、x=1.0以下の部分は
標本間隔を詰めた。
240デフォルトの名無しさん:2010/06/26(土) 22:40:49
あ、ごめん>>236が見えてなかった。
>>239の取り扱いは好きなようにしてください。
241デフォルトの名無しさん:2010/06/26(土) 22:48:41
>>237
>>218

http://codepad.org/3jK2ScYK
簡単というのがSTLを使いまくることだったらすまない。
242 ◆C/HmxiIl0o :2010/06/26(土) 23:51:34
>>239
ありがとうございます。>>236は偽者です。

問題文には数表は全く書かれていなかったのですが、授業で使うスライドを見ていったところ、
1枚だけ、端っこの方に小さくy=f(x)= 1/(1+25*x^2)と書かれていました。
宜しくお願いします。
243デフォルトの名無しさん:2010/06/26(土) 23:55:23
よろしく
244デフォルトの名無しさん:2010/06/27(日) 00:37:41
>>242
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10753.txt

うーん標本の取り方がいまいちかな・・・
一次補間が振動しちゃってます
適当に数表をいじって誤差が少なくなるようにトライしてみてください
245デフォルトの名無しさん:2010/06/27(日) 00:47:15
数値計算理論の問題でC/C++のコーディング技術の問題じゃなさそう
246デフォルトの名無しさん:2010/06/27(日) 03:08:48
[1] 授業単元:計算機とアルゴリズム
[2] 問題文(含コード&リンク):数列と漸化式を表示できるように9行目からお願いします。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10754.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 2010年6月28日
[5] その他の制限:whileを使うと思います。

お願いします。
247デフォルトの名無しさん:2010/06/27(日) 08:46:12
>>246
#include <stdio.h>

main()
{
int n, m, an, sum;

m = 5;
printf("数列 an = n*n とその和を %d 項目まで表示します\n", m);

n = 1;
sum = 0;
while (n <= m)
{
an = n * n;
sum += an;
printf("a[%d] = %d, sum = %d\n", n, an, sum);
n++;
}
}
248デフォルトの名無しさん:2010/06/27(日) 08:50:58
>>246
#include <stdio.h>

main()
{
int n, m, an;

m = 5;
printf("漸化式 a(n) = 2*a(n-1), a1 = 2 で生成される数列を %d 項目まで表示します\n", m);

n = 1;
an = 2;

while (n <= m)
{
if (n == 1)
{
printf("a[%d] = %d\n", n, an);
n++;
continue;
}
an = 2 * an;
printf("a[%d] = %d\n", n, an);
n++;
}
}
249デフォルトの名無しさん:2010/06/27(日) 10:35:20
>>224
http://ideone.com/vVi7u
期限すぎてるけど、いいどらえもんがかけた。
250 ◆QZaw55cn4c :2010/06/27(日) 16:20:11
>>210
http://codepad.org/2uVp97hy
100! まで確認しています。#define で指定している定数を増加させれば、もっと大きな数値にも対応できるかもしれません。
251デフォルトの名無しさん:2010/06/27(日) 16:39:40
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 入力した2つの整数の間 (入力した数も範囲に含める) にある
 「2の倍数でない」かつ「3の倍数でない」かつ「5の倍数でない」
の条件を満たす整数を順に表示し,最後にその個数を表示するプログラムを作成せよ
[3] 環境
 [3.1] OS:VineLinux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年7月4日
[5] その他の制限:なお,整数の入力には get_int() を用いること。
# define BUFFER_SIZE (256)//get_int()です

int get_int(void)
{
char buf[BUFFER_SIZE];

fgets(buf, BUFFER_SIZE, stdin);

return atoi(buf);
}

よろしくおねがいします
252 ◆QZaw55cn4c :2010/06/27(日) 16:46:14
253251:2010/06/27(日) 17:12:01
>>252

迅速な回答本当にありがとうございます
254デフォルトの名無しさん:2010/06/27(日) 20:04:24
[1] 授業単元:情報処理学
[2] 問題文(含コード&リンク):
do-while文を用いて、キーボードから入力された値が素数であるかどうかを
判別するプログラムを作成せよ。入力された値が素数の場合は"素数"と出力し、
素数でない場合は最小の因数を出力せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:すいませんがわからないです。
 [3.3] 言語:C
[4] 期限:2010年6月30日まで
255デフォルトの名無しさん:2010/06/27(日) 20:17:03
1] 授業単元:情報処理学
[2] 問題文(含コード&リンク):
1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、
これらの平均値を求めよ。さらにint eval[3]という1次元配列を用意して
eval[0]には0〜60の数の個数
eval[1]には61〜80の数の個数
eval[2]には81〜100の数の個数
を格納するようにし、それらを出力するプログラムを作成せよ。(配列、for文、if文を使って)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月30日まで
256デフォルトの名無しさん:2010/06/27(日) 20:30:25
>>254

#include <stdio.h>
int main(){
int i,n,f;
printf("> ");
scanf("%d",&n);

f=1; i=1;
do{
++i;
if(n%i==0){
f=0;
break;
}
}while(i*i<=n);
if(f)printf("素数\n");
if(!f)printf("%d\n",i);
}
257デフォルトの名無しさん:2010/06/27(日) 20:33:36
>>255
#include <stdio.h>

int main(void)
{
int array[] = {34, 57, 45, 21, 89, 63, 39, 48, 78, 68, 76, 84, 92, 53, 62}, eval[3] = {0}, i;
double ave;

for(i = 0, ave = 0.0; i <sizeof array / sizeof *array; i++) {
ave += array[i];
if(array[i] < 0) continue;
else if(array[i] <= 60) eval[0]++;
else if(array[i] <= 80) eval[1]++;
else if(array[i] <= 100) eval[2]++;
}

printf("平均値:%f\n", ave / (sizeof array/ sizeof *array));
printf("0〜60の数の個数:%d\n", eval[0]);
printf("61〜80の数の個数:%d\n", eval[1]);
printf("81〜100の数の個数:%d\n", eval[2]);

return 0;
}
258デフォルトの名無しさん:2010/06/27(日) 21:44:01
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
次のように表示するプログラムを作りなさい。

私の学籍番号は0000000Aです。
氏名は aaaaa aaaaaaaaです。
       ↑半角スペース
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:C++
 [3.3] 言語: C言語
[4] 期限: 6月28日午前0時
[5] その他の制限:
char型の配列no name を使う。
noに学籍番号、nameに氏名を格納し表示に使う。
自分の学籍番号、氏名はchar型の配列、no nameを初期化して配列に格納する。
259デフォルトの名無しさん:2010/06/27(日) 21:52:25
#include <stdio.h>

int main(void)
{
char no[] = "0000000A", name[] = "aaaaa aaaaaaaa";

printf("私の学籍番号は%sです。\n", no);
printf("氏名は %sです。\n", name);

return 0;
}
260デフォルトの名無しさん:2010/06/27(日) 22:23:44
>>256
ありがとうございます。
261デフォルトの名無しさん:2010/06/27(日) 22:35:45
>>257
ありがとうございます。
262デフォルトの名無しさん:2010/06/27(日) 22:45:00
>>241
>>241で書いてもらったみたいな感じです。ありがとうございました
263デフォルトの名無しさん:2010/06/27(日) 23:22:42
a
264デフォルトの名無しさん:2010/06/27(日) 23:25:25
>>259
本当に助かります(涙)ありがとうございます!!!!
265デフォルトの名無しさん:2010/06/27(日) 23:45:11
>>264
いえいえ
266デフォルトの名無しさん:2010/06/28(月) 00:33:27
お礼を言われると返って心苦しくなるなw
267デフォルトの名無しさん:2010/06/28(月) 00:41:58
>>241
忘れてました
全部の平均ってどういう意味なんですかね?これがいまいちわからないです
268デフォルトの名無しさん:2010/06/28(月) 00:47:00
>>267
例えば、
英数国合計の平均=(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点)/3
269268:2010/06/28(月) 00:56:58
これのほうがまだわかるかな
(Eavg)
+(Mavg)
+(Javg)

=(Aさんの英語の点+Bさんの英語の点+Cさんの英語の点+Dさんの英語の点)
+(Aさんの数学の点+Bさんの数学の点+Cさんの数学の+Dさんの数学の点点)
+(Aさんの国語の点+Bさんの国語の点+Cさんの国語の点+Dさんの国語の点)

=(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点)/4


=英数国合計の平均
270みすった:2010/06/28(月) 00:58:13
(Eavg)
+(Mavg)
+(Javg)

=(Aさんの英語の点+Bさんの英語の点+Cさんの英語の点+Dさんの英語の点)
+(Aさんの数学の点+Bさんの数学の点+Cさんの数学の+Dさんの数学の点点)
+(Aさんの国語の点+Bさんの国語の点+Cさんの国語の点+Dさんの国語の点)

=(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点)


これを人数分で割ると
(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点)/4
=英数国合計の平均
271デフォルトの名無しさん:2010/06/28(月) 01:15:43
すみっこつつきで申し訳ないけど、変数名がavgなのがちょっと変かもね。
質問者がそれで理解できてるようだからいいけれど。
272デフォルトの名無しさん:2010/06/28(月) 06:33:29
>>271
うざいです(>_<)
273デフォルトの名無しさん:2010/06/28(月) 07:26:32
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
社員の情報を管理するプログラムを作りたい。
そこで、以下の例のような構造体Employeeを考える。
以下の構造体Employeeの例は、社員の名前を保存するchar型の配列変数name、年齢を保存するint型の変数age、年譜を保存するint型の変数salaryを有している。
名前は、アルファベットで記述することとし、この構造体では名字だけを管理することとする。(ただし、この構造体のメンバは変更してもかまわない。)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10756.txt
このような構造体を用いて、下の実行例のような社員データベースを処理するプログラムを実装しなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10757.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月29日まで
[5] その他の制限:特にありません。よろしくお願いいたします。

274デフォルトの名無しさん:2010/06/28(月) 10:31:05
1] 授業単元: プログラム入門
[2] 問題文(含コード&リンク): 2つの自然数 n と m を入力し、その積 n×m を
たし算のみで計算するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] borland c++ compiler 5.5
 [3.3] 言語: C
[4] 期限: 2010年06月28日14:30まで
[5] その他の制限: 特になし

よろしくお願いします
275デフォルトの名無しさん:2010/06/28(月) 10:36:05
#include <stdio.h>

int main(void)
{
int n, m, ans;

scanf("%d%d", &n, &m);

printf("%d * %d = ", n, m);

for(ans = 0; m; m--) ans += n;

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

return 0;
}
276246:2010/06/28(月) 11:02:07
>>247
>>248
ありがとうございます。
助かりました。
277274:2010/06/28(月) 12:02:00
>>275
ループ変数使用して、printf 文をまとめた方がよくないですか?
278デフォルトの名無しさん:2010/06/28(月) 14:05:40
[1] 授業単元: C言語プログラミング入門
[2] 問題文:関数の再帰的呼び出しによりAckermann(アッカーマン)関数を計算するプログラムを作れ。同じプログラムを繰り返し処理(ループ計算)により実現できるか考えよ。Ackermann関数は次式で定義される。
[3] 環境 
 [3.1] OS: Mac OS
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年6月30日
[5] その他の制限: 特にはないです。

よろしくお願いします。
279278:2010/06/28(月) 14:07:58
Ackermann関数は次式で定義される。の次式を書き忘れてましたすいません。
n+1 m=0 and n>_0
ack(m,n)= ack(m-1,1) m>0 and n=0
ack(m-1,ack(m,n-1)) m>0 and n>0
280デフォルトの名無しさん:2010/06/28(月) 14:19:21
>>277 足し算で
#include <stdio.h>
int main(void)
{
int a,b,c;
scanf("%d %d",&a,&b);
if (a<b){c=a;a=b;b=c;}c=0;b=-(b);
while (b++)printf(b?"%d + ":"%d = %d\n",a,c+=a);
return 0;
}
281デフォルトの名無しさん:2010/06/28(月) 14:20:10
>>274
#include <stdio.h>
int main(void) {
  int i, n, m, ans;

  printf("input:"); scanf("%d", &n);
  printf("input:"); scanf("%d", &m);
  if(n<0 || m<0) { printf("error"); return 1; }
  ans = 0;
  if(n < m){
    for(i=n; i > 0; --i)
      ans += m;
  }else{
    for(i=m; i > 0; --i)
      ans += n;
  }
  printf("\nans:%d * %d = %d", n, m, ans);
  return 0;
}
282224 ◆C/HmxiIl0o :2010/06/28(月) 16:02:40
>>224について、教えていただいたプログラムで提出したのですが、
logxの真値と補間で求めた値の誤差を比較していないとのことで受理されませんでした。

>>249さんのような結果を出さないといけないようなのですが、c++だったので、
Cに作り直そうとしたのですが、うまくできませんでした。

大変申し訳ないのですが、Cで作り直していただけないでしょうか?
宜しくお願い致します。
283 ◆/91kCCQXBo :2010/06/28(月) 16:05:01
いいよCで作り直して。
>>280 文章よめ
284デフォルトの名無しさん:2010/06/28(月) 16:16:58
285224 ◆C/HmxiIl0o :2010/06/28(月) 16:26:08
>>284
ありがとうございました。
286デフォルトの名無しさん:2010/06/28(月) 17:36:30
[1] プログラミング1
[2] 現在のインターネットを実現しているTCP/IP通信プロトコルでは主にIPv4
  を用いており、コンピュータを一意に識別するために32ビットのIPアドレスを
  用いている。これを踏まえ、IPアドレスの4つの数字を入力させ、これらを32ビットの
  データ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。
  保存したIPアドレスがunsigned intの整数値として解釈するといくつとなるか表示する
  プログラムを作成せよ。
[3] 環境
 [3.1] OS Linux
 [3.2] gcc
 [3.3] 言語 C言語
[4] 期限:2010年6月30日19:00まで
[5] 特に制限はありませんが、while文は習っていません。
  if文、for文、配列など基本的なものを習いました。

どうぞよろしくお願いします。
287デフォルトの名無しさん:2010/06/28(月) 18:07:05
>>286
int main(int argc, char* argv[])
{
int i;
unsigned int val;
unsigned int addr = 0;

for (i = 0; i < 4; i++)
{
printf("%d:", i + 1);
addr <<= 8;
scanf("%d", &val);
addr |= val;
}

printf("addr=%u\n", addr);

return 0;
}
288デフォルトの名無しさん:2010/06/28(月) 18:24:56
[1] 応用プログラミング
[2] 問題文(含コード&リンク):  
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10758.txt 
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visualstadio 2008
 [3.3] 言語:C
[4] 期限:30日まで
[5] その他の制限:プログラミング経験はほとんどないです。
         構造体の授業での宿題です。
         構造体はまだわかるのですがそれに苦手なポインタが加わるとどうにもわかりません。
         宜しくお願いします。
289 ◆QZaw55cn4c :2010/06/28(月) 18:35:59
290デフォルトの名無しさん:2010/06/28(月) 18:40:17
>>287
ありがとうございました!
291 ◆QZaw55cn4c :2010/06/28(月) 18:46:34
292デフォルトの名無しさん:2010/06/28(月) 18:49:03
293デフォルトの名無しさん:2010/06/28(月) 18:59:13
>>292
> scanf("%s",p[i].name);
buffer overrun...
294デフォルトの名無しさん:2010/06/28(月) 19:07:57
元がそうなってんだからそっちに文句つけろよw
295デフォルトの名無しさん:2010/06/28(月) 19:15:50
>>294
氏ねといわれたら氏ぬんですね、よくわかります。
296デフォルトの名無しさん:2010/06/28(月) 19:19:18
長すぎる文字列入れたら正しく動作しないのは>>291もかわらないしw
297デフォルトの名無しさん:2010/06/28(月) 19:36:54
>>295
原要求を無視したらテンプレの意味が(ry
298デフォルトの名無しさん:2010/06/28(月) 19:50:14
>>291 = >>293か?
299 ◆QZaw55cn4c :2010/06/28(月) 20:05:36
>>296
たしかにうまく処理できませんね。標準で入力バッファをクリアする方法はなんでしょうかね。

>>298
違います。
300デフォルトの名無しさん:2010/06/28(月) 20:46:00
[1] 授業単元:情報処理学
[2] 問題文(含コード&リンク):
例1は、3教科5人の生徒の合計得点を求めるプログラムである。
これを実行し、動作を説明せよ。さらに、教科毎の平均点、
生徒毎の平均点を計算して表示できるようにプログラムを修正し、
結果とともに示せ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月30日

よろしくお願いします。
301デフォルトの名無しさん:2010/06/28(月) 20:47:24
>>300の例1
例1
#include<stdio.h>
#define KAMOKU 3
#define SEITO 5
int main()
{
int ten[][KAMOKU]={{ 80, 65, 70},
{ 70, 55, 75},
{ 75, 80, 70},
{ 80, 60, 60},
{ 90, 80, 75}};
int j,k,s;
printf(“ kokugo sugaku eigo gokei\n”);
printf(“------------------------------------------------\n”);
for (j=0;j<SEITO;j++) {
s=0;
for (k=0;k<KAMOKU;k++) {
printf(“%8d”,ten[j][k]);
s=s+ten[j][k];
}
printf(“%8d\n”,s);
}
return 0;
}
302デフォルトの名無しさん:2010/06/28(月) 21:18:08
>>300

> これを実行し、動作を説明せよ。
http://codepad.org/EfWyhSTD

> 教科毎の平均点、生徒毎の平均点を計算して表示できるようにプログラムを修正し、
結果とともに示せ。
http://codepad.org/9EYyajom
303デフォルトの名無しさん:2010/06/28(月) 21:29:23
[1] 授業単元:プログラミング演習
[2]問題文:長いので次のレスに書かせていただきます
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:2010年6月29日17:00まで
[5] その他の制限:特に制限はありませんが、なるべく簡単な文法で書いていただけるとありがたいです
304303:2010/06/28(月) 21:31:23
次レスにまとめても規制されてしまったので・・・・
[2] 問題文:[1],[2]のプログラムを作成せよ。
      [1]多項式の次数nと係数a,(i=0,1・・・・,n)を入力し、
その多項式f(x)=a_nx^2+a_n-1x^n-1+・・・+a_2x^2+a_1x+a_0と
       その微分の多項式f'(x)を出力するプログラムを作成せよ。
       ただし、nはint型,a_iはdouble型の配列とせよ。n<100と仮定してよい。
       以下に入力例を示す
n=5
a5=1
a4=0
a3=2
a2=0
a1=3
a0=0
f(x)=x^5+2x^3+3x
f'(x)=5x^4+6x^2+3
305303:2010/06/28(月) 21:32:41
続きです
[2]以下の要領で、平均点、分散、標準偏差、最小値、最大値を求めるプログラム
        を作成せよ。
        (1)100人分の点数(int型)を記憶するための配列変数aを定義する
        (2)人数(int型)を記憶するための変数nを定義する。
        (3)人数nの初期値を0とする
        (4)点数をa[n]に入力する
        (5)点数が負の数ならば終了する
        (6)人数nを1つ増やす
        (7)全員の点数を空白で区切って表示する。例:83 52 64
        (8)平均点を出力する
        (9)分散を出力する
        (10)標準偏差を出力する
        (11)最小値を出力する
        (12)最大値を出力する
        (13)(4)へ戻る
        ※標準ライブラリのsqrt関数を使わずニュートン法によって平方根を
         求める自作の関数を使え。
        ※平均点、分散、標準偏差を求めるとき、キャスト演算子を用いてdouble型へ
         型変換せよ。
多いですがどうぞよろしくお願いします
306デフォルトの名無しさん:2010/06/28(月) 21:38:30
>>210
やっと規制が解けた。
3000!の桁数=9131なので、#define文を変えればもう少しいけるはず。
http://codepad.org/6S9o89xk
307デフォルトの名無しさん:2010/06/28(月) 21:56:52
>>273もどなたかお願いいたしますm(_ _)m
308デフォルトの名無しさん:2010/06/28(月) 22:29:23
>>304
#include <stdio.h>

int main(void)
{
    int n, i;
    double a_i[100], a;
    printf("n=");
    scanf("%d", &n);
    for (i = n; i >= 0; i--) {
printf("a%d=", i);
scanf("%lf", &a);
a_i[i] = a;
    }
    printf("f(x)=");
    for (i = n; i >= 0; i--)
if (a_i[i])
    printf(a_i[i] > 0 ? " +%lgx^%d" : " %lgx^%d", a_i[i], i);
    printf("\n");

    for (i = 0; i < n; i++)
a_i[i] = a_i[i + 1] * (i + 1);
    a_i[n] = 0;

    printf("f'(x)=");
    for (i = n; i >= 0; i--)
if (a_i[i])
    printf(a_i[i] > 0 ? " +%lgx^%d" : " %lgx^%d", a_i[i], i);
    printf("\n");

    return 0;
}
309デフォルトの名無しさん:2010/06/28(月) 22:44:17
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):○×ゲームのプログラムにコンピュータとの対戦をつける。
コンピュータと対戦するかしないかは選べれるようにする事。
http://codepad.org/wfwkEbVP
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C++
[4] 期限:6/29(火)AM9時まで
[5] その他の制限:C++触り始めたばかりです。インライン関数は使わない方向でお願いします。

実行結果としてはこんな感じにしてほしいです。
1Pと2Pとの交互に対戦しますか?
1Pとコンピュータとの対戦にしますか?
プレイヤ同士の対戦なら1を、コンピュータとの対戦なら2を入力してください:
こんな感じで選らばせて対戦できるようにしてほしいです。

※1Pのマスは○でコンピュータのマスは×でお願いします。

大変だと思いますがどうかお願いします。
310デフォルトの名無しさん:2010/06/28(月) 22:46:03
礼も言わないヤツか
311デフォルトの名無しさん:2010/06/28(月) 22:57:23
>>310
あの時は本当にありがとうございました。

本当に申し訳ありません。
312デフォルトの名無しさん:2010/06/28(月) 23:57:38
>>258
おい!同じ大学だw

>>259
助かりました ありがとうございます。
313303:2010/06/29(火) 00:11:24
>>308 ありがとうございます。
   どなたか>>305に書いてある[2]の方もよろしくお願いします
314デフォルトの名無しさん:2010/06/29(火) 00:15:38
>>273
http://codepad.org/IKYypUgq

とりあえずここまで。
昇級については仕様を推測できなかった。
他の機能については適当に推測した。
リファクタリングし甲斐があると思うから,がんがれ。
315デフォルトの名無しさん:2010/06/29(火) 01:09:05
>>312
char型ならまとめ方一緒だったの?
俺的には全然違ったw
316デフォルトの名無しさん:2010/06/29(火) 02:14:34
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10760.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月1日

よろしくお願い致します。
317デフォルトの名無しさん:2010/06/29(火) 04:05:10
[1] 授業単元:プログラミング言語
[2] # リストに格納したデータを,データファイルとは
別のファイル(出力先ファイルとよぶ)に書き出す.
データファイルと出力先ファイルのファイル名は
コマンドライン引数として指定する
下記テンプレートを使用すること
http://codepad.org/d9CUmfae
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月2日
お願います
318デフォルトの名無しさん:2010/06/29(火) 04:13:02
言い忘れてました
>>310以外の方にお願いします
319デフォルトの名無しさん:2010/06/29(火) 04:59:18
windows+gccな人って具体的にどういう環境なんだろ。
320デフォルトの名無しさん:2010/06/29(火) 05:05:35
CygwinかMinGWだろ
321デフォルトの名無しさん:2010/06/29(火) 05:22:04
そういう予想じゃなくてさ。
出題者がちゃんと理解してるのかどうかを知りたいという意味合いも含んでた。
実はteratermでredhatにつないでました、とかありえない話じゃないと思うのよ。
322デフォルトの名無しさん:2010/06/29(火) 09:22:02
>>316
#include <stdio.h>
#define NN 3
#define loop(i,NN) for (i = 0; i < NN; i++)

int
main(void)
{
    int i, j, seq[3], n;
    char s[NN][100];

    loop(i, NN) {
        printf("入力文字列[%d]=", i);
        scanf("%s", s[i]);
    }
    printf("繋ぎ合わせる順番を入力してください\n");
    loop(i, NN) {
        scanf("%d", &n);
        seq[i] = n;
    }
    printf("結果 -> ");
    loop(i, NN) {
        loop(j, NN) {
            if (seq[j] == i + 1)
                printf("%s", s[j]);
        }
    }

    return 0;
}
323デフォルトの名無しさん:2010/06/29(火) 10:06:01
>>316の2番目
#include <stdio.h>
#include <string.h>
#define NN 100
#define loop(i,NN) for (i = 0; i < NN; i++)

int
main(void)
{
    int i = 0, linemax = 0, cnt = 0;
    char s[NN][100], *p, str[] = "abc";

    while (fgets(s[i++], 100, stdin) != NULL)
        linemax++;
    loop(i, linemax) {
        for (p = s[i]; *p; p++) {
            if (!strncmp(p, str, 3))
                cnt++;
        }
    }
    printf("#%s is %d\n", str, cnt);

    return 0;
}
324デフォルトの名無しさん:2010/06/29(火) 11:49:06
>>322-323さん

助かりました。ありがとうございました。
325デフォルトの名無しさん:2010/06/29(火) 12:48:44
画像上のある点からy=ax^2の2次曲線を赤線で描画しなさい(画像 320×240)


(x,y)=(160,120)
a=1/3のとき
a=1/2のとき
a=1のとき
a=2のとき

描画範囲
yの範囲は40
xの範囲は60
326224 ◆C/HmxiIl0o :2010/06/29(火) 14:19:04
>>283
すみません。折角作っていただいたのですが、データが>>242の通り、
x=1.0〜4.0,y=1/(1*25*x*x)でそれぞれ31個づつあります。
何度もお願いするのも申し訳ないと思い自分で拡張を試みたのですが、
Interpolationの部分が出来ませんでした。

startが最大で31まで増えるため、そのまま入れてもオーバーフローしてしまい、
かといって、iやjを消してdata[0][start]のような記述をするとnanになってしまいます。

何度も申し訳ないのですが、forの部分だけで構いませんので、作っていただけないでしょうか?
327デフォルトの名無しさん:2010/06/29(火) 14:30:53
>>325
こっちにも投げたか
328278:2010/06/29(火) 15:09:56
>>289 ありがとうございます。
329デフォルトの名無しさん:2010/06/29(火) 15:11:29
330デフォルトの名無しさん:2010/06/29(火) 15:17:38
>>324>>328
はい
331デフォルトの名無しさん:2010/06/29(火) 17:26:05
[1] 授業単元:一般情報処理
[2] 問題文(含コード&リンク):次のような動作をするプログラムを作成せよ。
               配列内のデータの最小値を返す。int min() 配列内のデータの最大値を返す。int max()
配列内のデータの平均値を返す。double mean() 配列内のデータの標準偏差を返す。double stdev()
ただしmain関数は次のものを使うこと。
               int main(void){
int a[15]={81,36,45,67,73,98,62,56,77,61,65,70,25,51,18};
printf("min=%d\n",min(15,a));
printf("max=%d\n",max(15,a));
printf("average=%lf\n",mean(15,a));
printf("standard deviation=%lf\n",stdev(15,a));
return 0; }
さらに、配列a[]の各要素の偏差値を表示するプログラムを作成せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:[2010年06月30日18:30まで]
[5] 文章中の示された関数・main関数を使ってください
よろしくお願いしますm(_ _)m
332デフォルトの名無しさん:2010/06/29(火) 18:18:32
>>226です。
>>227を作って頂いたのですが、main関数の部分も含め、プログラム全体を作って頂きたいです。
333デフォルトの名無しさん:2010/06/29(火) 18:34:36
334デフォルトの名無しさん:2010/06/29(火) 18:53:33
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
                 上下反転させた画像をビットマップで保存するプログラムを作成。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [無期限]
[5] その他の制限: ビットマップのファイル構造は少し勉強しました。
           画像のデータを取り込むところと処理を行う部分がよくわかりません。
           RGB値、malloc、Loadbmp等わかりやすく載ってるHPや本があれば教えてください。
           よろしくお願いします。

試しに書いてみた上下反転プログラム → http://codepad.org/4iL9agVw
反転させたい画像を作ったプログラム → http://codepad.org/8z8MCdZG
335デフォルトの名無しさん:2010/06/29(火) 21:00:18
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):ファイルに保存された会員情報を指定された項目をキーとしてソートするプログラムを作成する.
出力形式は,入力データと同じ,つまり1行に1人分のデータを格納し,各項目間はカンマで区切るものとする.
また,ソート済みのデータはファイルではなく標準出力に出力するものとする.
整数型のデータについては数値として,文字列型のデータについては大文字/小文字を区別せずにソートをすること.
ソートアルゴリズムはこれまでの演習で使用したもの,していないものに関わらず,何を用いてもよい.

また,会員数は最大で20,000人と仮定してもよい.

会員情報の入ったファイルのファイル名,キーとなる項目,正順か逆順かの指定はプログラム実行時の引数として与える.第一引数が会員情報の入ったファイル名,第二引数が項目番号(表1参照),第三引数がソート方法(0なら昇順,1なら降順)とする.

表1: データ型 項目名 項目番号 型
会員ID 1 整数(int)
姓 2 文字列(最大で50文字)
名 3 文字列(最大で50文字)
年齢 4 整数(int)
州 5 文字列(最大で50文字)
郡 6 文字列(最大で50文字)


[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年6月30日20:00まで
[5] その他の制限: 特になし


よろしくお願いします。
336デフォルトの名無しさん:2010/06/29(火) 21:25:33
>>291
>>292
ありがとうございました。
返事送れて申し訳ありません。
書き込んでから20分とはおどろきました
337デフォルトの名無しさん:2010/06/29(火) 21:44:13
>>302
ありがとうございます!
338デフォルトの名無しさん:2010/06/29(火) 21:46:47
339デフォルトの名無しさん:2010/06/29(火) 22:55:19
340デフォルトの名無しさん:2010/06/29(火) 23:39:54
[1] 授業単元: プログラミング開発基礎
[2] 問題文 複数ありますのでこちらで
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10764.txt
[3] 環境
[3.1] OS:(Windows 
[3.2] VC 6.0
[3.3] 言語:C
[4] 期限:なし
[5] 制限:なし
問題数が多くて恐縮なのですがなにとぞよろしくお願いします
341デフォルトの名無しさん:2010/06/29(火) 23:56:51
>>339
ありがとうございます!
342デフォルトの名無しさん:2010/06/30(水) 00:18:49
343デフォルトの名無しさん:2010/06/30(水) 00:29:31
>>326
テンプレ嫁
344デフォルトの名無しさん:2010/06/30(水) 01:09:50
>>335
ピキーーーン・・・麻呂のク(ry
345デフォルトの名無しさん:2010/06/30(水) 02:44:25
>>342ありがとうございますこれでどうどうと学校にいけます
346331:2010/06/30(水) 08:20:03
>>333
ありがとうございます。
ただ、コンパイルしてみたところ

/tmp/ccSDhYV6.o: In function `stdev':
test.c:(.text+0x18a): undefined reference to `sqrt'
collect2: ld returned 1 exit status

このようにエラーがでてしまうのですがどうすればコンパイルできるでしょうか?
347デフォルトの名無しさん:2010/06/30(水) 09:03:08
-lm
348デフォルトの名無しさん:2010/06/30(水) 10:48:45
>>346
次回からは、undefined reference to `sqrt'  でGoogle検索するとかして、自分で調べてくれ。
対策は、コンパイル時に -lm オプションを付ける。
例:gcc -lm test.c
349デフォルトの名無しさん:2010/06/30(水) 11:11:24
>>346
もう一度言うぞ。
対策は、コンパイル時に -lm オプションを付ける。
わかったな。
350デフォルトの名無しさん:2010/06/30(水) 12:19:22
こういうときどういう反応したらいいのだろうか
とりあえず、笑えばいいのかな
351デフォルトの名無しさん:2010/06/30(水) 14:36:15
>>350
最近、IDなしのスレに粘着してるなりすましのかまってちゃんが居るから、本人とは限らない。
「俺が348だ、349は偽物だ」と言っても確認出来ないからね。
という訳で、不快に思ったらスルーが一番。
352デフォルトの名無しさん:2010/06/30(水) 16:17:43
そうすることにするよ
353335:2010/06/30(水) 16:32:15
何度もすみません。
せっかく解いていただいたのですが、「昇順か降順でしかソートできない」として、もう一度お願い致します。
354デフォルトの名無しさん:2010/06/30(水) 18:16:33
>>325
>>1
環境によってはとけるかもしれません。(最近apiを勉強しているところでして)
テンプレートを書くときには条件をもっと詳しく書いてください。
・描画範囲の意味がよくわかりません。±40, ±60 ということですか?
・y = ax^2 を平行移動したものを描画すればいいのでしょうか?
・(x, y) = (160, 120) というのは頂点なんですか?
以上よろしくお願いいたします。
355デフォルトの名無しさん:2010/06/30(水) 18:33:45
>>354
mixiに似たような質問あったけど(既に削除済み)
背景が真黒のbmpに白で線を書き込みたいようだよ。
356346:2010/06/30(水) 18:48:06
本当にすみませんでした;
回答してくださった方、ありがとうございます
無事にコンパイルできました
357デフォルトの名無しさん:2010/06/30(水) 19:55:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10767.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visua lstadio
 [3.3] 言語:C
[4] 期限:2010年7月1日

よろしくお願いします
358デフォルトの名無しさん:2010/06/30(水) 20:27:38
359デフォルトの名無しさん:2010/06/30(水) 20:56:55
>>358
すいません、こちらの環境(Microsoft Visual Studio 2008)ではエラーが2つ出て動きませんでした。
360デフォルトの名無しさん:2010/06/30(水) 21:12:49
>>353
もともと昇順か降順かしかないんじゃ?
コードもascとdescしかないように見えるし。
どこが気に入らないのか具体的に
361デフォルトの名無しさん:2010/06/30(水) 21:13:19
>358, 359
確保したら開放ぐらいきちんと書けとも思ったがまぁいいや
C言語としてコンパイルすればエラーはでない
VS2008のclは使ったことないので、どんなスイッチ指定すればいいか知らないが、原因はC++ではvoid *から他のポインタへの暗黙の型変換がされないから
C++のソースコードとしてコンパイルしたければ、malloc()の戻り値を適当にキャストすれば良い
362デフォルトの名無しさん:2010/06/30(水) 21:13:32
>>359
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10770.txt

これでどうですか?
VisualStudio使ったことないもので、すいません。
363デフォルトの名無しさん:2010/06/30(水) 21:13:53
>>359
エラーの内容はなんとなく予想できるけど、コンパイルの仕方が悪い。
具体的には/Tcスイッチをつけるといいと思う
364デフォルトの名無しさん:2010/06/30(水) 21:21:01
365デフォルトの名無しさん:2010/06/30(水) 21:36:58
>>364
49行目、と思わんでもないけど別にいいや、としたいところだけど
学生はしっかりやっておいた方がいいのかもな、とも。。。
366デフォルトの名無しさん:2010/06/30(水) 22:05:33
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
登録番号 (int no) と名前 (char *name) と年齢 (int age) を含む構造体 person 型のポインタ変数を宣言し、登録人数分だけの動的メモリ確保をせよ。そして、データをファイルから入力せよ。
ファイルの形式は、先頭に登録する人物とし、そのあとに人数分のデータを登録番号、名前、年齢の順に書いていく(下の例を参照。登録番号は入力順に1,2,3,4,5,・・・とする。そして、入力した全員データを表示せよ。)

(ファイルの例)
3
1 田中 20
2 大田 40
3 井上 35
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:2010年7月2日まで
[5] その他の制限:無し

よろしくお願いします
367デフォルトの名無しさん:2010/06/30(水) 22:42:19
>>366
>>357といっしょ
368 ◆QZaw55cn4c :2010/06/30(水) 23:23:11
>>344
fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
369デフォルトの名無しさん:2010/07/01(木) 01:48:52
>>338
ありがとうございます
370デフォルトの名無しさん:2010/07/01(木) 06:24:44
>>368
麻呂じゃないが、勘違いしたのはお前だろ?しつこいぞw
麻呂の偽者との区別もつかず、いつまでも相手が勘違いしたと思い込んでろ。
自分が勘違いしてた癖にw 資料をきちっと読めよ、青二才。
あと、お前の言っている事は本当に意味不明。
371デフォルトの名無しさん:2010/07/01(木) 06:25:39
>>368
そ・れ・か・ら、getchar() と EOF について理解できましたか?
どうですか?成長しましたか?
372デフォルトの名無しさん:2010/07/01(木) 06:28:28
>>368
ttp://www.bohyoh.com/CandCPP/C/Library/getchar.html
> int getchar(void);
getchar() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
373デフォルトの名無しさん:2010/07/01(木) 06:32:27
>>368
EOF がマクロで定義されているであることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
374デフォルトの名無しさん:2010/07/01(木) 06:39:34
>>368
あぁ、あなた、結局ここで質問された課題に答えられず麻呂に負けたヘタレですか?w
いつまでも根に持つ陰険。お前の人生はクソだなw
一生こんなスレでネット弁慶をやってろ。お前が見ず知らずの人間に偉そうな態度で
上から目線で優越感を感じられるのは、せいぜいこのスレだけなんだろ?実に寂しい人生だ。

【話題】2ちゃんねる・ネット弁慶には困ったものだ 自らが叩きやすそうな対象を見つけたとたん、ムキになっ
http://tsushima.2ch.net/test/read.cgi/newsplus/1277889771/
↑まさにお前のことだなw それも自分の勘違いだと気づかずに、揚げ足取りをしたつもりのバカ
375デフォルトの名無しさん:2010/07/01(木) 06:41:27
>>368
戻り値がどうしたって?リストの課題で麻呂のクソースは付き物。
しかし、今回は提示される事はなかった。それが何を意味しているか分かるか?
麻呂はもう居ないってことだ。俺は何となく麻呂のクソースが出るか扇動してみたが
出なかったしw
376デフォルトの名無しさん:2010/07/01(木) 06:42:01
>>368
お前のおつむは成長していないようだなw 精神レベルもw
377デフォルトの名無しさん:2010/07/01(木) 06:45:23
>>368
そろそろお前が痛いって気づけよ
378デフォルトの名無しさん:2010/07/01(木) 06:46:19
>>368
悔しかったらお前オリジナルのリストのソースを書いて公表しろよ
他人のパクリしか出来ないコピーキャット
379デフォルトの名無しさん:2010/07/01(木) 06:48:06
>>368
ん〜〜、みっともない。このスレに何しに来てんの?分かりきった答えの問題を
解き続けるだけがお前の人生?このスレから離れて自分の人生を見つめ直したら?
どうせいつかは死ぬ限り有る時間を生きている人生だぞ?
こんな場所で揉めるのに使った時間も、過去のものとなるがそれが未来に役に立つ
有意義な時間になるとは思えないね。
380デフォルトの名無しさん:2010/07/01(木) 06:50:01
>>368
戻り値が重要ではないとは言わないが、いきなりそんなことを書くお前は何者だ?
麻呂がいつそんなことを言ったか、ログを参照してくれ。それが麻呂だという証拠も付けてな。
こんなIDも出ない、本人がトリップを使ってない騙りが可能な場所で、見えない敵と
戦い続ける恥ずかしい戦士めw
381デフォルトの名無しさん:2010/07/01(木) 06:56:00
>>368
> そろそろ理解していただきたいのですが。
相手を茶化すにしても痛すぎ。そんな態度だから周りから干されて孤立したんだろ。
言動が陰険過ぎ。いつまでも理解していないみたいな勘違いとか、粘着していることも含めて
人間として終わってる。
382デフォルトの名無しさん:2010/07/01(木) 06:59:49
368は人気者?
383デフォルトの名無しさん:2010/07/01(木) 07:02:14
>>382
この間隔で書き込まれているのを見ていると、
一人で騒いでいるだけのようにしか見えない
384デフォルトの名無しさん:2010/07/01(木) 07:25:34
あいかわらずですね。
385デフォルトの名無しさん:2010/07/01(木) 07:37:16
見えない敵と戦っているんだろう
プログラマなら魔法で戦えよ
386デフォルトの名無しさん:2010/07/01(木) 07:47:46
>>383
一度に多数の人間が同時に書き込んだ、というのを演出したいらしい。
387デフォルトの名無しさん:2010/07/01(木) 12:11:13
vectorをリファレンス引数で扱う意味を教えてください
388デフォルトの名無しさん:2010/07/01(木) 12:53:33
>>387
コピーするコストがもったいないから
コピーだと中身に変更を加えても呼び出し元に影響を与えられないから
389デフォルトの名無しさん:2010/07/01(木) 12:59:28
>>388
つまり、コピーだとその後代入などの手間がかかるため
リファレンス引数で扱い、その手間を省くということですね
ありがとうございます。
390デフォルトの名無しさん:2010/07/01(木) 14:36:20
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10772.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Vc
 [3.3] 言語: C++
[4] 期限:2010年07月10日まで
[5] その他の制限:なし
391デフォルトの名無しさん:2010/07/01(木) 14:50:54
>>383
その感覚じゃ連続投稿に引っかかることくらい、ここの住人なら知っているだろう。
バイバイさるさんにも引っかかる可能性はある。
392デフォルトの名無しさん:2010/07/01(木) 18:39:51
>>391
抜け道はいくらでもある。
393デフォルトの名無しさん:2010/07/01(木) 21:27:49
>>390
void main (笑)
394デフォルトの名無しさん:2010/07/01(木) 21:29:53
>>389
コンストラクタ・デストラクタのコストを避けるのが主目的。
395デフォルトの名無しさん:2010/07/01(木) 21:32:19
>>379
なに、ほんの手遊びですよ。ちょろちょろっと書いてみるのもまた楽しいものです。
396デフォルトの名無しさん:2010/07/01(木) 21:35:24
>>378
>>250
オリジナルの多桁演算ライブラリです。いつのまにか乗算・除算もできてしまいました。
効率は悪いのですが、それでもわりに重宝しています。
397デフォルトの名無しさん:2010/07/01(木) 21:44:08
トリップ付けずに代弁するとか、大人しくトイレで大便しといれw
398デフォルトの名無しさん:2010/07/01(木) 21:53:17
>>396
横レスで失礼。除算をどうやったのか興味があります。
399デフォルトの名無しさん:2010/07/01(木) 21:59:57
>>398
2進法での除算そのものです。ちょっとググってみたところでは http://homepage2.nifty.com/ttoyoshima/Computer/Multiply.htm など。
多桁数を1bit ずつシフトさせながら引き算できるときは引き算をする、という感じです、言葉にすれば。
>>250 も、折をみて、剰余を出力させるように改良しなくては。
400デフォルトの名無しさん:2010/07/01(木) 22:25:54
>>399
なるほど。繰り返しで処理出来るからハードウェア化も可能、というのが理解出来ました。
有難う御座います。
401デフォルトの名無しさん:2010/07/01(木) 22:39:01
>>400
手近な環境でマシン語を習得し、割り算を実装することができれば、そのマシン語は卒業したといってもいいと思います。
x86 がいいでしょうが、casl でもできます。
402デフォルトの名無しさん:2010/07/01(木) 22:54:25
>>401
CASLには虎馬が...ww
403デフォルトの名無しさん:2010/07/01(木) 23:05:13
>>390の前半
// ◎ソースコード
#include <stdio.h>
#define N 10
#define ID   "/0000/"
#define NAME "/やまだ/"

static int fib(int n)
{
    int r;
    if (n <= 2)
r = 1;
    else
r = fib(n - 1) + fib(n - 2);
    return r;
}

//-----------------------------------------------------
int main(void)
{
    int i;
    printf("%s %s\n\n", ID, NAME);
    for (i = 1; i <= N; i++) {
printf("F%2d = %7d\n", i, fib(i));
    }
    return 0;
}
404デフォルトの名無しさん:2010/07/01(木) 23:09:06
>>403
ついでに改造版。
#include <stdio.h>
#define N 40
#define ID   "/0000/"
#define NAME "/やまだ/"
#define fib(n) fib2(n,1,1)
static int fib2(int n, int a, int b)
{
    return (n <= 2) ? b : fib2(n - 1, b, a + b);
}

//-----------------------------------------------------
int main(void)
{
    int i;
    printf("%s %s\n\n", ID, NAME);
    for (i = 1; i <= N; i++) {
printf("F%2d = %7d\n", i, fib(i));
    }
    return 0;
}
405デフォルトの名無しさん:2010/07/01(木) 23:15:15
摂氏から華氏,及び華氏から摂氏に換算する関数を作成して、
main関数でキーボードから温度とその値が摂氏であるか華氏であるかを
入力し,摂氏ならば華氏に,華氏ならば摂氏に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
なお出力は main関数で行うこと。
406デフォルトの名無しさん:2010/07/01(木) 23:29:03
#include <stdio.h>
float power(float x,float y)
{
float ans;
char i;

ans=0;

if((char)y='C'){
ans=9/5 * x + 32;
y='摂氏';
i='華氏';
}else{
ans=5/9 * (x - 32) ;
y='華氏';
i='摂氏';
}
return ans;
}
407デフォルトの名無しさん:2010/07/01(木) 23:29:54
int main(void)
{
float a;
char b,i;

a=0;

printf("温度を入力してください: ");
scanf("%f", &a);

printf("%d度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ",(int)a);
scanf("%s", &b);
printf("\n");

printf("%c %8.3f = %c %8.3f\n",b, a, i, CelsiusFahrenheit(a, b));
return 0;
}

ここまでできたんですが、出力がうまくいきません。
誰か教えてください。
408デフォルトの名無しさん:2010/07/02(金) 00:20:43
>>405
#include <stdio.h>

float CelsiusFahrenheit(float a, char *b)
{    return (*b == 'C') ? (a - 32) * 5 / 9 : a * 9 / 5 + 32;}

int main(void){
    float a = 0;
    char b[2];

    printf("温度を入力してください: ");
    scanf("%f", &a);
    printf("%g度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ", a);
    scanf("%s", b);
    b[1] = (*b == 'C') ? 'F' : 'C';
    printf("%5.1f °%c = %5.1f °%c\n",
            a, b[0], CelsiusFahrenheit(a, b), b[1]);

    return 0;
}
409デフォルトの名無しさん:2010/07/02(金) 02:19:37
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
極座標(r,θ)の値を入力すると、直交座標(x,y)に変換するプログラムを作成せよ。
但し,θの値はdegree(度)で入力すること。また、πの値は逆三角関数(arctan(x))を使って計算をすること。
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/5(月)迄
[5] その他の制限:特になし

よろしくお願いします
410デフォルトの名無しさん:2010/07/02(金) 02:42:39
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク):分離連作法と外部ハッシュ法の性能比較
[3] 環境
 [3.1] OS:windows XP
 [3.2] gcc
 [3.3] 言語:C++
[4] 期限:2010年7月10日00:00
[5] その他の制限: 特になし
411 ◆QZaw55cn4c :2010/07/02(金) 05:55:41
412デフォルトの名無しさん:2010/07/02(金) 07:22:59
>>403
ありがとうございます
よろしければ演習2のほうもお願いします・・・
413デフォルトの名無しさん:2010/07/02(金) 12:17:45
>>411
ありがとうございます!
414デフォルトの名無しさん:2010/07/02(金) 12:56:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):switch 文を使用して
1. データファイルの新規作成
2. データファイルの追加作成
3. データファイルの読み込みと表示
4. 終了
をメニュー形式で処理するプログラムを作成せよ。
・ ファイル名はキーボードから入力する。
・ 1〜4の処理はユーザ関数として定義すること。
void data_write(void)
void data_append(void)
void data_read(void)
void the_end(void)
・1〜4以外の数値が入力されたら再入力させること。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:cc
 [3.3] 言語:C言語
[4] 期限:7月5日
415デフォルトの名無しさん:2010/07/02(金) 17:27:31
もう麻呂のク(ryで十分じゃんw
416デフォルトの名無しさん:2010/07/02(金) 18:26:04
>>415
コードを出したり引っ込めたりしなければね。
417デフォルトの名無しさん:2010/07/02(金) 19:01:48
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数
factを作成して動作を確認せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日

よろしくお願いします。
418デフォルトの名無しさん:2010/07/02(金) 19:04:56
>>417
>>211, >>250, >>306 あたりを参考にしてはいかが?
419デフォルトの名無しさん:2010/07/02(金) 19:43:49
420デフォルトの名無しさん:2010/07/02(金) 20:35:07
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
実数値(xとする)と正の実数値(yとする)を引数としてx^yを戻り値とする
関数mypowを作成し、プログラムリストと実行結果を示せ。
ただし、xとyについてはmain関数でキーボードから入力するようにし、
出力結果としては、mypow関数の計算結果と数学関数pow関数の結果を
両方表示するようにせよ。また、mypow関数のプロトタイプ宣言も行うこと。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日

よろしくお願いします。
421デフォルトの名無しさん:2010/07/02(金) 20:35:15
[1] 授業単元: プログラム言語
[2] 問題文(含コード&リンク):
10 人の成績を入力し,その順位を成績と共に表示したい。以下の考え方に基づいた
プログラムを作成せよ。
1 ?
2次元配列s[10][2] を用意する。
2 ?
i=0〜9 のfor 文を用いてs[i][0] に成績を入力する。
3 ?
s[0][0] とs[j][0],j=0〜9 を比較し,s[0][0] より大きい数値の個数n を数え
 る。その個数+1 が成績順位になるので,s[0][1] にn+1 を代入する。
4 ?
同様の操作をs[i][0],i=0〜9 に対して行なえば,その成績順位がs[i][1] とし
 て求められるので,あとは成績と共に表示すればよい。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C++
[4] 期限: 2010年7月6日まで
[5] その他の制限: main関数
よろしくお願いします
422デフォルトの名無しさん:2010/07/02(金) 20:39:26
>>419
ありがとうございます!
423デフォルトの名無しさん:2010/07/02(金) 21:27:52
>>408
遅れてすいません。ありがとうございます!
424デフォルトの名無しさん:2010/07/02(金) 21:44:46
>>416
しつけぇw
425デフォルトの名無しさん:2010/07/02(金) 22:02:53
>>423ですが、何度もすいません。

>>408

80度が「摂氏」なら "C" を「華氏」なら "F" を入力してください: F

日本基準 80.0 度 = 欧米基準 176.0 度

と出力できるようにはできませんか?
426 ◆QZaw55cn4c :2010/07/02(金) 22:47:29
>>420
http://codepad.org/7QLze0b2
もっとまじめにmypow()を定義しなければならないのでしたら、その旨ご返事ください。考え直します。
427 ◆QZaw55cn4c :2010/07/02(金) 23:06:15
>>421
http://codepad.org/BowfSESU
VC6 でコンパイルできなかったらごめんなさい。
428デフォルトの名無しさん:2010/07/02(金) 23:47:19
>>424
質問でも宿題でもないのにあげている、という点で同一人間っぽいですね。
いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。
429 ◆QZaw55cn4c :2010/07/03(土) 00:49:16
430デフォルトの名無しさん:2010/07/03(土) 00:56:52
>>425
計算違いがありましたので修正しました。

#include <stdio.h>
#define c1(c) (c=='C')?"日本基準":"欧米基準"

float CelsiusFahrenheit(float a, char *b)
{    return (*b == 'F') ? (a - 32) * 5 / 9 : a * 9 / 5 + 32;}

int main(void)
{
    float a = 0;
    char b[1];

    printf("温度を入力してください: ");
    scanf("%f", &a);

    printf("%g度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ", a);
    scanf("%s", b);
    printf("%s %5.1f 度 = %s %5.1f 度\n",
   c1(*b), a, c1('C' + 'F' - *b), CelsiusFahrenheit(a, b));

    return 0;
}
431デフォルトの名無しさん:2010/07/03(土) 06:36:17
>>428
し・つ・こ・い。このスレに何しに来てんの?基地外。自分のレスを読み返せ。
浮いてるぞ
432デフォルトの名無しさん:2010/07/03(土) 06:43:38
>>428
> いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。
自己紹介しているし、このバカw
お前の揚げ足取り、反論はどれも論点がズレている。もう少し自分の方が
勘違いをしてコミュ力がないと気づけよ、お子ちゃま。
で、fgetc()の戻り値なんて今更持ち出す池沼乙w
433デフォルトの名無しさん:2010/07/03(土) 06:45:57
>>234
よろしければお願いします
434バカ晒しage:2010/07/03(土) 06:48:26
ageているからという理由で勘違いしているなら
ピエロのお前を晒し続けてやるよw
お前がこのスレに無関係な話を延々と見えない敵に噛み付いて
し始めているからきめぇつってんだよ。スレタイ読めや、文盲かてめぇは?
435いつまでもおつむは成長しないお子ちゃま:2010/07/03(土) 06:49:18
368 名前: ◆QZaw55cn4c 投稿日:2010/06/30(水) 23:23:11
>>344
fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
436見えない敵に噛み付く自分こそ自意識過剰のスレチバカ:2010/07/03(土) 06:50:06
428 名前:デフォルトの名無しさん 投稿日:2010/07/02(金) 23:47:19
>>424
質問でも宿題でもないのにあげている、という点で同一人間っぽいですね。
いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。
437デフォルトの名無しさん:2010/07/03(土) 06:53:32
>>368 = >>428
EOF がマクロで定義されていることを、そろそろ理解していただきたいのですが。
どうですか?精神レベルとプログラミングの技能は成長しましたか?

ttp://www.bohyoh.com/CandCPP/C/Library/getchar.html
> int getchar(void);
getchar() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
438433=234:2010/07/03(土) 07:10:46
ちなみに期限のほうですが、来週の月曜日にまで延長して貰えました
439デフォルトの名無しさん:2010/07/03(土) 07:18:56
このスレがどんなスレか、そろそろ理解していただきたいのですが?
スレタイも>>1も読めないアホ
440デフォルトの名無しさん:2010/07/03(土) 12:50:16
内容:
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10774.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/6まで
[5] その他の制限:特になし
2問ありますがよろしくお願いします
441デフォルトの名無しさん:2010/07/03(土) 13:27:17
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
UNIXコマンドのgrep(指定したファイルを読み込み、指定した文字列とマッチする行を出力するコマンド)と同じ動作をするプログラムを実装しなさい。
ただし、オプションなどの副次的な機能はつけなくてもよい。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日まで
[5] その他の制限:とくにありません。よろしくお願いします。
442 ◆QZaw55cn4c :2010/07/03(土) 15:41:24
443334:2010/07/03(土) 17:20:02
http://codepad.org/gKSA4OIw

コンパイルが上手く行ったので実行したらゴミができた
タイミングよく救急車のサイレンがきこえてきた 死にたいw

(gdb) run
Starting program: /cygdrive/c/works/1/rev/rev
[New thread 2376.0x258]
[New thread 2376.0xbf0]
6 [main] rev 2376 exception::handle: Exception: STATUS_ACCESS_VIOLATION
3713 [main] rev 2376 open_stackdumpfile: Dumping stack trace to rev.exe.stack
dump

Program received signal SIGSEGV, Segmentation fault.
0x611203f8 in _fread_r () from /usr/bin/cygwin1.dll
444デフォルトの名無しさん:2010/07/03(土) 17:26:03
>>443
画像開く前から画像の幅と高さがわかるとかどんなエスパーだよバカ
445デフォルトの名無しさん:2010/07/03(土) 17:29:08
ワロタ
446デフォルトの名無しさん:2010/07/03(土) 19:06:49
>>426
ありがとうございます。
447デフォルトの名無しさん:2010/07/03(土) 19:44:18
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
例を修正し、double型の配列変数に格納されている値の
平均値を求める関数aveを作成せよ。また、aveもdouble型とする。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日
448デフォルトの名無しさん:2010/07/03(土) 19:46:04
>>447の例は以下の通りです。よろしくお願いします。

#include<stdio.h>
#define N 10
int sum(int num[])
{
int n, s=0;

for (n=0;n<N;n++)
s+=num[n];

return 0;
}

int main()
{
int aa[N], bb;
/* 配列変数aaに値を代入 */

bb = sum(aa);
printf(“sum=%d\n”,bb);

return 0;
}
449デフォルトの名無しさん:2010/07/03(土) 20:06:46
>>447
#include<stdio.h>
#define N 10
double sum(double num[])
{
int n;
double s=0.0;
for (n=0;n<N;n++)
s+=num[n];
return s;
}

int main()
{
int i;
double aa[N], bb;
/* 配列変数aaに値を代入 値は適当*/
for (i=0;i<N;i++)
aa[i]=i*2.5;
bb = sum(aa);
printf("sum=%f\n", bb);
return 0;
}
450 ◆GmgU93SCyE :2010/07/03(土) 20:08:55
>>447
#include <stdio.h>
#define N 10

double ave( const double arr[] )
{
int i;
double total = 0;
for ( i=0; i<N; ++i )
total += arr[i];

return total/N;
}

int main()
{
const double arr[N] = { 1.23, 9.87, 5.94, 0.157, 7.2, 1.23, 9.87, 5.94, 0.157, 7.2 };
printf( "average = %f", ave(arr) );
return 0;
}
451デフォルトの名無しさん:2010/07/03(土) 20:47:22
>>408
ありがとうございます!
452デフォルトの名無しさん:2010/07/03(土) 20:52:37

[1] c言語活用:
[2] 例を改造して、ガウス関数に関する折れ線グラフにしなさい。
http://codepad.org/bsUmakKX
[3] 環境
 [3.1] OS : Linux
 [3.2] コンバイラ名 : gcc
 [3.3] 言語 : C
[4] 期限: 7月 5日まで

例をガウス関数で定義するところまでは自力でできましたが、
グラフが点集合でしか表せません。
現在のX座標の点と隣のX座標の点を直線で結ぶために2組の座標の組
(x1, y1, disp_x1, disp_y1),
(x2, y2, disp_x2, disp_y2) を用意するとうまくいくそうですが
どうしてもわかりませんでした。
御助力お願いします。
453デフォルトの名無しさん:2010/07/03(土) 21:42:14
>>452
handy.h とはなんでしょうか?
あと、X Window ?
454デフォルトの名無しさん:2010/07/03(土) 22:01:38
>>390
誰かコレの演習2お願いしますっ
455 ◆QZaw55cn4c :2010/07/03(土) 22:35:14
>>390
>>454
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10777.txt

>>431
宿題しにきていますが、なにか?

>>432
べつに当たり前のことをいってるだけですけどね。でも、当時話題になったが fgetc() ではなくて getchar() マクロや EOF だっただなんて、よくご存知ですね。やっぱり当事者だったんですね。つれた、つれた。

>>434
そういいながらも sage で投稿できないところなんか、末期的としかいわざるを得ないでしょうね。一度 sage で投稿してごらんなさい?

まあ一匹の自意識障害者をあぶりだすことができたようで、満足しています。
456 ◆QZaw55cn4c :2010/07/04(日) 00:21:30
457デフォルトの名無しさん:2010/07/04(日) 00:31:44
[1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):
以下のプログラムに、下に示す二つの関数を実装し、組み込みなさい。
ファイル中に保存するデータはアスキー形式でも、バイナリ形式でもどちらでも構わないものとする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10778.txt
・構造体Employee型のデータが順に保存されているファイルからデータを読み込む関数。
・作成したデータをファイルに書き出す関数。
例えば、構造体Employeeを下に示すものと同じ定義にしたとする。
この構造体に従ったASCII形式のデータベースファイルを読み込み、社員の追加や、給与の変更をした後、同様なデータベースファイルとして保存できるようにしなさい(もちろん、バイナリ形式のファイルにしても構わない)。
[構造体Employeeの例]
typedef struct {
char name[16];
int age;
int salary;
} Employee;

[データベースファイルの例]
TANAKA 32 620
SUZUKI 25 500
CHIBA 35 650
NAKAMURA 50 1000
IIDA 45 800

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日まで
[5] その他の制限:特にありません。よろしくお願いします。

458457:2010/07/04(日) 00:43:11
>>459
ありがとうございます。
459デフォルトの名無しさん:2010/07/04(日) 00:50:36
どういたしまして
460デフォルトの名無しさん:2010/07/04(日) 01:02:03
>>456
ありがとうございます、助かりました
461デフォルトの名無しさん:2010/07/04(日) 01:03:27
1] 授業単元: プログラミング実験
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10780.zip
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C言語
[4] 期限: ([2010年07月05日22:00まで]
[5] その他の制限: よろしくお願いします!
462デフォルトの名無しさん:2010/07/04(日) 01:03:42
>>455
精神障害者だろ、お前?いつまでも昔の(自分の勘違いのせいで起こった論争)を引き摺るとか。
気持ち悪い。このスレ、お前のオナニースレじゃないんだが?周りを見ろよ。
日頃、現実世界でまともに相手にされていないのがバレバレだぞ。
463デフォルトの名無しさん:2010/07/04(日) 01:05:26
>>1
> 気に入らない質問やその他の発言はスルーの方向で。
最初の1行も読めないとか、日本人かも疑わしいわ。
ageられているのはお前みたいなキモイ奴を晒しageされていると気づけよ。
このスレにsageルールはないけど?
464デフォルトの名無しさん:2010/07/04(日) 01:15:35
ID希望
465精神障害者アスペ君の恥ずかしいレス:2010/07/04(日) 01:15:35
368 名前: ◆QZaw55cn4c 投稿日:2010/06/30(水) 23:23:11
>>344
fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
466デフォルトの名無しさん:2010/07/04(日) 01:23:04
どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。

<標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。
※配列の使用は2つだけ。
例) 文字列入力→ABCDEFAABCDABC
   削除文字列→ABC
   結果文字列→DEFAD

どなたか教えてください、お願いします。
467デフォルトの名無しさん:2010/07/04(日) 01:35:50
IDが表示されない、だから相手が特定できないから自分にレスした奴を
虱潰しに煽る事で炙り出そうって魂胆だろ。一生見えない敵と戦うぞ、こいつw
468デフォルトの名無しさん:2010/07/04(日) 02:00:45
>>467
今来産業の俺にもう少し分かりやすく
469デフォルトの名無しさん:2010/07/04(日) 02:05:50
>>466
#include <stdio.h>
#include <string.h>

int main(void)
{
char source[] = "ABCDEFAABCDABC";
char target[] = "ABC";

size_t l = strlen(target);
char *p;

puts(source);
puts(target);

while (p = strstr(source, target)) {
while (p[0] = p[l]) {
p++;
}
}

puts(source);

return 0;
}
470デフォルトの名無しさん:2010/07/04(日) 02:06:11
麻呂のクソースを超えるクソースは出てこない、間違いない
471デフォルトの名無しさん:2010/07/04(日) 02:21:25
>>469
※配列の使用は2つだけ。
って言われてるけど
472デフォルトの名無しさん:2010/07/04(日) 02:35:20
>>471
はあ?確保してる配列は2つだけだろうが
脳みそヒヨコかよ
473デフォルトの名無しさん:2010/07/04(日) 11:33:13
>>449
「ave」という文字がないのですがこれでいいんですかね?
474デフォルトの名無しさん:2010/07/04(日) 14:29:58
>>453

handy.h はHandyGraphic という
グラフィックスライブラリを使うことを意味しています。
また学校のパソコンなのでわかりませんがおそらく
X Windowかと思われます。いいかげんですみません。

明日提出なのでよろしければ、どなたかよろしくお願いします。
475デフォルトの名無しさん:2010/07/04(日) 14:41:34
[1] 授業単元:プログラミング
[2]問題文:
ファイルseiseki.txt から氏名と点数を読み込んで、成績順に並べ替え、結果を画
面に表示するプログラムを作成せよ。
・氏名は2次元配列、点数は1次元配列に格納する。
・ データの並べ替えには単純挿入法、単純選択法またはバブルソートを使用する。
・ 文字列 x[]と文字列y[]の入れ替えは、文字列操作関数strcpy を用いて行う。
strcpy(z,x); strcpy(x,y); strcpy(y,z);
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2010年07月06日0:00まで]

この問題が解ける方はいらっしゃいますでしょうか。
476 ◆QZaw55cn4c :2010/07/04(日) 15:11:12
>>475
http://codepad.org/1E7wG9Fa

>>463
>>1 を読めないのはおまえさんも同じ。私?いちおう宿題といてますけどね。
なによりこれだけの過剰反応を示していること自体が、つれた、つれた、と判断されてもしかたのないことでは?
さらしあげ?専用ブラウザを使っている私にはなんのことだか。

>>467
それはおまえさんのことですがな。
477デフォルトの名無しさん:2010/07/04(日) 15:21:19
>>469
よみにくいから段下げをつけてくれ
478デフォルトの名無しさん:2010/07/04(日) 15:24:06
479デフォルトの名無しさん:2010/07/04(日) 15:36:07
>>477
ついてるよ
メモ帳にコピペしてみ
480デフォルトの名無しさん:2010/07/04(日) 15:41:04
>>457もお願いします。
481デフォルトの名無しさん:2010/07/04(日) 16:04:42
[1] 授業単元:方程式の解
[2] 問題文(含コード&リンク):方程式exp(-x^2/2)=0.5の解を求める
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:Cygwin
 [3.3] 言語:C
[4] 期限:7/9
[5] その他の制限:
double f(double x);
int main(void){
double x,min_f,solution;
min_f=1e100;
for(x=0;x<=3;x+=dx){
printf("%e,%e\n",f,min_f);
if(fabs(f(x))<min_f){
solution=x;
min_f=fabs(f(x));
}}
printf("f(%e)=%e\n",solution,min_f);
return 0; }
double f(double x){
double y;
y=exp(-x*x/2)-0.5;
return y; }
と組んで実行できたんですが、なぜmin_fを最初に10^100とするのでしょうか?
なんか私の感覚的には10^-100な気がするのですが・・・
この部分の解説お願いします。
482デフォルトの名無しさん:2010/07/04(日) 16:20:47
>>479
確かにソースをみるとついてますな。
483デフォルトの名無しさん:2010/07/04(日) 16:44:30
>>481
範囲をdx刻みで分割して、|f(x)|が最小となるxを求める。
min_fは暫定の最小。もしあるxで|f(x)|<min_fなら、min_fを更新する。
dxに対してmin_fを小さくしすぎると、|f(x)|<min_fなxがない可能性がある。
484デフォルトの名無しさん:2010/07/04(日) 20:06:11
>>476
うわっ、お前マジキモイ・・・そのままトリップを付けたまま書き込めよ。
必死に自分の不満、苛立ちを露にする長文を書くしバカ丸出しw
485デフォルトの名無しさん:2010/07/04(日) 20:06:54
>>476
> それはおまえさんのことですがな。
いや、お前のことだよ。第一、お前はトリップを付けているが
お前にレスした奴が特定の一人とは限らないだろ?
486デフォルトの名無しさん:2010/07/04(日) 20:07:19
>>476
見えない敵と戦う必死な戦士、かっちょわりぃ〜w
487デフォルトの名無しさん:2010/07/04(日) 20:08:06
>>476
>>1
>あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
読めませんか?相手をいちいち自分の勘違いで挑発するお前が一番幼稚
488デフォルトの名無しさん:2010/07/04(日) 20:08:28
>>476 日本語でおk
489デフォルトの名無しさん:2010/07/04(日) 20:09:12
>>476
自分はさっぱり分かりません、みたいなしらばっくれた書き込みをして
自分がした 勘違い を認めないとか、頭おかしいぞw
自覚が無いなら責任が問われる社会では通用しません。
490デフォルトの名無しさん:2010/07/04(日) 20:09:55
>>476
最後の1行がみっともないです ><;
早くこのスレから出て行くか、大人になって下さい ><;
ねぇ、まだ社会に出て働いた事の無いお子ちゃまw
491デフォルトの名無しさん:2010/07/04(日) 20:10:37
>>476
やっぱりお前が>>1の注意書きを読めてないじゃんw
492デフォルトの名無しさん:2010/07/04(日) 20:11:40
>>476
そろそろ、自分の苛立ちを見えない敵にぶつけないで良いよ。
今後無駄なレスをしても、スルーされるだけだからw
で、お前は俺を麻呂と思っているんだろ?麻呂があれから
騙りもあり、しばらく来ていなかったことも知らないとは・・・
そうやって見えない敵に噛み付いてなさいw
493デフォルトの名無しさん:2010/07/04(日) 20:14:39
>>476 の書き込み全てが恥ずかしい。このスレに何しに来てんですか?
他人にお前こそと言う前に、議論するスレは他にありますので、そちらでやって下さい。
トリップ付けてまでバカ晒すなよ、ガキw
494デフォルトの名無しさん:2010/07/04(日) 20:16:42
>>493
お前はコテハンかトリップつけろクズ
495デフォルトの名無しさん:2010/07/04(日) 20:28:46
>>469
解答ありがとうございます。もしよろしかったら、使用する標準関数は、strncmp(),strcpy(),strlen()で書いてもらえないでしょうか?
496デフォルトの名無しさん:2010/07/04(日) 20:47:34
少しも勉強しないんだな。それでいいのか若者
497デフォルトの名無しさん:2010/07/04(日) 20:56:45
>>476
ありがとうございます。助かりました。
498デフォルトの名無しさん:2010/07/04(日) 21:23:46
499481:2010/07/04(日) 21:37:31
>>483
どうもありがとうございます。納得できました。
ifの条件文に引っかからなくなる直前のxがsolutionとなる、という認識で大丈夫ですか?
500デフォルトの名無しさん:2010/07/04(日) 23:15:12
>>478
ありがとうございます。
501デフォルトの名無しさん:2010/07/04(日) 23:29:02
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
次式の値を返す関数を作成せよ。
f(x)=e^{-x} cos(2πx)
その関数を用いて0≦x≦3の間で0.1刻みで計算し、結果をリダイレクトで
ファイルに記録せよ。その結果をgnuplotでグラフにして示せ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月6日

よろしくお願いします。
502デフォルトの名無しさん:2010/07/05(月) 00:35:56
だれか>>440お願いします。
503デフォルトの名無しさん:2010/07/05(月) 04:14:21
>>440
【1】 (1) return ; (2) shift_down(heap, s, 2*s, n);
【2】 (2) swap(&heap[1], &heap[i]); (2) shift_down(heap, 1, 2, i-1);

酷いコードだ。
教育だからこそ、スマートなコードにしてくれることを切に願う。
504デフォルトの名無しさん:2010/07/05(月) 05:16:09
[1]授業単元:プログラミング演習
[2]問題文;離散探索木(26進)と外部ハッシュ法の比較(探索関数)
 キー:   文字列
 使用ファイル: wordE100KR.dat
 上記ファイルを読み込み、通常の配列に格納する。
 この配列から要素を読み込み、分離連鎖法および離散探索木(26進)を生成する。
 格納された要素と同一の要素集合すなわち、配列に格納された用語集合に対して、1万語毎に探索を行い、照合回数、および探索時間を測定する。
 結果として、照合回数について20個のデータ(2×10)、同様に探索時間について20個のデータ(2×10)が得られる。
 これらのデータをExcelに格納し、表、グラフを作成し、分析せよ。
[3]環境
[3.1]OS;windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3] 言語:C/C++どちらでも可
[4]期限;7月8日

使用ファイルはhttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htmにあります
丸投げで申し訳ありません。よろしくお願いします。
505デフォルトの名無しさん:2010/07/05(月) 06:49:51
すみません、>>457もお願いします。
506デフォルトの名無しさん:2010/07/05(月) 12:32:23
[1] 授業単元: C言語プログラミング
[2] 問題文メモリや実行時間の許容範囲内の、最大完全数、最大友愛数、および最大婚約数を算出プログラムを作成
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft Visualstadio 2003
[3.3] C言語・C++
[4] 期限: ([2010年7月6日12:00まで

よろしくお願いします。

507デフォルトの名無しさん:2010/07/05(月) 16:52:56
>>461おねがいします
508デフォルトの名無しさん:2010/07/05(月) 17:01:57
>>507
zipはめんどくさいので放置。
できれば1レス、最低でもWEBだけで確認できる様に書きなおせ。
509デフォルトの名無しさん:2010/07/05(月) 17:03:46
>>506
> 許容範囲内
とは誰が許容する範囲内なんだ。
具体的に書きなおせ。
510デフォルトの名無しさん:2010/07/05(月) 17:50:36
最大友愛数、最大婚約数…
511 ◆QZaw55cn4c :2010/07/05(月) 18:29:52
512デフォルトの名無しさん:2010/07/05(月) 20:24:06
>>507
問題文の

確率指定 p

って何?>
513デフォルトの名無しさん:2010/07/05(月) 20:28:32
あれだけISOの標準スタイルについて述べられていたのに未だに
int main() 笑 の奴がいるとかw
514 ◆QZaw55cn4c :2010/07/05(月) 20:28:45
515 ◆QZaw55cn4c :2010/07/05(月) 20:34:19
>>513
http://pc12.2ch.net/test/read.cgi/tech/1269438098/101 で述べられ済み。

ISO/IEC 9899TC2
6.7.5.3 Function declarators (including prototypes)
14
An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters.
とあり、関数の定義のときには、空のリストは no parameters である。
すなわち引数が void の場合と等価であり、int main() は int main(void) と同じ。
516デフォルトの名無しさん:2010/07/05(月) 20:36:40
>>513
void main()でも別に構わんぞ
コンパイル通ればいいんだよ
517デフォルトの名無しさん:2010/07/05(月) 20:45:25
>>516
これには異論があり。
個人的には、int main() でコンパイルできる環境で、main() が引数をかえさない、という main() 側の都合で void main() と宣言するのには疑問がある。
518デフォルトの名無しさん:2010/07/05(月) 20:51:48
ま〜たこの話題かw
ちょっと前にもどっかのスレで泥沼化してただろう?
だれか過去ログはっておやり。
519デフォルトの名無しさん:2010/07/05(月) 20:53:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 四則演算と平方根を求める事が出来る電卓プログラムを作成せよ.
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:visual C++ 2008
 [3.3] 言語: C++
[4] 期限: 2010年7月7日22:00頃まで
[5] その他の制限: 数学関数等は利用不可,関数ライブラリは標準入出力ライブラリ stdio.h のみを利用可

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10781.txt

math.h等の利用が出来ないため平方根はニュートン法により求めるプログラムを使用したいと思っています.
URLに記載した二つのプログラムを組み合わせて上記の条件を満たすような電卓プログラムを作りたいのですが,
私なりに見よう見まねで組み合わせて見たのですが,知識が足りず平方根を求める動作が働きません.
根本的に間違っている可能性もありますが,どなたか修正点を教えて頂けると幸いです.
よろしくお願いいたします.


520デフォルトの名無しさん:2010/07/05(月) 20:55:25
あのな、isoだかなんだか知らんが、そんなもんただの標準だろ。
守らなきゃいけないルールじゃない。
単にコンパイラやソースが標準に沿っていますということを表明できるだけの意味しかないんだよ。
この世にはmainが存在しないプログラムをCで書くケースだって腐るほどあるし、
エントリ関数がWinMain()になっている世界で最も普及したコンパイラだってあるんだぞ。
521デフォルトの名無しさん:2010/07/05(月) 20:58:04
>>518
このスレの先々代(135)、3月〜4月にかけて宿題が欠乏し宿題解き人が暇になったために泥沼化した。
結論としては、規格の上では void main() も int main() も合法だったかと。
522デフォルトの名無しさん:2010/07/05(月) 21:01:57
>>521
情報トンクス! ていうかこのスレだったかw
523デフォルトの名無しさん:2010/07/05(月) 21:30:58
[1] 授業単元: Visual Studio 入門
[2] 問題文 3問ほどあるのでリンクを
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
[3] 環境
[3.1] OS:Windowsvista 
[3.2] Microsoft Visual Studio 2008
[3.3] 言語:c言語
[4] 期限:なし
[5] 制限:なし
問題が多いのですがひとつお助けください
524デフォルトの名無しさん:2010/07/05(月) 22:14:53
525デフォルトの名無しさん:2010/07/05(月) 22:23:17
x(1)、 x(2)、・・・とaは2000次元ベクトルとします。

N
Σ || x(n)-a || / N   || ・|| はノルム。

を高速に計算する方法わかりますか。
526 ◆QZaw55cn4c :2010/07/05(月) 22:30:05
527デフォルトの名無しさん:2010/07/05(月) 22:32:14
X=(x, y) Y=(z, w) A=(a ,b) とすると、

||X-A|| + ||Y-A|| = SQRT( (x-a)^2 + (y-b)^2 ) + SQRT( (z-a)^2 + (w-b)^2 )

を高速で計算したいという訳なんです。

2000次元だと、かけ算とSQRTが相当あって時間掛かりますが。
短縮する方法ありますか。
528527:2010/07/05(月) 22:35:42
面倒なので、

||X-A||  = |x-a| + |y-b| と定義してしまうか。

すると、 |x-a| + |y-b| + |z-a| + |w-b| を求めるだけで簡単。
529 ◆QZaw55cn4c :2010/07/05(月) 23:23:14
>>519
http://codepad.org/LQ8UIyYT
キー入力の具合はこれでいいですか?
530デフォルトの名無しさん:2010/07/05(月) 23:24:23
◆QZaw55cn4c はもりもりがんばってるなぁ。
定期的に叩かれるみたいだけどがんばれ。
531デフォルトの名無しさん:2010/07/05(月) 23:29:13
やってることは怠け者の成績を上げてやることだけどなw
532デフォルトの名無しさん:2010/07/05(月) 23:31:38
>>530
叩いてもらえる、というのは、コードをみてくださっている、というありがたい反応ですから、ウェルカムです。
ちょっと前の、あいかわらず頭の変な奴にかかわってしまったのは失敗ですが、スルーすることにしました。
でも今日はおやすみなさいです。
533デフォルトの名無しさん:2010/07/05(月) 23:51:43
>>532
じゃあたまにのぞいて気になるとこあったらレスすることにするよ。
っても地力ぼちぼちありそうに見えるんで、重箱の隅ぐらいしか突っ込めないかも。
534デフォルトの名無しさん:2010/07/05(月) 23:53:45
[1] 授業単元: Visual Studio 入門
[2] 問題 半乱順列の関数作成
[3] 環境 指定なし
[3.1] OS:Windowsvista 
[3.3] 言語:c言語
[4] 期限:なし
[5] 制限:なし
半乱順列の関数を作ってください!お願いします!!
535デフォルトの名無しさん:2010/07/05(月) 23:54:08
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納せよ。
[3] 環境
 [3.1] OS:Ubuntu 10.4
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:7/7まで
[5] その他の制限:
data.txtの中身は
aoyama 36
oomura 42
sugiyama 50
morita 14

となっております。
536デフォルトの名無しさん:2010/07/06(火) 00:06:46
>>535
>>476 は読み込んだあとソートしていますが、そのソート部分を削ればご所望のコードになるかと。
537535:2010/07/06(火) 00:18:01
>>536
似た問題があったのですね。ありがとうございました。
538デフォルトの名無しさん:2010/07/06(火) 16:11:53
>>529
お答え頂きありがとうございます。
動作は申し分無いのですがこのプログラムだとstdio.h以外にmath.h等の関数ライブラリが見られます。
すみませんがstdio .h のみで動作することを前提でお願いしたいと思います。
また、授業では本当に基礎的な内容のみしか扱っておらず、ネットや本を見て勉強している段階ですので、なるべく基本的な分かりやすい形でプログラムを組んでいただけたら幸いです。
539デフォルトの名無しさん:2010/07/06(火) 16:15:25
このとき、穏やかな表情の>>529の脳裏に、
慇懃無礼、という言葉が頭をよぎったという。
540デフォルトの名無しさん:2010/07/06(火) 16:17:37
>>538
せっかく答えてくれた人に喧嘩売るのはやめようね
541デフォルトの名無しさん:2010/07/06(火) 16:48:46
>>538
ソースよく読めよ
542デフォルトの名無しさん:2010/07/06(火) 16:53:32
はいはい、もう答えなくて結構です
543デフォルトの名無しさん:2010/07/06(火) 17:44:44
int main() 笑 なんて使う奴はスルーしてヨシ!
544デフォルトの名無しさん:2010/07/06(火) 18:04:56
538です。

せっかく解答をして下さったにも関わらず、不快感を与える表現をしてしまいすみませんでした。
if 0とend ifの意味を理解していませんでした。
こちらの理解不足で本当に失礼しました。

545デフォルトの名無しさん:2010/07/06(火) 18:17:15
◆QZaw55cn4c は古い人間でしょ?コードの書き方でバレバレ
546デフォルトの名無しさん:2010/07/06(火) 18:26:10
>>545
どの辺が古いの?
547デフォルトの名無しさん:2010/07/06(火) 18:54:59
>>546
無理しないで良いよ、爺ちゃん。
548デフォルトの名無しさん:2010/07/06(火) 19:01:50
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):

#include <stdio.h>typedef struct { char *fname, *mname, *lname; int byear, dyear;
} writer_t;

writer_t writers[] = { {"Edward", "Elmer", "Smith", 1890, 1965},
{"Robert", "Anson", "Heinlein", 1907, 1988},
{"Arthur", "Charles", "Clarke", 1917, 2008},
{"Isaac", " ", "Asimov", 1920, 1992},
{"Raymond", "Douglas", "Bradbury", 1920, 0}};
int main(void){ int i; char s[10];
for (i = 0 ; i < sizeof(writers)/sizeof(writer_t) ; i++){
printf("%c. ", writers[i].fname);
if (writers[i].mname[0] != "\0") {
printf("%c. %-10s", writers[i].mname[0], writers[i].lname); }
else { printf("%-13s", writers[i].lname); }
printf("%4s - ", writers[i].byear);
if (dyear > 0){ printf("%4s", writers[i].dyear); } printf("\n"); } return 0;}
上記のエラープログラムを正しく直す。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2010年7月28日20:00まで
[5] その他の制限: なるべく簡潔に(新しい変数を定義したり)お願いします。見づらいですが改行が多いと怒られるので・・
549デフォルトの名無しさん:2010/07/06(火) 19:09:55
お・に・い・ちゃ・ん、じゃなくて、お・じ・い・ちゃ・ん ♥
550 ◆QZaw55cn4c :2010/07/06(火) 19:11:24
>>538
#if 0
から
#endif
までの間を削除してください。
わかりやすさについては、これが限界です。
551デフォルトの名無しさん:2010/07/06(火) 19:12:43
>>543
http://pc12.2ch.net/test/read.cgi/tech/1269438098/101 で述べられ済み。

ISO/IEC 9899TC2
6.7.5.3 Function declarators (including prototypes)
14
An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters.
とあり、関数の定義のときには、空のリストは no parameters である。
すなわち引数が void の場合と等価であり、int main() は int main(void) と同じ。
552デフォルトの名無しさん:2010/07/06(火) 19:15:17
>>545
確かに古いといわれたらそうかもしれません。
func(a, b)
int a;
char *b;
{
...
return 0;
}
と書いていたころもありました。
setq とか car とか cdr とかを乱発していたこともあります。
553デフォルトの名無しさん:2010/07/06(火) 19:17:21
>>494
お前がコテハンかトリップつけろ塵
554 ◆QZaw55cn4c :2010/07/06(火) 19:18:17
>>544
いえいえ、全然。
555デフォルトの名無しさん:2010/07/06(火) 19:22:15
>>553-554
コテハン付けたり、外したり大変だなw
556デフォルトの名無しさん:2010/07/06(火) 19:24:57
>>555
専用ブラウザを使っていますから、簡単ですよ。
557デフォルトの名無しさん:2010/07/06(火) 19:31:06
>>547
>setq とか car とか cdr とかを乱発していたこともあります。
横レスだけど、そのネタはww
[H|T] -> とか言い出さないようにw>>552

まあ、コード書けない煽りは無視で行きましょう。
558 ◆GmgU93SCyE :2010/07/06(火) 19:34:15
559デフォルトの名無しさん:2010/07/06(火) 19:35:47
>>552
その頃は
return (0);
と書いてたりしないか?
560デフォルトの名無しさん:2010/07/06(火) 19:37:06
>>557
処理系をCで書く、という解説本を集めているんです。でも、いまんところ2冊しかみつかっていません。
やっぱり、そんな本は売れないんですかね。おもしろいんですけれどね。
561デフォルトの名無しさん:2010/07/06(火) 19:38:44
>>559
しまった!
562デフォルトの名無しさん:2010/07/06(火) 19:39:30
>>560
訳されてない本が沢山あるよ
563デフォルトの名無しさん:2010/07/06(火) 19:51:18
>>560,562
Cに限らず、技術資料とかサンプルは英語の方が多いよね。
Google codeもよく使ったなあ。
564デフォルトの名無しさん:2010/07/06(火) 19:51:18
お爺ちゃんお口くちゃ〜い、クソースなんて書くなよw
565デフォルトの名無しさん:2010/07/06(火) 19:53:06
>>562
洋書まではあさる実力がない‥‥‥。でもながめてみたいもの。
著者名でよければ教えてください。
566デフォルトの名無しさん:2010/07/06(火) 20:06:48
>>558
ありがとうございました〜
567523:2010/07/06(火) 20:42:03
>>526
>>524
回答ありがとうございます。
 まさか一日かからずに終わらせてくれるとは思いませんでした。
568デフォルトの名無しさん:2010/07/06(火) 21:09:00
C言語と関係無いじゃん。
OSやコンパイラを作るって事だろ。
569デフォルトの名無しさん:2010/07/06(火) 22:11:38
コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると
その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる
プログラム。
例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。
ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。
入力された金額が負の場合は、「Error」を出力するようにします。
そこで、下のようなプログラムを書いたのですが、うまく起動しません。
このプログラムを、上の出力例のように出力してくれるように書きなおしてくれませんか??
下のプログラムでは合計枚数を出力する部分しか書いてません。
ちなみに、再帰を使ってプログラミングお願いします。
570デフォルトの名無しさん:2010/07/06(火) 22:14:36
569質問者のプログラム(続き)
#include<stdio.h>
int coinfunc(int *C, int k, int M){

/* *C・・・コインの種類の配列(小さい順にソートされているとする)
M・・・支払う金額/
k・・・コインの種類の数 */

if(M == 0){ return(0); }
else if(M < 0){ return(Error); }
else{
int min = 100000;
int i;
for(i = 0; i <= k - 1; i++){
int tmp = coinfunc(C, k, M - C[i]);
if(tmp < min){ min = tmp; }
}
return(min + 1);
}
}
int main(){
int C[5] = {1,5,8,10,15};
int k = 5;
int M;
printf("支払う金額M=");
scanf("%d",&M);
printf("%d\n",coinfunc(C, k, M));
}
571 ◆QZaw55cn4c :2010/07/06(火) 22:36:25
>>506
http://codepad.org/dYsw25Et
許容範囲云々は考えていません。
572デフォルトの名無しさん:2010/07/06(火) 22:38:55
明日までにある宿題あるんですけど頼めますかね?
すぐ貼ります
573デフォルトの名無しさん:2010/07/06(火) 22:40:44
頼めます
574デフォルトの名無しさん:2010/07/06(火) 22:42:55
>>572
ここまでは作った
#include<stdio.h>

int main(void)
{
return 0;
}
575デフォルトの名無しさん:2010/07/06(火) 22:54:22
[1] 授業単元:プログラミング演習
[2] 問題文:このプログラムを拡張して、個人ごと平均点と科目ごとの平均点を小数点以下1桁まで
表示できるプログラムを作成せよ。

#include <stdio.h>
main()
{
int score[4][3]:
int total[4]:
int i , j ;
for (i = 0; i < 4; i++) {
total[i] = 0 ;
printf("No . %d\n" , i + 1);
for( j = 0 ; j < 3; j++) {
printf("score %d : " , j + 1) ;
scanf("%d", &score[i][j]);
total[i] += score[i][j];
}
}
printf("\n");
printf("No . | s1 s2 s3 | total\n");
printf("---+----------+------\n");
for ( i = 0; i < 4; i++) {
printf("%2d | " , i + 1) ;
for( j = 0; j < 3; j++) {
printf("%3d " , score[i][j]);
}
printf("| %4d\n" , total[i]) ;
}
}
576デフォルトの名無しさん:2010/07/06(火) 22:56:36
連投すみません
[3]環境
 Windows、VC6.0、C
[4]期限
 7月7日
[5]配列まで

よろしくお願いします。
577デフォルトの名無しさん:2010/07/06(火) 23:36:32
>>570 再帰は駄目だな、100円でいっぱいいっぱいだw
#include<stdio.h>
#include <limits.h>

int coinfunc(int *c, int k, int m)
{
    int i, tmp, min = INT_MAX;
    if (m == 0)
        return 0;
    else if (m < 0)
        return -1;
    for (i = 0; i < k; i++) {
        tmp = coinfunc(c, k, m - c[i]);
        if (tmp < 0)
            continue;
        else if (tmp < min)
            min = tmp;
    }
    return min + 1;
}

int main(void)
{
    int m, c[] = {1, 5, 8, 10, 15};
    while (scanf("%d", &m) != 1)
        scanf("%*[^\n]");
    printf("%d\n", coinfunc(c, sizeof(c)/sizeof(*c), m));
    return 0;
}
578デフォルトの名無しさん:2010/07/06(火) 23:38:48
低額は計算済みにしておいて、再帰使えば。
579デフォルトの名無しさん:2010/07/06(火) 23:45:42
結局イタチごっこだろ
じゃあ非再帰ならいいのかと思って試したら、100000000円くらいが限界だった(メモリ確保できず)
割り算で出来る貨幣制度にしろってこった
580デフォルトの名無しさん:2010/07/06(火) 23:50:38
コインに関する問題への解答ありがとうございます。
>>577さんありがとうございます。
>>579さん、非再帰の場合のプログラムをのせてください。お願いします。
581デフォルトの名無しさん:2010/07/06(火) 23:53:49
582デフォルトの名無しさん:2010/07/06(火) 23:56:49
最終的には、低額の計算だけにできるだろ。
基本は、一番高いコインで、埋めていき、最後(低額)だけ考慮する。
583デフォルトの名無しさん:2010/07/06(火) 23:59:29
予想では、コインの最小公倍数になるまでは最大値のコインで支払って
最小公倍数を下回る所になったら、組み合わせを考慮する。
584デフォルトの名無しさん:2010/07/07(水) 00:01:27
<<579さん、ありがとうございます。
ここで、第2問↓↓
今も上で議論されていますが、このプログラム(<<577)の効率の解析をしてください。
「ある重要な演算1つに注目し、その実行回数(最悪の入力時における)を、入力
サイズを表すパラメータの関数として表す。最終的にはT(n,...)=O(n^2×・・・)
のような評価式を求めてください。」できれば、その式を求める過程をお願いします。
585デフォルトの名無しさん:2010/07/07(水) 00:06:30
>>568
ええ、lisp 用として。
586デフォルトの名無しさん:2010/07/07(水) 00:07:51
O(1)だろ。
587デフォルトの名無しさん:2010/07/07(水) 00:08:29
>>582
確かにそれで大分削れそうだな
588デフォルトの名無しさん:2010/07/07(水) 00:08:29
>>575
分かる人これも頼みます
589デフォルトの名無しさん:2010/07/07(水) 00:26:32
>>583
#include<stdio.h>
#include<stdlib.h>
int gcd(int a, int b){ int c; while((c=a%b)) a=b, b=c; return b; }
int lcm(int a, int b){ return a/gcd(a, b)*b; }
void coin_func_r(int *result, int c[], int m, int n){
int i;
if(m<0 || c[0]<0 || (*result>0 && n>=*result)) return;
if(m==0){
if(*result<0 || *result>n) *result=n;
return;
}
for(i=0;c[i]>0;i++) coin_func_r(result, c+i, m-c[i], n+1);
}
int coin_func(int c[], int amount){
int i, lcm_all=1, result=-1, rest, c_max=1;
for(i=0;c[i]>0;i++){
lcm_all=lcm(lcm_all, c[i]);
if(c_max<c[i]) c_max=c[i];
}
rest=amount%lcm_all;
coin_func_r(&result, c, rest, 0);
return result+(amount-rest)/c_max;
}
int main(int argc, char *argv[]){
int c[]={15, 10, 8, 5, 1, -1}, x=100, result=-1;
if(argc==2) x=atoi(argv[1]);
result=coin_func(c, x);
printf("%d\n", result);
return 0;
}
590デフォルトの名無しさん:2010/07/07(水) 00:36:26
>>589
とてもいい感じだが、コインの最小公倍数の大きさに極めて依存

- int c[]={15, 10, 8, 5, 1, -1}, x=100, result=-1;
+ int c[]={777, 128, 100, 15, 10, 8, 5, 1, -1}, x=100, result=-1; // tekitou
として 100000をコマンドライン引数で与えると帰ってこねえ

最小公倍数よりも範囲を狭くする方法はありそうだけどなぁ
591 ◆QZaw55cn4c :2010/07/07(水) 00:37:41
>>575
http://codepad.org/VmHF0iio
表示具合の微調整はお願いいたします。
592デフォルトの名無しさん:2010/07/07(水) 00:40:32
>>591
ありがとうございます!
本当に助かりました。
593デフォルトの名無しさん:2010/07/07(水) 01:07:22
>>503
ありがとうございました!
594デフォルトの名無しさん:2010/07/07(水) 01:58:42
>>551
そこでも述べられているがそれTC2
595デフォルトの名無しさん:2010/07/07(水) 02:06:02
[1] 授業単元:プログラミング演習
[2]Q1. 問題文:4つの整数を入力し、それらを要素とする行列を求め、その値を以下のような
形式で表示するプログラムを作成せよ。

例 100 20 30 40と入力すれば
  | 100 20 | =3400
| 30 40 | と表示される

Q.2ディスカウントストアでどの商品でも5個以上買えば1割引、10個以上で2割引、20個以上で
4割引となっていた。キーボードから買う商品の単価と個数を入力し、合計金額を計算するプログラミングを
作成せよ。

[3]環境
 Windows、VC6.0、C
[4]期限
 7月8日
[5]配列よりちょっと前

Q.1に関してはできそうだったのですが、バーが表示されないために却下となってまいました。
皆さんにとっては大変簡単だと思いますがよろしくお願いします。
初心者ですみません。
596デフォルトの名無しさん:2010/07/07(水) 02:10:06
>>551
ちがう。そういうことじゃない。ISO、ANSI準拠はプログラムの開始、主体となる関数を
mainとし、引数がある時と無い時でどう記述するか、標準スタイルを提唱している。
ただし、それはあくまでも 標準スタイル であり、各自の環境によって準拠しなくても構わない。
597デフォルトの名無しさん:2010/07/07(水) 02:12:37
また、main関数の戻り値はint型とする。これは散々既出だから議論する必要なし。
自分はどうこうすると、根拠も無く意味も分からないスタイルを用いると
他者とコードをやり取りする場合は、弊害が起こるかもしれないが。
そもそも、ここでは個人的なやり取り、スタイルが通用するが
C言語は何も個人が私用で使うだけでなく、世界に通じて商業用としても
普通に用いられている。それは工業規格も同じ事。だから少しでも
幅広く通用するスタイル、規格というのが必要になる。
ちなみに、CDやDVDなどもISO準拠で世界で通用する方式、規格が使われている。
598デフォルトの名無しさん:2010/07/07(水) 02:25:18
さらに、C++では引数が無い場合は int main() としている。
あくまでも ANSI、ISO準拠の標準スタイルの話。個人的なスタイルには言及せず。
599デフォルトの名無しさん:2010/07/07(水) 05:44:31
>>590
最大のコインを選ぶか選ばないかのときだけやればいい。
777円が最大なら 777*2-1以上までは777円を選んでおいてokのはず。
一枚選べる最大価格は777*2-1円だからこの辺から調べる。
600デフォルトの名無しさん:2010/07/07(水) 06:08:18
コインが100円と99円としたとき。
297円 = 99*3円で100円を選ぶと失敗するから
599は間違えだな。
やっぱどのコインの倍数でもある最小公倍数がよさげか。
601デフォルトの名無しさん:2010/07/07(水) 12:20:52
>>582
>最終的には、低額の計算だけにできるだろ。
>基本は、一番高いコインで、埋めていき、最後(低額)だけ考慮する。

>>11を改造させてもらいました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10790.c
602デフォルトの名無しさん:2010/07/07(水) 13:24:29
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10791.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: ([2010年07月10日22:00まで]
[5] その他の制限: よろしくおねがいします!
603デフォルトの名無しさん:2010/07/07(水) 15:23:20
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
10人の成績を入力し、その順位を成績と共に表示したい。以下の考えに基づいたプログラムを作成せよ。

1. 2次元配列s[10][2]を用意する。
2. i=0〜9のfor文を用いて、s[i][0]に成績入力する。
3. s[0][0]とs[j][0], j=0〜9を比較し、s[0][0]より大きい数値の個数nを考える。
  その個数+1が成績順位になるので、s[0][1]にn+1を代入する。
4. 同様の操作をs[i][0]にi=0〜9に対して行えば、その成績順位がs[i][1]として求められるので、
  あとは成績と共に表示すればいい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (VC 6.0)
 [3.3] 言語: C
[4] 期限: ([2010年07月9日15:00まで]
[5] その他の制限: 初心者で申し訳ないですが頼みます。
604デフォルトの名無しさん:2010/07/07(水) 15:25:25
>>603
>>421,427
605デフォルトの名無しさん:2010/07/07(水) 15:28:54
>>604
おお同じ人がいたとはw
ありがとうございます!
606デフォルトの名無しさん:2010/07/07(水) 17:49:16
>>604
これC++用だからできなかったorz
607デフォルトの名無しさん:2010/07/07(水) 18:00:51
608デフォルトの名無しさん:2010/07/07(水) 18:15:29
>>607
ありがとうございます。
感謝感謝です。
609デフォルトの名無しさん:2010/07/07(水) 18:20:35
>>595
暇ならでいいんでこれも頼みます
610デフォルトの名無しさん:2010/07/07(水) 18:35:12
611デフォルトの名無しさん:2010/07/07(水) 18:42:57
>>610
ありがとうございます。
612デフォルトの名無しさん:2010/07/07(水) 19:14:20
613デフォルトの名無しさん:2010/07/07(水) 19:26:52
>>550
ありがとうございました。
プログラムをしっかり理解出来るようもっと知識を深めたいと思います!
614デフォルトの名無しさん:2010/07/07(水) 19:29:25
>>612
ありがとうございます!
助かりました。
615デフォルトの名無しさん:2010/07/07(水) 20:57:40
>>612
重くて開かないですね
616デフォルトの名無しさん:2010/07/07(水) 21:24:39
見れました!
617デフォルトの名無しさん:2010/07/07(水) 21:58:05
独自のライブラリも悪くは無いが 標準ライブラリ で済むならそれでおk
618デフォルトの名無しさん:2010/07/07(水) 22:39:34
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
円形テンプレートマッチングのプログラムを作成せよ。

白い楕円が複数書いてあるBMP画像を読み込み(適当にペイントで作成)画像左下からラスタ走査し、円形テンプレートマッチングをするプログラムを作成せよ。
円形テンプレートはサイズA〜Bまで変化させ、一致率(円形テンプレートの円周上に一致する白画素と一致している数/円形テンプレート円周のプロット数、円形テンプレート内の黒画素に一致している黒画素数/円形テンプレート内の黒画素数)
上位5つを色を変えて描画せよ。

また、一致率上位5つの半径、一致率、座標(画像の左下をx=0、y=0とする)をdos窓上に標示せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:2010年7月10日まで
[5] その他の制限:

よろしくお願いします
619デフォルトの名無しさん:2010/07/07(水) 23:37:51
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
問題1. 10進数1234を2進数で表示するプログラムを作成せよ。
問題2. 変数の下位16ビット中の1のビット数を数える関数 int bit_count(int x) を作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Stduio 2008
 [3.3] 言語:C
[4] 期限:2010年7月9日まで
[5] その他の制限:無

よろしくお願いします
620デフォルトの名無しさん:2010/07/07(水) 23:53:18
#include <stdio.h>

int main()
{
int a, b, c, d;

scanf( "%d", &a );
scanf( "%d", &b );
scanf( "%d", &c );
scanf( "%d", &d );

int value= a*d - b*c;


printf( "| %d %d | =%d\n", a, b);
printf( "| %d %d |\n", c, d );

return 0;
}

エラー
z:\プログラミング演習\sample\sample\sample01c.c(12) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
cl.exe の実行エラー

どこを直せば良いのですか?
621デフォルトの名無しさん:2010/07/07(水) 23:54:42
#include <stdio.h>

int main()
{
int unit_price; // 単価
int num; // 個数

printf( "買う商品の単価: " );
scanf( "%d", &unit_price );

printf( "個数: " );
scanf( "%d", &num );

int total_price = unit_price * num;

// 小数を使うと誤差がでるので使わない
if ( num >= 20 )
total_price = total_price*6/10;
else if ( num >= 10 )
total_price = total_price*8/10;
else if ( num >= 5 )
total_price = total_price*9/10;

printf( "合計金額: %d", total_price );
}

エラー
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(14) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(18) : error C2065: 'total_price' : 定義されていない識別子です。
cl.exe の実行エラー

これもお願いします。
622デフォルトの名無しさん:2010/07/07(水) 23:58:40
>>621
変数の宣言場所をブロックの先頭に移動
623デフォルトの名無しさん:2010/07/07(水) 23:59:05
#include <stdio.h>
const int n = 10;
int main()
{
int i, j;
int s[n][2];
for (i = 0; i < n; i++) {
printf( "%d: ", i );
scanf( "%d", &s[i][0] );
}

for (i = 0; i < n; i++) {
s[i][1] = 0;
for (j = 0; j < n; j++) {
if (s[i][0] < s[j][0])
s[i][1]++;
}
s[i][1]++;
}
for (i = 0; i < n; i++)
printf( "s[%d]: %d\n", i, s[i][1] );
return 0;
}
/* end */

Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2057: 定数式が必要です。
Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2133: 's' : サイズが不明です。
cl.exe の実行エラー

すみませんこれも駄目でした。
お願いします。
624デフォルトの名無しさん:2010/07/08(木) 00:01:53
>>622
ありがとうございます。
しかし警告が出てしまいました。

Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'unit_price' に対して参照が行われました。
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'num' に対して参照が行われました。
625デフォルトの名無しさん:2010/07/08(木) 00:18:06
もしかして↓みたいな感じにしてない?

int unit_price; // 単価
int num; // 個数
int total_price = unit_price * num;
626デフォルトの名無しさん:2010/07/08(木) 00:19:39
>>625
なってます。
初心者ですみません。
正しいやり方教えてください。
627デフォルトの名無しさん:2010/07/08(木) 00:27:29
int unit_price; // 単価
int num; // 個数
int total_price;

printf( "買う商品の単価: " );
scanf( "%d", &unit_price );

printf( "個数: " );
scanf( "%d", &num );

total_price = unit_price * num;
628デフォルトの名無しさん:2010/07/08(木) 00:30:08
>>627
できました!
どうもありがとうございました。
629デフォルトの名無しさん:2010/07/08(木) 00:34:44
>>620
自己解決できました。
630デフォルトの名無しさん:2010/07/08(木) 02:22:04
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (visual stadio 2008)
 [3.3] 言語: (C)
[4] 期限: [2010年07月08日13:00まで]
[5] その他の制限:ほんの入門級なので、if,for,whileぐらいしか使えません
あと配列は禁止

概要:数値を1つ(2〜9の数字)入力し、その個数分の"*"を1辺とする
完成図(*=★、空白=☆):

3を入力した場合
★★★
☆☆★
★★★

9を入力した場合
★★★★★★★★★
☆☆☆☆☆☆☆☆★
★★★★★★★☆★
★☆☆☆☆☆★☆★
★☆★★★☆★☆★
★☆★☆☆☆★☆★
★☆★★★★★☆★
★☆☆☆☆☆☆☆★
★★★★★★★★★

ーーーーーーーーーーーーーーーー
自分の考え方で進んでみましたが、ifの条件式の部分が分からなくて
助力を求めます
631デフォルトの名無しさん:2010/07/08(木) 07:27:39
>>630
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10793.c
奇数のみ出力できるモノで良ければ
632デフォルトの名無しさん:2010/07/08(木) 10:01:13
[1] 授業単元:C・プログラミング
[2] 問題文(含コード&リンク):
下記のGPA計算のプログラムを読み込んだ数値を入れる配列を指すポインタを用いて書き換えよ.ただし,配列は1次元配列を用い,また関数を使う必要はない.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10794.txt
[3] 環境
 [3.1] Windows 7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2010年7月10日迄
よろしくお願いします。
633デフォルトの名無しさん:2010/07/08(木) 10:51:09
>>632
void input(int sei[][N2], int n);
↓↓↓↓
void input(int (*sei)[N2], int n);

for(i=0; i<n; i++){
↓↓↓↓
int (*p)[N2];
for (p = sei; p < sei + n; p++) {

sei[i][2]= 0;
↓↓↓↓
(*p)[2]= 0;
634デフォルトの名無しさん:2010/07/08(木) 11:18:09
C言語プログラミング(再帰)について質問です。
コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると
その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる

プログラムを書こうと思っています。
例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。
ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。
そこで、下のようなプログラムを書いたのですが、合計枚数を出すまでしかできませんでした。
これを、それぞれのコインが何枚必要か出力するように書き換えてください!お願いします。

ソースコードは次の書き込みで。
635デフォルトの名無しさん:2010/07/08(木) 11:19:16
#include<stdio.h>
#include<limits.h>

int coinfunc(int *c, int k, int m)
{
int i, tmp, min = INT_MAX;
if (m == 0)
return 0;
else if (m < 0)
return -1;
for (i = 0; i < k; i++) {
tmp = coinfunc(c, k, m - c[i]);
if (tmp < 0)
continue;
else if (tmp < min)
min = tmp;
}
return min + 1;
}

int main(void)
{
int m, c[] = {1, 5, 8, 10, 15};
printf("m=?\n");
while (scanf("%d", &m) != 1)
scanf("%*[^\n]");
printf("%d\n", coinfunc(c, sizeof(c)/sizeof(*c), m));
return 0;
}
636デフォルトの名無しさん:2010/07/08(木) 11:21:49
23円は15と8じゃダメですか? ><;
637デフォルトの名無しさん:2010/07/08(木) 11:28:10
>>636
すいません!!23円のときは15と8が最小ですね。。
638デフォルトの名無しさん:2010/07/08(木) 11:57:17
639デフォルトの名無しさん:2010/07/08(木) 12:01:39
性帝トーマス△
640デフォルトの名無しさん:2010/07/08(木) 12:17:43
>>638
33円 -> 15円1枚、10円1枚、8円1枚 が最小。
641デフォルトの名無しさん:2010/07/08(木) 12:26:46
1 #include<stdio.h>
2 #include<string.h>
3 typedef struct K{
4 char* name;
5 int tensuu;
6 }K;
7 int main(void)
8 {
9 FILE *fp;
10 char str[256];
11 char *p1,*p2;
12 int i,j,n;
13 double d,e,f;
14 int a[250];
15 char b[250][250];
16 int x;
17
18 if((fp=fopen("seiseki.txt","r"))==NULL){
19 printf("ファイルがありません\n");
20 return -1;
21 }else{
22 /*while(fgets(str,256,fp)!=NULL){
23 p1=strtok(str," ");
24 p2=strtok(NULL," ");
25 a.name=p1;
26 a.tensuu=atoi(p2);*/
27 i=0;
28 while(fscanf(fp,"%s %d",&b[i],&a[i])!=EOF){
29 i=i+1;

642デフォルトの名無しさん:2010/07/08(木) 12:28:08
30 }
31 n=i;
32 printf("----------入力データ------------\n");
33 for(i=0;i<n;i++){
34 printf("%s %d\n",b[i],a[i]);
35 }
36 for( j=0; j<n; j++){ /* 未処理データの先頭 */
37 for( i=1; i < n-j; i++){
38 if( a[i-1] < a[i] ){ /* 隣り合うデータの交換*/
39 x = a[i-1];
40 a[i-1] = a[i];
41 a[i] = x;
42
43 strcpy(str,b[i-1]);
44 strcpy(b[i-1],b[i]);
45 strcpy(b[i],str);
49 }
50 }
51 }
52
53 }
54 printf("----------出力データ------------\n");
55 for(i=0;i<n;i++){
56 printf("%s %d\n",b[i],a[i]);
57 }
58 fclose(fp);
59 return 1;
60 }
61
643デフォルトの名無しさん:2010/07/08(木) 12:29:05
ファイル処理の応用
switch 文を使用して
1. データファイルの新規作成
2. データファイルの追加作成
3. データファイルの読み込みと表示
4. 終了
をメニュー形式で処理するプログラムを作成せよ。
 ファイル名はキーボードから入力する。
 1〜4の処理はユーザ関数として定義すること。
void data_write(void)
void data_append(void)
void data_read(void)
void the_end(void)
 1〜4以外の数値が入力されたら再入力させること。
 switch 文については教科書 56 ページを参照すること。

644デフォルトの名無しさん:2010/07/08(木) 12:31:22
1. 新規作成の実行例

********** 成績処理 ********* ← メニューの表示
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
← データ入力の誤り
処理番号を入力して下さい(1〜4):9
********** 成績処理 *********
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
処理番号を入力して下さい(1〜4):1
← ファイル名の入力
Input file name= abc.txt
name=?oota
tensuu=?10
oota 10
name=?yamada
tensuu=?50
yamada 50
name=? ← 入力の終了 Ctrl + D



645デフォルトの名無しさん:2010/07/08(木) 12:33:27
2. 追加作成の実行例

********** 成績処理 *********
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
処理番号を入力して下さい(1〜4):2

name=?isida
tensuu=?90
isida 90
name=?torii
tensuu=?70
torii 70
name=? ← 入力の終了 Ctrl + D

3. 読み込みと表示の実行例

********** 成績処理 *********
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
処理番号を入力して下さい(1〜4):3
Input file name= abc.txt
oota 10
yamada 50
isida 90
torii 70

646デフォルトの名無しさん:2010/07/08(木) 18:25:35
>>633
ありがとうございます。助かりました。
647デフォルトの名無しさん:2010/07/08(木) 18:25:53
648デフォルトの名無しさん:2010/07/08(木) 18:29:13
[1] 授業単元:
[2] 問題文(含コード&リンク):
2〜9の数字を入力その数字に応じて図形を表示させる関数を作る
正方形 三角形 六角形 菱形 星 渦巻き
星と渦巻き以外できたからこの2つについて知りたい
例 7を入力したとき 左:渦 右:星

*******  *   *   *
         *    * *  *
*****  *     ***
*    *  *  *******
* ***  *     ***
*       *   *  *  *
*******  *   *   *
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: よくわからない 申し訳ないVS2008使ってる
 [3.3] 言語: C
[4] 期限: 2010年7月13日
[5] その他の制限: 配列は禁止
649デフォルトの名無しさん:2010/07/08(木) 18:44:06
>>648
ほー。配列は禁止。

printf("*******  *   *   * \n");
printf("         *    * *  * \n");
printf("*****  *     *** \n");
printf("*    *  *  ******* \n");
printf("* ***  *     *** \n");
printf("*       *   *  *  * \n");
printf("*******  *   *   * \n");
は禁止?
650デフォルトの名無しさん:2010/07/08(木) 18:51:34
面白いと思ってやってんの?
651デフォルトの名無しさん:2010/07/08(木) 19:11:07
>>648
渦巻きの偶数パターンが分かればコードが書けるんだが
652デフォルトの名無しさん:2010/07/08(木) 22:56:04
>634
ってさ、たとえば 36 のときみたいに解が複数あるときはどうすんの?
15,15,5,1 の4枚と、10,10,8,8 の4枚。
653デフォルトの名無しさん:2010/07/08(木) 23:06:15
>>630
ありがとうございます
助かりました
654デフォルトの名無しさん:2010/07/08(木) 23:20:25
>>653
いえいえ
655デフォルトの名無しさん:2010/07/08(木) 23:32:53
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):

以下の仕様に従って,分数の四則演算を行うプログラムを作成せよ。
[仕様1] 以下のような構造体を定義し,分数のデータ構造に利用すること。
struct fraction{
int parent; /* 分母(denominator) */
int child; /* 分子(numerator) */
};
[仕様2] 以下の実行結果となるようなプログラムを作成せよ。
プログラムの実行結果↓
1つ目の分数を入力して下さい。
3/4 ←キーボードより入力
2つ目の分数を入力して下さい。
1/4 ←キーボードより入力
演算方法(1.加算,2.減算,3.乗算,4.除算)を入力して下さい。
2 ←キーボードより入力
3/4 - 1/4 = 1/2
計算結果は約分をして表示

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 7月9日
[5] その他の制限:ポインタ変数、データ構造まで習いました
よろしくお願いします
656デフォルトの名無しさん:2010/07/08(木) 23:41:48
>>651
特に指示はないからこっちに任せただと思う
だから左上からスタートで

********
          *
****** *
*      * *
* *    * *
* ****  *
*         *
********

>>649
ifかswitchでそれをつくろうかと思ったがさすがにふざけてると思われそうなのでやめた
657デフォルトの名無しさん:2010/07/08(木) 23:51:27
>>656
日本語でおk。偶数パターンを出力してからものを言え
658デフォルトの名無しさん:2010/07/09(金) 00:02:35
>>657
すまなかった 6 4 2の順で

******
       *
**** *
*   * *
*      *
******

****
    *
*   *
****

2は正方形でも右の形でもどっちでもいい

** **
**   *
659デフォルトの名無しさん:2010/07/09(金) 00:34:07
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://yonex1.cis.ibaraki.ac.jp/~yonekura/Socket-base/Sock-prog9.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 4.3.4
 [3.3] 言語:C
[4] 期限:2010年7月11日
[5] その他の制限:
よろしくお願いします。
660デフォルトの名無しさん:2010/07/09(金) 01:28:45
次のプログラムを、分かりやすく疑似コードに直してください!!
分かり易ければOKです!
static int coin[] = {1, 5, 8, 10, 15};
int main(void){
int *nr, *hist, money, c, n, new;
printf("input money : ");
while (scanf("%d", &money) != 1) {
scanf("%*[^\n]");
printf("input money again : "); }
scanf("%*[^\n]");
nr = (int *)malloc((money + 1)*sizeof(*nr));
if (nr == 0) {
perror("calloc");
return 1; }
hist = (int *)calloc(money + 1, sizeof(*hist));
if (hist == NULL) {
perror("calloc");
goto err; }
for (n = 0; n <= money; n++)
nr[n] = n;
for (c = 0; c < sizeof(coin)/sizeof(*coin); c++)
for (n = coin[c]; n <= money; n++) {
new = nr[n - coin[c]] + 1;
if (new < nr[n]) { nr[n] = new; hist[n] = c;}
}
printf("total number : %d\n", nr[money]);
printf("coins : ");
for (n = money; n > 0; n -= coin[hist[n]])
printf("%d ", coin[hist[n]]); printf("\n");
free(nr); free(hist); return 0; err:
free(nr); return 1; }
661デフォルトの名無しさん:2010/07/09(金) 02:34:47
>>648
> 2〜9の数字を入力
2はどうなのよ、2の時は?
662デフォルトの名無しさん:2010/07/09(金) 04:46:59
>>602お願いします!!
663デフォルトの名無しさん:2010/07/09(金) 07:59:57
664デフォルトの名無しさん:2010/07/09(金) 16:09:48
>>661
星は正方形で
渦巻きは>>658でおねがいします
665デフォルトの名無しさん:2010/07/09(金) 20:03:15
666デフォルトの名無しさん:2010/07/09(金) 20:21:22
> http://codepad.org
↑便利だ。
コンパイルまでしてくれる必要は無いんだけど、
もっと色々な言語(Pascalとかverilogとか)貼り付けて、
整形して表示してくれるアプローダ無いかな?
667デフォルトの名無しさん:2010/07/09(金) 20:26:18
ideone.comは?整形して表示の意味がよく分からないけど
668デフォルトの名無しさん:2010/07/09(金) 20:40:12
>>667
ありがとう。これでいいです。
こんなんとかPascal似の言語とか貼り付けたかったのです。
http://ideone.com/zrjGj
669 ◆QZaw55cn4c :2010/07/09(金) 22:04:40
ideone.com は対応している言語が多いけれども、コンパイルエラーの表示に難があるからなあ。
http://ideone.com/ffzm5
正解は、
transform(radians.begin(), radians.end(), sines.begin(), (double (*)(double))sin);
670デフォルトの名無しさん:2010/07/09(金) 22:41:13
整数を入力:18
1
2
3!?
(中略)
13!?
14
15!?
16
17
18!?

こんなプログラムはどうやって書くんですか?
671デフォルトの名無しさん:2010/07/09(金) 22:48:40
さぁ、世界のナベアツ先生に聞いてちょっ
672デフォルトの名無しさん:2010/07/09(金) 22:49:53
誘導されてきたんだなぁ。ってか宿題だったのか。
次は>>1を読もう。
673デフォルトの名無しさん:2010/07/09(金) 22:57:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):3の付く数字と3の倍数の時にアホになりなさい。
[3] 環境
 [3.1] OS: (Windows/Linux/等々)windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)Borland C++ 5.5.1
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 20日(火)
674デフォルトの名無しさん:2010/07/09(金) 23:19:04
675デフォルトの名無しさん:2010/07/09(金) 23:27:09
>>674
こうすれば文字列操作が不要になるんでは。
int isAho(int n)
{
if (n % 3 == 0) return 1;
while (n)
{
if (n % 10 == 3) return 1;
n /= 10;
}
}
676デフォルトの名無しさん:2010/07/09(金) 23:28:12
>>675
最後にreturn 0;するの忘れてた。
677デフォルトの名無しさん:2010/07/09(金) 23:45:55
30台もどうかとは思うが300、3000台にもなるとアホばかりで疲れるわ・・・
678デフォルトの名無しさん:2010/07/10(土) 00:17:05
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下の機能を持つプログラムを作ること。

-1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不
可)
-抽出した素数を大きい順(降順)にソートする
-ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する)

但し、以下の4つの機能を使ったプログラムにすること。
-サブ関数
-配列
-if文
-for文

以下の点に関して工夫をした場合は加点の対象とする

-素数の計算時間の低減
-見つけた素数の数のカウント
-ソートのアルゴリズム高速化
-実行時間の表示

作成したプログラムの特徴を提出時のコメントに記入すること
(素数の見つけ方、ソートの仕方、表示方法での工夫など)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010/07/23

初心者ですがよろしくお願いします。
679デフォルトの名無しさん:2010/07/10(土) 02:06:24
680名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:13:45
ソートはなんならクイッ クソート があるでおじゃる
681618:2010/07/10(土) 09:33:45
その他制限はありません。一通り学びましたが初心者です。
よろしくおねがいします
682名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:10:43
>>589
該当する関数をこれに置き換えると早くなる

int coin_func_r(int result[], int c[], int m, int n){
int i, num;
if(m<0 || result[m]==0) return -1;
if(result[m]>0) return result[m];
for(i=0;c[i]>0;i++){
num=coin_func_r(result, c, m-c[i], n+1);
if(num>0 && (result[m]<0 || result[m]>num+1)) result[m]=num+1;
}
if(result[m]<0) result[m]=0;
return result[m];
}

int coin_func(int c[], int amount){
int i, lcm_all=1, rest, c_max=1, *result, ret;
for(i=0;c[i]>0;i++){
lcm_all=lcm(lcm_all, c[i]);
if(c_max<c[i]) c_max=c[i];
}
result=calloc(lcm_all, sizeof(int));
for(i=0;i<lcm_all;i++) result[i]=-1;
for(i=0;c[i]>0;i++) result[c[i]]=1;
rest=amount%lcm_all;
coin_func_r(result, c, rest, 0);
ret=result[rest]+(amount-rest)/c_max;
free(result);
return ret;
}
683名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:24:32
>>511
ありがとうございます!
684名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:28:20
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
二つのint型整数の小さい方の値を返す関数
 int i_minof(int x, int y){ /* ... */}
を作成せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月12日まで

よろしくお願いします。
685名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:40:05
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
下に示すように、整数値を読み込んで、その値を0までカウントダウン
しながら表示するプログラムを作成せよ。なお、負の値を読み込んだ時は
何も表示しない(改行も表示せず終了する)ようにせよ。
=====
整数を入力してください:9
9 8 7 6 5 4 3 2 1 0
=====
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月12日まで

よろしくお願いします。
686名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:41:38
>>684
int i_minof(int x, int y){ return rand()&1?x:y; }
687名無しさん@そうだ選挙に行こう:2010/07/10(土) 11:41:06
>>684の訂正です。

[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
二つのint型整数の小さい方の値を返す関数
 int i_minof(int x, int y){ /* ... */}
を作成せよ。
=====
二つの整数を入力してください。
整数1:49
整数2:92
小さい方の値は17です。
=====
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月12日まで

よろしくお願いします。
688名無しさん@そうだ選挙に行こう:2010/07/10(土) 11:42:32
>>687
×小さい方の値は17です。
○小さいほうの値は49です。

何度も訂正すいません。
689名無しさん@そうだ選挙に行こう:2010/07/10(土) 12:21:49
>>687
int i_minof(int x, int y){
if(x<y){
return x;
}
else{
return y;
}
}
690689:2010/07/10(土) 12:24:03
補足すると
条件演算子を使えばもっと簡単になる

参考
ttp://www5c.biglobe.ne.jp/~ecb/c/05_08.html
691名無しさん@そうだ選挙に行こう:2010/07/10(土) 14:55:54
692名無しさん@そうだ選挙に行こう:2010/07/10(土) 17:55:41
>>691
ありがとうございます。
693名無しさん@そうだ選挙に行こう:2010/07/10(土) 18:01:33
【質問テンプレ】
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10799.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:[無期限]

お願いします。
694名無しさん@そうだ選挙に行こう:2010/07/10(土) 23:01:52
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、3つの色成分(Blue, Green, Red)に分離し、
それぞれを異なるファイルに保存するプログラムを実装しなさい。
プログラム中でやることは以下のことである。
1.ヘッダ部分を適切に読み込む
2.読み込んだヘッダ部分(ファイルヘッダ、情報ヘッダ)を用いて、適切なバイト数(画素数×1画素あたりのバイト数)を読んでくる。
3.分離したい色成分以外を0に書き換え、ヘッダ部分と色情報をファイルに書き込む。
ただし、以下のような構造体を使用する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10800.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月12日
[5] その他の制限:特にありません。よろしくお願いします。
695名無しさん@そうだ選挙に行こう:2010/07/11(日) 02:36:18
クイックソートのソースをとりわけ、クイックソースと言うでおじゃる
696名無しさん@そうだ選挙に行こう:2010/07/11(日) 10:40:06
【質問テンプレ】
[1] 授業単元:Visual C++ でのプログラミング演習
[2] 問題文(含コード&リンク):課題4.3.bをお願いします。http://www.dotup.org/uploda/www.dotup.org1020755.jpg
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 200
 [3.3] 言語:C++
[4] 期限:[無期限]
697名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:07:13
>>696
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10801.txt

動作例から推測するに、恐らく最小の整数ではなく最小の自然数を出力するのだろう。
(1+1/n)^n は n>0 で単調減少だから、二分探索で解を求める。
698697:2010/07/11(日) 11:12:36
単調減少ではなく、単調増加でした
699名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:14:30
> while 型繰り返し
> #include <stdio.h>
ん〜〜〜
700名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:26:33
>>696
C言語でかいた
#include<stdio.h>
#include<math.h>

int main(void){
int n = 0;
double fn;

while((fn=pow(1+1.0/n, n))<=2.71 || 2.72<=fn) n++;
printf("n = %d\n", n);

return (0);
}
701名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:41:33
math.hを使うことを宣言し マス! って言ってみたかった
702名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:53:54
>>697 さま
>>700 さま

有難うございました。無事解決できました。
また質問で申し訳ないのですが
while((fn=pow(1+1.0/n, n))<=2.71 || 2.72<=fn) n++;

while((fn=pow((double)(1+1/n), n))<=2.71 || 2.72<=fn) n++;
のようにdouble型にキャストをすると実行中にエラーが出るのですが何故でしょうか?
703700:2010/07/11(日) 11:56:42
>>702
ごめん
0 除算エラーだね

n の初期値を 0 から 1 に変更してちょ
704名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:59:42
>>702
n>=2 のとき
(double)(1+1/n)
は常に 1.0 になってしまうぞ
705名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:11:50
>>703
n=0→1でエラーはでなくなりました!
>>704
Googleさんで調べても分からなかったのですが
キャストするとなぜだめ(1.0になる)なのでしょうか・・・?
706名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:13:47
除数をキャストしてごらん。あるいはnをdouble型にする
707名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:33:26
>>706
割り算は整数だけではだめなのですね・・・。
最初から最後までご教授いただきありがとうございました。

#include <stdio.h>
double a = (double)1/2;
double b = 1/(double)3;
double c = 1/4;
printf("%f\n%f\n%f\n",a,b,c);

実行結果
0.500000
0.333333
0.000000
708名無しさん@そうだ選挙に行こう:2010/07/11(日) 16:02:06
インチをセンチに変換するプログラムを作れという課題が出たのですが、わかりません!
明日の1限までに仕上げなければならないので、大至急お願いします!
下のところまでは書けたのですが、???のところがわかりません。
定数を掛けるというところまでは想像出来るのですが、何を掛けたらいいのか全然想像付きません。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

double to_cm(double in)
{
    return in * ???;
}

int main(int argc, char *argv[])
{
    double in;
    char str[32];

    if (argc > 1)
    {
        strncpy(str, argv[1], 31);
    }
    else
    {
        printf("input inch: ");
        fgets(str, 31, stdin);
    }
    in = atof(str);
    printf("%f [in] = %f [cm].\n", in, to_cm(in));
    return 0;
}
709 ◆QZaw55cn4c :2010/07/11(日) 16:05:01
>>708
return in * 2.56

あと、
fgets(str, 31, stdin);

fgets(str, 32, stdin);
でいい。
710名無しさん@そうだ選挙に行こう:2010/07/11(日) 16:07:24
>>709
出来ましたああああ!!!!!!!!111
先週出た課題でずっと悩んでたんですがこれで提出できそうです!
あとプログラムの問題点まで指摘してくださってありがとうございました。

それから、次からはちゃんとテンプレを守ります。すみませんでした。
711709:2010/07/11(日) 16:08:05
>>708
失礼、
return in * 2.54;
だった。1 inch = 2.54 cm。
712名無しさん@そうだ選挙に行こう:2010/07/11(日) 16:43:25
ちなみに、12インチ=1フィート=30.48cm、3フィート=1ヤード=91.44cm
これ豆知識な。マイルの計算もしっかり出来ないと、参るぜ?
713名無しさん@そうだ選挙に行こう:2010/07/11(日) 16:45:13
∧_∧∩))
( ・∀・)彡   パーン!
  ((⊂彡☆∩  _, ,_
   ⊂(⌒⌒(;`Д´)
      `ヽ_つ ⊂ノ ←>>712
714名無しさん@そうだ選挙に行こう:2010/07/11(日) 16:50:16
>>713
まぁそうフィートアップするなよ
715名無しさん@そうだ選挙に行こう:2010/07/11(日) 17:11:59
パンパンパーン
  ∧_∧ ∩
 ( ・∀・)彡☆
   ⊂彡☆))Д´) >>714
       ☆
716名無しさん@そうだ選挙に行こう:2010/07/11(日) 18:26:12
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): http://imepita.jp/20100711/659870
画像のプログラムを下のEOFを探して処理を行う方法に書き換えてプログラムを実行せよ
また、input.dataの中身を10行未満にしても正常に動く事を確かめてみよ。

int counter=0;
while (!input_file.eof()){
input_file>>data[counter];
counter++
}

for(i=0;i<counter;i++)
output_file << data[i]*2 << '\n';

[3] 環境
 [3.1] OS: linux
 [3.3] 言語: C++
[4] 期限: ([2010年7月11日22時まで]
[5] その他の制限:
なるべく簡単にしてください。お願いします。
717名無しさん@そうだ選挙に行こう:2010/07/11(日) 18:29:40
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): http://imepita.jp/20100711/660110
画像のプログラムの九九表を以下の様に書き換えよ
1 画面に表示してた部分(coutの部分)をファイルに書き出す様にする
2 一番目のcoutにある''を','に変更する
3 出力ファイル名を"output.csv"とする。
この九九表が入っているファイルをExcelで読み込んで、九九表を見ることができるか確かめてみよ

[3] 環境
 [3.1] OS: linux
 [3.3] 言語: C++
[4] 期限: ([2010年7月11日22時まで]
[5] その他の制限:
なるべく簡単にしてください。お願いします。
718名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:19:51
719名無しさん@そうだ選挙に行こう:2010/07/11(日) 22:01:05
720名無しさん@そうだ選挙に行こう:2010/07/11(日) 22:46:43
[1]授業単元:プログラミング基礎
[2] 課題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10804.txt
[3] 環境:指定無し 言語C(なるべく)
[4] 9/1迄(夏期課題)
[5]意味がよくわからないので丸投げします
721名無しさん@そうだ選挙に行こう:2010/07/11(日) 23:08:44
>>719
ありがとうございます。でも、このプログラムをコンパイルしても、
続行するには何かキーを押してください
で終わってしまいます
722名無しさん@そうだ選挙に行こう:2010/07/11(日) 23:13:01
>>721
実行ファイルと同じところに、なにか新しいcsv ファイルが作成されていませんか?
723名無しさん@そうだ選挙に行こう:2010/07/11(日) 23:15:40
>>20 といい >>720 といい、変な傾向の宿題が出るようになったものですね。
724名無しさん@そうだ選挙に行こう:2010/07/11(日) 23:20:59
別に変でもないよ。処理の内面的な部分を知る課題だろ。
725名無しさん@そうだ選挙に行こう:2010/07/11(日) 23:25:41
仕様をもとにプログラムを作成する、というのがまっとうだと思うんですが。
判じ物の問題は、「プログラム基礎」とか「暗号理論」という単元名とは全然違うのでは。
726デフォルトの名無しさん:2010/07/11(日) 23:37:13
>>722
プログラムのコンパイルした時にExcelを開いておけばいいって事ですか
>>725
それいうなら結局誰も答えなかったみたいだけど
>>234とかがある意味最もC言語の宿題っぽいw(けど学校の宿題としては
やはり不適なんだろなw)
728デフォルトの名無しさん:2010/07/12(月) 00:04:27
>>722
実行ファイルと同じところに、Excelで保存したものがはいっているんですが、もしかしてそれですか
729デフォルトの名無しさん:2010/07/12(月) 00:14:16
誰か716の問を助けてください
730デフォルトの名無しさん:2010/07/12(月) 01:27:34
>>679
亀レスですみません
ありがとうございました
731 ◆QZaw55cn4c :2010/07/12(月) 02:39:35
>>716
単に指示通りにプログラムを入力しただけです。
http://codepad.org/73sQ9rsX
732デフォルトの名無しさん:2010/07/12(月) 02:58:38
>>725
何が言いたいのかさっぱり分からんが、プログラムを動かしている電子機器の
基本的な仕組みも知らないでコードを書くとか・・・どれも基本は同じだし。
IFや数値を扱うにしても、もう既に実装されているコンピュータの仕組みが
大きく関与しているし。
733デフォルトの名無しさん:2010/07/12(月) 03:01:15
>>732
>>20 >>720 のような出題を批判しているだけです。
734デフォルトの名無しさん:2010/07/12(月) 03:02:17
>>720
っつか、学んだ内容が分かればヒントが得られるかもしれないが・・・
法則が分からん。511までで何か数字を弄れば気づくかもしれんが。
735デフォルトの名無しさん:2010/07/12(月) 06:29:39
2進数にしたときに1の数が順番に増えていくのだけはわかった。
ソートの条件はさっぱりだが。
736デフォルトの名無しさん:2010/07/12(月) 07:07:43
>>694お願いします。。。
737デフォルトの名無しさん:2010/07/12(月) 08:16:55
順応性を高めなさい!そしてあるがままを受け止めなさい。
738デフォルトの名無しさん:2010/07/12(月) 10:12:44
実験(数値実験、確認、解析)
システムプログラミング(アプリケーション実装)
マネジメント(ネットワーク構築 etc)
開発(OS,言語、処理系、ライブラリの整備)
教育(カルチャーの紹介)
....まだあるかも

ことコンピュータの世界(実世界に非ず)の教育を
単一言語で行うことには相当無理があるよな
739デフォルトの名無しさん:2010/07/12(月) 10:34:43
そんなのだいたいCでやってるという現実。
740デフォルトの名無しさん:2010/07/12(月) 11:02:57
まアセンブラを言語と考えるのならこれ以上に万能な
言語は無いな
741デフォルトの名無しさん:2010/07/12(月) 11:03:01
だからCみたいな面倒な言語を経験しておけば他のスクリプト言語も
簡単に使えるという意図なんだろう
742デフォルトの名無しさん:2010/07/12(月) 11:05:00
お前らのCに対する意見、気持ちはよーく分かった。だから早く
初めてのCもしてこい、なっ!
743デフォルトの名無しさん:2010/07/12(月) 11:21:10
>>735
当たり前だろwww
744デフォルトの名無しさん:2010/07/12(月) 11:34:36
>>738
Cが他の言語に対して圧倒的に強いのは
開発
だろな
教育できるような世界じゃないだろうけど
745デフォルトの名無しさん:2010/07/12(月) 11:37:42
はい、Cなら色々と開発できます!
746デフォルトの名無しさん:2010/07/12(月) 11:40:07
Cは非プログラミング言語で言うと英語みたいなもんだよ。
言語設計が優れてるか否かというよりも(まぁ優れてはいるんだろうが)、
みんなが使って、長い間使ったから、デカイ顔できるし信頼も置ける。
747デフォルトの名無しさん:2010/07/12(月) 12:54:06
>>720
1 になっている bit の数を x とすると
x に対して昇順にするのが大前提

x%3==0 のとき数値で昇順
x%3==1 のとき数値で降順

x%3==2 のときが分からない
数値を昇順にソートし大きい方から使う

x=2 の場合だと逆順に見て
8 ? 7 ? 6 ? 5 ? 4 ? 3 ? 2 ? 1
こんな感じ

x=5 の場合だと逆順に見て
5 ? 4 ? 3 ? 2 ? 1 ? ? ? 4 ? 3 ? 2 ? 1 ? ? ? 3 ? 2 ? 1 ? ? ? 2 ? 1 ? ? ? 1 ? ? ?
こんな感じ
748デフォルトの名無しさん:2010/07/12(月) 13:18:12
>>720 >>747 の条件分岐 x%3==0 と x%3==1 のときだけ実装
#include<stdio.h>
#include<stdlib.h>
int bit_count(int value){
int ret=0;
while(value>0){
ret+=value&1;
value>>=1;
}
return ret;
}
int num_cmp(const int *a, const int *b){
int a_bits, b_bits, ret=0;
a_bits=bit_count(*a);
b_bits=bit_count(*b);
if(a_bits<b_bits) return -1;
if(a_bits>b_bits) return 1;
if(*a<*b) ret=-1;
if(*a>*b) ret=1;
if(a_bits%3==1) ret=-ret;
return ret;
}
int main(void){
int num[4096], i;
for(i=0;i<4096;i++) num[i]=i;
qsort(num, 4096, sizeof(int), num_cmp);
for(i=0;i<4096;i++){
if(bit_count(num[i])%3!=2) printf("%d:%d\n", i, num[i]);
else printf("%d:???\n", i); // よく分からないので数値を出力しない
}
return 0;
}
749デフォルトの名無しさん:2010/07/12(月) 13:40:45
1
乱数を使って計算機とじゃんけんをするゲームを作成せよ。
人間の入力はグーは0、チョ基は1、パーは2とし、勝ち、負け、引き分けの判定をすること。
乱数の初期設定のために srand((unsigned int)time(NULL)); を使うこと。

2
1を改良して0,1,2以外の値が入力されるまで繰り返し勝負を続けるものを作成せよ。

よろしくお願いします。
750デフォルトの名無しさん:2010/07/12(月) 17:20:04
751デフォルトの名無しさん:2010/07/12(月) 18:47:31
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10808.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:7月14日まで
[5] その他の制限:
お手数をおかけしますが、よろしくお願いします。
752デフォルトの名無しさん:2010/07/12(月) 18:53:30
>>751(1)

i = left - 1; //(1)________
j = right + 1; //(2)________
753デフォルトの名無しさん:2010/07/12(月) 18:57:22
>>751(2)
return a->height - b->height; // (1)______ /*高さで比較*/

qsort(a, N, sizeof(person_t), (int (*)(const void *, const void *))compare); // (2)___________________________);
754デフォルトの名無しさん:2010/07/12(月) 19:29:58

内容:
[1] 授業単元: プログラミング開発基礎
[2] 問題文 複数あるのでこちらで
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10809.txt
[3.1] OS:(Windows 
[3.2] VC 6.0
[3.3] 言語:C
[4] 期限:なし
[5] 制限:なし
毎週毎週申し訳ありませんがよろしくお願いします
755デフォルトの名無しさん:2010/07/12(月) 19:50:19
[1] 授業単元: 応用プログラミング
[2] 問題文(含コード&リンク): 任意のサンプル値(2のべき乗)を入力し、計算結果を出力する2次元FFTのプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: どちらでも可
[4] 期限: 7月17日まで

http://www.kurims.kyoto-u.ac.jp/~ooura/fftman/index.html
FFT、二次元FFTに関しては、上記のサイトの1.2、3.1を参考にしていたのですが、
入出力表示の仕方などが良く分からなかったので、よろしくお願いします。
756デフォルトの名無しさん:2010/07/12(月) 19:53:35
[1] 授業単元: ソフトウェア信頼性
[2] 問題文(含コード&リンク):
問題文+自分で作った部分は以下のファイルに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10810.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 2010年7月12日 24時
757デフォルトの名無しさん:2010/07/12(月) 21:14:47
758デフォルトの名無しさん:2010/07/12(月) 21:35:17
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):53!を正確に計算して出力するjavaプログラムを作成せよ。ここでは1桁
分の数を記憶するオブジェクトを多数作りそれらの協調で計算を進めること。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: c
[4] 期限: 7月13日

よろしくおねがいします 
759デフォルトの名無しさん:2010/07/12(月) 21:37:27
>>758
ちょっと何を言っているのかわからない
760デフォルトの名無しさん:2010/07/12(月) 21:53:46
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):3+6+9+12+・・・+n≧100の成立する最小のnの値と
               nがその値をとる場合の左辺の値(3〜nまでの和)を
               求めて表示するプログラムをdo-while文を使って作成せよ。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C言語
[4] 期限:2010年07月13日17:00まで
[5] その他の制限:問題文中にある制限以外に制限はありません。

どうかよろしくお願いします
761デフォルトの名無しさん:2010/07/12(月) 22:00:27
762デフォルトの名無しさん:2010/07/12(月) 22:02:40
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):53!を正確に計算して出力するjavaプログラムを作成せよ。1桁
分の数を記憶するオブジェクトを多数作り計算するプログラムにすること。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: c
[4] 期限: 7月13日

よろしくおねがいします
763デフォルトの名無しさん:2010/07/12(月) 22:05:40
うぜえな
764デフォルトの名無しさん:2010/07/12(月) 22:08:49
>>761
ありがとうございます
助かりました
765デフォルトの名無しさん:2010/07/12(月) 22:11:12
>>762が理解できないんだけど
766デフォルトの名無しさん:2010/07/12(月) 22:14:10
767デフォルトの名無しさん:2010/07/12(月) 22:14:16
>>758
>>762
C なのか JAVA なのか?
768デフォルトの名無しさん:2010/07/12(月) 22:19:49
>>767
問題文だけ読むとjava

環境だけを見るとcっぽい

あくまで推測ですが・・・
769760:2010/07/12(月) 23:02:37
>>766
ありがとうございました
770デフォルトの名無しさん:2010/07/12(月) 23:18:18
すみません、どなたか>>694お願いいたします。
771デフォルトの名無しさん:2010/07/12(月) 23:52:39
772 ◆QZaw55cn4c :2010/07/13(火) 01:05:09
>>694
http://codepad.org/xqiSFBEr
コマンドライン第一引数に対象となる bmp ファイルを指定すると、r.bmp, g.bmp, b.bmp を出力します。
24bit bmp ファイルにしか対応していません。そのほかのタイプの bmp ファイルに対応する必要があれば、ご連絡ください。
773デフォルトの名無しさん:2010/07/13(火) 02:02:59
そういえば、より汎用的なソースコードに書き換えた麻呂に負けた悔しさなのか
素人麻呂相手に必死にに噛み付いていたあいつはどこへ行ったんだろうか?
774デフォルトの名無しさん:2010/07/13(火) 02:19:51
>>773
そのより汎用的なソースとやらを教えてくださいな。
775デフォルトの名無しさん:2010/07/13(火) 02:24:58
こんな時間に釣れるとは思わなかったよ、麻呂と勘違いして意味不明な
戻り値の話をしちゃったおバカさんw
776 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄:2010/07/13(火) 02:35:36
   /二__,--、r'"___、 ヾト、.ヽ
レ'"~,-,、 !  ! ' '" ̄ .ノ\ヾ:、
K/ー'~^~_/  ヽミ:ー‐‐'"  ヽ i
!〉ー―'"( o ⊂! ' ヽ  ∪ Y」_  
i ∪  ,.:::二二ニ:::.、.      l 、...
!    :r'エ┴┴'ーダ ∪   ! !l
.i、  .  ヾ=、__./      ト=. 
ヽ 、∪   ― .ノ     .,!  
777デフォルトの名無しさん:2010/07/13(火) 02:36:43
またおまえかよ。。。
コテつけろよ>>775
778デフォルトの名無しさん:2010/07/13(火) 02:45:16
【質問テンプレ】
[1] 授業単元:画像処理プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10814.zip
画像を8×8 画素のブロックに分割します。各ブロック毎に平均値を求めます。
※average という関数を作ってブロック内の平均値を求めても良いでしょう。
ブロック内の画素すべての輝度値を平均値で置き換えます。どのような画像が得られますか?
8×8画素のブロックサイズでモザイク処理を行うプログラムと、モザイク処理後の画像を提出しなさい。
[3] 環境
[3-1] OS:Windows
[3-2] VC 2008
[3-3] 言語:C言語
[4] 期限: 7/13 13時がリミット
[5] その他の制限: getPixelは使わない方法で現状のコードを変更した程度で完成できればベストです。
779デフォルトの名無しさん:2010/07/13(火) 04:14:26
lennaたん、かわいいよ、lennaたん
780デフォルトの名無しさん:2010/07/13(火) 05:39:44
>>750
ありがとうございます。
781デフォルトの名無しさん:2010/07/13(火) 08:53:35
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
いっぱいあります。
[3] 環境
[3-1] OS:Windows
[3-2] VC 2008
[3-3] 言語:C言語
[4] 期限: 7/20
お願いします。
782デフォルトの名無しさん:2010/07/13(火) 09:08:53
1*3*5*7*9*・・・*111を11で割った剰余を求めよ
783デフォルトの名無しさん:2010/07/13(火) 09:51:05
 A=1*3*5*7*9
 B=13*・・・*111
とおくと、
与式は
 A*11*B
と書ける。
これは 11 で割り切れる。
つまり、題意の剰余は 0 。
784デフォルトの名無しさん:2010/07/13(火) 11:32:47
[1] 授業単元:プログラミング演習III
[2] 問題文(含コード&リンク):
以下の機能を含む整数版秀丸エディタ用のDLLを作成せよ。
・返り値がint型で、パラメータ(整数)を渡すと、「整数*5」の結果を返す。
・返り値がchar型で、パラメータ(文字列)を渡すと、文字列の先頭にHello!!を付けた「Hello!!+文字列」の結果を返す。
以下のサイトも参考にする事。
http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.html
[3] 環境
 [3.1] OS:Windows 32bit
 [3.2] コンパイラ名とバージョン: Visual C++ 2010 Express
 [3.3] 言語:C++
[4] 期限: 2010/07/14 10:40
[5] その他の制限: なし
785デフォルトの名無しさん:2010/07/13(火) 12:28:53
>>762は環境はcですが、問題はjavaです。

どうかよろしくお願いします。
786デフォルトの名無しさん:2010/07/13(火) 13:57:12
コンピュータ基礎1
OS windows7 32bit
gcc2.9.5
言語 c
期限 なし
課題でいくつかc言語の課題が出て、本当に簡単なのは何とか解いたのですが2つほど分からないものがあったので
よろしければ教えていただきたいです。

@キーボードから1つの実数値xを入力し、絶対値を表示するプログラムを作りなさい

Aキーボードからテストの得点m(0以上100以下)を入力し
(1) m<60 の場合は「不合格」
(2) 60≦m<80 の場合は「普通」
(3) 80≦m の場合は「優秀」
と表示するプログラムを作りなさい。
787デフォルトの名無しさん:2010/07/13(火) 14:09:43
>>786

48 名前:デフォルトの名無しさん[sage] 投稿日:2010/07/13(火) 14:00:23
>>46
int main() {
double x;
scanf("%lf", &x);
printf("%f\n", fabs(x));
}

int main() {
int m;
scanf("%d", &m);
printf("%s\n", m < 60 ? "不合格" : m < 80 ? "普通" : "優秀");
}

転載
788デフォルトの名無しさん:2010/07/13(火) 15:12:30
[1] 授業単元:プログラミング演習I
[2] 問題文(含コード&リンク):
課題
(1000以下の完全数)正整数kが等式
   k=(kの約数の内、k以外のものの総和)
を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2010/07/14
[5] その他の制限: 環境はcですがjavaの問題です。

お願いします。
789デフォルトの名無しさん:2010/07/13(火) 15:44:30
それ自身を含まない約数を足してイークォールか比較すりゃええがな
俺はメルセんヌ素数を使うけど
790デフォルトの名無しさん:2010/07/13(火) 16:28:51
以下の入力をして、これを二次元配列に代入していく方法がわかりません。
当方scanf+Enterによる単純な入力しかしたことがありません。
空白を認識して代入先を変える方法?と考えて手が止まりました。

/*以下入力*/
3 /*変数int nへ代入する。今から3*3行列を入力するという意味*/
3 5 7
2 5 8
6 8 1
/*入力ここまで*/

for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d ", a[i][j]);
}printf("\n");
}printf("\n");
の結果は上記の
3 5 7
2 5 8
6 8 1
を表示するように二次元配列aに代入する。
791790:2010/07/13(火) 16:31:19
テンプレ忘れ
[1] 授業単元:プログラミング
[2] 問題は>>790
[3] 環境
 [3.1] OS: Windows
 [3.2] Visual C++ 2008
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 入力はscanfにこだわらなくても良いですが、なるべく単純にお願いします。
792デフォルトの名無しさん:2010/07/13(火) 18:13:07
>>790
#include <stdio.h>
#define loop(i,n) for (i = 0; i < n; i++)

int main(void)
{
    int i, n, j, a[10][10];

    printf("n=");
    scanf("%d", &n);
    for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
    scanf("%d", &a[i][j]);
    for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
    printf("%d ", a[i][j]);
printf("\n");
    }
    printf("\n");

    return 0;
}
793 ◆QZaw55cn4c :2010/07/13(火) 18:38:51
>>694
バグがありましたので修正いたします。
http://codepad.org/es0chPgG
794 ◆QZaw55cn4c :2010/07/13(火) 18:46:36
>>778
>>694 と並行して作成しておりました。とりあえずできているものをあげておきます。
>>778 に示されているソースコードに沿って書き直す作業は、余裕があれば行います。

第一引数にターゲットとなる bmp ファイル名、第二引数に平均化した bmp ファイル名を指定します。
入力ファイルとしては、256色 bmp と 24ビット bmp に対応しています。出力ファイルは 24ビット bmp です。
http://codepad.org/M7WwUgUS
795デフォルトの名無しさん:2010/07/13(火) 18:47:54
>>775
汎用的なソースとやらは、実は無いんですね。
796デフォルトの名無しさん:2010/07/13(火) 19:07:59
>>792
どうもありがとうございました。
797デフォルトの名無しさん:2010/07/13(火) 19:46:44
>>788
>>785 も同一人物だとしたら頭の中身がどこかから漏れてないか?
798デフォルトの名無しさん:2010/07/13(火) 20:14:14
>>785
> >>762は環境はcですが、問題はjavaです。
完成ソースをコンパイルする時のコマンドは、gcc、javacのどっち?
799デフォルトの名無しさん:2010/07/13(火) 21:48:50
800デフォルトの名無しさん:2010/07/13(火) 22:18:55
801デフォルトの名無しさん:2010/07/13(火) 22:52:55
【質問テンプレ】
[1] 授業単元: 計算機プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10819.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C
[4] 期限:7/24
[5] その他の制限: なし
電気電子系の問題です。
よろしくお願いします
802デフォルトの名無しさん:2010/07/13(火) 23:10:48
[1] 授業単元:オペレーティングシステムプログラミング演習
[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10820.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2010年7月15日17:00まで
[5] その他の制限:特にありません

よろしくお願いします
803デフォルトの名無しさん:2010/07/13(火) 23:27:12
>>800
ありがとうございます
804デフォルトの名無しさん:2010/07/13(火) 23:28:45

             / ̄\
            │34nm |
             \_/    インテル!
             _|_|_
       n:     /      \    n: 
       ||   /         ヽ    ||   
      f「| |^ト  |   :::\::/:::   |  「| |^|`|  エーーックス
      |: ::  ! }  | <(゚)>::::<(゚)> |  | !  : ::}   ニジュウゴ
      ヽ  ,イ  ヽ  (__人__) /  ヽ  ,イ     エーーーッムッッ!
            \ `⌒´ /
805デフォルトの名無しさん:2010/07/13(火) 23:37:07
>>798 javacです。
よろしくお願いします。
806デフォルトの名無しさん:2010/07/14(水) 00:13:03
807デフォルトの名無しさん:2010/07/14(水) 00:30:21
>>806
ファイルが消えてるみたいで
あつかましいのですが、もう一度あげていただくことは出来ないでしょうか
808デフォルトの名無しさん:2010/07/14(水) 00:35:30
>>795
単にマクロで求める数値を適当に変えられる仕様にしただけであって
大して改変はしていなかったしw
809デフォルトの名無しさん:2010/07/14(水) 00:55:05
810デフォルトの名無しさん:2010/07/14(水) 00:58:36
>>809
すいません、ありがとうございます
811デフォルトの名無しさん:2010/07/14(水) 01:00:16
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1025743.jpg
[3] 環境
 [3.1] OS: (Windows vista
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限: 特になしです。

よろしくお願いします。
812デフォルトの名無しさん:2010/07/14(水) 01:02:15
AKB48の篠田と板野が好きです、けど
モー娘。の石川梨華はもっと好きです。
813デフォルトの名無しさん:2010/07/14(水) 01:18:57
>>752>>753ありがとうございました!
814デフォルトの名無しさん:2010/07/14(水) 01:59:24
815デフォルトの名無しさん:2010/07/14(水) 03:28:55
[1] C言語プログラミング演習
[2] 問題文

name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ.また,その配列に対して値を入力し,
さらに表示できるようにせよ.構造体のメンバ値を表示するには、ひとつの構造体の各メンバの値を表示する関数を作成すること。


% ./bodyData
1人目のデータ: 立命太郎 175.5 A
2人目のデータ: 野路花子 169.0 B
3人目のデータ: 衣笠一郎 180.4 O
4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
名前 身長 血液型
立命太郎 175.5 A
野路花子 169.0 B
衣笠一郎 180.4 O
%

ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参考12.1に示されたfgets()関数で、これらを1度に取り込み、最初の空白までを名前とみなし、次の空白までを身長とみなし、
次に改行までを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や浮動小数点数に変換し、構造体のメンバに設定すること。

ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡すことを繰り返えせばよい。


[3] 環境
 [3.1] OS: (Windows vista
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限: 実行結果までできれば表示してほしいです
816デフォルトの名無しさん:2010/07/14(水) 03:48:45
>>806
ん、例の出したり引っ込めたりか‥‥‥。
817デフォルトの名無しさん:2010/07/14(水) 03:49:02
くせぇくせぇ、麻呂のクソースの臭いがぷんぷんすんぜっ
818816:2010/07/14(水) 03:50:48
失礼。
819デフォルトの名無しさん:2010/07/14(水) 03:58:00

[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
整数を各要素の値とする、2つの2次元ベクトルが与えられたときに、それらの内積を計算する関数innerProduct()を使って、この2つのベクトルが直行しているかどうかを判定するプログラムを作成せよ。

2つの2次元ベクトル U(ux,uy)とv(vx,vy) の内積は,
ux × uy + vx + vy
で計算でき、2つのベクトルが作る角度は、
内積が正なら90°より小さく 内積が0なら 90° 内積が負なら90°より大きい
この考え方は3次元のベクトルでも同じである。上記のプログラムを、3次元のベクトルにも対応したものにすぐに修正できるようにするには、マクロを使うことが有効である。
どのようにすればよいかを考えよ。
2次元の場合
% ./innerProduct
input u[0]: 2 input u[1]: 6 input v[0]: 9input v[1]: -1
u=[ 2 6 ], v=[ 9 -1 ]
inner product is 12
The angle of the vectors is less than 90 degree.
%
3次元の場合
% ./innerProduct
input u[0]:input u[1]: 1input u[2]: 2input v[0]: 6input v[1]: 3input v[2]: -2
u=[ 0 1 2 ], v=[ 6 3 -2 ]
inner product is -1
The angle of the vectors is greater than 90 degree.
%
[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 特になし
820デフォルトの名無しさん:2010/07/14(水) 04:00:27
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
標準入力から正の整数値を読み込み,0が入力されたらそれらの整数を小さい順に表示するプログラムを作成せよ.

以下のような処理の流れでプログラムを作成すること。

数字を読み込むごとに, それまでに入力された数値が格納された配列の最後の要素から, 先頭に向かって順に大小の比較を行う. これにより、読み込んだ数字の方が入るべき位置がわかる.
読み込んだ数字が入るべき箇所を空けるために、 既に記憶されている配列の要素のうち、 この数字よりも大きな数字をひとつ後ろにずらす。 空いた箇所に読み込んだ数字を代入する.
次に入力される数字の処理へ移る.

% ./ordering
正整数: 17
正整数: 3
正整数: 9
正整数: 4
正整数: 0
入力された整数は小さい順に 0, 3, 4, 9, 17 です.
%
[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 特になし
821デフォルトの名無しさん:2010/07/14(水) 04:08:05
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
文字列yを文字列xの最後に連結する関数stringcat(char [], char [])を作成せよ.この関数を用いて、入力された2つの文字列を連結するプログラムを作成せよ。

注意: stringcat()を呼び出すときは,連結後の文字列がxの配列長を超えないように注意すること.


% ./catenate
文字列x (20字まで)? linux
文字列y (20字まで)? kadai
連結後のx: linuxkadai ←全部で20字以内なので連結可能
20字を超える場合は連結不可能とする
[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 特になし


822デフォルトの名無しさん:2010/07/14(水) 04:13:00
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
文字列xに文字列yが含まれるかどうかを判定する関数str_comp(char [], char [])を作成せよ.この関数を用いて、入力されたひとつめの文字列にふたつめの文字列が含まれているかを判定するプログラムを作成せよ。


% ./compare
文字列x (64字まで)? kadaigakitui
文字列y (64字まで)? dai
"kadaigakitui"に"dai"は含まれます.

% ./compare
文字列x (64字まで)? kadaigakitui
文字列y (64字まで)? ycx
"kadaigakitui"に"ycx"は含まれません.

[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 特になし

823 ◆QZaw55cn4c :2010/07/14(水) 04:34:26
824デフォルトの名無しさん:2010/07/14(水) 05:16:06
fgets△〜
825デフォルトの名無しさん:2010/07/14(水) 07:15:41
826デフォルトの名無しさん:2010/07/14(水) 08:02:12
827デフォルトの名無しさん:2010/07/14(水) 08:33:18
>>814
ありがとうございました
助かりましたっ!
828デフォルトの名無しさん:2010/07/14(水) 09:01:59
829デフォルトの名無しさん:2010/07/14(水) 09:45:18
for(j = i; j > 0 && n < a[j - 1]; j--) a[j] = a[j - 1];
a[j] = n;
ってやるのが普通。
830デフォルトの名無しさん:2010/07/14(水) 09:47:42
普通(笑) お前がそう思うんならそうなんだろう、お前ん中では
831デフォルトの名無しさん:2010/07/14(水) 09:54:41
>>829 クソースを推敲したならお主が纏めて記述したのを提出するでおじゃるよ
832デフォルトの名無しさん:2010/07/14(水) 09:57:22
いやよ、久々にこのスレを覗いたんだが、相変わらず毎年過去に出されたのと
似たようなものばっかでさ。たまには捻くれてクソースにしたくなるじゃん。
俺の勝手だがw
833デフォルトの名無しさん:2010/07/14(水) 11:02:31
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
リストへの要素の追加を行うプログラムで、以下のプログラムを完成させよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10828.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月18日まで
[5] その他の制限:特にありません。よろしくお願いいたします。
834デフォルトの名無しさん:2010/07/14(水) 12:58:43
835デフォルトの名無しさん:2010/07/14(水) 13:46:10
慣れないボイン太なんて使うもんじゃ〜ないなw
836デフォルトの名無しさん:2010/07/14(水) 13:49:53
麻呂ならそこで malloc (麻ー呂っく)でおじゃる!
837 ◆jPpg5.obl6 :2010/07/14(水) 15:20:01
[1] 授業単元:プログラミング
[2] 問題文
二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と加算(+)のみで解くプログラムを作成しなさい。

ヒント:例えば、123 x 13は以下のように計算できる。

123 x 13 = 123 x (2^3 + 2^2 + 1)
= 123 x 2^3 + 123 x 2^2 + 123
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:18日
[5] その他の制限:特になし
お願いします
838デフォルトの名無しさん:2010/07/14(水) 16:14:10
#include <stdio.h>

int main(void)
{
int a, b, c;

scanf("%d%d", &a, &b);

for(c = 0; b; b >>= 1, a <<= 1) if(b & 1) c += a;

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

return 0;
}
839デフォルトの名無しさん:2010/07/14(水) 16:45:32
シフト演算の組合わせと 除算(/) と加算(+)のみで
840デフォルトの名無しさん:2010/07/14(水) 17:02:03
[1] 授業単元:プログラミング演習I
[2] 問題文(含コード&リンク):
課題
(1000以下の完全数)正整数kが等式
   k=(kの約数の内、k以外のものの総和)
を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C

どうかよろしくお願いします。連投すみません。

どなたかわかる方お願いします
841デフォルトの名無しさん:2010/07/14(水) 17:26:44
だから後は自分でJavaの中に例の数式と答えを表示するように
書き換えれば良いじょのいこ?w
842デフォルトの名無しさん:2010/07/14(水) 17:30:51
test
843デフォルトの名無しさん:2010/07/14(水) 17:33:57
examin
844デフォルトの名無しさん:2010/07/14(水) 17:39:13
> 6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
>  [3.2] コンパイラ名とバージョン: gcc
>  [3.3] 言語:C

何度も何度も何度も何度もこのクソ野郎(#^ω^)ピキピキ
845デフォルトの名無しさん:2010/07/14(水) 17:41:35
>>840
もしかしてJNI使えってこと?
846デフォルトの名無しさん:2010/07/14(水) 17:41:45
【質問テンプレ】
[1] 授業単元:プログラム演習2
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10831.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語:C
[4] 期限: ([2010年07月15日10:00まで]
[5] その他の制限: 特になし
1問目はできたのですが、2問目以降で手詰まり状態です。
どうかよろしくお願いします。
847デフォルトの名無しさん:2010/07/14(水) 17:46:44
どいつもこいつも、麻ー呂っクソースを書けと言うのでおじゃるかっ!?
848デフォルトの名無しさん:2010/07/14(水) 18:44:34
>>836
本当に使えるのかみてみたいもの
849 ◆QZaw55cn4c :2010/07/14(水) 18:45:25
850デフォルトの名無しさん:2010/07/14(水) 19:20:05
>>847
書けるのか?
851デフォルトの名無しさん:2010/07/14(水) 19:20:57
実数xを入力し、xの平方根を計算するプログラムを作りなさい。平方根は次のアルゴリズムで計算されるものとする。 動作例(1回実行) x = 2 2.000000の平方根は1.414207
(1) a = 0.0、b = xとし、c = ( a + b ) / 2.0を計算する。
(2) c2 < x ならばa = c、そうでなければb = cとし、計算を繰り返す。
(3) b – aが収束値0.00001以下になったときのcを平方根とする。
プログラムヒント:実数の型はfloatもしくはdoubleを用いること。整数を入力するにはatoi関数を使ったが、実数を入力するにはatof関数を使う。
これお願いします。
852デフォルトの名無しさん:2010/07/14(水) 20:40:08
>>851
#include <stdio.h>
#include <stdlib.h>

int main(void){
    double n, a = 0, b, c, eps = 0.00001;
    char s[10];

    printf("n=");
    scanf("%s", s);
    b = n = atof(s);
    while (b - a > eps) {
        c = (a + b) / 2;
        if (c * c - n > 0)
            b = c;
        else
            a = c;
    }
    printf("x=%d %lf の平方根は %lf\n", (int) n, n, c);

    return 0;
}
853デフォルトの名無しさん:2010/07/14(水) 21:49:28
854 ◆QZaw55cn4c :2010/07/14(水) 23:02:40
>>846
http://codepad.org/sgfglU2M
http://codepad.org/pFzcMv8p
http://codepad.org/YsgrjGUC
http://codepad.org/c6QHeq6J

個人的には、
typedef struct node *String
にしてほしかったと痛烈に感じました。
強引なキャストを使ってしまいました。
855 ◆QZaw55cn4c :2010/07/14(水) 23:18:49
856デフォルトの名無しさん:2010/07/15(木) 00:41:03
C(英文解析プログラム)

1.標準入力から単語を読み込み、単語を登録する。("EOR"という単語が入力されるまで繰り返す)
2.その後、標準入力から指定された単語に対して、その単語が登録されているか否かを出力する。

/*****要実装******/の部分を実装して上の動作をするプログラムに完成させてください。

http://codepad.org/npgTugA0
857デフォルトの名無しさん:2010/07/15(木) 04:13:57
>>757 ありがとうございます
858デフォルトの名無しさん:2010/07/15(木) 05:55:36
>>793
画像ファイルは1画素あたり24bitのファイルなのですが、ターミナルに
display r.bmp
などと入力すると
display: Length and filesize do not match (r.bmp).
と出てしまいます。
859デフォルトの名無しさん:2010/07/15(木) 07:17:14
完全数を求める数式を記述するのはそう難しいことではない。
その数式だって、言語が違っても基本は共通しているだろ?
変数の扱いに差はあるけど。Javaで求めている人は、スレ違いだが
自分で基本部分くらい作れるだろ?
860 ◆QZaw55cn4c :2010/07/15(木) 08:04:52
>>858
こちらの手元の環境(Vine Linux 4.2) では、再現しませんね。
>>1 のアップローダーに
1) もとの(3色の)ビットマップファイル
2) 生成された r.bmp
をアップロードして、URL をお伝えください。
861デフォルトの名無しさん:2010/07/15(木) 09:49:39
>>852
ありがとうございます。
862デフォルトの名無しさん:2010/07/15(木) 10:12:25
カレンダー算出プログラム、こいやー!
863デフォルトの名無しさん:2010/07/15(木) 10:32:06
>>862
旧暦との対応を示した今月のカレンダーを表示せよ
みたいなのか?
864デフォルトの名無しさん:2010/07/15(木) 11:02:27
>>860
投稿しようとしても、
cgi-lib.pl: Request to receive too much data: 361023 bytes
と出てしまい、投稿できません…
865 ◆QZaw55cn4c :2010/07/15(木) 12:29:40
>>864
>>1 では容量オーバーでしたね。失礼しました。
では、適当なアップローダーを使っていただけませんでしょうか。

私が試したものは、
http://www.dotup.org/

です。ダウンロードキーは指定しないようにしてください。
またダウンロード URL を忘れずに、お知らせください。

変換がうまくいかない bmp 元ファイルと、出力ファイル r.bmp をお願いいたします。
866 ◆QZaw55cn4c :2010/07/15(木) 12:32:05
>>864
あと、誤りを訂正いたしました。
これで試してみてください。
http://codepad.org/aEItIH4p
867デフォルトの名無しさん:2010/07/15(木) 12:46:16
868デフォルトの名無しさん:2010/07/15(木) 13:27:42
>>222
有難うございました!
869デフォルトの名無しさん:2010/07/15(木) 14:07:23
お手上げなので助けてください。

[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10833.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語:C
[4] 期限:2010/07/19 23:59まで
[5] その他の制限:OpenCV使用可。その他制限は無し。

よろしくお願いします。
870GK:2010/07/15(木) 15:04:07
プロギラミング技術は苦手なので教えてください。
演習5-1

テキストファイルの各行の最後には,復帰・改行を示すASCIIコードが付加されている.即ち,ファイルのもつ行数は復帰・改行の数をカウントすることによって計算できる.

上記性質を利用して,テキストファイルの行数を計算するプログラムを開発せよ.但し,復帰・改行に対応するASCIIコードは10である.

テキストファイルの読み込み方法は講義資料でも解説したように,./a.out < hoge.txtとすればよい.
871デフォルトの名無しさん:2010/07/15(木) 15:09:40
ほげぇ〜〜
872デフォルトの名無しさん:2010/07/15(木) 15:23:19
【質問テンプレ】
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
http://files.uploadr.net/0cc81c1342/1.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:どちらでも可
[4] 期限:なし。
[5] その他の制限:<stdio.h>と<stdlib.h>以外のヘッダファイルを使用しないこと。
これお願いします。
873デフォルトの名無しさん:2010/07/15(木) 15:37:25
>>872
#include <stdio.h>
int main(void) {
int i,j,k,n;
printf("Input n > ");
scanf("%d",&n);
for(i=1; i<=n; i++) {
for(j=n-i; j>0; j--) putchar(0x20);
for(k=2*i-1; k>0; k--) putchar('*');
putchar('\n');
}
return 0;
}
874デフォルトの名無しさん:2010/07/15(木) 15:51:06
>>872
ありがとうございます。

もうひとつお願いなのですが、
>>871と同じ実行結果が表示されるプログラムをwhile文のみを使ってお願いします。
875デフォルトの名無しさん:2010/07/15(木) 15:51:52
>>870
#include <stdio.h>
int main(void) {
char ch;
unsigned cnt=0;
do{
ch=getchar();
if(ch=='\n') cnt++;
}while(ch!=EOF);
printf("%u行\n",cnt);
return 0;
}
876デフォルトの名無しさん:2010/07/15(木) 15:52:33
>>874 ほげぇ〜〜 って表示すれば良いの!?
877デフォルトの名無しさん:2010/07/15(木) 16:00:48
>>876
すいません間違えましたwww
>>872>>873の間違いで、>>871>>872の間違いです。
すみません。
878デフォルトの名無しさん:2010/07/15(木) 16:20:20
n個の文字列を読み込んだあと,その文字列を反転させるプログラムを作成せよ.ここで"反転"とは,例えば,"IKUNO"という文字列を入力した場合,出力を "ONUKI"と出力するものである.

【実行例】

nを入力せよ:2
1個目の文字列を入力せよ:nagata
反転した文字列は:atagan
2個目の文字列を入力せよ:ikuno
反転した文字列は:onuki

よろしくお願い致します。
879デフォルトの名無しさん:2010/07/15(木) 16:23:02
880デフォルトの名無しさん:2010/07/15(木) 17:13:44
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

関数u(x,y)は、0<x<1,0<y<1の範囲のあらゆる点で方程式

(∂^2)*u/(∂*x^2)+(∂^2)*u/(∂*y^2)=2(x^2+y^2)


を満たし、境界上でu(0,y)=u(x,0),u(1,y)=y^2,u(x,1)=x^2である。
この差分方程式を用いてu(x,y)を求め、キーボードから入力した
指定座標の値を表示するプログラムを作成せよ。
刻み幅は0.05とする(キーボードから入力する値はこの倍数とする)。


[3] 環境
 [3.1] OS: (Windows/Linux/等々) vista
[4] 期限:7月20日
881デフォルトの名無しさん:2010/07/15(木) 18:21:59
[1] 授業単元:プログラミング演習I
[2] 問題文(含コード&リンク):
課題
(1000以下の完全数)正整数kが等式
   k=(kの約数の内、k以外のものの総和)
を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C

どうかよろしくお願いします。連投すみません。

どなたかわかる方お願いします
882 ◆QZaw55cn4c :2010/07/15(木) 18:34:45
>>694
>>867
私の環境(Vine Linux 4.2) では、送っていただいた元ファイルを用いても現象は再現されませんでしたが、
一点気になるところがあり、それを踏まえてプログラムを修正いたしました。
http://codepad.org/t5uaBaLd

いかがでしょうか?
883デフォルトの名無しさん:2010/07/15(木) 18:36:16
884デフォルトの名無しさん:2010/07/15(木) 19:16:52
>>879
ありがとうございます。
885デフォルトの名無しさん:2010/07/15(木) 19:26:17
>>884 見てたら訂正しておいて。
while(i++<n) {
より上に i の初期値を書いてなかった。i=0; で
886デフォルトの名無しさん:2010/07/15(木) 19:40:31
887デフォルトの名無しさん:2010/07/15(木) 19:45:45
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
fgets() を使って50文字以下の文字列を入力し,文字列中の各
文字の出現回数を数えるプログラムを作成せよ。
実行例
文字列は? abcdef,abb(ccc110)
a : 2
b : 3
c : 4
d : 1
e : 1
f : 1
, : 1
( : 1
1 : 2
0 : 1
) : 1
[3] 環境
 [3.1] OS: Vine Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:7月20日

よろしくおねがいします
888デフォルトの名無しさん:2010/07/15(木) 20:33:28
>>887
#include <stdio.h>
#define N 50
#define M 256

int main(void){
  char buf[N + 1];
  int cnt[M] = {0}, i;

  printf("input string:");
  fgets(buf, N, stdin);
  for (i = 0; buf[i] != '\n'; i++)
    cnt[buf[i]]++;
  for (i = 0; i < M; i++)
    if (cnt[i] > 0)
      printf("%c:%d\n", i, cnt[i]);

  return 0;
}
889デフォルトの名無しさん:2010/07/15(木) 20:41:43
>>882
できました。ありがとうございました!
890デフォルトの名無しさん:2010/07/15(木) 20:45:51
[1]プログラミング1

[2]課題:C言語による「High and Low」のゲーム作成
http://www.dotup.org/uploda/www.dotup.org1028847.txt.html
テキストファイルに詳細を書き留めました

[3] 環境
 [3.1] Windows
 [3.2] gcc
 [3.3] C
[4] 今月の21日まで
891 ◆QZaw55cn4c :2010/07/15(木) 21:45:23
>>889
お手数をおかけしました。
bmp ファイルの中に、bmp ファイルサイズそのものをセットしておく項目(プログラムでは bfSize にあたります)があります。
ビュアによっては、bfSize の値が bmp ファイルの実際のファイルサイズと一致していない場合には、エラーを出すものがあるんですね。
不幸なことに、私の環境のビュアは、どれも、bfSize の値には頓着しないものばかりだったようです。
892デフォルトの名無しさん:2010/07/15(木) 21:48:09
>>731
cellってcoutでもいいですか?
あと、コンパイルしても、
入力ファイルをオープンできませんでした
と出て終わってしまうんですが…
893 ◆QZaw55cn4c :2010/07/15(木) 22:16:34
>>892
仕様は問題文にしたがったつもりです。つまり、
"input.data" というファイルがプログラムと同じディレクトリになければ、
プログラムがエラーメッセージ "cannot open the input file." を画面に出力します。

cerr のかわりに cout としてもいいでしょう。厳密には意味が異なるのではありますが。
894デフォルトの名無しさん:2010/07/15(木) 22:22:48
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10836.txt[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月16日まで
[5] その他の制限:int main(void){から始まる
895デフォルトの名無しさん:2010/07/15(木) 22:23:36
896デフォルトの名無しさん:2010/07/15(木) 22:28:47
897デフォルトの名無しさん:2010/07/15(木) 22:39:22
898デフォルトの名無しさん:2010/07/15(木) 22:47:17
>>893
ごめんなさい。input.dataってどこから作ればいいんでしょうか…
899デフォルトの名無しさん:2010/07/15(木) 22:53:00
>>898
Windows のメモ帳にあたるものは、linux ではなんでしょうかね。
とにかく、エディタで
1
3
5
6
7
とか適当な内容で、ファイル名が "input.data" のファイルをつくってください。
900デフォルトの名無しさん:2010/07/15(木) 23:04:08
エディタが分からないわけはないはずだが。。。
hello worldどうやって書いたんだって話になっちゃう
901デフォルトの名無しさん:2010/07/15(木) 23:10:26
>>899
という事はlinuxが無いとできないって事ですか…
902デフォルトの名無しさん:2010/07/15(木) 23:13:48
自分でOSにLinuxに書いておきながら何いってんだ?
903デフォルトの名無しさん:2010/07/15(木) 23:14:43
家にlinux環境がないってこと?
学校の演習PCがlinuxってことか
904デフォルトの名無しさん:2010/07/15(木) 23:15:28
>>903
家にlinux環境がなくて、
学校で出た課題なんですが…
だから、linuxがないんです。
905デフォルトの名無しさん:2010/07/15(木) 23:16:18
>>902
すみません。学校ではlinux使ってて、家では、Visual C++を使っているんです。
906デフォルトの名無しさん:2010/07/15(木) 23:24:47
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://www1.axfc.net/uploader/File/so/47576 
                 問題が複数あります
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C
[4] 期限: 7/17(土)早いだけありがたいです
[5] その他の制限: なし
お手数をおかけしますがよろしくお願いします。
907887:2010/07/15(木) 23:53:53
>>888

ありがとうございます
908デフォルトの名無しさん:2010/07/15(木) 23:55:43
>>719
>>717の問題でプログラムで出力は、cout→streamになるんでしょうか?
普段は出力はcoutなんですが
909デフォルトの名無しさん:2010/07/15(木) 23:58:05
>>905
メモ帳で実行ファイルと同じフォルダに。
910デフォルトの名無しさん:2010/07/16(金) 00:11:59
>>909
メモ帳に書いて保存して、Visual C++でコンパイルしてもやっぱり何も起きないんですが…
911デフォルトの名無しさん:2010/07/16(金) 00:13:02
>>910
実行ファイルと同じ場所に input.data がありますか?
912デフォルトの名無しさん:2010/07/16(金) 00:13:02
>>910
じゃあ学校行ってから試すしかないね
913デフォルトの名無しさん:2010/07/16(金) 00:15:52
>>911
あると思うんですが…
914デフォルトの名無しさん:2010/07/16(金) 00:20:23
>>911
メモ帳から保存する時って、そのC++のファイルに保存しないとダメなんですか?
普通に保存しているだけなんですが
915デフォルトの名無しさん:2010/07/16(金) 00:43:25
>>914
実行ファイルがあるじフォルダに
input.dataを保存するだけ
916デフォルトの名無しさん:2010/07/16(金) 01:35:51
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):県から国、及び国から県に換算する関数を作成し、
main関数でキーボードから数値とその値が国であるか県であるかを入力し、県ならば国に、
国ならば県に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
値を引数とする関数で計算させ(関数名は nation とする)、出力は main関数で行うこと。

関係は以下の通り
県(A):(B+2)*5 国(B):A/3+25
<例>
数値を入力してください: 75
75 が「県」なら "A" を「国」なら "B" を入力してください: B

県 75.0 = 国 50.0

なお、if文かfor文を用いること。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C++
917デフォルトの名無しさん:2010/07/16(金) 01:37:29
>>916

#include <stdio.h>
int main(void) {
918デフォルトの名無しさん:2010/07/16(金) 02:25:04
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
char型配列xに格納された文字列を1文字ごとに空白を空けて逆順に出力する関数reverse_array(char [])を作成せよ.変換後の文字列の長さがもとの文字列よりも長くなっているので、長さの検査が必要であることに注意せよ。
この関数を用いて、入力された文字列を並び替え、その結果を印字するプログラムを作成せよ。


% ./reverse
処理前の文字列 (64字まで)? kimatutest
関数reverse_array()を呼び出しました
処理後の文字列 "t s e t u t a m i k"
[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 できるだけ簡単なソースでお願いします><
919デフォルトの名無しさん:2010/07/16(金) 02:27:56
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
char型配列xに格納された英単語からなる文字列が回文(逆から読んでも同じ)であるかをチェックする関数anagram(char [])を作成せよ.ただし,チェック対象の文字列はソースコードのmain()関数内で記述するものとする(キーボードから入力しない).


% ./checkAnagaram
文字列 "spainyuusyou" は回文ではありません.

% ./checkAnagaram
文字列 "Was it a cat I saw?" は回文です.

ヒント: 回文のルールは以下の通り.

(i)
前から読んでも後ろから読んでも同じアルファベットの並びとな る,
(ii)
記号「?」,「.」,「,」,「-」,「 」(空白)は無視する,
(iii)
大文字と小文字は区別をしない.
[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 できるだけ簡単なソースでお願いします><
920デフォルトの名無しさん:2010/07/16(金) 02:32:25
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
ATM(Automated Teller Machine; 現金自動預け払い機)システムを実現するプログラムを考える。

氏名,口座番号,暗証番号,預金残高を要素とする構造体を宣言し, 512人分の口座が作成可能なようにせよ.また,初期値として次のように構造体の内容を設定せよ.


立命太郎の口座番号は1234で,預金残高を1,234,560円に設定する.
野路花子の口座番号は5678で,預金残高を987,600円に設定する.
衣笠一郎の口座番号は9012で,預金残高を538,600円に設定する.
暗証番号は口座番号に1111を足して10000で割った余りに設定する.
ここで暗証番号は、口座番号を引数としてとり、それに1111を足して10000で割った余りを計算する関数を作成して設定すること.
上記の方法で初期値を設定し、設定された3人の預金残高を画面へ出力するプログラムを作成せよ.ただし、ひとり分の預金残高を表示する関数を作成して、これを繰り返し使って3人の預金残高を出力すること.


% ./initAccount
預金残高は次のとおりです.
立命太郎 (1234) 1234560 円
野路花子 (5678) 987600 円
衣笠一郎 (9012) 538600 円
%


[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 できるだけ簡単なソースでお願いします><
921デフォルトの名無しさん:2010/07/16(金) 02:34:09
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
ATM(Automated Teller Machine; 現金自動預け払い機)システムを実現するプログラムを考える。

氏名,口座番号,暗証番号,預金残高を要素とする構造体を宣言し, 512人分の口座が作成可能なようにせよ.また,初期値として次のように構造体の内容を設定せよ.


立命太郎の口座番号は1234で,預金残高を1,234,560円に設定する.
野路花子の口座番号は5678で,預金残高を987,600円に設定する.
衣笠一郎の口座番号は9012で,預金残高を538,600円に設定する.
暗証番号は口座番号に1111を足して10000で割った余りに設定する.
ここで暗証番号は、口座番号を引数としてとり、それに1111を足して10000で割った余りを計算する関数を作成して設定すること.
上記の方法で初期値を設定し、設定された3人の預金残高を画面へ出力するプログラムを作成せよ.ただし、ひとり分の預金残高を表示する関数を作成して、これを繰り返し使って3人の預金残高を出力すること.


% ./initAccount
預金残高は次のとおりです.
立命太郎 (1234) 1234560 円
野路花子 (5678) 987600 円
衣笠一郎 (9012) 538600 円
%


[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 できるだけ簡単なソースでお願いします><
922デフォルトの名無しさん:2010/07/16(金) 02:36:55
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
<<920の課題を基に「引出し」の機能を追加せよ.具体的には,口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をするプログラムを追加すればよい.機能の選択は,起動時できるようにすること.


% ./withdraw
[0]終了 [1]残高表示 [2]引出し: 2
口座番号を入力してください: 5000 ← 存在しない
暗証番号を入力してください: 0123
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 5555 ← 間違っている
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 1000000 ← 預金額より多い
預金額が不足しています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 20000
ありがとうございました.残高は 518600 円です.
[0]終了 [1]残高表示 [2]引出し: 2 ← 始めに戻る



[3] 環境
 [3.1] OS linux
 [3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 できるだけ簡単なソースでお願いします><
923デフォルトの名無しさん:2010/07/16(金) 04:59:50
924デフォルトの名無しさん:2010/07/16(金) 05:13:05
925924:2010/07/16(金) 05:19:35
勢いで書いたらケーシングとかバラバラで、なんかごめん。
簡単なコードにはなってると思う。
926デフォルトの名無しさん:2010/07/16(金) 08:29:05
>>890
ありがとうございました、助かりました。
927デフォルトの名無しさん:2010/07/16(金) 09:15:21
>>923
"Was it a cat I saw?"が回文と判定されないぞ
928デフォルトの名無しさん:2010/07/16(金) 09:28:56
tolowerつかえば?
929デフォルトの名無しさん:2010/07/16(金) 09:38:29
それだけじゃだめだ
' 'や'?'も無視しなければ
930デフォルトの名無しさん:2010/07/16(金) 09:57:35
931デフォルトの名無しさん:2010/07/16(金) 10:09:05
マンドクセッ isalnum isalpha でも使えば?
932デフォルトの名無しさん:2010/07/16(金) 10:32:57
933デフォルトの名無しさん:2010/07/16(金) 11:28:37
#include <stdio.h>
int anagram(char *cs) {
  int len = strlen(cs), i = 0, j = len - 1;
  for (;i < j; i++, j--) {
    for (;i < j && !isalpha(cs[i]); i++) {} // アルファベットが出るまでズラす
    for (;i < j && !isalpha(cs[j]); j--) {} // アルファベットが出るまでズラす
    if (tolower(cs[i]) != tolower(cs[j])) return 0; // 一致しないのが出たら回文じゃない
  }
  return 1; // 一致しないのが無いので、回文
}
int main() {
  char *css[] = {"spainyuusyou", "abcba", "abccba", "test", "", "a", "Was it a cat I saw?", "...", ".", ",a,"};
  int i;
  for (i = 0; i < sizeof css / sizeof *css; i++) {
    printf("文字列 \"%s\" は回文で%s\n", css[i], anagram(css[i]) ? "す" : "はありません");
  }
  return 0;
}
934デフォルトの名無しさん:2010/07/16(金) 12:08:14
>>927,929
大文字のことを忘れていた サーセン
あと文でチェックしないとだめだったね
単語で調べることしか頭になかったから記号なんてどう使うのかと
すでに答えも上げられてるけど手直ししたんで一応
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10844.c
935デフォルトの名無しさん:2010/07/16(金) 12:18:15
> int chk(char c)
フイタ
936デフォルトの名無しさん:2010/07/16(金) 13:33:53
お手上げです。頑張ったのですが、できませんでした。
申し訳ないですけどお願いします。

問題

複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力するプログラムを作成せよ.

【実行例】

何個の文字列を入力しますか?:4
入力文字列[1]:Computer
入力文字列[2]:Science
入力文字列[3]:Tarou
入力文字列[4]:Tanaka

繋ぎ合わせる順番:
2
4
3
1

結果:ScienceTanakaTarouComputer

937デフォルトの名無しさん:2010/07/16(金) 13:47:02
この問題ができません。誰かお願いします。

入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
【実行例】

% ./a.out
tataatccg ← 入力し,リターンを押して ^D
Thymine (t) : 3
Cytosine (c) : 2
Adenine (a) : 3
Guanine (g) : 1
%

938デフォルトの名無しさん:2010/07/16(金) 13:47:18
>878
ありがとうございました。
すごく助かりました。
939デフォルトの名無しさん:2010/07/16(金) 13:55:24
>>936
>>316,322
940デフォルトの名無しさん:2010/07/16(金) 13:57:12
>>937
>>196,197
941デフォルトの名無しさん:2010/07/16(金) 14:22:36
>>937
#include <stdio.h>
#define LEN 128

int main(void)
{
char buf[LEN], *p;
int t, c, a, g;

t = c = a = g = 0;
gets(buf);

p = buf;
while (*p) {
switch (*p) {
case 't': t++; break;
case 'c': c++; break;
case 'a': a++; break;
case 'g': g++; break;
}
p++;
}

printf("Thymine (t) : %d\nCytosine (c) : %d\nAdenine (a) : %d\nGuanine (g) : %d\n", t, c, a, g);

return 0;
}
942デフォルトの名無しさん:2010/07/16(金) 14:26:14
リターン押して^Dというのがよくわからん
^Dを押すまで入力した文字をすべて対象にするのか?
943デフォルトの名無しさん:2010/07/16(金) 14:41:56
入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること.
【実行例】

% ./a.out
1gattatgtga
11tgccgatatc
21gatatgattc
(ここで ^D を押す)
#ATG is 3
%

よろしくお願いします。
944デフォルトの名無しさん:2010/07/16(金) 14:48:06
>>943
自分でできるようになろうよ・・・
945デフォルトの名無しさん:2010/07/16(金) 14:51:18
CTRL + Z か?
946デフォルトの名無しさん:2010/07/16(金) 14:56:06
>>945
実行ファイル名が ./a.out の場合は unix系OSのことが多い
つーことはターミナルの Ctrl-D は EOF を意味するだろう
947デフォルトの名無しさん:2010/07/16(金) 15:08:52
>>943
その入力文字中の先頭に表示されている1とか11とか21がわからん
それから入力された文字を全部連結しないとATG == 3にならないよね
948デフォルトの名無しさん:2010/07/16(金) 15:10:03
>>946
gets()で受けるとNULLを返すよな
だから二次元配列に入力したんだが指定文字列ではATG == 2にしかならない
先頭の1と11と21を無視して文字列を連結するんか?
949デフォルトの名無しさん:2010/07/16(金) 15:14:31
950デフォルトの名無しさん:2010/07/16(金) 15:58:57
>>915
実行結果を教えてくれませんか
メモ帳から自分が作ったプログラムがあるところに保存すればいいんですよね?
それはしてるんですが、できないんです…
951デフォルトの名無しさん:2010/07/16(金) 16:36:27
今日学校で試さなかったの?
952デフォルトの名無しさん:2010/07/16(金) 16:37:22
>>951
今日はこの授業はないので…すみません…
953デフォルトの名無しさん:2010/07/16(金) 17:50:54
[1] 授業単元:解析入門

[2] 問題文(含コード&リンク):

オイラー法、2次のルンゲ・クッタ法をそれぞれ用いて
以下の1階常微分方程式の初期値問題を解くC言語プログラムを作成し、
その結果と解析解と同じグラフに描画せよ。(横軸:x, 縦軸:y)。

dy(x)/dx = y  (但し、0 <= x <= 3)

(1) Delta x = 0.1
(2) Delta x = 0.3

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年07月19日0:00まで
[5] その他の制限:
954デフォルトの名無しさん:2010/07/16(金) 18:19:08
>>943
#include <stdio.h>
#include <string.h>
#define N 100

int main(void)
{
    int cnt = 0;
    char s[] = "atg", s2[] = "tcag", buf[N], *p1, *p2;

    p1 = buf;
    while (scanf("%99s", p1) != EOF)
while (*p1)
    p1++;
    p1 = p2 = buf;
    while (*p1) {
while (strchr(s2, *p1) == 0)
    p1++;
*p2++ = *p1++;
    }
    *p2 = *p1;
    p1 = buf;
    while (strstr(p1, s)) {
cnt++;
p1 = (strstr(p1, s));
p1++;
    }
    printf("#ATG is %d\n", cnt);
    return 0;
}
955デフォルトの名無しさん:2010/07/16(金) 18:30:31
>>906
pdf が読めない。
956 ◆Fk1tuJpya. :2010/07/16(金) 18:55:46
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10845.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcpad, Borland C++Compiler 5.5
 [3.3] 言語: C言語
[4] 期限: 2010年07月23日まで
957 ◆Fk1tuJpya. :2010/07/16(金) 18:57:44
>>956です。
どなたか助けてください。お願いします。
958デフォルトの名無しさん:2010/07/16(金) 19:02:54
>>916
実行例に疑問があります。
B を入力していますが、B なら「国」ですから、75 は「国」。
したがって出力は、

県 14.4 = 国 75

になると思うのですが。
959デフォルトの名無しさん:2010/07/16(金) 19:14:34
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク): 文字列*bufからIPアドレスを抽出し、int ip[4]にそれぞれ入れよ。(最初に抽出できたものだけで良い)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 2010/7/17
[5] その他の制限: STLのstringや、boostを使うことも可。
960デフォルトの名無しさん:2010/07/16(金) 19:43:46
961デフォルトの名無しさん:2010/07/16(金) 19:54:52
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10847.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月17日まで
[5] その他の制限:int main(void){でスタート
962デフォルトの名無しさん:2010/07/16(金) 20:07:07
>>956
問2 整数を何個入力するのか分からないので、2種類書いてみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10848.txt
963デフォルトの名無しさん:2010/07/16(金) 20:13:05
964デフォルトの名無しさん:2010/07/16(金) 20:32:57
>>962
実行例を見て、最大10個で-1が入力されたら終了って読み取れないのはダメだろ
965デフォルトの名無しさん:2010/07/16(金) 20:34:31
>>731の実行結果を誰か教えてください
966デフォルトの名無しさん:2010/07/16(金) 20:45:00
>>964
すいません。そこまで分かりませんでした。
967デフォルトの名無しさん:2010/07/16(金) 20:51:20
>>960
>>962
解答ありがとうございました。本当に詰んでいたのでありがたいです。
968デフォルトの名無しさん:2010/07/16(金) 21:07:03
>>961です。
>>963さん、ありがとうございました。
大変申し訳ないのですが、これに基にした問題が後2問あります。すみませんが、
よろしくお願いいたします。
http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10849.txt
[1]にヒットポイントを比較する関数を追加し、2体のモンスターのヒットポイントを比較し、
ヒットポイントの高いモンスターの名前を表示するプログラムを作成しなさい。
[2]ヒットポイント、アタックポイント、ガードポイントに0〜9の乱数を加えるプログラムを作成しなさい。
という問題です。
乱数の使用方法
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10856.txt
よろしくお願いします。
969デフォルトの名無しさん:2010/07/16(金) 21:09:00
970デフォルトの名無しさん:2010/07/16(金) 21:09:55
>>968訂正です。
[1]
http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10849.txt
にヒットポイントを比較する関数を追加し、2体のモンスターのヒットポイントを比較し、
ヒットポイントの高いモンスターの名前を表示するプログラムを作成しなさい。
971デフォルトの名無しさん:2010/07/16(金) 21:38:58
>>969
修正版ありがとうございます。今更問2の入力条件ですが、他のコメントの指摘通り10回入力または0以下入力で終了という問題でした。説明不足ですみませんでした。
972デフォルトの名無しさん:2010/07/16(金) 21:55:50
>>953をお願いします。問題の意味も分かりません。助けてください。
973デフォルトの名無しさん:2010/07/16(金) 22:01:30
974デフォルトの名無しさん:2010/07/16(金) 22:02:46
>>731で作ってもらったプログラムをコンパイルして、メモ帳にinput.dataとして保存しても、上手くいきません。
本当に誰か助けてください
975デフォルトの名無しさん:2010/07/16(金) 22:06:26
うちの環境だとBCCでもVC++でもBorland C++でもIntel C++上手くいくのはなんでだろ
976デフォルトの名無しさん:2010/07/16(金) 22:08:56
なんで釣りしてんのか謎だわ。
うちはうまくいきましたよ。
977デフォルトの名無しさん:2010/07/16(金) 22:10:06
>>974
input.data.txt になってるかもw

vmwarePlayer と ubuntu の vmdk イメージで linux 環境作っちゃえ
最初から vmwaretools もどきが入ってるから楽だよ
978デフォルトの名無しさん:2010/07/16(金) 22:14:31
>>978
txtじゃダメなんですか?
ファイルの種類ってところを、すべてのファイルにすればいいんですか
979デフォルトの名無しさん:2010/07/16(金) 22:22:20
次スレ立てます
980デフォルトの名無しさん:2010/07/16(金) 22:23:16 BE:189342454-S★(526363)
次スレ立てました
C/C++の宿題片付けます 138代目
http://pc12.2ch.net/test/read.cgi/tech/1279286575/
981デフォルトの名無しさん:2010/07/16(金) 22:24:59
>>980
982デフォルトの名無しさん:2010/07/16(金) 22:55:11
>>978
エクスプローラでファイル名を後から"input.data" に変えればいいと思います。
983デフォルトの名無しさん:2010/07/16(金) 23:09:39
>>982
ごめんなさい。エクスプローラってインターネットエクスプローラの事ですか
984デフォルトの名無しさん:2010/07/16(金) 23:17:33
>>983
検索の開始ってところから、エクスプローラというのを見つけたんですが、そこから次はどこを押せばいいんでしょうか?
985デフォルトの名無しさん:2010/07/16(金) 23:25:44
なにこいつ
986デフォルトの名無しさん:2010/07/16(金) 23:27:07
拡張子も理解出来てないのか
まずPCの基本的な使い方から勉強したほうが
987デフォルトの名無しさん:2010/07/17(土) 00:02:23
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):県から国、及び国から県に換算する関数を作成し、
main関数でキーボードから数値とその値が国であるか県であるかを入力し、県ならば国に、
国ならば県に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
値を引数とする関数で計算させ(関数名は nation とする)、出力は main関数で行うこと。

関係は以下の通り
県(A):(B+2)*5 国(B):A/3+25
<例>
数値を入力してください: 75
75 が「県」なら "A" を「国」なら "B" を入力してください: B

県 75.0 = 国 50.0

なお、if文かfor文を用いること。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio2008

#include <stdio.h> int main(void) {

 [3.3] 言語: C++
988デフォルトの名無しさん:2010/07/17(土) 00:10:12
>>987
>>916,958
989デフォルトの名無しさん:2010/07/17(土) 02:00:36
ワロス
990デフォルトの名無しさん:2010/07/17(土) 12:07:15
こんなに問題の重複がいままであったことがあるだろうか?
最近これどうなってんの?
991デフォルトの名無しさん:2010/07/17(土) 12:20:28
いまさら過ぎて話しにならない。あんた新参か?このスレはもうかなり前からあるが
似た課題、同じ学校の別人が同じ課題を書き込むなんて、よくあったぞ?
992デフォルトの名無しさん:2010/07/17(土) 12:45:03
そして、同じレポートを提出する。w
993デフォルトの名無しさん:2010/07/17(土) 12:48:16
そして全員不可ww
994デフォルトの名無しさん:2010/07/17(土) 12:53:28
>>991
マジで?

俺が来たのは
C/C++の宿題を片付けます 95代目
1 名前: デフォルトの名無しさん [sage] 投稿日: 2007/08/24(金) 17:28:30

このへんから。重複は2〜3スレに一つくらいのイメージだったが、
勘違いだったのかな。
995デフォルトの名無しさん:2010/07/17(土) 12:54:47
2chを定期的に監視して、まだ存在しないパターンの課題を出力するプログラムを作れ。
996デフォルトの名無しさん:2010/07/17(土) 13:14:35
課題:このスレを監視して担当教官に密告メールを送るプログラムを作れ
997デフォルトの名無しさん:2010/07/17(土) 18:09:22
埋め
998デフォルトの名無しさん:2010/07/17(土) 18:26:41
>>1000なら引退。
999デフォルトの名無しさん:2010/07/17(土) 19:57:21
 V V
(´・ω・`) うさちゃんピース
1000デフォルトの名無しさん:2010/07/17(土) 19:58:22
 V V
(´・ω・`) うさちゃんピース
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。