C/C++の宿題を片付けます 100at TECH
C/C++の宿題を片付けます 100 - 暇つぶし2ch273:デフォルトの名無しさん
07/11/27 11:17:46
>>272
質問の仕方も自己流にこだわるのかw

274:デフォルトの名無しさん
07/11/27 11:31:34
数式も自己流だしなあ。せめて人に通じる式で書こうよ。

275:デフォルトの名無しさん
07/11/27 11:48:09
>>269
ラグランジュ補間は、本来、N点のデータが与えられた時、
それらの点を繋ぐことのできるxの多項式の係数を求めるという方法です。
プログラミング以前に、数学的な理解がおろそかだと思われます。
もっと言うと、補間に関するソースは至る所に掲載されています。
それを用いれば簡単に目的は達成できます。

276:デフォルトの名無しさん
07/11/27 11:48:56
え、あれで通じないとは、どんだけ数学弱者なんだよ
俺は解かないけど。

277:デフォルトの名無しさん
07/11/27 11:53:03
>>276
そこまで言ったら解いてやれよw

278:デフォルトの名無しさん
07/11/27 12:02:55
>>277
どこがわかんないか質問してくれれば、その回答はするよ

279:デフォルトの名無しさん
07/11/27 12:12:41
要は難しすぎて僕らには解けません。僕らがわかるのは文字の出力だけです。参りました。

280:デフォルトの名無しさん
07/11/27 12:30:53
>>272 には是非そのままの態度で自分の求める解答を引き出すテクニックを見せてもらいたい

281:デフォルトの名無しさん
07/11/27 12:35:37
つまり>>269は、与えられたfxと範囲から10個の点をまず生成して、
その生成された点からラグランジュ補間を行うxの多項式の係数を求め、
元のfxと比較しろという問題なのか?

282:デフォルトの名無しさん
07/11/27 12:37:24
[授業単元]プログラミング
[問題文]
#include <stdio.h>
#include <math.h>
#define EPS 1e-7 /* 収束判定の許容誤差ε */
/* ★ 関数 f(x) とその導関数 df(x) を定義する*/
int main()
{
int n;
double x, y;
printf("n x f(x)\n");
printf("--- ---------- ----------\n");
n = 0;
x = /* ★ 初期値を設定 */
y = f(x);
printf("%3d %10.7f %10.7f\n", n, x, y);
while (/* ★ |f(x)|<ε となったとき終了 */) {
/* ★ 途中の計算結果も出力するように、適切な位置に printf 文を追加せよ */
n++;
x = /* ★ ニュートン・ラフソン法の漸化式 */
y = f(x);
}
return 0;
}
/* end of kadai_8_sample.c */
方程式 x^3 = 2 の解をニュートンラフソン法で求めよ。
収束判定は |x^3 - 2|<10^-7 とする。
初期値は各自で決める
[os] linux
[言語] c
[期限]本日14:00
宜しくお願いします

283:デフォルトの名無しさん
07/11/27 12:44:23
ごめん。俺が間違ってたわ。もういいわ

284:デフォルトの名無しさん
07/11/27 12:52:30
m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム
ただし、/や%や10回以上のループは使えない

285:デフォルトの名無しさん
07/11/27 12:54:59
>>284
mの因数分解表をあらかじめ作っておいて判定する

286:デフォルトの名無しさん
07/11/27 12:55:16
訂正
m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム
ただし、/や%や16回以上のループは使えない

287:デフォルトの名無しさん
07/11/27 12:57:28
別にループが使えないならループを展開しとけば良いだろ

288:デフォルトの名無しさん
07/11/27 12:59:47
>>286
2 ・・・  一の位が2の倍数
3 ・・・  各位の数の和が3の倍数
4 ・・・  ・ 下二桁が4の倍数
 ・ 一の位を2で割った数を十の位に足した数が偶数
5 ・・・  一の位が5の倍数
6 ・・・  2かつ3の倍数
7 ・・・  3桁毎に交互に足したり引いたりしてできた数が7の倍数
8 ・・・  ・ 下3桁が8の倍数
 ・ 一の位を2で割り十の位に足して2で割った数を百の位に足した数が偶数
9 ・・・  各位の数の和が9の倍数
10 ・・・  一の位が0
11 ・・・  各位の数を交互に足したり引いたりしてできた数が11の倍数
12 ・・・  3かつ4の倍数
13 ・・・  7の倍数の判定と同じ
14 ・・・  2かつ7の倍数
15 ・・・  3かつ5の倍数
16 ・・・  下4桁を2で割った数が8の倍数(下4桁を4で割った数が4の倍数

URLリンク(www004.upp.so-net.ne.jp)

289:デフォルトの名無しさん
07/11/27 13:01:44
>>288
各位って10進数ですよね どうやってその値をゲットするんですか

290:デフォルトの名無しさん
07/11/27 13:04:47
>>289
Cの文字列で一文字ずつmを取得する

291:デフォルトの名無しさん
07/11/27 13:07:32
>>290
整数を文字列に変換する関数とかは使わないで下さい 

292:デフォルトの名無しさん
07/11/27 13:10:01
>>291
は?後付してんじゃねえよ

293:デフォルトの名無しさん
07/11/27 13:12:38
最初から誤解の余地が無い言い方で訊けってのは無茶だろ。
問題に対する疑問に答える過程で条件を追加するのは当然のことだと思うが。

294:デフォルトの名無しさん
07/11/27 13:13:23
文字列で受け取って、「文字のまま」演算を行うようなプログラムを書けばいい。
たとえば、tasu('A', 'B')の戻り値が'C'になるとか、
kakeru('A', 'B')は'B'とか。

295:デフォルトの名無しさん
07/11/27 13:13:51
テンプレに制限やら書く所まであるのに、完全に無視してそれか?
とっとと帰れ帰れ

296:デフォルトの名無しさん
07/11/27 13:16:36
テンプレの利用は任意だ。
そもそも、答えたくないならお前が黙って帰れよ。

297:デフォルトの名無しさん
07/11/27 13:20:28
だから、文字のまま判定を行うプログラムを書く。そうすれば10進数の演算と同じ。
例えば tasu(char a, char b) なら、

if ((a=='A' && a=='B') || (a=='B' && a=='A'))
  return 'C';

っていう式を延々と書けば、これは10進数の演算と全く同じになる。

298:デフォルトの名無しさん
07/11/27 13:21:20
#include<stdio.h>

int mod(int m, int n)
{
int i, num[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};

if(m<0 || n<0) return -1;
for(i=16-1;i>=0;i--)
if(m>=num[i]*n)
m-=num[i]*n;

return m;
}

int main(void)
{
mod(20000, 15);

return 0;
}

299:デフォルトの名無しさん
07/11/27 13:26:53
>>298 サンクス

300:デフォルトの名無しさん
07/11/27 13:33:25
>>284 = >>296 = >>298 = >>299

301:デフォルトの名無しさん
07/11/27 13:50:54
>>300
残念、>>296だけ俺だ。

302:コーンポタージュ
07/11/27 15:11:18
>>253

問題例
頂点i に色i mod 6 を割当てるプログラム
•ランダム幾何グラフUn,d を作成
•頂点数n,パラメータd を入力とし,単位正方形[0,1]2内に一様かつ独立にn 個の頂点をランダムに分布させ,距離がd
以下の2頂点間に辺を結ぶ
•各頂点の平均次数がnπd2となることが知られている

問題例のプログラム
URLリンク(www-2ch.net:8080)

303:デフォルトの名無しさん
07/11/27 15:26:14
うわぁ糞スレ
ニート風情が偉そうにε-(´・`)


304:デフォルトの名無しさん
07/11/27 15:31:12
【質問テンプレ】
[1] 授業単元:プログラム言語2
[2] 問題文:課題A で作成したプログラムを以下のように修正する.
* gcc kadai08b.c でコンパイルすると5パーセントの商品価格だけ表示される.
* gcc -DZEI=*** kadai08b.c でコンパイルすると***パーセントの商品価格だけ表示される.
* gcc -DDEBUG kadai08b.c でコンパイルすると5パーセントの消費税と商品価格が表示される
#include <stdio.h>
#include <stdlib.h>
#define a 5
#define TAX(x,y) (x+y)*a/100
#define PRICE(x,y) (x+y)+(x+y)*a/100
int main(void)
{
int x,y;
printf("tax of x+y %d \n", TAX(x,y));
scanf("%d",&x);
printf("lnput an integer y:");
scanf("%d",&x);
printf("tax of x+y: %d \n",);
printf("price of x+y %d \n", PRICE(x,y));
return0;
}
[3] 環境
 [3.1] OS: (Linux/)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2007年11月28日まで]
[5] その他の制限: (Cプリプロセッサぐらいまで)
課題Aはなんとか出来ましたが、課題Bがわからないので、宣しくお願いします。
貼りつけたプログラムは、課題Aが完成したものです。

305:デフォルトの名無しさん
07/11/27 15:40:23
>>304
ついでにいろいろ修正した。

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

#ifdef ZEI
# define a ZEI
#else
# define a 5
#endif
#define TAX(x,y) (x+y)*a/100
#define PRICE(x,y) (x+y)+(x+y)*a/100

int main(void)
{
  int x,y;
  printf("lnput an integer x:");
  scanf("%d",&x);
  printf("lnput an integer y:");
  scanf("%d",&y);
#ifdef DEBUG
  printf("tax of x+y %d \n", TAX(x,y));
#endif
  printf("price of x+y %d \n", PRICE(x,y));
  return 0;
}

306:デフォルトの名無しさん
07/11/27 15:54:20
修正までありがとうございました。
本当に助かりました。
またの機会がありましたら、よろしくお願いします。

307:デフォルトの名無しさん
07/11/27 16:08:10
[1] 授業単元: C言語
[2] 問題文: 1.正三角形の面積を求めるマクロ定義を作る。一辺の長さをaとする
2.課題1で作ったマクロを使って、1辺の長さが5mの正三角形の面積を求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++2005
 [3.3] 言語:C
[4] 期限:11月28日午後10時まで
[5] その他の制限:特にありません。
よろしくお願いします



308:デフォルトの名無しさん
07/11/27 16:23:12

[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):色々な整数値a,bに対してtを媒介変数として、
座標がx=cos(2πat)、y=sin(2πbt)であらわされる曲線を描くリサージュ関数を作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] Astex(?)
 [3.3] 言語:C
[4] 期限: 2007/11/29 19時
[5] その他の制限: 配列・ポインタの使い方、簡単な数式の入力まで習いました。
どこから手をつけてよいか分かりません。お力添え頂ければと思います。

309:デフォルトの名無しさん
07/11/27 16:24:47
>>307
#include <stdio.h>
#define TRI(a) ((a)*(a)*1.7320508/4.0)
int main( ){ return printf( "%lf\n", TRI(5)); }


310:デフォルトの名無しさん
07/11/27 16:32:04
[1] 授業単元: C言語
[2] 問題文:入力された文字列のそれぞれの文字をカウントし、出現回数と生起確率を表示させよ。
      またそのエントロピーも表示させよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 6.0
 [3.3] 言語:C
[4] 期限:11月28日午前2時まで。
[5] その他の制限:特にありません。

以前ご教示頂いたのですが、データが壊れてしまいました。

311:310
07/11/27 16:32:53
途中送信orz
何卒よろしくお願いいたします・・・。

312:デフォルトの名無しさん
07/11/27 17:20:20
>>308
ソース
URLリンク(kansai2channeler.hp.infoseek.co.jp)

csvを表計算ソフトで描画した図形
URLリンク(www15.axfc.net)

313:デフォルトの名無しさん
07/11/27 17:59:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 
 メイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実
際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし
て渡す。
 サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列
の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて
2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に
は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す
なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ
ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である)
 最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き
い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ
る場合は、その小数を切り捨てた整数を表示することとする)。


[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio .NET 2003
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 12月3日
[5] その他の制限:
現在、関数・ポインターについて学んでるところです。
よろしくお願いします。         

314:デフォルトの名無し
07/11/27 18:03:09
以前236でプログラムをお願いしたものです。
ポインタではなく配列でお願いしたいのですが、もう一度お願いできないでしょうか。
できればmainもお願いします。

[1] 授業単元: プログラム演習
[2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、
該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。
ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。

なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、
分割コンパイルできるように作成しなさい。
このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、
main関数のソースファイルにて利用すること。

引数 char s[] 対象文字列
char t[]  検索文字列
  (例) 以下の値で動作した場合は、「3」を返す。
       文字列s = “aababcbaa”
       文字列t = “abc”
入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する

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


315:デフォルトの名無し
07/11/27 18:04:22
[1] 授業単元: プログラム演習
[2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。                   
・キーボードからの入力が空の場合は処理を終了する。
・キーボードからの最大入力桁数は4バイトとする。
・キーボードからの入力が4バイトを超える場合は処理を終了する。
・キーボードからの入力が正の整数に変換できない場合は処理を終了する
エラーメッセージ
未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません
文字列を正数に変換する関数はatoiを使用。
引数 char data[] 文字列
戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力
最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。
引数 int data1 データ1 int data2 データ2
戻り値 : 最大公約数

最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。
引数 int data1 データ1 int data2 データ2
戻り値 : 最小公倍数
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 11・28まで
[5] その他の制限: なし


316:デフォルトの名無しさん
07/11/27 18:06:06
>>310
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int i=0,l,c[256]={0};
char buf[256];
double h=0,p;
scanf("%s",buf);
l=strlen(buf);
for(i=0;i<l;i++)
c[buf[i]]++;
for(i=0;i<256;i++)
if(c[i]>0) {
p=(double)c[i]/l;
printf("\"%c\" %lf\n",i,p);
h-=p*log(p);
}
printf("H = %lf\n",h);
return 0;
}

317:デフォルトの名無し
07/11/27 18:14:32
[1] 授業単元: プログラミング
[2] 問題文:
入力された整数0~9のn個の文字列に対応したヒストグラムを出力するプログラムを作成せよ。
例:(n個の整数文字列=0050011050)
数値0が6個、1が2個、5が2個の場合、以下のように出力する。

   <出力例>
     a[0] = 6 ******
     a[1] = 2 **
     a[2] = 0
     a[3] = 0
     a[4] = 0
     a[5] = 5 **
     a[6] = 0
     a[7] = 0
     a[8] = 0
     a[9] = 0
ただしキーボードからの入力は最大128バイトとし、それを超える場合129バイト以降のデータはカウントしない。
入力データは半角数字のみとし、全角数字の入力は考えない。

文字列カウント関数 count
引数 char inputdata[] 入力データ
   int outputdata[] 出力データ

算出結果をヒストグラムで描写する関数名 hist
引数 int outputdata[]
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 11月28日まで
[5] その他の制限: なし


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