C/C++の宿題片付けます 142代目at TECH
C/C++の宿題片付けます 142代目 - 暇つぶし2ch2:デフォルトの名無しさん
10/11/01 00:56:39
>>1

3:デフォルトの名無しさん
10/11/01 01:40:42
[1] 授業単元:C言語入門

[2] 問題文):最大24個の整数が格納できる配列を用意する。
この配列の先頭から10個分には1を代入し,
つづく6個分に は0を入れ,最後の8個分には-1を入れよ。

[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:11月2日

良ければよろしくお願いします


4:デフォルトの名無しさん
10/11/01 01:44:23
>>3
いや、それくらい自分でやれよw

5:デフォルトの名無しさん
10/11/01 01:45:58
>>3
int main(void)
{
int ary[24]=
{
1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,
-1,-1,-1,-1,-1,-1,-1,-1
};
return 0;
}

6:デフォルトの名無しさん
10/11/01 01:47:51
>>3
#include<stdio.h>

int main(void)
{
int array[24];
int i, index=0;

for(i=0;i<10;i++) array[index++]=1;
for(i=0;i<6;i++) array[index++]=0;
for(i=0;i<8;i++) array[index++]=-1;

return 0;
}

7:デフォルトの名無しさん
10/11/01 01:49:32
>>5-6

ありがとうございます
助かりました

8:デフォルトの名無しさん
10/11/01 02:45:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)

*記号を使ってでsin曲線を描け。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月2日
[5] その他の制限: なし
よろしくお願いします。

9:デフォルトの名無しさん
10/11/01 02:48:48
助けてください
Windowsコンポーネントの情報の取得を教えてください
環境 MFC (VS2003)

COMは苦手です。何かヒントのページでも構いません
見つかりません

誰かお願いします。

10:デフォルトの名無しさん
10/11/01 02:54:29
>>8
汚い正弦曲線で良ければ
URLリンク(ideone.com)

11:9
10/11/01 02:55:15
9です。
追加で質問です。
WindowsコンポーネントはWin2003はレジストリから取得なのでしょうか?
もしそうならばキーとパスを教えていただけないでしょうか?

お願いします

12:9
10/11/01 03:02:14
9です。
事故解決しました

13:9 ◆hjAE94JkIU
10/11/01 04:00:13
9です。
解決してません。
そういうのはやめていただけませんか?

14:デフォルトの名無しさん
10/11/01 08:50:51
>>8
追加させていただきます。
実行結果が下のような感じでお願いできますか。
|
|
|
___________________________
|
|
|

15:デフォルトの名無しさん
10/11/01 08:53:58
>> 14
途中送信してしまいました
正弦曲線だけではなくグラフの縦と横線も表示できるようにお願いしたいです。

16:デフォルトの名無しさん
10/11/01 09:22:57
>>8
URLリンク(ideone.com)

17:デフォルトの名無しさん
10/11/01 12:22:53
何度も言わせないで頂戴。早くカレンダーの課題を出して頂戴。

18:デフォルトの名無しさん
10/11/01 15:34:47
>>17
西暦元年以降の二つの実在する年月日から、
経過日数を計算し、結果を返す関数を作成して
くれないか?w

19:デフォルトの名無しさん
10/11/01 16:07:42
>>18 いや、それくらい自分でやれよw

20:デフォルトの名無しさん
10/11/01 16:30:20
>>19
これ、難しいぞ

21:デフォルトの名無しさん
10/11/01 16:45:34
>>20
修正ユリウス日が求められれば後は引き算するだけ

22:デフォルトの名無しさん
10/11/01 16:54:47
今日から1億年後の曜日を調べよ

23:デフォルトの名無しさん
10/11/01 16:56:34
>>21
>修正ユリウス日が求められれば

だからそれが難しいって言ってんだよ馬鹿?

24:デフォルトの名無しさん
10/11/01 17:05:48
>>23
ごめん、調べれば公式やサンプルがゴロゴロでてくるから難しいとか考えたこともなかった
よく考えれば検索自体初心者にはハードルが高いよね

25:デフォルトの名無しさん
10/11/01 17:18:59
>>8
昔作ったのでよければ。
URLリンク(ideone.com)

26:デフォルトの名無しさん
10/11/01 18:03:48
>>23
そんなものが難しいとか言っているお前がマジで馬鹿だろ?w

27:デフォルトの名無しさん
10/11/01 18:08:52
>>24>>26
ソース貼ってから言えよカス

28:デフォルトの名無しさん
10/11/01 18:10:39
( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ

29:デフォルトの名無しさん
10/11/01 18:11:30
n人の成績データを一次元配列に格納し、平均点を求めるプログラムを作成せよ。
ただし、データ入力部、計算部、出力部は関数化せよ。


点数を入力するときに関数を使うらしいのですが
関数における配列の使い方がよくわかりません。
動的メモリを使うらしいのですが・・・。

30:デフォルトの名無しさん
10/11/01 18:19:05
暦って各国ばらばらに導入されてるから、その事も考慮しないといけないな

31:デフォルトの名無しさん
10/11/01 18:28:37
>>29
>>1

32:デフォルトの名無しさん
10/11/01 18:33:41
失礼しました。

[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク):
n人の成績データを一次元配列に格納し、平均点を求めるプログラムを作成せよ。
ただし、データ入力部、計算部、出力部は関数化せよ。

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン: VB 2005
 [3.3] 言語: C++
[4] 期限: ([2010年11月02日まで
[5] その他の制限:
n人の成績データを一次元配列に格納し、平均点を求めるプログラムを作成せよ。
ただし、データ入力部、計算部、出力部は関数化せよ。


33:デフォルトの名無しさん
10/11/01 18:34:47
コンパイラがwwww

34:デフォルトの名無しさん
10/11/01 18:37:26
>>33
すいませんww
visual studio2005です
ベーシックじゃないですw

35:デフォルトの名無しさん
10/11/01 18:50:51
すいません、>>32の補足です。
成績データ入力はテキストファイル(data.txt)入力で、出力はコンソールへお願いします。
nはテキストファイルの中身より求める。
一次元配列にはvectorってのを使うと良いらしいってことです。
data.txtの中身:
10
40
50
90
...
ってな感じでn人分成績があります。

36:32
10/11/01 18:52:32
>>35
お前誰だよ。>>32>>35は別人です。

37:デフォルトの名無しさん
10/11/01 18:59:14
>>36
そういう荒らしを防ぐためにトリップというものがあるので利用してね。

38:デフォルトの名無しさん
10/11/01 18:59:14
>>32
vector やら algorithm はなんとなく控えておきました
やってから思ったが二重ポインタも控えた方がよかったでしょうか?
URLリンク(codepad.org)

39:デフォルトの名無しさん
10/11/01 19:02:13
>>25
ありがとうございます

40:デフォルトの名無しさん
10/11/01 19:18:07
>>27
x=(int)(365.25*y)+(y/400)-(y/100)+(int)(30.59*(m-2))+day-678912;
1,2月は前年の13,14月で計算

41:デフォルトの名無しさん
10/11/01 19:26:52
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下の手順でプログラムを作成せよ
a)実数型配列内の最大値を求める関数MAXを作成(引数は実数型配列とその要素数とし、戻り値は最大値)
b)実数型配列内の最大値の要素番号を返す関数INDEXを作成(引数は実数型配列とその要素数,戻り値は最大値の要素番号)
c)a,bで作成した関数を呼び出して、配列内の最大値・要素番号を求めるプログラムを作成せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年11月1日00:00
[5] その他の制限:最大値の要素番号は0も含む。またsizeof演算子を使用して配列の要素数を求めること

よろしくお願いします

42:デフォルトの名無しさん
10/11/01 19:38:15
MAXとINDEXを別々の関数にするのは二度手間で無駄だからやだなあ

43:デフォルトの名無しさん
10/11/01 19:42:19
>>41
URLリンク(codepad.org)

44:デフォルトの名無しさん
10/11/01 19:49:03
>>38
ありがとうございます。
2重ポインタも使わない感じでお願いしたいです・・・。

45:デフォルトの名無しさん
10/11/01 19:54:07
>>43
ありがとうございます

46:デフォルトの名無しさん
10/11/01 19:57:59
1] 授業単元: プログラミング2
[2] 問題文(含コード&リンク):
二次元平面上のある点はx座標とy座標とで表わされる。(x、yはそれぞれ実行値とする)
また、点a(2.0,3.0)と点b(6.0,5.0)とを考える。このとき次の問題を解くプログラムを作成せよ。
プログラムは全部まとめて1つのプログラムでよい。
1.二次元平面の天を表わす構造体struct pointを定義せよ。
2.点aと点bの中点を求めよ。
3・点aから点bまでの距離を求めよ。
4.点aと点bを結ぶ直線y=px+qのp,qを求めよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C

47:デフォルトの名無しさん
10/11/01 20:12:03
>>46
URLリンク(codepad.org)

48:デフォルトの名無しさん
10/11/01 20:57:57
>>47
感謝です

49:デフォルトの名無しさん
10/11/01 21:54:08
>>44
使って良いのと駄目なの言わないで、あとからこうしてと言うと回答者やる気でないよ
C++でこの問題なら>>32の言うvector、algorithmを使って参照渡しで実現するのが普通
CとC++の区別付いてなくて、実はこれC言語の問題じゃないのか

50:デフォルトの名無しさん
10/11/01 23:10:52
>>49
今更何を言ってるんだ。もう少しROMった方がよいんじゃないか。
C++と記載してある課題の大体7割はCの課題だよ。

51:デフォルトの名無しさん
10/11/01 23:38:43
>>49
この程度のサイズの問題(たかだか30行程度)の書き直しが面倒なのですか?
あと、new したものを delete しないのはお行儀がわるいですね。

52:デフォルトの名無しさん
10/11/01 23:41:37
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
count をもつqueue(待ち行列)を実現せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。





53:デフォルトの名無しさん
10/11/01 23:42:02
>>43
与えられた実数型配列が負の数ばかりだと、最大値が狂います。

54:デフォルトの名無しさん
10/11/01 23:42:53
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
連結リストでqueue(待ち行列)を実現せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。



55:デフォルトの名無しさん
10/11/01 23:43:06
>>51
>>49>>38の回答者じゃないよ
そういうならお前がやってくれたらどう

56:デフォルトの名無しさん
10/11/01 23:46:44
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
連結リストでqueue(待ち行列)を実現せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。




より目立つように協力してあげる

57:デフォルトの名無しさん
10/11/01 23:47:34
>>55
さわるな、そいつは◆QZaw55cn4cだ

58:デフォルトの名無しさん
10/11/01 23:49:55
countって何のカウントだよ

59:デフォルトの名無しさん
10/11/01 23:52:30
infoseek が使えなくなったので、暫定的にアップローダ作りました。
「無料でCGIが使える」条件で探したので、サーバ稼働率は微妙かもしれません。
どこかに乗り換えるにしても、それまでの繋ぎということで。。。

URLリンク(s2.etowns.slyip.net)

60:デフォルトの名無しさん
10/11/02 00:01:09
>>58
これがcountなしの場合です
struct queue {
int *bd;
int hd;
int tl;
int mx;
char *id;
};
void error_id (char *frm, char *id)
{
fprintf(stderr, frm, id);
exit(1);
}
struct queue *newqueue (int maxsize, char *name)
{
struct queue *q;
if ((q = (struct queue *)malloc(sizeof(struct queue))) == NULL)
error_id("malloc for %s\n", name);
if ((q->bd = (int *)malloc(maxsize * sizeof(int))) == NULL)
error_id("malloc for %s's body\n", name);
q->hd = q->tl = 0;
q->mx = maxsize;
q->id = name;
return q;
}

61:デフォルトの名無しさん
10/11/02 00:01:34
>>52
前スレで回答したんだけど、アンカーミスってたから気が付かなかったんだね(当たり前か)
URLリンク(codepad.org)

62:デフォルトの名無しさん
10/11/02 00:09:12
>>61
恐らく先生から配列じゃなく連結リストでやれって言われたんじゃないのかな


63:デフォルトの名無しさん
10/11/02 00:09:54
>>52 と >>54 は別人なんだよな

>>52 count を持つキュー => リングバッファ
>>54 連結リストでキュー => ポインターリンク

と普通は考えるんだが、>>52 が >>60 で示した例だとポインターリンクだ
訳が判らん 

64:デフォルトの名無しさん
10/11/02 00:14:42
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
*********の部分を埋めて双方向リスト(先頭にデータを追加していくを完成させよ。
#include<stdio.h>
#include<stdlib.h>
struct NODE{
int info;
struct NODE *left;
struct NODE *right;
};
main(){
struct NODE *head,*p,*q,*r;
int data;
head=(struct NODE *)malloc(sizeof(struct NODE));
head->left=NULL; head->right=NULL;
while(1){
scanf("%d",&data); if(data<=0){break;}
r=(struct NODE *)malloc(sizeof(struct NODE));
r->info=data; r->left=NULL; r->right=NULL;
*************
*************
*************
*************
}
printf("双方向リスト(先頭から末尾へ):");
q=head->right;
while(q!=NULL){
printf("%d ",q->info); q=q->right;
} printf("\n");}
[3] 環境
 [3.1] OS: unix[3.2] コンパイラ名とバージョン: gcc[3.3] 言語: C
[4] 期限:11月3日

65:デフォルトの名無しさん
10/11/02 00:16:40
[1] 授業単元: プログラミングⅡ
[2] 問題文(含コード&リンク):
下のプログラムを参考にして、次の条件に合うデータを検索するようにプログラムを変更せよ。
1.学生番号の変わりに氏名を入力させ、氏名で検索を行って見つかった学生データを表示させるプログラムを作成せよ。
(ヒント)文字列の検索にはstrcmp(s1,s2)を使うとよい。strcmpは文字列s1と文字列s2を比較し、同じなら0以外の値を返す。
またstrcmpを使用する際には、ヘッダファイル"string.h"をインクルードするのを忘れないこと。
2.学生のうち、成績が最大の学生のデータのを表示させるプログラムを作成せよ。
3.得点を入力させ、成績が入力した得点以上の全ての学生のデータを表示させるプログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c


66:デフォルトの名無しさん
10/11/02 00:18:46
>>63
そうなのか?
自分、>>52>>54は同一人物で、>>52は間違って以前の問題をupしてしまい、
慌てて今回の問題>>54をうpしたと思ったんだが...

age君どうなんだよ!

67:デフォルトの名無しさん
10/11/02 00:19:07
>>63
countなしの例として以下もありました
struct queue *enqueue (int v, struct queue *q)
{
q->bd[q->tl] = v;
q->tl = (q->tl + 1) % q->mx;
if (q->tl == q->hd)
error_id("%s overflows\n", q->id);
return q;
}
int dequeue (struct queue *q)
{
int v = q->bd[q->hd];
if (q->hd == q->tl)
error_id("empty %s is dequeued\n", q->id);
q->hd = (q->hd + 1) % q->mx;
return v;
}
int qsize (struct queue *q)
{
int s = q->tl – q->hd;
if (s < 0)
s += q->mx;
return s;
}

68:65続き
10/11/02 00:19:16

参考プログラム
#include<stdio.h>
#define MAX 20
#define MaxN 30

struct student{
int sid ;
char name[MaxN];
int score;
}typedef Student;

Student St[MAX+1] = {{0,0,0},
{1001,"井上太郎",85},
{1002,"菊池次郎",60},
{1003,"佐々木三郎",70},
{1004,"中村四郎",55},
{1005,"藤井五郎",90},
{1006,"松本六郎",80},
{1007,"山本七郎",70},
{1008,"渡辺八郎",75},
};
int N = 8;

69:68続き
10/11/02 00:20:18
main()
{
int i;
int qid;


while(1){
printf("学生番号は?");
if( scanf("%d",&qid) ==EOF){break;}

i=N;
while(i>0){
if(St[i].sid == qid){break;}
i--;
}
if(i==0){
printf("学生番号%dはありません。\n",qid);
}else{
printf("学生番号=%04d 氏名=%s 得点=%d\n",St[i].sid,St[i].name,St[i].score);
}
}
printf("\n***終了***\n");
}

お願いします

70:デフォルトの名無しさん
10/11/02 00:24:19
>>64
r->right = head->right;
r->left = head;
head->right->left = r;
head->right = r;

71:デフォルトの名無しさん
10/11/02 00:31:16
>>66
両方とも今回出た問題です

72:デフォルトの名無しさん
10/11/02 00:31:19
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):URLリンク(minus-k.com)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年11月04日13:00まで
[5] その他の制限:関数、ポインタは未修

宜しくお願いします。

73:72
10/11/02 00:35:24
1文字を2文字に置き換える知能を持ち合わせておちません・・・
頭の優れた方、宜しくお願いします。

74:デフォルトの名無しさん
10/11/02 00:48:20
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
infix2postfixプログラムの改善案を作れ。
– 空白に関する仮定なし
– エラーチェック
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。




75:74
10/11/02 00:49:04
追記です
infix2postfix プログラム
char c;
for (stackinit(); scanf(“%1c”, &c) != EOF; ) {
if (c == ‘)’)
printf(“%1c”, (char) pop());
if (c == ‘+’)
push((int) c);
if (c == ‘*’)
push((int) c);
while (‘0’ <= c && c <= ‘9’) {
printf(“%1c”, c);
scanf(“%1c”, &c);
}
if (c != ‘(’)
printf(“ ”);
}
printf(“\n”);
仮定:
演算子,被演算子,括弧
は空白で区切られている。

76:デフォルトの名無しさん
10/11/02 00:56:33
>>72
>>73 以外は自分で出来るみたいだからこれで良いよな
string.h が禁止されてる場合は strlen() くらいは自作しろ

void ModefyString( char* src, char* dst, char c, char* new )
{
  int i, len;

  len = strlen( new );
  while( *src ) {
    if( *src == c ) {
      for( i = 0; i < len; i++ )
        *(dst + i) = *(new + i);
      dst += len;
    }
    else {
      *dst = *src;
      dst++;
    }
    src++;
  }
  *dst = 0x00;
}

77:デフォルトの名無しさん
10/11/02 01:00:13
>>76
関数未修って言ってるぞ。

78:デフォルトの名無しさん
10/11/02 01:00:25
>>70
エラーで実行できませんでした。

79:デフォルトの名無しさん
10/11/02 01:04:13
>>70
head->right == NULL のときに、head->right->left は何?

80:デフォルトの名無しさん
10/11/02 01:04:28
>>71
なんとなく理解した
君が参考で出したソースは count を持たないリングバッファのキューだから先に示した回答で >>52 は良いと思う
参考ソースと同様にバッファサイズを可変にする必要があるなら修正が必要だけどね

81:デフォルトの名無しさん
10/11/02 01:04:33
>>70
3行目抜いたら実行できました。

82:デフォルトの名無しさん
10/11/02 01:07:42
>>81
それだと双方向リストになってないと思うよ。

83:70
10/11/02 01:09:47
>>78-79 いけねっ初歩的なミスだ
r->right = head->right; 
r->left = head; 
if( head->right ) head->right->left = r; 
head->right = r;

>>81 駄目な行を抜けば良いって考えは駄目だよ 


84:デフォルトの名無しさん
10/11/02 01:11:14
>>77
そうか、でもまぁ出来る子なら読めば判るでしょ

85:デフォルトの名無しさん
10/11/02 01:22:20
>>84
>>77じゃないが
ポインタも未修になっている
これ、main()と配列アクセスでがんばれってことだと思うが
ポインタ、関数駄目だから意外とやりづらいよ


86:デフォルトの名無しさん
10/11/02 01:32:14
>>72
ポインタ未修を見逃して書き直すハメに

#include <stdio.h>
int main ( void )
{
char string_a[256] ;
char string_b[512]={0} ;
char a ;
char b[3] ;
int ia, ib ;

printf ( "input a string:" ) ;
gets ( string_a ) ;
printf ( "input a char:" ) ;
a = getchar() ;
printf ( "input b char:" ) ;
scanf ( "%2s", b ) ;

for ( ia=0,ib=0 ; string_a[ia]!=0 ; ia++,ib++ ){
if ( string_a[ia]==a ){
string_b[ib] = b[0] ;
string_b[++ib] = b[1] ;
}
else{
string_b[ib] = string_a[ia] ;
}
}
printf ( "input-array is %s\n", string_a ) ;
printf ( "changed-array is %s\n", string_b ) ;
}

87:デフォルトの名無しさん
10/11/02 01:51:47
>>71
>>54 の分も書いたよ
URLリンク(codepad.org)

しかし、参考ソース見ると、C++のコード出して大丈夫かなって気はする
前スレでテンプレートクラスは習ったって書いてあったから書いたけどね

88:デフォルトの名無しさん
10/11/02 01:55:49
>>85
ポインタ使えないと文字列操作は書く気しないなぁ
学校もカリキュラムの組み立てを考えた方が良いと思う

89:デフォルトの名無しさん
10/11/02 02:15:13
>>74
まだ諦めてなかったの?
題意が掴めないから誰も回答できないよ
改善案を作れっていうなら元のソースを完全な形で提示しないと駄目だよ
>>75 中にも欠落している行がある様に思うし(空白に対する処理が無い)

多分、一般式→逆ポーランド式の変換だとは思うけどね

90:デフォルトの名無しさん
10/11/02 04:33:49
過去ログ検索ってもう使えない?

91:デフォルトの名無しさん
10/11/02 04:36:53
それなんて宿題?

92: ◆QZaw55cn4c
10/11/02 06:22:54
呼ばれたようですね。
>>32
>>44
>>38 を参考にさせていただいて、2重ポインタを排除しました。
URLリンク(codepad.org)


93:デフォルトの名無しさん
10/11/02 06:26:11
>>32
>>44
delete を呼ばなくてはならないと指摘されていましたね。訂正いたします。
URLリンク(codepad.org)

94:デフォルトの名無しさん
10/11/02 08:58:20
>>89
>>75 が不完全なところや、実行速度に問題があるから、正しく直せって課題でしょ。
stack 関係のコードがないから、動作検証もできないけどね。

95:デフォルトの名無しさん
10/11/02 09:00:14
>>88
配列操作をすっとばして、ポインタを教えるカリキュラムの方がどうかしてると思うけど。

96:デフォルトの名無しさん
10/11/02 09:01:02
>>92-93
new[]したものを delete []しないのはお行儀がわるいですね。

97:デフォルトの名無しさん
10/11/02 09:07:08
なんで参照にしないんだろう

98:デフォルトの名無しさん
10/11/02 09:32:12
>>95
ほぼ同時に教えるべきモノだと思う、同じモノなんだから
配列を教えた段階で宿題にするならN人の点数を配列に入れて平均出せくらいの問題で良いと思うよ

99:デフォルトの名無しさん
10/11/02 09:33:59
下手に同時に教えると、混乱しやすいと思うが

100:デフォルトの名無しさん
10/11/02 09:37:36
なぜ無意味な問題批判が止まないのか

101:デフォルトの名無しさん
10/11/02 10:40:12
>>98
配列とポインタが同じって考えない方が良いな。
sizeof(a) / sizeof(a[0])
の結果が、a が配列かポインタかで異なることからも明らか。

102:デフォルトの名無しさん
10/11/02 11:24:42
>>101
同じようなモノね、言いたかったのは

>>99
関連性が高いから同時に教えた方が良いと思う
2次元配列と配列へのアドレス配列は異なる事とかポインタを理解していないと教えにくい部分もあるから
ポインタで躓く生徒が多いからカリキュラムの後ろに配置するより、ポインタを理解できなければC言語は
理解できないくらいの思想でカリキュラムを組むべきだと思う


103:デフォルトの名無しさん
10/11/02 11:32:33
>>93
average() に問題ないか?整数値の答えしか返ってこないと思うが

104:デフォルトの名無しさん
10/11/02 11:40:42
(double)が無くなってsumがdouble型になってるな

105:デフォルトの名無しさん
10/11/02 12:11:32
>>102
データ構造としての配列と実装としての配列を一緒に考えることが
正しいかどうかはかなり疑問、まあ学習者のタイプにもよるんだろうけど

106:デフォルトの名無しさん
10/11/02 12:24:38
>>104
sum は double か、被除数が double だと問題ないんだっけっか?
なんか気持ち悪いけど

107:デフォルトの名無しさん
10/11/02 13:59:54
>>102
自分の言いたいことを正しく日本語にしないと、相手には正確に伝わらないよ。
>>98 の書き方では、ほとんどの人があなたのことを誤解するんじゃないかな。

108:デフォルトの名無しさん
10/11/02 18:10:14
>>103,104,106
通常の二項演算子では、被演算数の一方が double のときは、もう一方も double に変換され、結果も double になります。
(Usual arithmetic conversions)

K&R2 付録 A6.5
ISO/IEC 9899:1999 6.3.1.8
ISO/IEC 14882:2003 5.0.9 (としか書きようがないのですけど、こういう場合どうするんでしょうね)

109:デフォルトの名無しさん
10/11/02 19:24:35
>>87
node = new CNode<T>;
if( ! node ) {
cout << "Alloc error, cannot push" << endl;
return 0;
}
で割り当て失敗時にif( ! node )の{...}が実行されることがあるんですか
実行させるためには
node = new(nothrow) CNode<T>;としないといけないんじゃないですか

110:デフォルトの名無しさん
10/11/02 20:04:12
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
生年月日を入力してその曜日を求めるプログラムです。
西暦での入力まではできたのですが、これを西暦年ばかりでなく日本の元年の年数でも利用できるようにしたいです。
URLリンク(codepad.org)
年数の第1文字がCなら西暦年数、
Mなら明治の年数(元年1867)、
Tなら大正の年数(元年1912)、
Sなら昭和の年数(元年1926)、
Hなら平成の年数(元年1989)とする。

例:H22 11 2、あなたの誕生日は、火曜日です。

[3] 環境
 windows xp
 C言語
[4] 期限: 11月5日
[5] その他の制限: 特になし。
よろしくお願いいたします。

111:デフォルトの名無しさん
10/11/02 20:16:59
>>17
ほれほれ、カレンダーの課題が出ましたよ。さあ、どうぞ。

112:デフォルトの名無しさん
10/11/02 20:45:46
>>110
URLリンク(codepad.org)

<stdlib.h> atoi()を使っちゃだめならまた考える

113:112
10/11/02 20:49:43
ごめ
昭和の元年のが間違ってた
1626→1926で

114:デフォルトの名無しさん
10/11/02 20:53:49
>>112
nEra が間違ってないか?
あと、1867, 1911, 1925, 1988 にしておけば、atoi 後の -1 も不要。

115:デフォルトの名無しさん
10/11/02 20:56:46
>>112
ごめん、>>110 がすでに間違えてたのね。
明治元年は1868年だよ。

116:デフォルトの名無しさん
10/11/02 21:02:49
>110
一応atoi使わない版
余り変わらない上に邪道臭いけど…
年号データを最初から-1しとくかどうかはお好みで

#include <stdio.h>

int main()
{
int year, month, day, day_of_week;
int c, y, m, d;

int i ;
char ys[256] ;
char cEra[4] = { 'M', 'T', 'S', 'H' } ;
int nEra[4] = { 1868, 1912, 1926, 1989 } ;

printf("誕生日を入力して下さい=");
gets(ys) ;
sscanf ( ys+1, "%d %d %d",&year, &month, &day);

if ( *ys!='C' ){;
for ( i = 0 ; i < 4 ; i++ ){
if ( *ys==cEra[i] ){
year=nEra[i]+year-1 ;
break ;
}
}
if ( i==4){printf ( "Error\n" );return -1;}// エラーチェックする?
}

// 後は一緒

117:デフォルトの名無しさん
10/11/02 21:07:32
昭和64年とかチェックしないとね

118:デフォルトの名無しさん
10/11/02 21:19:50
えっ

119:デフォルトの名無しさん
10/11/02 22:28:58
やるなら明治5年のグレゴリオ暦採用以前をどうするかってとこか
そんなやつもう生きてないだろうが

120:デフォルトの名無しさん
10/11/02 22:29:28
>>117
ありえない和暦を入れたらNG出さないと駄目だよな
平成1年1月1日
昭和64年12月31日

121:デフォルトの名無しさん
10/11/02 22:37:30
全然問題と関係ないし

122:デフォルトの名無しさん
10/11/02 22:44:53
最近本当に余計な茶々を入れる奴が増えたな
自分では全くプログラムを書かず、人の書いたプログラムを重箱の隅をつつく
ようにしてケチばかり付ける奴

123:デフォルトの名無しさん
10/11/02 22:53:39
>>122
あなた自身のことですね

124:デフォルトの名無しさん
10/11/02 23:11:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
infix2postfixプログラムの改善案を作れ。
– 空白に関する仮定なし
– エラーチェック
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。



125:124
10/11/02 23:12:59
配列による実現(エラーチェックなし)
#define max 100
static int stack[max+1], sp;
stackinit ()
{
sp = -1;
}
push (int v)
{
stack[++sp] = v;
}
int pop()
{
return stack[sp--];
}
int isempty ()
{
return (sp < 0);
}

126:124
10/11/02 23:13:56
配列による実現(エラーチェックあり)
struct stack {
int*bd; /* stack body */
int pt; /* stack pointer */
int mx; /* stack body size */
char *id; /* stack identifier */
};
void error_id (char *frm, char *id)
{
fprintf(stderr, frm, id);
exit(1);
}
struct stack *newstack (int maxsize, char *name)
{
struct stack *s;
if ((s = (struct stack *)malloc(sizeof(struct stack))) == NULL)
error_id("malloc for %s\n", name);
if ((s->bd = (int *)malloc(maxsize * sizeof(int))) == NULL)
error_id("malloc for %s's body\n", name);
s->pt = -1;
s->mx = maxsize;
s->id = name;
return s;
}

127:124
10/11/02 23:15:10
配列による実現(エラーチェックあり)その2
struct stack *push (int v, struct stack *s)
{
if (++(s->pt) >= s->mx)
error_id("%s overflows\n", s->id);
s->bd[s->pt] = v;
return s;
}
int pop (struct stack *s)
{
if (s->pt < 0)
error_id("empty %s is popped\n", s->id);
return s->bd[(s->pt)--];
}
int top (struct stack *s)
{
if (s->pt < 0)
error_id(“empty %s is referred\n”, s->id);
return s->bd[s->pt];
}
int isempty (struct stack *s)
{
return (s->pt < 0);
}

128:デフォルトの名無しさん
10/11/02 23:15:46
>>123
やっぱり言うと思った
お前の事だよカス

129:124
10/11/02 23:16:03
infix2postfixプログラム
char c;
for (stackinit(); scanf(“%1c”, &c) != EOF; ) {
if (c == ‘)’)
printf(“%1c”, (char) pop());
if (c == ‘+’)
push((int) c);
if (c == ‘*’)
push((int) c);
while (‘0’ <= c && c <= ‘9’) {
printf(“%1c”, c);
scanf(“%1c”, &c);
}
if (c != ‘(’)
printf(“ ”);
}
printf(“\n”);
仮定:
演算子,被演算子,括弧
は空白で区切られている。

130:デフォルトの名無しさん
10/11/02 23:52:12
>>129
改善案を作れって具体的に何すりゃいいんだ?

131:124
10/11/02 23:56:51
>>130
エラーをなくしたり、空白に関する仮定なしになるように作ってくだされば
大丈夫だと思います。

132:デフォルトの名無しさん
10/11/03 00:00:22
>>131
それだと問題が「改善せよ」になるんじゃないか?

133:124
10/11/03 00:15:36
>>132
そういうことになります

134:124
10/11/03 00:37:02
誰か出来る人いないでしょうか・・・

135:デフォルトの名無しさん
10/11/03 00:38:16
>>128 自己紹介乙

136:デフォルトの名無しさん
10/11/03 00:42:51
>>96は都合が悪いから無視か、理解できてないのかどっちだろうな

137:デフォルトの名無しさん
10/11/03 01:13:49
>>128
>>127を解いて
カスじゃないところを見せて

138:デフォルトの名無しさん
10/11/03 01:18:52
>>124
じゃなくても良いけど
infix2postfixってstackを用いて何をするプログラム?


139:デフォルトの名無しさん
10/11/03 01:21:03
>>138
関数名から読み取れないの?

140:デフォルトの名無しさん
10/11/03 01:23:28
なんかあまりに美しくないコードすぎて読む気もしないんだが
>>129は「演算子,被演算子,括弧は空白で区切られているのを仮定してる」ので
これを空白で区切られてなくてもOKにしてエラーチェックすれば良いってこと?

141:デフォルトの名無しさん
10/11/03 01:26:08
>>139
うん

142:デフォルトの名無しさん
10/11/03 01:28:23
>>141
中置記法から逆ポーランド記法への変換関数。

143:124
10/11/03 01:28:24
>>140
そうです。よろしくお願いします。

144:デフォルトの名無しさん
10/11/03 01:34:03
>>142
私には理解不能の言葉がでて><ですが、どうもです。

145:デフォルトの名無しさん
10/11/03 01:38:26
>>144
すごく簡単に言えば、「1 + 2」 → 「1 2 +」ってこと。
詳しくは wikipedia とかで勉強してください。

146:124
10/11/03 02:09:11
期限が今日の12時までなので誰か分かる方がいたらよろしくお願いします。

147:デフォルトの名無しさん
10/11/03 02:28:00
>>109
まぁそうだけど、malloc() のエラーなら強制終了しても問題ないじゃん
...というか、そこまで考えて書いてなかったよ

148:デフォルトの名無しさん
10/11/03 02:44:13
>>124
まぁ諦めろ、後から小出しで情報を追加する態度も良くないし

>>125 がエラーチェックなしで >>126-127 がエラーチェックありだって?
両者の本質的な差はそんな事ではないよ
大方、手元にあったプリントかなんかを打ち込んで適当にコメント付けたんだろ

多分、講義の中で使った例題を基とした出題なんだろうと思う
どんな問題を出されたかも把握できない状態なら単位を落とした方が君の為だ

149:デフォルトの名無しさん
10/11/03 03:55:21
一応、>>129 を動く様にはしてみた
URLリンク(codepad.org)
けど、これで正しいのかも知らんし、改善されているかどうかも知らん
一ついえるのは >>129 はまともに動くコードでは無かったと言う事
参考ソースを寄せ集めた経緯を詳しく述べよ

150:デフォルトの名無しさん
10/11/03 04:37:44
>>124
俺も問題がわかんね
とりあえず>>126-127を使って>>142をやった
標準入力から読み取る場合はgets()で
>>129は読んでない
質問の意味が違うならもう知らない、コードが汚いのも知らない

URLリンク(codepad.org)

151:デフォルトの名無しさん
10/11/03 05:06:59
[1] 授業単元:プログラミング C++
[2] 問題文(含コード&リンク):
文章を標準入力ストリームから単語ごとに読み, その単語がはじめて単語であれば listに加え出現回数を1とする.
既に出現した単語ならリスト最後に単語をアルファベット順にソートし,出力するプログラムを作成せよ.
ただし以下の点に注意せよ:
文章の最初は大文字で始まるが(例えば"The"), これはすべて小文字(the)に変換せよ.
文章の最後や切目にはピリオド「.」やカンマ「,」がつくが, これは単語には加えない.
同様に単語さらに単語先頭と末尾のカッコ「(」「)」も単語には加えない.
先頭と末尾のシングルクォーテーションやダブルクォーテーション 「'」「"」も単語には加えない.
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:11月7日まで

よろしくおねがいします


152:デフォルトの名無しさん
10/11/03 05:13:03
>>151
[5] その他の制限
を書いてください

153:デフォルトの名無しさん
10/11/03 05:20:11
>>96,136
ご指摘ありがとうございます。
>>32
>>44
遅くなりましたが、訂正します。
URLリンク(codepad.org)


154:デフォルトの名無しさん
10/11/03 05:23:09
>>152
[5] その他の制限
特にないですけれども
今回の講義の内容はlist型と反復子(イテレータ, iterator)でした

155:デフォルトの名無しさん
10/11/03 05:33:07
>>154
std::string使ってもいいの?

156:デフォルトの名無しさん
10/11/03 05:39:14
>>155
はい問題文の条件を満たしていれば何であってもいいです

157:デフォルトの名無しさん
10/11/03 05:42:53
それ以前に>>151の問題文は所々日本語がおかしすぎるw
もう少し落ち着いてこれで他人に通じるかどうか見直した方がいいんじゃないか?

158:デフォルトの名無しさん
10/11/03 06:13:35
>>157
でもこれが原文なんですぅ
どこがおかしいですか?

159:デフォルトの名無しさん
10/11/03 06:29:21
>>151
質問
1)最後にアルファベット順に出力とは
a 15
an 14
apple 4
be 17
みたいな感じかな?

2)can't みたいな単語はどうするの?「'」 が先頭や末尾ではないから有効な単語と考えると少し難しいね

160:デフォルトの名無しさん
10/11/03 06:36:04
>>159
1)
はいそうです
2)
can'tで1つの単語としてください

161:デフォルトの名無しさん
10/11/03 08:48:46
>>151
CとC++混在でアレなコードだけど一応動くと思う(細かいチェックはしてないからテストはした方が良い)
入力終了の条件が記されてないので、空行入力とEOFで終了する様に書いた
URLリンク(codepad.org)

std::list は初めて使ったから面白かったよ

162:161
10/11/03 08:57:04
20行目間違ってるな
if( *s >= 'A' && *s <= 'Z' )
に直しとけ

163:デフォルトの名無しさん
10/11/03 09:37:44
>>161-162
ありがとうございます
助かりました!

164:デフォルトの名無しさん
10/11/03 10:45:04
>>163
テストしろよな、俺は大雑把なテストしかしてないから穴が有る可能性は高い

165:デフォルトの名無しさん
10/11/03 14:48:19
まぁこんな場所でムキになっているあんた、C言語を何の為にやっているか
人生の目的なのか?金儲けの為なのか?授業で単位を取るだけなのか?
どちらにせよ、俺ら人間はどうせいつかは死ぬ生物だから
マターリいこうや?死ぬときの遺影とか墓のことも考えておけよ。

166:デフォルトの名無しさん
10/11/03 14:51:28
誰と戦ってるの?

167:デフォルトの名無しさん
10/11/03 15:48:09
過ぎ去り、二度と戻れない、そしていつか死ぬその日に向かって
生きられる時間が刻一刻と失われている、その時空と戦っているのさ。
しかし戦っても無駄。いつ自分が死ぬかなんて分からないが
必ずその日は来る。来たその後は自分はこの世に存在しない。
しかし、これからもC言語やコンピュータは人間の生活で使われていく。

168:デフォルトの名無しさん
10/11/03 15:55:04
【質問テンプレ】
[1] 授業単元:プログラミング設計演習Ⅱ
[2] 問題文(含コード&リンク):
0 から 9 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力して終了するプログラムを作成してください。
n 個の数はおのおの 0 から 9 までとし、1つの組み合わせに同じ数字は使えません。
たとえば、n が 3 で s が6 のとき、3 個の数字の合計が 6 になる組み合わせは、
1 + 2 + 3 = 6
0 + 1 + 5 = 6
0 + 2 + 4 = 6
の 3 通りとなります。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++2010
 [3.3] 言語: C++
[4] 期限: 2010/11/5 13:00
[5] その他の制限:

169:デフォルトの名無しさん
10/11/03 16:41:02
>>151
・ listに加え出現回数を1 の意図不明。
・ 既に出現した単語ならリスト最後に単語を ...,出力する も意味不明。
素直に読むと index を idenx に変換してリストの最後に出力(付加する?) の意味に読み取れる。

170:169
10/11/03 16:42:34
失礼、 deinx でした・・・

171:デフォルトの名無しさん
10/11/03 17:15:53
>>168
面白い問題だね、力技で解いたけどもっとエレガントなやり方がありそうだ

URLリンク(codepad.org)

172:デフォルトの名無しさん
10/11/03 17:27:26
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):
 typedef struct{char name[256]; unsigned char sex; unsigned char age;} PERSONAL_DATA
上記の構造体PERSONAL_DATA型の配列(要素数n)に格納された
n人の名前・性別・年齢のデータの中から同じ年齢の2人組の名前を全て表示せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: C++
[4] 期限: ([2010年11月6日まで] または [無期限] のいずれか)
[5] その他の制限: 特に無し

自分でも考えてみたのですが、まず性別・年齢がunsigned char型の意味が、
そして年齢比較のアルゴリズムも、もう一つ構造体を定義して比較すれば良いのかが分かりません。
どうぞよろしくお願いします。

173:デフォルトの名無しさん
10/11/03 17:40:24
>>172
0~255の数字を表現するのには unsigned char で十分だから int の代わりに使ってるだけだよ
今時、メモリを節約する必要はあんまり無いから奇異に写るかもしれないけど昔は普通だった
FF7のパラメータ最大値が255なのはそんな理由だ

同じ年齢の二人組の意味が良くわからないな
同じ年齢のA、B、Cが居た場合、組み合わせ別に表示しろって事?

174:デフォルトの名無しさん
10/11/03 17:40:27
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):リストを先頭から順に調べて和を求める
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 2010年11月3日
[5] その他の制限: 特になし

考えてみたのですが、うまくできず困っています。
よろしくお願いします。

175:デフォルトの名無しさん
10/11/03 17:52:31
>>172
>同じ年齢の2人組
のところをもう少し詳しく
そのデータの中には同じ年齢の人が2人しかいないの?
それとも例えば4人いたら6通りの2人組みが出来るわけだけどそれら全てを表示するの?

176:デフォルトの名無しさん
10/11/03 18:34:04
>>174
リストってなんのリストだよ
データ構造ってことは線形リストの類だとは思うけどそっから作るのか

177:デフォルトの名無しさん
10/11/03 18:46:05
>>173 >>175
早速の返信ありがとうございます。
unsigned charについては納得です。
同じ年齢の2人組について、出題プリントにはこれ以上書かれていませんが、
おそらくはnを各自に設定して、配列の要素をscanf等から取り込んだ後、
>>175さんの仰る通り、4人いたら重複しない6通りの2人組を画面に出力せよということだと思います。

178:110
10/11/03 21:19:57
ありがとうございました。
無事できました。

179:デフォルトの名無しさん
10/11/03 21:27:12
あとは、ここも見てみるといい
URLリンク(studiokingyo.fc2web.com)

180:デフォルトの名無しさん
10/11/03 22:01:10
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文 ************を埋めて昇順にデータを保存する双方向リストを作成
#include<stdio.h>
#include<stdlib.h>
struct NODE{
int info;
struct NODE *left;
struct NODE *right; };
main(){
struct NODE *head,*p,*q,*r,*s; int data;
head=(struct NODE *)malloc(sizeof(struct NODE));
head->left=NULL; head->right=NULL;
while(1){
scanf("%d",&data); if(data<=0){break;}
r=(struct NODE *)malloc(sizeof(struct NODE));
r->info=data; r->left=NULL; r->right=NULL;
p=head->right; q=head;
while(p!=NULL){
if(p->info > r->info){
****************
}
*************
}
********* }
printf("双方向リスト(先頭から末尾へ):");
s=head->right;
while(s!=NULL){
printf("%d ",s->info); s=s->right;
} printf("\n");}
[3] 環境 Linux gcc 言語 C
また、よろしくお願いします。

181:デフォルトの名無しさん
10/11/03 22:23:10
前から思ってたけどこの双方向リストのleftとrightって
中身を読まないとどっちが前から分からないセンスの無さがイラっとくる
先生に突っ込んであげた方がいいんじゃないの?

182:デフォルトの名無しさん
10/11/03 22:25:59
左が前だろ

183:デフォルトの名無しさん
10/11/03 22:27:57
>>181
「どっちが前から分からない」
あなたは日本語のセンスがないみたい。

184:デフォルトの名無しさん
10/11/03 22:30:45
普通はprev/nextだな
left/rightとかかれると「んん?二分木か?」と思ってしまう

185:デフォルトの名無しさん
10/11/03 22:48:42
日本人なら右が前ですよね

186:デフォルトの名無しさん
10/11/03 22:59:24
左前って不吉だなw

187:デフォルトの名無しさん
10/11/03 23:25:11
錠前は堅いです!

188: ◆QZaw55cn4c
10/11/04 00:24:22
>>180
URLリンク(codepad.org)

189:デフォルトの名無しさん
10/11/04 02:47:30
>>171
ありがとうございます

190:デフォルトの名無しさん
10/11/04 03:00:51
>>171 C++じゃねぇ~~~

191:デフォルトの名無しさん
10/11/04 03:19:03
>>172
力技だけど世の中こんなもん、入力部分は自分で書いてね

URLリンク(codepad.org)

192:デフォルトの名無しさん
10/11/04 03:21:31
>>176
線形リストの話です。すみません。説明不足で….

193:デフォルトの名無しさん
10/11/04 03:30:10
>>176 の補足です。
線形リストで
ヒントで
int sum_list(Cell *p){
sum = 0;
while(p!=NULL){
データを足しこむ;
p = p->next;
}
合計を返す;
}

をもらいました。

194:デフォルトの名無しさん
10/11/04 03:31:52
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
縦の長さがheight、横の長さがwidthのマス目で構成された盤面があります。
このマス目の中に適当に石を置きます。
この時、石を入れたマス目の中心の距離がちょうど2マス分だけ離れたマスに石を置くことはできません。
このルールに従うとき、この盤面に最大いくつの石を置くことができるでしょうか?
ただし、height、widthともに取れる値は1から1000とする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2010年11月8日
[5] その他の制限: 特になし

195:デフォルトの名無しさん
10/11/04 04:26:20
>>194
斜めの扱いは?

196:デフォルトの名無しさん
10/11/04 04:31:37
[1] 授業単元:プログラミング(1)
[2] 問題文(含コード&リンク):
0000000000
0000000001
0000000010
0000000011
0000000100
~中略~
1111111110
1111111111
上記のように10進数の0~1023の数字を順に2進数で出力するプログラムを書け

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/7 18時
[5] その他の制限:
特にありませんが現在if文やfor文を学んでいるというレベルなので
出来るだけ簡単な文で書いてもらえると有難いです。



197:196 ◆WNoHkQXuFw
10/11/04 04:34:21
連投すみません

[1] 授業単元:プログラミング(1)
[2] 問題文(含コード&リンク):
1~1000までの整数のうち「3の倍数と3の付く数字」の
総和を求めるプログラムを書け

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/7 18時
[5] その他の制限:
特にありませんが現在if文やfor文を学んでいるというレベルなので
出来るだけ簡単な文で書いてもらえると有難いです。

198:デフォルトの名無しさん
10/11/04 04:37:46
>>196-197
関数って習ってる?

199:196 ◆WNoHkQXuFw
10/11/04 05:00:06
>>198
ぐぐってみましたが多分やってないと思います

200:デフォルトの名無しさん
10/11/04 05:03:23
>>199
じゃあこんなもんでどうよ
なんかみすってたら言って
URLリンク(codepad.org)
URLリンク(codepad.org)

201:196 ◆WNoHkQXuFw
10/11/04 05:08:42
>>200
putcharだけ習っていませんがこれなら理解出来そうです
深夜なのに即レスありがとうございます!

202:デフォルトの名無しさん
10/11/04 05:12:06
>>193
それヒントっちゅうより答えだろ、Cell の構造が示されてないから
typedef struct _cell { 
 int data; 
 struct _cell* next;
} Cell;
だと仮定すると

データを足しこむ→ sum += p->data;
合計を返す→ return sum;

だぉ

203:デフォルトの名無しさん
10/11/04 05:15:47
>>196
#include <stdio.h>

int main(void)
{
int i;
char str[11] = {0};

for(i = 0; i < 10; i++) str[i] = '0';

do {
printf("%s\n", str);
for(i = 9; (str[i] = '1' + '0' - str[i]) == '0';) if(--i < 0) break;
}while(i >= 0);

return 0;
}

204:デフォルトの名無しさん
10/11/04 05:18:15
ああ、今気づいたけどナベアツネタなのか
全然気づかんかんた

205:デフォルトの名無しさん
10/11/04 05:47:08
>>203
ソレだと0からになるだろ

206:デフォルトの名無しさん
10/11/04 05:49:12
>>205
0から始まってるのが見えない盲が何か言ってるよw

207:デフォルトの名無しさん
10/11/04 05:58:41
>>206
ああ悪い;;
問題読まずに>>200だけ読んでたから間違えた
文句は>>200にいってくれ

208:デフォルトの名無しさん
10/11/04 05:59:44
>>196
ちょっと短くしてみた
#include <stdio.h>

int main(void)
{
int i;
char str[11] = "0000000000";

while(1) {
printf("%s\n", str);
for(i = 9; (str[i] ^= 1) == '0'; ) if(--i < 0) return 0;
}}


209:194
10/11/04 06:46:21
>>195
斜めは考慮にいれません。
あくまで縦方向、横方向のみ2マス離れた先に石が置けないルールです。

210:デフォルトの名無しさん
10/11/04 06:56:03
○○  ○○
○○  ○○
  ○○
  ○○
○○  ○○
○○  ○○
って風に置いてくのか?

211:194
10/11/04 07:01:28
>>210
その形が恐らく最大に石が置けるケースだと思います。

212:デフォルトの名無しさん
10/11/04 07:02:23
>>204
それだと5の倍数でも何かしなければならないよ

213:デフォルトの名無しさん
10/11/04 08:36:33
>>188
条件文などなしでもっとコンパクトに書けると言われました。

214:デフォルトの名無しさん
10/11/04 09:05:11
本当にそれだけ言われたんなら先生節穴すぎだろwwww

215:デフォルトの名無しさん
10/11/04 09:15:07
>>214
穴埋め問題で、埋めた箇所以外で指摘されるわけないだろ。

216:デフォルトの名無しさん
10/11/04 09:23:42
>>214
2番目の穴埋めで、リストの後ろとだけ双方向に繋げて
3番目の穴埋めで、リストの前と双方向に繋げば、条件文はいらなくなるね。

217:デフォルトの名無しさん
10/11/04 09:25:05
>>215
なに勘違いしてんだ?
結果がだめなんだがそれの指摘はいいんだろうかと

218:デフォルトの名無しさん
10/11/04 10:06:07
[1] 授業単元:コンピュータプログラミング
[2] 問題文(含コード&リンク):
以下のアルゴリズムを使用しプログラムを作成せよ
<プログラム概要>
・256文字以内で文字列を入力させる
※半角文字のみで可。入力制御不要
・画面に入力された文字列を表示
文字列を前・後(中央折り返し)で反転
※シーゲンゴゴーゲンシ
※ジュギョウウョギュジ
・入力文字列と反転後の文字列を表示

<アルゴリズム>
①データ入力用と文字配列を宣言
②入力用と出力用の文字列を宣言
③文字列は文字列操作関数を使用
④出力用文字配列の先頭アドレスをポインタに設定
⑤最終文字一の中身を出力用文字配列の現在位置に代入
⑥以降、入力用は前方向、出力用は後方へポインタをずらす
⑦出力用配列の最終位置へ文字列終端子を代入
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VS
 [3.3] 言語: C
[4] 期限: 13:00まで

長文スイマセンお願いいたします

219:デフォルトの名無しさん
10/11/04 10:20:23
ってことは、こことかどうかな
URLリンク(studiokingyo.fc2web.com)
有名な高度情報だゆ

220:218
10/11/04 10:41:12
修正します

>『画面に~文字列』を
文字数

>>219
誤爆ですか?

221:デフォルトの名無しさん
10/11/04 10:43:40
>>217
ああ、すまん。結果が昇順じゃなくて降順になってるな。
他人のコードをコピペして実行するほど暇じゃなくて気づかなかったよ。

222:デフォルトの名無しさん
10/11/04 10:44:45
>>213
***になってる近辺だけ書くとこうかな

p=head->right; q=head; 
while(p!=NULL){ 
  if(p->info > r->info){ 
    r->right = p; p->left = r; break; //***
  } 
  q = p; p = q->right; //*** 
} 
q->right = r; r->left = q; //***


223:デフォルトの名無しさん
10/11/04 10:46:46
>>194
計算でごり押し
正直前後の授業が分からないと質問の意図を測りかねる問題です
配列とかで地道にやれって問題なのかとも思ったけど

URLリンク(codepad.org)

224:デフォルトの名無しさん
10/11/04 10:50:31
>>202
ありがとうございます><

225:デフォルトの名無しさん
10/11/04 10:53:49
>>218
駄目だ理解できねぇ、特にアルゴリズムが訳わかんね....

ABC[return] ←入力
3 ←文字数出力
ABCCBA ←入力と反転を出力

こんなイメージか?でも訳わかんねアルゴリズムに則って書くのは無理っぽいな

226:218
10/11/04 10:56:42
>>225
画面は、多分それで合ってます

227:デフォルトの名無しさん
10/11/04 11:09:53
>>225
文字数の出力って書いてあった?

228:デフォルトの名無しさん
10/11/04 11:11:23
>>227
>>220

229:デフォルトの名無しさん
10/11/04 11:20:13
>>218
なんか泥臭いけど
こういうことをやらせたいのかなぁ?

URLリンク(codepad.org)

230:218
10/11/04 11:33:21
>>229
ありがとうございます

ただ、エラーが起きました
URLリンク(www.dotup.org)

でも、なんとなくイメージはわかりました

231:デフォルトの名無しさん
10/11/04 11:34:36
>>230
てか、それって最後の}をコピペミスしただけじゃ・・・

232:218
10/11/04 11:38:17
>>231
すいませんそうでした

ありがとうございました
これで、何とか提出用のソースはできたので
授業ギリギリまで、自力でどこまで出来るかやってみます

打ち切ります

233:デフォルトの名無しさん
10/11/04 11:51:00
>>229
アルゴリズムの 4, 5 を満たしてない気がする。
出力用文字列の先頭が入力の最終文字だから、単に入力の反転だけ作るだけかな。
最後に、入力用の文字配列と出力用の文字配列を続けて出力。

234:デフォルトの名無しさん
10/11/04 12:17:25
よく読めよ

235:188
10/11/04 12:29:22
>>216
>>222
なるほど、うまいですね。

236:デフォルトの名無しさん
10/11/04 18:02:19
C++の宿題なのですが、
さっぱり手が出なくて困ってます
どなたか手を貸していただけないでしょうか

キーボードから入力された正の整数xに対して、
2^n < x を満たす最も大きな整数nを求めるプログラムをwhile分を用いて書きなさい

というものなのですが…

237:デフォルトの名無しさん
10/11/04 18:06:22
>>236
>>1

238:デフォルトの名無しさん
10/11/04 18:08:05
>>236
すいません、テンプレでも書いておきます

[1] 授業単元:情報
[2] 問題文(含コード&リンク):キーボードから入力された正の整数xに対して、2^n < x を満たす最も大きな整数nを求めるプログラムをwhile分を用いて書きなさい
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Cygwin
 [3.3] 言語: C++
[4] 期限: 11/9
[5] その他の制限:特になし

239:デフォルトの名無しさん
10/11/04 18:25:05
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):文字列の入出力をサブルーチンとして実行する
プログラムを作成せよ。ただし、文字列の入力は複数回行うことができ、
1回入力するたびに入力した文字列を標準出力へ出力すること。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと。

連投しますが、よろしくお願いします。

240:デフォルトの名無しさん
10/11/04 18:28:47
>>239
文字列入力の終了条件は?

241:デフォルトの名無しさん
10/11/04 18:30:37
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):要素数が6つの配列を用意する。
その要素1,2に数値を代入し、配列の先頭アドレスを関数に渡し、
関数内で四則演算を行い、main関数内で結果を表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと。

242:デフォルトの名無しさん
10/11/04 18:32:12
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):文字列ポインタを戻り値とする関数を使用する
プログラムを作成せよ。その他の処理は各自実装すること。ただし、戻り値を
処理内容に含むこと。

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと

243:デフォルトの名無しさん
10/11/04 18:33:58
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):関数の再帰呼び出しを用いて、
入力した数値の階乗を求めるプログラムを作成せよ。
また、再帰呼び出しをしない場合のプログラムも作成せよ。



[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと

以上、よろしくお願いします。

244:デフォルトの名無しさん
10/11/04 18:35:22
[1] 授業単元:プログラミング演習B
[2] 問題文(含コード&リンク):二つのフォームを作成し、フォーム2で設定したパラメータを
フォーム1に反映させよ。
フォーム1にはこれまでやったOpenGLでのオブジェクトを描画し、フォーム2はフォーム1のオブジェクト色を変えるようにすること
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Borland C++Builder
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:OpenGLを使うこと

245:デフォルトの名無しさん
10/11/04 18:36:10
>>241
#include <stdio.h>

int func(int* array)
{
  return 1+2;
}

int main(void){
  int array[6];
  array[1] = 10;
  array[2] = 20;

  printf("%d\n", func(array));
  return 0;
}


246:デフォルトの名無しさん
10/11/04 18:38:46
>>242
#include <stdio.h>

char* func(void)
{
  return "fuck you!!";
}

int main(void){
  printf("%s\n", func());
  return 0;
}

247:デフォルトの名無しさん
10/11/04 18:40:44
>>242
文字列ポインタってなに?

248:デフォルトの名無しさん
10/11/04 18:42:45
>>243
#include <stdio.h>

int saiki(int num)
{
  if(num == 1){
    return 1;
  }
  else{
    return num * saiki(num-1);
  }
}

int no_saiki(int num)
{
  int result = 1;
  int i;
  for(i=0; i<num; i++){
    result *= (num-i);
  }
  return result;
}

int main(void){
  printf("%d, %d\n", saiki(5), no_saiki(5));
  return 0;
}

249:デフォルトの名無しさん
10/11/04 18:43:29
>>244
「これまでやったOpenGLでのオブジェクト」ってのはどこだよ

250:デフォルトの名無しさん
10/11/04 19:22:27
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):正の整数をキーボードから入力し、1からその整数までの和を計算し、出力するプログラムを組みなさい
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C++
[4] 期限:11/5

制約は特にないです
よろしくお願いします

251:デフォルトの名無しさん
10/11/04 19:59:44
>>240
終了条件は各自工夫すること
となっています。
>>245 ,>>246 , >>248
ありがとうございます。

252: ◆QZaw55cn4c
10/11/04 20:38:30
>>241
URLリンク(codepad.org)

253: ◆QZaw55cn4c
10/11/04 20:46:57
>>250
URLリンク(codepad.org)

254:デフォルトの名無しさん
10/11/04 20:55:26
もう我慢できなくなったのか

255:デフォルトの名無しさん
10/11/04 21:16:09
[1]プログラミング演習
[2]真分数を入力して、小数点以下20桁までの小数を表示するプログラムを作成してください。
ただし、分子と分母をそれぞれ引数として、小数表示を実現する処理は浮動小数点演算を使用しない関数
void to_float(int a, int b)として実現すること。
実行例
分子:1
分母:7
0.14285714285714285714
[3]
 [3.1] windows
 [3.2] visualstdio2010
 [3.3] C言語
[4] 2010/11/7
[5] 関数までです。循環小数を使用しない方法が望ましいと言われました。
ただ、循環小数でもできるならそれでいいとのことです。お願いします。


256:デフォルトの名無しさん
10/11/04 21:17:47
>>250
URLリンク(codepad.org)

257:デフォルトの名無しさん
10/11/04 21:41:18
>>255
#include <stdio.h>

int main(void){
  int bunsi, bunbo, counter;
  int flag_first_time = 1;
  printf("bunsi:"); scanf("%d", &bunsi);
  printf("bunbo:"); scanf("%d", &bunbo);

  while(1)
  {
    if(bunsi < bunbo){
      bunsi *= 10;
      printf("0");
      if(flag_first_time){
        flag_first_time = 0;
        printf(".");
      }
    }
    else{
      printf("%d", bunsi / bunbo);
      bunsi %= bunbo;
      bunsi *= 10;
    }
    if(20 < ++counter){
      break;
    }
  }
  return 0;
}


258:デフォルトの名無しさん
10/11/04 21:54:12
>>255
あれ、一桁ずつ表示するんだったか・・・

URLリンク(codepad.org)

259:デフォルトの名無しさん
10/11/04 21:57:54
>>239
お願いします

追加で
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):文字列ポインタを引数として渡し、
戻り値として文字列ポインタをセットする関数を使うプログラムを作成せよ。
その他処理は、各自で実装すること。ただし、戻り値を処理内容に含むこと。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと


こちらもお願いします。

260:デフォルトの名無しさん
10/11/04 22:01:21
>>258
>[2]真分数を入力して
ってあるから、オーバースペックかも

261:デフォルトの名無しさん
10/11/04 22:20:55
>>239
URLリンク(codepad.org)
Ctrl+Zを入力で終了

入力・出力のワンセットでサブルーチンにするのか
ループするところまで含めてサブルーチンにするのかよく分からん
ふさわしいと思うほうで

262:デフォルトの名無しさん
10/11/04 22:23:16
>>259
問題の意味がよく分からんな。
char* func(char* p) { return p; }
こんな関数を使うプログラムを作成してもOKなのかな。

263:デフォルトの名無しさん
10/11/04 22:27:00
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
スタックを利用して、与えられたnに関するFarey数列の要素数を求めるプログラムを完成させよ。
#include <stdio.h>
#include <stdlib.h>
#define MAX 100000
main(){
int count,n,top,x[MAX],y[MAX],w;
scanf("%d",&n);
x[0]=0; y[0]=1;
x[1]=1; y[1]=1;
count=2;
top=2;
while(top>1){



}
printf("%dに関するFarey数の個数:%d\n",n,count);}
[3] 環境
 [3.1] OS:unix [3.2] コンパイラ名:gcc [3.3] 言語: C

264:デフォルトの名無しさん
10/11/04 22:27:25
合計の関数あたりが無難じゃね?

265:デフォルトの名無しさん
10/11/04 22:29:50
>>259
問題がイミフすぎる
適当だけど流れ的にこうなのだろうか?

URLリンク(codepad.org)

266:デフォルトの名無しさん
10/11/04 22:31:14
>>263
そのソースは問題文の一部なの?
それとも君が考えたもの?
問題文の一部ならそんな単位落としていい。

267:デフォルトの名無しさん
10/11/04 22:38:05
>>263
要素数だけなら、単純にループ回しながら最大公約数見るだけで十分な気が

268:デフォルトの名無しさん
10/11/04 23:05:22
[1] 授業単元:コンピュータ工学
[2] 問題文(含コード&リンク):
構造体配列のhairetu x[10]という名前の入れ物の
すべてに0と1を入れるプログラムを作成せよ。
ただし、ポインタの扱いで動作させるものとする。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio
 [3.3] 言語:C
[4] 期限:明日の午前中までです。
[5] その他の制限:ありませんが、できればソースコードは文字数が少なくて
シンプルなものを作っていただけるとありがたいです

269:デフォルトの名無しさん
10/11/04 23:20:11
>>268
構造体の中身がどうなっててどこに0と1を入れるのか不明
勝手に構造体作っていいのか?

270:デフォルトの名無しさん
10/11/04 23:25:24
構造体が配列なのか
配列のメンバを持つ構造体なのかよくわからんな
どっちにしても0と1をどう入れるんだって話だが

271:デフォルトの名無しさん
10/11/04 23:26:33
>>268
>>269-270 そう思いますよね。
#include <stdio.h>
struct nakami
{
int zero;
int one;
} zero_one = { 0, 1};

struct nakami hairetsu[10];

int main()
{
int i;
for( i = 0; i != 10; i++ ){
*(hairetsu + i) = zero_one;
printf("%d: %d, %d\n", i , hairetsu[0].zero, hairetsu[0].one );
}
return 0;
}

272:デフォルトの名無しさん
10/11/04 23:28:20
printf("%d: %d, %d\n", i , hairetsu[i].zero, hairetsu[i].one );
だorz

273:デフォルトの名無しさん
10/11/04 23:29:55
>>255 >>258
御回答ありがとうございます。
>>255だとエラーになってしまいましたが>>258の方は完璧でした。
助かりました有難うございます。

274:デフォルトの名無しさん
10/11/05 00:20:11
>>263
URLリンク(codepad.org)
並び替えとか無しで本当に数をカウントするだけ

変数名が変だとかもうちょっとマシな方法があるだろうとか
色々目をつぶって可能な限り元ソースを再利用

275:デフォルトの名無しさん
10/11/05 01:56:01
>>266
空行の部分の穴埋め問題で、それで全文です。
提出はしないので単位には関係ありませんが、答えが気になったので。

276:デフォルトの名無しさん
10/11/05 02:01:10
【Yahooニュース:尖閣ビデオ流出か ユーチューブに投稿 「恐らく本物」と海保関係者】
URLリンク(headlines.yahoo.co.jp)

問題の動画です。
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)

隠せなくするために早期拡散しましょう

277:デフォルトの名無しさん
10/11/05 05:38:07
>>191
172です。mallocなんて関数があったんですね。
strcpyで逐次代入するより断然便利です。
どうもありがとうございました。

278:デフォルトの名無しさん
10/11/05 06:43:04
>>263
こんな大きな配列を自動変数で取るように教えるってどうかなと思う。
大丈夫な環境でやってるんだろうけど。

279:デフォルトの名無しさん
10/11/05 07:22:36
たったの80MBじゃん
まさかただの課題プログラムに対して可搬性とか言い出すのか

280:デフォルトの名無しさん
10/11/05 07:26:38
そういうつまらない突込みをするのは◆QZaw55cn4cしかいない

281:デフォルトの名無しさん
10/11/05 07:41:02
なんだこいつ

282:デフォルトの名無しさん
10/11/05 08:05:05
麻ー呂っくを使うなんて、粋な計らいでおじゃる。

283:191
10/11/05 08:42:19
>>277
ゴメン、何を言ってるのか全然わかんない (?_?)
アンカーが全て間違っている事を切に望む

284:デフォルトの名無しさん
10/11/05 09:10:33
どなたか>>238をお願いします…

285:デフォルトの名無しさん
10/11/05 09:25:13
>>238
#include <stdio.h>
int main(void) {
int x;
int n;
if (scanf("%d", &x) != 1 || x <= 0) {
printf("正の整数を入力してください\n");
return 0;
}
n = 0;
while (n < 31) {
if (x <= (1<<n)) {
printf("%d\n", n - 1);
return 0;
}
n++;
}
printf("%d\n", n - 1);
return 0;
}

286:デフォルトの名無しさん
10/11/05 10:03:42
>>238
掛けずに割って見た
URLリンク(codepad.org)

287:デフォルトの名無しさん
10/11/05 10:10:11
>>238
#include <stdio.h>

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

scanf("%d", &x);

while(1) {
i <<= 1;
if(i >= x) break;
n++;
}

printf("2^%d < %d\n", n, x);

return 0;
}

288:デフォルトの名無しさん
10/11/05 12:06:38
while(1)をbreakしてるのみるとforでやれと思ってしまう

289:デフォルトの名無しさん
10/11/05 12:10:56
n++の前でbreakすることに意味があるんだから、forにしてもなw

290:デフォルトの名無しさん
10/11/05 12:23:06
whileでやるなら
breakする意味が無いだろお馬鹿さん

while((i<<=1)<x) {
n++;
}

291:デフォルトの名無しさん
10/11/05 12:27:22
それなら最初からそう書いたら?
forとか言わないでw

292:デフォルトの名無しさん
10/11/05 12:28:51
ぷぷぷ

293:デフォルトの名無しさん
10/11/05 12:28:59
>>290
それは while のなかでいわば複文を書いているだけなのでは。
(i<<=1) のように短ければいいものの、この部分が長大なものになると、for(初期化;;) { 前処理; if()break; 後処理 } とかくのが自然な場合が多いものです。

294:デフォルトの名無しさん
10/11/05 12:30:50
forを使って書き換えたのマダー

295:デフォルトの名無しさん
10/11/05 12:30:59
だからそう言ってるじゃん

296:デフォルトの名無しさん
10/11/05 12:33:58
条件処理部とインクリメントを空白にするなら、forである必要もないと思うが

297:デフォルトの名無しさん
10/11/05 12:35:16
単に気持ちも問題でしょ
俺も個人的にwhileは終了条件を指定するものであって
無限ループに使うのはなんか条件判定が一個増えてるような気がして気持ち悪い
感情論なんで人それぞれだとは思うが

298:デフォルトの名無しさん
10/11/05 12:39:02
>>296
while (1) { }
とすると警告してくるコンパイラがありまして

299:デフォルトの名無しさん
10/11/05 12:39:17
っていうか問題の指定がwhileになってるだけなのになw

300:デフォルトの名無しさん
10/11/05 12:42:51
「whileを使って」という指定であるなら
なおさら途中でbreakしないといけないような書き方は避けるべきとも受け取れるが…
whileの使い方を勉強させるための宿題なんでしょ?

301:デフォルトの名無しさん
10/11/05 12:43:50
while(1)程度でそんなに熱くなるなよw

302:デフォルトの名無しさん
10/11/05 13:07:45
試しにforで書いてみた
breakどころか中身もなくなった

for ( i=1,n=-1 ; i<x ; i<<=1,n++ );

303:デフォルトの名無しさん
10/11/05 13:16:54
while(1)の方が分かりやすい

304:デフォルトの名無しさん
10/11/05 13:41:58
どっちにしても小さい間だけループを回せばいいのに
大きくなった段階で抜けると実装するのはセンス無いってことか

305:デフォルトの名無しさん
10/11/05 13:44:47
そんな話は誰もしてないw

306:デフォルトの名無しさん
10/11/05 13:53:51
語尾にwつけて必死な人が一人いますね

307:デフォルトの名無しさん
10/11/05 13:56:58
wつけてる人間を一人だと妄想して必死認定したい人がいますね

308:デフォルトの名無しさん
10/11/05 14:05:39
>>304
意味不明。あなたの言うセンスのあるループの実装ってどんなのよ。

309:デフォルトの名無しさん
10/11/05 14:19:47
いいから問題解けよ

310:デフォルトの名無しさん
10/11/05 16:58:49
>>306 wwwwwwwwwwww

311:デフォルトの名無しさん
10/11/05 17:15:21
>>278
800KBか
一般的な環境におけるデフォルトスタックサイズは1M程度だからセーフでは有るな
とはいえスタックに積むのは数KB程度と教えるほうが望ましいからヒープに逃がすべき
static って付けるだけで良いのにな

312:デフォルトの名無しさん
10/11/05 20:57:06
スタックに配列をおくのはどうか。
プログラムの失敗でバッファオーバーランを引き起こすと、いとも簡単にコード情報を壊してしまうし、セキュリティホールになったりする。
68アーキテクチャのようにシステムスタックとユーザースタックが別であればよかったのだが。

313:デフォルトの名無しさん
10/11/05 21:13:18
[1] 授業単元:自然言語処理
[2] 問題文(含コード&リンク):
曖昧性のないLR 表を利用して、ファイルに記述された「1
桁の数、+、*、(、)で構成される数式」を計算するプログラムを作成せよ。数式は1 行ず
つファイルに記述されているとする。
問題文↓
URLリンク(nlp.dse.ibaraki.ac.jp)
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:12/3
[5] その他の制限:
資料
URLリンク(nlp.dse.ibaraki.ac.jp)
の5~15ページ。
またよろしければよろしくお願いします。
変数の役割や処理内容なども解説してくださると有り難いです。

314:デフォルトの名無しさん
10/11/05 22:40:44
>>312
範囲チェックしないプログラマの方がおかしいだろ。

315:デフォルトの名無しさん
10/11/06 02:20:55
>>314
strcpy(), strcat(), etc

316:デフォルトの名無しさん
10/11/06 12:36:13
>>315
天下のMS舐めんなよ

strcpy_s(), strcat_s()

317:デフォルトの名無しさん
10/11/06 13:25:33
C1Xにも入る予定だしな

318:デフォルトの名無しさん
10/11/06 13:45:59

「ご利用は計画的に」がC言語だと思ってたよ

319:デフォルトの名無しさん
10/11/06 14:57:01
フェイルセーフは java や C# に任せれば良いと思う
プログラマの不注意で暴走するのがC/C++の醍醐味だと思うんだが

320:デフォルトの名無しさん
10/11/06 15:36:07
暴走は慣れてくると快感にすら感じてくる

321:デフォルトの名無しさん
10/11/06 18:07:17
>>315
そんな関数使うときは、バッファオーバーフローしないと確認した後じゃなきゃダメだろ。
確認できないときに文字数指定付き関数を使えない奴はプログラム書くな。

322:デフォルトの名無しさん
10/11/06 18:44:04
だろ。

323:デフォルトの名無しさん
10/11/06 23:02:06
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。





324:デフォルトの名無しさん
10/11/06 23:03:20
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をinfixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。



325:デフォルトの名無しさん
10/11/06 23:05:47
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
再帰版と非再帰版のフィボナッチ数計算プログラムを作れ。  
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。



326:デフォルトの名無しさん
10/11/06 23:08:01
[4] 期限:11月3日
1年あるじゃないか、時間あるから自分でヤレ

327:デフォルトの名無しさん
10/11/06 23:15:02
わらた

328:デフォルトの名無しさん
10/11/06 23:27:41
>>326
間違えました。
11月10日でした。

329:デフォルトの名無しさん
10/11/07 00:30:43
>>313
か~なり待ってくださいね。でも期限内には仕上げます。
昔血道をあげた分野だったりするのですが、もうすっかり忘れてしまいました。今最初の参考書を読み直しているところです。
URLリンク(www.amazon.co.jp)

330: ◆QZaw55cn4c
10/11/07 00:53:57
>>325
URLリンク(codepad.org)

331:デフォルトの名無しさん
10/11/07 01:10:39
>>325
#include <stdio.h>

int f1(int n, int a, int b)
{
return n ? f1(n - 1, b, a + b) : a;
}

int f2(int n)
{
int a = 0, b = 1;

while(n--) {
a += b;
b = a - b;
}

return a;
}

int main(void)
{
int n;

scanf("%d", &n);

printf("%d %d\n", f1(n, 0, 1), f2(n));

return 0;
}

332:デフォルトの名無しさん
10/11/07 07:28:29
ここでオーダー厨登場

どいつもこいつも計算量が大きすぎる
O(logn)だろ

333:デフォルトの名無しさん
10/11/07 09:26:15
>>332
Ο


334:デフォルトの名無しさん
10/11/07 10:48:19
>>332
オーダー厨って適当な事しかいわない奴の事なの?

335:デフォルトの名無しさん
10/11/07 15:56:51
オーダオーダ(そうだそうだ)

336:デフォルトの名無しさん
10/11/07 16:19:10
フィボナッチ数なんて 32bit の範囲だと 50個も無いし
64bit の範囲でも 100個もないんだからテーブルにしておけば O(1) ですむ

337:デフォルトの名無しさん
10/11/07 16:30:51
単純な加算なんだしbitに拘ることもない。

338:デフォルトの名無しさん
10/11/07 16:39:10
「再帰使うとシンプルに書ける場合もある」ということを伝えるための授業なんだからオーダーなんて気にするな
まぁ、大抵の学生は
「ふーん、なんか便利そう。でも、結局どんな時に使うの?」
ってな感じで理解にまではいたらないんだけどなw

339:デフォルトの名無しさん
10/11/07 16:46:08
再帰使ったTMPでテーブル生成すればいいな

340:デフォルトの名無しさん
10/11/07 16:48:49
[1] 授業単元:C言語

[2] 問題文:以下の課題では、main関数を求めるなど、動作が可能なプログラムにして提出すること。
(1)3つのint型関数の最小値を返す関数を作成しなさい。
プロトタイプは次のようになる。int min3(int x, int y, int z);
キーボードから値を 3つ入力し、これらの関数に引数で値を渡す。関数で処理した結果を表示すること。
(2)2つの整数の和を求める関数及び差を求める関数を作成しなさい。
  プロトタイプは次のようになる。
int sum(int x, int y);
int diff(int x, int y);

  キーボードから値を2つ入力し、これらの関数に引数で値を渡す。関数で処理した結果を表すこと。

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月8日

よろしくお願いします

341:デフォルトの名無しさん
10/11/07 17:43:34
だからね、完全数とカレンダー算出の課題こいやー

342:デフォルトの名無しさん
10/11/07 18:35:17
>>340 でなくて良いけど
>(1)3つのint型関数の最小値を返す関数を作成しなさい
int型関数ってint型を返す関数と思う?
そうすると、3つの関数があり、それらはint返す。で作るのはそれらの返り値の最小値を返す関数
int min3(int x, int y, int z); ってこと?
>キーボードから値を 3つ入力し、これらの関数に引数で値を渡す。
int min3(int x, int y, int z)については引数のこと言うことないから、
これらの関数は3つのint型関数ことを言っているのかな?
3つint型関数って何をする関数なんだろ? 創造力養うために、自分で適当に
値(int double...なんか)を受け取って何かして、そしてintを返す関数を作れってことかな?

今の学生って頭良いね。僕があまり理解できない文でも何を言っているのか理解できるんだね

343:デフォルトの名無しさん
10/11/07 18:36:42
つまんない突っ込み

344:デフォルトの名無しさん
10/11/07 18:39:57
>>343
問題分るなら>>340解答してあげなさいな

345: ◆QZaw55cn4c
10/11/07 19:03:25
>>340
URLリンク(codepad.org)
URLリンク(codepad.org)
>>342 の指摘のとおり問題文が変です。妥当な線でコードを書きました問題があるようであれば返事をください。

346:デフォルトの名無しさん
10/11/07 19:07:34
>>340
URLリンク(codepad.org)

347:デフォルトの名無しさん
10/11/07 19:07:49
>>341
『main関数を求めるなど』にも突っ込んだ方が良いな

多分、黒板に書かれた問題を写し間違ったんだとは思うけど、『3つのint型関数』と『これらの関数に』が
文章として変に整合性が取れてるから悩むよな


348:341
10/11/07 19:10:11
>>347 いや、俺関係ねーし

349:デフォルトの名無しさん
10/11/07 19:17:18
>>345
キーボードから値を入力してって書いてあるやん

350:デフォルトの名無しさん
10/11/07 19:38:10
>>349 mainを自分で適当に書き換えれば良いだけ。

351:デフォルトの名無しさん
10/11/07 19:45:22
他人の問題と関係ない部分のエラーチェックや型チェックの省略に対しては
鬼の首をとったかのような突っ込みをいれるのに、自分が言われるとコテを外してこの言い草とは…
他人に厳しく自分には甘く!ですね

352:デフォルトの名無しさん
10/11/07 19:56:15
普段の行いが悪いから許容の範囲内かと思われる事までつっこまれちゃうんだなw

353:デフォルトの名無しさん
10/11/07 20:34:08
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。

354:デフォルトの名無しさん
10/11/07 20:36:07
>>353
>>326

355:デフォルトの名無しさん
10/11/07 21:22:53
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月10日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。

356:347
10/11/07 22:01:22
>>348
ゴメン、アンカーミスった >>342 だった

357:デフォルトの名無しさん
10/11/07 22:11:42
>>355
ツリー構造で表現された数式を prefix, infix, postfix の表記に変換せよって問題なのか?
すこし漠然としすぎるな
せめて、基本となるツリー構造を成す構造体くらいは示さないと回答は得られないと思うよ

358:デフォルトの名無しさん
10/11/07 22:18:30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク)
 5人でじゃんけんをした時に引き分けになる確率を、
 モンテカルロ法を用いて求めよ。
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月11日
[5] その他の制限:乱数には stdlib.h のrand()>>3を使用せよ。


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