C/C++の宿題片付けます 128代目at TECH
C/C++の宿題片付けます 128代目 - 暇つぶし2ch1:デフォルトの名無しさん
09/06/24 23:28:21 BE:454421568-DIA(282072)
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

前スレ
C/C++の宿題片付けます 127代目
スレリンク(tech板)

2:デフォルトの名無しさん
09/06/25 03:15:37
下痢便はすごく苦い

3:デフォルトの名無しさん
09/06/25 03:18:57
メールのことがかかれてないじょー

4:デフォルトの名無しさん
09/06/25 03:19:47
メールなんちゃらは他所でやれ

5:デフォルトの名無しさん
09/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
09/06/25 13:37:15
前スレ
>>704
有難うございました!

7: ◆/91kCCQXBo
09/06/25 13:53:33
>>005 まだ関数の外側にいる。URLリンク(effy.ldw.jp)
21: queuen_pointer->head = sp; // c:21: error: parse error before '->' token
22: queuen_pointer->tail = sp;
23: main() {
24: }

8:デフォルトの名無しさん
09/06/25 13:57:09
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)のかわりに
URLリンク(kansai2channeler.hp.infoseek.co.jp)とすると、どのような不都合が生じるか説明せよ

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

最後の方が違います
どう変わってくるのか教えて頂きたいです

9:前スレ884
09/06/25 14:04:10
前スレ982さんありがとうございました!
あまりの無駄のなさに普段の完成度との違いに怪しまれそうです

質問なのですが、sturcut、Node*、sentinelはそれぞれどういう意味をもっているのでしょうか
多分まだ習っていなく、ググってももう一つ良く分からなかったので
良ければ教えていただけないでしょうか

10: ◆/91kCCQXBo
09/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:デフォルトの名無しさん
09/06/25 14:33:06
まだ習ってないのかさては

12:デフォルトの名無しさん
09/06/25 15:03:19
sturcut Nodeというものがあるらしいですが、多分まだ習っていません

13:デフォルトの名無しさん
09/06/25 15:39:16
>>9
struct
   構造体。C++ではclassとほぼ同じもの。ただし全メンバがデフォルトでpublicである。
node
   ノード。データを連結して使うリスト構造の場合、1個1個のデータを「ノード」と呼ぶことが多い。
sentinel
  センチネル、日本語で番兵。
  「配列やリストの端っこに置いとくと、全体のスキャン処理とかが楽になる」
  などの目的で使われる、特別な値やノード。

14:デフォルトの名無しさん
09/06/25 15:40:47
>>前スレ スレリンク(tech板:953番) (ピラミッドアート)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
main()は自分で作ってね

15:デフォルトの名無しさん
09/06/25 16:02:09
予約語だな

16:前スレ934
09/06/25 16:25:15
前スレ>>939さんありがとうございました!助かりました!

17:デフォルトの名無しさん
09/06/25 16:45:25
前スレ>>998->>1000
>>14
ありがとうございます!
本当に助かりました。

18:デフォルトの名無しさん
09/06/25 17:15:21
>>9
このあたりかな。「番兵付きの双方向リスト」とか
URLリンク(akademeia.info)

19:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 17:30:54
あと30分かよ!

21:デフォルトの名無しさん
09/06/25 17:32:50
は、はぃ!!あと30分切ってます…!!!@@@@@@

22:デフォルトの名無しさん
09/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
09/06/25 17:41:05
アリガトウゴザイマス!!!!!

24:デフォルトの名無しさん
09/06/25 17:44:59
>>22
GJ

25:◇jaDL7.sW26
09/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:デフォルトの名無しさん
09/06/25 17:50:44
>>19
UNIX板で聞いといてWindowsかよ。

27:デフォルトの名無しさん
09/06/25 19:59:17
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C 
[4] 期限:6月28日まで
[5] その他の制限: お願いします

28:デフォルトの名無しさん
09/06/25 20:10:54
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月2日
[5] その他の制限: すべてファイルを使う。

29:デフォルトの名無しさん
09/06/25 20:21:35
>>28
入力やら出力やら書いてある部分の意味がわからんのは俺だけか?

30:デフォルトの名無しさん
09/06/25 20:40:55
>>22
Gjsぐるw

31:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 21:28:19
[1] 授業単元: プログラミングⅡ
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: win avr
 [3.3] 言語: C
[4] 期限: 6月28日まで
[5] その他の制限: 先週からavr studio4 に変わったのでほとんど理解してません。


33:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 21:56:36
>>32
②の図?の意味がわからんのでもしかたら外してるかも
#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("*** ② ***\n");
for (c='0'; c<='9'; c++)
{
printf("'%c'=%x\n", c, c);
}
printf("*** ③ ***\n");
for (i=0; name[i]; i++)
{
printf("'%c'=%x\n", name[i], name[i]);
}
printf("*** ④ ***\n");
for (p=name; *p; p++)
{
printf("'%c'=%x\n", *p, *p);
}
return 0;
}

37:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 22:04:30
>>32
もしかして0から9って普通に表示じゃなくて②みたいな数字の表示方法があったりしない?

39:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 22:14:36
>>32は7セグメントLEDの組み込み系の話だと思う。
回路にビットパターン流し込んで対応するLEDをつけるって課題だとおもう。
AVRって環境を使うみたいだけど、ここのスレに使ったことがある人間がいるかはかなり疑問。

41:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 22:16:16
>>38
その通りです、説明しずらいので、配布されたプリントの画像を見てもらえたらありがたいです。
DLkye 0000
URLリンク(www1.axfc.net)

43:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 22:22:06
>>41
レスありがとうございます。出来ました。

45:デフォルトの名無しさん
09/06/25 22:24:52
>>14
前スレの内容について、一辺が3の八角形は
  ***
 *   *
*     *
*     *
*     *
 *   *
  ***
こうではないだろうか。

質問者が納得してるからこうではなかったんだろうけど。。

46:39
09/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:デフォルトの名無しさん
09/06/25 22:35:06
>>46
math.h使って
(int)(log(d)/log(2.0))
d: 入力した数

48:デフォルトの名無しさん
09/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
09/06/25 22:42:24
>>045 C:\a.exe >a.txt line 255-261* を見れば、
>>014(9548) OK
>>前1000 は間違い

50:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/25 22:50:47
>>31
> trace実行後の出力ファイル(point.out)の内容は
> 1,2
> 2,0
ここは2,2じゃないのかなあと、ガウス平面というものを知らずにレス

54:デフォルトの名無しさん
09/06/25 22:55:14
>>49
うpされたコードを見てなかったんだ。
スマソ

55:デフォルトの名無しさん
09/06/25 22:58:54
>>42
なんかよくわからんのだが、
「環境はwin avr, avr studio4です」で通じる話なのか?
どんなデバイス使ってるとかわからんと手の出しようがないような
わかる人にはわかるのかね

動作させるってのは実際にデバイス動かして
表示させるってのはデバイス上の液晶画面か何かに表示させるってことなんだよな?

56:デフォルトの名無しさん
09/06/25 23:02:53
>>37
% を含む文字列を出力できない

57:デフォルトの名無しさん
09/06/25 23:08:30
>>55
自分も正直何をやっているのかわかっていません・・・。
デバイスの関してはatmega88pというのを使います。
液晶画面に自分の名前のアルファベットを表示させるのですが、デバイスやらUSBライターなどは教授が持っているので、自分で確認することが出来ません。

58: ◆/91kCCQXBo
09/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:デフォルトの名無しさん
09/06/25 23:19:34
>>56
あるある

60:デフォルトの名無しさん
09/06/25 23:20:46
>>37
strchr が NULL を返したらどうするんだ

61:デフォルトの名無しさん
09/06/25 23:23:52
>>57
ぶっちゃけ、エスパーじゃないと無理。
一般人は、回路図とデバイスの仕様が無いと書きようがない。


62:デフォルトの名無しさん
09/06/25 23:27:13
>>57
そうですか、わかりました。ありがとうございます。

63:61
09/06/25 23:45:35
>>57
7セグメントディスプレイは何個ついてるの?
問題文からは3つかな?

64:デフォルトの名無しさん
09/06/26 00:01:19
>>63
確か三つだったと思います。

65:61
09/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:デフォルトの名無しさん
09/06/26 00:25:04
>>65
今かやってみます。ありがとうございます。

67:61
09/06/26 00:30:36
>>65
訂正。
×int d10 = ( i - d100 ) / 10;

○int d10 = ( i % 100 ) / 10;

68:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/26 02:17:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
ほとんど質問に近いのですが、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のようなプログラムを人に聞きながら作ったのですが、
/*0.5を足してから*/
で示した文、kinri += 0.5;
ってどういう意味があるのでしょうか?
試しに抜いてみたのですが結果は変わりませんでした。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 関数まで。お願いします

70:デフォルトの名無しさん
09/06/26 02:27:23
>>69
恐らく四捨五入をさせているものと思われる。
int型にすると小数点以下全て切り捨てだから、
0.5を足してあげると丁度四捨五入になるかと。

71:デフォルトの名無しさん
09/06/26 02:40:00
>>70
ああ、なるほど・・・そういうことか。
ありがと!


72:デフォルトの名無しさん
09/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] その他の制限:特になし

73:68
09/06/26 03:29:04
>>68
の回答、
前スレにあった。どうも同じ大学の人がいるらしい。
ありがとー。

74:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/26 04:52:10
>>75
ごめん、問題文ミス。
1*****
2 ****
3  ***
4   **
5    *


77:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/26 06:09:38
前スレのプログラムへの質問なんですが、
前スレ675氏のプログラム、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
を実行すると、
Usage: exefile 10000
とだけ出力されて終了してしまうのですが、
これは自分の転記ミスなんでしょうか?

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

79:デフォルトの名無しさん
09/06/26 06:28:49
>>77
ありがとう。
せっかく作ってくれた所悪い、
問題文のとおり行番号がいるんだ。


80:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/26 07:13:02
>>78
17s/argc != 2/argc != 3/

82:前675
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/26 18:09:15
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月1日 17:00
[5] その他の制限:

86:デフォルトの名無しさん
09/06/26 18:10:43
>>28です。
答えてくだっさた方々ありがとうございました。


87:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/26 19:23:31
30って気持ち悪いw

89:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/26 19:36:17
なんでctype.h?

91:デフォルトの名無しさん
09/06/26 21:55:22
>>10
有難うございました!

92:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/27 00:37:12
前スレ930のものです。

前スレで回答してもらえず、前スレが落ちてしまったのでもう一度質問させてください。
[1] 授業単元:計算機システム構成原理
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月30日まで
[5] その他の制限: 特になし
よろしくお願いします。

94:デフォルトの名無しさん
09/06/27 00:39:17
長くてめんどくさいだけの課題はやる人あんまりいないよな。

95:デフォルトの名無しさん
09/06/27 01:27:02
>>93
URLリンク(ftp.gnu.org)

96: ◆/91kCCQXBo
09/06/27 02:17:57
>>032 LED コンパイルはしてない。0b01111111
URLリンク(rg550.hp.infoseek.co.jp)

97:デフォルトの名無しさん
09/06/27 05:39:00
11

★pc1つで毎日3万稼ぐ★


★翌日入金★

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

URLリンク(toutou.nantomo.dousetsu.com)


98:デフォルトの名無しさん
09/06/27 06:30:45
>>27
Dll_BMP_C.h ってのを晒さないと誰もできないぞ
(もし Dll_BMP_C.c みたいなのがあったらそれも)


99:デフォルトの名無しさん
09/06/27 07:24:15
>>27
>>98
D_llBMP_C.h URLリンク(kansai2channeler.hp.infoseek.co.jp)

100:83
09/06/27 09:54:43
>>84
ありがとうございましたm(__)m

101:デフォルトの名無しさん
09/06/27 09:56:38
>>99
thx
DllBmpReadImage()とかの実体のDLLかソースコードもあるとうれしい
(というかそれがないとできない)


102:デフォルトの名無しさん
09/06/27 10:04:27
なんかこのやり取りを良く見る気がする
一般的でないライブラリを使用するときは
一緒にアップしろとテンプレに明記した方がいいんじゃないか

103:デフォルトの名無しさん
09/06/27 10:11:06
>>95
どうみてもbash

104:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/27 11:30:32
>>92
URLリンク(kansai2channeler.hp.infoseek.co.jp)


107:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/27 16:02:35
おおっとすまん課題はC言語だったか。適当に書き直すわー

110:デフォルトの名無しさん
09/06/27 16:03:34
>>107
URLリンク(kansai2channeler.hp.infoseek.co.jp)

111:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/27 17:50:07
[1] 授業単元: コンピュータプログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows
 [3.2] VisualC++
 [3.3] 言語: c
[4] 期限: 2009年6月30日
[5] その他の制限:配列はcharやdouble,
並び替えはdo,for,if,whileなどで習いました。
   お願いします。

114:デフォルトの名無しさん
09/06/27 17:55:56
URLが

115:デフォルトの名無しさん
09/06/27 17:56:14
>>113 大きいクリップ、リンクが変。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

116:デフォルトの名無しさん
09/06/27 17:57:34
>>113
問題文のリンクがちがうぞw

117:デフォルトの名無しさん
09/06/27 18:07:55
<<115のが正しいです。
すみません。

118:デフォルトの名無しさん
09/06/27 18:33:49
>>112
retrun 1;
の位置が明らかにおかしい

119:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/27 20:15:38
>str[1023] ='\0';
無意味

121:デフォルトの名無しさん
09/06/27 20:18:23
>>120
保険だよ。一行削れるから、ないほうがよかったかなぁ。。。

122:デフォルトの名無しさん
09/06/27 20:25:14
行削りたいなら
if(isalum(str[i])) str[j++] = toupper(str[i]);
でいいだろ

123:デフォルトの名無しさん
09/06/27 20:37:25
>>122
あぁ、それでいけるのね。
toupperを普段使わないから、認識が曖昧だった。勉強になります。

124:デフォルトの名無しさん
09/06/27 20:41:01
>>121
fgets()は必ず終端に'\0'を付けると>>120は言ってるんだろう
fgets()で付く場合と付かない場合があるのは'\n'だ

125:デフォルトの名無しさん
09/06/27 20:45:29
>>124
それも認識が曖昧だった。なるほど、勉強になります。

126:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/27 22:03:12
>>27
URLリンク(u9.getuploader.com)

128:93
09/06/27 23:06:49
>>95
これは違うと思うのですが…。
すいませんがどなたか>>93のをお願いします。


129:デフォルトの名無しさん
09/06/27 23:42:52
>>128
>>94-95

130:デフォルトの名無しさん
09/06/27 23:54:48
>>106 さんありがとうございました。
ホントに助かりました!

131: ◆/91kCCQXBo
09/06/28 01:42:21
>>113 ソートのアルゴリズムは習ってないということで。
スレリンク(tech板:676番)

132:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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
お願いします。

135:93
09/06/28 11:15:59
>>129
本当にわからなくて>>95のが与えられてもよくわかりませんでした。
すいませんがせめて>>95のどれを見たらわかるかだけでも教えていただけないでしょうか?

136:デフォルトの名無しさん
09/06/28 11:41:43
>>132
一応やってみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

137:デフォルトの名無しさん
09/06/28 13:36:16
[1] 授業単元:数理物理
[2] 問題文(含コード&リンク):URLリンク(www.mns.kyutech.ac.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:どちらでも可
[4] 期限:6/30まで
[5] ヒントのプログラムから最後のprintfのところのxのあたいがよくわからないのでよろしくお願いします。

138: ◆/91kCCQXBo
09/06/28 13:41:47
>>132 >>136のGCDを参考にした。
3個の分数の和は、分数の和+1個の分数の和が題意だと解釈してみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

139:デフォルトの名無しさん
09/06/28 14:02:12
>>133 >>136 >>138
ありがとうございました!とても参考になりました。

140:デフォルトの名無しさん
09/06/28 14:15:05
>>87
答えてくださってありがとうございます。しかし、これを実行してみたら、フォネティックコード
化はちゃんとなっているんですけど、入力→フォネティックコード化→入力・・・・とずっと続
いてしまいます。

ポインタとファイルだけは何がどうなっているのかさっぱりわからないので自分で修正する
こともできなくて・・・。修正よろしくおねがいします。

141:デフォルトの名無しさん
09/06/28 14:48:24
>>96
遅くなりましたが、ありがとうございます。

142:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/28 15:23:56
>>140
こうかな?
URLリンク(kansai2channeler.hp.infoseek.co.jp)

144:143
09/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:デフォルトの名無しさん
09/06/28 16:04:07
>>144
if (moji == '\n') // 改行で終わる(笑!)
  break;

146:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/28 17:17:34
>>142
助かりました。
プログラムは一応完成しました。
感謝します。

148:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/28 18:00:11
>>148
即レスthxです
参考にさせてもらいます

150:デフォルトの名無しさん
09/06/28 18:05:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(www.dotup.org)

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:7/2
[5] その他の制限:
お手数かけますが宜しくお願いします

151:145
09/06/28 18:09:36
>>140 Ctrl+D をキーボードから入れれば終了する。Windowsなら Ctrl+Z。

152:デフォルトの名無しさん
09/06/28 20:10:58
>>150
課題1

153:デフォルトの名無しさん
09/06/28 20:12:41
URI張り忘れたorz
URLリンク(kansai2channeler.hp.infoseek.co.jp)

154:デフォルトの名無しさん
09/06/28 20:41:45
>>153
有難うございます。
助かりましたm(_ _)m


課題2の方どなたかお願いします。

155:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/28 21:02:26
>>150
課題2
URLリンク(kansai2channeler.hp.infoseek.co.jp)

157:デフォルトの名無しさん
09/06/28 21:23:33
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: VC 2008
 [3.3] 言語: C
[4] 期限: 6月29日 15時
[5] その他の制限: 配列やif文などは使わない。(使わなくてもできるみたいです。
          printf,繰り返し処理を使う。

148を参考にやってみたのですが、実行結果の出し方が違うみたいなのでいまいちわからなかったので
質問しました。 お手数ですがよろしくおねがいします。

158:デフォルトの名無しさん
09/06/28 21:32:00
>>156
迅速なレス感謝します
本当に助かりました。

159:デフォルトの名無しさん
09/06/28 22:02:20
>>155
C言語でアセンブラ出力する。

160:デフォルトの名無しさん
09/06/28 22:35:48
どなたか>>126お願いします

161:145
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/28 23:05:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:7/3
[5] その他の制限:ポインタ配列を利用すること
お願いします

164:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/06/28 23:31:15
>>163
入力はポインタでなくていいのかな。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

167:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/28 23:53:41
>>166
早速の回答ありがとうございます
入力は指定がないのでポインタでなくてもいいです


169:155
09/06/29 00:24:46
>>165
ありがとうございます!

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

170:デフォルトの名無しさん
09/06/29 00:27:46
回答してもらえるとうれしいです。>>162


171:デフォルトの名無しさん
09/06/29 00:42:50
>>170
みんな暇なときにやってんだからさ
そうせかすなよw

締め切りまだ近いわけじゃないしw

172:デフォルトの名無しさん
09/06/29 00:44:38
[1] 授業単元:計算機システム
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月30日まで
[5] その他の制限:
ボスケテ



173:デフォルトの名無しさん
09/06/29 01:07:25
>>171
そうですね。つい焦っちゃって。
ごめんなさい。。


174:デフォルトの名無しさん
09/06/29 02:00:36
>>173
昔作ったのでよければあげる。
データ変える程度ならちょっといじれば動くようになるはず。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

175:デフォルトの名無しさん
09/06/29 02:26:03
>>169
gcc と objdump が使えるなら
$ gcc a.c -c
$ objdump -d a.o > a.s
とかすればよかったとおもう

176:デフォルトの名無しさん
09/06/29 02:33:49
gccならgcc -S foo.cで良くないか
わざわざディスアセンブルせんでも

177:デフォルトの名無しさん
09/06/29 02:43:03
>>170

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

URLリンク(kansai2channeler.hp.infoseek.co.jp)

行列式ゼロなのか、それともピボット選択の必要があるのか

178:デフォルトの名無しさん
09/06/29 03:02:55
>>162 {0,-9

179:デフォルトの名無しさん
09/06/29 03:15:45
>>178
すみませんコピペミスしてました
でも、そこを直してもやっぱりコアダンプです

180:デフォルトの名無しさん
09/06/29 03:18:17
行列が潰れている(行列式がゼロ)なんじゃないでしょうか?
それともやっぱりピボット選択した方がいいのかなあ?
デバッガ掛けてみたらやっぱり tmp がゼロになる時があり
Division by Zero という事でした

181:デフォルトの名無しさん
09/06/29 03:37:11
>>162 #define N 8

182:デフォルトの名無しさん
09/06/29 09:09:12
>>181
あら本当だありがとう
でもこれじゃ未知数8、数式は7しかない
これじゃ解けませんぜ旦那

>>170
どうする?元の行列もう一列足りないよ

183:デフォルトの名無しさん
09/06/29 09:11:56
と思ったら

#define N 7

でOKなのねシクシク

という事で上げ直し

>>170
URLリンク(kansai2channeler.hp.infoseek.co.jp)

学校行ってくる

184:デフォルトの名無しさん
09/06/29 12:39:00
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
  URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: c++6.0
 [3.3] 言語:C
[4] 期限:6/29
[5] その他の制限:
よろしくお願いします。
   


185:デフォルトの名無しさん
09/06/29 12:45:43
>>184
> ③入出力例 こうならなければ修正する
これって授業中に「こうならなければ~になるように修正する」って言われてるとおもうんだけど
「こうならなければ、こうなるようにプログラムを修正する」って話?

186:デフォルトの名無しさん
09/06/29 12:49:58
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ヒントから表を並び替えて、
1) 総点順に並び換えよ。
2) 各科目別成績順に並びかえよ。

  [3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: C++
 [3.3] 言語:C 言語
[4] 期限:6/29
[5] その他の制限: 並び替えはdo,for,if,whileで習いました。
お手数ですがよろしくお願いします。


187:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/29 13:02:48
%04d

189:デフォルトの名無しさん
09/06/29 13:32:39
>>186(9584.c) >>113(9568.jpg) 問題 >>131(CODE) 解答

190:デフォルトの名無しさん
09/06/29 14:05:06
>>186
名前さんは全部0点のわけだ。CSVファイル経由なんかだとよくあることだけどね。

191:デフォルトの名無しさん
09/06/29 14:13:04
確実にデータ管理方法がおかしいことによる弊害ですねわかります

192:デフォルトの名無しさん
09/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問目は必須ではないのでスルーして下さってもかまいません。


193:192
09/06/29 15:46:26
リンク先の貼り付け失敗しました…
URLリンク(kansai2channeler.hp.infoseek.co.jp) bin/joyful/img/9587.txt



194:46
09/06/29 16:55:11
>>48
レスさんくす。
それでやってみたのですが、2とか4とか2のn乗の数の場合うまくいかないのですが。

195:デフォルトの名無しさん
09/06/29 17:16:57
>>192
とりあえず、1問目だけ。
テキストの整形なんかは、適当に直して。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

2問目以降は、
クイックソート, シェルソート, 挿入ソート, 選択ソート、マージソート
の、ベースになるソースとかない?
自前で書くと、細部の実装が授業の内容と合わなくなりそうだけど。

196:デフォルトの名無しさん
09/06/29 17:17:23
>>189さん
>>131(CODE) 解答の中のseito,returnなど
ならってないものが多くてわかりません。
授業でならったdo,for,if,whileを使っていただけると
とてもありがたいのですが。


197:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/06/29 18:02:17
>>186
URLリンク(kansai2channeler.hp.infoseek.co.jp)

できる限り、簡単に書いてみた。

200:デフォルトの名無しさん
09/06/29 18:23:20
>>198さん >>199さん
ありがとうございます。
一応、授業でならった並び換えのCソースをはっときます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

201:デフォルトの名無しさん
09/06/29 18:38:01
[1] 授業単元:計算機言語Ⅰ
[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:デフォルトの名無しさん
09/06/29 19:03:51
>>201
こんなんでどうでしょ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

203:デフォルトの名無しさん
09/06/29 19:10:42
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
               URLリンク(u9.getuploader.com)
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C 
[4] 期限:7月1日まで
[5] その他の制限: 2問あります




204:デフォルトの名無しさん
09/06/29 19:21:00
[1] 授業単元:
コンパイラの構成
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[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:デフォルトの名無しさん
09/06/29 19:37:21
>>195 ありがとうございます。

ソースはないですねぇ…
何と言うか、出来れば何でもいいような感じなので特に気にしなくて良いかと思います。

206:184
09/06/29 19:42:50
>>185そういうことです。ヒントのプ口グラムをから作る感じです。よろしくお願いします

207:デフォルトの名無しさん
09/06/29 19:46:38
シェルと挿入は前スレ807の使えば?

208: ◆YtFiiqjbeo
09/06/29 19:49:27
【質問テンプレ】
[1] 授業単元:プログラミング言語c
[2] 問題文(含コード&リンク):

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

実行例URLリンク(www.dotup.org)

お願いします

209:201
09/06/29 19:56:02
>>202
有難う御座います。
ズバリですね。

210:デフォルトの名無しさん
09/06/29 22:25:23
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):

URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] Visual Studio 2008
 [3.3] 言語: C++
[4] 期限:7月2日まで
[5] その他の制限:できるだけ元のソースを弄らずにお願いします。


211:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/29 22:35:17
>>210
goukei += kata[i]; → goukei += ninzuu[i];

213:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/06/29 23:35:04
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc 3.4
 [3.3] 言語:C
[4] 期限:2009年6月30日正午まで
[5] その他の制限: なし

216:デフォルトの名無しさん
09/06/29 23:40:08
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限: 6月30日23:59
[5] その他の制限: 特になし

よろしくお願いします

217:デフォルトの名無しさん
09/06/29 23:45:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:6/30
[5] その他の制限: なし

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

お願いします

219:211
09/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:デフォルトの名無しさん
09/06/30 00:40:35
>>219
フローチャートを書くためのツールをください

221:デフォルトの名無しさん
09/06/30 00:56:03
>>203
ライブラリうp記念にやってみた
問1 URLリンク(kansai2channeler.hp.infoseek.co.jp)
問2 URLリンク(kansai2channeler.hp.infoseek.co.jp)

222:デフォルトの名無しさん
09/06/30 00:56:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C言語
[4] 期限: 7月2日9時
[5] その他の制限: ポインタと配列まで習いました

223:デフォルトの名無しさん
09/06/30 01:02:23
>>218
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

224:デフォルトの名無しさん
09/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;
}

225:222
09/06/30 01:50:15
>>224の通りに打ち込んでもうまく出来ませんでした><
どうしてなんでしょう?

226:デフォルトの名無しさん
09/06/30 02:20:14
>>225
エラーの内容をコピペしてみて。

227:デフォルトの名無しさん
09/06/30 02:20:22
>>225
>>224さんではないですがどんなエラーが出たんでしょうか?
私もコンパイルしてみましたがunknown escape sequence:'\216'と言うエラーが出たので、そこだけ修正してちゃんと動作しました
>>224さんの空白文字を修正をしたものを張っておくのでもしよければどうぞURLリンク(ja.pastebin.ca)

228:デフォルトの名無しさん
09/06/30 02:31:44
>>225
codepadで確認したけど、エラーでなかったよ
URLリンク(codepad.org)
(入力部分だけ変更してあるので注意

ついでに35段目でオーバーフローすることを確認したw

229:デフォルトの名無しさん
09/06/30 02:57:33
半角スペース省略回避の&nbsp;が悪さしてんのか?

230:デフォルトの名無しさん
09/06/30 06:50:57
>>223
ありがとうございます。
まだ習ってない部分もありますが
解読してみようと思います

231:デフォルトの名無しさん
09/06/30 07:12:58
>>208お願いします。

232:222
09/06/30 08:33:36
正しくコンパイルできてエラーは出ませんでしたが
数字を入力したあとになにも表示されませんでした。
今教えてもらったプログラムを解読しているとこです。

233:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/30 09:51:03
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[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:デフォルトの名無しさん
09/06/30 09:53:05
>>233
--input-charset=cp932
とかでググってはどうだろうか

236:デフォルトの名無しさん
09/06/30 10:02:10
>>215
誰か助けてm(__;)m

237:デフォルトの名無しさん
09/06/30 10:02:27
いや、sjisとかcp932とか使わないからどうでもいいんだよ。
ただ変換するコードを書くのが面倒だし毎度変換するだけの無駄なクロックが使われていると思うとね。
さっさと文字コード統一してくれ、といいたくなる。

238:デフォルトの名無しさん
09/06/30 10:21:12
>>199さん
合計と科目別すべて一緒に表示したいときは
どうすればいいですか?

239:デフォルトの名無しさん
09/06/30 10:39:15
文字コードは、英語のAtoZしか使わないから関係ない人へ。
SPACE->&nbsp;置換お疲れ。

240:239 ◆/91kCCQXBo
09/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:デフォルトの名無しさん
09/06/30 13:02:41
>>239
何かを皮肉っているように読めるけど、何を指してるのかよくわからんや

242:デフォルトの名無しさん
09/06/30 13:46:46
>>238
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一番簡単なのは、もう1つ外側でループしてやることかな・・・と。



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

244:デフォルトの名無しさん
09/06/30 14:51:32
〔1〕授業単元:C言語
〔2〕問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

お願いします

245:デフォルトの名無しさん
09/06/30 15:14:36
>>208
手遅れ感がすごいけど一応。
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
スタックに配列取ってるのはそうした方が主旨に沿いそうな気がしたから。

246:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/30 15:38:04
ググってわからなかったので、質問させてください。
%eを使って表示したいのですが、
表示させたときにeの左側の小数部分の表示桁数を指定するにはどうすればいいですか?

248:デフォルトの名無しさん
09/06/30 15:40:48
printf("%XXX.XXXe", f); // Xは0-9の数字

249:デフォルトの名無しさん
09/06/30 15:41:38
その辺は書式といいます。

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

少数を扱う場合は

%1.5e
などと書きます

250:デフォルトの名無しさん
09/06/30 15:46:35
ありがとうございます。
書式でググればよかったんですね。

251:デフォルトの名無しさん
09/06/30 15:48:50
>>234
とりあえず、中心極限定理の場合
URLリンク(kansai2channeler.hp.infoseek.co.jp)

正規乱数に変換する部分を書き換えれば、ボックスミュラーの方にも使えるっしょ。
ヒストグラムはカウントだけしておいて、EXCELで処理ってことで。


252:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/30 15:52:01
すみません。
もう1つ質問なのですが、
無限ループでとある計算を行い、
xが10の-10乗より小さくなったときに無限ループを脱出するプログラムを作りたいのですが、

if(x < 1.0e-10)
break;

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

if(x < 0.0000000001)

と、書くしか方法はないのでしょうか?

254:デフォルトの名無しさん
09/06/30 15:53:48
>>253
無限ループは何で実現してるの?

255:デフォルトの名無しさん
09/06/30 15:56:24
>>525
ソース詰めてるときにセミコロン消しちゃった。申し訳ない。
正しくは以下。
void swap(int* a,int* b){int T=*a;  *a = *b; *b = T;}

256:デフォルトの名無しさん
09/06/30 15:56:51
すみません。
While(1)
です

257:デフォルトの名無しさん
09/06/30 16:02:36
>>252
上が駄目で下がOKならそういうことではないかと
ただなぜかといわれると規格とかの話になりそうなので詳しくはわかりませんが。
制御文には指数は使えないのかも

258:デフォルトの名無しさん
09/06/30 16:10:54
>>192 お願いします。

259:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/30 16:54:44
while (b < a)
なら a = 4 の時 c = 2 だけど

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

printf の文意も 与えた値よりも必ず大きい2の累乗数 を求めてるっぽいし

263: ◆/91kCCQXBo
09/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:デフォルトの名無しさん
09/06/30 17:31:27
>>244
ポインタ配列にこだわってみた。
こんなんもどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

265:--
09/06/30 17:43:08
>>172 >>93 >>前930
>プロンプトを現在の”mysh[9]”といったものから”ユーザ名@mysh[9]”
URLリンク(kansai2channeler.hp.infoseek.co.jp)

266:デフォルトの名無しさん
09/06/30 17:59:37
質問させてください。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

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

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


267:デフォルトの名無しさん
09/06/30 18:01:28
スタックオーバーフローかと

268:デフォルトの名無しさん
09/06/30 18:03:25
とりあえずでかい配列をローカルにとらないほうがいい

269:デフォルトの名無しさん
09/06/30 18:05:04
1つの変数に30Gバイト割り当てて(それが10個以上)コンパイルを
通すコンパイラも問題ありかと。
現実時間で動作するとはその時点で思えない。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch