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

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

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

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

C/C++の宿題片付けます 140代目
http://hibari.2ch.net/test/read.cgi/tech/1284632294/
2デフォルトの名無しさん:2010/10/14(木) 01:48:47
前スレの991へ

int combi(int n, int k)
{
int answer, i, j;

if (i < 30) {
answer = 1;

これコンパイルしたら「初期化されてない i が使用されます」って警告されたぞ
確かにバグっていると思わないか?
3デフォルトの名無しさん:2010/10/14(木) 01:50:55
>>2
n < 30の間違いでした
すいません
4デフォルトの名無しさん:2010/10/14(木) 01:56:19
1: 1
2: 2
3: 3
4: 6

〜途中省略〜

31: 300540195
32: 601080390
33: 1166803110
34: -1961361076
35: 481209656
36: 962419312

こんな感じで i==34 になったらオーバーフローしてるな

続行するには何かキーを押してください . . .
5デフォルトの名無しさん:2010/10/14(木) 01:58:19
__int64使えばいいんじゃね?
6デフォルトの名無しさん:2010/10/14(木) 01:59:31
それ、33は合ってるし34の答えはオーバーフローしない値だし偶数の時は1つ前の値を2倍してるだけなのに
なぜ狂うんでしょうか
7デフォルトの名無しさん:2010/10/14(木) 02:01:27
intMaxが
2147483647
C(34,17)は
2333606220
だからこれでいいんじゃね
あと全部再帰で書いたほうがきれいだと思う。
8デフォルトの名無しさん:2010/10/14(木) 02:02:11
>>6
いや、オーバーフローする値だぞ
9デフォルトの名無しさん:2010/10/14(木) 02:03:52
これだと i == 66 まで行ける

long long combi(long long n, long long k)
{
long long answer, i, j;

if (n < 30) {
answer = 1;
for (i = n, j = 1; i >= n - k + 1; i--, j++) {
answer *= i;
answer /= j;
}
return answer;
} else if (n % 2) {
return combi(n - 1, (n - 1) / 2) / (n / 2 + 1) * n;
} else {
return combi(n - 1, (n - 1) / 2) * 2;
}
}

int main(void)
{
int i;

for (i = 1; i < 100; i++) {
printf("%d: %lld\n", i, combi(static_cast<long long>(i), static_cast<long long>(i / 2)));
}
return 0;
}
10デフォルトの名無しさん:2010/10/14(木) 02:05:00
>>9
>出力も%dのみでお願いします
11デフォルトの名無しさん:2010/10/14(木) 02:05:43
intしかだめらしいぞ
12デフォルトの名無しさん:2010/10/14(木) 02:06:57
なぬー多倍長ライブラリも使っちゃだめなのか
13デフォルトの名無しさん:2010/10/14(木) 02:07:33
14デフォルトの名無しさん:2010/10/14(木) 02:07:34
別にintがオーバーフローすればいいなら
もうこれでいいだろ
15デフォルトの名無しさん:2010/10/14(木) 02:09:19
>>8
そうでしたか
int型は2^32(?)までおkみたいな話を聞いたようなきがしてて
勘違いでした
16デフォルトの名無しさん:2010/10/14(木) 02:11:24
>>13
> int answer, i, j;

これは不要だね

どちらにしろ i == 33 までしか計算できないようだ
17デフォルトの名無しさん:2010/10/14(木) 02:11:51
カレンダー算出の課題まだー?
18デフォルトの名無しさん:2010/10/14(木) 02:14:26
>>15
2^31だろ

2^32まで行けるのはunsigned
19デフォルトの名無しさん:2010/10/14(木) 02:21:11
誰かカーマイケル数求めるプログラム書いてよ
20デフォルトの名無しさん:2010/10/14(木) 02:24:20
21デフォルトの名無しさん:2010/10/14(木) 02:25:55
>>15
符号無しで2^32 - 1までおk
22デフォルトの名無しさん:2010/10/14(木) 02:37:30
口頭で説明されたものを書くので分かりづらかったらごめんなさい
【質問テンプレ】
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):
5種類の通貨(a,b,c,d,e)が存在する
最初に幾らかのお金を渡されるそのお金はa,b,c,d,e以外にも
aとしてもbとしても使えるものbとしてもdとしても使えるものなどがある
そのお金を持って商品を買うが商品には特定の通貨しか使えない
ただし、a,bどちらでも払える商品やb,dどちらでも払える商品もある
それらの商品の合計が渡されるのでソレを手持ちのお金で変えるかどうかを答えよ
合計は配列p[15]として辞書順で与えられる(例えばaで払えるものp[0]bとcで払えるものはp[7])
ex)p={3,2,0,0,0,0,2,0,0,0,0,0,0,0,0}
だとa=3,ab=2,bc=2なので
手持ちが{5,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0}
a=5,b=2ならはらえる
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++2010
 [3.3] 言語: C++
[4] 期限: 来週の金曜まで
[5] その他の制限: 考え方だけ教えてもらえれば頑張ります。
23デフォルトの名無しさん:2010/10/14(木) 02:45:54
>>22
すごい読むのに苦労したw
えーとpと手持ちの額を受け取ってboolを返す関数を考えればいいのかな
あと配列の大きさ的にa,b,cで使えるお金とa,b,cでを使える商品はないんだよね?
なんか力づくでループ回せばイケそうだけど
24デフォルトの名無しさん:2010/10/14(木) 02:50:46
>>23
>すごい読むのに苦労したw
すんません;;pdfとか置いといてくれればいいんですがなぜか毎回口頭なんですよね

>えーとpと手持ちの額を受け取ってboolを返す関数を考えればいいのかな
>あと配列の大きさ的にa,b,cで使えるお金とa,b,cでを使える商品はないんだよね?
多分そうだと思います

>なんか力づくでループ回せばイケそうだけど
もうちょっとヒントくれませんか、力ずくでも何でも解きたいので
25デフォルトの名無しさん:2010/10/14(木) 05:14:31
辞書順の並びってループまわすのもやっかいだな
26デフォルトの名無しさん:2010/10/14(木) 05:39:45
あーなんかめんどくさそうだな
今必要十分条件べた書きしようとしたら多すぎて秋田
27デフォルトの名無しさん:2010/10/14(木) 07:38:10
完全数を求める課題もこいやー!
28デフォルトの名無しさん:2010/10/14(木) 11:37:23
>>22って
与えられた合計から払える手持ちの組み合わせを全て出せってことじゃなくて
合計と手持ちが与えられて
その手持ちで払いきれるかどうかを出せば良いんだよね
29デフォルトの名無しさん:2010/10/14(木) 11:41:36
>>22
a, ab, ac, ad, ae, b, bc, bd, be, c, cd, ce, d, de, e
なら bc は p[6] なんだが問題文の書き間違い?
30デフォルトの名無しさん:2010/10/14(木) 11:43:51
>>29
ex)を見ればp[6]のミスだってことはわかるだろ
31デフォルトの名無しさん:2010/10/14(木) 11:47:39
所持金が
{0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} ab=100

商品が
{0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0} bc=100

であるとき支払いは可能?不可能?
32デフォルトの名無しさん:2010/10/14(木) 11:50:17
可能だろ
33デフォルトの名無しさん:2010/10/14(木) 14:26:27
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
このビット演算子のプログラムが何をしているのか1行ごとにコメントをつけてください。
お願いします。

int main()
{
int i, d;
d=0;

while(1) {
printf("Input number ");
scanf("%d", &d);
if(d == 0){break;}
if(d > 8 || d < -8) printf("error\n");
else if(d > 0) i=i|1 << d - 1;
else i &= ~(1 << -d - 1);
printf("%d%d%d%d%d%d%d%d\n",i>> 7&1,i>> 6&1,i>> 5&1,i>> 4&1,i>> 3&1,i>> 2&1,i>> 1&1,i&1);
}

return 0;
}

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: C言語
[4] 期限:とくになし
[5] その他の制限:
34デフォルトの名無しさん:2010/10/14(木) 14:28:51
本当に宿題なのか
35デフォルトの名無しさん:2010/10/14(木) 14:29:19
断る。
36デフォルトの名無しさん:2010/10/14(木) 14:33:11
前スレの回答をそのまま提出したけど、説明してみろって言われて困ったってオチ?
37デフォルトの名無しさん:2010/10/14(木) 15:50:29
日の丸の国旗を表示するプログラムを教えてください。
38デフォルトの名無しさん:2010/10/14(木) 15:51:23
#include<stdio.h>

int main(void)
{
printf("日の丸の国旗");
return 0;
}
39デフォルトの名無しさん:2010/10/14(木) 15:59:36
>38
日の丸の画像です
40デフォルトの名無しさん:2010/10/14(木) 16:06:21
#include<stdio.h>

int main(void)
{
printf("日の丸の画像");
return 0;
}
41デフォルトの名無しさん:2010/10/14(木) 16:10:38
>>40
ちがいます
日の丸の絵を表示してほしいんです
42デフォルトの名無しさん:2010/10/14(木) 16:34:54
マルチかよ
43デフォルトの名無しさん:2010/10/14(木) 19:03:19
#include<stdio.h>

int main(void)
{
printf("日の丸の絵");
return 0;
}
44デフォルトの名無しさん:2010/10/14(木) 19:11:53
もういいです
あなたたちの国語力の無さには呆れてものが言えません
一生パソコンと戯れててください
45デフォルトの名無しさん:2010/10/14(木) 19:23:52
>>44
そもそもあなたに国語力がないから、スレチでこうなっていると気づけよ。
46デフォルトの名無しさん:2010/10/14(木) 19:28:39
#include<stdio.h>

int main(void)
{
printf("┌───┐\n│  ●  │\n└───┘");
return 0;
}

こういうことじゃね?
47デフォルトの名無しさん:2010/10/14(木) 20:18:11
>>44
環境は?
せめて Windows XP とか Max OS X とか X Window とかくらいはいってくれないと、プログラムの書きようもないですよ。
48デフォルトの名無しさん:2010/10/14(木) 20:28:54
printf("hinomaru.jpg");

って出来るとすばらしい。
49デフォルトの名無しさん:2010/10/14(木) 20:32:53
じゃあ、こうだ
ただしWindows専用

#include <stdio.h>
#include <stdlib.h>
int main ( void ){
system ( "MSPAINT.EXE hinomaru.jpg" ) ;
return 0 ;
}
50デフォルトの名無しさん:2010/10/14(木) 20:34:02
FORMAT.EXEの方がいいかも
51デフォルトの名無しさん:2010/10/14(木) 20:58:24
Windows限定、関連付け期待で
#include <stdio.h>
int main()
{
system("start hinomaru.jpg");
return 0;
}
52デフォルトの名無しさん:2010/10/14(木) 21:16:00
>>51
system は stdlib.h じゃなかったっけ。
53デフォルトの名無しさん:2010/10/14(木) 21:28:22
>>52
そうでした。
#include <stdio.h>
#include <stdlib.h> <-追加

int main()
{
system("start hinomaru.jpg");
return 0;
}
54デフォルトの名無しさん:2010/10/14(木) 23:50:09
>>33
変数 i が初期化されないで使われているけど、そもそもそのプログラムは正しいの?
d =0; じゃなくて i = 0; じゃないかな。
55デフォルトの名無しさん:2010/10/15(金) 00:35:38
前の所の477です。
遅くなってしまったんですが、
1 1 2 3 5… みたいな感じになって続くらしいんですが。
5655:2010/10/15(金) 00:36:59
フィボナッチ数列ってものらしいです。
57デフォルトの名無しさん:2010/10/15(金) 01:57:28
477 名前:デフォルトの名無しさん[] 投稿日:2010/09/29(水) 23:57:43
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): an=a[n-1]+a[n-2]で、nを与えた時a[n]を求める。Σ[n-2,i=1]aiとanの比較をせよ。Σ[n-1,i=1]ai^2とa[n-1]*anの比較をせよ
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語: C++
[4] 期限: 2010年10月1日まで
[5] その他の制限: なるべく難しくしないでお願いします。
#include<iostream>
using namespace std;

int main() {
で始めてください。

そして、
rerurn 0;
}
を入れてください
58 ◆QZaw55cn4c :2010/10/15(金) 02:07:36
59デフォルトの名無しさん:2010/10/15(金) 02:23:48
無駄な計算多すぎで笑えるw
60デフォルトの名無しさん:2010/10/15(金) 02:30:39
一つのnだけじゃ比較の意味が読み取れないような結果が問題ないと思えるのか?
明確に間違ってる箇所があるぞw
61デフォルトの名無しさん:2010/10/15(金) 02:39:15
>>22 を解こうとしたら計算が終わりそうにない
(商品の価格がものすごく安い場合なら解けないことも無いけど)

解けた人はどうやって解いた?
62デフォルトの名無しさん:2010/10/15(金) 02:50:55
>>57
#include <iostream>
using namespace std;
int main()
{
int *a, i, n, s;

cin >> n;

a = new int[n];

for(a[0] = a[1] = 1, i = 2; i < n; i++) a[i] = a[i - 1] + a[i - 2];

for(i = s = 0; i < n - 2; i++) s += a[i];
cout << "Σ[" << n - 2 << ",i = 1]ai = " << s << ", a[" << n << "] = " << a[n - 1] << endl;

for(i = s = 0; i < n - 1; i++) s += a[i] * a[i];
cout << "Σ[" << n - 1<< ",i = 1]ai^2 = " << s << ", a[" << n - 1 << "] * a[" << n << "] = " << a[n - 1] * a[n - 2] << endl;

delete [] a;
}
63デフォルトの名無しさん:2010/10/15(金) 02:57:28
>>61
商品の価格?
個数じゃなくて?
64デフォルトの名無しさん:2010/10/15(金) 06:04:52
>>60
詳しくお願いいたします。
65デフォルトの名無しさん:2010/10/15(金) 06:07:18
66デフォルトの名無しさん:2010/10/15(金) 06:09:43
a[n] - Σ[n-2,i=1]ai = a[2]
67デフォルトの名無しさん:2010/10/15(金) 06:10:38
68デフォルトの名無しさん:2010/10/15(金) 06:12:21
>>65
0からにしようが、1からにしようが>>58がゴミ以下なのはかわらないんだけどw
69 ◆QZaw55cn4c :2010/10/15(金) 06:23:38
>>60
ご指摘感謝。なるほどね。
>>57
修正しました。s1+1 = s2, s3==s4 がわかるようにしました。
http://codepad.org/Y41chjc4
70デフォルトの名無しさん:2010/10/15(金) 06:26:32
フィボナッチに再帰使ってる時点で死ねって感じw
71デフォルトの名無しさん:2010/10/15(金) 06:30:15
確かに、ある値以上になると急激に遅くなるしな・・・
72デフォルトの名無しさん:2010/10/15(金) 06:45:34
>>69
値が0だから問題ないとも言えますが、fibo(0)を足すのは問題の指定からはずれます
73デフォルトの名無しさん:2010/10/15(金) 06:46:01
[1] 授業単元:C言語基礎実習
[2] 問題文(含コード&リンク):0未満の数が入力されるまで
入力を求め、その入力した回数と入力した数値の合計値を表示するプログラムを作成しなさい。
なお、0未満の数は回数と合計値に含めないものとする。
[3] 環境
 [3.1] OS:Windows Vista Basic 32bit
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月18日正午まで
[5] その他の制限:特にありません
74デフォルトの名無しさん:2010/10/15(金) 06:46:51
カレンダー出力、リストの問題こいやー
7573:2010/10/15(金) 06:47:12
訂正です。0未満だけではなく1000以上も範囲外です
76デフォルトの名無しさん:2010/10/15(金) 06:51:49
#include <stdio.h>

int main(void)
{
int i, sum, n;

for(i = sum = 0; ; i++) {
scanf("%d", &n);
if(n < 0 || 1000 <= n) break;
sum += n;
}

printf("入力した回数:%d 合計値%d\n", i, sum);

return 0;
}
77デフォルトの名無しさん:2010/10/15(金) 06:56:16
>>72
ご指摘感謝いたします。
>>57
たびたびの修正ですいません。
http://codepad.org/baDswrO5
78デフォルトの名無しさん:2010/10/15(金) 07:04:07
>>76
ありがとうございます。早いですね。
79デフォルトの名無しさん:2010/10/15(金) 07:12:40
[1] 授業単元:C言語基礎実習
[2] 問題文(含コード&リンク):入力された数値を逆順に表示せよ。
なお、この動作は0未満の値が入力されるまで 繰り返すものとする。

[3] 環境
 [3.1] OS:Windows Vista Basic 32bit
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月18日正午まで
[5] その他の制限:特にありません
80 ◆QZaw55cn4c :2010/10/15(金) 07:36:30
8178:2010/10/15(金) 08:22:47
>>80
ありがとうございます。
8281:2010/10/15(金) 08:32:26
名前間違えました。
78ではなく79です。
83デフォルトの名無しさん:2010/10/15(金) 08:46:26
int main() 笑
84デフォルトの名無しさん:2010/10/15(金) 12:22:21
>>83
何度も繰り返して申し上げておりますが、int main() { ... } はISO/IEC 9899:1999 に適合しています。
85デフォルトの名無しさん:2010/10/15(金) 12:46:24
void main(void)
86デフォルトの名無しさん:2010/10/15(金) 22:33:23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
例の関数int strlength(char s[])を、文字数を返すだけでなく、文字列の
先頭がアルファベットの小文字の場合は大文字に変更して返すように変更せよ。
ヒント:以下の2行をどこかに書き加える。
if ('a' <= s[0] && s[0] <= 'z')
s[0] = s[0] + 'A' - 'a';
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年10月18日まで

よろしくお願いします。
87デフォルトの名無しさん:2010/10/15(金) 22:35:20
>>86の例

#include <stdio.h>
#define SIZE 10

int strlength( char s[] )
{
int len = 0;
while( s[len] != '\0' )
len++;
return len;
}

int main(void)
{
char str[SIZE];

printf("%d文字以下の文字列を入力してください: ", SIZE-1); /* 入力 */
scanf("%s", str); /* 入力 */

printf("入力された文字列: %s\n", str);
printf("文字列の長さは%dです。 \n", strlength( str )); /* 関数の呼び出し */
}
88デフォルトの名無しさん:2010/10/15(金) 22:40:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
>>87において、main関数中の/* 入力 */とコメントした2行を関数として
独立させたvoid strinput( char *s )を作成して、main関数から呼び出すように変更せよ。
アドレス渡しとなっていることを確認せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年10月18日まで

よろしくお願いします。
8955:2010/10/15(金) 22:49:01
>>77
2,0,1,1,1
って最初の所で出てるんですが、これって、
1,1,2,3,5って感じになるんじゃないんですか?
2,0の次は、2と0と足した2なはずですよね?
90デフォルトの名無しさん:2010/10/15(金) 23:02:06
>>84 そういう意味ではないんだが?しかもC言語における
ISOの文章を理解していないのがバレてますよ?w
91デフォルトの名無しさん:2010/10/15(金) 23:03:51
>>80
#include <stdio.h>
int main() 笑
92デフォルトの名無しさん:2010/10/15(金) 23:04:58
voin maid(voin)
93デフォルトの名無しさん:2010/10/15(金) 23:07:09
素直に吐いちまえよ、面倒くさいからvoidを忘れちゃったって。
voidさん、ごめんなさいって。
94デフォルトの名無しさん:2010/10/15(金) 23:14:11
人間、正直が一番だぜ?自分の不手際を必死に訴えても認められない。
まぁ、独自の環境ならISO準拠でなくても良いのに、ISO準拠でもないことを
無理やり準拠と言うのは認められないぜ?いつお前が基準になったんだって?
95デフォルトの名無しさん:2010/10/15(金) 23:38:16
>>86
#include <stdio.h>
#include <string.h>

int strlength( char s[] )
{
if ('a' <= s[0] && s[0] <= 'z')
s[0] = s[0] + 'A' - 'a';

return (int)strlen(s);
}
96デフォルトの名無しさん:2010/10/15(金) 23:39:47
int main() = int main(...)
こう書けば >>84 みたいなのでもわかるんでない?
97デフォルトの名無しさん:2010/10/15(金) 23:52:27
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
この場合のお前らの解釈はどうなん?
俺的には
Linuxのgcc(バージョン?)のCでお願いと解釈で
GCCの独自拡張も使ってOKと判断(つまりISOじゃなくGCCのCでと)
で、Linux、コンパイラ等の指定無で言語CだけならISOのCでと判断
98デフォルトの名無しさん:2010/10/15(金) 23:58:37
ここで質問するような輩にそんな差異が求められる宿題が出るわけなかろう
Cと書かれてれば入門書にでてくるような初歩の標準Cでいいだろう
99デフォルトの名無しさん:2010/10/15(金) 23:59:09
>>97
GCC拡張を使わなくても書ける問題がほとんどだから、
大抵ISO準拠になるんじゃないかな。
100デフォルトの名無しさん:2010/10/16(土) 01:56:52
>>84の言うようにC99ならint main()でもいいだろうが
あえてそうする意味がわからん
101デフォルトの名無しさん:2010/10/16(土) 02:10:18
livionのポイントシステムって完全自作?
102デフォルトの名無しさん:2010/10/16(土) 02:11:38
誤爆です
103デフォルトの名無しさん:2010/10/16(土) 02:12:32
引っ込みがつかなくなってC99ってことにして押し通してるだけだろw
104デフォルトの名無しさん:2010/10/16(土) 02:14:42
無駄な知識を披露するためだけに特殊なことをしたり
他人の回答に難癖つけたりするのは良くない癖だね
誰とは言わんが
105デフォルトの名無しさん:2010/10/16(土) 02:24:05
ほんと、まともに反論しないint main() 笑 厨は必死すぎ。
ISOの文章を読んでないのがバレバレ。誰とは言わないが。
106デフォルトの名無しさん:2010/10/16(土) 03:23:31
あれだけ標準スタイルでは、独自の環境ではそれに限らず
と補足してるのに、自分は標準スタイルに従っていると
問題は無いとか言う奴は、やっぱり物事の基準、基本、根本が
分かってないと思う。そんな考えだから通用しないんだよ、世の中では。
世の中ね、自分が思っている程、単純じゃないんだわ。
自分がそれを求めていたとしても、他人が何をどう求めているか?
まで読めないようじゃ、客相手の商売は出来んよ。
107デフォルトの名無しさん:2010/10/16(土) 04:16:05
>>57
an[3] = 34,
an[2] = 33,
an[1] = 1;
an[3] = 34,
an[2] = 32,
an[1] = 2;
......
an > 0 であるとしてもa[4]は
35から67までの33通り考えられる
108デフォルトの名無しさん:2010/10/16(土) 04:18:27
ごめん。 a[4] ではなくて an[4]
109デフォルトの名無しさん:2010/10/16(土) 05:28:46
何を言ってるのかわからない
110デフォルトの名無しさん:2010/10/16(土) 07:33:43
>>109
an[0]から始めなかったのはまずかった。
an[0] = 0,an[1] = 1,の前提が
ないと不定になるのではないかと。
111デフォルトの名無しさん:2010/10/16(土) 07:36:10
112デフォルトの名無しさん:2010/10/16(土) 11:11:15
int main()
main()
int main(void)
void main()


どれが正しいんだよ
113デフォルトの名無しさん:2010/10/16(土) 11:12:30
黙れ乞食
114デフォルトの名無しさん:2010/10/16(土) 11:19:18
>>107
a[3]の34ってどっからでてきたの?
115デフォルトの名無しさん:2010/10/16(土) 11:22:24
>>114
1,1,2,3,5,8,13,21,34
116デフォルトの名無しさん:2010/10/16(土) 11:25:08
34 の 前が 21 13 であると
というのは思い込みではないか? という意味で。
117デフォルトの名無しさん:2010/10/16(土) 11:27:35
34 を an[8] にしなかったのは失敗でしたw
118デフォルトの名無しさん:2010/10/16(土) 11:30:32
>>117
an[8] にすると逆にフィボナッチ数列に限定されるのではないかな。
119デフォルトの名無しさん:2010/10/16(土) 11:31:49
a[1]とa[2]が固定されてないのが問題だって言ってるのに、
なんでa[3]が固定されてるの?
120デフォルトの名無しさん:2010/10/16(土) 11:37:55
an[1],an[2],an[3] や an[8]の問題ではなくて、
an[n]=34,an[n-1]=33,an[n-2]=1 ;
an[n]=34,an[n-1]=32,an[n-2]=2 ;
...
とすればよかったということですね。
121デフォルトの名無しさん:2010/10/16(土) 11:42:30
なんでそんなに34に拘るの?
122 ◆QZaw55cn4c :2010/10/16(土) 12:29:44
>>89
>>77 の結果は、n = 2 から表示しており、各列の
一つめは n
以下、Σai, an, Σ(ai^2), a(n-1)*a(n)
となっています。
三つ目の数字がフィボナッチ数列になってることを確認いただけると考えております。
123デフォルトの名無しさん:2010/10/16(土) 12:46:44
>>105
C99 では、main 関数の書き方について

int main(void)
int main(int argc, char *argv[]) もしくはこれと同義の定義
処理系依存の main 定義(コンパイラ実装依存)

って書いてあるだけだよ。
一方 int main() は、>>96 の言う通り int main(...) 。
つまり、上記定義からコンパイラが許容しているだけで、
C99 準拠のコンパイラで必ずコンパイルできる保証はない。

C++ では確かに int main() は int main(void) と同義だけど、
これと混同してない?
124デフォルトの名無しさん:2010/10/16(土) 12:53:35
>>123
いいえ。

ISO/IEC 9899:1999 5.1.2.2.1 の "or equivalent" という文言に ISO/IEC 9899:1999 の 6.7.5.3 14 を適用すれば、
int main() { ... }
が C99 に準拠していることがわかります。
125デフォルトの名無しさん:2010/10/16(土) 12:57:31
日本語すらまともに読めないのに英語がちゃんと読めてるとは思えないw
126デフォルトの名無しさん:2010/10/16(土) 12:57:50
>>123
失礼。かきなおします。

「これと同義」というものの対象は int main(int, char *[]) だけではなくて int main(void) もふくまれているのではないでしょうか?
原文のコンマの位置からそう考えられるのですが。
127デフォルトの名無しさん:2010/10/16(土) 13:17:22
>>126
だから、int main(void) != int main() って書いたでしょ。
下のプログラムをコンパイルしてみな。

void foo() {
}
void bar(void) {
}
int main(int argc, char **argv) {
foo(0);
bar(0);
}

「C」のコンパイラなら、main 関数の foo は通るけど、bar は通らないから。
「C++」のコンパイラなら、foo も通らないけど。
128デフォルトの名無しさん:2010/10/16(土) 13:20:55
"or equivalent"の解釈がおかしいw
int main(int argc, char *argv[])とint main()はequivalentじゃないしw
129デフォルトの名無しさん:2010/10/16(土) 13:21:41
確認しないで書き込んだから、main の最後に
return 0;
を書き忘れたのは謝ります。
130デフォルトの名無しさん:2010/10/16(土) 13:29:30
>>127
それはコンパイラが C99 になっていないようですね。コンパイラの種類を教えてください。

ISO/IEC 9899:1999 6.7.5.3 14 により、
関数定義の一部である宣言で引数が空リストの場合は、引数は void と同じとされています。ご確認ください。
main() が関数定義の一部となっている(普通そうですね。)かぎり、
int main() と int main(void) は同じだし、普通の関数でも
int func() {...} と int func(void) {...} は C99 では同じです。
131デフォルトの名無しさん:2010/10/16(土) 13:35:39
>>128
では、http://www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3010
でご確認を。

5.1.2.2.1 で
一 返却値の型 int を持ち駆り引数を持たない関数
一 二つの仮引数を持つ関数(以下略)
一 上に掲げた二つの方式のいずれかと等価な方法

と書かれています。int main() は int main(void) と等価ですから(ISO/IEC 9899:1999 6.7.5.3.14) int main() は C99 に準拠しています。
132デフォルトの名無しさん:2010/10/16(土) 13:39:08
>>129
int main() の問題は瑣末なことだとは思いますが、それでも議論に参加くださり感謝しております。
133デフォルトの名無しさん:2010/10/16(土) 14:10:32
必死だな
134デフォルトの名無しさん:2010/10/16(土) 14:12:19
C99は明確な指定がない限り使うべきじゃないと思うけどね
135デフォルトの名無しさん:2010/10/16(土) 14:37:01
C89 ならばなおのこと、仮引数を省略した int func() { ... ] は合法だと思うのですが。
136デフォルトの名無しさん:2010/10/16(土) 16:50:14
このスレの環境指定無の時の標準
C言語はC99
C++言語はC++0x + boostライブラリ
のこと
そして、言語C++指定の場合はC言語ぽさを極力排除する
(STL,Boost,C++で追加された機能を極力使う)
覚えとくように
137デフォルトの名無しさん:2010/10/16(土) 16:52:41
>>136
C++0x や boost の規格を確認したいので、ISO のポインタを教えてください。
138デフォルトの名無しさん:2010/10/16(土) 16:53:40
break文てループをひとつ抜けるんですよね

for () {
if () {
if () {
break;
}
a
}
b
}
c

この時breakした後ってbの位置に行くんですよね
139デフォルトの名無しさん:2010/10/16(土) 16:54:29
間違いました
cですよね
140デフォルトの名無しさん:2010/10/16(土) 17:17:28
>136
C89にこだわってはダメなのか
C++が0xなんだから、Cも1xでいいじゃないかと思ったり

boostのバージョンはいくつだよと思ったり
141デフォルトの名無しさん:2010/10/16(土) 17:25:29
>>139
そうです。if のネストは関係なく、for() の構文を抜けたところにとびます。
142デフォルトの名無しさん:2010/10/16(土) 17:45:50
いや>>136はどう見ても釣りだろう
143デフォルトの名無しさん:2010/10/16(土) 18:31:25
>>93
ヘミ猫 void に謝るのか?それはゴメンだ。
14455:2010/10/16(土) 19:01:54
>>122
あ、縦に見るんですね。
どうして、1つ目は2から始まってるんですか?
あと、2つ目って0,1,2,4,7ときてますが、どういう規則でしょうか?
14555:2010/10/16(土) 19:10:55
>>122
すみません。あと、4つ目と5つ目って全く同じ結果になってるんですが、2ついるんでしょうか
146 ◆QZaw55cn4c :2010/10/16(土) 19:21:37
>>57
>>144
>どうして、1つ目は2から始まってるんですか?
問題では、Σ[n-2,i=1]ai を求めることになっているので、n = 0, n = 1 は省きました。
>0,1,2,4,7ときてますが、どういう規則でしょうか?
わかりません。計算してみただけです。
>4つ目と5つ目って全く同じ結果になってるんですが、2ついるんでしょうか
二つの計算方法はそれぞれ違います。同一の値になった理由はわかりません。

14755:2010/10/16(土) 19:23:16
>>146
ありがとうございました。
148デフォルトの名無しさん:2010/10/16(土) 20:22:58
この時代になってもまだ int main() 笑
149デフォルトの名無しさん:2010/10/16(土) 20:38:29
フィボナッチなんだから当たり前w
a[n-1] * a[n] = a[n-1] * (a[n-1] + a[n-2])
= a[n-1]^2 + a[n-1]*a[n-2]
= a[n-1]^2 + a[n-2]^2 + ...+ a[1][1] + a[1][0]
= Σ[n-1,i=1]ai^2 + 0
= Σ[n-1,i=1]ai^2
150デフォルトの名無しさん:2010/10/16(土) 21:14:01
a[n] が a[n-1] + a[n-2] だからな・・・
式の変形で混乱したか?
151まったくの初心者:2010/10/16(土) 22:17:19
次のような宿題が出たのですが、まったく分かりません。
ぜひ教えてください。お願いします。

• void concat(struct node *p, struct node *q)
ノード*p以降のリストの後に,ノード*q以降のリストを連結
する関数

• int length(struct node *p)
ノード*p以降のリストの長さを返す関数
152デフォルトの名無しさん:2010/10/16(土) 22:19:18
>>148
ならこの時代ならどうするというのですか?
153デフォルトの名無しさん:2010/10/16(土) 22:31:58
>>151
void concat(struct node *p, struct node *q)
{
if( !p || !q ) return;
while( p->next ) p = p->next;
p->next = q;
}
int length(struct node *p)
{
int ret = 1;
if( !p ) return 0;
while( p->next ) ret++;
return ret;
}

struct node が示されてないから想像で書いてみた
 
154まったくの初心者:2010/10/16(土) 22:50:18
>>153
ありがとうございます。
あとすいませんがこれも分からないので教えてください。

int biesearch(int x, int v[], int n)
{
int p, q, m;
p = 0;
q = n - 1;
while(p <= q)[
m = (p + q)/2;
if(x < v[m])
q = m - 1;
else if(x > v[m])
p = m + 1;
else
return m;
}
return -1;
}

これをループを使用せず、関数の再帰呼び出しを使い、また外部変数
での値の受け渡しをしないという条件で作りなおさなければいけません。
155デフォルトの名無しさん:2010/10/16(土) 22:57:45
>>152
>>148じゃないが、この時代のC++では
static void Main()
になっている。
156 ◆QZaw55cn4c :2010/10/16(土) 22:59:51
>>151
http://codepad.org/osqIJ92M
ひととおり組んでみました。
この中の concat() と length() をつかえばいいでしょう。
157デフォルトの名無しさん:2010/10/16(土) 23:00:42
>>155
それは C#では?
158デフォルトの名無しさん:2010/10/16(土) 23:02:49
あるいは java か‥‥これは String[] が引数ですね。まあ、C# も Java も今の時代の c++ といわれればそうなのかもしれませんね。
159デフォルトの名無しさん:2010/10/16(土) 23:05:15
>>130
関数に引数がないということと、
関数呼び出し時に引数の型や数のチェックが行われるかどうかは別だよ。

foo() は、Declarators の Syntax から空の identifier-list を持つ関数と解釈される。
この場合は、関数呼び出し時に仮引数と実引数の数が一致しない場合は呼び出し自体は有効だが、動作不定。
一方、foo(void) は、void が declaration-specifiers となる関数と解釈される。
この場合は、関数呼び出し時に厳密に引数の型や数がチェックされる。
よって、>>127 のコンパイラは正しく動作しているし、foo() != foo(void)。
main の件もスタートアップルーチンからの呼び出しだから、
型や数のチェックが行われていないだけじゃないかな。
だから、スタートアップルーチンから引数を渡されたら動作不定でしょ。
160デフォルトの名無しさん:2010/10/16(土) 23:15:12
>156
うーん、あれだな

連結(concat)した後にqの長さはどうするべきか
a) p以降のどっかのノードを指しているのでそのまま放置
b) 連結されたんだからqはNULLにすべきで長さは0

全削除(delete)した後にqを利用するとどうなる
a) NULLアクセスを許すので落ちる
b) qは連結させたときにNULLになっているので正常終了

両方b)になってほしい気もしないでない

あああああ、明日ネットワークあるのに
161デフォルトの名無しさん:2010/10/16(土) 23:20:30
>>159
C99では、
ISO/IEC 9899:1999 6.7.5.3 14
An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters. The empty list in a function declarator that is not part of a
definition of that function specifies that no information about the number or types of the
parameters is suppllied
という風に、関数の定義を伴うときの宣言と、関数定義を伴わないときの宣言で、扱いが違います。
今は int main() { ... } がC99 に準拠しているかどうかが問題になっていますので、
関数定義を伴うときの宣言について考えると、この場合は int func(void) と int func() はまったく同じ no parameters の意味になっています。
>>127 の foo(), bar(void) はどちらも関数の定義を伴う関数の宣言ですから、C99 で考える限り foo() は foo(void) と一緒です。
162デフォルトの名無しさん:2010/10/16(土) 23:23:16
>>160
たしかに concat(p, q) としたあとの q の扱いは問題ですね。
void concat(struct node **p, struct node **q) だったら、もしかするとその点もうまく書けるのかもしれませんが、どうなるのでしょう。
163デフォルトの名無しさん:2010/10/16(土) 23:23:42
>>160
普通の感覚だと、b) もおかしい。
concat は、p の最後に q の内容がコピーで追加され、q 自体はコピー元のオリジナルのまま。
p が delete されてもオリジナルの q は変化しない。
164デフォルトの名無しさん:2010/10/16(土) 23:38:11
<160
>162
**で書けますが、簡潔さに欠けるので、僕ならさらに構造体で覆うようにします

>163
説明が悪かったのかな
現状はa)なので、b)のようにした方が素直な設計でより安全だよねって
しかし、今さら設計変えるの大変(になるかもしれない)だから妥協できるところは妥協してもいいよねと
現状のまま、安全にするなら
concat p, q
q = nil
delete p
concatしたらnilってもう使うなで済む
165デフォルトの名無しさん:2010/10/16(土) 23:40:35
>>161
>>159 はコンパイル時に呼び出し側での引数チェックがされるかどうかの話をしているのに、
何故 no parameters にこだわってるの?
166デフォルトの名無しさん:2010/10/16(土) 23:43:14
>>164
>>163 が正しいだろ。
そこに書いてあることを実現するためには、
struct node の double pointer が必要なので、
concat などの引数リストが変わるけどいいの。
167デフォルトの名無しさん:2010/10/16(土) 23:48:55
>>165
関数定義を伴う関数宣言である以上 >>127 の foo() の場合であっても foo(void) になります。
>>127 の場合 foo() イコール foo(void) です。
コンパイル時に引数のチェックを行って、エラーとするコンパイラがあってもおかしくないと思います。
168デフォルトの名無しさん:2010/10/16(土) 23:54:28
>>167
コンパイラがあってもおかしくないって、それって「実装依存」ってこと?
もしくは、C99完全準拠のコンパイラを持ってないので確認できないということ?
君の解釈どおりなら、C99を満たすコンパイラはすべてエラーと判定しないと矛盾じゃない?
169デフォルトの名無しさん:2010/10/16(土) 23:58:23
>>165
失礼しました。>>167 は取り消します。
>>165 の事実を調べたいと思いますので、もしよければ C99 の該当場所を教えてください。
170153:2010/10/17(日) 00:01:46
>>154
>>153 で正しいのか?node が双方向リンクだったりはしないのか?まぁ知らんけど

>>154 はバイナリサーチだが、再帰で書くためには関数のインターフェイスを変える必要が有る
よって、再帰用に下請け関数を書いて対応した

int BSFunc( int x, int v[], int b, int e )
{
int m;
if( b == e ) {
if( x == v[b] ) return b;
else return -1;
}
m = ( b + e ) / 2;
if( x == v[m] ) return m;
if( x < v[m] )
return BSFunc( x, v, b, m - 1 );
else
return BSFunc( x, v, m + 1, e );
}
int biesearch(int x, int v[], int n) 
{
if( !v || n <= 0 ) return -1;
return BSFunc( x, v, 0, n-1 );
}
 
171まったくの初心者:2010/10/17(日) 00:19:21
151で質問した次の質問

• void concat(struct node *p, struct node *q)
ノード*p以降のリストの後に,ノード*q以降のリストを連結
する関数

• int length(struct node *p)
ノード*p以降のリストの長さを返す関数

できたらこれらをそれぞれ別々に書いてくれるとうれしいです。

172まったくの初心者:2010/10/17(日) 00:20:54
154の問題ですができたら実行できるように
mainの中身もお願いします。
173デフォルトの名無しさん:2010/10/17(日) 00:37:19
>>152
最近、出版された書物を見ても分かる通り
統一され始めているよ。今時void mainは書かれてないね。
174デフォルトの名無しさん:2010/10/17(日) 01:01:20
>>172
#include <stdio.h>

>> ここに >>170 を差し込め

int main( void )
{
int x, n, ret;
int v[] = { 1, 3, 4, 8, 11, 13, 16, 22 };   // 昇順になってればどんな数値が入っていても何個要素が有っても良い

n = sizeof( v ) / sizeof ( int );
printf( "検索対象の数字を入力:" );
scanf( "%d", &x );
ret = biesearch( x, v, n );
if( ret < 0 ) printf( "入力された数字はリストに有りません\n" );
else printf( "入力された数字はリストの %d 番目に有ります\n", ret + 1 );
return 0;
}

動作確認してないよ
しかし、main() くらい自分で書けんで大丈夫か?
175デフォルトの名無しさん:2010/10/17(日) 01:45:13
>>169
そのものズバリはまだ見つかってないけど、6.7.6 3 の (f) と (g) の記述で
with no parameter "specification" と、with no parameters
という違いはあるね。
specification なしの場合は 6.5.2.2 6 に該当するのかな。
英語苦手で正しく読み取れてないかもだが。
17655:2010/10/17(日) 02:23:51
>>149
ありがとうございました。
177まったくの初心者:2010/10/17(日) 19:35:31
>>174
実行してみたのですが、リストに検索する数字がなかった場合ー1を返さなけれ
ばいけないのですが、−1と出ません。
どこをどのように変えればいいですか?
178174:2010/10/17(日) 20:11:32
>>177
バグってるかと思って動作確認しちまったじゃねぇか...

そこまでレベル低いと相手する気が失せるわ、ソース読め
179デフォルトの名無しさん:2010/10/17(日) 20:13:24
>>170
「再帰で書くためには関数のインターフェイスを変える必要が有る 」は嘘だよ。
x が見つけたい値、v が要素のリストの先頭、n が要素数なんだから、
v と n を再起呼び出しのときに適切な値に変えるだけじゃない?
180デフォルトの名無しさん:2010/10/17(日) 20:30:56
int biesearch(int x, int v[], int n)
{
int c, ret;

if(n<0) return -1;

c=n/2;
if(v[c]==x) return c;
if(v[c]<x)
{
ret=biesearch(x, &v[c+1], n-(c+1));
if(ret>=0) ret+=c+1;
}
else
{
ret=biesearch(x, &v[0], c-1);
}
return ret;
}
181デフォルトの名無しさん:2010/10/17(日) 20:31:03
>>178
>>177はレベルをはるかに超えるレベルを扱っているって感じだね
printfの簡単な使い方すら分らないのにバイナリサーチや再帰って凄いな

>>179
言葉だとどうすべきと言っているのかよく分らん
コードをさらしたほうが分りやすいと思う
182デフォルトの名無しさん:2010/10/17(日) 20:36:59
>>180 の訂正
int biesearch(int x, int v[], int n)
{
int c, ret;

if(n<=0) return -1;

c=n/2;
if(v[c]==x) return c;
if(v[c]<x)
{
ret=biesearch(x, &v[c+1], n-(c+1));
if(ret>=0) ret+=c+1;
}
else
{
ret=biesearch(x, &v[0], c);
}
return ret;
}
183デフォルトの名無しさん:2010/10/17(日) 20:37:12
>>181
残念。分かる人いたね。
自分のレベルの低さを露呈したかったの?
184デフォルトの名無しさん:2010/10/17(日) 20:56:04
>>183
おれ、>>154のコードだけではバイナリサーチってのも分らんかったよ
関数名biesearchでバイナリサーチのコード分った、orz
コード作成じゃなく示されたコードからアルゴリズム答えよとかの宿題出ると面白いかも
185デフォルトの名無しさん:2010/10/17(日) 20:58:30
>>179
確かにそっちの方がエレガントだな、v のオフセットを変更するアイディアが浮かばんかったよ

でもね、戻り値のオフセット加算の分遅くなるんじゃね....と負け惜しみを言ってみる
186デフォルトの名無しさん:2010/10/17(日) 21:08:17
>>181
単に >>177 がサボりすぎて何も覚えて無いだけだと思うよ
大学で単位の為だけに履修してるなら良いけど、専門学校とかだったら大変だ
こんなのがプログラマとして世に出たらどうなる事か....
187デフォルトの名無しさん:2010/10/17(日) 21:47:21
新人研修でちゃんとやるから問題ない
やらないとこはブラック
188デフォルトの名無しさん:2010/10/17(日) 21:51:22
できないやつはどこにでもいる
189デフォルトの名無しさん:2010/10/17(日) 21:52:30
新人研修でやらないとこはブラックって言ってるけど
それがブラックの定義ならブラックのほうが企業数遥かに多いよな
190まったくの初心者:2010/10/17(日) 22:14:53
次のプログラムを作ってください。
お願いします。
• int length(struct node *p)
ノード*p以降のリストの長さを返す関数
191デフォルトの名無しさん:2010/10/17(日) 22:22:45
int len = 0;
struct node *temp = p;
while(temp!=NULL){
  len++;
  temp = temp->next;
}
return len;
192デフォルトの名無しさん:2010/10/17(日) 22:27:46
次のもお願いします
• void concat(struct node *p, struct node *q)
ノード*p以降のリストの後に,ノード*q以降のリストを連結
する関数
193デフォルトの名無しさん:2010/10/17(日) 22:31:31
struct node *temp = p;
while(temp->next != NULL){
  temp = temp->next;
}
temp->next = q;
194デフォルトの名無しさん:2010/10/17(日) 22:31:53
麻呂の肛門、封鎖されました!クソースが漏れません ><;
195デフォルトの名無しさん:2010/10/17(日) 23:02:13
>>185
そもそもループのプログラムを再帰にしろって言ってる時点で、
プログラムの実行速度遅くなるんだから、問題ないでしょ。
196デフォルトの名無しさん:2010/10/17(日) 23:03:34
なんか教科書に乗ってる感じじゃないのが解きたいのー
197デフォルトの名無しさん:2010/10/17(日) 23:19:51
>>191
>>193

出来たらmainの部分もお願いします。
198デフォルトの名無しさん:2010/10/17(日) 23:21:26
int main(void)
{
  return 0;
}
199デフォルトの名無しさん:2010/10/17(日) 23:23:43
>>197
>>1 に書いてあることをちゃんと読んだ?
問題付け足しになってると気づいてないの?
200デフォルトの名無しさん:2010/10/17(日) 23:24:04
>>197
>>151とは別の人ですか?
>>156に一式置いています。
201デフォルトの名無しさん:2010/10/17(日) 23:54:33
>>95
できれば#include <string.h>と書かない方法を教えていただきたいです。

あとどなたか>>88をよろしくお願いします。
202デフォルトの名無しさん:2010/10/18(月) 00:01:06
>>195
マジレスされても困ります
203デフォルトの名無しさん:2010/10/18(月) 00:07:16
>>201
こんな感じ?
#include <stdio.h>
#define SIZE 10

int strlength( char s[] )
{
int len = 0;
if ('a' <= s[0] && s[0] <= 'z')
s[0] = s[0] + 'A' - 'a';
while( s[len] != '\0' )
len++;

return len;
}
void strinput( char *s )
{
printf("%d文字以下の文字列を入力してください: ", SIZE-1); /* 入力 */
scanf("%s", s); /* 入力 */
}
int main(void)
{
char str[SIZE];

strinput(str);

printf("入力された文字列: %s\n", str);
printf("文字列の長さは%dです。 \n", strlength( str )); /* 関数の呼び出し */
printf("変換された文字列: %s\n", str);
}
204デフォルトの名無しさん:2010/10/18(月) 00:18:57
>>203
return 0;
がないような課題は零点課題ですよ、回答してはだめよ
先ず、ひどい課題だから作り直せって先生に言うべきです
205デフォルトの名無しさん:2010/10/18(月) 00:20:11
別に return 0; とは限らんよ。return int型; でおk
なぜなら、int main だから。
206デフォルトの名無しさん:2010/10/18(月) 00:50:07
正常終了した場合0を返すのはマナーです
207デフォルトの名無しさん:2010/10/18(月) 01:30:03
勝手に正常と異常を自分で決めてどうすんだ?
mainがシステムに返す値だから関係ないよ。
208デフォルトの名無しさん:2010/10/18(月) 01:40:43
>>207
ごめん、一行目は何言ってるか判らないや
二行めを言うなら返さなくても良いじゃんって話になるよ、何返しても良いとかいうなら返さなくて不定値になっても同じでしょ
209デフォルトの名無しさん:2010/10/18(月) 01:55:04
基本何を返してもいい
ただ、別プログラムやシェルが戻り値を利用する場合もあるわけで
受け取り側の都合の良い値を返せばいいんだよ
慣例的に0を成功とすることが多いだけでマナーとか規格とか関係ないような
210デフォルトの名無しさん:2010/10/18(月) 03:01:40
int func() に於いて、正常終了なら0を返さなければいけないというルールはありません。
どこで学んだ間違いですか?関数の戻り値について調べて下さいね。
211デフォルトの名無しさん:2010/10/18(月) 03:03:42
世の中、自分が思っている程、単純ではない。
道路交通法に於いて、青信号なら通過しても良いが
安全が確認されてのことで、青でも通過できない場合もある。
しかし、青なら通過しなければという考えで生きている人は
そういうイレギュラーの時に、詰まらない失敗をする。
物事を適切に解釈、判断できないならプログラミングには向いてないよ。
212デフォルトの名無しさん:2010/10/18(月) 03:48:52
先入観を持って生きていると損するよ。独自のスタイルがあるならそれはそれで
構わないが、他人に伝える以上、客観性がない意見は単なる個人の思い込みとしか
思われない。return についてはあくまでもその関数の戻り値の型によって
プログラマーが任意で、適切に処理すれば良い。必ずしも 0 でなければ
いけないという決まりは無い。
213デフォルトの名無しさん:2010/10/18(月) 04:08:52
ISO/IEC 9899:1999 5.1.2.2.3
If the return type of the main function is a type compatible with int, a return from the
initial call to the main function is equivalent to calling the exit function with the value
returned by the main function as its argument; reaching the } that terminates the
main function returns a value of 0.
これによると、
main)() の返り値が int で main() に return がないなどして main() の } に到達した場合は 0 が返りますね。
別に main() に return がなくても、何がしかの値が返るように規定されているから、main に return が必須というわけではないですね。
214デフォルトの名無しさん:2010/10/18(月) 04:14:26
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク)
問題1
キーボードから読み込んだ整数値と実数値(倍精度:double)を、そのまま画面に表示するプログラムを作成せよ。


入力する整数の値は123456
入力する実数の値は123.456 


問題2
キーボードから入力した適当な長さの文字列を、そのまま画面に表示するプログラムを作成しなさい。 

入力例 I_love_programming. 


問題3
キーボードから読み込んだ実数値の書式を指定して、整数部4桁、小数点以下2桁で表示するプログラムを作成しなさい。 

例 12.3456 -> __12.35

[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:10月19日
[5] その他の制限: なし

よろしくお願いします。
215デフォルトの名無しさん:2010/10/18(月) 06:57:04
>>209-212
あくまで main() の戻り値は正常終了の場合は 0 がマナーと書いただけ
普通の関数なら何かの個数返したりポインタ返したりするよな、そういうケースで0(NULL)を返すのは逆に異常終了だ
まぁ0でも正常な場合は当然有るって書かんと重箱の隅を突かれそうだけど

マナーだから当然の事ながら規格なんてないよ、マナーって言い方がダメなら通例って言おうか?

何故0が正常終了として一般的なのかは知らんけど、Unix に慣れてると普通の感覚だと思うぞ
これは私見なんだが正常終了を0以外の値にすると

ret = Func();
if( ret == OK_RET ) { printf( "Error is %d\n", ret ); return ret }

と書かないとならんけど正常終了を0にすると

if( ret ) { ....

で、すむからではと邪推している
この辺の話は K&R あたりに書いてある様な気もするけど、友達から借りパクしたK&Rは別な奴に借りパクされたので手許に無い
手許に有る奴がちょっと調べてくれんかな 
216デフォルトの名無しさん:2010/10/18(月) 07:11:30
[1] 授業単元:C言語基礎実習
[2] 問題文(含コード&リンク):0未満の数が入力されるまで
入力を求め、その入力した回数と入力した数値の最大値と最小値を表示するプログラムを作成しなさい。
なお、0未満の数は回数と最大値、最小値に含めないものとする。
また、0未満の値の入力だけで終わった場合は最大値、最小値は表示しない。
[3] 環境
 [3.1] OS:Windows Vista Basic 32bit
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月22日午前9時まで
[5] その他の制限:最大値、最小値についてはそれぞれ関数を作って作成すること
217デフォルトの名無しさん:2010/10/18(月) 07:41:14
#include <stdio.h>
int main( void )
{
int in, cnt = 0, max, min;

scanf( "%d", &in );
if( in < 0 ) {
printf( "cnt = 0" ); // 要らんかも知れん
return 0;
}
max = min = in;
cnt++;
while( 1 ) {
scanf( "%d", &in );
if( in < 0 ) {
printf( "cnt = %d, min = %d, max = %d\n", cnt, min, max );
return 0;
}
if( in < min ) min = in;
if( in > max ) max = in;
cnt++;
}
}

なんか垢抜けないコードで吐きそうだ
218デフォルトの名無しさん:2010/10/18(月) 08:02:33
なぜ return int型; なのか理解せずに今までなんとなくやってたの?
やだ、この人素人以下。
219デフォルトの名無しさん:2010/10/18(月) 11:06:51
????
220デフォルトの名無しさん:2010/10/18(月) 13:54:52
>>217
>最大値、最小値についてはそれぞれ関数を作って作成すること
らしいぞ
221デフォルトの名無しさん:2010/10/18(月) 14:14:21
自分より下がいるとちょっと安心するな
222素人未満:2010/10/18(月) 17:58:50
#include <stdio.h>
int in, cnt = 0, max, min;
void update_min(void){
if( in < min ) min = in;
}
void update_max(void){
if( in > max ) max = in;
}
int get_min(void){
return min;
}
int get_max(void){
return max;
}
void init_max_min(void){
max = min = in;
}
223素人未満:2010/10/18(月) 18:00:37
int main( void )
{
scanf( "%d", &in );
if( in < 0 ) {
printf( "cnt = 0" ); // 要らんかも知れん
return -1;
}
init_max_min();
cnt++;
while( 1 ) {
scanf( "%d", &in );
if( in < 0 ) {
printf( "cnt = %d, min = %d, max = %d\n", cnt, get_min(), get_max() );
return 1;
}
update_min();
update_max();
cnt++;
}
}
224デフォルトの名無しさん:2010/10/18(月) 18:03:39
ワラタw
225デフォルトの名無しさん:2010/10/18(月) 18:10:05
>5.1.2.2.3 Program termination
「main関数の戻り値はその値を引数とするexit関数の呼び出しと等価とする」。
main()からのreturn 0; はexit(0);と等価。
だからexitの引数として用意された値を使わないことに違和感があるなら、
return EXIT_SUCCESS; で正しい(GNUのコードではよくみる)。
この仕様はANSI以前のCからの名残。
以前はexit()の呼び出しのみが正しい終了方法だった。
そうしないとatexit()に登録された関数が呼び出されない実装だったから。

>>212の言うとおりだと思う。
例えばsystem()の戻り値で呼び出し先のmain()の戻り値がくることも保証されてない。
実際、SUN環境では通用しない。
226デフォルトの名無しさん:2010/10/18(月) 18:20:00
>>203
そうです!
ありがとうございます。
227デフォルトの名無しさん:2010/10/18(月) 18:28:02
>>214
#include <stdio.h>
int main() {
int a;
double b;
printf("整数を入力してください > ");
scanf("%d", &a);
printf("実数を入力してください > ");
scanf("%lf", &b);
printf("入力した整数 = %d\n入力した実数 = %lf\n", a, b);
return 0;
}

#include <stdio.h>
int main() {
char str[1024];
printf("文字列を入力してください > ");
scanf("%s", str);
printf("入力した文字列 = %s\n", str);
return 0;
}

#include <stdio.h>
int main() {
double a;
printf("実数を入力してください > ");
scanf("%lf", &a);
printf("[%lf] -> [%7.2lf]\n", a, a);
return 0;
}
228デフォルトの名無しさん:2010/10/18(月) 18:40:32
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:できるだけ早くおねがいします。
[5] その他の制限: forの条件文を習ったばかりですがつまずきました。お願いします。

角度thetaを媒介変数として,(x,y)を計算してください.
thetaは0度から360度まで変化させた場合の(x,y)を出力せよ。

x=acosθ 
y=bsin(θ+α)

ともうひとつ。

「個体群動態で N(t+dt) - N(t) = (r - hN(t)) N(t) として,rを増 殖率,hをこみあいの効果とする。
適当な,N(0) r, h を与えて, N(t) の変化を示しなさい。
229デフォルトの名無しさん:2010/10/18(月) 18:43:03
>>227
printf で double を出力するときは、「%lf」じゃなくて「%f」だよ。
あと、2つ目のプログラムだけど、「適当な長さ」に半角1023文字までという制限つけてよいの?
230デフォルトの名無しさん:2010/10/18(月) 18:57:03
>>228
問題文これで全部?
231デフォルトの名無しさん:2010/10/18(月) 18:57:14
>>228
逆に質問。
1つ目の問題で、a, b, α の値は指定なしですか?
232デフォルトの名無しさん:2010/10/18(月) 19:12:41
228の者です。

説明不足ですみませんでした。

a,b,αは自分で指定します。
233デフォルトの名無しさん:2010/10/18(月) 19:14:56
>>232
自分で指定っていうのは実行時に聞くの?
それとも適当な数字を埋め込めばいいの?
あとθは1°づつ増えるの?
234デフォルトの名無しさん:2010/10/18(月) 19:18:19
gccならM_PIを使っても大丈夫ってことでOK?
235デフォルトの名無しさん:2010/10/18(月) 19:21:30
なんでそんなに質問するの?
236デフォルトの名無しさん:2010/10/18(月) 19:25:03
問題の描き方がザルだからじゃね?
237デフォルトの名無しさん:2010/10/18(月) 19:29:21
質問クンに質問しないでください
質問クンは質問クンであり、けっして回答クンではありません
238デフォルトの名無しさん:2010/10/18(月) 19:33:33
>>228
体重は何kgですか?
239デフォルトの名無しさん:2010/10/18(月) 19:45:41
>>1のアップローダーは今月で使えなくなるので、どなたかが他のを用意していただければありがたいです

isweb ライト のサービス終了について
http://isweb.www.infoseek.co.jp/info/information.html
240デフォルトの名無しさん:2010/10/18(月) 20:08:48
>>229
現在のCはlを付けてもいいんだよ
241デフォルトの名無しさん:2010/10/18(月) 20:11:05
現在とか未来とかじゃなくて、C99以降ってちゃんと言おうよ。
242240:2010/10/18(月) 20:14:17
C++03はできないと思います
243デフォルトの名無しさん:2010/10/18(月) 20:19:21
>>240
C99のことを言ってるんだろうけど、間違える人が多すぎるから、仕方なく仕様に入れただけだよ。
C99非対応コンパイラやC++では、未定義の動作だよ。
244240:2010/10/18(月) 20:22:36
ミスなら...の引数などでdoubleに格上げするというのが委員会の決定のミス
245デフォルトの名無しさん:2010/10/18(月) 20:24:11
gccなんだからC99でもいいじゃないか
変数宣言の位置が気に入らないけど
246デフォルトの名無しさん:2010/10/18(月) 20:33:31
>>245
残念ながらgccはまだC99完全準拠ではありません。
247デフォルトの名無しさん:2010/10/18(月) 20:33:40
そうじゃなくて、課題なんだから先生に%lfのことつっこまれる可能性を排除したほうがいいよってことでしょ。
248デフォルトの名無しさん:2010/10/18(月) 20:37:24
それなら完璧に返答したらいいんでは?
249デフォルトの名無しさん:2010/10/18(月) 20:41:12
今は教科書にもlfで乗ってるんじゃ?
250デフォルトの名無しさん:2010/10/18(月) 20:43:42
語尾に"?"をつけるのが流行ってるんですか?
251デフォルトの名無しさん:2010/10/18(月) 20:43:58
int %d
long %ld
float %f
double %lf
252デフォルトの名無しさん:2010/10/18(月) 20:44:27
?を着けてるのは同一人物なのでは?
253デフォルトの名無しさん:2010/10/18(月) 20:44:45
%lfって別に書いてもいいけど%fと解釈されるだけでしょ
C99から明確に区別されるようになったわけ?
254デフォルトの名無しさん:2010/10/18(月) 20:45:06
printf("[%lf] -> [%7.2lf]\n", a, a);
で警告とか出すコンパイラ多いの?
255デフォルトの名無しさん:2010/10/18(月) 20:46:45
>>253
C99 から %lf = %f になったんだよ。それまでは %lf は未定義の動作。
256デフォルトの名無しさん:2010/10/18(月) 20:46:53
関数呼び出しでスタックに仮引数がのるときには、浮動小数点数は double に変換されることを考えると、printf() に %lf という指定をするのは意味がないと思います。
257デフォルトの名無しさん:2010/10/18(月) 20:51:13
>>254
多いです。
258デフォルトの名無しさん:2010/10/18(月) 20:56:30
scanfでは%fでfloat、%lfでdoubleなんだから
printfはそれに合わせれば良かった
259デフォルトの名無しさん:2010/10/18(月) 20:57:08
むしろva_argsの...でdoubleに変換しないのなら、いったいどういう方法があるんだ?
裏で型情報も渡せって?
260デフォルトの名無しさん:2010/10/18(月) 21:07:05
静岡の民主でも普通に党本部に反発してますからw
静岡が自民、民主、どちらかよりだと思ったら大間違いだぞ?
ネトウヨは静岡は操れない。やれるのは東京都周辺の王国くらいだろ。
それも崩壊したがなw
261 ◆QZaw55cn4c :2010/10/18(月) 21:13:18
262デフォルトの名無しさん:2010/10/18(月) 21:25:26
>>259
T va_arg(va_list p, T)
だから、変換する型は double に限定しなくとも、たとえば float でも OKのはず。
つまり printf() の引数に float をのせることは原理的に可能。float か double かは、第一引数をみて判断しようとおもえばできる。int, long, unsigned はそうしている。
(可変長引数関数といえども第一引数は必須)

でも、C のお約束として関数の引数は浮動小数点数では double に一律に変換されるのがお約束。そういう意味で %lf はいらない。
263デフォルトの名無しさん:2010/10/18(月) 21:32:23
264デフォルトの名無しさん:2010/10/18(月) 21:40:33
265デフォルトの名無しさん:2010/10/18(月) 21:49:18
>>262
なるほどね。
そうか、fmtはそもそも型情報(ヒント)を含んでいるもんな。
266デフォルトの名無しさん:2010/10/18(月) 21:57:55
>>262
printfの第一引数が常に文字列リテラルとは限らないよ。
動的に生成される char のポインタだって渡せるんだから。
267デフォルトの名無しさん:2010/10/18(月) 22:10:52
>>266
printf の呼び出し側の話?
呼び出し側には型情報があるから問題ないでしょ。
268デフォルトの名無しさん:2010/10/18(月) 22:32:57
>>266
文字リテラルにせよ、プログラムでつくったり、malloc() の返り値だったりしても、ともかく、第一引数は char * で固定されています。
だからこそ、可変長引数が使用できるのでは?
printf() の浮動小数点数の表示が%f だけで済んでいたのも、それは関数に渡される浮動小数点数が double 一本だったから。
269デフォルトの名無しさん:2010/10/18(月) 23:07:46
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):int main(void)

              {

            char word[101],boin[5]={'a','i','u','e','o'};
           int i,count[5];

           printf("アルファベットで文字列を入力してください>>>");
           scanf("%s",word);

           count[0]=0,count[1]=0,count[2]=0,count[3]=0,count[4]=0;

           for(i=0; word[i]!='\0'; i++)

        {
         if(word[i]==boin[0]) {count[0]++;} if(word[i]==boin[1]) {count[1]++;}
            if(word[i]==boin[2]) {count[2]++;} if(word[i]==boin[3]) {count[3]++;} if(word[i]==boin[4]) {count[4]++;}
}

printf(" a>>>%d\n i>>>%d\n u>>%d\n e>>>%d\n o>>>%d\n",count[0],count[1],count[2],count[3],count[4]);

return 0;

}
アルファベット文字列の中から母音をカウントするプログラムなのですが、現在ソース中の配列は
定数によって値が参照されています。これをboin[i] count[j]のように変数で値を参照するものに書き換えてください。
[3]環境:linux コンパイラ:gcc  C言語
[4] 期限:2010年10月19日10:00まで
[5] その他の制限:変数で配列要素の値を参照するときfor文と組み合わせること。
どうか、よろしくお願いします
270デフォルトの名無しさん:2010/10/18(月) 23:24:09
インデントが正しくないプログラムは受け付けないことになっている
271デフォルトの名無しさん:2010/10/18(月) 23:25:24
>>269
さすがにここまで簡単だと自分でやれって言いたいな
[0] 〜 [4] を [j] で代用するためのループを追加するだけなんだからさ
272 ◆QZaw55cn4c :2010/10/18(月) 23:25:53
273デフォルトの名無しさん:2010/10/18(月) 23:26:28
>> 269
見ずら過ぎるぞ・・・
#include<stdio.h>
int main(void){
char word[101],boin[5]={'a','i','u','e','o'};
int i,j,count[5];
printf("アルファベットで文字列を入力してください>>>");
scanf("%s",word);
for(i=0;i<5;i++)
count[i]=0;
for(i=0; word[i]!='\0'; i++)
for(j=0;j<5;j++)
if(word[i]==boin[j])
count[j]++;
for(i=0;i<5;i++)
printf("%c>>>%d\n",boin[i],count[i]);
return 0;
}
274デフォルトの名無しさん:2010/10/18(月) 23:35:14
>>273
見る+つらい = 見づらい != 見ずらい
275デフォルトの名無しさん:2010/10/18(月) 23:43:31
で、あんたらいつまで毎年出題される同じような課題を解いて
自己満足しているんだい?それがあんたの有意義な人生なのかい?
俺はそれで、年間何千万と稼いでいるのに。
276269:2010/10/18(月) 23:43:56
>>272>>273
問題文が乱雑としていて申し訳なかったです;
回答ありがとうございました!
277デフォルトの名無しさん:2010/10/18(月) 23:53:07
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):テキストからデータを読み込んでユークリッド距離を求めるプログラムをお願いします。また、データを増やす事と最大距離と最小距離を求めてください。三次元なので、n=3とします。
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語: C++
[4] 期限: 2010年10月20日まで
[5] その他の制限: なるべく難しくしないでお願いします。
#include<iostream>
using namespace std;

int main() {
で始めてください。

そして、
rerurn 0;
}
を入れてください
あと、座標は構造体とか配列を使って、距離は関数を使うみたいです。
278デフォルトの名無しさん:2010/10/18(月) 23:58:10
使えるライブラリiostreamだけって....
279デフォルトの名無しさん:2010/10/19(火) 00:00:17
>>277
課題を聞いてない人が、いきなり
「データを増やす事」とか 「n = 3」 なんて言われて通じると思う?
280デフォルトの名無しさん:2010/10/19(火) 00:01:41
>>277
ユークリッド距離、とありますが、
入力が 10 点あったとしたら、
1) それら 10 個について総当りに距離をはかって、最大距離の2点と最小距離の2点を求めるのですか?
2) 単に原点(0, 0, 0) からの距離が最大のものと最小のものとを割り出せばいいのですか?
回答ください。
281デフォルトの名無しさん:2010/10/19(火) 00:02:35
今日はやたら質問者に質問する日だな
282デフォルトの名無しさん:2010/10/19(火) 00:03:06
ここはエスパー養成スレではないので
283デフォルトの名無しさん:2010/10/19(火) 00:03:17
>>275
お家が、ですよね、確か。
284デフォルトの名無しさん:2010/10/19(火) 00:05:22
>>283
触るな
285デフォルトの名無しさん:2010/10/19(火) 00:13:33
>>275
http://hibari.2ch.net/test/read.cgi/tech/1284632294/720
720 名前:デフォルトの名無しさん[] 投稿日:2010/10/10(日) 00:34:13
何かこのスレに常駐していて自分がベテランだと勘違いしているバカがいますねw
お前みたいなのは人類の中でも無名で雑魚だから、せいぜい粋がれる場所で
偉そうに生きてな。どうせ納税額もちっぽけの雑魚だろw
家は年間何百万も法人税を納めているし、年商1億以上だが
多分お前よりは上。

http://hibari.2ch.net/test/read.cgi/tech/1284632294/724
724 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/10(日) 01:02:31
>家は年間何百万も法人税を
自分が納めているわけではないのですね。
学校にいっていない?ひきこもり?大検という手もあるからがんばってね。
286デフォルトの名無しさん:2010/10/19(火) 04:33:19
>>283 >>285 そんなに妬ましいのかw
287デフォルトの名無しさん:2010/10/19(火) 04:34:31
>>283 >>285
あぁ、そう解釈したか。そりゃ自分ひとりでは無理だわw
そうだよ、一族総出でやっているんだが?
まぁ、俺も必要不可欠な人材なんでね。
288デフォルトの名無しさん:2010/10/19(火) 04:40:54
ん?ってこんな時間にこのスレにいる奴なんておらんかw
まぁそういうことで、大して金持ちでもないのに妬まれるくらい
あんたらは悔しいんだろ?頑張っても無駄だよ。
もうね、人生って 生まれた時から死ぬまで がある程度決定されているんですよ。
よく、人生を変えたなんて奇麗事言うじゃん?あれって結局、そいつだから
そういう人生を歩んだんであって、別に変えたなんて他人は思っちゃいないんだよ。
289デフォルトの名無しさん:2010/10/19(火) 04:46:15
まぁC言語をやらなきゃいけない人生だったのか、C言語しか楽しみのない
世間を知らない人生になってしまったのか、所詮は自分次第。
これを利用して何千万円も稼げるプロジェクトを立ち上げたらどうよ?
思いつくかは知らんがw
290デフォルトの名無しさん:2010/10/19(火) 06:50:34
[1] 授業単元:C言語基礎実習
[2] 問題文(含コード&リンク):三つの数値を入力して昇順に並べ替えるプログラムを作成しなさい。
ただし、並べ替えの処理は関数「void sort(int *n1,int *n2,int *n3)」
というものを作って処理すること

[3] 環境
 [3.1] OS:Windows Vista Basic 32bit
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月22日午前9時まで
[5] その他の制限:上記のみです
291デフォルトの名無しさん:2010/10/19(火) 11:04:04
261さんありがとうございます。

しかし一つだけお願いがあります。M_PIは習っていません。C言語初めて二時間目の授業の
課題です。M_PI使わずにといてくれませんか?お願いします。

a,bはあらかじめプログラム上で適当な数を指定します。
θは1ずつ増やしていきます。

角度thetaを媒介変数として,(x,y)を計算してください.
thetaは0度から360度まで変化させた場合の(x,y)を出力せよ。

x=acosθ 
y=bsin(θ+α)

ともうひとつ。

「個体群動態で N(t+dt) - N(t) = (r - hN(t)) N(t) として,rを増 殖率,hをこみあいの効果とする。
適当な,N(0) r, h を与えて, N(t) の変化を示しなさい。

292デフォルトの名無しさん:2010/10/19(火) 11:22:46
291につけたしです。a,bを[0,1]で、θを[0、Pi/2]で変化させるそうです。
お願いします。
293デフォルトの名無しさん:2010/10/19(火) 11:27:32
>>292
良く解らん
a,bは定数じゃなかったん?[0,1]の範囲で設定しろってこと?
θは[0,2*Pi]の範囲で動くんじゃなかったっけ?
294デフォルトの名無しさん:2010/10/19(火) 11:44:57
M_PIがだめなら、およそ3を使えばいいじゃない
295デフォルトの名無しさん:2010/10/19(火) 12:51:39
>>294
ゆとり乙、せめて 22/7 を使おうぜ
double pai = atan(1.0) * 4.0;  を使うのが一般的だけどね
 
296デフォルトの名無しさん:2010/10/19(火) 13:16:13
[1] 授業単元:
[2] 問題文(含コード&リンク):
下のプログラム(簡単なスタックマシン)を次のように改造せよ
1,Enterが入力されても何もしない
2,演算子 +.-,*,/.%,^のいずれかが入力されたら
スタックに2つ以上数値が積まれているか確認する
2-1,積まれていなかった場合は"EROOR"を表示
2-2,積まれていた場合は、スタックから2つのデータをポップして
指定の演算を行い、その結果をプッシュする
3,プロンプトを表示して次の入力まで待機
問題のプログラムは↓の 10949.cです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限:明日の16時まで
[5] その他の制限: +.-,*,/.%,^の演算はソースの下に割り算の例が
ありますのでそれを参考につくってください

それではよろしくお願いします
297デフォルトの名無しさん:2010/10/19(火) 13:46:01
携帯からです

>>278
ごめんなさい。それは気にしないでください。

>>279
すみません

>>280
それは多分1だと思います
298デフォルトの名無しさん:2010/10/19(火) 15:07:58
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100

typedef struct {
  int data[STACK_SIZE];
  int pos;
}STACK;
STACK stack = { 0 };

void print_stack(void) {
  system("clear"); printf("stack:");
  int i; for(i=0; i<stack.pos; i++){ printf("%d ", stack.data[i]); }
  puts("");
}

void push(int num) { if(stack.pos < STACK_SIZE){ stack.data[stack.pos++] = num; } }

int pop(void) {
  if(stack.pos <= 0){ exit(1); }
  else{ stack.pos--; return stack.data[stack.pos]; }
}

int is_enzanshi(char* str) {
  if((strcmp(str, "+\n") == 0) || (strcmp(str, "-\n") == 0) ||
   (strcmp(str, "*\n") == 0) || (strcmp(str, "/\n") == 0) ||
   (strcmp(str, "%\n") == 0) || (strcmp(str, "^\n") == 0)){ return 1; }
  return 0;
}
299デフォルトの名無しさん:2010/10/19(火) 15:08:39
int calc_stack(char* str) {
  if (strcmp(str, "+\n") == 0){ return pop() + pop(); }
  else if(strcmp(str, "-\n") == 0){ return pop() - pop(); }
  else if(strcmp(str, "*\n") == 0){ return pop() * pop(); }
  else if(strcmp(str, "/\n") == 0){ return pop() / pop(); }
  else if(strcmp(str, "%\n") == 0){ return pop() % pop(); }
  else if(strcmp(str, "^\n") == 0){ return pop() ^ pop(); }
  else{ puts("fuck!"); exit(1); }
}

int main() {
  int input;
  char buff[256];
  print_stack(); printf(">> ");
  while(fgets(buff, 256, stdin)!=NULL){
    if(strcmp(buff, "\n") == 0){ }
    else{
      if(is_enzanshi(buff)){
        if(stack.pos < 2){ puts("ERROR"); exit(1); }
        else{ input = calc_stack(buff); push(input); }
      }
      else{ input = atoi(buff); push(input); }
    }
    print_stack(); printf(">> ");
  }
  return 0;
}
300デフォルトの名無しさん:2010/10/19(火) 15:44:21
>>296 ちょっと変えてみた。
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100

typedef struct {
  int data[STACK_SIZE];
  int pos;
  void (*push)(int num);
  int (*pop)(void);
}STACK;
STACK stack = { 0 };

void _push(int num) { if(stack.pos < STACK_SIZE){ stack.data[stack.pos++] = num; } }
int _pop(void) { if(0 < stack.pos){ return stack.data[--stack.pos]; } exit(1); }

void init(void) {
  int i; for(i=0; i<STACK_SIZE; i++){ stack.data[i] = 0; }
  stack.pos = 0; stack.push = _push; stack.pop = _pop;
}

void print_stack(void) {
  system("clear"); printf("stack:");
  int i; for(i=0; i<stack.pos; i++){ printf("%d ", stack.data[i]); }
  puts("");
}

int is_enzanshi(char* str) {
  if((strcmp(str, "+\n") == 0) || (strcmp(str, "-\n") == 0) || (strcmp(str, "*\n") == 0) ||
   (strcmp(str, "/\n") == 0) || (strcmp(str, "%\n") == 0) || (strcmp(str, "^\n") == 0)){ return 1; }
  return 0;
}
301デフォルトの名無しさん:2010/10/19(火) 15:45:01
int calc_stack(char* str) {
  if (strcmp(str, "+\n") == 0){ return (*(stack.pop))() + (*(stack.pop))(); }
  else if(strcmp(str, "-\n") == 0){ return (*(stack.pop))() - (*(stack.pop))(); }
  else if(strcmp(str, "*\n") == 0){ return (*(stack.pop))() * (*(stack.pop))(); }
  else if(strcmp(str, "/\n") == 0){ return (*(stack.pop))() / (*(stack.pop))(); }
  else if(strcmp(str, "%\n") == 0){ return (*(stack.pop))() % (*(stack.pop))(); }
  else if(strcmp(str, "^\n") == 0){ return (*(stack.pop))() ^ (*(stack.pop))(); }
  else{ puts("fuck!"); exit(1); }
}

int main() {
  int input;
  char buff[256];
  init();
  print_stack(); printf(">> ");
  while(fgets(buff, 256, stdin)!=NULL){
    if(strcmp(buff, "\n") != 0){
      if(is_enzanshi(buff)){
        if(stack.pos < 2){ puts("ERROR"); exit(1); }
        else{ input = calc_stack(buff); (*(stack.push))(input); }
      }
      else{ input = atoi(buff); (*(stack.push))(input); }
    }
    print_stack(); printf(">> ");
  }
  return 0;
}
302デフォルトの名無しさん:2010/10/19(火) 16:06:44
ちょっと思ったんだが、このスレを利用してアフィリエイト収入を得るということはありえるのか。
そうなら宿題をでっち上げてる輩がいてもおかしくないんだよな・・・
303デフォルトの名無しさん:2010/10/19(火) 17:25:32
技術者が商人になったらおしまいよ。
304デフォルトの名無しさん:2010/10/19(火) 18:39:15
>>300
何故に関数ポインタが必要なのか詳しく
305デフォルトの名無しさん:2010/10/19(火) 18:57:40
スタックに関する処理はSTACK構造体にまとめてカプセル化したら良さげに思えたんでpushとpopをまとめてみた。
今考えたらinitもprint_stackもまとめればよかったと思うし、STACK関する部分だけ別ファイルにして_pushと_popはstaticにして他はexternにすれば
良かったと思ったけどもう面倒になったから中途半端な感じになってしまった反省はしない。
306デフォルトの名無しさん:2010/10/19(火) 19:57:25
>>305
継承みたいなことをして、インスタンスごとに処理を変えたいのでなければ、
実行速度も下がるし、読みにくいしで、はっきり言って良いことないよ。
307デフォルトの名無しさん:2010/10/19(火) 20:01:17
クラスの概念を否定するということ?
308デフォルトの名無しさん:2010/10/19(火) 20:06:15
>>307
課題で書いたコードを再利用したり、機能追加するために拡張したりするなら話は別よ。
前半の文章でそういうケースを除いたつもりだけど。
309 ◆QZaw55cn4c :2010/10/19(火) 20:38:38
>>228
>>291
http://codepad.org/ddOrBsPF
二問目は >>261 の二つ目でいいでしょうか?
310 ◆QZaw55cn4c :2010/10/19(火) 21:27:25
311デフォルトの名無しさん:2010/10/19(火) 21:43:19
>>310
最小距離が10000より大きいときに間違った答えを出力する気がする。
312310 ◆QZaw55cn4c :2010/10/19(火) 21:43:31
データファイルとしては、たとえば data.txt の名前で内容を
0 1 2
3 4 5
2 3 4
4 2 3

みたいなものを準備しておき、
./a.out < data.txt
の形で読み込ませてください。
313デフォルトの名無しさん:2010/10/19(火) 21:44:23
>>311
そのとおりなんですが、んー、さて、どうしましょうか?
314 ◆QZaw55cn4c :2010/10/19(火) 21:51:12
>>277
>>311 の指摘を受けて改良しました。
http://codepad.org/MgB3UzzG
315デフォルトの名無しさん:2010/10/19(火) 21:55:25
>>314
私だったら、min も max も距離としてありえない負の数で初期化して、
2点以上入力されなかったときには、if 文でエラー表示させるかな。
316 ◆QZaw55cn4c :2010/10/19(火) 22:06:58
>>277
>>315
なるほど。それは取り入れなければならない機能ですね。
>>277
改良しました。
http://codepad.org/c3WDHyvO

317デフォルトの名無しさん:2010/10/19(火) 22:21:50
http://codepad.org/fB5Fj5md
なるべく難しくしないってところが微妙だけどこれでいいんじゃないか
318デフォルトの名無しさん:2010/10/19(火) 22:27:54
using namespace std;
としていながら、max を別用途に使って潰していましたね。
初心の者としては std::endl という風に名前空間を意識して書いたほうがいいかもしれませんね。ちょっと反省。
319デフォルトの名無しさん:2010/10/19(火) 22:32:48
[1] 授業単元:
[2] 問題文(含コード&リンク):0〜1の値をサーモグラフィ風にRGB値に変換するプログラム
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C/C++/どちらでも可
[4] 期限:木曜日まで
[5] その他の制限:なるべく簡単に

5〜6段階くらいに場合分けして,値を増やしたり減らしたりしているのですがどうもうまくいきません。
申し訳ありませんがよろしくお願いします。
320デフォルトの名無しさん:2010/10/19(火) 22:35:16
>>319
入力方法と出力形態を教えてください。コードを教えていただけるとありがたいです。
321デフォルトの名無しさん:2010/10/19(火) 22:41:24
0のときのRGB値が何で1のときのRGB値が何なんだよどういう対応になってるんだよわけわかんねえよ
322デフォルトの名無しさん:2010/10/19(火) 22:42:47
どいつもこいつも
L2-ノルムの演算回数が多すぎる
O(n^2)は効率悪いと思うんだけど
323デフォルトの名無しさん:2010/10/19(火) 22:44:18
[1] 授業単元:
[2] 問題文(含コード&リンク):
西暦年数を与えて、その年の干支を求めるプログラムを作成せよ。
干支は、十干と十二支とをそろぞれサイクリックに変えながら組み合わせることによって60(10と12の最小公倍数)通りが得られる。
例:1989年は己巳。
[3] 環境
 [3.1] OS: windows xp
 [3.2] コンパイラ名とバージョン: dev-c++ 4.9.9.2
 [3.3] 言語: C言語
[4] 期限: 10月21日
[5] その他の制限:
御願いします。
324デフォルトの名無しさん:2010/10/19(火) 22:44:47
>>319
自分でやってみたことはないのですが、
http://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93
がよさそうです。
325デフォルトの名無しさん:2010/10/19(火) 22:49:59
すみません。質問なんですが
std::vector<coord>::iterator it
double d = std::sqrt((it->x - c.x) * (it->x - c.x) + (it->y - c.y) * (it->y - c.y) + (it->z - c.z) * (it->z - c.z))
とした時のitはポインタなんでしょうか? (*it).xとかじゃ駄目なんですか?

struct coord {
double x, y, z;
coord(double x, double y, double z) { this->x = x; this->y = y; this->z = z; }
};
のcoord()で初期子用いる
coord(...) : x(x), y(y), x(z){}じゃなく
this->x = x;... としているのは何かあるんですか?
326デフォルトの名無しさん:2010/10/19(火) 22:58:00
>>320
xの値に応じて場合分けしてます。
ファイルの入出力は別のライブラリを使ってます。
出力は8bitカラーです。

該当部分のソースはこちらになります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10950.txt

>>321
すみません。0の時に黒で1の時に赤になるようにします。
値に応じて黒→青→空色→緑→黄→赤と変化するようにしたいです。

>>324
試してみましたが,上手くいきませんでした。
327デフォルトの名無しさん:2010/10/19(火) 22:58:19
>>325
結論から先に。
>(*it).xとかじゃ駄目なんですか?
OKです。

it はイテレータと呼びますが、考え方はポインタと相似しています。
C++ の Standard Template Library (STL)で調べてみてください。
328デフォルトの名無しさん:2010/10/19(火) 23:08:40
>>326
サーモって
黒→青→紫→赤→橙→黄→白だとおもうんだけど
ほんとうにその順番でいいの?
329デフォルトの名無しさん:2010/10/19(火) 23:20:49
>>326
0.4 <= x < 0.6 のときの wPixb だけ間違っているのかな。
BYTE にキャストするときに、ほとんどの場合で 0 になってるような気がする。
330デフォルトの名無しさん:2010/10/19(火) 23:27:34
>>325
>coord(...) : x(x), y(y), x(z){}じゃなく
>this->x = x;... としているのは何かあるんですか?
一緒です。むしろx(x) などの方が現代的だと思います。
331デフォルトの名無しさん:2010/10/19(火) 23:39:23
>>328
海外のサーモグラフィはそうなってるらしいです。
今回の場合はこれで行きたいと考えています。

>329
では黄から赤に移るときも同様だと考えていいのでしょうか?
332デフォルトの名無しさん:2010/10/19(火) 23:40:30
>>330
厳密にいうと一緒じゃない。
初期化リスト(x(x) など)を使わないと、引数なしのコンストラクタが実行される。
333デフォルトの名無しさん:2010/10/19(火) 23:45:38
>>331
他のときは、double を使うときによく起こる誤差が入ってる。
2進数で、0.1 は無限小数なので、1 - 0.8 = 0.2 ではなく、0.19999999999999996かな。
何段階とか決まっているなら、0から1を適当な整数にマッピングしてみたら?
334デフォルトの名無しさん:2010/10/19(火) 23:50:50
>>319

0<=c<=1.0
R = max(0.0,(-cos(M_PI*c)*255.0)) ;
G = max(0.0,(sin(M_PI*c)*255.0)) ;
B = max(0.0,(sin(2*M_PI*c)*255.0)) ;

ちょっと適当だけどでどうだろう?
青の期間が短いかなぁとも思うがそのへんは波形を少しずらせば良くなりそうな
335デフォルトの名無しさん:2010/10/20(水) 00:15:26
>>333
小数が2進数でどう表されるか考えたことなかったです。
>>334
少し難しそうですが、やり方次第では上手くいくかもしれないですね。

頂いた意見を参考に試してみます。
皆様ありがとうございました。
336デフォルトの名無しさん:2010/10/20(水) 00:46:00
>>305, 307
this が使えんメンバ関数モドキに何の意味が有るのかと問いたいな
カプセル化を考えるなら
void STACK_pop( STACK* this );
みたいな実装の方が実用的だと思う
337デフォルトの名無しさん:2010/10/20(水) 01:06:54
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):
整数型変数aのアドレスをポインタ型変数pに代入するには、
int a=10; int* p; p = &a; とする。
(1)
・aの値
・aのアドレス
・pの値
・pのアドレスの4つを出力するプログラムを作りなさい。
参考)
pのアドレスの出力:printf(”%p
”, &p);
aの値の出力   :printf(”%d
”, a);

(2)メモリアドレスと書かれている値の関係を以下の例のように示しなさい
[メモリ番地] → [メモリに保持されている値]
0xffbff624  → ???
0xffbff620  → ???
0xffbff616  → ???
[3] 環境
 [3.1] OS:Windows 7
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:Cです
[4] 期限:木曜日まで
[5] その他の制限:特になし

よろしくお願いします
338デフォルトの名無しさん:2010/10/20(水) 02:03:48
>>316
cellとかって何ですか
339デフォルトの名無しさん:2010/10/20(水) 02:11:59
>>316
メモ帳でファイルを作って、そこにデータを入力しても、プログラムの結果には何も出てこないんですが…
340デフォルトの名無しさん:2010/10/20(水) 08:52:52
341デフォルトの名無しさん:2010/10/20(水) 10:11:26
>>337
(1)
#include <stdio.h>

int main()
{
int a = 10;
int* p;
p = &a;

printf("aの値=%d aのアドレス=%p pの値=%d pのアドレス%p\n", a, &a, p, &p);
return 0;
}
純粋にその変数の値を出すなら上のであってると思うけど
もしaとpが同じところを指しているってことなら
printfの一文を
printf("aの値=%d aのアドレス=%p pの値=%d pのアドレス%p\n", a, &a, *p, p);
に変えて
(2)は例えばint型の配列なら1,2,3・・・みたいに連続してるってことなんだけど
0xffbff624  → 3
0xffbff620  → 2
0xffbff616  → 1
問題の条件がよくわからないのでこのくらいしか言えないかなぁ
342 ◆/91kCCQXBo :2010/10/20(水) 11:37:19
>>337
#include <stdio.h>
int main(void) {
  int a = 10; int* p; p = &a;
  printf("%8d = aの値\n", a);
  printf("%p = aのアドレス\n", &a);
  printf("0x%x = pの値\n", p);
  printf("%p = pのアドレス\n", &p);
  printf("[メモリ番地] → [メモリに保持されている値] \n");
  printf("%p → 0x%08x\n", &a, a);
  printf("%p → 0x%08x\n", &p, p);
}
343 ◆/91kCCQXBo :2010/10/20(水) 12:19:19
>>290
#pragma warning (disable:4996)
#include <stdio.h>
void sort(int *n1, int *n2, int *n3){
  int temp;
  if(*n1>*n2) {temp=*n1, *n1=*n2, *n2=temp;}
  if(*n2>*n3) {temp=*n2, *n2=*n3, *n3=temp;}
  if(*n1>*n2) {temp=*n1, *n1=*n2, *n2=temp;}
}
int main(void){
  int n[3];
  printf("input(1):"); scanf("%d", &n[0]);
  printf("input(2):"); scanf("%d", &n[1]);
  printf("input(3):"); scanf("%d", &n[2]);
  sort(&n[0], &n[1], &n[2]);
  printf("%d %d %d\n", n[0], n[1], n[2]);
}
344290:2010/10/20(水) 12:46:04
>>343
ありがとうございます。
345 ◆/91kCCQXBo :2010/10/20(水) 14:49:02
>>323
/* gcc --input-charset=cp932 --exec-charset=cp932 */
#include <stdio.h>
static char *jyunisi[12] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
static char *jikkan[10] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
int main(int argc, char *argv[]){
  int nen = 1989;
  if(argc<2) {puts("Parameter error."); return 1;}
  sscanf(argv[1], "%d", &nen);
  printf("%d %s %s\n", nen, jikkan[(nen+6)%10], jyunisi[(nen+8)%12] );
}
346デフォルトの名無しさん:2010/10/20(水) 15:05:04
>>341-342

ご丁寧にありがとうございます!
347デフォルトの名無しさん:2010/10/20(水) 15:42:01
ああそうか。関数の中でstack変数にアクセスしちゃってるから複数のSTACKが作れないわけか。
だからstack.push(&stack);みたいにした方がいいわけね。
348デフォルトの名無しさん:2010/10/20(水) 20:37:41
カプセル化もどきを実現するならば、struct の定義や private な関数は C ファイルに static で書いて非公開、
ヘッダファイル には struct へのポインタ型と、public な関数だけを記述しなければならない。
インスタンスを作る関数以外の public な関数には、
必ず struct へのポインタ型の引数がなければならない。
当然、インスタンスを作る関数内に malloc などが必要で、
破棄する関数で free を使う。

ポインタがある時点で、書き換えて欲しくない変数も強引に書き換えられるから、
厳密なカプセル化なんて無理だけどね。
349デフォルトの名無しさん:2010/10/20(水) 21:15:33
とりあえず本屋さんに行って「C言語によるオブジェクト指向プログラミング入門」を買ってきた。
これで勝つる
350デフォルトの名無しさん:2010/10/20(水) 21:21:26
>>349
そして俺の宿題解決の力になってくれよ。
テストあったけどたぶん赤点だろうから課題がたくさん出るわけだ
351デフォルトの名無しさん:2010/10/20(水) 21:23:04
そんな本あるんだ・・・。
352デフォルトの名無しさん:2010/10/20(水) 21:25:16
C言語によるオブジェクト指向ってマジで?
クラスとか一切つかわずに?
353デフォルトの名無しさん:2010/10/20(水) 21:32:13
つ cfront
354デフォルトの名無しさん:2010/10/20(水) 21:35:05
地味に難易度の高そうな本だなw
355デフォルトの名無しさん:2010/10/20(水) 21:43:59
そんな手間かける暇あったら素直にC++使えと思ってしまう
356デフォルトの名無しさん:2010/10/20(水) 21:49:51
C++の問題は、オブジェクト指向でないプログラムも許容していることだと思う。
357デフォルトの名無しさん:2010/10/20(水) 21:52:17
C++の問題は、普及しちゃっていることだと思う。
358デフォルトの名無しさん:2010/10/20(水) 21:54:40
>>348
無理くり private を隠蔽したいなら private 変数をまとめた構造体を用意し公開する構造体に char* でぶら下げて
使うときにキャスト代入して参照するなんて荒業も有るかも知れんけど...無理に書き換えられるのは回避できないね
359デフォルトの名無しさん:2010/10/20(水) 21:58:02
>>355
C++使える環境が一般的では無かった時代に出たのでは?
20年くらい前だと gcc も C++ に対応してなかった気がする
gpp とかいうC++→Cトランスレーターを使った記憶が有るんだが自信は無い
360323:2010/10/20(水) 22:01:08
>>345
ありがとうございます!
ただ、エラーが出てしまいました。
bloodshedのdev-c++を使ってますが、そのままコピペで大丈夫でしょうか?
361デフォルトの名無しさん:2010/10/20(水) 22:02:58
エラー内容載せようよ・・・
362デフォルトの名無しさん:2010/10/20(水) 22:13:01
>>360
正常終了時の return が無いから warning は出そうだな

nen = 1989 ってのは基準年じゃないの?
このソースだと 1989 が使われないけど問題ないのかな?
363デフォルトの名無しさん:2010/10/20(水) 22:14:22
>>360

&#160 は、スペースに置き換えないと
364323:2010/10/20(水) 22:17:02
すみません。エラーメッセージを載せるのを忘れてました。
御願いします。
3: error: stray '\147' in program
3: error: stray '\209' in program
3: error: syntax error before string constant
3: error: stray '\156' in program
3: error: stray '\250' in program
3: error: stray '\136' in program

3: error: stray '\229' in program
3: error: missing terminating " character
4: warning: excess elements in array initializer
4: warning: (near initialization for `jyunisi')
4: warning: excess elements in array initializer
4: warning: (near initialization for `jyunisi')
4: warning: excess elements in array initializer
4: warning: (near initialization for `jyunisi')
4: warning: excess elements in array initializer
4: warning: (near initialization for `jyunisi')
4: warning: excess elements in array initializer
4: warning: (near initialization for `jyunisi')
4: warning: excess elements in array initializer
4: warning: (near initialization for `jyunisi')
In function `main':
9: error: `jikkan' undeclared (first use in this function)
9: error: (Each undeclared identifier is reported only once
9: error: for each function it appears in.)

Execution terminated
365デフォルトの名無しさん:2010/10/20(水) 22:39:32
どうでもいいけど、普通十干の方を先にしないか?
366デフォルトの名無しさん:2010/10/20(水) 22:44:27
丙午、とかねえ。
367デフォルトの名無しさん:2010/10/20(水) 22:49:38
>>366
>>365 のは、配列宣言の順番のことを言ってるんだろうけど、
君のは全く理解できない。printf では順番合ってるよ。
368デフォルトの名無しさん:2010/10/20(水) 22:57:52
>>364
使ってるコンパイラが日本語に対応してないように見えるね。
DevC++JPプロジェクトあたりを参考にしてみてください。
369323:2010/10/20(水) 23:23:16
>>368
学校で使ってるのが英語版のやつなんですけど、
いままで日本語の表示もできていたんですけどね。
初心者でわからないことだらけですみません。
370デフォルトの名無しさん:2010/10/20(水) 23:34:13
文字コードが悪いだけだろ
371323:2010/10/21(木) 00:31:19
すみませんよくわからないのですが、どうなおしたらいいですか?
372 ◆/91kCCQXBo :2010/10/21(木) 04:05:22
直すというよりエラーを避ける・(から)逃げる。
{"子","丑","寅","卯","辰","巳","午","未","申\","酉","戌","亥"}
373デフォルトの名無しさん:2010/10/21(木) 05:28:51
>>371
OSは日本語を表示できるけどコンパイラが日本語を受け付けないって状況なんか?
だったら、文字列をファイルから読み込んだらどうよ....面倒くさいけど
374デフォルトの名無しさん:2010/10/21(木) 05:59:17
>>371
単に signed char に 0x80 以上の値が有るのを拒否されてる可能性が有るから

static char *jyunisi[12] = ....
static char *jikkan[10] = ....



static unsigned char *jyunisi[12] = ....
static unsigned char *jikkan[10] = ....

に修正するのを試してみてけれ
375デフォルトの名無しさん:2010/10/21(木) 07:40:49
>>374
エラーメッセージ読みとれない奴は回答禁止。
376デフォルトの名無しさん:2010/10/21(木) 08:27:29
>>375
通常 stray 〜 in program が出る場合はソース内に全角スペースが混入していて、
『はぐれた変な文字が入ってるよ』って意味で出てるんだけど >>345 のソースをコピペして bcc で動かすと動く訳よ
だからメッセージ通りの意味では無いと考えたら、日本語に対応してないコンパイラによって "" 内の文字列に
イチャモン付けてる可能性に思い当たった訳だ

メッセージ読めないとか勝手に決め付けられるのは不愉快だな
377デフォルトの名無しさん:2010/10/21(木) 08:51:10
>>371
とりあえず下記でもエラー出るか試してみてよ。
static wchar_t *test1[] = {L"子", L"丑"};
static wchar_t *test2[] = {U"子", U"丑"}; /* これはCでは非標準だが */

この場合、printfのフォーマットも%wとか%lsになったりするんだけども。
378 ◆/91kCCQXBo :2010/10/21(木) 10:30:54
> 学校で使ってるのが英語版のやつなんですけど、
> いままで日本語の表示もできていたんですけどね。
Dev-C++ 日本語版は、家にインストールしたんだけど、学校と同じ英語版は、
どこからダウンロードして、インストールすればいいの??
家でインストールしたのは英語版で、学校で使ってるのは日本語版だよ。たbん>>171
379デフォルトの名無しさん:2010/10/21(木) 13:13:34
>>376
エラーメッセージを正しく読みっていれば、>>374の修正は思い至らない。
あの修正で回避できる場合のエラーメッセージは全然違う。

だから読み取れないと言ったんだよ。 お前退場。
380デフォルトの名無しさん:2010/10/21(木) 13:13:56
c言語初心者です。
"入力文字列に小文字のアルファベットが何文字含まれているか出力せよ"
の問題が分かりません。
381デフォルトの名無しさん:2010/10/21(木) 13:14:41
[1] 授業単元:C言語基礎実習
[2] 問題文(含コード&リンク):次のような文字コードの表を出力せよ
 | 2 3 4 5 6 7
--+-------------------
0|   0 @ P ` p
     途中略
f| / ? O _ o SPC

[3] 環境
 [3.1] OS:Windows Vista Basic 32bit
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月22日午前9時まで
[5] その他の制限:0x7fに関してはSPCと表示させよ。
382デフォルトの名無しさん:2010/10/21(木) 13:21:33
>>380
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char **argv)
{
char buf[256];
char *p;
int lower_case_count;
scanf("%s", buf);
lower_case_count = 0;
for (p = buf; *p != '\0'; p++) {
if (islower(*p)) lower_case_count++;
}
printf("lower case count:%d\n", lower_case_count);
return EXIT_SUCCESS;
}
ビルド確認なし。動くかね?
383380:2010/10/21(木) 13:33:12
382さん
ビルドエラーが出ました。
エラー内容は、
'scanf' の宣言を確認してください。
loijh.obj : error LNK2005: _main は既に 65656565.obj で定義されています。

fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました

です。
384デフォルトの名無しさん:2010/10/21(木) 13:40:49
初心者過ぎるエラーで笑える
385デフォルトの名無しさん:2010/10/21(木) 13:43:16
テンプレも守れないエラーのさらし方も中途半端じゃこの先思いやられるな
386デフォルトの名無しさん:2010/10/21(木) 13:51:57
基本的に1つのプログラムでmain関数は一つです。
問題を小出しにして、後でそれをくっつけても動きません。
>>1にテンプレートがあるので、問題を整理して依頼してみては?
387デフォルトの名無しさん:2010/10/21(木) 14:06:32
>>381
#include <stdio.h>

int main(){
int i, j, c;
puts(" | 2 3 4 5 6 7");
puts("--|------------");
for (i = 0; i < 0x10; i++) {
printf(" %x|", i);
for (j = 2; j < 8; j++) {
c = i + j * 0x10;
if (c == 0x7f) {
printf("%s", " SPC");
} else {
printf(" %c", i + j * 0x10);
}

}
putchar('\n');
}
}
388デフォルトの名無しさん:2010/10/21(木) 14:15:43
インデントのないプログラムは受け付けないことになっている
389デフォルトの名無しさん:2010/10/21(木) 14:17:17
馬鹿には見えないインデントw
390381:2010/10/21(木) 14:17:55
>>387
ありがとうございます。
391デフォルトの名無しさん:2010/10/21(木) 14:22:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):入力した点から点まで直線を引くプログラミングを書く
二重配列a[i][j]を使う


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 今日中
[5] その他の制限: 特になし

392デフォルトの名無しさん:2010/10/21(木) 15:14:52
>>379
失礼 >>372 だったのね、理解した
393323:2010/10/21(木) 17:49:31
おかげさまでコンパイルしたときのエラーメッセージはでなくなったのですが、
今度は実行したあとにparameter errorとコマンドプロンプトに表示され瞬時に強制終了?
で消えてしまうのですが、なぜでしょうか。

ttp://home.catv.ne.jp/ff/knuhs/tools/devcpp-4.9.9.2_setup.exe
学校で使ってるのはここからダウンロードしたもので、
家でも同じものを使っています。
他の課題をやったときは日本語の表示は問題ありませんでした。
394デフォルトの名無しさん:2010/10/21(木) 18:04:08
>>393
プログラムをよく読め特に
if(argc<2) {puts("Parameter error."); return 1;}
の部分をよく読め
395デフォルトの名無しさん:2010/10/21(木) 18:06:27
あ、というかmainに引数を渡す方法を習ってないのかな
396323:2010/10/21(木) 18:09:20
>>395
習っていません。すみませんです。
397デフォルトの名無しさん:2010/10/21(木) 18:15:46
>>396
じゃあ
if(argc<2) {puts("Parameter error."); return 1;}を削って
sscanf(argv[1], "%d", &nen);

scanf( "%d", &nen);
にすると多分上手くいく、タメシテないけど
398323:2010/10/21(木) 18:22:32
>>397
ありがとうございます!無事出来ました。
ご教授していただいた方ありがとうございました。
またよろしく御願いします。
399デフォルトの名無しさん:2010/10/21(木) 18:30:29
>>391
Windows プログラムですか?どんなことを習いましたか?
400デフォルトの名無しさん:2010/10/21(木) 18:40:19
>>391
2次元配列を使うってのも謎だな
CUIベースで '*' でも使った線を引くって事かも?
401デフォルトの名無しさん:2010/10/21(木) 18:41:43
>[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
このテンプレ本当の初心者から見るとどう書いていいかわからんのかもね
402デフォルトの名無しさん:2010/10/21(木) 18:41:53
いいか、マジックで液晶画面上に(ry
403デフォルトの名無しさん:2010/10/21(木) 18:43:07
>>402
2次元配列を使ってねーじゃねーかw
404デフォルトの名無しさん:2010/10/21(木) 18:48:11
int main() {
int t[20][20];
printf("言うとおりにしてください。さもないと通報します。\n")
getch();
printf("油性マジックを右手にもってください\n");
getch();
printf("画面の左上か(略
405デフォルトの名無しさん:2010/10/21(木) 18:48:23
>>401
どこまで習っているかは分けたほうがいいかもね
406デフォルトの名無しさん:2010/10/21(木) 18:50:13
テンプレなんて変えても変えなくても一緒
407デフォルトの名無しさん:2010/10/21(木) 19:06:27
[1] 授業単元:プログラミング設計演習
[2] 問題文(含コード&リンク):
32ビットの2進数から、.で区切られた10進数のIPアドレスに変換してください
入力例
00000011100000001111111111111111
出力
3.128.255.255
[3] 環境
 [3.1] OS: WindowsXp
 [3.2] コンパイラ名とバージョン: VC++ 2010
 [3.3] 言語: どちらでも可
[4] 期限: 来週の木曜日
[5] その他の制限:特に無し
408デフォルトの名無しさん:2010/10/21(木) 19:12:08
>>391
傾きによる条件分けがめんどくさそうな気がしたのでゴリ押した
こういうことじゃなくて?

http://codepad.org/jTG5mbnx
409デフォルトの名無しさん:2010/10/21(木) 19:30:45
410デフォルトの名無しさん:2010/10/21(木) 19:47:26
>>409
strtolはありか?そこを聞いてる問題だと思ったが
まあ制限特に無しだからいいのかもしれんが
411デフォルトの名無しさん:2010/10/21(木) 20:07:54
>>391 ブレゼンハム
#include <stdio.h>
#include <stdlib.h>
#define WIDTH 79
#define HEIGHT 24
int main(void){
int data[HEIGHT][WIDTH]={{0}};
int x, y, start_x, start_y, end_x, end_y;
int diff_x, diff_y, dx, dy, d, d2, dx2, dy2, sx, sy, i;
scanf("%d%d", &start_x, &start_y);
scanf("%d%d", &end_x, &end_y);
diff_x=end_x-start_x; diff_y=end_y-start_y;
d=abs(diff_x);
if(d<abs(diff_y)) d=abs(diff_y);
sx=(diff_x<0)?-1:(diff_x>0); sy=(diff_y<0)?-1:(diff_y>0);
dx2=abs(diff_x)*2; dy2=abs(diff_y)*2;
d2=d*2;
dx=dy=d;
x=start_x; y=start_y;
for(i=0;i<=d;i++){
if(0<=x && x<WIDTH && 0<=y && y<=HEIGHT) data[y][x]=1;
dx+=dx2;
if(dx>=d2) dx-=d2, x+=sx;
dy+=dy2;
if(dy>=d2) dy-=d2, y+=sy;
}
for(y=0;y<HEIGHT;y++){
for(x=0;x<WIDTH;x++) putchar(data[y][x]?'*':' ');
putchar('\n');
}
return 0;
}
412デフォルトの名無しさん:2010/10/21(木) 20:14:44
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):空欄を埋てください。
問題はユーザーから入力された100個の点の座標について、最も近い二点間距離を表示するプログラムを作る。

#include<stdio.h>
#include<math.h>
#define NUM 100
typedef struct { double x, y; } COODINATE;
double dist(COODINATE, COODINATE);
void main(void)
{ int i, j;
COODINATE p[NUM];
double min;
for (i = 0; i < NUM; i++)
scanf("%lf %lf",&p[i].x, &p[i].y);

空欄

printf("Shotest distance = %lf\n", min);
}
double dist(COODINATE p0, COODINATE p1)
{return(sqrt((p0.x - p1.x) * (p0.x - p1.x) +
(p0.y - p1.y) * (p0.y - p1.y)));
}

 [3.1] OS: windows コンパイラ名とバージョン: bcc32 言語: C
[4] 期限:今週中

お願いします。
413デフォルトの名無しさん:2010/10/21(木) 20:20:27
>>412
for(i=0;i<NUM;i++)
for(j=i+1;j<NUM;j++)
if(j==1 || min>dist(p[i], p[j])) min=dist(p[i], p[j]);
414デフォルトの名無しさん:2010/10/21(木) 20:25:12
距離なんだからminを0で初期化しときゃいいだろw
415デフォルトの名無しさん:2010/10/21(木) 20:27:50
>>414
常に0って表示されるね。よく考えよう。
416デフォルトの名無しさん:2010/10/21(木) 20:30:45
minをmaxとでも勘違いしたのか?w
417デフォルトの名無しさん:2010/10/21(木) 20:34:10
>>413
ありがとうございます!
418デフォルトの名無しさん:2010/10/21(木) 20:34:25
double_max 近辺であぼーん
419デフォルトの名無しさん:2010/10/21(木) 20:36:32
min = dist(p[0], p[1]);
for(i = 0; i < NUM; i++) for(j = i + 1; j < NUM; j++) if(min > dist(p[i], p[j])) min = dist(p[i], p[j]);
の方が無駄な比較は少ない

もっと言えば
for(i = 0; i < NUM; i++) for(j = i + 1; j < NUM; j++) {
double temp = dist(p[i], p[j]);
if(min > temp) min = temp;
}
にして無駄な関数呼び出しも減らしたい
420デフォルトの名無しさん:2010/10/21(木) 20:39:24
>>419
dist(p[0], p[1]) を2回呼んでいるのは、無駄とは言わないの?
421デフォルトの名無しさん:2010/10/21(木) 20:41:06
どいつもこいつも
L2-ノルムの演算回数が多すぎる
O(n^2)は効率悪いと思うんだけど

ちょっと工夫してO(nlogn)だろJK
422デフォルトの名無しさん:2010/10/21(木) 20:48:14
>>421
工夫してみせてくれよ
423デフォルトの名無しさん:2010/10/21(木) 20:52:47
>>420
ループ内の最初の一回以外全部無駄なのと、ループ内の最初の一回だけが無駄なのと
どっちがいいかってことだろ
424デフォルトの名無しさん:2010/10/21(木) 21:06:59
>>423
でも、無駄な関数呼び出しには変わりない。以下のようにできるから。

min = dist(p[0], p[1]);
for (j = 2; j < NUM; j++) {
double temp = dist(p[0], p[j]);
if(min > temp ) min = temp;
}
for (i = 1; i < NUM - 1; i++) {
for (j = i + 1; j < NUM; j++) {
double temp = dist(p[i], p[j]);
if(min > temp ) min = temp;
}
}
425デフォルトの名無しさん:2010/10/21(木) 21:20:01
そこは、コードの長さとのトレードオフってことで
426デフォルトの名無しさん:2010/10/21(木) 22:03:51
>>425
「無駄」と言っている割には中途半端だと思っただけ。
427デフォルトの名無しさん:2010/10/21(木) 22:06:25
>>421
1秒以下の実行時間短縮のために、あなたは宿題にどのくらいの時間を消費する気?
はっきり言って、労力に効果が見合ってないよ。
428デフォルトの名無しさん:2010/10/21(木) 22:33:29
O(n^2)を避けれるものなら避けたいのはやまやまなんだが、
この課題の題意に沿ってかつ避けれる方法があるのだろうか?
ソートするにしても、まず2点間の距離を全部もとめなくてはならないのではないか。
429ワリオPV:2010/10/21(木) 22:37:55
初めまして。ワリオPVと申します。

学校の宿題で下記の図形を表示させるプログラムが出たのですが、
どうしても分かりません。

図形↓("_"はスペースの代わりです。)

**********
_**********
__**********
___**********
____**********
_____**********
______**********
_______**********
________**********
_________**********

レポート提出があるので、早めにお願いします(>_<)

では。
430デフォルトの名無しさん:2010/10/21(木) 22:38:42
点の範囲が1画面内とか(0<=x<800,0<=y<600とか)
座標は整数値のみとかならやりようもあるが
実数で∞範囲内だとしたら地道にやるしかないんじゃないの?
431デフォルトの名無しさん:2010/10/21(木) 22:41:47
>>429

#include <stdio.h>

int main(void)
{
int i,j ;
for ( i = 0 ; i < 10 ; i++ ){
for ( j = 0 ; j < i ; j++ ){
putchar(' ') ;
}
printf ( "**********\n" ) ;
}

}
432ワリオPV:2010/10/21(木) 22:44:01
>>431

おおおお!ちゃんと表示された!
ありがとうございました!m(_ _)m
433デフォルトの名無しさん:2010/10/21(木) 22:44:36
>>429
#include <stdio.h>

int main(void)
{
int i;

for(i = 0; i < 10; i++) printf("%*s\n", i + 10, "**********");

return 0;
}
434ワリオPV:2010/10/21(木) 22:48:49
>>433

そのような方法もあったのか・・・
プログラムっていろんなやり方があるのですね・・・
435デフォルトの名無しさん:2010/10/21(木) 22:56:19
>>421
一度Ο(nlogn)とかいてみたかったのですねよくわかりませんが
436デフォルトの名無しさん:2010/10/22(金) 00:15:29
しかし、2次元・3次元あるいは n 次元空間内異なる N 個が与えられたときに、n次元 L2-ノルム(ユークリッドノルム)が最大の2点あるいは最小の2点を求めるアルゴリズムはあるのかもしれない。>>421 は具体的な内容にはまったく触れていないが。
437デフォルトの名無しさん:2010/10/22(金) 00:40:07
最初見たときになんかありそうだなっと思った
科目名がアルゴリズムだしなんかあるのかもね
まあ421が何とかしてくれるでしょ
438デフォルトの名無しさん:2010/10/22(金) 00:47:32
Java に引き続いて、OpenOffice も oracle に食われてしまうのか。どちらにしても日本は蚊帳の外ですねえ。
439デフォルトの名無しさん:2010/10/22(金) 00:51:03
当たり前だ。
日本には食うものがない。
440デフォルトの名無しさん:2010/10/22(金) 01:23:36
>>437
おれもそう思って、今も考えてるんだけど、いい方法が思いつかん。
441デフォルトの名無しさん:2010/10/22(金) 01:30:18

#include <stdio.h>

int main()
{
char a[40];
int i,j;
char *p;
scanf("%s",&a);
scanf("%d",&i);
p=a;
for(j=0;j<5;j++){
putchar(*(p+j+i-1));
}
printf("\n");
return 0;
}

これを文字列の取り出しにポインタを使わない場合は
どのようにすればよいでしょうか?

文字列を入力し、指定した文字位置から5文字表示するプログラムです。
入力する文字列はアルファベットとなっています。
442デフォルトの名無しさん:2010/10/22(金) 01:33:10
>>441
#include <stdio.h>

int main()
{
char a[40];
int i,j;
scanf("%s",&a);
scanf("%d",&i);
for(j=0;j<5;j++){
putchar(a[j+i-1]); /* -1 ?? */
}
printf("\n");
return 0;
}
443デフォルトの名無しさん:2010/10/22(金) 01:39:13
私には見えていますから
CBIRとか圧縮とかやってるから日常的に使っているんだよなぁ

問題が最近傍探索だからいろいろあるのよ
ヒント与えたから実装は自分でやってね
別にライブラリ使ってもいいけどね

ハッシュ関数の性能にもよるけど、確率的な近似で良ければもっと抑えられるアルゴリズムがある
みんながCBIRに興味持ってくれたらうれしいかも

線形代数は素晴らしい
444デフォルトの名無しさん:2010/10/22(金) 01:44:04
>>442
ありがとうございます。
これと、ポインタを使う場合とは
どのような違いがあるかよければ教えてもらえませんか?
445デフォルトの名無しさん:2010/10/22(金) 02:56:20
>>443
最近傍探索で k-d treeを使ったことがあります。そのときは、絞り込んだ後は全幅探索になり、
データによっては最悪の場合もあって、そのときは全幅探索とかわりない、あるいは余計なお膳立てはしないほうが良かった、という結論に陥ってしまいました。
ノルム自体もユークリッドノルムはよくなくて、∞-ノルムをつかったりしましたがあまりパッとしたものではありませんでした。
今の計算機なら違った結果がでたかもしれませんけれども。

画像認識方面の方ですか?
446デフォルトの名無しさん:2010/10/22(金) 04:02:52
>>421 は最小値を求めるなら比較時はL1ノルムで良いと言いたいのではないだろうか?

O(n^2)以降が意味不明になるけど
447デフォルトの名無しさん:2010/10/22(金) 06:39:45
[1] 授業単元:C言語基礎実習
[2] 問題文(含コード&リンク):w x y zを入力して
w/x+y/zを計算するプログラムを作成せよ。
ただし例のように帯分数かつ、分母を約分して分数表示させること。
入力
w = 5
x = 3
y = 2
z = 4

表示
 5   2    1
---- + ---- = 2----
 3   4    6

ずれていたらすみません。
[3] 環境
 [3.1] OS:Windows Vista Basic 32bit
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月25日午前9時まで
[5] その他の制限:特に無し
448447:2010/10/22(金) 06:42:50
ひとつ条件を忘れてました。
計算した結果が整数になった場合は分数の部分は
表示しないということでお願いします。
449デフォルトの名無しさん:2010/10/22(金) 09:57:44
>>447
汚いけど一応答えは出るよ、main() の入力部分だけ自分で追加してね(c1, m1, c2, m2 )

ttp://codepad.org/ROciluu0
450449:2010/10/22(金) 09:59:38
張ってから気が付いたけど一箇所誤りが有った

73行目
× if( c > m ) {
○ if( c >= m ) {
451449:2010/10/22(金) 10:14:42
考えたら約分するのに因数分解する必要は無いな、これで良いや

ttp://codepad.org/C2zkQw5K
452デフォルトの名無しさん:2010/10/22(金) 18:56:42
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):
(1)下の画像のプログラムを3つに分割してください
(2)アクセス指定子をつけてください
http://imepita.jp/20101022/678990
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語: C++
[4] 期限: 2010年10月24日まで
[5] その他の制限: なるべく難しくしないでお願いします。 今習っているのはクラスとアクセス指定子です。
453デフォルトの名無しさん:2010/10/22(金) 19:11:37
>>452
seiseki.h と seiseki.cpp と main.cpp に分割しろって事か?
アクセス指定子は public って付いてるけど?
454デフォルトの名無しさん:2010/10/22(金) 19:12:05
>>452
3つのファイルに分割する、でいいのか?
ttp://codepad.org/CSjyyeuw
455デフォルトの名無しさん:2010/10/22(金) 19:34:16
[1]授業単元 情報処理
[2]問題文 大きさを入力して、半角文字*を使い、Xを描く。大きさは
Xの縦と横の半角文字数である。
[3]環境
[3-1]os: windows7
[3-2]コンパイラ名とバージョン:visualstdio2008
[3-3]C言語
[4]期限 2010/10/22
[5]繰り返し文までしか習っていません。
if文とfor文で書くこととのことです。おねがいいたします。さっぱりわかりません。
456デフォルトの名無しさん:2010/10/22(金) 19:48:08
#define N 100;
#include <stdio.h>

int main (void)
{
int i,j;
int num[100],flag[100];
int sumprime=0,sumflag=0;

for(i=0;i<N;i++){
num[i]=num[i]+1;
for(j=0;j<N;j++){
for(i=2;i<N/2;i;;){
flag[i]=0;
457デフォルトの名無しさん:2010/10/22(金) 19:49:26
else{
while(num[j]>=1){
if(num[i]%j!=0){
flag[i]=1;
sumprime+=num[i];
}else{
flag[i]=0;
break;

}
}
}
}

}
}
for(i=0;i<N;i++){
sumflag+=flag[i];
}

printf("1から100までの素数 %d,和 %d ",sumflag,sumprime);
return 0 ;
}

エラーが出ますが、何が原因なのでしょうか?教えてください
458デフォルトの名無しさん:2010/10/22(金) 20:17:31
457の頭のelseに対応するifはどこだよ
459デフォルトの名無しさん:2010/10/22(金) 20:18:20
エラー内容を書かないのは最近の流行なのか?
460デフォルトの名無しさん:2010/10/22(金) 20:25:08
宿題をもらう人のそれぞれの環境なんて判らないからだろ
461デフォルトの名無しさん:2010/10/22(金) 20:26:24
>>455

#include <stdio.h>

int main ( void )
{
int i, j ;
int size ;

printf ( "大きさ入力:" ) ;
scanf ( "%d", &size ) ;

for ( i = 0 ; i < size ; i++ ){
for ( j = 0 ; j < size ; j++ ){
if ( j==i || j==size-i-1 ){
printf ( "%c", '*' ) ;
}
else{
printf ( "%c", ' ' ) ;
}
}
printf ( "\n" ) ;
}

return 0 ;
}
462デフォルトの名無しさん:2010/10/22(金) 20:44:27
>>457
それを消してもまだエラーになります
463デフォルトの名無しさん:2010/10/22(金) 21:07:08
>>456-457
問題を教えてください。
なにがしたいのかさっぱりわかりません。
464デフォルトの名無しさん:2010/10/22(金) 21:09:51
エラトステネスの篩がしたいのか?
配列の使い方がめちゃくちゃだが
465デフォルトの名無しさん:2010/10/22(金) 21:33:01
>>461
有難うございました。完璧です!
助かりました。
466デフォルトの名無しさん:2010/10/22(金) 21:36:51
>>463-464

1から100までの素数を求める問題です
467デフォルトの名無しさん:2010/10/22(金) 21:39:48
それはわかるんだが、コードが何をしようとしてるのかわからない
468デフォルトの名無しさん:2010/10/22(金) 21:41:49
>>467
そもそもこのプログラム自体が間違っているということでしょうか?
469デフォルトの名無しさん:2010/10/22(金) 22:04:36
一行目から何をしてるつもりなのか説明してみてはくれないか?
470デフォルトの名無しさん:2010/10/22(金) 22:35:49
>>443
N が十分に小さいなら、O(nlogn) のアルゴリズムを動かすために必要な下準備で
動的にメモリ確保して DB とか平衡木を作っている間に、
O(n^2)のアルゴリズムが終了するよ。
そんなこともわからずに、文句を言う奴は恥の極みだな。
471デフォルトの名無しさん:2010/10/22(金) 22:36:52
終わった話にいつまでもしつこい奴だな
472ワリオPV:2010/10/22(金) 22:55:47
キーボードから入力した10個の正数データを配列dataに格納し、入力データの
最大値と最小値を画面に出力するプログラムが分かりません。
今のところプログラムはこんな感じです。
#include<stdio.h>
int main(void)
{
int data[11] = {0,0,0,0,0,0,0,0,0,0,0};
int a,b,max,min;
a=0;
b=0;
max=0;
min=0;
while(a>=9)
{
scanf("%d\n",data[b]);
a++;
b++;
}
printf("max=%d",max);
return 0;
}
しかし、何回やっても
9421 [main] Q13 1864 _cygtls::handle_exceptions: Error while dumping state (p
robably corrupted stack)
Segmentation fault (core dumped)
上の様なエラーが出てしまいます。
原因と合わせて教えてもらえると幸いです。よろしくお願いします。><

473デフォルトの名無しさん:2010/10/22(金) 23:01:11
>>472
while(a>=9)
{
a++;
474デフォルトの名無しさん:2010/10/22(金) 23:14:26
>>470
痛いとこ付くねw
475デフォルトの名無しさん:2010/10/22(金) 23:17:00
まあ実際はループに入ることはないんだけどなw
476デフォルトの名無しさん:2010/10/22(金) 23:21:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):2次元の部分的連続配列の総和のなかで最大のものを調べよ
出力は部分的連続配列の左上と右下の要素の第1、第2の添字にせよ
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: VC++2010
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限: 標準的なレベルでお願いします
後からあれは使えないこれは使えないと追加注文するかもしれません

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10951.txt
ここまで書いたんですがうまくいかないようです
どこを書き換えたらいいんでしょう
出来ればその理由も添えていただくとありがたいです
477デフォルトの名無しさん:2010/10/22(金) 23:29:54
16行目が間違ってました
for文の初期値は l = j です
これでもうまくいきませんでした
478デフォルトの名無しさん:2010/10/22(金) 23:34:53
>>476-477
>後からあれは使えないこれは使えないと追加注文するかもしれません
生意気すぎるよ。自分でやれ
479デフォルトの名無しさん:2010/10/22(金) 23:45:26
まだ初心者だからそもそも使えないものがわからないってことです
480デフォルトの名無しさん:2010/10/22(金) 23:49:52
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):
(1)文字列を入力してその文字列のデータサイズを求めて表示させるプログラムを作成せよ。
 実行例:
   >入力文字列は? 大阪府
   >文字列"大阪府"のデータサイズは 7byte


ヒント:
入力文字列を一時保存するための入力バッファchar buf[256];を用意する
文字列の大きさは関数strlenで求めることができる。string.hをインクルード
文字列は最後にnull文字'\0'が入っており、strlenで求めた大きさにはnull文字は含まれないので注意すること。

(2)char*型配列 char *ps[10];を用意する。
キーボードから10個の文字列を入力し、入力された文字列を配列ps[]に格納せよ。
ただし、文字列は動的確保を用いて文字列の大きさ分だけを確保し、余分なメモリをしようしないようにせよ。
すべての文字列を入力し終わったら、ps[]に格納された文字列を順にディスプレイに表示させよ。

ヒント:
最初にps[]の初期化としてps[]の各要素にNULLを代入しておく。
配列の動的確保も変数と同様に配列データの大きさ分(byte)をmallocで確保すればよい。
プログラムの最後で、ps[]の各要素に対して、動的確保したメモリを開放するのを忘れないこと。

[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C


数年前に少しC言語やったくらいで内容が全然思い出せない。授業ではLinuxでやってるけど、
一応、自宅でもできるようにcpad for borland c++compilerを入れといたからこれで確認してみる。
お願いします。
481デフォルトの名無しさん:2010/10/22(金) 23:50:47
>>479
それなら、何なら使ってよいのか列挙した方が良いんじゃないの。
返事もらって、それはダメって言われるより、回答する方も手間がかからないだろ。
482デフォルトの名無しさん:2010/10/22(金) 23:56:53
>>481
そうですね
printf, scanf, for, if, while, break, 配列, マクロ, 関数, 再帰
が使えます

ポインタと構造体は使わないでください
483デフォルトの名無しさん:2010/10/23(土) 00:01:18
>>482
6つもネストされたforループ文なんて見たくもないです
書き直すので「部分的連続配列」が何を指してるのか具体的に説明して
484デフォルトの名無しさん:2010/10/23(土) 00:04:06
ansに何を入れたらいいのかも良く分からん
485デフォルトの名無しさん:2010/10/23(土) 00:04:26
ポインタの使えないscanfなんて…
486デフォルトの名無しさん:2010/10/23(土) 00:06:34
>>476
・幅は M - i まで
・total += a[k][l];
・(i == 0 && j == 0 && w == 0 && h == 0)←必要なの?
・maxの初期値がない
487デフォルトの名無しさん:2010/10/23(土) 00:37:03
[1] 授業単元:C++入門
[2] 問題文(含コード&リンク):e^x(自然対数)をテイラー展開したとき、x=1で計算した場合の
自然対数の値の近似値を求めなさい。なお、計算処理は第4項までとする。
[3] 環境
 [3.1] OS: Windows 
 [3.2] コンパイラ名とバージョン: VisualC++
 [3.3] 言語: C++
[4] 期限:2010年10月26日
[5] その他の制限:#include <stdio.h>から始めること
488デフォルトの名無しさん:2010/10/23(土) 00:46:27
>>480
(2)は(1)を踏まえてってことだよね?

http://codepad.org/iwdkaEon
489デフォルトの名無しさん:2010/10/23(土) 01:46:40
>>471
何をもって「終わった話」と判定しているのか知らんが、
状況によってアルゴリズムを使い分けられなかったら、半人前以下なのは間違いない。
490デフォルトの名無しさん:2010/10/23(土) 01:49:07
議論がしたいなら別行けってことじゃね?
491デフォルトの名無しさん:2010/10/23(土) 01:50:07
べっ、別に int main() でも良いんだからねっ♥
492デフォルトの名無しさん:2010/10/23(土) 01:54:19
>>486
>・(i == 0 && j == 0 && w == 0 && h == 0)←必要なの?
>・maxの初期値がない
初期値がないから上の条件が必要なんじゃないか?
493デフォルトの名無しさん:2010/10/23(土) 01:58:55
>>492
あー、そういうことか。納得しました
ループ始める前に初期値入れる方法で考えてた。
494デフォルトの名無しさん:2010/10/23(土) 03:17:12
>>487
お願いします
495デフォルトの名無しさん:2010/10/23(土) 03:18:00
>470
確かにあなたの言う通りですね、私の負けでいいですよ
一応聞いておきますが、Nが十分小さいときのNの値はいくらでしょうか

『珠玉のプログラミング』をお薦めする
496デフォルトの名無しさん:2010/10/23(土) 03:22:18
>>487
マクローリン展開(x = 0のまわりでのテイラー展開)の間違いではないですか?
497デフォルトの名無しさん:2010/10/23(土) 03:33:22
>>496
e^x=1+x/1!+x^2/2!+x^3/3!+....というものです。
問題文にテイラー展開と書いてあったのでそうかなと
498デフォルトの名無しさん:2010/10/23(土) 03:49:52
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
0列目に学籍番号,1-4列目の要素に各テストの点数が格納されている二次元配列がある.
全科目総点で昇順に並べ替えを行い,結果を表示するプログラムを作成せよ.
int seiseki[5][5]= {{1, 75, 68, 45, 91},
{2, 87, 5, 100, 61},
{3, 45, 79, 81, 77},
{4, 53, 55, 55, 66},
{5, 82, 32, 85, 74},
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年10月25日

全科目総点を出すところまでは導けたのですが並び替えがさっぱり・・・
for、if、配列の参照ぐらいしか習ってないです、よろしくお願いします
499デフォルトの名無しさん:2010/10/23(土) 03:51:48
>>487
#include <stdio.h>
#include <math.h>

double exp2(double x)
{
double e, c;
int i;
for (e = 0, c = 1, i = 0; i < 4; e += 1.0 / c * x, c *= ++i);
return e;
}
int main(void)
{
printf("%f, %f\n", exp(1.0), exp2(1.0));
return 0;
}
500デフォルトの名無しさん:2010/10/23(土) 03:59:51
>>453
多分seisekiでいいんだと思います…
Personクラスというのをを3つに分けたら
Person.h Person.cpp Pers_prog.cppらしいです。

>>454
このプログラムを3つに分割するって書いてあるので、大丈夫だと思います。ありがとうございます
501デフォルトの名無しさん:2010/10/23(土) 04:06:52
>>453
これって2行目とか3行目の書き方って特殊な書き方でしょうか?これ習ってないと思うんですが…
502デフォルトの名無しさん:2010/10/23(土) 04:10:17
>>499
もう少し簡素な奴をお願いします
503デフォルトの名無しさん:2010/10/23(土) 04:14:29
504デフォルトの名無しさん:2010/10/23(土) 04:17:06
>>502
十分すぎるくらい簡素だと思うのですが、どの点が簡素でないと感じたのでしょうか。
それがわからないと、かきなおしようがないと思います。
505デフォルトの名無しさん:2010/10/23(土) 04:23:20
#include <math.h>
double exp2(double x)はわかりません。

int main(void) で全てできるようにしたいのです。
506デフォルトの名無しさん:2010/10/23(土) 04:29:02
>>503
途中までやった自分のと比べて美しすぎる・・・
ありがとうございました!
507デフォルトの名無しさん:2010/10/23(土) 04:37:02
>>505
#include <stdio.h>
int main(void) {
double e, c, x;
int i;
for (e = 0, c = 1, i = 0; i < 4; e += 1.0 / c * 1.0, c *= ++i)
;
printf("e=%f\n", e);
return 0;
}
508デフォルトの名無しさん:2010/10/23(土) 06:09:24
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):窓移動法
j=|k|kbitの整数。
while j>=0 do
if k[j]=0 then q=2*q j=j-1
else do
tをj-t+1<=5とk[t]=1である最少の整数とする。
h[j]=(k[j]k[j-1]..k[t])_2
q=(2^(j-t+1))*q+p
j=t-1
[3] 環境
 [3.1] OS:Cygwin
 [3.2] コンパイラ名とバージョン: (gcc 4.3.4)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: [無期限]
[5] その他の制限: 多倍長演算ライブラリ使用
巨大整数から奇数整数ビット列を抜き出すプログラムです
509デフォルトの名無しさん:2010/10/23(土) 07:23:03
>>487
#include <stdio.h>
int main(void) {
double e,b;
int a,n;
printf("Input n > "); scanf("%d",&n);
for(a=1,b=1.0,e=1.0; a<n; a++) { b/=(double)a; e+=b; }
printf("%lf\n",e);
return 0;
}
510デフォルトの名無しさん:2010/10/23(土) 08:08:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):文字列を保持する文字配列を三つ宣言し、
キーボード入力で文字列を与える その後文字数の少ない順に入れ替え、その結果を表示するプログラムを作成せよ
実行例
入力0 ; aaa
入力1 ; aaaaa
入力2 ; aaaaaa
結果
0 ; aa 1; aaaaa 2 ; aaaaaa
[3] 環境
 [3.1] OS: Windows 
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:無制限
[5] その他の制限:
char tmp[30]
if(strlen(a) < strlen(b){
strcpy(tmp, a); //上記3文の使用
よろしくお願いします
511デフォルトの名無しさん:2010/10/23(土) 11:06:44
>>508
多倍長演算ライブラリ使用とありますが、
どのようなライブラリが紹介されましたか?あるいは自分で作らなければならないのですか?
512デフォルトの名無しさん:2010/10/23(土) 11:12:51
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
コマンド行から複数の数値を受け取りその平均値を出力するプログラムを
作成し、プログラムリストと実行結果を示せ。ヒント:受け取った文字列を
double型に変換するには、関数double atof(const char *nPtr)を使う。
この関数を使うには<stdlib.h>のインクルードが必要である。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[]="1.41421356";
double x;
x = atof(str);
}
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年10月25日まで

よろしくお願いします。
513デフォルトの名無しさん:2010/10/23(土) 11:25:15
>>511
LiDIAが使われています。
514デフォルトの名無しさん:2010/10/23(土) 11:48:48
>>495
実行環境のCPUやメモリの階層構造、ライブラリの出来にも依存するから、一概に決められない。
ハードウェアの知識が少しでもあったら、そんな質問はありえないと思うが。

時間制約はあるのか、どれくらいの計算精度が必要かなど、
プログラムを使う人の要望によっても、使用するアルゴリズムは違うだろ。
ループ依存のないアルゴリズムは、並列化が楽ってこともあるし。
何でもかんでもアルゴリズムのオーダを下げればよいというもんでもないというのは知っておくべき。
515デフォルトの名無しさん:2010/10/23(土) 11:50:49
他所でやれ
516 ◆/91kCCQXBo :2010/10/23(土) 13:00:20
自分でやれ
>>512
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
  int count = 0;
  double total = 0.0;
  /* コマンド行から複数の数値を受け取る */
  if(argc <= 1) {puts("ERR"); return 1;}
  for( argc--, count = 1; count <= argc; count++ ) {
    total += atof(argv[count]);
  }
  count--;
  printf("平均=%g\n", total/count);
}
517480:2010/10/23(土) 13:19:45
>>488
ありがとう!ありがとう!
やってることはだいたいわかるんだが自分じゃプログラム書けないんだよなぁ
これから勉強せねば
518デフォルトの名無しさん:2010/10/23(土) 13:36:59
>>476です
部分的連続配列ってのは
ある2次元配列a[i][j]のなかにある2次元配列b[k][l]のことです
例えばa[5][5]のとき部分的連続配列はb[1][1]からb[5][5]まであります
またb[1][1]はとりかたが25通りありますし、b[2][4]のように縦と横の比が変わったものもそう呼ぶようです
519デフォルトの名無しさん:2010/10/23(土) 15:04:14
520デフォルトの名無しさん:2010/10/23(土) 15:19:39
>>519
>scanf("%d", &a[i][j]);
ひょっとしてこれはポインタを使っているじゃないんですか
>>482
>ポインタと構造体は使わないでください

521デフォルトの名無しさん:2010/10/23(土) 15:23:02
>>520
>>476自身が使っている箇所なので、ご自身でお直し下さい
522デフォルトの名無しさん:2010/10/23(土) 15:35:25
>>476
>>476 に示されたソースに沿う形(若干変更していますが)書き直してみました。
デバッグコードも置いたままになっているので参考になるかと。
http://codepad.org/D4lZOXkQ
523デフォルトの名無しさん:2010/10/23(土) 15:42:55
>>519
たくさん表示されてどれが答えかわからないんですけど。
あとちゃんと最大なものが求められていませんけど。
524デフォルトの名無しさん:2010/10/23(土) 15:47:36
>>523
部分的連続配列はb[1][1]からb[5][5]までの、それぞれの最大値です。
全ての中から最大値を求める問題であるなら、それはb[5][5]ではないでしょうか?
525デフォルトの名無しさん:2010/10/23(土) 16:02:39
>>302
◆QZaw55cn4c が宿題を有償で解くスレです。
トリップつきで問題を投稿してください。

◆QZaw55cn4c から受諾のレスがあったら、○○銀行普通口座△△△△△△△に1000円振り込んでください。手数料は振り込み主持ちです。
◆QZaw55cn4c の受諾のレスには期限が記されています。
◆QZaw55cn4c はその期限内に宿題の回答のアップロード先を投稿いたします。

受諾のレスがあったにもかかわらず期限までに回答がアップロードされなかった場合には、返金いたします。
その他の場合には返金いたしません。

小遣い稼ぎにはなりそうですね。規制がかかったときにどうするかが課題でしょうね。
526デフォルトの名無しさん:2010/10/23(土) 16:08:50
>>524
配列の要素が負の数である可能性があります。
527デフォルトの名無しさん:2010/10/23(土) 16:15:40
>>525
せっかく酉着けてるんだから銀行振込よりモリタポの方が簡単かも
528デフォルトの名無しさん:2010/10/23(土) 16:19:44
◆QZaw55cn4cの回答を添削してあげてる人はいくらもらえんの?
529デフォルトの名無しさん:2010/10/23(土) 16:26:06
>>528
支払い方法さえ確立できるのであれば、それはもう倍お渡ししてもいいくらいの気持ちです。
530 ◆QZaw55cn4c :2010/10/23(土) 16:46:26
>>510
他に回答がなかったら、これでも使ってください。
http://codepad.org/hMstBppC
531デフォルトの名無しさん:2010/10/23(土) 16:46:29
添削箇所が一箇所増えるごとに倍倍に増やしたりはしないのか?
532デフォルトの名無しさん:2010/10/23(土) 16:55:14
>>531
Knuth でもしなかったことですから、それは勘弁してくださいな。
533デフォルトの名無しさん:2010/10/23(土) 17:01:05
>>526

間違いがありました。負の数も考慮しました。


http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10953.txt
534デフォルトの名無しさん:2010/10/23(土) 17:38:15
>>533
うまくうごきますね。
535デフォルトの名無しさん:2010/10/23(土) 22:38:35
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
入力:二つの整数n,m
出力:1からnまでの番号札を持った人が、番号順に円陣を組んでいる。
     最初に、1番札の人からm番目の人が退席する(円陣は1減)
     続いて、その次からm番目の人が退席する。これを繰り返したときの、
     退席者の順番を求め、出力せよ。
    -例:n = 9,m = 5のとき、退席者の順番は5,1,7,4,3,6,9,2,8
[3] 環境
 [3.1] OS: Windows 
 [3.2] コンパイラ名とバージョン: VisualC++
 [3.3] 言語: C++
[4] 期限:2010年10月26日
[5] その他の制限:#include <stdio.h>から始めること
         mainの中身もお願いします。

よろしくお願いします。
536デフォルトの名無しさん:2010/10/23(土) 23:02:55
#include <iostream>
using namespace std;
int main()
{
int n, m;
cout << "n = ";
cin >> n;
cout << "m = ";
cin >> m;

int *p = new int[n];
for(int i = 0; i < n; ++i) p[i] = i + 1;

for(int i = 0, pos = 0; i < n; ++i) {
int *q = p + i;
pos = (pos + m - 1) % (n - i);
int temp = q[pos];
for(int j = pos; j > 0; --j) q[j] = q[j - 1];
q[0] = temp;
}

for(int i = 0; i < n; ++i) cout << p[i] << ' ';

delete [] p;
}
537デフォルトの名無しさん:2010/10/23(土) 23:06:33
>>530
何回も言うけど、問題文から制限までちゃんと読め。
538デフォルトの名無しさん:2010/10/23(土) 23:07:28
よく見たら#include <stdio.h>からかよw

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

int main(void)
{
int i, j, n, m, temp, *p, *q, pos;

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

p = malloc(n * sizeof(int));

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

for(i = pos = 0; i < n; i++) {
q = p + i;
pos = (pos + m - 1) % (n - i);
temp = q[pos];
for(j = pos; j > 0; j--) q[j] = q[j - 1];
q[0] = temp;
}

for(i = 0; i < n; i++) printf("%d ", p[i]);

free(p);

return 0;
}
539デフォルトの名無しさん:2010/10/23(土) 23:41:12
>>537
ええ。
文字型配列を使え、例の3行をいれろ、という指示は敢えて無視しています。
文字列を扱うのに、長さに限度のある配列を使うというのは嫌いなんです。
だいたい、
if (strlen(a) < strlen(b)) {
strcpy( ...
という書き方ならば、プログラムの最後で変数 c, b, a の順に表示させるのか、というところまで気に食わない。

だから、「他に回答がなければ」という断りをいれました。
多分他の方が題意にそったちゃんとした回答をかいてくれるでしょう。
540デフォルトの名無しさん:2010/10/23(土) 23:50:20
無視するぐらいなら最初から書くなよw
541デフォルトの名無しさん:2010/10/23(土) 23:50:51
>>539
それならば、解答方法に問題があるだろ。
使えないものを使ってくれってどういう意味だよ。
題意は満たしてないので参考程度に~、とか、誤解を招かない書き方はあるよね。
542デフォルトの名無しさん:2010/10/23(土) 23:54:53
>>540-541
それもそうですね。なにもしらない回答者にやつあたりしても仕方がないですね。

>>510
>>530 は取り下げます。他の方の回答をお待ちください。
543デフォルトの名無しさん:2010/10/23(土) 23:59:40
書こうと思えばいくらでも簡易に書けるのに
ワザワザ妙な書きかたするのは自分の知識を自慢したいとかそういう意識が働くのだろうか?
544デフォルトの名無しさん:2010/10/24(日) 00:02:46
若いのさ
545デフォルトの名無しさん:2010/10/24(日) 00:02:52
丸写しである事が簡単に検出できるように
546デフォルトの名無しさん:2010/10/24(日) 00:04:08
>>543
そう取られても仕方がないとは思いますが、実は純粋にわがままなおこちゃまというだけでしたね。スレ汚し失礼しました。
547デフォルトの名無しさん:2010/10/24(日) 00:07:42
>>546
>>543 の言いたいことを正しく理解できてないよ。
getline 関数はもっと読みやすい綺麗なコードで書けるって言ってるんだよ。
548デフォルトの名無しさん:2010/10/24(日) 00:27:30
>>547
そうですか‥‥‥。
これまでにも getline() もできうる限り簡略化してきたのですが、まだ足りませんか。うーん
549デフォルトの名無しさん:2010/10/24(日) 00:34:56
ゲロ以下の臭いがプンプンする
550デフォルトの名無しさん:2010/10/24(日) 00:36:17
必要なのは簡易に書く事じゃなくて空気を読む事だと思われ
551デフォルトの名無しさん:2010/10/24(日) 00:42:49
日本語もまともに読めないようなアホにそんなことが期待できるわけもなく
552デフォルトの名無しさん:2010/10/24(日) 01:10:52
getline()...確かになんじゃこりゃだな
>>551
まともに読めないじゃなく、読んでも宿題だろうが仕事だろうが依頼者の意向
は無視し全て俺俺の好きなようにやる性格
553デフォルトの名無しさん:2010/10/24(日) 01:12:55
空気を読め、とは、これまた加齢臭のする言葉ですね。
554デフォルトの名無しさん:2010/10/24(日) 01:18:38
>>552
今までの宿題で、ちゃんと題意を把握できてたことのほうが少ないだろw
555デフォルトの名無しさん:2010/10/24(日) 01:21:13
>>553
ついに言いがかりまでつけはじめたw
556デフォルトの名無しさん:2010/10/24(日) 01:24:35
◆QZaw55cn4cの特徴ガイドライン

1:事実に対して仮定を持ち出す
2:ごくまれな反例をとりあげる
3:自分に有利な将来像を予想する
4:主観で決め付ける
5:資料を示さず自論が支持されていると思わせる
6:一見関係ありそうで関係ない話を始める
7:陰謀であると力説する
8:知能障害を起こす
9:自分の見解を述べずに人格批判をする
10:ありえない解決策を図る
11:レッテル貼りをする
12:決着した話を経緯を無視して蒸し返す
13:勝利宣言をする
14:細かい部分のミスを指摘し相手を無知と認識させる
15:新しい概念が全て正しいのだとミスリードする
557デフォルトの名無しさん:2010/10/24(日) 01:31:23
たまに覗く程度だから流れがわからんが
あんま解答者を攻めると答えづらくなるからやめたほうがいいでないかい
558デフォルトの名無しさん:2010/10/24(日) 01:38:10
流れを知ってる人間からするとそんな玉じゃないから大丈夫
この程度で答えづらくなるくらいの神経が有ればまだ良かったのだが
559デフォルトの名無しさん:2010/10/24(日) 01:42:34
そうそう。
けれどもすごいコードがあがってくるとかなりめげます。
560デフォルトの名無しさん:2010/10/24(日) 01:44:23
だから、求められてるのはすごいコードじゃなくて
題意に沿ったコードなんだってば
561デフォルトの名無しさん:2010/10/24(日) 01:45:39
他所でやれ
562デフォルトの名無しさん:2010/10/24(日) 02:57:38
>>548
業務なら簡素化できるとかよりワークバッファが小さすぎて効率が悪いって突っ込まれるな
再帰で使われるような関数でないならスタックに1Kや2K積んでも誰も文句は言わんよ
563デフォルトの名無しさん:2010/10/24(日) 04:11:13
[4] 期限:無制限って、釣り?
564デフォルトの名無しさん:2010/10/24(日) 04:19:14
>>563
うちの大学だと
提出しなくてもいいけどすると成績上げますよ
的なやつだと特に期限がきられないことがある
565デフォルトの名無しさん:2010/10/24(日) 04:38:17
それなら講義の最終日とかを期限に設定しておいて欲しいところだ
実際は最終日に提出したんじゃ間に合わないだろうけど
566デフォルトの名無しさん:2010/10/24(日) 09:54:08
カレンダー、完全数の課題こいやー
567デフォルトの名無しさん:2010/10/24(日) 11:34:01
まあどうせすぐ答えられるか答えられずに流れていくかだから
期限とかそんなに関係ないけどね
568ワリオPV:2010/10/24(日) 11:42:21
[1] 授業単元 ビット演算:
[2] キーボードから16進数の数値を入力し、左に2ビットシフトさせた値を16進数で出力するプログラムを作成しなさい。なお、左ビットシフト演算子は「<<」である。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 本日17:00まで
[5] その他の制限 出来るだけ早くお願いします!><

今はこんな感じです。間違いがあったら指摘してもらえると幸いです。
#include<stdio.h>
int main(void)
{
int n;
scanf("%x",&n);

n = n << 2;

printf("%#x\n",n);// "%#x\n"←16進で%x #=>0x
return 0;
}
569デフォルトの名無しさん:2010/10/24(日) 11:46:00
>>562
その部分は #define で自由に変えることができるように作りました。
570デフォルトの名無しさん:2010/10/24(日) 11:52:00
以前に解いていただいた方申し訳ありません。
以前、
[1] 授業単元:C言語基礎実習
[2] 問題文(含コード&リンク):w x y zを入力して
w/x+y/zを計算するプログラムを作成せよ。
ただし例のように帯分数かつ、分母を約分して分数表示させること。
入力
w = 5
x = 3
y = 2
z = 4

表示
 5   2     1
---- + ---- = 2----
 3   4     6
ずれていたらすみません。
[3] 環境
 [3.1] OS:Windows Vista Basic 32bit
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月25日午前9時まで
[5] その他の制限:特に無し
というものをといていただき学校に提出したのですが、
sprintf、<string.h>、<stdlib.h>を使わないで解きなさい。といわれました。
そこでどなたか前述のものを使わないで解いたものを作っていただきたいです。

あと、出力(表示)される左側二つの分数は約分などはせず、入力した時のそのままの数字で表示して、
一番右側の計算結果については、約分できるときは約分して、また、その答えが整数になったときは
その整数のみを表示するようにするそうです。
お願いします。
571デフォルトの名無しさん:2010/10/24(日) 12:52:05
>>570
解いた人だけど >>451 にはバグが有ったよ、表に出ないバグだから多分気が付かなかったと思うけど

えー stdlib.h も使えないの?だったら itoa() も使えないよなぁ
さすがに面倒だな

入力部分は約分も整数の切り出しもしないって事?
572 ◆QZaw55cn4c :2010/10/24(日) 13:35:16
573デフォルトの名無しさん:2010/10/24(日) 13:40:43
頭の悪い分岐だw
574デフォルトの名無しさん:2010/10/24(日) 14:11:45
int main() 笑ですから
575デフォルトの名無しさん:2010/10/24(日) 14:15:21
ここまで簡単にしてって言われてるなら再帰も普通にダメそうな気もするんだが
576451:2010/10/24(日) 14:50:12
>>570
書き直したけど先に簡単な回答をした人が居たね、gcm なんて知らんかったよ
表示の桁合わせを考慮しないなら sprintf() も使う必要無いから、講師が求めてた回答は >>572 みたいなのだと思う
よってアップするのは止めとくね
577デフォルトの名無しさん:2010/10/24(日) 14:50:30
>>575
それもそうですね。

>>570
修正しました。
http://codepad.org/1gcgwUog
578デフォルトの名無しさん:2010/10/24(日) 15:10:42
>>577
ユークリッドの互除法のところがなんかおかしい
a = b ;って何?
579デフォルトの名無しさん:2010/10/24(日) 15:16:09
>>578
ご指摘感謝。

>>570
度重なる修正すみません。
http://codepad.org/TIddlyEv
580デフォルトの名無しさん:2010/10/24(日) 18:19:27
>>516
ありがとうございます。
581デフォルトの名無しさん:2010/10/24(日) 18:35:02
582デフォルトの名無しさん:2010/10/24(日) 18:38:00
エラーメッセージをコピペすると死ぬの?
583570:2010/10/24(日) 18:49:10
>>597
ありがとうございます。
たぶん講師が求めているのはこういう回答だと思うので
これで提出できそうです。
584デフォルトの名無しさん:2010/10/24(日) 18:50:16
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
1000以下の素数を表示するプログラムを作成せよ。
素数とは1とそれ自身以外に約数をもたない自然数である。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年10月27日
[5] その他の制限:ポインタまで習っています。

よろしくお願いします。
585デフォルトの名無しさん:2010/10/24(日) 19:09:19
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):入力された"short型"変数を
2進数で表示するプログラムを作って提出せよ。
入力された値までの2進数は全て表示すること
下にサンプルを記しておく。
input>5
0:0
1:1
2:10
3:11
4:100
5:101

[3] 環境
 [3.1] OS:Windows XP HOME
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:2010年10月29日
[5] その他の制限:ありません。
586デフォルトの名無しさん:2010/10/24(日) 19:14:01
587デフォルトの名無しさん:2010/10/24(日) 19:18:19
>>584

#include <stdio.h>
#define NUM 1001
int main()
{
int i, j;
char no[NUM];

for (i = 2; i < NUM; i++)
no[i] = 1;
for (i = 2; i < NUM; i++) {
if (i * i > NUM)
break;
if (no[i] == 0)
continue;
for (j = i; j < NUM; j++) {
if (i * j >= NUM)
break;
no[i * j] = 0;
}
}
for (i = 2; i < NUM; i++)
if (no[i] == 1)
printf("%d ", i);
printf("\n");

return 0;
}
588デフォルトの名無しさん:2010/10/24(日) 19:54:03
>>585
#include <stdio.h>

int main(void)
{
short i, j, n, d = 0, a[16] = {0};

scanf("%hd", &n);

for(i = 0; ; i++) {
printf("%d:", i);
for(j = d; j >= 0; j--) printf("%d", a[j]);
putchar('\n');
if(i == n) break;
for(j = 0; (a[j] ^= 1) == 0; j++);
if(j > d) d = j;
}

return 0;
}
589デフォルトの名無しさん:2010/10/24(日) 19:57:50
>>585
これって負数が入ったらどうするの?

#include <stdio.h>

int main ( void )
{
int i, j, n ;

printf ( "input>" ) ;
scanf ( "%hd", &n ) ;

for ( i = 0 ; i <= n ; i++ ){
printf ( "%d : ", i ) ;
for ( j = 0 ; j<sizeof(short)<<3 ; j++){
if ( (i>>j) == 0 )break ;
}
for ( j-=(i>0); j >= 0 ; j-- ){
printf ( "%d", (i&1<<j)>0 ) ;
}
putchar ( '\n' ) ;
}

return 0 ;
}
590デフォルトの名無しさん:2010/10/24(日) 19:58:44
>>581
[1] 授業単元:
[2] 問題文(含コード&リンク):>>581
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (Visual C++ 2008)
 [3.3] 言語: (C)
[4] 期限: ( [無期限] )
[5] その他の制限: 構文エラーを直してほしいです

591デフォルトの名無しさん:2010/10/24(日) 20:05:27
#include <stdio.h>

int main(int argc, char **argv) {
  short value;
  printf("input>");
  scanf("%d", &value);

  int i;
  char cmd[100];
  for(i=0; i<=value; i++){
    sprintf(cmd, "echo \"obase=2; %d\" | bc", i);
    system(cmd);
  }
  return 0;
}
592585:2010/10/24(日) 20:13:07
>>589
ごめんなさい。説明不足でした。
「0未満の数の入力は考えない(されない)ものとする」です。
593デフォルトの名無しさん:2010/10/24(日) 20:16:11
[1] 授業単元:プログラム実習
[2] 問題文(含コード&リンク):nとrを入力して
順列 nPr と組み合わせ nCr を表示するものを作成すること。
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C言語
[4] 期限:明日の15時までです。
[5] その他の制限:<stdio.h>のみで解くこと。
よろしくお願いします。
594593:2010/10/24(日) 20:18:56
訂正します。
>[2] 問題文(含コード&リンク):nとrを入力して
>順列 nPr と組み合わせ nCr を表示するものを作成すること。
[2] 問題文(含コード&リンク):nとrを入力して
順列 nPr と組み合わせ nCr を計算したときの値を表示するものを作成すること。
595デフォルトの名無しさん:2010/10/24(日) 20:50:56
>>590
何をするのかしらんが、構文エラーがなくなればよいんだろ
これでエラーなくなる
#include<stdio.h>

int main(void)
{
return 0;
}
596デフォルトの名無しさん:2010/10/24(日) 21:27:55
>>590
これで合ってるか?
http://codepad.org/oC2rdnr6
597 ◆QZaw55cn4c :2010/10/24(日) 21:45:15
598デフォルトの名無しさん:2010/10/24(日) 21:50:53
599 ◆QZaw55cn4c :2010/10/24(日) 21:53:06
600デフォルトの名無しさん:2010/10/24(日) 22:00:52
今回答用に久しぶりにC触ったら
for(int i=0;i<n;i++)
で怒られた、やりづらくて仕方ないな
601デフォルトの名無しさん:2010/10/24(日) 22:19:01
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
入力:二つの整数n,m
出力:1からnまでの番号札を持った人が、番号順に円陣を組んでいる。
     最初に、1番札の人からm番目の人が退席する(円陣は1減)
     続いて、その次からm番目の人が退席する。これを繰り返したときの、
     退席者の順番を求め、出力せよ。
    -例:n = 9,m = 5のとき、退席者の順番は5,1,7,4,3,6,9,2,8
[3] 環境
 [3.1] OS: Windows 
 [3.2] コンパイラ名とバージョン: VisualC++
 [3.3] 言語: C++
[4] 期限:2010年10月26日
[5] その他の制限:#include <stdio.h>から始めること
         mainの中身もお願いします。

538が実行できませんでした。
よろしくお願いします。
602593:2010/10/24(日) 22:25:45
>>598-599
ありがとう!
603デフォルトの名無しさん:2010/10/24(日) 22:27:51
>>601
VCだとscanfで警告は出るかもしれないけど、実行できないってことはないだろ
604デフォルトの名無しさん:2010/10/24(日) 22:35:56
エラーコードを貼ったら負けだと思っているの?
605デフォルトの名無しさん:2010/10/24(日) 22:37:34
malloc(stdlib.h)は使っちゃだめって話?
606デフォルトの名無しさん:2010/10/24(日) 22:39:19
>>604
invailed conversion from 'void*' to 'int*'
このようなエラーコードが出ました。
607デフォルトの名無しさん:2010/10/24(日) 22:40:44
>>606
それくらい自分でなんとかしようや

p = (int*)malloc(n * sizeof(int));
608デフォルトの名無しさん:2010/10/24(日) 22:41:47
答えを教えるより勉強の仕方を教えた方がいいと思うの
609デフォルトの名無しさん:2010/10/24(日) 22:42:35
このスレの趣旨に合わん
610デフォルトの名無しさん:2010/10/24(日) 22:42:44
http://codepad.org/77L9Igyf
バブルソートの問題です。
96~102行目だけを変えて(ここを考える問題なんですが)
正解と同じ実行結果にしなければいけません。
学校の演習システムで採点しているようで出力がちょっとでも違うと
正解にならないようです。
助けてください
611デフォルトの名無しさん:2010/10/24(日) 22:49:23
>>538を直して実行しても000000としか出力されません。
どこをどうしたらいいでしょうか?
612デフォルトの名無しさん:2010/10/24(日) 22:50:32
#include <stdio.h>で始めさせておいて、C++でコンパイルしてんのかよw
613デフォルトの名無しさん:2010/10/24(日) 22:52:49
俺もそう思ったが「授業単元:C++」である以上黙って飲み込んだ
614デフォルトの名無しさん:2010/10/24(日) 22:53:04
>for(i = 0; i < n; i++) p[i] = i + 1;
この一文を消したんじゃね?
615デフォルトの名無しさん:2010/10/24(日) 22:53:39
>>612
ではC++で実行するにはどうしたらいいですか?
616593:2010/10/24(日) 22:58:42
>>598
すみません。ちょっと違ってます。順列のときの結果の値が不適当です
617デフォルトの名無しさん:2010/10/24(日) 23:01:11
>>615
どうするもなにも、いまC++で実行してるんだろw
618デフォルトの名無しさん:2010/10/24(日) 23:08:26
619616:2010/10/24(日) 23:11:48
順列のときではなく組み合わせのときです。
失礼しました
620デフォルトの名無しさん:2010/10/24(日) 23:12:41
>>316
これって実行しても何も出てこないのはなぜでしょうか…
data.txtってメモ帳で保存すればいいんですよね…
621 ◆QZaw55cn4c :2010/10/24(日) 23:14:16
>>610
プログラムはバブルソートとマージソートを組み合わせたものですが、
こちらで実行してみると、うまく動いています。
なにが問題なのでしょうか?
622デフォルトの名無しさん:2010/10/24(日) 23:14:55
>>618
n に 1000 より大きい数を入れたら、楽しいことができそうだな。
623デフォルトの名無しさん:2010/10/24(日) 23:20:41
>>620
>>312 が大元だったかな。
前回聞いたときもちゃんと教えられてるような気がするが…。
リダイレクトを使ってプログラムにデータを入力してください。
624デフォルトの名無しさん:2010/10/24(日) 23:24:52
>>623
./a.out < data.txt
の形ってどういう意味なんでしょうか
625デフォルトの名無しさん:2010/10/24(日) 23:27:04
リダイレクトプログラム(?)ください
626 ◆QZaw55cn4c :2010/10/24(日) 23:27:32
>>620
データの読み込みがうまくいっているかどうかを確認するロジックを組み込みました。(あと若干修正しています。)
http://codepad.org/Mzm6A6CF

これをコンパイルした結果できた実行ファイルを a.out とします。
またデータとしてファイル data.txt を次のように作ります。
3 4 2
5 1 3
0 0 2
1 9 2
4 4 4

ここでコマンドラインから
./a.out < data.txt
と入力すると、
1: 3, 4, 2
2: 5, 1, 3
3: 0, 0, 2
4: 1, 9, 2
5: 4, 4, 4
max = 9.05539
min = 2.23607
とこちらでは表示されます。

以上のうち、どこか違うところがあれば、そのポイントを詳しくおしえてください。
可能な限りのフォローはします。
627デフォルトの名無しさん:2010/10/24(日) 23:40:32
>>624
環境は Linux ですか、それとも Windows ですか。
>>277 を見る限りでは Linux のようでしたけれども。
628デフォルトの名無しさん:2010/10/24(日) 23:42:06
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク)
問題1 10と20の和を、変数を使用して表示するプログラムを作成せよ。
問題2 キーボードから整数を1つ入力し、その度にそれまでの合計値を表示するプログラムを作成せよ。
問題3 下記の料理のレシピを表示するプログラムを作成しなさい.

今日は(料理名)を作りましょう。
( 材料 1) は何グラム必要ですか:
( 材料 2) は何グラム必要ですか:
==レシピ==
「(料理名)を作るには, (改行)
( 材料 1) を ( 分量 ) グラムと ( 材料 2) を ( 分量 ) グラムが必要です」

*( )内の料理名や材料には自分の好きな名前を考えてください。
* 分量はキーボードから入力した値を使用してください。

下段の参考プログラムを参考に printf 関数内で %s や %d を使用 して、文字列(料理名・材料名)や数値(分量)を表示すること。[3] 環境
問題4 風林火山を、2つのputs関数を使用して表示するプログラムを作成しなさい
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:10月25日
[5] その他の制限: なし

よろしくお願いします。
629デフォルトの名無しさん:2010/10/24(日) 23:45:03
>>626
今は家なんでvisual c++で行ってるんですが、何も出てきません…でも、結果はそう出るんですよね
630デフォルトの名無しさん:2010/10/24(日) 23:54:27
まさか、 PowerShell 使ってないよね?
631デフォルトの名無しさん:2010/10/24(日) 23:54:39
>>629
>コマンドラインから
>./a.out < data.txt
>と入力する
これちゃんとやってる?
632 ◆QZaw55cn4c :2010/10/24(日) 23:59:49
>>629
VC ならば、コンパイルしたプログラムを「コマンドラインで」実行してみてください。

スタート→プログラム→VC++ →Visual Studio Tools→Visual Studio コマンドプロンプトを起動して、
そこでコンパイルなどの作業を行えば Linux の場合とほぼ同じようにすることができます。

ソースファイル名は ○○○.cpp
コンパイルの方法は cl ○○○.cpp
実行ファイルは、○○○.exe になります。
633デフォルトの名無しさん:2010/10/25(月) 00:00:29
>>630
visual c++でコンパイルして出てくる黒いのを使ってるんですが。

>>631
デバック→デバックなしで開始を押した後に出てくる黒い所に./a.out < data.txtと入れればいいんですよね
634デフォルトの名無しさん:2010/10/25(月) 00:02:13
>>631
vcなのに./a.out < data.txtって

635デフォルトの名無しさん:2010/10/25(月) 00:04:27
>>632
コマンドプロンプトが出たら何と入れればいいんですか
636デフォルトの名無しさん:2010/10/25(月) 00:09:54
edlin data.txt
637デフォルトの名無しさん:2010/10/25(月) 00:10:02
>>635
VC では、実行ファイル名は a.out ではないと思います。
でも、VC を動かす人じゃないので詳しいことはわかりません。
>>632 を試してみてください。
638デフォルトの名無しさん:2010/10/25(月) 00:13:31
>>636
New file
*
って出てきました
639デフォルトの名無しさん:2010/10/25(月) 00:15:15
そこで
3 4 2
5 1 3
0 0 2
1 9 2
4 4 4
キー入力する
640デフォルトの名無しさん:2010/10/25(月) 00:17:05
素直にifstreamで開いてあげればいいじゃん
なんで変わったことしようとするの?
641デフォルトの名無しさん:2010/10/25(月) 00:19:54
>>639
今度はedlin data.txtって入れたら、End of input fileって出てきてしまいました。
で、数字入れたら、Entry errorと出てきます
642デフォルトの名無しさん:2010/10/25(月) 00:21:08
>>633
>デバック→デバックなしで開始を押した後に出てくる黒い所
VSを起動して状況をつかみました。
この場合はファイルのデータを入力することができません。
直接座標データを入力してください。
3 1 2<リターン>
1 2 3<リターン>
<Ctrl+Z><リターン>
すると max と min が表示されます。
元のプログラムは標準入力からデータを入力するようにつくられているので、この「黒いところ」ではこうやってデータを入力するしかありません。
643デフォルトの名無しさん:2010/10/25(月) 00:21:47
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
(1)ある10人の年齢がint score[] = {21, 70, 17, 12, 15, 80, 55, 43, 34, 48};
で与えられている時、年齢の平均を求めるプログラムを作成せよ。
ただし、ユーザー定義関数averageを定義してプログラムを作成すること。
※第一引数として年齢データの配列、第二引数として人数を受け取り、平均値を返すこと。
              
(2)(1)の年齢をそれぞれ二乗して足した値の平均値を求めるプログラムを作成せよ。
  ただし、ユーザー定義関数averageを定義してプログラムを作成すること。
※第一引数として年齢データの配列、第二引数として人数を受け取り、平均値を返すこと。
※(2)についてはプロトタイプ宣言を使用すること。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:2010年10月25日18:00まで
[5] その他の制限:※で示した以外は特にありません。

少し多いですがよろしくお願いします
644デフォルトの名無しさん:2010/10/25(月) 00:22:49
>>640
getline命の◆QZaw55cn4c のコードだから
getlineを意地でも使う
645デフォルトの名無しさん:2010/10/25(月) 00:27:04
なんか覚えたての中学生みたいな奴だな
もう少し大人になればいいのに
646デフォルトの名無しさん:2010/10/25(月) 00:27:16
>>642
じゃあファイル作った意味ってないんですか…
でも、結果さえ出れば大丈夫ですかね
647デフォルトの名無しさん:2010/10/25(月) 00:28:31
>>644
もうしわけないが、c++ なので拙作のgetline() はつかえません。

linux で作業しているものと考えていたので、標準入力からのリダイレクトが簡単だし良く知られているだろうと踏んだのですが、Windows の VC を使うなど、仮定が違っていましたね。
648 ◆QZaw55cn4c :2010/10/25(月) 00:31:01
>>646
linux で作業しているものと思っていたんです。(教えてくれればよかったのですが。)

>>642 がうまくいきましたか?うまく行ったのなら、それがこのプログラムの仕様です。
Windows の cmd.exe から実行させる方法をご存知であれば、ファイルからデータを流し込む方法も使えます。
649デフォルトの名無しさん:2010/10/25(月) 00:32:23
単にリダイレクト常識って言いたかっただけちゃうんかと
650デフォルトの名無しさん:2010/10/25(月) 00:32:45
>>648
ごめんなさい。でも、とりあえず数字は出てきました
651デフォルトの名無しさん:2010/10/25(月) 00:33:06

今時、コマンドプロンプトから、cl なんて打つ奴いないんだろうなあw
652デフォルトの名無しさん:2010/10/25(月) 00:37:17
>>651
確かにバッチファイルを書く人くらいかもね。
実行ファイルにファイルをドラッグして入力できるしな。
653デフォルトの名無しさん:2010/10/25(月) 00:38:15
>>651
linux でもそうだったらちょっとショックですね。
654デフォルトの名無しさん:2010/10/25(月) 02:15:54
キーボードにより配列へデータを入力させ,
その配列データの数値の平均を関数 mean() に
より計算させたい.
以下の条件を満たしたプログラムを作成せよ.
ただし,関数 mean() は,引数なし,戻り値なしとする.
void mean(void)
{
}
「ヒント」
1)本プログラムのどこかに、「double data[100];」を宣言しておく。
2)本プログラムのどこかに「double heikin;」と「int kosuu;」を宣言しておく。
3)main 関数内で,配列data[] へ入力したいデータの個数 kosuu をキーボード入力させる.
4)main 関数内で,double型配列 data[]にキーボードで数値を入力させる.
5)関数 mean() の内部で 配列 data[]の値の平均を計算させる.
6)main 関数内で,関数 mean()で計算した結果をprintfで表示させる
*/
#include<stdio.h>
int main(void)
{
int i;
printf("データ個数(100個以下):");
scanf("%d",&kosuu);
printf("平均値=%d\n",heikin);
return (0);
}
/* 平均値を計算する関数 */
void mean(void)
{
}
これどうやるの?
655デフォルトの名無しさん:2010/10/25(月) 03:27:20
656デフォルトの名無しさん:2010/10/25(月) 04:32:53
>>654
グローバル変数の使用を強要する問題ってなんか凄いな
657デフォルトの名無しさん:2010/10/25(月) 08:06:55
staticを理解している事の確認も課題の一つかもしれない。
>>656よりは頭が良い奴が考えてると思うぞ。w
658デフォルトの名無しさん:2010/10/25(月) 08:24:28
>>655
ありがとうございます。
double data[100]をグローバルに指定するんですね。
見てみると「そうか!」と思いました。
659デフォルトの名無しさん:2010/10/25(月) 08:27:05
>>656
この手の解法ががちがちに決まってるタイプは
直前の授業まんまなことが多いから、きっとこの宿題の前の授業がグローバル変数だったんだよ
660デフォルトの名無しさん:2010/10/25(月) 08:43:31
>>659
そうなんですよ。
自動と静的、グローバルとローカルをやったんですよ。
661デフォルトの名無しさん:2010/10/25(月) 12:10:04
どんな授業をしているか分からないけどひどい宿題が多いな
662デフォルトの名無しさん:2010/10/25(月) 12:19:08
出席点代わりだからな
そんなもんだろ
663デフォルトの名無しさん:2010/10/25(月) 12:24:06
>>657
別に static である必要はないじゃろ?
664デフォルトの名無しさん:2010/10/25(月) 12:41:27
665デフォルトの名無しさん:2010/10/25(月) 14:16:27
>>628
http://codepad.org/KjhS9yGm

問題4はよう分からん
666デフォルトの名無しさん:2010/10/25(月) 16:11:56
>>664
ありがとうございました
667デフォルトの名無しさん:2010/10/25(月) 18:24:32
>>665
問題4の解答にワロタ
授業に出ていないとどんな解答が良いのかが解らんような感じだな
668デフォルトの名無しさん:2010/10/25(月) 18:40:34
>>628
void mondai4(void)
{
puts("風\n林");
puts("火\n山");
}
669デフォルトの名無しさん:2010/10/25(月) 18:43:56
風林火山絡みで木刀のAAでも描けば良かったかな。
670デフォルトの名無しさん:2010/10/25(月) 22:57:06
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):nとrを入力して
組み合わせの数nCrを求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows 7
 [3.2] コンパイラ名とバージョン:ないのでideoneを使っています。
 [3.3] 言語:C言語
[4] 期限:2010年10月29日まで
[5] その他の制限:なし
671デフォルトの名無しさん:2010/10/25(月) 23:02:28
> [3.2] コンパイラ名とバージョン:ないのでideoneを使っています。

これやめようよー
MinGWとかあるんだからさー
672デフォルトの名無しさん:2010/10/25(月) 23:20:11
[1] 授業単元:コンピュータ工学
[2] 問題文(含コード&リンク):
入力した値を一桁ずつ足してその合計を表示させよ。
サンプル
input please→31415
3 + 1 + 4 + 1 + 5 = 14
ルール:
stdio以外使わないこと。
配列、シフト演算子、ポインタは使わないこと。
数字の表示はprintfとし、%c %dしか使ってはいけない。
負の数が入力されるまで、入力の動作を繰り返すようにすること。
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:Visual Studio
 [3.3] 言語:C
[4] 期限:2010年11月01日
[5] その他の制限:ありません。
673デフォルトの名無しさん:2010/10/25(月) 23:29:33
>>670

#include <stdio.h>

int main ( void )
{
int i ;
int n, r ;
int tn=1,tr=1 ;

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

tn = n ; tr = r ;

for ( i = 1 ; i < r ; i++ ){
tn *= (n-i) ;
}
for ( i = r-1 ; i > 1 ; i-- ){
tr *= i ;
}

printf ( "%dC%d = %d通り\n", n, r, tn/tr ) ;
}
674 ◆QZaw55cn4c :2010/10/25(月) 23:52:44
675デフォルトの名無しさん:2010/10/25(月) 23:54:55
>>673
入力されたn, r で上書きするのに tn, tr を 1 で初期化してる意味がわからない。
というか、そもそも tr の必要性を感じない。
tr *= i; のところは tn /= i; ではダメなの?
あと、n < 1 とか n < r のようなエラーとするべき場合が考慮されてない。
676デフォルトの名無しさん:2010/10/25(月) 23:57:15
n < 1とかのエラーの考慮を突っ込んでるくせに
標準入力なかったときのエラーはいいのかよwww
677デフォルトの名無しさん:2010/10/25(月) 23:57:32
◆QZaw55cn4cのトリ外しイビリが始まりました
678デフォルトの名無しさん:2010/10/25(月) 23:58:27
要は自分より速く張られるのが気に入らないだけだろ
679 ◆QZaw55cn4c :2010/10/26(火) 00:04:26
私ならば敬体でコメントを入れます。
あと、>>673 の類題は >>599 で解いています。この回答は、>>675 の指摘がそのまま当てはまってしまいます、残念ながら。
自分がしていないことを他人に突っ込んだりはしませんが。

自分より早く問題が解かれることに対しては、やっぱり悔しいと感じるのは認めます。
680277:2010/10/26(火) 00:11:22
やっぱりテキストからデータを読み込むのはできないんでしょうか。普通に入力しかできないんですよね…
681デフォルトの名無しさん:2010/10/26(火) 00:12:41
>>680
少し待っていただけますか。>>640 から指摘もあったことですので、書き直します。
682デフォルトの名無しさん:2010/10/26(火) 00:14:38
>>680
リダイレクト(CLI) で調べるか、fopen 使ったプログラムに直してください。
683デフォルトの名無しさん:2010/10/26(火) 00:15:33
コマンドライン引数でファイル名受け取ったらダメなん
684デフォルトの名無しさん:2010/10/26(火) 00:17:40
>>676
「標準入力なかったとき」というのが意味不明だが、
正しい標準入力されなかったときと解釈するならば、
scanf の戻り値チェックも加えておく必要があるね。
685277:2010/10/26(火) 00:19:28
>>681
はい。ごめんなさい。
686 ◆QZaw55cn4c :2010/10/26(火) 00:24:50
>>680
http://codepad.org/GZNswf5O
実行ファイルと同じディレクトリ(フォルダ)にある data.txt を読み出します。
VC(VS) のデバッグを使って確かめるときは data.txt の場所に注意してください。
具体的にどこにおけばいいかは、私はちょっとわかりません。(VC を常用してないのです。)
687デフォルトの名無しさん:2010/10/26(火) 00:28:43
>>452の問2を教えてください。
問1は、ファイルを3つに分割するって事は3つファイルを作るんですか?
688687:2010/10/26(火) 00:32:21
あと、クラスの継承ってまだ習ってないんです
689デフォルトの名無しさん:2010/10/26(火) 00:36:29
>>672を作ってみました
スレチですが暇な人誰か添削してください。
http://codepad.org/5mgLaHSP
690689:2010/10/26(火) 00:39:30
あ、表示printf限定でしたね読んでませんでした
691デフォルトの名無しさん:2010/10/26(火) 00:52:02
>>687
>>452なの?
692デフォルトの名無しさん:2010/10/26(火) 02:17:47
>>672
codepad重すぎワロタ

#include <stdio.h>
#define ASCII_MAGIC 48

int main( void )
{
int c, nc, sum;

nc = 0;
sum = 0;
printf("input please->");
while((c=getchar()) != EOF)
{
++nc;

if (c == '-')
break;
sum += (c - ASCII_MAGIC);
if (nc != 1)
printf(" + ");
putchar(c);
}

printf(" = %d\n", sum);

return 0;
}

input please->31415-1
3 + 1 + 4 + 1 + 5 = 14
693692:2010/10/26(火) 02:28:54
あぁダメか。
putchar(c); は printf("%c", c); だな。
694デフォルトの名無しさん:2010/10/26(火) 02:49:42
>>689-670
>>692-693
結婚しろw
695デフォルトの名無しさん:2010/10/26(火) 02:50:32
おっと、>>699-670だった
696デフォルトの名無しさん:2010/10/26(火) 02:51:08
また安価ミスった、死のう
697デフォルトの名無しさん:2010/10/26(火) 05:35:00
>>692
動かしてみたの?
getchar() とprintf(), putchar() を交互に実行すると、最後に有る結果になるとは思えないんだけど
698デフォルトの名無しさん:2010/10/26(火) 09:37:48
>>692

if (c == '-')



if (c == '\x\a')

にしたらうまく動いた
699デフォルトの名無しさん:2010/10/26(火) 09:38:35
マチゴタ

×'\x\a'
○'\x0a'
700デフォルトの名無しさん:2010/10/26(火) 10:23:26
このプログラムの標準偏差の値が正しく表示されるように書き換えてもらえませんか?
現状では計算結果がおかしいので・・・。どうかお願いします。
#include <stdio.h>
#include <math.h>

double ave(int v[],int n)
{
int i;
double sum=0;
for(i=0; i<n; i++)
sum += v[i];

return sum/n;
}

double ave2(int v[], int n)
{
int i;
double sum=0;
for(i=0; i<n; i++)
sum += pow(v[i],2);

return sum/n;
}
701700:2010/10/26(火) 10:24:30
コードの続きです
double std(int v[], int n)
{

int i;
int sa[10];
double average = ave(sa,n);
for(i=0; i<10; i++) sa[i]=average-v[i];

return sqrt(ave2(sa,n));

}

int main(void)

{


int score[] = {25, 63, 72, 54, 92, 35, 89, 95, 44, 69};
double std_score;

std_score= std(score, 10);
printf("標準偏差= %lf\n", std_score);

return 0;

}

702デフォルトの名無しさん:2010/10/26(火) 10:28:06
double ave2(int v[], int n)
{
int i;
double sum=0;
double a = ave(v, n), b;
for(i=0; i<n; i++) {
b = v[i] - a;
sum += b * b;
}
return sum/n;
}
703700:2010/10/26(火) 10:38:45
>>702
助かりました、ありがとうございます
704デフォルトの名無しさん:2010/10/26(火) 11:47:46
>>697
なるけどおかしいの?
705デフォルトの名無しさん:2010/10/26(火) 11:50:25
デフォルト設定ではまぜちゃいけないことがあるのは
C++でのstreamなやつとC標準関数じゃないかしら
706デフォルトの名無しさん:2010/10/26(火) 12:06:01
sync_with_stdio()を呼び出しておけばいいよ
707670:2010/10/26(火) 12:26:46
>>673
ありがとうございます。
708デフォルトの名無しさん:2010/10/26(火) 12:30:03
>>684
これが結構難しいです。
scanf("%d", &n)
に対して文字列(たとえば ttt とか) が入ると、この ttt を取り除く方法がわかりません。
fgets() で取り除くしかないか、とか、じゃあ、scanf() をやめて fgets() + atoi() にするか、すると stdlib.h がいるなあ、とか、考えあぐねています。
709デフォルトの名無しさん:2010/10/26(火) 12:33:02
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):0から1024の間の数値を繰り返し入力して
入力回数、最大値、最小値を求めるプログラムを作成せよ。
範囲外の数値が入力されたとき終了する。
範囲外の数値は入力回数、最大値、最小値には含めない。
最初の入力で範囲外の数が入力された場合は 入力回数0 とのみ表示する
[3] 環境
 [3.1] OS:Windows 7
 [3.2] コンパイラ名とバージョン:ないのでideoneを使っています。
 [3.3] 言語:C言語
[4] 期限:2010年10月29日まで
[5] その他の制限:なし
710デフォルトの名無しさん:2010/10/26(火) 13:24:00
711デフォルトの名無しさん:2010/10/26(火) 15:39:33
>>708
fflush(stdin) ;

じゃだめなの?
712デフォルトの名無しさん:2010/10/26(火) 15:43:55
>>711
ダメダメ
713デフォルトの名無しさん:2010/10/26(火) 15:53:34
◆QZaw55cn4cはほんとにキモイなぁ
714デフォルトの名無しさん:2010/10/26(火) 16:07:26
アホには一緒に見えるのかw
715デフォルトの名無しさん:2010/10/26(火) 16:31:57
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)

問題1
整数型配列に格納された5個の整数{8,5,12,7,9}を大きい数の順番(降順)に並べ替えて表示するプログラムを作れ。
並び替えの方法は、まず全体の最大値を選び、つぎにその最大値である数値を除いた中の最大値を求め…という方法(通称、馬鹿ソート)を使うこと。
[ヒント]2個の配列変数(1つは元データ用、1つは並び替えたデータ用)を使うと容易
問題2
問題1について「降順」を「昇順」に変えたプログラムを作成せよ。
結果は5、7、8、9、12
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:10月27日
[5] その他の制限: なし

よろしくお願いします。
716デフォルトの名無しさん:2010/10/26(火) 16:42:04
>>711
それはMSのCのみの思い切り機種依存してる方法
他のコンパイラでfflush(stdin);をした場合は動作未定義
717デフォルトの名無しさん:2010/10/26(火) 16:43:07
>>715
馬鹿ソート?関数名も baka_sort でいいのか?
718デフォルトの名無しさん:2010/10/26(火) 16:50:54
2個の配列を使うって逆になんかめんどいな
719709:2010/10/26(火) 17:37:19
>>709
ありがとうございます。
720デフォルトの名無しさん:2010/10/26(火) 17:47:08
>>717
馬鹿はちょっとあれなんで、ちょっとかっこよくidiot_sort位でお願いします
>>718
1つの配列で交換を行ってソートする馬鹿ソートはネットにコードがたくさん示されているので
2個でらしいです
721デフォルトの名無しさん:2010/10/26(火) 17:51:15
選択ソートをわざわざ二つの配列を使ってするから”馬鹿”ソートなのか
722デフォルトの名無しさん:2010/10/26(火) 17:58:28
裸の王様ソートとか
723デフォルトの名無しさん:2010/10/26(火) 18:22:14
>>708
フォーマットに従っていない入力を受け付けられるようにする必要性を感じないな。
「フォーマットエラー」とか受け付けられるフォーマットの形式を出力して終了で良いんじゃないの。
724デフォルトの名無しさん:2010/10/26(火) 18:25:42
バブルだろw
725デフォルトの名無しさん:2010/10/26(火) 18:45:30
>>713
◆QZaw55cn4cの人気に嫉妬
726デフォルトの名無しさん:2010/10/26(火) 18:57:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
ハニング窓を適用して、フーリエ変換するようなプログラムを作成せよ。

以下のように作ってみましたが、うまくいかないのでお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10957.txt
ちなみに、fft.cのプログラムは以下の通りです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10956.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年10月31日
[5] その他の制限:特にありません。よろしくお願いします。
727デフォルトの名無しさん:2010/10/26(火) 19:31:02
>>726
コードを見る限り、ヘッダファイルは足りないし、コンパイルできても入力ファイルもかなり限定的みたいだし。
何がうまくいかないのか言ってくれないと全くわからないのでサポートのしようがないな。

とりあえずハニング窓を作ってても、使ってないみたいだけど?
728デフォルトの名無しさん:2010/10/26(火) 20:08:47
いやぁ〜年収1千万円程度の貧乏人だから、ソートはいつも
バブルソートなんです ><;
729709:2010/10/26(火) 20:12:43
>>725
私は◆QZaw55cn4cさんは好きですよ。
すぐに回答してくれますし、
連続で質問しても嫌な感じもせずにこなしてくれますしね
730デフォルトの名無しさん:2010/10/26(火) 20:15:38
自演くせーw
731デフォルトの名無しさん:2010/10/26(火) 20:18:13
798 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/10(日) 20:19:04
最近ideone君と◆QZaw55cn4cは自作自演なんじゃないかと思い始めて来た
732デフォルトの名無しさん:2010/10/26(火) 20:19:26
自演じゃなくてマジでですよ
なぜかこのスレIDが表示されないから自演に見られるのな
733デフォルトの名無しさん:2010/10/26(火) 20:21:09
どっちにも好かれたくないな
734デフォルトの名無しさん:2010/10/26(火) 20:26:35
つべこで言わないで◆QZaw55cn4cより先に宿題片付けろよ
735デフォルトの名無しさん:2010/10/26(火) 20:27:03
ああ、人の話をろくに聞かないあたり似たもの同士だしな
736デフォルトの名無しさん:2010/10/26(火) 20:32:16
やっぱり自演かw
737デフォルトの名無しさん:2010/10/26(火) 20:45:12
738 ◆QZaw55cn4c :2010/10/26(火) 20:59:09
739デフォルトの名無しさん:2010/10/26(火) 20:59:48
740 ◆QZaw55cn4c :2010/10/26(火) 22:08:41
>>684
fgets()+ sscanf() で期待していた動きが可能であることがわかりました。
>>672
修正いたします。
http://codepad.org/uhqxU51u
741デフォルトの名無しさん:2010/10/26(火) 22:22:11
>>740
buff に static が付いている意味が分からん。
sum に足し込んでる m % 10 をどこかに覚えておけば、出力が簡単になるのに…。
N 桁までしかサポートしないなら、覚えておく配列だって長さ N で済むじゃんか。
742デフォルトの名無しさん:2010/10/26(火) 22:28:58
>>740>>741
もっと単純に buff を1文字ずつ出力すればいいの。
%c 使えるんだから。
743デフォルトの名無しさん:2010/10/26(火) 23:50:10
a
744デフォルトの名無しさん:2010/10/27(水) 00:25:29
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
身長と体重を入力してBMIを求め、計算した肥満度について判定結果も出力するプログラムを作成しなさい。

BMIを求めるところまではできたのですが、
BMIの値がなにになっても、"あなたは普通です。"の結果になってしまいます。
どこを直せばよろしいでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10958.txt
[3] 環境
 Windows xp
 C言語
[4] 期限: 10月29日
[5] その他の制限: 特になし。
よろしくお願い致します。
745デフォルトの名無しさん:2010/10/27(水) 00:29:50
>>744
-10<bmi<10
こう言う書き方はできないから
-10<bmi&&bmi<10
みたいに書く
746744:2010/10/27(水) 00:37:23
>>745
おーすごい!
できました。ありがとうございました。
747デフォルトの名無しさん:2010/10/27(水) 00:37:41
お前ら、デブかガリだろ。嫌な宿題だな
748687:2010/10/27(水) 00:40:11
>>686
コンパイルすると、cannot open the data file 'data.txt'.って出てしまいます
749デフォルトの名無しさん:2010/10/27(水) 00:41:42
>>748
コンパイルエラー?
実行時エラーじゃなくて?
750687:2010/10/27(水) 00:41:54
誰かvisual c++でもできるように教えてくれませんか
751687:2010/10/27(水) 00:42:56
>>749
デバッグ→デバッグなしで開始にすると、そういう風に出てきます
752デフォルトの名無しさん:2010/10/27(水) 00:44:35
>>751
vc++だよねF7押して
753687:2010/10/27(水) 00:46:40
>>752
押しました
754デフォルトの名無しさん:2010/10/27(水) 00:47:06
>>750
プログラム一つごとにプロジェクト一つ作ってんの?
それだったらプロジェクトの中に debug と release というフォルダが出来てるはずなんで
その両方に data.txt を置いたらうまく行くと思う

プログラム実行開始は俺は Ctrl+F5 でしてる
そうすると実行終了後いきなり画面に戻らずに一時停止するから
755デフォルトの名無しさん:2010/10/27(水) 00:49:02
>>753
コンパイル通った?
通ってたら実行ファイルがdebugかreleaseにできてるから
そのフォルダの中にdata.txtをおく
そんで実行ファイルをダブルクリックしてやると多分動く
756デフォルトの名無しさん:2010/10/27(水) 00:54:43
>>754
いいこと聞いた
757687:2010/10/27(水) 00:56:47
>>754
それはどういう風にすればいいんですか?
758デフォルトの名無しさん:2010/10/27(水) 01:01:18
>>704
ゴメン、getchar() と getch() の仕様を逆に記憶していた、どっちも最近は使ってなかったんで...
759687:2010/10/27(水) 01:01:27
debugの所にそのdataは保存しています。
760デフォルトの名無しさん:2010/10/27(水) 01:02:16
nmake -f data.mak ってするの
761デフォルトの名無しさん:2010/10/27(水) 01:02:21
>>757
デフォルトの状態ならマイドキュメント→Visual Studio 2010→Projects
の中をよく探せばあるはず
762687:2010/10/27(水) 01:06:41
>>761
そこまでは行ったんですが何を探すんですか
763デフォルトの名無しさん:2010/10/27(水) 01:08:00
>>762
exeってかいてあるものを押すんだ
764687:2010/10/27(水) 01:11:18
>>763
exeってだけ書いてあるんですか…それは無くて、『保存した名前.exe.embed.manifest』って書いてあるものが3つくらいあります
765デフォルトの名無しさん:2010/10/27(水) 01:12:26
Explorerから探すの大変なんだよな・・・

WinFM2008レジストしろよ
楽だぞ
766687:2010/10/27(水) 01:14:56
>>765
申し訳ないですが、実行結果だけ教えていただけないですか?
767デフォルトの名無しさん:2010/10/27(水) 01:19:05
>>766

1: 3, 4, 2
2: 5, 1, 3
3: 0, 0, 2
4: 1, 9, 2
5: 4, 4, 4
max = 9.05539
min = 2.23607
768687:2010/10/27(水) 01:21:11
>>767
ありがとうございました。
あとは、直接定規とかで計測できないから分からないから、正しいとは分からないんですよね
769687:2010/10/27(水) 01:27:45
"cannot open the data file \'data.txt\'."
"more than one datum."
って日本語だとどう書けばいいですか
あと、cellってcoutと違うんですか
770687:2010/10/27(水) 01:30:46
あとは、そういう英語の所を日本語に直そうと思います。
771デフォルトの名無しさん:2010/10/27(水) 01:34:20
[1]C言語中級
[2]指定されたフロー構造に基づき次の仕様のプログラムを作成せよ
仕様:
★行とは、先頭か最後の区切り子からその次の区切り子までの区切り子を含まない文字列のこと
ただしその次の区切り子が出現しないまま終端した場合は最後の文字列まで
★区切り子とは、改行文字(0x0A) 復改文字(0x0D),その組み合わせ(0x0D0x0A,0x0A0x0D)のいずれかと
する(混在することを前提)
★標準入力から任意の長さの文字列を読み取り各行の空白スペースを除く先頭が0〜9からなる
文字列(これをキー数列と呼ぶ)でその直後が空白、タブで区切られている場合に限りその行を認識する。
それ以外の形式の場合は認識せず無視する。キー数列の長さが1024を超える場合も無視対象とする。
★認識した行はキー数列を10進数の正整数を表すものとして、その順序(小さい順)に
整列して出力する
フロー構造
main関数のみで構成。ライブラリ関数はstdio.hで定義されている関数のみを利用可能とする。
当然だが記憶領域はキー数列を記憶する領域の3倍程度しか確保できないことを前提
[3] FreeBSD上でC言語で記述しgccコンパイラで処理する。
[4] 10/30迄
以前ここで質問させていただきましたが回答いただけませんでした。
誰もできなかったみたいなので期限が今月末に延長になり、迫ってきたので
もう一度お願いする次第です。
772デフォルトの名無しさん:2010/10/27(水) 01:43:32
>>771
ちゃんと理解できてるかどうか自信がないから確認していい?
入力
52 this
105[tab]pen
hoge
77 a
67 is
出力
52 this
67 is
77 a
105[tab]pen
って感じでいいの?
773771:2010/10/27(水) 01:49:34
>>772
はい。たぶんそうだと思います。
774デフォルトの名無しさん:2010/10/27(水) 06:51:49
>>771
> キー数列の長さが1024を超える場合も無視対象とする

とあるけど、1024桁以下のキー数列(整数化できない長い文字列)は認めるって事だと非常に難しいと思うんだけど
問題に誤りは無いの?

> 当然だが記憶領域はキー数列を記憶する領域の3倍程度しか確保できないことを前提

これも不思議だな
全ての行の入力が終了した後(そもそも入力終了の判定条件も記述されていないな)にソートして一括出力するなら、
バッファに溜め込む必要が有ると思うのだけど、キー数列の3倍って意味わかめ...

仕様に疑問が有りすぎるから誰も手を付けなかったように見える問題だな 
775デフォルトの名無しさん:2010/10/27(水) 07:16:53
ああ、1024を超えるななくて1024桁を超えるって事か
すごい多いなw
776デフォルトの名無しさん:2010/10/27(水) 09:09:57
うん、整数化というか scanf( "%d", &hoge ); では読み込めない場合は、
文字列として扱って、最初は桁数で大小比較→strcmp() とかになると思うけど、stdio.h しか使えないとか...
strlen() や strcmp() も自作しろって事ですか?
777デフォルトの名無しさん:2010/10/27(水) 09:31:23
しかしmain関数のみって書いてあるんだよな
コピペしろとでもいうのか
いろいろ謎すぎるwww
778デフォルトの名無しさん:2010/10/27(水) 09:34:06
君たちー!C言語で儲けているかーい?
779デフォルトの名無しさん:2010/10/27(水) 09:52:52
前スレの639(前スレの633=現スレの>>771)と現スレの>>772が違うみたいなんだけど、数字文字混在でいいんだよね?

639 デフォルトの名無しさん2010/10/09(土) 08:37:26
>>633
先頭が数字でそのあとは文字でもよいのかなと思ってよむと、そうではなくて、全部数字でないと
いけないらしい。ここの部分は出題の文として適切でないから書き直した方がいい。
780デフォルトの名無しさん:2010/10/27(水) 10:28:14
先頭が0〜9からなる文字列
で区切ると文章がおかしくなることないか?
781デフォルトの名無しさん:2010/10/27(水) 10:58:18
>>779
キー数列と「呼んだり」、後で10進数として認識しなくてはならないと
いうことだから、やはり数字列と考えるべきでしょう。
782デフォルトの名無しさん:2010/10/27(水) 11:07:33
要するに、
キー数列と認識した行に振った行番号だけでソートはする。
BIGNUMという訳にはいかないのだから、
ソートの比較は桁の少ない方の頭に0を付加して、
桁を揃えた上で、文字列比較をすればよい。
最後に整列された列から、行番号をキーに
配列から行を取り出せばよい
783デフォルトの名無しさん:2010/10/27(水) 11:10:10
最後に整列された列の行番号をキーに配列から行を取り出せばよい

ですね。
784デフォルトの名無しさん:2010/10/27(水) 11:12:44
気持ち悪い
785デフォルトの名無しさん:2010/10/27(水) 12:28:26
>>778
「◆QZaw55cn4c が有償で宿題をするスレ」をいつかたちあげようか、と思います。
言語は C, C++, Java, C#, scheme なんかが需要があるでしょうか。
なんか、人気はあるみたいですから、1億は無理ですが小遣いくらいは稼げるかもしれません。
786デフォルトの名無しさん:2010/10/27(水) 12:57:51
>>785
有償は2chだと無理
787デフォルトの名無しさん:2010/10/27(水) 13:08:46
死ぬほど大変そうな事業だな
788デフォルトの名無しさん:2010/10/27(水) 13:10:10
>>782
それを strlen(), strcmp() 使わずに main() だけで処理するのね....俺は書きたくないな
789デフォルトの名無しさん:2010/10/27(水) 13:24:28
bignumどうすんだよw
それもmainの中でガンバレってか?
悪夢過ぎる。
790デフォルトの名無しさん:2010/10/27(水) 14:21:50
ナヌ。
strcmp()を自分で定義することもできないのか・・・。
やってられないw
791デフォルトの名無しさん:2010/10/27(水) 14:22:51
gccだからmain関数の中にstrcmp書いちまおうぜww
792デフォルトの名無しさん:2010/10/27(水) 14:24:07
>C言語中級
上級ではどうなるんだろ
793デフォルトの名無しさん:2010/10/27(水) 14:27:28
>>792
更に既知Guyな出題になる
794デフォルトの名無しさん:2010/10/27(水) 14:32:15
>>771
ぶっちゃけもう回答する奴出てこないだろうからあきらめた方がいいよ
795デフォルトの名無しさん:2010/10/27(水) 16:38:06
問題がおかしいのか >>711 が写し間違ったのか確認すべきだろうな
『キー数列の長さが1024を超える場合』が『キー数列の大きさが1024を超える場合』ならそんなに変でもない
俺としては『当然だが記憶領域はキー数列を記憶する領域の3倍程度しか確保できないことを前提』の方が謎なんだけど
...何故『当然』?さらには何故『3倍』?
796デフォルトの名無しさん:2010/10/27(水) 16:38:35
>>587
>>597
ありがとうございます。
797デフォルトの名無しさん:2010/10/27(水) 18:12:54
>>454でもらったプログラムって、
3つに分けて印刷とかした方がいいですか?それとも、>>454みたいに1つの所で3つに区切れば大丈夫ですか?
あと、//で始まる部分って必要ですか?
798デフォルトの名無しさん:2010/10/27(水) 18:18:14
紙で提出するのかよw
799デフォルトの名無しさん:2010/10/27(水) 18:19:46
>>797
3枚のチラシの裏に手書きで書き写せ
//も必要
800デフォルトの名無しさん:2010/10/27(水) 18:59:53
>>797
include の2重定義防止の部分は外した方が良いと思う、人にやって貰ったのがバレバレ
801デフォルトの名無しさん:2010/10/27(水) 19:24:43
てす
802デフォルトの名無しさん:2010/10/27(水) 22:16:46
>>798
印刷しようかなと思います

>>799
3枚いるんですね。わかりました。

>>800
2重定義防止部分って何行目でしょうか。
803デフォルトの名無しさん:2010/10/27(水) 23:50:46
>>802
codepad が何故か開けないので何行目か指摘できないんだけど、seiseki.h(だっけか?) の先頭と最後で

#ifndef  なんとか
#define なんとか
#endif // なんとか

みたいな記述が有る行の事
これは仕事でヘッダーファイルを書くようになれば常識的な事なんだけど、まだ教わってないと思うし(教わらない可能盛大)、
独自に作成したヘッダーが1つしか無い場合は必要ない
804デフォルトの名無しさん:2010/10/28(木) 00:02:53
嘘教えちゃいかんよ
805デフォルトの名無しさん:2010/10/28(木) 00:19:33
>作成したヘッダーが1つしか無い場合は必要ない
まあ実用上は多分問題はないだろうけど必要ないかと言われれば必要だね
806デフォルトの名無しさん:2010/10/28(木) 00:20:19
>>803
じゃあ、seiseki.hの二重定義防止部分だけ除けばいいんですか。
あと、他の//とかはどうしましょう
807デフォルトの名無しさん:2010/10/28(木) 00:22:49
>>806
必要ではないがあったほうがいい
808デフォルトの名無しさん:2010/10/28(木) 00:24:42
>>807
//#include "seiseki.h"
これはないとエラーが出ました。
809デフォルトの名無しさん:2010/10/28(木) 00:45:32
>>808
でないと思うけど?どんなエラー?
810デフォルトの名無しさん:2010/10/28(木) 00:54:38
オセロで絶対に勝つプログラムのコードを教えてちょっ♪
811デフォルトの名無しさん:2010/10/28(木) 00:58:11
どんな結果だろうと、「オセロなんかで暇つぶししてる負けです」と表示する。
812デフォルトの名無しさん:2010/10/28(木) 00:59:18
「オセロなんかで暇つぶししてるあなたの負けです」
813デフォルトの名無しさん:2010/10/28(木) 01:28:01
>>810
持ち時間を1秒に設定しておく。
プログラムは置けるところに0.01秒とかで置いていけば、時間切れで勝てる。
814デフォルトの名無しさん:2010/10/28(木) 05:35:18
>>804
まぁ一つのソースコードで二回 include すれば2重定義になるけどね
そういう非常識な事は普通考えんでしょ

>>808
include 文をコメントアウトしたままなら、ファイルを分割した時はエラーになるわな
815デフォルトの名無しさん:2010/10/28(木) 11:09:37
インクルードガードも知らないのか
816デフォルトの名無しさん:2010/10/28(木) 14:06:16
>>814
つか、初心者なのなのバレバレ
なに偉そうにアドバイスしてんの?
817デフォルトの名無しさん:2010/10/28(木) 14:12:11
無能な働き者はいらない
818デフォルトの名無しさん:2010/10/28(木) 15:46:53
有能な怠け者がほしい
819デフォルトの名無しさん:2010/10/28(木) 16:22:02
>>816
なぜ初心者だと思うの?
820デフォルトの名無しさん:2010/10/28(木) 16:27:44
821デフォルトの名無しさん:2010/10/28(木) 17:54:03
822デフォルトの名無しさん:2010/10/28(木) 18:28:43
ハイパーとか
ウルトラとかな
823デフォルトの名無しさん:2010/10/28(木) 18:29:06
おう、盛大にごばくしたごめん
824デフォルトの名無しさん:2010/10/28(木) 18:44:29
>>814
一つのソースから複数回 include されることなど、日常茶飯事だよ
825デフォルトの名無しさん:2010/10/28(木) 22:24:26
>>809
'seiseki':識別子がクラス名でも名前空間名でもありません。とかです。
826デフォルトの名無しさん:2010/10/28(木) 22:27:32
>>825
ああ、三つのファイルに分けたんだっけ
じゃあ//だけ消して後ろ残せばいい
827デフォルトの名無しさん:2010/10/28(木) 22:32:47
>>824
技法としてあるだろうけど、日常茶飯事的に使われるものなのかは知らない
828デフォルトの名無しさん:2010/10/28(木) 22:42:26
>>826
#ifndef INCLUDE_GUARD_SEISEKI
#define INCLUDE_GUARD_SEISEKI

#endif
あと、二重定義のこれも消した方がいいんですよね。
829デフォルトの名無しさん:2010/10/28(木) 22:43:31
授業レベルじゃいらないってだけであっても害はない
830デフォルトの名無しさん:2010/10/28(木) 23:08:33
>>829
ありがとうございました
831デフォルトの名無しさん:2010/10/28(木) 23:12:46
>>316のmore than one datumってどういう意味ですか?
1つ以上データを入力せよ
って事ですか?
832831:2010/10/28(木) 23:30:02
[1] 授業単元: 英語
[2] 問題文:"1つ以上データを入力せよ" を英訳せよ
[3] 期限: 今すぐ
[4] その他の制限: 僕、小学生です。

833デフォルトの名無しさん:2010/10/28(木) 23:31:04
>>824
ユーザ定義のヘッダファイルがたった1つで、しかもインクルードガードが必要で、
1つのソースから複数回そのヘッダファイルを日常茶飯事で include していたら、
悪いけど間違いなくグーで殴る。
834デフォルトの名無しさん:2010/10/28(木) 23:31:29
小学生なら仕方ないな
835デフォルトの名無しさん:2010/10/28(木) 23:36:12
>>831-832
more than の意味間違ってる。
突っ込まない >>834 も理解してないな。
836デフォルトの名無しさん:2010/10/28(木) 23:42:10
>>835
>>832は違う人です
837831:2010/10/28(木) 23:42:49
>>835
先生にそれじゃ、複数のデータでしょって言われたんです><
で、"1つ以上データを入力せよ"は英訳するとどうなるんですか?
838デフォルトの名無しさん:2010/10/28(木) 23:44:10
equal or more than とかな
839デフォルトの名無しさん:2010/10/28(木) 23:50:51
ぐーぐる先生のお答え
Enter one or more data
840831:2010/10/28(木) 23:53:03
ぐーぐる先生
ありがとうございました。
841デフォルトの名無しさん:2010/10/29(金) 00:52:13
>>771

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10959.c

意外とマクロ無双でなんとかなった
842デフォルトの名無しさん:2010/10/29(金) 05:21:56
>>841
○ キー数列の長さが1024を超える場合も無視対象とする
× キー数の大きさが1024を超える場合も無視対象とする

なので皆は手を出して居なかった訳だが...
843デフォルトの名無しさん:2010/10/29(金) 06:30:22
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
問題1
料理名の入力や材料名をキーボードより入力して、人数分の料理のレシピを計算して表示するプログラムを作成しなさい.
今日の料理名は何ですか:(料理名)

材料名は何ですか:( 材料)
( 材料) は一人当たり何グラム必要ですか:(分量)

何人分の料理を作りますか:(人数)

==レシピ==
今日は、(料理名)を作りましょう。

「(料理名)を(人数)人分作るには,(改行)

( 材料) が ( 分量×人数 ) グラム必要です」

* 人数、分量はキーボードから入力した値を使用してください。
printf 関数内で%sや%dを使用して、文字列(料理名・材料名)や整数値(人数・分量)を表示すること。
問題2
桁数を指定した書式指定(%s、%d、%f)とprintf()関数を用いて、下記の一覧表を表示するプログラムを作成しなさい。
【表示する表】
     商品A    商品B    商品C
数量   0000012  0000345   0006789
重量   1.234    543.210   12.345
*文字列、整数値や実数値の桁数を指定する方法に注意しなさい。
*表の枠線は必要ありません。各列の先頭が揃っている必要があります。
問題3
整数を1つ読み込んで、その値が、1 の時は 「 Go! 」 、 2または3の時、「 Slow ! 」 、 それ以外の時「 Stop! 」と表示するプログラムを 作成しなさい。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:10月31日
[5] その他の制限: なし
よろしくお願いします。
844デフォルトの名無しさん:2010/10/29(金) 09:39:07
>>454のプログラムを
1.コンストラクタから実装してください
2.10人分の成績データをファイルから入力してください(名前は01〜10でいいです)
実行結果を教えてください。
845デフォルトの名無しさん:2010/10/29(金) 09:46:49
>>843
>>628と同じ人?
846デフォルトの名無しさん:2010/10/29(金) 10:22:49
>>844
>>454はすでにコンストラクタがあるのに何を言ってるのかよく分からないが
いちおうコンストラクタで計算するようにすればいいんだろうという解釈でやってみた
http://codepad.org/BVCll4KX
結果は以下

0さんの平均点は0です
1さんの平均点は23です
2さんの平均点は47です
3さんの平均点は71です
4さんの平均点は28です
5さんの平均点は51です
6さんの平均点は42です
7さんの平均点は32です
8さんの平均点は22です
9さんの平均点は46です
847デフォルトの名無しさん:2010/10/29(金) 14:38:55
>>846
ありがとうございます。では逆に>>454をコンストラクタ使わないで書くとどうなりますか?

848デフォルトの名無しさん:2010/10/29(金) 14:49:47
麻呂はリストはもうやらないでおじゃる
849デフォルトの名無しさん:2010/10/29(金) 14:58:38
ちゃんと書きなおしますね
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): >>454をコンストラクタを使わないで書いてください。
あと、コンストラクタを使ったプログラム(>>454)に10人分の成績データをファイルから入力してください(名前は01〜10でいいです)
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語: C++
[4] 期限: 2010年11月2日まで
[5] その他の制限: なるべく難しくしないでお願いします。あと、using namespace std;を入れてください。あと、'\n'にしてください
850デフォルトの名無しさん:2010/10/29(金) 15:09:33
>>849
コンストラクタをメンバ関数に置き換えて残りはニコイチにしてみた
http://codepad.org/vsj2cvHo
結果

0さんの平均点は0です
1さんの平均点は23.6667です
2さんの平均点は47.3333です
3さんの平均点は71です
4さんの平均点は28です
5さんの平均点は51.6667です
6さんの平均点は42です
7さんの平均点は32.3333です
8さんの平均点は22.6667です
9さんの平均点は46.3333です
851デフォルトの名無しさん:2010/10/29(金) 15:20:29
mCnを求めるプログラミングを教えて下さい。

ちなみにm=6n=3です。

関数部分でc = factorial(n)/factorial(n-r)/factorial(r)を使ってください。

852デフォルトの名無しさん:2010/10/29(金) 15:26:28
#include <stdio.h>

int factorial(int n)
{
int i, f = 1;

for(i = 2; i <= n; i++) f *= i;

return f;
}

int nCr(int n, int r)
{
return factorial(n) / factorial(n - r) / factorial(r);
}

int main(void)
{
int m = 6, n = 3;

printf("6C3 = %d\n", nCr(m, n));

return 0;
}
853デフォルトの名無しさん:2010/10/29(金) 15:32:17
すいません
再帰とかいうのを使ってください
854デフォルトの名無しさん:2010/10/29(金) 15:34:35
>>851はネタ?落ち着いて仕様を確認してテンプレを埋めれ
855デフォルトの名無しさん:2010/10/29(金) 16:15:09
>>850
>>454自体をコンストラクタ使わないとどうなりますか?
それは、10人分の平均点のプログラムですよね
856デフォルトの名無しさん:2010/10/29(金) 16:23:30
>>855
おい
後出しジャンケンは禁止だぞ
857デフォルトの名無しさん:2010/10/29(金) 16:57:28
nCrを階乗で求めるのは邪道。やはりパスカルの三角形。
858デフォルトの名無しさん:2010/10/29(金) 17:15:11
てか階乗でやるにしても>>851の方法だと簡単にオーバーフローしそう
859デフォルトの名無しさん:2010/10/29(金) 17:26:03
[1] プログラミング演習
[2] 10個のデータ{2, 9, 4, 3, 4, 5, 7, 9, 3, 5}を与えて、その値を*を使い
下向きのグラフで表示してください。数値一個当たり*一個で表示しなければいけません。
実行例
--------------------
2
*
*



[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名 visualstdio2010
 [3.3] 言語 C言語
[4] 期限: 2010年10月29日土曜日夜6時までです。
[5] 配列までです。グラフの上についている---の数は20個です。
すみません。実行例のところずれてしまって2の行しかかけませんでした。判りづらくてしみません。
860デフォルトの名無しさん:2010/10/29(金) 17:34:43
#include <stdio.h>

int main(void)
{
int i, j, a[10] = {2, 9, 4, 3, 4, 5, 7, 9, 3, 5}, max;

for(max = a[0], i = 1; i < 10; i++) if(max < a[i]) max = a[i];

printf("--------------------\n");
for(i = 0; i < 10; i++) printf("%d ", a[i]);
putchar('\n');
for(i = 0; i < max; i++) {
for(j = 0; j < 10; j++) printf("%c ", a[j] > i ? '*' : ' ');
printf("\n");
}

return 0;
}
861 ◆QZaw55cn4c :2010/10/29(金) 18:10:10
862デフォルトの名無しさん:2010/10/29(金) 18:16:06
992 / 1375 =
863デフォルトの名無しさん:2010/10/29(金) 19:58:31
[1] 授業単元:自然言語処理
[2] 問題文(含コード&リンク):
ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/rep1.pdf
課題2のみです。
[3] 環境
[3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2010年11月19日
[5]考え方http://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/viterbi.pdf
よろしくお願いします。
864デフォルトの名無しさん:2010/10/29(金) 20:00:58
同じ高校に通っていた小学校から一緒だった知人が
茨城大に推薦入学したなぁ・・・もう13年も前の話。
865デフォルトの名無しさん:2010/10/29(金) 21:35:47
>>850
データをファイルから入力するっていうのは無理でしょうか
866771:2010/10/29(金) 23:13:22
>>841
亀レスですがありがとうございました。
諦めかけてたところでした。
ただマクロを自分で定義して良いのかどうかちょっと
疑問です。CPPで展開したのを改造してみようかと
思ってます。重ね重ねどうもありがとうございました。
867841:2010/10/29(金) 23:39:00
>>842

おお、ほんとだ。修正しました
http://kaisai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10960.c

>866
ごめんなさい・・
868841:2010/10/29(金) 23:46:10
うわー間違えた

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10960.c
規制のせいで携帯からしか逝けないので・・
869デフォルトの名無しさん:2010/10/29(金) 23:46:26
>>867
手打ちなのか?
ちゃんとコピペしようぜ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10960.c
870841:2010/10/29(金) 23:57:15
>>869 ありがとう
871 ◆QZaw55cn4c :2010/10/30(土) 00:39:28
>>863
http://codepad.org/HDgcTZix 正の方向だけを考えた場合
http://codepad.org/hq5RGlcV 負の方向もあわせて考えた場合
どちらも最短距離を示す経路が複数あっても、そのうちのひとつしか表示しません。
872デフォルトの名無しさん:2010/10/30(土) 05:49:11
>>871
お前は本当に日本語の問題文が読めないやつだな。
とりあえず abs を使ってる時点で、有向グラフの意味を正しく理解しているのか聞きたい。
あと、重みを距離と読み替えてあげたとしても、求めるものは最大値だぞ。
873 ◆QZaw55cn4c :2010/10/30(土) 08:46:45
>>872
ご指摘大感謝です。
最大値を求めるとは、すっかり落とし穴にはまってしまいました。(viterbi のアルゴリズムを解説しているページは最小値ばかりでしたから)
なるほど、最大値ならば有向グラフである意味もありますね。

>>863
訂正します。なお最大値をとる経路が複数あった場合でもひとつしか列挙しないことは前と同じです。(その可能性は記録しています。)
ただ今回の問題では最大値をとる経路はひとつだけでした。
http://codepad.org/g0C9fyIh
874デフォルトの名無しさん:2010/10/30(土) 08:53:40
なんでそんなに日本語読めないの?
875デフォルトの名無しさん:2010/10/30(土) 09:13:39
>>874
まだなにか問題がありますか?
876デフォルトの名無しさん:2010/10/30(土) 09:44:36
しょっちゅう問題を誤読してることについて聞いたんだけど、
>>873にまだおかしなところがあることを指摘してると思ったのか

本当になんでそんなに日本語読めないの?
877デフォルトの名無しさん:2010/10/30(土) 10:36:16
いやw>>874のタイミングでそう書き込んだら>>875みたいに受け取っても仕方ないでしょうw
878デフォルトの名無しさん:2010/10/30(土) 10:47:06
>>877
いや逆に日本語としての理解はある意味まっとうだとして
出題意図と求められるアウトを把握するという意味においては
まだ問題あるという懸念が残らないでもないというように
逆の意味で認識してしまうのも致し方ないのでは?
まあセミ腹は替えられないが、あんたの日本語は大丈夫?
879デフォルトの名無しさん:2010/10/30(土) 10:48:30
>>878
私はあなたの日本語の方が心配
880デフォルトの名無しさん:2010/10/30(土) 10:53:21
>>865
してるじゃないか
881デフォルトの名無しさん:2010/10/30(土) 11:13:20
早くカレンダーこいやー
882デフォルトの名無しさん:2010/10/30(土) 12:30:29
>>878
すまん、意味がわからん
俺の日本語力もまだまだですねw
883デフォルトの名無しさん:2010/10/30(土) 13:00:32
>>880
コマンドライン引数かコマンドラインで入力するかして欲しいんだろう
まぁどっちか分からないし、どういう風にして欲しいかも分からんからどうにもならんだろうが
884デフォルトの名無しさん:2010/10/30(土) 14:57:23
急に宿題が減ったな。今まで自演だったのだろうか
885デフォルトの名無しさん:2010/10/30(土) 17:28:23
>>848
リストというお題をやるとかやらないとかいう問題ではなくて、>>863 のような問題に取り組めば必然的にリストをはじめとする諸々のデータ構造を取り扱わなければならない件について
886デフォルトの名無しさん:2010/10/30(土) 18:14:11
>>873
ありがとうございます。
問題分の実行結果のように
STARTから表示するにはどうしたらいいでしょうか?
887デフォルトの名無しさん:2010/10/30(土) 18:21:34
>>886
そうですね。少しお待ちください。
888 ◆QZaw55cn4c :2010/10/30(土) 18:37:00
889デフォルトの名無しさん:2010/10/30(土) 18:56:17
なんの拘りか知らないが、何も言われなければ絶対に実行例と違った表示方法にするよなw
890デフォルトの名無しさん:2010/10/30(土) 19:39:45
>>888
俺、Viterbiアルゴリズムっての知らないからわからないが、
それViterbiアルゴリズム使ってるの?
これいかにも情報工学らしい課題で、情報系出マが得意とする課題なんだろな
891デフォルトの名無しさん:2010/10/30(土) 19:40:20
>>889
この場合は手抜きです、単に。
892デフォルトの名無しさん:2010/10/30(土) 19:42:19
人の回答に対しては題意に関係ないところの手抜きにツマラナイつっこみ入れるくせによくも言えた物だ
893デフォルトの名無しさん:2010/10/30(土) 19:44:08
>>890
Viterbi でぐぐってから出直してきなよ。
894デフォルトの名無しさん:2010/10/30(土) 19:46:40
◆QZaw55cn4cはほんとにキモイなぁ
895デフォルトの名無しさん:2010/10/30(土) 19:47:51
俺は嫌いじゃないぜ?
896デフォルトの名無しさん:2010/10/30(土) 19:50:17
確かに自分は問題読まないくせに
他人の回答の問題とは関係ない部分に突っ込みいれるよねw
897デフォルトの名無しさん:2010/10/30(土) 19:50:22
俺は嫌い
898デフォルトの名無しさん:2010/10/30(土) 19:55:29
>>896
あれ?そんな例ありましたっけ。
899デフォルトの名無しさん:2010/10/30(土) 19:57:23
自覚無いのか、真性だな
900デフォルトの名無しさん:2010/10/30(土) 19:58:55
トリップ外してるからしらをきるつもりかもよw
901デフォルトの名無しさん:2010/10/30(土) 20:00:54
>>893
一応、Wikipediaは見た
で、思ったのがマキシマムエントロピー法みたいなものかなって位

なんか解答出したのが、◆QZaw55cn4cだけっていうのがおいおいって感じだな
ここの連中、情報工学、ないしはそれに近い学科出たの多いんだろ?
902デフォルトの名無しさん:2010/10/30(土) 20:02:40
トリップをつけるかつけないかで内容をかえたりしませんが。
しているように見えますかそうですか。

で、>>896
>他人の回答の問題とは関係ない部分に突っ込みいれるよねw
の例を教えてください。反省材料にいたします。
903デフォルトの名無しさん:2010/10/30(土) 20:03:19
>>901
文句があるなら自分でやってみせればいいだろ
904デフォルトの名無しさん:2010/10/30(土) 20:04:25
>>901
いや、他の問題でも回答がでてしまうと私もあきらめてしまいます。一個だけ、というのはよくあることではないかと。
905デフォルトの名無しさん:2010/10/30(土) 20:05:55
>>902
◆QZaw55cn4c、基地外印w付に対してそんなこと言ってもな
906デフォルトの名無しさん:2010/10/30(土) 20:07:34
>>901
解答するより間違いを指摘できる方がスキルが必要なのは知ってる?
907デフォルトの名無しさん:2010/10/30(土) 20:09:10
うはwwww自分でいっちゃったよwwwwwwww
908デフォルトの名無しさん:2010/10/30(土) 20:10:54
>>906
どちらかというと相関はないと思うのですが。
909デフォルトの名無しさん:2010/10/30(土) 20:11:01
>>904
ウソつくなw
他人の回答見てからようやく題意理解したのに、細部だけ変えた答えあげたことあるだろw
910デフォルトの名無しさん:2010/10/30(土) 20:15:19
>>909
そんな志の低い回答はしたことはありません。単に簡単な問題でかぶってしまっただけなのでは?
911デフォルトの名無しさん:2010/10/30(土) 20:18:54
>>903
俺はViterbiアルゴリズムっての知らないって言ってるだろ

>>906
有向グラフついては問題指摘あるが
>>888のViterbiアルゴリズムについて何か間違いあるのか?

Viterbiアルゴリズムって、マなら常識アルゴリズム?
912デフォルトの名無しさん:2010/10/30(土) 20:21:35
913デフォルトの名無しさん:2010/10/30(土) 20:23:17
>>911
アルゴリズムに名前が付いているものは、基本的に全部有名ですが。
914デフォルトの名無しさん:2010/10/30(土) 20:24:19
>>911
コスト最大経路を求めるべきところを、コスト最小経路を求めてしまったんです。ただ経路探索の方法は同じです。
915デフォルトの名無しさん:2010/10/30(土) 20:26:14
>>906
大きなプログラムを書いたことがない人の典型的な反論だね。
916デフォルトの名無しさん:2010/10/30(土) 20:28:21
>>912
問題が掲載された時刻・第一の回答が出た時刻・私が回答した時刻には余り差がないですね。これは多分かぶってしまったんでしょう。
問題もしごく単純なものですし。
917デフォルトの名無しさん:2010/10/30(土) 20:31:44
138と140がお前で、141が答えを書くまで問題が理解できてないのは無視かよ
918デフォルトの名無しさん:2010/10/30(土) 20:35:19
>>916
しごく単純な問題すらまともに読めないバカってことを自白した気分はどんな感じ?
919デフォルトの名無しさん:2010/10/30(土) 20:37:58
>>908
相関あるよ。
他人が書いたコードを1度で良いからデバッグしてみなよ。
自分で書いたコードだけ眺めていたら気づけないことがたくさんあると気づけるから。
920デフォルトの名無しさん:2010/10/30(土) 20:38:38
921デフォルトの名無しさん:2010/10/30(土) 20:40:00
◆QZaw55cn4cはほんとにキモイなぁ
922デフォルトの名無しさん:2010/10/30(土) 20:41:12
でも俺は嫌いじゃないぜ?
923デフォルトの名無しさん:2010/10/30(土) 20:42:03
◆QZaw55cn4cがスレにいる時にしか擁護レスがつかない件について
924デフォルトの名無しさん:2010/10/30(土) 20:42:05
925デフォルトの名無しさん:2010/10/30(土) 20:43:35
>>917
138 はお約束の質問で私もしそうなものなのは認めますが、140は違うとおもいますね。
ただ、こんな小さなサイズの問題は正直どうでもよくて、たとえば、>>888 とか、>>156 とか、>>316>>738 くらいのもののほうが楽しいです。
926デフォルトの名無しさん:2010/10/30(土) 20:45:26
927デフォルトの名無しさん:2010/10/30(土) 20:45:30
◆QZaw55cn4cってやっぱこのスレのスパー火ーろーなんだな
過疎ってたのが超にぎやかなってきたな
928デフォルトの名無しさん:2010/10/30(土) 20:46:51
>>925
言い訳考えるのに随分時間かかったねw
929デフォルトの名無しさん:2010/10/30(土) 20:48:22
>>924
そんな昔のことは覚えていません。
930デフォルトの名無しさん:2010/10/30(土) 20:51:44
そうやってすぐ忘れるから、ちっとも成長しないんだよ
931デフォルトの名無しさん:2010/10/30(土) 20:52:05
>>926
138 と 140 が同じだとしたのは他人の予測でしかないでしょうね。
それにしてもちっちゃな問題にこだわっているのですね。
932デフォルトの名無しさん:2010/10/30(土) 20:53:24
こういう人に限ってこのスレは自分がいないと成り立たないみたいな勘違いしてるんだよね
別にそんなことないのに
933デフォルトの名無しさん:2010/10/30(土) 20:54:30
自分のミスをちっちゃな問題にして流すヤツは、どこに行っても嫌われるぞw
934デフォルトの名無しさん:2010/10/30(土) 20:55:21
問題読めない◆QZaw55cn4cがいると荒れるなぁ
935デフォルトの名無しさん:2010/10/30(土) 20:55:40
>>931
いつもいつも問題文を誤読するから「ちっちゃな問題」じゃないけどな
936デフォルトの名無しさん:2010/10/30(土) 20:58:52
◆QZaw55cn4cより先に解答すれば全てうまく行く
937デフォルトの名無しさん:2010/10/30(土) 21:00:41
確かに誤読は直っていませんね。すぐに投稿せずに、一日寝かせてから投稿するようにするのも手かもしれませんね。
938デフォルトの名無しさん:2010/10/30(土) 21:16:11
>>888
どうもありがとうございました。
939デフォルトの名無しさん:2010/10/30(土) 21:16:28
>>860
お礼が送れて申し訳ありません。
ご回答ありがとうございます。
申し訳ありません。
実行例のところ
2
--------------------
*
*

でした。
数字の下側に---がくるのです。申し訳ありません。
自分でどうやって解決すれば良いかわからないので、まだおられたら修正お願いいたします。
940デフォルトの名無しさん:2010/10/30(土) 21:19:36
続けてすみません。
ttp://yonex1.cis.ibaraki.ac.jp/~yonekura/2002kadai/kadai.htm
一応C/C++を用いたものですがこういった課題は大丈夫でしょうか?
941デフォルトの名無しさん:2010/10/30(土) 21:24:28
>>939
表示の順番を入れ替えるだけだろw

#include <stdio.h>

int main(void)
{
int i, j, a[10] = {2, 9, 4, 3, 4, 5, 7, 9, 3, 5}, max;

for(max = a[0], i = 1; i < 10; i++) if(max < a[i]) max = a[i];

for(i = 0; i < 10; i++) printf("%d ", a[i]);
putchar('\n');
printf("--------------------\n");
for(i = 0; i < max; i++) {
for(j = 0; j < 10; j++) printf("%c ", a[j] > i ? '*' : ' ');
printf("\n");
}

return 0;
}
942デフォルトの名無しさん:2010/10/30(土) 21:30:18
>>937
>一日寝かせてから
じゃなく、期限近くまで寝かせてからだす。
それまで解答がなく、で、お前の解答にいちゃもん付いたら
時間あったんのに解答しないでギャーギャー言うなら言うお前が解答しろって基地れ
943デフォルトの名無しさん:2010/10/30(土) 21:40:28
>>937
誤読を直すためには、プログラムを日本語でも良いのでコメントから書くこと。
そのコメント通りの実行で、題意を満たしていることを必ず確認する。
後は、コメントを満たすように実装するだけ。
944デフォルトの名無しさん:2010/10/30(土) 21:50:50
>>940
>レポートとして受理されたものにつき,後日(24日ぐらいから)1人あたり15分程度の口頭試問を行います.そこで提出レポートの理解状況を確認します.理解できていれば単位を取得することができます.

これはどうするんだ?
945デフォルトの名無しさん:2010/10/30(土) 21:54:29
日当用意するしかないだろう
946デフォルトの名無しさん:2010/10/30(土) 22:05:38
>>942
コードに対するコメントはありがたく頂戴するものであって、逆切れするつもりは毛頭ないのですけれども。
>>943
コメントは往々にして嘘をつく(つまりコードの改変にコメントが追いつかないことがある)のであまりしないのですが、
コメントを先に書いてしまうというのはひとつの手かもしれませんね。

ともかく、今までのような目から手へのやりかたは、そろそろやめにしておきます。
947デフォルトの名無しさん:2010/10/30(土) 22:17:37
口頭試問ワロタ
948デフォルトの名無しさん:2010/10/30(土) 22:18:55
[1] 授業単元:プログラムとアルゴリズム
[2] 問題文(含コード&リンク):整数配列aとその長さnを渡して、配列のそれぞれの要素を10倍して戻す関数Funcを作成し、必要な追加を行って動作を確認しなさい。
下敷きとするソースコードは以下のURL(jpgで見にくくてすみません)でお願いします。
http://pc.gban.jp/?p=24057.jpg
[3] 環境
 [3.1] OS:Windows 7
 [3.2] コンパイラ名とバージョン:gcc バージョンは最新です
 [3.3] 言語:C言語
[4] 期限:次の火曜日まで
[5] その他の制限:特になし

よろしくお願い致しますm(_ _)m
949デフォルトの名無しさん:2010/10/30(土) 22:40:10
OCR使ったらダメだった。もうすこし高解像度の画像にして欲しいよ。
950948:2010/10/30(土) 22:51:15
申し訳ありません!
bmpで保存してみましたので、これでどうでしょうか…
http://uproda.2ch-library.com/308905GWu/lib308905.bmp
951デフォルトの名無しさん:2010/10/30(土) 22:52:55
>>948
void Func(int *a, int n) {
int i;
for (i = 0; i < n; i++) {
a[i] *= 10;
}
}
952デフォルトの名無しさん:2010/10/30(土) 23:19:26
>>948
こんなのでもOK。
void Func(int *a, int n) {
for (; n >= 0; n--) {
a[n] *= 10;
}
}
953デフォルトの名無しさん:2010/10/30(土) 23:20:43
>>948
すみません、>>952 には1箇所間違いがありました。
void Func(int *a, int n) {
for (n = n - 1; n >= 0; n--) {
a[n] *= 10;
}
}
954デフォルトの名無しさん:2010/10/30(土) 23:28:28
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
次のプログラムの改善案を作って実行結果を表示せよ。そしてどの部分を改良したか必ず書くこと。
例・空白に関する仮定なし
例・エラーチェック
   char c;
for (stackinit(); scanf(“%1c”, &c) != EOF; ) {
if (c == ‘)’)
printf(“%1c”, (char) pop());
if (c == ‘+’)
push((int) c);
if (c == ‘*’)
push((int) c);
while (‘0’ <= c && c <= ‘9’) {
printf(“%1c”, c);
scanf(“%1c”, &c);
}
if (c != ‘(’)
printf(“ ”);
}
printf(“\n”);
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。

955デフォルトの名無しさん:2010/10/30(土) 23:40:02
for(;--n>=0;)
956デフォルトの名無しさん:2010/10/30(土) 23:42:19
>>954
手でコードを書き写したの?
957デフォルトの名無しさん:2010/10/30(土) 23:44:23
954に追記ですが実行した結果何が改善されたかも書いてくれるとうれしいです。
958デフォルトの名無しさん:2010/10/30(土) 23:45:13
>>956
問題からそのまま持ってきました。
959デフォルトの名無しさん:2010/10/30(土) 23:53:56
>>955
それなら、while(--n>=0) って書くわ。
960デフォルトの名無しさん:2010/10/31(日) 00:13:18
>>954
聞きたいことが山ほどあるんだが。

これ、問題文の一部じゃないの? 以下そう考える理由
・「空白に関する仮定なし」…唐突すぎて意味不明
・stackinit, pop, push の関数定義がない
・「main の中身もお願いします」って、じゃあ [2] に書いてあるものは何?

エラーチェックは、かろうじて最初に「)」が来たときぐらいは分かった。
他にもエラーにしなければならないものがあるなら教えてくれ。
ある形式の入力を変換して出力するものだろうけど、形式がわからんと話にならん。
961948:2010/10/31(日) 00:13:32
>>951-953
ちゃんと表示されました。
ありがとうございました!
962デフォルトの名無しさん:2010/10/31(日) 00:35:58
>>960
問題文に定義として次のようなものがありました。
仮定:
演算子,被演算子,括弧
は空白で区切られている。
963デフォルトの名無しさん:2010/10/31(日) 00:40:24
>>960
あとこれもありました
struct stack *push (int v, struct stack *s)
{
if (++(s->pt) >= s->mx)
error_id("%s overflows\n", s->id);
s->bd[s->pt] = v;
return s;
}
int pop (struct stack *s)
{
if (s->pt < 0)
error_id("empty %s is popped\n", s->id);
return s->bd[(s->pt)--];
}
int top (struct stack *s)
{
if (s->pt < 0)
error_id(“empty %s is referred\n”, s->id);
return s->bd[s->pt];
}
int isempty (struct stack *s)
{
return (s->pt < 0);
964デフォルトの名無しさん:2010/10/31(日) 03:09:54
>>944
コードのみです。
965デフォルトの名無しさん:2010/10/31(日) 11:11:17
>>963
そのコードにも定義されてない struct stack って構造体や、
error_id って関数があるなぁ。
授業の単位を取る気が少しでもあるなら、もうちょっと真面目に勉強しなよ。
966デフォルトの名無しさん:2010/10/31(日) 14:34:48
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
http://img69.imageshack.us/img69/1731/65183447.jpg
(b)、(d)の回答をよろしくお願いします。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VisualC++2008
 [3.3] 言語:C言語
[4] 期限:[無期限]
[5] その他の制限:math.h を使うあたりまで学習した
967デフォルトの名無しさん:2010/10/31(日) 15:34:31
最大じゃなくて最小か
ちょっと無理だな
968デフォルトの名無しさん:2010/10/31(日) 15:43:15
何が入力されても-∞でいいんじゃね?
969デフォルトの名無しさん:2010/10/31(日) 15:48:33
>>965
struct stack{
int mx; int pt; int id; int* bd;
};
だろうね
error_id() は引数を printf() で出力して exit() するんだろうな
謎なのは stackinit(), push(), pop() の引数が足りない事だな

それ以前に改善しろってだけじゃ何をどうすれば良いやら.... 
エスパーになって想像すると >>954 のコードはグローバル変数の struct stack を使用するシングルインスタンス前提だが、
>>963 のコードを利用してマルチインスタンス可能にせよって問題なのか?
970デフォルトの名無しさん:2010/10/31(日) 16:04:19
>>941
御回答有難うございます!
すみません…。頭だけで考えてました…。
971デフォルトの名無しさん:2010/10/31(日) 16:23:45
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)

*記号を使ってでsin曲線を描け。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月2日
[5] その他の制限: なし
よろしくお願いします。
972デフォルトの名無しさん:2010/10/31(日) 16:48:23
>>967-968
実はこれ、
動作させる計算機で扱える最小整数値をwindows、VC9、while、math.hを使って求めよと言う問題ですよ
itaniumのwinだとどんな値になるんだろ
973デフォルトの名無しさん:2010/10/31(日) 16:50:57
つまんね
974デフォルトの名無しさん:2010/10/31(日) 17:01:32
>>966
やってみたぜ!
(a) 必要ない
(b) (n + 1) * (n + 1) - n * n <= d
(c) "(d - 1) / 2 以下であれば常に成立するので最少のnは存在しない" と出力する  ← これを四角で囲んどく
(d)
#include <stdio.h>
int main() {
while (0) {}
printf("d = ");
getchar();
puts("(d - 1) / 2 以下のnであれば不等式は常に成立するので最少のnは存在しない");
return 0;
}
975デフォルトの名無しさん:2010/10/31(日) 17:04:03
「最少」の定義に関する考察も加えないとな
976デフォルトの名無しさん:2010/10/31(日) 17:06:20
スカ画像も交じってんじゃねぇか
うんこはいらね
977デフォルトの名無しさん:2010/10/31(日) 17:41:56
>>969
それくらいはスタックやエラー処理を書いたことあれば誰だって想像できる。
出題者があまりにも解答者のことを考えてないので書いて教えただけ。
stackinit がまだ出てこないから、スタックサイズが相変わらず不明だし。
もう私は、>>954 の相手はしないことにしたよ。
978デフォルトの名無しさん:2010/10/31(日) 17:51:32
>>972
C 言語の整数を表現するための型を決定した瞬間に、使用コンパイラの実装依存で決まるだろ。
979デフォルトの名無しさん:2010/10/31(日) 18:53:27
INT_MIN、LLONG_MINをwhileループで求めよってことだよ
980デフォルトの名無しさん:2010/10/31(日) 19:33:08
>>977
stackinit() は pt を 0 にするだけだろうな
mx の設定や bd の確保する関数は別に有るんだろう

ソース不足より出題の意図が判らんから誰もいじりもしない
せっかくいじってくれる人が出てきても反応無しって事はもう諦めてるかも知れんね
981デフォルトの名無しさん:2010/10/31(日) 21:14:17
>>979
整数を表す型いくつあるか知ってる?w
982デフォルトの名無しさん:2010/10/31(日) 21:14:56
>>981 それよりも聖徳太子知らない?聖徳太子。和の精神(ry
983デフォルトの名無しさん:2010/10/31(日) 21:18:30
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
count をもつqueue(待ち行列)を実現せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。


984デフォルトの名無しさん:2010/10/31(日) 21:44:45
>>972
マシン・イプシロンだろ
985デフォルトの名無しさん:2010/10/31(日) 21:45:50
http://ja.wikipedia.org/wiki/%E8%A8%88%E7%AE%97%E6%A9%9F%E3%82%A4%E3%83%97%E3%82%B7%E3%83%AD%E3%83%B3

>C言語においては、<float.h>でFLT_EPSILON、DBL_EPSILON、LDBL_EPSILONという定数が
>定義されており、それぞれfloat型、double型、long double型の計算機イプシロンの値となっている。

と書いてあるけどな

986デフォルトの名無しさん:2010/10/31(日) 22:13:25
>>983
<stdio.h> から始めるってのは例によってC言語で書けって事?
queue に入れる型は?
C++で良いならテンプレートクラスは習った?
987デフォルトの名無しさん:2010/10/31(日) 22:19:08
>>べつに#include <stdio.h>から始めなくても大丈夫です
型は特に指定されていません。
テンプレートは習っています。
988デフォルトの名無しさん:2010/10/31(日) 22:26:58
次スレ立てます
989デフォルトの名無しさん:2010/10/31(日) 22:27:59 BE:113606126-S★(531777)
次スレ立てました
C/C++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/
990デフォルトの名無しさん:2010/10/31(日) 22:43:34
>>984-985
なんで整数でイプシロンが出てくるんだよ。
ちゃんと最初から読めよ。
991デフォルトの名無しさん:2010/11/01(月) 00:07:38
#include <stdio.h>
#include <stdlib.h>
#define SNUM 5
void load_data(char *fname, int *code, int *price, char name[][30]);
void print_data(int *code, int *price, char name[][30]);
int main (void)
{int i,code[SNUM]={0},price[SNUM]={0};
char name[SNUM][30]={0},fname[30]="product.txt";
load_data(fname, code, price, name); //商品情報の読み込み
print_data(code, price, name); //商品情報の表示
return 0;}

void load_data(char *fname, int *code, int *price, char name[][30]){
FILE *fp; //ファイルポインタ
int i; //カウンタ
char temp[256];
fp=fopen(fname, "r");
if(fp==NULL){
printf("Can't open %s!\n", fname);
exit(1);}
fgets(temp, 256, fp);
for(i=0; i<SNUM; i++) {
fscanf(fp, "%d%s%d", &code[i], &name[i], &price[i]);}
fclose(fp);}
void print_data(int *code, int *price, char name[][30])
{int i; //カウンタ
for(i=0; i<SNUM; i++) {
printf("%d\t%s\t%d\n", code[i], name[i], price[i]);
}}

プログラミング演習の問題です。
これでproduct.txtからデータを読み込み表示したいのですが、上手く表示できません教えてください。
992デフォルトの名無しさん:2010/11/01(月) 00:10:21
>>985
ttp://codepad.org/zbsO9JCU

FIFO 書いたの久しぶりだったからバグって時間喰っちゃった
993デフォルトの名無しさん:2010/11/01(月) 00:20:25
>>991
product.txt って一行に全データが入ってるの?
普通は一行にいレコードだと思うけど、ソース見ると一行しか読んでないよね
fscanf(fp, "%d%s%d", &code[i], &name[i], &price[i]);} 
普通は nama[i] って書くけど & 付けても意味は同じだっけ?
994デフォルトの名無しさん:2010/11/01(月) 00:21:06
× いレコード
○ 1レコード
995デフォルトの名無しさん:2010/11/01(月) 00:23:51
>>993
いえ、数行あります。
996デフォルトの名無しさん:2010/11/01(月) 00:31:31
product.txtはそんな形式のなの?
fgets(temp, 256, fp); する意味は何?
997デフォルトの名無しさん:2010/11/01(月) 00:49:14
system("cat product.txt");
998デフォルトの名無しさん:2010/11/01(月) 00:49:19
>>996

特になかったです。
事故解決しました、すいません。
999デフォルトの名無しさん:2010/11/01(月) 00:54:48
1000なら寝る
1000デフォルトの名無しさん:2010/11/01(月) 00:55:48
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。