前スレ最後で騒いでしまい、埋まってしまったので立てました。
#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>
> (解読可能であるかどうかの厳格な判定は知られていない) まれに複数の復号結果が生まれるかもしれないけど、一意になる可能性は結構高いのかもしれない。 復号化は昼休みにでも挑戦。
5 :
デフォルトの名無しさん :2010/06/18(金) 07:08:03
次の問題を解くプログラムを再帰を使って実装せよ。 問題 コインの種類として、1,5,8,10,15の5種類を与える。与えられた金額m に対して、最小枚数のコインでmを支払うときの枚数を求めよ。
>>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枚を出力)
何年か前にそんな感じの問題見たなあ
9 :
6 :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枚。 こっちのほうが最小ですよね?
#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
そりゃよかったね
14 :
6 :2010/06/18(金) 08:42:01
>11 なるほど。。賢いやり方だ。
>>11 ,14
Dynamic Programming だね。
数が大きくなるととんでもなく処理時間かかるし、賢いやり方とはいえないと思うが
>>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;
}
>>16 もっといい方法が在るなら、コードか参考urlをどうぞ。
19 :
17 :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; }
解いた奴には天地の怒りの鉄槌と災厄が降り掛かるだろう系の 問題ぢゃね?
/がアルファベットに変換されるのってコメントとの関係なのかな
> (解読可能であるかどうかの厳格な判定は知られていない) デクリプトには答えが有るとは言ってない、に読める。 エンクリプトは何とか完成できたが、iii と iik, ijk, ijj の区別をつけるデクリプトは無理。 1番目の文字が、仮に、デクリプトするれば i と分かっても、 2通目の文字に j があれば ii と ij の2通り以上、46通り以下に可能性が分かれる。 なら、次文字から推測できる全候補をプログラムで表示するようにすればいいんではないだろうか。
解読したら正解のコードになるんだったら面白かったのにそうでもないっぽいよね
とりあえずここまで #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とかのように区別しにくいい単語に出あったら、保存した中にある単語を優先する、とかはどうだろう。
#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; }
>>29 全検索すると候補の数が一万を超えることも多いので
辞書使わないと厳しいです
>>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;
}
>>33 すげぇ。じゃデコーダーほぼ出来てるんだ
ん?
C言語の構文からマクロを乱用してないとして void for return を手がかりに逆算したい
>>35 do と goto と continue も追加で
if もだ
38 :
33 :2010/06/18(金) 20:06:02
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とかされると死ぬが)
>>20 のlinuxのディストリビューション分かる人いませんか?
手元にある VineLinux3.2 kernel2.4 を見てみたけど違うみたいでした
>>40 別にそれは関係ないと思うよ。
復号したコードをコンパイルするとかいう話でもないしね。
>>41 static void buffer_io_error(struct buffer_head *bh)
までは手動で頑張ったのにw
44 :
40 :2010/06/18(金) 21:07:55
>>42 識別子を辞書登録するのが大変なので
include しているファイルの中身も読ませようと思っていたのです
が、
>>41 のおかげで対応が分かるので必要なくなりました
復号したらそのままコンパイル出来るものを、添付書類無し で再頒布するのはGPLに抵触しかねないから、 コメントとか外したりいろいろ細工してる可能性もあるだろ
>>44 ああー、なるほど。そういう理由だったのか。スマソ。
この行より前は
>>41 と一致する
YCvXRg("クォートされた部分も暗号化対象外\n",wYkyL);
該当箇所に 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ずつ変化するということを示しなさいということです。
>>51 charに変えるのが出来ないっていってますか?
53 :
デフォルトの名無しさん :2010/06/18(金) 22:50:29
>>52 そうです。
それから、もうひとつ
図1をdouble型に変えるのもお願いします。
こういうこと? #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 #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 );
}
>>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;
}
>11 >min = 10000000; 10000000って数字はどっから出てきたの?
>>58 有り得ないほどの大きい数字なら何でも良かったんじゃないかな?
min = num/coins[0];
でいいと思う。
>>28 バージョンは分からんが、Linuxカーネルのfs/buffer.cをエンコードしてるのか?
for(i = 0; i < NMAX; i++) { w = rand() % (i + 1); a[i] = a[w]; a[w] = i; }
>>20 一応MFCでデコードしながら、分からなくなったらユーザに聞いてくるアプリにしてみた。
コメントとかリテラルとか、まだ一回も動いてないコードとか有るし、
デコードした文字列をエディットに出力して、ユーザが判断する材料にさせてるんだが、
うまくエディットコントロールスクロールさせられなくて面倒くさくなって放置してる。
(メインスレッドでループしながらエディットに出力して、且つスクロールさせようってのがダメなんだろうが。。)
需要があればうpします。
一旦入力した候補はhistファイルに取っておくので、これを使って地道にやってけばいずれデコード出来ると思う。
>>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
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 と同じです
66 :
023 :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); } }}
>>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;}
69 :
62 :2010/06/19(土) 21:54:03
>>67 興味深いな。
> if ((m%a[i]==3||m%a[i]==4)&&(sum)){sum--;m=m+a[i];}
3,4になるプロセスが判らない。
特定の組み合わせ限定だからだろ
72 :
デフォルトの名無しさん :2010/06/19(土) 22:56:00
>>70 最初の3,4以外の、8以上のm%5で3,4になる数字は最小枚数を求める時必ず8が入るので
15と10で割り過ぎないように先に8で割るようにしました。
74 :
73 :2010/06/19(土) 23:07:36
×先に8で割るように ○後で8で割れるように
>>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;
}
>>73 なるほど。
オーソドックスな解法は、
>>17 のようなDPだろうけど、
>>67 でも出来る、
という事は、条件付きで数学的に等価なのかもな。
77 :
デフォルトの名無しさん :2010/06/20(日) 02:55:07
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
81 :
023 :2010/06/20(日) 13:34:27
>>069 VS2005で動かしてみました。
ゲームとしては7行くらいでゲームオーバーでもかまいません。
ただ、/を入れた後の文字選択が2回必要なのはなぜでしょうか。
82 :
デフォルトの名無しさん :2010/06/20(日) 14:57:39
以前のヤツからそうなんだけど、書いてあるコード実行しても図の例と同じにはならないんだよな
84 :
デフォルトの名無しさん :2010/06/20(日) 15:49:25
すみません。説明不足でした。 ソースコードは、int型で書かれています。これを、double型に書き換えていただきたいんです。 そして、double型に書き換えたものを実行すると、図2のように表示せよという問題です。 よろしくお願いします。
>>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;
}
すいません。
問題のゴールが明確には分からなかったので適当に書いてます。
大枠はこれでいいと思うので書き換えて使ってください。
86 :
62 :2010/06/20(日) 16:49:11
>>81 入力しても時々無視されちゃってます。
バグですが、もう一度入れれば入るみたいなんで、無視しちゃってください。
(直して^^;)
87 :
023 :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); } }}
88 :
62 :2010/06/20(日) 18:08:56
89 :
62 :2010/06/20(日) 18:31:48
っていうか、ほぼ毎回、候補が複数出てくる。 これほとんど無理だよねw
?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)を入力すれば 上記の定積分のロンバーグ表の値と積分値が画面表示 されるようなプログラムを作ること。 この問題を解ける方教えていただけませんか?
>>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;
}
>>1 >>1 大事なことなので2回言いました。最近守らないやつが多すぎる。
>>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 のソース内容から外れるので考慮していない
95 :
91 :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] 期限: 無期限
>>89 適当に選ぶと正解じゃない場合は常に行き詰まる模様
エロゲの選択肢よりシビアだな
98 :
023 :2010/06/21(月) 09:02:14
decrypt 窓が、文字の無いところを表示するから、常に横スクロールが必要。
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); } }}
そろそろ別にスレでも作ってそっち行ってくんないかな
>>102 本からの丸写しなんだが。間違ってる点があるなら指摘よろしく
本当に丸写しなら、出版社に言って謝礼をもらうべきw どうせ問題にあわせていじったところでミスってるだけだろうけど。
>>104 嫌味なら誰にでも言える
どこがどう間違っているのか具体的に指摘よろしく
それかお前が正しいプログラムを書いて示せ
間違いの存在教えてもらっただけでも感謝して、自分で探せよw
まあどこが間違っているか示せないだろうけどな
>>99 は何度も検証したし結果も合ってる
ただケチを付けてみたいだけだろう
>>102 は
そんな検証の仕方じゃ話になんないなw
以降放置勝手に言ってろ
>h = b - a; これはなんですか?w
え?w
wてなに
どうせ台形公式とかルンゲ・クッタ法のhと混同してるんだろうこの馬鹿は ロンバーグ積分も知らない馬鹿は口出しすんな
ロンバーグ積分は台形公式利用するものだし、hの意味は同じなんだがw aとbは係数として関数に渡すもので、始点・終点じゃない h = f - e; が正しい。
>>99 のやり方はミス抜かしてもロンバーグ積分としては微妙だけどな。
毎回台形公式で求めなおしてるから計算回数無駄に多いし。
>>116 確かにその通りだスマン
>>117 だから文句タラタラ言うなら自分でプログラムを書いて示せっつーの
スマンですますなよ、この低脳がw 教えてくださいって土下座しろよこのマヌケ
そこまで言わなくてもいいと思うが、丸写しした本を教えてほしい。 それから、 > 何度も検証したし結果も合ってる というところも詳しく。
台形公式で刻み数を倍にするときは前回の計算結果を利用して、 関数の計算回数を減らすのが普通。 減らすって言っても、前回の計算がなかったとして直接計算したときと同じなんだけど。 少なくとも、前回の計算分丸々計算しなおすよりはマシになる。
>>123 だから言葉で言わずにプログラムで書けっつーの
ここはプログラム板だ
ググれカス
>>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;
}
128 :
113 :2010/06/21(月) 20:05:45
wってなに?
waraiのw
sumって変数名に乗算の結果を入れるのは気持ち悪い
product
[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] その他の制限:なし おねがいします
for(i = strlen(buf) - 1; i >= 0; i--) printf("%c", buf[i]);
配列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}と なるようにせよ. よろしくお願いします!
void f(int *a, int *b, int size) { while(size--) { int temp = *a; *a++ = *b; *b ++ = temp; } }
>>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] その他の制限:特になし よろしくお願いします
期限が過ぎているのでスキップされました
140 :
デフォルトの名無しさん :2010/06/22(火) 15:17:58
ワイルドカードのマッチを、正規表現使って行うにはどう変換すればいいですか。 . や * や ? で機能が違うのですが。
ワイルドカード → 正規表現 ? → . * → .*
サンクス。あと正規表現の特殊文字に\つけとけばいいですかね。
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日迄 よろしくお願いします。
>.144 めっちゃ抽象的だな…
まずは要件定義から始めること。 という実践的な問題なんだろ。
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
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++触り始めた所です。どうかお願いします。
152 :
デフォルトの名無しさん :2010/06/22(火) 22:30:13
>>151 言い忘れてた。CUIでお願いします。
こんな感じにしてほしいです。
1 2 3
1
2
3
○の横座標を入力してください:
○の縦座標を入力してください:
154 :
デフォルトの名無しさん :2010/06/22(火) 23:16:46
>>153 出来ればクラスとメソッドをしっかりと分けてほしいです。
クラスの中にメソッドが入ってる感じなのでこう分けてくれると助かります。
class game{
public:
void init();
bool Player(int x, int y);
};
void Game::init()
{
・・・
}
他のメソッドもこんな感じに処理毎に分けてくれると助かります。あと○に座標だけでなく
×の座標も入力できるようにしてほしいです。
www
156 :
デフォルトの名無しさん :2010/06/22(火) 23:18:30
>>154 ミス。「○に座標」じゃなくて「○の座標」でした。
入力した座標をポインタで受け取る感じにしてほしいです。
申し訳ありません。
座標をポインタで受け取りたいってのがよくわからんが。。 ってかドローゲーム忘れてたw
158 :
デフォルトの名無しさん :2010/06/22(火) 23:39:19
>>157 自分の中のイメージとしてg.player(&width, &height)って感じでメソッド呼び出して
座標データを取得したいのですが。。。。。
すいません。なかなか上手く説明できないです。初心者なので。。。。。。
クラスとメソッドを分けてほしいって表現がすごいけど、その例を書けるんならそんぐらい直せw
160 :
デフォルトの名無しさん :2010/06/22(火) 23:45:28
>>159 クラスとメソッド分けるのちょっとやってみます。
挫折したらすみません。あと途中で解説欲しくなるかもしれないです。
162 :
デフォルトの名無しさん :2010/06/22(火) 23:52:37
>>161 おおおおおおおおおおお。けっこうスマートになってるwwww
助かります。ちょっとソースコード読んでみます。解説欲しくなったら言うので。
どんだけ上から言ってんだよw ってかもうねる。
インライン関数は使わない流儀
[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] その他の制限: (構造体でデータを個々で格納してお願いします。) よろしくお願いします。
【質問テンプレ】 [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] 授業単元: プログラミング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日まで よろしくお願いします。
>>171 (1)j-1
(2)printf(" ");
>>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;
}
177 :
デフォルトの名無しさん :2010/06/23(水) 21:05:54
>>149 ありがとうございました、参考にさせていただきました。
それにしてもわずか10分でするとは…
質問させてください 当方、エントロピー値の計算するプログラムをperlで作成したのですが わけあってC++に書き直すことになりました しかし、C++にはハッシュ(連想配列)などは自分で作らなければならなく どうしてもうまく行きませんでした・・・ perlで作ったプログラムをここに張るのは良くない思うのですが どうかC++動くようにご教授お願いします
こちらが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}; } }
@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";
std::hash_map, std::mapはC++にもある
182 :
178 :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)); ←エントロピーの計算をします
}
文字列をキーとした連想配列はmapで代用できる。
もちろん、
>>181 の言うようにhash_mapでもいい。(あれば)
std::tr1::unordered_map も忘れないでください。
CでなくC++でよかったな
余計な言い訳せずにC++のコードくださいって言えばいいのにね。
188 :
185 :2010/06/23(水) 22:54:11
189 :
178 :2010/06/23(水) 23:11:42
>>181 、183、184
ご指摘ありがとうございます
その範囲を調べてみます。
>>185 わざわざコードを作っていただき
本当にありがとうございます
このコードを参考に勉強させていただきます。
190 :
デフォルトの名無しさん :2010/06/24(木) 00:22:32
モンテカルロ法で√2の近似値を求めたいのですが、 ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・ どなたか教えてくださいませ
[sin θ]0〜PI に近い
[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] その他の制限:無し よろしくお願いします
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++ お願いします。
演習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 % よろしくお願いします!
>>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 進は使用しな い)とする お願いします!
>>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; } ここまで作りましたが出力結果が上のようになりません。 誰か助けてください!お願いします。
#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; }
使うとインデント表現できるんだね
>>206 s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g
208 :
270 :2010/06/24(木) 22:09:47
すみません、間違えました。 s/\&/\&/g s/ /\ /g s/"/\"/g s/</\</g s/>/\>/g
209 :
208 :2010/06/24(木) 22:11:50
んー、うまくいかない。 s/\&/\&/g s/ /\ /g s/"/\"/g s/</\</g s/>/\>/g こうか?
210 :
sage :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] その他の制限:指定なし
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日まで
[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
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
221 :
218 :2010/06/25(金) 21:51:05
>>218 ですが忘れてました。なるべく簡単にしてください。
あと配列を使います。
>>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;
}
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日)中にお願いします 宜しくお願いいたします。
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] その他の制限:特にありません。よろしくお願いします。
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; }
ラグランジュ補間で log(x) を求める。?
>>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
232 :
デフォルトの名無しさん :2010/06/26(土) 12:20:03
>>229 ラグランジュ補間は手持ちの本「科学技術計算ハンドブック」に
掲載されているので、一次補間も二次補間も意味はわかるけど、
logxの近似をしたかったら、x=1.0から4.0まで近似したいなら、
もっと数表x[], y[]の標本が必要だよ
というのは、ラグランジュ補間は極めて振動しやすいという欠点を
持っていて、その欠点を埋め合わせるには数表の取り方を工夫
しなければならない
少なくとも、[x,y]の組み合わせが多数欲しい
今1.0〜4.0の範囲で近似しようとしているのだから、xが0.0から5.0
の範囲で5点ほどは欲しい
> 今1.0〜4.0の範囲で近似しようとしているのだから、 x=2.5 のだけで。
237 :
デフォルトの名無しさん :2010/06/26(土) 22:13:54
>>239 ありがとうございます。
>>236 は偽者です。
問題文には数表は全く書かれていなかったのですが、授業で使うスライドを見ていったところ、
1枚だけ、端っこの方に小さくy=f(x)= 1/(1+25*x^2)と書かれていました。
宜しくお願いします。
よろしく
数値計算理論の問題でC/C++のコーディング技術の問題じゃなさそう
>>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++;
}
}
>>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++;
}
}
【質問テンプレ】 [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); } よろしくおねがいします
253 :
251 :2010/06/27(日) 17:12:01
[1] 授業単元:情報処理学 [2] 問題文(含コード&リンク): do-while文を用いて、キーボードから入力された値が素数であるかどうかを 判別するプログラムを作成せよ。入力された値が素数の場合は"素数"と出力し、 素数でない場合は最小の因数を出力せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:すいませんがわからないです。 [3.3] 言語:C [4] 期限:2010年6月30日まで
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日まで
>>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);
}
>>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;
}
[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を初期化して配列に格納する。
#include <stdio.h> int main(void) { char no[] = "0000000A", name[] = "aaaaa aaaaaaaa"; printf("私の学籍番号は%sです。\n", no); printf("氏名は %sです。\n", name); return 0; }
262 :
デフォルトの名無しさん :2010/06/27(日) 22:45:00
a
>>259 本当に助かります(涙)ありがとうございます!!!!
お礼を言われると返って心苦しくなるなw
267 :
デフォルトの名無しさん :2010/06/28(月) 00:41:58
>>241 忘れてました
全部の平均ってどういう意味なんですかね?これがいまいちわからないです
>>267 例えば、
英数国合計の平均=(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点)/3
269 :
268 :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 =英数国合計の平均
(Eavg) +(Mavg) +(Javg) =(Aさんの英語の点+Bさんの英語の点+Cさんの英語の点+Dさんの英語の点) +(Aさんの数学の点+Bさんの数学の点+Cさんの数学の+Dさんの数学の点点) +(Aさんの国語の点+Bさんの国語の点+Cさんの国語の点+Dさんの国語の点) =(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点) これを人数分で割ると (Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点)/4 =英数国合計の平均
すみっこつつきで申し訳ないけど、変数名がavgなのがちょっと変かもね。 質問者がそれで理解できてるようだからいいけれど。
273 :
デフォルトの名無しさん :2010/06/28(月) 07:26:32
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] その他の制限: 特になし よろしくお願いします
#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; }
276 :
246 :2010/06/28(月) 11:02:07
277 :
274 :2010/06/28(月) 12:02:00
>>275 ループ変数使用して、printf 文をまとめた方がよくないですか?
[1] 授業単元: C言語プログラミング入門 [2] 問題文:関数の再帰的呼び出しによりAckermann(アッカーマン)関数を計算するプログラムを作れ。同じプログラムを繰り返し処理(ループ計算)により実現できるか考えよ。Ackermann関数は次式で定義される。 [3] 環境 [3.1] OS: Mac OS [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2010年6月30日 [5] その他の制限: 特にはないです。 よろしくお願いします。
279 :
278 :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
>>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;
}
>>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;
}
>>224 について、教えていただいたプログラムで提出したのですが、
logxの真値と補間で求めた値の誤差を比較していないとのことで受理されませんでした。
>>249 さんのような結果を出さないといけないようなのですが、c++だったので、
Cに作り直そうとしたのですが、うまくできませんでした。
大変申し訳ないのですが、Cで作り直していただけないでしょうか?
宜しくお願い致します。
[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文、配列など基本的なものを習いました。 どうぞよろしくお願いします。
>>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
>>292 > scanf("%s",p[i].name);
buffer overrun...
元がそうなってんだからそっちに文句つけろよw
>>294 氏ねといわれたら氏ぬんですね、よくわかります。
長すぎる文字列入れたら正しく動作しないのは
>>291 もかわらないしw
>>295 原要求を無視したらテンプレの意味が(ry
>>296 たしかにうまく処理できませんね。標準で入力バッファをクリアする方法はなんでしょうかね。
>>298 違います。
[1] 授業単元:情報処理学 [2] 問題文(含コード&リンク): 例1は、3教科5人の生徒の合計得点を求めるプログラムである。 これを実行し、動作を説明せよ。さらに、教科毎の平均点、 生徒毎の平均点を計算して表示できるようにプログラムを修正し、 結果とともに示せ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年6月30日 よろしくお願いします。
>>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;
}
[1] 授業単元:プログラミング演習 [2]問題文:長いので次のレスに書かせていただきます [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語:C [4] 期限:2010年6月29日17:00まで [5] その他の制限:特に制限はありませんが、なるべく簡単な文法で書いていただけるとありがたいです
304 :
303 :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
305 :
303 :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型へ 型変換せよ。 多いですがどうぞよろしくお願いします
307 :
デフォルトの名無しさん :2010/06/28(月) 21:56:52
>>273 もどなたかお願いいたしますm(_ _)m
>>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のマスは○でコンピュータのマスは×でお願いします。
大変だと思いますがどうかお願いします。
礼も言わないヤツか
311 :
デフォルトの名無しさん :2010/06/28(月) 22:57:23
>>310 あの時は本当にありがとうございました。
本当に申し訳ありません。
312 :
デフォルトの名無しさん :2010/06/28(月) 23:57:38
313 :
303 :2010/06/29(火) 00:11:24
>>312 char型ならまとめ方一緒だったの?
俺的には全然違ったw
[1] 授業単元:プログラミング言語
[2] # リストに格納したデータを,データファイルとは
別のファイル(出力先ファイルとよぶ)に書き出す.
データファイルと出力先ファイルのファイル名は
コマンドライン引数として指定する
下記テンプレートを使用すること
http://codepad.org/d9CUmfae [3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年7月2日
お願います
言い忘れてました
>>310 以外の方にお願いします
windows+gccな人って具体的にどういう環境なんだろ。
CygwinかMinGWだろ
そういう予想じゃなくてさ。 出題者がちゃんと理解してるのかどうかを知りたいという意味合いも含んでた。 実は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;
}
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
>>283 すみません。折角作っていただいたのですが、データが
>>242 の通り、
x=1.0〜4.0,y=1/(1*25*x*x)でそれぞれ31個づつあります。
何度もお願いするのも申し訳ないと思い自分で拡張を試みたのですが、
Interpolationの部分が出来ませんでした。
startが最大で31まで増えるため、そのまま入れてもオーバーフローしてしまい、
かといって、iやjを消してdata[0][start]のような記述をするとnanになってしまいます。
何度も申し訳ないのですが、forの部分だけで構いませんので、作っていただけないでしょうか?
328 :
278 :2010/06/29(火) 15:09:56
329 :
デフォルトの名無しさん :2010/06/29(火) 15:11:29
[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関数の部分も含め、プログラム全体を作って頂きたいです。
[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分とはおどろきました
341 :
デフォルトの名無しさん :2010/06/29(火) 23:56:51
344 :
デフォルトの名無しさん :2010/06/30(水) 01:09:50
>>342 ありがとうございますこれでどうどうと学校にいけます
346 :
331 :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
このようにエラーがでてしまうのですがどうすればコンパイルできるでしょうか?
-lm
>>346 次回からは、undefined reference to `sqrt' でGoogle検索するとかして、自分で調べてくれ。
対策は、コンパイル時に -lm オプションを付ける。
例:gcc -lm test.c
>>346 もう一度言うぞ。
対策は、コンパイル時に -lm オプションを付ける。
わかったな。
こういうときどういう反応したらいいのだろうか とりあえず、笑えばいいのかな
351 :
デフォルトの名無しさん :2010/06/30(水) 14:36:15
>>350 最近、IDなしのスレに粘着してるなりすましのかまってちゃんが居るから、本人とは限らない。
「俺が348だ、349は偽物だ」と言っても確認出来ないからね。
という訳で、不快に思ったらスルーが一番。
そうすることにするよ
353 :
335 :2010/06/30(水) 16:32:15
何度もすみません。 せっかく解いていただいたのですが、「昇順か降順でしかソートできない」として、もう一度お願い致します。
>>325 >>1 環境によってはとけるかもしれません。(最近apiを勉強しているところでして)
テンプレートを書くときには条件をもっと詳しく書いてください。
・描画範囲の意味がよくわかりません。±40, ±60 ということですか?
・y = ax^2 を平行移動したものを描画すればいいのでしょうか?
・(x, y) = (160, 120) というのは頂点なんですか?
以上よろしくお願いいたします。
>>354 mixiに似たような質問あったけど(既に削除済み)
背景が真黒のbmpに白で線を書き込みたいようだよ。
356 :
346 :2010/06/30(水) 18:48:06
本当にすみませんでした; 回答してくださった方、ありがとうございます 無事にコンパイルできました
>>358 すいません、こちらの環境(Microsoft Visual Studio 2008)ではエラーが2つ出て動きませんでした。
>>353 もともと昇順か降順かしかないんじゃ?
コードもascとdescしかないように見えるし。
どこが気に入らないのか具体的に
>358, 359 確保したら開放ぐらいきちんと書けとも思ったがまぁいいや C言語としてコンパイルすればエラーはでない VS2008のclは使ったことないので、どんなスイッチ指定すればいいか知らないが、原因はC++ではvoid *から他のポインタへの暗黙の型変換がされないから C++のソースコードとしてコンパイルしたければ、malloc()の戻り値を適当にキャストすれば良い
>>359 エラーの内容はなんとなく予想できるけど、コンパイルの仕方が悪い。
具体的には/Tcスイッチをつけるといいと思う
>>364 49行目、と思わんでもないけど別にいいや、としたいところだけど
学生はしっかりやっておいた方がいいのかもな、とも。。。
[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] その他の制限:無し よろしくお願いします
>>344 fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
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
373 :
デフォルトの名無しさん :2010/07/01(木) 06:32:27
>>368 EOF がマクロで定義されているであることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
374 :
デフォルトの名無しさん :2010/07/01(木) 06:39:34
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
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 > そろそろ理解していただきたいのですが。
相手を茶化すにしても痛すぎ。そんな態度だから周りから干されて孤立したんだろ。
言動が陰険過ぎ。いつまでも理解していないみたいな勘違いとか、粘着していることも含めて
人間として終わってる。
368は人気者?
>>382 この間隔で書き込まれているのを見ていると、
一人で騒いでいるだけのようにしか見えない
あいかわらずですね。
見えない敵と戦っているんだろう プログラマなら魔法で戦えよ
>>383 一度に多数の人間が同時に書き込んだ、というのを演出したいらしい。
387 :
デフォルトの名無しさん :2010/07/01(木) 12:11:13
vectorをリファレンス引数で扱う意味を教えてください
>>387 コピーするコストがもったいないから
コピーだと中身に変更を加えても呼び出し元に影響を与えられないから
389 :
デフォルトの名無しさん :2010/07/01(木) 12:59:28
>>388 つまり、コピーだとその後代入などの手間がかかるため
リファレンス引数で扱い、その手間を省くということですね
ありがとうございます。
>>383 その感覚じゃ連続投稿に引っかかることくらい、ここの住人なら知っているだろう。
バイバイさるさんにも引っかかる可能性はある。
>>389 コンストラクタ・デストラクタのコストを避けるのが主目的。
>>379 なに、ほんの手遊びですよ。ちょろちょろっと書いてみるのもまた楽しいものです。
>>378 つ
>>250 オリジナルの多桁演算ライブラリです。いつのまにか乗算・除算もできてしまいました。
効率は悪いのですが、それでもわりに重宝しています。
トリップ付けずに代弁するとか、大人しくトイレで大便しといれw
398 :
デフォルトの名無しさん :2010/07/01(木) 21:53:17
>>396 横レスで失礼。除算をどうやったのか興味があります。
400 :
デフォルトの名無しさん :2010/07/01(木) 22:25:54
>>399 なるほど。繰り返しで処理出来るからハードウェア化も可能、というのが理解出来ました。
有難う御座います。
>>400 手近な環境でマシン語を習得し、割り算を実装することができれば、そのマシン語は卒業したといってもいいと思います。
x86 がいいでしょうが、casl でもできます。
>>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;
}
>>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; } ここまでできたんですが、出力がうまくいきません。 誰か教えてください。
>>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;
}
[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] その他の制限: 特になし
>>403 ありがとうございます
よろしければ演習2のほうもお願いします・・・
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
>>415 コードを出したり引っ込めたりしなければね。
[1] 授業単元:C言語入門 [2] 問題文(含コード&リンク): 正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数 factを作成して動作を確認せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年7月5日 よろしくお願いします。
[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関数 よろしくお願いします
>>408 遅れてすいません。ありがとうございます!
424 :
デフォルトの名無しさん :2010/07/02(金) 21:44:46
>>423 ですが、何度もすいません。
>>408 を
80度が「摂氏」なら "C" を「華氏」なら "F" を入力してください: F
日本基準 80.0 度 = 欧米基準 176.0 度
と出力できるようにはできませんか?
>>424 質問でも宿題でもないのにあげている、という点で同一人間っぽいですね。
いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。
>>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
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
ちなみに期限のほうですが、来週の月曜日にまで延長して貰えました
439 :
デフォルトの名無しさん :2010/07/03(土) 07:18:56
このスレがどんなスレか、そろそろ理解していただきたいのですが?
スレタイも
>>1 も読めないアホ
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] その他の制限:とくにありません。よろしくお願いします。
443 :
334 :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
>>443 画像開く前から画像の幅と高さがわかるとかどんなエスパーだよバカ
ワロタ
[1] 授業単元:C言語入門 [2] 問題文(含コード&リンク): 例を修正し、double型の配列変数に格納されている値の 平均値を求める関数aveを作成せよ。また、aveもdouble型とする。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年7月5日
>>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;
}
>>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;
}
>>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;
}
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) を用意するとうまくいくそうですが
どうしてもわかりませんでした。
御助力お願いします。
>>452 handy.h とはなんでしょうか?
あと、X Window ?
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] その他の制限:特にありません。よろしくお願いします。
458 :
457 :2010/07/04(日) 00:43:11
どういたしまして
462 :
デフォルトの名無しさん :2010/07/04(日) 01:03:42
>>455 精神障害者だろ、お前?いつまでも昔の(自分の勘違いのせいで起こった論争)を引き摺るとか。
気持ち悪い。このスレ、お前のオナニースレじゃないんだが?周りを見ろよ。
日頃、現実世界でまともに相手にされていないのがバレバレだぞ。
463 :
デフォルトの名無しさん :2010/07/04(日) 01:05:26
>>1 > 気に入らない質問やその他の発言はスルーの方向で。
最初の1行も読めないとか、日本人かも疑わしいわ。
ageられているのはお前みたいなキモイ奴を晒しageされていると気づけよ。
このスレにsageルールはないけど?
ID希望
465 :
精神障害者アスペ君の恥ずかしいレス :2010/07/04(日) 01:15:35
368 名前: ◆QZaw55cn4c 投稿日:2010/06/30(水) 23:23:11
>>344 fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?
どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。 <標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。 ※配列の使用は2つだけ。 例) 文字列入力→ABCDEFAABCDABC 削除文字列→ABC 結果文字列→DEFAD どなたか教えてください、お願いします。
467 :
デフォルトの名無しさん :2010/07/04(日) 01:35:50
IDが表示されない、だから相手が特定できないから自分にレスした奴を 虱潰しに煽る事で炙り出そうって魂胆だろ。一生見えない敵と戦うぞ、こいつw
>>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;
}
麻呂のクソースを超えるクソースは出てこない、間違いない
>>469 ※配列の使用は2つだけ。
って言われてるけど
>>471 はあ?確保してる配列は2つだけだろうが
脳みそヒヨコかよ
>>449 「ave」という文字がないのですがこれでいいんですかね?
474 :
デフォルトの名無しさん :2010/07/04(日) 14:29:58
>>453 handy.h はHandyGraphic という
グラフィックスライブラリを使うことを意味しています。
また学校のパソコンなのでわかりませんがおそらく
X Windowかと思われます。いいかげんですみません。
明日提出なのでよろしければ、どなたかよろしくお願いします。
[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まで] この問題が解ける方はいらっしゃいますでしょうか。
480 :
デフォルトの名無しさん :2010/07/04(日) 15:41:04
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な気がするのですが・・・ この部分の解説お願いします。
>>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
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 そろそろ、自分の苛立ちを見えない敵にぶつけないで良いよ。
今後無駄なレスをしても、スルーされるだけだからw
で、お前は俺を麻呂と思っているんだろ?麻呂があれから
騙りもあり、しばらく来ていなかったことも知らないとは・・・
そうやって見えない敵に噛み付いてなさいw
493 :
デフォルトの名無しさん :2010/07/04(日) 20:14:39
>>476 の書き込み全てが恥ずかしい。このスレに何しに来てんですか?
他人にお前こそと言う前に、議論するスレは他にありますので、そちらでやって下さい。
トリップ付けてまでバカ晒すなよ、ガキw
>>469 解答ありがとうございます。もしよろしかったら、使用する標準関数は、strncmp(),strcpy(),strlen()で書いてもらえないでしょうか?
少しも勉強しないんだな。それでいいのか若者
499 :
481 :2010/07/04(日) 21:37:31
>>483 どうもありがとうございます。納得できました。
ifの条件文に引っかからなくなる直前のxがsolutionとなる、という認識で大丈夫ですか?
[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日 よろしくお願いします。
>>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
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 zipはめんどくさいので放置。
できれば1レス、最低でもWEBだけで確認できる様に書きなおせ。
>>506 > 許容範囲内
とは誰が許容する範囲内なんだ。
具体的に書きなおせ。
最大友愛数、最大婚約数…
あれだけISOの標準スタイルについて述べられていたのに未だに int main() 笑 の奴がいるとかw
>>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) と同じ。
>>513 void main()でも別に構わんぞ
コンパイル通ればいいんだよ
>>516 これには異論があり。
個人的には、int main() でコンパイルできる環境で、main() が引数をかえさない、という main() 側の都合で void main() と宣言するのには疑問がある。
ま〜たこの話題かw ちょっと前にもどっかのスレで泥沼化してただろう? だれか過去ログはっておやり。
[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に記載した二つのプログラムを組み合わせて上記の条件を満たすような電卓プログラムを作りたいのですが,
私なりに見よう見まねで組み合わせて見たのですが,知識が足りず平方根を求める動作が働きません.
根本的に間違っている可能性もありますが,どなたか修正点を教えて頂けると幸いです.
よろしくお願いいたします.
あのな、isoだかなんだか知らんが、そんなもんただの標準だろ。 守らなきゃいけないルールじゃない。 単にコンパイラやソースが標準に沿っていますということを表明できるだけの意味しかないんだよ。 この世にはmainが存在しないプログラムをCで書くケースだって腐るほどあるし、 エントリ関数がWinMain()になっている世界で最も普及したコンパイラだってあるんだぞ。
>>518 このスレの先々代(135)、3月〜4月にかけて宿題が欠乏し宿題解き人が暇になったために泥沼化した。
結論としては、規格の上では void main() も int main() も合法だったかと。
>>521 情報トンクス! ていうかこのスレだったかw
x(1)、 x(2)、・・・とaは2000次元ベクトルとします。 N Σ || x(n)-a || / N || ・|| はノルム。 を高速に計算する方法わかりますか。
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が相当あって時間掛かりますが。 短縮する方法ありますか。
528 :
527 :2010/07/05(月) 22:35:42
面倒なので、 ||X-A|| = |x-a| + |y-b| と定義してしまうか。 すると、 |x-a| + |y-b| + |z-a| + |w-b| を求めるだけで簡単。
◆QZaw55cn4c はもりもりがんばってるなぁ。 定期的に叩かれるみたいだけどがんばれ。
やってることは怠け者の成績を上げてやることだけどなw
>>530 叩いてもらえる、というのは、コードをみてくださっている、というありがたい反応ですから、ウェルカムです。
ちょっと前の、あいかわらず頭の変な奴にかかわってしまったのは失敗ですが、スルーすることにしました。
でも今日はおやすみなさいです。
>>532 じゃあたまにのぞいて気になるとこあったらレスすることにするよ。
っても地力ぼちぼちありそうに見えるんで、重箱の隅ぐらいしか突っ込めないかも。
[1] 授業単元: Visual Studio 入門 [2] 問題 半乱順列の関数作成 [3] 環境 指定なし [3.1] OS:Windowsvista [3.3] 言語:c言語 [4] 期限:なし [5] 制限:なし 半乱順列の関数を作ってください!お願いします!!
[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 となっております。
>>535 >>476 は読み込んだあとソートしていますが、そのソート部分を削ればご所望のコードになるかと。
537 :
535 :2010/07/06(火) 00:18:01
>>536 似た問題があったのですね。ありがとうございました。
>>529 お答え頂きありがとうございます。
動作は申し分無いのですがこのプログラムだとstdio.h以外にmath.h等の関数ライブラリが見られます。
すみませんがstdio .h のみで動作することを前提でお願いしたいと思います。
また、授業では本当に基礎的な内容のみしか扱っておらず、ネットや本を見て勉強している段階ですので、なるべく基本的な分かりやすい形でプログラムを組んでいただけたら幸いです。
このとき、穏やかな表情の
>>529 の脳裏に、
慇懃無礼、という言葉が頭をよぎったという。
>>538 せっかく答えてくれた人に喧嘩売るのはやめようね
はいはい、もう答えなくて結構です
543 :
デフォルトの名無しさん :2010/07/06(火) 17:44:44
int main() 笑 なんて使う奴はスルーしてヨシ!
538です。 せっかく解答をして下さったにも関わらず、不快感を与える表現をしてしまいすみませんでした。 if 0とend ifの意味を理解していませんでした。 こちらの理解不足で本当に失礼しました。
◆QZaw55cn4c は古い人間でしょ?コードの書き方でバレバレ
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] その他の制限: なるべく簡潔に(新しい変数を定義したり)お願いします。見づらいですが改行が多いと怒られるので・・
お・に・い・ちゃ・ん、じゃなくて、お・じ・い・ちゃ・ん ♥
>>538 #if 0
から
#endif
までの間を削除してください。
わかりやすさについては、これが限界です。
>>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) と同じ。
>>545 確かに古いといわれたらそうかもしれません。
func(a, b)
int a;
char *b;
{
...
return 0;
}
と書いていたころもありました。
setq とか car とか cdr とかを乱発していたこともあります。
>>555 専用ブラウザを使っていますから、簡単ですよ。
557 :
デフォルトの名無しさん :2010/07/06(火) 19:31:06
>>547 >setq とか car とか cdr とかを乱発していたこともあります。
横レスだけど、そのネタはww
[H|T] -> とか言い出さないようにw
>>552 まあ、コード書けない煽りは無視で行きましょう。
>>552 その頃は
return (0);
と書いてたりしないか?
>>557 処理系をCで書く、という解説本を集めているんです。でも、いまんところ2冊しかみつかっていません。
やっぱり、そんな本は売れないんですかね。おもしろいんですけれどね。
563 :
デフォルトの名無しさん :2010/07/06(火) 19:51:18
>>560 ,562
Cに限らず、技術資料とかサンプルは英語の方が多いよね。
Google codeもよく使ったなあ。
お爺ちゃんお口くちゃ〜い、クソースなんて書くなよw
>>562 洋書まではあさる実力がない‥‥‥。でもながめてみたいもの。
著者名でよければ教えてください。
566 :
デフォルトの名無しさん :2010/07/06(火) 20:06:48
567 :
523 :2010/07/06(火) 20:42:03
>>526 >>524 回答ありがとうございます。
まさか一日かからずに終わらせてくれるとは思いませんでした。
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)); }
明日までにある宿題あるんですけど頼めますかね? すぐ貼ります
頼めます
>>572 ここまでは作った
#include<stdio.h>
int main(void)
{
return 0;
}
[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]) ; } }
連投すみません [3]環境 Windows、VC6.0、C [4]期限 7月7日 [5]配列まで よろしくお願いします。
>>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;
}
低額は計算済みにしておいて、再帰使えば。
結局イタチごっこだろ じゃあ非再帰ならいいのかと思って試したら、100000000円くらいが限界だった(メモリ確保できず) 割り算で出来る貨幣制度にしろってこった
580 :
デフォルトの名無しさん :2010/07/06(火) 23:50:38
コインに関する問題への解答ありがとうございます。
>>577 さんありがとうございます。
>>579 さん、非再帰の場合のプログラムをのせてください。お願いします。
最終的には、低額の計算だけにできるだろ。 基本は、一番高いコインで、埋めていき、最後(低額)だけ考慮する。
予想では、コインの最小公倍数になるまでは最大値のコインで支払って 最小公倍数を下回る所になったら、組み合わせを考慮する。
584 :
デフォルトの名無しさん :2010/07/07(水) 00:01:27
<<579さん、ありがとうございます。 ここで、第2問↓↓ 今も上で議論されていますが、このプログラム(<<577)の効率の解析をしてください。 「ある重要な演算1つに注目し、その実行回数(最悪の入力時における)を、入力 サイズを表すパラメータの関数として表す。最終的にはT(n,...)=O(n^2×・・・) のような評価式を求めてください。」できれば、その式を求める過程をお願いします。
O(1)だろ。
>>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;
}
>>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 ありがとうございます!
本当に助かりました。
[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に関してはできそうだったのですが、バーが表示されないために却下となってまいました。 皆さんにとっては大変簡単だと思いますがよろしくお願いします。 初心者ですみません。
>>551 ちがう。そういうことじゃない。ISO、ANSI準拠はプログラムの開始、主体となる関数を
mainとし、引数がある時と無い時でどう記述するか、標準スタイルを提唱している。
ただし、それはあくまでも 標準スタイル であり、各自の環境によって準拠しなくても構わない。
また、main関数の戻り値はint型とする。これは散々既出だから議論する必要なし。 自分はどうこうすると、根拠も無く意味も分からないスタイルを用いると 他者とコードをやり取りする場合は、弊害が起こるかもしれないが。 そもそも、ここでは個人的なやり取り、スタイルが通用するが C言語は何も個人が私用で使うだけでなく、世界に通じて商業用としても 普通に用いられている。それは工業規格も同じ事。だから少しでも 幅広く通用するスタイル、規格というのが必要になる。 ちなみに、CDやDVDなどもISO準拠で世界で通用する方式、規格が使われている。
さらに、C++では引数が無い場合は int main() としている。 あくまでも ANSI、ISO準拠の標準スタイルの話。個人的なスタイルには言及せず。
>>590 最大のコインを選ぶか選ばないかのときだけやればいい。
777円が最大なら 777*2-1以上までは777円を選んでおいてokのはず。
一枚選べる最大価格は777*2-1円だからこの辺から調べる。
コインが100円と99円としたとき。 297円 = 99*3円で100円を選ぶと失敗するから 599は間違えだな。 やっぱどのコインの倍数でもある最小公倍数がよさげか。
601 :
デフォルトの名無しさん :2010/07/07(水) 12:20:52
[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
>>604 おお同じ人がいたとはw
ありがとうございます!
>>607 ありがとうございます。
感謝感謝です。
>>550 ありがとうございました。
プログラムをしっかり理解出来るようもっと知識を深めたいと思います!
614 :
デフォルトの名無しさん :2010/07/07(水) 19:29:25
>>612 ありがとうございます!
助かりました。
見れました!
独自のライブラリも悪くは無いが 標準ライブラリ で済むならそれでおk
【質問テンプレ】 [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] その他の制限: よろしくお願いします
[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] その他の制限:無 よろしくお願いします
#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 の実行エラー どこを直せば良いのですか?
#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 の実行エラー これもお願いします。
#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 の実行エラー すみませんこれも駄目でした。 お願いします。
>>622 ありがとうございます。
しかし警告が出てしまいました。
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'unit_price' に対して参照が行われました。
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'num' に対して参照が行われました。
もしかして↓みたいな感じにしてない? int unit_price; // 単価 int num; // 個数 int total_price = unit_price * num;
>>625 なってます。
初心者ですみません。
正しいやり方教えてください。
int unit_price; // 単価 int num; // 個数 int total_price; printf( "買う商品の単価: " ); scanf( "%d", &unit_price ); printf( "個数: " ); scanf( "%d", &num ); total_price = unit_price * num;
>>627 できました!
どうもありがとうございました。
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の条件式の部分が分からなくて 助力を求めます
>>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; }
23円は15と8じゃダメですか? ><;
637 :
デフォルトの名無しさん :2010/07/08(木) 11:28:10
>>636 すいません!!23円のときは15と8が最小ですね。。
性帝トーマス△
640 :
デフォルトの名無しさん :2010/07/08(木) 12:17:43
>>638 33円 -> 15円1枚、10円1枚、8円1枚 が最小。
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;
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
ファイル処理の応用 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 ページを参照すること。
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
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
[1] 授業単元: [2] 問題文(含コード&リンク): 2〜9の数字を入力その数字に応じて図形を表示させる関数を作る 正方形 三角形 六角形 菱形 星 渦巻き 星と渦巻き以外できたからこの2つについて知りたい 例 7を入力したとき 左:渦 右:星 ******* * * * * * * * ***** * *** * * * ******* * *** * *** * * * * * ******* * * * [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: よくわからない 申し訳ないVS2008使ってる [3.3] 言語: C [4] 期限: 2010年7月13日 [5] その他の制限: 配列は禁止
>>648 ほー。配列は禁止。
printf("******* * * * \n");
printf(" * * * * \n");
printf("***** * *** \n");
printf("* * * ******* \n");
printf("* *** * *** \n");
printf("* * * * * \n");
printf("******* * * * \n");
は禁止?
面白いと思ってやってんの?
>>648 渦巻きの偶数パターンが分かればコードが書けるんだが
>634 ってさ、たとえば 36 のときみたいに解が複数あるときはどうすんの? 15,15,5,1 の4枚と、10,10,8,8 の4枚。
653 :
デフォルトの名無しさん :2010/07/08(木) 23:06:15
[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] その他の制限:ポインタ変数、データ構造まで習いました よろしくお願いします
>>651 特に指示はないからこっちに任せただと思う
だから左上からスタートで
********
*
****** *
* * *
* * * *
* **** *
* *
********
>>649 ifかswitchでそれをつくろうかと思ったがさすがにふざけてると思われそうなのでやめた
>>656 日本語でおk。偶数パターンを出力してからものを言え
>>657 すまなかった 6 4 2の順で
******
*
**** *
* * *
* *
******
****
*
* *
****
2は正方形でも右の形でもどっちでもいい
** **
** *
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; }
>>648 > 2〜9の数字を入力
2はどうなのよ、2の時は?
>
http://codepad.org ↑便利だ。
コンパイルまでしてくれる必要は無いんだけど、
もっと色々な言語(Pascalとかverilogとか)貼り付けて、
整形して表示してくれるアプローダ無いかな?
ideone.comは?整形して表示の意味がよく分からないけど
ideone.com は対応している言語が多いけれども、コンパイルエラーの表示に難があるからなあ。
http://ideone.com/ffzm5 正解は、
transform(radians.begin(), radians.end(), sines.begin(), (double (*)(double))sin);
整数を入力:18 1 2 3!? (中略) 13!? 14 15!? 16 17 18!? こんなプログラムはどうやって書くんですか?
さぁ、世界のナベアツ先生に聞いてちょっ
誘導されてきたんだなぁ。ってか宿題だったのか。
次は
>>1 を読もう。
[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 こうすれば文字列操作が不要になるんでは。
int isAho(int n)
{
if (n % 3 == 0) return 1;
while (n)
{
if (n % 10 == 3) return 1;
n /= 10;
}
}
>>675 最後にreturn 0;するの忘れてた。
30台もどうかとは思うが300、3000台にもなるとアホばかりで疲れるわ・・・
[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 初心者ですがよろしくお願いします。
ソートはなんならクイッ クソート があるでおじゃる
681 :
618 :2010/07/10(土) 09:33:45
その他制限はありません。一通り学びましたが初心者です。 よろしくおねがいします
>>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;
}
[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日まで よろしくお願いします。
[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日まで よろしくお願いします。
>>684 int i_minof(int x, int y){ return rand()&1?x:y; }
>>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日まで
よろしくお願いします。
>>687 ×小さい方の値は17です。
○小さいほうの値は49です。
何度も訂正すいません。
>>687 int i_minof(int x, int y){
if(x<y){
return x;
}
else{
return y;
}
}
690 :
689 :2010/07/10(土) 12:24:03
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] その他の制限:特にありません。よろしくお願いします。
クイックソートのソースをとりわけ、クイックソースと言うでおじゃる
698 :
697 :2010/07/11(日) 11:12:36
単調減少ではなく、単調増加でした
> while 型繰り返し > #include <stdio.h> ん〜〜〜
>>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);
}
math.hを使うことを宣言し マス! って言ってみたかった
>>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型にキャストをすると実行中にエラーが出るのですが何故でしょうか?
703 :
700 :2010/07/11(日) 11:56:42
>>702 ごめん
0 除算エラーだね
n の初期値を 0 から 1 に変更してちょ
>>702 n>=2 のとき
(double)(1+1/n)
は常に 1.0 になってしまうぞ
>>703 n=0→1でエラーはでなくなりました!
>>704 Googleさんで調べても分からなかったのですが
キャストするとなぜだめ(1.0になる)なのでしょうか・・・?
除数をキャストしてごらん。あるいはnをdouble型にする
>>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
インチをセンチに変換するプログラムを作れという課題が出たのですが、わかりません! 明日の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; }
>>708 return in * 2.56
あと、
fgets(str, 31, stdin);
は
fgets(str, 32, stdin);
でいい。
>>709 出来ましたああああ!!!!!!!!111
先週出た課題でずっと悩んでたんですがこれで提出できそうです!
あとプログラムの問題点まで指摘してくださってありがとうございました。
それから、次からはちゃんとテンプレを守ります。すみませんでした。
711 :
709 :2010/07/11(日) 16:08:05
>>708 失礼、
return in * 2.54;
だった。1 inch = 2.54 cm。
ちなみに、12インチ=1フィート=30.48cm、3フィート=1ヤード=91.44cm これ豆知識な。マイルの計算もしっかり出来ないと、参るぜ?
∧_∧∩))
( ・∀・)彡 パーン!
((⊂彡☆∩ _, ,_
⊂(⌒⌒(;`Д´)
`ヽ_つ ⊂ノ ←
>>712
パンパンパーン
∧_∧ ∩
( ・∀・)彡☆
⊂彡☆))Д´)
>>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] その他の制限:
なるべく簡単にしてください。お願いします。
721 :
名無しさん@そうだ選挙に行こう :2010/07/11(日) 23:08:44
>>719 ありがとうございます。でも、このプログラムをコンパイルしても、
続行するには何かキーを押してください
で終わってしまいます
>>721 実行ファイルと同じところに、なにか新しいcsv ファイルが作成されていませんか?
別に変でもないよ。処理の内面的な部分を知る課題だろ。
仕様をもとにプログラムを作成する、というのがまっとうだと思うんですが。 判じ物の問題は、「プログラム基礎」とか「暗号理論」という単元名とは全然違うのでは。
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の問を助けてください
>>679 亀レスですみません
ありがとうございました
>>725 何が言いたいのかさっぱり分からんが、プログラムを動かしている電子機器の
基本的な仕組みも知らないでコードを書くとか・・・どれも基本は同じだし。
IFや数値を扱うにしても、もう既に実装されているコンピュータの仕組みが
大きく関与しているし。
>>720 っつか、学んだ内容が分かればヒントが得られるかもしれないが・・・
法則が分からん。511までで何か数字を弄れば気づくかもしれんが。
735 :
デフォルトの名無しさん :2010/07/12(月) 06:29:39
2進数にしたときに1の数が順番に増えていくのだけはわかった。 ソートの条件はさっぱりだが。
736 :
デフォルトの名無しさん :2010/07/12(月) 07:07:43
順応性を高めなさい!そしてあるがままを受け止めなさい。
実験(数値実験、確認、解析) システムプログラミング(アプリケーション実装) マネジメント(ネットワーク構築 etc) 開発(OS,言語、処理系、ライブラリの整備) 教育(カルチャーの紹介) ....まだあるかも ことコンピュータの世界(実世界に非ず)の教育を 単一言語で行うことには相当無理があるよな
そんなのだいたいCでやってるという現実。
まアセンブラを言語と考えるのならこれ以上に万能な 言語は無いな
だからCみたいな面倒な言語を経験しておけば他のスクリプト言語も 簡単に使えるという意図なんだろう
お前らのCに対する意見、気持ちはよーく分かった。だから早く 初めてのCもしてこい、なっ!
>>738 Cが他の言語に対して圧倒的に強いのは
開発
だろな
教育できるような世界じゃないだろうけど
はい、Cなら色々と開発できます!
Cは非プログラミング言語で言うと英語みたいなもんだよ。 言語設計が優れてるか否かというよりも(まぁ優れてはいるんだろうが)、 みんなが使って、長い間使ったから、デカイ顔できるし信頼も置ける。
>>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 ? ? ?
こんな感じ
>>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以外の値が入力されるまで繰り返し勝負を続けるものを作成せよ。 よろしくお願いします。
>>751 (1)
i = left - 1; //(1)________
j = right + 1; //(2)________
>>751 (2)
return a->height - b->height; // (1)______ /*高さで比較*/
qsort(a, N, sizeof(person_t), (int (*)(const void *, const void *))compare); // (2)___________________________);
[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を参考にしていたのですが、
入出力表示の仕方などが良く分からなかったので、よろしくお願いします。
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):53!を正確に計算して出力するjavaプログラムを作成せよ。ここでは1桁 分の数を記憶するオブジェクトを多数作りそれらの協調で計算を進めること。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: c [4] 期限: 7月13日 よろしくおねがいします
[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] その他の制限:問題文中にある制限以外に制限はありません。 どうかよろしくお願いします
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):53!を正確に計算して出力するjavaプログラムを作成せよ。1桁 分の数を記憶するオブジェクトを多数作り計算するプログラムにすること。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: c [4] 期限: 7月13日 よろしくおねがいします
うぜえな
>>767 問題文だけ読むとjava
環境だけを見るとcっぽい
あくまで推測ですが・・・
769 :
760 :2010/07/12(月) 23:02:37
770 :
デフォルトの名無しさん :2010/07/12(月) 23:18:18
771 :
デフォルトの名無しさん :2010/07/12(月) 23:52:39
そういえば、より汎用的なソースコードに書き換えた麻呂に負けた悔しさなのか 素人麻呂相手に必死にに噛み付いていたあいつはどこへ行ったんだろうか?
>>773 そのより汎用的なソースとやらを教えてくださいな。
こんな時間に釣れるとは思わなかったよ、麻呂と勘違いして意味不明な 戻り値の話をしちゃったおバカさんw
/二__,--、r'"___、 ヾト、.ヽ レ'"~,-,、 ! ! ' '" ̄ .ノ\ヾ:、 K/ー'~^~_/ ヽミ:ー‐‐'" ヽ i !〉ー―'"( o ⊂! ' ヽ ∪ Y」_ i ∪ ,.:::二二ニ:::.、. l 、... ! :r'エ┴┴'ーダ ∪ ! !l .i、 . ヾ=、__./ ト=. ヽ 、∪ ― .ノ .,!
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は使わない方法で現状のコードを変更した程度で完成できればベストです。
lennaたん、かわいいよ、lennaたん
780 :
デフォルトの名無しさん :2010/07/13(火) 05:39:44
781 :
デフォルトの名無しさん :2010/07/13(火) 08:53:35
1*3*5*7*9*・・・*111を11で割った剰余を求めよ
A=1*3*5*7*9 B=13*・・・*111 とおくと、 与式は A*11*B と書ける。 これは 11 で割り切れる。 つまり、題意の剰余は 0 。
[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] その他の制限: なし
>>762 は環境はcですが、問題はjavaです。
どうかよろしくお願いします。
コンピュータ基礎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 の場合は「優秀」 と表示するプログラムを作りなさい。
>>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の問題です。 お願いします。
それ自身を含まない約数を足してイークォールか比較すりゃええがな 俺はメルセんヌ素数を使うけど
以下の入力をして、これを二次元配列に代入していく方法がわかりません。 当方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に代入する。
791 :
790 :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にこだわらなくても良いですが、なるべく単純にお願いします。
>>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;
}
>>778 >>694 と並行して作成しておりました。とりあえずできているものをあげておきます。
>>778 に示されているソースコードに沿って書き直す作業は、余裕があれば行います。
第一引数にターゲットとなる bmp ファイル名、第二引数に平均化した bmp ファイル名を指定します。
入力ファイルとしては、256色 bmp と 24ビット bmp に対応しています。出力ファイルは 24ビット bmp です。
http://codepad.org/M7WwUgUS
>>775 汎用的なソースとやらは、実は無いんですね。
>>785 >
>>762 は環境はcですが、問題はjavaです。
完成ソースをコンパイルする時のコマンドは、gcc、javacのどっち?
801 :
デフォルトの名無しさん :2010/07/13(火) 22:52:55
803 :
デフォルトの名無しさん :2010/07/13(火) 23:27:12
/ ̄\ │34nm | \_/ インテル! _|_|_ n: / \ n: || / ヽ || f「| |^ト | :::\::/::: | 「| |^|`| エーーックス |: :: ! } | <(゚)>::::<(゚)> | | ! : ::} ニジュウゴ ヽ ,イ ヽ (__人__) / ヽ ,イ エーーーッムッッ! \ `⌒´ /
>>798 javacです。
よろしくお願いします。
>>806 ファイルが消えてるみたいで
あつかましいのですが、もう一度あげていただくことは出来ないでしょうか
>>795 単にマクロで求める数値を適当に変えられる仕様にしただけであって
大して改変はしていなかったしw
811 :
デフォルトの名無しさん :2010/07/14(水) 01:00:16
AKB48の篠田と板野が好きです、けど モー娘。の石川梨華はもっと好きです。
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] その他の制限: 実行結果までできれば表示してほしいです
>>806 ん、例の出したり引っ込めたりか‥‥‥。
くせぇくせぇ、麻呂のクソースの臭いがぷんぷんすんぜっ
818 :
816 :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] その他の制限 特になし
fgets△〜
827 :
デフォルトの名無しさん :2010/07/14(水) 08:33:18
>>814 ありがとうございました
助かりましたっ!
for(j = i; j > 0 && n < a[j - 1]; j--) a[j] = a[j - 1]; a[j] = n; ってやるのが普通。
普通(笑) お前がそう思うんならそうなんだろう、お前ん中では
>>829 クソースを推敲したならお主が纏めて記述したのを提出するでおじゃるよ
いやよ、久々にこのスレを覗いたんだが、相変わらず毎年過去に出されたのと 似たようなものばっかでさ。たまには捻くれてクソースにしたくなるじゃん。 俺の勝手だがw
833 :
デフォルトの名無しさん :2010/07/14(水) 11:02:31
834 :
デフォルトの名無しさん :2010/07/14(水) 12:58:43
慣れないボイン太なんて使うもんじゃ〜ないなw
麻呂ならそこで malloc (麻ー呂っく)でおじゃる!
[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] その他の制限:特になし お願いします
#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; }
シフト演算の組合わせと 除算(/) と加算(+)のみで
[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 どうかよろしくお願いします。連投すみません。 どなたかわかる方お願いします
だから後は自分でJavaの中に例の数式と答えを表示するように 書き換えれば良いじょのいこ?w
test
examin
> 6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。 > [3.2] コンパイラ名とバージョン: gcc > [3.3] 言語:C 何度も何度も何度も何度もこのクソ野郎(#^ω^)ピキピキ
どいつもこいつも、麻ー呂っクソースを書けと言うのでおじゃるかっ!?
実数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関数を使う。 これお願いします。
>>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;
}
856 :
デフォルトの名無しさん :2010/07/15(木) 00:41:03
C(英文解析プログラム)
1.標準入力から単語を読み込み、単語を登録する。("EOR"という単語が入力されるまで繰り返す)
2.その後、標準入力から指定された単語に対して、その単語が登録されているか否かを出力する。
/*****要実装******/の部分を実装して上の動作をするプログラムに完成させてください。
http://codepad.org/npgTugA0
858 :
デフォルトの名無しさん :2010/07/15(木) 05:55:36
>>793 画像ファイルは1画素あたり24bitのファイルなのですが、ターミナルに
display r.bmp
などと入力すると
display: Length and filesize do not match (r.bmp).
と出てしまいます。
完全数を求める数式を記述するのはそう難しいことではない。 その数式だって、言語が違っても基本は共通しているだろ? 変数の扱いに差はあるけど。Javaで求めている人は、スレ違いだが 自分で基本部分くらい作れるだろ?
>>858 こちらの手元の環境(Vine Linux 4.2) では、再現しませんね。
>>1 のアップローダーに
1) もとの(3色の)ビットマップファイル
2) 生成された r.bmp
をアップロードして、URL をお伝えください。
カレンダー算出プログラム、こいやー!
>>862 旧暦との対応を示した今月のカレンダーを表示せよ
みたいなのか?
864 :
デフォルトの名無しさん :2010/07/15(木) 11:02:27
>>860 投稿しようとしても、
cgi-lib.pl: Request to receive too much data: 361023 bytes
と出てしまい、投稿できません…
>>864 >>1 では容量オーバーでしたね。失礼しました。
では、適当なアップローダーを使っていただけませんでしょうか。
私が試したものは、
http://www.dotup.org/ です。ダウンロードキーは指定しないようにしてください。
またダウンロード URL を忘れずに、お知らせください。
変換がうまくいかない bmp 元ファイルと、出力ファイル r.bmp をお願いいたします。
867 :
デフォルトの名無しさん :2010/07/15(木) 12:46:16
868 :
デフォルトの名無しさん :2010/07/15(木) 13:27:42
869 :
デフォルトの名無しさん :2010/07/15(木) 14:07:23
870 :
GK :2010/07/15(木) 15:04:07
プロギラミング技術は苦手なので教えてください。 演習5-1 テキストファイルの各行の最後には,復帰・改行を示すASCIIコードが付加されている.即ち,ファイルのもつ行数は復帰・改行の数をカウントすることによって計算できる. 上記性質を利用して,テキストファイルの行数を計算するプログラムを開発せよ.但し,復帰・改行に対応するASCIIコードは10である. テキストファイルの読み込み方法は講義資料でも解説したように,./a.out < hoge.txtとすればよい.
ほげぇ〜〜
【質問テンプレ】
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
http://files.uploadr.net/0cc81c1342/1.txt [3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:どちらでも可
[4] 期限:なし。
[5] その他の制限:<stdio.h>と<stdlib.h>以外のヘッダファイルを使用しないこと。
これお願いします。
>>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;
}
>>872 ありがとうございます。
もうひとつお願いなのですが、
>>871 と同じ実行結果が表示されるプログラムをwhile文のみを使ってお願いします。
>>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;
}
878 :
デフォルトの名無しさん :2010/07/15(木) 16:20:20
n個の文字列を読み込んだあと,その文字列を反転させるプログラムを作成せよ.ここで"反転"とは,例えば,"IKUNO"という文字列を入力した場合,出力を "ONUKI"と出力するものである. 【実行例】 nを入力せよ:2 1個目の文字列を入力せよ:nagata 反転した文字列は:atagan 2個目の文字列を入力せよ:ikuno 反転した文字列は:onuki よろしくお願い致します。
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日
[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 どうかよろしくお願いします。連投すみません。 どなたかわかる方お願いします
>>884 見てたら訂正しておいて。
while(i++<n) {
より上に i の初期値を書いてなかった。i=0; で
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日 よろしくおねがいします
>>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
>>889 お手数をおかけしました。
bmp ファイルの中に、bmp ファイルサイズそのものをセットしておく項目(プログラムでは bfSize にあたります)があります。
ビュアによっては、bfSize の値が bmp ファイルの実際のファイルサイズと一致していない場合には、エラーを出すものがあるんですね。
不幸なことに、私の環境のビュアは、どれも、bfSize の値には頓着しないものばかりだったようです。
892 :
デフォルトの名無しさん :2010/07/15(木) 21:48:09
>>731 cellってcoutでもいいですか?
あと、コンパイルしても、
入力ファイルをオープンできませんでした
と出て終わってしまうんですが…
>>892 仕様は問題文にしたがったつもりです。つまり、
"input.data" というファイルがプログラムと同じディレクトリになければ、
プログラムがエラーメッセージ "cannot open the input file." を画面に出力します。
cerr のかわりに cout としてもいいでしょう。厳密には意味が異なるのではありますが。
894 :
デフォルトの名無しさん :2010/07/15(木) 22:22:48
895 :
デフォルトの名無しさん :2010/07/15(木) 22:23:36
898 :
デフォルトの名無しさん :2010/07/15(木) 22:47:17
>>893 ごめんなさい。input.dataってどこから作ればいいんでしょうか…
>>898 Windows のメモ帳にあたるものは、linux ではなんでしょうかね。
とにかく、エディタで
1
3
5
6
7
とか適当な内容で、ファイル名が "input.data" のファイルをつくってください。
エディタが分からないわけはないはずだが。。。 hello worldどうやって書いたんだって話になっちゃう
901 :
デフォルトの名無しさん :2010/07/15(木) 23:10:26
>>899 という事はlinuxが無いとできないって事ですか…
自分でOSにLinuxに書いておきながら何いってんだ?
家にlinux環境がないってこと? 学校の演習PCがlinuxってことか
904 :
デフォルトの名無しさん :2010/07/15(木) 23:15:28
>>903 家にlinux環境がなくて、
学校で出た課題なんですが…
だから、linuxがないんです。
905 :
デフォルトの名無しさん :2010/07/15(木) 23:16:18
>>902 すみません。学校ではlinux使ってて、家では、Visual C++を使っているんです。
【質問テンプレ】
[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] その他の制限: なし
お手数をおかけしますがよろしくお願いします。
907 :
887 :2010/07/15(木) 23:53:53
908 :
デフォルトの名無しさん :2010/07/15(木) 23:55:43
>>719 >>717 の問題でプログラムで出力は、cout→streamになるんでしょうか?
普段は出力はcoutなんですが
>>905 メモ帳で実行ファイルと同じフォルダに。
910 :
デフォルトの名無しさん :2010/07/16(金) 00:11:59
>>909 メモ帳に書いて保存して、Visual C++でコンパイルしてもやっぱり何も起きないんですが…
>>910 実行ファイルと同じ場所に input.data がありますか?
913 :
デフォルトの名無しさん :2010/07/16(金) 00:15:52
914 :
デフォルトの名無しさん :2010/07/16(金) 00:20:23
>>911 メモ帳から保存する時って、そのC++のファイルに保存しないとダメなんですか?
普通に保存しているだけなんですが
>>914 実行ファイルがあるじフォルダに
input.dataを保存するだけ
[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++
>>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] その他の制限 できるだけ簡単なソースでお願いします><
925 :
924 :2010/07/16(金) 05:19:35
勢いで書いたらケーシングとかバラバラで、なんかごめん。 簡単なコードにはなってると思う。
>>890 ありがとうございました、助かりました。
>>923 "Was it a cat I saw?"が回文と判定されないぞ
928 :
デフォルトの名無しさん :2010/07/16(金) 09:28:56
tolowerつかえば?
それだけじゃだめだ ' 'や'?'も無視しなければ
マンドクセッ isalnum isalpha でも使えば?
#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; }
> 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 ありがとうございました。 すごく助かりました。
>>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;
}
リターン押して^Dというのがよくわからん ^Dを押すまで入力した文字をすべて対象にするのか?
943 :
デフォルトの名無しさん :2010/07/16(金) 14:41:56
入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること. 【実行例】 % ./a.out 1gattatgtga 11tgccgatatc 21gatatgattc (ここで ^D を押す) #ATG is 3 % よろしくお願いします。
CTRL + Z か?
>>945 実行ファイル名が ./a.out の場合は unix系OSのことが多い
つーことはターミナルの Ctrl-D は EOF を意味するだろう
>>943 その入力文字中の先頭に表示されている1とか11とか21がわからん
それから入力された文字を全部連結しないとATG == 3にならないよね
>>946 gets()で受けるとNULLを返すよな
だから二次元配列に入力したんだが指定文字列ではATG == 2にしかならない
先頭の1と11と21を無視して文字列を連結するんか?
950 :
デフォルトの名無しさん :2010/07/16(金) 15:58:57
>>915 実行結果を教えてくれませんか
メモ帳から自分が作ったプログラムがあるところに保存すればいいんですよね?
それはしてるんですが、できないんです…
今日学校で試さなかったの?
952 :
デフォルトの名無しさん :2010/07/16(金) 16:37:22
>>951 今日はこの授業はないので…すみません…
[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] その他の制限:
>>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;
}
>>956 です。
どなたか助けてください。お願いします。
>>916 実行例に疑問があります。
B を入力していますが、B なら「国」ですから、75 は「国」。
したがって出力は、
県 14.4 = 国 75
になると思うのですが。
[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を使うことも可。
961 :
デフォルトの名無しさん :2010/07/16(金) 19:54:52
>>962 実行例を見て、最大10個で-1が入力されたら終了って読み取れないのはダメだろ
965 :
デフォルトの名無しさん :2010/07/16(金) 20:34:31
>>964 すいません。そこまで分かりませんでした。
968 :
デフォルトの名無しさん :2010/07/16(金) 21:07:03
970 :
デフォルトの名無しさん :2010/07/16(金) 21:09:55
>>969 修正版ありがとうございます。今更問2の入力条件ですが、他のコメントの指摘通り10回入力または0以下入力で終了という問題でした。説明不足ですみませんでした。
>>953 をお願いします。問題の意味も分かりません。助けてください。
974 :
デフォルトの名無しさん :2010/07/16(金) 22:02:46
>>731 で作ってもらったプログラムをコンパイルして、メモ帳にinput.dataとして保存しても、上手くいきません。
本当に誰か助けてください
うちの環境だとBCCでもVC++でもBorland C++でもIntel C++上手くいくのはなんでだろ
なんで釣りしてんのか謎だわ。 うちはうまくいきましたよ。
>>974 input.data.txt になってるかもw
vmwarePlayer と ubuntu の vmdk イメージで linux 環境作っちゃえ
最初から vmwaretools もどきが入ってるから楽だよ
978 :
デフォルトの名無しさん :2010/07/16(金) 22:14:31
>>978 txtじゃダメなんですか?
ファイルの種類ってところを、すべてのファイルにすればいいんですか
次スレ立てます
>>978 エクスプローラでファイル名を後から"input.data" に変えればいいと思います。
983 :
デフォルトの名無しさん :2010/07/16(金) 23:09:39
>>982 ごめんなさい。エクスプローラってインターネットエクスプローラの事ですか
984 :
デフォルトの名無しさん :2010/07/16(金) 23:17:33
>>983 検索の開始ってところから、エクスプローラというのを見つけたんですが、そこから次はどこを押せばいいんでしょうか?
なにこいつ
拡張子も理解出来てないのか まずPCの基本的な使い方から勉強したほうが
[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++
ワロス
こんなに問題の重複がいままであったことがあるだろうか? 最近これどうなってんの?
いまさら過ぎて話しにならない。あんた新参か?このスレはもうかなり前からあるが 似た課題、同じ学校の別人が同じ課題を書き込むなんて、よくあったぞ?
そして、同じレポートを提出する。w
そして全員不可ww
>>991 マジで?
俺が来たのは
C/C++の宿題を片付けます 95代目
1 名前: デフォルトの名無しさん [sage] 投稿日: 2007/08/24(金) 17:28:30
このへんから。重複は2〜3スレに一つくらいのイメージだったが、
勘違いだったのかな。
2chを定期的に監視して、まだ存在しないパターンの課題を出力するプログラムを作れ。
課題:このスレを監視して担当教官に密告メールを送るプログラムを作れ
埋め
V V (´・ω・`) うさちゃんピース
1000 :
デフォルトの名無しさん :2010/07/17(土) 19:58:22
V V (´・ω・`) うさちゃんピース
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。