2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語/C++言語の宿題を片付けます 65代目

1 :950じゃないけど:2006/05/18(木) 06:43:42
あなたが解けない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

【前スレ】
C/C++の宿題を片付けます 64代目
http://pc8.2ch.net/test/read.cgi/tech/1146323457/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000

2 :デフォルトの名無しさん:2006/05/18(木) 06:44:12
[>>1からついでに色々。]
・同じ講義を受けている人が既に同じ宿題を依頼してるかもしれなせん。
 まずはスレを少しさかのぼって探してみてください。
 それさえ出来ないシメジ野郎はバター焼きにして食っちまうぞ
・解答者は答える義務もないし、答えてもそれが正しいかどうかは保証しません。
 もちろん、出題者先生の意図なんぞ知ったことではありません。
 At your own riskで。
・態度が余りに悪いとすーぱーはかーがあなたの先生にチクるかもしれません。

報告用テンプレ(任意)
[1] 先生の評価:
[2] 提出結果:
[3] 単位取得の有無:
[4] 回答者にコメント(愚痴等は禁止):

3 :デフォルトの名無しさん:2006/05/18(木) 06:51:14
>>1乙!


質問者へ
前スレが埋まってから使うように

4 :デフォルトの名無しさん:2006/05/18(木) 20:05:17
なんでスレタイがセンス無いものにかわってんだよボケ

5 :デフォルトの名無しさん:2006/05/18(木) 21:01:37
出題したままレスがない人が多くて気になる。

6 :デフォルトの名無しさん:2006/05/18(木) 21:22:24
礼を言って欲しいって事?

7 :デフォルトの名無しさん:2006/05/18(木) 21:48:42
ネタの宿題だったらショック

8 :デフォルトの名無しさん:2006/05/18(木) 22:12:14
答える側にとってはネタかどうかなんて無関係なような。

9 :デフォルトの名無しさん:2006/05/18(木) 23:45:41
あんたの無能さについて

の結果が凄く気になる。


10 :デフォルトの名無しさん:2006/05/19(金) 00:54:30
[1] プログラミング実習
[2]
長さが32の0と1の列
se7e6e5…e1e0d1d2…d22d23
を入力してこのビット列の表す実数値(実数表現の仕方はIEEE規格754に従うものと仮定する)

(-1)^s*(1+M)*2^E if-127<E<128
(-1)^s*M*2^(E+1) ifE=-127
Inf ifE=128,M=0
NaN ifE=128,M≠0

を出力するCプログラムを作成せよ。またこのプログラムの場合、使用した計算機の実数表現方式がIEEE規格754に従っているのなら、
計算結果として得られた実数値はコンピュータ内部では入力したビット列で表されているはずであるが、これをGDBのxコマンドを用いて調べてみよ。

[3] 環境
 [3.1] unix
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] C
[4] 5/26
[5] その他の制限:数学関数は使わない。



11 :デフォルトの名無しさん:2006/05/19(金) 01:00:58
前スレ埋め立て乙。

12 :デフォルトの名無しさん:2006/05/19(金) 01:01:06
スレタイがウンコ過ぎ

13 :デフォルトの名無しさん:2006/05/19(金) 01:04:39
なんでわざわざスレタイ変えるのかね
自己主張のつもり?氏ねよ

14 :デフォルトの名無しさん:2006/05/19(金) 01:07:32
別にいいでしょ。

15 :デフォルトの名無しさん:2006/05/19(金) 01:08:34
どっちでもいいよ

16 :デフォルトの名無しさん:2006/05/19(金) 01:11:05
http://pc8.2ch.net/test/read.cgi/tech/1147908265/
まともに立ててる↑こっち使おうぜー
身勝手な馬鹿につきあってらんねーよ

17 :デフォルトの名無しさん:2006/05/19(金) 01:15:21
同感だ。
無意味に事を荒立てる糞>>1に付き合う義理は無いよね。

18 :デフォルトの名無しさん:2006/05/19(金) 01:18:50
それじゃあ、ここは前の内藤ホライゾンと同じように避難スレということで。

19 :デフォルトの名無しさん:2006/05/19(金) 01:19:37
前スレの 971 です。よろしくお願いします

20 :デフォルトの名無しさん:2006/05/19(金) 01:20:39
雑談スレでいいじゃん
スープカレーってうまいの?

21 :デフォルトの名無しさん:2006/05/19(金) 01:32:42
>>1
このタイトルでは過去スレ一覧(29ch検索)にかからないのでは?

22 :デフォルトの名無しさん:2006/05/19(金) 01:39:22
それじゃあ、ここは無かったということで。

23 :デフォルトの名無しさん:2006/05/19(金) 10:28:02
>>20
カレースープを作ってみろ。それを美味しいと思えるならきっと美味しいだろう。

24 :デフォルトの名無しさん:2006/05/19(金) 17:12:20
うちの母親が作るカレーはいつもカレースープだった
つーか、カレー風味のお湯?

25 :デフォルトの名無しさん:2006/05/19(金) 18:34:13
END

このスレッドは1000スレを超えました。

26 :デフォルトの名無しさん:2006/05/20(土) 14:10:19
END条件は1000レスだろう?

27 :デフォルトの名無しさん:2006/05/20(土) 14:26:50
つ512kb

28 :デフォルトの名無しさん:2006/05/20(土) 15:16:12
しかし500Kb越えると終わる罠

29 :灰色の幽霊:2006/05/20(土) 17:42:46
[1]情報処理
[2]
(1)
標準入力から入力された文字が小文字ならば大文字に、大文字ならば小文字に
変換し、それ以外ならばそのまま標準出力に出力するプログラムを作成せよ。
ただし、マクロ置換を用いて一文字ずつ文字の変換を行うプログラムとして
実現せよ。
(2)
標準入力から数行にわたるテキストファイル(1バイト文字のみからなる
もの)を読み込み、同一内容の行(空行を含む)が続いた場合には、それ
を一行にまとめて標準出力に出力するプログラムを作成せよ。
例えば、
main()
{
printf("a\n");
printf("a\n");
printf("b\n");
printf("c\n");
printf("c\n");
printf("c\n");
}
の場合、下記のように出力するプログラムを作成せよ。
main()
{
printf("a\n");
printf("b\n");
printf("c\n");
}
[3]unix,gcc,C  [4]5/24   [5]特に制限はありません
プログラムに精通した皆さん、よろしくお願いします。


30 :灰色の幽霊:2006/05/20(土) 17:46:05
[1]情報処理 
[2](3)
char型配列として定義された任意の文字列に対し、下記の例のように
先頭から1文字ずつ文字数を増やしながら行を変えて表示し、
最終行で文字列全体を表示するような関数

incremental_string_print(char *x)

を作成せよ。関数内部ではchar型ポインタをインクリメントしながら
1文字ずつ putchar() を用いて出力せよ。

(表示例)
O
Os
Osa
Osak
Osaka
Osaka
この関数は、例えば、以下のような利用の仕方を想定している。
(キーボードから入力された文字列(例えば Osaka University)を
上記の表示例のように表示する)

main()
{
char s[100];
fgets(s, sizeof(s), stdin);
incremental_string_print(s);
}
[3]unix,gcc ,C [4]5/24 [5]制限はありません
よろしくお願いします。

31 :デフォルトの名無しさん:2006/05/20(土) 18:06:50
こちらが本スレになります。
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/

32 :billy:2006/05/20(土) 18:53:36
問題文(含コード&リンク): 第1引数のファイルに含まれる文字列をカンマを区切りとして
単語に分けた上で、第2引数と第3引数のフィールドを入れ替えて出力するプログラムを作成する。
ただし、入れ替えるように指定されたフィールドの一方もしくは両方が存在しなかった場合は
入れ替えを行わないようにする。
実行例:
%cat source
This,is,source.
file,end.
%gcc -o fieldswap kadai.c
%./fieldswap source 2 3
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
環境
OS:Linux
コンパイラ名とバージョン:gcc
言語:C
期限: 5/25


33 :デフォルトの名無しさん:2006/05/21(日) 01:19:42
こっちに投稿しても処理されませんよん

34 :デフォルトの名無しさん:2006/05/21(日) 01:28:16
[1] 授業単元: プログラム演習
[2] 問題文: 質量m [kg]の物体が,時間t = 0 [s]で初期速度v0 [m/s]の状態から加速度a [m/s2]で直線運動するとき,
t [s]後の物体の速度v [m/s],移動距離x [m]および運動エネルギー[J]を求めるプログラムを作りなさい.
ただし,速度,移動距離および運動エネルギーは,それぞれget_vel(),get_dis(), get_e()なる関数を各自定義し,
それらにより計算させること.また,変数m,v0,aをローカル変数で宣言した場合とグローバル変数で宣言した場合の2通りで作成すること.
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ:gcc
 [3.3] 言語: C
[4] 期限: 5月24日
[5] その他の制限:特にございません、職人様よろしくおねがいします

35 :デフォルトの名無しさん:2006/05/21(日) 01:36:52
だからこっちに投稿しても処理されませんよん
本スレはこっち↓
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/



36 :デフォルトの名無しさん:2006/05/21(日) 12:56:41
[1]情報処理
[2]
double型の2数a,bを入力してaをbで割った商の
小数点以下だけを表示させるプログラムを作りなさい。
ただし、while構文を使ってa,bを入力させ続けるものとします。
[3]C [4]5/22 [5]制限はありません 。

よろしくお願いいたします。

37 :デフォルトの名無しさん:2006/05/21(日) 13:29:02
きけやぼけが。

38 :デフォルトの名無しさん:2006/05/21(日) 14:06:08
人の話が聞けないから、こんな簡単な問題もわからんのだろう。

39 :デフォルトの名無しさん:2006/05/21(日) 17:56:09
ここに来たお馬鹿な質問者へ
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
        ↑
     これが本スレだよ!

40 :デフォルトの名無しさん:2006/05/21(日) 18:23:12
嫌なら削除依頼出せよ

41 :デフォルトの名無しさん:2006/05/21(日) 19:35:32
>>40
>>18

42 :デフォルトの名無しさん:2006/05/21(日) 19:40:37
>>41
じゃあ騒ぐなガキども

43 :デフォルトの名無しさん:2006/05/21(日) 19:43:11
>>42
>42

44 :デフォルトの名無しさん:2006/05/21(日) 19:50:54
下がりすぎ

45 :デフォルトの名無しさん:2006/05/21(日) 20:26:00
>>44
ageんなよ
質問者は中なぞ読まずに目の付くほうに書き込むんだから

46 :デフォルトの名無しさん:2006/05/21(日) 20:33:15
なんでなんで?

47 :デフォルトの名無しさん:2006/05/22(月) 01:01:58
保守

48 :1001:2006/05/22(月) 13:20:25
1000を越えました。。。
新しいスレッドを立ててくださいです。。。

49 :デフォルトの名無しさん:2006/05/22(月) 13:34:56
超えてないですよ

50 :50:2006/05/22(月) 15:13:47
49を越えました。。。
新しいスレッドを立ててくださいです。。。

51 :デフォルトの名無しさん:2006/05/22(月) 15:37:50
1〜10までの整数を加算して表示するプログラムを、for文で作成せよ。

52 :デフォルトの名無しさん:2006/05/22(月) 15:49:39
#include <stdio.h>
int main() {int i; for(i=1; i<10; i++) printf("%d", i);}

53 :デフォルトの名無しさん:2006/05/22(月) 15:57:23
1〜10までの整数までの整数のうち、偶数のみを加算して表示する
プログラムを、while文で作成せよ。

54 :デフォルトの名無しさん:2006/05/22(月) 16:09:16
X=(2+4+6+8+10)
X=30

ハウ( ̄д ̄;)!!

55 :デフォルトの名無しさん:2006/05/22(月) 17:28:01 ?#
>>53
int main(){ int a=2; int d=2; int n=5; int s= n*(2*a+(n-1)*d)/2; while(1){printf("%i\n", s);} return 0; }

56 :デフォルトの名無しさん:2006/05/22(月) 20:03:55
#include <stdlib.h>
int main(void)
{
    system("perl -e '$sum=0;$i=1;while($i<=10){$sum+=$i if($i%2==0);$i++;} print \"$sum\\n\";'");
    return 0;
}

57 :デフォルトの名無しさん:2006/05/22(月) 23:48:05
1〜10までの整数を加算して表示するプログラムを、goto文で作成せよ。

58 :デフォルトの名無しさん:2006/05/23(火) 00:13:44
>>57
10 A=A+1
20 LOCATE 0,A:PRINT A
30 GOTO10


59 :デフォルトの名無しさん:2006/05/23(火) 02:54:58
それBASICじゃない?

60 :デフォルトの名無しさん:2006/05/23(火) 03:04:20
int i;
i=1;
HELL:
printf("%d\n", i);
i++;
if(i<=10) goto HELL;

61 :デフォルトの名無しさん :2006/05/23(火) 17:20:58
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):再帰関数を利用して、フィボナッチ数列を生成するプログラムを作成せよ。
ただし、生成するフィボナッチ数列の要素数をキーボードから入力する。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:どちらでも可
[4] 期限:明日まで
[5] その他の制限:

初心者で 全く分からないので、お願いします!


62 :デフォルトの名無しさん:2006/05/23(火) 17:24:47
>>61
>>39

63 :デフォルトの名無しさん:2006/05/23(火) 18:35:06
整数を入力として受け付けて,その各桁の総和を求めよ。
例:
入力が1234 の場合,答えは10 になる
入力が9999 の場合,答えは36 になる

教えて

64 :デフォルトの名無しさん:2006/05/23(火) 18:56:04
int sumEachOrder(int foo)
{
char buf[20];
sprintf(buf, "%d", foo);
int sum = 0;
for (int ic = 0; buf[ic] != '\0'; ++ic) {
sum += buf[ic] - '0';
}
return sum;
}

65 :デフォルトの名無しさん :2006/05/23(火) 19:01:05
[1] 授業単元: オペレーティングシステム
[2] 問題文:
1.引数にファイル名を指定すると、そのファイルのサイズと
ファイルの種類(一般ファイル、ディレクトリ、パイプ等)、
最終変更時刻を表示する(fview)を作成せよ。但し、引数には複数
のファイルを指定できるようにすること。また、fstatシステムコール
を用いること。

2.引数に指定した複数のテキストファイルの内容を結合して一つの
ファイルにまとめるコマンド(cat2)を作成せよ。但し、まとめた内容を
格納するファイル名は"concat.txt"とすること。但し、catコマンドを
system関数内部で呼ばないこと。

[3] 環境
 [3.1] OS:windows cygwin
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: ([2006年5月28日23:59まで]
[5] その他の制限: 高水準ライブラリ関数は使用せずに
システムコールのみを使用する。

難しすぎて、分かりません。システムコールのみだとなおさらです。
よろしくお願いします。


66 :デフォルトの名無しさん:2006/05/23(火) 19:24:49
ここに来たお馬鹿な質問者へ
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/
        ↑
     これが本スレだよ!

67 :デフォルトの名無しさん:2006/05/23(火) 20:25:50
>>59
ごめん。間違えた。
終了条件がなかった。
10 A=A+1
20 LOCATE0,A:PRINT A
30 IFA<>10THEN10
40 END


68 :デフォルトの名無しさん:2006/05/25(木) 07:47:12
つまらん

69 :デフォルトの名無しさん:2006/05/25(木) 13:17:03
[1] 授業単元:コンピュータ基礎
[2] 問題文:円周率を小数点以下100桁を計算するプログラム
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5月28日
[5] その他の制限:マーチンの公式
π=16arctan1/5-4arctan1/239
を使って求める


初心者なのでサーパリわかりません、職人様よろしくお願いします。


70 :デフォルトの名無しさん:2006/05/25(木) 17:18:55
>>69

#define abs(a) ((a)<0?-(a):(a))
typedef struct {char r[128];} IH;
void IHsI(IH *pd,int s)
{int i;pd->r[0]=+1;if(s<0)pd->r[0]=-1;for(i=10;i>0;i--){pd->r[i]=abs(s%10);s/=10;}for(i=11;i<128;i++)pd->r[i]=0;}
void IHsIH(IH *pd,IH *ps)
{int i;for(i=0;i<128;i++)pd->r[i]=ps->r[i];}
void IHaIH(IH *pd,IH *ps)
{int i,c=0;if(pd->r[0]==ps->r[0]){for(i=127;i>0;i--){c+=pd->r[i]+ps->r[i];pd->r[i]=c%10;c/=10;}}
else{for(i=127;i>0;i--){c+=pd->r[i]-ps->r[i];if(c<0){pd->r[i]=(c+10)%10;c=-1;}else{pd->r[i]=c%10;c=0;}}
if(c<0){pd->r[0]*=-1;for(i=1;i<127;i++)pd->r[i]=9-pd->r[i];pd->r[i]=10-pd->r[i];}}}
void IHbIH(IH *pd,IH *ps)
{int i,c=0;if(pd->r[0]!=ps->r[0]){for(i=127;i>0;i--){c+=pd->r[i]+ps->r[i];pd->r[i]=c%10;c/=10;}}
else{for(i=127;i>0;i--){c+=pd->r[i]-ps->r[i];if(c<0){pd->r[i]=(c+10)%10;c=-1;}else{pd->r[i]=c%10;c=0;}}
if(c<0){pd->r[0]*=-1;for(i=1;i<127;i++)pd->r[i]=9-pd->r[i];pd->r[i]=10-pd->r[i];}}}
void IHmI(IH *pd,int s)
{int i,c=0;if(s<0){pd->r[0]*=-1;s*=-1;}for(i=127;i>0;i--){c+=pd->r[i]*s;pd->r[i]=c%10;c/=10;}}
void IHmIH(IH *pd,IH *ps)
{IH t;int i,c=0,m;t.r[0]=pd->r[0]*ps->r[0];for(i= 254;i>1;i--){for(m=i-127;m<128;m++){if(i-m>0&&m>0){c+=pd->r[i-m]*ps->r[m];}}
if(1<=i-10&&i-10<=127){t.r[i-10]=c%10;}c/=10;}IHsIH(pd,&t);}
void IHdIH(IH *pd,int s)
{int i,r;if(s<0){pd->r[0]*=-1;s*=-1;}for(r=0,i=1;i<128;i++){r=r*10+pd->r[i];pd->r[i]=r/s;r%=s;}}
int IHs(IH *ps)
{int i,s=0;for(i=1;i<128;i++)s+=ps->r[i];return(ps->r[0]*(s?1:0));}
void IHat(IH *ps)
{IH at,t;int n=0,i;IHsI(&at,0);IHsIH(&t,ps);while(IHs(&t)){IHsI(&t,1);for(i=0;i<n;i++)IHmI(&t,-1);for(i=0;i<2*n+1;i++)IHmIH(&t,ps);
IHdIH(&t,2*n+1);IHaIH(&at,&t);n++;}IHsIH(ps,&at);}

71 :デフォルトの名無しさん:2006/05/25(木) 17:19:50
void IHp(IH *ps)
{int i=0;if(ps->r[i]<0)printf("-");i++;for(;i<10;i++)if(ps->r[i]>0)break;for(;i<11;i++)printf("%d",ps->r[i]);printf(".");
for(;i<111;i++)printf("%d",ps->r[i]);printf("\n");}
void main()
{IH a,b;IHsI(&a,1);IHdIH(&a,5);IHat(&a);IHmI(&a,16);IHsI(&b,1);IHdIH(&b,239);IHat(&b);IHmI(&b,4);IHbIH(&a,&b);IHp(&a);}

72 :デフォルトの名無しさん:2006/05/26(金) 00:45:21
[1] 多項式計算
[2] f = C(i)*x^i
狽フ次数nおよび多項式の係数C(i)[ただし0≦i≦n]を入力し、fの値を求めなさい。

ズブのシロウトです。int や floatでプログラム内に用いる数を先に宣言しておくのはわかりましたが、
多項式においては、nが決まらない限りはC(i)の個数もわからないので、不確定な個数の数の宣言の仕方がわかりません。
どうかよろしくお願いします。

73 :お願いします…:2006/05/26(金) 03:01:47
制御文のところで下の問題が出たんですけどさっぱりわからなくて…
助けてください。。

1、m種類の商品の単価aと数量nをキーボードから入力し
    単価×数量=金額
  を計算し、m種類の合計金額を求めて表示させるプログラムを作成しなさい
2、正の整数nをキーボードから入力し
    1+2+・・・・・・+n
1*2*・・・・・・*n
  の値を表示させるプログラムを作成しなさい。
も二問です。どうかおねがいします

74 :デフォルトの名無しさん:2006/05/26(金) 03:22:59
>>73
2.だけ。
#include <stdio.h>
int sum(int n){ return n * (n + 1) / 2; }
int prod(int n){ int i, res; for( i = res = 1 ; i <= n ; i++ ) res *= i; return res; }
int main(void){ int n; scanf("%d", &n); printf("1+2+..+%d=%d\n1*2*..*%d=%d\n", n, sum(n), n, prod); return 0;}
エラー処理とかは自分でやりなさい。

75 :デフォルトの名無しさん:2006/05/26(金) 04:20:41
#include<stdio.h>
#include<stdlib.h>

void getn( char* o, unsigned len ){
int ch;
do { ch = getc(); *(o++) = ch; } while( ch != '\n' && --len );
(--o) = '\0';
if( ch != '\n' ){ while(getc() != \n'); }
}
int geti(){ char in[32]; getn(in,32); return atoi(in); }
void que1(void){
int a,b,c=0,s=0;
while(1){
printf("単価(a): ");
if( ! ( a = geti() ) ){ break; }
printf("\n数量(n): "); n = geti();
printf("\n種類%d: 単価(%d)×数量(%d)=金額(%d)\n",++c,a,b,a*b);
s += a*b;
}
}
void que2(void){
int n,s=0,m=0,i=0;
printf("限度(n): ");
n = geti();
for( i = 0; i < n; i++ ){ s += a; m+=b }
printf("\n1+2+3…n: %d\n",s);
printf("1*2*3…n: %d",b);
}
int main(){ que1(); que2(); return 0; }


76 :デフォルトの名無しさん:2006/05/28(日) 01:27:28
>>72
xは入力しない?
多項式を表示しろってこと?

77 :デフォルトの名無しさん:2006/05/28(日) 16:53:49
あ?

78 :デフォルトの名無しさん:2006/05/28(日) 17:11:00
アッ・・・・!

79 :デフォルトの名無しさん:2006/05/29(月) 11:53:52
ア?

80 :デフォルトの名無しさん:2006/05/29(月) 12:01:03
tets

81 :デフォルトの名無しさん:2006/05/29(月) 15:28:52
#include<stdio.h>
int main(void)
{
float taiju,sum=0.0;
int i;
for(i=0;i<3;i++){
printf(

82 :デフォルトの名無しさん:2006/05/29(月) 15:46:54
プログラム数ヶ月の初心者だけど、Cって単純な計算を組み合わせて、
あとは在り物のライブラリを使うだけなのかな、と思うようになった。


83 :デフォルトの名無しさん:2006/05/29(月) 16:02:29
60点以上の点数が入力されるまで
再入力を繰り返すプログラムを作成せよ。
(ヒント:無限ループとbreak文を使用する)
  実行例 1回目点数入力:30□
      不合格です。再試を受験してください。
      2回目点数入力:70□
      合格です。
     □はエンターキーを示す

84 :こんなんじゃダメか?:2006/05/29(月) 16:07:44
#include<iostream>
using namespace std;

int main(void)
{
int score;


while(1){
cout << "点数を入れろ: ";
cin >> score;
if(score >= 60){
cout << "合格おめ" << endl;
break;
}
else{
cout << "不合格プギャー" << endl;
}
}
return0;
}

85 :デフォルトの名無しさん:2006/05/29(月) 16:11:01
#include <stdio.h>

int main(void)
{
int a;
while (1){
printf("input > ");
scanf("%d",&a);
if (a>=60){
break;
}
puts("不合格,おまいには10000万年早いわ!!");
}
puts("合格,はいはい,ワロスワロス");
return 0;
}

86 :デフォルトの名無しさん:2006/05/29(月) 16:28:28
>>53
#include<iostream>
using namespace std;

int main(void)
{
static int a;
int count = 0;

while(count <= 10){
count++;

if(count % 2 == 0){
a += count;
cout << count << "が加算されました" << endl;
}

}
cout << a;

return0;
}

87 :デフォルトの名無しさん:2006/05/29(月) 17:48:24
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):英語の小文字の文字列をキーボードから入力した時、
その文字列の大文字を出力するプログラムを作ってください。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: [2006年5月29日20時まで
[5] その他の制限: scanfを使用


88 :デフォルトの名無しさん:2006/05/29(月) 18:06:49
>>87
#include<stdio.h>
const char u[]={
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
0x60,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x7B,0x7C,0x7D,0x7E,0x7F,
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
void main(){char s[256];int i;scanf(

89 :デフォルトの名無しさん:2006/05/29(月) 18:08:05
"%s",s);for(i=0;s[i]&&i<256;i++)printf("%c",u[s[i]]);}

90 :デフォルトの名無しさん:2006/05/29(月) 18:25:05
void mainって今でも使うの?

91 :こんな感じの奴をおながいします。?のとこがわかりません。:2006/05/29(月) 18:29:40
>>88
#include <stdio.h>
int main(void){
char s[10]

printf("????"");
scanf("%s",s);
printf("????",???);

return 0;
}




92 :デフォルトの名無しさん:2006/05/29(月) 18:34:57
>>91
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/679

93 :デフォルトの名無しさん:2006/05/29(月) 18:49:36
>>82
極論すればそういうことになるな。

94 :デフォルトの名無しさん:2006/05/29(月) 18:52:03
組み合わせかたで雲泥の差になるわけだがな。

95 :デフォルトの名無しさん:2006/05/29(月) 19:12:18
まあ最近はC系でも使う人と作る人に分かれてる、ってことね。
組み合わせるのはまた別の才能だろうし。

96 :シッタカター:2006/05/29(月) 19:34:28
>>82

ライブラリもCプログラムなんですけどね…
COBOLでも書けるようなCプログラムなら、計算だけだろうけど…

『プログラム=データ構造+アルゴリズム』とか『インターフェイスとインプリメントの分離』とかの言葉があるけど…知ってる?

97 :こんな感じの奴をおながいします。?のとこがわかりません。:2006/05/29(月) 19:48:35
>>92 どういう意味ですか?

98 :デフォルトの名無しさん:2006/05/29(月) 19:49:50
そこにお前と同じ質問があるんだよ

99 : ◆Sra2PNCv7Q :2006/05/29(月) 20:05:18
急でスミマセン…
[1] 授業単元:プログラムT
[2] 問題文(含コード&リンク):
  1.1.二次方程式ax2+bx+c=0のa、b、cを入力すると、解の公式を用いて答えを出すプログラムを作って、動作を確認せよ。
      ただし、aが0の場合を考慮せよ。また、解が重根の場合や複素数の場合にも対応せよ。(判別式を用いて条件分岐させるとよい。
      複素数解の場合は、x = 3 + 5i のように表示させる。)
[3] 環境
 [3.1] OS:Windows
 [3.2] HC Editor
 [3.3] 言語: C
[4] 期限: (2006年5月30日8:40まで] )
[5] その他の制限: (else ifを使って。)

よろしくお願いします。

100 :デフォルトの名無しさん:2006/05/29(月) 20:09:46
#include <stdio.h>
main(){puts(

101 :デフォルトの名無しさん:2006/05/29(月) 20:10:19
あう

102 :デフォルトの名無しさん:2006/05/29(月) 20:11:53
#include<stdio.h>
int main(void){
puts("2chで聞いたけどわかんねぇ");
return 0;
}

103 :デフォルトの名無しさん:2006/05/29(月) 21:24:56
>>99
過去ログ嫁よ猿が。

104 : ◆Sra2PNCv7Q :2006/05/29(月) 21:39:23
>>103
読みました。すみません。違うみたいですね。

105 :デフォルトの名無しさん:2006/05/29(月) 21:49:22
>>99 こんなんで網羅してるか?
#include <stdio.h>
#include <math.h>
int main(void)
{
double a, b, c, d;
printf("a, b, c =?"); scanf("%lf , %lf , %lf", &a, &b, &c);
d = b * b - 4.0 * a * c;
if(a == 0.0){
if(b == 0.0){
if(c == 0.0){printf("解は任意\n");}
else{printf("解は無い\n");}
}else{printf("%f\n", -c/b);}
} else {
if(d < 0.0){printf("%f±%fi\n", -b/(2.0*a), sqrt(-d));}
else if(d == 0.0){printf("%f(重婚)\n", -b/(2.0*a));}
else{ printf("%f,%f\n", (-b-sqrt(d))/(2.0*a), (-b+sqrt(d))/(2.0*a)); }
}
return 0;
}

106 : ◆Sra2PNCv7Q :2006/05/29(月) 22:06:54
>>105
ありがとうございます! 
複素数もちゃんと出ました。本当にありがとうございました!
もっと勉強して自分で作れるように頑張ります。


107 :七氏:2006/05/29(月) 22:13:09
libtiffをつかったプログラミングでtiff画像を 
カラー画像→グレー画像
に変換する方法なら書いてあるのですが
グレー画像→カラー画像
に変換する方法がわかりません
どなたかわかる方教えてもらえませんか
参考にしているサイトは http://www-06.ibm.com/jp/developerworks/linux/020802/j_l-libtiff2.html 
ですよろしくお願いします

108 :デフォルトの名無しさん:2006/05/29(月) 22:22:14
グレー画像→カラー画像は無理。
貴様は白黒写真見て元の色が全部分かるというのか。

109 :七氏:2006/05/29(月) 22:34:01
>>108
そうなんですかぁ
ということはG3→G4は不可能と言う事ですかね?


110 :デフォルトの名有りさん:2006/05/30(火) 00:10:52

無題  名無しさん - 2006/05/30(Tue) 00:08 No.1956
1956.txt [1] 授業単元: C++プログラミング
[2] 問題文(含コード&リンク):
(添付ファイル参照)
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: [2006年05月30日07:00まで]
[5] その他の制限: なし

時間かければなんとか書ける宿題だけど、もう睡魔に勝てない・・・3日寝てないから、
明日の(5・30)朝提出しなければならないので、どうか、助けてください;;;

問題文長すぎたのでここで書いた↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?

111 :デフォルトの名無しさん:2006/05/30(火) 00:26:23
断る。

112 :デフォルトの名無しさん:2006/05/30(火) 00:40:58
[1] 授業単元:プログラミングC
[2] 問題:【例】12+3=と入力し、出力は12+3=4となるようにせよ。
       条件1.演算子は+-*/それぞれに対応させる。
       条件2.数値は、1ケタ、2ケタとは限らない。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2006年6月2日17:00まで]
[5] その他の制限: メイン関数は入力と出力のみとし、他の処理はサブルーチン(関数)を用いること。
 
一括入力した数値と演算子を、どう処理して関数に送ったら良いのか分かりません…get文を用いるところまでは分かったのですが、お願いします。         



113 :デフォルトの名無しさん:2006/05/30(火) 00:49:49
問題の意味がさっぱりわかりませんよ。>>112


114 :七氏:2006/05/30(火) 01:00:22

すみません質問なんですがlibtiffを使った画像のG3→G4への変換をC言語
で作成したいのですがコレでは無理ですかね・・?
無理やり繋ぎ合わせた感じなのですが・・詳しいかたよろしくお願いします

↓に書き込みました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?

115 :112:2006/05/30(火) 01:05:39
申し訳ございません。
”12+3=”と一括入力し、その計算問題と結果つまり、”12+3=15”を出力するプログラムです。
数値と演算子をどう分けたらいいのかが分かりません。

116 :デフォルトの名無しさん:2006/05/30(火) 01:17:45 ?#
>>112
また「予期しない入力があったときの動作が未定義」な課題かよ。
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
double calc(double a,double b,char op){switch(op){
case'+':return a+b;case'-':return a-b;case'*':return a*b;case'/':return a/b;}return 0.0;}
int anal(double* d,char* str,int len){char tmp[100];int i=0,n=0;
while(n<len&&isspace(str[n]))n++;while((n+i)<len&&i<100&&(isdigit(str[i+n])||str[i+n]=='.')){
tmp[i]=str[i+j];i++;}tmp[i]='\0';*d=atof(tmp);return i+n;}
int main(void){char tmp[100];double a,b;int len,n;char op;
fgets(tmp,100,stdin);len=strlen(tmp);n=anal(&a,tmp,len);op=tmp[n++];
anal(&b,&tmp[n],len-n);if(tmp[n]=='=')printf("%s%f\n",tmp,calc(a,b,op));return 0;}

117 :デフォルトの名無しさん:2006/05/30(火) 01:19:55 ?#
>>116
最後の行間違い。
n+=anal(&b,&tmp[n],len-n);if(len>n&&tmp[n]=='=')printf("%s%f\n",tmp,calc(a,b,op));return 0;}

118 :112:2006/05/30(火) 01:43:45
116さんアリガトウございます!!
分からなくてイライラしてましたが、変数名を見て和みました。
このまま課題提出します。


119 :デフォルトの名無しさん:2006/05/30(火) 12:12:29
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):以下の表が与えられているもの(入力データ)とし,C言語で作成したシンプレックス法で最適解を求めよ.
また,以下の表より入力データも各自作成せよ.
基底変数 基底値  z  x1  x2  x3  x4
z        0  1  8   21  0  0
x3        1  0  2   3  1  0
x4        2  0  1   7  0  1
プログラムは下記のように分割せよ.
1.メインプログラム
2.データ入力
3.基底に入る変数を選択する
4.基底から出る変数を選択する
5.ピボット演算
6.出力
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:BCC
 [3.3] 言語: C言語
[4] 期限: 2006年5月31日9:00まで
[5] その他の制限:ごく初歩的なことしか習っていません。for,if,while文,ファイル処理(読み込み・書き込み程度)程度の簡単なものを使用した単純なプログラム
をお願いします.できればなんの処理をしているのか説明が書いていただければ幸いです.

2段階シンプレックス法で解くのですが,さっぱりわかりません;;


120 :デフォルトの名無しさん:2006/05/30(火) 12:20:43
すいません,間違えました.2段階シンプレックス法で解くではなく,2段階にも対応しているプログラムを作成するでした。

121 :デフォルトの名無しさん:2006/05/30(火) 12:24:05
書き込むスレも間違えているね

122 :デフォルトの名無しさん:2006/05/30(火) 12:44:28
>>112 の入力の解釈はsscanf()でできるね。
sscanf(line, "%d%c%d=", &n1, &op, &n2) とか。


123 :デフォルトの名無しさん:2006/05/30(火) 14:10:30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):C言語のソースファイルのコメント文削除し、ディスプレイに表示
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2006年5月30日16:00まで
[5] その他の制限:構造体、ファイル操作、基本的な文法は習いました

124 :デフォルトの名無しさん:2006/05/30(火) 14:12:30
こっちは重複スレなので本スレのほうで依頼してね

125 :デフォルトの名無しさん:2006/05/30(火) 15:04:11
うるせえよ

126 :デフォルトの名無しさん:2006/05/30(火) 21:50:51
じゃあしらね

127 :デフォルトの名無しさん:2006/05/31(水) 15:24:53



128 :デフォルトの名無しさん:2006/05/31(水) 16:42:51
身近な生活に関するプログラミング何か教えてくださいませんか!!??

129 :デフォルトの名無しさん:2006/05/31(水) 16:49:10 ?#
>>128
#include<stdio.h>
int main(void){ printf("もう来るな\n");return 0;}

130 :デフォルトの名無しさん:2006/05/31(水) 17:10:59
>>128
精神虚弱者更生プログラミングをお勧めしよう

131 :デフォルトの名無しさん:2006/05/31(水) 17:34:58
なんですかそれは!!??

132 :デフォルトの名無しさん:2006/05/31(水) 19:58:42
[1] 授業単元:課題
[2] 問題文(含コード&リンク):
表示方法は工夫して、1,3,5,7,11,13・・・・という素数を指定した数までの中から
抽出するプログラムを作成する。(1〜50まで、など)

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: VC#
 [3.3] 言語: C#
[4] 期限: ([2006年6月1日7:00まで]
[5] その他の制限: 標準ライブラリ使用可


133 :デフォルトの名無しさん:2006/05/31(水) 20:04:22
[1] 授業単元:課題
[2] 問題文(含コード&リンク):
ある文字列に対して、指定した文字列を検索し指定した置換文字列に置換する。

※例「私はプログラマ初心者です」という文章を入力したとしたら、
初心者をキーに上級者へと置換し
「私はプログラマ上級者です」と出力する。

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: VC#
 [3.3] 言語: C#
[4] 期限: ([2006年6月1日7:00まで]
[5] その他の制限: 標準ライブラリ使用可


134 :デフォルトの名無しさん:2006/05/31(水) 20:59:15 ?#
&nbsp;&nbsp;&nbsp;&nbsp;test

135 :デフォルトの名無しさん:2006/05/31(水) 21:04:30 ?#
>>132
コンソールアプリでいいんかな?
----------------------------------
using System;

namespace kadai1
{
class Prime
{
static void Main()
{
// (C) 2ch syukudai sure
// http://pc8.2ch.net/test/read.cgi/tech/1147902222/l50
Console.Write("範囲>");
string line = Console.ReadLine();
int max = Convert.ToInt32(line);

byte[] table = new byte[max + 1];
Array.Clear(table, 0, max);
----------------------------------
つづく

136 :デフォルトの名無しさん:2006/05/31(水) 21:05:14 ?#
>>135 つづき
------------------------------------
for (int i = 2; i <= max; i++)
{
if (table[i] != 0)
continue;

for (int j = i * 2; j <= max; j += i)
table[j] = 1;
}

for (int i = 2; i <= max; i++)
{
if (table[i] == 0)
{
Console.Write(i);
Console.Write(",");
}
}
}
}
}


137 :デフォルトの名無しさん:2006/05/31(水) 21:12:45 ?#
>>133
using System;

namespace kadai2
{
class Replace
{
static void Main()
{
// (C) 2ch syukudai sure
// http://pc8.2ch.net/test/read.cgi/tech/1147902222/l50
string s = Console.ReadLine();
Console.WriteLine(s.Replace("初心者", "上級者"));
}
}
}


138 :デフォルトの名無しさん:2006/05/31(水) 21:22:36
>>134
それ何のテスト?

139 :デフォルトの名無しさん:2006/05/31(水) 21:23:41 ?#
>>138
全角以外でもインデントできないかなーって思って。

140 :デフォルトの名無しさん:2006/05/31(水) 22:03:20
>>139
なるほど。

141 :デフォルトの名無しさん:2006/05/31(水) 22:28:53
TEST

142 :デフォルトの名無しさん:2006/05/31(水) 23:28:30
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main(void){

int i,j,rand(void);
float x,y;
srand((unsigned)time(NULL));


for(i=0;i<1000;i++)
{
x = 1/(rand()+1);
y = 1/(rand()+1);

if( x*x + y*y <= 1)
j=0;
j++;
}

printf("%d",j);

}

[0,1]の擬似乱数の組の(x,y)を1000個発生させて x^2 + y^2 <=1 ってなる組の数を求めたいです
教えてくらださい・・・・

143 :デフォルトの名無しさん:2006/05/31(水) 23:35:54 ?#
>>142
「[0,1]の擬似乱数」って、0〜1の乱数ってこと?
だったら、forのあたりはこうで。

j = 0;
for(i=0;i<1000;i++)
{
x = (float)rand() / RAND_MAX;
y = (float)rand() / RAND_MAX;

if( x*x + y*y <= 1)
j++;
}


144 :デフォルトの名無しさん:2006/05/31(水) 23:38:39
>>143
すごい!数値出ました!
ムケサンクス!

145 :デフォルトの名無しさん:2006/06/01(木) 10:01:21
[1] 授業単元:アルゴリズム論
[2] 問題文:
コマンドライン上の括弧文字列を読み込んで、
左括弧と右括弧が釣り合っているか(整合しているか)どうかを判定し、
釣り合っている場合には対応する括弧対に番号をつけて出力するようなプログラムを
作成せよ。

ヒント:文字入力にはgetchar()関数を呼び出す。

例:入力[ [ ] [ [ ] ] ] [ ] ⇒ 出力 [1 [2 ]2 [3 [4 ]4 ]3 ]1 [5 ]5

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:6/7まで
[5] その他の制限:無し

どなたかご教授お願いします。

146 :デフォルトの名無しさん:2006/06/01(木) 10:29:04 ?#
>>145
#include<stdio.h>
int main(void){int l,m,s,c,len=0;l=m=s=0;char tmp[1000];
while((c=getch())!=EOF&&len<1000){
tmp[len++]=c;switch(c){
case'[':++l;len+=sprintf(&tmp[len],"%i",l);break;case']':--l;len+=sprintf(&tmp[len],"%i",l);break;
case'(':++s;len+=sprintf(&tmp[len],"%i",s);break;case')':--s;len+=sprintf(&tmp[len],"%i",s);break;
case'<':++m;len+=sprintf(&tmp[len],"%i",m);break;case'>':--m;len+=sprintf(&tmp[len],"%i",m);break;}
if (!(l && m && s))printf("%s\n",tmp);else printf("数が合ってないみたい\n");return 0;}

147 :145:2006/06/01(木) 14:09:31
>>146
ありがとうございます。
答えてくださったのに申し訳ないのですが、
こっちは本スレではないみたいなので、本スレの方で改めて質問したいと思います。


148 :デフォルトの名無しさん:2006/06/01(木) 15:24:00
お願いします!!教えてください。
100円ショップで1個100円の商品をまとめ買いすると値引きがある。
値引き率は、
@10個未満の場合は、値引きなし、
A10個以上100個未満の場合はすべて10%引き、
B100個以上1000個未満の場合はすべて20%引き、
C1000個以上の場合はすべて30%引き
となっている。
(問題1)購入個数nを与えると購入金額を計算するプログラムを作成せよ。
(問題2)購入個数653個の場合の購入金額を求めなさい。


149 :デフォルトの名無しさん:2006/06/01(木) 15:42:56 ?#
>>148
#include<stdio.h>
#include<stdlib.h>
int main(void){int n;char tmp[100];fgets(tmp,100,stdin);n=atoi(tmp);
printf("\\%i\n",(1000<=n)?70:(100<=n&&n<1000)?80:(10<=n&&n<100)?90:100*n);return 0;}

150 :デフォルトの名無しさん:2006/06/01(木) 15:43:53 ?#
>>149
優先順位やばい
printf("\\%i\n",((1000<=n)?70:(100<=n&&n<1000)?80:(10<=n&&n<100)?90:100)*n);return 0;}

151 :デフォルトの名無しさん:2006/06/01(木) 15:45:08
>>148

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

#define UNIT_PRICE 100

main(void)
{
/* (C) 2ch prog syukudai sure */
char line[100];
int n;
double rate;

printf("個数>");
fgets(line, sizeof line, stdin);
n = atoi(line);

if (n < 10)
rate = 1.0;
else if (n < 100)
rate = 0.9;
else if (n < 1000)
rate = 0.8;
else
rate = 0.7;

printf("価格:\\%d\n", (int)(n * UNIT_PRICE * rate));
}


152 :デフォルトの名無しさん:2006/06/01(木) 16:51:31
ありがとうございます。

153 :デフォルトの名無しさん:2006/06/01(木) 16:55:09
上のプログラムの仕様書とフローチャートを教えてください。お願いします


154 :デフォルトの名無しさん:2006/06/01(木) 17:00:15
上のって何番?


155 :デフォルトの名無しさん:2006/06/01(木) 17:03:47
148番です

156 :デフォルトの名無しさん:2006/06/01(木) 17:47:58 ?#
>>153
このスレではそこまで面倒見ない。が、特別サービス。

仕様書
http://pc8.2ch.net/test/read.cgi/tech/1147902222/148

フローチャート
 はじめ
   ↓
 コンソールから文字列を入力して数値に変換
   ↓
 変換した数値に、対応する単価を掛けた値を表示
   ↓
 おわり

157 :デフォルトの名無しさん:2006/06/02(金) 13:59:32
正方形の1辺の長さを入力し縦横が'*'
の正方形の図形を描け
ただし3以上20以下とする
-------------------------------------*/
#include<iostream.h>
#include<conio.h>

//------------------------
//メインプログラム
//------------------------
intmain(void)
{
intm;

cout<<"1辺の長さは ";
cin>>m;

return 0;
}
これが元です。お願いします;

158 :デフォルトの名無しさん:2006/06/02(金) 14:02:01
>>157
>1

159 :デフォルトの名無しさん:2006/06/02(金) 14:02:50
文字列の名前と苗字を入れ替えて
表示せよ(名前と苗字はスペースで区切る)
もし、"takenouchi ken"に変えてもプログラムは
変更無しで入れ替わるようにする
-------------------------------------*/
#include<iostream.h>
#include<conio.h>
//------------------------
//メインプログラム
//------------------------
intmain(void)
{
charname[]={"Suzuki Ichiro"};//名前の定義
cout<<endl<<"入れ替前は "<<name<<endl;
//ここに入れ替えプログラムを作る---------------
cout<<"入れ替後は "<<name<<endl;
return 0;
}
次も・・・C++です

160 :157:2006/06/02(金) 14:07:55
[1] 授業単元: 課題(テスト問題)
[2] 問題文 
[3] 環境
 [3.1] Windows
 [3.2] borland2.10
 [3.3] 言語:C++
[4] 期限: 6/5
[5] その他の制限: if for rand while 配列 2次配列 実引数 switch case等しか習ってませんが
おそらく範囲外からも出題されます・・


161 :デフォルトの名無しさん:2006/06/02(金) 14:25:42
#include<iostream>
using namespace std;
int main(void){
int m;
cout << "1辺の長さは ";
cin >> m;m = 3 <= m && 20 >= m ? m : -1;
for(int i = 0; i < m; i++){for(int j = 0; j < m; j++)cout << '*';cout << endl;}
return 0;
}

162 :157:2006/06/02(金) 14:31:54
#include<iostream.h>
#include<conio.h> の形で出来ないでしょうか・・
後すいません、縦横というのは

***
* *
***のように中が開いてるみたいです

163 :デフォルトの名無しさん:2006/06/02(金) 14:46:46
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string name = "Suzuki Ichiro";//名前の定義
cout << "入れ替前は " << name << endl;
name = name.substr(name.find(" ") + 1, name.size()) + " " + name.substr(0, name.find(" "));
cout << "入れ替後は " << name << endl;
return 0;
}

164 :デフォルトの名無しさん:2006/06/02(金) 14:58:17
>>162
for(int i = 0; i < m; i++){for(int j = 0; j < m; j++)cout << (i == 0 || i == m - 1 || j == 0 || j == m - 1 ? '*' : ' ');cout << endl;}
>#include<iostream.h>
>#include<conio.h> の形で出来ないでしょうか・・
それぐらい自分で(ry


165 :157:2006/06/02(金) 15:42:32
//2次元配列をアルファベット順に並び替えを行うken_sort()を完成せよ。他のプログラムは変更しない事
#include<iostream.h>
#include<conio.h>
//-----グローバル変数---------------------
charken[][20]={
{"nigata_ken 4"},
{"tokushima_ken 5"},
{"hyougo_ken 2"},
{"akita_ken 1"},
{"kagoshima_ken 3"},
};
intken_disp(void);//プロトタイプ宣言------
intken_sort(void);
intmain(void)
{
ken_disp();//表示
ken_sort();//並び替え
ken_disp();//表示

return 0;
}
intken_sort(void)
{
return 0;
}
intken_disp(void){
intcnt;
cout<<endl;
for(cnt=0;cnt<5;cnt++){
cout<<ken[cnt]<<endl;}
return 0;
}

166 :157:2006/06/02(金) 17:01:22
157の問題なんですけどそれ以外の数値を入れた場合のプログラムを組み込むのに
これでは実行結果がうまくいきません・・
cout<<"1辺の長さは ";
cin>>m;
if(m=2<m && 20>=m )}
){
for(int i=0; i<m; i++){
for(int j=0; j<m; j++)
cout<<(i==0 || i==m-1 || j==0 || j==m-1 ? '*' : ' ');
cout<<endl;
}
}else {cout<<"2~20までです!!"<<endl;}

167 :デフォルトの名無しさん:2006/06/02(金) 17:07:47 ?#
>if(m=2<m && 20>=m )}

168 :デフォルトの名無しさん:2006/06/02(金) 17:36:44
つーか、>>163のままでも、mが動作範囲外の値でも動くようになってるじゃん

169 :デフォルトの名無しさん:2006/06/02(金) 22:33:18 ?#
>>165
この課題をだしてるやつ、だめすぎる。

170 :157:2006/06/03(土) 07:27:01
俺ですか?それとも作った先生かな…
あ、どっちもか(´;ω;`)

171 :デフォルトの名無しさん:2006/06/03(土) 08:11:05
ひでぇ。
コードレビューしたら行数よりたくさんの問題が発見つかりそうな。
ネタじゃなくてマジで、こんな出題者に教わってるの?

172 :デフォルトの名無しさん:2006/06/03(土) 08:20:56
突然申しわけありません
ファイルポインタについて教えて頂きたく思います。
現状プログラムでexternでファイルポインタを定義している箇所が
あるのですが、fopen、fcloseを252回繰り返すと別のファイルがopen異常
となってしまうのですがexternしているファイルポインタは実は
closeできていないということはおこりえるのでしょうか?



173 :デフォルトの名無しさん:2006/06/03(土) 08:33:48
>>172
マルチポスト乙。


174 :デフォルトの名無しさん:2006/06/03(土) 09:45:49
>>170
できることなら>165のようなコードを書く人間に教わらないことをお勧めする。
コーディングに変な癖はつきそうだし間違ったマニュピレータの使い方は覚えそうだし
そもそもプログラミングセンスが根本から歪められかねない。

175 :デフォルトの名無しさん:2006/06/03(土) 10:09:31 ?#
>>165
#include <conio.h> の次の行に
#include <string.h> を追加

int ken_sort()
{
int i, j;
cnst int table_size = 5;

for (i = 0; i < table_size - 1; i++) {
for (j = i + 1; j < table_size; j++) {
if (strcmp(ken[i], ken[j]) < 0) {
char tmp[20];
strcpy(tmp, ken[i]);
strcpy(ken[i], ken[j]);
strcpy(ken[j], tmp);
}
}
}
}


176 :デフォルトの名無しさん:2006/06/03(土) 10:15:42 ?#
>>175
×cnst int table_size = 5;
○const int table_size = 5;


177 :157:2006/06/03(土) 14:09:55
ありがとうございます。他にもあるのですがとりあえず試行錯誤してみます

178 :デフォルトの名無しさん:2006/06/03(土) 15:38:12
[1] 授業単元: 数値計算法 
[2] 問題文(含コード&リンク): @f (x) = cos (x) - x2 = 0 の根のうち、0 < x < 1 を満たすものを2分法で求める 
初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力するようにしなさい。 
[3] 環境 
 [3.1] OS: WindowsXP 
 [3.2] コンパイラ名とバージョン: VC 6.0 
 [3.3] 言語: C 
[4] 期限: (2006年06月08日まで 

よろしくお願いします 


179 :デフォルトの名無しさん:2006/06/03(土) 15:52:42
#include <stdio.h>
#include <math.h>
#define EPS .0000001//相対誤差
double func_y(double x){ return (cos(x) - x * x); }
double nibun(double a, double b){
int i = 0;double x;//xをnextと読みかえて
do{
x = (a + b) / 2.0;
if((func_y(x) * func_y(a)) < 0)b = x;
else a = x;
printf("%d回 x = %6.6f f(x) = %6.6f\n", i, x, func_y(x));
i++;
}while(fabs(a - b) > EPS);
return (x);
}
int main(void){
double a, b, x;//a,bをx0,x1と読みかえて
printf("範囲の左の値を入力してください.\n");
scanf("%lg", &a);
printf("範囲の右の値を入力してください.\n");
scanf("%lg", &b);
printf("f(x) = cos(x) - x * x = 0の二分法による数値計算\n");
printf("初期値a = %6.6f\n", a);
printf("初期値b = %6.6f\n", b);
x = nibun(a, b);
printf("近似解x=%6.6f\n", x);
return 0;
}
二分法ってよく宿題ででるんだな…

180 :デフォルトの名無しさん:2006/06/03(土) 19:22:34 ?#
>>178
http://pc8.2ch.net/test/read.cgi/tech/1147908265/914

181 :デフォルトの名無しさん:2006/06/05(月) 01:33:46
[1] 授業単元:プログラミング応用
[2] 問題:あらかじめ作成してあるテキストファイル(member.txt)を読み込み、No項目順に昇順にソートして表示させよ。
  テキストファイルの例:1111 山田太郎 東京都杉並区〜〜〜
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名: VC6.0
 [3.3] 言語: C言語
[4] 期限: ([2006年6月6日17:00まで]
[5] その他の制限:Noは4文字以内、名前は5文字以内とする。
            コマンドライン関数を使い、他の任意のテキストファイルも読み込めるようにすること。

182 :デフォルトの名無しさん:2006/06/05(月) 10:34:05
>>181
それ、どこの学校の宿題?

183 :デフォルトの名無しさん:2006/06/05(月) 10:52:08
そういう学校って先生が生徒が作ったプログラム全部目を通すの
それとも動かしてみて正常動作するかどうかだけで採点するの

184 :デフォルトの名無しさん:2006/06/05(月) 11:03:01
俺が通っていた大学じゃ、UNIXを使っていて、授業ごとに作られた
レポートシステムってのがあって、そこに与えられたアカウントからメールで送信。
チェックは大学院生から雇っているバイトがやっていたなぁ。

185 :デフォルトの名無しさん:2006/06/05(月) 12:59:48
>>181
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct _Mem{
int _no;
char _name[11];
char _adr[100];
};
int mycomp(const void *a, const void *b){
const struct _Mem aa = *((struct _Mem*)a);
const struct _Mem bb = *((struct _Mem*)b);
return (aa._no > bb._no ? 1 : -1);
}
int main(int argv, int argc[]){
int no, i = 0;char name[11], adr[100];
FILE *fp = fopen("member.txt", "r");
struct _Mem mem[100];
if(fp == NULL)return 1;
while(fgets(adr, sizeof(adr), fp) != NULL){
sscanf(adr, "%d%s%s", &no, name, adr);
mem[i]._no = no;
strcpy(mem[i]._name, name);
strcpy(mem[i]._adr, adr);
i++;
}
qsort(mem, i, sizeof(struct _Mem), mycomp);
for(int j = 0; j < i; j++)printf("%04d %s %s\n", mem[j]._no, mem[j]._name, mem[j]._adr);
fclose(fp);
return 0;
}
コマンドラインは自分でどうぞ

186 :デフォルトの名無しさん:2006/06/05(月) 13:22:07
動かしてチェックするのはいいがとんでもない実行ファイル作られたら

187 :デフォルトの名無しさん:2006/06/05(月) 13:35:45
[1] 授業単元: Introduction to C/C++ Programming

3.Which of the following is the best definition or example of the "principle of least privilege?"

a. Always separate classes into .h definition files and .cpp implementation files.
b. Use global variables to avoid access problems.
c. Grant access to only those clients who have a legitimate need for access.
d. Whenever possible, prefer composition over inheritance.

4.A StatusLabel

a. inherits from class StatusStrip
b. is a control with a StatusStrip control.
c. is a type of flair.
d. none of the above

5.When the code in a try block does not throw an exception, which of the following is false?

a. all the catch handlers immediately following the try block are skipped
b. execution resumes with the first line of code after the catch handlers
c. a default exception is thrown
d. none of the function calls within the try block threw an exception

誰かお願いします。


188 :デフォルトの名無しさん:2006/06/05(月) 13:58:50
自分で鉛筆ころがせ

189 :デフォルトの名無しさん:2006/06/05(月) 14:21:27
学校でLinuxをつかってプログラムならっているんだが
これってwindowsのメモ帳で書いてフラシュメモリーにいれてemacs上にペーストとかできるのか?
なんかペーストしてもでてこないんだが・・。
ちなみに学校で習い始めて2ヶ月でつ。
なんか言い方がまちがってたりなにいってるかわからなかったらスマソ

190 :デフォルトの名無しさん:2006/06/05(月) 14:23:11 ?#
スレ違い

191 :デフォルトの名無しさん:2006/06/05(月) 14:26:58
>>190
そうか〜スマソ
宿題が家でもやれたらときいたんだけどすれ違いか・・。

192 :デフォルトの名無しさん:2006/06/05(月) 14:27:33
>>189
鼬害。
GUI(Gnome)の操作方法を知りたいのか、
emacsの操作方法を知りたいのか、
そもそもフラッシュメモリはマウントできているのか、
メモ帳で書くのはいいがファイル名はどうなっているのか、
さっぱり判らん。

193 :デフォルトの名無しさん:2006/06/05(月) 14:31:53 ?#
>>187
いい加減しつこいな。答えやるからもう来るな。
3.c. 4.文脈が不明なので答えようがない 5.b.

194 :デフォルトの名無しさん:2006/06/05(月) 14:35:41
[1] プログラミング入門

[2]バブルソートのプログラムを作成し、実行結果とともに提出せよ(配列を使う)

[3] 環境
 [3.1] windowsXP
 [3.2] Microsoft Visual C++ 6.0
 [3.3] C言語
[4] 期限: 2006年6月5日17:30までです。

[5] よろしくお願いします。。



195 :デフォルトの名無しさん:2006/06/05(月) 14:37:52 ?#
>>194
http://pc8.2ch.net/test/read.cgi/tech/1149350525/36

196 :デフォルトの名無しさん:2006/06/05(月) 15:21:58
x=y^2のグラフを−2<y<2でyを変化させ、
適当な座標軸上にプロットするプログラムを書け、
といった課題が出されました。
while文を用いて、値を出すプログラムまでは作れるのですが、
座標軸をつくり、そこへプロットする仕方がわかりません。

どなたかご教授お願いします。

197 :デフォルトの名無しさん:2006/06/05(月) 15:25:05
>>196
つテンプレ

198 :デフォルトの名無しさん:2006/06/05(月) 15:31:05
初期値と公差を標準入力から入力し、その等差級数の最初の要素の総和を
出力するプログラムをおねがいいたします。

199 :デフォルトの名無しさん:2006/06/05(月) 15:53:55 ?#
>>198
>最初の要素の総和

意味が分からん

200 :デフォルトの名無しさん:2006/06/05(月) 16:10:37
簡単ジャン

#include <stdio.h>
main(){
int a,b;
printf("初期値 : "); scanf("%d", &a);
printf("公差 : "); scanf("%d", &b);
printf("最初の要素の総和:%d\n", a);
}


201 : ◆QLo5PXiHuI :2006/06/05(月) 17:36:31
[1] 授業単元:プログラミング演習
[2] 問題文:各自で関数を適当に探し、数値積分を試みよ(円の面積など)。
[3] 環境 OS:Unix
言語:C
[4] 期限:2006年6月5日17:00まで


ひとまず、円の面積でやろうと思います。
よろしくお願いします

202 :デフォルトの名無しさん:2006/06/05(月) 17:43:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):0から5までを順に入力したとき、5か0の順で表示するプログラムを作れ。char a[]を使用。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:
char,(scanf),printfだけで作成」してください。

203 :デフォルトの名無しさん:2006/06/05(月) 17:44:43 ?#
>>201
http://pc8.2ch.net/test/read.cgi/tech/1147908265/972

204 :デフォルトの名無しさん:2006/06/05(月) 17:48:36
1] 授業単元: プログラミング
[2] 問題文:
x=y^2のグラフを−2<y<2で0.2きざみでyを変化させ、
適当な座標軸上に*をプロットするプログラムを書く
while文を用いて、プログラムを作成
[3] 環境
 [3.1] win2K
 [3.2] gcc3.4
 [3.3] どちらでも可
[4] 期限: 明日まで><
[5] その他の制限: 自分で結構やったのですがわかりませんでした><どなたかお願いします

205 :デフォルトの名無しさん:2006/06/05(月) 18:04:02
>>204
じゃあ、その結構やったソースを貼れよ

206 :デフォルトの名無しさん:2006/06/05(月) 18:05:46
プロットする形式は・・・まさかUNIXのコマンドプロンプトのところに
| や - で x y 軸を表示させるとか・・・?w

207 :デフォルトの名無しさん:2006/06/05(月) 18:06:27 ?#
>>204
#include<stdio.h>
#include<math.h>
int main(void){double x[20];int y;int n,a;
for(y=0;y<20;y++)x[y]=pow((y-10)/5.0,2);
n=20;while(--n>0){a=x[n]*10.0;while(--a>0)putchar(' ');putchar('*');putchar('\n');}
return 0;}

208 : ◆QLo5PXiHuI :2006/06/05(月) 18:09:14
>>203
前スレにあったとは…
すみませんありがとうございます

209 :デフォルトの名無しさん:2006/06/05(月) 18:14:03
>>202 #include <stdio.h>
int main(void){
char a[6];
char b[6];

printf("a=");
scanf("%s ,a");
b[0]=a[5];
b[1]=a[4];
b[2]=a[3];
b[3]=a[2];
b[4]=a[1];
b[5]=a[0];
printf("%s\n",b);

return 0;
}



210 :デフォルトの名無しさん:2006/06/05(月) 18:25:16
>>207
これはちょっと精度が低くね?
>>209
なんか違うっしょ・・・

211 :デフォルトの名無しさん:2006/06/05(月) 18:27:31
>>210 やばい。俺も分からなくなった。どこが違うん?

212 :デフォルトの名無しさん:2006/06/05(月) 18:27:44
なんか違うもへったくれも、まともなコードでさえない。

213 :デフォルトの名無しさん:2006/06/05(月) 18:35:03
#include <stdio.h>
int main(void){
int i;
char a[6];
char b[6];

for(i=0;i<6;i++) {
printf("a[%d] = ",i);
scanf("%s" ,&a[i]);
}
for(i=0;i<6;i++) {
b[i] = a[5-i];
}
printf("%s\n",b);

return 0;
}

んじゃこんな感じで?

214 :デフォルトの名無しさん:2006/06/05(月) 18:36:32
いや、bなんて使わずに、普通にaの最後から順に表示させりゃ良いだけか・・・

215 :デフォルトの名無しさん:2006/06/05(月) 18:38:51 ?#
>>210
xの倍率をコンソールに応じて変えればよかろ。つか、yが「0.2きざみ」と指定されてるのに
これ以上xの精度が必要とは思えない。

216 :デフォルトの名無しさん:2006/06/05(月) 18:54:24
whileで回すよりも、*つかって幅指定すればよくね?

217 :デフォルトの名無しさん:2006/06/05(月) 18:57:46
>>204
>while文を用いて

218 :デフォルトの名無しさん:2006/06/05(月) 19:00:30
import java.io.*;

class Sample10
{
public static void main(String args[]) throws IOException
{
System.out.println("5人のテストの点数を入力してください。");

BufferedReader br =


219 :デフォルトの名無しさん:2006/06/05(月) 19:01:45
>>218
失せろ

220 :デフォルトの名無しさん:2006/06/05(月) 19:03:22
>>218

miss

221 :デフォルトの名無しさん:2006/06/05(月) 19:32:37
>>202
#include <stdio.h>
int main(void){

char a[6];

printf("����");
scanf("%s" ,a;

printf("%c%c%c%c%c%c\n",a[5],a[4],a[3],a[2],a[1],a[0]);

return 0;

}

これだろ?


222 :デフォルトの名無しさん:2006/06/05(月) 19:39:17
>>221
閉じ括弧なくてコンパイルできねーし、修正しても妙なプログラムだし
ユーザインターフェース悪っ

223 :デフォルトの名無しさん:2006/06/05(月) 20:33:08
つーか、0から5まで入力できねぇだろうがよ。

224 :デフォルトの名無しさん:2006/06/05(月) 22:49:36 ?#
くだらない問題の方が盛り上がるんだな。

225 :デフォルトの名無しさん:2006/06/05(月) 23:01:19
そりゃ、何やってるか分かるからな

226 :デフォルトの名無しさん:2006/06/05(月) 23:14:19 ?#
確かに、ネタ回答でもない限り他人のコードなんか読む気にならんな。

227 :& ◆yZhi4TN6HY :2006/06/06(火) 01:17:30
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
長さ127以下の英数字、空白の並びからなる文字列を2つ入力し、それぞれT1,T2とする。
T1が"ABC",T2が"AB"の場合のように、T2の先頭部分がT1の先頭部分に含まれるときは1を、そうでないときは0を値として返す関数
int chkmatch(char *t1,char*t2)を作成しなさい。配列宣言以外はポインタを用いる。文字列の長さのエラー処理は必要ない。

計算の手順として、文字列の先頭から1文字ずつ一致するかどうか比べる。
T2にあたる文字列中の比較対象となった文字が’\0'であればT2はT1に包含されたものとして扱う。
これ以外で比較時に1文字でも一致しない場合があれば包含されていないとして扱う。

この関数を用いて2つの文字列を与えたとき、1つ目の文字列の中に2つ目の文字列が含まれている場合には
"yes"をさもなければ"no"を出力するプログラムを作りなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 今日の午前4時まで

文章長いですが、よろしくお願いします。

228 :デフォルトの名無しさん:2006/06/06(火) 01:53:54
>>227
#include <stdio.h>
int chkmatch(char* t1,char* t2) ;
int main(void) {
char t1[128],t2[128] ;
printf("一つめの文字列を入力してください:") ;
fgets(t1,sizeof(t1),stdin) ;
printf("ふたつめの文字列を入力してください:") ;
fgets(t2,sizeof(t2),stdin) ;
if(chkmatch(t1,t2)) {
printf("yes\n") ;
} else {
printf("no\n") ;
}
return(0) ;
}
int chkmatch(char* t1,char* t2) {
while(*t1 == *t2) {
t1++ ;
t2++ ;
}
if(*t2 == '\n' || *t2 == '\0') return(1) ;
return(0) ;
}

229 :デフォルトの名無しさん:2006/06/06(火) 02:03:50
>>227
>[4] 期限: 今日の午前4時まで
すげえ。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int chkmatch(char* t1, char* t2) {
return strstr(t1, t2)==t1;
}
int main() {
char T1[128];
char T2[128];
int i;
gets(T1);
gets(T2);
for(i = 0 ; ; i++) {
if(chkmatch(T1+i, T2)) {printf("yes\n"); break;}
if(T1[i]=='\0') {printf("no\n"); break;}
}
return 0;
}

230 :227:2006/06/06(火) 02:10:06
>>228
>>229

ありがとうございます!

231 :デフォルトの名無しさん:2006/06/06(火) 02:15:28
[1] 授業単元:C言語 
[2] 問題文(含コード&リンク):「アッー」の音声を合成音で作れ
[3] 環境 
 [3.1] OS:UNIX 
 [3.2] コンパイラ名とバージョン:gcc 
 [3.3] 言語:C言語 
[4] 期限:2006年6月10日 
[5] その他の制限:


232 :227:2006/06/06(火) 02:22:22
すみません、もう1つ続きをお願いします。

[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
長さ31以下の英数字、空白の並びからなる文字列を2つ入力し、それぞれT1,T2とする。
T1の中にT2が出現する場合に、その一番左に表れる文字列の先頭アドレスを値として返す
関数char*findstr(char*t1,char*t2);を作成しなさい。ただしT1の中にT2が現れない時はNULLを
値として返すものとする。

findstr()の中で比較対象となるT1のなかの先頭文字を先頭から1文字ずつずらして先程用いた
chkmatch()を呼び出すことにより要求を満たす関数を作成することができる。

この関数を用いて1)最初にT1を表示し、2)その次にT1の中でT2の文字列が最初に出現する
までの文字がアンダースコア('_')として端末に出力し、そのあと残りの文字列を出力する
プログラムを作りなさい。3)T2がT1に出現しない場合はT1の文字数だけのアンダースコアが
表示されるようにすること。

配列宣言以外はポインタを用い、文字列の長さのエラー処理は必要ない

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 今日午前4時


233 :デフォルトの名無しさん:2006/06/06(火) 02:43:20
>>232
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int chkmatch(char* t1, char* t2) {
return strstr(t1, t2)==t1;
}
char* findstr(char*t1,char*t2) {
int i;
for(i = 0 ; t1[i]!='\0' ; i++)
if(chkmatch(t1+i, t2)) return t1+i;
return NULL;
}
int main() {
char T1[128];
char T2[128];
int i;
char *p;
gets(T1);
gets(T2);
puts(T1);
p = findstr(T1, T2);
i = p==NULL ? strlen(T1) : p-T1;
for( ; 0 < i ; i--) putc('_', stdout);
if(p!=NULL) puts(T2);
else printf("\n");
return 0;
}

234 :227:2006/06/06(火) 02:46:54
>>233
ありがとうございます!!本当に助かりました。

235 :>>227:2006/06/06(火) 02:51:00
#define MAX_SIZE 128
int chkmatch(char* t1,char* t2);
void ScanStr(char * data,int max_size)
{
int i; char c;
for(i = 0; i < max_size ; i++){
scanf("%c", &c);
if ( c == '\n'){ data[i] = '\0'; break;}
else data[i] = c;
}
}
int main(){
char T1[MAX_SIZE], T2[MAX_SIZE];
printf("Input 1st string:"); ScanStr(T1,MAX_SIZE);
printf("Input 2nd string:"); ScanStr(T2,MAX_SIZE);
if(chkmatch(T1,T2)==1) printf("Yes\n");
else printf("No\n");
return 0;
}
int chkmatch(char* t1,char* t2)
{
int i=0,ret=0;
while(1){
if(t2[i] == '\0' ){ret = 1; break;}
}else{
if(t1[i] == t2[i]) i++;else break;
}
}
return ret;
}

236 :デフォルトの名無しさん:2006/06/06(火) 03:01:49
>>228の場合 集合の「包含」の定義に
完全一致を含んでいない方式だな。(完全一致でnoが返るので)


237 :デフォルトの名無しさん:2006/06/06(火) 03:19:13
[1] 授業単元:計算機プログラミング
[2] 問題文(含コード&リンク):
A, B, N : 整数の定数 (N >= 0) とするとき、
\sum_{i=0}^{N} A^{N-i}*B^i
を効率よく計算するプログラムを書きなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 今日の正午まで
[5] その他の制限:
関数 pow(a, b) などは使ってはいけない。
計算量は、線形時間より小さいものが望ましい。

よろしくお願いします。

238 :227:2006/06/06(火) 03:26:12
>>235
ありがとうございます!
みなさんのプログラミングを見てちゃんと理解できるよう、今からがんばります。

239 :デフォルトの名無しさん:2006/06/06(火) 04:03:31
>>237
(N=5)
i=0 A*A*A*A*A * 1
i=1 A*A*A*A  * B
i=2 A*A*A   * B*B
i=3 A*A    * B*B*B
i=4 A     * B*B*B*B
i=5 1     * B*B*B*B*B
山になってる累乗を計算する時に前の値を配列に保持して
乗算回数を減らすぐらいしか思いつかん。
数列の式変形があるんだろうけど。

240 :デフォルトの名無しさん:2006/06/06(火) 04:20:03
>>237
(A^(N+1)-B^(N+1))/(A-B)か?

241 :227:2006/06/06(火) 04:42:19
少し前に書き込んだのですが、こちらの問題文ではどう書けばいいのでしょうか?
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
長さ256文字以下の英数字,空白の並びからなる文字列を二つ入力し,それぞれをT1, T2とする. T1の中にT2が出現する場合に,その一番左に現れる文字列の先頭アドレス
を値として返す関数 char *findstr(char *t1, char *t2);を作成しなさい.ただし,T1の中にT2が出現しないときはNULLを値として返すものとする.

findstr()の中で,比較対象となるT1のなかの先頭文字を先頭から一文字ずつずらして前問のchkmatch()を呼び出すことにより要求を満たす関数を作成することができる.

この関数を用いて, 1)最初にT1を表示し,2)その次にT1の中でT2の文字列が出現するまでの文字をスペース(' ')として端末に出力し,そのあとT2の文字列文だけ(’^’)を出力し、
再度T2の文字列が出現するまでスペース(’ ’)を出力し..というプロセスを文末まで続けるプログラムを作成しなさい。3a)このプロセスは、findstrを実行して文字列の先頭を検索し、
そこまでスペースを出力する。3b)文字列の先頭が検出されたら、T2の文字列分だけ(’^’)を出力する。3c)T2の文字列分だけポインタを進め、そこからfindstrを再実行する(3aにもどる)
というプロセスを繰り返すことで完成する。4)T2がT1に出現しない場合はT1の文字数だけのスペースが表示されるようにすること.
配列宣言を除き,すべてポインタを用いて処理すること.文字列は31文字以下が入力されるものとし,文字列の長さに関するエラー処理をする必要はない.
特に、検索文字列が重複している場合も正確に検出できるようにせよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 今日の午前6時過ぎ

すみません、お願いします。


242 :デフォルトの名無しさん:2006/06/06(火) 05:43:20
っつか、もうすぐ午前6時だなーーーwktk

243 :デフォルトの名無しさん:2006/06/06(火) 06:12:01
ちうか、今日が提出期限かなーーー?せめて一日でも余裕を持たせれば良かったものを

244 :227:2006/06/06(火) 06:26:37
>>243
そうですね。。。学校行くぎりぎりまで待ってみますが

245 :デフォルトの名無しさん:2006/06/06(火) 06:37:16
このスレを横着で使うのも、ねぇ・・・答えを導く手段は何種類、何通りもあったりする。
自分でそれを一つでも理解できなかった時点で、評価されるべきじゃないしね。
しかも、これが出来ないってことはその先の内容も危ういわけだ。
自力でやって出来ないなら、授業についていけないって結論にも至る。

246 :237:2006/06/06(火) 06:57:32
>239
ありがとうございます。
友人は、全体を4等分すれば、
点対称な位置同士では同じ計算になると言っていましたが、意味が分かりませんでした。
日本語変ですいません。

>240
ありがとうございます。
なるほど!
そうやって式変形すれば、あとは A^{N+1} と B^{N+1} の計算だけなので、
それぞれ O(logN) でできるというワケですね。

247 :デフォルトの名無しさん:2006/06/06(火) 07:19:37
>>241
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1984.c
多少の無駄があるけど。

248 :デフォルトの名無しさん:2006/06/06(火) 07:24:38
>>247
ををっ、なんかキターーーー!

249 :241:2006/06/06(火) 07:27:37
>>247
ありがとうございます!!本当にうれしいです

250 :204:2006/06/06(火) 08:57:57
>>206
そうなんですよ・・・・><
>>207
printfを使って縦軸に「|」横軸は「-」と「+」をつかってもう一度グラフを作ってもらえますか?

251 :デフォルトの名無しさん:2006/06/06(火) 09:57:51 ?#
>>250
甘ったれるなクズ。

252 :デフォルトの名無しさん:2006/06/06(火) 10:03:22
いちいち罵倒するなよ。うざい。

253 :デフォルトの名無しさん:2006/06/06(火) 10:15:23
っつか、マジでコマンドプロンプト画面にプロットするの?
せめてグラフを描画するウィンドウに別にってわけにはいかんのかね・・・

254 :デフォルトの名無しさん:2006/06/06(火) 11:02:55
>>253
学生の課題ならコンソールに記号でグラフ描画とかありがちだと思うけど。


255 :デフォルトの名無しさん:2006/06/06(火) 11:12:31
よくあるやつ。

10 *************
20 ****
30 ***********
40 ***************
50 **


256 :デフォルトの名無しさん:2006/06/06(火) 11:23:35
マジかよ・・・俺が習ってたのは98年のことだが、UNIXを使ってでも
図形描画にゃ別窓開いてたぞ・・・

257 :デフォルトの名無しさん:2006/06/06(火) 11:45:58 ?#
>>252
嫌なら来るなよ。

258 :デフォルトの名無しさん:2006/06/06(火) 11:57:50
1]プログラム第一演習(C言語クラス)
2]配列A[x] B[X} 及び配列の大きさXを渡す。
すると配列の要素を入れ換えるプログラムを作成せよ。
尚、ポインタを用いる事。
要素の入れ換えとは、例えば
A[5]={1,2,3,4,5} B[5]={1001,1002,1003,1004,1005}
といった配列が与えられているとき、
A[5]={1001,1002,1003,1004,1005}
B[5]={1,2,3,4,5}
といった結果になるものである。
3]OS:Linux コンパイラ:gcc3.4 言語:C
4]期限:明日

259 :デフォルトの名無しさん:2006/06/06(火) 14:49:54
>>258
#include<stdio.h>
void exchangeA(int *a, int *b, int n){
for(int i = 0;i < n; i++, a++, b++){
int t = *b;
*b = *a;
*a = t;
}
}
int main(){
int a[] = {1, 2, 3, 4, 5}, b[] = {1001, 1002, 1003, 1004, 1005};
int n = sizeof(a) / sizeof(a[0]);
exchangeA(a, b, n);
return 0;
}

260 :デフォルトの名無しさん:2006/06/06(火) 14:52:21 ?#
>>258
void swaparray(int** a, int** b, int x){int* t=*b;*b=*a;*a=t;}
int main(void){int i,A[5]={1,2,3,4,5},B[5]={1001,1002,1003,1004,1005};
for(i=0;i<5;i++)printf("A[%i]=%i,B[%i]=%i\n",i,A[i],i,B[i]);swaparray(&A,&B,5);
for(i=0;i<5;i++)printf("A[%i]=%i,B[%i]=%i\n",i,A[i],i,B[i]);return 0;}

261 :デフォルトの名無しさん:2006/06/06(火) 15:11:52
>260
A,Bはポインタじゃ無いからメモリに存在しないと思うぞ。
int data1[5]={1,2,3,4,5},data2[5]={1001,1002,1003,1004,1005},*A=data1,*B=data2;

262 :デフォルトの名無しさん:2006/06/06(火) 15:52:46 ?#
>>261
>A,Bはポインタじゃ無いからメモリに存在しないと思うぞ。

意味が分からん。が、>>260のままだと確かに配列の先頭の要素が入れ替わるだけだな。

263 :デフォルトの名無しさん:2006/06/06(火) 16:01:13
>が、>>260のままだと確かに配列の先頭の要素が入れ替わるだけだな。
intとint *のサイズが同じ場合は、な。

264 :不明瞭なところがあれば聞いてください:2006/06/06(火) 16:21:48
[1] 授業単元: ゼミ
[2] 問題文(含コード&リンク): 入力した数値を昇順・降順に並び替えて出力する。詳しくは下記へ
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Borland c++
 [3.3] 言語: C++
[4] 期限:2・3日後
[5] その他の制限:
いくつかの(5個程度)入力した数値を、昇順or降順でどちらかに選べてソートする(選択可、1で昇順2で降順みたいに)
入出力はcin,coutを使う(c++だから),for else,switch caseなど初歩しかやっていない。
選択法をサブルーチンを使う。
学校では↓をやったので、これに沿ってお願いします。(↓はCなのでC++に変換もお願いします)
http://uploaderlink.hp.infoseek.co.jp/cgi-bin/512kb/src/up10373.jpg

265 :デフォルトの名無しさん:2006/06/06(火) 16:33:54
ソートの手法(アルゴリズム)は、初歩的なバブルソートでもええんかね?

266 :不明瞭なところがあれば聞いてください:2006/06/06(火) 16:45:36
>>265 ええと、バブルソート(交換法)ではなく選択法でよろしくお願いします!!

267 :デフォルトの名無しさん:2006/06/06(火) 16:54:49 ?#
>>264
#include <iostream>
using namespace std;
void selection_sort(int* a, int len){
if (len) {int tmp,min_pos=-1;for(int i=0;i<len;i++)if(min_pos<0||a[i]<a[min_pos])min_pos=i;
if (min_pos > 0){tmp=a[0];a[0]=a[min_pos];a[min_pos]=tmp;}}selection_sort(&a[1],len-1);}}
int main(void){int i,n;cout << "要素数:";cin>>n;int* a = new int[n];
for(i=0;i<n;i++){cout << "要素" << i << ":";cin >> a[i];}selection_sort(a,n);
for(i=0;i<n;i++){cout << a[i] << endl;}delete[] a;return 0;}

268 :デフォルトの名無しさん:2006/06/06(火) 17:02:29
よろしくお願いします。
[1] 授業単元: Cプログラミング応用
[2] 問題文(含コード&リンク):
forkを用いて並行処理できるechoサーバを作成する
・親プロセスと子プロセスでの役割分担をちゃんと考えること
・役目が終わった子プロセスはちゃんと殺してあるか?
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc 3.4 VC 6.0等
 [3.3] 言語:C
[4] 期限:7日23:59まで
[5] その他の制限:selectを用いたechoサーバはこのように書かされました。
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1986.txt

269 :デフォルトの名無しさん:2006/06/06(火) 17:08:57
>262
ちょっとわかりにくいかも知れんが。
配列でint A[5]={1,2,3,4,5}とした時、メモリに配置されるのは{1,2,3,4,5}で、Aは配列の先頭を指すシンボルになる。
メモリ上にAの値を保存しておく領域は作られ無い。
だから実行時にAの値を変更する事はできない。
ポインタでint *Aとした時、メモリ上にAの値を保存しておく領域が作られる。
だから実行時にAの値を変更する事ができる。

270 :デフォルトの名無しさん:2006/06/06(火) 17:19:40 ?#
>>269
>ちょっとわかりにくいかも知れんが。

わかりにくいのはお前の日本語な。

271 :不明瞭なところがあれば聞いてください:2006/06/06(火) 17:33:53
<<267 ありがとうございます。デバックするとエラーが出ました。
[2] 問題文(含コード&リンク): 入力した数値を昇順・降順に並び替えて出力する。詳しくは下記へ
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Borland c++
 [3.3] 言語: C++
[4] 期限:2・3日後
[5] その他の制限: 入出力はcin,coutを使う
@cinで5個の数値入力A昇順か降順かを入力(switch caseで1は昇順2は降順みたいに)
A選択法でサブルーチン使い、下記のURLを参考
http://uploaderlink.hp.infoseek.co.jp/cgi-bin/512kb/src/up10373.jpg (←はCなのでC++に変換もお願いします)
上記のようなサブルーチンを学びました。for else,switch caseなど初歩しかやっていない。
選択法をサブルーチンを使う
B昇順or降順した数値をcoutで出力
最後に初歩のプログラムでお願いします


272 :デフォルトの名無しさん:2006/06/06(火) 17:42:29
>270
具体的にどの辺りがどうわかりにくかった?
わかりにくかっただけで内容は理解したのか?それとも何言ってるか全然わからなかった?

273 :デフォルトの名無しさん:2006/06/06(火) 17:42:54 ?#
>>271
帰れ。
if (min_pos>0){tmp=a[0];a[0]=a[min_pos];a[min_pos]=tmp;}selection_sort(&a[1],len-1);}}

274 :デフォルトの名無しさん:2006/06/06(火) 17:43:56 ?#
>>272
>内容は理解したのか

誰に向かって口きいてるんだ。

275 :271:2006/06/06(火) 17:52:21
>>273 どうもすみません。おそらくマルチなので怒っていらっしゃるのでしょうか?
こちらとしては怒らせるつもりはありませんでした。大変失礼しました。


276 :デフォルトの名無しさん:2006/06/06(火) 17:54:57
よろしくお願いします

[1] 情報実験2
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1987.txt
のプログラムの機能(結果画像)を変えずに高速化せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 来週の月曜日(6/12)午後1時まで
[5] 特になし


277 :デフォルトの名無しさん:2006/06/06(火) 17:57:09 ?#
>デバックするとエラーが出ました。
とだけ書いてエラーの内容も書かずに同じ問題文をコピペするのが嫌がらせでなくて何なんだ。

278 :デフォルトの名無しさん:2006/06/06(火) 17:59:34
>>274
誰何?

279 :271:2006/06/06(火) 18:32:42
>>277 申し訳ありません。VC++で"NG.obj - エラー 5、警告 0"と出ていましたが、どこがエラーなのかが分からないので
問題を見やすく(したつもりです)して、レスさせてもらいました。以降気をつけるように命じておきます。
すみませんでした

280 :デフォルトの名無しさん:2006/06/06(火) 19:14:33
[1] 情報工学実験
[2] 問題文(含コード&リンク):プログラムを自己参照構造体で書き換えよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1988.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 今週の木曜日(6/8)午後11:59時まで
[5] 特になし

よろしくお願いします。

281 :デフォルトの名無しさん:2006/06/06(火) 20:47:25
>>273
お前が帰れよ、ここはC++のスレだしC#じゃねっw
>>274
>誰に向かって口きいてるんだ。
なに偉そうにしてんの?専門学校程度の低学歴めがw

282 :デフォルトの名無しさん:2006/06/06(火) 20:58:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
一行からなる二つの文字列を入力し,それぞれを一旦char型の配列に記録する.
二つの文字列が等しければ"yes"をさもなければ"no"を表示するプログラムを作成しなさい.
このとき,二つの文字列に対応する2つの文字列(文字配列)の先頭番地を与えたとき,
二つの文字列が一致していれば1を,一致していなければ0を返す関数int mycmp(char *, char *);を定義し,これを有効に使うこと.
文字列は256文字以下が入力されるものとし,文字列の長さに関するエラー処理をする必要はない.
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 配列宣言を除き,すべてポインタを用いて処理すること


よろしくお願いします。

283 :デフォルトの名無しさん:2006/06/06(火) 21:14:50
>>282
#include <stdio.h>
int mycmp(char *s1, char *s2){
int i = 0, j = 0;
while(*(s1 + i) != NULL)i++;
while(*(s2 + j) != NULL)j++;
if(i != j)return 0;
while(*s1 != NULL){
if(*s1 != *s2)return 0;
s1++, s2++;
}
return 1;
}
int main(){
char tmp[256];
char s1[256], s2[256];
gets(tmp);
sscanf(tmp, "%s%s", s1, s2);
if(mycmp(s1, s2) == 1)puts("yes");
else puts("no");
return 0;
}
と作ってみたが、mycmp内でstrcmp呼べばいいんじゃないかとオモタ

284 :デフォルトの名無しさん:2006/06/06(火) 21:20:40
#include<stdio.h>
#include<math.h>
int main(void)
{
double a, b, c, D, x1, x2, x3, x4, A0;
printf("二次方程式 ax^2 + bx + c = 0 が与えられている。\n");
printf("a,b,cにそれぞれ数値を入力する。\n");
printf("a="); scanf("%f", &a);
printf("b="); scanf("%f", &b);
printf("c="); scanf("%f", &c);
printf("とすると、");
D = pow(b, 2) - 4 * a * c;
x1 = (-b + sqrt(pow(b, 2) -4 * a * c))/(2 * a);
x2 = (-b - sqrt(pow(b, 2) -4 * a * c))/(2 * a);
x3 = -b /(2 * a);
x4 = (sqrt(D))/(2 * a);
A0 = -c/b;
if (a == 0)
{printf("この場合、二次方程式は解 x=%f を持つ。\n", A0);}
else if (D > 0)
printf( "この場合は異なる2つの実数解 x=%f,%f を持つ。\n", x1, x2);
else if (D == 0)
printf( "この場合は重解 x=%f を持つ。\n", x1, x2);
else
printf( "この場合は異なる2つの虚数解 x=%f±%fiを持つ。\n", x3, x4);
return 0;
}

二次方程式ax^2+bx+c=0でa,b,cの値を入力して、解が
D<0,D=0,D>0のいずれに該当するのかを表示させ、その値も表示させるプログラムを作成したいのですが、
実行すると答えがx=0.000000±naniと出てしまいます。
どこがいけないのでしょうか???

285 :デフォルトの名無しさん:2006/06/06(火) 21:34:00
>>283
ありがとうございます。
出力を以下のようにしたくて、scanf関数内をいじってみたのですが、どうもうまくいきません。
どのようにすれば良いでしょうか?

./same
ABC
ABC
yes

./same
ABC
ABC
no

./same
ABC
abc
no

./same
ABC
ABD
no

./same
ABC
BC
no

286 :デフォルトの名無しさん:2006/06/06(火) 21:48:08
>>284
scanf("%f", &a); → scanf("%lf", &a);
scanf("%f", &b); → scanf("%lf", &b);
scanf("%f", &c); → scanf("%lf", &c);
x4 = (sqrt(D))/(2 * a); → x4 = (sqrt(-D))/(2 * a);

287 :デフォルトの名無しさん:2006/06/06(火) 22:10:03
>>286
で、できましたっ!
ありがとうございます☆

あと%lfと%fは何が違うのでしょうか?

288 :デフォルトの名無しさん:2006/06/06(火) 22:16:13
>>287
scanfにおいては%fがfloatで、%lfがdouble。

printfでは、%fがdouble用だが、floatにもdoubleにも使える。
なぜならprintfを呼ぶ時点でfloatの引数はdoubleに格上げされるので、
printfの中の人にはfloatとdoubleの区別が付けられないから。

289 :デフォルトの名無しさん:2006/06/06(火) 22:24:51
そうなんですか。
ありがとうございますっ!!

290 :271:2006/06/06(火) 22:36:19
どなたか>>271をもう一度お願いできないでしょうか?
using namespace std;void selection_sort、tmp=a[0];a[0]=a[min_pos];a[min_pos]=tmp;}}selection_sort(&a[1],len-1
など、習っていないみたいで私には解りません。よろしくお願いします。

291 :デフォルトの名無しさん:2006/06/06(火) 23:58:29 ?#
>>290
ここはお前に何かを理解させるスレではない。
理解するのが目的ならこんなスレに来るな。

292 :デフォルトの名無しさん:2006/06/07(水) 00:00:42 ?#
>>281
>お前が帰れよ、ここはC++のスレだしC#じゃねっw

どっからC#が出てきたんだ?

>なに偉そうにしてんの?専門学校程度の低学歴めがw

あらあら…モノを知らないってのは幸せだねえ。

293 :デフォルトの名無しさん:2006/06/07(水) 00:58:54
ttp://www.gifu-nct.ac.jp/elec/deguchi/sotsuron/morita/node41.html

このページのCプログラムをC++に書き換えたいです。
コンパイラはVC++を使ってます。

よろしければ、どなたかお願いします。

294 :デフォルトの名無しさん:2006/06/07(水) 07:35:47
>>292
ぷぷっ、低学歴が釣れたw
レスした時点でお前が必死こいているのが分かるw
#ってのはあんたがいちいち書き込みのタイムスタンプの後ろにつけているから
ここは#のスレじゃねっ!って突っ込んでやったわけだよ。

それから、お前の指摘はコンパイルエラー程度。
何も分かっちゃいない、他人のソース丸写し or 真似ごと
程度しか出来ないお前が偉そうにしているのがうざいだけ。
分かったらとっとと失せろ。ソフトウェア開発でも習ってから出直せ。

295 :デフォルトの名無しさん:2006/06/07(水) 07:56:31
ttp://be.2ch.net/test/p.php?i=23292443&u=d:http://pc8.2ch.net/test/read.cgi/tech/1147902222/292
>俺の子を産んでくれる繁殖可能な女性を広く募集中。
ワラタ

296 :デフォルトの名無しさん:2006/06/07(水) 07:58:07
ttp://be.2ch.net/test/p.php?i=23292443
うぉっと、ここまでかw

297 :デフォルトの名無しさん:2006/06/07(水) 08:00:07
って、うまくいかんのねw
まぁ良いや、>>291のアレをクリックしてくれりゃ。
他で「性帝トーマス◇13ThomasYo」を探してきまつw

298 :デフォルトの名無しさん:2006/06/07(水) 09:11:36
>>267の昇順、降順が選択できるソースマダー?(チンチン)

299 :デフォルトの名無しさん:2006/06/07(水) 09:14:15 ?#
>>294
>#ってのはあんたがいちいち書き込みのタイムスタンプの後ろにつけているから

半年ROMっててよ。

300 :デフォルトの名無しさん:2006/06/07(水) 09:17:29
>>299
やだよ、そんな分かりきったことw 良いからコテハン+トリップつけてろよw
検索エンジンで探したら、恥ずかしいレスがいっぱい出てきたぞw

301 :デフォルトの名無しさん:2006/06/07(水) 09:22:19
性帝トーマス◆13ThomasYoさま、性帝トーマス◆13ThomasYoさま
ブ○だけどお金持ちの女性が嫁ぎたいと申し出ております
どうなされますか?

302 :デフォルトの名無しさん:2006/06/07(水) 09:30:10
[1] 授業単元:  プログラミング
[2]
正の整数を読み込み、その整数が素数であるか調べるプログラムを作成
[3] 環境
 [3.1] OS:xp
 [3.2] gcc 3.4
 [3.3] 言語:どちらでも可
[4] 期限:明日の15時まで
よろしくお願いいたします

303 :デフォルトの名無しさん:2006/06/07(水) 09:42:20
>>302
っつか、それありきたりのアルゴリズムだから。エラトステネスのふるいを使って
入力した数値が素数か判別すりゃええがな。これくらい自力で出来ないとまずいぜ。

304 :デフォルトの名無しさん:2006/06/07(水) 10:12:47
>どなたか>>271をもう一度お願いできないでしょうか?
↓なるべく習ってないだろうというのを除いたつもり。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1995.cpp
せっかく作ってくれた人がいるんだから、あんまりこういうの無しにしてやれよ。

305 :デフォルトの名無しさん:2006/06/07(水) 10:29:10 ?#
>>302
http://pc8.2ch.net/test/read.cgi/tech/1149349035/52

306 :デフォルトの名無しさん:2006/06/07(水) 10:31:33
ちうか、まだ初心者っぽいし、switch case は良いとして
ポインタ使ったり if 文の条件の中に or とか関数の返り値(0か1)で
真偽を判別するのはまだ早いんじゃね?本人が理解できるかどうか・・・

307 :デフォルトの名無しさん:2006/06/07(水) 10:32:37
>>305
ものすごい嫌がらせな気がしてならない・・・計算機の利便性を無視してんなw

308 :デフォルトの名無しさん:2006/06/07(水) 10:37:12
>>300
何が悔しくてトーマスに噛みついてるのか知らないが、いいかげん痛々しい。
マジで半年ROMった方がいい。

309 :デフォルトの名無しさん:2006/06/07(水) 10:40:54
>>308
悔しいとかじゃなくて目立ちたがりやで名無しを罵倒する厨房がうざいだけ
ろくに知識も能力もないのに、目だっただけで他人より優勢だと勘違いしてんだよw
そういう奴は井の中の蛙、大海に出れば波に飲まれていちころよw

310 :デフォルトの名無しさん:2006/06/07(水) 10:41:02 ?#
>>306
本人の理解なんかどうでもいいというのがこのスレの趣旨です。
理解したいと思ってる人は丸投げなんかしませんので。

>>307
いやいや、「大量のメモリ」というのも利便性の一つなわけで。

311 :デフォルトの名無しさん:2006/06/07(水) 10:41:59
>>305を見れば一目瞭然だろ。ただ罵倒や茶化しにくるだけのこいつは以後放置な。
タイムスタンプの後ろをよーーく見るように、注意すべし。

312 :デフォルトの名無しさん:2006/06/07(水) 10:44:34
>>309
いやもう恥ずかしいから…
それ以上恥かかないうちに黙った方が…

313 :デフォルトの名無しさん:2006/06/07(水) 10:44:41
>>310
>大量のメモリ
はい、バーーーーカ。効率の良いアルゴリズムが重要なのに
計算処理能力が高くなった汎用電子計算機の特性をうまく利用できない奴は失せろ。
お前みたいなバカは、路上で前が詰まっているのに、信号機が赤なのに
無駄に加速して、無駄にブレーキで速度を殺してエネルギーを無駄にするタイプだろw
スマートな考えが出来ない奴は助言なんてするな、うざいだけ。
所詮、その程度のやり方しか出来ないなんて、専門学校程度だろ?

>>310
>本人の理解なんかどうでもいい
とか言って、コンパイルエラーしか指摘しないうざさ。まぁ、お前が書いたソースなんだが
自分でも要求している問題文が理解出来てないみたいじゃんw
理解させる前にお前が理解してないんだよタコ

314 :デフォルトの名無しさん:2006/06/07(水) 10:46:41
>305を見れば一目瞭然だろ
ノートン先生が反応して見れない。

315 :デフォルトの名無しさん:2006/06/07(水) 10:49:39 ?#
>>313
おいおい。>>305に貼ったのは充分効率的なアルゴリズムだよ。
素数テーブルの最大値をよく見てみな。

>とか言って、コンパイルエラーしか指摘しないうざさ。

わざわざコンパイルエラーなんか指摘しねえよ。そんなのはコンパイラの仕事。
人間様の仕事じゃない。

316 :デフォルトの名無しさん:2006/06/07(水) 10:58:52
他人の解答に噛みつくな。他人の質問に噛みつくな。
>気に入らない質問やその他や発言はスルーの方向で。
頼むよ。

317 :デフォルトの名無しさん:2006/06/07(水) 11:13:58
>>313
あいたたたたたた…
言わんこっちゃない。

318 :デフォルトの名無しさん :2006/06/07(水) 11:26:03
煽られていらいらしてむかついて、噛みつくのはわかる。
大人でも子供でも関係ない。馬鹿にされたり卑下されりゃむかつく。
ただ、それを我慢しよう。
スルーしたくても、むかついてレスを返したいのはわかる。
でもスルーしよう。

319 :デフォルトの名無しさん:2006/06/07(水) 11:32:13
[1] 授業単元:アルゴリズム論
[2] 問題文: 1方向線状リストを使って、スタックを実現せよ。 ただし、各記憶要素xは整数値をとるものとする。
関数として、push(x)、pop()、empty()、ならびに現在のスタック内容を表示するためのshow()を用意する。

ヒント:1方向線状リストの先頭(左端)がスタックのトップを表すようにすると、リスト末尾へのポインタが不要になる。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:今日
[5] その他の制限:無し

以前のスレで質問させていただきましたが、
エラーが大量に出てしまい、それから色々と試しましたがどうすればいいのかわかりませんでした。

320 :デフォルトの名無しさん:2006/06/07(水) 11:34:51 ?#
>>319
http://pc8.2ch.net/test/read.cgi/tech/1149350525/17

321 :デフォルトの名無しさん:2006/06/07(水) 11:37:27 ?#
>>319
む。コンパイルエラーか。
struct stack{int x; struct stack* next;};
struct stack* STACK=NULL;
void push(int x){struct stack* sp=STACK;while(!sp)sp=sp->next;
sp=(struct stack*)malloc(sizeof(struct stack));sp->x=x;sp->next=NULL;}
int pop(){int ret;struct stack* sp=STACK;struct stack* prev=NULL;
while(sp){prev=sp;sp=sp->next;}if(sp){ret=sp->x;prev->next=NULL;free(sp);return ret;}
return 0;}
void empty(){struct stack* sp=STACK;struct stack* next=NULL;
while(sp){next=sp->next;free(sp);sp=next;}}
void show(){struct stack* sp=STACK;while(sp){printf("%i\n",sp->x);sp=sp->next;}}

322 :デフォルトの名無しさん:2006/06/07(水) 11:42:16
そこまでは修正できたんですがそこから完成までがわからないんです・・。すいません。

323 :デフォルトの名無しさん:2006/06/07(水) 11:48:55 ?#
>>322
問題文にはこれ以上のことをしろとは書いてないように見えるが。

324 :デフォルトの名無しさん:2006/06/07(水) 11:52:36
すいません。
適当な数列をスタックに入れてそれが処理される過程と処理後の結果も出力しないといけないんです。

325 :デフォルトの名無しさん:2006/06/07(水) 11:56:01 ?#
>>324
だったらそうすりゃいいじゃねえか。
int main(void){empty();show();
push(1);show();push(2);show();push(3);show();
pop();show();pop();show();pop();show();
return 0;}

326 :デフォルトの名無しさん:2006/06/07(水) 12:02:15
信州大生無様だぞ

327 :デフォルトの名無しさん:2006/06/07(水) 12:12:05 ?#
>>324
pushが甘かったか。
void push(int x){struct stack* sp=STACK;struct stack* prev=NULL;
while(sp){prev=sp;sp=sp->next;}sp=(struct stack*)malloc(sizeof(struct stack));
sp->x=x;sp->next=NULL;if(!STACK)STACK=sp;if(prev)prev->next=sp;}

328 :271:2006/06/07(水) 12:13:09
わたしは>>298ではありませんが、どなたか>>271をよろしくお願いします。

329 :デフォルトの名無しさん:2006/06/07(水) 12:23:29
>>328 とりあえず >>304 で。それでもダメなら、後は自分で細かい仕様を変えたら?
結局その課題、指定した条件(サブルーチン)を使うことも含めているけど
重要なのは選択法による並び替えのアルゴリズムでしょ?
基本選択法そのものがわかっていないなら、まずはその概要から知るべきだよ。
そうすれば自ずとアルゴリズムも出来上がるでしょ。

330 :デフォルトの名無しさん:2006/06/07(水) 12:24:39
そんな時間はねぇんだよ!!!
ごちゃごちゃ言わずに俺に従え!!!

331 :デフォルトの名無しさん:2006/06/07(水) 12:30:00
ttp://search.yahoo.co.jp/search?p=%B4%F0%CB%DC%C1%AA%C2%F2%CB%A1&x=0&y=0&fr=top_v2&tid=top_v2&search.x=1
検索すりゃ出てくる。自分で取り込めないなら諦めるしかないね。
>>1を見れば、あまり親切なスレじゃないって割り切るしかないっしょw

332 :デフォルトの名無しさん:2006/06/07(水) 13:13:04 ?#
親切も何も、ここは宿題を丸投げするクズを隔離する厨房ホイホイだからなぁ。

333 :デフォルトの名無しさん:2006/06/07(水) 13:14:13
まあいいじゃん。それはそれで。

334 :デフォルトの名無しさん:2006/06/07(水) 13:14:49
さ、次の丸投げドンと来い。
おじさんが完璧に解いてやる。

335 :デフォルトの名無しさん:2006/06/07(水) 13:26:46
>>319>>324の完成版をお願いします。さっきからずっといじってるのにまだうまく処理できてません。

336 :デフォルトの名無しさん:2006/06/07(水) 13:27:49
ちょっと待ってろ

337 :デフォルトの名無しさん:2006/06/07(水) 13:30:54
>>271を先にお願いします。なんとしてもお願いします。

338 :デフォルトの名無しさん:2006/06/07(水) 13:32:34
>>302を先に頼む

339 :デフォルトの名無しさん:2006/06/07(水) 13:33:47
\               U         /
  \             U        /
             / ̄ ̄ ヽ,
            /        ',      /     _/\/\/\/|_
    \    ノ//, {0}  /¨`ヽ {0} ,ミヽ    /     \          /
     \ / く l   ヽ._.ノ   ', ゝ \       <   バーカ!  >
     / /⌒ リ   `ー'′   ' ⌒\ \    /          \
     (   ̄ ̄⌒          ⌒ ̄ _)    ̄|/\/\/\/ ̄
      ` ̄ ̄`ヽ           /´ ̄
           |            |  
  −−− ‐   ノ           |
          /            ノ        −−−−
         /           ∠_
  −−   |    f\      ノ     ̄`丶.
        |    |  ヽ__ノー─-- 、_   )    − _
.        |  |            /  /
         | |          ,'  /
    /  /  ノ           |   ,'    \
      /   /             |  /      \
   /_ノ /              ,ノ 〈           \
    (  〈              ヽ.__ \        \
     ヽ._>              \__)

340 :性帝トーマス:2006/06/07(水) 13:38:14
\               U         /
  \             U        /
             / ̄ ̄ ヽ,
            /        ',      /     _/\/\/\/|_
    \    ノ//, {0}  /¨`ヽ {0} ,ミヽ    /     \          /
     \ / く l   ヽ._.ノ   ', ゝ \       <   バーカ!  >
     / /⌒ リ   `ー'′   ' ⌒\ \    /          \
     (   ̄ ̄⌒          ⌒ ̄ _)    ̄|/\/\/\/ ̄
      ` ̄ ̄`ヽ           /´ ̄
           |            |  
  −−− ‐   ノ           |
          /            ノ        −−−−
         /           ∠_
  −−   |    f\      ノ     ̄`丶.
        |    |  ヽ__ノー─-- 、_   )    − _
.        |  |            /  /
         | |          ,'  /
    /  /  ノ           |   ,'    \
      /   /             |  /      \
   /_ノ /              ,ノ 〈           \
    (  〈              ヽ.__ \        \
     ヽ._>              \__)

341 :デフォルトの名無しさん:2006/06/07(水) 13:44:07
こらっ、スレ立てして下さっている>>1さんに失礼だぞ!

342 :デフォルトの名無しさん:2006/06/07(水) 13:50:51 ?#
>>335
#include<stdio.h>
struct stack{int x; struct stack* next;};
struct stack* STACK=NULL;
void push(int x){struct stack* sp=STACK;struct stack* prev=NULL;
while(sp){prev=sp;sp=sp->next;}sp=(struct stack*)malloc(sizeof(struct stack));
sp->x=x;sp->next=NULL;if(!STACK)STACK=sp;if(prev)prev->next=sp;}
int pop(){int ret=0;struct stack* sp=STACK;struct stack* prev=NULL;struct stack* prev2=NULL;
while(sp){prev2=prev;prev=sp;sp=sp->next;}if(prev){ret=prev->x;free(prev);}
if(prev2)prev2->next=NULL;else STACK=NULL;return ret;}
void empty(){struct stack* sp=STACK;struct stack* next=NULL;
while(sp){next=sp->next;free(sp);sp=next;}}
void show(){struct stack* sp=STACK;int n=0;while(sp){printf("[%i]:%i\n",n++,sp->x);sp=sp->next;}}

int main(void){empty();show();
push(1);show();push(2);show();push(3);show();
pop();show();pop();show();pop();show();
return 0;}

343 :271:2006/06/07(水) 13:58:01
>>329-333 ご迷惑をおかけして申し訳ありませんでした。
>>329様のサイトを精査してみます。b = a[i]など[]は習っていないので調べてみます。
当該サイトのプログラマー様すみませんでした。
ちなみにわたしは>>337ではありません。

344 :デフォルトの名無しさん:2006/06/07(水) 13:58:51
プロトタイプ宣言が無いというエラーが頻発してしまうのですが・・。

345 :デフォルトの名無しさん:2006/06/07(水) 14:03:05
>>343
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1997.cpp
んじゃこれでw

346 :デフォルトの名無しさん:2006/06/07(水) 14:12:36 ?#
>>338
http://pc8.2ch.net/test/read.cgi/tech/1149349035/52

347 :271:2006/06/07(水) 14:16:40
>>345 ありがとうございます。自分でも>>329のサイトを>>345と比較、参照してみます。

348 :デフォルトの名無しさん:2006/06/07(水) 14:16:49
俺の性欲処理頼んでいい?>とーますたん

349 :デフォルトの名無しさん:2006/06/07(水) 14:17:46
>>348
半年ROMってろ、恥をかく前に煽るのヤメレって言われますよ?

350 :デフォルトの名無しさん:2006/06/07(水) 14:29:01
流れがおかしい。
以下淡々と質問及び解答で。

351 :271:2006/06/07(水) 14:35:35
>>304様も提示してくれたのですね!気づきませんでした。本当にありがとうございます

352 :デフォルトの名無しさん:2006/06/07(水) 14:43:22
>>302
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1998.cpp

353 :デフォルトの名無しさん:2006/06/07(水) 14:55:11 ?#
>>352
>for(i=2;i<=x;i++)

ループ回数大杉。

354 :デフォルトの名無しさん:2006/06/07(水) 14:57:16
今時、強豪相手に点をとりたきゃ、ループシュートだお

355 :デフォルトの名無しさん:2006/06/07(水) 14:58:42
他人の解答にけちを付けるのは止めろ。
というかそんなことをいちいち指摘しなくても>>305のコードで十分だろ。

356 :デフォルトの名無しさん:2006/06/07(水) 15:03:08 ?#
ケチ付けられたくなかったら書かなきゃいいのに。

357 :デフォルトの名無しさん:2006/06/07(水) 15:04:19
>>353
おk、それじゃ偶数は不要なんで回数を減らしてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1999.cpp

358 :デフォルトの名無しさん:2006/06/07(水) 15:05:31
>>355
ケチって言うけど、実際問題として効率の悪い部分は直していった方が
今後のためだお。そうやって推敲していって、人類は効率の良い技術を培い
次の世代に教科書などで伝授していっているんだから。
文明や文化、科学技術の発展はそういったところから重要。

359 :デフォルトの名無しさん:2006/06/07(水) 15:12:17
代替案を提示しないのが悪い

360 :デフォルトの名無しさん:2006/06/07(水) 15:14:59
>>356
俺は>>352じゃないけど、俺でも>>352のように書いたと思うから弁護させてもらうが、
高速化のために実装を複雑にするのはトレードオフで、
どっちが優れているという話でもないだろ。
特に宿題の解答では「単純であること」を相当に優先する趣味があっても良いはず。
というわけで>>353は酷い蛇足だと思う。

>>358
書いた当人がそれを望んでいるならそれもいいがな。

361 :デフォルトの名無しさん:2006/06/07(水) 15:15:48
>>359
よく見ろ。

362 :デフォルトの名無しさん:2006/06/07(水) 15:16:02
やれやれ、ジョークのわからんやっちゃのぉ・・・

363 :デフォルトの名無しさん:2006/06/07(水) 15:18:44
>>360 っつか、蛇足の意味わかってないっしょ?

364 :デフォルトの名無しさん:2006/06/07(水) 15:20:44
>>363
「無用な付けたし」の意味で使ったがおかしいか?

365 :デフォルトの名無しさん:2006/06/07(水) 15:23:20
>>364
まぁ、批判などは良い、ご自分の素数を求めるソースを提示してくれ。
素数を求めるアルゴリズムには、エラトステネスのふるいが有名だが
今回は何が素数か?ではなく、入力された数値が素数に該当するか?だぜ。

366 :デフォルトの名無しさん:2006/06/07(水) 15:23:46 ?#
>>360
あのな、

>for(i=2;i<=x;i++)
これを

>int r=sqrt(x);for(i=2;i<=r;i+=(i>2)?2:1)
こうする程度のことが複雑か?
この程度で理解できないほど複雑になったと感じるなら、それはプログラム以前の問題。

367 :デフォルトの名無しさん:2006/06/07(水) 15:27:12
【蛇足】
蛇の絵を描く競争で早く書き上げた者が足まで書いて負けになったという故事から。
・あっても益のない余分な物事。
・あっても無駄になるもの。

368 :デフォルトの名無しさん:2006/06/07(水) 15:28:30
>>365
なんで俺?俺なら>>352で十分だと思う。

>>366
可読性や分かり易さの話じゃなくて、単純な解答にはそれ自身で
それなりに価値がある、という話。
もちろんこのスレの解答で単純さにどの程度重きを置くかは回答者の勝手だが。

369 :デフォルトの名無しさん:2006/06/07(水) 15:31:34
>>366
自分では素直じゃないコード書いておいて、
他人が素直じゃないコード書いた時に指摘して答えを書いちゃうのはどうかと思う。

370 :デフォルトの名無しさん:2006/06/07(水) 15:32:25 ?#
>>357
もうちょっとだな。iの最大値は√xで良い。

371 :デフォルトの名無しさん:2006/06/07(水) 15:39:02
>>370
まっ、質問者のレベルに応じてやったまでさ。このスレの趣旨からして
答えた人のレベルで答えりゃ良いだろうし、○投げだけど答えが導ければそれで良しw

372 :デフォルトの名無しさん:2006/06/07(水) 15:49:53
っつか、偶数は2で割りゃ・・・2を抜いた時点でアホなことしてたw

373 :デフォルトの名無しさん:2006/06/07(水) 16:11:47
まぁ良いや、さぁ次の課題、どーんとこい↓

374 :デフォルトの名無しさん:2006/06/07(水) 16:17:03
この世のイケメンを全員ゾンビみたいな面にするPGお願い。
後、この世の女の子が俺無しじゃ生きていけないPGも。

375 :デフォルトの名無しさん:2006/06/07(水) 16:24:10
PGは無理だけど、ホラーなRPGならイケメンがゾンビに噛まれて
ゾンビになるものならあるかもよ?

376 :デフォルトの名無しさん:2006/06/07(水) 16:27:01
なんだかんだ言っても、まずパッと見て人間が理解できるソースが重要やな
他人に見せるならなおさらだな。
大掛かりなプロジェクトに参加するようになれば
そういった人間同士のやりとりも重要になるし。

377 :デフォルトの名無しさん:2006/06/07(水) 16:54:23 ?#
バカでも理解できるようにする必要はないけどな。

378 :デフォルトの名無しさん:2006/06/07(水) 16:55:42
バカが理解できないのは、もはやその言語の仕組み、書き方、使い方を知らず
なおかつ計算手順まで理解していないから。
俺が言っているのは細かい説明じゃなくて、見やすいソース。

379 :デフォルトの名無しさん:2006/06/07(水) 17:43:10
じゃあ、七行プログラミングのソースとかはダメなソースなのか…

380 :デフォルトの名無しさん:2006/06/07(水) 17:45:27
それは単に見やすくすりゃ良いだけじゃね?w

381 :デフォルトの名無しさん:2006/06/07(水) 17:47:48
そういう世界の中ではいいソース。
人が読む為のソースとしては駄目なソース。
俺が好きなのはタルタルソース。

382 :デフォルトの名無しさん:2006/06/07(水) 17:52:03
レベル低い質問でごめんなさい

100 | 0x21 == 100 & 0144

処理の優先順位を考えると 100 になると思うのですが
答えは真(1)と言われました。
なぜ真になるのでしょうか?
どなたかお願いします。

383 :デフォルトの名無しさん:2006/06/07(水) 18:17:15
ふつうに100になるが。
ただし100は真なので、結果が真というのは正しい。

384 :デフォルトの名無しさん:2006/06/07(水) 18:25:22
>>383
ありがとうございます
1か0で答えなければならないのに答えが100となり
分からなくなってしまいました。
100は「真」なので答えは100ではなく1になるということですね

根本的な知識が足りないことがわかりました。
本当にありがとうございました。

385 :デフォルトの名無しさん:2006/06/07(水) 22:32:54
[1] 授業単元:
[2] 問題文
文字列検索の宿題なんですが、
半角と全角が(漢字など)入り混じった文字列を検索して、
検索した文字列の先頭文字の位置を出力するという問題です。
C++で用意されている検索関数は不可です。

[3] 環境
 [3.1] WindowsXP
 [3.2] VC++ 6.0
 [3.3] C++
[4] 明日の18時まで

よろしくお願いします☆


386 :268 ◆XZTjbQY7no :2006/06/07(水) 22:34:51
どなたか>>268お願いします・・・。

387 :デフォルトの名無しさん:2006/06/07(水) 23:05:17
ユカコ☆スレに遊びにこいよ!

http://travel2.2ch.net/test/read.cgi/kyoto/1148668530/l50


388 :デフォルトの名無しさん:2006/06/08(木) 13:11:30 ?#
>>385
対応するコードページは?

389 :デフォルトの名無しさん:2006/06/08(木) 14:38:27
>>388
すみません。コードページについての指定はありません。
日本語や英語入り混じった文字列なので、それに対応したコードでお願いします。

390 :デフォルトの名無しさん:2006/06/08(木) 14:42:47
>>389
ソースのコードページの事じゃなくて、文字列のコードページの事だと思われ

391 :デフォルトの名無しさん:2006/06/08(木) 15:15:35
>>385
次スレの184だが、似たような問題だったので改変して作った。
日本語の場合は2文字分スキップしてしまうんだけどいい?
だから表示結果は○文字目ではなくて○バイト目とした。
#include <stdio.h>
int chkmatch(char *t1, char *t2){
int find = -1, count = 0;
char *save1,*save2;
while( *t1 ){
if( *t1 == *t2 ){
save1 = t1;save2 = t2;find = count;
while( *t2 ){
if( *t1 != *t2 ){ find = -1;break; }
t1++; t2++;
}
t1 = save1;t2 = save2;
if( find != -1 ) break;
}
t1++; count++;
}
return find;
}

int main( void ){
char buf1[256],buf2[256]; int find;
printf("元の文章-->");gets(buf1);printf("検索する文章-->");gets(buf2);
find = chkmatch(buf1,buf2);
if(find>=0){ printf("見つかった。%dバイト目。\n",find+1 ); }
else{ printf("見つからなかった。\n"); }
return 0;
}

392 :デフォルトの名無しさん:2006/06/08(木) 15:20:00

[1] 授業単元:
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2011.txt
[3] 環境 linux
 [3.2] コンパイラ名とバージョン:gcc4.0
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:


よろしくお願いします

393 :デフォルトの名無しさん:2006/06/08(木) 15:29:18
>>391

えっと、文字の位置指定なのでバイトではなく、何番目って事でお願いしたいです。

すみません。お願いします。

394 :デフォルトの名無しさん:2006/06/08(木) 15:44:30 ?#
>>389
んじゃUNICODE限定。
#define _UNICODE
#include<iostream>
#include<wchar.h>
using namespace std;
long wstrsearch(wchar_t* src, wchar_t* key){
long i=0, k=0;while (src[i]!=_T('\0')) {
while(src[i+k]==key[k] && key[k]!=_T('\0'))k++;
if (key[k]==_T('\0'))return i;else{k=0;i++;}}
return -1;}
int main(int argc, _TCHAR* argv[]){
if (argc>1) {wchar_t tmp[100];FILE* fp;
if ((fp=fopen(argv[1],"rt"))!=NULL) {wchar_t* buf;
fseek(fp,0,SEEK_END);long length=ftell(fp);
fread((void*)buf,1,length,fp);fclose(fp);
fgetws(tmp,100,stdin);long pos=wstrsearch(buf,tmp);
if (pos>=0)
cout << "find " << tmp << " at " << pos << " in " << argv[1] << endl;
else
cout << "not found" << endl;
}}return 0;}

395 :デフォルトの名無しさん:2006/06/08(木) 15:48:31
>>392
数字を入力するときはコマンドラインで「./minswp 5 87 54 23 45 61」というようにやってちょ。
#include <stdio.h>
#include <stdlib.h>
int array[10];
void swapsmall(int *data, int num){
int min = *data, *p, *head, temp;
head = data;
while(num--){
if( *data <= min ){
min = *data;
p = data;
}
data++;
}
temp = *head; *head = *p; *p = temp;
}
int main( int argc, char **argv ){
int i,num;
if( argc < 3 ){ printf("引数足りない\n"); return 1; }
num = atoi(argv[1]);
for(i=0;i<num;i++){
array[i] = atoi(argv[i+2]);
}
swapsmall( array, num );
for(i=0;i<num;i++){printf("%d",array[i]); if(i!=num-1)printf(" ");}
return 0;
}

396 :デフォルトの名無しさん:2006/06/08(木) 15:49:06 ?#
>>392
http://pc8.2ch.net/test/read.cgi/tech/1149349035/45

397 :395:2006/06/08(木) 16:02:09
しかし違う質問でも「配列宣言を除きポインタで処理せよ」とあったが、どうしてこだわるんだ?
配列のほうが分かり易いのに。 ポインタの場合はアドレス進めてしまうのが嫌。
まぁ、hoge[10]を*(hoge+10)に変えてもOKならそれが早いんだけど。

398 :デフォルトの名無しさん:2006/06/08(木) 16:02:17
>>394

:\documents and settings\owner\デスクトップ\cpp1.cpp(6) : error C2065: '_T' : 定義されていない識別子です。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(10) : error C2061: 構文エラー : 識別子 '_TCHAR' がシンタックスエラーを起こしました。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(12) : error C2065: 'argv' : 定義されていない識別子です。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(12) : error C2109: 配列または、ポインタでない変数に添字が使われました。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(12) : error C2664: 'fopen' : 1 番目の引数を 'int' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(17) : error C2109: 配列または、ポインタでない変数に添字が使われました。
cl.exe の実行エラー

というエラーが出てきました。

399 :デフォルトの名無しさん:2006/06/08(木) 16:20:45 ?#
>>398
プロジェクトの新規作成→Win32コンソールアプリケーション


400 :391:2006/06/08(木) 16:22:00
>>393
#include <stdio.h>
#include <ctype.h>
int chkmatch(char *t1, char *t2){
int find = -1, count = 0, ascii=0;
char *save1,*save2;
while( *t1 ){
if( *t1 == *t2 ){
save1 = t1;save2 = t2;find = count;
while( *t2 ){
if( *t1 != *t2 ){ find = -1;break; }
t1++; t2++;
}
t1 = save1;t2 = save2;
if( find != -1 ) break;
}
/*アスキーの場合以外*/
if( !__isascii(*t1) ) { t1+=2; count++; }
else{t1++;count++;}
}
return find;
}

int main( void ){
char buf1[256],buf2[256]; int find;
printf("元の文章-->");gets(buf1);printf("検索する文章-->");gets(buf2);
find = chkmatch(buf1,buf2);
if(find>=0){ printf("見つかった。%d文字目。\n",find+1 ); }
else{ printf("見つからなかった。\n"); }
return 0;
}

401 :デフォルトの名無しさん:2006/06/08(木) 16:23:32
>>394
wstrsearchの中では_T使わないで直接L'\0'にすべきだろ。
あと、本当に必要なヘッダは<tchar.h>、<cstdio>などで、
そのプログラムには<iostream>も<wchar.h>も不要。(<wchar.h>は全く不要とも言えないが)

402 :デフォルトの名無しさん:2006/06/08(木) 16:29:21
>>400さん

ありごとうござました!!!
これで単位が取れます☆
感謝です!!

403 :デフォルトの名無しさん:2006/06/08(木) 16:44:15 ?#
>>401
cstdioとtchar.hはstdafxに書いてあった。

404 :デフォルトの名無しさん:2006/06/08(木) 17:38:58
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
予想値と正解の差が10以下なら「もうちょっと(上・下)!」,5以下なら「おしい!もうちょっと(上・下)!」それ以外のときは「もっと(上・下)!」というようにせよ。
また,予想値を入れる回数を5回までとせよ.5回の入力で正解できないときはゲームオーバーとしてプログラムは終了する.また,最後にスコアを以下のように計算して表示するようにせよ.
1回目で正解:100点 ,2回目で正解:80点, 3回目で正解:60点, 4回目で正解:40点, 5回目で正解:20点 ,正解できず:0点
[実行結果]
<<<<数当てゲーム>>>>
予想値を入れてください:34
もっと上!
予想値を入れてください:87
もっと下!
予想値を入れてください:49
もうちょっと上!
予想値を入れてください:60
おしい!もうちょっと下!
予想値を入れてください:55
!!!!大あたりです!!!!
SCORE: 20点
3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョン: Visual Studio.NET2003
 [3.3] 言語: C++
[4] 期限: 6月9日まで
[5] その他の制限: まだ初期で、if,for,whileまで習いました。
よろしくお願いします。

405 :デフォルトの名無しさん:2006/06/08(木) 17:39:16
>>396

>>392の問題は質問は出てるけど、回答はもらえて無くないか?

406 :デフォルトの名無しさん:2006/06/08(木) 17:48:52
>>404
正解の値はどうやって決めるん・・・・?

407 :デフォルトの名無しさん:2006/06/08(木) 17:55:30
>>404
正解の値は自分で決めるんですよ。
この問題の例だと55になってます。

408 :デフォルトの名無しさん:2006/06/08(木) 18:10:41
>>407
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2012.cpp

409 :デフォルトの名無しさん:2006/06/08(木) 18:22:40
>399 >401
トーマスがおとなしい……。芸風が変わったのか?単に今忙しくて相手にできないのか?
ちょっと寂しい。

410 :デフォルトの名無しさん:2006/06/08(木) 18:37:20
>>404
>>408削除で訂正
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2014.cpp
前のはちと点数の算出が不適切だったかと。あと、絶対値を求めるのも初歩的なものに。

411 :デフォルトの名無しさん:2006/06/08(木) 18:40:58
お願いします
[1] 授業単元: 基本プログラミング
[2] 問題文(含コード&リンク):入力された複数の0以上の整数値の平均値、最大値、最小値を求めるプログラムを2種類作成せよ。(1をwhile文、2をdoーwhile文を使う) 
1、入力する数値の個数がわかってない場合(入力が終わると負の値を入れて対応)
実行例
Input date:5
Input date:6
Input date:7
Input date:5
Input date:-1
ave=5.75 max=7 min=5

2、入力する数値の個数がわかっている場合(初めに、その個数をnに入力してから、その後にその個数分だけ数値を入力)
実行例
n=5
Input date:4
Input date:6
Input date:9
Input date:3
Input date:8
ave=6 max=9 min=3
[3] 環境
 [3.1] OS:UNIX
 [3.3] 言語:C++
[4] 期限:明日
[5] while,do-whileまで習いました 最初が#includ<iostream>のやつでお願いします 注文多くてすみません‥

412 :デフォルトの名無しさん:2006/06/08(木) 18:48:53
「最初が〜」以外見覚えがあるな。

413 :デフォルトの名無しさん:2006/06/08(木) 19:26:59
>>410
ありがとうございます。
少し参考にさせてもらって自分なりのプログラム作れました。

414 :デフォルトの名無しさん:2006/06/08(木) 19:43:35
>>411 『1』
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
main(){
  std::vector<int> v;
  while(1){
    std::cout << "Input date:";
    int n; std::cin >> n; if( n < 0 ) break; v.push_back(n);
  }
  std::cout << "ave=" << std::accumulate(v.begin(), v.end(), 0)/(double)v.size()
            << " max=" << *std::max_element(v.begin(), v.end())
            << " min=" <<*std::min_element(v.begin(), v.end()) << std::endl;
}
『2』
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
main(){
  std::cout << "n="; int n; std::cin >> n; if(n<1) return 0;
  std::vector<int> v;
  do{
    std::cout << "Input date:"; int m; std::cin >> m; v.push_back(m);
  }while(--n);
  std::cout << "ave=" << std::accumulate(v.begin(), v.end(), 0)/(double)v.size()
            << " max=" << *std::max_element(v.begin(), v.end())
            << " min=" <<*std::min_element(v.begin(), v.end()) << std::endl;
}

415 :デフォルトの名無しさん:2006/06/08(木) 19:44:21
#include <string> はいらなかった。

416 :デフォルトの名無しさん:2006/06/08(木) 19:50:22
よろしくお願いします。
[1] 授業単元:プログラミング
[2] 問題文:
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/152
の貯金プログラムを拡張して、額の表示の際に3桁ごとにコンマを入れる形式をとるようにせよ.下記例のようにどのような桁数でも桁数に応じてきちんと表示できるようにすること.
12円⇒12円
789012円⇒789,012円
1000001円⇒1,000,001円
1234567890円⇒1,234,567,890円

[3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョン: Visual Studio.NET2003
 [3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: if,for,whileまで習いました。


417 :デフォルトの名無しさん:2006/06/08(木) 20:05:31
test

418 :デフォルトの名無しさん:2006/06/08(木) 20:31:33
#include <stdio.h>
void hoge(int n){
int x = 1, i = 0, j = 1;
while(n / 1000 >= x ){x *= 1000; j++;}
while(i < j){
if(i == 0)printf("%d", n / x);
else printf(",%03d", n / x);
n %= x;
x /= 1000;
i++;
}
printf("円\n");
}
int main(void){
int m[] = {12, 789012, 1000001, 1234567890};
for(int i = 0; i < sizeof(m) / sizeof(m[0]); i++){
printf("%d円 ", m[i]);
hoge(m[i]);
}
}
三桁区切り>>416
あとは自分で組み込んで

419 :デフォルトの名無しさん:2006/06/08(木) 20:34:33
>>414
へぇ。C++の標準ライブラリにはこんな便利な関数群があるのか。
こんだけスマートに書けたら卒業レベルやんね。

420 :デフォルトの名無しさん:2006/06/08(木) 23:10:43
スマートというか関数型っぽい表記しただけじゃね?

421 :デフォルトの名無しさん:2006/06/08(木) 23:15:55
関数型だろうがなんだろうがスマートなことは確かだと思うが。

422 :デフォルトの名無しさん:2006/06/09(金) 01:26:11
バグがあるけどな。『1』のほう。

423 :デフォルトの名無しさん:2006/06/09(金) 02:31:18
[1] 授業単元: プログラミング演習T
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2017.zip
[3] 環境
 [3.1] WindowsXP SP2
 [3.2] VisualStudio2003
 [3.3] C++
[4] 06月09日12:00まで うっかり忘れてたorz(どうせわからんがorz)
[5] if,for,while,switchを習ったばかりです。

424 :デフォルトの名無しさん:2006/06/09(金) 07:53:44
>>423
最初っからまとめて問題文ごと出しておけば良いのに
単発で目的に応じないレスを求めるから・・・

425 :デフォルトの名無しさん:2006/06/09(金) 10:20:12
>>423
もうすぐ12時だなぁ〜〜〜wktk
さて、今夜はワールドカップ!さすがに試合は夜中だから録画して
次の日に見るけど。ワールドカップを楽しみながら過ごす今年の夏。
俺は初めて彼女ができ、ロストチェリーボーイになった・・・とか期待してみたり

426 :デフォルトの名無しさん:2006/06/09(金) 11:00:31
誰か >>423 急いで!もうすぐ12時だお

427 :デフォルトの名無しさん:2006/06/09(金) 11:11:02
ヒント:匿名掲示板にリンク張られたzipファイルなんて、怖くて誰も開けない。

自分の無知を呪ってね。

428 :423:2006/06/09(金) 11:13:10
>>416
うぁ、たぶんクラスメイトだw
その1のxoの問題お願いします。これだけはできないとまずいんで(汗

429 :デフォルトの名無しさん:2006/06/09(金) 11:30:03
>>427
ウィルス検知、駆除ソフトも持ってねーのかよ、だっせーーwwww
今じゃネットやるなら常識だろw

430 :デフォルトの名無しさん:2006/06/09(金) 11:30:28
>>423 その1

#include <stdio.h>

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

    printf("一辺の長さを入力してください(1から10まで):");
    scanf("%d", &n");

    for (i = 0; i < n; i++) {
        for (j = 0; j < i; j++)
            putchar('x');
        for (j = i; j < n; j++)
            putchar('o');
    }

    return 0;
}



431 :デフォルトの名無しさん:2006/06/09(金) 11:31:31
っつか、他にも同じ内容の質問って、どこの学校だよ?w
怠っている奴がいるって通報しちゃうぞw

432 :デフォルトの名無しさん:2006/06/09(金) 11:33:14
・その1
既出だと思うので割愛
・その2
4-3.cをどう拡張しても使えそうにないので割愛
・その3
3-5.cをユーザインターフェースの仕様変更をせずに例のような表示を得ることができないので割愛
・その4
*誤り
main()に戻り値がない。
leepという変数名が不適切。
西暦年とあるのでグレゴリウス暦を仮定していいと思うが、制定年を考えると値域を限定すべき。
10行の右辺はyear != 0 && year % 400 == 0と同等になっている。
14行とも16行とも常に表示されるので閏年の判別ができない。
*修正その他
長くなったので割愛。


433 :デフォルトの名無しさん:2006/06/09(金) 11:49:14
>>430
ちょっwwwwwwおまっwwwwwwちゃんと改行コード入れてYO!
scanfの最後のダブルクォートが余計だYO!

434 :デフォルトの名無しさん:2006/06/09(金) 11:50:49
main()にreturnがないのは、間違いではない。


435 :デフォルトの名無しさん:2006/06/09(金) 11:57:40
厳密に言うと、int main() ならint型の返り血があるとのことだが、返り値がないなら
void main にしちゃって

436 :デフォルトの名無しさん:2006/06/09(金) 12:05:23
int main()でも、return は省略できるよ。


437 :デフォルトの名無しさん:2006/06/09(金) 12:06:22
可能、不可能とかじゃない。そういうところはコンパイラがしっかり対応しているだけで
定義や仕様からして、不適切だってこと。それを理解していないと
環境が変わったり、突き進んだ先でコンパイルエラーが分からなくなる人が出てくるんだよ。

438 :デフォルトの名無しさん:2006/06/09(金) 12:07:34
たとえば、ある自分で定義した関数がdouble型の値を返すとしよう。
そういうときは double f(x) といった形で定義するだろ?そういうこと。
main だとそういうところに気づかないだけ。

439 :デフォルトの名無しさん:2006/06/09(金) 12:09:43
C++、C99ではmainからのreturnの省略が明示的に認められています。念のため。

440 :デフォルトの名無しさん:2006/06/09(金) 12:13:01
あるコンパイラじゃ、int mainとしたとき、return 値を書かないとエラーを表示するものもある。
いくつか試してみれば、そういう細かいところに気づくよ。
だから最初のその部分でつまらん論争が起こる。値を返さないなら void main にしとけばおk。

441 :デフォルトの名無しさん:2006/06/09(金) 12:29:16
C89でも、returnを省略してエラーにはならない。
エラーになるのはよほどへぼい処理系。


442 :デフォルトの名無しさん:2006/06/09(金) 12:48:04
どなたか>>276をよろしくお願いします・・・

443 :デフォルトの名無しさん:2006/06/09(金) 12:48:10
void main() なんて書いてるやつより、int main()でreturnを省略してるやつの
ほうが、Cを知ってそう。


444 :423:2006/06/09(金) 13:03:08
その1以外できんかったorz
ほかのやつ、習ってない語が多すぎてどうにも・・・
気持ちだけ受け取っときます(((´ー`)つ[黄餅]

ちなみにどうでもいい個人(?)情報流すと
名城大学2年Aクラスですが何か?ww

445 :デフォルトの名無しさん:2006/06/09(金) 13:10:01 ?#
まあうちには応募してこないとは思うが念のため名城大学をブラックリストに入れておこう。

446 :デフォルトの名無しさん:2006/06/09(金) 13:16:17
絶対送っちゃダメだぞ! 絶対だからな。
ttp://www.meijo-u.ac.jp/jyukensei/info/form.html


447 :デフォルトの名無しさん:2006/06/09(金) 13:18:36
>>441
あのね、どのコンパイラがどうとかはこの際どうでも良い。
コンパイルエラーが起こるものがあるとかよりも
返り値についての事情を知っていれば、それに関する取り扱いも適切になってくるってこと。
にしてもint mainと書いて return 0(正常終了)を記述しないやつは完全に無知、
それは不要だと言い切った奴は知ったかだと思われるよ。
これはもはやプログラマの間でどうとかじゃない、言語の仕様の問題。

448 :デフォルトの名無しさん:2006/06/09(金) 13:20:13
>>445
ちょいお待ち、名城に来ている人すべてがそうとは限らないでしょ。
〜〜だからではなく、本人の本質を見抜く面接ができないところは
結局まともな人材を雇えず、まともな業務成績も出せないのさ。

449 :432:2006/06/09(金) 13:24:22
狙ったところと違うところで盛り上がっている……

450 :デフォルトの名無しさん:2006/06/09(金) 13:28:12
午後か・・・もう課題が出された講義が始まったかな wktk

451 :デフォルトの名無しさん:2006/06/09(金) 13:44:38
>>442 サイズ変えちゃだめとか言ってるし、画像うp

452 :デフォルトの名無しさん:2006/06/09(金) 13:50:32 ?#
>>448
「こんなところに来るクズ学生に単位をやっている」という時点でアウト。

453 :デフォルトの名無しさん:2006/06/09(金) 13:52:19
int main()って書いたのに、returnを書かない奴がいるんですよ
なぁ〜〜〜〜にぃ〜〜〜〜!?
男は黙って、return 1 男は黙って、return 1
異常終了だよ

454 :デフォルトの名無しさん:2006/06/09(金) 13:59:09
>>447
だから、言語仕様上は省略できだろよ。
return;を省略したら、C89はなにを返すか未定義、C99は0を返す。
それだけのこと。
mainをvoidにしろとか、returnを省略したらエラーになるとか、
間違いだとか言ってるやつが知ったかぶり。


455 :デフォルトの名無しさん:2006/06/09(金) 14:00:59
よろしくお願いします。
[1] 授業単元: 画像処理のための線形代数
[2] 問題文(含コード&リンク):
ベクトル v を任意のベクトル a を軸として左回りに t ラジアンだけ回転させたベクトルを求める関数を作成せよ。
v, a は Vector3、t は double 型とする。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: BCC32
 [3.3] 言語: どちらでも可
[4] 期限: 2006年06月12日17:00まで
[5] その他の制限:

Vector3はx,y,zのメンバを持った構造体です。


456 :デフォルトの名無しさん:2006/06/09(金) 14:02:59
>>447 言ってることが支離滅裂


457 :デフォルトの名無しさん:2006/06/09(金) 14:25:54
>>454
>できだろよ。
日本語でおk。
>return;を省略したら
するしないによるコンパイラがどうとか関係ない。
int main など、関数の前についている変数の定義にも使われる型が
なんで書かれているか?それに関しては返り値に関係してくる。
返り値がないなら普通に void って関数の前につけるクセはあった方が良いよ。
それをちゃんと理解してね。わけもわからずつけるんだよーってのはただのアホ。

458 :デフォルトの名無しさん:2006/06/09(金) 14:28:03
>>456>>454
自分が理解してないなら屁理屈ごねてくんなよ、専門学校生w

>mainをvoidにしろとか、returnを省略したらエラーになるとか、
>間違いだとか言ってるやつが知ったかぶり。
何これ?間違いだとは言ってないじゃん。”不適切”とは書かれているがw
省略すると「返り値がない」としてエラーを表示するものもあるって話だが?
まだわかってないなこいつ・・・良い悪いの問題よりも
それが「何なのか?」が重要。要するにどっちでも良いって言っている奴は
何なのかが分かってない証拠。だったら適当に、値を返す関数の前に
返り値に対してのデータ型をきちっと書いてから出直せ。

459 :デフォルトの名無しさん:2006/06/09(金) 14:30:40
441 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 12:29:16
C89でも、returnを省略してエラーにはならない。
エラーになるのはよほどへぼい処理系。

↑誰もこんなことは論点にしていないw
関数の前に書かれている int や void が何を示しているのかってことなんだがw
それによって敢えて int って書くなら return をつけるつけないというよりも
値を返さないってわかってんなら void にするよ、分かっている人ならね。

>>434が言いたいのは単に「間違いではない」ってことだけであって
適切さを欠く知識しかないのが露呈されたわけだな。

460 :デフォルトの名無しさん:2006/06/09(金) 14:36:51
まぁ、ごちゃごちゃ言っても始まらないし、どうせなら
double main() でも char main() でも short、long でも好きなのを付けて
return 無しでどぞw
マジで、main の前にそれらをつけてもコンパイルできるものはできるから。
けど、敢えて int ならおkってなら、やっぱりわかってない無知決定だろw

461 :デフォルトの名無しさん:2006/06/09(金) 14:44:44
intは規格上mainの返り値として明示的に許されている唯一の型。
int main()を使う理由としてはこれで十分だろ。

462 :デフォルトの名無しさん:2006/06/09(金) 15:22:10
>>459
> ↑誰もこんなことは論点にしていないw

いや、すぐ上に話題にしてるやつがいるじゃん。
見えないふりするなよ。


463 :デフォルトの名無しさん:2006/06/09(金) 15:27:38
>>458
>>mainをvoidにしろとか、returnを省略したらエラーになるとか、
>>間違いだとか言ってるやつが知ったかぶり。
>何これ?間違いだとは言ってないじゃん。”不適切”とは書かれているがw

いや、voidにしろとか、returnを省略したらエラーになるって
言ってるやつがいるだろ。
それを間違いだって言ってるだけ。
見えないふりしたり、論点をずらそうとしても無駄。



464 :デフォルトの名無しさん:2006/06/09(金) 15:31:40
だいたい自分からコンパイラのエラーがどうとかmainのリターン値をvoidに
しろとか言い出して、間違いを指摘されたら「そんなことは論点じゃない」って、
アホか。



465 :デフォルトの名無しさん:2006/06/09(金) 15:36:24




   い   い   か  げ  ん  に  し  ろ






466 :デフォルトの名無しさん:2006/06/09(金) 15:38:46
>>461
勝手にintを規格上とかmainの返り値とか明示的に許されているとかウソこくでねぇよ、田舎もんがw
returnがないならvoidしとけっつーのっw

467 :デフォルトの名無しさん:2006/06/09(金) 15:41:09
はぁ?いいから氏ねよ糞が

468 :デフォルトの名無しさん:2006/06/09(金) 15:41:19
>>464
>mainのリターン値をvoidに
誰も言ってないよ?しかもreturnがないならvoid・・・いやもう良いや。
この一言で分かったw 
mainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidに
mainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidに
mainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidに
↑とても恥ずかしい勘違いをしていることが判明したますたw
こいつはreturnばかりにしか頭がいってないようです。
本質的なことはintやvoidといった関数の前についている変数の型についてなんだがw

469 :デフォルトの名無しさん:2006/06/09(金) 15:41:58
467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09
はぁ?いいから氏ねよ糞が
467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09
はぁ?いいから氏ねよ糞が
467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09
はぁ?いいから氏ねよ糞が
467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09
はぁ?いいから氏ねよ糞が

↑これ、どこの専門学校生?教えてよ、うちでは雇わないから
ブラックリストに入れたいんですけど?まぁ、専門学校は除外しとこうかw

470 :デフォルトの名無しさん:2006/06/09(金) 15:43:31
良いからreturnがなくてもコンパイルエラーしないなら
intでもcharでもdoubleでもfloatでもshortでもlongでもお好きなのを書いて
最後にreturnなしでソースを書いてなさいってw
なんでintだけおkなの?w

471 :デフォルトの名無しさん:2006/06/09(金) 15:46:11
intがデフォだから。

472 :デフォルトの名無しさん:2006/06/09(金) 16:49:15
>>468
> 誰も言ってないよ?

すげーこいつ、本気で見えないふりしてる。
>>440で言ってるだろよ。



473 :デフォルトの名無しさん:2006/06/09(金) 17:17:19
ANSI Cでは main 関数の型は int と決められています。 void とするのは間違いです。
だそうだ

474 :デフォルトの名無しさん:2006/06/09(金) 17:18:43
誰だ荒らしてんのは?

475 :デフォルトの名無しさん:2006/06/09(金) 17:53:55
お前だろwww

476 :デフォルトの名無しさん:2006/06/09(金) 18:19:29
>>473
ANSI CだけがC言語じゃありません、そんな一部だけ持ち出して
勝手なことを言うんじゃねーよw
>mainのリターン値をvoidにしろとか
だから本当に言ってねーってw
returnで返り値がないならvoidにしなきゃ
コンパイルエラーになるものもあるって話だろ。
まだこいつ変数の型について理解してないなw

477 :デフォルトの名無しさん:2006/06/09(金) 18:22:16
とくにこれ>>441。エラーが起きない例を持ち出しているに過ぎない。
エラーが起こるコンパイラを知らないだけ。
逆に、そのエラーが起きないコンパイラでreturnを書かずに
voidと書いたらエラーが起こるならまだしも、話がわかってないアホ必死すぎw


478 :デフォルトの名無しさん:2006/06/09(金) 18:27:34
あんまりぐちぐち言っても始まらない、C/C++を解説しているサイトとか見てみ。
たいがいintと書かれているところはreturn 0を書くか
returnを書かない場合はvoid mainにしているから。
どのコンパイラでも通用するようにとの配慮だな。
分かってない奴は、エラーが起きるコンパイラを使っている人から
指摘されるか、こういった掲示板でこのサイトアホって晒されるかもねw

479 :デフォルトの名無しさん:2006/06/09(金) 18:31:08
>>476
そうは言ってもANSI(或いはISO)はもっとも知られたCであるはずだから、
473がANSIを持ち出すのも無理はなかろう。

480 :デフォルトの名無しさん:2006/06/09(金) 18:37:56
>>442
・繰り返し回数(N_REPEAT)を100から1にする。
#これだけで手元のLinuxPCだと100分の1とは言わないが60分の1ほどの0.12秒程度になる。
・コンパイラをgccからiccに換える。
#同じく1-2割所要時間が短縮する。
尚、この程度のソースだと人力で姑息な最適化しても(iccだと)殆ど効果はない。

処で、突っ込みどころ満載なんだけど。
・グレーはRGBの平均で求めてはいけない。
・処理する画像サイズが固定されている。
#まぁいいか。

481 :デフォルトの名無しさん:2006/06/09(金) 18:41:06 ?#
「省略が許されているから」という理由で、intを返す関数プロトタイプの先頭に
須く何も書かないような奴がいたら即刻クビ。
「省略が許されているから」という理由で、returnを書かないような奴がいてもクビ。

482 :デフォルトの名無しさん:2006/06/09(金) 18:42:37
ttp://diary.csh.sh/d200208b.html
いくつか検索してみると、void mainが一般的でなく
int mainにするといった内容は良く見かけるし、ANSI Cについても出てくるが
int mainにしたらexit(0)だのreturn 0だのって話は出てくるね。
よって、intって書いてreturnは要らないって言っている奴が一番バカ。
それ以外は問題なし。

483 :デフォルトの名無しさん:2006/06/09(金) 18:43:55
だぁ〜〜〜らおめーらうるせーーーー!
intで良いからreturn 0くらい書いておけYO!
<HTML>って書いたら</HTML>の閉じるを書くがごとく。
いや、それは単に括弧の話だからどーでも良いかw

484 :デフォルトの名無しさん:2006/06/09(金) 18:49:37
問題はmainの返り値が何型かじゃない、int mainって書いておいて
returnなしかよ?って話。returnなしならvoidか?ってことについては・・・議論せず
int main returnはセットで使え!以上。

485 :デフォルトの名無しさん:2006/06/09(金) 20:48:47
>>455
aは正規化されていて、左手系を使うとする。
Vector3 vrot(Vector3 v, Vector3 a, double t) {

Vector3 r = { ((1.0-cos(t))*a.x*a.x+cos(t) )*v.x+((1.0-cos(t))*a.x*a.y-sin(t)*a.z)*v.y+((1.0-cos(t))*a.x*a.z+sin(t)*a.y)*v.z
, ((1.0-cos(t))*a.y*a.x+sin(t)*a.z)*v.x+((1.0-cos(t))*a.y*a.y+cos(t) )*v.y+((1.0-cos(t))*a.y*a.z-sin(t)*a.x)*v.z
, ((1.0-cos(t))*a.z*a.x-sin(t)*a.y)*v.x+((1.0-cos(t))*a.z*a.y+sin(t)*a.x)*v.y+((1.0-cos(t))*a.z*a.z+cos(t) )*v.z };
return r;

}

486 :デフォルトの名無しさん:2006/06/09(金) 20:58:18
>>439が忘れられていそうだ。


487 :デフォルトの名無しさん:2006/06/09(金) 21:14:57
だから認められているとかこの際どーでも良い。「一部」でしか通用しないのは却下の方向で。
一応こういう場所では使用のコンパイラも書かせているけど
どの道 int main() {return 0;}でエラーを起こしたり、不適切だと指摘するコンパイラは
たぶんないだろうってことで。

488 :デフォルトの名無しさん:2006/06/09(金) 21:25:43
ここは宿題を勝手に解くスレなんだから、規格で認められていることは何をやっても良いと思うが。
個人的には、認められていないことをやっても良いと思うけど。

489 :488:2006/06/09(金) 21:28:06
ごめん、解答のことじゃなかったな。

でも、なんだろうと他人のコードに難癖を付けるのはこのスレの趣旨にかなわないと思う。

490 :デフォルトの名無しさん:2006/06/09(金) 21:35:09
> 問題はmainの返り値が何型かじゃない

まぁ、こんなこと書ける程度の無知蒙昧が出てきたことがこのスレの不幸だなぁw


491 :デフォルトの名無しさん:2006/06/09(金) 22:06:19
どうやら先生がこのスレッドを見ている件について.
ここの解答と先生の模範解答が酷似している。。。

492 :デフォルトの名無しさん:2006/06/09(金) 22:22:01
>>491
んなわけねぇだろwww
大学の課題なんて去年の問題とほとんど変わっていない
つまり、ここで答えてくれてる人が問題の意図を非常に汲み取ってるだけ

493 :デフォルトの名無しさん:2006/06/09(金) 22:27:01
>>491
センセイがこのスレでも解答している、という説はどうだw

494 :デフォルトの名無しさん:2006/06/09(金) 22:28:36
あるあ・・・ね〜よ?www

495 :491:2006/06/09(金) 22:31:28
いや。かなり確証の高い話。
授業中に、レポートを写している人がいますが、そういったことは止めましょうねという話があったんだ。
んで、その話の中でインターネットの掲示板で解答を聞いている人が居ますが、その解答と全く同じモノを提出している人が多数いるので
その人たちの成績を下げておきます と言ったんだよ。マジデ。
んで、その先生の模範解答が、ここの掲示板の解答と酷似してるんだよ。

つまり、この掲示板で先生が解答してい(ry
|彡 サッ

496 :デフォルトの名無しさん:2006/06/09(金) 23:06:41
先生もこのスレで聞いているんだッ!

497 :デフォルトの名無しさん:2006/06/09(金) 23:17:05
宿題スレ見てると、結構無能教官多いなあと思うよ。
特にC++。


498 :デフォルトの名無しさん:2006/06/09(金) 23:21:30
いや寧ろ、>423みたいな屁の足しにもならないような問題作る教官にこそ
この板で勉強してほしいと思うぞ。

499 :デフォルトの名無しさん:2006/06/09(金) 23:22:59
このあいだの中学生日記でもやっていたね。
ネットを使って宿題を済ませると。

500 :デフォルトの名無しさん:2006/06/09(金) 23:25:35
>>499
読書感想文の話か?
賞を貰った後に発覚したとかなんとか。

501 :デフォルトの名無しさん:2006/06/09(金) 23:27:41
うちの先生もたぶん見てる。
ここに問題乗せられると、問題変更されてるし

502 :デフォルトの名無しさん:2006/06/10(土) 00:14:33
>>500
そうそれ。
小2と小4の子供が見ているから、毎週見ている。

503 :デフォルトの名無しさん:2006/06/10(土) 00:16:13
(´・ω・`)家族がいるのか。。。
(´・ω・`)おれは一人寂しいプログラマー。。。


504 :デフォルトの名無しさん:2006/06/10(土) 00:17:37
たまに、解答者をうまく誘導しようと苦心しているのが
にじみ出てるようなすてきな問題もあって、
そーいうのみてると、「みんなこれだけはスルーしてよ」って思うよ。

505 :デフォルトの名無しさん:2006/06/10(土) 00:33:40
いつのまにかC/C++の宿題に関わる者の愚痴スレに

506 :デフォルトの名無しさん:2006/06/10(土) 00:35:07
まあ愚痴半分、宿題代行半分でいいんちゃう?

507 :デフォルトの名無しさん:2006/06/10(土) 06:02:53
涙ぐましい先生もいたもんだ

508 :デフォルトの名無しさん:2006/06/10(土) 08:02:02
>>495
そんな学校・・・将来パクリしかできない人材しか育ちそうにないなぁw
まぁ、所詮学校で習うC言語なんざ、初歩的で既に分かりきっているものばかりだけどね。
それすら自力でできないんじゃ終わってるけど・・・

509 :デフォルトの名無しさん:2006/06/10(土) 11:17:10
精神面で言えば、人に教えてもらってばっかだとプログラムが
自分が思ったとおりに動いたときの喜びって全くないよね。
そこが醍醐味だと思うんだけど。


510 :デフォルトの名無しさん:2006/06/10(土) 11:55:17 ?#
>>495
ネタ回答に釣られてそれを模範解答にしてしまう神教官キボンw

>>497
禿道。こないだのvolumeクラスは凄い破壊力だった。

511 :デフォルトの名無しさん:2006/06/10(土) 18:29:39
先生、C言語がしたいです・・・
ポインタの使い方が分からないです・・・
性帝トーマス殿、手ほどきプリーズ

512 :デフォルトの名無しさん:2006/06/10(土) 18:41:08 ?#
>>511
お前が繁殖可能な女なら実技指導してやるがそうでないなら他を当たれ。

513 :デフォルトの名無しさん:2006/06/10(土) 18:50:45
えぇ〜〜い、ならば解説しているサイトで勉強してくるから良いYO!

514 :デフォルトの名無しさん:2006/06/12(月) 02:40:22
C/C++の宿題を片付けます 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149350525/

515 :デフォルトの名無しさん:2006/06/13(火) 01:47:16
[1] 授業単元:計算機プログラミング
[2] 問題文(含コード&リンク):
x,y,z,w を、要素数 n の int 配列とする。
x[i] + y[j] + z[k] + w[l] = 0 をみたす添え字 i,j,k,l の組み合わせの個数を求める
効率的なプログラムを書け。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 6/13 23:59
[5] その他の制限:
O(n^4) より効率的な解法をお願いします。
末尾再帰を利用せよ(?)

よろしくお願いします。

516 :デフォルトの名無しさん:2006/06/13(火) 09:30:09
#define _n 10

int _23_main(void)
{
// 配列にデータを入れるのは自分でやってくれ
int x[ _n ];
int y[ _n ];
int z[ _n ];
int w[ _n ];
int i, j, k, l;
int a = 0, s;
for ( i = 0; i < _n - 1; i++ ) for ( j = _n - 1; j > i; j-- ) if ( w[ i ] > w[ j ] ) w[ i ] ^= w[ j ] ^= w[ i ] ^= w[ j ];
for ( i = 0; i < _n; i++ ) {
for ( j = 0; j < _n; j++ ) {
for ( k = 0; k < _n; k++ ) {
s = x[ i ] + y[ j ] + z[ k ];
for ( l = 0; l < _n && s + w[ l ] <= 0; l++ ) {
if ( s + w[ l ] == 0 ) a++;
}
}
}
}
printf( "組み合わせ個数 = %d\n", a );
return 0;
}

517 :デフォルトの名無しさん:2006/06/13(火) 09:45:39
>>516
それだとO(n^4)だろ。
最後で二分探索すればO(n^3 log n)になるけど。

518 :デフォルトの名無しさん:2006/06/13(火) 10:16:41
二分探索www

519 :デフォルトの名無しさん:2006/06/13(火) 19:12:46
[1] 授業単元: プログラミング基礎講義及び演習
[2] 問題文(含コード&リンク):
一つの入力値に対して階乗計算を行い、結果を出力するプログラムを作成せよ。
ただし、次の仕様に基づいた関数を作成するものとし、main関数とfct関数は一つのファイル上に作成するものとする。
  プロトタイプ宣言: int fct(int n);

(2)二つの入力値に対して順列計算を行い結果を出力するプログラムを作成せよ。
ただし、次の仕様に基づいた関数を作成するものとし、main関数とprm関数は一つのファイル上に作成するものとする。
  プロトタイプ宣言: int prm(int n, int r);

(3) (1)(2)で作成したプログラムを関数ごとにファイル分割する。ヘッダファイルも作成し、実際に分散コンパイルができることを確認せよ。

(4) (3)で作成したプログラムに対するMakefileを作成し
   makeコマンドを使って分散コンパイルが自動化できることを確認せよ。
   このとき、(3)で分割したファイルのそれぞれを編集、
   コンパイルしたときのmakeコマンドの動作をタイムスタンプの観点から考察せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 2006年6月19日23:59
[5] その他の制限:特にないです。なるべく簡単に仕上げてくだされば…

520 :デフォルトの名無しさん:2006/06/13(火) 19:13:53
↑すいません
階乗が(1)です
よろしくお願いします

521 :デフォルトの名無しさん:2006/06/13(火) 19:19:53
>>520
(1)
http://pc8.2ch.net/test/read.cgi/tech/1147375815/744

522 :デフォルトの名無しさん:2006/06/14(水) 00:37:30
[1] 授業単元: 数値解析
[2] 問題文

y=3x^n+4x+5 のx=1.0における微分値を、
n=2、6、10の場合について求めるプログラムを作成せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gccです。バージョンは分かりません。
 [3.3] 言語:C言語
[4] 期限: 14日までです。
[5] その他の制限:特に無いです。

宜しくお願いします。


523 :デフォルトの名無しさん:2006/06/14(水) 00:53:20
>>522
本スレのやつと同じ臭いな。
解答出てるだろ?


524 :デフォルトの名無しさん:2006/06/14(水) 00:53:52
>>522
f(x,n)=y=3x^n+4x+5
xで微分して
f'(x,n)=3nx^(n-1)+4
x=1.0を代入して
f'(1.0,n)=3n(1.0)^(n-1)+1
んで
n=2,6,10を代入すればいいんちゃう?

これ以外だと、x=1.0まわりでのテイラー展開を項別微分するとか?←意味不明


525 :デフォルトの名無しさん:2006/06/14(水) 15:45:00
[1] 環境 [1.1] OS: linux[1.2] コンパイラ名とバージョン: gcc[1.3] 言語: C

#include<stdio.h>
int main(void){
char a[0xff], b[0xff], *p, *q;
printf("Please input first words:");gets_s(a, sizeof(a));
printf("Please input second words:");gets_s(b, sizeof(b));
for(q = b; *q != NULL; q++);
for(p = a; *p != NULL; *q = *p, p++, q++);*q = NULL;
printf("Connected words:");puts(b);
for(p = a, q--; q >= b; *p = *q, p++, q--);*p = NULL;
printf("Backwared arranged words:");
puts(a);
return 0;
}

というプログラムに対して出力

srck6-8.c: 関数 `main' 内:
srck6-8.c:11: 警告: ポインタと整数との比較を行なっています
srck6-8.c:12: 警告: ポインタと整数との比較を行なっています
srck6-8.c:13: 警告: 代入により、キャストなしでポインタから整数を作りました
srck6-8.c:16: 警告: 代入により、キャストなしでポインタから整数を作りました
/tmp/ccuNzOR5.o(.text+0x31): In function `main':
: undefined reference to `gets_s'
/tmp/ccuNzOR5.o(.text+0x53): In function `main':
: undefined reference to `gets_s'
collect2: ld はステータス 1 で終了しました


となってしまい、わけがわかりません(ノД`)どこに不具合があるのでしょうか?教えてくださいお願いします

526 :デフォルトの名無しさん:2006/06/14(水) 15:53:16
不具合はいっぱいありそうだけど、実行形式ファイルが出来ないのは、

>> undefined reference to `gets_s'

ここに問題があります。

527 :デフォルトの名無しさん:2006/06/14(水) 16:36:35
>>525
gets_sはVisual C++ 2005独自。そのほかには(少なくとも今のところ)無い。

528 :デフォルトの名無しさん:2006/06/14(水) 16:40:50
ヒント:微分を微小区間の傾きと考える
つまり、
double func_y(double x, int n){return (3 * pow(x, n) + 4 * x + 5);}
これを
main内で
double x = 1.0; h = 0.001;
(func_y(x + h, 2) - func_y(x - h, 2)) / (2 * h)
と呼び出せば

高校数学だっけ?

529 :デフォルトの名無しさん:2006/06/14(水) 16:58:16
[1]C言語プログラミング演習2
[2]
ポインタ 6−22
先々週の課題で作成した単元の取得単位と点数を元に、
総合成績を計算するプログラムを元に、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2063.txt
これを読み込んだ数値を入れる配列を指すポインタを使用した形に書き換えなさい。
尚、配列は1次元配列を使用する事。
また、関数は特に必要は無い。
※総合成績の計算式はGPA方式を用いる事
GPA={(科目1の単位*成績)+(科目2の単位*成績)…(科目nの単位*成績)}/総単位数
科目の成績はS(90〜100点)=4、A(80〜89点)=3、B(70〜79点)=2、C(60〜69点)=1
それ以下(評価D)は0とする。
[3]OS:Vine Linux コンパイラ:gcc 言語:C言語
[4]6月15日
よろしくお願いします

530 :デフォルトの名無しさん :2006/06/14(水) 18:09:25
>>529
せめてソースを人に見せるなら
コメントいれとこーよ

531 :デフォルトの名無しさん:2006/06/14(水) 18:09:52
以下のように円周率の近似値を求めるプログラムを作りました。
#include <stdio.h>
#include <math.h>
int main(void)
{
int n;
double x,h,l,pi;
pi=3.14159265358979323846264338;
printf("何角形?");
scanf("%lf",&n);

x = (pi*(n-2.0))/(2.0*n);
h = cos(x);
l = h*n;

printf("l = %17.16e",l);
return 0; }
それで、コンパイルはできるのですが値が出てこないのです。
C++でscanfをcinにprintfをcoutにしたところちゃんと値が出てきたので
scanfとprintfの使い方が間違っていると思うのですが、
どこが間違っているのか1時間以上考えてもわからないんです…
もしわかる方がおられましたら教えてください。

532 :デフォルトの名無しさん:2006/06/14(水) 18:14:13
>>531 scanf("%d",&n);

533 :デフォルトの名無しさん:2006/06/14(水) 18:17:51
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2064.txt
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限: 6月16日まで
[5] その他の制限: 習ったもの if switch do while for ローカル変数 グローバル変数
お願いします

534 :デフォルトの名無しさん:2006/06/14(水) 18:20:49
>>532
すみません。超初歩的なことみたいだったですね。
lfとdの意味を勉強します。ありがとうございました!!

535 :デフォルトの名無しさん:2006/06/14(水) 18:45:08 ?#
>>533
クソ問題の予感。
int zero_one(int n,int m){ return n & (1 << m); }

536 :デフォルトの名無しさん:2006/06/14(水) 18:46:13 ?#
0オーダーか。
int zero_one(int n,int m){ return n & (1 << (m-1)); }

537 :デフォルトの名無しさん :2006/06/14(水) 18:52:24
>>533
int zero_one(int n,int m)
{
return n&(1<<m);
}

538 :537:2006/06/14(水) 18:53:47
なんだよ、だぶりまっくてんじゃねーかよ
書くんじゃなかった

539 :1:2006/06/14(水) 18:56:07
[1] 授業単元: 情報処理演習
[2] 問題文(含コード&リンク):二分探索でデータを見つけるプログラムを作
成し,実行せよ.ただし,以下の仕様を満たすものとする.
<仕様>
1.対象とするデータ構造は,
struct SportsClub kaiin[] = { 555, "Yuki TERADA", 222, "Kaho KANO",
789, "Yuko FUKUDOME", 444, "Seiko ANDO",
456, "Mai YUKAWA", 666, "Kyoko KAMIDOHZONO",
123, "Yuasa OKADA", 777, "Aya SAKATA",
111, "Yua SAITOU", 333, "Noriko KIJIMA",
569, "Shihori YOKOHARI", 689, "Chieko NOGUCHI",
345, "Ikuko OURA", 994, "Airi TAKASAKI",
103, "Mizuna INOUE", 888, "Yuna SATONAKA"
};
と初期化すること.また,この構造体は,
struct SportsClub
{
int id_num;
char name[80];
};と定義すること.

540 :デフォルトの名無しさん:2006/06/14(水) 18:56:08 ?#
>>537-538
気にするな。悪いのは出題者だ。

541 :2:2006/06/14(水) 18:56:39
2.最初に,1のデータ構造をファイルoriginal_kaiin.dat(ASCII 型式)に保存
する.次に,クイックソートで上記データ構造を会員番号(id_num)にしたがっ
て昇順に並べ替えるとともに,その結果をsorted_kaiin.dat(ASCII 型式)に保
存する.ただし,クイックソートは,標準ライブラリ関数を用いず,各自作成
すること.
3.sorted_kaiin.dat を構造体配列kaiin2[KAIIN_NUM]に読み込み,これを二分
探索に用いる.ただし,本課題の場合,KAIIN_NUM は16 である.
4.二分探索は,会員番号を打ち込めば,該当する氏名を表示させるものとす
る.また,会員一名分の情報を表示させた後,終了・続行の希望を使用者に質
問させ,回答を基にその後動作を決定させること.
<入出力例>
Please input ID#: 123
ID#:123 Name:Yuasa OKADA
Continue? y/n: y←続けるとき,y を打ち込む
Please input ID#: 0
Not found!
Continue? y/n: y
Please input ID#: 345
ID#:345 Name:Ikuko OURA
Continue? y/n: n←これで終了
[3] 環境
 [3.1] OS: linux red hat
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C+
[4] 期限:6/20
[5] その他の制限:ながながと問題文を書いてすみませんどうかおねがいしますorz

542 :デフォルトの名無しさん:2006/06/14(水) 19:02:33
1がない

543 :デフォルトの名無しさん:2006/06/14(水) 19:18:34 ?#
>>539
構造体の定義と初期化は自分で埋め込んでくれ。
#include<stdio.h>
#include<stdlib.h>
int sccmp(const void* a,const void* b){return ((struct SportsClub*)a)->id_num-
((struct SportsClub*)b)->id_num;}
int bsearch(int n,int left, int right){int c=(right-left)/2;if(c==0)return -1;
return (kaiin[left+c].id_num>n)?bsearch(n,left+c,right):bsearch(n,left,left+c);}
int main(void){char tmp[100];int n,i;qsort(kaiin, sizeof(kaiin)/sizeof(struct SportsClub),
sizeof(struct SportsClub),sccmp);printf("会員番号:");fgets(tmp,sizeof(tmp),stdin);
n=atoi(tmp);i=bsearch(n,0,sizeof(kaiin)/sizeof(struct SportsClub)-1);
if(i>=0)printf("名前:%s\n",kaiin[i].name);else printf("そんな人いません\n");
return 0;}

544 :デフォルトの名無しさん:2006/06/14(水) 19:25:21
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:6/16 23:59まで
問題
スタック、キューを使い後置記法の計算をするプログラミングです。
長いのでいかにアドレスを載せます。よろしくおねがいします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2066.txt

545 :デフォルトの名無しさん:2006/06/14(水) 19:29:20 ?#
>>541
ってクイックソートも作るのか。最近どこかで見たような気がするので省略。

546 :デフォルトの名無しさん:2006/06/14(水) 19:51:37
本当に初心者の質問で申し訳ないんですが
f(1)+f(2)+f(3)+…+f(n)
の計算がどうやっても思い浮かびませんノД`)
どなたか教えていただけませんか?

547 :デフォルトの名無しさん:2006/06/14(水) 20:16:42 ?#
for(i=0;i<n;i++)x+=f(i);

548 :デフォルトの名無しさん:2006/06/14(水) 20:23:34 ?#
>>533
もひとつあったか。
int zero_one(int n,int m){ return n & (1 << (m-1)); }
void disp(int n){int i;for(i=0;i<8;i++)putchar(zero_one(n,8-i)?'*':' ');putchar('\n');}

549 :デフォルトの名無しさん:2006/06/14(水) 20:27:38
うpロダの使い方を覚えましょうね、性帝トーマスさん

550 :デフォルトの名無しさん:2006/06/14(水) 20:30:59 ?#
>>533
完全版。
#include<stdio.h>
int zero_one(int n,int m){ return ((n & (1 << (m-1)))!=0); }
void disp(int n){int i;for(i=0;i<8;i++)putchar(zero_one(n,8-i)?'*':' ');putchar('\n');}
int main(){int i,n[8];char tmp[100];for(i=0;i<8;i++){printf("%i番目の整数:",i);
fgets(tmp,sizeof(tmp),stdin);n[i]=atoi(tmp);}for(i=0;i<8;i++)disp(n[i]);return 0;}

>>549
ファイル化するの自体マンドクセ。ほとんどのコードはフォームに直書き。

551 :デフォルトの名無しさん:2006/06/14(水) 20:33:17
>>550
相変わらずコンパイルエラーを出すわけだがw

552 :デフォルトの名無しさん:2006/06/14(水) 20:37:02 ?#
>>551
#include<stdlib.h>

553 :デフォルトの名無しさん:2006/06/14(水) 20:38:44
>>552
質問したわけでもない俺にレスしてもw

554 :デフォルトの名無しさん:2006/06/14(水) 21:02:07 ?#
>>553
突っ込まれたら修正。これ基本。

555 :デフォルトの名無しさん:2006/06/14(水) 21:06:58
そか、それはご丁寧に。是非とも高学歴な人の就職先にお勧めの会社として
貴社をホワイトリストに入れたいんだが、なんて会社ですか?wktk

556 :デフォルトの名無しさん :2006/06/14(水) 23:13:42
>>544
Queueは構造体?

557 :デフォルトの名無しさん:2006/06/14(水) 23:30:44
>>556
すみません。書き忘れてました。構造体です。
typedef sturct{
Node *head;
}Queue;
です。

558 :デフォルトの名無しさん:2006/06/15(木) 00:00:49
>>557
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2068.txt

559 :544:2006/06/15(木) 00:21:58
>>558説明不足すみませんでした。あと、知らんがなプログラムありがとうございました。
問題文を全部載せますのでどなたかよろしくおねがいします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2070.txt

560 :デフォルトの名無しさん:2006/06/15(木) 00:56:16
>>559
まずは、問1
void push(Stack *st, ElementType n){
insert(st->top, n);
}

ElementType pop(stack *st){
ElementType e = st->top->element;
del(st->top);
return e;
}

int is_empty_stack(Stack *st){
return (st->top->next == NULL ? 1 : 0);
}


561 :デフォルトの名無しさん:2006/06/15(木) 01:05:16
本当にありがとうございます。
あと>>544
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
でした。すみません。でも上のはgccでOKっぽいです

562 :デフォルトの名無しさん:2006/06/15(木) 01:14:39
問ニ
void put(Queue *q,ElementType n){
insert(q->head, n);
}

ElementType get(Queue *q){
node *p = q->head;
ElementType e;
while(p->next->next != NULL)
p = p->next;
e = p->next->element;
del(p);
return e;

}
int is_empty_queue(Queue *q){
return (q->head->next == NULL ? 1 : 0);
}

563 :デフォルトの名無しさん:2006/06/15(木) 01:30:24
>typedef enum{VAL,ADD,SUB,MUL,DIV,LPAR,NONE}Kind;
>/*ADD+,SUB-,MUL*,DIV/,LPAR(,RPAR),にそれぞれ対応*/
RPARが定義されてなひ

564 :デフォルトの名無しさん:2006/06/15(木) 01:34:08
typedef enum{VAL,ADD,SUB,MUL,DIV,LPAR,RPAR,NONE}Kind;
でした。ご指摘ありがとうございますm(_ _)m

565 :デフォルトの名無しさん:2006/06/15(木) 12:21:02
[1] 授業単元: 演習
[2] 問題文(含コード&リンク): 以下の手順にしたがって文字列を処理するプログラムを作成し,実行せよ.ただし,配列内各要素へのアクセスにはポインタを使用し,
関数(strcpy(), strcat(), strlen()等)は使用しないこと.
(1)2つの文字配列A, Bを用意する.
(2)文字配列A, Bに,対象文字列を格納する.
(3) B に格納された文字列の末尾に, A に格納された文字列を連結させ,それらを表
示させる.
(4)(3)の処理後, Bの文字列を逆順にAにコピーし,それらを表示させる.
入出力例)
Please input first words:abcd efgh (注:末尾にスペース有)
Please input second words:ijkl mnop (注:末尾にスペース有)
Connected words:ijkl mnop abcd efgh (注:末尾にスペース有)
Backwared arranged words: hgfe dcba ponm lkji(注:先頭にスペース有)
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6/15 16:59まで
おねがいしますおねがいします

566 :デフォルトの名無しさん:2006/06/15(木) 15:27:04
age

567 :デフォルトの名無しさん:2006/06/15(木) 19:44:14
>>565
もう遅いよな?
人あんまいないから早めに乗せないと…

568 :デフォルトの名無しさん:2006/06/15(木) 19:51:09
>>567
過去にも期限を延ばしてもらってた事があったようだし、回答してもいいと思うぞ。

569 :デフォルトの名無しさん:2006/06/15(木) 19:51:32
525の人なんだろうな…
gets_sをgetsにするだけなんだけどね…

570 :デフォルトの名無しさん:2006/06/15(木) 21:03:05
[1] 授業単元:演習U
[2] 問題文(含コード&リンク):
構造体配列xに5名分の氏名、年齢、身長を初期値代入し、最も身長が
高い人の氏名、年齢、身長を構造体aに代入し、aのデータを出力せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 6.0
 [3.3] 言語: C++
[4] 期限:6/16
[5] その他の制限: 特になし
よろしくお願いします。

571 :デフォルトの名無しさん:2006/06/15(木) 22:46:01
入力はキーボードから? ファイルから?
それとも初期値をハードコードしていいの?

572 :デフォルトの名無しさん:2006/06/15(木) 22:46:37
(ごめん読めてなかった。初期値ね…)

573 :デフォルトの名無しさん:2006/06/15(木) 22:55:10
>>570
#include <stdio.h>
#define NUMBER 5
typedef struct {
char name[20];
int old;
int height;
} a;
void swap(a *x, a *y)
{
a temp = *x;
*x = *y;
*y = temp;
}
void sort(a *data, int n)
{
int k = n - 1;
while (k >= 0) {
int i, j;
for (i = 1, j = -1; i <= k; i++)
if (data[i - 1].height > data[i].height) {
j = i - 1;
swap(&data[i], &data[j]);
}
k = j;
}
}

574 :デフォルトの名無しさん:2006/06/15(木) 22:55:43
int main(void)
{
int i;
a std[] = {
{"test1", 18, 195},
{"teston", 22, 123},
{"testet", 57, 175},
{"testst", 75, 142},
{"testetes", 12, 125},
};
sort(std, NUMBER);
for (i = 0; i < NUMBER; i++)
printf("%s %d %d\n",
std[i].name, std[i].old, std[i].height);
return (0);
}


575 :デフォルトの名無しさん:2006/06/15(木) 23:02:23
C++なのに構造体typedefとかprintfとかC的な技法を使ってるのは何で?

576 :デフォルトの名無しさん:2006/06/15(木) 23:16:03
>>573-574
無駄な努力ご苦労

577 :デフォルトの名無しさん:2006/06/15(木) 23:16:50
ちょwwwせっかくやってくれてるのにww

578 :デフォルトの名無しさん:2006/06/15(木) 23:30:35
>>575
ていうか完全なCだな
オサーンかなんかじゃないの?

579 :デフォルトの名無しさん:2006/06/15(木) 23:33:02
というか並べ替えて全員分出力する必要は無いんじゃ…

580 :デフォルトの名無しさん:2006/06/15(木) 23:34:41
[1] 授業単元:基礎
[2] 問題文(含コード&リンク)
キーボードから整数を入力し、キャストを用いてdoubleとして扱って、その数を2倍することを繰り返して
演算結果が1.0e+25を超えるのに、必要な2倍する回数とそのときの数を示すwhile文のプログラムを作れ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 明日の朝まで
お願いします。

581 :デフォルトの名無しさん:2006/06/15(木) 23:39:22
>>559
問題文なげぇし、つか後置記法良く分からんからパス
まぁ、がんばりな

582 :デフォルトの名無しさん:2006/06/15(木) 23:39:48
>>570
C++版
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
struct Prof {
std::string shimei;
int nenrei;
int shincho;
void set(std::string _shimei, int _nenrei, int _shincho){
shimei=_shimei; nenrei=_nenrei; shincho=_shincho;
}
};
class CompProf {
public:
bool operator()(const Prof& x, const Prof& y){
return x.shincho < y.shincho;
}
};


583 :デフォルトの名無しさん:2006/06/15(木) 23:40:59
std::ostream& operator<<(std::ostream& os, const Prof& p){
os << p.shimei << ' ' << p.nenrei << "歳 " << p.shincho << "cm";
return os;
}
int main(){
std::vector<Prof> x(5);
CompProf c;
x[0].set("abc",3,160);
x[1].set("def",10,165);
x[2].set("ghij",35,190);
x[3].set("klmn",21,150);
x[4].set("opqrst",40,170);
Prof a = *(std::max_element(x.begin(),x.end(),c));
std::cout << a << std::endl;
}


584 :デフォルトの名無しさん:2006/06/15(木) 23:42:45
ごめん
return 0;
を適当に追加しておいて。

585 :デフォルトの名無しさん:2006/06/15(木) 23:44:00
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
キーボードから2つの数a,bを入力し縦がa文字、横がb文字の#でできた四角形を表示するプログラムを作成
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 明日の朝まで
[5] その他の制限:while文で作れということです(´・ω・`)
お願いします。

586 :デフォルトの名無しさん:2006/06/15(木) 23:47:20
>>584
大丈夫。C++ならmainでreturnを省略してもよい。
(intなどを返すよう宣言されていればreturn 0;になる)

587 :デフォルトの名無しさん:2006/06/15(木) 23:55:56
>>585
ちょっと強引だが...
#include <stdio.h>

int main(void) {
int a,b,i,j ;
i=j=0 ;
printf("a?") ;
scanf("%d",&a) ;
printf("b?") ;
scanf("%d",&b) ;
while(1) {
if(i <= b) {printf("#") ; i++ ;}
else{printf("\n"); i=0 ; j++ ;}
if(j >= a) break ;
}
}


588 :デフォルトの名無しさん:2006/06/16(金) 00:02:26
>>587
問題的にそういう意味でwhileを使えって事じゃないと思う…

589 :585:2006/06/16(金) 00:03:45
>>587
すいません。。。
まだvoidとか習ってないんです・・・

590 :デフォルトの名無しさん:2006/06/16(金) 00:05:50
voidなくても動くから消せば

591 :587:2006/06/16(金) 00:07:22
>>585
そのソースでOKなの?
>>588が指摘してくれた通り、完全に俺の問題文理解ミスだと思うのだが…。

592 :585:2006/06/16(金) 00:09:09
いやちょっと違うっぽいです。。

593 :デフォルトの名無しさん:2006/06/16(金) 00:12:01
>>585
ユーザが止めることを指示するまで、whileでループするプログラムってことでおk?

594 :デフォルトの名無しさん:2006/06/16(金) 00:12:44
#include<stdio.h>
int main(){
int a,b,i,k;
printf("a:");
scanf("%d",&a);
printf("b:");
scanf("%d",&b);
i = 0;
k = 0;
while(i < a){
putchar('#');
i++;
}
putchar('\n');
while(k < b -2){
i = 0;
putchar('#');
while(i < a-2){
putchar(' ');
i++;
}
puts("#");
k++;
}
i = 0;
while(i < a){
putchar('#');
i++;
}
return 0;
}


595 :デフォルトの名無しさん:2006/06/16(金) 00:13:18
横は#が一個多くね

596 :デフォルトの名無しさん:2006/06/16(金) 00:13:35
単純に for 文のような while 文を書くってことなんじゃ?

597 :585:2006/06/16(金) 00:14:58
あっ!!
>>596さんの言ったとおりです!

598 :デフォルトの名無しさん:2006/06/16(金) 00:15:43
>>594
でだめなの?

599 :デフォルトの名無しさん:2006/06/16(金) 00:18:16
while(a--){while(b--){putchar('#');}putchar('\n');}

whileの条件部でカウンタをデクリメントする技法に思い至って欲しい、
という出題意図と思われ。

600 :デフォルトの名無しさん:2006/06/16(金) 00:18:55
あ、ごめんスコープの概念ぶっとばしてたわw

601 :585:2006/06/16(金) 00:20:06
putcharとかputsもまだ習ってないんです!!
ごめんなさい;

602 :デフォルトの名無しさん:2006/06/16(金) 00:20:08
あらかじめint temp が宣言されているとして

temp=b;
while(a--){while(b--){putchar('#');}putchar('\n');b=temp}

603 :デフォルトの名無しさん:2006/06/16(金) 00:21:12
temp=b;
while(a--){while(b--){printf("#");}printf("\n");b=temp;}

604 :585:2006/06/16(金) 00:26:44
tempってのも習ってないです。。

605 :デフォルトの名無しさん:2006/06/16(金) 00:27:26
ただの変数名だよ

606 :デフォルトの名無しさん:2006/06/16(金) 00:29:13
っていうか>>603を見て前後のコード(変数を宣言するとかscanfするとかreturnするとか)
を補えないようじゃまずいと思うんだが……

607 :デフォルトの名無しさん:2006/06/16(金) 00:29:23
>>581
問題文見にくくてすみませんでした。それに後置記法についても自分も良く分からないので
説明できません。本当にゴメンナサイ。
でも問1、問2ありがとうございました。

608 :デフォルトの名無しさん:2006/06/16(金) 00:30:07
あ、もしかして今までの授業、変数名はみんな n とか x とか意味の無い1,2文字の名前だったりしてた?

609 :デフォルトの名無しさん:2006/06/16(金) 00:31:04
後置記法 =逆ポーランド記法

610 :585:2006/06/16(金) 00:33:10
>>608
そうでした!!

611 :デフォルトの名無しさん:2006/06/16(金) 00:34:28
後置記法の名前変わっても、意味の分からない607はポカーンしてると思うがな

612 :デフォルトの名無しさん:2006/06/16(金) 00:38:43
ぐぐりやすくはなっただろ

613 :デフォルトの名無しさん:2006/06/16(金) 00:38:59
wごめんなさい、そのとうりです。
でも情報ありがd。ってことでググってきます

614 :デフォルトの名無しさん:2006/06/16(金) 01:09:49
おかげさまで、後置記法は少し理解できました。でもプログラミングは無理みたいですorz

615 :585:2006/06/16(金) 01:09:56
自分で考えてみましたけどやっぱりわかりません(´;ェ;`)

616 :デフォルトの名無しさん:2006/06/16(金) 01:19:29
#include <stdio.h>
int main(){
int a, b, temp;
printf("tate = ");scanf("%d", &a);
printf("yoko = ");scanf("%d", &b); temp = b;
while(a--){while(b--){printf("#");}printf("\n");b=temp;}
return 0;
}
補っただけだけど

617 :デフォルトの名無しさん:2006/06/16(金) 01:21:57
>>616が出しちゃったけどせっかくだから出してみた
#include <stdio.h>

int main(void)
{
int a,b,i=0,j=0;
scanf("%d%d",&a,&b);
while (i<a){
while (j<b){
printf("#");
j++;
}
printf("\n");
j=0;
i++;
}
return 0;
}

618 :デフォルトの名無しさん:2006/06/16(金) 01:25:31
正直スマンカッタ

619 :デフォルトの名無しさん:2006/06/16(金) 01:59:37
aのb乗をzに格納したい場合ってどうすればいいんでしょうか?

言語はCです。

620 :デフォルトの名無しさん:2006/06/16(金) 02:03:50
>>619
次からはテンプレ嫁
上(数学関数)でも下でも好きな方使え
#include <stdio.h>
#include <math.h>

int main(){
int b = 5;
double a = 1.3, z;
z = pow(a, b);
printf("%g\n", z);

z = 1.0;
while(b--)z *= a;
printf("%g\n", z);
}

621 :デフォルトの名無しさん:2006/06/16(金) 02:06:42
糞コンパイラでもなければFPUの命令を直に読んでくれるから迷わずpow使え。
実装汁って課題ならしょうがないが…

622 :デフォルトの名無しさん :2006/06/16(金) 02:42:47
こんな事書くと
自治厨とか言われるかもしれないですが
よく「まだ・・・は習っていません」
ってのを質問者が回答者にレスしてるのをみるんですが
(ま、実際、自分もそんなレスを返されたことあります)
自分はCもC++も独学で勉強した身で、「まだ・・・は習っていません」
ていう書き込みを見ると、内心「学生なんだろうから、参考書とかも安く
手に入るだろうし、まだ習ってない事柄を先に学べば後から講義で
出された宿題に対して、応用きくし単位の修得等も講義すっぽかして
友達に代返してもらって、宿題だけ友達から聞いて
先に習得した事柄をつかって、コメント書いて、って感じで宿題終わらせれば
評価もあがるだろうし、そんで空いた時間等を
遊ぶなりバイトするなりなんかに割り当てて(もちろん独学も進めて)
たまに講義出て「ああ、いまこの段階の事をやってるのかって」って知って、
独学した部分に追いついてなかったら、すっぽかした分を補完し独学進めて」
ってな感じでやれば、楽だろうと思うし、知識も広がると思う。
だから「まだ・・・は習っていません」って言いたい場合は、「まだ習ってない事柄ですが
その・・・について勉強してみます」って言った方が回答者も納得すると思う。
俺が大学当時のインターネットと言えばテレホーダイをNTTに申請して
20時からインターネット始めて、かつ(自分は電気電子工学科卒)電気電子関連
の資料なんて、ろくになかった。けど、今の時代プログラミング言語習得するのに
ネットからでも結構資料はあると思う。

ま、結局言いたいのは「まだ・・・は習っていません」==「習うまで使いません」
==「自ら知識の探求をする事はいたしません」って言ってるのと同じだと思うので
独学していきましょう。

(情報工学科って代返利くのかな?ログインすることで、出席取るのかな
ま、しらねーや)

623 :デフォルトの名無しさん:2006/06/16(金) 02:56:50
こんな事書くと
自治厨とか言われるかもしれないですが
よく「まだ・・・は習っていません」
ってのを質問者が回答者にレスしてるのをみるんですが
(ま、実際、自分もそんなレスを返されたことあります)
自分はCもC++も独学で勉強した身で、「まだ・・・は習っていません」
ていう書き込みを見ると、内心「学生なんだろうから、参考書とかも安く
手に入るだろうし、まだ習ってない事柄を先に学べば後から講義で
出された宿題に対して、応用きくし単位の修得等も講義すっぽかして
友達に代返してもらって、宿題だけ友達から聞いて
先に習得した事柄をつかって、コメント書いて、って感じで宿題終わらせれば
評価もあがるだろうし、そんで空いた時間等を
遊ぶなりバイトするなりなんかに割り当てて(もちろん独学も進めて)
たまに講義出て「ああ、いまこの段階の事をやってるのかって」って知って、
独学した部分に追いついてなかったら、すっぽかした分を補完し独学進めて」
ってな感じでやれば、楽だろうと思うし、知識も広がると思う。
だから「まだ・・・は習っていません」って言いたい場合は、「まだ習ってない事柄ですが
その・・・について勉強してみます」って言った方が回答者も納得すると思う。
俺が大学当時のインターネットと言えばテレホーダイをNTTに申請して
20時からインターネット始めて、かつ(自分は電気電子工学科卒)電気電子関連
の資料なんて、ろくになかった。けど、今の時代プログラミング言語習得するのに
ネットからでも結構資料はあると思う。

ま、結局言いたいのは「まだ・・・は習っていません」==「習うまで使いません」
==「自ら知識の探求をする事はいたしません」って言ってるのと同じだと思うので
独学していきましょう。

(情報工学科って代返利くのかな?ログインすることで、出席取るのかな
ま、しらねーや)



624 :デフォルトの名無しさん:2006/06/16(金) 03:05:38
宿題丸投げするくらいなんだから目立たないほうがいいだろ。
みんなと同じような無難な回答したいだけだよ。
そんなに勉強熱心なら、そもそもこんなとこに質問しないだろ。

625 :デフォルトの名無しさん:2006/06/16(金) 03:06:53
それと、情報工学科って、なんかサイバーSFみたいな想像してる?w
いたって普通ですから。教科書で勉強がデフォ。

626 :619:2006/06/16(金) 04:07:08
>>620をコンパイルしようとするとなんかエラーが。。。。。。
とりあえずwhileでやりたいので、自分なりに下のように書いてみましたが、
論理エラーが出てしまいます。whileループ内が可笑しいのでしょうか。。。。

#include <stdio.h>
main(){
int a,b,c,y,z;
a=b=c=0;
z=y=1;
printf("数字を入力して下さい");
scanf("%d",&a);
printf("%dの何乗にしますか?",a);
scanf("%d",&b);
c=b;
while(--c){
y=a*a;
z=z*y;
}
printf("%dの%d乗=%d\n",a,b,z);
return 0;
}

[1] 授業単元:?
[2] 問題文(含コード&リンク):aのb乗をzへ格納するプログラムの作成
[3] 環境
 [3.1] OS: FedoraCore4
 [3.2] コンパイラ名とバージョン:gcc 4.0.2-8
 [3.3] 言語:C
[4] 期限:なし
[5] その他の制限:出来ればループを使って

解答宣しくお願いします。

627 :デフォルトの名無しさん:2006/06/16(金) 04:14:07
>>626
原因は最後の return 0; 。これをつけるなら int main() にするか
消すなら main() あるいは void main() でどぞ

628 :デフォルトの名無しさん:2006/06/16(金) 04:17:34
>>626
っつか、さらに計算結果も不適切になるものもある。
不要かもしれんが0乗の対策も不十分。

629 :デフォルトの名無しさん:2006/06/16(金) 04:27:45
もっと単純に書けばいいのに。


630 :デフォルトの名無しさん:2006/06/16(金) 06:15:14
>>626 for文のほうがいいと思うんだけど(´・ω・`)
まあ置いときます

main(){
int a=0,b=0,c=0,z=0,t=0;

printf("数字を入力して下さい\n");
scanf("%d",&a);
printf("%dの何乗にしますか?\n",a);
scanf("%d",&b);
if(b==0) {printf("%dの%d乗=1\n",a,b); exit(-1);}
c=b;
t=a;
while(b-->0){ z=a; a=z*t;}

printf("%dの%d乗=%d\n",t,c,z);
}

631 :デフォルトの名無しさん:2006/06/16(金) 07:18:26
z=1;でwhile内 z*=aのほうがよかった。tとか(゚听)イラネ、訂正

632 :デフォルトの名無しさん:2006/06/16(金) 11:56:55
[1] 授業単元:プログラミング通論
[2] 問題文(含コード&リンク):
両方向リストを使って抽象データ型としてのリストを作ることにする。insert関数を書け。
ただし、位置pはちょうどその場所にある節点を指すこと(1つ後でも前でもない)

listのデータ構造とinsert関数の頭書きは以下の通りである。
typedef struct node* link;
typedef link list;
typedef link position;
struct node {
elementtype element;
struct node *next, *previous;
};
void insert(list L, position p, elementype x)

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

633 :632:2006/06/16(金) 12:23:35
あと、typedef char elementtype; です

634 :632:2006/06/16(金) 12:58:24
まだまだ至らないところがありますが、これを改良する感じにしていただければ・・・
(おそらくLは用いないかと思われます)

void insert(list L, position p, elementype x) {
link n;
n = (link)malloc(sizeof(*n));
n->element = x;
p->previous->next = n;
n->next = p;
}

635 :634:2006/06/16(金) 13:26:42
解決しました。

636 :デフォルトの名無しさん:2006/06/16(金) 15:27:01
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク): フィボナッチ(Fibonacci)数列f(n)は,
f(n)=f(n−1)+f(n−2),ただし,f(1)=f(0)=1
と定義される.この数列の第1 項から第l 項までの各値とそれらの和を計算するプログラムを作成せよ。
ただし,for ループ,while ループ,do-while ループは使用不可とする.
また,各自が定義し,使用する関数については,それらのプロトタイプを必ず宣言すること.
<入出力例>
Please input number of terms:5 (l=5 の場合)
fibonacci(0)= 1 (第1項)
fibonacci(1)= 1 (第2項)
fibonacci(2)= 2 (第3項)
fibonacci(3)= 3 (第4項)
fibonacci(4)= 5 (第5項)
Sum of 5 terms:12 (第1項から第5項の和
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6/19
[5] その他の制限:よろしくおねがいします

637 :デフォルトの名無しさん:2006/06/16(金) 15:37:06
>>636
#include <stdio.h>

int fibonacci(int n){
int r;
if(n == 0 || n == 1 )r = 1;
else r = fibonacci(n - 1) + fibonacci(n - 2);
return r;
}

int main(){
int i, n, tmp, sum = 0;
printf("Please input number of terms:");
scanf("%d", &n);
for(i = 0; i < n; i++){
printf("fibonacci(%d) = %d\n", i, tmp = fibonacci(i));
sum += tmp;
}
printf("Sum of %d terms:%d", n, sum);
return 0;
}

638 :デフォルトの名無しさん:2006/06/16(金) 15:39:15
プロトタイプ宣言しなかったw
#include <stdio.h>
int fibonacci(int n);
int main(){
int i, n, tmp, sum = 0;
printf("Please input number of terms:");
scanf("%d", &n);
for(i = 0; i < n; i++){printf("fibonacci(%d) = %d\n", i, tmp = fibonacci(i)); sum += tmp;}
printf("Sum of %d terms:%d", n, sum);
return 0;
}
int fibonacci(int n){
int r;
if(n == 0 || n == 1 )r = 1;
else r = fibonacci(n - 1) + fibonacci(n - 2);
return r;
}


639 :デフォルトの名無しさん:2006/06/16(金) 15:48:28
forを使ってはいけません。

640 :デフォルトの名無しさん:2006/06/16(金) 15:50:07
計算過程じゃ使ってないが…
出力もダメってか

641 :デフォルトの名無しさん:2006/06/16(金) 15:52:43
じゃ再帰で
#include<stdio.h>
int fibonacci(int n);
void putfibonacci(int i,int n,int *sum);
int main(){
int l,sum=0;
printf("Please input number of terms:");
scanf("%d",&l);
putfibonacci(0,l,&sum);
printf("Sum of %d terms:%d\n",l,sum);
return 0;
}
int fibonacci(int n){
switch(n){
case 0:
case 1:
return 1;
default:
return fibonacci(n-1)+fibonacci(n-2);
}
}
void putfibonacci(int i,int n,int *sum){
int f=fibonacci(i);
*sum += f;
printf("fibonacci(%d)= %d\n",i,f);
if(i<n-1) putfibonacci(i+1,n,sum);
else return;
}

642 :デフォルトの名無しさん:2006/06/16(金) 16:11:09
>>636
#include <stdio.h>

unsigned int fibonacci( unsigned int n );
unsigned int fibonacci_out( unsigned int n );

unsigned int fibonacci( unsigned int n )
{
if ( n <= 1 ) return 1; return fibonacci( n - 2 ) + fibonacci( n - 1 );
}

unsigned int fibonacci_out( unsigned int n )
{
unsigned int s = 0, r;
if ( n == 0 ) return 0;
s = fibonacci_out( n - 1 );
s += r = fibonacci( n - 1 );
printf( "fibonacci(%u)= %u\n", n - 1, r );
return s;
}

int main( void )
{
unsigned int l;
printf( "Please input number of terms:" );
scanf( "%u", &l );
printf( "Sum of %u terms:%u\n", l, fibonacci_out( l ) );
return 0;
}


643 :デフォルトの名無しさん:2006/06/16(金) 16:16:04
上記のもので10を入れて結果を見ると・・・
どうしても最後は 143 になるね。1〜10までの和は55というのは分かっているとは思うが

644 :デフォルトの名無しさん:2006/06/16(金) 16:18:15
って、第n項の和か、すまそ

645 :デフォルトの名無しさん:2006/06/16(金) 16:51:14
>>642
あるぇ〜、トーマスだってバレバレなソースを貼っているのに
どうして自分のブログへのリンクを貼らないのぉ〜?

646 :デフォルトの名無しさん:2006/06/16(金) 16:53:35
>>645
お前氏ねよ

647 :デフォルトの名無しさん:2006/06/16(金) 17:00:33
>>646=トーマス
いい加減、必死になってきたな。お前のソースは分かりやすいから
ここに書き込む以上、どれがトーマスか、常に指摘してやるよw

648 :デフォルトの名無しさん:2006/06/16(金) 17:03:44
トーマスって何?

649 :デフォルトの名無しさん:2006/06/16(金) 17:05:23 ?#
>>647
この人バカなんじゃないの?

650 :デフォルトの名無しさん:2006/06/16(金) 17:06:45
そして釣りに反応してしゃしゃり出てきたバカが現れたとさw
2ch暦も浅いようだな、トーマスw

651 :デフォルトの名無しさん:2006/06/16(金) 17:07:13
>>647
お前頭おかしーんじゃねーの?
自覚症状無いのか?病院いけよ。

652 :デフォルトの名無しさん:2006/06/16(金) 17:09:03
>>651
反応して煽った時点でお前の方が重症だな。放置を知らないとはw

653 :デフォルトの名無しさん:2006/06/16(金) 17:12:20
まぁ、コンパイルエラーを出さず、横長じゃない時点でトーマスじゃないって分かっているが
コンパイルエラーについてどうこう言うと、まだお前はって言ってくるんだろう。
トーマスがバカだって証明されればそれで良い。トーマスに噛み付く粘着?
そんなものどうでも良い。トーマスを擁護している香具師、お前痛すぎw
どこの専門学校だよ?トーマスに可愛がられたければ、ブラックリスト入りしないように
せいぜいがんばれよw

654 :デフォルトの名無しさん:2006/06/16(金) 17:12:20
>>652
お前も氏ね

655 :デフォルトの名無しさん:2006/06/16(金) 17:13:09
>>653
誰としゃべってんだ?
妄想もたいがいにしろ

656 :デフォルトの名無しさん:2006/06/16(金) 17:14:12
>>653
学歴コンプレックス丸出しw

657 :デフォルトの名無しさん:2006/06/16(金) 17:17:35
専門学校在学中、あるいは卒業したものの仕事が無いニートでした

658 :デフォルトの名無しさん:2006/06/16(金) 17:21:07 ?#
>>636
昔作ったフィボナッチ数列を求めるコードを持ってきてみた。
int fibonacci(int n){double r5=sqrt(5);return (n<3)?1:
(int)((pow((1.0+r5)/2.0,n)-pow((1.0-r5)/2.0,n))/r5+0.5);}

ここに置いてある「なっちありがとう」のコア部分。
http://newsplus.jp/~thomas/

659 :デフォルトの名無しさん:2006/06/16(金) 17:21:59
>>645-657
お前らほんと邪魔。私怨か?私怨なら別の場所でやってくれ

660 :デフォルトの名無しさん:2006/06/16(金) 17:41:47
>>656
反応するお前が低学歴に焦っているのが滲み出てますね・・・要するに
トーマスもトーマスに噛み付く奴も放置すれば良いのに、何度言ったらお前らは(ry

661 :デフォルトの名無しさん:2006/06/16(金) 17:44:37
>>660

662 :デフォルトの名無しさん:2006/06/16(金) 17:45:43
>>661=>>656 分かりやすい反応だなぁ、をいっ。もはやトーマスは関係ない。
こんなところで質問する奴はトーマスのエサ。食いつぶされても「何も問題ないっすよ?」

663 :559:2006/06/16(金) 17:51:29
皆様のおかげで自己解決することが出来ました。
ありがとうございましたm(_ _)m

664 :デフォルトの名無しさん:2006/06/16(金) 18:27:10 ?#
>>636>>646
せっかくだから書いてみた。
http://c-kadai.sakura.ne.jp/index.php?itemid=21

665 :デフォルトの名無しさん:2006/06/16(金) 20:07:07
>>662
病院いけ。俺に出来るアドバイスはただそれだけだ。

666 :デフォルトの名無しさん:2006/06/16(金) 20:11:28
>>665
無駄レス乙。このスレに来るな。俺”が”お前”に”できるアドバイスはただそれだけだ。
日本語しっかり使えよ、在日。

667 :デフォルトの名無しさん:2006/06/16(金) 20:18:50
「俺に出来るアドバイス」は正しい日本語だろ。
意味が曖昧だから良い言い方じゃないとは思うが。

668 :デフォルトの名無しさん:2006/06/16(金) 20:20:30
>>666
スゲーこんなバカ初めて見たw

669 :デフォルトの名無しさん:2006/06/16(金) 20:24:18
>>667-668
すげー、ここって煽りたがり屋が簡単に釣れるんですねw
要するに人を馬鹿にしたい人が集まっているってことか
低俗なクズ共めがw

670 :デフォルトの名無しさん:2006/06/16(金) 20:33:55 ?#
バカをバカにするのは正しい行為ですよ。

671 :デフォルトの名無しさん:2006/06/16(金) 20:39:46
争わないでぇぇえ

672 :デフォルトの名無しさん:2006/06/16(金) 20:48:50
高校の宿題で、パソコン甲子園の2005年度の予選問題を宿題にされた…。
俺には理解できない。
誰か学のある方教えて下さい。

673 :デフォルトの名無しさん:2006/06/16(金) 20:52:44
>>672
ttp://www.pref.fukushima.jp/pc-concours/2005hp/03dc.html
これ?のどれ?

674 :デフォルトの名無しさん:2006/06/16(金) 21:01:51
予選問題 答えでググればでるんじゃないの?
わからんけど

675 :デフォルトの名無しさん:2006/06/16(金) 21:04:50
>>672
つか、テンプレ嫁
問題も書かずに教えろとか、聞く気あるのか?

676 :デフォルトの名無しさん:2006/06/16(金) 21:06:03
ttp://www.pref.fukushima.jp/pc-concours/common/2005yosen.pdf
じゃね?

677 :デフォルトの名無しさん:2006/06/16(金) 21:06:03
>>673
プログラミング部門の2005年度の予選問題です。
>>674
ググったんだけど出て来なかったんだよなぁ〜。
サイト知ってたら教えて下さい。

678 :677:2006/06/16(金) 21:09:55
ミスった。
プログラミング部門の例題→2005年予想問題だった。orz

679 :デフォルトの名無しさん:2006/06/16(金) 21:17:43
だった。orz
って知らんがな。問題文or問題文のあるサイトくらい教えてくれないと
>>676>>673の質問にも答えてないしな

680 :679:2006/06/16(金) 21:21:32
673の問題に相違ない

681 :デフォルトの名無しさん:2006/06/16(金) 21:24:49
>>673の問題がわからない漏れは逝ってヨシ?

682 :デフォルトの名無しさん:2006/06/16(金) 21:26:59 ?#
>>672
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
void dsc(int* a,size_t l){int t,max=INT_MIN;size_t i,p;if(l){for(i=0;i<l;i++)
if(a[i]>max){max=a[i];p=i;}t=a[0];a[0]=a[p];a[p]=t;dsc(&a[1],l-1);}}
int main(void){char tmp[100];int a[5];size_t i;for(i=0;i<5;i++){fgets(tmp,sizeof(tmp),stdin);
a[i]=atoi(tmp);}dsc(a,5);for(i=0;i<5;i++)printf("%d\n",a[i]);return 0;}

683 :デフォルトの名無しさん:2006/06/16(金) 22:41:44
>>672
予選通過した( ゚D゚)y−~~

684 :デフォルトの名無しさん:2006/06/17(土) 00:47:08
自慢する暇があれば、教えてあげればいいのに( ゚Д゚)y─┛~~

685 :デフォルトの名無しさん:2006/06/17(土) 01:15:01
どうせなので前から順番にやってみてたら、16番の途中で2時間たった。

686 :デフォルトの名無しさん:2006/06/17(土) 02:05:10
>>636
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2083.c
漏れもチャレンジ・・・32辺りから処理が遅くなってもっさり感が

687 :デフォルトの名無しさん:2006/06/17(土) 02:07:57
あとフィボナッチ数列についてちと調べてみた。
ttp://shibuya.cool.ne.jp/takaren/main/etc/math/fibonatcci1.html
ttp://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83%81%E6%95%B0%E5%88%97

トーマス氏のソースは40以上になってももっさりせんね。
法則を理解して、別のやり方してまんな・・・この人、やっぱすげーやw
ttp://c-kadai.sakura.ne.jp/index.php?itemid=21

688 :デフォルトの名無しさん:2006/06/17(土) 02:09:09
あっ、でもfor文つこてるけど・・・いや、何も問題ないっす(^^;

689 :デフォルトの名無しさん:2006/06/17(土) 02:27:43 ?#
>>688
マクローリン展開(http://c-kadai.sakura.ne.jp/index.php?itemid=6&catid=5)のとこでも
書いたけど、項のリミットを外から与える必要があるときに再帰を使う意味はあまりない
し、かといってgotoを使うのも意味がないのであえて無視した。

690 :デフォルトの名無しさん:2006/06/17(土) 13:12:36
[1] 授業単元: 数値計算
[2] 問題文(含コード&リンク):sin(x~2)を0〜√(12π)まで台形則で数値積分
ただし、分点の数を8点から始め、倍々に増やしていくこと

言語:C

皆さんよろしくおねがいします。

691 :デフォルトの名無しさん:2006/06/17(土) 13:38:57
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
double func_y(double x){ return sin(pow(x,2)); }
int main(void){
int i, j, n = 8;
double *y, xa = 0.0, xb = sqrt(12 * M_PI), z = 0.0, h = 0.0, x, s, sold;
while(1){
y = (double*)malloc(sizeof(double) * (n + 1));//配列確保
if(y == NULL){puts("Error"); return 1;}
h = (xb - xa) / (double)n;//刻み計算
for(i = 0; i <= n; i++){
x = xa + h * (double)i;//関数値計算
y[i] = func_y(x);
}
for(i = 1; i < n; i++)z += 2.0 * y[i];//数値積分
if(n > 8)sold = s;
s = h / 2.0 * (y[0] + z + y[n]);
printf("Point = %d, Ans = %8.4lf\n", n, s);//表示
if(n > 8 && fabs(s - sold) < 1.0e-3)break;
n *= 2;
free(y);
}
return 0;
}
つ台形

692 :デフォルトの名無しさん:2006/06/17(土) 21:34:28
void func(int* a);
void func(int *a);
これって、何か違うの?


693 :デフォルトの名無しさん:2006/06/17(土) 21:42:42
>>692
あえて言うなら、宗派が違う。

694 :692:2006/06/17(土) 21:52:14
>>693
つまり、意味的には同義なのか。

C99では、どちらで定義されてるの?


695 :デフォルトの名無しさん:2006/06/17(土) 22:15:20
規格でどちらの書き方が使われているかは興味ないが、
692の前者の書き方はC++使い、後者はC使いに多いと俺は思う。
(俺自身も初めは後者だったがC++を使っていくうちに前者になった)

696 :デフォルトの名無しさん:2006/06/18(日) 00:21:01
os;windows xp
コンパイラ; gcc
言語;c

アメリカへの船便小包の郵便料金は、1000g まで1800 円、1000g を越え10000g までは1000g ごとに550 円
ずつの割増し、10000g を越え20000g まではさらに1000g ごとに350 円ずつの割増しになる。小包の重さ
を読み込み、その郵便料金を計算するプログラムを作りなさい。ただし、船便小包の重量制限は20kg であ
る。
(例: 3000g → 2900 円、3001g → 3450 円、20000g → 10250 )

お願いします 留年したくないです

697 :デフォルトの名無しさん:2006/06/18(日) 00:51:19
>>696
#include<stdio.h>
#include<stdlib.h>
int main(){
int i, x, y;
char tmp[100];
fgets(tmp, sizeof(tmp), stdin);
for(i = 0; tmp[i] != NULL && tmp[i] != 'g'; i++);
tmp[i] = NULL;
x = atoi(tmp);
if(x > 20000){ puts("重すぎ"); return 1; }
printf("%d円\n", x <= 1000 ? 1800 :
x <= 10000 ? 1800 + ( y = (x - 1000) / 1000) * 550 + (x - 1000) % y * 550 :
6750 + (x - 10000) / 1000 * 350);
return 0;
}

698 :デフォルトの名無しさん:2006/06/18(日) 18:12:58
> 20000g → 10250

本当?
> さらに1000g ごとに350 円ずつの割増し
じゃねの?


699 :デフォルトの名無しさん:2006/06/19(月) 14:37:16
1] 授業単元:プログラミング
[2] 問題文:初期値と交差を標準入力から入力し、その等差級数の1から10までの
要素の総和を出力するプログラムを書くただし、for文を用いて書く
[3] 環境
 [3.1] XP
 [3.2] gcc 3.4
 [3.3] 言語:C
[4] 今日中にお願いします
[5] その他の制限:類題を見たことあるんですが
forを用いて書く方法がわかりません><;

700 :デフォルトの名無しさん:2006/06/19(月) 15:50:03
>>699
#include <stdio.h>
main() {
int i,b,c,a[10];
printf("書記値 > ");
scanf("%d",&b);
printf("黄 砂 > ");
scanf("%d",&c);
for(i=0; i<10; i++) {
a[i] = b+(c*i);
printf("%d ",a[i]);
}
}


701 :デフォルトの名無しさん:2006/06/19(月) 15:53:14
>>699
>>700は総和を書いてへんかった
#include <stdio.h>
main() {
int i,b,c,a[10],sum=0;
printf("書記値 > ");
scanf("%d",&b);
printf("黄 砂 > ");
scanf("%d",&c);
for(i=0; i<10; i++) {
a[i] = b+(c*i);
sum += a[i];
printf("%d ",a[i]);
}
printf("数列の総和 : %d \n",sum);
}


702 :デフォルトの名無しさん:2006/06/19(月) 17:57:18
[1] 授業単元: プログラミングA
[2] 問題文(含コード&リンク): 次のアルファベットのキーワードを入力して計算する関数電卓プログラムを作成しなさい

sin
cos
tan
arcsin
arccos
arctan
ln
log
exp
sqr
rad
deg
end
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: 6月21日

どなたか助けてください・・・・

703 :デフォルトの名無しさん:2006/06/19(月) 17:59:56
南下前見た

704 :デフォルトの名無しさん:2006/06/19(月) 18:10:30
>>699

#include <stdio.h>

int main(void)
{
double a,d;

printf("初項>");
scanf("%lf",&a);
printf("項差>");
scanf("%lf",&d);

printf("合計%lf\n",5*(2*a+9*d));

for(;0;)

return 0;
}

705 :デフォルトの名無しさん:2006/06/19(月) 18:10:39
まじっすか!?
このスレですか?

706 :デフォルトの名無しさん:2006/06/19(月) 18:17:52
>>702
とりあえず、もともとあるものを使っちまえ。自分で定義して中身を作らんとあかんの?
math.hを忘れずに!検討を祈る!

707 :702:2006/06/19(月) 18:18:02
すいません言語はC++でした・・・

708 :デフォルトの名無しさん:2006/06/19(月) 18:31:48
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2004.txt
とりあえず、過去スレにあったCでの電卓プログラム
入出力だけ変えればC++っぽくなったりするんじゃないかと、思ったり

709 :702:2006/06/19(月) 18:53:42
ありがとうございます。
申し訳ありませんが入出力を変えるってどこをどのようにすればよろしいのでしょうか?


710 :デフォルトの名無しさん:2006/06/19(月) 23:32:58
>>709
stdio.hをiostereamに変えて、printfやgetsなど使わず
cinやcoutを使え、ってことやがな。
puts("式をどーぞ : "); を、
cout << "式をどーぞ : " << endl; に直す、とかね。



711 :702:2006/06/20(火) 00:28:32
ありがとうございます!!やってみます

712 :デフォルトの名無しさん:2006/06/20(火) 00:32:37
ttp://www.bohyoh.com/CandCPP/C/Library/index.html
この辺りも目を通しておきたいところだ

713 :デフォルトの名無しさん:2006/06/20(火) 00:41:57
[1] 授業単元: 基本プログラム
[2] 問題文(含コード&リンク):
1、3人で4種類のゲームを行ったときの得点をゲームごとにそれぞれ入力し、各人の得点を合計得点と次のような
表として表示するプログラムを作成しなさい
   ゲーム1  ゲーム2  ゲーム3  ゲーム4  合計
A君 10    40    7      28   85
B君  20    30    13     27   90
C君  5     40    11     29   85
ただし、表を表示する時に罫線は表示しなくてよい
【アルゴリズム】
1、ゲーム1の3人の得点を入力し、それぞれの値を記憶しておく
2、ゲーム2の3人の得点を入力し、それぞれの値を記憶しておく
3、ゲーム3の3人の得点を入力し、それぞれの値を記憶しておく
4、ゲーム4の3人の得点を入力し、それぞれの値を記憶しておく
5、3人それぞれの合計得点を計算
6、得点、合計を表にして表示する

714 :デフォルトの名無しさん:2006/06/20(火) 00:42:41
ずれた…

715 :デフォルトの名無しさん:2006/06/20(火) 00:46:50
>>692ってJavaでも型とポインタのところで話が出るけど
int* aってのが一般的らしいよ
int *aでもいけるんだけど、定義したポインタそのものには違いはないから
キニスンナ

716 :デフォルトの名無しさん:2006/06/20(火) 00:53:06
2、配列を用いてスタックを実現せよ
次のプログラムは、文字を入力してそれを順次スタックに積み、入力終了後、スタックから1文づつ取り出して
表示するプログラムである。下線を引いた空欄部分を埋め、プログラムをかんせいせよ。

#include<stdio.h>
int stack(int,int);
void main(){
int c;
//スタックにEOF文字をいれる。取り出す時の終了マークとなる。
stack(1,EOF);
//EODマークが入力されるまで、スタックに入力文字を積む。
while((c=getchar())!=EOF)__________;
//スタックから文字を取り出す。EOFが取り出されたら終了。
while((c=stack(2,c))!=EOF)__________;
//改行して画面を見やすくする。
putchar('\n');
}
int stack(int a,int b){
//この変数と配列は、制御がmain関数に戻っても
//値を保たなければならないので静的変数にする。
_________ int n=0, tab[1000];
switch(____){
//push動作
case 1: tab[n]=b;n++;return a;
//pop動作
case 2: n--; return tab[n];
}
//動作指定が間違っている場合EOFを返す。
return EOF;
}

明日の正午までですよろしくおねがいします。

717 :デフォルトの名無しさん:2006/06/20(火) 01:13:40
>>713
#include <stdio.h>
int main(void){
int game1[3],game2[3],game3[3],game4[3]={0,0,0},i;
double point[3];
char *name[]={"A","B","C"};
for (i=0;i<3;i++){
printf("game1[%s] > ",name[i]);
scanf("%d",&game1[i]);
point[i]+=game1[i];
}
for (i=0;i<3;i++){
printf("game2[%s] > ",name[i]);
scanf("%d",&game2[i]);
point[i]+=game2[i];
}
for (i=0;i<3;i++){
printf("game3[%s] > ",name[i]);
scanf("%d",&game3[i]);
point[i]+=game3[i];
}
for (i=0;i<3;i++){
printf("game4[%s] > ",name[i]);
scanf("%d",&game4[i]);
point[i]+=game4[i];
}
printf("\tgame1\tgame2\tgame3\tgame4\tsum\n");
for (i=0;i<3;i++){
printf("%s\t%5d\t%5d\t%5d\t%5d\t%5.0f\n",name[i],game1[i],game2[i],game3[i],game4[i],point[i]);
}return 0;}

718 :デフォルトの名無しさん:2006/06/20(火) 01:27:14
>>713
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2105.c

719 :c++ :2006/06/20(火) 01:43:23
#include<iostream>
#include<string>
using namespace std;
int main(){
const int x_size = 5;//ゲーム数+1
const int y_size = 3;//人数
string alpha ="ABC";//ゲーム参加人
int temp;
double** array = new double*[x_size];
for(int i=0;i <= x_size-1; i++ )
array[i] = new double[y_size];
for(int q=0;q<=3;q++){
cout << "ゲーム"<< q+1 << "の得点入力" << endl;
for(int i=0;i<=2;i++)cin >> array[q][i];}
for(int i=0;i<=y_size-1;i++){
temp = 0;
for(int q=0;q<=x_size-2;q++)temp += array[q][i];
array[x_size-1][i] = temp;}
for(int i=0;i<=x_size-1;i++){
if( i == x_size-1 ) cout << "合計";
else cout << "ゲーム" << i+1;}
cout << endl;
for(int i=0;i<=y_size-1;i++){
cout << alpha[i] << "君" << "";
for(int q=0;q<=x_size-1;q++)cout << array[q][i] << " ";
cout << endl;}
for(int i=0; i< x_size; ++i)
delete[] array[i];
delete[] array; //領域の解放
return 0;
}

720 :719:2006/06/20(火) 01:50:23
>>713
cout<<""みたいになっているのはタブ文字(\t)が本来入ってましたが
消えてしまいましたからです。ごめんなさい。

721 :デフォルトの名無しさん:2006/06/20(火) 09:36:51
>>716
下線部だけ

while((c=getchar())!=EOF)stack(1,c);
while((c=stack(2,c))!=EOF)putchar(c);
static int n=0, tab[1000];
switch(a){


722 : ◆BWxurmpBU6 :2006/06/20(火) 16:07:45
[1] 授業単元: プログラミング技術3
[2] 問題文(含コード&リンク):
三角形の3頂点の座標、(x1,y1),(x2,y2),(x3,y3)を読み込んで3つの内角の角度θ1、θ2、θ3をdeg単位(°)で計算し、印字するプログラムを作成せよ。
但し、double型変数θ1、θ2、θ3へのポインタ変数とdouble型変数x1,y1,x2,y2,x3,y3を引数とする関数を作成し、main関数では同関数を呼び出すようにせよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ gcc
 [3.3] 言語:C
[4] 期限: 2006年6月21日の午後まで

すみません、何度もやってみたんですができませんでした。
よろしくお願いします。

723 :デフォルトの名無しさん:2006/06/20(火) 16:33:24
>>722
ウチの環境 VC6++ なんで違うかも知れないけど atan2() 関数って使える?

724 : ◆BWxurmpBU6 :2006/06/20(火) 16:48:58
>>723
すみません、atan()は使えるんですがatan2()というのは使えません。

725 :デフォルトの名無しさん:2006/06/20(火) 17:10:51
>>724
#include <math.h>
#define pi() 3.1415926535897932
int deltadeg( double *r1, double *r2, double *r3, double x1, double y1, double x2, double y2, double x3, double y3 )
{
double a1, a2, a3;
if ( x1 == x2 && y1 == y2 ) return ( 0 );
if ( x2 == x3 && y2 == y3 ) return ( 0 );
if ( x3 == x1 && y3 == y1 ) return ( 0 );
a1 = ( x1 == x2 ? ( y2 < y1 ? -pi() : +pi() ) / 2.0 : atan( ( y2 - y1 ) / ( x2 - x1 ) ) ) * 360.0 / 2.0 / pi();
a2 = ( x2 == x3 ? ( y3 < y2 ? -pi() : +pi() ) / 2.0 : atan( ( y3 - y2 ) / ( x3 - x2 ) ) ) * 360.0 / 2.0 / pi();
a3 = ( x3 == x1 ? ( y1 < y3 ? -pi() : +pi() ) / 2.0 : atan( ( y1 - y3 ) / ( x1 - x3 ) ) ) * 360.0 / 2.0 / pi();
*r1 = a1 - a3; if ( *r1 < 0.0 ) *r1 = 360.0 + *r1; if ( *r1 > 180.0 ) *r1 = 360.0 - *r1;
*r2 = a2 - a1; if ( *r2 < 0.0 ) *r2 = 360.0 + *r2; if ( *r2 > 180.0 ) *r2 = 360.0 - *r2;
*r3 = a3 - a2; if ( *r3 < 0.0 ) *r3 = 360.0 + *r3; if ( *r3 > 180.0 ) *r3 = 360.0 - *r3;
return ( 1 );
}

int main( void )
{
double r1, r2, r3;
if ( deltadeg( &r1, &r2, &r3, 0.0, 0.0, 1.0, 0.0, 0.0, sqrt( 3.0 ) ) ) {
printf( "θ1 = %3.5f°\nθ2 = %3.5f°\nθ3 = %3.5f°\n", r1, r2, r3 );
} else {
printf( "三角形として正しくありません。\n" );
}
return ( 0 );
}

726 : ◆BWxurmpBU6 :2006/06/20(火) 21:38:46
>>725

x1〜x3、y1〜y3までコマンドラインでしていできるようにmain関数だけ以下のように変更しました。
int main( void )
{
double r1, r2, r3;
double x1,y1,x2,y2,x3,y3;
printf("x1=");scanf("%lf",&x1);printf("\n");
printf("y1=");scanf("%lf",&y1);printf("\n");
printf("x2=");scanf("%lf",&x2);printf("\n");
printf("y2=");scanf("%lf",&y2);printf("\n");
printf("x3=");scanf("%lf",&x3);printf("\n");
printf("y3=");scanf("%lf",&y3);printf("\n");
if ( deltadeg( &r1, &r2, &r3, x1, y1, x2, y2, x3, y3) ) {
printf( "θ1 = %3.5f°\nθ2 = %3.5f°\nθ3 = %3.5f°\n", r1, r2, r3 );
} else {
printf( "三角形として正しくありません。\n" );
}
return ( 0 );
}
しかし実行結果がおかしくなってしまいました。
実行結果
x1=0
y1=1
x2=5
y2=1
x3=2
y3=0
θ1 = 26.56505°
θ2 = 18.43495°
θ3 = 45.00000°
どうすればいいのでしょうか?

727 :デフォルトの名無しさん:2006/06/20(火) 22:04:55
[1] 授業単元:C言語プログラム
[2] 問題文
次の表は最近5試合における阪神タイガースの得点結果である。

日付 1 2 3 4 5 6 7 8 9
6/1 0 0 0 0 0 2 0 0 0
6/2 1 0 0 1 0 1 0 1 0
6/3 0 1 0 5 0 0 0 1 1
6/4 0 0 0 0 0 2 0 0 0
6/6 0 0 0 0 0 0 0 0 0

この表を score[5][9] の2次元配列に初期値として格納し、
以下の内容を答えるプログラムを作成せよ。
1試合ごとに合計得点を計算し、画面に出力せよ。
またこの5試合の平均得点を計算し、画面に出力せよ。
各イニング(1〜9回)別の平均得点を計算し、画面に出力せよ。
また計算した平均得点が最大のイニング(回)を画面に出力せよ。
【ヒント】2次元配列の要素を参照する‥多重ループを使う
[3] 環境 
 [3.1] OS: (Windows xp
 [3.2] visual studio2003
 [3.3] C
4]期限: ([2006年6月21日12:00まで]
[5] 配列、ループ

728 :どなたかお願いします。:2006/06/20(火) 22:37:11
[1] 授業単元: 基本プログラム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2114.txt
[3] 環境
 [3.1] OS:UNIX
 [3.3] 言語:C++
[4] 期限:明後日
[5] その他の制限:if,switch,for,while文まで習いました。


729 :デフォルトの名無しさん:2006/06/20(火) 22:39:46
[1] 授業単元: コンピュータ・プログラミング3
[2] 問題文(含コード&リンク):
ニュートン法によりx軸と関数fの交点を求め、間に囲まれた面積を
数値積分により求めよ。

交点のx座標から数値積分を行う部分は作れました。
そのため、交点が複数個あるときに下のプログラムを活用して解を求め、
解(重解は1つの解とする)だけ別の配列に入れる形を考えていますが、
自力では上手くいきませんでした。

[3] 環境
 [3.1] OS: mac
 [3.2] コンパイラ名とバージョン: x code
 [3.3] 言語: C
[4] 期限: 2006年06月22日17:00まで
[5] その他の制限: 特になし

よろしければお願いします。

730 :729:2006/06/20(火) 22:41:09
入れ忘れました。このようなニュートン法を活用したいと思います。
#define KMAX 30
void eval(float x,float *f,float *df){
      *f=x*x-5*x+4;
*df=2*x-5;
return;
}
main(){
int k;
float f,df,d;
   float x=0.0,eps=1.0e-6;
for(k=0;k<KMAX;k++){
eval(x,&f,&df);
         d=-f/df;
   x+=d;
   if(fabs(f)<eps) break;
}
}

731 :デフォルトの名無しさん:2006/06/20(火) 22:44:05
>>727は簡単そうなのでボクがやるお

732 :デフォルトの名無しさん:2006/06/20(火) 23:02:23
[1] 授業単元/言語:C++/C++
[2] 環境コンパイラ:Microsoft visualC++6.0
[3] OS:Windows XP
[4] 提出期限:6月24日
[5] 問題内容(コード&リンク含む)

MFCとOpenGLによる3次元アニメーションプログラム。
1.OpenGLによる三次元キャラクター
2.キャラクターが動く
3.MFCを使用しメニューからダイアログを開くダイアログを作成
4.ダイアログでキャラクターの大きさ、速度、角度を設定するコントロールがある。


【OpenGLプログラム】:http://www.fileup.org/fup90130.zip.html


【参考ホームページ】:http://odalab.spub.chitose.ac.jp/~oda/lang/opengl.html
           http://www4.plala.or.jp/tamo/opengl/win_ogl.html
【補足】
プログラムには、適当なキャラクターとアニメーションが設置されています。
ダイアログを設置して、キャラクターの大きさ、動きの速さ、動きの角度などを
コントロールできる機能を追加すること。
よかったら、キャラクタを自由な形に変更して下さい。

完成したら、アップローダにUPしといてもらえば助かります。
よろしくお願いします。




733 :>>728:2006/06/20(火) 23:13:40
これでどう? 念のため自分でチェックよろしく。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2115.txt

734 :デフォルトの名無しさん:2006/06/20(火) 23:20:11
>>727
初心者なので間違ってたらゴメリンコ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2116.txt

735 :>>728:2006/06/20(火) 23:25:21
//最後のところ修正よろしく.

else
{
cout << "残り";
if( ticketS > 0 )
cout << "S:" << ticketS << "枚";
if( ticketA > 0 ){
if( ticketS > 0 )cout << "、";
cout << "A:" << ticketA << "枚";
}
if( ticketB > 0 ){
if( ticketS > 0 || ticketA > 0 )cout << "、";
cout << "B:" << ticketB << "枚" ;
}
cout<< endl;
}


736 :デフォルトの名無しさん:2006/06/20(火) 23:33:24
[1] 授業単元:C言語プログラム
[2] 問題文
次の処理を行うプログラムを作成せよ。

キーボードから文字列を入力し、char型の配列strに格納する。
格納された文字列の長さを数え、変数nに格納し、nの値を画面に出力する。
格納された文字列の真ん中に、空白(' ')を1つ挿入し、strを画面に出力する。
格納された文字列の最初の1文字を削除し、strを画面に出力する。
ただし、標準関数 string.h は利用しないものとする。
[3] 環境 
 [3.1] OS: (Windows xp
 [3.2] visual studio2003
 [3.3] C
4]期限: ([2006年6月21日12:00まで]
[5] 配列、ループ

737 :デフォルトの名無しさん:2006/06/20(火) 23:45:46
[1]授業単元:C言語プログラミング
[2]問題文:○×ゲームを作成しなさい。3回試合をし、先に2勝した方を
勝ちとしなさい。
[3.1]Windows
[3.2]visual C++
[3.3]C
[4]2006年6月23日

うまく数字を○に変えることができなくて苦戦してます。
ご協力お願いします

738 :デフォルトの名無しさん:2006/06/20(火) 23:50:36
>>727
俺もやってみた
#include <stdio.h>
int main(void)
{
int score[5][9]={{0,0,0,0,0,2,0,0,0},{1,0,0,1,0,1,0,1,0}
,{0,1,0,5,0,0,0,1,1},{0,0,0,0,0,2,0,0,0},{0,0,0,0,0,0,0,0,0}},i,j,sum,max_average=0;
double average,average2[9]={0,0,0,0,0,0,0,0,0};
for (i=0,average=0.0;i<5;i++){
for (j=0,sum=0;j<9;j++){
sum+=score[i][j];
average+=score[i][j];
average2[j]+=score[i][j];
}
printf("第%d試合[%d]点\n",i+1,sum);
}
puts("------------------------------");
printf("平均---%.0f\n",average/5);
puts("------------------------------");
for (i=0;i<9;i++){
if (average2[i]/5 > average2[max_average]/5){
max_average=i;
}
printf("%dイニング平均---%.0f\n",i+1,average2[i]/5);
}
puts("------------------------------");
printf("最大イニング---%d回\n",max_average+1);
return 0;}

739 :デフォルトの名無しさん:2006/06/21(水) 00:05:56
>>737
入出力例があるとやりやすい

740 :デフォルトの名無しさん:2006/06/21(水) 00:13:05
>>736 スペースを入れる「真ん中」って、文字数が奇数だとどっちに
いれたらいいのかわかんない。
 とりあえず作ったよ。
#include<stdio.h>
int mylen(const char *s);
void insertspace(char *s);
void topdelete(char *s);
int main(void) {
char str[256];
int n;
scanf("%s", str);
n = mylen(str);
printf("%d\n", n);
insertspace(str);
printf("%s\n", str);
topdelete(str);
printf("%s\n", str);
return 0;
}
//続く

741 :デフォルトの名無しさん:2006/06/21(水) 00:14:28
int mylen(const char *s) {
int i;
for (i = 0; s[i] != '\0'; i++);
return i;
}
void insertspace(char *s) {
int i, n;
n = mylen(s);
for(i = n; i > 0; i--) {
s[i + 1] = s[i];
if (i < n / 2) {
s[i + 1] = ' ';
break;
}
}
}
void topdelete(char *s) {
int i;
for (i = 0; s[i] != '\0'; i++) {
s[i] = s[i + 1];
}
}

742 :デフォルトの名無しさん:2006/06/21(水) 00:20:29
>格納された文字列の最初の1文字を削除し、strを画面に出力する。
これをどうしたらいいのか分からんかった
キーボードから入力したのを加工するのか、スペースを入れた奴を加工するのか・・・

743 :デフォルトの名無しさん:2006/06/21(水) 00:22:25
>>735
ありがとうございます。自分でチェックしてみたところ、63,64,67行が間違ってるとでます・・・自分じゃ何がおかしいのかわからないのでよかったら訂正お願いします。

744 :デフォルトの名無しさん:2006/06/21(水) 00:38:14
>>739
http://www.kumei.ne.jp/c_lang/intro/no_64.htm
の写真みたいなかんじでやりたいです…
なんとか○×まで表示できたのですが、勝敗条件が浮かんできません…
助けてください…

745 :デフォルトの名無しさん:2006/06/21(水) 00:42:29
[1] 授業単元: ゼミ
[2] 問題文(含コード&リンク)
http://www.774.cc:8000/upload-micro/src/up0279.txt の構造体を使って(参考にして)
http://www.774.cc:8000/upload-micro/src/up0280.txt 
を構造体を使って書き直す。ポイントは使わずにお願いします

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: boeland c
 [3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: 初心者でも知っているような文法を使ってください。

746 :>>744:2006/06/21(水) 01:00:01
二次元配列だったら、以下のプログラム片みたいなのをを縦、横、斜めをそれぞれ作って、
これをそれぞれのプレイヤーの置いた後に動かせばいいと思うけど……。
駄目ですかね?

int stone = 0;
int myID; //自分の置く石
int enemyID; //敵の置く石

for(int i=0; i<=x-1;i++){
for(int q=0;q<=y-1;q++){
if(array[i][q] == myID)
stone++;
else if( array[i][q] == enemyID )
stone--;
}

if(stone >= 3){
//勝ちの処理
}
else if( stone <= -3 ){
//負けの処理
}
stone = 0;

747 :デフォルトの名無しさん:2006/06/21(水) 01:12:58
>>745
何を解けばよいのかさっぱりわかりません。
初心者でもわかるように問題を書いてください。


748 :>>746:2006/06/21(水) 01:13:25
ここに出てくるxとyは何を表してるんですか?
理解できなくてごめんなさい…

749 :デフォルトの名無しさん:2006/06/21(水) 01:16:33
>>748
 ○×ゲームの、縦(x)と横(y)のサイズのことだろう。
もっとも、それならi<=x-1 じゃなくて、
i < x とかいたほうがいいと思うけど。

>>746はできたところまでソースを晒してみては?
方向性は間違っていないと思うんですが。

750 :745 他に何かあれば聞いてください:2006/06/21(水) 01:21:52
>>747
大変申し訳ありませんでした。
下のURLをstatic struct personal data[4]
={{"国語の成績",29点},{"英語の成績",41点},{"数学の成績",22点},{"社会の成績",31点}};
みたいにして表示するプログラムです。
データは最初からプログラム内にあってscanfする必要はありません。

751 :>>749:2006/06/21(水) 01:28:15
ごめんなさい…うまくいきませんでした…僕の作ったソースが下のなんですけど
どこを改善すべきでしょうか…
#include<stdio.h>

#define o 1;
#define x 2;
int main(void){
int i,j;
char a[3][3]={{'A','B','C'},{'D','E','F'},{'G','H','I'}};
int m,n;
printf("\n\n");
/*3*3表*/
printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]);
printf("--------\n");
printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]);
printf("--------\n");
printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]);

i=0;
do{
printf("先手○の番です\n");
scanf("%d",&m);


752 :>>748続き:2006/06/21(水) 01:30:05
switch(m){
case 1:
a[2][0]='o';
printf("o",a[2][0]);
break;
case 2:
a[2][1]='o';
break;
case 3:
a[2][2]='o';
break;
case 4:
a[1][0]='o';
break;
case 5:
a[1][1]='o';
break;
case 6:
a[1][2]='o';
break;
case 7:
a[0][0]='o';
break;
case 8:
a[0][1]='o';
break;
case 9:
a[0][2]='o';
break;
}


753 :>>748続き:2006/06/21(水) 01:31:05
printf("\n");

/*3*3表*/
printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]);
printf(" ------------\n");
printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]);
printf(" ------------\n");
printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]);




754 :>>748続き:2006/06/21(水) 01:32:59
printf("後手×の番です。\n");
printf("\n\n");
scanf("%d",&n);
switch(n){
case 1:
a[2][0]="x";
break;
case 2:
a[2][1]='x';
break;
case 3:
a[2][2]='x';
break;
case 4:
a[1][0]='x';
break;
case 5:
a[1][1]='x';
break;
case 6:
a[1][2]='x';
break;


755 :>>748続き:2006/06/21(水) 01:33:35
case 7:
a[0][0]='x';
break;
case 8:
a[0][1]='x';
break;
case 9:
a[0][2]='x';
break;

}
printf("%d\n",q);

/*3*3表*/
printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]);
printf(" --------\n");
printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]);
printf(" --------\n");
printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]);


i++;
}while(i<9);

756 :デフォルトの名無しさん:2006/06/21(水) 01:38:17
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
ここにソースをうp汁

757 :デフォルトの名無しさん:2006/06/21(水) 01:58:12
短くしてみた。重複をはじく関数と勝利判定はあとで。
#include<stdio.h>
int main(void){
char a[3][3]={{'A','B','C'},{'D','E','F'},{'G','H','I'}};
int m,n;
char man = 'o';
while(1) {
printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]);
printf("--------\n");
printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]);
printf("--------\n");
printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]);

printf("%cの番です\n", man);
scanf("%d %d",&m, &n);
a[m][n] = man;
putchar('\n');
if(man == 'o') {
man = 'x';
}
else {
man = 'o';
}
}
return 0;
}

758 :>>756:2006/06/21(水) 02:01:29
アップしました!!
おねがいします!!!

759 :デフォルトの名無しさん:2006/06/21(水) 02:08:48
>>758
うpしたらURLをここに貼ろうね

760 :デフォルトの名無しさん:2006/06/21(水) 02:18:06
[1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク):
あらかじめ作成してある二つテキストファイルを読み込み一つのテキストファイルにまとめるプログラム
[3] 環境
 [3.1] OS:Linux  [3.2] コンパイラ gcc  [3.3] 言語:C
[4] 期限: 6/23

一つにまとめることはできたのですが、txt内の文字が()内のものだとしたとき
in1.txt(
aa
bb)
in2.txt(
xx
yy)
out.txt(
aa
bbxx←
yy)
こんな感じでつながってしまうのですが、何を使えばいいでしょうか?

761 :デフォルトの名無しさん:2006/06/21(水) 02:25:49
改行

762 :>>759:2006/06/21(水) 02:26:00
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=2120

ごめんなさい…上記アドレスです

763 :749=757:2006/06/21(水) 02:32:16
実はうpろだ初体験。ドキドキ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=2121
すまん、もとのソースが跡形も無くなったw
もとのソースを生かすには・・・どうしたらいいものか。

764 :デフォルトの名無しさん:2006/06/21(水) 02:48:04
>>762
txt形式で載せたほうがいいと思うよ

765 :デフォルトの名無しさん:2006/06/21(水) 03:16:02
>>760
テキストファイルって普通最後に改行が入るから、何もしなくていいよ。
まぁ完璧を期すなら最後のバイトが改行コードかどうか調べて、
改行コードを付加する必要があるが。

766 :デフォルトの名無しさん:2006/06/21(水) 05:31:07
[1] 授業単元:C言語プログラム
[2] 問題文
次の処理を行うプログラムを作成せよ。

キーボードから文字列を入力し、char型の配列strに格納する。
格納された文字列の長さを数え、変数nに格納し、nの値を画面に出力する。
格納された文字列の真ん中に、空白(' ')を1つ挿入し、strを画面に出力する。
格納された文字列の最初の1文字を削除し、strを画面に出力する。
ただし、標準関数 string.h は利用しないものとする。
[3] 環境 
 [3.1] OS: (Windows xp
 [3.2] visual studio2003
 [3.3] C
4]期限: ([2006年6月21日12:00まで]
[5] 配列、ループ

お願いします

767 :Javaはイイ:2006/06/21(水) 06:20:57
>>766
Cって面倒 orz
C/C++はほぼ日常で使わないのでソース的には酷いものかも〜
一応動作してるのでうp
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=27950

768 :>>763:2006/06/21(水) 08:26:12
どうもありがとうございました。
ほんと助かりました!!


769 :デフォルトの名無しさん:2006/06/21(水) 08:57:31
>>767
揚げ足取るようですまんが、strlenはstring.hの関数なんだが・・・。
>ただし、標準関数 string.h は利用しないものとする。
と書いてある。

strlenを使用しないとすれば
while(1)
{
if(str[count] == '\0' )
break;
count++;
}
みたいなルーチンにしてCountとcoutやprintfですればいいと思う。

770 :>>763:2006/06/21(水) 09:11:53
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=2122
コレをメインメニューにしたいんですけど…うまく作っていただいたゲームに
移ることができないです…↓↓
度々すみません。力を貸してください

771 :デフォルトの名無しさん:2006/06/21(水) 09:37:50
[1] 授業単元:C言語プログラム
[2] 問題文
次の表は、京都市の区ごとの人口と面積である。
区名 人口(人) 面積(平方キロメートル)
北区 123,874 94.92
上京区 83,285 7.11
左京区 169,365 246.88
中京区 102,085 7.38
東山区 42,137 7.46
山科区 136,292 28.78
下京区 75,907 6.82
南区 98,186 15.78
右京区 202,484 291.95
西京区 154,648 59.20
伏見区 285,392 61.62
以下の記述を参考に、コードを作成しなさい。
これらの情報を格納する構造体 struct division を宣言する。
struct division {
 char name[20];
 int count;
 double area;
}
struct division型の配列 kyoto[11]を用意し、 初期値として表のデータを格納する。
入力した構造体の配列を使って、以下の情報を出力する。
人口が最大の区と最小の区の、名前と人口。
面積が最大の区と最小の区の、名前と面積。
人口密度が最大の区と最小の区の、名前と人口密度。
[3] 環境 
[3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C
4]期限: ([2006年6月28日12:00まで]
[5] 配列、ループ,ポインタ


772 :デフォルトの名無しさん:2006/06/21(水) 09:50:31
[1] 授業単元: C言語入門
[2] 1/nΣΣ(内積)の二乗 を計算せよ。
まずベクトルを読み込むのにsscanfを使用せよ
[3]
 [3.1] Linuxfedora core4
 [3.2] gcc
 [3.3] 言語: (C
[4] 期限: 2006-6-23

773 :デフォルトの名無しさん:2006/06/21(水) 10:06:35
[1] 授業単元:プログラム技法
[2] 問題文
1、各データ型(char,int,float,double)の変数とポインタ変数をそれぞれ宣言し、各データ型変数のアドレスを同じデータ型の
ポインタ変数に代入した上で、各データ型変数とポインタ変数の内容と各変数アドレスを表示せよ。ただし、同じ値と思われる
ものを一行で表示する。

2、char a[9]={65,66,69,70,71,72,73,0},*p;と宣言し、p=&a[4];とすると、文字配列aの各要素のアドレスとポインタ変数pの内容
を表示し、また、++*p,(*p)++,--*p,(*p)--の値も表示せよ。この時、括弧をつけない場合の*p++,*p--の結果も表示して確認する。

3、int a[9]={10,15,20,25,30,35,40,45,50},*p;を宣言し、p=&a[4];文の後に、p++,++p,--p,p--の各実行文を実行した場合、*p
の結果を出力せよ。また、p=&a[0];文の後に、*(p+1),*(p+2),*(a+1),*(a+2)の値を出力せよ。

4、文字列の長さを求める標準ライブラリ関数strlen()の自作版関数int mystrlen(char *)を作成せよ。

[3] 環境 
 [3.1] OS: windowsXP
 [3.2] cygwin
 [3.3] C言語
[4]期限 今日の午後12時までです。よろしくお願いします。

774 :デフォルトの名無しさん:2006/06/21(水) 10:19:43
>>726
ゴメン、ゴメン
関数を修正

int deltadeg( double *r1, double *r2, double *r3, double x1, double y1, double x2, double y2, double x3, double y3 )
{
double a1, a2, a3;
if ( x1 == x2 && y1 == y2 ) return ( 0 );
if ( x2 == x3 && y2 == y3 ) return ( 0 );
if ( x3 == x1 && y3 == y1 ) return ( 0 );
a1 = ( x1 == x2 ? ( y2 < y1 ? -90.0 : +90.0 ) : atan( ( y2 - y1 ) / ( x2 - x1 ) ) * 360.0 / 2.0 / pi() ); if ( x2 < x1 ) a1 = a1 + 180.0;
a2 = ( x2 == x3 ? ( y3 < y2 ? -90.0 : +90.0 ) : atan( ( y3 - y2 ) / ( x3 - x2 ) ) * 360.0 / 2.0 / pi() ); if ( x3 < x2 ) a2 = a2 + 180.0;
a3 = ( x3 == x1 ? ( y1 < y3 ? -90.0 : +90.0 ) : atan( ( y1 - y3 ) / ( x1 - x3 ) ) * 360.0 / 2.0 / pi() ); if ( x1 < x3 ) a3 = a3 + 180.0;
*r1 = a3 - a1 - 180.0;
while ( *r1 < 0.0 ) *r1 = 360.0 + *r1;
if ( *r1 > 180.0 ) *r1 = 360.0 - *r1;
*r2 = a1 - a2 - 180.0;
while ( *r2 < 0.0 ) *r2 = 360.0 + *r2;
if ( *r2 > 180.0 ) *r2 = 360.0 - *r2;
*r3 = a2 - a3 - 180.0;
while ( *r3 < 0.0 ) *r3 = 360.0 + *r3;
if ( *r3 > 180.0 ) *r3 = 360.0 - *r3;
return ( 1 );
}


775 :デフォルトの名無しさん:2006/06/21(水) 10:47:40
>>771
int main( void )
{
struct division {
char name[ 20 ];
int count;
double area;
};
struct division kyoto[ 11 ] = { { "北区", 123874, 94.92 }, { "上京区", 83285, 7.11 }, { "左京区", 169365, 246.88 },
{ "中京区", 102085, 7.38 }, { "東山区", 42137, 7.46 }, { "山科区", 136292, 28.78 }, { "下京区", 75907, 6.82 },
{ "南区", 98186, 15.78 }, { "右京区", 202484, 291.95 }, { "西京区", 154648, 59.20 }, { "伏見区", 285392, 61.62 } };
struct division *max, *min; int i;
for ( max = min = kyoto, i = 1; i < 11; i++ ) {
if ( max->count < kyoto[ i ].count ) max = &kyoto[ i ];
if ( min->count > kyoto[ i ].count ) min = &kyoto[ i ];
}
printf( "count max: %s %d\n", max->name, max->count );
printf( "count min: %s %d\n", min->name, min->count );
for ( max = min = kyoto, i = 1; i < 11; i++ ) {
if ( max->area < kyoto[ i ].area ) max = &kyoto[ i ];
if ( min->area > kyoto[ i ].area ) min = &kyoto[ i ];
}
printf( "count max: %s %f\n", max->name, max->area );
printf( "count min: %s %f\n", min->name, min->area );
for ( max = min = kyoto, i = 1; i < 11; i++ ) {
if ( ( double )max->count / max->area < ( double )kyoto[ i ].count / kyoto[ i ].area ) max = &kyoto[ i ];
if ( ( double )min->count / min->area > ( double )kyoto[ i ].count / kyoto[ i ].area ) min = &kyoto[ i ];
}
printf( "count max: %s %f\n", max->name, ( double )max->count / max->area );
printf( "count min: %s %f\n", min->name, ( double )min->count / min->area );
return ( 0 ); }

776 :デフォルトの名無しさん:2006/06/21(水) 10:53:28
[1] 授業単元:C言語プログラム
[2] 問題文
次の処理を行うプログラムを作成しなさい。

char型の配列strを用意し、キーボードから英数字の文字列を入力する。
格納された文字列に、アルファベットの大文字がある場合、すべて小文字に変換する。
文字列strを画面に出力する。

[3] 環境 
[3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C
4]期限: ([2006年6月28日12:00まで]
[5] 配列、ループ,ポインタ


777 :デフォルトの名無しさん:2006/06/21(水) 11:54:48 ?#
>>776
#include<stdio.h>
#include<stdlib.h>
int main(void){int i=0;char str[100];fgets(str,sizeof(str),stdin);
while(str[i]!='\0')str[i]=tolower(str[i]);printf("%s",str);return 0;}

778 :デフォルトの名無しさん:2006/06/21(水) 12:39:21
こんな人助けをしてくれる掲示板があるとは知りませんでした。
早速ですがお願いします。
10進の整数を入力し、これをn進(1<n<10)の整数に変換するプログラム。
例えば94を7進数に変換する場合、94,7 と入力すると163が出るようなやつです。
環境は C++ です。
どうやら94/7=13…3,13/7=1…6,・・・・・
と商が0になるまで続け、出てきたあまりを配列をつかって、逆順に表示できでば
良いらしいのですが、初心者にはつらいところです。よろしくお願いします。

779 :デフォルトの名無しさん:2006/06/21(水) 12:52:24
>>778
とりあえずテンプレ(>>1)を読んできなよ。

780 :デフォルトの名無しさん:2006/06/21(水) 13:09:40
[1] 授業単元:C言語プログラム
[2] 問題文
  円周率を求めるプログラムをwhile文、又はdo〜while文を用いて作成しなさい。
  円周率の計算方法は次の式に基づきます。
   tanπ/4=1 π=4arctan1
   arctan1=1-1/3+1/5-1/7+・・=倍1/(2i-1)}(-1)のi+1乗
  計算は無限に続くが、1/(2i+1)の値は次第に小さくなるので、この値が
  プログラム中で指定した未満になったら計算を終了する。精度は#defineで
  定数として定義してください。
[3.1] OS: windowsxp
[4]期限: 今日の午後6時まで。

781 :デフォルトの名無しさん:2006/06/21(水) 14:17:15 ?#
>>780
#include<stdio.h>
#define EP 0.000000001
int main(void){double a,p=0.0;int i=0;
while((a=(1.0/(2.0*(double)i+1.0)))>EP){p+=a*((i&1)?-1.0:1.0);i++;}
printf("%f\n", p*4.0);return 0;}

782 :デフォルトの名無しさん:2006/06/21(水) 14:28:53 ?#
>>778
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100],str[100];int n,b;fgets(tmp,sizeof(tmp),stdin);
sscanf(tmp,"%d,%d",&n,&b);itoa(n,str,b);printf("%s\n",str);return 0;}

783 :デフォルトの名無しさん:2006/06/21(水) 15:19:35
>>778
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2125.cpp

784 :デフォルトの名無しさん:2006/06/21(水) 15:24:36
>>778 ちょい変更。まぁ、大きな数値やマイナスは対象外でw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2126.cpp

785 :デフォルトの名無しさん:2006/06/21(水) 16:23:58
トーマス氏が使っているコンパイラってなんすか?

786 :デフォルトの名無しさん:2006/06/21(水) 16:39:07 ?#
VC.NET2003

787 :デフォルトの名無しさん:2006/06/21(水) 16:58:53
ども。これといって変なクセのあるコンパイラではないようですな・・・

788 :デフォルトの名無しさん:2006/06/21(水) 18:50:08
キーボードから文字列(英数)を入力し、
アルファベットであれば一文字アルファベット順を先にずらす。但し、zについては、aにする。
数字であれば、1つ先の数字にする。但し、9については0にする。

whileとifを使ったC言語のものを教えてください

789 :デフォルトの名無しさん:2006/06/21(水) 19:06:12
>>788
# include <stdio.h>
# include <string.h>

int main(void)
{
  int c;
  const char *lower = "abcdefghijklmnopqrstuvwxyza";
  const char *upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZA";
  const char *digit = "01234567890";
  while((c = getchar()) != EOF)
  {
    char *p;
    if((p = strchr(lower, c)) || (p = strchr(upper, c)) || (p = strchr(digit, c)))
      putchar(p[1]);
    else
      putchar(c);
  }
  return 0;
}

790 :デフォルトの名無しさん:2006/06/21(水) 19:08:11
http://www.dm.unife.it/Linguaggi1/download/BORLAND/Stdlib.h
のstdlib.hを使用したところ以下のようなエラーが発生しました。

エラー E2040 116行目:宣言が正しく終了していない.
警告 W8017 117行目:マクロ'abs'の重複定義

#else
int _RTLENTRY _EXPFUNC abs(int __x); ←116行目
# define abs(__x) __abs__(__x)       ←117行目
#endif

解る方がいらっしゃればよろしくお願いします。


791 :デフォルトの名無しさん:2006/06/21(水) 19:12:30
>>790
どんなソースにそのヘッダを引用したの?

792 :763:2006/06/21(水) 23:51:39
>>770
 昼間2ちゃんやってる暇ないからご指名されても困るがね・・・

 今からでもいいならやってみるかな。int型のgame1、game2、
ていうのが意味不明だけどこれは関数かな?

793 :763:2006/06/22(木) 00:40:02
〇×ゲームver.2だお。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2130.txt

ネストが深いとか、はっきりいって美しくないプログラム
だけど勘弁してください。
微調整が必要なら他の人にお願いしてください。
もう寝ますんで。

794 :>>763:2006/06/22(木) 01:22:45
返信遅れてすません  あと迷惑かけてごめんなさい…

このソース完璧です!!僕の理想そのままです!!!
ありがとうございましたヽ(´▽`)/
ほんと助かりました!!!!!!
ホントありがとうございました!!!!!!!!

795 :772:2006/06/22(木) 03:06:53
誰かできる方おられないでしょうか?
sscanf,for ,ポインターの知識を使って作るようなのですが。

796 :デフォルトの名無しさん:2006/06/22(木) 04:23:23
>>772=795
あからさまに情報が足りてない、ってことは自分で分からない?
nは何なのか、2つのΣは何を動かして何を足すのか、内積を取るベクトルの次元はいくつか。
最低限これくらいは情報を出さないと。

797 :よろしくお願いします:2006/06/22(木) 14:27:21
[2] 問題文(含コード&リンク):
 変数x,y,zを使いscanfで各教科の点数を入力→
 {{"数学",x}, {"国語",y}, {"英語",z}};
 うえのx,y,zに値が入力され
 { printf("\n%s %d %d",matsu[i].name,matsu[i].kokugo,matsu[i].eigo); }
 で表示されるプログラムです
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: Borland c
 [3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: 基本中の基本です
以下は、こんな感じでしてほしいと思い作りました。文法がだめだめですけど…
#include<stdio.h>
#include<conio.h>
int i;
struct seiseki
{ char *name;
int kokugo;
int eigo;
};
printf("%d人目のαの成績を入力\n",i+1);scanf("%f",&man[i].x);
printf("%d人目のβの成績を入力\n",i+1);scanf("%f",&man[i].y);
printf("%d人目のγの成績を入力\n",i+1);scanf("%f",&man[i].z);
void main(void)
{ static struct seiseki matsu[5]=
{{"数学",x},{"国語",y},{"英語",z}};
for(i=0;i<3;i++)
{ printf("\n%s %d %d",matsu[i].name,matsu[i].kokugo,matsu[i].eigo); }
getchar();
getchar();
}

798 :デフォルトの名無しさん:2006/06/22(木) 14:27:38
>>778みたいなありきたりのプログラムがまとまったサイトが欲しいところやなぁ。
進数の変換は有名なサイトにあるね。初心者が仕組みを理解できるかはおいといて。
ttp://www.bohyoh.com/Books/CalgoA/EX/ALGOEX0204.html

799 :デフォルトの名無しさん:2006/06/22(木) 14:59:19
>>797

#include<stdio.h>

struct seiseki{
char name[20];
int sugaku;
int kokugo;
int eigo;
};

int main(void)
{
int i;
struct seiseki matsu[3];
for(i = 0; i < sizeof(matsu) / sizeof(matsu[0]); i++){
printf("%d人目の名前を入力\n", i + 1);scanf("%s", matsu[i].name);
printf("%d人目のαの成績を入力\n", i + 1);scanf("%d", &matsu[i].sugaku);
printf("%d人目のβの成績を入力\n", i + 1);scanf("%d", &matsu[i].kokugo);
printf("%d人目のγの成績を入力\n", i + 1);scanf("%d", &matsu[i].eigo);
}
for(i = 0; i < sizeof(matsu) / sizeof(matsu[0]); i++)
printf("%s %d %d %d\n", matsu[i].name, matsu[i].sugaku, matsu[i].kokugo, matsu[i].eigo);
}
想像で書いてみた

800 :778:2006/06/22(木) 15:05:31
多くの解答ありがとうございました。
テンプレも読まずに書き込んでしまい申し訳ありませんでした。
次回は気をつけます。

801 :デフォルトの名無しさん:2006/06/22(木) 15:16:21
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
char alph[20];
で定義した配列に乱数を用いて作成した20個のでたらめなアルファベットを記入したとき、
alph[ ] の文字列と alph[ ] の各文字をアルファベット順に並べ替えた結果を表示せよ。文字は全て小文字とする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:できればすぐ!
[5] その他の制限:特にありません。

宜しくお願いします。


802 :デフォルトの名無しさん:2006/06/22(木) 15:40:29
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int cmp(const void *a, const void *b){
return (*(const char*)a - *(const char*)b);
}

int main(){
char alph[20];
int i;
srand((unsigned) time(NULL));
for(i = 0; i < 20; i++)
alph[i] = 'a' + rand() % 25;
for(i = 0; i < 20; i++)putchar(alph[i]);
puts("");
qsort(alph, 20, sizeof(char), cmp);
for(i = 0; i < 20; i++)putchar(alph[i]);
return 0;
}>>801


803 :デフォルトの名無しさん:2006/06/22(木) 15:44:48
はえええええええええええええ

>>802さんありがとうございます!

804 :797:2006/06/22(木) 15:52:13
>>799 コンパイルできました!!ありがとうございます!
想像でエラー0とは凄いですね!尊敬します!!

805 :デフォルトの名無しさん:2006/06/22(木) 16:02:11
そーゆー意味じゃないけど、まあいいか

806 :デフォルトの名無しさん:2006/06/22(木) 16:16:08
今日も元気に引きこもりニート君が昼間っから解答に精を出してるみたいだね。
いや、ごくろうごくろう

807 :デフォルトの名無しさん:2006/06/22(木) 16:17:46
>>806
そういうお前は専門学校から帰ってきた、回答者のソースも解析、理解できないクズだろ

808 :デフォルトの名無しさん:2006/06/22(木) 16:21:39
>>807
>>802?精進しようね。
802.c: (in function cmp)
802.c:6:8: Return value type char does not match declared type int:
(*(const char *)a - *(const char *)b)
To make char and int types equivalent, use +charint.
802.c: (in function main)
802.c:14:11: Incompatible types for + (char, int): 'a' + rand() % 25
A character constant is used as an int. Use +charintliteral to allow
character constants to be used as ints. (This is safe since the actual type
of a char constant is int.)
802.c:15:24: Return value (type int) ignored: putchar(alph[i])
Result returned by function call is not used. If this is intended, can cast
result to (void) to eliminate message. (Use -retvalint to inhibit warning)
802.c:16:1: Return value (type int) ignored: puts("")
802.c:18:24: Return value (type int) ignored: putchar(alph[i])
802.c:5:5: Function exported but not used outside 802: cmp
A declaration is exported, but not used outside this module. Declaration can
use static qualifier. (Use -exportlocal to inhibit warning)
802.c:7:1: Definition of cmp

Finished checking --- 6 code warnings

809 :デフォルトの名無しさん:2006/06/22(木) 16:27:40
>>808
いや、俺は>>802じゃないけど・・・少なくとも
>>806は本当に専門学校生だったらしいw

810 :デフォルトの名無しさん:2006/06/22(木) 16:29:17
>>808
あとここ、まともなレスがもらえるスレじゃないからw
丸投げに対して即席で考えた生ぬるいソースを出す奴もいるよ?
少なくとも俺はそんなことしないし、俺はうpロダを使っているよ

811 :デフォルトの名無しさん:2006/06/22(木) 16:32:29
うははは、やっぱリロードしてた。俺もしてたけど。
まぁ>>808の真意はわからないだろうなぁ。永遠に。
じゃ、頑張って解答してあげて。

812 :デフォルトの名無しさん:2006/06/22(木) 16:34:04
>>802はBCCでコンパイルできたけど、いちいち他人のソースにケチつけるスレでもないから
俺は指摘はしないよ。ただ、指摘した>>808だって修正したのを出してないんじゃ
コンパイラが出したエラーメッセージを分かってないんじゃ・・・

813 :デフォルトの名無しさん:2006/06/22(木) 16:34:50
コンパイラって・・・

814 :デフォルトの名無しさん:2006/06/22(木) 16:36:51
まぁ俺は「解析、理解できないクズ」って言われちゃったから、>>802を題材に、その奥底に潜む
問題点を指摘してやっただけなんだけどw

815 :デフォルトの名無しさん:2006/06/22(木) 16:37:23
ぐちぐち他人の批判をするくらいなら、訂正するか
もっと上を行ったソースを出せば?誰かさんみたく、口先だけで
相手を煽るだけ、結局「自分も」分かってないのがオチなんじゃね?

816 :デフォルトの名無しさん:2006/06/22(木) 16:38:36
誰かさんって、君のことでしょ?

817 :デフォルトの名無しさん:2006/06/22(木) 16:40:26
>>815
少なくとも>>808の内容はわかるよな。まぁ、俺が言いたかったのはその先のことなんだが。
答えは教えないよ。自分で考えてね。じゃ。

818 :デフォルトの名無しさん:2006/06/22(木) 16:50:34
解析はしてないだろとオモタ

819 :デフォルトの名無しさん:2006/06/22(木) 17:19:33
ねぇねぇ、お父さん、他人のソースをコンパイルして
エラーメッセージが出たのを理由に、自分はよくわかっていなくても
エラーメッセージを突き出しただけで自分の方が優位だと勘違いしている
痛い低学歴 >>806=>>808 がいるよ

可愛いねぇ〜 (可愛いねぇ〜)

あっ、自分が指摘したエラーメッセージが何なのか理解しているか
修正したソースを出さないから、結局お前もわかってないじゃんと言われて
焦ってるね

可愛いねぇ〜 (可愛いねぇ〜)

820 :デフォルトの名無しさん:2006/06/22(木) 17:21:05
>>817
>答えは教えないよ。自分で考えてね。じゃ
いや、分かってるからこっちは教えてもらわなくても結構だよ?
少なくとも俺が書いたソースじゃないし。
何が言いたいの?結局、お前が何をしたら良いかわかってないんじゃん。
他人のソースをどうこう言うなら、目的を果たせるだけでも良いから
自分なりのできたソースを出してみろよ、専門学校生w

821 :デフォルトの名無しさん:2006/06/22(木) 17:22:39
またおきまりのやり取りだな。
このスレに限らず宿題スレの住人は、自分のコードの指摘を受けるのを怖がりすぎてる。
タダで指摘してくれる人なんてめったにいないぞ?
上のやり取りでも>>817が指摘しようとした内容は結局わからずじまい。成長するチャンスを一つ失ったわけだ。
俺にも>>817がいいたかったことがおぼろげながら分かるが、正解かどうかわからないので発表はしない・・・

822 :821:2006/06/22(木) 17:24:32
>>819
いやあれコンパイラの出力じゃなくて、どうみてもlint系ツールの出力だから

823 :デフォルトの名無しさん:2006/06/22(木) 17:27:57
論より証拠じゃねとオモタ

824 :デフォルトの名無しさん:2006/06/22(木) 17:35:11
>>808は得意気に自分が使っているコンパイラが出したエラーメッセージを出しただけで
精進しようねと言うが、自分が指摘できない、あるいは理解して修正できないなら
他人に言われるまでもなくお前こそ精進すべき
そして今日も元気に低学歴でも学校に通ってりゃ
自分より格下だと思っているニートを叩きに精を出してるみたいだね。
いや、ごくろうごくろう
ニートって呼ばれる人の中には、知識、経験が豊富な人もいるから気をつけとけ
下手すりゃ能力も経済力もない奴が、社会的な地位だけででけぇ面して
相手を罵倒すると、しっぺ返しを食らうかもよ
現代の社会は労働の義務はあれど、しなくても生きられる経済的に余裕のある人もいるし

825 :デフォルトの名無しさん:2006/06/22(木) 17:36:13
キモイよ

826 :デフォルトの名無しさん:2006/06/22(木) 17:37:50
>>821
>成長するチャンス
少なくともそれはソースを書いた奴であって
第三者にはどうでも良い。というか、こっちは不適切な箇所はわかっているんだけどね。
口ばっかりで訂正したソースを出さない
>>808は機械が指摘した箇所を提示しただけ。だからどのように書き直すか?
については答えられる能力があるとは限らない。

827 :808:2006/06/22(木) 17:38:44
lint cleanがお好みなあなた向けのコード:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

static int cmp(const void *a, const void *b){
return (int)(*(char*)a - *(char*)b);
}

int main(){
char alph[20];
int i;
srand((unsigned)time(NULL));
for(i = 0; i < 20; i++)
alph[i] = 'a' + (char)(rand() % 25);
for(i = 0; i < 20; i++)(void)putchar(alph[i]);
(void)puts("");
qsort(alph, 20, sizeof(char), cmp);
for(i = 0; i < 20; i++)(int)putchar(alph[i]);
return 0;
}

828 :808:2006/06/22(木) 17:39:26
普通の人向けのコード:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int cmp(const void *a, const void *b){
return *(char*)a - *(char*)b;
}

int main(){
char alph[20];
int i;
srand(time(NULL));
for(i = 0; i < 20; i++)
alph[i] = 'a' + rand() % 25;
for(i = 0; i < 20; i++)putchar(alph[i]);
puts("");
qsort(alph, 20, sizeof(char), cmp);
for(i = 0; i < 20; i++)putchar(alph[i]);
return 0;
}

以上。

829 :デフォルトの名無しさん:2006/06/22(木) 17:40:33
>(void)puts("");
少なくともこういうキモイソースは俺は書かないw
指摘する前に、よりマシなソースを書けよw

830 :デフォルトの名無しさん:2006/06/22(木) 17:41:27
>for(i = 0; i < 20; i++)putchar(alph[i]);
for文の閉じ括弧から離したら?気持ち悪い。どうでも良いんだけどさw

831 :デフォルトの名無しさん:2006/06/22(木) 17:41:46 ?#
また学歴厨が暴れてるのか。もう来ないとか言ってたくせに。

832 :デフォルトの名無しさん:2006/06/22(木) 17:42:15
くだらねー。

833 :808:2006/06/22(木) 17:42:41
種明かし:
$ splint --version
Splint 3.1.1 --- 02 May 2003

Command Line: Unrecognized option: --version
A flag is not recognized or used in an incorrect way (Use -badflag to inhibit
warning)

Finished checking --- no code processed

834 :デフォルトの名無しさん:2006/06/22(木) 17:43:40
で、奥底に奥底に潜む問題点とやらは

835 :808:2006/06/22(木) 17:44:51
わからないなら、それでいいから。
懇切丁寧に教える気0だから。

836 :デフォルトの名無しさん:2006/06/22(木) 17:44:54
日下部って知ってる?

837 :デフォルトの名無しさん:2006/06/22(木) 17:51:05
>>830
tabじゃないの?まぁ俺も2chに書くとき以外では一行で書くようなキモイことやらんけど。

838 :デフォルトの名無しさん:2006/06/22(木) 17:53:18
大卒と学歴詐称したやつがまだいるのか。

839 :デフォルトの名無しさん:2006/06/22(木) 17:54:26
問題点
スルーできないってことじゃね

840 :デフォルトの名無しさん:2006/06/22(木) 17:54:34
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |  次でボケて!!!   |
 |________|
    ∧∧ ||
    ( ゚д゚) ||
    / づΦ

841 :デフォルトの名無しさん:2006/06/22(木) 17:54:41
ニート叩きの低学歴もまだいるのか。まぁ、ここではそんな
ソースを書く奴の素性なんてどうでも良いんだよw

842 :デフォルトの名無しさん:2006/06/22(木) 17:55:19
またまた盛り下がってまいりました

843 :デフォルトの名無しさん:2006/06/22(木) 17:55:41
  ┏┳┳┓              ┏┳┳┓
┏┫┃┃┃ スレ違い雑談は┃┃┃┣┓
┃┃┃┃┣┓   ここまで.┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃スレ違い ┣┫ ・∀・ ┣┫  END ┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
                ┗━━━┛

844 :デフォルトの名無しさん:2006/06/22(木) 17:56:40
っつか、性帝トーマスも昼間っから書いていることあるよ
今日はたまたま昼間に書かなかっただけだがw
ニート叩きに反応せずとも、学歴に反応したところを見ると
トーマスはやはり専門(ry

845 :デフォルトの名無しさん:2006/06/22(木) 17:56:57
            ____
         __,,/  _, ----`ヽ  :.
     :.  / _     ___   、\
       / /   i      \   \\ :.
     :. ,'./       i  ヽ:.   ヽ:.:.. ヽ.ヽ
      ,'/    / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :.
     :. |i .i i  .i /  ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
       |i .i l  :N_, -弋 \弌弋ナ:}:.:}
    :. |i∧ ', :{ ,ィjモト \  イjミトイイV :.  な…
       .|  :メヽ.', `ozZ}      izN。ハ::{     なんなんですか?
      :. |  :ヾ_! ゝ "゙゙    '  `゙ ハ.:', :.   ここ、どこですか?
      |  :.:_イ .:.ヽ.   (二フ , イ :.:.:!:.ヽ     なんであなたたち
   :.  / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:.   学歴に拘るんですか?
      / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
 :.  / .{. ',ヾ、ヽi .:.:.{ /(^`  |.:.:.:.//: : :.}: . ヽ.:.
   / /  ) ヽ ヾ、ヽ:.ハ ヤ{   ∧/.-‐'": : |:.:. i ',
  ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、  : : : l:.:.: .ハ ',
  { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
  V | .:.:/:.:|_,ィ' ̄  ヽ三{ `ー-ノ : イ : : :/:.:i.:{  リ
    ヽ:.:{、.:.V     : : ヘ     : : {: : :/:.::∧|
     ヽ! )人    : : :人      : : : / \! :.
      "  ヽ : : : : :/イ{     :.ノ: : : :.\ :.
       :.  \__///: :\______/: : : : : : : ヽ
           / //: : :|;|: : : : : : i: : : __: : : : ',
       :.     / 、 {;{   |;|   . : i/. : : : : : :|
          / `Y;{. . . .|;|. : : : /i: : : : : : : : :l

846 :デフォルトの名無しさん:2006/06/22(木) 17:59:28
>>826
第三者はどうでもいいなら絡むな馬鹿が

847 :デフォルトの名無しさん:2006/06/22(木) 18:02:32
>>844
お前ウザから、頼むから消えてくれよ

848 :デフォルトの名無しさん:2006/06/22(木) 18:02:38
>>846
ソースを書いていない第三者に絡んできた奴はお前だろ?
第一、>>826は正論を言ってるだけで、相手を煽るような絡みはしていない
何必死こいてんだ、お前?まぁ、そういうレスは本当に余裕のない
能力も経済力もない奴だという素性がバレるね

849 :デフォルトの名無しさん:2006/06/22(木) 18:03:34
>>848
お前ウザから、頼むから消えてくれよ

850 :デフォルトの名無しさん:2006/06/22(木) 18:04:31
>>847
お前いちいちレスしている以上はウザから、頼むから消えてくれよ
っつかお前が消えろ、その方が解決するだろ?
ここは他人のソースにケチをつけるスレじゃないって
既に結論は出てるのに、未だにケチをつけて
偉そうなことを言うわりには、まともなソースを出さないじゃん

一方、誰かさんは答えの分かりきった問題で
できた人間が技術力があるから偉いとか言い出すしw
このスレの趣旨をわかってなさすぎ
ここに来る前に、相手の素性が分からない場所で
無意味ないい合いをするくらいなら、2chに来ない方が良いよ?

851 :デフォルトの名無しさん:2006/06/22(木) 18:05:20
>>849 >>847
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ

っつか、ほんっとうにここって低学歴と低所得で生活だけでなく
精神面でも余裕のねぇ〜〜〜クズが多いんだなwwwwww

852 :デフォルトの名無しさん:2006/06/22(木) 18:05:51
>>850
お前ウザから、頼むから消えてくれよ

853 :デフォルトの名無しさん:2006/06/22(木) 18:07:35
>>850
お前いつもファビョるよなw
マジウザいよw

854 :デフォルトの名無しさん:2006/06/22(木) 18:10:03
またかよ。
↓何事も無かったように、宿題と解答をどうぞ。

855 :デフォルトの名無しさん:2006/06/22(木) 18:12:03
>>852 >>853
そういうレスしかできず、ソースも書かないお前らって
ほんっと知能が低いっつーか生活にも余裕がないんだな・・・
とりあえず
>>808は精神面で精進しようね。こいつに味方している奴は
確実に低学歴だけどニートになれずにバイトしているプロファイリングができますw

856 :デフォルトの名無しさん:2006/06/22(木) 18:13:50
質問した者ですが話についていけません

857 :デフォルトの名無しさん:2006/06/22(木) 18:14:04
俺はソース書いてるが。ま、そんなことどうでもいいけどな

858 :デフォルトの名無しさん:2006/06/22(木) 18:16:18
>>855
いつまで第三者が書いたソースにケチ付けられたことに粘着するのやら。

859 :デフォルトの名無しさん:2006/06/22(木) 18:17:25
プロなら「ソース書く」なんて言わないんだけど、そんなこともどうでもいい話ではある。

860 :デフォルトの名無しさん:2006/06/22(木) 18:17:45
こっちは厨隔離スレであってこっちで質問したことが間違い

861 :デフォルトの名無しさん:2006/06/22(木) 18:19:53
>>860
なるほど。最近のやりとりの中では、一番勉強になった。ありがとう。

862 :デフォルトの名無しさん:2006/06/22(木) 18:20:03
どうしていつも喧嘩になっちゃうんですか?;;

863 :デフォルトの名無しさん:2006/06/22(木) 18:23:57
悪いのは、上を見て習う姿勢がなく、下を見てバカにする目的がある奴が
質問スレに来るから。これは他の板でもありがちなパターンだよ。
そして、煽り、罵倒をした奴が自分が至らない部分を指摘されて
指摘してきた相手の粗を必死に探そうとする・・・

864 :デフォルトの名無しさん:2006/06/22(木) 18:27:18
>>863
甘い。ただ一人の為に荒れるんだよ。こいつ他のスレも荒らしてるし。

865 :デフォルトの名無しさん:2006/06/22(木) 18:29:59
学歴、ニートをNGワードに登録すれば無問題。俺はヲチしたいので登録してないけどw

866 :デフォルトの名無しさん:2006/06/22(木) 18:30:44
今来産業

867 :デフォルトの名無しさん:2006/06/22(木) 18:36:30
まぁ奴はコードさえ書ければ満足しているみたいだから、煽りもほどほどにな。

868 :デフォルトの名無しさん:2006/06/22(木) 18:37:25
>>864
甘い。何がただ一人だよ?複数が書き込んでいるのはバレバレだろ?
一人だけってのは言い訳にもならない。自分が精進しろよ?

869 :デフォルトの名無しさん:2006/06/22(木) 18:44:26
>>868
いや一人ですから。

870 :デフォルトの名無しさん:2006/06/22(木) 18:46:02
>>869
過去ログ読めば分かる、結局、一人に責任を擦り付けて
自分はさも悪くないって言い逃れしたいタイプだろ?
お前とも言い合いはしない、少なくともお前は黙ってろ

871 :デフォルトの名無しさん:2006/06/22(木) 18:59:14
>>870
いや読んでますけど?
なんか俺が暴れてる奴みたいな書き方だけど、俺は暴れてないし。

872 :デフォルトの名無しさん:2006/06/22(木) 19:20:59
ジサークジエーン、ジサークジエーン

873 :772:2006/06/22(木) 20:20:44
情報が少なかったようなのでもう少し詳しく書きます。
[1] 授業単元: C言語入門
[2] (v,w)=1/n ΣΣ(vi,wj)の二乗 を計算せよ。
Σの左側がi=1からnまで
Σの右側がj=1からmまで
m orthonormal vectors w1,w2, 、、、wm(mまで)
n orthonormal vectors v1v2,,,,,,,,,vn(nまで)

まずベクトルを読み込むのにsscanfを使用せよ
[3]
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語: (C
[4] 期限: 2006-6-23

874 :デフォルトの名無しさん:2006/06/22(木) 20:59:24
>>873
「の二乗」はどこからどこにかかるのか。
v,wがベクトルなのか、vi,wjがベクトルなのか。特に後者の場合、ベクトルの次元はいくつなのか。
sscanfで読み込むというベクトルの表記方法や順番はどうなっているのか
m,nの入力方法はどうするのか。
数式はどこからどこまでが分母なのか。
…ということでまだ足りてない。

875 :772:2006/06/22(木) 21:25:20
v,wがベクトルです。 
 ΣΣ(Vi×Wj)の二乗

Σの左側がi=1からnまで
Σの右側がj=1からmまで
n次元です。
なかなか文でうまく説明できないのですが
読み込む課題はとりあえずおいておいて
ΣΣ()の計算をどういうふうに書くか教えてもらえないでしょうか





876 :デフォルトの名無しさん:2006/06/22(木) 21:40:49
数学的にどういう計算式になるのかがわからないのか?
それは分かるけど、Cのプログラムにできないのかを書くと印象が良くなるんだが。


まぁ、外積の総和だな。

877 :772:2006/06/22(木) 22:06:29
Σひとつだけならわかるんですが
ΣΣふたつをどう数学的に計算していいかわからないし
そしてCのプログラムにもできそうにないです。
Σひとつの場合は
for(i=1;i<n;i++)
などとすればよさそうですが。。


878 :デフォルトの名無しさん:2006/06/22(木) 22:07:52
あちゃー・・・

879 :772:2006/06/22(木) 22:09:08
http://www.ne.jp/asahi/search-center/internationalrelation/mathWeb/arithmetic/summation-Basic/summation2PRF.htm
一応このサイトで数学の意味は少しはわかったような気はしていますが
プログラムがなんとも。。

880 :デフォルトの名無しさん:2006/06/22(木) 22:10:35
ΣΣ(´д` )

881 :772:2006/06/22(木) 22:14:55
ΣΣで検索すると 顔文字がでてきてばかりで困りました。

882 :デフォルトの名無しさん:2006/06/22(木) 22:25:58
Σふたつの場合は
for (i = 1; i < n; i++)
for (j = 1; j < m; j++)
などとすればよい。


883 :772:2006/06/22(木) 23:17:27
A used measure is the subspace overlap of the first few eigenvectors of covariance
matrices. The overlap of the subspace spanned by m orthonormal vectors w1, . . . ,wm with a
reference subspace spanned by n orthonormal vectors v1, . . . , vn
can be quantified as follows:
Σ(i=1からn)Σ(j=1からm)(Vi×Wi)2乗 

以下のようなベクトルファイル一番上の左がx座標でその横y z そしてまたxyzxyzxyzと
続いていくベクトルをこのファイルからうまく抽出して
 0.07949 0.05776 -0.09131 0.03649 0.00516 -0.05521 0.00819
-0.01256 0.00312 0.01077 -0.00219 0.00505 0.00577 -0.00316
0.00581 -0.00237 0.00261 0.00789 -0.00416 0.00103 0.01031
-0.00525 0.00048 0.01112 -0.00522 0.00078 0.00729 -0.00244
0.00014 0.00547 -0.00054 0.00690 -0.00341 0.00075 0.00087
-0.00409 0.00414 -0.00461 -0.00101 0.00778 -0.00664 -0.00494
0.00699 -0.00562 -0.00840 0.00451 -0.00236 -0.01554 0.00230
-0.00121 -0.01362 -0.00056 0.00043 -0.00850 -0.00117 0.00103
-0.00699 -0.00508 0.00398 -0.00615 -0.01055 0.00686 -0.00413
-0.01220 0.00796 -0.00478 -0.01340 0.00493 -0.00165 -0.01246
0.00076 0.00468 -0.01352 -0.00473 0.00792 -0.02160 -0.00644
0.01331 -0.02674 -0.00531 0.00965 -0.02702 -0.00121 0.00474
-0.02249 -0.00052 0.00117 -0.02183 0.00460 -0.00339 -0.02206
0.00733 -0.00734 -0.01673 0.00556 -0.00889 -0.01302 0.00619


884 :772:2006/06/22(木) 23:18:54
計算するプログラムなのですが
このわかりにくい文ですが
それをみて
大まかなプログラム作れませんか?
だいたいこんなのかなというプログラムを見て参考にしたいです。


885 :デフォルトの名無しさん:2006/06/22(木) 23:19:26
[1] 授業単元: 情報処理入門
[2] 問題文(含コード&リンク):
1 整数型変数としてiを定義
2 iを1から10まで1ずつ増やしながら以下の事項を実行して終了
(a)変数iを10進法表示でi= の形で1行ずつ出力(表示)
(b)もしiが9だったらi=9に続けてCub!と表示して改行
(c)もしiが9だったらi=10に続けてFinished.と表示して改行
[3] 環境
 [3.1] OS:/Linux 
 [3.2] コンパイラ名とバージョン: 分かりません
 [3.3] 言語:どちらでも可 かなwW
[4] 期限: ([19年6月27日正午)
[5] その他の制限: なし

なんとかよろしくお願いします


886 :デフォルトの名無しさん:2006/06/22(木) 23:56:26
>>885
 [3.2] コンパイラ名とバージョン: 分かりません
 [3.3] 言語:どちらでも可 かなwW
[4] 期限: ([19年6月27日正午)
釣られてやるけど、かなりふざけてんな。
その程度の問題もできないのに学習してんの?
無駄な努力というよりも無駄に時間と労力を費やしてんな・・・

887 :デフォルトの名無しさん:2006/06/23(金) 00:07:37
2chではこれくらいの無能はザラ

888 :デフォルトの名無しさん:2006/06/23(金) 00:13:25
>>772
英語でもいいから問題文は丸々写して。変に解釈してくれると逆に分からなくなるから。

889 :デフォルトの名無しさん:2006/06/23(金) 00:30:34
>>772
よく分からんけど、とりあえず計算式だけ見るなら

double sum = 0.0;
for( i = 0 ; i < n ; i++ ) {
for( j = 0 ; j < m ; j++ ) {
sum += v[i] * v[i] * w[j] * w[j];
}
}
sum /= m;

で、sumに結果が残ってるはず。
共分散行列の固有ベクトル(の一部)で貼られる小空間?何のことやらさっぱり。

890 :デフォルトの名無しさん:2006/06/23(金) 00:32:53 ?#
>>885
なんでそんな授業取ったんだ?いますぐ進路変更した方がいいぞ。

891 :772:2006/06/23(金) 00:36:19
>889
ありがとうございます。
まず計算式から考えてみます。


892 :デフォルトの名無しさん:2006/06/23(金) 00:49:22
>>885
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2159.txt
どちらでも可とのことなので、C++で書きました。


893 :デフォルトの名無しさん:2006/06/23(金) 00:52:15
>>885
#include<stdio.h>
main(){
int i;
i = 1; printf("i=%d\n",i);
i = 2; printf("i=%d\n",i);
i = 3; printf("i=%d\n",i);
i = 4; printf("i=%d\n",i);
i = 5; printf("i=%d\n",i);
i = 6; printf("i=%d\n",i);
i = 7; printf("i=%d\n",i);
i = 8; printf("i=%d\n",i);
i = 9; printf("i=%d\n",i);
if(i == 9) printf("Cub!\n");
if(i == 9){
i = 10; printf("i=%d\n",i);
printf("Finished.\n");
}
}

こーゆーことか?

894 :デフォルトの名無しさん:2006/06/23(金) 00:56:41
>>893
腹いてぇ〜〜〜、っつか、君もようやるわw

895 :デフォルトの名無しさん:2006/06/23(金) 00:57:04
しまった 続けてって改行せずにってことだったのか orz

896 :デフォルトの名無しさん:2006/06/23(金) 01:02:07
#include <stdio.h>
int main()
{
for (int i = 1; i <= 10; ++i) {
printf("i=%d\n", i);
if (i == 9) printf("i=9に続けてCub!\n");
if (i == 9) printf("i=10に続けてFinished.\n");
return 0;
}

897 :896:2006/06/23(金) 01:02:39
しまった、閉じ括弧が足りねぇ。

898 :デフォルトの名無しさん:2006/06/23(金) 01:17:11
tugisurehadoko?

899 :デフォルトの名無しさん:2006/06/23(金) 01:25:24
C/C++の宿題を片付けます 67代目
http://pc8.2ch.net/test/read.cgi/tech/1150273052/

900 :デフォルトの名無しさん:2006/06/23(金) 01:31:04
ttp://www.elc.ees.saitama-u.ac.jp/ProgrammingI/
こういう基本的な部分にも目を通しておきたいところだな

901 :デフォルトの名無しさん:2006/06/23(金) 01:46:49
>>900
そこの資料、自分のコピーライトでCG紹介しているけど、他人の作ったものの引用なら拙くないかい?
#ってここに書いてもしょうがないか。

902 :デフォルトの名無しさん:2006/06/23(金) 02:01:18
>>901
う〜〜ん、それは大学側に問い合わせてみるとか?
まぁ、どーでも良いことだろうけど

903 :デフォルトの名無しさん:2006/06/23(金) 04:13:04
[1] 授業単元:プログラミング演習T
[2] 問題文(含コード&リンク):
課題内容:家族4人の貯金を管理するプログラムを作成せよ.入力は誰の貯金かを数字で指定し,その後金額を入れる.人の指定時に-1を入力するまで入力を受け付け,それまでの総計を出力する.入力の単位は円,金額の表示法はこれまで自分が作ったものを使え.

[実行結果]

だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):2
いくら?1280

だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):1
いくら?11800

(省略)

だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):4
いくら?55000

だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):-1

現在の貯金額
婆さん:21,000円
父さん:2,350円
母さん:3,410円
通信:67,253円
合計:93,995円
[3] 環境
 [3.1] OS:WindowsXP SP2
 [3.3] 言語:C++
[4] 期限:(6月23日12:00)
[5] その他の制限:配列とポインタ変数、コンピュータのメモリの配置、配列、配列のデータを参照する、多次元の配列を主に使用して欲しい
            入門C言語って教科書使ってて106ページまで習いました。

904 :デフォルトの名無しさん:2006/06/23(金) 04:33:37
くぃたぁ〜〜〜〜〜〜!

905 :デフォルトの名無しさん:2006/06/23(金) 07:20:40 ?#
>>903
>これまで自分が作ったもの

を出せ

906 :デフォルトの名無しさん:2006/06/23(金) 12:25:16
>>885です
まだC言語にはいってすぐなんです(泣
PCとか今までいじらなかったんで訳分かりません(泣
相当簡単だったみたいですね
ありがとうございました

907 :デフォルトの名無しさん:2006/06/23(金) 15:15:57
>>903に似たの、見たことあるね・・・っつか期限切れか

908 :デフォルトの名無しさん:2006/06/23(金) 22:44:24
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
コマンドライン引数で指定した入力ファイル中に含まれる文字数を表示するプログラムを作成しなさい。オプションの追加により別の数え方を追加表示できるようにすること。コマンドライン引数がない場合とオプション "-h" が指定された場合は使用法を表示する。

対応オプションは以下のとおり。複数オプションの同時指定にも対応すること。また、ファイルがない場合や未対応オプション指定時には警告を表示すること。
"-c" : 大文字のみを数えた結果を表示
"-s" : 小文字のみを数えた結果を表示
"-n" : 数字のみを数えた結果を表示
"-h" : 使用法を表示し、終了

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年06月28日まで
[5] その他の制限:標準ライブラリは入出力関数のみ使用可でお願いします

よろしくお願いします

909 :デフォルトの名無しさん:2006/06/24(土) 05:57:58
>>908
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2169.txt
複数オプションの同時指定非対応バージョン。
そこそこコマンドっぽくなったと思う。
同時指定OKにするのは結構骨が折れそうだ。
strcmpを自作したが、もっとうまい方法はないかな?

910 :909:2006/06/24(土) 06:00:40
最初の一行
#include "stdafx.h"
は間違って書いたので無視してくれるとうれしい。

911 :デフォルトの名無しさん:2006/06/24(土) 11:33:52
コマンドラインオプションなんてgetopt使うんじゃだめなの?

getoptを使わないのなら、>>909より短くて複数オプションに
対応した方法がK&Rに載ってるよ。

912 :デフォルトの名無しさん:2006/06/24(土) 11:46:14
ttp://www.uploda.org/uporg425025.pdf

基礎的な問題なのですが、手こずってしまっています。。
どなたかお願いできないでしょうか。

913 :908:2006/06/24(土) 12:24:20
>>909
ありがとうございました
参考にさせていただきます

>>911
getoptは存在すら知らなかったので、使用できないと思います
K&Rの方も参考にして同時指定可のプログラムに挑戦してみます

914 :デフォルトの名無しさん:2006/06/24(土) 15:27:41
>>912
梃子摺ると言うからには多少はやってみたのかな?
テンプレ書かない罰として自分の書いたソースを晒して味噌。

915 :デフォルトの名無しさん:2006/06/24(土) 15:31:29
>>914
仕切るなアフォが。
お前はただ粛々と問題といてりゃいいんだよ

916 :デフォルトの名無しさん:2006/06/24(土) 16:13:57
>>915
ぬるぽ。

917 :772:2006/06/24(土) 17:51:19
先日のΣの計算に取り込むベクトルの問題に悩んでます。以下のような座標ファイルが規則正しく
xyzxyzxyzxyzxyzと延々と左から右へとずっと並んでるんですが、その規則性のあるファイルのxyz座標を読み込み、先日の内積計算へと
もちこみたいのですがどうすればいいでしょうか?
以下のファイルがベクトル1であとひとつのベクトルファイル2を用意して
内積計算へと持ち込みます。 (少しヒントらしきものをもらったのでのせます)


918 :772 追加:2006/06/24(土) 17:53:51
i=0;  /*ベクトル1のデータを蓄える*/
while(fgets(buf,BUFSIZ,VEC1)!=NULL){
if(buf[1]!='*'){
sscanf(buf, "%lf", vec1+(i++));
if((i)%(atomのnumber*3)!=0)
sscanf(buf+11, "%lf", vec1+(i++));
if((i)%(atomのnumber*3)!=0)
sscanf(buf+22, "%lf", vec1+(i++));
if((i)%(atomのnumber*3)!=0)
sscanf(buf+33, "%lf", vec1+(i++));(ヒントはここまでしかありません)
11.13642 46.57651 11.78757 10.85565 45.16160 13.56510 11.79662
44.96445 16.16222 15.03647 44.10112 17.64687 16.04173 40.77797
19.16648 17.24299 41.12352 22.77835 20.46682 39.37864 23.90952
23.15746 39.53033 26.67550 26.97254 39.27797 26.68635 28.90853
38.78521 29.96662 32.66750 38.79458 30.63201 34.91243 38.83600
33.73716 38.01074 41.06615 33.87775 40.80431 41.36232 36.46101
43.97936 43.57868 36.53159 46.16385 41.03266 34.68410 43.62163
38.69248 32.97922 40.24719 38.26314 31.19010 37.85413 35.25521
31.12784 36.48342 34.33027 27.66556 34.41254 31.41009 26.35950
34.44107 29.30857 23.17541 30.79630 29.79289 22.21776 28.49281
27.29159 20.46028 25.04667 28.78014 21.05261 23.46330 31.92716
19.71563 25.28298 35.06292 18.68012 29.08018 34.96435 18.53454
29.22944 31.19537 18.04975 32.16905 29.29601 16.52669 34.86163
31.55792 18.08194 36.10186 33.02285 21.39182 33.41676 35.34860
22.79776 31.59634 35.91553 26.11925 28.89758 34.12246 28.08728
25.14300 34.90411 28.04732 21.98410 34.64353 25.95630 18.24288
ここに文字でうまく説明できないですがこんなのかなぁと思ったプログラムを
見せていただくとありがたいです。


919 :772 追加:2006/06/24(土) 17:57:22
おそらく(x座標)11.13642の数値(左上)から11マス進んだところが(y座標)46.57651
で以下そのようにx,y,zと続くベクトルファイルを読み込んで
内積計算に持ち込むんだと解釈はしたのですが
ヒントのプログラムの意味もわかりません。


920 :デフォルトの名無しさん:2006/06/24(土) 18:04:55
えーと、(11.13642, 46.57651, 11.78757)が最初の座標と言うことでいいのかな?
つーか、そのファイルをアップロードするのが一番話が早そうだ。

921 :デフォルトの名無しさん:2006/06/24(土) 18:07:06
>>918
#include <stdio.h>
#include <string.h>
int main(){
  char buf[1024];
  double v[256][3] = {0};
  int i = 0, j = 0;
  FILE *fp = fopen("VEC1.txt", "r");
  if(!fp){return 1;}
  while(fgets(buf, sizeof(buf), fp)){
    char *p = strtok(buf," \t\n");
    if(!p) break;
    do{
      sscanf(p, "%lf", &v[i][j++]);
      if(j > 2){j = 0; i++;}
    }while(p = strtok(NULL, " \t\n"));
  }
  fclose(fp);

  /* データ読み込み終わり */
 
  return 0;
}

922 :デフォルトの名無しさん:2006/06/24(土) 18:09:19
訂正
#include <stdio.h>
#include <string.h>
int main(){
  char buf[1024];
  double v[256][3] = {0};
  int i = 0, j = 0;
  FILE *fp = fopen("VEC1.txt", "r");
  if(!fp){return 1;}
  while(fgets(buf, sizeof(buf), fp)){
    char *p = strtok(buf," \t\n");
    while(p){
      sscanf(p, "%lf", &v[i][j++]);
      if(j > 2){j = 0; i++;}
      p = strtok(NULL, " \t\n");
    }
  }
  fclose(fp);

  /* データ読み込み終わり */
 
  return 0;
}

923 :デフォルトの名無しさん:2006/06/24(土) 18:14:16
>920
そうです。
(11.13642, 46.57651, 11.78757)(10.85565 45.16160 13.56510)その横の数値がまた
x座標で2行目の最初がy座標となってます。
このようにxyzxyzxyzと並んでいるのでそれをうまくxだけとりだし
yだけとりだしzだけとりだして内積計算するようです。
ポインタというのを使いメモリを確保?するみたいですが
わかりません。



924 :772:2006/06/24(土) 18:24:18
前のΣΣ計算ですが
keisan2=0;
for(k=0;k<n次元ベクトル;k++){
for(j=0;j<n次元ベクトル;j++){
keisan1=0;
for(i=0;i<atomnoNumber*3;i++)
keisan1 += (*(vec1+i+atomNonumber*3*j))*(*(vec2+i+Atomnonumber*3*k));
keisan2 += keisan1 * keisan1;
}
}
printf("%f\n", keisan2/n次元ベクトル);
となるようですが、
*(vec1+i+atomNonumber*3*j)ここの部分がよくわかっていません。
さきほどのベクトルを読み込んで×3というのが。。。

いろいろ質問してすいません。
>922さん
ありがとうございます。




925 :デフォルトの名無しさん:2006/06/24(土) 19:46:24
>>772
何度も聞いてることも含めて。
・nとmはどう与えられるの?
・xyzxyzと続くのはどうでもいいけど、どれがViを表すデータで、どれがWjを表すの?
・atomnoNumberとatomNonumberとAtomnonumberってバラバラ?全部どういう意味?
とりあえず上2つの答えが分かれば無理矢理でも作るから。

926 :772:2006/06/24(土) 20:58:03
atomnoNumberとatomNonumberとAtomnonumberって全部同じ意味です。
さきほど書いたデータの一部がベクトル1で
このような内容のファイル2つ用意したときに
v w にそれぞれ代入し
計算したいのです。


927 :772:2006/06/24(土) 21:24:26
ぶっちゃけていえば
http://www.gromacs.org/gromacs/documentation/paper-manuals.html
ここの
pdfマニュアルのAnalyzeの項の
COVARIANCEのとこにでてくる
計算式のプログラムを作りたいのです。


928 :デフォルトの名無しさん:2006/06/24(土) 22:10:20
>>772
最初からそれを出しておけば話が早かったかもね。
こんな感じか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2180.c
ベクトルの要素数をD、vの次元nをN、wの次元mをMとして#defineしている。
データは標準入力から読み込み、D*N個の数値に続いて
D*M個の数値が来ることを想定している。
始めのD*N個がv、続くD*M個がwを表す。
vとwが正規直交基底なら、overlapとやらが表示されるはず。


929 :772:2006/06/24(土) 22:35:28
>928
すいませんでした。
ご丁寧に作っていただきありがとうございました。
これを使って解析するため作りたかったのですが
自分にはまだ基礎知識が乏しく悩んでいた状況でした。


930 :デフォルトの名無しさん:2006/06/25(日) 14:45:36
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
二つのテキストファイル(名前は任意。英単語のみからなる)を読み込み
strcmp関数を使い順番を判定しながら一つのテキストファイルにまとめよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 6/28まで
[5] その他の制限:strcmpを使うこと

whileを二重に使ってみたのですが
ファイル位置表示子をうまく戻すことができません。
よろしくお願いします




931 :デフォルトの名無しさん:2006/06/25(日) 15:48:15
>>930 纏めるルールあh?

932 :デフォルトの名無しさん:2006/06/25(日) 15:50:11
曖昧だな

933 :デフォルトの名無しさん:2006/06/25(日) 16:03:33
> 順番
とりあえず 2つのテキストファイルA,Bがあるとして、
1行ずつ読み込みました、
 テキストファイルA の後ろに テキストファイルB をくっつければいいのか?
 テキストファイルB の後ろに テキストファイルA をくっつければいいのか?
 その判定するルールはなんだ? strcmp(Aの行,Bの行)等として0,正負でどうかするのか?


934 :デフォルトの名無しさん:2006/06/25(日) 16:25:00
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
成績を管理するプログラムを作成する.一人一人の学生には,学籍番号(整数)がつけられているので,学籍番号と成績(実数)の組みで管理することとする.
本問題で作成するプログラムは,4人の学生について,英語と数学の成績を入力すると,英語と数学の合計点で最高点を取った学生を出力するものとする.
成績を管理する構造体の名前をstudent_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを,
  1. 学籍番号はint型とし,名前をidとする
2. 英語の成績はdouble型とし,名前をengとする
3. 数学の成績はdouble型とし,名前をmathとする
とする.また,以下の関数を作成し,それを利用すること.
 1. n人のデータを入力する関数:void InputData(student_t s[], int n)
* 第一引数は学生の配列
* 第二引数は学生の人数
* 関数自体は,何人でも扱えるように作成すること
課題実行においては以下の点に注意すること.
* 結果の表示は小数点以下3桁で表示すること.
* 各教科の得点は,正の数に限定してよい.
* 最高点が複数人いた場合は,最高点を取った中で最初に入力された人を表示すること.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 6月26日まで

よろしくお願いします。

935 :デフォルトの名無しさん:2006/06/25(日) 16:31:30
生徒は先生の数字ゲームの道具じゃない!!(><)

936 :デフォルトの名無しさん:2006/06/25(日) 16:35:06
質問
InputData()は確保された配列のサイズをどうやって知ればいいですか?
例えば、配列が4つしかないのにn=100とかで呼ばれた場合。




937 :デフォルトの名無しさん:2006/06/25(日) 17:00:57
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int _id;
double _eng, _math;
}student_t;
int cmp(const void *s1, const void *s2){
double t1 = ((const student_t*)s1)->_eng + ((const student_t*)s1)->_math,
t2 = ((const student_t*)s2)->_eng + ((const student_t*)s2)->_math;
return int(t1 - t2);
}
void InputData(student_t *s, int n){
int i;
for(i = 0; i < n; i++, s++){
printf("学籍番号 : "); scanf("%d", &s->_id);
printf("英語の成績 : "); scanf("%lf", &s->_eng);
printf("数学の成績 : "); scanf("%lf", &s->_math);
}
}
int main(){
student_t s[4];
int n = sizeof(s) / sizeof(s[0]);
InputData(s, n);
qsort(s, n, sizeof(student_t), cmp);
printf("学籍番号 : %d\n英語の成績 : %.3f\n数学の成績 : %.3f", s[n - 1]._id, s[n - 1]._eng, s[n - 1]._math);
return 0;
}

938 :930:2006/06/25(日) 17:17:35
strcmp(Aの行、Bの行)を使い、その返り値(正負)によって順番を判定し、一つにまとめていく。
同じ物は無いと仮定してよい。
だそうです。写し忘れてました。すいません

939 :デフォルトの名無しさん:2006/06/25(日) 17:20:38
>937
なぜわざわざソートする?
InputData()で最高点を取った香具師のインデックスを返すことにすればええやん

940 :デフォルトの名無しさん:2006/06/25(日) 17:21:29
>>939
他人のソースにけちをつけるくらいになら自分もソースを出すべし。
っつか、そのくらいのこと、 そ〜っと しておいてやってw

941 :デフォルトの名無しさん:2006/06/25(日) 17:24:47
inputdata()は入力するための関数じゃん

942 :デフォルトの名無しさん:2006/06/25(日) 17:25:35
>938
だから 正負と A,B の出力順の関係を示せ、ってw


943 :デフォルトの名無しさん:2006/06/25(日) 17:25:54
どうせなら逆順ソートにして最初の要素を取り出すようにすれば綺麗なのに。

944 :939:2006/06/25(日) 17:35:45
あぁ問題に
void InputData(student_t s[], int n)
って指定されてたのね...

んじゃしょうがない
int maxPos=0; /* 0は仮 */
void InputData(student_t s[], int n)
{
int i;
for(i = 0; i < n; i++, s++){
printf("学籍番号 : "); scanf("%d", &s->id);
printf("英語の成績 : "); scanf("%lf", &s->eng);
printf("数学の成績 : "); scanf("%lf", &s->math);
if(s[maxPos].eng+s[maxPos].math<s[i].eng+s[i].math) maxPos=i;
}

printf("学籍番号 : %d\n英語の成績 : %.3f\n数学の成績 : %.3f", s[maxPos].id, s[maxPos].eng, s[maxPos].math);

こんな感じで。


945 :デフォルトの名無しさん:2006/06/25(日) 17:38:00
さっ、これじゃ荒れるだけなんで、うpロダ使おうねぇ

946 :デフォルトの名無しさん:2006/06/25(日) 17:41:25
でも、入力処理で評価するのは美しくない。
入力、評価、出力、各フェーズは混ぜるべきではない。
#まぁ、宿題だからどうでもいいと言えばいいけど、>944のアプローチは仕事ならやり直しだ。

947 :デフォルトの名無しさん:2006/06/25(日) 17:46:48
するってーと >946 のところでは
入力、評価、出力、を1つのクラスにまとめることはNGで別々のクラスにするのかい?
#まぁどうでもいいと言えばいいけど、そんなアプローチは仕事ならやり直しだ。

948 :デフォルトの名無しさん:2006/06/25(日) 17:47:28
>>946
んなこと言い出したら変数名からしてもうアウトだ。

949 :デフォルトの名無しさん:2006/06/25(日) 17:48:33
>>947
読解力の無い馬鹿
君のせいでいつもスレが余計に伸びてるのだが

950 :934:2006/06/25(日) 17:54:19
>937
>944

ありがとうございます。今から自分で実行してみます。
助かりました!

951 :デフォルトの名無しさん:2006/06/25(日) 17:58:20
>946
SeparateQueryfromModifier


952 :デフォルトの名無しさん:2006/06/25(日) 17:59:36
>>947
一つのクラスに纏めることと、処理を混ぜることは等価ではない。
#仕事で>944のようなコードを書いているとしたら、とんだシンドラーシンドロームだ。


953 :デフォルトの名無しさん:2006/06/25(日) 18:19:24
...なんか俺の所為? 荒れちゃってる? スマソ

int FindMaxPos(student_t s[], int n)
{
#define SCORE(s,i) (s[i].eng+s[i].math)
int i,maxPos=0;
for(i = 1; i < n; i++) if(SCORE(s,maxPos)<SCORE(s,i)) maxPos=i;
return maxPos;
}

これで勘弁してくれぃ

954 :デフォルトの名無しさん:2006/06/25(日) 18:22:52
ってことは、>>937もダメかorz

955 :デフォルトの名無しさん:2006/06/25(日) 18:26:49
時々でいいからundefのことも思い出してください

956 :デフォルトの名無しさん:2006/06/25(日) 18:39:19
>>954
構造体のメンバがアンダーバーで始まっているのはちょっと問題かも。
でも、qsort()を使うこと自体は悪くはないんでない?

957 :デフォルトの名無しさん:2006/06/25(日) 19:08:18
943 :デフォルトの名無しさん :2006/06/25(日) 17:25:54
どうせなら逆順ソートにして最初の要素を取り出すようにすれば綺麗なのに。


958 :デフォルトの名無しさん:2006/06/25(日) 19:16:10
>>957
粘着低学歴乙。これだから専門(ryは・・・

959 :デフォルトの名無しさん:2006/06/25(日) 19:25:59
>>957
O(N)で済む作業をわざわざO(NlogN)にせんでもええやろ。

960 :デフォルトの名無しさん:2006/06/25(日) 20:33:13
>959 は >956,954 宛

961 :930:2006/06/25(日) 20:59:20
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
二つのテキストファイル(名前は任意。英単語のみからなる)を読み込み
strcmp関数を使い順番を判定しながら一つのテキストファイルにまとめよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 6/28まで
[5] その他の制限:strcmpを使うこと

【参】strcmp(Aの行、Bの行)を使い、その返り値(正負)によって順番を判定し、一つにまとめていく。
よってstrcmp(A, B)の関数値が負ならばAの文字列を先に出力し、
正ならばBの文字列を先に出力すればよい。
先にどちらかのテキストファイルがなくなるので、残ったファイルの処理を忘れないこと。

度々無駄にレスしてしまってすいませんorz
原文丸写しですのでこれで間違いないと思います。

962 :デフォルトの名無しさん:2006/06/25(日) 21:24:33
[1] 授業単元:構造体
[2] 問題文:・構造体を用いて次のような文字列を入力し(300*90+6-50/10=)結果表示できる最大4桁入力の計算機を作成しなさい。
      ・演算子は優先順位を考慮し、ゼロで割った場合はエラーになること。
      ・数字の間に空白が入力されるとエラーになること。
      ・数字、演算子、=、空白のみで、その他が入力されるとエラーになること。
      ・最初に*,/が入力されるとエラーのなること。
[3] 環境
 [3.1] OS:WINDOWS
 [3.2] コンパイラ名とバージョン:よくわかりません
 [3.3] 言語:C
[4] 期限:2006年6月30日まで
[5] その他の制限:特になし



963 :デフォルトの名無しさん:2006/06/26(月) 10:03:57
最初からそれを出しておけば話が早かったかもね。
こんな感じか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2180.c
ベクトルの要素数をD、vの次元nをN、wの次元mをMとして#defineしている。
データは標準入力から読み込み、D*N個の数値に続いて
D*M個の数値が来ることを想定している。
始めのD*N個がv、続くD*M個がwを表す。

>
すいません。↑を参考に考えたのですが
D要素というのがよくわかりません。
3要素があるものを3次元ベクトル
N要素があるものがN次元ベクトルというものと思っていますが
要素がDというのはどういうことなのでしょうか?
N*Dというのが理解できていません。
少し解説していただくとありがたいです。


964 :デフォルトの名無しさん:2006/06/26(月) 10:49:56
>>962
#include<stdio.h>
#include<stdlib.h>
#include<setjmp.h>
#include<ctype.h>
jmp_buf buf;/* <- 構造体を用いた */
int parseAtom(char**s);
void skip(char**p){while(isspace(**p))++*p;}
int parseMul(char**s){int v = parseAtom(s);
    for(;;)if(**s == '*')++*s,v*=parseAtom(s);
    else if(**s=='/'){int v2;++*s;v2=parseAtom(s);
    if(v2==0)longjmp(buf,1);v/=v2;}else return v;}
int parseAdd(char**s){int v = parseMul(s);
    for(;;)if(**s == '+')++*s,v+=parseMul(s);
    else if(**s=='-')++*s,v-=parseMul(s);else return v;}
int parseAtom(char**s){
    int v;skip(s);if(**s=='('){*s+=1;v = parseMul(s);if(**s!=')')longjmp(buf,4);++*s;}
    else{char*p=*s;v=strtol(p,s,0);if(p==*s)longjmp(buf,3);}skip(s);return v;}
int parse(char*s){int v = parseAdd(&s);if(*s != '=')longjmp(buf,2);return v;}
int main(){
    char src[80],*errmsg[]={"ゼロ除算","=で式が終端していない","文法エラー",")の数が足りない"};
    int err=setjmp(buf);if(err)printf("Error: %s\n",errmsg[err-1]);
    else printf("%d\n",parse(gets(src)));return 0;}


965 :デフォルトの名無しさん:2006/06/26(月) 12:03:49
>>963
(1,2,3) → 3次元

(1,2,3) … 1要素
(2,3,4) … 2要素
(3,1,2) … 3要素
 :
(5,6,2) … N要素

(2,3,5) … 1要素
(2,8,4) … 2要素
(3,4,6) … 3要素
 :
(3,5,2) … M要素

OK?

966 :デフォルトの名無しさん:2006/06/26(月) 12:46:37
>965
なんとなくわかったような・・・
これだと963に書いている
N次元がN要素で
Dが次元ですか??


967 :デフォルトの名無しさん:2006/06/26(月) 13:03:35
頭悪すぎ。

968 :デフォルトの名無しさん:2006/06/26(月) 14:34:10
>967
頭悪いのでもう少し教えてください。


969 :デフォルトの名無しさん:2006/06/26(月) 14:39:34
[1] 授業単元:プログラミング
[2] 問題文 引数の階乗を計算するdouble型の関数を作り、1から10までの階乗を表示するプログラムを作ってください
[3] 環境
 [3.1] OS:XPです。。
 [3.2] コンパイラ名とバージョン:よくわからないんですけどgccだと思います。
 [3.3] 言語:Cです
[4] 期限:できれば今日中で(>_<)
[5]最近プログラミングを始めた初心者なのですが
授業中居眠りをしたらまったく分からなくなってしまいましたo(;△;)o。。。
友達と一緒にがんばってたのですが解決できずにここに質問してしまいました(>へ<)、
どなたかお願いします(*^_^*)


970 :デフォルトの名無しさん:2006/06/26(月) 15:21:46
#include<stdio.h>
void kansuu(double hikisuu);
int main(void)
{kansuu(10.0);return 0;}
void kansuu(double hikisuu)
{int i;double kekka,temp,t;kekka=1;
for(i=1;i<=hikisuu;i++)
{kekka *= i;}printf("%f",kekka);}
なんでdouble型?

971 :デフォルトの名無しさん:2006/06/26(月) 15:24:25
>>969
#include <stdio.h>
double kaijo(double n) {
if(n<=1) return 1;
return n*kaijo(n-1);
}
main() {
int i;
for(i=10; i>0; i--) printf("%2d! = %lf \n",i,kaijo(i));
}

972 :デフォルトの名無しさん:2006/06/26(月) 16:27:38
>>969
#include <stdio.h>
double kaijo(double n) {
static double t=1;
return t*=(n++);}
main() {
int i;
for(i=1; i<=10; i++) printf("%2d! = %lf \n",i,kaijo(i));}

973 :デフォルトの名無しさん:2006/06/26(月) 17:50:51
>>969
#include<stdio.h>
#include<math.h>
double fact(double n){
    return tgamma(n+1);
}
int main(){
    int i;
    for(i=1;i<=10;++i)
        printf("%d! = %.0f\n",i,fact(i));
    return 0;
}

974 :デフォルトの名無しさん:2006/06/26(月) 22:06:12
>964
ありがとうございました。
でも、ちょっとむずかしい・・・


975 :デフォルトの名無しさん:2006/06/26(月) 22:10:49
>>963
要素数というのはC言語的な配列の要素数という意味で書いた。
次元は線型空間的な意味で、R^Dの部分空間の次元を意味している。
つまり、部分空間vを張る基底があったとき、その基底をなすベクトルの数がN。
Mについても同じ。
なので>>965の説明とは逆になってしまってる。

また、D,N,Mの関係はD>=NかつD>=Mになると思われる。
3次元がどこから出てきたのかわからないけど、D=3だと少ないような。


976 :デフォルトの名無しさん:2006/06/26(月) 22:41:28
[1]授業単元:データ構造、アルゴリズム
[2]問題文:与えられたmain関数の中で呼び出される関数を完成させプログラムを実行させる。(別のファイルに適当な番号と名前、点数を3つで1つのセットをいくつか用意し、それをソートや二分探索して結果を表示する。)
struct student{
int num;
char name[10];
int score;
};
main(){
if((Num=read_file("ファイル名"))==0)
exit(0);
quick_sort(Student,0,Num-1);
while(1){
printf("番号を入力してください。");
if(scanf("%d",&key)==EOF)
break;
if((i=bi_search(key))!=-1)
prinf("番号=%d,名前=%s,点数=%d\n",Student[i].num,Student[i].name,Student[i].score);
else
printf("データがありません。\n");
}
}



[3]環境:
 [3.1]OS:Linux
[3.2]コンパイラ名とバージョン:バージョンは分からないのですが、gccでお願いします。
 [3.3]言語:Cでお願いします。
[4]期限:2006年7月4日でお願いします。
[5]その他の制限:Cはだいたい習ったのですが、今いち理解できてなくて(TωT)構造体やファイルのことなどがよく分からないので誰かお願いします\(。´□`・。\)

977 :デフォルトの名無しさん:2006/06/26(月) 22:46:28
>>976
・以下の関数を作成すると言うことか?
read_file()
quick_sort()
bi_search()
・これらの関数仕様は変更してはいけないのか?
・struct studentにはscoreしかないが、「点数を3つ」ということはこの構造体を変更すると言うことか?
・その「別のファイル」は用意できないのか? それくらいならできるだろ。

978 :デフォルトの名無しさん:2006/06/26(月) 23:00:34
ヒント:3つで1つのセット

979 :デフォルトの名無しさん:2006/06/26(月) 23:03:40
>>977
本人じゃないけど「与えられたmain関数の中で呼び出される関数を完成させ」って
言ってるんだから、その仕様の関数を作る課題じゃないか?

980 :デフォルトの名無しさん:2006/06/26(月) 23:23:36
>>977
確かに、
int read_file(const char file_name, struct student **pstudent, int *num);
とかにしたいところではあるな。

981 :980:2006/06/26(月) 23:24:16
重大な間違いを見つけたが訂正はせん。

982 :デフォルトの名無しさん:2006/06/27(火) 02:31:45
>975
ありがとうございました。
もう少し考えて頭を整理してみます。


983 :超初心者:2006/06/27(火) 10:57:44
[1] 授業単元:情報処理基礎演習
[2] 問題文:順列・組合せ
      キーボードから2つの整数値nとmを入力し、n個の中から
      m個取り出すときの順列と組合せを求める組合せを作成して
      ください。ただし、nとmの入力処理は、処理可能な範囲の
      範囲が入力されるまで繰り返すようなアルゴリズムにしてく
      ださい。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:よくわかりません。
 [3.3] 言語:C
[4] 期限:28日水曜日午後5時
[5] その他の制限:最近defineやdo〜while文を習った。

984 :デフォルトの名無しさん:2006/06/27(火) 13:14:10
[1] 授業単元:C言語プログラム
[2] 問題文
次の処理を行うプログラムを作成しなさい。

char型の配列strを用意し、キーボードから英数字の文字列を入力する。
格納された文字列に、アルファベットの大文字がある場合、すべて小文字に変換する。
文字列strを画面に出力する。

[3] 環境 
[3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C
4]期限: ([2006年6月28日12:00まで]
[5] 配列、ループ,ポインタ


985 :デフォルトの名無しさん:2006/06/27(火) 14:44:33
#include <stdio.h>

int main(void){
char str[256], *p = str;
scanf("%s", str);
while(*p){
if (*p >= 'A' && *p <= 'Z'){
*p += 'a' - 'A';
}
p++;
}
printf("%s\n", str);
return 0;
}

986 :980:2006/06/27(火) 15:03:36
>>983
> 順列と組合せを求める組合せを作成
っていったいどういう意味だ?


987 :デフォルトの名無しさん:2006/06/27(火) 15:04:17
うお、名前欄が残ってた orz

988 :デフォルトの名無しさん:2006/06/27(火) 16:18:33
>>976
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2191.txt

989 :988:2006/06/27(火) 16:21:34
*** 85,91 ****
pos = (pos + num) / 2;
} else {
if (pos == 0) {
! return 0;
}
pos = pos / 2;
}
--- 85,91 ----
pos = (pos + num) / 2;
} else {
if (pos == 0) {
! return -1;
}
pos = pos / 2;
}

990 :超初心者:2006/06/27(火) 18:08:19
ごめんなさい。
『順列と組合せを求めるプログラムを作成』です。

991 :デフォルトの名無しさん:2006/06/27(火) 18:36:04


992 :デフォルトの名無しさん:2006/06/27(火) 18:36:35


993 :デフォルトの名無しさん:2006/06/27(火) 18:37:05


994 :デフォルトの名無しさん:2006/06/27(火) 18:37:36


995 :デフォルトの名無しさん:2006/06/27(火) 18:38:08


996 :デフォルトの名無しさん:2006/06/27(火) 18:39:57


997 :デフォルトの名無しさん:2006/06/27(火) 18:40:28


998 :デフォルトの名無しさん:2006/06/27(火) 18:40:59


999 :デフォルトの名無しさん:2006/06/27(火) 18:42:59
 

1000 :デフォルトの名無しさん:2006/06/27(火) 18:43:34
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

332 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)