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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

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

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 149代目
http://hibari.2ch.net/test/read.cgi/tech/1307166756/
2デフォルトの名無しさん:2011/06/22(水) 23:13:47.75
◆QZaw55cn4c
3デフォルトの名無しさん:2011/06/22(水) 23:22:12.13
2 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
4デフォルトの名無しさん:2011/06/23(木) 00:00:58.21
150スレ記念問題
[1]授業単元:C言語演習
[2] 16個の整数を昇順に整列したものを標準出力する関数
void sort(int a,intb,intc,intd, int e,int f,int g,inth, inti,int j,int k,int l, int m,int n,int o,int p)
を書きなさい
但しコードには配列演算子やポインタ演算子が現れてはならない。
[3]Linux(Ubuntu)/gcc4.5/C言語
[4] この150スレが終わるまで
[5]どのようなパターンでも確実に整列されることが必要です。
出来るだけ短いコードでお願いします。
5デフォルトの名無しさん:2011/06/23(木) 00:10:41.09
◆QZaw55cn4c
6デフォルトの名無しさん:2011/06/23(木) 09:13:27.08
>>3
透明あぼ〜んにしとけ。捗るぞ。
7デフォルトの名無しさん:2011/06/23(木) 12:46:39.73
それじゃあぼん報告できないしw馬鹿じゃねw
8デフォルトの名無しさん:2011/06/23(木) 13:04:43.81
>>4
死ね
9デフォルトの名無しさん:2011/06/23(木) 13:13:42.60
[1] 授業単元:構造体ポインタ[2] 問題文:
name (文字列50字)
height ←実数
weight ←実数
bmi ←実数
これらをメンバとする構造体 pationdata の配列を定義する(charやintやdoubleなどをそれぞれの前につけます)。
複数の人のデータを入れれる構造体 pationdata の配列を作成する。
datafile.dat からデータを読み込んで、配列に保存していく。
ここで注意するのは、ここで上から下までデータを読み込んだ時、データ数に合わせた配列が出来るようにすること。
以下 datafile.dat の中身例
tom 1.65 59.2
jim 1.80 63.5
(左から名前、身長、体重)
配列に保存したデータを関数 BMI ( ) に渡す。
この中で bmi を計算し、構造体の bmi メンバに保存する。
配列に入っているデータを datafile2.dat に出力する。
以下 datafile2.dat の中身例
tom 1.65 59.2 21.70
jim 1.80 63.9 22.10
(右端にBMI数値を追加)
最後にdatafile2.datを閉じる。

尚、datafile.datの中身は自由に決めてよい。
bmi = weight / height * height
(BMIは体重÷身長の2乗)
10デフォルトの名無しさん:2011/06/23(木) 13:14:23.59
>>9続き
[3] 環境
 [3.1] OS: Windows7
 [3.2] Visua Studio 2008
 [3.3] 言語: C
[4] 期限: 6月28日09:00まで
[5] その他の制限:ありません
11デフォルトの名無しさん:2011/06/23(木) 13:50:20.31
>>8
そのような発言はいただけませんねぇ。
私には彼女がいますが。それでもあなたは考えをなんでし
どういう了見でしょうかねぇ。
12デフォルトの名無しさん:2011/06/23(木) 20:21:23.35
[1] 授業単元:C
[2] 問題文(含コード&リンク):
読み込むファイルはinput.txtに固定されていたが、それを拡張する。
プログラム実行時に、ファイル名を入力させ、ファイルが読み込み出来ない場合には、ファイル名を繰り返し再入力させるように改良しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:今すぐに頼む!

13デフォルトの名無しさん:2011/06/23(木) 22:20:59.31
>>12
> 読み込むファイルはinput.txtに固定されていた

何が?
14デフォルトの名無しさん:2011/06/23(木) 22:31:51.45
>>12
これより前の問題を使った問題か?
15デフォルトの名無しさん:2011/06/23(木) 22:39:15.54
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
ランダムに100個の実数を表示しよ。
 実数の範囲は-10.000<=x<=10.000とする。
 [3] 環境
 [3.1] OS: Windows7
 [3.2] gcc
 [3.3] 言語:C
[4] 期限:6月24 9:00
16デフォルトの名無しさん:2011/06/23(木) 23:01:01.10
>>12
どう考えても、それは単一の問題じゃないだろう。
中学生以上の人間なら、それを理解したうえで、前の問題も併せて書きこむと思うが。

とりあえず、それの前のプログラムとの一番大きな違いは、
fopenの引数に書いていたであろう"input.txt"の部分を
文字列として扱うことのできる変数(あえてあいまいな言い方にしてる)にし、その変数に
事前に、外部からの入力を行った結果を格納しておくこと、だな。

そして、fopenの戻り値を調べ、失敗の間は入力とファイルオープンをループをする。
という処理も書いておく必要があるって感じでファイト。
17デフォルトの名無しさん:2011/06/23(木) 23:51:17.11
よろしくお願い致します。
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://codepad.org/fhdTth9b
ここまで出来て居て、このプログラムが動くようにして欲しいです。

また、行列式 A は
http://uproda11.2ch-library.com/3022327nt/11302232.jpg
の行列式で、X がどの数値になれば式が成り立つかもお願いしたいです・・。

あともし出来ればなのですが、このプログラムを別の形式のプログラムで同じ様に動くプログラムを
組んで頂けると嬉しいです(´・ω・`)
ごめんなさい。

[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン:visual stadio 2008
 [3.3] 言語: c++
[4] 期限: 6月24日の朝10時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
http://codepad.org/fhdTth9b
のプログラムの感じで、とにかく動くようにして頂きたいです・・(´・ω・`)
18デフォルトの名無しさん:2011/06/24(金) 00:16:10.52
習ってないものは使うなというクズ教師のいる日本に未来はないな
何のための勉強かと
19デフォルトの名無しさん:2011/06/24(金) 00:24:49.10
>>17
男か女かはっきりしてください
20デフォルトの名無しさん:2011/06/24(金) 00:50:52.27
>>19
一応、女です
帰省中だから少しレス遅れちゃいます(´・ω・`)
21デフォルトの名無しさん:2011/06/24(金) 00:56:51.77
>>20
W52SAで写メっておっぱいうp
22デフォルトの名無しさん:2011/06/24(金) 00:58:40.02
>>17
なんかLUから間違ってるな・・・
23デフォルトの名無しさん:2011/06/24(金) 01:01:24.05
2chで女アピールする奴これだから痛い
24デフォルトの名無しさん:2011/06/24(金) 01:03:35.89
>>23
うっせえ!俺は女の味方だ!
25デフォルトの名無しさん:2011/06/24(金) 01:16:22.75

26デフォルトの名無しさん:2011/06/24(金) 01:24:39.75
画像のはピボット選択しなくて解けるの?
27デフォルトの名無しさん:2011/06/24(金) 01:38:11.01
>>17
一応コンパイルは通るけど写真の行列の計算は出来ないよ
ピボット選択してないから計算途中に無限大とか出てきてた
http://ideone.com/Kllk3
28デフォルトの名無しさん:2011/06/24(金) 02:12:21.04
29デフォルトの名無しさん:2011/06/24(金) 09:58:25.58
なるほど、そうですか…
30デフォルトの名無しさん:2011/06/24(金) 13:00:04.22
>>15
期限過ぎたけど
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int i;
for (i = 100; i; i--) {
if (!(i % 10))
putchar('¥n');
printf("%7.3f ", (rand() % 20000 - 10000) / (double) 1000);
}
return 0;
}
31デフォルトの名無しさん:2011/06/24(金) 15:45:00.57
>>30
いつもタブ幅8なの?
4が多いのかと思ってたけどそうでも無いのか。
32デフォルトの名無しさん:2011/06/24(金) 16:42:53.21
[1] 授業単元:べき乗計算の関数
[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
べき乗(nのk乗)を求める関数int power(int n, int k)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:来週の金曜日まで

33デフォルトの名無しさん:2011/06/24(金) 16:51:51.79
>>32
#include <stdio.h>

int power(int n, int k) {
int sum = 1;
while (k--)
sum *= n;
return sum;
}

void test(int n, int k) {
printf("%d^%d = %d\n", n, k, power(n, k));
}

int main()
{
test(1, 2);
test(10, 4);
test(2, 10);
getchar();
return 0;
}
34デフォルトの名無しさん:2011/06/24(金) 16:55:59.77
作成し、作成して、作成(咲き制)した
35デフォルトの名無しさん:2011/06/24(金) 18:02:12.34
どなたか>>9-10をお願いします…
36デフォルトの名無しさん:2011/06/24(金) 18:09:36.46
>ここで注意するのは、ここで上から下までデータを読み込んだ時、データ数に合わせた配列が出来るようにすること
これが意味分からん
つーか言葉通りだと不可能
reallocして余分無いようにしとけってことなのかなぁ
それともデータ数決め打ちってことか?
37デフォルトの名無しさん:2011/06/24(金) 18:40:03.35
>>36
読み込むファイルの中身が変化しても、対応出来るようにする。という意味です。

不可能ならば、その『データ数決め打ち』のように、個人の解釈で構いません。
38デフォルトの名無しさん:2011/06/24(金) 18:42:49.88
>>37
ありがとう
言われてみればそのほうが自然ですね
変な考えしていたようです

別にこの課題やるわけじゃないが
39デフォルトの名無しさん:2011/06/24(金) 20:38:04.15
[1] 授業単元: 課題
[2] 問題文(含コード&リンク): http://loda.jp/vip2ch/?id=2239
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日までによろしくお願いします。
40デフォルトの名無しさん:2011/06/24(金) 20:51:33.92
41デフォルトの名無しさん:2011/06/24(金) 20:59:27.15
[1] 授業単元: 課題
[2] 問題文(含コード&リンク): http://loda.jp/vip2ch/?id=2240
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日まで。
42デフォルトの名無しさん:2011/06/24(金) 21:04:15.88
問題文は内容を少しくらいここに書けよ
リンク先で見てください?どんだけ上から目線で依頼してんだよ
43デフォルトの名無しさん:2011/06/24(金) 21:05:07.47
docx がよめないです。
44デフォルトの名無しさん:2011/06/24(金) 21:10:35.46
開くの怖いな
放置
45デフォルトの名無しさん:2011/06/24(金) 21:39:54.41
>>40
ありがとうございます!!
本当に助かりました!!
46デフォルトの名無しさん:2011/06/24(金) 21:40:46.38
ニュイルスです☆(ゝω・)vキャピ
47デフォルトの名無しさん:2011/06/24(金) 21:43:17.59
>>41
内容に支障ないだろうから、問題文をテキストで上げ直すか、ここに書いてみて
48デフォルトの名無しさん:2011/06/24(金) 21:46:06.25
もういいです
49デフォルトの名無しさん:2011/06/25(土) 06:49:32.90
>>41
#include <stdio.h>
int main()
{
enum {NAME, TEL};
char s[100][2][100], name[100];
int num = 0, i, flg = 1;
puts("実行結果");
printf("人数 > ");
scanf("%d", &num);
for (i = 0; i < num; i++) {
printf("%d人目:\n", i);
printf("名前 > ");
scanf("%s", s[i][NAME]);
printf("電話番号 > ");
scanf("%S", s[i][TEL]);
}
puts("\n電話帳");
for (i = 0; i < num; i++)
printf("%s, %s\n", s[i][NAME], s[i][TEL]);
printf("\n名前 > ");
scanf("%s", name);
for (i = 0; i < num; i++) {
if (!strcmp(name, s[i][NAME])) {
printf("%s, %s\n", s[i][NAME], s[i][TEL]);
flg = 0;
}
}
if (flg)
puts("該当者なし");
}
50デフォルトの名無しさん:2011/06/25(土) 09:01:43.51
[1] 授業単元:階乗計算の関数
[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
階乗(n!=n*(n-1)*…*2*1)を求める関数int factorial(int n)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:来週の金曜日まで

51デフォルトの名無しさん:2011/06/25(土) 09:06:22.51
誤字マッチョ
52デフォルトの名無しさん:2011/06/25(土) 09:52:49.42
>>50
#include <stdio.h>
#include <math.h>
int factorial(int n)
{
int result;
for (result = 1; n > 0; n--)
result *= n;
return result;
}
int main(int argc, char **argv)
{
int i;
for (i = 1; i < argc; i++) {
int v = atoi(argv[i]);
if (v > 0) /* 問題の定義通り。一般的な定義ではv >= 0 */
printf("%d! = %d\n", v, factorial(v));
}
return 0;
}
53デフォルトの名無しさん:2011/06/25(土) 10:10:49.68
[1] 授業単元: 構造体
[2] 問題文(含コード&リンク):
問1:極座標形式の複素数を2つ読み込み,それぞれの複素数の絶対値,2つの複素数の和・差・積を出力するプログラムを作成せよ.
問2:名前を読み込み,配列 telbook を検索して,その名前に該当する人の電話番号を出力するプログラムを以下を穴埋めして作成せよ.
問3:問2の関数 search() を以下のように変更せよ.ただし,ドット演算子(.)を使用してはならない.アロー演算子(->)を用いること.
書式
struct person *search(struct person *p, int n, char *name)
返り値
pで指し示されたアドレスから長さnのperson型の構造体の配列に名前nameの人が格納されている要素がある場合はその要素へのポインタ.そうでない場合はNULL.
http://loda.jp/vip2ch/?id=2246
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:本日中
54デフォルトの名無しさん:2011/06/25(土) 12:29:05.49
>>53
入力例がないと解けない
r(cos(θ) + isin(θ))を入力させてパースするの?
55デフォルトの名無しさん:2011/06/25(土) 12:57:39.55
>>54
お前の目は節穴か?
56デフォルトの名無しさん:2011/06/25(土) 14:08:56.58
極座標(r,θ)を入力させればいいでしょ
57デフォルトの名無しさん:2011/06/25(土) 14:10:53.98
>>55
ファイル落とすとかだりーよ
58デフォルトの名無しさん:2011/06/25(土) 14:21:35.02
俺もファイルなんて落としてないから>>53から言っただけだけどな
59デフォルトの名無しさん:2011/06/25(土) 14:49:47.64
double absComplex(struct Complex aArg)
{
return aArg.r;
}

struct Complex multComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;

ret.r = aArg.r * bArg.r;
ret.theta = aArg.theta + bArg.theta;

return ret;
}

struct Complex subComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;

ret.r = sqrt(aArg.r * aArg.r + bArg.r * bArg.r + 2 * aArg.r * bArg.r * cos(bArg.theta));
ret.theta = aArg.theta - acos((aArg.r * aArg.r + ret.r * ret.r - bArg.r * bArg.r) / (2 * aArg.r * ret.r));

return ret;
}
60デフォルトの名無しさん:2011/06/25(土) 16:25:03.44
>>53
問1
ttp://ideone.com/B3pyn

イレギュラーな入力を仮定しないならwhile取っ払ってscanfだけでおk

問2,3
元コード無し
61デフォルトの名無しさん:2011/06/25(土) 17:37:34.31
なんでわざわざdocとかrtfとかテキストエディタで見られないようなもので平気で出してくるんだろう
まさかそこまで素人なの?
62デフォルトの名無しさん:2011/06/25(土) 17:44:00.13
釣りだからに決まってるだろうが
63デフォルトの名無しさん:2011/06/25(土) 20:56:46.31
[1] 授業単元:文字記号描画によるキャラクタ操作
[2] 問題文(含コード&リンク):
文字や記号を使って、画面にキャラクターの絵を描画する。1,2,3,4の入力を行なった場合に、それぞれ異なる絵に切り替わるようなプログラムを作成しなさい。
なお、0が入力されるまで繰り返し操作ができるものとする。
プログラムは、4種の表示ごとに4つの関数を作成することとする。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:来週の金曜日まで


64デフォルトの名無しさん:2011/06/25(土) 21:14:01.08
>>63
絵のデータplz
65デフォルトの名無しさん:2011/06/25(土) 21:27:17.88
>>61
なんでdocも読めない素人か口出してくるの?
テキストしか使えない人は引っ込んでたらいいのに・・・
66デフォルトの名無しさん:2011/06/25(土) 22:00:19.82
>65
どこの誰が作ったかわからないファイルを開きたくないんだよ。
>65のPCがどんなウィルスにやられているかわからないよ。
すぐにスキャンしたほうがいいかも。

どうしても表とか、スライドにしたいときはgoogle docsという手も
あるんだし。
67デフォルトの名無しさん:2011/06/25(土) 22:12:59.62
今やツイッターにある「これ絶対チェック!!http〜」をクリックしたらウイルスにかかることもあるぐらいだからな。

慎重にならざるを得ない。
68デフォルトの名無しさん:2011/06/25(土) 22:40:22.03
>>66
スキルの低い人はこれだから困る
安全にdocを開く方法をマスターしてくれ
69デフォルトの名無しさん:2011/06/25(土) 22:42:21.00
スキルのある人だけが解けばいいじゃない
無理なら文句言わずにスルーでおk
70デフォルトの名無しさん:2011/06/25(土) 22:50:05.97
>>63
AAでいいみたい

QBとか好きな奴でいいよ
71デフォルトの名無しさん:2011/06/26(日) 00:15:01.27
>>68
>安全にdocを開く方法をマスターしてくれ

kwsk
72デフォルトの名無しさん:2011/06/26(日) 01:09:29.21
73デフォルトの名無しさん:2011/06/26(日) 01:12:26.45
74デフォルトの名無しさん:2011/06/26(日) 02:17:33.92
携帯からだからテンプレに沿ってなくてすまん

簡単なデータベースマネジメントシステムをCで作ってるんだがデータをロードする際の
while (fgets(buf, 100, fp) != NULL) {
strcpy(p->name, buf);
}
これは何がいけないんだろう
pは構造体を指すポインタでnameはその中のchar型の配列
bufもchar型の配列

75デフォルトの名無しさん:2011/06/26(日) 02:29:29.36
>>74
>これは何がいけないんだろう
どのようにいけなかったのか、詳しく。
あと、name のサイズは?

コードを codepad で晒すと回答が早いかも。
76デフォルトの名無しさん:2011/06/26(日) 02:30:17.89
しらねえが。
p.nameでないか。
77デフォルトの名無しさん:2011/06/26(日) 03:02:06.04
>>76
>pは構造体を指すポインタ
78デフォルトの名無しさん:2011/06/26(日) 03:04:28.03
>>74
fgetって改行コードもbufに読み込むんだけどそれは分かってるよね?
79デフォルトの名無しさん:2011/06/26(日) 03:16:07.26
nameのサイズは100
実行が泊まっちゃうっていうエラー

改行までをp->nameに入れるライプラリ関数はあるのだろうか
80デフォルトの名無しさん:2011/06/26(日) 03:21:20.77
81デフォルトの名無しさん:2011/06/26(日) 04:07:29.11
>>80
ソースコードは問題を再現可能な最低限の量にしろ
そうすることで自己解決できる場合がほとんど

fopenの成否に関わらずfgetsしてるけど入力したファイル名はちゃんと存在してる?
82デフォルトの名無しさん:2011/06/26(日) 04:48:06.83
ロードの関数がひどすぎw
83デフォルトの名無しさん:2011/06/26(日) 04:54:45.38
pが確保されてないんですけお・・・
84 ◆QZaw55cn4c :2011/06/26(日) 08:10:59.48
>>79
そのための◆QZaw55cn4c謹製 char *mygetline(FILE *fp); です。いちどお試しあれ。
85デフォルトの名無しさん:2011/06/26(日) 08:31:45.90
>>79
>実行が泊まっちゃうっていうエラー

エラーメッセージもちゃんと伝えられないなら、マ辞めた方がいいかも。
86デフォルトの名無しさん:2011/06/26(日) 09:07:52.87
>80

不具合が出るときの操作手順の提示がないとわからないよ。

とりあえずメニューで7のload選択時とします。

>83指摘のリスト用バッファが確保されていないことが、不具合の原因でしょう。
registerの場合はnewListを呼んでノードを確保してリストにつないでいます。
loadListの中では、1レコード読み込むごとに、newListを呼ぶ必要があると思いますよ。
87デフォルトの名無しさん:2011/06/26(日) 09:43:29.44
[1] 授業単元: 構造体
[2] 問題文(含コード&リンク):問1~問3までの問題について解答お願いします。http://codepad.org/IhwnSjHF
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日まで。
88デフォルトの名無しさん:2011/06/26(日) 10:15:43.76
>>87
問1って和求める関数ないけどどうでもいいの?
89デフォルトの名無しさん:2011/06/26(日) 10:30:12.71
エラーで見れん。
俺だけか?
90デフォルトの名無しさん:2011/06/26(日) 10:50:09.82
>>87
お前後から付け足ししてんじゃねーぞ
91デフォルトの名無しさん:2011/06/26(日) 11:01:46.41
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
92デフォルトの名無しさん:2011/06/26(日) 11:45:55.20
お前もいい加減邪魔だよ
93デフォルトの名無しさん:2011/06/26(日) 12:07:59.90
>>92
NGワードにいれとけ
94デフォルトの名無しさん:2011/06/26(日) 12:23:37.82
お断りします
95デフォルトの名無しさん:2011/06/26(日) 14:32:24.07
[1] 授業単元:プログラミング言語基礎
[2] 問題文(含コード&リンク):
10人分の数学の得点を整数で入力し、60点以上の人数、60点未満の人数を求めるプログラムを作成しなさい。
[3] 環境
[3.1] OS: Windows7 
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:6月28日まで
[5] その他の制限:for文とif〜else文を使っておねがいします
96デフォルトの名無しさん:2011/06/26(日) 14:49:56.05
>>95
#include <stdio.h>
int main()
{
int tokuten[10] = {0}, i, ijo60 = 0, miman60 = 0;
for (i = 0; i < 10; i++) {
printf("%d人目: ", i + 1);
scanf("%d", &tokuten[i]);
if (60 <= tokuten[i]) {
ijo60++;
} else if (tokuten[i] < 60) {
miman60++;
}
}
printf("60点以上は%d人\n", ijo60);
printf("60点未満は%d人\n", miman60);
}
97デフォルトの名無しさん:2011/06/26(日) 15:01:22.52
>>96
なんで普通に...

if(60 <= tokuten[i]){
 ijo60++;
} else {
 minan60++;
}

ってしないの?
98デフォルトの名無しさん:2011/06/26(日) 15:57:24.29
>>59ですけどaddComplex()が抜けてるようですが、どう書けばいいですか?
99デフォルトの名無しさん:2011/06/26(日) 16:03:26.44
59は間違ってる
struct Complex subComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;

ret.r = sqrt(aArg.r * aArg.r + bArg.r * bArg.r - 2 * aArg.r * bArg.r * cos(aArg.theta - bArg.theta));
ret.theta = aArg.theta - acos((ret.r * ret.r + aArg.r * aArg.r - bArg.r * bArg.r) / (2 * ret.r * aArg.r));

return ret;
}
addは
struct Complex addComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;

ret.r = sqrt(aArg.r * aArg.r + bArg.r * bArg.r + 2 * aArg.r * bArg.r * cos(aArg.theta - bArg.theta));
ret.theta = aArg.theta + acos((ret.r * ret.r + aArg.r * aArg.r - bArg.r * bArg.r) / (2 * ret.r * aArg.r));

return ret;
}
100デフォルトの名無しさん:2011/06/26(日) 16:22:01.69
>>99
ありがとうございます
101デフォルトの名無しさん:2011/06/26(日) 18:23:07.93
>>92
ちゃんと◆QZaw55cn4cって付けろよクズ
102デフォルトの名無しさん:2011/06/26(日) 18:25:24.36
◆QZaw55cn4ct
103デフォルトの名無しさん:2011/06/26(日) 18:26:42.37
>>97
なんでかって言われれば、最初0-100の範囲だと思って作ってあとから消したからだな
ミスだなすまん
104デフォルトの名無しさん:2011/06/26(日) 18:31:59.17
>>96
>>97
ありがとうございました
105デフォルトの名無しさん:2011/06/26(日) 18:33:33.42
>>103
あ、いや別に責めるつもりはなくて、純粋になんでかなと
思っただけだから、気にしないで。
106デフォルトの名無しさん:2011/06/26(日) 18:36:14.12
>60点以上の人数、60点未満の人数

問題文がこうあるから、忠実に反映したのかと思ってた。
107デフォルトの名無しさん:2011/06/26(日) 21:25:25.72
[1] 授業単元: 課題
[2] 問題文(含コード&リンク):名前を読み込み,配列 telbook を検索して,その名前に該当する人の電話番号を出力するプログラムを以下を穴埋めして作成せよ.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日
108デフォルトの名無しさん:2011/06/26(日) 21:27:15.22
#include <stdio.h>
#include <string.h>
#define MAX 100
struct person {
char name[MAX];
char telno[MAX];
};
int search(struct person telbook[], int n, char *name)
{
/* ... */
}
int main(void)
{
char name[MAX];
struct person telbook[] =
{ {"Taro", "090-111-1111"},
{"Hanako", "090-222-2222"},
{"Ichiro", "090-333-3333"},
{"Jiro", "090-444-4444"},
{"Hanayo", "090-555-5555"} };
int n = 5; /* 電話帳に登録された人数 */
int idx;

printf("名前 > "); scanf("%s", name);
idx = search(telbook, n, name);
if (idx < 0) {
printf("該当者なし\n");
} else {
printf("%s\n", telbook[idx].telno);
}
return 0;
}
109デフォルトの名無しさん:2011/06/26(日) 21:30:31.08
[1] 授業単元: 課題
[2] 問題文(含コード&リンク):
上のプログラムの関数 search() を以下のように変更せよ.ただし,ドット演算子(.)を使用してはならない.アロー演算子(->)を用いること.

書式
struct person *search(struct person *p, int n, char *name)
返り値
pで指し示されたアドレスから長さnのperson型の構造体の配列に名前nameの人が格納されている要素がある場合はその要素へのポインタ.そうでない場合はNULL.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日
110デフォルトの名無しさん:2011/06/26(日) 22:11:12.00
何も言わず再掲を繰り返す・・・
コミュ能力欠如しすぎだろ・・・
111デフォルトの名無しさん:2011/06/26(日) 23:41:08.19
男は黙ってスルー
112デフォルトの名無しさん:2011/06/27(月) 14:28:50.28
>>109
#include <stdio.h>
#include <string.h>
#define MAX 100
struct person {
char name[MAX];
char telno[MAX];
};
struct person *search(struct person *p, int n, char *name)
{
int i;
struct person *pussy = NULL;
for (i = 0; i < n; i++)
if (!strcmp((p+i)->name, name))
return p + i;
return NULL;
}
int main(void){
char penis[MAX];
struct person vagina[] =
{ {"Taro", "090-111-1111"},
{"Hanako", "090-222-2222"},
{"Ichiro", "090-333-3333"},
{"Jiro", "090-444-4444"},
{"Hanayo", "090-555-5555"} };
int n = 5; /* 電話帳に登録された人数 */
struct person *anal;
printf("名前 > "); scanf("%s", penis);
anal = search(vagina, n, penis);
if (anal) { printf("%s\n", anal->telno);
} else { printf("該当者なし\n");}
return 0;}
113デフォルトの名無しさん:2011/06/27(月) 20:45:33.27
[1] 情報処理演習T
[2] 整数を読み込み,その整数より小さい3の倍数をすべて表示するプログラムを作りなさい.
ただし,for文を用いた方法とwhile文を用いた方法の両方を考えて,ひとつのプログラムにまとめること.
[3] 環境
 [3.1] MacOS
 [3.2] xcode
 [3.3] C言語
[4] 明日の夜10時まで
[5] 特になし

よろしくお願いします。
114デフォルトの名無しさん:2011/06/27(月) 20:47:42.00
すべてとか無理な気がしないでもない
115デフォルトの名無しさん:2011/06/27(月) 20:54:11.07
>>113
#include <stdio.h>
#define FOR
int main()
{
int unko = 0;
scanf("%d", &unko);
unko -= unko % 3;
#ifdef FOR
for (; 0 < unko;){
#else
while (0 < unko) {
#endif
printf("%d ", unko);
unko -= 3;
}
}
正の倍数ってことでいいんだろうなってことにしといた
116デフォルトの名無しさん:2011/06/27(月) 21:18:00.74
変数名で自己紹介しなくてもいいのにw
117デフォルトの名無しさん:2011/06/27(月) 21:22:51.77
>>113
http://codepad.org/Cz1slClR
pythonなら簡単なのに
118デフォルトの名無しさん:2011/06/27(月) 21:25:39.42
>>117
なんでこのスレに来たの?
119デフォルトの名無しさん:2011/06/27(月) 23:32:44.08
pythonコードの汚さは異常だし
LL初心者って1行に詰め込みすぎるよね
120デフォルトの名無しさん:2011/06/28(火) 07:54:38.88
宗教戦争再開

プロセス終了時にmemset(,0,sizeof(..)を呼び出しmallocする奴は市ね
121デフォルトの名無しさん:2011/06/28(火) 08:05:25.20
>>120
しかけかたが下手ですね。宿題の回答をみて、こいつは沸騰しやすいやつだと読み取って、
狙いをつけて急所を逃さずしつこく絡まないと、スルーされるだけですよう。

このスレでそれがうまいのはQZ、しかけられた相手はほとんど例外なく、燃え上がる。
QZが間違っていることのほうが多いが、それと楽しませてくれるのとは、また別の話。
122デフォルトの名無しさん:2011/06/28(火) 08:32:06.49
どこがうまいのか具体的に説明して下さい
123デフォルトの名無しさん:2011/06/28(火) 09:27:26.26
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
124デフォルトの名無しさん:2011/06/28(火) 11:11:43.95
[1] 授業単元:プログラミング演習 1
[2] 問題文(含コード&リンク)
結果が以下のようになるC言語プログラムを作りなさい。
行列A,Bの各要素はscanf関数を使って標準入力から設定すること

Matrix A
5.0 4.0 3.0
4.0 3.0 2.0
3.0 2.0 1.0

Matrix B
1.0 2.0 3.0
2.0 3.0 4.0
3.0 4.0 5.0

Matrix C = A - B
4.0 2.0 0.0
2.0 0.0 -2.0
0.0 -2.0 -4.0

Matrix D = A * B
22.0 34.0 46.0
16.0 25.0 34.0
10.0 16.0 22.0

[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:6月29日
よろしくお願いします。
125デフォルトの名無しさん:2011/06/28(火) 12:38:37.39
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 (1) 下記に示したプログラム aとb の機能の違いを説明せよ
 (2) b で追加された関数を活用するため、検索Keyが複数ある場合にすべての候補を出力するプログラムに改造せよ。
 (3) 改造したプログラムのかんたんな動作原理、設計方針を述べよ。
プログラムa:http://www.dotup.org/uploda/www.dotup.org1742455.c
プログラムb:http://www.dotup.org/uploda/www.dotup.org1742457.c
(2)で求めるプログラム実行例:http://www.dotup.org/uploda/www.dotup.org1742458.txt
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] 言語: C
[4] 期限: 2011年6月29日22:00
[5] その他の制限: 特になし

よろしくおねがいします。
126デフォルトの名無しさん:2011/06/28(火) 12:57:42.83
[1] C言語演習
[2] @ http://codepad.org/om7viTIZ を参考に、if文とfor文を使って
3×3の奇数魔方陣を表示するプログラムを作成しなさい。
A @を改良し、奇数を入力してその大きさの魔方陣を表示するプログラムを作成しなさい。
 [3.1] Windows7
 [3.3] C言語
[4] 期限: @ 今日の19時まで A 明日の19時まで
[5] 配列まで
わかる方どうかよろしくお願いします。
127デフォルトの名無しさん:2011/06/28(火) 13:00:15.08
>>125
(1) bは何個あるかも教えてくれる
(2)http://ideone.com/v2bR1
(3)seachによって見つけた要素の次の要素から先をseachにかけることによってsurveyによって得られた個数をすべて見つけるようにした

全部列挙するならむしろservey要らない気がするんだけど
使えと書いてあるから一応返り値を利用という形にしてみた
128デフォルトの名無しさん:2011/06/28(火) 13:03:45.37
>>127
ありがとうございます!
129デフォルトの名無しさん:2011/06/28(火) 13:11:36.34
>>124
#include <stdio.h>
int main(void)
{
int i, j, k;
double A[3][3], B[3][3], C[3][3], D[3][3];

printf("Matrix A\n");
for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", A[i] + j);

printf("\nMatrix B\n");
for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", B[i] + j);

printf("Matrix C = A - B\n");
for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) C[i][j] = A[i][j] - B[i][j];
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) printf("%.1f ", C[i][j]);
printf("\n"); }

printf("\nMatric D = A * B\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++) {
D[i][j] = 0.0;
for(k = 0; k < 3; k++) D[i][j] += A[i][k] * B[k][j]; }
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) printf("%.1f ", D[i][j]);
printf("\n"); }

return 0; }
130デフォルトの名無しさん:2011/06/28(火) 13:38:23.71
>>126
A
#include <stdio.h>
#include <stdlib.h>

int main(void) {
int i, j, k, n, **m;

scanf("%d", &n);
if(n & 1 == 0) return 0;

m = malloc(n * sizeof(int*));
for(i = 0; i < n; i++) m[i] = calloc(n, sizeof(int));

for(i = 0, j = n / 2, k = 1; k <= n * n; i--, j++, k++) {
if(i < 0) i = n - 1;
if(j == n) j = 0;
if(m[i][j]) {
i = (i + 2) % n;
j = (j + n - 1) % n; }
m[i][j] = k;
}

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

return 0;
}
131デフォルトの名無しさん:2011/06/28(火) 13:46:38.63
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://codepad.org/EEw71Jn2
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011/7/1
よろしくおねがいします


132131:2011/06/28(火) 13:54:04.71
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://codepad.org/DVzYjrvW
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011/7/1
>>131を改良で作る問題です。

よろしくおねがいします
133 忍法帖【Lv=3,xxxP】 :2011/06/28(火) 14:19:05.25
aa
134デフォルトの名無しさん:2011/06/28(火) 14:44:46.38
135デフォルトの名無しさん:2011/06/28(火) 14:52:04.34
>>130
できればif文、for文以外の関数を使用せずに作れませんか?
(習っていない関数は使用できないので)
@の方もわかればお願いします。
136デフォルトの名無しさん:2011/06/28(火) 14:57:11.62
ifもforも関数ではありません
それよりprintfもscanfもだめなのかよwwwwwww
137デフォルトの名無しさん:2011/06/28(火) 15:01:09.83
>>136
いやそれは大丈夫。さすがに習ってるし。
138デフォルトの名無しさん:2011/06/28(火) 15:08:25.62
>>137
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, j, k, n, m[100][100] = {0};
scanf("%d", &n);
if(n & 1 == 0) return 0;
for(i = 0, j = n / 2, k = 1; k <= n * n; i--, j++, k++) {
if(i < 0) i = n - 1;
if(j == n) j = 0;
if(m[i][j]) {
i = (i + 2) % n;
j = (j + n - 1) % n; }
m[i][j] = k;
}

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

じゃぁこんな感じで
ちなみ俺は>>130じゃない
139デフォルトの名無しさん:2011/06/28(火) 15:15:42.96
>>138
&演算子は習っていないので、何かで代用できませんか?
140デフォルトの名無しさん:2011/06/28(火) 15:17:06.95
n % 2 == 0
141デフォルトの名無しさん:2011/06/28(火) 15:21:51.60
>>140
%演算子も習っていないので、他ので代用できませんか?
142デフォルトの名無しさん:2011/06/28(火) 15:24:41.55
もう
if(n & 1 == 0) return 0;
ととっぱらっていいよ
もともと不完全なエラー処理だし
printf("奇数を入力してください");
に差し替えとけばおk
143デフォルトの名無しさん:2011/06/28(火) 15:26:30.19
>>140
#include <stdlib.h>という文(?)は習ってないのですが、
なんとか書き換えられませんか?
あと、>>141は自分ではありません。さすがに習ってるし。
144デフォルトの名無しさん:2011/06/28(火) 15:27:48.85
>>143
mallocのためのものなので消していいよ
てか消し忘れてた
145デフォルトの名無しさん:2011/06/28(火) 15:37:09.90
>>144
たびたびすみませんが、return(0); の使用回数を1回にできませんか?
(2回使うのはまだ習っていないので)
146デフォルトの名無しさん:2011/06/28(火) 15:55:56.21
>>145
宿題人に片付けてもらおうっていうアフォのためのスレだからこんなこと言うのはばかられるんだろうが、
「習ってないから」で勉強しない理由にはならんぞw
学校ってのは教えを乞いに行く場所じゃなく勉強方法を学ぶ場所と思えよw
147デフォルトの名無しさん:2011/06/28(火) 16:00:27.92
>>146
おいやめろ
馬鹿が量産された方が市場が肥えていいんだよ
148デフォルトの名無しさん:2011/06/28(火) 16:03:46.37
>>146
習ってない文を使ってると突っ返される。
だから嫌でも習ってる文だけを使って作らないとダメなんだ。
149デフォルトの名無しさん:2011/06/28(火) 16:23:56.25
課題に制約が明記されていれば別だが、教科書があるんだから自分で先取り
してたって不思議じゃない。褒められこそすれ突っ返される理由にはならない。
もちろん程度はある。バカのQZには理解できないだろうが。
150デフォルトの名無しさん:2011/06/28(火) 16:34:17.78
>>149
うちでは基本的に「教えてないことは使ってはいけない」という制約が
あるようなもの。
後、@分かる方お願いします。差し迫ってるので。
(Aも早い方が助かりますが。)
151デフォルトの名無しさん:2011/06/28(火) 17:08:01.96
後出しで、あれは習ってないこれも習ってないと言われるんじゃ、やる気は無い。
152デフォルトの名無しさん:2011/06/28(火) 17:14:01.65
>>151
使えるのはif文、if〜else文、for文、あとはprintfとscanfくらい。
153デフォルトの名無しさん:2011/06/28(火) 17:37:08.61
それじゃmain関数や変数の宣言できないし、標準ヘッダーもインクルードできないし、
演算子だって何も使えないらしいし、まともなプログラムを作るのは無理だな。
154デフォルトの名無しさん:2011/06/28(火) 17:41:20.18
ネタだろ、
レスは出来るのにずっとsageないし
155デフォルトの名無しさん:2011/06/28(火) 17:49:10.45
>>153
#include <stdio.h>
int main(void)
{
変数宣言

プログラム

return 0;
}
みたいな感じ。使える演算子は+,-,*,/,%,=,==,<,>,<=,>=,&&,||,++,--。
そしてプログラムのなかではreturn 0; は使えない。
156デフォルトの名無しさん:2011/06/28(火) 17:53:25.33
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
プログラムの実行時間を計れ。

例えば
#include<stdio.h>
int main(void)
{
printf("jikkoujikan");
return 0;
}
の実行時間をプログラム実装によって実行時間が表示されるようにせよ。
[3] 環境
 [3.1] windows7
 [3.2] gcc
 [3.3] C言語のみ
[4] 期限:今日の19時
[5] c言語のみ
157デフォルトの名無しさん:2011/06/28(火) 19:09:53.06
>>156
#include<time.h>
...

clock_t s=clock();
...

printf("Elapsed time: %f second.\n",(double)(clock()-s)/CLOCKS_PER_SEC);
...
158デフォルトの名無しさん:2011/06/28(火) 19:17:50.06
[1] 授業単元:べき乗計算の関数
[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
べき乗(nのk乗)を求める関数int power(int n, int k)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:来週の金曜日まで

159デフォルトの名無しさん:2011/06/28(火) 21:12:02.45
誰か>>138のプログラムをreturn 0;一回だけ使う
プログラムに書き換えてくれませんか?
160デフォルトの名無しさん:2011/06/28(火) 21:25:14.03
>>159
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, j, k, n, m[100][100] = {0};
scanf("%d", &n);
if((n & 1) != 0) {
for(i = 0, j = n / 2, k = 1; k <= n * n; i--, j++, k++) {
if(i < 0) i = n - 1;
if(j == n) j = 0;
if(m[i][j]) {
i = (i + 2) % n;
j = (j + n - 1) % n;
}
m[i][j] = k;
}

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

>>138じゃないけど
161デフォルトの名無しさん:2011/06/28(火) 22:04:57.40
113です。

115さんどうもありがとうございました!!
162デフォルトの名無しさん:2011/06/28(火) 22:18:51.05
>>160
どうもありがとうございます!助かりました!
163デフォルトの名無しさん:2011/06/28(火) 22:43:06.64
習ったこと以外使えない
ってのはAPIに制限がある開発みたいなもんだ。

まあ教育課程においては「褒められた上でリジェクト」
ってのが正しいあり方かな。
164デフォルトの名無しさん:2011/06/28(火) 23:02:09.79
買い物かごに入れるボタン(btnAdd)を押したとき、ComboBox1に表示されている項目(ニンジン、かぼちゃ、キャベツ)を、
ListBox1に追加するにはどうすればいいのでしょうか。その時のプログラムコードを教えていただきたいです。

Pribvate Sub btnAdd_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles.btnAdd.Click


End Sub
165デフォルトの名無しさん:2011/06/28(火) 23:10:52.57
次スレからはテンプレに「使える標準関数、演算子等」の項目が必要だな
166デフォルトの名無しさん:2011/06/28(火) 23:29:15.39
[1] 授業単元:C言語
[2] 問題文:コンソールから2つの数(数1,数2とする)を入力する.ただし,数1は複数の桁の整数で,数2は1桁の数であるとする.
数2が数1の倍数のときには,数1が数2の倍数である旨を表示し,そうでない場合は,数1が数2の倍数では無い旨,教示する.
そして,数1に含まれる,数字としての数2の個数を数え,結果をコンソールに出力させる.
以上を4つの関数で構成されるプログラムとして作成せよ.

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual c
 [3.3] 言語:C
[4] 期限: 明日
167デフォルトの名無しさん:2011/06/28(火) 23:32:32.02
>>166
実行例
数1を入力して下さい 23242 ←キーボードから23242と入力
数2を入力して下さい 2 ←キーボードから2と入力
23242は2の倍数です
23242に含まれる2の数字は3個です

数1を入力して下さい 323
数2を入力して下さい 3
323は3の倍数ではありません
323に含まれる3の数字は2個です
お願いします
168デフォルトの名無しさん:2011/06/28(火) 23:33:37.45
>>166 続き
<仕様>
プログラムを以下の関数で構成する.
@ 数1が数2の倍数であるか否かの判定の関数
・引数:数1, 数2(いずれもint型)
・戻り値:0または1(いずれもint型)
0…数1は数2の倍数ではない
1…数1は数2の倍数
A 数1に含まれる数字としての数2の個数を数える関数
・引数:数1, 数2(いずれもint型)
・戻り値:数えた結果の個数(int型)
B 数1, 数2にまつわる分析を行う関数
・引数:数1, 数2(いずれもint型)
・戻り値:分析結果…2桁の整数
1の位 :数1に含まれる数2の数字の個数
10の位:数1が数2の倍数か否か(0:非倍数,1:倍数))
C main関数.
・数1, 数2をキーボードから入力する
・上記Bの分析関数を呼び出す
・下記の分析結果を表示する.
数1が数2の倍数か否か
数1に含まれる数2の数字の個数
関数@〜Bの名称やソースプログラム内の位置は任意で良い.
169デフォルトの名無しさん:2011/06/29(水) 00:35:00.83
[1] 授業単元:べき乗計算の関数
[2] 問題文(含コード&リンク):
この問題では、全て正の整数の入力にのみ対応することとする。
べき乗(nのk乗)を求める関数int power(int n, int k)を作成し、テスト用のmainプログラムを作成して、
咲き制した関数の動作確認を行いなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:6/31まで
[5] その他の制限:関数を利用すること、入力できるようにすること
170デフォルトの名無しさん:2011/06/29(水) 01:05:16.35
171デフォルトの名無しさん:2011/06/29(水) 07:21:33.42
172デフォルトの名無しさん:2011/06/29(水) 10:53:00.89
>>170
まるでピエロだな
173デフォルトの名無しさん:2011/06/29(水) 11:41:49.44
>>170
数2が負数のとき動作しなくね?
174デフォルトの名無しさん:2011/06/29(水) 19:48:04.21
>>171

条件満たしていないので…
175デフォルトの名無しさん:2011/06/29(水) 19:53:42.71
>>174
#include <stdio.h>

int power(int n, int k) {
int sum = 1;
while (k--)
sum *= n;
return sum;
}

void test(int n, int k) {
printf("%d^%d = %d\n", n, k, power(n, k));
}

int main()
{
int n, k;
printf("n = ");
scanf("%d", &n);
printf("k = ");
scanf("%d", &k);
if (n <= 0 || k <= 0) {
printf("死ね"); return 1;
}
test(n, k);
return 0;
}
176デフォルトの名無しさん:2011/06/29(水) 19:55:19.35
>>169
#include <stdio.h>

int power(int n, int k) { return k == 1 ? n : k & 1 ? n * power(n * n, k / 2) : power(n * n, k / 2); }

int main(void)
{
int n, k;

printf("n = ");
scanf("%d", &n);
printf("k = ");
scanf("%d", &k);

printf("%d^%d = %d\n", n, k, power(n, k));

return 0;
}
177バカ娘:2011/06/29(水) 22:44:21.96

[2]下記の九九の表を作るプログラムを作れ

1
2 4
3 6 9
.......
8 16 24...64
9 18 27...72
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:6/30まで
全く分からないので宜しくお願いします。
178デフォルトの名無しさん:2011/06/29(水) 22:57:05.27
>>177
#include <stdio.h>

int main(void)
{
int i, j;

for(i = 1; i <= 9; i++) {
for(j = 1; j <= i; j++) printf("%d ", i * j);
printf("\n");
}

return 0;
}
179デフォルトの名無しさん:2011/06/29(水) 22:57:23.50
>>177
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
printf("%d ", i * j);
}
printf("\n");
}
return0;
}
180デフォルトの名無しさん:2011/06/29(水) 22:57:47.20
>>177
9の段は81までじゃなくて72までなのか…
181バカ娘:2011/06/30(木) 08:22:15.80
9の段、81まででした・・・ >180
182バカ娘:2011/06/30(木) 09:01:59.74
9の段、81までなのですがそのままで良いのでしょうか?>178
183七緒:2011/06/30(木) 09:06:01.54
[2]xy平面上の10 個の点(0〜9 番とする) の(x, y) 座標を入力させ
つぎのようにソートするプログラムを作れ.
大きさ10の配列x, y を用いて,i番目の点の座標をそれぞれx[i], y[i] に入れる.

(梅) x座標の値の昇順

(原点より近い点から遠い点の順)
注意:点を入れ替える時には,x 座標だけでなく,y座標も入れ替えること.

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/1まで
宜しくお願いします。
184デフォルトの名無しさん:2011/06/30(木) 10:48:56.15
[1] 授業単元: 演算子

[2] 問題文: 変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成せよ。

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月5日09:00まで
[5] その他の制限:ありません
185デフォルトの名無しさん:2011/06/30(木) 11:10:54.53
>>183
#include <stdio.h>
int main(){
int x[10],y[10];
int i,j;
int temp;
for(i=0;i<10;i++)
scanf("%d%d",&x[i],&y[i]);
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(x[i]<x[j]){
temp=x[i];x[i]=x[j];x[j]=temp;
temp=y[i];y[i]=y[j];y[j]=temp;
}
}
}
for(i=0;i<10;i++)
printf("%d%d\n",x[i],y[i]);
}
186デフォルトの名無しさん:2011/06/30(木) 11:17:54.38
>>184
int bit_count(int x)
{
int i, count = 0;
for (i = 0; i < 16; i++, x >>= 1)
if (x & 1)
count++;
return count;
}
187デフォルトの名無しさん:2011/06/30(木) 11:35:38.83
>>182
いっぺん動かして見れ
188デフォルトの名無しさん:2011/06/30(木) 12:00:01.51
[1] 授業単元: 演算子

[2] 問題文: 変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成し、それを用いて実際に 1 のビット数を数えて、その値を出力するプログラムを作成せよ。

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月5日09:00まで
[5] その他の制限:問題文は>>184なのですが、具体的なプログラム例まで示さなくてはいけないようです。

数える関数は>>186さんが

int bit_count(int x)
{
int i, count = 0;
for (i = 0; i < 16; i++, x >>= 1)
if (x & 1)
count++;
return count;
}

と作ってくれました。
変数の値は何でも構いません。
189デフォルトの名無しさん:2011/06/30(木) 12:56:33.25
>>184
#include <stdio.h>
#include <math.h>

int bit_count(int x)
{
static const unsigned char bit_set_table[256] = {
# define B2(n) n, n+1, n+1, n+2
# define B4(n) B2(n), B2(n+1), B2(n+1), B2(n+2)
# define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2)
B6(0), B6(1), B6(1), B6(2)
};

return bit_set_table[(x >> 8) & 255] + bit_set_table[x & 255];
};
int main(int argc, char **argv)
{
int i, x;
for (i = 1; i < argc; i++) {
x = atoi(argv[i]);
printf("%d(0x%02x) %d\n", x, x, bit_count(x));
}
}
190デフォルトの名無しさん:2011/06/30(木) 13:00:56.05
>>188
int main()
{
printf("%d\n",bit_count(0x00000));
printf("%d\n",bit_count(0x00001));
printf("%d\n",bit_count(0x0ffff));
printf("%d\n",bit_count(0x10000));
printf("%d\n",bit_count(0x10001));
}
191デフォルトの名無しさん:2011/06/30(木) 13:05:39.22
>>189
'atoi'識別子が見つかりませんでした

というコンパイルエラーが出ました
192デフォルトの名無しさん:2011/06/30(木) 13:07:02.10
#include <stdlib.h> 追加してみれ。
193デフォルトの名無しさん:2011/06/30(木) 13:25:32.09
>>192
すみません、今自分で気づいて、それをやってみたのです…が、実行しても何も表示されません。

厳密に言うと、他のコンパイラ(Study Cというものを使いました)なら、動きました。

それでも、実行したら「main関数に引数があります。コマンドライン文字列をプログラムに渡したい場合はここで入力してください」といった別ウィンドウが表示されます。

出来れば、キーボードから数字を入力する形にするのではなく、プログラム中で変数の値を決定する形でお願いします。

a = 5

という風にプログラム中で決めてしまう形です。
194デフォルトの名無しさん:2011/06/30(木) 13:27:08.99
>>193
ワロタ
195デフォルトの名無しさん:2011/06/30(木) 13:31:32.20
>>193
キミのレベルじゃ>>189を作れない(説明できない)から、>>186>>190を合体させた方が良い。
196デフォルトの名無しさん:2011/06/30(木) 13:34:30.48
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):http://codepad.org/XAPpvt1n
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2011年7月2日12:00まで
[5] その他の制限:wcコマンドを使って、ファイルの行数・単語数・バイト数を数えるプログラム。各ファイルごとに、wcコマンドを無引数で実行
http://codepad.org/2Y5RTFYrを元にせよ

よろしくお願いします
197デフォルトの名無しさん:2011/06/30(木) 14:07:53.00
>>193
>>186さんのプログラムに自分で変数の宣言をして追加して出来ました。

どうもお手数かけました。
皆様ありがとうございました。
198デフォルトの名無しさん:2011/06/30(木) 18:35:46.80
>>196
>コマンドライン引数でファイル名をn個指定し、 ファイル1からファイルn-1までの内容を連結し、 その結果をファイルnに書き込むプログラムを書け。
の一方で、
>ただし、標準入力と標準出力を当該のファイルにリダイレクトした状態でUNIX標準コマンドを実行することで行うこと。
というのは矛盾しているように感じてしまうのですが、具体的にどうすればいいのでしょうか?
199七緒:2011/06/30(木) 19:01:38.44
ありがとうございました!!>185
200デフォルトの名無しさん:2011/06/30(木) 19:38:42.20
>>196
systemコマンドでcat file_1 file_2 ... > file_n の方法でよければ。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
int i;
char s[100] = "", *p = s;
strcpy(p,"cat ");
for (i = 1; i <= argc-2; i++) {
for(;*p;p++);
sprintf(p,"%s ",argv[i]);
}
for(;*p;p++);
sprintf(p," > %s ",argv[i]);
system(s);
return 0;
}
201デフォルトの名無しさん:2011/06/30(木) 22:06:19.20
【質問テンプレ】
[1] 授業単元: C
[2] 問題文(含コード&リンク):
次のアルファベットのキーワードを入力して計算する(例:sin45 sin0.78539)関数電卓プログラムを作成。
なお、関数を容易に変更、修正、増加できるように。
sin(正弦)、cos(余弦)、tan(正接)、arcsin(逆正弦)、arccos(逆余弦)、arctan(逆正接)、ln(自然対数)、log(常用対数)、exp(指数関数)、sqr(平方)、
rad(入力データをラジアン単位にする)、deg(入力データを度を単位とする)、sinh(双曲線正弦)、cosh(双曲線余弦)、tanh(双曲線正接)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VISUAL2008 win32
 [3.3] 言語: C
[4] 期限: 2011年7月13日
[5] その他の制限: 今学期習い始めたばかりで、ポインタ・配列・関数・繰り返し・選択・基礎演算くらいまでやっています
よろしくお願いします
202デフォルトの名無しさん:2011/06/30(木) 22:34:43.75
で、報酬は?
203デフォルトの名無しさん:2011/06/30(木) 22:37:58.69
>>201
関数電卓というがどの程度作りこめいいんだ?
sin(1.1)とかtan(0.5)とか
単体実行できるだけでいいのか?

基礎しかならってないならパースしろってのもおかしい気がする
204デフォルトの名無しさん:2011/06/30(木) 22:59:01.87
>>202
Qみたいな事言うなクズ
205デフォルトの名無しさん:2011/06/30(木) 23:12:51.11
VBScriptで書かれた関数電卓
Dim s,t
On Error Resume Next
do until false
s=InputBox("数式:","数式を入力してください(空で終了)")
if(s="")then
WScript.Quit
end if
t=eval(s)
WScript.Echo s & "=" & CStr(t)
loop
このくらいの性能は欲しいんじゃね?
206デフォルトの名無しさん:2011/06/30(木) 23:22:37.32
勿論Windows オンリ
Windows Scripting Host入っていない環境ではDLして入れる必要あり
コピペして適当な名前.vbsでデスクトップに保存。
クリックで実行可
207201:2011/06/30(木) 23:29:30.32
>>203
そこら辺り先生の説明が少なすぎて何とも言いがたいのですが、単体実行だけでお願いします
208デフォルトの名無しさん:2011/06/30(木) 23:31:08.51
>>207
関数ポインタって習いました?
使えるならだいぶすっきりするので使いたいんですが
209デフォルトの名無しさん:2011/06/30(木) 23:37:22.08
>>203
入力例見るに()とかつけないみたいだし
数字の前までの文字列がキーワードに一致しているかくらいでいいんじゃね?
210七緒:2011/07/01(金) 00:02:17.78
183です。コンパイルかけると、何か1つエラーが出るのですが・・・
そのままで良いのでしょうか?全然分からなくてすいません。。。
211デフォルトの名無しさん:2011/07/01(金) 00:05:59.24
何が出てるかわからなきゃ判断できないじゃん
212デフォルトの名無しさん:2011/07/01(金) 00:07:07.64
>>207
#include <stdio.h>
#include <string.h>
#include <math.h>
static char table[0x1000000][0x10];
#define NAME_LEN 16
#define BUF_LEN 256
double rad(double x) { return x / 180. * 3.14; }
double deq(double x) { return x / 3.14 * 180; }
struct {
char name[NAME_LEN];
double (*f)(double);
} functions[] = {{"sin", sin}, {"cos", cos}, {"arcsin", asin}, {"arctan", atan}, {"ln", log},
{"log", log10}, {"exp", exp}, {"sqr", sqrt}, {"rad", rad}, {"deq", deq},
{"sinh", sinh}, {"cosh", cosh}, {"tanh", tanh}};
int main()
{
char name[BUF_LEN];
double x;
int i;
while (scanf(" %[a-z]%lf", name, &x) == 2) {
printf("inst = %s(%f)\n", name, x);
for (i = 0; i < sizeof functions / sizeof functions[0]; i++)
if (!strcmp(functions[i].name, name))
printf("answer = %f\n", functions[i].f(x));
}
printf("なんか書式にあわないのを突っ込まれたので終了します");
return 0;
}
適当な部分があるので不満があるなら具体的に言ってもらえればなんとかします
213デフォルトの名無しさん:2011/07/01(金) 00:08:58.75
そのままでいいでしょうかってことは動いてるのか?
ならscanfが古い関数だから別の使ってくださいって言われてるどうでもいい警告だと思う
214デフォルトの名無しさん:2011/07/01(金) 07:14:05.91
エラーじゃなくて警告だけなら無視してもOK
215デフォルトの名無しさん:2011/07/01(金) 10:14:52.81
scanf()ってstrlen()なんかよりはるかに安全な関数だと思うんだけど
なんでみんな危険というんだろうね。 不思議だ。
216デフォルトの名無しさん:2011/07/01(金) 10:30:45.69
こういう事じゃないかな、俺はscanf自体余り使わんからよく知らんけど
ttp://www.kijineko.co.jp/node/307
217デフォルトの名無しさん:2011/07/01(金) 11:35:15.57
>>216
なるほど。1,2,3,5,6 はまったく問題ではないけども
4は盲点でした
218バカ娘:2011/07/01(金) 14:29:36.66
動作してました、すいません。ありがとうございます>178
219七緒:2011/07/01(金) 14:31:44.77
183です。コンパイルかけましたが、動かないです・・・
220デフォルトの名無しさん:2011/07/01(金) 14:41:14.84
>>219
エラー出さないと分からないだろボケ
手を抜くな死ね

vc2008で念のためcとcpp両方で試したけど動いたぞ
221デフォルトの名無しさん:2011/07/01(金) 14:48:04.77
いつものごとく scanf() での入力の罠に嵌っただけとか…
222七緒:2011/07/01(金) 15:18:01.21
エラーはでないんです。プログラム動かないです・・・
223デフォルトの名無しさん:2011/07/01(金) 15:20:30.46
>>219
俺のPCでもちゃんと動いてた。
ソース全部しっかりコピペしたか確認してみれ。
あとVisual Studioなら、ファイル→新規作成→プロジェクトから、新しいソースファイル作って、そこでやってみたか?

同じファイルの中でソースファイルだけ増やしたら、確かバグる気がする。
224デフォルトの名無しさん:2011/07/01(金) 15:25:33.06
追記
>>219
まさかとは思うが…
君が求めてるプログラムは実行したら、最初に数字を入力しないと動かないぞ?
225デフォルトの名無しさん:2011/07/01(金) 15:26:34.30
七緒がコンパイルの仕方を知っているか、それが問題だ
226デフォルトの名無しさん:2011/07/01(金) 15:26:41.58
多分いきなりscanfで読み込みで
 入力してください
とかでないから早とちりしてるんだろうな
227デフォルトの名無しさん:2011/07/01(金) 15:30:54.90
>>216
ざっと見てみたけどなんか好きになれない人だな
228デフォルトの名無しさん:2011/07/01(金) 15:34:35.95
>>219
いいか?実行したら、俺が以下に述べる通り入力してみろ。数字は全部半角、スペースは文字通りスペースキーのことを指している。エンターは文字通りエンターキーを指す。


1スペース1エンター
1スペース3エンター
1スペース5エンター
2スペース3エンター
2スペース5エンター
2スペース1エンター
3スペース5エンター
3スペース1エンター
3スペース3エンター
4スペース3エンター

これで結果は綺麗にソートされて出てくる。
ここまでやって出来なかったら人間やめろ
229デフォルトの名無しさん:2011/07/01(金) 15:46:58.33
スペースキーを押すと「スペース」と入力されるキーボードアプリ
を思い出した。
230デフォルトの名無しさん:2011/07/01(金) 16:47:56.43
[1]プログラミング
[2]問題文:行列の中、隣接する値kのみから構成される一つの正方形の範囲はsub-blockと呼ばれる。
一つの正方形を読み込んで、入力値kに対する一番大きいsub-blockを探して、sub-blockの位置と大きさを表示するプログラムを作成せよ。

動作例:http://www.dotup.org/uploda/www.dotup.org1751871.txt.html

[3]環境 [3.1]windows [3.2]gcc [3.3]C言語
[4]期限:7月4日まで
[5]・正方行列はファイルから読み込む事 
 ・最大sub-blockが複数ある場合は全て表示する事 
 ・比較回数はできるだけ少なくする事
231デフォルトの名無しさん:2011/07/01(金) 19:30:27.33
[1] 授業単元:配列の引数
[2] 問題文(含コード&リンク):
試験成績20人分を管理するプログラムを作成することになった。試験成績は、0〜100の整数で与えられる。
構築するプログラムは、以下の関数の構成で構築することとする。
変数指定 int data[20]      //成績0〜100の整数を格納する要素数20の配列
○void inputData(int data[20]);  //点数入力の関数
○void outputData(int data[20]); //点数リストの画面出力関数
○innt main()           //上記の2つの関数を読み出すメイン関数
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
232デフォルトの名無しさん:2011/07/01(金) 20:11:23.58
[1] 授業単元:ソート
[2] 問題文(含コード&リンク): 問1から問4まであるのでリンク貼ります。
http://codepad.org/82dMhAvP
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日まで

よろしくお願いします。
233デフォルトの名無しさん:2011/07/01(金) 20:26:29.62
234デフォルトの名無しさん:2011/07/01(金) 21:08:36.69
235デフォルトの名無しさん:2011/07/01(金) 22:05:48.36
>232 問1

ttp://codepad.org/j5RkjDXE

意外と面倒臭い。
途中で力尽きるかも。
236デフォルトの名無しさん:2011/07/01(金) 22:20:12.20
>>235
DTRACEって何?
あと関数ポインタ使ったほうがスマートにならね?
237デフォルトの名無しさん:2011/07/01(金) 22:51:26.25
>232 問2

ttp://codepad.org/TUVdIM4I

>236
>DTRACE
ごめんデバグコード消し忘れ。

>あと関数ポインタ使ったほうがスマートにならね?
main中のsearch_maxとsearch_minの選択を言っているなら、私もそう思う。
しかし、問題に雛形が与えられていたので、そのまま流用した。
238デフォルトの名無しさん:2011/07/01(金) 23:40:06.50
Qがまた馬鹿スレ立てやがったぞ

【モリタポ有償】C/C++/Java の問題を片付けます(3)
http://hibari.2ch.net/test/read.cgi/tech/1309527259/
239デフォルトの名無しさん:2011/07/01(金) 23:49:54.26
>>238==◆QZaw55cn4c
240デフォルトの名無しさん:2011/07/02(土) 00:17:02.32
【1】c言語 【2】二つの西暦で入力された年月日から、その間の日数を計算するプログラムを作成してください。
ここに処理が入る というとこのプログラムをお願いします
プログラムのベース
int uruu(int y);
int monthday(int y, int m);
//----------------------------------------------------
int main(){
int year_a, month_a, day_a;
int year_b, month_b, day_b;
int days; int i; days = 0;
printf("日数計算プログラム\n");
printf("数え始める西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_a, &month_a, &day_a);
printf("数え終わる西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_b, &month_b, &day_b);
ここに処理が入いる
printf("%d年%d月%d日から%d年%d月%d日までの日数は%d日です。\n", year_a, month_a, day_a, year_b, month_b, day_b, days);
return 0; }
//うるう年ならtrue(1)、そうでないならfalse(0)を返す関数
int uruu(int y){
int ret;
ここに処理が入る
return ret; }
//年、月を受け取り、その月の日数を返す関数
int monthday(int y, int m){
int d;
ここに処理が入る
return d; }
241デフォルトの名無しさん:2011/07/02(土) 00:19:48.76
>>238
宣伝すんなクズ
242デフォルトの名無しさん:2011/07/02(土) 01:01:20.65
[1] 授業単元:引数の利用
[2] 問題文(含コード&リンク):
#include <stdio.h>
void inputData(int data[20])
{
int n = 0;
while (n < 20) {
printf("data[%2d] = ", n);
if (scanf("%d", &data[n]) != 1) {
printf("数字を入力してください\n");
scanf("%*s");
} else if (data[n] < 0 || 100 < data[n]) {
printf("[0, 100] の範囲で入力してください\n");
} else {
++n;
}
}
}
void outputData(int data[20])
{
int i;
for (i = 0; i < 20; ++i) {
printf("data[%2d] = %3d\n", i, data[i]);
}
}
int main(void)
{
int data[20];
inputData(data);
outputData(data);
return 0;
}
243デフォルトの名無しさん:2011/07/02(土) 01:01:51.20
>>242を最大値と最小値を同時に求める関数void minmax()を追加し、動作確認するmainプログラムも追記しなさい。
void minmax(配列、最小、最大)
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
244デフォルトの名無しさん:2011/07/02(土) 01:18:35.00
>>215
危険とは思わないけど仕事でコードを書いてると使う機会が無いから
使わなくなる→仕様も良く知らね→危ないんじゃね
って流れじゃないかと...
245デフォルトの名無しさん:2011/07/02(土) 01:45:40.47
246デフォルトの名無しさん:2011/07/02(土) 01:46:21.37
Secure Coding セキュリティ総合スレ

みたいなのがこの板には必要だと思うが。
俺レベル足りなかったから誰か立ててw

そこで一度、scanfがダメなのかアリなのか、
それはなぜなのか、他の危険な関数、安全とされる関数、
シオデラットのstrlcpy, strlcatはどれほど有意義なのか、
について語ってもいいはずだ。
247デフォルトの名無しさん:2011/07/02(土) 01:54:32.91
>>246
ここでいいんじゃないでしょうか。

>シオデラットのstrlcpy, strlcat
私は、NUL で必ず終わるところに好意的(strncpy() はいまいちこの点に関して使えない)なんですけれども、wikipedia を見る限り、なんだかくだらないいちゃもんをつける人がいるようですね。
248デフォルトの名無しさん:2011/07/02(土) 02:01:02.78
レベルが低すぎて笑えない
249デフォルトの名無しさん:2011/07/02(土) 02:04:46.52
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):

クラスカルのアルゴリズムを用いて最小木を求めるプログラムを作成せよ。
読み込むグラフのデータ(graph.txt)は、
頂点数 枝数 (1行目)
始点 終点 枝の長さ (2〜枝の数だけ)
という形式で行こうと思っています。
http://codepad.org/BxDa8z6P

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7月10日

よろしくお願いします。
250デフォルトの名無しさん:2011/07/02(土) 02:20:05.66
>>248
kwsk
251デフォルトの名無しさん:2011/07/02(土) 06:45:12.47
>>249
かなりテキトーだが。
http://codepad.org/bM6lVi04
"頂点数 枝数 (1行目) "はスキップした。
その辺ちゃんと読み込むように修正したらいいかもね。

出力でgraphvizソースも出る。
ここにコピペすれば可視化できる。
http://graphviz-dev.appspot.com/
engineはneatoじゃないと指定した辺の長さで描画されない。
キャッシュがクリアされて見れない可能性大だがこんな感じ
http://graphviz-dev.appspot.com/get_preview?id=042c7d66-42be-410b-98dc-022b53c4c5f7
252デフォルトの名無しさん:2011/07/02(土) 12:20:25.25
Qはやっとスレを立てられたかと思ったら消されたかざまあ
●くらい買えよ
あ、無職だから●を買う金もないのか
253デフォルトの名無しさん:2011/07/02(土) 12:21:12.45
>>252
まだありますよ。
【モリタポ有償】C/C++/Java の問題を片付けます(3)
http://hibari.2ch.net/test/read.cgi/tech/1309527259/
254デフォルトの名無しさん:2011/07/02(土) 12:23:36.99
>>252
>>253
出てくんなクズ
255デフォルトの名無しさん:2011/07/02(土) 13:11:12.33
>>232 問3

ttp://codepad.org/NJB8u7xt

提出期限過ぎているかしらんけど。
256デフォルトの名無しさん:2011/07/02(土) 13:37:59.29
[1] 授業単元:関数Aから関数Bを呼び出す
[2] 問題文(含コード&リンク):
>>245に、分散を求める関数(名前、詳細仕様は各自で考えてよい)を追加し、動作確認するmainプログラムも追記しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
257デフォルトの名無しさん:2011/07/02(土) 19:42:45.87
[2]下記のプログラムにおいて,numcountは,値が0 〜M -1 の範囲の大きさN のint型の配列を引数として渡されると(ただし,M, N は正の整数),同じ値が複数ある時はそれを1 個とみなしてその配列中の数の
個数を返す関数である.例えば,配列の値を7, 4, 8, 2, 4, 6, 1, 6, 4, 5 とすると,(ダブリを省くと) この中には,7, 4, 8,2, 6, 1, 5 の7 個があるので,関数numcountは7 を返す.
これは,例えば,0 〜M -1 の範囲でどんな数が出てきたかをチェックしておき(ヒント: 大きさM のint型の配列を用い,最初はすべて0に初期化しておき,数iが現れたら,そのi番目を1にすればよい),
最後に1度でも出てきたものを数えれば求めることができる.関数numcountを,下記のプログラムの/* INSERT HERE */の部分に挿入できるように書け.(提出はプログラム全体)

#include <stdio.h>
#define M 10 /* 適当な正整数(数の範囲が0 〜M -1) */
#define N 10 /* 適当な正整数(入力する数の個数)*/
/* INSERT HERE */
intmain(void)
{
inti, a[N];
/* a[0]〜a[N-1] の値を入力する*/
for(i= 0; i< N; i++) {
printf("a[%1d] = ? ", i);
scanf("%d", &a[i]);
}
printf("numcount= %3d\n", numcount(a));
return 0;
}

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/6
[5] その他の制限:プログラムだけでなく、課題の説明、実行結果、考察も必須

すいません、全く分からないので誰かお願いします。今回プログラムのみでは採点不可にて何となく合格しそうな考察方法もお願いします。
258デフォルトの名無しさん:2011/07/02(土) 19:49:47.76
>>257
どうみても言われたものをそのまま作るだけなんだが
考察って何をしろっていうんだよ
この課題の感想的なもの(ここんところからこういうことを知ることができました的なもの)でいいのか?

課題の説明ってのは作ったプログラムの説明のことでいいんだよな?
259デフォルトの名無しさん:2011/07/02(土) 19:54:19.10
この他にもこういう別のやり方もあるよって例出して
それぞれのメリットデメリットを列挙すればいいんじゃね
260デフォルトの名無しさん:2011/07/02(土) 19:59:06.79
>>257

ttp://codepad.org/qK35O7Hu

>何となく合格しそうな考察方法もお願いします。
元からそこまで世話を焼くつもりはないが、[1]が書いていないし、
どういう背景でこういう問題が出されたかわからないので、答えようがない。

アルゴリズムとしては「ビンソート」あるいは「バケットソート」という方式を利用している。
Wikipediaでも調べてみたらいい。
261260:2011/07/02(土) 20:03:02.02
ミス発見

numcountの元のforループは
for (i = 0; i < N; i++) {
が正しい。
262デフォルトの名無しさん:2011/07/02(土) 20:18:28.55
257です、[1]配列でした。言語の知識ゼロから4日の講座でこの課題が出たので
組んだ過程を添えろと指示が出て困って書き添えました。すいません、
ありがとうございました>260
263デフォルトの名無しさん:2011/07/02(土) 20:33:18.95
#include <stdio.h>
void inputData(int data[20]){
int n = 0;
while (n < 20) {
printf("data[%2d] = ", n);
if (scanf("%d", &data[n]) != 1) {
printf("数字を入力してください\n");
scanf("%*s");
} else if (data[n] < 0 || 100 < data[n]) {
printf("[0, 100] の範囲で入力してください\n");
} else {
++n;
}
}
}
264デフォルトの名無しさん:2011/07/02(土) 20:34:07.60
void outputData(int data[20]){
int i;
for (i = 0; i < 20; ++i)
printf("data[%2d] = %3d\n", i, data[i]);
}
void minmax(int a[], int *min, int *max){
int i;
*min = a[0];
*max = a[0];
for (i = 1; i < 20; i++) {
if (*min > a[i])
*min = a[i];
if (*max < a[i])
*max = a[i];
}
}
int main(void)
{ int data[20], min, max;
inputData(data);
outputData(data);
minmax(data, &min, &max);
printf("%d %d\n", min, max);
return 0;
}
に、分散を求める関数(名前、詳細仕様は各自で考えてよい)を追加し、動作確認するmainプログラムも追記しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
265デフォルトの名無しさん:2011/07/02(土) 20:36:43.51
266デフォルトの名無しさん:2011/07/02(土) 20:45:03.15
267デフォルトの名無しさん:2011/07/02(土) 21:22:19.36
>>251
さっそくありがとうございます。
グラフィックまでつけていただけるなんて・・・

しかし、実行結果を図にしてみると、4-8,7-8がどちらも入り、ループが構成されて最小木になっていないような・・・
どちらも重みが3で追加する順番によって、どちらでも構成することができるのが問題なのだと思いますが、どう改善すればよろしいですかね?
268デフォルトの名無しさん:2011/07/02(土) 22:12:52.41
[1] 授業単元:引数の利用
[2] 問題文(含コード&リンク):
文字列処理の関数として、strcat(),strcmp(),strcpy(),strlen()を利用した。これらは、string.hをインクルードすることだけで利用することができた。
それら4つの関数と同じ動作を可能とするORGstrcat(),ORGstrcmp(),ORGstrcpy(),ORGstrlen()を作成し、動作確認を行うmainプログラムを作成しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/4まで
[5] その他の制限:
269デフォルトの名無しさん:2011/07/02(土) 23:07:21.09
270デフォルトの名無しさん:2011/07/03(日) 00:12:11.06
無駄に再帰を使うと遅くなるよ
271デフォルトの名無しさん:2011/07/03(日) 00:24:31.95
こうだな
char *ORGstrcat(char *s, const char *cs)
{return strcat(s,cs);}
int ORGstrcmp(const char *cs1, const char *cs2)
{return strcmp(cs1,cs2);}
char *ORGstrcpy(char *s, const char *cs)
{return strcpy(s,cs);}
size_t ORGstrlen(const char* cs)
{return strlen(cs);}
272デフォルトの名無しさん:2011/07/03(日) 00:26:24.64
>>271
おいw
273デフォルトの名無しさん:2011/07/03(日) 01:15:22.91
>>272
ありじゃね?
学生のころは、こういう問題で 本回答とは別に
出題の意図を汲まなかったり曲解したネタ回答を
いつも用意してたな。
274デフォルトの名無しさん:2011/07/03(日) 03:13:49.01
>>271
同じ動作しないじゃん
275デフォルトの名無しさん:2011/07/03(日) 06:41:26.82
>>267
すまん、たしかに最小じゃない。
原因は辺の双方向性の考慮ミスで弁解の余地のないバグですわ。
そもそもノードをファーストクラスで捉えてる部分が悪い気がする。
まだ時間あるよね、後日修正してみるよ。
自分で実装するなら同じ失敗をしないよう、おれの屍を超えていけ。
276デフォルトの名無しさん:2011/07/03(日) 08:31:57.35
>>275
といいつつ、逃走するパターンか
277デフォルトの名無しさん:2011/07/03(日) 13:25:23.93
>>276
く・・・わかったよ、どうせ外出ても熱いだけだけだし、これからやるよぉ。
に、>>267のためじゃないんだからね! 勘違いしないでよね!
278デフォルトの名無しさん:2011/07/03(日) 16:30:10.86
>>267
http://codepad.org/aGrUDf9B
一応間違いないかと。グラフにマーク付けるのにイテレータっぽいの使った。
condition関数で指定されたエッジだけ巡回する。
これでマーククリア、マーク付け(Wikipediaで言う緑エッジ)、
不要エッジの削除の3ステップでやってる。たいぶ効率悪いけど・・・。
あ、一行目の頂点数・辺数 読むようになったから消さないでね。
digraph g { 0 -> 1 [dir=none, len=15];
0 -> 2 [dir=none, len=6]; 0 -> 3 [dir=none, len=3, color=red, penwidth=4];
0 -> 4 [dir=none, len=4]; 1 -> 4 [dir=none, len=4, color=red, penwidth=4];
1 -> 5 [dir=none, len=7]; 1 -> 6 [dir=none, len=20];
2 -> 3 [dir=none, len=2, color=red, penwidth=4]; 2 -> 7 [dir=none, len=1, color=red, penwidth=4];
3 -> 4 [dir=none, len=1, color=red, penwidth=4]; 3 -> 7 [dir=none, len=2];
4 -> 5 [dir=none, len=8]; 4 -> 7 [dir=none, len=5]; 4 -> 8 [dir=none, len=3, color=red, penwidth=4];
4 -> 9 [dir=none, len=6]; 5 -> 6 [dir=none, len=1, color=red, penwidth=4];
5 -> 9 [dir=none, len=3, color=red, penwidth=4]; 6 -> 9 [dir=none, len=20];
7 -> 8 [dir=none, len=3]; 8 -> 9 [dir=none, len=2, color=red, penwidth=4];
0 [fixedsize=true, width=0.4, height=0.4]; 1 [fixedsize=true, width=0.4, height=0.4];
2 [fixedsize=true, width=0.4, height=0.4]; 3 [fixedsize=true, width=0.4, height=0.4];
4 [fixedsize=true, width=0.4, height=0.4]; 5 [fixedsize=true, width=0.4, height=0.4];
6 [fixedsize=true, width=0.4, height=0.4]; 7 [fixedsize=true, width=0.4, height=0.4];
8 [fixedsize=true, width=0.4, height=0.4]; 9 [fixedsize=true, width=0.4, height=0.4];}
279デフォルトの名無しさん:2011/07/03(日) 22:41:57.93
[1] 授業単元:ソート
[2] 問題文(含コード&リンク): 以下のプログラムを作成せよ.
入力
正整数n,ならびにn個の名前と電話番号の組,および文字列.ただし,いずれの入力文字列も長さ20以下と仮定して良い.
処理
構造体型配列で電話帳を作成し,名前をキーとして,文字列がselectionのときは選択ソート,文字列がbubbleのときはバブルソートをする.
出力
名前をキーとして辞書順にソートされた電話帳.同名の人は,どの順序に出力してもよい.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日
280デフォルトの名無しさん:2011/07/03(日) 22:43:49.08
実行例
人数 > 2
0人目:名前 > bbb
電話番号 > 111
1人目:名前 > aaa
電話番号 > 222

文字列 > selection

aaa, 222
bbb, 111

実行例
人数 > 5
0人目:名前 > Taro
電話番号 > 090-111-1111
1人目:名前 > Hanako
電話番号 > 090-222-2222
2人目:名前 > Ichiro
電話番号 > 090-333-3333
3人目:名前 > Jiro
電話番号 > 090-444-4444
4人目:名前 > Hanayo
電話番号 > 090-555-5555

文字列 > bubble

Hanako, 090-222-2222
Hanayo, 090-555-5555
Ichiro, 090-333-3333
Jiro, 090-444-4444
Taro, 090-111-1111
281デフォルトの名無しさん:2011/07/03(日) 23:15:11.95
[1] 情報処理演習T
[2] 問題:2重のfor文を使って,以下のような偶数の九九の表を作成せよ.ただし,行数と列数は入力して指定できるようにする.
入力された行数と列数がそれぞれ0以下,20以上の場合は,九九は表示せずプログラムを終了する.
また、ソースプログラムの説明,考察.for文についてのまとめなども加えよ。
実行例@
================================
Input GYO: 3
Input RETSU: 5
2 4 6 8 10
4 8 12 16 20
6 12 18 24 30
================================

[3] 環境
 [3.1] MacOS
 [3.2] Xcode
 [3.3] C言語
[4] 7月4日午後3時まで
[5] 教授曰く、「考えられる限り、最小限の言葉でプログラムを書け」だそうです。

問題文が長くなってしまいごめんなさい。
長文ですがよろしくお願いします。
282デフォルトの名無しさん:2011/07/03(日) 23:41:56.72
283デフォルトの名無しさん:2011/07/03(日) 23:58:22.53
>>281
#include <stdio.h>
int input(const char *message, int *x) {
return printf("%s", message), (scanf("%d", x) == 1) && (0 < *x && *x < 20);
}
int main(void) {
int gyo, retsu, i, j;
if (input("Input GYO: ", &gyo) && input("Input RETSU: ", &retsu))
for (i = 0; i < gyo; ++i, putchar('\n'))
for (j = 0; j < retsu; ++j)
printf("%d ", 2 * (i + 1) * (j + 1));
return 0;
}
284デフォルトの名無しさん:2011/07/04(月) 00:10:54.84
>>278
べ、べつにありがとうだなんて思ってないんだからね!
というのは嘘で、本当に感謝です。
まだ期限まで日はあるので熟読して、自分の知識になるようにがんばります。
285デフォルトの名無しさん:2011/07/04(月) 01:18:10.34
y^e = X mod Nを満たすyを効率よく求める方法を教えて下さい。
286デフォルトの名無しさん:2011/07/04(月) 01:29:26.84
eは自然対数か?
287デフォルトの名無しさん:2011/07/04(月) 01:30:50.90
>>285
このmodって法を表してるんだったっけ
288デフォルトの名無しさん:2011/07/04(月) 01:31:51.78
たとえば y^13 = 1 mod 7 とかか?
289デフォルトの名無しさん:2011/07/04(月) 01:34:48.05
(y+N)^r = y^r mod Nだろう。
たかだかN個しか調べるものは無いのでは?
290デフォルトの名無しさん:2011/07/04(月) 04:44:24.20
[1] 授業単元:C
[2] 問題文(含コード&リンク):
  逆ポーランド記法の電卓を実装をする
  なお、電卓の条件は以下です
  条件及び動作例:http://www.dotup.org/uploda/www.dotup.org1758622.txt.html
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 7月6日まで
291デフォルトの名無しさん:2011/07/04(月) 18:17:35.28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  ユーザの入力した1文字に対して、「1」のとき「one」、「0」のとき「zero」
  それ以外のとき、標準エラーに「0か1を入力して下さい」と出力し、再びユーザからキー入力を待つ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月5日

まだ型などの理解が甘く、「それ以外」のところでつまづいてしまいました。
よろしくお願いします。
292デフォルトの名無しさん:2011/07/04(月) 18:38:09.26
else
293デフォルトの名無しさん:2011/07/04(月) 19:09:13.67
【1】c言語 【2】二つの西暦で入力された年月日から、その間の日数を計算するプログラムを作成してください。
ここに処理が入る というとこのプログラムをお願いします
プログラムのベース
int uruu(int y);
int monthday(int y, int m);
//----------------------------------------------------
int main(){
int year_a, month_a, day_a;
int year_b, month_b, day_b;
int days;
int i;
days = 0;
printf("日数計算プログラム\n");
printf("数え始める西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_a, &month_a, &day_a);
printf("数え終わる西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_b, &month_b, &day_b);
ここに処理が入いる
printf("%d年%d月%d日から%d年%d月%d日までの日数は%d日です。\n", year_a, month_a, day_a, year_b, month_b, day_b, days);
return 0; }
//うるう年ならtrue(1)、そうでないならfalse(0)を返す関数
int uruu(int y){
int ret;
ここに処理が入る
return ret; }
//年、月を受け取り、その月の日数を返す関数
int monthday(int y, int m){
int d;
ここに処理が入る
return d; }
294デフォルトの名無しさん:2011/07/05(火) 00:27:12.96
295デフォルトの名無しさん:2011/07/05(火) 02:25:50.48
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):キーボードからx座標とy座標の組を順に読み込んで、その座標を連結した線形リストを形成するプログラムを作りなさい。
改行のみ入力された場合には、入力を終了するようにする。
入力された線形リストの先頭アドレスを引数として、その内容を表示する関数も合わせて作りなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
 [3.3] 言語: C++
[4] 期限:2011年7月11日
[5] その他の制限:なし
296デフォルトの名無しさん:2011/07/05(火) 04:07:07.77
297デフォルトの名無しさん:2011/07/05(火) 13:48:16.85
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://codepad.org/lqKLztNc
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011/7/8
よろしくおねがします
298デフォルトの名無しさん:2011/07/05(火) 13:49:46.00
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://codepad.org/iM41ba88
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011/7/8
よろしくおねがします

299デフォルトの名無しさん:2011/07/05(火) 14:02:26.98
1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://ideone.com/Acmrn
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2011/7/6
alloc_rocker()がNULLを返したときの処理を加えよ。
300デフォルトの名無しさん:2011/07/05(火) 15:46:12.94
【モリタポ有償】C/C++/Java の問題を片付けます(3)
http://hibari.2ch.net/test/read.cgi/tech/1309527259/

また立ってるけど、基本的にこのスレとの関連は無いので
無視でよろしく。
ただしこのスレの回答者があっちに行って荒らすのは
見苦しいです
301デフォルトの名無しさん:2011/07/05(火) 15:52:45.13
>>300
QZ乙
302デフォルトの名無しさん:2011/07/05(火) 16:27:39.42
荒らしているのはここで回答できない人だよ
303 ◆.wXmXNcK12 :2011/07/05(火) 17:59:23.85
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク): http://codepad.org/KXrWVfER
・探索アルゴリズムの計算回数に注目して比較を行いたい。
2000個のデータをファイルから読み込み、線形探索を行う場合と二分探索を行う場合の計算回数を比較する。
二分探索を行う場合はデータをソートする必要があるので、探索前にクイックソートを使用してソートを行うものとする。
なお、swap関数はクイックソート関数で使用するものとする。計算回数を算出する部分は各自プログラムに必要な機能を追加する事。
探索に使用するデータはディレクトリにあるデータを各自ホームディレクトリにコピーして使用すること。
各データファイルには2000個の整数データがランダムに近い順番に記録されているので、その中から500(キー)を探索する
プログラムを作成せよ。比較した計算量をもとに、探索されたデータの位置による計算回数の違いについて各自考察を行う事。
なお、ここでいう計算回数とは、各探索法(線形探索及び二分探索)における探索対象のデータとキーの比較回数を示すものとする。
[3] 環境
 [3.1] OS: Windows XP。学校ではUNIXを使っています。
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: C
[4] 期限: 2011年7月7日まで
[5] その他の制限: 整列処理まで

ソースコードに書かれた(1)(2)(3)(4)のところが分かりません。
あと、宜しければ計算回数の違いについての考察もあると助かります。
宜しくお願いします。
304デフォルトの名無しさん:2011/07/05(火) 19:18:21.45
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
January, February, March, April, May, June, July, August, September,October, November, December
を12個の文字列をポインタの配列を用いて宣言し、ASCIIコードで昇順に並び替えなさい。
char *month[12] = { “January”, “February”, …, “December” } ;
ASCIIコードで昇順
A<B<C< … <Z , i文字目まで同じ場合は、i+1文字目の大小で順序をつける
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語: C
[4] 期限: 2011/7/6
[5] その他の制限:
現在ポインタを習っているところです。
出来るだけ簡単に書いてもらえると助かります。
305デフォルトの名無しさん:2011/07/05(火) 19:20:41.64
>>304に加えてもう1問お願いします。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
次に示す個人情報を構造体として作成し、
それぞれの科目の平均点とそれぞれの学生の平均点を
構造体のポインタを用いて求めなさい。
学籍番号 英語 数学 物理
1 81 24 63
2 28 15 7
3 89 92 88
4 32 88 66
5 92 46 81
-1 0 0 0
学籍番号英語数学物理
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語: C
[4] 期限: 2011/7/6
[5] その他の制限:
現在ポインタを習っているところです。
出来るだけ簡単に書いてもらえると助かります。
306デフォルトの名無しさん:2011/07/05(火) 19:27:06.99
[1] 授業単元:関数
[2] 問題文(含コード&リンク):
以下の関数をそれぞれ作成し、組み合わせることで、異なる3つの数値を昇順に表示するプログラムを作成しなさい。
○void inputNUM(int data[3]); 3つの整数値を入力させる関数
○void printNUM(int data[3]); 3つの数値を1行で配列格納順に表示させる関数
○void sort(data[3]); 昇順にdata[]を並び替える関数
○int main() メイン関数
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/8まで
[5] その他の制限:

307デフォルトの名無しさん:2011/07/05(火) 20:54:43.25
308デフォルトの名無しさん:2011/07/05(火) 21:11:22.21
夏休み前で課題が増えてるようだな。
290あたりから消化しきれてない。
日本のITの未来を暗くするためもっとがんばれ。
309デフォルトの名無しさん:2011/07/05(火) 21:14:06.85
310デフォルトの名無しさん:2011/07/05(火) 22:54:37.51
C++の入ったパソコンが先ほど壊れてしまったので御助力お願いします。
急なことで時間が全くありません。本当に申し訳ないです・・・

[1] 授業単元: 確率統計学
[2] 問題文(含コード&リンク):
10個のサイコロを同時に振り、1の目が出る確率を求める。ただし、回数は100、1000、10000、100000と変化させ、確率と誤差を求めよ。
これは、完成済みで結果の出力のみお願います。また、エラーが出た場合は御助力をお願いします。
http://codepad.org/jZHx7pfy
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] C++
[4] 期限: 2011年7月6日
[5] その他の制限:


2問目
[1] 授業単元: 確率統計学
[2] 問題文(含コード&リンク):
A,B,Cの3人がじゃんけんゲームを行ったとき、Aが負けない確率Xをシミュレーションで推定せよ。また、シミュレーションの推定誤差を求めよ。ただし、シミュレーション回数Nを100,1000,10000,100000と変化させ、確率と、真の値との差を絶対値(誤差)で算出せよ
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] C++
[4] 期限: 2011年7月6日
[5] その
311デフォルトの名無しさん:2011/07/05(火) 23:01:26.65
あいこは再戦するのかしないのか
312デフォルトの名無しさん:2011/07/05(火) 23:02:30.49
完成してないじゃん・・・エラーでてるよ
結果だけ知りたいならcodepadの結果表示でいいじゃん
313デフォルトの名無しさん:2011/07/05(火) 23:06:21.92
>>310
なんでエラーがあるのに完成済みって思ったか聞きたい
314デフォルトの名無しさん:2011/07/05(火) 23:15:35.16
315デフォルトの名無しさん:2011/07/05(火) 23:29:25.23
>>311
あいこは再戦は必要ないです。あくまでAが負けない確率の一つです

>>312-313
取り敢えず作ったのですが、まだ実行が出来ず、パソコン室終了前にソースだけ載せるので手一杯でした。
誤解を招き申し訳ないです。

また、言い訳をしてしまうのですが、今は携帯からなので、結果を確かめれるのは明日の9:00まで無理なため、急なお願いをしてしまいました……
316デフォルトの名無しさん:2011/07/05(火) 23:47:32.10
>>310
Visual Studio2008での実行結果 (ソースは>>314)

X/N 10^2回 10^3回 10^4回 10^5回 真値

0個の確率 13.0000% 15.7000% 15.7700% 16.1100% 16.1506%
-3.1506% -0.4506% -0.3806% -0.0406%
1個の確率 44.0000% 31.6000% 32.9700% 32.4580% 32.3011%
11.6989% -0.7011% 0.6689% 0.1569%
2個の確率 25.0000% 30.6000% 28.9800% 28.8410% 29.0710%
-4.0710% 1.5290% -0.0910% -0.2300%
3個の確率 11.0000% 15.9000% 15.4900% 15.5410% 15.5045%
-4.5045% 0.3955% -0.0145% 0.0365%
4個の確率 6.0000% 4.9000% 5.3300% 5.5150% 5.4266%
0.5734% -0.5266% -0.0966% 0.0884%
5個の確率 1.0000% 1.1000% 1.1800% 1.3010% 1.3024%
-0.3024% -0.2024% -0.1224% -0.0014%
6個の確率 0.0000% 0.1000% 0.2200% 0.2120% 0.2371%
-0.2371% -0.1371% -0.0171% -0.0251%
7個の確率 0.0000% 0.1000% 0.0600% 0.0200% 0.0248%
-0.0248% 0.0752% 0.0352% -0.0048%
8個の確率 0.0000% 0.0000% 0.0000% 0.0020% 0.0019%
-0.0019% -0.0019% -0.0019% 0.0001%
9個の確率 0.0000% 0.0000% 0.0000% 0.0000% 0.0001%
-0.0001% -0.0001% -0.0001% -0.0001%
10個の確率 0.0000% 0.0000% 0.0000% 0.0000% 0.0000%
-0.0000% -0.0000% -0.0000% -0.0000%
317デフォルトの名無しさん:2011/07/05(火) 23:51:11.77
318デフォルトの名無しさん:2011/07/05(火) 23:51:54.40
>>316
結果の表示ありがとうこざいます。

こうして結果を見せて頂くと、かなり間違ったプログラムを作ってしまったみたいですね……
319デフォルトの名無しさん:2011/07/06(水) 00:15:19.17
>>310
> ただし、回数は100、1000、10000、100000と変化させ

ってのはこーいう↓ことじゃないの? 書いてみた。
ttp://codepad.org/eNjTKI9r
320デフォルトの名無しさん:2011/07/06(水) 00:28:53.16
>>319
非常に有難いのですが、携帯のためソースや結果が見れないです……申し訳ありません。
321デフォルトの名無しさん:2011/07/06(水) 00:55:20.97
>>310
[2]
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int saikoro_saidai[4] = {100,1000,10000,100000,}; /*シミュレーション回数を10^2〜10^4で計算*/
int sai_nage, C[4],i;
double sinn_no_atai = 0.444444444; /* 真の値を定義 */

for(sai_nage = 0; sai_nage < 4; sai_nage++){C[sai_nage] = 0;}

for(sai_nage = 0; sai_nage < 4; sai_nage++){
for(i = 0; i < saikoro_saidai[sai_nage]; i++){
int a = rand() % 3;
int b = rand() % 3;
int c = rand() % 3;

if(a == b && a == c){
// 全員違う手ならあいこ
C[sai_nage]++;
}else if((a - b + 3) % 3 == 1){
// bに負けた
}else if((a - c + 3) % 3 == 1){
// cに負けた
}else{
// 勝った
C[sai_nage]++;
}
}
}
続く
322デフォルトの名無しさん:2011/07/06(水) 00:55:36.88

printf("aが負けない確率\n");
printf("10^2回 10^3回 10^4回 10^5回 真値 \n\n");

printf("%8.4f%% %8.4f%% %8.4f%% %8.4f%% %8.4f%% \n"
, (double)C[0]/saikoro_saidai[0]*100.0
, (double)C[1]/saikoro_saidai[1]*100.0
, (double)C[2]/saikoro_saidai[2]*100.0
, (double)C[3]/saikoro_saidai[3]*100.0
, sinn_no_atai*100 );

printf("%8.4f%% %8.4f%% %8.4f%% %8.4f%% \n"
, (double)C[0]/saikoro_saidai[0]*100.0 - sinn_no_atai*100
, (double)C[1]/saikoro_saidai[1]*100.0 - sinn_no_atai*100
, (double)C[2]/saikoro_saidai[2]*100.0 - sinn_no_atai*100
, (double)C[3]/saikoro_saidai[3]*100.0 - sinn_no_atai*100 );

return 0;
}
323デフォルトの名無しさん:2011/07/06(水) 00:57:23.74
>>310
結果 下段が誤差

aが負けない確率
10^2回 10^3回 10^4回 10^5回 真値

43.0000% 43.5000% 44.2500% 44.4060% 44.4444%
-1.4444% -0.9444% -0.1944% -0.0384%
324デフォルトの名無しさん:2011/07/06(水) 01:10:12.40
>>321->>323
有難う御座います。
誤差については絶対値をつけないといけないので、明日の朝一番に取り掛かりたいと思います
急なお願いで時間もなく、夜も更けた辛い時間での作業、本当にありがとうございました
325デフォルトの名無しさん:2011/07/06(水) 01:13:29.17
>>310
念のため行を詰めてない方のソース
http://codepad.org/sk1bq8PE

VC++2008とcodepadはrand関数の実装が違うから結果も違う
codepadの結果を提出したら×になるかも知れないから注意
VC++2008で実行した結果は>>323
326デフォルトの名無しさん:2011/07/06(水) 01:16:59.33
327デフォルトの名無しさん:2011/07/06(水) 01:27:21.89
>>325-326
重ね重ねありがとうございます
課題についてはVC++2008で提出したいと思います
328デフォルトの名無しさん:2011/07/06(水) 01:27:58.47
[1]授業単元:アルゴリズム概論
[2]課題:次の関数は引数で与えられた配列を整列するものである。
コードを補って完成させなさい。

void sort(int[] a,int lengh){
int tmp,i;
ここにコードを追加して完成させる。

}
[3] C言語
[4] 7/31まで
[5]
・降順(大きいもの順)に整列すること
・ローカル変数やグローバル変数を追加しないこと
・lengthが負の値の時はなにもしないこと
・関数を呼び出さないこと

よろしくお願いします。(前期単位がかかってます)
329デフォルトの名無しさん:2011/07/06(水) 01:32:30.22
じゃんけんのルールもわからんアホがいるスレはここか
330デフォルトの名無しさん:2011/07/06(水) 01:39:27.30
まだ消化されてない問題たち
>>295
>>297 >>298 >>299
>>303 >>304 >>305
>>328
抜けがあったらスマン。
331デフォルトの名無しさん:2011/07/06(水) 02:12:03.63
332デフォルトの名無しさん:2011/07/06(水) 02:30:37.16
333デフォルトの名無しさん:2011/07/06(水) 02:32:04.32
334328:2011/07/06(水) 02:37:49.58
>>331
おお、迅速かつ正確な解答ですね。ありがとうございました。
335デフォルトの名無しさん:2011/07/06(水) 02:39:22.36
>>332-333
ありがとうございます
とても分かりやすくて助かりました
336デフォルトの名無しさん:2011/07/06(水) 06:58:58.49
>>334
この程度はできないとお前後期やばいぞw
337デフォルトの名無しさん:2011/07/06(水) 08:39:53.30
>>336
後期もこのスレが存在している、と予想するくらいの頭はあるんじゃない?
338デフォルトの名無しさん:2011/07/06(水) 09:48:34.08
クスッときたw
339デフォルトの名無しさん:2011/07/06(水) 12:10:58.17
>>333
すみません、今確認していたのですが
学籍番号-1が計算に入っていないのですが…

これは入れる必要はないという事なんですかね?
自分も学籍番号-1の扱いがよく分からなくて…
340デフォルトの名無しさん:2011/07/06(水) 12:50:50.83
[1] C言語演習
[2] put_nchar関数(←自分で作成する)を使用して、以下のプログラムを作成せよ。
参考:http://codepad.org/DdpoVJOe
@ 何段ですか:5
*
***
*****
***
*
A 何段ですか:5
* *
* *
* *
* *
*
[3.1] Windows7
[3.3] C言語
[4] 今日の19時まで
[5] 関数呼び出しまで
わかる方どうかよろしくお願いします。
341デフォルトの名無しさん:2011/07/06(水) 12:53:43.48
>>340
@はひし形、AはV字形で表示するプログラムです。
(滅茶苦茶になってるから補足。)
342333:2011/07/06(水) 13:46:00.73
>>339
普通マイナス値の学籍番号はないので、データの終了判定用だと考えました。
この行も計算で使いなさいと言うことなら、6回ループさせて、
全データを処理すれば良いと思います。
343デフォルトの名無しさん:2011/07/06(水) 14:05:22.79
>>342
了解です
ありがとうございます
344デフォルトの名無しさん:2011/07/06(水) 14:33:18.14
345デフォルトの名無しさん:2011/07/06(水) 14:39:09.28
>>340
分かりやすくを心がけてみた
ttp://ideone.com/rijtV
346デフォルトの名無しさん:2011/07/06(水) 14:53:10.63
>>345
わかりやすい説明も付けていただいてありがとうございました。
非常に助かりました。
347デフォルトの名無しさん:2011/07/06(水) 18:43:14.08
[1] 授業単元:整列処理
[2] 問題文(含コード&リンク): http://codepad.org/afHWYPLF
問題が3問あります。長いので問題文もリンク先に書かせていただきました。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: C
[4] 期限: 2011年7月9日まで
[5] その他の制限: 整列処理

よろしくお願いします。
348デフォルトの名無しさん:2011/07/06(水) 19:46:11.45
[1] C言語演習

[2] argvで指定された可変引数個数の情報を別の配列(ary)に格納せよ。
但し、第一引数だけは別の配列(ary)に格納はしないこと。
例)argv:./test a b c d e f
例)ary :./test b c d e f

[3.1] redhat
[3.3] C言語
[4] 本日中
[5] 制限:なし
わかる方どうかよろしくお願いします。
349デフォルトの名無しさん:2011/07/06(水) 20:17:22.82
[1] 授業単元:
[2] 問題文(含コード&リンク):
#include <stdio.h>
void inputNUM(int data[3])
{
int i = 3;
while (i--)
scanf("%d", data++);
}
void printNUM(int data[3])
{
int i = 3;
while (i--)
printf("%d ", *data++);
}
void sort(int data[3])
{
int i, j, t;
for (i = 1; i < 3; i++)
for (j = 0; j < i; j++)
if (data[i] < data[j]) {
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
350デフォルトの名無しさん:2011/07/06(水) 20:17:50.71
int main()
{
int a[3];
inputNUM(a);
sort(a);
printNUM(a);
return 0;
}
のプログラムは、異なる整数値3つに制限してた。これを異なる20個の整数で同様の処理ができるように拡張しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/8まで
[5] その他の制限:
351デフォルトの名無しさん:2011/07/06(水) 20:24:50.52
3のところを20にしろよw
352デフォルトの名無しさん:2011/07/06(水) 20:54:42.65
>>348
こんなんでいいのか?
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int i;
char **ary;
printf("argv: ");
for (i = 0; i < argc; i++)
printf("%s ", argv[i]);
printf("\n");
ary = (char **)malloc((argc - 1) * sizeof(char*));
if (ary == NULL) {
fprintf(stderr, "Can't allocate memory\n");
return 1;
}
ary[0] = argv[0];
for (i = 2; i < argc; i++)
ary[i - 1] = argv[i];
printf("ary : ");
for (i = 0; i < argc - 1; i++)
printf("%s ", ary[i]);
printf("\n");

free(ary);
return 0;
}
353デフォルトの名無しさん:2011/07/06(水) 21:08:15.92
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
 
 円周率を求めよ。方法はどのような方法でも構わない。
 ただしprintf("%f",M_PI)などはなし。
 またアルゴリズムのオリジナリティは評価に加点します。
 (〜の方法では◯桁までしかでないが、このアルゴリズムを追加すると
  桁数が増える など)

 できるだけ多い桁数を出したいです。
 また桁数を逐次的に増やす方法が知りたいです。

 よろしくお願いします
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語のみ
354デフォルトの名無しさん:2011/07/06(水) 21:43:38.57
>>352
はい、ありがとうございました!
355 ◆QZaw55cn4c :2011/07/06(水) 21:57:18.76
356デフォルトの名無しさん:2011/07/06(水) 23:32:20.25
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
幅が15程度の1次元の領域を考える.
その領域の中央に1匹の虫を放つ.
虫は単位時間あたり距離1だけ左に行ったり右に行ったり,あるいは止まっていたりする.
10単位時間経過時の虫の居場所をint型1次元配列の該当位置に1を加えるという形で記録してゆく.
以上を1試行とし,計100試行程繰り返した段階での,虫の最終位置をカウントした配列内の中身を表示する.
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語のみ
[4] 期限:明日まで
[5] ・虫は毎回ランダムに位置を-1減らすか,1増やすか,そのままの位置かいずれかである.
この位置変化量は
(int)((double)rand()/((double)RAND_MAX + 1.0) * 3.0)-1
または
rand() % 3 - 1
のいずれかで与えられる.
虫の座標が0未満になったら反対側の端に移す.
また,もし虫が最大座標を超えたら0の位置に移す.
357デフォルトの名無しさん:2011/07/06(水) 23:34:15.71
>>356
[5]続き
・虫の座標が0未満になったら反対側の端に移す.
また,もし虫が最大座標を超えたら0の位置に移す.
・main関数で虫の最終位置のカウント用配列を定義する.
1回の試行(虫を10単位時間分移動させる)及び結果記録はmain関数とは別の関数を呼び出しで実現する.
虫の最終位置カウント配列の中身の表示は,main関数とは別の関数で行う.
・虫の最終位置カウント配列の中身の表示はできれば横棒グラフで表示する.難しければ
配列の各要素の値を数字で表示させても良い.
この表示は1試行ごとに行っても良いし,全試行終了後に一回だけ表示させるだけでもよい.
・1次元領域の幅や,総試行回数(100程度)は極力マクロ定数で定義する.
358デフォルトの名無しさん:2011/07/06(水) 23:36:52.02
>>356
[実行例]

---1--- ←次の試行
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]* ←虫の到達位置
[9]
[10]* ←虫の到達位置
[11]
[12]
[13]
[14]
〜途中省略〜


お願いします
359デフォルトの名無しさん:2011/07/06(水) 23:49:08.89
まだ消化されてない問題たち

>>295

>>297 >>299 >>303

>>328 >>356
抜けがあったらスマン。
360デフォルトの名無しさん:2011/07/07(木) 00:04:44.70
[1] 授業単元: 文字と文字列
[2] 問題文(含コード&リンク): http://codepad.org/CZXzKH3U 問題分は上でプログラムは私が書いたものです。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc バージョンはわかりません・・
 [3.3] 言語:C言語
[4] 期限: [2011年7月7日16:10まで]
[5] なるべくプログラムを書き換えずに間違っているところを訂正する感じでお願いします。

361デフォルトの名無しさん:2011/07/07(木) 00:08:42.39
>>356
蟲でプログラムが完成しないんですね、わかります
362デフォルトの名無しさん:2011/07/07(木) 00:12:48.21
>>360
うまく動かないのは39-40行が変だからじゃないかな
weakを間違えた回数が一番多かった文字にするなら、最初にweak=0;として
if(miss[i]>miss[weak]){ weak = i; }
にすればいいんじゃない
363デフォルトの名無しさん:2011/07/07(木) 00:28:02.02
すみません257さんと同じ問題なのですがどこを見ればわかりますか?
よくわかってませんので教えてください。
お願いします。
364デフォルトの名無しさん:2011/07/07(木) 00:29:08.63
365デフォルトの名無しさん:2011/07/07(木) 00:50:26.76
>>356
[補足]
---0--- ←初回の試行
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]* ←虫の到達位置
[9]
[10]
[11]
[12]
[13]
[14]
366デフォルトの名無しさん:2011/07/07(木) 00:51:45.35
>>356
---1--- ←次の試行
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]* ←虫の到達する位置
[9]
[10]* ←虫の到達する位置
[11]
[12]
[13]
[14]
367デフォルトの名無しさん:2011/07/07(木) 00:53:10.72
>>356
続き
---99---
[0]
[1]***
[2]***
[3]****
[4]*********
[5]************
[6]*************
[7]****************
[8]**************
[9]**************
[10]********
[11]****
[12]
[13]
[14]

←っていう感じのプログラムです
368デフォルトの名無しさん:2011/07/07(木) 00:55:38.58
>>362
返信ありがとうございます。
書き換えてみましたが、結果は変わらずでした・・・
weak key以外は正しく動作しているので、後は
33行目がちゃんとMissの配列に格納されていて、カウントされているかどうかなんですが
自分でもよくわかっていません・・・
369デフォルトの名無しさん:2011/07/07(木) 01:03:40.39
>>368
miss[100]をmiss[128]にしてfor(i=0;i<128;i++)に書き換えてみな
370デフォルトの名無しさん:2011/07/07(木) 01:09:22.12
まだ消化されてない問題

>>295
>>297 >>299 >>303
>>328 >>347
抜けがあるかもしれん。
371デフォルトの名無しさん:2011/07/07(木) 01:13:24.63
372デフォルトの名無しさん:2011/07/07(木) 01:46:30.30
>>362 >>369
ありがとうございます!
正しい動作を行うプログラムができました!
明日の締め切りに間に合ってよかったです。

原因は配列の数アスキーコードに足りなかったということでしょうか?
なにはともあれ、ありがとうございました。
373デフォルトの名無しさん:2011/07/07(木) 01:53:39.56
>>360
http://codepad.org/wKheIc4l

< int miss[100]; /* ミスしたスペルを格納*/
---
> int miss[128]; /* ミスしたスペルを格納*/
9c9
< int weak=-999;
---
> int weak=0;
24c24
< for(j=0;word[i][j] != inp[j+1];j++){ /* 1文字ずつ比較し、初めのミスまでループ */
---
> for(j=0;word[i][j];j++){ /* 1文字ずつ比較し、初めのミスまでループ */
27a28
> break;
32,34c33,35
< for(i=0;i<100;i++){
< if(miss[i]>weak){ /* 間違えた回数が一番多かったキーを求める*/
< weak = miss[i];
---
> for(i=0;i<128;i++){
> if(miss[i]>miss[weak]){ /* 間違えた回数が一番多かったキーを求める*/
> weak = i;
374デフォルトの名無しさん:2011/07/07(木) 02:07:21.04
[2]下記のプログラムにおいて,numcountは,値が0 〜M -1 の範囲の大きさN のint型の配列を引数として渡されると(ただし,M, N は正の整数),同じ値が複数ある時はそれを1 個とみなしてその配列中の数の
個数を返す関数である.例えば,配列の値を7, 4, 8, 2, 4, 6, 1, 6, 4, 5 とすると,
(ダブリを省くと) この中には,7, 4, 8,2, 6, 1, 5 の7 個があるので,関数numcountは7 を返す.
これは,例えば,0 〜M -1 の範囲でどんな数が出てきたかをチェックしておき
(ヒント: 大きさM のint型の配列を用い,最初はすべて0に初期化しておき,数iが現れたら,そのi番目を1にすればよい),
最後に1度でも出てきたものを数えれば求めることができる.
関数numcountを,下記のプログラムの/* INSERT HERE */の部分に挿入できるように書け.(提出はプログラム全体)

#include <stdio.h>
#define M 10 /* 適当な正整数(数の範囲が0 〜M -1) */
#define N 10 /* 適当な正整数(入力する数の個数)*/
/* INSERT HERE */
intmain(void)
{
inti, a[N];
/* a[0]〜a[N-1] の値を入力する*/
for(i= 0; i< N; i++) {
printf("a[%1d] = ? ", i);
scanf("%d", &a[i]);
}
printf("numcount= %3d\n", numcount(a));
return 0;
}
[1] 配列
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/9
[5] その他の制限:プログラムだけでなく、課題の説明、実行結果も必要です
全くわかってませんのでどうかよろしくお願いします。
375デフォルトの名無しさん:2011/07/07(木) 02:37:19.85
>>374
int numcount( int* in )
{
int a[M] = {0}, i, ret = 0;

for( i = 0; i < N; i++ ){ a[ *in ]++; in++; }
for( i = 0; i < M; i++ ) if( a[i] ) ret++;
return ret;
}
376デフォルトの名無しさん:2011/07/07(木) 02:48:44.13
>>375さん
これはどこにいれたらいいのでしょうか?
377デフォルトの名無しさん:2011/07/07(木) 03:33:28.45
/* INSERT HERE */って自分でコピペしておいてw
378デフォルトの名無しさん:2011/07/07(木) 04:22:19.11
/* INSERT ME PLEASE */のほうがいいかな
379デフォルトの名無しさん:2011/07/07(木) 06:06:30.06 BE:4223602297-2BP(0)
どなたか入力された英大文字、英小文字、数字、改行の数を数えるプログラム書いてください。 自分ではなぜかうまくいかないので、参考にしたいのでお願い
380デフォルトの名無しさん:2011/07/07(木) 06:10:50.57
何が上手くいかないのか明らかにした方が良いと思う、つまり書いたコードを晒せ
381デフォルトの名無しさん:2011/07/07(木) 06:28:48.23
isupper()、islower()、isdigit()、'\n'で判別してそれぞれのカウンタに追加すればいいと思うよ
382デフォルトの名無しさん:2011/07/07(木) 07:08:26.69
>>379
なんか俺が2年生に授業で出した追加課題とほぼ同じなのは気のせいか
383デフォルトの名無しさん:2011/07/07(木) 07:16:02.29
>>382
オリジナリティない課題出しといてそんなこと言われても
384デフォルトの名無しさん:2011/07/07(木) 07:26:53.73
2年でこれって事は1年の時はプログラムは未修?
385デフォルトの名無しさん:2011/07/07(木) 07:50:20.82
情報系じゃないなら、一年でちょっと触って終わりだろうよ
386デフォルトの名無しさん:2011/07/07(木) 08:18:02.19
むしろ大学なら情報系でも理論系メインで実際のプログラムは実験時のためにどうにか扱える程度で終わるんじゃ
387デフォルトの名無しさん:2011/07/07(木) 09:02:09.48
>>377さん
ありがとうございます。
コンパイラ?したらどうなりますか?
数字は適当でいいので・・・
388デフォルトの名無しさん:2011/07/07(木) 09:03:55.78
死ね
389デフォルトの名無しさん:2011/07/07(木) 09:09:44.67
>下記のプログラムの/* INSERT HERE */の部分に挿入できるように書け
この日本語が通じない人間がいるとは出題者も思わないだろうなw
390デフォルトの名無しさん:2011/07/07(木) 09:25:37.32
F村め。
391デフォルトの名無しさん:2011/07/07(木) 11:16:26.86
392デフォルトの名無しさん:2011/07/07(木) 11:54:20.10
>>299

期限過ぎてるみたいだけど、
main の中、

Rockers = alloc_rockers(N);

の行の下に、以下の4行を追加

if (Rockers == NULL) {
printf("Can't allocate memory\n");
return 1;
}
393デフォルトの名無しさん:2011/07/07(木) 11:59:07.85
394デフォルトの名無しさん:2011/07/07(木) 12:27:04.89
[1] 授業単元: データ型
[2] 問題文:動物名 { 犬, 猫, 牛, 豚 } を選択すれば、それに対応した泣き声 { ワンワン, ニャーニャー, モーモー, ブーブー } を表示するようなプログラムを作成せよ。ただし、 enum を使うこと。
( 実行例 )
動物の番号を選んで下さい
0:dog 1:cat 2:cow 3:pig 9:end
0
ワンワン
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月12日09:00まで
[5] その他の制限: ありません
395デフォルトの名無しさん:2011/07/07(木) 13:19:58.16
>>393
C++って知ってる?
396デフォルトの名無しさん:2011/07/07(木) 13:29:17.32
>>395
線形リストって知ってる?
ていいうかこれ全く関係ない内容じゃねーかwwwww
397デフォルトの名無しさん:2011/07/07(木) 13:48:19.15
>>394
#include <stdio.h>

int main(void)
{
  enum Animals { dog = 0, cat, cow, pig, end = 9 };
  const char *crys[] = { "ワンワン", "ニャーニャー", "モーモー", "ブーブー" };
  enum Animals animal;

  do
  {
    printf("動物の番号を選んで下さい\n");
    printf("0:dog 1:cat 2:cow 3:pig 9:end : ");
    scanf("%d", &animal);
  } while (animal < Animals::dog ||
    (animal > Animals::pig && animal != Animals::end));

  if (animal == Animals::end) return 0;

  printf(crys[animal]);

  return 0;
}
398デフォルトの名無しさん:2011/07/07(木) 13:52:30.34
>>397
[3.3] 言語: C
399デフォルトの名無しさん:2011/07/07(木) 13:56:33.16
ごめん、直した
#include <stdio.h>

int main(void)
{
  enum Animals { dog = 0, cat, cow, pig, end = 9 };
  const char *crys[] = { "ワンワン", "ニャーニャー", "モーモー", "ブーブー" };
  enum Animals animal;

  do
  {
    printf("動物の番号を選んで下さい\n");
    printf("0:dog 1:cat 2:cow 3:pig 9:end : ");
    scanf("%d", &animal);
  } while (animal < dog ||
    (animal > pig && animal != end));

  if (animal == end) return 0;

  printf(crys[animal]);
  
  return 0;
}
400デフォルトの名無しさん:2011/07/07(木) 14:02:19.70
こっちの方が良かったかな
s/Animals:://
401デフォルトの名無しさん:2011/07/07(木) 14:28:28.83
>>397-400
迅速な回答ありがとうございます!
402デフォルトの名無しさん:2011/07/07(木) 14:31:09.08
>>303
http://codepad.org/oGIlPltB

行末に//////////のある箇所に修正・追加があります
403デフォルトの名無しさん:2011/07/07(木) 16:29:01.54
>>373
訂正ありがとうございます。
>>360は解決できました。ありがとうございました!
404 ◆uIP391FDQs :2011/07/07(木) 16:38:26.72
>>402
なるほど、有難うございました!
405デフォルトの名無しさん:2011/07/07(木) 17:47:56.99
お願いします
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
(1)ゲームの開始
最初に p 個の玉を壷に入れる。
n 人の参加者は 0 〜 n - 1 の番号が振られており、0 番から昇順(ただし、n - 1番の次は 0 番とする)に以下のステップ(2)を繰り返す。

(2)ステップ
壷を渡された参加者は、壷に玉が入っている場合は、そのうち1個を取り(既に持っている玉があれば、それらと共に)手元に置く。
壷が空っぽの場合、手元に玉があればその全てを壷に戻す。
どちらの場合も、その後壷を次の参加者に渡す。
勝者が決まるまで、このステップを繰り返す。
(3)ゲームの終了
ある参加者が壷に残った最後の玉を取り出したとき、他のどの参加者の手元にも玉がなければ、ゲームは終わりとなり、全ての玉を持っている者が勝者となる。
参加者の人数 n と玉の数 p を入力し、勝者の番号を出力するプログラムを作成せよ。
ただし、3 ≦ n ≦ 50, 2 ≦ p ≦ 50 とし、ゲームのステップ(2)は1000000ステップ以内に終了することが保証されているものとする。
[3] 環境
 [3.1] OS:mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/13
406デフォルトの名無しさん:2011/07/07(木) 18:09:50.60
>>405
#include <stdio.h>

#define TRY_MAX 1000000

int main(void)
{
long pot, ball[50]={0}, index, n, p, i;

n=50; p=50; // 初期設定

index=0;
pot=p;
for(i=0;i<TRY_MAX;i++)
{
if(pot>0)
{
ball[index]++;
pot--;
if(ball[index]==p) break;
}
else
{
pot+=ball[index];
ball[index]=0;
}
index=(index+1)%n;
}
if(i<TRY_MAX) printf("%ld\n", index);

return 0;
}
407201:2011/07/07(木) 18:53:43.39
>>212
遅くなりました、ありがとうございます
正直自分の頭では良くわからない所もありますが、もう少し考えて見ます

それと試してみたところ、tanだけはanswerが出ませんでした
どうやら12〜14行目にtanだけが入ってないからのようですが、単純に{"tan", tan}を入れても変わりませんでした
その点に関してもう少し詳しくお願いします
408デフォルトの名無しさん:2011/07/07(木) 19:00:33.60
>>321
勝つ確率が1/3、あいこの確率が1/3で負けない確率は両者を足して2/3
だいたい全員違う手はあいこってコメントしときながら、なんで全員同じかどうか判定してんだよw
409デフォルトの名無しさん:2011/07/07(木) 19:03:01.35
最近の人々はジャンケンなんかしないのですよ。
410デフォルトの名無しさん:2011/07/07(木) 20:04:54.45
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://codepad.org/ZtuWkxys
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:07/08

お手数おかけしますが、よろしくお願いします。
411デフォルトの名無しさん:2011/07/07(木) 20:25:29.64
[1] 授業単元:
[2] 問題文(含コード&リンク):
#include <stdio.h>
void inputNUM(int data[20])
{
int i = 20;
while (i--)
scanf("%d", data++);
}
void printNUM(int data[20])
{
int i = 20;
while (i--)
printf("%d ", *data++);
}
void sort(int data[20])
{
int i, j, t;
for (i = 1; i < 20; i++)
for (j = 0; j < i; j++)
if (data[i] < data[j]) {
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
412デフォルトの名無しさん:2011/07/07(木) 20:25:41.01
int main()
{
int a[20];
inputNUM(a);
sort(a);
printNUM(a);
return 0;
}
のプログラムでは、入力される数値は同じ数字がないことを前提にしていた。
この制限を解除し、同じ数値が複数あった場合には、昇順に並べた結果表示の際に、同じ数を複数表示せず1回のみ表示させるようにプログラムを拡張しなさい。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/8まで
[5] その他の制限:

413デフォルトの名無しさん:2011/07/07(木) 20:35:08.63
410です。
//たとえば1を読み込めばビットで000000001を、4を読み込めば000001000を、
//つまりビットの1の位置を数字に対応させています。
//そして「.」を読み込めば特別に111111111を構造体aa_tのcellに入力します。

誤解を招いてしまいそうですが、「.」のみでなく000000001や000001000もcellに入力していきます。
よろしくおねがいします。テキストファイルの中身の数字は任意のものですが、枠(|や+など)の数は決まっています。
414デフォルトの名無しさん:2011/07/07(木) 20:51:59.34
>>411
void
printNUM(int data[20])
{
int i = 20;
printf("%d ",*data++);
while (--i) {
if (*data != *(data - 1))
printf("%d ", *data);
data++;
}
}
415デフォルトの名無しさん:2011/07/07(木) 21:13:28.16
416デフォルトの名無しさん:2011/07/07(木) 21:23:01.45
>>407
struct {
char name[NAME_LEN];
double (*f)(double);
} functions[] = {{"sin", sin}, {"cos", cos}, {"tan", tan}, {"arcsin", asin}, {"arctan", atan}, {"ln", log},
{"log", log10}, {"exp", exp}, {"sqr", sqrt}, {"rad", rad}, {"deq", deq},
{"sinh", sinh}, {"cosh", cosh}, {"tanh", tanh}};

tan忘れてた
math.hにある関数だから単純につっこめば動くと思うんだけど
どこに突っ込んだんだか
417デフォルトの名無しさん:2011/07/07(木) 21:43:58.72
>>295

ttp://codepad.org/QOZZwsgU

連結の向き?が指定されていなかったのでFILOで連結した。
そっちの方が楽だったから。
418デフォルトの名無しさん:2011/07/07(木) 22:14:10.67
お願いします
[1] 授業単元:C演習
[2] 問題文(含コード&リンク)
getopt_longを使ったargv引数解析を行いなさい。
引数:
--apple 1 (省略形はなし,ハイフンは2つ,続引数は必ずあり)
-peach (省略形はなし,ハイフンは1つ,続引数はなし)
-lemon (省略形はありで-l,ハイフンは1つ,続引数はなし)
-melon (省略形はなし,ハイフンは1つ,続引数はあってもなくてもよい)
※続引数がある場合はそれを表示しなさい
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日中
419デフォルトの名無しさん:2011/07/07(木) 22:16:38.46
420デフォルトの名無しさん:2011/07/07(木) 23:20:14.97
[4] 期限: 本日中

ずいぶいんリスキーな人生送ってるんだな。
421デフォルトの名無しさん:2011/07/07(木) 23:21:56.70
アメリカだろ
今朝だ
422デフォルトの名無しさん:2011/07/07(木) 23:22:32.37
<<418,420
明日いっぱいに変更します
423 ◆ZFYhPjiPGw :2011/07/08(金) 00:38:07.54
[1] 授業単元:パターン認識
[2] 問題文
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
No.143のレスです
[3] 環境
 [3.1] OS: LINUX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月11日
[5] その他の制限:特になし

宜しくお願いします。
424デフォルトの名無しさん:2011/07/08(金) 00:48:03.83
425デフォルトの名無しさん:2011/07/08(金) 01:21:58.05
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
与えた文字列を指定した回数繰り返す文字列に変換するプログラムを作成しなさい。
ただし、main関数を以下のように宣言し、実行時に引数をとれるようにする。
第一引数は繰り返し回数とし、第二引数は繰り返される文字列とする。
すなわち、./prog 3 "ABC"と実行した場合は、ABCABCABCとなる文字列が作られる。
作られた文字列は、表示すること。必要に応じて、数字を数値に変換する関数atoi()を使用してもよい。
その際は、#include<stdlib.h>を加えること。

#include <stdio.h>
#include <stdlib.h>
int main( int argc,char*argv[]){
/** argc:引数の個数、argv[0]:プログラム名、argv[1]〜argv[n]:引数**/
x=atoi(argv[1]);/*atoiの使用例*/
return(0);
}
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:来週の水曜日まで
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします!

426デフォルトの名無しさん:2011/07/08(金) 02:38:23.50
>>415,419
ありがとうございました!
427デフォルトの名無しさん:2011/07/08(金) 02:52:40.57
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://codepad.org/EjO8vQHI
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:07/08

度々失礼いたします。よろしくお願いします。
428デフォルトの名無しさん:2011/07/08(金) 03:28:51.74
>>427
大丈夫な気がするが、どういう時にNGになるん?
429デフォルトの名無しさん:2011/07/08(金) 05:03:05.61
>>428
http://codepad.org/4BANlPgB
これでaa_delをテストしてるんですが、望ましくない結果になったもので…お手数おかけしますがよろしくお願いします。
430デフォルトの名無しさん:2011/07/08(金) 05:20:25.50
>>429
//もう1度実行すると0を返すはず。
for(i=1;i<=9;i++){
if(i==4) continue;
r=aa_del(&s,2,7,i);
if(r!=1){ /* ← だから、 0 だろ? */
printf("error: aa_del(2,7,%d) returns %d\n",i,r);
return 1;
}
}
431デフォルトの名無しさん:2011/07/08(金) 05:35:29.73
>>430
あぁもうすみませんアホすぎました。ありがとうございました。
432デフォルトの名無しさん:2011/07/08(金) 05:50:07.32
433デフォルトの名無しさん:2011/07/08(金) 13:12:03.60
>>432
助かりました!!
ありがとうございます。
434デフォルトの名無しさん:2011/07/08(金) 19:07:04.97
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): http://codepad.org/FYsQ9RGx
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:明日まで
問1〜4まであるのでお手数ですがよろしくお願いします。
435デフォルトの名無しさん:2011/07/08(金) 20:11:54.37
分散で桁落ちしないようにするにはどうしたらいいですか?
436デフォルトの名無しさん:2011/07/08(金) 20:47:12.03
>>435
全くと言うのであればMathematicaなどのように計算途中の状態を値で保持するのではなく有理式などの形で保持する
ある程度でいいなら値がほぼ等しいと思われるような減算が演算過程に入り込まないようにしたり
浮動小数演算ではなく多倍長整数演算で計算したりetc
437デフォルトの名無しさん:2011/07/08(金) 21:10:53.93
>>435
以前指摘されたことですが、
V(X) = E(X^2) - (E(X))^2
の 1 pass 公式をつかわずに、素直に、もともとの定義である、
E((X - E(X))^2) = 1/n * Σ(i = 0〜n)(x(i) - E(X))^2
を使用したほうが格段に桁落ちが少なくてすみました。
http://hibari.2ch.net/test/read.cgi/tech/1307166756/499
438デフォルトの名無しさん:2011/07/08(金) 21:35:19.62
[1] 授業単元:関数
[2] 問題文(含コード&リンク):
1つめの食塩水aグラムは、濃度c%である。
2つめの食塩水bグラムは、濃度d%である。
この2つの食塩水を混ぜると、何%の食塩水が何グラムできるか?
a,b,c,dの値を実数で入力する関数、答えを求める関数を作成し、プログラムを完成させなさい。
実行例)
食塩1:食塩水100g 濃度2%
食塩2:食塩水200g 濃度5%
結果:4%の濃度になる
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/14まで
[5] その他の制限:
439デフォルトの名無しさん:2011/07/08(金) 21:36:59.57
>>434 1)
#include <stdio.h>

int main(void)
{
int ch;

while ((ch = getchar()) != EOF) {
putchar(ch);
}

return 0;
}
440デフォルトの名無しさん:2011/07/08(金) 21:43:38.51
>>434 2)
/*
13-2 ファイル入出力

ファイルを読み込んで,ファイル中の英小文字を英大文字に,
英大文字を英小文字に変換してファイルに書き出すプログラムを作成せよ.
*/

#include <stdio.h>
#include <ctype.h>

int main(void)
{
int ch;

while ((ch = getchar()) != EOF) {
if (isupper(ch)) {
ch = tolower(ch);
} else if (islower(ch)) {
ch = toupper(ch);
} else {
/* nop */
}

putchar(ch);
}

return 0;
}
441デフォルトの名無しさん:2011/07/08(金) 21:49:41.15
>>438
#include <stdio.h>

int input4(double *a, double *b, double *c, double *d)
{
printf("input a b c d\n");
return scanf("%lf%lf%lf%lf", a, b, c, d) == 4;
}

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

if (input4(&a, &b, &c, &d)) {
printf("食塩水1: %gg %g%%\n", a, c);
printf("食塩水2: %gg %g%%\n", b, d);
printf("結果: %gg %g%%\n", a + b, (a * c + b * d) / (a + b));
}
return 0;
}
442デフォルトの名無しさん:2011/07/08(金) 22:07:13.69
443デフォルトの名無しさん:2011/07/08(金) 22:17:59.35
>>434 4)

ttp://codepad.org/3CxOyZ0k

1行が256文字以上になると期待する動作をしない場合あり。
SIZE_BUFを大きくすればその大きさまでは大丈夫。

根本的に対策するのは大変なので、現状提供とする。
444デフォルトの名無しさん:2011/07/08(金) 22:52:44.97
内容:
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:window [3.2] コンパイラ名とバージョン:stdio10[3.3] 言語:C
[4] 期限:7月9日まで
#include<stdio.h>
int main(void){
int i; int a = 0, b = 0, c = 0, d = 0, e = 0;
int yoso1,yoso2,yoso3,yoso4,yoso5; int yoko1 ,yoko2=0;
int tate1=0,tate2=0,tate3=0,tate4=0,tate5=0;
パート1
パート2に続く
445 ◆QZaw55cn4c :2011/07/08(金) 22:52:53.66
>>443
>根本的に対策するのは大変なので
そのための mygetline() です。:-)
http://codepad.org/VWIlTCwm
446デフォルトの名無しさん:2011/07/08(金) 22:59:26.15
for( i =0 ; i< 10 ; i++){ yoko1 =0;
yoso1 = 50 - (5 * i);
yoso2 = 49 - (5 * i);
yoso3 = 48 - (5 * i);
yoso4 = 47 - (5 * i);
yoso5= 46 - ( 5 * i);
printf("%6d%6d%6d%6d%6d", yoso1, yoso2, yoso3 ,yoso4 , yoso5);
printf(" 累計");
yoko1 = yoso1 + yoso2+ yoso3 +yoso4 + yoso5; yoko2 = yoko2 + yoko1;
printf("%6d\n",yoko2);
tate1 = tate1 + yoso1;
tate2 = tate2 + yoso2;
tate3 = tate3 + yoso3;
tate4 = tate4 + yoso4;
tate5 = tate5 + yoso5;}
447デフォルトの名無しさん:2011/07/08(金) 23:09:25.01
超難しいのがきたな
これは誰にも解けない
448デフォルトの名無しさん:2011/07/08(金) 23:20:48.94
444と446のつづき
ようやくパート3
printf(" 累計 累計 累計 累計 累計\n");
printf(" %6d%6d%6d%6d%6d",tate1,tate1+tate2,tate1+tate2+tate3,tate1+tate2+tate3+tate4,tate1+tate2+tate3+tate4+tate5);
return 0;}
T 上記プログラムを配列をつかった、1重のループでつくりなおす。
U Uで変更した上記プログラムの縦の足し算、横の足し算を関数を使って
  プログラムを回収する。
449デフォルトの名無しさん:2011/07/08(金) 23:24:38.26
444 446 448
 まわりは10行ぐらいでかけてます。
とほほです。
450デフォルトの名無しさん:2011/07/09(土) 00:09:43.61
>>444
>1重のループでつくりなおす
ってあるけど、既にループになってるよね?2重になるということでいいの?

>関数を使ってプログラムを回収する。
これ、出力さえ同じなら、作り直して良いって事?
451デフォルトの名無しさん:2011/07/09(土) 00:54:58.43
>>444
>> T 上記プログラムを配列をつかった、1重のループでつくりなおす。
こんなんで良ければ。
http://codepad.org/QCFcvNOA
452デフォルトの名無しさん:2011/07/09(土) 01:10:47.41
QZは機制議論板で荒らしの報告を何度もしてるようだが、ルールを守れなくて
何回も何回も蹴られとるな( ゚,_・・゚)ブブブッ

ネットでこれだから現実生活じゃ適応不可能だろうね
453デフォルトの名無しさん:2011/07/09(土) 02:21:45.82
Codepadにレス番貼り付けるとか、ルールを守るとかいう考えがないんだろうな
454デフォルトの名無しさん:2011/07/09(土) 13:03:18.89
宣伝すんなクズ
455ANSWER>444:2011/07/09(土) 16:39:44.93
456デフォルトの名無しさん:2011/07/09(土) 17:12:47.01
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://codepad.org/dx3nSGGc
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:07/09

お手数お掛けしますがよろしくお願いします。
457デフォルトの名無しさん:2011/07/09(土) 17:35:17.36
scanfで、%dにでかい数値をつっこんだときの動作を教えてください
うちの環境ではでかい数字をつっこむとintの最大値をとりますが
これは環境依存ということでよろしいでしょうか

というか、scanfのちゃんとした仕様書ってどこにありますか?
458デフォルトの名無しさん:2011/07/09(土) 17:51:10.41
>>457
スレ違い
JIS嫁
459デフォルトの名無しさん:2011/07/10(日) 01:01:11.26
>424
ありがとうございました!おかげでレポートを提出することができます。
460デフォルトの名無しさん:2011/07/10(日) 02:01:10.74
>>417
デバックするとエラーが起こるんですが…
461デフォルトの名無しさん:2011/07/10(日) 03:17:11.66
>>417
スタックのことをFILOって言っちゃう男の人って・・・
462デフォルトの名無しさん:2011/07/10(日) 03:20:48.76
先入れ後出しって言うべきだよな
463417:2011/07/10(日) 07:20:27.31
>>460
はて?こちらでは(たぶん)思ったとおりに動くけど?
どこでどんなエラーが出る?

>>461>>462
スタックだとデータ構造じゃなくて、ヒープに対するスタックとごちゃになるかとおもって
敢えて、FILOにした。先入れ後出しにすべきだった?
464デフォルトの名無しさん:2011/07/10(日) 07:24:41.22
C++って言ってるからにはC++でコンパイルしてやれよ・・・・
エラーでるに決まってるだろ
465デフォルトの名無しさん:2011/07/10(日) 07:27:56.94
具体例挙げるまえに送信しちゃった
mallocのとこね
そこ見てCで確認したんだなと思っただけだから他にもあるかもしれん
466471:2011/07/10(日) 09:57:05.68
>>464

あーC++だったのね。申し訳ない。Cだとおもっていた。
とりあえずmallocの戻り値さえキャストすれば、
動く。g++で確認。

C++でやるなら全面的に書き換えるべきだと思うけど、
私の手に余るのでパスします。

VC++2008ってstl使えたっけ?
そうじゃなくてもクラスでコーディングすべきだよね。
467デフォルトの名無しさん:2011/07/10(日) 12:00:09.21
>>417
First in Tail, Last in Head.
FTLH
逆はありえない
468デフォルトの名無しさん:2011/07/10(日) 12:03:35.51
その略し方は初めて聞いたし
ぐぐっても何も出てこねぇ
どこで使われてるんですか?w
469デフォルトの名無しさん:2011/07/10(日) 12:12:47.66
一行○○だけど?
丸にはひらがな一文字
470デフォルトの名無しさん:2011/07/10(日) 12:15:51.84
逆?
471デフォルトの名無しさん:2011/07/10(日) 12:38:48.46
472デフォルトの名無しさん:2011/07/10(日) 13:22:55.81
>>458
JISなんか読んでどうするんだよ
473デフォルトの名無しさん:2011/07/10(日) 14:05:21.28
英語読めないとか言い出すバカを回避するため。
474デフォルトの名無しさん:2011/07/10(日) 15:13:20.08
>>463
ERROR内容は以下の通りです
error C2440: '=' : 'void *' から 'T_Position *' に変換できません。
475デフォルトの名無しさん:2011/07/10(日) 15:20:07.75
指摘した奴と回答者だけで解決してるが
質問者には理解できねーよなそりゃ
89行目の
p = malloc(sizeof(T_Position));

p = (T_Position *)malloc(sizeof(T_Position));
に変えろ
476デフォルトの名無しさん:2011/07/10(日) 18:23:16.75
[1]アルゴリズム
[2]連結リスト(一方向)の最後に要素を追加するプログラムを作成しなさい。
ただし、連結リストの最後の要素を指すポインタを保持している場合と保持し
ていない場合について、プログラムを作成すること。
[3.1]Linux
[3.2]gcc
[3.3]C
[4]7月21日まで
477デフォルトの名無しさん:2011/07/10(日) 18:30:29.97
>>467

LIFO = FILO
後入れ先出し = 先入れ後出し
だけどFTLHは初めて聞いた。
まぁFILOはFIFOと見間違えそうだからLIFOがベターとは思ったけれど。
478デフォルトの名無しさん:2011/07/10(日) 19:30:54.51
>>476

最後のノードを指すポインタ保持パターン。
保持しない方は、パス
ttp://codepad.org/qL7fTlqB
479デフォルトの名無しさん:2011/07/10(日) 19:55:37.70
要素追加って関数化しないでmain内でやっちゃうんだ?
480デフォルトの名無しさん:2011/07/10(日) 20:41:08.51
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
ユーザーIDとパスワードを入力すると残金が表示されるようなプログラムを作る

ID    パスワード   残金
10001   1122     0
10002   9521     50000
20001   5588     100
20002   0428     300
20003   3618     20000
40004   0777     8000

[3] 環境
 [3.1] OS:windows7
 [3.2] Visua Studio 2010
 [3.3] 言語: C
[4] 期限: 7/10  午前8時まで
[5] その他の制限:
ID入力後、6つのどれにも当てはまらない時には「IDが違う」と表示させ、
IDが合っていてもパスが違うと「パスワードが違う」と表示させる
また、配列を使ってID・パスを管理。

とりあえず↓のように書いてみたのですが全然わからないです…
http://www1.axfc.net/uploader/File/so/65844.txt
お願いします…
481デフォルトの名無しさん:2011/07/10(日) 21:00:09.55
>期限: 7/10  午前8時まで

482デフォルトの名無しさん:2011/07/10(日) 21:10:21.73
未来人が何とかしてくれるだろう
483デフォルトの名無しさん:2011/07/10(日) 21:16:52.57
>>480
IDとパスをintで扱おうとするのはありえない気がするんだよ
例にも先頭0あるし(あとCで先頭0は8進数になる問題が)
文字列処理ってやってるよね?文字列にしていいんだよね
あと構造体使いたいんだが習った?
484デフォルトの名無しさん:2011/07/10(日) 21:19:03.53
>>480
>全然わからないです
まずコンパイルしてみろ
コンパイラは賢いから文法エラーを教えてくれるぞ

printf,Printf 定義されていない関数を使うな
if(user=user[i] ) 代入と比較の違いはわかってる?
else{user[i]==pass[i] 何に対するelseなのか
printf("ユーザーIDを入力してください。”\n);他 全角と半角って知ってる? \nってリテラルだよね?
485デフォルトの名無しさん:2011/07/10(日) 21:30:27.71
>>476

「最後の要素を指すポインタを保持しない」って難しいなぁ・・・
これで良いのかな?

http://codepad.org/0NPX55xg
486デフォルトの名無しさん:2011/07/10(日) 21:30:47.01
487デフォルトの名無しさん:2011/07/10(日) 21:35:43.69
>>485
tailって何ですか?
488デフォルトの名無しさん:2011/07/10(日) 21:39:29.29
>>487
>tailって何ですか?

最後の要素。
ポインタで保持できないので、実体を保持している。

・・・ほとんど「一休さん」の世界だね。
489デフォルトの名無しさん:2011/07/10(日) 21:40:06.14
>>487
typedef struct List_ {int isempty; struct ListNode_ tail;} List;
490デフォルトの名無しさん:2011/07/10(日) 21:45:55.98
491デフォルトの名無しさん:2011/07/10(日) 22:21:58.61
>>488
最初の要素を持てばよくね?
492480:2011/07/10(日) 22:26:29.88
期限は7/11の8時まででしたすいません
あとコンパイルする環境が当方にないので分からないのと
文字列処理と構造体は習ってないので使えないと思います。
あとどういう風に処理を行えばいいのかがまず分からないです。

先生が言うには1次元配列とfor文で作れるのでそうしてほしいらしいです。
ヒントはメインの部分を
for(i=0,i<6,i++);
if(
で始めれば良いということなのですが…
ちなみに今まで習ったのは主に
if for while 2重ループ 複数データの入力処理 配列です
#include <string.h>はたぶん使えないです。

多くの方に協力していただいているのにすいません
493デフォルトの名無しさん:2011/07/10(日) 22:28:34.96
>>491
最初の要素を持つと、最後の一個手前の要素が
「最後の要素を指すポインタを保持」してしまう。
494デフォルトの名無しさん:2011/07/10(日) 22:48:31.32
>>492
>コンパイルする環境が当方にない

>>1ttp://www.microsoft.com/japan/msdn/vstudio/express/
495デフォルトの名無しさん:2011/07/10(日) 22:50:23.44
>>493
出題者はそれは想定していないのでは?
単に >>478
T_Node *pTail = NULL;
みたいなものを使わないように、前からリンクを手繰っていけばいいのでは?
あいまいな仕様から的確な実装を選択するのも、マの能力のひとつだと。
496デフォルトの名無しさん:2011/07/10(日) 22:52:06.49
http://ideone.com/YuGs5
これをマージソートに変えたものをお願いします
497デフォルトの名無しさん:2011/07/10(日) 23:01:37.16
>>495
>出題者はそれは想定していないのでは?

それは只の思い込み。
心の中では「おそらくそうだろう」と思いつつも、
文面にそう謳われている以上、字面通りに解釈し、
あとで「だってこう書いてあるんだも〜ん」って
責任をなすりつけるのも、マの能力のひとつだと。
498デフォルトの名無しさん:2011/07/10(日) 23:11:23.27
>>497>>485

それは屁理屈ってものだよ。
>>485>>477でpNextをノードがもち、先頭を保持していたものを
prev, tailに名前を置き換えただけでしょ。

499デフォルトの名無しさん:2011/07/10(日) 23:15:35.71
>>476
リングリストだから最後じゃないもん的な言い訳で
#include <stdio.h>
#include <stdlib.h>
typedef struct tag_node_t{ int data; struct tag_node_t *next; }node_t;
typedef struct tag_list_t{ node_t *first; }list_t;
void list_add(list_t *list, int data){
node_t *node, *last;
node=malloc(sizeof(node_t));
node->data=data;
if(list->first==NULL){
list->first=node;
node->next=node;
}else{
for(last=list->first;last->next!=list->first;last=last->next);
node->next=last->next;
last->next=node;
}
}
int main(void){
list_t list={0};
node_t *node;
list_add(&list, 1);
list_add(&list, 2);
list_add(&list, 3);
list_add(&list, 4);
for(node=list.first;;node=node->next){
printf("%d\n", node->data);
if(node->next==list.first) break;
}
return 0;
}
500デフォルトの名無しさん:2011/07/10(日) 23:22:16.94
>>498
>それは屁理屈ってものだよ。

仮に出題者が「それは屁理屈だ」などと言いだしたら、
こっちは「それはパワハラだ」と言い返すべきだね。

字義通りに実装され、ちゃんと動作するのに
「俺の意図と違う」という理由で NG を出せるのは、
ちゃんとお金を出して仕事を依頼する「お客様」だけだよ。

ま、その場合でも修正に当たっては
追加のお金を出して貰う訳だけどね。
501デフォルトの名無しさん:2011/07/10(日) 23:23:26.79
>>499
たぶんそれが馬鹿な仕様策定者の字面もたてた最適解だと思います。
502デフォルトの名無しさん:2011/07/10(日) 23:24:02.54
>>500
>>498 のすばらしい実装に瞠目するように。
503デフォルトの名無しさん:2011/07/10(日) 23:29:57.28
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):挿入ソート、シェルソートの比較回数、交換回数を表示するプログラム
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日まで

交換回数(flag)は問題ないと思いますが、比較回数(compare)は何処に入れればいいでしょうか?
色々試してみましたが、上手く行きません。

挿入ソート
http://ideone.com/CWqFE

シェルソート
http://ideone.com/XeJbb
504496:2011/07/10(日) 23:32:17.90
補足ですが
出来たプログラムを使って比較回数・交換回数(データを移動した回数)を計測するのが目的になります
505デフォルトの名無しさん:2011/07/10(日) 23:35:41.23
すいません、登録させる乱数の数がグロいことになってたんで、
減らした奴を載せます。登録させる数がグロいのは計算に費やす時間の考察のためです。

挿入ソート
http://ideone.com/oH6nI

シェルソート
http://ideone.com/1DYTj
506デフォルトの名無しさん:2011/07/10(日) 23:40:17.68
>>504
>>1も読めない人間に協力するヤツはいないと思うよ
507デフォルトの名無しさん:2011/07/10(日) 23:43:35.97
>>502

瞠目したいところだけど、
>>498 にはソースが書かれてないよ?
508496:2011/07/11(月) 00:07:00.80
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):マージソートの書く並び替えによる交換回数、比較回数を表示するプログラム
[3] 環境
 [3.1]
 [3.2]
 [3.3] 言語: C
[4] 期限:明日

マージソートのソースをどのように入れれば良いかわかりません

http://ideone.com/YuGs5
シェルソートでのソースプログラム
509496:2011/07/11(月) 00:08:18.23
すみませんマージではなくクイックソートです
510デフォルトの名無しさん:2011/07/11(月) 00:19:41.04
>>503
こんなとこでしょう。
http://codepad.org/JIezKje9
http://codepad.org/u1rFlSlo

1) #define SIZE と #define LOOP の意味の違いがよくわからない。作る途中で忘れてしまった?
上では N としておきました。

2) シェルソートの間隔を決めるg[] がおかしい。もとのコードでは g[k] のk が範囲外まで動いてしまい、たまたま g[i] == 1 になったら止まる、という実装。
上では g[] をつかわずに書いてみました。

3) malloc() したものは free() した方がいいんじゃないかな、ああ、これは私が信者だからかもしれませんが。信教にしたがっててきとーに。

>>507
>>499 の間違いね。
いや、>>499 = >>500 なら私のほうが瞠目しなくちゃいけませんね。参りました。
511デフォルトの名無しさん:2011/07/11(月) 00:25:13.80
>>510
ありがとうございます。

SIZEとLOOPの違いですが、元々は(改良)バブルソートや挿入ソート、
シェルソートの計算量についての考察を行うため

SIZE→とりあえず最大容量
LOOP→ここを変化させて考察

としていました。
512デフォルトの名無しさん:2011/07/11(月) 00:29:56.07
>>511
了解。じゃ、(その意義には突っ込みたいのですがそれはともかく)もとのままでいいですね。
シェルソートは惜しいところまでいっていますから、今一度吟味するといいでしょう。
513デフォルトの名無しさん:2011/07/11(月) 00:33:07.82
514デフォルトの名無しさん:2011/07/11(月) 00:35:37.20
>>492
これでどうかな。
先頭に0がある4桁の文字列なので、
passにintは使えない。

http://codepad.org/n67wAGfM
515496:2011/07/11(月) 01:18:15.93
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):クイックソートの書く並び替えによる交換回数、比較回数を表示するプログラム
[3] 環境
 [3.1]
 [3.2]
 [3.3] 言語: C
[4] 期限:明日

http://ideone.com/UE6VS
比較回数と交換回数を出力するためのs[]をどこに入れればいいかわかりません
挿入する場所をお願いします
516496:2011/07/11(月) 06:17:53.57
すみませんクイックソートではなくやはりマージソートでした
517デフォルトの名無しさん:2011/07/11(月) 06:52:00.57
やっぱりクイックソートでした
518デフォルトの名無しさん:2011/07/11(月) 09:22:05.23
(#^ω^)ピキピキ
519496 ◆IaQKphUgas :2011/07/11(月) 11:32:40.90
いや本当にマージソートだったんです
申し訳ありませんがよろしくお願いします
520デフォルトの名無しさん:2011/07/11(月) 11:37:50.32
とりあえず両方作ればええんか
521デフォルトの名無しさん:2011/07/11(月) 13:17:29.08
[1] 授業単元:リスト
[2] 問題文(含コード&リンク): http://codepad.org/BB8PLG9F
問題文もリンク先に書かせていただきました。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: C
[4] 期限: 2011年7月12日か13日まで
[5] その他の制限: リストまで

よろしくお願いします。
522デフォルトの名無しさん:2011/07/11(月) 14:15:17.97
[1] 情報処理演習T
[2] 問題:何個かのデータをもらって,その平均,総和,最大値,最小値,標準偏差を計算するプログラムを作成する.プログラムは以下の条件をみたすこと.
・あらかじめ100個の整数型の要素を持つ配列を定義しておく.
・scanfを用いてデータの個数を入力できること.また,scanfを用いてデータの値を配列に入力できること.
・if文を用いて0以下,101以上のデータの個数が入力されないようにすること.
・for文を用いること.
・解は実数で求めること.
実行例@
================================
Input integer: 5
Input numbers:
40
50
60
70
80
Average: 60
Sum: 300
Max: 80
Min: 40
Standard Deviation: 14.1
================================
[3] 環境 [3.1] Mac
    [3.2] Xcode
  [3.3] C言語
[4] 明日の夜10時まで
[5] 教授いわく「必要最低限のプログラムでくみあげて」だそうです

リンクを貼ろうとしたのですがなぜかできなかったので長文になってしまいました。お手数ですがよろしくお願いします。
523デフォルトの名無しさん:2011/07/11(月) 15:19:00.46
俺いわく「教授に申し訳が立たないから、途中まででいいから自力でくみあげて」だそうです
524デフォルトの名無しさん:2011/07/11(月) 16:11:39.03
>>521
http://codepad.org/5oD1kYuM

ShowListも修正した
525デフォルトの名無しさん:2011/07/11(月) 18:37:11.90
>524
有難うございます!助かりました。
526デフォルトの名無しさん:2011/07/11(月) 18:39:25.18
[1] 授業単元:C言語

[2] 問題文(含コード&リンク):
 1円硬貨, 5円硬貨, 10円硬貨, 50円硬貨, 100円硬貨, 500円硬貨の内から種類不問で何枚か取り出し、
 その重さの合計を小数点以下1桁まで入力させる。
 その値から、取り出した硬貨の合計金額を推定し表示するプログラムを作れ。
 ただし、推定される金額が複数存在する場合はその全てを表示する。
 また、1円硬貨, 5円硬貨, 10円硬貨, 50円硬貨, 100円硬貨, 500円硬貨の1枚あたりの重さは
 それぞれ1g, 3.7g, 4.5g, 4g, 4.8g, 7gであるとする。
 (入力例)
 8.0
 (出力例)
 8円
 54円
 100円
 501円

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 考えうる限り効率的なプログラムをお願いいたします
527デフォルトの名無しさん:2011/07/11(月) 19:03:05.94
a,b,cは自然数

ax + by = c

を満たす整数x,yを効率的に求める方法があったと思う。
528デフォルトの名無しさん:2011/07/11(月) 19:06:46.52
529デフォルトの名無しさん:2011/07/11(月) 19:20:32.57
自然数a,bに対して、ax + by = GCD(a,b)を満たす整数x,yが存在する。


<a href="http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/ExEuclid.html">拡張ユークリッド互除法</a>
530デフォルトの名無しさん:2011/07/11(月) 19:27:19.00
>>522
ああ、scanf指定だったのねすまん
http://ideone.com/d5yzs
531デフォルトの名無しさん:2011/07/11(月) 19:49:50.40
532デフォルトの名無しさん:2011/07/11(月) 20:18:36.15
>>531
効率良くねえよ。これは計算時間重視だ。
表示部分消して、1000グラムの入力で計算終わらない。
533デフォルトの名無しさん:2011/07/11(月) 20:30:27.45
>>532
1000グラムで計算時間どのくらいで終わるのが効率がいいの?
534デフォルトの名無しさん:2011/07/11(月) 21:02:51.54
>>526 は 1000g の時
66740 種の金額になるので合ってるかな?
535デフォルトの名無しさん:2011/07/11(月) 21:07:39.78
>>533
自分の想像で言うと、最大32ビット*100万通り(1MB)のリターンまで対応でき、これが3分以内で計算できたら良いかな。
536デフォルトの名無しさん:2011/07/11(月) 21:15:20.91
>>535
解けてないのかよw
537デフォルトの名無しさん:2011/07/11(月) 21:16:12.25
少量グラム(たとえば1.0〜50.0g)は総当たりでリストを求めて置く。

たとえば100gの入力があったら、0.1+99.9をリストか再帰で求めて、両方空でなければマージしてリターン。

途中計算で判明した物はキャッシュしておく。
538デフォルトの名無しさん:2011/07/11(月) 21:31:08.09
コインが 0.2g と 99.8g の2種類だったらどうなるかな
539デフォルトの名無しさん:2011/07/11(月) 21:40:58.52
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
再帰関数呼出しを用いて、10進数の数decをbase進数の数xに変換する関数
conv_base(dec,base,x)を作成しなさい。
base=2,8,16以外も実行例に示すこと。
ただし、base関数の数xはchar型の配列となる。
decをbaseで割ったときの商が正ならば、さらに割ることができるので、
関数conv_base(dec/base,base,x)を呼び出す。
この後、decをbaseで割ったときの余りが、その桁の値になる。
余りが9以下ならば数字に変換し、10以上ならば'a'以降の対応する
アルファベットに変換し、文字列xに代入する。
base進数の数xはmainの中で表示すること。
文字列に代入するのが難しい場合は、関数の中で出力してもよい。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/13
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします。
540デフォルトの名無しさん:2011/07/11(月) 21:48:15.57
あれ、2,8,10,16進数以外って何があったっけ
541デフォルトの名無しさん:2011/07/11(月) 21:51:55.37
有名どころでは24進数や60進数があるだろ
542デフォルトの名無しさん:2011/07/11(月) 22:00:28.18
36進数とか
543デフォルトの名無しさん:2011/07/11(月) 22:06:02.87
>>540
n進法はいくつでもあり得る。
7(10進法)を3,4,5,6,7進法で表すと
3進法 → 21
4進法 → 13
5進法 → 12
6進法 → 11
7進法 → 10
544デフォルトの名無しさん:2011/07/11(月) 22:31:48.51
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ttp://ichigo-up.com/cgi/up/qqq/nm38571.jpg
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc cigwin
 [3.3] 言語:C
[4] 期限: 2011/07/13
[5] その他の制限: ポインタと構造体について習っています
出来るだけ簡単に書いてもらえると助かります
545デフォルトの名無しさん:2011/07/11(月) 23:13:05.37
546デフォルトの名無しさん:2011/07/11(月) 23:21:27.92
[1] データ構造とアルゴリズム
[2] (1)双方向リストについて、領域の確保、確保した領域をリストの先頭に追加、要素の削除を行うプログラムを作成しなさい。  
(2)配列により、キューを実現するプログラムを作成しなさい。
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 期限: 7月19日
547デフォルトの名無しさん:2011/07/11(月) 23:25:02.90
548 ◆QZaw55cn4c :2011/07/11(月) 23:37:27.76
>>539
>>545 は逆順に前から文字列を生成して main() でひっくり返します。
こちらは正順で後ろから生成します。
http://codepad.org/4vGmgPNA
549デフォルトの名無しさん:2011/07/11(月) 23:40:41.08
[1] 授業単元:演習
[2] 問題文(含コード&リンク):http://pastebin.com/index/sg6akdN0
標準入力から「id, 名前, 年月日, 住所」のようなコンマ区切形式 (CSV 形式) の名簿データを受け付けて,
項目を切り出してメモリ中に格納する.また,% で始まる入力行をコマンド入力として解釈し,格納されたデータを表示や整列する
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月13日?
[5] その他の制限: 問題は長いのでリンク先のプログラムの中に書いてあります。
ごちゃごちゃしていてすいません。自分でやってみたのですがどうにもならず、ご指南していただきたく書き込みました。
するべきことを要約するとソートとデリートのコマンドを設定することです。
ソートに関してですがqsortはつかわずに関数へのポインタを使っていただきたいです。
(例)
int (* comp[5])(struct profile *a, struct profile *b);
comp[0] = compare_id;
[1] = compare_name;

といった感じです。それとプログラム219行目以降のswitch構文の中の(line + 3)などの引数は具体的に何を意味していると言えばよいのでしょうか。

長々とすいません。よろしくお願いします。
550549:2011/07/11(月) 23:42:42.01
すいません、URLを間違えました。
http://pastebin.com/LnjRVnMh
551 ◆QZaw55cn4c :2011/07/11(月) 23:44:30.81
>>546
お絵かきしてみました。
http://codepad.org/Wvsj5nej
552551:2011/07/11(月) 23:46:11.98
>>551>>546 (2)のみです。
553デフォルトの名無しさん:2011/07/11(月) 23:53:30.87
>>539
どの位の桁数になるのか計算して其の分の領域を確保するようにしておいた。
ttp://codepad.org/tunAp5qB
554デフォルトの名無しさん:2011/07/11(月) 23:56:37.10
>>547
ありがとうございます
555デフォルトの名無しさん:2011/07/12(火) 00:08:34.70
>>547
すみません、一つお聞きしたいのですが
1問目のプログラムを実行しても何も起きないのですが
これは無限ループで勝手に終了したということでしょうか?
556デフォルトの名無しさん:2011/07/12(火) 00:46:06.14
>>539

すでにいくつか回答付いていますが、せっかく書いたので挙げさせてください。
どうしても逆順にしか生成できないので、ひとつ関数をかませて、逆順に
しました。

ttp://codepad.org/SiCwxI7i
557デフォルトの名無しさん:2011/07/12(火) 01:08:28.60
>555
>これは無限ループで勝手に終了したということでしょうか?

無限ループなら終了せんだろ?
558デフォルトの名無しさん:2011/07/12(火) 01:13:57.43
>>557
そうですよね…
何も出力されないということは間違っているということなのでしょうか?
559デフォルトの名無しさん:2011/07/12(火) 01:29:44.75
コメント読めんか?
560デフォルトの名無しさん:2011/07/12(火) 01:36:48.97
>>547 // 表示するときは、コメントを外す
print(head);
561デフォルトの名無しさん:2011/07/12(火) 02:19:01.31
>>559-560
すみません、ご迷惑をおかけしました
562デフォルトの名無しさん:2011/07/12(火) 04:11:11.77
すみません、全くわからないのでご教唆お願いします
ファイル名「test.txt」というテキストファイルがあったとします。内容は
Hallow, nice to meet you.
というものです。これを読み込んで
Hallow
nice
to
meet
you
というふうに単語ごとに区切り、改行して表示するプログラムを作ります。
ソースコードはこんな感じです
563デフォルトの名無しさん:2011/07/12(火) 04:14:04.69
#include <stdio.h>
int read_word(FILE *fp,char *str){
int c;
char d;
int i = 0;
if (NULL != fp){
while ((c = fgetc(fp)) != EOF){
d = (char)c;//文字にキャスト
if (d != ',' || d != '.' || d != ' '){
str[i] = d;
++i;
}
}
if(i > 0){
str[i+1] = '\0';
return i;
}
else if(i == 0) //,や.等の区切りの文字が2回続いた時は再帰して再度配列に文字の代入を行う
read_word(fp, str);
}
return 0;
}
564デフォルトの名無しさん:2011/07/12(火) 04:14:36.85
>>563 続き

int main(void){
FILE* fp;
char str[256];
int a;
fp = fopen("tst.txt","r");
a = read_word(fp,str);
while(a != 0)
printf("%s\n",str);
fclose(fp);
return 0;
}
しかしコンパイルは通るのですが、実行するとセグメントエラーとなってしまいます
どこが間違っているのかよくわかりません
言語はc、osはLinuxです
よろしくお願いします
565デフォルトの名無しさん:2011/07/12(火) 04:25:31.10
>>564
ファイル名が間違っていました。修正します
fp = fopen("test.txt","r");
です。実行結果はやはり同じです
566デフォルトの名無しさん:2011/07/12(火) 04:43:46.76
>>564
提示されたコードになるべく沿って書き直しました。
http://codepad.org/z4IrgxaB

1)
if (d != ',' || d != '.' || d != ' '){
「||」 ですか?

2)
a = read_word(fp,str);
while(a != 0)
printf("%s\n",str);
プログラムを通じて、read_word() は一回しか呼ばれませんが、それでいいのですか?

3)
str[i] = d;
++i;

str[i+1] = '\0';
++i した上にさらに i + 1 するのはどうしてですか?

4)
//,や.等の区切りの文字が2回続いた時は再帰して再度配列に文字の代入を行う
read_word(fp, str);
再帰呼び出しからかえってくると、つるつる落ちて return 0 を返して即プログラム終了、ですけれども、それを意図しているのですか?
再帰呼び出しの必要があるかどうかも含めて再考したほうがいいかもしれません。

segmentation fault 以前に、論理が混乱してしまっている感を受けます。
書き直したものが参考になればいいのですが。
567デフォルトの名無しさん:2011/07/12(火) 05:07:39.69
>>566
丁寧に教えていただきありがとうございます
とても参考になりました。どうもありがとうございました
568567:2011/07/12(火) 06:19:58.30
1-4のどれも初歩的なミスですね
再起呼び出しもそもそも必要ありませんでした
もう一度基礎からやりなおします
どうもありがとうございました
569デフォルトの名無しさん:2011/07/12(火) 07:47:01.24
>>526
書いてみたが、300位から時間が掛り過ぎる。
http://ideone.com/ue0Ue
570デフォルトの名無しさん:2011/07/12(火) 08:43:15.73
おいポまえら最適化、腕の見せ所だぞ。
571デフォルトの名無しさん:2011/07/12(火) 09:47:43.24
重いほうから引いてけば速くなる
572デフォルトの名無しさん:2011/07/12(火) 10:06:33.81
>>571
なるほど。 ちょっと早くなった。
573デフォルトの名無しさん:2011/07/12(火) 10:08:26.44
最後の1円のときの処理を特別にする
574デフォルトの名無しさん:2011/07/12(火) 10:12:35.92
成立しない重さの無駄計算を減らすしかない
575デフォルトの名無しさん:2011/07/12(火) 10:56:57.86
>>569
10倍して整数型で扱ったほうが早いし
double の比較に ==0 を使うとかどうかしてる
576デフォルトの名無しさん:2011/07/12(火) 11:38:23.85
>>575
つ -O2
577デフォルトの名無しさん:2011/07/12(火) 11:42:19.79
>>526
#include <stdio.h>

int num[6] = {500, 100, 50, 10, 5, 1}, weight[6] = {70, 48, 40, 45, 37, 10}, cnt[6];

void f(int idx, int w)
{
int i, sum, wt;

if(w == 0 || idx == 5) {
if(w % 10) return;
for(i = sum = 0; i < idx; i++) sum += num[i] * cnt[i];
printf("%d円\n", sum + w / 10);
return;
}
for(i = 0; (wt = i * weight[idx]) <= w; i++) {
cnt[idx] = i;
f(idx + 1, w - wt);
}}

int main(void)
{
double weight;

scanf("%lf", &weight);
f(0, weight * 10);

return 0;
}
578デフォルトの名無しさん:2011/07/12(火) 12:07:32.15
こういうのだと再帰関数の引数の数とかも効いて来るかもしれんね
579デフォルトの名無しさん:2011/07/12(火) 12:40:22.38
>>568
別に基礎からやり直さなくても、いま直面しているお題にもう一度取り組んでいけばいいとおもいます。まあ、慣れ、は大きいです。
580デフォルトの名無しさん:2011/07/12(火) 12:40:38.24
えw
581デフォルトの名無しさん:2011/07/12(火) 12:47:19.74
>>577
アルゴリズムは変えずに小手先技で2倍速程度になったよ。


#include <stdio.h>
int ss=0, num[6] = {500, 100, 50, 10, 5, 1}, weight[6] = {70, 48, 40, 45, 37, 10}, cnt[6];

void printsum(int idx){
int i,sum=0; ss++;
for(i = 0; i < idx; i++) sum += num[i] * cnt[i]; //printf("%d円\n", sum + w / 10);
}

void f(int idx, int w){
int i, wt;
if(w == 0) { printsum(idx); return; }
if(idx<5) {
int wg=weight[idx];
for(i = 0; w>=0; i++) {
cnt[idx] = i;
f(idx + 1, w );
w-=wg; }
return; }

if(w & 1) return;
if(w!=5*((w*52429)>>18))return; //if(w % 5) return;
printsum(idx); }

int main(void) { double weight=400; f(0, weight * 10); printf("%d\n", ss); return 0; }
582デフォルトの名無しさん:2011/07/12(火) 13:04:14.68
1円の枚数は?
583581:2011/07/12(火) 13:06:29.23
回数実行したら対してかわってなかった。
584581:2011/07/12(火) 13:18:16.40
両方動かして、どのくらい速くなるか比較した。20%〜60%ほど時間削減できるようだ。

#include <stdio.h>
#include <time.h>
int num[6] = {500, 100, 50, 10, 5, 1}, weight[6] = {70, 48, 40, 45, 37, 10}, cnt[6];
void f(int idx, int w) {
int i, sum, wt;
if(w == 0 || idx == 5) { if(w % 10) return;
for(i = sum = 0; i < idx; i++) sum += num[i] * cnt[i];
/* printf("%d円\n", sum + w / 10); */ return; }
for(i = 0; (wt = i * weight[idx]) <= w; i++) {
cnt[idx] = i; f(idx + 1, w - wt); }}

void printsum(int idx){
int i,sum=0; for(i = 0; i < idx; i++) sum += num[i] * cnt[i];
/* printf("%d円\n", sum + w / 10); */ }
void f_new(int idx, int w){
if(w == 0) { printsum(idx); return; }
if(idx<5) {
int i, wg=weight[idx];
for(i = 0; w>=0; i++) {
cnt[idx] = i;
f_new(idx + 1, w );
w-=wg; } return; }
if(w & 1) return; if(w!=5*((w*52429)>>18))return; //if(w % 10) return;
printsum(idx); }

int main(void) {
double weight=500; int cl,cr;
cl=clock(); f_new(0, (int)(weight * 10));cl=clock()-cl; printf("f_new=%fsec.\n",(double)cl/CLOCKS_PER_SEC);
cr=clock(); f(0, (int)(weight * 10));cr=clock()-cr; printf("f = %fsec.\n",(double)cr/CLOCKS_PER_SEC);
printf("%f%%高速化\n",100 * (double)(cr-cl)/cr); return 0;}
585デフォルトの名無しさん:2011/07/12(火) 13:31:47.20
581の改良点は、余り計算がボトルネックになっているので、なるべくそこへ行かせないようした。
どうしても回避不可能な余り計算は、かけ算とビットシフトで置き換えた。
586デフォルトの名無しさん:2011/07/12(火) 13:50:36.55
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://codepad.org/3dkRTmjJ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011/7/8
よろしくおねがします
587デフォルトの名無しさん:2011/07/12(火) 14:01:18.87
↑期限15日まででした。
588デフォルトの名無しさん:2011/07/12(火) 15:52:25.40
>>526
500g 31526種 0.2sec
1000g 66740種 3sec
1500g 101954種 14sec
2000g 137166種 48sec
2500g 172380種 121sec
3000g 207594種 269sec

計算時間からして O(n^4) くらいになってる
途中の連番になる部分を計算せずに済めば O(1) に近づけられるかも
589 ◆ZFYhPjiPGw :2011/07/12(火) 17:19:17.33
>>423ですが、直談判したところ、金曜まで待ってくれるとのことです(流石に点数は低くなるみたいですが)
お時間ある方は是非お願いします・・・。
590デフォルトの名無しさん:2011/07/12(火) 17:29:47.30
あきらめたほうがいい
591デフォルトの名無しさん:2011/07/12(火) 17:30:58.23
組み合わせ個数を求めるだけなら、1,2,4,.....2^nグラムまでの演算結果配列を用意する作戦はどうだろう?
1)小数点以下を消去する、 ?????.x が入力されたら 1.x , 2.x .... を答えが出るまで計算する
2)残った数字を2進に直してオンになってる配列と1)の答えを掛け合わせる
上限を設ける必要が有るのと邪道であると言う事に目をつぶれば重さが増えても演算時間に変化は無いのでは?
592デフォルトの名無しさん:2011/07/12(火) 17:38:08.29
2)からして1)は10倍して扱うわけじゃないようだが
それなら1)のような切り離し方はできないんじゃ
593デフォルトの名無しさん:2011/07/12(火) 17:42:15.67
いや違うか
そうでなくてもそんな切り分け方できるわけが無かったな


594デフォルトの名無しさん:2011/07/12(火) 17:46:52.05
>>591
それに当てはまらないパターン存在しないか?
595デフォルトの名無しさん:2011/07/12(火) 20:36:08.90
596デフォルトの名無しさん:2011/07/12(火) 20:40:14.95
C、C++ではなく、HTMLとjavascriptでも宜しいでしょうか
597デフォルトの名無しさん:2011/07/12(火) 20:48:17.44
[1] 授業単元:コンピュータ言語
[2] 問題文(含コード&リンク):
ttp://uproda.2ch-library.com/402107hP9/lib402107.txt
[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C言語でお願いします
[4] 期限:2011年 7月 14日 (木) 正午まで
[5] その他の制限:
リンク先の問題文の最後のほうに記載されています。
制限は結構厳しいものかもしれませんが、
どうかよろしくお願いします。
598デフォルトの名無しさん:2011/07/12(火) 21:11:00.55
>>596
他にスレが無いから良いんじゃない?

↓このスレは、回答者が好きな言語で答えるスレだし、

いろんな言語で宿題 第五編
http://hibari.2ch.net/test/read.cgi/tech/1276873238/

Web制作板には宿題スレは無かったし

まあでもWeb制作板の質問スレで聞くのが一番自然かもね
599デフォルトの名無しさん:2011/07/12(火) 21:11:08.42
ちょっと邪道なコード書いてみたら明らかに大きい数字が出た
重複をカウントしてしまうようだ、考えれば当然だw
600デフォルトの名無しさん:2011/07/12(火) 21:15:43.63
[1] 授業単元:関数
[2] 問題文(含コード&リンク):
情報量の単位は、8bit=1B,1024B=1KB,1024KB=1MB,…(1TBまで)となっている。
[実数]MBや、実数[KB]のような入力をしたとき、それが何bitを意味しているかを表示するプログラムを作成したい。
なお、設定において、数値変換処理には、関数を利用することとし、入力は【整数】の後に「空白」を1つ挟み、【TB/MB/KB/B】のいずれかの単位を表す文字列が書かれているものとする。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/11まで
601デフォルトの名無しさん:2011/07/12(火) 21:57:37.58
[1] 授業単元: ファイル入出力
[2] 問題文(含コード&リンク):
ファイルを読み込んで,ファイル中の英小文字を英大文字に,英大文字を英小文字に変換してファイルに書き出すプログラムを作成せよ.
$ cat sample.txt
1. Software Engineering

Based on the tenets of software engineering and computing science,
the Department of Software Engineering provides students with
a comprehensive grounding in software development and information
processing. As society becomes increasingly dependent on various
... 略 ...

$ 実行例
入力ファイル名 > sample.txt
出力ファイル名 > sample-out.txt
$ cat sample-out.txt
1. sOFTWARE eNGINEERING

bASED ON THE TENETS OF SOFTWARE ENGINEERING AND COMPUTING SCIENCE,
THE dEPARTMENT OF sOFTWARE eNGINEERING PROVIDES STUDENTS WITH
A COMPREHENSIVE GROUNDING IN SOFTWARE DEVELOPMENT AND INFORMATION
PROCESSING. aS SOCIETY BECOMES INCREASINGLY DEPENDENT ON VARIOUS
... 略 ...
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日まで
602デフォルトの名無しさん:2011/07/12(火) 22:01:03.33
522です。

530さんどうもありがとうございました!
603デフォルトの名無しさん:2011/07/12(火) 22:15:02.77
通貨のグラムのやつは、いま最速はどれなんだよ?
604デフォルトの名無しさん:2011/07/12(火) 22:43:55.75
>>545,548,553,556
ありがとうございます。
すごく助かりました!
605デフォルトの名無しさん:2011/07/12(火) 23:07:51.76
>>600
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
double func(double m, char * s)
{
enum {TB, MB, KB, B};
const char * tani[] = {"TB", "MB", "KB", "B"};
const double unko[] = {1024. * 1024 * 1024 * 8, 1024. * 1024 * 8, 1024. * 8, 8.};
int i;
for (i = 0; i < sizeof tani / sizeof tani[-1]; i++) {
if (!strcmp(tani[i], s)) {
return m * unko[i];
}
}
printf("なんか不正です\n");
exit(1);
}
int main()
{
char s[1000];
double p;
printf("入力してくだし\n");
scanf("%lf %s", &p, s);
printf("%.0f bit\n", func(p, s));
return 0;
}
問題文が整数なのか実数なのかよく分からないんですが
オーバーフローをごまかすためにこうしろというニュアンスだと解釈しました
606デフォルトの名無しさん:2011/07/12(火) 23:23:15.53
>>601
#include <stdio.h>
#include <ctype.h>
int main()
{
char fnr[1000], fnw[1000];
FILE *fpr, *fpw;
int c;
printf("入力ファイル名 > ");
scanf("%s", fnr);
printf("出力ファイル名 > ");
scanf("%s", fnw);
if (!(fpr = fopen(fnr, "r")))
return 1;
if (!(fpw = fopen(fnw, "w")))
return 1;
while (EOF !=(c = fgetc(fpr))) {
if (isupper(c))
fputc(tolower(c), fpw);
else if (islower(c))
fputc(toupper(c), fpw);
else
fputc(c, fpw);
}
fclose(fpr);
fclose(fpw);
return 0;
}
607デフォルトの名無しさん:2011/07/12(火) 23:46:59.62
[1]プログラミング言語T
[2]http:// codepad.org/2gG8qIOk
[3.1]window 7
[3.2]VC2008
[3.3]C++
[4]7/14まで
[5]よろしくお願い致します。
608607:2011/07/12(火) 23:48:47.09
609デフォルトの名無しさん:2011/07/12(火) 23:53:04.56
MFCとか無理ゲーすぎる
610607:2011/07/12(火) 23:55:46.58
コード部だけでも結構ですので教えて頂けたら幸いです。
611デフォルトの名無しさん:2011/07/13(水) 00:01:58.27
>>607

MFCは必須ですか?
VC++expressではMFCは使用できません。
CLRなら見た目は変わらず、回答できる人も多いと思いますが。

>>609
>無理ゲー
ですよね。なるべくMFCに触れずにすむところにいたいです。
612デフォルトの名無しさん:2011/07/13(水) 00:10:13.63
ボタンクリックのイベントハンドラだけ作ってやれば良いんじゃないの?
613デフォルトの名無しさん:2011/07/13(水) 00:13:31.48
5列目以降はどうなんのよ 正確に数式で表してよ
Aij += Ai(j+2)みたいな感じで

とここまで書いたらそのままプログラムに出来そうだから自分でできんじゃね
614デフォルトの名無しさん:2011/07/13(水) 00:19:15.35
>>607
自分でfuncを組み込めばいいよ

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

int func()
{
double a, b, c, d;
FILE *fpr, *fpw;
if (!(fpr = fopen("01.txt", "r")))
return 0;
if (!(fpw = fopen("02.txt", "w")))
return 0;
while (4 == fscanf(fpr, "%lf%lf%lf%lf", &a, &b, &c, &d)) {
fprintf(fpw, "%f %f %f %f\n", a, b, c, d);
}
fclose(fpw);
fclose(fpr);
return 1;
}
int main()
{
func();
return 0;
}

>>613
例見た限りでは4列までしかないんじゃね?
615デフォルトの名無しさん:2011/07/13(水) 00:21:01.23
fprintf(fpw, "%g %g %g %g\n", a, b, c, d);
のがいいかも
616デフォルトの名無しさん:2011/07/13(水) 01:12:08.30
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
ファイルの中に含まれる文字のエントロピーを計算したい。
次のように作りなさい。
(a)文字をgetchar関数で1文字ずつ読み込み、その文字ciの出現頻度f(ci)をカウントする。
(b)総文字数Sと出現頻度f(ci)から出現確立P(ci)を計算する関数を作成しなさい。
P(ci)=1/S*f(ci)…(1)
S=Σf(ci)…(2)
i
(c)出現確立P(ci)からエントロピーHを計算する関数を作成しなさい。
ただし、0log0=0とみなす。
H=-ΣP(ci)log2(←底)P(ci)…(3)
fopenを使った場合は加点する。
ファイル入出力を使わない場合は、リダイレクトを用いて標準入力から読み込む実行例を示すこと。
また、すべての文字の出現頻度が同じであるファイルを作成し、 その時のエントロピーを示すこと。
下記のプログラム参照。

続く
617デフォルトの名無しさん:2011/07/13(水) 01:12:25.55
続き
文字列内の数字文字をカウントするプログラム
#include<stdio.h>
void str_dcount(const char str[],int cnt[])
{
 unsigned i=0;
 while (str[i]){
 if (str[i] >= '0' && str[i] <='9')
 cnt[str[i]-'0']++;
 i++
 }
}
int main(void)
{
 int i;
 int dcnt[10]={0};
 char str[100];
 printf("文字列を入力してください:");
 scanf("%s",str);
 str_dcount(str,dcnt);
 puts("数字文字の出現回数");
 for(i=0;i<10;i++)
 printf("'%d':%d",i,dcnt[i]);
 return(0);
}
618デフォルトの名無しさん:2011/07/13(水) 01:13:24.24
↑続き
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/13
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします。
619597:2011/07/13(水) 01:20:47.76
597です。
課題の条件についてなんですが、
5つの関数内の引数、戻り値は条件どおりでなくても
構わないのでどなたか回答して頂けないでしょうか。
620デフォルトの名無しさん:2011/07/13(水) 01:34:23.13
[1] :プログラミング
[2]:下のプログラムの近似解の初期値をキーボードから入力し、
初期値に応じて、収束条件を満足するまでに要する繰り返し計算回数が
どのように変化するか調べなさい。

♯include 〈stdio.h〉
♯include 〈stdlib.h〉
♯include 〈math.h〉
♯define pi 3.14159

double func1(double x)

double value;
value=x×x×x+sin(pi×x)
return value;

double func2(double x)

double value;
value=3×x×x+pi×cos(pi×x);
return value;
621>>620の続きです:2011/07/13(水) 01:38:51.76
int main(void)

int i=0;
double x,error=0.00001;
printf("x=");
scanf("%lf",&x);
printf("i=%d x=%lf f(x)=%lf ¥n",i,x,func1(x));

while (fabs(func1(x))>error){
i++;
x=x-func1(x)/func2(x);

printf("i=%d x=%lf f(x)=%lf ¥n",i,x,func1(x));

return(0);
622>>621の続きです:2011/07/13(水) 01:45:46.85
[3.1] OS: Windows7?
[3.2]わかりません。すいません
[3.3] c言語
[4] 期限: 2011年7月13日8:30
623デフォルトの名無しさん:2011/07/13(水) 02:02:20.99
>>620
コンパイルエラーを無くしてくれって事なら、以下のとおり。
http://codepad.org/RqOEHG7a
624620:2011/07/13(水) 02:09:25.53
携帯から打ち込んだのでエラー出ました。すいません。


プログラムをコンパイル?してキーボードから入力した数字(1や2や3)と
値が0になるまでの計算回数がどんな関係にあるかを調べてほしいです。
625デフォルトの名無しさん:2011/07/13(水) 08:39:23.84
>>616
改行以外を文字とみなして書いてみた。
http://codepad.org/egtn7m6B
626デフォルトの名無しさん:2011/07/13(水) 09:06:51.03
627デフォルトの名無しさん:2011/07/13(水) 10:54:07.49
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した文字列を逆順に出力するプログラムを作成したい。
次の2通りの方法でそれぞれプログラム中の空欄を埋め完成させよ。
(1) 配列を使う (ポインタは使ってはならない)
(2) ポインタを使う (配列を使ってはならない)

#include<stdio.h>
int main( void ) {
char str[256], *p ;
int i ;
scanf("%s", str) ;
p = str ;
[この部分を記述せよ]
return 0 ;

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc cigwin
 [3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:出来るだけ簡単に書いてもらえると助かります
628デフォルトの名無しさん:2011/07/13(水) 11:01:00.77
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
@次の図のようなリスト構造を作っているとする場合
(1)〜(3)の空欄を埋めよ。ただし、空欄は1行とは限らない。
ttp://up3.viploader.net/pc/src/vlpc008000.jpg
#include<stdio.h>
#include<stdlib.h>
struct Cell {
int data ;
struct Cell *next ;
};
int main( void ) {
struct Cell *p, *head ;
head = NULL ;
/* ポインタ p の指す先に記憶領域の確保する行を省略 */
p ‐> data = 10 ;
(1)
/* ポインタ p の指す先に記憶領域の確保する行を省略 */
p ‐> data = 20 ;
(2)
/* ポインタ p の指す先に記憶領域の確保する行を省略 */
p ‐> data = 30 ;
(3)
return 0;
}

A上図の状態からdata に10 の入っているCell 構造体のnext が
data に30 が入っているCell 構造体を指すようにしたい。
どのように記述すればよいか。1行で書け。

BAに続いて、data に20 が入っている構造体をリストから削除したい。
どのように記述すればよいか。1行で書け。
629デフォルトの名無しさん:2011/07/13(水) 11:03:21.31
>>628続き
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc cigwin
 [3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:出来るだけ簡単に書いてもらえると助かります
630デフォルトの名無しさん:2011/07/13(水) 11:06:52.60
>>627
#include<stdio.h>
int main( void ) {
char str[256], *p ;
int i ;
scanf("%s", str) ;
p = str ;

/* 配列 */
for (i = 0; str[i]; i++);
while(i--)
putchar(str[i]);
putchar('\n');

/* ポインタ */
while (*++p);
while (&str[0] <= --p)
putchar(*p);
putchar('\n');

return 0 ;
}
631デフォルトの名無しさん:2011/07/13(水) 11:44:00.39
授業:ネットワークプログラミング
問題文:以下のプログラムを改編し、21までの数取りゲームを作成せよ。なお数は一度に3つまで取れることとし、2つクライアントから交互に入力を受け付けれるようにする。
プログラムURL:http://ideone.com/pPtar
 環境
  OS: Linux
 コンパイル:端末から gcc -oでコンパイルしています
 言語:C
 期限: 2011年07月16日15:00まで
 その他の制限: ネットワークプログラミングの応用という課題ですのでサーバーとクライアントを利用したものでお願いいたします。
よろしくお願いします

632597・619:2011/07/13(水) 13:01:46.43
>>626さん、コメントまでご丁寧にどうもありがとうございます!
本当に助かりました。
633デフォルトの名無しさん:2011/07/13(水) 15:23:59.96
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):「ピボットが0である場合を考慮しない、はき出し方による連立一次方程式を解くプログラムを作成し、検算結果を表示すること。
ただし行列のサイズをマクロで指定すること。行列(3行3列以上)および列ベクトルは、あらかじめプログラムに記載すること」
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc使うけどバージョン不明
 [3.3] 言語: C
[4] 期限: ([2011年7月20日中
[5] その他の制限:
お願いします
634デフォルトの名無しさん:2011/07/13(水) 18:03:28.97
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1: ttp://www1.axfc.net/uploader/Sc/so/254634
2: http://www1.axfc.net/uploader/Sc/so/254633
1のプログラムのdogのコードを、他の2つにも適用させる。
また、1の動作の原理の説明と、1と2の動作の違いを説明せよ
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語: C
[4] 期限: 2011年7月14日9:00
[5] その他の制限:とくになし

おねがいします
635デフォルトの名無しさん:2011/07/13(水) 18:28:23.92
[1] 授業単元:プログラミング言語基礎
[2] 問題文(含コード&リンク):ある物体を自由落下させたときの位置yを、0秒後から30秒後まで5秒
きざみで表示せよ。なお、t秒後の位置はy=1/2×9.8×t2乗(←指数が出てこなかったのでこう書きました)
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限:2011年7月15日
[5] その他の制限:for文を使用。1/2のところは掛け算でおねがいします。
636デフォルトの名無しさん:2011/07/13(水) 19:20:58.44
>>635
#include <iostream>

int main()
{
for (int t = 0; t <= 30; t += 5) {
std::cout << t << " " << 0.5 * 9.8 * t * t << std::endl;
}
}
637デフォルトの名無しさん:2011/07/13(水) 20:02:05.50
>>630
ありがとうございます

どなたか>>628も…
638デフォルトの名無しさん:2011/07/13(水) 20:30:36.02
#include<stdio.h>
#include<stdlib.h>
struct Cell {
  int data ;
  struct Cell *next ;
};
int main( void ) {
  struct Cell *p, *head ;
  head = NULL ;

  struct Cell cell_10;
  p = &cell_10;
  p->data = 10 ;

  struct Cell cell_20;
  p = &cell_20;
  p->data = 20 ;

  struct Cell cell_30;
  p = &cell_30;
  p->data = 30 ;

  head = &cell_30;

  cell_30.next = &cell_20;
  cell_20.next = &cell_10;
  cell_10.next = NULL;
  cell_10.next = &cell_30;
  cell_30.next = &cell_10;

  return 0;
}
639デフォルトの名無しさん:2011/07/13(水) 20:41:57.10
[1] C言語演習
[2] argvで入力された引数 "123:456:78:90" の様な文字列を ":" 区切りで
別の配列へ順に格納せよ。(strchr関数を使いなさい)
上記の例では、[0]=123,[1]=456,[2]=78,[3]=90となる。
尚、::の連続もありで、"12:34::90" は [0]=12,[1]=34,[2]=null,[3]=90となる。

下の様に処理しているが、スマートに行きません。。。
p = NULL;
p = strchr(str, ':');
while (p != NULL) {
printf("length %d\n", strlen(str)-strlen(p));
p++;
p = strchr(p, ':');
}
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] C言語
[4] 14日いっぱい。
640デフォルトの名無しさん:2011/07/13(水) 21:20:05.92
>>639
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
char s[4][10] = {0};
char *p,*q;
int i;
if (argc != 2)
return 1;
printf("[%s]\n", argv[1]);
p = argv[1];
for (i = 0; i < 4; i++) {
q = strchr(p, ':');
if (q == NULL) break;
strncpy(s[i], p, q - p);
p = q+1;
}
strcpy(s[i], p);
for (i = 0; i < 4; i++)
printf("[%s]\n",s[i]);
return 0;
}
641デフォルトの名無しさん:2011/07/13(水) 21:42:02.49
[1] C言語演習
[2] http://codepad.org/umohMOn3のプログラムを完成させ
  年と月を入力して、その月のカレンダーを表示するプログラムを作成せよ。
  なお、http://codepad.org/qb798eoXhttp://codepad.org/rPzv2BAEの
  プログラムを参考にすること。
[3.1] Windows7
[3.3] C言語
[4] 7月15日 19時まで
[5] 関数呼び出しまで
わかる方よろしくお願いします。
642デフォルトの名無しさん:2011/07/13(水) 22:17:21.59
カレンダー系はwikiに大体載ってんじゃね?
643デフォルトの名無しさん:2011/07/13(水) 22:22:51.93
>>526 これより早いのを書ける人カモン
#include <stdio.h>
#include <stdlib.h>
void hoge(long weight, int index, long worth, char *table){
static const int coin_weight[]={70, 48, 45, 40, 37, 10};
static const int coin_worth[]={500, 100, 10, 50, 5, 1};
static const int coin5[]={0, 3, 6, 9, 2, 5, 8, 1, 4, 7};
int a, b, x, w, i, coin_max;
if(index==4){
b=coin5[weight%10];
if((w=weight-b*37)<0) return;
x=w/370;
a=(w-x*370)/10;
worth+=a+b*5+x*37;
for(i=0;i<=x;i++) table[worth+i*13]=1;
return;
}
coin_max=weight/coin_weight[index];
for(i=0;i<=coin_max;i++) hoge(weight-i*coin_weight[index], index+1, worth+i*coin_worth[index], table);
}
int main(void){
double weight=8.0;
long i, table_size;
char *table;
scanf("%lf", &weight);
table_size=weight*500/7+1;
table=calloc(1, table_size);
hoge((weight*10+0.1), 0, 0, table);
for(i=0;i<table_size;i++) if(table[i]) printf("%ld\n", i);
free(table);
return 0;
}
644デフォルトの名無しさん:2011/07/13(水) 22:39:07.08
>>643
0.0
645デフォルトの名無しさん:2011/07/13(水) 22:44:54.02
>>640
ありがとうございました!
646デフォルトの名無しさん:2011/07/13(水) 22:56:09.10
>>636
ありがとうございます
6列目のところでエラーと出てしまうんですがどこを直せばいいでしょうか?
647デフォルトの名無しさん:2011/07/13(水) 23:08:44.68
連続+>>635に訂正があるんですが
 [3.3] 言語:Cでした
申し訳ございません
648デフォルトの名無しさん:2011/07/13(水) 23:34:56.26
>>636氏川獺す
649デフォルトの名無しさん:2011/07/14(木) 00:47:29.16
http://codepad.org/IlzQwpDD

ubuntu gcc使用
コンパイルは一応できるのですがソートをするとセグメンテーションフォルトが起きてしまいます。
どこがダメなのかご指南いただきたいです。
650デフォルトの名無しさん:2011/07/14(木) 01:18:14.67
正直>>635から分からないとなると後から相当苦労すると思う
651デフォルトの名無しさん:2011/07/14(木) 01:49:54.52
このスレがあるから苦労しません
そんなことより解答はまだですか
652デフォルトの名無しさん:2011/07/14(木) 01:58:18.73
>>635
#include <stdio.h>
int main(void) {
int i;
for (i = 0; i <= 6; ++i) {
double t = 5.0 * i;
printf("%g %g\n", t, 0.5 * 9.8 * t * t);
}
return 0;
}
653デフォルトの名無しさん:2011/07/14(木) 02:08:26.68
>>651
君がそう思うならそれで良いよ
654デフォルトの名無しさん:2011/07/14(木) 02:27:35.54
足し算一回を、インクリメントと掛け算にする理由がわからない
655デフォルトの名無しさん:2011/07/14(木) 02:31:07.91
656デフォルトの名無しさん:2011/07/14(木) 05:19:29.47
>>649
一応ソートができるコード
http://codepad.org/u6FmNZwu
ソートの問題を解消しただけだが参考にしてくれ
657デフォルトの名無しさん:2011/07/14(木) 06:46:56.81
宣言は最初にまとめろよ
汚いプログラムだな
658デフォルトの名無しさん:2011/07/14(木) 06:49:15.73
[1] C言語演習
[2] ハノイの塔
次のルールに基づき、全ての円盤を右側の杭に移動するまでの移動手順を示す
プログラムを作成しなさい。

ルール:
・3本の杭と、中央に穴の開いた大きさの異なる複数の円盤から構成される。
・最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている。
・円盤を一回に一枚ずつどれかの杭に移動させることができるが、小さな円盤の上に大きな円盤を乗せることはできない。
初期状態 円盤の数=3
[3.1] Windows7
[3.3] C言語
[4] 7/15 7時まで
[5] 関数呼び出し、作成まで
よろしくお願いします。
659デフォルトの名無しさん:2011/07/14(木) 07:51:54.30
>>655
ありがとうございます
660デフォルトの名無しさん:2011/07/14(木) 09:55:02.41
661デフォルトの名無しさん:2011/07/14(木) 10:43:19.20
>>641は、日曜、祝日(振替含む)の日には(23)のように、
かっこを付けて表示させてください。
662デフォルトの名無しさん:2011/07/14(木) 12:42:02.49
[1] 課題
[2] .tsv形式のファイルをネット上から呼び出して、一番最後の行を引用して表示するプログラムを教えてください
[3] Mac OS X C++
[4] 7/16 19時まで
[5] 関数呼び出しまで
宜しくお願いします。
663デフォルトの名無しさん:2011/07/14(木) 13:30:46.45
>>662
関数呼び出しまでしか習ってないのかよwwwwwwwww
664デフォルトの名無しさん:2011/07/14(木) 13:32:27.28
ネットの定義は?
665デフォルトの名無しさん:2011/07/14(木) 13:33:32.14
そんなの知らネット
666デフォルトの名無しさん:2011/07/14(木) 14:13:36.64
>>656
ありがとうございます。
無事ソートができました。

http://codepad.org/nMEEea6n
それと申し訳ないんですが207行目のデリート、243行目の終了確認がうまくいきません。
これができればほぼ完成なのですが… どなたかよろしくお願いします。
667196:2011/07/14(木) 14:14:14.55
>>200
亀ですがありがとうございました
668デフォルトの名無しさん:2011/07/14(木) 15:31:59.02
1] 情報処理演習 [2]
BMI判定のプログラムのdo,for,whileそれぞれに よる反復処理を行うプログラム
[3] 環境
[3.1] OS:Windows7
[3.2] VB2008
[3.3] 言語:C++
[4] 期限:2011年7月17日 一応BMIを求めるだけならできたのですが反復処理 できるプログラムがうまくいきません。 BMIの値が0以外なら処理を続行するプログラムを 作りたいと思っています。 http://codepad.org/V1kiXDs5
669デフォルトの名無しさん:2011/07/14(木) 15:39:19.43
なんかいろいろ間違っとるなw
670デフォルトの名無しさん:2011/07/14(木) 15:43:08.35
doもforもwhileもないんだからうまくいくほうがおかしいだろ
671デフォルトの名無しさん:2011/07/14(木) 15:46:45.54
>>670
このコードにdo,whileを加えていただけるとありがたいです。
672デフォルトの名無しさん:2011/07/14(木) 15:55:47.66
>>668
http://codepad.org/2iRDa9Gl
言葉通りに実装してみました
673666:2011/07/14(木) 16:12:50.78
http://codepad.org/UNmxvJKI
すいません、デリートは何とか自力でできたのですが終了確認がどうもうまくいきません。
249行目からでupdeteというグローバル変数で0と1を使って1の時だけ終了の確認を表示するようにしています。
“y”を入力したときは正常に終了するのですが、以外の文字を入力したらセグメンテーションエラーが出てしまいます。
自分としては“y”以外が入力されたらまた元の入力に戻るようにしたいのですがどのようにすればうまくできるのでしょうか?
674デフォルトの名無しさん:2011/07/14(木) 16:23:31.41
>>672
ありがとうございます。
do〜while,forのほうも教えていただけるとありがたいです。
675デフォルトの名無しさん:2011/07/14(木) 16:30:30.82
#include<stdio.h>

int main(void)
{

double hight,weight,bmi;
for(;;){
puts("身長と体重を入力してください。");
printf("身長(p):"); scanf("%lf",&hight);
printf("体重(s):"); scanf("%lf",&weight);

bmi = weight / hight / hight * 10000;
bmi = weight / ( hight / 100 * hight / 100 );
if (bmi == 0)
break;
printf("身長:%5.1f(cm)\n",hight);
printf("体重:%5.1f(kg)\n",weight);
printf("あなたのBMI値は%5.1fです。\n", bmi);
}
printf("終了する\n");
return(0);
}
676デフォルトの名無しさん:2011/07/14(木) 16:31:03.99
#include<stdio.h>

int main(void)
{

double hight,weight,bmi;
do{
puts("身長と体重を入力してください。");
printf("身長(p):"); scanf("%lf",&hight);
printf("体重(s):"); scanf("%lf",&weight);

bmi = weight / hight / hight * 10000;
bmi = weight / ( hight / 100 * hight / 100 );
if (bmi == 0)
break;
printf("身長:%5.1f(cm)\n",hight);
printf("体重:%5.1f(kg)\n",weight);
printf("あなたのBMI値は%5.1fです。\n", bmi);
} while(1);
printf("終了する\n");
return(0);
}
677デフォルトの名無しさん:2011/07/14(木) 16:38:27.96
>>675
本当に助かりました!
ありがとうございます。
678デフォルトの名無しさん:2011/07/14(木) 17:06:19.46
[1] 授業単元:C
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/20 分かる方、お願いします!!!


つぎのプログラムにおいて,ratioavoeは,すべての要素が正である要素数Nのint型の配列を引数として渡されると,
その配列中の奇数の要素の平均を偶数の要素の平均で割った値を返す関数である.
例えば,N = 5 で配列の各値が4, 7, 6, 2, 3の場合,奇数の要素は7, 3であり,その平均は5.0,
偶数の要素は4, 6, 2であり,その平均は4.0となるので,ratioavoeは1.25を返す.関数ratioavoeを,
下記のプログラムの /* INSERT HERE */ の部分に挿入できるように書け.
ただし,配列中に奇数の要素も偶数の要素もそれぞれ少なくとも 1 個は含まれるものと仮定して良い.
#include <stdio.h>
#define N (2以上の適当な正整数)
/* INSERT HERE */


int main(void)
{
int a[N];
/* ここで a[0]〜a[N-1] の値を入力する */
printf("ratioavoe = %8.4f\n", ratioavoe(a));
return 0;
}
679デフォルトの名無しさん:2011/07/14(木) 17:07:24.82
連投すいません。
上の反復のプログラムにおいて平均身長、最大身長を出す場合はどうすればいいのでしょうか。
ヒントだけでもありがたいです。

680デフォルトの名無しさん:2011/07/14(木) 17:35:26.61
>>679
(n人の身長の平均値) = (n人の身長の合計)/n
だから、身長の平均値を求めるには「何人分の身長が入力されたか」と、「その人数分の身長の合計」が分かれば良いということになる。
これをどこで計算するのかについては、「ループ1回につき1人分のデータが入力される」という事実から考える。


また、最大値については次の例を参考にして考える。

 1 5 10 3 8 の中で最大値を探すことを考えよう。
 人間なら5つのデータを一度に見てどれが最大値か、というのがすぐに分かるが、
 コンピュータは頭が悪いので、この「5つのデータを一度に見る」ということが出来ない。
 なので、なるべく細かく比較を行うような処理によって最大値を求めることを考える必要がある。
 その方法については、次のようなトーナメントを思い浮かべると良い。

         優勝(最大値)
               │
           ┌─┴┐
       ┌─┴┐  │
   ┌─┴┐  │  │
 ┌┴┐  │  │  │
 │  │  │  │  │
 1   5  10  3  8

 まず、1と5が対戦を行う(ここでは値の大きい者が勝つとする)。当然5が勝つ。
 次に5と10が対戦を行う。10が勝つ。
 10と3が対戦を行う。10が勝つ。
 10と8が対戦を行う。10が勝つ。
 このような激戦を経て、10が優勝(最大値)であるということがわかる。

こういった方法によれば、一度に比較されるデータの数はたったの2つであり、頭の悪いコンピュータでもこなすことができる。
問題はこれをどのようにしてプログラムに落としこむかである。
ここから先は自分で考えてみよう。
681デフォルトの名無しさん:2011/07/14(木) 18:30:44.08
[1] 授業単元: コンピュータグラフィックス
[2] 問題文(含コード&リンク): http://www.wakayama-u.ac.jp/~tokoi/opengl/ex-c.html
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月15日まで
[5] その他の制限:

自力ではどうしてもできませんでした。
よろしくお願いします。
682 ◆QZaw55cn4c :2011/07/14(木) 18:58:24.76
>>681
>ただし,飛び方は手裏剣やブーメランやミサイルではなく, ボールらしい飛び方にしてください.
つまりどうせよと?
683デフォルトの名無しさん:2011/07/14(木) 19:00:30.04
>>682
隔離スレに引っ込んでろ。カス。
684 ◆QZaw55cn4c :2011/07/14(木) 19:05:13.84
>>683
いやです。:-)
685デフォルトの名無しさん:2011/07/14(木) 19:36:47.37
686デフォルトの名無しさん:2011/07/14(木) 20:02:43.72
>>526 >>643
これはユークリッドの互除法のやり方で、定数時間で出来るはずだ。

10a + 37b + 40c + 45d + 48e + 70f = N をこのように変形。 10(a + 3b + 4c + 4d + 4e + 7f ) + 7b + 5d + 8e = N

新たな式10a' + 7b + 5d + 8e = Nを考えて、もしこの解全体が求まれば元の解を求めるのに役立てられる。

5(d + b + e + 2a') + 2b + 3e = Nと変形してより簡単な式に帰着できる。

新たな式5b' + 2b + 3e = Nは、2(b + e + 2b') + e + b' = Nと変形できる。

途中まで書いたがここから面倒になった。

連立一次不等式の格子点の個数を求める問題に帰着され、解個数はNの6次式になるはず。
687デフォルトの名無しさん:2011/07/14(木) 20:07:09.52
>>682
軌道に沿って動くってことだろ
頭使えオッサン
688デフォルトの名無しさん:2011/07/14(木) 20:13:22.02
QZに頭使えというのは死ねと同意語。
689デフォルトの名無しさん:2011/07/14(木) 20:16:30.84
無い袖は振れないからな
690デフォルトの名無しさん:2011/07/14(木) 20:16:35.14
ありがとうございます!!!>685
691デフォルトの名無しさん:2011/07/14(木) 20:28:51.67
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク): 次の@〜Cの条件を満たすプログラムを作成せよ

@main関数においてint型の半径rをキーボードから受け取る
A円周(ring)を求めるenshu関数にrを「値呼び出し」で渡して面積を計算し、
その値をmain関数にreturnする
B円の面積(area)を求めるmenseki関数にrを「参照呼び出し」で渡して面積を計算し、
その値をmain関数にreturnする
Cmain関数でreturnされた円周と面積の値を実行結果のように表示する

[実行結果]
半径rを入力:5(←キーボードから入力)
円周:31.400000
面積:78.500000

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月21日まで

長々と失礼しました。どなたか宜しくお願いします
692デフォルトの名無しさん:2011/07/14(木) 20:55:40.75
[1] 授業単元:C
[2] 問題文(含コード&リンク):
次のルールに基づき、全ての円盤を右杭に移動するまでの移動手順を示すプログラムを作成しなさい
・3本の杭と、中央に穴の開いた大きさの異なる複数の円盤かr構成される。
・最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている
・円盤を1回に1枚ずつどれかの杭に移動させることができるが、小さな円盤に大きな円盤を乗せることはできない
初期状態 円盤の数=3
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:いつでも
693デフォルトの名無しさん:2011/07/14(木) 21:03:56.28
ハノイの塔 C言語
でググろう
694デフォルトの名無しさん:2011/07/14(木) 21:37:10.58
>>691
#include <stdio.h>

double enshu(int r)
{
return 2 * 3.14 * r;
}

double menseki(int *r)
{
return 3.14 * *r * *r;
}

int main(void)
{
int r;

scanf("%d", &r);

printf("円周:%f\n", enshu(r));
printf("面積:%f\n", menseki(&r));

return 0;
}
695デフォルトの名無しさん:2011/07/14(木) 21:54:18.34
>>660
ありがとうございます!
助かりました。
696デフォルトの名無しさん:2011/07/14(木) 22:39:31.34
>>643
>>686 にヒントを得て、かなり速くなったよ
でも組み合わせが成り立つときにフラグを立てる処理は変わってないからオーダーは一緒
http://ideone.com/hJzLI
697デフォルトの名無しさん:2011/07/14(木) 22:59:32.75
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
698デフォルトの名無しさん:2011/07/14(木) 23:10:42.36
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
699ななし:2011/07/14(木) 23:41:32.74
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/16です、よろしくお願いします

次のプログラムにおいて,sumrangeは,M行N列の行列A = (a_{ij})(実際には,
大きさM×Nのint 型の2次元配列で表される)を引数として渡されると,各行の最大値から最小値を
引いた値の(全体での)和を返す関数である.(ここでは,C 言語の配列の添え字にならって,i, jは
0から始まると考えている) 例えば,M = 3, N = 4のとき,主プログラム中で,配列aの値に
{ 7 5 -2 4
-3 11 -5 6
2 6 6 14 }が入力された場合,0行目の最大値は7,最小値は-2であり,その差は7 - (-2) = 9,
1行目の最大値は11,最小値は-5であり,その差は11 - (-5) = 16, 2行目の最大値は14,最小値は2であり,
その差は14 - 2 = 12 となるので,sumrangeは9 + 16 + 12 = 37を返す.関数sumrangeを,下記のプログラムの
/* INSERT HERE */ の部分に挿入できるように書け.なお,行列の(i, j)成分は,2次元配列の[i][j]要素に
対応するものとせよ.また,配列中のデータは,-10000以上10000未満であると仮定してよい.

#include <stdio.h>
#define M (適当な正整数)
#define N (適当な正整数)
/* INSERT HERE */
int main(void)
{
int a[M][N];
/* ここで a[0][0]〜a[M-1][N-1] の値を入力する */
printf("sumrange = %2d\n", sumrange(a));
return 0;
}
700デフォルトの名無しさん:2011/07/14(木) 23:51:42.35
int sumrange(int a[M][N])
{
int i, j, ret = 0, min, max;

for(i = 0; i < M; i++) {
min = max = a[i][0];
for(j = 1; j < N; j++) {
if(a[i][j] < min) min = a[i][j];
else if(max < a[i][j]) max = a[i][j];
}
ret += max - min;
}

return ret;
}
701631:2011/07/15(金) 02:34:45.28
しばらくしても質問や回答がなかったのでもう一度書き込みさせていただきます
申し訳ありません
授業:ネットワークプログラミング
問題文:以下のプログラムを改編し、21までの数取りゲームを作成せよ。なお数は一度に3つまで取れることとし、2つクライアントから交互に入力を受け付けれるようにする。
プログラムURL:http://ideone.com/pPtar
 環境
  OS: Linux
 コンパイル:端末から gcc -oでコンパイルしています
 言語:C
 期限: 2011年07月16日15:00まで
 その他の制限: ネットワークプログラミングの応用という課題ですのでサーバーとクライアントを利用したものでお願いいたします。
よろしくお願いします
702デフォルトの名無しさん:2011/07/15(金) 05:14:31.82
>>696

うちのcore i7 920な環境で
1000 : 3.33s
2000 : 13.86s
3000 : 65.72s

めっさ早くなってわろた
703デフォルトの名無しさん:2011/07/15(金) 09:08:09.49
[1] 授業単元:C
[2] 問題文(含コード&リンク):
自然数を入力すると、その階乗を表示するようなプログラムを作成せよ。
ただし、演算結果が1000桁以下になる場合のみ対応し、
演算結果が1000桁を超える場合はその旨を表示して終了すること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年7月17日まで
[5] その他の制限:
704デフォルトの名無しさん:2011/07/15(金) 09:31:55.06
>>641わかる方お願いします。
(>>661に条件追加してあります。)
705デフォルトの名無しさん:2011/07/15(金) 09:44:30.58
>>703
#include <stdio.h>
int main(void)
{
int i, j, n, fac[2][1000] = {0}, d[2], f = 0;

scanf("%d", &n);
if(n >= 450) {
printf("1000桁を超えます\n");
return 0;
}
fac[0][0] = 1;
d[0] = 1;

for(i = 2; i <= n; i++, f ^= 1) {
for(j = 0; j < d[f]; j++) fac[f ^ 1][j] = fac[f][j] * i;
for(j = 0; j < d[f] || fac[f ^ 1][j]; j++) {
if(fac[f ^ 1][j] >= 10) {
fac[f ^ 1][j + 1] += fac[f ^ 1][j] / 10;
fac[f ^ 1][j] %= 10;
} }
d[f ^ 1] = j;
}
for(i = d[f] - 1; i >= 0; i--) printf("%d", fac[f][i]);

return 0;
}
706デフォルトの名無しさん:2011/07/15(金) 10:14:10.35
>>701
通信プログラムに回答してるのは俺だけって気がする.....
ttp://ideone.com/Mw35P
例によって winsock で動作確認したので linux でコンパイルする時には #define USE_WINSOCK の行を消せ
USER_NUM を変更することで複数人数でも遊べると思うけど確認はしていない、暇なら確認しておいてくれ
707デフォルトの名無しさん:2011/07/15(金) 11:00:14.35
>>704
プログラムの大半が追加部分になってしまう。
少々ロジックがややこしい。
708デフォルトの名無しさん:2011/07/15(金) 11:08:48.20
[1] 授業単元:計算機構成
[2] 問題文(含コード&リンク): http://codepad.org/rBkXiwPm
[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C言語
[4] 期限:2011年 7月 19日
[5] その他の制限: アルゴリズムの説明もお願いします
709デフォルトの名無しさん:2011/07/15(金) 11:20:37.34
>>707
プログラムの根幹が変わらないなら問題ないです。
710デフォルトの名無しさん:2011/07/15(金) 13:06:05.71
>>708
アルゴリズムの説明も何も、ヒントに全部書いてあるじゃんw
711デフォルトの名無しさん:2011/07/15(金) 13:18:17.31
>>708
問1
誰も答え出さなかったらつかってくれ

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

int main()
{
int p_M=43112609;
char cp_M[9];
int digit=0;
int lsd=0;
int msd=0;

digit=sprintf(cp_M,"%d",p_M);/*桁数*/
sscanf(&cp_M[digit-1],"%1d",&lsd);/*最下位*/
sscanf(cp_M,"%1d",&msd);/*最上位*/
printf("桁数: %d\n最下位桁: %d\n最上位桁: %d\n",digit,lsd,msd);
return 0;
}
712デフォルトの名無しさん:2011/07/15(金) 13:27:57.06
>>708
問1
#include <stdio.h>
#include <math.h>

int main(void)
{
int p = 43112609;
double i, f;

f = modf(p * log10(2), &i);

printf("桁数:%d\n", (int)i);
printf("最上位桁の数字:%d\n", (int)pow(10, f));
printf("最下位桁の数字:%d\n", p % 4 * 2 - 1);

return 0;
}
713デフォルトの名無しさん:2011/07/15(金) 13:31:15.66
>>704
ttp://codepad.org/TR5qofAa
月を跨いだ振り替え休日がちゃんと表示されるかは未確認だ(最終日には祝日は無かったっけ?)
714デフォルトの名無しさん:2011/07/15(金) 13:42:54.45
>>712訂正
#include <stdio.h>
#include <math.h>

int main(void)
{
int p = 43112609, r[] = {5, 1, 3, 7};
double i, f;

f = modf(p * log10(2), &i);

printf("桁数:%d\n", (int)i);
printf("最上位桁の数字:%d\n", (int)pow(10, f));
printf("最下位桁の数字:%d\n", r[p % 4]);

return 0;
}
715デフォルトの名無しさん:2011/07/15(金) 13:49:31.65
>>708
問2
#include <stdio.h>
#include <math.h>

int main(void)
{
int i, cnt[10] = {0}, p[] = {2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607, 1279, 2203, 2281,
3217, 4253, 4423, 9689, 9941, 11213, 19937, 21701, 23209, 44497, 86243, 110503, 132049,
216091, 756839, 859433, 1257787, 1398269, 2976221, 3021377,6972593, 13466917, 20996011,
24036583, 25964951, 30402457, 32582657, 37156667, 42643801, 43112609};
double d;

cnt[3] = cnt[7] = 1;

for(i = 2; i < sizeof p / sizeof *p; i++) cnt[(int)pow(10, modf(p[i] * log10(2), &d))]++;

for(i = 1; i <= 9; i++) printf("%dが%d個\n", i, cnt[i]);

return 0;
}
716デフォルトの名無しさん:2011/07/15(金) 15:04:21.83
>>714
>printf("桁数:%d\n", (int)i);
printf("桁数:%d\n", (int)i + 1);
に訂正
717デフォルトの名無しさん:2011/07/15(金) 15:17:04.98
>>713
ありがとうございます。助かりました。
718デフォルトの名無しさん:2011/07/15(金) 17:31:28.73
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
#include <stdio.h>
#include <string.h>

struct Address_data{
char name[81];
char phone[20];
int age;
};

int main(){
struct Address_data data1, data2;

//data1の値設定
strcpy(data1.name, "Alex");
strcpy(data1.phone, "046-000-0001");
data1.age=18;

//data2の値設定
strcpy(data2.name, "Bonnie");
strcpy(data2.phone, "046-000-0002");
data2.age=19;

//data1,data2の内容表示
printf("%s\t(%d)\t[%s]\n", data1.name, data1.age, data1.phone);
printf("%s\t(%d)\t[%s]\n", data2.name, data2.age, data2.phone);
return (0);
}
719デフォルトの名無しさん:2011/07/15(金) 17:31:46.13
これをプログラム実行時にキーボードから名前、年齢、電話番号を入力できるように変更したい
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/22です
720 ◆SG9/NmPjzc :2011/07/15(金) 18:03:24.72
よろしくお願いします。
[1] 授業単元:情報C
[2] 問題文(含コード&リンク):複数人の身長を入力し、入力人数、最大値、最小値
平均値を出力するプログラムを作成せよ。ただし、身長に負の値が入力されたときに
身長の入力を終了することとし、データとして利用しないこと
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 明後日までにお願いします
[5] その他の制限: 友人に聞くとWhile文やIf文を使えと言ってきました。
習っている範囲はgotoあたりまでです。
721デフォルトの名無しさん:2011/07/15(金) 18:07:20.52
[1] 授業単元:通信プログラミング(
[2] 問題文:
シグナル処理を用いて1から順に数字を表示していき(無限ループ)、コンソール側からCTRL+Cを押すと数字の表示が止まりそれまでに表示したデータ数と表示した数字の合計を表示する。
また、CTRL+Cを押すと数字の表示が再開されて(ストップした数字の続き)またCTRL+Cで再開後から今までのデータ数と数字の合計を表示する。
具体例
./a.out
1
2
3
4 <------ここでCTRL+C
データ数:4 合計:10 <-----CTRL+C
5
6
7
8
9 <---またCTRL+C
データ数:5 合計:35

また、ソースは20行程度で書けるみたいです。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:無期限
722デフォルトの名無しさん:2011/07/15(金) 18:55:47.23
723デフォルトの名無しさん:2011/07/15(金) 19:15:17.70
>>721
ttp://ideone.com/m5MZr
性格的な理由で20行では書けなかったが、詰めればそんなモンかもしれないw
16行目は不要かも知れないのでコメントアウトして確認してみてくれ(windowsでは必要だった)
このプログラムは CTRL+Cでは終了できないから kill コマンドを使う必要が有るよ
724デフォルトの名無しさん:2011/07/15(金) 19:38:50.10
>>723
要件を満たせない言い訳乙としか言えない
出来ないなら何故解答した
725デフォルトの名無しさん:2011/07/15(金) 19:46:16.72
>>724
ステップ数は要件じゃないだろw
回答しない奴に限ってケチ付けるのは好きだよなぁw
726デフォルトの名無しさん:2011/07/15(金) 20:08:35.77
>>694
ありがとうございました!
727デフォルトの名無しさん:2011/07/15(金) 20:26:58.78
実行できないからよくわかんないけど、sumとcntの数値ってあってる?
728デフォルトの名無しさん:2011/07/15(金) 20:33:47.72
>>723
ありがとうございました
自分なりに作ってみたのも有ったんですが、うまくいかずすっきりしました!
コード行数は目安で言ったつもりだったんで条件ではないので問題ないです
よく考えたらkillコマンド使えばいいんですね
CTRL+Z使ってましたw
これだと一時停止にしかならないんですよねw
これを機にアップローダの使い方覚えようと思います
729デフォルトの名無しさん:2011/07/15(金) 21:20:35.84
>>711 >>715 >>716
ありがとうございます

>>710
すいません、理解できなかったのでコメントを付けて欲しいという意味です
730デフォルトの名無しさん:2011/07/15(金) 21:52:47.11
よろしくお願いします。
[1] 授業単元:学ぶC言語
[2] 問題文:科目の評価点数を入力すると、対応する成績評語を出力する
プログラムを作成せよ。 だたし、成績評語は、以下のように定める
 評語 S A B C D
 評価点数 100~90(Sに対応以下略) 89~80 79~70 69~60 59~0 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 明後日までにお願いします
[5] その他の制限:習っている範囲はgoto文までです
if文ではなくSwitch文でかいていただきたいです
caseの部分をなんとか短くしていただきたいです
731デフォルトの名無しさん:2011/07/15(金) 22:19:19.12
線形リストでノードを順に辿りつつ、変数aとbそれぞれを100〜250の間の乱数で初期化する関数
を作りたいんですが…
732デフォルトの名無しさん:2011/07/15(金) 22:19:23.49
733デフォルトの名無しさん:2011/07/15(金) 22:22:15.21
>>730
点数をint型で代入しといて10で割って

case 10:
case 9:

break;
case 8:

break;
case 7:

break;
case 6:

break;
case default:

break;
734デフォルトの名無しさん:2011/07/15(金) 22:24:03.82
>>732
>>733
もっと短くできるよ
735デフォルトの名無しさん:2011/07/16(土) 00:26:41.80
>>731をおねがいします
とりあえずでいいので……
736デフォルトの名無しさん:2011/07/16(土) 00:36:15.51
[1] 授業単元:情報処理演習
[2] 問題文:1,元金a円、利率rで何年預けるとした ら目標金額のb円を超えるか。金利は複利計算であ る。
2、元金a円、利率rで、n年預け るとしたら元金、金利の合計はいくらになるか。金 利は複利計算である。for文を用いよ。
[3] 環境
[3.1] OS:windows
[3.2] vs2008
[3.3] 言語: C++
[4] 期限:月曜日までにお願いします。
[5] その他の制限:特に無し。
よろしくお願いします。
737デフォルトの名無しさん:2011/07/16(土) 00:43:23.17
>>735
>>1
変数 a, b, は線形リストを構成するノードの中にある変数としていいでしょうか?
738デフォルトの名無しさん:2011/07/16(土) 00:44:06.46
>>734
具体的に
739デフォルトの名無しさん:2011/07/16(土) 01:04:32.25
>>731

超エスパーでやってみた。

ttp://codepad.org/cRbmyn3o

後付で色々注文でてもしらねーよ。
740デフォルトの名無しさん:2011/07/16(土) 01:23:12.80
741デフォルトの名無しさん:2011/07/16(土) 01:34:10.50
>>730,740
この程度の変態度にしといた方が吉。
http://codepad.org/qyg55krR
742ななし:2011/07/16(土) 02:13:09.84
ありがとうございます、助かりました>700
743デフォルトの名無しさん:2011/07/16(土) 07:13:03.00
>>526 >>643>>696>>702
>>696のボトルネックを改善。
http://ideone.com/yPBHZ
744デフォルトの名無しさん:2011/07/16(土) 10:09:44.45
おまえら、オナニーコードはそこまでだ!
745デフォルトの名無しさん:2011/07/16(土) 10:13:51.16
>>744
いうてやんなw
746デフォルトの名無しさん:2011/07/16(土) 10:16:18.61
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):10人の学生の身長(m),体重(kg)のデータを入力し、
各学生の身長(m),BMI値を表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:2011年7月15日
[5] その他の制限:for文を使い、各学生の身長・体重・BMIはそれぞれ1次元配列でお願いします
747デフォルトの名無しさん:2011/07/16(土) 10:25:56.73
速いコードが書けない上に、他人のコードを理解できないアホが僻んでるなw
748 ◆/91kCCQXBo :2011/07/16(土) 10:26:13.85
BMI=kg/m/m
749デフォルトの名無しさん:2011/07/16(土) 10:26:34.28
>>744
質問者の要求に最大限応えるために書いたのだから、
すなわち相手を満足させるためにやったのだから、
オナニーコードではなくてセックスコードと呼んで欲しいね
750デフォルトの名無しさん:2011/07/16(土) 10:37:50.69
>>747
そんなこと考えながら頑張ってうpってたの?wwwwwww
751デフォルトの名無しさん:2011/07/16(土) 10:42:12.21
>>746
#include <stdio.h>
int main()
{
double omosa[10];
double nagasa[10];
double biiemuai[10];
int i;
for (i = 0; i < 10; i++) {
printf("weight = ");
scanf("%lf", &omosa[i]);
printf("height = ");
scanf("%lf", &nagasa[i]);
biiemuai[i] = omosa[i] / nagasa[i] / nagasa[i];
}
printf("\n weight height BMI\n");
for (i = 0; i < 10; i++) {
printf("%10.1f%10.1f%10.1f\n", omosa[i], nagasa[i], biiemuai[i]);
}
return 0;
}
752 ◆QZaw55cn4c :2011/07/16(土) 11:15:24.87
>>747
QZ化したものがひとりあらたに発生‥‥‥。
753デフォルトの名無しさん:2011/07/16(土) 11:15:56.84
>>747
この程度の処理でぱっと見で処理を把握できないプログラムを恥ずかしげもなく出すことは
作成者のプログラマとしての能力が致命的に欠落してることは理解できる?
トリッキーなコードはスレ違い
754デフォルトの名無しさん:2011/07/16(土) 11:17:02.83
>>752
おま
755デフォルトの名無しさん:2011/07/16(土) 11:20:13.25
756デフォルトの名無しさん:2011/07/16(土) 11:25:49.51
>>736
問題1
#include <iostream>
int main()
{
double a = 100., b = 200., r = 0.01;
int n = 0;
for (;a <= b;) {
a *= 1.0+r;
n++;
}
std::cout << n << "年" << std::endl;
return 0;
}

問題2
#include <iostream>
int main()
{
double a = 100., r = 0.01;
int i, n = 10;
for (i = 0; i < n; i++) {
a *= 1.0 + r;
}
std::cout << a << "円" << std::endl;
return 0;
}
757デフォルトの名無しさん:2011/07/16(土) 11:46:37.03
>>746
for (i = 0; i < 10; i++) {
nbsp; do printf("weight %d = ", i+1);
nbsp; while(!scanf("%lf", &omosa[i]) && (scanf("%*s"),1));
  do printf("height %d = ", i+1);
  while(!scanf("%lf", &nagasa[i]) && (scanf("%*s"),1));
  biiemuai[i] = omosa[i] / nagasa[i] / nagasa[i];
}
758デフォルトの名無しさん:2011/07/16(土) 13:01:44.92
>>756
ありがとうございます。金利、利率、目標金額をそれぞれ入力する場合はどうすればいいのでしょうか?
759631:2011/07/16(土) 13:28:15.00
>>706
返事が遅くなり申し訳ありません。
こちらの注文通りのプログラムで本当に助かりました
ありがとうございます。
linuxでのコンパイル、多人数でも動作確認ができました
760デフォルトの名無しさん:2011/07/16(土) 13:52:04.27
>>751
>>757
ありがとうございました
761デフォルトの名無しさん:2011/07/16(土) 14:02:39.33
>>753は、ぱっと見で理解できて、>>743より速い奴をあげてから言え。
762デフォルトの名無しさん:2011/07/16(土) 14:36:56.47
>>737
そうです

>>739
ありがとうございます
763デフォルトの名無しさん:2011/07/16(土) 15:25:27.73
・授業:ネットワークプログラミング
・問題文:以下のプログラムを改編し、ジャンケンゲームを作成せよ。勝敗判定は先に3勝したほうを勝ちとする。このときサーバーは2つクライアントから入力をうけ、同時に入力結果を返すこととする。
・プログラムURL:http://ideone.com/pGnkt
・環境
・OS: Linux
 コンパイル:端末 gcc -o
・言語:C
・期限: 2011年07月19日15:30まで
 その他の制限: この課題に取り組んでいますが、サーバーとクライアントの間でうまく動作するものが作れません。よろしくお願いいたします。

764デフォルトの名無しさん:2011/07/16(土) 16:24:20.65
連結リストのリストダンプとリスト解放って何ですか?
765デフォルトの名無しさん:2011/07/16(土) 17:59:23.07
(1)c言語
(2)問題:偶数なら2で割り、奇数なら3倍して1を足し、1になるまで繰り返すプログラムの作成をお願いします。
「偶数なら2で割り、奇数なら3倍して1を足す」という部分を再帰関数化しろ。
実行結果
2以上の自然数を入力してください。
11
11→34→17→52→26→13→40→20→10→5→16→8→4→2→1

766デフォルトの名無しさん:2011/07/16(土) 18:33:16.55
>>765
#include <stdio.h>
int main()
{
int d;
printf("2以上の自然数を入力してください。\n");
scanf("%d", &d);
printf("%d", d);
do {
if (d % 2) d = d * 3 + 1;
else d /= 2;
printf("→%d", d);
} while (d > 1);
printf("\n");
return 0;
}
767デフォルトの名無しさん:2011/07/16(土) 18:36:03.10
>>743 は少なくともあと30%ほど高速化できるみたい
768デフォルトの名無しさん:2011/07/16(土) 18:36:27.32
769デフォルトの名無しさん:2011/07/16(土) 18:49:40.25
>>718,>>719の問題教えてください
770デフォルトの名無しさん:2011/07/16(土) 19:00:13.24
>>765 の続きです
(1)c言語
(2)問題:「偶数なら2で割る、奇数なら3倍して1を足す」処理をして、さらにその関数に偶数処理と奇数処理の回数を表示するプログラムの作成をお願いします。
実行結果
2以上の自然数を入力してください。
11
11→34→17→52→26→13→40→20→10→5→16→8→4→2→1
偶数処理の回数:10回
奇数処理の回数:4回
771デフォルトの名無しさん:2011/07/16(土) 19:13:59.66
772デフォルトの名無しさん:2011/07/16(土) 20:30:31.82
773デフォルトの名無しさん:2011/07/17(日) 02:47:08.14
>>763
今度はUDPか、UDPでジャンケン3勝って少し面倒だな
774デフォルトの名無しさん:2011/07/17(日) 14:14:36.74
>>773
TCP/IPでも作成上問題ありませんので、以下を参照にお願いします。
・プログラムURL:http://ideone.com/JSLQF
775デフォルトの名無しさん:2011/07/17(日) 15:26:27.52
>>774
良いのか?例題のプログラムはUDPを使ったコードだぞ

実はUDPで書いてはみたんだが、複数のパソコンが無いと試験できない事に気が付いてアップするのを控えた
クライアントも受信するから bind() しなければならないのだけど、同じIPとPORTだと1プロセスしか bind() できないんだよねw

TCPで良いならこないだ書いた21ゲームを直せば簡単だ
776デフォルトの名無しさん:2011/07/17(日) 15:38:13.81
>>775演習内で使用したプログラムコードを使用して課題を作成するのが今回の目的です。
私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
777デフォルトの名無しさん:2011/07/17(日) 15:39:27.31
>>775演習内で使用したプログラムコードを使用して課題を作成するのが今回の目的です。
私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
778デフォルトの名無しさん:2011/07/17(日) 15:40:59.41
>>775演習内で使用したプログラムコードを使用して課題を作成するのが今回の目的です。
私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
779デフォルトの名無しさん:2011/07/17(日) 15:41:18.06
>>775演習内で使用したプログラムコードを使用して課題を作成するのが今回の目的です。
私もUDPを使って作成しようと試みたんですがUDPをうまく使えずつまずきました。
なので、UDPでなくてもTCPでも課題の作成は認められています。よろしければ、TCPを用いたプログラミングを書いていたけないでないでしょうか?
780デフォルトの名無しさん:2011/07/17(日) 15:49:09.03
>>764に対して答えてほしい...
781デフォルトの名無しさん:2011/07/17(日) 15:56:08.83
>>780
死ね
782デフォルトの名無しさん:2011/07/17(日) 16:29:04.10
連結リストのリストダンプとリスト解放って何ですか?
この2つの違いを教えてもらえればいいんですが…
>>781
何か気に障る事を言ったのでしょうか?謝ります
783デフォルトの名無しさん:2011/07/17(日) 16:58:10.11
>>782
ここは宿題スレだから...きっと講義を受けたんだろうなぁ。
そんで本を読んで勉強したし、ググって調べてもみたはずだよね。
それでも分からないから、ここに来たと。
来て >1 を読んだけど、あえて「連結リストのリストダンプとリスト解放を教えろ」と書き込んだわけか。
784デフォルトの名無しさん:2011/07/17(日) 17:01:02.48
>>783
YES
785デフォルトの名無しさん:2011/07/17(日) 17:28:20.07
いつからか、初心者用の一般的な質問スレがなくなってしまったね。
各言語用はいくらかあるようだけれど。
「スレ立てるまでもない質問は」という大仰な修飾の
付いたやつくらいかな。
786デフォルトの名無しさん:2011/07/17(日) 18:53:31.37
>>776
何故に連投した?
ttp://ideone.com/qyjq7

少し躓いて時間がかかってしまったが、それによって先日の21ゲームのバグが見つかった
多分、>>631 も君だと思うんだが、>>706 の回答にはバグが有る
server() 内で定義している len は初期化する必要が有る(初期化の方法は今回の回答を参考にしてくれ)
初期化しなくても動作する場合もある事がC言語の嫌らしいところで、前回の回答を修正したのに変更していない場所でエラーが出て悩んでしまった
何年、プログラマをやってるんだと....orz
787デフォルトの名無しさん:2011/07/17(日) 19:25:42.10
>>785
そこを何とか答えて頂きたい
788デフォルトの名無しさん:2011/07/17(日) 20:03:23.36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
#include <stdio.h>
#include <string.h>

struct Address_data{
char name[81];
char phone[20];
int age;
};

int main()
{
struct Address_data data[2], *p = data;
printf("Input end = Ctrl + D\n");
for (p = data; p - data < 2; p++)
p->age = -1;
for (p = data; p - data < 2; p++) {
printf("[%ld]name phone age = ", p - data);
if (scanf("%s %s %d", p->name, p->phone, &p->age) != 2)
break;
}
printf("\n");
for (p = data; p->age >= 0; p++)
printf("%s\t(%d)\t[%s]\n", p->name, p->age, p->phone);
return (0);
}
789デフォルトの名無しさん:2011/07/17(日) 20:03:35.84
これを拡張し、構造体の配列にして10件のデータの入力ができるように拡張しなさい
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限:7/20です
790デフォルトの名無しさん:2011/07/17(日) 21:35:08.03

>>764>>780>>782>>784>>787
何人か煽りも混じっているかもしれないけど、、、。

スレの流れから想像するに、>>739のコード中の
「リストダンプ」と「リスト解放」のことを言っている?

それならば、>>739の関数を見てもらえればいい。
そうじゃないなら、文脈次第。

よくある処理としては、
リストダンプ
→リストの全ノードの中身を各々表示する
リスト解放
→ヒープに取られたリストノード各々を解放
791デフォルトの名無しさん:2011/07/17(日) 21:52:33.39
>>789

元のコードに色々疑問があるが、一応書いてみた。
元から構造体の配列は使われているから、要素数増やせばいいんじゃないの?

ttp://codepad.org/QCAUfXzv
792デフォルトの名無しさん:2011/07/17(日) 21:59:20.72
>>722
遅くなりましたが解答ありがとうございました
for (n = 0, sum = 0.0; r = scanf("%lf", &h), (r == 1 && 0 <= h); ++n) {
上記の部分がちょっと難しいのでもう少し簡単?にできますかね
ちょっとまだC言語を始めたばかりでfor()の部分で括弧のなかに
scanfとかをいれていいとかは習わなかったので・・・
793デフォルトの名無しさん:2011/07/17(日) 22:12:24.00
794デフォルトの名無しさん:2011/07/17(日) 22:15:40.78
>>792

for (n = 0, sum = 0.0; r = scanf("%lf", &h), (r == 1 && 0 <= h); ++n) {
は以下と同等。
for (n = 0, sum = 0.0; ; ++n) {
if(scanf("%lf", &h) != 1) {
break;
}
if (h < 0) {
break;
}

}

コンパイルしていないので、間違えていればツッコミよろ

795 ◆SG9/NmPjzc :2011/07/17(日) 22:39:30.10
>>793
>>794
>>722
一番はじめに書いていただいたプログラムなどで
r==1や
if(r ! = 1)break; と書いてありますが 
これはなんという意味を表すのでしょうか。
なんどもすいません
796デフォルトの名無しさん:2011/07/17(日) 22:48:43.21
scanfの戻り値は、入力に成功した変数の数

scanf("%lf", &h);とすると、
hに正しくdouble型の数値が入力された場合は、1が返る
文字列などを入力して、失敗すれば、0が返る
EOFが入力された場合はEOF(-1)が返る

だから、r == 1のときだけ、入力が正しいとして処理を進めている
797デフォルトの名無しさん:2011/07/17(日) 23:13:22.15
(1)c言語(2)問題:最大公約数を求める関数を条件とベースに基づいて作成お願いします
条件
1:関数gcdの呼ばれた回数を記録  2:呼ばれた回数と、その時の引数a,bの値を表示
実行結果:2つの整数を入力してください
数値1:64
数値2:120
1回目の関数の呼び出し:a=64 ,b=120
2回目の関数の呼び出し:a=120 ,b=64
3回目の関数の呼び出し:a=64 ,b=56
4回目の関数の呼び出し:a=56 ,b=8
最大公約数は8です
ベース
#include <stdio.h>//ユークリッドのアルゴリズムで最大公約数gcdを求める
int gcd(int fa , int fb); //プロトタイプ宣言
int main(){
int a,b,g;
printf("2つの数値を入力してください。\n");
printf("数値1:");
scanf("%d",&a);
printf("数値2:");
scanf("%d",&b);
g = gcd(a,b);
printf("最大公約数は%dです\n",g);
}
int gcd(int fa, int fb){
int r,ret;
r = fa % fb ;
if(r > 0){ //不成立時が終了条件
ret = gcd(fb,r); //再帰呼び出し
}else{ret = fb ;
}return ret;
}
798デフォルトの名無しさん:2011/07/17(日) 23:38:26.16
int gcd(int fa, int fb)
{
static int cnt = 1;
int r, ret;
printf("%d回目の関数の呼び出し:a=%d ,b=%d\n", cnt, fa, fb);
r = fa % fb;
cnt++;
if(r > 0) {
ret = gcd(fb, r);
}
else {
ret = fb;
}

return ret;
}
799 ◆QZaw55cn4c :2011/07/18(月) 00:34:15.51
800 ◆QZaw55cn4c :2011/07/18(月) 00:37:01.39
>>786
最近教えてもらった、Embarcadero/Borland の codeguard がなかなかいい感じです。
時にはミスりますが、初期化忘れくらいならばたいがい検出してくれます。評価版もありますので一度お試しを。
bcc32 -vG -v target.c or target.cpp
801デフォルトの名無しさん:2011/07/18(月) 01:21:45.28
[1] 授業単元:スタックとキュー
[2] 問題文(含コード&リンク): http://codepad.org/Os0523nV
  3問あります。問題文もリンク先に書いてあります。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: C
[4] 期限: 2011年7月18日まで
[5] その他の制限:スタックとキュー

どうぞよろしくお願い致します。

802 ◆QZaw55cn4c :2011/07/18(月) 02:06:48.91
>>801
(1) http://ideone.com/248cl
(2) http://ideone.com/Czueg
(2) のキューは問題例とは異なった考え方ですが、この方がシンプルに実装できると考えています。参考までに。
803デフォルトの名無しさん:2011/07/18(月) 02:28:43.28
こういう所に丸投げしに来る奴は、どうすればシンプルに実装出来るかとか
そんなことには全く興味が無い
その場しのぎだけが目的
804 ◆QZaw55cn4c :2011/07/18(月) 02:40:00.60
805デフォルトの名無しさん:2011/07/18(月) 02:42:21.86
>>803
そうですか?私が学生だったら、自分で解いた上で(必要ならモリタポを払ってでも)他の人間がどう書くかわくわくして見ていますね。
そんな人もいると思います、だったら受けてたちましょう。

そうじゃない人はどーでもいいです。
806 ◆/91kCCQXBo :2011/07/18(月) 02:50:33.99
>>736 >>758 C++/CLI FormApp
http://www.dotup.org/uploda/www.dotup.org1800860.zip.html
Pass:0000  del:1週間
807デフォルトの名無しさん:2011/07/18(月) 02:52:54.49
あいかわらずクソだな
808デフォルトの名無しさん:2011/07/18(月) 02:55:08.93
時々、「いくらなんでもそんな基本的な所で躓かないだろう」ってな質問はあるな
こういうのは面白いやり方を期待できないだろうからマジ質問なんだろうけど
そういう人はどうしてプログラミングをやろうと思ったのか気になる
809デフォルトの名無しさん:2011/07/18(月) 02:57:48.37
>>790
ありがとうございます
それで十分です
810デフォルトの名無しさん:2011/07/18(月) 04:29:28.20
>>808
単位なんだから仕方がない。
811デフォルトの名無しさん:2011/07/18(月) 04:42:04.50
すっごい難問が解きたい。誰か頼む。
812デフォルトの名無しさん:2011/07/18(月) 04:47:05.02
>>811
トリップついてる頭のおかしい人を、まともな人間にしてください
813 ◆QZaw55cn4c :2011/07/18(月) 05:12:13.34
814デフォルトの名無しさん:2011/07/18(月) 05:52:37.08
>>800
仕事用に Visiual Studio を持ってるからw
bcc はこういうスレで遊びコード書く専用だよ
そもそも、宿題レベルのコードにデバッガを使うのには抵抗も有るし
815デフォルトの名無しさん:2011/07/18(月) 06:13:17.07
http://codepad.org/TQI17WoD
客の注文した商品名と金額を線形リストを用いて出力表示するプログラムです
上記URLプログラムだとエラーが発生するんですが、原因がどこにあるのか教えてください
816デフォルトの名無しさん:2011/07/18(月) 06:23:09.32
>>814
いいなあ。
817デフォルトの名無しさん:2011/07/18(月) 07:23:16.57
>>815
全角スペース
818デフォルトの名無しさん:2011/07/18(月) 08:20:39.94
819デフォルトの名無しさん:2011/07/18(月) 09:12:59.55
820デフォルトの名無しさん:2011/07/18(月) 09:41:52.71
>>786
ありがとうございます。連発はPCが調子悪くて読み込みクリックの際連続で投稿してしまいました。
ご指摘のとうり初期化のところを再度確認させていただきます。
821:2011/07/18(月) 10:06:37.93
>トリップついてる頭のおかしい人を、まともな人間にしてください
まるでトリップをつけてるのが悪いみたいな言い方。
822デフォルトの名無しさん:2011/07/18(月) 10:20:36.60
>>821
「トリップついてる頭のおかしい人」はQZを指す。お前、鈍いってよく言われるだろ。
823:2011/07/18(月) 10:29:08.19
EOF+1?0:1 www
824 ◆QZaw55cn4c :2011/07/18(月) 10:46:26.57
>>822
いくらなんでもそれは一見さんには過酷な課題というものです。
825デフォルトの名無しさん:2011/07/18(月) 12:38:08.13
Q何とかって記述をNGに登録してる人がいるから、
あえてそういう表現してるんだろうが、バカみたいだ。
826デフォルトの名無しさん:2011/07/18(月) 12:39:42.26
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 四則演算(+、−、×、÷)だけの電卓を作成せよ。
scanfで式を入力し、エンターキーで結果を表示。入力できる数値の値は三つだけでよい。
例:式は2+4×5 enterkey
答え:22
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名:gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 2011年7月19日08:30まで
[5] その他の制限: できれば各処理が何を行っているかコメントを入れてほしい。
827デフォルトの名無しさん:2011/07/18(月) 12:48:28.87
このスレでトリップ付けてて頭がおかしいのは一人だけなので問題ない。
>>825のような鈍い奴は自分の能力が足りないとあきらめる事だ。
828デフォルトの名無しさん:2011/07/18(月) 13:59:45.36
ありがとうございます
>>817
全角スペースとは、具体的に何処に入っているのか詳細を教えてください

>>819
>>815のプログラムとの変更点を教えてください
829デフォルトの名無しさん:2011/07/18(月) 14:03:43.04
>>828
24行目でコンパイルエラー出てるんだから大体わかるでしょ
ってか全角スペースが表示されるようなエディタ使ってないのか
830デフォルトの名無しさん:2011/07/18(月) 14:04:29.63
>>828
24行目 int 前のインデントを行うのに全角スペースを2発入れてる
831デフォルトの名無しさん:2011/07/18(月) 14:07:52.04
これがゆとりか。ゆとり恐るべし。
832デフォルトの名無しさん:2011/07/18(月) 14:12:05.13
それ以外の部分も半角スペースとタブが混在しててなんか気持ち悪いな
833デフォルトの名無しさん:2011/07/18(月) 14:12:51.34
全角スペースを空白ではなく半角スペースと違うようにシンボル表示するのは良いとして
TABもシンボル表示させてる?
834デフォルトの名無しさん:2011/07/18(月) 14:20:40.07
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文:標準入力に現れた数字文字の出現回数を*を使って
数字の下側に表示するプログラムを作成せよ。
http://codepad.org/T7Ft26pn
上記のソースコードを元にして作成していただきたいです。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名:gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 2011年7月20日まで
[5] その他の制限:while文、for文を使って作成していただきたいです。
お願いいたします。
実行例 入力:112 Ctrl+z とした場合
1 2 3 4 5 6 7 8 9
* *
*
835デフォルトの名無しさん:2011/07/18(月) 14:24:59.74
>>829-830
コンパイルしたところ
error C2106: '=' : 左のオペランドが、左辺値になっていません。と表示されました
836デフォルトの名無しさん:2011/07/18(月) 14:43:52.98
>>833
してる。
でないと、makeに「タブのつもりですか?」とか
高飛車な態度で笑われてちんこ勃つから
837デフォルトの名無しさん:2011/07/18(月) 14:57:03.16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
実数x、y(y≠0)の入力に対し、商x / yを出力する。ただし、プログラム中で除算の式を用いないでNewton法の逐次近似で乗算と減算によりyの逆数zを求め、x×zを得ること。
注意 逆数zを求める初期値の選択が悪いと2次の収束(反復ごとに精度が桁数で倍になる)をせず、極端な場合には振動して収束しない。
[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C言語
[4] 期限:2011年7月20日
[5] その他の制限: コメントでかるく説明も入れていただけるとありがたいです
838デフォルトの名無しさん:2011/07/18(月) 15:21:13.67

f(x)=1/x

f'(x)=-1/x*x

(a,f(a))を通る接線

y - f(a) =f'(a)(x - a)

x軸との交点(y=0)

x = a - f(a)/f'(a) = 2a




839デフォルトの名無しさん:2011/07/18(月) 15:56:36.48
>>826
演算子の優先順位は考慮する必要はありますか
840 ◆/91kCCQXBo :2011/07/18(月) 16:15:39.67
>>756
問題1
a <= b の = 要らないのでは。
841デフォルトの名無しさん:2011/07/18(月) 16:22:42.71
>>840
問題文にそったまでですがどのような理由で要らないと思われますか?
842デフォルトの名無しさん:2011/07/18(月) 16:41:07.30
>>839
演算子の優先順位を考慮してお願いします。
843デフォルトの名無しさん:2011/07/18(月) 16:58:25.38
>>827
ご希望なら、皆でつけるよ。
844デフォルトの名無しさん:2011/07/18(月) 17:11:10.39
>>835について追記します

node->name = name;
node->price = price;

でエラーが発生したようです
何が原因なのでしょうか?
845デフォルトの名無しさん:2011/07/18(月) 17:20:01.29
>>843
お前はQZくらい頭おかしいのか? それならトリップつけろ。
846 ◆QZaw55cn4c :2011/07/18(月) 17:42:05.16
>>826
http://codepad.org/aTuKgIxj

>>825
NGに登録しているわりには、私が出現すると過敏に反応するんですよね。ちょっとためしてみませうか。

>>827, >>845
どうみてもあなたのほうが変です。ご愁傷様。
いつも不思議に思うのですが、回答を作成しつつあわせて◆QZを叩けば効果的なのですが、できないのでしょうか?
847 ◆/91kCCQXBo :2011/07/18(月) 17:44:35.59
816.c(39) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
strcpy(name, node->name);
816.c(58) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
strcpy(name, node_h->name);
848 ◆QZaw55cn4c :2011/07/18(月) 17:50:02.40
849デフォルトの名無しさん:2011/07/18(月) 17:50:32.52
>>846
コンパイル通せるようになってからでかい口叩こうな。
850デフォルトの名無しさん:2011/07/18(月) 17:54:06.11
>>849
へえ?
>>846 のコンパイルが通らないのですか?codepad 上のgcc では通っていますけれども。通らないコンパイラはなんですか?
851デフォルトの名無しさん:2011/07/18(月) 17:54:10.13
>>846
解いていただいて誠にもうしわけないのですが、関数一つで行えないでしょうか?
あと、処理をswitch文やif分では行えないでしょうか?
解いていただいた方法ですと、まだ習っていない処理の仕方なので説明が出来ませんので。
本当にお願いばかりで申し訳ありません。
852デフォルトの名無しさん:2011/07/18(月) 17:57:06.78
>>847
ありがとうございます

できるようになりましたが、出力時にこのような表示が…

入力しなさい
tea 330
入力しなさい

0番目のリスト-> (ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘJ,
330)

これはcharに文字が入っていないのですか?
853デフォルトの名無しさん:2011/07/18(月) 17:57:14.28
ヴィオド?
854 ◆/91kCCQXBo :2011/07/18(月) 18:01:09.90
816.c(39) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
strcpy(node->name, name);
816.c(58) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
strcpy(node_h->name, name);

ERROR:referer情報が変です。(ref1)
855デフォルトの名無しさん:2011/07/18(月) 18:01:48.33
>>853
出力表示する関数はvoidですが…
856デフォルトの名無しさん:2011/07/18(月) 18:19:16.41
あのさ、あんましあっけなく早くプログラムコード上げると、
質問者のほうもおかしな気分になる。
どっかに回答の載ってるサイトがあるんじゃないかな?
とか。
間というものを大切にしよう。
一人(一つの酉とか)が多数の問題を同時解決するのも
また同じ。
857デフォルトの名無しさん:2011/07/18(月) 18:22:32.76
>>856
気持ち悪いからトリップつけてよ
858デフォルトの名無しさん:2011/07/18(月) 18:25:29.71
>>856
そうですかね。できたから上げただけなんですが。:-)

種明かしをすると過去問に類似のものがあり、それをちょっと手直ししただけです。とはいえ無論オリジナルですが、最近は信じてもらえなくて粘着様にたたかれる有様です。
不思議な世の中です。
859デフォルトの名無しさん:2011/07/18(月) 18:29:29.71
>>858
トリップつけたり外したりすんな
引っ込んでろ
860デフォルトの名無しさん:2011/07/18(月) 18:51:53.18
過去にあったことが、どう都合よく脳内で変換されてるんだろう
861デフォルトの名無しさん:2011/07/18(月) 18:59:22.70
>>859が可哀想
862デフォルトの名無しさん:2011/07/18(月) 19:02:22.57
某国の方針と一緒で基本自演以上のことはできない気もするけどな
863デフォルトの名無しさん:2011/07/18(月) 19:04:58.50
俺はその辺のコードぱくってきてしれっと何も言わずに渡すぜ
864デフォルトの名無しさん:2011/07/18(月) 19:11:44.15
>>848
ありがとうございます。
完璧でした。助かりました。
865デフォルトの名無しさん:2011/07/18(月) 19:12:49.08
>>852ですが、わかったことを追記します
2つの文字と整数を区切らずに入力するとエラーがでます
それと、最初に改行のみ入力すると正常に終了するようです
866デフォルトの名無しさん:2011/07/18(月) 19:47:56.07
>>860
別に。
義理をかく、恥をかく、汗をかく、の三角法を実践し、10 や 20 の恥くらいは、なんとも思わない体になりました。
867デフォルトの名無しさん:2011/07/18(月) 20:13:57.20
[1] 授業単元:遺伝的アルゴリズム
[2] 問題文(含コード&リンク):
世代数 平均適応度 最大適応度というフォーマットで、ooo.dat というファイル名で保存すれば、gnuplot で
plot ”ooo.dat”using 1:2 w l, ”result.dat”using 1:3 w l
とすることで、グラフが得られる。
グラフの例とプログラムと問題文は以下のURLです。
http://ux.getuploader.com/qwertykey/
パスはqqq3538です。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:[2011年7月20日まで]
[5] その他の制限: プログラムに詳しく書かれているので遺伝アルゴリズムに知識がなくてもできると思います。
よろしくお願いします。
868デフォルトの名無しさん:2011/07/18(月) 20:30:24.99
じゃあ、自分でやれよw
869デフォルトの名無しさん:2011/07/18(月) 21:29:57.32
>>850
これがコンパイル通る? wwwww
> void error(viod)
870デフォルトの名無しさん:2011/07/18(月) 21:36:26.75
>>846
ほら、回答も書いてやったぞ。宿題の役には立たないうんこコードなのは一緒だが、
>>846と違って、コンパイルエラーもないし、なによりもループせずきちんと終了する。

#include <stdio.h>
int main()
{
printf("hello world!\n");
}
871デフォルトの名無しさん:2011/07/18(月) 21:41:09.88
C言語の仕様知らないとこうも哀れな晒し者になるんだな。
>>869ほどひどい自害は初めて見た。
872デフォルトの名無しさん:2011/07/18(月) 21:45:04.28
>>871
-Wall -Werrorはデフォルト。とくにここは宿題スレだ。
873デフォルトの名無しさん:2011/07/18(月) 21:56:55.24
[1] 授業単元:考えるC言語基礎
[2] 問題文: 金額を入力すると、貨幣及び硬貨の合計枚数が最も少なくなるように
一万円札、5千、千、500円玉、100、50、10,5,1円玉に分け、それぞれの枚数
を出力するプログラムを作成せよ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで
[5] その他の制限: goto文まで習いました、学び始めて2ヶ月ほどなので
出来る限り分かりやすいプログラムでお願いします
874デフォルトの名無しさん:2011/07/18(月) 22:29:41.06
>>873
ちょっと冗長になってもた
ttp://ideone.com/l1evG
875 ◆QZaw55cn4c :2011/07/18(月) 22:55:02.71
>>869
これはびっくり。ご指摘感謝。

でも、 コ ン パ イ ル は と お り ま す 霧

>>826
動作には問題ないのですが、それ以前の問題かと。ということで修正いたします。
お友達にあげるか、もし他に回答する人がいない場合の予備にでもしてください。
http://codepad.org/aNs8p7a1


876デフォルトの名無しさん:2011/07/18(月) 22:58:32.38
#include <stdio.h> // >>873
int main(void){
  int money;

  printf("金額を入力してください :"); scanf("%d", &money);
  printf("一万円札の枚数 %d\n", money / 10000); money %= 10000;
  printf("五千円札の枚数 %d\n", money / 5000); money %= 5000;
  printf("千円札の枚数 %d\n", money / 1000); money %= 1000;
  printf("500円玉の枚数 %d\n", money / 500); money %= 500;
  printf("100円玉の枚数 %d\n", money / 100); money %= 100;
  printf("50円玉の枚数 %d\n", money / 50); money %= 50;
  printf("10円玉の枚数 %d\n", money / 10); money %= 10;
  printf("5円玉の枚数 %d\n", money / 5); money %= 5;
  printf("1円玉の枚数 %d\n", money);
  return 0;
}
877デフォルトの名無しさん:2011/07/18(月) 23:01:40.73
>>875
うんこコードとっととなおせ。

まだ、 コ ン パ イ ル が と お ら な い。

それをなおしても、る ー ぷ す る。
878デフォルトの名無しさん:2011/07/18(月) 23:06:00.47
>>877
そうですか?ちょっと確認します。
879デフォルトの名無しさん:2011/07/18(月) 23:17:06.03
>>877
>>826
ループするのは仕様です。(>>826 にはその場合の指示はとくにない。)つまり解釈できない式を入力すると "syntax error" と表示して再度入力を促します。
しかし、それが問題ならば、以下の形にしておきます。
コンパイルが通らない、というのはこちらでは確認できませんでした。warning は出ますが、これは動作上問題はありません。(longjmp()->setjmp() で error() からはもどらない。)

が、回避してみました。これでどうでしょうかね。
http://codepad.org/41Ane6id
880デフォルトの名無しさん:2011/07/18(月) 23:26:14.37
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
ループするのは仕様です。キリリッ
881デフォルトの名無しさん:2011/07/18(月) 23:29:12.18
ループしたらシグナル送って殺さなきゃ止まらないのも仕様だったんですかあ?
882デフォルトの名無しさん:2011/07/18(月) 23:42:14.72
>>881
申し訳ないのですが、>>875 にしても、代数式として評価が可能な場合には評価結果を出力して終了しています。
ループするのは、入力した式が代数式として評価不可能な場合で、
"syntax error" と表示したあと、1文字先読みして(∵LL(1)文法に従っているので)単に main() に longjmp() しているだけです。
だから代数式として評価可能な式が入力され次第、プログラムは終了します。
いつまでたってもループしたまま終わらないという誤解をお持ちのようですが、少しコードを眺めていただければ、そんなことはないことはお分かりになるだろうと思います。

#それとも掛け算に * 割り算に / を使っていることを問題にされているのでしょうかね?(たしかにこれは >>826 とは違いますが)
883デフォルトの名無しさん:2011/07/19(火) 00:01:27.45
884デフォルトの名無しさん:2011/07/19(火) 00:27:49.09
Qは屁理屈だけは一丁前だなあ
糞コードしか書けない癖に
885デフォルトの名無しさん:2011/07/19(火) 00:29:37.71
886デフォルトの名無しさん:2011/07/19(火) 00:32:26.59
>>882
846 < /dev/nullで終了しないんだが。

こ れ も 仕 様 で す か あ ?
887デフォルトの名無しさん:2011/07/19(火) 00:58:23.91
(1)c言語(2)問題:ベースを基にビットを左に回転させるleft_rottate関数を追加しプログラムを完成させよ。
実行結果:
数値f0f0のビット状態
1111000011110000
3ビット回転させました
数値8787のビット状態
1000011110000111
ベース
#include <stdio.h>
void print_bit(unsigned short int x); //プロトタイプ宣言
int main(){
unsigned short int usi;
usi = 0xf0f0 ;
print_bit(usi);
return 0; //システムに値0を返す
}
void print_bit(unsigned short int x){
int length , i , mask ;
mask = 1;
length = sizeof(x) *8;
mask =mask << (length -1);
printf("数値%xのビット状態\n",x);
for(i = 1;i<= length ; i++){
if(x & mask){
printf("1");
}else{
printf("0");
}
mask =mask >> 1;
}
printf("\n");
}
888 ◆QZaw55cn4c :2011/07/19(火) 01:10:32.65
なるほどね。一文字目から EOF だったら問題があるということですね。そして、/dev/null に振られると再入力もできない、と。
状況がよくわかりました。

>>826
以下に修正いたします。
評価不可能の場合ループする:http://codepad.org/n54wiAFR
評価不可能の場合ループしない:http://codepad.org/9TMHHLiE
889デフォルトの名無しさん:2011/07/19(火) 01:20:14.32
>>888
なあんだ。そんな事もわからずに。

ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ

ってやってたんですかあ?
890デフォルトの名無しさん:2011/07/19(火) 01:24:44.86
>>889
たしかに。先読みの落とし穴に嵌っていました。
一連のご指摘感謝いたします。
891デフォルトの名無しさん:2011/07/19(火) 02:15:12.83
>>888
何でもいいんですが、問題読みました?
まぁgetchar()のほうがいいのかもしれないけど、問題に書いてある以上はscanf
を使うべきなのでは?
まぁ質問のご本人様がいいと言えばそれまでなんですけど。
892 ◆QZaw55cn4c :2011/07/19(火) 02:38:33.92
>>891
そういわれればそうですね。

>>826 訂正します。
http://codepad.org/p3YRfvS8
http://codepad.org/Qeismfmq
893デフォルトの名無しさん:2011/07/19(火) 02:51:36.33
>>865です
プログラムを商品名のみ入力するように変更して
完成させることができました

ですが、商品名と価格を同時に入力することは不可能なんでしょうか?
アドバイスおねがいします
894 ◆/91kCCQXBo :2011/07/19(火) 03:03:46.65
> アドバイスおねがいします
>>854
895デフォルトの名無しさん:2011/07/19(火) 03:05:03.61
896 ◆QZaw55cn4c :2011/07/19(火) 03:35:41.64
>>837
http://codepad.org/RLETGtBf
y に与えることのできる値はおおよそ 1/epsilon よりも小さい必要があります。
897デフォルトの名無しさん:2011/07/19(火) 11:59:29.50
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):
次の表のデータを構造体(shouhin)に格納して、商品コードを入力し、
該当する商品が見つかった場合には、その商品のコード、商品名、価格、販売数、販売額(価格×販売数)を
実行結果のように表示するプログラムを作成せよ。
なお、該当する商品があ見つからなかった場合のみ「見つかりませんでした」と表示してプログラムを終了する

┏━━━━━━┯━━━━━━━━┯━━━━━┯━━━━━┓
┃商品コード     │商品名          │価格      │販売数    ┃
┃code        │name          │price       │number      ┃
┃            │                │          │          ┃
┃fm1       │フラッシュメモリ     │1500      │27        ┃
┃hu2            │ハブ          │23000        │8            ┃
┃mo3          │マウス           │2560      │12        ┃
┗━━━━━━┷━━━━━━━━┷━━━━━┷━━━━━┛

[実行結果]
商品コードを入力:hu2(キーボードからの入力)
商品コード 商品名 価格  販売数 販売額
----------------------------------------------
hu2 ハブ 23000 8 184000

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 今週末まで

上手く書きこみ出来てるか不安ですが…どなたか宜しくお願いします。
898デフォルトの名無しさん:2011/07/19(火) 12:39:29.41
899デフォルトの名無しさん:2011/07/19(火) 12:55:56.07
>>897
見つかったときは終わらんの?
900デフォルトの名無しさん:2011/07/19(火) 15:09:31.18
rm /dev/null やった時にはどうしようかと思った
901デフォルトの名無しさん:2011/07/19(火) 19:21:44.77
>>788,>>789の問題解いてくれますか
902デフォルトの名無しさん:2011/07/19(火) 20:30:26.73
>>867
お願いします。
903デフォルトの名無しさん:2011/07/19(火) 20:43:52.62
>>896
ありがとうございます
904デフォルトの名無しさん:2011/07/19(火) 21:09:42.47
>>720
すいません、このプログラムを
while文をつかって書いていただけませんか
C言語を初めて一ヶ月の初心者なので簡単にお願いします
905デフォルトの名無しさん:2011/07/19(火) 21:21:10.52
>>904
#include <stdio.h>

int main()
{
float sum = 0, max = -1, min = 10000, val;
int num;

for (num = 0; scanf(" %f", &val) == 1 && val > 0; num++) {
if (max < val)
max = val;
if (min > val)
min = val;
sum += val;
}
printf("入力人数: %d\n", num);
if (num > 0) {
printf("最大値: %f\n", max);
printf("最小値: %f\n", min);
printf("平均値: %f\n", sum / num);
}
}
906デフォルトの名無しさん:2011/07/19(火) 21:22:28.84
whileか
#include <stdio.h>

int main()
{
float sum = 0, max = 0, min = 10000, val;
int num = 0;

while (scanf(" %f", &val) == 1 && val > 0) {
if (max < val)
max = val;
if (min > val)
min = val;
sum += val;
num++;
}
printf("入力人数: %d\n", num);
if (num > 0) {
printf("最大値: %f\n", max);
printf("最小値: %f\n", min);
printf("平均値: %f\n", sum / num);
}
}
907デフォルトの名無しさん:2011/07/19(火) 21:23:51.43
>>904
でも、コンパイルはとおります 霧
908デフォルトの名無しさん:2011/07/19(火) 21:28:56.14
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
なんて言ってるうんこの書いたコードなんか誰も使いたがらないのは当然。
909905,906:2011/07/19(火) 21:33:48.59
>>904
>>905,906を使うための条件

1 このスレ(または次スレ)に↓を書き込むこと。
QZ死ね。てめーのうんこコードなんか単位落とすことになったって使わねー。

2 次回の質問の時は↓これを制限とすること。
[5] その他の制限: QZは邪魔だから回答しない事
910デフォルトの名無しさん:2011/07/19(火) 21:38:07.87
>>908
>>722 はQZじゃない。
・int main(void) とは QZ はかかない。
・末尾が /* end */ じゃない。
・ループ後の結果表示で if (r == 1) { } という意味不明なことは QZ はしない。
・ループ内での最小値・最大値のキープで、if (n == 0 || h < min) という小粋なことは QZ はできない。
911 ◆QZaw55cn4c :2011/07/19(火) 21:41:13.65
>>909
>>905
> max = 0, min = 10000,
ぷぷぷ。
最小値が  10001 だったり、最大値が -1 だったりすると破綻しますね。
912デフォルトの名無しさん:2011/07/19(火) 21:42:48.50
QZの煽りが成長してきたことを嬉しく思うw
913 ◆QZaw55cn4c :2011/07/19(火) 21:45:01.67
>>906
float sum = 0,
printf() で出力するのに、double ではなくわざわざ float とした根拠を示してください。
914デフォルトの名無しさん:2011/07/19(火) 21:46:59.84
最大値が-1はありえない。そんなヘボだから。

ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ

なんて、墓穴掘っちゃうんだよ。www
915デフォルトの名無しさん:2011/07/19(火) 21:48:52.79
>>913
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ
ル ー プ は 仕 様 で す 。 き り り っ

なんて言ってるバカに説明してやる義理はねー。
916デフォルトの名無しさん:2011/07/19(火) 21:52:25.98
>>885
すいませんが
8行目の while (n) という ところの nっていうのはなにを表している
のでしょうか
917 ◆QZaw55cn4c :2011/07/19(火) 21:52:49.92
>>914
では最小値は?最小値が 10001 は probable ではないにしても possible でしょう?mix = 10001 なんてうかつに書いていいのかなあ。
918 ◆QZaw55cn4c :2011/07/19(火) 21:53:43.31
>>915
答える能力がない、と解釈しました。霧
919デフォルトの名無しさん:2011/07/19(火) 21:56:10.71
>>885
なんどもすいません
a[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, *p = a;
上の{}とかを使わないで宣言って出来ませんかね
習っていないというか 見たことがなかったので
920デフォルトの名無しさん:2011/07/19(火) 21:57:22.43
>>917
指摘されなきゃ、-1が有りえないと気付かないバカ。mixってなんだよ。ww

>>918
指摘されなきゃ、ループに気付けないバカには教えてやんね。
921デフォルトの名無しさん:2011/07/19(火) 22:02:52.03
>>920
ぷぷぷ。
***最小値が  10001 だったり***、最大値が -1 だったりすると破綻しますね。

>教えてやんね。
日本語は正確に。「わからない」「考えていなかった」と書きましょうね。
あと、float をあえて使う場面はそうそうない。浮動小数点は double がデフォと学校で習いませんでしたか?
922デフォルトの名無しさん:2011/07/19(火) 22:03:28.35
>>887の解答を知りたいのでお願いします
923デフォルトの名無しさん:2011/07/19(火) 22:07:22.45
>>919
>>874は分かる?
924デフォルトの名無しさん:2011/07/19(火) 22:08:57.70
>>526
>>743 を高速化してみた
http://ideone.com/I3Dqo
925デフォルトの名無しさん:2011/07/19(火) 22:10:08.50
>>921
これだけ指摘されても、最大値が-1はありえないって、まだ気付かないのか?
可哀相なくらい 頭 悪 い ん だ な
926デフォルトの名無しさん:2011/07/19(火) 22:15:14.88
> あと、float をあえて使う場面はそうそうない。浮動小数点は double がデフォと学校で習いませんでしたか?
キミみたいな底辺PGは使う機会そうそう無いだろうけど、数値演算やってると不要な処でdoubleは使わないんだよ。
927デフォルトの名無しさん:2011/07/19(火) 22:21:12.20
>>923
わかると思います
ただ課題の場所がwhile文を習った範囲なのでwhile文を使いたいと思ったから
質問しました

>>885
p++;
上みたいにすることで 一回ループしたら1万が5千に変わるという
解釈で良いのかなぁと思ったのですが
[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, *p = a;
これの使い方がわからないので質問させていただきました
長文失礼しました
928デフォルトの名無しさん:2011/07/19(火) 22:36:55.31
>>927
変数と、配列と、ポインタ(ついでに配列の先頭アドレス代入の初期化)
を一片にやってるだけ、分解すると

int n;
int a[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1};
int *p = a;
んで、pってのは配列a操作用に宣言したポインタ、初期化時には配列aの先頭アドレスを指していて、
初期化の段階では *p で a[0] にアクセス出来る。

if文や%=除算の余りを求めてるのは
ループの中で枚数数えながら数えた金額を省いてる為、ここは>>874分かるなら大丈夫かな、

p++ってのは、ポインタpが指してる配列を次の要素へ進める、
a[0]を指してるならa[1]へ、a[1]を指してるならa[2]へ

while(n)ってのは、金額が無ければループを抜ける処理、
ループは偽になった時に抜けるわけだけど、C言語だと0も偽って判定される、
これを利用して、単にwhile(n)って書くだけで除算の余りを求めた時に金額が無くなれば(nが0になれば)ループを抜ける。
929デフォルトの名無しさん:2011/07/19(火) 22:44:59.26
>>928
>C言語だと0も偽って判定される
ではなくて、Cには論理型はなく、0が偽、0以外が真。

930デフォルトの名無しさん:2011/07/19(火) 22:46:02.93
>>928
ポインタとかならってなくて
使えないというか、使っちゃダメみたいなかんじなのですが
簡単に書くためには、ポインタとかを使わないと
931930:2011/07/19(火) 22:47:23.58
while文ではかけないのですか?
すいません文が飛びました
932928:2011/07/19(火) 22:47:57.67
>>929
そうだったわ、トン
933デフォルトの名無しさん:2011/07/19(火) 22:58:02.45
>>873
>>885
こっちのがわかりやすくない?
ワザワザポインタ使う意味もないと思うし。

配列の初期化は元のコードが見やすいけど。

ttp://codepad.org/FeoZsHK0
934928:2011/07/19(火) 23:02:42.90
>>930
出来るよ、>>885のコードからポインタ取っ払ってみた
ttp://codepad.org/yRBJwWKd
935デフォルトの名無しさん:2011/07/19(火) 23:04:47.23
すいません・・・
配列ってやつも習って無いというか。。。
n, a[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, *p = a;
これを使いたくなくて(習ってない?[ ]とかっていう表現を)

でも自分の勝手な解釈だと 12行目の p++ は↑の表現をしないと使えないと
思っていて
↑の奴を使わないときれいなループ文が作れないと思っているのですが
どうなんでしょうか
936デフォルトの名無しさん:2011/07/19(火) 23:06:48.03
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):入力された特定の名前だけすべて削除する関数を線形リストを用いて作成しなさい

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: 今週末15:00~

strcmpで作成したプログラム ( http://codepad.org/c1rAAFnp ) では,
「 'strcmp' : 1 番目の引数を 'ORDER *' から 'const char *' に変換できません。」とエラーが表示されます

よろしくおねがいします
937デフォルトの名無しさん:2011/07/19(火) 23:08:23.36
>>926
逆ですね。特殊な用途で float を使うことはあっても、普段、なんでもないプログラムでは double を使うものなんですよ。
>>906 のような単純な数値演算とやらで float をあえて使う理由はなんでしょうか?
938デフォルトの名無しさん:2011/07/19(火) 23:11:56.53
>>937
消えろクズ
939デフォルトの名無しさん:2011/07/19(火) 23:18:49.73
>>925
>>846 に対して鋭い指摘を受けた際には、「これは凄腕ににらまれた、どーしよう(泣)」とおろおろしたものですが、
float を使ったり、max/min の拾い出しの際不用意に初期値を決めうちしたりするところからみると、アマチュアの私と大差ないレベルなんですねえ。(ほっ)
940デフォルトの名無しさん:2011/07/19(火) 23:20:04.31
>>935

goto習っていて、配列を習っていないとは不思議なカリキュラムだ、、、、。

そういう後出しで条件付けていくのやめようよ。

配列を使わないなら、10000円から各金種の判定を並べていくことになり、ループにはならない。

と思って、すれを見返すと
>>874>>876ではだめなのかな?
941デフォルトの名無しさん:2011/07/19(火) 23:20:27.26
>>939
コテつけてろよクズ
942デフォルトの名無しさん:2011/07/19(火) 23:21:25.09
/*
CISC以外のプロセッサのことを考えるとC言語的にはfloatを使うのが正統です。
しかしdoubleは現在の殆どの処理系でfloatよりも効率的かつ高精度な
計算と結果になることでしょう。
プロセッサレベルでdoubleに対応できるようになったCISCプロセッサの
普及の賜物です。
*/
943デフォルトの名無しさん:2011/07/19(火) 23:22:22.38
>>937
お前のような数値演算に一生縁がなさそうなバカには、浮動小数点は頭使わず
double使っとけと教える。この方が教えるの楽だからな。

無警告でコンパイル通りますが何か? ループもしませんが何か? ww
944デフォルトの名無しさん:2011/07/19(火) 23:29:01.23
>>942
それ、10年遅れてる。今なら普通SIMD演算使う。floatは並列度を2倍に出来る。
945デフォルトの名無しさん:2011/07/19(火) 23:31:56.33
>>939
まだ理解できてないようだな。max = -1はありえない。
可哀相なくらい頭が悪い。
946デフォルトの名無しさん:2011/07/19(火) 23:40:51.69
>>942
>C言語的にはfloatを使うのが正統です。

嘘ですねえ。
ISO/IEC 9899:1999 6.5.2.2.6
If the expression that denotes the called function has a type that does not include a
prototype, the integer promotions are performed on each argument, and arguments that
have type float are promoted to double.
具体的には printf() のような可変長引数の場合には float -> double の default argument promotions が適用されるんですね、C 言語的に。
これを見ても、普通は double を使うものだとわかりませんか?

なお、どこの馬の骨からわからないものを引用するくらいなら、ISO/IEC 9899 か JIS X 3010 から引っ張ってくることをお勧めします。
947デフォルトの名無しさん:2011/07/19(火) 23:41:21.89
>>945
横レスだがちゃんとコード読んだらわかったわ
948デフォルトの名無しさん:2011/07/19(火) 23:42:16.17
>>939
頭悪すぎてわからないようだから、これは教えてやる。
minを10000にしたのは質問者は確実にFLT_MAXを習っていないからだ。
maxが負になることは課題の制限からありえない。

でも、バカだから理解できないかもね。
949デフォルトの名無しさん:2011/07/19(火) 23:43:14.08
>>946
char も short も普通は使わないとかいいだすのか?
引っ込め自演クズ
950デフォルトの名無しさん:2011/07/19(火) 23:44:01.12
>>945
個々の問題をどうこういうのではなく、max/min の拾い出しに際して、不用意に初期値を決めうちすること自体が「浅はか」だと申し上げております。
今回に限って max = -1 がありえないことなど、どうでもいいことです。
951デフォルトの名無しさん:2011/07/19(火) 23:46:05.59
>>948
普通は、>>722 のように初期値をデータから拾ってくるものです。定石です。
952デフォルトの名無しさん:2011/07/19(火) 23:46:36.57
>>950
宿題スレで質問者が習ってないコードを回答しても意味がない。
だから、てめーはクズって言われるんだよ。隔離スレに引っ込んでろ。
953デフォルトの名無しさん:2011/07/19(火) 23:47:21.49
>>949
char や short は default argument promotions と何の関係があるのですか?
可能ならば、ISO/IEC 9899:1999 から該当箇所を引用して示してください。
954デフォルトの名無しさん:2011/07/19(火) 23:47:23.72
>>936
X if (strcmp(node, n) == 0)
O if (strcmp(node->name, n) == 0)
955デフォルトの名無しさん:2011/07/19(火) 23:48:41.50
>>951
>>722は質問者に却下されている。残念だったな。ww
956デフォルトの名無しさん:2011/07/19(火) 23:52:06.83
>>952
だから定石だといっているのですが‥‥‥、他の方のコードをお読みになったことがないのですか?
957デフォルトの名無しさん:2011/07/19(火) 23:53:38.66
>>946
floatを使うのは癖だ。お前のようなバカには一生無縁だから理解できない。
958デフォルトの名無しさん:2011/07/19(火) 23:53:55.95
>>955
質問者が却下したことと、max/min 拾い出しの定石とは関係ないのですが‥‥‥。
959デフォルトの名無しさん:2011/07/19(火) 23:54:59.11
>>954
ありがとうございます
コンパイルして起動させることができました
ただ、起動した後フリーズするのは何故でしょうか?
960デフォルトの名無しさん:2011/07/19(火) 23:55:05.30
>>957
癖、ですか。つまり考えなし、「私は馬鹿です。」ということですね。よく理解できました。
961デフォルトの名無しさん:2011/07/19(火) 23:55:47.04
>>960
その通りです。
あなたは馬鹿です。
962デフォルトの名無しさん:2011/07/19(火) 23:56:15.44
>>956
脳内定石振り回すのは隔離スレの中だけにしろ。
963デフォルトの名無しさん:2011/07/19(火) 23:57:58.35
>>960
救いようの無い馬鹿だなあ。隔離スレに引っ込んで出てくるな。カス。
964デフォルトの名無しさん:2011/07/20(水) 00:01:27.50
965デフォルトの名無しさん:2011/07/20(水) 00:02:46.64
>>962
あれ、私とは違う人 >>722 でさえも使っているんですよ。これを定石といわずしてなにを定石というのでしょうか?

>>961 >>963
言いたいことを全部吐き出すことができましたか?
966デフォルトの名無しさん:2011/07/20(水) 00:11:33.99
>>949
ちょっと訂正ね。

>char も short も普通は使わないとかいいだすのか?
そのとおりです。理由なくして char や short を使うことはありませんね。char や short を使うのは **それなりの** 理由があるときだと思います。
特に理由がなければ int を使います。それが C のやりかた。
967デフォルトの名無しさん:2011/07/20(水) 00:13:08.17
>>959をどなたかよろしくおねがいしますm(___)m
968デフォルトの名無しさん:2011/07/20(水) 00:22:28.12
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
目的:
@構造体やポインタを利用して、データ構造を設計することができる。
A構造体をreturn文で返却する関数を作ることができる。
Bポインタを扱うことができる。
問題文:
n個のデータを降順に並び変える関数を作成しなさい。
ただし、個数nを先に入力し、必要なメモリ領域を関数malloc()を
用いて確保すること。
すなわち、配列による宣言はせずに、ポインタで宣言する。
また、2つの変数の値を入れ換える関数swap()も作成すること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/21
[5] その他の制限:特になし
お手数ですが、よろしくおねがいします。
969 ◆QZaw55cn4c :2011/07/20(水) 00:31:52.47
970デフォルトの名無しさん:2011/07/20(水) 00:36:23.08
971デフォルトの名無しさん:2011/07/20(水) 00:39:26.63
>>969
void del_order_by_name(ORDER **node, char *name)
ではなく、
void del_order_by_name(ORDER *node, char *name)
としたいんですが、アドバイスをおねがいします
972 ◆QZaw55cn4c :2011/07/20(水) 00:54:40.76
973デフォルトの名無しさん:2011/07/20(水) 00:57:45.88
http://homepage1.nifty.com/eggs/narcis.html
自己愛性人格障害とはなにか

なんでも自分の思い通りになるという空想に耽ったりします。内容的には、自分の万能感を満たすような
ものになります。すべて自分にとって都合のいいように事が運んで、最後には自分が絶大な称賛を浴びると
いったようなものです。自分だけが特別に評価されて大抜擢され、とんとん拍子に出世するとか、もっと
空想性が進んで行くと、超能力的な力で現実を思い通りに動かすとか、あるいは過去にタイムスリップして、
時代差から来る優越感に浸るとか、いろいろなパターンがあります。たとえば自衛隊が関ケ原の決戦に参戦
したらどうなるかなどという空想は、圧倒的な文明の差による優越感に浸ることができます。

聞かれもしないのに、やたらと自分のことをしゃべりたがる人がいます。話が他へ移ろうとすると、強引に自分の
話に戻そうとします。話の内容は自慢話的なものばかりで、聞いている方はうんざりしてきます。他人にはあまり
関心がないので、相手がうんざりしていようとお構いなしです。

自分は特別な人間だ、パンピー(一般のピープル)とは違うんだという意識から、小市民的な生き方を軽蔑し、
そういう人達と一緒にされることを嫌います。裏付けとなるものがなにもないのに、一目置かれる存在であることに
非常にこだわります。
974 ◆QZaw55cn4c :2011/07/20(水) 01:06:56.71
975デフォルトの名無しさん:2011/07/20(水) 01:08:03.84
>>972
迅速な解答ありがとうございます!
すごく助かりました。
976 ◆QZaw55cn4c :2011/07/20(水) 01:16:20.36
>>973
素敵な自己紹介ありがとうございます。
977デフォルトの名無しさん:2011/07/20(水) 01:29:45.30
>>974

ORDER *del_order_by_name(ORDER *node, char *name) { 
     ↑

>>971が希望してんのは

void del_order_by_name(ORDER *node, char *name)

だからポインタが余計じゃね?
978デフォルトの名無しさん:2011/07/20(水) 01:33:10.01
>>977
んー、確かにその点で困ってしまっています。
リストに増減が発生する際には、二重ポインタを使うか、再帰にして呼び出し元にポインタを返すことしか思いつきませんでした。
実際、どうすればいいんでしょうね。
979デフォルトの名無しさん:2011/07/20(水) 01:36:14.73
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
目的:
@構造体やポインタを利用して、データ構造を設計することができる。
A構造体をreturn文で返却する関数を作ることができる。
Bポインタを扱うことができる。
問題文:
プロフィールを入れる構造体を定義し、
その構造体に値を入れる関数と、
メンバの値を表示する関数を作成しなさい。
ただし、呼び出し側では構造体の配列を宣言して、
複数人のプロフィールを入れた例を示しなさい。
プロフィールとする項目は自由に決めて良い。
ただし3つ以上の型を使用すること。
プロフィール例
氏名:char name[]
電話番号:char phone[]
血液型:char blood[]

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/21
[5] その他の制限:特になし
お手数ですが、よろしくお願いします。
980デフォルトの名無しさん:2011/07/20(水) 01:50:38.20
>>978はお手上げということだな?
981デフォルトの名無しさん:2011/07/20(水) 01:51:53.28
>>976
皮肉を言われてる事にも気づけない馬鹿な奴
982デフォルトの名無しさん:2011/07/20(水) 01:55:51.04
>>980
そうです。お手上げです。ちょっと創造がつきません。

>>981
いつもの自己愛なんぷら〜はもう飽きましたので、新しいネタで考えていただけないでしょうか。
983デフォルトの名無しさん:2011/07/20(水) 01:58:48.32
>>982
お前を楽しませるために書いてるわけじゃないから
ネタでもないから
お前が飽きようが関係無い
事実を突きつけるのみ
984デフォルトの名無しさん:2011/07/20(水) 02:01:04.82
>>982
出来ない癖に偉そうに「新しいネタで考えていただけないでしょうか?」とか馬鹿じゃねーの?
>>971はお前の宿題な
985デフォルトの名無しさん:2011/07/20(水) 02:07:24.79
時代遅れのPentiumIII850MHzノートで頑張ってくださいね〜
986デフォルトの名無しさん:2011/07/20(水) 02:08:23.18
>>965
てめーが>>722が以前に書いたのをぱくってるだけだろ。うんこソースで定石語るな。クズ。

>>966
バカめ。charやshortなどintより小さいサイズとfloatのようにintより大きいサイズとは前提が異なる。
常にメモリは必要最小限にすることが重要。したがって浮動小数点の推奨型はfloat。
987デフォルトの名無しさん:2011/07/20(水) 02:12:23.82
>>971
出来なくはないけど、課題で条件付けられてるんじゃなければお勧めしない。
それでもそうしたい?
988デフォルトの名無しさん:2011/07/20(水) 02:38:05.08
>>987
やってやればいいんじゃねーの?
減るもんじゃねぇし
989デフォルトの名無しさん:2011/07/20(水) 02:40:39.11
>>987
出来ないなら出来ないと言えよ
頭悪い癖に
990デフォルトの名無しさん:2011/07/20(水) 02:45:54.17
>>986
80x86 単体でエミュレートライブラリをリンクしなければならない環境ならともかく、
8087ndp の時代から double 単位で 64/80bit スタックレジスタにのっけることができるというのに、それでも 32bit float ですか。
pentium 以降、fadd/fsub/fmul/fdiv は、オペランドのサイズに関わらず(たしか)同クロックだというのに、それでも 32bit float ですか。
まあ x86 だけが世界ではないとは思いますが、>>946 で示したように、条件によっては float -> double の変換が無駄にかかるというのに、それでも float ですか。

>floatのようにintより大きいサイズ
ちなみに float と int は今は同じサイズ。念のため。
991デフォルトの名無しさん:2011/07/20(水) 02:45:57.61
できるんなら得意げに出すべき
992 ◆QZaw55cn4c :2011/07/20(水) 02:47:29.20
>>971
リストのトップを削除する場合だけ別に書いてもいいのなら。
http://codepad.org/imsXD8tD
993デフォルトの名無しさん:2011/07/20(水) 02:54:30.68
こんなチョロイ煽りで顔真っ赤にして怒るなよQさんww
994デフォルトの名無しさん:2011/07/20(水) 03:15:58.24
チョロQ並のチョロさだぜ
995デフォルトの名無しさん:2011/07/20(水) 05:29:36.02
>>926
技術計算コードを10年以上書いてきたけど float を使った事は一度も無いな
メモリ消費を意識しなければならなかった20〜30年前はどうか知らんけど
996デフォルトの名無しさん:2011/07/20(水) 05:38:09.21
>>978
先頭のノードはダミーで next しか有意ではないってお約束にするくらい?

すんごくダサいけど
997デフォルトの名無しさん:2011/07/20(水) 05:38:46.82
>数値演算やってると不要な処でdoubleは使わないんだよ。

本物の馬鹿だコイツ
998デフォルトの名無しさん:2011/07/20(水) 07:08:48.88
しかし、まあ、Cって複雑な言語だね。
999デフォルトの名無しさん:2011/07/20(水) 07:58:46.16
>>995
メモリ消費を意識しなくていい領域しか経験してないってことだな。
floatだけじゃなくて、doubleも使ったことが無いんだろ。ww
1000小倉優子 ◆YUKOH0W58Q :2011/07/20(水) 08:20:06.01
  ∧,,,∧ 
 (  ・∀・) 1000ならジュースでも飲むか
  (    ) 
  し─J 
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。