プログラマー軍団がC/C++の宿題を解決します 34代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG史上最強のプログラマー軍団の見解は?
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その行とエラーの詳細を書きましょう。
エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
【歴代スレは>>2-10】
0655デフォルトの名無しさん
NGNGコンパイル時のエラーは出なかったんですけど、実行されませんでした。
どうやれば実行結果が得られるのか、詳しく教えていただきたいです。
お願いします。
0656デフォルトの名無しさん
NGNGコマンドライン引数
0657デフォルトの名無しさん
NGNGヤフーで検索してみましたけど、いまいちよくわかりませんでした。
0658616
NGNG>>649
ありがとうございました
0659610
NGNGの
return((int)((sin(pai/2.0+((double)y)/6.0)+1.0)*13.0));
ってなにを計算してるんでしょうか?
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG�@ ラプラス方程式を解くプログラムを作れ。
�A �@を用いて長方形領域 0≦x≦2、0≦y≦1の上でラプラス方程式を解け、
ただし境界条件(周上の関数値)はデータとして読み込むものとする。
�B 適当なxおよびyの値の組{(x1,y1),(x2,y2),...,(xm,ym)}(例えば,y=ax^3+bx^2+cx+d+ノイズ)
に対してべき多項式モデルf=Xcを当てはめた結果をグラフ表示せよ。なお、べき次数n
およびデータ点数mを様々に変化させよ。
0662デフォルトの名無しさん
NGNG手に負えません。
0663デフォルトの名無しさん
NGNG�@ ラプラス方程式を解くプログラムを作れ。
�A �@を用いて長方形領域 0≦x≦2、0≦y≦1の上でラプラス方程式を解け、
ただし境界条件(周上の関数値)はデータとして読み込むものとする。
�B 適当なxおよびyの値の組{(x1,y1),(x2,y2),...,(xm,ym)}(例えば,y=ax^3+bx^2+cx+d+ノイズ)
に対してべき多項式モデルf=Xcを当てはめた結果をグラフ表示せよ。なお、べき次数n
およびデータ点数mを様々に変化させよ。
手に負える人だけ解答して下さい。>>662はすっこんでろ!!!!
0664610
NGNGそこは図形の形を変えるためにいじったところです
0665661
NGNG俺じゃないが他にも同じ宿題で悩んでる人がいるのか。
0666デフォルトの名無しさん
NGNG循環リスト(末尾ノードに先頭ノードを指すポインタを与えたもの)で、
a〜hのどのアルファベットからスタートしても、アルファベット順で1周するような順序
を実現してください。(例:cからなら、c,d,e,f,g,h,a,bの順)
0667デフォルトの名無しさん
NGNG問題1. 実数のキューおよびスタックのクラスを、配列および連結リストで作成せよ。
(整数でなく実数。それぞれを作成するので4つ)
問題2. 実数のスタックを用いて逆ポーランド式計算機を作れ。余裕があれば単語分割するクラス
(TokenReader)を改良してキューを利用した形にしてみよ。
よろしくお願いしますm(_ _)m
0668デフォルトの名無しさん
NGNG丸写しはしないようにね
丸写し見つけたら本当に理解しているか
それとなく試してみて
理解してなければできてないものとして減点するから
プログラミング演習を採点してるTAより
0669デフォルトの名無しさん
NGNG次に示される関数を利用して、f2(2)を求めなさい。
f2(x) int x; {return(2*x*x+3*x-4);}
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG指導者は高齢か?
f2(x) int x; なんて書き方古いぞ
0672デフォルトの名無しさん
NGNG関数の使い方忘れたみたいで何度やってもエラー出るんです。
>>671
確か93年くらいの問題集からの問題だった気がします。
スマートな書き方でお願いします。
0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNG#include <stdio.h>
int f2(int x)
{
return( 2*x*x + 3*x - 4 );
}
int main()
{
printf("%d", f2(2));
return 0;
}
0676デフォルトの名無しさん
NGNGありがとう。これで残りの問題も解けそう。
0677デフォルトの名無しさん
NGNG「フーリエ変換」でぐぐりなさい。
0678デフォルトの名無しさん
NGNG『二つの円O1,O2それぞれの半径をr1,r2(可変)とする。r1-r2の領域
を黒く塗りつぶすプログラムを作りなさい。ただし、全体領域を100行
100列であるものとする。』
という内容ですが、C言語で教えていただけないでしょうか。どうか
お願いします。
0679デフォルトの名無しさん
NGNG腹ごなしに書いてみた。全体領域の定義がよくわからないからそこれへんは適当に直してくれ。
#include <stdio.h>
#include <stdlib.h>
#define SCREEN_W 100
#define SCREEN_H 100
int check_black( double x, double y, double r1, double r2)
{
const double f = x * x + y * y;
return (r1 >= r2) ? ((r1 * r1) >= f) && (f >= (r2 * r2))
: ((r2 * r2) >= f) && (f >= (r1 * r1));
}
0680デフォルトの名無しさん
NGNG0681679
NGNGint main( void)
{
const double r1 = 20, r2 = 40; /* 半径はこちら */
const int xhalf = SCREEN_W / 2, yhalf = SCREEN_H / 2;
int x, y;
if( (r1 < 0) || (r2 < 0) || (SCREEN_W < 0) || (SCREEN_H < 0) ) {
printf( "error: parameters (r1,r2,SCREEN_W,SCREEN_H) must be positive.\n");
exit( EXIT_FAILURE);
}
for( y = yhalf; y >= -yhalf; --y ) {
for( x = xhalf; x >= -xhalf; --x ) {
printf( "%c ", check_black( (double)x, (double)y, r1, r2) ? '*' : '-');
}
printf( "\n");
}
return EXIT_SUCCESS;
}
0682デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
int i, j;
for(i = 0; i < 20; i++) {
for(j = 0; j < i; j++) printf(" ");
printf("*\n");
}
return 0;
}
0683678
NGNG考えてくれてありがとうございます。
return (r1 >= r2) ? ((r1 * r1) >= f) && (f >= (r2 * r2))
: ((r2 * r2) >= f) && (f >= (r1 * r1));
この行でエラーが大量に出るのですが、?がまずいのでしょうか?
0684デフォルトの名無しさん
NGNGありがとうございます。
0686デフォルトの名無しさん
NGNG> 「99」を押したら入力終了。
の意味が分からない
9 を2回押したらすぐに終了?
99でその行が終わっていて改行したら終了?
0687デフォルトの名無しさん
NGNGエラーの内容は?
0688デフォルトの名無しさん
NGNGerror C2061: 構文エラー : シンタックスエラーを起こしました。>>683の脳では理解できません。
だろw
0689デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG与えるにはどうしたらいいの?
0692デフォルトの名無しさん
NGNGメンバ関数のポインタ、とかで調べろ
0693691
NGNG「要員函數の指示子」でググったところ
何もヒットしませんでした
何が悪いんでしょう?
0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
#define M 1000
#define N 256
#define FILE_NAME_SIZE 256
int main(void)
{
char buf[M][N], file[FILE_NAME_SIZE];
FILE* fp;
int i, j;
for (i = 0; i < M; i++) {
fgets(buf[i], N, stdin);
if (strcmp("99\n", buf[i]) == 0) { break; }
}
fgets(file, FILE_NAME_SIZE, stdin);
file[strlen(file) - 1] = '\0';
fp = fopen(file, "w");
for (j = 0; j < i; j++) { fprintf(fp, "%s", buf[j]); }
fclose(fp);
return 0;
}
0698678
NGNGC:\Program Files\Microsoft Visual Studio\MyProjects\en\en.cpp(15) : error C2018: 文字 '0x81' は認識できません。
C:\Program Files\Microsoft Visual Studio\MyProjects\en\en.cpp(15) : error C2018: 文字 '0x40' は認識できません。
このエラーが数行にまたがって大量に出るのですがどのようにしたら
いいでしょうか?
0699デフォルトの名無しさん
NGNGつ−か、マルチバイトの空白を消せ
0700デフォルトの名無しさん
NGNGコピペしただろ。
0701678
NGNGすいません、情けないエラーでした。。
一つだけお聞きしたいのですが、
(r1 >= r2) ? ((r1 * r1) >= f) && (f >= (r2 * r2))
: ((r2 * r2) >= f) && (f >= (r1 * r1));
の部分だけ説明願えませんか?
0702デフォルトの名無しさん
NGNGかつレスを見やすくするために
2バイト空白まぜるのは常
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG円の方程式x^2+y^2=r^2を使って円O1,O2の範囲内かどうか調べてるだけ。
f=x^2+y^2 とおいて r^2 以上なら円の外部分 以下なら内部分ってことで。
0705678
NGNG了解しました。どうもありがとうございました。
0706todokuro
NGNGif any one can help me, please give me some idea or program
that i can get good grade.
i can read japanese but cant write.
onegaishimasu
0707デフォルトの名無しさん
NGNGその発表で求められてるレベルが分からないので何とも言えない。
0708デフォルトの名無しさん
NGNGint strlen(const char* s)
{
int i=0;
while(s[i])i++;
return i;
}
0709デフォルトの名無しさん
NGNGint main()
{
printf("Hello World!\n");
}
This is a super program.
0710todokuro
NGNGha
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNGint strcmp(char*l,char*r){return*l==*r?(*l?0:strcmp(++l,++r)):(*l>*r)*2-1;}
0713デフォルトの名無しさん
NGNG正方向で符号化するハフマンなんかいいと思う
0714todokuro
NGNGi just quit this shit and will go outside to buy ganja.
bye-bye thank you all!
0715todokuro
NGNGintresting game program by c?
Last time i saw the matrix movie program that was typed by c
0717デフォルトの名無しさん
NGNGこれが聞きたいんかいな
{
struct list
{
struct list *next;
char data[1024 * 1024 * 1024];
};
struct list *head;
struct list **chain;
int index;
chain = &head;
for (index = 0; index < 1024; index++)
{
*chain = (struct list *)malloc(sizeof(struct list));
if (*chain == NULL)
{
// error processing
exit(1024);
}
chain = &((*chain)->next);
}
*chain = head;
}
細かいとこは自分で書きなはれ。
0718パスカル
NGNGちなみにパスカル言語っす。
This program will require the student to build a singly-linked list.
The definitions to be used are:
TYPE
LISTPTR = ^LIST;
LIST = RECORD
KEY:CHAR;
LINK:LISTPTR
END;
0719パスカル
NGNGon the KEY field and duplicates are not allowed. If the insertion
of a duplicate is attempted, a message should be output to the
printer indicating the value of the KEY that was provided and the
fact that it was a duplicate and insertion was disallowed. After
the entire list has been built, it shoud be output ot the pirnter.
The program will be executed three times; the following data will
be used;
QWERTYUIOPASDFGHJKLZXCVBNM
PLANYOURWORKANDWORKYOURPLAN
0720デフォルトの名無しさん
NGNGこの問題なんですけど、構造体を使わずに、ポインタと配列で作っていただけませんか?
どなたか挑戦お願いします。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNGスレタイが見えんのか?
0723デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=268&fi=no
TokenReaderについて何も情報を提示していないから問題2はしていない。
0724デフォルトの名無しさん
NGNG0725デフォルトの名無しさん
NGNGでた、低学歴!
0726デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=140
教えて下され
0727667
NGNG実数スタックと実数キューのサンプルテンプレートと実行結果のサンプル及び逆ポーランド式計算機(TokenReader含む)の
サンプルテンプレートが追って出されたので張っておきます。申し訳ありません。
実数スタックhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=137
実数キューhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=138
計算機http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=139
上2つはこのサンプルテンプレから配列の場合と連結リストの場合に合わせて書き換えなければならない・・・です。
後になって問題につけたしをするのはやめましょう、と注意書きがあるのにすいません。
どうかお願いします。ちなみにC++です。
問題1. 実数のキューおよびスタックのクラスを、配列および連結リストで作成せよ。
(整数でなく実数。それぞれを作成するので4つ)
問題2. 実数のスタックを用いて逆ポーランド式計算機を作れ。余裕があれば単語分割するクラス
(TokenReader)を改良してキューを利用した形にしてみよ。
0728デフォルトの名無しさん
NGNGif( fgets(buf,MAXLEN,stdin) ) {
printf("==%s==\n",buf);
}
これを実行し、キーボードから abc<RET> と入力すると(<RET>は改行)
==abc
==
と出力されます。これは理解出来る。次に abc<CTRL-D><CTRL-D> と入力すると
==abc==
と出力されます。なぜ <CTRL-D>が2個必要なのか、という質問なのですが。
ちなみに、abc<CTRL-D>de<RET> と入力すると
==abcde
==
と出力されます。
文字列を何も入力せずいきなり <CTRL-D>をたたくとなにも出力されません
( if( fgets() ) が false になる)。この場合は <CTRL-D> 1個で済みます。
(Linux での話です。DOS だと <CTRL-Z> が2回必要なのでしょうか。確認していません)
0729デフォルトの名無しさん
NGNGCtrl+Dが行頭でしか有効じゃないからじゃねぇの?
0730728
NGNG行頭かどうかが重要、というのはご指摘の通りのようです。
行頭以外の CTRL-D がどう扱われているのか、なんか複雑なのですが、
動作から推測するに
(1)行頭の CTRL-D は EOF と解釈される
(2)いったん文字入力を始めると"行の途中" という状態になる。
(3)行の途中 状態を終了するのは RETだけ
(CTRL-M とか CTRL-J とか。stty の状態によるでしょうが)。
(4)行の途中の CTRL-D は無視される。ただし直後に CTRL-D が続くと EOF になる。
こういうこと??
CTRL-D 1個で常に EOF にしたいとすれば、fgets() はだめで fgetc() を使うしかない?
0731デフォルトの名無しさん
NGNG1個で大丈夫では?
char *fgets(char *s, int size, FILE *stream);
fgets() は成功すると s を返し、ファイルの終り(あるいはエラー)の場合 NULL を返す。
何文字かに続けてCTRL-Dなら、NULLにならないのは当然だろ?
0732从*・ 。.・)<超限帰納法! ◆SayuminPM.
NGNG0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNGは積分をする関数で、積分区間MIN(#define MIN 0.0)からMAX(#define MAX 10.0)
までの途中計算を出力せずに、MAXの時の値を返す関数です。
これを途中計算も出力するようにするにはどうすればいいのですか?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=141&fi=no
0736お願いします
NGNGusing namespace std;
class vector{
private:
double x;
double y;
public:
vector(){x=0.0;y=0.0;}
vector(double a,double b){x=a;y=b;}
vector add(vector p,vector q);
void print(void);
double getx(void){return x;}
double gety(void){return y;}
};
void vector::print(void){
cout<<"(x,y)=("<<x<<","<<y<<")"<<endl;
}
vector vector::add(vector p,vector q){
vector temp(0,0);
temp.x=(p.x)+(q.x);
temp.y=(p.y)+(q.y);
return temp;
}
ヘッダファイルをこう書いて・・・
0737728
NGNGはい。man fgets によれば、fgets() が NULL を返すのは、エラーか、
一文字も読まずにEOFになった場合。文字を読んだ後 EOF になっても NULL を
返さないのはマニュアルどおりです。質問は、EOF にするのになぜ Ctrl-D が
2回要るか、ということでした。
>Ctrl-D の扱いは端末のお話になってくるので UNIX の本とか読んでみたり.
本を読んだわけではありませんが、ネットで少し調べると、どうも端末のバッファリングが
関係しているようでした。
abc と入力したあと、ctrl-D や RET を押す前なら、backspace で修正等が出来る。
ctrl-D を押すと、現在のバッファの内容が送られ、バッファは空になる。
バッファが空の時に ctrl-D を押すと、EOF になる。
バッファが空なのは、行頭か、ctrl-D を押した直後。
どうもこういうことらしいです。(私の理解が正しければ)
0738736(続
NGNG#include"basic2.h"
int main()
{
vector p=vector(1.0,0.0);
vector q=vector(0.0,1.0);
p.print();
q.print();
cout<<add(p,q)<<endl;
return 0;
}
.cppファイルをこう記述して、コンパイルしたのですが、
「.cpp 11: 未定義の関数 'add' を呼び出した」
と、出ます。いったい何がだめなのでしょうか?
0739デフォルトの名無しさん
NGNGいま、Cで数値計算のプログラムを作り、WinXpのコマンドプロンプトから実行しています。
ところが繰り返し回数を大きく設定しすぎてしまったため、
今表示されている結果を保持したままプログラムを終了したいのですが
強制終了の方法を教えてもらえませんでしょうか・・・
0740デフォルトの名無しさん
NGNGキャプチャ&タスク終了
0741デフォルトの名無しさん
NGNGなんかめちゃくちゃだな…
それをやりたいなら
vector add(vector p, vector q)をフレンド関数にするか、
staticにしてvector::addで呼び出す
>>739
CTRL+Cすればプロンプトに戻るかもしれない。
戻らないで消えるかもしれない。
0742デフォルトの名無しさん
NGNGめんどくさかったら軽いヒントでもいいんで
ちなみに初期数値は与えられてます。forを使うみたいですがいまいち・・・
違うスレに間違って書いてしまったんで、ここに書き直します。マルチになってしまって申し訳ないです。
どうかお願いします。
0743デフォルトの名無しさん
NGNG>741ありがとうです、無事停止しました!助かりました
0744736
NGNGあと、他にも、pとqの加算の方法ってありますか(friend関数を使わずに)?
もうしわけありませんが、staticに関しては、当方まったくわかりません・・・
0745742
NGNGint main(void)
{
int A[3][3]={{2,5,10},{4,7,8},{8,2,3}};
int B[3][2]={{10,25},{20,15},{5,10}};
int C[3][2];
int i,j,k;
for(i = 0; i<3; i++){
for(j = 0; j<2; j++){
C[i][j] = 0;
for(k = 0; k<3; k++){
C[i][j] = C[i][j] + A[i][k] * B[k][j];
}
}
}
printf("%d\n",C[i][j]);
return 0;
}
0746从*・ 。.・)<一点コンパクト化! ◆SayuminPM.
NGNGcanonical 入力のときは
EOF をタイプすると読み取りを待たされてるバイトをすぐに入力に渡す.
読み取りを待たされていないバイトが無いときは0を渡す.
だと思ったけど UNIX 系の人に聞いた方がいいよ
0747742
NGNGここの人からすれば初歩だろうに、情けない
0748742
NGNG0749デフォルトの名無しさん
NGNGEffectiveC++を一読することをお勧めしておく。
つーか、complexの実装でも見てみたら?
>>742
どう巧くいかないのか書いたらこちらも検討してみる気になるが。
0750デフォルトの名無しさん
NGNG>あと、他にも、pとqの加算の方法ってありますか(friend関数を使わずに)?
あたりまえですが、メンバ関数 add を定義して
p.add(q)
で p と q の和がえられるようにはできますよね。でも friend を使う方が普通では。
もちろん、add などという関数名ではなく、operator + を使うわけですが。
そうすれば r = p + q; などとかけます。さらに凝れば p += q; なんかも可能にする
ことが出来ます。
ベクトルクラスは、たいがいの C++ の解説本に例があると思いますよ。
0751デフォルトの名無しさん
NGNG>printf("%d\n",C[i][j]);
このとき、i と j はいくつでしょう。そしてC[i][j]は合法でしょうか。
0752デフォルトの名無しさん
NGNG\ c d / \ g / = \ ce + dg /
[質問]3行3列×3行2列って?
/ a b c \ / j k \ / \
| d e f | | l m | = | |
\ g h i / \ n o / \ /
0753742
NGNGまず計算結果が単なる整数で出てくる。
しかもどういう計算が行われた出たのかわからん数値が。
行列の形で表示できない。
forのところでも聞きたいのですが、うまくわからないとこを説明できないです。
模範解答があって初めて自分の間違いに気づきそうな気がします。
0754デフォルトの名無しさん
NGNG>>751
■ このスレッドは過去ログ倉庫に格納されています