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

このエントリーをはてなブックマークに追加
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++の宿題を片付けます 118代目
http://pc11.2ch.net/test/read.cgi/tech/1226847424/
2デフォルトの名無しさん:2008/12/03(水) 23:19:16
>>1

[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8198.c
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 08/12/04 正午

33行目からのint btree_find内で2分探索木にないデータを打ったとき早々にNo.で
探索を終了させるようにしたいのですがどう書いたらいいんでしょうか?
実行結果の例は
Input number: -20
*****No.
になっています
int btree_findの訂正をお願いします。
3デフォルトの名無しさん :2008/12/03(水) 23:47:21
4デフォルトの名無しさん:2008/12/04(木) 00:18:59
前スレ http://pc11.2ch.net/test/read.cgi/tech/1226847424
>>988
問題文だけ読んだら

./cal 5 + 6 [Enter]
11
./cal 8*7 [Enter]
56

とかいう感じのプログラムを想像した
5デフォルトの名無しさん:2008/12/04(木) 00:29:52
>>2

int btree_find(int root, int *data, int *left, int *right, int num)
{
printf("*");
if (root != -1) {
if (data[root] == num)
return 1;
if (data[root] < num){
if (btree_find(right[root], data, left, right, num) > 0)
return 1;
return 0;
} else {
if (btree_find(left[root], data, left, right, num) > 0)
return 1;
return 0;
}
}
return 0;
}

btree_print よくできたね
勉強になったわ
6デフォルトの名無しさん:2008/12/04(木) 00:30:51
前スレの914の者です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8189.txt


前半の部分はできたのですがbtree_find()の改良がうまくいかないので誰か助けてください。
お願いします。
7デフォルトの名無しさん:2008/12/04(木) 00:33:12
前スレ>>988はテンプレ無視してるだけでなく、過去レスすら見てないな。
前スレ>>958-959に問題と答えある。全く同じ課題。H大学。
8デフォルトの名無しさん:2008/12/04(木) 00:46:39
>>2,6
おまいら別人?
見た感じ同じ課題か
なんかこういうことでないかと思うが。
int btree_find(int root, int *data,int *left,int *right,int num)
{
int hoge = data[root];
printf("*");
if (root == -1)
return 0;
if(hoge == num)
return 1;
if (hoge > num)
return btree_find(left[root],data,left,right,num);
return btree_find(right[root],data,left,right,num);
}
98:2008/12/04(木) 00:48:28
あ、ごめん
解答済みだったか・・・
102:2008/12/04(木) 00:58:01
>>5
ありがとうございます。
>>8
どうみても同じ大学です。本当にありがとうございました。
11デフォルトの名無しさん:2008/12/04(木) 02:01:43
>>926

881で質問した者です。解いていただいて本当にありがとうございます。
ただ、[5] のその他の制限の通りwhileのループを用いないといけないのですが、
教えていただけますでしょうか。(まだfor whileの導入が終わった段階なので)
重ね重ねもうしわけありません。
12デフォルトの名無しさん:2008/12/04(木) 02:47:50
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・シーザー暗号を作成するプログラムを作る
・シーザー暗号
  -アルファベットを一定文字数だけ順方向にずらして暗号を作成
・英小文字のみからなる単語と鍵(何文字ずらすか)を入力するとシーザー暗号を作成するプログラムを作成せよ

実行例
単語を入力してください
zoo ↓
鍵となる整数を入力してください
1 ↓
暗号は app です.

単語を入力してください
crypt ↓
鍵となる整数を入力してください
10 ↓
暗号は mbizd です.

[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年12月8日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
             逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
            配列の初期化、2次元配列、文字コード、文字データ(char型)
            getchar、putcharは習いました。
お願いします。
13デフォルトの名無しさん:2008/12/04(木) 02:51:25
Visual C++でコマンドライン入力ってできる?
14デフォルトの名無しさん:2008/12/04(木) 03:21:24
>>12
当方の環境は cygwin/WindowsXP, 処理系は 3.4.4 です。
一行入力に fgets() を使いました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8202.txt

>>13
コマンドラインアプリだと思うのですが。

>>http://pc11.2ch.net/test/read.cgi/tech/1226847424/944
こんどはどうですか?
15前スレ975:2008/12/04(木) 03:37:38
>>984
ありがとうございました。
16デフォルトの名無しさん:2008/12/04(木) 08:17:16
>>13
引数にしたいってこと?
それともビルドをDOSでやりたいの?
17デフォルトの名無しさん:2008/12/04(木) 09:41:22
>>12
#include <stdio.h>
#define N 256
int main(void)
{
char str[N];
int key;
int i;

printf("単語を入力してください "); scanf("%s", str);
printf("鍵となる整数を入力してください "); scanf("%d", &key);
printf("暗号は ");
for (i = 0; (i < N) && (str[i] != '\0'); i++)
putchar('a' + (str[i] - 'a' + key) % 26);
printf(" です.\n");

return 0;
}
18デフォルトの名無しさん :2008/12/04(木) 11:03:19
19デフォルトの名無しさん:2008/12/04(木) 13:11:49
前スレ>>997

[1] 授業単元: プログラミング入門演習
[2] 問題文:生年月日から今日までの経過日数計算簡易プログラム
      誕生日と今日の日付を西暦・月・日の順にスペースで区切りながら入力。
      誕生日が今日の日付より後になっていた場合はエラーメッセージを表示する。
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 12月5日(金)
[5] その他:日数計算のとこはすでに出来ています。
      エラーメッセージ表示のとこの条件がわかりません><
      どなたかお願いします!
20デフォルトの名無しさん:2008/12/04(木) 13:44:42
21デフォルトの名無しさん:2008/12/04(木) 14:40:53
[1] 授業単元: C++ template
[2] 問題:

コンパイラ時に出るエラーが良く分かりません
原因と解決策を教えてください↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8206.txt

[3] 環境
 [3.1] OS:windowsヴィスタ
 [3.2] コンパイラ名とバージョン:ボーランド
 [3.3] 言語: C++
[4] 1分以内
[5] その他:特になし
22デフォルトの名無しさん:2008/12/04(木) 14:51:11
【質問テンプレ】
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):99文字までの文字列を入力し,アルファベットの小文字は大文字に,アルファベットの大文字は小文字に,またアルファベット以外の文字はアスタリスク’*’に変換した文字列を出力するプログラムを作成せよ.
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:わからないです
 [3.3] 言語:c++
[4] 期限: 今日の夜
[5] その他の制限:ライブラリ関数は使用せずにお願いします。
23デフォルトの名無しさん:2008/12/04(木) 15:03:35
>>22
#include <stdio.h>
#define SIZE 100
int main(void)
{
char input[SIZE];
char * c = input;
gets(input);
while (*c != '\0')
{
if (*c >= 'A' && *c <= 'Z')
putchar(*c - 'A' + 'a');
else if (*c >= 'a' && *c <= 'z')
putchar(*c - 'a' + 'A');
else
putchar('*');
c++;
}
return 0;
}
24デフォルトの名無しさん:2008/12/04(木) 15:04:05
>>14
やってくれたのは有り難いんですが、思うような結果が出なかったので、お手数ですがもう一度やって貰えないでしょうか?
お願いします。
25デフォルトの名無しさん:2008/12/04(木) 15:04:41
>>22
#include <iostream>
using namespace std;
int main()
{
char buf[256];
cin >> buf;
for(int i =0; buf[i] != '\0' ; i++){
if(buf[i] >= 'a' && buf[i] <= 'z')
buf[i] += 'A' - 'a';
else if(buf[i] >= 'A' && buf[i] <= 'Z')
buf[i] += 'a' - 'A';
else
buf[i] = '*';
}
cout << buf << endl;
}
26デフォルトの名無しさん:2008/12/04(木) 15:27:23
>>21もお願いします
27デフォルトの名無しさん:2008/12/04(木) 15:40:06
>>26
アンダーバーが抜けてる
28デフォルトの名無しさん:2008/12/04(木) 15:44:14
>>24
>>14じゃないがどう思うような結果と違ったのか書けよ禿げ
同じソースが出てくるかもしれんぞ

・・・・ fgets と scanf を組み合せたために '\n' が残ってしまっているんだとは思うけど
29デフォルトの名無しさん:2008/12/04(木) 16:47:16
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8207.c
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 本日午後8時半頃までに教えていただけると助かります。

「ファイルから文章を読み込み、その中で出現した文字記号数字の出現回数が多い順にヒープソートで並べ替え、
出現した文字と、その出現数、出現確率を出力する
但し、英大文字は小文字、数字は0、タブ改行はスペースに置換し、計数する(それ以外の文字についてはそのまま扱う)
ものとする。」という問題なのですが、
自分なりに書いたコードでは大量のエラーが出てしまい困っています。
どうすれば正しく動くようになるでしょうか?
3029:2008/12/04(木) 16:59:29
抽出元のデータは、英語の文章で、構造体へ入れる段階で取ったデータはこれです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8208.txt
最後によくわからない記号が含まれていましたので、
もしかしたら入れる段階から間違っているのかもしれません。
よろしくお願いします。
31デフォルトの名無しさん:2008/12/04(木) 17:06:03
swap!
32デフォルトの名無しさん:2008/12/04(木) 17:08:08
>>29
struct data{
int result;
char data;
float percent;
}result2[size],swap;
の,swapを削除
swap2(result2[c],result2[r]);

swap2(&result2[c],&result2[r]);
にするとエラーはなくなるかな
しかし
a,b,c,d,e,f,gとかいう変数名はやめろ
33デフォルトの名無しさん:2008/12/04(木) 17:16:24
>>28
ご指摘有り難う御座います。
>>17-18を見落としていたので、>>17-18を一回コンパイラしてみます。
何だかすいません。
34デフォルトの名無しさん:2008/12/04(木) 18:32:26
[1] 授業単元: 情報
[2] 問題文(含コード&リンク): http://crossmatic.hp.infoseek.co.jp/img003.jpg
[3] 環境
 [3.1] OS: knoppix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年12月05日22:00まで
[5] その他の制限:
#include<stdio.h>
#define N 4
#define M 5
int main(void)
{
double xi[N]={0.5,1.0,2.0,2.5};
double fi[N]={2.0,3.5,5.0,4.5};
double xxi[M*(N-1)+1];
double ffi[M*(N-1)+1];
"空白部分"
return(0);
}

ここの"空白部分"を埋めていただけないでしょうか。
for文を4重で使うってヒントを貰いました。
int型とdouble型なら使用OKです。
実行結果→http://crossmatic.hp.infoseek.co.jp/001.txt
よろしくお願いします。
3535 ◆z66TI33ApM :2008/12/04(木) 19:29:18
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
θ''=-(g/l)sinθ、θ'(0)=0、θ(0)=Θ
の厳密な数値解を初期振れ角Θを起動時に指定して、
アニメーション表示させるプログラムを作成してください。
gnuplotにパイプ接続してグラフィックを実現する方法を用いてください。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:[2008年12月11日まで]
[5] その他の制限:以前にここで答えを教えてもらったのですが、ダメだしを貰い
問題文に最後の一文を追加されました。そのときの回答はこちらです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8209.txt
尚、そのときのトリップは忘れてしまったので適当につけています
3622:2008/12/04(木) 19:29:21
つけたしで本当に申し訳ないんですが、
printf scanf int char a[100] for while ぐらいしか習ってないので
これらでやってもらってもよろしいですか?
あと実行結果を
「99文字以下の文字列を入力してください
変換された文字列は  です。」
としてくれたら助かります。
本当にごめんなさい。
37デフォルトの名無しさん:2008/12/04(木) 19:32:07
1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
3次関数f(x)=x(x-a)(x-b)とx軸、および直線x=0とx=c(c>0)とで囲まれる部分の面積の近似値
を求めるプログラムを次のように書け。
(1)定数a,bおよびcを整数データとして標準入力から入力する
(2)区間[0、c]をn等分して、その分点を順にX0=0、X1,X2,...,Xn=c、分点の間隔をΔx=x/nとして、
求める免責を Σf(Xk)Δxで計算する。んは1000とし、記号定数Nとして定義せよ
(シグマの上はnで下はk=1)
(3)F(Xk)を計算する部分を関数にする。変数Xkと関数値f(Xk)はdoubleとして扱うこと。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 今日の8時まで!!
[5] その他の制限:どこまでかわからないですが、基礎的なことしか習ってません。



本当にじかんがないので速攻でよろしくお願いします。
38デフォルトの名無しさん:2008/12/04(木) 19:46:02
>>36
言語は本当に「C++」なの?
39デフォルトの名無しさん:2008/12/04(木) 19:50:55
>>36 習った内容から推測して「C言語」と仮定した解
#include <stdio.h>
int main(void)
{
int i;
char a[100];
printf("99文字以下の文字列を入力してください。\n");
scanf("%s", a);
for(i = 0; a[i] != '\0'; i++) {
if (a[i] >= 'A' && a[i] <= 'Z')
a[i] = a[i] - 'A' + 'a';
else if (a[i] >= 'a' && a[i] <= 'z')
a[i] = a[i] - 'a' + 'A';
else
a[i] = '*';
}
printf("変換された文字列は %s です。\n", a);
return 0;
}
40デフォルトの名無しさん:2008/12/04(木) 19:51:12
>>37
マルチするな馬鹿野郎
41デフォルトの名無しさん:2008/12/04(木) 19:59:37
>>37
答えあってるかわからんが30秒で確認すれ
#include <stdio.h>
#define N 1000
double f(double Xk, int a, int b)
{
return Xk*(Xk - a)*(Xk - b);
}
int main()
{
int a, b, c, k;
double dx, Xk, S = 0.0;
printf("定数 a b c:");
scanf("%d %d %d", &a, &b, &c);
dx = c / (double)N;
Xk = 0.0;
for(k = 1; k <= N; k++){
S += f(Xk, a, b) * dx;
Xk += dx;
}
printf("面積: %f\n", S);
return 0;
}
4222:2008/12/04(木) 20:01:48
>>38 c++・・・だと思います。
>>39 とっても助かりました。いけました。

みなさんありがとうございました。
自分で作ってみたのと比較して勉強してきます。
43デフォルトの名無しさん:2008/12/04(木) 20:32:28
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 5桁の整数A,Bの四則演算をするプログラム
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:日曜日
[5] その他の制限: scanfを使わずにgetchar関数を使う


getcharだと・・・
よろしくお願いします。

44デフォルトの名無しさん:2008/12/04(木) 20:51:14
>>35
本当にwindowsでVCなんだろうな、その環境というかwin32apiのパイプでいいのか?
あとgnuplotへのパスは通ってると思っていておk?
4535 ◆z66TI33ApM :2008/12/04(木) 20:56:17
>>44
すいません、間違えていました
自宅の環境を書いていましたが、大学の環境を書くべきでしたね

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
θ''=-(g/l)sinθ、θ'(0)=0、θ(0)=Θ
の厳密な数値解を初期振れ角Θを起動時に指定して、
アニメーション表示させるプログラムを作成してください。
gnuplotにパイプ接続してグラフィックを実現する方法を用いてください。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2008年12月11日まで]
[5] その他の制限:以前にここで答えを教えてもらったのですが、ダメだしを貰い
問題文に最後の一文を追加されました。そのときの回答はこちらです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8209.txt
尚、そのときのトリップは忘れてしまったので適当につけています

おねがいします
4629:2008/12/04(木) 21:16:10
>>32
御指摘ありがとうございます。
教えていただいたところを書き換えたのですが、
相変わらず以下のようなエラーが発生しています。

heapsort.c:9: 警告: `struct data' declared inside parameter list
heapsort.c:9: 警告: its scope is only this definition or declaration, which is probably not what you want
heapsort.c: 関数 `heapify' 内:
heapsort.c:79: 警告: 互換性のないポインタ型からの引数 1 個の `swap2' を渡しますです
heapsort.c:79: 警告: 互換性のないポインタ型からの引数 2 個の `swap2' を渡しますです
heapsort.c: トップレベル:
heapsort.c:100: error: conflicting types for `swap2'
heapsort.c:9: error: previous declaration of `swap2'

swap2のプロトタイプ宣言が通らず、
それによって後々出現する全てのswap2でエラーが返されてしまっているのかなと
思うのですが、何度修正しても宣言自体が間違っているかのようなエラーが出つづける有り様で、
どう修正すればよいか分かりません。

よろしくお願いします。
47デフォルトの名無しさん:2008/12/04(木) 21:30:30
[1] 授業単元:C言語入門
[2] 問題文:月曜日から始まる月のカレンダーを出力するプログラムを作成しなさい。
ただし、7日毎に出力を改行すること。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 2005
 [3.3] 言語:C++
[4] 期限:今日の23:30まで
[5] その他の制限:for文とif文を使って作れと言われました

何年の何月のカレンダー、という制限はありませんでした。
単なる月曜日が1日で始まるカレンダーを作れ、ということなのでしょうが・・・
どなたかよろしくお願いします
48デフォルトの名無しさん:2008/12/04(木) 21:34:47
>>46
・関数名と変数名がどこかで被ってる
・swap2はプロトタイプ宣言ではなく呼び出し方がまちがってる
エラー以外については見てないから知らないけど

ちなみにbccでコンパイルだけしてみたけど
以下のたいへんわかりやすいエラーメッセージがでた。
> エラー E2356 hoge.c 18: 'swap' の再宣言で型が一致していない
> エラー E2344 hoge.c 8: 一つ前の 'swap' の定義位置
> 警告 W8065 hoge.c 53: プロトタイプ宣言のない関数 'print_reverse' の呼び出し(関数 main )
> 警告 W8004 hoge.c 56: 'n' に代入した値は使われていない(関数 main )
> エラー E2342 hoge.c 79: パラメータ 'data1' は data * 型として定義されているので data は渡せない(関数 heapify )
> エラー E2342 hoge.c 79: パラメータ 'data2' は data * 型として定義されているので data は渡せない(関数 heapify )
> *** 4 errors in Compile ***
49デフォルトの名無しさん:2008/12/04(木) 21:35:24
>>46
流し読み程度だが、swap2の宣言は前のままでいい。
ただ、構造体を引数に取ってるのにその後に構造体を定義しちゃいかんだろ。
あと、swapはポインタ渡してねーから多分思ってるとおりの動きせんよ。

あと、警告も直せ、おおむね間違ったこと書いてないし、後のためになることが多々あるだろうから。
50デフォルトの名無しさん:2008/12/04(木) 21:40:20
あと、変数全体にもいえることだけど、特にループカウンタはグローバルにするな。
ループ内で関数読んで、呼び出し先でもループ使ってたらロクでもない結果になる。
51デフォルトの名無しさん:2008/12/04(木) 21:45:39
>>47
まあ他にもいろんな解釈が出来そうだけど
これで問題あればまた言って。
#include <stdio.h>
int main(void)
{
int i;
printf("月 火 水 木 金 土 日\n");
for (i=1; i<=31; i++)
{
printf("%2d ", i);
if (i % 7 == 0)
printf("\n");
}
return 0;
}
52デフォルトの名無しさん:2008/12/04(木) 21:56:07
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):

アルファベット小文字4文字からなる文字列データ50個が保存されたファイルdata6.txtがある.チェイン法による探索プログラムをもとに,このファイル内の文字列データを探索するプログラムを以下の条件に従って作成しなさい.

・main( ) 関数内でデータファイル data9.txt を読み込み,データをバケットに一つずつ追加する.
・データを追加する関数を,insert( )とする.ハッシュ表の先頭アドレスと文字列の先頭アドレスを引数とし,戻り値はなし.
・ハッシュ関数の関数名を,hash( )とする.文字列の先頭アドレスを引数とし,生成されたハッシュ値を戻り値とする.
・探索する関数の関数名を,searchData( )とする.ハッシュ表の先頭アドレスと文字列の先頭アドレスを引数とし,探索によって見つかったデータの個数を戻り値とする.
・必要に応じて,ハッシュ表のすべてのバケットを表示する関数 showData( ) を作成する.
・ハッシュ表のサイズ TABLE_SIZE は,各自で決めること.
・main( )関数内で searchData( )関数を使用して "abcc", "daba", "wxyz"を探索し,以下のような探索結果を表示すること.

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

[3] 環境
 [3.1] OS:Win XP
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語: C
[4] 期限: 12/4 23:59
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

警告 W8075 課題6.c 37: 問題のあるポインタの変換(関数 main )
と出て何が問題なのかよく分からない状態です。
searchDataはまだ作成していません。
53デフォルトの名無しさん:2008/12/04(木) 22:01:06
>>51
これであってると思います
ありがとうございました!
54デフォルトの名無しさん:2008/12/04(木) 22:05:05
>>45
popenして流し込む簡単な仕様でいいか?
あと一応gnuplotのバージョン教えれ
言わないと4.0だと思ってつくる
55デフォルトの名無しさん:2008/12/04(木) 22:07:31
>>43 こんなのでいいのかな?
途中の処理を関数化したほうがすっきりしていいかも
#include "stdafx.h"
#include <stdio.h>
int main(void){
int i,sum,num,a,b;
char ch;
printf("a ○ bの演算をします\n");
printf("aを入力:");
sum=0;
for(i=0;i<4;i++){
ch = getchar();
num = ch - '0';
sum = sum + num;
sum = sum * 10;}
ch = getchar();
num = ch - '0';
a = sum + num;
fflush(stdin);
printf("bを入力:");
sum=0;
for(i=0;i<4;i++){
ch = getchar();
num = ch - '0';
sum = sum + num;
sum = sum * 10;}
ch = getchar();
num = ch - '0';
b = sum + num;
printf("a+b=%d\na-b=%d\na*b=%d\na/b=%d\n",a+b,a-b,a*b,a/b);
return 0;
}
5635 ◆z66TI33ApM :2008/12/04(木) 22:07:31
>>54
それで構いません。
バージョンはちょっとわかりません、すいません
57デフォルトの名無しさん:2008/12/04(木) 22:10:58
>>52
data6.txtうpまだー
それとも、その警告の意味を解説してほしいとか?
58デフォルトの名無しさん:2008/12/04(木) 22:13:49
>>57
すみません、すっかり失念してました。
これです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8211.txt

あと、何故この警告が出るのか教えていただきたいです。
59デフォルトの名無しさん:2008/12/04(木) 23:21:20
>>58
int hash(char *data)
{ 略
}

void insert(CELL *table[], char *data[])
{

int h = hash(*data);
}

hash()の呼び出しで型が合って無いから
6043:2008/12/04(木) 23:26:32
>>55

返答ありがとうございます。
今は試す環境がないので、明日さっそくやってみます。
61デフォルトの名無しさん:2008/12/04(木) 23:30:29
>>58
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8212.txt
いちおうできるだけ元の形を保ちつつ
>以下のような探索結果
が不明だったので適当にやった
62デフォルトの名無しさん:2008/12/04(木) 23:34:36
>>59,>>61
ありがとうございます。
期限が迫っていたので、既に不完全なままで提出してしまいましたが、
今後の学習のために参考にさせていただきます。
63デフォルトの名無しさん:2008/12/04(木) 23:36:52
[1] 授業単元: C
[2] 問題文:
(1)1729を求める最小値の式が12^3+1^3 = 10^3+9^3以外に成り立たないことを証明するプログラム。
(2)1729.3の立方根を求めるプログラム。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 12月5日08:00
[5] その他の制限: 特になし
64デフォルトの名無しさん:2008/12/05(金) 00:12:01
>>63
最小の式が意味不明
N^3 + M^3 = 1729 を満たす自然数 N M の組み合わせが (12, 1) (10, 9) 以外にないことを言いたいのか?
65デフォルトの名無しさん:2008/12/05(金) 00:19:19
>>46
はいそうです。
66デフォルトの名無しさん:2008/12/05(金) 00:27:44
>>63
(1)#include <stdio.h>
int main()
{
int n, m;
for(n = 1; n <= 1729; n++)
for(m = 1; m <= n; m++)
if(n*n*n + m*m*m == 1729)
printf("%d^3 + %d^3 = 1729\n", n, m);
return 0;
}
67デフォルトの名無しさん:2008/12/05(金) 00:31:25
>>63
#include <stdio.h>

int main()
{
int a[14], i, j;
for (i = 0; i < 14; ++i) {
a[i] = i * i * i;
}
for (i = 0; i < 14; ++i) {
for (j = i; j < 14; ++j) {
if (a[i] + a[j] == 1729)
printf("%2d^3 + %2d^3 = 1729\n", i, j);
}
}
printf("%d", 1729 *1729*1729);
return 0;
}
13の三乗が1729を超えることを前提にしてる
68デフォルトの名無しさん:2008/12/05(金) 00:47:46
>>63
(2)
#include <stdio.h>
/* ニュートン法による解法 */
int main()
{
double num = 1729.3, cbrt;
for(cbrt = num; fabs(cbrt*cbrt*cbrt - num) > 1e-10; cbrt = (num - 2*cbrt*cbrt*cbrt) / 3 / cbrt / cbrt);
printf("%f^(1/3) = %.8f\n", num, cbrt);
}
69デフォルトの名無しさん:2008/12/05(金) 00:52:15
[1] 授業単元: PROGRAMING:C
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8217.txt
ソースプログラムと、簡単に「動作・アルゴリズム説明文」もお願いします。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Cygwin
 [3.3] 言語: C
[4] 期限: 12月7日23:00
[5] その他の制限: 初歩的なレベルらしいです。 

何卒よろしくおねがいします。
70デフォルトの名無しさん:2008/12/05(金) 00:57:09
[1]授業単元:基礎プログラミング
[2]問題文
 99文字までの文字列を入力し,アルファベットの小文字は大文字に,アルファベットの大文字は小文字に,またアルファベット以外の文字はアスタリスク’*’に変換した文字列を出力するプログラム
[3]
[3.1]OS:Vista
[3.2]コンパイラ:VisualC++2008ExpressEdition
[3.3]言語:C++
[4]期限:本日a.m3
[5]その他の制限:課題に適したライブラリ関数もあるが,それらを使用せずにプログラムを作成


誰かこれお願いします。今日までにやらなきゃいけないんですけど全く分かりませんorz
71デフォルトの名無しさん:2008/12/05(金) 00:58:58
>>70
#include <stdio.h>
int main()
{
int i;
char s[100];
printf("99文字以下の文字列を入力してください.\n");
scanf("%99s",&s);
for( i=0; s[i]!='\0'; ++i )
if( 'a' <= s[i] && 'z' >= s[i] )
s[i] += 'A' - 'a';
else if( 'A' <= s[i] && 'Z' >= s[i] )
s[i] -= 'A' - 'a';
else
s[i] = '*';
printf("変換された文字列は%sです.\n",s);
return 0;
}
72デフォルトの名無しさん:2008/12/05(金) 00:59:27
>>70
このスレを99で検索すると幸せになれるよ。
7368:2008/12/05(金) 01:01:56
>>63
ごめん、式間違ってた
math ライブラリの fabs も使わないようにしたバージョン
#include <stdio.h>
/* ニュートン法による解法 */
int main()
{
double num = 1729.3, cbrt, eps = 1e-10;
cbrt = num;
while(cbrt*cbrt*cbrt - num > eps || cbrt*cbrt*cbrt - num < -eps){
cbrt = (num + 2*cbrt*cbrt*cbrt) / 3 / cbrt / cbrt;
printf("%25.15f\n", cbrt);
}
printf("%f^(1/3) = %.15f\n", num, cbrt);
return 0;
}
eps が 1e-12 あたりまでなら収束する
74デフォルトの名無しさん:2008/12/05(金) 01:03:33
>>71
> scanf("%99s",&s);
> for( i=0; s[i]!='\0'; ++i )
におうぜ
7571:2008/12/05(金) 01:12:38
>>74
もしかしてどこか間違ってる?
76デフォルトの名無しさん:2008/12/05(金) 01:22:36
>>71
ありがとうございます、助かりました。

>>72
あぁ既に質問されていた方がいたのですか。失礼いたしました。
77デフォルトの名無しさん:2008/12/05(金) 01:24:05
[1] 授業単元:ハードウェア設計
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8204.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2008年12月8日10:40まで

よろしくお願いします。
78デフォルトの名無しさん:2008/12/05(金) 01:25:24
>>66>>67>>73
ありがとうございます。助かりました。
79デフォルトの名無しさん:2008/12/05(金) 01:49:49
80デフォルトの名無しさん:2008/12/05(金) 01:51:18
>>74
あぁ、臭うぜ、お前から、あの臭いが。カレーでも食べたか?
81デフォルトの名無しさん:2008/12/05(金) 01:58:19
>>75
> scanf("%99s", &s);
「&」はいらないよね
82デフォルトの名無しさん:2008/12/05(金) 02:00:43
>>81
・・・
8371:2008/12/05(金) 02:03:41
>>81
なる

ども
84デフォルトの名無しさん:2008/12/05(金) 02:05:34
アドレス演算子について理解した方が良さそうだ。
配列、ポインタだとしても、その記述はちとまずい点もあるが・・・
85デフォルトの名無しさん:2008/12/05(金) 03:32:10
&の省略が可能なのか、&をつけても無視されることが多いのか
規格上はどっちなんだろ
86デフォルトの名無しさん:2008/12/05(金) 03:41:19
というか配列そのもののアドレス指すことになる
番地自体は先頭アドレスと同じ

無視はしねーし、省略が可能なわけでもない
87デフォルトの名無しさん:2008/12/05(金) 10:51:47
[1] 授業単元: 信号処理実習
[2] 問題文(含コード&リンク): http://data1.xiz.cx/img/uncho/200812054255.jpg
[4] 期限: 12/8

ここに書くべき問題かどうかわかりませんが…
急ぎですのでどなたかお願いします。。
8887:2008/12/05(金) 10:54:18
あ、答えは式だけで結構です。
89デフォルトの名無しさん:2008/12/05(金) 11:13:34

[1] 授業単元: プログラミング
> [2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8219.txt
> [3] 環境
>  [3.1] OS: Linux
>  [3.2] コンパイラ名とバージョン: gcc
>  [3.3] 言語: C
> [4] 期限: 2008年12月12日23:59
> [5] その他の制限:
>
> よろしくお願いします
90デフォルトの名無しさん:2008/12/05(金) 11:25:52
>>87
完全にスレ違い
わかっててやってるだろ詩ね
91デフォルトの名無しさん:2008/12/05(金) 11:35:07
92デフォルトの名無しさん:2008/12/05(金) 12:47:24

[1] 授業単元:C++ テンプレート
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8220.txt
[3] 環境
 [3.1] OS:Windowsヴィスタ
 [3.2] コンパイラ名とバージョン:borland
 [3.3] 言語:C++
[4] 期限:2時間以内

どこがどう違うのかまったく見当がつきません
何がエラーを起こすのかと解決するにあたっての助言を下さい
よろしくお願いします。
93デフォルトの名無しさん:2008/12/05(金) 13:52:44
ん?問題文はどこに?
それとも「エラーを修正せよ」って課題なのか。
94デフォルトの名無しさん:2008/12/05(金) 14:41:14
>>93
問題文は英語なんで微妙かな・・・と思って載せませんでした
ただ基本的なテンプレートの問題らしいので
どうしてコンパイラエラーが起こるのかについて解説してもらえたらなーと思って
95デフォルトの名無しさん:2008/12/05(金) 14:57:40
もう時間切れだから用はないだろ?はい、次―
96デフォルトの名無しさん:2008/12/05(金) 15:00:23
[1] 授業単元:プログラミング(C++)
[2] 問題文(含コード&リンク):ニューラルネットのBPアルゴリズムを満足できるクラスを作成せよ。ただし、関数はできるところまででよい。
[3] 環境
 [3.1] OS: Linux(Fedora8)
 [3.2] コンパイラ名とバージョン:g++ 4.1.2
 [3.3] 言語:C++
[4] 期限: 2008年12月19日13:00まで
[5] その他の制限: プレーンCのポインタと構造体、C++のクラスの概念と簡単な設計方法まで

class Weight{};
class Unit{};
・・・
class Layer{
 int num; // 層数を格納
 Unit unit[]; //各ユニットのクラス
};

class NeuralNet{
 int NumLayer;  //層数を格納
 int NumUnit[]; //各層のユニット数を格納
 double XXX;      //各種係数等
 ・・・
public:
 Layer layer[]; // 各層のクラス(配列数は層数が格納)
};

構造体を使ったものはできているのですが、
・全ての層でユニット数が同じになってしまっていて、リソースを考慮した設計にしたい。つまり、指定した層数と各層のユニット数を指定したい。
・構造体からクラスに置き換えた場合に、" Layer layer[]"と"Layer::num"をどうやって表現したらいいのかで躓いている。

※BPアルゴリズムは、配列ベースのプログラムで別に作っているので、問題ありません。
97デフォルトの名無しさん:2008/12/05(金) 17:18:45
>>14,>>17-18
本当に有難う御座いました。
大変助かりました。
98デフォルトの名無しさん:2008/12/05(金) 17:27:26
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・シーザー暗号を作成するプログラムを作る(復号)
・英小文字のみからなる暗号と鍵を入力するとシーザー暗号を元の単語に戻すプログラムを作成せよ

実行例
暗号を入力してください
app ↓
鍵となる整数を入力してください
1 ↓
単語は zoo です.

暗号を入力してください
mbizd ↓
鍵となる整数を入力してください
10 ↓
単語は crypt です.

[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年12月8日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
             逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
            配列の初期化、2次元配列、文字コード、文字データ(char型)
            getchar、putcharは習いました。
お願いします。
99デフォルトの名無しさん:2008/12/05(金) 17:31:58
100デフォルトの名無しさん:2008/12/05(金) 17:34:16
もはや荒氏だな
101デフォルトの名無しさん:2008/12/05(金) 17:51:13
>>99-100
荒らすつもりは全然無かったのですが、荒らしみたいな行為をしてしまいすいませんでした。
>>18なんですが、やっていただいたのは大変有難いのですが>>17のように出来るだけ簡略化してもらえないでしょうか?
102デフォルトの名無しさん:2008/12/05(金) 18:21:10
>>101
>>17では駄目なのか?
103デフォルトの名無しさん:2008/12/05(金) 18:24:00
>>101
>>17>>18を参考にして書き換えるぐらいはできないかな
104デフォルトの名無しさん:2008/12/05(金) 19:01:46
>>101
どう簡略化して欲しいのか具体的に書かないと分からない
単に短いコードを書きたいなら>>17でいいだろ
105デフォルトの名無しさん:2008/12/05(金) 19:51:31
すみません宜しくお願いします。
以下の条件を満たす対戦表をプログラムで作成したいのですが
アルゴリズムがまったく思いつきません。

条件:
4人麻雀です。
大会なので8卓あります。
参加者は32人で番号が振られています。(1番,2番,・・・)
参加者は8チームに分けられています。(たとえば1番,2番,3番,4番で1チーム)
同じチームの人とは同卓してはいけません。
一度同卓した人と再度同卓してもいけません。
この条件で5回戦行います。

このような条件なのですが上手いやり方どなたかご存知ないでしょうか?涙
10635 ◆z66TI33ApM :2008/12/05(金) 19:58:33
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
θ''=-(g/l)sinθ、θ'(0)=0、θ(0)=Θ
の厳密な数値解を初期振れ角Θを起動時に指定して、
アニメーション表示させるプログラムを作成してください。
gnuplotにパイプ接続してグラフィックを実現する方法を用いてください。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2008年12月11日まで]
[5] その他の制限:以前にここで答えを教えてもらったのですが、ダメだしを貰い
問題文に最後の一文を追加されました。そのときの回答はこちらです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8209.txt
尚、そのときのトリップは忘れてしまったので適当につけています

おねがいします
107デフォルトの名無しさん:2008/12/05(金) 20:44:09
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8221.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)C言語
[4] 期限:2008年12月08日10:00まで
108デフォルトの名無しさん:2008/12/05(金) 21:27:12
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8222.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)C言語
[4] 期限:2008年12月09日まで
よろしくお願い致します。
109デフォルトの名無しさん:2008/12/05(金) 21:52:29
11です。前のスレで問題を解いていただいたのですが、forとwhileを使って解かないといけない課題
なのです。解いていただいた方は本当にありがとうございました。
forとwhileを使ってどなたか解いていただけないでしょうか?
110デフォルトの名無しさん:2008/12/05(金) 22:16:44
>>102
>>17は駄目ですね。
>>17は暗号化のプログラムで私がやってもらいたいプログラムは>>98に書いたように複号のプログラムなんです。

>>103
残念ながらちょっと分からないです。
お願い出来ませんか?

>>104
>>17のプログラムの書き方の複号版のプログラムをやってもらいたいんです。
111デフォルトの名無しさん:2008/12/05(金) 22:33:00
復号化と暗号化なんて逆の計算するだけじゃん
112デフォルトの名無しさん:2008/12/05(金) 22:42:56
>>106
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#define sticklen 0.8
#define PI 3.1416
double x,y;double theta,vtheta,atheta;const double t = 0.2;
void init(void)
{ printf("初期振れ角:");
scanf("%lf",&theta);
vtheta = 0.0;
atheta = -(9.8/sticklen)*sin(PI*theta/180.0);
x = sticklen*sin(PI*theta/180.0);
y = -sticklen*cos(PI*theta/180.0);}
void update(void){
vtheta += atheta*t;
theta += vtheta*t;
atheta = -(9.8/sticklen)*sin(PI*theta/180.0);
x = sticklen*sin(PI*theta/180.0);
y = -sticklen*cos(PI*theta/180.0);}
int main()
{ FILE * fpw; int i;
fpw = popen("gnuplot -persist","w"); init();
fputs("set size square\n", fpw);
fputs("set xrange [-5:5]\n", fpw);
fputs("set yrange [-5:5]\n", fpw);
fprintf(fpw, "set parametric\n");
for (i = 0; i < 200; ++i) {
fprintf(fpw, "plot [0:2*pi] cos(t) / 4.0 + %f , sin(t) / 4.0 + %f\n", x, y);
fprintf(fpw, "pause %f\n", t); update(); }
return 0;}
popenでいいらしいので作った、でもパイプ接続ってわざわざ言われてたならこれじゃまただめだし食らうんだろうなw
113109:2008/12/05(金) 22:43:48
>>109
   *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
114デフォルトの名無しさん:2008/12/05(金) 22:53:16
>>110
お願い出来ません
115デフォルトの名無しさん:2008/12/05(金) 22:54:14
>>110

単語を入力してください → 暗号を入力してください
暗号は → 平文は
str[i] - 'a' + key → str[i] - 'a' - key
116デフォルトの名無しさん:2008/12/05(金) 22:56:59
>>110
key=26-(key%26);
117デフォルトの名無しさん:2008/12/05(金) 23:12:57
>>108
で、そもそもはどういう問題だったの?
118おねがいしますw:2008/12/05(金) 23:14:23
[1] 授業単元:アルゴリズムデータ構造U
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8224.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8223.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:Cpad Borland C++ Compiler バージョン2.31
 [3.3] 言語: C言語
[4] 期限:2008年12月08日まで


119108:2008/12/05(金) 23:18:23
>>117
そもそもは時刻tにおける万有引力の法則に従っての惑星の位置を求める問題です
120デフォルトの名無しさん:2008/12/05(金) 23:26:06
>>119
ttp://www-solid.eps.s.u-tokyo.ac.jp/~ataru/edu/ensyu080609.pdf

ここらへん?

それにしても酷過ぎて追うのやめちまったよ……

k2=h*f1(t+h/2.0,x+k1/2.0,vx+l1/2.0,vy+l1/2.0,y+k1/2.0);

なんでlを2回使ってるの?

double f1(double t,double x,double y,double vx,double vy){return(vx);}

なんで(t,x,y,vx,vy)の順番に並んでいないの?

double g1(double t,double x,double y,double vx,double vy){return(-x/(r*r*r));}

rはいつ決まるの?pow( (x*x+y*y), 1.5 ) じゃないのかなー。
121108:2008/12/05(金) 23:33:48
>>120
lを2回使ってるのは自分でもよく分かりません。すいません。
順番に並んでないのは特に理由はないです。見にくくてすいません。
やっぱ自分が良く理解してないのが出来ない理由かもしれませんね。
122デフォルトの名無しさん:2008/12/05(金) 23:36:23
あたりまえだw
123デフォルトの名無しさん:2008/12/05(金) 23:51:53
初めて質問します。回答お願いします
【質問テンプレ】
[1] プログラミング実習T:
[2]
次の模様を出力するプログラムを作りなさい
(d)
  *
 **
***

(e)
  *  
 *** 
*****

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] 不明
 [3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限
for if 辺りまでしか習っていません
今ネストとかいうのをやってるので多分それを使って解け、との事です。

初歩的な質問ですいません。
質問に至らぬ点があったらそちらの方もご指摘お願いします。
124デフォルトの名無しさん:2008/12/05(金) 23:53:25
125デフォルトの名無しさん:2008/12/05(金) 23:55:35
>>124
なんですか?
126デフォルトの名無しさん:2008/12/06(土) 00:00:35
>>123
#include <iostream>
int main()
{
int n;
std::cout << "整数";
std::cin >> n;
std::cout << "(d)" << std::endl;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n - i -1; ++j) {
std::cout << ' ';
}
for (int j = 0; j < i+1; ++j) {
std::cout << '*';
}
std::cout << std::endl;
}
std::cout << "(e)" << std::endl;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n - i -1; ++j) {
std::cout << ' ';
}
for (int j = 0; j < 2 * i + 1; ++j) {
std::cout << '*';
}
std::cout << std::endl;
}
return 0;
}
>>125
間違えました
127デフォルトの名無しさん:2008/12/06(土) 00:12:03
>>126
ありがとうございます。
でも全然知らない単語が多数…

前自力で出来た問題です。こんな感じでお願いします
#include<stdio.h>
int main(void)
{
  int m,n;
  for(m=0; m<=2; m++){
    printf("*");
    for(n=0; n<m; n++){
      printf("\n");}
  printf("\n");}
  return 0;
}
出力結果
*  
** 
***
128おねがいしますw:2008/12/06(土) 00:13:09
[1] 授業単元:アルゴリズムデータ構造U
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8225.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8226.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:Cpad Borland C++ Compiler バージョン2.31
 [3.3] 言語: C言語
[4] 期限:2008年12月08日まで

[5] >>118 の問題もお願いします 
129デフォルトの名無しさん:2008/12/06(土) 00:13:21
>>125
すいません、お手数ですが>>127みたいな感じでお願いします。
130デフォルトの名無しさん:2008/12/06(土) 00:13:45
>>127
ジョニーそれは>>123で「言語: C++」って書いてあるからなんだぜ
131デフォルトの名無しさん:2008/12/06(土) 00:14:21
>>129安価ミス
>>125×
>>126
132デフォルトの名無しさん:2008/12/06(土) 00:15:25
www
133デフォルトの名無しさん:2008/12/06(土) 00:16:08
      _/      ∠≠ニ二ニ≧=<´  ヘ.     ', ヘ\ヽ.      /
 _ -‐ ´/  ,   -‐´、_, '⌒`^  、 \::\ } l     ヽヘ ヽ}     /         _|_ \
   ̄ フ´,  /             丶\::V| |      Vl       ,'             |____
.  //./                   `Vヽl |      ヽ ' .     |         /|    ヽ
  / ,イ/                    Y/,       ヽ.\   |.   l       (_ノ  _ノ
  |/ /       |               ∨ヘ.      ト、 \_ |.   |
.  /     /  /  l:     /  l           ∨i    、   |  ̄   !  l       lヽ│/ /
  l│  /  イ  ,イ.    l  ト、ヽ     / | :l :|   |  l      |   ヽ_ノ   !ー┼‐ |‐┬
  | |   l_メ、」_,;./l     L  l V   ∧ /  :|/   ハ.  ト、   |          |./│ヽ l  |
  | ト.  |.____ ヽ    l´ヽ{ _⊥イ イ /   /    / l/⌒ヽ   .|  ー┼─ └── l  |
  | | ヽ | 、i┘::::i  \  | r┬┬‐┬ァ V  ,∧.   ,'  ´       |   ー┼−
  レ   ヽ!  ゝ- '   \l  i,.┘:::::iノ / ,/〉│ :| {         |    _⊥_     l   |
.      7/l/l/   、     `'ー‐ ' ∠≠r'ノ:jノ :| |         |   (__丿 ヽ    レ  |
     λ    `i`ァー-- 、  /l/l/l ∧‐'.:|:::|  ハ ',        |              l
      `、     レ'    ',     ,/| ::| :|:::| ./ ヽ_>      _|   __|_       _ノ
        ` = 、 '、    ノ  ,.イ∧'|:l.:/l:::|´            \    ._|
              `>-r  =ニi´、.,_`::: |:| { |:::l             |  .(_|
          _,.イ´ヽ.7   /  /:\;八:V:ノ                 |    ノ
       /7:::::!  ○O'´  /::::::::/ヽ.
       /  /:::::::レ'/ムヽ.  /::::::::/   ヽ.
134デフォルトの名無しさん:2008/12/06(土) 00:17:40
>>130
visual C++2005って書いてるので、C++と思っていたんですが。…ひょっとして違いますか?
135デフォルトの名無しさん:2008/12/06(土) 00:18:57
>>129
ヒント:
std::cout << ' '; → printf(" ");;
std::cout << '*'; → printf("*");;
std::cout << std::endl; → printf("\n");
136デフォルトの名無しさん:2008/12/06(土) 00:19:59
>>134
>>123 で [3.2] 不明 って書いてあるじゃねーか!!嘘つきめ
137デフォルトの名無しさん:2008/12/06(土) 00:22:06
>>136
すいません。不明というのは分からないという意味です。
コンパイラでググってきます
138デフォルトの名無しさん:2008/12/06(土) 00:24:13
>>134
おまいはその「プログラミング実習T」で、いったい何の言語について勉強してるんだ
ガイダンスとかなかったのか
139デフォルトの名無しさん:2008/12/06(土) 00:24:40
>>134
C++が使えるツールで、C言語オンリーの単元とかはよくある話。
140デフォルトの名無しさん:2008/12/06(土) 00:26:27
>>138
どうやら自分はC言語を習ってるみたいです。重ね重ねすいません。
14135 ◆z66TI33ApM :2008/12/06(土) 00:30:15
>>112
ありがとうございました。
142デフォルトの名無しさん:2008/12/06(土) 00:32:13
>>118
void display(void)
{
int i;
for (i = 0; i <= SP; ++i) printf("%d\n", Stack[i]);
}
143>>123 ◆TJ9qoWuqvA :2008/12/06(土) 00:33:56
酉忘れてた;
144おねがいしますw:2008/12/06(土) 00:44:53
>> 128の問題誰かおねがいしますw
145デフォルトの名無しさん:2008/12/06(土) 00:47:05
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8227.c
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:2008年12月08日18:00まで
  よろしくお願いします
146デフォルトの名無しさん:2008/12/06(土) 00:56:36
VS使っててもC言語学ばせたいなら拡張子は.cppじゃなくて.cに強制させるべきだと思うんだ。
147デフォルトの名無しさん:2008/12/06(土) 00:56:55
>>145
if (sign == AlreadyExsist) {
result = OtherString; ← FloatingPoint を修正


if (!((c >= '0') && (c <= '9'))) ← 等号付不等号に修正
148デフォルトの名無しさん:2008/12/06(土) 01:40:37
>>79
大変助かります。ありがとうございました><
149デフォルトの名無しさん:2008/12/06(土) 01:45:57
>>147
どうもありがとうございました
150120:2008/12/06(土) 06:01:06
>>108
起き抜けに作ってみた。とりあえずこれ参考にしてくれ。

#define P_X 0
#define P_Y 1
#define P_VX 2
#define P_VY 3
void calc(double kn[4],double p[4]){
double r = sqrt (p[P_X] * p[P_X] + p[P_Y] * p[P_Y] );
kn[P_X] = p[P_VX];
kn[P_Y] = p[P_VY];
kn[P_VX] = - p[P_X] / (r * r * r);
kn[P_VY] = - p[P_Y] / (r * r * r);
}
int main(int argc, char * argv[]){
double w[4],p[4],k1[4],k2[4],k3[4],k4[4];
int iter = 1000;
double T = 50;
double dt = T / iter;
int t,i; /* t 計算中の時刻 */
w[P_X] = 2.0; w[P_Y] = 0.0; w[P_VX] = 0.0; w[P_VY] = 0.5;
for( t = 0 ; t < iter ; t++){
for(i=0;i<4;i++){ p[i] = w[i] ; } calc(k1,p);
for(i=0;i<4;i++){ p[i] = w[i] + 0.5 * dt * k1[i]; } calc(k2,p);
for(i=0;i<4;i++){ p[i] = w[i] + 0.5 * dt * k2[i]; } calc(k3,p);
for(i=0;i<4;i++){ p[i] = w[i] + dt * k3[i]; } calc(k4,p);
for(i=0;i<4;i++){ w[i] = w[i] + dt * ( k1[i] + 2.0 * k2[i] + 2.0 * k3[i] + k4[i] ) / 6.0; }
}
printf("%f %f %f %f",w[0],w[1],w[2],w[3]);
return 0;
}
151おねがいしますw:2008/12/06(土) 11:12:11
>>118 の問題回答ありがとうございました。
152おねがいしますw:2008/12/06(土) 11:15:36
>>128 のも問題もお願いしますw
153デフォルトの名無しさん:2008/12/06(土) 11:31:41
>>152
なんでお前へらへらしてんの?
きもい
154デフォルトの名無しさん:2008/12/06(土) 11:41:42
>>153
なんでお前いらいらしてんの?
きんもぉ〜★
155デフォルトの名無しさん:2008/12/06(土) 11:55:23
>>153
まぁ、↓でも見て落ち着きなよ。和むぜ?
ttp://emaedanaoko.at.infoseek.co.jp/flash/peri.swf
156デフォルトの名無しさん:2008/12/06(土) 13:03:11
[1] 授業単元: プログラミングT
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8230.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] VS2005
 [3.3] 言語: Cのみ
[4] 期限: 2008年12月7日まで
[5] このような実行結果になるように求められていますhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8231.txt
   もっとも最近習ったもの(この宿題が出された時間に習ったもの)はwhile、do-whileです

よろしくお願いします
157デフォルトの名無しさん:2008/12/06(土) 13:13:45
>>156
#include <stdio.h>

int main()
{
int x, y, s;
while (1) {
fputs("1番目の整数= ", stdout);
scanf("%d", &x);
fputs("2番目の整数= ", stdout);
scanf("%d", &y);
printf("%d + %d = ", x, y);
scanf("%d", &s);
if (x + y == s) {
puts("正解です");
} else {
puts("不正解です");
}
fputs("さらに続けますか?(0:止める,1:続ける):", stdout);
scanf("%d", &s);
if (s == 0) break;
}
return 0;
}
158デフォルトの名無しさん:2008/12/06(土) 13:19:32
[1] 授業単元:Cプログラム
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8232.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語:C++
[4] 期限:2008/12/10まで
[5] その他の制限:できるだけ簡単に、とのことでした。配列、if文、for文のみで出来るでしょうか?

#include <stdio.h>

void main(){
int a[10];
int x,i,sum;
printf("データ数を入力");
scanf("%d",&x);
for(i=0; i<x; i++){
printf("a[%d] = ??? ",i);
scanf("%d",&a[i]);
}
for(i=0,sum=0; i<x; i++){
sum += a[i];
}
printf("合計= %d \n", sum);
}
序盤のここまではできたのですが、この後がわかりません。
それと、質問なのですがint a[10]として、データ数入力を10以上にするとエラーになるとおもいます。
その場合、入力できる最大の数を入れる場合どうすればいいのでしょうか?
それではよろしくお願いします。
159108:2008/12/06(土) 13:58:38
>>150
ありがとうございます。挑戦してみます!
160デフォルトの名無しさん:2008/12/06(土) 14:19:16
入力された30000以下の秒数を、「○○時間、○○分、○○秒」の形式で
出力するプログラムをつくりなさい。
161デフォルトの名無しさん:2008/12/06(土) 14:26:54
>>160
#include <iostream>
int main()
{
int c;
std::cin >> c;
std::cout << c / 3600 << "時間、"
<< c % 3600 / 60 << "分、"
<< c % 3600 % 60 << "秒" << std::endl;
return 0;
}
162デフォルトの名無しさん:2008/12/06(土) 14:55:06
[1]授業単元;C言語
[2]問題文
 0〜9の擬似乱数を発生させ、キーボードから入力した
任意の数字と一致したときに両者をディスプレイに
表示させ終了するプログラムを作りなさい。
乱数とキーボードとあったときだけ表示する。
だめだったら繰り返す。
ただし、宣言文に
#include<stdlib.h>
#include<time.h>
を、またmain関数内に
srand(unsigned) time(NULL);
を宣言して
rand()
用いる


[3]
 [3.1]OS:XP
[3.2]コンパイラとパーテンション:vc6.0
[4]期限:2008/12/10
お願いします
163デフォルトの名無しさん:2008/12/06(土) 15:00:34
>>162
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int x;
int s = 0 + (int)(rand() * (9 - 0 + 1.0) / (1.0 + RAND_MAX));
srand((unsigned int)time(NULL));
while (1) {
scanf("%d", &x);
if (x == s) break;
}
printf("%d %d\n", x, s);
return 0;
}
164デフォルトの名無しさん:2008/12/06(土) 15:08:48
>>163
出来てないみたい
のでもう一度お願いします
165デフォルトの名無しさん:2008/12/06(土) 15:15:54
>>163
rand()/(RAND_MAX+1.0) では?その値に、範囲の最大から最小を引いた差を
掛けてやれば良い。
166デフォルトの名無しさん:2008/12/06(土) 15:20:01
>>165
(int)(rand() * 9 / (1.0 + RAND_MAX));
にしろと?
おまえ馬鹿?
167デフォルトの名無しさん:2008/12/06(土) 15:22:30
>>164
どのあたりをみてできてないと思ったか感想をお願いします
168デフォルトの名無しさん:2008/12/06(土) 15:26:47
数字入力→乱数でる→一致しなかったらやり直し
となるはずですが
何もでてないです
169デフォルトの名無しさん:2008/12/06(土) 15:27:27
>>166
> おまえ馬鹿?
随分だな。しかもそんなこと言ってないし。基地外低脳バカは黙ってろよ、クズが
最近書き込まれている、口の悪いバカはお前だろ?死ねよアホ
170アホの書いた稚拙なコード:2008/12/06(土) 15:28:54

163 名前:デフォルトの名無しさん 投稿日:2008/12/06(土) 15:00:34
>>162
int s = 0 + (int)(rand() * (9 - 0 + 1.0) / (1.0 + RAND_MAX));

その後の低脳基地外のアホ丸出しな口答え

166 名前:デフォルトの名無しさん 投稿日:2008/12/06(土) 15:20:01
>>165
(int)(rand() * 9 / (1.0 + RAND_MAX));
にしろと?
おまえ馬鹿?
171デフォルトの名無しさん:2008/12/06(土) 15:30:02
コピペ君って馬鹿だな、まで読んだ。
172デフォルトの名無しさん:2008/12/06(土) 15:31:19
int s = 0 + (int)(rand() * (9 - 0 + 1.0) / (1.0 + RAND_MAX));
↑アホ丸出しだ、こいつwwwwwww
>>166
>>165が理解出来ない?日本語も、物事も的確に理解できな奴って、
自分の無能さ、理解力の無さを、他人のせいにするから面倒だよな。
無能な癖して、思う通りに物事が進まないと、キレたりグズったりする
精神レベルの低い大人になりきれないお子ちゃま。
173デフォルトの名無しさん:2008/12/06(土) 15:31:35
>>168
一致したとき表示としか書いてなかったからそのようになってます
一致したときに両方表示して終了します

改造が必要であれば具体的に、言ってみてください
174デフォルトの名無しさん:2008/12/06(土) 15:32:45
srand((unsigned int)time(NULL));
int s = rand()%10;
175デフォルトの名無しさん:2008/12/06(土) 15:34:36
>>174
は?それもいまいちだろ?
176デフォルトの名無しさん:2008/12/06(土) 15:48:58
 別に乱数についてやってもいいが、スレッド違いだから止めておけ。
小手先技使っていい気になっている奴が消えることを祈る。
疑似乱数2
http://pc11.2ch.net/test/read.cgi/tech/1192628099/
177デフォルトの名無しさん:2008/12/06(土) 15:53:38
>>163 >>163 >>163 >>163 >>163 >>163 >>163 >>163 >>163 
int s = 0 + (int)(rand() * (9 - 0 + 1.0) / (1.0 + RAND_MAX));

>>166 >>166 >>166 >>166 >>166 >>166 >>166 >>166 >>166 
(int)(rand() * 9 / (1.0 + RAND_MAX));

何   こ   れ   、   ア   ホ   で   す   か   ?
人の話をまともに聞かない、自分勝手を押し通す、指摘されれば
した人間を罵倒するなり、威圧するなりして押さえ込んで、自分を正当化してきたせいで
社会から孤立しましたか?
日本語が通じない人って、厄介ですね。己の未熟さを知れ、青二才めが。
178デフォルトの名無しさん:2008/12/06(土) 15:55:19
>>175
お  前  が  言  う  な  w
お前のは、いまいちどころじゃないがw
int s = 0 + (int)(rand() * (9 - 0 + 1.0) / (1.0 + RAND_MAX));
(int)(rand() * 9 / (1.0 + RAND_MAX));
179suzuki:2008/12/06(土) 16:03:58
日本大学理工学部電気工学科の生徒の皆さん。
このスレの回答の丸写しが発覚した場合、それを減点対象にします。
自分の力で問題を解くようにしてください。
180デフォルトの名無しさん:2008/12/06(土) 16:06:34
rand()が返す値に範囲の最大と最小の差を掛けてるのか。今回は影響しないが、
範囲によっては不適切だな。完全に駄目とは言わないが、RAND_MAXを使用して
0〜1未満の範囲の値を出してからの方が無難。そこに差を掛けて、最小を加えると。
人それぞれだが、汎用性を考慮するなら、もう一歩、前進したいところだ。
181デフォルトの名無しさん:2008/12/06(土) 16:36:26
>>179
死ね
182デフォルトの名無しさん:2008/12/06(土) 16:48:58
>>180
いい方法ってどんなのがあるんですか?
教えてください
ちなみに私は>>163 >>166ではありません
183デフォルトの名無しさん:2008/12/06(土) 17:26:42
[1] 授業単元:プログラミング 基礎
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8233.c
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:2008年12月08日18:00まで
  よろしくお願いいたします
184デフォルトの名無しさん:2008/12/06(土) 17:54:31
[1] 授業単元:C
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8234.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[5] その他の制限
 [5.1]for文の二重ループを使う

どなたかよろしくお願いします
185デフォルトの名無しさん:2008/12/06(土) 18:23:43
下の二つは乱数の偏りはどちらも同じ
ただ偏り方がディザリングされているかどうかが違うだけ
rand()%10
(double)rand()/(RAND_MAX+1)*10
186デフォルトの名無しさん:2008/12/06(土) 18:30:22
リスト構造を使ってアドレス帳を作るにはどうすればいいですか??
187デフォルトの名無しさん:2008/12/06(土) 18:32:23
[1]授業単元:C(C++?)
[2]問題文:「AT-GPIB/TNT」GPIBと計測器を使い、発振器の波形を取り込みデータを保存する。
[3]環境:コンパイラBorlandC
[4]制限:GPIBの関数を使う。以下はその一例
ibsic():指定したGPIBボードの初期設定、
ibdev():指定デバイスの設定
ibfind():指定したアドレスのデバイスを検出
ibclr():指定したアドレスのデバイスの初期設定
ibwrt():指定したアドレスのデバイスへ送信
ibrd():指定したアドレスのデバイスから受信:
ibonl():装置のクローズ

単位落としそう。
できるなら、説明文付け加えてください。
面倒だったら説明文は省いてもいいです
よろしくお願いします;;;
188デフォルトの名無しさん:2008/12/06(土) 18:33:27
>>185
偏りは同じじゃないよ。下1桁が同じものが連続して出る確率の方が、
RAND_MAX以下の値の中から1つ選ぶのとでは、違いすぎる。
ただ、それでもrand()に依存するため、所詮は擬似だけど。
189デフォルトの名無しさん:2008/12/06(土) 18:39:07
ちなみに、自分の環境では、RAND_MAXは2^16-1の65535。それ以下の範囲から
1つ選んだのと、例えば出た順番が 15 10005 20005 と出た場合、
rand()%10はどれも5だが、もう一方のは、値が小さい程0に近く、大きいほど10に近くなる。
190デフォルトの名無しさん:2008/12/06(土) 18:50:35
>>189
馬鹿を晒すなw
191デフォルトの名無しさん:2008/12/06(土) 19:05:48
>>190
馬鹿はおまえだろ
192デフォルトの名無しさん:2008/12/06(土) 19:06:22
rand()が返す値は、srandのSEEDによって違うが、下1桁が同じものが出る
偏りは起こりうる。なんなら、適当にSEEDを与えて、2つの式によって得られる値に
偏りがあるか、統計をとってみては?
193デフォルトの名無しさん:2008/12/06(土) 19:08:16
>>157
ありがとう!
194おねがいしますw:2008/12/06(土) 19:08:51
>>128
お願いします
195デフォルトの名無しさん:2008/12/06(土) 19:10:17
rand() が一様乱数で RAND_MAX が 7 であるとき

r=rand() r%6 r/(RAND_MAX+1)*6
0 0 0
1 1 0
2 2 1
3 3 2
4 4 3
5 5 3
6 0 4
7 1 5

r%6 の場合には 0 と 1 が他に比べて 2倍
r/(RAND_MAX+1)*6 の場合には 0 と 3 が他に比べて 2倍
の確率で出現する

偏り方が同じっていう表現をどうとるかによるな
196デフォルトの名無しさん:2008/12/06(土) 19:14:44
スレ違い
197デフォルトの名無しさん:2008/12/06(土) 20:24:21
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8235.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
 [4] 期限:2008年12月08日まで
  よろしくお願いします
198デフォルトの名無しさん:2008/12/06(土) 21:54:46
>>128
これ、たたき台のプログラム、display() の部分作れって言ってるけど、他の部分もおかしいよ

どうすればいい?
199デフォルトの名無しさん:2008/12/06(土) 22:00:41
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
3行3列の行列をガウスの消去法をつかって単位行列にするプログラムを作る。

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年12月9日
[5] その他の制限:最近ポインタを習い、そのときの課題です。
よろしくおねがいします。
200「 ◆xstMZhzLPE :2008/12/06(土) 22:02:44
[1] 授業単元:プログラミング
[2] 問題文

以下の機能を実現するプログラムを作れ:
􀀄 元本と利率を入力できる。ただし、単利と複利そ
れぞれに別の利率を設定することもできる。
􀀄 最初に以下の処理のどちらかをユーザが選んで
実行できる(プログラムとしては1つのもので全
部の機能を提供すること)
􀀉 入力した年数が経過したら、単利・複利それぞれいく
らになるかを表示する。
􀀉 複利の方が(利率が低い場合でも)何年後に単利を追
い越すかを表示する。

forとwhileを使ってください





[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio2003
 [3.3] 言語: C++
 [4] 期限:2008年12月11日まで
  どうかよろしくお願いします
201デフォルトの名無しさん:2008/12/06(土) 22:07:05
>>195
randが一様乱数という仮定が大抵の環境で成り立たないというのが現実。
線形合同法が悪すぎる。
202デフォルトの名無しさん:2008/12/06(土) 22:11:37
203デフォルトの名無しさん:2008/12/06(土) 22:15:24
[1]授業単元:画像処理
[2]問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8236.zip
[3]環境
 [3.1]OS:WindowsXP
 [3.2]コンパイラ環境:bcc(Borland C++)
 [3.3]言語:C

[4]期限:2008年12月8日
[5]その他の制限:特にないが、URLのzipファイル内にある雛形のプログラム
を用いて作成すること。

自分の思うように動作せず困っているので、どうか宜しくお願い致します。
204デフォルトの名無しさん:2008/12/06(土) 22:21:22
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク): リスト構造によるアドレス帳の作成
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: Visual Studio
 [3.3] 言語: (C言語)
[4] 期限: ([2008年12月7日20:00まで])

よろしくお願いします。
205デフォルトの名無しさん:2008/12/06(土) 22:23:53
>>200
926 デフォルトの名無しさん[sage] 2008/12/03(水) 01:50:21
#include <math.h>
#include <iostream>
class cash {
protected:
double ga; double yen; double ri;
public:
cash(double ganpon, double riritsu) : ga(ganpon), yen(ganpon),ri(riritsu) { }
virtual void addYear() = 0; void show() { std::cout << floor(yen);}
bool operator<=(const cash& op) { return yen <= op.yen ? true : false;}
};
class hukuri : public cash {
public:
void addYear() { yen *= 1.0 + ri;} hukuri(double ganpon, double riritsu) : cash(ganpon, riritsu){ }};
class tanri : public cash {
public:
void addYear() { yen += ga * ri;} tanri(double ganpon, double riritsu) : cash(ganpon, riritsu){ }};
int main()
{ double gan, rit, rih; int y, ay = 0;
std::cout << "元本: " << std::endl; std::cin >> gan;
std::cout << "単利の利率: " << std::endl; std::cin >> rit; tanri t(gan, rit);
std::cout << "複利の利率: " << std::endl; std::cin >> rih; hukuri h(gan, rih);
std::cout << "年数: " << std::endl; std::cin >> y;
for (int i = 0; i < y; ++i) { h.addYear(); t.addYear();
if (t <= h && ay == 0) ay = i + 1; }
std::cout << "単利"; t.show(); std::cout << "円" << std::endl;
std::cout << "複利"; h.show(); std::cout << "円" << std::endl;
if (rit > rih) std::cout << "追い付くのは" << ay << "年" << std::endl;
return 0;}
前スレにあった気がしたので持ってきた
206 ◆ncE6YQxqag :2008/12/06(土) 22:26:05
[1]授業単元: 応用C言語
[2]問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8238.c
[3]環境
 [3.1]OS:WindowsXP
 [3.2]コンパイラ環境:cygwin
 [3.3]言語:C

[4]期限:2008年12月8日
[5]その他の制限:
制限等は特にございません。
宜しくお願い致します。
207デフォルトの名無しさん:2008/12/06(土) 22:41:20
>>204
#include <stdio.h>
typedef struct ad_list AdList;
struct ad_list{
AdList * next;
char name[1000];
char address[1000];
};
void printlst(const AdList * o)
{
if (o == NULL) return;
for (; o; o = o->next) {
printf("%s, %s\n", o->name, o->address);
}
}
int main()
{
AdList lst = {NULL, "A", "1-1"};
AdList b = {NULL, "B", "1-2"};
AdList c = {NULL, "C", "1-3"};
lst.next = &b;
b.next = &c;
c.next = NULL;
printlst(&lst);
return 0;
}
208デフォルトの名無しさん:2008/12/06(土) 22:49:21
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  データベースのソート機能プログラムを作成しなさい。
  〇山梨県の市のデータ(名前・人口)を各項目で昇順又は降順にソートできるようにする。
  〇最初に「どのフィールドでソートにしますか?」とたずねる文を表示し、入力されたら、
   「降順(大きい順)昇順(小さい順)かを決めてください」とたずねる文を表示する。
   入力されたらソートを実行する。(当然フィールドでソートが行われていなければならない)
  〇市の名前はポインタ配列で宣言する。
  〇ソートにはバブルソートを使うこととし、人口(数値)の入れ替えにはswap関数を
   使うこととする。(市名(ポインタ配列)の入れ替えは外部関数でなくてもよい)
  〇文字列にの比較には標準のstrcmp関数を使ってよい。(昇順はA→Z、降順Z→A)
   名前  人口
・koufu 199,445  ・kai 74,036 ・nirasaki 33,792   ・hokuto 47,662
・minami-alps 72,129  ・chuo 31,778 ・fuefuki 71,290   ・yamanashi 38,337
・koushu 35,233 ・otsuki 30,152  ・tsuru 34,416  ・fujiyoshida 52,102
・uenohara 28,400
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:bcc?
 [3.3] 言語: C言語
[4] 期限:今週中ぐらい
[5] その他の制限: 繰り返し文、条件判断文、関数、ポインタ配列勉強しました。
  初心者なので、初心者にも分かるようなプログラムをお願いします。

209デフォルトの名無しさん:2008/12/06(土) 22:55:29
[1] 授業単元:プログラミング
[2] 問題文
次のように1行に日付とその日の最低気温、最高気温が記録されたファイル(ファイル名:temp.dat)
があるとする。

1 10.0 30.0
2 12.1 28.8
3 11.3 25.2
4 10.5 27.4
5 13.1 28.0
6 9.8 24.2
7 11.9 30.4

このファイルを読み込んでファイルの中での最高気温がもっとも高い日の日付と最高気温、
同様に最も低い最低気温とその日付を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2008年12月8日
[5] その他の制限: 上記のファイルが存在する設定で行うためプログラムさえ作成されていればよい。
210デフォルトの名無しさん:2008/12/06(土) 23:01:13
>>206
アドレスで返せってあるんだけど
1.mallocして確保して返す.
2.関数がstaticな構造体を持つ
3.第一引数を破壊してそれを返す
どれがいい?
211 ◆ncE6YQxqag :2008/12/06(土) 23:19:01
>>210さん

2番でお願いします。
212デフォルトの名無しさん:2008/12/06(土) 23:38:47
>>69ですが、できる方いらっしゃいますか・・・?
213デフォルトの名無しさん:2008/12/06(土) 23:43:42
>>211
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8240.c
>>210
でいうところの1.となっております。
動いて数値が出るのは確認しましたが、検算はしてません
214デフォルトの名無しさん:2008/12/06(土) 23:52:59
215デフォルトの名無しさん:2008/12/06(土) 23:57:15
>>212
できるだろうけど、プログラムがでかくなるので作るのが面倒
216「 ◆xstMZhzLPE :2008/12/07(日) 00:01:04
>205

whileのループを用いていただきたいんです。授業でもこちらのスレほどレベルが高くなので
わかりやすくしていただけたら嬉しいです。

やっていただいた方には感謝の気持ちと申し訳ない気持ちで一杯です・・・。
217デフォルトの名無しさん:2008/12/07(日) 00:22:29
>>215
そうですか・・・ですが、どなたかお願いします・・・!
218デフォルトの名無しさん:2008/12/07(日) 00:37:20
>>217
     _ 、      へ 、
   .〃´ \ 、  〃   il
   .li    ヽV/-‐--|| 、
   .!|  ,. '  `.´   !l   ` 、
   |.| ' , ' ,       ||  、` 、 \
  ./!|/ ./ / i ヽ|!\ \ \ ヽ
 /./ / / ./ .l. {  { ヽ }ヽヽ\ \ ヽ ヽ
 ! i .i | { .|、-ヽ ヽ―ト}、\ヽ. }_ | l
 lハ | | l'´.l _Lヽ!\ヽ,,⊥._ヽ} }/77| |
 ! !l. ! lヽイfハ    ` |.f;;cl” |/〃 ! | |
   `ヽlヽ ゝ. !tj|    !.t''ノ .ノイ} .|. | !   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ヽ! !  ̄ `_    ̄` ノン | l |i. | < 2つほど制限ついてもいいなら書くよ
          |丶、     ,.イ´ .l | l ||. !   \___________
        ヽ| |. ー__' ´-‐'i  | | l l.l |l
         ヽN/´ _ /`ヽ、|. l. /レ !
        /| ` ̄ /     \レ’
       ,<ヽ l  ,. '        ヽ
      /  ヽヽl /  _ -‐_ニニ二、ヽ
     ./      レ ‐´ ´        .V}

  関数のプロトタイプに書かれているインターフェースを利用しない
  動作説明とアルゴリズムの説明はコメントレベルでしか書かない
219デフォルトの名無しさん:2008/12/07(日) 00:39:02
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): A社のトイレットペーパーは半径12mmの芯に巻かれ、
トイレットペーパーの最も外側の半径が53mmである。トイレットペーパーの紙厚が0.1mmのときに、
このトイレットペーパーの長さはおおよそ何mであるかを求めるプログラムを書け。
ただし、長さはm単位で小数第2位まで表示するものとする。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: VisualStudio2005
 [3.3] 言語: C++
[4] 期限:2008年12月17日まで
[5] その他の制限: 特になし
220デフォルトの名無しさん:2008/12/07(日) 00:53:04
断面積S[mm^2]、厚さd[mm]として、長さL=S/d[mm]

プログラミングの課題としては、"同心円の円周の和"を期待しているのかも
221デフォルトの名無しさん:2008/12/07(日) 00:54:25
>>219
#include <iostream>

const double PI = 3.14;

class Role {
double core_r; // 芯の太さ
double r; // 現在の半径
double len; // 現在の紙の長さ
double paper; // 紙の厚さ
public:
Role(double c, double p) : core_r(c), r(c), len(0.0), paper(p) { }
void rolingOne() { // 一巻する
len += 2 * PI * r;
r += paper;
};
double getSize() { return r; }
double getLength() { return len; }
};

int main()
{
const double core_r = 12.0;
const double role_r = 53.0;
const double paper_d = 0.1;
Role ro(core_r, paper_d);

for (; ro.getSize() < role_r; ro.rolingOne());
std::cout << ro.getLength() / 1000.0 << "m" << std::endl;
return 0;
}
222デフォルトの名無しさん:2008/12/07(日) 01:14:31
>>184
#include <stdio.h>

int EnNoNaka(double x, double y) { return (x * x + y * y <= 1)? 1: 0; }
int main(void)
{
int n;
double x, y, d;
int count = 0;

printf("input n >> "); scanf("%d", &n);

d = 1.0 / (double)n;
for (x = -1; x < 1; x += d) {
for (y = -1; y < 1; y += d) {
if (EnNoNaka(x, y) && EnNoNaka(x + d, y + d)) count++;
}
}

printf("Answer = %lf\n", count * d * d);
return 0;
}
223デフォルトの名無しさん:2008/12/07(日) 01:36:16
[1] 授業単元:TurboDebuggerの使用
[2]問題文(含コード&リンク):本に「TurboDebuggerというデバッガを無料で配布しています(本書付属
CD-ROMに収録)。インストール後にパスを設定すると(p.23参照)、BCCDeveloperの<デバッグ>ボタンを
クリックして起動できます。」とあるがパスの設定とはどうするのでしょうか。
TurboDebuggerの環境設定でコンパイラとデバッガの場所は指定済みです。
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: Borland C++
 [3.3] 言語: C
[4] 期限:2008年12月12日まで
[5] その他の制限: 特になし
224デフォルトの名無しさん:2008/12/07(日) 01:37:26
>>223
ちょっと笑ったww
マルチなのか騙りなのか・・・・・
どっちにしろスレ違い
225デフォルトの名無しさん:2008/12/07(日) 01:45:08
すみません223の質問の訂正です。問題文の「TurboDebuggerの環境設定」
を「BCCDeveloperの環境設定」に訂正します。
[1] 授業単元:TurboDebuggerの使用
[2]問題文(含コード&リンク):本に「TurboDebuggerというデバッガを無料で配布しています(本書付属
CD-ROMに収録)。インストール後にパスを設定すると(p.23参照)、BCCDeveloperの<デバッグ>ボタンを
クリックして起動できます。」とあるがパスの設定とはどうするのでしょうか。
BCCDeveloperの環境設定でコンパイラとデバッガの場所は指定済みです。
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン: Borland C++
 [3.3] 言語: C
[4] 期限:2008年12月12日まで
[5] その他の制限: 特になし
226デフォルトの名無しさん:2008/12/07(日) 01:47:57
すみません223=225ですが
スレ違いなら、どこのスレがいいでしょうか。
227デフォルトの名無しさん:2008/12/07(日) 01:48:59
Windowsの環境変数PATHにデバッガとコンパイラのパスを通してみて

これが宿題だったら笑う
228デフォルトの名無しさん:2008/12/07(日) 01:57:18
>>218さん

ぜひお願いします!
229デフォルトの名無しさん:2008/12/07(日) 02:12:48
>>221さん
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e) {
ここに入れたいのですが
}
そのままいれても大丈夫ですか?
制限なしと書いたのにすみません。
230デフォルトの名無しさん:2008/12/07(日) 02:42:23
どう見てもC/C++ではないんだが…

個人的には数学的に解いて、教官を困らせてやるのがお勧め

double r1 = 12.0;
double r2 = 53.0;
double d = 0.1;
double l = Math::PI * (r2 * r2 - r1 * r1) / d;
231デフォルトの名無しさん:2008/12/07(日) 02:45:16
>>229
C++/CLIは全くわからないんだが、
そのままつっこむってどのくらいそのままなのかによるよ
そのまま丸ごとコピペしたらおそらく動かない

クラスと関数を置く位置ちゃんとしてたら動くだろきっと

232デフォルトの名無しさん:2008/12/07(日) 02:48:39
[1] 授業単元:プログラミング 基礎
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8245.txt
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:2008年12月08日18:00まで
  よろしくお願いいたします
233デフォルトの名無しさん:2008/12/07(日) 02:53:41
>>69
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8244.zip
動作とアルゴリズムは、読めばわかるので説明付けなかった。
ただ、僕の作った汎用リストのテストケースとして使わせてもらったので、アップしただけです。
まぁ、Cygwinとかなっているので、makeをソースから入れてmakeすればいいよ。

僕は、>>218さんではないので、>>218さんのソースを待ってあげてください。
234デフォルトの名無しさん:2008/12/07(日) 02:57:56
>>232
int strToInt(char string[])
{
int index = 0;
int result = 0;
int sign = 0;
char c;

// check first char
c = string[index];
sign = 1;
if((c == '+') || (c == '-'))
{
index++;
if(c == '-')
{
sign = -1;
}
}
while(c = string[index++])
{
result *= 10;
result += c - '0';
}
result *= sign;
return result;
}

なるたけ原形を維持しといた、スペース等は考慮しないっぽいと判断したので、変な文字列は変な変換結果を返す
235デフォルトの名無しさん:2008/12/07(日) 03:02:15
>>230さん
追記です。
ツールボックスの機能を使って作ってるんですが
ボタン1個とラベル1個を使ってボタンを押したら長さは○mです。
と表示したいです。
結果は83.59mになるみたいです。
236デフォルトの名無しさん:2008/12/07(日) 07:13:12
「WOLF RPGエディター」とは? 
・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
 不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
 その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
 慣れた人やRPGツクールでは物足りないけどプログラミングはちょっという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
 また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備してるよ!
・要望、バグ報告などなど書き込みお願いします。
・それとマップやキャラなどのドット素材もじゃんじゃん募集中ですので
 一度サイトにお越しくださいませ。

2ちゃん本スレ
http://pc11.2ch.net/test/read.cgi/gamedev/1226294070/l100
237デフォルトの名無しさん:2008/12/07(日) 08:30:15
>>235
コラー!!
238デフォルトの名無しさん:2008/12/07(日) 09:50:43
>>221
なぁ〜〜にぃ〜〜!?やっちまったな!
239おねがいしますw:2008/12/07(日) 10:04:52
>>198の方
>>128の者です えっと、他は違う場合自分でやれると思うんで 
演習のプログラムだけお願いします。 あと、教科書を手打ちしましたが
間違いがどこだか分かりません。 その辺の指摘もできたらお願いしますw
ほかの方も >>128 お願いしますw
240デフォルトの名無しさん:2008/12/07(日) 10:32:42
>>219 クソースいくでおじゃる。

#include <iostream>
using namespace std;
#define PI 3.14
int main() {
int i,pl=100,len,dmin=12000,dmax=53000; // mmを1000倍して割り出す
for(i=dmax; i>dmin; i-=pl) len += (2*i)*PI;
cout << len/1000/1000.0 << endl;
return 0;
}
241デフォルトの名無しさん:2008/12/07(日) 10:40:41
どなたか>>158お願いします。
242デフォルトの名無しさん:2008/12/07(日) 10:46:28
>>158
1)
#include <stdio.h>
void main(){
int a[256];
int x,i,sum;
printf("データ数を入力");
scanf("%d",&x);
for(i=0; i<x; i++){
printf("a[%d] = ??? ",i);
scanf("%d",&a[i]);
}
for(i=0,sum=0; i<x; i++) sum += a[i];
printf("%d個のデータの合計= %d\n", x, sum);
}
243デフォルトの名無しさん:2008/12/07(日) 10:47:44
2)
#include <stdio.h>
void main(){
int a[256];
int x,i,max;
printf("データ数を入力");
scanf("%d",&x);
for(i=0; i<x; i++){
printf("a[%d] = ??? ",i);
scanf("%d",&a[i]);
}
for(i=1,max=a[0]; i<x; i++){
if (max < a[i]) max = a[i];
}
printf("%d個のデータの最大値= %d\n", x, max);
}
244デフォルトの名無しさん:2008/12/07(日) 10:51:38
3)
#include <stdlib.h>
#include <stdio.h>
int compare(const void *a, const void *b)
{
return *(const int *)b - *(const int *)a;
}
int main(){
int a[256];
int x,i;
printf("データ数を入力");
scanf("%d",&x);
for(i=0; i<x; i++){
printf("a[%d] = ??? ",i);
scanf("%d",&a[i]);
}
printf("%d個の元データ: ");
for(i=0; i<x; i++) printf(" %d", a[i]);
printf("\n");
qsort(a, x, sizeof(int), compare);
printf("%d個のデータを大きい順に並べ替えたもの:\n", x);
for(i=0; i<x; i++) printf(" %d", a[i]);
return 0;
}
245デフォルトの名無しさん:2008/12/07(日) 10:53:11
>>222
本当にありがとうございます
246デフォルトの名無しさん:2008/12/07(日) 11:06:36
>>242-244
なんとお早い・・・。ありがとうございます。
すみませんが3を
int compare(const void *a, const void *b)
{
return *(const int *)b - *(const int *)a;
}
qsort

を使わずに作成できますでしょうか?

ヒントとして
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8246.txt
をもらったのですが・・・。
247デフォルトの名無しさん:2008/12/07(日) 11:23:33
>>246
#include <stdlib.h>
#include <stdio.h>
int main(){
int a[256];
int x,i,j,t;
printf("データ数を入力");
scanf("%d",&x);
for(i=0; i<x; i++){
printf("a[%d] = ??? ",i);
scanf("%d",&a[i]);
}
printf("%d個の元データ: ",x);
for(i=0; i<x; i++) printf(" %d", a[i]);
printf("\n");
for(i = 0; i < x; i++){
for(j = 0; j < x - 1; j++){
if (a[j] < a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
printf("%d個のデータを大きい順に並べ替えたもの:\n", x);
for(i=0; i<x; i++) printf(" %d", a[i]);
return 0;
}
248デフォルトの名無しさん:2008/12/07(日) 11:26:22
>>247
ありがとうございます!できました!
249デフォルトの名無しさん:2008/12/07(日) 11:32:25
学校の課題がわかりません。どなたか>>208をおねがいします。

期限は12月13日ぐらいまでです。
250デフォルトの名無しさん:2008/12/07(日) 11:56:36
>>208
市名(文字列)とintの構造体として定義できない縛りがアホっぽい
251デフォルトの名無しさん:2008/12/07(日) 12:01:58
>>208
#include <stdio.h>
#include <string.h>
char *namae[13] = {"koufu", "kai", "nirasaki", "hokuto", "minami-alps",
"chuo", "fuefuki", "yamanashi", "koushu", "otsuki", "tsuru",
"fujiyoshida", "uenohara"};
long jinko[13] = {199445, 74036, 33792, 47662, 72129, 31778, 71290,
38337, 35233, 30152, 34416, 52102, 28400};
void swap(long *a, long *b){
long n = *a; *a = *b; *b = n;
}
void sort1(int n){
int i, j; char *p;
for(i = 0; i < 13; i++){for(j = 13 - 1; j > i; j--){
if (n == 1){if (strcmp(namae[j - 1], namae[j]) < 0){
p = namae[j - 1]; namae[j - 1] = namae[j]; namae[j] = p;
swap(&jinko[j - 1], &jinko[j]);
}}else{
if (strcmp(namae[j - 1], namae[j]) > 0){
p = namae[j - 1]; namae[j - 1] = namae[j]; namae[j] = p;
swap(&jinko[j - 1], &jinko[j]);
}}}}}
void sort2(int n){
int i, j; char *p;
for(i = 0; i < 13; i++){
for(j = 13 - 1; j > i; j--){
if (n == 1){
if (jinko[j - 1] < jinko[j]){
p = namae[j - 1]; namae[j - 1] = namae[j]; namae[j] = p;
swap(&jinko[j - 1], &jinko[j]);
}}else{
252デフォルトの名無しさん:2008/12/07(日) 12:03:20
if (jinko[j - 1] > jinko[j]){
p = namae[j - 1]; namae[j - 1] = namae[j]; namae[j] = p;
swap(&jinko[j - 1], &jinko[j]);
}}}}}
int main(void){
int m, n, i;
printf("<メニュー> 1: 名前 2:人口\n");
printf("どのフィールドでソートにしますか? ");
scanf("%d", &m);
printf("<メニュー> 1: 降順(大きい順) 2:昇順(小さい順)\n");
printf("降順か昇順かを決めてください");
scanf("%d", &n);
switch(m){
case 1: sort1(n); break;
case 2: sort2(n); break;
}
for(i = 0; i < 13; i++)
printf("%15s: %10ld\n", namae[i], jinko[i]);
return 0;
}
253デフォルトの名無しさん:2008/12/07(日) 13:39:57
219のものです。
お答えしていただき感謝してます。
しかし、どうしても83.59mにならないorz
254デフォルトの名無しさん:2008/12/07(日) 13:49:02
[1] 授業単元:Linuxプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8248.zip
[3] 環境
 [3.1] OS:Linux Debian
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:2008年12月07日深夜
[5] 補足
以前、ソケット通信でお世話になった者です。
今更で申し訳ないのですが、一部要件を満たしていないところに気付いたので修正して頂けると助かります。
満たしていない内容とは、例文の「booot」が検索にマッチしないところです。(「receive」はマッチします。)
母音を正規表現'[aeiou]?'に取り替えると、「?」は「+」と違い直前の文字の「0回」以上の繰り返しなので、
「boot」が代替単語としてマッチするはずです。宜しくお願いします。
255デフォルトの名無しさん:2008/12/07(日) 14:03:48
>>240の len=0 を忘れてた orz
これで求めたら、83.80 m になったが。
256デフォルトの名無しさん:2008/12/07(日) 14:18:27
次のように2から100までの素数を全て表示するプログラムを作成せよ。
※素数判定関数を用いる

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
関数の説明もお願いします。

[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:bcc?
 [3.3] 言語: C言語
[4] 期限:明日まで
257デフォルトの名無しさん:2008/12/07(日) 14:20:24
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
対戦型のジャンケンゲームを様々な戦略で行え。たとえば、戦略としては次のようなものが考えられる。
戦略1=「グー」「チョキ」「パー」を繰り返す

戦略2=毎回ランダムに決定する
戦略3=1回目はランダムに出し、以降は負けるまで同じ手を繰り返す。負けたらランダム

戦略4=1回目はランダムに出し、以降は前回の相手の手を出す

[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:bcc?
 [3.3] 言語: C言語
[4] 期限:明日まで
258デフォルトの名無しさん:2008/12/07(日) 14:39:30
>>253
こうすると83.59...になるかな
ちなみに意味を考えて富豪的にやった。
π=3.14でやると届かない気がする

#include <iostream>
using namespace std;
#define MATH_PI 3.1415
// 単位は全てmm
double reeeeeel(double start, double end, double step)
{
double length = 0;
for (double radius=start; radius<end; radius+=step)
length += 2 * MATH_PI * radius;
return length;
}
int main()
{
cout << reeeeeel(12, 53, 0.1) / 1000 << "[m]" << endl;
return 0;
}
259デフォルトの名無しさん:2008/12/07(日) 14:44:52
>>256
#include <stdio.h>
int is_prime(int x) { // 素数なら1、そうでなければ0を返す
int i;
if(x%2) { // 奇数なら素数か判定
for(i=3; i*i<=x; i+=2) if(x%i==0) return 0;
}
else {
switch(x) {
case 2 : return 1; // 2は素数
default : return 0;
}
}
return 1;
}
int main(void) {
int i;
for(i=2; i<=100; i++) if(is_prime(i)) printf("%d ",i);
return 0;
}
260デフォルトの名無しさん:2008/12/07(日) 14:51:50
どなたか>>187をお願いします
261デフォルトの名無しさん:2008/12/07(日) 15:11:29
>>260
無茶だって、できる奴いるわけないwwwwwwwwwww
262デフォルトの名無しさん:2008/12/07(日) 15:27:04
やべぇ、なんか勘違いしてたか?0.1mmの厚さの物を巻いたら、
次の直径は0.2mm長くなるか。
263デフォルトの名無しさん:2008/12/07(日) 15:28:52
って、よく考えたら、半径を2倍しているから良いのか、すまそw
264230:2008/12/07(日) 15:34:25
>>253>>255>>258
当たり前だけど、近似の仕方や範囲の取り方で値は変わる
2πΣrで計算するとして、

1. 12.0-53.0 (step 0.1) => 83.92m
2. 12.0-52.9 (step 0.1) => 83.59m
3. 12.1-53.0 (step 0.1) => 83.85m
4. 12.05-52.95 (step 0.1) => 83.72m

因みに、>>230は数学的な解法で厳密解(26.65π)を直接求めている

(余談) おそらく、課題としてはforループ使わせたいんだろうが、
Σrって等差数列の和だからどっちにしろforループ要らないんだよな
265デフォルトの名無しさん:2008/12/07(日) 15:49:16
以下のソースの結果がどうなるか。小数点以下というのは、
ぶっちゃけ、正確ではなく曖昧な点が残る。
精度を高めたいなら、より正確な値を与えてやる必要がある。
あるいは、小数点以下何1千桁を求めるようなアルゴリズムのように
整数にして扱うとかね。

#include <stdio.h>

int main(void)
{
double i,sum;
for(i=0.0,sum=0.0; i<1.0; i+=0.1) sum+=i;
printf("%lf\n",sum);
for(i=0.0,sum=0.0; i<=1.0; i+=0.1) sum+=i;
printf("%lf\n",sum);
return 0;
}
266デフォルトの名無しさん:2008/12/07(日) 16:09:03
>>69
羽純が俺を待ってるから適当に済ませる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8249.txt
267デフォルトの名無しさん:2008/12/07(日) 16:09:34
もう分かったからそういうスレでやれ
268デフォルトの名無しさん:2008/12/07(日) 16:09:41
そういう話じゃないと思うんだが・・・・・・・・
269デフォルトの名無しさん:2008/12/07(日) 16:10:30
>>187
ハードの仕様書を一通り揃えるなら書かないでもない
テストはできないけど
270デフォルトの名無しさん:2008/12/07(日) 16:43:55
1] 授業単元:プログラミング c
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8250.txt
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:2008年12月08日18:00まで
  よろしくお願いいたします
271デフォルトの名無しさん:2008/12/07(日) 16:49:29
272デフォルトの名無しさん:2008/12/07(日) 16:56:34
>>270
strToFloatを次のようにするだけ。
float strToFloat(char string[])
{
return (float)atof(string);
}
273デフォルトの名無しさん:2008/12/07(日) 17:02:50
[1] 情報処理
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8252.txt
[3] 環境
 [3.1] Windows
 [3.2] gcc
 [3.3] C
[4] 2008/12/7/20:00
[5] 3辺ともが等しい長さを入力したときに、「正三角形です」とは表示されず、「鋭角二等辺です」と表示されます。
どの部分が間違っているのでしょうか。アドバイスをお願いします。
274デフォルトの名無しさん:2008/12/07(日) 17:05:34
nx==ny==nzを
nx==ny && nx==nzに変更
275デフォルトの名無しさん:2008/12/07(日) 17:05:49
>>273
nx==ny==nzをnx==ny && ny ==nzに直す。
276デフォルトの名無しさん:2008/12/07(日) 17:14:56
>>274
>>275
ありがとうございます!
277デフォルトの名無しさん:2008/12/07(日) 17:57:06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
A.組合せの数nCmは次のように計算できる。
【nCm=n(n-1)…(n-m+1)/m!】
与えられた2つの自然数nとmに対して、n(n-1)…(n-m+1)を計算する関数long fact2(int n,int m)を作成し、fact2(n,m)を使って、組合せの数nCmを計算するプログラムを作成せよ。

B.フィボナッチ数列は次のように帰納的に定義される数列である。
【F0=0;F1=1;Fn=Fn-1+Fn-2(n≧2)】
フィボナッチ数列を次の手順で求めるプログラムを作成せよ。
(1)配列fib[100]を用意し、配列添字の小さい方から順に求めていく。
(2)再帰関数int fib(int n)を定義し、再帰呼出しによりfib(n)の値を求める。
どちらもn=30までのフィボナッチ数を求めて表示せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc?
 [3.3] 言語:C
[4] 期限:本日24:00まで


よろしくお願いします。
278デフォルトの名無しさん:2008/12/07(日) 18:08:42
10人分の体重を配列に初期値として設定し、
平均体重と体重の最小値を求め表示するプログラムを書け。
これは、どのようにすればいいのでしょうか?
279デフォルトの名無しさん:2008/12/07(日) 18:19:16
>>277
フィボナッチ数列のほうだけ
#include<stdio.h>
1)
int main(){
    int i,fib[100];
    fib[0]=0;fib[1]=1;
    for(i=2;i<100;++i)fib[i]=fib[i-1]+fib[i-2];
    for(i=0;i<=30;++i)printf("fib(%d)=%d\n",i,fib[i]);}

2)
int fib(int n){
    return n < 2 ? n : fib(n-1)+fib(n-2);
}
int main(){
    int i;
    for(i=0;i<=30;++i)printf("fib(%d)=%d\n",i,fib(i));
}
280おねがいしますw:2008/12/07(日) 18:23:43
[1] 授業単元:アルゴリズムデータ構造U
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8225.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8226.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:Cpad Borland C++ Compiler バージョン2.31
 [3.3] 言語: C言語
[4] 期限:2008年12月08日まで

281デフォルトの名無しさん:2008/12/07(日) 18:32:16
>>277
配列
#include <stdio.h>
int main(void) {
int fib[100]={0,1},i;
for(i=2; i<=30; i++) {
fib[i]=fib[i-1]+fib[i-2];
}
for(i=0; i<=30; i++) printf("F%d : %d\n",i,fib[i]);
return 0;
}

再帰
#include <stdio.h>
int fib(int n) {
if(n<=2) {
if(n==0) return 0;
if(n<=2) return 1;
}
return fib(n-2)+fib(n-1);
}
int main(void) {
int i;
for(i=0; i<=30; i++) {
printf("F%d : %d\n",i,fib(i));
}
return 0;
}
282デフォルトの名無しさん:2008/12/07(日) 18:40:32
>>277
組合せ

#include<stdio.h>

long fact2(int n,int m)
{
if(m == 0)
return 1;
else
return n * fact2(n-1,m-1);
}

int main()
{
int n = 5,m = 3;
int denominator = fact2(n,m); /*分母*/
int molecule = 1 /*分子*/

while(m != 1) {
molecule *= m;
m--;
}

printf("5C3 = %ld\n",denominator/molecule);
return 0;
}
283デフォルトの名無しさん:2008/12/07(日) 19:03:22
> molecule
これは恥ずかしいw
284デフォルトの名無しさん:2008/12/07(日) 19:03:35
285デフォルトの名無しさん:2008/12/07(日) 19:07:48
>>280
void display(void)
{
int i = 0;

printf("\n\n---Queue---\n");

while (i < count) {
printf("id = %d\n",Queue[(out+1 + i) % Queue_size]);
i++;
}
}
286デフォルトの名無しさん:2008/12/07(日) 19:09:32
>>283
単語を知らんかったからエキサイト翻訳に頼った。
スマソ
287デフォルトの名無しさん:2008/12/07(日) 19:14:08
>>277
#include <stdio.h>
long fact2(int n , int m) {
int f;
for(f=1; n>=m; n--) f*=n;
return f;
}

int main(void) {
long m,n,nCm;
printf("nCmのnとmを入力\n");
printf("n > ");
scanf("%d",&n);
printf("m > ");
scanf("%d",&m);

if(m>n || n<0 || m<0) {
printf("mとnの指定が不適切\n");
return 1;
}

printf("%d %d \n",fact2(n,n-m+1),fact2(m,1));

nCm = fact2(n,n-m+1)/fact2(m,1);
printf("%dC%d = %d\n",n,m,nCm);
return 0;
}
288デフォルトの名無しさん:2008/12/07(日) 19:15:16
>>287
long fact2(int n , int m) {
int f; > long f;
289デフォルトの名無しさん:2008/12/07(日) 19:22:14
>214
ありがとうございます。
char strbuf の部分は習っていないため使うのはどうかと思っています。
申し訳ありませんが、もしよろしければ、ほかの表現でできないでしょうか??




290デフォルトの名無しさん:2008/12/07(日) 19:35:26
>>289
fscanf を使えってことかな?

#define BUF_SIZE 256

char strbuf[BUF_SIZE] = {0};
を消し、

float temp

float temp1, temp2
にして、

while (...) {
...
}

while (fscanf(fp, "%d %f %f", &day, &temp1, &temp2) != EOF) {
if (min_temp >= temp1) {
min_temp_day = day;
min_temp = temp1;
}
if (max_temp <= temp2) {
max_temp_day = day;
max_temp = temp2;
}
}
にする
291デフォルトの名無しさん:2008/12/07(日) 19:43:01
278です。
[1] 授業単元: 情報
[2] 問題文(含コード&リンク): 10人分の体重を配列に初期値として設定し、
平均体重と体重の最小値を求め表示するプログラムを書け。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: vs2005
 [3.3] 言語: C++だと思います。
[4] 期限: 2008年12月11日
[5] その他の制限: 配列を少し習ってる状態です。
どうかお願いします。
292デフォルトの名無しさん:2008/12/07(日) 19:46:01
[1] プログラミング基礎
[2] 問題文(含コード&リンク):
50字からなる文字列を入力して、
各文字を次の規則に従って変換して出力するプログラミングを作りなさい。
・英字ならばアルファベット上のすぐ次の英字に(ただしZはAに)
・数字ならばその直前の数字に(ただし0は9に)
・特殊文字はそのまま
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月8日
よろしくお願いします。
293デフォルトの名無しさん:2008/12/07(日) 19:47:55
>>258さん
教官に聞いたところπは3.1415で計算するみたいです。
提出したときに質問されるみたいなので
理解するためにもう少しコメントを追加していただけないでしょうか?

294デフォルトの名無しさん:2008/12/07(日) 19:56:25
>>291
#include<stdio.h>


int main()
{
int weight[10] = {44,55,40,61,62,80,43,77,64,48};
float total = 0;
int min = weight[0];
int i;

for(i=0; i<10; i++) {
total += weight[i];
if(min > weight[i])
min = weight[i];
}

printf("平均: %f\n",total/10);
printf("最小値: %d\n",min);

return 0;

}
295デフォルトの名無しさん:2008/12/07(日) 20:14:02
>>292
#include<stdio.h>
#include<ctype.h>
#define N 50
int main()
{
char buff[N];
char* p = buff;
int work;

puts("文字列を入力 :");
scanf("%s",buff);
while(*p != '\0') {
if(isalpha(*p)) {
if (islower(*p)) {
work = ((*p - 'a') + 1) % 26;
*p = work + 'a';
}else {
work = ((*p - 'A') + 1) % 26;
*p = work + 'A';
}
}
if(isdigit(*p)) {
work = ((*p - '0') - 1);
if (work < 0) work += 10;
*p = work + '0';
}
p++;
}
puts(buff);
return 0;
}
296おねがいしますw:2008/12/07(日) 20:18:39
>>285 の方
>>280やっていただき、ありがとうございました
297デフォルトの名無しさん:2008/12/07(日) 20:25:41
>>295
>50字からなる文字列を入力して、
298デフォルトの名無しさん:2008/12/07(日) 20:27:27
>>294さん
体重はdoubleを用いて45.5みたいにしたいです。
arrayを使った場合はどうなりますか?
299デフォルトの名無しさん:2008/12/07(日) 20:29:42
[1] 授業単元:
[2] 問題文(含コード&リンク):
簡単なシェルを作りなさい
多段のパイプが使えるように死なさい
cd でカレントディレクトリの変更が行えるようにしなさい

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月15日
[5] その他の制限: 標準ライブラリは全部使って大丈夫ですけど, できればC89まででお願いします
posix?とかいうのとかシステムコールだというのも使って大丈夫
300デフォルトの名無しさん:2008/12/07(日) 20:32:01
>>219
昨日君がC#スレに誤爆した時の書いたコード。
もちろんちゃんと正しい値が出る。
ご参考までに。

Console.WriteLine("トイレットペーパーの長さは{0}[m]デス", GetTotalLengthOfRoll(53).ToString("F2"));
----------------------------------------
const double CoreRadius = 12;
const double PapterThicknes = 0.1;

double GetTotalLengthOfRoll(double rollRadius)
{
  int turns = (int)((rollRadius - CoreRadius) / PapterThicknes);
  double len = 0;
  for (int turn = 0; turn < turns; ++turn) len += GetCircumrefence(turn);
  return len/1000;
}

double GetCircumrefence(int turn)
{
  double radius = CoreRadius + PapterThicknes * turn;
  return Math.PI * radius * 2;
}
301300:2008/12/07(日) 20:35:03
あ、今気づいたけどスペルミスがあるなw
[×]Circumrefence ⇒ [○]Circumference
302デフォルトの名無しさん:2008/12/07(日) 20:37:12
>>298
こんなのでいい?

#include<stdio.h>
#define N 10

int main()
{
double array[N] = {44,55,40,61,62,80,43,77,64,48};
double total = 0;
int min = array[0];
int i;

for(i=0; i<N; i++) {
total += array[i];
if(min > array[i])
min = array[i];
}

printf("平均: %.1lf\n",total/N);
printf("最小値: %d\n",min);

return 0;

}
303デフォルトの名無しさん:2008/12/07(日) 20:49:14
>>277他に回答あって超いまさらだけど

#include <stdio.h>

long fact2(int n,int m);
long fact(int n);
long comb(int n,int m);

int main()
{
int n = 8;
int m = 5;

printf("%d",comb(n,m));

return 0;
}

long fact2(int n,int m){ return fact(n)/fact(n-m);}
long fact(int n){ return n < 2 ? 1 : n * fact(n-1);}
long comb(int n,int m){ return fact2(n,m)/fact(m);}

Cってクロージャ使えるようなトリックないの?
304デフォルトの名無しさん:2008/12/07(日) 21:11:30
gcc拡張を使えばできなくはない
トランポリンとかでググるといい情報が見つかるかも
305デフォルトの名無しさん:2008/12/07(日) 21:16:28
#include <stdio.h>
int count() { static int i=0; return i++; }
int main(void) {
int i;
for(i=0; i<10; i++) printf("%d ",count());
return 0;
}
306デフォルトの名無しさん:2008/12/07(日) 21:24:56
>>233さん
>>266さん

本当にありがとうございました!
非常に助かりました!
言葉でしかお礼ができませんが、ありがとうございました。
307デフォルトの名無しさん:2008/12/07(日) 21:55:05
>>290さん
ありがとうございます!!
308 ◆ncE6YQxqag :2008/12/07(日) 22:10:56
>>206 について

どなたか>>210さんのいうところの

2.関数がstaticな構造体を持つ

で作っていただける方はいらっしゃらないでしょうか?

1.については作っていただいたのですが何分難しく解読が出来ませんでしたorz


>>213 さん
わざわざ作っていただき, ありがとうございました.
しかし, 当方の足りない知識では解読することができませんでした
309デフォルトの名無しさん:2008/12/07(日) 22:19:34
[1] C言語
[2] 問題文(含コード&リンク):
正の整数値を引数として受け取り、
それを2進数、8進数、16進数として表現して出力するプログラミング
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc?
 [3.3] 言語:C言語
[4] 期限:
まだ基礎的なことしか習っていません。よろしくお願いいたします。
310デフォルトの名無しさん:2008/12/07(日) 22:30:35
宿題の質問なんですが↓のプログラム大丈夫ですか?
問題があればご指摘おねがいします。
内容はコマンドライン引数で指定した人数分だけデータを入力して構造体にそれぞれ格納して(input_dataで)
データを格納しているPERSONAL_DATA型構造体のアドレスと人数(データ数)を引数として受け取り,個人データを出力する(output_dataで)プログラムです。
ちなみに環境はOS: Linux コンパイラ名とバージョン: gcc 言語: C です。
おねがいします。
311デフォルトの名無しさん:2008/12/07(日) 22:31:16

#include<stdio.h>
#include<stdlib.h>
typedef struct{
char name[10];
int age;
double height;
double weight;
double bmi;
}PERSONAL_DATA;
void input_data(PERSONAL_DATA *x, int y);
void output_data(PERSONAL_DATA *s, int t);
int main(int argc, char* argv[]){
PERSONAL_DATA *a,*b;
int num,i;
char person[10];
if(argc!=2){
printf("Usage ./test number\n");
exit(1); }
num=atoi(argv[1]);
b=(PERSONAL_DATA*)malloc(sizeof(PERSONAL_DATA)*num);
a=b;
input_data(*a,num);
a=b;
output_data(*a,num);
free(b); }
312デフォルトの名無しさん:2008/12/07(日) 22:42:42
>>310
input_data(*a, num);
はおかしい。
input_data(a, num); が正しいかどうかは input_data() の中身見ないとわからん。
313デフォルトの名無しさん:2008/12/07(日) 22:46:50
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8254.txt
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 2008年12月9日18:00まで
[5] その他の制限: 特になし

大変申し訳ありませんが、よろしくお願いします
314デフォルトの名無しさん:2008/12/07(日) 23:21:42
>>308
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8255.c
質問しといて無視はさすがに酷かったかなとおもって直したよ、でもあまり変わらないけど
315 ◆ncE6YQxqag :2008/12/07(日) 23:46:14
>>314さん
ありがとうございます.
がんばって解読したいと思います.
316デフォルトの名無しさん:2008/12/08(月) 00:17:50
V3 a, b, c, *result1, *result2;
result1 = v3add(&a, &b);
result2 = v3add(&a, &c);

とかやると、最初の結果が上書きされるけどいいのか
317デフォルトの名無しさん:2008/12/08(月) 00:51:03
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8256.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 夜が明けるまで
[5] その他の制限: 今構造体を習っています。
よろしくお願いします。
318デフォルトの名無しさん:2008/12/08(月) 00:57:32
>>316
うぇwwうぇww main関数見てなかったwww
そりゃそういう害でるよなwwwwww
319「 ◆xstMZhzLPE :2008/12/08(月) 01:37:49
>>205をどなたかfor,whileでお願いいたします(+_+)
320デフォルトの名無しさん:2008/12/08(月) 01:58:36
321デフォルトの名無しさん:2008/12/08(月) 02:00:37
>>319
forは使ってるけど、whileも使えってことですか?w

それともクラスとか使うなって意味か?
322デフォルトの名無しさん:2008/12/08(月) 02:15:31
323デフォルトの名無しさん:2008/12/08(月) 02:26:46
>>322
個人的にだが、
if (x.n < 0 && x.d < 0)

if (x.d < 0)
こうすると美しくならんだろうか?
324デフォルトの名無しさん:2008/12/08(月) 03:03:52
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 次のような関数を作成しなさい。
double rectarea(double x1, double y1, double x2, double y2)
長方形の対角にある点p1, p2 のx, y 座標から,長方形の面積を返す関数。p1 の
x 座標をx1,y 座標をy1 とし,p2 のx 座標をx2,y 座標をy2 とする。
x1 とx2,y1 とy2 の大小関係は決まっていない。
math.h のライブラリ関数double fabs(double a)を利用してよい。
さらに,この関数を利用したプログラム(main 関数)を自分で考え作成しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:12/8

問題の意味がよくわからない状態です。
「math.h のライブラリ関数double fabs(double a)を利用してよい。」
の部分まで教えていただければ、自作の部分は自力でやってみようと思います。
よろしくお願いします。
325デフォルトの名無しさん:2008/12/08(月) 03:10:20
>>324
double rectarea(double x1, double y1, double x2, double y2)
{
return fabs((x1 - x2) * (y1 - y2));
}
326デフォルトの名無しさん:2008/12/08(月) 05:58:00
1] 授業単元 プログラミング
[2] 問題文 三つの値を読み込み、バイナリファイルに出力するプログラムの作成
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:
[5] その他の制限:
よろしくお願いします
327デフォルトの名無しさん:2008/12/08(月) 09:45:40
>>326
「値」の型は何?
以下、3つとも整数と仮定した場合
#include <stdio.h>
int main()
{
int a[3];
FILE *fp = fopen("binary.dat", "w");
scanf("%d %d %d", &a[0], &a[1], &a[2]);
fwrite(&a, sizeof(int), 3, fp);
fclose(fp);
}
328デフォルトの名無しさん:2008/12/08(月) 11:41:31
浮動小数と仮定すると
#include <stdio.h>
int main()
{
double a[3];
FILE *fp = fopen("binary.dat", "wb");
scanf("%lf %lf %lf", &a[0], &a[1], &a[2]);
fwrite(&a, sizeof(double), 3, fp);
fclose(fp);
}
329デフォルトの名無しさん:2008/12/08(月) 12:23:31
【質問テンプレ】
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):
0.構造体:タグ名「ten」は文字型配列1個(name[10]),倍精度実数型データ2個(x,y)を扱うものとする.

1.上記の構造体tenを2つ(個別でも,配列でも)宣言し,それぞれに任意の名前と任意のx座標の値とy座標の値をキーボードから入力する.そしてそれが終わってから入力した結果を画面に出力するプログラムを作成せよ.

2.上記の2点間(x_1,y_1)と(x_2,y_2)の距離を計算し,結果として「jitaku とdaigakuとの距離はLです.」と出力するプログラムに変更せよ.

3.2点間の距離計算とその表示を関数としてプログラムせよ.ただし構造体を引数とし,戻り値は無しとする.

4.上記の問題では2次元平面上の座標から距離を求めたが,3次元空間上の座標を扱い,距離を求めるプログラムに変更せよ.

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語:C
[4] 期限:2008年12月11日(木)
[5] その他の制限:構造体までしか習っていません。本当に基礎をやっています。

よろしくお願いします。
330327:2008/12/08(月) 12:46:56
非Posix環境だと "w" → "wb" が必要になるかもしれないけど Linux なら "w" でOK
あと
fwrite(&a, ..)
の &a は a でおk
fwrite(a, ...)
331デフォルトの名無しさん:2008/12/08(月) 12:53:38
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8235.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
 [4] 期限:2008年12月09日まで
  よろしくお願いします
332デフォルトの名無しさん:2008/12/08(月) 13:10:37
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文:
1から6の目が等確率で出ないサイコロがある。
それぞれの確率は、以下の通り。
p1=1/4,p2=1/6,p3=1/6,p4=1/6,p5=1/6,p6=1/12
このようなサイコロを、100万回投げたとき、どの目が何回でたかを数えるプログラムを作成せよ。
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VC++2008
 [3.3] 言語:C言語
[4] 期限:12月11日18:00まで
[5] その他の制限:Cの基礎全般。rand関数などを使用。

等確率のサイコロのならわかるのですが、
最初から確率が決まったものはどうすればいいのかわかりません。
よろしくお願いします。
333デフォルトの名無しさん:2008/12/08(月) 13:23:30
>>332
サイコロの確率の割合で出目の数字が書かれたテーブル作って計算した。
たぶん、素直に実装するならこれかな
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
    int t[12]={0,0,0,1,1,2,2,3,3,4,4,5};
    int c[6]={0,0,0,0,0,0};
    int i;
    srand(time(0));
    for(i=0;i<1000000;++i)++c[t[rand()%12]];
    for(i=0;i<6;++i)printf("%d:%6d\n",i+1,c[i]);
}
334デフォルトの名無しさん:2008/12/08(月) 13:36:06
>>333
ありがとうございます!
335254:2008/12/08(月) 13:51:04
すみませんどなたか254お願いします。
336デフォルトの名無しさん:2008/12/08(月) 14:39:29
[1] 授業単元:プログラミング
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8259.lzh
[3] 環境
 [3.1] OS:Vista
 [3.2] コンパイラ名とバージョン:VC++2008
 [3.3] 言語:C言語
[4] 期限:12月10日12:00まで
[5] その他の制限:モンテカルロ法を用いて。

単純に面積を求めるだけならできますが、モンテカルロ法でのプログラムがよくわからないので、お願いします。
337デフォルトの名無しさん:2008/12/08(月) 15:05:18
>>336
こんな感じ?

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int base = 0, area = 0;
double x, y;
while (base++ < 10000000)
{
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
if (x > 0.5 && (x*x + y*y < 1))
area++;
}
printf("%f\n", (double)area / base);
return 0;
}
338デフォルトの名無しさん:2008/12/08(月) 16:34:21
[1] 授業単元:C++
[2] 問題文(含コード&リンク):以下のジェネリック関数の同じ機能をもつ関数をテンプレートを使って定義し、動作確認をしなさい。
1,search(b,e,b2,e2)
2,copy(b,e,d)
3,partition(b,e,p)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: g++(バージョン不明)
 [3.3] 言語: C++
[4] 期限: [2008年12月09日16:00まで]
[5] その他の制限:テンプレートの中に、問題になっている1、2、3の関数自身は組み込めない。
339デフォルトの名無しさん:2008/12/08(月) 16:42:40
340デフォルトの名無しさん:2008/12/08(月) 16:48:55
>>115-116
本当に有難う御座いました。
大変助かりました。
341デフォルトの名無しさん:2008/12/08(月) 16:51:52
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):次のように課題1 と同じように,2 次元配列matrix を初期化しながら宣言する。
(1) 2 次元配列matrix を,各列のデータを,右端が揃うようにして出力しなさい。出力は
次のようになればよい。
92 80 23 19
36 5 62 58
58 38 94 76
25 94 85 33
3 81 88 67
(2) (1)のプログラムに次の処理を加えなさい。matrix を,90 度時計回りで回転させて出力
しなさい。出力は次のようになればよい。
3 25 58 36 92
81 94 38 5 80
88 85 94 62 23
67 33 76 58 19
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:VC++ 6.0
 [3.3] 言語:C言語

(1)まではできたので、(2)をお願いしたいと思います。
よろしくお願いします。
342デフォルトの名無しさん:2008/12/08(月) 17:20:58
for(i=0; i<4; i++){
for(j=3; j>=0; j--){
printf("%3d", arr[j][i]):
}
printf("\n");
}

確認はしてない
343デフォルトの名無しさん:2008/12/08(月) 17:29:59
>>342
早速ありがとうございます。
後程自分で確認してみたいと思います。
本当に助かりました!
344デフォルトの名無しさん:2008/12/08(月) 17:47:06
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
1.コマンドラインでファイル名、年、月を指定し、そのファイルにその年・月のカレンダーを
出力するプログラムを作成せよ。
例:calendar cal0811.txt 2008 11
→ファイルcal0811.txt に2008年11月のカレンダーを出力する

2.複素数を格納する構造体structcomplex を作成し、その加減乗除を行うための関数を作成せよ。
?それぞれの関数は引数・戻り値ともに型はstructcomplexとなる。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年12月10日正午まで
[5] その他の制限: ファイルの入出力と構造体を習ったところです。

よろしくお願いします
345デフォルトの名無しさん:2008/12/08(月) 17:49:18
あ、j=4からで
346デフォルトの名無しさん:2008/12/08(月) 18:00:05
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
文字列を逆順にするプログラムを配列を用いずに作成せよ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8262.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual stdio 2005
 [3.3] 言語: C
[4] 期限: 12/10 18:00
[5] その他の制限:
問題文にあるとおり、配列を使わずに作成してください
よろしくお願いします
347デフォルトの名無しさん:2008/12/08(月) 18:48:00
>>346
kの使いどころがわからんかった。間違ってたら誰か直して

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

void RevStr(char *p,char *rp,int n);

int main(void){
char *str="Programming",*rstr;
int k,num;

num = 0;
rstr = str;
while (*rstr++ != '\0')
num++;
rstr = (char *)malloc(sizeof(char) * num + 1);

RevStr(str, rstr, num);
printf("処理前:%s\n",str);
printf("処理後:%s\n",rstr);

free(rstr);

return 0;
}

void RevStr(char *p,char *rp,int n) {
while (--n >= 0)
*rp++ = p[n];
*rp = '\0';
}
348デフォルトの名無しさん:2008/12/08(月) 19:11:34
おそらく、動作には影響ないが

-  rstr = (char *)malloc(sizeof(char) * num + 1);
+  rstr = (char *)malloc(sizeof(char) * (num + 1));
349デフォルトの名無しさん:2008/12/08(月) 19:25:25
[1] 授業単元:for文 if else文の利用

[2] 問題文(含コード&リンク):
範囲A〜Bでのある数xの倍数の数を数える。
scanf関数を用い、整数値A、B、xを入力させ、for文とif文あるいはif else文の組合せを利用することにより、
範囲A〜Bにおいて数値xの倍数がいくつあるのかを数え、プログラム実行結果(範囲A、Bとある数x、数値xの倍数の数)をPC画面に表示する。
例:A=1、B=20、x=5のときxの倍数の数は4となる。

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

[4] 期限: 12月9日まで

[5] その他の制限: for文やif文など基礎的な所しかまだ学んでいません。

よろしくお願いします。
350デフォルトの名無しさん:2008/12/08(月) 19:40:28
#include <stdio.h>
#include <stdlib.h>

int main()
{
int count = 0;
int A;
int B;
int x;

printf("A > ");
scanf("%d",&A);
printf("B > ");
scanf("%d",&B);
printf("x > ");
scanf("%d",&x);

{
int i;
for(i = A;i <= B;i++){
if(!(i % x)) count++;
}
}

printf("A=%d、B=%dのとき%dの倍数の数は%dになる",A,B,x,count);

return EXIT_SUCCESS;
}

本当にC++なんならincludeをcstdioとかに変えてね
351「 ◆xstMZhzLPE :2008/12/08(月) 19:41:20
>>321さん

whileを使っていただければ。
できればclassを使わない手があるならその方がいいです。
わかりづらくてごめんなさい(>_<)
352デフォルトの名無しさん:2008/12/08(月) 19:44:12
>>349
ループ版を書いてる人がいるので自分はif文だけの版を
#include<stdio.h>
int main(){
    int A,B,x,n;
    printf("Input A:");scanf("%d",&A);
    printf("Input B:");scanf("%d",&B);
    printf("Input x:");scanf("%d",&x);
    n = B/x - (A+x-1)/x + 1;
    if(n<0)n=0;
    printf("%d以上%d以下の%dの倍数の数は%d個\n",A,B,x,n);
}
353デフォルトの名無しさん:2008/12/08(月) 20:04:25
>>344
1の途中まで作成(ファイルに出力すれば完成)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8263.txt

>>352
n = B/x - (A-1)/x;
でおk
354344:2008/12/08(月) 21:16:29
>>353
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8263.txt
早速↑を.cで保存してコンパイルしてみたのですが

C:\DOCUME~1\(名前)\LOCALS~1\Temp/ccKWbaaa.o:1202kadai1.c:(.text+0x22): undefine
d reference to `localtime_r'
collect2: ld returned 1 exit status

とでて実行ファイルが出来ないです・・・。
355352:2008/12/08(月) 21:41:17
>>353
お、そっちのほうがシンプルでいいね。thx
(A+x-1)/xまで書いてたんだから思いつけよなー俺orz
356デフォルトの名無しさん:2008/12/08(月) 21:44:58
[1] 授業単元: C
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8264.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual stadio
 [3.3] 言語: C
[4] 期限: 12月12日
よろしくお願いします
357デフォルトの名無しさん:2008/12/08(月) 22:58:37
>>354
windowsだとこっちか
localtime_rの行を以下に変更

localtime_s(tm, &t);
358344:2008/12/08(月) 23:18:18
>>357
localtime_rの行をlocaltime_s(tm, &t);に変えてコンパイルしました。

C:\study>gcc 1202kadai1.c -o 1202kadai1.exe
C:\DOCUME~1\(名前)\LOCALS~1\Temp/ccMBaaaa.o:1202kadai1.c:(.text+0x22): undefined
reference to `localtime_s'
collect2: ld returned 1 exit status

また出来ませんでした・・・
359デフォルトの名無しさん:2008/12/08(月) 23:19:15
[1] 授業単元: C++
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8265.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Stadio
 [3.3] 言語: C++
[4] 期限: 12月9日 AM6時

問題文が英語で出題されました。
一応原文のまま載せてあります。
お手数ですがお願い致します。
360デフォルトの名無しさん:2008/12/08(月) 23:39:39
>>359
ちょwww同じ授業受けてるだろwwww
361デフォルトの名無しさん:2008/12/08(月) 23:51:48
>>356
元の問題書けよ禿げ
このスレに残ってるのか?
362デフォルトの名無しさん:2008/12/09(火) 01:10:19
[1] 授業単元:プログラミング入門

[2] 問題文(含コード&リンク):次のように2次元配列matrixを初期化しながら宣言する。
#define ROW 5
#define COL 4
int main(void) {
int matrix[ROW][COL] = {
{92, 80, 23, 19},
{36, 5, 62, 58},
{58, 38, 94, 76},
{25, 94, 85, 33},
{ 3, 81, 88, 67}};
行・列毎に合計と平均を求めて出力しなさい。

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

お手数ですが、よろしくお願い致します。
363デフォルトの名無しさん:2008/12/09(火) 02:20:23
1] 授業単元: コンピュータープログラミング
[2] 問題文(含コード&リンク):
1から100の擬似乱数を発生させ、キーボードから入力した任意の数字と一致したときに、何回目でヒットしたかと乱数の総和を求めディスプレイに表示して終了するプログラムを作成しなさい。
ただし、宣言文に
#include<stdlib.h>
#include<time.h>
を、また
main関数内に
srand(unsigned) time(NULL);
を宣言してから
rand()
を用いなさい。

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: Fujitsu Fortran & C Academic Package V3.0 L10
 [3.3] 言語: C
[4] 期限: 2008.12.11(木)

どなたか、よろしくお願い致します
364デフォルトの名無しさん:2008/12/09(火) 02:29:13
>>363
それはつまり、

(乱数発生→数値入力)

違ったら、また次の乱数発生〜

ということ?
365デフォルトの名無しさん:2008/12/09(火) 03:17:04
>>364
他にどんなの考えたんだろ。
試行回数をファイルに保存するとか?
366デフォルトの名無しさん:2008/12/09(火) 03:25:02
>>365
367デフォルトの名無しさん:2008/12/09(火) 03:49:48
>>363
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int input = 0, ans = 0, n = 0, sum = 0;
srand((unsigned int)time(NULL));
while (1) {
ans = rand() % 100 + 1;
sum += ans;
n++;
fputs("数字入力して: ", stdout);
scanf("%d", &input);
if (input == ans) break;
else puts("外れ");
}
printf("%d回目であたりました\n", n);
printf("いままでの総和は%dです\n", sum);

return 0;
}
368デフォルトの名無しさん:2008/12/09(火) 03:59:24
当たる気がしねぇw
369デフォルトの名無しさん:2008/12/09(火) 04:09:25
どなたか>>359よろしくお願い致します。
提出期限がAM6時ではなくAM10時でした。
申し訳ありません。
370デフォルトの名無しさん:2008/12/09(火) 04:29:00
問題の読み違いでなければ、教師からクライアントのプログラム渡されてるみたいだけどソレは無いの?
371デフォルトの名無しさん:2008/12/09(火) 04:45:29
>>370
サンプルみたいな物はもらいました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8267.txt
それ以外はもらってないのでわからないです。すいません。
372デフォルトの名無しさん:2008/12/09(火) 04:45:32
指示されているような動作をするクライアントを作るんでない?
炭酸飲料しか買わないのかな。。。
373デフォルトの名無しさん:2008/12/09(火) 04:47:01
マルチスレッドで自動金払い戻しかと思ったら0入力でおつりレバーなのね
374デフォルトの名無しさん:2008/12/09(火) 05:33:38
>>372
多分そんな感じです。
教師からはこれを見たらできると言われただけで詳しい説明がなかったので。

>>373
その通りでした。自分で読んでみたのですがさっぱりだったのでお願いしました。
375デフォルトの名無しさん:2008/12/09(火) 07:22:14
>>361
int main(void)
{
int matrix[ROW][COL] = { {92, 80, 23, 19}, {36, 5, 62, 58},
{58, 38, 94, 76}, {25, 94, 85, 33}, {3, 81, 88, 67},};
int sum_x[ROW]={0},sum_y[COL]={0},avg_x[ROW]={0},avg_y[COL]={0};
int i,j;

for(i=0;i<ROW;i++){
for(j=0;j<COL;j++){
sum_x[i] +=matrix[i][j];}
avg_x[i]=sum_x[i]/COL;}
for(i=0;i<COL;i++){
for(j=0;j<ROW;j++){
sum_y[i]+=matrix[j][i];}
avg_y[i]=sum_y[i]/ROW;}
for(i=0;i<ROW;i++){
printf("%d行目の合計:%d %d行目の平均:%d\n",i+1,sum_x[i],i+1,avg_x[i]);}
printf("\n");
for(i=0;i<4;i++){
printf("%d列目の合計:%d %d列目の平均:%d\n",i+1,sum_y[i],i+1,avg_y[i]);}
return 0;
}

c言語独学4日目だがこんなもんでいいのかな?
376デフォルトの名無しさん:2008/12/09(火) 07:23:02
間違えた。>>362
377デフォルトの名無しさん:2008/12/09(火) 08:36:34
363は数値入力は一回でそれに当たるまで乱数発生を繰り返すんじゃないの?
378デフォルトの名無しさん:2008/12/09(火) 08:45:04
>>361
すいません
次数が大きいほうから順に出力させる問題です
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8264.txt
379デフォルトの名無しさん:2008/12/09(火) 08:48:51
>>377
なるほど。その発送はなかった
380デフォルトの名無しさん:2008/12/09(火) 08:58:40
>>363>>377だと思っていた俺涙目w
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int no,choice,sum=0,cnt=0;
srand((unsigned) time(NULL));
do{
printf("1-100の数字を入力してください>>");
scanf("%d",&choice);
if(choice<0||choice>100) printf("数字が違います\n");
}while(choice<0||choice>100);
while(1){
no=rand()%100+1;
printf("入力した数字=%dランダム数字=%d\n",choice,no);
if(choice==no) break;
sum+=no;
cnt++;
}
printf("入力した数字は%d回目で当たりました。",cnt);
printf("総和=%d",sum);
return 0;
}
381デフォルトの名無しさん:2008/12/09(火) 09:42:43
すみません。どなたか>>359お願いできませんか。
よろしくお願いします。
382デフォルトの名無しさん:2008/12/09(火) 09:47:57
>>378
同じリンク貼ってどうしたいんだよ>>378
>>1

と突き放すだけでもかわいそうなので修正点だけ
最後の for ループ
pwork->next != NULL → pwork != NULL
基本的にはこれでOK。もうちょっとちゃんとやりたかったら、その for の中身を
if(pwork->coef > 1)
printf("%+d", pwork->coef);
else if(pwork->coef == 1)
printf("+");
if(pwork->degree_of_x > 1)
printf("x^{%d}", pwork->degree_of_x);
とする

383デフォルトの名無しさん:2008/12/09(火) 10:14:05
>>382
それでコンパイルしましたが出力されませんでした^^;

自分は4つ目のif文で0なのに<pmx->degree_of_xで大きいからいけないのかなと思ってるのですが・・・
384デフォルトの名無しさん:2008/12/09(火) 10:59:08
>>375
ありがとうございます。
でもエラーが16出て、更によくわからなくなってしまいました…

どなたかもう一度>>362をお願いできませんか?
385デフォルトの名無しさん:2008/12/09(火) 11:07:32
>>362
#include <stdio.h>
#define ROW 5
#define COL 4
int main(void) {
int matrix[ROW][COL] = {
{92, 80, 23, 19},
{36, 5, 62, 58},
{58, 38, 94, 76},
{25, 94, 85, 33},
{3, 81, 88, 67}};
int i, j, sum;
for(i = 0; i < ROW; i++) {
sum = 0;
for(j = 0; j < COL; j++) sum += matrix[i][j];
printf("%d行目の合計: %d\n", i + 1, sum);
}
for(j = 0; j < COL; j++) {
sum = 0;
for(i = 0; i < ROW; i++) sum += matrix[i][j];
printf("%d列目の合計: %d\n", j + 1, sum);
}
return 0;
}
386デフォルトの名無しさん:2008/12/09(火) 11:21:44
>>375のソースの頭に
#include<stdio.h>
#define ROW 5
#define COL 4
付ければいいだけのはず
387デフォルトの名無しさん:2008/12/09(火) 11:27:14
>>362 訂正
#include <stdio.h>
#define ROW 5
#define COL 4
int main(void) {
int i, j, sum;
int matrix[ROW][COL] = {
{92, 80, 23, 19},
{36, 5, 62, 58},
{58, 38, 94, 76},
{25, 94, 85, 33},
{3, 81, 88, 67}};
for(i = 0; i < ROW; i++) {
sum = 0;
for(j = 0; j < COL; j++) sum += matrix[i][j];
printf("%d行目の合計: %d\n", i + 1, sum);
}
for(j = 0; j < COL; j++) {
sum = 0;
for(i = 0; i < ROW; i++) sum += matrix[i][j];
printf("%d列目の合計: %d\n", j + 1, sum);
}
return 0;
}
388デフォルトの名無しさん:2008/12/09(火) 13:21:14
[1] 授業単元:
[2] 問題文(含コード&リンク):1. 配列の線形探索(番兵なし)のプログラム例に手を入れて、同じ値の要素があればそのうち最後に出現する要素へのポインタを返すようにせよ。そして、その関数の計算量を評価せよ。
2. 単方向線形リストに対して線形探索(番兵なし)を行なう関数を書け。ただし、データ構造は適切に設計せよ。そして、その関数の計算量を評価せよ。
3. 末尾つき線形リストに対して線形探索(番兵あり)を行なう関数を書け。ただし、データ構造は適切に設計せよ。そして、その関数の計算量を評価せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:どちらでも可
[4] 期限:2008年12月16日13:00まで
[5] その他の制限: なし

頭が沸騰しそうだ(ry状態です
お願いします
389デフォルトの名無しさん:2008/12/09(火) 13:31:45
390デフォルトの名無しさん:2008/12/09(火) 13:35:31
>>388
>プログラム例に手を入れて
とあるのに、例がないとどうしようもないぞ?
勝手に回答者が考えていいならそれでいいけど。
391デフォルトの名無しさん:2008/12/09(火) 13:50:46
>>383
わりーみすってた
for(pwork = poly; pwork->next != NULL; pwork = pwork->next) {
if(pwork->coef != 1 || pwork->degree_of_x == 0)
printf("%+d", pwork->coef);
else if(pwork->coef == 1)
printf("+");
if(pwork->degree_of_x >= 1)
printf("x^{%d}", pwork->degree_of_x);
392デフォルトの名無しさん:2008/12/09(火) 13:50:55
>>390
すいません言葉不足でした
自分で作っていいそうです
393デフォルトの名無しさん:2008/12/09(火) 14:02:22
>>390
#include <stdlib.h>
int *
search_key(int array[], int size, int key)
{
int i;
for (i = 0; i < size; i ++) {
if (array[i] == key)
return &array[i];
}
return NULL;
}
394デフォルトの名無しさん:2008/12/09(火) 14:20:11
for (i = 0; i < size; i ++)
      ↓
for (i = size-1; i >= 0 ; i--)

計算量の評価って、線形探索なんだから全部O(n)じゃん
395デフォルトの名無しさん:2008/12/09(火) 14:30:16
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
次の仕様を満たす関数を作成し、以下の問いに対するプログラムを作成せよ.
関数名:int cut_off(int n)
仕様: 整数型の数 n を受け取り、その一の位を切り捨てした値を戻り値として返す
問い:5つの自然数 a[0] 〜 a[4] を入力すると、その和の一の位を切り捨てした値と、それぞれの一の位を切り捨てした値の和を表示する.(剰余を計算する演算子( % )を有効活用.)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12/9 pm5:00
[5] その他の制限:ないです

お願いします><
396デフォルトの名無しさん:2008/12/09(火) 14:45:04
[1] 授業単元:プログラミング演習
[2] 問題文:
m は2以上 n は1以上の整数である。
m以上の整数n個からなる整数群のうち、
その全要素が互いに素であり、
数列に含まれる値の最大値が全数列でもっとも小さいものを
求めるプログラムを作成しなさい。
(なお、複数存在する場合は一つもとめるだけでよい)

例としては
m = 3, n = 3で
3, 4, 5になります

m = 3, n = 4で
3, 4, 5, 7又は
3, 5, 6, 7になります

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/ C++
[4] 期限: 12/11
[5] その他の制限:
C++はSTLを使おうと構わないのですが、
inner_produtのような計算を代行するようなのは禁止です。
397デフォルトの名無しさん:2008/12/09(火) 14:50:06
>>396
> 3, 5, 6, 7になります
3 と 6 が互いに素???
398デフォルトの名無しさん:2008/12/09(火) 14:54:26
>>395
#include <stdio.h>
int cut_off(int n)
{
return n - (n % 10);
}
int main(void)
{
int a[5];
int b, c;
scanf("%d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4]);
b = cut_off(a[0] + a[1] + a[2] + a[3] + a[4]);
c = cut_off(a[0]) + cut_off(a[1]) + cut_off(a[2]) + cut_off(a[3]) + cut_off(a[4]);
printf("%d\n%d\n", b, c);
return 0;
}
399デフォルトの名無しさん:2008/12/09(火) 15:00:00
>>395
#include <stdio.h>
#include <stdlib.h>
#define HAIRETUNO_KOSUU 5

int cut_off(int n){
return n-(n%10);
}
int main(){
int a[HAIRETUNO_KOSUU];
int i;
int sum;
for(i=0;i<HAIRETUNO_KOSUU;++i){
printf("Input a[%d] number:",i);
scanf("%d",&a[i]);
}

sum=0;
for(i=0;i<HAIRETUNO_KOSUU;++i){
sum+=a[i];
}
/*その和の一の位を切り捨てした値*/
printf("Cut off of sum:%d\n",cut_off(sum));

sum=0;
for(i=0;i<HAIRETUNO_KOSUU;++i){
sum+=cut_off(a[i]);
}
/*それぞれの一の位を切り捨てした値の和*/
printf("Sum of Cut off:%d\n",sum);
return 0;
}
400デフォルトの名無しさん:2008/12/09(火) 15:25:48
>>385-387
ありがとうございます。
何度もお手数掛けて申し訳ありません。
本当に助かりました。
401デフォルトの名無しさん:2008/12/09(火) 16:20:57
>>397
ごめんなさい私が馬鹿でした
例は自分でやった物だったので。。。
402デフォルトの名無しさん:2008/12/09(火) 16:52:42
[1] 授業単元:プログラミング演習第一
[2] 問題文(含コード&リンク):
スタックを実装し、テキストファイルから読み込んだ文字列(data.txt)の内容をスタックに
格納する。有限回ループさせ、スタックオーバーフローが起きる限界を調べよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限: 12/10 pm5:00
[5] その他の制限:ないです
403デフォルトの名無しさん:2008/12/09(火) 17:03:23
>>398-399
>>395です。ありがとうございました。無事に提出できました。
404デフォルトの名無しさん:2008/12/09(火) 17:12:45
[1] 授業単元:
[2] 問題文(含コード&リンク):
関数double area(double w, double h)を作成しなさい。
この関数は,w を長方形の幅,h を長方形の高さと見なして,その長方形の面積を計算する。
ただし,w 又はh が負の値の場合は,長方形の面積はゼロとすることにする。
関数を定義した上で,次のようなプログラム(main 関数)を作成しなさい。
四つの実数値width1, height1, width2, height2 を読み込む(一つ目の長方形の幅,一
つ目の長方形の高さ,二つ目の長方形の幅,二つ目の長方形の高さを意味する)。二つ
の長方形の面積を出力し,さらに,一つ目の長方形と,二つ目の長方形とどちらが大き
いのか,又は同じ大きさなのかを出力しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VisualC++6.0
 [3.3] 言語:C言語
[4] 期限:12月11日24時まで
[5] その他の制限特になし

申し訳ありませんが、よろしくお願いします。
405デフォルトの名無しさん:2008/12/09(火) 17:14:09
>>402
スタックは固定?可変長?
それによって難易度がえらく変わってくる気が。
406デフォルトの名無しさん:2008/12/09(火) 17:18:53
>>405
できれば固定と可変長の2パターンお願いします。
無理なら固定だけでいいです。
よろしくお願いします。
407デフォルトの名無しさん:2008/12/09(火) 17:19:04
>>404
#include <stdio.h>
double area(double w, double h)
{ return w * h; }
int main(void) {
double width1, height1, width2, height2;
double s1, s2;
printf("四つの実数値を入力: ");
scanf("%lf %lf %lf %lf", &width1, &height1, &width2, &height2);
s1 = area(width1, height1);
s2 = area(width2, height2);
printf("一つ目の長方形の面積: %lg\n", s1);
printf("二つ目の長方形の面積: %lg\n", s2);
if (s2 < s1) printf("一つ目の長方形の方が大きい\n");
else if (s1 < s2) printf("二つ目の長方形の方が大きい\n");
else printf("同じ大きさ\n");
return 0;
}
408デフォルトの名無しさん:2008/12/09(火) 17:25:21
>>404
#include <stdio.h>

double area(double w, double h){
return (w>0?w:0)*(h>0?h:0);
}

int main(){
double width1, height1, width2, height2;;
printf("Input 4 numbers: ");
scanf("%lf %lf %lf %lf",&width1, &height1, &width2, &height2);
if(area(width1, height1) > area(width2, height2))
printf("rectangle 1 is larger than rectangle 2.\n");
else if(area(width1, height1) < area(width2, height2))
printf("rectangle 2 is larger than rectangle 1.\n");
else
printf("Same rectangeles.\n");
return 0;
}

>>407だと、
>ただし,w 又はh が負の値の場合は,長方形の面積はゼロとすることにする。
が満たされないと思う。
409デフォルトの名無しさん:2008/12/09(火) 17:32:03
>>404
#include <stdio.h>

double area(double w, double h) { return (w < 0 || h < 0)? 0: w * h; }

int main(void)
{
double width1, height1;
double width2, height2;
double area1, area2;

printf("width1 >> "); scanf("%lf", &width1);
printf("height1 >> "); scanf("%lf", &height1);
printf("width2 >> "); scanf("%lf", &width2);
printf("height2 >> "); scanf("%lf", &height2);

printf("%f\n", area1 = area(width1, height1));
printf("%f\n", area2 = area(width2, height2));
if (area1 == area2)
printf("同じ\n");
else
printf("%sつ目のほうが大きい\n", area1 > area2? "一": "二");

return 0;
}
>>408だと
>二つの長方形の面積を出力し
が満たされないと思うw
410デフォルトの名無しさん:2008/12/09(火) 17:36:32
みんなあわてんぼうだなw
411デフォルトの名無しさん:2008/12/09(火) 17:36:48
>>407-409
みなさんありがとうございます。
おかげ様で無事に提出できました。
412デフォルトの名無しさん:2008/12/09(火) 17:42:42
>>402
#include <stdio.h>
#define STACK_LIMIT 10

int main(){
char stack[STACK_LIMIT];
int c; // buffer
int sp=0;// stack pointer
FILE *fp;
if((fp = fopen("data.txt","r"))==NULL)
return -1;
while((c = fgetc(fp)) != EOF){
stack[sp++]=c;
}

while(sp > 0)
printf("%d:%c\n",sp,stack[--sp]);

return 0;
}
途中まで作って気付いた。
>文字列(data.txt)の内容をスタックに格納する
って、文字を格納するのか、それとも行単位の文字列を格納するのか?
とりあえず、文字を格納するスタックを書いた。
413デフォルトの名無しさん:2008/12/09(火) 17:46:29
>>391
何度もすいませんがそれでもdegreeが0の時だけが出力されません^^;
Input the coefficient: 5
Input the degree: 6
Input the coefficient: 4
Input the degree: 3
Input the coefficient: 4
Input the degree: 0
Input the coefficient: 3
Input the degree: 2
Input the coefficient: 0
+5x^{6}+4x^{3}+3x^{2}

実行して入力していくと最後に式が出るのですが↑の場合だと
最後の式の最後に+4がくるはずなのですがきませんでした^^;
414デフォルトの名無しさん:2008/12/09(火) 17:48:13
>>410
「どれだけ早く書けるか」の勝負みたいになってるからなあ。

ところで、
http://pc11.2ch.net/test/read.cgi/tech/1192485583/283
を書いたのはここのやつか?

あまり変なことするなよ。
415デフォルトの名無しさん:2008/12/09(火) 17:56:48
[1] 授業単元:C入門
[2] 問題文(含コード&リンク):次のような関数を作成しなさい。
●int even(int n) 整数nが偶数であれば1を、そうでなければ0 を返す。
●int odd(int n) 整数n が奇数であれば1を、そうでなければ0を返す。
(負の数に対して適切に動作するか確認すること)
更にこの二つの関数を利用したプログラム(main 関数)を自分で考え作成し、どのようなプログラムを考えたのか説明しなさい。
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語:C
[4] 期限:12/12

自分で考え…という形式は初めてで戸惑っています。
よろしくお願いします。
416デフォルトの名無しさん:2008/12/09(火) 18:04:52
>>414
まあ、自分に与えられた宿題をオープンなとこで丸投げすることのリスクぐらい学生も分かってるでしょ。
417デフォルトの名無しさん:2008/12/09(火) 18:07:48
>>415
/*
* 標準入力から整数を1つ読み込む。
* 読み込まれた整数が偶数か奇数かを
* 標準出力へ出力する。
*/
#include <stdio.h>

int odd(int n) { return (n % 2)? 1: 0; }
int even(int n) { return !odd(n); }

int main(void)
{
int n;
printf("input n >> "); scanf("%d", &n);
if (odd(n)) printf("%dは奇数です。\n", n);
if (even(n)) printf("%dは偶数です。\n", n);

return 0;
}
418デフォルトの名無しさん:2008/12/09(火) 18:15:21
>>417
早速ありがとうございます!
助かりました!
419デフォルトの名無しさん:2008/12/09(火) 18:43:21
分岐、剰余演算を排除した高速版

int even(int n) { return ~n & 1; }
int odd(int n) { return n & 1; }
420デフォルトの名無しさん:2008/12/09(火) 18:44:22
だれか>>187

ハードの仕様書はありません
421デフォルトの名無しさん:2008/12/09(火) 18:52:06
>>419
その程度のことはコンパイラに任せればいい
422デフォルトの名無しさん:2008/12/09(火) 18:55:03
>>413
同じ次数の項が入力されたらどうするん?
てか、スレ内の参照でもいいから元の問題貼れよ

>>420
いや、ライブラリの仕様ないと無理だから
423デフォルトの名無しさん:2008/12/09(火) 18:56:14
>>420
GPIBの取説にサンプルコードとか載ってないの?
424デフォルトの名無しさん:2008/12/09(火) 18:59:31
>>420
必修じゃないなら単位をとるのはあきらめよう
必修なら卒業するのはあきらめよう
425デフォルトの名無しさん:2008/12/09(火) 19:09:26
>>422
同じ次数のときは加算しないで先に入力したものから出力されればいいです
基は378です
426デフォルトの名無しさん:2008/12/09(火) 19:17:21
>>187以上の情報はありません
どなたかお願いします
427デフォルトの名無しさん:2008/12/09(火) 19:25:31
>>426
関数名だけじゃ、誰も答えられないよ。あきらめた方がいい。
428デフォルトの名無しさん:2008/12/09(火) 19:26:56
>>187の情報だけでできるってことは関係者だろうから
逆に怖くて使えないと思うが

このスレをチェックしてる教師もいるみたいだし
429デフォルトの名無しさん:2008/12/09(火) 19:31:01
他の言語でも言えるけど教師の違いでプログラムの飲み込みが大分変わるよね
430デフォルトの名無しさん:2008/12/09(火) 19:44:37
>>356=378=425として、
> 以前解答してもらったものなのですが
ということは、解答してもらう前の課題の原文がある筈だろ
つまり、その課題を示せと言っているんだよ

どうだ?これで伝わったか?


>>426
担当教官に質問しに行け。でなければ、単位はあきらめろ

答えそのものを教えてくれることはないだろうが、
君が理解できるように、あるいは単位を取れるように努力はしてくれるはずだ
431デフォルトの名無しさん:2008/12/09(火) 19:49:53
[1] 授業単元: プログラミング
[2] 問題文
 次のような構造体が宣言されている。

struct syouhin_data{
char name[20]; ←商品名
int tanka; ←単価
int kosuu; ←個数
long kingaku; ←金額
};
 また、初期値として次の値を与える。
・商品名:シャープペンシル
・単価 :500
・個数 :3
・金額 :0
単価×個数で金額を求め、メンバに代入し、構造体変数の各メンバの内容を表示する
プログラムを作成しなさい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VS 2005
 [3.3] 言語:C言語
[4] 期限:2008/12/17
よろしくお願いします。
432デフォルトの名無しさん:2008/12/09(火) 19:51:46
さすがに途中から騙りなんじゃないかとw
433187:2008/12/09(火) 19:54:08
なんとなくわかってきたw一人で何とかなりそう
ありがと!
434デフォルトの名無しさん:2008/12/09(火) 19:58:06
さっそくやるんじゃないwwwwwww
435デフォルトの名無しさん:2008/12/09(火) 19:58:26
めでたしめでたし
436デフォルトの名無しさん:2008/12/09(火) 19:59:51
>>430
原文は>>378にあるものでif-else文がないverです
437デフォルトの名無しさん:2008/12/09(火) 20:04:01
>>431
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct syouhin_data{
char name[20];
int tanka;
int kosuu;
long kingaku;
};

void calc_and_print_member(struct syouhin_data *d){
d->kingaku=d->tanka*d->kosuu;
printf("name:%s\ntanka:%d\nkosuu:%d\nkingaku:%d\n",
d->name,
d->tanka,
d->kosuu,
d->kingaku);
}

int main(){
syouhin_data d;
strcpy(d.name,"シャープペンシル");
d.tanka = 500;
d.kosuu = 3;
d.kingaku = 0;

calc_and_print_member(&d);
return 0;
}
438デフォルトの名無しさん:2008/12/09(火) 20:05:45
>>1にあるように気に入らない質問はスルーの方向で。
fluっぽいので寝よ
439デフォルトの名無しさん:2008/12/09(火) 20:13:59
>>436
if-else文を抜いたものが問題って。
ソースコードのみが問題として出題されて、それに対して勝手に何かを想像し、
if-else文を入れたソースコードが解答として作られたの?

そんなことないよね?
次数、係数を入力し、式を表示するようなプログラムを作れ、
とかそういう問題があるんじゃないの?と、>>430は言いたいんだと思うよ。

ここまで日本語が通じないなんてびっくりしたのでフォローしといた。
440デフォルトの名無しさん:2008/12/09(火) 20:28:44
[1] 授業単元: プログラミング演習
[2] 問題文
 次のようなデータに関して以下の計算を行い
(1)1次式を当てはめてその式を示す。同時に2条累積誤差Eを求める。
(2)2次式を当てはめて上と同じことを行う。
(3)3次式を当てはめて上と同じことを行う。
この結果に基づいて,最も良い近似式をあげる。

x -4 -3 -2 -1 0 1 2 3 4 5 6
y 13.4 7.2 2.7 1.2 0.6 3.1 6.9 12.5 20.8 31.7 44


フローチャートもお願いします。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 
[3.3] 言語:C言語
[4] 期限:2008/12/12
よろしくお願いします。
441デフォルトの名無しさん:2008/12/09(火) 20:31:38
>次数、係数を入力し、式を表示するようなプログラムを作れ
>>378にそれらしい文はあると思うのだが
それに気づかないなんてびっくりしたのでフォローした
442デフォルトの名無しさん:2008/12/09(火) 20:34:16
もうなにがなんだか
443デフォルトの名無しさん:2008/12/09(火) 20:39:09
>>441
///次数が大きいものから出力させるプログラム///
問題がこれだけってことはないだろwww
444デフォルトの名無しさん:2008/12/09(火) 20:42:11
あっと。
まさかそれだけだとびっくりするのでフォローした
445デフォルトの名無しさん:2008/12/09(火) 20:45:00
そもそも何で問題文をほしがってるかが分からないといえば分からないね
446デフォルトの名無しさん:2008/12/09(火) 20:47:42
>>445
・仕様がはっきりわからないと答えようがない
・後から「これはこうしてください」って付け加えるなら最初から全部教えろ
ってとこでしょ
447デフォルトの名無しさん:2008/12/09(火) 20:53:27
要求されてるのは次数に0を入力した場合にその項が出力されないバグを修正して欲しい、だよね?
448デフォルトの名無しさん:2008/12/09(火) 21:00:20
>>447
問題文がないとそれがバグだと言い切れないよね
449デフォルトの名無しさん:2008/12/09(火) 21:30:18
>>437
ありがとうございます。
450デフォルトの名無しさん:2008/12/09(火) 21:47:51
>>447
そういうことです^^;
451デフォルトの名無しさん:2008/12/09(火) 21:51:54
やはりよくわからないんで問題文ください
452デフォルトの名無しさん:2008/12/09(火) 22:14:37
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):次のことを行うプログラムを、for 文を用いて作成しなさい。
(1) 10 個の要素をもつ整数配列data を初期化して宣言する。
データの値を奇数のものと偶数のものに分け、それぞれ合計値、個数、平均値を出力するようにしなさい。
(2) (1)のプログラムで、奇数のデータが一つもない場合、どのような結果が出力されるか調べてみなさい。
(3) (2)の結果をふまえ、(1)のプログラムに次の改良を加えなさい。
奇数データの数、及び偶数データの数がそれぞれゼロの場合には、平均値を求めないようにしなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語:C言語
[4] 期限:なし
[5] その他の制限:なし

よろしくお願いします。
453デフォルトの名無しさん:2008/12/09(火) 22:33:49
>>452
#include <stdio.h>
int main(void)
{
int data[10] = {1,2,3,4,5,6,7,8,9,10}; //好きな数字を入れろ
int i, even_num = 0, odd_num = 0;
int even_sum = 0, odd_sum = 0;
double even_ave = 0, odd_ave;
for (i = 0;i < 10; i++) {
if (data[i] % 2 == 0) {
even_sum += data[i];
even_num++;
}
else {
odd_sum += data[i];
odd_num++;
}
}
/* (1) */
even_ave = (double)even_sum / even_num;
odd_ave = (double)odd_sum / odd_num;
/*
* (3)は↑2行の代わりにこれを使う
* if (even_num != 0) even_ave = (double)even_sum / even_num;
* if (odd_num != 0) odd_ave = (double)odd_sum / odd_num;
*/
printf("偶数:合計=%d 個数=%d個 平均=%lf\n", even_sum, even_num, even_ave);
printf("奇数:合計=%d 個数=%d個 平均=%lf\n", odd_sum, odd_num, odd_ave);
return 0;
}
454まめ:2008/12/09(火) 22:37:43
>>452
(1)
mainの中だけ、ダイアログなどに出力することは考慮せず。
変数の定義も追加してください。
int data[10]={10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
int odd_cnt = 0, odd_sum = 0, ev_cnt = 0, ev_sum = 0;
for( i = 0; i < 10; ++i )
{
if( data[i] % 2 == 0 )
{
odd_cnt++;
odd_sum += data[i];
}else{
ev_cnt = ++;
ev_sum += data[i];
}
}

printf( "ODD: Sum=%d, Num=%d, Avg=%d\n", odd_sum, odd_cnt, odd_sum/odd_cnt );
printf( "EVEN: SUM=%d, Num=%d, Avg=%d\n", ev_sum, ev_cnt, ev_sum/ev_cnt );

(2) data[10] の中身を、10, 20, 30, ・・・ とすると、
0 division で落ちると思います。

(3) printf の前に、if( ***_cnt != 0 ) とやって、odd_avg, ev_avg を求めるようにすればOK!
455デフォルトの名無しさん:2008/12/09(火) 22:52:48
>>454
どうでもいいが
EVEN 偶数
ODD 奇数
456デフォルトの名無しさん:2008/12/09(火) 23:00:31
>>450
答えを示されているのにまだこのスレに居座るつもり?
457まめ:2008/12/09(火) 23:06:28
>>455
あ、やっぱ?
辞書ひくのが、めんどかったのでそのまま書いてしまった
スマソ>452
458デフォルトの名無しさん:2008/12/09(火) 23:16:27
459デフォルトの名無しさん:2008/12/09(火) 23:23:13
>>457
これでイーブンね、とか、オッドアイとか、まあ、そういうカタカナで出てくる言葉を覚えておこう
460デフォルトの名無しさん:2008/12/09(火) 23:42:21
461デフォルトの名無しさん:2008/12/09(火) 23:46:34
[1] 授業単元:プログラミング応用演習
[2] 問題文:
  データベースのソート機能プログラム
   ・商品のデータ(名前と個数)を各項目で昇順・降順でソートできるようにする。
   ・まずどのフィールドでソートするか尋ねる文を表示し、
    入力されたら、次に表示を降順か昇順か選ばせる文を表示する。
    二つが入力されたら全フィールドでのソートを実行する。
   ・商品の名前はポインタ配列で宣言する。
   ・ソートにはバブルソートを用いる。
   ・個数の数値の入れ替えにはswap関数を用いる。
   (商品名(ポインタ配列)の入れ替えは外部関数でなくてもよい)
   ・文字列の比較には標準のstrcmp関数を使う。(昇順はA-Z、降順はZ-A)

     <商品名>   <個数>
     bread     199
     rice      74
     potate     33
     egg      284
     meat      131
         
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C言語
[4] 期限:12月15日(月)

どなたかお願いします><
462デフォルトの名無しさん:2008/12/09(火) 23:49:08
>>453-455、457
お二人共大変助かりました。
細かい解説までありがとうございます。
463デフォルトの名無しさん:2008/12/09(火) 23:56:42
>>461
構造体を使わない方がいいか?
問題見た限り使わないみたいなんだけどどうなの?
464デフォルトの名無しさん:2008/12/10(水) 00:17:01
【質問テンプレ】
[1] 授業単元:C言語入門

[2] 問題文(含コード&リンク):
(1)二つの整数をキーボードから入力する。これをm とn する。
m からn までの数(整数)をfor 文を使って順に出力し、最後に合計値を出力してください。
(m≦n であることを仮定してよい)
(2)(1)のプログラムを発展させ、次のことを行うプログラムを作成しなさい。
(1)ではm≦nであることを仮定していたが、m>n のときにも適切に合計値を求められるようにしなさい。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6
 [3.3] 言語:C言語
[4] 期限:12月11日24時
[5] その他の制限:特にありません

良ければよろしくお願いします。
465461:2008/12/10(水) 00:24:04
>>463 構造体は使いません!!どうもすみません!!
466デフォルトの名無しさん:2008/12/10(水) 00:34:25
>>413
等号入れてみ
if (pwork->next->degree_of_x <
pmx->degree_of_x) {

if (pwork->next->degree_of_x <=
pmx->degree_of_x) {
467デフォルトの名無しさん:2008/12/10(水) 01:37:30
>>464
(1)
#include <stdio.h>
int main()
{
int i, m, n, sum = 0;
scanf("%d %d", &m, &n);
for(i = m; i <= n; i++){
printf("%d\n", i);
sum += i;
}
printf("合計:%d\n", sum);
return 0;
}
468デフォルトの名無しさん:2008/12/10(水) 01:39:04
>>464
(2)
#include <stdio.h>
int main()
{
int i, m, n, sum = 0;
scanf("%d %d", &m, &n);
if(m > n){
i = n;
n = m;
m = i;
}
for(i = m; i <= n; i++){
printf("%d\n", i);
sum += i;
}
printf("合計:%d\n", sum);
}
469デフォルトの名無しさん:2008/12/10(水) 02:02:26
>>467-468
迅速な回答本当に助かりました。
ありがとうございます。
470デフォルトの名無しさん:2008/12/10(水) 09:08:13
[1] 授業単元:プログラミング演習 C言語の基礎
[2] 問題文(含コード&リンク):
以下の表の4つの出データを読み込み、【出力データの形式】で表示させるプログラムを作成してください。
その際、入力データは input.txt というファイルで作成したものを読み込み、結果は output.txt
というファイルに出力してください。
【入力データ】     【質問テンプレ】
整数の1024  →   16進数で表示
実数の5.12345 →  小数点第2位まで表示
文字のA     →  そのままAと表示させる
文字列のABCDE → そのままABCDEと表示させる
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 12/10本日
[5] その他の制限: input.txt output.txtは最初からディレクトリに作ってよいものとする
さらにinput.txtの中に入力データを最初から書いていいものとする
リダイレクトを使うらしいです。printfとscanfをダラダラと書いていくと教授が言っていたような気がします

よろしくおねがいします
471デフォルトの名無しさん:2008/12/10(水) 09:21:27
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
 整数aにキーから値を入力し、1+2+3+・・+aの
 計算を行うプログラムを作りなさい。
 但し、aは1より大きい値とする。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限: 12/10
[5] その他の制限: 特にないと思います。

簡単そうに見えてさっぱりです。よろしくお願いいたします。
472デフォルトの名無しさん:2008/12/10(水) 09:39:27
>>471
#include <stdio.h>
int main(void)
{
int a, i;
printf("input a >> "); scanf("%d", &a);
for (i = 1; i < a; i++) a += i;
printf("%d\n", a);
return 0;
}
473デフォルトの名無しさん:2008/12/10(水) 09:40:38
>>471
#include <stdio.h>

int main(void)
{
int a,sum;

printf("整数を入力:");
scanf("%d",&a);

sum = a*(a+1)/2;

printf("ans = %d",sum);

return 0;
}
474デフォルトの名無しさん:2008/12/10(水) 09:48:56
>>470
#include <stdio.h>
#include <stdlib.h>
#define N 16
int main(void)
{
char buff[N];
printf("%X\n", atoi(fgets(buff, N, stdin)));
printf("%.2f\n", strtod(fgets(buff, N, stdin), NULL));
printf("%c\n", *fgets(buff, N, stdin));
printf("%s\n", fgets(buff, N, stdin));
return 0;
}
475デフォルトの名無しさん:2008/12/10(水) 09:53:52
1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  入力した数字を関数(atoiなど)を使用せず、2進数に基数変換するプログラム
  を作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual stdio 2005
 [3.3] 言語:C言語
[4] 期限: 12/10
[5] その他の制限:特にありません

ご協力よろしくお願いします
476デフォルトの名無しさん:2008/12/10(水) 09:54:11
>>474
ありがとうございました
ちょっと自分には難しいですが勉強してみます
477デフォルトの名無しさん:2008/12/10(水) 09:56:41
>>472,473
ありがとうございました、これを参考にして提出します!
非常に感謝です。
478デフォルトの名無しさん:2008/12/10(水) 10:05:33
>>475
#include <stdio.h>

int main(void){
int i, j, k = 0;
int l[100];
printf("10進数を入力:");
scanf("%d", &i);
while(i > 0){
j = i % 2;
i /= 2;
l[k] = j;
k++;
}
for(i = k - 1; i >= 0; i--) printf("%d", l[i]);
putchar('\n');
return 0;
}
479475:2008/12/10(水) 10:14:11
>>478
すばやい回答ありがとうございます。
これを参考に、プログラミングをがんばっていきたいと思います。
480デフォルトの名無しさん:2008/12/10(水) 11:31:32
メモ1に



















とこのような感じで0と1が何千行と出されているのですがメモの上から順番にforで回して
1が出た場合その行数とそこから1がどれだけ続いたかカウントしていくプログラムを作成したいのですが
どういったようにつくっていけばよいのでしょうか?

使用しているのはc++builder5です。
481デフォルトの名無しさん:2008/12/10(水) 11:35:28
>>480
>>1をよく読んでから質問しよう
482デフォルトの名無しさん:2008/12/10(水) 11:45:20
>>480
考え方だけ
カウントした結果をどうしたいのかが示されていないので、とりあえず標準出力に表示するものと仮定

int n, cnt =0;
1.データを1行ずつ読む
fscanf(fp, "%d", &n)

2.データの判定と表示
n != 0 なら cnt++
n == 0 かつ cnt != 0 なら cnt の値を表示の後 cnt = 0
483デフォルトの名無しさん:2008/12/10(水) 12:16:10
>>440
こちらの問題をどなたかお願いします。
484デフォルトの名無しさん:2008/12/10(水) 12:16:56
>>483
この問題文で理解できる人がいるとおもってるの?
485デフォルトの名無しさん:2008/12/10(水) 12:29:45
>>484
まぁ、単なる回帰直線・曲線を求める問題でしょ。

>>440 ここはプログラミングの板なので、問題に関係する式が分かってるなら
示すべきだし、分かってないなら他にあたるべきだね。
486デフォルトの名無しさん:2008/12/10(水) 12:47:09
自分はプログラムとかやんないけど質問に来ました。

計算の途中で循環小数が出てくると誤差が生じると思うんだけど、
プログラムを組む上で注意したりするもんですか?
487デフォルトの名無しさん:2008/12/10(水) 12:54:39
すいませんどなたか>>344をお願いします・・・
488デフォルトの名無しさん:2008/12/10(水) 12:57:29
>>486
誤差を無くしたかったらdouble型などをそのまま使わずに各桁の数値をint型などで記憶すれば
小数点以下100桁の精度でとか10000桁の精度でとかもできる。

あとスレ違い
489デフォルトの名無しさん:2008/12/10(水) 13:24:41
#include <stdio.h>
int main(void) {
int i;
double d;
d = 0.0;
for(i = 0; i < 10; i++) d += 0.1;
printf("%lg, %d\n", d, d == 1.0);
return 0;
}
490デフォルトの名無しさん:2008/12/10(水) 13:27:34
>>344
1 は途中までやってあるみたいだから 2だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8270.txt
}
491デフォルトの名無しさん:2008/12/10(水) 13:39:38
>>344
1 は、ライブラリ関数を使った >>353 がうまく動かないみたいだけど、Wiki にも解答例あるから、
カレンダー部分はそこを参考に。
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *fp;
int y, m;
if(argc < 4){
printf("usage: calendar file year month\n");
return 1;
}
fp = fopen(argv[1], "w");
if(fp == NULL){
printf("cannot open %s\n", argv[1]);
return 1;
}
y = atoi(argv[2]);
m = atoi(argv[3]);

/* あとは http://www23.atwiki.jp/homework/pages/11.html#id_6dea417e を参考に
初めの printf, scanf, printf, scanf を取り除いたらほぼそのまま使える */
/* ただし "printf(" を "fprintf(fp," におきかえ */
return 0;
}
492344:2008/12/10(水) 13:51:25
>>490
>>491
どうもありがとうございます。本当に助かりました・・・。
あとはWikiをみながらカレンダー部分を仕上げます。
ありがとうございました。
493デフォルトの名無しさん:2008/12/10(水) 14:20:05
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8272.c
[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月11日まで
[5] その他の制限:
・根ノードのデータを取り出す(優先度の最も高いデータは根ノードにある)
・ヒープの末尾のデータを根ノードに移し、ヒープのサイズを1 減らす
・N を根ノードのノード番号とする
・「N に子ノードが存在する」間、以下を繰り返す
- N の子ノードのうち、優先順位の高いノード番号をC とする
- もし、「N の優先度< C の優先度」ならN とC のデータ(優先度など)を入れ替える
? そうでないならループ終了
? C を改めてN とする
・(取り出したデータを返す。) 
※「N に子ノードが存在する」場合でも、子ノードが1 つのときと2 つのときがある
ことに注意。

この手順でL55からのint deletemax をいじって欲しいです。お願いします。
494デフォルトの名無しさん:2008/12/10(水) 15:36:36
[1] 授業単元:
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8273.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Windows(cygwin)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 12月16日
[5] その他の制限: とくになし

問題文見にくいです(TдT)できたらよろしくお願いします。
495デフォルトの名無しさん:2008/12/10(水) 17:01:54
[1] 授業単元: プログラミング基礎演習
[2] 問題文(含コード&リンク):
分数の約分、加算、除算、乗算を計算するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:約分ではユークリッドの互除法を用いる

お願いします

496デフォルトの名無しさん:2008/12/10(水) 18:08:43
>>495
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8274.txt
変数がカッコ悪いからそこは適当に変えてくれ
497デフォルトの名無しさん:2008/12/10(水) 18:21:25
名簿管理プログラム


・データの一覧表示
・キーボードからのデータ追加
・名前によるデータ検索
・学生番号によるデータの整列(昇順)
・ファイルからデータ入力
・ファイルへデータ出力

ただし単方向の直結リストを使わなければならない。

教えてください。。
498デフォルトの名無しさん:2008/12/10(水) 18:25:27
499デフォルトの名無しさん:2008/12/10(水) 18:47:16
自己解決しました
500デフォルトの名無しさん:2008/12/10(水) 20:00:06
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
(A) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8275.txt
(B) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8276.txt
[3] 環境
 [3.1] OS: Windowsxp
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: C
[4] 期限: 12月18日
↑のアドレスにそれぞれの手順に沿って2問よろしくおねがいします
501デフォルトの名無しさん:2008/12/10(水) 20:15:52
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク): 4 桁以上の正の整数を読み込んだとき,その整数の,
1 の位の値
10 の位の値
100 の位の値
の3 つの値を出力するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語:C

プログラムの部分と1の位まではできたのですが、
10の位と100の位の出し方がわかりません。
少々スレ違いかもしれませんが、よろしくお願いします。
502デフォルトの名無しさん:2008/12/10(水) 20:19:06
>>501
(n/10)%10
(n/100)%10
503デフォルトの名無しさん:2008/12/10(水) 20:36:06
数字を何個か入力して
最大の数字を表示するプログラムを教えてください
504RUB:2008/12/10(水) 21:09:44
[1] 授業単元: ソフトウェア演習
[2] 問題文(含コード&リンク): 名簿管理プログラムをC言語より作成する
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Eclipse3.3
 [3.3] 言語: C
[4] 期限:12月20日
[5] その他の制限: 必要機能・・・データの一覧表示、キーボードからのデータ追加
               名前によるデータ検索、学生番号によるデータ整列(昇順)
               ファイルからのデータ入力、ファイルへデータ出力
名簿データ構造・・・個人ID(int型)
        名前(半角英字のみ、29文字以下)教授いわくこれは簡単にしてあるらしい。
  
注意として実装時には単方向連結リストをしようしなければならない。。

難しすぎます・・・
505デフォルトの名無しさん:2008/12/10(水) 21:15:10
>>502
なるほど!ありがとうございます!
506デフォルトの名無しさん:2008/12/10(水) 21:17:39
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): P5形式のPGMファイルを読み込み,隣接画素間の
               相関を求め、CSV形式で出力せよ。
               (こんな感じの問題でした)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 12月11日(今日の宿題で明日提出です)
[5] その他の制限: 特になし

PGMファイルが手元にないのでアップすることが出来ないのですが,調べてみたら
このファイルは画像符号化でよく用いられているテスト画像のようです
(airplaneという画像)。画像を読み込むところまでは出来たのですが、
相関の求め方(自己相関関数だと思います)とCSVでの出力の仕方がわかりません。
どなたかご教授お願いいたします。
507デフォルトの名無しさん:2008/12/10(水) 21:19:26
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
一つの整数をキーボードから入力する。これをn とする。
続いてn 個の整数をキーボードから入力する。
「奇数番目に入力した数の合計と平均」及び「偶数番目に入力した数の合系と平均」、
さらにどちらが大きいかを出力しなさい。
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン: VisualC++6.0
 [3.3] 言語:C言語
[4] 期限:12/12
[5] その他の制限:特にありませんが、習い始めたばかりです

よろしくお願い致します。
508デフォルトの名無しさん:2008/12/10(水) 22:06:41
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):midiファイルを取り込んで再生するプロジェクタを
完成させよ
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名; VisualC ++6.0
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 12/13
[5] その他の制限:習い始めで全然わかりません・・・

どなたかよろしければよろしくお願いします。
509デフォルトの名無しさん:2008/12/10(水) 22:11:26
>>502
どなたか助けていただけないでしょうか?
画像の読み込み(たて:512 よこ:512)は出来たのですが、
そこから先に進みません。
以前の説明に大事なことを書き忘れたのですが256階調のモノクロ静止画です。
510デフォルトの名無しさん:2008/12/10(水) 22:13:03
>>509

ごめんなさい、>>507の誤りです
511デフォルトの名無しさん:2008/12/10(水) 22:20:01
>>508
プロジェクタって何?
512デフォルトの名無しさん:2008/12/10(水) 22:20:39
プロジェクトの勘違いか?
513デフォルトの名無しさん:2008/12/10(水) 22:21:57
だとするとVC6のプロジェクト形式じゃないとだめなのか・・・
514デフォルトの名無しさん:2008/12/10(水) 22:30:33
すいません、VC6のプロジェクトです
プロジェクト形式でお願いします。
MFCを使ってもOKです
515デフォルトの名無しさん:2008/12/10(水) 22:52:59
[1] 授業単元: C/C++
[2] 問題文(含コード&リンク): 森林火災プログラム
最初に季節(春・夏・秋・冬)を入力させ 次に天気(晴れ・曇り・雨)を入力させる。
その季節・天気によって燃え移る確率を変化させる。
 
セルを 無事な木、燃えている木、燃え尽きた木の3種類でつくり 
燃えている木の隣接に無事な木がいたら(乱数+(季節・天気)を使って)燃え移るか燃え移らないか判断
それを燃えている木がなくなるまで繰り返す。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語: C/C++/どちらでも可
[4] 期限:できれば12/12(金)中までに・・・
[5] その他の制限: 締め切りが近いのですが難しくて思うように進みません。
         もしやってくださる方がいたらお願いします。。。
516デフォルトの名無しさん:2008/12/10(水) 23:00:03
>>509
本当のアンカーは>>506
途中までできたんだったら、うpしてみないか?
517デフォルトの名無しさん:2008/12/10(水) 23:00:31
>>507ですが、期限があと1時間に迫っているので誰かお願いできないでしょうか…
すみません
518515:2008/12/10(水) 23:01:28
書き忘れてましたができれば
無事な木   =緑
燃えている木 =赤
燃え尽きた木 =黒
と色分けしていただけるとありがたいです。
519デフォルトの名無しさん:2008/12/10(水) 23:03:49
520デフォルトの名無しさん:2008/12/10(水) 23:09:19
>>507 いちおう焼きなおしといた
#include <stdio.h>
int main()
{
int i, n, k, odd_n = 0, odd_sum = 0, even_n = 0, even_sum = 0;
printf("n:");
scanf("%d", &n);
if(n > 255)
n = 255;
for(i = 0; i < n; i++){
printf("integer:");
scanf("%d", &k);
if(i % 2 == 0){
even_sum += k;
even_n++;
} else {
odd_sum += k;
odd_n++;
}
}
printf("even sum:%d average:%f\n", even_sum, even_sum/(double) even_n);
printf("odd sum:%d average:%f\n", odd_sum, odd_sum/(double) odd_n);
if(even_sum > odd_sum)
printf("even sum is larger\n");
else if(even_sum < odd_sum)
printf("odd sum is larger\n");
else
printf("odd sum is equal to even sum\n");
return 0;
}
521デフォルトの名無しさん:2008/12/10(水) 23:10:38
522デフォルトの名無しさん:2008/12/10(水) 23:14:33
>>518
いつ燃え尽きるんだ
523デフォルトの名無しさん:2008/12/10(水) 23:20:51
燃えている木が縦横に4つ以上つながったら燃え尽きます。
524515:2008/12/10(水) 23:25:49
>>522
無事→燃え移る→燃え尽きる なので
1回更新する毎に 
燃えている木の隣接にある無事な木が燃え 
いま燃えていた木は燃え尽きる としていんですが・・・

曖昧ですみません><
525デフォルトの名無しさん:2008/12/10(水) 23:39:15
[1] 授業単元:C
[2] 問題文(含コード&リンク):
 氏名、年齢、身長、体重をメンバとする構造体をヘッダファイル(下記リンクに記載)に宣言する。
 データファイル(data.dat、これも下記リンクに記載)中の氏名、年齢、身長、体重データを読み込み、
 年齢、身長、体重の平均を求め、データファイルの中身と一緒に出力するプログラムを作成せよ。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日までです…
[5] その他の制限:実行にはリダイレクト処理を用いる。


プログラムを作成し、リダイレクト処理で実行したのですが、止まってしまいます。
どなたか、添削をお願いします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8278.txt
526デフォルトの名無しさん:2008/12/11(木) 00:02:30
>>525
/* ---- data.h ---- */
#define M 16
typedef struct {
char name[M]; /* 文字列なんだからcharの「配列」で */
int age;
double height;
double weight;
} keisoku;
/* ---- プログラム ---- */
#include <stdio.h>
#include "data.h" /* 「homework09.h」ってなんすか? */
#define N 10
int main(){
keisoku k[N];
int i, asum = 0;
double hsum = 0, wsum = 0;

for(i = 0; i < 7; i++){
/* 「&」を忘れんな。あとdoubleなら「%lf」 */
scanf("%s %d %lf %lf\n", &k[i].name, &k[i].age, &k[i].height, &k[i].weight);
asum += k[i].age;
hsum += k[i].height;
wsum += k[i].weight;
}

for(i = 0; i < 7; i++){
printf("%10s %4d %lf %lf\n", k[i].name, k[i].age, k[i].height, k[i].weight);
}
printf("\nAverage age : %d\nAverage height : %lf\nAverage weight : %lf\n", (asum / i), (hsum / i), (wsum / i));
return 0;
}
527デフォルトの名無しさん:2008/12/11(木) 00:06:36
やっちまったなぁ、おい。穴はないのか。それ、自販機だし。
528デフォルトの名無しさん:2008/12/11(木) 00:06:46
>>526
printfは%fのままでいいだろ
まぁc99ではありだが

と思ったら元でもlfなのなw
529デフォルトの名無しさん:2008/12/11(木) 00:14:54
>>516

画像を読み込むところはこんな感じで書きました。
構造体を使っているところは他で定義してあります。
(ここは以前の授業の使いまわしなので問題ないと思います)

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

ここまでしかわかっていませんのでどなたか助けてください
530デフォルトの名無しさん:2008/12/11(木) 00:15:53
>>526
完璧に実行できました、ありがとうですm(_ _)m

homework09.datは、宿題で示されたファイル名です。
投稿にあたってデータファイル名を変えたんですが、訂正し忘れました…やっちまったなぁorz

あと、生意気ですが、scanfのk[i].nameには&はいらないのでは?
531デフォルトの名無しさん:2008/12/11(木) 00:23:24
>>528
それは直そうと思ったけどまあいいかなとw

>>530
>scanfのk[i].nameには&はいらないのでは?
失礼。おっしゃるとおり。
ただ k[i].nameも&k[i].nameもアドレスは同じだから動くことは動くんだよね。
532デフォルトの名無しさん:2008/12/11(木) 00:25:39
>>515
欠けている条件
・季節と天気による確率変化のテーブル
・乱数の範囲
・木の初期配置と状態
533デフォルトの名無しさん:2008/12/11(木) 00:27:20
>>531
こちらこそ失礼しました。

また質問に来ることがあると思いますので、その際はまたよろしくお願いします。
534デフォルトの名無しさん:2008/12/11(木) 00:43:32
[1] 授業単元:情報理論2
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8280.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC 2006
 [3.3] 言語:どちらでも可
[4] 期限:2008年12月15日
[5] その他の制限:特に無し

できたらよろしくお願いします。
535デフォルトの名無しさん:2008/12/11(木) 01:11:46
>>525,530,533北大乙
536デフォルトの名無しさん:2008/12/11(木) 01:16:09
とりあえず、メールしといた
担当に
537515:2008/12/11(木) 01:18:08
>>532
木の初期配置もできれば乱数を使ってランダムに 
状態は1箇所だけ燃えている状態 残りは無事な状態でお願いします。

確率変化は 春だと+10% 夏+20% 秋+30% 冬-10%
      晴れ +30% 曇り+10% 雨-20%
という感じで(%は目安なので細かくやらなくても大丈夫です。

乱数はそちらのやり易いように使ってもらって大丈夫です。

木の初期配置もできれば乱数を使って配置(木の密集率も入力かも 
状態は最初1箇所だけ燃えている状態 残りは無事な状態 でお願いします。

注文&書き忘れが多くてすみません。。。
538デフォルトの名無しさん:2008/12/11(木) 01:20:53
[1] 授業単元:C
[2] 問題文(含コード&リンク):
 時,分,秒の3つのデータをメンバにした構造体timeをtypedefによって
宣言せよ。キーボードから2つの時刻を入力して,それら時刻の差を求め,表
示するプログラムを構造体timeを利用して作成せよ。
 ただし,構造体の定義を含むヘッダファイルmytime.hを作成し,そのヘッ
ダファイルをプログラムにインクルードすること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日10:30
[5] その他の制限:ぉ〜ん
539デフォルトの名無しさん:2008/12/11(木) 01:41:46
>>521
ありがとうございます!!
540デフォルトの名無しさん:2008/12/11(木) 02:05:52
541デフォルトの名無しさん:2008/12/11(木) 02:57:01
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):
色々な整数値a,bに対して、tを媒介変数として、座標が
x=cos(2*π*a*t)
y=sin(2*π*b*t)
で表される曲線(リサジュー)を描くlisajous関数を作成しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc?
 [3.3] 言語:C
[4] 期限: 12月11日
[5] その他の制限:基礎的なことしかまだ習っていません。
図形を描くために用いる座標値を計算するプログラミングは習いました。
(a=10,b=12のときの場合)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8283.txt
これに任意の整数値a,bに対して成り立つという条件を加え、
「図形を描くという処理」を行いたいです。
よろしくお願いします。
542 ◆sUfWYz9MSA :2008/12/11(木) 03:00:46
[1]授業単元:C言語
[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8282.txt
[3]環境
[3.1]OS:windows vista
[3.2]コンパイラ名:gcc
[3.3]言語:C
[4]期限:2008年12月14日までに教えていただけると助かります。
[5]特にありません。
543デフォルトの名無しさん:2008/12/11(木) 03:14:52
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・度数法で角度を入力しsin,cosを計算するプログラムを作成
  ・180°=πrad, 360° =2πrad
  ・入力された角度(°)をrad(ラジアン)に変換
  ・π=3.1415926として計算

実行例
x(°)=0↓
sin(x)=0.000, cos(x)=1.000

x(°)=90↓
sin(x)=1.000, cos(x)=0.000

x(°)=180↓
sin(x)=0.000, cos(x)=-1.000

[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年12月14日(日)まで。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
             逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
            配列の初期化、2次元配列、文字コード、文字データ(char型)
            getchar、putchar、関数、ライブラリ関数、実数のフォーマット指定は習いました。
お願いします。
544デフォルトの名無しさん:2008/12/11(木) 03:32:40
むずいっすね
545デフォルトの名無しさん:2008/12/11(木) 03:34:05
>>543
math.hの
sin() は使っていいのか?
ラジアンへの変換だけみたいだから使っていいともとれるんだが
546RYB:2008/12/11(木) 03:37:18
[1] 授業単元: ソフトウェア演習
[2] 問題文(含コード&リンク): 名簿管理プログラムをC言語より作成する
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Eclipse3.3
 [3.3] 言語: C
[4] 期限:12月20日
[5] その他の制限: 必要機能・・・データの一覧表示、キーボードからのデータ追加
               名前によるデータ検索、学生番号によるデータ整列(昇順)
               ファイルからのデータ入力、ファイルへデータ出力
名簿データ構造・・・個人ID(int型)
        名前(半角英字のみ、29文字以下)教授いわくこれは簡単にしてあるらしい。
  
注意として実装時には単方向連結リストをしようしなければならない。。

難しすぎます・・・
547デフォルトの名無しさん:2008/12/11(木) 04:37:57
>>494
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8284.txt

こんなもんかね
一応、状態集合0..254、入力アルファベット0..127に対応(ただし、入力できればの話だが)
第2引数に1以上の値を指定すると詳細表示モードになるおまけ付き

あと、うpしてから気付いたけど、

dfa = DFA_load(argv[1]);

この行の後に

if(!dfa) return 0;

これを入れた方がいいかも
548デフォルトの名無しさん:2008/12/11(木) 04:41:40
[1] 授業単元: C言語
[2] 問題文
コマンドライン引数で指定したファイルからテキストを読み込み、
中央揃えで画面に表示する。ただし1行は80文字とする。
[3] 環境
 [3.1] OS: Windowsxp
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: C
[4] 期限: 12月11日

中央揃えの仕方や1行を80文字にする方法がよくわかりません。
よろしくお願いします。
549デフォルトの名無しさん:2008/12/11(木) 05:06:39
1] 授業単元:C言語
[2] 問題文:
図のようなヒストグラムがある.
ヒストグラムとは,縦軸に度数,横軸に階級をとった統計グラフの一種で,データの分布状況を視覚的に認識するために用いられる.
図のヒストグラムでは,0-9が5,10-19が3,20-29と30-39がそれぞれ1の度数を取っている.\\
ここで,このヒストグラムを自動で作成するプログラムを作ったとしよう.
このヒストグラム自動生成プログラムは,入力値により最大の度数は異なるが,
表示される最大のバーの高さは入力の最大値によらず常に同じになる.
幅も固定長であるが,幅の間隔(図だと10)は最初に指定することができる.
各バーはグレイカラーで塗られて表示される.一番左のバーは黒,一番右のバーは白になり,その間のバーの色は等間隔で暗さが減っていくものとする.
(図の例だと,暗さレベルは左から1, 2/3, 1/3, 0となる.)
この自動作成プログラムが出力するヒストグラムを印刷した際に,使用するインクの量を計算するプログラムを作りなさい.
入力は以下のように与えられる.
n w
v1
v2

vn
nは入力データの総数を表す.
wはヒストグラムのバーの幅を表す.
v1からvnはn個の各データを表す.
各値の取り得る範囲は以下のように決めてよい.
1 <= n <= 100
10 <= w <= 50
550デフォルトの名無しさん:2008/12/11(木) 05:08:40
0 <= vi <= 100 (1 <= i <= n)
1ユニットのインクが,もっとも高い1個のバーを黒くするのに必要であると考える.
また,1ヒストグラムあたり0.01ユニットのインクが線や文字など,バーを塗ること以外の様々な用途で消費されると仮定する.
例えば図のヒストグラムを印刷する際に消費されるインクの量は以下の通りである.
1x1 + 2/3 x 3/5 + 1/3 x 1/5 + 0 x 1/5 + 0.01
= 1 + 2/5 + 1/15 + 0.01
= 1.476666.... ユニット
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VS
 [3.3] 言語: C
[4] 期限:12/11
551デフォルトの名無しさん:2008/12/11(木) 07:01:55
>>548
取りあえず、センタリングだけ

// s: 出力する文字列 (80文字以下)
printf("%*s\n", (80 + strlen(s)) / 2, s);
552デフォルトの名無しさん:2008/12/11(木) 09:03:37
>>500できる人お願いします
553デフォルトの名無しさん:2008/12/11(木) 10:46:07
>>500
(A)から
include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
FILE *infp, *outfp;
int ch;
if ( argv[1] == 0 || argv[2] == 0 ){ /* コマンドラインからの入力が正しいか */
printf("There is no FILE NAME. \n");
exit(1);
}
if ( (infp = fopen(argv[1], "r")) == NULL ) {
printf("INPUT FILE OPEN error. \n");
} else {
if ( (outfp = fopen(argv[2], "w")) == NULL ) {
printf("OUTPUT FILE OPEN error. \n");
} else { /* 入力・出力ファイルの条件が整ったので,コピー作業を行う */
while( (ch = fgetc(infp)) != EOF ){
if( ch >= 'a' && ch <= 'z' ){
ch -= 'a';
ch += 'A';
}
fprintf( outfp, "%c", ch );
}
fclose(outfp);
}
fclose(infp);
}
return 0;
}
554デフォルトの名無しさん:2008/12/11(木) 11:11:02
>>500
次(B)
#include <stdio.h>
#include <stdlib.h>
int CharCount(FILE *filename, int key){int ch;int count=0;while( (ch = fgetc( filename )) != EOF ){if( ch == key ){count++;}}return count; }
int main( int argc, char *argv[] )
{
FILE *infp, *outfp;
int moji;
if ( argv[1] == 0 || argv[2] == 0 ){ /* コマンドラインからの入力が正しいか */
printf("There is no FILE NAME. \n");
exit(1);
}
if ( (infp = fopen(argv[1], "r")) == NULL) {
printf("INPUT FILE OPEN error. \n");
} else {
if ( (outfp = fopen(argv[2], "w")) == NULL ) {
printf("OUTPUT FILE OPEN error. \n");
} else {
printf("Input search character: ");
moji = getchar();
fprintf( outfp, "%c: %d\n", moji, CharCount(infp, moji));
fclose(outfp);
}
fclose(infp);
}
return 0;
}
555デフォルトの名無しさん:2008/12/11(木) 12:01:10
>>543
#include <stdio.h>
#include <math.h>

int main(void){
int x;
double y, a, b;
printf("x(°)=");
scanf("%d", &x);
y = (double)x / 180 * M_PI;
a = sin(y);
b = cos(y);
printf("sin(x)=%f,cos(x)=%f\n", a, b);
return 0;
}
556デフォルトの名無しさん:2008/12/11(木) 12:29:59
>>548できればお願いします
557デフォルトの名無しさん:2008/12/11(木) 12:31:18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
すべての点の構造体を作成し、それらのポインタを手動でつなぎ合わせて2分探索木を作成せよ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 夕方までに教えていただけると助かります。
[5] その他の制限: print_bstはnode型構造体を持つ引数treeを始点とする
2分探索木の構造を画面に表示する。

node型の構造体をprint_bstに送るところまで出来れば良いのですが、
コンパイル時に
error : invalid type argument of '->'
というエラーが出て進みません。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8285.txt
558デフォルトの名無しさん:2008/12/11(木) 12:46:45
[1] 授業単元:プログラミング
[2] char型の配列に初期設定された文字列内を検索し、指定された文字列パターンに合致する全ての箇所を見付ける。検索する文字列のパターンは標準入力から読み込む。
検索はテキストの先頭から最後まで行い、パターンに合致する全ての箇所についてその位置(テキストのオフセット)を標準出力に表示する。
最後に、見付かった箇所数を表示する(0なら見付からなかったことを示す)。
char型の配列に初期設定で代入する文字列定数は次のものである。
"The only way to learn a programming language is by writing programs in it."
このプログラムを実現する際に、次の関数を定義し、main関数でそれを利用すること。
・int search(char pattern[], char text[])
第2引数で与えた文字列内の、第1引数で与えた文字列パターンと合致する全ての箇所を見付ける。見付けるたびに次のメッセージを標準出力に表示する。
Found pattern at <位置><改行>
戻り値として見付かった箇所の数を返す。なお、この関数を実現する際に、次の2つの関数を利用すること。
int length(char s[])
int match(char pattern[], char string[], int index)
見付かった箇所数の指示はmain関数で行うこと。

パターンとして"program"を指定した場合の実行結果の模範例を示す。
$./a.out
Text: The only way to learn a programming language is by writing programs in it.
Enter pattern: program
Found pattern at 24
Found pattern at 59
There are 2 matches.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年12月11日20:00まで
[5] その他の制限: while とか if を使ってほしいです。
よろしくお願いします。
559デフォルトの名無しさん:2008/12/11(木) 12:50:31
>>558
The only way to learn a programming language is by writing programs in it.
560デフォルトの名無しさん:2008/12/11(木) 12:51:54
                      クルッ
.                     ハ,,ハ    ミ  _ ドスッ
.                    ( ゚ω゚ )彡―─┴┴─―
    *  *  *  \       /   つ  お断りし /      ハ,,ハ
  *          *   \   〜′ /´ └―─┬/       ( ゚ω゚ ) お断りします
 *    ハ,,ハ     *   \   ∪ ∪      /        /    \
 *   ( ゚ω゚ )    *     .\         /       ((⊂  )   ノ\つ))
 * お断りします  *     . \∧∧∧∧/             (_⌒ヽ
  *           *       <      お >            ヽ ヘ }
    *  *  *        < の し 断 >       ε≡Ξ ノノ `J
────────────< 予 ま わ >────────────
.        オコトワリ      < 感 す り >
  ハ,,ハ    ハ,,ハ     .ハ,,ハ  <. !!      >     ハ,,ハ
. .( ゚ω゚ ) . ( ゚ω゚ )  ( ゚ω゚ )  /∨∨∨∨\   ( ゚ω゚ )<お断り    .ハ,,ハ
   │      │      │   /          .\         します>( ゚ω゚ )
,(\│/)(\│/)(\│ /.              \
               /   ♪お断りします♪  \
              / ハ,,ハ   ハ,,ハ   .ハ,,ハ   ハ,,ハ\
.              ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ )
561デフォルトの名無しさん:2008/12/11(木) 12:55:43
>>556
コンソールのサイズを変えろというわけではなく、80文字前提で作ればいいと思うから
そこは気にしなくていいと思う。
センタリングは誰か書いてる
562デフォルトの名無しさん:2008/12/11(木) 12:56:35
>>558
The only way to learn a programming language is by writing programs in it.
563デフォルトの名無しさん:2008/12/11(木) 13:01:14
>>558
お断りします。自分でがんばってね。
564デフォルトの名無しさん:2008/12/11(木) 13:06:16
しかし出題者も上手い事考えたな
565デフォルトの名無しさん:2008/12/11(木) 13:27:05
見落としてました
>>551さん>>561さんありがとうございます
566デフォルトの名無しさん:2008/12/11(木) 13:29:10

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8286.txt

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年12月12日23:59
[5] その他の制限:

よろしくお願いします
567デフォルトの名無しさん:2008/12/11(木) 13:39:53
>>557
tree[18].left=&tree[9];
tree[18].right=&tree[22];
tree[9].left=&tree[3];
tree[9].right=&tree[11];
tree[22].left=&tree[19];
tree[22].right=&tree[24];
568RYB:2008/12/11(木) 16:09:05
>>546できるかたいますか??
569デフォルトの名無しさん:2008/12/11(木) 16:17:03
>>568
ファイルの書式を指定しないと、誰も手を付けてくれないと思うよ。
カンマ区切りのテキストファイルでいいの?

あと、glibは当然使って良いんだよね?
570デフォルトの名無しさん:2008/12/11(木) 16:29:32
ありがちな宿題すぎて飽きたとか。宿題まとめwikiに線形リストってなかったっけ?
571デフォルトの名無しさん:2008/12/11(木) 16:57:40
ファイルの書式とは??
glibもわかりません・・・
572デフォルトの名無しさん:2008/12/11(木) 17:14:43
データを保存するファイルの形式はどうなってて欲しいかってこと。
IDと名前を複数人数分保存しないといけないでしょ?
人を区切るための何かと、IDと名前を区切るための何かが必要なのね。
まあ、時期?習熟程度?を考えると、各行にID,名前という形で入れていくのがいいかなとは思うけれど。
573デフォルトの名無しさん:2008/12/11(木) 17:22:37
>>569
> ファイルの書式を指定しないと、誰も手を付けてくれないと思うよ。

たぶん、どういったフォーマットでファイル化するかも課題のうちじゃないかな。
XML でやってやるとか。w

> あと、glibは当然使って良いんだよね?

ターゲットが Windows みたいだから、それはどうだろ。Cygwin ?
574デフォルトの名無しさん:2008/12/11(木) 17:25:43
>>566
クイックソートはwikiに無いみたいなので暇つぶしにフルスクラッチで作ってみた
low, highはソート範囲のインデックスの最小値、最大値

#define swap(x, y) do { int t = x; x = y; y = t; } while(0)

void qsort(int data[], int low, int high)
{
        int i, j, k;
        int piv;

        i = low;
        j = high;
        k = (low + high) / 2;
        piv = data[k];
        while(i <= j) {
                while(data[i] < piv) ++i;
                while(data[j] > piv) --j;
                if(i > j) break;
                swap(data[i], data[j]);
                ++i;
                --j;
        }

        if(j > low) qsort(data, low, j);
        if(high > i) qsort(data, i, high);
}
575デフォルトの名無しさん:2008/12/11(木) 17:26:10
あ、ゴメン。コンパイラ名書いてあるのね。
Eclipse 知らんわ。
576デフォルトの名無しさん:2008/12/11(木) 17:31:40
>>574
ありがとうございます
とりあえず、いざとなったら、それでいかせていただきますw
577デフォルトの名無しさん:2008/12/11(木) 17:33:32
Eclipseコンパイラじゃないからw
578デフォルトの名無しさん:2008/12/11(木) 17:40:59
do while(0) はなんの為にあるんだ?
579デフォルトの名無しさん:2008/12/11(木) 18:03:39
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):15文字までの4つの文字列を入力し,その各文字列の文字数を出力するプログラムを作成せよ.
[3] 環境
 [3.1] OS:Vista
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008 Express Edition
 [3.3] 言語:C++
[4] 期限: 12月12日
[5] その他の制限:文字数はライブラリ関数(あるのかな?)を用いない

よろしくお願いします
580デフォルトの名無しさん:2008/12/11(木) 18:09:16
>>578
C言語@便利なマクロ
http://pc11.2ch.net/test/read.cgi/tech/1144824670/
こちらへどうぞ
581デフォルトの名無しさん:2008/12/11(木) 18:19:43
>>580
いやそうじゃなくて・・・
ブロックだけで十分だろって
582デフォルトの名無しさん:2008/12/11(木) 18:21:52
[1] 授業単元:C
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8287.txt
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C
[4] 期限:明日まで

お願いします
583デフォルトの名無しさん:2008/12/11(木) 18:30:24
>>577
それを言ったらVC6もコンパイラはMicrosoft (R) 32-bit C/C++ Optimizing Compiler Version 12じゃないか?
584デフォルトの名無しさん:2008/12/11(木) 18:35:31
>>579の実行例を張り忘れてました
1番目の文字列を入力してください(15文字以下):名前1
2番目の文字列を入力してください(15文字以下):名前2
3番目の文字列を入力してください(15文字以下):名前3
4番目の文字列を入力してください(15文字以下):名前
文字数は次のとおりである.
ここまでデータ入力
1番目の文字列:名前 1:?文字
2番目の文字列:名前2 : ?文字
3番目の文字列:名前3 : ?文字
4番目の文字列:名前4 : ?文字
続行するには何かキーを押してください . . .
585デフォルトの名無しさん:2008/12/11(木) 18:37:34
>>580で詳しく話してあげますよ。
簡単に言ったら、
構文エラー if () { }; else ;
正しい構文 if () do{}while(0); else ;
今回の場合は、ブロック作るだけでもよいが、習慣つけような。
もっとも、今時マクロはもう止めてくれといいたいけど、必要悪としては認めたい。
586デフォルトの名無しさん:2008/12/11(木) 18:39:20
>>581
breakしたいから
587デフォルトの名無しさん:2008/12/11(木) 18:42:12
>>583
コンパイラのところにVC6と書かれると、ああ、たぶんcl.exeだろうなと想像できるが、
eclipseと書かれてもコンパイラは一概に決められないような。
じゃあ想定したのと違ったらどうなるのか?といわれると、宿題スレでそれが問題になることはあんまりないようにも思う。
588デフォルトの名無しさん:2008/12/11(木) 18:45:15
Eclipse+Cだから問題なんじゃなかろうか
589help me:2008/12/11(木) 18:52:26
[1] 授業単元: C言語
[2] 問題文: “test.txt”というファイルに仮想的な実験データが
記入されている。
(例えば、1列目を電圧計の読み、2列目を電流の読みとする。)
このデータを最小二乗
法を用いて直線(a x + b)でフィットせよ。※係数a とb を求めること。
test.txtの内容
0.8 5.0
1.2 6.0
1.5 4.0
1.8 8.0
2.5 9.0
3.6 10.5
4.2 12
4.8 15
5.2 13.5
5.9 16
6.5 17
7.2 20
7.6 19
8.2 20
8.9 21
9.5 23
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 12月13日
よろしくお願いします。

590デフォルトの名無しさん:2008/12/11(木) 18:59:07
>>571
同じクラスの周りの子はみんなファイルの書式をいろいろ考えて
せっせとプログラム作ってるっていうのにお前ときたら。。。

漢字にふりがなをつけろという問題で、ふりがなってなんですかって
言っているぐらいに。。。
591デフォルトの名無しさん:2008/12/11(木) 19:31:32
>>579の件ですが自己解決しました。
592デフォルトの名無しさん:2008/12/11(木) 19:42:57
>>571 テキストファイルでいいです!
593デフォルトの名無しさん:2008/12/11(木) 20:10:53
[1] 授業単元:c
[2] 問題文(含コード&リンク):整数を3つ入力して出力する。
整数以外が入力されたエラーメッセージを表示し終了。
改行のみの入力エラーメッセージを表示し終了
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 今晩
[5] その他の制限:初心者なので初心者用にお願いします。コメント付けて頂けると嬉しいです。
594デフォルトの名無しさん:2008/12/11(木) 20:34:32
>>593
#include <stdio.h>
int main()
{
int x, y, z;
if (scanf("%d%d%d", &x, &y, &z) != 3) /*三つとも整数かチェック*/
puts("死ね");
else
printf("%d, %d, %d\n", x, y, z); /*表示*/
return 0;
}
595デフォルトの名無しさん:2008/12/11(木) 20:35:03
間違えたorz
596デフォルトの名無しさん:2008/12/11(木) 20:50:23
>>594 エラーです
597デフォルトの名無しさん:2008/12/11(木) 20:50:35
[1] 授業単元:プログラミング
[2] 問題文:入力された文字列に対して、大文字表示と小文字表示を行うプログラムをポインタを用いて作成して下さい
[3]
[3.1] OS:Windows
[3.2]
[3.3] C言語
[4]

誰か教えてください。お願いします。
598デフォルトの名無しさん:2008/12/11(木) 20:52:25
[1] 授業単元: C
[2] 問題文(含コード&リンク):
文字型配列の先頭アドレスを受け取り、文字列内の文字を降順にソートする関数を作成。
mainで文字列の入力し、先頭アドレスを作成した関数に受け渡し結果をmainで表示する。
表示はmainで行うこと。なお関数名、変数名は任意とする。

[3] 環境
 [3.1] OS: Windows
 [3.2] VC
 [3.3] 言語: C
[4] 期限:今晩
[5] その他の制限: 初心者が学ぶ範囲でお願いします。
599デフォルトの名無しさん:2008/12/11(木) 20:55:34
>>596
これでどうだ!

#include <stdio.h>
int main()
{
int x, y, z;
if (scanf("%d%d%d", &x, &y, &z) != 3) /*三つとも整数かチェック*/
printf("このプログラムは2chの宿題スレで教えてもらいました。");
else
printf("%d, %d, %d\n", x, y, z); /*表示*/
return 0;
}
600デフォルトの名無しさん:2008/12/11(木) 20:58:03
>>599
エラー E2206 rr.c 5: 不正な文字 ' ' (0x8140)(関数 main )
601デフォルトの名無しさん:2008/12/11(木) 21:03:32
全角空白勝手にいれてんじゃねーよwwww

あと間違えたってのは改行入力のみのエラーはついてない件な
602デフォルトの名無しさん:2008/12/11(木) 21:06:31
>>601 改行入力のみはエラー はどのように入れたら
603デフォルトの名無しさん:2008/12/11(木) 21:06:54
…勝手に?
2chのせい?
604デフォルトの名無しさん:2008/12/11(木) 21:08:00
>>603 私は入れたつもりはないのです
605デフォルトの名無しさん:2008/12/11(木) 21:11:19
>>604
知ってる。
俺も>>599に全角スペースがあるように見える。
606デフォルトの名無しさん:2008/12/11(木) 21:12:13
>>597

int main(void){
int i;
int *p;
printf("なんか入力しろや:");
scanf("%d", &i);
printf("大文字");
printf("小文字");
return 0;
}
607デフォルトの名無しさん:2008/12/11(木) 21:12:58
>>605
俺にもそう見える
608デフォルトの名無しさん:2008/12/11(木) 21:13:57
( ゚ω゚ )
609デフォルトの名無しさん:2008/12/11(木) 21:16:49
なんか出来ないくせに解答してる奴がいるな
610デフォルトの名無しさん:2008/12/11(木) 21:17:19
>>609
お前か?
611デフォルトの名無しさん:2008/12/11(木) 21:18:11
本物の回答ください・・・
612デフォルトの名無しさん:2008/12/11(木) 21:19:02
>>602
#include <stdio.h>
#include <string.h>

int main()
{
int x, y, z;
char s[1000];
fgets(s, 1000, stdin);
if (strcmp(s, "\n") == 0 || sscanf(s, "%d%d%d", &x, &y, &z) != 3)
puts("死ね");
else
printf("%d, %d, %d\n", x, y, z); /*表示*/
return 0;
}

なんかいまいち初心者むけじゃないもののようなきもするが
613デフォルトの名無しさん:2008/12/11(木) 21:20:42
>>612 はい 全くわかりませんorz
614デフォルトの名無しさん:2008/12/11(木) 21:32:03
>>612
#include <stdio.h>
#include <string.h>
int main()
{
int x, y, z;
x = getchar();
if (x == '\n') {
puts("死ね"); /* エラー */
} else if(x == EOF) { /* EOFなので終了しておく */
} else {
ungetc(x, stdin);
if (scanf("%d%d%d", &x, &y, &z) != 3) /*三つとも整数かチェック*/
puts("死ね"); /* エラー */
else
printf("%d, %d, %d\n", x, y, z); /*表示*/
}
return 0;
}
615デフォルトの名無しさん:2008/12/11(木) 22:13:04
>>396 Cにて
#include<stdio.h>
#include<string.h>
#define DATA_NUM_MAX 20
int gcd(int a, int b){
int c;
while((c=a%b)) a=b, b=c;
return b;
}
void func(int result[], int work[], int result_num, int rest_num, int maximum, int minimum){
int i, value;
for(value=maximum;value>=minimum;value--){
for(i=result_num;i>rest_num;i--) if(gcd(work[i-1], value)>1) break;
if(i<=rest_num){
work[rest_num-1]=value;
if(rest_num==1) memcpy(result, work, sizeof(int)*result_num);
else func(result, work, result_num, rest_num-1, value-1, minimum);
}
}
}
int main(void){
int m=10, n=15, i, j, k, data[DATA_NUM_MAX], result[DATA_NUM_MAX];
if(n<=0 || n>DATA_NUM_MAX) return 1;
for(i=m,k=0;k<n;i++){
for(j=0;j<k;j++) if(gcd(result[j], i)>1) break;
if(j>=k) result[k++]=i;
}
func(result, data, n, n, result[n-1]-1, m);
printf("m=%d n=%d\n%d", m, n, result[0]);
for(i=1;i<n;i++) printf(", %d", result[i]);
return 0;
}
616デフォルトの名無しさん:2008/12/11(木) 22:29:14
>>549-550
どなたかお願いいたします
617デフォルトの名無しさん:2008/12/11(木) 22:31:21
>>460
>>615
遅くなってすいませんでした
どうもありがとうございます
今から試してみようと思います
618デフォルトの名無しさん:2008/12/11(木) 23:09:09
>>587
gccでいい。
619デフォルトの名無しさん:2008/12/11(木) 23:53:35
どなたか>>582おねがいします
620デフォルトの名無しさん:2008/12/12(金) 00:40:37
[1] 授業単元: cプログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8289.txt
[3] 環境
 [3.1] OS:windows
 [3.2] gcc
 [3.3] 言語: c
[4] 期限: 朝
[5] その他の制限: 入力はwhile(c = getchar()) を使用してほしい
初心者なのでexit 等難しいのは勘弁




621デフォルトの名無しさん:2008/12/12(金) 00:51:20
exitのどこが難しいの?それを聞かないと作れないな
622デフォルトの名無しさん:2008/12/12(金) 00:52:28
>>621 自分で調べて勉強はしたのですが 学校ではまだ習っていないので使用できないのです
623デフォルトの名無しさん:2008/12/12(金) 00:53:11
じゃあ習ってないものをすべて書いてくれないと
624デフォルトの名無しさん:2008/12/12(金) 00:55:01
悪魔の証明キター
625デフォルトの名無しさん:2008/12/12(金) 00:57:31
>>623 初心者がわかりそうな範囲でお願いします。
    
626help me:2008/12/12(金) 01:05:46
どなたか589お願いします。私の問題文に不明なところがありましたら、
ご指示願います。
627デフォルトの名無しさん:2008/12/12(金) 01:07:30
getchar使用って時点でおおよそ分かるだろう
628デフォルトの名無しさん:2008/12/12(金) 01:13:36
#include <stdio.h>
#include <string.h>
この二つで使える関数なら大丈夫です
#define SIZE 8
#define BUFFERSIZE
サイズはかるのにこれを使っていました。

629デフォルトの名無しさん:2008/12/12(金) 01:16:36
何のサイズ?
630デフォルトの名無しさん:2008/12/12(金) 01:18:31
>>629 文字数です。 8文字までなら #define SIZE 8  と。 
631デフォルトの名無しさん:2008/12/12(金) 01:21:42
BUFFERSIZEは?
632デフォルトの名無しさん:2008/12/12(金) 01:23:40
情報の小出しする馬鹿は無視しましょう
633デフォルトの名無しさん:2008/12/12(金) 01:27:03
BUFFERSIZE 1024 だとすると 1023文字までの文字列を入力することができる

#include <stdio.h>
#define BUFFERSIZE 1024

main()
{
char buffer[BUFFERSIZE];
fgets(buffer, BUFFERSIZE, stdin);

printf("%s\n", buffer);
}

634デフォルトの名無しさん:2008/12/12(金) 01:27:50
で?
635デフォルトの名無しさん:2008/12/12(金) 01:31:28
>>620
#include <stdio.h>
#include <string.h>
この二つで使える関数でお願いします
636デフォルトの名無しさん:2008/12/12(金) 01:32:03
ことわる
637デフォルトの名無しさん:2008/12/12(金) 01:37:44
できないのね
638デフォルトの名無しさん:2008/12/12(金) 01:37:57
たのむよ
639デフォルトの名無しさん:2008/12/12(金) 02:05:25
条件が多いですが515作れる人いましたらお願いします><
640デフォルトの名無しさん:2008/12/12(金) 02:47:13
>>622
最近こういう学生が多くて困る。
自分で調べて勉強したというのは評価するがなぜそれを使わないんだ?
教えてないものは使うなと教授に言われたのか?
もしそうなら自分のためにならないからそんな大学やめてしまえ。
641デフォルトの名無しさん:2008/12/12(金) 02:51:03
まぁexitはともかくatoiとかの制限はわからんでもないよね
642デフォルトの名無しさん:2008/12/12(金) 08:23:06
643デフォルトの名無しさん:2008/12/12(金) 08:28:05
>>635 <string.h> はなくてもできるぜ
#include <stdio.h>
int main()
{
char a[20], b[20];
int m, n;
printf("Integer A: ");
scanf("%s", a);
a[10] = '\0';
sscanf(a, "%d", &m);
if(m < 0){
printf("Error: negative value\n");
return 1;
}
printf("Integer B: ");
scanf("%s", b);
b[10] = '\0';
sscanf(b, "%d", &n);
if(n < 0){
printf("Error: negative value\n");
return 1;
}
printf(" %11u\n+%11u\n------------\n %11u\n", m, n, m + n);
return 0;
}
644デフォルトの名無しさん:2008/12/12(金) 09:12:26
どなたか>>598お願いします
645デフォルトの名無しさん:2008/12/12(金) 09:23:49
【質問テンプレ】
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):
0.構造体:タグ名「ten」は文字型配列1個(name[10]),倍精度実数型データ2個(x,y)を扱うものとする.

1.上記の構造体tenを2つ(個別でも,配列でも)宣言し,それぞれに任意の名前と任意のx座標の値とy座標の値をキーボードから入力する.そしてそれが終わってから入力した結果を画面に出力するプログラムを作成せよ.

2.上記の2点間(x_1,y_1)と(x_2,y_2)の距離を計算し,結果として「jitaku とdaigakuとの距離はLです.」と出力するプログラムに変更せよ.

3.2点間の距離計算とその表示を関数としてプログラムせよ.ただし構造体を引数とし,戻り値は無しとする.

4.上記の問題では2次元平面上の座標から距離を求めたが,3次元空間上の座標を扱い,距離を求めるプログラムに変更せよ.

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語:C
[4] 期限:2008年12月12日(金)
[5] その他の制限:構造体までしか習っていません。本当に基礎をやっています。

よろしくお願いします。
646デフォルトの名無しさん:2008/12/12(金) 09:25:35
>>582=>>619
(1)のほうだけ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8291.txt
(2)は仕様がよく分からんのでパス。
647デフォルトの名無しさん:2008/12/12(金) 10:14:48
>>642
Linux で遊んでみたけど、結構面白いな、これ。w
648デフォルトの名無しさん:2008/12/12(金) 10:25:54
>>545
遅レスすいません。
sin()、cos()を使ってもらっても構いません。
649デフォルトの名無しさん:2008/12/12(金) 11:10:00
>>546 どなたかお願いします。。
ファイルはテキストファイルで良いです。
650デフォルトの名無しさん:2008/12/12(金) 11:54:40
651デフォルトの名無しさん:2008/12/12(金) 12:03:27
>>598
#include <stdio.h>
char *sort( char *pStr );
int main(void){
char str[11] = {0};
printf( "Input(10文字以内)====>" );
scanf( "%11s", &str );
if( str[10] != '\0' ){
printf( "Input Error\n" );
return 1;
}
printf( "ソート前:%s\n", str );
printf( "ソート後:%s\n", sort(str) );
return 0;
}
char *sort( char *pStr ){
int temp, n = 10;
/* 降順にソート */
for( int i = 1; i <= n-1; ++i ){
for( int j = 0; j < n-i; ++j ){
if( pStr[j] < pStr[j+1] ){
temp = pStr[j];
pStr[j] = pStr[j+1];
pStr[j+1] = temp;
}
}
}
return pStr;
}
652デフォルトの名無しさん:2008/12/12(金) 12:41:28
>>645
/* とりあえず1と2だけ */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct ten {
char name[10];
double x, y;
} point;

int main(void)
{
point p1, p2;
{ /* ここから1.*/
#define BUFFSIZE 8
char buff[BUFFSIZE];
printf("Name1 >> "); fgets(p1.name, 10, stdin);
printf("x1 >> "); p1.x = strtod(fgets(buff, BUFFSIZE, stdin), NULL);
printf("y1 >> "); p1.y = strtod(fgets(buff, BUFFSIZE, stdin), NULL);
printf("Name2 >> "); fgets(p2.name, 10, stdin);
printf("x2 >> "); p2.x = strtod(fgets(buff, BUFFSIZE, stdin), NULL);
printf("y2 >> "); p2.y = strtod(fgets(buff, BUFFSIZE, stdin), NULL);
printf("%s: (%f, %f)\n", p1.name, p1.x, p1.y);
printf("%s: (%f, %f)\n", p2.name, p2.x, p2.y);
} /* ここまで1.*/
{ /* ここから2. */
double d = sqrt(pow(p1.x - p2.x, 2.0) + pow(p1.y - p2.y, 2.0));
puts("「jitaku とdaigakuとの距離はLです.」");
} /* ここまで2.*/
return 0;
}
653デフォルトの名無しさん:2008/12/12(金) 12:47:10
>>650
>>555をコンパイラしてみたんですけど、エラーが出て出来ませんでした。
654デフォルトの名無しさん:2008/12/12(金) 13:32:23
【質問テンプレ】
[1] 授業単元: プログラミング演習2
[2] 問題文(含コード&リンク): 以下の仕様で収支残高管理プログラムを作成せよ.ただし,残高処理の関数を独自で定義すること.その際,ファイルポインタについてはグローバル変数として宣言しても良い.
初期状態を除いてプログラム実行時に既存の残高額のファイル(balance.txt)を読み込む.初期状態とは,ファイルがないことを検出したらファイルを作成することである.
各処理を選択するメニュー画面を残高額とともに表示する.可能であれば,残高は桁区切りカンマを用いて表示すること.
終了時にその時点の残高額をファイル(balance.txt)に更新する.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2008年12月12日まで]
お願いします
655デフォルトの名無しさん:2008/12/12(金) 13:34:29
【質問テンプレ】
[1] 授業単元: プログラミング演習2
[2] 問題文(含コード&リンク): 以下の仕様で英単語管理プログラムを作成せよ.配列の要素数を変更可能にするなどプリプロセッサ制御文を用いて拡張性の高いプログラムになるように工夫せよ.また,分割コンパイルしやすいように各機能別に関数化すること.
初期状態を除いてプログラム実行時に既存の英単語リストのファイル(list.txt)を読み込み,2次元配列に格納する.
(例:words[単語数][単語文字数])
単語登録,リスト表示,終了の各機能が選択可能なメニュー画面を表示する.ただし,登録可能な単語数を表示し,リスト内と同一単語の登録は受付けない.また,リスト表示は登録した英単語を含めるものとする.
プログラム終了時に新しくできた英単語リストを読み出したファイルに更新する.なお,英単語リストのファイルは,1行1単語として出力するものとする.

ヒント:文字列の比較は「strcmp関数」,文字列の複写は「strcpy関数」をそれぞれ使用し,引数の指定は各自で調査せよ.ヘッダーファイルは「<string.h>」を指定すればよい.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2008年12月12日まで]
お願いします
656デフォルトの名無しさん:2008/12/12(金) 13:38:41
657515:2008/12/12(金) 13:56:00
>>642
ありがとうございます<(_ _)>
自分なりに少し改造して使わせていただきますね〜
658デフォルトの名無しさん:2008/12/12(金) 14:12:38
>>655
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int count; char words[256][64];
int compare(const void *x, const void *y) { return strcmp((const char *)x, (const char *)y); }
void tango_toroku(void){ char s[64], *p;
printf("単語: "); scanf("%63s", s);
p = bsearch(s, words, count, 64, compare);
if (p == NULL) {
strcpy(words[count++], s); qsort(words, count, 64, compare);
}}
void list_hyoji(void)
{ int i; for(i = 0; i < count; i++) printf("%s\n", words[i]); }
int main(void) {
int m, len; FILE *fp; count = 0;
fp = fopen("list.txt", "r");
while(fgets(words[count], 64, fp)) {
len = strlen(words[count]);
if (len != 0 && words[count][len - 1] == '\n') words[count][len - 1] = '\0';
count++;
}
fclose(fp); qsort(words, count, 64, compare);
while(1){
printf("1: 単語登録,2: リスト表示,3: 終了> "); scanf("%d", &m);
switch(m){
case 1: tango_toroku(); break; case 2: list_hyoji(); break;
case 3: return 0;
}}
return 0;
}
659デフォルトの名無しさん:2008/12/12(金) 14:44:47
>658
エラー 2 error C2440: '=' : 'void *' から 'char *' に変換できません。 h:\prog2\enshu6\enshu6\6-1.cpp 8
警告 3 warning C4267: '=' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。 h:\prog2\enshu6\enshu6\6-1.cpp 18
とでました。;;
660デフォルトの名無しさん:2008/12/12(金) 15:11:29
661デフォルトの名無しさん:2008/12/12(金) 15:52:54
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):http://www.rupan.net/uploader/download/1229063492.jpg
[3] 環境
 [3.1] OS: Windows
 [3.2] VS2005
 [3.3] 言語: Cのみ
[4] 期限: 2008年12月15日まで
[5]  テンプレのアップローダーでなく申し訳ありません
   テキスト形式で伝えるのが難しかったのでJPGで載せさせて頂いてます
   ちなみにこのような実行結果になるように求められていますhttp://www.rupan.net/uploader/download/1229064013.jpg

   最も最近習ったもの(この宿題が出された時間に習ったもの)は多次元配列です(int aa[2][3]やchar bb[2][3][4]等)

どうかよろしくお願いします
662デフォルトの名無しさん:2008/12/12(金) 15:53:28
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):http://www.rupan.net/uploader/download/1229063492.jpg
[3] 環境
 [3.1] OS: Windows
 [3.2] VS2005
 [3.3] 言語: Cのみ
[4] 期限: 2008年12月15日まで
[5]  テンプレのアップローダーでなく申し訳ありません
   テキスト形式で伝えるのが難しかったのでJPGで載せさせて頂いてます
   ちなみにこのような実行結果になるように求められていますhttp://www.rupan.net/uploader/download/1229064013.jpg

   最も最近習ったもの(この宿題が出された時間に習ったもの)は多次元配列です(int aa[2][3]やchar bb[2][3][4]等)

どうかよろしくお願いします
663デフォルトの名無しさん:2008/12/12(金) 15:55:05
>>656
M_PIを3.1415926に置き換えたらいいのでしょうか?
664デフォルトの名無しさん:2008/12/12(金) 16:14:06
>>663
M_PIが定義されていないようだったら置き換えてもいいだろうし、includeの下にdefineでM_PIを定義してもいいんじゃないかな
665デフォルトの名無しさん:2008/12/12(金) 16:33:13
>>664
そうですか。
分かりました。やってみたいと思います。
どうもご親切に有難う御座います。
666デフォルトの名無しさん:2008/12/12(金) 16:43:29
667デフォルトの名無しさん:2008/12/12(金) 16:53:15
>>666
64文字以上入力されると
英単語?英単語?
と2重になるね
668デフォルトの名無しさん:2008/12/12(金) 16:54:22
>>667
OK、クソース発動、書き換えるw
669デフォルトの名無しさん:2008/12/12(金) 16:56:11
>>668
質問者のレベルならこのくらいでいいんじゃないの
670デフォルトの名無しさん:2008/12/12(金) 17:02:23
>>666-668
お早いヘルプありがとうございます!
そして連投失礼しました;
671デフォルトの名無しさん:2008/12/12(金) 17:15:20
64文字以上だと0が入らないのはクソースだな
672デフォルトの名無しさん:2008/12/12(金) 17:27:46
想定の範囲内で実行してたもう
673デフォルトの名無しさん:2008/12/12(金) 17:42:59
674デフォルトの名無しさん:2008/12/12(金) 17:52:17
>>673 補足
検索対象の単語は、辞書順に並び替えられている必要がある。
例えば、greatの後ろにfaighfulがあっても、faithfulは検出されないので、あしからず。
675デフォルトの名無しさん:2008/12/12(金) 17:53:27
>>589
こんなんでどや。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8295.c

最小二乗法なんて初めて聞いたから、適当に調べて計算式にあてはめただけ。
取っ掛かりにはなるだろ。
デバッグ用のメッセージは適当に消してくれ。
676デフォルトの名無しさん:2008/12/12(金) 17:54:22
>>674 は勘違いだった、すまそ。
677675:2008/12/12(金) 17:56:54
おっと、Debian etch の gcc 4.1.x で確認。
678デフォルトの名無しさん:2008/12/12(金) 18:18:37
679デフォルトの名無しさん:2008/12/12(金) 18:23:38
>>549-550
どなたかお願いいたします
680デフォルトの名無しさん:2008/12/12(金) 18:24:58
もう過ぎとるやん。
681デフォルトの名無しさん:2008/12/12(金) 19:22:35
[1] 授業単元:ハードウェア設計
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8299.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2008年12月15日10:40まで

よろしくお願いします。
682デフォルトの名無しさん:2008/12/12(金) 20:28:22
683help me:2008/12/12(金) 22:25:47
>>675 ありがとうございます! 
684デフォルトの名無しさん:2008/12/12(金) 22:42:30
>>651
遅れましたがありがとうございます^^
685help me:2008/12/12(金) 23:19:25
[1] 授業単元: C言語
[2] 問題文:
“data.txt”というファイルから、
数値を読み出して度数分布を表示するプログラムを作成せよ。
(0から100までを10ずつ区切ったヒストグラムを表示すること。)
出力例
0 to 10 : ******* (7)
10 to 20 : *** (3)
20 to 30 : ******** (8)
・・・・・
90 to 100 : ** (2)

[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 12月14日
度々頼んでしまいすみません。
よろしくおねがいします。


686デフォルトの名無しさん:2008/12/12(金) 23:28:12
[1] 授業単元:C言語
[2] 問題文:入力した文字列をポインタを用いて大文字表示、小文字表示せよ
[3] 環境
[3.1] OS:Windows
[3.2]
[3.3] 言語:C言語
[4] 期限:12月14日
[5] その他の制限: 是非、教えてください!!宜しくお願いします!!
687デフォルトの名無しさん:2008/12/12(金) 23:36:30
>>685
data.txtの書式
数値は整数のみか小数ありか
10とか20とかはどっちに含めるか
688デフォルトの名無しさん:2008/12/12(金) 23:42:29
>>685
エラーチェックなどはしてないので、適宜修正してちょ。
#include <stdio.h>
#include <string.h>

int main(){
int a[10];
int i;
int j;
for(i=0;i<10;++i)a[i]=0;
FILE *fp = fopen("data.txt","r");
while(fscanf(fp,"%d",&i) == 1){
if(i==100){
a[9]++;
}else{
a[i/10]++;
}
}
for(i=0;i<10;++i){
printf("%3d to %3d :",i*10,(i+1)*10);
for(j=0;j<a[i];++j) printf("*");
printf(" (%d)",a[i]);
printf("\n");
}
}
689help me:2008/12/12(金) 23:45:23
>>687 質問どうもありがとうございます。
えーと、書式は半角英数で、数値は整数のみです。そして10とか20は、
0から9までの10個の数字を一かたまりで考えるようなので、10から19、
20から29までのように含めるようです。それと数字は1から99まで
の数字らしいですです。
690help me:2008/12/12(金) 23:48:04
>>688 こんなに早くレスしてくださり、本当にありがとうございます!
691デフォルトの名無しさん:2008/12/13(土) 00:13:09
>>686
#include <stdio.h>
int main()
{
char s[80], *p;
p = s;
while((*p = getchar()) != '\n') p++;
*p = '\0';
/* 大文字表示 */
for(p = s; *p != '\0'; p++){
if(*p >= 'a' && *p <= 'z')
putchar(*p + 'A' - 'a');
else
putchar(*p);
}
putchar('\n');
/* 小文字表示 */
for(p = s; *p != '\0'; p++){
if(*p >= 'A' && *p <= 'Z')
putchar(*p + 'a' - 'A');
else
putchar(*p);
}
putchar('\n');

return 0;
}
692デフォルトの名無しさん:2008/12/13(土) 00:23:26
>>691
親切に回答してくださりありがとうございます!!
このパソコンでは試せないので、学校でやってみたいと思います。
わざわざありがとうございました!
693デフォルトの名無しさん:2008/12/13(土) 00:29:39
>>546 お願いします。

なにかおかしいとこあるなら言って下さい。
694デフォルトの名無しさん:2008/12/13(土) 00:53:23
>>693
問題文がおおざっぱすぎる

あの程度の問題文(仕様)じゃ、具体的な動作例を漏れなく示さないと手をつけらんないよ
695デフォルトの名無しさん:2008/12/13(土) 00:54:53
>>549
「図のような」って、図がないじゃん
文章の説明だけだとちょっと厳しいかな
696デフォルトの名無しさん:2008/12/13(土) 00:56:47
[1] 授業単元:科学実習
[2] 問題文:16進数を入力するプログラムを作れ

Q:\hello>プログラムの名前
input hex? 3e8
answer: 1000
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 08/12/20 手を尽くしましたが自分には無理です。どうかよろしくお願いします!
697デフォルトの名無しさん:2008/12/13(土) 01:03:56
追記 対応する10進数を表示させる。
698デフォルトの名無しさん:2008/12/13(土) 01:09:27
>>696
#include<stdio.h>

int main(void){
unsigned int value;

printf("input hex? ");
scanf("%x", &value);
printf("answer: %d\n", value);

return 0;
}
699デフォルトの名無しさん:2008/12/13(土) 01:10:38
>>698
訂正: %d を %u に
700デフォルトの名無しさん:2008/12/13(土) 01:11:59
>>654
#include <stdio.h>
#include <stdlib.h>
#define FILENAME "balance.txt"
#define BUFFSIZE 32
char buff[BUFFSIZE];
int menu(long balance) {
printf("残高: %d\n\t1. 預入\n\t2. 引出\n\t3. 終了\n選べ >> ", balance);
return atoi(fgets(buff, BUFFSIZE, stdin));
}
void deposit(long *balance) {
printf("\tいくら入れるのよ >> "); *balance += atol(fgets(buff, BUFFSIZE, stdin));
}
void withdraw(long *balance) {
int amount; printf("\tどんだけ出す気だ >> "); amount = atol(fgets(buff, BUFFSIZE, stdin));
if (amount > *balance) puts("\n\t**** 無理 ****\n"); else *balance -= amount;
}
int main(void) {
FILE *fp = fopen(FILENAME, "r"); long balance = 0; int m;
if (fp != NULL) {
balance = atol(fgets(buff, BUFFSIZE, fp));
do { m = menu(balance);
switch (m) {
case 1: deposit(&balance); break;
case 2: withdraw(&balance); break;
}
} while (m != 3);
}
fclose(fp);
fp = fopen(FILENAME, "w"); fprintf(fp, "%d\n", balance); fclose(fp);
return 0;
}
701デフォルトの名無しさん:2008/12/13(土) 01:41:31
>>696
アルゴリズム的に解くとこんな感じかも。
#include<stdio.h>
#define SIZE 16
int hextodec(char h){
if('0' <= h && h <= '9') return h - '0';
else if('a' <= h && h <= 'f') return 10 + h - 'a';
else if('A' <= h && h <= 'F') return 10 + h - 'A';
//error
else return -1;
}
int main(){
char hex[SIZE];
int h,i,j,dec,num;
printf("input hex? ");
fgets(hex,sizeof(hex),stdin);
//最後までいく
for(i=0;hex[i]!='\0' && hex[i]!='\n' && hex[i]!='\r';i++);
//最後から見ていく
for(j=i-1,h=1,dec=0; j>=0; j--,h*=16){
if((num = hextodec(hex[j])) == -1){
printf("Input error.\n");
break;
}
dec += num * h;
}
printf("answer: %d\n",dec);
}
702デフォルトの名無しさん:2008/12/13(土) 01:48:43
>>693
丁寧に説明してもらってんのに「テキストファイルでいいです」と言えるのが不思議でならんのよね。
まあ、どれにしたところでたいした違いは無いよと達観してるのかもしれないんだけど。
703デフォルトの名無しさん:2008/12/13(土) 02:02:54
スレ違いかもだけどコンパイラがEclipseってどういうこと?
Eclipseでコンパイルできるのか?
704デフォルトの名無しさん:2008/12/13(土) 02:03:28
>>693
あと一週間もあるのになんで急かす?
705デフォルトの名無しさん:2008/12/13(土) 02:41:23
>>546
ほっほぉ、麻呂のクソース発動でおじゃるな。しばし待て。
706デフォルトの名無しさん:2008/12/13(土) 02:51:31
>>705
今回は一発で決めようぜ
707デフォルトの名無しさん:2008/12/13(土) 02:52:00
>>705
ゆっくししていっていくれ
708デフォルトの名無しさん:2008/12/13(土) 02:52:59
>>703
コンパイラの設定さえしておけばできるかと。じゃなきゃIDEって言えないような。
709デフォルトの名無しさん:2008/12/13(土) 03:15:29
確か、プラグインとコンパイラ(別途用意)が必要。
VC++と書いたらコンパイラもMS謹製とみなせるが、
Eclipseだと不定と書くのと大差ない。てか、不定の方がまし
710デフォルトの名無しさん:2008/12/13(土) 03:20:46
>>706-707
なっ、なぬっ!?麻呂のクソースが見たいとな?ならば・・・しばし待ってたもう。
711デフォルトの名無しさん:2008/12/13(土) 03:45:10
712デフォルトの名無しさん:2008/12/13(土) 09:05:08
>>546
麻呂って人じゃないけど作ってみたよ〜
なんかごちゃごちゃしてるけど一つ一つの関数はそんなに難しいことしてないから、何とかわかってもらえる…かな。
単方向リストでソートめんどくさそうだから一回配列に変換してソートしてるけどどうなんだろう…wだめかなw
出力は単純にID,名前っていうCSVにしてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8303.txt
713デフォルトの名無しさん:2008/12/13(土) 09:44:24
>>662
日本語辞書が適当なので、自分で修正してね。
#include <stdio.h>
#include <string.h>
#define DICSIZE 5
int main(){
char *dictionary[DICSIZE][2]={
"bridge", "橋",
"bright","輝く",
"effort","努力",
"faithful","誠実な",
"great","偉大な",
};
char a[100];
int i;
do{
printf("英単語?");
scanf("%s",a);
for(i=0;i<DICSIZE;++i){
if(strcmp(a,dictionary[i][0])==0){
printf("%s ==> %s\n",dictionary[i][0],dictionary[i][1]);
break;
}
}
}while(strcmp(a,"*")!=0);
return 0;
}
714デフォルトの名無しさん:2008/12/13(土) 11:56:08
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=8197
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C言語
[4] 期限: 12月15日

よろしくお願いします。
あと、必要なファイルを入れるためにzipを使ってしまい、申し訳ありません。
8304.zipが私のです。
715デフォルトの名無しさん:2008/12/13(土) 14:24:01
すいません 質問させてください。
課題で出題されたんですが、n人の平均点を表形式で出力する機能をサブルーチン
に分けたプログラムをつくりなさいという問題です。
#include<stdio.h>
#include<stdlib.h>
void nyuuryoku(int n, char num[100][8],char name[100][20], int score[100][5]);
void keisann(int n, int score[100][5], float ave[100], float aveka[5]);
void hyouzi(int n,char num[100][8], char name[100][20],int score[100][5],float aveko[100], float aveka[5]);
FILE *fpr, *fpw;
int main(void)
{
int n;
int score[100][5];
char num[100][8],name[100][20];
float aveko[100]={0};
float aveka[5]={0};
if((fpr=fopen("test.dat","r")) == NULL) {printf("File open error !!"); exit(1); }
fscanf(fpr, "%d", &n);
  if(n>100){
printf("100ninnika. /n");
exit(1);
}
nyuuryoku (n, num, name, score);
keisann (n, score, aveko, aveka);
hyouzi (n, num, name , score, aveko, aveka );
fclose(fpr);
fclose(fpw);
return 0;
}
716デフォルトの名無しさん:2008/12/13(土) 14:25:36
void nyuuryoku(int n, char num[100][8], char name[100][20],int score[100][5])
{
int i,j;
for(i=0; i<n; i++)
{
fscanf(fpr,"%s%s",num[i],name[i]);
  for(j=0; j<5; j++){
fscanf(fpr, "%d", &score[i][j]);
}
}
}
void keisann(int n, int score[100][5], float aveko[100], float aveka[5])
{
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<5; j++)
{
aveko[i] += score[i][j]/ 5.0;
aveka[j] += score[i][j] / (float)n;
}
}
}
void hyouzi(int n, char num[100][8], char name[100][20],int score[100][5], float aveko[100], float aveka[5])
{
int i,j;
if((fpw=fopen("test.res","w")) == NULL) {printf("File open error !!"); exit(1); }
printf("No. 国語 数学 理科 社会 英語 | 平均点\n");
fprintf(fpw,"No. 国語 数学 理科 社会 英語 | 平均点\n");
717デフォルトの名無しさん:2008/12/13(土) 14:26:37
for(i=0; i<n; i++)
{
printf("%s %s",num[i],name[i]);
fprintf(fpw,"%s %s",num[i],name[i]);
for(j=0; j<5; j++){
printf("%6d ",score[i][j]);
fprintf(fpw,"%6d ",score[i][j]);
}
printf(" | %5.2f\n",aveko[i]);
}
printf("---------------------------------------------\n");
fprintf(fpw,"---------------------------------------------\n");
printf(" ");
fprintf(fpw," ");
for(j=0; j<5; j++)
{
printf("%6.1f ", aveka[j]);
fprintf(fpw,"%6.1f ", aveka[j]);
}
printf("/n");
fprintf(fpw,"/n");
}
ここまでは、何とか作ったんですが、「出力された表を行ごと平均点が高い順に表示させよ」と
「国語の得点が高い順に表示させよ、数学の得点が高い順に…」が分かりません。
入力データファイルは
718デフォルトの名無しさん:2008/12/13(土) 14:27:26
10
A01 田中 60 70 80 90 30
A02 岡村 50 60 70 80 90
A03 中田 40 50 60 70 80
A04 松木 30 45 50 60 70
A05 木本 80 90 90 80 90
    …
のような感じです。
正直ここまでのプログラムもいまいち分かっていない所があります。
教えていただけないでしょうか。お願いします。

長くなってすいません。
719デフォルトの名無しさん:2008/12/13(土) 15:14:56
>>682さん
ありがとうございました><
720デフォルトの名無しさん:2008/12/13(土) 15:26:34
>>718
問題の全文と自分の書いたコードをテキストファイルにして上げろよ
721デフォルトの名無しさん:2008/12/13(土) 15:30:48
やる気の無い奴は、別に無視しても良いんだが?構ってちゃんか、お前?w
722デフォルトの名無しさん:2008/12/13(土) 15:48:16
>>715
構造体使っちゃダメ?
723デフォルトの名無しさん:2008/12/13(土) 16:27:08
>>720
遅くなってすいません。
問題の全文は、「出力された表を行ごと平均点が高い順に表示させよ。また
国語の得点が高い順に表示させ、ほかの科目についても同じようにせよ。」だったと思います。
口で説明されたので、分かりにくかったらごめんなさい。

>>722
構造体とはどんなものでしょうか?
詳しくないんです。
すいません。

724デフォルトの名無しさん:2008/12/13(土) 16:33:46
テンプレを無視するのはいくない
725デフォルトの名無しさん:2008/12/13(土) 16:40:45
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): >>723です。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C言語
[4] 期限: 来週の水曜日までです。
[5] その他の制限: 構造体というのはまだ習っていません。

>>724
焦りすぎていました。すいません。
726704:2008/12/13(土) 17:01:39
無視するならいい
727デフォルトの名無しさん:2008/12/13(土) 17:10:23
>>725
で、"test.dat"とやらのアップはまだか
728デフォルトの名無しさん:2008/12/13(土) 17:22:46
test.datは
A01 田中 60 70 80 90 30
A02 岡村 50 60 70 80 90
A03 中田 40 50 60 70 80
A04 松木 30 45 50 60 70
A05 木本 80 90 90 80 90
A06 松本 35 55 45 85 55
A07 手塚 65 75 55 84 95
A08 小池 86 55 45 70 65
A09 長尾 90 56 57 50 50
A10 玉田 85 76 94 78 55

名前や得点は適当でいいそうです。
何度もすいません。
729デフォルトの名無しさん:2008/12/13(土) 18:01:32
730デフォルトの名無しさん:2008/12/13(土) 19:08:09
>>729
ありがとうございます!助かります!
731デフォルトの名無しさん:2008/12/13(土) 19:19:12
[1] 授業単元: C言語
[2] 問題文:太陰暦、イスラム暦、マヤ暦、ユダヤ暦、ホビット庄暦のいずれかの
      万年カレンダーを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2]
[3.3] 言語:C言語
[4] 期限:12月14日の21時まで
[5] その他の制限:全くわからないので、誰かわかる人教えてください...
         宜しくお願いします!!
732デフォルトの名無しさん:2008/12/13(土) 19:41:44
>>546
並び替え以外は出来たでおじゃるが、単方向リストって並び替えが面倒でおじゃるのぅ・・・
733デフォルトの名無しさん:2008/12/13(土) 20:43:24
>>731
なんかネタっぽい問題だな
734デフォルトの名無しさん:2008/12/13(土) 20:54:52
>>733
そうですよね。わかりますか??
735デフォルトの名無しさん:2008/12/13(土) 23:48:23
>>732
ノード単位で一度バラして配列に格納、並び替えた後でもう一度リストに追加すれば良いと思うでゴザるよ。
736デフォルトの名無しさん:2008/12/14(日) 00:32:25
737デフォルトの名無しさん:2008/12/14(日) 00:34:34
>>732
他のキーでソートすることもないし、オーダーも固定だし、ということを考えれば
挿入ソートしておけば面倒なこと考えなくていいんじゃないの?
どうせクソースにするために変なこと考えてんだろうけど
738デフォルトの名無しさん:2008/12/14(日) 00:36:03
って書いてる間に挿入ソートの解答例が。
負けてんぞ麻呂
739デフォルトの名無しさん:2008/12/14(日) 00:43:15
あっ、いや、麻呂はリストの課題をずっとやっているわけではないのでおじゃるので・・・
ゲームしたり、テレビを見たり、食事をしたり・・・でおじゃっ。
740デフォルトの名無しさん:2008/12/14(日) 00:54:35
[1] 授業単元:科学実習
[2] 問題文:入力された数を16進数で表示するプログラムを作れ。
但し文字を表示するのには関数putchar()を使用すること。
例hexという名のプログラムを作り、217を入力した場合以下のようになる
Q:\hello>hex
input hex? 217
answer = d9
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:gcc -o
 [3.3] 言語: C言語
[4] 期限: 08/12/20
[5] プログラム名はkadaiでお願いします。なにとぞお願いいたします。
741デフォルトの名無しさん:2008/12/14(日) 00:59:41
答え出てるじゃん
742デフォルトの名無しさん:2008/12/14(日) 01:10:21
>>740
#include <stdio.h>

int main()
{
int x;
char s[60], *p;
fputs("input hex? ", stdout);
scanf("%d", &x);
sprintf(s, "%x", x);
p = s;
fputs("answer = ", stdout);
while (*p)
putchar(*p++);
putchar('\n');
return 0;
}

言われた仕様には適合するだろう
まぁだめだって言うんだろうけど
743デフォルトの名無しさん:2008/12/14(日) 01:15:56
>>736 プログラム内が文字化けしてるのですが・・・どうすればみれますかぁ!?
744デフォルトの名無しさん:2008/12/14(日) 01:37:50
麻呂が今ソートをそぉ〜っと記述しているでおじゃるから、もうしばらく待つでおじゃっ
745デフォルトの名無しさん:2008/12/14(日) 01:44:35
>>743
化けないようにすれば読めるよ
746デフォルトの名無しさん:2008/12/14(日) 05:39:12
>>743
ブラウザに聞いてください
747デフォルトの名無しさん:2008/12/14(日) 12:34:36
>>743
ブラウザのポップアップメニュー→ソースの表示
で見れない?
748デフォルトの名無しさん:2008/12/14(日) 12:36:29
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):マージソートアルゴリズムを用いて線形リストを整列するプログラムを実装せよ。
[3] 環境
 [3.1] OS:Mac OS 10.5.5
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C
[4] 期限:明日以内
[5] その他の制限:特になし

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

自分で書いてみたのですが、Bus Errorになってしまいます。
ファイル内の関数list_extend、getlist、putlist、list_reverseは使わなければいけない関数です。

よろしくお願いします。
749デフォルトの名無しさん:2008/12/14(日) 12:47:27
お世話になります。
固定長ファイル編集の課題をもらいました。
半分以上わからない上に期限が明日です。助けて欲しいです。
でも、全部終わらなきゃ単位もらえないわけじゃないみたいです。
提出部分の評価点も重要らしいので、最後まで諦めません。よろしくお願いします。
以下詳細です。

[1] 授業単元:2(必修)
[2] 問題文(含コード&リンク):
CSV形式の連携ファイルrenkei.csvをファイル終端まで1カラム単位に処理を行い、毎行固定長テキストrenkei_kotei.txtに出力する。
以下の連携ファイル作成規約に則り実装する事。
文字コードはUTF-8。
インプットファイルのデリミタ文字はカンマ「,」。
インプットファイルはダブルコーテーション「"」を含みません。
インプットファイルはUTF-8文字コード未定義の文字を含みません。
インプットファイルは半角/全角のアルファベット及びひらがな、カタカナ、漢字のみで構成します。半角文字が1byte、全角文字が3byteである事に注意しましょう。
アウトプットファイルは固定長とします。
アウトプットファイルはカンマ「,」及びダブルコーテーション「"」を含みません。
アウトプットファイルはファイルフォーマットに従いパディングを行います。
提出ソースはUTF-8、Tab-4、CR/LFとします。

ファイルレイアウト
列 長  パディング文字
1 5byte '0' ※半角のみ
2 30byte 半角スペース ※半角のみ
3 21byte 全角スペース ※全角のみ
4 60byte 全角スペース ※半角/全角混在

本文が長すぎるようなのでここで一旦区切ります。
750749:2008/12/14(日) 12:48:08
[3] 環境
[3.1] OS: Linux
[3.2] gcc 3.4.2
[3.3] Cのみ
[4] 期限: 2008/12/15まで(但し、途中であってもソースの提出があれば評価外とはならない)

[5] その他の制限:
三項演算子の使用はNG
関数の定義・使用はNG(インライン関数含む&全てmain内に書く)
UTF-8以外の文字コードでの処理はNG
ヒープ領域の使用はNG(動的メモリ確保禁止&一時領域にはszBuf[256]を使用する。)
構造体の定義・使用はNG(上に関連して。定義だけならOKかも・・・定義するだけしとけば評価点もらえますかね?)
開発環境の再現が困難なため、コンパイル環境無し(質問者都合&ソースに構文ミスがある可能性が・・・)



以下、ソース(開発中)です
※ファイルの入出力自体は雛形化しているため、そこについては省略します。
今回質問したいのは全角、半角でのパディング部分のみです。
全角スペースの処理が全く持ってわからないのです。お助け下さいませ!
あとおかしな記述があれば是正していただければ非常にありがたいです。

本文が長すぎるようなのでここで一旦区切ります。
751749:2008/12/14(日) 12:51:23
/*ヘッダー部分省略*/
int main() {
char szCol1[5+1];
char szCol2[30+1];
char szCol3[21+1];
char szCol4[60+1];
char szBuf[256];
char *pszBuf;
char i;
/* ファイル1行入力処理 省略 */

/* カラム1の処理 */
memset(szBuf, 0x00, sizeof(szBuf));
strcpy(szBuf, szCol1);
memset(szCol1, 0x00, sizeof(szCol1));
sprintf(szCol1, "%05s", szBuf);

/* カラム2の処理 */
memset(szBuf, 0x00, sizeof(szBuf));
strcpy(szBuf, szCol2);
memset(szCol2, 0x20, sizeof(szCol2));
szCol2[30] = '\0';
for (i = 0; i < (sizeof(szCol2)-1); i++){
if (szBuf[i] == '\0'){
break;
}else{
szCol2[i] = szBuf[i];
}
}
/* 以下省略 */
752749:2008/12/14(日) 12:54:48
すみません。単位ではなく単元でしたね。
申し訳ありません。訂正します。
単元:プログラミング実習U
753デフォルトの名無しさん:2008/12/14(日) 13:19:56
>>749
>半角文字が1byte、全角文字が3byteに注意
ってワイド文字への変換禁止?
754デフォルトの名無しさん:2008/12/14(日) 13:30:12
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・乱数を生成し、サイコロの目を10回表示するプログラムを作成せよ。
  -rand関数、srand関数を使って

実行例
5
3
2
6
4
5
2
4
1
6

[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年12月15日(月)まで。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
             逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
            配列の初期化、2次元配列、文字コード、文字データ(char型)
            getchar、putchar、関数、ライブラリ関数、実数のフォーマット指定
            rand関数、srand関数は習いました。
お願いします。
755749:2008/12/14(日) 13:33:02
>>753
すみません。説明不足でした。
ワイド文字への変換は禁止ではありませんが、半角文字指定、全角文字指定のカラムにはそれぞれ、その形式のデータが入ってくる事を前提にしています。
カラム4に関しては、入ってきた物そのまんまに対して、パディングを行い、出力します。よって変換は不要です。
ここまで書いて気づきましたが、カラム4で入ってきたデータが3の倍数で無い時、固定長に仕上げる方法が不明瞭です。
・・・とりあえず、パディングの方法論だけがわかれば、後は当日直前で仕様を確認し、それにあわせて加工するのはアリだと思ってます。
また、これも書き忘れていましたが、マクロの使用は禁止です。
ただし内部的にマクロを使用している標準関数の使用はありです。
よろしくお願いします。こっちは今3の方を考えていますが、メモリ破壊の可能性が怖いです。
756デフォルトの名無しさん:2008/12/14(日) 14:45:33
>>754
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i;

srand(time(NULL));

for(i=0; i<10; i++) printf("%d\n", rand() % 6 + 1);

return 0;
}
757デフォルトの名無しさん:2008/12/14(日) 14:53:52
>>714
お願いできないでしょうか・・・?
758デフォルトの名無しさん:2008/12/14(日) 15:00:18
>>755
int j;

中略

szCol4[60] = '\0';
for (i = 0, j = 0; i < (sizeof(szCol4)-1); i++, j++){
    if (szBuf4[j] == '\0'){
        break;
    } else if (szBuf[j] < 0xC0) {
        szCol4[i++] = 0;
        szCol4[i++] = 0;
        szCol4[i] = szBuf[j];
    } else if (szBuf[j] < 0xE0) {
        szCol4[i++] = 0;
        szCol4[i++] = szBuf[j++]; /* 途中で\0になってもアタシ知らない */
        szCol4[i] = szBuf[j];
    } else {
        szCol4[i++] = szBuf[j++];
        szCol4[i++] = szBuf[j++];
        szCol4[i] = szBuf[j];
    }
}
759749:2008/12/14(日) 16:11:40
>>758
少し理解に時間がかかってしまい、返事が遅れてしましました。すみません。
for文でカウンタをインクリメントしながら中でも同様にインクリメントしているのは、
常に先頭バイトが0xC0及び0xE0である事を確認しながら処理するためですね。
理屈がわかっている人のコードですね。勉強になります。
「/* 途中で\0になってもアタシ知らない */」の所は仕様確認後適切な形にデグレードしておきます。
とても助かりました。ありがとうございます!

760デフォルトの名無しさん:2008/12/14(日) 16:16:38
>>757
ぶっちゃけ、オレには何を言っているかもわからん。
なにか前提となる情報が欠けているのじゃないだろうか。
761デフォルトの名無しさん:2008/12/14(日) 16:21:13
>>757
読み込み方法に関して何か言われてないか?
自力でバイナリを読み解かないといけないのか?

あと出力の書式を教えれ
762549:2008/12/14(日) 17:28:27
>>695

ご返事ありがとうございます。
図は下のPDFの1ページ目です。
http://sparth.u-aizu.ac.jp/icpc2008/data/all.pdf
763デフォルトの名無しさん:2008/12/14(日) 17:39:04
>>546 何とかできたでおじゃる。入力した後はリターン(エンター)を押してたもう。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8310.c
764デフォルトの名無しさん:2008/12/14(日) 17:45:19
765デフォルトの名無しさん:2008/12/14(日) 17:55:45
>>546 さらに訂正でおじゃる。取り込みがおかしかった。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8312.c
766デフォルトの名無しさん:2008/12/14(日) 18:00:59
落ち着けw
767デフォルトの名無しさん:2008/12/14(日) 18:02:56
すまぬ、途中経過のバックアップが残っていて、混乱していたでおじゃるw
768706:2008/12/14(日) 18:07:54
…どういうことかね、麻呂くん。
769デフォルトの名無しさん:2008/12/14(日) 18:13:04
麻ー呂っくワロタが俺はエムアロック派
770デフォルトの名無しさん:2008/12/14(日) 18:43:12
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8313.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:12/15
[5] その他の制限:特にないです。お願いします
771デフォルトの名無しさん:2008/12/14(日) 19:00:45
>>546 さらに訂正でおじゃる。不要な項目があった orz

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

>>768
>>767
772714:2008/12/14(日) 20:52:11
>>760
>>761
言葉足らずだったようで申し訳ございません。
ただ・・・、下のコードを参考に作成しなさいとだけ、言われてます。

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

あと、出力するのは.wavです。
773デフォルトの名無しさん:2008/12/14(日) 21:35:31
[1] 授業単元: プログラミング実習
[2] 問題文
80文字以内の文字列を入力し、べつに指定したキーn(0<n<26)を用いて、文字列
中に各文字を記号化して出力する。
キーnは各文字のコードをn文字分後ろにずらして記号化するための変数で、n=5の
ときは次のようになる。(大文字も同様に行う)
a→f b→g c→h ・・・・・ z→e
 なお、英文時以外の文字は記号化せずそのまま出力するものとし、大文字、小文字
は別々に記号化すること。

<実行例>
入力文字列:C Programming Language.
キーn = 5
出力文字列:H Uwtlwfrrnsl Qfslzflj.

[3] 環境
 [3.1] OS: Windows
 [3.2] VS2005
 [3.3] 言語:C言語
[4] 期限: 2008年12月18日まで

よろしくお願いします。
774デフォルトの名無しさん:2008/12/14(日) 21:43:02
でじゃう゛
775デフォルトの名無しさん:2008/12/14(日) 21:45:24
Cの範疇でまだ、ループぐらいっぽいから80文字以内にスペースが入った時の処理が面倒な件
776デフォルトの名無しさん:2008/12/14(日) 21:45:55
[1] 授業単元: プログラミング実習
[2] 問題文
 80文字以内の英文を入力し、その中にa〜zの文字がそれぞれ何時含まれているかを
調べる。
 大文字はすべて小文字に変換して集計し、英字以外の文字(例えば、空白、コンマ、
ピリオド、数字など)は対象外とする。

<実行例>

[入力英文]
I love Lemon
[出力英文]
e・・・2 i・・・1 l・・・2 m・・・1 n・・・1 o・・・2 v・・・1

[3] 環境
 [3.1] OS: Windows
 [3.2] VS2005
 [3.3] 言語:C言語
[4] 期限: 2008年12月18日まで

よろしくお願いします。
777デフォルトの名無しさん:2008/12/14(日) 21:48:21
>>776
何時?
778デフォルトの名無しさん:2008/12/14(日) 21:57:46
[1] 授業単元: プログラミング実習
[2] 問題文

2種類の文字列を入力して、文字列の多い方の文字列に少ない方の文字列が含まれる
かどうかチェックして、一致した最初の文字列の先頭位置を見つけて表示する。
 チェックは関数を用いて行い、関数の戻り値として一致した文字列の先頭位置を返す
ようにする。なお、入力する文字列は英小文字のみとする。

<実行例>
文字列1:abcbbddeeffaabbc
文字列2:aabbc
文字列2が文字列1の13番目から一致する。

文字列1:aaa
文字列2:aabbbccddabcdaabc
文字列1は文字列2に含まれない。

[3] 環境
 [3.1] OS: Windows
 [3.2] VS2005
 [3.3] 言語:C言語
[4] 期限: 2008年12月18日まで

よろしくお願いします。
779デフォルトの名無しさん:2008/12/14(日) 22:00:55
>>776
#include<stdio.h>

int main(void){
int i, c, count[26]={0};

for(i=0;i<80;i++){
if((c=getchar())==EOF) break;
// if(c=='\n') break;
if('A'<=c && c<='Z') count[c-'A']++;
if('a'<=c && c<='z') count[c-'a']++;
}
for(i=0;i<26;i++){
if(count[i]) printf("%c・・・%d ", 'a'+i, count[i]);
}
return 0;
}
780デフォルトの名無しさん:2008/12/14(日) 22:04:27
>>779
ありがとうございます><
781デフォルトの名無しさん:2008/12/14(日) 22:18:27
>>778
#include <stdio.h>
#include <string.h>
int main(void){
char szStr[2][256];
int iStr1,iStr2;
char *pCRslt;
int 検索する文字列番号,検索される文字列番号;
printf("文字列0を入力してください(最大255文字、小文字のみ)\n");
scanf("%s",&szStr[0]);
printf("文字列1を入力してください(最大255文字、小文字のみ)\n");
scanf("%s",&szStr[1]);
iStr1= strlen(szStr[0]);
iStr2= strlen(szStr[1]);
検索される文字列番号= iStr1 < iStr2 ? 1 :0;
検索する文字列番号 = iStr1 < iStr2 ? 0 :1;
if(pCRslt = strstr(szStr[検索される文字列番号],szStr[検索する文字列番号])){
printf("文字列%dは、文字列%dの%d文字目から一致します。\n",検索する文字列番号,検索される文字列番号,pCRslt-&szStr[検索される文字列番号][0]);
}else{
printf("文字列%dは、文字列%dに含まれません。\n",検索する文字列番号,検索される文字列番号);
}
return 0;
}
2バイト文字の変数とかは適当になおして。
先頭0としてカウントするから先頭から一致すると0文字目になるけど気になるなら+1。
782デフォルトの名無しさん:2008/12/14(日) 22:34:16
>>781
ありがとうございます。
783デフォルトの名無しさん:2008/12/14(日) 22:58:35
>>773  難しいね。やっつけでスマソ
#include<stdio.h>
#include<string.h>
void main(void)
{
int c,n,len;
char m[80];
printf("入力文字列:");
for(c=0;(m[c]=getchar())!='\n';c++)
len=strlen(m);
rewind(stdin);
printf("キーn = ");
scanf("%d",&n);
for(c=0;c<len;c++)
{
if((m[c]>=65&&m[c]<=90)||(m[c]>=97&&m[c]<=122))
{
if(m[c]>=65&&m[c]<=90)
{
if(m[c]+n>90)
m[c]=64+n;
else
m[c]+=n;
}
続く
784デフォルトの名無しさん:2008/12/14(日) 22:59:08
else
{
if(m[c]+n>122)
m[c]=96+n;
else
m[c]+=n;
}
}
}
printf("出力文字列:");
for(c=0;c<len;c++)
printf("%c",m[c]);
printf("\n");
}

オワリ
785デフォルトの名無しさん:2008/12/14(日) 23:02:23
どなたか>>748お願いできますか?
やたらとややこしいですが・・・
786デフォルトの名無しさん:2008/12/14(日) 23:07:18
1] 授業単元:プラグらミング実習
[2] 問題文
温度を、摂氏で入力し、華氏に変換し、表示するプログラムを作れ。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] gcc -o で始める奴
 [3.3] C言語
[4] 期限: 2008年12月20日
[5] その他の制限: scanf関数は使用不可、getchar関数などを使用。出力は実数でお願いします。

自分でやるとなんだか異常な数値が出ます。よろしくお願いします。
787783:2008/12/14(日) 23:09:54
ゴメン 出来てないや
788デフォルトの名無しさん:2008/12/14(日) 23:17:58
>>787
手間かかるけど、int型で文字コードと同じだけのテーブルを用意しておくか
っていうか、やりようはあるけど眠いので明日の夕方まで誰もやらなければやるよ
789デフォルトの名無しさん:2008/12/14(日) 23:39:17
>>786
#include<stdio.h>

double get_value(void){
double ret=0.0, mul=1.0;
int c, sign=1;

c=getchar();
if(c=='-') sign=-1;
else if(c=='+') sign=1;
else if('0'<=c && c<='9') ret=c-'0';
else return 0.0;

while((c=getchar())!=EOF){
if('0'<=c && c<='9') ret=ret*10+c-'0';
else break;
}
if(c!='.') return ret*sign;
for(mul=0.1;(c=getchar())!=EOF;mul*=0.1){
if('0'<=c && c<='9') ret+=(c-'0')*mul;
else break;
}
return ret*sign;
}
int main(void){
double C, F;

C=get_value();
F=9.0/5*C+32;
printf("C=%f F=%f\n", C, F);
return 0;
}
790デフォルトの名無しさん:2008/12/14(日) 23:39:31
>>785 バグってるlist_reverseを書き直した。
lnode *list_reverse (lnode *l)
{
lnode *lnew = NULL;
while(l != NULL) {
lnode *next = l->nextp;
l->nextp = lnew;
lnew = l;
l = next;
}

return lnew;
}
791デフォルトの名無しさん:2008/12/14(日) 23:43:10
>>783
感謝です><
792デフォルトの名無しさん:2008/12/14(日) 23:46:49
>>773
#include<stdio.h>
int main()
{
int n, i;
char m[80];
printf("入力文字列:");
fgets(m, 80, stdin);
printf("キーn = ");
scanf("%d", &n);
for (i = 0; m[i]; i ++) {
if (m[i] >= 'A' && m[i] <= 'Z')
m[i] = (m[i] - 'A' + n) % 26 + 'A';
else if (m[i] >= 'a' && m[i] <= 'z')
m[i] = (m[i] - 'a' + n) % 26 + 'a';
else if (m[i] == '\n')
m[i] = 0;
}
printf("出力文字列:%s\n", m);
return 0;
}
793デフォルトの名無しさん:2008/12/14(日) 23:47:44
>>534できればどなたかお願いします。
794デフォルトの名無しさん:2008/12/14(日) 23:48:43
>>534できればどなたかお願いします。
795 ◆sUfWYz9MSA :2008/12/14(日) 23:50:05
>>542

誰かお願いします。
796デフォルトの名無しさん:2008/12/14(日) 23:53:28
>>773
#include<stdio.h>

int main(void){
char m[80+1];
int i, n;
printf("入力文字列:");
scanf("%80[^\n]", m);
printf("キーn = ");
scanf("%d", &n);
for(i=0;m[i];i++){
if('A'<=m[i] && m[i]<='Z') m[i]=(m[i]-'A'+n)%26+'A';
}
for(i=0;m[i];i++){
if('a'<=m[i] && m[i]<='z') m[i]=(m[i]-'a'+n)%26+'a';
}
printf("出力文字列:%s\n", m);
return 0;
}
797デフォルトの名無しさん:2008/12/15(月) 00:12:39
>>792
>>796
ありがとうございます!
798猫 ◆a5ssS9MdDw :2008/12/15(月) 00:36:57
宿題は宿題なんですが少し特殊なものなのでテンプレを忠実に守ることはできませんでしたが、お助けください。


大学の授業で自由にプログラミングで作品を作れという課題が出ました。自分としてはオセロやはさみ将棋が単純そうで良いかなと思ってます。
ただどうすれば良いのか全然分かりません。。

http://ipl.sfc.keio.ac.jp/text/com-pro-2009beta/main.html

学校ではこのテキストで勉強してきました。

オセロとはさみ将棋の作り方を是非教えて欲しいです。
作るのは1つで良いんですが、あまりにもありふれているという理由で却下される事態を想定した上で、2つ考えています。

環境
OS:Mac
コンパイラとバージョン:
よく分かりませんが、g++ ファイル名.cppで実行しています。
言語:C++
期限:2008年12月19日(金)
その他の制限は上記のWEBテキストを参考にしてください。

身勝手なお願い申し訳ありません。少しでも力になって頂けると大変ありがたいです。どうかよろしくお願いします。
799デフォルトの名無しさん:2008/12/15(月) 00:39:32
>>798
その授業範囲の内容しかつかっちゃだめなのか?
800デフォルトの名無しさん:2008/12/15(月) 00:39:43
>>798
「リバーシのアルゴリズム」
この本を読むといいと思うよ
801デフォルトの名無しさん:2008/12/15(月) 00:49:25
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8318.txt

学校の課題なんですが、自分で途中まで作ったファイルがあまりに長いので
上記のURLに載せておきます。内容等もすべて含まれます。テンプレを守っておりませんが、
どうかよろしくお願いします。
802デフォルトの名無しさん:2008/12/15(月) 00:55:02
>>798
困ったときは15パズル
単純だけど大学のプログラミング課題なんてこんなので十分
803猫 ◆/PrOxY7Zuw :2008/12/15(月) 00:58:06
>>799
いえ、そんなことはありません。
ただあまりにも高度なものを使うと不自然ですし・・・本当に極めて単純なプログラムで作られたオセロやはさみ将棋を提出したいと考えています。
>>800
ありがとうございます。ただ、みなさんの力をお借りして・・・ネットで解決したいと考えて・・・います・_・;
804猫 ◆a5ssS9MdDw :2008/12/15(月) 00:59:44
トリップ間違えましたが>>798>>803です。
連レスすみません。
805デフォルトの名無しさん:2008/12/15(月) 01:14:12
>>798
はるか昔この板にいた人が書いたオセロ
http://pc.2ch.net/test/read.cgi/tech/984182993/337

#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0)
for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=
p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i=
1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++
p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d"
,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}
806デフォルトの名無しさん:2008/12/15(月) 01:14:12
とうとう自由課題をきくやつが出てきたか
で、それをまた友人間でコピーするから
結局受講者の大半が同じ内容になってバレるというオチがつく
まさに人力P2P
一度流すと際限なく流れる
807デフォルトの名無しさん:2008/12/15(月) 01:21:56
>>801
お前が書いたソースなんかどうでもいいから
問題文をそのまま載せろよ
808デフォルトの名無しさん:2008/12/15(月) 01:33:09
>>801
 一応、さっきからソース解析にはいっているけど、
クイックソートしてないし、メモり解放してないし、いやメモリ確保してないところ参照しているし、変数に説明無いし、どこから出てきたのかわからない式があるしで、一から書き直した方が早くできそうな気がしてきた。
誰かやってくれるだろうから、ソース眺めて楽しんでおくわ。
809デフォルトの名無しさん:2008/12/15(月) 01:35:58
>>798
ttp://ipl.sfc.keio.ac.jp/text/com-pro-2009beta/main_c1_s5.html#doc1_id472
> 1.5.1.3 Linuxを持っている人
> 自分でなんとかしなさい。

ワロタ。
ホントにこれ授業のテキストかよ。w
810デフォルトの名無しさん:2008/12/15(月) 03:52:39
>>801
内容はよく見てないが今後のために「プリプロセッサ #if」を検索することをお勧めする
811デフォルトの名無しさん:2008/12/15(月) 06:57:00
>>806
まともなフォローをする気もない採点者を困惑のきわみに陥れるには絶好の機会。バリエーションがいくつか(3くらい)あればOKなのでは。
812デフォルトの名無しさん:2008/12/15(月) 06:59:47
>>801
できたよー
ほとんど1から作り直しちゃったけど…w
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8319.txt
813714:2008/12/15(月) 07:06:16
>>714
>>772
どなたかお願いできないでしょうか?
814デフォルトの名無しさん:2008/12/15(月) 07:19:07
オセロのアルゴリズムって意外と面倒なんだけどな
INT型の配列二つ用意してループまわすのが楽で良いと思う
815812:2008/12/15(月) 07:20:57
>>801
ちょっと間違ってたから修正!
多項式に単項式を16こと言わずいくつでも追加できるようにした。
あと、なんかやりたいことがよくわからなかったので、1つファイルからの1つの多項式を作って並べ替えるだけにしたので、
あとはやりたいように変えてください。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8320.txt
816801:2008/12/15(月) 07:37:33
>>815
ありがとうございます
あと申し訳ないんですが,参照させていただきましたのでうpろだにあげた
コードは削除しておいていただけないでしょうか
817デフォルトの名無しさん:2008/12/15(月) 07:41:58
おいおい・・・
818デフォルトの名無しさん:2008/12/15(月) 07:59:21
なぜ削除するの?
819デフォルトの名無しさん:2008/12/15(月) 09:49:44
誰か>>731をお願いします>_<
820デフォルトの名無しさん:2008/12/15(月) 10:28:15
>>802
大学のレベルと学科によるだろ
821デフォルトの名無しさん:2008/12/15(月) 10:30:41
>>820
本人のレベルにあわせてじゃんけんくらいでいいんじゃね?
822デフォルトの名無しさん:2008/12/15(月) 10:35:39
>>892
少しでも力になって頂けると、とか言ってるけど全部作らせる気満々だよねw
823デフォルトの名無しさん:2008/12/15(月) 12:08:19
どなたか>>534お願いします。
824デフォルトの名無しさん:2008/12/15(月) 12:15:46
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
キーボードから整数値を繰り返し入力し、それをエレメントとしてbinary search treeの
適切な位置に挿入する。負の数が入力されたら終了、
同じエレメントが既に挿入済みの場合、エラーを返す。
insertは木を探索し、適切な位置にエレメント:keyを挿入する。
成功の場合1を、失敗の場合は0を返す。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日中にお願いします。
[5] print_treeは木の構造を表示する関数で、
木構造を持つnode型のポインタを送れば木の構造を表示するというものです。

自分で作ってみたのですが、初期の木作成と、エラー/終了判定までは出来たものの、
肝心の挿入が出来ませんでした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8322.c
よろしくお願いします。
825デフォルトの名無しさん:2008/12/15(月) 12:25:37
>>818
バレない様にじゃね?
826デフォルトの名無しさん:2008/12/15(月) 13:20:00
>>824
これどこからどこまでが自作なの?
827824:2008/12/15(月) 13:34:29
>>826
print_tree以外全てです。
ただ、insertとnewnodeは仕様が指定されていますので、
そこだけ従っています。(書き方に対する指定はありません)

insertとnew_nodeの仕様は
struct node *new_node(int key)
node型構造体の領域を確保し、エレメントの値を代入する。
親子のポインタはNULLで初期化する。
引数:key 戻り値:作成したnode型エレメントへのポインタ

int insert(int key, struct node *root)
binary search treeを探索し、適切な位置にエレメント:keyを挿入する。
引数key:挿入するエレメント
引数root:木の根を示すポインタ
戻り値:エレメントを挿入できた場合は1、既に同じエレメントが存在する場合は0
です。

言葉足らずで申し訳ありません。
828猫 ◆a5ssS9MdDw :2008/12/15(月) 13:41:43
>>798です。

皆さんのレス読ませていただきました!ありがとうございます。
15パズルって良いですね!

…‥どうやって作れば良いか教えてくだしぁ><

できるだけ>>798にあるテキストに沿った構造が良いです><
829デフォルトの名無しさん:2008/12/15(月) 14:16:55
>>828
15パズルでC言語でいいなら作ってやるよ。
830デフォルトの名無しさん:2008/12/15(月) 15:06:16
>>827
合ってるかは知らんけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8323.txt
一応元の形保つようにはしたけど、要らなそうな所は消したりした
831714:2008/12/15(月) 16:24:12
>>714
>>772
どなたかお願いできないでしょうか・・・?
832デフォルトの名無しさん:2008/12/15(月) 16:38:43
>>831
さっぱりわからんな。
そもそも、量子化ってなにすることだっけ?
833デフォルトの名無しさん:2008/12/15(月) 16:41:38
>>832
16bit情報 a
8bit情報 b

b=a/256
834デフォルトの名無しさん:2008/12/15(月) 16:44:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8325.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Stdio 2005
 [3.3] 言語: C
[4] 期限: 12/18 12:00

構造体の問題です、よろしくお願いします
835824:2008/12/15(月) 16:44:52
>>830さん
ありがとうございました。
ただ、問題文には書いていなかったのですが、
外点を表示させなければいけないとのことでした。

外点を表示する関数を残して、insert関数内の(*cur)->parent = root;の下に
これを書き加えたところ、表示が崩れてしまいました。
(*cur)->left = out();
(*cur)->right = out();

末端だけ外点を加えるのは難しいと思いますので、全てのノードに外点を
持たせた状態で外点をエレメントで上書きするように挿入できればと考えたのですが、
現時点では、0が残ったまま、次のエレメントが0の下位ノードとして混在している状態です。

そういった場合ではどのような書き方をすれば良いのでしょうか?
申し訳ありませんが、ご教示願います。
836デフォルトの名無しさん:2008/12/15(月) 17:00:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
スタックを用いて逆ポーランド記法で四則演算できるプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限: 12/16 15:00

よろしくお願いします。
837デフォルトの名無しさん:2008/12/15(月) 17:08:06
[1] 授業単元: ポインタを活用したプログラム
[2] 問題文(含コード&リンク): 課題1のプログラムを科目情報を格納する配列ISysの要素数SNUMがプログラム実行時にキーボード入力から設定されるように変更しなさい。SNUMはmain関数のローカル変数としてint型で宣言すること。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (BorlandC++)
 [3.3] 言語: (C)
[4] 期限: ([2008年12月16日12:00まで])
[5] その他の制限: (なし)

問題ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8326.txt___________________________________

出力される画面(目標)
1111 算数 2 算数の先生 25 1111.txt
2222 国語 2 国語の先生 30 2222.txt

こんな感じになるようにしたいのですが結果が表示されませんorz
期限短いですがご教授願います><
838デフォルトの名無しさん:2008/12/15(月) 17:24:01
>>837
読み込むファイルの全角空白を半角空白に変換
839デフォルトの名無しさん:2008/12/15(月) 17:28:04
>>555,>>650,>>656,>>756
本当に有難う御座いました。
大変助かりました。
840デフォルトの名無しさん:2008/12/15(月) 17:29:58
"TOKYO"などの文字列を扱うにはchar型の配列を用いる。
ただし、文字列はNULL文字を含むので、"TOKYO"を配列で
表現するにはchar s[6]; あるいは char[]="TOKYO";
と宣言する。このとき、初期化方法は、
char s[6]="TOKYO"; あるいは char s[]="TOKYO";
であり、また
char[6]={'T','O','K','Y','O','\0'};  /* \0はNULL文字*/
としてもよい。
このとき、文字数をカウントするプログラムを関数を用いて
どなたか作成してくれませんか??(;´Αс)
841デフォルトの名無しさん:2008/12/15(月) 17:30:42
>>834
void ShowPerson(struct person pdata)
{
printf("number: %d\n",pdata.number);
printf("name : %s\n",pdata.name);
printf("age : %d\n",pdata.age);
printf("height: %.1lf\n",pdata.height);
printf("weight: %.1lf\n\n",pdata.weight);
}
842デフォルトの名無しさん:2008/12/15(月) 17:34:03
>>835
あとだしうざい
>問題文には書いていなかったのですが、外点を表示させなければいけない
どう表示させなければいけないのか
新しい問題文を書いてください
843829:2008/12/15(月) 17:39:58
>>828
はいよ15パズル完成
とりあえずコンパイラcc、OSソラリスでは正常に動いた
あとはtermiosなりエスケープシーケンスで画面消去なり好きなようにするがいい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8327.c
844デフォルトの名無しさん:2008/12/15(月) 17:56:59
>>831
(1)の「WAVE形式のファイルを読み込むプログラムを作成する.」も意味がわかんないな。
1バイトずつ、末尾まで読み捨てるだけでいいんだろうか?
845834:2008/12/15(月) 18:11:23
>>841

for(k=0; k<4; k++){
ShowPerson pd[k];  ←
}
return 0;
}
void ShowPerson(struct person pdata){
printf("== No. %d ==\n",pdata.number);


ShowPerson pd[k];の部分で
「構文エラー:';'が、識別子'pd'の前に必要です」
というエラーメッセージが出てくるのですが、どうすればよいのでしょうか?
846デフォルトの名無しさん:2008/12/15(月) 18:33:21
>>836
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8328.txt
クソース。空白以外のデリミタなど認めない
847デフォルトの名無しさん:2008/12/15(月) 18:40:03
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
0〜9までの4桁の順列の数を当てるHit&Blowというゲームの解答予測プログラムを作りなさい
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語:C
[4] 期限: ([09年12月22日13:00まで]
[5]
http://tokyo.cool.ne.jp/guild_mmk/software.html←ここにあるヒットアンドブロー解答予測ツールみたいなのを作りたいのですが
過去ログにはヒットアンドブローを作るプログラムはあっても解答を予測するプログラムはなかったので質問させて頂きました
848デフォルトの名無しさん:2008/12/15(月) 18:44:44
>>845
括弧
849837:2008/12/15(月) 18:49:23
837です

int main(void)
{
Subject ISys[SNUM]={0}; //科目情報格納用

load_file_data(ISys); //入力ファイルからデータの読み込み

print_subject_data(ISys); //科目データの表示

return 0;
}
ここのSNUMをdefine文でなくscanfで入力したいのですが
変数の宣言の時に
int SNUM;
Subject ISys[SNUM]={0};

scanf("%d",&SNUM);
と記述すると
ISys[SNUM]={0}
のSNUMが定数でないのでコンパイルが通りません><
どうすればいいでしょうか
850714:2008/12/15(月) 19:13:42
>844
おそらく(2)で使うためにファイルを読み込めという意味かと…。
うまい言葉が見つからず、すみません。
851834:2008/12/15(月) 19:39:52
>>848
出来ました、ありがとうございます
852デフォルトの名無しさん:2008/12/15(月) 19:50:53
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8329.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] VC 6.0
 [3.3] 言語:C++
[4] 期限: 2008年12月16日18:00
[5] その他の制限:

  よろしくお願いします。
853475:2008/12/15(月) 20:11:19
[1] 授業単元:プログラミング演習T&U
[2] 問題文(含コード&リンク):
  オリジナルのatoi関数を作成しなさい
  ただし、関数の宣言は
int oriatoi(const char *nptr);
にすること
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Stdio 2005
 [3.3] 言語:C言語
[4] 期限: 12/15(本日中)
[5] その他の制限:特になし

期間が短いので難しいかもしれませんが、よろしくお願いします。
854デフォルトの名無しさん:2008/12/15(月) 20:12:57
[1] 授業単元:システム情報コントロール

[2] 問題文(含コード&リンク)
「現在のマシンが使用しているCPUの使用率を取得せよ」

[3] 環境
 [3.1] OS: Windows
 [3.2] VisualStudio2005
 [3.3] 言語:C++
[4] 期限: 2008年12月16日18:00
[5] その他の制限:
例えば、「メモ帳」とか「エクセル」といったプロセス単位でのCPU使用率取得はサンプルを見つけられましたが、
タスクマネージャーから見れる、パソコン全体の使用率取得方法は調べることが出来ません…
コンソールアプリなのですが、やり方をご存知の方がいましたらサンプルソースを
一本提示して頂けると助かります。
申し訳ないですが宜しくお願いします
855デフォルトの名無しさん:2008/12/15(月) 20:13:40
↑の名前消し忘れゴメンナサイ orz
856デフォルトの名無しさん:2008/12/15(月) 20:45:36
>>847
bccってgccの打ち間違いって解釈でいいの?
857デフォルトの名無しさん:2008/12/15(月) 20:53:51
なんでbccを否定すんの?
858デフォルトの名無しさん:2008/12/15(月) 20:58:46
859デフォルトの名無しさん:2008/12/15(月) 21:06:54
>>853
その先生、atoiが相当嫌いなんだなwww
860デフォルトの名無しさん:2008/12/15(月) 21:39:17
>>843
ありがとうございました!自分で色々いじくってみます!
861デフォルトの名無しさん:2008/12/15(月) 21:58:19
>>853 携帯だから動くかどうか試してないけど
たぶん好まれない解答w
int oriatoi(char *str)
{
int n = 0;
sscanf(str, "%d", &n);
return n;
}
862デフォルトの名無しさん:2008/12/15(月) 21:59:27
>>853
int oriatoi(const char *nptr);

int oriatoi(const char *nptr)
{
int rt_val=0;

sscanf(nptr,"%d",&rt_val);

return rt_val;

}

コンパイルしてない上に明らかに題意に反してるがなw
863デフォルトの名無しさん:2008/12/15(月) 22:00:33
やっぱ考えること一緒だよな…orz
864デフォルトの名無しさん :2008/12/15(月) 22:03:46
>>853
int oriatoi(const char *nptr)
{
int i = 0;
int num = 0;
int flg = 1;

if(nptr[i] == '-'){
flg = -1;
i++;
}else if(nptr[i] == '+'){
i++;
}
for(;nptr[i];i++){
num *= 10;
num += (nptr[i] - '0');
}
return num*flg;
}
865861:2008/12/15(月) 22:05:19
>>862
ちょwwwおま俺www
866デフォルトの名無しさん:2008/12/15(月) 22:07:49
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク)
数式を入力する(例:x^2y^3 + 2x^2z^3 - y^5)
並び替える(優先順位:乗数が大きいものが先、乗数が同じ場合は係数が大きいものを優先する)
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 2008年12月17日
[5] その他の制限:
#include <stdio.h>
#include <string.h>
int main(void){
char siki[] = "";
char *tp;
scanf("%s",siki);//式を入力する
//スペースを区切りに文字列を抽出
tp = strtok( siki, " " );
puts( tp );
while ( tp != NULL ) {
tp = strtok( NULL," " );
if ( tp != NULL ) puts( tp );
}
}
こんな感じで数式を[strtok]によって別けたいんだけど、上手くいかない…
文字列に最初から式を入力してると動くんだけど、
scanfで入力すると動かないんだなー。
どなたかエロい方教えていただけると幸いです。
867デフォルトの名無しさん:2008/12/15(月) 22:15:56
>>866
よく見てないけど、
文字列の初期化のときの""は"\0"と一緒
で、配列のサイズ書いてないから上記の文字列を最低限確保できるサイズと解釈されるから
全然メモリ確保されてないですよ。
868デフォルトの名無しさん:2008/12/15(月) 22:19:32
[1] 授業単元:プログラミングII
[2] 問題文(含コード&リンク):
非線形方程式を2分法を用いて解く場合、解を求めるための繰り返し回数が多くなることが多い。
そこで、分割数を3にした場合(3分法)のプログラムを作成せよ。
ここで作成したプログラムを用いて25の3乗根を求めよ。
[3] 環境
 [3.1] OS:WinVista
[3.2] コンパイラ名とバージョン: VC++2008
 [3.3] 言語: C言語
[4] 期限: 2008年12月18日17:00
[5] その他の制限:C言語の基本はすべてやりました。

よろしくお願いします。
869デフォルトの名無しさん:2008/12/15(月) 22:20:58
>>866
scanf は %s だと、スペースで区切られてしまうので第1項しか入らない。
gets(siki); にするとか、scanf("%[^\n]", siki); としてみるとか
870デフォルトの名無しさん:2008/12/15(月) 22:23:29
[1] 授業単元:計算可能性(?)
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8331.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC++ 6.0
 [3.3] 言語:C
[4] 期限: 2008/12/16/23/00
[5] その他の制限: とくにありません。

お手数ですが宜しくお願いします。
871デフォルトの名無しさん:2008/12/15(月) 22:29:55
>>868 問題文になってない問題だけど、エスパーしてみた
#include <stdio.h>
int A(int a, int b)
{
if(a == 0)
return b + 1;
if(b == 0)
return A(a - 1, 1);
return A(a - 1, A(a, b - 1));
}
int main()
{
int y;
printf("A(1, 3) = %d\n", A(1,3));
printf("A(3, 1) = %d\n", A(3,1));
printf("y="); scanf("%d", &y);
printf("A(2, %d) = %d\n", y, A(2,y));
return 0;
}
872871:2008/12/15(月) 22:30:31
ごめん、>>871>>870だった
873デフォルトの名無しさん:2008/12/15(月) 22:31:47
[1] 授業単元:プログラミング演習

[2] 問題文(含コード&リンク):
次に示す関数void addpoint(int data[ ], int size, int lucky, int point, int bonus)を
作成しなさい。
􀁺 この関数は,配列の中にあるデータ(要素)に対して,一定の値を加算し,さらに特
定のデータのときにさらにボーナス得点を増やすものである。
􀁺 int data[ ]。得点を示す整数配列データ。
􀁺 int size。配列data に入っているデータの要素数。
􀁺 int lucky。ボーナス得点を付与する対象者を計算するための整数。各要素の値が
lucky で割り切れるときにボーナス得点を付与する。
􀁺 int point。すべての要素に加算される値。
􀁺 int bonus。ボーナス得点の値。
この関数を作成し,以下に示すプログラムを追加して,実行しなさい。
874デフォルトの名無しさん:2008/12/15(月) 22:32:42
>>873の続きです

#include <stdio.h>
/*
ここに
void addpoint(int data[ ], int size, int lucky, int point, int bonus)
が入る
*/
void printarray(int data[ ], int size)
{
int i;
for(i = 0; i < size; i ++ ) {
printf("%d ", data[i]);
}
printf("\n");
return;
}
int main(void)
{
int points[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printarray(points, 10);
addpoint(points, 10, 3, 5, 2);
printarray(points, 10);
return 0;
}
実行結果は,
1 2 3 4 5 6 7 8 9 10
6 7 10 9 10 13 12 13 16 15
となると良い。addpoint の第3〜5 引数の値を変えて,さらに試してみること。
875デフォルトの名無しさん:2008/12/15(月) 22:33:22
>>874の続きです

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VisualC++6.0
 [3.3] 言語:
[4] 期限:12/15

長々と申し訳ないです。よろしくお願いします。
876デフォルトの名無しさん:2008/12/15(月) 22:35:52
>>867
>文字列の初期化のときの""は"\0"と一緒
プギャー
>配列のサイズ書いてないから上記の文字列を最低限確保できるサイズ
言いたいことはわかった

>>869
>gets(siki); にするとか
そろそろ、gets()勧めるのやめような
fgets(foo, sizeof(foo), stdin); fooは、char型の配列。
改行が入る可能性があるので、foo[strlen(foo)-1] = '\0';すると幸せになれることが多い。
877デフォルトの名無しさん:2008/12/15(月) 22:38:27
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):次のように課題1 と同じように,2 次元配列matrix を初期化しながら宣言する。
(1) 2 次元配列matrix を,各列のデータを,右端が揃うようにして出力しなさい。出力は
次のようになればよい。
92 80 23 19
36 5 62 58
58 38 94 76
25 94 85 33
3 81 88 67
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語:C

どなたか良ければよろしくお願い致します。
878デフォルトの名無しさん:2008/12/15(月) 22:40:31
>>875
void addpoint(int data[ ], int size, int lucky, int point, int bonus)
{
int i;
for(i = 0; i < size; i++){
if((i + 1)%3 == 0)
data[i] += point + bonus;
else
data[i] += point;
}
}
879878:2008/12/15(月) 22:42:27
>>875
ごめん、訂正
if(i + 1) % 3 == 0) ⇒ if(i + 1) % lucky == 0)
880デフォルトの名無しさん:2008/12/15(月) 22:48:06
>>877
「課題1と同じように」と書いてあるのに、課題1を貼らずに平気で書いてくるんだな
#include <stdio.h>
int main()
{
int matrix[][4] = {{92, 80, 23, 19},
{36, 5, 62, 58},
{58, 38, 94, 76},
{25, 94, 85, 33},
{3, 81, 88, 67}};
int i, j;
for(i = 0; i < 5; i++){
for(j = 0; j < 4; j++)
printf("%3d", matrix[i][j]);
printf("\n");
}
}
881デフォルトの名無しさん:2008/12/15(月) 23:08:09
>>880
初期化する部分しか同じでなかったので良いかと思ったのですが・・・
今思えば、問題文を知らない方にはわかりませんよね
本当に申し訳ないです

ご指摘と回答ともに、ありがとうございます
助かりました!
882デフォルトの名無しさん:2008/12/15(月) 23:14:29
同じ部分がこのスレのどこかにあると言いたいんだろうか。
883デフォルトの名無しさん:2008/12/15(月) 23:14:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
二つの正の整数の最大公約数を求めるアルゴリズム「ユークリッドの互除法」のプログラムは次のようになる。
#include <stdio.h>
int main(void)
{
int m, n, r;
scanf("%d %d", &m, &n);
while(n > 0) {
r = m % n;
m = n;
n = r;
}
printf("%d\n", m);
return 0;
}

(1)このプログラムを参考にして,二つの数の最大公約数を求める関数 int gcd (int m, intn)を作りなさい。
その際に,m とn がともに1 以上でないと適切な解が出ないので,それ以外の場合には-1 を返すように関数を作りなさい。
(2) 関数gcd を呼び出すmain 関数を作りなさい。
二つの整数をキーボードから読み込む,関数gcd を使って最大公約数を求め,その結果を出力すること。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語:C言語
[4] 期限:12月16日12:15
[5] その他の制限:特になし

(2)の方をお願いしたいと思います。
よろしくお願いします。
884デフォルトの名無しさん:2008/12/15(月) 23:17:03
>>877>>362の続きだったのかな。
>>341を見ると90度回転させてくださいって質問に来るのだろうか。
885デフォルトの名無しさん:2008/12/15(月) 23:21:34
[1] 授業単元: 計算機言語アルゴリズム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8334.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: ([2008年12月d20日まで])
[5] その他の制限:
宜しく御願い致しますm(__)m
886デフォルトの名無しさん:2008/12/15(月) 23:23:03
>>853 麻呂のクソースも健在でおじゃっ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8335.c
887デフォルトの名無しさん :2008/12/15(月) 23:25:22
>>877
俺もはろっと
#include <stdio.h>

int main()
{
int matrix[5][4] = {{92 ,80 ,23 ,19},{36, 5, 62, 58},{58, 38, 94, 76,},
{25, 94, 85, 33},{3, 81, 88, 67}};
int i,j;
for(i=0;i<5;i++){
for(j=0;j<4;j++){
printf("%2d ",matrix[i][j]);
}putchar('\n');
}
return 0;
}
888デフォルトの名無しさん:2008/12/15(月) 23:26:00
>>886
if(*np=='\0') { a=0; break; } の a=0; を消しておいてたもう
889870:2008/12/15(月) 23:30:44
>>871
こんなに速くありがとうございます!!
問題文はそのまま書いたのですが、意味がわかりづらくてスイマセン;
890870:2008/12/15(月) 23:31:20
>>871
こんなに速くありがとうございます!!
問題文はそのまま書いたのですが、意味がわかりづらくてスイマセン;
891デフォルトの名無しさん:2008/12/15(月) 23:32:46
>*nums={"0123456789"},
動きはするけど、これはないわw
892デフォルトの名無しさん:2008/12/15(月) 23:32:53
>>883
手抜きver
#include<stdio.h>
int gcd(int a,int b){
    if(a <= 0 || b <= 0)return -1;
    while(a%=b)if((b%=a)==0)return a;
    return b;
}
int main(){
    int m, n;
    scanf("%d %d", &m, &n);
    printf("%d\n", gcd(m,n));
    return 0;
}
893デフォルトの名無しさん:2008/12/15(月) 23:36:57
>>888
また一発で決められなかったのか。
894デフォルトの名無しさん:2008/12/15(月) 23:49:01
>>891 理由は?ctype.h のisdigitを使いたかったのだが
それらを抜きにして自前で作ったのだが、他に何か手があるなら
それを述べてから、反論してくれ。出なきゃ、ただの口先だけに成り下がるぞ。
895デフォルトの名無しさん:2008/12/15(月) 23:49:44
{}をつけた理由を教えてくれw
896デフォルトの名無しさん:2008/12/15(月) 23:59:05
>>892
早速ありがとうございました!
897デフォルトの名無しさん:2008/12/16(火) 00:10:41
[1] 授業単元:科学実習B
[2] 問題文:
数を入力して、ローマ数字を表示するプログラムを作れ

1 i 50 l 1000 m
2 ii 100 c
10 x500 d
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:gcc -o
 [3.3] 言語:C言語
[4] 期限:2008年12月25日
[5] その他の制限:scahfは使用不可。単純な奴でかまいません、よろしくお願いします。
898デフォルトの名無しさん:2008/12/16(火) 00:15:57
意見をする、否定をするくらいなら、自分の意見を述べないと
お前が勝手にそう思っただけだろって、返されるだけだぞ。
少なくとも、人間社会では、出来もしない役立たずが
要らん口出しをすると、干されるだけだぞ。お前こそ出来もしないくせに、ってな。
899デフォルトの名無しさん:2008/12/16(火) 00:18:29
{}は無意味で無駄。
これが俺の意見なんだけど反論できる?
900デフォルトの名無しさん:2008/12/16(火) 00:24:24
>>897
4とか9とかは考えてない。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int n, i, j, d[] = { 1000, 500, 100, 50, 10, 5, 1};
char roman[] = "mdclxvi", str[256];

fgets(str, sizeof str, stdin);

n = atoi(str);

for(i=0; n; i++) {
if(j=n / d[i]) {
while(j--) putchar(roman[i]);
n %= d[i];
}}

return 0;
}
901デフォルトの名無しさん:2008/12/16(火) 00:30:27
>>853 では、クソース改良版で。期限は過ぎたが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8336.c
902デフォルトの名無しさん:2008/12/16(火) 00:34:34
atoiでもINT_MAXの値を超えた場合と同じように動作するので、あしからず。
903デフォルトの名無しさん:2008/12/16(火) 00:37:05
a=0とかflg=1とかは初期化しといたほうが簡潔に書けるだろ。
904デフォルトの名無しさん:2008/12/16(火) 00:39:26
>>897
#include <stdio.h>
#include <stdlib.h>

void n2r(int i){
if(i<=0)return;
if(i>=1000){printf("m");n2r(i-1000);return;}
if(i>=900){printf("cm");n2r(i-900);return;}
if(i>=500){printf("d");n2r(i-500);return;}
if(i>=400){printf("cd");n2r(i-400);return;}
if(i>=100){printf("c");n2r(i-100);return;}
if(i>=90){printf("xc");n2r(i-90);return;}
if(i>=50){printf("l");n2r(i-50);return;}
if(i>=40){printf("xl");n2r(i-40);return;}
if(i>=10){printf("x");n2r(i-10);return;}
if(i>=9){printf("ix");n2r(i-9);return;}
if(i>=5){printf("v");n2r(i-5);return;}
if(i>=4){printf("iv");n2r(i-4);return;}
if(i>=1){printf("i");n2r(i-1);return;}
}

int main(){
char a[10];
int i;
gets(a);
i=atoi(a);
n2r(i);
puts("");
}
905デフォルトの名無しさん:2008/12/16(火) 01:00:45
クソースってのはなぁ、クソだから価値がある。
906デフォルトの名無しさん:2008/12/16(火) 01:04:07
クソなのを指摘されたらマジギレするから困る
907854:2008/12/16(火) 01:08:57
あの、すいません・・・
908866:2008/12/16(火) 01:14:39
>>867
何かソースの無駄を極限まで省くらしい。
無駄なことは一切せずに、とにかく簡単にソートできるようにするんだと。

アドバイスありがとね。

>>869
>>876

ありがとう、大好きだ。
909デフォルトの名無しさん:2008/12/16(火) 01:17:26
>>908
無駄を削るどころか、致命傷になるまで肉を削ぎ落としちゃってるんだけどw
910デフォルトの名無しさん:2008/12/16(火) 01:18:23
確保されてない領域に文字列突っ込んじゃってるしなw
911デフォルトの名無しさん :2008/12/16(火) 01:31:29
912デフォルトの名無しさん:2008/12/16(火) 01:37:12
>>714
書いてみたけど、変な音しか出ない。
何か間違っているようだ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8338.txt
913デフォルトの名無しさん:2008/12/16(火) 01:40:05
>>907
http://blog.goo.ne.jp/masaki_goo_2006/e/6b48817a6c93940e70667e6d6c7ec8ed
普通にぐぐったらこういうのが出てきたんだけど足りないですか?
914デフォルトの名無しさん:2008/12/16(火) 01:41:46
>>906
マジギレだと思っているお前が、マジレスしているからだろw
クソースの意味が分からないなら、レスしない方が良いよ。
所詮ここは、丸投げを適当にあしらうスレ。こんなところで
マジになって、必死に批判している奴の方がキモイ。
そもそも、あの課題は制限がないから、もっと他のライブラリを使えば
スマートに記述できる。そこを、敢えて妙ちくりんにするのが俺の仕事w
915デフォルトの名無しさん:2008/12/16(火) 01:48:00
そういう使命感があるのならもっと妙な仕上げをするべきだし、一発で仕上げるべき。
半端に妙な状態で毎度毎度修正が入ってるのを見ると、単に技量の低いマなんだな、としか見えないよ。
あえて妙ちくりんなコードを仕上げる人は嫌いじゃないから、そういう風に見られるように頑張って欲しい。
916デフォルトの名無しさん:2008/12/16(火) 01:54:39
そういうスレでやれ
917デフォルトの名無しさん:2008/12/16(火) 01:56:14
マとか呼べるレベルじゃねーしw
918デフォルトの名無しさん:2008/12/16(火) 01:56:42
>>913
ありがとう!
解析してみるよ
919デフォルトの名無しさん:2008/12/16(火) 02:02:30
いつからマは資格制になったんだ?
920デフォルトの名無しさん:2008/12/16(火) 02:05:39
>>903
もっとはっきりと。少なくとも、atoiでは+を先頭につけてもおkだし、無い場合は+として扱われるし。
その辺、理解して意見してる?思いつきで言ってない?もちっと解析してみ。
921デフォルトの名無しさん:2008/12/16(火) 02:07:41
>>903
っつか、そこまでごちゃごちゃ言うなら、自分で書いたのを提示しろよ?
口先だけのチキン野郎だと思われるし、動作に問題がないなら
むしろ批判だの、個人的なスタイルの押し付けこそナンセンスだぞ。
言うくらいなら、お前がコードで示せ、な?
口先ばっかりの奴ほど、社会では役に立たないことくらい、理解しているだろ?
現実はそう甘くない。
922デフォルトの名無しさん:2008/12/16(火) 02:09:51
お前社会出てないだろw
923デフォルトの名無しさん:2008/12/16(火) 02:11:25
何か自分の主観を言わなければ気が済まない、構ってチャンがいるな。
物申す、意見をするくらいなら、コードを書いて自分の考えを示せよ。
少なくとも、間違っていないことに口出しするのは、かえって自分の
立場を悪くするぞ。この世は、多種さまざまな、色々なスタイルが存在するのだが
それぞれ必要に応じて、メリットデメリット、必要性も考慮すべきではあるが、
問題の無い部分を矢鱈と口出しする奴は、日頃は自分の方がしょぼ過ぎて
他人に重要でもないことでも、問題があるとして指摘されることが多いんだろうね。
引きこもり?もっと外で人間社会を学んだ方が良いよ?
924デフォルトの名無しさん:2008/12/16(火) 02:15:30
なんだなんだ?と思ってみてみた。

int flg,a;
// 先頭の空白は無視
while(*p == ' ') p++;

// 先頭に符号を記入した場合
if(*p == '-') { flg=-1; p++; }
else if(*p == '+') { flg=1; p++;}
else flg=1; // 符号が無い場合は +

a=0;

これを、

int flg=1,a=0;
// 先頭の空白は無視
while(*p == ' ') p++;

// 先頭に符号を記入した場合
if(*p == '-') { flg=-1; p++; }
else if(*p == '+') {p++;}

こうしたらちょっと減るよねって言いたいだけなんじゃないの?
925デフォルトの名無しさん:2008/12/16(火) 02:16:45
>>903
言いたいことは分かるが、具体的に記述して書かないお前は卑怯者。
それぞれの変数が、どの部分でどのような値をとるか?
使われる直前に記述して構わないだろ?
よく素人や未熟者が勘違いしていることは、コードが短い=効率が良い
みたいな思い込み。人間が見て分かりやすくするのも、他者とのやりとりでは
重要なスキル。
あと、こんな時間に起きていて、しかもこんな場所で必死に噛み付いているなんて
別の面で人間性を疑われるよw
926デフォルトの名無しさん:2008/12/16(火) 02:17:59
言いたいこと分かってたなら>>920のようなズレたレスはしない
927デフォルトの名無しさん:2008/12/16(火) 02:18:57
[1] C
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8339.txt
   http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8340.txt
[3]
 [3.1] LINUX
 [3.3] C
[4] 水曜日13時まで
[5] 特にないです。
928デフォルトの名無しさん:2008/12/16(火) 02:19:56
903見て924のように理解できないのはやばいな。
929デフォルトの名無しさん:2008/12/16(火) 02:22:35
正符号を考慮した俺のコードがちゃんと読めてないのかよ、という上から目線がイタい。
930デフォルトの名無しさん:2008/12/16(火) 02:23:53
次のレスに、社会に出て働いたことがないんだろうね、という文が含まれるに1億ジンバブエドル
931デフォルトの名無しさん:2008/12/16(火) 02:31:43
>>927
(1)
void SwapPtr(struct BTREE *ptr){
    struct BTREE *tmp=ptr->left;
    ptr->left=ptr->right;
    ptr->right=tmp;
}
void ReverseTree(struct BTREE *ptr){
    if(!ptr)return;
    ReverseTree(ptr->left);
    ReverseTree(ptr->right);
    SwapPtr(ptr);
}
(2)
int CountData(struct BTREE *ptr,int searchdata){
    return ptr ? CountData(ptr->left,searchdata) + CountData(ptr->right,searchdata) + (ptr->data == searchdata) : 0;
}
(3)
void TraverseTreeDump(struct BTREE *ptr){
    if(ptr==NULL){
        return;
    }else{
        TraverseTreeDump(ptr->left);
        printf("%d:%p ",ptr->data,ptr);
        TraverseTreeDump(ptr->right);
    }
}
932デフォルトの名無しさん:2008/12/16(火) 02:45:08
結局{}をつけた理由を教えてくれなかったw
933デフォルトの名無しさん:2008/12/16(火) 02:51:56
>>931
> よく素人や未熟者が勘違いしていることは
などという書き方をする人が書いたコードであればつっこみたいな。
別に問題あるコードじゃあないんだけど。

>>932
{}取っても大丈夫なんだと、むしろ、そっちの方が一般的なのだと
理解して去っていったんだと思っておけばおk
934デフォルトの名無しさん:2008/12/16(火) 03:03:06
長文は何年も前からC関係のスレに住み着いてるのに、まだあのレベルだしなw
もう少し謙虚にならないと成長しないよ。
935デフォルトの名無しさん:2008/12/16(火) 03:42:37
[1] 授業単元: C言語
[2] 問題文
ttp://sasa.cis.ibaraki.ac.jp/member/sasaki/ProEn2/kadai1.pdf
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: C
[4] 期限: 12月17日
必須問題すらできません
必須だけでもよろしくお願いします
936デフォルトの名無しさん:2008/12/16(火) 04:08:24
937デフォルトの名無しさん:2008/12/16(火) 04:15:19
[1] 授業単元: プログラミング及び演習2
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8342.txt
[3] 環境
 [3.1] OS: WinXP SP3
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
 [3.3] 言語: C
[4] 期限: 2008/12/16 1300時迄
[5] その他の制限: 特別な制限はありません。教科書見ても分からないものが入っていなければ嬉しいです。
宜しくお願い致します。
教科書は、柴田望洋さんの[新版]明解 C言語 入門編 です。一応ほぼ一通り終わっています。
938デフォルトの名無しさん:2008/12/16(火) 04:17:31
939デフォルトの名無しさん:2008/12/16(火) 04:21:36
宿題じゃないからこっちには書かないが、
俺にもアドバイス頼むわ・・・

http://pc11.2ch.net/test/read.cgi/tech/1225422971/
940デフォルトの名無しさん:2008/12/16(火) 04:26:48
ごめん>>938はスタックの表示が逆だったね。発展3まで
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8344.txt
941デフォルトの名無しさん:2008/12/16(火) 04:29:32
>>912
「8ビットでは128が無音,16ビットでは0が無音」と言うのを見つけた。
256で割った後、128を引くようだ。

wavの形式には6bitや3bitの量子化と言うのは無いようだ。
942デフォルトの名無しさん:2008/12/16(火) 04:35:00
943デフォルトの名無しさん:2008/12/16(火) 04:40:32
>>937
やるのってレポート課題5だけだよね?
main関数の下辺りにこれを書いたら出来上がりっと
int set_word(int argc,char**argv,WORD*word){
    int i;
    for(i=1;i<argc;++i){
        strcpy(word[i-1].letter , argv[i] );
        word[i-1].length = strlen(argv[i] );
    }
    return argc-1;
}
void lexicosort(WORD*word,int num){
    int i,j;
    for(i=0;i<num;++i)
    for(j=i+1;j<num;++j)
        if(strcmp(word[i].letter,word[j].letter) > 0){
            WORD tmp=word[i];
            word[i]=word[j];
            word[j]=tmp;
        }
}
944デフォルトの名無しさん:2008/12/16(火) 04:42:43
945937:2008/12/16(火) 04:53:01
>>943はい、レポート課題5だけですー。
組み込むとエラーが出てコンパイルできないのですが、組み込み方が悪い・・・のかなぁ;;
レポート課題4の解答のプログラムに組み込んで作るのです。もし宜しければどこにどう組み込むかをご教授願えませんか…!
946937:2008/12/16(火) 04:58:42
具体的には、
int set_word〜の部分の行で「型名が必要」と返されてコンパイルできないのです。
型名…?をどう宣言すればいいのでしょうか…!
947デフォルトの名無しさん:2008/12/16(火) 05:00:50
レポート課題5用の解答を>>943にもらって

それをレポート課題4に適用したい、と?
948デフォルトの名無しさん:2008/12/16(火) 05:04:08
>>945
んーと、問題文を読む限りでは
main関数とかは全部レポート5をそのまま使え。関数だけ実装しろって書いてる。
だから
--- ここから exlexico.c の main 関数 ---
〜〜〜
--- ここまで exlexico.c の main 関数 ---
の間のコードだけ抜き出してそのコードの下に>>943のコードを足せばいい。

この問題はレポート4からの流用は殆ど無理な問題ー
949937:2008/12/16(火) 05:05:40
>>947レポート課題4に>>943の答えを頂いて自分で組み込んだ所、「型名が必要」とのエラーが返ってきたので、その対処法を教えて頂きたい。
こういう意味ですー。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8348.txt
上げておきました。宜しくお願いします。
950デフォルトの名無しさん:2008/12/16(火) 05:06:23
>>935
3個目だめだったかも。ちょっと追加!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8347.txt
4個目
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8349.txt

こーゆー構文解析的なものって面白いよね。
951937:2008/12/16(火) 05:07:55
>>948
な、成程・・・。そういう意味でしたか・・・。
やってみますっ!
952937:2008/12/16(火) 05:09:39
できました!!ありがとうございました〜!
953デフォルトの名無しさん:2008/12/16(火) 06:43:20
昨日から今日にかけて宿題多いな・・・

>>847
今日の4時から取り掛かるよ。
954953:2008/12/16(火) 09:07:32
>>847
4時とかいいつつもう作っちゃった
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8350.c
955935:2008/12/16(火) 11:41:51
すみません、本当助かりました
ありがとうございました
956デフォルトの名無しさん:2008/12/16(火) 12:02:37
>>953
ほんと助かりました><
ありがとー
957デフォルトの名無しさん:2008/12/16(火) 12:08:20
[1] 授業単元:ネットワークプログラミング演習
[2] 問題文:
http://ホスト名:ポート番号/パス
で表されたURLを、ホスト名、ポート番号、パスにparseする関数を
作り、それをmain関数から実行するプログラムを作成せよ
関数の返り値はURLがparseできたかどうかを表すint型の値で、
ホスト名などは構造体にまとめてポインタとして渡すようにすること。
また、ポート番号は省略可能でデフォルト値は80とする。

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

よろしくお願いします。
958デフォルトの名無しさん:2008/12/16(火) 12:11:14
>>957
すいません、補足です
URLが
http://www.hoge.com:8080/usr/bin/hoge.txt
だとすると
ホスト名 www.hoge.com
ポート番号 8080
パス /usr/bin/hoge.txt
となるようにして下さい
959デフォルトの名無しさん:2008/12/16(火) 12:18:15
>>941
WAVのフォーマットは触らないで、
音の大小だけを65536段階から、256段階に返還するのかな?
960デフォルトの名無しさん:2008/12/16(火) 12:48:31
>>957
#include <stdio.h>
struct URL {
char host[256];
int port;
char path[256];
};
int parse(const char* raw, struct URL *url)
{
url->port = 80;
url->path[0] = '\0';
if(sscanf(raw, "http://%[^:/]:%d%s", url->host, &url->port, url->path) == 3)
return 0;
if(sscanf(raw, "http://%[^:/]%s", url->host, url->path) == 2)
return 0;
if(sscanf(raw, "http://%[^:/]", url->host) == 1)
return 0;
return 1;
}
int main()
{
struct URL url;
if(parse("http://www.hoge.com/usr/bin/hoge.txt", &url) == 0){
printf("ホスト名 %s\n", url.host);
printf("ポート番号 %d\n", url.port);
printf("パス %s\n", url.path);
} else {
printf("エラー\n");
}
return 0;
}
961デフォルトの名無しさん:2008/12/16(火) 12:52:47
962デフォルトの名無しさん:2008/12/16(火) 13:19:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): フィボナッチ数列という有名な数列がある。
以下のプログラムはある整数を入力し、その整数以下のもっとも大きなフィボナッチ数列に含まれる整数を返すものである。

#include <stdio.h>

int main(void){

int limit,new=1,pre=0,work result;
scanf("%d", &limit);
while(new<=limit){
/*printf("%d %d\n,pre,new);トレース用*/
work=new;
new=work+pre;
pre=work;
}
result =pre;
printf("%d\n", result);
}
963962:2008/12/16(火) 13:19:58
>>962の続き

このプログラムの一部を関数にして書き換えたとする。

#include <stdio.h>

/*ここに関数を記述*/

int main(void){

int limit,result;
scanf("%d",&limit);
result=fibnum(limit);
printf("%d\n, result);
}

「ここに関数を記述」とある部分に関数を記述し、プログラムを完成させなさい。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語:C
[4] 期限:12月16日24時

期間が短くて申し訳ないのですが、よろしくお願いいたします。
964デフォルトの名無しさん:2008/12/16(火) 13:22:41
せめてそこは理解しとかないと今後何もできないんじゃww
965デフォルトの名無しさん:2008/12/16(火) 13:27:59
void fibnum(int limit) {
int f0, f1;
f0 = 0; f1 = 1;
printf("%d\n", f0);
printf("%d\n", f1);
while(1){
f0 += f1;
if (f0 > limit) return;
printf("%d\n", f0);
f1 += f0;
if (f1 > limit) return;
printf("%d\n", f1);
}
}
966868:2008/12/16(火) 13:36:25
お願いします。
二分法はわかるのですが、分割を三つにした場合の計算式がわかりません。
967デフォルトの名無しさん:2008/12/16(火) 13:40:40
>>966
それはプログラミングじゃなくて数学の質問じゃないのか
968962:2008/12/16(火) 13:47:06
>>965
ありがとうございます
助かりました
969デフォルトの名無しさん:2008/12/16(火) 13:56:42
>>960-961
ありがとうございます
あらかじめ
url->path="/";
としておけばhttp://example.com:8000 でも大丈夫ですよね?
970デフォルトの名無しさん:2008/12/16(火) 14:06:51
>>966
3分割ってようするに黄金分割法だよね
#include<stdio.h>
#include<math.h>
const double EPS = 10e-8;
double g(double x){return fabs(x*x*x-25);}
bool zero(double x){return (x<0?-x:x)<EPS;}
const double r = 0.381966;
double f(double a,double c,double d,double cx){
    if(zero(d-a))return (a+d)/2;
    double b = a + r * (d - a) , bx= g(b);
    return bx < cx ? f (a,b,c,bx) : f(d,c,b,cx);
}
double f(double a,double d){
    double b = a + r * (d - a) ,bx = g(b);
    return f(d,b,a,bx);
}
int main(){
    double t = f(0,5);
    printf("%g %g\n",t,t*t*t);
}
971デフォルトの名無しさん:2008/12/16(火) 14:09:15
>>969
やってみればわかるだろ
大丈夫じゃない
pathが":8000"になる
972970:2008/12/16(火) 14:29:24
>>966
あーもしかすると単純に2分探索を3分にしただけの事を指してるかもしれないので
それも一応書いとく
#include<stdio.h>
#include<math.h>
const double EPS = 10e-8;
double g(double x){return x*x*x-25;}
bool zero(double x){return (x<0?-x:x)<EPS;}
double f(double a,double d,double ax,double dx){
    double b = a+(d-a)/3*1 , bx= g(b);
    double c = a+(d-a)/3*2 , cx= g(c);
    if(zero(d-a))return (a+d)/2;
    if(bx > 0)return f(a,b,ax,bx);
    if(cx > 0)return f(b,c,bx,cx);
    return f(c,d,cx,dx);
}
double f(double a,double c){
    return f(a,c,g(a),g(c));
}
int main(){
    double t  = f(0,25);
    printf("%g %g\n",t,t*t*t);
}
973960:2008/12/16(火) 14:35:11
>>961
対処療法的だけど、最後の / がないときにパスをどうするかって仕様が与えられてないので '/' にすると仮定するとこんな感じで


int parse(const char* raw, struct URL *url)
{
url->port = 80;
>>> sprintf(url->path, "/");
if(sscanf(raw, "http://%[^:/]:%d%s", url->host, &url->port, url->path) == 3)
return 0;
>>> if(sscanf(raw, "http://%[^:]:%d", url->host, &url->port) == 2)
>>> return 0;
if(sscanf(raw, "http://%[^:/]%s", url->host, url->path) == 2)
return 0;

>>> の部分が差分
974デフォルトの名無しさん:2008/12/16(火) 14:44:27
>>736 エラーがでて作動しませんでした。。コマンドプロンプト?かなんかで作動させた時には少し動いたのですが・・・
   あと学校からinput.datってやつが入力データが入ってるので、そこの部分だけ変えました。
scanf("%s",&data->name); 115
scanf("%d",&menu); 75
} 53
注意がでてたのこの部分です。よこの数字は行数です。
あとデータの昇順がはいてなかったように感じます。よろしくお願いします。
975714:2008/12/16(火) 14:48:20
>>912
確かに変な音が出るだけですね。
どうすればいいんだろ・・・?

>>959
おそらくそういうことだと思います。
976デフォルトの名無しさん:2008/12/16(火) 15:09:22
>>974
>scanf("%s",&data->name); 115
&がいらない。最近つける奴多いよな。

>scanf("%d",&menu); 75
enumじゃないか。作った奴の頭は大丈夫なのか。
int型変数使えって。

>} 53
enum MENU::EXITが、無いからと思うが、警告程度と思うよ。

あと、main()内でfclose()読んでいるところが間違っている。if () { }にするようにね。
リソース管理くらいきちんとしてほしいなぁ。


 作りなおした方が、早くできると思うけど、わざわざ単方向連結リストを作る気がないので、気が向いた方よろしく。
双方向なら楽なんだけどなぁ。
977デフォルトの名無しさん:2008/12/16(火) 15:26:09
>>975
>どうすればいいんだろ・・・?
hoge=(char)(mono/256);

hoge=(char)(mono/256)+128;
で、とりあえず正弦波にはなった。

>おそらくそういうことだと思います。
こんな風なのだろうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8351.txt
978デフォルトの名無しさん:2008/12/16(火) 15:39:48
>>975
なにを作りたいのか正確にわからんけどプログラムを作ろうとか無理があると思うのだが
まずは出題者の意図を明確にすべきでは?

少なくとも現状のここのやりとりで、
どこを質問すればいいかぐらいは分かりそうな気がするが。
979デフォルトの名無しさん:2008/12/16(火) 15:40:56
>>975
8bitのwavはunsigned charだから
/* データ数読み込み */
while(1){
unsigned char hage;
fread(&mono,sizeof(short),1,fin);
if(feof(fin)){
break;
}
hoge=(char)(mono/256);
hage = (unsigned char)hoge + 128;
fwrite(&hage, 1,1, fout);
//printf("%x,%x\n",mono,hoge);
DataNum++;
}
にすれば
980デフォルトの名無しさん:2008/12/16(火) 16:01:06
>>977
こんなん見つけた
o 8bit ならば符号無し unsigned (0 〜 255, 無音は 128)
o 16bit ならば符号付き signed (-32768 〜 +32767, 無音は 0)
981デフォルトの名無しさん:2008/12/16(火) 17:23:15
>>976 双方向も習ったんですが、教授のプログラム条件に、単方向連結リストを使えっていうのがありました・・・
982714:2008/12/16(火) 17:36:13
>>977
>>979
やっぱり変な音が出るだけですね・・・。
983デフォルトの名無しさん:2008/12/16(火) 17:37:59
>>981
>>771 のクソースは無視かい・・・

984デフォルトの名無しさん:2008/12/16(火) 17:54:54
>>982
ウチでは正弦波になったよ
985714:2008/12/16(火) 18:01:03
>>984
ありゃ・・・?
私がどっか間違えたのかもですね
986デフォルトの名無しさん:2008/12/16(火) 18:20:22
987デフォルトの名無しさん:2008/12/16(火) 18:22:22
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8353.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] VC 6.0
 [3.3] 言語: C++
[4] 期限: 2008年12月17日19:00まで
[5] その他の制限:

課題2のみお願いします。
課題2で使う課題1のソースは自作して問題文に張っておいたので
それを使用して作成おねがいします。
988デフォルトの名無しさん:2008/12/16(火) 19:39:22
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8355.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C++
[4] 期限: 2008年12月17日
[5] その他の制限:
   お願いします
989デフォルトの名無しさん:2008/12/16(火) 19:45:34
>>988
よく分からんけどその計算式通りに計算させればいいんじゃないの?
係数とかは与えられているんだから。
990デフォルトの名無しさん:2008/12/16(火) 19:46:11 BE:605894988-PLT(36020)
次スレ立てました
C/C++の宿題を片付けます 120代目
http://pc11.2ch.net/test/read.cgi/tech/1229424329/
991989:2008/12/16(火) 19:46:53
>>988
あれ?よく見ると負にならないか?
992デフォルトの名無しさん:2008/12/16(火) 20:02:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8356.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] cc
 [3.3] 言語:C
[4] 期限: 2008年12月18日17:00まで
[5] その他の制限: 特になし.

問題文と一緒に、一度作成してみたプログラム(不完全です)とその問題点を載せています。
993デフォルトの名無しさん:2008/12/16(火) 20:07:04
なるな・・・この問題作ったやつ誰だ・・・

float Pn = 初期値;
float a = 初期値;
float area = 初期値;

for(200回繰り返す)
{
Pn = a * Pn * (1 - area/Pn);
}

大体こんな感じかー。
しかし、初期値の段階を代入した瞬間に

5×4000×(1−80000÷4000)

=20000×(1−20)

=−380000

死 の 荒 野 爆 誕 !


まあ多分これが正解だろうけども

Pn = a * Pn * (1 - Pn/area);
994デフォルトの名無しさん:2008/12/16(火) 20:13:15
>>993
Pn でPn を計算してるぞ
995デフォルトの名無しさん:2008/12/16(火) 20:14:44
>>992
/* 酔っ払ってるから間違ってるかも */
#include <stdio.h>
#include <ctype.h>

int word(char s[])
{
int i, c = 0;
for (i = 0; s[i + 1] != '\0'; ++i)
if (!isspace(s[i]) && isspace(s[i + 1])) ++c;
return c;
}

int main(void)
{
char s[256];
fgets(s, 256, stdin);
printf("%d\n", word(s));
return 0;
}
996デフォルトの名無しさん:2008/12/16(火) 20:17:22
>>992
要は区切り文字が連続する場合は1つの区切り文字とみなしたいわけね?
だったら1つ前の文字が区切り文字だったかどうか記憶する必要があるね
#include <stdio.h>
int word(char s[])
{
int n, i, j, space;
i = 0;
j = strlen(s);
space = 0;
for(n = 0; n < j; n++) {
if (isspace(s[n])) {
if(! space)
i++;
space = 1;
} else
space = 0;
}
return i;
}
997デフォルトの名無しさん:2008/12/16(火) 20:18:28
998デフォルトの名無しさん:2008/12/16(火) 20:21:58
>992
仕様の問題。
fgetsは改行文字も含めて文字列を生成だから多分

{'a','a',' ',' ',' ','b','b','\n','null'}

こんな感じではいってるっぽ。
んでisspaceの仕様は空白文字でtrue
空白文字は'\n','\r','\t','\v','\f',' 'を指すので、
上の文字列が入力されてるなら' '三文字と'\n'一文字で合計が4。

ということなんだと思うから適当に変えてみればいかがだろうか。
1減らしたり'\n'に0入れるとか。
999デフォルトの名無しさん:2008/12/16(火) 20:27:33
>>998
\n は残したほうが好都合だろ
2語のとき 'a', ' ', 'b' だったら区切り文字数 = 単語数 - 1 だが
'a', ' ', 'b', '\n' なら区切り文字数 = 単語数だ
1000デフォルトの名無しさん:2008/12/16(火) 20:28:20
1000なら宿題終わらない
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。