1 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 17:31:27 ] あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。 【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。 ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 前スレ C/C++の宿題片付けます 126代目 pc12.2ch.net/test/read.cgi/tech/1242655611/
3 名前:デフォルトの名無しさん [2009/06/08(月) 18:30:59 ] C言語 で特定の関数が返す値を表示させるには? testpg() があり、これは、ファイルをスキャン(日付の更新を確認するプログラムです。) コマンドライン上から、#testpg file として、使用します。 このプログラムは、スキャンして日付の更新があれば、1を返し、なければ、7を返します。 さて、Cのプログラムで、この7という帰り値を表示させたいのですが、どういうプログラムを書いてやればいいでしょうか?
4 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:45:21 ] >>3 テンプレ書いてくれ。
5 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:15:01 ] cin、coutを使う使わないも、入れた方がいいかもね
6 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:22:14 ] なんでC言語とC++を別々のスレッドにしないの。
7 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:24:05 ] 前スレ pc12.2ch.net/test/read.cgi/tech/1242655611/979 の解答 #include <stdio.h> int main(void){ char str[256+1], c0, c1; char *ptr; scanf("%s %c %c", str, &c0, &c1); for(ptr=str; *ptr!='\0'; ++ptr){ if(*ptr == c0) *ptr = c1; } puts(str); return 0; }
8 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:34:17 ] [1] 授業単元: [2] 問題文(含コード&リンク): 下記の実行結果になるプログラムを作成 abc + cba = 1333となるa,b,cを求めるプログラム 変数は下記を使用 int a ←ループカウンタ int b ←ループカウンタ int c ←ループカウンタ 【実行結果】 3桁の数字の2つの和が1333になるパターンを表示 419+914=1333 518+815=1333 617+716=1333 716+617=1333 815+518=1333 914+419=1333 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: [3.3] 言語:C [4] 期限: 今日中 [5] その他の制限: 三重for文を使用 よろしくお願いします
9 名前: ◆gYINaOL2aE mailto:sage [2009/06/08(月) 19:38:50 ] [1] 授業単元:応用C [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9378.txt [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: 多分TeraTerm [3.3] 言語: C [4] 期限: 2009年6月9日0時まで [5] その他の制限: 関数を自分で定義しないで、ソースで使用している構造体、変数を使って解く 書き掛けのソースで申し訳ないですが、どこが間違っているのかが分かりません。 よろしくお願いします。
10 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:44:26 ] 軽く疑問なんだけど、>>8 みたいなパズル性の高い問題(難易度が高いって意味じゃないよ)ができるからって、それって実際にプログラム関連の業務に役立つの?
11 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:49:53 ] 引き出しが多くなることはいいことだ 頭が柔軟なことはいいことだ レベル
12 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:51:48 ] >>10 立つ。 プログラミングにおいても重要な抽象化思考を鍛える役に立つからな。 以下も参照 www.mars.dti.ne.jp/~kshara/progmath.html
13 名前:デフォルトの名無しさん [2009/06/08(月) 19:53:31 ] >>8 #include<stdio.h> int main(void){ int a=1,b=1,c=1,d,e; for(a=1;a<=9;a++){ for(b=1;b<=9;b++){ for(c=1;c<=9;c++){ d=100*a+10*b+c; e=a+10*b+100*c; if(d+e==1333){ printf("%d+%d=%d\n",d,e,d+e); } } } } return 0; }
14 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:55:38 ] >>12 やっぱりそうなんだ ところで>>8 くらいだと現役のプログラマの人なんかみんな一瞬でできちゃったりするもんなの?
15 名前:デフォルトの名無しさん [2009/06/08(月) 19:59:53 ] >>8 はa,b,c以外の変数作っちゃいけないのかな ならこれで #include<stdio.h> int main(void){ int a,b,c; for(a=1;a<=9;a++){ for(b=1;b<=9;b++){ for(c=1;c<=9;c++){ if((100*a+10*b+c)+(a+10*b+100*c)==1333){ printf("%d%d%d+%d%d%d=1333\n",a,b,c,c,b,a); } } } } return 0; }
16 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:03:06 ] >>13 ,>>15 分かりやすくありがとうございました。助かりました。
17 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:04:35 ] >>前974 >>前980 nCnでオーバーフローするから。 int combination(int n,int r){ int a; a=n-r, if(a==0) a=1;
18 名前:デフォルトの名無しさん [2009/06/08(月) 20:41:04 ] [1] 授業単元:C演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9380.txt [3] 環境 [3.1] OS: Windows XP [3.3] 言語: C言語 [4] 期限:6月9日12時まで [5] 関数までは教わりました、よろしくお願いします
19 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:45:58 ] >>17 オーバーフローじゃなくてゼロ除算だろ 直すべきはfactorial int factorial(int x){ int i, f=1; for(i=x; i>=1; --i) f *= i; return f; }
20 名前:デフォルトの名無しさん [2009/06/08(月) 20:57:40 ] >>7 ありがとうございました!
21 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:07:54 ] >>18 #include <stdio.h> int capital = 0; int lower = 0; int number = 0; int other = 0; void count(int c) { if ('A' <= c && c <= 'Z') capital++; else if ('a' <= c && c <= 'z') lower++; else if ('0' <= c && c <= '9') number++; else other++; } void print(void) { int i; printf("capital : "); for (i = 0; i < capital; i++) printf("*"); printf("\n"); printf("lower : "); for (i = 0; i < lower; i++) printf("*"); printf("\n"); printf("number : "); for (i = 0; i < number; i++) printf("*"); printf("\n"); printf("other symbol: "); for (i = 0; i < other; i++) printf("*"); printf("\n"); } int main() { int c; while ((c = getchar())!=EOF) count(c); print(); return 0; } 棒グラフにするなら、起点は揃えたいな
22 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:08:57 ] [1] 授業単元:C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9382.txt [3] 環境 [3.1] OS: Windows XP [3.3] 言語:C言語 [4] 期限:6/9 [5] その他制限:do while文を使用 よろしくお願いします。
23 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:26:51 ] >>22 こんな感じで。動作は保障しない。今回は読み違いしてないといいが。。。 #include <stdio.h> int main(){ int i=0,n=0,sum=0; puts("どんどん整数を入力してね♪(ただし、-9999で終了)"); do{ printf("%d回目:",i+1); scanf("%d",&n); if(n == -9999) break; sum+= n; i++; }while(1); printf("合計:%d\n",sum); printf("平均:%.2f",i==0 ? 0.0:sum/i); return 0; }
24 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:28:48 ] >>23 (double) がいるかも
25 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:30:41 ] sum/iのところdoubleにキャストしなきゃだね
26 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:41:38 ] >>22 >>23 >>24 ありがとうこざいます。 大変助かりました。
27 名前:23 mailto:sage [2009/06/08(月) 22:00:00 ] あら、抜けがあったか。申し訳ない。
28 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:20:33 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): クイックソート、バブルソート、選択ソートの三種のソート関数 それぞれ、void qusort(int[]), busort(int[]) sesort(int[]),を作れ。 並び順は、降順。ソートした結果は引数配列と同じ配列に返してやる。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C (ただし、C++コンパイラ互換コード) [4] 期限: ([2009年06月14日まで] [5] その他の制限: qsort()などの常にあるソート関数は使わない よろしくおねがいします。
29 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:30:42 ] "組", 名前,数字,数字, 名前,数字,数字, 名前,数字,数字, "組", 名前,数字,数字, 名前,数字,数字, 名前,数字,数字, みたいな感じで一塊になってる部分が連続してるファイルを読み込んで処理したいのですが fscanfで名前,数字,数字,の部分を処理するプログラムはできたのですが"組"の部分はどういう感じでやればよいのですか? fscanfだと型が合ってないと無限ループになるので"組"の行を読み込んですんなりと下の行に行くやり方がわかりません
30 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:32:53 ] >>29 fgets で一行読む sscanf の返値でフォーマットチェックする
31 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:34:59 ] こんな時に正規表現があれば・・・!
32 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:35:50 ] >>30 ありがとうございました
33 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:46:56 ] C/C++って文字列がどんどん足されていくみたいな感じでしたっけ?何か関数を使わないといけませんか?
34 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:56:54 ] strcopyか
35 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:57:38 ] >>33 string でも使ってろ
36 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:01:39 ] >>30 この場合ってもし返り値が同じだったらどうすれば良いんですかね?
37 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:04:49 ] >>36 よく読め ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/scanf.3.html
38 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:06:04 ] >>9 ・while(EOF == iKara)をwhile(EOF != iKara)に修正 while(EOF == jKara)をwhile(EOF != jKara)に修正 ・トランザクションに同じコードがある場合ループでi++をl++に修正 ・&dを%dに修正 &sを%sに修正 ・fprintfに改行"\n"をつける ・実行例のマスタで社員番号を全角→半角に修正、全角空白を半角に修正 でとりあえず出力はされる
39 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:16:45 ] [1] 授業単元:Linux [2] 問題文(含コード&リンク): サンプルコード kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9385.txt に手を加え、パス検索機能を追加する。 例えば、/bin/ls と入力することで動いていたが、lsだけで実行可能とする。 >ls >ls?r >date?I >gcc-oexp1exp1.c >./exp1 >./exp1 1 この6つのコマンドを実行し、実行結果を提出する。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 明日中にはお願いします。 [5] その他の制限: わかりやすい内容でお願いします。
40 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:42:27 ] >>39 35行目を修正でいいんじゃない? 35c35 < if(execv(argv[0],argv[])==(-1)){ --- > if(execvp(argv[0],argv)==(-1)){ 関数 execlp() と execvp() は、指定されたファイル名がスラッシュ (/) を含んでいない場合、シェルと同じ動 作 で実行可能なファイルを探索する。検索パスは環境変数 PATH で指定されたパスである。
41 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:43:14 ] 前スレ>>974 の問題3、10000桁まで計算できるようにした。 ただし、えれぇ高速なマシンが必要。最適化とか皆無^^; やりかたがアレだとかメモリがナニだとかはナシな方向で・・・ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9386.txt
42 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:02:17 ] >>41 ウホッ! 約10KBの構造体をそのまま関数引数や戻り値にするところが豪気だねw でもプログラムはすごくわかりやすくて性格のいい人が書いたのではという 印象を持った。
43 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:04:10 ] >>39 whileの中の p=(char *)&command; がかなりヤバげに見えるんだが。 キャストもアンドもいらない。
44 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:06:58 ] >>41 i[n]に0〜9でなく0〜99を割り当てたら、効率良くね?
45 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:15:19 ] >>44 >>41 が実装したのはBCD それじゃただの多倍長 効率はいいが実装が面倒、特に除算 階乗を使う、とかいう糞縛りがなければnCrの答えはパスカルの三角形をDPで作った方が速い
46 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:16:31 ] 多倍長演算の肝は、自然数をどう表現するか。 自然数 10000を10進で表現するか、16進で表現するか。2進で表現するか。または1234進数とか その解釈で色々と実装が変わってくる。 PCは2進が効率良いから2進がベーすで、人がわかりやすいようにバイトで数字を表記する。
47 名前:46 mailto:sage [2009/06/09(火) 00:25:12 ] BCDぐぐってみた。 こういう表現もあるんだねぇ。
48 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:46:42 ] BCDは通常、頻繁にそれを文字?(????表現)に直すニーズが ありながらも、???な計算が必要な(もっぱら??関係)用途に 用いられる。桁数が?えるとそれを???に変換する処理コストは バカにならない。???に直すのに便利な形式が取られるのが普通。 なんで殆どの場合??のベキ乗進法が取られる。
49 名前:39 mailto:sage [2009/06/09(火) 01:15:05 ] >>40 execvpとしてみたのですが、 >gcc -o exp1 exp1.cでとても長いエラーが出力されます。 テストですので、hello worldで普通に実行できましたのでソースが悪い訳じゃないと思います。
50 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:28:31 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 姓,名,年齢,郵便番号,電話番号の各データをメンバとする構造体配列を下記のように宣言し その構造体配列にキーボードからデータを逐次入力して,最大100名のデータを格納できるようにしなさい。 但し,入力の終了は,姓入力の際にnullと入力することによって判定しなさい。 また,入力が終了した時点で,格納された複数名のデータをすべて出力するようにしなさい。 #define MAXREC 100 struct namelist { char last_name[21], first_name[21]; int age; char zip[9], tel[13]; } meibo[MAXREC]; また、入力が終了した時点で,格納された複数名のデータを郵便番号順に出力するようにプログラムを変更しなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:6月9日23:59 [5] その他の制限:特になし
51 名前:デフォルトの名無しさん [2009/06/09(火) 01:32:42 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 共用体を用いて、2バイト整数の上下バイトを入れ換えて暗号化する関数 short encode(short)を作り キーボードから入力した整数を暗号化/復号化するプログラムを作りなさい [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:6月10日 [5] その他の制限: main関数の部分は次のコードを用いなさい。 short encode(short); main() { int n, m, k; while (1) { printf("整数を入力して下さい(終了は0) = "); scanf("%d", &n); if (n == 0) break; m = encode(n); /* 暗号化 */ printf("\n\t%d を暗号化すると %d になります。\n", n, m); k = encode(m); /* 復号化 */ printf("\n\t%d を復号化すると %d になります。\n\n", m, k); } }
52 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:50:27 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 整数係数の多項式について,その次数と係数をキーボードから入力して連結リストに格納し 次に格納された多項式を画面に出力する。 そして、xの実数値をキーボードから入力して多項式の値を求めるプログラムを作れ。 出力例 整数次数の多項式を入力します! 最大次数を入力してください:5↵ 小さい次数から整数係数を順に入力してください X^0の整数係数:-1↵ X^1の整数係数:2↵ X^2の整数係数:3↵ X^3の整数係数:0↵ X^4の整数係数:0↵ X^5の整数係数:-1↵ 多項式は次の通り -X^5+3X^2+2X-1 Xの値を入力してください:0.8↵ 多項式の値は 2.192320 です [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:6月10日 [5] その他の制限: なし
53 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:50:44 ] >>28 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9387.c
54 名前: ◆N8hH7z85ug [2009/06/09(火) 04:25:21 ] [1] 授業単元: 文字列とポインタ [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9388.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: ([09年6月10日10:00まで] [5] その他の制限: 検索していてよく見かけた#include <string.h>というのは習っていません。 #include<stdio.h>しか使ったことはありません。 よろしくお願いします。
55 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 06:15:46 ] >>52 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9389.txt
56 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:35:13 ] >>49 何故かgcc固有のインクルードパスを無効と判定するみたい。 -vで出力みると違いがでるね。 原因とか回避方法はわからない。宿題テーマとは離れてしまうかも?
57 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:14:25 ] >>54 #include <stdio.h> int is_non_wordc(int c) { if (0x30 <= c && c <= 0x39) /* 数字 */ return 0; if (0x40 <= c && c <= 0x5a) /* 大文字英字 */ return 0; if (0x61 <= c && c <= 0x7a) /* 小文字英字 */ return 0; return 1; } int main(void) { char word[100]; int i = 0, c; while ((c = getchar()) != EOF) { if (!is_non_wordc(c)) { word[i++] = c; } else { word[i] = '\0'; if (i != 0) printf("%s\n", word); i = 0; } } return 0; }
58 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:29:51 ] fscanfの引数の場合分けがうまくいかないんだけどどうして? 引数がfloatとcharで20こあって"%d%f・・・・・",hairetu,&suuji・・・・とあるんだけど返り値=1にした時しかうまくいかない switchにしてcase20はおkだけどcase 2とかdefaultにはcaseが正しくありませんってなる
59 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:38:17 ] >>58 >>1
60 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:41:22 ] >>59 すまん
61 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:07:57 ] >>050 姓,名,年齢,郵便番号*,電話番号の各データをメンバとする構造体配列 >>028 の選択ソート使ってます。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9390.txt
62 名前:デフォルトの名無しさん [2009/06/09(火) 15:03:43 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9391.txt [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: 6月11日9:00 [5] その他の制限: 特になし よろしくお願いします
63 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:34:52 ] >>62 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9393.txt
64 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:39:08 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9394.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6月12日24:00まで] [5] その他の制限:特になし よろしくお願いします
65 名前:デフォルトの名無しさん [2009/06/09(火) 15:50:26 ] >>63 ありがとうございました。助かりました
66 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:51:25 ] >>62 #include <iostream> using namespace std; template<class T, int N> class Counting { T* array_; public: Counting(T* Array) { array_ = Array; } T sum() { T result = 0; for (int i = 0; i < N; ++i) result += array_[i]; return result; } T ave() { return sum() / N; } void modify(int index, T value) { array_[index] = value; } }; int main() { const int s1 = 5, s2 = 3; int a[s1] = { 1, 2, 3, 4, 5 }; Counting<int, s1> ca(a); cout << ca.sum() << " " << ca.ave() << "\n"; ca.modify(2, 10); cout << ca.sum() << " " << ca.ave() << "\n"; double b[s2] = { 1.2, 2.5, 3.5 }; Counting<double, s2> cb(b); cout << cb.sum() << " " << cb.ave() << "\n"; cb.modify(1, 4.8); cout << cb.sum() << " " << cb.ave() << endl; return 0; }
67 名前:66 mailto:sage [2009/06/09(火) 15:52:06 ] 解決済みでしたね。ごめんなさい。
68 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:25:57 ] >>051 unionを使った暗号化と複合化。 #include <stdio.h> short encode(short); main() { int n, m, k; while (1) { printf("整数を入力して下さい(終了は0) = "); if(scanf("%d", &n) != 1) { scanf("%*s"); continue; } if (n == 0) break; m = encode(n); /* 暗号化 */ printf("\n\t%d を暗号化すると %d になります。\n", n, m); printf("\n\t0x%04hx を暗号化すると 0x%04hx になります。\n", n, m); k = encode(m); /* 復号化 */ printf("\n\t0x%04hx を復号化すると 0x%04hx になります。\n", m, k); printf("\n\t%d を復号化すると %d になります。\n\n", m, k); } } short encode(short data) { union { short sdata; struct { char cdata1, cdata2; } c; } u; char tmp; u.sdata = data; tmp = u.c.cdata1, u.c.cdata1 = u.c.cdata2, u.c.cdata2 = tmp; return u.sdata; }
69 名前:デフォルトの名無しさん [2009/06/09(火) 16:59:14 ] [1] 授業単元: 情報処理 >[2] 問題文(含コード&リンク): >kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9396.txt >[3] 環境 > [3.1] OS: Windows > [3.2] コンパイラ名とバージョン: gcc > [3.3] 言語: C/C++ >[4] 期限: 2009年6月11日23:30まで >[5] その他の制限: 問題文にもありますが、3問目以外規制があります。 > >全三問です。 よろしくお願いいたします。
70 名前:デフォルトの名無しさん [2009/06/09(火) 18:18:19 ] 1] 授業単元: c++ [2] 1次元配列a[1]〜a[10]の各要素に任意の数値を格納した後すべて加算した合計値を表示せよ。 [3] 環境 [3.1] OS: XP [3.2] turbo c [3.3] c++ [4] 今週金曜日まで。 [5] まだ習いはじめて一年なのでそんなには進んでません。
71 名前:66 mailto:sage [2009/06/09(火) 18:25:46 ] >>70 #include <iostream> using namespace std; int main() { double a[11]; a[0] = 0; for (int i = 1; i <= 10; ++i) { cout << "input a[" << i << "] > "; cin >> a[i]; a[0] += a[i]; } cout << "total: " << a[0] << endl; return 0; }
72 名前:デフォルトの名無しさん [2009/06/09(火) 18:27:21 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9398.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: visual C++ [3.3] 言語: C++ [4] 期限: 今日中 [5] その他の制限: 特になし よろしくお願いします
73 名前:デフォルトの名無しさん [2009/06/09(火) 18:29:51 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9399.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: visual C++ [3.3] 言語: C++ [4] 期限: 今日中 [5] その他の制限:特になし 72共々よろしくお願いします
74 名前:デフォルトの名無しさん [2009/06/09(火) 19:43:45 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):最大256文字の文字列を入力し、単語数を出力しなさい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:6月11日 8:00 [5] その他の制限:最大256文字の文字列を引数とし、最初の単語の文字数を返す関数を作成し、それを用いる。