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;
}