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

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

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

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

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

前スレ
C/C++の宿題を片付けます 121代目
http://pc11.2ch.net/test/read.cgi/tech/1230678123/
2デフォルトの名無しさん:2009/01/15(木) 16:05:19
気に入らない質問やその他や発言はスルーの方向で。
3デフォルトの名無しさん:2009/01/15(木) 16:08:59
前スレ987

(32^816077) mod (1009*1013)
電卓片手に計算してみた
答え 2

自分で計算しといてなんだが、なんか信じられん
4デフォルトの名無しさん:2009/01/15(木) 16:16:02
そんなのって、あんま(余)りだぁ〜〜
5デフォルトの名無しさん:2009/01/15(木) 16:17:54
あれ?剰余を求めるだけ?なら似たような問題が過去にもあったし、
それを流用すれば良くね?
6デフォルトの名無しさん:2009/01/15(木) 16:22:46
>>5
いや宿題自体はちがうけど、
答えだけでも教えてほしいって書いてあったから。
なんとなくやってみた
7デフォルトの名無しさん:2009/01/15(木) 16:26:27
37335
8デフォルトの名無しさん:2009/01/15(木) 16:35:12
9デフォルトの名無しさん:2009/01/15(木) 16:59:33
> 32 ^ 816077 mod 1022117
指数を2進展開すると 11000111001111001101
元の計算を二乗と基数倍だけで書くと(逆ポーランド)
1 32 * 2 ^ 32 * 2 ^ 2 ^ ... 2 ^ 32 * 2 ^ 2 ^ 32 *

int modpow(int x, int n, int p)
{
        int i;
        long long int y = 1;
        for(i = 1 << 30; i > 0; i >>= 1) {
                y = (y * y) % p;
                if(n & i) y = (y * x) % p;
        }
        return (int)y;
}
10デフォルトの名無しさん:2009/01/15(木) 17:09:10
void Point_k(int j,double Point[k][4]);

void Point_k(int j,double Point[k][4]){ /*ただ今1辺6Mの正方形*/

int c=NX-1; //X軸の要素数-1
int d=NX-1;

int m=c+NY; //i+Y軸の要素数=5
int n=d+NY;

//double Point[k][4];



for(j=0;j<k;j++){

if(j<=d){
Point[j][0]=X_memori*j;
Point[j][1]=X_memori*j+X_memori;
Point[j][2]=0;
Point[j][3]=0;

 このプログラムの意味分かりますか??
11デフォルトの名無しさん:2009/01/15(木) 17:10:46
>>10
質問スレへ行け
12デフォルトの名無しさん:2009/01/15(木) 17:26:48

long long int y = 1;
13デフォルトの名無しさん:2009/01/15(木) 17:44:16
10問の一桁同士の四則演算(問題はランダム)の計算ドリルを作り
正解数、正解率、かかった時間を表示させたい。
また、1問10秒という制限をつけ、その制限時間をリアルタイムに表示せよ

というものがどうしてもできません。
出題、正解数やかかった時間の表示はできるのですが
その先でつまづいています。
14デフォルトの名無しさん:2009/01/15(木) 17:45:57
>>13
死ね
>>1くらいよめ
舌噛め
15デフォルトの名無しさん:2009/01/15(木) 17:46:55
ミスって問題文だけ投稿してしてしまいました。
[2] 問題文(含コード&リンク): >>13
[3] 環境
 [3.1] OS: DOS
 [3.2]lcc
 [3.3] 言語: C言語
[4] 期限: 今日まで
16デフォルトの名無しさん:2009/01/15(木) 17:50:27
せっかちな>>14
17デフォルトの名無しさん:2009/01/15(木) 17:50:43
[1]C
[2]
(1)
12の2乗数は144となり、各桁の数字の総和は1+4+4=9である。
10000以下の正整数で、2乗数の各桁の数字の総和が最大の数字はいくつか?

(2)
3乗すると丁度8桁になる正整数はいくつあるか?

[3]LINUX C
[4]24時まででお願いします。

よろしくお願いします。
18デフォルトの名無しさん:2009/01/15(木) 17:55:50
>>14 >>14 >>14 >>14 >>14 >>14 >>14 >>14 >>14
>>1
> 気に入らない質問やその他や発言はスルーの方向で。
19デフォルトの名無しさん:2009/01/15(木) 17:57:04
>>15
dosでlccとか、死ね
LSI-Cのことだろ
20デフォルトの名無しさん:2009/01/15(木) 17:57:15
21デフォルトの名無しさん:2009/01/15(木) 18:00:08
ルールに従わない奴を陰湿に罵倒して自治厨を気取るくせに、
自分が違反しているのを指摘されるとファビョる、引きこもり基地外ニートって
明らかに社会のクズだよね。
22デフォルトの名無しさん:2009/01/15(木) 18:00:39
>>20
お前だよ、>>1も読めないバカは
日本語を習ってから出直せよ、いい年したおっさんが。
お前の人生終わってんぞw
23デフォルトの名無しさん:2009/01/15(木) 18:01:58
19 名前:デフォルトの名無しさん 投稿日:2009/01/15(木) 17:57:04
>>15
dosでlccとか、死ね
LSI-Cのことだろ
↑詰らない揚げ足をとって、自分は知識がありますといった
自己主張が激しい反面、下らないことしか指摘しないため、
社会から干されているバカ
24デフォルトの名無しさん:2009/01/15(木) 18:02:28
>>21
25デフォルトの名無しさん:2009/01/15(木) 18:08:08
あっ、社会の外れの基地外がまたファビョってますよw
やだね、こういうのって。何でこのスレに来ているんだろう。
別にお前が頼られているわけじゃないんだが?w
まぁ、お前みたいに社会でまともに相手にされない奴が、
ここを生き甲斐にしちゃったんだろうけど、所詮ここは
不特定多数の人が来る2ちゃんねるの一部ですからw
狭い世界で必死になってなさい。お前見たな奴は、出世せずに
この世を去るんでしょうけど、見ず知らずの誰かなんてこっちは
知ったこっちゃないんで、あしからず。さぁ、>>1も読めないバカは以後放置よろ。
26デフォルトの名無しさん:2009/01/15(木) 18:18:44
っつか、何かすぐに 死ね って書くけど、人間性の悪さが露呈してますよ?
言われた側が気分を悪くしていると思っているんだろうけど、別の人間から見ると
さもしい 人間に見えるよ。
27デフォルトの名無しさん:2009/01/15(木) 18:21:06
すみません、LSICでした。
なにぶん3ヶ月前にはじめたばかりでもうしわけない
28デフォルトの名無しさん:2009/01/15(木) 18:34:17
>>17 (1)
#include <stdio.h>
int main( void )
{
int i,j,k,l=0,m=0;
for (i=1;i<=10000;i++) {
k=0;j=i*i;
while(j>0){k+=j%10;j/=10;}
if(k>m){m=k;l=i;}
}
printf("%d:%d\n",l,m);
return 0;
}
29デフォルトの名無しさん:2009/01/15(木) 18:43:34
30585 ◆i9Dvbn/Lf6 :2009/01/15(木) 19:00:48
お願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを機動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
zipで専用ロダにもあげておきます
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8603.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2009年1月22日まで]

さっぱりわからないので少しだけでもお願いします
31585 ◆i9Dvbn/Lf6 :2009/01/15(木) 19:02:48
32デフォルトの名無しさん:2009/01/15(木) 19:16:23
lcc.exeだから間違いではない
33デフォルトの名無しさん:2009/01/15(木) 19:17:51
厳密な数値解及び解析的な近似解ってこれ逆じゃないの?

なんで解析解が近似なのさ
34585 ◆i9Dvbn/Lf6 :2009/01/15(木) 19:24:37
>>33
いえ、確かに問題文には
>厳密な数値解及び解析的な近似解
と書いてあります
35デフォルトの名無しさん:2009/01/15(木) 19:34:31
>>33
使う式のことじゃないのか?
正しい式を数値解析で解くのと
近似式を解析的に解くのとで
36デフォルトの名無しさん:2009/01/15(木) 19:36:15
>>30
>機動時
いい加減、直したらどうだろ
37デフォルトの名無しさん:2009/01/15(木) 20:09:31
>>36
機動性に優れていて、良いだろ?
38デフォルトの名無しさん:2009/01/15(木) 20:10:00
>>31
最低でも、3枚目の一番上の式を確認しないとな・・・
39デフォルトの名無しさん:2009/01/15(木) 21:06:27
前スレにて
940 名前:デフォルトの名無しさん[sage] 投稿日:2009/01/14(水) 22:40:43
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://uproda.2ch-library.com/src/lib091407.txt
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C++
[4] 期限: 1月16日まで
[5]その他の制限:特になし
という質問で
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8641.txt
という回答を頂いたのですが上手くいきません。
失礼かと思いますが、どこがおかしいか教えていただけると助かります。
40デフォルトの名無しさん:2009/01/15(木) 21:26:35
>>39
> [1] 授業単元:C言語
> [3.3] 言語: C++

どっちだよ。
C++ならそれで動く。
Cなら
- std:: をすべて消す
- #include <c*****> を #include <*****.h> に直す
- for ループ部の i を for ループの外であらかじめ宣言しておく
- static_cast<int> を (int) に直す
くらいか。

それと、「上手くいきません」じゃなくて具体的に書いとけ。
コンパイルエラーが出たんならエラーメッセージを貼るとか、実行結果がおかしいならどこがどうおかしいのかとか。
41デフォルトの名無しさん:2009/01/15(木) 21:49:35
>>40
上手くいきました。ありがとございました。
42デフォルトの名無しさん:2009/01/15(木) 22:21:11
>>31
この辺みて、教員に確認しろ。
http://www.ne.jp/asahi/tokyo/nkgw/gakusyu/rikigaku/2zyufuriko/zyufuriko_kaisetu/zyufuriko_kaisetu.html
仕様が固まれば、コーディングくらいしてくれる人がいるだろ
43デフォルトの名無しさん:2009/01/15(木) 22:55:10
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8652.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月16日午前8時
[5] その他の制限:できるだけ簡単な関数でお願いします
44デフォルトの名無しさん:2009/01/15(木) 23:26:02
[1] 授業単元: プログラミング基礎実習
[2] 問題文(含コード&リンク):
s2 の文字列を s1 へ,最大で n 文字未満コピーするstrncpy関数の作成
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C言語
[4] 期限:あさって
[5] その他の制限: 関数宣言は
char *strncpy(char *s1, char *s2, int n);
45デフォルトの名無しさん:2009/01/15(木) 23:46:26
>>44
最大で n 文字未満ってことはn-1文字コピーしてNULL文字入れろってことか?
何返せばいいのかもわからん。とりあえずs1そのまま返しておいた
char *strncpy(char *s1, char *s2, int n){
int i;
for(i = 0; i < n-1 && s1[i]; i++)
s1[i] = s2[i];
s1[i] = '\0';
return s1;
}
46デフォルトの名無しさん:2009/01/15(木) 23:46:27
切羽詰ってます。よろしくお願いします><

[1] 授業単元:ディジタル信号処理
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8653.txt
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:16日の12:00
[5] その他の制限:.txtのDFTプログラムのような簡単な記述で、流れは変更前のものを参考に
47デフォルトの名無しさん:2009/01/16(金) 00:24:23
手羽詰ってます、安いよ安いよーよろしくご購入して下さい ><
48デフォルトの名無しさん:2009/01/16(金) 00:43:38
>>46
元のコードがタイポってるってどういうことよ
4945:2009/01/16(金) 00:56:45
>>45
ミスってるw
char *strncpy(char *s1, char *s2, int n){
int i;
for(i = 0; i < n-1 && s2[i]; i++)
s1[i] = s2[i];
s1[i] = '\0';
return s1;
}
こうだな
50デフォルトの名無しさん:2009/01/16(金) 01:17:13
皆様のおかげで無事単位を取得できました

本当にありがとうございます

これからは人に頼らずできるかぎり自分の力で頑張っていきたいです
51デフォルトの名無しさん:2009/01/16(金) 01:19:34
ここで回答する側になって人に頼られるようになるともっといいね
がんばれ
52デフォルトの名無しさん:2009/01/16(金) 01:40:03
久々に和んだ
53デフォルトの名無しさん:2009/01/16(金) 01:49:17
このスレの本質は自分に解ける課題を楽しむというエゴであって
相手のためを考えることなんかじゃない
頼られていると感じたいというエゴでもいいけどさ

[1] 授業単元:暇つぶし

が好きだ
54デフォルトの名無しさん:2009/01/16(金) 01:53:28
プログラミングをしたって、商用で使わなきゃ金なんて入ってこないし。
まぁ、趣味でも良いが、カンパウェアとして、任意で気に入ったら
金を払ってくれるソフトでも作ってな。
55デフォルトの名無しさん:2009/01/16(金) 01:56:35
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): コード http://web.hc.keio.ac.jp/~onda/c-lang/mcalc0.c
               課題 http://web.hc.keio.ac.jp/~onda/c-lang/ のTermEndRport.doc のステージ4まで
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual studio 2008
 [3.3] 言語: C++)
[4] 期限: ([2009年1月16日9時まで]

56デフォルトの名無しさん:2009/01/16(金) 01:58:23
そんなおまいを、KOしてやりたいぜ・・・
57デフォルトの名無しさん:2009/01/16(金) 02:00:31
>>56
反応早いなw
そんなに暇なのか
58デフォルトの名無しさん:2009/01/16(金) 02:03:27
ちょっと前にも多倍長演算でヘンテコな質問繰り返してるヤツがいたっけ。
59デフォルトの名無しさん:2009/01/16(金) 02:04:21
いやね、言語にC++と指定しておきながら、C言語なのは
なんでだろ〜なんでだろ〜なんでだなんでだろ〜 って思ってね
リングに沈めてやろか?って
60デフォルトの名無しさん:2009/01/16(金) 02:06:02
Cの課題をC++で解いて提出するのが流行ってるのかね
61デフォルトの名無しさん:2009/01/16(金) 02:09:45
>>55
んで、どうすれば良いの?int型の上限を超える2つの値の加算のコードを
各自で最初から記述しろと?俺流ので良ければやるが、朝の9時までか・・・もう眠い。
っつか、それ、確かに長いな・・・もっとスマートにしてちょっ
62デフォルトの名無しさん:2009/01/16(金) 02:11:32
>>61
TermEndRport.docに
>超基本機能版(mcalc0.c)に対して、次の手順に従って、機能を拡張しなさい。
って書いてあるよ
63デフォルトの名無しさん:2009/01/16(金) 02:15:50
>>62
みなかったことにしよう
64デフォルトの名無しさん:2009/01/16(金) 02:16:22
同じリンク先のmalc0.cをいじってやるのですが全然わからなくて・・・
65デフォルトの名無しさん:2009/01/16(金) 02:18:57
>>62
見落としてた。まぁ、出来ないことはないが、
コードの解析が面倒だから、あとはあんたに任せたw
66デフォルトの名無しさん:2009/01/16(金) 02:19:40
やらないんなら出来ないのと同じw
67デフォルトの名無しさん:2009/01/16(金) 02:25:15
あんだよぉ、俺を試そうってかぁ?朝の9時までってタイムリミットがあるから
今はやらないんだよぉ。起きたら自主でやるから、許してw
68デフォルトの名無しさん:2009/01/16(金) 02:31:11
ゴネたけど、見たら仕組みが分かったんで、ステージ2まですぐに終わったから
このままステージ4までやるわw
69デフォルトの名無しさん:2009/01/16(金) 02:34:16
あれ?ステージ2の答えが合ってねーぞ・・・
70デフォルトの名無しさん:2009/01/16(金) 03:03:37
>>69
どんな感じですか?
71デフォルトの名無しさん:2009/01/16(金) 03:06:15
>>70
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8654.c
TermEndReport.docのと比較してみて。目で追って確認したところ、
繰上げがされていない結果が記述されているようだが・・・
72デフォルトの名無しさん:2009/01/16(金) 03:10:15
73デフォルトの名無しさん:2009/01/16(金) 03:31:19
74デフォルトの名無しさん:2009/01/16(金) 03:32:46
あと、出題者も分かっているとは思うけど、入力する値に
マイナスを入れても正常に機能しないので、あしからず。
さっ、寝よっと。
75デフォルトの名無しさん:2009/01/16(金) 03:37:37
ありがとうございます! これで単位が来ます。 ちょっと質問なのですがステージ2の
putchar(0x20) は何を意味しているのですか?
76デフォルトの名無しさん:2009/01/16(金) 03:39:27
あ、起きてからでも教えてくださいw
77デフォルトの名無しさん:2009/01/16(金) 03:41:50
>>76
あっ、いや、 ' ' 空白と同じ。嫌なら変えておいて。
78デフォルトの名無しさん:2009/01/16(金) 03:45:15
putchar(' '); ね。あと、add(a,b,MAXDIGIT+1); の+1は要らんかったかも・・・
79デフォルトの名無しさん:2009/01/16(金) 03:46:46
せっかく作ったので貼ってみる stage4
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8657.txt
80デフォルトの名無しさん:2009/01/16(金) 05:13:18
せっかく作ったので貼ってみる スペシャルステージ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8658.txt
演算子定義するのが面倒だったから"減算"ではなく"負数の加算"だけども。
81デフォルトの名無しさん:2009/01/16(金) 05:43:23
落ち着け
82デフォルトの名無しさん:2009/01/16(金) 07:27:45
スイマセン、どなたか>>43を解いて頂けないでしょうか?
83デフォルトの名無しさん:2009/01/16(金) 07:54:53
>>43
#include <stdio.h>
#include <string.h>
int main()
{
char str[20] = {0};
int len;
int i;
printf("文字列を入力:");
scanf("%s", str);
len = strlen(str);
for (i=len-1; i>=0; i--)
printf("%c", str[i]);
putchar('\n');
for (i=0; i<len; i++)
printf("%d,", str[i]);
putchar('\n');
for (i=0; i<len; i++)
printf("0x%x,", str[i]);
putchar('\n');
return 0;
}
84デフォルトの名無しさん:2009/01/16(金) 08:24:06
1.10個の2桁で正の10進データをstaticデータとしてプログラム中にいれ、11個目の数をー999とする。ポインターを使って、この10個の数の合計と平均を求めるプログラムをつくる。

2.Sachiko, Emiko, Setuko, Rie, Mariko, Sara の6人の名前をポインター配列にし、頭文字がSで次の文字がaの名前を表示するプログラムを書け。

3.3つの数字をmain文でscanfで与える。そして、関数maxで3つの数の最大値を求めて、mainに帰り次のように出力する。(p102参照)
    
    3つの数を入力してください? 55 86 32
    最大値は86です。

4.do while文をつかって、1から100までの和を求めよ。

5. 練習問題29のメニューの中にそれぞれの金額を設定し、つまり
kingaku[ ] という配列をもう一つつくり、2つ以上の品を注文したとき
品名と合計金額をもとめるプログラムをつくる。
  メニュー表:1サーロインステーキ
        2ビーフストロガノフ
        3ヒレカツ定食
        4すき焼き定食

8584:2009/01/16(金) 08:25:19
6. page 137 のソートのプログラムを参考にして、8人の名前をアルファベットでプログラム中に配列で入力しておき(参考p94−ポインタ配列)、ABC順に名前を並べ替える。
p137のソートプログラム参考
#include<stdio.h>
#define N 8
Void main (void) /*基本選択法によるソート*/

   Static int a[]={100,55,65,33,211,66,31,90};
Int j,k,min,s,dumy;
For (k=0;k<N−1;k++) {
Min=a[k];
S=k;
For (j=k+1;j<N;j++) {
If (a[j]<min) {
Min=a[j];
S=j;
}
}

Dumy=a[k]; a[k]=a[s]; a[s]=dumy;
}
For (k=0;k<N;k++)
Printf(“%5d”,a[k]);
}

以上です。徹夜してもわからなかったのでお助けください。
よろしくお願いします。
86デフォルトの名無しさん:2009/01/16(金) 09:04:24
87デフォルトの名無しさん:2009/01/16(金) 09:39:46
>>84
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8660.zip
5番目の問題にある「練習問題29」を提示してくれ。
88デフォルトの名無しさん:2009/01/16(金) 09:57:35
>>84
何か勘違いしてた。
↓5番の問題
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8661.c
8946:2009/01/16(金) 11:54:16
訂正します
[1] 授業単元:ディジタル信号処理
[2] 問題文(含コード&リンク):
 入力値は{1,1,1,1,0,0,0,0}で、出力が
0   4.000 0.000 4.000
1 1.000 -2.414 3.414
2 -0.000 -0.000 0.000
3 1.000 -0.414 1.082
4 0.000 -0.000 0.000
5 1.000 0.414 1.082
6 0.000 -0.000 0.000
7 0.999 2.414 2.613
になる8点FFTプログラムを作成せよ
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:16日の17時
[5] その他の制限:なるべく簡単な記述で
90デフォルトの名無しさん:2009/01/16(金) 11:59:27
>>89
何を訂正したのか知らないけど、
オマエが張ったBASICと思しきコードは一度も実行してないだろ
9146:2009/01/16(金) 12:10:07
>>90
元のコードはテキストにあったものを打ち込んだだけなんです。。
講師にこのプログラムを参考にC言語で8点FFTを作成しろとだけ言われたもので実行はしてないです。すみません
92デフォルトの名無しさん:2009/01/16(金) 12:19:02
.  ./        \
 /           \
 \  ''''''   '''''':::::::::::::/
  . |(●),   、(●)、.:| +
  |   ,,ノ(、_, )ヽ、,, .::::|         まピョーン☆
.   |   `-=ニ=- ' .:::::::| +
   \  `ニニ;‘  .:::::/     +
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||
93デフォルトの名無しさん:2009/01/16(金) 19:28:50
[1] 授業単元:Computer Prigramming II 第14回:木(ツリー)構造,再帰的関数と再帰的呼び出し
[2] 問題文(含コード&リンク):
下の入出力例のように,適当な数字を入れると,1からその数までの和が計算過程とともに
表示されるプログラムを作りなさい。ループ(for)文を使うものと再帰的関数を使用するも
のの2種類の解答を作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8662.txt
[3] 環境
 [3.1] OS:Windows Vista / Linux
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition / gcc
 [3.3] 言語:C
[4] 期限:2008年1月25日00:00まで
[5] その他の制限:
94デフォルトの名無しさん:2009/01/16(金) 19:33:54
>>93ヒント載せ忘れ:
@ループ文とは例えば以下のようなものである。
int i, s=0;
for(i=1;i<=n;i++) s += i;
A再帰的関数の漸化式で表現したものとは例えば以下のようなものである。
int sum(int n){
if(n==1) return( 1 );
else return( n + sum( n-1 ) );
}
int main(void){
scanf( "%d", &n);
printf( "%d\n", sum( n ) );
return 0;
}
9584:2009/01/16(金) 19:51:24
>>86 >>88
ありがとうございます!!!!
96585 ◆i9Dvbn/Lf6 :2009/01/16(金) 20:58:38
お願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを起動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
画像はこちらです(内容はzipと一緒です)
http://upp.sakura.ne.jp/src/upp24055.png
http://upp.sakura.ne.jp/src/upp24056.png
http://upp.sakura.ne.jp/src/upp24057.png
zipで専用ロダにもあげておきます
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8603.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2009年1月22日まで]

さっぱりわからないので少しだけでもお願いします

>>42
さんのリンク先の内容でいいみたいです(はっきりとは答えてもらえませんでした)
http://www.ne.jp/asahi/tokyo/nkgw/gakusyu/rikigaku/2zyufuriko/zyufuriko_kaisetu/zyufuriko_kaisetu.html
97デフォルトの名無しさん:2009/01/16(金) 21:14:53
>>96
使用が固まらない限り、誰にも、どうにも出来ない。
98デフォルトの名無しさん:2009/01/16(金) 21:31:46
[1] 授業単元:C言語
[2] 問題文:2人の人の名前と年齢を入力し、同じ年なら「○○と××は同じ年」、
そうでなければ「○○は××より□歳年上」と表示するプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2]
[3.3] 言語: C言語
[4] 期限: 1月18日まで

誰か教えてください!!お願いします!!
99585 ◆i9Dvbn/Lf6 :2009/01/16(金) 21:43:36
>>97
仕様とは具体的にどういうことでしょうか?
100デフォルトの名無しさん:2009/01/16(金) 21:54:01
>>99
>>42のリンク先と3枚目の式があってないだろ
101585 ◆i9Dvbn/Lf6 :2009/01/16(金) 21:56:07
>>100
そこらへん先生がはっきり言ってくれなかったんですよね…

3枚目は無視してもらって>>42のリンク先でやってもらうということはできないでしょうか?
102デフォルトの名無しさん:2009/01/16(金) 21:56:24
[1] 授業単元:C言語
[2] 問題文:ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。
単語の切れ目はアルファベット以外の文字、行の終わりは改行文字またはファイルの終端とします。
この課題のソースファイルで動作確認をしてください。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C言語
[4] 期限:1/18まで
[5] その他の制限:特にありません。

よろしくお願いします。
103デフォルトの名無しさん:2009/01/16(金) 21:57:37
>>101
作るものがわからないのに無理だろ
104585 ◆i9Dvbn/Lf6 :2009/01/16(金) 22:01:37
>>103
たぶんですが、>>42のリンク先の一番下で
>数値解析してシミュレーションしたのが〜
でいいと思うんですけど…
105デフォルトの名無しさん:2009/01/16(金) 22:05:32
1.10個の2桁で正の10進データをstaticデータとしてプログラム中にいれ、11個目の数をー999とする。ポインターを使って、この10個の数の合計と平均を求めるプログラムをつくる。

2.Sachiko, Emiko, Setuko, Rie, Mariko, Sara の6人の名前をポインター配列にし、頭文字がSで次の文字がaの名前を表示するプログラムを書け。

3.3つの数字をmain文でscanfで与える。そして、関数maxで3つの数の最大値を求めて、mainに帰り次のように出力する。(p102参照)
    
    3つの数を入力してください? 55 86 32
    最大値は86です。

4.do while文をつかって、1から100までの和を求めよ。

よろしくお願いします><
106デフォルトの名無しさん:2009/01/16(金) 22:08:08
>>98
#include <stdio.h>
int main(void)
{
char name1[32],name2[32];
int age1,age2;
scanf("%s",&name1);
scanf("%d",&age1);
scanf("%s",&name2);
scanf("%d",&age2);
if(age1>age2)
printf("%sは%sより%d歳年上",name1,name2,age1-age2);
else if(age1<age2)
printf("%sは%sより%d歳年上",name2,name1,age2-age1);
else
printf("%sと%sは同じ歳",name1,name2);
return 0;
}
107デフォルトの名無しさん:2009/01/16(金) 22:17:54
>>106
わざわざありがとうございます!助かりました!ありがとうございました!
108デフォルトの名無しさん:2009/01/16(金) 23:02:12
>>104
http://www.ne.jp/asahi/tokyo/nkgw/gakusyu/rikigaku/2zyufuriko/zyufuriko.html
見てのとおり、1,2の比を固定してもパラメータが四つもあるぞ。
大体、振り子が二つあるのに初期振れ角が一個とか、どうなってんだ?
第八回の課題をコピペして、直し忘れたんじゃないのか?
http://www-it.sci.waseda.ac.jp/CPR2/class7/
109585 ◆i9Dvbn/Lf6 :2009/01/16(金) 23:08:53
>>108
だとすると先生側のミスって事ですかね?
110585 ◆i9Dvbn/Lf6 :2009/01/16(金) 23:11:27
らちが明かないので諦めますね

ありがとうございました
111デフォルトの名無しさん:2009/01/16(金) 23:16:04
>>109
http://www-it.sci.waseda.ac.jp/CPR2/class7/cprogram08-12.pdf
付録と微小振動の式が違うんだから、絶対間違ってるだろ
112デフォルトの名無しさん:2009/01/16(金) 23:35:54
>>585
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8663.c

やっとできた頃にあきらめるとは…
タイミング悪すぎやわ
113デフォルトの名無しさん:2009/01/16(金) 23:58:51
校名晒されて怖くなったんじゃねぇの
114デフォルトの名無しさん:2009/01/17(土) 00:08:28
>>113
公開されてる問題文を書き込んでおいて今更なあ・・・
115デフォルトの名無しさん:2009/01/17(土) 00:12:29
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
<学籍番号(7カラム)><氏名(10カラム)><成績1(2カラム)><成績2(2カラム)>
こういう行が100行あるファイルを読み込んで、
点数の平均・標準偏差・偏差値を求め、
その後点数順に表示・順位の項目を加えて表示する。

[3] 環境
 [3.1] OS: ウィンドウズ
 [3.2] Visual C++
 [3.3] 言語: C
[4] 期限: 1月20日まで
[5] その他の制限:
 標準偏差と偏差値に関しては構造体を利用する。

よろしくお願いします
116デフォルトの名無しさん:2009/01/17(土) 00:31:00
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
http://www.k-php.com/lib/uploda/src/file132.jpg
この問題をR=0、R=0.2のそれぞれの場合について求めろという課題です

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C言語
[4] 期限: 1月19日まで
[5] その他の制限:
 特にないです

どなたかよろしくお願いします
117デフォルトの名無しさん:2009/01/17(土) 01:24:17
専門的な知識が必要な課題が増えてきたなあ。
そういう時期なんだろうなあ。
俺には無理。
118デフォルトの名無しさん:2009/01/17(土) 01:40:43
[1] プログラミング
[2] 問題文(含コード&リンク):
  画面に任意の次数の単位行列を表示するプログラムを作れ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] g++
 [3.3] C++
[4] 期限:1月19日まで
[5] 特に制限はないです。

お願いします;;
119デフォルトの名無しさん:2009/01/17(土) 01:49:52
>>115
成績1、成績2ってなんだ?
点数とはどう関係する?

>>116
まずは、
v(t) = ...
i(t) = ...
まで手計算で解け
120デフォルトの名無しさん:2009/01/17(土) 01:52:33
>>116
この辺を100ボルトにしてやれば、ナントカなるのだろうか?
http://www.ele.kanagawa-it.ac.jp/~tachibana/H16_NumAnal_PDF/H16_NumAnl_chap2_list.pdf
121デフォルトの名無しさん:2009/01/17(土) 01:55:06
>>118 表示の仕方が良く分からんけど

#include<stdio.h>

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

  printf("次数を入れてね:");
  if((1!=scanf("%d",&k))||(k<2)) {
    printf("入力ミス");
    return 0;
  }

  for(i=0;i<k;i++) {
    for(j=0;j<k;j++) {
      if(i==j)
        printf("1 ");
      else
        printf("0 ");
    }
    printf("\n");
  }
  return 0;
}
122デフォルトの名無しさん:2009/01/17(土) 01:57:46
>>118
#include <iostream>
using namespace std;
int main(){
int N;
cout << "Input N:";
cin >> N;
for(int i=0;i<N;++i){
for(int j=0;j<N;++j)
cout << ((i==j)?1:0) << " ";
cout << endl;
}
}
123デフォルトの名無しさん:2009/01/17(土) 02:49:00
>>109
大抵は生徒のミス。
先生がミスってると思うのであれば、解答しなくても点くれるよ。
124デフォルトの名無しさん:2009/01/17(土) 03:17:08
>>116 以下はR=0.2Ωの場合。RESISTANCE_RがRなので、適当に変えてね。
#include<stdio.h>
#define INDUCTANCE_L 0.5 // インダクタンスL [H]
#define CAPACITANCE_C 0.5 // 容量C [F]
#define VOLTAGE_E 100 // 電圧E [V]
#define RESISTANCE_R 0.2 // 抵抗R [Ω]
#define TIME_STEP 0.001 // 時間刻み [s]
int main() {
double current_i; // 電流i [A]
double charge_c; // Cの電荷 [C]
double voltage_r; // Rの電圧 [V]
double voltage_l; // Lの電圧 [V]
double voltage_c; // Cの電圧 [V] (=v)
int i;
current_i = 0;
charge_c = 0;
for (i = 0; i <= 30000; i ++) {
voltage_c = charge_c / CAPACITANCE_C;
voltage_r = current_i * RESISTANCE_R;
voltage_l = VOLTAGE_E - voltage_r - voltage_c;
if (i % 100 == 0) {
printf("t=%3.3f[s], i=%3.2f[A], Q_C=%3.2f[C], V_R=%3.2f[V], V_L=%3.2f[V], V_C=%3.2f[V]\n",
i*TIME_STEP, current_i, charge_c, voltage_r, voltage_l, voltage_c);
}
charge_c += current_i * TIME_STEP;
current_i += voltage_l / INDUCTANCE_L * TIME_STEP;
}
return 0;
}
125デフォルトの名無しさん:2009/01/17(土) 04:02:42
>>120さん>>124さん
ありがとうございます。すごく参考になります。

126デフォルトの名無しさん:2009/01/17(土) 06:32:16
丸投げでなくてすみません。あと一歩で完成だと思うのですが、実行するとコンソールの途中で処理が止まってしまいます。
(MPI_SendとMPI_Recvのデッドロック?)どこかを少しいじれば完成なのですが、ご指摘頂けませんか?
[1] 並列プログラミング
[2] 問題文(含コード&リンク):
整数を昇順にソートするプログラムを並列プログラミングで作成せよ。
mpirun -np 3 ./a.out 9
のように実行すると、3つのプロセスがそれぞれ3要素の乱数配列を作成し、
プロセス内でバブルソートした後にマージ処理を行って全体での昇順に格納します。
例)
proc0: array[0]=13, array[1]=7, array[2]=5
proc1: array[0]=9, array[1]=4, array[2]=2
proc2: array[0]=20, array[1]=12, array[2]=10
という乱数配列を生成した場合、まずプロセサ内でバブルソートして
proc0: array[0]=5, array[1]=7, array[2]=13
proc1: array[0]=2, array[1]=4, array[2]=9
proc2: array[0]=10, array[1]=12, array[2]=20
とする。最後にマージする。このとき、各プロセス内にarrayと同一個数の
メモリを使用してよいが、それ以上のメモリを使ってはならない。
(この例の場合各プロセスはそれぞれtemp_array[3]を使って良い。)
proc0: array[0]=2, array[1]=4, array[2]=5
proc1: array[0]=7, array[1]=9, array[2]=10
proc2: array[0]=12, array[1]=13, array[2]=20
僕のプログラムの、74行目から102行目までのどこかがおかしいのだと思います。
http://www.dotup.org/uploda/www.dotup.org14059.c.html
[3] 環境
 [3.1] OS:MacOSX
 [3.2] gcc
 [3.3] C
[4] 期限:1月17日まで
127デフォルトの名無しさん:2009/01/17(土) 07:49:18
mpi.h
128126:2009/01/17(土) 09:14:13
原因が判明しました。各処理内で1回だけ処理させるべきところを全てのプロセスに処理させて
しまっていたため、デッドロックになっていたみたいです。
で、そこは修正したのですが、肝心の結果がおかしく、ソートされていません。
理由が解る方いたら教えて下さい。宜しくお願いします。
http://www.dotup.org/uploda/www.dotup.org14111.c.html
129デフォルトの名無しさん:2009/01/17(土) 10:15:45
ソースをもう少し整理してください。

57から59の時点でおかしい気がする。
同じアドレスに複数のCPUで同時にアクセスしたらやばいんじゃない?
並列化するなら分割統治法のソートを用いるべき。
130126:2009/01/17(土) 10:27:06
>>129
レス有り難うございます。同じ配列名ですが、CPU個別で別の配列なのでそれぞれソートしてくれるような気がするのですが。。
(最初の乱数配列作成も同じ手順でやっています)とりあえず、57〜59行目を以下のように変更しましたが、ソートはされませんでした。
for(i=0; i<nprocs; i++) {
if(mype==i) {
bubblesort(array, nlocal);
}
MPI_Barrier(MPI_COMM_WORLD);
}
131129:2009/01/17(土) 10:36:36
なにー!?
132デフォルトの名無しさん:2009/01/17(土) 10:45:33
>>130
これってどういう挙動のソート?
for(p=0; p<nlocal; p++) {
   for(q=0; q<nlocal; q++) {
       if(array[p]>temp_array[q]) {
           array[p]=array[p]^array[q];
           array[q]=array[p]^array[q];
           array[p]=array[p]^array[q];
       }
   }
}
133デフォルトの名無しさん:2009/01/17(土) 10:48:32
全体見てないからわからないけど、まさか p == q のときにif文内実行したりはしないよな?
134126:2009/01/17(土) 10:58:03
>>132
ごめんなさい。一部誤りがありました。以下のように修正させて下さい。(修正しても結果はソートされませんでしたが。。)
for(p=0; p<nlocal; p++) {
for(q=0; q<nlocal; q++) {
if(array[p]>temp_array[q]) {
array[p]=array[p]^temp_array[q]; //array[q]をtemp_array[q]に変更
array[q]=array[p]^temp_array[q]; //array[q]をtemp_array[q]に変更
array[p]=array[p]^temp_array[q]; //array[q]をtemp_array[q]に変更
}
}
}
この意味するところは、
int dummy;
for(p=0; p<nlocal; p++) {
for(q=0; q<nlocal; q++) {
if(array[p]>temp_array[q]) {
dummy=array[p];
array[p]=temp_array[q];
temp_array[q]=dummy;
}
}
}
と同一のつもりです。使って良いメモリはプロセスあたりnlocal*2ですので。。
つまり、arrayとtemp_arrayの配列を比較し、arrayに小さい半分の(nlocal個の)整数を格納し、temp_arrayに大きい半分の(nlocal個の)整数を格納したつもりです。
135デフォルトの名無しさん:2009/01/17(土) 11:13:23
同一じゃなあああああああああああーい
array[q]=array[p]^temp_array[q]; -> temp_array[q]=array[p]^temp_array[q];]
ってことかな

int dummy;
for(p=0; p<nlocal; p++) {
    for(q=0; q<nlocal; q++) {
        if(array[p]>temp_array[q]) {
            dummy=array[p];
            array[p]=temp_array[q];
            temp_array[q]=dummy;
        }
    }
}
の結果はランダムになると考えてよいのか?
それとも、ソート処理の一環と考えるべき?
136126:2009/01/17(土) 11:19:02
>>133
p==qのときもif処理は実行するようにしています。
例えば、以下のようなケースの場合、
array[0]=2, array[1]=9, array[2]=17
temp_array[0]=1, temp_array[1]=3, temp_array[2]=20
まずarray[0]とtemp_array[0]を比較し、array[0]の方が大きいので交換。
array[0]=1, array[1]=9, array[2]=17
temp_array[0]=2, temp_array[1]=3, temp_array[2]=20
次にarray[0]とtemp_array[1]を比較し、array[0]の方が小さいので何もしない。
次にarray[0]とtemp_array[2]を比較し、array[0]の方が小さいので何もしない。
次にarray[1]とtemp_array[0]を比較し、array[0]の方が大きいので交換。
と続けて行くと、最終的に
array[0]=1, array[1]=2, array[2]=3
temp_array[0]=17, temp_array[1]=9, temp_array[2]=20
となるようにするのが意図です。
137デフォルトの名無しさん:2009/01/17(土) 11:23:32
>>136
いや
array[p]=array[p]^array[q];
みたいにどっちもarrayだったらの話だから気にするな
138126:2009/01/17(土) 11:35:23
あっ。。。出来たかもしれません。
最終確認して、正常動作したらアップ致します。
139デフォルトの名無しさん:2009/01/17(土) 11:56:52
>>121>>122
無事表示されました!ありがとうございます♪
140デフォルトの名無しさん:2009/01/17(土) 12:07:09
1] プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力された0から1までの数字各々の個数をカウントし、表示するプログラムを作れ
(例19003と打ち込めば、1・9・3は1、0が2、他は0)

[3] 環境
 [3.1] Windows xp
 [3.2] gcc
 [3.3] C++
[4] 1月20日
[5] 制限なし

お願いします。
141デフォルトの名無しさん:2009/01/17(土) 12:22:57
0から1まで?
142デフォルトの名無しさん:2009/01/17(土) 12:31:26
あッ、間違えました
0から9までです。
143デフォルトの名無しさん:2009/01/17(土) 12:39:23
>>140
#include <stdio.h>
#include <string.h>

int main()
{
    char buf[256], *ptr;
    int cnt[10], i;

    fgets(buf, sizeof(buf), stdin);

    for(i = 0; i < 10; i++){
        cnt[i] = 0;
    }

    for(ptr = buf; *ptr != '\0'; ptr++){
        if('0' <= *ptr && *ptr <= '9'){
            cnt[*ptr - '0']++;
        }
    }

    for(i = 0; i < 10; i++){
        printf("%d: %d\n", i, cnt[i]);
    }

    return 0;
}
144143:2009/01/17(土) 12:41:00
#include <string.h>
は余計だった。その行は消してくれ。
145デフォルトの名無しさん:2009/01/17(土) 13:11:56
助かりました!
146126:2009/01/17(土) 13:20:29
なんか軽くなりすましが入ったようですが、一応クラスタ環境でも
動作しましたのでソースアップしときます。各位コメント有り難う。
http://www.dotup.org/uploda/www.dotup.org14293.zip.html
147デフォルトの名無しさん:2009/01/17(土) 13:36:13
ASCIIコードのうち印字可能(空白含む)な文字を表示しなさい。
なお、その際、英数字以外の文字は [ ] で囲みなさい。

お願いします
148デフォルトの名無しさん:2009/01/17(土) 13:40:08
#include <stdio.h>
#include <ctype.h>

int main(void)
{
int i;

for(i=0; i<256; i++) {
if(isprint(i)) {
if(isalnum(i)) putchar(i);
else printf("[%c]", i);
}
}

return 0;
}
149デフォルトの名無しさん:2009/01/17(土) 13:41:29
>>147
#include <stdio.h>
#include <ctype.h>

int main()
{
    int i;

    for(i = 0; i <= 0xFF; i++){
        if(isprint(i)){
            if(isalnum(i)){
                printf("%c", i);
            } else {
                printf("[%c]", i);
            }
        }
    }

    return 0;
}
150デフォルトの名無しさん:2009/01/17(土) 14:25:18
>>148
>>149
非常にありがとうございます。
151デフォルトの名無しさん:2009/01/17(土) 15:02:48
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
int型配列“idata[]”に正の整数値が入っているときに、この配列を渡されて、
戻り値として整数値のうちの最大値を返す関数“idmax”および最小値を返す関数“idmin”
を作りなさい。
 最大値を返す関数:int idmax(int idata[])
 最小値を返す関数:int idmin(int idata[])
ただし、データの最後を識別するために、最終データの次の配列要素には、
「-1」(マイナス1)が入っているものとする。
また、動作を確認するためのmain関数として、キーボードから正の整数値を
1つずつ読み込み、-1を読み込んだのち、関数idmaxおよびidminを呼び出し、
下記のように、読み込んだ整数値、最大値および最小値をディスプレイに
表示するプログラムをつくりなさい。
読み込んだ整数値の個数は、最大でも10個までとして、main関数を作っても構わない。
_____ディスプレイ______
読み込んだ整数値:○ △ ◇ □
最大値:△
最小値:○
_______________
[3] 環境 [3.1] OS: WindowsXP[3.2] Visual studio[3.3] C言語
[4] 期限: 2009年1月19日まで
どなたか、分かる方どうぞよろしくお願いします!!!!
152デフォルトの名無しさん:2009/01/17(土) 15:55:00
>>151
#include <stdio.h>
int idmax(int idata[]) {
int max = *idata;
while(*++idata > 0) if(max < *idata) max = *idata;
return max; }
int idmin(int idata[]) {
int min = *idata;
while(*++idata > 0) if(min > *idata) min = *idata;
return min; }

int main(void)
{
int i, a[11];

for(i=0; i<10; i++) {
scanf("%d", a + i);
if(a[i] == -1) break;}
if(i==10) a[10] = -1;

printf("読み込んだ整数値:");
for(i=0; a[i]!=-1; i++) printf("%d ", a[i]);
putchar('\n');
printf("最大値:%d\n", idmax(a));
printf("最小値:%d\n", idmin(a));

return 0;
}
153デフォルトの名無しさん:2009/01/17(土) 16:32:55
文字処理関数の使用例において、文字の入力に、「scanf("%c", &c);」を使うと
is○○関数で上手く判定が出来ないのはなぜですか?
154デフォルトの名無しさん:2009/01/17(土) 16:35:21
>>153
どうせ改行文字がバッファに残ってるせいなんだんだろうな
155デフォルトの名無しさん:2009/01/17(土) 16:39:04
>153
標準入力からはいったん文字列で読み込むようにして
sscanf(文字列, "%c", &c);
ではどうだろうか?
156デフォルトの名無しさん:2009/01/17(土) 16:43:06
>>153
scanf() で %c を指定すると、1バイトのデータしか入力しません。
'A' を入力すれば、0x41 です。
int型変数 c は、例えば宣言時に不定値が設定されていて 0xffff だったとすると、
それに 0x41 だけを入力するので、0xff41 になってしまいます。
これでは is○○関数では正しい判断は行えません。

回避策ですが、scanf を使わずに、getchar を使う(getchar関数は int型の文字を返却します)。
もしくは、宣言時に int c = 0; とし、0 で変数を初期化するかです。
157デフォルトの名無しさん:2009/01/17(土) 16:46:19
cがintってどっから出てきた?
158デフォルトの名無しさん:2009/01/17(土) 16:48:15
>int型変数 c は、例えば宣言時に不定値が設定されていて 0xffff だったとすると、
>それに 0x41 だけを入力するので、0xff41 になってしまいます。

>153 のどこにそんなことが書いてあるんだろう?
>154 の推理もすごいけどw
159115:2009/01/17(土) 17:07:19
>>115に関して説明不足ですみません。
科目Aの成績と科目Bの成績があって、
それぞれの成績について平均、標準偏差、偏差値を求めるということです。
順位は科目A+Bの成績で出します。

ちなみに実際のファイルの中身はこんな感じ↓
1234567●●●● 1042
160デフォルトの名無しさん:2009/01/17(土) 17:33:03
ファイルアップしたほうがはやくね?
161デフォルトの名無しさん:2009/01/17(土) 17:33:57
[1] 授業単元:Computer Prigramming II 第14回:木(ツリー)構造,再帰的関数と再帰的呼び出し
[2] 問題文(含コード&リンク):
下の入出力例のように,適当な数字を入れると,1からその数までの和が計算過程とともに
表示されるプログラムを作りなさい。ループ(for)文を使うものと再帰的関数を使用するも
のの2種類の解答を作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8662.txt
[3] 環境
 [3.1] OS:Windows Vista / Linux
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition / gcc
 [3.3] 言語:C
[4] 期限:2008年1月25日00:00まで
[5] その他の制限:
162デフォルトの名無しさん:2009/01/17(土) 17:44:47
【質問テンプレ】
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
  問題3(戻り値がない場合の引数あり)
 平行四辺形の底辺tと逆さhを入力して、平行四辺形の面積を求めるプログラムを作りなさい。
 ただし、main関数で平行四辺形の底辺tと高さhの入力を行い、
 平行四辺形の面積の計算と表示はmensekiという関数で行うこと。

  問題4(戻り値がある場合の引数あり)
 平行四辺形の底辺tと高さhを入力して、平行四辺形の面積を求めるプログラムを作りなさい。
 ただしmain関数で平行四辺形の底辺tと高さhの入力と計算された円の面積の表示を行い、
 平行四辺形の面積はmensekiという関数で計算するようにする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C言語
[4] 期限:2009年01月19日まで
[5] その他の制限:習い始めて半年です、数学関数まで進みました。
よろしくお願いします。
163デフォルトの名無しさん:2009/01/17(土) 17:54:02
文字処理関数の演習問題
16進数に変換可能な文字列(例えば "AB45")をキーボードから入力し、
10進数の数値に変換しなさい。

わかる方教えてください。。
164デフォルトの名無しさん:2009/01/17(土) 18:07:44
>>162
問題3
#include <stdio.h>

void menseki(double t, double h)
{
    printf("平行四辺形の面積は%lfです\n", t * h);

    return;
}

int main()
{
    double t, h;

    printf("底辺: ");
    scanf("%lf", &t);
    printf("高さ: ");
    scanf("%lf", &h);
    menseki(t, h);

    return 0;
}
165デフォルトの名無しさん:2009/01/17(土) 18:09:30
>>162
問題4
円の面積って何だ
#include <stdio.h>

double menseki(double t, double h)
{
    return t*h;
}

int main()
{
    double t, h;

    printf("底辺: ");
    scanf("%lf", &t);
    printf("高さ: ");
    scanf("%lf", &h);
    menseki(t, h);
    printf("平行四辺形の面積は%lfです\n", menseki(t, h));
    return 0;
}
166デフォルトの名無しさん:2009/01/17(土) 18:13:41
>>161
入出力例を見ると和を入力しているが、入力するのは和なのか?

3を入力→1+2+3を求めるではなく、
3を入力→1+2=3まで計算、なのか?
167デフォルトの名無しさん:2009/01/17(土) 18:20:56
>>163
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int do_hex(char *str)
{
    static const char hex[] = "0123456789abcdef";
    static const int digit = sizeof(hex) - 1;
    int ch, ret = 0;
    char *p;
    while(*str != '\0'){
        ch = tolower(*str);
        p = strchr(hex, ch);
        if(p == NULL){
            fprintf(stderr, "卑猥な文字:%c\n", *str);
            exit(1);
        }
        ret = digit * ret + (int)(p - hex);
        str++;
    }
    return ret;
}

int main(void)
{
    char buf[256];
    scanf("%255s", buf);
    printf("%s(16) -> %d(10)\n", buf, do_hex(buf));
    return 0;
}
168デフォルトの名無しさん:2009/01/17(土) 18:25:34
>>167
もっと簡潔に書けるよ
169デフォルトの名無しさん:2009/01/17(土) 18:30:10
>>168 こうか?
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int ret, hex;

    ret = scanf("%x", &hex);
    if(ret != 1){
        fprintf(stderr, "俺にも彼女ができる\n");
        exit(1);
    }

    printf("%x(16) -> %d\n", hex, hex);

    return 0;
}
170デフォルトの名無しさん:2009/01/17(土) 18:35:02
>>159
フォーマットは各行に「学籍番号が7桁、名前が10文字、成績1が2桁、成績2が2桁」が隙間無く並んでいるってことでいいんだよね?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8666.txt
171デフォルトの名無しさん:2009/01/17(土) 18:36:58
みなさんcのコンパイラは
何をお使いでしょうか?

おすすめや
これは使えないというものはありますか??
172デフォルトの名無しさん:2009/01/17(土) 18:42:56
>>171
スレ違いだから消えろ
173デフォルトの名無しさん:2009/01/17(土) 18:43:13
174162:2009/01/17(土) 18:45:48
>>164-165
ありがとうございます!助かりました。

円の面積・・・意味不明ですね、気付きませんでした。
プリント見返してみましたけど円って書いてありますw
先生のミスかな。
175デフォルトの名無しさん:2009/01/17(土) 19:22:28
>>172 >>173 wwwwwwwwwwwwwwwwww
>>172 >>173 wwwwwwwwwwwwwwwwww
>>172 >>173 wwwwwwwwwwwwwwwwww
176デフォルトの名無しさん:2009/01/17(土) 19:52:09
gccかclでいいんじゃないかとおもうけど
bccってどうなの?
177デフォルトの名無しさん:2009/01/17(土) 19:57:30
>>176
Windowsでgccって微妙じゃね?
178デフォルトの名無しさん:2009/01/17(土) 20:07:42
悲しいかな、C関連で一番勢いの大きいスレッドなので、ウザイ自演も沸く・・・
179115:2009/01/17(土) 22:08:32
>>170
そのとおりです、ありがとうございます。助かりました・・・。
180115:2009/01/17(土) 22:53:18
何度もすみませんorz
>>170のを実行してみたらエラーが出て実行できないんですがどこがおかしいんでしょうか・・・
181デフォルトの名無しさん:2009/01/17(土) 22:55:45
>>180

>>1
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
182デフォルトの名無しさん:2009/01/17(土) 23:09:26
115.txtを探す旅
183115:2009/01/17(土) 23:29:59
>>182
いくら自分が間抜けでプログラム苦手とはいえそれはさすがにないw


自力でどうにか出来そうな箇所を弄ったら102個あったエラーが30個にはなったんですが
もうこれ以上は自力じゃ無理orz
ここでひとつひとつコピペするのも難なので、全部まとめてコピペしてロダに上げておきます・・・。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8669.txt
184デフォルトの名無しさん:2009/01/17(土) 23:46:46
>>183
手直ししたなら、そのプログラムも上げてくれ

多分 grade_t のどっかがおかしいんだと思う
185デフォルトの名無しさん:2009/01/17(土) 23:50:18
>>180
> >>170のを実行してみたらエラーが出て実行できないんですがどこがおかしいんでしょうか・・・

先生!>>183が実行時エラーじゃありません!!!
186170:2009/01/18(日) 00:15:38
あー、VC++だと変数宣言を全部ブロックの先頭に書かないといけないんだっけ?
187デフォルトの名無しさん:2009/01/18(日) 00:20:41
>>186
いや全く関係ないけど。
188デフォルトの名無しさん:2009/01/18(日) 00:22:52
>>180
>>170
  const grade_t *x = a;
  const grade_t *y = b;

  const grade_t *x = (const grade_t *)a;
  const grade_t *y = (const grade_t *)b;
に書き換えてもダメか?
(*.cppとしてコンパイルしていると想定)
189デフォルトの名無しさん:2009/01/18(日) 00:24:12
const grade_t *x = (grade_t*)a;
const grade_t *y = (grade_t*)b;
に変えればとりあえず動くけどフォーマット指定したファイルも出してくれないと
ファイル作るの面倒です^;^
190デフォルトの名無しさん:2009/01/18(日) 00:57:16
&grades[i].numberという書き方はキライだな(個人的には)
&(grades[i].number)と書きたい
191デフォルトの名無しさん:2009/01/18(日) 00:59:54
宿題で関数strcpyを自分で作らなければいけません。
自分で作ってみたのですが、うまくいきませんでした。

char *my_strcpy(char *s1, char *s2){
int i = 0;
while(s2[i] != '\0'){
s1[i] = *s2;
i++;
}
*s1 = '\0';
return s1;
}

どこをどう直せばいいのか教えてください。
お願いします。
192デフォルトの名無しさん:2009/01/18(日) 01:01:14
193デフォルトの名無しさん:2009/01/18(日) 01:03:08
>>191
s1[i] = s2[i];
s1[i] = '\0';
194デフォルトの名無しさん:2009/01/18(日) 01:10:39
>>192 >>193
ありがとうございました。
本当に助かりました。
195デフォルトの名無しさん:2009/01/18(日) 01:50:13
>>192
そんなの貼ると、代入式だってファビョられるぞw
196デフォルトの名無しさん:2009/01/18(日) 02:19:03
>>195
言われるのはサイトの管理人だから、放っとけよ
197デフォルトの名無しさん:2009/01/18(日) 02:28:10
JIS X 3010:2003の定義に従えば、条件式⊂代入式
198デフォルトの名無しさん:2009/01/18(日) 11:21:05
>>102
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define N 256

int main(void)
{
char b[N];
int c = 0, w = 0, l = 0;
FILE *fp;
fgets(b, N, stdin); *strchr(b, '\n') = '\0';
if (!(fp = fopen(b, "r"))) return 1;

while (fgets(b, N, fp)) {
int i = 0;
while(b[i]) { c++; if (!isalpha(b[i++])) w++; }
l++;
}
printf("%d character(s)\n%d word(s)\n%d line(s)\n", c, w, l);
fclose(fp);
return 0;
}
199デフォルトの名無しさん:2009/01/18(日) 13:37:08
まったくできない。
こんな学部入らなければよかった・・
200デフォルトの名無しさん:2009/01/18(日) 13:45:29
大学じゃ、Cの授業なんてなかったなぁ・・・
独学で覚えて仕事にしてるが。
201デフォルトの名無しさん:2009/01/18(日) 15:50:18
>>93
>1からその数までの和
それなら、45を入力すると

1081 = 1 + 2 + ... + 45

になるはずなのだが。
問題が間違っているのか、出力例が間違っているのかを教えてくれ
202デフォルトの名無しさん:2009/01/18(日) 15:53:32
>>93
>1からその数までの和
それなら、45を入力すると

1081 = 1 + 2 + ... + 45

になるはずなのだが。
問題が間違っているのか、出力例が間違っているのかを教えてくれ
203201:2009/01/18(日) 15:54:28
連続スマソ
204デフォルトの名無しさん:2009/01/18(日) 16:25:14
>>201
自分も、何か変だなとは思ったが、例えば36から45の間の数を入力したら
どうするのかと考えたが、問題文を見ると、やはり1〜nまでの和なのかと・・・
205201:2009/01/18(日) 16:33:34
問題が正しいのならば↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8671.c

出力例が正しいのならば↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8670.c

for文は苦手だから書かんかった。ごめん。
暇だったら書くかもしれん
206201:2009/01/18(日) 16:48:21
分かるとは思うけど205は >>93
207デフォルトの名無しさん:2009/01/18(日) 17:00:54
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8672.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: C
[4] 期限: 2009年01月19日
[5] その他の制限:このような形に表示されるよう求められています↓
http://www.dotup.org/uploda/www.dotup.org16591.jpg

どうか宜しくお願いします
208デフォルトの名無しさん:2009/01/18(日) 17:05:17
>>93
forでやった場合、問題に合わせたやつ。
出力例にあわせるのはめんどいからパス。

#include <stdio.h>

int sum_n(int);

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

printf("Input any integer >");
scanf("%d", &n);

for (i = 1; i <= n; i++) {
printf("%d = ", sum_n(i));
for (j = 1; j <= i; j++) {
printf(" %d %c", j, (j==i ? '\n': '+'));
}
}
printf("Total: %d\n", sum_n(n));

return 0;
}

int sum_n(int n)
{
return n * (n + 1) / 2;
}
209208:2009/01/18(日) 17:20:35
もしかすると、sum_nの中身こっちのほうがいいかも。
int sum_n(int n)
{
int i;
int sum = 0;

for(i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
210デフォルトの名無しさん:2009/01/18(日) 17:28:56
もしかすると、うpロダ使って書き直すのも良いかも
211デフォルトの名無しさん:2009/01/18(日) 17:51:03
212デフォルトの名無しさん:2009/01/18(日) 18:53:11
一般ユーティリティ関数の演習問題

* をランダムな個数ずつ、10行画面に出力しなさい。
ただし、最大でも 1行(80個)を越えないこと。

お願いします。
213デフォルトの名無しさん:2009/01/18(日) 19:00:34
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,j;
for(i=0;i<10;i++){
for(j=0;j<rand()%80+1;j++)printf("*");
printf("\n");
}
return 0;
}
214デフォルトの名無しさん:2009/01/18(日) 19:02:59
>>213
助かりました。ありがとうございます!!
215デフォルトの名無しさん:2009/01/18(日) 19:04:08
>>213
>j<rand()%80+1
これは思いつかんかったわww
ちなみに俺は212ではない
216デフォルトの名無しさん:2009/01/18(日) 19:06:57
>>213
j<rand()%80+1
これってループするたびに右辺の値が変わったりしないか?
それでも要求仕様は満足するだろうけど
217デフォルトの名無しさん:2009/01/18(日) 19:10:57
この場合、*の個数の分布はなんだろう?
218デフォルトの名無しさん:2009/01/18(日) 19:15:19
指数分布だろ近いのは
219デフォルトの名無しさん:2009/01/18(日) 19:18:12
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
32以下の自然数nを入力し、nビットのグレイコードを出力せよ。
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン: VC2008EE
 [3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限: 標準ライブラリの範囲内で。
よろしくお願いします。
220デフォルトの名無しさん:2009/01/18(日) 19:34:47
>>217
やってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8674.txt
当然だが後半ほとんどでないな
221デフォルトの名無しさん:2009/01/18(日) 19:40:45
>>219
#include <stdio.h>
int main(void)
{
int i,j,g[6],flg;
unsigned int a;
do {
printf("input number(<=32): ");
scanf("%d",&a);
} while (a>32);
for (i=0;i<6;i++) {
g[5-i]=a%2;
a>>=1;
}
for (i=0;i<6;i++) {
if (g[i]) {
for (j=i+1;j<6;j++) g[j]=(g[j]+1)%2;
}
}
for (i=0,flg=0;i<6;i++) {
if (g[i]) flg=1;
if (flg) printf("%d",g[i]);
}
printf("\n");
return 0;
}
222デフォルトの名無しさん:2009/01/18(日) 20:30:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
天秤の左皿にだけ重さNの物体が載っている。(Nは自然数)
左右の皿に分銅を追加して、天秤が釣り合うようにする。
使える分銅は、重さが1, 3, 9, 27, ...というように
3のべき乗のものがそれぞれ1つずつである。
Nを入力し、分銅の載せ方を表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語:C言語
[4] 期限:1/19 午前7時
[5] その他の制限:できるだけスマートな解法でお願いします。
223デフォルトの名無しさん:2009/01/18(日) 20:47:46
組み合わせが存在しない場合は?
224デフォルトの名無しさん:2009/01/18(日) 20:58:55
>>223
左の皿に分銅を載せるのも考慮すればいかなる場合でもおk
225デフォルトの名無しさん:2009/01/18(日) 21:23:56
[1] 授業単元:計算機プログラム
[2] 問題文(含コード&リンク):
3つの数を引数としてとり、大きいほうの2つの数の和を繰り返す手続きを作成しなさい。
(例えば、最初に最小値を見つける。次に3つの数の和から最小値を引く)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語: C
[4] 期限: 1月19日
[5] その他の制限:特にありません
よろしくお願いします
226デフォルトの名無しさん:2009/01/18(日) 21:27:26
>>225
すみません訂正します
[2] 問題文(含コード&リンク):
3つの数を引数としてとり、大きいほうの2つの数の和を返す手続きを作成しなさい。
でした。繰り返すではなく返すでした。
227デフォルトの名無しさん:2009/01/18(日) 21:32:39
>>221
それはn番目のグレイコードであって、nビットのグレイコードではないな。
228デフォルトの名無しさん:2009/01/18(日) 21:35:56
>>220
じゃあ>>213は間違ってるってこと?
229デフォルトの名無しさん:2009/01/18(日) 21:40:03
>>228
何をいっているんだ?
230デフォルトの名無しさん:2009/01/18(日) 21:41:29
>>227-229
不覚にも吹いたww
231デフォルトの名無しさん:2009/01/18(日) 21:43:17
>>225

int addition(int a,int b,int c) {
if(a<b){
if(a<c) return b+c;
return a+b;
} else {
if(b<c) return a+c;
return a+b;
}
return 0;
}
232115:2009/01/18(日) 21:43:29
>>115です。
何度も煩わせてすみませんorz


>>188
入れてみましたがエラーの数も内容も変化なしでした・・・
問題の方を改めてロダに上げます。
もう何が間違ってるのか分からない・・・

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8675.txt
233デフォルトの名無しさん:2009/01/18(日) 21:45:20
234デフォルトの名無しさん:2009/01/18(日) 21:49:02
>>219
これで良いだろう

#include <stdio.h>
int main(void)
{
int i,j,g[6],flg;
unsigned int a;
do {
printf("input number(<=32): ");
scanf("%d",&a);
} while (a>32);
for (i=0;i<6;i++) {
g[5-i]=a%2;
a>>=1;
}
for (i=0;i<6;i++) {
if (g[i]) {
for (j=i+1;j<6;j++) g[j]=(g[j]+1)%2;
}
}
for (i=0,flg=0;i<6;i++) printf("%d",g[i]);
printf("\n");
return 0;
}
235デフォルトの名無しさん:2009/01/18(日) 21:51:08
>>230
不覚だな
236デフォルトの名無しさん:2009/01/18(日) 21:51:08
>>213
っていうか、srandしてないから不味くね?
237デフォルトの名無しさん:2009/01/18(日) 21:56:42
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
(1)
キーボードから入力された0から9までの数字各々の個数をカウントし表示するプログラムを作れ
(2)
画面に任意の次数の単位行列を表示するプログラムを作れ
(3)
学生の数をまず入力した後、各自の試験成績(1課目)を順次入力した後、
最高点・最低点・平均点をそれぞれ求めて表示するプログラムを作れ
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C++
[4] 期限:1月21日
[5]その他の制限:特にありません
よろしくお願いします
238デフォルトの名無しさん:2009/01/18(日) 21:58:13
>>232
だから>>170をどういじったのかを言えと

もしくは>>170をコンパイルした時(いじる前)にどんなエラーが出たかを言ってくれ
239デフォルトの名無しさん:2009/01/18(日) 21:59:46
>>237
(1) >>140,141,143
(2) >>118,121,122
240デフォルトの名無しさん:2009/01/18(日) 22:11:01
>>237
(3)
#include<iostream>
#include<algorithm>
#include<numeric>
#include<vector>
int main() {
int num, score;
std::cout << "Number of students = ";
std::cin >> num;
std::vector<int> scores;
for (int i = 0; i < num; i ++) {
std::cout << "Student" << 1+i << "'s score = ";
std::cin >> score;
scores.push_back(score);
}
std::cout << "-----\n";
std::cout << "The highest score is " << *std::max_element(scores.begin(), scores.end()) << ".\n";
std::cout << "The lowest score is " << *std::min_element(scores.begin(), scores.end()) << ".\n";
std::cout << "Average score is " << std::accumulate(scores.begin(), scores.end(), 0) / scores.size() << "." << std::endl;
return 0;
}
241201:2009/01/18(日) 22:11:34
>>237
(1)
出力は勝手に考えた

#include <stdio.h>

int main(void)
{
int num[10] = {0,0,0,0,0,0,0,0,0,0};
int n = 0;
int i = 0;

while(1){
printf("input:");
scanf("%d",&n);
if(n <= 10) num[n]++;
for(i = 0;i < 10;i++)printf("%d:%d\n",i,num[i]);
printf("\n");
}
return 0;
}
242デフォルトの名無しさん:2009/01/18(日) 22:12:09
C++と聞くととたんにがんばる奴がいるなw
243デフォルトの名無しさん:2009/01/18(日) 22:12:24
> int num[10] = {0,0,0,0,0,0,0,0,0,0};
フイタw
244デフォルトの名無しさん:2009/01/18(日) 22:13:21
[1] 授業単元:プログラミング
[2] 問題文:
あるゼミの各学生の名前、読み仮名、点数を入力し、最高点を取った学生の名前と
点数を表示せよ。今まで入力した中で何番目の学生が最高点かを記録するための
変数max_iを用意し、最高点が更新されるごとにmax_iを更新する。但し、max_iの
初期値は0とする。
[3] 環境
 [3.1] OS:Windows
 [3.2]
 [3.3] 言語:C言語
[4] 期限:1月19日
[5] その他の制限: 全くわからないので誰か教えてください!!よろしくお願いします!!
245デフォルトの名無しさん:2009/01/18(日) 22:13:31
>>243
int num[10] = {0};
でいいことぐらい分かってるよ
246デフォルトの名無しさん:2009/01/18(日) 22:14:17
>>245
フイタw
247222:2009/01/18(日) 22:16:31
>>233
ありがとうございました。
248デフォルトの名無しさん:2009/01/18(日) 22:16:41
ちょっと細工しておくと検索しやすくなるんだよ
誰が検索するのかは秘密♥
249デフォルトの名無しさん:2009/01/18(日) 22:22:21
>>241
正常に機能しなくてフイタw
250201:2009/01/18(日) 22:24:24
一応言っておくが、>>245は俺ではない(汗)

あと、
int num[10] = {0};
は知らんかった。
>>201は中坊だというわけで許してくれw
251デフォルトの名無しさん:2009/01/18(日) 22:25:23
なにがなんだか分からない・・・・・・・
252225:2009/01/18(日) 22:25:28
>>231
ありがとうございました。
253デフォルトの名無しさん:2009/01/18(日) 22:25:55
254201:2009/01/18(日) 22:26:15
>>249
ん?俺の環境(bcc)では動作するぜよ
255デフォルトの名無しさん:2009/01/18(日) 22:28:41
256デフォルトの名無しさん:2009/01/18(日) 22:33:12
>>254
動作する、コンパイルできたからといって、問題通りの
実行結果が出る、機能しているとは限らない。
257デフォルトの名無しさん:2009/01/18(日) 22:33:31
>>254
if(n <= 10) num[n]++;

if(n>=0 && n<10) num[n]++;
258デフォルトの名無しさん:2009/01/18(日) 22:34:30
>>256
問題文を読めよwww
259デフォルトの名無しさん:2009/01/18(日) 22:45:36
>>241
int num[10]
if(n <= 10) num[n]++;
フイタw
260デフォルトの名無しさん:2009/01/18(日) 23:17:51
>>232
だから、宣言文をブロックの先頭にしろって
VCとか関係なくC89の仕様
261201:2009/01/18(日) 23:42:37
>>257
>>259
べ、別に、ボーっとしてたわけじゃないんだからね!orz
262デフォルトの名無しさん:2009/01/19(月) 00:12:27
昨日も書き込んで、アドバイスをもらったのですが、
ちょっとしたトラブルが発生したので、もう一度書き込みます。

#include<stdio.h>

char *my_strcpy(char *s1, char *s2){
int i = 0;
while(s2[i] != '\0'){
s1[i] = s2[i];
i++;
}
s1[i] = '\0';

return s1;
}

int main(){
char *s1 = "abc";
char *s2 = "wxyz";
my_strcpy(s1, s2);
printf("s1:%s s2:%s \n", s1, s2);
return 0;
}

s2の文字数がs1の文字数より大きいとき、
s2が表示されないのはなぜでしょう。
教えてください。
よろしくお願いします。
263デフォルトの名無しさん:2009/01/19(月) 00:23:00
>>262
a←s1
b
c
\0
w←s2
x
y
z
w

my_strcpy後

w←s1
x
y
z
\0←s2
x
y
z
w

あとは分かるな(ちなみにこの上書きは必ず起こるとは限らん)

あと char *s2 = "wxyz";
という風に宣言した文字列リテラルを書き換えるのはNGだ
うまく動かしたい場合は取り合えず
char s1[10] = "abc";
char s2[10] = "wxyz";
とでもするがいい
264デフォルトの名無しさん:2009/01/19(月) 00:24:03
おっと訂正

a←s1
b
c
\0
w←s2
x
y
z
w
\0
my_strcpy後

w←s1
x
y
z
\0←s2
x
y
z
265デフォルトの名無しさん:2009/01/19(月) 00:25:36
また間違えた、死のう

a←s1
b
c
\0
w←s2
x
y
z
\0
my_strcpy後

w←s1
x
y
z
\0←s2
x
y
z
\0
266デフォルトの名無しさん:2009/01/19(月) 00:44:08
gcc4.1.2だとs1[i] = s2[i]を実行した瞬間に死ぬぜ。
vcはどうなってる?
267262:2009/01/19(月) 01:11:21
どうすればよいのでしょうか。
268デフォルトの名無しさん:2009/01/19(月) 01:14:22
>>267
取り敢えず、リテラルを書き換えないことと、
配列に確保した領域を超えて書き込まないことじゃね?
269102:2009/01/19(月) 01:16:14
>>198
ありがとうございました。
270デフォルトの名無しさん:2009/01/19(月) 01:18:40
>>267
#include <stdio.h>

char *my_strcpy(char *s1, char *s2)
{
int i = 0;
while (s1[i] != '\0' && s2[i] != '\0'){
s1[i] = s2[i];
i++;
}
s1[i] = '\0';
return s1;
}

int main()
{
char s1[] = "abc";
char s2[] = "wxyz";
my_strcpy(s1, s2);
printf("s1:%s s2:%s \n", s1, s2);
return 0;
}
271デフォルトの名無しさん:2009/01/19(月) 01:21:33
while ( s1[i] && s2[i] )
272262:2009/01/19(月) 01:22:14
>>268 >>270
ありがとうございました。
273デフォルトの名無しさん:2009/01/19(月) 01:24:17
while (s1[i] & s2[i])
274デフォルトの名無しさん:2009/01/19(月) 01:24:51
>>273
窓から飛び降りて良し!
275デフォルトの名無しさん:2009/01/19(月) 01:25:19
>>267
char *s1 = "abc";
char *s2 = "wxyz";
my_strcpy(s1, s2);



char *s2 = "wxyz";
char *s1 = "abc";
my_strcpy(s1, s2);

でどう?

ちなみにmy_strcpyには返り値が有る筈なんだが……
276デフォルトの名無しさん:2009/01/19(月) 01:27:51
>>275 wwwwwwwwwwwwwwwwwwwwwwww
277デフォルトの名無しさん:2009/01/19(月) 01:30:39
>>275
その発想はなかったわ
278デフォルトの名無しさん:2009/01/19(月) 01:50:36
>>275
s1とs2の中身を換えたいの?それとも、引数の順番を換えたいの?
何がしたいの?死体としたいの?
279デフォルトの名無しさん:2009/01/19(月) 02:03:51
ロシアではwxyzをabcにする、ガハハ!
280デフォルトの名無しさん:2009/01/19(月) 02:05:47
>>110
お前がW大学のM田Cプロとってることはよくわかった
ttp://www-it.sci.waseda.ac.jp/CPR2/class7/
の宿題3を解いてくださいと書けば早いだろうが
281デフォルトの名無しさん:2009/01/19(月) 02:07:56
>>280
お前が他人の素性を探りたがっていることはよくわかった
>>1
> 気に入らない質問やその他や発言はスルーの方向で。
答えたくなければ、こんなスレに来ないか、スルーすれば良いだろ
282201:2009/01/19(月) 02:25:07
>>275
GJ!!ww

>>278
メモリ上でs1、s2と並んでいるのをs2、s1の順番にするってこと。
s2の方がサイズが大きいから、s1をコピーしてもs1への影響がなくなる。
283デフォルトの名無しさん:2009/01/19(月) 02:27:12
なんの冗談だよw
284デフォルトの名無しさん:2009/01/19(月) 02:28:46
実際の環境でどういう挙動になるかも大事だが、
そもそも文字列リテラルの書き換え自体が未定義だろ。やっちゃいけない。
285デフォルトの名無しさん:2009/01/19(月) 02:42:41
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): ttp://sasa.cis.ibaraki.ac.jp/member/sasaki/ProEn2/kadai2.pdf
[3] 環境
 [3.1] OS:Windous Vista
 [3.2] コンパイラ名とバージョン:任意
 [3.3] 言語: C
[4] 期限: 1月21日
[5] その他の制限:
 30件 ttp://sasa.cis.ibaraki.ac.jp/member/sasaki/ProEn2/namelist30.txt
 100件 ttp://sasa.cis.ibaraki.ac.jp/member/sasaki/ProEn2/namelist100.txt
 10万件 ttp://sasa.cis.ibaraki.ac.jp/member/sasaki/ProEn2/namelist100k.txt
必須課題1,2のみでいいのでよろしくお願いします。
286デフォルトの名無しさん:2009/01/19(月) 03:05:51
>>282
意味がわかってねーだろ、お前?wwwwwwwww
もう一度コードをよく見ろ。
287201:2009/01/19(月) 03:13:02
>>286
いや、>>282であってるけど。
違うと言うんならお前説明してみろw
288デフォルトの名無しさん:2009/01/19(月) 03:16:31
>>275 >>275 >>275 >>275 >>275 >>275 >>275 
s1とs2が何か?それでいて、my_strcpy(s1, s2); の順番が同じだが
その中身のコードを書き換えたわけでもなく・・・201は同じ人物?
だとしたら、かなり頭が悪いか、池沼レベルだな・・・口出ししない方が身の為だぞ。
墓穴を掘って、逆にバカにされるぞ、お前・・・もう学校ではアホ扱いされているだろうけどw
289デフォルトの名無しさん:2009/01/19(月) 03:18:50
>>287
何を説明しろって言うんだよ・・・違うとかって話じゃないだろ。
お前が分かっているのか?って聞かれているんだが?
>>282は勝手に解釈したのか、>>275のコードが理解できないのか、
視覚に問題のある障害者なのか・・・
290デフォルトの名無しさん:2009/01/19(月) 03:20:16
>>275
char *s1 = "abc";
char *s2 = "wxyz";

char *s2 = "wxyz";
char *s1 = "abc";
↑記述する順番を逆にしても、s1とs2の中身はどうよ?w

my_strcpy(s1, s2);
my_strcpy(s1, s2);
↑これも逆にしたわけでもないし・・・
291201:2009/01/19(月) 03:31:07
>>280
>>290
一応アホと言っておく
ちなみに俺は>>275とは無関係

C(C++)では書いた順番によってメモリ配置が変わるんだよ。
これくらい知っとけ。
お前(達)は中坊以下か?
292デフォルトの名無しさん:2009/01/19(月) 03:33:41
こんな時間に書き込み出来るのは無職・ニートだけ!
中学生以下は寝てますよ。
293デフォルトの名無しさん:2009/01/19(月) 03:33:58
自分が大学生の時にもいたけど、こっちが間違っていないのに
何か指摘すると、必死に言い返すバカって、本当に始末が悪くて
迷惑した。態度も悪いし。まさに201みたいな、自分が知能が低いくせに
食い下がる基地外みたいにな。少し黙ってろ、ド素人は。
あのコードを見て、何が違うかも説明できないお前が、勝手に
思い込んだだけだろ。
294デフォルトの名無しさん:2009/01/19(月) 03:37:50
201が必死必死必死必死w

>>258とか、>>275らしき、もう一匹バカがいるようだが、日本語が読めないアホだろ?w
295201:2009/01/19(月) 03:39:53
>>292
すまん。一応俺も無職ww

>>293
お前の環境で実行してみたか?
分かってると思うけど、最適化施したら正常に機能しない可能性がある
俺の環境(Windows(bcc))だったらちゃんと機能した
296201:2009/01/19(月) 03:42:17
>>294
自演必死だねwww
口調で分かる
297デフォルトの名無しさん:2009/01/19(月) 03:42:48
ttp://www.bohyoh.com/CandCPP/C/Library/strcpy.html
答えは出てんだよw いつまで分かりきったことで、必死に
意味も無い、間違った持論を展開するんだね、君は?w
まぁ、こんな場所に来ている人なんてごく一部だし。
そんな一部の人間にさえ、理解されない視野の狭い井の中の蛙w
とりあえず、こんな時間に起きていて、不規則な生活が習慣になっているなら
それを正した方が良いよ。早死にの原因だから。俺?不規則というのは
規則性がないことであって、この時間から明け方までが俺が起きている時間さ。
だって、俺は今、ジャポンのオーバーシーにいるから、時差でこっちは昼間なんだよw
298デフォルトの名無しさん:2009/01/19(月) 03:46:33
日本語でおk
299201:2009/01/19(月) 03:47:58
>>297
人の話聞いてる?

>>All
スレ汚してスマンorz
300201:2009/01/19(月) 03:53:41
>>296
ごめん。訂正。
こりゃ厳密には自演って言わないね。
頭が鈍ってきたw
寝るわ。
301デフォルトの名無しさん:2009/01/19(月) 03:55:01
201は本当にバカだ。あれほどレスするなと言われても、必死になっていることを
わざわざ露呈するなんて。今年一の、このスレの恥さらしだ!通報しますた!
302201:2009/01/19(月) 03:56:36
>>301
つい熱くなってしまって・・・orz
303デフォルトの名無しさん:2009/01/19(月) 03:57:27
そもそも話題のmy_strcpyがstrcpyの要件を満たしていない件
304デフォルトの名無しさん:2009/01/19(月) 04:01:29
んでさ、その大学生時代の、食い下がり野郎がさ、まともに使えもしない英語を使うんだわ。
I go to a bus とか言っちゃってさ。何?って聞いたら、風呂に入ってくるってさ、ぎゃははは(バンバン
マジ受けるんですけどぉ〜?理系に進んだとは言え、英語の成績は良かった俺が
take a bath って言ってやったんだけどさ、妙に食い下がる正確のせいか、辞書で調べたらしく
have a bath とも言うんだよぉ〜とか言ってやんの。別にそう言わないとは、こっちは言ってないのに。
だったら最初から辞書を引けよってかーんじ。まぁ、それでも take a bath が一般的なんだけどね。
英語圏で生活してみろっちゅーのっw
俺?だからさ、さっきっから言っているだろ?ジャポンのオーバーシーだから、昼間だって。
まだ風呂に入る時間じゃないが、シャワーを浴びるしw
305デフォルトの名無しさん:2009/01/19(月) 04:17:06
>>237
> キーボードから入力された0から9までの数字各々の個数をカウントし表示するプログラムを作れ
”各々の個数をカウント”
日本語が読めないのか、出題者が19003だったら1,3,9が1つ、0が2つといった書き方をすれば良かったのか
にしても、201が書いたコードは、whileループを抜けないまま強制終了でもさせなきゃ駄目だし。
コンパイラに通って、実行できたからといっても、題意の通りに機能したわけでもないというのに・・・
306デフォルトの名無しさん:2009/01/19(月) 04:23:12
>>305
寝ろ
307デフォルトの名無しさん:2009/01/19(月) 05:37:03
誰かお願いします。
int型の変数numに初期値99を、char型の変数chに初期値'Z'を設定し、それを
表示するプログラムex6_2を作成せよ。
プログラムの作成にあたり、以下に従うこと。
・int型の変数numとchar型の変数chはmain()関数内で宣言すること
・numとchへの初期値設定はinit_var()関数にて行うこと。
------------------------------------------------------
void init_var(int *pnum, char *pch);
返り値:なし
引数 :pnum:数値格納変数へのポインタ
pch :文字格納変数へのポインタ
処理 :数値格納変数に数値99を、文字格納変数に文字'Z'
を格納する
------------------------------------------------------
※main()関数内の変数に対して別関数init_var()にて値を書き込むため、
引数としてポインタを用いる

《実行例》
>ex6_2
num = 99, ch = Z ←変数の値を表示するだけ
308デフォルトの名無しさん:2009/01/19(月) 05:38:10
これも

int型の変数3個(※配列で宣言する)に数値を入力し、その合計を求めて表示する
プログラムex6_3を作成せよ。
プログラムの作成にあたり、以下に従うこと。
・入力数値を格納するint型の配列はmain()関数内で宣言すること
・指定された個数の数値の合計を求める関数getsum()を自作して使うこと。
getsum()関数の仕様は以下の通り。
----- getsum() ----------------------------------------------------
int getsum(int *pnum, int numcnt);
引数 :pnum :数値を格納している配列の先頭アドレス
numcnt :和を求める変数の個数
返却値:算出した和
処理 :指定された個数の変数の和を求める
-------------------------------------------------------------------
※getsum()は、「int getsum(int *, const int);」としてもよい

《実行例》
>ex6_3
Enter number(1) : 10
Enter number(2) : 23
Enter number(3) : 41
Sum = 74
309デフォルトの名無しさん:2009/01/19(月) 07:18:52
なんだかなぁ・・・
310デフォルトの名無しさん:2009/01/19(月) 12:12:22
最近テンプレを読む能力もないお馬鹿さんが増えてるよね

>>307
#include <stdio.h>
void init_var(int *pnum, char *pch) { *pnum = 99; *pch = 'Z'; }
int main(void) { int num; char ch; init_var(&num, &ch); printf("num = %d, ch = %c\n", num, ch); return 0; }
311デフォルトの名無しさん:2009/01/19(月) 12:16:05
>>308
#include <stdio.h>
int getsum(int *pnum, int numcnt)
{
int sum, i;
for (i = sum = 0; i < numcnt; ++i) sum += pnum[i];
return sum;
}
int main(void)
{
int pnum[3], i;
for (i = 0; i < 3; ++i) { printf("Enter number(%d) : ", i + 1); scanf("%d", &pnum[i]); }
printf("Sum = %d\n", getsum(pnum, 3));
return 0;
}
312デフォルトの名無しさん:2009/01/19(月) 14:53:05
ねむい
313デフォルトの名無しさん:2009/01/19(月) 15:46:48
[1] Cプログラミング基礎
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8677.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC++2003
 [3.3] 言語:C++
[4] 期限: 1月21日(水曜日)
[5] その他の制限: クラスの定義辺りまで習いました

参考プログラムを軽く修正すればいいだけだとは思うのですが
うまくいきません。よろしくお願いします。
314デフォルトの名無しさん:2009/01/19(月) 15:52:15
>>313
課題は原文を貼ってくれないと
素人の考えた文言は意味不明で読み解けない。
315313:2009/01/19(月) 18:03:57
>>314
一応これが原文なのです・・・。
丁寧すぎるというか、確かに読み解きにくいですね・・・。
うーん困った・・・。
316デフォルトの名無しさん:2009/01/19(月) 18:25:54
>>315
>3つのchar型のメンバー変数(ポインタ)
とか、専門家が考えた文言とは思えない。
317デフォルトの名無しさん:2009/01/19(月) 18:58:42
厨房に負けてるお前らワロスwwww
318デフォルトの名無しさん:2009/01/19(月) 19:25:16
>>313
ひっでぇ問題文だな
とりあえず問題のレベルに合わせて作ってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8678.cpp

deleteしろよとか、例外安全はどうしたとか、std::endl使えよとか
突っ込みどころ多すぎるが
319デフォルトの名無しさん:2009/01/19(月) 19:41:22
>>318
今問題部読んでみたけど、表示の際に分岐させる指示がない気がする
『data12 には〜』の部分は誤植で、実はこうさせたかったのではなかろうか?
引数1→ n,n,n-n
引数2 → n,m,n-m
320デフォルトの名無しさん:2009/01/19(月) 19:45:12
【質問テンプレ】
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
テキストファイル(test.txt等)を開いてabcという文字列があったらその部分だけを削除するプログラムを作成せよ。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++ 2008
 [3.3] 言語: C++
[4] 期限: 1月20日
[5] その他の制限: 特にないです
よろしくお願いします
321デフォルトの名無しさん:2009/01/19(月) 19:47:43
誰か>>244をお願いします!!
322デフォルトの名無しさん:2009/01/19(月) 21:02:22
>>244
入力形式が明示されてないので勝手に考えた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8679.c
323201:2009/01/19(月) 21:22:55
>>320
詳しいところは想像で補ってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8680.c
324115:2009/01/19(月) 21:30:58
>>238
>>170はファイル名以外だと、変数の宣言をブロックの最初に持って来たくらいです
他は触ってません。

ビルドしてから実行しようとしても、「このプロジェクトは変更されています ビルドしますか」というメッセージが出て、
実行すると「.exeを開始できません」とエラーが出ます。

325デフォルトの名無しさん:2009/01/19(月) 21:41:57
[1] 授業単元:情報計算処理
[2] 問題:y=x * tan(x) と、y = (a^2 - x^2)^(1/2)  の連立方程式をxについて解け。ただしaは定数である。
二分法を用いること。余裕があればニュートン法も試してみよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限: 特になし
[5] その他の制限: 二分法だけでもよいので、よろしくお願いします。
326デフォルトの名無しさん:2009/01/19(月) 21:44:28
327デフォルトの名無しさん:2009/01/19(月) 21:46:44
328デフォルトの名無しさん:2009/01/19(月) 21:47:12
どなたか>>285よろしくお願いします
329デフォルトの名無しさん:2009/01/19(月) 22:53:41
>>322
わざわざ本当にありがとうございます!!
これが一部のプログラムなんですが、これからでも作成できますか?
よろしくお願いします。
#include <stdio.h>
int main(){
Seito zemi[10];
printf("全部で何人?"); scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("%d 人目の名前は?", i + 1);
scanf("%s", zemi[i].namae);
printf("読み仮名は?");
scanf("%s", zemi[i].kana);
printf("点数は?");
scanf("%d", &zemi[i].ten);
}
printf("%s さんが%d 点で最高です\n",
zemi[max_i].namae, zemi[max_i].ten);
return 0;
}
330デフォルトの名無しさん:2009/01/19(月) 23:02:43
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8682.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 1月20日23:59まで
[5] その他の制限: 特になし

よろしくお願いします。
331デフォルトの名無しさん:2009/01/19(月) 23:24:14
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8683.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月19日午前8時
[5] その他の制限:できるだけ簡単な関数でお願いします
332デフォルトの名無しさん:2009/01/19(月) 23:39:20
なぜ階乗を求める問題として出題しないノカー!?
333デフォルトの名無しさん:2009/01/19(月) 23:47:33
pi = 3.141592;
引数nは{-100,-99,-98, ... -2,-1,0,1,2, ... 99,100}として
cos(2*pi*n/100)の値のうち、大きな値から順に29個を選択し、
大きい順に並べた配列にするプログラムって、どう書けばいいんですか?
334デフォルトの名無しさん:2009/01/19(月) 23:48:37
テンプレまもらないとC++/CLIで答えちゃうぞ?
335デフォルトの名無しさん:2009/01/19(月) 23:52:53
>>334
ちょっとまてそれは…と思ったが別にスレチじゃないのか
いいぞもっとやれー
普段使わないから見てみたい
336デフォルトの名無しさん:2009/01/19(月) 23:55:20
>>331
#include <stdio.h>

int main(int argc, char *argv[]){
int i, factorial;

i = 1;
factorial = 1;
while(i <= 10)
factorial *= i++;
printf("%d\n", factorial);

for(i = 1, factorial = 1; i <= 10; i++)
factorial *= i;
printf("%d\n", factorial);

return 0;
}
337デフォルトの名無しさん:2009/01/20(火) 00:25:31
338デフォルトの名無しさん:2009/01/20(火) 00:31:34
>>166さんの指摘していただいた通り、>>161は1から入力した数値までの和を表示するプログラムでした。お願いします。(ちなみに無期限でした
339デフォルトの名無しさん:2009/01/20(火) 00:43:44
340デフォルトの名無しさん:2009/01/20(火) 01:02:42
[1] 授業単元:プログラミング
[2] 問題文:HDD上の英文のテキストファイルを読んで、使用されている単語を抽出し、アルファベット順に整理して書き出すプログラム
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C
[4] 期限:1/21まで
[5] その他の制限:特にないです。

よろしくお願いします。
341デフォルトの名無しさん:2009/01/20(火) 01:05:42
>>340
単語に区切る基準がわからん。
スペースだけでいいのか?
342デフォルトの名無しさん:2009/01/20(火) 01:23:35
8×8画素の2次元DCT(離散コサイン変換)のプログラムができるかたいたら是非お願いします。
http://vip16.ec.t.kanazawa-u.ac.jp/isseminer/dct.html
343デフォルトの名無しさん:2009/01/20(火) 01:32:41
>>342
>>1くらいよめ
死ね
344デフォルトの名無しさん:2009/01/20(火) 01:53:49
>>342 式のまんま
#include<stdio.h>
#include<math.h>
double C(int x) { return x == 0 ? (1 / sqrt(2)) : 1; }
int main() {
double f[8][8] = {
{205,163,155,139,144,137,153,151,},
{212,183,171,148,134,138,162,154,},
{205,188,180,173,156,153,183,162,},
{183,163,166,187,183,174,193,146,},
{195,158,149,150,158,139,134,144,},
{193,163,154,161,181,183,169,163,},
{140,132,135,140,153,168,165,165,},
{107,108,122,122,122,134,153,166,},
};
double F[8][8], PI = atan(1)*4;
int u, v, x, y;
for (u = 0; u < 8; u ++) { for (v = 0; v < 8; v ++) {
F[u][v] = 0;
for (x = 0; x < 8; x ++) for (y = 0; y < 8; y ++)
F[u][v] += f[x][y] * cos((2*x+1)*u*PI/16) * cos((2*y+1)*v*PI/16);
F[u][v] *= C(u) * C(v) / 4; printf("%10.4f ", F[u][v]);
} printf("\n"); } printf("\n");
for (x = 0; x < 8; x ++) { for (y = 0; y < 8; y ++) {
f[x][y] = 0;
for (u = 0; u < 8; u ++) for (v = 0; v < 8; v ++)
f[x][y] += C(u) * C(v) * F[u][v] * cos((2*x+1)*u*PI/16) * cos((2*y+1)*v*PI/16);
f[x][y] /= 4; printf("%10.4f ", f[x][y]);
} printf("\n"); } return 0;
}
345デフォルトの名無しさん:2009/01/20(火) 02:42:36
[1] 授業単元:数値解析
[2] 問題文:

 次の微分方程式をルンゲ・クッタ法を用いて解くプログラムを作成せよ。(指定区間の数値解を求めよ。)
 @ dy/dx = 4y/(x+1), 初期条件 x0 = y0 = 1, 区間 [1:10]
 A dy/dx = x^2 - y, 初期条件 x0 = y0 = 1, 区間 [1:10]

 考察事項
 - 数値解のプロット
 - 微小区間 Δx の幅を変化させたときの振る舞い
 - 解析解との比較

[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C言語
[4] 期限:2009年1月21日00:00まで
[5] その他の制限:なるべく簡単な関数でお願いします
346デフォルトの名無しさん:2009/01/20(火) 02:51:19
[1] 授業単元: C
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8685.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2008 Express Edition
 [3.3] 言語: C
[4] 期限: 1月20日18:00まで
[5] その他の制限: 特になし

よろしくお願いします。
347デフォルトの名無しさん:2009/01/20(火) 03:16:23
どなたか>>285よろしくお願いします
348デフォルトの名無しさん:2009/01/20(火) 03:22:00
どなたか私の預金口座に1000万円をお恵みで振り込んで下さい、宜しくお願いします
349デフォルトの名無しさん:2009/01/20(火) 04:49:39
じゃあ今から携帯持ってATMへ行ってください
操作を指示しますから
350デフォルトの名無しさん:2009/01/20(火) 04:51:48
立場が逆やんw
351デフォルトの名無しさん:2009/01/20(火) 05:19:35
いいえ、受け取り手続きのために必要なことです
352デフォルトの名無しさん:2009/01/20(火) 07:30:32
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8686.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月20日昼まで
[5] その他の制限:できるだけ簡単な関数でお願いします
353>>346:2009/01/20(火) 07:45:03
自己解決しました
354デフォルトの名無しさん:2009/01/20(火) 09:44:36
>>352
#include <stdio.h>
int main(void)
{
char c;
scanf("%c", &c);
if ('A' <= c && c <= 'Z') printf("%d\n", c - 'A' + 1);
if ('a' <= c && c <= 'z') printf("%d\n", c - 'a' + 1);
return 0;
}
355デフォルトの名無しさん:2009/01/20(火) 09:56:11
>>345
とりあえずプログラムだけ。

#include <stdio.h>
double f(double x, double y)
{
// return 4 * y / (x + 1);
return x * x - y;
}
double Runge_Kutta(double x0, double y0, double x1, double delta)
{
double k1, k2, k3, k4;
double y = y0;
double x = x0;
while (x - x1 < 0)
{
k1 = f(x, y);
k2 = f(x + delta / 2.0, y + delta * k1 / 2.0);
k3 = f(x + delta / 2.0, y + delta * k2 / 2.0);
k4 = f(x + delta, y + delta * k3);
y += delta * (k1 + k2 * 2 + k3 * 2 + k4) / 6.0;
x += delta;
}
return y;
}
int main(void)
{
double delta = 1e-4;
printf("delta=%f, y=%f\n", delta, Runge_Kutta(1, 1, 10, delta));
return 0;
}
356デフォルトの名無しさん:2009/01/20(火) 10:21:33
>>347
一応食指は動くんだが、時間がね。
あんま期待しないでね。

>>352
お前、たったそれだけの文ぐらいレスに書けよ。w
357デフォルトの名無しさん:2009/01/20(火) 11:36:13
[1] 授業単元:コンピュータプログラミング
[2] 問題文:
チーム数nを指定し、総当たり戦での一組の対戦カードの試合数mを指定する。
各々のチームの名前(全角の漢字またはカタカナやアルファベット)と、
勝ち数および引き分け数をA−B、A−C、・・・、B−C、B−D、・・・の対戦カード順でキーボードから入力し、
勝率を計算して、勝率の高い順に並び替えてチーム名、全試合数、全勝ち数、全負け数、全引き分け数、
勝率を表示しするプログラムを作成しなさい。
また、勝ち数+引き分け数<=試合数となるような安全装置をつけなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2]
 [3.3] 言語:C言語
[4] 期限:1月24日
[5] その他の制限:最初の部分で引っかかってしまい、手詰まりの状況です。よろしくお願いします。
358デフォルトの名無しさん:2009/01/20(火) 12:13:02
どなたか
>>325 よろしくお願いします。
359デフォルトの名無しさん:2009/01/20(火) 12:56:34
>344さんありがとうございます

{205,163,155,139,144,137,153,151,},
{212,183,171,148,134,138,162,154,},
{205,188,180,173,156,153,183,162,},
{183,163,166,187,183,174,193,146,},
{195,158,149,150,158,139,134,144,},
{193,163,154,161,181,183,169,163,},
{140,132,135,140,153,168,165,165,},
{107,108,122,122,122,134,153,166,},
};
の値を自由に変えるために自分で入力する形に変える場合は、ここからどのように変更すればいいのでしょうか。

360デフォルトの名無しさん:2009/01/20(火) 13:16:11
>>358
この辺から見繕う方向で
http://oku.edu.mie-u.ac.jp/~okumura/algo/archive/
361デフォルトの名無しさん:2009/01/20(火) 16:23:09
>>285
いつもの読み込みルーチン使用。
とりあえず二分探索木作成、表示まで。あー疲れた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8689.c

削除・検索は関数さえあれば UI はどんなんでもいいのか?
また気が向いたら作る。

しかし学生のプログラムじゃねーな。w
362313:2009/01/20(火) 17:00:35
>>318 & 皆様
ありがとうございました。
363340:2009/01/20(火) 18:49:27
>>341
よくわからないのですが、
任意でお願いします。
364デフォルトの名無しさん:2009/01/20(火) 19:39:40
365デフォルトの名無しさん:2009/01/20(火) 20:19:21
自分はC言語を習いたてです.
C言語のリスト構造でお聞きしたいのですが
”リスト構造に記憶された整数が小さい順になる場所を探して挿入できる
プログラムを作成せよ"の日本語がよくわかりません
ランダムに整数を打ち込んで,それが小さい順に表示されるようにするという
ことですか?
366デフォルトの名無しさん:2009/01/20(火) 20:20:26
>>365
おそらくはそういうことでしょう
367デフォルトの名無しさん:2009/01/20(火) 20:23:03
>>366
ありがとうございます
なんとか頑張ってみます
368デフォルトの名無しさん:2009/01/20(火) 21:03:07
[1] 授業単元: C言語実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8691.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:cc
 [3.3] 言語:C
[4] 期限:[2009年1月21日17時まで]
[5] その他の制限: 特にありません.
369201:2009/01/20(火) 22:07:13
>>368
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8692.c

nにはscanfとかで適当に入れてくれ
370デフォルトの名無しさん:2009/01/20(火) 22:22:03
>>368
deleteの実装だけ・・・insertの形式に無理やり近づけたバージョン。


void delete(struct record ** listPointer, int score)
{
if (*listPointer == NULL)
{
printf("no data (score=%d)\n", score);
}
else
{
if ((*listPointer)->score == score)
{
struct record * temp = *listPointer;
*listPointer = (*listPointer)->next;
free(temp);
}
else
{
delete(&((*listPointer)->next), score);
}
}
}
371368:2009/01/20(火) 22:48:16
>>369,>>370
お二方のどちらのものでも確認できました。
ありがとうございました。
372デフォルトの名無しさん:2009/01/20(火) 23:23:11
10進数を2進数に変換するプログラムで

int b;
for(b=31; b>=0; b--){
printf("%d",(x>>b)&1);
}
"整数xをbビット右にシフトしその結果を1のANDを取ることでxのbビット目が
1か0かがわかる"と本で書かれているのですがこれの意味がいまいちよくわかりません.
なぜこのプログラムで10進数を2進数に変換できるのですか?
373デフォルトの名無しさん:2009/01/20(火) 23:59:24
>>372
(1) 例えばxの2進表記が
11111111000000001111111100000000
のとき、b=15ビット目(右端が0ビット目と数える)、すなわち
1111111100000000[1]111111100000000
括弧で囲ったビットを判定したいとする。

(2) x>>bは、次のようになる。
00000000000000011111111000000001

(3) (x>>b)&1は、次のようになる。
00000000000000011111111000000001 ← x>>b
00000000000000000000000000000001 ← 1
--------------------------------- &
00000000000000000000000000000001 ← (x>>b)&1

(4) 従って、15ビット目は1であると判る。

さあ、どこがわからない?
374デフォルトの名無しさん:2009/01/21(水) 00:08:32
>>372
あるnビット目が1か0かをチェキしているからさ
375デフォルトの名無しさん:2009/01/21(水) 00:09:36
関数strcatを自分で作ったんですが、ちょっとおかしな点があります。

include<stdio.h>

char *my_strcat(char *s1, char *s2){
int i = 0;
int n = 0;
while(s1[i] != '\0'){
i++;
}
while(s2[n] != '\0'){
s1[i] = s2[n];
i++;
n++;
}
s1[i] = '\0';
return s1;
}

int main(){
char *s1 = "abc";
char *s2 = "vwxyz";
my_strcat(s1, s2);
printf("s1:%s s2:%s\n", s1, s2);
return 0;
}

s1はちゃんと表示されるのですが、s2が一文字少なく表示されてしまいます。
このプログラムのどこをどう直せばよいでしょうか。
お願いします。
376デフォルトの名無しさん:2009/01/21(水) 00:13:13
テンプレに沿ってなくてすみません。
至急お願いします。
C言語です。
1から8192の間の数字を512個重複しないように乱数発生させ、配列に格納したいのですが、以下のプログラムだと重複してしまいます。
どこを直せばよいのでしょうか?
教えて下さい。よろしくお願いします。


a = 0;
n = (int)(rand() / (RAND_MAX+1.0) * 8192.0);
ransu[0] = n;
printf("ransu[0]=%d\n", ransu[0]);
a = 1;

for (i=1; i<=511; i++) {
for (j=0; j<a; j++) {
n1 = (int)(rand() / (RAND_MAX+1.0) * 8192.0);
printf("n1=%d ", n1);
if (ransu[j] != n1) {
ransu[a] = n1;
printf("a=%d ransu[a]=%d\n", a, ransu[a]);
break;
}
else {
continue;
}
}
a++;
}
377デフォルトの名無しさん:2009/01/21(水) 00:13:22
>>1を読んだら、質問内容がスレ違いだと気づいてくれ
378デフォルトの名無しさん:2009/01/21(水) 00:16:39
>>375
>>270
なんで>>262>>375もリテラルを書き換えようとしてんの?
もしサンプルとしてそんなコードが提供されてるんだとしたら
やっぱめんどくさいからいいや
379デフォルトの名無しさん:2009/01/21(水) 00:21:29
言っても分からん奴は分からんのだよ。だから、大学にしろ
ランク というものが存在するんだが。しかし、それも怪しい時代だな。
所詮、言葉ではどうにでもなる。自分が理解していなくても、上のお墨付きなら
その範囲内で発言すれば、間違いとは言えないからな。
ただ、捻られると通用しない、政治も時代が変わると通用しなくなるものさ。
そこで、本質を理解している人が、最後は生き残る。諸行無常の響きあり。
380デフォルトの名無しさん:2009/01/21(水) 00:27:29
>>376
至急だからテンプレに沿わなかったってこと?
親しき仲にも礼儀ありをふまえて、親しくなければ礼儀いらず、ということか
381デフォルトの名無しさん:2009/01/21(水) 00:28:03
>>379
何に酔ってるんだ
382デフォルトの名無しさん:2009/01/21(水) 00:28:41
>>381 お前きめぇwwwww
383デフォルトの名無しさん:2009/01/21(水) 00:30:14
スレ違いを誘導するのもめんどくさいし、
今度からテンプレに誘導先表示しとこうぜ。
384デフォルトの名無しさん:2009/01/21(水) 00:33:39
>>376 面倒くさいから、そのソース無しで
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8694.c
385デフォルトの名無しさん:2009/01/21(水) 00:42:07
>>376
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int ransu[512], b, n, i, j;
for (i = 0; i < 512; ++i) ransu[i] = 0;
for (i = 0; i < 512; ++i) {
do {
b = 1;
n = (int)(rand() / (RAND_MAX + 1.0) * 8192);
for (j = 0; j < 512 && b; ++j) if (ransu[j] == n) b = 0;
if (b) ransu[i] = n;
} while (!b);
}
for (i = 0; i < 512; ++i) {
if ((i + 1) % 16) printf("%5d", ransu[i]); else puts("");
}
return 0;
}
386デフォルトの名無しさん:2009/01/21(水) 00:42:39
おっとすでに回答者がいたのか。失礼。
387デフォルトの名無しさん:2009/01/21(水) 00:59:11
悪くはいないだろうけど、いくつか試してみると気づくが、乱数を発生させて
それより前に出たものと重複するなら、そうならないものを発生させるまで
繰り返すやり方は、場合によっては時間が掛かる。
388デフォルトの名無しさん:2009/01/21(水) 01:06:47
389デフォルトの名無しさん:2009/01/21(水) 01:07:32
大学や専門学校の宿題を自称中学生が片付けてる流れに吹いてしまったw
390デフォルトの名無しさん:2009/01/21(水) 01:39:53
>>388
言いたいことがあるなら反論しろ。バカが
ただ、前に出たものと重複するかを調べるやり方は、
明らかに効率が悪いし、そんなものを採用したら、バカにされるよ
391デフォルトの名無しさん:2009/01/21(水) 01:40:44
392デフォルトの名無しさん:2009/01/21(水) 01:41:17
>>390
バカにつける薬は無い
393デフォルトの名無しさん:2009/01/21(水) 01:44:07
394デフォルトの名無しさん:2009/01/21(水) 01:44:15
>>391
ちがうよwwww

>>387
時間がかかるというか有限時間で終わる保証はないんじゃね?
395デフォルトの名無しさん:2009/01/21(水) 01:53:21
いや、範囲を広めてその中から選ぶ数を減らしたとしても、前に出たものと重複したら
やり直すやり方はお勧めできない。数が増えれば増える程、処理時間が掛かることは
実行してみれば分かる。というか、もとから効率が悪いことは、分かりきっている。
396デフォルトの名無しさん:2009/01/21(水) 01:56:13
>>361
すみません、本当にありがとうございます
ただ実行できなかったんですがどうすればできるようになるでしょうか
CPad for Borland C++Compiler 使ってます
UIもよくわからないので・・・どれでも大丈夫です
本当に申し訳ございません
397デフォルトの名無しさん:2009/01/21(水) 01:58:17
いや、いやいやいや、そのアルゴリズムはありえない。
バブルソートよりもあり得ないくらい、普通じゃ使わない。
398デフォルトの名無しさん:2009/01/21(水) 02:05:35
>>384
swp = rand() % MAX だと偏りが生じる。
NMEMB個取り出すのにMAX回スワップする必要はない。

具体的には
>for(i=0; i<MAX; i++) {
> swp = rand() % MAX;
>
> tmp = a[swp];
> a[swp] = a[i];
> a[i] = tmp;
> }
>
> for(i=0; i<NMEMB; i++) randa[i]=a[i];
の部分を
for(i=0; i<NMEMB; i++) {
swp = rand() % (MAX - i);
randa[i] = a[swp];
a[swp] = a[MAX-1-i];
}
とすればいい。
399201:2009/01/21(水) 02:10:11
>>396
えっと、>>361はC言語とC++を混同してるみたい(最近のコンパイラはこれで通るのかな?)
main関数内に散らばっている変数宣言を全部、関数内先頭に持ってくればいい
400デフォルトの名無しさん:2009/01/21(水) 02:14:52
[1] 授業単元:基本情報処理
[2] 問題文(含コード&リンク):
http://aryarya.net/up/img/2258.jpg
http://aryarya.net/up/img/2259.jpg
http://aryarya.net/up/img/2260.jpg
http://aryarya.net/up/img/2261.jpg
[3] 環境
 [3.3] 言語: windows
[4] 期限: 2009/1/21/12:00
[5] なし
すいません、れぽーとあるの忘れてましたのでお力をお貸しください。
文型脳なのでこの授業にもついていけません。問題の回答だけ教えていただけないでしょうか?
内容の読解は自分で努力します。お願いします。写真見づらかったらごめんなさい。
401デフォルトの名無しさん:2009/01/21(水) 02:15:02
向こうのスレでも貼られていたので、一応こっちにも貼っておく。
http://d.hatena.ne.jp/bellbind/20081105/
402デフォルトの名無しさん:2009/01/21(水) 02:19:28
>>396
>[3.2] コンパイラ名とバージョン:任意
>CPad for Borland C++Compiler 使ってます
ちゃんと正しく書かないからだよ。

たしかBCCはC89だから、変数の宣言位置が問題になってるんだと思う
8689.c の45行目に {、81行目に } を追加すればたぶんおk
403デフォルトの名無しさん:2009/01/21(水) 02:26:11
>>399
本当にありがとうございます、実行は確認できました
えっと、このプログラムはC++の知識も入っているということでしょうか
読解も専門書見ながらにしかできない頭でして・・・
404デフォルトの名無しさん:2009/01/21(水) 02:30:16
>>402
本当こちらの知識と説明不足でした、すみません
追加してみてこちらも実行確認できました
ありがとうございます
405201:2009/01/21(水) 02:35:47
>>402
なんと!?BCCってC99に対応してなかったんかorz
今俺の頭の中にあったモヤモヤが全部消えたw

>>403
ごめん。言い方が悪かった
C++の知識は(一応)入ってないです
でも、BCCとかみたいにC99に対応してないコンパイラだと、コンパイルできないときがあるから注意
406デフォルトの名無しさん:2009/01/21(水) 02:40:01
201(笑)
407400:2009/01/21(水) 02:42:12
すみません、どなたかおねがいします…
もうちょっとわかりやすい変数名だったらいいのに…
408デフォルトの名無しさん:2009/01/21(水) 02:43:00
>>405
入ってないですか、わかりました
大変親切に教えていただきありがとうございました
409デフォルトの名無しさん:2009/01/21(水) 02:49:24
>>401
そういう、個人の主観で勝手な言い分を述べる奴は、一部が正しくても信用ならん。
少なくとも、何が言いたいか、あんたが簡潔に述べるべき。
410デフォルトの名無しさん:2009/01/21(水) 02:53:49
411デフォルトの名無しさん:2009/01/21(水) 02:55:39
>>400
>  [3.3] 言語: windows

> 文型脳なのでこの授業にもついていけません。問題の回答だけ教えていただけないでしょうか?

まあ、このスレらしいよな
412デフォルトの名無しさん:2009/01/21(水) 02:56:36
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
以前>>116で質問し>>124さんに回答をいただいたものです
http://www.k-php.com/lib/uploda/src/file132.jpg

追加の課題で

1.R=0の場合におけるiとvを出力するプログラム
計算はオイラー法を用い、刻み幅hをT/10として10周期分計算する.TはLとCから求められる理論周期である.

2.R=0.2の場合におけるiとvを出力するプログラム
計算はルンゲ・クッタ法を用い、刻み幅hをT/10として10周期分計算する.TはLとCから求められる理論周期である.


[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C言語
[4] 期限: 1月23日まで
[5] その他の制限:
 特にないです

オイラー法とかルンゲ・クッタ法とか正直C言語の課題という感じではないんで無理かもしれませんが
もしどなたかやってくださる方いたらお願いします
413デフォルトの名無しさん:2009/01/21(水) 02:58:02
>>409
バカな僕にもわかるように説明してくださいって言えよw
414デフォルトの名無しさん:2009/01/21(水) 02:59:29
>>411
ああ〜間違えてますね、すいません。
コンパイラで実際に組むプログラムではないので省略したらおかしなことに…
OSが
415400:2009/01/21(水) 03:00:13
とちゅうで送信してしまったしもうだめだ〜
OSがWindowsです
416デフォルトの名無しさん:2009/01/21(水) 03:02:57
>>400
画像でかすぎワロタ
アキカウ
417デフォルトの名無しさん:2009/01/21(水) 03:11:08
>>416
ああありがとうございます!!アキまで自分で考えたのと同じでした!
ほかは全滅です。画像でかくてすみません^o^
あとは読解がんばってきます!ありがとうございました!
418 ◆eS7ajWvX.I :2009/01/21(水) 03:30:25
2週間考えていましたが先が見えません。よろしくお願いします。
[1] 授業単元:計算機プログラミング
[2] 問題文(含コード&リンク):
出発点を打ち込むと、隣接する交差点名と交差点番号および距離を表示させます。表示された交差点の中から次に進む交差点を選択できるようにし、順々に道案内するプログラムを作成しなさい。また、プログラムを途中で終了させる工夫もしなさい。
交差点のデータ(map.dat)は次の通り。
1, 0.0, 0.0, Eki, 2, 2, 4
2, -0.6, 0.15, Dikancho, 3, 1, 3, 11
3, -0.83, 0.0, Kamidaikancho, 4, 2, 4, 9, 10
4, -0.6, -0.38, Omachi, 3, 1, 3, 5
5, -0.38, -0.68, Matsumori, 3, 4, 6, 7
6, 6.0, -0.3, Takada, 1, 5
7, -0.18, -1.02, Toriage, 2, 5, 8
8, -0.84, -1.58, Nakano, 3, 7, 9, 18
9, -0.9, -0.98, Daigaku, 2, 3, 8
10, -0.98, 0.15, Runesugai, 3, 3, 11, 13
11, -0.78, 0.3, Yubinkyoku, 3, 2, 10, 12
12, -1.28, 0.68, Mototeramachi, 2, 11, 13
13, -1.32, 0.53, Ichibancho, 4, 10, 12, 14, 15
14, -1.8, 0.98, Siro, 2, 13, 20
15, -1.43, -0.15, Doyacho, 2, 13, 16
16, -1.73, -0.26, Shintera, 3, 15, 17, 20
17, -1.8, -1.43, Asahigaoka, 3, 16, 18, 19
18, -1.2, -1.73, Nishi, 2, 8, 17
19, -2.48, -1.2, Shimizu, 2, 17, 20
20, -2.33, -0.51, Jyumoku, 3, 14, 16, 19
左から、「交差点番号,Eki基点のx座標,y座標,地名,交差点から出る道路の本数,隣接する交差点番号」を示す。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年1月22日17:00まで
[5] その他の制限:サーチング、ソーティングを使わなければならない指定です。
419デフォルトの名無しさん:2009/01/21(水) 03:59:09
>>415
それは大抵分かるw
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
残りの項目を書かなかったのはなんで?分からないなら先生に聞いてください。
420デフォルトの名無しさん:2009/01/21(水) 04:00:41
>>413
意味不明。何を言っているかは分かっているが、だから何?ってレベルなんだよ。
池沼は黙ってろよ、むしろバカなお前に理解できるように説明する方が難しいw
421デフォルトの名無しさん:2009/01/21(水) 04:01:58
422デフォルトの名無しさん:2009/01/21(水) 04:03:02
>>409ってどっかの誤爆なんじゃないかな。。
意味が分からなさすぎるw
423デフォルトの名無しさん:2009/01/21(水) 04:06:10
>>422
真性のキチガイだから触っちゃだめw
424デフォルトの名無しさん:2009/01/21(水) 04:07:10
>>422
別のスレを見れば分かる。乱数発生について。
425デフォルトの名無しさん:2009/01/21(水) 04:07:23
ごめwww向こうに沸いてるの気づいてなかったw
なら誤爆じゃなくていつものことだね><
426デフォルトの名無しさん:2009/01/21(水) 04:08:45
>>418
道案内って、何をすることか?
427デフォルトの名無しさん:2009/01/21(水) 04:11:33
どう足掻いても、擬似乱数発生のライブラリを使ってしまっている以上、
それに依存するのは言うまでも無い。何を今さら、当たり前なことを。
だったら、それに応じてコードを書き換えれば良かろう?
しかし、前に出たものと重複しないかを調べてやり直すやり方は、
要素の数が増えれば増える程、重複する確率が高くなり、しかも
既に発生させた乱数と比較しなければならないという、無駄が多くなるんだが?
それで時間が掛かるわけだが、そんなの誰でも気づくだろ、JK
428デフォルトの名無しさん:2009/01/21(水) 04:13:15
経路探索じゃあなさそうなので、今いる地点につながる隣接情報を持つ交差点一覧を出すんじゃないかな。
アドベンチャーゲームっぽい感じというか。
こことここにいけます。どこにいきますか?
どこそこにつきました。
こことここにいけます。どこに(ry
みたいなんじゃないかなぁ。
ソートをする場面が思いつかないけど…
429デフォルトの名無しさん:2009/01/21(水) 04:15:41
>>427
重複したら再抽選にするとまるで一様な乱数になるかのような言い回しはやめてくださいよw
430デフォルトの名無しさん:2009/01/21(水) 04:18:19
↑Yes,you can! Change!
431デフォルトの名無しさん:2009/01/21(水) 04:31:37
なんでアメリカはつり銭を要求するようになったんだ
つり銭はとっといてよと言える経済状態じゃなくなったからか
432デフォルトの名無しさん:2009/01/21(水) 05:12:42
>>429
一様ランダムあるいは一様乱数とは>>376のどこにも書かれていませんよ

情報の開示漏れさえ無ければ(実は一様でしたなど)、
偏りがあろうと何ら問題ないと言えます
433デフォルトの名無しさん:2009/01/21(水) 05:47:00
>>401
> 風邪で寝てるあいだ、頭痛な頭でなぜか配列のシャッフルするアルゴリズムのことを思い出し、
この時点で、正常な判断力を失っていると言える。それを持ち出すあんたは
そのサイトの管理人?ものすごく恥ずかしいぞ、それw
434361:2009/01/21(水) 06:45:03
>>285 の課題。
レスが多いんであんまり読まずにカキコ。
スマヌ、strcmp の動作を確認したコードが残ってしまっていた。
決して C++ や C99 と混同してたわけではない。

Linux(Debian etch) の gcc でやってるんだけど、エラーにはならなかった。C99 対応なのかな。
んで、修正&検索まで。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8698.c

削除はめんどいなあ。まあ期待せずに。
435361:2009/01/21(水) 06:47:37
あ、それと、文字列を関数にわたすだけなんで、
入力処理は適当につけてちょうだい。
scanf とか使ったことないのよ。w
436デフォルトの名無しさん:2009/01/21(水) 06:56:26
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8699.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月21日午前11時
よろしくお願いします
437デフォルトの名無しさん:2009/01/21(水) 07:07:57
>>436
良く分からんけど、こんな感じ?
#include<stdio.h>

int main()
{
  char c;
  int i=0;

  while(EOF!=(c=getc(stdin))) {
    if((0==i)&&('.'==c))
      break;
    putc(c,stdout);
    i = ('\n'==c) ? 0 : 1;
  }
  return 0;
}
438418 ◆eS7ajWvX.I :2009/01/21(水) 11:26:28
題意としては>>428さんの仰る通りです。
ソーティングは、そこまでは習ったという意味で、わかり辛くて申し訳ないです。
439デフォルトの名無しさん:2009/01/21(水) 11:33:03
以前(>>115)質問したんですけど、期限過ぎちゃったんで改めて
以前とは問題文を多少変更しています。
自力では結局分からなかったのですが(特に必須の課題でもないんでいいんですけど)
分からないままにしておくのも気分が悪くて・・・
すみません。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8675.txt
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: Visual C++2008
 [3.3] 言語: C言語
[4] 期限: 1月末ごろまで
[5] その他の制限: 特になし できるだけポインタは使わない方向だとありがたいです。


ポインタの扱いが苦手だ・・・構造体までは何とかついていけたのになぁorz
すみません、よろしくお願いいたします。
440デフォルトの名無しさん:2009/01/21(水) 12:36:04
[1] 授業単元:CによるプログラミングII
[2] 問題文(含コード&リンク):
次のプログラム(数値を入力していくと小さい順に並べてくれるプログラム)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8701.txt
について,2分木の生成後(Ctrl-Dを入力した後)に,指定した整数値がツリーの
中にあるかどうかを判定する機能を有する下記の関数を作成し,プログラムに追加せよ.
     int ExistTest(BTREE *ptr, int searchdata);
ただし,この関数は入力した整数値が存在すれば1を返し,存在しなければ0を返すものとする.
 上記の関数を含むプログラムを完成し,いくつかの例
  (1) 指定した整数値が1個または複数個存在する場合
  (2) 指定した整数値が存在しない場合
について実行することでプログラムが正しく動作することを確認せよ.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年1月22日09:30まで
[5] その他の制限:
441デフォルトの名無しさん:2009/01/21(水) 14:25:01
[1] Cプログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8702.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Study C
 [3.3] 言語: C
[4] 期限: 1月22日12:00まで
[5] その他の制限:
442デフォルトの名無しさん:2009/01/21(水) 14:29:10
>>440
int ExistTest(BTREE *ptr, int searchdata)
{
BTREE *sp = ptr;

while(sp != NULL){
if(searchdata == sp->data)
return 1;
if( searchdata < sp->data )
sp = sp->left;
else
sp = sp->right;
}
return 0;
}
443デフォルトの名無しさん:2009/01/21(水) 15:14:24
>>441
(1)
#include <stdio.h>
#include <stdlib.h>

int cmp(const void *a, const void *b) { return *((int *)a) - *((int *)b); }

int main(void)
{
int *a, n, i;
scanf("%d", &n);
if (n > 100) n = 100;
a = malloc(n * sizeof(int));
for (i = 0; i < n; ++i) scanf("%d", a + i);
qsort(a, n, sizeof(int), cmp);
for (i = 0; i < n; ++i) printf("%d ", a[i]);
printf("\n");
free(a);
return 0;
}
444デフォルトの名無しさん:2009/01/21(水) 15:27:43
>>441
C/C++の宿題を片付けます 101代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/906
445デフォルトの名無しさん:2009/01/21(水) 15:28:34
>>441
(2)
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int *a, n, i, m, c;
scanf("%d", &n); if (n > 10) n = 10;
a = malloc(sizeof(int) * n);
for (i = 0; i < n; ++i) { a[i] = rand() % 101; printf("%d ", a[i]); }
printf("\n");
scanf("%d", &m);
for (i = c = 0; i < n; ++i) { if (a[i] >= 60) ++c; }
if (m == c) printf("1\n"); else printf("0\n");
free(a);
return 0;
}
446デフォルトの名無しさん:2009/01/21(水) 17:36:06
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8704.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:2009年1月23日 13:00まで
[5] その他の制限: できるだけ簡単な関数で

よろしくお願いします
447デフォルトの名無しさん:2009/01/21(水) 17:55:21
>>446
どっかで見たことあるなー、と思ったら。

C/C++の宿題を片付けます 121代目
http://pc11.2ch.net/test/read.cgi/tech/1230678123/889
>[1] 授業単元:プログラミング演習U
>[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8628.txt
>[3] 環境
> [3.1] OS:Windows XP
> [3.2] コンパイラ名とバージョン:Microsoft Visual Studio.Net 2003
> [3.3] 言語:C++
>[4] 期限:2009年1月20日
>[5] その他の制限:特になし
>
>宜しくお願いします。
>

http://pc11.2ch.net/test/read.cgi/tech/1230678123/937
>>>889
>わりと時間があったからやってみた。あんまりテストしてないけど、たぶん大丈夫。
>http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8637.txt
>必要単位数は知らないからできなかった。
>そこくらいは自分でやってみたら?
448デフォルトの名無しさん:2009/01/21(水) 18:46:47
[1] プログラミング言語1
[2] ファイル data.dat には,カンマで区切って国語,数学, 理科のテスト結果(100点満点)がこの順に一行に一人分づつ格納されている(生徒数は100人以下).
次の基準に従って合格者を決め,合格者のみの席次を合計点でつける.
そして,最下位のものから最下位から3番のものまでをカンマで区切ってその合計点を順に出力するプログラムを作成せよ.
[判定基準]
国語が 66 点以上でかつ、数学と理科のどちらか一方でも 66 点以上なら合格.
画面には、結果以外の出力をしないこと.
合計点数が等しい者は同順とする.m番の順位の者がn人いる場合,次の順位はm+n番となる.
フローチャートを書いてからプログラムを作成すること.
ファイルは

FILE *in_file;
in_file = fopen("data.dat","r");

としてopenし,このファイルからデータを読み出す時は,

fscanf(in_file,"%d,%d,%d",&a,&b,&c);

として読み出せばよい.(a,b,cは整数型変数で,aに国語,bに数学,cに理科の点数が入る)
また,読み出しが終わったら,

fclose(in_file);

としてクローズすること.
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン: TeraPad
 [3.3] 言語:C
[4] 期限: 今月中に
[5] その他の制限: 特にありません
よろしくお願いします
449デフォルトの名無しさん:2009/01/21(水) 18:59:08
>[3.2] コンパイラ名とバージョン: TeraPad
450デフォルトの名無しさん:2009/01/21(水) 19:02:58
>>448
#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) { return *((int *)a) - *((int *)b); }

int main(void)
{
int point[100], i = 0;
int a, b, c;
FILE *in_file;
in_file = fopen("data.dat", "r");

while (fscanf(in_file, "%d,%d,%d", &a, &b, &c) != EOF) {
if ((a >= 66) && ((b >= 66) || (c >= 66))) point[i++] = a + b + c;
}
fclose(in_file);

qsort(point, i, sizeof(int), compare);
printf("%d,%d,%d\n", point[0], point[1], point[2]);
return 0;
}
451デフォルトの名無しさん:2009/01/21(水) 20:34:42
[1] 授業単元:コンピュータプログラミング
[2] 問題文:チーム数nで試合数mを指定し、各々のチーム名(漢字かカタカナかアルファベット)と勝ち数と
       引き分け数をA対B,A対C,…,B対C,B対D…の順でキーボードから入力し、勝率を計算して勝率
       の高い順に並び替えて、チーム名・全試合数・勝ち数・負け数・引き分け数・勝率を表示する
       プログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ Express Edition
 [3.3] 言語:C
[4] 期限:2009年1月22日
[5] その他の制限:構造体を使用する。試合数が3回だとするとA対Bで3回、A対Cで3回…となります。
          よろしくお願いします。
452デフォルトの名無しさん:2009/01/21(水) 21:10:25
>>434
ありがとうございます
一応奮闘しておりますが手ごたえなく・・・
申し訳ありませんがお手数でなければ教えていただけると本当助かります
453デフォルトの名無しさん:2009/01/21(水) 21:18:22
454デフォルトの名無しさん:2009/01/21(水) 21:32:09
>>453
よく読んでいなかったようです。
ありがとうございました。
455デフォルトの名無しさん:2009/01/21(水) 22:04:00
hairetu[num]++

すみません、これはどういうことでしょうか?

また、
hairetu[2] | =

これもどういう風に足しているのでしょうか? =


1たすとは配列の要素番号を1たすということでしょうか?

下の方は、配列2の要素の値のビット数+ 右辺にあるビット数を足したものを
配列2に格納するというこでしょうか?


基本的に& や | があったら、ビットの演算子であるとおもえばよろしいのでしょうか?
456デフォルトの名無しさん:2009/01/21(水) 22:12:29
>>455
原文を読んでないが、
前者は配列の中身を++
後者はhairetu[2]と右辺の論理和をhairetu[2]に代入

&や|が単体である場合はそれでいい
457デフォルトの名無しさん:2009/01/21(水) 22:13:40
>>455
死ね
458デフォルトの名無しさん:2009/01/21(水) 22:17:27
459デフォルトの名無しさん:2009/01/21(水) 22:23:07
>>455
なぜレスついてるのにマルチにした
460デフォルトの名無しさん:2009/01/21(水) 22:28:39
この広範囲爆撃っぷりは、騙りだろ
スルースルー
461357:2009/01/21(水) 22:52:05
>>453
ありがとうございました
462デフォルトの名無しさん:2009/01/21(水) 23:32:52
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8706.txt
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限:1月22日17:00まで
[5] その他の制限:ありません。

よろしくおねがいします。
463201:2009/01/22(木) 00:32:15
464201:2009/01/22(木) 00:33:49
>>462
StackPrintでiが使われていない件について。
あと、メモリの確保にミスを見つけたので修正しといた。
465デフォルトの名無しさん:2009/01/22(木) 00:54:01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下記
[3] 環境
 [3.1] OS: WindowsVistaSP1
 [3.2] コンパイラ名とバージョン: Visual C++2008
 [3.3] 言語: C言語
[4] 期限: 1月22日11時まで
[5] その他の制限: 特になし できるだけ基本的な構造で ポインタまではOK

入力された2つの文字列を比較するプログラムを作成せよ。ただし、大文字小文字の違いは無視、
単語間にスペースが複数入っていても単独のスペースと区別しない。
入力に関して
   キーボードから、1つ目の文字列を1行で入力し、改行する。次に2つ目の文字列を1行で入力し、改行する。
   このとき、入力を促す文字はいっさい表示しないこと。入力の文字列はそれぞれ128文字以下とする。
出力に関して
   一致すれば何も表示しない。不一致の場合は最初に不一致となる入力1の文字(1文字だけ+改行)を表示する。
466デフォルトの名無しさん:2009/01/22(木) 01:04:38
>>464
助かりました。ありがとうございました。
467デフォルトの名無しさん:2009/01/22(木) 01:14:45
>>465
#include<stdio.h>
#include<ctype.h>
int main() {
char str1[130], str2[130], *p1 = str1, *p2 = str2;
fgets(str1, sizeof str1, stdin);
fgets(str2, sizeof str2, stdin);
while (*p1) {
if (tolower(*p1) != tolower(*p2)) {
putchar(*p1);
break;
}
while (*p1++ == ' ');
while (*p2++ == ' ');
}
return 0;
}
468デフォルトの名無しさん:2009/01/22(木) 02:04:15
自分じゃもうお手上げ状態です・・・
>>285お願いします
469デフォルトの名無しさん:2009/01/22(木) 02:25:46
>>468
ちょw後輩じゃねえかww
鮎川ストアとか思い出した。
おおたきおたっきーとかのぐちさんとか超やさしいよ。聞いたらぽんぽん教えてくれるはずだが?
470デフォルトの名無しさん:2009/01/22(木) 02:41:28
学科が提供してるこれでも読みなさい
http://sasa.cis.ibaraki.ac.jp/member/sasaki/ProEn2/LinkedList.pdf
471デフォルトの名無しさん:2009/01/22(木) 03:57:10
高校時代の友人が、茨城大学に・・・俺は西日本だったが。
おかげで、関西弁が染み付いちまったぜ。
472361:2009/01/22(木) 05:32:20
>>452
あら、まだやってたの。
もう期限来たからタイムアップだと思ってたよ。
んじゃ削除もやってみるか。
前にも言ったけど、入力処理は友達に聞くなりして自分で作ってね。
473デフォルトの名無しさん:2009/01/22(木) 08:08:38
>>470
お前、二分木知ってる?ww
474デフォルトの名無しさん:2009/01/22(木) 08:25:10
基本は単方向だから別に間違っちゃいないだろ。
475デフォルトの名無しさん:2009/01/22(木) 10:06:55
>>472
最悪今日の12時までに提出でたぶん大丈夫かもという状態です・・・
よろしくお願いします
476446:2009/01/22(木) 12:45:03
>>447
ありがとうございます
しかし下のようにエラーが出るのですが……

(57): error C2664: 'sprintf' : 2 番目の引数を 'size_t' から 'const char *' に変換できません。
(257): warning C4018: '<' : signed と unsigned の数値を比較しようとしました。
(484): error C2440: '初期化中' : 'const void *' から 'const KAMOKU *' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
(484): error C2440: '初期化中' : 'const void *' から 'const KAMOKU *' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
(490): error C2440: '初期化中' : 'const void *' から 'const KAMOKU *' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
(490): error C2440: '初期化中' : 'const void *' から 'const KAMOKU *' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
(496): error C2440: '初期化中' : 'const void *' から 'const KAMOKU *' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
(496): error C2440: '初期化中' : 'const void *' から 'const KAMOKU *' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。

できれば訂正していただけるとありがたいです
あと、もう少し短く、簡単にならないでしょうか?
477デフォルトの名無しさん:2009/01/22(木) 12:47:37
const KAMOKU *x = (const KAMOKU *)a, *y = (const KAMOKU *)b;

とか、機械的にやればいいよ
478デフォルトの名無しさん:2009/01/22(木) 12:48:38
57はsnprintfなのに、エラーはsprintfなんだな。
479デフォルトの名無しさん:2009/01/22(木) 13:07:27
どなたか>>412よろしくお願いします
480361:2009/01/22(木) 13:15:59
>>475
スマヌ、朝っぱらから打ち合わせは入るわ新しい仕事がくるわで
できんかった(もうしばらくヒマだと思ったのになあ)。
期限延びたならまた言ってくれ。
481デフォルトの名無しさん:2009/01/22(木) 13:37:38
482446:2009/01/22(木) 13:44:43
>>478
すいません少し書き直したときに間違えたようです
正しくは
(57): error C3861: 'snprintf': 識別子は、引数依存の照合を使用しても見つかりません。
です
483デフォルトの名無しさん:2009/01/22(木) 13:50:18
snprintfがあるかどうかは環境によるから、sprintfで代用すればいいと思う。
長さ指定を外せばいいんじゃないかな。
484デフォルトの名無しさん:2009/01/22(木) 14:00:16
[1]C
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8695.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8696.txt
[3]LINUX
C
[4]今日の24時までにお願いします
[5]よろしくお願いします。
485デフォルトの名無しさん:2009/01/22(木) 14:19:30
capacity = N * (RAND_MAX/6);
とかナップザック問題生成部分で狂ってるんだけど適当に直していい?
486デフォルトの名無しさん:2009/01/22(木) 14:44:33
[1] 授業単元: C
[2] 問題文(含コード&リンク): 複数の式が書かれたtxtから式を読み出し全ての式を計算し別txtに出力せよ。
例:siki.txt:10+2*3 → kotae.txt 16
      :(2+3)+(1つめの式の答え)/3 → 7
[3] 環境
 [3.2] コンパイラ名とバージョン: LSIC
 [3.3] 言語:C
[4] 期限: 25日まで

ひとつの式をstackさせることはできるのですが複数の式を同時というのが・・・
487デフォルトの名無しさん:2009/01/22(木) 15:22:50

プログラムからテキストファイルdate.txt(メモ帳)の数値データ10個(7.8 3.2 4.
0 5.8 6.9 1.5 2.8 6.1 3.8 0.7)を読み込む
最大値、最小値、平均値を求め、ディスプレイおよび、ファイルout.txtに出力
小数点以下2桁まで表示すること


1つの整数を引数とし、引数が素数であれば1、そうでなければ0を返り値とす
るサブルーチンをつくる
これを用いて自然数n以下の素数のうち最大のものを表示するプログラムをつく
る。


この2つをといてください。。。
まったくわかりません
Visual C++ 2008 Express Editionです
488デフォルトの名無しさん:2009/01/22(木) 15:27:29
489デフォルトの名無しさん:2009/01/22(木) 15:29:32
>>489
すみません、ありがとうございます。
実行するとファイルの中身の表示で中断してしまいます。
(ソート後の出力に移る前にエラーorz)
ビルドは特に問題なく通るんですが。
490デフォルトの名無しさん:2009/01/22(木) 16:25:03
>>489
誰に言ってるの?
491デフォルトの名無しさん:2009/01/22(木) 16:30:00
492デフォルトの名無しさん:2009/01/22(木) 16:31:20
>>486
エスパーが来ないと無理っぽいな
493デフォルトの名無しさん:2009/01/22(木) 16:33:33
テキストファイルの式を逆ポーランド記法で計算してその結果を別のテキストに出力しろってことじゃないの?
494デフォルトの名無しさん:2009/01/22(木) 16:36:01
そうです。伝わりにくくてすみません。
495デフォルトの名無しさん:2009/01/22(木) 16:49:30
例の二行目がよくわからないですぅ
496デフォルトの名無しさん:2009/01/22(木) 16:52:37
逆ポーランド記法への変換をしてるってことか
例2は((2+3)+(1つめの式の答え))/3 → 7じゃないかと思うんだが
nつめの式の答え、というテンプレに従うの?
497デフォルトの名無しさん:2009/01/22(木) 16:52:57
式のtxtに(2+3)+(1つめの式の答え)/3 → 答えのtxtに7と出力
498デフォルトの名無しさん:2009/01/22(木) 16:55:05
「nつ目の答え」という数字が好きなときに使えるようにしないといけないみたいです。
499デフォルトの名無しさん:2009/01/22(木) 16:56:48
すみません中置記法でした・・・
500デフォルトの名無しさん:2009/01/22(木) 18:01:07
[1] プログラミング言語1
[2] 次の関数を作成せよ.

int judgment(int x, int y)


[関数の意味] 入力パラメータであるx,yを組み合わせた平面上の点(x,y)を考え,この点が
y = -1 * ( x + (-2) ) * ( x + (-2) ) + 10
y = 5
の2つの線に囲まれた領域内(線上は除く)に含まれるなら戻り値は1,含まれないなら戻り値は0.
この関数の正しさを調べるために,xとyをそれぞれ0から10まで1きざみで変え、そのすべてを組み合わせた平面上の11x11個の点(x,y)のうちで、
上記の領域に含まれる点の数を出力するmainプログラムとプロトタイプ宣言を下記のように与える.
[SUBMIT]された関数は,このプログラムの後ろに追加されて評価される.
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン: TeraPad
 [3.3] 言語:C
[4] 期限: 今月中に
[5] その他の制限:はじめに
#include <stdio.h>
int judgment(int x, int y);
int main(void)
{
int x,y,count;
count=0;
for(x=0; x<=10; x++)
for(y=0; y<=10; y++)
if(judgment(x,y)==1) count++;
printf("%d\n",count);
}
というのが与えられています。
よろしくお願いします
501デフォルトの名無しさん:2009/01/22(木) 18:03:55
>>486
入力ファイルの完全な仕様をだせ
不定あるいは実装の都合で変更可能な箇所があればそれも

とりあえず、現時点で判明してるのは

1. 1行に1つの式
2. 式は中置記法で、四則演算括弧に対応
3. 式の中で別の行の解を参照可能
  (「nつ目の答え」という表記でn行目の解を参照)

疑問点は

4. 数値は整数のみか?
5. トークンの区切り(空白など)の省略の可否は?
  (区切りなしでも可だと分割が面倒)
6. 解の参照は前方のみでおk?
  (自己参照や循環参照のチェックは面倒)
502デフォルトの名無しさん:2009/01/22(木) 18:21:10
>>500
試してないけど

int judgment(int x, int y)
{
int y1, y2;
y1 = -1 * ( x + (-2) ) * ( x + (-2) ) + 10;
y2 = 5;
return y < y1 && y > y2;
}
503デフォルトの名無しさん:2009/01/22(木) 18:22:26
[1] 授業単元: プログラミング基礎実習
[2] 問題文(含コード&リンク):

(1)ファイル名をソート(辞書順に並べ替え)して表示できるようにする。
ただし,問題は
@プログラムを作る時点で,一つ一つのファイル名の長さがわからない,
Aプログラムを作る時点で,存在するファイルの個数がわからない,
ことだ。下記の小問の順番でプログラム作成しなさい。

一旦すべてのファイルの名前を読み込んで文字列の配列に格納してから,それをソートして表示するプログラムを作成することにします。
指定されたディレクトリに存在するファイルの個数を 128 未満と仮定してプログラムを作成してください。
ディレクトリに 128個以上のファイルが存在した場合には,その旨表示し,正しくエラー処理するようにすること。
次の順に,プログラムを作成してください。

(1-1) readdir で取り出した情報は,次回の readdir の呼び出しで上書きされてしま います。それでは困るので, 得られたファイル名を my_strncpy を使って, 皆さんのプログラムで用意した文字列の配列にコピーしてください。
この際に必要になる領域は malloc を使って必要な分だけ確保すること。

(1-2) 1-1 で取得し終えたファイル名の配列を辞書式順序に並べ替えしなさい。

(1-3) 並べ替えした文字列配列を順に表示しなさい。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:cc
 [3.3] 言語: C
[4] 期限:あさって

↓続く
504デフォルトの名無しさん:2009/01/22(木) 18:24:18
↓続き

[5] その他の制限:
・文字列の長さを数える関数 int strlen(char *s);

・文字列の大小比較(辞書式順序での順番比較)を行なう関数 int strcmp(char *s1, char *s2);
(return value は s1 < s2 なら -1, s1 = s2 なら 0, s1 > s2 なら 1)

・文字列をコピーする関数 char *strncpy(char *s1, char *s2, int n);
(s2 の文字列を s1 へ,最大で n 文字未満コピーし、return value はs1)
は作成済みで、以下を参考にして作成する。

#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
DIR *dir; /* ディレクトリ情報を示すためのポインタ */
struct dirent *entry; /* 各エントリの情報を示すための構造体ポインタ */
char *dirname = "."; /* ディレクトリが指定されなかった場合のデフォルト */

↓続き
505デフォルトの名無しさん:2009/01/22(木) 18:24:51
if (argc > 1)
dirname = argv[1];
if ((dir = opendir(dirname)) == NULL) { /* ディレクトリをオープン */
perror(argv[0]);
return -1;
}

while ((entry = readdir(dir)) != NULL) { /* ファイルの情報を取り出す */
printf("%s ", entry->d_name); /* ファイル名を表示 */
}
putchar('\n');

closedir(dir); /* ディレクトリをクローズ */

return 0;
}

さっぱりわかりません・・・
506デフォルトの名無しさん:2009/01/22(木) 18:30:29
>>489
>>488の安価ミスです。すみません・・・
何してんだ私・・・
507デフォルトの名無しさん:2009/01/22(木) 19:41:58
>>503
ファイル名って長さの上限あるんだっけ?
508デフォルトの名無しさん:2009/01/22(木) 19:55:54
>>506
そういう場合はエラーでましただけじゃなくて、どんなエラーだったかも書くんだ
つっても、うpした人なんか消しちゃったみたいだからどうにもならないだろうけど
509デフォルトの名無しさん:2009/01/22(木) 20:02:49
>>503
ピキーーンッ・・・麻呂のクソースの予感
510デフォルトの名無しさん:2009/01/22(木) 20:09:53
>>361
いえいえ、お忙しいのなら仕方ないです。
っていうか本当に期限一週間延びました
ただ条件に>>285の応用課題をひとつやることと言われまして・・・
もしお暇があれば教えてください
詳しい期限は1月29日13時です
511デフォルトの名無しさん:2009/01/22(木) 20:26:22
>>507聞いてないんでないと思います・・
512デフォルトの名無しさん:2009/01/22(木) 21:03:58
>>510
ファイルを1行ずつ読み込みながら探すのではなく、
一度メモリに読み込んでから(一度二分木に読み込んでから)、検索をすれば良いのね?
513デフォルトの名無しさん:2009/01/22(木) 21:28:06
>>503
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int my_strlen(char *s){
int i = 0;
while (*(s++)) i++; return i;}
int my_strcmp(char *s1, char *s2){
for (;*s1 || *s2; s1++, s2++) {
if (*s1 != *s2) {
return *s1 - *s2; } } return 0;}
int cmp(const void *a, const void *b){ return my_strcmp(*(char **)a, *(char **)b);}
char *my_strncpy(char *s1, char *s2, int n){
int i; char *p = s1;
for (i = 0; i < n && (*(s1++) = *(s2++)); i++); return p;}
int main( int argc, char *argv[] ){
char *dir; DIR *dp; struct dirent *entry; char *s[127]; int i, j;
if (argc < 2) { dir = getenv("PWD"); /* カレントデイレクトリのパスを取得 */
} else { dir = argv[1]; }
if (( dp = opendir(dir) ) == NULL ) { /* デイレクトリを開く */
perror("opendir"); /* システムエラーメッセージを出力する */
exit( EXIT_FAILURE ); }
for (i = 0; (entry = readdir(dp)) != NULL && i < 127; ++i) {
s[i] = malloc(my_strlen(entry->d_name) + 1);
my_strncpy(s[i], entry->d_name, my_strlen(entry->d_name) + 1); }
if (entry) {
fprintf(stderr, "128個以上あるよ。ファイルが\n");
exit( EXIT_FAILURE ); }
closedir(dp);
qsort(s, i, sizeof(char *), cmp);
for (j = 0; j < i; ++j) { printf("%s\n", s[j]); free(s[j]); }
return 0;}
514デフォルトの名無しさん:2009/01/22(木) 21:30:58
>>503
気になる点が二つあった
1.辞書順にしろとあるがstrcmpは辞書順じゃないからどっちに沿えばいいんだよ
2.strncpyの解説が間違ってるんだけど問題文の仕様にあわせるのか、標準ライブラリにあわせたほうが良いのか

strcmp仕様にして、標準ライブラリ風にしておいた・・・・・・と思う
515デフォルトの名無しさん:2009/01/22(木) 21:39:54
>>507
>>511
環境がLinuxとしか書いてないけど、とりあえずext3は255文字
516デフォルトの名無しさん:2009/01/22(木) 21:41:47
>>510
だからのぐちさんに質問しなって。笑顔で話しやすいでしょ?
517デフォルトの名無しさん:2009/01/22(木) 21:49:01
>>516
その間ネトゲできねーじゃん
ネトゲの合間にここに書き込んでおけば
勝手にできあがるスレでしょ
518デフォルトの名無しさん:2009/01/22(木) 21:53:47
>>513 (・∀・) (・∀・) (・∀・) (・∀・) (・∀・) (・∀・) 
519デフォルトの名無しさん:2009/01/22(木) 21:54:04
じゃあ、出来上がったソースを
http://sasa.cis.ibaraki.ac.jp/member/sasaki/ProEn2/Board/wwwlng3.cgi?print+200812/08120002.txt
にアップロードしておけばよい?
520デフォルトの名無しさん:2009/01/22(木) 21:55:22
PAD図とかどうやって書くの?
521デフォルトの名無しさん:2009/01/22(木) 22:35:26
>>503
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8711.c
ディレクトリは無視した、今は反省している
522デフォルトの名無しさん:2009/01/22(木) 22:40:34
>>510
発展3をやったつもり
523デフォルトの名無しさん:2009/01/22(木) 22:51:10
>>503
8711
524デフォルトの名無しさん:2009/01/22(木) 22:51:59
525デフォルトの名無しさん:2009/01/22(木) 23:25:36
1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
a X^2 + b X + c =0 の2次方程式の解を求めるプログラムを作成しなさい.
キーボードから a,b,cの値を入力し(マイナスでも可能なように) 結果を表示.
1) 2つの実数解を持つとき  
2) 重解を持つとき
3) 虚数解を持つとき (実数部と虚数部に分けて表示でも可 ルートが残る場合はルートの中身を表記しても可)
表記は各自でわかりやすいように工夫すること
全てのパターンを例として示しなさい.
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限: 2009年2月4日 13:00まで
[5] その他の制限: 特になし
よろしくお願いします。

526デフォルトの名無しさん:2009/01/22(木) 23:26:57
大至急聞きたいんだが プログラムで点数ごとに積み上げグラフを作るプログラムを
作りたいんだがうまくいかなし期限波明日。。


作りたいプログラム

テストを5回実施して 5回分の点数を配列に入れる
ten[5]={64,53,36,23,36}←これはあらかじめ格納されてるとする。

んで縦100点までで、テスト点を100点で5回ぶん割る
d=100;
割って1がたつなら ”*”を出力。それ以外は” ”を出力する。

終わったら 
d=d-10;
でどんどん引いていいって最終的に↓見たいに出力するようにしたいんだ。


  100点 * ** 
  90点 * ***
  80点 *****
  70点 *****
  60点 *****
 ・   ・
   ・   ・
   ・   ・
   ・   ・
          

別に子のやり方じゃなくても積み上げ式のがつくれっればいいんだ!力を貸してくれ!       
527デフォルトの名無しさん:2009/01/22(木) 23:34:32
[1] 授業単元:
[2] 問題文:ボタンを押すとラベルが右に少しずつ(+7ずつ)移動するプログラムを書け。
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン: WindowsVisual C#
 [3.3] 言語: C
[4] 期限: 2009年1月23日中
[5] その他の制限:
LocationのY座標をtop、
Y座標はleftとする
みたいなことをヒントでもらいましたがさっぱり・・・
お願いします
528デフォルトの名無しさん:2009/01/22(木) 23:34:44
>>526
大至急答える。スレチだ
529デフォルトの名無しさん:2009/01/22(木) 23:36:01
>>527
スレちがい誘導

C#,C#の宿題片付けます。
http://pc11.2ch.net/test/read.cgi/tech/1197620454/
530デフォルトの名無しさん:2009/01/22(木) 23:49:21
>>526
大至急答える。マルチだ
531527:2009/01/22(木) 23:53:15
誘導ありがと
532デフォルトの名無しさん:2009/01/23(金) 00:52:08
[1] 授業単元:情報処理技法
[2] 問題文:何らかの実用的なプログラミングを作り、それについて考察する。
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:プログラミング言語は自由
[4] 期限:2009年1月25日午前8時
[5] その他の制限:・プログラミング言語は自由
         ・本などの丸写し不可、参考は可
         ・コメントつきプログラムソース添付必要
         自分なりにまとめて独自性のある問題設定、開放、考察をする。


丸投げですいません。初心者なのでまったく思いつきません。

533デフォルトの名無しさん:2009/01/23(金) 00:56:46
言語自由てなんだんだよwwwww
C++/CLIでもいいのか?w
534デフォルトの名無しさん:2009/01/23(金) 00:59:33
>>532
いくらなんでも丸投げし過ぎだろw
こんな課題が出る段階ってことは本来なら初心者レベルどころか授業の終了段階だろ
535デフォルトの名無しさん:2009/01/23(金) 01:00:02
>>533
落ち着けよw
536デフォルトの名無しさん:2009/01/23(金) 01:02:49
どなたか>>340お願いします。
537デフォルトの名無しさん:2009/01/23(金) 01:09:51
C++でお願いします。

538デフォルトの名無しさん:2009/01/23(金) 01:32:13
539デフォルトの名無しさん:2009/01/23(金) 01:53:55
期限は明日の正午です。
540デフォルトの名無しさん:2009/01/23(金) 01:55:16
if-else文、for文、while文、1次元配列
これら全てを使用したプログラムを考えていただけませんか?
フィボナッチ数列や階乗を求めるプログラム等が作れるらしいのですが…お願いします。
541デフォルトの名無しさん:2009/01/23(金) 02:24:58
このスレは世界のアツナベが乗っ取った!
これからは、3の倍数か3のつくレス番号にレスした人は
アホになるではなく、アホ決定
542デフォルトの名無しさん:2009/01/23(金) 02:39:15
アホになったらその人はアホだよね。でもそうじゃなく、アホ決定とはどういう意味?
543デフォルトの名無しさん:2009/01/23(金) 02:44:05
>>512
たぶんそれでいいと思います。

>>516
すみません、のぐちさんがどの方かまだ把握してないもので・・・
それと今学期はもう会える機会がないので

>>522
ありがとうございます
えーと、プログラムはどこにあるのでしょうか
すみません
544デフォルトの名無しさん:2009/01/23(金) 02:48:22
>>543
PDFに佐々木稔, 野口宏ってかいてるからその野口さんなんじゃないの?よく知らないけど。
それはさておき>>522にとても失礼なこと言ってると思わないか?
545デフォルトの名無しさん:2009/01/23(金) 02:56:11
>>485
遅れてすいません
変えてくれて大丈夫です。


>>488
ありがとうございます。
しかし
サーバーにない
とかで見れないんですが
546デフォルトの名無しさん:2009/01/23(金) 02:57:50
>>489って誰だ?
547デフォルトの名無しさん:2009/01/23(金) 03:02:19
>>540
#include〈stdio.h〉
int main(void)
{
int i,n,a[1000];
scanf("初期値a=%d",a[0]);
while(a==0){
printf("いや0をいくら階乗しても(ry");
return 0;
}else{
scanf("指数n=%d",&n);
if(n〈=0){
for(i=1;i〈=n;i++){
a[i] = a[iー1] / a[0];
}else if(n〉=0){
for(i=1;i〈=n;i++){
a[i] = a[iー1] * a[0];
}
}
}
printf("求める階乗の値=%d",a[n]);
return 0;
}

誰か間違いを発見したら直してくれないか?
548デフォルトの名無しさん:2009/01/23(金) 03:05:13
>>542
アホなレスをするとかではなく、その番号でレスをした人は、アホ決定ってことで
549デフォルトの名無しさん:2009/01/23(金) 03:05:45
>>540
もうひとつ

/*自然数の和*/
#include〈stdio.h〉
int main(void)
{
int i,n,a[100];
scanf("初期値a=%d",a[0]);
while(a[0]〈=0){
printf("error!");
return 0;
}else{
scanf("上限値n=%d",&n);
if(n〈=0){
printf("error!");
return 0;
}else if(n〉=0){
for(i=1;i〈=n;i++){
a[i] = a[iー1] + 1;
}
}
}

printf("求める自然数の和=%d",a[n]);
return 0;
}

間違いを見つけた人は直してくれ
550デフォルトの名無しさん:2009/01/23(金) 03:06:48
>>547
これはwww
s/〈/</g
s/〉/>/g
s/while/if/
s/",/\n",/
s/}else if/}}else if/
ほかにもありそうな
551デフォルトの名無しさん:2009/01/23(金) 03:27:04
なんだこれ
OCRでも掛けたのか

>[iー1]
552デフォルトの名無しさん:2009/01/23(金) 03:32:08
while-elseは新しいなw
553デフォルトの名無しさん:2009/01/23(金) 03:32:31
間違い探しゲームだと思う
554デフォルトの名無しさん:2009/01/23(金) 05:44:36
>>548
クズのような規約を決めてるのはお前か!
まったく人の邪魔をすることしかしない奴だ
ー体何考えてんだかな
555デフォルトの名無しさん:2009/01/23(金) 05:52:34
一体 ー体
似ているようで違うw
556522:2009/01/23(金) 07:22:34
>>543
すみません。
普通にURL貼り忘れてた。
>>1のうpロダのどっかにあるから探してw
557デフォルトの名無しさん:2009/01/23(金) 11:33:15
すみません、

#include〈stdio.h〉
int main(void)
{
int i,n,a[100];
scanf("初期値a=%d",a[0]);
while(a[0]〈=0){
printf("error!");
return 0;
}else{
scanf("上限値n=%d",&n);
if(n〈=0){
printf("error!");
return 0;
}else if(n〉=0){
for(i=1;i〈=n;i++){
a[i] = a[iー1] + 1;
}
}
}
printf("求める自然数の和=%d",a[n]);
return 0;
}

このプログラムを書き換えて、1から10までの和を求めるプログラムを
作れませんか?
putを使って出力したいのですが・・・
558デフォルトの名無しさん:2009/01/23(金) 11:36:02
>>557
死ね
559デフォルトの名無しさん:2009/01/23(金) 11:37:22
#include<stdio.h>
int main(void)
{
puts("55");
return 0;
}
560デフォルトの名無しさん:2009/01/23(金) 11:52:01
誰か頼むからGMRES法のプログラムをはってくれないか?

組む時間がなくて探しているんだがなかなかおちてないんだ。。。

暇な奴いたら頼む。。。
561デフォルトの名無しさん:2009/01/23(金) 11:57:49
忙しくてもテンプレくらい守ろうぜ
562デフォルトの名無しさん:2009/01/23(金) 12:02:53
[1] 授業単元:線形システムの解法
[2] 問題文(含コード&リンク):gmres法で線形システムを解いて時間、誤差の考察を
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限:申し訳ないが今日中なんだ
[5] その他の制限:特に無し

すまん完全に見落としていた!
こんな感じですかね?
563デフォルトの名無しさん:2009/01/23(金) 12:06:07
>>557
#include <stdio.h>
int main(void)
{
int start, end;
printf("初期値=");
scanf("%d", &start);
printf("上限値=");
scanf("%d", &end);
printf("求める自然数の和=%d\n", (start + end) * (end - start + 1) / 2);
return 0;
}
564デフォルトの名無しさん:2009/01/23(金) 12:07:30
>>562
http://ums.futene.net/wiki/SOL/474D526573.html
これでだめだったら、どうだめかを説明汁
565デフォルトの名無しさん:2009/01/23(金) 12:16:22
>>563

すまん!ありがとう!
いろいろ試してみる!!
566デフォルトの名無しさん:2009/01/23(金) 12:40:12
>>563

すまないコンパイルで無数のエラーが。
私はc++は未経験でしていじろうにもどこをどうすればいいのか分からなかったです。
C言語のプログラムをお願いできないでしょうか?
申し訳ありません。
567デフォルトの名無しさん:2009/01/23(金) 12:43:08
おまえはいったい何をいってるんだ
568デフォルトの名無しさん:2009/01/23(金) 12:50:43
>>563じゃなかった
>>564の間違いだ

すまんかった
569デフォルトの名無しさん:2009/01/23(金) 13:23:08
[1] 授業単元:プログラミング演習
[2] 問題文: http://77c.org/p.php?f=nk5775.jpg&c=62ed
このファイルの演習問題5.4です。
a=6
b=7
c=0
d=3
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語。
[4] 期限:なんとか今日中でお願いします。
[5] その他の制限:特にありません。

この問題だけなにから手をつけていいかわかりません...どうかよろしくお願いします
570デフォルトの名無しさん:2009/01/23(金) 14:05:53
571570:2009/01/23(金) 14:09:33
A[1][2]の値 間違えた。
10じゃなくて-10に直してからやってみてくれ。
572デフォルトの名無しさん:2009/01/23(金) 14:37:09
性懲りもなく >>285 の課題、final(たぶん)。

>>510
やっと削除処理の実装完了。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8716.c

ポインタのポインタのポインタとか正気の沙汰じゃねえな。w
ほかにも fclose してなかったりといった不具合を修正。ww
冒頭の
/* #define __DEBUG__ */
のコメントアウトをはずせば色々デバッグメッセージが表示される。
DeleteNode 関数は、一応削除したノードへのポインタを返すけど、
free した後なんであんまり意味なかったりして。はは…。

応用課題(発展課題?)は興味ないのでパス。
…と思ったら、発展課題4 がすでに該当。もともと再帰で作ってある。

あと、ポインタに0(整数)を代入するなとか何とかぬかすバカタレには
ttp://www.kouno.jp/home/c_faq/c5.html
を百億万回読ませろ。
573sage:2009/01/23(金) 16:12:36
>>570
短時間でのレスありがとうございます!無事提出に間に合いました。
初めての書き込みで緊張気味だったのですが、本当にありがとうございました。
574デフォルトの名無しさん:2009/01/23(金) 17:17:39
[1]プログラミング1
[2]学生のテスト結果(0以上100以下の整数値)が入っているint型配列を渡され、合格者のリストを表示する関数 void gokaku(int idata[],int gokakuten)を作りなさい。
※int idata[]:点数の入っている配列
データの最後を識別するために、最終データの次の配列要素には、「-1」が入っているものとする。
※int gokakuten:この値以上のものを合格者として表示する
※動作確認の為、main関数として、キーボードから合格点・学生の結果を1つずつ読み込み、-1を読み込んだのち関数gokakuを呼び出し、下記のようにディスプレイに表示するプログラムを作成すること。
※読み込む学生のテスト結果は最大でも10個までとしてmain関数を作ること。

――――ディスプレイ――――
合格点を入力してください。


学生の成績を入力してください。







合格者リスト
1番:△
2番:☆
3番:○
――――――――――――
[3-1]XP[3-2]visual studio[3-3]C言語
[4]2009/01/26
[5]ポインターはまだ習っていないので、使用しない形で回答して頂ける方がいればおねがいします!!
575デフォルトの名無しさん:2009/01/23(金) 17:35:08
>>574
10個入力するか、-1が入力された時点で読み込みを終える。

#include <stdio.h>
void gokaku(int idata[], int gokakuten);
int main(void)
{
int i, gokakuten, idata[11];
puts("合格点を入力してください。");
scanf("%d", &gokakuten);
puts("学生の成績を入力してください。");
for (i = 0; i < 10; i++) {
scanf("%d", idata+i);
if (idata[i] == -1) {
break;
}
}
idata[i] = -1;
gokaku(idata, gokakuten);
return 0;
}
void gokaku(int idata[], int gokakuten)
{
int i, j = 1;
puts("合格者リスト");
for (i = 0; idata[i] != -1; i++) {
if (idata[i] >= gokakuten) {
printf("%d番: %d\n", j, idata[i]);
j++;
}
}
}
576デフォルトの名無しさん:2009/01/23(金) 17:35:44
配列を渡され、合格者のリストを表示する関数
ポインターはまだ習っていないので、使用しない形で

うううーん
577デフォルトの名無しさん:2009/01/23(金) 19:58:44
[1] 情報処理
[2] 整数型の配列dとデータの個数nを因数として受け取り、
配列dのd[0]からd[n-1]までの内容を逆順に入れ替える関数
void reverse(int d[],int n)をつくれ
[3] 環境
 [3.1] OS:XP
 [3.2]
 [3.3] 言語:C
[4] 期限: 2009/1/30
578デフォルトの名無しさん:2009/01/23(金) 20:08:25
>>577
#include <stdio.h>
#define N 10

void reverse_array(int d[], int n)
{
  int t, i;
  for(i = 0; i < n/2; i++){
    t = d[i];
    d[i] = d[n - i - 1];
    d[n - i - 1] = t;
  }
}

int main(void)
{
  int i, d[N];
  for(i = 0; i < N; i++){
    scanf("%d", &d[i]);
  }
  for(i = 0; i < N; i++){
    printf("%d ", d[i]);
  }
  printf("\n");
  reverse_array(d, N);
  for(i = 0; i < N; i++){
    printf("%d ", d[i]);
  }
  printf("\n");
  return 0;
}
579H.K:2009/01/23(金) 20:41:25
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
明治(mであらわす)、大正(t)、昭和(s)、平成(h)の範囲において、年号と年を入力すると実行例のように西暦年に換算して出力するプログラムを作成せよ。
プログラムはm t s h以外の文字が入力されると終了するものとする。
実行例
年号と年:m 20
西暦1887年です。

年号と年:s 28
西暦1953年です。

年号と年:z 1
プログラム終了

[3] 環境
 [3.1] Windows xp
 [3.2] vc6.0
[4] 期限: はやめでおねがいします
580H.K:2009/01/23(金) 20:42:43
[5]
#include<stdio.h>
main()
{
int x,ans;
char y;
printf("年号と年:");
scanf("%c%d",&y,&x); /*文字型*/
while(y=='m'||y=='t'||y=='s'||y=='h')
{
if(y=='m')
ans=1868+x-1;
else if(y=='t')
ans=1912+x-1;
else if(y=='s')
ans=1926+x-1;
else if(y=='h')
ans=1989+x-1;
printf("%d\n\n",ans);
printf("年号と年:");
scanf("%c%d",&y,&x);
}
printf("プログラムを終了します。");
}
までできているのですが、2回目にならず終了してしまうため直してください
581デフォルトの名無しさん:2009/01/23(金) 21:09:26
>>579
#include <stdio.h>

int main(void)
{
  int x, z, ans;
  char y;
  while(1){
    printf("年号と年:");
    scanf("%c%*c", &y);
    scanf("%d%*c", &x);
    z = 0;
    switch(y){
    m': ans = 1868 + x - 1; break;
    case 't': ans = 1912 + x - 1; break;
    case 's': ans = 1926 + x - 1; break;
    case 'h': ans = 1989 + x - 1; break;
    default : z = 1;
    }
    if(z){
      break;
    }
    printf("西暦%d年です。\n", ans);
  }
  printf("プログラム終了\n");
  return 0;
}
582デフォルトの名無しさん:2009/01/23(金) 21:12:29
ちょwwwif文wwwwwwwwwww
583デフォルトの名無しさん:2009/01/23(金) 21:19:22
whileの条件文にzとか・・・
584デフォルトの名無しさん:2009/01/23(金) 21:34:15
cはラベル付きbreakは無いんだっけ?
585デフォルトの名無しさん:2009/01/23(金) 21:34:58
ないっす
gotoになる(下にgotoはありだが)
586デフォルトの名無しさん:2009/01/23(金) 22:23:46
>>582-583
なんだなんだ?
587デフォルトの名無しさん:2009/01/23(金) 23:53:54
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):ループをEnterの入力によって終了させる。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC2005
 [3.3] 言語:C
[4] 期限:一応今月中

do{

処理

}while() ←ここの条件をエンターを入力した場合終了するという条件にしたい。
588デフォルトの名無しさん:2009/01/24(土) 00:03:33
>>587

#include <stdio.h>
#include <conio.h>

int main(void)
{
do{
}while(getch() != 13);

return 0;
}
589デフォルトの名無しさん:2009/01/24(土) 00:27:38
>>586
頭おかしいやつだから、触っちゃ駄目
590デフォルトの名無しさん:2009/01/24(土) 00:29:57
でも、そいつは関係ないけど
そこまでしてgoto避けんでもよかろうにとちょっと思わないでもない
591デフォルトの名無しさん:2009/01/24(土) 00:49:12
>>589 = 頭おかしいやつ
最近、自己紹介する傍若無人な人が増えたね。
自分がおかしいと思ったんであって、他人をおかしいと言えば
言った自分がそいつからおかしいって言い返されるのは当然だろ?
独りよがりな我侭な引きこもりが多いだろ、ここって。

592デフォルトの名無しさん:2009/01/24(土) 00:51:47
>>580は do whileを使っては駄目なのか?
593デフォルトの名無しさん:2009/01/24(土) 01:00:27
>>591
594デフォルトの名無しさん:2009/01/24(土) 02:09:42
2つの度分秒で表された角度の差を求めるプログラムってどうやって作るんですか?
595デフォルトの名無しさん:2009/01/24(土) 02:31:19
>>592
具体例をどうぞ
596デフォルトの名無しさん:2009/01/24(土) 02:32:03
>>594
一旦秒に変換するのが定番じゃないでしょうか
597デフォルトの名無しさん:2009/01/24(土) 03:07:40
>>595
具体例も何も、そのまんまだが?というか、whileとdo whileの違いが分からない素人?
こんなの、10年前に受けた大学の講義でもさらっと話に出たくらいなんだが。
598デフォルトの名無しさん:2009/01/24(土) 03:15:07
>>597
じゃあdo〜whileにすることで目下のところ話題となっている点を改善してみせてくれよ
599デフォルトの名無しさん:2009/01/24(土) 05:19:52
scanf()で%d読み込んだときに\nが残るのが問題であって、do〜whileは無関係だよな
的外れの寝言ほざいておいて他人を素人呼ばわりとか、腹いてえw
600デフォルトの名無しさん:2009/01/24(土) 07:44:00
rewind(stdin);
601デフォルトの名無しさん:2009/01/24(土) 10:13:20
それはない
602デフォルトの名無しさん:2009/01/24(土) 10:30:26
#include<stdio.h>
int main(void){

int no,nu,na;
int tw;
double num;

printf("1回目の得点は?\n");
scanf("%d",&no);
printf("2回目の得点は?\n");
scanf("%d",&nu);
printf("3回目の得点は?\n");
scanf("%d",&na);

tw=no+nu+na;
num=(double)tw/3;
printf("合計点:%d点\n",tw);
printf("平気点:%5.1lf点\n",num);
return(0);
}

小数出るけどどんな計算しても .0 になっちゃう。。。
何がいけないのかな、、、
603デフォルトの名無しさん:2009/01/24(土) 10:54:05
>>602
>scanf("%d",ν);
吹いたwww
あとスレチ
604デフォルトの名無しさん:2009/01/24(土) 11:07:28
すいませでした
別のスレに移動します
605デフォルトの名無しさん:2009/01/24(土) 11:37:08
ν
&nu;
なるほど
606デフォルトの名無しさん:2009/01/24(土) 17:54:51
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8717.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C言語
[4] 期限:1月26日まで
[5] その他の制限:特にありません。

よろしくお願いします。

607デフォルトの名無しさん:2009/01/24(土) 18:05:15
608デフォルトの名無しさん:2009/01/24(土) 18:49:33
>>606
265252859812191058636308480000000
609デフォルトの名無しさん:2009/01/24(土) 19:35:29
>>606
#include <stdio.h>

int main(void)
{
int i, j, digit = 1, fac[10]={1}, temp[10];

for(i=2; i<=30; i++) {
for(j=0; j<10; j++) temp[j] = 0;
for(j=0; j<digit; j++) {
temp[j] += fac[j] * i;
if(temp[j] >= 10000) {
if(j==digit-1) digit++;
temp[j+1] = temp[j] / 10000;
temp[j] %= 10000;
}}
for(j=0; j<digit; j++) fac[j] = temp[j];
printf("%2d!=%d", i, fac[digit-1]);
for(j=digit-2; j>=0; j--) printf("%04d", fac[j]);
putchar('\n');
}
return 0;
}
610デフォルトの名無しさん:2009/01/24(土) 19:48:57
2048*2048の配列を
@ A
B Cと4等分に4つの象限に分けて

@とC、AとB象限を入れ替えるアルゴリズムをお願いします。

配列は1次元で[i*width+j] width=2048とかでやっています。
言語はC言語です。
611デフォルトの名無しさん:2009/01/24(土) 19:51:01
>>610
>>1くらい読め
そして死ね
612デフォルトの名無しさん:2009/01/24(土) 20:03:07
>>611
できないカスは黙ってろよ(笑)
613デフォルトの名無しさん:2009/01/24(土) 21:12:35
>>610,612
というか死ね
614デフォルトの名無しさん:2009/01/24(土) 21:16:56
配列の型ぐらい書いたら?
615610:2009/01/24(土) 21:19:15
配列の型はdouble型です。
616デフォルトの名無しさん:2009/01/24(土) 21:20:13
>>610
何を重視する?
速さと使用メモリ量とわかりやすさとかあるけど
617610:2009/01/24(土) 21:26:54
>>616
重視しているのは目的を達成できること。
早ければ早いほどよいですがループさせる部分にはないので全体の処理としては1度しか
行わないところなのであまり気にはしていないです。

要はできさえすればそれでよいのですが。
2次元配列でなければよいです。A[i][j]こういう形の。
618デフォルトの名無しさん:2009/01/24(土) 21:31:32
テンプレ埋めないカスじゃなくてスレ違いのカスか
619デフォルトの名無しさん:2009/01/24(土) 21:32:30
象限というからには
A @ 
B C
こういう風に番号ふってほしいなあ
620デフォルトの名無しさん:2009/01/24(土) 21:36:28
>>610
兄さん、どうやらスレ違いのようだぜ?
621デフォルトの名無しさん:2009/01/24(土) 21:40:08
>>617
消えろカス
622610:2009/01/24(土) 21:42:35
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

>>619
こりゃ失礼・・

>>620
なにが違ってるんだ?
623デフォルトの名無しさん:2009/01/24(土) 21:45:07
>>622
なんで1読んでいながらテンプレに従わない?
624610:2009/01/24(土) 21:51:41
>>623
なんで従わないといけない?従わなければならないなんてことは書いてないよ。
推奨だろ??
環境などは必要かもしれないが、アルゴリズムだけでいいんでね。。
スルーできない && テンプレもよんでない && 解けもしないのにレスしてほしくないんだがね。
625デフォルトの名無しさん:2009/01/24(土) 21:54:28
>>624
だから、オレに言えるのは一つだけ。
死ね。
626デフォルトの名無しさん:2009/01/24(土) 21:59:14
なんか>>610がかわいs…氏ね
627610:2009/01/24(土) 22:02:08
なぁ頼むから教えてください世皆さん
628デフォルトの名無しさん:2009/01/24(土) 22:04:31
おまえの態度がきにくわないから、スルーされてんだろ
629610 ◆ecJXzsccCc :2009/01/24(土) 22:05:01
>>627
なりすましなんてしょうもないことはやめろよ。おかげでコテつけるハメになるだろう。
630デフォルトの名無しさん:2009/01/24(土) 22:05:10
暗に「テンプレ書けば解いてやるよ」と言ってるのがわからない610かわ…氏ね
631デフォルトの名無しさん:2009/01/24(土) 22:05:41
当人は今頃yahooかgooにでもマルチしてるだろ。
この手のアオリも発展がないと退屈だな。
死ね
632610 ◆ecJXzsccCc :2009/01/24(土) 22:06:21
>>628
態度が気に喰わないからスルーしてることにしてあげたいけど
単純に考える気がないor解けないだけだろ
633デフォルトの名無しさん:2009/01/24(土) 22:07:03
えー?>>610にお似合いのソース作って待ってるのに!
634610:2009/01/24(土) 22:08:01
>>629
やめてください
635デフォルトの名無しさん:2009/01/24(土) 22:08:56
型がわかれば作ってやる
>>610だけじゃ何もわからん
636610:2009/01/24(土) 22:09:32
>>635
doubleだっつたろぼけ
637610 ◆ecJXzsccCc :2009/01/24(土) 22:09:45
まぁいいや。テンプレ書いてもしょうがないから書かなかっただけなんだが。
それを判断するのは回答者とか言われるんだろうけど、同じことなんでね。
そうこう言ってるうちに自分でいくつかできたんで。
638デフォルトの名無しさん:2009/01/24(土) 22:11:47
できたのかよ
639デフォルトの名無しさん:2009/01/24(土) 22:29:48
2048*2048って
D配列1[2048]
D配列2[2048]
なのか?
640610:2009/01/24(土) 22:36:04
>>639
てめえらがどんくさいからもう自己解決しちまったよ。
テンプレテンプレうるせえクズ共が
641デフォルトの名無しさん:2009/01/24(土) 22:40:10
>>640
おお、最近の若者はすぐきれr…氏ね
642デフォルトの名無しさん:2009/01/24(土) 22:49:19
>>610
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8718.txt
別にテンプレを守る必要はないが、相手に仕様を伝えるためにはそれなりの工夫が必要だよ。
このソースで仕様を満たせているかどうかは、こちらは分からないから。
果たして貴方自身も仕様を理解しているのかも微妙かもしれない。
643デフォルトの名無しさん:2009/01/24(土) 22:50:08
>>642
当人はもういねーよ
644610:2009/01/24(土) 22:52:50
>>642
ありがとう
お前はいい奴だな

他の奴らは死ね
645デフォルトの名無しさん:2009/01/24(土) 23:27:18
はて、あの厨房(>>201)はどこへ行ったのやら
646デフォルトの名無しさん:2009/01/24(土) 23:28:36
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
 そんなことよりyahooきっず「どんな''ジャンボ''が食べたい?」に投票しようぜwwwwwwwww
 ジャンボピーマンを一位にして餓鬼共を泣かせようwwwwwwwwww
 現在1位 yahooの工作開始までに2位のたこ焼きを突き放す

 http://kids.yahoo.co.jp/         _人人人人人_
                        >鶴職人募集中<
                         ̄ Y^Y^^Y^Y^ ̄

 ↓本スレ
 http://takeshima.2ch.net/test/read.cgi/news4vip/1232801214/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
647610 ◆ecJXzsccCc :2009/01/24(土) 23:44:46
>>642
ありがとうございます。
仕様は一応書いてあるように1次元配列であることぐらいで
後はなんとかなる予定でしたので。考え方だけちらっと見せてもらえれば
環境に合わせるだとかそういうのは全部自分でやるつもりだったので。

しかし、642以外はただ単にできもしねーくせにテンプレテンプレほざいてるだけの
無能だってことがよくわかったよ。ただ叩きたいだけなのなw
偽610は今後もテンプレ厨を叩いておけ
648デフォルトの名無しさん:2009/01/25(日) 01:41:49
前にこのスレでアドバイスをもらって、
自分なりに考えてみたんですが、わかりませんでした。
助けてください。
自作strcpyについてです。

#include<stdio.h>

char *my_strcpy(char *s1, char *s2){
while(*s2 != NULL){
*s1 = *s2;
s1++;
s2++;
}
*s1 = NULL;
return s1;
}

int main(){
char *s1 = "abc";
char *s2 = "wxyz";
my_strcpy(s1, s2);
printf("s1:%s s2:%s \n", s1, s2);
return 0;
}

649デフォルトの名無しさん:2009/01/25(日) 01:42:37
648続き

実行後、
w<-s1が指しているところ
x
y
z
\0<-s2が指しているところ
w
x
y
z
\0

となっていることはわかりました。
s2のアドレスを別のところに変えることができれば、
s2もちゃんと表示されると考えたんですが、
どうすればいいかわかりませんでした。
初心者だからと言って片づけてはいけないとは思うのですが、
まだ始めたばっかりでわかりません。
よろしくお願いします。
650デフォルトの名無しさん:2009/01/25(日) 01:54:15
char s1[16] = "abc";
char s2[16] = "wxyz";
651650:2009/01/25(日) 01:58:35
s2のアドレスを別のところにするだけだと、
どんなバグを引き起こすかわからない。
s1のメモリをきちんと確保しとかないとだめ。
652デフォルトの名無しさん:2009/01/25(日) 01:59:47
・実行後の指しているところを誤認識している
・コピーされる側に十分な領域がない
・NULLはヌルポインタの為にあるのであって、NUL文字の為にあるわけではない

char *my_strcpy(char *s1, char *s2){
char *p = s1;
while(*s2){
*s1 = *s2;
s1++;
s2++;
}
*s1 = '\0';
return p;
}
という感じで。
while(*s1++ = *s2++) ; とするのが多いと思うけれど、それはもう少し理解が進んでから。
653201:2009/01/25(日) 02:16:20
>>652
そのコードは問題解決になっていないと思われ

>>651
というかmallocさせたほうがいいのでは?と言ってみるテスt
まあ、そうなるとコードが膨れるからやめたほうがいいか
654デフォルトの名無しさん:2009/01/25(日) 02:19:27
[1]C
[2]
問題: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8721.txt
ソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8720.txt
テキストhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8722.txt
[3]LINUX
C
[4]月曜日の13時
[5]ファイル処理が絡んでいてめんどくさいと思いますがよろしくお願いします。
 ソースは使っても使わなくてもどっちでもいいのでよろしくお願いします。
655デフォルトの名無しさん:2009/01/25(日) 02:26:10
>>653
どこでmalloc?
strcpyの動作確認の為なんだから配列でいいじゃんと思うんだけど
656デフォルトの名無しさん:2009/01/25(日) 02:27:38
>>655
返り値も使ってないしな
657デフォルトの名無しさん:2009/01/25(日) 02:29:09
追加で質問して申し訳ないのですが
while(*s1++ = *s2++) ;とした場合
最終的なs1は配列外を指すポインタになると思うのですが大丈夫なんですかこれは
658デフォルトの名無しさん:2009/01/25(日) 02:31:37
>>656
関数内でmallocするならそれはstrdupの習作になるしねぇ

>>657
だからもう少し理解が進んでからと書いた。
ループ終了時のs1は終端文字の次を指しているが、それは関数内での話であり、呼び出し側のs1には影響を与えない。
659658:2009/01/25(日) 02:33:07
連レスごめん。
配列外になるかどうかはまた別の話です。
660201:2009/01/25(日) 02:37:36
>>655
>strcpyの動作確認の為なんだから配列でいいじゃんと思うんだけど
ここではstrcpyの動作よりもバッファオーバーフローのほうが重要かなと思って。
それならmallocのほうがためになるだろうと。
今気づいたけど、完全にスレチだな(w

>>657
大丈夫じゃないです
s1返したらいけません(返してもいいけど使っちゃだめ
661201:2009/01/25(日) 02:39:34
うお、重なっちまった
>>658すまん
662デフォルトの名無しさん:2009/01/25(日) 02:49:28
いえいえ。
今頃過去ログを見たんだが、それ(リテラル)を変更するなんてとんでもない!>>282とか。
663デフォルトの名無しさん:2009/01/25(日) 02:52:21
>>654
ファイルの書式を
駅名<Tab>(1個もしくは2個)都道府県名<Tab>(1個もしくは2個)次の行の駅までの距離
と解釈してみているんだけど、あってますか?
あと、今回の課題だと都道府県名は読み捨てていい?
664デフォルトの名無しさん:2009/01/25(日) 02:54:47
いやそれネタだろ(藁)
665デフォルトの名無しさん:2009/01/25(日) 03:07:57
>>654
問題とテキストの1,2行目がくいちがってる。
正しいのを頼む
666デフォルトの名無しさん:2009/01/25(日) 03:11:15
>>665
tokyo→shina 6.8
tokyo→yokohama 6.8+22.0=28.8
とか
667606:2009/01/25(日) 03:23:22
ありがとうございました。
668デフォルトの名無しさん:2009/01/25(日) 03:25:51
どういたしまして
669デフォルトの名無しさん:2009/01/25(日) 04:27:47
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8723.txt
上記テキストファイルを読み込み
http://uproda.2ch-library.com/src/lib095619.zip
のような機能を持たせること

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] eclipse
 [3.3] C
[4] 期限: 月曜17時
[5] その他の制限:なし

よろしくお願いします
670デフォルトの名無しさん:2009/01/25(日) 07:22:50
>>654
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8724.c

リストにする意味がない気がしたから、ソースは使わず。
671670:2009/01/25(日) 07:39:56
#include <string.h>
抜けてた。
672デフォルトの名無しさん:2009/01/25(日) 11:50:03
673デフォルトの名無しさん:2009/01/25(日) 15:57:24
>>672
アリガトウゴザイマウ
674デフォルトの名無しさん:2009/01/25(日) 18:16:41
[1] 授業単元: 情報処理基礎及び演習
[2] 問題文:問 以下の処理を1つのプログラムで記述します。プログラムは1つです。
1.5行5列の行列[A]にデータを入力し、表示しなさい。
データは不規則な値でキーボードから入力します。処理は実数で行う。
2.行列[A]の転置行列を行列[B]に代入し、表示しなさい。
3.[C]←[A]+[B]の計算をして行列[C]を表示しなさい。
4.[C]←[A]−[B]の計算をして行列[C]を表示しなさい。
5.[C]←[A]*[B]の計算をして行列[C]を表示しなさい。
6.5.で求めた行列[C]の転置行列を行列[B]に代入し、表示しなさい。
[3] 環境
 [3.1] OS: vista
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] 言語: C
[4] 期限: 1月27日まで
[5] その他の制限: 初歩的なことと配列まで習いました。ポインタなどはまだ習っていません。

恐縮ですが、お教え頂けたら幸いです。
675デフォルトの名無しさん:2009/01/25(日) 18:41:11
いまうー発見!
676デフォルトの名無しさん:2009/01/25(日) 18:49:59
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
以下の条件を満たすプログラムを作成する。
1.毎日の収入・支出を管理する(家計簿)プログラム であり、データをファイルから読み込む機能と、書き込む機能がある。

2.新しいデータ(もしくはデータの一部分)を追加する機能、特定のデータ(もしくはデータの一部分)を削除もしくは修正する機能がある
3.データのソート(並び替え)を行う機能がある。
4.データから特定の部分のみを取り出して表示(もしくは保存)する機能がある
5.構造体を使用している
6.構造体のポインタを引数として持つ関数を使用している
7.enum型を使用している、もしくはプリプロセッサ「#define」を使用している

[3] 環境
 [3.1] OS: windows xp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 1月26日2:00まで
[5] その他の制限: 条件を満たしていればなんでもかまいません。
よろしくおねがいします。
677デフォルトの名無しさん:2009/01/25(日) 21:27:29
678デフォルトの名無しさん:2009/01/25(日) 22:08:16


[1] 授業単元: プログラミング言語C
[2] 問題文(含コード&リンク):

http://karinto2.mine.nu/ulink/ups/download/1232888277.txt

[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2009年2月5日23:59まで])
[5] その他の制限:
ダイクストラ法であればその他の制限はありません。
宜しく御願い致します。
679デフォルトの名無しさん:2009/01/25(日) 23:10:13
char *pnt[]={"Apple","Orange","Banana","Strawberry"};

上のやつをもちろんポインタを使って、
ABC順にソートして結果を表示するプログラムを御願いします。
文字比較にstrcmpを使ってください。
使うとは思いますけど・・・。
680デフォルトの名無しさん:2009/01/25(日) 23:19:05
そこまで言われると使いたくなくなるな
681デフォルトの名無しさん:2009/01/25(日) 23:32:06
上のやつをソートだったらstrcmp使わんでも
if (**a > **b)でいけるんじゃね?
682デフォルトの名無しさん:2009/01/25(日) 23:36:53
>>680
>>681
もーいーや。
作ってもらえるならstrcmpいーや。
683525:2009/01/25(日) 23:38:05
>>538
ありがとうございました
684デフォルトの名無しさん:2009/01/25(日) 23:40:38
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8727.txt
[3] 環境
 [3.1] OS:WindowsとLinuxのどちらでも可
 [3.3] 言語:C
[4] 期限:1月29日00:00まで
[5] その他の制限:ありません。

よろしくお願いします。
685デフォルトの名無しさん:2009/01/25(日) 23:42:08
>>678
開けない。
>>360
686デフォルトの名無しさん:2009/01/25(日) 23:54:32
>>679
int compare(const void* s1, const void* s2)
{
return strcmp(*(char**)s1, *(char**)s2);
}
int main(int argc, char* argv[])
{
char *pnt[]={"Apple","Orange","Banana","Strawberry"};
qsort((void*)pnt, sizeof(pnt)/sizeof(char*), sizeof(char*), compare);
for (int i = 0; i < 4; i++) {
printf("%s\n", pnt[i]);
}
return 0;
}
687デフォルトの名無しさん:2009/01/26(月) 00:08:11
>>686
えーっと。
出来れば関数なしでメインだけで御願いできませんか?
688デフォルトの名無しさん:2009/01/26(月) 00:27:16
それはqsortを使うなと言ってるんだよね
ソートアルゴリズムの希望は?
689デフォルトの名無しさん:2009/01/26(月) 00:30:48
>>679
#include <stdio.h>
int main(void)
{
char *pnt[]={"Apple","Orange","Banana","Strawberry"}, *temp;
int i, j;

for(i=1; i<sizeof pnt / sizeof(char *); i++) {
for(j=sizeof pnt / sizeof(char *); j>=i; j--) {
if(strcmp(pnt[j], pnt[j-1]) < 0) {
temp = pnt[j];
pnt[j] = pnt[j-1];
pnt[j-1] = temp;
}}}

for(i=0; i<sizeof pnt / sizeof(char *); i++) puts(pnt[i]);

return 0;
}
690デフォルトの名無しさん:2009/01/26(月) 00:33:01
>>689
ありがとござます!
691デフォルトの名無しさん:2009/01/26(月) 00:39:51
>>688
まぁどう考えても自作関数使うなって言う意味だろw
692デフォルトの名無しさん:2009/01/26(月) 00:42:38
>>691
自作関数なしでqsortは使えないだろw
693デフォルトの名無しさん:2009/01/26(月) 00:48:16
>>691
そうだね、自作関数を使って欲しくないんだろうね。
けど、なんでわざわざそこを?
694デフォルトの名無しさん:2009/01/26(月) 00:48:17
>>691
ばーかばーか
695デフォルトの名無しさん:2009/01/26(月) 00:49:41
自分でクイックソートのアルゴリズムをmain関数内で書くとか。
696デフォルトの名無しさん:2009/01/26(月) 00:50:11
>>692
strcmpが元から比較関数に使えるのに?
697デフォルトの名無しさん:2009/01/26(月) 00:52:32
>>696
qsort の仕様知ってますか?
698デフォルトの名無しさん:2009/01/26(月) 00:58:52
>>696
いや、無理だろw
699デフォルトの名無しさん:2009/01/26(月) 01:05:31
>>690
#include <string.h>付け足しといて
700デフォルトの名無しさん:2009/01/26(月) 01:08:11
>>696
ばーかばーか

701688:2009/01/26(月) 01:26:05
こ、これは。
これほどまでに援護射撃を受けたことがあっただろうか!
702デフォルトの名無しさん:2009/01/26(月) 01:30:09
もう解答済みなのにね
703696:2009/01/26(月) 01:48:50
キャストの仕方も知らないやつは黙っていてくれ
704デフォルトの名無しさん:2009/01/26(月) 01:55:44
>>672
すみません、このプログラムをコンパイルして走らせたのですが
既にあるテキストファイルを表示追加などを行なう形にしてほしいのですが
なんとか自分で改変しようと思いましたが挫折しました
705デフォルトの名無しさん:2009/01/26(月) 02:01:09
よろしくお願いします
[1] 授業単元 コンパイラ
[2] 問題文 

次の文法を解析する再帰下降プログラムを書け(C言語)

式::= 数 | 左波括弧 右波括弧 | 左波括弧 列 右波括弧
列::= 式 | 列 コンマ 式

解析関数の名前はexpression(式)とsequence(列)とする。字句解析関数はget_token()
字句の種類を表す値はNUMBER(数)、LEFT_BRACE(左波括弧)、RIGHT_BRACE(右波括弧)、COMMA(コンマ)とする
[3] 環境 C言語なら何でも
[4] 期限1月中
706デフォルトの名無しさん:2009/01/26(月) 02:19:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8730.txt

[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限:2009年1月26日23:59まで
[5] その他の制限:問題がシンプルなのでifやforといった基本的なものだけを利用してください
707デフォルトの名無しさん:2009/01/26(月) 02:38:13
>>703
後学のためにキャストの仕方を教えて貰えませんか?
pntの定義は>>679のとおりで。
708デフォルトの名無しさん:2009/01/26(月) 02:42:32
709704:2009/01/26(月) 02:45:33
あ、なんとかなりました。
710デフォルトの名無しさん:2009/01/26(月) 06:08:23
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8733.txt
  問題の元がPDFだったので無理やりTXTにした為少し見づらいと思います。すみません。
[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:Cでお願いします。
[4] 期限:1月27日
[5] その他の制限:ありません。
よろしくお願いします。
711デフォルトの名無しさん:2009/01/26(月) 07:21:36
無理やり qsort 使った方法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct tag_string_t{
char data[20];
}string_t;
int main(int argc, char* argv[])
{
string_t pnt[]={{"Apple"},{"Orange"},{"Banana"},{"Strawberry"}};
int i;
qsort(pnt, 4, sizeof(pnt[0]), strcmp);
for (i = 0; i < 4; i++) {
printf("%s\n", pnt[i].data);
}
return 0;
}
712デフォルトの名無しさん:2009/01/26(月) 07:26:40
構造体いらなかったw
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char* argv[])
{
char pnt[][20]={{"Apple"},{"Orange"},{"Banana"},{"Strawberry"}};
int i;
qsort(pnt, 4, sizeof(pnt[0]), strcmp);
for (i = 0; i < 4; i++) {
printf("%s\n", pnt[i]);
}
return 0;
}
713デフォルトの名無しさん:2009/01/26(月) 09:38:43
678です。
もう一度upし直したので宜しく御願いします。


[1] 授業単元: プログラミング言語C
[2] 問題文(含コード&リンク):

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8734.txt

[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2009年2月5日23:59まで])
[5] その他の制限:
ダイクストラ法であればその他の制限はありません。
宜しく御願い致します。
714デフォルトの名無しさん:2009/01/26(月) 11:03:28
>>703
キャストどうこうって問題じゃねーからw

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

int cmp(const void *a, const void *b)
{
return strcmp(*(char **)a, *(char **)b);
}

int main(int argc, char **argv)
{
char *foo[] = { "abc", "bb", "aaaaa" };
char *bar[] = { "abc", "bb", "aaaaa" };
qsort(foo, sizeof(foo) / sizeof(char *), sizeof(char *), cmp);
qsort(bar, sizeof(bar) / sizeof(char *), sizeof(char *), (int (*)(const void*, const void*))strcmp);
puts(*foo);
puts(*bar);
return 0;
}
715デフォルトの名無しさん:2009/01/26(月) 12:20:55
>>706
void mikan1::operator -(mikan1 m1)
{
int x = a*50 + b - (m1.a*50+m1.b);
a=x/50;
b=x%50;
}
716デフォルトの名無しさん:2009/01/26(月) 13:20:56
>>715
そうやればよかったのか…
ありがとうございました
717デフォルトの名無しさん:2009/01/26(月) 14:44:33
失礼します。
[1] 授業単元: コンピュータリテラシー研究
[2] 問題文(含コード&リンク):ファイル seiseki.txt
例 aoki 50
  bando 60
   〜 

'seiseki.txt'を読んで、名前をabc順に管理して、ほかのファイル(seisekiA.txt)に書き写す
という働きをするプログラムを作成
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:BCC Developer
 [3.3] 言語:C++
[4] 期限: 2月3日

さっぱりわからないです…
どなたか教えていただけませんか。
718デフォルトの名無しさん:2009/01/26(月) 15:02:39
残ってるのは?

>>674
>>676
>>705
>>710
>>713
>>717
719デフォルトの名無しさん:2009/01/26(月) 15:04:42
>>705
> 次の文法を解析する再帰下降プログラムを書け(C言語)
解析するってどんな結果にすることだ?
720デフォルトの名無しさん:2009/01/26(月) 16:06:01
>>717
#include <iostream>
#include <fstream>
#include <map>
int main(void)
{
std::ifstream ifs("seiseki.txt");
if (ifs.fail()) {
std::cerr << "failed to open seiseki.txt" << std::endl;
return 1;
}
std::map<std::string, int> seiseki;
std::string name;
int score;
while (ifs >> name >> score) {
seiseki.insert(std::make_pair(name, score));
}
ifs.close();
std::ofstream ofs("seisekiA.txt");
if (ofs.fail()) {
std::cerr << "failed to open seisekiA.txt" << std::endl;
return 1;
}
std::map<std::string, int>::iterator it(seiseki.begin()), end(seiseki.end());
while (it != end) {
ofs << it->first << " " << it->second << std::endl;
++it;
}
ofs.close();
return 0;
}
721デフォルトの名無しさん:2009/01/26(月) 16:10:01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
課題内容
入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、
該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。
ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。

なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、
分割コンパイルできるように作成しなさい。
このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、
main関数のソースファイルにて利用すること。

【入力例】
文字列s = aababcbaa
文字列t = abc

【出力例】
検索結果 = 3

[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:Cでお願いします。
[4] 期限:早めに。
[5] その他の制限:ありません。
よろしくお願いします。
722デフォルトの名無しさん:2009/01/26(月) 16:16:01
strncmpとか使っちゃダメ?
723デフォルトの名無しさん:2009/01/26(月) 16:17:27
strstrじゃなくて?
724デフォルトの名無しさん:2009/01/26(月) 16:19:34
>722
>723

途中まで出来てます。

#include <stdio.h>

#define STRMAX 140;//最大文字数
int search(char c_str_s[],char c_str_t[]);//検索関数

int main(void){

int search_num;//検索結果を格納する変数

char c_str_s[STRMAX];//検索対象文字列を格納する配列
printf("対象文字列を入力してください>>");//対象文字列を入力してくださいというメッセージを出力
fgets(c_str_s ,STRMAX, stdin);//検索対象文字列
str[strlen(c_str_s) - 1] = '\0';

char c_str_t[STRMAX];//検索文字列を格納する配列
printf("検索文字列を入力してください>>");//検索文字列を入力してくださいというメッセージを出力
fgets(c_str_t ,STRMAX, stdin);//検索対象文字列
str[strlen(c_str_t) - 1] = '\0';

search_num=search(char c_str_s,char c_str_t);

return 0;
}
725デフォルトの名無しさん:2009/01/26(月) 16:22:18
strstr使ったらヤバいすぐできちまう
726デフォルトの名無しさん:2009/01/26(月) 16:23:49
この問題ないようでつかっていいってこたないだろうなw
727デフォルトの名無しさん:2009/01/26(月) 16:28:03
と、いわれましても
〜main.c〜
#include <stdio.h>
#include "search.h"
int main()
{
printf("%d\n", search("ababcaa", "abc"));
return 0;
}

〜search.h〜
int search(const char *, const char *);

〜search.c〜
#include <string.h>

int search(const char *s, const char *t)
{
char *r = strstr(s, t);
if (!r) return -1;
return r-s;
}
728デフォルトの名無しさん:2009/01/26(月) 16:29:58
先生が怒らないならいいんじゃない?
729デフォルトの名無しさん:2009/01/26(月) 16:33:22
一応strncmp()とstrlen()は標準のものを使った。
#include <string.h>
#include "ヘッダファイルの名前"
int search(const char *s, const char *t)
{
int i, len;
len = strlen(t);
for (i = 0; s[i]; i++)
if (strncmp(s + i, t, len) == 0)
return i;
return -1;
}
以下main()から呼び出すためのヘッダファイル
#ifndef __DEFINED_SEARCH_H
#define __DEFINED_SEARCH_H
int search(const char *s, const char *t);
#endif /* #ifndef __DEFINED_SEARCH_H */
終わり。
730デフォルトの名無しさん:2009/01/26(月) 16:40:37
どうでもいいけど
先頭のアンダースコアは予約されてるよ
731デフォルトの名無しさん:2009/01/26(月) 16:41:57
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  2文探索プログラムで
  最良の木と最悪の木を1つずつ作成せよ
  入力するものは2桁の数字6つとする
[3] 環境
 [3.1] OS: Windows XP PS3
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C言語
[4] 期限: 2009年1月28日18:00まで

よろしくお願いします
732デフォルトの名無しさん:2009/01/26(月) 16:42:58
んだ。2個はだめだ。
_DEFINED_SEARCH_H_
でどうぞ
733デフォルトの名無しさん:2009/01/26(月) 16:46:06
グローバル スコープを持ち、_ で始まる名前
_ で始まり、その次が大文字の名前
__ を含む名前
734デフォルトの名無しさん:2009/01/26(月) 16:47:01
あ、Cの場合は 「__ を含む名前」 が「__ で始まる名前」か
735デフォルトの名無しさん:2009/01/26(月) 16:47:36
>>733
それはC++だ

>>732
だめだろカス
736デフォルトの名無しさん:2009/01/26(月) 17:02:37
737デフォルトの名無しさん:2009/01/26(月) 18:48:22
エラストテネスのふるいを用いて2から1000までの間の素数を求め表示するプログラム
を作成せよ。
(1)2.3.4...1000までの表を作る。
(2)2に○を付け、2の倍数全部に×をつける
(3)印の付いていない最小の数に○を付け、その数の倍数全部に×を付ける。
(4)3.をすべての数に印が付くまで繰り返す。
(5)○が付いているのが素数。

c++言語で<stdio.h>のヘッダでお願いします。
738デフォルトの名無しさん:2009/01/26(月) 18:48:25
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8739.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語: C++
[4] 期限: 2009年1月29日15:00まで

よろしくお願いいたします。
739デフォルトの名無しさん:2009/01/26(月) 19:08:38
>>737
#include <stdio.h>
#define N 1000

int main(void)
{
char sieve[N+1] = {0};
int i, j;

for (i = 2; i < N; i++) {
if (!sieve[i]) {
printf("%d ", i);
for (j = 2*i; j < N; j += i) {
sieve[j] = 1;
}
}
}
putchar('\n');
return 0;
}

それと、一応指摘しておくと「エラトステネス」な。
740デフォルトの名無しさん:2009/01/26(月) 20:02:28
>>739
細かい指摘だが
(j = 2*i; j < N; j += i)

(j = 2*i; j <= N; j += i)
こうでないか?
741デフォルトの名無しさん:2009/01/26(月) 20:15:50
>>738
> データの最初に学科・学年・番号・名前
これ以外は満たしたつもり。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8741.txt
742デフォルトの名無しさん:2009/01/26(月) 21:26:17
[1] 再帰
[2] 入力:自然数nおよびr(n≧r)
出力:集合{1,2...,n}から異なるr個の要素を選ぶ、すべての組み合わせの辞書式順の生成
  
[3] [3.1]Windows
  [3.3]C
[4] 来週中ですがなるべく早めにお願いしたいです
[5] ・再帰的な関数を必ず定義してください
  ・再帰のアイデアは樹形図そのもの
  ・r要素の組み合わせを表すのに配列Aを使う
  ・非再帰的な関数も書いてくださるならお願いします
743デフォルトの名無しさん:2009/01/26(月) 22:21:32
[1] 情報処理
[2] 1. 整数配列に、11 から3 きざみで57 までの数値を順に配列に代入しなさい。
1.1 代入した数値を小さい順に出力しなさい。
1.2 代入した数値を大きい順に出力しなさい。
1.3 最小値、最大値を出力しなさい。
1.4 代入した数値の、総和を求め出力しなさい。
以上のプログラム(サブ関数を使用する)、結果とプログラムを提出します。
2. 適当な数の整数値(配列に代入する数は15 以上)を配列に入力し(キーボードから入力する)、以
下の処理を行ないます。
1.1 配列内の値を表示しなさい。但し1 行に7 個の値を表示する。
1.2 最大値を表示しなさい。
1.3 代入された値の、総和、平均を計算し表示しなさい。
1.4 配列内の値を小さい順に表示しなさい。但し1 行に7 個の値を表示する。
以上のプログラム(サブ関数を使用する)、結果を提出します。
[3] 環境
 [3.1]Windows
 [3.3] C++
[4] 今週金曜までです
[5] if,for,while,自作関数、配列。主に配列を使うらしいです。お願いします。
744デフォルトの名無しさん:2009/01/26(月) 22:22:48
[1] 情報処理
[2] 問 以下の処理を1つのプログラムで記述します。プログラムは1つです。
1. 5行5列の行列[A]にデータを入力し、表示しなさい.データは不規則な値でキーボードから入
力します。処理は実数で行う。
2. 行列[A]の転置行列を行列[B]に代入し、表示しなさい.
3. [C]←[A]+[B]の計算をして行列[C]表示しなさい.
4. [C]←[A]−[B]の計算をして行列[C]表示しなさい.
5. [C]←[A]*[B]の計算をして行列[C]表示しなさい.
6. 5.求めた行列[C]の転置行列を行列[B]に代入し、表示しなさい.
プログラムと結果を提出します。
[3] 環境
 [3.1]Windows
 [3.3] C++
[4] これも今週金曜までです
[5] if,for,while,自作関数、配列。主に配列を使うらしいです。
745デフォルトの名無しさん:2009/01/26(月) 22:49:46
>>742 辞書式順がこれで正しいのかは分からないけど。

#include <stdio.h>
#define LENGTH 100
void print_stack(int length, int * stack) {
int i;
for (i = 0; i < length; i++)
printf("%2d ", stack[i]);
printf("\n");
}
void recursive_combination(int n, int r, int start, int depth, int * stack)
{
int i;
if (r == depth) {
print_stack(r, stack);
return;
}
for (i = start; i <= n; i++) {
stack[depth] = i;
recursive_combination(n, r, i + 1, depth + 1, stack);
}
}
void combination(int n, int r)
{
int stack[LENGTH];
recursive_combination(n, r, 1, 0, stack);
}
int main(void)
{
combination(5, 2);
return 0;
}
746デフォルトの名無しさん:2009/01/26(月) 22:53:15
>>744
>>674 と同じ課題?
>>677
747739:2009/01/26(月) 23:01:26
>>740
あー、たしかに。その通りですね。
748 ◆yuVOLBfkgQ :2009/01/26(月) 23:01:32
[1] C言語(構造化・関数・配列・ポインタ・構造体)
[2] 長いので全文はアップローダーにあげました。
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
(現行スレNo.8742)
  内容はCSVファイルの入力から並べ替え→出力といったものです。
[3] 環境
 [3.1] OS: Windows
 [3.2] Borland C++ Compiler 5.5
 [3.3] 言語: Cのみ
[4] 2009年1月31日14:00まででお願い致します。
[5] 使っていいのは配列・ポインタ・構造体までです。
  ソースと変数関数の意味を記載する必要があります。
第一ステップが必須、第二ステップは努力目標です。よろしくお願いします。
749デフォルトの名無しさん:2009/01/26(月) 23:10:57
>>746
そのようですねw
750デフォルトの名無しさん:2009/01/26(月) 23:14:12
>>746
でもまだ解答待ちのようですね(´・ω・`)
751デフォルトの名無しさん:2009/01/26(月) 23:26:22
>>741
ありがとうございます。
申し訳ないのですが文字化けしていてよくわからないので、どなたかもう1パターンお願いできますか?
752デフォルトの名無しさん:2009/01/26(月) 23:27:15
>>749-750
回答でてる
>>751
化けてない
753デフォルトの名無しさん:2009/01/26(月) 23:30:06
>>751
文字コードとかUTF8とかでぐぐれ
もしくはちゃんとしたテキストエディタを


って書いて気づいたけど、VSで化けるはずがないだろう。
一体どういう環境なんだ
754デフォルトの名無しさん:2009/01/26(月) 23:36:21
>>587です。レス遅れてすいません。

>>588さん素早いレスありがとうございます。

やってみたのですが<conio.h>というヘッダファイルが見当たらないというエラーが返ってきてしまいました。
いまさら条件を追加するのは申し訳ないと思うのですが、できれば標準ライブラリ関数でやることはできないでしょうか?

勝手な意見をして誠に申し訳ございません。
ご協力よろしくお願いします。
755デフォルトの名無しさん:2009/01/26(月) 23:37:31
>>752
見つけました!
756デフォルトの名無しさん:2009/01/26(月) 23:47:58
757684:2009/01/26(月) 23:53:16
>>708
遅ればせながらありがとうございます。
758デフォルトの名無しさん:2009/01/26(月) 23:53:57
>>746
言語がC++なところが新しい
てか、boost使えば瞬殺?
759デフォルトの名無しさん:2009/01/26(月) 23:57:47
・・・・・

743の課題C++じゃなくてCでした^^;
760デフォルトの名無しさん:2009/01/26(月) 23:59:31
>>753
751じゃないが、
>>741をIEで開くと化ける。もちろんエンコードを指定しなおすと正常。
環境はVistaSP1でIE7ね。
761741:2009/01/27(火) 00:10:09
環境がWindows系っぽいときはsjisに変換してから上げたほうが良さそうだな。。。
次からそうするか。
762デフォルトの名無しさん:2009/01/27(火) 00:26:26
763デフォルトの名無しさん:2009/01/27(火) 00:30:17
>>761
そういうときはUTF-8だよ。
しかし、BOM付けないとWindows系には優しくないという罠。
764デフォルトの名無しさん:2009/01/27(火) 00:37:30
ブラウザも使いこなせないような奴単位落としたらいいじゃん面倒だなw
765デフォルトの名無しさん:2009/01/27(火) 00:50:27
>>764
ここは、C系で一番バカな質問者の集まるスレだぞ?
これが他所のスレッドに流出したら、どれだけ迷惑か。
766デフォルトの名無しさん:2009/01/27(火) 01:18:41

[1] 授業単元: C言語(構造化・関数・配列・ポインタ・構造体)
[2] 問題文(含コード&リンク):
fileを読み込んで出力し、関数内にて使用した文字列を
格納するbuff配列のアドレスをmain関数内にて表示しなさい
またmain関数内では、ファイルのオープン・クローズと関数呼び出し
関数からの戻り値を表示する処理のみおこない、
それ以外はすべて関数内でおこなうこと。

読み込むファイルの名前はユーザーが入力できることとする。

1行の最大読み込み文字数:256
ファイル名最大文字数:40

【イメージ的には↓】
cccccc
cccc
cccccc
cccc
buffアドレス:b23a84

[3] 環境
 [3.1] OS: Windows
 [3.2] Borland C++ Compiler 5.5
 [3.3] 言語: Cのみ
[4] できれば早めでよろしくお願いします
767デフォルトの名無しさん:2009/01/27(火) 02:15:56
>>670
本当にありがとうございます。
助かりました。
768デフォルトの名無しさん:2009/01/27(火) 02:21:30
>>766
とりあえず問題文は一字一句間違いなく丸写ししたほうがいいと思うよ
769710:2009/01/27(火) 02:35:21
>>736のをVC++2008でビルドしたらエラーがでました。何かこちら側のミスでしょうか?

error C2146: 構文エラー : ';' が、識別子 'convert' の前に必要です。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C2146: 構文エラー : ';' が、識別子 'convert' の前に必要です。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C2086: 'int ssize_t' : 再定義されました。
'ssize_t' の宣言を確認してください。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
770デフォルトの名無しさん:2009/01/27(火) 03:35:09
CじゃなくてC++としてコンパイルしちゃってるんじゃないか
771デフォルトの名無しさん:2009/01/27(火) 03:42:20
ごめん、適当すぎたかも。
ssize_t を int で置換
772デフォルトの名無しさん:2009/01/27(火) 04:35:08
>>742
こんな感じに出ればいいの? n=6 r=3
1:{1,2,3}
2:{1,2,4}
3:{1,2,5}
4:{1,2,6}
5:{1,3,4}
6:{1,3,5}
7:{1,3,6}
8:{1,4,5}
9:{1,4,6}
10:{1,5,6}
11:{2,3,4}
12:{2,3,5}
13:{2,3,6}
14:{2,4,5}
15:{2,4,6}
16:{2,5,6}
17:{3,4,5}
18:{3,4,6}
19:{3,5,6}
20:{4,5,6}
773デフォルトの名無しさん:2009/01/27(火) 10:27:22
三行三列の行列のデータを読み込み転置行列および逆行列を計算し表示する
プログラムを作成せよ。
c言語<stdio.h>でお願いします。
774デフォルトの名無しさん:2009/01/27(火) 10:35:24
二次方程式ax二乗+bx+c=0のa,b,cを入力すると答えを出すプログラムを作成せよ
ただしaが0の場合を考慮せよ。また実根、重根、虚根の判定をして、重根の場合は
根を一つだけ表示し、虚根の場合はx=0.5+0.3i,x=0.5-0.3i
のように実部、虚部を表示せよ。
c言語<stdio.h>
お願いします。。。
775デフォルトの名無しさん:2009/01/27(火) 10:44:57
>>774
#include <stdio.h>
#include <math.h>

int main(void)
{
double a, b, c, D, x;
printf("a = "); scanf("%lf", &a);
printf("b = "); scanf("%lf", &b);
printf("c = "); scanf("%lf", &c);
D = (b * b - 4.0 * a * c) / (2.0 * a);
x = b / (-2.0 * a);
if (D > 0)
printf("x = %f, x = %f\n", x - sqrt(D), x + sqrt(D));
else if (D == 0)
printf("x = %f\n", x);
else {
D *= -1.0;
printf("x = %f - %fi, x = %f + %fi\n", x, sqrt(D), x, sqrt(D));
}
return 0;
}
776デフォルトの名無しさん:2009/01/27(火) 11:01:55
>>766
激しく日本語でおkな問題文だ

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

#define FILENAMELEN (40 + 1)
#define BUFFSIZE (256 + 1)

long DoneMyself(FILE *fp)
{
char buff[BUFFSIZE];
while (fgets(buff, BUFFSIZE, fp) != NULL) printf(buff);
return (long)buff;
}

int main(void)
{
FILE *fp;
char filename[FILENAMELEN];
printf("input filename: ");
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
fp = fopen(filename, "r");
printf("buff:アドレス%x\n", DoneMyself(fp));
fclose(fp);
return 0;
}
777738:2009/01/27(火) 11:52:32
>>741文字化けは解決しました。どうもすみません。
後ビルドしてみたのですが並べ替える前と並べ替えた後のところがdatファイルにきちんと表示されないのですが・・・
778デフォルトの名無しさん:2009/01/27(火) 11:52:35
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8747.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] 言語: Cのみ
[4] 2009年1月28日23:59

よろしくお願いします

779デフォルトの名無しさん:2009/01/27(火) 13:05:42
780デフォルトの名無しさん:2009/01/27(火) 13:59:35
781デフォルトの名無しさん:2009/01/27(火) 14:11:12
[1] C言語
[2]http://www.dotup.org/uploda/www.dotup.org2161.pdf.html
http://www.dotup.org/uploda/www.dotup.org2164.pdf.html
ややこしいのでPDFであげます
 [3.1]Windows
 [3.3] C
[4] 2009/1/30までです
[5] if,for,while,関数,配列
782デフォルトの名無しさん:2009/01/27(火) 14:29:44
>>762
713です。

コンパイルは通ったのですが、実行すると以下のようなエラーが出ました。
何かこちら側のミスでしょうか?

error:Illefal format[line:15 head]
783デフォルトの名無しさん:2009/01/27(火) 14:31:23

error:Illegal format[line:15 head]
の間違いでした。すみません。
784デフォルトの名無しさん:2009/01/27(火) 14:53:02
>>783
データファイルの改行コードがLFになってないんじゃないの?
多分、CR+LFになっている。
785デフォルトの名無しさん:2009/01/27(火) 16:24:15
>>762
>>784

無事に動きました!!本当助かりました。
ありがとうございました。
786デフォルトの名無しさん:2009/01/27(火) 17:22:46
内容:
[1] 授業単元:プログラミング
[2] 2×2分割表の任意の4要素を入力するとフィッシャーの直接確率検定
(両側検定)を行う(p値を求めて表示する)プログラムを作成せよ
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 1/29
[5] その他の制限: なるべく簡単にお願いします
787710:2009/01/27(火) 18:16:34
コンパイルできました。ありがとうございました。
788デフォルトの名無しさん:2009/01/27(火) 18:34:18
>>779
ありがとうございました!!
もしよければ、評価関数を使わない場合もできませんでしょうか……
789デフォルトの名無しさん:2009/01/27(火) 18:38:38
評価関数ってどれ?
790デフォルトの名無しさん:2009/01/27(火) 18:39:48
>>788
>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
791デフォルトの名無しさん:2009/01/27(火) 19:09:18
>>788
マクロのことかな
単なる置換だから手動で書き換えてくれ
792デフォルトの名無しさん:2009/01/27(火) 20:09:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
リスト構造を使ったキューを実現するプログラムを作れ。
1つの要素にはアルファベット20文字以内の文字列を入れられるようにすること。
0(Exit)を選択したらキューに蓄えられているデータを順に出力せよ。
具体的には以下のように出力される。

Select: (1) Enqueue , (2) Dequeue , (0) Exit : 1
Input strings : yamada

Select: (1) Enqueue , (2) Dequeue , (0) Exit : 1
Input strings : takahashi

Select: (1) Enqueue , (2) Dequeue , (0) Exit : 1
Input strings : tanaka

Select: (1) Enqueue , (2) Dequeue , (0) Exit : 2
Output strings : yamada

Select: (1) Enqueue , (2) Dequeue , (0) Exit : 0
Queue : takahashi - tanaka
[3] 環境
 [3.1] Win
 [3.2] gcc
 [3.3] C
[4] 期限:木曜日までです><よろしくお願いします。
793デフォルトの名無しさん:2009/01/27(火) 20:23:36
794デフォルトの名無しさん:2009/01/27(火) 20:24:04
>>790
あ、すいません。次からきをつけます……

>>791
わかりました。とりあえずやってみます
795デフォルトの名無しさん:2009/01/27(火) 21:18:17
>>781
下 doubleでピボット選択なしガウス・ジョルダン法 0除算?シラネ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8752.txt
796デフォルトの名無しさん:2009/01/27(火) 21:27:12
[1] 授業単元: C言語(ファイル入出力)
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8754.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] cc
 [3.3] 言語:C
[4] 期限: [2009年1月28日18:00まで]
[5] その他の制限:配列か構造体を使ってお願いします。
797デフォルトの名無しさん:2009/01/27(火) 21:30:53
すみません、そなたか>>731
お願いできないでしょうか
798デフォルトの名無しさん:2009/01/27(火) 21:44:20
>>731
最良
  1
 /\
 2  3
/\/\
4  5  6

最悪
1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6
799デフォルトの名無しさん:2009/01/27(火) 21:51:13
800デフォルトの名無しさん:2009/01/27(火) 22:00:26
5変じゃない?
801デフォルトの名無しさん:2009/01/27(火) 22:23:23
あれ、ほんとだね。
なんとか型UFOみたいだなーとか思いながら書いてて気づかなかったw
802デフォルトの名無しさん:2009/01/27(火) 22:24:51
5の件もだけど、こうの方がいいかな?
  1
 /\
 2  5
/\ \
3  4  6
803デフォルトの名無しさん:2009/01/27(火) 22:29:35
二分探索なのだから、
探索木じゃないのかえ?
804デフォルトの名無しさん:2009/01/27(火) 22:30:58
どうやって探索するんだその木は
805デフォルトの名無しさん:2009/01/27(火) 22:32:59
>>798 >>802
どっちも間違い
勉強し直せ
806デフォルトの名無しさん:2009/01/27(火) 22:33:19
最小値をpop -> 評価 -> ヒープ再構築
実装は楽しそうだね★ミ
807デフォルトの名無しさん:2009/01/27(火) 23:07:24
>>798,>>802
それのどこがC/C++プログラムなんだよwwバーローwwwww
808デフォルトの名無しさん:2009/01/27(火) 23:13:06



  探索する人の気持ちになって、考えてみてください


809デフォルトの名無しさん:2009/01/27(火) 23:48:20
   4
 2   5
1 3    6
810デフォルトの名無しさん:2009/01/28(水) 00:07:30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8756.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月28日AM9時
811デフォルトの名無しさん:2009/01/28(水) 00:12:31
>>677
これを#define N 5を用いずに書くとどうなりますか??
812デフォルトの名無しさん:2009/01/28(水) 00:14:31
>>811
Nって書いてあるところを全部5に置き換える
813デフォルトの名無しさん:2009/01/28(水) 00:18:42
どなたか>>743の問題お願いしますm(_ _"m)
814デフォルトの名無しさん:2009/01/28(水) 00:21:26
どなたか>>743の問題お願いしますm(_ _"m)
815デフォルトの名無しさん:2009/01/28(水) 00:21:32
>>812
ありがとうございます。あともう一点ですが、
>>677
のputchar('\n');を使わないで書くことはできませんか?
816デフォルトの名無しさん:2009/01/28(水) 00:23:26
817デフォルトの名無しさん:2009/01/28(水) 00:25:19
お手数ですがお願いします。


[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
0〜99の100個の数字から異なる30個を選び、配列COM[30]に格納せよ
次に異なる6個の数字を入力し、順番に配列MAN[6]に格納せよ(乱数使用:123で初期化)
ソートを用いて配列COM、MANの要素をそれぞれ小さい順にならべよ
配列COMに含まれる配列MANの数字の個数をcountを求めよ
最後に配列COM、MANの全要素、変数countをresult.outに書き込め
出力形式は自由だがmain関数は10行以内とする

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 28日の18時まで
[5] その他の制限:特になし
818デフォルトの名無しさん:2009/01/28(水) 00:27:37
>>813
あきらめたらw
819デフォルトの名無しさん:2009/01/28(水) 00:29:56
>>743
とりあえず1だけ。激しく酔っ払ってるから間違ってたらごめんね
#include <cstdio>

void prob1(void)
{
int a[16], j = 0;
for (int i = 11; i <= 57; i += 3) a[j++] = i;
for (int i = 0; i < j; ++i) printf("%2d ", a[i]); puts("");
for (int i = j - 1; i >= 0; --i) printf("%2d ", a[i]); puts("");
printf("max = %d, min = %d\n", a[j - 1], a[0]);

int total = 0;
for (int i = 0; i < j; ++i) total += a[i];
printf("total = %d\n", total);
}

int main(void)
{
prob1();
return 0;
}
820デフォルトの名無しさん:2009/01/28(水) 00:30:58
>>815
printf("\n");
821デフォルトの名無しさん:2009/01/28(水) 00:31:11
>>809
問題文嫁w

> 入力するものは2桁の数字6つとする
822デフォルトの名無しさん:2009/01/28(水) 00:34:08
>>820
ありがとうございます。
823デフォルトの名無しさん:2009/01/28(水) 00:40:04
>>819
ありがとうございます!
今家には動作確認する環境が無いので、明日動作確認してみます!
824デフォルトの名無しさん:2009/01/28(水) 00:43:18
825デフォルトの名無しさん:2009/01/28(水) 00:48:25
>>824
本当にありがとうございます。助かりました。。
826デフォルトの名無しさん:2009/01/28(水) 01:14:30
>>786 参考:ttp://aoki2.si.gunma-u.ac.jp/lecture/Cross/Fisher.html
#include<stdio.h>
double fac(int n) { double r = 1; for (; n > 1; n --) r *= n; return r; }
double P(int a, int b, int c, int d) { return fac(a+b)*fac(c+d)*fac(a+c)*fac(b+d) / (fac(a+b+c+d)*fac(a)*fac(b)*fac(c)*fac(d)); }
int main() {
int a, b, c, d, va, vb, vc, vd; double Pa, Pva, Psum = 0;
printf("a b\nc d\n\n");
printf("a="); scanf("%d", &a); printf("b="); scanf("%d", &b);
printf("c="); scanf("%d", &c); printf("d="); scanf("%d", &d);
Psum = Pa = P(a, b, c, d);
printf(" a b c d Pa\n"); printf("%3d %3d %3d %3d %.12f @\n", a, b, c, d, Pa); printf("---\n");
for (va = a+1; va>=0 && (vb=a+b-va)>=0 && (vc=a+c-va)>=0 && (vd=d-a+va)>=0; va ++) {
Pva = P(va, vb, vc, vd);
if (Pva <= Pa) Psum += Pva;
printf("%3d %3d %3d %3d %.12f %c\n", va, vb, vc, vd, Pva, Pva<=Pa?'@':' ');
}
printf("---\n");
for (va = a-1; va>=0 && (vb=a+b-va)>=0 && (vc=a+c-va)>=0 && (vd=d-a+va)>=0; va --) {
Pva = P(va, vb, vc, vd);
if (Pva <= Pa) Psum += Pva;
printf("%3d %3d %3d %3d %.12f %c\n", va, vb, vc, vd, Pva, Pva<=Pa?'@':' ');
}
printf("---\nPsum=%.12f\n", Psum);
return 0;
}
827デフォルトの名無しさん:2009/01/28(水) 01:15:02
>>817
言葉がメチャクチャだが、
「行」の定義ぐらい聞いておこうか?
828デフォルトの名無しさん:2009/01/28(水) 01:15:40
829デフォルトの名無しさん:2009/01/28(水) 01:25:49
void f(void)の中で全部やって、mainはそれを呼ぶだけでもオッケーなんかな
830デフォルトの名無しさん:2009/01/28(水) 01:28:38
for(i=j=cnt=0; i < 6 && j < 30;) {
if(MAN[i] < COM[j]) i++;
else if(MAX[i] > COM[j]) j++;
else i++, j++, cnt++;
}
ソート済みならこんなのはどうよ?
831デフォルトの名無しさん:2009/01/28(水) 01:32:14
>>796
自己解決できました。
832デフォルトの名無しさん:2009/01/28(水) 01:32:20
いいね
833デフォルトの名無しさん:2009/01/28(水) 01:34:17
>>797です
なんとか自分で二分探索木作ることができました
すみませんでした
834817:2009/01/28(水) 01:46:42
>>827
問題文そのまま写したらちょっと変になってしまいました・・・

>>828
早い回答ありがとうございます。
835792:2009/01/28(水) 02:42:28
>>799
ありがとうございます!
リスト構造を使ったキューにしたいのですがそのverも時間がありましたらよろしくおねがいします。
836 ◆yuVOLBfkgQ :2009/01/28(水) 03:46:51
>>756
お礼が遅くなって申し訳ありません。
ありがとうございました。本当に助かりました。
837デフォルトの名無しさん:2009/01/28(水) 14:10:01
838デフォルトの名無しさん:2009/01/28(水) 15:50:05
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
コマンドライン引数を使用して、指定した読み込みファイルからテキストを読み込み、
  中央揃えで画面に表示する。ただし、1行は80文字とする
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] bcc
 [3.3] 言語:C
[4] 期限: 1月29日
よろしくお願いします
839デフォルトの名無しさん:2009/01/28(水) 15:57:40
>>838
日本語なしの英数文字のみでよろしいか
840デフォルトの名無しさん:2009/01/28(水) 16:54:03
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8763.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C++
[4] 期限:2009年2月1日
[5] その他の制限: 特になし

よろしくお願いします。
841デフォルトの名無しさん:2009/01/28(水) 17:05:19
>>705ってのは、結局どんな出力を期待してるんだ?
842デフォルトの名無しさん:2009/01/28(水) 17:11:20
>>840
もとのコードがコンパイルできないって、どう言うことよ。
843デフォルトの名無しさん:2009/01/28(水) 17:27:28
>>838
行長には行末改行も含めた。
#include <stdio.h>
#include <string.h>
enum {LEN = 80 + 1, }; /* 行長 + '\0' */
int main(int argc, char **argv)
{
FILE fp;
char s[LEN];
int len, i, j;
if (argc != 2) {
fprintf(stderr, "オプションはファイル名1つのみです。\n");
return 1;
}
if ((fp = fopen(argv[1], "r")) != NULL) {
fprintf(stderr, "ファイル\"%s\"をオープンできません。\n", argv[1]);
return 2;
}
while (fgets(s, LEN, fp) != NULL) {
len = strlen(s);
j = (LEN - 1 - len) / 2;
for (i = 0; i < j; i++)
putchar(' ');
s[len - 1] = (s[len - 1] == '\n')? '\0' : s[len - 1];
printf("%s\n", s);
}
return 0;
}
844デフォルトの名無しさん:2009/01/28(水) 17:32:06
>>843
返事遅れて申し訳ありません
本当にありがとうございました
845デフォルトの名無しさん:2009/01/28(水) 17:39:41
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
15パズルを作成せよ
・4×4のマス目を持つ盤に置かれた15個の番号付きのコマを番号順に並べる
 ・1マスだけは空白で上下左右のコマをその場所に移動することが出来る
以下の関数を使って15パズルを作成せよ
関数 disp
void disp(int b[NX][NY]);
・引数 盤面の配列
・働き 盤面を表示する、数字の右端を揃える、空白は[]を出力
関数 move
void move(int b[NX][NY], int *x, int *y, int d);
・引数 盤面の配列、空白のコマのx座標(変数のアドレス)、空白のコマのy座標(変数のアドレス)、移動方向(1
     〜4)
・働き 移動方向に従い盤面の配列を変更(端で移動できるコマがない場合は変更せず)、新たな空白コマの座
     標にx,yを更新
関数 shuffle
void shuffle(int b[NX][NY], int *x, int *y);
・引数 盤面の配列、空白のコマのx座標(変数のアドレス)、空白のコマのy座標(変数のアドレス)
・働き 盤面をバラバラにし、空白のマスのx,yを更新して返す
関数 check
int check(int b[NX][NY]);
・引数 盤面の配列
・働き 完成しているかどうかのチェックを行い、完成していれば1、完成していなければ0を返す
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2009年1月30日(金)まで
[5] その他の制限: 関数内の処理の説明(コメントとしてプログラムに書いてもいい) もお願いします。
宜しくお願いします。
846デフォルトの名無しさん:2009/01/28(水) 17:42:23
>>843
コンパイルもしてない自身の割には・・・
847デフォルトの名無しさん:2009/01/28(水) 17:45:01
>>840 >>842
コンパイルできないのは関数プロトタイプがないから。
void swap(char *pa,char *pb);
をcharsort()の上に置くこと。
問題それ自体は上記の修正した上で、以下を最後に追加する。
int main(void)
{
char s[] = "任意の文字列、ただし多バイト文字や空白文字を使うな。";
printf("元の文字列:%s\n", s);
charsort(s, 0, sizeof (s) / sizeof (char) - 2);
printf("ソート後の文字列:%s\n", s);
return 0;
}
以下追記。
sizeof (s) / sizeof (char)はsizeof sでも可。
-2は配列の最後へのアクセスは長さから-1する必要がある上、
文字列は余分に'\0'がつくためさらに-1の必要がある。
848デフォルトの名無しさん:2009/01/28(水) 17:45:09
>>840
int main()
{
char timpo[] = "information";
char manco[] = charsort( timpo, 0, strlen( timpo ) - 1 );
}

この charsort 関数を書いた人に言っておきたいことがある〜♪
ソート範囲は [ begin, end ) で受け取ったほうが何かと便利〜♪
849デフォルトの名無しさん:2009/01/28(水) 17:49:20
>>847
swapの中身もcharsortの中身もグダグダだろ
850デフォルトの名無しさん:2009/01/28(水) 17:52:50
なに?
今日はコンパイラも持ってないやつが書き込む日なの?
じゃあ、明日来るわ。
851デフォルトの名無しさん:2009/01/28(水) 17:56:29
いやいや。コンパイラは持ってるよ。
コンパイルエラーが出ても無視してるだけで。
852デフォルトの名無しさん:2009/01/28(水) 17:57:56
>>846
お笑い×××××も阻止できない自身の割には・・・ w
853840:2009/01/28(水) 18:07:33
>>842
TXTにあるソースを利用(修正)してプログラムを作る
ということだと思います。
854デフォルトの名無しさん:2009/01/28(水) 18:10:28
>>853
ひとかけも要らないコードなのに?
855デフォルトの名無しさん:2009/01/28(水) 18:16:19
>>854
「informationが入った文字配列を下に示すクイックソートのプログラムによりソートせよ」
という問題文だから使わないわけにはいかないべ。
もちろん、他人のプログラムを勝手に修正しちゃらめぇ。
856デフォルトの名無しさん:2009/01/28(水) 18:22:59
>>855
ぶっちゃけ、動かないものは「クイックソートのプログラム」じゃねーし
857デフォルトの名無しさん:2009/01/28(水) 18:25:12
>>856
なんたる哲学的命題
858デフォルトの名無しさん:2009/01/28(水) 19:00:21
[1] 授業単元:

[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン: (Sisual Studio2005)
 [3.3] 言語: (C)
[4] 期限: (明日の午後3時まで)
[5] その他の制限: (C言語検定2級程度)

2問ありますが宜しくお願いします

http://uproda.2ch-library.com/src/lib097085.jpg

http://uproda.2ch-library.com/src/lib097087.jpg

859デフォルトの名無しさん:2009/01/28(水) 19:58:06
860デフォルトの名無しさん:2009/01/28(水) 20:36:43
>>840
swap()は,
・プロトタイプか関数定義そのものをcharsort()の前におく。
・*pa = pb; を *pa = *pb; にする。
という修正が必要。
charsort()は、
・else if(nn - n0 == 1){ は else{ にする。
・while(i<j){ は while (1){ にする。
・else{ charsort(a,n0,j); charsort(a,i,nn); } は else break; にする。
という修正が必要。
問題文の提示がおかしい。ソートを修正してほしいならそう言うべき。
提示された問題文ではただの釣り扱いされるかも。
861860:2009/01/28(水) 20:40:50
>>840
>>853で言っていること無視して860できついこといってすまんかった。
862デフォルトの名無しさん:2009/01/28(水) 20:43:37
>>848
>char manco[] = charsort( timpo, 0, strlen( timpo ) - 1 );
くだらない名前を使いたがるバカにふさわしい低レベルw
863デフォルトの名無しさん:2009/01/28(水) 20:55:42
864デフォルトの名無しさん:2009/01/28(水) 21:02:29
+ printf("%4.1f ", (double)sum[jun[i]]/nn);
- printf("%4.1f ", (double)sum[i]/nn);
865デフォルトの名無しさん:2009/01/28(水) 21:27:32
いやぁ、C言語は難しいなぁ。
866デフォルトの名無しさん:2009/01/28(水) 21:57:17
>>677
ありりがとうございました。助かりました。
867デフォルトの名無しさん:2009/01/28(水) 22:03:00
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8767.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008
 [3.3] 言語:C言語
[4] 期限: 1月29日11時まで
[5] その他の制限:
 特にないですお願いします
868デフォルトの名無しさん:2009/01/28(水) 22:18:40
>>867
>>858 とかなり似た問題だなぁ。一応 ????? を埋める形式でやってみたよ。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *infp, *outfp;
int ch;
if (argc < 3) {
printf("There is no FILE NAME.\n");
exit(1);
}
if ((infp = fopen(argv[1], "r")) == NULL) {
printf("INPUT FILE OPEN error.\n");
} else {
if ((outfp = fopen(argv[2], "w")) == NULL) {
printf("OUTPUT FILE OPEN error.\n");
} else {
while ((ch = fgetc(infp)) != EOF) {
if ('a' <= ch && ch <= 'z') {
fputc(ch-('a'-'A'), outfp);
} else {
fputc(ch, outfp);
}
}
fclose(outfp);
}
fclose(infp);
}
return 0;
}
869教えてください。:2009/01/28(水) 22:18:41
問 題
あるクラスで英語のテストを実施しました。テスト結果を入力し、最高点と平均点を出力するプログラムを作成してください。
・ 入 力
生徒1人の点数が1行に記載されています。
点数は100点満点です。-1で入力終わりとします。
・ 出 力

最高点、平均点の順に画面の1行に出力します。
データの区切りは空白とします。


入力例

75
74
10
50
95
-1


出力例
95 60.8
870デフォルトの名無しさん:2009/01/28(水) 22:23:28
>>869
>>1の質問テンプレくらい読もうね。

#include <stdio.h>

int main(void)
{
int max = 0, sum = 0, count = 0, v;

while (scanf("%d", &v) == 1 && v != -1) {
sum += v;
count++;
if (v > max) {
max = v;
}
}
printf("%d %g\n", max, (double)sum/count);
return 0;
}
871840:2009/01/28(水) 22:23:41
>>847,>>860
無事に動きました。
ありがとうございます。
872デフォルトの名無しさん:2009/01/28(水) 22:23:49
873860:2009/01/28(水) 22:55:56
>>840>>871
ごめん。間違えた。
charsort()の3つめのアドバイスは必要ない。
替わりに、
else if(i==j){charsort(a,n0,i-1);charsort(a,i+1,nn);}
else{charsort(a,n0,j);charsort(a,i,nn);}
のそれぞれの{}括弧の中の最後にbreak;を追加するのが正解だった。
874デフォルトの名無しさん:2009/01/28(水) 22:57:34
>>861
>>853の言ってることはデタラメで、きちんととしたソースを入手していないだけだと見える。
875デフォルトの名無しさん:2009/01/28(水) 23:17:12
頂点が16!個あり、辺が頂点毎に4つ以下ある
というグラフの最短経路を求めるのは物理的に可能かな?
なんか上手い手ある?

>>845
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8770.txt
876840:2009/01/28(水) 23:18:08
>>873
実は>>847さんのを追加するだけで正解の出力結果がでました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8771.txt
一応、貼っておきまね。
勉強になる回答ありがとうございました。

>>874
学校から出されたプリントを丸写ししたので
きちんとしたソースを入手してないと見られれば
私のタイプミスでしょうか。
現に一部、ミスがあったので申し訳ないです。
877デフォルトの名無しさん:2009/01/28(水) 23:27:20
[1] C言語
[2] 問題    http://www.dotup.org/uploda/www.dotup.org4427.pdf.html
入力する数値  http://www.dotup.org/uploda/www.dotup.org4437.txt.html
[3] 環境
 [3.1]Windows
 [3.3]C
[4] 今週金曜朝六時
[5] if,for,while,関数,配列
よろしくお願いします
878デフォルトの名無しさん:2009/01/28(水) 23:37:46
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
10人の学生の視力を以下に示す。このデータを構造体に格納して、新規ファイルに構造体単位で書き込む。
  また、このファイルからデータを構造体単位で読み込み各学生について右目と左目の視力の平均を出力する。
学生番号 1 2 3 4 5 6 7 8 9 10
右目視力 1.5 1.0 1.2 0.6 0.8 0.1 0.5 1.5 2.0 1.0
左目視力 1.2 1.0 1.0 0.4 1.0 0.3 1.5 2.0 2.0 0.7
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C++
[4] 期限:1月29日
[5] その他の制限: 特になし

よろしくお願いします。
879デフォルトの名無しさん:2009/01/28(水) 23:51:49
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8772.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月29日午前8時
[5] その他の制限:なし
880デフォルトの名無しさん:2009/01/28(水) 23:55:03
>>876
タイプミスがなければ今回の混乱は起こりえなかった。
881デフォルトの名無しさん:2009/01/28(水) 23:56:34
>>880
タイプミスかどうかくらい、今からでもプリントを見れば確かめられるが、
けしてしない。
882デフォルトの名無しさん:2009/01/29(木) 00:00:33
タイプミスとかありがちなオチですたかよwww
883デフォルトの名無しさん:2009/01/29(木) 00:10:22
>>879
#include<stdio.h>
int main() {
int x, y, c;
for (y = 0; y < 16; y ++) {
for (x = 0; x < 6; x ++) {
c = 32 + x * 16 + y;
printf("%3d %c ", c, (char)c);
}
printf("\n");
}
return 0;
}
884デフォルトの名無しさん:2009/01/29(木) 01:37:40
>>875 
16! ≒2.1 x 10^13 = 21T
最短経路以前に、それだけのデータをどうやって持たせるつもりなんだ?
885デフォルトの名無しさん:2009/01/29(木) 02:06:00
Gでは
多いことに変わりないけど。重みも持たさないとだろうしね
886デフォルトの名無しさん:2009/01/29(木) 02:06:45
ごめんTだ><
161のミスってことはないだろうか
887588:2009/01/29(木) 02:34:52
>>754
残念だけどその方法しか思いつかんかった(´・ω・)
とりあえず VC++2008 Express Edition だったら正常にコンパイルできるよ。
役に立てなくてスマソ
888デフォルトの名無しさん:2009/01/29(木) 03:27:20
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  コマンドライン引数として入力したひとつの任意長文字列を文字型のポインタstrに格納する。
  この結果、格納された文字列をそのまま出力する。
[3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語:C
[4] 期限:2009年1月29日正午
[5] その他の制限:なし
889デフォルトの名無しさん:2009/01/29(木) 03:37:26
>>888
>文字列を文字型のポインタstrに格納する
とか、どう見ても課題の原文じゃないだろ・・・

int main(int argc,char**args)
890デフォルトの名無しさん:2009/01/29(木) 03:40:10
>>889
途中で送っちゃった

int main(int argc,char**args){
char*str=args[1];
printf("%s\n",str);
return 0;
}
とか?
891デフォルトの名無しさん:2009/01/29(木) 06:53:59
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
「○○の××は△△」の形式の知識を、キーボードからの入力により、収集する。
収集した知識を標準出力に印字する。収集した知識をファイルに保存する。
保存形式は以下の通り:
隣,芝生,青い
日本,首都,東京です・・・

「○○の××は△△」の形式の知識を、キーボードから入力すると、
すでに格納されている知識と一致したら、「yes」と答える。
一致しなかったら「no」と答え格納するかどうか尋ねる。

「リンゴ, 色, ?」のように尋ねると、「赤い」と答える。
「?」はどの位置でも使える。複数の「?」を使うこともできる。

ファイルから知識を読み込んで、すでに持っている知識と統合できるようにしよう。(同じ知識を二重登録しないようにしたい。)
「Mt. Fuji のheight は?」と尋ねられたら「知りません。でも、Mt. Everest のheight なら知っています。」のように答えられるようにしよう。

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

よろしくお願いします。
892デフォルトの名無しさん:2009/01/29(木) 07:47:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8773.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月29日午前11時
[5] その他の制限:なし
できるだけ簡単な関数でおねがいします
急ですが、よろしくお願いします
893デフォルトの名無しさん:2009/01/29(木) 11:03:17
>>892
#include <stdlib.h>
#include <stdio.h>
int main(void) {
char buf[32], *endptr;
long n;
while(1) {
printf("2進数を入力: ");
fgets(buf, 32, stdin);
buf[8] = '\0';
if (buf[0] == '\n') {
printf("エラー: 2進数を入力してください。\n");
continue;
}
break;
}
n = strtol(buf, &endptr, 2);
if (*endptr != '\0' && *endptr != '\n')
{
printf("エラー: 0でも1でもない文字が入力されました。\n");
return 1;
}
printf("入力された数値は10進数で%ldです。\n", n);
return 0;
}
894デフォルトの名無しさん:2009/01/29(木) 11:34:55
[1] 授業単元:C言語
[2] 問題文 乱数を発生させてビンゴゲームを作る。
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: DEV-c++
 [3.3] 言語:C
[4] 期限:2009年1月29日正午
[5] その他の制限:なし

誰か助けてください・・・
895デフォルトの名無しさん:2009/01/29(木) 11:41:02
>>894
ゲームの仕様がわからん
カードを乱数で作るのか
896デフォルトの名無しさん:2009/01/29(木) 11:44:28
>>894
1-75をダブらないように出力するだけか
それなら75個の配列に1-75を順番に入れてシャッフルすればいい
897デフォルトの名無しさん:2009/01/29(木) 12:12:43
カードも作って穴開けて、、、設問がシンプルすぎる
898デフォルトの名無しさん:2009/01/29(木) 12:33:05
>>889
本当に原文まる写しなんです
すみません、ありがとうございました。
899デフォルトの名無しさん:2009/01/29(木) 12:40:21
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8774.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008
 [3.3] 言語:C言語
[4] 期限: 1月29日21時まで
[5] その他の制限:
 これで最後ですがどうかよろしくお願いします。

900デフォルトの名無しさん:2009/01/29(木) 12:54:32
>>899
「課題 A の操作」はシフト演算なのか・・・?
901デフォルトの名無しさん:2009/01/29(木) 12:57:19
>>899
課題 C:xを2ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。

xの4倍にxを足して、xの5倍になる。
更にそれを2倍すると、xの10倍になる。
902デフォルトの名無しさん:2009/01/29(木) 13:16:47
>>891
君のその授業単元は何?
どう見てもプログラム内で品詞を定義してあげなくてはできない
例からみるとマルコフ連鎖かベイズアプローチも必須のようだし昔の人工知能の基盤に思えるのだが
903デフォルトの名無しさん:2009/01/29(木) 14:42:57
>>899
FILE*の引数の名前がfilenameって・・・
904デフォルトの名無しさん:2009/01/29(木) 14:56:19
>>754
getchをgetcharに書き換えればいいんじゃね?
#include <conio.h>を消して。
905デフォルトの名無しさん:2009/01/29(木) 15:27:48
906デフォルトの名無しさん:2009/01/29(木) 15:31:42
>>902
というほど深く考えなくてもいいんでないの?
それぞれで区切られた各要素には「の」「は」を含むことはできないという仕様制限で、
「の」「は」で淡々と切ればいい。
907デフォルトの名無しさん:2009/01/29(木) 15:47:25
908デフォルトの名無しさん:2009/01/29(木) 16:06:53
909デフォルトの名無しさん:2009/01/29(木) 16:10:12
>>906
>一致しなかったら「no」と答え格納するかどうか尋ねる。
尋ねるだけで格納するかどうか書かれていないとか、どう考えても素人の考えた文言

> [3.2] コンパイラ名とバージョン:Eclipse
死ねば良いのにと思う知識レベル
910デフォルトの名無しさん:2009/01/29(木) 16:18:10
911デフォルトの名無しさん:2009/01/29(木) 16:34:57
[1] 授業単元:C言語
[2] 問題文、以下の式の値を求めなさい

ack(x,y)=
if x=0 then ack(x,y)=y+1
if y=0 then ack(x,y)=ack((x-1),1)
else
ack(x,y)=ack((x-1),ack(x,(y-1)))

ではack(3,1)=?

尚、計算したくなければC言語で代替してもよい
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月29日午後10時
[5] その他の制限:なし
急ですみません。値だけでも構いません。
912デフォルトの名無しさん:2009/01/29(木) 16:38:14
>>909
格納しますか?(y/n):y
これで格納されなかったら噴飯ものだろ

コンパイラEclipseはどうしようもない
が、コンパイラに依存するようなコードを含まざるを得ないレベルを要求された課題でもないと思う

質問者を擁護しても何の得にもならんのだけどね。
913デフォルトの名無しさん:2009/01/29(木) 16:43:17
>>912
> これで格納されなかったら噴飯ものだろ
ズブの素人の発想

> コンパイラEclipseはどうしようもない
本人乙
914デフォルトの名無しさん:2009/01/29(木) 16:51:23
915デフォルトの名無しさん:2009/01/29(木) 16:57:57
Eclipseはコンパイラじゃないだろ…常識的に考えて…
916デフォルトの名無しさん:2009/01/29(木) 17:16:31
>>913
>> これで格納されなかったら噴飯ものだろ
>ズブの素人の発想
どゆこと?教えてください玄人さん。
917デフォルトの名無しさん:2009/01/29(木) 17:21:30
[1] 授業単元:C言語
[2] 問題文:

 次の非線形方程式をニュートン法を使って解くプログラムを作成せよ。
 1. x+cos(x) = 0
 2. x^3-x^2-x+1 = 0

なお、解を求めるだけでなく、以下の要素を含めること。
・解の収束の過程がわかるように途中経過を出力する。
・その結果を元に、収束する様子をグラフで示す。

[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C言語
[4] 期限:2009年1月30日20:00まで
[5] その他の制限:特になし
よろしくお願いします。
918デフォルトの名無しさん:2009/01/29(木) 17:23:26
>>875
本当に有り難う御座いました。
大変助かりました。
919デフォルトの名無しさん:2009/01/29(木) 17:33:30
>>916
格納するかどうか聞いといてって言われただけなのに、勝手に格納するなよ
920デフォルトの名無しさん:2009/01/29(木) 17:33:48
>>917
グラフ・・・?
921デフォルトの名無しさん:2009/01/29(木) 17:58:23
一致しなかったら一致しない旨「no」を出力した上で、
さらにそれを格納するか>>912のように尋ねて入力待ちじゃないのか?
勝手に格納するという言い分は訳が分からないし
格納すると指示をした上で格納されなかったら噴飯ものというのももっとも。

Eclipseは…
922デフォルトの名無しさん:2009/01/29(木) 18:06:06
>>921
オマエは書かれていないことを覚えこんじゃうタイプの脳だよ
923デフォルトの名無しさん:2009/01/29(木) 18:21:32
>>891です

問題は出されたままを書いたのですが言葉足らずで申し訳ありませんでした
付け足させていただきます

>>一致しなかったら「no」と答え格納するかどうか尋ねる。
これについては>>921さんの仰るように一致しない場合はその旨を「no」で示した上、
その知識を格納するか質問し、
「yes」と答えた場合はその知識を格納するということです

コンパイラについては何分知識不足なもので非常に申し訳ありません
Visual C++ 2008ということでお願いします

>>891
知識がないのでそれがどういった意味か理解できないのですが
そこまで高等な事では無いように思います



924デフォルトの名無しさん:2009/01/29(木) 18:28:50
顔真っ赤なのが一人いるな
925デフォルトの名無しさん:2009/01/29(木) 18:34:21
>>923
たとえば、
(りんご、色、赤い)と
(りんご、色、青い)の両方があったらどうするのかとか
926デフォルトの名無しさん:2009/01/29(木) 18:45:05
両方ある時点でおかしくね?
927デフォルトの名無しさん:2009/01/29(木) 18:55:35
>>913,919,922のことか。
確かに真っ赤だなw
928デフォルトの名無しさん:2009/01/29(木) 18:58:37
>>926
おかしいとしたら、そういう制約を作成しなくてはいけない。
何処にも書かれていないし、どうするのかも不明。
929デフォルトの名無しさん:2009/01/29(木) 19:03:35
いや、普通に考えたら
片方がある時点でもう片方の文章を打ち込んだ時点で
「no」→「格納(update)するか(y/n)」で返答待ちだろうから、両方あるのは変だろ。

でないと?を使った質問に対して返答できなくなるから、
論理的に考えたら>>925のデータセットはイリーガル。
930デフォルトの名無しさん:2009/01/29(木) 19:05:01
>>928
一致しなかったらnoと答え格納するかどうか尋ねるんだろ?
931デフォルトの名無しさん:2009/01/29(木) 19:18:04
想像しても仕方ないんじゃね
結局、どう扱うかを問題で定義してもらわないと
完全新規、一部既存にかかわらず、noしか出力されないんだし
932デフォルトの名無しさん:2009/01/29(木) 19:19:06
何だまだいたのか。
933デフォルトの名無しさん:2009/01/29(木) 19:19:07
>>930
おまえらなんかごちゃ混ぜになってるぞ。

yes/noで答えるのは、「○○の××は△△」で聞かれるときだ。
(りんご、色、赤い)が有る時に、「りんごの色は赤い」が入力されたなら、一致するから、yes、
「りんごの色は青い」が入力されたら、一致しないから、noで格納するかどうか尋ねる。
それとも「○○の××」が一意キーだという説明でもあっただろうか?

格納されたら
(りんご、色、赤い)と
(りんご、色、青い)の両方が有る。
「リンゴ, 色, ?」と尋ねられたらどうするんだ?
934デフォルトの名無しさん:2009/01/29(木) 19:21:44
>>929
イリーガルだと考えるかどうかさえ、説明されていないぞ。
935デフォルトの名無しさん:2009/01/29(木) 19:27:11
赤いと青いです
ぐらい出しとけばいいんでないの
936デフォルトの名無しさん:2009/01/29(木) 19:27:12
>>933
一致するものをすべて列挙すればいい
面倒だから 「で」 でつなぐ
リンゴの色は赤い で 青い

どうでもいいけど、怒るでしかし を思い出した
937デフォルトの名無しさん:2009/01/29(木) 19:39:02
?を複数使えることを考えると、マッチするやつ全部列挙するのがシンプルな気もするが
938デフォルトの名無しさん:2009/01/29(木) 19:40:35
>>933
「○○の××」に△△を格納するって意味だと思ったんだが
追加するのか。格納としか書いてないから深読みしすぎたか
939デフォルトの名無しさん:2009/01/29(木) 19:45:21
質問者がもっとスレにはりついて回答してくれると楽なんだけどな
940デフォルトの名無しさん:2009/01/29(木) 19:48:35
>>938
書いた本人のツモリまでは分からないけど・・・
941デフォルトの名無しさん:2009/01/29(木) 20:01:22
>>923
「Mt. Fuji のheight は?」と尋ねられたら「知りません。でも、Mt. Everest のheight なら知っています。」のように答えられるようにしよう。
これは高等な事ではないですか?
当たり前のように字句解析も行っているし立派なレコメンド機能じゃないの?

Mt. Fuji のheight は?と聞かれて
知りません。でもりんごは赤いのは知っています。
りんごの色は?
知りません。でもりんごは赤いのは知っています。

という返答がくるものでいいの?
942デフォルトの名無しさん:2009/01/29(木) 20:03:08
heightにマッチする知識を列挙すればいいんだよね。
943デフォルトの名無しさん:2009/01/29(木) 20:12:14
>>891です

問題の意図は>>933の方のおっしゃる通りです

?についてですが、本来は人間の受け答えのように
例えば(りんご、色、赤い)と(りんご、色、青い)と言う知識が格納されている場合、「赤と青があります」のように
柔軟な対応が出来るのが望ましいと言われましたが
今回はどうしてもできない場合は自分で
「単語が重複するような紛らわしい知識の入力には対応できない」
等の制約を自由に設けても構わないと言われました
944891:2009/01/29(木) 20:21:16
>>941
山について聞かれたら山に関連した知識を返すといった物ではなく、
知らない知識を聞かれたら何でもイイので
知っている知識を形式的に返せばイイみたいです
945デフォルトの名無しさん:2009/01/29(木) 20:26:00
人工無能っぽいものを作るわけだな
946デフォルトの名無しさん:2009/01/29(木) 20:27:54
>>941
> 当たり前のように字句解析も行っているし立派なレコメンド機能じゃないの?
「わたしのはははははのかがみだ」
947891:2009/01/29(木) 20:34:52
何度も付け足してすいません

あまりにもみんなの出来が悪いので、
?を使うところまでで良くなりました。

Mt.Fuji〜以降は無視でお願いします
948デフォルトの名無しさん:2009/01/29(木) 20:36:40
>>946
京都大学情報なんたらかんたらの論文にすもももももももものうちがあったな
Mecabだっけか?
949デフォルトの名無しさん:2009/01/29(木) 20:39:08
出来が悪くてすまんこまんこ
それで、?を使うところまでというのはどこまでのことですか?
950デフォルトの名無しさん:2009/01/29(木) 20:43:05
他の生徒のソースが全部ひどかったから合格基準を下げたってこと??
ずいぶんひどいな。みんな単位なしが普通じゃね?
951891:2009/01/29(木) 20:52:55
>>949
「りんご、色、?」と聞かれたら「赤い」と答え、
?はどの部分にも使え、複数の使用も可能と言うところまでです

>>950
そぅです
普通ならそぅいうものだと思いますが…
取り敢えず今回はそぅみたいです
952デフォルトの名無しさん:2009/01/29(木) 20:58:57
PC「詳しい 仕様 は知りません。でも、おまえ の 知識 は ヘボい」

・3・;
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

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

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

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

前スレ
C/C++の宿題を片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232001038/
954デフォルトの名無しさん:2009/01/29(木) 21:31:19
>>919
2の奴解二つあるけど,両方求めなくて良いなら.

#include<stdio.h>
#include<math.h>
double func(double x){
return cos(x)+x;
}
double dx(double x){
return -func(x)/(-sin(x)+1.0);
}
/* 2:
double func(double x){
return pow(x,3.0)-pow(x,2.0)-pow(x,1.0)+1.0;
}
double dx(double x){
return -func(x)/(3.0*pow(x,2.0)-2.0*x-1.0);
}
*/
int main(void){
double x=0.0;
while(1){
printf("%lf\t%E\n",x,func(x));
if(fabs(func(x))<1.0e-15)break;
x+=dx(x);
}
return 0;
}
955954:2009/01/29(木) 21:32:55
>>917だった…
956デフォルトの名無しさん:2009/01/29(木) 21:40:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8781.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:C++Compiler / Turbo Debugger
 [3.3] 言語:C
[4] 期限:2009年1月30日
[5] その他の制限:何処を修正すればいいか教えてください
間違いがfor文の中にあると思うのですが・・・
957デフォルトの名無しさん:2009/01/29(木) 21:44:39
>>956
heikinが配列じゃない
958デフォルトの名無しさん:2009/01/29(木) 21:48:32
12,13c12,13
< int kokug,suug,eig,goukei,kyoukag,n;
< float kyoukagh,heikin,kyoukah,kyoukahg;
---
> int kokug,suug,eig,kyoukag,n;
> float kyoukagh,kyoukah,kyoukahg;
17a18,19
> int goukei[5];
> float heikin[5];
959デフォルトの名無しさん:2009/01/29(木) 21:50:02
kyoukahg=kyoukag/5.0;/*教科平均の合計*/

この左辺がkyoukaghなのかなあとも思う。
960デフォルトの名無しさん:2009/01/29(木) 22:15:37
>>877
めんどくさくなってゴチャゴチャしてるが
結果は出る
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8782.c
961デフォルトの名無しさん:2009/01/29(木) 23:05:33
次スレは重複を消化しませんか?
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/
962デフォルトの名無しさん:2009/01/29(木) 23:28:07
http://www1.axfc.net/uploader/File/so/17622

http://pc11.2ch.net/test/read.cgi/tech/1232947892/1-100

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):ttp://www1.axfc.net/uploader/File/so/17622
ポーカーのプログラムなんですが、手札をチェンジしたときに、変更後の
手札を表示できるようにしてこいと言われたのですが、自分では一行に
そのようになりませんでした。 どなたか教えてもらえないでしょうか?
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2009年2月5日
[5] その他の制限:特に無し
よろしくお願いします。
963デフォルトの名無しさん:2009/01/29(木) 23:29:08
すいません
http://pc11.2ch.net/test/read.cgi/tech/1232947892/1-100
に書き込んだんですが>>2でここに誘導されていることに気付き
書き込ませてもらいました。
964デフォルトの名無しさん:2009/01/30(金) 00:32:41
>>962
マルチ死ね
965デフォルトの名無しさん:2009/01/30(金) 01:06:33
>>953
重複スレがあるらしいけど、どうしよう?

C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/
966439:2009/01/30(金) 01:16:34
>>439で書きこんだ者です
>>481で回答をいただいたんですけど、途中までしか動作しません
(ビルドは問題なくできます)

ファイル読み込みから読み込んだ文字を表示、までは動くのですが、
その後のデータ格納がうまくいかないみたいです・・・
どなたか回答いただけると助かります
967デフォルトの名無しさん:2009/01/30(金) 01:23:41
968デフォルトの名無しさん:2009/01/30(金) 01:35:01
>>966
どううまくいかないの?
ファイル内の文字は出力されて、その後の出力がないという事?
だとしたら無限ループに入ってるか、一般保護違反のどっちかじゃない?

cをint型にしたらどうかな。
969デフォルトの名無しさん:2009/01/30(金) 01:39:10
>>966
sscanf(str, "%7s%10s%2d%2d", data[i].number, data[i].str, &data[i].score[0], &data[i].score[1]);
を修正する?
970デフォルトの名無しさん:2009/01/30(金) 01:42:39
>>967
おぉ! この通りです。
ありがとうございます。

自分のソースと見比べて何がダメだったのか勉強してみます
971439:2009/01/30(金) 02:07:01
>>968
そのとおりです。ファイル内の文字の出力を終えたところで強制終了します。
正確には99行目まで読み込んで停止します。
struct data data[100]をdata[101]にしてみたら100行目まで読み込んだけどやっぱりそこで停止。

cをint型に…やってみたんですが結果は変化なしでした

>>969
多分そこで引っかかってるんだと思うんですけど…
式はあってると思うんで自分ではもう何がなんだかさっぱりですorz
972デフォルトの名無しさん:2009/01/30(金) 02:13:44
>>971
sscanf(str, "%7s,%10s,%2d,%2d", data[i].number, data[i].str, &data[i].score[0], &data[i].score[1]);
じゃ、ダメかね?
973デフォルトの名無しさん:2009/01/30(金) 02:28:56
内容:
[1] 授業単元:C言語
[2] 問題文(含コード&リンク)
課題:次のプログラムを作成し,2つのファイルを提出せよ.
1 0〜99 の100 個の数字から異なる30 個を選び,配列COM[30] に
格納せよ.(乱数使用:学籍番号で初期化)
2 次に異なる6 個の数字を入力し,順番に配列MAN[6] に格納せよ.
3 ソート方法A を用いて配列COM,MAN の要素をそれぞれ小さい
順に並べよ.
4 配列COM に含まれる配列MAN の数字の個数count を求めよ.
5 最後に,配列COM,MAN の全要素,変数count を
result-1g06a9999.txt に書き込め.
6 出力形式は自由とするが,main 関数内は10 行以内にすること.

【ソート方法A】
1 作業用の配列として、要素が100 個のint 型の配列Work を用意
する.
2 配列Work の各要素は、0 に初期化する.
3 ソートしたい配列x の要素を順番に読んで、Work[ その値] を+1
する.
4 作業3を全てのx の要素について行った後、Work の要素を小さい
ほうから順番に読んで、Work の値が0 でなければ、x に書き戻し
ます。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2009年1月31日
[5] その他の制限:特に無し
よろしくお願いします。
974デフォルトの名無しさん:2009/01/30(金) 02:54:53
>>973
> (乱数使用:学籍番号で初期化)
の意味が分からん。srand()に渡す種?
975デフォルトの名無しさん:2009/01/30(金) 03:02:42
976デフォルトの名無しさん:2009/01/30(金) 03:06:07
10行わろたw
977デフォルトの名無しさん:2009/01/30(金) 03:25:43
>>973
> 1 0〜99 の100 個の数字
> 【ソート方法A】
> 2 配列Work の各要素は、0 に初期化する.
> 4 作業3を(中略)Work の値が0 でなければ
30個のCOMには0が入る可能性もあるわけでしょ?
その0は無視しちゃうわけ?
978デフォルトの名無しさん:2009/01/30(金) 03:27:52
>>977
COMが0ならWork[0]が1になるだけ
979デフォルトの名無しさん:2009/01/30(金) 03:29:22
>>978
なるほど。けど、面倒なソートしとるなぁ・・・
980デフォルトの名無しさん:2009/01/30(金) 03:32:59
>>979
バケットソートってヤツでしょ。
981デフォルトの名無しさん:2009/01/30(金) 03:35:15
メモリなどの条件さえ許せばかなり速いソートだよ。
アルゴリズム的にも他のソートよりもかなり単純だし。
982デフォルトの名無しさん:2009/01/30(金) 03:44:48
いや、+1にしたらまた-1にしなきゃならなくね?
983デフォルトの名無しさん:2009/01/30(金) 03:47:07
>>982
クリアはするけど、-1とかじゃないんじゃね?
984デフォルトの名無しさん:2009/01/30(金) 03:48:36
って、自分が勘違いしてた、すまそw
985デフォルトの名無しさん:2009/01/30(金) 04:07:21
MANに入れた値が99より大きかった場合、Work[100]じゃ無理ぽ?
986デフォルトの名無しさん:2009/01/30(金) 04:26:09
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8786.c
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 6時まで
[5] その他の制限:

よろしくお願いします。
987デフォルトの名無しさん:2009/01/30(金) 05:18:47
なめんな
988デフォルトの名無しさん:2009/01/30(金) 05:40:59
ずいぶん期間が短い。おやすみなさい。
989デフォルトの名無しさん:2009/01/30(金) 05:45:56
990デフォルトの名無しさん:2009/01/30(金) 06:21:11
>>955
ありがとうございました。
991デフォルトの名無しさん:2009/01/30(金) 07:51:26
次スレ
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/
992デフォルトの名無しさん:2009/01/30(金) 11:15:24
>>989
ありがとうございました!
993デフォルトの名無しさん:2009/01/30(金) 14:02:06
埋め
994デフォルトの名無しさん:2009/01/30(金) 14:02:34
生め
995デフォルトの名無しさん:2009/01/30(金) 14:09:01
生き埋め
996デフォルトの名無しさん:2009/01/30(金) 14:10:02
干し梅
997デフォルトの名無しさん:2009/01/30(金) 14:13:35
梅吉
998デフォルトの名無しさん:2009/01/30(金) 14:18:03
999デフォルトの名無しさん:2009/01/30(金) 14:20:36
1000デフォルトの名無しさん:2009/01/30(金) 14:21:42
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。