C/C++の宿題を片付け ..
458:デフォルトの名無しさん
07/11/14 00:31:25
承前
int hyouka(int a)
{
if(90<=a){
return 5 ;
}else if (80<=a){
return 4 ;
}else if (70<=a){
return 3 ;
}else if (60<=a){
return 2 ;
}
return 1 ;
}
459:デフォルトの名無しさん
07/11/14 00:42:21
>>458
横からスマンがこういうほうが個人的に好き
int hyouka(int a)
{
return 90 <= a ? 5 :
80 <= a ? 4 :
70 <= a ? 3 :
60 <= a ? 2 :
1;
}
460:デフォルトの名無しさん
07/11/14 00:56:02
>>439
当方の環境は、WindowsXP / 処理系は cygwin(gcc 3.4.4) です。
表示は小数点3桁まで、重根の判定は幾分甘くしています。
係数が整数ならば、問題ないと思います。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
461:デフォルトの名無しさん
07/11/14 00:59:46
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
ここに書きました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: LINUX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限: ([2007年11月14日24:00まで)
[5] その他の制限:
書き直しました
462:デフォルトの名無しさん
07/11/14 01:05:27
>>461
自分のレス流れたから書いてるだけじゃねーかタコが
書き直すんならもっと早くやっとけよ低脳
463:aho
07/11/14 01:06:43
>>461
作るの面倒だから、アルゴリズムを・・・
"s"が並ぶことはないから単純に"b"かどうかを判定すればよい。
従って、
for(省略)
if(!strcmp(sdata[i].word[j], "b"))
sdata[i].num++;
end of for
これじゃあかんのかな?
464:458
07/11/14 01:18:30
>>459
458 のは、ちょっとずぼら過ぎたね
int hyouka(int a)
{
if (90<=a) return 5 ;
if (80<=a) return 4 ;
if (70<=a) return 3 ;
if (60<=a) return 2 ;
return 1 ;
}
に訂正
465:デフォルトの名無しさん
07/11/14 01:27:22
>>461
#include<stdio.h>
struct tfield{
char word[5];
int num;
};
int width_get(int value){
char tmp[16];
return sprintf(tmp, "%d", value);
}
int main(void){
struct tfield sdata[20];
const char *initial_data="bsbsbbsbsbsbsbbsbbsb";
int i, prev='b', count;
for(i=0,count=0;i<20;i++){
if(prev=='b') count++;
sprintf(sdata[i].word, "%*c", width_get(count), initial_data[i]);
sdata[i].num=count;
prev=initial_data[i];
}
for(i=0;i<20;i++) printf("%s", sdata[i].word);
printf("\n");
for(i=0;i<20;i++) printf("%d", sdata[i].num);
printf("\n");
return 0;
}
466:461
07/11/14 01:47:05
>>463
>>465
ありがとうございました。
467:デフォルトの名無しさん
07/11/14 02:09:09
【質問テンプレ】
[1] 授業単元:
[2] 数独を解くプログラムを作れ(なるべく詳しく説明もいれて)
[3] 環境
[3.1] 特に指定なし
[3.2] 特に指定なし
[3.3] 言語:C
[4] 期限: 11月17日
[5] 特に制限はなく 単にCを使って数独をとくプログラムをかけばよいらしいのですが
難易度があがってもなるべく解けるように・・・といわれました。
どうしてもうまくいきません。
よろしくお願いします
468:デフォルトの名無しさん
07/11/14 02:48:15
各ブロックに、ある数字が入る可能性が1マスしかない場合
各ブロックに、ある2個の数字が入る可能性が2マスしかない場合
→それらのマスには他の数字は入らない、他のマスにはその数字は入らない
各行ごとに、ある数字が入る可能性が1つのブロックにしか残っていない場合
→そのブロックの他の行にはその数字は入らない
469:デフォルトの名無しさん
07/11/14 03:45:09
数独程度だと、なまじアルゴリズムを凝るよりも安直に作った方がいい。
何故ならば、どんなに安直に作っても1秒と掛からずに解けてしまうから。
つまり、凝ったアルゴリズムを考える手間やデバッグの暇に何千問も処理できるってこった。
470:デフォルトの名無しさん
07/11/14 05:51:45
[1] 基礎プログラミング
[2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を
求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも
のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか
ったときは「なし」と印字せよ。
なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、
奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。
[3.1]Linux
[3.3]C言語
[4]11月14日朝10時
[5] 配列
おねがいします
471:デフォルトの名無しさん
07/11/14 07:12:34
>>467
数独のソースはネットで探せば確実にあります
まずは探しましょう
472:cvop
07/11/14 07:41:40
プログラミング初心者ですが、
画像処理のプログラミングで、PGM画像中にある、
それぞれのオプティカルフローの角度[度]と大きさ[pixel]の
頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を
検出し、グラフにしたい(ヒストグラムみたいに)のですが、
どのようなプログラムを作れば良いのでしょうか?
分かる方がいらっしゃれば教えて頂けないでしょうか。
言語はC言語です。
473:デフォルトの名無しさん
07/11/14 07:58:56
スレ違い
474:デフォルトの名無しさん
07/11/14 09:16:19
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):URLリンク(edu.net.c.dendai.ac.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:mingw-jp.bat
[3.3] 言語:C++
[4] 期限:2007年12月5日20:00まで
[5] その他の制限:Windows の API は使用しない,基本的な文法はわかります(For文等)
丸投げですがよろしくお願いします。
475:デフォルトの名無しさん
07/11/14 10:06:42
>>474
「なお、写したと思われるほど酷似したレポートが複数提出された場合、
原著がどれかの調査を行わず、抽選で一通のレポートのみを評価の対象とし」
こ れ は お も し ろ い
476:デフォルトの名無しさん
07/11/14 10:28:45
>>474
レポートも書けってこと?Wordでいいのか?
477:デフォルトの名無しさん
07/11/14 10:46:21
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞
は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新
聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ
の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C/C++
[4] 期限: 11月18日
[5] その他の制限:なし
よろしくお願いします。
478:デフォルトの名無しさん
07/11/14 11:52:10
>>429
ありがとうございました
スレ違いすみませんでした・・・
479:デフォルトの名無しさん
07/11/14 13:10:41
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
整数型変数nの値を1から25まで1ずつ変化させて、nの2乗、1/n
nの平方根、およびnの立方根を求めて、以下のような数表を作成する
プログラムを完成せよ。
n n*n 1/n sqrt(n) n∧(3/1)
1 1 1.00000 1.00000 1.00000
2 2 0.50000 1.41421 1.25992
== == ======= ======= =======
25 625 0.04000 5.00000 2.92402
(課題分では===のところはくっついていて、
2乗、1/nなどのところはくっついてしまっていますが
それぞれ離れています。やりかたがわかりませんでした。
大変見にくくてすみません)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: C++
[4] 期限: 2007年11月14日(15日提出)
[5] その他の制限: 習い始めたばかりなのでよくわかりませんが
ないと思います。
宜しくお願いします。
480:デフォルトの名無しさん
07/11/14 13:10:48
>>475
ひねくれた教授なのでw
>>476
プログラムだけで大丈夫です。
なるべく初歩的な文法でお願いしたいのですが…
481:デフォルトの名無しさん
07/11/14 14:06:17
>>480
教授にメールしとくわ
482:デフォルトの名無しさん
07/11/14 14:31:30
>>467 数独はアルゴリズムは簡単で良いけど、ハッシュ表は導入した方が良いよ ちょっとやってみた
#include <iostream>
using namespace std;
main(){
int z,w,l=0,n,i,j,bf[8][81];
int tmp[4][3]={0,1,9, 0,9,1, 8,-1,9, 8,9,-1};
for(n=0;n<4;n++){
for(i=0;i<9;i++)for(j=0;j<9;j++){
z=tmp[n][0]+tmp[n][1]*i+tmp[n][2]*j;
bf[l][z]=bf[l+1][80-z]=i+9*j;}l+=2;}
int x[81],p[81],q[81];for(z=0;z<81;z++)x[z]=rand()%10;
for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<x[z]<<" ";}
cout<<endl<<"のハッシュ値を求める。"<<endl;
int num[10];
for(i=0;i<81;i++)p[i]=9;
for(l=0;l<8;l++){
for(i=0;i<10;i++)num[i]=0;i=1;
for(z=0;z<81;z++){ n=x[ bf[l][z] ];
if(n>0)if(num[n]==0){num[n]=i;i++;}
q[z]=num[n];}
for(i=0;i<81;i++)if(p[i]<q[i])goto end; else if(p[i]>q[i])break;
if(i<81)for(i=0;i<81;i++)p[i]=q[i];end:}
unsigned int rh[81][9],hash=0;
for(z=0;z<81;z++)for(i=0;i<9;i++)rh[z][i]=(rand()<<16)+rand();
for(z=0;z<81;z++)hash^=rh[z][p[z]];
for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<p[z]<<" ";}
cout<<"\nと変形され\nハッシュ値は"<<hash<<endl;}
483:デフォルトの名無しさん
07/11/14 14:35:23
URLリンク(www10.atwiki.jp)
URLリンク(www.nurs.or.jp)
URLリンク(www.nurs.or.jp)
URLリンク(www29.atwiki.jp)
URLリンク(www.geocities.jp)
484:デフォルトの名無しさん
07/11/14 14:37:14
ハッシュ表があれば調べる局面が、1/8以下に出来るよ
すぐ解答が出る場面では逆に鈍くなると思うけど、0.5秒以上かかるならハッシュ表使ったら速いと思うよ
485:デフォルトの名無しさん
07/11/14 14:52:57
>>481
教授公認だから問題無しw
486:デフォルトの名無しさん
07/11/14 14:58:32
>>485
「ひねくれた教授」が公認なの?
487:デフォルトの名無しさん
07/11/14 15:09:02
474「宿題を2chに丸投げしておk?」
教授「おk。公認するよん」
こんな感じか
488:デフォルトの名無しさん
07/11/14 15:11:47
底辺大学の教授ってそんなもんなのか
489:デフォルトの名無しさん
07/11/14 15:24:06
[1] 授業単元:情報技術
[2] 問題文:
「キーボードから以下の整数値を入力し,最大値を表示するプログラムを作成せよ
キーボードから入力する値
25 , 6 , 45, 18 , 57, 5
ヒント
for文を用いてキーボードから数値を読み込みながら,
if文を使って読み込んだ数値がそれまでに読み込んだ
数値の最大値maxよりも大きければその値を更新する
・・・・・・
for(i=?;i<=?;??){
scanf(?????);
if( ? > max) ???????;
}
printf(?????);
・・・・・・」
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:すみません、よく分かりません
[3.3] 言語:C
[4] 期限:2007年11月16日12:00
[5] その他の制限:if文、for文あたりの簡単なレベルでお願いします
大学の授業の課題です。
低レベルかもしれませんが、さっぱり分からないので、よろしくお願いします。
490:デフォルトの名無しさん
07/11/14 15:46:17
>>489
これが大学の授業か……
491:デフォルトの名無しさん
07/11/14 15:49:14
>>486
>>487
いや、教授自身が2ちゃんねらーw
だからここに問題が漏れてる事も知ってる。というより本人が自分で回答とかしてるしw
492: ◆30lFlSJfAI
07/11/14 15:54:27
[1] 授業単元: 情報基礎
[2] 問題文:下記の問題のプログラミングを作成してください。
関数y=1/xをシンプソン法により、区間[1,2] で積分せよ。
このとき、区切りの数を変えることによって精度が変化することを確認せよ。
ただし、解析的な解はloge2=0.69314718である
[3] 環境
OS: Windows
言語: C言語のみ
[4] 期限: ([2007年11月21日まで]
[5] 制限は特にありません。
プログラミング初心者にもかかわらず大学でこのような課題を出されました。
来週までで申し訳ないのですが、よろしくお願いします。
493:デフォルトの名無しさん
07/11/14 15:54:42
_,,..r'''""~~`''ー-.、
,,.r,:-‐'''"""~~`ヽ、:;:;:\
r"r ゝ、:;:ヽ
r‐-、 ,...,, |;;;;| ,,.-‐-:、 ヾ;:;ゝ
:i! i! |: : i! ヾ| r'"~~` :;: ::;",,-‐‐- `r'^!
! i!. | ;| l| ''"~~ 、 i' |
i! ヽ | | | ,.:'" 、ヽ、 !,ノ
ゝ `-! :| i! .:;: '~~ー~~'" ゙ヾ : : ::|
r'"~`ヾ、 i! i! ,,-ェェI二エフフ : : :::ノ~|`T <イエーイ、坂本直志君見てるー?
,.ゝ、 r'""`ヽ、i! `:、 ー - '" :: : :/ ,/
!、 `ヽ、ー、 ヽ‐''"`ヾ、.....,,,,_,,,,.-‐'",..-'"
| \ i:" ) | ~`'''ー---―''"~
ヽ `'" ノ
494:デフォルトの名無しさん
07/11/14 16:01:02
>>491
学籍番号は何番?
495:デフォルトの名無しさん
07/11/14 16:09:34
教授職って何気に終身雇用なんだよね
同じ空気吸ってても一山いくらで売られていく子羊たちとの間には明らかな次元断層がある
496:デフォルトの名無しさん
07/11/14 16:12:35
日本語でおk
497:shin
07/11/14 16:15:56
>>457 >>458 >>459
ありがとうございました!!!
498:デフォルトの名無しさん
07/11/14 16:18:09
>>474 課題1-1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define STUDENT_NUM_MAX 99999
int get_rand_score(void){
int i, score=0;
for(i=0;i<20;i++) score+=rand()%6;
return score;
}
int main(int argc, char *argv[]){
int i, index, student_num;
if(argc!=2){
fprintf(stderr, "\nUsage : %s <number>\n", argv[0]);
fprintf(stderr, "%5s : number (1-%d)\n", "", STUDENT_NUM_MAX);
return 1;
}
if(sscanf(argv[1], "%d%n", &student_num, &index)<1 || argv[1][index]!='\0'){
fprintf(stderr, "\nERROR : Invalid parameter. %s\n", argv[1]);
return 2;
}
if(student_num<1 || student_num>STUDENT_NUM_MAX){
fprintf(stderr, "\nERROR : Out of range (1-%d). %d\n", STUDENT_NUM_MAX, student_num);
return 3;
}
srand(time(NULL));
for(i=1;i<=student_num;i++) printf("C%05d %d\n", i, get_rand_score());
return 0;
}
499:デフォルトの名無しさん
07/11/14 16:49:44
>>492
シンプソン公式がわかってれば単純なforループの問題でしかないから。
500:デフォルトの名無し
07/11/14 17:13:23
[1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク): アスキーコードの値を対応する文字を組み合わせた
一覧表を出力するプログラムを作成せよ。
アスキーコードの範囲は「32」〜「126」、スペースには△を出力。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 今週中にお願いします。
[5] その他の制限: なし
501:デフォルトの名無しさん
07/11/14 17:24:27
#include<stdio.h>
int main(void){
int i;
printf(" 32 △\n");
for(i=33;i<127;i++)
printf("%3d %c\n",i,i);
return 0;
}
502:デフォルトの名無しさん
07/11/14 17:30:15
>>474
課題 1-3 1-4 1-5
URLリンク(kansai2channeler.hp.infoseek.co.jp)
503:デフォルトの名無しさん
07/11/14 19:03:55
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):stackプログラムを配列ではなく、連結リストを用いて、作成せよ。
配列で実現する時に比べて、その利点及び欠点をのべよ。
stackプログラム:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio .NET 2005
[3.3] 言語:c++
[4] 期限:2007年11月16日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで
よろしくおねがいします。
504:デフォルトの名無しさん
07/11/14 19:14:44
>>492
#include <stdio.h>
#include <math.h>
double func1(double x)
{
return 1.0/x;
}
double simpson(double a, double b, int n, double (*func)(double))
{
double odd = 0, even = 0, h = (b - a)/n;
int i;
for(i = 1; i < n; i += 2)
odd += func(a + i*h);
for(i = 2; i < n; i += 2)
even += func(a + i*h);
return h/3.0*(func(a) + func(b) + 4*odd + 2*even);
}
int main(void)
{
int n;
for(n = 2; n <= 1024; n *= 2)
printf("%4d : %.8f\n", n, simpson(1.0, 2.0, n, (double (*)(double))func1));
return 0;
}
505:デフォルトの名無しさん
07/11/14 20:17:36
>>503
URLリンク(kansai2channeler.hp.infoseek.co.jp)
506:デフォルトの名無しさん
07/11/14 20:58:35
>>460
本当にありがとうございます。
助かりました。
507:デフォルトの名無しさん
07/11/14 21:26:19
どなたか>>479を宜しくお願いします。
周りと比べてかなりレベルの低い問題だとは思いますが
まったくわからないのでお願いします。
508:デフォルトの名無しさん
07/11/14 21:45:15
>>507
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
using namespace std;
struct succ{ int operator()(){ return _n++; } succ():_n(1){};int _n; };
struct print{
double qube( const int & n ) {
double x = 0, xn = 1;
while ( fabs( x-xn ) > 1.0e-8 ) { x = xn; xn = x-(x*x*x-n)/(3.0*x*x ); }
return xn;
}
void operator()( const int & n ){
cout<<setw(4)<<n<<" "<<setw(4)<<n*n<<" "<<setw(9)<<1.0/n<<" "<<setw(9)<<sqrt(n)<<" "<<setw(9)<<qube(n)<<endl; }
};
int main( int argc, char ** args ){
const int N = 25;
int v[N]={};
cout << setw(4) << "n"<<setw(4)<<"n^2"<<setw(9)<<"1/n"<<setw(9)<<"n^1/2"<<setw(9)<<"n^1/3"<<endl;
generate( v, v+N, succ());
for_each( v, v+N, print());
return 0;
}
509:デフォルトの名無しさん
07/11/14 21:59:04
>>474 課題1-5
合格最低点を引数に取り、受験番号順に合格者リストを表示するプログラムを作りなさい。
void pass(int border)
{
char number[7];
int score;
while (scanf("%s %d", number, &score) == 2)
if (score >= border)
printf("%s\n", number);
}
510:デフォルトの名無しさん
07/11/14 21:59:29
[1]プログラミング2
[2]
以下は、下記フォーマットにしたがってデータが収められている配列を表現するためのプログラムです。また、そのフォーマットを持つ配列を引数として、有効なレコード数(つまり配列の0番目の値)を返り値として返す関数
int list_len(const int * list)
を作成し、プログラムを完成させなさい。
フォーマット(score table)
配列の要素 内容(ただしi≧0)
0番目 有効なレコード数(K)
5*(i-1)+1番目 i番目の学生の英語の得点
5*(i-1)+2番目 i番目の学生の国語の得点
5*(i-1)+3番目 i番目の学生の数学の得点
5*(i-1)+4番目 i番目の学生の理科の得点
5*(i-1)+5番目 i番目の学生の社会の得点
511:デフォルトの名無しさん
07/11/14 22:00:20
サンプルコード
#define MAX 101 /* 得点を入れる配列の最大値 */
#define REC 5 /* 1レコードの要素数 */
#define SUB 6 /* 科目名の文字数 */
char sub[REC][SUB]={"英語","国語","数学","理科","社会"};
/* 関数作成 */
int main() {
/* 変数は適切に宣言する */
int score[MAX]={3, /* レコード数 */
45, 60, 36, 72, 53, /* 1レコード目 */
87, 48, 77, 69, 91, /* 2レコード目 */
23, 54, 49, 58, 62}; /* 3レコード目 */
p=score+1;
size=list_len(score);
/* ここに書く */
}
実行例
+----++----++----++----++----+
|英語||国語||数学||理科||社会|
+----++----++----++----++----+
| 45|| 60|| 36|| 72|| 53|
+----++----++----++----++----+
| 87|| 48|| 77|| 69|| 91|
+----++----++----++----++----+
| 23|| 54|| 49|| 58|| 62|
+----++----++----++----++----+
512:デフォルトの名無しさん
07/11/14 22:02:19
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio 2005
[3.3] 言語:C言語
[4] 期限:2007年11月17日まで
[5] その他の制限ポインタのあたりまで
513:デフォルトの名無しさん
07/11/14 22:10:43
>>508
ありがとうございます。
本当に助かりました。
514:デフォルトの名無しさん
07/11/14 22:28:24
>>431
どなたかお願いします。
515:デフォルトの名無しさん
07/11/14 22:39:28
>>505
ありがとうございました。
516:デフォルトの名無しさん
07/11/14 22:43:31
>>510
#include <stdio.h>
#define MAX 101 /* 得点を入れる配列の最大値 */
#define REC 5 /* 1レコードの要素数 */
#define SUB 6 /* 科目名の文字数 */
char sub[REC][SUB]={"英語","国語","数学","理科","社会"};
/* 関数作成 */
int list_len(const int * list);
int list_len(const int * list)
{
return list[0];
}
int main()
{
/* 変数は適切に宣言する */
int size, x, y;
int *p;
int score[MAX]={3, /* レコード数 */
45, 60, 36, 72, 53, /* 1レコード目 */
87, 48, 77, 69, 91, /* 2レコード目 */
23, 54, 49, 58, 62}; /* 3レコード目 */
517:デフォルトの名無しさん
07/11/14 22:44:10
>>516
p=score+1;
size=list_len(score);
/* ここに書く */
for (x=0 ; x<REC ; x++)
{
printf("+----+");
}
printf("\n");
for (x=0 ; x<REC ; x++)
{
printf("|%s|", sub[x]);
}
printf("\n");
for (x=0 ; x<REC ; x++)
{
printf("+----+");
}
printf("\n");
for (y=0 ; y<size ; y++)
{
for (x=0 ; x<REC ; x++)
{
printf("|%4d|", *p);
518:デフォルトの名無しさん
07/11/14 22:44:41
>>517
p++;
}
printf("\n");
for (x=0 ; x<REC ; x++)
{
printf("+----+");
}
printf("\n");
}
}
519:デフォルトの名無しさん
07/11/14 22:52:25
>>431
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void ten2two(int num)
{
if (num==0)
return;
ten2two(num/2);
if(num&1)
{
printf("1");
}
else
{
printf("0");
}
}
int main()
{
int num;
scanf("%d", &num);
ten2two(num);
printf("\n");
return 0;
}
520:デフォルトの名無しさん
07/11/14 23:03:19
ただ .exe 立ち上げさせるだけのプログラム作りたいんだけど、何かいい方法ある?
521:デフォルトの名無しさん
07/11/14 23:07:05
>>431
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int two2ten(char *buf)
{
unsigned int num=0, i;
for (i=0 ; i<strlen(buf) ; i++)
{
num*=2;
if (buf[i]=='1')
{
num++;
}
}
return num;
}
int main()
{
char buf[100];
scanf("%s", buf);
printf("%d\n", two2ten(buf));
return 0;
}
522:デフォルトの名無しさん
07/11/14 23:07:31
>>520
ダブルクリックでおk
523:デフォルトの名無しさん
07/11/14 23:08:50
>>522
いや、ごもっともなんだけどね。。。
どういう命令をすればやってくれるのかなって思って。
524:デフォルトの名無しさん
07/11/14 23:12:27
>>520
#include <stdlib.h>
int main()
{
system("%systemroot%\\NOTEPAD.EXE");
return 0;
}
525:デフォルトの名無しさん
07/11/14 23:12:47
>>523
system
526:デフォルトの名無しさん
07/11/14 23:16:57
>>524, 525
ありがとお。こんなの知らなかったお。
527:デフォルトの名無しさん
07/11/14 23:21:59
>>477
当方の環境は WindowsXP / 処理系は cygwin(gcc 3.4.4) です。
乱数は M系列乱数、ガウス分布化は局座標法を使用しています。
仕入れ部数を600部から1000部まで1ずつ変化させ、それぞれに
大して 6 万回の試行を行い、平均を算出しています。
さらに、ピークをわかりやすくするために隣接3区間の平均をもって
平準化しています。(が、はっきりしませんでした。)
結果だけのべると、800 より少し多いところ(830〜850) に極大があるようです。
実行すると仕入れ部数と利益が対になって出力されます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(参考文献)C言語による最新アルゴリズム事典/奥村晴彦/技術評論社 1991 ISBN4874084141
528:デフォルトの名無しさん
07/11/14 23:32:29
>>474 課題1-4
合格最低人数を引数にして合格最低点を求めるプログラムを作成しなさい。
但し、引数のとりかたは付録を参照すること。
void border(int count)
{
char number[7];
int score;
score = 101;
while (count > 0 && scanf("%s %d", number, &score) == 2)
count--;
printf("%d\n", score);
}
529:デフォルトの名無しさん
07/11/14 23:33:08
>>479
#include <stdio.h>
#include <math.h>
int main()
{
int n;
printf(" n n*n 1/n sqrt(n) n∧(3/1)\n");
for (n=1 ; n<=25 ; n++)
{
printf("%2d ",n);
printf("%3d ",n*n);
printf("%.5f ",(float)1/n);
printf("%.5f ",sqrt((float)n));
printf("%.5f ",powf((float)n, (float)1/3));
printf("\n");
}
return 0;
}
530:デフォルトの名無しさん
07/11/15 00:31:07
>>474 課題1-1
99999 以下の整数の引数をとり、受験番号を C00001 から順に C00002 のように引数の数だけ発生させ、
さらに各受験番号に対して乱数で発生させた点数を組み合わせたテストファイルを作るプログラムを作りなさい。
但し、点数は、 0 点から 5 点までを乱数で 20 回発生させ和を取ることで求めなさい。
引数のとりかた、乱数の発生の仕方は付録を参照のこと。
void list(int count)
{
int number, score, i;
for (number = 1; number <= count; number++) {
score = 0;
for (i = 0; i < 20; i++)
score += myrand();
printf("C%05d %d\n", number, score);
}
}
531:デフォルトの名無しさん
07/11/15 01:24:00
>>479
当方の環境は WindowsXP / 処理系は cygwin(gcc 3.4.4) です。
C++ の書式設定を駆使しています。3 項演算子をネストさせています。
ので、宿題の答えとしては難ありですが、細かいところまで題意を満たす
ためには致し方なかったのでした。すみません。
詳しめの参考書を見てください。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
532:デフォルトの名無しさん
07/11/15 01:36:26
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
unsigned long long 型の x, y に対して
x^2 を y で割った余り計算しなさい。
ただし x^2 がオーバーフローする
可能性があることに注意すること。
[3] 環境
[3.1] OS: Windows (Cygwin)
[3.2] コンパイラ名とバージョン: gcc 4.0
[3.3] 言語: どちらでも可
[4] 期限: 16日まで
[5] その他の制限: 特にありません
おねがいします
533:デフォルトの名無しさん
07/11/15 01:57:19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 4.0
[3.3] 言語: C
[4] 期限: 11/16 pm5:00
[5] その他の制限: 特にありません。
よろしくお願いします。
534:デフォルトの名無しさん
07/11/15 02:14:51
メイン関数において、2つの放物線
y=ax2+bx+c
y=px2+qx+r
の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。
関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし
てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場
合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が
有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数
から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個
存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。
よろしくお願いします。。
535:デフォルトの名無しさん
07/11/15 03:48:36
移項して判別式で判定すりゃいいんだから、>>433のを適当に変えればいいだけだろ。
536:デフォルトの名無しさん
07/11/15 03:54:15
>>534
あの、>>460 に問題がありましたら何がまずいのか教えてください。
537:デフォルトの名無しさん
07/11/15 03:58:19
>>474 課題1-3
点数表を読み込み、点数の高い順に出力するプログラムを作成しなさい。
プログラムにおいて点数表の容量を制限してはいけない。
コンピュータのメモリが許す限り大きな点数表も表示できること。
int compare(const char *a, const char *b)
{
return atoi(b + 7) - atoi(a + 7);
}
void rank(void)
{
int size, count;
char *buffer;
fseek(stdin, 0L, SEEK_END);
size = 10;
count = ftell(stdin) / (size + 1);
buffer = (char *)calloc(count, size);
fseek(stdin, 0L, SEEK_SET);
fread(buffer, size, count, stdin);
qsort(buffer, count, size, compare);
fwrite(buffer, size, count, stdout);
free(buffer);
}
538:デフォルトの名無しさん
07/11/15 07:02:14
>>532
#include <iostream>
using namespace std;
#define N 4294967295 // 2^32 - 1
unsigned int amari(unsigned int x, unsigned int y){
int k=x-y;
if(k<0)k=-k;
if(x>k)x=k;
k=N/x;
int p=x/k,l=x%k;
return ((x*k)%y)*p+((x*l)%y)%y;}
main(){
int x=97,y=123;
cout<<amari(x,y)<<" "<<(x*x)%y;
}
539:538
07/11/15 07:28:16
バグがあったよ
540:デフォルトの名無しさん
07/11/15 07:44:16
あと型が違うんじゃね?
541:デフォルトの名無しさん
07/11/15 10:01:04
>>494
07KC189
542:デフォルトの名無しさん
07/11/15 11:57:29
画像の指定範囲を決めてそこだけを出力するプログラム教えてください。
543:デフォルトの名無しさん
07/11/15 12:21:54
[1] 授業単元: 確率論
[2] 問題文:
ここに書きました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
図はこうです
URLリンク(toku.xdisc.net)
[3] 環境
[3.1] OS: LINUX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月15日24:00
[5] その他の制限:
お願いします。
544:538
07/11/15 13:48:07
#include <iostream>
using namespace std;
typedef unsigned long int Nsu;
Nsu N;
Nsu amari(Nsu x, Nsu y){
int a;
x%=y;
a=x-y;
if(a<0)a=-a; if(x>a)x=a;
a=N/x;
int p=x/a, q=x%a , r=0;
for(int i=0;i<p;i++){r+=(a*x)%y; r%=y;}
r+=(q*x)%y; r%=y;
return r;}
main(){
N=-1;
Nsu x,y;
x=(1<<16)-17;
y=(1<<14)-3;
cout<<amari(x,y)<<" "<<(x*x)%y;
}
545:デフォルトの名無しさん
07/11/15 15:14:41
>>541
存在しない学籍書いてるんじゃねーよ
04kc〜06kcのどれかだろ? 2年〜4年のどれかなんだから
546:デフォルトの名無しさん
07/11/15 16:45:36
>>543
とりあえず「重き」ってなんなんだ?
「重さ」だよな……
それともオレの知らない専門的な言い回しなのか……
547:デフォルトの名無しさん
07/11/15 16:51:37
>>543
>>257 >>258 でダメな理由は?
548:デフォルトの名無しさん
07/11/15 17:04:22
重みじゃないの?
549:デフォルトの名無しさん
07/11/15 17:07:26
>>544
x%y が0の場合にゼロ除算
550:デフォルトの名無し
07/11/15 17:27:31
1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
文字列を正数に変換せよ。
入力が空の場合は処理を終了。「入力されていません」と表示。
入力の最大入力桁数は4バイトとし、桁あふれに対して「4文字で入力してください」と表示。
入力が半角数字以外に対しては「半角数字以外入力できません」と表示。
入力がゼロの場合は「0は入力できません」と表示。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 4.0
[3.3] 言語: C言語
[4] 期限: 今週中にお願いします。
[5] その他の制限: 特にありません
551:デフォルトの名無しさん
07/11/15 17:37:23
>>550
突っ込むべき部分があるな
入力の最大入力桁数は四バイト? それとも四文字?
-129のような文字列は129に変換?
129を変換したあとの数字は、1290? それとも0129?
552:デフォルトの名無しさん
07/11/15 18:56:30
>>550
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int get_value(void){
char buf[4+1+1]; // 4文字オーバーチェック + 終端 \0
int i, value=0, buflen;
fgets(buf, sizeof(buf), stdin);
buflen=strlen(buf);
if(buf[buflen-1]=='\n') buf[--buflen]='\0';
if(buflen<=0){ puts("入力されていません"); return -1; }
if(buflen>4){ puts("4文字以内で入力してください"); return -1; }
for(i=0;buf[i];i++){
if(!isdigit(buf[i])){ puts("半角数字以外入力できません"); return -1; }
value=value*10+buf[i]-'0';
}
if(value==0) puts("0は入力できません");
return value;
}
int main(void){
int value;
value=get_value();
if(value>0) printf("\n%d\n", value);
return 0;
}
553:デフォルトの名無しさん
07/11/15 19:41:05
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
サンプルプログラムは、窓口が1個で,行列が窓口の前にできる場合に,時間と共に窓口の前にできる行列の様子を調べるものである.
(1)サンプルプログラム内の乱数処理を srand関数とrand関数を使用するように書き換えなさい。
(2)参考プログラムを元に,パラメータs, q, aを構造体のメンバ として扱うプログラムBに変更しなさい.
(3)作成したプログラムを変更し,窓口が2個の場合にも(すなわち1個または2個の場合に)対応できるようにしなさい。
このとき,窓口の個数(1または2)もパラメータLやM, シミュレーション時間と同様に入力して指定できるようにしなさい.
なお,新しく到着した客は,最も短い行列(待っている人が少ない窓口)に並ぶものとする.
全ての窓口の行列が同じ長さの場合には,一様な確率 (窓口が2個の場合は1/2の確率)で並ぶ窓口を決定するものとする.
(4)窓口が3個以上にも対応できるようにしなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限: 明日までです…
[5] その他の制限: 特に無いと思います
554:デフォルトの名無しさん
07/11/15 20:10:23
>>547
実際はね、重きじゃなくて入力データなんです。
入力データ(配列でいうとdata[50][5])が移動間を動く感じなんですけど
各状態にデータがあって、その入力データを各状態のデータによって
計算して出された値を各移動確率とかけるというわけなんですけど。
で書いてくださったプログラムにおいて、
for(cnt=0;cnt<50;cnt++){それを50回
for(i=0;i<7;i++)cal_next_gs(list[i]);は7つの状態間で1回の移動につき確率計算
}
ってのはわかるんです。1次元配列として引数として渡せば
できるのかなーと今思いました。
for(cnt=0;cnt<50;cnt++){それを50回
for(i=0;i<7;i++)cal_next_gs(list[i],data[cnt]);は7つの状態間で1回の移動につき確率計算
}
void cal_next_gs(struct gstate *gs,float data[5])
{
//計算して移動確率を計算
}
でいけそうな感じがします。
555:デフォルトの名無しさん
07/11/15 21:27:17
>>527
ありがとうございました。
556:デフォルトの名無しさん
07/11/15 21:38:48
>>554
何をいいたいのか、いまいち分からないんだが、
どんな入力に対してどんな出力が欲しいの?
電気回路上の電流のシミュレーション?
557:デフォルトの名無しさん
07/11/15 21:58:18
入力に対して隠れマルコフモデル(HMM)を使って確率を出すんですけど、
この例では3状態のHMMと2状態のHMMを使って最終的にendにたどりつくとこの
状態の確率が出力値となるんです。
で1つの移動に対して入力1フレームを正規分布によって評価し確率を出す。
その正規分布をHMMで評価するんです。
そのHMMには平均分散、移動確率とあるんですけど、
平均分散を正規分布で用いて確率をだして、移動確率をかけて
最終的な移動の確率となるんです。
前につくってもらったのが移動確率でのみの計算でした
558:デフォルトの名無しさん
07/11/15 22:01:52
神経衰弱を行うゲームを作成すること。
ただし、カードは52枚全て使用し、絵柄の
区別は無いものとする。
このプログラムをお願いします。(^_^)
559:デフォルトの名無しさん
07/11/15 22:02:55
すみません、どなたか>>489をお願いします。
自分でもあつかましいと承知しているのですが、
どうにも分からないので・・・。
コンパイラ名はVS2005のようです。
よろしくお願いします。
560:デフォルトの名無しさん
07/11/15 22:12:59
557ですけど
頼んだのは移動してくる確率が2つだったらグリッドで計算できたんですけど
3つの場合どうすればいいのかわからなくて。
しかも下のやつも計算しなくてはならなくて。
なので質問させていただきました
561:デフォルトの名無しさん
07/11/15 22:30:13
>>543
>この(startから状態1への移動確率)X(重き)と
>(状態1の状態確率)X(状態1から状態1への移動確率)X(重き)と、(状態11の状態確率)X(状態11
>から状態1への移動確率)X(重き)の和が状態1の状態確率となります。
状態1ってループしてるけど単純にこれでいいの?
(状態1の状態確率)X(状態1から状態1への移動確率)X(状態1から状態1への移動確率)X(重き)
...
とかは考えなくてもよし?
562:デフォルトの名無しさん
07/11/15 22:36:35
>>543
>>246 の問題だと矢印にくっつく数値(状態遷移確率)が固定だったのを
時間(移動回数)によって矢印にくっつく数値(状態遷移確率)を変化させたいと言う事でいい?
563:デフォルトの名無しさん
07/11/15 22:40:42
>>561
考えなくていいです。
>>562
そうです。
実際は入力に対して各HMMの1つの状態の平均分散から
正規分布により出力確率を出してそのHMMから移動確率を出して
確率X移動確率なんですけど
簡単のために、出力確率を重きとしてるわけです。
564:デフォルトの名無しさん
07/11/15 22:43:05
移動確率を出す関数だけ。
enum states { START, FIRST, SECON, THIRD, TENTH, ELEVE, E_N_D };
enum states movProbMap( enum states from, enum states to )
{
return from == START ? (to == FIRST ? 0.5 : to == TENTH ? 0.5 : 0.0) :
from == FIRST ? (to == FIRST ? 0.6 : to == SECON ? 0.3 : to == ELEVE ? 0.1 : 0.0) :
from == SECON ? (to == SECON ? 0.7 : to == THIRD ? 0.3 : 0.0) :
from == THIRD ? (to == THIRD ? 0.8 : to == E_N_D ? 0.2 : 0.0) :
from == TENTH ? (to == TENTH ? 0.6 : to == ELEVE ? 0.4 : 0.0) :
from == ELEVE ? (to == ELEVE ? 0.7 : to == FIRST ? 0.2 : to == E_N_D ? 0.1 : 0.0) :
0.0;
}
565:デフォルトの名無しさん
07/11/15 22:44:10
激しく無意味だな。スマン無視してくれ。
566:デフォルトの名無しさん
07/11/15 22:47:07
>>564
これは一体何でしょう?
実数を返したいんじゃないの???
567:デフォルトの名無しさん
07/11/15 22:55:57
enum states -> double
で。
568:デフォルトの名無しさん
07/11/15 23:10:49
>>543
使い方は data.txt をリダイレクトするだけ
lzh 内のファイル名間違えたけど気にしない
ans478 < data.txt
URLリンク(kansai2channeler.hp.infoseek.co.jp)
569:デフォルトの名無しさん
07/11/15 23:32:51
>>568
ありがたいんですけど
これちょっと使いかたわからなくて。
gcc ans478.cして実行のときになにか入力しないといけないんですか?
570:デフォルトの名無しさん
07/11/15 23:35:27
本来なら
ans478
と打って実行するところを
ans478 < data.txt
のようにしてdata.txtを標準入力にリダイレクト
571:デフォルトの名無しさん
07/11/15 23:36:42
>>489
#include<stdio.h>
int main(void){
int i, num, max=0;
for(i=20071114;i<=20071114+6-1;i++){
scanf("%d", &num);
if(num>max) max=num;
}
printf("%d\n", max);
return 0;
}
572:デフォルトの名無しさん
07/11/15 23:39:49
>>570
できました。。。
さっきできなかったのに。
ありがとうございます。
自分で作りなおしてから
できなかったらこれも試してみます
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4707日前に更新/222 KB
担当:undef