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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147908265/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
2デフォルトの名無しさん:2006/06/04(日) 01:03:01
[>>1からついでに色々。]
・同じ講義を受けている人が既に同じ宿題を依頼してるかもしれなせん。
 まずはスレを少しさかのぼって探してみてください。
 それさえ出来ないシメジ野郎はバター焼きにして食っちまうぞ
・解答者は答える義務もないし、答えてもそれが正しいかどうかは保証しません。
 もちろん、出題者先生の意図なんぞ知ったことではありません。
 At your own riskで。
・態度が余りに悪いとすーぱーはかーがあなたの先生にチクるかもしれません。
・お礼ぐらいは言いましょう。
3デフォルトの名無しさん:2006/06/04(日) 01:03:59
/********************************************
**   このスレはまだ未稼働です。
**   前スレが埋まってから使いましょう。
********************************************/
4デフォルトの名無しさん:2006/06/04(日) 04:20:23
>まだ未稼働

そのうち「もう未稼動」になったり「まだ稼動」になったりするんでしょうか。
5デフォルトの名無しさん:2006/06/04(日) 04:40:44
[1] 授業単元: Introduction to C/C++ Programming
[2] 問題文(含コード&リンク):

1.Local variables

a. are visible only in the scope in which they have been defined.
b. are destroyed in the reverse order in which they are created.
c. have their destructors invoked by the C++ subsystem when they leave scope.
d. all of the above.

2.Which file open mode would be used to write data only to the end of an existing file?

a. ios::app
b. ios::in
c. ios::out
d. ios::trunc

よろしくお願いします。



6デフォルトの名無しさん:2006/06/04(日) 11:57:49
>>5
1 a
2 a
7デフォルトの名無しさん:2006/06/04(日) 12:06:26
>>6
1ってdじゃない?
8デフォルトの名無しさん:2006/06/04(日) 12:44:18
>>7
b,cってこんなのまで規定されていたっけ?
#include <iostream>
using namespace std;
class A {
private:
  const char* s;
public:
  A(char const* s):s(s) {cout << "A(" << s << ")" << endl;}
  ~A() {cout << "~A(" << s << ")" << endl;}
};

int main()
{
  static A a("foo");
  {
    static A a("bar");
  }
  {
    static A a("hoge");
  }
}
9デフォルトの名無しさん:2006/06/04(日) 16:34:55
>>6-7
ありがとうございます。

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

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

4.A StatusLabel

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

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

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

お願いします。
10デフォルトの名無しさん:2006/06/04(日) 16:49:36
>>9
あと何問あるんだ?

追加で張るのはなるべく止めて欲しい。
張るなら、全部まとめて張ってくれ。
11デフォルトの名無しさん:2006/06/04(日) 16:52:08
>>10
○貼る
×張る
12デフォルトの名無しさん:2006/06/04(日) 17:07:56
ここって標準C/C++のみ?VC++の宿題はだめ?
13デフォルトの名無しさん:2006/06/04(日) 17:08:36
[1] 授業単元:アルゴリズム論
[2] 問題文:
1方向線状リストを使って、スタックを実現せよ。
ただし、各記憶要素xは整数値をとるものとする。
関数として、push(x)、pop()、empty()、ならびに現在のスタック内容を
表示するためのshow()を用意する。

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

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

どなたかご教授お願いします。
14デフォルトの名無しさん:2006/06/04(日) 17:23:19
>>10
わかりました。残りいきます!

6. Int16, Int32, Double, and String
a. are executable C++ statements.
b. are examples of data types.
c. are compile error categories.
d. none of the above

7. To disable a menu item,
a. just delete the item.
b. set the Enabled property to false.
c. set the Enabled property to disabled.
d. remove the Enabled property.

8. With Visual C++ Forms Programming, the easiest way to present a dialog window to the user is to use
a. a MessageBox.
b. the cout object.
c. a data file.
d. inheritance.

9. The following method definition, private: Void adjustMargin( Int32 marginSize = 15 ) { . . . }
a. specifies a return type of Void.
b. is a method that can only be invoked within the scope of a method belonging to the same class.
c. is an example of how to specify a default argument value.
d. all of the above




15デフォルトの名無しさん:2006/06/04(日) 17:24:39
続き

9. The following method definition, private: Void adjustMargin( Int32 marginSize = 15 ) { . . . }

a. specifies a return type of Void.
b. is a method that can only be invoked within the scope of a method belonging to the same class.
c. is an example of how to specify a default argument value.
d. all of the above

10. String::SubString

a. extracts a portion of a string.
b. specifies an inheritance relationship.
c. is not supported by Visual C++.
d. is an iostream operation.

よろしくお願いします。

16デフォルトの名無しさん:2006/06/04(日) 17:52:20
>>12
駄目
17デフォルトの名無しさん:2006/06/04(日) 17:53:18 BE:81522667-#
>>13
struct stack{int x; struct struct* next;};
struct stack* STACK=NULL;
void push(int x){struct stack* sp=STACK;while(!sp)sp=sp->next;
sp=(struct stack*)malloc(sizeof(struct stack));sp->x=x;sp->nextNULL;}
int pop(){int ret;struct stack* sp=STACK;struct stack* prev=NULL;
while(sp){prev=sp;sp=sp->next;}if(sp){ret=sp->x;prev->next=NULL;free(sp);return ret;}
return 0;}
void empty(){struct stack* sp=STACK;struct stack* next=NULL;
while(sp){next=sp->next;free(sp);sp=next;}}
void show(){struct stack* sp=STACK;while(sp){printf("%i\n",sp->x);sp=sp->next;}}
18デフォルトの名無しさん:2006/06/04(日) 18:32:12
こっちが先に立ったので移動してください。
http://pc8.2ch.net/test/read.cgi/tech/1149349035/

ここは削除依頼を出します。
19デフォルトの名無しさん:2006/06/04(日) 19:02:56
そんな変なタイトルでいいのか
>>2も書いてないし
20デフォルトの名無しさん:2006/06/04(日) 20:04:12
タイトルでグダグタ抜かすな
21デフォルトの名無しさん:2006/06/04(日) 21:11:54
こっちでいいやん。頭悪いタイトルは嫌だわ。
22デフォルトの名無しさん:2006/06/04(日) 23:52:57
固定名の入っているスレッドタイトルは削除対象となります。
23デフォルトの名無しさん:2006/06/04(日) 23:57:32 BE:19410252-#
タイトルがどうのこうのいってるバカがいるが、何か問題でもあるんか?
24デフォルトの名無しさん:2006/06/05(月) 01:09:08
1年ぼうずの宿題です。
2つの数値を入力し、次に+,-,*,/を入力して、計算方法を決めて結果を出すというものなのですが、
yの値が途中で強制的に0になります。

#include <stdio.h>
void main()
{
int x,y,z;
char a;
printf("2つの数値を入力せよ。\nx=");
scanf("%d",&x);
printf("y=");
scanf("%d",&y);
printf("+(和),-(差),*(積),/(商)のいずれかの記号を入力し、\n2つの値を演算方法を入力して決定せよ。\n演算方法は ");
scanf("%s",&a);
switch(a){
case 43:
z=x+y;
printf("%d + %d = %d \n",x,y,z);
break;
default:
printf("該当する記号ではありません。\n");
break;
}
}

具体的に言うと、11行目の
scanf("%s",&a);
があるとyが0になりました。(これをはずすと正常にyの数値が継続される)
どういうワケなんでしょうかこれって?
25デフォルトの名無しさん:2006/06/05(月) 01:10:55
>>24
scanf()の使い方が間違っている。
あと、スレ違い。
26デフォルトの名無しさん:2006/06/05(月) 01:13:05
>>25
すまんかった、次から無いように気をつける
27デフォルトの名無しさん:2006/06/05(月) 02:56:35 BE:7764522-#
>scanf("%s",&a);

だからscanfなんか使うなと(ry
28デフォルトの名無しさん:2006/06/05(月) 04:01:50
3.Which of the following is the best definition or example of the "principle of least privilege?"

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

4.A StatusLabel

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

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

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

誰かお願いします。
29デフォルトの名無しさん:2006/06/05(月) 04:03:09
続きです。

6. Int16, Int32, Double, and String
a. are executable C++ statements.
b. are examples of data types.
c. are compile error categories.
d. none of the above

7. To disable a menu item,
a. just delete the item.
b. set the Enabled property to false.
c. set the Enabled property to disabled.
d. remove the Enabled property.

8. With Visual C++ Forms Programming, the easiest way to present a dialog window to the user is to use
a. a MessageBox.
b. the cout object.
c. a data file.
d. inheritance.

9. The following method definition, private: Void adjustMargin( Int32 marginSize = 15 ) { . . . }
a. specifies a return type of Void.
b. is a method that can only be invoked within the scope of a method belonging to the same class.
c. is an example of how to specify a default argument value.
d. all of the above
30デフォルトの名無しさん:2006/06/05(月) 04:03:57
続きです。

6. Int16, Int32, Double, and String
a. are executable C++ statements.
b. are examples of data types.
c. are compile error categories.
d. none of the above

7. To disable a menu item,
a. just delete the item.
b. set the Enabled property to false.
c. set the Enabled property to disabled.
d. remove the Enabled property.

8. With Visual C++ Forms Programming, the easiest way to present a dialog window to the user is to use
a. a MessageBox.
b. the cout object.
c. a data file.
d. inheritance.

9. The following method definition, private: Void adjustMargin( Int32 marginSize = 15 ) { . . . }
a. specifies a return type of Void.
b. is a method that can only be invoked within the scope of a method belonging to the same class.
c. is an example of how to specify a default argument value.
d. all of the above
31デフォルトの名無しさん:2006/06/05(月) 04:05:21
もう1つ続きです。

9. The following method definition, private: Void adjustMargin( Int32 marginSize = 15 ) { . . . }

a. specifies a return type of Void.
b. is a method that can only be invoked within the scope of a method belonging to the same class.
c. is an example of how to specify a default argument value.
d. all of the above

10. String::SubString

a. extracts a portion of a string.
b. specifies an inheritance relationship.
c. is not supported by Visual C++.
d. is an iostream operation.

よろしくお願いします。
32デフォルトの名無しさん:2006/06/05(月) 04:06:58
29と30は同じです。すいません。
33デフォルトの名無しさん:2006/06/05(月) 04:41:38 BE:46584083-#
       ,;r''"~ ̄^'ヽ,
      ./       ;ヽ
      l  _,,,,,,,,_,;;;;i  <いいぞ ベイべー!
      l l''|~___;;、_y__ lミ;l  テンプレで依頼しない奴はクズだ!
      ゙l;| | `'",;_,i`'"|;i |  テンプレで依頼する奴はよく訓練されたクズだ!
     ,r''i ヽ, '~rーj`c=/
   ,/  ヽ  ヽ`ー"/:: `ヽ
  /     ゙ヽ   ̄、:::::  ゙l, ホント このスレは地獄だぜ! フゥハハハーハァー
 |;/"⌒ヽ,  \  ヽ:   _l_        ri                   ri
 l l    ヽr‐─ヽ_|_⊂////;`ゞ--―─-r| |                   / |
 ゙l゙l,     l,|`゙゙゙''―ll___l,,l,|,iノ二二二二│`""""""""""""|二;;二二;;二二二i≡二三三l
 | ヽ     ヽ   _|_  _       "l ̄ ̄ ̄ ̄ ̄ ̄ |二;;二二;;二=''''''''''' ̄ノ
 /"ヽ     'j_/ヽヽ, ̄ ,,,/"''''''''''''⊃r‐l'二二二T ̄ ̄ ̄  [i゙''''''''''''''''"゙゙゙ ̄`"
/  ヽ    ー──''''''""(;;)   `゙,j"  |  | |
34デフォルトの名無しさん:2006/06/05(月) 05:32:14
>>28-32
削除依頼済みの重複スレで質問するな。
本スレに移動しろ。
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
35デフォルトの名無しさん:2006/06/05(月) 08:54:26
[1] プログラミング入門

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

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

[5] あまり高等ではない方法でお願いします!
36デフォルトの名無しさん:2006/06/05(月) 09:55:19 BE:93168768-#
>>35
バブルソートに高等もクソもあるか。
#include<stdio.h>
#include<string.h>
void bubblesort(char** a,size_t n){size_t i,j;char* tmp;
for(i=0;i<n-1;i++)for(j=n-1;j>i;j--)
if(strcmp(a[j],a[j-1])<0){tmp=a[j];a[j]=a[j-1];a[j-1]=tmp;}}

あとは自分で。
37デフォルトの名無しさん:2006/06/05(月) 12:16:27
>>36
高等なバブルって計算量減らした改良版のことじゃね?wwww
3813:2006/06/05(月) 14:46:58
>>17
ありがとうございます。
39前スレ973:2006/06/05(月) 15:45:09
>>993
ありがとうございます。
コンパイルして実行したのですが、何を入力すればよいのでしょうか?
ファイルの読み込みは手動でしょうか?
1000いっちゃったので、すみません・・・
40デフォルトの名無しさん:2006/06/05(月) 16:02:13
リダイレクト
41デフォルトの名無しさん:2006/06/05(月) 22:20:16
[1] プログラミング入門

[2]【リスト,削除】
  キーボードから整数を入力し, 0 以外の値の場合はリストの先頭に挿入し,
  0 の場合は終了するプログラムを作成せよ.
  ただし,リスト中に同じ値が存在する場合は remove_node を用いて削除する.
  整数入力毎にリストの中身を表示せよ.
[3] 環境
 [3.1] windowsXP
 [3.2] Microsoft Visual C++ 6.0
 [3.3] C言語
[4] 期限:明日中

[5]できれば意味のわかりやすいプログラムをよろしくです。
42デフォルトの名無しさん:2006/06/05(月) 22:44:01 BE:139752498-#
>>41
リストの定義はどうするんだ。
43デフォルトの名無しさん:2006/06/05(月) 22:53:09
>>42
ご自由に。
というかリストの定義はときかれて何を答えればいいのかすらもわからないぐらいこの課題の意味わかってないです。
申し訳ないです。
44デフォルトの名無しさん:2006/06/05(月) 22:58:34
>>43
ご自由にでは解答できる人が居ないぞ。
授業では、「リスト」というものが、どのような形で紹介されていたのか、具体的に説明してよ。
45デフォルトの名無しさん:2006/06/05(月) 23:00:16
ノードってあるぐらいだから…
自己参照型のやつじゃないの
46デフォルトの名無しさん:2006/06/05(月) 23:04:26
リストの定義
struct node_tag
{
int value;
struct node_tag *next;
};
typedef struct node_tag node_t;
これかな・・・
47デフォルトの名無しさん:2006/06/05(月) 23:11:25 BE:40761937-#
remove_nodeとやらのプロトタイプは?
つーか、他に定義されているリスト操作関数はないのか?
48デフォルトの名無しさん:2006/06/05(月) 23:19:51
スルーしろ。
49デフォルトの名無しさん:2006/06/05(月) 23:21:54
すまん、スルーしてくれ
50デフォルトの名無しさん:2006/06/05(月) 23:54:54
>>41
#include <stdio.h>
#include <stdlib.h>
struct node_tag
{ int value;
struct node_tag *next; };
typedef struct node_tag node_t;
node_t* pFirstNode = NULL;
void insert_node(node_t* pNode) {pNode->next = pFirstNode; pFirstNode = pNode;}
node_t* remove_node(node_t* pNode) { if(pFirstNode == pNode) {
pFirstNode = pNode->next; pNode->next = NULL; return pNode;
} else { node_t* pNode2 = pFirstNode;
while(pNode2 != NULL) { if(pNode2->next == pNode) {
pNode2->next = pNode->next; pNode->next = NULL; return pNode;
} pNode2 = pNode2->next; } return NULL;} }
node_t* find_node(int nValue) { node_t* pNode = pFirstNode;
while(pNode != NULL) { if(pNode->value == nValue) return pNode;
pNode = pNode->next; }return NULL; }
int main() { char sValue[1024]; int nValue; node_t* pNode;
while(fgets(sValue, 1024, stdin) != NULL) { nValue = atoi(sValue);
if(nValue == 0) break; pNode = find_node(nValue);
if(pNode == NULL) { node_t* pNode = malloc(sizeof(node_t));
if(pNode != NULL) { pNode->value = nValue; pNode->next = NULL;
insert_node(pNode); } } else {
remove_node(pNode); free(pNode); } pNode = pFirstNode;
while(pNode != NULL) { printf("%d,", pNode->value); pNode = pNode->next;
} printf("\n"); } pNode = pFirstNode;
while(pNode != NULL) { node_t* pNode2 = pNode->next; free(pNode);
pNode = pNode2; } return 0; }
51デフォルトの名無しさん:2006/06/06(火) 00:03:32
[1] 授業単元:カプセル化・オーバーロード・コンストラクタ・デストラクタ
[2] 問題文(含コード&リンク):
後述のプログラムを、以下のように変更する。
・円柱の体積計算部分をカプセル化する(double clc_cylinder();の部分をプライベートにする?)。
・円柱の体積計算プログラムを利用して、円錐、半球、球の体積を求める。
 (円錐の体積;1/3πr*3、球の面積:4/3πr*3)
・各図形の体積を表示する(円柱の体積計算はカプセル化しているので、注意)。
・4つの体積の比を以下の要領で表示する。
 円錐:半球:円柱:球
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語: C++
[4] 期限: 2006年6月8日まで

カプセル化が上手くできなくて…。よろしくお願いします。
5251:2006/06/06(火) 00:04:03
これが元のプログラムです。

#include<iostream>
#include<cmath>
#define PI 3.141592
using namespace std;

class volume{
double r;
public:
void print(double a);
double clc_cylinder();
volume():r(0){};
volume(double a):r(a){};
};

void volume::print(double a){
cout<<"半径=高さとなる円柱の体積は,"<<a<<"です."<<endl;
}
double volume::clc_cylinder(){
return PI*pow(r,3);
}

int main(){
volume cyl(10);
double y=cyl.clc_cylinder();
cyl.print(y);
return 0;
}
53デフォルトの名無しさん:2006/06/06(火) 00:51:24
>>51
clcはcalculationの意味?
clc_cylinderをprivateにしたらダメです。カプセル化の意味を取り違えてます。
円柱の体積から円錐を求めるのはわかるけど、球の体積をわざわざ円柱から求める意味がわかりません。
体積の公式が全部違う気がするのは気のせい?
体積の表示はmain関数内で勝手にどうぞ。
高さを保持したくないようなので、引数で渡すようにしました。
比の表示はやや投げやりです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1983.txt

この問題と元のコードってまさか原文のままじゃないよね?
54デフォルトの名無しさん:2006/06/06(火) 01:08:05 BE:34938263-#
>>52
これが出題ソースだとしたら、出題者はOOPを最初から勉強し直すべきだ。
5551:2006/06/06(火) 01:22:46
>>53
>clcはcalculationの意味?
わかりません。問題そのまま書いただけなので…。

>clc_cylinderをprivateにしたらダメです。
先生がそう言ってたような気がしたんですが。
ひょっとしたら僕が意味を取り違えてるのかも知れません。

>球の体積をわざわざ円柱から求める意味がわかりません。
半径と高さが同じ設定のようなので、πr^3の部分が共通してるため…だと思います。

>体積の公式が全部違う気がするのは気のせい?
書き方間違えました。πr*3の部分がπr^3です。

>この問題と元のコードってまさか原文のままじゃないよね?
基本的には原文のままですが…。

「“円柱の体積計算プログラムを利用して”、円錐、半球、球の体積を求める」
というのが問題ですので、元の体積計算部分を利用したプログラムにしたいのですが…。
(そのために高さと半径が同じという設定にされてるんだと思います)
56デフォルトの名無しさん:2006/06/06(火) 01:30:48
>半径と高さが同じ設定のようなので、πr^3の部分が共通してるため…だと思います。
いや、ちょっと待てw

>基本的には原文のままですが…。
わかった。その教官のメールアドレスを晒すんだ。
メールタイトル:あんたの無能さについて
57デフォルトの名無しさん:2006/06/06(火) 01:57:05 BE:31055982-#
常識的に考えればこうなるはずだが…
class circleobject{
protected:
double radius;
double height;
double volume;
virtual void calcVolume()=0;
public:
double getVolume(){return volume;};
void setRadius(double r){radius=r;calcVolume()}
void setHeight(double h){height=h;calcVolume()}};
class cylinder : public circleobject{
virtual void calcVolume(){volume=PI*pow(radius,2)*height;};};
class sphere : public circleobject{
virtual void calcVolume(){volume=4*PI*pow(radius,2)*height/3.0;};};
class corn : public circleobject{
virtual void calcVolume(){volume=PI*pow(radius,2)*height/3.0;};};
58デフォルトの名無しさん:2006/06/06(火) 02:59:04
volumeクラスの意味がわからん。表面積を計算するような場合は別クラスでするのか?
どうしても作るのならinterfaceぽくするしかないような。
class volume{
public:
virtual double calcVolume() = 0;
};
class surface{
public:
virtual double calcSurface() = 0;
};
こうするぐらいならベースクラス作るよなー。
class solid{
public:
virtual double calcVolume() = 0;
virtual double calcSurface() = 0;
};
59デフォルトの名無しさん:2006/06/06(火) 03:03:29 BE:46585038-#
>>57
やべ。
virtual void sphere::calcVolume(){volume=4*PI*pow(radius,3)/3.0;};

>>58
だよなー。
出題者は根本的にOOPを理解していない。
60デフォルトの名無しさん:2006/06/06(火) 03:36:11
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
1個以上10個以内の整数を大きさ10の整数配列に入力するプログラムで、入力する整数の個数は最初に宣言する。
例えば3と4からなる2個の整数を入力するには”2 3 4”

次にvoid recorder(int*data,int num);を作成し*dataから始まるアドレスに、順におかれたnum個の整数を小さい順に並び替える機能を与える。
recoder()の中ではswapsmall()を有効に活用する。配列宣言以外はポインタを用いなさい。

recoder()を適用した後,配列の内容をスペース1つで区切って出力し、入力された数字を大きい順に表示するプログラムを作成しなさい。最後の数字の後ろに空白はおかない

swapsmallについて
void swapsmall(int*data,int num);と言う関数で、*dataから始まるアドレスに順におかれたnum個の整数のうち最小のものを先頭のもの
と入れ換える機能を与える。ただし同一の値をもつ最小の整数が複数ある場合には、一番後方にあるデータと入れ換える。
この関数を使わなくても良い。

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

よろしくお願いします。
61デフォルトの名無しさん:2006/06/06(火) 04:21:04
[1]授業単元:基礎プログラミング
[2]問題文
(1)1〜10の二乗値を配列に代入して表示しよう
1〜10の2乗値を配列a[1]〜a[10]に入れ、その値を表示するプログラムを
作成せよ。つまりa[1]は1、a[2]は4……、a[10]は100である。
(2)
キーボードから20個の整数(正と負の両方)を入力し、負でない整数の総個数と
総和を求めるプログラムを作成せよ。
(3)
学生10人の某授業科目の成績を入力し、最高、最低と平均数を求めるプログラムを
作成せよ。
[3]環境
 [3.1]OS:windowsXP
[3.2]cygwin
[3.3]言語:C言語
[4]期限:明日まで。
よろしくお願いします。
62デフォルトの名無しさん:2006/06/06(火) 04:30:10
>>60
もう一つの宿題スレで見た内容だな。
63デフォルトの名無しさん:2006/06/06(火) 04:37:55
(いずれも#inc… は略
61-1)
int main(void){
    int a[11]={0},i;
    for(i=1;i<11;i++){a[i]=i*i;printf("%d ",a[i]);}
    return 0;
}
61-2)
int main(void){
    int i,j,k=0,l=0;
    for(i=0;i<20;i++){
        scanf("%d",&j);
        if(j>-1){k++;l+=j;/* 非負数の総和ならここ */}
        /* l+=j; 20個の総和ならここ*/
    }
    printf("numbers more than 0: %d sum: %d",k,l);
    return 0;
}
64>>61:2006/06/06(火) 05:04:42
#include "stdio.h"
void prac1()
{
int i, a[11];
printf("@\n");for(i=1;i<=10;i++)a[i]=i*i;
for(i=1;i<=10;i++)printf("%d ",a[i]); printf("\n");
}
void prac2()
{
int i,a[20],sum=0,cnt=0;
printf("A 整数を20個入力して下さい\n");
for(i=0;i<20;i++){
scanf("%d",&a[i]);
if(a[i] >= 0 ){ cnt++; sum+=a[i]; }
}
printf("正数の総個数: %d 正数の総和: %d\n",cnt,sum);
}
void prac3()
{
int i,a[10],sum=0,cnt=0,max=0,min=100;
printf("B 10人の点数を入力して下さい\n");
for(i=0;i<10;i++){
scanf("%d",&a[i]); cnt++; sum+=a[i];
if(a[i] > max) max = a[i];
if(a[i] < min) min = a[i];
}
printf("最高:%d点 最低: %d点 平均: %3.1f点\n",max,min,((float)sum/(float)cnt));
}
65デフォルトの名無しさん:2006/06/06(火) 14:46:16
>>56
アドレスと内容を教えてくれれば送ってあげる(はぁと
66デフォルトの名無しさん:2006/06/06(火) 16:28:53 BE:108696678-#
>>65
この教官マジで有害。このスレに来ないような他の優秀な学生が気の毒だ。
67デフォルトの名無しさん:2006/06/06(火) 16:49:51
>>51
遅レスなんだが、表面積の公式が体積公式になってる気がするんだが・・・
それと俺も間違ってるかも知れんが体積だのを計算する関数はstaticにしたほうがいいんじゃね?
例えば球に関してなら、球そのものが計算する訳じゃなく、球に対して計算する訳だから

後、上でも書かれてるように基底クラス(shapeとか)を作って
それに計算するメソッド持たせてオーバーロードした方がいいだろうな


てかそれほんとに教官が書いた文章か?
68デフォルトの名無しさん:2006/06/06(火) 17:01:48 BE:104814869-#
つか、マジで学校名と教官名晒しキボン。
その教官がクビにならないならそこの学生は取らないようにしないと。
ウソを覚えてる奴は何も知らない奴よりたちが悪い。
69デフォルトの名無しさん:2006/06/06(火) 17:18:56
学生のレベルのそのレベル
70デフォルトの名無しさん:2006/06/06(火) 18:52:29
>>67
>表面積の公式が体積公式になってる
「円錐、半球、球の体積を求める」って問題文から察するに、
球も体積を求めたかったのでは。つまり、「体積」を「面積」と書き間違えた。
71デフォルトの名無しさん:2006/06/06(火) 19:00:10
>>70
やっぱそうだよなぁ。まぁ意図は分かるしいいんだが
根本的にOOPの意味が無いな
72デフォルトの名無しさん:2006/06/06(火) 19:43:30
>>51
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1989.txt

円柱のメンバ関数をプライベートにするとのことなのでFacadeパターンを使ってみた(´・ω・`)
73デフォルトの名無しさん:2006/06/06(火) 22:05:41
[1]授業単元:演習
[2]問題文(含コード&リンク):
西暦の年(year)を読み込み、その年がうるう年
であれば"閏年"、うるう年でないときは"平年"と
表示して下さい。うるう年とは、2月が29日の
年。基本は4年に一回(4で割り切れる年はうる
う年)、それだと多すぎるので100年に1回は
平年とする(100で割り切れる年は平年)、そ
れだと少なすぎるので400年に一回をうるう年
に戻す(400で割り切れる数はうるう年)。
この課題はif文一つで。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
74デフォルトの名無しさん:2006/06/06(火) 22:06:35
[1]授業単元:演習
[2]問題文(含コード&リンク):
西暦の年(year)を読み込み、その年がうるう年
であれば"閏年"、うるう年でないときは"平年"と
表示して下さい。うるう年とは、2月が29日の
年。基本は4年に一回(4で割り切れる年はうる
う年)、それだと多すぎるので100年に1回は
平年とする(100で割り切れる年は平年)、そ
れだと少なすぎるので400年に一回をうるう年
に戻す(400で割り切れる数はうるう年)。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:この課題はif文のネス
トで。(論理和、論理
積は使わないで下さい
。)
75デフォルトの名無しさん:2006/06/06(火) 22:08:45
[1]授業単元:演習
[2]問題文(含コード&リンク):
整数値(n)を読み込み、絶対値を表示して下さい。
−20の絶対値は、20。20の絶対値は、20。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
76デフォルトの名無しさん:2006/06/06(火) 22:13:05
>>うるう年野郎
全く同じ問題を前スレでみたぞ。
77多すぎるので二分割その一:2006/06/06(火) 22:20:31
[1]授業単元:演習
[2]問題文(含コード&リンク):
#include <stdio.h>
int main(void)
{
int mark;
char grade;
printf("得点入力:");
scanf("%d", &mark);
if(mark >= 85){
grade = 'A';
}else{
if(mark >= 70){ /* 70 <= mark && mark < 85 とする必要の無いことに注意*/
78多すぎるので二分割その二:2006/06/06(火) 22:21:02
grade = 'B';
}else{
if(mark >= 60){
grade = 'C';
}else{
grade = 'D';
}
}
}
printf("評価:%c\n", grade);
return 0;
}
上の例では評価Aから順に決めている。同じ処理を評価Dから
順に決めていくよう作成してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
79デフォルトの名無しさん:2006/06/06(火) 22:25:51
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):
0〜99の間の整数乱数を15個発生させ、それらの数値から二分探索木を作成し、
トラバーサル(行きがけ順、通りがけ順、帰りがけ順)を求めるプログラムを作成せよ
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6/8

よろしくお願いします。
80デフォルトの名無しさん:2006/06/06(火) 22:30:07
[1]授業単元:演習
[2]問題文(含コード&リンク):
月(month)を読み込み、その月の日数を表示して下さい。
2月は28日とする。
if文で作ってください。
小の月(31日でない月)は、西向く士(ニシムクサムライ、2 4 6 9 11)。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
81デフォルトの名無しさん:2006/06/06(火) 22:32:19
閏年これで合ってる?
#include <stdio.h>

int main(void)
{
int a;
while (1){
printf("year > ");
scanf("%d",&a);
if ((a%4)==0&&((a%4)%100)==0&&((a%4)%(100)%400)==0){
puts("閏年");
}else{
puts("ちげーよ馬鹿");
}
}
}
82デフォルトの名無しさん:2006/06/06(火) 22:32:33
[1]授業単元:演習
[2]問題文(含コード&リンク):
1から99までの奇数を表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
83デフォルトの名無しさん:2006/06/06(火) 22:34:48
>>81
おkかな?コンパイルはできた。
if文のネストで作る奴もお願いします。
84デフォルトの名無しさん:2006/06/06(火) 22:38:07
>>81
100で割り切れる年が平年になってないかも
85デフォルトの名無しさん:2006/06/06(火) 22:41:40
>>77
#include <stdio.h>
int main(void){
int mark;
char grade;
printf("得点入力:");
scanf("%d", &mark);
if(mark < 60){grade = 'D';
}else{
if(mark < 70){ grade = 'C';
}else{
if(mark < 85){grade = 'B';
}else{grade = 'A';}}}
printf("評価:%c\n", grade);
return 0;}
86デフォルトの名無しさん:2006/06/06(火) 22:43:58
>>84
ほんとだ
87デフォルトの名無しさん:2006/06/07(水) 00:04:37
[1] 授業単元: プログラミング通論
[2] 問題文(含コード&リンク):
与えられた文字列 s から、その各文字を項目とするリストを作成せよ。
( struct node *initlist_with_string(char *s) の関数を定義して下さいませ。)

#include <stdio.h>
typedef char elementtype;

struct node {
elementtype element;
struct node *next;
};

/* 空リストの作成 */
stuct node *initlist() {
struct node *n;
n = (struct node*)malloc(sizeof(struct node));
n->next = 0;
return n;
}

/* リストに節点を挿入 */
void insert(struct node *p, elementtype x) {
struct node *n;
n = (struct node*)malloc(sizeof(struct node));
n->element = x;
n->next = p->next;
p->next = n;
}
8887:2006/06/07(水) 00:05:50
struct node *initlist_with_string(char *s) {

/* この3つは使う感じで・・・ */
struct node *head;
head = initlist();
insert(head, *s);

}

void print_list(struct node *p) {
while (p->next) {
printf("%c", p->next->elment);
p = p->next;
}
printf("\n");
}
char *chomp(char *s) {
int n = strlen(s) - 1;
if (s[n] == '\n') s[n] = '\0';
return s;
}
int main(void) {
char buffer[80];
struct node *list;
fgets(buffer, 80, stdin);
list = initlist_with_string(chomp(buffer));
print_list(list);
}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
89デフォルトの名無しさん:2006/06/07(水) 00:16:48 BE:15528342-#
>>87-88
struct node* initlist_with_string(char *s){struct node* head=initlist();
struct node* p=head;while(*s!='\0'){insert(p, *s);p=p->next;s++;}
return head;}
90デフォルトの名無しさん:2006/06/07(水) 00:16:52
[1]授業単元:プログラミング演習
[2]
1!〜53!を計算して右揃えで出力するプログラムを作れ。
プログラムはいくつかの関数に分割せよ。
[3.1]OS:unix
[3.3]言語:C
[4]期限:金曜
[5]その他の制限:
91デフォルトの名無しさん:2006/06/07(水) 00:20:24
>>90
意味が分からん
92デフォルトの名無しさん:2006/06/07(水) 00:23:04
>>90
int factorial(int n)
{
if (n > 0)
return (n * factorial(n - 1));
else
return (1);
}
これあれば、簡単だろ。
93デフォルトの名無しさん:2006/06/07(水) 00:24:26
1! =  1
2! =  2
3! =  6
4! = 24
5! = 120

こんな感じ
9487:2006/06/07(水) 00:31:49
>>89
どうもありがとうございます!m(_ _"m)ペコリ
リストの作成すらよく分からなかったのでとても助かりました
95デフォルトの名無しさん:2006/06/07(水) 00:33:23 BE:93168768-#
>>90
#include<stdio.h>
double fact(int n){return (n>0)?fact(n-1)*n:1;}
int main(void){int i;for(i=1;i<54;i++)printf("%2u = %70.0f\n",i,fact(i));return 0;}
96デフォルトの名無しさん:2006/06/07(水) 00:34:06 BE:46584746-#
>>90
intじゃ53!はむりぽ。
97デフォルトの名無しさん:2006/06/07(水) 00:47:52
そこでGMPですよ
98デフォルトの名無しさん :2006/06/07(水) 00:47:53
>>74 こんな感じか?
#include <stdio.h>

int main(void)
{
int year;

printf("year > ");
scanf("%d",&year);
if (year % 4 == 0){
if (year % 100 != 0){
printf("\n閏年\n");
} else {
if (year % 400 == 0){
printf("\n閏年\n");
} else {
printf("\n平年\n");
}
}
} else {
printf("\n平年\n");
}

return (0);
}
9990:2006/06/07(水) 00:52:56
ヒントとしては階乗値を入れる配列を用意するらしいです。
100デフォルトの名無しさん:2006/06/07(水) 00:55:55
そのヒントは守らなきゃいけないのかね?
101デフォルトの名無しさん:2006/06/07(水) 00:58:32
[1] 授業単元: 情報科学U
[2] 問題文 このリンク先の課題7です。mhtml:http://www.s.kyushu-u.ac.jp/~z6ty02in/TEXT/7.mht!7.files/frame.htm
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月9日金曜日の朝8:40まで
[5] その他の制限: 特にありません。

よろしくお願いしますm(__)m
10290:2006/06/07(水) 01:00:08
>>100
採点基準が書いてあるんですけど、配列をちゃんと使えてると書いてあるのでおそらく。
103101:2006/06/07(水) 01:00:48
リンクは[ html:http://www.s.kyushu-u.ac.jp/~z6ty02in/TEXT/7.mht!7.files/frame.htm ]これ全部をコピペして下さい。
104デフォルトの名無しさん:2006/06/07(水) 01:01:08
すみません、重複スレの方に書いてしまいましたのでこちらに。

ttp://www.gifu-nct.ac.jp/elec/deguchi/sotsuron/morita/node41.html


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

よろしければ、どなたかお願いします。
105デフォルトの名無しさん:2006/06/07(水) 01:04:41
>>104
#include されてるファイルを<cstdio>のようにc付けてinclude。
拡張子を.cppに。
106101:2006/06/07(水) 01:05:52
>>103のコピペでも飛べないみたいなので、
http://www.s.kyushu-u.ac.jp/~z6ty02in/TEXT/mokuji.htmlの「配列(2)」を見てください。ここの課題7です。
何度もスマソ
107デフォルトの名無しさん:2006/06/07(水) 01:11:26
Firefoxじゃ見れん
108デフォルトの名無しさん:2006/06/07(水) 01:19:44 BE:46585038-#
>>106
#include<stdio.h>
#include<stdlib.h>
#define N 10
void bubblesort(int* a,size_t n){size_t i,j;int tmp;
for(i=0;i<n-1;i++)for(j=n-1;j>i;j--)
if(a[j]<a[j-1]){tmp=a[j];a[j]=a[j-1];a[j-1]=tmp;}}
int main(void){int i,n[N];char tmp[100];
for(i=0;i<N;i++){fgets(tmp,sizeof(tmp),stdin);n[i]=atoi(tmp);}bubblesort(n,N);
for(i=0;i<N;i++)printf("%i\n",n[i]);return 0;}
109101:2006/06/07(水) 01:29:40
>>108すみません。制限は特にないと書きましたが、
stdlib.hは習っていないのと、void bubblesortも使ってはいけないことになってると思います…
if文、while文、for文あたりしか習ってないので、それでお願いします。お願いします。
110デフォルトの名無しさん:2006/06/07(水) 01:40:23 BE:77640285-#
>>109
>void bubblesortも使ってはいけないことになってると思います

アホか。bubblesortこそが目的の関数だろが。
111101:2006/06/07(水) 01:47:05
>>110いえ…今までに習ったif,while,for,breakの範囲内で、
リンク先資料の「バブルソート(1/7)」から「バブルソート(7/7)」までの概念を利用して
プログラムせいということなんです。また明日考えてみますが、もうだめぽです
112デフォルトの名無しさん:2006/06/07(水) 01:49:46 BE:62112948-#
>>111
言ってる意味がわからん。

>「バブルソート(1/7)」から「バブルソート(7/7)」までの概念を利用してプログラム

したものがvoid bubblesortなんだが。
113101:2006/06/07(水) 01:59:49
>>112えーと、授業では、Meado2でプログラムして、cygwinでgccでコンパイル・実行するんですが、
voidっていう命令文は習っていないです。
ただ>>108をよーく( ゚д゚)みるとなんだかわかるような気はしてくるんですが…
114デフォルトの名無しさん:2006/06/07(水) 02:06:07 BE:108696487-#
voidは命令文ではない
115101:2006/06/07(水) 02:07:55
108のの中身とにらめっこしながら頑張ってみます。ありがとうございました。
116デフォルトの名無しさん:2006/06/07(水) 02:17:27
こういう書き方にして欲しかったんじゃないか?
#include<stdio.h>
#define N 10
int main(void){
int i,j,tmp,n[N];
char buf[100];
for(i=0;i<N;i++){
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&n[i]);
}
for(i=0;i<=N-2;i++){
for(j=N-1;i<j;j--){
if(n[j]<n[j-1]){
tmp=n[j];
n[j]=n[j-1];
n[j-1]=tmp;
}
}
}
for(i=0;i<N;i++)printf("%d\n",n[i]);
return 0;
}
117デフォルトの名無しさん:2006/06/07(水) 02:30:33 BE:34938263-#
そもそも「習ってないから使うな」の意味がわからん。
習ってないと何か問題でもあるんだろうか。
118デフォルトの名無しさん:2006/06/07(水) 02:34:34
習ったことはさっぱり分かってないのに、習ってないということは分かるんだなw
119デフォルトの名無しさん:2006/06/07(水) 03:51:14
[1] 授業単元: プログラム技法
[2] 問題文 
1、あなたの夢をstrcpy関数で文字配列に代入し、表示しよう

文字列を入れる変数my_dreamを300文字まで代入できるように宣言し、変数my_dreamに
あなたの夢を代入し表示せよ。つまりあなたの「夢」を、scanf関数でキーボードから読み込む必要はない。
例、野球選手になりたい
  サッカー選手になりたい  など
2、英字文字列を入力し、中に文字'a'が入っていたら、そのすべてを削除した文字列を出力するプログラムを作成せよ。
3、出力にあるように文字列S2を文字列S1のn番目に挿入するプログラムを作成せよ。

出力例
S1:abcdefg
S2:hijkl
n:3
the output string is: abchijkldefg
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] cygwin
 [3.3] 言語:C言語
[4]明日正午まで

ではよろしくお願いいたします。
120デフォルトの名無しさん:2006/06/07(水) 04:00:08
(1)単元名:C言語プログラム基礎演習2
(2)問題文:問14-5
プログラム(A)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1991.txt
は、文字列を斜めに表示するプログラムである。
このプログラムの文字列操作部分を関数に置き換え、
同一の動作をするプログラムを作った。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1992.txt
書き換え後の下記プログラムの中の、
-1-:関数宣言部
-2-:関数呼び出し部
-3-:関数部
がそれぞれどのようになるかを示せ。
尚、関数で用いる引数は二つまでとする。

(3)環境:Linux
  コンパイラ:gcc
  言語:C
(4)期限:6/8
121デフォルトの名無しさん:2006/06/07(水) 05:36:20
122デフォルトの名無しさん:2006/06/07(水) 08:29:03
闇に隠れて生きる 俺たちゃ妖怪人間なのさ♪
123デフォルトの名無しさん:2006/06/07(水) 08:43:39
>>79 をどなたかよろしくお願いします..orz
124デフォルトの名無しさん:2006/06/07(水) 09:04:46
>>120
#include <stdio.h>
#include <string.h>

void print(char a[],char b[][8]);

int main(void){
char a[8]="aichi";
char b[10][8]={0};
int i,j,k;
k=strlen(a);

print(a,b);

for(i=0;i<k;i++){
printf("%s\n",b[i]);
}
return 0;
}

void print(char a[],char b[][8]){
int i,j,k;
k = strlen(a);
for(i=0;i<k;i++){
for(j=0;j<i;j++)b[i][j]=' ';
b[i][i]=a[i];
}
}
125デフォルトの名無しさん:2006/06/07(水) 09:43:02
[1] プログラミング
[2] 標準入力から文字を読み込んで特定の文字の連続たとえばowari
を入力した場合終了するようなプログラムを作成
[3] 環境
 [3.1] xp
 [3.2] gcc 3.4
 [3.2]どちらでも可
[4] 今週中
よろしくお願いします!
126デフォルトの名無しさん:2006/06/07(水) 09:54:29
127デフォルトの名無しさん:2006/06/07(水) 09:59:59
>>125
#include <stdio.h>
#include <string.h>

void main(){
char str[250];
while(1){
scanf("%s", str);
if (strcmp(str, "owari") == 0) break;
}
}
128デフォルトの名無しさん:2006/06/07(水) 12:43:46
>>120
#include <stdio.h>
#include <string.h>

void naname(char*, int);//宣言

int main(void){
char a[8]="aichi";
int i,j,k;
naname(a, strlen(a));//呼び出し
return 0;
}

void naname(char *s, int n){//関数
for(int i = 1; i <= n; i++, s++)printf("%*c\n", i, *s);
}
129デフォルトの名無しさん:2006/06/07(水) 16:40:44
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2000.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: Cのみ
[4] 期限: 2006/06/10
[5] その他の制限: ファイル操作を用いてコマンドラインに入力されたファ
イル名から中身を読み取る。
お願いします。。
130デフォルトの名無しさん:2006/06/07(水) 17:05:01
>>129
これが原文?
131デフォルトの名無しさん:2006/06/07(水) 17:08:31
>>129
原文は長いので、かなりまとめています。
132デフォルトの名無しさん:2006/06/07(水) 17:10:44
(1)単元名:プログラミングA
(2)問題文:
次のアルファベットのキーワードを入力して計算する関数電卓プログラムを作成しなさい。
sin, cos, tan, arcsin, arccos, arctan, ln, log, exp, sqr, rad(入力データをラジアン単位にする),
deg(入力データを度を単位とする), end(プログラムの終了)


(3)環境:Win
  コンパイラ:Visual Studio 2003.net
  言語:C
(4)期限:6/9
133デフォルトの名無しさん:2006/06/07(水) 17:11:55
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
10個の整数を入力し、最大値、最小値を表示し、
さらに、入力された10個の数字を小さい順に並び替えするプログラムを作成せよ。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: visual c++ 2005
 [3.3] 言語: C++
[4] 期限:6月8日まで
[5] その他の制限:習ったもの if for do while
134デフォルトの名無しさん:2006/06/07(水) 17:15:14
>>131
アップロードできる大きさなら原文貼ってちょ。
135デフォルトの名無しさん:2006/06/07(水) 17:18:17
>>133
要するに選択法?
136デフォルトの名無しさん:2006/06/07(水) 17:24:01
137デフォルトの名無しさん:2006/06/07(水) 17:32:54 BE:23292926-#
138デフォルトの名無しさん:2006/06/07(水) 17:33:43
139デフォルトの名無しさん:2006/06/07(水) 17:34:32
>>132
入力例は?
140デフォルトの名無しさん:2006/06/07(水) 17:37:04
141デフォルトの名無しさん:2006/06/07(水) 17:48:22
>>135,137,138,140
どうもありがとうございました
142デフォルトの名無しさん:2006/06/07(水) 17:55:49
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
前スレ152の貯金プログラムを拡張して、額の表示の際に3桁ごとにコンマを入れる形式をとるようにせよ.下記例のようにどのような桁数でも桁数に応じてきちんと表示できるようにすること.
12円⇒12円
789012円⇒789,012円
1000001円⇒1,000,001円
1234567890円⇒1,234,567,890円

[3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョン: Visual Studio.NET2003
 [3.3] 言語: C++
[4] 期限: 6月9日まで
[5] その他の制限: まだ初期で、if,for,whileまで習いました。
どうか、よろしくお願いします。

143デフォルトの名無しさん:2006/06/07(水) 17:57:39
>>139
例とか書いてないんです。
自分でやって#include <math.h>をヘッダに持ってきて
double acos( double x );とかを使うんだと思うのだが、
先生の説明が意味不明でわからんのです。
144デフォルトの名無しさん:2006/06/07(水) 18:07:15
>>143
sin rad 10
みたいな入力もあるのかなと思ってね
145デフォルトの名無しさん:2006/06/07(水) 18:09:19
>>142
前スレというか、参考にするソースが分かるように参照した方が・・・
146デフォルトの名無しさん:2006/06/07(水) 18:20:03
>>143
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2004.txt
入力はlog 10のようにスペースが入る
後、>>144みたいなのは無理
147デフォルトの名無しさん:2006/06/07(水) 18:24:17
>>146
ありがとう!本当に助かりました。
148142:2006/06/07(水) 18:32:19
>>145
すいません、ソースは
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/152
です。
149104:2006/06/07(水) 19:16:51
>>105さん
お答えありがとうございます!

おっしゃる通りに直してみたのですが、

neu.obj : error LNK2001: 外部シンボル ""double __cdecl drand48(void)" (?drand48@@YANXZ)" は未解決です
Debug/neu.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

というエラーが出てしまい、ビルド出来ませんでした。
コンパイルは問題ないのですが・・・。
何度もすみません、よろしければどなたかお願いします。
150デフォルトの名無しさん:2006/06/07(水) 19:48:29
151デフォルトの名無しさん:2006/06/07(水) 21:09:19
[1] 授業単元: プログラムの解読
[2] 問題文(含コード&リンク): 以下のc1、c2の中にあるプログラムを実行し、どのような働きをしているかを
解釈せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2006.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
[4] 期限: 2006/6/09
[5] その他の制限:特にありません
少し多いですがよろしくお願いいたします
152デフォルトの名無しさん:2006/06/07(水) 21:29:06
[1] 授業単元:プログラム実習T
[2] 問題文(含コード&リンク):

好きな文字列を入力する、その後に#を含むチェック文字列を入力し
#に該当する部分が何かを出力させるプログラムの作成
(例)
abcdeと入力、a#cと入力すると、結果は#=b
aabccと入力、a#ccと入力すると、結果は#=b
abcbadと入力、ab#baと入力すると、結果は#=c
aabbccddと入力、b#aと入力すると、結果は該当なし

 [3.1] WindowsXP
 [3.2] gcc
 [3.3] C言語
[4] 期限:6月8日
お願いします
153デフォルトの名無しさん:2006/06/07(水) 22:28:04
>>152
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char sLine1[1024];
char sLine2[1024];
char* p2;
char* p1;
gets(sLine1);
gets(sLine2);
p2 = strchr(sLine2, '#');
if(p2 != NULL) { *p2 = '\0'; p2++; }
else *p2 = (int)"ぬるぽ";
for(p1=sLine1 ; (p1=strstr(p1, sLine2)) != NULL && p1[p2-1-sLine2] != '\0' ;p1++) {
if(strstr(p1+(p2-sLine2), p2) == p1+(p2-sLine2)) {
printf("#=%c\n", p1[p2-1-sLine2]);
return 0;
}
}
printf("該当なし\n");
return 0;
}
154デフォルトの名無しさん:2006/06/07(水) 22:29:17
だれか>>90頼む
155デフォルトの名無しさん:2006/06/07(水) 22:35:47
a[1]〜a[10]までの配列を
ランダムに並び替えるプログラムを教えてください。
お願いします。
156デフォルトの名無しさん:2006/06/07(水) 22:37:06
>>154
階乗のこと?再帰を使えば楽じゃ〜ん。
157デフォルトの名無しさん:2006/06/07(水) 22:57:58
[1] プログラミング実習(C++)
[2]
#include<iostream>
using namespace std;
class Person{
int no;
char name[20];
public:
void Print();
};
void Person::Print(){
cout<<"学籍番号:"<<no<<endl;
cout<<"氏 名:"<<name<<endl;
}
int main(void){
Person man;
man.Print();
return 0;
}
上記のプロフラムを以下のように変更せよ。
1:ディフォルトコンストラクタを記述する。
2:各メンバ変数の初期値を1つずつ引数として与えるコンストラクタを記述する。
3:メンバ変数両方の初期値を引数として与えるオブジェクト生成の記述を追加して実行する。
 ・学籍番号の初期値を引数で与える場合:99999を与える。
 ・名前の初期値を引数で与える場合:初期値1を与える。
 ・学籍番号と名前の初期値を引数で与える場合:学籍番号に10000、名前に初期値2。
 ・引数で与えない場合:学籍番号は0、名前はブランクとする。
[3.1] WindowsXP
[3.2] VC
[3.3] C++
[4] 期限:2006年3月6日まで
よろしくお願いします。
158デフォルトの名無しさん:2006/06/07(水) 23:01:51
【質問テンプレ】
[1] 授業単元:フーリエ解析
[2] 問題文(含コード&リンク):
次の関数に対し、高速フーリエ変換を行え。
ただしビットリバーサル操作は以下に示すものを用いるものとする。
f(t) =
 0 (-T/2 <= t < -1)
 1 (-1 <= t <= 1)
 0 (1 < t <= T/2)
周期:任意 (勝手に決めていいようです。)

・ビットリバーサル操作 (N:サンプリング数)
pw2=log((float)N)/log(2.0);
rv[0]=0;
pr=1;
for (i=0;i<=pw2-1;++i) {
for (j=0;j<=pr-1;++j) {
rv[pr+j]=rv[j]+N/(2*pr);
}
pr=2*pr;
}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年06月12日
[5] その他の制限:
データの出力は、サンプリングした値と(多分)離散フーリエ係数を見やすいように出力してくださいとのこと

#自分で調べたところ、参考になりそうな気がするモノ(Java)
http://www.gulf.or.jp/~damayan/algo/FFT.html
159デフォルトの名無しさん:2006/06/07(水) 23:02:33
[1] 授業単元: C language
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2007.txt
[3] 環境
 [3.1] OS: Windows (cygwin)
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: ([2006年6月8日12:00amまで]
[5] その他の制限: 特になし

前スレで頼んだ者ですが、上記のプログラムで課題の内容はクリアして
いますでしょうか?よろしくお願いいたします。
160デフォルトの名無しさん:2006/06/07(水) 23:20:51
>>156
配列を使って右揃えに出力するのがよく分からなくて。
161デフォルトの名無しさん:2006/06/07(水) 23:25:15
#include<stdio.h> /* >>90 */
#define n (10000000)
void b(int *,int );
void q(int *,int);
int main(int argc,char **argv){
    int p,d[10]={1,0};
    /*d[0]=1;*/
    for(p=1;p<54;p++){b(d,p);q(d,p);}
    return 0;
}
void b(int *d,int p){/*積*/
    int l,m=0;
    for(l=0;l<10;l++){
        d[l]=d[l]*p+m;m=d[l]/n;d[l]%=n;
    }
}
void q(int *d,int p){/*表示*/
    int b;
    printf("%2d! = ",p);
    for(b=9;b>=0;b--)printf("%07d",d[b]);
    printf("\n");
}
162デフォルトの名無しさん:2006/06/08(木) 00:12:29 BE:67935375-#
>>156
ほんとにこの問題文で正しいとしたら、ポイントは再帰でも配列でもなく多倍長整数。
163161:2006/06/08(木) 00:41:11
>>90 >>93に沿うよう修正
void q(int *d,int p){/*表示*/
    int b=10;
    printf("%2d! = ",p);
    while(!d[--b])printf("       ");/*半角スペース7つ分*/
    printf("%7d",d[b--]);
    while(~b)printf("%07d",d[b--]);
    printf("\n");
}
164101:2006/06/08(木) 00:42:48
遅ればせながら、ありがとうございました。
165デフォルトの名無しさん:2006/06/08(木) 00:51:35
:1,$s/#&160/ /g
166デフォルトの名無しさん:2006/06/08(木) 01:37:06
53!て70桁になるのか。
#include <stdio.h>
int mul(int dac[],int len,int arg){
int i;
for(i=0;i<len;++i) dac[i] *= arg;
for(i=0;i<len-1;++i){
dac[i+1] += dac[i]/10;
dac[i] %= 10;
}
return (dac[len-1] < 10);
}
void view(int buff[],int len){
int i;
for(i=len-1;0<=i;--i) putchar('0'+buff[i]);
putchar('\n');
}
int main(){
int i,buf[70] = {1};
for(i=1;i<=53;++i){
if(!mul(buf,sizeof(buf)/sizeof(buf[0]),i)){
puts("error!");
return 1;
}
printf("%02d!=",i);
view(buf,sizeof(buf)/sizeof(buf[0]));
}
return 0;
}
167デフォルトの名無しさん:2006/06/08(木) 01:43:52
[1] 授業単元: オペレーティングシステム
[2] 問題文(含コード&リンク): C言語を用いて、子プロセスを生成して何らかの処理を行い、
@親プロセスがビジーウェイトを用いて子プロセスの終了を待つプログラム
Aビジーウェイトをしないプログラム
を書け。
[3] 環境
 [3.1] OS: VineLinux3.2 
[3.2] コンパイラ名とバージョン: gcc 3.3.2
 [3.3] 言語: C
[4] 期限: 2006年6月8日17時
[5] その他の制限: forkを少し習いましたが、それ以外は習っておりません。

よろしくお願いします。
168152:2006/06/08(木) 02:05:11
>>153
>else *p2 = (int)"ぬるぽ";

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

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


170デフォルトの名無しさん:2006/06/08(木) 03:18:30
#include<stdio.h> /* >>169 12共通 */
/* (1 */
int main(void){
    int s,x,i,n=0,d;
    printf("Input date:");scanf("%d",&d);
    if(d<0)return printf("no input\n");
    x=i=s=d;n++;
    do{
        printf("Input date:");scanf("%d",&d);
        if(d>=0){s+=d;if(x<d)x=d;if(i>d)i=d;n++;}
    }while(d>=0);
    return printf("ave=%f max=%d min=%d\n",(double)s/n,x,i);
}
/* (2 */
int main(void){
    int s,x,i,d,n,j;
    printf("n=");scanf("%d",&n);
    if(n<=0)return printf("illegal number\n");
    printf("Input date:");scanf("%d",&d);
    x=i=s=d;
    for(j=1;j<n;j++){
        printf("Input date:");scanf("%d",&d);
        s+=d;if(x<d)x=d;if(i>d)i=d;
    }
    return printf("ave=%f max=%d min=%d\n",(double)s/n,x,i);
}
171デフォルトの名無しさん:2006/06/08(木) 03:42:09
>>169
このスレ初参戦でコード書いてみたけど、170さんに先を越されたw
そっか、コードを短くせんとあかんのやね。↓一応投稿。オーバーせんかな?
#include <stdio.h>
#include <stdlib.h>
// 引数は個数入力場合trueにする
void func( bool flag ){
int i, sum, max_num, value, max, min;
char buf[ 32 ];
if( flag ){
printf("n="); max_num = atoi( gets( buf ) );
}else{ max_num = 0; }
i = sum = 0;
while( true ){
if( max_num >= 1 && i >= max_num ) break;
printf("Input data:"); value = atoi( gets( buf ) );
if( max_num == 0 && value < 0 ) break;
if( i == 0 ){ max = value; min = value; }
sum += value;
if( max < value ) max = value;
if( min > value ) min = value;
i++;
}
if( i >= 1 ){ printf("ave=%3.2f max=%d min=%d\n", (float)sum/i, max, min ); }
}

int main( void ){
func( false );
func( true );
}
172デフォルトの名無しさん:2006/06/08(木) 04:27:12
>>152
入力文字列に#が入っていない時にこのコードに来るので、ここは
else return;
で構わないと思われ。
173デフォルトの名無しさん:2006/06/08(木) 04:38:02
>>157
3の意味が分からない。
2は引数がnoとnameの2つあるということ?
あと期限が分からない。
174デフォルトの名無しさん:2006/06/08(木) 05:26:08
>>142
static変数とポインタ使ってしまったけど大丈夫かな。制限よく読んでなくてごめん。
#include <stdio.h>
#include <string.h>
char name[256] = {0}; int amount = 0;
char *money2str(int money){
int i,j;
static char str[64],str2[64];//整形用文字列バッファとカンマ付加後のバッファ
sprintf(str,"%d",amount);
for(i=strlen(str)-1,j=0;i>=0;i--){
str2[j] = str[i]; j++;
if(i>=1 && (j+1)%4==0){str2[j]=',';j++;}
}
str2[j]='\0';
//配列リバース
for(i=0;i<strlen(str2);i++){ str[strlen(str2)-i-1] = str2[i]; }
str[i]='\0';
return str;
}
void input(void){
float f;
printf("%sさん\n現在の貯金額は,%s円です. \n今回はいくら貯金しますか?(単位:千円):",name,money2str(amount));
scanf("%f",&f); amount += (int)(f*1000);
}
int main(){
printf("名前を入力してください:"); scanf("%s",name); input(); input(); input();
printf("%sさん.\n全部で%s円貯まりました.\nよくがんばりました.\n",name,money2str(amount));
return 0;
}
175デフォルトの名無しさん:2006/06/08(木) 05:32:38
1)情報システム演習
2)任意の整数を配列に読み込み、
関数を使って足し算を行うプログラムを作成せよ。
3)リナックス gcc C言語
4)正午

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2008.txt
こんな感じで組み立ててみたんですが、
どうも上手い具合にいきません・・・、
よろしくお願いします。
176デフォルトの名無しさん:2006/06/08(木) 05:49:57
#include<stdio.h>
# define MAX 8;
int sub(int b, int n){
int i;
for(i=1;i<n; i++){
b[0]+=b[i];
}
}
int main(void){
int n,i;
int a[MAX];
printf("n=");
scanf("%d",n);
for(i=0;i<n;i++){
printf("a[%d]=",i);
scanf("%d",a);
}
sub(a,n);
printf("total=%d \n",a[0]);
return 0;
}
177デフォルトの名無しさん:2006/06/08(木) 05:51:12
#include <stdio.h>
#define MAX 8

int sub(int *b, int n){
int i;
for(i=1;i<n; i++){
b[0]+=b[i];
}
}

int main(void){
int n,i,a[MAX];
printf("n=");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
sub(a,n);
printf("total=%d \n",a[0]);
return 0;
}
178デフォルトの名無しさん:2006/06/08(木) 06:43:56
>>169は#include<iostream>から始まるやつなんですけど、それでも>>170>>171さん達が書いたようなプログラムになるんですか?
179デフォルトの名無しさん:2006/06/08(木) 06:49:42
>>178
標準関数が使えるかどうかの差と思う。
printfが使えなかったらcout、
scanfが使えなかったらcinで試してみ。
180デフォルトの名無しさん:2006/06/08(木) 07:03:09
>>149
CをC++に変換といっても、全く同じコードで問題ないよ。
リンクエラーの原因はdrand48()が定義されていないため。
これは検索したところUNIX専用のランダム関数のようなので、VCでビルドするには
double drand48();
を消して
#define urand() ( drand48() * (Rhigh - Rlow) + Rlow )

#define urand() ( rand() * (Rhigh - Rlow) + Rlow )
に置き換えればいい。
181デフォルトの名無しさん:2006/06/08(木) 07:21:51
>>179そうですか…標準関数はわからないです   ほんとに申し訳ないんですが、>>169のプログラムを最初が#include<iostream>のやつで書いてくれる人いましたらお願いします。
182デフォルトの名無しさん:2006/06/08(木) 07:24:25
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2009.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 4.0
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限
[5] その他の制限: 配列宣言を除きポインタで処理せよ、とのことです。

よろしくお願いします
183デフォルトの名無しさん:2006/06/08(木) 07:32:07
strstr()使ったらだめかな、かな?
184デフォルトの名無しさん:2006/06/08(木) 08:09:46
>>182
「T2の先頭部分がT1の先頭部分に含まれるときは1を」
だとしたら表示例のABC BC yesは違うことになるけどいいの?
とりあえず「T2の文字列がT1の文字列に含まれてるかどうか」ということで作ってみた。
#include <stdio.h>
int chkmatch(char *t1, char *t2){
int i; bool find = false;
char *save1,*save2;
while( *t1 ){
if( *t1 == *t2 ){
save1 = t1;save2 = t2;find = true;
while( *t2 ){
if( *t1 != *t2 ){ find = false;break; }
t1++; t2++;
}
t1 = save1;t2 = save2;
if( find ) break;
}
t1++;
}
return find?1:0;
}

int main( void ){
char buf1[256],buf2[256];
gets(buf1);gets(buf2);
printf("%s",chkmatch(buf1,buf2) ? "yes":"no" );
return 0;
}
185184:2006/06/08(木) 08:17:58
C言語のようなのでboolはintに。trueは1に。falseは0にしてくらはい。
186171:2006/06/08(木) 08:27:25
標準関数とはprintfやscanfという関数だけど、これらを使ってはだめっていう制限あるの?
なければ別にこれで問題ないと思う。
VCではiostreamだけでもprintfやscanfは使えたよ。
187186:2006/06/08(木) 08:29:24
↑は>>181に対するレス。
>>172>>168に対するレス。初心者でスマソ。
188デフォルトの名無しさん:2006/06/08(木) 09:19:21
>>153 >>168
ガッ ガッ
189デフォルトの名無しさん:2006/06/08(木) 10:22:22
どなたか>>158をお願いします。
190デフォルトの名無しさん:2006/06/08(木) 10:43:19
どなたか>>167をお願いします。
191デフォルトの名無しさん:2006/06/08(木) 11:01:47
>>180
#define urand() ( rand()/(double)RAND_MAX * (Rhigh - Rlow) + Rlow )
では?
192デフォルトの名無しさん:2006/06/08(木) 11:52:20 BE:23292162-#
193180:2006/06/08(木) 14:06:42
>>191
そか。そっちが正しい。ごめん。
drand48()は0.0以上1.0未満を返すみたいだね。
194デフォルトの名無しさん:2006/06/08(木) 14:50:26
>>167
子プロセスはabcdeを表示。waitしない場合はコメントにある行を消す。
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
void func(){
int i;pid_t pid;
pid = getpid();
for(i=0;i<5;i++){ sleep(1); printf("[%d]%c\n",pid,'a'+i); }
}
int main(){
pid_t p_pid,pid;
p_pid=getpid();
printf("[%d]start\n",p_pid);
switch(pid=fork()){
case 0:func();return 0;/* child */
case -1:perror("fork");break;
default:printf("[%d]child pid = %d\n",p_pid,pid);break;/* parent */
}
/* ↓waitしない場合はこれを消す */
pid=wait(0);
printf("[%d]pid = %d end\n",p_pid,pid);
printf("[%d]end\n",p_pid);
return 0;
}
195デフォルトの名無しさん:2006/06/08(木) 15:48:17
なんだなんだー、難しい宿題ばっかだなぁ。いや、難しいんじゃない、答えるのが面倒なだけか。
もっと俺でもサクッと回答できる宿題を出してくれYO!
196デフォルトの名無しさん:2006/06/08(木) 16:47:41
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):
標準入力から7個の数値を入力し、その後削除する数値を1つ入力して二分探索木のノードを削除するプログラム。
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日
[5]その他の制限: 削除前と後の行きがけ順を表示させる。
197デフォルトの名無しさん:2006/06/08(木) 17:00:11
>>195
難しいというか手間が掛かる割りに面白くない問題だろ?
枯れたアルゴリズムを書くだけとか。
198デフォルトの名無しさん:2006/06/08(木) 17:18:47
[1] 授業単元: 数値解析
[2] 問題文
次式の積分を台形公式、シンプソンの1/3公式を用いて計算し、 精度につい
て考察せよ。
f(x)=3x^2+3x+6 a=0 b=10

また、次式のx=1.0における微分値を、n=2、6、10の場合について求
め 精度について検討せよ。
y=3x^n+4x+5
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gccです。バージョンは分かりません。
 [3.3] 言語:C言語
[4] 期限: 11日までです。
[5] その他の制限:CとC++を少し学習しました。

宜しくお願いします。
199デフォルトの名無しさん:2006/06/08(木) 17:20:54
シンプソンかぁ、なんか大学のときにやった覚えがある・・・もう忘れてるYA!w
明日はワールドカップ開催だなぁ。ここの面倒はしばらく見てやれんけど
みんながんばってくれ!どうせ学校で習っているアルゴリズムなんざ
既に過去の人たちが発見して教科書に記して伝授しているわかりきったものに過ぎないから。
それをC言語で記述できない人は、C言語の扱い方そのものを理解してないってことだから
やり直しー!
200デフォルトの名無しさん:2006/06/08(木) 18:06:55 BE:87345959-#
つーか、「精度について検討せよ」なんて抽象的な問題をどうしろと。
201デフォルトの名無しさん:2006/06/08(木) 18:48:04
>>200
とりあえずプログラムを作ってやれば良いのかと。
考察とかは本人がやるでしょ
202デフォルトの名無しさん:2006/06/08(木) 19:39:52
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double func_y(double x){ return (3 * x * x + 3 * x + 6); }
int main(void){
int i, j, n = 50;
double *y; double xa = 0.0, xb = 10.0; double z = 0.0, h = 0.0, x, s, q;

y = (double*)malloc(sizeof(double) * (n + 1));//配列確保
if(y == NULL){puts("Error"); return 1;}
h = (xb - xa) / (double)n;//刻み計算
for(i = 0; i <= n; i++){
x = xa + h * (double)i;//関数値計算
y[i] = func_y(x);
}
for(i = 1; i < n; i++)z += 2.0 * y[i];//数値積分
s = h / 2.0 * (y[0] + z + y[n]);
printf("Ans = %8.4lf\n", s);//表示
free(y);
return 0;
}
とりあえず、台形公式おいておきますね
203デフォルトの名無しさん:2006/06/08(木) 21:30:23
すみません、どなたか
>>159 をよろしくお願いいたします。
204デフォルトの名無しさん:2006/06/08(木) 21:39:29
[1] 授業単元: プログラム実習
[2] 問題文:次のプログラムを、サーバがクライアントからのデータを受信したら
      そのデータをそのままクライアントに返し、クライアントが返された
データを画面に表示するEchoサーバを作りなさい
[3] 環境
 [3.1] OS: Solaris
 [3.2] gcc
 [3.3] 言語: どちらでも可
[4] 期限:2006/06/09の午後4時まで
↓がそのプログラムです。よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2016.zip
205デフォルトの名無しさん:2006/06/08(木) 22:02:36
>>203
してない
データの削除はできてるけど、任意のデータを選んで削除する機能は実装されてない
見た感じはね
206デフォルトの名無しさん:2006/06/08(木) 22:38:01
>>205さん
そうですか、
もし差し支えなければ、そこの入力をお願いできませんでしょうか?
よろしくお願いします。
207デフォルトの名無しさん:2006/06/08(木) 23:16:01
>>169の1の問題をテキスト見て自分なりにやったら

int x,i,n,max,min,sum=0;
cout<<"Input date:";
cin>>x;
max=x;
min=x;
while(x>=0)
{
for(i=0;i<n;i++)
sum=sum+i
if(x>max)
max=x;
else if(x<min)
min=x;
cout<<"Input date:";
cin>>x;
}
cout<<"max="<<max<<"min="<<min<<"ave="<<static_cast<double>(sum)/n<<endl;
return 0;
}
となって最大、最小値は出力できるんですけど、平均値だけ数値がおかしくなってしまいます。どなたか手直しお願いします。
208デフォルトの名無しさん:2006/06/08(木) 23:21:59 BE:122283779-#
>>207
double sum
209デフォルトの名無しさん:2006/06/08(木) 23:32:50
>>206
int cancel(char *id1){
int x, item, info1, count = 0;
struct item *previous, *key;
x = hash(id1);
key=table[x], previous=table[x];
item = search(id1);
if(item>1){
printf("%d item found. Input INFO to be canceld\n",item);
scanf("%d", &info1);
while((strcmp(id1, key->id) != 0 || info1 != key->info) && key->next != NULL)
{ previous = key; key = key->next; count++;}
if(count == 0) table[x] = key->next;
else previous->next = key->next;
printf("[%s,%d] canceld.\n",key->id,key->info);
free(key);
}
else if(item==1){
table[x] = NULL;
printf("[%s,%d] canceld.\n",key->id,key->info);
free(key);
}
return item;
}
指定されてお願いしますとかいわれたら
やるしかねーじゃねーかYO
多分、動作的には同じになったと思うけど
210デフォルトの名無しさん:2006/06/08(木) 23:37:57
>>208
アホ。

>>207
落ち着こうぜ、あんたはsumに何を足しているんだ?
それが判ったら今度からは宿題スレで聞くんじゃないぞ。
211デフォルトの名無しさん:2006/06/09(金) 00:03:49
sumをどうすればいいんですか?
212デフォルトの名無しさん:2006/06/09(金) 00:08:20
>>211
sumにxを足すんだろ。
213デフォルトの名無しさん:2006/06/09(金) 00:23:28
sumにxを足しても数値が変なんですけど・・・
214デフォルトの名無しさん:2006/06/09(金) 00:24:44
いい加減スレ違いだがね。
215デフォルトの名無しさん:2006/06/09(金) 07:01:20
はじめまして よろしくおねがいします

[1]単元名:ソフトウェア実験T
[2]問題文:
文字型配列に文字列を読み込み、
その文字列を文字型配列を指すポインタを使用し、
文字列中の大文字は小文字に、
小文字は大文字に変換するプログラムを作成せよ。
入力:TakeyaBu YakeTa
出力:tAKEYAbU yAKEtA
このように結果が出力されるようにしなさい。
[3]環境
 [3.1]OS:Linux
 [3.2]コンパイラ:gcc
 [3.3]言語:C
[4]6・12まで
216デフォルトの名無しさん:2006/06/09(金) 08:32:44
#include <stdio.h>
#include <ctype.h>

int main(){
char str[100], *p = str;
printf("入力:");
gets(str);
while(*p){
if (isupper(*p)){
*p = tolower(*p);
} else if (islower(*p)){
*p = toupper(*p);
}
p++;
}
printf("出力:%s\n", str);
return 0;
}
217デフォルトの名無しさん:2006/06/09(金) 15:06:38
[1] 授業単元: プログラム演習
[2] 問題文:20 個の自然数を要素とする1次元配列ar[20]={ 57, 563, 381, 239, 345, 821,
881, 979, 447, 461, 221, 683, 743, 379, 597, 149, 223, 127, 231, 159}に関し,@要素の順
番を変えずに表示させる.A降順(大から小)に表示させる.B素数のみを昇順(小
から大)に表示させる.C素数の和を表示させるプログラムを作成し,実行しなさ
い.ただし,int 型のポインタ配列(例:int *par[20])を定義し,ar[20]内の数の順序
を変更するときは,ar[20]自体を全く変更させず,par[20]の要素を操作すること.ま
た,par[20],ar[20]以外の配列を定義・使用することは認めない.
[3] 環境
 [3.1] OS: linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:2006/06/13
[5] よろしくおねがいします
218デフォルトの名無しさん:2006/06/09(金) 15:49:06
>>217
1〜4のプログラムは別々に、それとも1つのプログラムにして
1〜4の入力で選択するとか?
219デフォルトの名無しさん:2006/06/09(金) 16:34:35
廃墟
220198:2006/06/09(金) 17:16:19
>>202
ありがとうございます。
シンプソンの1/3公式と微分もお願いできないでしょうか。
お願いします。
221デフォルトの名無しさん:2006/06/09(金) 17:24:00
#include <stdio.h>
#include <stdlib.h>
double func_y(double x){ return (3 * x * x + 3 * x + 6); }
int main(void){
double *y;
double xa=0.0, xb=10.0;//積分範囲
double z1=0.0, z2=0.0, h=0.0, x, s;
int i, j, n=50;

y=(double*)malloc(sizeof(double)*(n+1));
if(y==NULL) puts("Error"), exit(1);
h=(xb-xa)/(double)n;//刻み計算
for(i=0;i<=n;i++){
x=xa+h*(double)i;//関数値計算
y[i]=func_y(x);
}
for(i=1;i<=n-1;i+=2) z1+=4.0*y[i];//数値積分
for(i=2;i<=n-2;i+=2) z2+=2.0*y[i];
s=(h/3.0)*(y[0]+z1+z2+y[n]);
printf("Ans = %8.4lf\n", s);//表示
free(y);
return 0;
}
じゃあ、シンプソンおいておきますね
222デフォルトの名無しさん:2006/06/09(金) 17:37:27
[1] 授業単元: プログラミング通論
[2] 問題文(含コード&リンク):
文字列 s、f、t が与えられたとき、
文字列sの中で最初に現れるfをtに置き換えた文字列を返す 関数replace を作成せよ。

もし文字列fが見つからなかった場合は s を返すこととし、malloc を利用して実現すること。
関数の書き出しは、以下のようにすればよい。
char* replace(char *s, char *f, char *t) {
char *q;
q = (char*)malloc(sizeof(char));


}

main関数において、p = replace("tractor", "act", "imot"); とすると、p は"trimotor"になる。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月12日
223デフォルトの名無しさん:2006/06/09(金) 18:05:22
// >>222
// 確保したメモリを返したり返さなかったりという仕様ってのが気に入らんが
char * replace(char * s, char * f, char * t)
{
char * q = (char *) malloc(strlen(s) - strlen(f) + strlen(t) + 1);
char * p = strstr(s, f);
if (p) {
sprintf(q, "%.*s%s%s", p - s, s, t, p + strlen(f));
return q;
}
return s;
}
224222:2006/06/09(金) 18:39:13
>>223
う〜ん、結果が出力されないのですが・・・

int main(void) {
char *p;
p = replace("tractor", "act", "imot");
printf("%s\n", p);
return 0;
}
main関数をこのようにしたとき、実行結果として「trimotor」が出力されるような関数replaceを作成せよ。という意味だと思います
225デフォルトの名無しさん:2006/06/09(金) 18:47:21
>>224
ちゃんとコピペした?
特にフォーマット文字列に注意。
" % . * s % s % s "
だぞ。
226デフォルトの名無しさん:2006/06/09(金) 18:48:18
つーか、「結果が出力されない」じゃなくて、
何が出力されたのか書けよ。
227デフォルトの名無しさん:2006/06/09(金) 18:54:15
printf("%s\n",replace("abcdefghijk","def","うほっ!"));
こうすれば?
228デフォルトの名無しさん:2006/06/09(金) 19:07:30
>>209
指定しているつもりではなかったのですが、
本当にありがとうございます、助かりました
229デフォルトの名無しさん:2006/06/09(金) 19:08:22
試してみたけど>223-224をコピペしたらtrimotorが出たよ。
230デフォルトの名無しさん:2006/06/09(金) 21:49:06
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
6個の整数値をキーボードから読み込んで,読み込んだ順と逆に表示するプログラムを作成せよ.


[実行結果]

Data No.1: 29
Data No.2: 4
Data NO.3: 91
Data NO.4: 0
Data No.5: 21
Data No.6: 34

逆から並べ替えるよ!

Data No.6: 34
Data No.5: 21
Data No.4: 0
Data No.3: 91
Data No.2: 4
Data No.1: 29


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Stdio.net2003
 [3.3] 言語: ++
[4] 期限: 6月12日
[5] その他の制限: どんな整数を入力しても逆から表示されるようにしてほしいです。
お願いします。
231デフォルトの名無しさん:2006/06/09(金) 21:57:38
[1] 授業単元: プログラミング演習
[2] 問題文:
1年分の各月の平均気温を配列に格納し(プログラム内で初期値として与えてよい),各データとそれらの平均値,最大値,最小値を
表示するプログラムを作成せよ.なお,データは摂氏と華氏の双方で表示すること.ただし,格納するデータはどちらか一方のみ.(この問題では,平均値は整数でよい(切り捨て,切り上げ,四捨五入いずれも可).月平均気温は適当でよい.)
[実行結果]
=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
2005年の月平均気温(摂氏,括弧内は華氏)
=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
1月:5(41)
2月:0(32)
<省略>
12月:10(50)
-----------
平均:15(59)
最高:25(77)
最低:0(32)
以上

<参考1>摂氏→華氏変換式: F=(9/5)×C+32 ,ただしCは摂氏温度,Fは華氏温度
<参考2>最大値の求め方(概要)

// maxが最大値を格納するための変数,MINはとりうる最小値
for(max=MIN,i=0;i<データの個数;i++)
{
    i番目のデータがmaxより大きいならば,i番目のデータをmaxとする
    そうでなければ今のmaxの値を保つ
}
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VisualStdio2003
 [3.3] 言語: C++[4] 期限: 6月15日5] その他の制限:配列のところ習っています。
よろしくお願いいたします
232デフォルトの名無しさん:2006/06/09(金) 22:00:19
>>230
要素数が6個で固定されてるなら、入力と出力でforループのカウントをサカサマにすればいいんだけど、
やっぱりスタックを使うのが一番スマートかな。
233デフォルトの名無しさん:2006/06/09(金) 22:05:25
>>230
#include<iostream>
using namespace std;
int main(){
    int data[6];
    for(int i=0;i<6;++i){
        cout << "Data N"<<(i-2&~1?'o':'O')<<'.'<<i+1<<": ";
        cin >> data[i];
    }
    cout << endl << "逆から並べ替えるよ!" << endl << endl;
    for(int i=6;i-->0;)
        cout << "Data No."<<i+1<<": "<<data[i]<<endl;
}
234デフォルトの名無しさん:2006/06/09(金) 22:05:37
>>232
すいません。書き忘れました。forを使っていただきたいです。
235デフォルトの名無しさん:2006/06/09(金) 22:13:01
>>230を読むと質問者のレベルが良く分かるwww
236デフォルトの名無しさん:2006/06/09(金) 22:19:59
>>233
難しすぎるんじゃないかwwこの質問者の頭じゃww
もっと簡単にいてあげないとwwww
237デフォルトの名無しさん:2006/06/09(金) 22:21:50
>>233
iのスコープを外に出してwhileループにしてみるのはどう?
あと、'o'と'O'は、単に2とAND取ればいいんじゃないか?

#include<iostream>
using namespace std;
int main(){
const int SIZE=6;
int data[SIZE];
int i = 0;
while(i < SIZE){
cout << "Data N"<<(i&2?'O':'o')<<'.'<<i+1<<": ";
cin >> data[i++];
}
cout << endl << "逆から並べ替えるよ!" << endl << endl;
while(i--)
cout << "Data No."<<i+1<<": "<<data[i]<<endl;
}
238デフォルトの名無しさん:2006/06/09(金) 22:28:54
endl使いすぎだから減らす方向で。

#include<iostream>
using namespace std;
int main(){
const int SIZE=6;
int data[SIZE];
int i = 0;
while(i < SIZE){
cout << "Data N"<<(i&2?'O':'o')<<'.'<<i+1<<": ";
cin >> data[i++];
}
cout <<"\n逆から並べ替えるよ!\n\n";
while(i--)
cout << "Data No."<<i+1<<": "<<data[i]<<endl;
}
239デフォルトの名無しさん:2006/06/09(金) 22:32:46
coutの使い方が怪しいかも。型はとりあえずdoubleにしてみた。
#include <iostream>
#define MAX 100
#define MIN -100
using namespace std;

int main()
{
double data[12] = {-1, -5, 7, 10, 14, 18, 22, 23, 21, 17, 11, -3};//摂氏
double average, max, min;
int i;

average = 0;
for (i = 0; i < 12; i++) average += data[i];

average /= 12; //平均(整数)
for (max = MIN, i = 0; i < 12; i++) {
if (max < data[i]) max = data[i];
}
for (min = MAX, i = 0; i < 12; i++) {
if (min > data[i]) min = data[i];
}
for (i = 0; i < 12; i++) cout << i + 1 << "月:" << data[i] << " F:" << data[i] * 9 / 5 + 32 << endl;

cout << "平均:" << average << " F:" << average * 9 / 5 + 32 << endl;
cout << "最高:" << max << " F:" << max * 9 / 5 + 32 << endl;
cout << "最低:" << min << " F:" << min * 9 / 5 + 32 << endl;
return 0;
}
240デフォルトの名無しさん:2006/06/09(金) 22:34:37
>>237
endleとか#include<iostream> using namespace std; は習ってないです。
forとかscanfとかは習っています。
あとint xyz[6];みたいに置くみたいです

241デフォルトの名無しさん:2006/06/09(金) 22:37:18
Cだろ、そr
242デフォルトの名無しさん:2006/06/09(金) 22:37:35
>>240
それじゃぜんぜんC++じゃないじゃん。Cそのものじゃん。
言語 ++ なんて書いてあるから、てっきりC++的コーディングをするものだと思うじゃん。
243デフォルトの名無しさん:2006/06/09(金) 22:38:18
(>>230は「言語」と「コンパイラ」の違いが分かってないんじゃないかな…)
244デフォルトの名無しさん:2006/06/09(金) 22:38:19
>>235-256
なーるほど。
質問者が習っているものと、使っているコンパイラの区別がついてないのか。
245デフォルトの名無しさん:2006/06/09(金) 22:39:05
>>243-244
けこーん
246デフォルトの名無しさん:2006/06/09(金) 22:39:06
はい、C。もういいだろ。

#include <stdio.h>
#define MAX 6

int main() {
int num[MAX];
int i;

for (i = 0; i < MAX; i++) {
printf("Data No.%d:", i + 1);
scanf("%d", &num[i]);
}

printf("\n並びかえるよ!\n");

for (i = MAX - 1; i >= 0; i--) {
printf("Data No.%d:%d\n", i + 1, num[i]);
}

return 0;
}
247デフォルトの名無しさん:2006/06/09(金) 22:43:14
Cか面倒だな。
#include<stdio.h>
#define MAX 6
int main(){
    int data[MAX],i;
    for(i=0;i<MAX;++i){
        printf("Data N%c.%d: ",i&2?'O':'o',i+1);
        scanf("%d",&data[i]);
    }
    printf("\n逆から並べ替えるよ!\n\n");
    for(;i--;)
        printf("Data No.%d: %d\n",i+1,data[i]);
}
248デフォルトの名無しさん:2006/06/09(金) 22:45:58
やっぱり'O':'o'は残すんだw
249デフォルトの名無しさん:2006/06/09(金) 22:49:42
すごい凶悪な問題ですね。。。
250デフォルトの名無しさん:2006/06/09(金) 22:50:35
ようやく >>233
cout << "Data N"<<(i-2&~1?'o':'O')<<'.'<<i+1<<": ";
ってまわりくどく書いた理由に気づいたよ。まじめなのか皮肉なのかw
251デフォルトの名無しさん:2006/06/09(金) 22:55:24
確かに、出題が例示の通りで、forループで、printfだとすると模範解答は>>247だな。凶悪w
252デフォルトの名無しさん:2006/06/09(金) 23:19:12
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):家族4人の貯金を管理するプログラムを作成せよ.
入力は誰の貯金かを数字で指定し,その後金額を入れる.人の指定時に-1を入力するまで入力を受け付け,それまでの総計を出力する.入力の単位は円,金額の表示法はこれまで自分が作ったものを使え.

[実行結果]
だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):2
いくら?1280

だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):1
いくら?11800

(省略)

だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):4
いくら?55000

だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):-1

現在の貯金額

婆さん:21,000円
父さん:2,350円
母さん:3,410円
通信:67,253円
合計:93,995円

 [3.1] OS: Windows [3.2] 環境:Visual Studio.NET2003
 [3.3] 言語: C [4] 期限: 6月13日
よろしくおねがいします。考えたけど、よくわかりませんでした・・


253デフォルトの名無しさん:2006/06/09(金) 23:20:35
利子の計算にサラミを仕込んどけば完璧。
254デフォルトの名無しさん:2006/06/09(金) 23:21:19
>>252
>金額の表示法はこれまで自分が作ったものを使え
これまで作ったものってどんな感じよ?
255デフォルトの名無しさん:2006/06/09(金) 23:24:24
てか質問の仕方がバカってマジで終わってるだろwww
日本語ができない。しかもプログラムもかけない
これじゃあ、右脳も左脳も死んでんぞwwww
256デフォルトの名無しさん:2006/06/09(金) 23:25:36
>>254
あ、その部分無視しといてください。消すの忘れてました
257デフォルトの名無しさん:2006/06/09(金) 23:27:09
(´ー`)y-~~ 自分が何を聞きたいのかが分かっていない
(´ー`)y-~~ 自分が何を聞いているのか分かっていない
258デフォルトの名無しさん:2006/06/09(金) 23:28:23
分かっているのは分からないということだけだ
259デフォルトの名無しさん:2006/06/09(金) 23:28:54
>>258
上手い
260デフォルトの名無しさん:2006/06/09(金) 23:33:24
分かっていないということもきっと分かっていない。
分かっているのは「できない」ということだけ。
261198:2006/06/09(金) 23:36:39
>>221
コメントまで書いて頂き、非常に助かります。ありがとうございました。
申し訳ありませんが

y=3x^n+4x+5 のx=1.0における微分値を、n=2、6、10の場合について求
め 精度について検討せよ。

も教えて頂けないでしょうか。図々しくすみません。

262デフォルトの名無しさん:2006/06/09(金) 23:36:46
あなたが空しく生きた今日は
  昨日死んでいった者が
    あれほど生きたいと願った明日
263デフォルトの名無しさん:2006/06/09(金) 23:37:00
ぷっwwwwww叩かれまくりwwwwwwwwwwwwwwww
264デフォルトの名無しさん:2006/06/09(金) 23:39:18
精度の検討はスレ違いだと思うが。
265デフォルトの名無しさん:2006/06/09(金) 23:42:43
初心者の俺から言わせてもらうと、
問題の日本語の意味が分かっているのにプログラムを書けないならもう違う学科に行ったほうがいいと思う

左脳が発達していないんだよ。大学変えな
266デフォルトの名無しさん:2006/06/09(金) 23:42:49
>>252
誰もやらなさそうなのでやってみた。
#include <stdio.h>

int main(void)
{
int a[]={0,0,0,0},b,c;
while (1){
printf("だれ?(月:1、L:2、ワタリ:3、リューク:4、入力終:-1):");
scanf("%d",&b);
if (b==-1){
return 0;
}else if (b>0 && b<5){
printf("いくら?:");
scanf("%d",&c);
a[b-1]+=c;
}else{
printf("月:%d\nL:%d\nワタリ:%d\nリューク:%d\n",a[0],a[1],a[2],a[3]);
}
}
}
明らかにデスノ好きのprintf
267デフォルトの名無しさん:2006/06/09(金) 23:49:20
>>266さん。本当にありがとうございます!
268デフォルトの名無しさん:2006/06/09(金) 23:53:39
#include <stdio.h>
int main() {
struct deposit { char *name; int amount;} dep[] = {{"婆さん",0},{"父さん",0},{"母さん",0},{"通信",0}};
int person, money;
while(person = -1) {
printf("\nだれ?(");
while(++person < 4) printf("%s:%d、",dep[person].name,person + 1);
printf("入力終:-1):");
scanf("%d",&person);
if (person == -1) break;
printf("いくら?");
scanf("%d",&money);
dep[person - 1].amount += money;
}
printf("現在の貯金額\n");
while(++person < 4) printf("%s:%d円\n",dep[person].name,dep[person].amount);
return 0;
}
269デフォルトの名無しさん:2006/06/10(土) 00:05:22
[1] 授業単元: アルゴリズム実習
[2] 問題文(含コード&リンク):
迷路ファイル(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2020.txt)を読み込んで、スタート(S)から、ゴール(G)までの経路を縦型探索と横型探索で探索し、探索した経路を表示するプログラムを作成しなさい。ただし、以下の条件に従うこと。

迷路について
20x20の迷路のスタート(S)からゴール(G)までの経路を探索すること
迷路では、壁(*)の上は進めない
迷路では、上下左右の4方向のみ進める
経路が複数ある場合、そのうちの一つの経路を見つけて表示する
閉路がある場合でも正しく経路を発見できること
スタックによる縦型探索と、キューによる横型探索の2つのバージョンを作成すること

スタックとキューについて
配列を使って実装し、配列のサイズは20とすること
オーバーフローとアンダーフローをチェックすること
キューでは配列の最後まで使いきると、また先頭から使うこと
次の関数を作成、仕様すること
ファイルからを迷路情報を読み込む関数read_map
スタックのための関数push, pop
キューのための関数enqueue, dequeue
スタックを用いて縦型探索で迷路を探索する関数 maze_depth_first
キューを用いて横型探索で迷路を探索する関数 maze_bredth_first
経路を表示する関数 display_route

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

お願いします...
270デフォルトの名無しさん:2006/06/10(土) 00:10:52
>>239
ありがとうございます。助かりました。
>>231
C言語の勉強もしているので、そちらの方のプログラムが分かる方お願いいたします
271デフォルトの名無しさん:2006/06/10(土) 00:14:40
自分の無知を認めないとは最悪ですね。
>>1によれば、気に入らない質問はスルーしていいらしいので、スルーしましょう。
272デフォルトの名無しさん:2006/06/10(土) 00:34:46
>>231
これでいい?
俺正直言うと計算自信ない(´・ω・`)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2021.c
273デフォルトの名無しさん:2006/06/10(土) 00:40:00
>>272さん。ありがとうございます。計算は・・確認しておきます(笑)
274デフォルトの名無しさん:2006/06/10(土) 00:54:46
1)単元:情報科学実験W
2)問題文:練習5-9 ポインタと文字列配列
str1に文字列を読み込み、
str1とstr2を指す二つのポインタを活用し、
str2に逆順に格納されるようにしましょう。
実行例は以下の通りになります。
入力文字:watashihakiringasukidesu
出力結果:usedikusagnirikahihsataw
3)環境:ヴァインリナックス、C言語、gcc
4)期日:6月13日

よろしくお願いします
275デフォルトの名無しさん:2006/06/10(土) 00:58:21
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
1)shellコマンド’echo’と同じ機能を持つ新コマンド’myecho’を作成せよ。
2)設定されている全環境変数を表示するプログラムを作成せよ。
3)’pwd’と同じ機能を持つ’mypwd’を作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc バージョンは分かりません
 [3.3] 言語: C言語
[4] 期限: 6/10 午後10時まで
[5] その他の制限: Linuxのviを使ってソースを書くこと

よろしくお願いします。
276デフォルトの名無しさん:2006/06/10(土) 01:06:52
viかよ
277デフォルトの名無しさん:2006/06/10(土) 01:38:10
難しいなぁ。
Linux用のviってあるか?
今のディストリビューションだと大抵vimになってると思うんだが。
278デフォルトの名無しさん:2006/06/10(土) 01:39:24
その他制限の方が厳しい問題始めてみたw
279デフォルトの名無しさん:2006/06/10(土) 01:41:03
OSの機能を呼んでもいいっていうなら楽かも。
全部実装しる、ってのは厳しいなあ。
280デフォルトの名無しさん:2006/06/10(土) 01:47:17
こんばんは。
実は実習関連の課題で、IPからtracertを用いて大量の経路を探索
しなくてはならないのですが、tracertは入出力が一対一しか
対応していません。
そこでC言語を用いてプログラム内からtracertを呼び出し、IPを
tracertに渡し、tracertから帰ってきた値をファイルに格納する
プログラムを作成したいのですが、どのような関数を利用すれば
良いのでしょうか?
当方の環境はwindowsで、C言語については一通り理解しています。
よろしくお願いします。
281275:2006/06/10(土) 02:06:02
参考になるか分かりませんが、演習の例題としてコマンド’ln’の作成ってのがあって

[administrator@localhost enshu]$vi link.c
#include <unistd.h>
main(int argc, char *argv[])
{
link(argv[1],argv[2]);
}
[administrator@localhost enshu]$gcc link.c
[administrator@localhost enshu]$./a.out msg dummy
[administrator@localhost enshu]$ls -i msg
[administrator@localhost enshu]$ls -i dummy

こんな感じに作っていくんだと思いますけど
282デフォルトの名無しさん:2006/06/10(土) 02:32:15
>>280 Cを使うまでもない、というよりCでコーディングすると何か変更を加えたい時が面倒になる。
というより >>1 に従ってない。こんな場合は適当な解答をしてみる。
#!/bin/perl
@iplist = `cat iplist.txt`;
foreach $ip (@iplist) {
$cmd = "tracert $ip >> log.txt";
system($cmd);
}
283デフォルトの名無しさん:2006/06/10(土) 03:04:50
>>277
Debianはnvi。
まあ、出題者がviとvimの区別もできないDQNか、受講者の知識を考慮して
わざとviと書いたか、どちらかだろうな。
284デフォルトの名無しさん:2006/06/10(土) 06:37:59
#include <stdio.h>
int main(void){
extern char ** environ;
char** p;
for(p=environ; *p; p++)
printf(">> %s\n", *p);
return 0;
}

285デフォルトの名無しさん:2006/06/10(土) 09:31:11
[1]授業単元:プログラミング C言語
[2]実行環境コンパイラ:Visual Studio.NET2003
[3]OS:Windows XP
[4]提出期限:6月12日0時
[5]次のプログラムを変更して任意の文字列を入力させ、その中の任意の位置の任意の数の文字を削除するプログラムを作成せよ。
【プログラム】
#include <stdio.h>
#include <string.h>
#define MAX_MOJI 100
int main(int argc, char* argv[])
{char bunsho[MAX_MOJI + 1];
char ins[80];
int pos; int bunlen; int inslen; int i;
strcpy(bunsho, "To be to be ten made to be.");
while (-1)
{printf("文書データ:%s\n", bunsho);
printf("挿入する位置:");
scanf("%d", &pos);
printf("挿入する文字列:");
scanf("%s", ins);
bunlen = strlen(bunsho);
inslen = strlen(ins);
if ((bunlen + inslen) > MAX_MOJI)
{printf("これ以上挿入できません!");
break;
}for (i = bunlen ; i >= pos; i--)
{bunsho[i + inslen] = bunsho[i];
}for (i = 0; i < inslen; i++)
{bunsho[pos + i] = ins[i];
}} return 0;}
286デフォルトの名無しさん:2006/06/10(土) 09:32:31
>>285 ですが
実行結果は以下のようになります。

実行例:

文書データ: To be to be ten made to be.
削除する位置: 3
削除する文字数:2
文書データ: To to be ten made to be.

よろしくお願いいたします
287デフォルトの名無しさん:2006/06/10(土) 09:35:37
>>285
これは・・・実行すると不正な処理でエラーが・・・
288デフォルトの名無しさん:2006/06/10(土) 09:44:41
>>285 ですが
>>287
改行が多くて修正したからかな!?
プログラムをアップローダにUPすることができませんでした。
UPローダにプログラムそのままUPしたいんだが。
>>1 を使ったが接続できませんでした。
どうすればいいですか?
289285:2006/06/10(土) 09:51:20
>>285 です
プログラムUPしました。
【プログラム】
http://www.uploda.org/uporg413389.txt.html
改造お願いいたします。
290デフォルトの名無しさん:2006/06/10(土) 09:51:46
>>288
あんさん、何をそのまま?まさか実行プログラムをうpしたなんてことないよね?
まぁ、もしexeでうpしたら、警戒する人は多いだろうけどw
ソースなら普通にテキスト形式のファイルならうpできるでしょ?
拡張子がc、cpp、txtとかで
291デフォルトの名無しさん:2006/06/10(土) 09:54:33
>>289
それならおk。しかし・・・まぁ、危ないプログラムだこと。
whileループやな・・・何を押してプログラムを終了させるか、はっきりした方がええで。
知っている人はCtrl + C とかで終了させるけど、マニュアルのないプログラムはキツー。
292285:2006/06/10(土) 11:29:15
>>285です
>>291 さんへ

解説付きのプログラムをUPしました
【プログラム】
http://www.uploda.org/uporg413434.txt.html
参考にして下さい。
293デフォルトの名無しさん:2006/06/10(土) 12:23:23
>>285 >>292
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2022.cpp
使えるかどうか知らんけど・・・とりあえずこちらでもチェックはしてあるけど。
294217:2006/06/10(土) 12:26:25
>>218さん

1〜4のプログラムは別々です
どうかよろしくおねがいします(泣)
295C言語は面倒だ orz:2006/06/10(土) 12:35:53
296デフォルトの名無しさん:2006/06/10(土) 12:55:13
>>294
別ね。とりあえず今2番目まで終わって3番目で奮闘中。
まぁ、そんなに時間は掛からんだろうけど、13日までには十分時間があるからお待ちを。
297294:2006/06/10(土) 13:18:22
>>296さん

ありがとうございます、感謝です><
298デフォルトの名無しさん:2006/06/10(土) 13:47:02
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int cmp(const void *a1, const void *a2){
const int *b1, *b2;
b1 = *((const int**)a1), b2 = *((const int**)a2);
return (*b2 - *b1);}
int cmp2(const void *a1, const void *a2){
const int *b1, *b2;
b1 = *((const int**)a1), b2 = *((const int**)a2);
return (*b1 - *b2);}
int prime(int n){
int i;
if(n == 1)return 0;if(n == 2)return 1;if(n % 2 == 0)return 0;
for(i = 3; i <= floor(sqrt((double)n)); i += 2)if(n % i == 0)return 0;
return 1;}
int main(){
int ar[20]={ 57, 563, 381, 239, 345, 821,881, 979, 447, 461,221, 683, 743, 379, 597, 149, 223, 127, 231, 159};
int *par[20];int i, n = sizeof(ar) / sizeof(ar[0]), s = 0;
//そのまま表示
puts("そのまま");for(i = 0; i < n; i++)printf("ar[%d] = %d\n", i, ar[i]);
//降順
puts("降順");for(i = 0; i < n; i++)par[i] = &ar[i];qsort(par, 20, sizeof(int*), cmp);for(i = 0; i < n; i++)printf("ar[%d] = %d\n", i, *par[i]);
//素数昇順
puts("素数昇順");qsort(par, 20, sizeof(int*), cmp2);for(i = 0; i < n; i++)if(prime(*par[i]) == 1){printf("ar[%d] = %d\n", i, *par[i]);s += (*par[i]);}
//素数和
puts("素数和");printf("s = %d\n", s);
return 0;}
しまった先客がいたようだ、それに全部一緒にしてしまったし
299デフォルトの名無しさん:2006/06/10(土) 13:57:22
>>298
まぁ、別に良いんじゃね?使える方を選んでもらえば。
その辺は特に問題ないっしょ。ただ、相手側がどっちを選ぶかは・・・自由だーー!
ソース is freedom!ソース is freedom!
300280:2006/06/10(土) 14:14:51
>>282
ありがとうございます!
やっぱC言語よりPerlで書いたほうがいいですね!
「適当」な解答、とても役に立ちました。
301285:2006/06/10(土) 14:22:58
>>285 です。
ありがとうございました。
302デフォルトの名無しさん:2006/06/10(土) 14:29:29
[1]授業単元:プログラミング C言語
[2]環境コンパイラ:Visual Studio.NET2003
[3]OS:Windows XP
[4]提出期限:6月13日
[5]問題内容
次のプログラムを変更して、降順にソートした後、昇順にデータを表示するプログラムを作成せよ。

1.ループカウンターを配列の末尾から0まで1ずつ減らして表示する方法。
2.スタックを使う方法

できれば別々に、1,2両方のプログラムをお願いします。
【プログラム】
http://www.uploda.org/uporg413542.txt.html

できれば、アップローダにUPしといてもらえば助かります。
303デフォルトの名無しさん:2006/06/10(土) 14:36:48
304デフォルトの名無しさん:2006/06/10(土) 14:40:21
>>301
ぐほっ、すまぬ。>>293はスペースが入った文字列やら
いくつかやったら不具合が・・・ orz
305デフォルトの名無しさん:2006/06/10(土) 14:45:30
オセロゲームの作成です長いプログラムですが、
与えられたサンプルがあります、それに足していけばよいそうなのですが
難しいので(int AI_move () {だけ追加すればよいそうですが)
どなたかよろしくお願いいたします。

[1] 授業単元: C言語
[2] 問題文(含コード&リンク): オセロゲームの戦略をプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2024.txt

[3] 環境
 [3.1] OS: Windows (cygwin)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年6月15日00:00amまで
[5] その他の制限: 特になし

もし日本語でエラーがありましたら、英語に直したのをUPします。
改めてよろしくお願いいたします。
306デフォルトの名無しさん:2006/06/10(土) 14:58:33
すみません。どなたか>>204をお願いします。
307デフォルトの名無しさん:2006/06/10(土) 14:59:57
>>285 >>301
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2026.cpp
今度こそ・・・見てたらチェックしてみて。つまらぬミスだった・・・
308デフォルトの名無しさん:2006/06/10(土) 15:13:28
サーバ側で、readしたものをそのままwrite
クライアント側では、writeしたあとread
で作れるんじゃないの?
309デフォルトの名無しさん:2006/06/10(土) 15:25:15
>>307
ありがとうございます
310デフォルトの名無しさん:2006/06/10(土) 15:30:02
echoサーバープログラムなんて、webでソケットプログラミング検索すれば、そのまま載ってるだろ。
311デフォルトの名無しさん:2006/06/10(土) 15:31:48
312デフォルトの名無しさん:2006/06/10(土) 15:37:37
>>311
ありがとうございました。
これは、1.ループカウンターを配列の末尾から0まで1ずつ減らして表示する方法。
2.スタックを使う方法
どっちですか?
313デフォルトの名無しさん:2006/06/10(土) 15:57:03
>>305
 これって、AI_move関数を作ってコンピュータ対戦可能な
プログラムにしろ、っていうこと?
314デフォルトの名無しさん:2006/06/10(土) 15:57:57
>>312
両方入ってます。
315デフォルトの名無しさん:2006/06/10(土) 16:27:41
>>305
 超低脳なAI(とはいえない)作ってみたw こんなんじゃやっぱだめ?

int AI_move () {
int result = 1; //reverse関数の戻り値を代入する変数
srand((unsigned int)time(NULL));
if ( current == BLACK ) {
printf("AI黒の手番です。\n");
}
else {
printf("AI白の手番です。\n");
}
while ( 1 ) {
fflush(stdin);
result = reverse(rand() % 8, rand() % 8);
if ( result != 0 ) {
break;
}
}
return result;
}
316デフォルトの名無しさん:2006/06/10(土) 16:58:48
[1] 授業単元: 継承・ファイル入出力
[2] 問題文(含コード&リンク):
後述のプログラムを以下のように変更せよ。
・studentクラスを継承して下宿生のクラスを作成する。
 (下宿生クラスには、studentクラスに対して「帰省先住所」と「帰省先電話番号」の2つのメンバ変数を追加する)
・学生データ(下宿生と自宅生)をコンソール入力可能に変更する。
 (下宿生・自宅生のどちらを入力するのか確認してから入力させる)
・入力されたデータをコンソールに入力する。
・更に、入力されたデータをファイルにも出力する。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 2006年6月15日まで
[5] その他の制限: オーバライドは使用不可。
自力でやってみたいんですが、途中からワケわからなくなってきて・・。
よろしくお願いします。
317316:2006/06/10(土) 17:02:03
元のプログラム

#include <iostream>
#include <fstream>
using namespace std;
class student
{
int no;
char name[14];
int age;
char c_address[40];
char c_phone[14];

public:
void input();
void print();
student():no(0),age(0){
strcpy(name,"");
strcpy(c_address,"");
strcpy(c_phone,"");
};
student(int a, char* b, int c, char* d, char* e ){
no = a;
strcpy(name,b);
age = c;
strcpy(c_address,d);
strcpy(c_phone,e);
};
};
318316:2006/06/10(土) 17:02:41
元のプログラム2(長かったので分けました)

void student::print()
{
cout << "学籍番号:" << no <<endl;
cout << "名前:" << name << endl;
cout << "年齢:" << age << endl;
cout << "住所:" << c_address << endl;
cout << "電話番号:" << c_phone << endl;
}

int main()
{
ifstream infile;
int i,j;
student aa[100];
infile.open("infile.txt", ios::in |ios::binary);
if (!infile){
cout << "ファイルをOPENできません";
return 1;
}
for (i=0; !infile.eof(); i++){
infile.read((char *) &aa[i], sizeof(student));
}
infile.close();
for(int j=0; j<i-1;++j){
aa[j].print();
}
return 0;
}
319デフォルトの名無しさん:2006/06/10(土) 17:35:19
>>316
どこまでが提供されたソースコード?
320デフォルトの名無しさん:2006/06/10(土) 17:48:30
>>316
>・学生データ(下宿生と自宅生)をコンソール入力可能に変更する。
> (下宿生・自宅生のどちらを入力するのか確認してから入力させる)
って書いてあってなんでファイルから入力しようとしているんだ?

>・入力されたデータをコンソールに入力する。
ってどういう意味だ? コンソールに出力とは違うの?

あと基本クラスの書き方がところどころおかしいな。
321デフォルトの名無しさん:2006/06/10(土) 17:53:52
継承すんのにprintインターフェースがオーバーライド使用不可とか
出題者は狂ってるな。
322デフォルトの名無しさん:2006/06/10(土) 17:57:36
>>313
そうです、コンピューター対戦です。

どうやら次週はクラスでトーナメント戦をするようです

>>315
ありがとうございます。まず動かないと何もできないのでw
323デフォルトの名無しさん:2006/06/10(土) 18:00:25
プレイ時間の制限がないなら全手読みきればいいんじゃないか?
324デフォルトの名無しさん:2006/06/10(土) 18:05:24
初心者ものなのですが、よろしくお願いします。
Visual C++ 2005を使い、


#include <windows.h>


が書かれたソースファイルをビルドしようとしても上手くいきません。
どうすればビルドできるんでしょうか?
325デフォルトの名無しさん:2006/06/10(土) 18:07:58
初心者ものなのですが、よろしくお願いします。
Visual C++ 2005を使い、


#include <windows.h>


が書かれたソースファイルをビルドしようとしても上手くいきません。
どうすればビルドできるんでしょうか?
326デフォルトの名無しさん:2006/06/10(土) 18:11:08
すみません、連書きしてしまいましたm(_ _)m
327デフォルトの名無しさん:2006/06/10(土) 18:11:15
宿題なら >>1のテンプレに従って質問しろ。
宿題じゃないなら、失せろ。
328デフォルトの名無しさん:2006/06/10(土) 18:14:04
>>327
すみません、スレ汚してしまいましたm(_ _)m
329デフォルトの名無しさん:2006/06/10(土) 18:17:22
Visual C++ 2005 Express Editionじゃないんですか。
Express EditionはWin32 Platform SDKを入れないと
windows.hは使えません。
330デフォルトの名無しさん:2006/06/10(土) 18:35:18
>>329
ありがとうございます。
インストールしようと思います。

331デフォルトの名無しさん:2006/06/10(土) 19:23:18
>>314
何度もすみません。ありがとうございました。
332275:2006/06/10(土) 19:42:37
どなたかできませんでしょうか?
333デフォルトの名無しさん:2006/06/10(土) 20:06:17
>>275
/* (1) */
#include <stdio.h>
int main(int argc, char **argv){
  if( --argc > 0 ) fputs(*++argv, stdout);
  while(--argc > 0 ) printf(" %s", *++argv);
  return 0;
}
/* (2) */
#include <stdio.h>
int main(int argc, char **argv, char **env){
  while(*env) puts(*env++);
  return 0;
}
/* (3) */
#include <stdio.h>
int main(int argc, char **argv, char **env){
  do{
    if(0 == memcmp("PWD", *env, 3)){ puts(*env+4); break;}
  }while(*env++);
  return 0;
}
334デフォルトの名無しさん:2006/06/10(土) 20:14:18
(3)を微妙に訂正。
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv, char **env){
  while(*env){
    if(0 == memcmp("PWD", *env, 3)){ puts((*env)+4); break;}
    env++;
  }
  return 0;
335デフォルトの名無しさん:2006/06/10(土) 20:31:30
(3)、もう一回訂正。

#include <stdio.h>
#include <string.h>
int main(int argc, char **argv, char **env){
  while(*env){
    if(0 == memcmp("PWD=", *env, 4)){ puts((*env)+4); break;}
    env++;
  }
  return 0;
336デフォルトの名無しさん:2006/06/10(土) 22:40:06
[1] 授業単元: プログラミング通論
[2] 問題文(含コード&リンク):
文字列 s、f、t が与えられたとき、
文字列sの中で最初に現れるfをtに置き換えた文字列を返す 関数replace を作成せよ。

もし文字列fが見つからなかった場合は s を返すこととし、malloc を利用して実現すること。
関数の書き出しは、以下のようにすればよい。
char* replace(char *s, char *f, char *t) {
char *q;
q = (char*)malloc(sizeof(char));

}

main関数を以下のようにしたとき、実行結果として「terminator」が出力される。
int main(void) {
char *p;
p = replace("teractor", "act", "minat");
printf("%s\n", p);
return 0;
}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月12日
[5] その他の制限:strlen関数やstrstr関数を用いずにお願いします。
337デフォルトの名無しさん:2006/06/10(土) 22:42:57
嫌な関数仕様だな。
338デフォルトの名無しさん:2006/06/10(土) 22:43:33
>>336
もはや突っ込む気が失せるほどの糞問題だな。
339デフォルトの名無しさん:2006/06/10(土) 23:01:33
次スレのタイトルは
ぱっと見て「糞だなぁ」と思うC/C++の宿題
くらいかな?
340デフォルトの名無しさん:2006/06/10(土) 23:05:40
さすがプログラミング通。
科目名からして意味不明〜。
341デフォルトの名無しさん:2006/06/10(土) 23:09:06
>>336
利用価値の分からない関数だな
342336:2006/06/10(土) 23:28:36
この問題が中間テストに出て、手書きで解かなければなりませんでした・・・
(解けなかった問題をレポートで提出されるよう言われました)
先生は生徒の点数が悪いため嘆いてました・・・なんて愚かな人間なのかと思いました。
343デフォルトの名無しさん:2006/06/10(土) 23:31:31
愚かなのは自分じゃ…
344デフォルトの名無しさん:2006/06/10(土) 23:35:08
ちょwww空気嫁。どう見ても愚かなのは問題の方だろw
345デフォルトの名無しさん:2006/06/10(土) 23:37:36
つい先日、その課題を見てreplace()をでっち上げた記憶があるぞ。
346デフォルトの名無しさん:2006/06/10(土) 23:38:09
頭の悪い、指導能力のない先生にぶち当たると最悪だな・・・
俺は高校のとき、物理の先生が酷くて、うちのクラスの平均は10〜20、最低は0点って奴も・・・
347デフォルトの名無しさん:2006/06/10(土) 23:40:14
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* replace(char*s,char *f,char *t){
  char *p;
  p=(char*)malloc(sizeof(char));
  free(p); /* 使い様がないので開放 */
  {
    int n,m,l,k;
    for (m=0;s[m];m++); /* m=sの長さ */
    for (n=0;f[n];n++); /* n=fの長さ */
    for (k=0;s[k];k++) {
      if (!strncmp(s+k,f,n)) {
        for (l=0;t[l];l++); /* l=tの長さ */
        p=(char*)malloc(m-n+l+1); /* 文字数m-n+lに終端\0の容量を確保 */
        strncpy(p,s,k); /*s前半コピー*/
        strncpy(p+k,t,l); /*tコピー*/
        strcpy(p+k+l,s+k+n); /*s後半コピー*/
        return p;
      }
    }
    p=(char*)malloc(n+1); /* 文字数mに終端\0の容量を確保 */
    strcpy(p,s); /* sコピー(仕様が微妙だが) */
    return p;
  }
}
348デフォルトの名無しさん:2006/06/10(土) 23:41:59
世の中うまくいくことばかりあるわけじゃない
無理難題を言われてもやらなきゃいけないこともあるのよね
349275:2006/06/10(土) 23:42:46
>>333
ありがとうございます!
350デフォルトの名無しさん:2006/06/10(土) 23:42:53
 要するに>>336の問題は、strlenとstrstrを自分で作れ、
といいたいんじゃないのか?文字列操作関連の関数を自分で作ることは
それなりに学習効果はあるカモ。

 ただ、
>関数の書き出しは、以下のようにすればよい。
>char* replace(char *s, char *f, char *t) {
>char *q;
>q = (char*)malloc(sizeof(char));
これはひどくない?最後の一行はせめて
q = (char*)malloc(sizeof(char) * n); /* nは自然数 */
とか書いて欲しい。
 Cならmallocの戻り値をキャストする必要はない、とか、
C++なら確かにキャストは必要だけどmallocじゃなくてnewを使うべき、
とかそういうことはたぶん言ってはいけないのでしょう・・・
351デフォルトの名無しさん:2006/06/10(土) 23:43:55
>>348
訂正
<    p=(char*)malloc(n+1); /* 文字数mに終端\0の容量を確保 */
>    p=(char*)malloc(m+1); /* 文字数mに終端\0の容量を確保 */
352デフォルトの名無しさん:2006/06/10(土) 23:44:42
それ以前に、sizeof(char)なんて書くのは論外だ。
353デフォルトの名無しさん:2006/06/10(土) 23:48:48
まぁまぁ、それもsizeofについて知るためだと思って・・・良いかとw
354デフォルトの名無しさん:2006/06/10(土) 23:49:53
 ちょ、ちょっとまて。>>336のreplace関数で、mallocで確保した
領域はいつ解放するの?replace関数呼び出し元がfreeするとか、OSが勝手に
解放してくれるのを期待!とか、教官はそういうことがいいたいのか?
どっちにしてもおかしいだろう。
355デフォルトの名無しさん:2006/06/10(土) 23:53:01
その辺で「sを返す」の表現が微妙なんだよね。
sそのものを返してしまったらfreeするかしないかの判定が面倒になる。
356デフォルトの名無しさん:2006/06/10(土) 23:55:11
そういうことまで言及すると、なぜか減点される。
357336:2006/06/10(土) 23:58:30
テスト範囲はポインタのところなんですが、freeは習ってないですね・・・
むしろmallocの必要性が分からないです。アドレスを返すって習いました
358デフォルトの名無しさん:2006/06/10(土) 23:59:28
ぐぐれ
359デフォルトの名無しさん:2006/06/11(日) 00:00:25
なるべくポインタっぽくならないように書いたのに
360デフォルトの名無しさん:2006/06/11(日) 00:23:25
馬鹿教官のC言語にはガベージコレクタが実装されているんだよ。
361デフォルトの名無しさん:2006/06/11(日) 00:24:32
その設計ならmallocは必要だろうが、そもそも設計からしておかしいよな
あくまで書き込み先バッファは呼び出し元が何らかの形で確保した上で
サイズと共に出力先として関数に渡すべき
362デフォルトの名無しさん:2006/06/11(日) 00:25:48
>>360
×馬鹿教官のC言語には
○馬鹿教官の頭の中では
363デフォルトの名無しさん:2006/06/11(日) 00:29:55
>>361
まあstrdupの変形だと思えばこの仕様自体はありだろう。
364デフォルトの名無しさん:2006/06/11(日) 00:33:18
C++のnewとかわらないし、API仕様としてはむしろ一般的でしょ。
開放手段を明示するのは前提だけど。
365デフォルトの名無しさん:2006/06/11(日) 00:43:18
>>364
ファクトリメソッドのように確実に確保されて返ってくるならともかく、
場合によってはmallocされますとかありえないだろ。
366デフォルトの名無しさん:2006/06/11(日) 00:46:35
用法を想定して常識的な解釈をすれば、
常にコピーして返せという意味だと捉えたが。

367デフォルトの名無しさん:2006/06/11(日) 00:49:30
>>363-364
それはそうだが、敢えてこの用途もそうするのがベターとは到底思えないんだが
368デフォルトの名無しさん:2006/06/11(日) 01:02:45
こうするのは一般的でしょ。
適切な領域サイズを計算するのには結局全てを知る必要があるから。
これが例えばs/act/minat/g みたいな動作をするものだったらもうかなり予測不可能だよね。

int replace(char *dest,const char* pat,const char* rep,int n);
みたいに確保したサイズをnで渡して実際に必要なサイズを返すパターンもあるけど。

369198:2006/06/11(日) 01:12:07
>>264
すみません。
精度の検討は自分で考えますので、微分のプログラムを教えていただけないでしょうか?
370デフォルトの名無しさん:2006/06/11(日) 01:13:10
replace()なんだからs/hoge/hage/gが普通じゃないか?
こういう動作をするなら例えば冗長だが
copy_with_replace()とかの方がいいような希ガス
371275:2006/06/11(日) 01:42:25
もうひとつ宿題、同じ形態です

問題文(含コード&リンク):
1)関数’read()’及び’write()’を用いて、端末入力を端末出力にコピーするプログラムを作成せよ。
ただし、ファイル記述子fdは、read->fd=0、write->fd=1であり、バッファサイズは512とせよ。

2)あるファイルを監視して、何か変更があるたびにそのファイルの先頭から
表示するようなwatchfileというプログラムを作成せよ。
ヒント:
for(;;){ /* 無限ループ */
 star(argv[1],&sbuf);
 if(・・・・・){ /* ファイルの状態を検査して変わっていれば */
  while((n=read(fd,buf,1024))>0)
   write(1,buf,n); /* 1024バイト単位に、readバイト数がゼロになるまで読んで出力 */
 }
 sleep(10); /* 10秒待機 */
}

期限: 6/12 午後10時まで

お願いします。
372デフォルトの名無しさん:2006/06/11(日) 02:21:14
/* (1) */
int main(argc,argv)
int argc;
char **argv;
{
  int n;
  char buf[512];
  while ((n=read(0,buf,512))>0) write(1,buf,n);
}
373デフォルトの名無しさん:2006/06/11(日) 02:24:29
>>371への回答 (>>372も)
/* (2) */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main(argc,argv)
int argc;
char **argv;
{
  int n,fd;
  char buf[1024];
  struct stat st;
  time_t mt;
  stat(argv[1],&st);
  mt=st.st_mtime;
  for (;;) {
    stat(argv[1],&st);
    if (mt!=st.st_mtime) {
      mt=st.st_mtime;
      fd=open(argv[1],O_RDONLY);
      while((n=read(fd,buf,1024))>0)
        write(1,buf,n); /* 1024バイト単位に、readバイト数がゼロになるまで読んで出力 */
      close(fd);
    }
    sleep(10);
  }
}
374デフォルトの名無しさん:2006/06/11(日) 02:24:29 BE:77640858-#
>>336-341
例えば、こんな風に使えば使えなくもないかも。
char* p=replace(s, f, t);
if (p!=s) {/*チカンされました*/}else{/*チカンされてません*/}
375デフォルトの名無しさん:2006/06/11(日) 02:42:18
>>374
#define BECKY "shiri"
char *p=replace(BECKY,"kaban","sawaru");
if (p!=BECKY) {/*チカンしてないのに*/}else{/*チカンされてません*/}
なんてのが処理系によってはあるな。
376デフォルトの名無しさん:2006/06/11(日) 03:29:44 BE:104814869-#
確実に冤罪を回避するにはやはりチカンしてないときはぬるぽを返すのが常道。
が、それが聞き入れられない(戻り値をチェックしない)ほどトンチキな奴が呼び出し側
だったりすると人生終わる。
377275:2006/06/11(日) 03:41:54
>>373
ほんとありがとうございます、助かりました
378デフォルトの名無しさん:2006/06/11(日) 05:48:30
キーボードから数行のテキストを読み込み、
その中に含まれるアルファベットの出現回数、
その中に含まれる一文字単語、二文字単語、三文字単語...の出現回数、
その中に含まれる各単語の出現回数、
これらを分析し、出力せよ。

例:「To be,or not to be:that is the question:」

a:1、b:2、c:0、d:0 ...

 1文字:0回 2文字:6回 3文字:2回 ...

to:2回 be:2回 or:1回 ...のようになる。

Hint:strtok関数で各単語ごとに区切ってから考えると良い。



という宿題が出ました。助けてください。
379デフォルトの名無しさん:2006/06/11(日) 09:54:41
[1] 授業単元: C言語プログラミング
[2] 問題文
キーボードから100点満点のテストの点数を入力し(-1で終了)、
10点ごとの人数を int型の配列 count[11]に数えるプログラムを作成せよ。
テストは100点満点とし、それ以外の入力はエラーとして無視する。
ただし -1 はデータの終了を表すものとする。
点数の入力が終了したら、度数分布を画面に出力して終了する。
【出力の例】
0 - 9 0人
10 - 19 1人
20 - 29 0人
30 - 39 1人
40 - 49 0人
50 - 59 2人
60 - 69 4人
70 - 79 5人
80 - 89 8人
90 - 99 3人
100 0人
【ヒント】
点数 0〜 9の人数 ‥ count[0]
点数10〜19の人数 ‥ count[1]
点数20〜29の人数 ‥ count[2]
とそれぞれ順に格納される。
つまり入力された点数を10で割った値が、添字となる。
[3] 環境
 [3.1] OS: Windows
 [3.2] Microsoft Visual C++ .NET
 [3.3] 言語: C
[4] 期限: ([2006年6月13日12:00まで]
[5] forなどループ、配列を習っている最中です
380デフォルトの名無しさん:2006/06/11(日) 10:13:28
#include <stdio.h>
int main(){
int i, n, count[11] = {0};
while(1){
scanf("%d", &n);
if(n<0) break;
count[n/10]++;
}
for(i=0;i<10;i++)
printf("%d - %d %d人\n",i*10,i*10+9,count[i]);
printf("100 %d人\n",count[10]);
return 0;
}
381デフォルトの名無しさん:2006/06/11(日) 14:14:53

|ω・`) どなたか>>158もお願いします。。。


382デフォルトの名無しさん:2006/06/11(日) 14:55:18
383デフォルトの名無しさん:2006/06/11(日) 16:19:24
例えばx(整数)が負のとき〜するという文を、if文などを使わないで
書くにはどうしたら良いのでしょうか?
また、xを符号付2進数で表し、そのMSBを求めることはできますか?
384デフォルトの名無しさん:2006/06/11(日) 16:32:20
ここは例え話をするところではありません。
385デフォルトの名無しさん:2006/06/11(日) 17:03:17
[1] 授業単元:
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
ピボット選択付きLU分解のCプログラムを作成せよ。
[3] 環境
 [3.1] OS: WindowsXP pro
 [3.2] コンパイラ名とバージョン: Visual Stidio.NET 2003
 [3.3] 言語: C
[4] 期限: 2006年6月11日24:00まで
[5] その他の制限: 特になし

ガウスの消去法のピボット選択のプログラムは見つけたんですが、LU分解のものは見つかりませんでした。
通常のLU分解と、その他の条件(ここには書かなかった)はできたんですが、ピボットの部分選択で四苦八苦してます。
LU分解のアルゴリズム部分のプログラムだけで結構ですので、ご享受お願いします。
386デフォルトの名無しさん:2006/06/11(日) 17:08:02
>>383
適切なスレで質問するなら答えてあげる。
387デフォルトの名無しさん:2006/06/11(日) 17:53:06
[1] 授業単元:構造体
[2] 問題文:
2次元平面内の2点の座標をx座標とy座標を交互にキーボードから入力し,
その2点間の中点の座標を表示するプログラムを作成しなさい.
このとき,点の座標は構造体で表すものとし,
構造体の名前を point_t,構造体のメンバを,
1. x座標の値は double型 とし,名前を x とする
2. y座標の値は double型 とし,名前を y とする
とする.
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:よくわかりません
 [3.3] 言語:C
[4] 期限:2006年6月11日まで
[5] その他の制限:関数、ポインタ、文字列は習いました

コンパイラのバージョンはよくわからないです、すいません。
gccとemacsのコマンドを使っています
388デフォルトの名無しさん:2006/06/11(日) 18:21:42
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
dateとgrepを組み合わせて、引数として与えた時刻になったときに
’wake up!’と表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 今日午後11時まで

お願いします
389デフォルトの名無しさん:2006/06/11(日) 18:45:53
[1] 授業単元:構造体
[2] 問題文:・構造体で、最大4桁入力の計算機を作成しなさい。
      ・演算子は優先順位を考慮し、ゼロで割った場合はエラーになること。
      ・数字の間に空白が入力されるとエラーになること。
      ・数字、演算子、=、空白のみで、その他が入力されるとエラーになること。
[3] 環境
 [3.1] OS:WINDOWS
 [3.2] コンパイラ名とバージョン:よくわかりません
 [3.3] 言語:C
[4] 期限:2006年6月16日まで
[5] その他の制限:特になし



390デフォルトの名無しさん:2006/06/11(日) 19:29:47
>>388
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
char command[256];
if( argc <= 1 ) return 0;
sprintf(command, "date | grep '\\w\\+ \\w\\+ \\w\\+ %s' > NUL", argv[1]);
while(0 != system(command) ) sleep(1);
puts("wake up!");
return 0;
}
391デフォルトの名無しさん:2006/06/11(日) 19:32:09
[1] 授業単元:プログラミング 
[2] 問題文(含コード&リンク): 
 数nを入力しnの階乗を計算し次のように表示するプログラムを作りなさい
[3] 環境 
 [3.1] OS: WindowsXP SP2 
 [3.2] コンパイラ名とバージョン: Visual Stidio.NET 2003 
 [3.3] 言語: C 
[4] 期限:来週まで
[5] その他の制限: 特になし 


for next文を使うことは分かったんですが
そこから先に進めません、ご教授お願いします。
392デフォルトの名無しさん:2006/06/11(日) 19:40:29
>>391
>次のように表示するプログラム
次のようにって部分が分からんけど、階乗なら楽勝じゃね?
n を入力したら、後は for文にnから順に値をデクリメントして掛けていけば良いし。
393デフォルトの名無しさん:2006/06/11(日) 19:46:57
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):1+1/2^2+1/3^2+..........+1/n^2 が3を超えるときのnの値を求めよ。
[3] 環境
 [3.1] OS: WindowsXP SP2
 [3.2] コンパイラ名とバージョン: UltraC
 [3.3] 言語: C
[4] 期限: 明日の午後2時まで

よろしくお願いします。
394デフォルトの名無しさん:2006/06/11(日) 19:55:08
>>391
ttp://www.media.osaka-cu.ac.jp/~k-abe/99-JS-II/C-3.html
俺のサイトじゃないけど、参考までに
395C言語は面倒だ orz:2006/06/11(日) 20:03:13
396デフォルトの名無しさん:2006/06/11(日) 20:03:34
>>391
これをmainから呼び出して
int kaijo(int a)
{
if (a>0){
return kaijo(a-1)*a;
}else{
return 1;
}
}
397デフォルトの名無しさん:2006/06/11(日) 20:15:27
>>393
#include <stdio.h>
int main(void)
{
int n;
double sum = 0;
for( n = 1 ; sum <= 3.0 ; n++ ) sum += 1.0 / (n * n);
printf("%d\n", n);
return 0;
}
398デフォルトの名無しさん:2006/06/11(日) 20:17:34
そのときのsumの値は…
399デフォルトの名無しさん:2006/06/11(日) 20:18:55
>>391
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2029.c
表示の仕方の指定が分からんので、とりあえず普通に結果を出す表示で
400デフォルトの名無しさん:2006/06/11(日) 20:24:46
>>387
結果の表示桁数がわからんけどとりあえず%3.3fで

#include "stdio.h"
typedef struct point_t
{
double x;
double y;
}point_t;
int main()
{
point_tpt[3];
printf("中点計算\n");
printf(,(カンマ)区切りで座標を入力して下さい\n);
// scanfでのdoubleは%lf
printf("点1の座標 x,y=");
scanf("%lf,%lf",&pt[0].x,&pt[0].y);
printf("点2の座標 x,y=");
scanf("%lf,%lf",&pt[1].x,&pt[1].y);
pt[2].x = (pt[0].x+pt[1].x) / 2 ;
pt[2].y = (pt[0].y+pt[1].y) / 2 ;
// printfでのdoubleは%f
printf("中点(x,y)=(%3.3f,%3.3f)",pt[2].x , pt[2].y);
return 0;
}


401デフォルトの名無しさん:2006/06/11(日) 20:27:52
>>395,>>400
ありがとうございます
402C言語は面倒だ orz:2006/06/11(日) 20:36:56
>>400
おお、&演算子があることを忘れてた
C/C++言語はまだまだ慣れないなぁ orz
計算式もそちらのほうがシンプルだったかぁ

それにしてもC言語は書式指定を設定するのが本当に面倒だと思った
403デフォルトの名無しさん:2006/06/11(日) 20:45:10
>>397
どうもありがとうございました。
404デフォルトの名無しさん:2006/06/11(日) 20:49:54
>>392,394.396,399
ご親切にありがとうございます。
助かりました。
405385:2006/06/11(日) 21:19:54
四苦八苦したところ、なんとかできたようです。
部分選択できてるかどうかは、ピボット選択してできた行列の対角成分が
各行で一番大きな値になってればいいんですよね?
一応そうできてたので、あってると思うんですが・・・
406デフォルトの名無しさん:2006/06/11(日) 21:22:22
申し訳ありません。どなたか>>269をお願いします・・・m(__)m
407デフォルトの名無しさん:2006/06/11(日) 21:34:16
[1] 授業単元: 数値計算特論
[2] 問題文(含コード&リンク): 差分法を用いて、障害物の存在する流れを求める
                   プログラムを組み、その流れの流線図、速度ベクトル図、
                   等圧線図を示せ。
[3] 環境
 [3.1] OS: Win2k SP4
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C言語
[4] 期限: 6月16日
[5] その他の制限: 特になし


______________


     _____
     |      |
___| |_____

このような管内流れを求めるプログラムです。
よろしくお願いします。
408デフォルトの名無しさん:2006/06/11(日) 22:20:47
>269
迷路ファイルが読み込めないよ
409デフォルトの名無しさん:2006/06/11(日) 22:47:47
どなたか>>305をもう少しAIっぽくしていただけないでしょうか

>>315さんには失礼かもしれませんが、大変感謝しています
410ケロ:2006/06/11(日) 23:41:09
[1] 授業単元: 計算物理学
[2] 問題文(含コード&リンク): 1/√(π)exp(-x^2) 中央値0 偏差1 の正規分布表をあたえる。
[−1.1]および[−2.2]の範囲に存在する確立はいくらか?
で台形法で解けと…。
[3] 環境
 [3.1] OS: Windowsxp
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: H18年6月13日まで
[5] その他の制限: なし

お願いします(T_T)

411デフォルトの名無しさん:2006/06/12(月) 01:05:10
>>410
1/√(π)exp(-x^2) 中央値0 偏差1 の正規分布表とやらは?
412デフォルトの名無しさん:2006/06/12(月) 01:12:32
>>411
問題文にはそれしか書いてないです・・
413デフォルトの名無しさん:2006/06/12(月) 01:14:19
それじゃ出題ミスだな。担当に文句いえよ。
414京大生www:2006/06/12(月) 01:18:50
Cです。
環境はどこまでいえばいいか分かりませんが、コンパイラはbcc32

テキストファイルのa.textが
abc
def
ghi
だとします。

char *hako[3];
で定義した配列ポインタを使って

*(hako+0) = abc
*(hako+1) = def
*(hako+2) = ghi

というかんじでファイルから配列にコピーしたいのですが、どうすればいいのでしょうか?

大至急応答お願いします。
415デフォルトの名無しさん:2006/06/12(月) 01:21:28
>>413
N(0,1)の標準正規分布のことを言ってると思われ。
だから与えてないんだろ。

>>410
C的に書けば N(0,1) = exp(-pow(x, 2)/2) / sqrt(2)
の間違いだと思うんだがどうよ?
(expの指数部が違う)
416デフォルトの名無しさん:2006/06/12(月) 01:28:03
>>414
これでいい?
後、>>1ぐらい嫁!
#include <stdio.h>

int main(void)
{
char *hako[3];
FILE *fp;
if ((fp=fopen("a.text","r"))==NULL){
perror("error! ");
return -1;
}
fscanf(fp,"%s",hako);
fscanf(fp,"%s",hako+1);
fscanf(fp,"%s",hako+2);
printf("*(hako+0)=%s\n*(hako+1)=%s\n*(hako+2)=%s\n",hako,hako+1,hako+2);
fclose(fp);
return 0;
}
417おながいします:2006/06/12(月) 01:30:50
1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
アルゴリズムで3以上n以下の素数の個数を計算して表示させるプログラムを書きなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Stidio C++ 6.0
 [3.3] 言語: C
[4] 期限: 2006年6月12日8:00まで
[5] その他の制限: 特になし

早急にお願いします!
418デフォルトの名無しさん:2006/06/12(月) 01:31:49
>>416
テンプレ無視に答えんなカス。
419デフォルトの名無しさん:2006/06/12(月) 01:35:05
>>417
どのアルゴリズムで?
420デフォルトの名無しさん:2006/06/12(月) 01:35:14
>>415
あぁ、正規分布の確率密度関数か
そういやそんなのも習ったな
421デフォルトの名無しさん:2006/06/12(月) 01:36:37
>>414
文字列について理解が足りん。
適当にコメントも書いておいたから、見てくれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2030.lzh
422京大生www:2006/06/12(月) 01:36:51
文字数を多くしたらばぐったけど
423京大生www:2006/06/12(月) 01:37:28
>>421
こわくて開けない
424京大生www:2006/06/12(月) 01:40:22
>>416
でa.txtを
abcc
def
ghi
としたらおかしな結果を得ました。
なぜでしょう
425デフォルトの名無しさん:2006/06/12(月) 01:41:38
>>423
見たくないなら見なくてもよろし。
きっとおまえさんのためになるとおもって書いたんだけどな。
念のため言っておくと、純粋な.LHAアーカイブだし、中身はソースファイルとテキストファイルだけだ。
まあ好きにしれ。
426デフォルトの名無しさん:2006/06/12(月) 01:42:08
>>424
仕様範囲外での動作は未定義です
427デフォルトの名無しさん:2006/06/12(月) 01:42:38
ハイ次の方どうぞー
428京大生www:2006/06/12(月) 01:42:51
仕様範囲とは?
429デフォルトの名無しさん:2006/06/12(月) 01:43:10
京大生なのにウィルス検索ソフトも持ってないのかよ
京大生ならウィルス検索ソフトぐらい自作しろよ
430京大生www:2006/06/12(月) 01:43:39
勇気をもってDLした。よも
431デフォルトの名無しさん:2006/06/12(月) 01:45:28
>>422
自分で仕様を
>テキストファイルのa.textが
>abc
>def
>ghi
>だとします。
>char *hako[3];
>で定義した配列ポインタを使って

と入力文字数と配列サイズを固定した条件出してるくせに
勝手に仕様を変えてほざくなボケが。
432デフォルトの名無しさん:2006/06/12(月) 01:45:35 BE:23292926-#
433京大生www:2006/06/12(月) 01:46:57
char *を使いたい理由は

例えばchar hako[10]としてしまうと必ず10バイト使われてしまうけどポインタなら・・・
実験したプログラム↓

#include <stdio.h>

int main (void) {
int i;
char *subject[3] = {"math", "phisics", "chemistry"};
for (i=0; i<=2; i++) {
printf("%s\n", *(subject+i));
printf("%d\n", sizeof(*(subject+i)) );
}



putchar('\n');
for (i=0; i<=2; i++) {
printf("%s\n", *subject+i);
printf("%d\n", sizeof(*subject+i) );
}
return 0;
}

一応ポインタに対する軽い裏づけはとったつもりなのに失敗したわけで
434京大生www:2006/06/12(月) 01:48:16
なんでおれをいじめるんだ;;
わかんないからきいてるだけなのに;;
435デフォルトの名無しさん:2006/06/12(月) 01:49:01
>>433
軽すぎ
436デフォルトの名無しさん:2006/06/12(月) 01:49:42
つここは宿題スレ
437デフォルトの名無しさん:2006/06/12(月) 01:50:48
>>432が回答貼ったので篩貼るのは止めとくが、それ前にも見たなwwww
438デフォルトの名無しさん:2006/06/12(月) 01:50:59
>>433
つ [恥めてのC]
439京大生www:2006/06/12(月) 01:51:12
別に宿題じゃなくても聞いてもいいじゃんか。
くそ、プログラムわかんねえ。才能ないのかな
440デフォルトの名無しさん:2006/06/12(月) 01:53:08
そもそもchar*hoge[N]って、配列ポインタじゃなくてポインタの配列だろ
変数宣言もまともに読み取れんのか?
441デフォルトの名無しさん:2006/06/12(月) 01:55:29
動的に配列確保すればいいだけじゃないか
442421:2006/06/12(月) 01:55:50
>>433
ま、名前欄が反感買ってるんじゃまいか?それはいいとして。
>>433で提示されたプログラムは、文字列がハードコーディングされている。
ということは、コンパイル時に変数への文字列の代入が決定される。
char *hoge = "str";
という表現は、コンパイル時に領域を決定できるから問題無い。
(hogeは 文字列"str"の先頭のポインタ)

が、>>414で示した条件はファイルからの読み込みだ。
これでは、コンパイル時に文字列用の領域を決定できない。
仮に、
char *huga;
とした場合、sizeof (char *)分の領域しか確保されない。
ということは、これに文字列を代入することは不可能だ。
なので、通常コンパイル時に確定できない文字列を読み込む時は、あらかじめ
文字列の上限値を設定して領域(charの配列)を確保するか、
あるいは何らかの方法で文字列長を決定し、malloc(動的なメモリ確保関数)の戻り値を保存し、
strcpy等で文字列を「コピー」しなければならないんだ。

ざっと書いたが、分かったかな?
443京大生www:2006/06/12(月) 01:56:55
それは↑に書いたプログラムで裏づけをとってある。
char *subject[3] = {"math", "phisics", "chemistry"};
としたらちゃんと代入できてるのだから、出来ないはずがない

なぜ一番最初に渡されたプログラムがテキストを変えるとバグるのか理解出来ない
444デフォルトの名無しさん:2006/06/12(月) 01:57:27
一分遅かったな
445・∀・)っ-○◎● ◆toBASh.... :2006/06/12(月) 02:00:05
なにこの京都大学産業学部
446デフォルトの名無しさん:2006/06/12(月) 02:01:16

char* ポインタ名= "文字列";

という文における=が、どこでも使えるような代入文の=じゃなくて
「コンパイラが文字数を数えて特別に準備してくれる特殊な初期化記法」
であることがわかってない奴が多いな。
447デフォルトの名無しさん:2006/06/12(月) 02:01:45 BE:40761173-#
>>437
一応、ちゃんと計算してるから>>417の条件にも当てはまるはず。
448デフォルトの名無しさん:2006/06/12(月) 02:02:31
>>442
つまり>>416のプログラムにおける
char *hako[3];
の3は3バイトの3なのか?じゃないとテキストを変えてばぐった説明がつかない。

おれは
char *subject[3] = {"math", "phisics", "chemistry"};
と書いてそれぞれに文字列の代入をして成功している。

同じ形なのに[]の中の意味が変わるというのか?

そんなバカなことはあるまい。

はぁああああああああああ!!!!!!!!!!!!!
449デフォルトの名無しさん:2006/06/12(月) 02:05:39
>>446
そんな基本事項が分かってない奴なんているのか?
450デフォルトの名無しさん:2006/06/12(月) 02:06:09
>>442,446を読め、それと、いい加減スレ違いなんで質問スレ池
後、状況の違うものを比較しても何にもならん
451デフォルトの名無しさん:2006/06/12(月) 02:07:23 BE:40761937-#
>>443
>としたらちゃんと代入できてるのだから、出来ないはずがない

「ちゃんと」じゃないかも知れないとは思わなかったのか。
char *subject[3] = {"math", "phisics", "chemistry"};
としておいて、テキストを
mathematics
philosophy
biochemistry
にしても「ちゃんと」代入できるのかね?
452・∀・)っ-○◎● ◆toBASh.... :2006/06/12(月) 02:08:10
あまりに酷いんで、ネタだと思うけど鏡台のシラバス見つけてきたお
http://syllabus.kogaku.kyoto-u.ac.jp/syllabus/2006/e.html
453京大生www:2006/06/12(月) 02:09:03
わかた。
気合入れて今作ってるプログラムを完成させてやるお。
Special Thanks 2ちゃんねらプログラム板て書いておいてやるから安心汁wwww
454デフォルトの名無しさん:2006/06/12(月) 02:10:11
>>452
ちなみに情報じゃねーから、その隣
455デフォルトの名無しさん:2006/06/12(月) 02:11:31
>>453
いつから京大はこんな無能が入れるようになったんだ?
ばかだ大学でも逝けよ。
本当にお前ごときが京大生ならさっさと
除籍してほしいと切に希(こいねが)うよ。
まかり間違っても、弁護士や公務員その他社会に影響力のある
職務につかないでね。極めて迷惑だから。
456421:2006/06/12(月) 02:14:25
>>448
もう眠いから、適当に頑張ってくれ。
Google先生に「C言語 文字列 ポインタ」などとして聞いてみるんだな。

ちなみに、最後に言っておくと、

char *hoge{N];
-> (char *)型のポインタのN個の配列
-> hoge[n] は (char *)型のポインタを表す
-> こいつに文字列を代入できると豪語するなら、
-> #include <string.h>して、
-> for(int i=0; i<N; i++)
->   strcpy(&hoge[i], "hogehoge");
-> とでもしれ。

char hoge[N][STRLEN];
-> (char *)型の配列N個に、それぞれchar[STRLEN]の先頭のポインタを格納した配列と考える。
-> すなわち、N*STRLENの二次元配列
-> 上で示した「動かないであろう」forループを試してみるがよい。
457デフォルトの名無しさん:2006/06/12(月) 02:15:30
京都産業大学とかだったりして
458・∀・)っ-○◎● ◆toBASh.... :2006/06/12(月) 02:15:45
でも、わけわからんもんよ。
阪大院に行った香具師が俺に基本情報の突破法聞いてきたりwww
んなもんいまさら受けんなよwww
459・∀・)っ-○◎● ◆toBASh.... :2006/06/12(月) 02:16:32
>>457 >>445でガイシュツ。釣瓶のネタだけどな
460デフォルトの名無しさん:2006/06/12(月) 02:17:31
京大ってもっとすごいこと勉強してるとオモタ
でも、ヒューマンインターフェースとかやるのか…いいなぁ…
461デフォルトの名無しさん:2006/06/12(月) 02:19:52 BE:69876566-#
うちには応募してこないとは思うけど京大もBL入りかな。
462デフォルトの名無しさん:2006/06/12(月) 02:20:36
>>446
それじゃcharへのポインタの初期値に文字列の先頭アドレスを設定しているだけでしょ。
463デフォルトの名無しさん:2006/06/12(月) 02:22:28
ちょwww京大でもBL入り
むやみやたらに、学校名晒すもんじゃないね
464デフォルトの名無しさん:2006/06/12(月) 02:24:12
>>461
いや、あんさんの職場こそBL入り企業なんでは?w
465デフォルトの名無しさん:2006/06/12(月) 02:26:48
どこの大学でも入学時は「拡張子?なにそれ?」とか言うのが大半
まぁそろそろマ板行った方がいい
466デフォルトの名無しさん:2006/06/12(月) 02:28:38
まさかぁ、時代が違うだろw
今時そんなもの知らずにいること自体、時代遅れ。
俺が大学んときゃまだWin98が出てなかった頃だったし
パソコンを持っている生徒もほとんどおらんかったが
自分は工房のときから使ってたから操作は余裕だったが
467・∀・)っ-○◎● ◆toBASh.... :2006/06/12(月) 02:28:40
こういうのが林晴彦あたりの厨本に騙されて独りよがりなコード書くようになるんだなとオモタ
468デフォルトの名無しさん:2006/06/12(月) 02:30:33
大学の入学祝いに、初めてパソコンを買ってもらった人がいるんですよぉ〜
なぁ〜〜にぃ〜〜!?やっちまったな!
男は黙って! 電卓! 男は黙って! 電卓!
あはっ、単純な計算しかできないよ
469デフォルトの名無しさん:2006/06/12(月) 02:31:23
>>410をお願いします。
fortran向けの出題で、Cでやってもいいって言ってたからおかしいのかな?
470デフォルトの名無しさん:2006/06/12(月) 02:37:45
C言語/C++言語の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/
こっちもお願いします
471デフォルトの名無しさん:2006/06/12(月) 06:11:43
>>469
某スレのFORTRANプログラム丸写しで良ければw

#include <stdio.h>
#include <math.h>
#define PI 3.14159265
double fx(double x) { return exp(-x * x) / sqrt(PI);}
void Daikeihou(double a, double b) {
int n, j, k;
double x, h, s;
int NJUN[] = {10, 50, 100};
printf("Sekibun for 1/sqr(PI)*exp(-x*x) a = %5.2f, b= %5.2f\n", a, b);
for (k=0; k<3; k++) {
n = NJUN[k];
h = (b - a) / n;
s = (fx(a) + fx(b)) / 2.0;
for (j=1; j<n; j++) {
x = a + h * j;
s += fx(x);
}
s *= h;
printf("Bunkatsu = %d, Menseki = %f\n", NJUN[k], s);
}
}
int main() {
Daikeihou(-1.0, 1.0);
Daikeihou(-2.0, 2.0);
return 0;
}
472デフォルトの名無しさん:2006/06/12(月) 07:15:32
[1] 授業単元: C++演習
[2] 問題文(含コード&リンク):32から126までの95個の整数を一元配列に格納するものとする。
これらの整数値を文字型にキャストし、10列の表形式で出力するプログラムを作成しなさい 。
なおcout<<(char)code[i]<<ch;というような形式の分をプログラムにいれること。
注:文字型は10進文字コード32から126までの文字にすること。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Borland C++Compiler 5.5
 [3.3] 言語: C++
[4] 期限:明日
[5] その他の制限: 反復処理の章で出された課題です。
朝早くから申し訳ありません。お願いします。
473C++言語も面倒だ orz:2006/06/12(月) 07:41:21
>>472
>cout<<(char)code[i]<<ch;
最後のchというのがよくわからなかったけども、一応作ってみた

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=27895
474デフォルトの名無しさん:2006/06/12(月) 07:43:51
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):1+1/2i+1/3i+1/4i+..............................+1/niが3を超えるときのnの値は?
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: UltraC
 [3.3] 言語: C
[4] 期限: 6/16まで

一応記しておくと、 i は階乗という意味です。分かってたらごめんなさい。
よろしくお願いします。
475デフォルトの名無しさん:2006/06/12(月) 08:03:40
iで階乗とわかる奴がいるんだろうか
476デフォルトの名無しさん:2006/06/12(月) 08:06:06
>>474
> i は階乗という意味です。
分かっていないのはお前だろw

ていうか自分が何を計算しようとしているのか分かってるのか?
477デフォルトの名無しさん:2006/06/12(月) 08:06:21
i
!
似てると思ったけど全然違うなw
コンパイラといい、ネタでしょう
478デフォルトの名無しさん:2006/06/12(月) 08:12:46
>>473
472です。携帯から失礼します。帰宅したら確認します。ありがとうございましたm(__)m
479デフォルトの名無しさん:2006/06/12(月) 08:13:44
ネーミングの悪さの苦情はこちらへどうぞ。
http://www.proton.co.jp/products/ultra-c/index.html

繰り返して言うが、自分が何を計算しているのか分からないと答えは永久に出ないぞ >>474
ていうかnは永k(ry
480デフォルトの名無しさん:2006/06/12(月) 08:16:03
>>479
パッケージに吹いたw
481デフォルトの名無しさん:2006/06/12(月) 08:23:59 BE:15528342-#
>>474
e^xをx=0の周りでマクローリン展開すると…
482デフォルトの名無しさん:2006/06/12(月) 08:24:27
>>479
インタプリタな上にOutーof-Rangeのチェックまでしてくれるのか
こんなので学習したらデバッグ方法も知らないような馬鹿が量産されるだけだろ
483デフォルトの名無しさん:2006/06/12(月) 08:38:19
>>481
…1ですが。
484デフォルトの名無しさん:2006/06/12(月) 08:40:54
>>482
言語とデバッグ方法を同時に学ぶ必要もないだろ。
485デフォルトの名無しさん:2006/06/12(月) 08:57:54
UltraC・・・あこがれる
486デフォルトの名無しさん:2006/06/12(月) 09:03:01 BE:11646623-#
>>483
「0の周りで」
487デフォルトの名無しさん:2006/06/12(月) 09:08:50
時間と分と秒を入力として、秒に換算し 換算結果を出力とする関数を作成
ただし 入力の分と秒はともに0−60とし、それ以外が入力された場合はエラーとして
戻り値をー1で返す。正常終了の場合は戻り値を0とする
また、この関数を確認するためのmain関数も作成すること

ポインタがさっぱりわかりません…
488デフォルトの名無しさん:2006/06/12(月) 09:08:52
0近傍でのテーラー展開がマクローリン展開じゃなかったか?
489デフォルトの名無しさん:2006/06/12(月) 09:15:44
>>487
別にポインタいらないだろ
それに>>1
490デフォルトの名無しさん:2006/06/12(月) 09:16:49
#include<stdio.h>
#define DATE1990 /*マクロ定義1*/
#define DATE1995 /*マクロ定義2*/
void main(void)
{
float price,total =0.0;
scanf("%f",&price); /*価格をとりこむ*/
#if DATE==1990
total = 0.03* price +price ;
printf("Tax(3%%) Total %.0f\n",total); /*画面に表示*/
#else if DATE==1995
total = 0.05* price +price ;
printf("Tax(5%%) Total %.0f\n",total); /*画面に表示*/
#endif
}

これをどうやればシンボルが定義されているかどうかを判定することによって、
処理内容を変更できるようになりますか?
491デフォルトの名無しさん:2006/06/12(月) 09:17:47
>>490
#ifdef
492487 490  ◆QYB/K4Bs5c :2006/06/12(月) 09:21:41
すいません トリップ忘れてました
493 ◆QYB/K4Bs5c :2006/06/12(月) 09:50:32
【授業単元】C言語 プログラミング
【環境】Visual Stdio.NET2003
【OS】Windows XP
【提出期限】6月19日
【課題内容】>>487 >>490です
よろしくおねがいします
494 ◆jhWZTOR0DY :2006/06/12(月) 10:20:46
[授業単元]プログラミング
[言語]C言語
[提出日]6月17日
[環境]Visual Stdio.NET2003
[OS]Windows XP
[問題]5名分3教科のテスト結果が5×3の配列にはいってるとき
各教科毎に点数の高い順に並び替えた配列を入力する関数と
main関数を作成せよ    {2次元配列のポインタ渡し}
英語77,75,65,50,30
数学92,80,69,65,40
国語90,90,80,50,45

よろしくお願いします
495 ◆QYB/K4Bs5c :2006/06/12(月) 10:23:17
>>491
即レスありがとうございます
8行目の #if を #ifdef にかえればいいということでしょうか?
496デフォルトの名無しさん:2006/06/12(月) 10:41:13
>>495
そう、大体こんな感じ
#ifdef DATE1990 
...
#elif defined(DATE1995)
...
#endif
497 ◆QYB/K4Bs5c :2006/06/12(月) 10:47:13
>>496 ありがとうございます。やってみますね
498 ◆jhWZTOR0DY :2006/06/12(月) 11:06:13
[授業単元]プログラミング
[言語]C言語
[提出日]6月17日
[環境]Visual Stdio.NET2003
[OS]Windows XP
[問題]球の半径を入力とし、算出した球の体積と
表面積を出力とする関数を作成せよ。ただし、半径0以下の値が
入力された場合はエラーとし、戻り値ー1で返すこと。
正常終了の場合は戻り値を0とする。
また、この関数を確認するためのmain関数も作成すること。
円周率は3.1415926536とし、半径Rの球の体積V、
表面積Sを求める式は次の通りである。 {ポインタ渡しによる関数呼び出し}

V=4/3πR^3 S=4πR^2

例答:半径10.0 体積4188.79 表面積1256.64
できる方がいましたらよろしくお願いします
499デフォルトの名無しさん:2006/06/12(月) 11:45:48
>>305
othello_base.cのAI_move()を宣言だけにしてこれを追加。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2031.txt
GetPeakStep(board, size, current, 8, &x, &y);
の8を大きくすれば最強の予感。
500デフォルトの名無しさん:2006/06/12(月) 12:10:30
>>493
#include <iostream>
using namespace std;
int main(){
int h , m , s;
int mts = (m * 60);
int hts = (h * 60 * 60);
loop1:
cout << "時間を入力してください>\n";
cin >> h;
if( (h >= 1) && (h < 24) ){
goto loop2;
}
else {cout << "modorichi-1\n";
goto loop1;
}
501デフォルトの名無しさん:2006/06/12(月) 12:11:43
>>493つづき
loop2:
cout << "分を入力してください>\n";
cin >> m;
if(m < 60){goto loop3;
}
else {cout << "modorichi-1\n";
goto loop2;
}
loop3:
cout << "秒を入力してください>\n";
cin >> s;
if(s < 60){
goto end;
}
else {cout << "modorichi-1\n";
goto loop3;
}
end:
cout << "入力された時間を秒に換算すると" << (mts + hts + s) << "秒です";
return 0;
}
502500:2006/06/12(月) 12:19:01
プログラムの書き方なんて分からないので適当に書いてみました。

なんか数字以外の文字を入力すると動作がおかしくなるので気をつけてください。

それでは失礼します。
503デフォルトの名無しさん:2006/06/12(月) 12:22:40
504デフォルトの名無しさん:2006/06/12(月) 12:26:04
>>266
現在の貯金額を表示するにはどうしたら
いいですか?
505デフォルトの名無しさん:2006/06/12(月) 12:56:49
>>504
5以上の数値を入力すりゃ出るが・・・それはソースを見れば分かるんでは?
自分で仕様を変えるくらいはできるでしょ?
506デフォルトの名無しさん:2006/06/12(月) 12:59:57
レス見りゃ何も出来ない無能だってわかるじゃん。
507デフォルトの名無しさん:2006/06/12(月) 13:02:52
まぁ、スレのタイトルからして、何も分からん丸投げの奴が多いのは分かるが・・・
自分で試すチャレンジ精神もないクズしか質問してこないのか?
せめてソースを見て理解するくらいの気持ちは欲しいもんだな
508デフォルトの名無しさん:2006/06/12(月) 13:07:16
依頼者にコピペ以上の何かを期待するのはスレ違い。
509その1:2006/06/12(月) 13:17:03
[1] 授業単元: 情報処理演習
[2] 問題文(含コード&リンク):二分探索でデータを見つけるプログラムを作
成し,実行せよ.ただし,以下の仕様を満たすものとする.
<仕様>
1.対象とするデータ構造は,
struct SportsClub kaiin[] = { 555, "Yuki TERADA", 222, "Kaho KANO",
789, "Yuko FUKUDOME", 444, "Seiko ANDO",
456, "Mai YUKAWA", 666, "Kyoko KAMIDOHZONO",
123, "Yuasa OKADA", 777, "Aya SAKATA",
111, "Yua SAITOU", 333, "Noriko KIJIMA",
569, "Shihori YOKOHARI", 689, "Chieko NOGUCHI",
345, "Ikuko OURA", 994, "Airi TAKASAKI",
103, "Mizuna INOUE", 888, "Yuna SATONAKA"
};
と初期化すること.また,この構造体は,
struct SportsClub
{
int id_num;
char name[80];
};と定義すること.
510その2:2006/06/12(月) 13:17:37
2.最初に,1のデータ構造をファイルoriginal_kaiin.dat(ASCII 型式)に保存
する.次に,クイックソートで上記データ構造を会員番号(id_num)にしたがっ
て昇順に並べ替えるとともに,その結果をsorted_kaiin.dat(ASCII 型式)に保
存する.ただし,クイックソートは,標準ライブラリ関数を用いず,各自作成
すること.
3.sorted_kaiin.dat を構造体配列kaiin2[KAIIN_NUM]に読み込み,これを二分
探索に用いる.ただし,本課題の場合,KAIIN_NUM は16 である.
4.二分探索は,会員番号を打ち込めば,該当する氏名を表示させるものとす
る.また,会員一名分の情報を表示させた後,終了・続行の希望を使用者に質
問させ,回答を基にその後動作を決定させること.
<入出力例>
Please input ID#: 123
ID#:123 Name:Yuasa OKADA
Continue? y/n: y←続けるとき,y を打ち込む
Please input ID#: 0
Not found!
Continue? y/n: y
Please input ID#: 345
ID#:345 Name:Ikuko OURA
Continue? y/n: n←これで終了
[3] 環境
 [3.1] OS: linux red hat
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C+
[4] 期限:6/20
[5] その他の制限:ながながと問題文を書いてすみませんどうかおねがいしますorz
511デフォルトの名無しさん:2006/06/12(月) 13:44:13
>>487
出題者教授か?問題がおかしいと思うが
512デフォルトの名無しさん:2006/06/12(月) 13:57:07
>>498
なぜその内容でポインタ渡し…
513デフォルトの名無しさん:2006/06/12(月) 14:07:51
もう授業も最後の方でポインタを使いたい時期なんだよ・・・
って、まだ新学期が始まったばかりだがw
514デフォルトの名無しさん:2006/06/12(月) 14:08:39
>>499
知らない単語がいっぱいあるので
ちゃんと調べてレポート書こうと思います

トーナメントが実際あったら結果は報告します
ありがとうございました
515デフォルトの名無しさん:2006/06/12(月) 14:10:09
>>487 の戻り値が、換算する関数のものなのか、mainのものなのかはっきりせんね。
換算する関数に不適切な値を引き渡した場合に -1 を戻すなら、結果は-1秒って表示するわけ?
もしそうだったら、正常な値を引き渡した場合、秒数を返り値にするとなれば、
換算する関数の正常終了時には 0 しか返って計算結果が出せないのだがw
変数の定義をグローバルにすれば良いけど、もっと出題の条件をはっきりしてもらいたい。
516デフォルトの名無しさん:2006/06/12(月) 14:50:49
[1] 授業単元:宿題
[2] 問題文 正の整数を読み込み、その整数が素数かどうかを調べる
プログラムを作成せよ。
[3] 環境
 [3.1] OS:windows XP
 [3.2] gccでした。
 [3.3] 言語: C言語なんですが違いがわかりません><おそらくCの方かと。。
[4] 期限:今日中でお願いします(_ _*)
[5] その他の制限:専門学校に通う1年生なんですヶど。。
いきなりプログラミングの問題が出題されてしまぃ、
友達と共に凄く困ってます(;〜;)どなたか優しぃ方お願ぃします(┰_┰)∩

517デフォルトの名無しさん:2006/06/12(月) 14:51:58
まずはおっぱいうpしろ
518デフォルトの名無しさん:2006/06/12(月) 15:00:51
#include <stdio.h>
int main(){
printf("****入力値が素数かどうか調べるプログラムだよ!***\n");
printf("正の整数を入力してね : ");
getchar();
printf("調べました(^_^)。\n");
return 0;
}
519デフォルトの名無しさん:2006/06/12(月) 15:01:12 BE:77640285-#
520デフォルトの名無しさん:2006/06/12(月) 15:01:28
>>516
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2032.cpp
数日前に俺が作った、初心者がやりそうな初歩的なやり方で良ければどぞw
521516:2006/06/12(月) 15:09:51
やっぱ女口調だと食いつきが違うな(笑)
チェリー諸君thanks!
522名無し:2006/06/12(月) 15:12:43
内容:
[1] 授業単元: c言語 演習
[2] 問題文(含コード&リンク):


選択整列法のプログラム 6.2.c に関し,内側の反復の中で
変数 min が更新される回数の
平均が O(N log N) であることを証明せよ。
注:入力にはN 個の相異なる値のすべての順列 (permutation) が等確率で
現れるとして,この平均を考えよ。



[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc 3.3.2
 [3.3] 言語: c言語
[4] 期限: 期限外でもいちお評価はひくくなりますが受け取ってくれるそうなんですが、期限は今日の夜0:00までです。↓


プログラム6.2.cというのは、以下のページにあります.このプログラムは、6.1.cと
組み合わせることでコンパイルできます。どうかおねがいします。

http://kk.kake.info.waseda.ac.jp/ads06/0530/0530-ch6.html
523デフォルトの名無しさん:2006/06/12(月) 15:13:41 BE:108696487-#
>>520
√n以上を調べるのは初心者とか以前の問題かと。中学生未満。
524デフォルトの名無しさん:2006/06/12(月) 15:15:53
>>523
またお前かw それじゃ√nにしたソースを提出してみ。
お前のあの長々としたものじゃなくて、もっとシンプルのでな。
だいたい、それを求める場合 math.h と sqrt を使うだろ?
最初にヘッダについてや関数についてそこまで習っているかどうか・・・
525デフォルトの名無しさん:2006/06/12(月) 15:16:54
[1] プログラミング
[2] 標準入力から文字を読み込んで特定の文字の連続たとえばowari
を入力した場合終了するようなプログラムを作成
[3] 環境
 [3.1] xp
 [3.2] gcc 3.4
 [3.2]C
[4] できればすぐがいいです。
よろしくお願いします!
526デフォルトの名無しさん:2006/06/12(月) 15:17:34
あと、前にも言ったけど、1〜nまでの素数を求めるのではなく
入力された値が素数かどうか?だぜ?
527デフォルトの名無しさん:2006/06/12(月) 15:19:30 BE:27175027-#
>>524
>>519のも無論√nまでしか調べないわけだが。
http://c-kadai.sakura.ne.jp/index.php?catid=9&blogid=1

>だいたい、それを求める場合 math.h と sqrt を使うだろ?
>最初にヘッダについてや関数についてそこまで習っているかどうか・・・

習ってないと何か問題でもあるのか?
528デフォルトの名無しさん:2006/06/12(月) 15:20:30 BE:7764522-#
>>526
だから、√(入力された値)までの間に約数がなければ入力された値自体が素数。
そんなのは中学生でも知ってる。
529デフォルトの名無しさん:2006/06/12(月) 15:22:17
>>527
別に。習ってないなりの範囲内でやってやったまでだよ。
初心を忘れるべからず。まさに今のあんたにゃ相応しいかもな。
無駄なものを取り込むようになったら、何が必要かもわかりづらくなるぜ。
ソースはすっきりしてた方が良いだろ。初心者向けには、ね。
まぁ、お互いの考え方について議論しても意味はない。結果を出せるソースがありゃ良いだけだしな。
自分がもっと上を行っているって見せつけたいなら、こんな場所で
ソースを理解できない奴を相手にするよりも、もっと玄人が集まる場所に顔を出してみては?
530デフォルトの名無しさん:2006/06/12(月) 15:22:45
>>525
#include <stdio.h>
#include <string.h>

int main(void)
{
char a[50];
while (1){
gets(a);
if (strcmp(a,"end")==0){
return 0;
}
}
}
531デフォルトの名無しさん:2006/06/12(月) 15:23:00
>>528
だからそのソースを出してくれって言っているんだが?
何度も言わないぞ。1〜nまでの素数を求めるんじゃない。
入力された値が素数かどうか?だぜ?
532デフォルトの名無しさん:2006/06/12(月) 15:23:15 BE:54348847-#
>>525
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100]={'\0'};while(strcmp(tmp,"owari"))fgets(tmp,sizeof(tmp),stdin);return 0;}
533デフォルトの名無しさん:2006/06/12(月) 15:24:11 BE:31055982-#
>>529
「√nまでしか調べない」のどこがどう無駄なんだ?
本当に中学生未満なのか?
534デフォルトの名無しさん:2006/06/12(月) 15:24:57 BE:81522667-#
>>531
>>519ので何か問題あるのか?
535525:2006/06/12(月) 15:25:00
>>530
回答していただいたのに申し訳ないのですが
getcharを用いた解答を作っていただけますか?
536デフォルトの名無しさん:2006/06/12(月) 15:28:04
ちっちっち、 ?# さんよ、いくらあんたがシャウトしようと
理解できない厨房相手に理解させるソースを提示することは無理。
相手が英語しか理解できないのに、日本語で難しい理論を言っても無駄だぜ?
だったら簡単な英語でも意図が伝わる内容を簡略に示すべきだね。
それがロークォリティ
537デフォルトの名無しさん:2006/06/12(月) 15:29:26 BE:46584746-#
理解するかどうかなんてどうでもいいことなわけで。
バカに配慮する必要はないし。
538デフォルトの名無しさん:2006/06/12(月) 15:31:26
その相手をバカにする目的でここにきているのがバレバレな態度がうぜぇって言ってんだが?
君に無意味なでしゃばりは良いとしても、間違いを提示していない者に対して
自分の方がもっと上だぜーーーーはっはー といわんばかりの煽りは止めてもらいたい。
所詮相手は初心者。シンプルなソースから理解させてもなんら問題はないだろ。
539デフォルトの名無しさん:2006/06/12(月) 15:34:07
んで、コンパイルできない >>532 は何だね?
540デフォルトの名無しさん:2006/06/12(月) 15:35:49 BE:77640858-#
バカがバカにされるのは当たり前だろ。
それがウザいのはお前がバカだから。
バカにされるのが嫌なら来るなよ。

>間違いを提示していない者に対して

nが素数かどうかを調べるのに√n以上の約数を当たるのは明らかに「間違い」だ。

>所詮相手は初心者。シンプルなソースから理解させてもなんら問題はないだろ。

ここは「理解させる」のが目的のスレではない。
541デフォルトの名無しさん:2006/06/12(月) 15:36:43
相手が理解するかなどどうでもいいというのはその通り。
問題なのは、ソースの単純さを犠牲にして効率を上げるのを
無条件に善と信じこんだ挙げ句、それを他人にまで強制する態度。
542デフォルトの名無しさん:2006/06/12(月) 15:37:15
>>540
>間違い
はい、出ました、自分勝手な判断基準。適切と不適切の違いも分からんのね。
だからソースを示せば話は早いってアレほど言っているのに、未だにあんたは
入力された値が素数かを√nを使ったソースを出していないわけだがw
543デフォルトの名無しさん:2006/06/12(月) 15:38:15 BE:27174072-#
>>541
ソースの単純さがどこで犠牲にされてると?
ループの最大値がnから√nになると単純じゃなくなるのかね?
544デフォルトの名無しさん:2006/06/12(月) 15:38:50 BE:67935375-#
>>542
>>519のリンク先にあるだろ。バカの上にメクラか?
545デフォルトの名無しさん:2006/06/12(月) 15:38:51
>nが素数かどうかを調べるのに√n以上の約数を当たるのは明らかに「間違い」だ。
どうやら日本語の使いかたが平均的な人とずいぶん違うようですね。
迷惑なので余り発言しないでください。
546デフォルトの名無しさん:2006/06/12(月) 15:40:10
まぁ良い、↓のソースが良いならそれを「押し付け」たら?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2010.txt
別に俺は押し付けはしない。初歩的なやり方を示したまで。
俺は既にsqrtを使うならmath.hが必要だといったが
初心者が最初に習うことなんて、stdio.hをおまじない程度に書くといった程度で
ヘッダなどが既に定義されて、リンクされているなんて教え込ませても
理解するにはまだ経験が不十分だろうって配慮をしたまでよw
547デフォルトの名無しさん:2006/06/12(月) 15:41:03
>>543
<math.h>のinclude
sqrtの呼び出し
sqrtの結果を入れる変数を用意して、初期化。

元のコードが短いだけに、これは十分複雑さを加えてると言えるだろ。
548デフォルトの名無しさん:2006/06/12(月) 15:41:28
>>543
少なくともお前の示したソースは無駄に長い。
あれだって計算で求める素数の羅列だろ?明らかにお前の方が無駄じゃん。
549デフォルトの名無しさん:2006/06/12(月) 15:42:43 BE:69876566-#
>>546
宿題丸投げするクズの理解だの経験だのなど配慮したい奴こそ余所へ行け。
550デフォルトの名無しさん:2006/06/12(月) 15:43:30 BE:77640858-#
>>547
その程度で「複雑だ」と思うような奴はプログラム以前の問題。
それこそ中学生未満。
551デフォルトの名無しさん:2006/06/12(月) 15:44:13 BE:46584364-#
>>548
「長さ」と「複雑さ」の区別が付かないバカですか?
552デフォルトの名無しさん:2006/06/12(月) 15:47:05
>>550
おまえの頭には「複雑なコード」と「複雑でないコード」の二つしかないのか?
もともと必要なかった関数呼び出しが増えている時点で複雑さが増えたのは自明。
553デフォルトの名無しさん:2006/06/12(月) 15:50:05
すまん、性帝トーマス氏の会社って何?就職先のBLに入れておきたいのだが。
少なくとも低レベルな学生向けには、だがw
あと、何度も言わないぞ。お前の提示しているソースは
入力された値までの素数を表示するんであって、入力した値が素数かを判別していない。

それからやたらと中学生中学生って言うけど、お前はプログラム言語は良いとしても
コミュニケーションランゲージまではまともに理解していないみたいだな。
二度といわんぞ。ここは宿題を丸投げしたって自分も言っているのに
何でお前の主張をする場になってんだ?それこそ本末転倒。失せろ、自己主張が強いだけの
無駄な人間めw
お前のソースを採用する初心者がどうとか関係ない。単にお前の主張がうざい。

論より証拠、お前のソースを書き換えて、入力された数値までの素数を求めるんじゃなくて
入力した数値が素数かを判別するプログラムにしてから出直した方が良いよ。
前に依頼した人のだって、お前のソースは問題の意図を外してたんだしw
554デフォルトの名無しさん:2006/06/12(月) 15:52:26 BE:23292162-#
>>552
>もともと必要なかった

という前提自体が間違い。必要な物が欠けていただけ。
555デフォルトの名無しさん:2006/06/12(月) 15:53:06 BE:93168386-#
>>553
>入力された値までの素数を表示するんであって、入力した値が素数かを判別していない。

IsPrimenumberという関数が何をしているかわかりまちゅか〜?
556デフォルトの名無しさん:2006/06/12(月) 15:53:42
>>555
俺はわかっているが、お前のソースが入力した値が素数かを判別する
という意図を無視していることには変わりはないんだがw
557518:2006/06/12(月) 15:56:05
これは酷いスレですね。
558デフォルトの名無しさん:2006/06/12(月) 15:56:59
>>554
つまらん屁理屈をこねるのは止めてくれ。
sqrtを呼ばないで正しい結果を返すソースがあるのは事実だろ?
559デフォルトの名無しさん:2006/06/12(月) 15:57:04
コンパイル不可で目的を果たしていない >>532 をどうにかしてくれませんか・・・?
560デフォルトの名無しさん:2006/06/12(月) 15:57:05
「各自が読み込んだ文字をファイルに格納するプログラムせよ。ただし、低レベル
の入出力のシステムコールを使うこと。」

って問題でたんだけど、誰かわかりますかね?
561デフォルトの名無しさん:2006/06/12(月) 15:57:50
>>559
必死だな(プ
562デフォルトの名無しさん:2006/06/12(月) 15:58:45 BE:69877049-#
>>556
「入力した値が素数かを判別する」という仕様を満たした関数が含まれているので、
「入力した値が素数かを判別するプログラムを作れ」という要件は成立している。
main関数の機能は特に要件に含まれていないからな。
563デフォルトの名無しさん:2006/06/12(月) 16:00:43 BE:31057128-#
>>558
中学生レベルの数学を無視した実装をバカにしてるだけ。
564デフォルトの名無しさん:2006/06/12(月) 16:01:45
つーか、たかが素数判定でそこまで盛り上がるおまいらに乾杯。
565デフォルトの名無しさん:2006/06/12(月) 16:05:14
>>563
答えになってない。
単純化のために中学生レベルの数学を使わないという判断を尊重しろと言ってんだよ。
566デフォルトの名無しさん:2006/06/12(月) 16:07:53
別にさぁ、sqrtを使うなって言ってんじゃないんだから良いだろ?
sqrtを使わない初歩的なやり方の提示に対して、ちょっと悪質な難癖をつけすぎ。
自分の主張がそれで覆されたり否定されるわけでもないだろ?
中学生中学生ってうるさい。既に素数の求め方は知っているんだよ。
問題はC言語でそれを実行するには、どういう手段があるか?
相手への配慮を踏み潰すような悪質な意見は止めたまえ。
567デフォルトの名無しさん:2006/06/12(月) 16:08:06 BE:34938263-#
>>565
じゃあ訂正。
中学生レベルの数学を無視したくらいで単純化されてると思ってるようなバカを
バカにしてるだけ。
568デフォルトの名無しさん:2006/06/12(月) 16:08:38 BE:34939229-#
>>566
必要のない配慮を踏みつぶしても何の問題も無かろう。
569デフォルトの名無しさん:2006/06/12(月) 16:11:01
>>567
関数呼び出し一個の省略だって単純化は単純化だ。
これが理解できないなら救いようがないな。
570デフォルトの名無しさん:2006/06/12(月) 16:11:46
>>568
>必要のない配慮
それがお前の勝手な判断基準だっつってんだよ、いい加減うざい。
お前のは勝手すぎる悪質な嫌がらせ。通報するよ?
571デフォルトの名無しさん:2006/06/12(月) 16:11:53 BE:34937892-#
>>569
「関数呼び出しを省略すると単純になる」という妄想はどこから沸いたのかね?
572デフォルトの名無しさん:2006/06/12(月) 16:13:44 BE:11646623-#
>>570
必要だというなら根拠を示せよ。
573デフォルトの名無しさん:2006/06/12(月) 16:15:51
>>571
わかった。理解できないならしなくていい。
その代わり、「sqrtの呼び出しの省略を単純化とみなす立場がある」ことを尊重してくれ。
574デフォルトの名無しさん:2006/06/12(月) 16:15:55
効率が良い悪いは、同じ環境で実行した際の、実行時間の速さで競ったら?
少なくとも、素数かどうかの判別を無視した、入力した値までの素数を
無駄に表示する方が、算出する時間以外に表示する時間も掛かって無駄だって分かるから。

少なくとも他人のソースにケチをつけるスレじゃない。
それがわかっていない性帝トーマス氏の方が理解されないだろ。
自分がすべてみたいな、自己中の方が必要ない。
所詮丸投げのスレだって理解しているなら、後は質問者がどっちを選ぶかは自由じゃん。
その自由すら自分勝手な意見で踏み潰してんじゃん。気づけって。
575デフォルトの名無しさん:2006/06/12(月) 16:17:33
>>572
「必要」とは言っていない。お前が必要ないと勝手に判断しただけ。
そのお前の判断基準における「不要」という意見を押し付けるなって言ってんだが?
お前の無駄なソースの方が質問者にとっては必要とされないと思うけど?

あと、何度も言わせるな。質問したものの意図を無視した結果こそ不要。
お前のは判別じゃなくて入力した値までの素数の表示するプログラムだったろ?
確かに素数を導き出すアルゴリズムはあれど、結果が問題の意図を無視している。
576デフォルトの名無しさん:2006/06/12(月) 16:17:57
今来
なんか盛り上がってるな
お前らそんなに暇何?
577デフォルトの名無しさん:2006/06/12(月) 16:19:25 BE:15528724-#
>>573
>その代わり、「sqrtの呼び出しの省略を単純化とみなす立場がある」ことを尊重してくれ。
>>567

>>574
>少なくとも、素数かどうかの判別を無視した
>>555
578デフォルトの名無しさん:2006/06/12(月) 16:22:29
以後、自己主張しかせず、問題の意図、必要とされる結果の表示ができないのに
他人を否定しかしない人は放置で。質問した人は、自分で結果を見て選んで下さい。
所詮、丸投げに答えるだけのスレですからw
579デフォルトの名無しさん:2006/06/12(月) 16:23:10
5×5の魔方陣教えて下さい
580デフォルトの名無しさん:2006/06/12(月) 16:24:14 BE:122283397-#
>>575
>お前の無駄なソースの方が質問者にとっては必要とされないと思うけど?

何度も言うが、質問者が必要としているかどうかなんて問題ではない。

>お前のは判別じゃなくて入力した値までの素数の表示するプログラムだったろ?

判別はIsPrimenumberがやっている。IsPrimenumberだってプログラムだろ。
「入力した値までの素数の表示」が必要なければmainをそのように書き換えればいい
だけの話。mainの仕様は与えられていないんだからそこまで面倒見る必要はない。
581デフォルトの名無しさん:2006/06/12(月) 16:25:06
NG推奨ワード : ?#
582デフォルトの名無しさん:2006/06/12(月) 16:25:24 BE:54348274-#
>>575
>「必要」とは言っていない。お前が必要ないと勝手に判断しただけ。

必要である根拠がないなら不要だな。
583デフォルトの名無しさん:2006/06/12(月) 16:26:05 BE:69876094-#
584デフォルトの名無しさん:2006/06/12(月) 16:26:28
誰も「必要」とは言ってませんよ?まだ理解していないみたいだな・・・
自分の意見を相手の意見の否定に使うから悪い。
逆に相手を否定して自分を肯定するから余計に理解されない。
585デフォルトの名無しさん:2006/06/12(月) 16:27:12
不要とする根拠を示せw もう本当に相手にせんぞ。
推奨NGワード : ?#
586デフォルトの名無しさん:2006/06/12(月) 16:27:35
ことの始まりはトーマスが人のソースにケチつけたことのようだが
これであってる?
587デフォルトの名無しさん:2006/06/12(月) 16:27:43 BE:23292443-#
>>584
必要でないなら「不要」と判断しても何の問題もないって事だろ。
不要と判断して問題があるならその根拠を。
588デフォルトの名無しさん:2006/06/12(月) 16:28:56 BE:93168768-#
>>585
バカに配慮してもバカじゃない人が不幸になるだけなのでバカに配慮する必要はない。
589デフォルトの名無しさん:2006/06/12(月) 16:30:01
>>586
そう、まさに >>523 これ。自分勝手な判断基準における初心者という基準まで持ち出したし。
中学生で平方根を習えど、C言語でそれを使うには・・・ってところまで配慮しなくても良いという
まさに自分勝手。そして配慮しろとは誰も言っていないのに、配慮する「必要がないから」
と言い出す始末。まさに自分勝手。配慮した覚えがなくても、シンプルな方を選んで問題なし。
590デフォルトの名無しさん:2006/06/12(月) 16:30:06
残念、俺のブラウザにはNGワードは付いてないよ(´・ω・`)
591デフォルトの名無しさん:2006/06/12(月) 16:31:07
もう帰れよ200ポイント。
592デフォルトの名無しさん:2006/06/12(月) 16:31:27
>>590
2ch専用ブラウザを使ったら?俺はもうNGに指定したから
後は何をほざこうが知ったこっちゃないけどな。
593デフォルトの名無しさん:2006/06/12(月) 16:31:31
>>588
「バカに配慮してもバカじゃない人が不幸になるだけ」という根拠は?
594デフォルトの名無しさん:2006/06/12(月) 16:32:41
だから「配慮した」覚えすらないのに、sqrtを使わないことを勝手に
初心者に配慮していると勘違いしているとも気づいてないわけでw
595デフォルトの名無しさん:2006/06/12(月) 16:34:55
596デフォルトの名無しさん:2006/06/12(月) 16:35:46 BE:34938263-#
>>589
math.h使えないなら平方根の計算も自分で実装すればいい。
これも高校生レベル。第5項くらいまでやれば素数判定に必要な精度には充分。
double tinysqrt(double n){double x=n;int i;for(i=0;i<5;i++)x=(x+n/x)/2;return x;}
597デフォルトの名無しさん:2006/06/12(月) 16:36:18 BE:31056544-#
>>593
バカに配慮してもバカが治るわけではないから、配慮の分だけバカでない人にしわ寄せが行く。
598デフォルトの名無しさん:2006/06/12(月) 16:38:07
ありがと>>589

プログラムの良し悪しなんざ、所詮は効率
俺が選ぶとしたら、トーマスのなんだけどね…
だけど、人のソースにケチつける必要はないし、自分の考えを押し付ける必要もないとオモタ
599デフォルトの名無しさん:2006/06/12(月) 16:38:22
そろそろボロが出始めたな。そんな複雑な計算を入れるくらいなら
sqrt使った方がマシだよw
600デフォルトの名無しさん:2006/06/12(月) 16:38:26
「配慮の分だけバカでない人にしわ寄せが行く」という根拠は?
601デフォルトの名無しさん:2006/06/12(月) 16:40:15
工学っていうか情報系の人間に根拠とかきいちゃらめぇ
602デフォルトの名無しさん:2006/06/12(月) 16:41:18
>>598
まぁ、算出に掛かる時間を考慮したら、俺が出したものなんてアホなほど無駄だと分かっているけどねw
丸投げする人相手に、適当にやっているんだが、アソコまでしつこく「中学生以下」とか
難癖をつけられるとは思わなかったよw
別に俺が中学生レベルってわけじゃないんだけど、ちょっとカチンッとくるね。
どうせ、判別に使う数値なんて、何百万、何十億といった値の大きいもんじゃないだろうから
初歩的にあの程度で、って書いたまでだが・・・
603デフォルトの名無しさん:2006/06/12(月) 16:43:15
1] 授業単元:C言語 プログラミング
[2] 問題文(含コード&リンク):

1) 与えられた2×2正方行列の固有値を計算するプログラムを作成せよ。
2) 与えられた3×3正方行列の固有値を計算するプログラムを作成せよ。
3) さらに、与えられた正方行列の次数がいくつでもよいようにするにはどうしたらよいか?

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Borland C++Compiler
 [3.3] 言語: C言語
[4] 期限: 6月20日まで

sqrtを使ってシコシコと作ってたんですがうまくいきません、というか数学関数の使い方すらよくわかりません。
どうか、よろしくお願いします。
604デフォルトの名無しさん:2006/06/12(月) 16:49:27
[1] 授業単元: C++基礎
[2] 問題文(含コード&リンク): n!=1*2*…n-1*nと定義する。
n!>32000となる最小のnと、その時のn!の値を算出するプログラムをwhile文を用いて作成せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Stdio2005
 [3.3] 言語: C++
[4] 期限:今日中です…。
[5] その他の制限: 特にありません。
いきなりですが、宜しくお願いしますm(_ _)m
605デフォルトの名無しさん:2006/06/12(月) 16:54:32 BE:54348847-#
>>599
だからsqrt使ったわけだが。
math.hもsqrtも習って無くても「平方根を使わない」理由にはならないことを示しただけ。
何度も言うが素数判定に平方根が必要なのは中学生レベル。
606デフォルトの名無しさん:2006/06/12(月) 16:55:59
   o-o、
   ('A`) メガネメガネ
   ノ ノ)_
607デフォルトの名無しさん:2006/06/12(月) 16:57:11
>>604
#include<stdio.h>
int main(){
int n = 1, a = n;
do{
n++;
a *= n;
}while(a <= 32000);
printf("n = %d n! = %d", n, a);
}

空気を読まないでゴメンネ
608デフォルトの名無しさん:2006/06/12(月) 17:00:17
>>607 アルゴリズムにケチはつけぬが、C++だしdo whileじゃなくてwhileっぽいし・・・
っつーわけで俺もw

>>604

#include <iostream>
using namespace std;

int main() {
int i=1,x=1;
while(x<32000) {
x*=++i;
}
printf("32000を超えるのは %d\!\n", i);
printf("%d\! = %d",i,x);
return 0;
}
609デフォルトの名無しさん:2006/06/12(月) 17:02:15
って、printfを使ったままだった、すまそ orz
610デフォルトの名無しさん:2006/06/12(月) 17:02:17
俺もお前もバカだな…
611デフォルトの名無しさん:2006/06/12(月) 17:03:59 BE:31055982-#
>>600
バカに配慮してもバカは治らない。
配慮する側はバカではないので、バカでない人の労力が無駄になる。
612デフォルトの名無しさん:2006/06/12(月) 17:04:51
>>604 んじゃ書き直しw
#include <iostream>
using namespace std;

int main() {
int i=1,x=1;
while(x<32000)
x*=++i;
cout << "32000 を超えるのは " << i << "\!\n";
cout << i << "\! = " << x;
return 0;
}
613デフォルトの名無しさん:2006/06/12(月) 17:05:41
         , -‐―‐‐-、
        /   ,    ヽ_     ,
         l ,| |/ハヽゝ_ゞソ 〜 0 -
      _ | (| | -‐ ‐-| |´___   `
      | |. lハl| | ''' ヮ''ノN   | |      おちつこうね〜
      | |  {|.つ[_]とl}     | |
     (.二二ん/⌒l⌒l二二二.)
  / ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ {__|) ̄ ̄ ヽ、
  lニニニニニニニニニニニニニニニl
614デフォルトの名無しさん:2006/06/12(月) 17:05:49
根拠とは事実のことである
615デフォルトの名無しさん:2006/06/12(月) 17:06:01
感嘆符にエスケープは要らないだろ
616デフォルトの名無しさん:2006/06/12(月) 17:07:40
「バカに配慮してもバカは治らない」の根拠は?
「バカでない人の労力が無駄になる」の根拠は?
617デフォルトの名無しさん:2006/06/12(月) 17:08:34
根拠なんてない、自分の思い込みでしょ。
分からない奴には少しでも分かるような指導が必要。
分からない奴を分からないまま放置すると、とんでもないアホが社会に出てくるから
犯罪とか絶えないんだよ。自暴自棄で他人を巻き込む奴は別として。
618デフォルトの名無しさん:2006/06/12(月) 17:08:59
何で?何で?って聞かれると辛いよなぁ
619 ◆a1WOtQTbZg :2006/06/12(月) 17:09:06
>>607>>608>>612
早い回答、本当にありがとうございます。
do-whileはこの問題と同じ授業で習っているのでそれでも大丈夫だと思います。
ただ心配なのが担任の先生がチャネラー(と思われる)でこのスレを見てるかもしれないということです…。
トリップに担任の苗字書きました(もし先生見てるなら大目に見てくださいw)
620デフォルトの名無しさん:2006/06/12(月) 17:09:36
>>618 ダナ。だから論より証拠なんだが、きゃつは書き換えたソースは提示しなかった・・・
621デフォルトの名無しさん:2006/06/12(月) 17:19:38 BE:34938263-#
>>616
バカが治った実績が存在しないから。無い物は証明できないのでこれ以上は悪魔の証明。
無論「バカが治った実例」を挙げてくれれば撤回する。
622デフォルトの名無しさん:2006/06/12(月) 17:21:22 BE:7764522-#
>>617
>分からない奴には少しでも分かるような指導が必要。

少なくとも、宿題を丸投げしない奴には指導が必要だが、宿題を丸投げするクズは
分かろうとする気がないので指導するだけ無駄。
623デフォルトの名無しさん:2006/06/12(月) 17:23:41
その「指導」すらした覚えはないんだがw
幼稚なソースでも結果が導ければおkだろ?
そこを理解していないのがあんたなんだよw
丸投げって分かってて、自分のものしか押し付けないだけでなく
他人のソースを否定しかしないからダメなんじゃん。それは
質問者への態度とか関係なく、ご自身の人間性じゃね?
624デフォルトの名無しさん:2006/06/12(月) 17:23:43 BE:58230656-#
>>620
お前もしつこいな。mainだけ書き換えりゃいいだろが。
int main(void){char tmp[100];int n;fgets(tmp,sizeof(tmp),stdin);n=atoi(tmp);
puts(IsPrimenumber(n)?"素数":"素数じゃない");return 0;}
625デフォルトの名無しさん:2006/06/12(月) 17:25:01 BE:77640285-#
>>623
間違いを積極的に否定すると何か問題でも?
626デフォルトの名無しさん:2006/06/12(月) 17:29:06
>>619
まぁ、そのくらいのありきたりな計算を求めるプログラムなんて
似たようなものがいくつもあるから。自分なりのやり方で書き直すとかしとけばおk。
627デフォルトの名無しさん:2006/06/12(月) 17:29:36
forまで習った俺が素数判定のやつ作ってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2034.txt
628デフォルトの名無しさん:2006/06/12(月) 17:30:09
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 9×9の2次元配列を用意し座標に見立てる,ゴール座標を1ヵ所設定し,ゴール以外の座標には,ゴールからの距離の2乗を計算して入れる.
キーボードから座標を入力し,ゴール以外の場合は,配列に格納してあるゴールからの距離の2乗の値を表示する.
ゴールの座標が入力されたら,入力回数と,得点を表示する.得点は,1回目100点,2回目80点,3回目60点,4回目40点,5回目20点,6回目以降0点とする(今回は正解するまで続ける.)
ただし,配列は,
int dist[9][9];
とする.(要素は81個しか持ってはいけない.)
なお,ゴールの座標は自由に決めてよい.

[実行結果]

座標を入力してください(X Y): 3 5

距離 20 です.

座標を入力してください(X Y): 8 6

距離 2 です.

座標を入力してください(X Y): 7 7

!!! 3 回目で大当たり!!!
得点は,60点です

[3] 環境
 [3.1] OS: (Windows [3.2] VisualStdio.net2003 
[3.3] 言語: C
[4] 期限: 6月16日
[5] その他の制限: よろしくお願いします
629デフォルトの名無しさん:2006/06/12(月) 17:30:48
見てるとこれだから技術系はなんて言われるのも分かる気がする
一部の人間の所為で…
630デフォルトの名無しさん:2006/06/12(月) 17:33:12
>>628
なんか、以前、求める値が予想値より上か下かの問題を出した奴の
応用っぽい内容だが・・・
631デフォルトの名無しさん:2006/06/12(月) 17:39:54
>>618
まあな。だが自分の論がどれだけ客観的であるかを確認する一つの方法だ。

>>621
「実績が存在しなければ何故ありえないといえるのか?」
コロンブスを例にとるまでもなく、過去に実績が無い事と実際に不可能な事とは別に考えないと。

>>629
まあ、>>574みたいに正論が言えるやつもいるよ。
632 ◆a1WOtQTbZg :2006/06/12(月) 17:40:46
>>626
なるほど。勉強にもなるので書き直してみます。
アドバイス、ありがとうございます。
633デフォルトの名無しさん:2006/06/12(月) 17:55:05 BE:77640858-#
>>631
「あり得ない」なんて主張してないだろ。
「実績がないから不要」と言ってるだけだ。
634627:2006/06/12(月) 17:57:55
ていうかお前ら、俺が作ったやつに反応してくれよ!
俺が頑張った時間はなんだったんだよ。
初めてソース晒してどんな反応来るかドキドキしてた俺が馬鹿みたいだろ。
635デフォルトの名無しさん:2006/06/12(月) 18:07:43
他の問題のときにまた来なさい
今はそういう状況じゃないから
636デフォルトの名無しさん:2006/06/12(月) 18:08:18
つうか宿題の答えとして適切な範囲に「ループは√nまで」だとか
「あらかじめ素数を入力して判定を加速する」とか
そういうものは含まれないと思うんだけど、どうよ?

そういうことが自力でできるやつはボーナス点でもあげればいいが(俺ならあげる)、
ここに駆け込んでる時点でそんな資格はないしなぁ。

>>634
27は素数じゃない!
637デフォルトの名無しさん:2006/06/12(月) 18:09:17 BE:108696678-#
>>634
素数テーブルを27までしか持たない意味が分からない。
たったそれだけなら無い方がマシ。√とかそれ以前の問題。
638デフォルトの名無しさん:2006/06/12(月) 18:12:26
どこまで持てばいいってモノでもないだろう。
なんなんだお前。目的履き違えてないか。
639デフォルトの名無しさん:2006/06/12(月) 18:15:09 BE:69876566-#
>>636
そういう問題の出し方もあるにはある。
http://pc8.2ch.net/test/read.cgi/tech/1149349035/50
640デフォルトの名無しさん:2006/06/12(月) 18:16:25 BE:77640285-#
>>638
素数をテーブルで持つ場合は入力の範囲に依存するに決まってるだろ。
641デフォルトの名無しさん:2006/06/12(月) 18:17:36
>>628
# include <stdio.h>

void init_dist(int (*dist)[9])
{
  int i, j;
  for(i = 0; i < 9; i++)
    for(j = 0; j < 9; j++)
      dist[i][j] = (i-2) * (i-2) + (j-6) * (j-6);
}

int main(void)
{
  int dist[9][9];
  int i;
  init_dist(dist);
  for(i = 0;; i++)
  {
    int x, y;
    printf("座標を入力してください(X Y): ");
    scanf("%d%d", &x, &y);
    if(dist[x][y])
      printf("距離 %d です.\n", dist[x][y]);
    else
    {
      printf("!!! %d 回目で大当たり!!!\n得点は%d点です\n", i + 1, i >= 6 ? 0 : 100 - i * 20);
      return 0;
    }
  }
}
642デフォルトの名無しさん:2006/06/12(月) 18:17:55
        ζ
      _,,.旦_        ∧,,.∧
     ./ ・ω・ヽ     ./・ω・ ヽ 
     l      l    ζl      l
     `'ー---‐´    旦`'ー---‐'′
      〜ただいま休憩中〜
643デフォルトの名無しさん:2006/06/12(月) 18:22:33
>>641
ありがとうございます。ホントに感謝してます!!
644デフォルトの名無しさん:2006/06/12(月) 18:26:12
どなたか>>603に答えていただけるとうれしいのですが…
645デフォルトの名無しさん:2006/06/12(月) 18:33:55
>>641の大当たりの座標を教えてくれ・・・
646デフォルトの名無しさん:2006/06/12(月) 18:39:00
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2035.txt
6/20までなのに急かすな
3x3はうまくいくことを前確認した
647デフォルトの名無しさん:2006/06/12(月) 18:44:18
>>645
確かに・・
648デフォルトの名無しさん:2006/06/12(月) 18:44:48
ちうか、数式の中に答えがあったのか。2,6とな?
649デフォルトの名無しさん:2006/06/12(月) 19:02:47 BE:11646432-#
>>603
まんどくせ。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define ep (0.000001)
double sign(double x){return (x>0)?1.0:(x<0)?(-1.0):0;}
int main(void){int n,i,j,k,l;size_t size;char tmp[100];
double **r,r1,r2,r3,**v,rp,rm,am,w,c,s,v1,v2;
printf("行列の次数:");fgets(tmp, sizeof(tmp), stdin);n=atoi(tmp);
size=sizeof(double)*n*n;r=(double**)malloc(size);v=(double**)malloc(size);
for(i=0;i<n;i++)for(j=0;j<n;j++){printf("(%i,%i)=",i,j);
fgets(tmp,sizeof(tmp),stdin);r[i][j]=atof(tmp);}
for(i=0;i<n;i++){for(j=0;j<n;j++)v[i][j]=0;v[i][i]=1;}
while(1){am=(double)INT_MIN;for(i=1;i<n;i++)for(j=0;j<i;j++)if(fabs(r[i][j])>am)
{am=fabs(r[i][j]);k=i;l=j;}if (am<ep) break;r1=r[k][l];r2=r[k][k];
r3=r[l][l];rp=(r2+r3)/2;rm=(r2-r3)/2;w=sqrt(pow(r1,2)+pow(rm,2));
c=sqrt((1+fabs(rm)/w)/2);s=((rm==0.0)?-1:(-sign(rm)*r1/w))/(c*2);
for(i=0;i<n;i++){r2=r[i][k];r3=r[i][l];r[i][k]=r[k][i]=r2*c-r3*s;
r[i][l]=r[l][i]=r2*s+r3*c;v1=v[i][k];v2=v[i][l];
v[i][k]=v1*c-v2*s;v[i][l]=v1*s+v2*c;}
w=rm*(fabs(rm)/w)-r1*(fabs(rm)/w);r[k][k]=rp+w;r[l][l]=rp-w;
r[k][l]=0;r[l][k]=0;}printf("固有値 ");for(i=0;i<n;i++)printf("%f ",r[i][i]);
putchar('\n');return 0;}
650 ◆Hu5kXyhYsw :2006/06/12(月) 19:08:51
[1] 授業単元:プログラミング演習
[2] 問題文:小学校のあるクラスの成績処理を行うプログラムseiseki.cを作成せよ。
(1)生徒1人に対し、生徒番号(整数)、生徒氏名(10文字以内の文字列)、国語、算
数、理科、社会の得点(整数)をメンバとしてもつ構造体タグStudentData
を定義せよ。
(2)seiseki.cにおいて、生徒数を実行時に入力して構造体配列を動的
割当てをできるようにしたseiseki2.cを作成せよ。
・(1)+(2)+各教科の平均を求めるプログラムを作成せよ。
[3] 環境
  OS:UNIX
  言語:C
[4] 期限:2006年6月13日17:00まで]

よろしくお願いします
651デフォルトの名無しさん:2006/06/12(月) 19:56:48
ぽまいら、今日はもう勉強や仕事を切り上げて、ワールドカップの日本戦を見るノジャーーー!
652デフォルトの名無しさん:2006/06/12(月) 20:02:25
>>628は結局、9x9の2次元配列を作る意味があるんだろうか?
もしかして、単に答えの座標に当たる配列要素に1を入れて
残りは外れってことで0を入れるようにしろとか指定はなかったんだろうか?
653デフォルトの名無しさん:2006/06/12(月) 20:07:09
[1]授業単元:プログラミング C言語
[2]開発コンパイラ:Visual Studio.NET2003
[3]OS:Windows XP
[4]提出期限:6月13日
[5]問題内容
次のプログラムを変更して、2つの硬貨を投げて、
どちらも表になる確率を求めるプログラムを作成せよ。

【プログラム】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2036.txt

よろしくお願いします。できればUPローダにUPしてもらうと助かります。
654デフォルトの名無しさん:2006/06/12(月) 20:10:45
>>652
>ゴール以外の座標には,ゴールからの距離の2乗を計算して入れる.
655デフォルトの名無しさん:2006/06/12(月) 20:13:45
>>654
あっ、なるほど。つまらぬ質問ですんまそ。
656デフォルトの名無しさん:2006/06/12(月) 20:25:05
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):1から10までの整数の積と和を求め、その結果を
表示するプログラムをfor()文を使用して書け。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 問題文の通りです。
657デフォルトの名無しさん:2006/06/12(月) 20:30:49
#include <stdio.h>
main(){
int a, b[] = { 55, 5050};
for(a = 0; a < 2; a++)
printf("%d\n",b[a]);
}
658デフォルトの名無しさん:2006/06/12(月) 20:34:44
#include <stdio.h>
int main(){
int i, data[] = {1*2*3*4*5*6*7*8*9*10,1+2+3+4+5+6+7+8+9+10};
for(i=0;i<sizeof(data)/sizeof(data[0]);i++) printf("%d\n",data[i]);
return 0;
}
659デフォルトの名無しさん:2006/06/12(月) 20:37:08
>>657
5050てなんだw
660デフォルトの名無しさん:2006/06/12(月) 20:37:08
#include <stdio.h>
void main() {
int i, sum1=0, sum2=1;
for(i=1;i<=10;i++) {
sum1+=i;
sum2*=i;
}
printf("和は%d、積は%d\n", sum1, sum2);
}
661デフォルトの名無しさん:2006/06/12(月) 20:39:38
>>656
#include <stdio.h>
#define x 10

int main() {
int i,seki=1,wa=0;

for(i=1; i<=x; i++) {
seki*=i;
wa+=i;
}
printf("1 〜 %d の積 : %d / 和 : %d \n",x,seki,wa);

}
662デフォルトの名無しさん:2006/06/12(月) 20:39:51
素数なら (n/2)+1 まで調べりゃいいんじゃないの?
√n までにしろとは言わないけど、nまで調べるのはいくらなんでも無駄じゃないか
663デフォルトの名無しさん:2006/06/12(月) 20:39:58
sum2にワラタ
664デフォルトの名無しさん:2006/06/12(月) 20:40:34
5050って1〜100までの和じゃね?
665デフォルトの名無しさん:2006/06/12(月) 20:41:07
>>662
何をいまさら
666デフォルトの名無しさん:2006/06/12(月) 20:41:29
>>656
#include<stdio.h>
void worldcup(int x);
int main(void)
{
int x;
printf("グリングリーン。\n");
printf("古時計>");
scanf("%d",&x);
worldcup(x);
return 0;
}
void worldcup(int x)
{
int i,wa,seki;
wa = 0;
seki = 1;
for(i=1;i<=x;i++)
{
wa += i;
seki *= i;
}
printf("小力love%d秋山love%d",wa,seki);
}
667デフォルトの名無しさん:2006/06/12(月) 20:41:32
>>662
高々定数倍の高速化に興味はない、などと言ってみるテスト。
668デフォルトの名無しさん:2006/06/12(月) 20:46:12
>>666

666だけにカオスw
669デフォルトの名無しさん:2006/06/12(月) 21:20:13
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク): 次のようなおみくじを考える。0から9までの数字を実行のたびにランダムに発生させ、0から3を中吉、4から6を小吉、7から8を大吉、9を凶とする。
運悪く凶を引いてしまった時は「一度だけ」再びおみくじを引くか否かを選択できるようなプログラムを作成せよ。
ただし、運勢の判定にはswitch文を用いること。また出来ればsrandも使うこと。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 明日の朝までに
[5] その他の制限: 特にありません。
夜分に申し訳ありませんがよろしくお願いします…。
670デフォルトの名無しさん:2006/06/12(月) 21:24:40
計算量の基礎教育もうけてないトーマスとかってのが居るのココ??
671デフォルトの名無しさん:2006/06/12(月) 21:28:28
>>669
rand()の出力範囲。
そもそもC++でやるひつようあんの?
672デフォルトの名無しさん:2006/06/12(月) 21:29:05
>>628
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2037.c
乱数発生で答えの座標を決めるやり方でやってみますた
673デフォルトの名無しさん:2006/06/12(月) 21:38:21
>>653 お願いします
674デフォルトの名無しさん:2006/06/12(月) 21:41:32
>>628
>>672削除、ちょい変更。座標の範囲を増やしてもおk。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2039.c
675デフォルトの名無しさん:2006/06/12(月) 21:41:44
%2にしろよ
676デフォルトの名無しさん:2006/06/12(月) 21:43:29
>>671
自分はかなりヘタレなのであまり分からないんですが、
srandはプログラム実行の度に乱数系列を変えるために使えといわれました…。
677デフォルトの名無しさん:2006/06/12(月) 21:54:18
ここ見ろ
ttp://www1.cts.ne.jp/~clab/hsample/Func/Func02.html#rand(%20%20)

出力された数値をrand()%10にしたら余りとして0-9までの値が返ってくるんじゃないの?
678デフォルトの名無しさん:2006/06/12(月) 21:57:55
>>560
低水準入出力関数でググレばすぐ見つかる…はず
679デフォルトの名無しさん:2006/06/12(月) 21:58:26
ガンダムシードか。
680デフォルトの名無しさん:2006/06/12(月) 21:58:46
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2039.c
で乱数発生を使っているけど・・・参考にならん?
681デフォルトの名無しさん:2006/06/12(月) 22:00:33
>>677
確かにそうですね…。う〜ん、どうすれば良いんだろう…。
682デフォルトの名無しさん:2006/06/12(月) 22:10:50
>>653
それ書いたのどなた?
683デフォルトの名無しさん:2006/06/12(月) 22:19:55
#include <iostream>
#include <ctime>
#include <cstdlib>
int main(){
srand((unsigned)time(NULL));
int kuji, busy = 1;
char ch;
while(busy){
busy = 0;
kuji = rand() % 10;
switch(kuji){
case 0: case 1: case 2: case 3: std::cout << "中吉"; break;
case 4: case 5: case 6: std::cout << "小吉"; break;
case 7: case 8: std::cout<<"大吉"; break;
case 9: std::cout<<"凶\n"; std::cout<<"もう一度やる?(Yes: Y)";
}
std::cout<<std::endl;
if(kuji == 9){std::cin>>ch; if(ch == 'Y')busy = 1;}
}
return 0;
}
こんな感じかしら?
684デフォルトの名無しさん:2006/06/12(月) 22:32:57
修正した方がいいところあるけど動けばいい。
あとは使いやすいように改変すりゃいいよ、サッカー見るんでノシ。
685aho:2006/06/12(月) 22:51:21
くだらない質問かもしれませんがお願いします!!
Cで入力した文字列を逆順にして出力する書き方を教えてください。
string.h をインクルードして、strlenを使うみたいです。
それから、今ポインタをやっているところです。||
686デフォルトの名無しさん:2006/06/12(月) 22:55:38
>1をよく読んでからまた来てね
687デフォルトの名無しさん:2006/06/12(月) 22:58:42
おぉ・・・すげえ・・・大学入学して少ししか習ってない俺からすると何やってるかわかんね・・・
辛うじて>>656が分かるくらいだ・・・
688デフォルトの名無しさん:2006/06/12(月) 23:15:51 BE:40761173-#
>>656
#include<stdio.h>
double fact(double n){return (n>1)?n*fact(n-1):1;}
int main(void){int n=10,s=n*(n+1)/2,m=fact(n);for(;;)printf("和:%i 積%i\n",s,m);return 0;}
689デフォルトの名無しさん:2006/06/12(月) 23:18:24
つまんねーっつーか、今度は嫌がらせかよ。そろそろ通報した方が良いな。
完全に悪質、悪意がある行為だな。人を馬鹿にするにも程がある。
690デフォルトの名無しさん:2006/06/12(月) 23:19:59
ん、どした
691デフォルトの名無しさん:2006/06/12(月) 23:21:50
>>688
階乗をO(n)のメモリで計算するのは中学レベルの数学を無視した間違った方法だと思わないか?
692デフォルトの名無しさん:2006/06/12(月) 23:28:02
基準を中学レベルに合わせなくても・・・w
693デフォルトの名無しさん:2006/06/12(月) 23:30:24
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):最初にキーボードから線分の本数(以下 n とする)を入力し,次にキーボードからn本の線分を入力した後,線分の長さの長い順に出力するプログラムを作成しなさい.
扱う線分の本数は最大で6本とし,本数を指定するとき,不適切な本数(1から6までの整数以外)が指定された場合, "error"を表示し,プログラムを終了すること.
また,長さが同じ線分があった場合は,先に入力したものを先に表示すること.


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 明日(なるべく早くおねがいします)

よろしくお願いします。
694デフォルトの名無しさん:2006/06/12(月) 23:30:33
%i ……
695デフォルトの名無しさん:2006/06/12(月) 23:32:20 BE:52406993-#
>>689
何か問題でも?
696デフォルトの名無しさん:2006/06/12(月) 23:33:26
>>693
線分の表現方法は?
697693:2006/06/12(月) 23:41:27
>>696
例えばこのような感じです

4
3.0 4.0 5.0 6.0
3.0 4.0 5.0 5.0
0.0 1.0 2.0 5.0
3.0 4.0 3.0 7.0
(0.00,1.00)-(2.00,5.00)
(3.00,4.00)-(3.00,7.00)
(3.00,4.00)-(5.00,6.00)
(3.00,4.00)-(5.00,5.00)
698デフォルトの名無しさん:2006/06/12(月) 23:48:39
>>683
ありがとうございます。自分でこれを元にアレコレいじくってみます。
本当にありがとうございました!!
699デフォルトの名無しさん:2006/06/12(月) 23:53:51
サッカーなんて見るんじゃなかったw
700デフォルトの名無しさん:2006/06/12(月) 23:59:43
>>650
お願いします
701デフォルトの名無しさん:2006/06/13(火) 00:05:13
いい加減シュートは枠の中を狙おうぜ。
基本だろ?
日本が>>628の問題やったら0点になりそう。
702デフォルトの名無しさん:2006/06/13(火) 00:06:46
>>701
高原がいる限りミリ
703デフォルトの名無しさん:2006/06/13(火) 00:07:56
>>653
お願いします
704693:2006/06/13(火) 00:20:53
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):最初にキーボードから線分の本数(以下 n とする)を入力し,次にキーボードからn本の線分を入力した後,線分の長さの長い順に出力するプログラムを作成しなさい.
扱う線分の本数は最大で6本とし,本数を指定するとき,不適切な本数(1から6までの整数以外)が指定された場合, "error"を表示し,プログラムを終了すること.
また,長さが同じ線分があった場合は,先に入力したものを先に表示すること.
線分の表現方法↓
4
3.0 4.0 5.0 6.0
3.0 4.0 5.0 5.0
0.0 1.0 2.0 5.0
3.0 4.0 3.0 7.0
(0.00,1.00)-(2.00,5.00)
(3.00,4.00)-(3.00,7.00)
(3.00,4.00)-(5.00,6.00)
(3.00,4.00)-(5.00,5.00)

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: なるべく早くおねがいします

先ほどの書き込みにぬけている部分があったので、もう1度かきました。なんども
すみませんが、よろしくお願いします。
705デフォルトの名無しさん:2006/06/13(火) 00:22:40
問題がつまらんとやる気せんな。
最近宿題丸投げが多くないか?
706デフォルトの名無しさん:2006/06/13(火) 00:24:50
少しは参考書に目を向けて、理解する頭を持ってもらいたいもんだな。
初歩的なものなら答えられるが、あまりにも複雑で、問題を十分理解しなきゃならないような
面倒なものだと、食いつく人が少ない。
既に無意味な議論がされたが、定石をまとめたサイトが欲しいところ。
素数を求めるアルゴリズムなんざ、わかりきっているしな。
乱数を求めるとか、項目をいくつか作ってまとめたいところだ。
707デフォルトの名無しさん:2006/06/13(火) 00:45:00
まぁ宿題なんてそんなもんだろ
ここに来てるヤツラは資格さえとれればよくてプログラムなんてできなくてもいい
そんなヤツラだ
708デフォルトの名無しさん:2006/06/13(火) 00:47:06
資格っつーか、単位ね。まぁ、理解してなくても問題に答えられさえすりゃそれでおkだもんな。
ただ、プログラムの授業の最後って、自由課題になる場合が多いかと・・・
709デフォルトの名無しさん:2006/06/13(火) 00:50:45
今更何言ってんだか
710デフォルトの名無しさん:2006/06/13(火) 00:51:50
すべてが何をいまさらだな
711デフォルトの名無しさん:2006/06/13(火) 00:54:02
そのいまさらがいつまでも引きずってんじゃんw
少なくとも素数でアソコまでバカみたく、素数の求め方ではなく
ソースを出した人間の素性にまで話が行き過ぎるのはどうかとw
要するにここのスレの住人の人間性の問題だな。
たかが分かりきったプログラムができるくらいで、できない奴に対してでけぇ面。
そういう奴は、未知なるものへの探究心がない惰性の人生しか歩めないんだろうけど・・・
712デフォルトの名無しさん:2006/06/13(火) 00:54:16
×資格
○単位
713デフォルトの名無しさん:2006/06/13(火) 01:06:44 BE:139752498-#
以下、中学生レベルの数学すらできないバカの遠吠えをお楽しみください
↓↓↓↓↓↓
714デフォルトの名無しさん:2006/06/13(火) 01:32:33
たかが分かりきったプログラムができるくらいで、天狗になってるトーマヌまだいだんでつか?
715デフォルトの名無しさん:2006/06/13(火) 01:35:32
スレ違いはお帰りください
716デフォルトの名無しさん:2006/06/13(火) 01:41:59
いざとなったらトーマスの家にミサイルをぶち込んでやればいい。
宿題スレは強い
717デフォルトの名無しさん:2006/06/13(火) 01:44:14
711=バカの遠吠え
718デフォルトの名無しさん:2006/06/13(火) 01:57:17
なんかヤケに伸びてるなと思ったら。
ま、どうでもいいじゃん、とオモタ。
所詮丸投げスレだ。丸投げスレの本質を見失っちゃいかんね。
一つだけトーマス氏と、それに関りたがる人達へ申し上げておきます。
トーマス氏の発言とそれに係る発言にさらさら興味は無いのですが、
ここは丸投げスレですから、議論を持ちたいなら、他のスレ、ないしは他所でお願いしますね。
一言で表せば、一連の発言は「スレ違い」ですよ。
719デフォルトの名無しさん:2006/06/13(火) 01:58:40
>>693=704
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct { double x0, y0, x1, y1, length; } line_t;
int main(void)
{
line_t line[6];
char str[1024];
int n, i, j;
/* 本数の入力 */
fgets(str, 1023, stdin);
if( !(str[0] >= '1' && str[0] <= '6' && (str[1] == '\n' || str[1] == '\0')) ) {
fprintf(stderr, "error\n");
return 0;
}
/* 線分の入力 */
for( i = 0, n = atoi(str) ; i < n ; i++ ) {
double dx, dy;
scanf("%lf %lf %lf %lf", &line[i].x0, &line[i].y0, &line[i].x1, &line[i].y1);
dx = line[i].x0 - line[i].x1; dy = line[i].y0 - line[i].y1;
line[i].length = sqrt(dx * dx + dy * dy);
}
/* 並べ替え(バブルソート) */
for( j = n - 1 ; j > 0 ; j-- ) for( i = 0 ; i < j ; i++ )
if( line[i].length < line[i + 1].length ) {
line_t tmp = line[i]; line[i] = line[i + 1]; line[i + 1] = tmp;
}
/* 表示 */
for( i = 0 ; i < n ; i++ ) printf("(%.2f,%.2f)-(%.2f,%.2f)\n", line[i].x0, line[i].y0, line[i].x1, line[i].y1);
return 0;
}
720デフォルトの名無しさん:2006/06/13(火) 02:05:04
>>653 改行とかは自分で訂正して。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{
int a;/* 1つ目のコイン */
int b;/* 2つ目のコイン */
int n;/* 実験回数 */
int omote;/* 両方表が出た回数 */
double ans;/* 表が出た確率 */
int i;/* ループカウンタ */
/* 乱数のタネを初期化する */
srand(clock());
/* 実験回数を入力する */
printf("実験回数:");
scanf("%d", &n);
/* サイコロを振る模擬実験 */
same = 0;
for (i = 0; i < n; i++) {
/* 乱数から表かどうかを得る */
a = rand() & (1 << 12); /* 13ビット目を使って判定 */
b = rand() & (1 << 28); /* 29ビット目を使って判定 */
/* 両方表が出た回数をカウントする */
if (a && b) { omote++; }
}
/* 実験結果を表示する */
ans = (double)omote / (double)n;
printf("両者表が出た確率:%f\n", ans);
return 0;
}
721デフォルトの名無しさん:2006/06/13(火) 02:05:46
>>718=バカの遠吠え

722693:2006/06/13(火) 02:05:51
>>719

本当にありがとうございます。一度これで実行してみます!
723デフォルトの名無しさん:2006/06/13(火) 02:19:48
さて、このスレが良い具合に賑わってきたところで
√を使った素数を求めるプログラムマダー?(チンチンAA略)
724693:2006/06/13(火) 02:34:19
>>719

プログラム途中に出てくるsqrtとは何のことでしょうか??
725デフォルトの名無しさん:2006/06/13(火) 02:34:57
>>720
ありがとうございました
726デフォルトの名無しさん:2006/06/13(火) 02:37:01
俺ならこう書く
int isPrime(int n)
{
int i;
if( n == 2 ) return 1; /* 素数 */
if( n < 2 || (n & 1) == 0 ) return 0; /* 素数ではない */
for( i = 3 ; i * i <= n ; i += 2 ) {
if( n % i == 0 ) return 0; /* 素数ではない */
}
return 1; /* 素数 */
}
727デフォルトの名無しさん:2006/06/13(火) 02:38:50
>>724
>>1
ttp://www.linux.or.jp/JM/
の man on WWW に聞いてみなされ。
Googleさんに聞いてもいいけどね。
728デフォルトの名無しさん:2006/06/13(火) 02:50:26
効率性を全く考えずに作ったらこうなった。
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=27898
729デフォルトの名無しさん:2006/06/13(火) 02:53:20
>>471
ありがとうございます!できました。あとよかったらコレ↓教えて欲しいんですが・・

「2枚目にプログラムリスト
3枚目に結果(hを2〜3個変えて)を書く(手書きでよい)」

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

よろしくお願いします。
731デフォルトの名無しさん:2006/06/13(火) 03:18:25
[1] 授業単元:個人課題
[2] 問題文(含コード&リンク):
unsigned a(unsigned x) {x = (x & 0x5) << 1 | (x & 0xA) >> 1;return x;}
これを利用して文字や文字列を目的通りに交換するコードを作る
[3] 環境
 [3.1] OS: W
 [3.2] コンパイラ名とバージョン: BCC5
 [3.3] 言語: C
[4] 期限:3週間
732デフォルトの名無しさん:2006/06/13(火) 03:21:26
>>730
x,y,z,w の配列の中身( x[0] から x[n-1])は何をいれるんじゃ?
単純に ix + jy + kz + lw = 0を解くのを作れってこと?
733デフォルトの名無しさん:2006/06/13(火) 03:24:29
1. x+y のあらゆる可能性を列挙する O(n^2)
2. z+w のあらゆる可能性を列挙する O(n^2)
3. それぞれソートする O(n^2 log n)
4. x+y は大きい順、 z+w は小さい順に見て行き、合計が 0 になる部分を数える
(双方で同じ数が複数出て来た時は個数同士を掛けて加算することに注意)
O(n^2)

とかで良いかしら?プログラムは誰かよろしく!
734デフォルトの名無しさん:2006/06/13(火) 03:24:46
>>732
日本語も読めないアフォですか?
とりあえず O(n^2 log n) のアルゴリズムは思いついたけど眠いので実装は明日。
735732:2006/06/13(火) 03:36:31
>>734
ごめん、素だから。
え、だって、
・x, y, z, w は 要素数 n の配列
・x[i] + y[j] + z[k] + w[l] = 0
・上式を満足する添え字 i, j, k, l を求める
-> 配列の中身(数値)分からなきゃ無理じゃね?

っていう自分の情け無い思考。誰か助けて。
736730:2006/06/13(火) 03:48:14
>732
すいません。
x[0]〜x[n-1] には、何か数字が入っています。

x[0] = 1, x[1] = 2
y[0] = 1, y[1] = -1
z[0] = -3, z[1] = 0
w[0] = 4, w[1] = 3

の場合 x[i] + y[j] + w[k] + z[l] は 16 通りの値をとりうるわけですが、
和が 0 となる添え字の組み合わせは、(i, j, k, l) = (0, 1, 0, 1) の 1 通りとなります。

この組み合わせの個数を O(n^4) より効率よく求めたいのです。
737732:2006/06/13(火) 03:50:50
>>736
了解しますた。
といっても自分が良いのを思いつくとは限らないけど。
738730:2006/06/13(火) 03:51:26
>733
なるほど!
x+y と z+w の二つに分ければいいのですね。

やはり、x+y の取りうる値を全て列挙 (O(n^2)) しないとダメですか?
739デフォルトの名無しさん:2006/06/13(火) 03:51:39
一気に問題増えたな@@;
740デフォルトの名無しさん:2006/06/13(火) 03:51:48
>>735
int ZeroCount(int x[], int y[], int z[], int w[], int n);
みたいな関数を実装しろって話でしょ。関数が呼び出された時点で配列の中身は分かってる事になる。

>・上式を満足する添え字 i, j, k, l を求める
i, j, k, lを具体的に求めるんじゃなくて、その組み合わせの数を求めるだけ。
741732:2006/06/13(火) 04:00:56
>>740
自分が一番引っかかってたのは、
「え?初期化されてないの?なになに、乱数でも生成しる!ってこと?どうなのそこ」
っていうことだったんだよね。
組み合わせの数を求めるってのもわかってたしさ。
(どのみち、i, j, k, lは求めなければならん)
742デフォルトの名無しさん:2006/06/13(火) 05:51:07
>>733 のアイデアをコード化してみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2040.c

ちなみに私は >>733じゃないす。
743742:2006/06/13(火) 06:08:19
どうもダメみたいだ。
網羅されていないみたい。

定義値を小さくして
    0  1
x: -1  0
y:  3  2
z:  1  1
w: -3  1
x[0]+y[0]+z[1]+w[0] = -1+3+1-3

1 通り

というのが出たが、この場合(0,0,1,0) の他に(0,1,1,0) も解になる。
だから2通りが正しいのだが、後者を得てない。
744742:2006/06/13(火) 06:15:34
なんとなくバグが見えた。

多分、 int get_answer(pair_array_info_t *a, pair_array_info_t *b, int n);
の、ai, bi を両側から逆方向へ進めるところの判定、

if(bi > 0 && b->pii[bi].sum_of_pair == b->pii[bi-1].sum_of_pair) bi--; else ai++;

がまずいんだな・・・。
745742:2006/06/13(火) 06:26:56
なんだ、
>>(双方で同じ数が複数出て来た時は個数同士を掛けて加算することに注意)
これ実装してないからか・・・。

ちなみに、数を数えるだけなら、index保存しておく必要ないからもっと簡単になります。
全パターンを表示させようとしたために複雑化させちゃいました。

直すのめんどくさくなったので、俺は逃げる。ノシ
746733:2006/06/13(火) 09:45:08
>>745

>>733
3.5 それぞれの列に対して、同じ値の個数を数えて重複を取り除く。
つまり(値, 個数) という列を考える。 O(n^2)

という前処理をするといいかも。
747デフォルトの名無しさん:2006/06/13(火) 10:17:26
>>742じゃ無いけど作ってみた。
基本的な考えは>>733と同じくソートしてから数値をチェック。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2041.c
748デフォルトの名無しさん:2006/06/13(火) 10:36:45
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
1,gets文とputs文を用いて1行づつ入力し、1行づつ表示するプログラムを作る。なお、入力の終わりは、ctrl+dとする。
2、入力した数字が配列中にあるかどうか調べ、見つかれば○、見つからなければ×を表示せよ。なお、検索はゼロを入力するまで続ける。また、配列中に5つの数字5 31 19 71 43を初期値として設定せよ。
3、つぎのプログラムの数値入力、合計計算、合計と平均の表示を関数にせよ。変数はすべてグローバル変数にせよ。すなわち、関数の中で変数を宣言しないこと。
#include<stdio.h>
void main(){
//変数と配列の宣言
int i,n,sum,tab[100];
//数値入力
printf("何個数字を入力しますか?"); scanf("%d",&n);
printf("指定数の数字を入力してください\n");
for(i=0;i<n;i++) scanf("%d",&tab[i]);
//合計計算
sum=0;for(i=0;i<n;i++) sum+=tab[i];
//合計と平均の表示
printf("個数=%d 合計=%d 平均=%5.1f\n",n,sum,sum/(float)n);
}
749デフォルトの名無しさん:2006/06/13(火) 10:40:40
4、昇順にソートされている整数配列{0,2,5,8,12,15,23,35,60,65}から、二分探索法を
用いてキーボードから入力された整数を見つけ、その整数の添字(配列における順番)を出力するプログラム
を作成せよ。

実行例1:
input data:37
the input number 37 is not in the array

実行例2:
input data:23
the number of the input data is:6
[4]期限
今日の13時まで、よろしくお願いします。
750デフォルトの名無しさん:2006/06/13(火) 10:52:34
もうすぐ11時(ニヤニヤ)
751デフォルトの名無しさん:2006/06/13(火) 10:55:48
1.Ctrl+Dは 4 だからそれで条件つければいい。
2.for文で添え字を回して配列と変数とを比較する。
3.void datainput()
void wa()
void hyouji()を宣言して適当にやってくれ
 int datainput(int n)とかやっても同じ。
 3とか教官糞ですね。
752デフォルトの名無しさん:2006/06/13(火) 10:56:52
例えば列挙型で、要素が2つしかなかった場合、割り当てられる領域はもちろん1ビットだけで、無駄に割り当てられてるって事はないですよね?
要素に値を設定しない限り。
753デフォルトの名無しさん:2006/06/13(火) 11:01:40
enum == int
754デフォルトの名無しさん:2006/06/13(火) 11:13:39
>>749
釣りじゃないなら、そんな宿題出す講義は取らない方がいいよ。

>>752
コンパイラ次第。intの実装もあればcharの実装もある。
755748:2006/06/13(火) 11:18:15
ぽまいら、はやくソースを・・・
756デフォルトの名無しさん:2006/06/13(火) 11:23:27
>>753
>>754
どうもありがとうううううううううううううううううううううううuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
757デフォルトの名無しさん:2006/06/13(火) 11:29:50
まだ時間はありますけど、どうか509、510をおねがいしますorz
758デフォルトの名無しさん:2006/06/13(火) 11:42:00
[1]ソフトウェア開発入門(Cコース)
[2]
11−5
前回作成したn個のデータの総和を算出するプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2042.txt
を「動的メモリの確保」を使い、
N個の配列要素を持つ配列を作って、
それを用いる形で実現しなさい。
[3]Linux gcc C言語
[4]6・13
759758:2006/06/13(火) 11:47:13
間違ったテキストをUPしてしまいました…
正しくはこちらです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2043.txt
760デフォルトの名無しさん:2006/06/13(火) 11:57:10
>>759
コンパイルエラー多すぎ・・・
761デフォルトの名無しさん:2006/06/13(火) 12:03:51
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2044.txt

し、失礼しました…;
これでもう大丈夫なはずです orz
762デフォルトの名無しさん:2006/06/13(火) 12:06:07
1] 授業単元: 卒研関連
[2]

ニューラルネットワークのバックプロパゲーションアルゴリズムを
C++で組め

[3] 環境
 [3.1] OS: Windows
 [3.2] VC++ 6.0
 [3.3] 言語: C++



丸投げすみません。
よろしくお願いします。
763デフォルトの名無しさん:2006/06/13(火) 12:07:40
>>762
Cなら適当に作ったのがあるが。
764デフォルトの名無しさん:2006/06/13(火) 12:24:49
>>761
っつか、その総和を求める変な関数まで使わなきゃならんの?
そんなことするなら配列を作る意味ないっす・・・
765デフォルトの名無しさん:2006/06/13(火) 12:41:25
>>758 >>761
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2045.cpp
数値入力のところ、while文で無駄な変数も多くて気持ち悪かったんで
for文にしちゃったけど、動的メモリの確保は入れてあるんで、提出側も丸投げってことで。
766デフォルトの名無しさん:2006/06/13(火) 12:48:29
>>748
しかしトンだ糞教官だ。
というか、あと15分だから、もう意味ないかもしれないけど。ほれ。
LHAアーカイブだから、解凍して見てね。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2046.lzh
767デフォルトの名無しさん:2006/06/13(火) 12:56:42
Ctrl + D (Windowsなら Ctrl + Z) で EOF を認識する部分が・・・
768デフォルトの名無しさん:2006/06/13(火) 13:22:05
>>767
あ、ごめん。
無意識にCtrl-Cしてたw
769デフォルトの名無しさん:2006/06/13(火) 13:25:29
なんか興味本位でこのスレ覗いてみたんだが、
最近の宿題って面倒そうなのが多いのな。
問題読むだけで疲れた('A`)
770デフォルトの名無しさん:2006/06/13(火) 14:30:21
>>769
そこまで面倒さは感じないが、課題出してる教官の頭の悪さ
は伝わった。俺んときは生粋のパソオタみたいな教官だったが
教える側が低レベルはやばいよなー
771デフォルトの名無しさん:2006/06/13(火) 14:33:22
プログラムったって、結局は汎用電子計算機の仕組みの根本
0と1の組み合わせとそれをうまく論理回路で処理する原理に基づいているわけだから
それと数学の基本的な知識がないようなヘタレ指導者は
単にソースや結果をただの文字列としか感じ取ってないのかもね・・・
772デフォルトの名無しさん:2006/06/13(火) 15:08:34
a[10]={1,8,10,6,9,7,5,3,2,4}というデータを小さい方から順に並べ替えて配列b[10]に入れて画面に出力するプログ
ラムを作成せよ。(ソーティングに関してはどの手法を用いても良い)

丸投げですがよろしくお願いします
773デフォルトの名無しさん:2006/06/13(火) 15:08:41
課題:
深さ優先探索と幅優先探索を用いてグラフ探索を行うプログラム"dfs.c"と"wfs.c"を作成せよ。
深さ優先探索はデータ構造としてスタックを、幅優先探索はデータ構造としてキューを利用せよ(再帰方法は認めない)。
以下は対象となるグラフデータを隣接行列で表現したものである。

int maze[16][16]={
{0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0},
{0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0},
{1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}
}

期限は明日までです、どうかお願いします。
774デフォルトの名無しさん:2006/06/13(火) 15:12:32
#include "stdafx.h"
#define num_subjects 4
#define num_test 3
int _tmain(int argc, _TCHAR* argv[])
{
static int score[num_subjects][num_test] = {{35,50,65},{75,70,82},{46,83,62},{25,18,53}};
int j,k,n;
int sum;
double average;
char c;
printf(" test1 test2 test3 sum average \n");
printf("============================================\n");
for (j=0;j<num_subjects;j++){
sum = 0;
for(k=0;k<num_test;k++){
sum = sum+score[j][k];
printf("%8d",score[j][k]);
}
average = sum/num_test;
printf("%8d %8.2f \n",sum,average);
}
printf("input enter key to quit program");scanf("%c",&c);
return 0;
}
この表示に加えて最終行のところにtest1, test2, test3 の合計と平均を表示するプログラムを作成しなさい

期限は今日の午後五時です。よろしくお願いします
775デフォルトの名無しさん:2006/06/13(火) 15:21:23
>>1のテンプレに従わないものにはレス不要。スルーでよろ。
776デフォルトの名無しさん:2006/06/13(火) 15:24:02
>>774
まぁ、これもなんか気持ち悪い・・・無駄ってわけじゃないが C/C++ にするなら
"stdafx.h" とか _tmain とか _TCHAR とか、書き換えてもおkやな?
777デフォルトの名無しさん:2006/06/13(火) 15:38:12
>>774
っつか、各行のsum(合計)、おかしいよね・・・
778デフォルトの名無しさん:2006/06/13(火) 15:47:53
>>774
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2048.c
問答無用の書き換え。結果が出てりゃ文句なし。
779デフォルトの名無しさん:2006/06/13(火) 15:56:43
>>778
// 追加
printf("============================================\n");

for(k=0; k<num_test; k++) {
sum = 0;
for(j=0; j<num_subjects; j++) {
sum += score[j][k];
}
printf("%6d",sum);
sum /= num_subjects;

printf("%5d %5.2f \n",test_sum,average);
}

return 0;
780デフォルトの名無しさん:2006/06/13(火) 16:00:00
まちがい送信すまそ
781デフォルトの名無しさん:2006/06/13(火) 16:01:39
何かとオモタがな・・・
まぁ、averageをdoubleで宣言しているなら、結果を求める計算にも
average = (double)sum/(double)num_test;
average = (double)test_sum/(double)num_test;
くらいはせんと、小数以下を表示する意味もあまりないな・・・
782デフォルトの名無しさん:2006/06/13(火) 16:20:47
fopenで指定されたテキストファイルを開いて、その内容を構造体に格納したいのです。

テキストファイルは
単語\n
単語\n

という感じで延々と単語が序列されています。
それを構造体のメンバchar *tangoに入れたいのですが

while ((fgets(a[i].tan,80,fp)) != NULL){

}

という感じではうまく動いてくれませぬ('A')

ちなみに構造体宣言は

static struct info{
char *tan;
} a[10000];

です。

fgetsの構文が違うのでしょうか?
783デフォルトの名無しさん:2006/06/13(火) 16:22:35
>>772
別配列に入れないとだめなの???
784デフォルトの名無しさん:2006/06/13(火) 16:22:52
↑すいませんorz
(×)それを構造体のメンバchar *tangoに入れたいのですが
(○)それを構造体のメンバchar *tanに入れたいのですが

修正です('A')
785デフォルトの名無しさん:2006/06/13(火) 16:23:06
>>782
配列の実体は?
786デフォルトの名無しさん:2006/06/13(火) 16:23:40
>>783
俺もそれに疑問を抱いたが、とりあえずaをbに丸々コピーして
bを並び替えておkじゃね?もしかして、本当は並び替えの前と後の比較で使うとか?w
787デフォルトの名無しさん:2006/06/13(火) 16:25:06
>>782
配列の実態とは?アホですいません。

構造体宣言時にa[10000]だけではだめということでしょうか?
788デフォルトの名無しさん:2006/06/13(火) 16:29:43
>>787
tanはポインタであって、実際に文字列を格納する実体が無いでしょ?
宣言するなら
char tan[80];
にしないと。
789733:2006/06/13(火) 16:32:14
今、期限が迫っている課題ってどれなんだろう。
期限がどうでもいい課題がいっぱい投稿されたので、
誰か整理してくれると助かる。
790787:2006/06/13(火) 16:40:56
むぅ('A')・・・

たとえば、指定されたテキストファイル内容を構造体に一度格納し表示する、というプログラムであれば

static struct info{
char tango[20];
} a[1000];

while ((fgets(a[i].tango,80,fp)) != NULL){
printf("%s",a[i].tango);
i++;
}

こんな感じではだめなのでしょうか?
何度やってもbus error OTL
791デフォルトの名無しさん:2006/06/13(火) 16:51:31
>>772
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2049.c
要らん部分があったら適当に削除してちょっ
792787:2006/06/13(火) 16:53:35
ふと配列にfgetsでもろに文字列代入できるわけないんじゃ、と思いました。俺乙。

ぐぅ・・・
793デフォルトの名無しさん:2006/06/13(火) 16:59:13
>>792

static struct info{
char tango[80];
} a[1000];

int main(void)
{
FILE *fp;
int i=0;
fp=fopen("Test.txt","r");
while ((fgets(a[i].tango,80,fp)) != NULL){
printf("%s",a[i].tango);
i++;
}
fclose(fp);
return 0;
}

で問題無く動いたワケだが
794787:2006/06/13(火) 17:00:10
Σ('A')!

ちょっとためしてきます。ありがとうございます。
795デフォルトの名無しさん:2006/06/13(火) 17:01:04
cだと文字列代入はないよ
796787:2006/06/13(火) 17:20:50
できました!動きますたw
課題はレコード型ソートなのでポインタ交換やらあるのでもうちょっとがむばります。

しかし、メンバは普通のchar tango[80]という配列宣言なのに、fgetsなので直接代入はできるのでしょうか?
できないとおもって*tango とかにしてたのですが('A')
797デフォルトの名無しさん:2006/06/13(火) 17:27:23
>>796
ついこないだ同じような問題に躓いていた奴がいた。
やっぱりわかってない人多いなぁ。
>>442,446,456
798デフォルトの名無しさん:2006/06/13(火) 17:27:30
そもそも、代入していない
799デフォルトの名無しさん:2006/06/13(火) 17:33:29
ポインタなら文字列を代入するのでなくて参照するのですよね?

798さんの言うように、構造体メンバのchar tangoにはfgetsでも代入はされていないのでしょうか?
800797:2006/06/13(火) 17:34:31
798は読んで、797は読んでくれないのか。シクシク…
801デフォルトの名無しさん:2006/06/13(火) 17:40:39
Σ(A')もちろん読ませていただきました。
京大生wwwさんと同じ勘違いをしている悪寒?なのでいまグーグル先生で検索してまふ。
802デフォルトの名無しさん:2006/06/13(火) 17:41:21
>>798はfgetsは代入する命令じゃなくて、格納する命令ってことをいってるんじゃ…

803デフォルトの名無しさん:2006/06/13(火) 17:55:34
>>446 の主張は変だろ。

ポインタ名 = "文字列"; は初期化だろうが代入だろうがいつでもできる。
それを言うなら、配列のほうだ。
804797:2006/06/13(火) 18:13:00
>>803
ああ、そのとおりだな。言ったのは自分じゃないけどアンカーしてスマン。

>>801
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2051.txt
適当に今仕立てたんだけど、あげる。
805797:2006/06/13(火) 18:14:46
806797:2006/06/13(火) 18:17:27
更に連投スマン、
27行目に
printf("--- ptr = \"foobar\";");
って入れておいてくれ。 orz
807デフォルトの名無しさん:2006/06/13(火) 18:31:12
[1] 授業単元:ソフトウェア 工学
[2] 問題文(含コード&リンク): 円周率をプログラムで求める。
[3] 環境
 [3.1] OS:winXP
 [3.2] コンパイラ名とバージョン: ビジュアルスタジオ
 [3.3] 言語: c++
[4] 期限: 2006/6/15
[5] その他の制限:下のようなプログラムで円周率を求めたいのですがうまくいきません。
やりたいことは積分によって面積を求めその出た値に4を掛けると円周率が出せるというものです。
→ルートは1-xにかかっています。∫(0から1までの範囲)√(1-x)^2 * 4 = 円周率

#include<math.h>
#include<stdio.h>

double func(double x)
{
if(x < 1.0000)
return (sqrt((1 - x) * (1 - x)) + func(x + 0.001));

else
return(1);
}

int main(void)
{
printf("%f", (double)func(0) * 4);

return(0);
}

プログラムを作ってみましたがうまくいきません。
詳しい方お願いいたします。
808デフォルトの名無しさん:2006/06/13(火) 18:40:20
その式あってるん?
809デフォルトの名無しさん:2006/06/13(火) 18:43:48
明らかに違うな。^2とか
810デフォルトの名無しさん:2006/06/13(火) 18:44:12
        1
π := 4・∫√(1-x*x) dx
        0

の式の事なら微分式だからfor文じゃ無理
811810:2006/06/13(火) 18:45:49
積分だった
812デフォルトの名無しさん:2006/06/13(火) 18:46:52
お得意のモンテカルロじゃないんだな
813デフォルトの名無しさん:2006/06/13(火) 18:47:35
double T,N;T = 10,N = 5;
double t,dt;
int i;
dt = 2 * T / N;
for(i=0;i<=N;i++)
{
t=-T + i * dt;
}
814デフォルトの名無しさん:2006/06/13(火) 18:48:31 BE:69876094-#
>>807
>√(1-x)^2

=(1-x)なわけだが。
815デフォルトの名無しさん:2006/06/13(火) 18:49:06
こたえは2だ
816デフォルトの名無しさん:2006/06/13(火) 18:50:23
817810:2006/06/13(火) 18:50:24
>>807

double func(double x)
{
if (x < 1.0)
return ( sqrt( 1.0 - x * x ) + func( x + 0.0001 ) );
else
return ( 0.0 );
}

int main(void)
{
printf("%lf", (double)func(0) * 4.0 / 10000.0 );
return(0);
}

積分と微分を間違ったお詫びだ
818デフォルトの名無しさん:2006/06/13(火) 19:01:01
皆さんありがとうございます。
すいません。(1-x^2)でした。
>>817
ありがとうございます。早速やってみましたがちゃんと動作しません。
頭には#include <stdio.h> #include <math.h>でOKでしょうか?
819デフォルトの名無しさん:2006/06/13(火) 19:01:49
なあ、c++じゃないのか?
820デフォルトの名無しさん:2006/06/13(火) 19:06:36
はいC++でやってます。
821デフォルトの名無しさん:2006/06/13(火) 19:14:23
おとなしく816見りゃいいのに。
全然違うことやってることくらいはわかるだろw
822デフォルトの名無しさん:2006/06/13(火) 19:15:02
積分勉強しなおせ。
823デフォルトの名無しさん:2006/06/13(火) 19:26:54
皆さんすみません。何とかできました。
どうやらCPUのせいでprintf("%lf", (double)func(0) * 4.0 / 10000.0 );
の部分の10000までの数値をdouble型で表示出来ないのが原因のようです。
桁を減らしたら出来ました。
ところでprintf("%lf", (double)func(0) * 4.0 / 10000.0 );
の部分でなぜ10000で割っているのでしょうか。
ご教示お願いいたします。
824デフォルトの名無しさん:2006/06/13(火) 19:33:18
%lfなんか使わずに%gを使えばいいんだよ。
825デフォルトの名無しさん:2006/06/13(火) 19:45:23
>>823

if (x < 1.0)
return ( 0.0001 * sqrt( 1.0 - x * x ) + func( x + 0.0001 ) );

普通はこう書く。(0.0001 = 1/10000)
ttp://ja.wikipedia.org/wiki/%E7%A9%8D%E5%88%86#.E5.8C.BA.E5.88.86.E6.B1.82.E7.A9.8D.E6.B3.95

掛けたものの和も、和に掛けたものも結果は同じ。
ってか、積分大丈夫か?勉強しなおしたほうがいいぞ。
826デフォルトの名無しさん:2006/06/13(火) 19:47:43
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2053.txt
テンプレ等↑の中にまとめてあります。貯まってしまったので数が多いですが
どうぞよろしくお願いします。m(_ _m)
827デフォルトの名無しさん:2006/06/13(火) 19:50:26
>>825
ありがとうございます。積分はやったのですが余り深く学校でも取り扱っていなかったので
これを機に勉強したいと思います。
828デフォルトの名無しさん:2006/06/13(火) 19:56:46
>>826
テキストファイルにする根性があるのなら
このぐらいの問題は楽勝だ。がんばれ
829デフォルトの名無しさん:2006/06/13(火) 20:02:38
>>828
(A´・ω・)2時間考えましたがわからないんですよ お願いしますよ
830デフォルトの名無しさん:2006/06/13(火) 20:04:41
>>826
これを書いたのはどなたかな?
831826,829:2006/06/13(火) 20:06:25
>>830
ぁ、自分です。
832デフォルトの名無しさん:2006/06/13(火) 20:18:39
1個目、直すとこだけ

a[4]=12;
temp=a[0];
for(i=0;i<4;i++)
a[i]=a[i + 1];
a[i + 1]=temp;
for([ 0 ];i<5;i++)
printf("%d\n",a[i]);




833デフォルトの名無しさん:2006/06/13(火) 20:20:30
for(i =0
ありゃ
834デフォルトの名無しさん:2006/06/13(火) 20:24:16
この問題って教官が作った穴埋めかい?
835デフォルトの名無しさん:2006/06/13(火) 20:30:02
文字数数え

#include<stdio.h>

void main()
{
char moji[]= "aiueo kakikukeko sasisuseso" ;
int len=0;

while(moji[len])
len++;
printf("この文字列%s\n",moji);
printf("の文字数は%d個です。\n",len);
}
836826,829:2006/06/13(火) 20:42:27
>>832,835
ありがとうございますm(_ _m)
>>834
宿題として出されただけなので誰が作ったかはわからないです

残り どなたかお願いしますm(_ _m)
837デフォルトの名無しさん:2006/06/13(火) 20:43:45
>>832
間違ってるよ…
a[ i] = tmp
838デフォルトの名無しさん:2006/06/13(火) 20:43:45
>>829
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2054.lzh
しかしだな、本当に分からないのか?
授業は聞いてるか?
教科書や参考資料、はたまたネットは活用したか?(このスレを活用してるっちゃしてるかもしれんが(苦笑))
教官の質も悪いと思うけどな(問題のソースも腐ってるしなぁ)
839826,829:2006/06/13(火) 20:48:41
>>838
ちゃんと聞いてるんですけどねぇ・・・ どんどん進むので最初のころは
ほぼ完璧にわかってたんですけど。まぁこれを参考にさせてもらって
もっと勉強してみます。ありがとうございました。
840デフォルトの名無しさん:2006/06/13(火) 21:00:31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2055.txt
のクイックソートのプログラムを以下の様に改良せよ
(1)整列する数値データは関数randを使って発生させる。データ数は最大10000個とする
(2)プログラムの実行において、データ対の大小比較を行った回数を計算し出力する
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: C
[4] 期限: 明後日
[5] その他の制限: 特にありません


お願いいたします!
841315:2006/06/13(火) 22:01:46
やたら遅いレス。>>305 >>409
もう見てないかな?それとも誰かいい答え出したかな。
>>315よりはAIっぽいのを作ってみた。
int AI_move () {
int result = 1; //reverse関数の戻り値を代入する変数
int i, j, temp, Ti, Tj,chk;
temp = 0;
if ( current == BLACK ) printf("AI黒の手番です。\n");
else printf("AI白の手番です。\n");
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
chk = isReversible(i, j);
if (chk != 0, temp < count) {
temp = count;
Ti = i;
Tj = j;
}
}
}
result = reverse(Ti, Tj);
return result;
}
あとisReversible関数の、int count = 0; // ひっくり返る石の個数を数える
を、count = 0; に変更した。ローカル変数とグローバル変数で、同じ名前は
ひどいよ。しばらく気づかなかった。この問題、グローバル変数がやたら多いし、質が悪いね。
今回の修正は、要するに8 * 8をすべて洗い出し、一番色が変わる場所を探している、ただそれだけ。
もっとましなのにしたければオセロの定石集が必要ですね。
あ、あと、盤面数8*8以外には対応していません。ま、簡単に直せますが。
842デフォルトの名無しさん:2006/06/13(火) 22:09:30
[1]授業単元:演習
[2]問題文(含コード&リンク):
出席率(attend)と試験の得点(test)を読み込み、2つの条件を満たす場合
”合格”と表示し、満たさない場合”不合格”と表示してください。2つの条件は以下の通り。
@出席率が70以上、A試験得点が60以上。
この課題はif文のネストで、


#include<stdio.h>
int main(void){
int attend, test;
printf( "input attend test: " ); scanf( "%d %d", &attend, &test );
if ( attend >= 70 ) if ( test >= 60 ) printf( "合格\n" ); else printf( "不合格\n" ); else printf( "不合格\n" );
}
とするとコンパイルエラーになります
何故でしょうか?
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
843デフォルトの名無しさん:2006/06/13(火) 22:13:31
とりあえず囲んでみれば
844デフォルトの名無しさん:2006/06/13(火) 22:15:59
#include<stdio.h>
int main(void){
int attend, test;
printf( "input attend test: " );
scanf( "%d %d", &attend, &test );

if ( attend >= 70 && test >= 60 )
printf( "合格\n" );
else printf( "不合格\n" );

}
845 ◆OD5SnP92O. :2006/06/13(火) 22:17:38
[1]授業単元:プログラミング演習
[2]問題文:>>773
[3]環境:
  [3.1]OS:LINUX
  [3.2]コンパイラ名とバージョン:gcc
  [3.3]言語:C
[4]期限:明日の午前中まで
[5]その他の制限:再帰の不使用



度々申し訳ありません、>>773です。
こちらの書き込み方がルールに沿っておらず、スレ汚しをしてしまったので
恥を忍んで再度ここに書かせていただけたらと存じます。
どなたかお力添えよろしくお願いします。
846デフォルトの名無しさん:2006/06/13(火) 22:17:46
[1]授業単元:演習
[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:論理積演算子(&&)、
論理和演算子(||)を使わないで下さい。
ヘッダint month; は使わないで下さい。
847デフォルトの名無しさん:2006/06/13(火) 22:19:17
>>844
警告 W8070 ex065.c 11: 関数は値を返すべき(関数 main )
ってでるけどなんなんでしょう?
実行できたけど
848デフォルトの名無しさん:2006/06/13(火) 22:20:57
return 0
849デフォルトの名無しさん:2006/06/13(火) 22:21:06
[1]授業単元:演習
[2]問題文(含コード&リンク):
整数値(n)を読み込み、絶対値を表示して下さい。
−20の絶対値は、20。20の絶対値は、20。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
850デフォルトの名無しさん:2006/06/13(火) 22:21:08
>>847
C99に対応していないヘタレコンパイラの勘違い警告。
関数の最後にreturn 0;でも加えると良いんじゃないの。
851デフォルトの名無しさん:2006/06/13(火) 22:21:58
>>848
>>850
うまくいきました。ありがとうございます。
852デフォルトの名無しさん:2006/06/13(火) 22:22:28
ボーランドだと通る。
gccとか使ったことないから知らんが
void main (void)にしたら?
853デフォルトの名無しさん:2006/06/13(火) 22:23:02
[1]授業単元:演習
[2]問題文(含コード&リンク):
西暦の年(year)を読み込み、その年がうるう年
であれば"閏年"、うるう年でないときは"平年"と
表示して下さい。うるう年とは、2月が29日の
年。基本は4年に一回(4で割り切れる年はうる
う年)、それだと多すぎるので100年に1回は
平年とする(100で割り切れる年は平年)、そ
れだと少なすぎるので400年に一回をうるう年
に戻す(400で割り切れる数はうるう年)。
この課題はif文のネス
トで。(論理和、論理
積は使わないで下さい
。)
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
この課題はif文のネストで。(論理和、論理
積は使わないで下さい。)
854852:2006/06/13(火) 22:24:32
へぇ〜w気づかんかった。
カープ負けたし寝る。
855デフォルトの名無しさん:2006/06/13(火) 22:28:37
>>853
変な文章ですね
856デフォルトの名無しさん:2006/06/13(火) 22:36:39
>>855
課題の文章そのままですが解りづらいですよね
857デフォルトの名無しさん:2006/06/13(火) 22:37:13
[1]授業単元:演習
[2]問題文(含コード&リンク):
月(month)を読み込み、その月の日数を表示して下さい。
2月は28日とする。
if文で作ってください。
小の月(31日でない月)は、西向く士(ニシムクサムライ、2 4 6 9 11)。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
858デフォルトの名無しさん:2006/06/13(火) 22:40:59
[1]授業単元:演習
[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
論理演算子を使ってください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
859デフォルトの名無しさん:2006/06/13(火) 22:44:15
>>857>>858もswitch文を使うのが自然だと思うんだがな…
860デフォルトの名無しさん:2006/06/13(火) 22:44:22
>>858
丸投げスレでこういうことを言うのもバカらしいというか、ナンセンスなんだが
それくらい自分でできるやろ・・・入力された数値を if 文と条件指定を使って
判別すりゃええがな・・・
861デフォルトの名無しさん:2006/06/13(火) 22:45:46
前に見たことがある、過去スレにあるだろ
862デフォルトの名無しさん:2006/06/13(火) 22:45:50
>>859
if文しか駄目って教員がいいます。

>>860
できません・・・・
863デフォルトの名無しさん:2006/06/13(火) 22:48:34
>>858
scanf("%d", month);

if (month>=1) && (month<=12) {
printf("正しい月")
} else {
printf("誤った月")
}
864デフォルトの名無しさん:2006/06/13(火) 22:49:08
int main()
{
#if FOR_858 || FOR_857 //>>858 >>857
int month;
scanf("%d", & month);
#endif
#if FOR_858 //>>858
printf("%s月\n", month >= 1 && month <= 12 ? "正しい" : "誤った");
#elif FOR_857 //>>857
int day = 31;
if (month == 2) {
day = 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
day = 30;
}
printf("%d\n", day);
#elif FOR_849 //>>849
int n;
scanf("%d", & n);
printf("%d\n", n < 0 ? -n : n);
#endif
return 0;
}

865デフォルトの名無しさん:2006/06/13(火) 22:50:31
>>849
#include <stdio.h>
#include <math.h>
#define ABS(n) (n) >= 0 ? (n) : (n) * (-1)
int main(){
printf("%d %d\n", abs(-20), abs(20));
printf("%d %d", ABS(-20), ABS(20));
return 0;
}
866デフォルトの名無しさん:2006/06/13(火) 23:02:01
>>863
コンパイルに失敗したました。

>>865
#include <math.h> は使わないで下さい
867デフォルトの名無しさん:2006/06/13(火) 23:02:28
[1] 授業単元:情報科学U
[2] 問題文:n! を計算する float 型の関数 fact(int n),
  x の n 乗を計算するfloat 型の関数 beki(float x, int n) を定義し,
  正の整数 n,0 以上 1 以下の実数 p,0 以上 n 以下の整数 m を読み込んで,
  http://www.vipper.org/vip275102.jpgを計算して表示するプログラムを作れ
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年6月16日(金)8:40まで
[5] その他の制限:標準ライブラリは使ってはいけないです。

よろしくおねがいします
868デフォルトの名無しさん:2006/06/13(火) 23:04:31
>>866
よく見ろ、使ってないABSもあるだろ
869デフォルトの名無しさん:2006/06/13(火) 23:05:02
[1] 授業単元: プログラミング2
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2056.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 06/14
[5] その他の制限:ヘッダは<stdio.h><string.h><srdlib.h>のみ用いること。

すみません、12時間やりましたが、コンパイルできずに
コードも中途半端です。助けてください。
870デフォルトの名無しさん:2006/06/13(火) 23:05:56
>>867
表示とかできなくね?
871デフォルトの名無しさん:2006/06/13(火) 23:06:16
>>863
よくそういう分かりきったエラーを残すもんだとw
872デフォルトの名無しさん:2006/06/13(火) 23:06:42
初心者すぎて入出力がライブラリだと思ってないだけだろ
873867:2006/06/13(火) 23:08:45
>>870答えの数値だけを表示、かと。私も、手書きでうpろだ使ったくらいですから。
874869:2006/06/13(火) 23:10:17
補足です。

B=20-2
C=6*1
D=B/C
A=5+D

このデータが入ったtxtデータでの
動作を確認しています。
875デフォルトの名無しさん:2006/06/13(火) 23:11:26
意味不明、標準ライブラリを調べてからきてください>>873
876867:2006/06/13(火) 23:15:27
標準ライブラリを使っていいです。すいません。
877デフォルトの名無しさん:2006/06/13(火) 23:22:51
[1]授業単元:プログラミング演習
[2]問題文(含コード&リンク):
n次元ベクトルvとwのユークリッド距離の2乗をdouble変数で返す以下のような関数を作成する。
 
 nは最大20とする。vとwの保持には長さ20のdoubleの1次元配列v[],w[]を予め定義し、その一部分を使用する。
 

n次正方行列Aとn次元ベクトルvの積Avを求め、結果を配列wにいれる以下のような関数を作成する。

  nは最大20とする。Aの保持には20×20のdoubleの2次元配列を予め定義し、その一部分を使用する。vの保持には
  長さ20のdoubleの1次元配列v[]を予め定義し、その一部分を使用する。

・乱数rand()を適当に用いて「推移確率行列A」を発生させる
・n次元の単位ベクトル(u1,u2,・・・un)それぞれについて、それを初期ベクトルx0として以下を実行したときの収束先を出力する
 x[k+1]=Ax[k]
また、収束までの反復数も出力する。
収束判定はx[k+1]とx[k]のユークリッド距離の2乗をdouble変数で表したものが、0.0と区別出来なくなった時を収束とする。
nとして10を用いたとき、生成された行列、各初期ベクトルに対する結果のベクトルと収束までの反復回数を出力せよ。



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

お願い致します。
878867:2006/06/13(火) 23:23:47
やっぱり標準ライブラリは使わずにプログラムしないといけないようです。
授業ではヘッダーは#include<stdio.h>しかつかってないです。
879デフォルトの名無しさん:2006/06/13(火) 23:25:42
>>878
stdio.hは標準ライブラリの一つなわけだが
880デフォルトの名無しさん:2006/06/13(火) 23:25:44
うん、標準ライブラリだよね
881デフォルトの名無しさん:2006/06/13(火) 23:25:56
>>878
stdio.hは標準入出力ライブラリで勿論標準ライブラリの一部だよ。

stdio.h以外の標準ライブラリを使わずにとか表現すれば良いんじゃない?
882デフォルトの名無しさん:2006/06/13(火) 23:26:13
>>878
#include<stdio.h>の時点で標準ライブラリ使ってんじゃん
883デフォルトの名無しさん:2006/06/13(火) 23:29:08
>>879-882
待ち伏せして即レスすんなよ
884デフォルトの名無しさん:2006/06/13(火) 23:29:38
>>869
これ二分木使うまでもなく、一行入力されるごとに、B→C→D→A と計算していけば答出ちゃうじゃん。
わざわざ右辺を文字列で保存していくのか? 無意味じゃね?
885デフォルトの名無しさん:2006/06/13(火) 23:32:19
>>884
二分木の学習なんで、わざわざこうしている
そうです。今回は木を構成して、出来上がったか
どうかを表示できればいいみたいです。
お願いします。
886867:2006/06/13(火) 23:32:47
>stdio.h以外の標準ライブラリを使わずにとか表現すれば良いんじゃない?
そうです。そのとおりです。これでよろしくおねがいします。
>>883待ち伏せしてくれる人たちに感謝。
887デフォルトの名無しさん:2006/06/13(火) 23:46:43
>>867
組み合わせ、乗数の関数くらい自分で解け
#include<stdio.h>
関数定義
int main(void)
{
int x,n;

scanf("%d,%d",&x,&n);
関数使用

return 0;
}
以下関数の中身

888デフォルトの名無しさん:2006/06/13(火) 23:51:50
#include <stdio.h>
float fact(int n){
float r;
if(n < 2)r = 1;
else r = fact(n - 1) * n;
return r;
}
float beki(float x, int n){
float r = 1.0;
for(int i = 0; i < n; i++)r *= x;
return r;
}
float kumi(int n, int r){
return (fact(n) / (fact(n - r) * fact(r)));
}
float func(int n, double p, int m){
float r = 0.0;
for(int k = 0; k < m; k++)r += kumi(n, k) * beki(p, k) * beki(1 - p, n - k);
return r;
}
int main(){
printf("%f", func(10, 0.5, 9));
}
889デフォルトの名無しさん:2006/06/14(水) 00:09:56
[1]授業単元:演習
[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
論理和演算子を使わないで下さい。
stdio.h以外の標準ライブラリを使わないで下さい。
890デフォルトの名無しさん:2006/06/14(水) 00:11:29
[1]授業単元:演習
[2]問題文(含コード&リンク):
出席率(attend)と試験の得点(test)を読み込み、2つの条件を満たす場合
”合格”と表示し、満たさない場合”不合格”と表示してください。2つの条件は以下の通り。
@出席率が70以上、A試験得点が60以上。
この課題はif文一つで。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限: stdio.h以外の標準ライブラリを使わないで下さい。
891デフォルトの名無しさん:2006/06/14(水) 00:11:52
うっざー@@;
よほどアホが集まってる学校なんだな
892デフォルトの名無しさん:2006/06/14(水) 00:13:40
>>889
#include <stdio.h>

int main() {
int x;
printf("Input Number > ");
scanf("%d",&x);
if(x>=1 && x<=12) printf("正しい月\n");
else printf("誤った月\n");
return 0;
}
はいはい、次次
893デフォルトの名無しさん:2006/06/14(水) 00:16:44
>>853

#include<stdio.h>
int main(void){int year;printf("year input >");scanf("%d", &year);
if ((year % 4) == 0)if ((year % 100) != 0)printf("閏年\n");else
if ((year % 400) == 0)printf("閏年\n");else printf("平年\n");else
printf("平年\n"); return 0;}

894デフォルトの名無しさん:2006/06/14(水) 00:16:45
>>892
論理演算子を使わないで下さい。
895デフォルトの名無しさん:2006/06/14(水) 00:18:05
>>890
#include <stdio.h>

int main() {
int attend,test;
printf("出席率 > ");
scanf("%d",&attend);
printf("試験得点 > ");
scanf("%d",&test);
if(attend >= 70 && test >= 60) printf("合格\n");
else printf("不合格\n");
return 0;
}
はいはい、専門学校生はこの程度のことも自力でやれないんだね
896デフォルトの名無しさん:2006/06/14(水) 00:19:00
>>894
>論理和演算子
はぁ?積しか使ってませんが?
897デフォルトの名無しさん:2006/06/14(水) 00:19:08
[1]授業単元:演習
[2]問題文(含コード&リンク):
九九の表を表示して下さい。
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18

..................................................................
9 18 27 36 45 54 63 72 81
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
898デフォルトの名無しさん:2006/06/14(水) 00:19:15
内容的にWikiなんて必要無いんだが、
これだけあると、Wikiが欲しくなる。
899デフォルトの名無しさん:2006/06/14(水) 00:20:07
>>896
それも駄目でした。
900デフォルトの名無しさん:2006/06/14(水) 00:20:32
>>894
ttp://kogolab.jp/elearn/c2002/5/ronri.html
アフォ、和は OR だろ。AND しか使ってねーYO!
901デフォルトの名無しさん:2006/06/14(水) 00:20:48
>>897
ずれまくり
902デフォルトの名無しさん:2006/06/14(水) 00:22:01
>>899
だったらx>=0のさらにレベル下げしたところにx<=12をつければ?
elseは放置しておいても問題ないだろ。そこまでできないとなると
中学生以下だぞ、って性帝トーマス氏に言われる前に相手にされんなw
ブラックリストに入れるから、どこの学校か教えてくれない?
903デフォルトの名無しさん:2006/06/14(水) 00:23:01
>>897
#include <stdio.h>

int main(void){
int i,j;
for (i=1;i<10;i++){
for (j=1;j<10;j++){
printf(" %2d",i*j);
}
puts("");
}
return 0;
}
904デフォルトの名無しさん:2006/06/14(水) 00:23:46
>>897
#include <stdio.h>

int main(void)
{
int i, j;

for (i=1; i<=9; i++) {
for (j=1; j<=9; j++)
printf("%2d ", i*j);
printf("\n");
}

return 0;
}
905デフォルトの名無しさん:2006/06/14(水) 00:24:33
論理演算子禁止とか・・・・
余計に意味がわからないだけだと思うが・・・
906デフォルトの名無しさん:2006/06/14(水) 00:25:41
じょうよすいっちぶんかな
907デフォルトの名無しさん:2006/06/14(水) 00:30:07
ちうか、AND使えないと、1つの条件が通っても
2つめで合わないならそのときの対処もしなきゃならん面倒が増えるな・・・
さらに、その下に1つめが合わないときの対処も・・・なんっつー無駄なことを教える学校だw
908デフォルトの名無しさん:2006/06/14(水) 01:03:10
>>889
#include<stdio.h>

int main(void)
{
int num;
printf("数値を入力してください : ");
scanf("%d",&num);
switch(num){
case 1 : printf("正しい月\n"); break;
case 2 : printf("正しい月\n"); break;
case 3 : printf("正しい月\n"); break;
case 4 : printf("正しい月\n"); break;
case 5 : printf("正しい月\n"); break;
case 6 : printf("正しい月\n"); break;
case 7 : printf("正しい月\n"); break;
case 8 : printf("正しい月\n"); break;
case 9 : printf("正しい月\n"); break;
case 10 : printf("正しい月\n"); break;
case 11 : printf("正しい月\n"); break;
case 12 : printf("正しい月\n"); break;
default : printf("誤った月\n"); break;
}
return 0;
}

間違ってても知らないぞ♥
909デフォルトの名無しさん:2006/06/14(水) 01:06:45
静まり返った後に、妙なタイミングで蒸し返すのもどうかとw
910デフォルトの名無しさん:2006/06/14(水) 01:08:39 BE:77640858-#
つーかアホ問題出す教官の実名晒せよ。徹底的にバカにするから。
911デフォルトの名無しさん:2006/06/14(水) 01:08:42
一個一個やらなくても
912デフォルトの名無しさん:2006/06/14(水) 01:11:11
学校名晒してほしいな
913■■■質問■■■:2006/06/14(水) 01:13:09
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
でたらめに10個の正の整数値を入力するとき、n番目に入力した数が、
n+1番目に入力した値より大きい場合を数えて、何回あったかを表示する。
■例 3,5,2,8,9,5,1,4,7,5 4回 
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年6月14日深夜
[5] その他の制限:特にありません、宜しくお願い致します。
914デフォルトの名無しさん:2006/06/14(水) 01:14:56
意味分からん
915デフォルトの名無しさん:2006/06/14(水) 01:18:31
#include <stdio.h>
int main(){
int i, a[10], cnt = 0;
for(i = 0; i < 10; i++)scanf("%d", &a[i]);
for(i = 0; i < 9; i++)if(a[i] > a[i + 1])cnt++;
printf("%d回", cnt);
return 0;
}
確かめてないけど
916デフォルトの名無しさん:2006/06/14(水) 01:20:18
いや、どう考えても答えの導けない問題っつーか
例に出ている結果の意味も分からんよ・・・
917デフォルトの名無しさん:2006/06/14(水) 01:21:55
>>915でおkだと思う
918デフォルトの名無しさん:2006/06/14(水) 01:22:34 BE:23292926-#
>>913
#include<stdio.h>
#include<stdlib.h>
int main(void){int i,n,c=0,prev=INT_MAX;char tmp[100];for(i=0;i<10;i++)
{fgets(tmp,sizeof(tmp),stdin);n=atoi(tmp);if(n>prev)++c;prev=n;}printf("%i回\n",c);return 0;}
919デフォルトの名無しさん:2006/06/14(水) 01:24:38
>>918
だぁ〜〜ら、いつもそうだけど、お主のソース、コンパイルできねーっつーのっw
920デフォルトの名無しさん:2006/06/14(水) 01:25:37 BE:93168768-#
逆か。ほんならこれで。
prev=-INT_MAX;
if(n<prev)++c;
921デフォルトの名無しさん:2006/06/14(水) 01:26:20
922デフォルトの名無しさん:2006/06/14(水) 01:26:49
>>913
最初の数字から数えてみた
#include <stdio.h>

int main(void){
int a[10],i,count=0;
for (i=0;i<10;i++){
scanf("%d",&a[i]);
if (i!=0 && a[i]>a[0]){
count++;
}
}
printf("%d個\n",count);
}
923デフォルトの名無しさん:2006/06/14(水) 01:27:52 BE:40761937-#
>>919
ん?一発で通ったぞ。コンパイラは何使ってるんだ?
924デフォルトの名無しさん:2006/06/14(水) 01:29:47
>>919じゃないけど
BCCだとINT_MAXが未定義のシンボル
925■■■質問■■■:2006/06/14(水) 01:30:07
>>915さん>>917さんありがとうございます。
考えて下さった皆様もありがとうございます。
926デフォルトの名無しさん:2006/06/14(水) 01:30:20
>>916
問題はアフォだと思うが、意味は分かるだろ。
927デフォルトの名無しさん:2006/06/14(水) 01:30:56
トーマスにもお礼言わなきゃ
つか、トーマスの1回多く数えてない?
928デフォルトの名無しさん:2006/06/14(水) 01:33:36 BE:46584364-#
>>924
bccはINT_MAX定義されてねえのか…
929デフォルトの名無しさん:2006/06/14(水) 01:33:37
今気付いたんだけど,
JaneDoeViewの"ここからツリー化"って便利だな。
いや、それだけなんだが。
930■■■質問■■■:2006/06/14(水) 01:35:43
>>922さん済みません!
ありがとうございます。
931デフォルトの名無しさん:2006/06/14(水) 01:36:00
>>928
limits.hに定義されてる
932デフォルトの名無しさん:2006/06/14(水) 01:36:22
>>924
Borland C++ Builder 6 Personalのだけど.

includes\_lim.h
51: #define INT_MIN LONG_MIN /* minimum signed int value */
52: #define INT_MAX LONG_MAX /* maximum signed int value */
53: #define UINT_MAX ULONG_MAX /* maximum unsigned int value */

limits.hをインクルードすればOK.
933デフォルトの名無しさん:2006/06/14(水) 01:37:07 BE:38820454-#
>>927
ん?仕方がないから実行してみたが、
>■例 3,5,2,8,9,5,1,4,7,5 4回
この通りになったぞ。
934デフォルトの名無しさん:2006/06/14(水) 01:37:39
>>929
便利だけど使ってない
935デフォルトの名無しさん:2006/06/14(水) 01:39:02
>>934
こうマシンガンのごとく宿題が発射されると、
そうでもしないとやってらんね。(もっといい方法があるのかもしれないけど)
936デフォルトの名無しさん:2006/06/14(水) 01:39:37
>>926
要するに入力された値を数列にして、先頭から順に次の要素の数値と比較して
値が大きくなる場合の回数を出すってことね。
937デフォルトの名無しさん:2006/06/14(水) 01:41:49
>>933
そうか、何度やっても5に
938デフォルトの名無しさん:2006/06/14(水) 01:41:53
>>933
5回って出た俺はいったい何?
939デフォルトの名無しさん:2006/06/14(水) 01:42:34 BE:93168768-#
>>937-938
>>920のパッチ適用のこと。
940■■■質問■■■:2006/06/14(水) 01:42:44
性帝トーマスさん済みません><;
あわてて書き込みしてしまいました。
ありがとうございます!
941デフォルトの名無しさん:2006/06/14(水) 01:44:40
INT_MINを使ってないね
942デフォルトの名無しさん:2006/06/14(水) 01:51:45
っつーーーーかぁ、√使った素数を求めるプログラムのソースマダー?(チソチソAA略)
943デフォルトの名無しさん:2006/06/14(水) 01:54:56
俺が作ったやつなら>>298にあるけど
944デフォルトの名無しさん:2006/06/14(水) 01:56:35
>>942
まだいたのかしつこいな。
>>728にもあるぞ。
いいかげん寝なさい。
945デフォルトの名無しさん:2006/06/14(水) 01:56:57
>>928
そもそも仕様で(limits.h以外で)定義しとけと規定されてない物なんだから
limits.hのインクルード無しでは使えなくても当然だろ
946デフォルトの名無しさん:2006/06/14(水) 01:56:57
>>840
大小比較回数とは大小交換回数のことか?
あとクイックソートの比較は配列の真ん中の値で比較するんだぞ、boundの値が違ってい
るぞ

#include <stdio.h>#include <stdlib.h>#define NMAX 10000
#define swap(a,b){int t=(a);(a)=(b);(b)=t;}static int count = 0;
void print(int *array,int N){int i;for(i = 0; i < N; i++){
printf("array[%d] = %d ", i, array[i]);}printf("大小交換回数=%10d\n", count);}
void quicksort(int *array,int lower,int upper){int l = lower;int u = upper;
int bound = array[(lower + upper) / 2];while(l<=u){while(array[l]<bound) l++;
while(array[u]>bound) u--;if (l <= u){count++;swap(array[l],array[u]);l++;
u--;}}if (lower < u) quicksort(array,lower,u);if (l < upper)
quicksort(array,l,upper);}
int main(void){int i = 0;int array[NMAX];while(1){if (i >= NMAX)break;array[i]
= (int)rand();i++;}quicksort(array, 0, NMAX - 1);print(array, NMAX);return 0;}


947デフォルトの名無しさん:2006/06/14(水) 02:02:08
C言語をやろうと思い導入しました
ですがうまくいきません

------ ビルド開始: プロジェクト: C, 構成: Debug Win32 ------
コンパイルしています...
Cプラス.cpp
.\Cプラス.cpp(4) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
ビルドログは "file://d:\My document\Visual Studio 2005\Projects\C\C\Debug\BuildLog.htm" に保存されました。
C - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

となってエラーになります
948デフォルトの名無しさん:2006/06/14(水) 02:03:36 BE:15528724-#
949デフォルトの名無しさん:2006/06/14(水) 02:03:59
>>947
氏ね
950デフォルトの名無しさん:2006/06/14(水) 02:04:18
int main()ってしてないとか>>947
951921:2006/06/14(水) 02:07:39
>>946
ハァ?もういっかいクイックソート勉強しなおしてこい。
クイックソートは任意のピボット(普通は要素の先頭)と比較して、小さいか、大きいかで分けるのを、
再帰的に行なうソート手法だ。
2分検索か何かと勘違いしていないか?
952俺ってやさしい:2006/06/14(水) 03:59:59
>>947
そのエラー内容を見せられてどうしろと言うの。
「残念だね」って言えば良いの?
とりあえず、拡張子は.cにしよう。
次に、何の関数が戻り値無しでintと仮定されてるのかがわからない。
簡単なのコンソールアプリの例、下記。
#include <stdio.h>
int func(int n);//関数宣言
int main(argc, *argv[])
{
int a = 10;
printf("%d\n",a);//10と表示される
a = func(a);
printf("%d\n",a);//20と表示される
return 0;
}
int func(int n)//関数定義
{
return n+n;
}
組み込みとかだとずっとmain内と関数で電源を切るまで(ログオフかな?)
処理を継続させるためにvoid main(void)にして戻り値無しにするらしい。
953俺ってやさしい:2006/06/14(水) 04:00:54
あーあ、main(int argc, char *argv[])
に訂正ね
954デフォルトの名無しさん:2006/06/14(水) 04:02:40
>>812
先生ですか?
955デフォルトの名無しさん:2006/06/14(水) 04:38:52
>>877
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2058.txt
適当に書いてみた。間違ってたらスマソ
956921:2006/06/14(水) 07:00:10
>>840
すまん、間違ってたのでこっちを。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2059.txt
が、もうすでに手遅れな気もする。
957デフォルトの名無しさん:2006/06/14(水) 07:42:40
>>956
ありがとうございました!
958デフォルトの名無しさん:2006/06/14(水) 08:01:17
[1] 授業単元/言語:C++/C++
[2] 環境コンパイラ:VisualC++6.0
[3] OS:Windows XP
[4] 提出期限:6月24日
[5] 問題内容
MFCとOpenGLによる3次元アニメーションプログラム。

作品のタイトル自由、作品には以下の基本要素が含まれるようにして下さい。
@ OpenGLによる3次元キャラクター
A キャラクターが動く(あるスポーツの動作、あるいは、ダンスの動作をシュミレートする)
B MFCによるダイアログ(メニューからダイアログを開く)
C ダイアログには、キャラクターの大きさ、動きの速さ、動きの角度などを設定する
  コントロールがある。

【OpenGL参考プログラム】:http://www.fileup.org/fup88925.zip.html

【受信pass】:OpenGL

【参考ホームページ】:http://odalab.spub.chitose.ac.jp/~oda/lang/opengl.html
           http://www4.plala.or.jp/tamo/opengl/win_ogl.html
【注意】
OpenGL参考プログラムをUPしました。
参考プログラムには、適当なキャラクターとアニメーションが設置されています。
あとは、ダイアログを設置して、キャラクターの大きさ、動きの速さ、動きの角度などを
コントロールできる機能を追加すればOKです。簡単なもので結構です。
よかったら、キャラクタを自由な形に変更して下さい。
完成したら、アップローダにUPしといてもらえば助かります。
よろしくお願いします。
959デフォルトの名無しさん:2006/06/14(水) 08:24:09
>>958 訂正があります
[1] 授業単元/言語:C++/C++
[2] 環境コンパイラ:VisualC++6.0
[3] OS:Windows XP
[4] 提出期限:6月24日
[5] 問題内容
MFCとOpenGLによる3次元アニメーションプログラム。基本要素は含まれているので。
参考プログラムには、適当なキャラクターとアニメーションが設置されています。
あとは、ダイアログを設置して、キャラクターの大きさ、動きの速さ、動きの角度などを
コントロールできる機能を追加すればOKです。簡単なもので結構です。
よかったら、キャラクタを自由な形に変更して下さい。

【OpenGL参考プログラム】:http://www.fileup.org/fup88925.zip.html

【受信pass】:OpenGL

【参考ホームページ】:http://odalab.spub.chitose.ac.jp/~oda/lang/opengl.html
           http://www4.plala.or.jp/tamo/opengl/win_ogl.html
【注意】
OpenGL参考プログラムをUPしました。
完成したら、アップローダにUPしといてもらえば助かります。
よろしくお願いします。
960デフォルトの名無しさん:2006/06/14(水) 09:46:41
さぁ、今日もどーんと来い!

クイックソートについては仕組みから理解すべし
ttp://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/quick-sort.html
ttp://www.geocities.jp/ky_webid/algorithm/020.html
961デフォルトの名無しさん:2006/06/14(水) 09:47:44
ここは Visual C++ も受け付けてるん?専用スレの方がイクネ?
962デフォルトの名無しさん:2006/06/14(水) 10:06:53
>>961
あっちだと間違いなくこっちに誘導されるね。
それにしても、WinXPにVC6かぁ。滅多にない組み合わせだな。
963デフォルトの名無しさん:2006/06/14(水) 10:17:18
次スレ?
ぼるじょあがC/C++の宿題を片づけますYO! 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
964デフォルトの名無しさん:2006/06/14(水) 10:53:17
C言語/C++言語の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/

↑えぇ〜〜〜、こっちだYO!
965デフォルトの名無しさん:2006/06/14(水) 11:23:02
67代目
966デフォルトの名無しさん:2006/06/14(水) 11:46:38
↓ちょっと、あんた、クイックイッとすぐにクイックソートのソースを書いてみてよ
967デフォルトの名無しさん:2006/06/14(水) 12:00:07
ちょっとデフラグしてくる
髪に祈っててくれ
968デフォルトの名無しさん:2006/06/14(水) 12:04:45
どうか禿げませんように。
969デフォルトの名無しさん:2006/06/14(水) 12:26:40
デフラグオワタ\(^o^)/いい感じ♪
970デフォルトの名無しさん:2006/06/14(水) 13:21:53
>>841
いえ、ここは勉強になるのでよく来てます
まだ見ていました。

質が悪いというのは同感w
講義でもたいした説明はありませんでしたし、
C言語初心者クラスなのに、、、

それはともあれ
どうもありがとうございました
参考にさせていただきます
971デフォルトの名無しさん:2006/06/14(水) 13:24:08
もっと良い感じ、スッキリする方法があるよ。フォーマット・・・
いや、なんでもない。外付けHDDにでもデータを移して
システム(OS)を稼動させるディスクを空けやすくしておくと良いYO!
972デフォルトの名無しさん:2006/06/14(水) 14:04:38
へーあっそ、
973デフォルトの名無しさん:2006/06/14(水) 14:34:24
すいません、このソースどうしてもコンパイル出来ないんですが…

#include <stdio.h>
#include <stdlib.h>
main(int argc,char **argv)
{FILE*fp;
charbuffer[20];
inti;
intc;
if(argc !=2)exit(0);
if(NULL==(fp=fopen(argv[1],"r")))
{
puts("\aFILEOPEN ERROR.\n");
exit(-1);
}
for(i=0;i<0x7fff;++i)
{
gets(buffer);
if((buffer[0]=='e') || (buffer[0]=='E'))break;
c=fgetc(fp);
printf(" No. %08d\n",i);
printf(" ===> characterdata id : %c\n",c);
printf(" ===>_ptr is : %08lx\n", fp->_ptr);
printf(" ===>*_ptr is : %02x\n", *fp->_ptr);
printf(" ===>_cnt is : %04x\n", fp->_cnt);
printf(" ===>_base is : %08lx\n", fp->_base);
printf(" ===>*_base is : %02x\n",*fp->_base);
printf(" ===>*_flag is : %02x\n", fp->_flag);
printf(" ===>*_file is : %02x\n\n", fp->_file);
      }
fclose(fp);
}
975デフォルトの名無しさん:2006/06/14(水) 14:53:20
>>974
全角スペースが入っているわ、int で宣言するときに変数に指定している文字とintを
くっつけているわ、ボロボロだな。それ以外のコンパイルエラーは中身の問題。
976デフォルトの名無しさん:2006/06/14(水) 15:19:22
>>974
えらいことになってるね
977デフォルトの名無しさん:2006/06/14(水) 15:24:44
誘導

C言語/C++言語の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/
978974:2006/06/14(水) 15:32:51
>>975
>>976

いや、そのボロボロなのはコピペ時に改行制限に引っ掛かって
やむなくあちこち打ち直した事によるものなのです
こちらが疑問視しているのはそれらを訂正した後に出てくるエラーの
問題で、_ptrがメンバーでない云々と出てきてばかりで解決出来ず
悩んでいるのはそこなのです

このソースはアスキー刊「実習C言語」からのものです
図書館から勉強用に借りてきたのですが版が1990年刊のものと古く、
内容的にも現在のCの規格と合わざる所があるかもしれませんが
とりあえずはこれで勉強していたわけです
で、このソースにぶつかったらコンパイル出来なくてつまづいたと
そう言う事です
どこか訂正すればコンパイル出来るのでは、今はそう思うのですが
そこはどうでしょうか
979デフォルトの名無しさん:2006/06/14(水) 15:38:24
>>978
_ptr < これが謎
980デフォルトの名無しさん:2006/06/14(水) 15:41:02
>>978
標準ではFILEが何かは規定されていない。
そのコードはFILEが構造体で、_ptr, _cnt, _base, _flag, _fileというメンバを持っていることを前提にしているから
そうでない環境でエラーになるのは当然。
981974:2006/06/14(水) 15:53:00
ああ、そうでしたか
そうなりますとおかしいのは本の側と言う事になりますね
実はこのソースを載せたページの辺りを読んでもろくな説明がなく、
そしてそのまま次へ進んでしまっているんですよ
コンパイル出来なくて当然ですね
どうやらあれは糞本だったようです
現在刊行されている同書はその辺り補足していろいろ書かれているかも
知れませんが、今手元にある本は理解には役に立たないものと言えそうですね
大体これで納得出来ました
ありがとうございます
982デフォルトの名無しさん:2006/06/14(水) 16:02:50
983デフォルトの名無しさん:2006/06/14(水) 16:15:58
  ↑
おっかしいなー、こちらが持っているのは
1990年刊で三田典玄が著者なんですよね
同じ本なのはわかるけど何かの事情で変わったのかな??
984デフォルトの名無しさん:2006/06/14(水) 16:16:25
>新装版
985762:2006/06/14(水) 16:23:53
>>763
遅いレスでごめんなさい。
是非ソースを頂きたいです。
図々しいですが、よろしくお願いします。
986デフォルトの名無しさん:2006/06/14(水) 16:46:30
>>977
過去スレ一覧に引っかからないと何度言ったら理解できるんだ?
987デフォルトの名無しさん:2006/06/14(水) 16:52:25
988デフォルトの名無しさん:2006/06/14(水) 17:05:00 BE:31056544-#
>>986
過去スレ一覧に引っかからないと何か問題でもあるのか?
どうせ誰も過去スレなんか見ないだろが。
989デフォルトの名無しさん:2006/06/14(水) 17:14:33
>>988
いや、そもそも。
・スレタイが微妙に異なる
・今からじゃスレの版数が合わない
の2点で却下だ。
使う理由は無い、いずれdat落ちするんだから放っておけば良い。
990デフォルトの名無しさん:2006/06/14(水) 17:20:14
>>1 訂正

【前スレ】
C/C++の宿題を片付けます 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149350525/
991デフォルトの名無しさん:2006/06/14(水) 17:21:45
すまん、誤爆ったorz

【次スレ誘導】
http://pc8.2ch.net/test/read.cgi/tech/1150273052/
992デフォルトの名無しさん:2006/06/14(水) 17:39:33
>>981
> そうなりますとおかしいのは本の側と言う事になりますね

おかしいのではなく、環境依存であると言う事。
993デフォルトの名無しさん:2006/06/14(水) 17:40:03
>>986
ここのスレもいずれ消滅するし、
>>977に書かれている過去ログもここの>>1の過去ログも
次スレに移行してしまえば特に意味はない。
だからここで最後の最後まで質問する人を残さず
すぐに誘導した方が良いし、消化しきれていないスレに誘導してもなんら問題ないよ。
994デフォルトの名無しさん:2006/06/14(水) 17:47:30
FILEの中身に依存するのは十分おかしいと思うが。
995デフォルトの名無しさん:2006/06/14(水) 17:55:42
>>993
>>977に誘導するのではなく、
>>977から>>991に誘導すれば済む話。
996デフォルトの名無しさん:2006/06/14(水) 18:02:56 BE:34937892-#
>>989
スレタイが微妙に異なると何か問題でもあるのか?
版数がずれてると何か問題でもあるのか?

どうせ誰も過去ログ見ないんだからタイトルの微妙な違いだの版数だのを気にしても
意味がない。
997デフォルトの名無しさん:2006/06/14(水) 18:04:22
>>994
昔の本なんだし、DOS全盛の頃と見えるから、
Unixを対象に入れていないならおかしくもなんともないと思う。
ttp://www.kumei.ne.jp/c_lang/intro/no_18.htm
998デフォルトの名無しさん:2006/06/14(水) 18:09:44
>>996
元々イレギュラーに建ったスレなんざ利用するまでもない、というポリシーに基づくまで。
999デフォルトの名無しさん:2006/06/14(水) 18:22:20 BE:23292634-#
>>998
2chには「出された物は残さず食べる」というグローバルポリシーがあるわけだが。
1000デフォルトの名無しさん:2006/06/14(水) 18:30:35
C++皆でガンバって考えましょうね
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。