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

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

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

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

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

【前スレ】
C/C++の宿題を片付けます 100
http://pc11.2ch.net/test/read.cgi/tech/1195668114/
2デフォルトの名無しさん:2007/12/09(日) 04:00:51
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):0<=x<=π,においてy=sinx+1/3sin3x で囲まれた面積をモンテカルロ法を用いて求めよ。
1.発生させる乱数をキーボードから出力できるようにせよ
2.解析解を求め、その関数を数学関数を用いて計算せよ。
3. 解析解との誤差の絶対値を求めよ。
4.発生させる乱数を10,100個でそれぞれ求めるとする。
5.次の項目をディスプレイに表示できるようにせよ。
a.発生させた乱数の数
b.条件を満たした乱数の数
c.モンテカルロ法によって求めた解
d.解析によって求めた解
e.解析解とモンテカルロ法による解との誤差
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 2.0
 [3.3] 言語: C
[4] 期限: ([2007年12月17日まで]
[5] その他の制限:
3デフォルトの名無しさん:2007/12/09(日) 05:00:37
おお、 gcc 2.0!
一応本家に行くとソースを入手できますね。
タイムスタンプが 1992/2/22 になってます!
対応する Linux のカーネルは 1992/3 で 0.95 ですね。
4デフォルトの名無しさん:2007/12/09(日) 07:22:22
しかもキーボードから出力か…とてつもない難題だな。
5デフォルトの名無しさん:2007/12/09(日) 07:42:54
6デフォルトの名無しさん:2007/12/09(日) 09:28:41
>>2
面積を求める領域が囲まれていないのでわかりません!

文脈的にx=0, x=牌はいいとして、yなんだが、
y=sinx+1とy=3sin3xでいいのかえ?
7 ◆hbhxTQ.DpY :2007/12/09(日) 09:31:54
(問題)
コマンド選択で,0) 終了,1) 追加,2) 検索(id),3) リスト表示,4) 変更 5) 削除 6) 特殊機能 が行える学生成績管理プログラムを作成する.
データは,学生の番号 名前 GP 総単位数 の形式で学生のデータを持っているファイルとする.

上の機能ルーチンは,全て関数として作成すること.
ただし,追加と検索は実装済みである.


各自で考えたオリジナルの特殊機能を作成すること.
特殊機能の例として

ソート
検索
平均

などがある.

プログラム内部の動作説明を500文字程度で行うこと.
また特殊機能の説明をすること.

一応ここまでは検索までは作れたんですが。。。
次のリストから全然わからないんです、どうか助けてくださいお願いします。
8デフォルトの名無しさん:2007/12/09(日) 09:34:22
>>7
テンプレ嫁。あと「追加と検索が実装済み」なんだからソース出せ。
9 ◆hbhxTQ.DpY :2007/12/09(日) 09:47:55
>>8
失礼しました・・・
[1] C言語
[2] (問題)
コマンド選択で,0) 終了,1) 追加,2) 検索(id),3) リスト表示,4) 変更 5) 削除 6) 特殊機能 が行える学生成績管理プログラムを作成する.
データは,学生の番号 名前 GP 総単位数 の形式で学生のデータを持っているファイルとする.

上の機能ルーチンは,全て関数として作成すること.
ただし,追加と検索は実装済みである.


各自で考えたオリジナルの特殊機能を作成すること.
特殊機能の例として ソート 検索 平均
などがある.

プログラム内部の動作説明を500文字程度で行うこと.
また特殊機能の説明をすること.

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 2007年12月10日中
[5] その他の制限
10 ◆hbhxTQ.DpY :2007/12/09(日) 09:50:47
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct student{
int id;
char name[25];
int gp;
int credit;
};
void add(char *, struct student);
int search(char *, struct student *);
main(int argc,char *argv[])
{
FILE *fp;
int i = 0;
int num;
struct student students;
if(argc == 1){
printf("set filename\n");
return 1;
}
while(1) {
printf("1)add 2)search 0)quit ");
scanf("%d",&num);
if(num == 0)
break;
if(num == 1) {
printf("id name gp credit ? ");
scanf("%d %s %d %d", &students.id, students.name, &students.gp, &students.credit);
add(argv[1], students);
}
11 ◆hbhxTQ.DpY :2007/12/09(日) 09:54:20
if(num == 2) {
printf("id ? ");
scanf("%d", &students.id);
if(search(argv[1],&students)){
printf("%d %s %d %d\n", students.id, students.name, students.gp, students.credit);
}else{
printf("ID %d Not Found.\n",students.id);
}}}}
void add(char *filename, struct student students)
{
FILE *fp;
if((fp = fopen(filename, "a")) == NULL){
printf("can't open %s\n", filename);
exit(1);
}
fprintf(fp,"%d %s %d %d\n", students.id, students.name, students.gp, students.credit);
fclose(fp);
}
12 ◆hbhxTQ.DpY :2007/12/09(日) 09:55:08
int search(char *filename, struct student *students)
{
FILE *fp;
int id;
char name[25];
int gp;
int credit;
if((fp = fopen(filename, "r")) == NULL){
printf("can't open %s\n", filename);
exit(1);
}
while(fscanf(fp,"%d %s %d %d", &id, name, &gp, &credit) != EOF) {
if(id == students->id){
students->id = id;
strcpy(students->name ,name);
students->gp = gp;
students->credit = credit;
return 1;
}}
return 0;
fclose(fp);}

以上が実装済みのプログラムです。よろしくお願いします。
13デフォルトの名無しさん:2007/12/09(日) 12:16:25
2の者です。yの範囲は、0<=y<=1でy=sinx+3分の1sin3xでお願いします。
14デフォルトの名無しさん:2007/12/09(日) 12:29:59
>>13
それじゃだめだが?x = 2/3πだとどうなる?
15デフォルトの名無しさん:2007/12/09(日) 13:30:59
まともな宿題かもーん
16デフォルトの名無しさん:2007/12/09(日) 14:06:04
[1] プログラミング演習DS
[2] DQ9の致命的なバグを修正せよ
[3] 環境
 [3.1] OS: WindowsXP SP2
 [3.2] VC6.0
 [3.3] C++
[4] 期限: 今年度中
[5] その他の制限: ハードウェアが貧弱なのでCPU,メモリはあまり使わないで下さい
172の者です:2007/12/09(日) 14:06:23
x=2/3πでもyの範囲をちゃんと満たしていますが。
18デフォルトの名無しさん:2007/12/09(日) 14:17:03
y=(sinx)+(1/3sin3x)か。
y=(sinx+1)/(3sin3x)だと思った。
19デフォルトの名無しさん:2007/12/09(日) 14:32:01
[1] 授業単元プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5432.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/11
[5] その他の制限: 特になし
お願いします。
20デフォルトの名無しさん:2007/12/09(日) 14:53:38
21デフォルトの名無しさん:2007/12/09(日) 15:04:05
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):()

文字列 S が「(k,l) 繰り返し」であるとは,長さ l の文字列 T があって
S = T T ... T (k 回の繰り返し)となることをいう.
たとえば S = abaabaabaaba は 4 回 aba が繰り返しているので
(4,3) 繰り返しである( (2,6) 繰り返しでもある ).

a と b だけからなる長さ N ≦ 30000 の文字列 S が与えられる.
その中の (k,l) 繰り返しであるような部分文字列の中で,
もっとも k が大きなものを求めよ(k だけ出力すればよい).

例:S = bbabaabaababb のとき 3 文字目から (4,3) 繰り返しが
あり,それより k が大きな繰り返しは無いので, 4 と出力する.

[3] 環境
 [3.1] OS: 問わず
 [3.2] コンパイラ名とバージョン: 問わず
 [3.3] 言語: どちらでも可
[4] 期限: 12月12日
[5] その他の制限: 特になし
22デフォルトの名無しさん:2007/12/09(日) 15:16:16
>>19
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5444.txt
>>20に先越されたが……scanfだけで頑張ってみた


ところでうpろだでcファイルを上げてもtxtになっちゃうんだが、
拡張子が.cのままで上げてる人はどうやってるの?
23デフォルトの名無しさん:2007/12/09(日) 15:18:42
>>982
前のスレに書きました
これもよろしくお願いします
24デフォルトの名無しさん:2007/12/09(日) 15:19:32
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):

名前、身長、体重、視力(視力構造体)これらのデータをメンバとする構造体を定義し、入力と表示を行うプログラムを作成してください。
入力件数は最大5件で、名前は19文字までの入力とし、範囲外だったならばエラーメッセージを表示し再入力させてください。
名前に”END”が入力された時は入力終了とします。
表示は身長で昇順にソートして出力してください。
また身長、体重は、小数点以下第一位までの表示とします。視力は、小数点以下第三位までの表示とします。
出力の幅は、名前が19文字分、そのほかは5文字分で指定してください。
視力は右、左をメンバとする構造体で扱ってください。
1件分の入力はinput_data()で、表示はdisplay_data()で、ソートはsort_data()でと処理を関数に分けて行ってください。
名前入力の最初に”END”が入力された場合は、その旨のメッセージを出力してください。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
 [3.3] 言語:C
[4] 期限:特になし
[5] その他の制限:よろしくお願いします。
25デフォルトの名無しさん:2007/12/09(日) 15:26:56
>>20
>>22さんありがとうございます。
26デフォルトの名無しさん:2007/12/09(日) 15:34:37
>>22
Linux上のFirefoxから上げるとデフォルトで.cになる
多分MIMEタイプの違い
27デフォルトの名無しさん:2007/12/09(日) 15:51:39
>>26
なるほど……わざわざサンクス
28デフォルトの名無しさん:2007/12/09(日) 16:07:59
>>24
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5446.c

入出力の形式がよくわからんかったから適当に
2921:2007/12/09(日) 16:24:21
>>21
例が一つ短かったので訂正.bbabaabaabaababb → 4
30デフォルトの名無しさん:2007/12/09(日) 16:56:51
>>21
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5450.txt

とりあえず例示された物で適切に動くことは確認しましたが、適当に作りましたのでどっかバグがあるやも。
というか単純に作ったので30000文字なんて入れたら時間かかるかも。
31デフォルトの名無しさん:2007/12/09(日) 17:41:05
>>28
ありがとうございます!!
32デフォルトの名無しさん:2007/12/09(日) 17:48:20
>>21
すまん、あまりに遅すぎたんでちょっと直した
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5451.txt

一箇所変えただけで、>>30のやつじゃ終わる気配のなかった約30000文字・23繰り返しが数秒で終わって、
我ながらわらたw
33デフォルトの名無しさん:2007/12/09(日) 18:08:32
current_len <= len/2でよさそうな予感
34デフォルトの名無しさん:2007/12/09(日) 18:27:42
指摘されたのを訂正しました。よろしくお願いします。
[1] 授業単元:C言語
[2] 問題文:0<=x<=π,0<=y<=1においてy=(sinx)+(1/3sin3x) で囲まれた面積をモンテカルロ法を用いて求めよ。
1.発生させる乱数をキーボードから出力できるようにせよ
2.解析解を求め、その関数を数学関数を用いて計算せよ。
3. 解析解との誤差の絶対値を求めよ。
4.発生させる乱数を10,100個でそれぞれ求めるとする。
5.次の項目をディスプレイに表示できるようにせよ。
a.発生させた乱数の数
b.条件を満たした乱数の数
c.モンテカルロ法によって求めた解
d.解析によって求めた解
e.解析解とモンテカルロ法による解との誤差
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 2.0
 [3.3] 言語: C
[4] 期限: ([2007年12月17日まで]
[5] その他の制限:
3532:2007/12/09(日) 19:09:08
>>33
それだと繰り返しが0か1かの判別が…………て何言ってんだ俺orz
そうですよね最低1は繰り返しがあるからそれで充分ですよね
依頼者さん直しといて……
36デフォルトの名無しさん:2007/12/09(日) 19:21:17
>>21は宿題とかじゃなくて、住民暇つぶし用問題じゃなかったのか?
37デフォルトの名無しさん:2007/12/09(日) 20:13:39
[1] 授業単元: c
[2] 問題文(含コード&リンク): 自己参照型構造体(リスト)を使ってキューを実装し、
以下の操作を行った結果取り出された値を画面に出力しなさい。

1 を追加 2 を追加 3 を追加 4 を追加 取り出し 取り出し
5 を追加 6 を追加 7 を追加 取り出し 8 を追加 取り出し
9 を追加 10 を追加 取り出し 取り出し 取り出し 取り出し
取り出し 取り出し(終了)
【ヒント】
作成した構造体型はtypedefを使って
新しいデータ型として定義しなさい。

キューの要素を指すポインタ(qhead、qtail)は
(簡単のため)グローバル変数で用意しなさい。

作成する関数は、初期化、エンキュー、デキューの3種類とする。
デキューの際に取り出された値を画面に出力すること。

 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VS2005
 [3.3] 言語: c
[4] 期限: 12/13まで
[5] その他の制限: マクロはできる限りなしで
38デフォルトの名無しさん:2007/12/09(日) 20:15:40
[1] 授業単元: c
[2] 問題文(含コード&リンク): 配列を使ってリングバッファを実装し、
以下の操作を行った結果取り出された値を画面に出力しなさい。

1 を追加 2 を追加 3 を追加 4 を追加 (*)
取り出し 取り出し 5 を追加 6 を追加 (*)
7 を追加 取り出し 8 を追加 取り出し (*)
9 を追加 10 を追加 取り出し 取り出し (*)
取り出し 取り出し 取り出し 取り出し (*) (終了)
【ヒント】
作成する関数は、初期化、キューの表示、エンキュー、デキューの4種類とする。
デキューの際に取り出された値を画面に出力すること。
また(*)がついた処理の後に、キューの表示を実行すること。

 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VS2005
 [3.3] 言語: c
[4] 期限: 12/13まで
[5] その他の制限: マクロはできる限りなしで
39 ◆TZgwZqWdYc :2007/12/09(日) 20:21:12
[1] 授業単元:コンピュータとプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5452.txt
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限:2007年12月10日00:30まで
[5] その他の制限:

宜しくお願いします。
40デフォルトの名無しさん:2007/12/09(日) 20:34:09
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):ヒープ木を作成、降順でデータを出力 #define MAXSIZE 100;
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C/C++どちらでも可
[4] 期限: 2007年12月09日23:30まで
[5] その他の制限: 特にありません

お願いします
41デフォルトの名無しさん:2007/12/09(日) 23:37:50
>>40
#include <stdio.h>
#define MAX_SIZE 100
#define swap(x, y) do{x ^= y; y ^= x; x ^= y;}while(0)
void make_heap(int *heap, int top, int last){
  if(2*top + 2 > last) ;
  else if(2*top + 1 > last && heap[top] > heap[2*top + 1])
    swap(heap[top], heap[2*top + 1]);
  else if(heap[2*top + 1] <= heap[2*top + 2] && heap[top] > heap[2*top + 1])
    swap(heap[top], heap[2*top + 1]);
  else if(heap[top] > heap[2*top + 2]) swap(heap[top], heap[2*top + 2]);
}
void heap_sort(int *heap, int n){
  int i, j;
  for(i = n - 1; i > 0; i--){
    for(j = (i - 1)/2; j >= 0; j--) make_heap(heap, j, i);
    swap(heap[0], heap[i]);
  }
}
void print_ary(int *heap, int n){
  int i;
  for(i = 0; i < n; i++) printf("%d ", heap[i]);
  printf("\n");
}
int main(void){
  int heap[MAX_SIZE], i, n = 0;
  while(n < MAX_SIZE && scanf("%d", &heap[n]) == 1) n++;
  print_ary(heap, n);
  heap_sort(heap, n);
  print_ary(heap, n);
  return 0;
}
42デフォルトの名無しさん:2007/12/10(月) 00:29:31
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):RDBの射影、選択、結合を実行するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 
 [3.3] 言語: どちらでも可
[4] 期限: 2007年12月12日
[5] その他の制限:なし
お願いします。
43デフォルトの名無しさん:2007/12/10(月) 00:29:35
>>38
#include <stdio.h>
#define QSIZE 16
static int queue[QSIZE], top = 0, last = 0;
void init_queue(void){
  int i;
  for(i = 0; i < QSIZE; i++) queue[i] = -1;
}
void enqueue(int no){if(queue[top] == -1) queue[top] = no, top = (top + 1)%QSIZE;}
int dequeue(void){
  int ret;
  if(queue[last] == -1) return -1;
  ret = queue[last];
  queue[last] = -1;
  last = (last + 1)%QSIZE;
  return ret;
}
void print_queue(void){
  int i;
  for(i = 1; i <= QSIZE && queue[(top-i+QSIZE)%QSIZE] != -1; i++)
    printf("%2d ", queue[(top-i+QSIZE)%QSIZE]);
  printf("\n");
}
int main(void){
  init_queue();
  enqueue(1); enqueue(2); enqueue(3); enqueue(4); print_queue();
  dequeue(); dequeue(); enqueue(5); enqueue(6); print_queue();
  enqueue(7); dequeue(); enqueue(8); dequeue(); print_queue();
  enqueue(9); enqueue(10); dequeue(); dequeue(); print_queue();
  dequeue(); dequeue(); dequeue(); dequeue(); print_queue();
  return 0;
}
44デフォルトの名無しさん:2007/12/10(月) 00:33:27
>>39
眠くなったからQ1,2だけ書いとく

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

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

3やってないのはごめんな
Q2に他のソート方法入れれば出来るだろうからがんばってみてくれ

それじゃ、俺は寝る
4539:2007/12/10(月) 00:39:45
眠い中感謝です。
ありがとうございます。
46デフォルトの名無しさん:2007/12/10(月) 00:53:19
47デフォルトの名無しさん:2007/12/10(月) 00:59:23
48 ◆RvP8FSkL1Q :2007/12/10(月) 01:02:38
内容:
[1] 授業単元:c++基礎
[2] 問題文
  1: 1000以下の素数をかぞえるプログラムを作り
     そのプログラムについて実行時間をTIME、timeのそれぞれ方法で測定しなさい。
     ただし、TIME、timeの精度はそれぞれ1桁、2桁とする。また、そのプログラムをコンパイルしたコマンドを用い、
     サンプルプログラムに手を加えてはいけない。つまり、この評価ではプログラムをメモリに読み込む時間も含まれる。
     2つの方法の実行時間を比較し、どちらが早いか答えよ
  2:second.exeの応答時間を測定せよ。なお、有効数字は2桁とする
  3:起動時間を有効数字2桁まで測定するプログラムを作り、1で作ったプログラムの一部(外側のfor文全体)の起動時間を測定せよ
    
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2007年12月11日23:59まで]

よろしくお願いします

49デフォルトの名無しさん:2007/12/10(月) 07:04:39
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5432.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/12
[5] その他の制限:なし
50デフォルトの名無しさん:2007/12/10(月) 08:38:37
[1] 授業単元: C++
[2] 問題文:

何個の整数を入力したいか自由に選べる、またその個々の整数も自由に選べる
入力された個々の整数のうち、その最大の整数を見極められる
入力された整数の合計を計算できる
上記のプログラムを最大で5回繰り返す事ができる

例:
何個の整数を入力しますか?: 7個
整数を入力して下さい: 2 5 12 4 1 10 8
最も大きい整数は 12 です。
合計は 42 です。
繰り返しますか?: いいえ

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限: 早めでお願いします
[5] その他の制限:C言語未習、C++でお願いします
51デフォルトの名無しさん:2007/12/10(月) 08:59:52
>>50
#include <cstdio>
using namespace std;

int main(){
int c,n,m,s,i,j;

for(i=0; i<5; ++i){
printf("何個入力する?>");
scanf("%d",&c);
for(j=s=m=0; j<c; ++j){
scanf("%*c%d",&n);
if (n>m) m=n;
s+=n;
}
printf("最大の数は%d、合計は%dです!\nもう一回やりますか?(y/n)",m,s);
while((c=getchar())!='y' && c!='n');
if(c=='n') break;
}
return 0;
}
52デフォルトの名無しさん:2007/12/10(月) 09:21:37
>>51
素早い解答ありがとうございます
53デフォルトの名無しさん:2007/12/10(月) 09:54:51
感謝されるとは思わなかった
54デフォルトの名無しさん:2007/12/10(月) 10:43:33
[1]プログラミング入門
[2]正の整数nをキーボードから読み込んで、1からnまでの数の和を、
再帰を使って計算するプログラムをつくりなさい。
ヒント:1からnまでの数の和をS(n)とすると、S(n)=S(n-1)+n

[3.1]windous
[3.3]C
55デフォルトの名無しさん:2007/12/10(月) 10:49:59
34の問題解ける人いませんか?
56デフォルトの名無しさん:2007/12/10(月) 11:13:09
>>55
C++ならやったのに
ちなみに>>34の5だけで良いんだよね?
57デフォルトの名無しさん:2007/12/10(月) 11:22:47
>>54
#include<stdio.h>
int main(int c,int n){
return c>0?scanf("%d",&n),printf("%d\n",main(0,n)):n+(n==0?0:main(0,n-1));
}
58デフォルトの名無しさん:2007/12/10(月) 11:27:41
>>34,55
>1.発生させる乱数をキーボードから出力できるようにせよ
意味不明.
59デフォルトの名無しさん:2007/12/10(月) 11:43:46
↑そこはただprintfとscanfを使って表せればいいみたいです。
60デフォルトの名無しさん:2007/12/10(月) 11:45:42
>>57
こういう場合て最初のcとnには何が入ってるの?
61デフォルトの名無しさん:2007/12/10(月) 12:32:10
>>34
強引に積分したものが解析解と思ったけど、cosec(0)がやばい。
解析解についてもっと詳しく。
62デフォルトの名無しさん:2007/12/10(月) 13:43:35
(sin3x)/3
なんだろ
そのままだと発散してるし
63デフォルトの名無しさん:2007/12/10(月) 13:46:09
cos(nx)の微分-n sin(nx)だから

(sin3x)/3の積分は-cos(3x)
64デフォルトの名無しさん:2007/12/10(月) 13:54:30
符号間違えたか
65デフォルトの名無しさん:2007/12/10(月) 13:59:04
cos(x)の微分ってどう求めるんだっけ?
極限値求めればいいはずだけど・・・

e(ix) = cos(x) + i sin(x)を使えば
左辺は、i e(ix) だから-sin(x) + i cos(x)と等しい

右辺の微分と比較すれば、cos(x)の微分= -sin(x)
符号は合ってるか
66デフォルトの名無しさん:2007/12/10(月) 14:43:09
>>60
c,nは引き数された値が格納されてる
67デフォルトの名無しさん:2007/12/10(月) 14:54:24
>>34
とりあえず 1 だけやってみた。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <linux/kd.h>
int main(void){
srand(time(NULL));
ioctl(0,KDSETLED,(char)((double)rand()/RAND_MAX*8));
return 0;
}
これ、 X window system 上では動かない。コンソールだけ。
X でやりたい場合は XkbSetDeviceLedInfo という関数を使うようだ。
で、gcc 4.1.3, Linux 2.6.22 でしか試してないので、 gcc 2.0 で動くかど
うか試してみて。
68デフォルトの名無しさん:2007/12/10(月) 15:41:30
[1] 授業単元:プログラム言語2下記
[2] 問題文(含コード&リンク):(下記にかきます)
[3] 環境
 [3.1] OS: (/Linux/)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([2007年12月11日17:00まで] )
[5] その他の制限: (Cプリプロセッサ→ファイル操作ぐらいまで)
69デフォルトの名無しさん:2007/12/10(月) 15:43:20
課題 A:以下のプログラムをもとに,標準入力 (キーボード) から2つの品物の原価を受け取り (scanf を用いて整数を int 型の変数に読み込む),
 @合計金額に対する消費税の値 A2つの品物の商品価格 
を表示するプログラムを作成する.ただし,
* defineを使って消費税を5%と定義する.
* defineを使って消費税を求める関数形式マクロTAXを定義する.
* defineを使って商品価格を求める関数形式マクロPRICEを定義する.
* 以下のプログラムの各行にコメントを付加して,プログラムを完成させること.

#include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */
??????
int main(void)
{
int x,y;
printf("Input an integer x: ");
scanf("%d", &x);
printf("Input an integer y: ");
scanf("%d", &y);
printf("tax of x+y: %d \n", ??????);
printf("price of x+y: %d \n", ??????);
return 0;
}
70デフォルトの名無しさん:2007/12/10(月) 15:44:25
68ー69

どうかよろしくお願いします
71デフォルトの名無しさん:2007/12/10(月) 17:47:44
#include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */
#define MACRO_BAKA 0.05
#define TAX( X ) (int)( (X) * MACRO_BAKA )
#define PRICE( X ) (int)( (X) + TAX( X ) )

/*不用意にマクロ関数を使うような奴はくず*/
int my_tax( int x ){ return x * 0.05 ; }
int my_price( int x ){ return x + my_tax( x ) ; }

int main(void)
{
int x,y;
printf("Input an integer x: ");
scanf("%d", &x);
printf("Input an integer y: ");
scanf("%d", &y);
printf("tax of x+y: %d \n", my_tax( x + y ));
printf("price of x+y: %d \n", my_price( x + y) );
return 0;
}
72デフォルトの名無しさん:2007/12/10(月) 18:31:13
むやみに関数使うなよ。
オーバヘッド発生して遅くなるしスタックがもったいない。
73デフォルトの名無しさん:2007/12/10(月) 18:39:29
今時のパソコンでこの程度のオーバーヘッド気にするとか……生きろ
74デフォルトの名無しさん:2007/12/10(月) 19:29:06
>>72
マクロ関数程度ではあんまりないけど、
インライン展開をやたらすると、
コードが肥大化し遅くなるってのはある。

というわけで、あなたが”むやみ”と注釈つけたように、
”不用意に”と書いてあるw
75デフォルトの名無しさん:2007/12/10(月) 19:49:10
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5463.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/12
[5] その他の制限:なし
お願いします。
76#:2007/12/10(月) 20:36:25
[1] 授業単元: C++
[2] 問題文(含コード&リンク):・sizeという基本クラスを作成する。
・このクラスのメンバ関数として、getsize()関数を、純粋仮想関数として定義する
・図形の1つの寸法をあらわすrを、このクラスのメンバとする。
・sizeクラスを継承した派生クラスとして、circleクラス、sphereクラスを作成する
前者は円の面積を、後者は球の体積を返すように、getsize関数を再定義(オーバーライド)
・動作確認のmain()関数も含めて作成せよ
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限: [無期限]
[5] その他の制限: なし
77デフォルトの名無しさん:2007/12/10(月) 20:50:35
今アルゴリズムのバブルソートの試験勉強をやってるんですが
ちなみにC言語です
#include<stdio.h>
#define N 5
void main(void){
int i,j,data[N]={50,30,10,20,40},tmp,count=0;
printf("整列する前は\n");
for(i=0;i<N;i++)
printf("%d\n",data[i]);
for(i=N-2;i>=0;i--){   なんでここがi=N-2になるのかがわかりません><
for(j=0;j<=i;j=j+1){
if(data[j]>data[j+1]){
tmp=data[j];
data[j]=data[j+1];
data[j+1]=tmp;
count++;
}
}
}
printf("整列した後は\n");
for(i=0;i<N;i++){
printf("%d\n",data[i]);
}
printf("比較回数は%d回です。",count);
}
誰かよろしくお願いします><
78デフォルトの名無しさん:2007/12/10(月) 20:55:08
>>76
>図形の1つの寸法をあらわすr
これの意味が分からん。
79デフォルトの名無しさん:2007/12/10(月) 20:57:07
>>77
わからない理由はプログラムをちゃんと追えてないからでしょう。
紙に 50,30,10,20,40 って書いてプログラム通り自分で手作業でやってみれば?
8077:2007/12/10(月) 21:12:18
>>79
すみませんやってみたんですけどなにがなんだか・・・
ifのとこにiが代入されたときiは3になりますよね?
なんで3なんですか?
81デフォルトの名無しさん:2007/12/10(月) 21:14:39
>>80
data[3] はいくつになるのかな?
8277:2007/12/10(月) 21:17:39
20ですよね?
83デフォルトの名無しさん:2007/12/10(月) 21:19:02
>>82
で、わからないの?「if のとこ」が理解できればわかるはずなのだが
8477:2007/12/10(月) 21:20:52
わかりません><
すみません理解できてないみたいです・・・・
85デフォルトの名無しさん:2007/12/10(月) 21:31:17
>>84
N-1だったら、どこかで都合悪くなるはず
一行ずつ変数の状態を全て列挙して、流れを追ってみ
86デフォルトの名無しさん:2007/12/10(月) 21:34:24
横入り失礼。
i が 3 の時、j のループで、j と j + 1 がいくつになるかがわかれば、
わかるんじゃね?
87デフォルトの名無しさん:2007/12/10(月) 21:39:20
わかりました!みなさんありがとうございました
88デフォルトの名無しさん:2007/12/10(月) 21:42:55
>>78
円と球って言ってんだから半径だろ
89デフォルトの名無しさん:2007/12/10(月) 21:49:44
getsize()が、片方は面積を返して、もう片方は体積を返す。

そんな実装でいいのかああぁぁぁぁぁ!!!
90デフォルトの名無しさん:2007/12/10(月) 21:54:27
数学屋か物理屋で良い悪いが変わりそうだな。
無名数を取り扱う数学屋だったら、良いって言いそう。
91デフォルトの名無しさん:2007/12/10(月) 23:06:23
[1] 授業単元:プログラム言語2
[2] 問題文(含コード&リンク):
以下のプログラムを完成させて、8×8の迷路を作成し
  その迷路を解き、表示させるプログラムにしなさい。
  (コメントはヒントである。主にコメントのところを完成
   させれば、それなりのものになるはず。)
※つづけてプログラム書かせていただきます。。

[3] 環境
 [3.1] OS: (/Linux/)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([2007年12月12日10:30まで] )
[5] その他の制限: なし
92デフォルトの名無しさん:2007/12/10(月) 23:10:43
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int x;
int y;
struct node *next;
} MyList;
typedef struct rm {
int up;
int down;
int right;
int left;
int mark;
} Room;

93デフォルトの名無しさん:2007/12/10(月) 23:12:49
#define maze_h 8
#define maze_w 8
Room maze[maze_h+1][maze_w+1];
//迷路の開始はmaze[0][0]で目的地はmaze[maze_h-1][maze_w-1]
//0だと通れる 0以外だと壁がある。
void printmaze(){
int i,j;
for(j=0;j<maze_w;j++){printf("+-");}printf("+\n");
for(i=0;i<maze_h;i++){
for(j=0;j<maze_w;j++){
if(maze[i][j].left==0)printf(" ");else printf("|");
if(maze[i][j].mark==0)printf(" ");else printf("@");
}
printf("|\n");
for(j=0;j<maze_w;j++){
if(maze[i][j].down==0)printf("+");else printf("+-");
}
printf("+\n");
}
printf("\n");
}

94デフォルトの名無しさん:2007/12/10(月) 23:13:57
MyList *solveMaze(int cur_x, int cur_y){
MyList *tmp; MyList +tmpr;
maze[cur_x][cur_y].mark=1;
if(cur_x==maze_h-1 && cur\y==maze_w-1){
tmp=(MyList *)malloc(sizeof(MyList));
tmp->x=cur_x; tmp->y=cur\y; tmp->next=NULL;
return tmp;
}
//down
if(maze[cur_x][cur_y].down==0 && maze[cur_x+1][cur_y].mark==0){
tmpr=solveMaze(cur_x+1,cur_y);
if(tmp!=NULL){
tmp=(MyList *)malloc(sizeof(MyList));
tmp->x=cur_x; tmp->y=cur_y; tmp->next=tmpr;
return tmp;
}
}
//right
//up
//left
}
95デフォルトの名無しさん:2007/12/10(月) 23:16:03
int main(){
MyList *result;
//迷路の初期化(呼ぶ関数を作る)
//迷路の生成(呼ぶ関数を作る)
//迷路の表示
printmaze();
//迷路を解く(呼ぶ関数を作る)
result=solveMaze(0,0);
//結果の表示
while(result->next!=NULL){
printf("(%d,%d)",result->x,result->y);
result=result->next;
}
printf("\n");
//経路の表示
printmaze();
}
96デフォルトの名無しさん:2007/12/10(月) 23:18:08
長くなってしまいましたが、改行が多くて
いっぺんに書き込めないようで;;

迷路、ホント困ってます。。
よろしくおねがいします。
97デフォルトの名無しさん:2007/12/11(火) 00:02:53
長い時はうpろだって>>1に書いてあるのに・・・
良く読むと便利としか書いてないか。一度に書き込めない場合必須にするべきだな
98デフォルトの名無しさん:2007/12/11(火) 00:19:48
[1] 授業単元:Cプログラミング
[2] 問題文http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5467.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語:C
[4] 期限:2007年12月15日
[5] その他の制限:基礎の部分なので、簡単な関数しか習っていません。問題が多めですが、どうかお願いします。
99デフォルトの名無しさん:2007/12/11(火) 01:24:50
[1] 授業単元: C言語
[2] 問題文:時分秒の引き算
a時b分c秒からp時q分r秒までにかかる時間x時間y分z秒を計算させるプログラミングをつくってみましょう。
ただし、はじめの時間が終わりの時間より遅い場合は「正しい時間を入力してください」と表示するエラー処理をいれること。
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C
[4] 期限: 2007年12月11日の7時まで(今日の朝まで)
[5] その他の制限: 基礎的なことしか習っていなく、ifの組み方がわかりません。
時間があまりありませんが、よろしくお願いします。
100デフォルトの名無しさん:2007/12/11(火) 01:33:53
×基礎的なことしか習っていなく
○基礎的なことすら習っていなく
101デフォルトの名無しさん:2007/12/11(火) 01:40:01
>>100
まさにその通りです。
102デフォルトの名無しさん:2007/12/11(火) 01:45:18
>>101
開き直るなら別に宿題提出なんかしなくてもいいんじゃない?
103デフォルトの名無しさん:2007/12/11(火) 01:47:16
>>99
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

//a時b分c秒からp時q分r秒までにかかる時間x時間y分z秒
int main()
{
    int a,b,c ,p,q,r ,x,y,z;

    printf("はじめの時間を入力\n");
    printf("時:");
    scanf("%d", &a);
    printf("分:");
    scanf("%d", &b);
    printf("秒:");
    scanf("%d", &c);

    printf("おわりの時間を入力\n");
    printf("時:");
    scanf("%d", &p);
    printf("分:");
    scanf("%d", &q);
    printf("秒:");
    scanf("%d", &r);
104デフォルトの名無しさん:2007/12/11(火) 01:47:47
>>103
    z=r-c;
    if (z<0)
    {
        z+=60;
        q--;
    }
    y=q-b;
    if (y<0)
    {
        y+=60;
        p--;
    }
    x=p-a;
    if (x<0)
    {
        printf("正しい時間を入力してください\n");
    }
    else
    {
        printf("かかる時間%d時間%d分%d秒\n", x, y, z);
    }

    return 0;
}
105デフォルトの名無しさん:2007/12/11(火) 01:50:12
>>99
#include <stdio.h>
int a, b, c, p, q, r, x, y, z;
int main(void)
{
start:
printf("はじめの時間を入力してください。(例:23時7分0秒なら「23 7 0」) \n>");
scanf("%d %d %d", &a, &b, &c);
printf("終わりの時間を入力してください。\n>");
scanf("%d %d %d", &p, &q, &r);
if(a > p) goto error;
if(b > q) goto error;
if(c > r) goto error;
z = p*60*60 + q * 60 + r;
z -= a*60*60 + b * 60 + c;
x = z / 60 / 60;
y = z / 60 % 60;
z %= 60;
printf("かかる時間は%d時間%d分%d秒です。\n", x, y, z);
return 0;
error:
printf("正しい時間を入力してください。\n");
goto start;
}
106デフォルトの名無しさん:2007/12/11(火) 01:52:57
>>99
#include<stdio.h>
int main(){
int a,b,c,d,p,q,r,x,y,z;
int ans;
printf("a時:"); scanf("%d",&a);
printf("b分:"); scanf("%d",&b);
printf("c秒:"); scanf("%d",&c);
printf("p時:"); scanf("%d",&p);
printf("q分:"); scanf("%d",&q);
printf("r秒:"); scanf("%d",&r);
if(0<=a && a<23 && 0<=b && b<60 && 0<=c && c<60
&& 0<=p && p<23 && 0<=q && q<60 && 0<=r && r<60){
ans = (p*60*60 + q*60 + r) - (a*60*60 + b*60 + c);
if( ans > 0 )
{
x = ans/3600;
y = (ans%3600)/60;
z = ans%3600%60;
printf("%d時間%d分%d秒",x,y,z);
return 0;
}
}
printf("正しい時間を入力してください");
return 1;
}
暇人大杉でワロタ
107デフォルトの名無しさん:2007/12/11(火) 01:54:29
>>105
こいつは罠だ。
108デフォルトの名無しさん:2007/12/11(火) 02:08:04
>>105
ワロタ、もう解答されている問題に普通に解答する奴は暇人だが
ひと手間加えて人を笑わせる奴は芸人だ。
109デフォルトの名無しさん:2007/12/11(火) 02:26:06
>>103->>106

こんな時間にありがとうございました。
なんとか間に合いそうです><
110デフォルトの名無しさん:2007/12/11(火) 02:52:13
[1] 授業単元: C言語
[2] 問題文:メインプログラムで同じ大きさの一次元配列a[i],b[i],i=0,1,2,…,n
に適当な値を設定しておき、それぞれのi番目の要素a[i],b[i]についてこれらの
要素のうちの値の小さい方をa[i],大きい方をb[i]へそれぞれ格納する機能を持つ関数
min_maxを実行することによってこの処理を行プログラムを作りなさい。
 なお、nの値については、各自で適当に決めなさい。
 また、min_maxの引数は、次のようにすることとする。
min_max(int x[],int y[],int n)
or min_max(int *x,int *y,int n)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C
[4] 期限: 2007年12月12まで
[5] その他の制限:特に無し

よろしくお願いいたします。
111デフォルトの名無しさん:2007/12/11(火) 02:52:39
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文:次のようなファイル(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5468.txt)を読み、
ファイルの左側をラベルとし、ラベルが偶数、奇数、3の倍数、5の倍数、素数のそれぞれの和をA[0]〜A[4]に出力せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VS2005Ex
 [3.3] 言語:C
[4] 期限: 12月11日 
[5] その他の制限: なし   
ファイル操作がわけわかんなしで無理でした。よろしくお願いします。
112 ◆a9AwGV7Ce2 :2007/12/11(火) 03:36:41
[1] 授業単元:プログラミング
[2] 問題文:
フォームとラベルを1つずつ用意し
実行したときに、1から100までの数値を足した結果を
ラベルに表示させるプログラムを、for文を使って作成しなさい。
(1+2+3+…99+100、のように
公式を使わず、ひとつひとつ足していく)

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Basic.NET
 [3.3] 言語: C
[4] 期限: 2007年12月11日
[5] その他の制限: 特になし


よろしくお願いします。
113 ◆a9AwGV7Ce2 :2007/12/11(火) 03:38:52
すみません、Visual Basic.NET 2003が抜けていました。
よろしくお願いします
114デフォルトの名無しさん:2007/12/11(火) 03:57:22
前スレ >>610
当方で確認した環境は Windows XP, 処理系は gcc 3.4.4 です。
Gauss 法 : http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5469.txt
LU 分解 : http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5470.txt
参考: 数値解析/川上一郎/岩波書店 1989
115デフォルトの名無しさん:2007/12/11(火) 03:59:49
>>115
ピボット選択してませんので、連立方程式によっては運が悪いとバグります。与えられた方程式ならOKですが。
116デフォルトの名無しさん:2007/12/11(火) 04:01:27
Basic?
117デフォルトの名無しさん:2007/12/11(火) 04:10:53
前スレ >>738
当方で確認した環境は WindowsXP, 処理系は gcc 3.4.4 です。
ピボット選択してませんので、連立方程式によっては運が悪いとバグります。問題で与えられた方程式はOKです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5471.txt
118デフォルトの名無しさん:2007/12/11(火) 04:38:42
>>110
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
void min_max( int x[], int y[], int n ) {
int i ,t;
for ( i = 0; i < n; ++i )
if ( x[ i ] > y [ i ] )
t = x[ i ], x[ i ] = y[ i ], y[ i ] = t;
}
void pa( char *c, int x[], int n ) {
printf( "%s:",c ); for ( i = 0; i < n; ++i ) printf( "%d,", x[ i ] ); puts("");
}
int main( int argc, char ** args ){
int a[ N ], b[ N ], i;
srand( time(NULL) );
for ( i = 0; i < N; ++i ) {
a[ i ] = rand(), b[ i ] = rand() ;
}
pa("a",a, N);
pa("b",b, N);
min_max( a, b, N );
pa("a",a, N);
pa("b",b, N);
return 0;
}
119111:2007/12/11(火) 06:43:58
何故かリンクが切れていたのでもう一度張ります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5468.txt
中身は次のようになっています

1, 10
2, 15
3, 5
4, 4
5, 3
6, 19
7, 7
8, 1
9, 15
10, 8
11, 3
12, 4
13, 11
14, 2
15, 12
16, 5
17, 2
18, 35
19, 74
20, 26

よろしくお願いします。
120デフォルトの名無しさん:2007/12/11(火) 09:51:27
>>111
#include <stdio.h>

int isprime(int n){
  int i;
  if(n < 2) return 0;
  if(n == 2) return 1;
  if(n%2 == 0) return 0;
  for(i = 3; i*i < n; i += 2) if(n%i == 0) return 0;
  return 1;
}

int main(int argc, char *argv[]){
  FILE *fp;
  int a[5] = {0}, label, num, i;
  char buf[128];

  if(argc < 2) return fprintf(stderr, "usage : %s filename", argv[0]), 1;
  if((fp = fopen(argv[1], "r")) == NULL) return perror(argv[1]), 1;

  while(fscanf(fp, "%d,%d", &label, &num) == 2)
    if(isprime(label)) a[4] += num;
    else if(label%5 == 0) a[3] += num;
    else if(label%3 == 0) a[2] += num;
    else if(label%2 != 0) a[1] += num;
    else if(label%2 == 0) a[0] += num;

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

  return 0;
}
121デフォルトの名無しさん:2007/12/11(火) 10:29:09
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
 ファイルに0以上100未満の自然数が20個、改行で区切られて保存されている。
ただし、20個の自然数は全て互いに異なるものとする。負の数が入力されるまで繰り返し整数を入力として受け付けて、
1以上20以下の数が入力された場合には、その数を行数として対応する整数を出力せよ。
それ以外の数が入力された場合には"NONE"と出力せよ。
テストケース
ファイルに保存されている整数:19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
入力:1,20,21,-1と入力された場合
出力:19,0,NONE
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4]期限:2007年12月11日正午まで
[5]その他の制限:特になし

よろしくお願いします。
122デフォルトの名無しさん:2007/12/11(火) 11:27:39
123デフォルトの名無しさん:2007/12/11(火) 13:17:19
[1] 授業単元: C言語
[2] 問題文http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5473.txt
二次配列を使って書き換えてください
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C
[4] 期限: 12/13
[5] その他の制限: なし
124デフォルトの名無しさん:2007/12/11(火) 14:34:49
[1] 授業単元: C言語
[2] 問題文:ある実験から次表(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5474.txt)のような
      測定結果が得られた。この結果に最小二乗法を適用し、一次関数を当てはめよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 2007年12月14日
125デフォルトの名無しさん:2007/12/11(火) 15:32:54
>>124
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5475.c
実行する時にデータファイルを指定して、例 C:\〜HW> a data.txt
あと、データファイル先頭のx_i y_iを読み飛ばす方法が手抜きなので
他の優秀な回答者に期待した方が良い鴨
126124:2007/12/11(火) 17:54:57
[1] 授業単元: C言語
[2] 問題文:ある実験から次表http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5474.txt
のような測定結果が得られた。この結果に最小二乗法を適用し、一次関数を当てはめよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 2007年12月14日
すいません。測定結果のリンクがうまくできていなかったので書き換えました。
>>125さん
データの読み取りがうまくいきません。でもご回答ありがとうございます。
127デフォルトの名無しさん:2007/12/11(火) 17:56:50
入力した値まで合計するプログラムについてなのですが、
#include <stdio.h>
void main()
{
int i , goukei;
goukei = 0;
printf("いくつまで合計しますか?");
scanf("%d" ,&goukei);

for(i=1 ; i<=goukei ; i++){
goukei = goukei + i;
}

printf("合計は%d" ,goukei);
}
これでコンパイルして実行しました。
5まで合計したいので5と入力したところ、実行結果が-2147450875となってしまいます。
解決方法を教えて下さい、お願いします。
128デフォルトの名無しさん:2007/12/11(火) 18:06:41
[1] 授業単元: プログラミングW
[2] 問題文(含コード&リンク):迷路の問題なんです。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5478.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007 12月12日10:30まで
[5] その他の制限: ヒントとして書かれているプログラムに使われている初歩的な関数しか習っていません。
プログラムが長くてわかりずらいところもありますが、どうかよろしくお願いします。

>>91~96の者です。。

>>97さんの言うように、どうみても見ずらいので
うpろだを使いました。よろしくお願いします。
129デフォルトの名無しさん:2007/12/11(火) 18:09:22
>>128

肝心のなにを課題として出されているのか書くの忘れました。。
「以下のプログラムを完成させて、8×8の迷路を作成し
  その迷路を解き、表示させるプログラムにしなさい。」
  (コメントはヒントである。主にコメントのところを完成
   させれば、それなりのものになるはず。)
よろしくお願いします。
130デフォルトの名無しさん:2007/12/11(火) 18:11:31
>>127
> for(i=1 ; i<=goukei ; i++){
> goukei = goukei + i;
> }
終了条件に使う変数の内容が、ループを重ねる毎に増えていってるから、
最初に入力した回数では終わらない。
131デフォルトの名無しさん:2007/12/11(火) 18:12:21
>>127
forの中に
printf("%d\n",goukei);
を入れてみると良い
132デフォルトの名無しさん:2007/12/11(火) 18:21:33
>>127
解決案1 for文を次のように変更する。
for(i=goukei, goukei=0; i!=0; i--){
goukei += i;
}

解決案2 scanf文でgoukeiに値を入力するのをやめる
scanf("%d", &i);
while(i!=0){
goukei += i--;
}
133デフォルトの名無しさん:2007/12/11(火) 18:26:28
そもそも合計する値の上限と合計した値との意味的な区別がついてないのではないかと背筋が寒くなる
134デフォルトの名無しさん:2007/12/11(火) 18:29:28
>>130-133
ありがとうございます、できました!
なぜできなかったか理由はわかりませんでしたが、取りあえず提出できます!
またいろいろ調べて理解していきます。
135デフォルトの名無しさん:2007/12/11(火) 19:43:47
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5463.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/11
[5] その他の制限:なし
136デフォルトの名無しさん:2007/12/11(火) 22:47:03
>>135
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5480.c
fflush(stdin);なんて知らなかった。良い勉強になったぜありがとうよ。
137デフォルトの名無しさん:2007/12/11(火) 23:18:15
1] 授業単元:情報科学B
[2] 問題文:(http://www.clas.kitasato-u.ac.jp/~ogawa/C-kadai.html)
問題4
繰り返しを用いて掛算九九を計算し、次のような表の形で表示するプログラムを作りなさい。

掛算九九
| 1 2 3 4 5 6 7 8 9
-+---------------------------
1| 1 2 3 4 5 6 7 8 9
2| 2 4 6 8 10 12 14 16 18
3| 3 6 9 12 15 18 21 24 27
4| 4 8 12 16 20 24 28 32 36
5| 5 10 15 20 25 30 35 40 45
6| 6 12 18 24 30 36 42 48 54
7| 7 14 21 28 35 42 49 56 63
8| 8 16 24 32 40 48 56 64 72
9| 9 18 27 36 45 54 63 72 81


[3] 環境
 [3.1] OS:アップル MAC  OS X
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2007年12月13日午前11:30
[5] その他の制限: 特にありません。



138デフォルトの名無しさん:2007/12/11(火) 23:19:19
>>137
まんまのURL貼ってくる強者がいるなんて
139デフォルトの名無しさん:2007/12/11(火) 23:25:23
>>138
このスレ多いよw
リンク先に「もう新たに 2ch にこの問題を投稿しないようにして下さい」って書いてあったやつはさすがにフイタけど
140デフォルトの名無しさん:2007/12/11(火) 23:48:24
>>137
ごまかしごまかし

printf("掛算九九\n");

printf(" | 1 2 3 4 5 6 7 8 9\n");
printf("--+---------------------------\n");
for(int yCnt = 1; yCnt < 10; yCnt++ )
{
printf("%d |", yCnt );
for(int xCnt = 1; xCnt < 10; xCnt++ )
{
int ans = yCnt * xCnt;
if( ans < 10 )
{
printf(" ");
}

printf(" %d", ans );
}
printf( "\n" );
}
141デフォルトの名無しさん:2007/12/12(水) 07:58:18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kounyu.txtファイルを読み取り、購入リストから購入のために
支払った総額と、一番費用がかかった品目と、一番重量が重たい品目を得たいというプログラムを作りなさい。
kounyu.txt
品目  重量 単価 個数
りんご  18.5  100  15
みかん  19.2  80  13
メロン  30.2  1200  4
なし   20.5  500  5
ぶどう  25.3 450   9
ファイルを読みこみ、終わらせるところまではできるのですが、その間に作る総額や一番費用がかかった品目、
一番重量が重たい品目をどうやって作ればよいのかが、よくわからないんです。


[3] 環境
 [3.1] OS:Vista
 [3.2] Borland C++
 [3.3] 言語: C言語
[4] 期限: 2007年12月13日 午後13:00
[5] その他の制限: 特にないです。基本的な関数しか習っていませんので
if文、for文、swich文、while文、case文、do文、関数は習っています。
142デフォルトの名無しさん:2007/12/12(水) 12:31:52
>>141
総額=0
一番重量が重たい品目の重さ=-100
一番費用がかかった品目の金額=-100
ファイルが終るまで以下を繰り返す{
    品目、重量、単価、個数を読み込み
    金額=単価*個数
    総額=総額+金額
    もし、金額が一番費用がかかった品目より大きいなら{
        一番費用がかかった品目=品目
        一番費用がかかった品目の金額=金額
    }
    もし、重量が一番重量が重たい品目の重さより大きいなら
        一番重量が重たい品目=品目
        一番重量が重たい品目の重さ=重量
    }
}
143デフォルトの名無しさん:2007/12/12(水) 13:19:34
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文:http://edu.net.c.dendai.ac.jp/ad/1/2007/kadai.html(課題2の方)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:ming
 [3.3] 言語:出来ればC++(Cでも構わないです)
[4] 期限:08年1月9日:20時
[5] その他の制限:基礎的な範囲まで

課題2の方をよろしくお願いします。
2chには投稿しないで云々の部分は課題1に対してなので違反ではないと思います。
丸投げですがよろしくお願いします。
144デフォルトの名無しさん:2007/12/12(水) 13:22:46
ま た で ん だ い か ?
145デフォルトの名無しさん:2007/12/12(水) 13:30:27
>>110のものですがビルドをしてみたら「'i'定義されていない識別子です。」と
エラーが出てしまうのですがどうしたらいいでしょうか。
146デフォルトの名無しさん:2007/12/12(水) 13:35:03
>>145
そのまんまだろ.
少しなエラーメッセージ呼んで何とかしようとは思わないのかねぇ
void pa( char *c, int x[], int n ) {
int i; printf( "%s:",c ); for ( i = 0; i < n; ++i ) printf( "%d,", x[ i ] ); puts("");
}
147デフォルトの名無しさん:2007/12/12(水) 14:04:42
>>146
そういう努力できる奴は、このスレにこないんじゃね?w

Cでも
for (int i = 0; i < n; i++) printf("%d", x[i]);
っていけたっけ?
148デフォルトの名無しさん:2007/12/12(水) 14:07:09
>>147
C99なら大丈夫。
149デフォルトの名無しさん:2007/12/12(水) 14:07:18
>>143
文字列の区切りがどう定義されているか分からん。

入力文字列の 0-9A-Za-z は、Za はひとまとまりだが
9A は 9 と A に分かれるらしい。その理屈が分からん。
好きなところを区切りにしてよいなら Za も Z と a に
分けていいはずだが、それは題意に沿っているのか?
150デフォルトの名無しさん:2007/12/12(水) 14:32:57
>>142
教えてもらった文の通りにプログラムを作ったのですが、
もし、金額が一番費用がかかった品目より大きいなら{
一番費用がかかった品目=品目
一番費用がかかった品目の金額=金額
}
もし、重量が一番重量が重たい品目の重さより大きいなら
一番重量が重たい品目=品目
一番重量が重たい品目の重さ=重量
}
のところの一番重量が重たい品目 = 品目と 一番費用がかかった品目=品目
がエラーになってしまってしまうので、どうすればいいのかわからないのです。
151デフォルトの名無しさん:2007/12/12(水) 14:43:01
>>150
ふーん。俺もそれだけの情報じゃあどうしてやればいいかわからないよ。
152デフォルトの名無しさん:2007/12/12(水) 14:49:03
>>143
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5483.cpp

文字列の区切りは貪欲に行った。
これでサンプルとは一致したが合ってるかは知らん。
153デフォルトの名無しさん:2007/12/12(水) 15:00:54
>>150
すみませんでした。言われてみればそうですね。
下のが、私が作ったソースプログラムです。
#include <stdio.h>

int main(void)
{
FILE *kounyuFile;
char sina[100];
int tanka;
int kosu;
double zyuryo;
int tk;
double zk;
int total = 0;
int maxhiyo = -100;
double maxzyuryo = -100;
char maxzyuryosina;
char maxhiyosina;
154デフォルトの名無しさん:2007/12/12(水) 15:01:54
>>153
続きです。
if((kounyuFile = fopen("kounyu.txt","r")) == NULL)
printf("ファイルをオープンできません。\n");
else{
printf("品目 重量 単価 個数 \n");
while (fscanf(kounyuFile, "%s %lf %d %d", sina, &zyuryo, &tanka, &kosu) == 4){
printf("%-5s %.2f %-5d %-5d\n", sina, zyuryo, tanka, kosu);
tk = tanka * kosu;
total += tk;
zk = zyuryo * kosu;

if(tk > maxhiyo){
maxhiyo = tk;
maxhiyosina = sina;
}
if(zk > maxzyuryo){
maxzyuryo = zk;
maxzyuryosina = sina;
}
}
printf("総額は%d円、一番費用がかかった品目は%s、一番重量が重たい品目はsです。", total, maxhiyosina, maxzyuryosina);
fclose(kounyuFile);
}
return 0;
}
なのですが、
このままでは、エラーになってしまうんです。
155デフォルトの名無しさん:2007/12/12(水) 15:04:51
>>153
続きです。
if((kounyuFile = fopen("kounyu.txt","r")) == NULL)
printf("ファイルをオープンできません。\n");
else{
printf("品目 重量 単価 個数 \n");
while (fscanf(kounyuFile, "%s %lf %d %d", sina, &zyuryo, &tanka, &kosu) == 4){
printf("%-5s %.2f %-5d %-5d\n", sina, zyuryo, tanka, kosu);
tk = tanka * kosu;
total += tk;
zk = zyuryo * kosu;

if(tk > maxhiyo){
maxhiyo = tk;
maxhiyosina = sina;
}
if(zk > maxzyuryo){
maxzyuryo = zk;
maxzyuryosina = sina;
}
}
printf("総額は%d円、一番費用がかかった品目は%s、一番重量が重たい品目はsです。", total, maxhiyosina, maxzyuryosina);
fclose(kounyuFile);
}
return 0;
}
なのですが、
このままでは、エラーになってしまうんです。
156デフォルトの名無しさん:2007/12/12(水) 15:06:37
>>155
うざいから一一全部貼るな。それ以前に、エラーメッセージを貼れ。

char maxzyuryosina;

char maxzyuryosina[100];

maxzyuryosina = sina;

strcpy(maxzyuryosina, sina);
以下同様に。
157デフォルトの名無しさん:2007/12/12(水) 15:07:39
ついでにこれも。
- printf("総額は%d円、一番費用がかかった品目は%s、一番重量が重たい品目はsです。", total, maxhiyosina, maxzyuryosina);
+ printf("総額は%d円、一番費用がかかった品目は%s、一番重量が重たい品目は%sです。", total, maxhiyosina, maxzyuryosina);
158デフォルトの名無しさん:2007/12/12(水) 15:13:12
>>156〜157
どうもありがとうございます。<(_ _)>
おかげで、できました。
それとすみません。
次からはそうします。
159デフォルトの名無しさん:2007/12/12(水) 16:18:38
#include <iostream>
#include <new>
#include <fstream>
using namespace std;
ifstream fin;
ofstream fout;
int main(int argc, char *argv[])
{
if(argc != 3)
{
cout << " "<< endl;
return 1;
}
fin.open(argv[1]);
if(!fin){
cout << "" << endl;
}
fout.open(argv[2]);
if(!fout){
cout << "" << endl;
}
int a;
fin >> a;

double (*p)[a][a][a] = new double[a][a][a][a];

p[0][0][0][0] = 4.0;
cout << p[0][0][0][0] << endl;

return 0;
}
160159:2007/12/12(水) 16:21:32
というプログラムなのですがあるマシンでコンパイルするとそのまま通るのですが
もう一方のマシンでコンパイルすると'a' cannot appear in a constant-expression
というエラー文がでてしまいます。
いろいろと調べてみたのですが、結局よくわかりませんでした。
もしわかる方がいらっしゃいましたらどうか教えていただけないでしょうか。
161デフォルトの名無しさん:2007/12/12(水) 16:24:48
>>160
スレ違い。
162デフォルトの名無しさん:2007/12/12(水) 16:47:57
[1] 授業単元:C言語
[2] 問題文:課題A「ファイル名を受け取って,ファイルが読み込みモードでオープンできれば1を返し,オープンできなければ0を返す」関数 FileExist を作成する.
コマンドラインから入力されたファイルの存在を,関数 FileExist を利用して確認する.
ファイルが存在すればファイルの中身をそのまま表示するプログラムを完成しなさい
。課題Bコマンドラインからファイル名を受け取って,読取りモードでオープンすることによりそのファイルの存在を確認する.
シークする位置とシークするバイト数を受け取って,その位置の文字のASCIIコード(10 進数)を表示する.

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:任意
 [3.3] 言語:C
[4] 期限:08年12月13日:17時
163デフォルトの名無しさん:2007/12/12(水) 16:49:59
#include <stdio.h>
#include <stdlib.h>
int main(???????)
{FILE *fp;
long pos;
int i,j;
if (???????) {
printf("USAGE: %s \n", ???????);
exit(1);
}
if (???????){
printf("FILE OPEN error: %s \n", ???????);
exit(1);
}else {
printf("Input seek NO. :");
scanf("%ld", &pos);
printf("Input seek BYTES:");
scanf("%d", &j);
for (i=0; i < j; i++){
if (???????){
printf("seek ERROR. ");
exit(1);}
printf("%d byte: %d \n", i, ???????);}
???????
}return 0;}
164デフォルトの名無しさん:2007/12/12(水) 16:52:28
#include <stdio.h>
#include <stdlib.h>
???????
int main(???????)
{FILE *fp;
int ch;
     if (???????){
printf("There is no FILE NAME. \n");
exit(1);}
if (???????) {
fp = ???????
while(???????){
putchar(ch);
}???????
}else {
printf("FILE OPEN error. \n");
}return 0;}
???????
{FILE *fp;
if (???????) {
return 0;
}
???????
return 1;
}
165デフォルトの名無しさん:2007/12/12(水) 16:53:19
162です
163が課題B、164が課題Aです
よろしくお願いします
166デフォルトの名無しさん:2007/12/12(水) 17:00:50
int FIleExit(const char * filePath)
{
if (filePath == NULL) return 0;
FILE * fp = fopen(filePath, "r");
if (fp == NULL) return 0;
fclose(fp);
return 1;
}
167デフォルトの名無しさん:2007/12/12(水) 17:10:18
>>152
サンプルと一致しているかどうかにかかわらず、好きなタイプのソースです。
168デフォルトの名無しさん:2007/12/12(水) 18:03:05
169デフォルトの名無しさん:2007/12/12(水) 18:13:32
この問題お願いします(><)
明日までにやらないとやばいんです(><)
一部でもいいのでお願いします(><)

問題
http://www.civil.chuo-u.ac.jp/lab/highway/C_language/p061207.pdf

データ
http://www.civil.chuo-u.ac.jp/lab/highway/C_language/score.txt
170デフォルトの名無しさん:2007/12/12(水) 18:47:57
次は中央かw
171デフォルトの名無しさん:2007/12/12(水) 19:02:13
テンプレに学校名を入れてほしい。
172デフォルトの名無しさん:2007/12/12(水) 19:11:50
[1] 授業単元:数値計算プログラム
[2] 問題文:ベアストウ法を用いてx^5 + 4x^4 - 10x^3 - 26x^2 - 11x - 30 = 0 の解を求めるプログラム
[3] 環境  [3.1] OS:Windows  [3.2] コンパイラ名とバージョン:bcc32[3.3] 言語:C
[4] 期限:07.12.13 [5] その他の制限:特になし

以下のソースを組んだんですがコンパイルはできますがうまく動きません。

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

int main(){
int N=6;
double p=1,q=1;
double a[6]={1,4,-10,-26,-11,-30};
double b[6],c[6];
double D,dp,dq;
double e=1.0e-10;
double x;
double n,m;
int i;
int flag=0;

173172の続き:2007/12/12(水) 19:14:43
while(flag==0){
for(i=0;i<N;i++){
if(i==0){
b[i]=a[i];
c[i]=b[i];
}
else if(i==1){
b[i]=a[i]-p*b[i-1];
c[i]=b[i]-p*c[i-1];
}
else{
b[i]=a[i]-p*b[i-1]-q*b[i-2];
c[i]=b[i]-p*c[i-1]-q*c[i-2];
}
}
174172の続き:2007/12/12(水) 19:15:35
D=c[N-2]*c[N-2]-c[N-3]*(c[N-1]-b[N-1]);
dp=(b[N-1]*c[N-2]-b[N]*c[N-3])/D;
dq=(b[N]*c[N-2]-b[N-1]*(c[N-1]-b[N-1]))/D;
printf("dp=%f,dq=%f\n",dp,dq);
if(fabs(dq)<e && fabs(dp)<e){
if(p*p-4*q>=0){
x=(-p+sqrt(p*p-4*q))/2;
printf("xの解の一つは%f\n",x);
x=(-p-sqrt(p*p-4*q))/2;
printf("xの解の一つは%f\n",x);
}else{
n=-p/2;
m=sqrt(4*q-p*p)/2;
printf("xの解の一つは%f+%fi\n",n,m);
printf("xの解の一つは%f-%fi\n",n,m);
}
if(N==1 || N==2){
flag=1;

}
for(i=0;i<N-2;i++){
a[i]=b[i];
}
N=N-2;
}
175172の続き:2007/12/12(水) 19:16:10
else{
p=p+dp;
q=q+dq;
}
}if(N==1){
x=-a[1]/a[0];
printf("xの解の一つは%f\n",x);
}
if(N==2){
if(a[1]*a[1]-4*a[0]*a[2]>=0){
x=(-a[1]+sqrt(a[1]*a[1]-4*a[0]*a[2]))/2/a[0];
printf("xの解の一つは%f\n",x);
x=(-p-sqrt(a[1]*a[1]-4*a[0]*a[2]))/2;
printf("xの解の一つは%f\n",x);
}
else{
n=-a[1]/2/a[0];
m=sqrt(fabs(a[1]*a[1]-4*a[0]*a[2]))/2/a[0];
printf("xの解の一つは%f+%fi\n",n,m);
printf("xの解の一つは%f-%fi\n",n,m);
}
}
return 0;
}
176デフォルトの名無しさん:2007/12/12(水) 19:21:58
誰かこの問題の答え教えてください。
お願いします。
課題文
データ数nをキーボードから入力し、続いてそのn個の数値を順番に入力して配列に格納する。
つづいて、これらn値のうちの最大値をみつけて出力するプログラムを作成しなさい。

【出力例】

データ数を入力:5
a[0] = ??? 3
a[1] = ??? 4
a[2] = ??? 6
a[3] = ??? 1
a[4] = ??? 2

5個のデータの最大値 = 6

177デフォルトの名無しさん:2007/12/12(水) 19:30:40
178デフォルトの名無しさん:2007/12/12(水) 19:46:35
言いかたがざつですいませんでした。
[1] 授業単元:c言語です。
[2] 問題文: 課題文
データ数nをキーボードから入力し、続いてそのn個の数値を順番に入力して配列に格納する。
つづいて、これらn値のうちの最大値をみつけて出力するプログラムを作成しなさい。

【出力例】

データ数を入力:5
a[0] = ??? 3
a[1] = ??? 4
a[2] = ??? 6
a[3] = ??? 1
a[4] = ??? 2

5個のデータの最大値 = 6
です。
[3] 環境
 [3.1] OS:Windows
 
 [3.2」 言語:C++でおねがいします。
[4] 期限:08年12月12日:22時までです


179デフォルトの名無しさん:2007/12/12(水) 19:48:51
[1] 演習レポート
[2] 2から10000の間のすべての素数を列挙するプログラムをつくりなさい。
[3] 環境
 [3.1] WindowsXP
 [3.2] LSI C-86 ver.330c試食版
 [3.3] 言語:C
[4] 期限:2007年12月14日hh:mmまで
[5] その他の制限: 配列まで習いました。
180デフォルトの名無しさん:2007/12/12(水) 20:07:10
>>179
俺が昨日たまたま作ったプログラムでよければww

/*素数を見つけるエラトステネスの篩のプログラム*/
#include<stdio.h>
#include<math.h>
#define MAX 65535

main(){
unsigned int m,i,j,q,p[MAX];

printf("最大の整数を入力:");
scanf("%d",&m);

for(i=1;i<m;i++) p[i]=0;
p[1]=1;
q=2;
for(j=pow(q,2);j<m;j=j+q) p[j]=1;
q=3;
while(pow(q,2)<=m){
for(j=pow(q,2);j<m;j=j+2*q) p[j]=1;
q += 2;
}
for(i=1;i<m;i++){
if(p[i]==0) printf("%d\n",i);
}
}

ちょっと改良すればおk
181デフォルトの名無しさん:2007/12/12(水) 20:22:37
FFでナーシャ・ジベリが高速飛空挺を実現したファミリーコンピューターのバグと、彼がどのようにそのバグを逆手にとってプログラミングしたのか説明せよ
という宿題が出されたんですが全然分かりません
助けてください
(´・ω・`)
182デフォルトの名無しさん:2007/12/12(水) 20:56:19
183デフォルトの名無しさん:2007/12/12(水) 21:05:25
>>180
ありがとうございます!10000までだすのはソフトが限界だったので
100までの素数表示のプログラムにしました。

/* 2〜10000の素数 */
#include <stdio.h>
#include<math.h>
#define MAX 65535

int main(void)
{
unsigned int m=100,i,j,q,p[MAX];
for(i=1;i<m;i++) p[i]=0;
p[1]=1;
q=2;
for(j=pow(q,2);j<m;j=j+q) p[j]=1;
q=3;
while(pow(q,2)<=m){
for(j=pow(q,2);j<m;j=j+2*q) p[j]=1;
q += 2;
}
for(i=1;i<m;i++){
if(p[i]==0) printf("%d\n",i);
}
}

でも処理手順のフローチャートが分かりません・・・
184デフォルトの名無しさん:2007/12/12(水) 21:08:55
>>181
FFはナーシャがハンドアセンブルして作った作品だから、Cの宿題とは関係ないね。
185デフォルトの名無しさん:2007/12/12(水) 21:51:01
>>183
コメントが長いけど、まぁこんな感じw

for(i=1;i<m;i++) p[i]=0; /*配列の初期化=フラグを0にしておく.フラグが0の間は素数の可能性がある*/
p[1]=1; /*1は素数じゃないので除外(=配列に格納されてるフラグを1にする)*/
q=2;
for(j=pow(q,2);j<m;j=j+q) p[j]=1; /*p[2]=1,p[4]=1,p[6]=1,....偶数は素数じゃないので除外*/

/*ここからは奇数の中で素数じゃないのを除外するループ*/
q=3;/*1以外で一番小さい奇数3を最初に代入*/
while(pow(q,2)<=m){
for(j=pow(q,2);j<m;j=j+2*q) p[j]=1;
/*p[pow(3,2)=9]=1,p[9+2*3=15]=1,p[15+2*3=21]=1,...と3の倍数で再び奇数となるものだけを除外していく*/
q += 2;/*2加算することにより、次は5,その次は7の倍数を除外...と順に奇数をたどって除外していく*/
}

/*ココからは最終的にフラグが0だった(=素数と判明した)数を出力する*/
for(i=1;i<m;i++){ /*i=2にしておけばp[1]=1;は書かなくておk*/
if(p[i]==0) printf("%d\n",i);
186デフォルトの名無しさん:2007/12/12(水) 21:52:31
187:2007/12/12(水) 21:55:21
188185:2007/12/12(水) 22:02:07
視覚的に分かりやすくするとこんな感じ
初期化した状態
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,....,90,91,92,93,94,95,96,97,98,99,100
p[1]=1
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,....,90,91,92,93,94,95,96,97,98,99,100
q=2で最初のfor文を回した後
3,5,7,9,11,13,15,17,19,21,23,25,27,29,....,91,93,95,97,99
q=3でwhile文の中のfor文を回した後
3,5,7,11,13,17,19,23,25,29,....,91,95,97
q=5で(ry
3,5,7,11,13,17,19,23,29,....,91,97
q=7で(ry
3,5,7,11,13,17,19,23,29,....,97
こうしていけばq=9で81が消え、q=11は11^2=121となってwhile文のループ条件を満たさなくなるのでループを抜け出す
ループを抜け出した時点で残ってる数は全部素数
189デフォルトの名無しさん:2007/12/12(水) 22:04:04
>>178
C++の練習がてらやったのでおかしいとこあるかも
getline(cin,buf);
iss.str(buf);
iss >> n;
if(iss.fail()) iss.clear();
else break;
}
for(int i=0; i<n; ++i){
while(1){
int x;
string buf("");
istringstream iss;
cout << "a[" << i << "] = ";
getline(cin,buf);
iss.str(buf);
iss >> x;
if(iss.fail()) iss.clear();
else {
array.push_back(x);
break;
}}}
cout << n << "個のデータの最大値→" << *max_element(array.begin(),array.end()) << endl;
return 0;}
190デフォルトの名無しさん:2007/12/12(水) 22:28:08
>>185
ありがとうございます!
191デフォルトの名無しさん:2007/12/12(水) 22:32:11
>>178
授業単元はC言語なのにC++なのか?
192デフォルトの名無しさん:2007/12/12(水) 22:45:09
>>190
ごめん、間違ってた
q=2;
for(j=pow(q,2);j<m;j=j+q) p[j]=1; /*p[2]=1,p[4]=1,p[6]=1,....偶数は素数じゃないので除外*/

q=2;
for(j=pow(q,2);j<m;j=j+q) p[j]=1; /*p[4]=1,p[6]=1,p[8]=1,....2以外の偶数は素数じゃないので除外*/
193デフォルトの名無しさん:2007/12/12(水) 22:52:23
>>169 (c)と(d)もやってみた。
#include <cmath>
#include <iostream>
using namespace std;
double nibun_ho(double(*func)(double), double xl, double xu){
const double epsilon = 10.0e-6; const int N = 100;
int count = 0;
do{
double xm = (xl+xu)/2.0;
double f_xl = (*func)(xl);
double f_xu = (*func)(xu);
double f_xm = (*func)(xm);
if(f_xl * f_xm < 0.0) xu = xm;
if(f_xl * f_xm > 0.0) xl = xm;
count++;}
while(xu-xl >= epsilon*abs(xu) && count!=N);
return xu;}
double f(double x){return x - 1.2 * exp(-x);}
void kadai_c(){cout << "x = " << nibun_ho(f, 0.0, 2.0) << endl;}
double f1(double x){return pow(x, 2.0) - 2.0;}
double f3(double x){return pow(4.0-pow(x, 2), 0.5) - 2 * x;}
int kadai_d(){
cout << "f(x) = x^2 - 2 = 0 [xl = 0, xu = 2] x = " << nibun_ho(f1, 0.0, 2.0) << endl;
cout << "f(x) = x^2 - 2 = 0 [xl = -2, xu = 0] x = " << nibun_ho(f1, -2.0, 0.0) << endl;
cout << "f(x) = (4-x^2)^0.5 - 2 * x = 0 [xl = 0, xu = 2] x = " << nibun_ho(f3, 0.0, 2.0) << endl;
return 0;}
int main(){
cout << "課題(c)" << endl; kadai_c();
cout << "課題(d)" << endl; kadai_d();
return 0;}
194デフォルトの名無しさん:2007/12/12(水) 22:59:09
>>188
>>192
ありがとうございます!
いい勉強になりました。
195189:2007/12/12(水) 23:45:20
すまん、何か改行制限に引っかからないと思ったらコピペミスで最初の方が切れてるな
もう今日はパソつけないのでまた明日
もしくは誰か任せた
196デフォルトの名無しさん:2007/12/13(木) 00:30:24
>>195
任された。
>>178
#include<iostream>
int main(){
    int *a,n,max;
    std::cout << "データ数を入力:";
    std::cin >> n;
    a = new int[n];
    max=0;
    for(int i=0; i<n; i++){
        std::cout << "a[" << i << "]=";
        std::cin >> a[i] ;
        if( a[i] > a[max] ){
            max = i;
        }
    }
    std::cout << n << "個のデータの最大値 =" << a[max] << std::endl;
    delete [] a;
    return 0;
}
197デフォルトの名無しさん:2007/12/13(木) 09:11:19
>>37
>>47
問題は若干違うので、再度お願いします。
198デフォルトの名無しさん:2007/12/13(木) 09:16:44
何が違うのか書いた方が親切じゃね?
199デフォルトの名無しさん:2007/12/13(木) 09:38:56
>>197
自己解決したんでokですw
200デフォルトの名無しさん:2007/12/13(木) 10:14:25
>>198
いいやん
>>197は答え欲しくないんだろ
201デフォルトの名無しさん:2007/12/13(木) 10:23:11
>>144
ま た で ま し た w w w

>>152
どうもです。
202お願いします:2007/12/13(木) 12:32:27
文字列aの中にMarikoという綴りが含まれているかどうかを調べ、
もしあればあった、なければなかったと表示するプログラムを作ってみましょう。

お願いします。
203デフォルトの名無しさん:2007/12/13(木) 13:33:11
宿題かもぉん
204>>1のテンプレを利用しましょう:2007/12/13(木) 13:37:30
>>202
>文字列aの中にMarikoという綴りが含まれているかどうかを調べ、
>もしあればあった、なければなかったと表示するプログラム
こんな感じでおk?
#include <stdio.h>
#include <string.h>
int main(){
char *str = "a" , *find = "Mariko";

if(strstr(str,find) != NULL) puts("あった");
else puts("なかった");

return 0;
}
205デフォルトの名無しさん:2007/12/13(木) 14:29:53
宿題かもぉおおおん
206デフォルトの名無しさん:2007/12/13(木) 15:25:05
@示された数字をある数で割る。
示される数字が
160〜319・・・2で割る
320〜479・・・3で割る
480〜639・・・4で割る
640〜799・・・5で割る
800〜959・・・6で割る
960〜   ・・・解なし
A割って出た解の小数点以下を四捨五入
例 123.56→124
B出た数字に1〜(割った数−1)までをかけてそれぞれ解を出す
124×1=
124×2=
  ・
  ・
  ・
124×(n−1)= (n=最初に割った数)

解を順番に書く。

宿題ではないので無期限
その他の条件もなし
暇な人がいたらやってみては?
207デフォルトの名無しさん:2007/12/13(木) 15:40:57
>>206
手抜きなんでscanf
#include <stdio.h>
int main(){
int x,n,i;

scanf("%d",&x);
if(x<160 || x>=960) return 1;
n = x/160 + 1;
printf("%d / %d ≒ ",x,n);
x = (int)((double)x/n + 0.5);
printf("%d\n",x);
for(i=1; i<n; ++i) printf("%d * %d = %d\n",x,i,x*i);
return 0;
}
208デフォルトの名無しさん:2007/12/13(木) 16:32:16
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5492.txt
データ (1)(2)用 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5493.txt
      (3)用 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5494.txt
          http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5495.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月15日まで
[5] その他の制限: 基本的な範囲しか習っていません
209デフォルトの名無しさん:2007/12/13(木) 18:37:43
[1] 演習レポート
[2] 西暦1900年から西暦2020年の間のうるう年をすべて表示するプログラム
[3] 環境
 [3.1] WindowsXP
 [3.2] LSI C-86 ver.330c試食版
 [3.3] 言語:C
[4] 期限:2007年12月16日まで
[5] その他の制限: 配列まで。

どうしても思いつかないのでよろしくお願いします。
210デフォルトの名無しさん:2007/12/13(木) 19:58:36
#include <stdio.h>

int main(void)
{
int i;
for(i=1904; i<=2020; i+=4) printf("%d\n", i);

return 0;
}
211デフォルトの名無しさん:2007/12/13(木) 20:27:08
>>210
待て、100年に1度は閏年じゃないけど、400年に1度は閏年なんだぞw

for (i = 1904; i <= 2020; i += 4){
 if (i % 100 == 0 && i % 400 != 0){
   continue;
 }
 printf("%d\n", i);
}
212デフォルトの名無しさん:2007/12/13(木) 20:32:59
お前は何を言ってるんだ
213デフォルトの名無しさん:2007/12/13(木) 20:34:04
>>211
よく見ろ
てか考えろ
214デフォルトの名無しさん:2007/12/13(木) 20:36:07
>>211
バカがでしゃばるなよw
215デフォルトの名無しさん:2007/12/13(木) 20:37:30
216デフォルトの名無しさん:2007/12/13(木) 21:02:08
>>212-214
釣られすぎ
217デフォルトの名無しさん:2007/12/13(木) 21:08:03
(´・ω・`)問題の範囲じゃ100&400は含まないんだった
218デフォルトの名無しさん:2007/12/13(木) 21:40:52
つまり>>211が正しいのか?
219デフォルトの名無しさん:2007/12/13(木) 21:45:17
>>211でも正しいが>>210も正しい
220デフォルトの名無しさん:2007/12/13(木) 22:36:55
任意の範囲で閏年を抽出、だと>211じゃないとうまくいかない場合があるけど、
今回の課題は1900〜2020だから手を抜いて>>210でもOK。
汎用性か特化(して計算量や実装コストを減らす)か。
221デフォルトの名無しさん:2007/12/13(木) 23:23:22
の質問者ですが、
なぜ#define MAX 65535
とおいたのかと、その説明お願いします。
大学ではまだdefine文は習ってないので、いろんなサイトを見てみましたが
理解できませんでした・・・

自分的にはMAXを65535とおくっていう意味だと思うんですが・・・
222デフォルトの名無しさん:2007/12/13(木) 23:24:28
>>221ミス

>>183の質問者ですが、
なぜ#define MAX 65535
とおいたのかと、その説明お願いします。
大学ではまだdefine文は習ってないので、いろんなサイトを見てみましたが
理解できませんでした・・・

自分的にはMAXを65535とおくっていう意味だと思うんですが・・・
223デフォルトの名無しさん:2007/12/13(木) 23:27:35
MAXを65535に置換する
224デフォルトの名無しさん:2007/12/13(木) 23:29:55
>>223
ありがとうございます。
ですが、なぜ65535なんでしょうか?
質問ばかりですみません
225デフォルトの名無しさん:2007/12/13(木) 23:30:23
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5489.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/15
[5] その他の制限:なし


226デフォルトの名無しさん:2007/12/13(木) 23:48:54
>>224
昨日プログラムを載せた者です
#defineの意味は>>223が書いてるように
「このプログラムの中ではMAXっていう文字列は65535って文字列と同じ意味です!」
っていう宣言をしてるわけ
で、何で65535かというとunsigned int型で表現できる数値の範囲が0-65535だから
…まぁ、それだけの理由ですw
227デフォルトの名無しさん:2007/12/14(金) 00:05:23
>>226
> unsigned int型で表現できる数値の範囲が0-65535だから
どんな環境ですか?

そういえば配列の要素数の最大値って決まってるの?
228デフォルトの名無しさん:2007/12/14(金) 00:06:54
>>226
ありがとうございます。
しかし参考書には
unsigned int 0〜4294967259
unsigned short int 0〜65535

となってます。てことはunsigned short int でも無理なく
起動できるってことですか?
一応自分では無事に起動できると確認しました。
229デフォルトの名無しさん:2007/12/14(金) 00:07:22
[1] 授業単元: プログラミング言語
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5499.txt
[3] 環境
 [3.1] XP
 [3.2] VC++2005
 [3.3] 言語: C++
[4] 期限: 12/19
[5] その他の制限: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5500.txt
のように表示されるようにすればいいみたいです。
よろしくおねがいします。
230デフォルトの名無しさん:2007/12/14(金) 00:08:01
>>226
いまどき16bit環境は無いわ
231229:2007/12/14(金) 00:09:07
すみません。
kyuuyo.datは
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5501.zip
です。改めてよろしくお願いします。
232デフォルトの名無しさん:2007/12/14(金) 00:21:27
>>230
すまん!
何をとち狂ってたか今の今まで16bit環境のことだと気付かず書いてたwはずかしいorz
>>228
32bit環境(現在一般的に普及してる環境)だとunsigned int型は0-4294967259であってるよ
今回の課題は元々10000までの素数を出力するプログラムだったからMAX 10000でおk
233デフォルトの名無しさん:2007/12/14(金) 00:27:40
>>232
MAX 10000
でやると実行結果がでないで止まってしまいました・・・
234デフォルトの名無しさん:2007/12/14(金) 00:43:10
235デフォルトの名無しさん:2007/12/14(金) 02:32:00
>>229 C++なのにCでやっちまったぜ
#include<stdio.h>
int kind[]={10000, 5000, 1000, 500, 100, 50, 10, 5, 1};
void print_value(unsigned long value){
int i;
printf("%6lu:", value);
for(i=0;i<sizeof(kind)/sizeof(kind[0]);i++){
printf(" %5lu", value/kind[i]);
value%=kind[i];
}
printf("\n");
}
unsigned long leul2host(unsigned long value){
unsigned long i, ret=0UL;
unsigned char *p;
p=(unsigned char *)&value;
for(i=0;i<4;i++) ret=(ret<<8)|p[3-i];
return ret;
}
int main(void){
FILE *fp;
unsigned long value;
fp=fopen("kyuuyo.dat", "rb");
if(fp==NULL) return 1;
printf("額/種 10000 5000 1000 500 100 50 10 5 1\n");
while(fread(&value, sizeof(value), 1, fp)==1){
value=leul2host(value);
print_value(value);
}
fclose(fp);
return 0;
}
236カルマン:2007/12/14(金) 07:01:30
480×720の動画で、カメラ固定の状態でボールを左上から右下に向かって投げます。
このボールを背景差分で検出し、カルマンフィルタを用いて軌道を追跡してください。
動画はサンプリングタイムでBMP形式になっており、ボールの移っているフレームは10〜18の9枚です。

カルマンフィルタの部分が分かる方教えてください。状態変数はX=「ボールの位置(x軸)、速さ(x軸)、ボールの位置(y軸)、速さ(y軸)」^(転置)
237デフォルトの名無しさん:2007/12/14(金) 10:51:37
>>236
>1
>カルマンフィルタの部分が分かる方教えてください。
ついでに、カルマンフィルタとは何なのか説明してくれ。
238デフォルトの名無しさん:2007/12/14(金) 11:57:22
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):変数xは0から1までの0.01刻みの値(101個)をとるものとする。
この時2次関数f(x)=3x2+2x+1の値が2.0<f(x)<3.0となるxの値の個数を求めるプログラムを作成せよ。
ただしxを引数としf(x)の値を返す関数を作成しそれを使用せよ。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: CPad for Borland C++ Compiler 2.31
 [3.3] 言語:C++
[4] 期限: 2007年12月14日12:00まで
[5] その他の制限: 特にありません
239デフォルトの名無しさん:2007/12/14(金) 12:02:03
// >>238
// 単元はC言語なのに言語指定はC++かよ!

static double f(double x)
{
return 3 * x * x + 2 * x + 1;
}

int main()
{
int sum = 0;
for (int ic = 0; ic < 1 * 100; ++ic) {
double y = f(ic / 100.0);
if (2 < y && y < 3) ++count;
}
// 個数はcount。求めたから後は好きにしろ
return 0;
}
240デフォルトの名無しさん:2007/12/14(金) 12:08:50
>>239
すいません!!C言語でした。
241デフォルトの名無しさん:2007/12/14(金) 13:25:07
242デフォルトの名無しさん:2007/12/14(金) 14:13:15
[1]授業単元
[2]問題文
1から10までの数をランダムに100回(1000回)発生させ、その発生した数の(1回毎の)平均値を
示すプログラムを教えてほしいです。 ※100回と1000回 両方試行。
さらに、そのコンパイル結果をコピーしてエクセルでグラフに表せるようにしたいです。
243デフォルトの名無しさん:2007/12/14(金) 14:14:46
>>242
C言語でお願いします
244デフォルトの名無しさん:2007/12/14(金) 14:45:39
>>242
100回(1000回)の平均を出す試行を一回だけでいいの?
一回でグラフも何も無い気がするけど
245デフォルトの名無しさん:2007/12/14(金) 15:16:13
乱数の平均が収束していく様子をグラフにしたいとか?
それだと範囲が1〜10だし、イマイチか。
コピーしてExcelに流したいなら、テキストにリダイレクトしてコピペすりゃ済むんじゃなかろうか。
246デフォルトの名無しさん:2007/12/14(金) 15:41:42
まあcsvにでも出力すりゃよかろう
247デフォルトの名無しさん:2007/12/14(金) 16:02:29
>>242
>>245-246の感じでやってみた
Excelでグラフ確認
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define N 1000
#define OUTFILE "result.csv"

int main(){
int r,sum,i;
FILE *fp;

srand(time(NULL));
if((fp=fopen(OUTFILE,"w")) == NULL){return 1;}
fprintf(fp,"回数,平均\n");
for(i=0,sum=0; i<N; ++i){
sum += rand()/(RAND_MAX+1.0)*MAX + 1;
// sum += rand() % MAX + 1;
fprintf(fp,"%d,%f\n",i+1,(double)sum/(i+1));
}
fclose(fp);
return 0;
}
248デフォルトの名無しさん:2007/12/14(金) 16:03:28
あ、変数rを使ってないから消しておいて
249デフォルトの名無しさん:2007/12/14(金) 17:30:01
[1] 授業単元:プログラミング演習
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5514.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月17日まで
[5] その他の制限:continue文、break文を習った授業で出されました。
250デフォルトの名無しさん:2007/12/14(金) 19:27:25
>>239
いろいろとひどいなw
251いときん:2007/12/14(金) 20:45:58
[1] 授業単元:オペテーティングシステム
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5515.txt
[3] 環境
 [3.1] OS:マック
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月17日11時
[5] その他の制限:
コンパイル時に次のような警告が出る。
warning: incompatible implicit declaration of built-in function 'exit'

ファイルが開けなかった場合や、mallocに失敗した場合などに、
exit(1);で強制終了するようにしたのだが、exit(1);1つずつに対しこの警告が出る。
警告文の意味がよく分からず、対処することができなかった。
ただ、エラーではないためコンパイルは可能で、
テストの結果からは、プログラムは問題なく動作すると考えられる。

のですが、このエラーの訂正をお願いします。

そして、ほかに改良できそうな部分があれば、そこもおねがいします。

重複投稿になってしまいましたが、よろしくおねがい致します。
252いときん:2007/12/14(金) 20:48:21
253デフォルトの名無しさん:2007/12/14(金) 21:49:43
>>251-252
#include <stdlib.h>
254デフォルトの名無しさん:2007/12/14(金) 22:19:04
[1] 授業単:C言語基礎
[2] 問題文:ビットストリーム
(a)
char型の配列を与えられたとき、配列の中身を連結された1本のビット列と見なして、
先頭から7bitづつ切り出したchar型数値の配列へのポインタを返す関数を作成せよ。
なお、与えられる配列の長さは、必ず7の倍数であるとする。
例:
↓これを与えると
unsigned char a[] = {0xff, 0xcc, 0xaa, 0x88, 0x44, 0x22, 0x11};
↓これが帰ってくる
unsigned char b[] = {0x7f, 0x73, 0x15, 0x28, 0x42, 0x10, 0x44, 0x11};
(b)
(a)で作成した関数を、切り出すビット数の単位(1〜8)が指定できるように改造しなさい。
[3] 環境
 [3.1] OS:ウィーンドウズ
 [3.2] コンパイラ名とバージョン:VC++8.0
 [3.3] 言語:C(C++は不可)
[4] 期限:12月15日朝8時まで
[5] その他の制限:特になし
255デフォルトの名無しさん:2007/12/14(金) 22:20:59
ウィーンドウズ
256デフォルトの名無しさん:2007/12/14(金) 23:43:08
>>254
#include <stdio.h>
char* getBitStream(char *dest, char *src, int size, int bit)
{
char *d=dest,*s=src;
int sb=7,db;
if(s==NULL||d==NULL||size<1||bit<1||bit>8)return NULL;
*d=0;db=--bit;
while(s<src+size){
*d|=(*s>>sb--&1)<<db--;
if(sb<0){++s;sb=7;}
if(db<0){*(++d)=0;db=bit;}
}
return dest;
}
int main()
{
int i;
unsigned char a[] = {0xff, 0xcc, 0xaa, 0x88, 0x44, 0x22, 0x11};
unsigned char b[8];
getBitStream(b,a,sizeof(a),7);
for(i=0;i<sizeof(b);i++)
printf("0x%x ",b[i]);
return 0;
}
257デフォルトの名無しさん:2007/12/14(金) 23:58:38
>>253

回答ありがとうございます。

しかし、すみません。

もうすこし細かく教えてもらっていいでしょうか。

頭がこんがらがってしまって、、
258デフォルトの名無しさん:2007/12/15(土) 00:38:58
>>254
これバグ見つけるのが激しくダルい(捨て台詞)
259デフォルトの名無しさん:2007/12/15(土) 03:11:06
260デフォルトの名無しさん:2007/12/15(土) 08:06:35
docをダウンロードさせるのかよw
261デフォルトの名無しさん:2007/12/15(土) 09:10:51
251です。

解決しました。
ありがとうございました。
262デフォルトの名無しさん:2007/12/15(土) 12:17:30
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5517.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5

 [3.3] 言語: C++
[4] 期限: 12/17 12時
[5] その他の制限:


よろしくお願いします。
263デフォルトの名無しさん:2007/12/15(土) 12:20:29
>>260
pdfならOK?

docやxls,pptをpdfに変換してくれるサービス
ttp://www2.cman.jp/pdf/
264デフォルトの名無しさん:2007/12/15(土) 13:27:48
[1] 授業単元:プログラミングU
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5518.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/17
[5] その他の制限:なし
265デフォルトの名無しさん:2007/12/15(土) 14:50:53
[1] 授業単元:プログラミング
[2] 問題文:n個の数データをキーボードから入力し、最大値と最小値を求めるプログラムを作成しなさい
 [3.1] WindowsXP
 [3.2] コンパイラ名とバージョン: fujitu workbench v4.0L10
 [3.3] 言語: C C++
[4] 期限: 12/21
[5] その他の制限:な
266デフォルトの名無しさん:2007/12/15(土) 15:00:00
>>265
#include <stdio.h>
#include <limits.h>

int main()
{
    int i, n, num, max, min;

    max=INT_MIN;
    min=INT_MAX;

    scanf("%d", &n);

    for (i=0 ; i<n ; i++)
    {
        scanf("%d", &num);
        if (num>max)
            max=num;
        if (num<min)
            min=num;
    }
    printf("max %d\nmin %d\n", max, min);

    return 0;
}
267259:2007/12/15(土) 15:14:49
>>260
すいません、数式が2chだと書けなくてWordになっちゃいましたorz
268265:2007/12/15(土) 15:19:49
[1] 授業単元:コンピュータプログラミング
[2] 問題文:n個の数データをキーボードから入力し、最大値と最小値を求めるプログラムを作成しなさい 。
貯金の合計金額は?を計算するプログラムを作成しなさい。ただし、利子は考えないものとする。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:Fujitsu Fortran & C
 [3.3] 言語: C
[4] 期限: 12/15 
[5] その他の制限: なし
すみません訂正しましたのでよろしくお願いします。
269デフォルトの名無しさん:2007/12/15(土) 15:26:53
>>268
イミフ訂正じゃなく問題が2つ在るならちゃんと書け
270デフォルトの名無しさん:2007/12/15(土) 15:27:16
>>268
#include <stdio.h>
#include <limits.h>

int main()
{
    int i, n, num, max, min, sum;

    max=INT_MIN;
    min=INT_MAX;
    sum=0;

    scanf("%d", &n);

    for (i=0 ; i<n ; i++)
    {
        scanf("%d", &num);
        sum+=num;
        if (num>max)
            max=num;
        if (num<min)
            min=num;
    }
    printf("max %d\nmin %d\nsum %d\n", max, min, sum);

    return 0;
}
271259:2007/12/15(土) 15:31:26
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):(2次元離散コサイン変換(DCT)と逆行列は次式で計算する。
今入力画像の1部(8×8領域)の二次元配列
im[m][n],(m,n=0,1,2...7)が与えられた時、2次元DCTのプログラムを書け

DCT(k,l)=ΣΣim(i)(j)Φk(i)Φl(j) 逆変換 out_im(i,j) = ΣΣDCT(k,l)Φk(i)Φl(j)
また
Φk(0)=1/sqrt(N)
Φk(i)=2/sqrt(N)*cos((2i+1)kπ/2N) Φl(0)=1/sqrt(N)
Φl(j)=2/sqrt(N)*cos((2j+1)kπ/2N)
(i = 1…N-1) (j = 1...N-1)
である
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年12月17日
[5] その他の制限: N = 8として
for(v=0; v<n;v++)とする
この画像を変換する
unsigned char im[8][8] = {{1,1,0,0,0,0,1,1}
{1,0,0,0,0,1,1,1}
{0,0,0,0,1,1,1,0}
{0,0,0,1,1,1,0,0}
{0,0,1,1,1,0,0,0}
{0,1,1,1,0,0,0,0}
{1,1,1,0,0,0,0,1}
{1,1,0,0,0,0,1,1}};
修正しました、後は制限無しですよろしくお願いします。
272265:2007/12/15(土) 15:56:00
[1] 授業単元:コンピュータプログラミング
[2] 問題文:n個の数データをキーボードから入力し、最大値と最小値を求めるプログラムを作成しなさい 。
ただし最後にctrl+zで終わるようにする。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:Fujitsu Fortran & C
 [3.3] 言語: C
[4] 期限: 12/15 
[5] その他の制限: なし
何度もすみません。コピペしたのが残ってしまいました。再度訂正しましたのでよろしくお願いします。

>>266
>>270
ありがとうございます。参考にさせていただきます。

273デフォルトの名無しさん:2007/12/15(土) 15:59:40
>>272
#include <stdio.h>
#include <limits.h>

int main()
{
    int i, n, num, max, min;

    max=INT_MIN;
    min=INT_MAX;

    scanf("%d", &n);

    for (i=0 ; i<n ; i++)
    {
        if (scanf("%d", &num) == EOF)
            break;
        if (num>max)
            max=num;
        if (num<min)
            min=num;
    }
    printf("max %d\nmin %d\n", max, min);

    return 0;
}
274デフォルトの名無しさん:2007/12/15(土) 17:15:52
275デフォルトの名無しさん:2007/12/15(土) 20:47:04
[1] 授業単元: プログラミング論U
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5521.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5
 [3.3] 言語: C言語
[4] 期限: 12/18 pm12時まで
[5] その他の制限: 特に無いです。

全然分からず瀕死です。宜しくお願いします。
276デフォルトの名無しさん:2007/12/15(土) 21:20:23
[1] 授業単元: 計算幾何学
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5522.txt
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler5.5
 [3.3] 言語: C
[4] 期限: 12月18日
[5] その他の制限:特にありません。よろしくお願いします
277デフォルトの名無しさん:2007/12/15(土) 21:22:15
[1] 授業単元:プログラム言語2
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5523.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: ([2007年12月19日10:30まで] )
[5] その他の制限: 特にないです

よろしくお願いします。
278デフォルトの名無しさん:2007/12/15(土) 22:47:38
[1] 授業単元:計算工学実験
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5524.txt
指定のプログラムを使い迷路を自動的に解くプログラムを作成する。

[3] 環境
 [3.1] OS: Windows 
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 早めにお願い致します
[5] その他の制限: なし

よろしくお願いします。
279278:2007/12/15(土) 22:53:52
期限の指定を16日のPM12:00まででお願いします。
280デフォルトの名無しさん:2007/12/16(日) 00:01:31
>>279
PM12:00は始めてみる
281デフォルトの名無しさん:2007/12/16(日) 00:02:59
>>278
リンク先もレスも見たがどこにも問題文らしきものがない
282278:2007/12/16(日) 00:22:42
すいません、問題文書き忘れてました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5524.txt
このプログラムを使用して、迷路のデータの出口を自動的に探し出すプログラムを作成する。
と書いてありました。
迷路のデータ(maze)は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5525.txt
  
283278:2007/12/16(日) 01:04:36
それと時間の表記ですが16日のPM12:00=昼まででということで。
C言語には滅法弱く相当悩んでるので宜しくお願いします。
284デフォルトの名無しさん:2007/12/16(日) 04:57:41
それはAM12:00だろ……
ていうか迷路の見方がわからん。
285デフォルトの名無しさん:2007/12/16(日) 05:42:08
ごくたまーに、そういうところ、
午前11時の次が午後12時、で、午後1時、午後2時となるところが
あったりして、帳票を作ったりするときに、困るんだな。
みんな、「おかしいよな」って思ってるらしいのだが、もう数10年それで
やってきてるもんで、いまさら変えられないとか。
286デフォルトの名無しさん:2007/12/16(日) 07:12:40
AM, PM制で12時って表現が理解できないんだよなあ。
お昼はPM0時派だな。
287229:2007/12/16(日) 07:31:18
>>235
遅くなりましたが、ありがとうございます。
c++でも問題なく動きました。
288デフォルトの名無しさん:2007/12/16(日) 08:57:06
>276
p2とp3の点の座標が重複してるけどそれで良いのか?
289デフォルトの名無しさん:2007/12/16(日) 10:34:53
>>275
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5526.txt
Q2,Q3に関してはx^3=1だけ示してある。
290275:2007/12/16(日) 12:41:57
>>289
>>275です。本当、有難うございます。感謝です。
無事に動作しました。

Q2、Q3に関してなのですが、x^n=1の「n」の値を変更するためには
nの数だけ複素数を宣言しないといけないのでしょうか?
可能ならば…キーボードからnの値を入力すれば、Q2、Q3が出来るようにして頂きたいのですが。。。
せっかくやって頂いたのに、図々しく申し訳ありません。自分では書き換える力がないもので。
291278:2007/12/16(日) 12:50:50
起動の実行法?見たいな物を書いておきます。
これで理解していただけるか分かりませんが・・

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5528.txt
292259:2007/12/16(日) 13:14:03
ここまでやって、コンパイルもされて実行できたんですけど
http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5529.txt
警告 W8060 a.c 52: おそらく不正な代入(関数 dct )
警告 W8060 a.c 54: おそらく不正な代入(関数 dct )
警告 W8060 a.c 69: おそらく不正な代入(関数 out_im )
警告 W8060 a.c 71: おそらく不正な代入(関数 out_im )
警告が出てしまいます
293デフォルトの名無しさん:2007/12/16(日) 13:26:41
>>292
行番号でてるんだから、そこを見ようぜ
if(i = 0) {
294259:2007/12/16(日) 13:27:59
自己解決しました
295278:2007/12/16(日) 13:38:11
レポートを書きたいだけなので、そのプログラムの概要だけ教えて頂けますか?
296デフォルトの名無しさん:2007/12/16(日) 14:26:05
>>278
これを参考にしてはいかがなものか
http://www.gihyo.co.jp/book/2002/402991/4-7741-1418-9.pdf
297デフォルトの名無しさん:2007/12/16(日) 15:00:13
駄目な人多いんだな・・・
298デフォルトの名無しさん:2007/12/16(日) 16:10:21
>>277 元がよくないんだ、きっと(責任転嫁)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5530.txt
299デフォルトの名無しさん:2007/12/16(日) 16:16:40
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5531.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/17
[5] その他の制限:なし
300デフォルトの名無しさん:2007/12/16(日) 16:27:53
>>278 こんなんで解けたような。
外部変数: 迷路の配列
関数 戻り値: フラグ 迷路を解く (引数: 座標)
{
フラグ = 0
if 座標がゴール return
迷路配列の座標をチェック済みにする
if 座標の上が壁でない or 座標の上がチェック済みでない then フラグ += 迷路を解く (座標の上)
if 座標の下が壁でない or 座標の下がチェック済みでない then フラグ += 迷路を解く (座標の下)
if 座標の左が壁でない or 座標の左がチェック済みでない フラグ += then 迷路を解く (座標の左)
if 座標の右が壁でない or 座標の右がチェック済みでない フラグ += then 迷路を解く (座標の右)
if フラグ が 0 then 座標を壁と同様にする
}

なんと言われようとかかないが。
301デフォルトの名無しさん:2007/12/16(日) 17:10:04
>>288
すいません間違えましたこちらでお願いします

[1] 授業単元: 計算幾何学
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5532.txt
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler5.5
 [3.3] 言語: C
[4] 期限: 12月18日
[5] その他の制限:特にありません。よろしくお願いします
302デフォルトの名無しさん:2007/12/16(日) 19:54:14
>>298
原型ほとんどないw
303277:2007/12/16(日) 20:00:03
>>298
ふざけないで
真面目に書いてください(^^;
304デフォルトの名無しさん:2007/12/16(日) 20:15:26
真面目だぜぇ。
305デフォルトの名無しさん:2007/12/16(日) 20:55:30
>>286
正午はPM12時だよ
俺も最初は信じられなかったが
ググってみるとそう定義されてるらしいんだ……

そもそも12時間制で12時というのは存在しないんだけどな
8進数で8が無い、16進数で16がない、10進数で10がない(繰り上げる)ように
306デフォルトの名無しさん:2007/12/16(日) 21:22:50
>>290
#define PI 3.141592
main()
{
int i,n=0;
struct complex x,y;
double d1=0.0,d2=0.0,t;
do{
scanf("%d",&n);
fflush(stdin);
}while(n<3);
t = 360.0 / n;
for(i=1;i<n+1;i++){
x=complex_input(cos(i*t*PI/180.0),sin(i*t*PI/180.0));
if(i<n)
y=complex_input(cos((i+1)*t*PI/180.0),sin((i+1)*t*PI/180.0));
else
y=complex_input(cos(t*PI/180.0),sin(t*PI/180.0));
d1+=distance_to_zero(x);
d2+=distance_point_to_point(x,y);
}
printf("%lf\n%lf\n",d1,d2);
}
main()をこれに差し替えればQ2・Q3のnを任意の数で計算できます。
#defineはプログラムの先頭のほうに追加してください。
307デフォルトの名無しさん:2007/12/16(日) 21:32:05
改行が多いので数回に分けて投稿します。
よろしくお願いします。
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
穴埋め問題

コメントを手がかりに、次のプログラムの空欄を埋めてください。


include <stdio.h>

int main(void)
{
int total = 0;
int i = 0, j = 0;

/* for文1 */
for(i = 0; i < 100; i++){
/* i が 7 の倍数ならば、for 文 2 の
処理をしないで繰り返しを続行 */
if((i % 7) == 0)
[ 空欄 1 ] ;

/* for 文 2 */
for(j = 0; j < 100; j++){
/* 条件に合えば、for 文 2 から抜ける */
if(((i + j) % 7) == 0)
[ 空欄 2 ] ;
308307:2007/12/16(日) 21:32:36

/* 条件に合えば、
これ以上処理せずに、for 文 2 を続行 */
else if(((i + j) % 13) == 0)
[ 空欄 3 ] ;

/* 条件に合えば、この関数から抜ける */
else if(((i + j) == 189))
[ 空欄 4 ] 0;

total += j;
}
}

return 0;
}
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 今日から1週間
[5] その他の制限: 特になし

よろしくお願いいたします。
309デフォルトの名無しさん:2007/12/16(日) 21:45:06
>>307
空欄1 continue
空欄2 break
空欄3 continue
空欄4 return 0
310307:2007/12/16(日) 21:50:16
回答ありがとうございます。
311278:2007/12/16(日) 21:52:49
>>296
>>300
本当にありがとう御座いました。無事解決しました。
312デフォルトの名無しさん:2007/12/16(日) 22:23:12
[1] 授業単元:C言語
[2] 問題2 3行3列を入力し、転置行列を表示させなさい。ただし、行列の転置を求める関数を用いること。
実行結果
ma[1][1]:1
  ・・・
ma[3][3]:9
行列
 1 2 3
 4 5 6
 7 8 9
の転地行列は
 1 4 7
 2 5 8
 3 6 9
です。

  問題3 複数の数列のべき乗を求める関数を作成せよ。入力する数(10個以下)と南条するかはキーボードから入力させること。
       関数は二つの配列と二つの通常変数を引数にもち、戻り値はvoid型とする(つまり戻り値なし)。つまり(関数名をpowmeとする)次のような形:powme(配列,配列,一般変数,一般変数)
実行結果
10個以下の整数を入力します。
何個の整数を入力しますか?:3
何乗しますか?:4
3個の整数を入力してください。 1個目:2 2個目:3 3個目:5
4乗した結果を表示します。 1個目:16 2個目:81 3個目:625

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:2007年12月18日
[5] その他の制限:関数を始めたところです。
313 ◆GdpvmS95ZI :2007/12/16(日) 22:31:14
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5536.txt
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限:2007年12月17日00:45まで
[5] その他の制限:

宜しくお願いします。
314デフォルトの名無しさん:2007/12/16(日) 23:37:37
315デフォルトの名無しさん:2007/12/17(月) 00:21:35
[1] プログラミング入門
[2]• ファイルから数値データを読み込み,その数値の平均をファイルに書き込むプログラ
ムを作成する
• 数値データは全部で100行(ファイルには実際に100 行以上存在している)
• 数値データの入っているファイルは授業用HP にある.なおデータは実数である.
ファイル名: kadai.dat    下記がkadai.datのファイル
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5538.txt

• 平均を書き込むファイル名はheikin.dat とする.平均はすべてのデータの平
均とする。以下のファイルの穴埋形式
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5540.txt

[3] 環境
 [3.1] Windows
 [3.2] コマンドプロンプト 秀丸
 [3.3]C
[4] 12月18日18時
[5] 宜しくお願いいたします
316デフォルトの名無しさん:2007/12/17(月) 00:37:37
>>312
当方で確認した環境は Windows XP, 処理系は cygwin(gcc 3.4.4) です。
転置行列:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5541.txt
べき乗:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5542.txt
317デフォルトの名無しさん:2007/12/17(月) 00:49:03
>>316
ありがとうございます。
これを読んで自分でもできるように勉強します。
318デフォルトの名無しさん:2007/12/17(月) 01:06:41
319318:2007/12/17(月) 01:10:25
あーfopenの.\\は余計かも
kadai.datは実行ファイルと同じフォルダにあると仮定してるから違ったらファイルパス書き換えてやって
320デフォルトの名無しさん:2007/12/17(月) 01:35:40
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5544.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12/19まで
[5] その他の制限:基本的なデータ構造(スタック、リスト、キューなど)は習っています
よろしくお願いします
321デフォルトの名無しさん:2007/12/17(月) 05:06:15
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5547.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12/18
[5] その他の制限:
・ファイルを指定すると単語(printfなど)を数えて、単語と個数を表示する。
・このプログラムの構造自体はそのままに、部分的に改造する。
・このプログラムを、単語ではなくアルファベットの個数を数えるようにする。

例:「error」の場合
元 error 1

後 e 1, o1, r 3

よろしくお願いします。
322デフォルトの名無しさん:2007/12/17(月) 07:39:56
[1] 授業単元:C言語
[2] 問題文: 適当な整数を入力し次の数から一番近い数を表示せよ。その時その数が何個目かも表示せよ。{21,3,12,40,84,55,8,71}
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2007年12月21日まで]
[5] その他の制限:

よろしくお願いします。
323デフォルトの名無しさん:2007/12/17(月) 11:01:37
>>322
#include <stdio.h>
#include <stdlib.h>

int main(void) {
int x, i, j, temp, temp2;
int str[]={21,3,12,40,84,55,8,71}, str2[8][2];
printf("整数を入力してください:");
scanf("%d", &x);
for(i=0;i<8;i++) {
str2[i][0] = abs(str[i]-x);
str2[i][1] = i;
}
for(i=0;i<7;i++) {
for(j=7;j>i;j--) {
if(str2[j-1][0]>str2[j][0]) {
temp = str2[j][0];
temp2 = str2[j][1];
str2[j][0] = str2[j-1][0];
str2[j][1] = str2[j-1][1];
str2[j-1][0]= temp;
str2[j-1][1]= temp2;
}
}
}
printf("一番近い数は%dで%d番目です\n", str[str2[0][1]], str2[0][1]+1);
return 0;
}
324デフォルトの名無しさん:2007/12/17(月) 11:21:50
授業単元:
問題文:問題1
数値[int型]を入力し、ポイント変数を使って数値を2倍するプログラムを作成しなさい
実行画面
数値入力=>10
結果:20

問題2#
2つの数値[int型]を入力し、ポイント変数を使って数値を入れ換えるプログラムを作成しなさい
実行画面
数値1入力=>10
数値2入力=>20
入れ換え後:10 20
環境 ボーランド
OS:Windows
コンパイラ名とバージョン:gcc
言語:C
期限:
325デフォルトの名無しさん:2007/12/17(月) 11:26:46
>>323ありがとうございます。でもstr使わずに作る事は出来ないでしょうか?
326デフォルトの名無しさん:2007/12/17(月) 11:31:52
配列を使うなってか?
327デフォルトの名無しさん:2007/12/17(月) 11:32:43
なんでstr使いたくないんだ?
328デフォルトの名無しさん:2007/12/17(月) 11:43:44
>>326すいません。自分の勘違いでした。ありがとうございました。
>>627strに何か特殊な意味があるかと思ったので。
329デフォルトの名無しさん:2007/12/17(月) 13:14:26
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク):()
<クラス作成>
(1)「干支」クラス(基本)を作成する
(2)「干支」クラス(基本)クラスから派生した「子」クラス,「丑」クラス・・・「亥」クラス(計12個)を作成する
<準備>
(3)main関数で「干支」(基本)クラスのポインタ変数を用意する
(4)main関数で派生クラスのインスタンスを全て作成する(計12個)
(5)初期値として(3)のポインタに「子」オブジェクトを格納する
<アルゴリズム>
(6)乱数を発生させ(0〜11の範囲),出た数字分(3)のオブジェクトを1つづつずらしなさい(乱数で3が出たら「子」→「丑」→「寅」→「卯」)なお,ここで,typeid()を用いて,現在の(3)のポインタの状態を調べてずらしていくこと。
(7)(6)を繰り返し,「亥」になったら終了しなさい。なお,繰り返しているときはどの干支になっているかを表示すること

[3] 環境
 [3.1] OS: XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/12/19 10:00
[5] 特に無し

よろしくお願いします
330デフォルトの名無しさん:2007/12/17(月) 13:55:55
これ強いAI作ると5万や10万貰えるらしい 

【囲碁?】囲連星のAIを作ってみよう【連珠?】
http://pc11.2ch.net/test/read.cgi/gamedev/1154589225/
331デフォルトの名無しさん:2007/12/17(月) 14:24:11
[1] 授業単元: プログラミング言語
[2] 問題文:
hドライブのogawaフォルダ配下のkyuuyo.datからデータを入力し、
そのデータを金額とした時の金種の一覧を表示するプログラムを
作成せよ。
但し、kyuuyo.datファイルはint型の複数データが格納されたバイナリファイルとする。

【実行例】
額/種 10000 5000 2000 1000 500 100 50 10 5 1
419377 41 1 2 0 0 3 1 2 1 2
[3] 環境
 [3.1] XP
 [3.2] VC++2005
 [3.3] 言語: C++
[4] 期限: 12/19
[5] その他の制限: なし

>>229と同じ課題で、既に>>235に返答がついているのですが
出来ればどなたかC++で作って頂けないでしょうか。
宜しくお願い致します。
332デフォルトの名無しさん:2007/12/17(月) 14:32:29
>>324

#include <stdio.h>

int main(){
int *p1,*p2,nullpo;

/* 問題1 */
printf("数値入力=>");
scanf("%d",p1);

printf("結果:%d\n",*p1 << 1);


/* 問題2# */
printf("数値1入力=>");
scanf("%d",p1);
printf("数値2入力=>");
scanf("%d",p2);

*p1 ^= *p2 ^= *p1 ^= *p2;
printf("入れ換え後:%d %d\n",*p1,*p2);

return 0;
}
333デフォルトの名無しさん:2007/12/17(月) 14:33:14
kind[]をvector<int>にするとか?
valueを使う直前に(関数の途中で)定義するとか
あとはprintfをcoutにするとか、ファイルI/Oをfstreamにするとか…

どれか1つやっただけで、Cじゃコンパイルできなくなる(2番目のはコンパイラによっては
許可してるかもしれんが)ので、C++と言えなくはないぞ。
334デフォルトの名無しさん:2007/12/17(月) 16:41:47
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 2つのファイルにそれぞれ20個の整数が保存されている。これら2つのファイルから交互に整数を
とってきて新たなファイルに書き出せ。

テストケース
ファイル1に保存されている整数: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
ファイル2に保存されている整数: 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40
新たなファイルへの出力: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4]期限:2007年12月18日まで
[5]その他の制限:特になし

よろしくお願いします。
335デフォルトの名無しさん:2007/12/17(月) 16:42:22
どなたか>>121よろしくお願いします。
336デフォルトの名無しさん:2007/12/17(月) 17:02:32
337デフォルトの名無しさん:2007/12/17(月) 17:09:56
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5531.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/17
[5] その他の制限:なし
338デフォルトの名無しさん:2007/12/17(月) 21:18:08
>>332
これはひどい
339デフォルトの名無しさん:2007/12/17(月) 21:29:43
ワラタ
>>332は最高
340デフォルトの名無しさん:2007/12/17(月) 21:35:36
[1]単元
プログラミング
[2]問題
多次元配列の構造体をあるメンバによってソートする。
ソートにはqsortを用いる。
num[][]をnum[][].tensuでソートするといったものです。
[3]環境
Linux
C
gccコンパイラ
[4]いつまでというものでもないのですがかなりさしせまっています。
できれば早くお願いします。
[5]その他
特になし。

宜しくお願いします。
341デフォルトの名無しさん:2007/12/17(月) 21:43:30
342デフォルトの名無しさん:2007/12/17(月) 21:53:08
>>338-339
Borland6じゃ

#include <stdio.h>

int main(void)
{
int *p;

scanf("%d",p);
getchar();
printf("%d",*p);

getchar();

return 0;
}

でもコンパイル通るし、画面に表示できるし、エラーでないから笑えないんだけどな。
charポインタもscanfで文字列を取り込めるし。
343デフォルトの名無しさん:2007/12/17(月) 21:58:00
笑い所はそこじゃないと思うけどまあいいや
344デフォルトの名無しさん:2007/12/17(月) 22:45:11
>>277のアプリ作る問題興味があるんだけど、>>298のでいいのか?
345デフォルトの名無しさん:2007/12/17(月) 22:50:14
xorswapは好きだ
346デフォルトの名無しさん:2007/12/17(月) 23:09:36
>>344
興味があるならやれば良いじゃないか。
先に回答されていても"私のコードの方が美しい"(ナルシスト風に)
と思うならUpした方が良い。Upするときには是非、
"貴様のコードは美しくない"とか"私の美しいコードを見よ"とか
ナルシスト風の言葉を添えてくれ
347デフォルトの名無しさん:2007/12/17(月) 23:10:54
>>331
#include <iostream>

const char filename[] = "h:\\ogawa\\kyuuyo.dat";

int main(void)
{
  FILE *fp = fopen(filename, "rb");
  int sum = 0, money[] = {10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1};
  int i, n = sizeof(money)/sizeof(money[0]);
  int cnt[sizeof(money)/sizeof(money[0])] = {0};
 
  if(!fp) return perror(filename), 1;
  if(!fread(cnt, n, sizeof(cnt[0]), fp)) return 1;
  fclose(fp);
 
  for(i = 0; i < n; i++) sum += cnt[i]*money[i];
  printf("額/種");
  for(i = 0; i < n; i++) printf("%6d", money[i]);
  printf("\n%6d", sum);
  for(i = 0; i < n; i++) printf("%6d", cnt[i]);
  printf("\n");
 
  return 0;
}
348デフォルトの名無しさん:2007/12/17(月) 23:14:36
ただの電話帳じゃないすか
349275:2007/12/17(月) 23:27:42
>>306

全て完璧にやって頂き、本当に有難うございました。
自分もいつか皆様にお役にたてるように…勉強がんばります。
350デフォルトの名無しさん:2007/12/17(月) 23:56:55
>>340
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct{ int tensu;}Hoge;
int cmp_tensu(Hoge *p, Hoge *q){ return p->tensu - q->tensu;}
int main(void){
  Hoge num[10][10];
  int i, j;
  srand((unsigned int)time(NULL));
  for(i = 0; i < 10; i++)
    for(j = 0; j < 10; j++)
      num[i][j].tensu = rand()%100;
  printf("before sort\n");
  for(i = 0; i < 10; i++){
    for(j = 0; j < 10; j++)
      printf("%3d ", num[i][j].tensu);
    printf("\n");
  }
  qsort(num, 100, sizeof(int), (int (*)(const void *, const void *))cmp_tensu);
  printf("after sort\n");
  for(i = 0; i < 10; i++){
    for(j = 0; j < 10; j++)
      printf("%3d ", num[i][j].tensu);
    printf("\n");
  }
  return 0;
}
351デフォルトの名無しさん:2007/12/18(火) 00:22:21
>>346
解答に興味があるから、是非もっと簡潔なコードが見たいなと。
352デフォルトの名無しさん:2007/12/18(火) 00:58:31
外部変数でやりとりしろってこと?
353デフォルトの名無しさん:2007/12/18(火) 01:23:18
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5553.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 12月18日
[5] その他の制限: 制限などは問題文と一緒にあります
わからなくて困ってます。
時間のあるかたよろしくお願い致します
354331:2007/12/18(火) 03:33:14
>>333
>>347

アトバイスと回答、有難うございました。
本当に助かりました。
355デフォルトの名無しさん:2007/12/18(火) 07:16:58
[1] 授業単元:プログラミング言語II
[2] 問題文(含コード&リンク):
円周率πの近似値を乱数の生成を使って作成しなさい。
乱数生成はrand()関数を使用しなさい。
全ての変数を局所変数として宣言し、発生させる乱数の数nを10,100,1000,2000,5000,10000個として、それぞれ円周率πの近似値を求めなさい。(拡張性を考慮して)乱数の数nを引数として、そのときのπの近似値を返り値とする関数を定義しなさい。
double pai_calc(int);
原理は、 0<=x<=1, 0<=y<=1の範囲の座標(x,y)を乱数でn個発生させ、そのうちのm個が1/4円内に入ったとすると(条件:x^2+y^2<=1)、その割合は近似的に正方形と1/4円の面積比に等しい。すなわち1:π/4 = n:mの関係式から円周率πの値を近似する。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:2007年12月19日24:00まで
[5] その他の制限:なし
よろしくお願いします。
356デフォルトの名無しさん:2007/12/18(火) 08:53:54
>>355
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>

double pai_calc(int n)
{
int i, m = 0;
for (i=0; i < n; ++i) {
double x,y;
x = (double)rand()/RAND_MAX;
y = (double)rand()/RAND_MAX;
if (pow(x,2.0)+pow(y,2.0) <= 1.0) ++m;
}
return (double)m/n*4.0;
}

int main(void)
{
int trial[] = {10,100,1000,2000,5000,10000};
int i=0;
srand((unsigned int)time(NULL));
for (i=0; i < sizeof(trial)/sizeof(trial[0]); ++i)
printf("trial: %d => %f\n", trial[i], pai_calc(trial[i]));
return 0;
}
357デフォルトの名無しさん:2007/12/18(火) 10:07:00
[1] 授業単元:プログラミング言語II
[2] 問題文(含コード&リンク):
 ファイルに30個の整数が空白で区切られて保存されている。1以上30以下の整数を入力として受け付けて,
その個数分だけファイルからデータを読み込み,その総和を求めよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:2007年12月19日24:00まで
[5] その他の制限:なし
よろしくお願いします。
358デフォルトの名無しさん:2007/12/18(火) 11:12:30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
12進数の文字列str[100](0~9,A(10),B(11)を10進数に変化する関数を以下に
記述しなさい。ただしプロトタイプ宣言は以下を利用すること。
int twtoi(char str[]);

[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] borand5.5
 [3.3] 言語: (C++)
[4] 期限: ([2007年12月18日まで]

よろしくお願いします。
359デフォルトの名無しさん:2007/12/18(火) 11:23:04
/* >>358 */
/* #include <stdlib.h> if needed. */
int twtoi(char str[])
{
return (int) strtol(str, NULL, 12);
}
360デフォルトの名無しさん:2007/12/18(火) 11:29:47
C++だからこっちのがいいな

#include <cstdlib>
int twtoi(char str[])
{
return (int) std::strtol(str, NULL, 12);
}
361359:2007/12/18(火) 11:35:16
だって授業単元がC言語なんだもん(TT
362デフォルトの名無しさん:2007/12/18(火) 12:37:59
[1] 授業単元:C
[2] 問題文: 問@以下のプログラムをもとにして,標準入力から受け取った文字を 「2進数表示したもの」と「その補数」を表示するプログラムを作成しなさい.
ビット演算子を用いてプログラムを作成すること.
問A以下のプログラムをもとに,標準入力から0以上の整数を 1 つ受け取り (scanf を用いて整数を符号無し整数型 unsigned 型の変数に読み込む), 8で割った余りを計算するプログラムを作りなさい.
ビット演算子を用いてプログラムを作成すること.
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:任意
 [3.3] 言語: C
[4] 期限: ([2007年12月19日15:00まで]
[5] その他の制限:特になし
363デフォルトの名無しさん:2007/12/18(火) 12:38:31
問@
#include <stdio.h>
#include <stdlib.h>

void printBinary(char);

int main(void)
{
char ch;

printf("Input character: ");
scanf("%c", &ch);
printBinary(???????);
printBinary(???????);

return 0;
}


void printBinary(char x)
{
int i;

for (i= ???????; ???????; i--) {
???????
}
putchar('\n');
}

364デフォルトの名無しさん:2007/12/18(火) 12:39:35
問A
#include <stdio.h>
#include <stdlib.h>
void printBinary2(unsigned);
int shou8(unsigned);int main(void)
{
unsigned n;
printf("Input non-negative integer: ");
scanf("%d", &n);
printBinary2(???????);
printBinary2(???????);
printf("%d %% 8 = %d", n, shou8(n));
return 0;
}void printBinary2(unsigned x){
int i;
for (i = ???????; ???????; i--) {
???????}
putchar('\n');}
int shou8(unsigned x)
{int i, j=1, sum=0;
for (i = ???????; ???????; i++) {
if( ??????? ){
??????? }
j *= 2;
}return(sum);}
362、363です
問@Aの解答お願いします
365デフォルトの名無しさん:2007/12/18(火) 12:59:14
>>364
>8で割った余り
>int shou8(unsigned);
余りなのに関数名は商か
関数命名センスがないねその先生
366デフォルトの名無しさん:2007/12/18(火) 13:30:04
>>363
#include <stdio.h>
#include <stdlib.h>

void printBinary(char);

int main(void)
{
char ch;

printf("Input character: ");
scanf("%c", &ch);
printBinary(ch);
printBinary(-ch);

return 0;
}


void printBinary(char x)
{
int i;

for (i = 8; i; i--) {
putchar((x >> i - 1 & 1) + '0');
}
putchar('\n');
}
367366:2007/12/18(火) 13:43:44
>>364
#include <stdio.h>
#include <stdlib.h>
void printBinary2(unsigned);
int shou8(unsigned);
int main(void)
{
unsigned n;
printf("Input non-negative integer: ");
scanf("%d", &n);
printBinary2(n);
printBinary2(0 - n);
printf("%d %% 8 = %d", n, shou8(n));
return 0;
}
void printBinary2(unsigned x){
int i;
for (i = 8 * sizeof(int) - 1; i >= 0; i--) {putchar((x >> i & 1) + '0');}
putchar('\n');
}
int shou8(unsigned x)
{
int i, j=1, sum=0;
for (i = 0; i < 3; i++) {
if(x >> i){sum += j;}
j *= 2;
}
return(sum);
}
368デフォルトの名無しさん:2007/12/18(火) 13:49:54
[1] 授業単元: プログラミング演習
[2] 問題文:頂点座標が(0,0),(1,√3),(2,0)である正三角形の各辺を再帰的に
2分割(分割点は線分の中点)するプログラムを作成しなさい。
なお、任意に決めた回数だけ再帰呼び出しをすること。

[3] 環境
 [3.1] OS: Windows xp
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: [2007年12月19日17:00まで]
[5] その他の制限: 特になし
369デフォルトの名無しさん:2007/12/18(火) 13:52:48
368の者です。
実行結果は求めた座標を表示できれば大丈夫なのでよろしくお願いします。
370デフォルトの名無しさん:2007/12/18(火) 15:51:22
#include<stdlib.h>
const char EOS='\0';
void main(char A[], char S[], char D[], char B[]){
int Aidx,Sidx,Didx,Bidx,Idx;
Aidx=0;
Bidx=0;
while(A[Aidx]!=EOS){
if(A[Aidx]==S[0]){
Idx=Aidx;
Sidx=0;
do{
Sidx=Sidx+1;
Aidx=Aidx+1;
}
while(A[Aidx]==S[Sidx]&&A[Aidx]!=EOS);
if(S[Sidx]==EOS){
Didx=0;
while(D[Didx]!=0){
B[Bidx]=D[Didx];
Didx=Didx+1;
Bidx=Bidx+1;
}
}
else {
B[Bidx]=A[Idx];
Aidx=Aidx+1;
Bidx=Bidx+1;
}
}
B[Bidx]=EOS;
}
371デフォルトの名無しさん:2007/12/18(火) 15:54:11
int main(){
char A[]="aabcabb";
char S[]="ab";
char D[]="ABC";
char B[100];
Replace(A,S,D,B);
printf("%s\n",B);
return 0;
}

>>370をmain関数の上につけて実行すると、
33: 宣言の構文エラー(関数 main(char *,char *,char *,char *) )
41: 宣言に ; がない(関数 main(char *,char *,char *,char *) )
41: 複合文に } がない(関数 main(char *,char *,char *,char *) )
とエラーが出るのですが、;も}も抜けてるところはないとおもうのですが、間違っているところがあれば教えてください。
372デフォルトの名無しさん:2007/12/18(火) 15:58:00
どうやってそんな発想に至ったかを知りたい
373デフォルトの名無しさん:2007/12/18(火) 16:08:59
>>370-371
インデントつけりゃ分かるだろ
void Replace(char A[], char S[], char D[], char B[]){
int Aidx,Sidx,Didx,Bidx,Idx;
Aidx=0;
Bidx=0;
while(A[Aidx]!=EOS){
if(A[Aidx]==S[0]){
Idx=Aidx;
Sidx=0;
do{
Sidx=Sidx+1;
Aidx=Aidx+1;
}
while(A[Aidx]==S[Sidx]&&A[Aidx]!=EOS);
if(S[Sidx]==EOS){
Didx=0;
while(D[Didx]!=0){
B[Bidx]=D[Didx];
Didx=Didx+1;
Bidx=Bidx+1;
}
}
else {
B[Bidx]=A[Idx];
Aidx=Aidx+1;
Bidx=Bidx+1;
}
}
B[Bidx]=EOS;
}
しっかりと}が一個足りない
374373:2007/12/18(火) 16:09:52
すまん、2chじゃインデントできないんだったw
とにかくよく数えろ、1個足りん
375370:2007/12/18(火) 16:13:59
どうもありがとうございます。
エラーがあとひとつになりました。

宣言の構文エラー(関数 main(char *,char *,char *,char *) )

ってどういうことでしょうか?
376デフォルトの名無しさん:2007/12/18(火) 16:16:12
>>375
普通は、main()の引き数は int argc, char ** argv と決まっているから。
#つーか、どこからその気色悪いI/Fが出てきたんだか。
377373:2007/12/18(火) 16:20:53
>>375
>>370-371のやつだとmainが二個あるけど、それは?
こっちじゃあ括弧足して一つ目の関数名をReplaceとやらに変えたらエラー出なかったが。
378367:2007/12/18(火) 16:28:04
>>364
問2を間違えた
#include <stdio.h>
#include <stdlib.h>
void printBinary2(unsigned);
int shou8(unsigned);
int main(void)
{
unsigned n;
printf("Input non-negative integer: ");
scanf("%d", &n);
printBinary2(n);
printBinary2(0 - n);
printf("%d %% 8 = %d", n, shou8(n));
return 0;
}
void printBinary2(unsigned x){
int i;
for (i = 8 * sizeof(int) - 1; i >= 0; i--) {putchar((x >> i & 1) + '0');}
putchar('\n');
}
int shou8(unsigned x)
{
int i, j=1, sum=0;
for (i = 0; i < 3; i++) {
if(x >> i){sum += j;}
j *= 2;
}
return(sum);
}
379デフォルトの名無しさん:2007/12/18(火) 16:33:38
>>377
最初のmainをReplaceに変え忘れていました。
無事実行できました、どうもありがとうございました。

でも実行画面に何にも表示されないのは成功しているんだろうか・・・
380367:2007/12/18(火) 16:34:49
>>364
問1も何かおかしいと思ったら……
scanf("%c", &ch);
→scanf("%d", &ch);
問題ミスですね
先生に言ったらポイントもらえるんじゃね
381デフォルトの名無しさん:2007/12/18(火) 16:35:32
>>379
バグがある
てかいい加減スレチ
質問スレへどうぞ
382デフォルトの名無しさん:2007/12/18(火) 16:40:07
C言語でお願いします。
以下の仕様を満たすプログラムを作成せよ。

・文字列(char型の配列)host宣言をし、初期化する。
(グローバル変数でもオート変数でも、どちらでもよい。)
・hostの要素(ABCDEFG.ac.jp)を、文字コードの小さい順に自動的にソートし、ソート前の文字列とソート後の文字列を、同じ行内に並べて出力する。


・手動でソートしてはならない。
・ソート前後の文字列が同じ行内に出力されていないものを、とりあえず受け取るが減点する。
383デフォルトの名無しさん:2007/12/18(火) 16:56:16
>>368
#include <stdio.h>
#include <math.h>
#define N 10
typedef struct {double x,y;} point;
void print_triangle(point *p){
int i=0;
printf("Triangle :");
for(; i<3; ++i){printf(" (%.4f,%.4f)",p[i].x,p[i].y);}
putchar('\n');
}
void mid_triangle(point *p, unsigned n){
int i=0;
point temp;
temp.x = p[0].x + p[1].x + p[2].x;
temp.y = p[0].y + p[1].y + p[2].y;
for(; i<3; ++i){
p[i].x = (temp.x - p[i].x) / 2;
p[i].y = (temp.y - p[i].y) / 2;
}
print_triangle(p);
if (--n) mid_triangle(p,n);
}
int main(){
point p[3];
p[0].x = 0; p[0].y = 0;
p[1].x = 1; p[1].y = sqrt(3);
p[2].x = 2; p[2].y = 0;
print_triangle(p);
mid_triangle(p,N);
return 0;
}
384デフォルトの名無しさん:2007/12/18(火) 17:20:03
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
2元連立微分方程式
(dx1/dt) = f1(x1,x2,t)
(dx2/dt) = f2(x1,x2,t)

の右辺を計算する


void dfunc( double *dx1, double *dx2, double x1t, double x2t, double t ){

*dx1 = x2t;
*dx2 = -x1t - (x1t - t) * (x1t - t) * (x1t - t) + t + 0.1;
}
という関数が与えられている。ただし、dx1はf1を戻すためのポインタ、dx2はf2を戻すためのポインタ、
x1tはx1(t)を関数に渡すための引数、x2tはx2(t)を関数に渡すための引数、tは時刻tを関数に渡すための引数である。

この関数を利用して、指定時刻tに対応するx1,x2の状態遷移(範囲 -2≦x1≦2 -2≦x2≦2)を計算するプログラムを作成せよ。
ただし、状態遷移を計算する点(x1,x2)は最低25個とする。このプログラムにt=0,1をそれぞれ入力したときの各点の状態遷移を
出力(5×5の表など)せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:明後日
[5] その他の制限:特にありません

お願いします。
385デフォルトの名無しさん:2007/12/18(火) 17:26:13
[1] 授業単元: プログラミング演習
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5552.txt
[3] 環境
 [3.1] OS: linux
 [3.2] gccコンパイラ
 [3.3] 言語: C言語
[4] 期限: [2007年12月20日17:00まで]
[5] その他の制限: 明解C言語(入門編)使用 期限間近なのでよろしくお願いします


386デフォルトの名無しさん:2007/12/18(火) 17:37:11
>>382
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void bogosort(char *str){
const char len = strlen(str);
int i,r;
srand(time(NULL));
while(1){
for(i=1; i<len; ++i){
const char tmp = str[i];
str[i] = str[r = rand()/(RAND_MAX+1.0)*(i+1)];
str[r] = tmp;
}
for(i=1; i<len && str[i-1] <= str[i]; ++i);
if(i==len) break;
}
}

int main(){
char host[] = "ABCDEFG.ac.jp";

printf("%s",host);
bogosort(host);
printf("→%s",host);
return 0;
}
387355:2007/12/18(火) 18:19:31
>>356
素早い回答ありがとうございます!助かりました。
388デフォルトの名無しさん:2007/12/18(火) 19:11:09
typedef struct {

double x;
double y;

} point;

を使ってキーボードから3点の2次元座標値(x, y)を読み込み,
3点から作られる3角形の面積Sを出力するプログラムを作成せよ

Cです。お願いします。
389デフォルトの名無しさん:2007/12/18(火) 19:27:25
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):(1.時間制約スケジューリング手法とは?
2.時間制約スケジューリング手法はどのように利用されるか?
3.時間制約スケジューリング手法としてどのようなものがあるか?

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: なし
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)なし
[4] 期限: ([2008年12月22日18:00まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
なし
390デフォルトの名無しさん:2007/12/18(火) 19:46:47
>>388
>1を読め。

>>389
スレタイを読め。
391デフォルトの名無しさん:2007/12/18(火) 22:17:02
[1] 授業単元:経路選択アルゴリズム
[2] 問題文(含コード&リンク):
以下の手順を従い、経路選択アルゴリズムを評価せよ。

通信の発生:ランダムに送受信ノードを決定する。
通信の確定:与えられた送受信ノードの経路を決定し、その経路上のリンクの空き容量を1Mbpsだけ減少させる。
         ただし、空き容量のないリンクが存在する場合、この通信は確立しなかったものとして、何も行わない。
通信の終了:n回前に発生した通信の経路上の空き容量を1Mbpsだけ増加させる。ただし、その通信が確立していなかった場合には何も行わない。

評価     :10000回の通信を発生させ、そのうちで確立できなかった通信の割合(呼損率)を求める。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: どちらでも可
[4] 期限: 明日の昼くらいまで
[5] その他の制限: プログラムは拾えたのですが(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5554.txt)、どこに対象となるグラフを入力していいか分からず困っています。
各ノード(0〜9)間のリンク容量(Mbps)は以下のとおりです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5555.txt
左と真ん中の値がノードの番号で右がリンク容量です。
392デフォルトの名無しさん:2007/12/18(火) 23:37:24
>>388

これ作ってて、俺、高校数学の知識が抜けまくってるなぁと実感した。
とりあえず、3平方の定理と余弦定理、逆余弦と正弦を使って無理矢理やった。

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

struct _point
{
double x;
double y;
};

typedef struct _point POINT;

double PointsToLen(POINT Point0,POINT Point1)
{
double result,dx,dy;
dx=abs(Point0.x-Point1.x);
dy=abs(Point0.y-Point1.y);
result = sqrt ((dx*dx)+(dy*dy));
return result;
}
393デフォルトの名無しさん:2007/12/18(火) 23:37:53
int main()
{
POINT Points[3];
double Len01,Len12,Len20;
double rad;//Len01とLen12の間の角の角度[rad]
double s;//面積
int count;

//値の入力
for(count=0;count<=2;count++)
{
printf("Point[%d].x=",count);scanf("%lf",&(Points[count].x));
printf("Point[%d].y=",count);scanf("%lf",&(Points[count].y));
}

//各辺の長さの計算
Len01=PointsToLen(Points[0],Points[1]);
Len12=PointsToLen(Points[1],Points[2]);
Len20=PointsToLen(Points[2],Points[0]);

rad=acos(((Len01*Len01)+(Len12*Len12)-(Len20*Len20))/(2*Len01*Len12));

s=(Len01*Len12*sin(rad))/2;

printf("三角形の面積は %lf です。",s);

return main();
}
394デフォルトの名無しさん:2007/12/19(水) 00:08:06
>>388
こうすれば簡単
#include <stdio.h>
#include <math.h>
struct _point
{
double x;
double y;
};
int main()
{
int i;
double s=0;
struct _point p[3];
for(i=0;i<3;i++) {
printf("Point%d : ",i);
scanf("%lf %lf",&(p[i].x),&(p[i].y));
}
for(i=0;i<3;i++)
s+=p[i].x*(p[(i+1)%3].y-p[(i+2)%3].y);
s=fabs(s)/2;
printf("S = %lf\n",s);
return 0;
}
395デフォルトの名無しさん:2007/12/19(水) 00:26:37
【質問テンプレ】
[1] 授業単元:オートマトン(C言語演習)
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5557.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 19日夜くらいまで
[5] その他の制限: ポインタ等は学んでいますがあまりよく理解していないので
         配列だけでできるのであればポインタはできるだけ避けて欲しい
         のですが大変なようなら使用されても大丈夫です。
         制限をつけて申し訳ないのですがよろしくお願いします。
396デフォルトの名無しさん:2007/12/19(水) 00:29:41
397デフォルトの名無しさん:2007/12/19(水) 01:46:01
>>388
#include <stdio.h>
#include <math.h>

typedef struct{
double x;
double y;
}point;

int main(){
point p[3]; //座標
double s; //面積
int i;

//読み込み
for(i = 0;i < 3;i++){
printf("x%d = ",i+1);
scanf("%lf",&p[i].x);
printf("y%d = ",i+1);
scanf("%lf",&p[i].y);
}

//計算
s = 0.5 * abs((p[2].y-p[0].y)*(p[1].x-p[0].x)
- (p[2].x-p[0].x)*(p[1].y-p[0].y));

printf("S = %.2f",s);

return 0;
}
398デフォルトの名無しさん:2007/12/19(水) 01:48:34
>>385
#include <stdio.h>
#include <string.h>
#define N 100
static const char input[] = "0123456789"
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int main(int argc, char *argv[]){
  FILE *fp;
  char end[N], n = 0, buf[2*N], *p;
  int i, j, table[N][sizeof(input) - 1], start, cur, ch, next;

  if(argc < 2) return fprintf(stderr, "usage : %s filename\n", argv[0]), 1;
  if((fp = fopen(argv[1], "r")) == NULL) return perror(argv[1]), 1;

  for(i = 0; i < N; i++) for(j = 0; j < sizeof(input) - 1; j++) table[i][j] = i;
  fscanf(fp, "%d\n", &start);
  fgets(buf, sizeof(buf), fp);
  for(p = strtok(buf, " "); p != NULL; p = strtok(NULL, " ")) end[n++] = atoi(p);
  while(fscanf(fp, "%d %c %d\n", &cur, &ch, &next) == 3)
    if((p = strchr(input, ch)) == NULL) return fprintf(stderr, "illegal character\n"), 1;
    else table[cur][p - input] = next;

  scanf("%s", buf);
  for(i = 0, j = start; buf[i] != '\0'; i++)
    if((p = strchr(input, buf[i])) == NULL) return fprintf(stderr, "illegal character\n"), 1;
    else j = table[j][p - input];

  for(i = 0; i < n; i++) if(j == end[i]) break;
  if(i != n) printf("accept\n");
  else printf("reject\n");
  return 0;
}
399398:2007/12/19(水) 01:54:35
弱い決定性がよくわかってなかったっぽい……
ま、いいか
400デフォルトの名無しさん:2007/12/19(水) 03:00:21
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):Unixコマンドのcat(ファイル内容を標準出力)に当たるプログラムを作成せよ
実行例
% ./program sample_file
(以下、sample_fileの内容を標準出力)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日中
[5] その他の制限:読み込むファイルの文字数に制限を設けず、文字列を読み込むごとに必要なメモリを動的に確保すること
どなたかお願いします
401デフォルトの名無しさん:2007/12/19(水) 03:23:29
>>400

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


int main(int argc, char* argv[]){
  FILE* fp;
  char c;
  if (argc == 1) {
    printf("usage: mycat filename\n");
    exit(1);
  }
  fp = fopen(argv[1], "r");
  if (!fp) {
    printf("file can not open\n");
  }

  while (1) {
    c = fgetc(fp);
    if (c == EOF) {
      break;
    }
    putchar(c);
  }
  fclose(fp);
  return 0;
}


全角スペースを置換して使ってね
402デフォルトの名無しさん:2007/12/19(水) 03:34:46
[1] 授業単元:応用情報処理演習(C++)
[2] 問題文(含コード&リンク):

ttp://up2.viploader.net/upphp/src/vlphp107412.jpg

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++Compiler
 [3.3] 言語: C++
[4] 期限: 19日中
[5] その他の制限:特になし


宜しくお願いいたします!!
適当でも、一部でも良いです(><;;;)
403デフォルトの名無しさん:2007/12/19(水) 04:04:49
>>400
cat ってこんな奴だよね(マニュアルを抜粋)
cat は指定したファイルそれぞれの内容を標準出力へ書き出す。 FILE が一つ
も与えられないと標準入力から読み込む。また FILE が `-' だった場合には、
そのファイルには標準入力が用いられる。

本当にこれを作るの?
それとも Windows のコマンドプロンプトにある type 相当のコマンドを作るの?
404デフォルトの名無しさん:2007/12/19(水) 04:20:14
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5558.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 12月19日24:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
まだ基本的なことしか学んでいないので、できるだけif文やfor文などの初歩的な構文でお願いします。
405388:2007/12/19(水) 11:28:22
ありがとうございました。
406デフォルトの名無しさん:2007/12/19(水) 12:52:00
398さんのプログラムを実行すると、すべてacceptとなってしまうんですが・・・
407デフォルトの名無しさん:2007/12/19(水) 12:54:01
398さんのプログラムを実行すると、すべてacceptとなってしまうんですが・・・
408デフォルトの名無しさん:2007/12/19(水) 12:55:18
>>402
#include <iostream>
#include <cmath>
using namespace std;

class iPolar2{
double x,y;
public:
iPolar2(double x,double y) : x(x),y(y){}

double getr(){return sqrt(x*x+y*y);}
double gett(){return atan(y/x);}
};

int main(){
int x,y;

cout << "xを入力してください > ";
cin >> x;
cout << "yを入力してください > ";
cin >> y;

iPolar2 ip(x,y);
cout << "rの値は" << ip.getr() << endl;
cout << "θの値は" << ip.gett() << endl;

return 0;
}
409デフォルトの名無しさん:2007/12/19(水) 12:57:02
>>408
しまったmain()中のx,yはdouble型だ
410デフォルトの名無しさん:2007/12/19(水) 13:40:21
[1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):時間制約スケジューリングの利用例を挙げよ


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: なし
 [3.3] 言語: なし
[4] 期限: 12月20日まで
[5] その他の制限:特になし

お願いします
411404:2007/12/19(水) 13:48:46
質問させていただきましたが、自分で考えた結果、問2と問3はできました。
ですが問1が頭がこんがらがってしまって全然分かりません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5558.txt
の問1だけお願いします。
412デフォルトの名無しさん:2007/12/19(水) 14:06:13
>>383
ありがとうございます。
でも自分の説明が悪かったせいか元の正三角形の中に再帰的に正三角形
が作られています。元の正三角形の各辺を再帰的に2分割したいのですが
どうすればいいのでしょうか?考えても全然わかりません。
どなたかわかる人がいればよろしくお願いします。
413パニパニ少女:2007/12/19(水) 14:22:00
すみませんがこの問題誰か解けませんか?

9行9列の整数型配列変数uzu[ ] [ ]に1から1づつカウントアップ下値を渦巻き状に代入するプログラムを作る。整数型の配列変数はuzu[9 ] [9 ]とする。

こんな感じにしたいんですよ。

1 2 3 4 5 6 7 8 9
32 33 34 35 36 37 38 39 10
31 56 57 58 59 60 61 40 11
30 55 72 73 74 75 62 41 12
29 54 71 80 81 76 63 42 13
28 53 70 79 78 77 64 43 14
27 52 69 68 67 66 65 44 15
26 51 50 49 48 47 46 45 16
25 24 23 22 21 20 19 18 17
414デフォルトの名無しさん:2007/12/19(水) 14:58:29
マルチすんなカス
415デフォルトの名無しさん:2007/12/19(水) 15:19:19
i 0->8
j 0->8
i 8->0
j 8->1
i 0->7
j 1->7

416デフォルトの名無しさん:2007/12/19(水) 15:22:45
フラグたてろ。ぶつかったら曲がれ。
417デフォルトの名無しさん:2007/12/19(水) 15:37:10
>>411
これ解が整数じゃないのもあるね
ア = 3
イ = 22.8
ウ = -90
418デフォルトの名無しさん:2007/12/19(水) 15:39:42
>>417
int型に小数を渡したら切り捨てられるだろ
つまりあの条件じゃ解なし
419デフォルトの名無しさん:2007/12/19(水) 15:48:15
>>403
はい。そうです
Unixコマンドのcatと同じ動作をするプログラムを製作すると言う課題です
fgets()だと読み込む文字数に限界が生じてしまうので、困っています……orz
>>401
ソースありがとうございます
メモリ確保を行わないのなら、fgetcを回すという方法もありましたか
420デフォルトの名無しさん:2007/12/19(水) 15:48:19
>>413
int min,max
int i;
int number;
number=0;
min=0;
max=8;
while(max>=min){
for(i=min;i<=max;i++){
uzu[min][i]=number;
number+=1;
}
for(i=min+1;i<=max;i++){
uzu[i][max]=number;
number+=1;
}
if(max=min) break;
for(i=max-1;i>=min;i--){
uzu[max][i]=number;
number+=1;
}
for(i=max-1;i>=min+1;i--){
uzu[i][min]=number;
number+=1;
}
min+=1;
max-=1;
}

とか
421デフォルトの名無しさん:2007/12/19(水) 15:49:33
あ、ifの場所一個上だった
422デフォルトの名無しさん:2007/12/19(水) 16:45:39
>>402
もやってあげて!
423398:2007/12/19(水) 16:57:50
>>406-407
以下を変更
for(i = 0; i < N; i++) for(j = 0; j < sizeof(input) - 1; j++) table[i][j] = i;

for(i = 0; i < N; i++) for(j = 0; j < sizeof(input) - 1; j++) table[i][j] = -1;

else j = table[j][p - input];

else if((j = table[i][p - input]) == -1) return printf("reject\n"), 1;
424デフォルトの名無しさん:2007/12/19(水) 17:09:50
catのバッファって制限ありそうだけどな。
425デフォルトの名無しさん:2007/12/19(水) 17:12:09
>>402
(c)
データ読む部分作れるなら計算ルーチンは
double vect[n];//解のセット
double matrix[n][n];///三角行列
int i,j;
double val
for(i=0;i<n;i++){
val=0;
for(j=n-i;j<=n-1;j++) val+=vect[j]*matrix[n-1-i][j];
vect[length-1-i]-=val;
vect[n-1-i]=vect[n-1-i]/matrix[n-1-i][n-1-i];
}
で求まります.
426デフォルトの名無しさん:2007/12/19(水) 17:12:34
[1] 授業単元: 計算機演習
[2] 問題文(含コード&リンク):
片付けてもらいたい課題は↓
1:テキスト表現の二分木を読み込んで、tree型の内部表現データを作る関数を作りなさい。
(関数値はできた木へのポインタ。入力データに誤りは無いものとしてよい)
2:tree型のデータ(内部表現の木の根、頂点へのポインタ)を引数とし、その木のテキストによる表現を印字する関数を作りなさい。
3:5種類以上のテキスト表現の木のデータに対して読み込み関数とその結果を印字するmain関数を作りなさい。

テキスト表現とツリー型については↓
ttp://up2.viploader.net/upphp/src/vlphp107551.jpg

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:22日まで
[5] その他の制限:よろしくお願いします
427デフォルトの名無しさん:2007/12/19(水) 18:21:15
>>413
#include<stdio.h>
#include<math.h>
#define SIZE 9
#define N (SIZE*SIZE-n)
#define M (int)sqrt(N)
int main(void){
int uzu[SIZE][SIZE]={0},x=0,y=0,z=0,n;
for(n=1;n<=SIZE*SIZE;n++){
uzu[x][y]=n;
if(N==M*M||N==M*(M+1))
z=(z+1)%4;
x+=(z==0)-(z==2);
y+=(z==1)-(z==3);
}
for(y=0;y<SIZE;y++){
for(x=0;x<SIZE;x++)
printf("%4d",uzu[x][y]);
printf("\n");
}
return 0;
}
428デフォルトの名無しさん:2007/12/19(水) 18:41:55
>>419
どうやったって、ファイルサイズより長い行はありえないんだから、
ファイルサイズ分のバッファ確保するとかw
429デフォルトの名無しさん:2007/12/19(水) 19:39:05
>>426
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5559.txt
3がどういう意味かよく分からなかったから適当に書いたんで、直しておいて。
430デフォルトの名無しさん:2007/12/19(水) 19:39:50
[1] 授業単元:情報処理
[2] 問題文

入力された整数を2進数に直して表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 2.4
 [3.3] 言語: C
[4] 期限:一月七日
[5] その他の制限:関数を用いる。
431384:2007/12/19(水) 19:46:02
お願いします!
432デフォルトの名無しさん:2007/12/19(水) 19:58:50
>>398
指摘箇所を変更してみても全てacceptと表示されてしまいます。
433デフォルトの名無しさん:2007/12/19(水) 20:04:06
>>430
#include <stdio.h>

int main(){
int n,i;
printf("Integer->");scanf("%d",&n);
for(i=sizeof(int)*8;i&&!(n>>i-1);--i);
for(i?0:(i=1);i;--i)putchar((n>>i-1&1)+'0');
return 0;
}
434デフォルトの名無しさん:2007/12/19(水) 20:16:14
>>432
>>398とは別人だが、>>423
else if((j = table[i][p - input]) == -1) return printf("reject\n"), 1;

else if((j = table[j][p - input]) == -1) return printf("reject\n"), 1;
の間違いだと思われ

というかそこ直す前でもrejectは表示されたが…
435デフォルトの名無しさん:2007/12/19(水) 20:36:29
>>347氏へ
331では無いのですが同じ課題をやっている者です。
さっそく試しにやってみたのですがkyuuyo.datの指定位置だけ変更して読み込ませてみると
額/種 10000 5000 2000 1000 500 100 50 10 5 1
-722909651419377488769286094398989385588483411208469414122448810289121

となってしまいます・・
もしよければ解決策をお願いしたいのですが・・
436デフォルトの名無しさん:2007/12/19(水) 20:46:58
>>435
kyuuyo.datをうpろだにあげてくれ
437デフォルトの名無しさん:2007/12/19(水) 21:08:48
>>436
5560.zip
にうpしておきました、よろしくお願いします。
438デフォルトの名無しさん:2007/12/19(水) 21:27:23
>>437 >>331
#include <stdio.h>

int main(void)
{
  char filename[] = "c:\\ogawa\\kyuuyo.dat";
  FILE *fp = fopen(filename, "rb");
  int money[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1};
  int sum, i, n = sizeof(money)/sizeof(money[0]);

  printf("額/種");
  for(i = 0; i < n; i++) printf("%6d", money[i]);
  printf("\n");
  while(fread(&sum, 1, sizeof(sum), fp)){
    printf("%6d", sum);
    for(i = 0; i < n; i++){
      printf("%6d", sum/money[i]);
      sum %= money[i];
    }
    printf("\n");
  }
  fclose(fp);

  return 0;
}
439デフォルトの名無しさん:2007/12/19(水) 21:34:37
>>384
いまいち使われてる言葉が良くわからんのだが・・・
状態遷移って数式的には何を指すの?dx1/dt,dx2/dt????
あと、*dx1=f1(x1,x2,t),*dx2=f2(x1,x2,t) ってことかい?
だったらdfunnkにx1,x2を代入して
その状態遷移って値をつくればいいんじゃないかい
440デフォルトの名無しさん:2007/12/19(水) 21:58:33
>>438
表示することができました
どうもありがとうございました〜
441デフォルトの名無しさん:2007/12/19(水) 21:59:48
でもそれはC++じゃねーわな
442デフォルトの名無しさん:2007/12/19(水) 22:10:27
>>439
x1方向の変化と
x2方向の変化の事だとおもいます。
つまりdx1/dtとdx2//dtですかね?

関数のポインタのところになにをわたすのかわからなくて・・・
443デフォルトの名無しさん:2007/12/19(水) 22:28:52
<A href="http://pc11.2ch.net/test/read.cgi/tech/1197132472/433" target=_blank>>>433</a><br>
ど素人のため初心者でもわかるくらい簡単にしてもらえませんか?
444デフォルトの名無しさん:2007/12/19(水) 22:41:27
>>442 これでいいのかな?
今いちあってる自信がないが・・・
int main()
{
 double xx[5][5];
 double fx1,fx2;
 double t;
 int i,j;
 t=0;
printf("t=0\n");
 for(i=0;i<5;i++){
  for(j=0;j<5;j++){
   dfunc( &fx1, &fx2, i-2, j-2, t );
   printf("(%1.2f,%1.2f) ",fx1,fx2);
  }
  printf("\n");
 }
 t=1;
 printf("t=1\n");
 for(i=0;i<5;i++){
  for(j=0;j<5;j++){
   dfunc( &fx1, &fx2, i-2, j-2, t );
   printf("(%1.2f,%1.2f) ",fx1,fx2);
  }
  printf("\n");
 }
 return 0;
 }
445デフォルトの名無しさん:2007/12/19(水) 22:45:35
>>429
ありがとうございます。

ためしに実行してみましたがうまく動きません。
コマンドラインから処理するテキストを引数渡しであってますか?

コマンドプロント上で
実行ファイル 処理するテキストファイル
で実行しています。
446デフォルトの名無しさん:2007/12/19(水) 22:58:48
>>444
自己レスだがxxは意味ない変数で全く使わなかったw
x1(=i-2),x2(=j-2)も出力すると見やすくなるかも
447デフォルトの名無しさん:2007/12/19(水) 23:05:27
>>445
使い方はそれで合ってる
データファイルの文法が間違っていた場合の対策は何もしてないから、変な文書を入れると簡単にバグる

ちなみに>>426に示されたjpg中にあるやつは、NULLが一個抜けてるから駄目よ
それと、空白は半角空白で。
448デフォルトの名無しさん:2007/12/19(水) 23:08:28
368,412の者です。
まだ解決していないのでどなたかよろしくお願いしますm(__)m
449デフォルトの名無しさん:2007/12/19(水) 23:09:39
>>443
#include<stdio.h>
void f(int x){
int i=0,j,array[31];
while(x!=0){
array[i]=x%2;
x=x/2;
i=i+1;
}
if(i==0) printf("0");
else for(j=i-1;j>=0;j--) printf("%d",array[j]);
}
int main(void){
int x;
scanf("%d",&x);
f(x);
return 0;
}
450デフォルトの名無しさん:2007/12/19(水) 23:32:20
>>444
あたいが+NANとかなるところがあります。
451デフォルトの名無しさん:2007/12/19(水) 23:32:24
452デフォルトの名無しさん:2007/12/19(水) 23:40:30
>>447
実行できました!ありがとうございます。
案の定jpgの例で試してました^^;確かにNULLが足りませんね。
実行できたの今度は改造してみます
ありがとうです。
453デフォルトの名無しさん:2007/12/20(木) 00:13:40
>>450 俺の環境では下のようになるんだけど・・・
あ、%1.2fが良くないから%.2fに直してくれるかな

t=0
(-2.00,10.10) (-1.00,10.10) (0.00,10.10) (1.00,10.10) (2.00,10.10)
(-2.00,2.10) (-1.00,2.10) (0.00,2.10) (1.00,2.10) (2.00,2.10)
(-2.00,0.10) (-1.00,0.10) (0.00,0.10) (1.00,0.10) (2.00,0.10)
(-2.00,-1.90) (-1.00,-1.90) (0.00,-1.90) (1.00,-1.90) (2.00,-1.90)
(-2.00,-9.90) (-1.00,-9.90) (0.00,-9.90) (1.00,-9.90) (2.00,-9.90)
t=1
(-2.00,30.10) (-1.00,30.10) (0.00,30.10) (1.00,30.10) (2.00,30.10)
(-2.00,10.10) (-1.00,10.10) (0.00,10.10) (1.00,10.10) (2.00,10.10)
(-2.00,2.10) (-1.00,2.10) (0.00,2.10) (1.00,2.10) (2.00,2.10)
(-2.00,0.10) (-1.00,0.10) (0.00,0.10) (1.00,0.10) (2.00,0.10)
(-2.00,-1.90) (-1.00,-1.90) (0.00,-1.90) (1.00,-1.90) (2.00,-1.90)
454デフォルトの名無しさん:2007/12/20(木) 00:14:20
GK(Porteros)
01 "CASILLAS"     Iker Casillas Fernandez     1981/05/20 185cm/79kg
13 "CODINA"       Jordi Codina Rodriguez     1982/04/27 188cm/79kg
25 "DUDEK"       Jerzy Dudek             1973/03/23 187cm/81kg

DF(Defensas)
02 "M. SALGADO"     Michel Salgado Fernandez     1975/10/22 174cm/75kg
03 "PEPE"             Kleper Laveran Lima Ferreira "Pepe" 1983/02/26 187cm/81kg
04 "SERGIO RAMOS"   Sergio Ramos Garcia        1986/03/30 183cm/73kg
05 "CANNAVARO"     Fabio Cannavaro           1973/09/13 175cm/72kg
12 "MARCELO"         Marcelo Vieira da Silva Junior   1988/05/12 174cm/73kg
15 "DRENTHE"        Royston Drenthe           1987/04/08 172cm/78kg
16 "HEINZE"         Gabriel Ivan Heinze          1978/04/19 178cm/72kg
21 "METZELDER"      Christoph Metzelder          1980/11/05 193cm/84kg
22 "TORRES"          Miguel Torres Gomez         1986/01/28 185cm/75kg
455デフォルトの名無しさん:2007/12/20(木) 01:40:19
ありがとうございます。
ちなみに配列使わなくても解けるんですか?
456デフォルトの名無しさん:2007/12/20(木) 01:42:23
457デフォルトの名無しさん:2007/12/20(木) 03:20:40
[1] 授業単元:情報
[2] 問題文

int a[3]に格納されている値のうち2番目に大きいものを、できるだけ高速に求めよ

[3] 環境
 [3.1] OS: LinuxFedora Core 6
 [3.2] コンパイラ名とバージョン: gcc 4.1
 [3.3] 言語: C
[4] 期限:12/20 17:00
[5] その他の制限:qsort等の標準ライブラリ使用不可

よろしくおねがいします。
458デフォルトの名無しさん:2007/12/20(木) 03:34:30
>>448
#define R 0.5
void mid_tr(point *tr,int n)
{
point mt[4][3];
int i,j,index[] = {0,1,2,0,1};
for(i = 0;i < 3;i++){
mt[i][0] = tr[i];
for(j = 1;j < 3;j++){
mt[i][j].x = tr[i].x + R * (tr[index[i+j]].x - tr[i].x);
mt[i][j].y = tr[i].y + R * (tr[index[i+j]].y - tr[i].y);
}
}
for(i = 0;i < 3;i++) mt[3][i] = mt[i][1]; // 真ん中は不要?
for(i = 0;i < 4;i++) print_triangle(mt[i]);
if(n-- > 0) for(i = 0;i < 4;i++) mid_tr(mt[i],n);
}
459Senkei ◆WxeOUXI8.6 :2007/12/20(木) 04:31:23
[1] 授業単元:プログラミング言語U
[2] 問題文 線形リストを完成せよ
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:12/21 13:00
[5] その他の制限: ファイル→http://sleep-soul0131.hp.infoseek.co.jp/senkei.zip
ほぼ完成しております。見てほしいところは指定した場所にデータを挿入する
のがうまくいきません。(ソースでいうsenkei_list.cの156行目のユーザ関数
の176行目の部分)
よろしくお願いします。
460Senkei ◆WxeOUXI8.6 :2007/12/20(木) 04:53:17
>>457

データ数が3つならバブルソートでOK?

#include <stdio.h>
#define MAX 3
int main(void)
{
char input[12];
int a[3]={任意の数字,任意の数字,任意の数字};
int i , j , tmp;

for(i=MAX-1;i>0;i--){
for(j=0;j<i;j++){
if(a[j]<a[j+1]){
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("二番目に大きい数は”%d ”です\n",a[1]);
printf("Pless any key\n");
scanf("%s",input);

return 0;
}
461デフォルトの名無しさん:2007/12/20(木) 05:06:44
>>459 なかなか見やすいソースだ。
177行目のifを以下に変更すれば手前に入ってくれる。
if(ptr->next->no==S_Number){
    tmp=CallocNode();
    tmp->no=x->no;
    strcpy(tmp->name, x->name);
    tmp->next = ptr->next;
    ptr->next=tmp;
    break;
}
462Senkei ◆WxeOUXI8.6 :2007/12/20(木) 05:18:18
>>461 こんな朝早くにありがとうございます
ここだけできなくて助かりました。
463デフォルトの名無しさん:2007/12/20(木) 05:19:59
>>457
とりあえずやってみた
#include <stdio.h>
#define vswap2(x,y)  {  t=a[x];  a[x]=a[y];  a[y]=t;  }
#define vswap3(x,y,z)  {  t=a[x];  a[x]=a[y];  a[y]=a[z];  a[z]=t;  }
int main(void)
{
  int t, a[3] = { -10, 10, -1 };/* 適当な数字で */
  /* バイトニックソート */
  if(a[0]<a[1])if(a[0]<a[2])if(a[1]<a[2]) ;/* ソート済み */
      else vswap2(2,1)
    else if(a[1]<a[2])/* ありえない */;
      else vswap2(2,1)
  else if(a[0]<a[2])if(a[1]<a[2]) vswap2(1,0)
      else/* ありえない */;
    else if(a[1]<a[2]) vswap3(0,1,2)
      else vswap2(0,2)
  printf("2番目に大きい数:%d\n", a[1]);
  return 0;
}
464デフォルトの名無しさん:2007/12/20(木) 08:56:39
[1] 授業単元: 心理実験
[2] 問題文

ポッゲンドルフ錯視を用いた調整法のプログラムを作成せよ

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VisualStudio.NET
 [3.3] 言語: C++
[4] 期限: 2007年12月21日10:00まで

よろしくお願いします。
465デフォルトの名無しさん:2007/12/20(木) 14:03:35
typedef struct {
char name[20]; /* 名前 */
int height; /* 身長 */
float weight; /* 体重 */
} student;

student構造体の配列を用い,5名分の学生データを体重の軽い順に並べ替え(ソート),並べ替える前と並べ替えた後の結果を表示するプログラムを作成せよ
466デフォルトの名無しさん:2007/12/20(木) 14:05:14

クソの集まり創価学会

偽善者が政治活動、公明党

キチガイ集団が政治活動、公明党

池田狂信ネズミ講が政治活動、公明党

騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
467デフォルトの名無しさん:2007/12/20(木) 14:06:09

クソの集まり創価学会

偽善者が政治活動、公明党

キチガイ集団が政治活動、公明党

池田狂信ネズミ講が政治活動、公明党

騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
468デフォルトの名無しさん:2007/12/20(木) 14:06:35

クソの集まり創価学会

偽善者が政治活動、公明党

キチガイ集団が政治活動、公明党

池田狂信ネズミ講が政治活動、公明党

騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
469デフォルトの名無しさん:2007/12/20(木) 14:23:49
hドライブのogawaフォルダ配下のkyuuyo.datからデータを入力し、そのデータを
金額としたときの金種の一覧を表示するプログラムを作成せよ。
ただし、kyuuyo.datファイルはint型の複数データが格納されたバイナリファイルとする。

テスト問題なんですが、まったくわかりません。。。
470デフォルトの名無しさん:2007/12/20(木) 14:27:13
469です。

あと5分で作れといわれてます。。。誰か助けてください。。
471デフォルトの名無しさん:2007/12/20(木) 14:35:31
隣の席のやつに聞けばいいじゃん
472デフォルトの名無しさん:2007/12/20(木) 14:36:16
[1] プログラミング言語
[2] hドライブのogawaフォルダ配下のkyuuyo.datからデータを入力し、そのデータを
金額としたときの金種の一覧を表示するプログラムを作成せよ。
ただし、kyuuyo.datファイルはint型の複数データが格納されたバイナリファイルとする。
[3] 環境
 [3.1] WindowsXp
 [3.2] Microsoft Visual Studio Academic Edition 2005
 [3.3] C++
[4] あと5分・・・。
473デフォルトの名無しさん:2007/12/20(木) 14:37:05
>>471
隣のやつも後ろのやつも斜め後ろも誰も分かってません・・・。
474デフォルトの名無しさん:2007/12/20(木) 14:38:31
ちょwwwwwwおまwwwwwwww
475デフォルトの名無しさん:2007/12/20(木) 14:51:07
476デフォルトの名無しさん:2007/12/20(木) 14:54:51
ogawa先生の授業はどうなってんだろう
477デフォルトの名無しさん:2007/12/20(木) 15:01:31
2007/12/16 19:12
478デフォルトの名無しさん:2007/12/20(木) 15:47:20
464です。
どなたか教えていただけませんか?
どうしたら良いのかまったく分かりません。
479デフォルトの名無しさん:2007/12/20(木) 15:55:21
>>464
>ポッゲンドルフ錯視を用いた調整法のプログラムを作成せよ
だったら詳しく書きなさい
480デフォルトの名無しさん:2007/12/20(木) 16:10:30
>>479
すみません。
問題に「ポッゲンドルフ錯視を用いた調整法のプログラムを作成せよ」
としか書いていないのでどうしたらいいのか分からないのです。
481デフォルトの名無しさん:2007/12/20(木) 16:26:15
先生に聞いてきなさいよ
482デフォルトの名無しさん:2007/12/20(木) 16:30:32
>>481
そうしてみます。
お手数かけました。
483デフォルトの名無しさん:2007/12/20(木) 17:35:56
[1] 授業単元:プログラミング言語1
[2] 問題文(含コード&リンク):
xとyをそれぞれ0から10まで1きざみで変え、そのすべてを組み合わせた平面上の11x11個の点(x,y)を考える.
これらの点のうちで、
y = 1 * ( x + (-4) ) * ( x + (-4) )
y = 7
の2つの線に囲まれた領域内(線上は除く)に含まれる点の数を出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: Cのみ
[4] 期限: 12月22日
[5] その他の制限: #include <stdio.h>だけで解いてください。

どうすればいいかまったくわかりません。お願いします。
484デフォルトの名無しさん:2007/12/20(木) 18:21:28
>>483
こうかな…自信ないけどw
#include<stdio.h>

int main(){
int ten=0,i,j,y;


for(i=0;i<11;i++){
for(j=0;j<11;j++){
y = j*j-8*j+16;
if(y<i && i<7) ten++;
}
}
printf("範囲内にある点の数は%d個",ten);
}
485483:2007/12/20(木) 18:37:30
追記
yの式は勿論y = 1 * ( x + (-4) ) * ( x + (-4) )を簡単にしたやつね
俺が書いた書き方がダメなら、この式に書き換えればokだけど最初に1かけてる意味が分からん…
iがyの点、jがxの点を表してるから、分かりにくかったら変数名変えてくれ
一応手計算で含まれる数が20個って出て、実行結果と合ってたから間違いないはず
486デフォルトの名無しさん:2007/12/20(木) 18:46:30
すまん、こっちの方が効率よかったorz
#include<stdio.h>

int main(){
int ten=0,ty,tx,y;

for(tx=0;tx<11;tx++){
y = tx*tx-8*tx+16;
for(ty=0;ty<11;ty++) if(y<ty && ty<7) ten++;
}
printf("範囲内にある点の数は%d個",ten);
}
487デフォルトの名無しさん:2007/12/20(木) 19:39:32
>>484>>485>>486
納得できてわかりやすいです!ありがとうございます!
1かけてるのは多分CGIの問題だったからだと思います。
488デフォルトの名無しさん:2007/12/20(木) 20:37:20
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
入力した小数が
nanであればerror1
infであればerror2
どちらでもなければその小数を表示するプログラムをつくれ。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 12月20日24:00まで
[5] その他の制限: double型で読み込んでください。
489デフォルトの名無しさん:2007/12/20(木) 22:00:31

[1] 授業単元: プログラミング演習
[2] 問題文:

typedef struct {
char name[20]; /* 名前 */
int height; /* 身長 */
float weight; /* 体重 */
} student;

student構造体の配列を用い,5名分の学生データを体重の軽い順に並べ替え(ソート),並べ替える前と並べ替えた後の結果を表示するプログラムを作成せよ


[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 12月23日24:00まで
[5] その他の制限:なし








490デフォルトの名無しさん:2007/12/20(木) 22:12:13
C言語(C++)

#include <stdio.h>
void put_string(const char str[])
{
unsignetrd i=0;

while(str[i])
putchar(str[i++]);
}

int main(void)
{
char str[100];

printf("文字列を入力してください:");
scanf("%s",str);

put_string(str);
putchar("\n");

return(0);
}

↑の関数をもとにして、文字列を後ろから逆に表示する関数
put_rstringを作成せよ

よろしくお願いします
491デフォルトの名無しさん:2007/12/20(木) 22:29:54
よろしくお願いします。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク): ファイル内容の表示
実行したファイル名を除いたコマンド ライン引数に、
複数個指定したすべてのファイルの内容を標準出力に表示するプログラムを記述してください。
[3] 環境
 [3.1] OS: Windows XP Home
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 今日から一週間
[5] その他の制限: ファイルの入出力の問題です。
492デフォルトの名無しさん:2007/12/20(木) 22:35:40
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
   http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5562.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:特になし

よろしくお願いします
493デフォルトの名無しさん:2007/12/20(木) 22:37:45
[1] 授業単元:Cプログラミング
[2] 問題文http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5561.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語:C
[4] 期限:
[5] その他の制限:よろしくおねがいします。
494デフォルトの名無しさん:2007/12/20(木) 22:43:42
(^o^)ノ <さっさと回答しろクズどもー
495デフォルトの名無しさん:2007/12/20(木) 23:27:38
なんて教科書にのってそうな宿題ばかりなんだ。。。
教科書にのってないような宿題にしろよ。

しかも明らかにのってそうな宿題を2回も貼る馬鹿
496デフォルトの名無しさん:2007/12/20(木) 23:34:33
>>495
うpろだ使ってるだけまだまし。

>>493
問題文から仕様が複数考えられる。ダブルポインタもちょっとイミフ
入力例、出力例をあげてみてくれんか?
497デフォルトの名無しさん:2007/12/20(木) 23:38:40
>>489 1/2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct {
char name[20]; /* 名前 */
int height; /* 身長 */
float weight; /* 体重 */
} student;

//s1の方が軽ければ負の数、s2の方が軽ければ正の数、同じなら0を返す
int studentcmp_weight(const void * s1,const void * s2)
{
int result;
float temp;
temp=((student *)s1)->weight - ((student *)s2)->weight;
if(temp>0)
{
result=(int)ceil(temp);
}
else if(temp<0)
{
result=(int)floor(temp);
}
else
{
result=0;
}
return result;
}
498デフォルトの名無しさん:2007/12/20(木) 23:39:02
>>489 2/2

void OutputStudents(student students[],int studentscount)
{
int i;
printf(" 氏 名 身長 体重\n");
for(i=0;i<studentscount;i++,students++)
{
printf("%12s %4d %6.2f\n",students->name,students->height,students->weight);
}
}

int main(void)
{
student students[5]={{"test1",150,45},{"test2",155,50},{"test5",170,160},{"test3",160,51},{"test4",205,63}};
printf("並び替え前\n");
OutputStudents(students,5);
qsort(students,5,sizeof(student),studentcmp_weight);
printf("並び替え後\n");
OutputStudents(students,5);
}
499デフォルトの名無しさん:2007/12/20(木) 23:47:08
>>493 私はジャンクなんかじゃない!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define swap(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0)
char *str_toupper(char *str){
    char *p = str;
    while(*p != '\0'){
        if(islower(*p)) *p = toupper(*p);
        p++;
    }
    return str;
}
void bsort(char **str, int n){
    int i, j;
    for(i = 0; i < n - 1; i++)
        for(j = i + 1; j < n; j++)
            if(strcmp(str[i], str[j]) > 0)
                swap(char *, str[i], str[j]);
}
int main(int argc, char **argv){
    int i;
    char **p;
    if(argc < 2) return fprintf(stderr, "usage : %s string ...\n", argv[0]);
    p = (char**)malloc((argc - 1)*sizeof(char*));
    for(i = 1; i < argc; i++) p[i - 1] = argv[i];
    for(i = 1; i < argc; i++) str_toupper(p[i - 1]);
    bsort(p, argc - 1);
    for(i = 1; i < argc; i++) puts(p[i - 1]);
    return 0;
}
500デフォルトの名無しさん:2007/12/20(木) 23:48:48
>>490

void put_rstring(const char str[])
{
unsigned int i=0;

while(str[i++]);i--;
while(i-->0)putchar(str[i]);
}
501デフォルトの名無しさん:2007/12/20(木) 23:50:37
489と492の問題って似てる。
502デフォルトの名無しさん:2007/12/20(木) 23:55:46
簡単だから連投してもやられたよ。
503デフォルトの名無しさん:2007/12/21(金) 00:02:15
>>491
#include <stdio.h>

int neko(char *filename){
  FILE *fp = fopen(filename, "r");
  int ch;
  if(!fp) return 0;
  while((ch = fgetc(fp)) != EOF) putchar(ch);
  fclose(fp);
  return 1;
}

int main(int argc, char *argv[]){
  int i;
  for(i = 1; i < argc; i++)
    if(!neko(argv[i]))
      fprintf(stderr, "%sはにゃーよ\n", argv[i]);
  return 0;
}
504488:2007/12/21(金) 00:20:23
ですけど
ちょっと無理そうなので
入力した値が

infかnanであればエラー
そうでなければその値を出力しなさい

っていうのをお願いできますか?
505デフォルトの名無しさん:2007/12/21(金) 01:11:08
>>488 まったく分かりません。
自分で浮動少数を定義して、IEEE754に準拠とかじゃない?
506名無し:2007/12/21(金) 01:16:56
[1] プログラム演習
[2]seiseki.txtというファイルに 総生徒人数(改行)出席番号,国語,数学,英語の順で入っている。この各科目の合計を出力するプログラムを作れ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 今週中
[5] その他の制限:関数・ポインタ・構造体の分野での宿題です。
ファイルを読み込む問題や平均化の問題は既出でしたが、Cだったりしてよくわかりません。お暇な方お願いいたします。

507506:2007/12/21(金) 01:21:54
問題文間違えました。
総生徒人数(改行)出席番号,国語の成績,数学の成績,英語の成績
でした。人数は10000人。成績は100点満点です。よろしくお願いします。
508デフォルトの名無しさん:2007/12/21(金) 02:49:01
今週中って曖昧だな。俺的に今週中は金曜日までだけど一般的にはどうなのかな?
>>492の宿題と格闘してたらこんな時間になっちまったし変なバグが出手もうダメポ
509デフォルトの名無しさん:2007/12/21(金) 02:57:18
一応今週は土曜日までだろう
510デフォルトの名無しさん:2007/12/21(金) 03:15:13
[1] 授業単元: プログラム実習
[2] 問題文(含コード&リンク):
構造体、及びポインタを用いて双方向循環リストを要素数を20個で構築し
指定した2つの番号(scanfを使う) で入れ替えを起こすCプログラムを作れ
[3] 環境
 [3.1] Windows
 [3.2] VC
 [3.3] 言語:Cのみ
[4] 期限: 日曜昼12時まで
[5] その他の制限: 無制限

よろしくお願いします
511デフォルトの名無しさん:2007/12/21(金) 10:14:43
>>320です
締め切りが来週月曜まで延長したので、どなたか今からでも回答をお願いできますでしょうか
512デフォルトの名無しさん:2007/12/21(金) 11:35:30
[1] 情報処理演習
[2] 整数型配列a[]=(1、2、3、4、5、6、7、8、9、10)の要素の合計をポインタ変数を使って求めるプログラムをつくりなさい。
[3] 環境
 [3.1] TurboLinux
 [3.2] シェル コンソール gcc
 [3.3] C++
[4] 期限: 2007年12月28日まで
[5] その他の制限: 無制限
不明な点があったらお手数ですがご質問下さい。
513デフォルトの名無しさん:2007/12/21(金) 12:31:41
>>512
#include <stdio.h>
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10},sum,*p;
for(p=a,sum=0;p-a<sizeof(a);++p)sum+=*p;printf("%d",*p);
return 0;}
514513:2007/12/21(金) 12:32:45
>>512
すまん間違えた
#include <stdio.h>
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10},sum,*p;
for(p=a,sum=0;p-a<sizeof(a);++p)sum+=*p;printf("%d",sum);
return 0;}
515506:2007/12/21(金) 13:12:24
すいません。学生なので今週中は今日までです。わかりにくくてすいませんでした。よろしくお願いします。
516デフォルトの名無しさん:2007/12/21(金) 13:19:41
嘘こけ。土曜も出られるだろ。
517506:2007/12/21(金) 13:24:58
土・日曜日に添削されて月曜日に返されるので締め切りは金曜日です。なんか色々条件が後からついてすいません。はっきり金曜日までと書くべきでした。
518デフォルトの名無しさん:2007/12/21(金) 13:27:03
#include <stdio.h>

template <typename T>
int sum(T *begin, T *end)
{
int sum = 0;
do { sum += *begin; } while (++begin != end);
return sum;
}

int main(int, argv *[])
519デフォルトの名無しさん:2007/12/21(金) 13:31:48
上のは>>512宛てね。間違えて送信しちゃった。

int main(int, argv *[])
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf("%d", sum(a, a + 10) );
return 0;
}

指定された環境での動作チェックはできてないけど。
520513:2007/12/21(金) 13:58:51
ああ、C++だったのかすまん

>>518-519
どうせならSTL使えよw
int sum = std::accumulate(a,a+10,0);
521デフォルトの名無しさん:2007/12/21(金) 14:52:23
>>507
>seiseki.txtというファイルに 総生徒人数
>人数は10000人
人数決まっているのにわざわざファイルに書いてるの?
522デフォルトの名無しさん:2007/12/21(金) 14:54:04
>>378
でやっても余りがちゃんと表示されないんですけど、
どこを直せばいいですか?
523デフォルトの名無しさん:2007/12/21(金) 14:58:24
tanθの値を-360<=θ<=360の範囲で1°刻みにプログラムを作成すること。
ただし、tanは、自分で作った関数の中でのみ使用でき、θの値は
mainの中で決定し、関数へと受け渡すこと。
プログラムの中身
-360,○○○
-359,○○○
   ・
   ・
   ・
360, ○○○

このプログラムをお願いします。
524デフォルトの名無しさん:2007/12/21(金) 15:05:58
if(x >> i){sum += j;}

if((x >> i)&1){sum += j;}
とかにすればおkだと思う。
525507:2007/12/21(金) 15:15:36
>>521
ファイルの一行目が総生徒人数なのですが、それを開いてみると総生徒数は10000人でしたので一応書いてみました。多分一行目を変えても(例えば100人までとかにしても)動くプログラムにしなければいけないのだと思います。
526デフォルトの名無しさん:2007/12/21(金) 15:17:19
[1]プログラミング演習
[2]モンテカルロ法で、
円周率 の近似値を計算せよ。
発生させる点の総数は適宜設定する(大きくすると精度が良くなるが、
計算時間がかかるかもしれない)。
ランダムな位置に点を発生させるには、
乱数rn, rn+1 を発生させて、これをx, y-座標とすればよい。
[3]Linux
[4]c言語
[5]1月5日まで
宜しくお願いいたします。
527522:2007/12/21(金) 15:19:49
>>524
出来ました。
どうもありがとうございました。
528デフォルトの名無しさん:2007/12/21(金) 15:23:06
>>526
#include <stdio.h>
#include <stdlib.h>

int main()
{
double i,imax,n;
double x,y,pi;

n=0.0;
imax=10000000.0; // 乱数の発生回数

for(i=0;i<=imax;i++) {
x=rand()/(RAND_MAX+1.0); //0以上1未満の乱数を生成
y=rand()/(RAND_MAX+1.0);

if((x*x+y*y)<1.0) { //0<=x,y<=1の範囲にある中心原点半径1の
n+=1.0; //扇形の中に乱数による点が入ったらカウントする
}
}

pi=n/imax*4.0; //半径1の円の面積すなわち円周率

printf("%f\n",pi);

return 0;
}

529378:2007/12/21(金) 15:26:13
>>527
すまん、>>378で直したつもりが元と同じの貼り付けちゃったみたい
>>524の通りです。すまん
530デフォルトの名無しさん:2007/12/21(金) 15:28:59
>>525
どうせだからそのファイルうp
531デフォルトの名無しさん:2007/12/21(金) 15:30:51
>>520
それやっちゃうと、「ポインタ変数を使って」を満たせなくならない?
aは配列変数だし。
532デフォルトの名無しさん:2007/12/21(金) 15:48:40
>>320>>511
(1)
#include <stdio.h>
#define MAX_SIZE 100
char stack[MAX_SIZE], cur;
int push(char data){
if(cur >= MAX_SIZE)return 0;
stack[cur++] = data;return 1;
}
char pop(void){
if(cur <= 0)return 0;
return stack[--cur];
}
char top(void){
if(cur <= 0)return 0;
return stack[cur-1];
}
int main(){
while(1){
char c;
switch(c=getchar()){
case '+':case '-':
if(top() == '*' || top() == '/')printf("%c ",pop());
case '*':case '/':
push(c);
break;
case EOF:case '\n':
while((c=pop())!=0)printf("%c ",c);return 0;
default:
printf("%c ",c);break;}}}
533デフォルトの名無しさん:2007/12/21(金) 15:49:59
>>531
うおそれ忘れてた
無粋な突っ込み入れてすんまそん
534デフォルトの名無しさん:2007/12/21(金) 15:51:11
>>523
tan -270 は NaN なの?
535デフォルトの名無しさん:2007/12/21(金) 16:08:56
>>528
ありがとうございました。
536デフォルトの名無しさん:2007/12/21(金) 16:13:21
>>506
#include <iostream>
#include <fstream>
class Student{
  int no, l, m, e;
  friend std::ostream &operator << (std::ostream &os, Student &st){
    os << st.no << " " << st.l << " " << st.m << " " << st.e;
    return os;
  }
  friend std::istream &operator >> (std::istream &is, Student &st){
    is >> st.no >> st.l >> st.m >> st.e;
    return is;
  }
public:
  Student(){no = l = m = e = 0;}
  Student operator + (Student &st){
    Student ret;
    ret.no = no + st.no, ret.l = l + st.l, ret.m = m + st.m, ret.e = e + st.e;
    return ret;
  }
};
int main(){
  Student *p, sum;
  int n;
  std::ifstream ifs("seiseki.txt");
  ifs >> n;
  p = new Student[n];
  for(int i = 0; i < n; ++i) ifs >> p[i];
  for(int i = 0; i < n; ++i) sum = sum + p[i];
  delete [] p;
  return std::cout << sum << std::endl, 0;
}
537506:2007/12/21(金) 16:30:41
>>536
何度ビルドしても 0 0 0 0と表示されてしまいます。お手数ですがよろしくお願いします。
538デフォルトの名無しさん:2007/12/21(金) 16:53:33
>>506 データ数いらないというのを今理解した……一応使うが。
#include <iostream>
#include <fstream>
class Student{
  int no, l, m, e;
  friend std::ostream &operator << (std::ostream &os, Student &st){
    os << st.no << " " << st.l << " " << st.m << " " << st.e;
    return os;
  }
  friend std::istream &operator >> (std::istream &is, Student &st){
    is >> st.no >> st.l >> st.m >> st.e;
    return is;
  }
public:
  Student(){no = l = m = e = 0;}
  Student operator + (Student &st){
    Student ret;
    ret.no = no + st.no, ret.l = l + st.l, ret.m = m + st.m, ret.e = e + st.e;
    return ret;
  }
};
int main(){
  Student tmp, sum;
  int n;
  std::ifstream ifs("seiseki.txt");
  ifs >> n;
  for(int i = 0; i < n; ++i){
    ifs >> tmp;
    sum = sum + tmp;
  }
  return std::cout << sum << std::endl, 0;
}
539デフォルトの名無しさん:2007/12/21(金) 16:57:16
>>523
-360から0までって表示させる意味あんのか?
540デフォルトの名無しさん:2007/12/21(金) 16:59:44
>>539
おまいの存在と同じくらい意味がある
541デフォルトの名無しさん:2007/12/21(金) 17:26:03
>>320>>511
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5563.txt
一レスにおさめようとしたが断念したorz
542541:2007/12/21(金) 17:26:50
あ、>>541は(2)ね。>>532が(1)
543デフォルトの名無しさん:2007/12/21(金) 17:28:50
テスト 
  テスト
544543:2007/12/21(金) 17:29:14
あ、空白空けられるじゃん
545デフォルトの名無しさん:2007/12/21(金) 17:37:13
>>536-538
俺のエスパーによると、点数がカンマ区切りだから正しく読み込めてない
546デフォルトの名無しさん:2007/12/21(金) 19:05:18
>>506
#include <iostream>
#include <fstream>
#include <cctype>

int main()
{
  std::ifstream ifs("seiseki.txt");
  int n, sum[3] = {0};
  char buf[1024], *p;

  ifs.getline(buf, sizeof(buf));
  n = atoi(buf);
  for(int i = 0; i < n; ++i){
    ifs.getline(buf, sizeof(buf));
    p = buf;
    for(int j = 0; j < 3; ++j){
      p = strchr(p, ',');
      sum[j] += atoi((++p));
    }
  }
  std::cout << sum[0] << " "<< sum[1] << " "<< sum[2] << std::endl;

  return 0;
}
547qsort馬鹿:2007/12/22(土) 00:32:25
>>492
風呂に入らなければ間に合ったかも

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct gstudent
{
char name[20]; /*氏名*/
int height; /*身長*/
float weight; /*体重*/
long schols; /*奨学金*/
};
struct gstudent set_gstudent(char name[], int height, float weight, long schols)
{
struct gstudent result;
strcpy(result.name,name);
result.height=height;
result.weight=weight;
result.schols=schols;
return result;
}
void show_gstudent(struct gstudent *gs)
{
printf("%20s %3d %5.1f %ld\n",gs->name,gs->height,gs->weight,gs->schols);
}
548qsort馬鹿:2007/12/22(土) 00:33:37
int cmp_name(const void * gs1,const void * gs2)
{
return strcmp(((struct gstudent *)gs1)->name,((struct gstudent *)gs2)->name);
}
int cmp_height(const void * gs1,const void * gs2)
{
return ((struct gstudent *)gs1)->height-((struct gstudent *)gs2)->height;
}
int cmp_weight(const void * gs1,const void * gs2)
{
double temp=((struct gstudent *)gs1)->weight-((struct gstudent *)gs2)->weight;
if(temp>0)return 1;else if(temp<0)return -1;else return 0;
}
int cmp_schols(const void * gs1,const void * gs2)
{
return ((struct gstudent *)gs1)->schols-((struct gstudent *)gs2)->schols;
}
549qsort馬鹿:2007/12/22(土) 00:34:39
int main(int argc,char ** argv)
{
struct gstudent * pgs;int kensu,count,select;int (*funcs[])(const void *,const void *)={cmp_name,cmp_height,cmp_weight,cmp_schols};
kensu=set_gstudentsFromFile(argv[1],&pgs);
if(pgs==NULL){perror("データ登録失敗");return 1;}
printf("ソート\n氏名(1),身長(2),体重(3),奨学金(4):");
select=getch();
printf("%c\n",select);
if('1'<=select && select<='4')
{
qsort(pgs,kensu,sizeof(struct gstudent),funcs[select-'1']);
}
else
{
printf("並べ替えしません。\n");
}
printf("   氏  名   身長 体重 奨学金\n");
for(count=0;count<kensu;count++)show_gstudent(pgs+count);
if('1'<=select && select<='4')
{
printf("ファイルに書き込みますか? Yes(1),No(2):");
select=0;
while(!('2'==select || select=='1'))select=getch();
printf("%c\n",select);
if(select=='1')
{
if(setstudentsToFile(argv[1],pgs,kensu)!=0)printf("書き込みました。\n");
}
}
free(pgs);
return 0;
}
550506:2007/12/22(土) 02:02:27
>>546
やっぱりできません。値が000と出力されてしまいます。テキストデータは以下のような感じです。わかる方お願いします。
10000
1,59,51,92
2,30,14,91
3,60,67,73
551デフォルトの名無しさん:2007/12/22(土) 04:18:12
>>550
exeのフォルダをコマンドプロンプトで開いてseiseki.txtを置いた後に実行してみる。

C:\task\Debug>task506.exe
0 0 0

C:\task\Debug>dir seiseki.txt
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B070-AEA4 です

 C:\task\Debug のディレクトリ

ファイルが見つかりません

C:\task\Debug>copy C:\task\task506\seiseki.txt .
        1 個のファイルをコピーしました。

C:\task\Debug>task506.exe
149 132 256
552デフォルトの名無しさん:2007/12/22(土) 10:35:17
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5565.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/25
[5] その他の制限:なし
553デフォルトの名無しさん:2007/12/22(土) 11:56:37
[1] 授業単元:情報処理
[2] 問題文: tanθの値-360°<=θ<=360°の範囲で1°刻みでファイルに出力する
プログラミングを作成すること。ただしC言語のtanという命令は、自分が作った
関数の中のみ使用でき、θの値はmainの中で決定し、関数へと受け渡すこと。
また、π=3.14159265358979である。

ファイルの中身

-360,○○○
-359,○○○
  ・
  ・
360,○○○

[3] 環境
 [3.1]XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語++
[4] 期限: 12/25
[5] その他の制限:なし
よろしくお願いします。
554デフォルトの名無しさん:2007/12/22(土) 13:06:15
>>552 確認は全くしていない
#include <stdio.h>
#include <stdlib.h>
#define FMAX 100 /* ファイル名最大値 */
#define LMAX 300 /* 1文の最大値 */
int main() {
FILE *fp;
char filename[FMAX], line[LMAX];
int count=1;
/* ここにプログラムを書く */
printf("ファイル名:");
fgets(filename, sizeof(filename)-1, stdin);
fp = fopen(filename, "r");
if (fp == NULL) {
printf("[%s]は開けません", filename);
exit(1);
}

while (fgets(line, sizeof(line)-1, fp) != NULL) {
printf("%3d : %s", count, line);
count++;
}
return 0;
}
555デフォルトの名無しさん:2007/12/22(土) 13:06:50
>>553
とりあえず作った。問題文にあるとおりにしか作ってないから
#include <stdio.h>
#include <math.h>

#define PI 3.14159265358979

void myfunc(FILE* fp, int d)
{
 :double rad = PI /180 * d;
 :double result;
 :int degree = abs( d );

 :if( degree != 90 && degree != 270 ) {
 : :result = tan( rad );
 : :fprintf( fp, "%d,%lf\n", d, result );
 :} else {/* 別になんにも条件が与えられてないので放置 */
 : :fprintf( fp, "%d,undefined\n", d );
 :}
}
int main( void )
{
 :int i;
 :FILE* fp;

 :fp = fopen( "result.txt", "w" );
 :for( i = -360; i <= 360; i++ ) {
 : :myfunc( fp, i );
 :}
 :fclose(fp);
 :return 0;
}
556555:2007/12/22(土) 13:10:00
すまん置換ミスってた
:消してもらえば良いだけなんだがとりあえずファイルおいとくわ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5566.txt
557デフォルトの名無しさん:2007/12/22(土) 13:14:08
>>554
無責任だったので実行もやってみたら、間違ってた。
fgets(filename, sizeof(filename)-1, stdin);
の後に、改行を消す為
filename[strlen(filename)-1] = '\0';
を追加してくれ。
#include <string.h>もインクルードとして追加ね。
558デフォルトの名無しさん:2007/12/22(土) 14:29:37
[1] 授業単元:コンピュータプログラミング
[2] 問題文:自分と友人の学生番号と氏名を英数小文字で入力し、
1文字飛ばしでアドレスと文字を縦に表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:Fujitsu Fortran & C
 [3.3] 言語: C
[4] 期限: 12/22 
[5] その他の制限: なし
よろしくお願いします。

559デフォルトの名無しさん:2007/12/22(土) 14:57:48
>>558
>自分と友人の学生番号と氏名
無いと作れない

>1文字飛ばしでアドレスと文字を縦に表示する
ここがよくわからないから詳しく
560デフォルトの名無しさん:2007/12/22(土) 15:04:05
>>559
>自分と友人の学生番号と氏名
自分0123jokoizumi 友人4567renon
>1文字飛ばしでアドレスと文字を縦に表示する
縦表示 自分なら02jkiuiみたいなです
561デフォルトの名無しさん:2007/12/22(土) 15:07:06
>>558
#include <stdio.h>
#include <string.h>

int main(void)
{
  int i, len;
  char myid[32], myname[128], fid[32], fname[128];

  scanf("%s%s%s%s", myid, myname, fid, fname);

  puts("my id");
  for(i = 0, len = strlen(myid); i < len; i += 2)
    printf("%p:%c\n", &myid[i], myid[i]);
  puts("my name");
  for(i = 0, len = strlen(myname); i < len; i += 2)
    printf("%p:%c\n", &myname[i], myname[i]);
  puts("friend id");
  for(i = 0, len = strlen(fid); i < len; i += 2)
    printf("%p:%c\n", &fid[i], fid[i]);
  puts("friend name");
  for(i = 0, len = strlen(fname); i < len; i += 2)
    printf("%p:%c\n", &fname[i], fname[i]);

  return 0;
}
562デフォルトの名無しさん:2007/12/22(土) 15:16:44
>>510
#include <stdio.h>
#include <stdlib.h>
struct node{
  int data;
  struct node *prev,*next;
} *list;
void print(void){
  struct node *cur = list->next;
  for(; cur != list; cur = cur->next)printf("%d->",cur->data);printf("%d\n",list->data);}
void insert(int data){
  if(list == NULL){//空の時
    list = malloc(sizeof(struct node));
    list->data = data;list->prev = list->next = list;
  } else {
    struct node *newnode = malloc(sizeof(struct node));
    newnode->data = data;newnode->prev = list;newnode->next = list->next;
    list->next = newnode;newnode->next->prev = newnode;list = newnode;}}
void swap(int a, int b){
  struct node *t[2];int temp;
  if(a==b)return;
  for(t[0] = list; a!=0 && b!=0; --a,--b,t[0] = t[0]->next);
  for(--a,--b,t[1] = t[0]->next; a!=0 && b!=0; --a,--b,t[1] = t[1]->next);
  temp = t[0]->data;t[0]->data = t[1]->data;t[1]->data = temp;}
int main(){
  int i,n,m;
  for(i=1; i<=20; ++i) insert(i);print();
  printf("入れ替える要素を空白区切りで入力してください:");scanf("%d %d",&n,&m);
  swap(n,m);print();return 0;}
563デフォルトの名無しさん:2007/12/22(土) 15:17:29
ところでDivXっていいよね
http://snipurl.com/1vor0
564デフォルトの名無しさん:2007/12/22(土) 15:22:19
div_t result = div(12,5);
printf("12/5=%d…%d",result.quot,result.rem);

こんな関数があるのを今日初めて知った
お前らこれ使えよ
565558:2007/12/22(土) 15:35:09
>>561
出来ました。ありがとうございます。
566デフォルトの名無しさん:2007/12/22(土) 17:46:14
[1] 授業単元:

double型の初期値(たとえば1.5)に適当な数(たとえば1.9)をかけることを繰り返す。

double型の精度を超えたら反復を停止する。∞に発散したと考え、∞になった旨を表示せよ。

[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: なし

お願いします
567デフォルトの名無しさん:2007/12/22(土) 21:05:23
javaとc++ってどっちがむずかしいの?
568デフォルトの名無しさん:2007/12/22(土) 21:27:17
リンゴとブドウはどっちがおいしい?って聞くようなもんだ
569デフォルトの名無しさん:2007/12/22(土) 23:01:58
[1] 授業単元:情報処理
[2] 問題文:画像を読み込み、その画像の特定領域の切り出しを行い別ファイル
      として出力しなさい。
[3] 環境
 [3.1]XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語++
[4] 期限: 12/23
[5] その他の制限:特になし
現在ダイアログベースを使って作成中です。
ペイントのようにマウスを使って範囲を指定し、その部分を切り出して保存をしたい。
ファイルの読み込みと書き出しはできるので、切り出し部分を教えていただければ幸いです。
よろしくお願いします。
570デフォルトの名無しさん:2007/12/22(土) 23:54:08
範囲というのが矩形オンリーなら、vectorに突っ込んだデータから
左下右上座標を入力して、新しいvectorを返すようなクラスを作ればいいんじゃない?
571デフォルトの名無しさん:2007/12/22(土) 23:57:27
>>569
質問を質問で返すようで悪いけど…

MFC使ったwindowsプログラムかな?

あと元の画像の形式とか、
現状でわかっていることをできるだけ教えてくれるとありがたい(例:マウスでの座標指定はできる等)。
572デフォルトの名無しさん:2007/12/23(日) 01:37:10
>>555>>556
ありがとうございます!!!!!!
完璧に仕上がりすぎてて驚きました。
573569:2007/12/23(日) 02:39:19
>>570
C++は始めたばかりで、vectorは使ったことがないのですが
vectorに突っ込むデータとは当然画像データのことですよね?
特定の領域の画像データを普通の配列に突っ込むのとvectorに突っ込むのとでは
どういった違いがあるのでしょうか?

>>571
MFC使ったwindowsプログラムです。
元の画像の形式はDICOMですが、読み込む部分は作成済みなので、bitmapとかと
同様に扱えるはずです。
画像データとして、2次元配列に画素が入っている状態。(a[x][y])
ちなみに画像は2000*2000ととても大きいです。
また、マウスでの座標指定というのが良く分かりませんが、
マウスを左クリックした時のアクションとして、座標を表示することはできます。

かなり言葉足らずですが、宜しくお願いします。
574デフォルトの名無しさん:2007/12/23(日) 02:50:59
>>573
>>570じゃないけど、vectorは一言でいえば可変長配列。
あらかじめ大きさが固定されてるなら配列で処理しても問題ないよ
575506:2007/12/23(日) 04:26:48
>>551 
出来ました。お礼が遅れてすいませんでした!本当にありがとうございました。
576デフォルトの名無しさん:2007/12/23(日) 04:31:16
どっちみち切り取る方は可変にならざるを得ないから、固定配列じゃ厳しい。
2000*2000確保しておけばいいけども、いくらなんでも

切り取るのが常に矩形だとして、
マウスで二点クリックすると、それぞれの座標(10,10) (199,199)とかが得られる。(画像の左下を(0,0)とした場合)
それらの座標で形成される矩形領域がa[x][y]のどこにあたるかを考えて、
新しい配列なりvectorなりに、その部分だけコピーすればいい。

上の例を固定配列で原始的に書くとこんな感じ

char new_img[190][190]
int x=0;
int y=0;
for(int i=10; i<200; ++i){
y=0;
for(int j=10; j<200 ++j){
  new_img[x][y] = a[i][j];
  ++y;
}
++x;
}

どう考えても可変長配列にすべきだな。
コンポーネント数とか色深度とかもあるだろうから、こう単純にはいかないでしょうが。
577デフォルトの名無しさん:2007/12/23(日) 06:44:34
C++,Linux
ルーチンワークで、mi(x座標,y座標,拡大率a)という、
(x,y)にa倍の「み」という文字を表示するコマンドをつくりたいのですが
どうやってつくればよいでしょうか?
1倍の「み」は横幅縦幅ともに50くらいとしておねがいします。
できればforなどの基礎構文で
578デフォルトの名無しさん:2007/12/23(日) 10:03:09
MFCかあ……MFCは分かんね
579デフォルトの名無しさん:2007/12/23(日) 13:14:05
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5567.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/26
[5] その他の制限:なし
580デフォルトの名無しさん:2007/12/23(日) 14:55:08
581 ◆GBoGhxrIJs :2007/12/23(日) 16:34:07
[1] 授業単元: C言語
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5569.txt
        のプログラムを用いて
       http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5570.txt
        のプログラムを作る
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語: C
[4] 期限:24日中
[5] その他の制限:

582デフォルトの名無しさん:2007/12/23(日) 16:57:53
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
(1)8個の整数型配列を宣言し、これらにあらかじめ適当な正の整数を入れる。
その後適当な整数値を読み込み、前の8個の整数の中から最も近い数を探し出力するプログラム

(2)3つの入力があり、1つ目は客の番号、2つ目は商品の番号、3つ目は商品の数を表す。
このような入力を何行か入れた後で「9,9,9」といれると客毎の受注総額を出力するプログラム

[3] 環境
 [3.1] OS: WindowsXP
 [3.2]gcc
 [3.3] 言語: C
[4] 期限: 来年まで
[5] その他の制限: 特になし
よろしくお願いします。

583デフォルトの名無しさん:2007/12/23(日) 17:46:08
>>582
(1)
>>323

(2)
>客毎の受注総額
実行例頼む
584デフォルトの名無しさん:2007/12/23(日) 21:16:23
[1] 授業単元:プログラミング
[2] 問題文:x log(x)の値を計算するプログラム。log(x)は自然対数
入力: xの値 xは正の実数で0を含まない。
出力: 「x=数値 x log(x)=計算結果」 結果は小数点以下8桁まで出力すること。
さらに、xの値を半分にして 出力を10回繰り返す
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12/25
[5] その他の制限:なし
やってみたのですがxlog(x)の結果がおかしいです
どこがおかしいのでしょうか
#include<stdio.h>
#include<math.h>
int main(void)
{
double x;
scanf("%lf",&x);
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
printf("x=%8.6f xlog(x)=%10.8f\n",x,x*exp(x) ); x=x/2;
return 0;
}
585デフォルトの名無しさん:2007/12/23(日) 21:22:29
exp()関数は自然対数の底のx乗を計算する関数
xの自然対数(eを底とする対数)を計算する関数はlog()
586デフォルトの名無しさん:2007/12/23(日) 21:25:28
>>584
使う関数が違うのでは?
x * ln(x) を計算したいのであればコードは
x*log(x)
とすべきでは。
exp(x) は eのx乗を返す
587デフォルトの名無しさん:2007/12/23(日) 21:34:03
即レスありがとうございます!
588デフォルトの名無しさん:2007/12/24(月) 00:39:19
>>532
ありがとうございました
丁寧な回答、感謝です
589デフォルトの名無しさん:2007/12/24(月) 00:44:18
[1] 授業単元:コンピュータ実習
[2] 問題文:半径rの面積を求めて返却する関数circ_areaを
      作成するプログラミング
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Mingw
 [3.3] 言語: C++
[4] 期限: 12月25日0:00まで
[5] その他の制限:特になし
 教科書を参考に実際にやってみたのですが、
 半径に関係なく面積が1になってしまいます。
 素人なもんでどこが間違っているのかわかりません。
 どなたか訂正お願いします。
#include <iostream>
using namespace std;

double circ_area(double r);

int main()
{
double r;
cout << "半径:";
cin >> r;
cout << "面積は" << circ_area << "です。 \n";
return 0;
}
double circ_area(double r)
{
double circ_area = r * r * 3.14;
return circ_area;
}
590デフォルトの名無しさん:2007/12/24(月) 00:48:39
>>589
表示したいのは circ_area(r) じゃね?
591デフォルトの名無しさん:2007/12/24(月) 00:53:19
>double circ_area(double r)
>{
> double circ_area = r * r * 3.14;
> return circ_area;
>}

これっておkなんだっけ?
592591:2007/12/24(月) 00:54:40
ああ、関数はグローバルで変数はローカルだからおkか
すまそ
593デフォルトの名無しさん:2007/12/24(月) 01:00:43
>>590
即レスありがとうございます
circ_area(r)にしたら無事できました
594デフォルトの名無しさん:2007/12/24(月) 01:01:41
>>589
多分、関数と変数の区別がつけばおk。
それにしても、常に1になるって、だれか解説キボンヌ
595デフォルトの名無しさん:2007/12/24(月) 01:57:28
関数のアドレスを出力してるからじゃない。コンパイル時に↓みたいな警告でなかった?(これはうちのコンパイラだけど)
main.cpp:11: warning: the address of 'double circ_area(double)', will always evaluate as 'true'
596デフォルトの名無しさん:2007/12/24(月) 02:21:46
>>594
ポインタとしての定数値がtrueに変換されたと思われますが、なぜなのかはわかりません。
c++ の文法で、c ではこうはならない。
597デフォルトの名無しさん:2007/12/24(月) 03:57:49
>>582
締切期限が一年以上あるんだから、自分で何とかしろ
598デフォルトの名無しさん:2007/12/24(月) 04:16:49
[1] 授業単元:プログラミング
[2] 問題文:1.正の整数値を読み込んで、その桁数を出力するプログラム
      2. 1からnまでの和を求めるプログラムをfor文を使って。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:Mingw
 [3.3] 言語: C++
[4] 期限: 12月25日まで
[5] その他の制限:特になし
初心者のため、まったくわかりません;;
599デフォルトの名無しさん:2007/12/24(月) 08:47:24
[1] 授業単元: プログラミング
[2] 問題文:ポインター関数、構造体、maloc関数を用いたプログラム
      ファイルデータに入力された数字を表示させる。
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler
 [3.3] 言語: C言語
[4] 期限: 2007年12月24日 15:00まで
[5] その他の制限: 特になし
malloc関数の使い方と構造体の使い方がまったくわからないです;;
600デフォルトの名無しさん:2007/12/24(月) 09:42:41
>>599
読み込むデータの例は?現状の情報だと構造体もmallocも必要ない。
601デフォルトの名無しさん:2007/12/24(月) 10:09:49
>>600
そうなんですか
ただ、ポインター関数と構造体とmallocを全部使ってプログラムを作れと言われただけで
データはなんでも良いと思ったから数字にしたんです。
簡単なソートでいいと言われたので
例 下のような数字の列で
23
45
34


こんなふうに表示させるつもりなんですが
構造体やmalloc関数をどういうときに使うのかがよくわからないので
すみません。
602デフォルトの名無しさん:2007/12/24(月) 10:23:18
意図としては名前とか番号とか年齢とかを構造体で一括したり、
構造体を行数によってmallocで動的確保したり、
そのための関数を適当に作って欲しかったんだろうな。

ソートじゃないが、条件を満たしている糞ース置いとく。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5575.zip
603デフォルトの名無しさん:2007/12/24(月) 10:39:43
>>602
そうだったんですか
なるほど
それと、ソートを置いてもらってすみませんが
長くて、わかりにくいんです。
逆にこんなソートは私にはつくれそうにありませんし
すみませんが簡単なソートをつくってもらえませんか
読み込むデータの例は
名前 年齢
mari 13
kai 45
・  ・
ってばらばらなデータを読み込んで
年齢が低い順から高い順に表示するようにしたいんです
お願いしますm(_ _)m
604デフォルトの名無しさん:2007/12/24(月) 10:59:47
単方向でソートとな('A`)
条件のところにソートなんぞ書いて無いから別にいいじゃん。
605デフォルトの名無しさん:2007/12/24(月) 11:22:32
>>604
しかし、先ほど、貼っていただいたソートですが、mallocがどこにも使われていないんですけど、
callocをmallocに変えても問題ないんですか?
606デフォルトの名無しさん:2007/12/24(月) 11:42:07
こりゃうっかりしてたごめん。
引数のカンマを掛け算の演算子にしとけばおk。
607デフォルトの名無しさん:2007/12/24(月) 11:43:53
[1] 授業単元:c++基礎
[2] 問題文:3行4列の行列の積を求めるプログラム       
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2007年12月24日23:59まで]

よろしくお願いします

608608:2007/12/24(月) 12:23:04
すいません訂正します

[1] 授業単元:c++基礎
[2] 問題文:4行3列の行列と3行4列の行列の積を求めるプログラム       
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2007年12月24日23:59まで]

よろしくお願いします
609デフォルトの名無しさん:2007/12/24(月) 13:57:32
[1] 授業単元:プログラミング
[2] 問題文: 整数を保存するキューを作成しなさい.キューのサイズは固定で10とする.
標準入力から空白で区切られた整数を読み込み,キューに順番に追加していきなさい.
ただし,11個目の整数を読み込み時点で,キューが満杯であるため,追加できない.その
ため,キューの先頭の値を取り出し,削除した後に11個目の値を追加すること.このとき,
取り出した先頭の値を標準出力に出力すること.
12個目の整数を読み込んだ時点でも,同様の操作を繰り返し実行すること.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007/12/27まで
[5] その他の制限:無し
よろしくお願いします
610デフォルトの名無しさん:2007/12/24(月) 15:06:15
>>608
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5576.txt
アクセッサがかなり手抜き

あと、行列への入力方法の指定が無かったんで適当に作ったけど、
嫌だったら変えてくれ
611デフォルトの名無しさん:2007/12/24(月) 15:33:07
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
ある数字(2万桁前後)が記載されたテキストファイルを読み込み、
指定した桁から指定した桁までを取り出すプログラムをつくれ


[3] 環境
 [3.1] OS: WindowsXP
 [3.2]gcc
 [3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 特になし
よろしくお願いします。
612デフォルトの名無しさん:2007/12/24(月) 15:42:37
>>611
整数という前提でOK?
613デフォルトの名無しさん:2007/12/24(月) 15:46:38
>>599 連結リストにする必要あるのか不明だけど、流れを汲んで。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5577.txt
614デフォルトの名無しさん:2007/12/24(月) 15:48:06
>>612
整数です!
615デフォルトの名無しさん:2007/12/24(月) 16:05:24
>>614
こんな感じで。
#include <stdio.h>

int main(){
char filename[FILENAME_MAX];
FILE *fp;
int begin, end;

printf("ファイル名:");
scanf("%s", filename);
printf("何桁目から?:");
scanf("%d", &begin);
printf("何桁目まで?:");
scanf("%d", &end);
fp = fopen(filename, "r");
if(fp==NULL){
printf("%sのオープンに失敗しました", filename);
return 1;
}
fseek(fp,-begin,SEEK_END);
for(; begin >= end; --begin)printf("%c", fgetc(fp));
fclose(fp);
return 0;
}
616615:2007/12/24(月) 16:08:13
すまん、
printf("何桁目から?:");
scanf("%d", &begin);
printf("何桁目まで?:");
scanf("%d", &end);

printf("何桁目から?:");
scanf("%d", &end);
printf("何桁目まで?:");
scanf("%d", &begin);
こう変えてくれ。
というか普通は「1桁目から3桁目」みたいな感じで指定するよな
(「3桁目から1桁目」じゃないよな)
617お願いします:2007/12/24(月) 16:09:17
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):n段のピラミッド(二等辺三角形)を表示。第i段目は(n-1)*2+1となるようにする。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語:C++
[4] 期限: (12月25日のレポート提出時まで)
[5] その他の制限: for文でお願いします。endlは使わないでお願いします。
618デフォルトの名無しさん:2007/12/24(月) 16:29:10
>>617
無駄にクラスにしてみた。本当に無駄だけど。
#include <iostream>

class Pyramid{
  friend std::ostream& operator << (std::ostream& os, const Pyramid& p);
  const int n;
public:
  Pyramid(int x) : n(x){}
};
std::ostream& operator << (std::ostream& os, const Pyramid& p){
  for(int i=0; i<p.n; ++i){
    for(int j=0; j<p.n-1-i; ++j) os << ' ';
    for(int j=0; j<2*i+1; ++j) os << '*';
    os << '\n';
  }
  return os << std::endl;
}
int main(){
  unsigned n;
  std::cout << "何段にする?:";
  std::cin >> n;
  std::cout << Pyramid(n);
  return 0;
}
619デフォルトの名無しさん:2007/12/24(月) 16:29:28
>>616
うまくいかないんですが・・・

123456789

というデータにたいして1〜3を指定すると789が出てしまいます
620618:2007/12/24(月) 16:30:14
すまん、endl使うなって見逃してた。
return os << std::endl;

return os;
621デフォルトの名無しさん:2007/12/24(月) 16:32:50
>>619
すまん、題意を思い切り勘違いしてたw
一の位とかとごっちゃになってた
#include <stdio.h>

int main(){
  char filename[FILENAME_MAX];
  FILE *fp;
  int begin, end;

  printf("ファイル名:");
  scanf("%s", filename);
  printf("何桁目から?:");
  scanf("%d", &begin);
  printf("何桁目まで?:");
  scanf("%d", &end);
  fp = fopen(filename, "r");
  if(fp==NULL){
    printf("%sのオープンに失敗しました", filename);
    return 1;
  }
  for(; begin <= end; ++begin)printf("%c", fgetc(fp));
  fclose(fp);
  return 0;
}
622デフォルトの名無しさん:2007/12/24(月) 16:36:27
>>621
できました。どうもありがとうございました
623デフォルトの名無しさん:2007/12/24(月) 16:40:01
>>621
できたと思ったら、できてませんでした。

2桁目からとか指定しても1桁目からになってしまいます
624デフォルトの名無しさん:2007/12/24(月) 16:45:15
>>623
すまん、俺間違えすぎだなw
for(; begin <= end; ++begin)printf("%c", fgetc(fp));

fseek(fp,begin,SEEK_SET);
for(; begin <= end; ++begin)printf("%c", fgetc(fp));
多分こう。
625624:2007/12/24(月) 16:46:27
あーまた間違えた
>>624
fseek(fp,begin-1,SEEK_SET);
for(; begin <= end; ++begin)printf("%c", fgetc(fp));
の間違い
626デフォルトの名無しさん:2007/12/24(月) 16:48:07
間違えすぎw
627デフォルトの名無しさん:2007/12/24(月) 16:50:52
>>625
OKです!
628デフォルトの名無しさん:2007/12/24(月) 16:52:01
一度試してみてから訂正すればいいのに…
629デフォルトの名無しさん:2007/12/24(月) 17:42:08
[1] 授業単元:パーソナルワークステーション演習
[2] 問題文(含コード&リンク):
 フロッピーディスク(2HD pc98フォーマット)の内容全てを読み出し、イメージファイル
として保存する関数を作成しなさい。
ディスクドライブに対するアクセスに関しては以下の関数を用いる、
B_READ(int drive, int seek, int sect, unsigned char* buffer)
 drive : 0x9070(ドライブ0)〜0x9370(ドライブ3)
 seek : 読み出し開始位置
  31〜24bit:セクタ長 0b00=128 0b01=256 0b10=512 0b11=1024
  23〜16bit:物理トラック番号
  15〜 8bit:物理サイド番号
  7〜 0bit:物理セクタ番号
 sect : 読み出す論理セクタ数
 buffer : データ格納領域へのポインタ(ただし大きさはセクタ長単位)
[3] 環境
 [3.1] OS:Human68k Ver3.02
 [3.2] コンパイラ名とバージョン: C Compiler PRO68k ver2.1 NEW KIT
 [3.3] 言語: C言語
[4] 期限: できる限り早く
[5] その他の制限:
ヒープ領域は最大で64KBまでしか確保されず、標準ライブラリのfopen等で数KB消費される。
また、足りなくなったときに自動的に拡張されることはない。
ファイルへの書き出しには標準関数を使って良い。ファイルオープンの際、MS-DOSに倣って
バイナリモードの指定をすること。
630デフォルトの名無しさん:2007/12/24(月) 18:47:47
メリークリスマス。
せっかくだからサンタに関連ある問題きぼんぬ。
631608:2007/12/24(月) 19:10:52
>>610
遅くなってしまったけど
どうもありがとう
632デフォルトの名無しさん:2007/12/24(月) 19:26:09
[1] 授業単元:クリスマス
[2] 問題文(含コード&リンク):
 サンタが家々を順番に回り、プレゼントを配ろうとしている。ただし、以下の条件がある。
・プレゼントを配るべき家は50件ある。
・家々の距離はデータファイルから与えられる。
・そりにはA,B,Cの3種類があり、それぞれ速さが違い、使用回数の制限がある。
・A→速さ5、回数制限8
・B→速さ3、回数制限16
・C→速さ1、回数制限25
・どの家から配り始め、どの家で配り終えるかは任意に選べる物とする
以上の条件の下で、最短ルートを導け

なお、データファイルは以下の形式で与えられる
(家の番号は0〜49)
0 1 15 //0番目の家から1場面の家までの距離は15、の意味
0 2 2
...
49 48 8

[3] 環境
 [3.3] 言語: どちらでも可
[4] 期限: 25日夜明けまで
[5] その他の制限:
 メリークリスマス!
633デフォルトの名無しさん:2007/12/24(月) 19:36:48
>>632
こんな課題を授業で出されたら大変だなw
634デフォルトの名無しさん:2007/12/24(月) 19:37:46
>>630
頼んだぜ
635お願いします:2007/12/24(月) 20:04:09
下記は左下三角形のプログラムだけどこれを二等辺三角形に書き換えてください。早急にお願いします。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1;i <= n; i++){
for(int j = 1;j <= (i-1)*2+1; j++)
cout << '*';
cout << '\n';
}
return 0;
}
636デフォルトの名無しさん:2007/12/24(月) 20:08:45
>>635
Fuck you.
637デフォルトの名無しさん:2007/12/24(月) 20:17:19
>左下三角形
初めて聞いた
638お願いします:2007/12/24(月) 20:20:04
>左下直角三角形です。すいません。
639デフォルトの名無しさん:2007/12/24(月) 20:22:34
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1;i <= n; i++){


//↓↓↓↓↓↓↓

printf("%*s",n-i,"");

//↑↑↑↑↑↑↑

for(int j = 1;j <= (i-1)*2+1; j++)
cout << '*';
cout << '\n';
}
return 0;
}
640お願いします:2007/12/24(月) 20:30:29
[1] 授業単元:C++ プログラム
[2] 問題文(含コード&リンク):
#include<iostream>
using namespace std;
int main()
{
char retry;
int month;
do {
int month;
cout << "kisetu wo motomemasu.\nnanngatu desuka:";
cin >> month;
if (month >= 3 && month <= 5)
cout <<"soreha harudesu.\n";
else if (month >= 6 && month <= 8)
cout <<"soreha natudesu.\n";
else if (month >= 9 && month <= 11 )
cout <<"soreha akidesu.\n";
else if (month == 12 || month == 1 || month == 2)
cout <<"soreha huyudesu.\n";
cout <<"mouichido? Y...Yes/N...No:";
cin >> retry;
} while(retry == 'Y' || retry == 'y');
return 0;
} 
これは入力された月の季節を表示するプログラムですが、これを1〜12以外の値が入力された場合再入力させるようにdo文の二重ループで修正してください。
[3] 環境
 [3.3] 言語: どちらでも可
[4] 期限: 今日中
[5] その他の制限:
 do文で二重ループでお願いします。
641デフォルトの名無しさん:2007/12/24(月) 20:38:39
>>640
#include<iostream>
using namespace std;
int main()
{
char retry;
int month;
do {
int month;

do{
cout << "kisetu wo motomemasu.\nnanngatu desuka:";
cin >> month;
}while(month<1||12<month);

if (month >= 3 && month <= 5)
cout <<"soreha harudesu.\n";
else if (month >= 6 && month <= 8)
cout <<"soreha natudesu.\n";
else if (month >= 9 && month <= 11 )
cout <<"soreha akidesu.\n";
else if (month == 12 || month == 1 || month == 2)
cout <<"soreha huyudesu.\n";
cout <<"mouichido? Y...Yes/N...No:";
cin >> retry;
} while(retry == 'Y' || retry == 'y');
return 0;
} 
642デフォルトの名無しさん:2007/12/24(月) 20:38:39
>>632
こんなの計算終わるかあああああああああw
ソリ関係ねえだろw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5578.txt
643デフォルトの名無しさん:2007/12/24(月) 20:41:31
>>640
これできないんじゃ地味に単位とれないんじゃね?

コード内 do{int month; のあとに do{ 挿入
そのあとのcout,cin のあとに }while(month<1 || month>12); を挿入
644デフォルトの名無しさん:2007/12/24(月) 20:44:33
>>632
去年の秋のソフ開午後2より厳しくねぇ!?
645お願いします:2007/12/24(月) 20:55:58
[1] 授業単元:C++ プログラム
[2] 問題文(含コード&リンク):
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
srand(time(NULL));
int no = rand() % 100;
int x;
cout << "数当てゲーム!!\n";
cout << "0-99の数をあててください。\n";
do {
cout << "いくつ?:";
cin >> x;
if (x > no)
cout << "\aもっと小さな数です.\n";
else if (x < no)
cout << "\aもっと大きな数です.\n";
} while (x != no);
cout << "正解です.\n";
return 0;
}
これは0〜99の数を当てさせるゲームですが、これをプレーヤーが入力できる回数に制限を設けたプログラムを作成してください。制限内数に当てられなかった場合は、正解を表示して終了する。
[3] 環境
 [3.3] 言語: C++
[4] 期限: 今日中
[5] その他の制限:
  goto文でお願いします。
646642:2007/12/24(月) 20:59:54
ありゃ、ソリの速さ関係してくるな……
647お願いします:2007/12/24(月) 21:07:54
[1] 授業単元:C++ プログラム
[2] 問題文(含コード&リンク):
数字を入力するとそれに対応した源氏香の図を書くプログラムを作成してください。
#########
# #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
http://ja.wikipedia.org/wiki/%E9%A6%99%E3%81%AE%E5%9B%B3#.E6.BA.90.E6.B0.8F.E9.A6.99.E3.81.AE.E5.9B.B3
[3] 環境
 [3.3] 言語: どちらでも可
[4] 期限: 今日中
[5] その他の制限:
648デフォルトの名無しさん:2007/12/24(月) 21:22:16
>>645

#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
srand(time(NULL));
int no = rand() % 100;
int x;
int count=1;//ここ追加!(代入している数字は回答可能回数)
cout << "数当てゲーム!!\n";
cout << "0-99の数をあててください。\n";
do {
if((--count)<0)goto pogee;
cout << "いくつ?:";
cin >> x;
if (x > no)
cout << "\aもっと小さな数です.\n";
else if (x < no)
cout << "\aもっと大きな数です.\n";
} while (x != no);
cout << "正解です.\n";
return 0;
pogee:
cout<<"残念!正解は "<<no<<" でした。";
return 0;
}
//もしcoutの構文間違えてたりしたら直してくれ(C++やったことない)
649デフォルトの名無しさん:2007/12/24(月) 21:41:26
>>644
内容的にはパソコン甲子園のルパンの問題と似てる。
べたに検索すれば>>642のように膨大な時間がかかる典型的問題。
650デフォルトの名無しさん:2007/12/24(月) 21:54:17
>>632
50はやっぱり厳しい。
ヒントきぼん。
651デフォルトの名無しさん:2007/12/24(月) 22:05:15
>>650
最短経路問題とか動的計画法でぐぐれば参考になるものが見つかると思うよ
652デフォルトの名無しさん:2007/12/24(月) 22:07:55
ダイクストラ法で解けるかな
653デフォルトの名無しさん:2007/12/24(月) 22:15:18
C++,Linux
ルーチンワークで、mi(x座標,y座標,拡大率a)という、
(x,y)にa倍の「み」という文字を表示するコマンドをつくりたいのですが
どうやってつくればよいでしょうか?
1倍の「み」は横幅縦幅ともに50くらいとしておねがいします。
できればforなどの基礎構文で
654デフォルトの名無しさん:2007/12/25(火) 07:06:29
>>647
これって並び順に規則性あるのか?
655デフォルトの名無しさん:2007/12/25(火) 11:04:42
>>654
+-h11-+-h12-+-h13-+-h14-+
|    |    |    |    |
v11  v12  v13  v14  v15
|    |    |    |    |
+-h21-+-h22-+-h23-+-h24-+
|    |    |    |    |
v21  v22  v23  v24  v25
|    |    |    |    |
として表を作ってみた。どう見ても規則性が見つからない。
--
h11 h12 h13 h14 v11 v12 v13 v14 v15 h21 h22 h23 h24 v21 v22 v23 v24 v25
1
2 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1
3 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1
4 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1
5 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1
6 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1
8 0 0 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1
9 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1
10 1 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1
11 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1
12 0 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1
--以下略
まぁ、v21、v24、v25は必ず描かれるとかって微妙なルールはあるようだけど。
656デフォルトの名無しさん:2007/12/25(火) 15:26:30
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5580.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/26
[5] その他の制限:なし
657デフォルトの名無しさん:2007/12/25(火) 17:35:00
>>656
#include <stdio.h>
#define FILENAME "kozukai.csv"
#define ITEM_LENGTH 32
int main(void)
{
    FILE *fp = fopen(FILENAME, "w");
    if (fp == NULL) {
        fprintf(stderr, "file open error.\n");
        return 1;
    }

    char item[ITEM_LENGTH];
    int  num, amount;
    int  money = 0;

    fprintf(fp, "項目,収入,支出,計\n");
    while (1) {
        printf("0:終了、1:収入追加、2:支出追加  >"); scanf("%d", &num);

        if (num == 0) { printf("終了します.\n"); break; }
        printf("項目:"); scanf("%s", item);
        printf("金額:"); scanf("%d", &amount);

        fprintf(fp, "%s,", item);
        if (num == 1) { money += amount; fprintf(fp, "%d,,%d\n", amount, money); }
        else if (num == 2) { money -= amount; fprintf(fp, ",%d,%d\n", amount, money); }
    }
    fclose(fp);
    return 0;
}
658デフォルトの名無しさん:2007/12/25(火) 18:05:09
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5582.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2007年12月d31日15:00まで]
[5] その他の制限: ポインタ学習時の課題なのでポインタかと

お願いします。
659デフォルトの名無しさん:2007/12/25(火) 18:54:43
>>658  とりあえず 1)だけ
#include <stdio.h>
#include <stdlib.h>
void ToBinaryString(char *result, int arg)
{
    int i, j;
    for (i = 0, j = 0; i < 39; ++i, ++j) {
        result[38 - j] = (arg & 1) == 0? '0': '1';  arg >>= 1;
        if ((i + 1) % 4 == 0) { ++j; result[38 - j] = ' '; }
    }
    result[39] = '\0';
}
int main(int argc, char **argv)
{
    char buff[40];
    switch (argv[1][0]) {
        case 'o':
            printf("%o\n", atoi(argv[2])); break;
        case 'd':
            printf("%d\n", atoi(argv[2])); break;
        case 'x':
            printf("%x\n", atoi(argv[2])); break;
        case 'b':
            ToBinaryString(buff, atoi(argv[2])); printf("%s\n", buff); break;
    }
    return 0;
}                      
660デフォルトの名無しさん:2007/12/25(火) 18:57:50
[1] 授業単元: プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5584.txt
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler
 [3.3] 言語: C言語
[4] 期限: 2007年12月26日 12:00まで
[5] その他の制限: ポインター関数などを使います

プログラミングがまだよくわからないのでお願いします
661デフォルトの名無しさん:2007/12/25(火) 19:44:21
>>647
面倒なので確認はしていない
#include<stdio.h>
int main(void){
int a[] = { 0, 1, 4, 17, 84, 1301, 1285, 64,
81, 6942, 327869, 16, 6421, 80, 20, 327861,
68, 21, 32084, 32080, 69, 326580, 39038, 6484,
5, 6420, 65, 35194, 38484, 52605, 1365, 7709,
7773, 32081, 33365, 38485, 39773, 449453, 51838, 39765,
385453, 7701, 39805, 32085, 38516, 38517, 1349, 6485,
7765, 39797, 33405, 85},
b[] = { 0, 1, 4, 5},
c[] = {15,13,12, 5, 4},
d[] = {112,0,112,0,112,0,112,0,112},
n, i, j;
printf("n = ");
scanf("%d", &n);
j = a[n - 2];
for(i = 0; i < 4; i++)
d[i * 2 + 1] = b[j % 4],
j /= 4;
for(i = 0; i < 5; i++)
d[i * 2] |= c[j % 5],
j /= 5;
for(i = 0; i < 7; i++){
if(n > 1 && n < 54)
for(j = 0; j < 9; j++)
printf("%c", (d[8 - j] >> i & 1) * 3 + ' ');
printf("\n");
}
return 0;
}
6621/2:2007/12/25(火) 20:58:22
>>658
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define BUFFSIZE 32

void StrToUpper(char *str) 

    char *p;
    for (p = str; *p != '\0'; ++p) *p = toupper(*p);
}

void StrToLower(char *str) 

    char *p; 
    for (p = str; *p != '\0'; ++p) *p = tolower(*p);
}

void StrLUConvert(char *str) 
{
    char *p;
    for (p = str; *p != '\0'; ++p) {
        if (isupper(*p)) *p = tolower(*p);
        else if (islower(*p)) *p = toupper(*p);
    }
}
6632/2:2007/12/25(火) 21:10:04
int comparator(const void *x, const void *y)
{
    return (*(char*)x < *(char*)y)? -1: (*(char*)x == *(char*)y)? 0: 1;
}
664main忘れた:2007/12/25(火) 21:10:40
int main(int argc, char **argv) 
{
    char buff[BUFFSIZE];
    while (fgets(buff, BUFFSIZE, stdin) != NULL) {
        switch (argv[1][0]) {
            case 'u':
                StrToUpper(buff);
                break;
            case 'l':
                StrToLower(buff);
                break;
            case 'r':
                StrLUConvert(buff);
                break;
            case 's':
                qsort(buff, strlen(buff) - 1, sizeof(char), comparator);
                break;
        }
        puts(buff);
    }
    return 0;
}
665デフォルトの名無しさん:2007/12/25(火) 22:00:40
[1] 授業単元:プログラミング
[2] 問題文:画像の特定の部分をraw画像として出力しなさい
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語++
[4] 期限: 12/26
[5] その他の制限:特になし

画像の特定の部分は座標をfor文で繰り返して、
新たに配列を作った配列に画素値を放り込めばいいんだろうけど
raw画像の出力ってのがよく分かりません。そもそもraw画像ってなんだろ?
fwrite()を使うのか?
知ってる人いましたら教えてください。
666デフォルトの名無しさん:2007/12/25(火) 22:28:02
>>659
>>662-664

本当にありがとうございました。自力でプログラミングできるように精進します。

667デフォルトの名無しさん:2007/12/26(水) 00:17:42
>>665
うにっくすの標準画像ふぉーまっとじゃなかったっけ?
668デフォルトの名無しさん:2007/12/26(水) 00:21:54
C言語++って何。
669665:2007/12/26(水) 00:29:14
>>668
C++だったw
670デフォルトの名無しさん:2007/12/26(水) 01:57:23
RAW画像ってデジカメのあれのことを言ってるのかな。
機種によってバラバラなんだけど、どれに合わせれば良いのかな。斜めに予想してDNGにでもすれば良いのかなぁ。
671デフォルトの名無しさん:2007/12/26(水) 09:28:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
今char型二次元配列になにかしらの文字列がはいっている。
その文字列を1行ずつある関数に引数として送れ。
その関数は、送られてきた文字列が
前に送られてきた文字列と一致すれば1、2、3と足していくようにして、
一致しなければ0に戻す。

例えば
a
a
a
b
b
c
c
だったら
0
1
2
0
1
0
1と言う風にです。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2007年12月26日15:00まで]
[5] その他の制限: 関数内で表示するようにしてください。
672デフォルトの名無しさん:2007/12/26(水) 11:21:06
>>671

#include <stdio.h>

int foo(const char *str) {
    static const char *prev_str = 0;
    static int counter = 0;

    if (prev_str && !strcmp(str, prev_str))
        printf("%d\n", ++counter);
    else
        printf("%d\n", counter = 0);

    prev_str = str;
}

int main() {
    int i;
    const char *str[] = { "a", "a", "a", "b", "b", "c", "c" };

    for (i = 0; i < sizeof(str) / sizeof(char *); i++)
        foo(str[i]);

    return 0;
}
673デフォルトの名無しさん:2007/12/26(水) 12:16:09
674デフォルトの名無しさん:2007/12/26(水) 12:39:22
>>660
このプログラムをつくってください。
お願いします。
ファイルを読み込むとかはわかるんですが
そこからがどうやっていけばいいのかわからないんです。
675デフォルトの名無しさん:2007/12/26(水) 13:20:34
>>674
今やってる
676デフォルトの名無しさん:2007/12/26(水) 13:26:45
すいません、割と切実なので>>629お願いします。
677デフォルトの名無しさん:2007/12/26(水) 13:27:49
>>676
68K環境無いからほとんどの人は無理。
678デフォルトの名無しさん:2007/12/26(水) 14:25:42
>>674
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5585.txt
綺麗なやり方じゃないけど、まあ動く
679678:2007/12/26(水) 14:27:33
あ、デバッグ用の関数を残したままだったw
printtime関数は丸丸消しちゃっていいよ。
680デフォルトの名無しさん:2007/12/26(水) 15:00:14
>>609
#include <stdio.h>
#define SIZE 10

int queue[SIZE+1];
int front,back;
int enqueue(int x){
  if(front == (back+1)%(SIZE+1))return 0;
  queue[back] = x;
  back = (back+1)%(SIZE+1);
  return 1;
}
int dequeue(void){
  int x = queue[front];
  front = (front+1)%(SIZE+1);
  return x;
}
int main(){
  while(1){
    int x;
    printf("Please Input An Integer:");
    scanf("%d", &x);
    if(!enqueue(x)){
      printf("Dequeue:%d\n", dequeue());
      enqueue(x);
    }
  }
}
681デフォルトの名無しさん:2007/12/26(水) 15:35:19
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 与えられた表の縦・横の値の平均と合計を、
それぞれの行・列ごとに求め、出力するプログラムを作成しなさい。
ただし、縦・横のデータは10個未満としそれぞれの数字は整数とする。
また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。
平均の行・列および、合計の行・列がぶつかる箇所は、表全体の平均と合計を計算した結果を表示する。

・入力された行・列の数が10未満であることを、プログラム内でチェックすること。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual studio 6.0
 [3.3] 言語: C
[4] 期限: 2008年1月6日

お願いします。
682デフォルトの名無しさん:2007/12/26(水) 15:37:45
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
中央値を求める関数を作成し、その関数を使用して中央値を出力するプログラムを作成せよ。
関数は下記の通りとする
in 入力が格納された配列のポインタ
num 入力値の数
戻り値 計算結果

入力に関して。
 キーボードから入力数と入力値をスペースひとつあけて一行で入力する。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Study C
 [3.3] 言語: C
[4] 期限: 2008年1月8日まで


よろしくお願いします。
683デフォルトの名無しさん:2007/12/26(水) 15:51:51
>>678-679
作っていただいてありがとうございます!!

あの、つくっていただいて申し訳ないんですけど
ファイルを読み込む場所はわかるのですが、
読み込むデータの名前はargv[1]の部分を変えるんですか?
そこがわからないんです。
684デフォルトの名無しさん:2007/12/26(水) 16:06:58
>>683
たとえばプログラム名がa.exeでデータファイル名がlog.datなら、
>a log.dat
と起動すればいい

もちろんargv[1]のところに直接ファイル名を入れてもいいけど。
その場合、argcの値をチェックしてるところも消しておいてね
685デフォルトの名無しさん:2007/12/26(水) 16:16:12
コマンドライン引数って、特に指定が無い限り使わない方がいいのかな。
上の方でも、上手く行きませんて言ってた奴いたし。
686デフォルトの名無しさん:2007/12/26(水) 16:35:53
>>684
ありがとうございました!
おかげでうまく起動しました。
687デフォルトの名無しさん:2007/12/26(水) 17:04:07
>>682
無駄に再帰してみました
#include <stdio.h>
#include <stdlib.h>
double median(const double *in, const unsigned num){
  double *buf, min, max, tmp;unsigned i;
  if(num == 1)return in[0];
  if(num == 2)return (in[0]+in[1])/2.0;
  buf = malloc(sizeof(double) * (num-2));
  min = in[0]<in[1] ? in[0] : in[1];
  max = in[0]>in[1] ? in[0] : in[1];
  for(i=2; i<num; ++i){
    if(in[i]<min){
      buf[i-2] = min;
      min = in[i];
    } else if(in[i]>max){
      buf[i-2] = max;
      max = in[i];
    } else buf[i-2] = in[i];
  }
  tmp = median(buf, num-2);
  free(buf);
  return tmp;}
int main(){
  unsigned n, i;double *array;
  scanf("%u", &n);
  array = malloc(sizeof(double) * n);
  for(i=0; i<n; ++i) scanf("%lf", array+i);
  printf("median:%.2f", median(array, n));
  return 0;}
688デフォルトの名無しさん:2007/12/26(水) 18:10:08
>>682
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a,const void *b)
{ if ((*(double *)a) < (*(double *)b)) return 1;
else if ((*(double *)a) > (*(double *)b)) return -1;
else return 0; }
double Medium()
{double *dbuff=NULL; int num,i; char buff[1024] = {'\0'};
char *gDlim = " \t\n"; char *temp,*p;
puts("入力値の数を打ち込んでください");
scanf("%d",&num);
getchar();
if(num <= 0){ fprintf(stderr,"入力値が不正です"); exit(EXIT_FAILURE);
}
dbuff = malloc(sizeof(double)*num);
puts("数値を入力");
fgets(buff,sizeof(buff),stdin);
temp = strtok(buff,gDlim);
i = 0;
do{
dbuff[i] = strtod(temp,&p);
i++;
if(i==num)
break;
}while(temp = strtok(NULL,gDlim));
qsort(&dbuff[0],num,sizeof(double),cmp);
return dbuff[num/2];
}
689デフォルトの名無しさん:2007/12/26(水) 19:46:54
C言語で質問なんですが
printfとsprintf_sの違いってなんでしょうか?
書き方が異なるだけ?
690デフォルトの名無しさん:2007/12/26(水) 19:55:30
>>689
printf、sprintfはANCII準拠の関数。
sprintf_sはM$独自の安全性を向上さした関数。
691デフォルトの名無しさん:2007/12/26(水) 19:58:57
>>689
printf・・・標準出力に書式出力
sprintf・・・文字列に書式付き出力(バッファのサイズ指定なし)
sprintf_s・・・文字列に書式付き出力(バッファのサイズ指定あり)
692デフォルトの名無しさん:2007/12/26(水) 20:00:21
ANCIIってw
ANSIとASCIIがごっちゃw
693デフォルトの名無しさん:2007/12/26(水) 20:57:57
#include <stdio.h>

int main()
{
int i = 123;
char a[4] = "ABC";

printf("数値表示 <%5i>\n", i);
printf("数値左詰 <%-5i>\n", i);
printf("数値前ゼロ <%.5i>\n", i);
printf("文字表示 <%5s>\n", a);
printf("文字左詰 <%-5s>\n", a);
printf("16進小文字 <%x>\n", i);
printf("16進大文字 <%X>\n", i);

return 0;
}

表示結果

これをc++ Builder 6で起動させて表示するにはどうすればいいんでしょうか。
694デフォルトの名無しさん:2007/12/26(水) 21:05:55
プロジェクトを作成して、ソースファイルを作って、実行すればいいよ
695デフォルトの名無しさん:2007/12/26(水) 21:27:45
どんな感じで表示されるんでしょうか。
696デフォルトの名無しさん:2007/12/26(水) 21:31:28
スレ違い
 
697デフォルトの名無しさん:2007/12/26(水) 21:35:21
C++Builderなんて使うのが悪い。
男は端末からgccを使う。
698デフォルトの名無しさん:2007/12/26(水) 21:56:21
>>681
入力はファイル読み込み?それともソース埋め込み?
699デフォルトの名無しさん:2007/12/26(水) 22:20:59
>>698
その二つの違いさえも、よく分かりません…。

数字は、パソコンのキーボードから直接入力します。
700デフォルトの名無しさん:2007/12/26(水) 22:44:37
内容:
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
3次方程式を解くプログラムの作成し、
(1) 問題をどのように理解し、どのようなアルゴリズム(算法)で処理を進め方。
(2) それをフローチャート(流れ図)で表せ。

という宿題なのですが、前スレでニュートン法を利用した3次関数のプログラムを拾ったので
そのプログラムを利用して(1)(2)をお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5586.txt

[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: [2008年1月5日まで]

以前、違う宿題のフローチャートをここで作成していただきました。
前回同様、面倒くさい宿題で申し訳ないのですが、どなたか宜しくお願いします。
701689:2007/12/27(木) 01:49:46
>>690
>>691
遅くなりましたが、回答ありがとうございました。
702デフォルトの名無しさん:2007/12/27(木) 02:23:07
ねえ次のテンプレから学校名も入れてくれない?
[0] 学校名:
とかさ。
703デフォルトの名無しさん:2007/12/27(木) 02:27:14
あと学籍番号と氏名も。親の収入も書いてくれるとうれしいな
704デフォルトの名無しさん:2007/12/27(木) 02:48:48
[1] 授業単元: プログラミング
[2] 問題文:以下の通り
[3] 環境
 [3.1] Windows XP
 [3.2] コンパイラ名とバージョン: VS2005
 [3.3] 言語: C
[4] 期限 無期限
[5] その他の制限:皿をAからBへ移動する部分を関数化する。



[問題]ハノイの塔のプログラムを作成しなさい。
尚、移動する部分は関数として定義しなさい。

出力例は以下となる。

皿の数を入力 3
move 1 from A to C
move 2 from A to B
move 1 from C to B
move 3 from A to C
move 1 from B to A
move 2 from B to C
move 1 from A to C
皿の数:  3枚
移動回数 7回
705デフォルトの名無しさん:2007/12/27(木) 03:11:42
>>703
そんなもんは要らん。学校名だけでいい。
学部も学科も妥協したんだからよけいなことを言うなw
706デフォルトの名無しさん:2007/12/27(木) 06:25:16
[1] 授業単元: プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5588.txt
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler
 [3.3] 言語: C言語
[4] 期限: 2007年12月29日
[5] その他の制限: 特になし
707デフォルトの名無しさん:2007/12/27(木) 07:41:48
>>706
inputA.txtのみ解いてみた。
あってるかどうかわからない。
#include <stdio.h>

double ACapacitance()
{
FILE *fp = fopen("inputA.txt","r");
double Adata[9] = {0.0};
double ASum = 0;
int i,n;
for(i=0; i<9; i++)
fscanf(fp,"%d %lf",&n,&Adata[i]);
for(i=0; i<8; i++)
ASum += ((Adata[i]-Adata[i+1])*5/2 + Adata[i+1]*5);

fclose(fp);
return ASum;
}

int main()
{
printf("%lf μF\n",ACapacitance());

return 0;
}
708デフォルトの名無しさん:2007/12/27(木) 12:32:19
>>704
#include <stdio.h>

static int cnt;

void hanoi(char a, char b, char c, int n){
  if(n > 1) hanoi(a, c, b, n - 1);
  cnt++;
  printf("move %d from %c to %c\n", n, a, b);
  if(n > 1) hanoi(b, a, c, n - 1);
}

int main(void){
  int n;
  printf("皿の数を入力 ");
  scanf("%d", &n);
  hanoi('A', 'B', 'C', n);
  printf("皿の数:  %d枚\n", n);
  printf("移動回数 %d回\n", cnt);
  return 0;
}
709デフォルトの名無しさん:2007/12/27(木) 12:42:39
>>704
先越された……
>皿をAからBへ移動する部分を関数化する
てこういうことじゃないのかorz
#include <stdio.h>
void move_plate(const int plate, const char from, const char to){
  printf("move %d from %c to %c\n", plate, from, to);
}
int plate_hanoi(const unsigned num, const char from, const char to){
  const int tmp = ('A'+'B'+'C') - (from+to); //仮置き場
  int count = 0;
  if (num == 1) {
    move_plate(1, from, to);
    return 1;
  }
  count += plate_hanoi(num-1, from, tmp);
  move_plate(num, from, to);
  count += plate_hanoi(num-1, tmp, to);
  return count+1;
}
int main(){
  unsigned plate_num = 0, count = 0;
  printf("皿の数を入力 ");
  scanf("%d", &plate_num);
  if (plate_num != 0) count = plate_hanoi(plate_num, 'A', 'C');
  printf("皿の数:%d枚\n移動回数:%d回", plate_num, count);
  return 0;
}
710デフォルトの名無しさん:2007/12/27(木) 17:31:57
質問です

結城さんがきもいと思いませんか?
http://www.hyuki.com/d/200712.html#i20071225181646
711デフォルトの名無しさん:2007/12/27(木) 18:09:57
>>707
ありがとうございます!!
inputAの答えは自分でも計算した結果あってるのですが

このプログラムはすべてのデータを一つのプログラムで起動すると思うので
残りのデータもファイル名を変えるだけで起動するプログラムを作ってくれませんか

お願いいたします。m(_ _)m
712デフォルトの名無しさん:2007/12/27(木) 18:37:47
>>711 ファイル名はコマンドライン引き数で渡すようにした。で、気になったから一応電圧で割っておいた。
#include <stdio.h>
#include <stdlib.h>
double ACapacitance(const char * fileName)
{
const int Interval = 5;
const int Voltage = 3;
FILE *fp = fopen(fileName, "r");
if (fp == NULL) return 0;
int lines = 0;
for (int ch = 0; (ch = fgetc(fp)) != EOF;) if (ch == '\n') ++lines;
rewind(fp);
double * Adata = malloc(sizeof(* Adata) * lines);
for (int i = 0; i < lines; ++i) {
fscanf(fp, "%*d %lf", & Adata[i]);
}
fclose(fp);
double ASum = 0;
for (int i = 0; i < lines - 1; ++i) {
ASum += ((Adata[i] - Adata[i + 1]) * Interval / 2 + Adata[i + 1] * 5);
}
return ASum / Voltage;
}
int main(int argc, char ** argv)
{
if (argc < 2) {
fprintf(stderr, "Usage:%s <filename>.\n", argv[0]);
return 1;
}
printf("%g μF\n", ACapacitance(argv[1]));
return 0;
}
713デフォルトの名無しさん:2007/12/27(木) 19:13:30
>>712
ありがとうございます!
助かりました。^^
714デフォルトの名無しさん:2007/12/27(木) 19:15:43
秒数とか電圧とか、整数でいいもんかねw
715707:2007/12/27(木) 19:57:59
Q = I *t
でQ = C*Vだから
C = I *t/Vか
電圧で割るの忘れてたな俺
716デフォルトの名無しさん:2007/12/27(木) 20:06:46
隣あったデータの差をとるだけなのに
わざわざ配列確保する意味ないだろ常考
717デフォルトの名無しさん:2007/12/27(木) 20:23:02
#include <stdio.h>
#define V 3.0
double capacitance(const char *filename) {
  FILE *fp = fopen(filename,"r");
  double q = 0, t, u, i, j;
  fscanf(fp,"%lf %lf",&u,&j);
  while(!feof(fp)){
    fscanf(fp,"%lf %lf",&t,&i);
    q += ((j-i)*(t-u)/2 + i*(t-u));
    u = t; j = i;
  }
  fclose(fp);
  return q/V;
}

int main(){
  printf("%lf μF\n",capacitance("inputA.txt"));
  printf("%lf μF\n",capacitance("inputB.txt"));
  printf("%lf μF\n",capacitance("inputC.txt"));
  return 0;
}
718デフォルトの名無しさん:2007/12/27(木) 23:07:19
>>710
信教の自由ということもあるし、他人に強制しないかぎりは全然問題なし.
氏は割合に良心的な(お金を払った分の価値はある)著作があるので特に指弾する必要はないと考えている。
というか、なにを根拠に「きもい」と判断したの?
719デフォルトの名無しさん:2007/12/27(木) 23:08:13
>>718
本人乙
720デフォルトの名無しさん:2007/12/27(木) 23:42:41
宗教パワー全開すぎてドン引きしたわ、ついていけん

倫理的に考えれば、信仰なんて人の自由だけどね
それをどう感じるかも逆に人の自由

問題はそれを引き金にして争いに発展させる行為だな
自分は自分、他人は他人という意識をもって、
他人の考えに動じたりせず、自分の信念を貫く姿勢が重要
信念を貫くために他人を攻撃しなきゃいけないようなら、それは偽りの信念だし、
認めてもらわなきゃ気がすまないっていうのも、芯としては脆い
逆をいえば、そういった思考がよぎったら、まだまだ信念を確立させられていない証拠
721デフォルトの名無しさん:2007/12/27(木) 23:48:53
つか、KY結城はブログとか本に宗教全開で書いてたりするだろ?
信教の自由を考えるなら、宗教と関係ない場所に宗教の話とか普通書かねーって。
どう考えても頭おかしい。
俺キリスト教徒、かっこいい?みたいな?かっこよくねーよwwwwwwwwwきもwwwww
722デフォルトの名無しさん:2007/12/28(金) 02:18:09
変数てxとXは区別されますか?
723デフォルトの名無しさん:2007/12/28(金) 03:15:25
>信教の自由を考えるなら、宗教と関係ない場所に宗教の話とか普通書かねーって。
自分の信仰について書くかどうかと他人の信教の自由を認めるかどうかは全く無関係だろ。

>>722
されるよ。
724708:2007/12/28(金) 03:36:25
>>704   >>709のがいいかも
#include <stdio.h>

static int cnt;

static void hanoi(char a, char b, char c, int n){
  if(n > 1) hanoi(a, c, b, n - 1);
  if(n > 0) cnt++, printf("move %d from %c to %c\n", n, a, c);
  if(n > 1) hanoi(b, a, c, n - 1);
}

void move_plate(char a, char c, int n){
  char b = 'B';
  hanoi(a, b, c, n);
}

int main(void){
  int n;
  printf("皿の数を入力 ");
  scanf("%d", &n);
  move_plate('A', 'C', n);
  printf("皿の数:  %d枚\n", n);
  printf("移動回数 %d回\n", cnt);
  return 0;
}
725681:2007/12/28(金) 09:10:47
どなたか救いの手を・・・・。
 
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5589.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual studio 6.0
 [3.3] 言語: C
[4] 期限: 2008年1月6日  
 
よろしくお願いします
726デフォルトの名無しさん:2007/12/28(金) 10:11:30
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5590.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/31
[5] その他の制限:なし
727デフォルトの名無しさん:2007/12/28(金) 13:42:47
[1] 授業単元:
[2] 問題文(含コード&リンク):
下の使用例のように使える、C言語のprintf関数と同様の書式が使えるostreamのマニピュレータを作成しなさい。
フォーマット指定と食い違った場合はbad_format例外を投げること。
また、printfの書式に加えて、クラスなどの型を出力するための書式として%tを定義しなさい。

std::cout << cformat("%05.2d : %4.3f : %s") << 12 << 5.87 << "abc";
実行結果> 012 : 5.870 : abc

[3] 環境
 [3.1] OS:任意
 [3.2] コンパイラ名とバージョン:任意
 [3.3] 言語:C++
[4] 期限:無期限
[5] その他の制限:
まあ、暇な人はどうぞ。
728727:2007/12/28(金) 13:43:57
失礼、実行例を訂正
  012 : 5.870 : abc
729デフォルトの名無しさん:2007/12/28(金) 13:51:27
>>727
printf()同様というが、どこまで再現するかで難易度が随分変わるんだが。
# 勿論、%t以外は全部任せるとしても。
730デフォルトの名無しさん:2007/12/28(金) 13:56:34
全部で。
あるいは再現度が高い方が高得点ということで。
731デフォルトの名無しさん:2007/12/28(金) 14:23:46
>>724
ありがとうございます。

しかし実行速度も記述の仕方によって結構変わるんだな・・。
732デフォルトの名無しさん:2007/12/28(金) 14:35:41
>>724
皿の移動回数を求めるカウンタに用いる記憶クラスをstaticとしていますが、
autoとはどごが違うのでしょうか?
外部と内部で記憶位置や記憶寿命が異なるのは解るんですが・・。
733デフォルトの名無しさん:2007/12/28(金) 14:45:31
>>732
グローバル変数の記憶クラスはstaticを付けても付けなくてもstaticで、決してautoにはならない。
(autoってのは、普通のローカル変数みたいに、ブロックを抜けると消えて無くなる奴ね)
このstaticは記憶クラスを指定するものじゃなくて、変数を別のソースファイルから参照できないようにするもの。
734デフォルトの名無しさん:2007/12/28(金) 16:02:50
>>733
ではブロック外で変数を宣言した場合、ブロック内での宣言時は自動でautoになるが、
ブロック外での宣言時にはstaticになるってことですか。
735デフォルトの名無しさん:2007/12/28(金) 16:10:45
>>733
関数内のstaticは >>734
グローバル部分に書いた場合は,そのソースコード内のみ有効なスコープになる変数
736デフォルトの名無しさん:2007/12/28(金) 16:17:00
>ソースコード内のみ有効
関数内よりかは有効なスコープが広くなるのか・・。
737デフォルトの名無しさん:2007/12/28(金) 16:46:24
#include <stdio.h>

int val1;
static int val2;

int main()
{
int val3;
static int val4;
return 0;
}
--
としたとき、
val1:グローバルスコープ(従ってオブジェクトにシンボルが残る)
val2:ファイルスコープ
val3:関数スコープ
val4:関数スコープ
なので、別にコンパイルしたオブジェクトにもval1があるとぶつかる。
738デフォルトの名無しさん:2007/12/28(金) 18:42:57
#include <stdio.h> // >>725 分量の都合でエラーチェックなどは割愛
int main()
{
printf("Input:\n");
int rows;
int columns;
scanf("%d,%d", & rows, & columns);
printf("data[%d, %d]:\n", rows, columns);
int arrays[9][9];
for (int ir = 0; ir < rows; ++ir) {
for (int ic = 0; ic < columns; ++ic) {
scanf("%d%*c", & arrays[ir][ic]);
}
}
int allSum = 0;
int sums[9] = {0, };
for (int ir = 0; ir < rows; ++ir) {
int sum = 0;
for (int ic = 0; ic < columns; ++ic) {
printf("%6d", arrays[ir][ic]);
sum += arrays[ir][ic];
sums[ic] += arrays[ir][ic];
allSum += arrays[ir][ic];
}
printf("%6.1f%6d\n", sum / (double) columns, sum);
}
for (int ic = 0; ic < columns; ++ic) printf("%6.1f", sums[ic] / (double) rows);
printf("%6.1f -\n", allSum / (double) rows / (double) columns);
for (int ic = 0; ic < columns; ++ic) printf("%6d", sums[ic]);
printf(" - %6d\n", allSum);
return 0;
}
739725:2007/12/28(金) 23:38:34
>>738
ありがとうございます!
大変助かりました!
740726:2007/12/29(土) 00:20:30
>>737
解説感謝です。
741デフォルトの名無しさん:2007/12/29(土) 00:36:13
横からすまないが、>>738
scanf("%d%*c", & arrays[ir][ic]);
↑の文は一体何をしてる?

arraysに整数をぶっこむ所までは分かるけど
その後の、%*cがよく分からない。
742デフォルトの名無しさん:2007/12/29(土) 01:15:29
743デフォルトの名無しさん:2007/12/29(土) 01:21:03
1] 授業単元:プログラミング技術U
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5591.txt
      このプログラムを3〜4つに分割してコンパイルできるようにする
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2007年1月7日]

なにとぞよろしくお願いします。
744デフォルトの名無しさん:2007/12/29(土) 01:22:47
>>741
数値の後のカンマか改行文字を取り除くために、一文字空読みしている。
# 尤も、改行文字は通常取り除く必要はないが。
745デフォルトの名無しさん:2007/12/29(土) 14:44:45
[1] アルゴリズムとデータ構造
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5592.txt
[3] 環境
 [3.1] Windows
 [3.2] Visual Studio 2005
 [3.3] C
[4] 今年

完成させてすべての機能を一通りテストする
宿題なのですがコンパイル段階でエラーになってしまいました。
どこがいけないのでしょうか?
よろしくお願いします。
746デフォルトの名無しさん:2007/12/29(土) 14:53:56
>>745
コンパイル時のエラーメッセージを読めば全部書いてある
747デフォルトの名無しさん:2007/12/29(土) 15:04:05
>>743
複数ファイルに分ければいいのか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5593.zip
748デフォルトの名無しさん:2007/12/29(土) 17:22:21
>>743
たぶんそうですw
なんか、たとえば、こことここを分けるとエラーでてコンパイルできんよ
みたいなところがあるじゃないですか?ウチそれがわからんくて・・
プログラムを2〜3個に分けても、コンパイルできればいいんだとおもいますw

大域変数のmain以外のファイルからの参照に関してはextrnキーワードを使うらしく、
例としては
gcc s1.c s2.c
gcc -o s.out s1.o s2.o
とするとs1とs2をリンクしてs.outを作成してくれるらしいです
749デフォルトの名無しさん:2007/12/29(土) 20:59:35
>>748
externだ。
っていうか、エラーメッセージ晒せ。
そっちの方がたぶん早い。
750デフォルトの名無しさん:2007/12/29(土) 21:38:46
>>745
ソース足らなくね?
とりあえず気づいたのは構造体をtypedefした名前と宣言で使ってる名前が違ってる。
751745:2007/12/29(土) 23:19:26
>>750
ありがとうございます。
ソース足りないのですか!?プログラムリストはこれだけだったのですが…
自分なりにいじったりしているのですがどうにもなりません。
改良版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5594.txt
エラー内容
未解決の外部シンボル _fclost が関数 _main で参照されました。
meibo20.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と出てしまいます。
752デフォルトの名無しさん:2007/12/29(土) 23:24:15
>>751
fclostをfcloseに置換したら終わり。
753デフォルトの名無しさん:2007/12/29(土) 23:38:49
>>752
コンパイルできました!!
ありがとうございます。
754デフォルトの名無しさん:2007/12/30(日) 00:14:02
連投ごめんなさい。ここからが本題です。
[1] アルゴリズムとデータ構造
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5595.txt
[3] 環境
 [3.1] Windows
 [3.2] Visual Studio 2005
 [3.3] C
[4] 今年

@Dコマンドで削除するときに、本当に削除していいか確認メッセージの表示。
AIコマンドで学籍番号が4桁であることをチェックする。
BIコマンドで氏名や学番を改行だけにすると入ってしまうのを改良。
CIコマンドで既にある学番を入力するとエラーがでるようにする。
DIコマンドを入力した後でコマンド選択に戻れるようにする。
E即在データと同じ学番データ入力データ内に存在すると、
  Rコマンド実行すると、同じ番号のレコードが挿入されてしまうのを改良。
F各コマンドに対応する関数を作り、分かりやすい形にする。

どれか一つでもいいのでよろしくお願いします。

755デフォルトの名無しさん:2007/12/30(日) 02:20:39
[1] 授業単元: アルゴリズム(探索)
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5596.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007/12/31 23:00
[5] その他の制限:なし

全てが必須課題なに解けなくて困っていますorz
どなたか、何卒お願いします
756デフォルトの名無しさん:2007/12/30(日) 02:42:26
>>754 意味わからんがとりあえず、元を崩さぬようにやってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5597.c
やったところはコメントでわかるようになってると思う。 6番はイミフでやってない。
関数分けはコピペだから、そんなに難しく考えなくてもいい。 勝手に構造体をグローバルにした。
そんなところ。 あと、完全にfreeしきれてないが、そこは注文外なので直してない。
757デフォルトの名無しさん:2007/12/30(日) 02:44:03
※デバックはやってないし、動作も保障しない 書き忘れ
758デフォルトの名無しさん:2007/12/30(日) 04:28:15
759デフォルトの名無しさん:2007/12/30(日) 07:29:16
760デフォルトの名無しさん:2007/12/30(日) 07:51:41
761デフォルトの名無しさん:2007/12/30(日) 11:01:31
みんな楽しい課題があっていいな。
おいらも学生に戻りたい。
762デフォルトの名無しさん:2007/12/30(日) 11:40:08
763デフォルトの名無しさん:2007/12/30(日) 11:42:09
ところで、>>727ってマニピュレータっていうのか?
764デフォルトの名無しさん:2007/12/30(日) 11:58:14
流し込まれた変数が%の数に一致した時点でsprintf
→sprintfの戻り値が%の数と違ったらbad_format
→OKだったらostreamに流し込む
※%tはそのまま流し込む
765デフォルトの名無しさん:2007/12/30(日) 12:55:11
リニアサーチなんて初めて聞いたわ
766デフォルトの名無しさん:2007/12/30(日) 19:21:19
>>764
C++でおk
767デフォルトの名無しさん:2007/12/30(日) 19:55:49
>>766
素朴な疑問なんだが、どの辺をC++じゃないと思ったの?
768デフォルトの名無しさん:2007/12/30(日) 19:58:38
>流し込まれた変数が%の数に一致した時点でsprintf
>→sprintfの戻り値が%の数と違ったらbad_format
>→OKだったらostreamに流し込む
>※%tはそのまま流し込む
この辺
769デフォルトの名無しさん:2007/12/30(日) 20:19:48
>>768
元の問題は>727であり、>764はそれの実装の話だと思うんだ。
まして、bad_formatやostreamがC++以外にあるとも思えないのだがそれでもC++と思えない理由が知りたい。
770デフォルトの名無しさん:2007/12/30(日) 20:30:11
理由も何も>>764はC++じゃなくて日本語で書かれてるんだよ
771デフォルトの名無しさん:2007/12/30(日) 20:36:04
はぁ? あれだけ説明があっても自力でC++にできないんですか?
「コーディングもお願いします」位言っても罰は当たりませんよ。
772764:2007/12/30(日) 21:57:49
>>766は「プログラム書けよw」というただの冗談(ちゃかし?)だろ?w
何をむきになってんだ>>771
773デフォルトの名無しさん:2007/12/30(日) 22:01:58
>>764
マニピュレータの正確な定義しらんからようわからんけど、
ちがうと思う。
774773:2007/12/30(日) 22:52:33
>>764じゃなくて>>763だった。
775デフォルトの名無しさん:2007/12/31(月) 01:18:40
>>727
とりあえず書いてみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5602.cpp

演算子の優先順位は変えられないので
  std::cout << (cformat("%05.2d : %4.3f : %s") << 12 << 5.87 << "abc");
に仕様変更したけど許してね。
776デフォルトの名無しさん:2007/12/31(月) 02:02:29
>>759
>>760
すばやい回答、ありがとうございました
777デフォルトの名無しさん:2007/12/31(月) 02:35:10
C++の基本はC言語と同じなんですか?
グラフィックとかをいじる関数とかを
ひとつ教えて欲しいんですけど。
778デフォルトの名無しさん:2007/12/31(月) 02:47:56
>>777
スレ違い
779デフォルトの名無しさん:2007/12/31(月) 02:48:20
>>777
>C++の基本はC言語と同じなんですか?
どこまでを基本とするかは知らんが同じといえば同じ部分も多い。
グラフィック関係の標準関数については無い。というよりあるわけがない。
780デフォルトの名無しさん:2007/12/31(月) 11:05:28
>>777
ここはC/C++の宿題を丸投げするスレです.スレ違いなので他へどうぞ
781デフォルトの名無しさん:2007/12/31(月) 19:04:10
宿題かもーん。
782デフォルトの名無しさん:2007/12/31(月) 19:07:09
年末まで宿題とはご苦労なことですね
783デフォルトの名無しさん:2007/12/31(月) 19:14:46
プログラミングしながら年越しってのも良いものだよ。
784デフォルトの名無しさん:2007/12/31(月) 19:25:14
おまいら良いお年を
785デフォルトの名無しさん:2007/12/31(月) 19:25:22
年越しと同時にイく計画を立ててる
このために3日溜めたんだ
786デフォルトの名無しさん:2007/12/31(月) 20:29:01
そんなに宿題溜め込むなよ
787デフォルトの名無しさん:2008/01/01(火) 01:20:37
[1] 授業単元:クリスマス
[2] 問題文(含コード&リンク):
 郵便屋さんが家々を順番に回り、年賀状を配ろうとしている。ただし、以下の条件がある。
・年賀状を配るべき家は50件ある。
・家々の距離はデータファイルから与えられる。
・自転車にはA,B,Cの3種類があり、それぞれ速さが違い、使用回数の制限がある。
・A→速さ5、回数制限8
・B→速さ3、回数制限16
・C→速さ1、回数制限25
・どの家から配り始め、どの家で配り終えるかは任意に選べる物とする
以上の条件の下で、最短ルートを導け

なお、データファイルは以下の形式で与えられる
(家の番号は0〜49)
0 1 15 //0番目の家から1場面の家までの距離は15、の意味
0 2 2
...
49 48 8

[3] 環境
 [3.3] 言語: どちらでも可
[4] 期限: 1日昼過ぎまで
[5] その他の制限:
 おめでとう!
788デフォルトの名無しさん:2008/01/01(火) 01:42:10
>>787
言語は自由?
789デフォルトの名無しさん:2008/01/01(火) 02:02:24
>>787
ちょw単元をクリスマスから元日とか賀正とかに直した方がいいと思うぞw
790おもち  ◆pBCmNorh1. :2008/01/01(火) 04:25:08
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク):
宿題1 定積分の計算
宿題2 年月日計算
の二つです。リンク先のZIPファイルに説明文と宿題に対応したファイルが入っています。
http://1rg.org/up/0752.zip
(>>1のアップローダーにはサイズが大きくてupできなかったので別のupローダを利用しました。)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 2008年1月7日まで
[5] その他の制限:なし

明けましておめでとうございます。
宿題が2つ出たのですが、あまり理解できずに困っています。
申し訳ありませんが宜しくお願い致します。
791デフォルトの名無しさん:2008/01/01(火) 12:36:16
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
平面走査を用いた一般線分の交点列挙アルゴリズム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5605.zip
参考:計算幾何学入門(森北出版)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VisualStudio 2005
 [3.3] 言語: c またはc++
[4] 期限: 2008年1月7日まで
[5] その他の制限:なし

あけましておめでとうございます
792デフォルトの名無しさん:2008/01/01(火) 17:58:12
>>791
或るTextの設問に附いて考えSourceを作成…
HelpApplicationにしようと考えたのですが?セグメンテーション違反…
仕方が無いので別動作のlibraryとして組込みました…
793デフォルトの名無しさん:2008/01/01(火) 18:21:16
よく見るのに(int *)&hensuってのがあるんです。
これってなんで&の前にポインタ型の明示キャストしてるんですか?
794デフォルトの名無しさん:2008/01/01(火) 18:24:53
hensuがint型じゃないとか
795デフォルトの名無しさん:2008/01/01(火) 22:04:37
よく見るの?

同考えてもスレチだが。
796デフォルトの名無しさん:2008/01/02(水) 11:03:28
>>659
{
    int i, j;
    for (i = 0, j = 0; i < 39; ++i, ++j) {
        result[38 - j] = (arg & 1) == 0? '0': '1';  arg >>= 1;
        if ((i + 1) % 4 == 0) { ++j; result[38 - j] = ' '; }
    }
    result[39] = '\0';
}

この部分はどういった意味があるのでしょうか?
797デフォルトの名無しさん:2008/01/02(水) 14:53:56
>>796
arg:二進数に変換したい数字(32ビットint)
result[]:変換結果(文字列)

{
int i,j;
for(i=0,j=0;i<39;++i,++j){
result[38-j]=(arg&1)==0?'0':'1';//argと1の論理積が0なら'0'、1なら'1'をresultに代入
arg>>=1;//argを右に1ビットシフト
if((i+1)%4==0){
++j;
result[38-j]=' ';//4ビットごとに空白を挿入
}
}
result[39]='\0';//resultの終端に\0を代入


多分これであってるはず。処理を順番に追っていけばすぐわかると思う。
798デフォルトの名無しさん:2008/01/02(水) 14:59:32
それは10進数を2進数にする関数だが、基本的な2進数への
変換方法が分からないなら、そっちを先に勉強した方がいいかもね。

void ToBinaryString(char *result, int arg)
{
    int i, j;
    for (i = 0, j = 0; i < 39; ++i, ++j) {
        if (arg % 2 == 0)
             result[38 - j] = 0;
        else
             result[38 - j] = 1;
        arg = arg / 2;
        if ((i + 1) % 4 == 0) {
            ++j;
            result[38 - j] = ' ';
        }
    }
    result[39] = '\0';
}
799デフォルトの名無しさん:2008/01/02(水) 15:03:48
しまった、result[38 - j] = '0'; と result[38 - j] = '1';だな
1とのand演算は、奇数なら1、偶数なら0を返す。
?演算子は無理して使わなくてもいい
800デフォルトの名無しさん:2008/01/02(水) 15:17:43
>>796-799
>for (i = 0, j = 0; i < 39; ++i, ++j)
j<39の間違いだろ
801デフォルトの名無しさん:2008/01/02(水) 15:20:02
>>799
?演算子だと検索しにくいから、
条件演算子とか三項演算子って書いた方がいいと思う
802デフォルトの名無しさん:2008/01/02(水) 15:41:36
そもそも、iとjと2つも使うから混乱するんじゃないか?
void ToBinaryString(char *result, int arg){
int i;
for (i = 0; i < 39; ++i){
if ( (i + 1) % 5 ){
result[38 - i] = '0' + !!(arg & 1);
arg >>= 1;
}
else result[38 - i] = ' ';
}
result[39] = '\0';
}
803デフォルトの名無しさん:2008/01/02(水) 19:16:22
>>754さん分かりやすくしていただいてありがとうございました。
変更部分にメッセージ入れていただいたおかげで意味が分かりました。
しかし、また宿題が出てきました。
どなたかよろしくおねがいします。

[1] アルゴリズムとデータ構造
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5595.txt
[3] 環境
 [3.1] Windows
 [3.2] Visual Studio 2005
 [3.3] C

@H(ヘルプ)コマンド
  コマンド?[I(挿入),D(削除),P(表示),W(書き込み),R(読み出し),X(終了)] :
  と毎回出るのは煩わしいので「コマンド?」だけにして、
  Hコマンドを投入すると各コマンドの説明が表示されるようにしなさい。
Aデータの追加
  氏名と学籍番号の他に「eメールアドレス」と「担当教員名」も
  格納できるようにしなさい。
BP(表示)コマンドでの範囲指定
  Pコマンドで、表示範囲を指定できるようにせよ。
  たとえば、前後の学籍番号を指定すると、その範囲だけが
  表示されるようにせよ。
804デフォルトの名無しさん:2008/01/02(水) 23:13:56
>>803 なんという全投げだw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5606.c
期限と制限のテンプレ抜けてるし。 修正箇所はコメント参照。
805デフォルトの名無しさん:2008/01/03(木) 01:26:32
[1] 授業単元:情報処理
[2] 問題文

入力された整数を2進数に直して表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 2.4
 [3.3] 言語: C
[4] 期限:一月七日
[5] その他の制限:関数を用いる。
配列を使わずにできるのでしょうか?
806デフォルトの名無しさん:2008/01/03(木) 01:41:07
>>805
#include <stdio.h>

int henkan(char x){
unsigned char i;
for(i=128;i>0;i=i>>1){
if((i&x)==0){
printf("0");
}
else{
printf("1");
}
}
printf("\n");
return 0;
}

int main(){
unsigned char x;
scanf("%d",&x);
henkan(x);
return 0;
}

だめ?
807デフォルトの名無しさん:2008/01/03(木) 01:52:28
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):
標準入力から10個の文字を入力し,文字型の配列に代入しなさい.
その配列に対して挿入ソートを行い,ソート後の配列の内容を標準出力に出力しなさい.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gccコンパイラ
 [3.3] 言語:C言語
[4] 期限: 1/7まで
[5] その他の制限:問題文には、以下の条件が追記されています
1. char data[10] を宣言する./*文字型の配列*/
2. fgetc() 関数を用い,標準入力から1文字ずつ読み込み,配列 data[] に代入する.
3. 配列 data[] に対して挿入ソートを実行する./*挿入ソーティング*/
4. ソート後の配列 sort[] の値を fputc() 関数を用いて1文字ずつ出力する./*挿入ソーティングの結果を適用*/
どなたかよろしくお願いします
808デフォルトの名無しさん:2008/01/03(木) 02:51:15
>>807
#include <stdio.h>
int main(void){
    int i, j;
    char buf[10], tmp;
    for(i = 0; i < 10; i++) buf[i] = fgetc(stdin);
    for(i = 1; i < 10; i++){
        tmp = buf[i];
        for(j = i - 1; j >= 0 && tmp < buf[j]; j--)
            buf[j + 1] = buf[j];
        buf[j + 1] = tmp;
    }
    for(i = 0; i < 10; i++) fputc(buf[i], stdout);
    return 0;
}
809デフォルトの名無しさん:2008/01/03(木) 12:13:31
>>805
#include <stdio.h>

void f(int n)
{
int m = n >> 1;
if(m) f(m);
printf("%d", n & 1);
}

int main(void)
{
int n;

scanf("%d", &n);

f(n);

return 0;
}
810デフォルトの名無しさん:2008/01/03(木) 15:53:33
2の補数も求めるにはどこを弄るか
811700:2008/01/03(木) 16:33:12
どなたか>>700やっていただけないでしょうか??
面倒な問題+他の人が作成したプログラムからのフローチャートなので難しいのかもですがよろしくお願いします。
812デフォルトの名無しさん:2008/01/03(木) 16:38:06
フローチャートはスレ違い・・・
まぁ奇特な人が現れるのを待って頑張れ
813デフォルトの名無しさん:2008/01/03(木) 17:47:56
[1] 授業単元:プログラミング
[2] 問題文http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5610.txt
[3] 環境
 [3.1] XP
 [3.2] visual stdio 2005
 [3.3] c++
[4] 期限: 1月いっぱい
[5] その他の制限: 特になし
お願いします。
814700:2008/01/03(木) 17:48:57
奇特な人ですか…
信じて待ってみますw
815デフォルトの名無しさん:2008/01/03(木) 18:43:56
816815:2008/01/03(木) 18:53:22
分布データ格納用の配列サイズの宣言が何故か12で宣言してたわ、そこ11にしといて。39行目。
817デフォルトの名無しさん:2008/01/03(木) 18:56:02
>>815を提出したら、C++をある程度できる子扱いになるなw
818デフォルトの名無しさん:2008/01/03(木) 19:15:48
>>815
ありがとうございます、助かりました。
しかし、習っていないことばかりなのでこのまま提出したら怪しまれること間違いなしです。

まだ勉強を始めて間もないので簡単な構文のみを使った解答例をお願いできないでしょうか?
819デフォルトの名無しさん:2008/01/03(木) 19:18:44
>>818
そういうときは、その他の制限にでも要望を書いておくべきだよ。
二度手間になるし。
820デフォルトの名無しさん:2008/01/03(木) 19:20:06
>>818
宿題丸投げしてるんだから文句言えないだろう…常識的に考えて…
821デフォルトの名無しさん:2008/01/03(木) 19:22:05
>>1にも注意書きしといたらいいんじゃないかな?
俺も今じゃ回答する側だが、
昔このスレで宿題やってもらったときは正直難しい回答を貰って困った経験がある。
そのときは何とかごまかしたが。
822デフォルトの名無しさん:2008/01/03(木) 19:22:29
[1] 授業単元: プログラミング
[2] 問題文:
ランダムに文字列が書き込まれたtxtファイルから指定の文字列と文字列の間の
文字列を全て抜き出してtxtファイルへ出力する
改行は無視するが文字列の間にスペースが入っていると無効とする

例えば
指定文字1="abc" 指定文字列2="123"
txtファイルの中身
ppppabckkkkk123ww123ab
cooooooooooooooooooo12
3ssssssabcggggabcll123
abcmmm jj123a bc999123

の場合
abckkkkk123
abcooooooooooooooooooo123
abcll123
を新たにtextファイルに出力する

[3] 環境
 [3.1] OS: Windows
 [3.2] VisualStudio2005
 [3.3] 言語: C,C++,WinAPI
[4] 期限:特になし
[5] その他の制限: 無し
823デフォルトの名無しさん:2008/01/03(木) 19:25:14
>>818
簡単な構文とか勉強し始めといった不透明な要望は、
回答する側にとっては非常に理解し辛いのでなるべく明確に書いてくれ。

たとえば君がポインタを使えるのかどうか、
そしてベクターを使えるのかどうか、
さらに言えば配列がわかるのか、クラスや構造体を使ってよいのか等、回答者にはまったくわからない。
824デフォルトの名無しさん:2008/01/03(木) 19:30:09
実はデキる奴だと思わせるチャンスではないか
825デフォルトの名無しさん:2008/01/03(木) 19:30:59
はったりかます→勉強せざるを得なくなる→成長

いいことだらけだぜ
826デフォルトの名無しさん:2008/01/03(木) 19:35:22
>>819>>820
その通りですね、要望にきちんと書いておくべきでした。>>815さん、申し訳ないです。

>>823
そうですね、if文、while文、for文を学習して、今は配列の勉強をしているところです。
ポインタやベクター、クラスや構造体はまだ学習していません。

こんな感じだと伝わりますかね?


827デフォルトの名無しさん:2008/01/03(木) 19:37:50
>>825
はったりかます→講師が騙されてよい成績をつける→おまいらの会社が騙されて採用→一緒に仕事するおまいら死亡

ああ
実にいいことだらけだとも
828デフォルトの名無しさん:2008/01/03(木) 19:46:16
うちの会社はペーパーやるから丸投げな人はそこで落ちるな
無問題
829デフォルトの名無しさん:2008/01/03(木) 19:58:02
[1] 授業単元:入社試験
830815:2008/01/03(木) 19:59:48
>>826
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5612.txt

こんな感じでよいかな。
標準偏差を求める問題が出されるってことは、流石に平方根を求めるsqrt()とかは習ってるよね。

しかし、空気読めない解答者ですまんかった。
831デフォルトの名無しさん:2008/01/03(木) 20:11:20
>>830
いえいえ、空気読めてないのはどう見ても私のほうです。
お時間割いていただいて、ありがとうございます。

次回書き込むことがあれば、きちんと要望を明記したいと思います。皆さん、ご迷惑おかけしました。
832デフォルトの名無しさん:2008/01/03(木) 20:39:22
math.h は cmathにしようぜぃ
833デフォルトの名無しさん:2008/01/03(木) 20:44:49
構造体や記憶クラスから分からなくなってきた
834デフォルトの名無しさん:2008/01/03(木) 20:56:22
>>822
> 3ssssssabcggggabcll123
例の3行目のところ、出力が「abcll123」になっているが、
その前に「abcgggg」とabcで始まるところがあるんだが、
abcが複数出てきた場合、最後に出てきたものから抜き出すの?
そっちの方が面倒くさい処理になりそうな気もする。
835デフォルトの名無しさん:2008/01/03(木) 21:16:18
超初心者なのですが
Cで時間経過を表示するにはどうやったらよいのでしょうかね
たとえばループの前後で

時間表示
for{〜}
時間表示

のようにすると同じ時刻が表示されてしまいます。
どうもgettimeのライブラリをリンクして#includeで宣言した
ときの値で固定されてしまっているようなんですが。
836デフォルトの名無しさん:2008/01/03(木) 21:36:49
スレ違いだが、秒単位での経過時間ならそれで計れるはずだよ。

しかし、winやlinuxのようなマルチタスクOSで厳密な経過時間を計ることは難しいな。
OSが提供しているAPIを使えば、それなりに精度は上げられるが。
837デフォルトの名無しさん:2008/01/03(木) 21:43:05
今更って感じもしなくもないが、>>700の出題者には日本語でおkと言いたい
838700:2008/01/03(木) 21:59:37
>>837
確かにそうですね。
フローチャートを作成してくださいってことなんですが、文おかしかったですね。
すみません。
839デフォルトの名無しさん:2008/01/03(木) 22:15:07
>>811
そもそも3次元方程式の解きかたがわからん
噛み砕いて説明してくれ
840700:2008/01/03(木) 22:29:49
いや、正直>>839さんより自分の方が理解してないと思います。
ニュートン法を用いた3次関数のプログラムも前スレで拾ったものですし…。
やっぱりここにいる方でも結構難しい宿題なんですかね??
841デフォルトの名無しさん:2008/01/03(木) 22:32:20
とりあえず
(1) 問題をどのように理解し、どのようなアルゴリズム(算法)で処理を進め方。
を日本語に翻訳してください
842700:2008/01/03(木) 22:36:17
(1) 問題をどのように理解し、どのようなアルゴリズム(算法)で処理を進めるかを書け。
ということなんですが、もうこの際フローチャートだけでいいです。
本当にすみません。
843デフォルトの名無しさん:2008/01/03(木) 22:43:47
>>839
3字は公式があった様な気がする
844デフォルトの名無しさん:2008/01/03(木) 22:48:28
一応4次方程式まで解の公式があるの知ってるが…
おれ、3乗根の書き方知らないんだ
845デフォルトの名無しさん:2008/01/03(木) 22:51:53
x^(1/3)
846デフォルトの名無しさん:2008/01/03(木) 22:56:26
>>844
それ知ってもできねーだろうが。
俺も3次方程式はわからんけどw
847デフォルトの名無しさん:2008/01/03(木) 23:01:08
数学得意じゃないおれは全くわからない。
というか、ニュートン法ってなに??
848デフォルトの名無しさん:2008/01/03(木) 23:01:47
完成された数式を説明せよなんて問題が一番ウザイな。
情報系なら既にあるもの、アルゴリズムが完成したものは、
おとなしくブラックボックス化しておけばいい。
説明や証明は数学系がやるべきだと思うね。
849デフォルトの名無しさん:2008/01/03(木) 23:05:51
三次方程式の解の公式はカルダノの解法と言われている。詳細はぐぐれ。結構簡単だ。
四次方程式はフェラーリの解法と言われているが、こちらはあまり簡単ではない。やはり詳細はぐぐれ。
850デフォルトの名無しさん:2008/01/03(木) 23:11:56
全スレで拾ったていうのやめて全部つくってもらったら?
フローチャートもプログラムも。
数学できない自分はやる気すらおきないけどw
851デフォルトの名無しさん:2008/01/03(木) 23:14:53
ニュートン法くらいはWikipediaに載ってる
http://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3%E6%B3%95
別に理論はおいといて、アルゴリズムが書いてあるんだからこれを単に使うだけでいいんじゃないか?
852デフォルトの名無しさん:2008/01/03(木) 23:17:25
ニュートン法は理論も簡単だよ
853デフォルトの名無しさん:2008/01/03(木) 23:17:40
問題はフローチャートを作らないといけないんでしょ?
854デフォルトの名無しさん:2008/01/03(木) 23:22:14
このわけわからんスレの一体感は一年ぶりくらいだな
>>851
これを読む限りでは√2とかを手計算で求める方法が記述してあるようだ
で、それが>>700のフローチャートとどう関係あるのか全くわからん
855デフォルトの名無しさん:2008/01/03(木) 23:23:27
>>842
> (1) 問題をどのように理解し、どのようなアルゴリズム(算法)で処理を進めるかを書け。
> ということなんですが、もうこの際フローチャートだけでいいです。
フローチャートあったって仕方ないだろ?
ニュートン・ラプソン法を理解してないんだから…
要は、ニュートン・ラプソン法をフローチャート化しろと言ってるわけだが
俺にはフローチャートは書けない。
つか、書いてもそれに対する説明が wikipedia の説明程度には必要になると
思う
856デフォルトの名無しさん:2008/01/03(木) 23:26:40
1. xの初期値を入力
2. イテレーションの最大回数を入力
3. xの変化量f(x)/f'(x)を求める
4. 変化量が十分小さければイテレーションを終了し7.へ
5. x - f(x)/f'(x)を新たなxとする
6. イテレーション回数が指定回数未満なら3.へ
7. 解を出力
857デフォルトの名無しさん:2008/01/03(木) 23:38:19
>>811 べ、べつにあんたのお願いだからしてあげるってわけじゃないんだからねっ!
        // /:/:::::::::::::: /:: /:::/  l:::::: \:::::::::::::::::::::::::::∨ン′!  jヽ
           l/:::::/::::::: /::_/_:/   l:::::| ::: \_:::::::::::::::::::',:  K_/  ',
              /::::〃:::::::,'::: / !:l     ',:: lヽ´:::::\`:::::::::::::::: l  |::::|  l
.            ,':::::::{{:::::::: |:::/ |:{     ヽl \|_  \ ::::::::::: |  |::::|  |
          !:::::::/!::::::::jレ えテトミ     ィ斗テ〒ア ::::::::::|  |::::|  |
           |:::::/│::::::Wヾ r'::::::「       r'::::::: j バ ::::::: |_/ ::,|_,/
           |:::/_厶:::::::|ハ Vヘ j      !ヘイ/  ヘ :::: |:::::::::/:|
              V  ヾヘ::::|ヽハ ゞ ''      ` ー''   レ'W^|):: /:: |
                l ヽ|::::: { .:.:.   '     ::.:.:. ,、 _ イ:::: /::::::|
                |:::|:::::: 个    ヽ)     イ/::::::::::':::: /::::::: |
                |:::l::::::::::|::リ  >t-r   セヽ 〃:::::::::::::::/:::::::::::|
                |::::l:::::::::|/ _/ /-}   V  /:::::::::::::: /::l::::::::: |
@ 解付近の初期値x(0)、収束値eps、試行回数limitの値を決めなさい!
A y = f(x)のx = x(n - 1)における接線と、x軸の交点のx座標をx(n)とするのよ!
B |x(n) - x(n - 1)|/|x(n)| < epsならば収束したとみなしなさい!
C limitに満たない場合はAに戻り、limitを超えた場合は収束しなかったとみなすのよっ!

Aの式はテイラー展開の1次近似なんだからね!
Bの式はf(x) = 0になるわけじゃないから、勘違いしないでよっ!
例えば、f(x)とx軸が交わらない場合でも、交わっているとみなす場合があるんだから!
>>700のソースで、a = 0, b = 10000000, c = 0, d = 0.00001, 初期値 = 1, 試行回数 = 100
とした場合収束したことになっちゃうんだからっ!
858デフォルトの名無しさん:2008/01/03(木) 23:41:19
時々ここの住人がすごいって思うときがあるんだよね。
859デフォルトの名無しさん:2008/01/03(木) 23:51:56
三流大学の俺にはなにをいってるかわからないけど、すごいってことだけはわかったw
860デフォルトの名無しさん:2008/01/04(金) 00:13:29
>>857
なんだかよくわからんごちゃごちゃしたものが
なんだかよくわからんごちゃごちゃしたもんになってる
861デフォルトの名無しさん:2008/01/04(金) 00:17:46
というかそれを見ても質問者は絶対図を作れる能力もってないでしょw
862デフォルトの名無しさん:2008/01/04(金) 00:17:59
高卒就職の俺は、口調だけ読んでコーラ吹いてる。
863デフォルトの名無しさん:2008/01/04(金) 00:26:34
>>854
確かに。時々あるね。
こういう雰囲気。

にしても>>861の言うとおり図にする能力はもっているのだろうか。
864デフォルトの名無しさん:2008/01/04(金) 00:30:37
しかし、このスレの人は図にしてくれる優しさをもっているだろうか。
865デフォルトの名無しさん:2008/01/04(金) 00:36:40
>>864
なんだ、
これは振りか?

とりあえず、MS2000をインストールし始めました。
866デフォルトの名無しさん:2008/01/04(金) 00:41:53
>>834
ありがとうございます。そういうことです
abcの後にabcがあれば前のabcは無視して次のabcから123までを抜き出して欲しい
C,C++,WinAPIなら何を使ってもいいと言われてるんで、WinAPIでファイルを読み込む
ところまではできたんですが、肝心の文字列を抜き出すのが分からないです

とりあえずファイルを読み込むまではこんな感じで書きました
〜省略〜
HANDLE hFile;
DWORD dwAcc,dwSize;
char *lpszBuf;
HGLOBAL hMem;

〜省略〜
hFile=CreateFile("in.txt",GENERIC_READ|GENERIC_WRITE|0,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
MessageBox(hWnd,"読み込みエラー","読み込みエラー",MB_OK);
else
{
dwSize=GetFileSize(hFile,NULL);
hMem=GlobalAlloc(GHND,sizeof(char)*dwSize);
lpszBuf=(char *)GlobalLock(hMem);//ファイルサイズ分の領域を確保
ReadFile(hFile,lpszBuf,dwSize,&dwAcc,NULL);//lpszBufに読み込む
}
〜省略〜
867デフォルトの名無しさん:2008/01/04(金) 00:45:36
ニュートン法って言うのはねぇ、
関数 f(x)=0 となる x を求めるためのアルゴリズム。

で、どうやって求めるかというと、
ある適当な点(初期値とも言う) x0 における、 y=f(x) という曲線の接線の方程式を求めるわけ。
で、その曲線が y=0 となる x の点=x1 を求めると、
x0 より x1 の方が f(x)=0 の解に近づいているってこと。
但し、これが成り立つ条件は吟味してね。

で、x1 の方が近いということで、次は x1 で接線を求めてというのを繰り返えしていく。
どんどん繰り返すと目標の誤差の範囲内に入ってくるので、その時の xn を出力すればいいだけ。
868デフォルトの名無しさん:2008/01/04(金) 01:02:43
>>862じゃないが、高卒の俺には>>867が天才にしかみえない。
869デフォルトの名無しさん:2008/01/04(金) 01:07:16
つか、三次ごときでニュートン法ってのも分からんけどな……
870デフォルトの名無しさん:2008/01/04(金) 01:10:03
ニュートン法って情報系の学科じゃ必ずといっていいほどやるもんじゃないの?
871デフォルトの名無しさん:2008/01/04(金) 01:12:18
Fランでもやったなぁ
もう覚えてないけど
872デフォルトの名無しさん:2008/01/04(金) 01:14:12
まじかよwwFラン以下か俺の大学wwww
873デフォルトの名無しさん:2008/01/04(金) 01:19:51
そうじゃなくて、一々誤差がどーこーなるまで繰り返すってのがちょっとなぁ……
解の公式使えばいいじゃねーかって思う
874デフォルトの名無しさん:2008/01/04(金) 01:21:47
ニュートン法は五次でも六次でもそれ以上でも使えるよ
875デフォルトの名無しさん:2008/01/04(金) 01:23:19
>>873
3次方程式はあくまで練習のためということなんだろう
解の公式があるからプログラムの吐いた答えが正しいかどうか、学生が分かる。
実際には公式がない方程式(指数函数を含んでいたりして)を数値的に解きたいわけだし。
876デフォルトの名無しさん:2008/01/04(金) 01:26:35
質問者は『前スレ』から拾ってきたっていってたから別にニュートン法が大事じゃなくて3次方程式をとくプログラムとチャートが欲しいんじゃないの?
俺の勘違い?
877デフォルトの名無しさん:2008/01/04(金) 01:33:32
>>876
俺もそう思う
三次方程式を解くプログラムであって、
ニュートン法は質問者が勝手に持ち出しただけだろ
878デフォルトの名無しさん:2008/01/04(金) 01:34:38
以下解の公式を用いた3次方程式のプログラムとフローチャートの作成が始まります。
879デフォルトの名無しさん:2008/01/04(金) 01:41:50
>>865はいまだに頑張ってるのだろうかw
880デフォルトの名無しさん:2008/01/04(金) 02:17:46
881デフォルトの名無しさん:2008/01/04(金) 02:20:08
やっぱりな(´ー`)
882デフォルトの名無しさん:2008/01/04(金) 02:20:36
乙www
883デフォルトの名無しさん:2008/01/04(金) 02:24:36
884デフォルトの名無しさん:2008/01/04(金) 02:25:08
>>880
荒らし専門のおれだが久々に一体感に感動した
885デフォルトの名無しさん:2008/01/04(金) 02:30:24
>>880
全米が泣いた。
886デフォルトの名無しさん:2008/01/04(金) 02:40:53
>>880
いい仕上がり具合。うまいなぁ。
887デフォルトの名無しさん:2008/01/04(金) 02:43:12
マジで1年前もこんな感じのあった気がするんだが
質問者はもちっと勉強してから宿題投下すべきだと思うんだぜ
888デフォルトの名無しさん:2008/01/04(金) 02:56:22
しょうがないでしょ。
ここに来てる時点で。
それよりみんな乙。
今来た俺が若干悔しいw
889デフォルトの名無しさん:2008/01/04(金) 03:01:25
>>883
ありがとう。゜(゚´Д`゚)゜。
今までずっとやってたけど上手くいかなくて泣きそうになってた
次はこれを理解する作業に移ります
890デフォルトの名無しさん
>>822
>>866
なんかもう回答出たけど、一応作ったのであげてみる。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5615.cpp