C/C++の宿題を片付けます 119代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/12/03(水) 23:08:12【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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/
0002デフォルトの名無しさん
2008/12/03(水) 23:19:16[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の訂正をお願いします。
0003デフォルトの名無しさん
2008/12/03(水) 23:47:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8201.txt
0004デフォルトの名無しさん
2008/12/04(木) 00:18:59>>988
問題文だけ読んだら
./cal 5 + 6 [Enter]
11
./cal 8*7 [Enter]
56
とかいう感じのプログラムを想像した
0005デフォルトの名無しさん
2008/12/04(木) 00:29:52int 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 よくできたね
勉強になったわ
0006デフォルトの名無しさん
2008/12/04(木) 00:30:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8189.txt
前半の部分はできたのですがbtree_find()の改良がうまくいかないので誰か助けてください。
お願いします。
0007デフォルトの名無しさん
2008/12/04(木) 00:33:12前スレ>>958-959に問題と答えある。全く同じ課題。H大学。
0008デフォルトの名無しさん
2008/12/04(木) 00:46:39おまいら別人?
見た感じ同じ課題か
なんかこういうことでないかと思うが。
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);
}
00098
2008/12/04(木) 00:48:28解答済みだったか・・・
0011デフォルトの名無しさん
2008/12/04(木) 02:01:43881で質問した者です。解いていただいて本当にありがとうございます。
ただ、[5] のその他の制限の通りwhileのループを用いないといけないのですが、
教えていただけますでしょうか。(まだfor whileの導入が終わった段階なので)
重ね重ねもうしわけありません。
0012デフォルトの名無しさん
2008/12/04(木) 02:47:50[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は習いました。
お願いします。
0013デフォルトの名無しさん
2008/12/04(木) 02:51:250014デフォルトの名無しさん
2008/12/04(木) 03:21:24当方の環境は 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
こんどはどうですか?
0016デフォルトの名無しさん
2008/12/04(木) 08:17:16引数にしたいってこと?
それともビルドをDOSでやりたいの?
0017デフォルトの名無しさん
2008/12/04(木) 09:41:22#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;
}
0018デフォルトの名無しさん
2008/12/04(木) 11:03:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8203.txt
0019デフォルトの名無しさん
2008/12/04(木) 13:11:49[1] 授業単元: プログラミング入門演習
[2] 問題文:生年月日から今日までの経過日数計算簡易プログラム
誕生日と今日の日付を西暦・月・日の順にスペースで区切りながら入力。
誕生日が今日の日付より後になっていた場合はエラーメッセージを表示する。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 12月5日(金)
[5] その他:日数計算のとこはすでに出来ています。
エラーメッセージ表示のとこの条件がわかりません><
どなたかお願いします!
0020デフォルトの名無しさん
2008/12/04(木) 13:44:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8205.c
0021デフォルトの名無しさん
2008/12/04(木) 14:40:53[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] その他:特になし
0022デフォルトの名無しさん
2008/12/04(木) 14:51:11[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):99文字までの文字列を入力し,アルファベットの小文字は大文字に,アルファベットの大文字は小文字に,またアルファベット以外の文字はアスタリスク’*’に変換した文字列を出力するプログラムを作成せよ.
[3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:わからないです
[3.3] 言語:c++
[4] 期限: 今日の夜
[5] その他の制限:ライブラリ関数は使用せずにお願いします。
0023デフォルトの名無しさん
2008/12/04(木) 15:03:35#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;
}
0024デフォルトの名無しさん
2008/12/04(木) 15:04:05やってくれたのは有り難いんですが、思うような結果が出なかったので、お手数ですがもう一度やって貰えないでしょうか?
お願いします。
0025デフォルトの名無しさん
2008/12/04(木) 15:04:41#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;
}
0026デフォルトの名無しさん
2008/12/04(木) 15:27:230027デフォルトの名無しさん
2008/12/04(木) 15:40:06アンダーバーが抜けてる
0028デフォルトの名無しさん
2008/12/04(木) 15:44:14>>14じゃないがどう思うような結果と違ったのか書けよ禿げ
同じソースが出てくるかもしれんぞ
・・・・ fgets と scanf を組み合せたために '\n' が残ってしまっているんだとは思うけど
0029デフォルトの名無しさん
2008/12/04(木) 16:47:16[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、タブ改行はスペースに置換し、計数する(それ以外の文字についてはそのまま扱う)
ものとする。」という問題なのですが、
自分なりに書いたコードでは大量のエラーが出てしまい困っています。
どうすれば正しく動くようになるでしょうか?
003029
2008/12/04(木) 16:59:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8208.txt
最後によくわからない記号が含まれていましたので、
もしかしたら入れる段階から間違っているのかもしれません。
よろしくお願いします。
0031デフォルトの名無しさん
2008/12/04(木) 17:06:030032デフォルトの名無しさん
2008/12/04(木) 17:08:08struct 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とかいう変数名はやめろ
0033デフォルトの名無しさん
2008/12/04(木) 17:16:24ご指摘有り難う御座います。
>>17-18を見落としていたので、>>17-18を一回コンパイラしてみます。
何だかすいません。
0034デフォルトの名無しさん
2008/12/04(木) 18:32:26[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
よろしくお願いします。
003535 ◆z66TI33ApM
2008/12/04(木) 19:29:18[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
尚、そのときのトリップは忘れてしまったので適当につけています
003622
2008/12/04(木) 19:29:21printf scanf int char a[100] for while ぐらいしか習ってないので
これらでやってもらってもよろしいですか?
あと実行結果を
「99文字以下の文字列を入力してください
変換された文字列は です。」
としてくれたら助かります。
本当にごめんなさい。
0037デフォルトの名無しさん
2008/12/04(木) 19:32:07[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] その他の制限:どこまでかわからないですが、基礎的なことしか習ってません。
本当にじかんがないので速攻でよろしくお願いします。
0038デフォルトの名無しさん
2008/12/04(木) 19:46:02言語は本当に「C++」なの?
0039デフォルトの名無しさん
2008/12/04(木) 19:50:55#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;
}
0040デフォルトの名無しさん
2008/12/04(木) 19:51:12マルチするな馬鹿野郎
0041デフォルトの名無しさん
2008/12/04(木) 19:59: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;
}
004222
2008/12/04(木) 20:01:48>>39 とっても助かりました。いけました。
みなさんありがとうございました。
自分で作ってみたのと比較して勉強してきます。
0043デフォルトの名無しさん
2008/12/04(木) 20:32:28[2] 問題文(含コード&リンク): 5桁の整数A,Bの四則演算をするプログラム
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:日曜日
[5] その他の制限: scanfを使わずにgetchar関数を使う
getcharだと・・・
よろしくお願いします。
0044デフォルトの名無しさん
2008/12/04(木) 20:51:14本当にwindowsでVCなんだろうな、その環境というかwin32apiのパイプでいいのか?
あとgnuplotへのパスは通ってると思っていておk?
004535 ◆z66TI33ApM
2008/12/04(木) 20:56:17すいません、間違えていました
自宅の環境を書いていましたが、大学の環境を書くべきでしたね
[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
尚、そのときのトリップは忘れてしまったので適当につけています
おねがいします
004629
2008/12/04(木) 21:16:10御指摘ありがとうございます。
教えていただいたところを書き換えたのですが、
相変わらず以下のようなエラーが発生しています。
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でエラーが返されてしまっているのかなと
思うのですが、何度修正しても宣言自体が間違っているかのようなエラーが出つづける有り様で、
どう修正すればよいか分かりません。
よろしくお願いします。
0047デフォルトの名無しさん
2008/12/04(木) 21:30:30[2] 問題文:月曜日から始まる月のカレンダーを出力するプログラムを作成しなさい。
ただし、7日毎に出力を改行すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 2005
[3.3] 言語:C++
[4] 期限:今日の23:30まで
[5] その他の制限:for文とif文を使って作れと言われました
何年の何月のカレンダー、という制限はありませんでした。
単なる月曜日が1日で始まるカレンダーを作れ、ということなのでしょうが・・・
どなたかよろしくお願いします
0048デフォルトの名無しさん
2008/12/04(木) 21:34:47・関数名と変数名がどこかで被ってる
・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 ***
0049デフォルトの名無しさん
2008/12/04(木) 21:35:24流し読み程度だが、swap2の宣言は前のままでいい。
ただ、構造体を引数に取ってるのにその後に構造体を定義しちゃいかんだろ。
あと、swapはポインタ渡してねーから多分思ってるとおりの動きせんよ。
あと、警告も直せ、おおむね間違ったこと書いてないし、後のためになることが多々あるだろうから。
0050デフォルトの名無しさん
2008/12/04(木) 21:40:20ループ内で関数読んで、呼び出し先でもループ使ってたらロクでもない結果になる。
0051デフォルトの名無しさん
2008/12/04(木) 21:45:39まあ他にもいろんな解釈が出来そうだけど
これで問題あればまた言って。
#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;
}
0052デフォルトの名無しさん
2008/12/04(木) 21:56:07[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はまだ作成していません。
0053デフォルトの名無しさん
2008/12/04(木) 22:01:06これであってると思います
ありがとうございました!
0054デフォルトの名無しさん
2008/12/04(木) 22:05:05popenして流し込む簡単な仕様でいいか?
あと一応gnuplotのバージョン教えれ
言わないと4.0だと思ってつくる
0055デフォルトの名無しさん
2008/12/04(木) 22:07:31途中の処理を関数化したほうがすっきりしていいかも
#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;
}
0057デフォルトの名無しさん
2008/12/04(木) 22:10:58data6.txtうpまだー
それとも、その警告の意味を解説してほしいとか?
0058デフォルトの名無しさん
2008/12/04(木) 22:13:49すみません、すっかり失念してました。
これです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8211.txt
あと、何故この警告が出るのか教えていただきたいです。
0059デフォルトの名無しさん
2008/12/04(木) 23:21:20int hash(char *data)
{ 略
}
void insert(CELL *table[], char *data[])
{
略
int h = hash(*data);
}
hash()の呼び出しで型が合って無いから
006043
2008/12/04(木) 23:26:32返答ありがとうございます。
今は試す環境がないので、明日さっそくやってみます。
0061デフォルトの名無しさん
2008/12/04(木) 23:30:29ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8212.txt
いちおうできるだけ元の形を保ちつつ
>以下のような探索結果
が不明だったので適当にやった
0062デフォルトの名無しさん
2008/12/04(木) 23:34:36ありがとうございます。
期限が迫っていたので、既に不完全なままで提出してしまいましたが、
今後の学習のために参考にさせていただきます。
0063デフォルトの名無しさん
2008/12/04(木) 23:36:52[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] その他の制限: 特になし
0064デフォルトの名無しさん
2008/12/05(金) 00:12:01最小の式が意味不明
N^3 + M^3 = 1729 を満たす自然数 N M の組み合わせが (12, 1) (10, 9) 以外にないことを言いたいのか?
0065デフォルトの名無しさん
2008/12/05(金) 00:19:19はいそうです。
0066デフォルトの名無しさん
2008/12/05(金) 00:27:44(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;
}
0067デフォルトの名無しさん
2008/12/05(金) 00:31:25#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を超えることを前提にしてる
0068デフォルトの名無しさん
2008/12/05(金) 00:47:46(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);
}
0069デフォルトの名無しさん
2008/12/05(金) 00:52:15[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] その他の制限: 初歩的なレベルらしいです。
何卒よろしくおねがいします。
0070デフォルトの名無しさん
2008/12/05(金) 00:57:09[2]問題文
99文字までの文字列を入力し,アルファベットの小文字は大文字に,アルファベットの大文字は小文字に,またアルファベット以外の文字はアスタリスク’*’に変換した文字列を出力するプログラム
[3]
[3.1]OS:Vista
[3.2]コンパイラ:VisualC++2008ExpressEdition
[3.3]言語:C++
[4]期限:本日a.m3
[5]その他の制限:課題に適したライブラリ関数もあるが,それらを使用せずにプログラムを作成
誰かこれお願いします。今日までにやらなきゃいけないんですけど全く分かりませんorz
0071デフォルトの名無しさん
2008/12/05(金) 00:58:58#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;
}
0072デフォルトの名無しさん
2008/12/05(金) 00:59:27このスレを99で検索すると幸せになれるよ。
007368
2008/12/05(金) 01:01:56ごめん、式間違ってた
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 あたりまでなら収束する
0074デフォルトの名無しさん
2008/12/05(金) 01:03:33> scanf("%99s",&s);
> for( i=0; s[i]!='\0'; ++i )
におうぜ
0076デフォルトの名無しさん
2008/12/05(金) 01:22:36ありがとうございます、助かりました。
>>72
あぁ既に質問されていた方がいたのですか。失礼いたしました。
0077デフォルトの名無しさん
2008/12/05(金) 01:24:05[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まで
よろしくお願いします。
0078デフォルトの名無しさん
2008/12/05(金) 01:25:24ありがとうございます。助かりました。
0079デフォルトの名無しさん
2008/12/05(金) 01:49:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8218.txt
0080デフォルトの名無しさん
2008/12/05(金) 01:51:18あぁ、臭うぜ、お前から、あの臭いが。カレーでも食べたか?
0081デフォルトの名無しさん
2008/12/05(金) 01:58:19> scanf("%99s", &s);
「&」はいらないよね
0082デフォルトの名無しさん
2008/12/05(金) 02:00:43・・・
0084デフォルトの名無しさん
2008/12/05(金) 02:05:34配列、ポインタだとしても、その記述はちとまずい点もあるが・・・
0085デフォルトの名無しさん
2008/12/05(金) 03:32:10規格上はどっちなんだろ
0086デフォルトの名無しさん
2008/12/05(金) 03:41:19番地自体は先頭アドレスと同じ
無視はしねーし、省略が可能なわけでもない
0087デフォルトの名無しさん
2008/12/05(金) 10:51:47[2] 問題文(含コード&リンク): http://data1.xiz.cx/img/uncho/200812054255.jpg
[4] 期限: 12/8
ここに書くべき問題かどうかわかりませんが…
急ぎですのでどなたかお願いします。。
008887
2008/12/05(金) 10:54:180089デフォルトの名無しさん
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] その他の制限:
>
> よろしくお願いします
0090デフォルトの名無しさん
2008/12/05(金) 11:25:52完全にスレ違い
わかっててやってるだろ詩ね
0091デフォルトの名無しさん
2008/12/05(金) 11:35:07http://www.uploader.jp/dl/mouse/mouse_uljp00331.txt.html
0092デフォルトの名無しさん
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時間以内
どこがどう違うのかまったく見当がつきません
何がエラーを起こすのかと解決するにあたっての助言を下さい
よろしくお願いします。
0093デフォルトの名無しさん
2008/12/05(金) 13:52:44それとも「エラーを修正せよ」って課題なのか。
0094デフォルトの名無しさん
2008/12/05(金) 14:41:14問題文は英語なんで微妙かな・・・と思って載せませんでした
ただ基本的なテンプレートの問題らしいので
どうしてコンパイラエラーが起こるのかについて解説してもらえたらなーと思って
0095デフォルトの名無しさん
2008/12/05(金) 14:57:400096デフォルトの名無しさん
2008/12/05(金) 15:00:23[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アルゴリズムは、配列ベースのプログラムで別に作っているので、問題ありません。
0097デフォルトの名無しさん
2008/12/05(金) 17:18:45本当に有難う御座いました。
大変助かりました。
0098デフォルトの名無しさん
2008/12/05(金) 17:27:26[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は習いました。
お願いします。
0099デフォルトの名無しさん
2008/12/05(金) 17:31:58>>18
0100デフォルトの名無しさん
2008/12/05(金) 17:34:160101デフォルトの名無しさん
2008/12/05(金) 17:51:13荒らすつもりは全然無かったのですが、荒らしみたいな行為をしてしまいすいませんでした。
>>18なんですが、やっていただいたのは大変有難いのですが>>17のように出来るだけ簡略化してもらえないでしょうか?
0102デフォルトの名無しさん
2008/12/05(金) 18:21:10>>17では駄目なのか?
0103デフォルトの名無しさん
2008/12/05(金) 18:24:00>>17を>>18を参考にして書き換えるぐらいはできないかな
0104デフォルトの名無しさん
2008/12/05(金) 19:01:46どう簡略化して欲しいのか具体的に書かないと分からない
単に短いコードを書きたいなら>>17でいいだろ
0105デフォルトの名無しさん
2008/12/05(金) 19:51:31以下の条件を満たす対戦表をプログラムで作成したいのですが
アルゴリズムがまったく思いつきません。
条件:
4人麻雀です。
大会なので8卓あります。
参加者は32人で番号が振られています。(1番,2番,・・・)
参加者は8チームに分けられています。(たとえば1番,2番,3番,4番で1チーム)
同じチームの人とは同卓してはいけません。
一度同卓した人と再度同卓してもいけません。
この条件で5回戦行います。
このような条件なのですが上手いやり方どなたかご存知ないでしょうか?涙
010635 ◆z66TI33ApM
2008/12/05(金) 19:58:33[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
尚、そのときのトリップは忘れてしまったので適当につけています
おねがいします
0107デフォルトの名無しさん
2008/12/05(金) 20:44:09[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まで
0108デフォルトの名無しさん
2008/12/05(金) 21:27:12[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日まで
よろしくお願い致します。
0109デフォルトの名無しさん
2008/12/05(金) 21:52:29なのです。解いていただいた方は本当にありがとうございました。
forとwhileを使ってどなたか解いていただけないでしょうか?
0110デフォルトの名無しさん
2008/12/05(金) 22:16:44>>17は駄目ですね。
>>17は暗号化のプログラムで私がやってもらいたいプログラムは>>98に書いたように複号のプログラムなんです。
>>103
残念ながらちょっと分からないです。
お願い出来ませんか?
>>104
>>17のプログラムの書き方の複号版のプログラムをやってもらいたいんです。
0111デフォルトの名無しさん
2008/12/05(金) 22:33:000112デフォルトの名無しさん
2008/12/05(金) 22:42:56#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
0114デフォルトの名無しさん
2008/12/05(金) 22:53:16お願い出来ません
0115デフォルトの名無しさん
2008/12/05(金) 22:54:14単語を入力してください → 暗号を入力してください
暗号は → 平文は
str[i] - 'a' + key → str[i] - 'a' - key
0116デフォルトの名無しさん
2008/12/05(金) 22:56:59key=26-(key%26);
0117デフォルトの名無しさん
2008/12/05(金) 23:12:57で、そもそもはどういう問題だったの?
0118おねがいしますw
2008/12/05(金) 23:14:23[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日まで
0119108
2008/12/05(金) 23:18:23そもそもは時刻tにおける万有引力の法則に従っての惑星の位置を求める問題です
0120デフォルトの名無しさん
2008/12/05(金) 23:26:06ttp://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 ) じゃないのかなー。
0121108
2008/12/05(金) 23:33:48lを2回使ってるのは自分でもよく分かりません。すいません。
順番に並んでないのは特に理由はないです。見にくくてすいません。
やっぱ自分が良く理解してないのが出来ない理由かもしれませんね。
0122デフォルトの名無しさん
2008/12/05(金) 23:36:230123デフォルトの名無しさん
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 辺りまでしか習っていません
今ネストとかいうのをやってるので多分それを使って解け、との事です。
初歩的な質問ですいません。
質問に至らぬ点があったらそちらの方もご指摘お願いします。
0124デフォルトの名無しさん
2008/12/05(金) 23:53:250125デフォルトの名無しさん
2008/12/05(金) 23:55:35なんですか?
0126デフォルトの名無しさん
2008/12/06(土) 00:00:35#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
間違えました
0127デフォルトの名無しさん
2008/12/06(土) 00:12:03ありがとうございます。
でも全然知らない単語が多数…
前自力で出来た問題です。こんな感じでお願いします
#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;
}
出力結果
*
**
***
0128おねがいしますw
2008/12/06(土) 00:13:09[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 の問題もお願いします
0129デフォルトの名無しさん
2008/12/06(土) 00:13:21すいません、お手数ですが>>127みたいな感じでお願いします。
0130デフォルトの名無しさん
2008/12/06(土) 00:13:45ジョニーそれは>>123で「言語: C++」って書いてあるからなんだぜ
0131デフォルトの名無しさん
2008/12/06(土) 00:14:21>>125×
>>126○
0132デフォルトの名無しさん
2008/12/06(土) 00:15:250133デフォルトの名無しさん
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'´ /::::::::/ヽ.
/ /:::::::レ'/ムヽ. /::::::::/ ヽ.
0134デフォルトの名無しさん
2008/12/06(土) 00:17:40visual C++2005って書いてるので、C++と思っていたんですが。…ひょっとして違いますか?
0135デフォルトの名無しさん
2008/12/06(土) 00:18:57ヒント:
std::cout << ' '; → printf(" ");;
std::cout << '*'; → printf("*");;
std::cout << std::endl; → printf("\n");
0136デフォルトの名無しさん
2008/12/06(土) 00:19:59>>123 で [3.2] 不明 って書いてあるじゃねーか!!嘘つきめ
0137デフォルトの名無しさん
2008/12/06(土) 00:22:06すいません。不明というのは分からないという意味です。
コンパイラでググってきます
0138デフォルトの名無しさん
2008/12/06(土) 00:24:13おまいはその「プログラミング実習�T」で、いったい何の言語について勉強してるんだ
ガイダンスとかなかったのか
0139デフォルトの名無しさん
2008/12/06(土) 00:24:40C++が使えるツールで、C言語オンリーの単元とかはよくある話。
0140デフォルトの名無しさん
2008/12/06(土) 00:26:27どうやら自分はC言語を習ってるみたいです。重ね重ねすいません。
0142デフォルトの名無しさん
2008/12/06(土) 00:32:13void display(void)
{
int i;
for (i = 0; i <= SP; ++i) printf("%d\n", Stack[i]);
}
0143>>123 ◆TJ9qoWuqvA
2008/12/06(土) 00:33:560144おねがいしますw
2008/12/06(土) 00:44:530145デフォルトの名無しさん
2008/12/06(土) 00:47:05[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まで
よろしくお願いします
0146デフォルトの名無しさん
2008/12/06(土) 00:56:360147デフォルトの名無しさん
2008/12/06(土) 00:56:55if (sign == AlreadyExsist) {
result = OtherString; ← FloatingPoint を修正
if (!((c >= '0') && (c <= '9'))) ← 等号付不等号に修正
0148デフォルトの名無しさん
2008/12/06(土) 01:40:37大変助かります。ありがとうございました><
0149デフォルトの名無しさん
2008/12/06(土) 01:45:57どうもありがとうございました
0150120
2008/12/06(土) 06:01:06起き抜けに作ってみた。とりあえずこれ参考にしてくれ。
#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;
}
0151おねがいしますw
2008/12/06(土) 11:12:110152おねがいしますw
2008/12/06(土) 11:15:360153デフォルトの名無しさん
2008/12/06(土) 11:31:41なんでお前へらへらしてんの?
きもい
0154デフォルトの名無しさん
2008/12/06(土) 11:41:42なんでお前いらいらしてんの?
きんもぉ〜★
0155デフォルトの名無しさん
2008/12/06(土) 11:55:23まぁ、↓でも見て落ち着きなよ。和むぜ?
ttp://emaedanaoko.at.infoseek.co.jp/flash/peri.swf
0156デフォルトの名無しさん
2008/12/06(土) 13:03:11[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です
よろしくお願いします
0157デフォルトの名無しさん
2008/12/06(土) 13:13:45#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;
}
0158デフォルトの名無しさん
2008/12/06(土) 13:19:32[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以上にするとエラーになるとおもいます。
その場合、入力できる最大の数を入れる場合どうすればいいのでしょうか?
それではよろしくお願いします。
0159108
2008/12/06(土) 13:58:38ありがとうございます。挑戦してみます!
0160デフォルトの名無しさん
2008/12/06(土) 14:19:16出力するプログラムをつくりなさい。
0161デフォルトの名無しさん
2008/12/06(土) 14:26:54#include <iostream>
int main()
{
int c;
std::cin >> c;
std::cout << c / 3600 << "時間、"
<< c % 3600 / 60 << "分、"
<< c % 3600 % 60 << "秒" << std::endl;
return 0;
}
0162デフォルトの名無しさん
2008/12/06(土) 14:55:06[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
お願いします
0163デフォルトの名無しさん
2008/12/06(土) 15:00:34#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;
}
0164デフォルトの名無しさん
2008/12/06(土) 15:08:48出来てないみたい
のでもう一度お願いします
0165デフォルトの名無しさん
2008/12/06(土) 15:15:54rand()/(RAND_MAX+1.0) では?その値に、範囲の最大から最小を引いた差を
掛けてやれば良い。
0166デフォルトの名無しさん
2008/12/06(土) 15:20:01(int)(rand() * 9 / (1.0 + RAND_MAX));
にしろと?
おまえ馬鹿?
0167デフォルトの名無しさん
2008/12/06(土) 15:22:30どのあたりをみてできてないと思ったか感想をお願いします
0168デフォルトの名無しさん
2008/12/06(土) 15:26:47となるはずですが
何もでてないです
0169デフォルトの名無しさん
2008/12/06(土) 15:27:27> おまえ馬鹿?
随分だな。しかもそんなこと言ってないし。基地外低脳バカは黙ってろよ、クズが
最近書き込まれている、口の悪いバカはお前だろ?死ねよアホ
0170アホの書いた稚拙なコード
2008/12/06(土) 15:28:54163 名前:デフォルトの名無しさん 投稿日: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));
にしろと?
おまえ馬鹿?
0171デフォルトの名無しさん
2008/12/06(土) 15:30:020172デフォルトの名無しさん
2008/12/06(土) 15:31:19↑アホ丸出しだ、こいつwwwwwww
>>166
>>165が理解出来ない?日本語も、物事も的確に理解できな奴って、
自分の無能さ、理解力の無さを、他人のせいにするから面倒だよな。
無能な癖して、思う通りに物事が進まないと、キレたりグズったりする
精神レベルの低い大人になりきれないお子ちゃま。
0173デフォルトの名無しさん
2008/12/06(土) 15:31:35一致したとき表示としか書いてなかったからそのようになってます
一致したときに両方表示して終了します
改造が必要であれば具体的に、言ってみてください
0174デフォルトの名無しさん
2008/12/06(土) 15:32:45int s = rand()%10;
0175デフォルトの名無しさん
2008/12/06(土) 15:34:36は?それもいまいちだろ?
0176デフォルトの名無しさん
2008/12/06(土) 15:48:58小手先技使っていい気になっている奴が消えることを祈る。
疑似乱数2
http://pc11.2ch.net/test/read.cgi/tech/1192628099/
0177デフォルトの名無しさん
2008/12/06(土) 15:53:38int 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));
何 こ れ 、 ア ホ で す か ?
人の話をまともに聞かない、自分勝手を押し通す、指摘されれば
した人間を罵倒するなり、威圧するなりして押さえ込んで、自分を正当化してきたせいで
社会から孤立しましたか?
日本語が通じない人って、厄介ですね。己の未熟さを知れ、青二才めが。
0178デフォルトの名無しさん
2008/12/06(土) 15:55:19お 前 が 言 う な w
お前のは、いまいちどころじゃないがw
int s = 0 + (int)(rand() * (9 - 0 + 1.0) / (1.0 + RAND_MAX));
(int)(rand() * 9 / (1.0 + RAND_MAX));
0179suzuki
2008/12/06(土) 16:03:58このスレの回答の丸写しが発覚した場合、それを減点対象にします。
自分の力で問題を解くようにしてください。
0180デフォルトの名無しさん
2008/12/06(土) 16:06:34範囲によっては不適切だな。完全に駄目とは言わないが、RAND_MAXを使用して
0〜1未満の範囲の値を出してからの方が無難。そこに差を掛けて、最小を加えると。
人それぞれだが、汎用性を考慮するなら、もう一歩、前進したいところだ。
0181デフォルトの名無しさん
2008/12/06(土) 16:36:26死ね
0182デフォルトの名無しさん
2008/12/06(土) 16:48:58いい方法ってどんなのがあるんですか?
教えてください
ちなみに私は>>163 >>166ではありません
0183デフォルトの名無しさん
2008/12/06(土) 17:26:42[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まで
よろしくお願いいたします
0184デフォルトの名無しさん
2008/12/06(土) 17:54:31[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文の二重ループを使う
どなたかよろしくお願いします
0185デフォルトの名無しさん
2008/12/06(土) 18:23:43ただ偏り方がディザリングされているかどうかが違うだけ
rand()%10
(double)rand()/(RAND_MAX+1)*10
0186デフォルトの名無しさん
2008/12/06(土) 18:30:220187デフォルトの名無しさん
2008/12/06(土) 18:32:23[2]問題文:「AT-GPIB/TNT」GPIBと計測器を使い、発振器の波形を取り込みデータを保存する。
[3]環境:コンパイラBorlandC
[4]制限:GPIBの関数を使う。以下はその一例
ibsic():指定したGPIBボードの初期設定、
ibdev():指定デバイスの設定
ibfind():指定したアドレスのデバイスを検出
ibclr():指定したアドレスのデバイスの初期設定
ibwrt():指定したアドレスのデバイスへ送信
ibrd():指定したアドレスのデバイスから受信:
ibonl():装置のクローズ
単位落としそう。
できるなら、説明文付け加えてください。
面倒だったら説明文は省いてもいいです
よろしくお願いします;;;
0188デフォルトの名無しさん
2008/12/06(土) 18:33:27偏りは同じじゃないよ。下1桁が同じものが連続して出る確率の方が、
RAND_MAX以下の値の中から1つ選ぶのとでは、違いすぎる。
ただ、それでもrand()に依存するため、所詮は擬似だけど。
0189デフォルトの名無しさん
2008/12/06(土) 18:39:071つ選んだのと、例えば出た順番が 15 10005 20005 と出た場合、
rand()%10はどれも5だが、もう一方のは、値が小さい程0に近く、大きいほど10に近くなる。
0190デフォルトの名無しさん
2008/12/06(土) 18:50:35馬鹿を晒すなw
0191デフォルトの名無しさん
2008/12/06(土) 19:05:48馬鹿はおまえだろ
0192デフォルトの名無しさん
2008/12/06(土) 19:06:22偏りは起こりうる。なんなら、適当にSEEDを与えて、2つの式によって得られる値に
偏りがあるか、統計をとってみては?
0193デフォルトの名無しさん
2008/12/06(土) 19:08:16ありがとう!
0194おねがいしますw
2008/12/06(土) 19:08:51お願いします
0195デフォルトの名無しさん
2008/12/06(土) 19:10:17r=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倍
の確率で出現する
偏り方が同じっていう表現をどうとるかによるな
0196デフォルトの名無しさん
2008/12/06(土) 19:14:440197デフォルトの名無しさん
2008/12/06(土) 20:24:21[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日まで
よろしくお願いします
0198デフォルトの名無しさん
2008/12/06(土) 21:54:46これ、たたき台のプログラム、display() の部分作れって言ってるけど、他の部分もおかしいよ
どうすればいい?
0199デフォルトの名無しさん
2008/12/06(土) 22:00:41[2] 問題文(含コード&リンク):
3行3列の行列をガウスの消去法をつかって単位行列にするプログラムを作る。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年12月9日
[5] その他の制限:最近ポインタを習い、そのときの課題です。
よろしくおねがいします。
0200「 ◆xstMZhzLPE
2008/12/06(土) 22:02:44[2] 問題文
以下の機能を実現するプログラムを作れ:
元本と利率を入力できる。ただし、単利と複利そ
れぞれに別の利率を設定することもできる。
最初に以下の処理のどちらかをユーザが選んで
実行できる(プログラムとしては1つのもので全
部の機能を提供すること)
入力した年数が経過したら、単利・複利それぞれいく
らになるかを表示する。
複利の方が(利率が低い場合でも)何年後に単利を追
い越すかを表示する。
forとwhileを使ってください
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:visual studio2003
[3.3] 言語: C++
[4] 期限:2008年12月11日まで
どうかよろしくお願いします
0201デフォルトの名無しさん
2008/12/06(土) 22:07:05randが一様乱数という仮定が大抵の環境で成り立たないというのが現実。
線形合同法が悪すぎる。
0202デフォルトの名無しさん
2008/12/06(土) 22:11:37http://blog-imgs-32.fc2.com/u/g/l/uglike/tree.txt(UTF-8)
0203デフォルトの名無しさん
2008/12/06(土) 22:15:24[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ファイル内にある雛形のプログラム
を用いて作成すること。
自分の思うように動作せず困っているので、どうか宜しくお願い致します。
0204デフォルトの名無しさん
2008/12/06(土) 22:21:22[2] 問題文(含コード&リンク): リスト構造によるアドレス帳の作成
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: Visual Studio
[3.3] 言語: (C言語)
[4] 期限: ([2008年12月7日20:00まで])
よろしくお願いします。
0205デフォルトの名無しさん
2008/12/06(土) 22:23:53926 デフォルトの名無しさん[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;}
前スレにあった気がしたので持ってきた
0206 ◆ncE6YQxqag
2008/12/06(土) 22:26:05[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]その他の制限:
制限等は特にございません。
宜しくお願い致します。
0207デフォルトの名無しさん
2008/12/06(土) 22:41:20#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;
}
0208デフォルトの名無しさん
2008/12/06(土) 22:49:21[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] その他の制限: 繰り返し文、条件判断文、関数、ポインタ配列勉強しました。
初心者なので、初心者にも分かるようなプログラムをお願いします。
0209デフォルトの名無しさん
2008/12/06(土) 22:55:29[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] その他の制限: 上記のファイルが存在する設定で行うためプログラムさえ作成されていればよい。
0210デフォルトの名無しさん
2008/12/06(土) 23:01:13アドレスで返せってあるんだけど
1.mallocして確保して返す.
2.関数がstaticな構造体を持つ
3.第一引数を破壊してそれを返す
どれがいい?
0211 ◆ncE6YQxqag
2008/12/06(土) 23:19:012番でお願いします。
0212デフォルトの名無しさん
2008/12/06(土) 23:38:470213デフォルトの名無しさん
2008/12/06(土) 23:43:42ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8240.c
>>210
でいうところの1.となっております。
動いて数値が出るのは確認しましたが、検算はしてません
0214デフォルトの名無しさん
2008/12/06(土) 23:52:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8241.txt
0215デフォルトの名無しさん
2008/12/06(土) 23:57:15できるだろうけど、プログラムがでかくなるので作るのが面倒
0216「 ◆xstMZhzLPE
2008/12/07(日) 00:01:04whileのループを用いていただきたいんです。授業でもこちらのスレほどレベルが高くなので
わかりやすくしていただけたら嬉しいです。
やっていただいた方には感謝の気持ちと申し訳ない気持ちで一杯です・・・。
0217デフォルトの名無しさん
2008/12/07(日) 00:22:29そうですか・・・ですが、どなたかお願いします・・・!
0218デフォルトの名無しさん
2008/12/07(日) 00:37:20_ 、 へ 、
.〃´ \ 、 〃 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}
関数のプロトタイプに書かれているインターフェースを利用しない
動作説明とアルゴリズムの説明はコメントレベルでしか書かない
0219デフォルトの名無しさん
2008/12/07(日) 00:39:02[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] その他の制限: 特になし
0220デフォルトの名無しさん
2008/12/07(日) 00:53:04プログラミングの課題としては、"同心円の円周の和"を期待しているのかも
0221デフォルトの名無しさん
2008/12/07(日) 00:54:25#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;
}
0222デフォルトの名無しさん
2008/12/07(日) 01:14:31#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;
}
0223デフォルトの名無しさん
2008/12/07(日) 01:36:16[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] その他の制限: 特になし
0224デフォルトの名無しさん
2008/12/07(日) 01:37:26ちょっと笑ったww
マルチなのか騙りなのか・・・・・
どっちにしろスレ違い
0225デフォルトの名無しさん
2008/12/07(日) 01:45:08を「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] その他の制限: 特になし
0226デフォルトの名無しさん
2008/12/07(日) 01:47:57スレ違いなら、どこのスレがいいでしょうか。
0227デフォルトの名無しさん
2008/12/07(日) 01:48:59これが宿題だったら笑う
0228デフォルトの名無しさん
2008/12/07(日) 01:57:18ぜひお願いします!
0229デフォルトの名無しさん
2008/12/07(日) 02:12:48private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e) {
ここに入れたいのですが
}
そのままいれても大丈夫ですか?
制限なしと書いたのにすみません。
0230デフォルトの名無しさん
2008/12/07(日) 02:42:23個人的には数学的に解いて、教官を困らせてやるのがお勧め
double r1 = 12.0;
double r2 = 53.0;
double d = 0.1;
double l = Math::PI * (r2 * r2 - r1 * r1) / d;
0231デフォルトの名無しさん
2008/12/07(日) 02:45:16C++/CLIは全くわからないんだが、
そのままつっこむってどのくらいそのままなのかによるよ
そのまま丸ごとコピペしたらおそらく動かない
クラスと関数を置く位置ちゃんとしてたら動くだろきっと
0232デフォルトの名無しさん
2008/12/07(日) 02:48:39[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まで
よろしくお願いいたします
0233デフォルトの名無しさん
2008/12/07(日) 02:53:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8244.zip
動作とアルゴリズムは、読めばわかるので説明付けなかった。
ただ、僕の作った汎用リストのテストケースとして使わせてもらったので、アップしただけです。
まぁ、Cygwinとかなっているので、makeをソースから入れてmakeすればいいよ。
僕は、>>218さんではないので、>>218さんのソースを待ってあげてください。
0234デフォルトの名無しさん
2008/12/07(日) 02:57:56int 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;
}
なるたけ原形を維持しといた、スペース等は考慮しないっぽいと判断したので、変な文字列は変な変換結果を返す
0235デフォルトの名無しさん
2008/12/07(日) 03:02:15追記です。
ツールボックスの機能を使って作ってるんですが
ボタン1個とラベル1個を使ってボタンを押したら長さは○mです。
と表示したいです。
結果は83.59mになるみたいです。
0236デフォルトの名無しさん
2008/12/07(日) 07:13:12・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
慣れた人やRPGツクールでは物足りないけどプログラミングはちょっという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備してるよ!
・要望、バグ報告などなど書き込みお願いします。
・それとマップやキャラなどのドット素材もじゃんじゃん募集中ですので
一度サイトにお越しくださいませ。
2ちゃん本スレ
http://pc11.2ch.net/test/read.cgi/gamedev/1226294070/l100
0237デフォルトの名無しさん
2008/12/07(日) 08:30:15コラー!!
0238デフォルトの名無しさん
2008/12/07(日) 09:50:43なぁ〜〜にぃ〜〜!?やっちまったな!
0239おねがいしますw
2008/12/07(日) 10:04:52>>128の者です えっと、他は違う場合自分でやれると思うんで
演習のプログラムだけお願いします。 あと、教科書を手打ちしましたが
間違いがどこだか分かりません。 その辺の指摘もできたらお願いしますw
ほかの方も >>128 お願いしますw
0240デフォルトの名無しさん
2008/12/07(日) 10:32:42#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;
}
0241デフォルトの名無しさん
2008/12/07(日) 10:40:410242デフォルトの名無しさん
2008/12/07(日) 10:46:281)
#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);
}
0243デフォルトの名無しさん
2008/12/07(日) 10:47:44#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);
}
0244デフォルトの名無しさん
2008/12/07(日) 10:51:38#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;
}
0245デフォルトの名無しさん
2008/12/07(日) 10:53:11本当にありがとうございます
0246デフォルトの名無しさん
2008/12/07(日) 11:06:36なんとお早い・・・。ありがとうございます。
すみませんが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
をもらったのですが・・・。
0247デフォルトの名無しさん
2008/12/07(日) 11:23:33#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;
}
0248デフォルトの名無しさん
2008/12/07(日) 11:26:22ありがとうございます!できました!
0249デフォルトの名無しさん
2008/12/07(日) 11:32:25期限は12月13日ぐらいまでです。
0250デフォルトの名無しさん
2008/12/07(日) 11:56:36市名(文字列)とintの構造体として定義できない縛りがアホっぽい
0251デフォルトの名無しさん
2008/12/07(日) 12:01:58#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{
0252デフォルトの名無しさん
2008/12/07(日) 12:03:20p = 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;
}
0253デフォルトの名無しさん
2008/12/07(日) 13:39:57お答えしていただき感謝してます。
しかし、どうしても83.59mにならないorz
0254デフォルトの名無しさん
2008/12/07(日) 13:49:02[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」が代替単語としてマッチするはずです。宜しくお願いします。
0255デフォルトの名無しさん
2008/12/07(日) 14:03:48これで求めたら、83.80 m になったが。
0256デフォルトの名無しさん
2008/12/07(日) 14:18:27※素数判定関数を用いる
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] 期限:明日まで
0257デフォルトの名無しさん
2008/12/07(日) 14:20:24[2] 問題文(含コード&リンク):
対戦型のジャンケンゲームを様々な戦略で行え。たとえば、戦略としては次のようなものが考えられる。
戦略1=「グー」「チョキ」「パー」を繰り返す
戦略2=毎回ランダムに決定する
戦略3=1回目はランダムに出し、以降は負けるまで同じ手を繰り返す。負けたらランダム
戦略4=1回目はランダムに出し、以降は前回の相手の手を出す
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン:bcc?
[3.3] 言語: C言語
[4] 期限:明日まで
0258デフォルトの名無しさん
2008/12/07(日) 14:39:30こうすると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;
}
0259デフォルトの名無しさん
2008/12/07(日) 14:44:52#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;
}
0260デフォルトの名無しさん
2008/12/07(日) 14:51:500261デフォルトの名無しさん
2008/12/07(日) 15:11:29無茶だって、できる奴いるわけないwwwwwwwwwww
0262デフォルトの名無しさん
2008/12/07(日) 15:27:04次の直径は0.2mm長くなるか。
0263デフォルトの名無しさん
2008/12/07(日) 15:28:520264230
2008/12/07(日) 15:34:25当たり前だけど、近似の仕方や範囲の取り方で値は変わる
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ループ要らないんだよな
0265デフォルトの名無しさん
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;
}
0266デフォルトの名無しさん
2008/12/07(日) 16:09:03羽純が俺を待ってるから適当に済ませる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8249.txt
0267デフォルトの名無しさん
2008/12/07(日) 16:09:340268デフォルトの名無しさん
2008/12/07(日) 16:09:410269デフォルトの名無しさん
2008/12/07(日) 16:10:30ハードの仕様書を一通り揃えるなら書かないでもない
テストはできないけど
0270デフォルトの名無しさん
2008/12/07(日) 16:43:55[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まで
よろしくお願いいたします
0271デフォルトの名無しさん
2008/12/07(日) 16:49:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8251.c
0272デフォルトの名無しさん
2008/12/07(日) 16:56:34strToFloatを次のようにするだけ。
float strToFloat(char string[])
{
return (float)atof(string);
}
0273デフォルトの名無しさん
2008/12/07(日) 17:02:50[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辺ともが等しい長さを入力したときに、「正三角形です」とは表示されず、「鋭角二等辺です」と表示されます。
どの部分が間違っているのでしょうか。アドバイスをお願いします。
0274デフォルトの名無しさん
2008/12/07(日) 17:05:34nx==ny && nx==nzに変更
0275デフォルトの名無しさん
2008/12/07(日) 17:05:49nx==ny==nzをnx==ny && ny ==nzに直す。
0277デフォルトの名無しさん
2008/12/07(日) 17:57:06[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まで
よろしくお願いします。
0278デフォルトの名無しさん
2008/12/07(日) 18:08:42平均体重と体重の最小値を求め表示するプログラムを書け。
これは、どのようにすればいいのでしょうか?
0279デフォルトの名無しさん
2008/12/07(日) 18:19:16フィボナッチ数列のほうだけ
#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));
}
0280おねがいしますw
2008/12/07(日) 18:23:43[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日まで
0281デフォルトの名無しさん
2008/12/07(日) 18:32:16配列
#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;
}
0282デフォルトの名無しさん
2008/12/07(日) 18:40:32組合せ
#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;
}
0283デフォルトの名無しさん
2008/12/07(日) 19:03:22これは恥ずかしいw
0284デフォルトの名無しさん
2008/12/07(日) 19:03:35VC++ 2005 でやってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8253.zip
0285デフォルトの名無しさん
2008/12/07(日) 19:07:48void display(void)
{
int i = 0;
printf("\n\n---Queue---\n");
while (i < count) {
printf("id = %d\n",Queue[(out+1 + i) % Queue_size]);
i++;
}
}
0286デフォルトの名無しさん
2008/12/07(日) 19:09:32単語を知らんかったからエキサイト翻訳に頼った。
スマソ
0287デフォルトの名無しさん
2008/12/07(日) 19:14:08#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;
}
0288デフォルトの名無しさん
2008/12/07(日) 19:15:16long fact2(int n , int m) {
int f; > long f;
0289デフォルトの名無しさん
2008/12/07(日) 19:22:14ありがとうございます。
char strbuf の部分は習っていないため使うのはどうかと思っています。
申し訳ありませんが、もしよろしければ、ほかの表現でできないでしょうか??
0290デフォルトの名無しさん
2008/12/07(日) 19:35:26fscanf を使えってことかな?
#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;
}
}
にする
0291デフォルトの名無しさん
2008/12/07(日) 19:43:01[1] 授業単元: 情報
[2] 問題文(含コード&リンク): 10人分の体重を配列に初期値として設定し、
平均体重と体重の最小値を求め表示するプログラムを書け。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: vs2005
[3.3] 言語: C++だと思います。
[4] 期限: 2008年12月11日
[5] その他の制限: 配列を少し習ってる状態です。
どうかお願いします。
0292デフォルトの名無しさん
2008/12/07(日) 19:46:01[2] 問題文(含コード&リンク):
50字からなる文字列を入力して、
各文字を次の規則に従って変換して出力するプログラミングを作りなさい。
・英字ならばアルファベット上のすぐ次の英字に(ただしZはAに)
・数字ならばその直前の数字に(ただし0は9に)
・特殊文字はそのまま
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月8日
よろしくお願いします。
0293デフォルトの名無しさん
2008/12/07(日) 19:47:55教官に聞いたところπは3.1415で計算するみたいです。
提出したときに質問されるみたいなので
理解するためにもう少しコメントを追加していただけないでしょうか?
0294デフォルトの名無しさん
2008/12/07(日) 19:56:25#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;
}
0295デフォルトの名無しさん
2008/12/07(日) 20:14:02#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;
}
0297デフォルトの名無しさん
2008/12/07(日) 20:25:41>50字からなる文字列を入力して、
0298デフォルトの名無しさん
2008/12/07(日) 20:27:27体重はdoubleを用いて45.5みたいにしたいです。
arrayを使った場合はどうなりますか?
0299デフォルトの名無しさん
2008/12/07(日) 20:29:42[2] 問題文(含コード&リンク):
簡単なシェルを作りなさい
多段のパイプが使えるように死なさい
cd でカレントディレクトリの変更が行えるようにしなさい
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月15日
[5] その他の制限: 標準ライブラリは全部使って大丈夫ですけど, できればC89まででお願いします
posix?とかいうのとかシステムコールだというのも使って大丈夫
0300デフォルトの名無しさん
2008/12/07(日) 20:32:01昨日君が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;
}
0301300
2008/12/07(日) 20:35:03[×]Circumrefence ⇒ [○]Circumference
0302デフォルトの名無しさん
2008/12/07(日) 20:37:12こんなのでいい?
#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;
}
0303デフォルトの名無しさん
2008/12/07(日) 20:49:14#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ってクロージャ使えるようなトリックないの?
0304デフォルトの名無しさん
2008/12/07(日) 21:11:30トランポリンとかでググるといい情報が見つかるかも
0305デフォルトの名無しさん
2008/12/07(日) 21:16:28int count() { static int i=0; return i++; }
int main(void) {
int i;
for(i=0; i<10; i++) printf("%d ",count());
return 0;
}
0306デフォルトの名無しさん
2008/12/07(日) 21:24:56>>266さん
本当にありがとうございました!
非常に助かりました!
言葉でしかお礼ができませんが、ありがとうございました。
0307デフォルトの名無しさん
2008/12/07(日) 21:55:05ありがとうございます!!
0308 ◆ncE6YQxqag
2008/12/07(日) 22:10:56どなたか>>210さんのいうところの
2.関数がstaticな構造体を持つ
で作っていただける方はいらっしゃらないでしょうか?
1.については作っていただいたのですが何分難しく解読が出来ませんでしたorz
>>213 さん
わざわざ作っていただき, ありがとうございました.
しかし, 当方の足りない知識では解読することができませんでした
0309デフォルトの名無しさん
2008/12/07(日) 22:19:34[2] 問題文(含コード&リンク):
正の整数値を引数として受け取り、
それを2進数、8進数、16進数として表現して出力するプログラミング
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc?
[3.3] 言語:C言語
[4] 期限:
まだ基礎的なことしか習っていません。よろしくお願いいたします。
0310デフォルトの名無しさん
2008/12/07(日) 22:30:35問題があればご指摘おねがいします。
内容はコマンドライン引数で指定した人数分だけデータを入力して構造体にそれぞれ格納して(input_dataで)
データを格納しているPERSONAL_DATA型構造体のアドレスと人数(データ数)を引数として受け取り,個人データを出力する(output_dataで)プログラムです。
ちなみに環境はOS: Linux コンパイラ名とバージョン: gcc 言語: C です。
おねがいします。
0311デフォルトの名無しさん
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); }
0312デフォルトの名無しさん
2008/12/07(日) 22:42:42input_data(*a, num);
はおかしい。
input_data(a, num); が正しいかどうかは input_data() の中身見ないとわからん。
0313デフォルトの名無しさん
2008/12/07(日) 22:46:50[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] その他の制限: 特になし
大変申し訳ありませんが、よろしくお願いします
0314デフォルトの名無しさん
2008/12/07(日) 23:21:42ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8255.c
質問しといて無視はさすがに酷かったかなとおもって直したよ、でもあまり変わらないけど
ありがとうございます.
がんばって解読したいと思います.
0316デフォルトの名無しさん
2008/12/08(月) 00:17:50result1 = v3add(&a, &b);
result2 = v3add(&a, &c);
とかやると、最初の結果が上書きされるけどいいのか
0317デフォルトの名無しさん
2008/12/08(月) 00:51:03[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] その他の制限: 今構造体を習っています。
よろしくお願いします。
0318デフォルトの名無しさん
2008/12/08(月) 00:57:32うぇwwうぇww main関数見てなかったwww
そりゃそういう害でるよなwwwwww
0319「 ◆xstMZhzLPE
2008/12/08(月) 01:37:490320デフォルトの名無しさん
2008/12/08(月) 01:58:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8257.c
効率悪いけど
0321デフォルトの名無しさん
2008/12/08(月) 02:00:37forは使ってるけど、whileも使えってことですか?w
それともクラスとか使うなって意味か?
0322デフォルトの名無しさん
2008/12/08(月) 02:15:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8258.txt
>>320
分子=0のとき無限ループ
0323デフォルトの名無しさん
2008/12/08(月) 02:26:46個人的にだが、
if (x.n < 0 && x.d < 0)
↓
if (x.d < 0)
こうすると美しくならんだろうか?
0324デフォルトの名無しさん
2008/12/08(月) 03:03:52[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)を利用してよい。」
の部分まで教えていただければ、自作の部分は自力でやってみようと思います。
よろしくお願いします。
0325デフォルトの名無しさん
2008/12/08(月) 03:10:20double rectarea(double x1, double y1, double x2, double y2)
{
return fabs((x1 - x2) * (y1 - y2));
}
0326デフォルトの名無しさん
2008/12/08(月) 05:58:00[2] 問題文 三つの値を読み込み、バイナリファイルに出力するプログラムの作成
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:
[5] その他の制限:
よろしくお願いします
0327デフォルトの名無しさん
2008/12/08(月) 09:45:40「値」の型は何?
以下、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);
}
0328デフォルトの名無しさん
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);
}
0329デフォルトの名無しさん
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] その他の制限:構造体までしか習っていません。本当に基礎をやっています。
よろしくお願いします。
0330327
2008/12/08(月) 12:46:56あと
fwrite(&a, ..)
の &a は a でおk
fwrite(a, ...)
0331デフォルトの名無しさん
2008/12/08(月) 12:53:38[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日まで
よろしくお願いします
0332デフォルトの名無しさん
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関数などを使用。
等確率のサイコロのならわかるのですが、
最初から確率が決まったものはどうすればいいのかわかりません。
よろしくお願いします。
0333デフォルトの名無しさん
2008/12/08(月) 13:23:30サイコロの確率の割合で出目の数字が書かれたテーブル作って計算した。
たぶん、素直に実装するならこれかな
#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]);
}
0334デフォルトの名無しさん
2008/12/08(月) 13:36:06ありがとうございます!
0335254
2008/12/08(月) 13:51:040336デフォルトの名無しさん
2008/12/08(月) 14:39:29[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] その他の制限:モンテカルロ法を用いて。
単純に面積を求めるだけならできますが、モンテカルロ法でのプログラムがよくわからないので、お願いします。
0337デフォルトの名無しさん
2008/12/08(月) 15:05:18こんな感じ?
#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;
}
0338デフォルトの名無しさん
2008/12/08(月) 16:34:21[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の関数自身は組み込めない。
0339デフォルトの名無しさん
2008/12/08(月) 16:42:40動作確認用プログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8260.txt
入力データテキスト
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8261.txt
0340デフォルトの名無しさん
2008/12/08(月) 16:48:55本当に有難う御座いました。
大変助かりました。
0341デフォルトの名無しさん
2008/12/08(月) 16:51:52[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)をお願いしたいと思います。
よろしくお願いします。
0342デフォルトの名無しさん
2008/12/08(月) 17:20:58for(j=3; j>=0; j--){
printf("%3d", arr[j][i]):
}
printf("\n");
}
確認はしてない
0343デフォルトの名無しさん
2008/12/08(月) 17:29:59早速ありがとうございます。
後程自分で確認してみたいと思います。
本当に助かりました!
0344デフォルトの名無しさん
2008/12/08(月) 17:47:06[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] その他の制限: ファイルの入出力と構造体を習ったところです。
よろしくお願いします
0345デフォルトの名無しさん
2008/12/08(月) 17:49:180346デフォルトの名無しさん
2008/12/08(月) 18:00:05[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] その他の制限:
問題文にあるとおり、配列を使わずに作成してください
よろしくお願いします
0347デフォルトの名無しさん
2008/12/08(月) 18:48:00kの使いどころがわからんかった。間違ってたら誰か直して
#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';
}
0348デフォルトの名無しさん
2008/12/08(月) 19:11:34- rstr = (char *)malloc(sizeof(char) * num + 1);
+ rstr = (char *)malloc(sizeof(char) * (num + 1));
0349デフォルトの名無しさん
2008/12/08(月) 19:25:25[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文など基礎的な所しかまだ学んでいません。
よろしくお願いします。
0350デフォルトの名無しさん
2008/12/08(月) 19:40:28#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とかに変えてね
0351「 ◆xstMZhzLPE
2008/12/08(月) 19:41:20whileを使っていただければ。
できればclassを使わない手があるならその方がいいです。
わかりづらくてごめんなさい(>_<)
0352デフォルトの名無しさん
2008/12/08(月) 19:44:12ループ版を書いてる人がいるので自分は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);
}
0353デフォルトの名無しさん
2008/12/08(月) 20:04:251の途中まで作成(ファイルに出力すれば完成)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8263.txt
>>352
n = B/x - (A-1)/x;
でおk
0354344
2008/12/08(月) 21:16:29ttp://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
とでて実行ファイルが出来ないです・・・。
0356デフォルトの名無しさん
2008/12/08(月) 21:44:58[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日
よろしくお願いします
0357デフォルトの名無しさん
2008/12/08(月) 22:58:37windowsだとこっちか
localtime_rの行を以下に変更
localtime_s(tm, &t);
0358344
2008/12/08(月) 23:18:18localtime_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
また出来ませんでした・・・
0359デフォルトの名無しさん
2008/12/08(月) 23:19:15[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時
問題文が英語で出題されました。
一応原文のまま載せてあります。
お手数ですがお願い致します。
0360デフォルトの名無しさん
2008/12/08(月) 23:39:39ちょwww同じ授業受けてるだろwwww
0361デフォルトの名無しさん
2008/12/08(月) 23:51:48元の問題書けよ禿げ
このスレに残ってるのか?
0362デフォルトの名無しさん
2008/12/09(火) 01:10:19[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時
お手数ですが、よろしくお願い致します。
0363デフォルトの名無しさん
2008/12/09(火) 02:20:23[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(木)
どなたか、よろしくお願い致します
0364デフォルトの名無しさん
2008/12/09(火) 02:29:13それはつまり、
(乱数発生→数値入力)
↓
違ったら、また次の乱数発生〜
ということ?
0365デフォルトの名無しさん
2008/12/09(火) 03:17:04他にどんなの考えたんだろ。
試行回数をファイルに保存するとか?
0366デフォルトの名無しさん
2008/12/09(火) 03:25:02?
0367デフォルトの名無しさん
2008/12/09(火) 03:49:48#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;
}
0368デフォルトの名無しさん
2008/12/09(火) 03:59:240369デフォルトの名無しさん
2008/12/09(火) 04:09:25提出期限がAM6時ではなくAM10時でした。
申し訳ありません。
0370デフォルトの名無しさん
2008/12/09(火) 04:29:000371デフォルトの名無しさん
2008/12/09(火) 04:45:29サンプルみたいな物はもらいました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8267.txt
それ以外はもらってないのでわからないです。すいません。
0372デフォルトの名無しさん
2008/12/09(火) 04:45:32炭酸飲料しか買わないのかな。。。
0373デフォルトの名無しさん
2008/12/09(火) 04:47:010374デフォルトの名無しさん
2008/12/09(火) 05:33:38多分そんな感じです。
教師からはこれを見たらできると言われただけで詳しい説明がなかったので。
>>373
その通りでした。自分で読んでみたのですがさっぱりだったのでお願いしました。
0375デフォルトの名無しさん
2008/12/09(火) 07:22:14int 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日目だがこんなもんでいいのかな?
0376デフォルトの名無しさん
2008/12/09(火) 07:23:020377デフォルトの名無しさん
2008/12/09(火) 08:36:340378デフォルトの名無しさん
2008/12/09(火) 08:45:04すいません
次数が大きいほうから順に出力させる問題です
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8264.txt
0379デフォルトの名無しさん
2008/12/09(火) 08:48:51なるほど。その発送はなかった
0380デフォルトの名無しさん
2008/12/09(火) 08:58:40#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;
}
0381デフォルトの名無しさん
2008/12/09(火) 09:42:43よろしくお願いします。
0382デフォルトの名無しさん
2008/12/09(火) 09:47:57同じリンク貼ってどうしたいんだよ>>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);
とする
0383デフォルトの名無しさん
2008/12/09(火) 10:14:05それでコンパイルしましたが出力されませんでした^^;
自分は4つ目のif文で0なのに<pmx->degree_of_xで大きいからいけないのかなと思ってるのですが・・・
0384デフォルトの名無しさん
2008/12/09(火) 10:59:08ありがとうございます。
でもエラーが16出て、更によくわからなくなってしまいました…
どなたかもう一度>>362をお願いできませんか?
0385デフォルトの名無しさん
2008/12/09(火) 11:07:32#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;
}
0386デフォルトの名無しさん
2008/12/09(火) 11:21:44#include<stdio.h>
#define ROW 5
#define COL 4
付ければいいだけのはず
0387デフォルトの名無しさん
2008/12/09(火) 11:27:14#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;
}
0388デフォルトの名無しさん
2008/12/09(火) 13:21:14[2] 問題文(含コード&リンク):1. 配列の線形探索(番兵なし)のプログラム例に手を入れて、同じ値の要素があればそのうち最後に出現する要素へのポインタを返すようにせよ。そして、その関数の計算量を評価せよ。
2. 単方向線形リストに対して線形探索(番兵なし)を行なう関数を書け。ただし、データ構造は適切に設計せよ。そして、その関数の計算量を評価せよ。
3. 末尾つき線形リストに対して線形探索(番兵あり)を行なう関数を書け。ただし、データ構造は適切に設計せよ。そして、その関数の計算量を評価せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:どちらでも可
[4] 期限:2008年12月16日13:00まで
[5] その他の制限: なし
頭が沸騰しそうだ(ry状態です
お願いします
0389デフォルトの名無しさん
2008/12/09(火) 13:31:45時間過ぎたけど、一応どうぞ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8268.txt
0390デフォルトの名無しさん
2008/12/09(火) 13:35:31>プログラム例に手を入れて
とあるのに、例がないとどうしようもないぞ?
勝手に回答者が考えていいならそれでいいけど。
0391デフォルトの名無しさん
2008/12/09(火) 13:50:46わりーみすってた
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);
0392デフォルトの名無しさん
2008/12/09(火) 13:50:55すいません言葉不足でした
自分で作っていいそうです
0393デフォルトの名無しさん
2008/12/09(火) 14:02:22#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;
}
0394デフォルトの名無しさん
2008/12/09(火) 14:20:11↓
for (i = size-1; i >= 0 ; i--)
計算量の評価って、線形探索なんだから全部O(n)じゃん
0395デフォルトの名無しさん
2008/12/09(火) 14:30:16[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] その他の制限:ないです
お願いします><
0396デフォルトの名無しさん
2008/12/09(火) 14:45:04[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のような計算を代行するようなのは禁止です。
0397デフォルトの名無しさん
2008/12/09(火) 14:50:06> 3, 5, 6, 7になります
3 と 6 が互いに素???
0398デフォルトの名無しさん
2008/12/09(火) 14:54:26#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;
}
0399デフォルトの名無しさん
2008/12/09(火) 15:00:00#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;
}
0400デフォルトの名無しさん
2008/12/09(火) 15:25:48ありがとうございます。
何度もお手数掛けて申し訳ありません。
本当に助かりました。
0401デフォルトの名無しさん
2008/12/09(火) 16:20:57ごめんなさい私が馬鹿でした
例は自分でやった物だったので。。。
0402デフォルトの名無しさん
2008/12/09(火) 16:52:42[2] 問題文(含コード&リンク):
スタックを実装し、テキストファイルから読み込んだ文字列(data.txt)の内容をスタックに
格納する。有限回ループさせ、スタックオーバーフローが起きる限界を調べよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 12/10 pm5:00
[5] その他の制限:ないです
0404デフォルトの名無しさん
2008/12/09(火) 17:12:45[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] その他の制限特になし
申し訳ありませんが、よろしくお願いします。
0405デフォルトの名無しさん
2008/12/09(火) 17:14:09スタックは固定?可変長?
それによって難易度がえらく変わってくる気が。
0406デフォルトの名無しさん
2008/12/09(火) 17:18:53できれば固定と可変長の2パターンお願いします。
無理なら固定だけでいいです。
よろしくお願いします。
0407デフォルトの名無しさん
2008/12/09(火) 17:19:04#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;
}
0408デフォルトの名無しさん
2008/12/09(火) 17:25:21#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 が負の値の場合は,長方形の面積はゼロとすることにする。
が満たされないと思う。
0409デフォルトの名無しさん
2008/12/09(火) 17:32:03#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
0410デフォルトの名無しさん
2008/12/09(火) 17:36:320411デフォルトの名無しさん
2008/12/09(火) 17:36:48みなさんありがとうございます。
おかげ様で無事に提出できました。
0412デフォルトの名無しさん
2008/12/09(火) 17:42:42#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)の内容をスタックに格納する
って、文字を格納するのか、それとも行単位の文字列を格納するのか?
とりあえず、文字を格納するスタックを書いた。
0413デフォルトの名無しさん
2008/12/09(火) 17:46:29何度もすいませんがそれでも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がくるはずなのですがきませんでした^^;
0414デフォルトの名無しさん
2008/12/09(火) 17:48:13「どれだけ早く書けるか」の勝負みたいになってるからなあ。
ところで、
http://pc11.2ch.net/test/read.cgi/tech/1192485583/283
を書いたのはここのやつか?
あまり変なことするなよ。
0415デフォルトの名無しさん
2008/12/09(火) 17:56:48[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
自分で考え…という形式は初めてで戸惑っています。
よろしくお願いします。
0416デフォルトの名無しさん
2008/12/09(火) 18:04:52まあ、自分に与えられた宿題をオープンなとこで丸投げすることのリスクぐらい学生も分かってるでしょ。
0417デフォルトの名無しさん
2008/12/09(火) 18:07:48/*
* 標準入力から整数を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;
}
0418デフォルトの名無しさん
2008/12/09(火) 18:15:21早速ありがとうございます!
助かりました!
0419デフォルトの名無しさん
2008/12/09(火) 18:43:21int even(int n) { return ~n & 1; }
int odd(int n) { return n & 1; }
0420デフォルトの名無しさん
2008/12/09(火) 18:44:22ハードの仕様書はありません
0421デフォルトの名無しさん
2008/12/09(火) 18:52:06その程度のことはコンパイラに任せればいい
0422デフォルトの名無しさん
2008/12/09(火) 18:55:03同じ次数の項が入力されたらどうするん?
てか、スレ内の参照でもいいから元の問題貼れよ
>>420
いや、ライブラリの仕様ないと無理だから
0423デフォルトの名無しさん
2008/12/09(火) 18:56:14GPIBの取説にサンプルコードとか載ってないの?
0424デフォルトの名無しさん
2008/12/09(火) 18:59:31必修じゃないなら単位をとるのはあきらめよう
必修なら卒業するのはあきらめよう
0425デフォルトの名無しさん
2008/12/09(火) 19:09:26同じ次数のときは加算しないで先に入力したものから出力されればいいです
基は378です
0426デフォルトの名無しさん
2008/12/09(火) 19:17:21どなたかお願いします
0427デフォルトの名無しさん
2008/12/09(火) 19:25:31関数名だけじゃ、誰も答えられないよ。あきらめた方がいい。
0428デフォルトの名無しさん
2008/12/09(火) 19:26:56逆に怖くて使えないと思うが
このスレをチェックしてる教師もいるみたいだし
0429デフォルトの名無しさん
2008/12/09(火) 19:31:010430デフォルトの名無しさん
2008/12/09(火) 19:44:37> 以前解答してもらったものなのですが
ということは、解答してもらう前の課題の原文がある筈だろ
つまり、その課題を示せと言っているんだよ
どうだ?これで伝わったか?
>>426
担当教官に質問しに行け。でなければ、単位はあきらめろ
答えそのものを教えてくれることはないだろうが、
君が理解できるように、あるいは単位を取れるように努力はしてくれるはずだ
0431デフォルトの名無しさん
2008/12/09(火) 19:49:53[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
よろしくお願いします。
0432デフォルトの名無しさん
2008/12/09(火) 19:51:460433187
2008/12/09(火) 19:54:08ありがと!
0434デフォルトの名無しさん
2008/12/09(火) 19:58:060435デフォルトの名無しさん
2008/12/09(火) 19:58:260436デフォルトの名無しさん
2008/12/09(火) 19:59:51原文は>>378にあるものでif-else文がないverです
0437デフォルトの名無しさん
2008/12/09(火) 20:04:01#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;
}
0438デフォルトの名無しさん
2008/12/09(火) 20:05:45fluっぽいので寝よ
0439デフォルトの名無しさん
2008/12/09(火) 20:13:59if-else文を抜いたものが問題って。
ソースコードのみが問題として出題されて、それに対して勝手に何かを想像し、
if-else文を入れたソースコードが解答として作られたの?
そんなことないよね?
次数、係数を入力し、式を表示するようなプログラムを作れ、
とかそういう問題があるんじゃないの?と、>>430は言いたいんだと思うよ。
ここまで日本語が通じないなんてびっくりしたのでフォローしといた。
0440デフォルトの名無しさん
2008/12/09(火) 20:28:44[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
よろしくお願いします。
0441デフォルトの名無しさん
2008/12/09(火) 20:31:38>>378にそれらしい文はあると思うのだが
それに気づかないなんてびっくりしたのでフォローした
0442デフォルトの名無しさん
2008/12/09(火) 20:34:160443デフォルトの名無しさん
2008/12/09(火) 20:39:09///次数が大きいものから出力させるプログラム///
問題がこれだけってことはないだろwww
0444デフォルトの名無しさん
2008/12/09(火) 20:42:11まさかそれだけだとびっくりするのでフォローした
0445デフォルトの名無しさん
2008/12/09(火) 20:45:000446デフォルトの名無しさん
2008/12/09(火) 20:47:42・仕様がはっきりわからないと答えようがない
・後から「これはこうしてください」って付け加えるなら最初から全部教えろ
ってとこでしょ
0447デフォルトの名無しさん
2008/12/09(火) 20:53:270448デフォルトの名無しさん
2008/12/09(火) 21:00:20問題文がないとそれがバグだと言い切れないよね
0449デフォルトの名無しさん
2008/12/09(火) 21:30:18ありがとうございます。
0450デフォルトの名無しさん
2008/12/09(火) 21:47:51そういうことです^^;
0451デフォルトの名無しさん
2008/12/09(火) 21:51:540452デフォルトの名無しさん
2008/12/09(火) 22:14:37[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] その他の制限:なし
よろしくお願いします。
0453デフォルトの名無しさん
2008/12/09(火) 22:33:49#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;
}
0454まめ
2008/12/09(火) 22:37:43(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!
0455デフォルトの名無しさん
2008/12/09(火) 22:52:48どうでもいいが
EVEN 偶数
ODD 奇数
0456デフォルトの名無しさん
2008/12/09(火) 23:00:31答えを示されているのにまだこのスレに居座るつもり?
0457まめ
2008/12/09(火) 23:06:28あ、やっぱ?
辞書ひくのが、めんどかったのでそのまま書いてしまった
スマソ>452
0458デフォルトの名無しさん
2008/12/09(火) 23:16:27http://dic.yahoo.co.jp/
0459デフォルトの名無しさん
2008/12/09(火) 23:23:13これでイーブンね、とか、オッドアイとか、まあ、そういうカタカナで出てくる言葉を覚えておこう
0460デフォルトの名無しさん
2008/12/09(火) 23:42:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8269.txt
0461デフォルトの名無しさん
2008/12/09(火) 23:46:34[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日(月)
どなたかお願いします><
0462デフォルトの名無しさん
2008/12/09(火) 23:49:08お二人共大変助かりました。
細かい解説までありがとうございます。
0463デフォルトの名無しさん
2008/12/09(火) 23:56:42構造体を使わない方がいいか?
問題見た限り使わないみたいなんだけどどうなの?
0464デフォルトの名無しさん
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] その他の制限:特にありません
良ければよろしくお願いします。
0466デフォルトの名無しさん
2008/12/10(水) 00:34:25等号入れてみ
if (pwork->next->degree_of_x <
pmx->degree_of_x) {
→
if (pwork->next->degree_of_x <=
pmx->degree_of_x) {
0467デフォルトの名無しさん
2008/12/10(水) 01:37:30(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;
}
0468デフォルトの名無しさん
2008/12/10(水) 01:39:04(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);
}
0469デフォルトの名無しさん
2008/12/10(水) 02:02:26迅速な回答本当に助かりました。
ありがとうございます。
0470デフォルトの名無しさん
2008/12/10(水) 09:08:13[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をダラダラと書いていくと教授が言っていたような気がします
よろしくおねがいします
0471デフォルトの名無しさん
2008/12/10(水) 09:21:27[2] 問題文(含コード&リンク):
整数aにキーから値を入力し、1+2+3+・・+aの
計算を行うプログラムを作りなさい。
但し、aは1より大きい値とする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C++
[4] 期限: 12/10
[5] その他の制限: 特にないと思います。
簡単そうに見えてさっぱりです。よろしくお願いいたします。
0472デフォルトの名無しさん
2008/12/10(水) 09:39:27#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;
}
0473デフォルトの名無しさん
2008/12/10(水) 09:40:38#include <stdio.h>
int main(void)
{
int a,sum;
printf("整数を入力:");
scanf("%d",&a);
sum = a*(a+1)/2;
printf("ans = %d",sum);
return 0;
}
0474デフォルトの名無しさん
2008/12/10(水) 09:48:56#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;
}
0475デフォルトの名無しさん
2008/12/10(水) 09:53:52[2] 問題文(含コード&リンク):
入力した数字を関数(atoiなど)を使用せず、2進数に基数変換するプログラム
を作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual stdio 2005
[3.3] 言語:C言語
[4] 期限: 12/10
[5] その他の制限:特にありません
ご協力よろしくお願いします
0476デフォルトの名無しさん
2008/12/10(水) 09:54:11ありがとうございました
ちょっと自分には難しいですが勉強してみます
0477デフォルトの名無しさん
2008/12/10(水) 09:56:41ありがとうございました、これを参考にして提出します!
非常に感謝です。
0478デフォルトの名無しさん
2008/12/10(水) 10:05:33#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;
}
0480デフォルトの名無しさん
2008/12/10(水) 11:31:320
0
0
0
1
1
0
0
1
1
・
・
・
1
1
0
0
0
とこのような感じで0と1が何千行と出されているのですがメモの上から順番にforで回して
1が出た場合その行数とそこから1がどれだけ続いたかカウントしていくプログラムを作成したいのですが
どういったようにつくっていけばよいのでしょうか?
使用しているのはc++builder5です。
0481デフォルトの名無しさん
2008/12/10(水) 11:35:28>>1をよく読んでから質問しよう
0482デフォルトの名無しさん
2008/12/10(水) 11:45:20考え方だけ
カウントした結果をどうしたいのかが示されていないので、とりあえず標準出力に表示するものと仮定
int n, cnt =0;
1.データを1行ずつ読む
fscanf(fp, "%d", &n)
2.データの判定と表示
n != 0 なら cnt++
n == 0 かつ cnt != 0 なら cnt の値を表示の後 cnt = 0
0483デフォルトの名無しさん
2008/12/10(水) 12:16:10こちらの問題をどなたかお願いします。
0484デフォルトの名無しさん
2008/12/10(水) 12:16:56この問題文で理解できる人がいるとおもってるの?
0485デフォルトの名無しさん
2008/12/10(水) 12:29:45まぁ、単なる回帰直線・曲線を求める問題でしょ。
>>440 ここはプログラミングの板なので、問題に関係する式が分かってるなら
示すべきだし、分かってないなら他にあたるべきだね。
0486デフォルトの名無しさん
2008/12/10(水) 12:47:09計算の途中で循環小数が出てくると誤差が生じると思うんだけど、
プログラムを組む上で注意したりするもんですか?
0487デフォルトの名無しさん
2008/12/10(水) 12:54:390488デフォルトの名無しさん
2008/12/10(水) 12:57:29誤差を無くしたかったらdouble型などをそのまま使わずに各桁の数値をint型などで記憶すれば
小数点以下100桁の精度でとか10000桁の精度でとかもできる。
あとスレ違い
0489デフォルトの名無しさん
2008/12/10(水) 13:24:41int 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;
}
0490デフォルトの名無しさん
2008/12/10(水) 13:27:341 は途中までやってあるみたいだから 2だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8270.txt
}
0491デフォルトの名無しさん
2008/12/10(水) 13:39:381 は、ライブラリ関数を使った >>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;
}
0492344
2008/12/10(水) 13:51:25>>491
どうもありがとうございます。本当に助かりました・・・。
あとはWikiをみながらカレンダー部分を仕上げます。
ありがとうございました。
0493デフォルトの名無しさん
2008/12/10(水) 14:20:05[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 をいじって欲しいです。お願いします。
0494デフォルトの名無しさん
2008/12/10(水) 15:36:36[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)できたらよろしくお願いします。
0495デフォルトの名無しさん
2008/12/10(水) 17:01:54[2] 問題文(含コード&リンク):
分数の約分、加算、除算、乗算を計算するプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: cc
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:約分ではユークリッドの互除法を用いる
お願いします
0496デフォルトの名無しさん
2008/12/10(水) 18:08:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8274.txt
変数がカッコ悪いからそこは適当に変えてくれ
0497デフォルトの名無しさん
2008/12/10(水) 18:21:25・データの一覧表示
・キーボードからのデータ追加
・名前によるデータ検索
・学生番号によるデータの整列(昇順)
・ファイルからデータ入力
・ファイルへデータ出力
ただし単方向の直結リストを使わなければならない。
教えてください。。
0498デフォルトの名無しさん
2008/12/10(水) 18:25:27>>1
0499デフォルトの名無しさん
2008/12/10(水) 18:47:160500デフォルトの名無しさん
2008/12/10(水) 20:00:06[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問よろしくおねがいします
0501デフォルトの名無しさん
2008/12/10(水) 20:15:52[2] 問題文(含コード&リンク): 4 桁以上の正の整数を読み込んだとき,その整数の,
1 の位の値
10 の位の値
100 の位の値
の3 つの値を出力するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語:C
プログラムの部分と1の位まではできたのですが、
10の位と100の位の出し方がわかりません。
少々スレ違いかもしれませんが、よろしくお願いします。
0502デフォルトの名無しさん
2008/12/10(水) 20:19:06(n/10)%10
(n/100)%10
0503デフォルトの名無しさん
2008/12/10(水) 20:36:06最大の数字を表示するプログラムを教えてください
0504RUB
2008/12/10(水) 21:09:44[2] 問題文(含コード&リンク): 名簿管理プログラムをC言語より作成する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Eclipse3.3
[3.3] 言語: C
[4] 期限:12月20日
[5] その他の制限: 必要機能・・・データの一覧表示、キーボードからのデータ追加
名前によるデータ検索、学生番号によるデータ整列(昇順)
ファイルからのデータ入力、ファイルへデータ出力
名簿データ構造・・・個人ID(int型)
名前(半角英字のみ、29文字以下)教授いわくこれは簡単にしてあるらしい。
注意として実装時には単方向連結リストをしようしなければならない。。
難しすぎます・・・
0505デフォルトの名無しさん
2008/12/10(水) 21:15:10なるほど!ありがとうございます!
0506デフォルトの名無しさん
2008/12/10(水) 21:17:39[2] 問題文(含コード&リンク): P5形式のPGMファイルを読み込み,隣接画素間の
相関を求め、CSV形式で出力せよ。
(こんな感じの問題でした)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 12月11日(今日の宿題で明日提出です)
[5] その他の制限: 特になし
PGMファイルが手元にないのでアップすることが出来ないのですが,調べてみたら
このファイルは画像符号化でよく用いられているテスト画像のようです
(airplaneという画像)。画像を読み込むところまでは出来たのですが、
相関の求め方(自己相関関数だと思います)とCSVでの出力の仕方がわかりません。
どなたかご教授お願いいたします。
0507デフォルトの名無しさん
2008/12/10(水) 21:19:26[2] 問題文(含コード&リンク):
一つの整数をキーボードから入力する。これをn とする。
続いてn 個の整数をキーボードから入力する。
「奇数番目に入力した数の合計と平均」及び「偶数番目に入力した数の合系と平均」、
さらにどちらが大きいかを出力しなさい。
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン: VisualC++6.0
[3.3] 言語:C言語
[4] 期限:12/12
[5] その他の制限:特にありませんが、習い始めたばかりです
よろしくお願い致します。
0508デフォルトの名無しさん
2008/12/10(水) 22:06:41[2] 問題文(含コード&リンク):midiファイルを取り込んで再生するプロジェクタを
完成させよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名; VisualC ++6.0
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 12/13
[5] その他の制限:習い始めで全然わかりません・・・
どなたかよろしければよろしくお願いします。
0509デフォルトの名無しさん
2008/12/10(水) 22:11:26どなたか助けていただけないでしょうか?
画像の読み込み(たて:512 よこ:512)は出来たのですが、
そこから先に進みません。
以前の説明に大事なことを書き忘れたのですが256階調のモノクロ静止画です。
0511デフォルトの名無しさん
2008/12/10(水) 22:20:01プロジェクタって何?
0512デフォルトの名無しさん
2008/12/10(水) 22:20:390513デフォルトの名無しさん
2008/12/10(水) 22:21:570514デフォルトの名無しさん
2008/12/10(水) 22:30:33プロジェクト形式でお願いします。
MFCを使ってもOKです
0515デフォルトの名無しさん
2008/12/10(水) 22:52:59[2] 問題文(含コード&リンク): 森林火災プログラム
最初に季節(春・夏・秋・冬)を入力させ 次に天気(晴れ・曇り・雨)を入力させる。
その季節・天気によって燃え移る確率を変化させる。
セルを 無事な木、燃えている木、燃え尽きた木の3種類でつくり
燃えている木の隣接に無事な木がいたら(乱数+(季節・天気)を使って)燃え移るか燃え移らないか判断
それを燃えている木がなくなるまで繰り返す。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++6.0
[3.3] 言語: C/C++/どちらでも可
[4] 期限:できれば12/12(金)中までに・・・
[5] その他の制限: 締め切りが近いのですが難しくて思うように進みません。
もしやってくださる方がいたらお願いします。。。
0516デフォルトの名無しさん
2008/12/10(水) 23:00:03本当のアンカーは>>506か
途中までできたんだったら、うpしてみないか?
0517デフォルトの名無しさん
2008/12/10(水) 23:00:31すみません
0518515
2008/12/10(水) 23:01:28無事な木 =緑
燃えている木 =赤
燃え尽きた木 =黒
と色分けしていただけるとありがたいです。
0519デフォルトの名無しさん
2008/12/10(水) 23:03:49>>452-454
0520デフォルトの名無しさん
2008/12/10(水) 23:09:19#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;
}
0521デフォルトの名無しさん
2008/12/10(水) 23:10:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8277.txt
0522デフォルトの名無しさん
2008/12/10(水) 23:14:33いつ燃え尽きるんだ
0523デフォルトの名無しさん
2008/12/10(水) 23:20:510524515
2008/12/10(水) 23:25:49無事→燃え移る→燃え尽きる なので
1回更新する毎に
燃えている木の隣接にある無事な木が燃え
いま燃えていた木は燃え尽きる としていんですが・・・
曖昧ですみません><
0525デフォルトの名無しさん
2008/12/10(水) 23:39:15[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
0526デフォルトの名無しさん
2008/12/11(木) 00:02:30/* ---- 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;
}
0527デフォルトの名無しさん
2008/12/11(木) 00:06:360528デフォルトの名無しさん
2008/12/11(木) 00:06:46printfは%fのままでいいだろ
まぁc99ではありだが
と思ったら元でもlfなのなw
0529デフォルトの名無しさん
2008/12/11(木) 00:14:54画像を読み込むところはこんな感じで書きました。
構造体を使っているところは他で定義してあります。
(ここは以前の授業の使いまわしなので問題ないと思います)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8279.txt
ここまでしかわかっていませんのでどなたか助けてください
0530デフォルトの名無しさん
2008/12/11(木) 00:15:53完璧に実行できました、ありがとうですm(_ _)m
homework09.datは、宿題で示されたファイル名です。
投稿にあたってデータファイル名を変えたんですが、訂正し忘れました…やっちまったなぁorz
あと、生意気ですが、scanfのk[i].nameには&はいらないのでは?
0531デフォルトの名無しさん
2008/12/11(木) 00:23:24それは直そうと思ったけどまあいいかなとw
>>530
>scanfのk[i].nameには&はいらないのでは?
失礼。おっしゃるとおり。
ただ k[i].nameも&k[i].nameもアドレスは同じだから動くことは動くんだよね。
0532デフォルトの名無しさん
2008/12/11(木) 00:25:39欠けている条件
・季節と天気による確率変化のテーブル
・乱数の範囲
・木の初期配置と状態
0533デフォルトの名無しさん
2008/12/11(木) 00:27:20こちらこそ失礼しました。
また質問に来ることがあると思いますので、その際はまたよろしくお願いします。
0534デフォルトの名無しさん
2008/12/11(木) 00:43:32[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] その他の制限:特に無し
できたらよろしくお願いします。
0535デフォルトの名無しさん
2008/12/11(木) 01:11:460536デフォルトの名無しさん
2008/12/11(木) 01:16:09担当に
0537515
2008/12/11(木) 01:18:08木の初期配置もできれば乱数を使ってランダムに
状態は1箇所だけ燃えている状態 残りは無事な状態でお願いします。
確率変化は 春だと+10% 夏+20% 秋+30% 冬-10%
晴れ +30% 曇り+10% 雨-20%
という感じで(%は目安なので細かくやらなくても大丈夫です。
乱数はそちらのやり易いように使ってもらって大丈夫です。
木の初期配置もできれば乱数を使って配置(木の密集率も入力かも
状態は最初1箇所だけ燃えている状態 残りは無事な状態 でお願いします。
注文&書き忘れが多くてすみません。。。
0538デフォルトの名無しさん
2008/12/11(木) 01:20:53[2] 問題文(含コード&リンク):
時,分,秒の3つのデータをメンバにした構造体timeをtypedefによって
宣言せよ。キーボードから2つの時刻を入力して,それら時刻の差を求め,表
示するプログラムを構造体timeを利用して作成せよ。
ただし,構造体の定義を含むヘッダファイルmytime.hを作成し,そのヘッ
ダファイルをプログラムにインクルードすること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日10:30
[5] その他の制限:ぉ〜ん
0539デフォルトの名無しさん
2008/12/11(木) 01:41:46ありがとうございます!!
0540デフォルトの名無しさん
2008/12/11(木) 02:05:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8281.txt
0541デフォルトの名無しさん
2008/12/11(木) 02:57:01[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に対して成り立つという条件を加え、
「図形を描くという処理」を行いたいです。
よろしくお願いします。
0542 ◆sUfWYz9MSA
2008/12/11(木) 03:00:46[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]特にありません。
0543デフォルトの名無しさん
2008/12/11(木) 03:14:52[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、関数、ライブラリ関数、実数のフォーマット指定は習いました。
お願いします。
0544デフォルトの名無しさん
2008/12/11(木) 03:32:400545デフォルトの名無しさん
2008/12/11(木) 03:34:05math.hの
sin() は使っていいのか?
ラジアンへの変換だけみたいだから使っていいともとれるんだが
0546RYB
2008/12/11(木) 03:37:18[2] 問題文(含コード&リンク): 名簿管理プログラムをC言語より作成する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Eclipse3.3
[3.3] 言語: C
[4] 期限:12月20日
[5] その他の制限: 必要機能・・・データの一覧表示、キーボードからのデータ追加
名前によるデータ検索、学生番号によるデータ整列(昇順)
ファイルからのデータ入力、ファイルへデータ出力
名簿データ構造・・・個人ID(int型)
名前(半角英字のみ、29文字以下)教授いわくこれは簡単にしてあるらしい。
注意として実装時には単方向連結リストをしようしなければならない。。
難しすぎます・・・
0547デフォルトの名無しさん
2008/12/11(木) 04:37:57http://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;
これを入れた方がいいかも
0548デフォルトの名無しさん
2008/12/11(木) 04:41:40[2] 問題文
コマンドライン引数で指定したファイルからテキストを読み込み、
中央揃えで画面に表示する。ただし1行は80文字とする。
[3] 環境
[3.1] OS: Windowsxp
[3.2] コンパイラ名とバージョン: 任意
[3.3] 言語: C
[4] 期限: 12月11日
中央揃えの仕方や1行を80文字にする方法がよくわかりません。
よろしくお願いします。
0549デフォルトの名無しさん
2008/12/11(木) 05:06:39[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
0550デフォルトの名無しさん
2008/12/11(木) 05:08:401ユニットのインクが,もっとも高い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
0551デフォルトの名無しさん
2008/12/11(木) 07:01:55取りあえず、センタリングだけ
// s: 出力する文字列 (80文字以下)
printf("%*s\n", (80 + strlen(s)) / 2, s);
0552デフォルトの名無しさん
2008/12/11(木) 09:03:370553デフォルトの名無しさん
2008/12/11(木) 10:46:07(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;
}
0554デフォルトの名無しさん
2008/12/11(木) 11:11:02次(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;
}
0555デフォルトの名無しさん
2008/12/11(木) 12:01:10#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;
}
0556デフォルトの名無しさん
2008/12/11(木) 12:29:590557デフォルトの名無しさん
2008/12/11(木) 12:31:18[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
0558デフォルトの名無しさん
2008/12/11(木) 12:46:45[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 を使ってほしいです。
よろしくお願いします。
0559デフォルトの名無しさん
2008/12/11(木) 12:50:31The only way to learn a programming language is by writing programs in it.
0560デフォルトの名無しさん
2008/12/11(木) 12:51:54. ハ,,ハ ミ _ ドスッ
. ( ゚ω゚ )彡―─┴┴─―
* * * \ / つ お断りし / ハ,,ハ
* * \ 〜′ /´ └―─┬/ ( ゚ω゚ ) お断りします
* ハ,,ハ * \ ∪ ∪ / / \
* ( ゚ω゚ ) * .\ / ((⊂ ) ノ\つ))
* お断りします * . \∧∧∧∧/ (_⌒ヽ
* * < お > ヽ ヘ }
* * * < の し 断 > ε≡Ξ ノノ `J
────────────< 予 ま わ >────────────
. オコトワリ < 感 す り >
ハ,,ハ ハ,,ハ .ハ,,ハ <. !! > ハ,,ハ
. .( ゚ω゚ ) . ( ゚ω゚ ) ( ゚ω゚ ) /∨∨∨∨\ ( ゚ω゚ )<お断り .ハ,,ハ
│ │ │ / .\ します>( ゚ω゚ )
,(\│/)(\│/)(\│ /. \
/ ♪お断りします♪ \
/ ハ,,ハ ハ,,ハ .ハ,,ハ ハ,,ハ\
. ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ )
0561デフォルトの名無しさん
2008/12/11(木) 12:55:43コンソールのサイズを変えろというわけではなく、80文字前提で作ればいいと思うから
そこは気にしなくていいと思う。
センタリングは誰か書いてる
0562デフォルトの名無しさん
2008/12/11(木) 12:56:35The only way to learn a programming language is by writing programs in it.
0563デフォルトの名無しさん
2008/12/11(木) 13:01:14お断りします。自分でがんばってね。
0564デフォルトの名無しさん
2008/12/11(木) 13:06:160565デフォルトの名無しさん
2008/12/11(木) 13:27:05>>551さん>>561さんありがとうございます
0566デフォルトの名無しさん
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] その他の制限:
よろしくお願いします
0567デフォルトの名無しさん
2008/12/11(木) 13:39:53tree[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];
0568RYB
2008/12/11(木) 16:09:050569デフォルトの名無しさん
2008/12/11(木) 16:17:03ファイルの書式を指定しないと、誰も手を付けてくれないと思うよ。
カンマ区切りのテキストファイルでいいの?
あと、glibは当然使って良いんだよね?
0570デフォルトの名無しさん
2008/12/11(木) 16:29:320571デフォルトの名無しさん
2008/12/11(木) 16:57:40glibもわかりません・・・
0572デフォルトの名無しさん
2008/12/11(木) 17:14:43IDと名前を複数人数分保存しないといけないでしょ?
人を区切るための何かと、IDと名前を区切るための何かが必要なのね。
まあ、時期?習熟程度?を考えると、各行にID,名前という形で入れていくのがいいかなとは思うけれど。
0573デフォルトの名無しさん
2008/12/11(木) 17:22:37> ファイルの書式を指定しないと、誰も手を付けてくれないと思うよ。
たぶん、どういったフォーマットでファイル化するかも課題のうちじゃないかな。
XML でやってやるとか。w
> あと、glibは当然使って良いんだよね?
ターゲットが Windows みたいだから、それはどうだろ。Cygwin ?
0574デフォルトの名無しさん
2008/12/11(木) 17:25:43クイックソートは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);
}
0575デフォルトの名無しさん
2008/12/11(木) 17:26:10Eclipse 知らんわ。
0576デフォルトの名無しさん
2008/12/11(木) 17:31:40ありがとうございます
とりあえず、いざとなったら、それでいかせていただきますw
0577デフォルトの名無しさん
2008/12/11(木) 17:33:320578デフォルトの名無しさん
2008/12/11(木) 17:40:590579デフォルトの名無しさん
2008/12/11(木) 18:03:39[2] 問題文(含コード&リンク):15文字までの4つの文字列を入力し,その各文字列の文字数を出力するプログラムを作成せよ.
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008 Express Edition
[3.3] 言語:C++
[4] 期限: 12月12日
[5] その他の制限:文字数はライブラリ関数(あるのかな?)を用いない
よろしくお願いします
0580デフォルトの名無しさん
2008/12/11(木) 18:09:16C言語@便利なマクロ
http://pc11.2ch.net/test/read.cgi/tech/1144824670/
こちらへどうぞ
0581デフォルトの名無しさん
2008/12/11(木) 18:19:43いやそうじゃなくて・・・
ブロックだけで十分だろって
0582デフォルトの名無しさん
2008/12/11(木) 18:21:52[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] 期限:明日まで
お願いします
0583デフォルトの名無しさん
2008/12/11(木) 18:30:24それを言ったらVC6もコンパイラはMicrosoft (R) 32-bit C/C++ Optimizing Compiler Version 12じゃないか?
0584デフォルトの名無しさん
2008/12/11(木) 18:35:311番目の文字列を入力してください(15文字以下):名前1
2番目の文字列を入力してください(15文字以下):名前2
3番目の文字列を入力してください(15文字以下):名前3
4番目の文字列を入力してください(15文字以下):名前
文字数は次のとおりである.
ここまでデータ入力
1番目の文字列:名前 1:?文字
2番目の文字列:名前2 : ?文字
3番目の文字列:名前3 : ?文字
4番目の文字列:名前4 : ?文字
続行するには何かキーを押してください . . .
0585デフォルトの名無しさん
2008/12/11(木) 18:37:34簡単に言ったら、
構文エラー if () { }; else ;
正しい構文 if () do{}while(0); else ;
今回の場合は、ブロック作るだけでもよいが、習慣つけような。
もっとも、今時マクロはもう止めてくれといいたいけど、必要悪としては認めたい。
0586デフォルトの名無しさん
2008/12/11(木) 18:39:20breakしたいから
0587デフォルトの名無しさん
2008/12/11(木) 18:42:12コンパイラのところにVC6と書かれると、ああ、たぶんcl.exeだろうなと想像できるが、
eclipseと書かれてもコンパイラは一概に決められないような。
じゃあ想定したのと違ったらどうなるのか?といわれると、宿題スレでそれが問題になることはあんまりないようにも思う。
0588デフォルトの名無しさん
2008/12/11(木) 18:45:150589help me
2008/12/11(木) 18:52:26[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日
よろしくお願いします。
0590デフォルトの名無しさん
2008/12/11(木) 18:59:07同じクラスの周りの子はみんなファイルの書式をいろいろ考えて
せっせとプログラム作ってるっていうのにお前ときたら。。。
漢字にふりがなをつけろという問題で、ふりがなってなんですかって
言っているぐらいに。。。
0591デフォルトの名無しさん
2008/12/11(木) 19:31:320592デフォルトの名無しさん
2008/12/11(木) 19:42:570593デフォルトの名無しさん
2008/12/11(木) 20:10:53[2] 問題文(含コード&リンク):整数を3つ入力して出力する。
整数以外が入力されたエラーメッセージを表示し終了。
改行のみの入力エラーメッセージを表示し終了
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限: 今晩
[5] その他の制限:初心者なので初心者用にお願いします。コメント付けて頂けると嬉しいです。
0594デフォルトの名無しさん
2008/12/11(木) 20:34:32#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;
}
0595デフォルトの名無しさん
2008/12/11(木) 20:35:030596デフォルトの名無しさん
2008/12/11(木) 20:50:230597デフォルトの名無しさん
2008/12/11(木) 20:50:35[2] 問題文:入力された文字列に対して、大文字表示と小文字表示を行うプログラムをポインタを用いて作成して下さい
[3]
[3.1] OS:Windows
[3.2]
[3.3] C言語
[4]
誰か教えてください。お願いします。
0598デフォルトの名無しさん
2008/12/11(木) 20:52:25[2] 問題文(含コード&リンク):
文字型配列の先頭アドレスを受け取り、文字列内の文字を降順にソートする関数を作成。
mainで文字列の入力し、先頭アドレスを作成した関数に受け渡し結果をmainで表示する。
表示はmainで行うこと。なお関数名、変数名は任意とする。
[3] 環境
[3.1] OS: Windows
[3.2] VC
[3.3] 言語: C
[4] 期限:今晩
[5] その他の制限: 初心者が学ぶ範囲でお願いします。
0599デフォルトの名無しさん
2008/12/11(木) 20:55:34これでどうだ!
#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;
}
0600デフォルトの名無しさん
2008/12/11(木) 20:58:03エラー E2206 rr.c 5: 不正な文字 ' ' (0x8140)(関数 main )
0601デフォルトの名無しさん
2008/12/11(木) 21:03:32あと間違えたってのは改行入力のみのエラーはついてない件な
0602デフォルトの名無しさん
2008/12/11(木) 21:06:310603デフォルトの名無しさん
2008/12/11(木) 21:06:542chのせい?
0604デフォルトの名無しさん
2008/12/11(木) 21:08:000605デフォルトの名無しさん
2008/12/11(木) 21:11:19知ってる。
俺も>>599に全角スペースがあるように見える。
0606デフォルトの名無しさん
2008/12/11(木) 21:12:13int main(void){
int i;
int *p;
printf("なんか入力しろや:");
scanf("%d", &i);
printf("大文字");
printf("小文字");
return 0;
}
0607デフォルトの名無しさん
2008/12/11(木) 21:12:58俺にもそう見える
0608デフォルトの名無しさん
2008/12/11(木) 21:13:570609デフォルトの名無しさん
2008/12/11(木) 21:16:490610デフォルトの名無しさん
2008/12/11(木) 21:17:19お前か?
0611デフォルトの名無しさん
2008/12/11(木) 21:18:110612デフォルトの名無しさん
2008/12/11(木) 21:19:02#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;
}
なんかいまいち初心者むけじゃないもののようなきもするが
0613デフォルトの名無しさん
2008/12/11(木) 21:20:420614デフォルトの名無しさん
2008/12/11(木) 21:32:03#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;
}
0615デフォルトの名無しさん
2008/12/11(木) 22:13:04#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;
}
0616デフォルトの名無しさん
2008/12/11(木) 22:29:14どなたかお願いいたします
0617デフォルトの名無しさん
2008/12/11(木) 22:31:21>>615
遅くなってすいませんでした
どうもありがとうございます
今から試してみようと思います
0618デフォルトの名無しさん
2008/12/11(木) 23:09:09gccでいい。
0619デフォルトの名無しさん
2008/12/11(木) 23:53:350620デフォルトの名無しさん
2008/12/12(金) 00:40:37[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 等難しいのは勘弁
0621デフォルトの名無しさん
2008/12/12(金) 00:51:200622デフォルトの名無しさん
2008/12/12(金) 00:52:280623デフォルトの名無しさん
2008/12/12(金) 00:53:110624デフォルトの名無しさん
2008/12/12(金) 00:55:010625デフォルトの名無しさん
2008/12/12(金) 00:57:310626help me
2008/12/12(金) 01:05:46ご指示願います。
0627デフォルトの名無しさん
2008/12/12(金) 01:07:300628デフォルトの名無しさん
2008/12/12(金) 01:13:36#include <string.h>
この二つで使える関数なら大丈夫です
#define SIZE 8
#define BUFFERSIZE
サイズはかるのにこれを使っていました。
0629デフォルトの名無しさん
2008/12/12(金) 01:16:360630デフォルトの名無しさん
2008/12/12(金) 01:18:310631デフォルトの名無しさん
2008/12/12(金) 01:21:420632デフォルトの名無しさん
2008/12/12(金) 01:23:400633デフォルトの名無しさん
2008/12/12(金) 01:27:03#include <stdio.h>
#define BUFFERSIZE 1024
main()
{
char buffer[BUFFERSIZE];
fgets(buffer, BUFFERSIZE, stdin);
printf("%s\n", buffer);
}
0634デフォルトの名無しさん
2008/12/12(金) 01:27:500635デフォルトの名無しさん
2008/12/12(金) 01:31:28#include <stdio.h>
#include <string.h>
この二つで使える関数でお願いします
0636デフォルトの名無しさん
2008/12/12(金) 01:32:030637デフォルトの名無しさん
2008/12/12(金) 01:37:440638デフォルトの名無しさん
2008/12/12(金) 01:37:570639デフォルトの名無しさん
2008/12/12(金) 02:05:250640デフォルトの名無しさん
2008/12/12(金) 02:47:13最近こういう学生が多くて困る。
自分で調べて勉強したというのは評価するがなぜそれを使わないんだ?
教えてないものは使うなと教授に言われたのか?
もしそうなら自分のためにならないからそんな大学やめてしまえ。
0641デフォルトの名無しさん
2008/12/12(金) 02:51:030642デフォルトの名無しさん
2008/12/12(金) 08:23:06きもいソースできたよー
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8290.txt
0643デフォルトの名無しさん
2008/12/12(金) 08:28:05#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;
}
0644デフォルトの名無しさん
2008/12/12(金) 09:12:260645デフォルトの名無しさん
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] その他の制限:構造体までしか習っていません。本当に基礎をやっています。
よろしくお願いします。
0646デフォルトの名無しさん
2008/12/12(金) 09:25:35(1)のほうだけ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8291.txt
(2)は仕様がよく分からんのでパス。
0647デフォルトの名無しさん
2008/12/12(金) 10:14:48Linux で遊んでみたけど、結構面白いな、これ。w
0648デフォルトの名無しさん
2008/12/12(金) 10:25:54遅レスすいません。
sin()、cos()を使ってもらっても構いません。
0649デフォルトの名無しさん
2008/12/12(金) 11:10:00ファイルはテキストファイルで良いです。
0651デフォルトの名無しさん
2008/12/12(金) 12:03:27#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;
}
0652デフォルトの名無しさん
2008/12/12(金) 12:41:28/* とりあえず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;
}
0653デフォルトの名無しさん
2008/12/12(金) 12:47:10>>555をコンパイラしてみたんですけど、エラーが出て出来ませんでした。
0654デフォルトの名無しさん
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日まで]
お願いします
0655デフォルトの名無しさん
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日まで]
お願いします
0656デフォルトの名無しさん
2008/12/12(金) 13:38:41答えはここかと
http://m--takahashi.com/bbs/pastlog/10200/10130.html
0657515
2008/12/12(金) 13:56:00ありがとうございます<(_ _)>
自分なりに少し改造して使わせていただきますね〜
0658デフォルトの名無しさん
2008/12/12(金) 14:12:38#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;
}
0659デフォルトの名無しさん
2008/12/12(金) 14:44:47エラー 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
とでました。;;
0660デフォルトの名無しさん
2008/12/12(金) 15:11:29http://blackapples.web.fc2.com/c/wordmanager.html
0661デフォルトの名無しさん
2008/12/12(金) 15:52:54[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]等)
どうかよろしくお願いします
0662デフォルトの名無しさん
2008/12/12(金) 15:53:28[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]等)
どうかよろしくお願いします
0663デフォルトの名無しさん
2008/12/12(金) 15:55:05M_PIを3.1415926に置き換えたらいいのでしょうか?
0664デフォルトの名無しさん
2008/12/12(金) 16:14:06M_PIが定義されていないようだったら置き換えてもいいだろうし、includeの下にdefineでM_PIを定義してもいいんじゃないかな
0665デフォルトの名無しさん
2008/12/12(金) 16:33:13そうですか。
分かりました。やってみたいと思います。
どうもご親切に有難う御座います。
0666デフォルトの名無しさん
2008/12/12(金) 16:43:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8292.c
0667デフォルトの名無しさん
2008/12/12(金) 16:53:1564文字以上入力されると
英単語?英単語?
と2重になるね
0668デフォルトの名無しさん
2008/12/12(金) 16:54:22OK、クソース発動、書き換えるw
0669デフォルトの名無しさん
2008/12/12(金) 16:56:11質問者のレベルならこのくらいでいいんじゃないの
0670デフォルトの名無しさん
2008/12/12(金) 17:02:23お早いヘルプありがとうございます!
そして連投失礼しました;
0671デフォルトの名無しさん
2008/12/12(金) 17:15:200672デフォルトの名無しさん
2008/12/12(金) 17:27:460673デフォルトの名無しさん
2008/12/12(金) 17:42:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8294.c
0674デフォルトの名無しさん
2008/12/12(金) 17:52:17検索対象の単語は、辞書順に並び替えられている必要がある。
例えば、greatの後ろにfaighfulがあっても、faithfulは検出されないので、あしからず。
0675デフォルトの名無しさん
2008/12/12(金) 17:53:27こんなんでどや。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8295.c
最小二乗法なんて初めて聞いたから、適当に調べて計算式にあてはめただけ。
取っ掛かりにはなるだろ。
デバッグ用のメッセージは適当に消してくれ。
0676デフォルトの名無しさん
2008/12/12(金) 17:54:220677675
2008/12/12(金) 17:56:540678デフォルトの名無しさん
2008/12/12(金) 18:18:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8297.c
0679デフォルトの名無しさん
2008/12/12(金) 18:23:38どなたかお願いいたします
0680デフォルトの名無しさん
2008/12/12(金) 18:24:580681デフォルトの名無しさん
2008/12/12(金) 19:22:35[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まで
よろしくお願いします。
0682デフォルトの名無しさん
2008/12/12(金) 20:28:22課題1:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8300.txt
課題2:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8301.txt
0683help me
2008/12/12(金) 22:25:470684デフォルトの名無しさん
2008/12/12(金) 22:42:30遅れましたがありがとうございます^^
0685help me
2008/12/12(金) 23:19:25[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日
度々頼んでしまいすみません。
よろしくおねがいします。
0686デフォルトの名無しさん
2008/12/12(金) 23:28:12[2] 問題文:入力した文字列をポインタを用いて大文字表示、小文字表示せよ
[3] 環境
[3.1] OS:Windows
[3.2]
[3.3] 言語:C言語
[4] 期限:12月14日
[5] その他の制限: 是非、教えてください!!宜しくお願いします!!
0687デフォルトの名無しさん
2008/12/12(金) 23:36:30data.txtの書式
数値は整数のみか小数ありか
10とか20とかはどっちに含めるか
0688デフォルトの名無しさん
2008/12/12(金) 23:42:29エラーチェックなどはしてないので、適宜修正してちょ。
#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");
}
}
0689help me
2008/12/12(金) 23:45:23えーと、書式は半角英数で、数値は整数のみです。そして10とか20は、
0から9までの10個の数字を一かたまりで考えるようなので、10から19、
20から29までのように含めるようです。それと数字は1から99まで
の数字らしいですです。
0690help me
2008/12/12(金) 23:48:040691デフォルトの名無しさん
2008/12/13(土) 00:13:09#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;
}
0692デフォルトの名無しさん
2008/12/13(土) 00:23:26親切に回答してくださりありがとうございます!!
このパソコンでは試せないので、学校でやってみたいと思います。
わざわざありがとうございました!
0693デフォルトの名無しさん
2008/12/13(土) 00:29:39なにかおかしいとこあるなら言って下さい。
0694デフォルトの名無しさん
2008/12/13(土) 00:53:23問題文がおおざっぱすぎる
あの程度の問題文(仕様)じゃ、具体的な動作例を漏れなく示さないと手をつけらんないよ
0695デフォルトの名無しさん
2008/12/13(土) 00:54:53「図のような」って、図がないじゃん
文章の説明だけだとちょっと厳しいかな
0696デフォルトの名無しさん
2008/12/13(土) 00:56:47[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 手を尽くしましたが自分には無理です。どうかよろしくお願いします!
0697デフォルトの名無しさん
2008/12/13(土) 01:03:560698デフォルトの名無しさん
2008/12/13(土) 01:09:27#include<stdio.h>
int main(void){
unsigned int value;
printf("input hex? ");
scanf("%x", &value);
printf("answer: %d\n", value);
return 0;
}
0699デフォルトの名無しさん
2008/12/13(土) 01:10:38訂正: %d を %u に
0700デフォルトの名無しさん
2008/12/13(土) 01:11:59#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;
}
0701デフォルトの名無しさん
2008/12/13(土) 01:41:31アルゴリズム的に解くとこんな感じかも。
#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);
}
0702デフォルトの名無しさん
2008/12/13(土) 01:48:43丁寧に説明してもらってんのに「テキストファイルでいいです」と言えるのが不思議でならんのよね。
まあ、どれにしたところでたいした違いは無いよと達観してるのかもしれないんだけど。
0703デフォルトの名無しさん
2008/12/13(土) 02:02:54Eclipseでコンパイルできるのか?
0704デフォルトの名無しさん
2008/12/13(土) 02:03:28あと一週間もあるのになんで急かす?
0705デフォルトの名無しさん
2008/12/13(土) 02:41:23ほっほぉ、麻呂のクソース発動でおじゃるな。しばし待て。
0706デフォルトの名無しさん
2008/12/13(土) 02:51:31今回は一発で決めようぜ
0707デフォルトの名無しさん
2008/12/13(土) 02:52:00ゆっくししていっていくれ
0708デフォルトの名無しさん
2008/12/13(土) 02:52:59コンパイラの設定さえしておけばできるかと。じゃなきゃIDEって言えないような。
0709デフォルトの名無しさん
2008/12/13(土) 03:15:29VC++と書いたらコンパイラもMS謹製とみなせるが、
Eclipseだと不定と書くのと大差ない。てか、不定の方がまし
0710デフォルトの名無しさん
2008/12/13(土) 03:20:46なっ、なぬっ!?麻呂のクソースが見たいとな?ならば・・・しばし待ってたもう。
0711デフォルトの名無しさん
2008/12/13(土) 03:45:10>>587
0712デフォルトの名無しさん
2008/12/13(土) 09:05:08麻呂って人じゃないけど作ってみたよ〜
なんかごちゃごちゃしてるけど一つ一つの関数はそんなに難しいことしてないから、何とかわかってもらえる…かな。
単方向リストでソートめんどくさそうだから一回配列に変換してソートしてるけどどうなんだろう…wだめかなw
出力は単純にID,名前っていうCSVにしてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8303.txt
0713デフォルトの名無しさん
2008/12/13(土) 09:44:24日本語辞書が適当なので、自分で修正してね。
#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;
}
0714デフォルトの名無しさん
2008/12/13(土) 11:56:08[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が私のです。
0715デフォルトの名無しさん
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;
}
0716デフォルトの名無しさん
2008/12/13(土) 14:25:36{
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");
0717デフォルトの名無しさん
2008/12/13(土) 14:26:37{
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");
}
ここまでは、何とか作ったんですが、「出力された表を行ごと平均点が高い順に表示させよ」と
「国語の得点が高い順に表示させよ、数学の得点が高い順に…」が分かりません。
入力データファイルは
0718デフォルトの名無しさん
2008/12/13(土) 14:27:26A01 田中 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
…
のような感じです。
正直ここまでのプログラムもいまいち分かっていない所があります。
教えていただけないでしょうか。お願いします。
長くなってすいません。
0719デフォルトの名無しさん
2008/12/13(土) 15:14:56ありがとうございました><
0720デフォルトの名無しさん
2008/12/13(土) 15:26:34問題の全文と自分の書いたコードをテキストファイルにして上げろよ
0721デフォルトの名無しさん
2008/12/13(土) 15:30:480722デフォルトの名無しさん
2008/12/13(土) 15:48:16構造体使っちゃダメ?
0723デフォルトの名無しさん
2008/12/13(土) 16:27:08遅くなってすいません。
問題の全文は、「出力された表を行ごと平均点が高い順に表示させよ。また
国語の得点が高い順に表示させ、ほかの科目についても同じようにせよ。」だったと思います。
口で説明されたので、分かりにくかったらごめんなさい。
>>722
構造体とはどんなものでしょうか?
詳しくないんです。
すいません。
0724デフォルトの名無しさん
2008/12/13(土) 16:33:460725デフォルトの名無しさん
2008/12/13(土) 16:40:45[1] 授業単元: C言語
[2] 問題文(含コード&リンク): >>723です。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C言語
[4] 期限: 来週の水曜日までです。
[5] その他の制限: 構造体というのはまだ習っていません。
>>724
焦りすぎていました。すいません。
0726704
2008/12/13(土) 17:01:390727デフォルトの名無しさん
2008/12/13(土) 17:10:23で、"test.dat"とやらのアップはまだか
0728デフォルトの名無しさん
2008/12/13(土) 17:22:46A01 田中 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
名前や得点は適当でいいそうです。
何度もすいません。
0729デフォルトの名無しさん
2008/12/13(土) 18:01:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8305.c
0730デフォルトの名無しさん
2008/12/13(土) 19:08:09ありがとうございます!助かります!
0731デフォルトの名無しさん
2008/12/13(土) 19:19:12[2] 問題文:太陰暦、イスラム暦、マヤ暦、ユダヤ暦、ホビット庄暦のいずれかの
万年カレンダーを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2]
[3.3] 言語:C言語
[4] 期限:12月14日の21時まで
[5] その他の制限:全くわからないので、誰かわかる人教えてください...
宜しくお願いします!!
0732デフォルトの名無しさん
2008/12/13(土) 19:41:44並び替え以外は出来たでおじゃるが、単方向リストって並び替えが面倒でおじゃるのぅ・・・
0733デフォルトの名無しさん
2008/12/13(土) 20:43:24なんかネタっぽい問題だな
0734デフォルトの名無しさん
2008/12/13(土) 20:54:52そうですよね。わかりますか??
0735デフォルトの名無しさん
2008/12/13(土) 23:48:23ノード単位で一度バラして配列に格納、並び替えた後でもう一度リストに追加すれば良いと思うでゴザるよ。
0736デフォルトの名無しさん
2008/12/14(日) 00:32:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8307.c
これじゃダメかなー?
0737デフォルトの名無しさん
2008/12/14(日) 00:34:34他のキーでソートすることもないし、オーダーも固定だし、ということを考えれば
挿入ソートしておけば面倒なこと考えなくていいんじゃないの?
どうせクソースにするために変なこと考えてんだろうけど
0738デフォルトの名無しさん
2008/12/14(日) 00:36:03負けてんぞ麻呂
0739デフォルトの名無しさん
2008/12/14(日) 00:43:15ゲームしたり、テレビを見たり、食事をしたり・・・でおじゃっ。
0740デフォルトの名無しさん
2008/12/14(日) 00:54:35[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でお願いします。なにとぞお願いいたします。
0741デフォルトの名無しさん
2008/12/14(日) 00:59:410742デフォルトの名無しさん
2008/12/14(日) 01:10:21#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;
}
言われた仕様には適合するだろう
まぁだめだって言うんだろうけど
0743デフォルトの名無しさん
2008/12/14(日) 01:15:560744デフォルトの名無しさん
2008/12/14(日) 01:37:500745デフォルトの名無しさん
2008/12/14(日) 01:44:35化けないようにすれば読めるよ
0746デフォルトの名無しさん
2008/12/14(日) 05:39:12ブラウザに聞いてください
0747デフォルトの名無しさん
2008/12/14(日) 12:34:36ブラウザのポップアップメニュー→ソースの表示
で見れない?
0748デフォルトの名無しさん
2008/12/14(日) 12:36:29[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は使わなければいけない関数です。
よろしくお願いします。
0749デフォルトの名無しさん
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 全角スペース ※半角/全角混在
本文が長すぎるようなのでここで一旦区切ります。
0750749
2008/12/14(日) 12:48:08[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かも・・・定義するだけしとけば評価点もらえますかね?)
開発環境の再現が困難なため、コンパイル環境無し(質問者都合&ソースに構文ミスがある可能性が・・・)
以下、ソース(開発中)です
※ファイルの入出力自体は雛形化しているため、そこについては省略します。
今回質問したいのは全角、半角でのパディング部分のみです。
全角スペースの処理が全く持ってわからないのです。お助け下さいませ!
あとおかしな記述があれば是正していただければ非常にありがたいです。
本文が長すぎるようなのでここで一旦区切ります。
0751749
2008/12/14(日) 12:51:23int 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];
}
}
/* 以下省略 */
0752749
2008/12/14(日) 12:54:48申し訳ありません。訂正します。
単元:プログラミング実習�U
0753デフォルトの名無しさん
2008/12/14(日) 13:19:56>半角文字が1byte、全角文字が3byteに注意
ってワイド文字への変換禁止?
0754デフォルトの名無しさん
2008/12/14(日) 13:30:12[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関数は習いました。
お願いします。
0755749
2008/12/14(日) 13:33:02すみません。説明不足でした。
ワイド文字への変換は禁止ではありませんが、半角文字指定、全角文字指定のカラムにはそれぞれ、その形式のデータが入ってくる事を前提にしています。
カラム4に関しては、入ってきた物そのまんまに対して、パディングを行い、出力します。よって変換は不要です。
ここまで書いて気づきましたが、カラム4で入ってきたデータが3の倍数で無い時、固定長に仕上げる方法が不明瞭です。
・・・とりあえず、パディングの方法論だけがわかれば、後は当日直前で仕様を確認し、それにあわせて加工するのはアリだと思ってます。
また、これも書き忘れていましたが、マクロの使用は禁止です。
ただし内部的にマクロを使用している標準関数の使用はありです。
よろしくお願いします。こっちは今3の方を考えていますが、メモリ破壊の可能性が怖いです。
0756デフォルトの名無しさん
2008/12/14(日) 14:45:33#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;
}
0757デフォルトの名無しさん
2008/12/14(日) 14:53:52お願いできないでしょうか・・・?
0758デフォルトの名無しさん
2008/12/14(日) 15:00:18int 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];
}
}
0759749
2008/12/14(日) 16:11:40少し理解に時間がかかってしまい、返事が遅れてしましました。すみません。
for文でカウンタをインクリメントしながら中でも同様にインクリメントしているのは、
常に先頭バイトが0xC0及び0xE0である事を確認しながら処理するためですね。
理屈がわかっている人のコードですね。勉強になります。
「/* 途中で\0になってもアタシ知らない */」の所は仕様確認後適切な形にデグレードしておきます。
とても助かりました。ありがとうございます!
0760デフォルトの名無しさん
2008/12/14(日) 16:16:38ぶっちゃけ、オレには何を言っているかもわからん。
なにか前提となる情報が欠けているのじゃないだろうか。
0761デフォルトの名無しさん
2008/12/14(日) 16:21:13読み込み方法に関して何か言われてないか?
自力でバイナリを読み解かないといけないのか?
あと出力の書式を教えれ
0762549
2008/12/14(日) 17:28:27ご返事ありがとうございます。
図は下のPDFの1ページ目です。
http://sparth.u-aizu.ac.jp/icpc2008/data/all.pdf
0763デフォルトの名無しさん
2008/12/14(日) 17:39:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8310.c
0764デフォルトの名無しさん
2008/12/14(日) 17:45:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8311.c
0765デフォルトの名無しさん
2008/12/14(日) 17:55:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8312.c
0766デフォルトの名無しさん
2008/12/14(日) 18:00:590767デフォルトの名無しさん
2008/12/14(日) 18:02:560768706
2008/12/14(日) 18:07:540769デフォルトの名無しさん
2008/12/14(日) 18:13:040770デフォルトの名無しさん
2008/12/14(日) 18:43:12[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] その他の制限:特にないです。お願いします
0771デフォルトの名無しさん
2008/12/14(日) 19:00:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8314.c
>>768
>>767
0772714
2008/12/14(日) 20:52:11>>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です。
0773デフォルトの名無しさん
2008/12/14(日) 21:35:31[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日まで
よろしくお願いします。
0774デフォルトの名無しさん
2008/12/14(日) 21:43:020775デフォルトの名無しさん
2008/12/14(日) 21:45:240776デフォルトの名無しさん
2008/12/14(日) 21:45:55[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日まで
よろしくお願いします。
0777デフォルトの名無しさん
2008/12/14(日) 21:48:21何時?
0778デフォルトの名無しさん
2008/12/14(日) 21:57:46[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日まで
よろしくお願いします。
0779デフォルトの名無しさん
2008/12/14(日) 22:00:55#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;
}
0780デフォルトの名無しさん
2008/12/14(日) 22:04:27ありがとうございます><
0781デフォルトの名無しさん
2008/12/14(日) 22:18:27#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。
0782デフォルトの名無しさん
2008/12/14(日) 22:34:16ありがとうございます。
0783デフォルトの名無しさん
2008/12/14(日) 22:58:35#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;
}
続く
0784デフォルトの名無しさん
2008/12/14(日) 22:59:08{
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");
}
オワリ
0785デフォルトの名無しさん
2008/12/14(日) 23:02:23やたらとややこしいですが・・・
0786デフォルトの名無しさん
2008/12/14(日) 23:07:18[2] 問題文
温度を、摂氏で入力し、華氏に変換し、表示するプログラムを作れ。
[3] 環境
[3.1] OS:Windows xp
[3.2] gcc -o で始める奴
[3.3] C言語
[4] 期限: 2008年12月20日
[5] その他の制限: scanf関数は使用不可、getchar関数などを使用。出力は実数でお願いします。
自分でやるとなんだか異常な数値が出ます。よろしくお願いします。
0787783
2008/12/14(日) 23:09:540788デフォルトの名無しさん
2008/12/14(日) 23:17:58手間かかるけど、int型で文字コードと同じだけのテーブルを用意しておくか
っていうか、やりようはあるけど眠いので明日の夕方まで誰もやらなければやるよ
0789デフォルトの名無しさん
2008/12/14(日) 23:39:17#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;
}
0790デフォルトの名無しさん
2008/12/14(日) 23:39:31lnode *list_reverse (lnode *l)
{
lnode *lnew = NULL;
while(l != NULL) {
lnode *next = l->nextp;
l->nextp = lnew;
lnew = l;
l = next;
}
return lnew;
}
0791デフォルトの名無しさん
2008/12/14(日) 23:43:10感謝です><
0792デフォルトの名無しさん
2008/12/14(日) 23:46:49#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;
}
0793デフォルトの名無しさん
2008/12/14(日) 23:47:440794デフォルトの名無しさん
2008/12/14(日) 23:48:430795 ◆sUfWYz9MSA
2008/12/14(日) 23:50:05誰かお願いします。
0796デフォルトの名無しさん
2008/12/14(日) 23:53:28#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;
}
0798猫 ◆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テキストを参考にしてください。
身勝手なお願い申し訳ありません。少しでも力になって頂けると大変ありがたいです。どうかよろしくお願いします。
0799デフォルトの名無しさん
2008/12/15(月) 00:39:32その授業範囲の内容しかつかっちゃだめなのか?
0800デフォルトの名無しさん
2008/12/15(月) 00:39:43「リバーシのアルゴリズム」
この本を読むといいと思うよ
0801デフォルトの名無しさん
2008/12/15(月) 00:49:25学校の課題なんですが、自分で途中まで作ったファイルがあまりに長いので
上記のURLに載せておきます。内容等もすべて含まれます。テンプレを守っておりませんが、
どうかよろしくお願いします。
0802デフォルトの名無しさん
2008/12/15(月) 00:55:02困ったときは15パズル
単純だけど大学のプログラミング課題なんてこんなので十分
0803猫 ◆/PrOxY7Zuw
2008/12/15(月) 00:58:06いえ、そんなことはありません。
ただあまりにも高度なものを使うと不自然ですし・・・本当に極めて単純なプログラムで作られたオセロやはさみ将棋を提出したいと考えています。
>>800
ありがとうございます。ただ、みなさんの力をお借りして・・・ネットで解決したいと考えて・・・います・_・;
0805デフォルトの名無しさん
2008/12/15(月) 01:14:12はるか昔この板にいた人が書いたオセロ
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;}
0806デフォルトの名無しさん
2008/12/15(月) 01:14:12で、それをまた友人間でコピーするから
結局受講者の大半が同じ内容になってバレるというオチがつく
まさに人力P2P
一度流すと際限なく流れる
0807デフォルトの名無しさん
2008/12/15(月) 01:21:56お前が書いたソースなんかどうでもいいから
問題文をそのまま載せろよ
0808デフォルトの名無しさん
2008/12/15(月) 01:33:09一応、さっきからソース解析にはいっているけど、
クイックソートしてないし、メモり解放してないし、いやメモリ確保してないところ参照しているし、変数に説明無いし、どこから出てきたのかわからない式があるしで、一から書き直した方が早くできそうな気がしてきた。
誰かやってくれるだろうから、ソース眺めて楽しんでおくわ。
0809デフォルトの名無しさん
2008/12/15(月) 01:35:58ttp://ipl.sfc.keio.ac.jp/text/com-pro-2009beta/main_c1_s5.html#doc1_id472
> 1.5.1.3 Linuxを持っている人
> 自分でなんとかしなさい。
ワロタ。
ホントにこれ授業のテキストかよ。w
0810デフォルトの名無しさん
2008/12/15(月) 03:52:39内容はよく見てないが今後のために「プリプロセッサ #if」を検索することをお勧めする
0811デフォルトの名無しさん
2008/12/15(月) 06:57:00まともなフォローをする気もない採点者を困惑のきわみに陥れるには絶好の機会。バリエーションがいくつか(3くらい)あればOKなのでは。
0812デフォルトの名無しさん
2008/12/15(月) 06:59:47できたよー
ほとんど1から作り直しちゃったけど…w
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8319.txt
0814デフォルトの名無しさん
2008/12/15(月) 07:19:07INT型の配列二つ用意してループまわすのが楽で良いと思う
0815812
2008/12/15(月) 07:20:57ちょっと間違ってたから修正!
多項式に単項式を16こと言わずいくつでも追加できるようにした。
あと、なんかやりたいことがよくわからなかったので、1つファイルからの1つの多項式を作って並べ替えるだけにしたので、
あとはやりたいように変えてください。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8320.txt
0816801
2008/12/15(月) 07:37:33ありがとうございます
あと申し訳ないんですが,参照させていただきましたのでうpろだにあげた
コードは削除しておいていただけないでしょうか
0817デフォルトの名無しさん
2008/12/15(月) 07:41:580818デフォルトの名無しさん
2008/12/15(月) 07:59:210819デフォルトの名無しさん
2008/12/15(月) 09:49:440820デフォルトの名無しさん
2008/12/15(月) 10:28:15大学のレベルと学科によるだろ
0821デフォルトの名無しさん
2008/12/15(月) 10:30:41本人のレベルにあわせてじゃんけんくらいでいいんじゃね?
0822デフォルトの名無しさん
2008/12/15(月) 10:35:39少しでも力になって頂けると、とか言ってるけど全部作らせる気満々だよねw
0823デフォルトの名無しさん
2008/12/15(月) 12:08:190824デフォルトの名無しさん
2008/12/15(月) 12:15:46[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
よろしくお願いします。
0825デフォルトの名無しさん
2008/12/15(月) 12:25:37バレない様にじゃね?
0826デフォルトの名無しさん
2008/12/15(月) 13:20:00これどこからどこまでが自作なの?
0827824
2008/12/15(月) 13:34:29print_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
です。
言葉足らずで申し訳ありません。
0828猫 ◆a5ssS9MdDw
2008/12/15(月) 13:41:43皆さんのレス読ませていただきました!ありがとうございます。
15パズルって良いですね!
…‥どうやって作れば良いか教えてくだしぁ><
できるだけ>>798にあるテキストに沿った構造が良いです><
0829デフォルトの名無しさん
2008/12/15(月) 14:16:5515パズルでC言語でいいなら作ってやるよ。
0830デフォルトの名無しさん
2008/12/15(月) 15:06:16合ってるかは知らんけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8323.txt
一応元の形保つようにはしたけど、要らなそうな所は消したりした
0832デフォルトの名無しさん
2008/12/15(月) 16:38:43さっぱりわからんな。
そもそも、量子化ってなにすることだっけ?
0833デフォルトの名無しさん
2008/12/15(月) 16:41:3816bit情報 a
8bit情報 b
b=a/256
0834デフォルトの名無しさん
2008/12/15(月) 16:44:45[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
構造体の問題です、よろしくお願いします
0835824
2008/12/15(月) 16:44:52ありがとうございました。
ただ、問題文には書いていなかったのですが、
外点を表示させなければいけないとのことでした。
外点を表示する関数を残して、insert関数内の(*cur)->parent = root;の下に
これを書き加えたところ、表示が崩れてしまいました。
(*cur)->left = out();
(*cur)->right = out();
末端だけ外点を加えるのは難しいと思いますので、全てのノードに外点を
持たせた状態で外点をエレメントで上書きするように挿入できればと考えたのですが、
現時点では、0が残ったまま、次のエレメントが0の下位ノードとして混在している状態です。
そういった場合ではどのような書き方をすれば良いのでしょうか?
申し訳ありませんが、ご教示願います。
0836デフォルトの名無しさん
2008/12/15(月) 17:00:49[2] 問題文(含コード&リンク):
スタックを用いて逆ポーランド記法で四則演算できるプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 12/16 15:00
よろしくお願いします。
0837デフォルトの名無しさん
2008/12/15(月) 17:08:06[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
期限短いですがご教授願います><
0838デフォルトの名無しさん
2008/12/15(月) 17:24:01読み込むファイルの全角空白を半角空白に変換
0839デフォルトの名無しさん
2008/12/15(月) 17:28:04本当に有難う御座いました。
大変助かりました。
0840デフォルトの名無しさん
2008/12/15(月) 17:29:58ただし、文字列はNULL文字を含むので、"TOKYO"を配列で
表現するにはchar s[6]; あるいは char[]="TOKYO";
と宣言する。このとき、初期化方法は、
char s[6]="TOKYO"; あるいは char s[]="TOKYO";
であり、また
char[6]={'T','O','K','Y','O','\0'}; /* \0はNULL文字*/
としてもよい。
このとき、文字数をカウントするプログラムを関数を用いて
どなたか作成してくれませんか??(;´Αс)
0841デフォルトの名無しさん
2008/12/15(月) 17:30:42void 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);
}
0842デフォルトの名無しさん
2008/12/15(月) 17:34:03あとだしうざい
>問題文には書いていなかったのですが、外点を表示させなければいけない
どう表示させなければいけないのか
新しい問題文を書いてください
0843829
2008/12/15(月) 17:39:58はいよ15パズル完成
とりあえずコンパイラcc、OSソラリスでは正常に動いた
あとはtermiosなりエスケープシーケンスで画面消去なり好きなようにするがいい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8327.c
0844デフォルトの名無しさん
2008/12/15(月) 17:56:59(1)の「WAVE形式のファイルを読み込むプログラムを作成する.」も意味がわかんないな。
1バイトずつ、末尾まで読み捨てるだけでいいんだろうか?
0845834
2008/12/15(月) 18:11:23…
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'の前に必要です」
というエラーメッセージが出てくるのですが、どうすればよいのでしょうか?
0846デフォルトの名無しさん
2008/12/15(月) 18:33:21ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8328.txt
クソース。空白以外のデリミタなど認めない
0847デフォルトの名無しさん
2008/12/15(月) 18:40:03[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←ここにあるヒットアンドブロー解答予測ツールみたいなのを作りたいのですが
過去ログにはヒットアンドブローを作るプログラムはあっても解答を予測するプログラムはなかったので質問させて頂きました
0848デフォルトの名無しさん
2008/12/15(月) 18:44:44括弧
0849837
2008/12/15(月) 18:49:23int 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が定数でないのでコンパイルが通りません><
どうすればいいでしょうか
0850714
2008/12/15(月) 19:13:42おそらく(2)で使うためにファイルを読み込めという意味かと…。
うまい言葉が見つからず、すみません。
0852デフォルトの名無しさん
2008/12/15(月) 19:50:53[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] その他の制限:
よろしくお願いします。
0853475
2008/12/15(月) 20:11:19[2] 問題文(含コード&リンク):
オリジナルのatoi関数を作成しなさい
ただし、関数の宣言は
int oriatoi(const char *nptr);
にすること
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Stdio 2005
[3.3] 言語:C言語
[4] 期限: 12/15(本日中)
[5] その他の制限:特になし
期間が短いので難しいかもしれませんが、よろしくお願いします。
0854デフォルトの名無しさん
2008/12/15(月) 20:12:57[2] 問題文(含コード&リンク)
「現在のマシンが使用しているCPUの使用率を取得せよ」
[3] 環境
[3.1] OS: Windows
[3.2] VisualStudio2005
[3.3] 言語:C++
[4] 期限: 2008年12月16日18:00
[5] その他の制限:
例えば、「メモ帳」とか「エクセル」といったプロセス単位でのCPU使用率取得はサンプルを見つけられましたが、
タスクマネージャーから見れる、パソコン全体の使用率取得方法は調べることが出来ません…
コンソールアプリなのですが、やり方をご存知の方がいましたらサンプルソースを
一本提示して頂けると助かります。
申し訳ないですが宜しくお願いします
0855デフォルトの名無しさん
2008/12/15(月) 20:13:400856デフォルトの名無しさん
2008/12/15(月) 20:45:36bccってgccの打ち間違いって解釈でいいの?
0857デフォルトの名無しさん
2008/12/15(月) 20:53:510858デフォルトの名無しさん
2008/12/15(月) 20:58:46ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8330.txt
かなり適当
0859デフォルトの名無しさん
2008/12/15(月) 21:06:54その先生、atoiが相当嫌いなんだなwww
0860デフォルトの名無しさん
2008/12/15(月) 21:39:17ありがとうございました!自分で色々いじくってみます!
0861デフォルトの名無しさん
2008/12/15(月) 21:58:19たぶん好まれない解答w
int oriatoi(char *str)
{
int n = 0;
sscanf(str, "%d", &n);
return n;
}
0862デフォルトの名無しさん
2008/12/15(月) 21:59:27int oriatoi(const char *nptr);
int oriatoi(const char *nptr)
{
int rt_val=0;
sscanf(nptr,"%d",&rt_val);
return rt_val;
}
コンパイルしてない上に明らかに題意に反してるがなw
0863デフォルトの名無しさん
2008/12/15(月) 22:00:330864デフォルトの名無しさん
2008/12/15(月) 22:03:46int 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;
}
0866デフォルトの名無しさん
2008/12/15(月) 22:07:49[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で入力すると動かないんだなー。
どなたかエロい方教えていただけると幸いです。
0867デフォルトの名無しさん
2008/12/15(月) 22:15:56よく見てないけど、
文字列の初期化のときの""は"\0"と一緒
で、配列のサイズ書いてないから上記の文字列を最低限確保できるサイズと解釈されるから
全然メモリ確保されてないですよ。
0868デフォルトの名無しさん
2008/12/15(月) 22:19:32[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言語の基本はすべてやりました。
よろしくお願いします。
0869デフォルトの名無しさん
2008/12/15(月) 22:20:58scanf は %s だと、スペースで区切られてしまうので第1項しか入らない。
gets(siki); にするとか、scanf("%[^\n]", siki); としてみるとか
0870デフォルトの名無しさん
2008/12/15(月) 22:23:29[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] その他の制限: とくにありません。
お手数ですが宜しくお願いします。
0871デフォルトの名無しさん
2008/12/15(月) 22:29:55#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;
}
0873デフォルトの名無しさん
2008/12/15(月) 22:31:47[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。ボーナス得点の値。
この関数を作成し,以下に示すプログラムを追加して,実行しなさい。
0874デフォルトの名無しさん
2008/12/15(月) 22:32:42#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 引数の値を変えて,さらに試してみること。
0875デフォルトの名無しさん
2008/12/15(月) 22:33:22[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VisualC++6.0
[3.3] 言語:
[4] 期限:12/15
長々と申し訳ないです。よろしくお願いします。
0876デフォルトの名無しさん
2008/12/15(月) 22:35:52>文字列の初期化のときの""は"\0"と一緒
プギャー
>配列のサイズ書いてないから上記の文字列を最低限確保できるサイズ
言いたいことはわかった
>>869
>gets(siki); にするとか
そろそろ、gets()勧めるのやめような
fgets(foo, sizeof(foo), stdin); fooは、char型の配列。
改行が入る可能性があるので、foo[strlen(foo)-1] = '\0';すると幸せになれることが多い。
0877デフォルトの名無しさん
2008/12/15(月) 22:38:27[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
どなたか良ければよろしくお願い致します。
0878デフォルトの名無しさん
2008/12/15(月) 22:40:31void 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;
}
}
0880デフォルトの名無しさん
2008/12/15(月) 22:48:06「課題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");
}
}
0881デフォルトの名無しさん
2008/12/15(月) 23:08:09初期化する部分しか同じでなかったので良いかと思ったのですが・・・
今思えば、問題文を知らない方にはわかりませんよね
本当に申し訳ないです
ご指摘と回答ともに、ありがとうございます
助かりました!
0882デフォルトの名無しさん
2008/12/15(月) 23:14:290883デフォルトの名無しさん
2008/12/15(月) 23:14:32[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)の方をお願いしたいと思います。
よろしくお願いします。
0884デフォルトの名無しさん
2008/12/15(月) 23:17:03>>341を見ると90度回転させてくださいって質問に来るのだろうか。
0885デフォルトの名無しさん
2008/12/15(月) 23:21:34[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
0886デフォルトの名無しさん
2008/12/15(月) 23:23:03http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8335.c
0887デフォルトの名無しさん
2008/12/15(月) 23:25:22俺もはろっと
#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;
}
0888デフォルトの名無しさん
2008/12/15(月) 23:26:00if(*np=='\0') { a=0; break; } の a=0; を消しておいてたもう
0891デフォルトの名無しさん
2008/12/15(月) 23:32:46動きはするけど、これはないわw
0892デフォルトの名無しさん
2008/12/15(月) 23:32:53手抜き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;
}
0893デフォルトの名無しさん
2008/12/15(月) 23:36:57また一発で決められなかったのか。
0894デフォルトの名無しさん
2008/12/15(月) 23:49:01それらを抜きにして自前で作ったのだが、他に何か手があるなら
それを述べてから、反論してくれ。出なきゃ、ただの口先だけに成り下がるぞ。
0895デフォルトの名無しさん
2008/12/15(月) 23:49:440896デフォルトの名無しさん
2008/12/15(月) 23:59:05早速ありがとうございました!
0897デフォルトの名無しさん
2008/12/16(火) 00:10:41[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は使用不可。単純な奴でかまいません、よろしくお願いします。
0898デフォルトの名無しさん
2008/12/16(火) 00:15:57お前が勝手にそう思っただけだろって、返されるだけだぞ。
少なくとも、人間社会では、出来もしない役立たずが
要らん口出しをすると、干されるだけだぞ。お前こそ出来もしないくせに、ってな。
0899デフォルトの名無しさん
2008/12/16(火) 00:18:29これが俺の意見なんだけど反論できる?
0900デフォルトの名無しさん
2008/12/16(火) 00:24:244とか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;
}
0901デフォルトの名無しさん
2008/12/16(火) 00:30:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8336.c
0902デフォルトの名無しさん
2008/12/16(火) 00:34:340903デフォルトの名無しさん
2008/12/16(火) 00:37:050904デフォルトの名無しさん
2008/12/16(火) 00:39:26#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("");
}
0905デフォルトの名無しさん
2008/12/16(火) 01:00:450906デフォルトの名無しさん
2008/12/16(火) 01:04:070907854
2008/12/16(火) 01:08:570908866
2008/12/16(火) 01:14:39何かソースの無駄を極限まで省くらしい。
無駄なことは一切せずに、とにかく簡単にソートできるようにするんだと。
アドバイスありがとね。
>>869
>>876
ありがとう、大好きだ。
0909デフォルトの名無しさん
2008/12/16(火) 01:17:26無駄を削るどころか、致命傷になるまで肉を削ぎ落としちゃってるんだけどw
0910デフォルトの名無しさん
2008/12/16(火) 01:18:230911デフォルトの名無しさん
2008/12/16(火) 01:31:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8337.txt
0912デフォルトの名無しさん
2008/12/16(火) 01:37:12書いてみたけど、変な音しか出ない。
何か間違っているようだ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8338.txt
0913デフォルトの名無しさん
2008/12/16(火) 01:40:05http://blog.goo.ne.jp/masaki_goo_2006/e/6b48817a6c93940e70667e6d6c7ec8ed
普通にぐぐったらこういうのが出てきたんだけど足りないですか?
0914デフォルトの名無しさん
2008/12/16(火) 01:41:46マジギレだと思っているお前が、マジレスしているからだろw
クソースの意味が分からないなら、レスしない方が良いよ。
所詮ここは、丸投げを適当にあしらうスレ。こんなところで
マジになって、必死に批判している奴の方がキモイ。
そもそも、あの課題は制限がないから、もっと他のライブラリを使えば
スマートに記述できる。そこを、敢えて妙ちくりんにするのが俺の仕事w
0915デフォルトの名無しさん
2008/12/16(火) 01:48:00半端に妙な状態で毎度毎度修正が入ってるのを見ると、単に技量の低いマなんだな、としか見えないよ。
あえて妙ちくりんなコードを仕上げる人は嫌いじゃないから、そういう風に見られるように頑張って欲しい。
0916デフォルトの名無しさん
2008/12/16(火) 01:54:390917デフォルトの名無しさん
2008/12/16(火) 01:56:140918デフォルトの名無しさん
2008/12/16(火) 01:56:42ありがとう!
解析してみるよ
0919デフォルトの名無しさん
2008/12/16(火) 02:02:300920デフォルトの名無しさん
2008/12/16(火) 02:05:39もっとはっきりと。少なくとも、atoiでは+を先頭につけてもおkだし、無い場合は+として扱われるし。
その辺、理解して意見してる?思いつきで言ってない?もちっと解析してみ。
0921デフォルトの名無しさん
2008/12/16(火) 02:07:41っつか、そこまでごちゃごちゃ言うなら、自分で書いたのを提示しろよ?
口先だけのチキン野郎だと思われるし、動作に問題がないなら
むしろ批判だの、個人的なスタイルの押し付けこそナンセンスだぞ。
言うくらいなら、お前がコードで示せ、な?
口先ばっかりの奴ほど、社会では役に立たないことくらい、理解しているだろ?
現実はそう甘くない。
0922デフォルトの名無しさん
2008/12/16(火) 02:09:510923デフォルトの名無しさん
2008/12/16(火) 02:11:25物申す、意見をするくらいなら、コードを書いて自分の考えを示せよ。
少なくとも、間違っていないことに口出しするのは、かえって自分の
立場を悪くするぞ。この世は、多種さまざまな、色々なスタイルが存在するのだが
それぞれ必要に応じて、メリットデメリット、必要性も考慮すべきではあるが、
問題の無い部分を矢鱈と口出しする奴は、日頃は自分の方がしょぼ過ぎて
他人に重要でもないことでも、問題があるとして指摘されることが多いんだろうね。
引きこもり?もっと外で人間社会を学んだ方が良いよ?
0924デフォルトの名無しさん
2008/12/16(火) 02:15:30int 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++;}
こうしたらちょっと減るよねって言いたいだけなんじゃないの?
0925デフォルトの名無しさん
2008/12/16(火) 02:16:45言いたいことは分かるが、具体的に記述して書かないお前は卑怯者。
それぞれの変数が、どの部分でどのような値をとるか?
使われる直前に記述して構わないだろ?
よく素人や未熟者が勘違いしていることは、コードが短い=効率が良い
みたいな思い込み。人間が見て分かりやすくするのも、他者とのやりとりでは
重要なスキル。
あと、こんな時間に起きていて、しかもこんな場所で必死に噛み付いているなんて
別の面で人間性を疑われるよw
0926デフォルトの名無しさん
2008/12/16(火) 02:17:590927デフォルトの名無しさん
2008/12/16(火) 02:18:57[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] 特にないです。
0928デフォルトの名無しさん
2008/12/16(火) 02:19:560929デフォルトの名無しさん
2008/12/16(火) 02:22:350930デフォルトの名無しさん
2008/12/16(火) 02:23:530931デフォルトの名無しさん
2008/12/16(火) 02:31:43(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);
}
}
0932デフォルトの名無しさん
2008/12/16(火) 02:45:080933デフォルトの名無しさん
2008/12/16(火) 02:51:56> よく素人や未熟者が勘違いしていることは
などという書き方をする人が書いたコードであればつっこみたいな。
別に問題あるコードじゃあないんだけど。
>>932
{}取っても大丈夫なんだと、むしろ、そっちの方が一般的なのだと
理解して去っていったんだと思っておけばおk
0934デフォルトの名無しさん
2008/12/16(火) 03:03:06もう少し謙虚にならないと成長しないよ。
0935デフォルトの名無しさん
2008/12/16(火) 03:42:37[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日
必須問題すらできません
必須だけでもよろしくお願いします
0936デフォルトの名無しさん
2008/12/16(火) 04:08:24まず1個目
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8341.txt
0937デフォルトの名無しさん
2008/12/16(火) 04:15:19[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言語 入門編 です。一応ほぼ一通り終わっています。
0938デフォルトの名無しさん
2008/12/16(火) 04:17:31ちょうクソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8343.txt
0939デフォルトの名無しさん
2008/12/16(火) 04:21:36俺にもアドバイス頼むわ・・・
http://pc11.2ch.net/test/read.cgi/tech/1225422971/
0940デフォルトの名無しさん
2008/12/16(火) 04:26:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8344.txt
0941デフォルトの名無しさん
2008/12/16(火) 04:29:32「8ビットでは128が無音,16ビットでは0が無音」と言うのを見つけた。
256で割った後、128を引くようだ。
wavの形式には6bitや3bitの量子化と言うのは無いようだ。
0942デフォルトの名無しさん
2008/12/16(火) 04:35:002個目
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8345.txt
0943デフォルトの名無しさん
2008/12/16(火) 04:40:32やるのってレポート課題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;
}
}
0944デフォルトの名無しさん
2008/12/16(火) 04:42:433個目
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8346.txt
0945937
2008/12/16(火) 04:53:01組み込むとエラーが出てコンパイルできないのですが、組み込み方が悪い・・・のかなぁ;;
レポート課題4の解答のプログラムに組み込んで作るのです。もし宜しければどこにどう組み込むかをご教授願えませんか…!
0946937
2008/12/16(火) 04:58:42int set_word〜の部分の行で「型名が必要」と返されてコンパイルできないのです。
型名…?をどう宣言すればいいのでしょうか…!
0947デフォルトの名無しさん
2008/12/16(火) 05:00:50それをレポート課題4に適用したい、と?
0948デフォルトの名無しさん
2008/12/16(火) 05:04:08んーと、問題文を読む限りでは
main関数とかは全部レポート5をそのまま使え。関数だけ実装しろって書いてる。
だから
--- ここから exlexico.c の main 関数 ---
〜〜〜
--- ここまで exlexico.c の main 関数 ---
の間のコードだけ抜き出してそのコードの下に>>943のコードを足せばいい。
この問題はレポート4からの流用は殆ど無理な問題ー
0949937
2008/12/16(火) 05:05:40こういう意味ですー。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8348.txt
上げておきました。宜しくお願いします。
0950デフォルトの名無しさん
2008/12/16(火) 05:06:233個目だめだったかも。ちょっと追加!
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
こーゆー構文解析的なものって面白いよね。
0952937
2008/12/16(火) 05:09:390953デフォルトの名無しさん
2008/12/16(火) 06:43:20>>847
今日の4時から取り掛かるよ。
0954953
2008/12/16(火) 09:07:324時とかいいつつもう作っちゃった
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8350.c
0955935
2008/12/16(火) 11:41:51ありがとうございました
0956デフォルトの名無しさん
2008/12/16(火) 12:02:37ほんと助かりました><
ありがとー
0957デフォルトの名無しさん
2008/12/16(火) 12:08:20[2] 問題文:
http://ホスト名:ポート番号/パス
で表されたURLを、ホスト名、ポート番号、パスにparseする関数を
作り、それをmain関数から実行するプログラムを作成せよ
関数の返り値はURLがparseできたかどうかを表すint型の値で、
ホスト名などは構造体にまとめてポインタとして渡すようにすること。
また、ポート番号は省略可能でデフォルト値は80とする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日12時まで
[5] その他の制限: 特に無し
よろしくお願いします。
0958デフォルトの名無しさん
2008/12/16(火) 12:11:14すいません、補足です
URLが
http://www.hoge.com:8080/usr/bin/hoge.txt
だとすると
ホスト名 www.hoge.com
ポート番号 8080
パス /usr/bin/hoge.txt
となるようにして下さい
0959デフォルトの名無しさん
2008/12/16(火) 12:18:15WAVのフォーマットは触らないで、
音の大小だけを65536段階から、256段階に返還するのかな?
0960デフォルトの名無しさん
2008/12/16(火) 12:48:31#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;
}
0961デフォルトの名無しさん
2008/12/16(火) 12:52:47http://example.com:8000
は
0962デフォルトの名無しさん
2008/12/16(火) 13:19:13[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);
}
0963962
2008/12/16(火) 13:19:58このプログラムの一部を関数にして書き換えたとする。
#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時
期間が短くて申し訳ないのですが、よろしくお願いいたします。
0964デフォルトの名無しさん
2008/12/16(火) 13:22:410965デフォルトの名無しさん
2008/12/16(火) 13:27:59int 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);
}
}
0966868
2008/12/16(火) 13:36:25二分法はわかるのですが、分割を三つにした場合の計算式がわかりません。
0967デフォルトの名無しさん
2008/12/16(火) 13:40:40それはプログラミングじゃなくて数学の質問じゃないのか
0969デフォルトの名無しさん
2008/12/16(火) 13:56:42ありがとうございます
あらかじめ
url->path="/";
としておけばhttp://example.com:8000 でも大丈夫ですよね?
0970デフォルトの名無しさん
2008/12/16(火) 14:06:513分割ってようするに黄金分割法だよね
#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);
}
0971デフォルトの名無しさん
2008/12/16(火) 14:09:15やってみればわかるだろ
大丈夫じゃない
pathが":8000"になる
0972970
2008/12/16(火) 14:29:24あーもしかすると単純に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);
}
0973960
2008/12/16(火) 14:35:11対処療法的だけど、最後の / がないときにパスをどうするかって仕様が与えられてないので '/' にすると仮定するとこんな感じで
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;
>>> の部分が差分
0974デフォルトの名無しさん
2008/12/16(火) 14:44:27あと学校からinput.datってやつが入力データが入ってるので、そこの部分だけ変えました。
scanf("%s",&data->name); 115
scanf("%d",&menu); 75
} 53
注意がでてたのこの部分です。よこの数字は行数です。
あとデータの昇順がはいてなかったように感じます。よろしくお願いします。
0976デフォルトの名無しさん
2008/12/16(火) 15:09:22>scanf("%s",&data->name); 115
&がいらない。最近つける奴多いよな。
>scanf("%d",&menu); 75
enumじゃないか。作った奴の頭は大丈夫なのか。
int型変数使えって。
>} 53
enum MENU::EXITが、無いからと思うが、警告程度と思うよ。
あと、main()内でfclose()読んでいるところが間違っている。if () { }にするようにね。
リソース管理くらいきちんとしてほしいなぁ。
作りなおした方が、早くできると思うけど、わざわざ単方向連結リストを作る気がないので、気が向いた方よろしく。
双方向なら楽なんだけどなぁ。
0977デフォルトの名無しさん
2008/12/16(火) 15:26:09>どうすればいいんだろ・・・?
hoge=(char)(mono/256);
↓
hoge=(char)(mono/256)+128;
で、とりあえず正弦波にはなった。
>おそらくそういうことだと思います。
こんな風なのだろうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8351.txt
0978デフォルトの名無しさん
2008/12/16(火) 15:39:48なにを作りたいのか正確にわからんけどプログラムを作ろうとか無理があると思うのだが
まずは出題者の意図を明確にすべきでは?
少なくとも現状のここのやりとりで、
どこを質問すればいいかぐらいは分かりそうな気がするが。
0979デフォルトの名無しさん
2008/12/16(火) 15:40:568bitの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++;
}
にすれば
0980デフォルトの名無しさん
2008/12/16(火) 16:01:06こんなん見つけた
o 8bit ならば符号無し unsigned (0 〜 255, 無音は 128)
o 16bit ならば符号付き signed (-32768 〜 +32767, 無音は 0)
0981デフォルトの名無しさん
2008/12/16(火) 17:23:150983デフォルトの名無しさん
2008/12/16(火) 17:37:59>>771 のクソースは無視かい・・・
0984デフォルトの名無しさん
2008/12/16(火) 17:54:54ウチでは正弦波になったよ
0985714
2008/12/16(火) 18:01:03ありゃ・・・?
私がどっか間違えたのかもですね
0986デフォルトの名無しさん
2008/12/16(火) 18:20:22>>974
>>546
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8354.c
0987デフォルトの名無しさん
2008/12/16(火) 18:22:22[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のソースは自作して問題文に張っておいたので
それを使用して作成おねがいします。
0988デフォルトの名無しさん
2008/12/16(火) 19:39:22[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] その他の制限:
お願いします
0989デフォルトの名無しさん
2008/12/16(火) 19:45:34よく分からんけどその計算式通りに計算させればいいんじゃないの?
係数とかは与えられているんだから。
C/C++の宿題を片付けます 120代目
http://pc11.2ch.net/test/read.cgi/tech/1229424329/
0991989
2008/12/16(火) 19:46:53あれ?よく見ると負にならないか?
0992デフォルトの名無しさん
2008/12/16(火) 20:02:42[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] その他の制限: 特になし.
問題文と一緒に、一度作成してみたプログラム(不完全です)とその問題点を載せています。
0993デフォルトの名無しさん
2008/12/16(火) 20:07:04float 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);
0994デフォルトの名無しさん
2008/12/16(火) 20:13:15Pn でPn を計算してるぞ
0995デフォルトの名無しさん
2008/12/16(火) 20:14:44/* 酔っ払ってるから間違ってるかも */
#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;
}
0996デフォルトの名無しさん
2008/12/16(火) 20:17:22要は区切り文字が連続する場合は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;
}
0997デフォルトの名無しさん
2008/12/16(火) 20:18:28>>994
>>994
>>994
0998デフォルトの名無しさん
2008/12/16(火) 20:21:58仕様の問題。
fgetsは改行文字も含めて文字列を生成だから多分
{'a','a',' ',' ',' ','b','b','\n','null'}
こんな感じではいってるっぽ。
んでisspaceの仕様は空白文字でtrue
空白文字は'\n','\r','\t','\v','\f',' 'を指すので、
上の文字列が入力されてるなら' '三文字と'\n'一文字で合計が4。
ということなんだと思うから適当に変えてみればいかがだろうか。
1減らしたり'\n'に0入れるとか。
0999デフォルトの名無しさん
2008/12/16(火) 20:27:33\n は残したほうが好都合だろ
2語のとき 'a', ' ', 'b' だったら区切り文字数 = 単語数 - 1 だが
'a', ' ', 'b', '\n' なら区切り文字数 = 単語数だ
1000デフォルトの名無しさん
2008/12/16(火) 20:28:2010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。