C/C++の宿題を片付けます 75代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/19(木) 20:39:01【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
【前スレ】
C/C++の宿題を片付けます 74代目
http://pc8.2ch.net/test/read.cgi/tech/1158844912/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0655デフォルトの名無しさん
2006/11/02(木) 01:52:16#include <stdio.h>
#define COUNT 5
int main(void)
{
int data[COUNT];
int min,max;
int i;
/*入力*/
for(i=0; i<COUNT; i++){
printf("data[%d] ... ",i);
scanf("%d",&data[i]);
}
/*最小値と最大値を求める*/
min = max = data[0];
for(i=0; i<COUNT; i++){
if(min>data[i]) min = data[i];
if(max<data[i]) max = data[i];
}
/*最小値と最大値にそれぞれ等しい値を全て表示する*/
for(i=0; i<COUNT; i++){
if(max==data[i]) printf("Max : data[%d] = %d\n",i,data[i]);
}
for(i=0; i<COUNT; i++){
if(min==data[i]) printf("Min : data[%d] = %d\n",i,data[i]);
}
return 0;
}
0656デフォルトの名無しさん
2006/11/02(木) 01:53:49#include<stdio.h>
#define DATA_NUM 5
int main(void){
int data[DATA_NUM];
int maximum, minimum;
int i;
printf("-----------------------------\n");
for(i=0;i<DATA_NUM;i++){
printf("data[%d] ... ", i);
scanf("%d", &data[i]);
if(i==0)
maximum=minimum=data[0];
if(maximum<data[i])
maximum=data[i];
if(minimum>data[i])
minimum=data[i];
}
for(i=0;i<DATA_NUM;i++)
if(data[i]==maximum)
printf("Max : data[%d] = %d\n", i, data[i]);
for(i=0;i<DATA_NUM;i++)
if(data[i]==minimum)
printf("Min : data[%d] = %d\n", i, data[i]);
printf("-----------------------------\n");
return 0;
}
0658デフォルトの名無しさん
2006/11/02(木) 02:08:38#include<stdio.h>
#include<stdlib.h>
int main(void){
int figure, height, i;
while(1){
printf("1 三角形\n2 四角形\n");
scanf("%d", &figure);
if(figure==1 || figure==2) break;
}
printf("図形の段数(高さ)を入力してください :");
scanf("%d", &height);
if(height<=1){
printf("wrong number\n");
exit(1);
}
switch(figure){
case 1:
printf("\n*\n");
for(i=1;i<height-1;i++) printf("*%*s*\n", i-1, "");
for(i=0;i<height;i++) printf("*");
printf("\n");
break;
case 2:
printf("\n**********\n");
for(i=1;i<height-1;i++) printf("* *\n");
printf("**********\n");
break;
}
return 0;
}
0659デフォルトの名無しさん
2006/11/02(木) 02:19:12本当にありがとうございます。実行イメージを下のようにするには
どうすればよいですか?ほんと初心者でわからなくて、、教えてく
ださい、お願いします。
The figure is drawn.
1. Triangle
2. Rectangle
Please input the number ... 1 ←「...」の後ろはキーボード入力部
Please input height ... 5 ←「...」の後ろはキーボード入力部
*
* *
* *
* *
*********
三角形は正三角形のような形で
-----------------------------
(メニューとして「2」、段数として「5」を入力した場合)
*****
* *
* *
* *
*****
0660デフォルトの名無しさん
2006/11/02(木) 02:20:49[2] 問題文:生成した乱数をファイルに出力するプログラムを拡張し2つの乱数を生成し出力するプログラムを作成する。
それらの乱数データを配列に読み込み、その配列の行列の和と積を求め、結果をファイルに出力するプログラムを作成せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:11/3
[5] その他の制限:使えるようであればmalloc()、strtok()を活用するとの事です。
よろしくお願いします。
0661デフォルトの名無しさん
2006/11/02(木) 02:21:09すみません、図形がずれました。
三角形は正三角形
四角形は普通の四角形です。
0662デフォルトの名無しさん
2006/11/02(木) 02:25:36>生成した乱数をファイルに出力するプログラム
とりあえずこれあげないと作れねーだろ
0663658
2006/11/02(木) 02:34:56#include<stdio.h>
#include<stdlib.h>
void DrawTriangle(int height){
int i;
printf("%*s*\n", height-1, "");
for(i=1;i<height-1;i++) printf("%*s*%*s*\n", height-i-1, "", i*2-1, "");
for(i=0;i<height*2-1;i++) printf("*");
printf("\n");
}
void DrawRectangle(int height){
int i;
for(i=0;i<height*2;i++) printf("*");
printf("\n");
for(i=1;i<height-1;i++) printf("*%*s*\n", height*2-2, "");
for(i=0;i<height*2;i++) printf("*");
printf("\n");
}
int main(void){
int figure, height;
while(1){
printf("The figure is drawn.\n1. Triangle\n2. Rectangle\nPlease input the number ... ");
scanf("%d", &figure);
if(figure==1 || figure==2) break;
}
printf("Please input height ... ");
scanf("%d", &height);
if(height<=1){printf("wrong number\n");exit(1);}
if(figure==1) DrawTriangle(height);
else DrawRectangle(height);
return 0;
}
0664デフォルトの名無しさん
2006/11/02(木) 02:39:38>乱数データを配列に読み込み、その配列の行列の和と積を求め、
配列の行列???
0665デフォルトの名無しさん
2006/11/02(木) 02:43:14本当にありがとうございました!!これで提出に間に合います。
0666デフォルトの名無しさん
2006/11/02(木) 02:46:00>>654 で回帰直線の求め方は分かるんじゃないかな
なんで VC 多いんだろう。参加できねーよ
makefile 〜.rc 〜.cpp
でうpしても使い方分かってくれなさそうだし… orz
0667660
2006/11/02(木) 03:03:04#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i;
time_t current;
FILE *myFile;
myFile = fopen("random.dat","w");
if(myFile==NULL){
return 1;
}
srand((unsigned int)time(& current));
for (i=0; i<10; i++){
fprintf(myFile,"%3d\n",rand()/%10+1);
}
fclose(myFile);
fprintf(stderr,"done\n");
return 0;
}
問題文そのまま書いたんですけど・・・多分配列の行列っていうのは乱数を読み込ませた配列の値を使って行列計算をしろって
ことだと思うんですけど・・・どうでしょうか?
0668デフォルトの名無しさん
2006/11/02(木) 04:36:47へへへ、ダンナ。そういうことができないからここで聞かせてもらってるんでゲスぜ。
先生方が思っている以上にオイラの能力はありやせんぜ。
どなたか >>653 を作成してくれませんか?ボタンクリックのとこだけでいいんですよ( ;・∀・)
0669デフォルトの名無しさん
2006/11/02(木) 04:54:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2867.zip
作ってから気付いたんだが、二値化画像からデータを取るんだよね?
これだとクリックしてプロットした点をデータとして使うからちょっと感じが違うんだけども。
0670デフォルトの名無しさん
2006/11/02(木) 09:32:44C++ではなく、Cでウィンアプリを作れと言われたのですが、
これはMFCっていうのは使ってもいいのでしょうか?
あと、開発環境はVSでもおkなんでしょうか??
しかも、CでDB接続とかもできるんでしょうか???
CとC++の情報を切り離せずに混乱しております。
助けて!
0671デフォルトの名無しさん
2006/11/02(木) 09:48:31猫でもわかるのサイトか本みんさい
全部C言語だから。
あと、MFCはAPIをラップしたクラスだからC++になります。
猫でもの本とか買って、適当に載ってるソースコピペして
いじったらいいじゃな〜い。
0672デフォルトの名無しさん
2006/11/02(木) 10:38:13助かりました!ありがとうございました!!
0673デフォルトの名無しさん
2006/11/02(木) 11:17:03[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ベッセル関数 (j0() と j1()) の数表を出力する C のプログラムを作り、
その出力結果を Excel でグラフにして、Word 等でレポートを書いて
その中にグラフも挿入して、このWebCTで提出せよ。
作業手順は添付ファイルを参照のこと。
ベッセル関数 J0, J1 は sin, cos と同じようにCの標準関数として用意されているので、
それを呼び出せばよい。ただし borland C compiler には用意されていないようなので、
大学の cygwin あるいは Unix 環境でプログラムを行うこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限: 2006年11月15日まで
0674 ◆xQTfY.P6Xs
2006/11/02(木) 11:18:23[2] 問題文(含コード&リンク):n個の整数を入力し、入力した値の中で奇数と偶数の個数を表示せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: borland 2,31
[3.3] 言語: C
[4] 期限: 今日の17時まで
[5] その他の制限: まだ習い始めて間もないです。
#include <stdio.h>
void main(void)
{
int x;
printf("x = ");
scanf("%d",&x);
if(x%2 !=0)
{
printf("\n xは奇数");
}
else{
printf("\n xは偶数");
}
}
これを応用して作れだそうです。
どうかよろしくお願いします
0675デフォルトの名無しさん
2006/11/02(木) 11:19:27Excel を用いて計算結果のグラフを描く
描画データの準備:
CSV ファイル(コンマ区切りファイル)として、C プログラムから計算結果を書き出す。
例えば2つの整数変数、i, n を出力するのならば、プログラム中の書式指定において、
printf("%d, %d\n", i, n);
のようにコンマで区切って出力するように指定する。さらに、このプログラムを実行するとき、
$ ./a > data.csv
というように指定してデータファイルに書き込む。
“>” はリダイレクトと呼ばれる機能であり、この後ろに指定されている data.csv という名
前のファイルに今まで画面に出ていた出力(標準出力)を書き込む。ファイル名はどのようにつけてもかまわないが、
日本語やスペースは使わない方がよい。また拡張子は、Excel で開くために .csv としておくこと。
Excel でグラフを描く:
Windows 上でファイル data.csv を探してクリックすると、Excel が起動してデータが表示される。
描画するデータ範囲を選択して、グラフウイザードを起動する
([挿入(I)]メニューから[グラフ(H)]を選んでもよい)。
グラフウイザードでグラフの種類を選択して実行する。この場合は散布図を選んでいる。
画面にしたがって次へと進み、[完了]をクリックすると、Excelの画面にグラフが挿入される。
Word 文書への貼り付け:
Excel 上のグラフを選択して、[編集]→[コピー] (あるいはCtrl+C )でコピーし、Word などで
[編集]→[貼り付け] (あるいは Ctrl+V) を選ぶと、文書中にグラフが挿入される。
0676デフォルトの名無しさん
2006/11/02(木) 11:27:31どうでもいいがj0,j1はCの標準関数じゃねー
0677デフォルトの名無しさん
2006/11/02(木) 11:28:30[2] 問題文(含コード&リンク):◎見にくくなりそうなので一番下に書きます。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 2005
[3.3] 言語:C++
[4] 期限:明日 11/3
[5] その他の制限: 標準入出力ストリームで、
整数除算による商の計算表(下記の例を参照)を表示する.
÷ | 除数
-------+ 1 2 3 4 5 6 7 8 9
被除数 +--------------------------------------------
1 | 1 0 0 0 0 0 0 0 0
2 | 2 1 0 0 0 0 0 0 0
3 | 3 1 1 0 0 0 0 0 0
4 | 4 2 1 1 0 0 0 0 0
5 | 5 2 1 1 1 0 0 0 0
6 | 6 3 2 1 1 1 0 0 0
7 | 7 3 2 1 1 1 1 0 0
8 | 8 4 2 2 1 1 1 1 0
9 | 9 4 3 2 1 1 1 1 1
これを出力するようなプログラムを教えてください。
0678デフォルトの名無しさん
2006/11/02(木) 11:29:220679デフォルトの名無しさん
2006/11/02(木) 11:30:32-------+ 1 2 3 4 5 6 7 8 9
被除数 +--------------------------------------------
1 | 1 0 0 0 0 0 0 0 0
2 | 2 1 0 0 0 0 0 0 0
3 | 3 1 1 0 0 0 0 0 0
4 | 4 2 1 1 0 0 0 0 0
5 | 5 2 1 1 1 0 0 0 0
6 | 6 3 2 1 1 1 0 0 0
7 | 7 3 2 1 1 1 1 0 0
8 | 8 4 2 2 1 1 1 1 0
9 | 9 4 3 2 1 1 1 1 1
0680デフォルトの名無しさん
2006/11/02(木) 11:40:27表のフォーマットがよくわからんからその辺すこし適当。
#include<iostream>
#include<iterator>
#include<algorithm>
#include<iomanip>
#include<functional>
using namespace std;
int main(){
int a[9];for(int i=1;i<=9;++i)a[i-1]=i;
cout << " ÷ | 除数" << endl;
cout << "++++++++ ";
copy(a,a+9,ostream_iterator<int>(cout," "));
cout << endl << "非除数 +";
*fill_n(ostream_iterator<char>(cout),18,'-')++ = '\n';
for(int i=1;i<=9;++i){
cout << setw(6) << i << " | ";
transform(a,a+9,ostream_iterator<int>(cout," "),bind1st(divides<int>(),i));
cout << endl;
}
}
0681デフォルトの名無しさん
2006/11/02(木) 11:57:29#include<stdio.h>
int main(void){
int i,n,x,odd=0,even=0;
printf("n:");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x);
(x%2==0)? even++:odd++;
}
printf("偶数:%d,奇数:%d\n",even,odd);
return 0;
}
0682 ◆xQTfY.P6Xs
2006/11/02(木) 12:03:33ほんとうにありがとうございました。 いきなり課題とかだされて全くわからなくてこまっていたんです。ほんとうにありがとうございます。
0683デフォルトの名無しさん
2006/11/02(木) 12:24:02じっくり自分で考えてみた方が自分のためにもなるし、
出された回答を理解するだけより、よっぽど勉強になると思うんだ。
0684デフォルトの名無しさん
2006/11/02(木) 12:45:30まことに勝手ながら<iostream>しか習ってません。setwとかcharとかも習ってません。
条件の後出しですいませんが、
//除数
//被除数
//商
//(1)計算表の第1行を表示
//(2)計算表の第2行を表示
//(3)計算表の第3行を表示
//(4)各被除数について以下の処理を繰り返す(反復)
//(4-1)当該被除数を表示する
//(4-2)各除数について、被除数を除数で割った商を表示する
//(4-3)改行する
おおまかに、このアルゴリズムでお願いできませんでしょうか?
0685デフォルトの名無しさん
2006/11/02(木) 12:49:23ありがとうございます!
今からじっくり見させていただきます。
0686デフォルトの名無しさん
2006/11/02(木) 12:55:17÷ | 除数
------+ 1 2 3 4 5 6 7 8 9
被除数+---------------------
1 | 1 0 0 0 0 0 0 0 0
2 | 2 1 0 0 0 0 0 0 0
3 | 3 1 1 0 0 0 0 0 0
4 | 4 2 1 1 0 0 0 0 0
5 | 5 2 1 1 1 0 0 0 0
6 | 6 3 2 1 1 1 0 0 0
7 | 7 3 2 1 1 1 1 0 0
8 | 8 4 2 2 1 1 1 1 0
9 | 9 4 3 2 1 1 1 1 1
ズレませんように
0687デフォルトの名無しさん
2006/11/02(木) 16:30:07教えてもらえませんか?
0688デフォルトの名無しさん
2006/11/02(木) 16:40:470689デフォルトの名無しさん
2006/11/02(木) 16:53:47>>653です。
おお。早い!
そうです、こんな感じですが2値化画像を参照して開くんで、とりあえず簡単な1本の完璧でない直線の画像(BMP)をリソースに登録してそれを表示して
そのにょろにょろ直線を直線にするプログラムがいいですね。。。
あと直線も画面の端から端ではなく、線分の一番左のX座標から右のX座標までの線分にしていただけませんか?
しかし、ここの先生方の馬力はすごいですね。お願いします><
0690デフォルトの名無しさん
2006/11/02(木) 16:57:54あっ!ちなみに線分は細線化されてますので太さは「1」です><
0691デフォルトの名無しさん
2006/11/02(木) 23:08:420692デフォルトの名無しさん
2006/11/02(木) 23:10:290693デフォルトの名無しさん
2006/11/02(木) 23:12:09実行したのですが、何も表示されなかったのですが
どうすれば?
0694デフォルトの名無しさん
2006/11/02(木) 23:22:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2868.zip
>>677
#include <iostream>
using namespace std;
int main()
{
cout << "÷ | 除数" << endl;
cout << "------+ 1 2 3 4 5 6 7 8 9" << endl;
cout << "被除数+--------------------" << endl;
for(int i=1; i<=9; i++){
cout << " " << i << " | ";
for(int j=1; j<=9; j++){
cout << i/j << " ";
}
cout << endl;
}
return 0;
}
>>693
それが正しい動作
0695デフォルトの名無しさん
2006/11/02(木) 23:25:22答えは無いってことですか?
0696デフォルトの名無しさん
2006/11/02(木) 23:35:27問題文くらい読まないのか?
0697デフォルトの名無しさん
2006/11/02(木) 23:39:07反例があるっぽいんですけど。
0698デフォルトの名無しさん
2006/11/02(木) 23:46:49> この式を満たすものはないと断言した。これはつい最近になって証明された。
0699デフォルトの名無しさん
2006/11/02(木) 23:54:47なるほど
0700デフォルトの名無しさん
2006/11/02(木) 23:58:09先生・・・すさまじいです。。。オイラの卒論なんて一週間でできちゃいそうですね。
ほんとに感謝感激です。ありがとうございました。
0701デフォルトの名無しさん
2006/11/03(金) 00:41:320702デフォルトの名無しさん
2006/11/03(金) 03:18:18[2] 問題文(含コード&リンク): 見にくくなりそうなので下に書きます。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 2005
[3.3] 言語: C
[4] 期限: 明日23時
[5] その他:分割コンパイルとポインタ習い始めましたが、よく分かりませんorz
1.分割コンパイル
引数として受け取ったint型の数値nについて、
1からnまでの総和を計算して返す関数 int sum(int n)
nの階乗を計算して返す関数 int fact(int n)
を作成しなさい。
ただし、main関数を記述するファイルとは別のファイルに作成すること。
2.ポインタによる疑似間接参照
要素数が10のint型の配列に
キーボードから数値を入力する関数を作成し
(main関数の中で)呼び出しなさい。
配列はmain関数の中で宣言し、
入力の関数には配列のアドレスを引数で与えること。
【ヒント】 void input(int *p)
2問ありますが、よろしくお願い致します。
0703デフォルトの名無しさん
2006/11/03(金) 04:05:170704デフォルトの名無しさん
2006/11/03(金) 06:36:34int sum(int n)
{
n*(1+n)/2
}
int fact(int n)
{
int i = 1;
int result = 1;
for(;i<=n;i++)
result *= i;
return result;
}
void input(int *p, int size)
{
int i = 0;
for(;i < size; i++)
fscanf(stdin,%d,p[i]);
}
0705デフォルトの名無しさん
2006/11/03(金) 09:30:21[2] 問題文(含コード&リンク):
線形リストを作成するプログラムを作れ。
メニュー番号は以下の通りである。
1・・・先頭に新規ノードを挿入
2・・・最後に新規ノードを挿入
3・・・挿入したいノード名を指示して、指示されたノードの後ろに新規のノードを指定する
4・・・削除したいノード名を指示して、指示されたノード名を削除する
8・・・リストを先頭より表示する
9・・・終了
>>427 のプログラムの応用編です。
自分なりにやってみましたが、case3, 4の部分がうまく動いてくれないんです…
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2869.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006/11/04 PM01:00
[5] その他の制限: 構造体、ポインタを使用
0706デフォルトの名無しさん
2006/11/03(金) 09:39:53[2] 問題文
確率変数Xが確率密度関数
1/6( -3 ? x < 0)
p(x)=2( 0 ? x < 1/4)
0( それ以外 )とする。
double get_uniform_random(void) を利用して, p(x)に従う乱数X を返す関数
double get_myrandom(void) をまず定義する.
繰り返し回数?
300
シード?
128478
と入力すると, double get_myrandom(void)でサンプルを300回発生し,
サンプル平均 10.0 嘘です
サンプル分散 1.0 嘘です
…
-3.050000 0.000000
-2.950000 0.016000
-2.850000 0.018000
…
のようにサンプル平均, サンプル分散, ヒストグラムを計算して出力するプログラムを作ろう, ここで,
-2.950000 0.016000
は, -2.95 を中心値とするビンに, 300回中 300*0.016 回はいったということをいっている.
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 2006年11月07日09:00まで
[5] その他
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2870.txt
ヒントです。利用して下さい。
0707デフォルトの名無しさん
2006/11/03(金) 10:11:48>>386 のはどこがいけない?
0708デフォルトの名無しさん
2006/11/03(金) 10:24:16・ノード追加
trace = &work[n];
-> trace->next = &work[n];
・ノード削除
sento->next = trace->next
-> previous->next = trace->next;
previous = NULL;
-> previous = trace;
if( trace->name != value )
-> if ( trace == NULL )
0709デフォルトの名無しさん
2006/11/03(金) 10:40:05ありがとうございます
ちゃんと正常動作できました
0710デフォルトの名無しさん
2006/11/03(金) 10:51:24hist[(int)((x-xmin)/dx)]++;
average=sum/nn;
variation=(sum2-sum*sum/nn)/nn;
double get_myrandom(void){
double x;
double r;
r=get_uniform_random();
if(r<=0.5)
x=-r*6;
else
x=(r-0.5)/2;
return x;
}
0711デフォルトの名無しさん
2006/11/03(金) 11:04:48return (double)rand()/(RAND_MAX-1);
↓
return (double)rand()/(RAND_MAX+1);
0713デフォルトの名無しさん
2006/11/03(金) 13:51:43しかし、正常動作しないので、>>702の問題答えてくれる方よろしくお願いします。
1と2、分けて書いてくれると有難いです。
0714デフォルトの名無しさん
2006/11/03(金) 14:02:590715デフォルトの名無しさん
2006/11/03(金) 14:12:59[2] 問題文(含コード&リンク):2 つの整数 a と b を入力し, 小さい方を出力するプログラムを条件演算子を用いて作成せよ
[3] 環境
[3.1] OS: Windows98
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年11月3日16:00まで
0716デフォルトの名無しさん
2006/11/03(金) 14:32:54(a >b) ? printf("%d",b) : printf("%d",a);;
0717デフォルトの名無しさん
2006/11/03(金) 14:53:04美しくない
0718デフォルトの名無しさん
2006/11/03(金) 14:59:07[2] 問題文1整数のビットパターンを表示するプログラムを作成せよ
2単浮動小数点数のビットパターンを表示するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:borland C++ 5.5
[3.3] 言語:C++
[4] 期限:今日中 11/3
0719デフォルトの名無しさん
2006/11/03(金) 15:01:04普通はこうじゃね?
printf("%d",a>b?b:a);
0720デフォルトの名無しさん
2006/11/03(金) 15:04:160721デフォルトの名無しさん
2006/11/03(金) 15:08:130722デフォルトの名無しさん
2006/11/03(金) 15:09:20嬉しいからあげちゃお
0723デフォルトの名無しさん
2006/11/03(金) 15:24:54問題1
#include <stdio.h>
union {
int n;
struct {
unsigned b0: 1; unsigned b1: 1; unsigned b2: 1; unsigned b3: 1;
unsigned b4: 1; unsigned b5: 1; unsigned b6: 1; unsigned b7: 1;
unsigned b8: 1; unsigned b9: 1; unsigned b10: 1; unsigned b11: 1;
unsigned b12: 1; unsigned b13: 1; unsigned b14: 1; unsigned b15: 1;
unsigned b16: 1; unsigned b17: 1; unsigned b18: 1; unsigned b19: 1;
unsigned b20: 1; unsigned b21: 1; unsigned b22: 1; unsigned b23: 1;
unsigned b24: 1; unsigned b25: 1; unsigned b26: 1; unsigned b27: 1;
unsigned b28: 1; unsigned b29: 1; unsigned b30: 1; unsigned b31: 1;
};
}a;
int main()
{
scanf("%d", &a.n);
printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
"%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
a.b31, a.b30, a.b29, a.b28, a.b27, a.b26, a.b25, a.b24,
a.b23, a.b22, a.b21, a.b20, a.b19, a.b18, a.b17, a.b16,
a.b15, a.b14, a.b13, a.b12, a.b11, a.b10, a.b9, a.b8,
a.b7, a.b6, a.b5, a.b4, a.b3, a.b2, a.b1, a.b0);
return 0;
}
0724デフォルトの名無しさん
2006/11/03(金) 15:53:37#include<iostream>
#include<bitset>
using namespace std;
int main(){
float f = 7.18;
bitset<32> a(*(int*)&f);
string s = a.to_string<char,char_traits<char>,allocator<char> >();
cout << s << endl;
}
0725デフォルトの名無しさん
2006/11/03(金) 17:33:33[2] 問題文(コピペ)
引数で受け取ったunsigned int型変数を2進数で表示する関数を作成せよ。
(例えば,0xf0f0f0f0が入った変数の値を表示させると,
11110000111100001111000011110000 が画面に表示されるようにする。)
ヒント:
unsigned int mask = 1<<31; は1000 0000 0000 0000 0000 0000 0000 0000を表すので,
この変数maskをうまく使って最上位ビットを取り出す。次に mask = mask >>1; とすると,
0100 0000 0000 0000 00000000 0000 0000となるので,これを使うと,
最上位から2番目のビットを取り出すことが出来る。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:borland C++ 5.5
[3.3] 言語:C
[4] 期限:明日の朝まで。
0726デフォルトの名無しさん
2006/11/03(金) 18:22:25int xxx( unsigned int num)
{
unsigned int mask = 1 << BIT-1;
int i;
for( i = 0; i < BIT-1; i++ ){
printf( "%d", (num & mask) >> (BIT-1-i) );
mask = mask >>1;
}
printf("\n");
return 0;
}
0727デフォルトの名無しさん
2006/11/03(金) 19:26:59[2] 問題文(含コード&リンク):
英単語を各行に一語ずつ入力してもらい、単語がそれぞれ
何回ずつ出現したかの頻度を出力するプログラムを作りなさい。
単語を辞書式順序で出力しなさい。ここで、単語は、次のような
木構造で管理しましょう。
struct tree{
struct tree *left;
struct tree *right;
char *word;
int count;
};
wordが単語を表し、countがその単語の出現回数を表しています。
leftからリンクされている木の単語は、wordより辞書式順序で
前にあるものばかりで、rightはwordより後にあるものばかり
になるように木構造を管理しなさい。辞書式順序の比較には
strcmpを使います。文字列pとqに対して、
strcmp(p,q)
は、pがqより辞書式順序で前にある場合には-1を、
等しい場合には0を、後ろの場合には1を返します。
[3] 環境
[3.1] OS:unix
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限: 2006年11月4日23:00
[5] その他の制限:今までは制御構造、ポインタ、構造体など、
今回はクイックソート、バブルソート、バイナリサーチまで習いました。
0728デフォルトの名無しさん
2006/11/03(金) 19:52:19ありがとうございます。参考になりました。
0729デフォルトの名無しさん
2006/11/03(金) 20:48:05>>723
どうもありがとうございます。
0730デフォルトの名無しさん
2006/11/03(金) 21:14:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2871.c
0732デフォルトの名無しさん
2006/11/03(金) 22:15:24すまんfreeの順序間違えた。
free(p->word);
free(p);
にしといて
0733デフォルトの名無しさん
2006/11/03(金) 23:00:16[2] 問題文(含コード&リンク):正の整数値を読み込み、その数を逆順に表示するプログラムを作成せよ
例えば、1234が入力されたら4321と出力するする
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 11月7日
[5] その他の制限: while文を使う
10で割ってその余りを表示していくらしいんですがうまくいきません
0734デフォルトの名無しさん
2006/11/03(金) 23:05:01#include<stdio.h>
int main(void)
{
int number;
printf("Input positive number : ");
scanf("%d", &number);
while(number>0)
{
printf("%d", number%10);
number/=10;
}
return 0;
}
0735デフォルトの名無しさん
2006/11/03(金) 23:36:43ありがとうございます
こんなに早く答えてもらえるとは
0736デフォルトの名無しさん
2006/11/03(金) 23:44:36[2] 問題文(含コード&リンク):これを利用して別の動き,オブジェクトを用いたOpenGLアニメーションを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0等
[3.3] 言語:C
[4] 期限: 11月6日(月)朝9:30まで
[5] その他の制限: なし
希望としましてはプログラム実行時の現在左下から動き出す1個の四角形を犬の口から3個発射できるようにして、
4回目の発射から四角形が四方八方に花火のように破裂する openglアニメーションを作成したいのですがどうすればいいですか?
実行ファイルはbackground.cです。
ファイル:
http://up2.viploader.net/mini/src/viploader84139.zip.html
0737デフォルトの名無しさん
2006/11/04(土) 09:54:05[2] 問題文:与えられた漸化式に基づいて数列の第0項から第N項までの値を表示する。
A0 = A1 = 1, An = An-1+An-2 (n≧2のとき)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 2005
[3.3] 言語:C++
[4] 期限: 11月6日(月)まで
[5] その他の制限:よくわからないんで、プログラムを作るときの設定をいいますと、Win32→Win32コンソールアプリケーション→コンソールアプリケーション→(ここからプログラムを作ってます)
アルゴリズムの指定制限:
・データ構造:
An
An-1
An-2
添字(n)
・操作部:
(1)第0項と第1項の値を表示する。
(2)添字を上限値(20)まで1づつ増やしながら以下の処理を繰り返す(反復)
(2-1)Anの値を求めて表示する。
(2-2)An-1の値をAn-2に移す。
(2-3)Aの値をAn-1に移-1す。
自分で、やってみるとAn-1とかのn-1などが漸化式の様に連動していかない(数値として変化していってない)みたいで、どういう風に記述したらいいのかわかりません。
数日前にもこの課題を答えて頂いたんですが、ビルドできませんでした。
参考にはなったんですが、自分はアホなのでこんな風につまづいてます。
0738デフォルトの名無しさん
2006/11/04(土) 09:59:30最初のところは、
#include <iostream>
using namespace std;
void main(){ しか習ってません。
あと cout cin int for while if…else くらいしか習ってません。
0739デフォルトの名無しさん
2006/11/04(土) 10:10:37自分で書いたところまで晒してくれ
0740デフォルトの名無しさん
2006/11/04(土) 10:12:27google:フィボナッチ
0741デフォルトの名無しさん
2006/11/04(土) 12:34:52別にyahooでもinfoで変わらなくね?
0742デフォルトの名無しさん
2006/11/04(土) 12:43:41#include <iostream>
using namespace std;
void main() {
#define N 20
int An //An
int An-1 //An-1
int An-2 //An-2
int n //Aの添字 …int n を一番最初にしてみましたけどダメでした。
int A1 = 1
int A2 = 1 ← どの辺で、A1=A2=1って書かないといけないのでしょうか。
cout << A1 << endl;
cout << A2 << endl; //(1)第0項と第1項の値を表示
for ( int 2; n <= N ; n++ ) { //添字を2から上限値まで1ずつ増やしながら表示
An = An-1 + An-2; ←これもA1=A2=1と同じでどの辺に書くべきですか?
An-2 = An-1; //An-1の値をAn-2に移す
An-1 = An; //Anの値をAn-1に移す
cout << endl;
}
}
0743デフォルトの名無しさん
2006/11/04(土) 12:48:01------ ビルド開始: プロジェクト: enshu1-5-3, 構成: Debug Win32 ------
コンパイルしています...
enshu1_5_3.cpp
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(21) : error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(21) : error C2601: 'A_' : ローカル関数の定義が正しくありません。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(16): この行は '{' を含んでいますが、これに対応するものがありません。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(21) : error C2065: 'i' : 定義されていない識別子です。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(21) : error C2143: 構文エラー : ';' が '}' の前にありません。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(24) : error C2470: 'A_' : 関数定義のようですが、パラメータ リストがありません。外見上の本体をスキップします。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(27) : error C2371: 'i' : 再定義されています。異なる基本型です。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(36) : warning C4091: '' : 変数が何も宣言されていないときは、'int' の左辺を無視します。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(48) : error C2143: 構文エラー : ';' が '{' の前にありません。
c:\enshu1\enshu1-5-3\enshu1_5_3.cpp(48) : error C2143: 構文エラー : ';' が '}' の前にありません。
An,An-1,An-2が計算上(An)-1,(An)-2とかになってるんですかね?
0744デフォルトの名無しさん
2006/11/04(土) 12:54:350745デフォルトの名無しさん
2006/11/04(土) 14:21:23> 自分で、やってみるとAn-1とかのn-1などが漸化式の様に連動していかない
連動しないも何もコンパイル通らないぞ…
・行末のセミコロンがない
・An-1 ←変数名にマイナス記号は使えない(Anから1を引く計算と区別できないから)
・for ( int 2; n <= N ; n++ ) ←もの凄くおかしい(nをカウンタにするならn = 2だろ)
これでコンパイルは通るはず。
実際動かしてみるとforの中で最初のn = 2のとき
> An = An_1 + An_2;
An_1, An_2の値は何も代入されてないので不定。これがいけない。
An_1 = 1;
An_2 = 1;
とループの前に与えておけば問題ない。
あと、A1, A2は使ってない&必要ない。
> cout << endl;
これじゃ改行出すだけで答えが出力されない。
A_nを出力しよう。
0746デフォルトの名無しさん
2006/11/04(土) 15:15:19#include <iostream>
using namespace std;
int main(){
int An; //An
int An_1; //An-1
int An_2; //An-2
int n; //添字
#define N 20;
_asm{
mov n, 2
mov An_1, 1
mov An_2, 1}
cout << An_2 << endl; //第0項
cout << An_1 << endl; //第1項
while(n <= N){
_asm{
mov eax, An_1
add eax, An_2
mov An,eax}
cout << An << endl;
_asm{
mov eax, An_1
mov An_2, eax
mov eax, An
mov An_1, eax
inc n}}
return 0;}
0747デフォルトの名無しさん
2006/11/04(土) 15:58:45ちょwwwおまwwww
0748デフォルトの名無しさん
2006/11/04(土) 16:17:36特定した
0749秋葉の大学生&rlo;望志んさ屋トフソ
2006/11/04(土) 19:19:48乱数で0が出るまでの回数をtemp[]配列に記憶しておき,それを1万回試行してtemp[]の平均を求める。
http://ipoko.skr.jp/ransuu.cpp.txt
というプログラムを考えたのですが,なぜか最初の1回だけランダムな数字が出て
残りの9999回は全部0になってしまいます。
何故でしょうか?誰か教えてくださいm(__)mペコ
0750デフォルトの名無しさん
2006/11/04(土) 19:25:59j = 0;
↓
j = 0; s=1;
0751秋葉の大学生&rlo;望志んさ屋トフソ
2006/11/04(土) 19:27:54アッー!
なるほど、どうもありがとうございましたw
0752デフォルトの名無しさん
2006/11/04(土) 20:17:20あまりにもレベルの低い宿題を晒さないでください。
大学いってもその程度ができないのかと思うと中学生ながら絶句してしまいます。
0753デフォルトの名無しさん
2006/11/04(土) 20:21:060754デフォルトの名無しさん
2006/11/04(土) 20:27:2013年前に中学生だった俺でも授業でやったよ。(N88-BASICだったが)
最近なら程度の差はあれやってるんじゃないかな。
■ このスレッドは過去ログ倉庫に格納されています