07/08/31 01:10:34
>>126
日本語でOk
128:デフォルトの名無しさん
07/08/31 02:01:56
>>101
日付チェックはしてない。グレゴリオ暦が使われた年以降。
int leap(int y)
{
return (y%4==0)?(y%100==0)?(y%400==0)?1:0:1:0;
}
int days(int y,int m,int d)
{
int dom[2][12]=
{{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
int day=0,i,j;
j=leap(y);
for(i=0;i<m-1;i++) day+=dom[j][i];
day+=d;
return day;
}
main()
{
int y,m,d;
scanf("%d %d %d",&y,&m,&d);
printf("days=%d\n",days(y,m,d));
}
129:デフォルトの名無しさん
07/08/31 07:51:47
>>101
#include<stdio.h>
int f(int y,int m,int d){
if(m<3)
y--,m+=12;
return y*365+y/4-y/100+y/400+(m+1)*306/10+d-428;
}
int leap(int y){
return f(y,3,1)-f(y,2,29);
}
int days(int y,int m,int d){
return f(y,m,d)-f(y,1,0);
}
int main(void){
int ymd;
printf("yyyymmdd="); scanf("%d",&ymd); printf("leap=%d\ndays=%d\n",leap(ymd/10000),days(ymd/10000,ymd%10000/100,ymd%100));
return 0;
}
#include<stdio.h>
#define PI 3.1415926535897932384626433832795
double rad(double s){
return s*PI/180;
}
double deg(double r){
return r*180/PI;
}
int main(void){
double s;
printf("s="); scanf("%lf",&s); printf("rad(s)=%.9f\ndeg(rad(s))=%.9f\n",rad(s),deg(rad(s)));
return 0;
}
130:デフォルトの名無しさん
07/08/31 09:41:06
>>73 バイナリフォーマットにも対応できるように作りなおしてみた
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int pgm_get_word(FILE *fp, char buf[], int buf_size){
int i=0, moji;
while(i<buf_size-1 && (moji=getc(fp))!=EOF){
if(isspace(moji)){ if(i>0) break; }
else if(moji=='#'){
fscanf(fp, "%*[^\n]");
if(i>0) break;
}else{ buf[i++]=moji; }
}
buf[i]='\0';
if(i>=buf_size-1) while((moji=getc(fp))!=EOF && !isspace(moji)) ;
return (i>0);
}
int pgm_info(const char *filename, char *pformat, int *pwidth, int *pheight, int *pdepth){
FILE *fp;
char format[3+1], width[10+1], height[10+1], depth[4+1];
int ret=0;
fp=fopen(filename, "rb");
if(fp!=NULL){
if(pgm_get_word(fp, format, sizeof(format)) && pgm_get_word(fp, width, sizeof(width)) &&
pgm_get_word(fp, height, sizeof(height)) && pgm_get_word(fp, depth, sizeof(depth)) ){
sprintf(pformat, "%s", format); *pwidth=atoi(width); *pheight=atoi(height); *pdepth=atoi(depth);
ret=1;
}
fclose(fp);
}
return ret;
}
131:デフォルトの名無しさん
07/08/31 11:01:58
これを76の1のようにずらしたいのですが
#include <stdio.h>
void arr_cycle(int arr[], int len)
{
int i, temp;
temp = arr[len-1];
for(i=len-1;i>0;--i)
arr[i] = arr[i-1];
arr[0] = temp;
}
int main(void) {
int i;
int n;
int data[10];
scanf("%d", &n);
for(i = 0;i < n;i++)
scanf("%d",&data[i]);
arr_cycle(&data[i], n);
for(i=0;i<n;i++)
printf("%d ",data[i]);
return 0;
}
132:デフォルトの名無しさん
07/08/31 11:46:32
[1] 授業単元: c言語
[2] 非負整数の不定長配列 arr[] 中で、全てのデータが閾値 thre 以上かどうかの真偽値(0または1)を返却する関数 arr_thre_all() を作成する。終端番兵は、EOA(-1) とする。反復変数を用いず、ポインタのアドレス演算を用いる。
システム上では、入力の先頭をthre、それ以降はarrとする。入力の終了はEOA(-1)とする。全て閾値以上の場合は 1 、そうでない場合は 0 を出力するプログラムを作れ。
入力例:1 2 3 4 1 -1
出力例:1
[3.1] WinXP
[3.2] bcc
[3.3] C
[4]8/31
133:デフォルトの名無しさん
07/08/31 12:02:54
>>131
arr_cycle(data,n);
134:デフォルトの名無しさん
07/08/31 12:39:47
>>131
ありがとうございます。
135:デフォルトの名無しさん
07/08/31 12:48:51
[1] 授業単元:
[2] 問題文:1~10までの数字を2回入力し1番目と2番目までの入力された値を足し算して表示させる
[3.1] WinXp
[3.2] Borland
[3.3] C++
[5] その他の制限:2番目に入力される値は1番目よりも小さくなるようにする。
8 4 と入力されたら
8+7+6+5+4と計算され、30と表示される感じです
136:デフォルトの名無しさん
07/08/31 12:52:11
>>33の2ですが
URLリンク(kansai2channeler.hp.infoseek.co.jp)
和がうまく求めたいのですが、どうすればいいのでしょうか?
137:デフォルトの名無しさん
07/08/31 13:00:10
>>136
> int iary[] ={0};
これだとそもそも一個しか入力できないわけだが。
入力ロジックは兎も角、積算ロジックはぱっと見良さそうだよ。
138:デフォルトの名無しさん
07/08/31 13:30:57
サイズの問題以外にも配列にEOAを入れないのはまずいだろ。
139:136
07/08/31 14:29:34
どのように入力を変えればよいのでしょうか?
140:デフォルトの名無しさん
07/08/31 14:46:34
int iary[数値] ={0};
ってやればいいんじゃない?
141:デフォルトの名無しさん
07/08/31 14:55:26
入力の終了条件を-1が入力されたらにする。
142:136
07/08/31 15:04:55
ちょっとよくわからないので書いてくれませんか?
143:デフォルトの名無しさん
07/08/31 15:23:51
>>136のソース見て、usepointersumなんて言う情けない関数名
を見て、「あれ、どっかで俺、こんな関数名の入ったソースを張ったぞ」
と思って見返したら>>81で>>33に向けて張ったソースの一部じゃねぇか
どおりで<ctype.h>が意味無くincludeされてるわ。
ファイルそのものUpしてあげる
URLリンク(kansai2channeler.hp.infoseek.co.jp)
それで、いったい何をしたいのか、事細かく質問しなよ
何が分からないのかがわからないの?まぁ、良いや。
ついでに>>33よ、まるで自分が書いたようにソースファイルをupしちゃだめだよ
144:136
07/08/31 15:31:29
>>143
すいませんでした。
ソースから数値を読み取るんじゃなくて、コンパイラから入力したいのですが
145:デフォルトの名無しさん
07/08/31 15:36:13
>>144
もう我慢ならねえ!!!!
コマンドラインから受け取るようにしろよ、この穀つぶしが!!!!!!!
146:143
07/08/31 16:06:11
「コンパイラから入力したいのですが」の意味が俺にはわからない。
147:デフォルトの名無しさん
07/08/31 16:30:45
コンパイラが対話式とみた
148:デフォルトの名無しさん
07/08/31 16:48:30
コンパイルオプションで -Dxxx=yyy とか付けるんじゃない?
149:デフォルトの名無しさん
07/08/31 17:41:01
統合開発環境で、デバッグ時に、引数を与えたいが、やり方がわからない。
こうなんじゃないか?
150:デフォルトの名無しさん
07/08/31 19:59:35
最近のコンパイラは賢いな。ESP機能がある。
151:デフォルトの名無しさん
07/09/01 01:14:10
>>132
#include <stdio.h>
#define EOA -1
#define ARRMAX 1024
int arr_thre_all(int* arr, int thre){
while(*arr != EOA) if(*(arr++) < thre) return 0;
return 1;}
int main(void){
int i; int arr[ARRMAX]; unsigned int thre;
scanf("%d", &thre);
for(i = 0; i != ARRMAX; i++){
scanf("%d", &arr[i]);
if(arr[i] == EOA) break;}
i = arr_thre_all(arr, thre);
printf("%d\n", i);
return 0;}
152:デフォルトの名無しさん
07/09/01 02:18:00
#include <stdio.h>
int main(){
int u,l;
while(1){scanf("%d",&u);if(u<11 && u>0){break;}}
while(1){scanf("%d",&l);if(l<u && l>0){break;}}
//printf("%d +%s%d = %d\n", u, (u-l>2)?" ... + ":" ", l, ( u + l )*( u - l + 1 ) / 2);
printf("%u\n", ( u + l )*( u - l + 1 ) / 2);
return 0;}
153:デフォルトの名無しさん
07/09/01 15:53:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
C#でクラスを用いてシューティングゲームを作れ。
スタート・中断・再開ボタン機能を必ず入れ、敵味方と弾は全てオブジェクトとする
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Windows visual studio2005
[3.3] 言語: C#
[4] 期限:9月4日
[5] その他の制限: なし
C#は駄目でしょうか。
C#のソース付きのゲームとかがあればそれを参考にやれるんですが・・・
154:デフォルトの名無しさん
07/09/01 15:54:59
C/C++のみです。C#は他言語です。
155:デフォルトの名無しさん
07/09/01 16:30:32
C#のソース付きのゲームのサンプルってテトリスぐらいしかしらんな~
156:デフォルトの名無しさん
07/09/01 19:03:05
>>153
夏休み中に何をしていたんだ
157:デフォルトの名無しさん
07/09/01 19:14:24
>>153
ガンシューにしてみたら?
158:デフォルトの名無しさん
07/09/01 19:58:00
1対1のガンマンシューティングなんてどうだ?
159:デフォルトの名無しさん
07/09/01 20:50:01
[1] 授業単元:C言語
[2] 問題文: 文字列に含まれるすべての文字を、1つ後のASCⅡコードをもつ文字に置き換えるプログラムを作成する。
例:Nurupo → Ovsvqp
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ: bcc
[3.3] 言語: C
[4] 期限: 9月4日
[5] その他の制限: 特にありません。 よろしくお願いします。
160:デフォルトの名無しさん
07/09/01 21:07:52
>>159
#include <stdio.h>
#define MAX_LENGTH 512
int main(void)
{
char str[MAX_LENGTH] = "Nurupo", buf[MAX_LENGTH];
int i;
for(i=0; str[i]; i++) buf[i] = str[i] + 1;
buf[i] = '\0';
printf("%s → %s", str, buf);
return 0;
}
161:デフォルトの名無しさん
07/09/01 21:08:52
ああ、置き換えるのか・・・仕様とは違うなorz
162:デフォルトの名無しさん
07/09/01 21:16:12
do *p+=1; while(*++p);
適当に置き換えておいてくれ
163:デフォルトの名無しさん
07/09/01 22:39:03
アスキーコード最後の文字はどうするん?
164:デフォルトの名無しさん
07/09/01 22:45:54
何も考えずに1つ後のASCⅡコードをもつ文字にするんだろ
165:デフォルトの名無しさん
07/09/01 22:56:37
[1] 授業単元:C言語
[2] 問題文: 長方形の縦と横の長さ(double型)を引数として受け取り、その長方形の面積(double型)を
返す関数Xを作り、mainから呼び出して動作を確認するプログラムの作成
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月3日 21時
[5] その他の制限: なし
166:デフォルトの名無しさん
07/09/01 23:02:06
#include <stdio.h>
double X(double width, double hight)
{
return width * hight;
}
int main(void)
{
printf("%g", X(10.0, 8.0));
return 0;
}
167:デフォルトの名無しさん
07/09/01 23:50:03
>>155
テトリスでもいいんで教えてもらえないでしょうか。要領さえ分かれば何とかなるんで
>>156
全然違う事の勉強です。
168:デフォルトの名無しさん
07/09/02 00:11:21
>>162
これって1文字目が\0だとPC爆発しないか?
169:デフォルトの名無しさん
07/09/02 00:21:51
しないよ
170:デフォルトの名無しさん
07/09/02 05:25:19
>>167
URLリンク(school.topposystem.co.jp)
のフリーサンプル集のどっかにあったよ。
っていうか、俺もサンプルとして見たかったからダウンしたので
それをupしますね
URLリンク(kansai2channeler.hp.infoseek.co.jp)
171:デフォルトの名無しさん
07/09/02 20:09:48
>>160
お早い回答ありがとうございます!!
おかげで助かりました!
>>162
どこを置き換えればいいかもおしえていただけると助かるのですが
おしえていただけないでしょうか?
172:デフォルトの名無しさん
07/09/02 20:53:33
>>171
void replaceFollower(char * foo)
{
for (unsigned ic = 0; foo[ic] != '\0'; ++ic) {
++foo[ic];
}
}
#include <stdio.h>
int main()
{
char str[] = "Nurupo";
printf("%s\n", str);
replaceFollower(str);
printf("%s\n", str);
return 0;
}
173:36
07/09/02 22:49:56
>>36です.
遅くなりましたが,答えてくださった方ありがとうございます.
無事に課題提出を行うことができました.
実は>>36で書いた課題にはオプション問題がありまして,
自分には全く分からなかったので手を出さなかったのですが….
どのように解答するか気になるので,
もし分かる方がいたらよろしくお願いします.
[1] 授業単元:C言語
[2] 問題文:
二次座標平面において,ランダムに4~5個ほど点が与えられる.
そのような複数の点の最近傍を通る円の方程式を求めよ.
ただし,中心座標(x_0,y_0)は
(1)一番低いy座標よりも下にある.
(2)一番低いx座標よりも左にある.または,一番高いx座標よりも右にある.
{if((x_0<=xmin||x_0<=xmax)&&y_0<=ymin) true;}
を満たすものとする.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:期限なし
[5] その他の制限:計算速度が速い方が好ましい.
174:デフォルトの名無しさん
07/09/02 22:55:35
>>173
最近傍の評価はどうするの?
円と点 n の距離を Dn と置く時
Σ(Dn)
Σ((Dn)^2)
とかそういうのが無いと解けないっぽ
175:36
07/09/02 23:28:37
>>174
評価関数は各自で任意に設定すると言われているのですが….
今回は
Σ(Dn^2)
の最小二乗法でお願いします.
176:デフォルトの名無しさん
07/09/03 00:47:20
[1] 授業単元:C言語
[2] 問題文: 整数aと自然数nを入力してaのn乗を求める。入力は正しく行われるものとする。
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ:Win visual studio2005
[3.3] 言語: C
[4] 期限: 9月5日
[5] その他の制限: --nを使うところまではわかるのですが、どうも上手くできません。
お力を貸していただけると助かります。
177:デフォルトの名無しさん
07/09/03 01:04:59
int factorial(int a,int n){
long int buf=a;
while(n!=0){
buf *=a;
n--;
}
return buf;
}
ただし少しnを大きくしただけでオーバーフローする
178:デフォルトの名無しさん
07/09/03 07:13:30
[1] 授業単元:C言語
[2] 問題文:掛け算の九九の表をファイルprod99.txtに書き込むプログラムを作成する。
[3.1] OS:Windows
[3.2] コンパイラ:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月5日 12時
[5] その他の制限: 特にありません
179:デフォルトの名無しさん
07/09/03 08:34:13
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
仕事は「納期 T、作業時間 W、ペナルティ C」の
三つの情報で特徴付けられるとする。
N 個の仕事が与えられる。これらの仕事を適当に並び替えて
「納期から遅れた時間×ペナルティ」の総和を最小にせよ。
なお、開始の時刻は 0 とする。
入力:
一行目は仕事の総数 N (正の整数、N ≦ 50 としてよい)
二行目から n+1 行目までは仕事の情報 T W C (すべて正の整数)
出力:
最小の「納期から遅れた時間×ペナルティ」の総和。
例:
(入力)
2
1 2 3
1 1 1
(出力)
5
(1番目の仕事をやってから2番目の仕事をやる。両方納期には遅れるが
ペナルティ 5。逆にすると2番目の仕事は納期に間に合うがペナルティ 6)
[3] 環境:特に指定なし(OS環境問わず、C/C++どちらでも可)
[4] 期限:9月10日
[5] その他の制限:特になし
180:デフォルトの名無しさん
07/09/03 08:40:41
>>173
付帯条件がよくわからんのだけど、つまり円の右上だけ(or 左上だけ)で
他の点に近い円を描けってことでよいのかね?
181:デフォルトの名無しさん
07/09/03 08:43:42
>>178
#include <stdio.h>
int main() {
int i, j;
FILE *fp = fopen("prod99.txt", "w");
for (i = 1; i <= 9; ++i) {
for (j = 1; j <= 9; ++j) {
fprintf(fp, "%2d ", i*j);
}
fprintf(fp, "\n");
}
fclose(fp);
}
182:デフォルトの名無しさん
07/09/03 08:45:10
>>178
#include <stdio.h>
int main(void){
FILE *file;
if(({file=fopen("prod99.txt","r"))==NULL){
fputs("エディタを開いて、ファイル名 prod99.txt に以下を書き込んでください\n"
" 1 2 3 4 5 6 7 8 9\n"
" 1 1 2 3 4 5 6 7 8 9\n"
" 2 2 4 6 81012141618\n"
" 3 3 6 9121518212427\n"
" 4 4 812162024283236\n"
" 5 51015202530354045\n"
" 6 61218243036424854\n"
" 7 71421283542495663\n"
" 8 81624324048566472\n"
" 9 91827364554637281\n",stderr);
return 1;
}
fputs( " 1 2 3 4 5 6 7 8 9\n"
" 1 1 2 3 4 5 6 7 8 9\n"
" 2 2 4 6 81012141618\n"
" 3 3 6 9121518212427\n"
" 4 4 812162024283236\n"
" 5 51015202530354045\n"
" 6 61218243036424854\n"
" 7 71421283542495663\n"
" 8 81624324048566472\n"
" 9 91827364554637281\n",file);
fclose(file);
return 0;
}
183:182
07/09/03 09:01:27
if(({file=fopen("prod99.txt","r"))==NULL){
→
if(({file=fopen("prod99.txt","w"))==NULL){
184:デフォルトの名無しさん
07/09/03 09:11:13
{
185:デフォルトの名無しさん
07/09/03 12:02:13
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 逆ポーランド記法に変換してから計算する四則演算の電卓プログラムを作れ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語: c
[4] 期限: 2007年9月4日
よろしくおねがいします。
186: ◆kRtmRcQ9ak
07/09/03 12:41:26
[1] 授業単元: コンピュータプログラミング
[2] 問題文: 名前&身長&体重の入力&ファイルに記録&読み出し&BMI計算(BMI=体重kg/(身長m)^2)&身長順に並び替え
[3] 環境
[3.1] windows
[3.2] コンパイラ名とバージョン:C++Compiler5.5
[3.3] 言語: C
[4] 期限:2007 9/5まで
[5] その他の制限:無し。
よろしくお願いします。
187:デフォルトの名無しさん
07/09/03 13:35:05
>>185
エラーチェックはしていない
二桁以上の数が入力される場合にも対応していない
URLリンク(kansai2channeler.hp.infoseek.co.jp)
188:billy
07/09/03 14:58:50
構造体に入っている値を32個ずつ別のテキストファイルに出力したいのですが、どうしたらいいのですか?
189:デフォルトの名無しさん
07/09/03 16:00:11
>>188
スレ違い
190:デフォルトの名無しさん
07/09/03 16:19:38
〔1〕C言語
〔2〕問題(下記)
#include<stdio.h>
void main()
{
int ia;
printf("整数を入力してください:");
scanf("%d",&ia);
if(○○)
printf("偶数です");
else
printf(”奇数です”);
}
問
上記に示したのは、入力した整数が偶数か奇数かを判断するプログラムである。
if(○○)の○○を埋めよ。
〔3〕WinXP
9月4日〆
よろしくお願い致します。
191:デフォルトの名無しさん
07/09/03 16:23:52
>>190
(ia+191)%2
192:デフォルトの名無しさん
07/09/03 16:35:44
>>191
協力感謝です。
有難うございました!
193:デフォルトの名無しさん
07/09/03 17:47:42
[1] 授業単元:C言語
[2] 問題:引数として渡された2つの整数の小さい方の値を返す関数である。
〔 〕のを埋めて関数を完成させよ。
〔 〕imin(int ia,int ib)
{
if(ia<ib)
〔 〕
else
〔 〕
}
[3] 環境
[3.1] OS:WindowsXP
[3.3] 言語:C++
[4] 期限: 9月4日まで
[5] その他の制限: なし
葬式で1週間授業休んだらおいてかれた\(^o^)/
194:デフォルトの名無しさん
07/09/03 17:52:28
>>193
〔int〕imin(int ia,int ib)
{
if(ia<ib)
〔return ia;〕
else
〔return ib;〕
}
195:デフォルトの名無しさん
07/09/03 17:54:22
〔/* 〕imin(int ia,int ib)
{
if(ia<ib)
〔; 〕
else
〔*/int imin(int ia,int ib){return ia<ib?ia:ib;〕
}
196:デフォルトの名無しさん
07/09/03 17:55:12
>>193
馬鹿?これよんどけ。
URLリンク(www5c.biglobe.ne.jp)
URLリンク(www5c.biglobe.ne.jp)
URLリンク(www5c.biglobe.ne.jp)
int
return ia;
return ib;
197:デフォルトの名無しさん
07/09/03 17:55:22
>195の勝ち。
198:デフォルトの名無しさん
07/09/03 17:56:07
>>195
この発想はなかったわ
199:デフォルトの名無しさん
07/09/03 20:52:39
[1] 授業単元:パターン認識
[2] 問題:
問題の概要はURLリンク(www.uploda.org)にかきました。
問題は、入力データを正規分布のデータで評価し確率をもとめてほしいのです。
長くなりましたがお願いします。
計算がめんどうだったらlogで出してくれてもいいです。
[3] 環境
[3.1] OS:LINUX
[3.3] 言語:C
[4] 期限: いつでもいいです。
200:36
07/09/03 21:35:18
>>180
そうです,右上または左上となる円を描くイメージです.
もしお時間ありましたらよろしくお願いします.
201:デフォルトの名無しさん
07/09/03 21:49:05
>>199
「正規分布のデータで『評価』」ってなに?
アップローダにあるほうもグダグダかかれてて
結局問題でやるべきことがよくわからないんだが。
202:デフォルトの名無しさん
07/09/03 22:01:08
評価するっていうのは平均と分散からできる分布のグラフ
(横軸が数値で、縦軸が度数(ここでは確率))において
入力データと数値を見比べて一致したところの確率を出すことを評価するっていうんです。
1つのデータが9次元なんです。
9次元の入力データから9次元の平均をひいたものを2乗して
9次元の分散でわる。そうすると9個の値がでますからそれをたせばexpの中身になって
expの前にある変数とexpをかけると確率が出せるわけです。
それがfです。
すいませんfの式がここでかけなくて。
203:デフォルトの名無しさん
07/09/03 22:07:30
>>202
平均分散が与えられた多次元正規分布の式に、与えられた
20個のデータを突っ込んだときの値を出せと言っている?
『評価』は estimate じゃなくて evaluate だということ?
204:デフォルトの名無しさん
07/09/03 22:12:00
そうです。まさしくそうです
205:デフォルトの名無しさん
07/09/03 22:19:08
しかしこの正規分布で出した確率があまりに小さくなってあってるかどうかもわからないまま
他のアルゴリズムに用いないといけないから困る。
206:デフォルトの名無しさん
07/09/03 22:32:06
>>204
URLリンク(kansai2channeler.hp.infoseek.co.jp)
205 のいうとおり、値があまりに小さくなったがこれでいいのかね。
207:デフォルトの名無しさん
07/09/03 22:35:07
値いくらになりました?
logで表示してくれるとありがたいです。
検算させていただきます。
208:デフォルトの名無しさん
07/09/03 22:37:44
>>173
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ファイル point.dat に次のように記述し、実行ファイルを実行する
4
1.0 0.0
0.0 1.0
-0.5 0.0
0.0 -1.0
209:デフォルトの名無しさん
07/09/03 22:50:46
>>208
目的関数の性質が悪そうなんだけど、単純な降下法でうまくいくの?
210:208
07/09/04 07:23:05
>>209
多分うまくいかない
局所解にはまってしまうと思う
でも、数学はもう解けない頭になってしまった
(仕事ならやるけどね)
211:デフォルトの名無しさん
07/09/04 07:45:43
数式で表すと、適当な平行移動と反転をして
min. Σ| (x-x_i)^2 + (y-y_i)^2 - r^2 |
s.t. x ≧ 0, y ≧ 0, r ≧ 0
を解く、という問題に落ちるんだけど、この目的関数は
凸でないし、滑らかでもないので非常に面倒な問題になるはず。
ただ、関数が綺麗だから逐次二次緩和くらいで十分解けそう。
とても実装する気にはならないけど。
212:デフォルトの名無しさん
07/09/04 15:02:44
[1] 授業単元: ランダム関数
[2] 問題文(含コード&リンク): トランプをランダムで表示させる
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland
[3.3] 言語:C++
表示が○○(マーク)の○(数字)と表示させたいのです
213:デフォルトの名無しさん
07/09/04 15:58:55
>>212
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
enum {MK_HEART, MK_DIAMOND, MK_CLOVER, MK_SPADE};
int mark, num;
srand(time(NULL));
mark = rand() % 4;
num = rand() % 13 + 1;
switch(mark)
{
case MK_HEART:printf("ハート");break;
case MK_DIAMOND:printf("ダイヤ");break;
case MK_CLOVER:printf("クローバー");break;
case MK_SPADE:printf("スペード");break;
}
if(1 < num && num < 11) printf("%d", num);
else
{
switch(num)
{
case 11:putchar('J');break;
case 12:putchar('Q');break;
case 13:putchar('K');break;
case 1:putchar('A');break;
}
}
return 0;
}
214:デフォルトの名無しさん
07/09/04 21:20:09
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
以前提出した物:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows/Linux
[3.2] コンパイラ名とバージョン: MicrosoftFramework/gcc
[3.3] 言語: C
[4] 期限:なるべく早く
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
以前もこのスレで質問し、教えていただいたものを用いて形にし、
提出はしたのですが結果がおかしく再提出を求められました
フィボナッチ数(fib)の値がおかしいのですが、
提出した物の最後の print(b3); printf("\n");を直前のfor文の中に入れて確認したところ、
8+13の結果(fib(8))が21でなく121になってしまっているため以降の全ての値がおかしくなっているようです。
おそらくpaddがおかしいのだと思うのですが、いろいろ変えてみても上手くいきません
おかしい箇所の指摘や改善方法のご教授をお願いします
215:デフォルトの名無しさん
07/09/04 21:25:30
MMXでも使ってんのかと思った
216:デフォルトの名無しさん
07/09/04 21:26:26
[1] 授業単元:C言語
[2] 問題文:文字列を入力し、その文字列を縦に並べて表示するプログラムの作成。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月5日 21時
[5] その他の制限: ないです。
よろしくお願いします。
217:デフォルトの名無しさん
07/09/04 21:29:45
>>216
#include <stdio.h>
int main(void)
{
char buf[512], *p = buf;
scanf("%s", buf);
while(*p)
{
printf("%c\n", *p);
p++;
}
return 0;
}
218:デフォルトの名無しさん
07/09/04 21:37:52
>>216
2バイト文字対応は不要?
219:デフォルトの名無しさん
07/09/04 21:50:15
海栗に書き換えればいいだけ
220:214
07/09/04 22:13:01
自己解決しました。
スレ汚しすみませんでした。
221:デフォルトの名無しさん
07/09/04 23:04:34
授業単元:C
問題文(含コード&リンク):
テーマ:文字配列の操作
1問目:キーボードより表示開始文字と表示終了文字を入力開始~終了までの文字を表示しなさい
char moji[]="ABCDEF~XYZ"; /*大文字26文字*/
実行画面
moji:ABCDEF~XYZ
開始位置==>B
終了位置==>F
表示:BCDEF
moji:ABCDEF~XYZ
開始位置==>D
終了位置==>D
表示:D
moji:ABCDEF~XYZ
開始位置==>E
終了位置==>B
表示:EF~XYZAB
環境:
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
222:デフォルトの名無しさん
07/09/04 23:06:43
授業単元:C
問題文(含コード&リンク):
テーマ:文字配列の操作
問題2:文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換え
なさい
実行画面
文字列(m1)入力==>ABCDEFAABCDABC
削除文字==>A
置換文字==>*
結果文字列(m1):*BCDEF**BCD*BC
環境:
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
223:デフォルトの名無しさん
07/09/04 23:20:30
>>211
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; /*大文字26文字*/
char start, end, *p;
printf("moji:%s\n", moji);
printf("開始位置==>");
scanf("%c", &start);
fflush(stdin);
printf("終了位置==>");
scanf("%c", &end);
fflush(stdin);
if(!isalpha((int)start) || !isalpha(end)) return 1;
start = (char)toupper(start);
end = (char)toupper(end);
p = moji + start - 'A';
for(;;)
{
putchar(*p);
if(*p == end) break;
if(*(++p) == '\0') p = moji;
}
return 0;
}
224:デフォルトの名無しさん
07/09/04 23:24:39
>>222
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char m1[512];
char del, rplc, *p = m1;
printf("文字列(m1)入力==>");
scanf("%s", m1);
fflush(stdin);
printf("削除文字==>");
scanf("%c", &del);
fflush(stdin);
printf("置換文字==>");
scanf("%c", &rplc);
fflush(stdin);
for(; *p; p++)
{
if(*p == del)
{
*p = rplc;
}
}
printf("結果文字列(m1):%s", m1);
return 0;
}
225:デフォルトの名無しさん
07/09/05 00:32:04
[1] 授業単元:C言語
[2] 問題文: 文字(char型)を引数として受け取り、その文字が英小文字ならば大文字に、英大文字なら小文字に変換して返す関数toulを作り、
mainから呼び出して動作を確認するプログラムの作成する。ただし、引数はスペース、英字、数字のみとし、スペースや字数はそのまま変更しない。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月6日 22時
[5] その他の制限: なし
226:デフォルトの名無しさん
07/09/05 00:46:54
>>225
mainは省略
動作確認も省略
char toul(char buf){
int dif='A'-'a';
if(buf >= 'a' && buf <='z'){
return char + dif;
}else if(buf >= 'A' && buf <='Z'){
return char - dif;
}
227:デフォルトの名無しさん
07/09/05 00:50:15
>>225
#include <stdio.h>
#include <ctype.h>
char toul(char ch)
{
if(isupper(ch))
return tolower(ch);
else if(islower(ch))
return toupper(ch);
else
return ch;
}
int main(void)
{
printf("'%c' → '%c'\n", 'a', toul('a'));
printf("'%c' → '%c'\n", 'B', toul('B'));
printf("'%c' → '%c'\n", ' ', toul(' '));
printf("'%c' → '%c'\n", '2', toul('2'));
return 0;
}