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

このエントリーをはてなブックマークに追加
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++の宿題片付けます 127代目
http://pc12.2ch.net/test/read.cgi/tech/1244449887/
2デフォルトの名無しさん:2009/06/25(木) 03:15:37
下痢便はすごく苦い
3デフォルトの名無しさん:2009/06/25(木) 03:18:57
メールのことがかかれてないじょー
4デフォルトの名無しさん:2009/06/25(木) 03:19:47
メールなんちゃらは他所でやれ
5デフォルトの名無しさん:2009/06/25(木) 11:36:59
すみません。計算機を作る問題でリストのところでコンパイルエラーについて質問です。
ソースのうち原因となる可能性のある部分を書きだすと
07:struct queuen{
08: double data;
09: struct queuen *next;
10:};
11:
12:struct queuen *sp = NULL;
13:
14:struct queuep{
15: struct queuen *head;//先頭
16: struct queuen *tail;//最後尾
17:};
18:
19:struct queuep *queuen_pointer;
20:
21:queuen_pointer->head = sp;
22:queuen_pointer->tail = sp;

この状態でコンパイルすると
c:21: error: parse error before '->' token
というエラーが出ます。
ちなみに左に振ってある数字は行数です。
21行目のエラーらしいですが、上のソースの部分でまずい所を教えてください。
6前スレ667:2009/06/25(木) 13:37:15
前スレ
>>704
有難うございました!
7 ◆/91kCCQXBo :2009/06/25(木) 13:53:33
>>005 まだ関数の外側にいる。http://effy.ldw.jp/c/calc1.html
21: queuen_pointer->head = sp; // c:21: error: parse error before '->' token
22: queuen_pointer->tail = sp;
23: main() {
24: }
8デフォルトの名無しさん:2009/06/25(木) 13:57:09
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9544.cのかわりに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9546.cとすると、どのような不都合が生じるか説明せよ

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9544.cのかわりに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9545.cとすると、どのような不都合が生じるか説明せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2009年07月01日18:00まで
[5] その他の制限:特になし

最後の方が違います
どう変わってくるのか教えて頂きたいです
9前スレ884:2009/06/25(木) 14:04:10
前スレ982さんありがとうございました!
あまりの無駄のなさに普段の完成度との違いに怪しまれそうです

質問なのですが、sturcut、Node*、sentinelはそれぞれどういう意味をもっているのでしょうか
多分まだ習っていなく、ググってももう一つ良く分からなかったので
良ければ教えていただけないでしょうか
10 ◆/91kCCQXBo :2009/06/25(木) 14:22:38
>>008
while ((n = operation_status) >= 0) {
  printf("Condition %s.\n", status_name_table[n]);
  sleep(1);
}
9545: sleep関数の1秒以内にデクリメントが2回走った場合、ステータスが0から-2になる事があり、配列のインデックスが0を超える。
while ((n = operation_status) != -1) {
  printf("Condition %s.\n", status_name_table[n]);
  sleep(1);
}
9546: printf関数の実行前にデクリメントが走った場合、ステータスが0から-1になる事があり、配列のインデックスが0を超える。
while (operation_status >= 0) {
  printf("Condition %s.\n", status_name_table[operation_status]);
  sleep(1);
}
11デフォルトの名無しさん:2009/06/25(木) 14:33:06
まだ習ってないのかさては
12デフォルトの名無しさん:2009/06/25(木) 15:03:19
sturcut Nodeというものがあるらしいですが、多分まだ習っていません
13デフォルトの名無しさん:2009/06/25(木) 15:39:16
>>9
struct
   構造体。C++ではclassとほぼ同じもの。ただし全メンバがデフォルトでpublicである。
node
   ノード。データを連結して使うリスト構造の場合、1個1個のデータを「ノード」と呼ぶことが多い。
sentinel
  センチネル、日本語で番兵。
  「配列やリストの端っこに置いとくと、全体のスキャン処理とかが楽になる」
  などの目的で使われる、特別な値やノード。
14デフォルトの名無しさん:2009/06/25(木) 15:40:47
15デフォルトの名無しさん:2009/06/25(木) 16:02:09
予約語だな
16前スレ934:2009/06/25(木) 16:25:15
前スレ>>939さんありがとうございました!助かりました!
17デフォルトの名無しさん:2009/06/25(木) 16:45:25
前スレ>>998->>1000
>>14
ありがとうございます!
本当に助かりました。
18デフォルトの名無しさん:2009/06/25(木) 17:15:21
>>9
このあたりかな。「番兵付きの双方向リスト」とか
ttp://akademeia.info/index.php?%C1%D0%CA%FD%B8%FE%A5%EA%A5%B9%A5%C8
19デフォルトの名無しさん:2009/06/25(木) 17:28:34

[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
if文を使って、月数に応じてコメントを表示するプログラム(1月ならばwinter、3月ならspringといった具合に)を作る。
月は1月〜12月までなので、13月以上の数値を打ち込んだ場合はerrorと表示させること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4…?
 [3.3] 言語:C
[4] 期限: 2009年6月25日18:00まで…ぶっちゃけ今すぐ!!
[5] その他の制限:全くの初心者です。気づいたら履修登録してもうたー。
20デフォルトの名無しさん:2009/06/25(木) 17:30:54
あと30分かよ!
21デフォルトの名無しさん:2009/06/25(木) 17:32:50
は、はぃ!!あと30分切ってます…!!!@@@@@@
22デフォルトの名無しさん:2009/06/25(木) 17:39:09
>>19
#include <stdio.h>
int main(void) {
int m;
printf("何月?"); scanf("%d",&m);
if (m <= 0 || 13 <= m) printf("error");
else if (m == 1) printf("初っ端から飛ばすと後でばてる。2月から本気を出す");
else if (m == 2) printf("まだまだ寒い。これではやる気が出ない。3月から本気出す");
else if (m == 3) printf("年度の終わりでタイミングが悪い。4月から本気を出す");
else if (m == 4) printf("季節の変わり目は体調を崩しやすい。5月から本気を出す");
else if (m == 5) printf("区切りの良い4月を逃してしまった。6月から本気を出す");
else if (m == 6) printf("梅雨で気分が落ち込む。梅雨明けの7月から本気を出す");
else if (m == 7) printf("これからどんどん気温が上昇していく。体力温存の為8月から本気を出す");
else if (m == 8) printf("暑すぎて気力がそがれる。9月から本気を出す");
else if (m == 9) printf("休みボケが抜けない。無理しても効果が無いので10月から本気を出す");
else if (m == 10) printf("中途半端な時期。ここは雌伏の時。11月から本気を出す");
else if (m == 11) printf("急に冷えてきた。こういう時こそ無理は禁物。12月から本気を出す");
else if (m == 12) printf("もう今年は終わり。今年はチャンスが無かった。来年から本気出す ");
printf("\n");
return 0;
}
23 ◆jaDL7.sW26 :2009/06/25(木) 17:41:05
アリガトウゴザイマス!!!!!
24デフォルトの名無しさん:2009/06/25(木) 17:44:59
>>22
GJ
25◇jaDL7.sW26:2009/06/25(木) 17:46:11
// gcc ならincludeなくても通った。
main(){
  int month;
  printf("月を入力してください(1〜12):");
  scanf("%d", &month);
  switch(month){
  case 12: case 1: case 2:
    puts("Winter in Japan"); break;
  case 3: case 4: case 5:
    puts("Spring in Japan"); break;
  case 6: case 7: case 8:
    puts("Summer in Japan"); break;
  case 9: case 10: case 11:
    puts("Fall in Japan"); break;
  default:
    puts("Error Month number!"); break;
  }
}
26デフォルトの名無しさん:2009/06/25(木) 17:50:44
>>19
UNIX板で聞いといてWindowsかよ。
27デフォルトの名無しさん:2009/06/25(木) 19:59:17
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9549.txt
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C 
[4] 期限:6月28日まで
[5] その他の制限: お願いします
28デフォルトの名無しさん:2009/06/25(木) 20:10:54
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9550.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月2日
[5] その他の制限: すべてファイルを使う。
29デフォルトの名無しさん:2009/06/25(木) 20:21:35
>>28
入力やら出力やら書いてある部分の意味がわからんのは俺だけか?
30デフォルトの名無しさん:2009/06/25(木) 20:40:55
>>22
Gjsぐるw
31デフォルトの名無しさん:2009/06/25(木) 21:13:03
>>29
課題2だと
入力ファイル名が diff.in で、その内容が
1,2
1,0
0,1
1,0
-1,-1

課題で作ったバイナリ名を"trace"とする。コマンドラインからこのプログラムを実行すると、
まず入力ファイル名を入力(ここではdiff.inとする)。
そのあとに出力ファイル名を入力(ここではpoint.outとする)。

trace実行後の出力ファイル(point.out)の内容は
1,2
2,0
2,1
3,1
2,0

となる。
ってことでしょ。たぶん。
32デフォルトの名無しさん:2009/06/25(木) 21:28:19
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9551.txt
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: win avr
 [3.3] 言語: C
[4] 期限: 6月28日まで
[5] その他の制限: 先週からavr studio4 に変わったのでほとんど理解してません。
33デフォルトの名無しさん:2009/06/25(木) 21:37:04
>>28 課題1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAMELEN 64
#define BUFFSIZE 32
int main(void)
{
FILE *fp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
double x = 0;
int n = 0;
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
fp = fopen(filename, "r");
while (fgets(buff, BUFFSIZE, fp)) { x += strtod(buff, NULL); n++; }
fclose(fp);
printf("%.1lf\n", x / n);
return 0;
}

34デフォルトの名無しさん:2009/06/25(木) 21:38:05
>>28 課題2

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAMELEN 64
#define BUFFSIZE 32

int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
int x = 0, y = 0;
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ifp = fopen(filename, "r");
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ofp = fopen(filename, "w");

while (fgets(buff, BUFFSIZE, ifp)) {
x += atoi(strtok(buff, ","));
y += atoi(strtok(NULL, ","));
fprintf(ofp, "%d,%d\n", x, y);
}
fclose(ifp);
fclose(ofp);
return 0;
}
35デフォルトの名無しさん:2009/06/25(木) 21:48:24
>>28 課題3

#include <stdio.h>
#define FILENAMELEN 64
#define NAMELEN 31
int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char name[NAMELEN];
double height, weight, BMI;
scanf("%s", filename); ifp = fopen(filename, "r");
scanf("%s", filename); ofp = fopen(filename, "w");
while (fscanf(ifp, "%s%lf%lf", name, &height, &weight) != EOF) {
BMI = weight / height / height * 10000;
if (BMI < 18.5 || BMI >= 25.0) fprintf(ofp, "%s\n", name);
}
fclose(ifp); fclose(ofp);
return 0;
}
36デフォルトの名無しさん:2009/06/25(木) 21:56:36
>>32
Aの図?の意味がわからんのでもしかたら外してるかも
#include <stdio.h>
int main()
{
int i;
char c;
char* p;
char* name = "tatsuya";
printf("*** @ ***\n");
for (c='0'; c<='9'; c++)
{
printf("'%c'=%d\n", c, c);
}
printf("*** A ***\n");
for (c='0'; c<='9'; c++)
{
printf("'%c'=%x\n", c, c);
}
printf("*** B ***\n");
for (i=0; name[i]; i++)
{
printf("'%c'=%x\n", name[i], name[i]);
}
printf("*** C ***\n");
for (p=name; *p; p++)
{
printf("'%c'=%x\n", *p, *p);
}
return 0;
}
37デフォルトの名無しさん:2009/06/25(木) 21:57:43
>>28 課題4

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define FILENAMELEN 64
#define BUFFSIZE 128

int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ifp = fopen(filename, "r");
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ofp = fopen(filename, "w");
while (fgets(buff, BUFFSIZE, ifp)) {
int i;
for (i = 0; buff[i]; ++i) if (isdigit(buff[i])) buff[i] = '*';
fprintf(ofp, buff);
}
fclose(ifp); fclose(ofp);
return 0;
}
38デフォルトの名無しさん:2009/06/25(木) 22:04:30
>>32
もしかして0から9って普通に表示じゃなくてAみたいな数字の表示方法があったりしない?
39デフォルトの名無しさん:2009/06/25(木) 22:08:19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):do-while文を使って、入力させた数値を3で割った余りを表示することを続ける。
もし、3の倍数が入力されたときは"3の倍数"と表示して終了する。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年06月28日
[5] その他の制限:まだまだ習い始めたところなのでif、swichくらいしか習っていません。
40デフォルトの名無しさん:2009/06/25(木) 22:14:36
>>32は7セグメントLEDの組み込み系の話だと思う。
回路にビットパターン流し込んで対応するLEDをつけるって課題だとおもう。
AVRって環境を使うみたいだけど、ここのスレに使ったことがある人間がいるかはかなり疑問。
41デフォルトの名無しさん:2009/06/25(木) 22:15:50
>>39
未コンパイルコード

#include <stdio.h>

int main( void )
{
int inp=0,mod=0;

do{
printf("->");
scanf("%d",&inp);
getchar();

mod = inp%3;

if( mod )
{
printf("%d\n");
}
else
{
printf("3の倍数です。\n");
}

}while(mod);

return 0;
}
42デフォルトの名無しさん:2009/06/25(木) 22:16:16
>>38
その通りです、説明しずらいので、配布されたプリントの画像を見てもらえたらありがたいです。
DLkye 0000
http://www1.axfc.net/uploader/Sc/so/12103
43デフォルトの名無しさん:2009/06/25(木) 22:20:17
>>39
#include <stdio.h>
int main()
{
int ret, num, rem;
printf("数値を入力してください\n");
while (true)
{
ret = scanf("%d", &num);
if (ret!=1)
{
printf("不正な入力です\n処理を中止しますn");
break;
}
printf("%d: ", num);

rem = num % 3;
if (rem==0)
{
printf("3の倍数です\n");
break;
}
else
{
printf("3で割ったあまりは%dです\nもう一度入力してください", rem);
}
}
return 0;
}
44デフォルトの名無しさん:2009/06/25(木) 22:22:06
>>41
レスありがとうございます。出来ました。
45デフォルトの名無しさん:2009/06/25(木) 22:24:52
>>14
前スレの内容について、一辺が3の八角形は
  ***
 *   *
*     *
*     *
*     *
 *   *
  ***
こうではないだろうか。

質問者が納得してるからこうではなかったんだろうけど。。
4639:2009/06/25(木) 22:28:39
すみませんこれも出来ませんでした。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):入力した数を2の何乗より大きいかを求めるプログラム。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年06月28日
[5] その他の制限:まだまだ習い始めたところなのでif、swichくらいしか習っていません。
たぶんdo-while文を使うんだと思います。
47デフォルトの名無しさん:2009/06/25(木) 22:35:06
>>46
math.h使って
(int)(log(d)/log(2.0))
d: 入力した数
48デフォルトの名無しさん:2009/06/25(木) 22:40:23
>>46
よくわからないが 2^k<x の条件でkの最大でいいのかな
#include <stdio.h>
int main()
{
int x;
int n = 1, k = 0;
scanf("%d",&x);
while(n < x){ n *= 2; k++;}
printf("%d\n", k-1);
return 0;
}
49 ◆/91kCCQXBo :2009/06/25(木) 22:42:24
>>045 C:\a.exe >a.txt line 255-261* を見れば、
>>014(9548) OK
>>前1000 は間違い
50デフォルトの名無しさん:2009/06/25(木) 22:43:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,そ
の合計と平均を表示するプログラムを作成せよ。
整数は何個ですか: 6
No.1 : 65
No.2 : 23
No.3 : 47
No.4 : 9
No.5 : 153
No.6 : 777
合計値: 1074
平均値: 179.00
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月02日
[5] その他の制限:どうかよろしくお願いします。
51デフォルトの名無しさん:2009/06/25(木) 22:45:37
>>46
せっかく作ったから便乗アップ。動作は保障しない。

#include <stdio.h>

int main(){
    unsigned int N,S;

    printf("Input Number:");
    scanf("%d",&N);
    S=0;
    do{
    }while(N>(1<<S++));
    S--;

    printf("%d is upper then 2^%d ->%d!!\n",N,S-1,1<<(S-1));

    return 0;
}
52デフォルトの名無しさん:2009/06/25(木) 22:48:59
>>50
#include <stdio.h>

int main(void)
{
int i, n, x = 0;
printf("整数は何個ですか: "); scanf("%d", &n);
for (i = 0; i < n; ++i) {
int t;
printf("No.%d : ", i + 1); scanf("%d", &t);
x += t;
}
printf("合計値: %d\n平均値: %.2f\n", x, (double)x / n);
return 0;
}
53デフォルトの名無しさん:2009/06/25(木) 22:50:47
>>31
> trace実行後の出力ファイル(point.out)の内容は
> 1,2
> 2,0
ここは2,2じゃないのかなあと、ガウス平面というものを知らずにレス
54デフォルトの名無しさん:2009/06/25(木) 22:55:14
>>49
うpされたコードを見てなかったんだ。
スマソ
55デフォルトの名無しさん:2009/06/25(木) 22:58:54
>>42
なんかよくわからんのだが、
「環境はwin avr, avr studio4です」で通じる話なのか?
どんなデバイス使ってるとかわからんと手の出しようがないような
わかる人にはわかるのかね

動作させるってのは実際にデバイス動かして
表示させるってのはデバイス上の液晶画面か何かに表示させるってことなんだよな?
56デフォルトの名無しさん:2009/06/25(木) 23:02:53
>>37
% を含む文字列を出力できない
57デフォルトの名無しさん:2009/06/25(木) 23:08:30
>>55
自分も正直何をやっているのかわかっていません・・・。
デバイスの関してはatmega88pというのを使います。
液晶画面に自分の名前のアルファベットを表示させるのですが、デバイスやらUSBライターなどは教授が持っているので、自分で確認することが出来ません。
58 ◆/91kCCQXBo :2009/06/25(木) 23:09:43
>>035 BMI 出力が標準出力でない。
#include <stdio.h>
#define FILENAMELEN 64
#define NAMELEN 31
int main(void)
{
  FILE *ifp;
  char filename[FILENAMELEN];
  char name[NAMELEN];
  double height, weight, BMI;

  fgets(filename, FILENAMELEN, stdin); filename[strlen(filename)-1] = '\0';
  ifp = fopen(filename, "r"); if(ifp == NULL) return 1;
  while (fscanf(ifp, "%30s%lf%lf", name, &height, &weight) != EOF) {
    BMI = weight / height / height * 10000;
    if (BMI < 18.5 || BMI >= 25.0)
      printf("%s\n", name);
  }
  fclose(ifp);
  return 0;
}
59デフォルトの名無しさん:2009/06/25(木) 23:19:34
>>56
あるある
60デフォルトの名無しさん:2009/06/25(木) 23:20:46
>>37
strchr が NULL を返したらどうするんだ
61デフォルトの名無しさん:2009/06/25(木) 23:23:52
>>57
ぶっちゃけ、エスパーじゃないと無理。
一般人は、回路図とデバイスの仕様が無いと書きようがない。
62デフォルトの名無しさん:2009/06/25(木) 23:27:13
>>57
そうですか、わかりました。ありがとうございます。
6361:2009/06/25(木) 23:45:35
>>57
7セグメントディスプレイは何個ついてるの?
問題文からは3つかな?
64デフォルトの名無しさん:2009/06/26(金) 00:01:19
>>63
確か三つだったと思います。
6561:2009/06/26(金) 00:19:45
>>64
7セグメントディスプレイにA(01110111)を表示する時の様に、
0から9の数字を出すパターンはできてるんだよね?

それを3つのポート(PORT-B,PORT-C,PORT-D)に喰わせれば良いんじゃないか?
例えば、PORT-Bが1の位、PORT-Cが10の位、PORT-Dが100の位の
7セグメントディスプレイと繋がっていると仮定すると、

char segdat[10] = { {0を表示するパターン}, ・・・, {9を表示するパターン} };
int i;
for ( i = 0; i < 256; i++ ) {
 int d100 = i / 100;
 int d10 = ( i - d100 ) / 10;
int d1 = i % 10;

 PORTD = segdat[ d100 ];
 PORTC = segdat[ d10 ];
 PORTB = segdat[ d1 ];
}

これだけじゃね?
66デフォルトの名無しさん:2009/06/26(金) 00:25:04
>>65
今かやってみます。ありがとうございます。
6761:2009/06/26(金) 00:30:36
>>65
訂正。
×int d10 = ( i - d100 ) / 10;

○int d10 = ( i % 100 ) / 10;
68デフォルトの名無しさん:2009/06/26(金) 01:40:23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
じゃんげんプログラムを作成せよ。次の関数を用いること。
get_hand_player()
print_hand()
judge()

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 六月二十九日
[5] その他の制限: 関数まで。お願いします。
69デフォルトの名無しさん:2009/06/26(金) 02:17:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
ほとんど質問に近いのですが、
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9552.txt
のようなプログラムを人に聞きながら作ったのですが、
/*0.5を足してから*/
で示した文、kinri += 0.5;
ってどういう意味があるのでしょうか?
試しに抜いてみたのですが結果は変わりませんでした。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 関数まで。お願いします
70デフォルトの名無しさん:2009/06/26(金) 02:27:23
>>69
恐らく四捨五入をさせているものと思われる。
int型にすると小数点以下全て切り捨てだから、
0.5を足してあげると丁度四捨五入になるかと。
71デフォルトの名無しさん:2009/06/26(金) 02:40:00
>>70
ああ、なるほど・・・そういうことか。
ありがと!
72デフォルトの名無しさん:2009/06/26(金) 03:08:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,二辺の長さと個数を読み込んで,読み込んだ個数だけ横長の長方形を表示
するプログラムを作成せよ.
一辺(その1) : 3
一辺(その2) : 5
個数: 4
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月01日
[5] その他の制限:特になし
7368:2009/06/26(金) 03:29:04
>>68
の回答、
前スレにあった。どうも同じ大学の人がいるらしい。
ありがとー。
74デフォルトの名無しさん:2009/06/26(金) 04:31:28
>>72
#include<stdio.h>

int main(void){
int width=4, height=3, num=2, i, j, k;

printf("一辺(その1) : ");
scanf("%d", &height);
printf("一辺(その2) : ");
scanf("%d", &width);
printf("個数: ");
scanf("%d", &num);

for(i=0;i<height;i++){
for(j=0;j<num;j++){
if(j) printf(" ");
for(k=0;k<width;k++) printf("*");
}
printf("\n");
}
return 0;
}
75デフォルトの名無しさん:2009/06/26(金) 04:49:01
[1] 授業単元: C
[2] 問題文(含コード&リンク):
キーボードから入力された1以上の整数nについて、次の例に示すように行番号と*を表示するプログラムを作成せよ
。また、0や負の数が入力された場合はプログラムが終了するようにせよ。
表示結果の例
正の整数:6
1******
2 *****
3 ****
4 ***
5 **
6 *

[3] 環境
[3.1]linux
[3.2] gcc
[3.3]C
[4]6月29日
[5]繰り返しの課題なので繰り返しまででお願いします。
スペースをどういれたらいいかわからない・・・。
76デフォルトの名無しさん:2009/06/26(金) 04:52:10
>>75
ごめん、問題文ミス。
1*****
2 ****
3  ***
4   **
5    *
77デフォルトの名無しさん:2009/06/26(金) 05:11:14
>>75
#include<stdio.h>

int main(void){
int a=1,b,n,i,j,k;
printf("n…\n");
scanf("%d",&n);
if(n<=0){
return 0;
}
b=n;
for(i=1;i<=n;i++){
for(j=b;j<=n;j++){
printf(" ");
}
for(k=a;k<=n;k++){
printf("*");
if(k==n)printf("\n");
}
b--;
a++;
}
return 0;
}
78デフォルトの名無しさん:2009/06/26(金) 06:09:38
前スレのプログラムへの質問なんですが、
前スレ675氏のプログラム、
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9553.txt
を実行すると、
Usage: exefile 10000
とだけ出力されて終了してしまうのですが、
これは自分の転記ミスなんでしょうか?

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
79デフォルトの名無しさん:2009/06/26(金) 06:28:49
>>77
ありがとう。
せっかく作ってくれた所悪い、
問題文のとおり行番号がいるんだ。
80デフォルトの名無しさん:2009/06/26(金) 06:34:11
>>79
#include<stdio.h>

int main(void){
int a=1,b,n,i,j,k;
printf("n…");
scanf("%d",&n);
if(n<=0){
return 0;
}
b=n;
for(i=1;i<=n;i++){
printf("%d",i);
for(j=b;j<=n;j++){
printf(" ");
}
for(k=a;k<=n;k++){
printf("*");
if(k==n)printf("\n");
}
b--;
a++;
}
return 0;
}
81デフォルトの名無しさん:2009/06/26(金) 07:13:02
>>78
17s/argc != 2/argc != 3/
82前675:2009/06/26(金) 10:16:03
>>78 やっちまったみたい、17行目と18行目を、次の2行に置き換えてみて、教えて。
//if(argc != 2) {puts("Usage: exefile 10000"); return 1;}
//max_days = atoi(argv[1]);
if(argc < 2) max_days = 10000;
else max_days = atoi(argv[1]);
83デフォルトの名無しさん:2009/06/26(金) 16:39:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
自分の名前の英字名のASCIIコードを順番に表示するプログラムを作りなさい。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月01日
[5] その他の制限:特になし

どうかよろしくお願いします。僕の能力では作ることができませんでした。
84デフォルトの名無しさん:2009/06/26(金) 16:54:23
#include <stdio.h>

int main() {
    int i;
    char name[30] = "Taro Aso";

    for ( i = 0; name[i] != '\0'; i++ )
        printf("%3d %c", name[i], name[i]);

    return 0;
}
85デフォルトの名無しさん:2009/06/26(金) 18:09:15
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9554.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月1日 17:00
[5] その他の制限:
86デフォルトの名無しさん:2009/06/26(金) 18:10:43
>>28です。
答えてくだっさた方々ありがとうございました。
87デフォルトの名無しさん:2009/06/26(金) 19:12:34
>>85
#include<stdio.h>
#include<ctype.h>
#include<string.h>

int main(void){
char code[26][30]={{0}}, buf[30], filename[FILENAME_MAX], alpha;
FILE *fp;
int moji;

scanf("%s\n", filename);
fp=fopen(filename, "r");
if(fp==NULL) return 1;

while(fscanf(fp,"%c,%[^\n]\n", &alpha, buf)==2){
if(isalpha(alpha)){
strcpy(code[tolower(alpha)-'a'], buf);
}
}

fclose(fp);

while((moji=getchar())!=EOF){
if(isalpha(moji)){
printf("%s", code[tolower(moji)-'a']);
}else{
putchar(moji);
}
}

return 0;
}
88デフォルトの名無しさん:2009/06/26(金) 19:23:31
30って気持ち悪いw
89デフォルトの名無しさん:2009/06/26(金) 19:28:57
>>83
#include<stdio.h>
#include<ctype.h>

int main(void){
char name[]="Nanasi no Gonbee Jr.2";
int i;

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

return 0;
}
90デフォルトの名無しさん:2009/06/26(金) 19:36:17
なんでctype.h?
91デフォルトの名無しさん:2009/06/26(金) 21:55:22
>>10
有難うございました!
92デフォルトの名無しさん:2009/06/26(金) 23:25:43
[1]数値情報解析
[2]ドゥーリトル法によるLU分解でn元連立1次方程式を解くプログラムを作りなさい。
 LベクトルとUベクトルと解ベクトルを表示すること。
[3]
[3.1]Windows
[3.2]Visual Studio
[3.3]C
[4]2009年7月1日
[5]ほぼ素人なので、少しでも優しい表現にしていただくようよろしくお願い致します。
93デフォルトの名無しさん:2009/06/27(土) 00:37:12
前スレ930のものです。

前スレで回答してもらえず、前スレが落ちてしまったのでもう一度質問させてください。
[1] 授業単元:計算機システム構成原理
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9559.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月30日まで
[5] その他の制限: 特になし
よろしくお願いします。
94デフォルトの名無しさん:2009/06/27(土) 00:39:17
長くてめんどくさいだけの課題はやる人あんまりいないよな。
95デフォルトの名無しさん:2009/06/27(土) 01:27:02
96 ◆/91kCCQXBo :2009/06/27(土) 02:17:57
>>032 LED コンパイルはしてない。0b01111111
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/737.zip
97デフォルトの名無しさん:2009/06/27(土) 05:39:00
11

★pc1つで毎日3万稼ぐ★


★翌日入金★

★2009年最新在宅ワーク!★☆

http://toutou.nantomo.dousetsu.com/
98デフォルトの名無しさん:2009/06/27(土) 06:30:45
>>27
Dll_BMP_C.h ってのを晒さないと誰もできないぞ
(もし Dll_BMP_C.c みたいなのがあったらそれも)
99デフォルトの名無しさん:2009/06/27(土) 07:24:15
10083:2009/06/27(土) 09:54:43
>>84
ありがとうございましたm(__)m
101デフォルトの名無しさん:2009/06/27(土) 09:56:38
>>99
thx
DllBmpReadImage()とかの実体のDLLかソースコードもあるとうれしい
(というかそれがないとできない)
102デフォルトの名無しさん:2009/06/27(土) 10:04:27
なんかこのやり取りを良く見る気がする
一般的でないライブラリを使用するときは
一緒にアップしろとテンプレに明記した方がいいんじゃないか
103デフォルトの名無しさん:2009/06/27(土) 10:11:06
>>95
どうみてもbash
104デフォルトの名無しさん:2009/06/27(土) 10:37:35
[1] 授業単元:C言語
[2] 問題文:2つの整数型の変数を入れ替える関数swapを定義して、それを使用して配列中の数字をランダムに入れ替えるプログラムの作成。
1から52までの数が順番に入った配列を用意し、十分に入れ替えた結果を表示すること。
[3] 環境
 [3.1] OS: windows
 [3.3] 言語: C
[4] 期限: 7月2日まで
[5] その他の制限: 特になし
105デフォルトの名無しさん:2009/06/27(土) 10:44:04
#include <stdio.h>
#include <stdlib.h>

void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}

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

srand(time(NULL));

for(i=0; i<52; i++) a[i] = i + 1;

for(i=52; i> 0;) {
int j = rand() / (RAND_MAX + 1.0) * i--;
swap(a+i, a+j);
}

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

return 0;
}
106デフォルトの名無しさん:2009/06/27(土) 11:30:32
107デフォルトの名無しさん:2009/06/27(土) 14:22:30
[1] 授業単元 C言語
[2] 問題文 回文の判断をせよ
ただ、小文字、大文字の区別はしない、記号、空白も考えない。

Madam, I’m Adam
Able was I ere I saw Elba
この二つの文は回文である。 Ad czv zC Daのような文も回文

[3] 環境
 [3.1] OS Windows
 [3.2] コンパイラ名とバージョン VisualC++
 [3.3] 言語 C
[4] 期限: 6月29日

108デフォルトの名無しさん:2009/06/27(土) 16:01:45
>>107
眠りながら適当に書いた
#include<iostream>
#include<algorithm>
#include<string>
#include<cctype>
#include<functional>
int main(){
    std::string line;
    getline(std::cin,line);
    std::string tmp = line;
    tmp.erase(std::remove_if(tmp.begin(),tmp.end(),std::not1(std::ptr_fun(std::isalpha))),tmp.end());
    std::transform(tmp.begin(),tmp.end(),tmp.begin(),std::toupper);
    std::cout << (std::equal(tmp.begin(),tmp.end(),tmp.rbegin()) ? "回文です" : "回文じゃないです") << std::endl;
}
109デフォルトの名無しさん:2009/06/27(土) 16:02:35
おおっとすまん課題はC言語だったか。適当に書き直すわー
110デフォルトの名無しさん:2009/06/27(土) 16:03:34
111デフォルトの名無しさん:2009/06/27(土) 16:15:54
書いてるうちに他の人が書いたけど悔しいから出してみる
#include<stdio.h>
#include<ctype.h>
#include<string.h>
void copyAlpha(char*dst,const char*src){
while(*dst = *src)if(isalpha(*src++))++dst;
}
void lowerCase(char*dst){
for(;*dst;++dst)*dst=tolower(*dst);
}
void reverseStr(char*dst,const char*src){
0[dst += strlen(src)]=0;
while(*src)*--dst=*src++;
}
int main(){
char src[80],rev[80];
gets(src);
copyAlpha(src,src);
lowerCase(src);
reverseStr(rev,src);
puts(strcmp(rev,src)==0 ? "回文です" : "回文じゃないです");
}
112デフォルトの名無しさん:2009/06/27(土) 17:44:30
ポインタなしver.がないので
isalphaの行をどうにかマクロにしたかったw

int is_anagram(const char str[]) {
    int head, tail, len;
    head = 0; tail = (len=strlen(str))-1;
    for ( len /= 2; head < len && len < tail; head++, tail-- ) {
         if ( !isalpha(str[head]) ) { head++; continue; }
         if ( !isalpha(str[tail]) ) { tail--; continue; }
         if ( tolower(str[head]) != tolower(str[tail]) )
             return 0;
    return 1;
    }
}
113デフォルトの名無しさん:2009/06/27(土) 17:50:07
[1] 授業単元: コンピュータプログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/clip.gif
[3] 環境
 [3.1] OS: windows
 [3.2] VisualC++
 [3.3] 言語: c
[4] 期限: 2009年6月30日
[5] その他の制限:配列はcharやdouble,
並び替えはdo,for,if,whileなどで習いました。
   お願いします。
114デフォルトの名無しさん:2009/06/27(土) 17:55:56
URLが
115デフォルトの名無しさん:2009/06/27(土) 17:56:14
116デフォルトの名無しさん:2009/06/27(土) 17:57:34
>>113
問題文のリンクがちがうぞw
117デフォルトの名無しさん:2009/06/27(土) 18:07:55
<<115のが正しいです。
すみません。
118デフォルトの名無しさん:2009/06/27(土) 18:33:49
>>112
retrun 1;
の位置が明らかにおかしい
119デフォルトの名無しさん:2009/06/27(土) 19:36:14
>>107
俺もブームに乗って作ってみた。動作は保障しない。怪文21面相〜♪
そうそう、全角文字には対応してないんだからね!サンプルをコピペしてハマッタ。ソースの整形はご自分で!
#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main(){
    unsigned char str[1024]={'\0',};    char *ch;   int i=0,j=0,N=0;
    printf("input string:");
    fgets(str,1024,stdin);
    str[1023] ='\0';ch = strchr(str,'\n');
    if(ch != NULL) *ch ='\0';
    for(i=0;str[i]!= '\0';i++){
        if(isalpha(str[i])){//アルファベット置換と移動
            str[j++] = toupper(str[i]); 
        }
        if(isdigit(str[i])){//数字移動
            str[j++] = str[i];
        }
    }
    str[j]='\0';    N=j/2;
    for(i=0;i<N;i++){
        if(str[i]!=str[j-1-i]){
            printf("string is no match!\n");
            return 1;
        }
    }
    printf("string is Match!\n");
    return 0;
}
120デフォルトの名無しさん:2009/06/27(土) 20:15:38
>str[1023] ='\0';
無意味
121デフォルトの名無しさん:2009/06/27(土) 20:18:23
>>120
保険だよ。一行削れるから、ないほうがよかったかなぁ。。。
122デフォルトの名無しさん:2009/06/27(土) 20:25:14
行削りたいなら
if(isalum(str[i])) str[j++] = toupper(str[i]);
でいいだろ
123デフォルトの名無しさん:2009/06/27(土) 20:37:25
>>122
あぁ、それでいけるのね。
toupperを普段使わないから、認識が曖昧だった。勉強になります。
124デフォルトの名無しさん:2009/06/27(土) 20:41:01
>>121
fgets()は必ず終端に'\0'を付けると>>120は言ってるんだろう
fgets()で付く場合と付かない場合があるのは'\n'だ
125デフォルトの名無しさん:2009/06/27(土) 20:45:29
>>124
それも認識が曖昧だった。なるほど、勉強になります。
126デフォルトの名無しさん:2009/06/27(土) 21:07:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
int型配列:int x[]と、int型配列xの大きさ:int sizeの2つの引数を用いて、
クイックソートで昇順に並べ替えるvoid quicksort(int x[], int size)と
二分木の中間走査によって昇順に並び変えるvoid inorder(int x[], int size)
の作成
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 特になし
127デフォルトの名無しさん:2009/06/27(土) 22:03:12
12893:2009/06/27(土) 23:06:49
>>95
これは違うと思うのですが…。
すいませんがどなたか>>93のをお願いします。
129デフォルトの名無しさん:2009/06/27(土) 23:42:52
130デフォルトの名無しさん:2009/06/27(土) 23:54:48
>>106 さんありがとうございました。
ホントに助かりました!
131 ◆/91kCCQXBo :2009/06/28(日) 01:42:21
>>113 ソートのアルゴリズムは習ってないということで。
http://pc12.2ch.net/test/read.cgi/tech/1232367742/676
132デフォルトの名無しさん:2009/06/28(日) 02:54:57
【質問テンプレ】
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):3つの分数の和を求めるプログラムの作成.
但し,2つの分数の和をもとめる関数bunnsuwa(..)を作ってそれを利用して3つの分数を求める.
[3] 環境
 [3.1] OS:Windows/vista
 [3.2] コンパイラ名とバージョン Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: ([7月2日まで]
[5] その他の制限:
下の手順でプログラムを作成すること

1.二つの分数を入力して,その和をmain関数で計算して結果を表示する
1.1 分数を二つ入力 b/a, d/c とする:
ここは整数変数4つにデータを入力
1.2 二つの分数の和をf/eに計算:
普通に計算してf,eを表示
2.その二つの分数の和を計算する部分を取り出し関数bunnsuwa(..)を作成する:
3.bunnsuwa(..)を複数回適用し、三つの分数の和を求めるプログラムを作成する

約分をできるようにする。また分母が0のときにエラー処理をする。
4.1 yakubun(..)という関数を作ってみるのもよい
例えば、void yakubun(int *a, int *b)で *b/*aを約分して更新する

マイナスの分子や分母が入れられた時や,分母が1になった時もきれいに表示できるようにする

お願いします〜


133デフォルトの名無しさん:2009/06/28(日) 10:36:59
>>132
こんな感じでよいか?

#include<stdio.h>
void yakubun(int*a,int*b){
int x=*a,y=*b,z;
while(y){z=x%y;x=y;y=z;}
*a/=x;*b/=x;
if(*a<0)*a=-*a,*b=-*b;
}
void bunnsuwa(int*a,int*b,int*c,int*d){
*b=*b**c+*a**d;*a*=*c;
}
int main(){
int a=!0,b=0,c,d,i;
for(i=1;i<4;i++){
for(;;puts("やりなおせ")){
printf("%dつ目の 分子 分母 = ",i);scanf("%d%d",&d,&c);
if(c)break;
}
bunnsuwa(&a,&b,&c,&d);
yakubun(&a,&b);
printf("合計 = %d",b);
if(a>1&&b!=0)printf(" / %d",a);
puts("");
}
return 0;
}
134デフォルトの名無しさん:2009/06/28(日) 10:37:30
[1] 授業単元: C言語
[2] 問題文:
(1) 整数と4つの演算子(+, -, *, /)とカッコ ( ) から
成る計算式の文字列から計算木を作成する関数を作れ。
ただし、再帰は使ってはならない。
(2) 整数と4つの演算子(+, -, *, /)から成る計算木から
計算式の文字列を作成する関数を作れ。優先順位に注意
して、必要な箇所をカッコ ( ) でくくれ。ただし、
再帰は使ってはならない。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] C言語
[4] 期限:6/30
お願いします。
13593:2009/06/28(日) 11:15:59
>>129
本当にわからなくて>>95のが与えられてもよくわかりませんでした。
すいませんがせめて>>95のどれを見たらわかるかだけでも教えていただけないでしょうか?
136デフォルトの名無しさん:2009/06/28(日) 11:41:43
137デフォルトの名無しさん:2009/06/28(日) 13:36:16
[1] 授業単元:数理物理
[2] 問題文(含コード&リンク):http://www.mns.kyutech.ac.jp/~kamada/suuributuri/sub8.html
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:どちらでも可
[4] 期限:6/30まで
[5] ヒントのプログラムから最後のprintfのところのxのあたいがよくわからないのでよろしくお願いします。
138 ◆/91kCCQXBo :2009/06/28(日) 13:41:47
>>132 >>136のGCDを参考にした。
3個の分数の和は、分数の和+1個の分数の和が題意だと解釈してみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9570.c
139デフォルトの名無しさん:2009/06/28(日) 14:02:12
>>133 >>136 >>138
ありがとうございました!とても参考になりました。
140デフォルトの名無しさん:2009/06/28(日) 14:15:05
>>87
答えてくださってありがとうございます。しかし、これを実行してみたら、フォネティックコード
化はちゃんとなっているんですけど、入力→フォネティックコード化→入力・・・・とずっと続
いてしまいます。

ポインタとファイルだけは何がどうなっているのかさっぱりわからないので自分で修正する
こともできなくて・・・。修正よろしくおねがいします。
141デフォルトの名無しさん:2009/06/28(日) 14:48:24
>>96
遅くなりましたが、ありがとうございます。
142デフォルトの名無しさん:2009/06/28(日) 15:16:05
>>137
xは微分方程式を解いたときのx(t)の値だと思う
double func(double x, double v, double t) {
return (-x-v*v*v+1+cos(t));
}
に変えるだけでいいんじゃないかな
143デフォルトの名無しさん:2009/06/28(日) 15:23:56
144143:2009/06/28(日) 15:30:17
while((moji=getchar())!=EOF){
if(isalpha(moji)){
printf("%s", code[tolower(moji)-'a']);
}else{
if (moji == ']')
break;
putchar(moji);

}
}

前のだと無駄に ] を出力しちゃうのでこっちの方で。
145デフォルトの名無しさん:2009/06/28(日) 16:04:07
>>144
if (moji == '\n') // 改行で終わる(笑!)
  break;
146デフォルトの名無しさん:2009/06/28(日) 16:13:13
[1] 授業単元: C言語
[2] 問題文:f(x)=xe^x-6を2分法とニュートン法で解きなさい。 
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
「4」期限:6/28
[5] その他の制限: 配列が終わった程度しかやってません
147デフォルトの名無しさん:2009/06/28(日) 17:17:34
>>142
助かりました。
プログラムは一応完成しました。
感謝します。
148デフォルトの名無しさん:2009/06/28(日) 17:41:06
>>146
#include <stdio.h>
#include <math.h>
double f(double x) { return x * exp(x) - 6; }
double fd(double x) { return (1 + x) * exp(x); }
/* 繰り返し回数、初期値は任意 */
int main(void) {
// 二分法
{
int i, n = 10;
double a = 0, b = 5, x;
for (i = 0; i < n; i++) {
x = (a + b) / 2;
if (f(x) < 0 && f(a) < 0) {
a = x;
} else {
b = x;
}
}
printf("%f\n", x);
}
// ニュートン法
{
int i, n = 10;
double x = 0;
for (i = 0; i < n; i++) {
x = x - f(x) / fd(x);
}
printf("%f\n", x);
}
return 0;
}
149デフォルトの名無しさん:2009/06/28(日) 18:00:11
>>148
即レスthxです
参考にさせてもらいます
150デフォルトの名無しさん:2009/06/28(日) 18:05:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
@http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9572.zip
Ahttp://www.dotup.org/uploda/www.dotup.org180573.zip

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:7/2
[5] その他の制限:
お手数かけますが宜しくお願いします
151145:2009/06/28(日) 18:09:36
>>140 Ctrl+D をキーボードから入れれば終了する。Windowsなら Ctrl+Z。
152デフォルトの名無しさん:2009/06/28(日) 20:10:58
>>150
課題1
153デフォルトの名無しさん:2009/06/28(日) 20:12:41
154デフォルトの名無しさん:2009/06/28(日) 20:41:45
>>153
有難うございます。
助かりましたm(_ _)m


課題2の方どなたかお願いします。
155デフォルトの名無しさん:2009/06/28(日) 20:58:21
すみません、アセンブラの問題なんですが、どこで質問したらいいのか分らないので
ここでさせて頂きますm(_ _)m
もしアセンブリプログラムの方が無理でしたらC言語の方で構いません。

[1] 授業単元: アセンブリプログラミング
[2] 問題文(含コード&リンク): 1からN(N≦3)までの正整数の順列を作成せよ。すなわち、
N=1を与えた場合には1を、N=2を与えた場合には12,21、N=3を与えた場合には123,132,...を生成する。
[3] 環境
 [3.1] OS:Windows 
 [3.3] 言語: アセンブリ言語、無理でしたらC++
[4] 期限: 7月1日
[5] その他の制限: 特にないです。

ちゃんとした質問になってるかも分かりませんが、すみませんが
よろしくお願いします。
156デフォルトの名無しさん:2009/06/28(日) 21:02:26
157デフォルトの名無しさん:2009/06/28(日) 21:23:33
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9576.txt
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: VC 2008
 [3.3] 言語: C
[4] 期限: 6月29日 15時
[5] その他の制限: 配列やif文などは使わない。(使わなくてもできるみたいです。
          printf,繰り返し処理を使う。

148を参考にやってみたのですが、実行結果の出し方が違うみたいなのでいまいちわからなかったので
質問しました。 お手数ですがよろしくおねがいします。
158デフォルトの名無しさん:2009/06/28(日) 21:32:00
>>156
迅速なレス感謝します
本当に助かりました。
159デフォルトの名無しさん:2009/06/28(日) 22:02:20
>>155
C言語でアセンブラ出力する。
160デフォルトの名無しさん:2009/06/28(日) 22:35:48
どなたか>>126お願いします
161145:2009/06/28(日) 22:44:53
>>087 scanf("%s\n", filename); // \nでは、<Enter>で入力が終わらない。
これか、  scanf("%s%*c", filename);
または、  scanf("%[^\n]%*c", filename);
これか、  fgets(filename, FILENAME_MAX, stdin); filename[strlen(filename) - 1] = '\0';
162デフォルトの名無しさん:2009/06/28(日) 22:50:03
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):の連立1次方程式の解をガウスの消去法用いて解くプログラムを作成しなさい。
   (この行列を使用してください
     {{10,-9,0,0,0,0,0,0},
  {-9,17,-8,0,0,0,0,0},
  {0,-8,17,-9,0,0,0,0},
{0,0-9,13,-4,0,0,0},
{0,0,0,-4,12,-8,0,0},
{0,0,0,0,-8,10,-2,0},
  {0,0,0,0,0,-2,2,7}})

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 2009年7月1日まで]
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします
163デフォルトの名無しさん:2009/06/28(日) 23:05:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9577.txt
[3] 環境
 [3.1] OS Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:7/3
[5] その他の制限:ポインタ配列を利用すること
お願いします
164デフォルトの名無しさん:2009/06/28(日) 23:05:32
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):
#include<stdio.h>
int chrlen(int n,char a[]);
void cap2sml(char a[],char b[]);
void strinv(int n,char a[],char b[]);
int main(void)
{
char a[100],b[100];
int i,n;
n=0;
/*from CAPITAL to small*/
void cap2sml(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0';i++){
b[i]=a[i]+0x20;
}
if("A"<=a)&&(a<="Z")
b[i]='\0';
}
↑入力データが英大文字のときのみ小文字変換して表示するようにせよ

[3] 環境
 [3.1] OS: Windows vista
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2009年6月29日AM07:00
[5] その他の制限: 特になし
165 ◆/91kCCQXBo :2009/06/28(日) 23:21:26
>>155 N=3までの順列
#include <iostream>
using namespace std;
int main(void) {
  int i,j,k,n;
  cout<<"n="; cin>>n;
  cout.width(1);
  switch(n) {
  case 1:
    for(i=1;i<=1;i++) {
      cout<<i<<endl;
    }
    break;
  case 2:
    for(i=1;i<=2;i++) {
    for(j=1;j<=2;j++) {
      if(i==j) continue;
      cout<<i<<j<<endl;
    }}
    break;
  case 3:
    for(i=1;i<=3;i++) {
    for(j=1;j<=3;j++) {
      if(i==j) continue;
    for(k=1;k<=3;k++) {
      if(i==k || j==k) continue;
      cout<<i<<j<<k<<endl;
    }}}
  default:
    break;
  }
}
166デフォルトの名無しさん:2009/06/28(日) 23:31:15
>>163
入力はポインタでなくていいのかな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9578.txt
167デフォルトの名無しさん:2009/06/28(日) 23:40:54
>>164
もうちょっと何がしたいのか
具体的に書いてくれると嬉しい。

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

void cap2sml(char a[],char b[]){
int i;
for(i=0;a[i];i++) b[i] = tolower(a[i]);
}

int main(void){
char a[100] = "I have a friend whose name is Bob.";
char b[100];

cap2sml(a,b);

puts(a);
puts(b);

return 0;
}
168デフォルトの名無しさん:2009/06/28(日) 23:53:41
>>166
早速の回答ありがとうございます
入力は指定がないのでポインタでなくてもいいです
169155:2009/06/29(月) 00:24:46
>>165
ありがとうございます!

>>159
すみません、それはどういうことでしょう?
170デフォルトの名無しさん:2009/06/29(月) 00:27:46
回答してもらえるとうれしいです。>>162
171デフォルトの名無しさん:2009/06/29(月) 00:42:50
>>170
みんな暇なときにやってんだからさ
そうせかすなよw

締め切りまだ近いわけじゃないしw
172デフォルトの名無しさん:2009/06/29(月) 00:44:38
[1] 授業単元:計算機システム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9532.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月30日まで
[5] その他の制限:
ボスケテ

173デフォルトの名無しさん:2009/06/29(月) 01:07:25
>>171
そうですね。つい焦っちゃって。
ごめんなさい。。
174デフォルトの名無しさん:2009/06/29(月) 02:00:36
>>173
昔作ったのでよければあげる。
データ変える程度ならちょっといじれば動くようになるはず。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9580.txt
175デフォルトの名無しさん:2009/06/29(月) 02:26:03
>>169
gcc と objdump が使えるなら
$ gcc a.c -c
$ objdump -d a.o > a.s
とかすればよかったとおもう
176デフォルトの名無しさん:2009/06/29(月) 02:33:49
gccならgcc -S foo.cで良くないか
わざわざディスアセンブルせんでも
177デフォルトの名無しさん:2009/06/29(月) 02:43:03
>>170

>>174さんのプログラムを使って作ってみたけどコアを吐く

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

行列式ゼロなのか、それともピボット選択の必要があるのか
178デフォルトの名無しさん:2009/06/29(月) 03:02:55
>>162 {0,-9
179デフォルトの名無しさん:2009/06/29(月) 03:15:45
>>178
すみませんコピペミスしてました
でも、そこを直してもやっぱりコアダンプです
180デフォルトの名無しさん:2009/06/29(月) 03:18:17
行列が潰れている(行列式がゼロ)なんじゃないでしょうか?
それともやっぱりピボット選択した方がいいのかなあ?
デバッガ掛けてみたらやっぱり tmp がゼロになる時があり
Division by Zero という事でした
181デフォルトの名無しさん:2009/06/29(月) 03:37:11
>>162 #define N 8
182デフォルトの名無しさん:2009/06/29(月) 09:09:12
>>181
あら本当だありがとう
でもこれじゃ未知数8、数式は7しかない
これじゃ解けませんぜ旦那

>>170
どうする?元の行列もう一列足りないよ
183デフォルトの名無しさん:2009/06/29(月) 09:11:56
と思ったら

#define N 7

でOKなのねシクシク

という事で上げ直し

>>170
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9582.txt

学校行ってくる
184デフォルトの名無しさん:2009/06/29(月) 12:39:00
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9583.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: c++6.0
 [3.3] 言語:C
[4] 期限:6/29
[5] その他の制限:
よろしくお願いします。
   
185デフォルトの名無しさん:2009/06/29(月) 12:45:43
>>184
> B入出力例 こうならなければ修正する
これって授業中に「こうならなければ〜になるように修正する」って言われてるとおもうんだけど
「こうならなければ、こうなるようにプログラムを修正する」って話?
186デフォルトの名無しさん:2009/06/29(月) 12:49:58
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9584.txt
ヒントから表を並び替えて、
1) 総点順に並び換えよ。
2) 各科目別成績順に並びかえよ。

  [3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: C++
 [3.3] 言語:C 言語
[4] 期限:6/29
[5] その他の制限: 並び替えはdo,for,if,whileで習いました。
お手数ですがよろしくお願いします。
187デフォルトの名無しさん:2009/06/29(月) 13:01:28
for(i=0;i<1800;i++)
{
fprintf(fpw,"[09x%4d]",i);
}
のようにやると
[09x@@@0]
[09x@@@1]
[09x@@@2]
…のようになってしまいます(@はスペ−ス)。
[09x0000]
[09x0001]
[09x0003]
…にしたいのですがやり方が分かりません。
教えてください

188デフォルトの名無しさん:2009/06/29(月) 13:02:48
%04d
189デフォルトの名無しさん:2009/06/29(月) 13:32:39
>>186(9584.c) >>113(9568.jpg) 問題 >>131(CODE) 解答
190デフォルトの名無しさん:2009/06/29(月) 14:05:06
>>186
名前さんは全部0点のわけだ。CSVファイル経由なんかだとよくあることだけどね。
191デフォルトの名無しさん:2009/06/29(月) 14:13:04
確実にデータ管理方法がおかしいことによる弊害ですねわかります
192デフォルトの名無しさん:2009/06/29(月) 15:42:04
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):http:
//kansai2channeler.hp.infoseek.co.jp/cgi- bin/joyful/img/9587.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日 06月30日20:00まで
[5] その他の制限: 特にありません。

5問ありますが、5問目は必須ではないのでスルーして下さってもかまいません。
193192:2009/06/29(月) 15:46:26
リンク先の貼り付け失敗しました…
http://kansai2channeler.hp.infoseek.co.jp/cgi- bin/joyful/img/9587.txt

19446:2009/06/29(月) 16:55:11
>>48
レスさんくす。
それでやってみたのですが、2とか4とか2のn乗の数の場合うまくいかないのですが。
195デフォルトの名無しさん:2009/06/29(月) 17:16:57
>>192
とりあえず、1問目だけ。
テキストの整形なんかは、適当に直して。

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

2問目以降は、
クイックソート, シェルソート, 挿入ソート, 選択ソート、マージソート
の、ベースになるソースとかない?
自前で書くと、細部の実装が授業の内容と合わなくなりそうだけど。
196デフォルトの名無しさん:2009/06/29(月) 17:17:23
>>189さん
>>131(CODE) 解答の中のseito,returnなど
ならってないものが多くてわかりません。
授業でならったdo,for,if,whileを使っていただけると
とてもありがたいのですが。
197デフォルトの名無しさん:2009/06/29(月) 17:21:55
>>194
while(n < x){ n *= 2; k++;} nが2のk剰「より大きい」

while(n <= x){ n *= 2; k++;} nが2のk剰「以上」

198 ◆/91kCCQXBo :2009/06/29(月) 17:53:49
>>186 >>196 教室で習ったソート(並び替え)のCソースをくれると、参考にする、かも。
#include <stdio.h>
#include <stdlib.h>
#define n 9 /* 生徒の数+1 */
#define m 7 /* 科目の数+2 */
int cmp(const int *a, const int *b) {
  int t = a[1] - b[1];
  return (t==0)?0:(t>0?1:-1);
}
int main()
{
  int k;
  int index[n][2];
/* ここからは変更無し */ //char namae[n][5]
/* ここまでは変更無し */ //printf("%6.0f\n",goukei[i]); }
  for(k=m-2; k>=0; k--) { /* 科目数のループ */
    printf("\n%sの点数で並び替え\n", kamoku[k+1]);
    if(k == m-2)
      for(i=1; i<n; i++) index[i][0] = i, index[i][1] = goukei[i];
    else
      for(i=1; i<n; i++) index[i][0] = i, index[i][1] = seiseki[i][k];
    qsort(&index[1][0], n-1, sizeof(int)*2, (int (*)(const void*, const void*))cmp );
    for(i=1; i<n; i++) { /* 生徒数のループ */
      printf("%s", namae[index[i][0]]);
      for(j=0; j<m-2; j++){ /* 科目数のループ */
        printf("%6.0f",seiseki[index[i][0]][j]);
      }
      printf("%6.0f\n",goukei[index[i][0]]);
    }
  }
  return 0;
}
199デフォルトの名無しさん:2009/06/29(月) 18:02:17
200デフォルトの名無しさん:2009/06/29(月) 18:23:20
>>198さん >>199さん
ありがとうございます。
一応、授業でならった並び換えのCソースをはっときます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9590.txt
201デフォルトの名無しさん:2009/06/29(月) 18:38:01
[1] 授業単元:計算機言語T
[2] 問題文(含コード&リンク)
 キーボードから自然数nを1個ずつ入力する。入力を終える場合は0以下を入力する。
 入力終了後、入力した自然数の内、偶数と奇数がそれぞれ何個であったかを表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (提出準備のため[2009年06月30日AM2:45まで] )
[5] その他の制限
 習った範囲は
  ・if文(if else文を含む)
  ・switch文
  ・for文(無限ループ含む)


偶数と奇数がそれぞれ何個あったか数える部分のプログラムが???です。
お願いします。
202デフォルトの名無しさん:2009/06/29(月) 19:03:51
203デフォルトの名無しさん:2009/06/29(月) 19:10:42
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9592.txt
               http://u9.getuploader.com/himajinn/download/190/DLL_files.zip
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C 
[4] 期限:7月1日まで
[5] その他の制限: 2問あります


204デフォルトの名無しさん:2009/06/29(月) 19:21:00
[1] 授業単元:
コンパイラの構成
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9593.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7月7日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

よろしくお願いします。
205デフォルトの名無しさん:2009/06/29(月) 19:37:21
>>195 ありがとうございます。

ソースはないですねぇ…
何と言うか、出来れば何でもいいような感じなので特に気にしなくて良いかと思います。
206184:2009/06/29(月) 19:42:50
>>185そういうことです。ヒントのプ口グラムをから作る感じです。よろしくお願いします
207デフォルトの名無しさん:2009/06/29(月) 19:46:38
シェルと挿入は前スレ807の使えば?
208 ◆YtFiiqjbeo :2009/06/29(月) 19:49:27
【質問テンプレ】
[1] 授業単元:プログラミング言語c
[2] 問題文(含コード&リンク):

http://www.dotup.org/uploda/www.dotup.org184216.txt.html
[3] 環境
 [3.1] OS:Windows
 [3.2] vc++
 [3.3] 言語: C
[4] 期限: 06月29日23:59時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
名前と偏差値(最大10科目まで対応可)が書かれたファイル(最大5000人対応可)を読み込み、
各人の名前、学籍番号、平均偏差値などを出力ファイルに書き込むとともに、
平均偏差値上位5名を抽出してDOS窓表示するプログラムを作りなさい。
1、入力と出力のはおよび科目数はキーボード入力
2、ファイルからの読み込みは一度のみ、名前は二次元文字配列、偏差値は二次元数値配列に読み込むこと

実行例http://www.dotup.org/uploda/www.dotup.org184298.txt.html

お願いします
209201:2009/06/29(月) 19:56:02
>>202
有難う御座います。
ズバリですね。
210デフォルトの名無しさん:2009/06/29(月) 22:25:23
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):

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

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] Visual Studio 2008
 [3.3] 言語: C++
[4] 期限:7月2日まで
[5] その他の制限:できるだけ元のソースを弄らずにお願いします。
211デフォルトの名無しさん:2009/06/29(月) 22:34:52
次の条件判断文を使うケースをフローチャートにせよ



変数aの値がbより小さい場合には、『aはbより小さいです』と表示させ、大きい場合には"a=a+b"を計算させる



文字変数mの中身が'a'ならば、『aが格納されています』と表示させて、'a'でないならば『'a'でない文字が格納されています』と表示させたあと、変数bとcを使った『b=b+c』を計算する。


変数aが、変数bより小さい場合には、『aはbより小さいです』と表示し、変数bより大きい場合には、『aはbより大きいです』と表示し、変数bと等しい場合には、『aとbは等しいです』と表示する


#include<iosteam>
using namespace std;
int main{

return 0;
}
は多分いいと思いますが
212デフォルトの名無しさん:2009/06/29(月) 22:35:17
>>210
goukei += kata[i]; → goukei += ninzuu[i];
213デフォルトの名無しさん:2009/06/29(月) 22:47:57
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク)
アルゴリズムの異なる2つのプログラムを作成し、処理時間の違いを比較せよ。
できるだけ処理時間の違いが顕著なもの。
例:マージソートとバブルソート
[3] 環境
 [3.1] OS:Windows
 [3.2] Visualstudio2008
 [3.3] 言語:C++
[4] 期限:2009年7/7
[5] その他の制限:
214 ◆/91kCCQXBo :2009/06/29(月) 23:20:13
>>186 >>200 成績一覧(バブルソート)
#include <stdio.h>
#define n 9 /* 生徒の数+1 */
#define m 7 /* 科目の数+2 */
int main()
{
  int k, S;
  int index[n][2];
/* ここからは変更無し */ //char namae[n][5]
/* ここまでは変更無し */ //printf("%6.0f\n",goukei[i]); }
  for(k=m-2; k>=0; k--) { /* 科目数のループ */
    printf("\n%sの点数で並び替え\n", kamoku[k+1]);
    if(k == m-2) for(i=1; i<n; i++) index[i][0] = i, index[i][1] = goukei[i];
    else for(i=1; i<n; i++) index[i][0] = i, index[i][1] = seiseki[i][k];
    /* 作業用の配列を並び替える(バブルソート) */
    for(i=1;i<n-1;++i)
      for(j=2;j<n+1-i;++j)
        if(index[j-1][1] < index[j][1]){
          S = index[j][1], index[j][1] = index[j-1][1], index[j-1][1] = S;
          S = index[j][0], index[j][0] = index[j-1][0], index[j-1][0] = S;
        }
    for(i=1; i<n; i++) { /* 生徒数のループ */
      printf("%s", namae[index[i][0]]);
      for(j=0; j<m-2; j++){ /* 科目数のループ */
        printf("%6.0f",seiseki[index[i][0]][j]);
      }
      printf("%6.0f\n",goukei[index[i][0]]);
    }
  }
  return 0;
}
215デフォルトの名無しさん:2009/06/29(月) 23:35:04
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9596.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc 3.4
 [3.3] 言語:C
[4] 期限:2009年6月30日正午まで
[5] その他の制限: なし
216デフォルトの名無しさん:2009/06/29(月) 23:40:08
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org185487.txt.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限: 6月30日23:59
[5] その他の制限: 特になし

よろしくお願いします
217デフォルトの名無しさん:2009/06/29(月) 23:45:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org185515.txt
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:6/30
[5] その他の制限: なし
218デフォルトの名無しさん:2009/06/30(火) 00:02:18
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):入力した数字(最大8行)を,
「*」を用いて花文字で表示するプログラムを作成しなさい.
なお,花文字の形状は各自自由に考えてください(可読できれば問題ありません).
例:数字を入力してください:56
****  *****
*      *
****  *****
     * *     *
****  *****
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月3日
[5] その他の制限:柴田望洋 明解C言語入門編4章まで

お願いします
219211:2009/06/30(火) 00:16:01
if(a < b)
{
__cout("aはbより小さいです\n");
}
else
{
__a = a + b;
}

if(m == 'a')
__cout("aが格納されています\n");
}
else
{
__printf("\'a\'でない文字が格納されています\n");
}

if(a < b)
{
__cout("aはbより小さいです\n");
}
else if(a == b)
{
__cout("aとbは等しいです\n");
}
else
{
__cout("aはbより大きいです\n");
}

じゃあこれをフロートチャートにしてくれませんか?誰でもいいので。
220デフォルトの名無しさん:2009/06/30(火) 00:40:35
>>219
フローチャートを書くためのツールをください
221デフォルトの名無しさん:2009/06/30(火) 00:56:03
222デフォルトの名無しさん:2009/06/30(火) 00:56:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9599.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C言語
[4] 期限: 7月2日9時
[5] その他の制限: ポインタと配列まで習いました
223デフォルトの名無しさん:2009/06/30(火) 01:02:23
224デフォルトの名無しさん:2009/06/30(火) 01:20:28
>>222
#include <stdio.h>
#include <stdlib.h>

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

printf("何段表示しますか?: ");
scanf("%d", &n);

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

for(i=0; i<n; i++) {
for(j=n-1; j>i; j--) printf("   ");
p[i][0] = p[i][i] = 1;
for(j=1; j<i; j++) p[i][j] = p[i-1][j-1] + p[i-1][j];
for(j=0; j<=i; j++) printf("%3d   ", p[i][j]);
putchar('\n');
}

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

return 0;
}
225222:2009/06/30(火) 01:50:15
>>224の通りに打ち込んでもうまく出来ませんでした><
どうしてなんでしょう?
226デフォルトの名無しさん:2009/06/30(火) 02:20:14
>>225
エラーの内容をコピペしてみて。
227デフォルトの名無しさん:2009/06/30(火) 02:20:22
>>225
>>224さんではないですがどんなエラーが出たんでしょうか?
私もコンパイルしてみましたがunknown escape sequence:'\216'と言うエラーが出たので、そこだけ修正してちゃんと動作しました
>>224さんの空白文字を修正をしたものを張っておくのでもしよければどうぞhttp://ja.pastebin.ca/1478546
228デフォルトの名無しさん:2009/06/30(火) 02:31:44
>>225
codepadで確認したけど、エラーでなかったよ
http://codepad.org/5h347P3K
(入力部分だけ変更してあるので注意

ついでに35段目でオーバーフローすることを確認したw
229デフォルトの名無しさん:2009/06/30(火) 02:57:33
半角スペース省略回避の&nbsp;が悪さしてんのか?
230デフォルトの名無しさん:2009/06/30(火) 06:50:57
>>223
ありがとうございます。
まだ習ってない部分もありますが
解読してみようと思います
231デフォルトの名無しさん:2009/06/30(火) 07:12:58
>>208お願いします。
232222:2009/06/30(火) 08:33:36
正しくコンパイルできてエラーは出ませんでしたが
数字を入力したあとになにも表示されませんでした。
今教えてもらったプログラムを解読しているとこです。
233デフォルトの名無しさん:2009/06/30(火) 09:47:26
>>227
sjisだと漢字の`表'は0x955cになるが、0x5cはASCIIでは`\'だから、
その次の文字`示'(0x8ea6)の0x8e(\216)がエスケープシーケンスにされちゃうんだよ。
$ od -tx1z -Ax foosjis.c | grep -1 '5c 8e'
000050 0a 0d 0a 70 72 69 6e 74 66 28 22 89 bd 92 69 95 >...printf("...i.<
000060 5c 8e a6 82 b5 82 dc 82 b7 82 a9 3f 3a 20 22 29 >\..........?: ")<
000070 3b 0d 0a 73 63 61 6e 66 28 22 25 64 22 2c 20 26 >;..scanf("%d", &<
`表'意外にもこうした問題を起こす文字がsjisにはあるから、ほんと困ったもんだ。
さっさと文字コード統一してくれ。
234デフォルトの名無しさん:2009/06/30(火) 09:51:03
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9602.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2009年7月5日12:00まで]
[5] その他の制限: 既存のRAND関数使用不可

1.合同式法による一様乱数を生成する関数
2.ボックスミュラー法による正規乱数を生成する関数
3.平均値を求める関数
4.標準偏差を求める関数
5.ヒストグラムを作成する関数
の5個の関数から構成されるのは分かるのですが、その後どうすれば作れるのか見当もつきません。

宜しくお願い致します。
235デフォルトの名無しさん:2009/06/30(火) 09:53:05
>>233
--input-charset=cp932
とかでググってはどうだろうか
236デフォルトの名無しさん:2009/06/30(火) 10:02:10
>>215
誰か助けてm(__;)m
237デフォルトの名無しさん:2009/06/30(火) 10:02:27
いや、sjisとかcp932とか使わないからどうでもいいんだよ。
ただ変換するコードを書くのが面倒だし毎度変換するだけの無駄なクロックが使われていると思うとね。
さっさと文字コード統一してくれ、といいたくなる。
238デフォルトの名無しさん:2009/06/30(火) 10:21:12
>>199さん
合計と科目別すべて一緒に表示したいときは
どうすればいいですか?
239デフォルトの名無しさん:2009/06/30(火) 10:39:15
文字コードは、英語のAtoZしか使わないから関係ない人へ。
SPACE->&nbsp;置換お疲れ。
240239 ◆/91kCCQXBo :2009/06/30(火) 12:02:47
>>186 >>238 成績一覧(選択ソート) 199が選択ソートなので再UP
#include <stdio.h>
#define n 9 /* 生徒の数+1 */
#define m 7 /* 科目の数+2 */
int main()
{
  int k, p, S;
  int index[n][2];
/* ここからは変更無し */ //char namae[n][5]
/* ここまでは変更無し */ //printf("%6.0f\n",goukei[i]); }
  for(k=m-2; k>=0; k--) { /* 科目数のループ */
    printf("\n%sの点数で並び替え\n", kamoku[k+1]);
    if(k == m-2) for(i=1; i<n; i++) index[i][0] = i, index[i][1] = goukei[i];
    else for(i=1; i<n; i++) index[i][0] = i, index[i][1] = seiseki[i][k];
    /* 作業用の配列を並び替える(選択ソート) */
    for(i=1; i<n-1; i++){
      p = i;
      for(j=i; j<n; j++)
        if(index[p][1] < index[j][1]) p = j;
      S = index[i][1], index[i][1] = index[p][1], index[p][1] = S;
      S = index[i][0], index[i][0] = index[p][0], index[p][0] = S;
    }
    for(i=1; i<n; i++) { /* 生徒数のループ */
      printf("%s", namae[index[i][0]]);
      for(j=0; j<m-2; j++){ /* 科目数のループ */
        printf("%6.0f",seiseki[index[i][0]][j]);
      }
      printf("%6.0f\n",goukei[index[i][0]]);
    }
  }
  return 0;
}
241デフォルトの名無しさん:2009/06/30(火) 13:02:41
>>239
何かを皮肉っているように読めるけど、何を指してるのかよくわからんや
242デフォルトの名無しさん:2009/06/30(火) 13:46:46
>>238
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9604.txt
一番簡単なのは、もう1つ外側でループしてやることかな・・・と。

243デフォルトの名無しさん:2009/06/30(火) 14:37:33
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9605.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 7月1日12:00
[5] その他の制限:特になし
よろしくお願いします
244デフォルトの名無しさん:2009/06/30(火) 14:51:32
〔1〕授業単元:C言語
〔2〕問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9601.txt

〔4〕期限:7月6日
〔5〕ポインタ配列

お願いします
245デフォルトの名無しさん:2009/06/30(火) 15:14:36
>>208
手遅れ感がすごいけど一応。
こんなんでどうでしょ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9606.c
スタックに配列取ってるのはそうした方が主旨に沿いそうな気がしたから。
246デフォルトの名無しさん:2009/06/30(火) 15:37:05
>222
>>224の通りに打ち込んでもうまく出来ませんでした><
>どうしてなんでしょう?
何がうまくないんでしょう?

Answer1:パスカルの三角形が気に入らない
Answer2:パソコンが壊れてる。電源が入らない。パソコンを持ってない。
Answer3:コンパイル環境が無い
Answer4:コンパイルエラーが出る!
Answer5:実行はするが変な文字が出る

Ans 5.ならコンパイラの名前を : ( )
...テンプレ...
[3.2] コンパイラ名とバージョン: (gcc 3.4/VC 6.0等)
...テッパン...
gcc --input-charset=cp932 --exec-charset=cp932 file.c
247デフォルトの名無しさん:2009/06/30(火) 15:38:04
ググってわからなかったので、質問させてください。
%eを使って表示したいのですが、
表示させたときにeの左側の小数部分の表示桁数を指定するにはどうすればいいですか?
248デフォルトの名無しさん:2009/06/30(火) 15:40:48
printf("%XXX.XXXe", f); // Xは0-9の数字
249デフォルトの名無しさん:2009/06/30(火) 15:41:38
その辺は書式といいます。

c言語 書式 などでぐぐるといろいろでてくると思います。

少数を扱う場合は

%1.5e
などと書きます
250デフォルトの名無しさん:2009/06/30(火) 15:46:35
ありがとうございます。
書式でググればよかったんですね。
251デフォルトの名無しさん:2009/06/30(火) 15:48:50
>>234
とりあえず、中心極限定理の場合
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9608.txt

正規乱数に変換する部分を書き換えれば、ボックスミュラーの方にも使えるっしょ。
ヒストグラムはカウントだけしておいて、EXCELで処理ってことで。
252デフォルトの名無しさん:2009/06/30(火) 15:51:31
>>244
全部まとめて、こんな感じで。動作は保障しない。ソースの整形はご自分で!
#include <stdio.h>
#include <stdlib.h>
void swap(int* a,int* b){int T=*a;  *a = *b *b = T;}
void InitCard(int* Card,int N){int i=0; for(i=0;i<N;i++) Card[i]=i+1;}
void Shuffle(int* Card,int N){int i=0;  for(i=0;i<N;i++) swap(&Card[i],&Card[rand()%N]);}
int main(){
    int Card[52];
    int i=0;
    char* Number="A23456789TJQK";
    char* Mark="shdc";
    srand(0);
    InitCard(Card,52);
    /****************No.1**********************/
    Shuffle(Card,52);
    for(i=0;i<52;i++) printf("%d ",Card[i]);
    printf("\n\n");
    /****************No.2**********************/
    InitCard(Card,52);
    for(i=0;i<52;i++) printf("%d:%c ",i,Number[(Card[i]-1)%13]);
    printf("\n\n");
    /****************No.3**********************/
    InitCard(Card,52);
    for(i=0;i<52;i++) printf("%c%c ",Number[(Card[i]-1)%13],Mark[(Card[i]-1)/13]);
    printf("\n\n");
    return 0;
}
253デフォルトの名無しさん:2009/06/30(火) 15:52:01
すみません。
もう1つ質問なのですが、
無限ループでとある計算を行い、
xが10の-10乗より小さくなったときに無限ループを脱出するプログラムを作りたいのですが、

if(x < 1.0e-10)
break;

では、コンパイルエラーが出ました。
ここは、やはり

if(x < 0.0000000001)

と、書くしか方法はないのでしょうか?
254デフォルトの名無しさん:2009/06/30(火) 15:53:48
>>253
無限ループは何で実現してるの?
255デフォルトの名無しさん:2009/06/30(火) 15:56:24
>>525
ソース詰めてるときにセミコロン消しちゃった。申し訳ない。
正しくは以下。
void swap(int* a,int* b){int T=*a;  *a = *b; *b = T;}
256デフォルトの名無しさん:2009/06/30(火) 15:56:51
すみません。
While(1)
です
257デフォルトの名無しさん:2009/06/30(火) 16:02:36
>>252
上が駄目で下がOKならそういうことではないかと
ただなぜかといわれると規格とかの話になりそうなので詳しくはわかりませんが。
制御文には指数は使えないのかも
258デフォルトの名無しさん:2009/06/30(火) 16:10:54
>>192 お願いします。
259デフォルトの名無しさん:2009/06/30(火) 16:16:22
>>253
これをコピペしてもダメ?(必ずコピペで)
コンパイラは何使ってるの?
#include<stdio.h>

int main(void){
double x=1;

while(1){
if(x < 1.0e-10) break;
x/=10;
}
printf("%.15f\n", x);
return 0;
}
260デフォルトの名無しさん:2009/06/30(火) 16:45:24
#include <stdio.h>
int main()
{
int a;
int b = 1, c = 0;
scanf("%d",&a);
while(b <= a){
b *= 2;
c++;
}
printf("2の%d乗より小\n", c);
return 0;
}
で"5"や"6"なら"2の3乗より小"など正しい答えが出るのですが、
2の乗数である"4"や"8"を入れると"4"で"2の2乗より小"、"8"で"2の3乗より小"と出てしまいます。
どうすればいいでしょうか。
261デフォルトの名無しさん:2009/06/30(火) 16:49:19
>>260
printf("2の%d乗より小\n", c);



if(b == a)
{
  printf("2の%d乗と同じ\n", c);
}
else
{
  printf("2の%d乗より小\n", c);
}
262デフォルトの名無しさん:2009/06/30(火) 16:54:44
while (b < a)
なら a = 4 の時 c = 2 だけど

while (b <= a)
だと a = 4 の時 c = 3 にならない?

printf の文意も 与えた値よりも必ず大きい2の累乗数 を求めてるっぽいし
263 ◆/91kCCQXBo :2009/06/30(火) 17:13:56
#include <stdio.h>
int main()
{
  int a;
  int b = 1, c = 0;
  scanf("%d",&a);
// while(b <= a)
  while(b < a)
  {
    b *= 2;
    c++;
  }
  printf("%d は 2の%d乗 か、若しくは 2の%d乗 以下の数値である\n", a, c, c);
  return 0;
}
264デフォルトの名無しさん:2009/06/30(火) 17:31:27
>>244
ポインタ配列にこだわってみた。
こんなんもどうでしょ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9609.c
265--:2009/06/30(火) 17:43:08
>>172 >>93 >>前930
>プロンプトを現在の”mysh[9]”といったものから”ユーザ名@mysh[9]”
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9607.txt
266デフォルトの名無しさん:2009/06/30(火) 17:59:37
質問させてください。

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

上記のプログラムを組みましたが、N=65000以上になるとセグメンテーション違反を吐き出します。
N=65000以下なら問題なく動きます。
どこが原因かを教えてもらえませんでしょうか・・・。

OS:ubuntu9.04
コンパイラ:gcc 4.3.3
言語:C

です。よろしくお願いします。
267デフォルトの名無しさん:2009/06/30(火) 18:01:28
スタックオーバーフローかと
268デフォルトの名無しさん:2009/06/30(火) 18:03:25
とりあえずでかい配列をローカルにとらないほうがいい
269デフォルトの名無しさん:2009/06/30(火) 18:05:04
1つの変数に30Gバイト割り当てて(それが10個以上)コンパイルを
通すコンパイラも問題ありかと。
現実時間で動作するとはその時点で思えない。
270267:2009/06/30(火) 18:07:40
int N=65000,M=3,n,j,l,k;
double R[N],r[N][M],S[N],s[N][M],x[N],y[N],A[N][M],q[N][M],z[M],sig[M],thi[M],tmp,a,b,c;

double は一つで8バイトなんで相当大きな領域をスタックという場所に確保しようとします。
まあそれが大きすぎておかしくなってます。

解決方法としては
1)staticをつけて確保
2)Nが関係してる配列はmallocを使って動的に確保する
271266:2009/06/30(火) 18:11:42
>>267-270
勉強になります。ありがとうございました。
272 ◆/91kCCQXBo :2009/06/30(火) 18:29:36
>>216 データを削除し,新ファイルに保存する
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9611.c
273デフォルトの名無しさん:2009/06/30(火) 18:44:07
[1] 授業単元: 数理計画法
[2] 問題文(含コード&リンク): シンプレックス法のプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 2009年7月1日
[5] その他の制限: プログラムの授業で習うことはすべてやりました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9612.txt
のようなプログラムをつくたんですがこの先が悩んでいます。どなたかお願いします。
274 ◆/91kCCQXBo :2009/06/30(火) 20:17:21
>>217 氏名と電話番号を,レコード単位にバイナリデータで読み書きする
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9613.c
275デフォルトの名無しさん:2009/06/30(火) 20:25:58
[1] 授業単元:C言語の基礎
[2] 問題文:年(西暦)、月、日を入力し、入力した、日時の曜日及び、経過した日数を表示したプログラムを作成せよ。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:7月2日まで
です。うるう年が100年に一度来ないというので分からなくなってしまいました。
よろしくお願いします。
276デフォルトの名無しさん:2009/06/30(火) 20:29:04
>>275
がんばれ
http://ufcpp.net/study/algorithm/o_days.html
277デフォルトの名無しさん:2009/06/30(火) 20:35:29
>>275
4で割り切れて、なおかつ100でも割り切れる時はうるう年として扱わないといった
具合の条件処理をすればいいと思うよ。
278 ◆/91kCCQXBo :2009/06/30(火) 20:41:59
>>275 逆に日数指定のC言語
>前スレ675氏のプログラム、
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9553.txt
279デフォルトの名無しさん:2009/06/30(火) 21:12:28
条件曖昧なのを良い口実に Win32API で計算したのが上がってた

さらに 標準の time 系関数群で計算しようとして
何処かで仕様の壁で(1単位が秒ではない系?) 良い線までいくものの ぎりぎりアウト とか

そういう記憶があるが、宿題スレだったか定かではない
280275:2009/06/30(火) 21:32:20
色々試してみたのですが、エラーばかりになってしまいます。
自宅でのコンパイラはLSI C-86を使用しています。

もう提出までに時間が無いので、出来ましたら回答のほどよろしくお願いします。
281デフォルトの名無しさん:2009/06/30(火) 21:52:18
282デフォルトの名無しさん:2009/06/30(火) 22:05:14
>>280
LSI-C 86なんて過去の遺物を使うんじゃない

どうせ環境はWindowsなんだろ?LongFileNameに対応している
必要があるし、DOSのコマンドプロンプトはレガシーx86のマシン語は
もはや動かない環境もある
283デフォルトの名無しさん:2009/06/30(火) 22:15:59
>>275
経過した日数っていつからの経過日数?
284275:2009/06/30(火) 22:26:25
>>282
他のソフトを探して見ます。

>>283
入力をした日からです。
285275:2009/06/30(火) 22:28:50
>>283
書き方が微妙でした。
入力で指定した日からです。
286デフォルトの名無しさん:2009/06/30(火) 22:30:42
#include <stdio.h>
#include <math.h>

double func(double x,double y)
{
return y/(2.0*x);
}

int euler(double x0,double y0,double xx,int num)
{
int i; double h,y1,k1,k2;
h=(xx-x0)/(double)num;
for(i=0;i<num;i++){
k1= h*func(x0,y0);
y1 =y0 + k1;
k2 = h*func(x0+h,y1);
y0= y0+(k1+k2)/2;

printf("%4.1f %9.6f %9.6f %9.6f\n",x0,y0,sqrt(x0),fabs(y0-sqrt(x0)));
}
return 0;
}

int main(void)
{
euler(1.0,1.0,2.0,10);
return 0;
}
このプログラムをどう変えればルンゲクッタ法のプログラムが出来ますか?

今週の金曜までにお願いします
287デフォルトの名無しさん:2009/06/30(火) 22:36:30
>>286
テンプレくらい読もうな
288デフォルトの名無しさん:2009/06/30(火) 22:38:14
>>285
「入力で指定した」日時から「入力した」日時までの経過日数ね。
289275:2009/06/30(火) 22:39:13
>>288
その通りです。
分かりづらくてすいません。
290デフォルトの名無しさん:2009/06/30(火) 22:43:43
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9615.txt
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 7月2日
[5] その他の制限: ポインタまで習いました。問2はできればで結構です。
291デフォルトの名無しさん:2009/06/30(火) 23:02:30
てst
292デフォルトの名無しさん:2009/06/30(火) 23:14:11
[1] 授業単元: コンピュータアーキテクチャ
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9616.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C++
[4] 期限: 7/4 15:00
[5] その他の制限: 講義でC++を習っていないので、制限は特になしで構いません。キャッシュに読み書きするごとにHitかMissかがわかればいいです。
293デフォルトの名無しさん:2009/06/30(火) 23:35:39
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9617.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 7/2
[5] その他の制限: 乱数関数とswitch文は習いましたがどうすればいいのかわかりません。
よろしくお願いします。
294デフォルトの名無しさん:2009/06/30(火) 23:41:10
ふむ・・・・
295275:2009/06/30(火) 23:45:20
何とか解決できました!!
皆さんありがとうございました。
296デフォルトの名無しさん:2009/06/30(火) 23:45:23
[1] 授業単元: プログラミング応用V
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9618.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Cmachine
 [3.3] 言語: C
[4] 期限: 7月1日の16時頃
[5] その他の制限: 問題文に記述

よろしくお願いします。

297デフォルトの名無しさん:2009/06/30(火) 23:46:16
>>293
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int n;

srand(time(NULL));

n = rand() % 52;

switch(n / 13) {
case 0: printf("スペードの");break;
case 1: printf("ダイアの");break;
case 2: printf("ハートの");break;
case 3: printf("クラブの");break;
}
printf("%d\n", n % 13 + 1);

return 0;
}
298デフォルトの名無しさん:2009/07/01(水) 00:16:03
[1]授業単元:データ構造2
[2]問題文 二分木です: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9619.txt
[3]環境
[3.1]OS:Windows
[3.2]gcc
[3.3]Cです
[4]期限: 7月2日午後5までです。
[5]その他の制限:ある程度習いました。けど未だわからず終いです
299デフォルトの名無しさん:2009/07/01(水) 00:48:29
>>295
えっと、400で割り切れるときはやっぱりうるう年、というルールは盛り込まれたのかな
300デフォルトの名無しさん:2009/07/01(水) 00:48:34
[1]授業単元:C言語
[2]問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9620.txt
[3]環境
[3.1]OS:Linux
[3.2]gcc
[3.3]C
[4]期限:7月1日午前4時
[5]その他の制限:なし

超難関で自分にはできません(__;)
明日早朝提出のレポートなのであせってます、、、
どなたかお願いします!!!!
301デフォルトの名無しさん:2009/07/01(水) 00:49:37
大丈夫そうだったごめん。
302デフォルトの名無しさん:2009/07/01(水) 00:50:19
>>300
というかあと3時間じゃん
303デフォルトの名無しさん:2009/07/01(水) 00:57:24
現段階での最新のソースと、今使ってる環境(ディストリビューション)
およびコンパイラのバージョンをあげることはできますか
304300:2009/07/01(水) 00:58:53
>>302
大学の講義が明日の朝なのですが、家から大学までが遠いので朝早く出なきゃいけないんです(__;)
でもいまだに理解できなくて、、、
305デフォルトの名無しさん:2009/07/01(水) 01:08:56
まだかな
306デフォルトの名無しさん:2009/07/01(水) 01:44:36
[1]授業単元:C言語
[2]問題文: WAVファイルのデータチャンクを読み込み、違う(copy.wav等の)ファイルに出力せよ。
[3]環境
[3.1]OS:windows cygwin
[3.2]gcc
[3.3]C
[4]期限:7月2日午前0時
[5]その他の制限:

wavファイルをフォーマットで読み込むということが理解できません。
mmio関数を使わずに、チャンク構造が理解できるようなプログラムを教えてください。
307デフォルトの名無しさん:2009/07/01(水) 01:46:50
308307:2009/07/01(水) 01:54:01
補足
wavファイルだろうがなんだろうが所詮は単なるバイナリデータにすぎません。
wavファイルのヘッダー部分も構造体をそのまま書き出した物(注1)ですし
チャンクとか言ってますがその辺の情報も同じです。

注1:1バイト以上の場合はエンディアンに注意
309デフォルトの名無しさん:2009/07/01(水) 02:28:46
>>308
ありがとう、朝までやってみてまだ理解できなかったらもう一度質問してみるよ。

バイナリデータの読み込みでfopenのとき"rb"しても数値じゃないものが出力されるんだ。
ちなみにエンディアンて何のこと?
310デフォルトの名無しさん:2009/07/01(水) 02:36:29
311デフォルトの名無しさん:2009/07/01(水) 02:59:04
>>290
問1だけやってみたけど、間違ってたらごめん。
アップローダがうまく使えないから、livedoor掲示板に貼り付けた。
↓のレス番号2
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/
312デフォルトの名無しさん:2009/07/01(水) 03:01:05
>>300
こういうのはアルゴリズム辞典とか見ないと書けんよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9621.c
313300:2009/07/01(水) 03:18:04
>>312
うぁぁぁぁあ
ありがとうございます!m(__;)m
アルゴリズム辞典なんて考えもありませんでした(汗)、、、

ほんとにありがとうございます!!!
314デフォルトの名無しさん:2009/07/01(水) 08:02:37
>>296
誰かお願いします〜
315デフォルトの名無しさん:2009/07/01(水) 08:30:31
>>204
すいません、>>204はyaccなのですが、どなたかできる方がいらっしゃったらお願いします。
どこで聞けばいいのかわからなくて・・
316デフォルトの名無しさん:2009/07/01(水) 12:18:31
>>273

お願いします。
317デフォルトの名無しさん:2009/07/01(水) 12:38:53
>>134
お願いします。
318 ◆/91kCCQXBo :2009/07/01(水) 12:50:27
>>290 問2 点数で順位付けするプログラム
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/4-5
319デフォルトの名無しさん:2009/07/01(水) 14:57:27
>>204
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9624.txt

yaccのみで、yylexは自分で実装(lexを使わない)で良いんだよね?
320デフォルトの名無しさん:2009/07/01(水) 15:11:30
>>134
>>317
input,output,実装方法の想定ができる程度の情報がないと、
どう作って良いかわからなくて、誰もやってくれないと思うよ。
講義で使ったベースになるソースをサンプルで付けるとか。
321デフォルトの名無しさん:2009/07/01(水) 15:52:41
<<183
ありがとうございます。
動かしてみます
322デフォルトの名無しさん:2009/07/01(水) 17:23:26
>>281
遅くなりましたが、ありがとうございました
323デフォルトの名無しさん:2009/07/01(水) 17:45:02
[1]授業単元:C言語
[2]問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9623.txt
[3]環境
[3.1]OS:Windows
[3.3]C
[4]期限:7月5日午前10時まで
[5]その他の制限:なし

お願いします。
324デフォルトの名無しさん:2009/07/01(水) 17:47:46
>>298
とりあえずデータはmain()の中で決め打ち
ファイルから読み込ませたいなら、fopen()とか使って適当に書き換えて
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9625.c
325デフォルトの名無しさん:2009/07/01(水) 18:09:50
326デフォルトの名無しさん:2009/07/01(水) 18:24:19
>>325
あざすっ(u_u)o〃
327デフォルトの名無しさん:2009/07/01(水) 19:39:29
>>319
その通りです。ありがとうございました!
328デフォルトの名無しさん:2009/07/01(水) 20:47:08
【質問テンプレ】
[1] 授業単元:プログラミング入門2
[2] 問題文
list1.datから名前・身長・体重を構造体に読み込み、BMI関数にてBMI値をI計算してlist2.datに書き込む。
[list1.dat]
名前 身長 体重
[list2.dat]
名前 身長 体重 BMI
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Visualstudio2008
 [3.3] 言語: C
[4] 期限: 7月3日

どうかよろしくおねがいします・・。
329デフォルトの名無しさん:2009/07/01(水) 20:48:30
>>296
時間切れだけどよかったらどうぞ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9626.txt
330デフォルトの名無しさん:2009/07/01(水) 20:50:42
>>328
身長と体重の数値型は?
BMIも何の数値型で出せばいいのかな?
あと区切り文字は半角スペースでおk?
331デフォルトの名無しさん:2009/07/01(水) 20:53:30
>>330
身長体重BMIはdouble型で、区切り文字は半角スペースです。
おねがいします・・。
332デフォルトの名無しさん:2009/07/01(水) 21:16:50
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9629.zip
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:7/2
[5] その他の制限:お願いします
333デフォルトの名無しさん:2009/07/01(水) 21:29:14
[1] 授業単元:C++プログラミング
[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9630.txt
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 09年7月2日
[5] その他の制限:
334デフォルトの名無しさん:2009/07/01(水) 21:33:22
>>333
昨日くらいにこっちでみたなw
C言語なら俺に聞け(入門篇) Part 50
http://pc12.2ch.net/test/read.cgi/tech/1246342847/
335デフォルトの名無しさん:2009/07/01(水) 21:45:11
>>333
偶数のとき、星をどう書くかわからん
真ん中を2重にすればいいのかな?たとえば8ならこうとか
*    **    *
  *  **  *
    ****
********
********
    ****
  *  **  *
*    **    *
336デフォルトの名無しさん:2009/07/01(水) 21:49:27
>>333ですが星形で奇数の場合は表示しない。
です。書き忘れました申し訳ありません
337デフォルトの名無しさん:2009/07/01(水) 22:01:49
338デフォルトの名無しさん:2009/07/01(水) 22:20:35
339デフォルトの名無しさん:2009/07/01(水) 22:20:52
>>337
本当にありがとうございますっ。
感激です。
340デフォルトの名無しさん:2009/07/01(水) 22:28:30
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9633.txt
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 7月2日9時
[5] その他の制限: ポインタと配列まで習いました
341デフォルトの名無しさん:2009/07/01(水) 22:40:50
>>328
自分もやってみたが、>>337さんのがかっこいいね
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/6
342デフォルトの名無しさん:2009/07/01(水) 23:46:00
何度もすいません>>333です。
問題文と>>336はミスがありましたのでスルーしてください。
レスくださった方申し訳ないです。

[1] 授業単元:C++プログラミング
[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9636.txt
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 09年7月2日
[5] その他の制限:
343デフォルトの名無しさん:2009/07/01(水) 23:59:02
>>341 君間違えてる気がする。
> >>328
> 自分もやってみたが、>>337さんのがかっこいいね
>>332
自分もやってみたが、>>338さんのがかっこいいね

http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/6
> 間違ってたらゴメン
344デフォルトの名無しさん:2009/07/02(木) 00:00:08
>>338,343
ありがとうございます
345デフォルトの名無しさん:2009/07/02(木) 00:05:12
>>340
できるだけ、コンパクトには書いてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9637.txt
346デフォルトの名無しさん:2009/07/02(木) 00:16:20
>>340
だいぶゴチャゴチャしてしまった。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9638.c
347340:2009/07/02(木) 00:19:19
>>345
コンパクトにしてくれてありがとうございます!
348デフォルトの名無しさん:2009/07/02(木) 00:24:55
篩の問題としては微妙な問題だな。
349デフォルトの名無しさん:2009/07/02(木) 00:36:01
>>346
自分で実行してみた?
350デフォルトの名無しさん:2009/07/02(木) 00:39:06
>>349
もう何回も動かしとるよ
351デフォルトの名無しさん:2009/07/02(木) 00:45:03
>>350
じゃあ、正常に動いてるのは偶然だって理解してる?
352デフォルトの名無しさん:2009/07/02(木) 00:47:15
>>351
まじっすか。
どの辺だか教えていただけると助かります。
353デフォルトの名無しさん:2009/07/02(木) 00:49:28
初期化してない配列に対して、*s!=-1をループ終了条件にしてるとこ。
354346:2009/07/02(木) 00:54:29
>>353
我ながらこれはひどい。

教えてくれてありがとう。
355デフォルトの名無しさん:2009/07/02(木) 00:56:45
[1] 授業単元:デジタル信号
[2] 問題文:wavファイルをダウンサンプリングせよ
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 今日のAM9:00
[5] その他の制限:現在のサンプリング周波数の1/2にダウンサンプリングさせたらエイリアシングが起きるのでその周波数成分を除去したいが、
wavファイルは8bitでの場合、データの内容が0〜256なのですが、どのようにサンプリング周波数と比べたらよいのでしょうか?


for(i=0; i<snd->datanum; i++){
if(snd->sounddata[i] > snd->samplingrate*4){
snd->sounddata[i] == snd->sounddata[i]/2;
printf("count %d\n",i);
}
if(i%2 == 0){
snd->monaural8[i] = 0;
}
356デフォルトの名無しさん:2009/07/02(木) 01:00:09
>>355
なんかすげーな
そういう専門なのか?
以前見つけた資料あるので待って
357デフォルトの名無しさん:2009/07/02(木) 01:03:50
おまた
http://www.madlabo.com/mad/book/other/sampleRateConvDoc.pdf
この最後の方にダウンサンプリングの解決方法とか載ってる
358デフォルトの名無しさん:2009/07/02(木) 01:05:55
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9639.txt
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 7月2日9:00〆
[5] その他の制限: ポインタと配列までは学習しました。
359デフォルトの名無しさん:2009/07/02(木) 01:26:56
>>357
ありがとうございます。まさに内容はコレなんですが、実装するさいにどのように比較するかがわからないんですよね。
私の持っている音サンプルだと、例えばサンプリング周波数は22050なんで、44100以上の周波数はアウトなんですよ。それをさらにサンプリング周波数を半分に落としたいんですよね。
ですけど、もともと音のデータは256でしか表現されてないんですよ、256=44100ではないですよね?(128で無音らしいです)。ではどのように比較すればよいのでしょうか?
という質問です。

大変参考になりそうなのですが、できれば比較部分のソースが欲しいですね。
ちなみに、この分野に着手したばかりなので無知ですが専攻はこっち系ですね。。
360デフォルトの名無しさん:2009/07/02(木) 01:29:51
>>359
サンプリング周波数は横軸としてみた場合サンプルビットは縦です

振幅する波の幅を記録するしてるだけです
361デフォルトの名無しさん:2009/07/02(木) 01:33:02
>>359
振幅と周波数を比較することに意味は無いよ
362デフォルトの名無しさん:2009/07/02(木) 01:37:13
サンプリング周波数が何かとかサンプリングビットが何かというのをきっちり理解した方がいい
http://www.apec.aichi-c.ed.jp/project/joho/jissyuu/sound/sound.files/oto.htm
363デフォルトの名無しさん:2009/07/02(木) 01:37:39
>>360
>>361
縦軸は振幅とな??
では周波数はどのように表現がなされているのですか??
364デフォルトの名無しさん:2009/07/02(木) 01:40:19
>>359
詳しく見てないから的外れだったらごめん。と、先に謝っておく。
サンプリング周波数と音のデータを勘違いしているような気がする。
サンプリング周波数は「1秒間の音をいくつのデータで表現するか」
音のデータは「ある瞬間の音を数値化したもの」
あと、
>サンプリング周波数は22050なんで、44100以上の周波数はアウト
標本化定理からして数値が逆だと思う
365デフォルトの名無しさん:2009/07/02(木) 01:40:33
>>363
よそへ行って勉強してくればよろし
366デフォルトの名無しさん:2009/07/02(木) 01:41:03
>>363
サンプリング周波数と周波数は別よ

サンプリング周波数というのは1秒間あたりの音の変化を
44100に分割する

でその分割した波の高さを所定のビット幅に収めるのが8bitとか16bitってこと
367デフォルトの名無しさん:2009/07/02(木) 01:41:57
>>366
>44100に分割する
44100などで分割する
368デフォルトの名無しさん:2009/07/02(木) 01:42:25
>>329
ありがとうございます。


でも、ファイル間違えてるみたいで…それで、9628見つけたんですが、文字化けが…

もう一度貼っていただけないでしょうか?
369デフォルトの名無しさん:2009/07/02(木) 01:44:49
>>368
文字エンコードが違うだけじゃね
370デフォルトの名無しさん:2009/07/02(木) 01:49:44
こっちにいいのがあったわ
http://www.amei.or.jp/report/DR_Div/base.htm
371デフォルトの名無しさん:2009/07/02(木) 01:50:18
>>364〜367
エイリアシングの条件は逆でしたね。

うーん、音データを1飛ばしで無音にするのとは何が違う??
372デフォルトの名無しさん:2009/07/02(木) 01:55:04
>>357を読めよ
ただ単に答えが欲しいだけだろ
373デフォルトの名無しさん:2009/07/02(木) 01:56:26
配布されたソースがあるなら全部うpするよろし
エスパーして考えると
for(i=0; i<snd->datanum; i++){   「snd->datanum」が1秒間の分割数
  if(snd->sounddata[i] > snd->samplingrate*4){  サンプリング周波数の4倍より大きい場合?
    snd->sounddata[i] == snd->sounddata[i]/2;  信号値を半分にする?
    printf("count %d\n",i);
  }
  if(i%2 == 0){  偶数の時は
    snd->monaural8[i] = 0;  何かを0にする
  }
forが閉じてないよ!?

サンプリング周波数を半分に落とすだけなら
信号値を抜く(飛ばす)ことはあっても信号値を変化させること(3行目)はないはず
374デフォルトの名無しさん:2009/07/02(木) 01:57:05
ダウンサンプリングは要するに音声データ圧縮技術の一部で、まだ(幾らかは)
動いている研究分野だと聞いたことがある。
宿題だとしてもどーしてもC言語で書かなければならないという必然性が見いだしにくい。
ひとえに理論だとかライブラリがどの程度揃っているかに依存する問題じゃないかと。
そういうスペシフィックで流動性が高い(というか最終的には主観的価値評価が)含まれる
問題はここで聞かれても最善の回答が出てくることはあんまし期待しないほうがいいかも。
375デフォルトの名無しさん:2009/07/02(木) 01:57:11
>>357の42pにダウンサンプリングの具体例があってデシメーションフィルタを通すって書いてあるじゃん
376デフォルトの名無しさん:2009/07/02(木) 01:58:34
>>373
snd->sounddata[i] == snd->sounddata[i]/2;  信号値を半分にする?
これは半分にしないw
こではサンプリング周波数で切り刻んだ波形の振幅だw
377デフォルトの名無しさん:2009/07/02(木) 02:01:12
>>368
あれ?URL間違えて書いてたのか・・・。
正しくは以下で。まぁもう自力で見つけちゃってるみたいですが。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9628.c
文字コードはUTF-8です。
378デフォルトの名無しさん:2009/07/02(木) 02:04:51
>>376
「==」に気づかんかったwww orz
ついでに信号値=振幅のつもりだったんだけど通じんかったか

>>355
>周波数成分を除去したいが、
なら信号値(サンプリング周波数で分割した波形の振幅)をあれこれするわけか
>>373の下2行は忘れてくれ
379デフォルトの名無しさん:2009/07/02(木) 02:08:10
>>372〜375
答えが欲しいのです。考え方が理解できていないのでプログラムを書いてみようと思ったのですが、
当然理解できていないので詰まってしまったのでここで聞いてみたのです。
サンプリング周波数は特定の点に限ればツールを使用すればダウンサンプリングも出来てしまうのですが、
それだと趣旨と異なりますね。。

最初に晒したソースはチグハグでしたね。
4倍というのは、エイリアシングの条件を逆だと勘違いしたので、もともと2倍までOK、なら半分ならその4倍までOKと
思ってしまったのです。
何かを0にする、というのは量子化された値を0にすれば(つまり1個おきにデータをとれば)どうなるのかなと思いました。
ちなみにそれならば0よりも128の無音にしたほうが妥当ですね。

えと、1個おきにデータを取得すると、データが半分になり、再生時間も半分になるじゃないですか。
その点はどうすればいいのでしょうか?
380デフォルトの名無しさん:2009/07/02(木) 02:13:59
>>379
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい
その代わり自分でも質問したようにノイズがでるからフィルターを通す必要があるんだよと・・・

ちょっとかじって勉強した程度なんでフィルタ部分はどうロジック化すればいいかわからんw
381デフォルトの名無しさん:2009/07/02(木) 02:17:23
あ、ごめん
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい
これは忘れて

サンプリングを間引けばいい

wavのヘッダにサンプリング周波数とかをちゃんと入れておけば再生時に
その数字を見てあわせてくれるから。
382デフォルトの名無しさん:2009/07/02(木) 02:23:25
一個おきにデータ破棄をしてみたら、やはり2倍速(再生時間が半分)で再生されました。
ここは削った値に前後の割った値を入れてらどうなるかなとも思うんですが、そうすると
サンプリング周波数がそのままでただ音質を劣化させただけになると思うんですよ。

>>380
音声データ数(再生時間に影響??)はそのままにするには無音にするべきなんですか?
一度してみたらキーンという音が発生します。。

383デフォルトの名無しさん:2009/07/02(木) 02:24:23
>>377
無事に見れました!

かなり難しかったのでこれ見ながらまた勉強したいと思います。
ありがとうございました。
384デフォルトの名無しさん:2009/07/02(木) 02:24:40
>>382
ヘッダを書き換えろよwww
385デフォルトの名無しさん:2009/07/02(木) 02:26:18
>>382
だからー

44.1khzを22.05khzにデータを削ったらヘッダの情報も書き換えないと駄目だってw
386デフォルトの名無しさん:2009/07/02(木) 02:27:35
387デフォルトの名無しさん:2009/07/02(木) 02:33:09
wavのファイルフォーマットはこんな感じね
http://www.kk.iij4u.or.jp/~kondo/wave/
・サンプリングレート
・データ速度 (Byte/sec)
のところをダウンサンプリング後の数字にすればいい

そうすれば再生側がここを元にタイミング調整するから
388デフォルトの名無しさん:2009/07/02(木) 02:33:51
>>384
おお、出来そうです!!

ちなみに、LPFを通すというのはどういう作業になるのでしょうか??
389デフォルトの名無しさん:2009/07/02(木) 02:34:11
あと

data チャンクの波形データのバイト数か
390デフォルトの名無しさん:2009/07/02(木) 02:34:54
>>388
さすがにその辺はこのスレに専門でやってるやつはいないと思うw
391デフォルトの名無しさん:2009/07/02(木) 02:38:39
392デフォルトの名無しさん:2009/07/02(木) 02:38:41
>>390
いたらだめかな…。
393デフォルトの名無しさん:2009/07/02(木) 02:40:46
394デフォルトの名無しさん:2009/07/02(木) 02:41:29
>>392
じゃあ頼むわ
俺も勉強してー
395358:2009/07/02(木) 02:45:40
>>386文字化けが><
396デフォルトの名無しさん:2009/07/02(木) 02:46:04
>>392
心強い。そしてここのスレの人、ありがとう。

だが、データ数を単純に半分にしてみたら、波形が線になっちゃったよ。
再生秒数がもともと6秒とかだったのが0.001とかのレベル。

ヘッダに入れるデータサイズはサンプル数*(チャンネル数*bit数/8)では?
それならばサンプル数を2で割るだけでおkかと思っていたんですが違うのでしょうか??
397デフォルトの名無しさん:2009/07/02(木) 02:48:25
>>396
その辺は>>387を参考に
398デフォルトの名無しさん:2009/07/02(木) 02:49:51
>>391
そのサイトは良く見るけど、はっきり言って自分の作るプログラムじゃないとあまり解らないんだ。
関数とかも学校の授業で習ったのしかしらなくてscanf()使ったらとあるサイトでボコボコに言われたし。。

解ってないところが解らないっていうのが苦痛
399386:2009/07/02(木) 02:56:34
>>395
UTF-8で。
400デフォルトの名無しさん:2009/07/02(木) 03:02:09
>>397
出来ました、forに巻き込まれていて1/2しすぎたようです。。。
抜け出したらバッチリ。


unsigned int i=0,t=0;
snd->samplingrate = snd->samplingrate/2;

for(i=0; i<snd->datanum; i++){
if(i%2 == 0){
snd->sounddata[t] = snd->sounddata[i];
t++;
}
}
snd->datanum = snd->datanum/2;

という感じで出来ました、が、LPFは通さなくても良いのでしょうか?
というか、LPFとはなんですか?なんとなく言っていることは解るんですが
プログラム的にはさっぱりわかりません。。
401デフォルトの名無しさん:2009/07/02(木) 03:09:13
>>400
この場合はダウンサンプリングすることによって本来あったはずの波形データが
なくなるのでその補完がフィルタなので、雑音とかができてもいいならフィルター無しでもいいんじゃないかな?

>>391
>Down sampling (48kHz -> 16kHz) with 7.7kHz low pass filter
ってなってるのでcoefは7.7kzのフィルター用の数値だと思う。
固定なので使いにくそうだけど

>>393の方は計算でこの辺の数字を求めてるようなので
使えそう

402358:2009/07/02(木) 03:13:08
>>386
やってみたんですが石が表示されませんでした
403デフォルトの名無しさん:2009/07/02(木) 03:18:54
>>401
私の作ったプログラムはヘッダを書き換えて、間引いたという手順ですが、
本来はLPFを使用してから行うものですよね?

補完とはどこを補完するのですか?
是非ともLPFもプログラムとして理解して作りたいのですが
404デフォルトの名無しさん:2009/07/02(木) 03:25:54
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9641.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C
[4] 期限:今日12時
[5] その他の制限:ポインタとリストを最近習った

どうかお願いします
405386:2009/07/02(木) 03:37:02
>>402
じゃぁ解答の部分だけ扱いたい文字コードのファイルにコピペしていただく方向で。
406デフォルトの名無しさん:2009/07/02(木) 03:39:04
407デフォルトの名無しさん:2009/07/02(木) 04:00:30
>>406
あまり理解できませんでしたが、プログラム的には

またデータ部分をいじるわけですよね??LPFを通した後先ほどのプログラムで間引くと
きれいにダウンサンプリングできました。と、いえるわけですか??
408デフォルトの名無しさん:2009/07/02(木) 04:09:24
>>407
間引いたあとじゃないとノイズ成分が出ないと思うのでそのあとフィルターを通す感じ?
44.1KHzを22.05kHzにした場合はさらに半分の11.025khzのなんとかってなってたよね・・・・
409デフォルトの名無しさん:2009/07/02(木) 04:26:10
>>408
アンチエイリアシングフィルターは間引く前に通さないと意味無いよ。
410デフォルトの名無しさん:2009/07/02(木) 04:30:07
>>409
ああ、そっかすまそ
先に高い周波数成分をなくしてか・・・
寝ぼけてるな・・・
411デフォルトの名無しさん:2009/07/02(木) 04:35:32
>>408〜410
ですよね。

うーん、正直、さっぱりわからん。
LPFとはさ、高周波を取るわけじゃないですか?
周波数ってなんでブチって切れないの?
何を境にして切ってるの?
412デフォルトの名無しさん:2009/07/02(木) 04:38:09
413デフォルトの名無しさん:2009/07/02(木) 04:48:57
>>411
まあアナログ値をサンプリングしたことあるとよくわかるんですが
入力波形の最高周波数の倍は無いときっちり拾えないですよ。

まあその辺の説明は>>406の下の方の

>折り返し周波数
>
>じゃあ、具体的にどういうものがエイリアスとなるのか、というのが問題になるわけですが、
>サンプリングしたときにエイリアスが発生しない最高の周波数は、サンプリング周波数の1/2です。
>これを折り返し周波数といいます。上の例ではサンプリング周波数が2Hzだから、限界は1Hzという
>ことになります。

つまり44.1kHzのサンプリングレートというのは>>406にもこうあります
>一般的に用いられている44100Hz(CDのサンプリング周波数)では、折り返し周波数は22050Hzで、
>これは人間の耳に聞こえる最高の周波数20000Hzぐらいに合わせてあります。これは、けっこう
>ギリギリの周波数です。

つまりダウンサンプリングする場合はダウンサンプリング後のサンプリング周波数の半分を超える
周波数成分があるとノイズと化しますのでフィルターを通してなくしちゃいます。
414デフォルトの名無しさん:2009/07/02(木) 04:52:58
スペアナ(ロジアナ?)とかあの手の機械でも高周波を扱うのが高いのは扱う
周波数の倍以上のサンプリング能力が無いと波形チェックができないからでしたっけ?
安い機械はあんまり高い周波数は扱えません。(すげー予断
415デフォルトの名無しさん:2009/07/02(木) 05:01:11
>>404
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9643.txt
windowsのコンソールアプリとしてテスト済み
たぶんOKだと思います。
416デフォルトの名無しさん:2009/07/02(木) 05:19:06
>>413
>>414
なんというか、FFTを用いて、周波数解析を用いるじゃないですか。
それで、出た値の高周波を0にして、逆FFTを用いることを時間軸ごとに
区切ってしていけば高周波をブチっと切れないのかな、と。

考え方がそもそも変ですか??
417デフォルトの名無しさん:2009/07/02(木) 05:31:59
>>416
その方法でいいのかもしれませんね。
http://homepage2.nifty.com/kirislab/chap5_mri/fourierConv.html
418デフォルトの名無しさん:2009/07/02(木) 05:36:42
>>416
プログラム的には高周波をゼロにする周波数特性を逆FFTしたものと
入力信号との畳み込み演算を行えばいい
419デフォルトの名無しさん:2009/07/02(木) 05:43:36
>>418
いままでのを踏まえてロジック的には>>393
http://www.geocities.jp/horie_ryu/page05/lpf.c
ですかね
420デフォルトの名無しさん:2009/07/02(木) 06:07:22
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):下記
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:Visual stdio2008
 [3.3] 言語: C
[4] 期限: 2009年7月2日8時40分まで
[5] その他の制限: どういう風に動いているか説明しなければならない&できるだけ簡単に
構造体 score 型の変数 seito1 と seito2 が宣言されている. seito1 の内容をそのまま seito2 へ代入したい. 次のプログラムの @ の部分を埋めよ.
int main( void )
{
struct score seito1, seito2;
strcpy(seito1.name, "yamada");
seito1.english = 50;
seito1.mathematics = 70;
@
printf("名前:%s\n英語:%d\n数学:%d\n ", seito2.name, seito2.english, seito2.mathematics);
return 0;
}
421デフォルトの名無しさん:2009/07/02(木) 06:12:04
seito2 = seito1;
422デフォルトの名無しさん:2009/07/02(木) 09:39:33
ダウンサンプリング:方法は1つに定まらないし、どんな音源に対しても通用する方法も
無いと思われ。(人の耳と脳がどう感じるかが最終的に問題になる。心理が絡んでくる
問題なんで)
423デフォルトの名無しさん:2009/07/02(木) 11:15:32
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
  
 2つの正整数 m とn とを引数として受け取り、m と n の最大公約数を戻
り値として返す関数gcd()を作成する。この関数を用いることにより、キー
ボードから入力した3つの正整数 a, b, c の最大公約数を求めるプログラム
を書け。

注意: 最大公約数を計算するには次のような「ユークリッドの互除法」を
用いるとよい。

「ユークリッドの互除法」
 2つの正の整数 m、n(m>n)の最大公約数を求めるには、m を n で割っ
て余り r1 を求め、次に n を r1 で割って余り r2 を求め、・・・、この
ように大きい方を小さい方で割って余りを求め、最後に割り切れたときの除
数が求める最大公約数である。

例)440/380=1余り60 
  380/60=6余り20  
  60/20=3 余りなし
 したがって、440と380の最大公約数は20 


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: c++ builder
 [3.3] 言語: C
[4] 期限: 20009年m7月3日12:00まで
[5] その他の制限:できるだけシンプルにお願いします。よろしくお願いします。
424デフォルトの名無しさん:2009/07/02(木) 11:28:53
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9645.txt
[3] 環境
 [3.1] OS:Linux
 [3.2]gcc
 [3.3] 言語: C
[4] 期限:7/3
[5]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9644.txtのファイル名はseiseki.txtでお願いします
ポインタは使用不可です

425デフォルトの名無しさん:2009/07/02(木) 11:48:24
426デフォルトの名無しさん:2009/07/02(木) 11:54:07
>>424
ポインタ使わないとか、可能なのか?
427425:2009/07/02(木) 11:57:38
m=m%n;
i=m; m=n; n=i; って、

i=m%n; m=n; n=i; で良いな。無駄な代入してるや。
428デフォルトの名無しさん:2009/07/02(木) 11:59:55
>>426
ポインタの価値を理解するためにわざわざ回りくどいプログラムを書かせるのが目的だそうです
429デフォルトの名無しさん:2009/07/02(木) 12:00:11
>>423
まぁまぁコンパクトにしてみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9648.c
430デフォルトの名無しさん:2009/07/02(木) 12:01:34
>>428
ポインタ使わないとファイルが読み込めないぞ
431デフォルトの名無しさん:2009/07/02(木) 12:02:53
>>429
大小関係チェックしてねぇw
432 ◆/91kCCQXBo :2009/07/02(木) 12:28:14
>>296 ユーザーインターフェースのメニューは、自分で追加できると思うのでやってない。
ファイルに登録された成績コードを読み、動的に確保した生徒構造体の領域にデータを編集
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/9-10
433デフォルトの名無しさん:2009/07/02(木) 13:21:05
434デフォルトの名無しさん:2009/07/02(木) 13:38:30
[1] 授業単元:C言語
[2] 問題文:単純なオセロゲーム
[3] 環境:
 [3.1] OS: Unix
 [3.2] gccでコンパイル
 [3.3] (C/C++/どちらでも可 のいずれか)
[4] 期限: 来週・・7月9日 
[5] その他の制限:特になしです
勝敗と成績がわかるものがよいです。
よろしくお願いします。
435デフォルトの名無しさん:2009/07/02(木) 13:46:40
>>424
433に先こされてしまったが。負の数は知らない
ポインタなし ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9651.c
436デフォルトの名無しさん:2009/07/02(木) 14:06:01
こういうコード書くからCプログラマが落とさなくても良い信用を落とすのではないかと杞憂
もう少しエスパーしてやったらいいんじゃないかと...
437デフォルトの名無しさん:2009/07/02(木) 14:41:33
杞憂ならいいじゃん
438デフォルトの名無しさん:2009/07/02(木) 14:43:47
>>436
そもそもこんなところに○投げにくるやつらの評価なんてどうでも・・・
439デフォルトの名無しさん:2009/07/02(木) 14:58:03
>>424
#include <stdio.h>
int seiseki[]={70 56 66 45 88 66 85 68 55 73 55 65 53 67 55 85 72 76 58 65,
92 70 45 73 55 56 57 52 62 82 72 62 33 85 95 46 95 48 72 34,
83 42 88 92 56 68 65 91 82 66};//コンマ省略
...
440デフォルトの名無しさん:2009/07/02(木) 14:58:31
>>333,342
範囲外なら再入力させるところは間違ってるかも
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9652.c
441デフォルトの名無しさん:2009/07/02(木) 15:19:05
ポインタ使用不可なのに配列を使っていいんだろうか
442デフォルトの名無しさん:2009/07/02(木) 15:22:30
「配列使用時には(まだ習ってもない)ポインタを使用してはいけない」ぢゃないのか?
443デフォルトの名無しさん:2009/07/02(木) 15:24:51
〔1〕授業単元:C言語
〔2〕問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9654.txt
〔3〕環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
〔4〕期限:7月3日 12時
〔5〕ポインタ、配列、リスト構造まで習いました
   よろしくお願いします
444デフォルトの名無しさん:2009/07/02(木) 15:25:31
>>441
配列のその辺の扱いは多少大目に見るべきじゃないだろうか。
ポインタに成り下がれるとかいうんだっけ?
時々その辺のネタで荒れるスレ知ってるが
445デフォルトの名無しさん:2009/07/02(木) 15:34:17
あからさまに
 int *a とか
*(a + 1) とか
malloc/callocしてアドレスを渡して回るとか
こういうのやらなければいいんじゃね。
446デフォルトの名無しさん:2009/07/02(木) 15:35:45
ポインタ使用不可ってのは「*」使用不可ってことなのか?
a[i]だろうが*(a + i)だろうがポインタを使ってることに変わりないんだが
447デフォルトの名無しさん:2009/07/02(木) 15:37:14
やっぱ荒れだすなww
448デフォルトの名無しさん:2009/07/02(木) 15:43:45
>>446
確かにそうだけど、>>424の問いが言いたいのは
定義後に保持するアドレスを自由に変更できるポインタ変数の便利さを知れってことでしょ。
そう考えれば配列は使っていいことになる。

出題者が本当にそういう意図で出したのかどうかは知らん。
449425:2009/07/02(木) 15:54:16
>>434
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9655.txt
かなり適当だけど「単純なオセロ」ぐらいにはなってるかと。
450デフォルトの名無しさん:2009/07/02(木) 16:14:04
>>443
/* 課題1 */
#include <stdio.h>
#include <math.h>
int main() {
struct Vertex { double x, y; } verA, verB, verC, verD;
printf("verA (x, y): "); scanf("%lf %lf", &verA.x, &verA.y);
printf("verB (x, y): "); scanf("%lf %lf", &verB.x, &verB.y);
printf("verC (x, y): "); scanf("%lf %lf", &verC.x, &verC.y);
printf("verD (x, y): "); scanf("%lf %lf", &verD.x, &verD.y);
if (verA.y != verB.y || verC.y != verD.y) {
printf("error\n");
} else {
printf("area: %g\n", (fabs(verA.x-verB.x)+fabs(verC.x-verD.x))*fabs(verA.y-verC.y)/2);
}
return 0;
}
451デフォルトの名無しさん:2009/07/02(木) 16:14:06
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9656.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限: 7/6
 よろしくお願いします。
452デフォルトの名無しさん:2009/07/02(木) 16:17:23
>>443 無理やり1レスでスマソ
/* 課題2 */
#include <stdio.h>
#include <stdlib.h>
struct Node { int value; struct Node *next; };
struct Node *init_list() {
struct Node *root = (struct Node *)malloc(sizeof(struct Node));
root->value = 0; root->next = NULL; return root;
}
void add_node(struct Node *root, int value) {
struct Node *p = root->next, *q = root;
while (p) { q = p; p = p->next; }
p = (struct Node *)malloc(sizeof(struct Node));
p->value = value; p->next = NULL; q->next = p;
}
void make_list(struct Node *root) {
int value;
printf("Insert:\n");
while (scanf("%d", &value) != EOF) { add_node(root, value); }
}
void show_list(struct Node *root) {
struct Node *p = root->next;
printf("Show:\n");
while (p) { printf("%d\n", p->value); p = p->next; }
}
void free_list(struct Node *root) {
if (root) { free_list(root->next); free(root); }
}
int main() {
struct Node *root = init_list();
make_list(root); show_list(root); free_list(root); return 0;
}
453デフォルトの名無しさん:2009/07/02(木) 16:44:35
>>449
ありがとうございます。
動作確認しました、問題なかったです。
たすかりました^v^
454デフォルトの名無しさん:2009/07/02(木) 17:41:54
[1] 授業単元: 情報プログラミングC
[2] 問題文(含コード&リンク): 7リットルと5リットルのバケツを使って、どちらか一方のバケツに4リットルの水を入れる方法を探す。
[3] 環境
 [3.1] OS: 窓VISTA
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] 言語: C
[4] 期限: 7/2
[5] その他の制限: 実行できる操作
(a)水道から新たに水を入れてバケツを満杯にする(b)バケツの水を全部捨てる
(c)一方のバケツの水を他方のバケツが満杯になるまで注ぐ(d)一方のバケツの全部の水を他方のバケツに注ぐ
初期状態は両方0リットル。幅優先探索と待ち行列を使用。ただし、ポインタと構造体は使わない。
455デフォルトの名無しさん:2009/07/02(木) 17:52:28
>>450>>452
非常に助かります
ありがとうございました
456デフォルトの名無しさん:2009/07/02(木) 19:10:32
>>454
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9657.txt
待ち行列を使用ってのがよくわからんかった。
current_rankは削除しそこねなんで消して(それで再アップするのもなんなんで)。
457 ◆/91kCCQXBo :2009/07/02(木) 19:54:17
>>454 3を5に、4を7に置き換えればOK。
データの受け渡しにポインタ使ってるけど。乱数使ってるから待ち行列に近いのかも。
add cup 7.
transfer from cup7 to cup5.
cup7=2, cup5=5
empty cup 5.
transfer from cup7 to cup5.
cup7=0, cup5=2
add cup 7.
transfer from cup7 to cup5.
cup7=4, cup5=5

>4リットルの容器と、3リットルの容器があり、これらを使って4リットルの容器に2リットルをはかる。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9266.txt
458デフォルトの名無しさん:2009/07/02(木) 20:11:16
> 乱数使ってるから待ち行列に近いのかも。
意味が分からん
459454:2009/07/02(木) 20:14:36
>>456>>457
どうもありがとうございました
助かります
460デフォルトの名無しさん:2009/07/02(木) 20:32:20
>>457
乱数使う意味がわからんけど、猿ソートっぽいことやってんの?
461デフォルトの名無しさん:2009/07/02(木) 20:43:13
ヒトだ。ソートは使っていない。
猿解説すると、次の4パターンの動作しかないので、3回の中でその順番をランダムに代えている。
・7リットルのカップを満タンにする(次は、7リットルのカップの中身を5リットルのカップに移す)
・5リットルのカップを満タンにする(略)
・7リットルのカップを空にする(略)
・5リットルのカップを空にする(略)
462デフォルトの名無しさん:2009/07/02(木) 21:03:57
>>446
ポインタを使うなっていうのは、
ポインタ変数を使うなってことでしょ。

aを配列で宣言していれば、
aは(ポインタに変換され得る)配列型の変数であって、
ポインタ型の変数じゃない。
463デフォルトの名無しさん:2009/07/02(木) 21:21:24
[1] 授業単元:Cプログラミング初級演習
[2] 問題文(含コード&リンク):
10個のdouble型の数値を読み込み、最小値の1個を除いた9個の数値の和を出力せよ。
例:1 2 3 4 5 6 7 8 9 10
  54.000000
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 
 [3.3] 言語:C
[4] 期限: 7/6まで

よろしくお願いいたします。
464デフォルトの名無しさん:2009/07/02(木) 21:29:15
>>463

#include <stdio.h>
#include <float.h>

int main(void){
double n;
double low = DBL_MAX;
double ans = 0;
int i;

for(i=0; i<10; ++i){
scanf("%lf", &n);
ans += n;
if(n < low) low = n;
}
ans -= low;
printf("%f\n", ans);
return 0;
}
465デフォルトの名無しさん:2009/07/02(木) 21:32:12
>>435
>>435
ありがとうございました
466デフォルトの名無しさん:2009/07/02(木) 21:45:37
>>464ありがとうございました
467デフォルトの名無しさん:2009/07/02(木) 21:56:51
>>461
あ、猿とはちょっと違ったのか。
てっきりランダムでごりごりやって気が済んだところでの最適解を使うとかそんなんかと。
468デフォルトの名無しさん:2009/07/02(木) 22:09:43
[1] 授業単元:プログラミング上級
[2] 問題文(含コード&リンク):
C言語を使ってどんな方法でもいいので
コナミコマンド、↑↑↓↓←→←→BAの順番に
ボタンを押されたか判断するプログラムを作成すること。
ヒント1:指定のキーが押される度に、フラグを立てて
最後に「A」が押されたら、処理を判断する
ヒント2:違う順序、または途中で違うキーが押されたらフラグをリセットする
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2009年7月6日10:00まで
[5] その他の制限:DXライブラリを使うこと
469デフォルトの名無しさん:2009/07/02(木) 22:21:30
初級上〜中級下ってとこじゃん
470デフォルトの名無しさん:2009/07/02(木) 22:27:26
ヒントがもはや解答に見える。
471デフォルトの名無しさん:2009/07/02(木) 22:29:00
慣れてないと結構面倒だな
ボタンの取得とか
472デフォルトの名無しさん:2009/07/02(木) 23:29:21
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9658.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:7/10
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします
473デフォルトの名無しさん:2009/07/02(木) 23:36:22
>>472
結果が変わってないんだが?
474デフォルトの名無しさん:2009/07/02(木) 23:42:20
>>473
すみません結果は

1 5 11 13 19
2 6 12 14 21
2 7 15 17 23
4 8 16 20 24
9 10 18 22 25

です
475デフォルトの名無しさん:2009/07/02(木) 23:59:50
476デフォルトの名無しさん:2009/07/03(金) 00:21:16
>>468ってけっこう簡単に見えて難しくないか?
てかコナミの入社試験でこんなのが昔あったな
477471:2009/07/03(金) 00:24:00
慣れてないと難しいよ
脳内にロジックはあるけど昨日の夜にパワー使ったのでいまいち乗らん
せめて中身は無くていいのDXライブラリの読み込んでウインドウを表示するのだけでもあれば・・
478デフォルトの名無しさん:2009/07/03(金) 00:25:58
方向キーの入力を取得するとか言う時点で
WindowsAPIかもっと上位のライブラリ使わないといけないしな

先生も
88224646ba
くらいで勘弁して上げたらいいのに
479471:2009/07/03(金) 00:27:30
>>478
DXライブラリはゲーム用なのでその辺は簡単
480デフォルトの名無しさん:2009/07/03(金) 00:35:25
>>468
環境合ってる?
481デフォルトの名無しさん:2009/07/03(金) 00:42:12
>>468をやるには最低限これはwin依存なんだとおもうけどgccで処理できたっけ?

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
}
482デフォルトの名無しさん:2009/07/03(金) 00:42:15
DXライブラリの仕様

--------------------------------------------------------------------------------

必須環境及びソフト

 Windows98以降のOS
 VisualC++ 6.0以降 又は BorlandC++ Compiler 5.5
483デフォルトの名無しさん:2009/07/03(金) 00:44:22
まあVS2008のVC++2008でやってるからそれもってくればいいよ
あとこのライブラリは龍神録が使ってるからそこを見れば基本的なことはわかるよ
484デフォルトの名無しさん:2009/07/03(金) 00:49:58
>>481
gccでもできるよ
コンパイル・リンクするときにどんなオプションつければいいかは忘れたけど
485468 :2009/07/03(金) 00:56:27
すみません。コンパイラはVisualStudio2008でした。
よろしくお願いします。
486デフォルトの名無しさん:2009/07/03(金) 01:10:05
>>468
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    int cmd[] = { KEY_INPUT_UP, KEY_INPUT_UP, KEY_INPUT_DOWN, KEY_INPUT_DOWN,
        KEY_INPUT_LEFT, KEY_INPUT_RIGHT, KEY_INPUT_LEFT, KEY_INPUT_RIGHT,
        KEY_INPUT_B, KEY_INPUT_A };
    int key, cnt, num;

    ChangeWindowMode(TRUE);
    DxLib_Init();

    DrawString(5, 5, "Waiting for your namco command...", GetColor(0xFF, 0xFF, 0xFF));

    cnt = 0;
    num = sizeof(cmd) / sizeof(int);
    while(key = WaitKey()){
        if(cmd[cnt] == key) cnt++;
        else cnt = 0;
        if(cnt >= num) break;
    }
    DrawString(5, 30, "Your namco command was accepted! Press any key to exit.", GetColor(0xFF, 0xFF, 0xFF));
    WaitKey();

    DxLib_End();

    return 0;
}
487デフォルトの名無しさん:2009/07/03(金) 01:11:34
あ、頭にナムコがあってnamcoなんて入れてしまった。
namco command → konami commandで。

恥ずかしい。
488デフォルトの名無しさん:2009/07/03(金) 01:21:12
宿題じゃないけど聞きたいのですが
テキストファイルの中身を出力したいと思っています。
そこで次のようなプログラムを作ったのですが
FILE *fp;
fp=fopen("hoge.txt","r");
for(i=0; i<10; i++){
printf("%c\n",fp);
*fp++;
}
fclose(fp);
文字化け?みたいな状態になってしまいました。
そのまま出力したい場合にはどのようにすればいいでしょうか?
489デフォルトの名無しさん:2009/07/03(金) 01:23:22
fpじゃ読めないよ
読み込み関数あるからfopen関連で調べてみ
490デフォルトの名無しさん:2009/07/03(金) 01:24:39
>>488
そのポインタが何を指していて、どのようにして内容を読み出し変換されるかをすっ飛ばしてるなぁ。
491デフォルトの名無しさん:2009/07/03(金) 01:49:10
>>488
こんなかんじか

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

int main(void){
FILE *fp;
fp = fopen("hoge.txt", "r");
if(fp == NULL) exit(-1);
for(;;){
int c = getc(fp);
if(c == EOF) break;
putc(c, stdout);
}
return 0;
}
492デフォルトの名無しさん:2009/07/03(金) 01:50:02
>>491
あ、fcloseしてなかった
493デフォルトの名無しさん:2009/07/03(金) 02:02:07
[1] 授業単元:Cプログラミング入門編
[2] 問題文(含コード&リンク):http://www-it.sci.waseda.ac.jp/CPR1/class08/kadai2.htm
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限: 09年07月16日
[5] その他の制限: ど素人です。本当にごめんなさい。よろしくお願いします。
494デフォルトの名無しさん:2009/07/03(金) 02:04:17
↑補足です。
main関数を使えとの指示がありました。
495デフォルトの名無しさん:2009/07/03(金) 02:13:07
だれ・・・・か・・・・

[1] 授業単元:C++プログラミング
[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9636.txt
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 09年7月2日
[5] その他の制限:
496デフォルトの名無しさん:2009/07/03(金) 02:22:42
>>495
昨日かおととい同じものがあったよw
497デフォルトの名無しさん:2009/07/03(金) 02:25:03
抽出してみたら>>342だな
498デフォルトの名無しさん:2009/07/03(金) 02:27:16
完成してなかったのかw
499デフォルトの名無しさん:2009/07/03(金) 02:38:30
完成してないです・・・何度も同じ書き込みするのはよくないとわかっていつつも・・・この宿題を出さないと
500デフォルトの名無しさん:2009/07/03(金) 02:43:44
>>495
って>>440は確認したか?
501デフォルトの名無しさん:2009/07/03(金) 02:50:09
>>440さんの見逃してました・・・・。
本当に申し訳ございません!!!!
>>500さんと>>440さんありがとうございます!
502デフォルトの名無しさん:2009/07/03(金) 03:22:20
>>471
DXの関数はある程度知ったが、アルゴリズムを考える力が圧倒的に足りない感じなのか
ヒント通りにやろうとするからめんどくさいのであって、各ゲーのコマンド判定ロジックと同じようにすれば楽かと思うよ
503デフォルトの名無しさん:2009/07/03(金) 03:22:27
>>489
すぐに返事をいただけまして助かりました。ありがとうございます。
>>491
ご丁寧にプログラムまでいただきありがとうございます。
fopen関係を調べまして何とか自力で解決に至る事ができました。
私はfscanfを用いましたので、1文字ずつのプログラムは助かります。
本当にありがとうございました。
504451:2009/07/03(金) 07:43:26
問題のサンプルプログラムが間違ってました。申し訳ないですが再度投稿します。
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9662.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:7/6
よろしくお願いします。
505未解決課題:2009/07/03(金) 12:23:34
>>493(waseda/kadai2) 2問。N×N行列とN次の列ベクトルをかける関数を作り、v_0を とし、行列Pを としたときにあらかじめ決めたnに対してベクトルv_1,v_2,...,v_nのすべての要素を に従って計算し表示せよ。 7月16日
>>451>>504 最短路問題を解くアルゴリズムとしてベルマンフォード法がある。 7月6日
>>292 SimMipsにデータキャッシュのヒット率を測定する仕組みを追加し、ヒット率を測定せよ。 7月4日 15:00
>>286(CODE) ルンゲクッタ法 テンプレ無し(不明)
>>273 シンプレックス法のプログラム 7月1日
>>234 >>251(9608)(2) 正規乱数の発生 (ボックスミュラー法)。平均値を求める関数 標準偏差を求める関数 ヒストグラムを作成 7月5日12:00
>>213 アルゴリズムの異なる2つのプログラムを作成し、処理時間の違いを比較せよ。例:マージソートとバブルソート 7月7日
>>192 >>195(10_3)マージソート。 6月30日20:00
>>184 2問。T,スタックによる処理順序を確認するU,キューによる処理順序を確認する 6月29日
>>157 f(x)=xe^x-3を、ニュートン法と二分法で解く 6月29日15時
>>134 2問(往復)。整数と4つの演算子(+, -, *, /)から成る計算木から計算式の文字列を作成する関数 6月30日
>>126 クイックソートで昇順に並べ替える。二分木の中間走査によって昇順に並び変える。 6月28日
506デフォルトの名無しさん:2009/07/03(金) 12:51:52
>>325
コンパイルできなくて、エラーがでました。
ld: 0711-317 ERROR: Undefined symbol: .cos
ld: 0711-317 ERROR: Undefined symbol: .pow
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

どうしたらいいかわからないんで教えてください
507デフォルトの名無しさん:2009/07/03(金) 13:13:41
>>506
math.hが上手く読み込めてないからだとは思うけど。
#include <math.h> 、消してない?

ダメそうなら、コンパイル環境を教えてもらえれば。
508デフォルトの名無しさん:2009/07/03(金) 13:18:19
>>506
コンパイルの引数に、
-lm
を追加
509デフォルトの名無しさん:2009/07/03(金) 13:27:00
>>506
#include <stdio.h>
#include <math.h>
>>508 それはコンパイルエラーではないはず。
510デフォルトの名無しさん:2009/07/03(金) 13:39:39
>>509
エラーメッセージを出しているのは、ld つまりリンカ。
外部参照のシンボル cos が未定義、見つからないよと言っている。
だから、そのありかを教えてやれば良い。
511デフォルトの名無しさん:2009/07/03(金) 14:55:39
[1] 授業単元:情報基礎B
[2] 問題文(含コード&リンク):試験の点数10人分をキーボードから入力し、以下の内容を出力するプログラムを作成せよ。
平均点、標準偏差、得点の高い順の点数リスト(出来れば、バブルソート以外のアルゴリズムでお願いします。)
[3] 環境
 [3.1] OS: Turbo Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月7日まで
[5] その他の制限:特にありません。よろしくお願いします。
512デフォルトの名無しさん:2009/07/03(金) 15:35:32
>>493
最後の方の問題がよくわからなかったので、途中までだけれど
http://codepad.org/vgTW6ME3

『ベクトルv_1,v_2,...,v_nのすべての要素を計算し表示せよ。』まで実装済み
80行あたりまでが汎用の行列演算処理で、それ以降が今回の問題を解いている
513512:2009/07/03(金) 15:39:58
「MltMatrix」って略し方に絶望した そこは「MulMatrix」だろぉぉぉorz
あと、SetMatrixRow関数の呼び出しでコンパイルエラーがでるようならコメントアウトを外してみて
SetMatrixRow(mat, 0, (NUM[]){3}/*&_v0[0]*/); → SetMatrixRow(mat, 0, &_v0[0]);
514デフォルトの名無しさん:2009/07/03(金) 15:45:50
ピタゴラス数が生成されるみたいだね
515デフォルトの名無しさん:2009/07/03(金) 16:07:54
516デフォルトの名無しさん:2009/07/03(金) 16:22:29
>>514
この方法(ピタゴラス数を行列で計算する)は面白いな。初めてみた。
ぐぐったら「ピタゴラス行列」とか呼ばれてて、算数の愛好家には有名みたいだ。
517デフォルトの名無しさん:2009/07/03(金) 16:32:04
>>512さん
本当にありがとうございます。とても助かります。
ちょっとコンパイルしてみます。
518511:2009/07/03(金) 16:32:13
>>515

/tmp/cc9mdrSa.o(.text+0x1f2): In function `main':
: undefined reference to `pow'
/tmp/cc9mdrSa.o(.text+0x217): In function `main':
: undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました


コンパイルしてみたのですが、こんな表示が出ました。
これはどういうことでしょうか?
519デフォルトの名無しさん:2009/07/03(金) 16:35:28
520デフォルトの名無しさん:2009/07/03(金) 16:36:58
>518
その二つの関数が無かったよと

コンパイルの最後にmathが提供してる関数をくっつける作業があるんだけど
そのリンクの段階でもなかったよといわれてる

コンパイルで -lm つけないと
521デフォルトの名無しさん:2009/07/03(金) 16:37:29
初歩的なことですが・・・
std::string aa;
aa.size(128);
char bb[128];
aaにbbを指定バイト分コピーするにはどうしたらいいですか?
ちなみにbbには0x00を含むバイナリデータも含んでいます。
522デフォルトの名無しさん:2009/07/03(金) 16:37:53
どこにつけていいかわからないなら
makefileの中晒して
523デフォルトの名無しさん:2009/07/03(金) 16:43:22
>>521
aa.assign(bb, bb + sizeof bb)
524デフォルトの名無しさん:2009/07/03(金) 16:49:36
>>523
できました。ありがとうございます。
525522:2009/07/03(金) 16:50:07
makefileって何ですか??
526デフォルトの名無しさん:2009/07/03(金) 16:55:43
出題がgccである事をいい事にまたC99でソースを書いてるカスがいるな
527デフォルトの名無しさん:2009/07/03(金) 16:59:09
>>525
拡張子無しのmakefileというのがあるんだけど
コンパイルってmakeとかmake rebuildとかコマンドでやてるんでしょ?
528511:2009/07/03(金) 17:02:35
>>527

cc ファイル名.c ってやるとコンパイルできるタイプなんですが・・・・
529デフォルトの名無しさん:2009/07/03(金) 17:10:43
ソースは何で編集してるんだろうww
linuxのコマンドとかそんなのまで説明しないといけないのか?
530511:2009/07/03(金) 17:13:45
kwrite編集して、コンソールでこんぱいるしておます。
531511:2009/07/03(金) 17:15:49
kwriteで編集して、コンソールでこんぱいるしておます。
532511:2009/07/03(金) 17:31:32
>>529

いま言われた通りやってみたらできました!!!

ご迷惑お掛けしました。ありがとうございました!
533デフォルトの名無しさん:2009/07/03(金) 17:56:21
まじ神っす!!
534デフォルトの名無しさん:2009/07/03(金) 19:01:05
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
例えば下図に示すように,通行可能なマス目に'0'が,障害物があって通行不能なマス目に'+'が記されている盤がある.
盤の左上をスタート地点,右下をゴール地点として,経路を表示するプログラムを作りなさい.
盤の例
0 0 + 0 +
+ 0 0 0 +
0 + + 0 0
0 0 + 0 0
+ 0 0 0 0

例えばこのようなアルゴリズムが考えられる.

1) 現在位置を表示の後、進行方向に対して,右に進めるなら右に,そうでなければ直進,それもだめなら左に,さらにそれもダメなら後退する.
2) 1を繰り返してゴールに達したらその旨を表示する.ただし,マス目の数分だけ移動してもゴールに達しない場合はその時点で終了する.

入力形式は、

%> ./a.out 00+0+ +000+ 0++00 00+00 +0000

とする.

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

お願いします。
535デフォルトの名無しさん:2009/07/03(金) 20:06:23
>>534 右手沿い
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char *argv[]){
int width[100]={0}, height, try_count=0, i, j, x=-1, y=0, d, pd=0;
int vx[4]={ 1, 0,-1, 0}, vy[4]={ 0,-1, 0, 1};

if(argc<2) return 1;
height=argc-1;
for(i=0;i<height;i++){
try_count+=(width[i]=strlen(argv[i+1]));
for(j=0;argv[i+1][j];j++) printf("%c ", argv[i+1][j]);
printf("\n");
}
for(i=0;i<try_count;i++){
for(j=0;j<4;j++){
d=(pd+j+3)%4;
if(x+vx[d]<0 || x+vx[d]>=width[y] || y+vy[d]<0 || y+vy[d]>=height) continue;
if(argv[y+vy[d]+1][x+vx[d]]!='0') continue;
x+=vx[d];
y+=vy[d];
pd=d;
break;
}
if(x==width[y]-1 && y==height-1) break;
}
if(i<try_count) printf("\nゴールに達した\n");

return 0;
}
536デフォルトの名無しさん:2009/07/03(金) 20:35:10
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): 乱数を使って配列に値を代入するようにせよ。サイズを変化させて時間を計測してみせよ。
サイズが十倍になると計算結果は何倍になるか?
[3] 環境
 [3.1] OS: Windows/vista
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: ([2009年07月9日まで]
[5] その他の制限: 乱数はrand()関数、clock()関数を利用する。
537デフォルトの名無しさん:2009/07/03(金) 20:38:01
>>536の参照データっぽいもの
#include<stdio.h>
void soft_swap(int *x,int *y)
{
int temp;
if(*y<*x){temp=*y;
*y=*x;
*x=temp;}}
void sort_array(int a[],int size){
int i,j;
for(j=0;j<size-1;j++){
for(i=0;i<size-1;i++){
soft_swap(&a[i],&a[i+1]);}}}
int main()
{
int a[100],i,size;
printf("数列のサイズを入力してください\n");
scanf("%d",&size);
printf("数列を入力してください\n");
for(i=0;i<size;i++){
scanf("%d",&a[i]);}
printf("\n");
for(i=0;i<size-1;i++){
sort_array(a,size);}
for(i=0;i<size;i++){
printf("%d",a[i]);}
printf("\n");
return(0);
538デフォルトの名無しさん:2009/07/03(金) 21:14:23
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9667.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7月8日 17:00
[5] その他の制限:
539デフォルトの名無しさん:2009/07/03(金) 21:56:21
>>538 課題5
始めにファイル名入れる?
540デフォルトの名無しさん:2009/07/03(金) 22:08:20
1] 授業単元: 数値計算プログラミング
[2] 問題文(含コード&リンク): (1)√57を求めよ (2)三乗根の7を求めよ
               (3)f(x)=3x^3+2x^2+5x-15=0の解を求める
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限: ([2009年07月10日まで]
[5] その他の制限:ニュートン法を用いる 初期値 x0=1
541デフォルトの名無しさん:2009/07/03(金) 22:24:47
>>536
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9669.c

こんなくだらない内容だと解釈したけど本当に合ってるのだろうか・・・。
542 ◆/91kCCQXBo :2009/07/03(金) 22:43:48
543デフォルトの名無しさん:2009/07/03(金) 23:07:12
>>540
// ニュートン法で「f(x) = 0」を解く
#include <iostream>
// f(x) および f'(x)
double f1(double x) { return x*x - 57; }
double f1d(double x) { return 2*x; }
double f2(double x) { return x*x*x - 7; }
double f2d(double x) { return 3*x*x;}
double f3(double x) { return 3*x*x*x + 2*x*x + 5*x - 15; }
double f3d(double x) { return 9*x*x + 4*x + 5; }
int main() {
int n; double x; // 繰り返し回数、初期値
n = 10; x = 1.0;
while (n--) { x -= f1(x) / f1d(x); }
std::cout << "(1) " << x << std::endl;
n = 10; x = 1.0;
while (n--) { x -= f2(x) / f2d(x); }
std::cout << "(2) " << x << std::endl;
n = 10; x = 1.0;
while (n--) { x -= f3(x) / f3d(x); }
std::cout << "(3) " << x << std::endl;
return 0;
}
544デフォルトの名無しさん:2009/07/03(金) 23:50:03
いきなりですいません!!
コンパイラしてくれるサイトってありませんでしたっけ??
以前使ったんですけど忘れてしまって...CやらC++やら選択できてコンパイルしたいデータ貼っつけてって感じのダウンロードいらずのサイトなんですけど。。;;
ネットで調べているんですが出てこなくて。
場違いなのはわかっていますが
ここの人なら知ってると思いまして。。
本当すいません
545デフォルトの名無しさん:2009/07/03(金) 23:52:49
>>544
codepad でググるとか
546デフォルトの名無しさん:2009/07/04(土) 00:07:07
そう!それです!codepadでした!!
早くも返答ありがとうございます!
なんかスッキリしましたw
これでレポートだせそうです。
ありがとうございます!
547デフォルトの名無しさん:2009/07/04(土) 00:38:41
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,非負の整数値を読み込んで,その数を逆順に表示するプログラムを作成せよ。
なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること。

非負の整数を入力してください: 1963
1963 を逆から読むと3691 です.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月04日
[5] その他の制限:なし。
548547:2009/07/04(土) 00:41:31
[4] 期限: 09年07月06日
でした^^;
549デフォルトの名無しさん:2009/07/04(土) 01:01:56
[1] 授業単元: プログラミング
[2] 問題文
二つの整数をキーボードから入力して、ユークリッドの互除法を用いて最大公約数を求めよ。
ただし、関数の再帰呼び出しを用いること。
[3.1] OS Windows
[3.2]VisualC++
[3.3] 言語 C++
[4] 期限:7月6日


わかる方どうかよろしくお願いします。
550デフォルトの名無しさん:2009/07/04(土) 01:13:10
>>547
#include <stdio.h>
int main(void) {
int input;
do {
printf("非負の整数を入力してください: ");
scanf("%d",&input);
} while(input < 0);
printf("%dを逆から読むと",input);
do {
printf("%d",input % 10);
input /= 10;
} while(0 < input);
printf("です");
return 0;
}
551デフォルトの名無しさん:2009/07/04(土) 01:13:59
>>549
#include <iostream>

int gcd(int a, int b)
{
int r = a % b;
if(r==0) return b;
return gcd(b, r);
}

int main()
{
int a, b;

std::cin >> a >> b;

std::cout << gcd(a,b);
}
552デフォルトの名無しさん:2009/07/04(土) 01:19:19
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
(1)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9670.txt
(2)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9671.txt
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 3日後まで
[5] その他の制限: 構造体
よろしくお願いします。

553デフォルトの名無しさん:2009/07/04(土) 01:22:20
>>547
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9672.c
無駄に1023桁までの非負の整数値で遊べるようにしてみた。
554デフォルトの名無しさん:2009/07/04(土) 01:26:10
表示するだけなのに、いちいち逆順の文字列を作るのは無駄。
555デフォルトの名無しさん:2009/07/04(土) 01:33:16
それ以前に
>*(reverse + length - i - 1) += *(str + i);
これはねーよw
556デフォルトの名無しさん:2009/07/04(土) 01:33:28
>>554
つい、後でこれを他にも使いまわすように拡張するかもしれんとか考えちゃう人でごめんね。
557デフォルトの名無しさん:2009/07/04(土) 01:35:48
>>555
じゃぁどう書けばいいと思う?
558デフォルトの名無しさん:2009/07/04(土) 01:36:55
こんな題意も満たしてない糞コード、他に使いまわすとか正気かよw
559デフォルトの名無しさん:2009/07/04(土) 01:42:07
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):url.txtに書き込まれている"ttp://〜をhttp://〜に書き換えresult.txtに出力せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年07月05日19:00まで
[5] その他の制限: とくになし

よろしくお願いします.
560デフォルトの名無しさん:2009/07/04(土) 01:43:33
>>559
追記です

できればコメントも書いて頂けるとうれしいです.
561デフォルトの名無しさん:2009/07/04(土) 01:46:53
>>557
普通に計算だけでなんとかならねえ?
562デフォルトの名無しさん:2009/07/04(土) 01:54:39
+=じゃなくて=
mallocで確保した領域は0クリアされてるとは限らない。
そこに文字を足すと元の文字とは別になる可能性が高い。

っていうかお前>>346だろ?
似たようなことやっときながら、全然成長してないのな。
563デフォルトの名無しさん:2009/07/04(土) 01:55:21
>>553
mallocの確認と解放してない。
書き捨てPGならいいけど、課題ならやっととかないと講師がうるさい。

fgetsでは常に改行が入るとは限らないからmain文のfor文で暴走の可能性あり。

っていうかstrlenとかstrchr使えばおk
564デフォルトの名無しさん:2009/07/04(土) 01:58:06
>>561
ちょっと頭冷やしてきて改めて見たら、言われた通り糞コードだった。
565デフォルトの名無しさん:2009/07/04(土) 02:07:37
566デフォルトの名無しさん:2009/07/04(土) 02:15:34
>>562
そこは普通に書き間違えてる。
本人は=書いたつもり。

>>563
strlen使ってないのはわざとやってる。
fgetsは素で間違えた。

こんなクソコードにツッコミ入れてくれてありがとう。
567デフォルトの名無しさん:2009/07/04(土) 02:40:45
なんとなーく、だけど、
while(input) {
printf("%d", input%10);
input /= 10;
}
を期待した課題だと思う
568デフォルトの名無しさん:2009/07/04(土) 02:41:57
ごめん>>550見てなかった
569デフォルトの名無しさん:2009/07/04(土) 02:54:30
>>552
Complex c_div(Complex s, Complex t)の部分や、sscanfというものが解りません。
もう少し簡単にして頂けないでしょうか?
570デフォルトの名無しさん:2009/07/04(土) 03:17:52
>>569
題意の通りじゃないの?
571デフォルトの名無しさん:2009/07/04(土) 03:18:53
>>565ではないが
sscanfは文字列に対してscanfする関数
c_divは仕様通りだから。。
572デフォルトの名無しさん:2009/07/04(土) 03:25:18
ならsscanf()は使わずに危険なscanf()でも使って書き直そうか
573デフォルトの名無しさん:2009/07/04(土) 03:26:20
つーか誰か(2)やってくれ
だるい
酒飲んでるし
574デフォルトの名無しさん:2009/07/04(土) 03:30:54
575デフォルトの名無しさん:2009/07/04(土) 03:32:50
>>552 (2)ってポインタ使っていいのか?
構造体の実体渡すの?
576デフォルトの名無しさん:2009/07/04(土) 03:36:02
>>574
ありがとうございました。
577デフォルトの名無しさん:2009/07/04(土) 03:40:22
 typedef struct{
  int bunshi, bunbo;
 }bunsu;

bunsu* bunsu_seki(bunsu* A,bunsu* B)
{
  if(A == NULL) return NULL;
  if(B == NULL) return NULL;
  bunsu C;
  C.bunshi = A->bunshi * B->bunshi;
  C.bunbo = A->bunbo * B->bunbo;
  return &c;
}
578デフォルトの名無しさん:2009/07/04(土) 03:42:02
あーーーーーーーーーーーーすまん>>577は無しで

 typedef struct{
  int bunshi, bunbo;
 }bunsu;

bunsu* bunsu_seki(bunsu* A,bunsu* B)
{
  if(A == NULL) return NULL;
  if(B == NULL) return NULL;
  bunsu* C = (bunsu*)malloc(sizeof(bunsu));
  if(C == NULL) return NULL;
  C->bunshi = A->bunshi * B->bunshi;
  C->bunbo = A->bunbo * B->bunbo;
  return C;
}
579デフォルトの名無しさん:2009/07/04(土) 03:42:34
>>569 (2)
bunsu bunsu_seki(bunsu a, bunsu b)
{
a.bunsi *= b.bunsi;
a.bunbo *= b.bunbo;
return a;
}

>>577
だめじゃね?
580デフォルトの名無しさん:2009/07/04(土) 03:45:31
>>578
どんどん話がややこしい方にすすんでるし題意は満たしてないし
581デフォルトの名無しさん:2009/07/04(土) 03:50:55
いかん
ついつい・・>>552の(2)は>>579でいいね
>>577>>578はなしで
582デフォルトの名無しさん:2009/07/04(土) 03:52:17
ポインタで渡す方が処理が速い伝説に惑わされたらいかんよ
583デフォルトの名無しさん:2009/07/04(土) 03:55:52
実際どっちがいいんだろうね
もっとでかい構造体をリストにして扱うことがほとんどなのでついつい
584デフォルトの名無しさん:2009/07/04(土) 03:56:21
>>574
何か消し忘れた#defineが残ってるな
あれは不要だから消しとけ
585デフォルトの名無しさん:2009/07/04(土) 03:57:50
リストにするなら隣のポインタ持たないとダメだからしょうがないけど。
試しにベンチでもやってみたら?
>>578のはちゃんと呼び出し側でfreeしないとメモリどんどん使うから気をつけてね
586デフォルトの名無しさん:2009/07/04(土) 04:25:38
[1] 授業単元:C+
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9676.txt
[3] 環境
OS: vista
コンパイラ名とバージョン: gcc
言語:C
[4] 期限: 一週間
[5] その他の制限:
4題あります。
テストの類題なのでなるべく簡単に題意を満たす解答をお願いします。

587デフォルトの名無しさん:2009/07/04(土) 04:28:35
588デフォルトの名無しさん:2009/07/04(土) 05:08:00
>>586
1.
int sum1toN(int n)
{
    int i, s;

    for(i = 1, s = 0; i <= n; i++){
        s += i;
    }
    return s;
}

2.
#include <stdio.h>
#define PAI 3.14159
void circle(double r, double *enshu, double *menseki);
int main(void){
    double r, enshu, menseki;
    printf("半径を入力 >>");
    scanf("%lf", &r);
    circle(r, &enshu, &menseki);
    printf("円周 = %f 面積 = %f\n"
                , enshu, menseki);
    return 0;
}

void circle(double r, double *enshu, double *menseki)
{
    *enshu = 2.0 * PAI * r;
    *menseki = PAI * r * r;
    return;
}
589デフォルトの名無しさん:2009/07/04(土) 05:08:42
>>586 続き
3.
#include <stdio.h>
int main(void)
{
    int a[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }, i;
    for(i = 0; i < 8; i++){
        if(7 - 2 - i >= 0) a[7 - i] = a[7 - 2 - i];
        else a[7 - i] = 0;
    }
    for(i = 0; i < 8; i++)
        printf("a[%d] = %d\n", i, a[i]);
    return 0;
}

4.
#include <stdio.h>

int main(void){
    char ch[81], max;
    int i;
    gets(ch);
    for(i = 0, max = '\0'; ch[i] != '\0'; i++){
        if(ch[i] > max) max = ch[i];
    }
    printf("文字コード最大は%c <%d>\n", max, max);
    return 0;
}
590 ◆/91kCCQXBo :2009/07/04(土) 08:06:02
591デフォルトの名無しさん:2009/07/04(土) 11:41:47
>>586
(1)
int sum1toN(int n){
return (n + 1)*n/2;
}
オーバーフローしたら知らん。
592デフォルトの名無しさん:2009/07/04(土) 11:58:38
>>591
仕様は満たしているが、出題者の意図に沿ってないような…。
593デフォルトの名無しさん:2009/07/04(土) 12:03:29
>>592
やっぱ模範解答は>>588だよね。
こっちはこんなのもあるよ程度で。
594デフォルトの名無しさん:2009/07/04(土) 12:40:12
>>586
(3)
#include <stdio.h>

#define SHIFT_NUM 2
#define ARRAY_SIZE 8

int main(void){
int a[ARRAY_SIZE] = {1,2,3,4,5,6,7,8}, i, j;

for(i = 0; i < SHIFT_NUM; ++i){
for(j = ARRAY_SIZE - 1; j > 0; a[j] = a[j-1], --j);
a[0] = 0;
}
for(i = 0; i < ARRAY_SIZE; ++i)
printf("a[%d]=%d\n", i, a[i]);

return 0;
}

簡単かどうかと言われるとどうなんだろう。
595デフォルトの名無しさん:2009/07/04(土) 13:34:22
[1] 授業単元: 関係演算子
[2] 問題文(含コード&リンク):
  どんな計算式でもいいが、10で割ると余りが0になる場合だけをprintf文で表示させろ

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: gcc )
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: 明後日まで
[5] その他の制限: 制限なし
596デフォルトの名無しさん:2009/07/04(土) 13:53:08
>>595
#include <stdio.h>
int main(void){
int n = 100;
if( n%10 == 0 ){
printf("%dは10の倍数\n");
}
return 0;
}

こういう意味でおk?
597デフォルトの名無しさん:2009/07/04(土) 13:54:51
>>596
訂正:
printf => printf("%dは10の倍数\n", n);
598デフォルトの名無しさん:2009/07/04(土) 14:01:36
どんな計算式の、計算式が重要。n=100か?
599デフォルトの名無しさん:2009/07/04(土) 14:09:58
>>598
どんな10で割ったら余りが0になる数値を特定しろ
特定方法(計算式)はどんなのでも構わない

って意味じゃないの?
600598:2009/07/04(土) 14:15:41
商を用いて、10で割ると余りが0になる場合だけをprintf文で表示させろ <= これが設問じゃないかと
どんな計算式でもいいが商を用いて、10で割ると余りが0になる場合だけをprintf文で表示させろ
601デフォルトの名無しさん:2009/07/04(土) 14:23:18
>>587
ありがとうございます。
602599:2009/07/04(土) 14:28:30
>>600

int n1, n2
n1 = 123; /* 調査対象 */
n2 = n1 / 10;
n2 *= 10;
if(n1 - n2 == 0){
  表示処理
}

こんなん?
603aka:2009/07/04(土) 14:33:17

情報オリンピックの2008年度予選問題3の連鎖のプログラムを教えてください。

http://www.ioi-jp.org/joi/2008/2009-yo-prob_and_sol/2009-yo-t3/2009-yo-t3.html

604598:2009/07/04(土) 14:33:30
ループすべき。
#include <stdio.h>
int main() {
  int ans;
  
  for(ans=-21;ans<=21;ans++)
    if(!(ans%10)) printf("%d ",ans);
    else printf(".. ");
}
605 ◆/91kCCQXBo :2009/07/04(土) 14:58:08
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/14
>>538 課題1 % gcc -o space space.c
#include <stdio>
>>538 課題2 % gcc -o innpro innpro.c
#include <stdio>
>>538 課題3 % gcc -o janken janken.c
char janken_com(int seed){
  int t;
  srand(seed); //乱数の種(seed)を設定.

  t=rand()%3; //rand()は整数の乱数を返す関数.rand()%3により0から2の乱数を発生させることができる.

  if(t==0) return 'g';
  if(t==1) return 'c';
  return 'p';
}
606デフォルトの名無しさん:2009/07/04(土) 16:03:08
[1] 授業単元:C
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9680.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9678.txt
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月7日
[5] 番号の場所を書き直すようお願いします。
607デフォルトの名無しさん:2009/07/04(土) 16:07:08
[1] 授業単元:プログラミング言語2
[2] 問題文(含コード&リンク)
簡単なデータベース機能を持つプログラムを作成しなさい.対象となるデータは自分で考えてください.
  (住所録,商品の在庫,図書,ワールドカップの勝敗....)
 以下の要件を示します.

1. ファイルからデータを読み込む機能をつけること.
2. データは4つ以上の項目を保持させること.
 (住所録では、「名前」「住所」「郵便番号」「電話番号」等で4項目以上)
3. 並び替えの機能をつけること.また並び替える項目が指定できること.
4. 各項目についてデータの検索を行う機能をつけること.また,検索条件を組み合わせることができること.
 (住所録なら,「郵便番号」が 399 で始まって,かつ,「電話番号」が 026 で始まる 等)
5. データは半角英数字(英語やローマ字)で扱ってよい
6. データの追加ができること.
7. データの削除ができること.削除は上記の検索と組み合わせることで,ある条件に合致したデータを削除できること.
8. 追加・削除した結果をファイルに保存できること.

[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: cygwinのgccです。 バージョンはわかりません。
 [3.3] 言語: C
[4] 期限: 2009年7月13日まで
[5] その他の制限: 双方向リストまで、終わりました。
対象となるデータは住所録でお願いします。
プログラムに説明を付けてくれると、助かります。

よろしくお願いします。
608 ◆/91kCCQXBo :2009/07/04(土) 16:33:55
>>595
#include <stdio.h>
int main(int argc, char *argv[]) {
  int i, c;
  FILE *fp;

  if(argc < 2) {
    printf("Usage : %s filename.ext", argv[0]); return 1; }
  if((fp=fopen(argv[1],"r")) == NULL) {
    printf("%s file open error!", argv[1]); return 1; }
  puts("ASCIIコードが10の倍数の時の、ファイル先頭からの位置:");
  for(i=1; (c=getc(fp)) != EOF; i++) { // 結果の値はファイルから読み込む
    if(!(c%10)) printf("%dx%d ", i, c); // 結果の値が、10 で割ると余りが0になる場合だけを表示
//    else if(!(i%10)) printf("x%d ", c); // 繰返しの回数が、10 で割ると余りが0になる場合
//    else printf("."); // その他の場合
  }
  fclose(fp);
}
609デフォルトの名無しさん:2009/07/04(土) 18:07:38
610 ◆/91kCCQXBo :2009/07/04(土) 18:57:23
>>606 リストを用いて個人データを格納する表を作成。(穴埋め問題)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9682.c
611デフォルトの名無しさん:2009/07/04(土) 19:29:17
>>609
これ「落ちた状態」をいちいち作って数えたんだけど
よく考えたらその必要なかった…。無駄無駄無駄ー!
612デフォルトの名無しさん:2009/07/04(土) 19:53:43
未回答文plz
613デフォルトの名無しさん:2009/07/04(土) 20:12:41
614デフォルトの名無しさん:2009/07/04(土) 20:55:21
>>607
>8. 追加・削除した結果をファイルに保存できること.
これって追加・削除の「履歴」じゃなくて単に「現在のデータ」でいいんだよね?
615デフォルトの名無しさん:2009/07/04(土) 21:21:31
[1] 授業単元: C言語
[2] 問題文  
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9685.txt
これを参考に、100人以内の生徒ID、名前を入力するプログラムを作る
[3] 環境
 [3.1] OS:  Windows
 [3.2] コンパイラ名とバージョン: VisualC++
 [3.3] 言語 C
[4] 期限: 7月6日 
[5] その他の制限 ソースプログラムにある形の関数を使うこと
616デフォルトの名無しさん:2009/07/04(土) 21:34:14
>>615
これでいいのかな

#include<stdio.h>
#include<string.h>
#define SIZE 100



int main(){

    int i;
    student_type students[SIZE];
    for( i = 0; i < SIZE; ++i ){
        read_student( &students[i] );
    }
}
617デフォルトの名無しさん:2009/07/04(土) 22:26:52
>>613
高校生でも分かる簡単なプログラムになりませんかね?
図々しくてごめんなさい…
ぜひお願いします。
618613:2009/07/04(土) 22:37:57
>>617
いや、そう言われても…
この板の住人なら高校生でも>>613は読めると思うが

一般的な高校生レベルってどんなのよ
まあ、どの行がわからんのか言ってみれ
619デフォルトの名無しさん:2009/07/04(土) 22:52:23
ホント無知で申し訳ないっす。。

printf("%s : %d --> %d\n", filename, N, min);

free(array);
fclose(fp);
}

int check_okikata(int *array, int size, int index, int color)
{

らへんがよく分かりません
どういう意味でしょう?
620デフォルトの名無しさん:2009/07/04(土) 23:30:29
>>614
そうです。
項目が削除されたリストと、項目が追加されたリストを出力します。
621デフォルトの名無しさん:2009/07/04(土) 23:35:28
>>619
つまり動的な配列の確保(mallocとfree)がわからないんだな
じゃあ固定配列で書き換えるから
622デフォルトの名無しさん:2009/07/04(土) 23:56:20
>>619
malloc()とfree()を使わないようにした
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9686.c
623デフォルトの名無しさん:2009/07/05(日) 00:18:10
>>620
えっ?2つのリストが出力されるの!?
追加や削除をして変更された「現在のデータベースのデータ」のリスト1つじゃないの?
624デフォルトの名無しさん:2009/07/05(日) 01:35:36
[1]数値情報解析
[2]ガウス−ザイデル法によりn元1次方程式を解くプログラムを作りなさい。
[3]
[3.1]Windows
[3.2]Visual Studio 2008
[3.3]C
[4]2009年7月15日
[5]ほぼ素人なので、少しでも優しい表現にしていただけるようよろしくお願い致します。
 あと、パワーポイントでこのプログラムのフローチャートを書いていただければありがたいです。
625デフォルトの名無しさん:2009/07/05(日) 02:42:19
>>624 >>162 問題 >>174 >>177 >>183 解答
626デフォルトの名無しさん:2009/07/05(日) 02:57:38
ガウスザイデル法って反復法だからガウス法と違うだろ
627デフォルトの名無しさん:2009/07/05(日) 03:19:53
C++なんですが、
文字変数aの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、
『'a'でない文字が格納されています』と表示させるプログラムを作成せよ
誰かお願いします

#include<iostream>
using namespace std;
int main(){


return 0;
}
628デフォルトの名無しさん:2009/07/05(日) 03:21:02
>>627ですが、間違えました。
文字変数aの中身→文字変数mの中身
でした
629デフォルトの名無しさん:2009/07/05(日) 03:22:32
ファイルから読み込みするの?
それともキーボードの入力を待って入力された文字を判断するの?
630デフォルトの名無しさん:2009/07/05(日) 03:26:02
>>627
文字変数mの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、
『'a'でない文字が格納されています』と表示させるプログラムを作成せよ
としか書かれてないんですよね。
ただ書き始めと終わりは下の定型文みたいのを使うんですが
#include<iostream>
using namespace std;
int main(){


return 0;
}
631デフォルトの名無しさん:2009/07/05(日) 03:26:46

>>630ですが間違えました

>>627じゃなくて>>629でした
632デフォルトの名無しさん:2009/07/05(日) 03:55:39
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,非負の整数を次々と読み込んでいき,各値の二乗値の和を表示するプログ
ラムを作成せよ.なお,整数の読み込みは,負の整数を読み込んだ段階で終了するものとし,
その数の二乗値の和は加算しないものとする.

整数を入力してください
整数1 : 3
整数2 : 5
整数3 : -1
二乗値の合計は34 です.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月07日
[5] その他の制限:なし。
633デフォルトの名無しさん:2009/07/05(日) 04:00:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行
目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ.
ファイル提出: 実行ファイル
何行ですか: 7
何列ですか: 12
123456789012
234567890123
345678901234
456789012345
567890123456
678901234567
789012345678
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月07日
[5] その他の制限:なし。
634デフォルトの名無しさん:2009/07/05(日) 04:02:16
>>632
#include <stdio.h>

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

while(1) {
printf("整数%d :", ++i);
scanf("%d", &n);
if(n < 0) break;
sum += n * n;
}

printf("二乗値の合計は%d です.\n", sum);

return 0;
}
635デフォルトの名無しさん:2009/07/05(日) 04:06:28
>>633
#include <stdio.h>

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

printf("何行ですか:");
scanf("%d", &n);
printf("何列ですか:");
scanf("%d", &m);

for(i=1; i<=n; i++) {
for(j=0; j<m; j++) printf("%d", (i+j)%10);
putchar('\n');
}

return 0;
}
636デフォルトの名無しさん:2009/07/05(日) 06:59:52
>>627
#include<iostream>
using namespace std;
int main(){
char m;
if (m == 'a') cout << "『aが格納されています』" << endl;
else cout << "『'a'でない文字が格納されています』" << endl;
return 0;
}
637 ◆/91kCCQXBo :2009/07/05(日) 09:01:09
>>627 関数が使えるなら。
#include<iostream>
using namespace std;
namespace {
  int m;
  void sub(void) {
    if (m == 'a') cout << "『aが格納されています』" << endl;
    else cout << "『'a'でない文字が格納されています』" << endl;
  }
}
int main(){
  m='a';
  sub();
  m='x';
  sub();
  return 0;
}
638 ◆/91kCCQXBo :2009/07/05(日) 09:47:08
>>627 テンプレートの中だけ書く。>>626 は無しで。
char m = '\a';
int i;
char data[4]={'m', 'a', 'i', 'n'};

for(i=0; i<=sizeof data/sizeof(char); m = data[i++]) {
    if (m == 'a') cout << "『'a'が格納されています』\n";
    else         cout << "『'a'でない文字が格納されています』\n";
}
639デフォルトの名無しさん:2009/07/05(日) 10:42:52
そのループはギャグのつもり?
640デフォルトの名無しさん:2009/07/05(日) 10:51:16
1週間ぐらい前に文字列表示とか、四則演算とか聞いてた人でしょ。
授業は if 文に入ったらしいが、何も分からないから全部聞くと。
641 ◆/91kCCQXBo :2009/07/05(日) 12:35:40
>>595 ループか関数のどちらかは使う必要あり。
#include <stdio.h>
void div10(int c) {
  if(c%10) ; else printf("%dは10で割り切れる数\n", c);
}
int main() {
  div10(1);
  div10(20);
  div10(21);
  div10(30);
  div10(13);
  return 0;
}
642デフォルトの名無しさん:2009/07/05(日) 13:10:10
>>638

そのおソースは頂けない
せめてこうしよう

#include <iostream>
using namespace std;

int main()
{
char* data = "main";

for(char* ite = data;*ite != '\0';ite++){
if(*ite == 'a') cout << "aが格納されています" << endl;
else cout << "'a'でない文字が格納されています" << endl;
}

return EXIT_SUCCESS;
}
643 ◆/91kCCQXBo :2009/07/05(日) 13:29:31
>>627 どお?
#include <iostream>
using namespace std;
int main(){
  int i = 0;
  char m, data[] = {'m', 'a', 'i', 'n'};

  while( m = data[i], i++ < sizeof data/sizeof(char) ) {
    if (m == 'a') cout << "『'a'が格納されています』\n";
    else         cout << "『'a'でない文字が格納されています』\n";
  }
  return 0;
}
644デフォルトの名無しさん:2009/07/05(日) 13:53:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
モンテカルロ法を用いて、円周率を計算しなさい。なおランダムに打つ点は1000点用いること。
また上記プログラムを改良して、50点打つごとに、真の円周率(ここでは3.1415926とします)
との差を求め、その差をスペースと*を用いてグラフ化しなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/9
[5] その他の制限:

申し訳ありませんがよろしくお願いします
645デフォルトの名無しさん:2009/07/05(日) 16:52:12
>>644
喜べ、これでキミは英雄だ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9687.zip

hit-or-missは中心(0,0)半径1の円に入るかどうかで判定した
一様乱数はC標準のものを用いた
おまけとして100000回試行したデータも付けておいた
この判定法と乱数では試行回数が1000回では不十分であると分かるはずだ
改善は他の住人に任せた
646デフォルトの名無しさん:2009/07/05(日) 17:11:25
>>535
遅くなりました
ありがとうございます><
647デフォルトの名無しさん:2009/07/05(日) 17:40:26
>>638
sizeof data/sizeof(char)
>>639が指してるのがこれかどうか分からんけど、とりあえず気持ち悪い
648デフォルトの名無しさん:2009/07/05(日) 17:43:21
>>647
固定配列のサイズを表現する普通の記述だが
なんで気持ち悪いと思う?
649デフォルトの名無しさん:2009/07/05(日) 17:46:18
そっか。
俺ならsizeof(data)/sizeof(data[0])と書くから。
片方にしか括弧つけない意味も分からないし。
650デフォルトの名無しさん:2009/07/05(日) 17:49:14
ああ、そういう意味なら気持ち悪いな
確かに
651デフォルトの名無しさん:2009/07/05(日) 17:51:08
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):Ax=bの連立1次方程式の解を求めるプログラムを作成しなさい。
   (この行列を使用してください
     A={{10,-9,0,0,0,0,0},
  {-9,17,-8,0,0,0,0},
  {0,-8,17,-9,0,0,0},
{0,0-9,13,-4,0,0},
{0,0,0,-4,12,-8,0},
{0,0,0,0,-8,10,-2},
  {0,0,0,0,0,-2,2}}
b={0,0,0,0,0,0,7})

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 2009年7月1日まで]
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします
解が{0.37,0.41,1.28,2.06,3.81,4.69,8.19}に近いものになるはずです。


652デフォルトの名無しさん:2009/07/05(日) 17:53:09
>>651
既に期限過ぎてるんだが
653デフォルトの名無しさん:2009/07/05(日) 17:53:15
あとsizeof(char)は常に1だから冗長とかいう奴もよくいるねw
おれは冗長でも書くべきと思う派
654デフォルトの名無しさん:2009/07/05(日) 17:54:36
>>650
どういう意味なら気持ち悪くないの?
655デフォルトの名無しさん:2009/07/05(日) 17:57:09
>>648
読みにくいし i <= sizeof〜 だと境界越えてるじゃん
>>642とどっちが読みやすいよ
656デフォルトの名無しさん:2009/07/05(日) 18:00:36
うわあほんとだ。。。
sizeof記述の気持ち悪さに気を取られすぎた俺バカ
657デフォルトの名無しさん:2009/07/05(日) 18:18:03
<<651
私の計算ミスでした。すいません
658デフォルトの名無しさん:2009/07/05(日) 18:55:03
>>651 >>162 問題 >>174 >>177 >>183 解答
何の計算ミス?
659デフォルトの名無しさん:2009/07/05(日) 19:38:56
>>623
返信遅れてすみません。
追加、削除された1つのリストで大丈夫です。
660デフォルトの名無しさん:2009/07/05(日) 20:49:18
[1] 授業単元:情報
[2] 問題文(含コード&リンク):
パソコン甲子園 2008 予選問題 問7 ふしぎな虫
http://www.pref.fukushima.jp/pc-concours/2009/03/pdf/2008yosen.pdf
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月6日

よろしくお願いします。
661デフォルトの名無しさん:2009/07/05(日) 21:34:32
>>645
ありがとうございます。
凄い。誤差ってなかなか安定しないんですね
ですが中身が問題分からなかった低能では
いささか理解が追いつきません
このまま出したら本当に英雄になっちゃいそうです
662 ◆/91kCCQXBo :2009/07/05(日) 21:47:10
>>644 差の絶対値をグラフにした。
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415926
int main() {
  int  i, j, imax = 1000;  /* 乱数の発生回数 1000 */
  int  n, inter = imax/20;  /* グラフの表示インターバル 50 */
  float x,y,pi=PI,eps,mul;
  for(n=0, i=1; i<=imax; i++) {
    /* 0以上1未満の乱数を生成する */
    x = rand()/((float)RAND_MAX+1);
    y = rand()/((float)RAND_MAX+1);
    /* 0<=x,y<=1の範囲にある中心原点半径1の扇形の中に乱数による点が入ったらカウントする */
    if( x*x + y*y < 1) n++;
    if( i%inter ) ; else {    /* 円周率の計算とグラフの表示 */
      pi = (float)n/i*4;    /* 半径1の円の面積すなわち円周率 */
      eps = PI-pi; eps = (eps<0)? -eps : eps;
      if(i==inter) mul = 70/eps; /* 1回目はグラフの倍率を決める */
      printf("%5.3f ", pi);
      for(j=eps*mul; j>=1; j--) putchar(' '); printf("*\n");
    }
  }
  printf("PI=%f\n", pi);
}
663デフォルトの名無しさん:2009/07/05(日) 22:30:36
>>662
ありがとうございます
コメントまで…

何度実行しても値が変わらない気がするのはそういう物ですか?
664 ◆/91kCCQXBo :2009/07/05(日) 22:37:17
srand(time(NULL)); を、最初に呼べば毎回変わるはず、>>645のように。
665デフォルトの名無しさん:2009/07/05(日) 22:41:51
>>664
出来ました。が、ときたまグラフが崩れるので封印しときます
勉強になりました
666デフォルトの名無しさん:2009/07/05(日) 23:08:32
>>234で、>>251さんに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9608.txt
というプログラムを書いて頂いたのですが、RAND_MAXがrand関数の利用に当たるとして
再提出になってしまいました。

rand_maxはrandのとる最大値とのことですが、これを使わないで同様の趣旨を実現するにはどうしたらよいのでしょうか?
667デフォルトの名無しさん:2009/07/05(日) 23:14:25
RAND_MAXをINT_MAXに変える
668デフォルトの名無しさん:2009/07/05(日) 23:53:23
2つの整数をキーボードから入力して、最初の数の方が小さい場合には、『最初の数の方が小さいか等しいです』と表示させて、大きい場合には、『後の数の方が小さいです』と表示させるプログラムを作成せよ

#include<iostream>
using namespace std;
int main(){


return 0;
}


の中に入る文を作るんですが、どうすればいいですか。使うのはifとcoutとelseくらいだと思うんですが
669デフォルトの名無しさん:2009/07/05(日) 23:54:46
>RAND_MAXがrand関数の利用に当たるとして

何ソレ
ただの定数マクロでしょ?
670デフォルトの名無しさん:2009/07/06(月) 00:24:57
>>666
関数の利用に当たる・・・だと・・・
数学科で出された問題?
だったらそのトンチンカンな主張も納得できるけど工学科だったら・・・
671デフォルトの名無しさん:2009/07/06(月) 00:28:29
>>668 例はいらない。
// ↑C++テンプレート
int a1, a2;

cout << "2つの数を入力してください:";
cin >> a1 >> a2;
if(a1<=a2) cout << "最初の数の方が小さいか等しいです\n";
else cout << "後の数の方が小さいです\n";
// ↓C++テンプレート
672デフォルトの名無しさん:2009/07/06(月) 00:49:54
>>671
// ↑C++テンプレート
// ↓C++テンプレート

なんだよ、このコメントは。w
まぁ、>>671の予想通り、minを使うのが速いよってことですね。
673 ◆jmI6IAV7WI :2009/07/06(月) 05:28:45
[1] 授業単元: 構造体
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9688.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7月10日
[5] その他の制限:

よろしくお願いします
674デフォルトの名無しさん:2009/07/06(月) 06:48:27
書くとこ入力部だけじゃねーかw
675 ◆jmI6IAV7WI :2009/07/06(月) 07:43:14
>>674
入力部だけでもお願いできないでしょうか
難しくて何がなんだかさっぱりわからないので
すみません
676 ◆/91kCCQXBo :2009/07/06(月) 14:11:15
>>673
1.
  printf("1番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_line.p1.x, &my_line.p1.y);
  printf("2番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_line.p2.x, &my_line.p2.y);
  printf("2点間の直線距離は:");
2. 三角形の面積 area = fabs(t.p2.x * t.p3.y - t.p3.x * t.p2.y)/2;
  printf("1番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_triangle.p1.x, &my_triangle.p1.y);
  printf("2番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_triangle.p2.x, &my_triangle.p2.y);
  printf("3番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_triangle.p3.x, &my_triangle.p3.y);
  printf("3点で囲まれた三角形の面積は:");
677 ◆/91kCCQXBo :2009/07/06(月) 14:25:27
>>624 ガウス・ザイデル法の計算方法 山本昌志 2005年12月16日
http://akita-nct.jp/yamamoto/lecture/2005/5E/Linear_eauations/ex_GaussSeidel_html/node2.html

必要なら以下にコメントも付けとく。仮にエクセルのPADでもいい?
#if 0
for( j=1; j<=N; j++ ){
  temp += a[i][j] * x[j];
}
/* a[i][i] * newx + (temp - a[i][i] * x[i]) = b[i]; */
/* a[i][i] * newx = b[i] - (temp - a[i][i] * x[i]); */
newx = 1.0 / a[i][i] * (b[i] - (temp - a[i][i] * x[i]));
#else
for( j=1; j<=N; j++ ){
  if( i==j ) continue;
  temp += a[i][j] * x[j];
}
/* Xi(k+1) = 1/Aii * ( Bi - (Ai,1*X1(k) + Ai,2*X2(k) + ... + Ai,i-1*Xi-1(k) + Ai,i+1*Xi+1 + ... + Ai,n*Xn )) */
newx = (b[i] - temp)/a[i][i];
#endif
678デフォルトの名無しさん:2009/07/06(月) 17:30:17
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9689.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C/C++
[4] 期限: [2009年7月7日10:00まで]
[5] その他の制限: 特にありません。 

よろしくおねがいします。
679デフォルトの名無しさん:2009/07/06(月) 18:07:23
[1] 授業単元: オペレーティングシステム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9690.zip

[3] 環境
 [3.1] OS: VineLinux4.2
 [3.2] コンパイラ名とバージョン: GCC 4.3
 [3.3] 言語: C/C++
[4] 期限: [2009年7月8日10:00まで]
[5] その他の制限: 特にありません。

C言語なら俺に聞け(入門篇) Part 50
http://pc12.2ch.net/test/read.cgi/tech/1246342847/
>>221で質問しましたが結局分からなかったので
ここに投げさせて頂きました。よろしくお願いします。

よろしくおねがいします。
680デフォルトの名無しさん:2009/07/06(月) 18:25:28
>>493で質問し、一題目を当スレで解答していただいたものです。
その際二題目は問題の意味が解らないということで保留にしていたんですが、
二題目もしなければ駄目ということで再度質問願います。
[1] 授業単元:Cプログラミング入門編
[2] 問題文(含コード&リンク):http://www-it.sci.waseda.ac.jp/CPR1/class08/kadai2.htm
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ: gcc
 [3.3] 言語: C

二題目の問題の意味ですが、outputでV1〜Vnが表示される度にそれぞれの行列の要素の中で
『V1二乗+V2二乗−V3二乗』を画面Printするという意味と思います。
教授曰くピタゴラスのなにやらと言うらしいのですが、、、。

よろしくお願いします。
681 ◆jvdNOCQgZU :2009/07/06(月) 18:31:14
[1] 授業単元:windows開発
[2] 問題文(含コード&リンク): http://down11.ddo.jp/uploader/download/1246872574.zip/attatch
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限: [2009年7月9日まで]
[5] その他の制限:DirectX SDK N2008を使用します。
ファイルが大きかったので別のロダ借りました。パス「111」
682デフォルトの名無しさん:2009/07/06(月) 18:49:24
>>680
最初に解答いただいたプログラムです
http://codepad.org/xBj760YT

よろしくお願いします。
683デフォルトの名無しさん:2009/07/06(月) 19:01:54
>>679
問題 >>前930(9532)>>093(9559)>>172(9532)
このプログラムに、リダイレクション、パイプ機能を実装してください。
>>265(9607)
684デフォルトの名無しさん:2009/07/06(月) 19:23:17
>>679
もう上で答えられてるけど作っちゃったので俺も
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9691.c
685デフォルトの名無しさん:2009/07/06(月) 19:35:09
>>680
#include <stdio.h>
#include <stdlib.h>
void multiply(int *mat, int *vec, int *out, int N) {
int i, j;
for (i = 0; i < N; i++) {
out[i] = 0;
for (j = 0; j < N; j++) {
out[i] += mat[i*N+j] * vec[j];
}
}
}
int main(void) {
int i, k, N = 3, n = 10;
int *v = (int *)malloc(N * sizeof(int));
int *t = (int *)malloc(N * sizeof(int));
int *P = (int *)malloc(N * N * sizeof(int));
v[0] = 3; v[1] = 4; v[2] = 5;
P[0] = 1; P[1] = -2; P[2] = 2;
P[3] = 2; P[4] = -1; P[5] = 2;
P[6] = 2; P[7] = -2; P[8] = 3;
for (k = 1; k <= n; k++) {
multiply(P, v, t, N);
for (i = 0; i < N; i++) {
v[i] = t[i];
}
printf("v_%d = (%d, %d, %d), ", k, v[0], v[1], v[2]);
printf("v1^2 + v2^2 - v3^2 = %d\n", v[0]*v[0]+v[1]*v[1]-v[2]*v[2]);
}
free(v); free(t); free(P);
return 0;
}
686デフォルトの名無しさん:2009/07/06(月) 20:04:06
687デフォルトの名無しさん:2009/07/06(月) 21:00:23
>>685
ありがとうございます。
本当に助かります。
こんなにサッと出来るなんて尊敬します。
688デフォルトの名無しさん:2009/07/06(月) 21:30:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
多数のファイルをクローズせずに何個もオープンするとどうなるか実験せよ.
実験用プログラム fopen.c のソースと実験結果と考察をレポートすること.

% ./fopen
入力ファイル:fopen.c
オープン 1 回目
オープン 2 回目
オープン 3 回目
...
オープン ??? 回目
これ以上オープンできません!

注意:「○○回までオープンできた」とかでは,現象・結果の説明にすぎず,考察とは言えない. その結果から何が理解できるのか?推理せよ. 換言:実験結果(具体例)から一般規則を導き出せ.

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:09/07/08
[5] その他の制限: 特になし
689デフォルトの名無しさん:2009/07/06(月) 21:36:20
>>688
追記
その他の制限:ファイル名は決め打ち(ソースファイルなど)でよい.
自分なりに作ったソースは
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9693.c
考察がわかりません.
セグメンテーションエラーが出るのはわかるのですが…
690デフォルトの名無しさん:2009/07/06(月) 21:47:23
>>689
セゲメンテーションフォルトは fclose(NULL) が悪いだけで考察とは関係ないよ
691デフォルトの名無しさん:2009/07/06(月) 21:55:34
>>690
fclose(NULL)がエラーになる理由を考察に書けばいいと思うんですが、具体的にどう書けばいいのでしょうか
692デフォルトの名無しさん:2009/07/06(月) 21:55:34
>>680
ピタゴラスのなにやらって、三平方の定理じゃねーかw
693デフォルトの名無しさん:2009/07/06(月) 22:11:23
>>691
ストリームをクローズします。

fclose は,引数 stream で指定されたストリームをクローズします。
そのストリームに対応付けられているすべてのバッファは,クローズする前に
フラッシュされます。システムが割り当てたバッファは,クローズすると解放されます。
setbuf または setvbuf を使って割り当てられたバッファは,自動的に解放される
わけではありません(ただし,setvbuf にバッファポインタとして NULL が渡されると,
クローズするときに解放されます)。

とあるから、NULLを無理矢理クローズしようとしてエラーが生じるんじゃない?
規格票には何か書いてあるかな
694デフォルトの名無しさん:2009/07/06(月) 22:16:47
>>691
perror()かなにかでエラー原因表示させてみ

[略)
perror("fopen"); ←ここらへんでperrorを呼んでみる
printf("これ以上オープンできません. \n");
[略)
695デフォルトの名無しさん:2009/07/06(月) 22:23:45
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
リスト構造で接続された構造体に含まれる名前を比較し、辞書順にリスト構造の接続を再構成せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年07月7日8:00まで
[5] その他:自分で書いたのですが、セグメントエラーになってしまいます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9694.c
なお、これは一番若い名前を見つけたら一旦保持して、最後まで探し終えたら、先頭と保持したものを入れ替えるという動作を
最後までループさせるつもりで書きました。
696デフォルトの名無しさん:2009/07/06(月) 22:36:25
>>693ご教示ありがとうございます.
ファイルをオープンできなかった場合に,そのファイルをクローズしようとするとどうなるかと言う課題もあるのですが,
これも同じ原因でエラーが発生するのでしょうか.
ソースは
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9695.c
です.

>>694
1回オープンしました.

46回オープンしました.
47回オープンしました.
fopen: Error 0
これ以上オープンできません.

となりました
697デフォルトの名無しさん:2009/07/06(月) 23:01:33
>>684>>685
ありがとうございます。
ちゃんと動作しました。
698デフォルトの名無しさん:2009/07/06(月) 23:06:42
整数2つをキーボードから入力し、(最初にキーボードから入力させる数値を
入れる変数をa、2番目にキーボードから入力させる数値を入れる変数をbとする。)、
最初の数の方が大きい場合には、『最初の数の方が大きいです』、等しい場合には、『両方は等しいです』、2番目の数の方が大きい場合には、『2番目の数の方が大きいです』と表示するプログラムを作成せよ

ある整数変数をキーボードから入力し、その数値が9以下なら『入力した値は1桁です』と表示させて、10以上、99以下の場合は、『入力した値は2桁です』と表示させ、
100以上なら『入力した値は3桁以上です』と表示するプログラムを作成せよ
#include<iostream>
using namespace std;
int main(){

return 0;
}
の中に入る文を作るんです。else とか else if とか ifとか使うはずなんですが誰か教えてくれませんか
699デフォルトの名無しさん:2009/07/06(月) 23:12:55
>>695
ちょっと見ただけだが、
↓これはまずくない?
>struct data* str,str1,str2,tmp,target;

>struct data *str,*str1,*str2,*tmp,*target;

後、動作可能な形で全体をさらす方がアドバイスを受けやすいと思うよ。
700デフォルトの名無しさん:2009/07/06(月) 23:15:40
int first,second;

printf("first: ");
scanf("%d",&first);
if(first>=100)
printf("入力した値は3桁以上\n");
else if(first>=10)
printf("入力した値は2桁以上\n");
else if(first<=9)
printf("入力した値は1桁\n");

printf("second: ");
scanf("%d",&second);
if(second>=100)
printf("入力した値は3桁以上\n");
else if(second>=10)
printf("入力した値は2桁以上\n");
else if(second<=9)
printf("入力した値は1桁\n");

if(first>second)
printf("firstが大きい\n");
else if(first==second)
printf("同じ\n");
else
printf("secondが大きい\n");
701デフォルトの名無しさん:2009/07/06(月) 23:28:11
>>700
あれ?C++なんですけど
coutとかなのですが
702デフォルトの名無しさん:2009/07/06(月) 23:30:28
>>701
C++もCコードかけるからねえ
最初にそういうのは注文で出しておいた方がいいかも
703デフォルトの名無しさん:2009/07/06(月) 23:32:19
using〜を見落としてたわ
もう寝るから別の人やって

ところで、テンプレ使えと逆ギレOK?
704デフォルトの名無しさん:2009/07/06(月) 23:45:35
だから、今まで何度もC言語とC++は別言語だからスレッドを分けてくれと言ってきたじゃないか
705デフォルトの名無しさん:2009/07/06(月) 23:54:07
初耳だ
706デフォルトの名無しさん:2009/07/07(火) 00:09:40
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org209303.txt
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:c
[4] 期限: 7月7日23:59
[5] 特になし

よろしくお願いします
707デフォルトの名無しさん:2009/07/07(火) 00:54:21
>>701
なにがcoutなのですか?
printfはC++じゃないとおっしゃる?
708 ◆/91kCCQXBo :2009/07/07(火) 00:56:04
>>698
// ここまではC++テンプレート
cout<<"1番目の整数: ";
cin>>first;
cout<<"2番目の整数: ";
cin>>second;
if(first>second)
  cout<<"最初の数のほうが大きいです"<<endl;
else if(first<second)
  cout<<"2番目の数のほうが大きいです"<<endl;
else
  cout<<"両者は等しいです"<<endl;

cout<<"3番目の整数: ";
cin>>first;
if(first>=100 || first<=-100)
  cout<<"入力した値は3桁以上です"<<endl;
else if(first>=10 || first<=-10)
  cout<<"入力した値は2桁です"<<endl;
else
  cout<<"入力した値は1桁です"<<endl;
// ここからはC++テンプレート
709デフォルトの名無しさん:2009/07/07(火) 01:02:07
>>689
多数のファイルをだからこんな感じじゃないの
うちの環境だとエラーすら出ずに29ファイル目で終わった
コンパイラはbcc,OSはXP SP3
原因はリソース不足?
#include <stdio.h>
#define N 1000
int main(){
int i;
char fname[256];
FILE* in[N];
FILE* out;
for(i = 0;i < N;i++){
sprintf(fname,"hoge%u",i);
out = fopen(fname,"w");
fclose(out);
if((in[i] = fopen(fname,"r")) == NULL){
perror("error");
for(i--;i >= 0;i--){
fclose(in[i]);
}
exit -1;
}
}
for(i = 0;i < N;i++){
fclose(in[i]);
}
return 0;
}
710512:2009/07/07(火) 01:07:49
>>680
>>685で解答済みみたいだけど、一応>>512のコードで求めてみた
http://codepad.org/4TnvGRE5
「ElementOf(mat,row,clm)」と「PrintPythagoreanTheorem(int v1, int v2, int v3)」を追加して
main関数に1行追加しただけ
#こっそりMltMatrixをMulMatrixに修正してたりw
711デフォルトの名無しさん:2009/07/07(火) 01:09:23
>>709
1020ファイル作ってsegmentation faultだった。
CentOS5.3(仮想マシン) gcc4.1.2
712デフォルトの名無しさん:2009/07/07(火) 01:11:50
>>711
丁度 out==NULL になったんじゃないかな
713711:2009/07/07(火) 01:12:41
流れをなんにも見てなくてとりあえず動かしただけだったすまん。

>>691
ええと、fclose(NULL)がなぜダメなのかを考察するのはちょっとズレてる
その前にfopenがNULLを返したことに対して考察をすべきよー
714デフォルトの名無しさん:2009/07/07(火) 01:14:45
>>712
大抵out==NULLになって終わるんじゃないかな
715デフォルトの名無しさん:2009/07/07(火) 01:15:34
>>714
in[i]==NULL になることもあるさ
716711:2009/07/07(火) 01:22:12
#include <stdio.h>
#include <stdlib.h>
#define N 10000
int main(){
int i;
char fname[256];
FILE* in[N];
FILE* out;
for(i = 0;i < N;i++){
sprintf(fname,"file/hoge%04u",i);
out = fopen(fname,"w");
if(out == NULL){
perror("error[out]");
for(i--;i >= 0;i--){ fclose(in[i]); }
exit(-1);
}
fclose(out);
if((in[i] = fopen(fname,"r")) == NULL){
perror("error[in]");
for(i--;i >= 0;i--){ fclose(in[i]); }
exit(-1);
}
}
for(i = 0;i < N;i++){ fclose(in[i]); }
return 0;
}

とりあえずちょっと変えてみた。
まあ、他の要因で落ちることを考慮すればin[i]==NULLになることもあるのだろうけれど、
ファイルの開きすぎで落ちるという観点で行けばoutのみじゃない?
717デフォルトの名無しさん:2009/07/07(火) 01:35:43
>>695
いろいろ間違ってる。
nextを使うべきでないところで使っている(このためstr->next・str2->nextでstrやstr2がNULLになることがある)。
最小値がstr1でない場合に、次のループではstr1を跳ばしている(このためstr1がNULLになることがある)。
どうしてもtop入れ換えでやりたいなら、図でも書いて落ち着いて考えること。

top入れ換えではなく、最小値を1個ずつ抜いて別のツリーをつくる方がややこしくなくてお勧め。

struct data *sort(struct data *top){
  struct data work, *d, *target = top, *current = &work;
  for(target = top; target != NULL; target = top){ //元のツリーがなくなるまで
    for(d = target->next; d != NULL; d = d->next){ //最小値探索
      if(strcmp(target->name, d->name) > 0) target = d;
    }
    if(top == target){
      top = target->next; //最小値がtopならtopにnextを保持
    }else{
      for(d = top; d->next != target; d = d->next) ; // 最小値がtop以外なら最小値の親と最小値の子をつなげる
      d->next = target->next;
    }
    current->next = target; // 新しいツリーの末尾に最小値を追加
    current = target;
    current->next = NULL;
  }
  return work.next;
}
718デフォルトの名無しさん:2009/07/07(火) 01:42:03
1] 授業単元:C言語
[2] 問題文(含コード&リンク):n個の整数データを入力し,最後に平均を出力,nは最初に入力する(nは自然数),平均は小数部まで求める実行例として
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc 3.4
 [3.3] 言語:C
[4] 期限:7/7 18時まで
#include<stdio.h>
void main(void)
{
int x,y,z,sum;
double ave;
y=1;
sum=0;
printf("入力するデータ数は? ");
scanf(" %d", &x);
if(x>1){
for(y=1; y=x; y++){
printf("No .%d",y);
y++;
scanf("%d", &z);
sum=sum+z;
}
ave=sum/x;
printf("以上%d個の平均は:%.6f",x,ave);
}
}
とりあえず自分でここまでやってみましたけどわかりません><
719デフォルトの名無しさん:2009/07/07(火) 01:52:24
>>716
横レスだけどファイルを開きすぎて落ちるってどういうこと?
outはきちんとfcloseしてるから再利用してよさそうなんだけどやっちゃダメなの?
後学のためにご教示願います。
720デフォルトの名無しさん:2009/07/07(火) 01:57:27
outはちゃんと閉じてるけどinは増える一方でしょ

0
1 out open
0 out close
1 in open
2 out open
1 out close
2 in open

というながれで、ファイルカウントが最初に最大になるのはoutをopenしたときでしょ
721デフォルトの名無しさん:2009/07/07(火) 02:06:14
なるほどそういうことか。サンクス。
722デフォルトの名無しさん:2009/07/07(火) 02:26:49
>>718
#include<stdio.h>
void main(void)
{
int x,y,z,sum;
double ave;
sum = 0;
printf("入力するデータ数は? ");
scanf("%d", &x);
if(x>=1){
for(y=1; y <= x; y++){
printf("No.%d ",y);
scanf("%d", &z);
sum=sum+z;
}
ave=(double)sum/x;
printf("以上%d個の平均は:%.6f",x,ave);
}
}
723デフォルトの名無しさん:2009/07/07(火) 02:48:35
>>722
ありがとうございます
724 ◆jmI6IAV7WI :2009/07/07(火) 05:34:13
>>676
ありがとうございました
助かりました
725デフォルトの名無しさん:2009/07/07(火) 12:44:06
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 整数 nissu をキー入力して、1 月1 日から数えて nissu 日目が何月何日かを表示
したい。 main() 関数を以下のように作った。ここで呼ばれている関数 tuki_hi () を作成せよ。
#include <stdio.h>
int main(){
int nissu, tuki, hi;
void tuki_hi(int, int *, int *);
printf("日数を月日に変換\n");
printf("日数は? "); scanf("%d", &nissu);
tuki_hi(nissu, &tuki, &hi);
printf("%d 日目は%d 月%d 日です", nissu, tuki, hi);
return 0;
}
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン: borland c++
[3.3] 言語:C
[4] 期限: ([2009年07月7日2:30まで]
[5] よろしくお願いします
726デフォルトの名無しさん:2009/07/07(火) 12:55:20
>>725
void tuki_hi(int nissu, int *tuki, int *hi)
{
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; /* days[0]は使わない */
int i;
for (i=1; i<=12 && nissu>days[i]; ++i) { nissu -= days[i]; }
*tuki = i;
*hi = nissu;
}
727デフォルトの名無しさん:2009/07/07(火) 14:09:24
>>686 ありがとうございました。

ただ、それぞれの問題につき1つのプログラムという形にしていただけないでしょうか?
自分なりにやってみたんですが、どうも上手くいきませんでした。

お手数ですが、よろしくお願いしますm(_ _)m
728デフォルトの名無しさん:2009/07/07(火) 14:48:07
>>726
ありがとうございましたm(__)m
729デフォルトの名無しさん:2009/07/07(火) 14:56:29
>>727
何も理解できてないな
>>686動かしてみた?
730デフォルトの名無しさん:2009/07/07(火) 16:35:47
>729 すみません… 本当に何も理解しておりません。
>実行結果です。
t23.c: In function `insert_node':
t23.c:130: error: `new' undeclared (first use in this function)
t23.c:130: error: (Each undeclared identifier is reported only once
t23.c:130: error: for each function it appears in.)
t23.c:130: error: parse error before "node_t"
t23.c: In function `remove_node':
t23.c:139: error: `delete' undeclared (first use in this function)
t23.c:139: error: parse error before "del"
t23.c: In function `random_list':
t23.c:149: error: 'for' loop initial declaration used outside C99 mode
t23.c: In function `get_node':
t23.c:155: error: 'for' loop initial declaration used outside C99 mode
731デフォルトの名無しさん:2009/07/07(火) 16:53:30
それ実行じゃなくてビルド時のエラーだろう。
とりあえず C++ でやってみては。
732デフォルトの名無しさん:2009/07/07(火) 17:03:29
[1] 授業単元: プログラミングC
[2] 問題文(含コード&リンク):
キーボードから半角英数で文字列を入力し、英字については大文字を小文字に、小文字を大文字にするプログラムを作成せよ。

実行例 文字列入力 :AbCdEfG123
    変換文字列 :aBcDeFg123
[3] 環境 windows
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2009/7/9
[5] その他の制限:全くの初心者なのでよろしくお願いします。
733デフォルトの名無しさん:2009/07/07(火) 17:32:46
すいません>>732のものなんですがもう一問あったのでこちらもよろしくお願いします
[1] 授業単元: プログラミングC
[2] 問題文(含コード&リンク):
キーボードから半角英数で文字列を入力し、これを数字(0→9)、大文字(A→Z)、
小文字(a→z)の順に並べ替えるプログラムを作成せよ。
ヒント:並べ替えアルゴリズムは、バブルソート(隣接交換法)を使うと簡単だろう。
    文字列長はstrlen命令を使うとよい。みたいです。
[3] 環境 windows
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2009/7/9
[5] その他の制限:
734デフォルトの名無しさん:2009/07/07(火) 17:36:08
>>731 提出先のコンパイラーでg++がインストールされてないようです…

cに書き換えるにはどうしたら良いでしょうか?
735デフォルトの名無しさん:2009/07/07(火) 17:37:38
>>730
コンパイルすらできていないのに>>727のコメントが出てくるのがおかしいんだよ。
自分なりに何をやったんだ?って思うんだよなぁ。
てっきりmainがありませんぐらいまではたどり着いてるものだと思っていたが。。
736デフォルトの名無しさん:2009/07/07(火) 17:40:05
>>734
new deleteをmalloc/calloc freeにする
変数の宣言をブロックの先頭で行うようにする
737デフォルトの名無しさん:2009/07/07(火) 17:57:20
Cに書き換えるのも書こうかと思ったんだけど
元々の条件にC/C++って書いてあったからなー
738デフォルトの名無しさん:2009/07/07(火) 18:00:05
>>736 ありがとうございます。
739デフォルトの名無しさん:2009/07/07(火) 18:02:11
>>732
#include <stdio.h>
#include <ctype.h>

int main(void)
{
char str[128];
int i;
scanf("%s", str);
for (i = 0; str[i]; ++i)
if (isupper(str[i])) str[i] = tolower(str[i]);
else if (islower(str[i])) str[i] = toupper(str[i]);
puts(str);
return 0;
}
740デフォルトの名無しさん:2009/07/07(火) 18:31:32
>>733
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int compare(char x, char y)
{
if (isdigit(x)) return isdigit(y)? y - x: 1;
if (isupper(x)) return isdigit(y)? -1: isupper(y)? y - x: 1;
if (islower(x)) return isdigit(y) || isupper(y)? -1: islower(y)? y - x: 1;
return 0;
}
void bsort(char *str)
{
int i, j;
for (i = 0; i < strlen(str) - 1; ++i) {
for (j = 1; j < strlen(str) - i; ++j) {
if (compare(str[j], str[j - 1]) > 0) {
char t; t = str[j]; str[j] = str[j - 1]; str[j - 1] = t;
}
}
}
}
int main(void)
{
char str[128];
scanf("%s", str);
bsort(str);
puts(str);
return 0;
}
741デフォルトの名無しさん:2009/07/07(火) 18:57:59
>>737 そうですね、迂濶でした。
今度こそ自分なりにやってみますが、ダメだったときはお願いしてもよろしいでしょうか…
742デフォルトの名無しさん:2009/07/07(火) 19:02:25
>>734
> 提出先のコンパイラーでg++がインストールされてないようです…
何のエラーメッセージでそう思った? 

とりあえず int main(void){return 0;} の一行を追加して、g++でコンパイルみてはどうだろう。
743デフォルトの名無しさん:2009/07/07(火) 19:52:53
>>742 g++: p11.cpp: No such file or directory
>g++: no input files   です。
>
744デフォルトの名無しさん:2009/07/07(火) 19:56:43
>>743
ばっちりインストールされてるじゃねーかw
745デフォルトの名無しさん:2009/07/07(火) 19:57:03
>>743
which g++
とでもしてろよwwwww
746デフォルトの名無しさん:2009/07/07(火) 19:57:41
↑間違えました。
747デフォルトの名無しさん:2009/07/07(火) 20:01:47
[1] 授業単元:
コンパイラの構成
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9696.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C(yacc、lex)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7月14日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
前回も>>204で助けていただいたのですが、yaccとlexの問題です。
スレ違いかもしれませんがどなたかよろしくお願いします。
748デフォルトの名無しさん:2009/07/07(火) 20:13:40
>>744 >>745 そうなんですか?W

とりあえず>>686を参考にどうにかしてみます。
どうにもならなかったらまた来させて下さい…

長々とお付き合いありがとうございました!
749デフォルトの名無しさん:2009/07/07(火) 21:07:31

[1] 授業単元:C言語
[2] 問題文:配列を用いた計算機のプログラムを作成してください。
計算は前から順に行われていく。
入力される数値の個数は最大でも20個としてください。

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C言語

[4] 期限:2009年7月12日
[5] その他:特になし
よろしくおねがいします
750デフォルトの名無しさん:2009/07/07(火) 21:09:52
>>706
/*Q1*/
#include <stdio.h>
int main() {
FILE *fp_in, *fp_out; char fname[256], key, buf;
printf("ファイルを暗号化します!\n\n");
printf("入力ファイル名は:"); scanf("%s", fname); fflush(stdin);
if ((fp_in = fopen(fname, "rb")) == NULL) return 1;
printf("出力ファイル名は:"); scanf("%s", fname); fflush(stdin);
if ((fp_out = fopen(fname, "wb")) == NULL) return 1;
printf("暗号化のキー文字は:"); key = fgetc(stdin);
while (fread(&buf, sizeof(char), 1, fp_in) == 1) {
buf = buf ^ key; fwrite(&buf, sizeof(char), 1, fp_out);
}
printf("暗号化が完了しました!\n");
fclose(fp_in); fclose(fp_out);
return 0;
}
/*Q2*/
#include <stdio.h>
void rotate(unsigned char *a) {*a = (*a) << 1 | (*a) >> 7;}
int main() {
int i, k, x; unsigned char a;
printf("1〜255の整数を入力 : "); scanf("%d", &x);
a = x;
for (i = 1; i <= 16; i++) {
rotate(&a);
printf("%2d-th shift: %3d ", i, a);
for (k = 7; k >= 0; k--) {printf("%d", (a & (1<<k)) >> k);} printf("\n");
}
return 0;
}
751デフォルトの名無しさん:2009/07/07(火) 21:15:24
>>706
/*Q3*/
#include <stdio.h>
#include <stdlib.h>
void itoa_r(int n, char *str);
enum {MAX = 100};
main() {
int n;
char str[MAX];
while (1) {
int i;
for (i = 0; i < MAX; i++) str[i] = '\0'; // 追加
printf("\n整数を入力して下さい(終了 = 0):");
scanf("%d", &n);
if (n == 0) break;
itoa_r(n, str);
printf("文字列に変換すると %s です\n", str);
}
}
void itoa_r(int n, char *str)
{
if (n < 0) {
*str = '-';
itoa_r(-n, str + 1);
} else if (n != 0) {
int m = n, d = 1;
while (m /= 10) d++;
*(str + d - 1) = '0' + (n % 10);
itoa_r(n / 10, str);
}
}
752デフォルトの名無しさん:2009/07/07(火) 21:58:55
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):


C++言語を使ってスタックを実現するクラスを定義して,その実行を確認するプログラム(main関数)を書く。

クラス名はstackとする。

要素のデータの型はintとする。
格納できる要素の最大数は10とする。
公開されているインターフェースは下記のものとする。

void push(int data);
int pop();

初期設定は,以下のいずれかによって行う。
(1) クラスのコンストラクタ(constructor)の機能を用いる。
(2) 初期設定用のインターフェース(init)を定義し,スタックを使用する前に,initを呼び出す。

機能確認のためのインターフェース(たとえばスタック内のデータを表示させる)を追加してもよい。

上記の仕様を満たさない(インターフェース名が上記と一致しない等)プログラムは評価の対象としない。

#入出力はprintfを用いること。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 2009年7月10日まで
よろしくおねがいします
753デフォルトの名無しさん:2009/07/07(火) 22:44:39
>>752
>#入出力はprintfを用いること。
入力もprintfを使わなきゃダメなの?
754デフォルトの名無しさん:2009/07/07(火) 22:54:15
>>752
#include <cstdio>
const int MAX = 10;

class stack {
int *data_;
int n;
public:
stack() { data_ = new int[MAX]; }
~stack() { delete data_; }
void init() { n = 0; }
void push(int data) { if (0 <= n && n < MAX) data_[n++] = data; }
int pop() { if (0 <= n && n < MAX) return data_[n--]; }
void print() { for (int i = 0; i < n; ++i) printf("%d\n", data_[i]); }
};

int main()
{
stack s;
s.init();
s.push(5); s.push(-8); s.push(2); s.print();
s.pop(); s.print();
return 0;
}
755デフォルトの名無しさん:2009/07/07(火) 23:04:34
>>753
とつっこむあなたはprintfで入力ができるんですか?
756デフォルトの名無しさん:2009/07/07(火) 23:25:39
>>752
チェック用の関数と例外処理でcoutを使ってる。
だめそうなら、そこをprintfに書き換えて。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9699.txt
757デフォルトの名無しさん:2009/07/07(火) 23:28:24
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 二次元配列を使って以下のファイルを読み込み、同じように表示しなさい。
 【test.dat】
  ** ** **
  ** ** **
  ** ** **

ポインタを宣言;
データを宣言;
ポインタ=fopen("test.dat",r);

if(ポインタ == NULL) return;

for(i=0; i<3; i++){
for(j=0; j<3; j++){
fscanf(ポインタ,"%d"&sub[i][j]); }}

/* 此処の printf() がどうしてもできません。ご協力お願い致します。 */

fclose(ポインタ);

[3] 環境
 [3.1] Windows
 [3.2] Visual Studio
 [3.3] 言語: C++
[4] 期限:2009年7月8日 09:00まで
[5] その他の制限:特にありませんが、理解したいので比較的簡単なものでお願い致します。
758デフォルトの名無しさん:2009/07/07(火) 23:33:26
>>757
test.datの内容それであってる?整数が3行3列=9個あるんじゃないのか?
759デフォルトの名無しさん:2009/07/07(火) 23:37:20
>>757
"**"は整数なんじゃないかとエスパー

#include <stdio.h>

int main(void)
{
FILE *fp = fopen("test.dat", "r");
int sub[3][3];
int i, j;

if (fp == NULL) return 1;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
fscanf(fp, "%d", &sub[i][j]);

for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
printf(" %d", sub[i][j]);
printf("\n");
}
fclose(fp);
return 0;
}
760757:2009/07/07(火) 23:39:56
>>758さま

すみません間違えていました;;
指摘していただいて確認したところ、
【test.dat】
** ** **
** ** **
** ** **
** ** **
でした。
そうなると、
for(i=0; i<4; i++){
for(j=0; j<3; j++){
fscanf(ポインタ,"%d"&sub[i][j]); }
}
になると思います・・・すみませんでした><

761757:2009/07/07(火) 23:43:19
>>759さま
あ!そういう意味でしたか・・・すみません、おっしゃるとおりです!
しかも早急にご回答ありがとうございます!!
printf()は普通に書けばよかったんですね・・・なるほど。

>>758さま
>>759さま
お二方、ありがとうございました。
762デフォルトの名無しさん:2009/07/08(水) 00:19:10
[1] 授業単元: 情報処理T
[2] 問題文: 乗算合同法で整数乱数を生成.。
区間(0.1)の一様にして、1以上、ある特定の整数の乱数を生成する。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: TurboC
[3.3] 言語: C
[4] 期限: 2009年7月20日00:00まで
[5] その他の制限: #include <stdio.h>で始まるようにお願いいたします。

よろしくお願いします。
763デフォルトの名無しさん:2009/07/08(水) 02:15:09
>>624で質問し、>>677で答えていただいた者ですが、
プログラムにコメント文も付けていただけますでしょうか?
764デフォルトの名無しさん:2009/07/08(水) 03:19:26
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
問1:フィボナッチ数列を23番目まで計算して配列fibに格納した後、キーボードから何番目かを指定して表示するプログラムを作成せよ。
  要素を表示する処理は何回も繰り返し行えるようにし、キーボードから1〜23以外の数値が入力されたら終了する。
  実行例 数の入力:2
        fib[2]:1
        数の入力:23
        fib[23]:28657
        数の入力:24
        終了

問2:(1)キーボードから半角英数で文字列を2つ入力し、これを比較して同じか否かを判定するプログラムを作成せよ。
   実行例 文字列1:ABC               文字列1:ABc
      文字列2:ABC               文字列2:ABC
      2つの文字列は同じです         2つの文字列は違います  
   
(2)(1)のプログラムを、strcmpを使って書き換えなさい。

問3:1週間の売り上げ一覧を表示するプログラムを作成せよ。
   実行例  野菜の1週間の売り上げた合計数量と合計金額 
                                  合計  合計
        種類 単価 月 火 水 木 金 土 日 数量  金額
        レタス 150 50 55 60 65 70 75 80 455  68250
        トマト  50 20 25 30 35 40 45 50 245  12250
        もやし  20 10 15 20 25 30 35 40 175  3500
        ナスビ  40 5  10 15 20 25 30 35 140  5600 
[3] 環境
 [3.1] OS:(Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009/7/9
[5] その他の制限: C言語の基本くらいしかやっていません。
765デフォルトの名無しさん:2009/07/08(水) 08:50:32
[1] 授業単元: 数値計算プログラミング
[2] 問題文(含コード&リンク): (1)√57を求めよ (2)三乗根の7を求めよ
               (3)f(x)=3x^3+2x^2+5x-15=0の解を求める
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限: ([2009年07月10日まで]
[5] その他の制限:ニュートン法を用いる 初期値 x0=1
お願いします

766デフォルトの名無しさん:2009/07/08(水) 09:24:58
>>764
問1
#include <stdio.h>

#define N 23

int main()
{
    int fib[N + 1], i, n;

    fib[0] = 0, fib[1] = 1;
    for(i = 2; i <= N; i++)
        fib[i] = fib[i - 2] + fib[i - 1];

    while(1){
        printf("数の入力:");
        scanf("%d", &n);
        if(n < 1 || n > N) break;
        printf("fib[%d]:%d\n", n, fib[n]);
    }
    printf("終了\n");
    return 0;
}
767デフォルトの名無しさん:2009/07/08(水) 09:34:17
>>764
問2
#include <stdio.h>

#define SIZE 1024

int main()
{
    char s1[SIZE], s2[SIZE];
    int i;

    printf("文字列1:"), fgets(s1, SIZE, stdin);
    printf("文字列2:"), fgets(s2, SIZE, stdin);
    for(i = 0; s1[i] != '\0' && s2[i] != '\0' && s1[i] == s2[i]; i++);
    if(s1[i] != s2[i]) printf("2つの文字列は違います\n");
    else printf("2つの文字列は同じです\n");
    return 0;
}
768デフォルトの名無しさん:2009/07/08(水) 09:36:12
>>764
問2(2)
#include <stdio.h>
#include <string.h>

#define SIZE 1024

int main()
{
    char s1[SIZE], s2[SIZE];

    printf("文字列1:"), fgets(s1, SIZE, stdin);
    printf("文字列2:"), fgets(s2, SIZE, stdin);
    if(strcmp(s1, s2) != 0) printf("2つの文字列は違います\n");
    else printf("2つの文字列は同じです\n");
    return 0;
}
769デフォルトの名無しさん:2009/07/08(水) 09:59:42
問3
#include <stdio.h>>

struct weekly_sales_t{
    char kind[1024];
    int price;
    int daily_sales[7];
};

int main()
{
    struct weekly_sales_t sales[4] = {
        {"レタス", 150, {50, 55, 60, 65, 70, 75, 80}},
        {"トマト",  50, {20, 25, 30, 35, 40, 45, 50}},
        {"もやし",  20, {10, 15, 20, 25, 30, 35, 40}},
        {"ナスビ",  40, { 5, 10, 15, 20, 25, 30, 35}},
    };
    return 0;
}

時間ないので誰か任せた
770デフォルトの名無しさん:2009/07/08(水) 10:06:09
771デフォルトの名無しさん:2009/07/08(水) 11:11:32
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):下記に
[3] 環境
 [3.1] OS:VistaSP1
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語:C
[4] 期限:2009年7月8日23時まで
[5] その他の制限:できるだけ基本で

登録番号"int no"と名前"char *name"と年齢"int age"を含む構造体person型の配列を定義し初期化せよ.
なお, 最後のデータの名前にはNULLを入れておく. 登録番号は入力順に1,2,3,4,5とする.
そして, 登録されている人の平均年齢を計算する関数を作成せよ.
引数は, 配列の先頭アドレスを指す構造体person型のポインタとする.
772デフォルトの名無しさん:2009/07/08(水) 11:57:37
[1] 授業単元: 4次のルンゲ−クッタ法を用いて連立微分方程式を解く
[2] 問題文:システムの状態x = (x, y, z) が、以下の連立微分方程式に従う場合の挙動をシミュレーション
する.
dx/dt= −y − z
dy/dt= x + ay
dz/dt= b + (x − c)z
【課題1】4 次のルンゲ-クッタ法を用いて上記方程式を数値的に解くプログラムreport.c を完
成させよ.report.c には3 つの関数が定義されている.ルンゲ-クッタ法を1 ステップ行う関数
rungekutta() は完成しているが、導関数を求める関数deriv() とプログラム全体を制御する関
数main() は不完全である.各関数に適切な実行文等を記述し、プログラムを実行できるよう完
成させよ.
【課題2】課題1で完成させたプログラムreport.c を用い、シミュレーションを実行する.シス
テムパラメータが
1. (a, b, c) = (1.0, 0.2, 1.0)
2. (a, b, c) = (1.0, 0.2, 8.0)
の2つの場合に、時刻t = 200.0 からt = 400.0 の間にx が位相空間に描く軌跡を図に表せ.シ
ミュレーションの時間刻みはdt = 0.02 とし、初期値x(0) = (x(0), y(0), z(0)) は適当な値を選ぶ
こと.またそれぞれの場合について、初期値をわずかに変化させた場合に軌跡がどのように変化
するかを、同様に図に表して比較せよ.
[3] 環境 Vine Linux
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:2009年7月28日
[5] その他の制限:ソースは長いので次レスに投稿します。できれば理解したいのでコメント付きで解説して戴けると助かります。面倒臭い場合は結構です。

どうか宜しくお願いします。
773デフォルトの名無しさん:2009/07/08(水) 11:58:52
ろだつかえよ
774デフォルトの名無しさん:2009/07/08(水) 12:07:00
>>772です。ソースを三つに分けます。ややこしくてすみません。
#include <stdio.h>
#include <math.h>
#define N 3 //システムの次元
double a = 0.20;
double b = 0.20;
double c = 10.0;
/* 導関数 */
/* x における dx/dt を求める */
void derivs(double t, double x[], double dxdt[])
{
/* dx/dt = f(x) */
dxdt[0] = ;
dxdt[1] = ;
dxdt[2] = ;
}
775デフォルトの名無しさん:2009/07/08(水) 12:07:29
>>765 ニュートン法を用いる
問題>>540 解答>>543(CODE)

長い解答なら、ろだつかえよ
776デフォルトの名無しさん:2009/07/08(水) 12:09:24
>>774の続き
/* ルンゲクッタ法を1ステップ行う関数   */
/* x(t)=xin から x(t+h)=xout を求める */
void rungekutta(double xin[], double xout[], double t, double h)
{
int i;
double th2,h2,h6;
double dxdt0[N], dxdt1[N], dxdt2[N], dxdt3[N], xt[N];
double deriv(double, double [], double []);

h2=h*0.5;
h6=h/6.0;

th2=t+h2;
derivs(t,xin,dxdt0);
for(i=0;i<N;i++) xt[i] = xin[i] + h2*dxdt0[i];

derivs(th2,xt,dxdt1);
for(i=0;i<N;i++) xt[i] = xin[i] + h2*dxdt1[i];

derivs(th2,xt,dxdt2);
for(i=0;i<N;i++) xt[i] = xin[i] + h*dxdt2[i];

derivs(t+h,xt,dxdt3);
for(i=0;i<N;i++)
xout[i] = xin[i] + h6*(dxdt0[i]+2.0*(dxdt1[i]+dxdt2[i])+dxdt3[i]);
}

777デフォルトの名無しさん:2009/07/08(水) 12:11:11
>>776の続き
int main()
{
int i;
double t, tmax, dt;
double x[N], x_next[N];
FILE *fp;
void rungekutta(double [], double [], double, double);
/* 諸変数を初期化 */
tmax = ;
dt = ;
/* システムの状態を表すベクトルx(N次元)の初期化 */

/* 計算結果を書き出す為のファイルを開く */
fp = fopen("result.dat","w");
/* 時間tを刻み幅dtずつ増加させながら時間発展 */
for(t=0.0;t<tmax;t+=dt){

/* 時刻tとxの各要素をファイルに書き出す */
fprintf(fp,"%lf %lf %lf %lf\n ", t, x[0], x[1], x[2]);
/* xを更新 */
x +=
}
/* ファイルを閉じる */
fclose(fp);
return 0;
}

778デフォルトの名無しさん:2009/07/08(水) 12:12:14
>>773 すいませんロダってどう使うのですか?
779デフォルトの名無しさん:2009/07/08(水) 12:16:16
780デフォルトの名無しさん:2009/07/08(水) 12:29:36
>>779 ありがとうございます。今投稿してみたのですがファイルが添付されてませんでしたorz

参照にファイルを添付したら良いんですよね?こんな馬鹿に詳しく教えて貰えないでしょうか?
781デフォルトの名無しさん:2009/07/08(水) 12:50:51
>>780
ここのうpろだはいちおう制限があるよ
# 添付可能ファイル : TEXT, LHA, ZIP, C, CPP
# 最大投稿データ量 : 100 KB
782デフォルトの名無しさん:2009/07/08(水) 14:08:18
>>775
そのプログラムをコンパイルしたらエラーが出ちゃったので出来ませんでした
すいません
783デフォルトの名無しさん:2009/07/08(水) 15:56:26
>>782
そうですか
784デフォルトの名無しさん:2009/07/08(水) 16:20:34
[1] 授業単元:アルゴリズム入門
[2] 問題文(含コード&リンク):
課題1: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9702.txt
課題2: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9703.txt
課題3: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9704.txt
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C 
[4] 期限:7月9日 15:00まで
[5] その他の制限: 特になし。どうかよろしくお願いします
785>>772:2009/07/08(水) 17:18:53
>>781さんありがとうございます。それで容量も1.5kでファイル形式もCなんでいけると思ってもう一度投稿しましたが無理でした...

すいませんが>>772を問題文、>>774>>776>>777をソースファイルとしてどなたかお願いできますか?
786デフォルトの名無しさん:2009/07/08(水) 17:32:59
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9706.txt
[3] 環境
[3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VisualC++
 [3.3] 言語: C
[4] 期限: 7月13日
[5] その他の制限:一つ目の課題はテキストファイルからバイナリファイルの作成

787769:2009/07/08(水) 17:53:28
788デフォルトの名無しさん:2009/07/08(水) 18:12:28
Dijkstra法の課題が出たのですが全く分かりません。助けてください。

(課題)
Dijkstra法のプログラムを完成せよ。

(Dijkstraのアルゴリズムの擬似コード)

#include <stdio.h>
#define M 8 //ノードの数
#define Z 300 //無限大
int c[M][M] = { 0, Z, Z, Z, Z, Z, 7, 2},{ Z, 0, 8, 7, Z, Z, Z, 1},{ Z, 8, 0, Z, Z, Z, Z,10},{ Z, 7, Z, 0,10, 3, Z, Z},{ Z, Z, Z,10, 0, 8, Z, 5}, { Z, Z, Z, 3, 8, 0, 2, Z}, { 7, Z, Z, Z, Z, 2, 0, 9}, { 2, 1,10, Z, 5, Z, 9, 0}; //隣接行列
int main(void){
int start; //ソースのノード
int d[M]; //ノードまでのコスト
int v[M]; //確定フラグ
int p[M]; //前のノードへのポインタ
     printf("start\n");
scanf("%d",&a);//ソースノードstartを指定する
for (j=0; j<M; j++){
        //最小コストのノードを探す、最小コストのノードを確定する
         for(k=0; k<M; j++){
           //wを経由してkにいたるコストがそれまでの最短路のコストより小さければd(k)を更新
          }
}
     //ソースノードから各ノードへの最小コストと最短路を表示する
}


789デフォルトの名無しさん:2009/07/08(水) 18:17:16
>>788
1>>嫁。テンプレ使おうぜ。
790デフォルトの名無しさん:2009/07/08(水) 19:28:29
[1] デジタル信号処理
[2] 入力したtxtファイルをFFT、IFFTせよ
[3] 環境
 [3.1] Windows
 [3.2] gcc 3.4
 [3.3] C
[4] 期限:7月8日 24:00まで

よろしくお願いします
791デフォルトの名無しさん:2009/07/08(水) 19:39:21
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9708.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9709.txt
http://u9.getuploader.com/himajinn/download/219/Dll_BMP_C.dll
http://u9.getuploader.com/himajinn/download/220/Dll_BMP_C.h
http://u9.getuploader.com/himajinn/download/221/Dll_BMP_C.lib
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C 
[4] 期限:7月15日まで
[5] その他の制限: お願いします
792デフォルトの名無しさん:2009/07/08(水) 19:54:59
>>791
通報しようかどうしようか悩むな。
アウアウなことはガチなんだけど。
793デフォルトの名無しさん:2009/07/08(水) 19:59:01
某著作権寄生団体に見つかるまえに削除しとけー
794デフォルトの名無しさん:2009/07/08(水) 21:23:22
795デフォルトの名無しさん:2009/07/08(水) 21:24:16
バイナリと問題文で違いがあるの?
796デフォルトの名無しさん:2009/07/08(水) 21:42:12
>>771
#include <stdio.h>
struct person {
int no;
char *name;
int age;
};
double average_age(struct person *persons) {
int n, sum = 0;
for (n = 0; persons[n].name != NULL; n++) {
sum += persons[n].age;
}
if (n == 0) {
return -1;
} else {
return (double)sum / n;
}
}
int main(void) {
struct person persons[] = {
{1, "ichiro", 30},
{2, "jiro", 27},
{3, "saburo", 23},
{4, "shiro", 19},
{5, NULL, 0}
};
printf("平均年齢は%g\n", average_age(persons));
return 0;
}
797デフォルトの名無しさん:2009/07/08(水) 21:45:00
[1] C言語を使って計算を簡略化する:
[2] XY平面上の3点P1(x1,y1)P2(x2,y2)P3(x3,y3)の座標を順に入力した時、3点が同一直線上にあるかどうかを調べて
  結果を表示するプログラムを作成せよ。:
[3] 環境
 [3.1] Windows
 [3.2] Borland
 [3.3] C:
[4] 2009年7月10日8:35まで:
[5] その他制限:
  入力される座標はすべて第一象限です。
  よろしくお願いします。
798デフォルトの名無しさん:2009/07/08(水) 22:15:37
>>797
#include <stdio.h>
int main()
{
int x1,y1,x2,y2,x3,y3;
printf("x1>"); scanf("%d", &x1);
printf("y1>"); scanf("%d", &y1);
printf("x2>"); scanf("%d", &x2);
printf("y2>"); scanf("%d", &y2);
printf("x3>"); scanf("%d", &x3);
printf("y3>"); scanf("%d", &y3);
if ((x3 - x1) * (y2 - y1) == (x2 - x1) * (y3 - y1))
printf("同一直線上にあります\n");
else
printf("同一直線上にありません\n");
return 0;
}
799デフォルトの名無しさん:2009/07/08(水) 22:26:35
[1]C言語中級
[2] int bitmap[640][480]はビットマップ画像の画素を表すものとする。
指定された点x,yを含む指定された境界色C2で囲まれた平面領域を
指定された色C1で塗りつぶす関数
paint(int x,int y,int c1,int c2)を作成
[3] linux/gcc/C言語
☆再帰(間接を含む)を使ってはならない。
☆十分な速度が必要( 基準PC(PCセンター端末 Cerelon 800MHz)で100回/秒以上)
☆三角形、四角形、円、楕円、放物線で囲まれた領域、それぞれ5つのケース
について実行前のbitmapと実行後の配列をバイナリファイルとして
triangle.pre.bitmap triangle.post.bitmap
rectangle.pre.bitmap rectangle.post.bitmap
circle.pre.bitmap circle.post.bitmap
ellipse.pre.bitmap ellipse.post.bitmap
parabora.pre.bitmap parabora.post.bitmap
という名称で保存したものとソースコード、これをコンパイルしたものを
work20090717.xxxxxx.zipという形式でzip圧縮したものをメール添付
(xxxxxxは学籍番号下6桁)
[4] 7/17 正午まで
800デフォルトの名無しさん:2009/07/08(水) 22:26:48
>>798
ありがとうございます!できました
801デフォルトの名無しさん:2009/07/09(木) 04:59:49
[1] 授業単元: コンピュータネットワーク
[2] 問題文(含コード&リンク):(課題)
  Dijkstra法のプログラムを完成せよ。
(Dijkstraのアルゴリズムの擬似コード)
#include <stdio.h>
#define M 8 //ノードの数
#define Z 300 //無限大
int c[M][M] = { 0, Z, Z, Z, Z, Z, 7, 2},{ Z, 0, 8, 7, Z, Z, Z, 1},{ Z, 8, 0, Z, Z, Z, Z,10},{ Z, 7, Z, 0,10, 3, Z, Z},{ Z, Z, Z,10, 0, 8, Z, 5}, { Z, Z, Z, 3, 8, 0, 2, Z}, { 7, Z, Z, Z, Z, 2, 0, 9}, { 2, 1,10, Z, 5, Z, 9, 0}; //隣接行列
int main(void){
int start; //ソースのノード
int d[M]; //ノードまでのコスト
int v[M]; //確定フラグ
int p[M]; //前のノードへのポインタ
     printf("start\n");
scanf("%d",&a);//ソースノードstartを指定する
for (j=0; j<M; j++){
        //最小コストのノードを探す、最小コストのノードを確定する
         for(k=0; k<M; j++){
           //wを経由してkにいたるコストがそれまでの最短路のコストより小さければd(k)を更新
          }
     } //ソースノードから各ノードへの最小コストと最短路を表示する
}
[3] 環境
 [3.1] OS: Windows [3.3] 言語: C++
[4] 期限: 2009年7月9日16:00まで
[5] その他の制限:なし

488です。焦りすぎて規約を読まずに投稿してしまいました。すみません。
期限ギリギリなのですがお力を貸していただけると嬉しいです。よろしくお願いします。
802784:2009/07/09(木) 09:35:23
784です。

一晩やってみたのですが、結局まったく出来ずに朝を迎えてしまいました・・・orz

どなたか、どうかお願いします。
803デフォルトの名無しさん:2009/07/09(木) 09:56:18
>>802 少し簡単にしてみた
char* getword(FILE* f){
char buffer[MAXSIZE]={0}, firstchar[10]={0};

fscanf(f, "%*[^a-zA-Z]");
if(fscanf(f, "%1[a-zA-Z]%1022[0-9a-zA-Z]", firstchar, buffer+1)>=1){
buffer[0]=firstchar[0];
return strdup(buffer);
}
return NULL;
}
804デフォルトの名無しさん:2009/07/09(木) 10:47:17
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):

・正規乱数の発生 (ボックスミュラー法)
ボックス・ミュラー法により,区間[0, 1) の一様乱数から標準正規分布N(0, 1) に従う
正規乱数を100,000 個発生し,そのデータから得られる以下の各項目を報告せよ。
なお、一様乱数の生成は合同式法を用い,また正規乱数の生成はBox-Muller 法
を用いて,いずれもC言語プログラムで実現すること.(既存のRAND関数などを用いてはならない)

1. 正規乱数の平均値.
2. 正規乱数の標準偏差.
3. 正規乱数のヒストグラム.区間[-5, 5] を100 分割したものとする.
(ヒストグラムはhistgram[100]の様に宣言し、100個それぞれの出現個数を足していったものです)

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2009年7月10日12:00まで]
[5] その他の制限: 既存のRAND関数使用不可

先日>>251で教えていただいた中心極限定理を書き換えて作成していたのですが、
上手くできませんでした。

宜しくお願いします。
805デフォルトの名無しさん:2009/07/09(木) 11:53:21
>>804
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9712.txt
RAND_MAXがダメだって話だったから、INT_MAXに書き換えておいた。
806デフォルトの名無しさん:2009/07/09(木) 12:19:34
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
  二つの複素数 α、βの実数部、虚数部の値(実数)をそれぞれ入力し、
   α/β
(αをβで割った商)を求めて表示せよ。(表示方法は複素数らしくなるよ
うに工夫せよ。)

 ただし、複素数を、実数部と虚数部に対応するメンバで構成される構造体
として表し、複素数の除算用関数c_div()を作成して、これを利用すること。
 この関数は、sとtを複素数を表す構造体としたとき、c_div(s,t)と呼び出
すと、戻り値としてsをtで除算した結果である複素数の構造体を返すものと
する。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: c++Builder
 [3.3] 言語: C
[4] 期限: 2009年7月10日12:00まで
[5] その他の制限: なし

お願いします。
807デフォルトの名無しさん:2009/07/09(木) 12:28:34
>>806
あれ?デジャブ・・・
808デフォルトの名無しさん:2009/07/09(木) 13:28:30
809デフォルトの名無しさん:2009/07/09(木) 14:29:10
>>801
もう見てないかも試練がクソース

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9714.c
810デフォルトの名無しさん:2009/07/09(木) 14:46:45
>>805
ありがとうございました。
811デフォルトの名無しさん:2009/07/09(木) 14:52:22
>>809
ありがとうございました。
助かりました!
812デフォルトの名無しさん:2009/07/09(木) 14:58:07
[1] 授業単元:C言語で簡単なゲーム
[2] 4目並べの勝ち負け判定
[3] 環境
 [3.1] OS: UNIX
 [3.2] gcc
 [3.3] cのみ
[4] 期限: 7/9 18:00
[5] その他の制限:できるだけ簡単な作りにしていただきたいです。中高生なみの。

お願いします。
813デフォルトの名無しさん:2009/07/09(木) 15:08:12
>>812
4目並べにもいろいろあるぞ。重力の有無、盤面サイズ、その他もろもろを教えれ
814デフォルトの名無しさん:2009/07/09(木) 15:19:41
>>806
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9716.txt

思いっきりデジャブだけど、その時に作ったソースがそのまま
残っているのでそのままうpした
815784:2009/07/09(木) 15:23:16
>808

すいません、今見に来ました。
何とか今日の夜まで猶予をもらったので、
もう一度zip落とさせてもらえないでしょうか。
落としてみたら、ファイルが無かったようなので・・・。
816デフォルトの名無しさん:2009/07/09(木) 15:24:11
>>815
今やってみたら普通に落とせたけど?
817デフォルトの名無しさん:2009/07/09(木) 15:24:37
>>815
まだ残ってるぞ
818784:2009/07/09(木) 15:30:02
すいません、今もう一度やってみたらできました!!

>>816 >>817
失礼しました。

>>784
本当にありがとうございました!大感謝です。
これで単位がもらえる・・・

皆様、ありがとうございました。
819784:2009/07/09(木) 15:31:08
興奮して間違えたorz

改めて
>>808
ありがとうございました!
820デフォルトの名無しさん:2009/07/09(木) 16:18:20
お願いします。

[1] 授業単元: 論理設計
[2] 問題文: 3入力のクワイン・マクラスキー法のプログラムを作成せよ
[3] 環境
特に無し(紙に書いて提出)
言語:C++
[4] 期限:07月13日(月)まで
[5] その他の制限:特にないです。
821812:2009/07/09(木) 17:07:41
812での追記
4目並べ
重力は無しです、盤面サイズは10×10。
駒黒1
駒白−1
っと設定しています。これで、作っていただきたいです。
822デフォルトの名無しさん:2009/07/09(木) 17:34:59

何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理するプログラムを作る。

(1)科目別の最高点、最低点を表示する。
(2)各学生の3教科の平均点を表示する。
(3)各教科の平均点を表示する。

ただし Ctrl+zが押されるまで次々と整数値を読み込んでいくものとする。

以上の問題お願いします
m(__)m
823デフォルトの名無しさん:2009/07/09(木) 17:49:24
824デフォルトの名無しさん:2009/07/09(木) 18:32:51
>>822

質問テンプレ忘れてました。
[1] 単元:プログラミング工学1
[2] 問題文:下記にあります。
[3] 環境
:Windows
[3.3] 言語: C++
[4] 期限:あと40分位でお願いします。

何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理するプログラムを作る。

(1)科目別の最高点、最低点を表示する。
(2)各学生の3教科の平均点を表示する。
(3)各教科の平均点を表示する。

ただし Ctrl+zが押されるまで次々と整数値を読み込んでいくものとする。

以上の問題お願いします
m(__)m
825デフォルトの名無しさん:2009/07/09(木) 19:20:54
〔1〕授業単元:C言語
〔2〕問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9718.txt
〔3〕環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
〔4〕期限:7月10日 18時
〔5〕コマンド引数、再帰呼び出しまで習いました
   よろしくお願いします
826デフォルトの名無しさん:2009/07/09(木) 20:13:56
1] 授業単元: 宿題
[2] 問題文(含コード&リンク): 整数を入力し、奇数か偶数かを判断するプログラム(switch文で
[3] 環境
 [3.1] OS: (Windows/Linux/等々) XP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) borland
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 明日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
827デフォルトの名無しさん:2009/07/09(木) 20:41:18
[1] 授業単元:オペレーティングシステムT
[2] 問題文(含コード&リンク):exp7.cのプログラムを応用し、コマンドの引数xxxxで指定したファイルが更新されたら直ちに
"Modified xxxxfile on Day Month date hh:mm:ss yyyy"
というメッセージを表示するプログラム(ファイル更新を監視する常駐プログラム)を作成せよ。常駐プログラム(バックグランドで起
動され一般に広義のデーモンと呼ばれる)は、kill pid コマンドが入力されるまで、動き続けるように作成すること。

exp7.cは
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9720.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 09年7月13日正午
[5] その他の制限: プログラミング能力を問う科目でないため、特に制限はありません。
ですが、添付したソースに適したレベルでお願いします。

<実行結果>
$ gcc -o exp8 exp8.c
$ exp8 exp8 &
$ ps
PID TTY TIME CMD
3028 pts/1 00:00:00 bash
3073pts/1 00:00:00 exp8
3074 pts/1 00:00:00 ps
$ touch exp8
$
Modified exp8 file on Sun May 25 14:20:26 2008
touch exp8
$
Modified exp8 file on Sun May 25 14:20:26 2008
kill 3073
$
828デフォルトの名無しさん:2009/07/09(木) 21:19:28
>>827
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>

int main(int argc, char **argv)
{
 char *file_name = argv[1];
 struct stat sb;
 time_t old_mtime;

 stat(file_name, &sb);
 old_mtime = sb.st_mtime;
 while (1) {
  usleep(500000);
  stat(file_name, &sb);
  if (old_mtime != sb.st_mtime) {
   printf("'%s'が書き換えられた!%s", file_name, ctime(&sb.st_mtime));
   old_mtime = sb.st_mtime;
  }
 }
}
829デフォルトの名無しさん:2009/07/09(木) 21:46:36
>>826
switch文で判定するとか問題がカス過ぎるだろ

#include <stdio.h>
int main(){
int n;
printf("input number > ");
scanf("%d",&n);

switch(n){
default: printf("%s",n&1 ? "odd" : "even");
}

return 0;
}
830デフォルトの名無しさん:2009/07/09(木) 21:51:11
#include <stdio.h>
int main(){
int n;
printf("input number > ");scanf("%d",&n);
switch(n�%2){
case 0: printf("even¥n");break;
case 1: printf("odd¥n");break;
default: printf("Bug of processor??¥n");break;
}
return 0;
}
としたらBug of processorと表示されることは内と言える?
831デフォルトの名無しさん:2009/07/09(木) 22:07:22
>>829
ひどい奴だなwww もっとこう出題者の意向をくんでやれよ。いいよ俺が答えてやる

>>826
#include <stdio.h>
int main(){
int n;
printf("input number > ");
scanf("%d",&n);

switch(n){
case 0: case 2: printf("偶数です!\n"); break;
case 1: case 3: printf("奇数です!\n"); break;
default: printf("わかりません!\n"); break;
}

return 0;
}
832デフォルトの名無しさん:2009/07/09(木) 22:32:39
>>831
「わかりません」ってなんだよ

>>826
下のプログラムを実行したら、ちゃんとintの範囲なら全部判定できるプログラムができるからやってみなw

#include <stdio.h>
#include <limits.h>

int main(){
  int i;
  printf("#include <stdio.h>\n"
    "int main(){\n"
    "\tint n;\n"
    "\tprintf(\"input number > \");\n"
    "\tscanf(\"%%d\",&n);\n"
    "\tswitch(n){\n"
    "\tcase %d:\n", INT_MIN);
  for(i = INT_MIN + 2; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i);
  printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);
  for(i = INT_MIN + 3; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i);
  printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n", INT_MIN % 2 ? "偶数" : "奇数");
  printf("\t}\n"
    "\treturn 0;\n"
    "}\n");
  return 0;
}
833832:2009/07/09(木) 22:41:20
わりぃ、1箇所ばぐっとった

printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);
  ↓
printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d:\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);

これで完璧。
期限までに間に合わんかったらごめんな。
834デフォルトの名無しさん:2009/07/09(木) 22:48:06
2009/7/9 24:00 締め切り埋め祭り
>>830 &yen;以外で文字化け
#include <stdio.h>
int main(){
  int n;

  printf("input number > ");
  scanf("%d",&n);
  switch( (n&1) == 0 ) { // 最下位ビットは0か
    case 0: printf("奇数です!\n"); break; // いいえ
    case 1: printf("偶数です!\n"); break; // はい
  }
  switch( (n&1) != 0) { // 最下位ビットは1か
    case 0: printf("偶数です!\n"); break; // いいえ
    case 1: printf("奇数です!\n"); break; // はい
  }
  return 0;
}
835デフォルトの名無しさん:2009/07/09(木) 22:49:40
パスカルの三角形を出力するのに
#include <stdio.h>
#define N 10

int main(void){
int i, j = 1, x, y;
int d[N][N]={};

/* 三角形を作成 */
for (i = 1 ; i < N ; i++){
d[i][0] = 1;
while (j <= i - 1){

d[i][j] = d[i-1][j-1] + d[i-1][j];
j ++;
}
}

/* 三角形の表示 */
for (y = 0; y < N; y++) {
for (x = 0; x < N-y; x++)
printf(" ");
for (x = 0; x < y; x++)
printf("%3d ", d[x][y]);
printf("\n");
}
return 0;
}
と書きましたが、すべての要素がゼロになってしまいます。
どこがまちがっているのでしょうか??
836デフォルトの名無しさん:2009/07/09(木) 22:58:02
>>835
while文の前にj=1の初期化が抜けてる
表示部分でd[x][y]のxとyが逆
837836:2009/07/09(木) 23:01:01
>>835
おま、Cなら俺に聞けスレとのマルチポストじゃねえか!
しかもあっちで答もらってんじゃんよ!
>>836は取り消す。答えなかったことにする
838デフォルトの名無しさん:2009/07/09(木) 23:02:35
やっぱテンプレ守れんやつは
守れんやつだけのことはあるってことか

ご愁傷様
839デフォルトの名無しさん:2009/07/09(木) 23:06:16
>>835
マルチポスト乙。

マルチポスト - Wikipedia
ttp://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
840デフォルトの名無しさん:2009/07/09(木) 23:07:56
>>830
CPUにバグなんてあるわけないだろ
プログラムが仕込まれているわけでもあるまいし
841デフォルトの名無しさん:2009/07/09(木) 23:09:11
>>840
CPUの場合はバグとはいわずエラッタという言葉で予定してない動きをさすのはあるよ

インテルとかAMDもたまにやらかしてる
842デフォルトの名無しさん:2009/07/09(木) 23:09:16
いやいやwww
843842:2009/07/09(木) 23:10:15
>>842>>840にっすよ念のため
844デフォルトの名無しさん:2009/07/09(木) 23:34:09
>>835
別のスレに回答しておいた。
出力結果のサンプルはこんな感じ。
                           
                            1 
                         1     1 
                      1     2     1 
                   1     3     3     1 
845デフォルトの名無しさん:2009/07/09(木) 23:36:07
・3・3・3・3・3・3・)v
846842:2009/07/09(木) 23:39:12
ネタにマジレスして恥ずかしいので軽く吊ってくる
847デフォルトの名無しさん:2009/07/09(木) 23:43:14
デフォルトの名無しさん:2009/07/09(木) 20:13:56
1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク): LLLアルゴリズムをCでプログラミング
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2009年7月17日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

Webや本を見ているのですが、
二次行列で書いてあったり一次行列で書いてあったりしてよく分かりません。
よろしくお願いします
848デフォルトの名無しさん:2009/07/10(金) 00:19:21
[1] 授業単元:C++
[2] 問題文(含コード&リンク):日曜日から土曜日までの曜日を表す列挙型Dayが定義されている.このとき,2つの曜日を引数として与えると,その曜日間の最短距離を計測する関数day_distanceを作成せよ.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:C++
 [3.3] 言語: C++
[4] 期限: 2009年7月10日午前9時半 なので午前5時ぐらいまでにやっていただければ・・・
[5] その他の制限:

関数distanceの呼び出しは↓
#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};
int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}

以下,続きへ
849デフォルトの名無しさん:2009/07/10(金) 00:21:47
>>848の続きです

#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};//曜日を表す列挙型の定義
void day_load(Day a, Day b){
if(a<b){
Day temp;
temp=a,a=b,b=temp;}
switch(a-b){
case 1:
cout << "1" << endl;
break;
case 2:
cout << "2" << endl;
break;
case 3:
cout << "3" << endl;
break;
}
}
int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}

のように作ったら,day_distanceが宣言されないと言われます
どうすればいいでしょうか?
850デフォルトの名無しさん:2009/07/10(金) 00:25:35
day_loadじゃないの?
851デフォルトの名無しさん:2009/07/10(金) 00:27:35
voidの横をday_distanceにすると,voidとcoutの3つにエラーが出てしまいます
ちなみにEclipseでやってます
852デフォルトの名無しさん:2009/07/10(金) 00:38:58
>>849
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される



day_load(Sun, Tue);
day_load(Mon, Fri);
day_load(Sun, Sat);

に変える
853デフォルトの名無しさん:2009/07/10(金) 00:40:17
とりあえず答えだけ。いろいろアレ過ぎるんで、ネットじゃなくリアルで指導してもらった方が良い。

int day_distance(Day a, Day b){
  return a > b ? a - b > 7 - a + b ? 7 - a + b : a - b : b - a > 7 - b + a ? 7 - b + a : b - a;
}
854デフォルトの名無しさん:2009/07/10(金) 00:42:05
>>849
>のように作ったら,day_distanceが宣言されないと言われます
>どうすればいいでしょうか?
day_distanceを宣言する

#include <iostream>
#include <cmath>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};

int day_distance(Day d1,Day d2){
int table[]={0,1,2,3,3,2,1};//,{1,0,1,2,3,3,2},
return table[abs(d2-(d1-Sun))%7];
}

int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}

そのswitch-case
855デフォルトの名無しさん:2009/07/10(金) 00:43:17
は汎用性無いからやめた方がいい

途中で書き込んでしまったorz
856デフォルトの名無しさん:2009/07/10(金) 00:47:39
>>854
すみません,includeの<cmath>って何でしょうか・・・?
<iostream>しか使ったこと無いので・・・
857デフォルトの名無しさん:2009/07/10(金) 01:09:13
math.hのC++版。数学関連の関数を使うために入れてる。ここではabs
858デフォルトの名無しさん:2009/07/10(金) 01:10:36
追記
iostreamをなぜ使っているかを理解してれば、そのような疑問は出てこないと思うんだけどね。
おまじないの犠牲者じゃないことを祈る。
859デフォルトの名無しさん:2009/07/10(金) 01:25:55
>>857
すみません,習ってないので分からないです・・・
もしswitchでやる場合は,どこをいじればいいでしょうか?
860デフォルトの名無しさん:2009/07/10(金) 01:30:25
>>857だけど、>>854は別人ね。

iostreamは習ったから使ってるという認識でいいのかな。
何のためにiostream使ってるの?
861デフォルトの名無しさん:2009/07/10(金) 01:33:10
>>860
すみません、恥ずかしながら分からないです・・・
ただ「プログラミング演習」という授業で、プリントなどに最初からinclude<iostream>と書いていたので・・・
862デフォルトの名無しさん:2009/07/10(金) 01:34:23
問題点1
 ・day_load関数を定義した
 ・day_distance関数を呼び出した
 という名前の矛盾
問題点2
 day_(load|distance)関数の戻り値がvoidであるにも関わらず、
 main関数で cout に放り込んでしまっていること

switchがどうとかよりも、根本的な問題点はここなので、
そこを解決すればとりあえずは動くようになると思うし、
これまで通りロジックを考えることに専念できると思う
863デフォルトの名無しさん:2009/07/10(金) 01:39:40
#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat}



int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}
は最初から問題で定義されているので,この状況でswitchを使う場合はどうすればいいでしょうか?
864デフォルトの名無しさん:2009/07/10(金) 01:40:03
問題点1について>>850が解決方法を提案し
>>851で問題点1を解決した結果、問題点2が表面化した。
>>852は問題点2の解決方法を提案してくれたが>>849はそれを無視している。

問題解決は目前であるにも関わらず、全く別の解決方法である>>854に目を向けて
cmathがなんであるかなどと悩んでいる。
865デフォルトの名無しさん:2009/07/10(金) 01:42:21
day_distance関数が数値を返すようにすればいい。
866デフォルトの名無しさん:2009/07/10(金) 01:44:41
>>864
あ、すみません
coutの3つをday_loadに変更してもエラーが発生したもので・・・

>>865
すみません、分かりません・・・
本当に無知で申し訳ないです・・・
867デフォルトの名無しさん:2009/07/10(金) 01:53:15
>>866
int day_distance(Day a, Day b){ // 戻り値をintに変えた
中略
case 1:
return 1; // コンソール出力をするのではなく、数値を返却するように変えた
case 2:
return 2; // コンソール出力をするのではなく、数値を返却するように変えた
case 3:
return 3; // コンソール出力をするのではなく、数値を返却するように変えた
}
return -1; // どれにも当てはまらない場合は不正とみなして-1を返却するようにした
}

そもそも、main関数の記述が指定されている以上、>>852の提案をはねつけるべき。
868デフォルトの名無しさん:2009/07/10(金) 01:59:25
>>867
共に3と1が出力されるはずの2行目と3行目で-1が出力されてしまいます・・・
869デフォルトの名無しさん:2009/07/10(金) 02:02:05
>>848 >>849
に質問があるけど
>>859
switchを使うのは必須なの?
題意を満たすプログラムの制約をちゃんと示さないと無駄な回答が増えるだろ

>>868
よくわかんないけど今まで言ってた条件満たしたプログラム書いてやるから待ってろ
870デフォルトの名無しさん:2009/07/10(金) 02:03:38
>>868
それはあなたがこだわっていたswitchのロジックがおかしいだけ。
>>862の、
> これまで通りロジックを考えることに専念できると思う
はそれを指しているんじゃないの。
871デフォルトの名無しさん:2009/07/10(金) 02:04:55
>>869
作ってくれなんて言われてないのに親切なお方
872デフォルトの名無しさん:2009/07/10(金) 02:05:12
>>869
学校で友人に聞いたプログラミングの中にswitchが入っていたのですが、時間の都合上途中までしか聞けなかったもので・・・
873デフォルトの名無しさん:2009/07/10(金) 02:08:25
#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};

int day_distance(Day d1,Day d2){
int table[]={0,1,2,3,3,2,1};//,{1,0,1,2,3,3,2},
int distance=d2-(d1-Sun);
distance=(distance<0)?-distance:distance;
return table[distance%7];
}

int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}
874デフォルトの名無しさん:2009/07/10(金) 02:13:25
>>873
ありがとうございます! ちゃんと出力されました!

他の皆さんも多大な迷惑をかけて申し訳ないです・・・
875デフォルトの名無しさん:2009/07/10(金) 02:24:10
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
文字列xに文字列yが含まれるかどうかを判定する関数str_comp(char[],char[])を作成せよ.

出力例:

文字列x(64字まで)? University
文字列y(64字まで)? sity
"University"に"sity"は含まれます。

文字列x(64字まで)? University
文字列y(64字まで)? city
"University"に"city"は含まれません。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7/17
[5] その他の制限:文字列まで.

お願いします
876デフォルトの名無しさん:2009/07/10(金) 02:36:23
>>875
/* 含まれる場合は1 含まれない場合は0を返却 */
int str_comp(char src[],char dst[])
{
return (strstr(src, dst) != NULL);
}
877デフォルトの名無しさん:2009/07/10(金) 02:38:31
変数名がおかしすぎた。

/* 含まれる場合は1 含まれない場合は0を返却 */
int str_comp(char target[],char search[])
{
return (strstr(target, search) != NULL);
}
878デフォルトの名無しさん:2009/07/10(金) 03:13:47
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
char型配列xに格納された文字列を一文字ごとに空白を開けて逆順に出力する関数
reverse_array(char[])を以下のように出力されるよう作成せよ。

処理前:Tokyo
関数reverse_array()を呼び出しました
処理後:"o y k o T"


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7/14
[5] その他の制限:おねがいします。
879デフォルトの名無しさん:2009/07/10(金) 03:49:22
>>878
void reverse_array(char s[])
{
int i, len = strlen(s);
printf("処理前:%s\n", s);
puts("関数reverse_array()を呼び出しました");
printf("処理後:\"");
for(i=len-1; i>=0; --i){
putchar(s[i]);
if(i) putchar(' ');
}
puts("\"");
}
880デフォルトの名無しさん:2009/07/10(金) 04:20:26
>>877
ありがとう
それ使って書いてみたんだけどエラーが出てしまう・・・。
関数勉強し直します……。
誰か暇だったらでいいので例をつくってください。
881デフォルトの名無しさん:2009/07/10(金) 04:47:24
>>880
877じゃないけどどんなエラーがでたのか書こうぜ

例ってなにを作って欲しいんだ?
882 ◆/91kCCQXBo :2009/07/10(金) 07:20:19
エラーはこれを定義すれば直ると思う。
#include <string.h>

main(スタブ)からは、関数パラメータを2個付けて呼び出すだけでいいだろう。
883デフォルトの名無しさん:2009/07/10(金) 11:10:12
すいません、どなたか>>825をお願いします
厚かましくて申し訳ありません・・・
884デフォルトの名無しさん:2009/07/10(金) 11:32:07
>>883
課題1
#include <stdio.h>

int main(int argc, char **argv)
{
if (argc < 3) { fprintf(stderr, "Error: too few arguments\n"); return 1; }
if (argc > 3) { fprintf(stderr, "Error: too many arguments\n"); return 1; }
printf("My name is %s %s\n", argv[1], argv[2]);
return 0;
}
885デフォルトの名無しさん:2009/07/10(金) 11:37:46
>>883
課題2
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(int argc, char **argv)
{
int s = 0;
int i;
if (argc < 3) { fprintf(stderr, "Error: too few arguments\n"); return 1; }
for (i = 1; i < argc; i++) {
char *c;
for (c = argv[i]; *c; c++) {
if (!isdigit(*c)) {
fprintf(stderr, "Error: %s is illegal arguments\n", argv[i]);
return 1;
}
}
s += atoi(argv[i]);
}
printf("%d\n", s);
return 0;
}
886デフォルトの名無しさん:2009/07/10(金) 11:37:59
>>882
ありがとう、それ入れたらコンパイルできた。
>>881
コンパイルできる状態のプログラムが見たかったんだ。
887デフォルトの名無しさん:2009/07/10(金) 11:42:37
>>883
課題3
実行例3の結果は4になるんじゃないかな

#include <stdio.h>

int sum(int n, int m)
{
return (n >= m)? n: n + sum(n + 1, m);
}

int main(int argc, char **argv)
{
int n, m;
printf("n m: "); scanf("%d %d", &n, &m);
if (n > m) { fprintf(stderr, "n should be smaller than m.\n"); return 1; }
printf("%d\n", sum(n, m));
return 0;
}
888 ◆/91kCCQXBo :2009/07/10(金) 11:50:27
3連続投球終わったか?
//>>863 >>848の先生は、なんで火曜から月曜が1日なんて常識はずれな。
enum Day {Sun,Mon,Tue,Wed,Thr,Fri,Sat}; // Sun=0
int day_load[7][7] = {{0,1,2,3,3,2,1},{1,0,1,2,3,3,2},{2,1,0,1,2,3,3},{3,2,1,0,1,2,3},{3,3,2,1,0,1,2},{2,3,3,2,1,0,1},{1,2,3,3,2,1,0}};
int table[]={0,1,2,3,3,2,1};
int day_distance(enum Day st, enum Day en){
  int work,a=st,b=en;

  switch(0) { /* ここには 1 から 4 の数字を入れる。どれでも同じ結果になる。 */
  case 1: /* compact cost > speed cost */
    work = st<en?en-st:st-en;
    return work<=3?work:7-work;
  case 2: /* compact cost < speed cost */
    return day_load[st][en];
  case 3: /* >>853 */
    return  (a > b) ?
        (  (a - b > 7 - (a - b)) ?
            (7 - (a - b)) :
            (a - b)
        ):( (b - a > 7 - (b - a)) ?
            (7 - (b - a)) :
            (b - a)
        );
  case 4: /* >>854 */
    work = st<en?en-st:st-en;
    return table[work%7];
  default: /* NORMAL */
    return (en-st+7)%7;
  }
}
889デフォルトの名無しさん:2009/07/10(金) 12:00:07
>>762
これもできればよろしくお願いします。
890デフォルトの名無しさん:2009/07/10(金) 12:35:51
>>889
よくわからんけどなんとなくそれっぽいものを書いてみた
#include <stdio.h>

#define A 3
#define M 65535
#define N 128
#define S 17

int main(void)
{
int a[N];
int x0, x1;
int i;

x0 = S;
for (i = 0; i < N; ++i) {
x1 = (A * x0) % M; a[i] = x1; x0 = x1;
}
for (i = 0; i < N; ++i) {
printf(" %8d", a[i]);
if ((i + 1) % 8 == 0) puts("");
}
return 0;
}
891デフォルトの名無しさん:2009/07/10(金) 14:54:16
>>890
ありがとうございます。助かります。
892デフォルトの名無しさん:2009/07/10(金) 17:01:55
yaccとlexですがどなたか>>747よろしくお願いします。
893デフォルトの名無しさん:2009/07/10(金) 18:14:31
>>892
fabs,cosはlogを参考にすればいいし。
キャストは簡単だよね。
894デフォルトの名無しさん:2009/07/10(金) 18:21:51
>>893
すいません、やってもらうことはできませんか?
895505:2009/07/10(金) 19:44:39
 未解決問題
>>847 LLLアルゴリズムをCでプログラミング 7月17日
>>827(9720) コマンドの引数xxxxで指定したファイルが更新されたら直ちにメッセージを表示する 7月13日正午
>>824>>822 何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理する 7月9日 19:10
>>820 3入力のクワイン・マクラスキー法のプログラム 7月13日
>>799 指定された点x,yを含む指定された境界色C2で囲まれた平面領域を指定された色C1で塗りつぶす 7月17日 正午
>>791(9708,9709,DLL_BMP_C) 歌詞を暗号鍵Kとして読み込み、画像 NewYear2003.bmpを暗号化した画像Cを生成する。 7月15日
>>790 入力したtxtファイルをFFT、IFFTせよ 7月8日 24:00
>>772 2問。4次のルンゲ−クッタ法を用いて連立微分方程式を解く 7月28日
>>749 配列を用いた計算機のプログラム 7月12日
>>747(9696)>>892 yacc,lex 7月14日
>>681(down11.ddo/1246872574) DirectX マップチップ 7月9日
>>660(fukushima.jp) パソコン甲子園 2008 予選問題 問7 ふしぎな虫 7月6日
>>607 簡単なデータベース機能を持つプログラム 7月13日
>>451(9656)>>504(9661,9662) 最短路問題を解くアルゴリズムとしてベルマンフォード法がある。 7月6日
896デフォルトの名無しさん:2009/07/10(金) 22:36:21
[1] 授業単元: プログラミングW
[2] 問題文(含コード&リンク): オブジェクト指向を使って何でも良いのでプログラム
                を書け
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 7月17日(金)
[5] その他の制限: メソッドを5個以上使う 変数はpublicとprivateを使いわける
897デフォルトの名無しさん:2009/07/10(金) 23:02:41
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):この続きからC言語でベルマンフォードをお願いしたいです。

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

main(void)
{
int n, s;   /*頂点数、始点*/
int M;     /*辺のないところを指定する数*/
int i, j, k;
int W[100][100]  /*重みを指定した行列*/
FILE *infile;   /*入力ファイル*/

infile = fopen("data1.txt", "r");  /*入力ファイル名はdata1.txt*/
fscanf(infile, "%d %d", &n, &s);   /*頂点数、始点の読み込み*/
for ( i=1 ; i<=n ; i++ ){
for ( j=1; j<=n; j++){
fscanf(infile,"%d\n",&W[i][j]); /*読み込み部分*/
}
}
fclose(infile);  /*ファイルを閉じる*/

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 2009年7月31日
[5] その他の制限:一番簡潔な書き方でお願いします@@;
898デフォルトの名無しさん:2009/07/10(金) 23:17:25
コンパイルしてアスタリスクがダイヤ形になるプログラムを教えてください。
899デフォルトの名無しさん:2009/07/10(金) 23:35:21
>>897
・問題文は、出題されたまま全文を書いてください。
900デフォルトの名無しさん:2009/07/10(金) 23:42:12
>>886
文字列まで習ったって書いてあったから。。。
901デフォルトの名無しさん:2009/07/10(金) 23:50:52
[1] 授業単元: C言語プログラミング演習
[2] 問題文(含コード&リンク): プログラムを実行すると
行列1:
1,2,3
4,5,6
7,8,9
行列2:
3,4,5
6,7,8
9,10,11
と表示する。最後に行列1と行列2の積を計算し、以下のように表示
するプログラム。
[行列1と行列2の積は
?,?,?
?,?,?
?,?,?]

課題2
配列のサイズを大きくして、時間を計測する。配列の内容は、各自指定すること。1から順に値を入れていってもよい

[3] 環境
 [3.1] OS: Windows/vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: ([2009年7月15日まで]
[5] その他の制限: この流れの通りにやること
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9721.txt

お願いします。
902デフォルトの名無しさん:2009/07/10(金) 23:51:59
>>827
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#define SLEEP_TIME 1
int main(int argc, char *argv[])
{
  struct stat file;
  time_t prev_mtime;
  if (argc != 2) {
    printf("Usage: exp7 file1 file2\n");
    exit(1);
  }
  if (stat(argv[1], &file) != 0) {
    printf("%s not found\n", argv[1]);
    exit(1);
  }
  prev_mtime = file.st_mtime;
  while (1) {
    stat(argv[1], &file);
    if (file.st_mtime != prev_mtime) {
      printf("\nModified %s %s", argv[1],
        asctime(localtime(&file.st_mtime)));
      prev_mtime = file.st_mtime;
    }
    sleep(SLEEP_TIME);
  }
}
903デフォルトの名無しさん:2009/07/10(金) 23:53:35
>>897
すみません

>>896
問題:与えられた重みつき有向グラフGと指定された頂点sに対してベルマンフォード法を実行するプログラムをC言語を用いて作りなさい。

・入力は以下の形式で記述されたテキストファイルによるものとする。

Gの頂点数、頂点s(番号)
Gの各辺の重みを指定した行列(辺のないところは値を100とする)


5 1
100 2 1 100 100
100 100 100 -1 100
100 -1 100 100 1
100 100 3 4 100
100 100 100 100 100

・頂点数は最大100まで対応できるようにする
・入力ファイルから読み込む形式にする
904デフォルトの名無しさん:2009/07/11(土) 00:12:47
>>901 課題1
#include <stdio.h>

int main(void)
{
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int b[3][3] = {{3, 4, 5}, {6, 7, 8}, {9, 10, 11}};
int ans[3][3];
int i, j, k;
puts("行列1:");
for (i = 0; i < 3; ++i) {
for (j = 0; j < 2; ++j) printf("%d,", a[i][j]);
printf("%d\n", a[i][j]);
}
puts("行列2:");
for (i = 0; i < 3; ++i) {
for (j = 0; j < 2; ++j) printf("%d,", b[i][j]);
printf("%d\n", b[i][j]);
}
for (i = 0; i < 3; ++i) for (j = 0; j < 3; ++j) ans[i][j] = 0;
for (i = 0; i < 3; ++i)
for (j = 0; j < 3; ++j)
for (k = 0; k < 3; ++k) ans[i][j] += a[i][k] * b[k][j];
puts("[行列1と行列2の積は");
for (i = 0; i < 2; ++i) {
for (j = 0; j < 2; ++j) printf("%d,", ans[i][j]);
printf("%d\n", ans[i][j]);
}
for (j = 0; j < 2; ++j) printf("%d,", ans[i][j]);
printf("%d]\n", ans[i][j]);
return 0;
}
905デフォルトの名無しさん:2009/07/11(土) 00:34:56
>>903
アンカミス?だよね
906デフォルトの名無しさん:2009/07/11(土) 00:47:17
>>898
#include <stdio.h>

int main(int argc, char **argv)
{
if (argc > 1) {
char *c;
for (c = argv[1]; *c; c++)
if (*c == '*') printf("◇");
else putchar(*c);
}
return 0;
}
907デフォルトの名無しさん:2009/07/11(土) 01:00:04
わざと誤読すんなw
908デフォルトの名無しさん:2009/07/11(土) 01:00:49
>>896
オブジェクト指向?それっておいしいの??と思ってる人間が書いたソース。
継承しないで委譲って感じになってると思う。
あと、動作は保障しない。うちの環境はVC9EEだ。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9722.zip
909デフォルトの名無しさん:2009/07/11(土) 01:41:23
>>896
>>908さんとかぶったが一応やってみた
俺はC++本当にど素人なので何も保障できない
参考までに使ってくれ
ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/15-16
910デフォルトの名無しさん:2009/07/11(土) 03:37:06
901ですが>>904 ありがとうございます
じつは自分でもやっていたのですがhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9723.txt
この文の最初のfor(j=0;j<3;j++)の後ろにfor(l=0;l<3;l++)
main文の中のj=0;j<3;j++)の後ろにfor(l=0;l<3;l++)をつけたい
場合(答えはつける前と同じで)各 ans[i][j]=○○をどうやって書いたらいいのでしょうか?
 
911デフォルトの名無しさん:2009/07/11(土) 03:40:06
>>910
>>904見ればわかるだろ
912デフォルトの名無しさん:2009/07/11(土) 03:52:28
と突き放しつつ
ans[i][j]=ans[i][j]+a[i][l]*b[l][j];
913デフォルトの名無しさん:2009/07/11(土) 03:56:22
>>911
>>912
911のコメントの後、作ったらできました。ありがとうございました!またそのあとのフォローのコメントもうれしかったです!
914デフォルトの名無しさん:2009/07/11(土) 05:51:46
>>905
間違えました!すみませぬ。。。

>>903>>897の修正です。よろしくお願いします。
915デフォルトの名無しさん:2009/07/11(土) 11:17:40
>>898 ダイヤマークは周囲だけ?つまりダイヤマークの中は半角空白?
 問題 >>前953(9534) 解答 >>014(9548)
916デフォルトの名無しさん:2009/07/11(土) 14:08:29
【質問テンプレ】
[1] 授業単元:情報基礎B
[2] 問題文(含コード&リンク):(1) 平均、標準偏差
(2) 得点の高い順の点数のリスト
[3] 環境
 [3.1] OS:Linux
 [3.2] 不明です
 [3.3] 言語: C++
[4] 期限: 7・18まで
[5] その他の制限:基本的なやつでお願いします。(2)はバブルソート
917デフォルトの名無しさん:2009/07/11(土) 14:09:57
連投すいません
問題文に「試験の点数10人分をキーボードから入力」が抜けていました
918デフォルトの名無しさん:2009/07/11(土) 14:10:35
>>916
丸投げもできないのか?
919デフォルトの名無しさん:2009/07/11(土) 14:13:29
>916

しね
920デフォルトの名無しさん:2009/07/11(土) 14:16:40
>>916

おまえはカスだ
921デフォルトの名無しさん:2009/07/11(土) 14:17:33
>>916

sageろカス
922デフォルトの名無しさん:2009/07/11(土) 14:32:29
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
if文を使って、月数に応じてコメントを表示するプログラム(1月ならばwinter、3月ならspringといった具合に)を作る。
月は1月〜12月までなので、13月以上の数値を打ち込んだ場合はerrorと表示させること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4…?
 [3.3] 言語:C
[4] 期限: 2009年7月25日
[5] その他の制限:全くの初心者です。コメントつけてくれるとさいわいです
923デフォルトの名無しさん:2009/07/11(土) 14:37:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,そ
の合計と平均を表示するプログラムを作成せよ。
整数は何個ですか: 6
No.1 : 65
No.2 : 23
No.3 : 47
No.4 : 9
No.5 : 153
No.6 : 777
合計値: 1074
平均値: 179.00
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月30日
[5] その他の制限:どうかよろしくお願いします。
924デフォルトの名無しさん:2009/07/11(土) 14:38:34
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
多数のファイルをクローズせずに何個もオープンするとどうなるか実験せよ.
実験用プログラム fopen.c のソースと実験結果と考察をレポートすること.

% ./fopen
入力ファイル:fopen.c
オープン 1 回目
オープン 2 回目
オープン 3 回目
...
オープン ??? 回目
これ以上オープンできません!

注意:「○○回までオープンできた」とかでは,現象・結果の説明にすぎず,考察とは言えない. その結果から何が理解できるのか?推理せよ. 換言:実験結果(具体例)から一般規則を導き出せ.

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:09/07/20
[5] その他の制限: 特になし
925デフォルトの名無しさん:2009/07/11(土) 14:59:22
>>916 LinuxならコンパイラはgccだろJK
926LOG参考まで:2009/07/11(土) 14:59:29
>>922 if文を使って、月数に応じてコメントを表示する
問題>>019 解答>>022(CODE)>>025(CODE)


>>923 最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,合計と平均を表示する
問題>>050 解答>>052(CODE)


>>924 多数のファイルをクローズせずに何個もオープンするとどうなるか実験せよ
問題>>688-689(9693) 回答>>696(9695)>>709(CODE)>>716(CODE)
927デフォルトの名無しさん:2009/07/11(土) 15:04:46
>>916
トンぺ─乙wwwww
928デフォルトの名無しさん:2009/07/11(土) 15:20:19
929デフォルトの名無しさん:2009/07/11(土) 22:21:40
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
主語、目的語、述部が入ったデータファイルを読み込み、それらをランダムに組み合わせて生成した短文を20個ファイルに出力するプログラムの作成。
短文の構文は必ず、「(主語)は、(目的語)(述部)。」となるようにする。

出力例:俺は、カレーが大好きだ。

データファイルは以下を使用すること。
主語: 俺 私 あなた 彼 彼女 先生 犬のポチ 猫のタマ ライオン その人 政治家 ネズミ  の12個
目的語: カレー ご飯 肉 授業 男 女 すごいもの アレ アンパン お金  の10個
述部: が大好きだ が大嫌いだ を作った をなくした が欲しい に全力を尽くす を新しいものに交換した ?なにそれ美味いの? について深く考えた を捨てた に塩をふりかけた の11個
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 2009年7月20日
930デフォルトの名無しさん:2009/07/12(日) 01:02:34
全角空白' '区切り、1項目目は(主語などの)タイトルでいいのか?
931デフォルトの名無しさん:2009/07/12(日) 01:07:48
むしろ>>930が何を言ってるのか分からない
タイトルって何だ
932デフォルトの名無しさん:2009/07/12(日) 01:10:43
>>931
なんで分からないのかが分からない
933デフォルトの名無しさん:2009/07/12(日) 01:11:23
つまりレコードの第1フィールドと各フィールドの区切り文字の話をしたいんじゃろ。
まったくもって>>930の考えているとおりでいいんじゃないか?

>データファイルは以下を使用すること。

ってなってるんだから、この形のまま記録されてるってことになる。
934デフォルトの名無しさん:2009/07/12(日) 01:12:44
当然 "  の12個" とかも含まれるんだろうね
935デフォルトの名無しさん:2009/07/12(日) 01:12:48
ちなみに最終フィールドは「の12個」のように
全角でそのレコードの総単語数が記録されているということに・・・
936デフォルトの名無しさん:2009/07/12(日) 01:28:41
「の12個」などは含みません!
「の12個を使用すること」 という意味です。
分かりやすいようにつけたつもりだったんですが、逆にわかりづらくしてしまいました。
ごめんなさい。
937931:2009/07/12(日) 02:07:36
ああ、おk
>>930がネタだと気づかなかった
938デフォルトの名無しさん:2009/07/12(日) 02:30:17
どういう思考をしたらネタになるんだよ
文字ごとの区切りは本当に全角スペースでいいのか
各行の始まりに本当にXX: があるのかは重要なポイントだろ
てかサンプルファイルをロダに上げろよ
939デフォルトの名無しさん:2009/07/12(日) 03:10:30
>>929
一応作ってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9730.txt

元々用意しておくファイルは、test2.txtとなってるから、そこは自分で名前変えて
あと、あまり自信はないから間違ってたらごめん
他にも作ってる人いるっぽいからそっち参考にした方が良いと思う
test2.txtはノートパッドに↓を貼り付け、実行ファイルと一緒のフォルダに保存
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9731.txt
940デフォルトの名無しさん:2009/07/12(日) 04:59:18
941デフォルトの名無しさん:2009/07/12(日) 12:19:08
以下のプログラムを、C++で動作させるにはどうしたらよいでしょうか

#include <stdio.h>
#include "gauss.h"
#define LL 10


int main(void)
{
double a[LL] [LL+1] ,x[LL],esp10.e-19;
int i, j, n;
int ipivot;
int sw=1;

scanf("%d",&n);
for (i=0; i<n; i++)
for(j=0; j<=n; j++)
scanf(" %lf",&a[i] [j]);

ipivot=gauss(*a,x,LL,n,esp,sw);

if(ipivot== 1)
for(i=0;i<n;i++)
printf("x %d=%lf\n",i+1,x[i]);
else{
printf("ピボット値が小さすぎるので");
printf("計算を中断、終了させました");
}
return(0);
}
942デフォルトの名無しさん:2009/07/12(日) 12:42:56
>>941
1.#include <stdio.h> 
 を
 #include <cstdio>
 にかえる

2.C++のコンパイラでコンパイルする

以上
943デフォルトの名無しさん:2009/07/12(日) 12:43:15
>>941
gauss.h を見せて
944デフォルトの名無しさん:2009/07/12(日) 14:00:00
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org229227.zip
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限:7/16 18:00 〆
[5] その他の制限:2つあります よろしくお願いします
945デフォルトの名無しさん:2009/07/12(日) 14:14:04
>>940
助かりました!ありがとうございましたー
946デフォルトの名無しさん:2009/07/12(日) 15:34:11
【質問テンプレ】
[1] 授業単元 C言語
[2] 問題文(含コード&リンク):
二つのバイナリファイルの中身を比較して等しいか、等しくないかを比較して結果を返す関数を作る
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン Visual Studio 2005
 [3.3] 言語: C
[4] 期限:7月13日
[5] その他の制限 ヒントにはバイトを比べると書いてありました
947デフォルトの名無しさん:2009/07/12(日) 16:22:12
>>944 文字列strの中に、文字chが含まれている個数を返す関数
問題>>332(9629) 解答>>338(9632)>>341(1246384344/6)

>>944 文字列を左右逆に並び替える関数
問題>>150 解答>>153(9574)
948デフォルトの名無しさん:2009/07/12(日) 16:56:04
>>941 >>1 これでOKならC++じゃなくてCのミス。
イプシロンの後にイコールを1つ入れる。
double a[LL] [LL+1] ,x[LL],esp=10.e-19;
D:\>type gauss.h
int gauss(double*,double*,int,int,double,double);
int gauss(double *a,double *b,int c,int d,double e,double f){
printf("%lf %lf %lf %lf\n",a[0],a[1],a[2],a[3]);
}
ファイル名を、任意.cで保存する。
D:\>gcc mondai.c
D:\>a
2
11
12
13
14
15
16
11.000000 12.000000 13.000000 nan
ピボット値が小さすぎるので計算を中断、終了させました
949デフォルトの名無しさん:2009/07/12(日) 18:15:29
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9733.txt
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
 [3.3] 言語: C
[4] 期限: 7月14日 00:00まで
[5] その他の制限: テキストに記載してあります。C言語の基本的なことは大方学びました。

よろしくお願い致します。
950デフォルトの名無しさん:2009/07/12(日) 19:15:07
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
下に示すように,要素数が7 でint 型の配列に読み込んだ全要素を逆順に並べ替えるプログ
ラムを作成せよ.

vx[ 0] : 58
vx[ 1] : 32
vx[ 2] : 17
vx[ 3] : 46
vx[ 4] : 22
vx[ 5] : 73
vx[ 6] : 69
vx[ 0] = 69
vx[ 1] = 73
vx[ 2] = 22
vx[ 3] = 46
vx[ 4] = 17
vx[ 5] = 32
vx[ 6] = 58
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月14日まで
[5] その他の制限:
951デフォルトの名無しさん:2009/07/12(日) 19:31:40
>>950
#include <stdio.h>
void rev(int* a,int size){
int i,temp;
for(i = 0;i < size/2;i++){
temp = a[i];
a[i] = a[size-i-1];
a[size-i-1] = temp;
}
}
int main(){
int i;
int vx[] = {58,32,17,46,22,73,69};
printf("before\n");
for(i = 0;i < sizeof(vx)/sizeof(vx[0]);i++){
printf("vx[%d] = %d\n",i,vx[i]);
}

rev(vx,sizeof(vx)/sizeof(vx[0]));

printf("after\n");
for(i = 0;i < sizeof(vx)/sizeof(vx[0]);i++){
printf("vx[%d] = %d\n",i,vx[i]);
}
return 0;
}
952デフォルトの名無しさん:2009/07/12(日) 19:35:58
>>950
#include <stdio.h>
#define MAX_COUNT 7
int main() {
  int i, t, vx[MAX_COUNT];

  for(i=0; i<MAX_COUNT; i++) { /* 入力 */
    printf("vx[%2d] : ", i);
    if(scanf("%d", &vx[i]) != 1) {
      scanf("%*s"); i--;
    }
  }
  for(i=0; i<MAX_COUNT/2; i++) { /* 入れ替え */
    t = vx[i], vx[i] = vx[MAX_COUNT-1-i], vx[MAX_COUNT-1-i] = t;
  }
  for(i=0; i<MAX_COUNT; i++) { /* 表示 */
    printf("vx[%2d] = %d\n", i, vx[i]);
  }
  return 0;
}
953デフォルトの名無しさん:2009/07/12(日) 20:05:19
誰か>>946をお願いいたします。
954デフォルトの名無しさん:2009/07/12(日) 20:18:51
>>946
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
  FILE *fp1, *fp2;
  
  if(argc != 3) {printf("Usage : %s file1 file2\n", argv[0]); return 1;}
  if(strcmp(argv[1], argv[2]) == 0) {puts("同じファイルです"); return 0;}
  fp1 = fopen(argv[1], "rb");
  if(fp1 == NULL) {printf("%s file open error!\n", argv[1]); return 1;}
  fp2 = fopen(argv[2], "rb");
  if(fp2 == NULL) {printf("%s file open error!\n", argv[2]); fclose(fp1); return 1;}
  while(getc(fp1) != getc(fp2)) {
    puts("異なります");
    fclose(fp2);
    fclose(fp1);
    return 2;
  }
  puts("同じです");
  fclose(fp2);
  fclose(fp1);
  return 0;
}
955デフォルトの名無しさん:2009/07/12(日) 20:56:03
>>954
ありがとうございます
956デフォルトの名無しさん:2009/07/12(日) 22:07:29
どなたか>>949お願い出来ませんか?
一つのプログラムにまとめて頂いても結構ですので、よろしくお願いいたします。
957デフォルトの名無しさん:2009/07/12(日) 22:55:27
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
100個の乱数を発生させ最大値、最小値、平均を求める
また最大値、最小値それぞれ何番目にあるか答えよ
(最初に読み込んだデータを1番目とする)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月20日まで
[5]基本的なのでお願いします
958デフォルトの名無しさん:2009/07/12(日) 23:13:34
959デフォルトの名無しさん:2009/07/12(日) 23:54:24
>>958
ありがとうございました!
960デフォルトの名無しさん:2009/07/13(月) 00:34:48
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
下に示すように,要素数が5 でint 型の配列に、5 人の学生の身長を読み込んで、その平均
身長を求めるプログラムを作成せよ。
身長を入力してください
1 番: 178
2 番: 175
3 番: 165
4 番: 179
5 番: 172
平均身長: 173.8vx[ 0] : 58
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月15日まで
[5] その他の制限: まだ基礎しか習ってません。

よろしくお願いします。
961960:2009/07/13(月) 00:36:39
訂正です

平均身長: 173.8vx[ 0] : 58

平均身長: 173.8
962デフォルトの名無しさん:2009/07/13(月) 01:09:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org231968.txt.html
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限: 090714
[5]特になし

お願いします
963デフォルトの名無しさん:2009/07/13(月) 01:40:40
964デフォルトの名無しさん:2009/07/13(月) 01:59:52
[1] 授業単元: プログラミング演習2
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9736.zip
[3] 環境
 [3.1] OS: Linux CentOS5
 [3.2] コンパイラ名とバージョン: gcc 3.4.1
 [3.3] 言語: C
[4] 期限: 2009年07月14日10:00
[5] その他の制限: じpに入っているk1.cを書き換えて完成させろという課題です。
よろしくお願いいたします。
965デフォルトの名無しさん:2009/07/13(月) 02:00:02
>>960
#include <stdio.h>

int main(void)
{
double ave = 0;
int a[5];
int i;
for (i = 0; i < 5; i++) { printf("%d番: ", i + 1); scanf("%d", &a[i]); }
for (i = 0; i < 5; i++) ave += a[i];
printf("平均身長: %.1f\n", ave / 5);
return 0;
}
966デフォルトの名無しさん:2009/07/13(月) 02:12:45
>>964
最初から自分で書くなら兎も角、他人の書いた途中なソースに加筆して完成させるというのは
それ以上の高度なスキルが必要でこのスレでそれが出来そうなのは麻呂(ry
967デフォルトの名無しさん:2009/07/13(月) 02:21:10
分子=1
分母=1063
1/1063=(0.000940733772342)
0.
[
0009407337723424270931326434619002822201317027281279397930385700846660( 70)
3951081843838193791157102539981185324553151458137347130761994355597365( 140)
9454374412041392285983066792097836312323612417685794920037629350893697( 210)
0837253057384760112888052681091251175917215428033866415804327375352775( 280)
1646284101599247412982126058325493885230479774223894637817497648165569( 350)
1439322671683913452492944496707431796801505174035747883349012229539040( 420)
4515522107243650047036688617121354656632173095014111006585136406396989( 490)
6519285042333019755409219190968955785512699905926622765757290686735653( 560)
8099717779868297271872060206961429915333960489181561618062088428974600( 630)
1881467544684854186265286923800564440263405456255879586077140169332079( 700)
0216368767638758231420507996237064910630291627469426152398871119473189( 770)
0874882408278457196613358419567262464722483537158984007525870178739416( 840)
7450611476952022577610536218250235183443085606773283160865475070555032( 910)
9256820319849482596425211665098777046095954844778927563499529633113828( 980)
7864534336782690498588899341486359360301034807149576669802445907808090( 1050)
310442144873]( 1062)
968デフォルトの名無しさん:2009/07/13(月) 02:30:59
下手の横好きってやつなんだけど、>>954のプログラムについて聞きたい
getc関数は一文字しか返さないから、その文字がたまたま一緒だった場合、
別の内容だったとしても同じだと判断してしまう危険性とかはないんだろうか?
バイナリファイル自体がよく解ってない初心者なので、
誰かちょっと解説してもらえると助かる
969デフォルトの名無しさん:2009/07/13(月) 03:04:25
>>968
その通り、getc,fgetcは使用すべきではないし、
ロジックもあなたの言う通り間違ってる。
コードを加筆修正して正しいコードを書いてみそ

とでも>>954は言いたげな漢字
970デフォルトの名無しさん:2009/07/13(月) 05:13:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9737.zip

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:7/16/
[5] その他の制限:
問題文の通りにやっていただければ結構です。
宜しくお願いします。
971デフォルトの名無しさん:2009/07/13(月) 05:51:03
>>970
/* */
len = (int)str_length(st);
for(i=0;i<len/2;i++) {
temp = *(st+i);
*(st+i) = *(st+len-i-1);
*(st+len-i-1) = temp;
}
/* */
rev_str(str);
972デフォルトの名無しさん:2009/07/13(月) 06:03:57
>>949
#include <stdio.h>
#define LEN 8192

int findrepeat(int r[], int *head, int *tail)
{
int i, j;
for (i = 0; r[i]; ++i)
for (j = i + 1; r[j]; ++j)
if (r[i] == r[j]) { *head = i; *tail = j; return 1; }
return 0;
}
int main(void)
{
int q[LEN], r[LEN];
int n, head, tail, i;

printf("n? "); scanf("%d", &n);
if (n == 1) { printf("1 / 1 = 1"); return 0; }

for (i = 0; i < LEN; ++i) q[i] = r[i] = 0;
head = tail = -1;
q[0] = 1 / n; r[0] = 1 % n;
for (i = 1; i < LEN && r[i - 1] != 0; ++i) {
q[i] = 10 * r[i - 1] / n; r[i] = 10 * r[i - 1] % n;
if (findrepeat(r, &head, &tail)) break;
}

printf("1 / %d = %d.", n, q[0]);
for (i = 1; q[i] || r[i]; ++i) { if (i - 1 == head) printf("("); printf("%d", q[i]); if (i == tail) printf(")"); }
return 0;
}
973デフォルトの名無しさん:2009/07/13(月) 06:42:36
おはようございます>>678 です。

結局>>686をCに変換できませんでした…
どなたか、Cに書き換えてはいただけないでしょうか。
974デフォルトの名無しさん:2009/07/13(月) 06:47:12
最初からCって書いて置けよ
C++もはいってるじゃねーか
975デフォルトの名無しさん:2009/07/13(月) 06:50:32
>>973
どうみてもC++じゃなくてCで書かれてるんだが
976デフォルトの名無しさん:2009/07/13(月) 06:53:10
>>975
拡張子がtxtのままとかどうせレベルの低い話なんだろうけどなw
977デフォルトの名無しさん:2009/07/13(月) 06:54:32
>>976
それプラス
・課題(11_1)はmain_11_1をmainに書き換えてコンパイル
・課題(11_2)はmain_11_2をmainに(ry
ってのがわかってないんだと思う
978デフォルトの名無しさん:2009/07/13(月) 06:56:50
ああ、あまりにもあほらしくて中みてなかったが課題をまとめてくれてるのかw
ほんとにて取り足取りでないとできないのかw
979デフォルトの名無しさん:2009/07/13(月) 07:36:42
これはいいツンデレ
980デフォルトの名無しさん:2009/07/13(月) 07:47:26 BE:511223696-DIA(287979)
次スレ立てました
C/C++の宿題片付けます 129代目
http://pc12.2ch.net/test/read.cgi/tech/1247438792/
981デフォルトの名無しさん:2009/07/13(月) 08:28:03
>>968
getcでもファイルの最後まで比較しながら読み込んでいけばいいんだけどね。
あなたの言うとおり、>>954は最初の1文字でしか判定してないから思いっきり間違ってる。
本人はwhile使ってるあたり、最後まで比較したつもりなんだろうけど。
982デフォルトの名無しさん:2009/07/13(月) 08:50:46
>>954 をいじるとこうなるのかな
do {
char c1, c2;
c1 = getc(fp1);
c2 = getc(fp2);
if (c1 != c2) { puts("異なります"); return 2; }
} while (c1 != EOF);
puts("同じです");
return 0;
983デフォルトの名無しさん:2009/07/13(月) 08:51:41
char じゃなくて int じゃないとまずいか
984デフォルトの名無しさん:2009/07/13(月) 09:01:24
初心者のころcharで受けて、ファイルの途中で読み込み終了して困ったことがあったなぁ。
985デフォルトの名無しさん:2009/07/13(月) 10:00:54
>>966
そこで麻呂はない
986デフォルトの名無しさん:2009/07/13(月) 10:29:46
987デフォルトの名無しさん:2009/07/13(月) 10:45:07
>>986
「どうみても」といいつつちゃんと見てなかったw
こいつは失礼した
988 ◆jG/Re6aTC. :2009/07/13(月) 12:48:55
[1] 授業単元:アルゴリズム論演習
[2] 問題文(含コード&リンク):
 (1)3つ以上の整数の階層的プログラミングを行うプログラムを
 作成せよ。ただし、整数間の距離は差、クラスタ間の距離はそ
 れぞれの要素間の距離のうち最小のものとする。出力は、クラ
 スタか、あるいは整数a,bを足して得られるクラスタをa,bとし、
 これを帰納的に適用する表現で表せ。たとえば、1,2,5に対す
 る出力は((1,2),5)である。

 (2)3つ以上の2次元ベクトルの階層的プログラミングを行うプ
 ログラムを作成せよ。ただし、ベクトル(u1,u2)と(v1,v2)の間
 の距離をsqrt(u1*v1 + u2*v2)とし、クラスタ間の距離はそれ
 ぞれの要素間の距離の平均とする。出力は(1)の表現を用いよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] VisualStudio2008EE
 [3.3] 言語:C/C++のどちらでも可
       (できれば後学のためC++でお願いします。)
[4] 期限: [2009年07月23日まで]
[5] その他の制限:特に制限はありません。
989 ◆jG/Re6aTC. :2009/07/13(月) 12:50:09
>988
よろしくお願いいたします><;
990 ◆/91kCCQXBo :2009/07/13(月) 13:00:51
>>982 お世話になった。
>>953 の時は作業中だったのに無理してしまった。

>>955 line 12 : while(getc(fp1) != getc(fp2)) {
 ↓
int c1=0,c2;
/*  do if((c1 = getc(fp1)) != (c2 = getc(fp2))) {
    puts("異なります");
    fclose(fp2);
    fclose(fp1);
    return 2;
  } while (c1 != EOF);
*/
  while (c1 != EOF) if((c1 = getc(fp1)) != (c2 = getc(fp2))) {
991デフォルトの名無しさん:2009/07/13(月) 13:17:08
>>678
g++ でコンパイルしてみること。
エラーが出たらエラーメッセージを貼り付けること。
992 ◆jG/Re6aTC. :2009/07/13(月) 14:14:37
>988
(誤)階層的プログラミング
(正)階層的クラスタリング
でした^^;
よろしくです。
993デフォルトの名無しさん:2009/07/13(月) 14:35:11
>>971
ありがとうございます。
994デフォルトの名無しさん:2009/07/13(月) 15:20:18
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9738.txt
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: VC 2009 
[3.3] 言語: C言語
[4] 期限: 7/14 15時
[5] その他の制限: define,for文など

よろしくお願いします

995デフォルトの名無しさん:2009/07/13(月) 15:27:54
>>994 連立1次方程式の解をガウスの消去法用いて解く
問題>>162 解答>>174(9580)>>183(9582)
996デフォルトの名無しさん:2009/07/13(月) 16:18:31
たとえば
3481
という数字(4桁/0含む)が与えられたとき
0 = 3 + 4 - 8 + 1
1 = 3 + 4 - 8 * -1
2 = -(3 + 4 - 8 - 1)
3 = 3 * 4 - 8 - 1
4 = (3 / (4 + 8))^-1
...
のように加減乗除のみで整数を順に造っていってください
997デフォルトの名無しさん:2009/07/13(月) 16:24:11
最後の例で思いっきり加減乗除を使っていない件
998794:2009/07/13(月) 19:34:47
ここ2日ほど熱があり寝込んでました
先生に相談すると今週の間だけ待ってくれるとのこと
まだ未解決なので再度宜しくお願いします
999デフォルトの名無しさん:2009/07/13(月) 19:47:01
>>998
なんかのギャグですか?
1000デフォルトの名無しさん:2009/07/13(月) 20:39:34
ume
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。